feat: bridge Codex dynamic tools through ACP#301
Conversation
|
Cross-repo host half is now available as draft iOfficeAI/AionCore#619. Immutable AionCore contribution head: The host dispatcher preserves conversation, WebSocket connection, registration generation, thread, turn, call, namespace, and tool identity; ambiguous ownership stays fail-closed after disconnect until explicit re-registration. Disconnect cleanup cancels pending calls. AionCore verification passed API types 2/2, registry 5/5, realtime 81/81, WebSocket E2E 21/21, AI-agent 617/617, affected strict clippy, workspace build, workspace cargo test, and repository-native Both PRs remain draft pending downstream Shell registration and a live round-trip against exact contribution refs. |
Summary
codex/dynamic_toolsregistry in ACPsession/new._metathread/start.dynamicToolsfield without regenerating the full experimental schemaitem/tool/callrequests through the typed ACP extension_codex/dynamic_tool_callMessageConnection, route by explicit session/thread ownership, and revoke all claimants on terminalthread/closedFailure semantics
Malformed registration metadata fails with ACP
invalid_paramsbeforethread/start. Unknown or duplicate owners, stale turns, closed sessions, disposed clients, missing dispatchers, and dispatcher failures return typedsuccess: false. Ordinary thread notifications remain unique-owner only. Terminalthread/closedclears every claimant, so disposing one ambiguous claimant cannot resurrect a closed route.Validation
Validated on
24589322f1f6a2e7a9fba6ebb42067e47e4dfffd:npm test: 312 passed, 28 skippednpm run typechecknpm run buildgit diff --check HEAD^ HEADCross-repo evidence
e1e022c9e327870bebefa26e417dc5f482349e10103b078af91454e9938f417fda0fde5ad52554b7This PR is ready for upstream review. The fork branch remains a contribution head only. Product completion still requires both upstream canonical mains to merge and the Shell to consume released canonical refs; no product dependency points at the fork.