Deploy web Studio / deploy (push) Successful in 3m3s
✦ 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
48 lines
1.2 KiB
TOML
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"
|