Repository navigation
Add embed module for Tauri hosts, release 1.2.0 - #13
Conversation
ed-acp-tauri now carries the app-neutral half of embedding the agent in a Tauri app. The SplitFire-only pieces it leaves out move here, behind a new off-by-default `embed` feature so the plain library and the binary don't pull in reqwest: - embed::fetch_key, the SplitFire /agent/key call, with SIGN_IN_REQUIRED and UNAVAILABLE - embed::splitfire_mcp, the SplitFire API's MCP server for a session - embed::trim, which drops run_command and swaps the stems paragraph on platforms that can't start processes These came from the splitfire_agent_host crate in the splitfire monorepo, which this retires. The module has no tauri dependency; the app identifier comes in as a &str. The NO_STEMS_START/NO_STEMS_END markers trim keys off now live in prompt.rs, which writes the paragraph, so the two can't drift. Bump ed-acp, ed-mcp, ed-acp-tui and ed-acp-testkit to 1.3.0 (the SplitFire profile builds unchanged against it), and the crate plus registry agent.json to 1.2.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
This change introduces the embed module (behind the new embed feature) for Tauri hosts, providing SplitFire-specific embedding glue: fetch_key (fetches the Onde key from SplitFire's API), splitfire_mcp (builds the SplitFire MCP server), and trim (removes run_command and swaps the stems paragraph for platforms like iOS). The module is dependency-light and does not require tauri, taking the app identifier as a &str. The stems paragraph markers are now constants in prompt.rs, ensuring prompt and replacement can't drift. The SDK dependencies are bumped to 1.3.0, and the crate version and registry entry are set to 1.2.0. Tests cover all new logic, including HTTP status mapping and prompt marker integrity. No unresolved earlier findings remain; all changes are additive and backward compatible for embedding apps.
Automated review by siGit Code Review · commit 77691fa · see the review dashboard
ed-acp-tauri1.3.0 now carries the app-neutral half of embedding the agent in a Tauri app: the in-process ACP client, sessions, permissions and the key store. The SplitFire-only pieces it deliberately leaves out move into this crate, behind a new off-by-defaultembedfeature so the plain library and thesplitfire-agentbinary don't pull inreqwest.splitfire_agent::embed:fetch_key(url, access_token, app_identifier)asks the SplitFire API for the signed-in user's Onde key, rejecting withSIGN_IN_REQUIREDorUNAVAILABLE.splitfire_mcp(url, access_token, app_identifier)builds the SplitFire API's MCP server for a session (nothing without a token).trimdropsrun_commandand swaps the stems paragraph on platforms that can't start processes (iOS).All three came from the
splitfire_agent_hostcrate in thesplitfiremonorepo, which this change retires. The module has notauridependency: anything that took anAppHandlenow takes the app identifier as a&str. TheNO_STEMS_START/NO_STEMS_ENDmarkerstrim::replace_no_stemskeys off now live inprompt.rs, which writes the paragraph, so the prompt and the replacement can't drift.The ed SDKs (
ed-acp,ed-mcp,ed-acp-tui,ed-acp-testkit) go to 1.3.0. The move from 1.2.2 is additive for aProfile, soSplitFirebuilds unchanged. The crate version andregistry/agent.jsongo to 1.2.0.Tests cover
fetch_key's status mapping (200/401/403/503) against a local stub andsplitfire_mcp(no token, headers present), plus a check that the prompt's "no stems" paragraph still sits between the two markers.Checks
cargo fmt -- --checkcargo clippy --locked --all-targets -- -D warnings(plus--all-featuresand--no-default-features --features embed)cargo test --all-featurescargo check --no-default-features(the embeddable library alone)Publishing 1.2.0 to crates.io follows once this merges; the three apps in
splitfiredepend on it.