Repository navigation
Promote development to main (1.3.2) - #40
Conversation
Co-Authored-By: OndeCode v1.0.1-acp <noreply@ondeinference.com>
MCP servers can ask the end user for structured input mid-call via `elicitation/create`, but ed-mcp's client handler declared no `elicitation` capability and `rmcp` declined every server-initiated request, so embedders (e.g. sigit forwarding to its ACP editor) had no seam to receive one. Add an `Elicitation` trait as that seam. `ToolsetConfig::with_elicitation` installs a handler shared by every server in the session; when set, ed-mcp advertises the `elicitation` capability and forwards each `elicitation/create` to the handler, mapping its answer to the MCP accept/decline/cancel semantics. With no handler, requests are declined (the spec's safe default) and the capability is not advertised, so conforming servers won't ask. Plumbed through `Connection::connect_with` (the existing `connect` is now a no-hook shim) and `SharedServer`, so built-in and client-supplied servers share one hook. The elicitation request/result/action types are re-exported so embedders need not depend on rmcp directly. Tests: the in-process HTTP server gains a `collect_feedback` tool that elicits; new tests prove the request reaches the hook (with the asking server's name) and the Accept+content flows back, and that it's declined when no hook is set. Closes #33. Co-Authored-By: SplitFire v1.1.1-acp <noreply@splitfire.ai>
Profile::auth lets a product bring its own sign-in. With a provider, initialize advertises its method whatever the client's terminal capability, the turn loop builds its client from the provider's stored session instead of the environment, and authenticate and logout delegate to it. authenticate already ran in a spawned task, so a provider can wait on a URL elicitation answer. Without a provider nothing changes. ed-acp-tauri is the generic host that splitfire_agent_host was: it serves a Profile in-process over Channel::duplex and talks to it as an ACP client. Roots come from the host per session instead of a fixed scratch directory, fs reads and writes are checked against the roots of the session that asked, and the client advertises elicitation.url and opens the page in the system browser. It adds set_config_option, authenticate and logout, and open_session returns the config options. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Co-Authored-By: siGit Code v1.6.7 <noreply@sigit.si>
Covers the Cancel action path in the elicitation hook, asserting the result text is "cancelled" and the hook is invoked once. Co-Authored-By: siGit Code v1.6.6-acp <noreply@sigit.si>
feat(ed-mcp): forward server elicitation/create to a client hook
Previously logout() cleared the models cache and llm config before checking the result of auth.logout(); a failed logout left the agent in an inconsistent state. Move the resets inside the Ok(()) arm so state is only cleared when logout actually succeeds. Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
Add an auth seam to ed-acp and the ed-acp-tauri host crate
Minor: ed-acp gains Profile::auth() (default impl, so existing profiles keep compiling) and the AuthProvider/AuthCtx types behind it, and ed-mcp gains the Elicitation trait, ToolsetConfig::with_elicitation, and ToolsetConfig::elicitation. ed-acp-tauri is a new crate and gets its first publish. This closes the gap that broke `cargo publish -p ed-acp-tauri`: the 1.2.2 already on crates.io predates Profile::auth(), so ed-acp-tauri's ed-acp = "1.2.2" dependency resolved against a registry copy without it during publish verification. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Release 1.3.0
tvOS has no exec, so rmcp's transport-child-process feature pulls in nix, which does not compile there. Move that feature into a cfg(not(target_os = "tvos")) dependency and gate the stdio transport arm the same way. On tvOS a stdio MCP server now fails with a plain message instead of the crate refusing to build. cargo +nightly rustc -Z build-std -p ed-mcp --target aarch64-apple-tvos now compiles; the HTTP transport and the rest of the workspace are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: siGit Code v1.6.9 <noreply@sigit.si>
Address siGit Code Review feedback on PR #37: callers building an MCP client on tvOS see Transport::Stdio as a regular variant and only learn that the OS forbids child processes when the runtime errors out. Surface that in the rustdoc so the limitation is discoverable before shipping. - Transport::Stdio: note that tvOS cannot spawn child processes and point at Transport::Http as the supported alternative. - Connection::connect / connect_with: add # Errors sections calling out the tvOS-specific failure and the per-stage timeout for spawn, handshake and tools/list on every platform. Co-Authored-By: siGit Code v1.6.8-acp <noreply@sigit.si>
…d-process ed-mcp: skip the child-process transport on tvOS
watchOS hides execv the same way tvOS does, so nix under process-wrap doesn't compile there. Gate the rmcp child-process feature, the TokioChildProcess import and the Transport::Stdio arm on any(tvos, watchos). Http stays available on both. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…-process Skip the stdio child-process transport on watchOS
Co-Authored-By: siGit Code v1.7.0-acp <noreply@sigit.si>
Release 1.3.2
There was a problem hiding this comment.
This change promotes the development branch to main for the 1.3.2 patch release. It introduces the new ed-acp-tauri crate, which hosts an ed-acp agent inside a Tauri app, and updates the workspace and internal dependency versions to 1.3.2. The .agents/AGENTS.md and a new release skill documentation are updated to reflect the new crate and release process. In ed-acp, a new auth seam is added for products with their own sign-in, and the agent/server logic is updated to support an AuthProvider for authentication flows beyond terminal setup. The MCP client in ed-mcp now supports server-initiated elicitation (form input) via a pluggable Elicitation trait, with platform-specific handling for process spawning. Tests are added and updated to cover the new authentication and elicitation flows, including edge cases for platforms that cannot spawn processes. The changes are cohesive and well-documented, with new features gated and backward compatibility maintained for existing flows.
Automated review by siGit Code Review · commit 598aa2b · see the review dashboard
Reconcile main and development after 1.3.1 was cut directly on main. Keep development's 1.3.2 workspace version and the tvOS+watchOS ed-mcp stdio guard, which supersede main's 1.3.1 and tvOS-only changes. Co-Authored-By: siGit Code v1.7.0-acp <noreply@sigit.si>
There was a problem hiding this comment.
Promotes the workspace version from 1.3.1 to 1.3.2 and updates all internal crate versions accordingly. Adjusts the ed-mcp crate to exclude both tvOS and watchOS from supporting the Stdio transport variant, reflecting platform restrictions on spawning child processes. Adds clarifying comments about watchOS alongside tvOS in the transport enum and connection code.
Automated review by siGit Code Review · commit e076494 · see the review dashboard
Promotes
developmenttomainfor the 1.3.2 patch release.v1.3.2tagged on598aa2b