# Public in-process runtime.
# Decision: first public runtime is in-memory by default so embedders can run
# harnesses in-process without the durable engine or control-plane services.

[package]
name = "everruns-runtime"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
homepage.workspace = true
repository.workspace = true
documentation = "https://docs.rs/everruns-runtime"
description = "In-process Rust runtime for building local agentic systems — coding agents, personal agents, and more — by embedding Everruns agent harnesses"
readme = "README.md"
keywords = ["agent", "agentic", "coding-agent", "llm", "ai"]
categories = ["development-tools", "asynchronous"]

[features]
default = []
# Enable local-process (stdio) MCP servers. Off by default so the hosted
# server/worker (which depend on this crate transitively) never compile stdio
# in — see specs/runtime-mcp.md (D2). Embedders like the coding CLI opt in.
mcp-stdio = ["everruns-mcp/stdio"]
# Compile the experimental sandboxed Lua execution engine (mlua) into core so
# the `lua` / `lua_code_mode` capabilities actually run scripts. Off by default
# so the standard runtime build pulls in no interpreter. Enables the
# `lua_code_mode_agent` example and the `lua_code_mode_test` integration test.
lua = ["everruns-core/lua"]

[dependencies]
async-trait.workspace = true
chrono.workspace = true
futures.workspace = true
ignore.workspace = true
serde.workspace = true
serde_json.workspace = true
sha2.workspace = true
tokio = { workspace = true, features = ["fs", "rt", "sync"] }
tracing.workspace = true
uuid.workspace = true

everruns-core.workspace = true
everruns-mcp.workspace = true

[dev-dependencies]
tempfile.workspace = true
tokio = { workspace = true, features = ["full", "test-util"] }
async-trait.workspace = true
# Dev-only: powers the `openai_runtime` example. Carries a version (via the
# workspace dep) so `cargo publish` keeps it resolvable; it is not a published
# runtime dependency, so embedders pull in only the provider crates they use.
everruns-openai = { workspace = true }
