Repository navigation
Restore Kilo Code native session list and import - #296
Conversation
Carry upstream's ACP native session list and import (AcpSessionManagementSection's "Native sessions" row, server.listAcpRegistrySessions and server.importAcpRegistrySession, the driver's acpSessionManagement.listSessions, the probe's session manager, and the coordinator's session mutation permit) for the Kilo Code instance. Kilo Code advertises session/list, session/load, and resume but no session/delete, so deletion stays cut with logout and agent provider configuration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # apps/server/src/coderServer.ts
|
Merged coder-only (#295) into this branch; the only conflict was coderServer.ts, where both the port scanner layer and the ACP runtime coordinator are now provided. Live check on the local Coder harness with a fake |
Restores the Native sessions part of upstream's
AcpSessionManagementSectionfor the Kilo Code instance: list Kilo Code's saved sessions for a project and import one as a T3 thread. Upstream base 80a2351.Feasibility:
kilo acpsession supportSource: Kilo Code
Kilo-Org/kilocodemain(latest release v7.8.18, 2026-10-26),packages/opencode/src/acp/service.ts(last changed in 3a10be340d). Itsinitializeresponse advertises:The same file implements
listSessions(session/list, filtered bycwd, cursor-paged at 100),loadSession(session/load, which replays history) andresumeSession. It has nosession/deleteand advertises nosessionCapabilities.delete.session/listsession/load/session/resumesession/deleteThe fork already carried the protocol side (
effect-acpsession/list/session/delete,AcpSessionRuntime.listSessions, and the probe'scanList/canLoad/canResume/canDelete); only the management path above it was cut.Carried 1:1 from upstream
contracts/rpc.ts:server.listAcpRegistrySessionsandserver.importAcpRegistrySession(also added toCoderWsRpcGroup).state/server.ts:listAcpRegistrySessionsandimportAcpRegistrySessioncommands.ws.ts:acpRegistryProject,acpSessionManager,importedAcpThreadId, and the list and import handlers.probe.ts:makeAcpRegistryManagementRuntime,managementFailure,listAcpRegistrySessions.driver.ts:nativeSessionsin the snapshot andacpSessionManagement.listSessions.AcpRegistryRuntimeCoordinator.withSessionMutation.ProviderRegistry.ts: returns to upstream'snativeSessions !== undefinedcompleted-probe check. The fork's model-based workaround is gone because the driver reportsnativeSessionsagain.AcpSessionManagementSection.tsx, its mount inProviderInstanceCard, andacpProjectsfromProviderSettingsPanel.acp-mock-agent.ts(logout part cut), thedriver.test.tsnativeSessionsassertion, and the browser test's import-scope case.Cuts (
Coder:markers, listed indocs/internals/coder-only.md)session/delete, so carrying it would be dormant. Cut: the RPC, handler, probe request,deleteSessionin provider-core'sacpSessionManagement, and the Delete button.acpSessionManagementkeeps onlylistSessions, and the snapshot reports noconfigurableProviders.ws.ts's import launches without upstream's startup command queue (workspace startup completes before the RPC layer is built).coderServer.tsprovidesAcpRegistryRuntimeCoordinator.layeralone. Upstream provides it throughAcpRegistrySupport.layerFromHost, but providing that withProviderHostLiveat this layer position hung helper startup.docs/user/providers-kilo.mdgains a Native sessions section adapted from upstream'sproviders-acp.md.Upstream sync note
None of the carried files change between 80a2351 and 15fe283 (checked with
git diff 80a2351fcb 15fe283272). The ACP commits pingdotgg#21323/pingdotgg#24024/pingdotgg#24479/pingdotgg#23834 in that sync touch onlyprovider-acp/effect-acpruntime files. This branch already merges currentcoder-only(#293 @-mention, #294 attachment toolkit); the only overlap wascoder-only.md, which merged cleanly.Verification
pnpm test:server: 3560 passed. 2 failed, both macOS/varsymlink issues (ClaudeSkills ClaudeSkills plugin-order test fails on macOS (/var symlink) #235 andGitVcsDriverCoreworktree path), pre-existing and unrelated.pnpm test:providers: all pass.pnpm test:web:coder: 10 timeouts across 8 files under full-suite load (Tests that flake under full-suite load #236 class). Rerun alone: 8/8 files, 173/173 tests pass.pnpm test:knip,node scripts/seams-check.mjs, andvp fmt --checkon changed files pass;pnpm buildand the helper/gateway/coder-clinode --testsuites (119) pass.kilo acpadvertising v7.8.18's capabilities:nativeSessions {canList, canLoad, canResume: true, canDelete: false}.importedThreadId: null.thread:provider:acpRegistry:…:native-thread:ses_kilo_native_1; re-import returns the same thread withimported: false, and the list then marks it imported.server.deleteAcpRegistrySessionis not served.session/loadon the native Kilo session id.🤖 Generated with Claude Code