[package]
name = "grain-script-boa"
version = "0.0.1-beta3"
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords = ["agent", "ai", "scripting", "javascript", "boa"]
categories = ["development-tools"]
readme = "../docs/README.md"
description = "Boa-based JavaScript scripting layer for grain-agent. Loads user `.js` files from disk, runs them in an isolated boa_engine::Context owned by a dedicated worker thread, and exposes registered tools to the agent through the `grain_ai_agent_headless::Extension` trait."

[dependencies]
async-trait = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["sync", "macros", "rt"] }
tokio-util = { workspace = true }
boa_engine = { workspace = true }
grain-agent-core = { workspace = true }
# Deliberately NOT depending on `grain-ai-agent-headless` — this crate
# sits one layer lower so headless can opt into it without creating
# a workspace cycle. Tools are surfaced as `Vec<Arc<dyn AgentTool>>`
# directly; callers wrap them in their own `Extension` impl if they
# want the registry pattern.

[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
tempfile = "3"
