You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(runner): client tools on Claude in remote sandboxes
Advertise browser-fulfilled client tools to the in-sandbox stdio MCP shim and add a
paused relay answer so a parked client tool ends the shim's tools/call cleanly while
the runner ends the turn. The browser result returns on the cold-replay resume. Deletes
the interim #5366 client-only Daytona refusal. Closes#5256; closes the residual mixed-set
drop of #4984.
The client-tool pause disposition is a closed set (pi-native / cold-acknowledge, with
warm-hold reserved) at the client-tool boundary; the relay consumes the derived
writePausedAnswer switch.
Claude-Session: https://claude.ai/code/session_01DnWRxU3dCJ11hgDidm26vW
|[`/run`](cross-service/service-to-agent-runner.md)| cross-service (the spine) |`protocol.ts`, `utils/wire.py`, `utils/ts_runner.py`, `server.ts`/`cli.ts`| stable (pinned by golden) |`unit/agents/test_wire_contract.py` + `golden/`, `services/agent/tests/unit/wire-contract.test.ts`|
49
49
|[Runner to harness](cross-service/runner-to-harness.md)| cross-service (ACP) |`engines/sandbox_agent.ts` + `sandbox_agent/{run-plan,capabilities,permissions}.ts`| evolving |`services/agent/tests/unit/sandbox-agent-*.test.ts`|
50
-
|[Runner to MCP server](cross-service/runner-to-mcp-server.md)| cross-service |`agents/mcp/`, `engines/sandbox_agent/{mcp,tool-mcp-assets,relay-guard}.ts`, `tools/{mcp-bridge,tool-mcp-http,tool-mcp-stdio,tool-mcp-env,relay,relay-client,relay-protocol,relay-watch}.ts`| evolving (internal channel delivered locally over loopback HTTP and on Daytona via the in-sandbox stdio shim; user stdio disabled; remote client tools deferred) |`services/runner/tests/unit/{mcp-servers,session-mcp-layering,tool-mcp-assets,tool-mcp-stdio,tool-relay-guard}.test.ts`|
50
+
|[Runner to MCP server](cross-service/runner-to-mcp-server.md)| cross-service |`agents/mcp/`, `engines/sandbox_agent/{mcp,tool-mcp-assets,relay-guard}.ts`, `tools/{mcp-bridge,tool-mcp-http,tool-mcp-stdio,tool-mcp-env,relay,relay-client,relay-protocol,relay-watch}.ts`| evolving (internal channel delivered locally over loopback HTTP and on Daytona via the in-sandbox stdio shim, `client` tools included — a client call parks via a paused relay answer; user stdio disabled) |`services/runner/tests/unit/{mcp-servers,session-mcp-layering,tool-mcp-assets,tool-mcp-stdio,tool-relay-guard}.test.ts`|
51
51
|[Runner to tool callback](cross-service/runner-to-tool-callback.md)| cross-service |`tools/{callback,dispatch,direct}.ts`, `apis/fastapi/tools/router.py` (`/tools/call`, `/tools/discover`, `_call_reserved_agenta_tool`), `core/tools/{discovery,service,platform_handlers}.py`, `agent/tools/resolver.py`| evolving (the `call` descriptor is wired and platform ops emit it; the legacy `tools.agenta.find_capabilities` route is deleted; reserved refs now dispatch server handlers, resolution flag-gated off until the runner half lands) |`services/agent/tests/unit/{code-tool,extension-tools}.test.ts`, `api unit/tools/{test_workflow_tool_call,test_discovery,test_platform_handlers}.py`, `unit/agents/platform/test_op_catalog.py`|
0 commit comments