Skip to content

Promote development to main (1.3.2) - #40

Merged
setoelkahfi merged 17 commits into
mainfrom
development
Oct 16, 2026
Merged

setoelkahfi merged 17 commits into
mainfrom
development

Conversation

@setoelkahfi

Copy link
Copy Markdown
Collaborator

Promotes development to main for the 1.3.2 patch release.

  • v1.3.2 tagged on 598aa2b
  • Release PR: Release 1.3.2 #39
  • Tag-triggered workflows (crates.io publish + Swift XCFramework) are running.

setoelkahfi and others added 16 commits October 10, 2026 15:01
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>
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>

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread crates/ed-acp-tauri/src/lib.rs
Comment thread crates/ed-acp-tauri/src/lib.rs
Comment thread crates/ed-acp/src/agent.rs
Comment thread crates/ed-mcp/src/lib.rs
Comment thread crates/ed-mcp/src/lib.rs
@keypair34 keypair34 self-assigned this Oct 16, 2026
@keypair34
keypair34 requested review from keypair34 and paydii October 16, 2026 11:13
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>

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread crates/ed-mcp/src/lib.rs

@keypair34 keypair34 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, looks good.

@setoelkahfi
setoelkahfi merged commit c2b2985 into main Oct 16, 2026
2 checks passed
@setoelkahfi
setoelkahfi deleted the development branch October 16, 2026 12:43
@setoelkahfi
setoelkahfi restored the development branch October 16, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants