Files
isokit/Cargo.toml
grabowski 1a1b62d475
Deploy web Studio / deploy (push) Successful in 3m3s
studio: agent window, a chat with a model that edits the scene
✦ Agent in the Studio's top bar opens a floating chat window. The model
(any OpenAI-compatible endpoint with tool calling; default B4L's inference
server, https://inference.p0.contact/v1) gets the 15 MCP tools plus two page
tools (select_object, set_view) and the Studio's state (selection, level,
rotation) in its system prompt. Answers and reasoning stream in; tool calls
show as rows with arguments and results; object ids link to the object;
Stop ends a turn; Undo takes the agent's edits back. The window moves by
its title bar and resizes at its top-left corner.

- studio/agent.js: shared by both front ends (waits for studio.js's
  isokit:studio event); MCP over /mcp or isokit.mcp in the web Studio
- isokit studio: /api/agent/{config,models,chat} relay the calls on their
  own threads (ureq, chunked and flushed per read), so the key stays on the
  machine and the endpoint needs no CORS; settings from ISOKIT_LLM_URL /
  _KEY / _MODEL or agent.json in the user's config folder
- web Studio: calls the endpoint from the page with a key kept in the
  browser; build_web.py --agent-url names a same-site relay as default; the
  deploy builds with /llm/v1, which deploy/Caddyfile forwards to the
  inference server (its nginx refuses the CORS preflight)
- tools/mock_llm.py + tools/agent_checks.py: the agent window checks in both
  check_studio.py and check_web.py
2026-10-23 19:35:53 +07:00

48 lines
1.2 KiB
TOML

[workspace]
resolver = "2"
members = [
"crates/isokit-core",
"crates/isokit-script",
"crates/isokit-theme",
"crates/isokit-project",
"crates/isokit-cli",
"crates/isokit-wasm",
]
[workspace.package]
version = "0.1.0"
edition = "2021"
license = "MIT"
authors = ["buildfor.life"]
repository = "https://git.b4l.co.th/B4L/isokit"
[workspace.dependencies]
isokit-core = { path = "crates/isokit-core" }
isokit-script = { path = "crates/isokit-script" }
isokit-theme = { path = "crates/isokit-theme" }
isokit-project = { path = "crates/isokit-project" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = { version = "1", features = ["preserve_order"] }
rhai = { version = "1.27", default-features = true }
tiny_http = "0.12"
# the Studio's agent window reaches the language model through `isokit studio`
ureq = "3"
clap = { version = "4", features = ["derive"] }
anyhow = "1"
web-time = "1"
# keep in step with the wasm-bindgen CLI (tools/build_web.py checks)
wasm-bindgen = "=0.2.129"
[profile.release]
lto = "thin"
codegen-units = 4
# the web Studio's engine (tools/build_web.py): small over fast
[profile.web]
inherits = "release"
opt-level = "s"
lto = true
codegen-units = 1
panic = "abort"