Conversation
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR introduces a substantial production capability that installs and runs third-party ACP agents, adds authentication and permission flows, changes product defaults, and spans server, client, and public contract layers. An unresolved high-severity session-lifecycle finding further warrants human review before merge. Not approved because:
No code changes detected at Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
7eb2cc3 to
d09d259
Compare
d09d259 to
57614a5
Compare
|
Correction to my Effect Service Conventions review comment on Posted via Macroscope — Effect Service Conventions |
e99a569 to
6d1ffd1
Compare
Users can search the official ACP Registry, add an agent (Devin, Kimi CLI, Gemini CLI, and others), sign in, run it on the V1 orchestrator with T3 MCP, and remove it again. - Port V2's registry infra: contracts, catalog (search, prepare, inspect, resolve, managed-binary uninstall), probe, runtime coordinator, sign-in flow, sign-in state, and the driver. - Add a generic V1 ACP adapter for registry agents. It answers permission requests by the thread's runtime mode, maps form elicitations to questions and URL elicitations to the coordinator, applies stored model, option, mode, and plan picks, and gives the agent T3 MCP through AcpT3Mcp. Devin keeps V2's client terminals. - Web: registry search and prepare in the add-provider dialog, a sign-in step, the shared sign-in section for registry instances, managed-file cleanup on remove, and registry agent icons. - Mobile: registry agent icons in the model pickers and settings. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Supervised mode now shows MCP tool-call approvals as approvals. Before, an elicitation with no form fields was declined without asking, and one with fields became a question whose "false" answer still accepted. - A cancelled question emits user-input.resolved, so it leaves the thread. - Stale approval and question answers now report "Unknown pending ... request", which the reactor needs to close them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The reference check compared the raw stored agent id, but the form stores untrimmed input and the driver trims it. Removing one instance could then delete binaries that a second instance of the same agent still runs. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Stop answered pending approvals and questions but left a URL sign-in open. The agent kept waiting on it for up to 10 minutes after the turn ended, and the provider card kept offering "Continue authentication". Cancelling a turn now answers the sign-in with cancel, as ACP expects. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Auto and Full access picked the agent's allow_always option first. An agent that remembers that grant would not ask again after the thread switched to Supervised. Policy approvals now pick allow_once first. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Every search, including each debounced keystroke, fetched the full registry index again. The catalog now serves all callers from the last network fetch for five minutes. A disk fallback does not count as fresh, so a failed fetch still retries on the next search. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Plan showed for every registry agent. For agents without a plan or architect mode it did nothing, so the agent ran normally while the user thought it was planning. The probe and live session now report whether the agent has a plan mode, using the same rule the adapter uses to switch, and the snapshot hides Plan until one of them says so. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Use acpAutoApprovalOptionId from AcpClientPolicy instead of a local option list, and cover Auto-accept edits asking before MCP tool calls. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Resolve an archive command inside its staging directory before chmod, so a link in the archive cannot change the mode of an outside file. - Look up an installed npm or uv command only in the managed bin directory, not in a same-named command elsewhere on PATH. - Refresh the install lock every minute, so another process cannot take a live lock as stale during a long download. - Keep only the last 4,000 characters of installer stderr in errors. - Auto distribution prefers a package runner the environment has, so an agent with npx and uvx recipes works on a host with only uv. - A cached index that stands in for a failed fetch counts as fresh, so offline searches do not wait on the network each time. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Fixed choices no longer take typed answers, array fields with item choices become multi-select questions and send string arrays, and a fraction for an integer field is left out instead of sent. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…n-in Live configuration from an earlier session marked every later snapshot ready and dropped its message, even when a new probe reported failed sign-in or local inspection failed. It now promotes the status only for an enabled, installed agent that is not unauthenticated. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nt icon Thread rows drew the generic ACP glyph because the row's provider instance had no icon URL, and a selected model outside the provider's list lost the icon too. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…..tools The containment check rejected any relative path starting with "..", so a command inside a directory such as ..tools was refused. Only a ".." segment leaves the install root. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…mpt lock A turn queued behind a model change read the session model before the lock, then wrote that stale model back to the session and its turn metadata. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
6d1ffd1 to
c36ec3c
Compare
Users can't add agents from the ACP Registry on main. That flow only exists on the Orchestrator V2 branch (#2829), which will not land soon.
This ports the registry to main and runs registry agents on the current V1 orchestrator. You can search the registry's ~40 agents (Devin, Kimi CLI, Gemini CLI, Goose, and others), add one, sign in, chat with T3 MCP tools, and remove it.
Stacked on #13784.
What changed
builtInDrivers.ts; the hydration andserver.tsshare one catalog.provider/Layers/AcpRegistryAdapter.ts), based on the V1 Antigravity adapter with behavior ported from V2'sAcpAdapterV2,AcpRegistryAdapterV2, andDevinAcp:AcpClientPolicy(Supervised asks, Auto-accept edits asks for non-edits, Auto and Full access approve).AcpT3Mcp(stdio bridge and MCP-over-ACP).docs/user/providers-acp.md, linked from the index, install, and permission modes pages.Coverage of open single-provider PRs
devinregistry entry.kimientry for chat. That PR's text generation and swarm tool rows are not.V2 compatibility
contracts/acpRegistry.ts(+test),AcpRegistryAuth,AcpRegistryAuthenticationState,AcpRegistryCataloglayer, webAcpRegistryIcon,AcpRegistrySearchStep,ProviderAuthenticationSection,ProviderAuthTerminal,AddProviderInstanceWizardSteps(all with tests),providerInstanceDisplay, and the registry model-retention rule inProviderRegistry.AcpRegistrySupport.ts(+test):isAcpRegistryErroris private (knip). A fetched registry index now serves search and prepare for 5 minutes instead of a refetch on every search, and a cached index that replaces a failed fetch counts as fresh too. Review fixes: an archive command resolves inside its staging directory beforechmod; installed npm and uv commands resolve only in the managed bin directory; the install lock is refreshed every minute; install errors keep only the last 4,000 characters of stderr; and auto distribution prefers a package runner the environment has. V2 should take these changes.AcpRegistryProbe.tsandAcpRegistryRuntimeCoordinator.ts: session management (list, delete, providers, logout RPC) andwithSessionMutationremoved. The probe and live configuration also reportsupportsPlanMode, which the driver uses to show Plan only for agents with a plan mode.AcpRegistryDriver.ts: builds the V1 adapter, dropsacpSessionManagementand thenativeSessions/configurableProviderssnapshot fields, setssupportsConversationRollback: false, and hides Plan until the agent reports a plan mode. Live configuration from a past session no longer marks an unauthenticated or uninstalled agent ready (V2 should take this).ServerProvidergains onlyiconUrl,setup.documentationUrl,auth.action,auth.canLogout.rpc.tsgains only the 4 RPCs above.ProviderWizardAuthenticationStep.tsx: waits for the new instance's snapshot before it subscribes to sign-in state.AddProviderInstanceDialog.logic.tskeeps main's step labels.AddProviderInstanceDialog.tsx,ProviderSettingsPanel.tsx,ProviderInstanceCard.tsx: registry parts added to main's versions, not V2's rewrites.AcpRegistryAdapter.ts(Services and Layers) along with the V1 adapters.acpRegistry.tsand the registry settings schema are identical, so persisted instances carry over.Gaps
acp-mcp-callterminal fallback is not wired (main's agent instructions do not mention it yet).Testing
vp test runon the ported registry tests (support, probe, coordinator, auth, auth state, driver), the new adapter test,ProviderRegistry,ProviderInstanceRegistryLive,providerCompatibility,RpcAuthorization, andserver.test: 12 files, 362 passed. The adapter test runs a real ACP mock agent over both the v1 and v2 wires: a turn with stored model and mode picks, a Supervised approval, auto-approval in Full access, a form elicitation, and T3 MCP plus Devin's client terminals.tsc --noEmitfor contracts, client-runtime, server, web, and mobile.vp lintandvp fmton changed files (no new warnings).knipexports for server, web, client-runtime, and contracts, plus files and dependencies.Made by Claude Opus 5.5 (1M context) in Claude Code, orchestrated from T3 Code.
🤖 Generated with Claude Code
Closes discussions