@xingular/harness 2.0.0 → 2.0.1-unstable
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +635 -0
- package/LICENSE +202 -0
- package/NOTICE.md +50 -0
- package/README.md +241 -90
- package/THIRD_PARTY_LICENSES.md +942 -0
- package/browser-extension/README.md +32 -0
- package/browser-extension/background.js +612 -0
- package/browser-extension/manifest.json +16 -0
- package/browser-extension/overlay.js +97 -0
- package/browser-extension/popup.css +19 -0
- package/browser-extension/popup.html +30 -0
- package/browser-extension/popup.js +101 -0
- package/browser-extension/site-access.js +63 -0
- package/builtin/skills/plugin-authoring/SKILL.md +53 -0
- package/dist/cli.js +32851 -17155
- package/dist/sdk/accounts/accounts.d.ts +195 -0
- package/dist/sdk/accounts/accounts.js +821 -0
- package/dist/sdk/accounts/choices.d.ts +41 -0
- package/dist/sdk/accounts/choices.js +89 -0
- package/dist/sdk/accounts/env.d.ts +78 -0
- package/dist/sdk/accounts/env.js +294 -0
- package/dist/sdk/accounts/secrets.d.ts +28 -0
- package/dist/sdk/accounts/secrets.js +147 -0
- package/dist/sdk/accounts/store.d.ts +139 -0
- package/dist/sdk/accounts/store.js +255 -0
- package/dist/sdk/agents/builtin.d.ts +2 -0
- package/dist/sdk/agents/builtin.js +50 -0
- package/dist/sdk/agents/narrow.d.ts +13 -0
- package/dist/sdk/agents/narrow.js +29 -0
- package/dist/sdk/agents/planResearch.d.ts +27 -0
- package/dist/sdk/agents/planResearch.js +82 -0
- package/dist/sdk/agents/profiles.d.ts +93 -0
- package/dist/sdk/agents/profiles.js +289 -0
- package/dist/sdk/annotations/bridge.d.ts +44 -0
- package/dist/sdk/annotations/bridge.js +268 -0
- package/dist/sdk/annotations/capture.d.ts +158 -0
- package/dist/sdk/annotations/capture.js +409 -0
- package/dist/sdk/annotations/delivery.d.ts +79 -0
- package/dist/sdk/annotations/delivery.js +163 -0
- package/dist/sdk/annotations/inspect.d.ts +10 -0
- package/dist/sdk/annotations/inspect.js +34 -0
- package/dist/sdk/annotations/isolated.d.ts +6 -0
- package/dist/sdk/annotations/isolated.js +51 -0
- package/dist/sdk/annotations/pageScript.d.ts +28 -0
- package/dist/sdk/annotations/pageScript.js +871 -0
- package/dist/sdk/annotations/part.d.ts +8 -0
- package/dist/sdk/annotations/part.js +126 -0
- package/dist/sdk/annotations/queue.d.ts +4 -0
- package/dist/sdk/annotations/queue.js +45 -0
- package/dist/sdk/annotations/serverMethods.d.ts +3 -0
- package/dist/sdk/annotations/serverMethods.js +66 -0
- package/dist/sdk/annotations/store.d.ts +159 -0
- package/dist/sdk/annotations/store.js +404 -0
- package/dist/sdk/browser/backend.d.ts +16 -0
- package/dist/sdk/browser/backend.js +17 -0
- package/dist/sdk/browser/config.d.ts +19 -0
- package/dist/sdk/browser/config.js +23 -0
- package/dist/sdk/browser/contracts.d.ts +19 -0
- package/dist/sdk/browser/contracts.js +116 -0
- package/dist/sdk/browser/diagnostics.d.ts +4 -0
- package/dist/sdk/browser/diagnostics.js +38 -0
- package/dist/sdk/browser/extension/bridge.d.ts +55 -0
- package/dist/sdk/browser/extension/bridge.js +336 -0
- package/dist/sdk/browser/extension/session.d.ts +50 -0
- package/dist/sdk/browser/extension/session.js +321 -0
- package/dist/sdk/browser/index.d.ts +33 -0
- package/dist/sdk/browser/index.js +105 -0
- package/dist/sdk/browser/network.d.ts +10 -0
- package/dist/sdk/browser/network.js +59 -0
- package/dist/sdk/browser/serverMethods.d.ts +3 -0
- package/dist/sdk/browser/serverMethods.js +10 -0
- package/dist/sdk/browser/session.d.ts +85 -0
- package/dist/sdk/browser/session.js +228 -0
- package/dist/sdk/browser/tools.d.ts +102 -0
- package/dist/sdk/browser/tools.js +257 -0
- package/dist/sdk/capabilities/api.d.ts +22 -0
- package/dist/sdk/capabilities/api.js +54 -0
- package/dist/sdk/capabilities/runSnapshot.d.ts +18 -0
- package/dist/sdk/capabilities/runSnapshot.js +53 -0
- package/dist/sdk/capabilities/types.d.ts +29 -0
- package/dist/sdk/capabilities/types.js +1 -0
- package/dist/sdk/cli.d.ts +2 -0
- package/dist/sdk/cli.js +172 -0
- package/dist/sdk/commands/extensionOwners.d.ts +4 -0
- package/dist/sdk/commands/extensionOwners.js +17 -0
- package/dist/sdk/commands/list.d.ts +3 -0
- package/dist/sdk/commands/list.js +90 -0
- package/dist/sdk/commands/promptLoader.d.ts +5 -0
- package/dist/sdk/commands/promptLoader.js +76 -0
- package/dist/sdk/commands/promptRoutes.d.ts +13 -0
- package/dist/sdk/commands/promptRoutes.js +46 -0
- package/dist/sdk/commands/registry.d.ts +299 -0
- package/dist/sdk/commands/registry.js +54 -0
- package/dist/sdk/commands/routes.d.ts +16 -0
- package/dist/sdk/commands/routes.js +33 -0
- package/dist/sdk/commands/runtimeRouter.d.ts +4 -0
- package/dist/sdk/commands/runtimeRouter.js +48 -0
- package/dist/sdk/computer/boundary.d.ts +40 -0
- package/dist/sdk/computer/boundary.js +79 -0
- package/dist/sdk/computer/contracts.d.ts +127 -0
- package/dist/sdk/computer/contracts.js +13 -0
- package/dist/sdk/computer/control.d.ts +34 -0
- package/dist/sdk/computer/control.js +112 -0
- package/dist/sdk/computer/screenshot.d.ts +32 -0
- package/dist/sdk/computer/screenshot.js +35 -0
- package/dist/sdk/computer/terminalCapture.d.ts +26 -0
- package/dist/sdk/computer/terminalCapture.js +64 -0
- package/dist/sdk/computer/volatileImages.d.ts +9 -0
- package/dist/sdk/computer/volatileImages.js +50 -0
- package/dist/sdk/context/attribution.d.ts +18 -0
- package/dist/sdk/context/attribution.js +295 -0
- package/dist/sdk/context/runDetails.d.ts +16 -0
- package/dist/sdk/context/runDetails.js +22 -0
- package/dist/sdk/context/types.d.ts +94 -0
- package/dist/sdk/context/types.js +10 -0
- package/dist/sdk/core/bus.d.ts +23 -0
- package/dist/sdk/core/bus.js +76 -0
- package/dist/sdk/core/caller.d.ts +22 -0
- package/dist/sdk/core/caller.js +16 -0
- package/dist/sdk/core/changes.d.ts +15 -0
- package/dist/sdk/core/changes.js +15 -0
- package/dist/sdk/core/commandBudget.d.ts +23 -0
- package/dist/sdk/core/commandBudget.js +62 -0
- package/dist/sdk/core/effort.d.ts +2 -0
- package/dist/sdk/core/effort.js +1 -0
- package/dist/sdk/core/env.d.ts +18 -0
- package/dist/sdk/core/env.js +8 -0
- package/dist/sdk/core/errors.d.ts +15 -0
- package/dist/sdk/core/errors.js +24 -0
- package/dist/sdk/core/frontmatter.d.ts +12 -0
- package/dist/sdk/core/frontmatter.js +50 -0
- package/dist/sdk/core/fs.d.ts +18 -0
- package/dist/sdk/core/fs.js +106 -0
- package/dist/sdk/core/index.d.ts +24 -0
- package/dist/sdk/core/index.js +203 -0
- package/dist/sdk/core/interactiveProfile.d.ts +46 -0
- package/dist/sdk/core/interactiveProfile.js +143 -0
- package/dist/sdk/core/links.d.ts +51 -0
- package/dist/sdk/core/links.js +155 -0
- package/dist/sdk/core/path.d.ts +7 -0
- package/dist/sdk/core/path.js +79 -0
- package/dist/sdk/core/projects.d.ts +18 -0
- package/dist/sdk/core/projects.js +67 -0
- package/dist/sdk/core/secrets.d.ts +2 -0
- package/dist/sdk/core/secrets.js +5 -0
- package/dist/sdk/core/shell.d.ts +20 -0
- package/dist/sdk/core/shell.js +73 -0
- package/dist/sdk/core/text.d.ts +7 -0
- package/dist/sdk/core/text.js +40 -0
- package/dist/sdk/core/workspace.d.ts +13 -0
- package/dist/sdk/core/workspace.js +88 -0
- package/dist/sdk/core/workspaceBashTool.d.ts +20 -0
- package/dist/sdk/core/workspaceBashTool.js +50 -0
- package/dist/sdk/core/workspaceSandbox.d.ts +41 -0
- package/dist/sdk/core/workspaceSandbox.js +360 -0
- package/dist/sdk/core/workspaceWriteOperations.d.ts +57 -0
- package/dist/sdk/core/workspaceWriteOperations.js +245 -0
- package/dist/sdk/doctor/checks.d.ts +5 -0
- package/dist/sdk/doctor/checks.js +270 -0
- package/dist/sdk/doctor/probe.d.ts +4 -0
- package/dist/sdk/doctor/probe.js +94 -0
- package/dist/sdk/doctor/serverMethods.d.ts +3 -0
- package/dist/sdk/doctor/serverMethods.js +8 -0
- package/dist/sdk/doctor/service.d.ts +23 -0
- package/dist/sdk/doctor/service.js +144 -0
- package/dist/sdk/doctor/types.d.ts +141 -0
- package/dist/sdk/doctor/types.js +29 -0
- package/dist/sdk/harness.d.ts +172 -0
- package/dist/sdk/harness.js +387 -0
- package/dist/sdk/history/lessonPrompt.d.ts +2 -0
- package/dist/sdk/history/lessonPrompt.js +15 -0
- package/dist/sdk/history/lessons.d.ts +52 -0
- package/dist/sdk/history/lessons.js +173 -0
- package/dist/sdk/history/recall.d.ts +68 -0
- package/dist/sdk/history/recall.js +199 -0
- package/dist/sdk/history/serverMethods.d.ts +3 -0
- package/dist/sdk/history/serverMethods.js +8 -0
- package/dist/sdk/history/trajectory.d.ts +7 -0
- package/dist/sdk/history/trajectory.js +218 -0
- package/dist/sdk/hub/catalog.json +123 -0
- package/dist/sdk/hub/cli.d.ts +7 -0
- package/dist/sdk/hub/cli.js +81 -0
- package/dist/sdk/hub/hub.d.ts +74 -0
- package/dist/sdk/hub/hub.js +476 -0
- package/dist/sdk/hub/schema.d.ts +280 -0
- package/dist/sdk/hub/schema.js +78 -0
- package/dist/sdk/hub/serverMethods.d.ts +3 -0
- package/dist/sdk/hub/serverMethods.js +11 -0
- package/dist/sdk/index.d.ts +80 -0
- package/dist/sdk/index.js +60 -0
- package/dist/sdk/mcp/connections.d.ts +83 -0
- package/dist/sdk/mcp/connections.js +676 -0
- package/dist/sdk/mcp/manager.d.ts +26 -0
- package/dist/sdk/mcp/manager.js +124 -0
- package/dist/sdk/mcp/oauth.d.ts +35 -0
- package/dist/sdk/mcp/oauth.js +171 -0
- package/dist/sdk/mcp/scopeMigration.d.ts +19 -0
- package/dist/sdk/mcp/scopeMigration.js +198 -0
- package/dist/sdk/mcp/serverMethods.d.ts +3 -0
- package/dist/sdk/mcp/serverMethods.js +22 -0
- package/dist/sdk/mcp/service.d.ts +160 -0
- package/dist/sdk/mcp/service.js +510 -0
- package/dist/sdk/mcp/types.d.ts +131 -0
- package/dist/sdk/mcp/types.js +49 -0
- package/dist/sdk/pi/retryPolicy.d.ts +19 -0
- package/dist/sdk/pi/retryPolicy.js +11 -0
- package/dist/sdk/pi/runtime.d.ts +14 -0
- package/dist/sdk/pi/runtime.js +31 -0
- package/dist/sdk/plugins/api.d.ts +66 -0
- package/dist/sdk/plugins/api.js +155 -0
- package/dist/sdk/plugins/attachments.d.ts +46 -0
- package/dist/sdk/plugins/attachments.js +111 -0
- package/dist/sdk/plugins/builtin.d.ts +7 -0
- package/dist/sdk/plugins/builtin.js +182 -0
- package/dist/sdk/plugins/builtinRegistry.d.ts +62 -0
- package/dist/sdk/plugins/builtinRegistry.js +77 -0
- package/dist/sdk/plugins/catalogue.d.ts +29 -0
- package/dist/sdk/plugins/catalogue.js +197 -0
- package/dist/sdk/plugins/cli.d.ts +13 -0
- package/dist/sdk/plugins/cli.js +188 -0
- package/dist/sdk/plugins/commandPrefix.d.ts +8 -0
- package/dist/sdk/plugins/commandPrefix.js +21 -0
- package/dist/sdk/plugins/discover.d.ts +48 -0
- package/dist/sdk/plugins/discover.js +230 -0
- package/dist/sdk/plugins/firstParty.d.ts +50 -0
- package/dist/sdk/plugins/firstParty.js +119 -0
- package/dist/sdk/plugins/hooks.d.ts +94 -0
- package/dist/sdk/plugins/hooks.js +162 -0
- package/dist/sdk/plugins/identity.d.ts +19 -0
- package/dist/sdk/plugins/identity.js +48 -0
- package/dist/sdk/plugins/install.d.ts +24 -0
- package/dist/sdk/plugins/install.js +160 -0
- package/dist/sdk/plugins/inventory.d.ts +22 -0
- package/dist/sdk/plugins/inventory.js +111 -0
- package/dist/sdk/plugins/manifest.d.ts +21 -0
- package/dist/sdk/plugins/manifest.js +94 -0
- package/dist/sdk/plugins/plugins.d.ts +106 -0
- package/dist/sdk/plugins/plugins.js +165 -0
- package/dist/sdk/plugins/proposals.d.ts +17 -0
- package/dist/sdk/plugins/proposals.js +147 -0
- package/dist/sdk/plugins/runtime.d.ts +9 -0
- package/dist/sdk/plugins/runtime.js +95 -0
- package/dist/sdk/plugins/surfaces.d.ts +5 -0
- package/dist/sdk/plugins/surfaces.js +11 -0
- package/dist/sdk/plugins/trust.d.ts +44 -0
- package/dist/sdk/plugins/trust.js +120 -0
- package/dist/sdk/plugins/types.d.ts +174 -0
- package/dist/sdk/plugins/types.js +7 -0
- package/dist/sdk/prompt/compile.d.ts +245 -0
- package/dist/sdk/prompt/compile.js +535 -0
- package/dist/sdk/prompt/reporting.d.ts +2 -0
- package/dist/sdk/prompt/reporting.js +94 -0
- package/dist/sdk/prompt/standard.d.ts +32 -0
- package/dist/sdk/prompt/standard.js +76 -0
- package/dist/sdk/refine/cli.d.ts +4 -0
- package/dist/sdk/refine/cli.js +186 -0
- package/dist/sdk/refine/demo.d.ts +21 -0
- package/dist/sdk/refine/demo.js +114 -0
- package/dist/sdk/refine/evidence.d.ts +55 -0
- package/dist/sdk/refine/evidence.js +330 -0
- package/dist/sdk/refine/host.d.ts +59 -0
- package/dist/sdk/refine/host.js +105 -0
- package/dist/sdk/refine/ledger.d.ts +48 -0
- package/dist/sdk/refine/ledger.js +76 -0
- package/dist/sdk/refine/library.d.ts +55 -0
- package/dist/sdk/refine/library.js +177 -0
- package/dist/sdk/refine/pi.d.ts +72 -0
- package/dist/sdk/refine/pi.js +248 -0
- package/dist/sdk/refine/prompts.d.ts +60 -0
- package/dist/sdk/refine/prompts.js +434 -0
- package/dist/sdk/refine/recursion.d.ts +113 -0
- package/dist/sdk/refine/recursion.js +258 -0
- package/dist/sdk/refine/runner.d.ts +83 -0
- package/dist/sdk/refine/runner.js +151 -0
- package/dist/sdk/refine/selection.d.ts +57 -0
- package/dist/sdk/refine/selection.js +251 -0
- package/dist/sdk/refine/serverMethods.d.ts +3 -0
- package/dist/sdk/refine/serverMethods.js +23 -0
- package/dist/sdk/refine/service.d.ts +115 -0
- package/dist/sdk/refine/service.js +280 -0
- package/dist/sdk/refine/suite.d.ts +67 -0
- package/dist/sdk/refine/suite.js +174 -0
- package/dist/sdk/refine/trajectory.d.ts +9 -0
- package/dist/sdk/refine/trajectory.js +73 -0
- package/dist/sdk/refine/types.d.ts +93 -0
- package/dist/sdk/refine/types.js +10 -0
- package/dist/sdk/remote/addresses.d.ts +19 -0
- package/dist/sdk/remote/addresses.js +52 -0
- package/dist/sdk/remote/pairing.d.ts +59 -0
- package/dist/sdk/remote/pairing.js +160 -0
- package/dist/sdk/remote/seal.d.ts +28 -0
- package/dist/sdk/remote/seal.js +84 -0
- package/dist/sdk/remote/server.d.ts +28 -0
- package/dist/sdk/remote/server.js +158 -0
- package/dist/sdk/remote/service.d.ts +125 -0
- package/dist/sdk/remote/service.js +330 -0
- package/dist/sdk/remote/webClient.d.ts +4 -0
- package/dist/sdk/remote/webClient.js +452 -0
- package/dist/sdk/server/methods.d.ts +3 -0
- package/dist/sdk/server/methods.js +365 -0
- package/dist/sdk/server/params.d.ts +4 -0
- package/dist/sdk/server/params.js +11 -0
- package/dist/sdk/server/remote.d.ts +19 -0
- package/dist/sdk/server/remote.js +109 -0
- package/dist/sdk/server/rpc.d.ts +20 -0
- package/dist/sdk/server/rpc.js +102 -0
- package/dist/sdk/server/serve.d.ts +13 -0
- package/dist/sdk/server/serve.js +25 -0
- package/dist/sdk/server/socket.d.ts +28 -0
- package/dist/sdk/server/socket.js +122 -0
- package/dist/sdk/sessions/approvals.d.ts +47 -0
- package/dist/sdk/sessions/approvals.js +119 -0
- package/dist/sdk/sessions/checkpoint.d.ts +7 -0
- package/dist/sdk/sessions/checkpoint.js +41 -0
- package/dist/sdk/sessions/compactionCheckpoint.d.ts +18 -0
- package/dist/sdk/sessions/compactionCheckpoint.js +79 -0
- package/dist/sdk/sessions/completionCheck.d.ts +51 -0
- package/dist/sdk/sessions/completionCheck.js +161 -0
- package/dist/sdk/sessions/continuation.d.ts +53 -0
- package/dist/sdk/sessions/continuation.js +90 -0
- package/dist/sdk/sessions/contracts.d.ts +991 -0
- package/dist/sdk/sessions/contracts.js +545 -0
- package/dist/sdk/sessions/control.d.ts +72 -0
- package/dist/sdk/sessions/control.js +158 -0
- package/dist/sdk/sessions/extensionUi.d.ts +19 -0
- package/dist/sdk/sessions/extensionUi.js +64 -0
- package/dist/sdk/sessions/goal.d.ts +145 -0
- package/dist/sdk/sessions/goal.js +405 -0
- package/dist/sdk/sessions/goalLoop.d.ts +37 -0
- package/dist/sdk/sessions/goalLoop.js +125 -0
- package/dist/sdk/sessions/goalPrompts.d.ts +4 -0
- package/dist/sdk/sessions/goalPrompts.js +93 -0
- package/dist/sdk/sessions/goalStop.d.ts +27 -0
- package/dist/sdk/sessions/goalStop.js +41 -0
- package/dist/sdk/sessions/history.d.ts +16 -0
- package/dist/sdk/sessions/history.js +68 -0
- package/dist/sdk/sessions/initialBash.d.ts +7 -0
- package/dist/sdk/sessions/initialBash.js +7 -0
- package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
- package/dist/sdk/sessions/lineageJoin.js +61 -0
- package/dist/sdk/sessions/live.d.ts +101 -0
- package/dist/sdk/sessions/live.js +265 -0
- package/dist/sdk/sessions/planMode.d.ts +116 -0
- package/dist/sdk/sessions/planMode.js +281 -0
- package/dist/sdk/sessions/policy.d.ts +43 -0
- package/dist/sdk/sessions/policy.js +1 -0
- package/dist/sdk/sessions/pricing.d.ts +34 -0
- package/dist/sdk/sessions/pricing.js +40 -0
- package/dist/sdk/sessions/reasoningSummaries.d.ts +11 -0
- package/dist/sdk/sessions/reasoningSummaries.js +61 -0
- package/dist/sdk/sessions/registry.d.ts +124 -0
- package/dist/sdk/sessions/registry.js +392 -0
- package/dist/sdk/sessions/runIndex.d.ts +21 -0
- package/dist/sdk/sessions/runIndex.js +65 -0
- package/dist/sdk/sessions/runStore.d.ts +82 -0
- package/dist/sdk/sessions/runStore.js +393 -0
- package/dist/sdk/sessions/runner.d.ts +291 -0
- package/dist/sdk/sessions/runner.js +1040 -0
- package/dist/sdk/sessions/sessionState.d.ts +13 -0
- package/dist/sdk/sessions/sessionState.js +31 -0
- package/dist/sdk/sessions/sessions.d.ts +238 -0
- package/dist/sdk/sessions/sessions.js +923 -0
- package/dist/sdk/sessions/sideQuestionServerMethods.d.ts +3 -0
- package/dist/sdk/sessions/sideQuestionServerMethods.js +19 -0
- package/dist/sdk/sessions/sideQuestions.d.ts +66 -0
- package/dist/sdk/sessions/sideQuestions.js +290 -0
- package/dist/sdk/sessions/stallWatch.d.ts +35 -0
- package/dist/sdk/sessions/stallWatch.js +42 -0
- package/dist/sdk/sessions/subagentServerMethods.d.ts +3 -0
- package/dist/sdk/sessions/subagentServerMethods.js +41 -0
- package/dist/sdk/sessions/subagentService.d.ts +88 -0
- package/dist/sdk/sessions/subagentService.js +546 -0
- package/dist/sdk/sessions/subagents.d.ts +98 -0
- package/dist/sdk/sessions/subagents.js +136 -0
- package/dist/sdk/sessions/workSlice.d.ts +167 -0
- package/dist/sdk/sessions/workSlice.js +266 -0
- package/dist/sdk/sessions/workspaceBoundary.d.ts +15 -0
- package/dist/sdk/sessions/workspaceBoundary.js +46 -0
- package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
- package/dist/sdk/terminal/accountsMenu.js +392 -0
- package/dist/sdk/terminal/browser.d.ts +62 -0
- package/dist/sdk/terminal/browser.js +41 -0
- package/dist/sdk/terminal/browserControl.d.ts +29 -0
- package/dist/sdk/terminal/browserControl.js +187 -0
- package/dist/sdk/terminal/cli.d.ts +20 -0
- package/dist/sdk/terminal/cli.js +121 -0
- package/dist/sdk/terminal/client.d.ts +20 -0
- package/dist/sdk/terminal/client.js +148 -0
- package/dist/sdk/terminal/commandHelp.d.ts +17 -0
- package/dist/sdk/terminal/commandHelp.js +20 -0
- package/dist/sdk/terminal/control.d.ts +4 -0
- package/dist/sdk/terminal/control.js +25 -0
- package/dist/sdk/terminal/controller.d.ts +136 -0
- package/dist/sdk/terminal/controller.js +579 -0
- package/dist/sdk/terminal/credentialStore.d.ts +4 -0
- package/dist/sdk/terminal/credentialStore.js +33 -0
- package/dist/sdk/terminal/daemon.d.ts +44 -0
- package/dist/sdk/terminal/daemon.js +264 -0
- package/dist/sdk/terminal/hubMenu.d.ts +10 -0
- package/dist/sdk/terminal/hubMenu.js +34 -0
- package/dist/sdk/terminal/launch.d.ts +5 -0
- package/dist/sdk/terminal/launch.js +27 -0
- package/dist/sdk/terminal/liveTerminal.d.ts +96 -0
- package/dist/sdk/terminal/liveTerminal.js +436 -0
- package/dist/sdk/terminal/logs.d.ts +14 -0
- package/dist/sdk/terminal/logs.js +59 -0
- package/dist/sdk/terminal/opentui/ansi.d.ts +25 -0
- package/dist/sdk/terminal/opentui/ansi.js +192 -0
- package/dist/sdk/terminal/opentui/model.d.ts +163 -0
- package/dist/sdk/terminal/opentui/model.js +484 -0
- package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +28 -0
- package/dist/sdk/terminal/opentui/subagentsWidget.js +54 -0
- package/dist/sdk/terminal/opentui/theme.d.ts +47 -0
- package/dist/sdk/terminal/opentui/theme.js +93 -0
- package/dist/sdk/terminal/piExtension.d.ts +12 -0
- package/dist/sdk/terminal/piExtension.js +847 -0
- package/dist/sdk/terminal/pluginMenu.d.ts +34 -0
- package/dist/sdk/terminal/pluginMenu.js +101 -0
- package/dist/sdk/terminal/socket.d.ts +73 -0
- package/dist/sdk/terminal/socket.js +287 -0
- package/dist/sdk/terminal/standalone.d.ts +52 -0
- package/dist/sdk/terminal/standalone.js +329 -0
- package/dist/sdk/terminal/subagentMonitor.d.ts +62 -0
- package/dist/sdk/terminal/subagentMonitor.js +176 -0
- package/dist/sdk/terminal/terminals.d.ts +312 -0
- package/dist/sdk/terminal/terminals.js +1782 -0
- package/dist/sdk/terminal/toolName.d.ts +6 -0
- package/dist/sdk/terminal/toolName.js +12 -0
- package/dist/sdk/terminal/trajectory.d.ts +15 -0
- package/dist/sdk/terminal/trajectory.js +38 -0
- package/dist/sdk/terminal/tui/annotateCommand.d.ts +7 -0
- package/dist/sdk/terminal/tui/annotateCommand.js +36 -0
- package/dist/sdk/terminal/tui/annotateSend.d.ts +30 -0
- package/dist/sdk/terminal/tui/annotateSend.js +40 -0
- package/dist/sdk/terminal/tui/chrome.d.ts +68 -0
- package/dist/sdk/terminal/tui/chrome.js +182 -0
- package/dist/sdk/terminal/tui/clipboardFiles.d.ts +11 -0
- package/dist/sdk/terminal/tui/clipboardFiles.js +74 -0
- package/dist/sdk/terminal/tui/commandPages.d.ts +16 -0
- package/dist/sdk/terminal/tui/commandPages.js +136 -0
- package/dist/sdk/terminal/tui/commands.d.ts +71 -0
- package/dist/sdk/terminal/tui/commands.js +496 -0
- package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
- package/dist/sdk/terminal/tui/dialogGeometry.js +52 -0
- package/dist/sdk/terminal/tui/dialogs.d.ts +81 -0
- package/dist/sdk/terminal/tui/dialogs.js +372 -0
- package/dist/sdk/terminal/tui/goalCommand.d.ts +19 -0
- package/dist/sdk/terminal/tui/goalCommand.js +83 -0
- package/dist/sdk/terminal/tui/harnessRuntime.d.ts +8 -0
- package/dist/sdk/terminal/tui/harnessRuntime.js +771 -0
- package/dist/sdk/terminal/tui/keybindings.d.ts +11 -0
- package/dist/sdk/terminal/tui/keybindings.js +49 -0
- package/dist/sdk/terminal/tui/list.d.ts +86 -0
- package/dist/sdk/terminal/tui/list.js +278 -0
- package/dist/sdk/terminal/tui/markdown.d.ts +16 -0
- package/dist/sdk/terminal/tui/markdown.js +55 -0
- package/dist/sdk/terminal/tui/modeChoices.d.ts +61 -0
- package/dist/sdk/terminal/tui/modeChoices.js +95 -0
- package/dist/sdk/terminal/tui/modelPicker.d.ts +55 -0
- package/dist/sdk/terminal/tui/modelPicker.js +150 -0
- package/dist/sdk/terminal/tui/mouse.d.ts +3 -0
- package/dist/sdk/terminal/tui/mouse.js +3 -0
- package/dist/sdk/terminal/tui/mouseReport.d.ts +30 -0
- package/dist/sdk/terminal/tui/mouseReport.js +80 -0
- package/dist/sdk/terminal/tui/page.d.ts +17 -0
- package/dist/sdk/terminal/tui/page.js +1 -0
- package/dist/sdk/terminal/tui/pageOverlay.d.ts +30 -0
- package/dist/sdk/terminal/tui/pageOverlay.js +183 -0
- package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +76 -0
- package/dist/sdk/terminal/tui/pages/accountsPage.js +409 -0
- package/dist/sdk/terminal/tui/pages/agentsPage.d.ts +74 -0
- package/dist/sdk/terminal/tui/pages/agentsPage.js +193 -0
- package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +148 -0
- package/dist/sdk/terminal/tui/pages/annotatePage.js +576 -0
- package/dist/sdk/terminal/tui/pages/browserPage.d.ts +87 -0
- package/dist/sdk/terminal/tui/pages/browserPage.js +739 -0
- package/dist/sdk/terminal/tui/pages/componentsPage.d.ts +47 -0
- package/dist/sdk/terminal/tui/pages/componentsPage.js +119 -0
- package/dist/sdk/terminal/tui/pages/contextPage.d.ts +91 -0
- package/dist/sdk/terminal/tui/pages/contextPage.js +585 -0
- package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +39 -0
- package/dist/sdk/terminal/tui/pages/doctorPage.js +233 -0
- package/dist/sdk/terminal/tui/pages/followUpQueuePage.d.ts +34 -0
- package/dist/sdk/terminal/tui/pages/followUpQueuePage.js +130 -0
- package/dist/sdk/terminal/tui/pages/hubPage.d.ts +52 -0
- package/dist/sdk/terminal/tui/pages/hubPage.js +292 -0
- package/dist/sdk/terminal/tui/pages/logPage.d.ts +38 -0
- package/dist/sdk/terminal/tui/pages/logPage.js +189 -0
- package/dist/sdk/terminal/tui/pages/permissionsPage.d.ts +44 -0
- package/dist/sdk/terminal/tui/pages/permissionsPage.js +124 -0
- package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +65 -0
- package/dist/sdk/terminal/tui/pages/pluginsPage.js +519 -0
- package/dist/sdk/terminal/tui/pages/remoteControlPage.d.ts +32 -0
- package/dist/sdk/terminal/tui/pages/remoteControlPage.js +170 -0
- package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +63 -0
- package/dist/sdk/terminal/tui/pages/settingsPage.js +103 -0
- package/dist/sdk/terminal/tui/pages/subagentsPage.d.ts +24 -0
- package/dist/sdk/terminal/tui/pages/subagentsPage.js +155 -0
- package/dist/sdk/terminal/tui/pages/textPage.d.ts +17 -0
- package/dist/sdk/terminal/tui/pages/textPage.js +52 -0
- package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +66 -0
- package/dist/sdk/terminal/tui/pages/trajectoryPage.js +490 -0
- package/dist/sdk/terminal/tui/pages/usagePage.d.ts +45 -0
- package/dist/sdk/terminal/tui/pages/usagePage.js +397 -0
- package/dist/sdk/terminal/tui/pages/worktreesPage.d.ts +72 -0
- package/dist/sdk/terminal/tui/pages/worktreesPage.js +203 -0
- package/dist/sdk/terminal/tui/piAdapter.d.ts +17 -0
- package/dist/sdk/terminal/tui/piAdapter.js +46 -0
- package/dist/sdk/terminal/tui/planMode.d.ts +2 -0
- package/dist/sdk/terminal/tui/planMode.js +2 -0
- package/dist/sdk/terminal/tui/pluginCommands.d.ts +16 -0
- package/dist/sdk/terminal/tui/pluginCommands.js +41 -0
- package/dist/sdk/terminal/tui/qr.d.ts +4 -0
- package/dist/sdk/terminal/tui/qr.js +35 -0
- package/dist/sdk/terminal/tui/questionPicker.d.ts +20 -0
- package/dist/sdk/terminal/tui/questionPicker.js +150 -0
- package/dist/sdk/terminal/tui/questions.d.ts +21 -0
- package/dist/sdk/terminal/tui/questions.js +42 -0
- package/dist/sdk/terminal/tui/runtime.d.ts +117 -0
- package/dist/sdk/terminal/tui/runtime.js +544 -0
- package/dist/sdk/terminal/tui/search.d.ts +22 -0
- package/dist/sdk/terminal/tui/search.js +61 -0
- package/dist/sdk/terminal/tui/selection.d.ts +16 -0
- package/dist/sdk/terminal/tui/selection.js +16 -0
- package/dist/sdk/terminal/tui/sessionPicker.d.ts +40 -0
- package/dist/sdk/terminal/tui/sessionPicker.js +141 -0
- package/dist/sdk/terminal/tui/sessionUi.d.ts +3 -0
- package/dist/sdk/terminal/tui/sessionUi.js +30 -0
- package/dist/sdk/terminal/tui/settingsModel.d.ts +14 -0
- package/dist/sdk/terminal/tui/settingsModel.js +195 -0
- package/dist/sdk/terminal/tui/sideQuestion.d.ts +57 -0
- package/dist/sdk/terminal/tui/sideQuestion.js +241 -0
- package/dist/sdk/terminal/tui/skillInvocation.d.ts +28 -0
- package/dist/sdk/terminal/tui/skillInvocation.js +63 -0
- package/dist/sdk/terminal/tui/status.d.ts +18 -0
- package/dist/sdk/terminal/tui/status.js +67 -0
- package/dist/sdk/terminal/tui/theme.d.ts +54 -0
- package/dist/sdk/terminal/tui/theme.js +185 -0
- package/dist/sdk/terminal/tui/thinkingLevels.d.ts +11 -0
- package/dist/sdk/terminal/tui/thinkingLevels.js +31 -0
- package/dist/sdk/terminal/tui/treeModel.d.ts +79 -0
- package/dist/sdk/terminal/tui/treeModel.js +483 -0
- package/dist/sdk/terminal/tui/treePicker.d.ts +49 -0
- package/dist/sdk/terminal/tui/treePicker.js +251 -0
- package/dist/sdk/terminal/tui/ui.d.ts +49 -0
- package/dist/sdk/terminal/tui/ui.js +149 -0
- package/dist/sdk/terminal/tui/variantCommands.d.ts +32 -0
- package/dist/sdk/terminal/tui/variantCommands.js +359 -0
- package/dist/sdk/terminal/tui/workingStatus.d.ts +9 -0
- package/dist/sdk/terminal/tui/workingStatus.js +229 -0
- package/dist/sdk/terminal/variantControl.d.ts +24 -0
- package/dist/sdk/terminal/variantControl.js +145 -0
- package/dist/sdk/tools/askUser.d.ts +6 -0
- package/dist/sdk/tools/askUser.js +92 -0
- package/dist/sdk/tools/defaultSkills.d.ts +23 -0
- package/dist/sdk/tools/defaultSkills.js +46 -0
- package/dist/sdk/tools/definitions.d.ts +32 -0
- package/dist/sdk/tools/definitions.js +133 -0
- package/dist/sdk/tools/dispatch.d.ts +16 -0
- package/dist/sdk/tools/dispatch.js +92 -0
- package/dist/sdk/tools/getCapabilities.d.ts +31 -0
- package/dist/sdk/tools/getCapabilities.js +34 -0
- package/dist/sdk/tools/harnessTools.d.ts +8 -0
- package/dist/sdk/tools/harnessTools.js +20 -0
- package/dist/sdk/tools/sessionName.d.ts +16 -0
- package/dist/sdk/tools/sessionName.js +78 -0
- package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
- package/dist/sdk/tools/spawnSubagent.js +63 -0
- package/dist/sdk/tools/todo.d.ts +15 -0
- package/dist/sdk/tools/todo.js +66 -0
- package/dist/sdk/tools/types.d.ts +48 -0
- package/dist/sdk/tools/types.js +1 -0
- package/dist/sdk/usage/analytics.d.ts +20 -0
- package/dist/sdk/usage/analytics.js +151 -0
- package/dist/sdk/usage/ledger.d.ts +38 -0
- package/dist/sdk/usage/ledger.js +142 -0
- package/dist/sdk/usage/limits/adapters.d.ts +11 -0
- package/dist/sdk/usage/limits/adapters.js +349 -0
- package/dist/sdk/usage/limits/capture.d.ts +8 -0
- package/dist/sdk/usage/limits/capture.js +47 -0
- package/dist/sdk/usage/limits/http.d.ts +12 -0
- package/dist/sdk/usage/limits/http.js +51 -0
- package/dist/sdk/usage/limits/normalize.d.ts +15 -0
- package/dist/sdk/usage/limits/normalize.js +211 -0
- package/dist/sdk/usage/limits/service.d.ts +30 -0
- package/dist/sdk/usage/limits/service.js +176 -0
- package/dist/sdk/usage/limits/types.d.ts +65 -0
- package/dist/sdk/usage/limits/types.js +1 -0
- package/dist/sdk/usage/serverMethods.d.ts +3 -0
- package/dist/sdk/usage/serverMethods.js +22 -0
- package/dist/sdk/usage/service.d.ts +32 -0
- package/dist/sdk/usage/service.js +66 -0
- package/dist/sdk/usage/settings.d.ts +7 -0
- package/dist/sdk/usage/settings.js +28 -0
- package/dist/sdk/usage/types.d.ts +60 -0
- package/dist/sdk/usage/types.js +4 -0
- package/dist/sdk/variant/components.d.ts +34 -0
- package/dist/sdk/variant/components.js +230 -0
- package/dist/sdk/variant/materialise.d.ts +66 -0
- package/dist/sdk/variant/materialise.js +81 -0
- package/dist/sdk/variant/migrate.d.ts +4 -0
- package/dist/sdk/variant/migrate.js +41 -0
- package/dist/sdk/variant/seed.d.ts +20 -0
- package/dist/sdk/variant/seed.js +116 -0
- package/dist/sdk/variant/store.d.ts +114 -0
- package/dist/sdk/variant/store.js +256 -0
- package/dist/sdk/variant/surface.d.ts +56 -0
- package/dist/sdk/variant/surface.js +81 -0
- package/dist/sdk/variant/trust.d.ts +27 -0
- package/dist/sdk/variant/trust.js +64 -0
- package/dist/sdk/variant/variant.d.ts +71 -0
- package/dist/sdk/variant/variant.js +331 -0
- package/dist/sdk/web/markdown.d.ts +10 -0
- package/dist/sdk/web/markdown.js +66 -0
- package/dist/sdk/web/part.d.ts +10 -0
- package/dist/sdk/web/part.js +6 -0
- package/dist/sdk/web/safeRequest.d.ts +34 -0
- package/dist/sdk/web/safeRequest.js +175 -0
- package/dist/sdk/web/search.d.ts +53 -0
- package/dist/sdk/web/search.js +168 -0
- package/dist/sdk/web/serverMethods.d.ts +3 -0
- package/dist/sdk/web/serverMethods.js +7 -0
- package/dist/sdk/web/text.d.ts +2 -0
- package/dist/sdk/web/text.js +7 -0
- package/dist/sdk/web/tools.d.ts +22 -0
- package/dist/sdk/web/tools.js +195 -0
- package/dist/sdk/web/turndown-plugin-gfm.d.ts +4 -0
- package/dist/sdk/wiki/notes.d.ts +68 -0
- package/dist/sdk/wiki/notes.js +297 -0
- package/dist/sdk/wiki/serverMethods.d.ts +3 -0
- package/dist/sdk/wiki/serverMethods.js +26 -0
- package/dist/sdk/worktrees/cli.d.ts +11 -0
- package/dist/sdk/worktrees/cli.js +146 -0
- package/dist/sdk/worktrees/copy.d.ts +9 -0
- package/dist/sdk/worktrees/copy.js +111 -0
- package/dist/sdk/worktrees/git.d.ts +18 -0
- package/dist/sdk/worktrees/git.js +89 -0
- package/dist/sdk/worktrees/serverMethods.d.ts +3 -0
- package/dist/sdk/worktrees/serverMethods.js +30 -0
- package/dist/sdk/worktrees/service.d.ts +73 -0
- package/dist/sdk/worktrees/service.js +483 -0
- package/dist/sdk/worktrees/setup.d.ts +23 -0
- package/dist/sdk/worktrees/setup.js +65 -0
- package/dist/sdk/worktrees/snapshot.d.ts +16 -0
- package/dist/sdk/worktrees/snapshot.js +83 -0
- package/dist/sdk/worktrees/types.d.ts +91 -0
- package/dist/sdk/worktrees/types.js +1 -0
- package/dist/sdk/world/actions.d.ts +23 -0
- package/dist/sdk/world/actions.js +31 -0
- package/dist/sdk/world/cli.d.ts +12 -0
- package/dist/sdk/world/cli.js +166 -0
- package/dist/sdk/world/images.d.ts +20 -0
- package/dist/sdk/world/images.js +48 -0
- package/dist/sdk/world/untrusted.d.ts +12 -0
- package/dist/sdk/world/untrusted.js +20 -0
- package/dist/sdk/world/world.d.ts +75 -0
- package/dist/sdk/world/world.js +117 -0
- package/dist/terminal-opentui.js +30986 -0
- package/dist/terminal-pi.js +3008 -610
- package/docs/README.md +45 -1
- package/docs/architecture/00-overview.md +171 -0
- package/docs/architecture/01-extension-points.md +78 -0
- package/docs/architecture/02-sessions-and-runs.md +505 -0
- package/docs/architecture/03-variants.md +122 -0
- package/docs/architecture/04-prompt.md +277 -0
- package/docs/architecture/05-refinement.md +134 -0
- package/docs/architecture/06-plugins-and-capabilities.md +208 -0
- package/docs/architecture/07-tools-and-gate.md +245 -0
- package/docs/architecture/08-memory-and-history.md +100 -0
- package/docs/architecture/09-accounts-and-connectors.md +153 -0
- package/docs/architecture/10-server-protocol.md +403 -0
- package/docs/architecture/11-terminal.md +555 -0
- package/docs/architecture/12-storage.md +118 -0
- package/docs/architecture/13-world-tools.md +114 -0
- package/docs/architecture/14-surfaces-and-parity.md +151 -0
- package/docs/architecture/15-remote-control.md +120 -0
- package/docs/architecture/README.md +143 -0
- package/docs/architecture/proposals/PROP-0001-reporting-section.md +106 -0
- package/docs/architecture/proposals/PROP-0002-retain-rollout-workspaces.md +104 -0
- package/docs/architecture/proposals/PROP-0003-executor-settings.md +81 -0
- package/docs/architecture/proposals/PROP-0004-flexible-reporting-guidance.md +71 -0
- package/docs/architecture/proposals/PROP-0005-xharness-cli-name.md +78 -0
- package/docs/architecture/proposals/PROP-0006-run-checklist.md +72 -0
- package/docs/architecture/proposals/PROP-0007-run-continuation.md +80 -0
- package/docs/architecture/proposals/PROP-0008-lessons-from-runs.md +80 -0
- package/docs/architecture/proposals/PROP-0009-foundation-and-variants.md +78 -0
- package/docs/architecture/proposals/PROP-0010-session-names.md +73 -0
- package/docs/architecture/proposals/PROP-0011-doctor.md +63 -0
- package/docs/architecture/proposals/PROP-0012-release-baseline.md +56 -0
- package/docs/architecture/proposals/PROP-0013-resource-browser.md +58 -0
- package/docs/architecture/proposals/PROP-0014-fullscreen-browser-tabs.md +58 -0
- package/docs/architecture/proposals/PROP-0015-one-capability-surface.md +88 -0
- package/docs/architecture/proposals/PROP-0016-managed-worktrees.md +156 -0
- package/docs/architecture/proposals/PROP-0017-page-annotations.md +131 -0
- package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +183 -0
- package/docs/architecture/proposals/PROP-0019-contextual-side-questions.md +122 -0
- package/docs/architecture/proposals/PROP-0020-builtin-feature-plugins.md +105 -0
- package/docs/architecture/proposals/PROP-0021-command-namespaces-and-duplicates.md +99 -0
- package/docs/architecture/proposals/PROP-0022-plan-only-questions.md +102 -0
- package/docs/architecture/proposals/PROP-0023-xagent-cli-name.md +61 -0
- package/docs/architecture/proposals/PROP-0024-question-sketch-previews.md +130 -0
- package/docs/architecture/proposals/PROP-0025-contextual-question-wireframes.md +49 -0
- package/docs/architecture/proposals/PROP-0026-connected-sketch-display.md +96 -0
- package/docs/architecture/proposals/PROP-0027-xingular-agent-product-identity.md +60 -0
- package/docs/architecture/proposals/PROP-0028-normalize-question-wireframes.md +55 -0
- package/docs/architecture/proposals/PROP-0029-agent-profiles.md +124 -0
- package/docs/architecture/proposals/PROP-0030-subagent-title.md +86 -0
- package/docs/architecture/proposals/PROP-0031-plugin-command-owner-namespaces.md +54 -0
- package/docs/architecture/proposals/PROP-0032-planning-quality.md +196 -0
- package/docs/architecture/proposals/PROP-0033-compaction-plan-checkpoints.md +75 -0
- package/docs/architecture/proposals/PROP-0034-conversation-fast-mode.md +120 -0
- package/docs/architecture/proposals/PROP-0035-retain-subagent-status.md +47 -0
- package/docs/architecture/proposals/PROP-0036-first-class-harness-commands.md +59 -0
- package/docs/architecture/proposals/PROP-0037-workspace-write-boundary.md +63 -0
- package/docs/architecture/proposals/PROP-0038-annotate-open-shadow-roots.md +73 -0
- package/docs/architecture/proposals/PROP-0039-workspace-boundary-hardening.md +139 -0
- package/docs/architecture/proposals/PROP-0040-one-launch-path.md +87 -0
- package/docs/architecture/proposals/PROP-0041-bounded-work-slices.md +260 -0
- package/docs/architecture/proposals/PROP-0042-usage-and-provider-limits.md +127 -0
- package/docs/architecture/proposals/PROP-0043-read-only-plan-bash.md +74 -0
- package/docs/architecture/proposals/PROP-0044-work-slice-defaults.md +93 -0
- package/docs/architecture/proposals/PROP-0045-rename-checklist-to-todo.md +132 -0
- package/docs/architecture/proposals/PROP-0046-progress-aware-stall-guards.md +82 -0
- package/docs/architecture/proposals/PROP-0047-plugins-hub-separation.md +122 -0
- package/docs/architecture/proposals/PROP-0048-simple-annotate.md +85 -0
- package/docs/architecture/proposals/PROP-0049-context-attribution.md +415 -0
- package/docs/architecture/proposals/PROP-0050-run-stop-codes-and-refusals.md +30 -0
- package/docs/architecture/proposals/PROP-0051-unfinished-run-handoff.md +110 -0
- package/docs/architecture/proposals/PROP-0052-terminal-refine-and-variant-switch.md +111 -0
- package/docs/architecture/proposals/README.md +123 -0
- package/docs/decisions/ADR-0001-owned-terminal.md +10 -3
- package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +3 -1
- package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +3 -2
- package/docs/decisions/ADR-0006-opentui-only-terminal.md +47 -0
- package/docs/decisions/ADR-0007-reporting-section.md +33 -0
- package/docs/decisions/ADR-0008-flexible-reporting-guidance.md +41 -0
- package/docs/decisions/ADR-0009-xharness-command.md +39 -0
- package/docs/decisions/ADR-0010-lessons-in-the-wiki.md +31 -0
- package/docs/decisions/ADR-0011-foundation-and-variants.md +28 -0
- package/docs/decisions/ADR-0012-native-session-names.md +34 -0
- package/docs/decisions/ADR-0013-doctor.md +27 -0
- package/docs/decisions/ADR-0014-public-release-baseline.md +22 -0
- package/docs/decisions/ADR-0015-resource-browser.md +28 -0
- package/docs/decisions/ADR-0016-fullscreen-browser-tabs.md +31 -0
- package/docs/decisions/ADR-0017-one-capability-surface.md +34 -0
- package/docs/decisions/ADR-0018-builtin-feature-plugins.md +35 -0
- package/docs/decisions/ADR-0019-managed-git-worktrees.md +31 -0
- package/docs/decisions/ADR-0020-page-annotations.md +37 -0
- package/docs/decisions/ADR-0021-required-command-namespaces.md +40 -0
- package/docs/decisions/ADR-0022-plan-only-question-tools.md +34 -0
- package/docs/decisions/ADR-0023-contextual-side-question-runs.md +35 -0
- package/docs/decisions/ADR-0024-xagent-command.md +40 -0
- package/docs/decisions/ADR-0025-question-choice-sketches.md +49 -0
- package/docs/decisions/ADR-0026-contextual-question-wireframes.md +58 -0
- package/docs/decisions/ADR-0027-connected-sketch-display.md +62 -0
- package/docs/decisions/ADR-0028-xingular-agent-product-identity.md +56 -0
- package/docs/decisions/ADR-0029-normalized-question-wireframe-borders.md +33 -0
- package/docs/decisions/ADR-0030-agent-profiles.md +43 -0
- package/docs/decisions/ADR-0031-plugin-command-owner-namespaces.md +37 -0
- package/docs/decisions/ADR-0032-compaction-run-checkpoints.md +35 -0
- package/docs/decisions/ADR-0033-plan-mode-research-delegation.md +47 -0
- package/docs/decisions/ADR-0034-first-class-harness-terminal-commands.md +25 -0
- package/docs/decisions/ADR-0035-one-launch-path.md +40 -0
- package/docs/decisions/ADR-0036-workspace-write-operation-boundary.md +54 -0
- package/docs/decisions/ADR-0037-usage-ledger-and-provider-limits.md +44 -0
- package/docs/decisions/ADR-0038-plan-bash-os-read-only.md +29 -0
- package/docs/decisions/ADR-0039-progress-aware-stall-guards.md +43 -0
- package/docs/decisions/ADR-0040-architecture-change-workflow.md +31 -0
- package/docs/decisions/ADR-0041-plugins-hub-separation.md +41 -0
- package/docs/decisions/ADR-0042-windows-shell-without-sandbox.md +40 -0
- package/docs/decisions/ADR-0043-parents-continue-stopped-subagents.md +49 -0
- package/docs/decisions/ADR-0044-annotations-pending-or-sent.md +24 -0
- package/docs/decisions/ADR-0045-default-plugin-authoring-skill.md +9 -0
- package/docs/decisions/ADR-0046-hash-bound-plugin-proposals.md +20 -0
- package/docs/decisions/ADR-0047-links-open-with-the-os-handler.md +47 -0
- package/docs/decisions/ADR-0048-required-skills-from-a-message.md +42 -0
- package/docs/decisions/ADR-0050-approved-window-screenshots.md +19 -0
- package/docs/decisions/ADR-0051-terminal-decision-wait.md +10 -0
- package/docs/decisions/ADR-0052-per-profile-subagent-budgets.md +25 -0
- package/docs/decisions/ADR-0053-no-repeated-work-guard.md +45 -0
- package/docs/decisions/ADR-0054-terminal-reply-heartbeat-and-stall.md +52 -0
- package/docs/decisions/ADR-0055-plan-output-repair.md +51 -0
- package/docs/decisions/ADR-0056-remote-control.md +53 -0
- package/docs/decisions/ADR-0057-structured-plan-outcomes.md +39 -0
- package/docs/decisions/ADR-0058-ask-user-only-plan-clarification.md +36 -0
- package/docs/decisions/ADR-0059-run-diagnostic-evidence.md +35 -0
- package/docs/decisions/ADR-0060-approvals-are-controls.md +40 -0
- package/docs/decisions/ADR-0061-strict-plugin-command-namespaces.md +41 -0
- package/docs/decisions/ADR-0062-shared-account-state.md +67 -0
- package/docs/decisions/ADR-0063-unfinished-work-handoffs.md +34 -0
- package/docs/decisions/ADR-0064-account-model-fallback-on-resume.md +79 -0
- package/docs/decisions/ADR-0065-variant-switch-at-turn-boundaries.md +31 -0
- package/docs/decisions/ADR-0066-guided-refinement-from-turn-snapshots.md +37 -0
- package/docs/decisions/ADR-0067-cache-stable-compaction-checkpoint.md +54 -0
- package/docs/decisions/ADR-0068-scope-and-completion-report.md +60 -0
- package/docs/decisions/ADR-0069-stop-gate-and-finish.md +136 -0
- package/docs/decisions/ADR-0070-terminal-slice-continuation.md +49 -0
- package/docs/decisions/ADR-0071-completion-check.md +104 -0
- package/docs/decisions/ADR-0072-codex-prompts-and-goal.md +108 -0
- package/docs/decisions/ADR-0073-large-reporting-prompt.md +89 -0
- package/docs/decisions/ADR-0074-report-content-not-report-blocks.md +90 -0
- package/docs/decisions/ADR-0075-no-todo-gate.md +84 -0
- package/docs/decisions/ADR-0076-codex-final-answer-verbatim.md +98 -0
- package/docs/decisions/ADR-0077-plan-runs-may-conclude-no-plan-needed.md +120 -0
- package/docs/decisions/ADR-0078-child-aware-stall-watch.md +46 -0
- package/docs/decisions/ADR-0079-phase-led-reporting-guidance.md +72 -0
- package/docs/decisions/ADR-0080-fixed-width-question-sketch-canvas.md +50 -0
- package/docs/decisions/ADR-0081-no-work-slice-budget-by-default.md +36 -0
- package/docs/decisions/ADR-0082-connected-brave-browser.md +72 -0
- package/docs/decisions/ADR-0083-one-live-session-runtime.md +256 -0
- package/docs/doctor.md +95 -0
- package/docs/experiments/EXP-0001-terminal-input-latency/plan.md +81 -0
- package/docs/experiments/EXP-0001-terminal-input-latency/results.md +46 -0
- package/docs/experiments/EXP-0002-opentui-typing-latency/plan.md +70 -0
- package/docs/experiments/EXP-0002-opentui-typing-latency/results.md +92 -0
- package/docs/experiments/EXP-0003-performance-audit/data/session-runtime-replication.json +420 -0
- package/docs/experiments/EXP-0003-performance-audit/data/session-runtime.json +420 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-compact.json +376 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-history.json +422 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-question.json +95 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-wide.json +1036 -0
- package/docs/experiments/EXP-0003-performance-audit/plan.md +109 -0
- package/docs/experiments/EXP-0003-performance-audit/results.md +151 -0
- package/docs/features/README.md +46 -0
- package/docs/features/automations/README.md +41 -0
- package/docs/features/cores/README.md +39 -0
- package/docs/features/google-harness2/README.md +52 -0
- package/docs/features/integrations/README.md +40 -0
- package/docs/features/interfaces/README.md +29 -0
- package/docs/features/memory/README.md +28 -0
- package/docs/future-work.md +48 -0
- package/docs/handoff-2026-10-25-app-parity-and-solo-tabs.md +202 -0
- package/docs/parity.md +158 -0
- package/docs/releases/1.0.0.md +40 -0
- package/docs/releases/1.1.1.md +28 -0
- package/docs/releases/1.2.0.md +49 -0
- package/docs/releases/1.3.0.md +21 -0
- package/docs/releases/1.3.1-unstable.1.md +8 -0
- package/docs/releases/1.3.1-unstable.2.md +11 -0
- package/docs/releases/1.3.1-unstable.3.md +54 -0
- package/docs/releases/1.3.1-unstable.4.md +56 -0
- package/docs/releases/1.3.1-unstable.5.md +53 -0
- package/docs/releases/1.3.1-unstable.6.md +31 -0
- package/docs/releases/1.3.1-unstable.7.md +17 -0
- package/docs/releases/1.3.1-unstable.8.md +19 -0
- package/docs/releases/1.3.1-unstable.9.md +54 -0
- package/docs/releases/1.4.0-unstable.md +25 -0
- package/docs/releases/1.5.0-unstable.md +32 -0
- package/docs/releases/1.5.1-unstable.md +24 -0
- package/docs/releases/1.6.0-unstable.md +59 -0
- package/docs/releases/2.0.1-unstable.md +63 -0
- package/docs/releases/4.0.0.md +47 -0
- package/docs/releases/README.md +49 -0
- package/docs/study/00-index.md +112 -0
- package/docs/study/STUDY-0003-long-horizon-runs.md +210 -0
- package/docs/study/STUDY-0004-turn-end-controls.md +130 -0
- package/docs/study/STUDY-0005-skill-installation-guidance.md +146 -0
- package/docs/study/STUDY-0006-reporting-prompts.md +119 -0
- package/docs/study/STUDY-0007-claude-code-prompt.md +162 -0
- package/docs/study/STUDY-0008-browser-control.md +281 -0
- package/docs/study/STUDY-0009-claude-code-reporting.md +205 -0
- package/docs/study/arms/00-matrix.md +20 -0
- package/docs/study/arms/01-system-prompt.md +211 -0
- package/docs/study/arms/02-tools.md +79 -0
- package/docs/study/arms/03-subagents.md +90 -0
- package/docs/study/arms/04-skills.md +81 -0
- package/docs/study/arms/05-context-management.md +90 -0
- package/docs/study/arms/06-memory.md +90 -0
- package/docs/study/arms/07-governance.md +71 -0
- package/docs/study/arms/08-execution.md +69 -0
- package/docs/study/arms/09-observability.md +60 -0
- package/docs/study/arms/10-refinement.md +110 -0
- package/docs/study/autonomous-engineering-sources.md +277 -0
- package/docs/study/autonomy-sources.md +147 -0
- package/docs/study/btw-comparison.md +37 -0
- package/docs/study/feature-gap-review.md +42 -0
- package/docs/study/insights.md +123 -0
- package/docs/study/proactive-autonomy.md +408 -0
- package/docs/study/roadmap.md +72 -0
- package/docs/study/sources/claude-code.md +56 -0
- package/docs/study/sources/deepseek-harness.md +102 -0
- package/docs/study/sources/harness2.md +50 -0
- package/docs/study/sources/kimi-cli.md +42 -0
- package/docs/study/sources/omp.md +93 -0
- package/docs/study/sources/opencode.md +43 -0
- package/docs/study/sources/openhands.md +46 -0
- package/docs/study/sources/smolagents.md +40 -0
- package/docs/study/sources/swe-agent.md +34 -0
- package/docs/study/tui-resource-browser.md +78 -0
- package/docs/system-prompt-design.md +196 -0
- package/docs/terminal-tui.md +887 -109
- package/package.json +46 -13
- package/src/accounts/accounts.test.ts +0 -419
- package/src/accounts/accounts.ts +0 -760
- package/src/accounts/env.test.ts +0 -95
- package/src/accounts/env.ts +0 -338
- package/src/accounts/secrets.ts +0 -50
- package/src/accounts/store.ts +0 -338
- package/src/capabilities/api.ts +0 -75
- package/src/capabilities/runSnapshot.ts +0 -59
- package/src/capabilities/types.ts +0 -34
- package/src/cli.ts +0 -118
- package/src/core/bus.test.ts +0 -22
- package/src/core/bus.ts +0 -49
- package/src/core/changes.ts +0 -33
- package/src/core/env.ts +0 -27
- package/src/core/errors.ts +0 -32
- package/src/core/frontmatter.ts +0 -47
- package/src/core/fs.test.ts +0 -38
- package/src/core/fs.ts +0 -92
- package/src/core/index.ts +0 -193
- package/src/core/path.test.ts +0 -14
- package/src/core/path.ts +0 -79
- package/src/core/projects.ts +0 -90
- package/src/core/text.ts +0 -39
- package/src/harness.ts +0 -322
- package/src/hub/catalog.json +0 -123
- package/src/hub/cli.ts +0 -59
- package/src/hub/hub.test.ts +0 -205
- package/src/hub/hub.ts +0 -256
- package/src/hub/schema.ts +0 -81
- package/src/index.ts +0 -80
- package/src/mcp/connections.ts +0 -641
- package/src/mcp/manager.ts +0 -130
- package/src/mcp/oauth.ts +0 -195
- package/src/mcp/scopeMigration.test.ts +0 -79
- package/src/mcp/scopeMigration.ts +0 -204
- package/src/mcp/service.test.ts +0 -422
- package/src/mcp/service.ts +0 -560
- package/src/mcp/types.ts +0 -118
- package/src/memory/api.test.ts +0 -82
- package/src/memory/api.ts +0 -303
- package/src/memory/blocks.test.ts +0 -78
- package/src/memory/blocks.ts +0 -408
- package/src/memory/caller.ts +0 -69
- package/src/memory/curation.test.ts +0 -206
- package/src/memory/curation.ts +0 -64
- package/src/memory/dispatch.ts +0 -64
- package/src/memory/facts.test.ts +0 -41
- package/src/memory/facts.ts +0 -248
- package/src/memory/graph.ts +0 -103
- package/src/memory/health.test.ts +0 -130
- package/src/memory/health.ts +0 -74
- package/src/memory/maintainer.ts +0 -272
- package/src/memory/maintenance.test.ts +0 -192
- package/src/memory/maintenance.ts +0 -679
- package/src/memory/migrate.ts +0 -79
- package/src/memory/operations.ts +0 -150
- package/src/memory/proposals.test.ts +0 -168
- package/src/memory/proposals.ts +0 -584
- package/src/memory/recall.test.ts +0 -115
- package/src/memory/recall.ts +0 -279
- package/src/memory/references.ts +0 -77
- package/src/memory/runContext.ts +0 -93
- package/src/memory/secrets.ts +0 -6
- package/src/memory/store.test.ts +0 -66
- package/src/memory/store.ts +0 -385
- package/src/memory/trajectory.test.ts +0 -178
- package/src/memory/trajectory.ts +0 -220
- package/src/memory/wiki.test.ts +0 -47
- package/src/memory/wiki.ts +0 -423
- package/src/memory/wikiIndex.test.ts +0 -88
- package/src/memory/wikiIndex.ts +0 -117
- package/src/plugins/api.ts +0 -181
- package/src/plugins/attachments.test.ts +0 -84
- package/src/plugins/attachments.ts +0 -141
- package/src/plugins/builtin.ts +0 -84
- package/src/plugins/catalogue.test.ts +0 -254
- package/src/plugins/catalogue.ts +0 -251
- package/src/plugins/cli.ts +0 -184
- package/src/plugins/discover.ts +0 -151
- package/src/plugins/firstParty.test.ts +0 -143
- package/src/plugins/firstParty.ts +0 -129
- package/src/plugins/hooks.test.ts +0 -250
- package/src/plugins/hooks.ts +0 -239
- package/src/plugins/identity.ts +0 -37
- package/src/plugins/install.test.ts +0 -107
- package/src/plugins/install.ts +0 -106
- package/src/plugins/inventory.ts +0 -123
- package/src/plugins/manifest.ts +0 -76
- package/src/plugins/plugins.test.ts +0 -205
- package/src/plugins/plugins.ts +0 -189
- package/src/plugins/proposal.ts +0 -121
- package/src/plugins/runtime.test.ts +0 -40
- package/src/plugins/runtime.ts +0 -82
- package/src/plugins/trust.ts +0 -142
- package/src/plugins/types.ts +0 -149
- package/src/prompt/compile.test.ts +0 -261
- package/src/prompt/compile.ts +0 -732
- package/src/server/methods.ts +0 -355
- package/src/server/remote.ts +0 -77
- package/src/server/rpc.ts +0 -116
- package/src/server/serve.ts +0 -28
- package/src/server/server.test.ts +0 -193
- package/src/sessions/approvals.test.ts +0 -49
- package/src/sessions/approvals.ts +0 -140
- package/src/sessions/contracts.ts +0 -336
- package/src/sessions/conversation.test.ts +0 -233
- package/src/sessions/extensionSession.test.ts +0 -74
- package/src/sessions/extensionUi.test.ts +0 -65
- package/src/sessions/extensionUi.ts +0 -102
- package/src/sessions/history.ts +0 -51
- package/src/sessions/lineageJoin.ts +0 -75
- package/src/sessions/policy.ts +0 -36
- package/src/sessions/pricing.ts +0 -60
- package/src/sessions/questionBatches.test.ts +0 -110
- package/src/sessions/reasoningSummaries.ts +0 -59
- package/src/sessions/registry.ts +0 -412
- package/src/sessions/runIndex.ts +0 -99
- package/src/sessions/runStore.test.ts +0 -152
- package/src/sessions/runStore.ts +0 -346
- package/src/sessions/runner.ts +0 -610
- package/src/sessions/runtimeResources.test.ts +0 -61
- package/src/sessions/sessions.test.ts +0 -588
- package/src/sessions/sessions.ts +0 -331
- package/src/sessions/subagentService.test.ts +0 -159
- package/src/sessions/subagentService.ts +0 -236
- package/src/sessions/subagents.ts +0 -97
- package/src/skills/registry.test.ts +0 -104
- package/src/skills/registry.ts +0 -413
- package/src/terminal/accountsMenu.test.ts +0 -225
- package/src/terminal/accountsMenu.ts +0 -382
- package/src/terminal/cli.ts +0 -149
- package/src/terminal/client.ts +0 -74
- package/src/terminal/control.test.ts +0 -23
- package/src/terminal/control.ts +0 -23
- package/src/terminal/controller.ts +0 -354
- package/src/terminal/hubMenu.ts +0 -24
- package/src/terminal/launch.test.ts +0 -25
- package/src/terminal/launch.ts +0 -48
- package/src/terminal/piExtension.lifecycle.test.ts +0 -55
- package/src/terminal/piExtension.ts +0 -295
- package/src/terminal/pluginControl.test.ts +0 -146
- package/src/terminal/pluginMenu.ts +0 -112
- package/src/terminal/socket.test.ts +0 -94
- package/src/terminal/socket.ts +0 -256
- package/src/terminal/standalone.test.ts +0 -167
- package/src/terminal/standalone.ts +0 -165
- package/src/terminal/terminal.test.ts +0 -534
- package/src/terminal/terminals.ts +0 -661
- package/src/terminal/trajectory.test.ts +0 -66
- package/src/terminal/trajectory.ts +0 -44
- package/src/terminal/tui/application.test.ts +0 -290
- package/src/terminal/tui/application.ts +0 -653
- package/src/terminal/tui/commands.test.ts +0 -278
- package/src/terminal/tui/commands.ts +0 -443
- package/src/terminal/tui/dialogs.ts +0 -301
- package/src/terminal/tui/editor.test.ts +0 -113
- package/src/terminal/tui/editor.ts +0 -109
- package/src/terminal/tui/keybindings.test.ts +0 -30
- package/src/terminal/tui/keybindings.ts +0 -59
- package/src/terminal/tui/piAdapter.ts +0 -62
- package/src/terminal/tui/planMode.test.ts +0 -10
- package/src/terminal/tui/planMode.ts +0 -12
- package/src/terminal/tui/presentation.test.ts +0 -79
- package/src/terminal/tui/questions.test.ts +0 -41
- package/src/terminal/tui/questions.ts +0 -47
- package/src/terminal/tui/runtime.socket.test.ts +0 -178
- package/src/terminal/tui/runtime.test.ts +0 -225
- package/src/terminal/tui/runtime.ts +0 -403
- package/src/terminal/tui/screen.test.ts +0 -143
- package/src/terminal/tui/screen.ts +0 -121
- package/src/terminal/tui/sessionUi.ts +0 -24
- package/src/terminal/tui/settings.test.ts +0 -150
- package/src/terminal/tui/settings.ts +0 -188
- package/src/terminal/tui/skillInvocation.test.ts +0 -71
- package/src/terminal/tui/skillInvocation.ts +0 -51
- package/src/terminal/tui/status.test.ts +0 -48
- package/src/terminal/tui/status.ts +0 -82
- package/src/terminal/tui/theme.ts +0 -185
- package/src/terminal/tui/tools.test.ts +0 -145
- package/src/terminal/tui/tools.ts +0 -142
- package/src/terminal/tui/trajectoryPanel.test.ts +0 -99
- package/src/terminal/tui/trajectoryPanel.ts +0 -226
- package/src/terminal/tui/transcript.test.ts +0 -39
- package/src/terminal/tui/transcript.ts +0 -135
- package/src/terminal/tui/ui.test.ts +0 -313
- package/src/terminal/tui/ui.ts +0 -166
- package/src/terminal/tui/welcome.ts +0 -102
- package/src/terminal/tui/workingStatus.test.ts +0 -44
- package/src/terminal/tui/workingStatus.ts +0 -238
- package/src/tools/askUser.test.ts +0 -69
- package/src/tools/askUser.ts +0 -59
- package/src/tools/definitions.ts +0 -228
- package/src/tools/maintenance.ts +0 -29
- package/src/tools/memoryTools.ts +0 -22
- package/src/tools/pluginPropose.ts +0 -41
- package/src/tools/registryWrite.test.ts +0 -101
- package/src/tools/registryWrite.ts +0 -182
- package/src/tools/spawnSubagent.ts +0 -47
- package/src/tools/types.ts +0 -41
- package/src/web/safeRequest.ts +0 -171
- package/src/web/text.ts +0 -53
- package/src/web/tools.ts +0 -134
- package/src/web/web.test.ts +0 -141
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0064
|
|
3
|
+
title: A conversation this account cannot use starts on the account's newest selection
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-30
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0064: A conversation this account cannot use starts on the account's newest selection
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
Each mode keeps a model and effort per account in that account's `choices.json`, and a fresh
|
|
13
|
+
conversation starts on the normal mode's selection. A *resumed* conversation instead keeps the model
|
|
14
|
+
in its own history, which is right while the account can use it. After an account switch, a
|
|
15
|
+
signed-out provider or a retired model it cannot: the conversation's branch names a provider this
|
|
16
|
+
account has no credentials for.
|
|
17
|
+
|
|
18
|
+
Nothing in the Harness decided that case. Pi noticed the failed restore, set a
|
|
19
|
+
`modelFallbackMessage`, and picked a model itself — the settings default, then the first available
|
|
20
|
+
model of the account, restored effort from the branch. The person's own choice for that account was
|
|
21
|
+
never consulted, and the run recorded a model the person had not selected for that conversation.
|
|
22
|
+
The case that prompted this record: a conversation written on one account (a Codex model) was
|
|
23
|
+
resumed on another, and a run started on a different provider's model at a *maximum* reasoning
|
|
24
|
+
level that no step in the conversation had chosen. Because the change is applied at session
|
|
25
|
+
creation, the transcript held no `model_change` entry, so the model could not even be traced from
|
|
26
|
+
the conversation.
|
|
27
|
+
|
|
28
|
+
## Decision
|
|
29
|
+
|
|
30
|
+
The terminal runtime owns the start model of every conversation, and the rule is:
|
|
31
|
+
|
|
32
|
+
- A conversation keeps the model in its history while this account offers it and holds credentials
|
|
33
|
+
for its provider. An explicit `--model` from a host still wins, and a fresh conversation still
|
|
34
|
+
starts on the normal mode's saved selection.
|
|
35
|
+
- When the conversation's model is not usable, the conversation starts on **this account's newest
|
|
36
|
+
saved selection**, resolved field by field: the current mode's choice, then normal's, then the
|
|
37
|
+
newest selection in any mode (by `updatedAt`). Its effort comes from the same resolution. Each
|
|
38
|
+
candidate model is checked for being offered and authenticated, and skipped when it is not.
|
|
39
|
+
- That start is a change the terminal makes itself. It is written into the conversation as a
|
|
40
|
+
`model_change` entry — so the next resume is settled and a run's recorded model is traceable —
|
|
41
|
+
and it is *never* written to the account's `choices.json`: a fallback is not a selection the
|
|
42
|
+
person made.
|
|
43
|
+
- The person is told once, in a terminal notice: which model was replaced and which one is used. With
|
|
44
|
+
no usable saved selection the notice falls back to Pi's own `modelFallbackMessage`, and the
|
|
45
|
+
session still starts.
|
|
46
|
+
|
|
47
|
+
## Alternatives considered
|
|
48
|
+
|
|
49
|
+
- **Adopt the account's newest selection on every account switch.** Rejected: an account switch
|
|
50
|
+
between two accounts that share a provider would silently drop a conversation's model and effort,
|
|
51
|
+
which is still valid work.
|
|
52
|
+
- **Resolve the model at the `accounts.relaunch` / `prepare` seam and pass `--model`.** Rejected:
|
|
53
|
+
that seam cannot tell whether the conversation's model is usable on the target account, so it has
|
|
54
|
+
the same override problem; it also misses `/session` resume, forks and a provider that was signed
|
|
55
|
+
out while the account stayed the same.
|
|
56
|
+
- **Do nothing and rely on Pi's fallback.** Rejected: Pi cannot know the person's account choice, and
|
|
57
|
+
it leaves the run's model unexplained in the transcript.
|
|
58
|
+
- **Block the resume until a model is chosen.** Rejected: a switch or a resume must not dead-end on a
|
|
59
|
+
model question; a notice plus a working default keeps the conversation usable, and `/model`
|
|
60
|
+
remains one command away.
|
|
61
|
+
|
|
62
|
+
## Consequences
|
|
63
|
+
|
|
64
|
+
- A conversation carried to a new account is deterministic: the same account selection decides it
|
|
65
|
+
every time, and the transcript records the resulting model change.
|
|
66
|
+
- The conversation gains one `model_change` entry per account it cannot be continued on, which is
|
|
67
|
+
the audit trail for the run's model and effort.
|
|
68
|
+
- The account's saved choices are unchanged by a fallback, so the person's last deliberate selection
|
|
69
|
+
for the account and the mode still applies to the next conversation.
|
|
70
|
+
- A host that reads a run's model sees the model the run actually used, not the one recorded in the
|
|
71
|
+
older part of the conversation.
|
|
72
|
+
|
|
73
|
+
## References
|
|
74
|
+
|
|
75
|
+
- `src/accounts/choices.ts` (`latestChoice`, `startChoice`, `startModels`, `resolveChoice`)
|
|
76
|
+
- `src/terminal/tui/modeChoices.ts` (`ModeChoices.start`, `ModeChoices.useFallback`)
|
|
77
|
+
- `src/terminal/tui/runtime.ts` (`recoverModel`, `recordedModel`, `usableModel`, `bind`)
|
|
78
|
+
- [11 Terminal](../architecture/11-terminal.md), [09 Accounts](../architecture/09-accounts-and-connectors.md),
|
|
79
|
+
[terminal and TUI](../terminal-tui.md)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0065
|
|
3
|
+
title: A conversation switches variant version only by the person's action, at a turn boundary
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-30
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0065: A conversation switches variant version only by the person's action, at a turn boundary
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
`INV-VAR-4` pinned a conversation's variant once: every later turn used the same files even when
|
|
13
|
+
the head moved. That kept runs reproducible and the provider cache warm, but an improvement a
|
|
14
|
+
person adopted reached only their next conversation (PROP-0052).
|
|
15
|
+
|
|
16
|
+
## Decision
|
|
17
|
+
|
|
18
|
+
- A conversation has a **selected version**. It starts as the head (or the version the host names)
|
|
19
|
+
and changes only when the person, in this session, adopts a refinement, restores or reverts a
|
|
20
|
+
version, or picks one. A head moved elsewhere is shown, never followed.
|
|
21
|
+
- The change takes effect at the next turn boundary. A running reply finishes on its version;
|
|
22
|
+
every run pins exactly one version (`INV-RUN-1`).
|
|
23
|
+
- The terminal applies it by restarting its frontend on the chosen version and resuming the same
|
|
24
|
+
native conversation, through the existing relaunch path (`TerminalRelaunch.variantVersion`). The
|
|
25
|
+
prompt pack is compiled again, so the provider cache misses once.
|
|
26
|
+
- When the version records `tunedFor` and the chat runs another model, the person is told.
|
|
27
|
+
|
|
28
|
+
## Consequences
|
|
29
|
+
|
|
30
|
+
Run records keep naming the version each run used, so a conversation's history shows where it
|
|
31
|
+
switched. A terminal's harness session id changes across the restart; the native session does not.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0066
|
|
3
|
+
title: Refinement replays a typed turn from its snapshot, and a person's guidance reaches improvers only
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-30
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0066: Refinement replays a typed turn from its snapshot, and a person's guidance reaches improvers only
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
Refinement needs a task it can run several times from the same start. For a request a person made
|
|
13
|
+
in their repository, the folder as it is now already holds the agent's answer, and the repository's
|
|
14
|
+
HEAD lacks the person's uncommitted work. People also know where their agent goes wrong and want to
|
|
15
|
+
point improvers there (PROP-0052).
|
|
16
|
+
|
|
17
|
+
## Decision
|
|
18
|
+
|
|
19
|
+
- **Snapshot each typed turn.** In a git repository, before the agent acts, the harness writes a
|
|
20
|
+
commit of the working tree through a throwaway index (tracked edits, deletions, and untracked
|
|
21
|
+
files within 5 MB each, 100 MB and 10,000 files) and records it on the run. It never touches the
|
|
22
|
+
working tree, the real index, HEAD or refs, and it gives up after two seconds. The temporary index
|
|
23
|
+
keeps the real index's time, so git still sees an edit made in the same second that kept a file's
|
|
24
|
+
size.
|
|
25
|
+
- **Replay in a shared clone.** Each execution works in a temporary `--shared` clone checked out at
|
|
26
|
+
the snapshot, with HEAD and the index at the turn's starting commit. Ignored files named by
|
|
27
|
+
`.worktreeinclude` are copied from the repository.
|
|
28
|
+
- **Guidance directs improvers, not choices.** `task.guidance` is checked like work prompts (no
|
|
29
|
+
measurement words) and capped at 2,000 characters. It is added to the INV, DOM, aggregate and
|
|
30
|
+
compose missions as where to look first; an edit must still trace to a trajectory and `KEEP_BASE`
|
|
31
|
+
stays valid. The selector and the reflector never see it (`INV-REF-1`, `INV-REF-2`).
|
|
32
|
+
|
|
33
|
+
## Consequences
|
|
34
|
+
|
|
35
|
+
A replay cannot reach what the snapshot left out (ignored files not listed for worktrees, large
|
|
36
|
+
untracked files, attachments); `refine.fromRun` says so before the person confirms. Repositories gain
|
|
37
|
+
unreferenced objects that git collects in time.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0067
|
|
3
|
+
title: The compaction checkpoint arms only for a compaction during its run and stays in place
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-30
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0067: The compaction checkpoint arms only for a compaction during its run and stays in place
|
|
9
|
+
|
|
10
|
+
Supersedes the delivery part of [ADR-0032](ADR-0032-compaction-run-checkpoints.md); what the
|
|
11
|
+
checkpoint holds and its bounds are unchanged.
|
|
12
|
+
|
|
13
|
+
## Context
|
|
14
|
+
|
|
15
|
+
Under ADR-0032 the checkpoint was appended to the end of every model request, rebuilt each time, in
|
|
16
|
+
every run whose context held a compaction summary. A summary stays in context for the rest of the
|
|
17
|
+
session, so every later turn received it, though that turn's request, todo list and plan were in live
|
|
18
|
+
history.
|
|
19
|
+
|
|
20
|
+
Because the checkpoint was always last, a request was never the previous request plus its reply.
|
|
21
|
+
Pi's Codex WebSocket continuation (`previous_response_id` with only the new items) needs that shape,
|
|
22
|
+
so every request became a full resend. Provider prefix caches also stopped extending.
|
|
23
|
+
|
|
24
|
+
In a measured terminal session (6.1 Terra and 6 Luna), caching ran at 94–99% before the first
|
|
25
|
+
compaction and 18–24% after it. Replaying that session's saved history through Pi's request builder
|
|
26
|
+
showed the history itself was append-only:
|
|
27
|
+
- With the old checkpoint, 138 of 151 post-compaction requests were full resends.
|
|
28
|
+
- With this decision, 1 was: the request right after a second compaction.
|
|
29
|
+
|
|
30
|
+
A live probe on `openai-codex/gpt-6-luna` (2026-10-30, three pairs of disposable sessions with the
|
|
31
|
+
owner's permission) forced one compaction mid-run, then ran a follow-up turn that wrote a todo list:
|
|
32
|
+
- With the old checkpoint, every request after the compaction in that run read 0 cached tokens. In
|
|
33
|
+
the follow-up turn the cached amount stayed fixed while uncached input grew.
|
|
34
|
+
- With this decision, those requests were cached at 47–66%, against a ceiling of about 76% for
|
|
35
|
+
contexts that small. The follow-up turn was cached at 61–79%.
|
|
36
|
+
|
|
37
|
+
## Decision
|
|
38
|
+
|
|
39
|
+
- **Only a compaction during the run arms it.** The extension records the summary already in context
|
|
40
|
+
at the run's first request. Only a different summary, a compaction that happened while the run was
|
|
41
|
+
working, produces a checkpoint. A run that starts from compacted history gets none.
|
|
42
|
+
- **Built once, placed after the summary.** The checkpoint is rendered once per compaction from the
|
|
43
|
+
run's request, todo list and plan instructions at that moment. It is inserted directly after the
|
|
44
|
+
`compactionSummary` message, with the same text and timestamp on every later request. Todo updates
|
|
45
|
+
after the compaction are already in history as `todo_write` calls; the checkpoint says that later
|
|
46
|
+
updates supersede it. A further compaction in the same run rebuilds it.
|
|
47
|
+
- It stays ephemeral: not persisted, no event, cleared when the run settles or the branch changes.
|
|
48
|
+
|
|
49
|
+
## Consequences
|
|
50
|
+
|
|
51
|
+
Each request after a compaction is again the previous request plus new items, so continuation and
|
|
52
|
+
prefix caching work until the next compaction. The checkpoint's todo can be older than the latest
|
|
53
|
+
`todo_write`, which follows it in context. A run whose compaction found no todo list or plan gets no
|
|
54
|
+
checkpoint, even if it writes a todo list later; that list is in its live history.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0068
|
|
3
|
+
title: Scope of the work and two required completion headings
|
|
4
|
+
status: superseded
|
|
5
|
+
created: 2026-10-30
|
|
6
|
+
updated: 2026-11-01
|
|
7
|
+
superseded_by: ADR-0073
|
|
8
|
+
supersedes: partial — ADR-0008
|
|
9
|
+
---
|
|
10
|
+
# ADR-0068 — Scope of the work and two required completion headings
|
|
11
|
+
|
|
12
|
+
> **Superseded by [ADR-0073](ADR-0073-large-reporting-prompt.md):** the two required headings and the fixed-label rule are replaced by content blocks and flexible headings. The scope rule in the `role` paragraph stands.
|
|
13
|
+
|
|
14
|
+
> **Amended by [ADR-0069](ADR-0069-stop-gate-and-finish.md):** `## What would make this complete` applies only when the work stopped short (blocked, needing the person, or handed back by the guard), and the deferred runner feature is now the stop gate.
|
|
15
|
+
|
|
16
|
+
## Context and decision
|
|
17
|
+
|
|
18
|
+
ADR-0008 removed the fixed heading list from the `reporting` section and kept every heading
|
|
19
|
+
optional. Two problems followed from a prompt that only described output:
|
|
20
|
+
|
|
21
|
+
1. Every run of the last seven days that ended with work left (207 of 822, 25 %) did so at a median
|
|
22
|
+
of 17 tool calls; the model treated the literal request as the whole assignment
|
|
23
|
+
(`outputs/diagnoses/2026-10-30-sweep.md`). Nothing in the prompt said the work extends to what the
|
|
24
|
+
request implies.
|
|
25
|
+
2. A person reading the final reply could not tell what had been done beyond their request, nor what
|
|
26
|
+
would finish the run. `README`-style prose hid both.
|
|
27
|
+
|
|
28
|
+
The `role` paragraph of a standard session now states the scope of the work — the job the request
|
|
29
|
+
implies, not only its literal words, inside the working folder and away from what a person must
|
|
30
|
+
decide (a deploy, a secret, remote data, money), without asking first inside those bounds — and the
|
|
31
|
+
`reporting` section requires two headings when they apply:
|
|
32
|
+
|
|
33
|
+
- `## Beyond what you asked` — anything done beyond the request, each piece with why the work needed it.
|
|
34
|
+
- `## What would make this complete` — the concrete remaining steps in order, naming the ones only
|
|
35
|
+
the person can decide.
|
|
36
|
+
|
|
37
|
+
`REPORTING_BUDGET` rises from 2,000 to 2,400 characters to hold them without cutting
|
|
38
|
+
(`prompt/compile.ts`).
|
|
39
|
+
|
|
40
|
+
## Consequences
|
|
41
|
+
|
|
42
|
+
- A run may do and report adjacent work that the person did not name; the second heading is what
|
|
43
|
+
makes that auditable and rejectable rather than silent.
|
|
44
|
+
- The stable prefix changes once per session for the three texts (`role`, `reporting`,
|
|
45
|
+
`TODO_GUIDANCE`). Measured with real requests only, under INV-PRM-8.
|
|
46
|
+
- Applications bundling the harness need a rebuild before any new session sees the wording; an
|
|
47
|
+
existing session keeps the prefix it compiled (observed: `context.json` `compiledAt` 16:33:36Z
|
|
48
|
+
reused by a run at 17:21Z).
|
|
49
|
+
- No stored data or protocol changes. Bounded autonomy is still enforced by the tool gate and the
|
|
50
|
+
workspace boundary; the prompt does not grant new reach.
|
|
51
|
+
|
|
52
|
+
## Alternatives considered
|
|
53
|
+
|
|
54
|
+
- Keep every heading optional (ADR-0008 as it stood): rejected — the two facts above were invisible
|
|
55
|
+
in the reply, so the person could not see either the extra work or the gap.
|
|
56
|
+
- One combined heading ("Summary"): rejected — extra work and remaining work are different decisions
|
|
57
|
+
for the person, and merging them hides which is which.
|
|
58
|
+
- Make autonomy a runner feature (continue when a todo is open): deferred, not rejected. The prompt
|
|
59
|
+
is the cheapest lever and was not yet in effect; `docs/research/2026-10-30-turn-end-controls.md`
|
|
60
|
+
records what other harnesses do and when a stop-hook style continuation is worth adding.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0069
|
|
3
|
+
title: A stop gate and a finish tool; the model's checkpoint tool is removed
|
|
4
|
+
status: superseded
|
|
5
|
+
created: 2026-10-31
|
|
6
|
+
updated: 2026-11-01
|
|
7
|
+
superseded_by: ADR-0075
|
|
8
|
+
supersedes: partial — PROP-0041 (the model-written checkpoint), ADR-0068 (when the completion heading applies), ADR-0063 (scope of the unfinished-work guidance)
|
|
9
|
+
related:
|
|
10
|
+
- STUDY-0004
|
|
11
|
+
- ADR-0068
|
|
12
|
+
---
|
|
13
|
+
# ADR-0069 — A stop gate and a finish tool; the model's checkpoint tool is removed
|
|
14
|
+
|
|
15
|
+
> **Superseded by [ADR-0075](ADR-0075-no-todo-gate.md):** the stop gate and the `unfinished` status
|
|
16
|
+
> that open todo items produced are removed. A reply the model ends settles `completed`; the goal
|
|
17
|
+
> loop and the work-slice guard keep their statuses. The `finish` tool was already removed by
|
|
18
|
+
> ADR-0071.
|
|
19
|
+
|
|
20
|
+
> **Amended by [ADR-0071](ADR-0071-completion-check.md):** `finish` is removed; a completion check (the run's own model, fresh context) now decides `continue` / `needs_person` / `done` when a reply that did work ends with its list closed.
|
|
21
|
+
|
|
22
|
+
## Context
|
|
23
|
+
|
|
24
|
+
A reply the model ended on its own settled `completed` (`sessions/runner.ts`), and only a
|
|
25
|
+
guard-ended slice auto-continued (`continueSlice`: `terminalReason === 'slice_complete'`). Nothing
|
|
26
|
+
read the todo list when a reply ended.
|
|
27
|
+
|
|
28
|
+
- **Scale.** 207 of 822 runs in the week to 2026-10-30 ended with work left, at a median of 17 tool
|
|
29
|
+
calls; 81 left open todos (`outputs/diagnoses/2026-10-30-sweep.md`).
|
|
30
|
+
- **Worst case.** One terminal session, "Complete platform and API handoff", stopped three times in
|
|
31
|
+
a row with an open todo, at 23, 65 and 94 of 320 tool calls, after being told "dont stop". Its own
|
|
32
|
+
answer in between: "I stopped prematurely… the unfinished work was not all blocked by approval
|
|
33
|
+
gates."
|
|
34
|
+
- **Prompt fixes did not reach it.** ADR-0068's wording was in `src/` but not in `dist/`, and a live
|
|
35
|
+
terminal session keeps the pack and the extension code it started with.
|
|
36
|
+
|
|
37
|
+
**Hypothesis: the harness's own exit ramps make stopping easier.** Several texts made a polished,
|
|
38
|
+
incomplete stop a first-class outcome, with nothing pushing back:
|
|
39
|
+
|
|
40
|
+
- `checkpoint_write`, whose description said to call it "before you stop on purpose";
|
|
41
|
+
- `TODO_GUIDANCE`'s "before your final reply… leave unfinished or blocked steps accurate";
|
|
42
|
+
- ADR-0063's unfinished-handoff guidance;
|
|
43
|
+
- ADR-0068's `## What would make this complete`, "when the run could be more complete".
|
|
44
|
+
|
|
45
|
+
**What the run records show:**
|
|
46
|
+
|
|
47
|
+
- `checkpoint_write` was rarely called: 3 calls in 41 eligible top-level code runs.
|
|
48
|
+
- In run `62c7fc6c` the model wrote a checkpoint on its own ("the handoff remains incomplete…
|
|
49
|
+
continue remaining implementation", nothing `blocked`), made zero further tool calls, and ended.
|
|
50
|
+
It used the checkpoint as a sign-off.
|
|
51
|
+
- Runs that ended with open todos rose from 8% (146 runs before the tool existed) to 42% (19 after).
|
|
52
|
+
The second sample is small and mostly huge handoffs, so this is a signal, not proof. Stopping
|
|
53
|
+
early predates the tool.
|
|
54
|
+
|
|
55
|
+
Other harnesses enforce the end of a turn rather than describe it (STUDY-0004):
|
|
56
|
+
|
|
57
|
+
| Harness | Mechanism |
|
|
58
|
+
|---|---|
|
|
59
|
+
| Claude Code, Codex | `Stop` hook with `decision: block` and a reason |
|
|
60
|
+
| Cursor | `followup_message` with a loop limit |
|
|
61
|
+
| Amp | `agent.end → continue` |
|
|
62
|
+
| Ralph loop | A stop hook with a completion promise and an iteration cap |
|
|
63
|
+
| Gemini CLI | `complete_task` is "the ONLY way to finish" |
|
|
64
|
+
| Cline | `attempt_completion` with a double check |
|
|
65
|
+
|
|
66
|
+
## Decision
|
|
67
|
+
|
|
68
|
+
1. **Stop gate.** An extension at Pi's `agent_before_settle` boundary (`sessions/stopGate.ts`) runs
|
|
69
|
+
in every attended top-level run, structured and terminal. It is off in plan, command, automatic,
|
|
70
|
+
subagent and other related runs.
|
|
71
|
+
- When the reply's own `todo_write` list holds an open item and nothing was declared with
|
|
72
|
+
`finish`, it appends a displayed `xingular-stop-gate` message naming the open items and
|
|
73
|
+
continues the same run.
|
|
74
|
+
- It nudges at most three times per reply, and never again after a nudge that produced no tool
|
|
75
|
+
call other than `todo_write` or `finish`.
|
|
76
|
+
- It is silent for a reply with no todo list or a complete one, an aborted or failed reply, a
|
|
77
|
+
slice the guard ended, or a continuation another handler already requested.
|
|
78
|
+
- Each nudge is an `extension.notice` from `stop-gate`.
|
|
79
|
+
- It is deterministic: it reads the todo list and the declaration, never a model judgment.
|
|
80
|
+
2. **`finish`.** This is the one explicit way to stop with work open (`tools/finish.ts`):
|
|
81
|
+
- `blocked` or `needs_decision` with a reason, plus an optional `needs`;
|
|
82
|
+
- `done` is refused while any item is open;
|
|
83
|
+
- read-only and plan-safe.
|
|
84
|
+
3. **Honest stop codes.** A reply that settles with open items is `interrupted`, never `completed`:
|
|
85
|
+
- `needs_person` after a `finish` declaration;
|
|
86
|
+
- otherwise `unfinished`.
|
|
87
|
+
The runner (or the terminal extension) writes its checkpoint from evidence: done and next from the
|
|
88
|
+
todo list, blocked from the declaration, files and checks from the reply. Neither auto-continues;
|
|
89
|
+
the person continues the run. (A terminal reply that ended at its work-slice budget, not one of
|
|
90
|
+
these, continues in place since ADR-0070.)
|
|
91
|
+
4. **No model-written checkpoint.** `checkpoint_write` is removed. At a work-slice budget the guard
|
|
92
|
+
asks the model to stop and report, and the harness writes the checkpoint. A capability set pinned
|
|
93
|
+
before the removal gets `finish` in its place.
|
|
94
|
+
5. **One budget per reply.** The work-slice guard and the gate reset only on a person's message
|
|
95
|
+
(`before_agent_start` with `messageType: 'user'`). Pi emits `agent_start` for every continuation,
|
|
96
|
+
so resetting there gave every nudge, delivered subagent result or plan repair a fresh 320-call
|
|
97
|
+
budget.
|
|
98
|
+
6. **Exit ramps rewritten.**
|
|
99
|
+
- `role` names the only reasons to stop, and the gate.
|
|
100
|
+
- `TODO_GUIDANCE` asks for a list that is true at all times.
|
|
101
|
+
- `## What would make this complete` applies only when the work stopped short (blocked, needing
|
|
102
|
+
the person, or handed back by the guard), "never stop early in order to write this section".
|
|
103
|
+
- The `Progress` group explains the gate and `finish`.
|
|
104
|
+
- The terminal's launch tools now include `finish`, so its prompt says so.
|
|
105
|
+
7. **Subagent tool mismatch is visible.** `spawn_subagent` returns the child's effective `tools`, and
|
|
106
|
+
the read-only profiles say in their first line when a brief needs a tool they lack.
|
|
107
|
+
|
|
108
|
+
## Consequences
|
|
109
|
+
|
|
110
|
+
- A reply with open todos costs up to three more model requests before it is handed back. A reply
|
|
111
|
+
without a todo list costs nothing extra.
|
|
112
|
+
- A model can still stop with work open, but only by naming a blocker (`needs_person`) or by
|
|
113
|
+
exhausting the gate (`unfinished`). Both are visible in the record and offer Continue.
|
|
114
|
+
- Hosts must accept the two new stop codes (`10-server-protocol.md`). The external App needs a
|
|
115
|
+
release that shows Continue for them.
|
|
116
|
+
- The stable prefix changes once (`role`, `TODO_GUIDANCE`, `reporting`, `Progress`). Measured with
|
|
117
|
+
real requests only, under INV-PRM-8.
|
|
118
|
+
- A live terminal session keeps the code and pack it started with. The gate reaches it only after a
|
|
119
|
+
rebuild and a restart.
|
|
120
|
+
- **Measure:**
|
|
121
|
+
- the share of runs that end with open todos (baseline 81 of 207 `model_behaviour` runs);
|
|
122
|
+
- nudges per run (expected mostly 0–1; more than 3 in a row means the gate's test is wrong);
|
|
123
|
+
- the `unfinished` and `needs_person` rates.
|
|
124
|
+
|
|
125
|
+
## Alternatives considered
|
|
126
|
+
|
|
127
|
+
- **Widen `continueSlice` to `completed` runs with open todos** (STUDY-0004 option 2). Rejected for
|
|
128
|
+
the first layer: it starts a new run per continuation, needs `continuationOf` to reopen a
|
|
129
|
+
completed run, and does not cover the terminal, where the failing session ran. The gate keeps one
|
|
130
|
+
run and works on both surfaces.
|
|
131
|
+
- **Keep `checkpoint_write` and reword it.** Rejected: any always-available "record where you
|
|
132
|
+
stopped" tool is a sign-off. The harness already derives a better record from evidence.
|
|
133
|
+
- **A model-judged goal evaluator** (Claude Code `/goal`). Rejected, as in STUDY-0004: it adds a
|
|
134
|
+
model call per reply and judges only what the transcript shows.
|
|
135
|
+
- **Prompt only** (ADR-0068 as it stood). Rejected: the record shows the wording does not hold under
|
|
136
|
+
long tasks, and it cannot reach a live session.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0070
|
|
3
|
+
title: A terminal reply continues across work slices in place
|
|
4
|
+
status: accepted
|
|
5
|
+
created: 2026-10-31
|
|
6
|
+
updated: 2026-10-31
|
|
7
|
+
supersedes: partial — ADR-0069 (item 3, "neither auto-continues" for a budget-ended terminal reply), PROP-0041 (terminal replies hand every boundary to the person)
|
|
8
|
+
related:
|
|
9
|
+
- PROP-0041
|
|
10
|
+
- ADR-0069
|
|
11
|
+
---
|
|
12
|
+
# ADR-0070 — A terminal reply continues across work slices in place
|
|
13
|
+
|
|
14
|
+
> **Amended by [ADR-0075](ADR-0075-no-todo-gate.md):** the stop gate is removed; the slice guard
|
|
15
|
+
> still resumes a reply at its slice boundary.
|
|
16
|
+
|
|
17
|
+
## Context
|
|
18
|
+
|
|
19
|
+
A headless run that stops at its work-slice budget already continues on its own (`continueSlice`,
|
|
20
|
+
up to `maxSlices`). A terminal reply did not: at 320 tool calls or 60 minutes it settled
|
|
21
|
+
`slice_complete` and waited for the person. In a recorded two-hour design-system handoff the reply
|
|
22
|
+
was cut mid-command at step 221, sat idle nine minutes until the person typed "continue", and the
|
|
23
|
+
next request re-sent about 200k tokens uncached. The guard's own text already told the model "the
|
|
24
|
+
next slice continues from it", which was false in the terminal.
|
|
25
|
+
|
|
26
|
+
## Decision
|
|
27
|
+
|
|
28
|
+
1. **Continue in place.** When a terminal reply ends at its budget, `sliceContinuation`
|
|
29
|
+
(`sessions/workSlice.ts`) returns a continuation from Pi's `agent_before_settle`: a
|
|
30
|
+
`xingular-slice-continue` message naming the next open todo item, in the same run, so the cached
|
|
31
|
+
prompt stays warm. The counters and clock restart; compactions carry over, so a reply that keeps
|
|
32
|
+
compacting still ends.
|
|
33
|
+
2. **The same stops as `continueSlice`.** No continuation after a fruitless slice (no successful
|
|
34
|
+
`bash`, `edit` or `write`), a `finish` declaring `blocked` or `needs_decision`, a provider
|
|
35
|
+
failure, an abort, a plan reply, a todo list with every item done, or `maxSlices` (8 by default).
|
|
36
|
+
Then the reply settles `slice_complete` as before and the person decides.
|
|
37
|
+
3. **One checkpoint per slice.** Each boundary sends a harness-written `checkpoint` with its real
|
|
38
|
+
slice number and a notice; the heartbeat reports the live slice. A person's message starts again
|
|
39
|
+
at slice 1.
|
|
40
|
+
4. **Launch control.** `XINGULAR_WORK_SLICE=off` still removes the boundary; key=value pairs
|
|
41
|
+
(`maxToolCalls=15,maxSlices=3`, the run-policy fields and bounds) set a launch policy, mainly for
|
|
42
|
+
testing. A malformed value falls back to the defaults.
|
|
43
|
+
|
|
44
|
+
## Consequences
|
|
45
|
+
|
|
46
|
+
- A long terminal task runs up to eight slices without a person, and Esc still stops it at once.
|
|
47
|
+
- A continued terminal reply is one run record with several checkpoints, where a headless one is a
|
|
48
|
+
chain of runs; `sliceOf` keeps counting the headless chain.
|
|
49
|
+
- A reply at its slice boundary continues in the next slice; there is no todo gate (ADR-0075).
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0071
|
|
3
|
+
title: A completion check decides whether a reply may end; finish is removed
|
|
4
|
+
status: accepted (partly superseded by ADR-0072)
|
|
5
|
+
created: 2026-10-31
|
|
6
|
+
updated: 2026-11-01
|
|
7
|
+
supersedes: partial — ADR-0069 (the `finish` tool and the `needs_person` it declared)
|
|
8
|
+
superseded-by: partial — ADR-0072 (the check no longer runs on every reply; it checks a /goal claim only; there is now a /goal command)
|
|
9
|
+
related:
|
|
10
|
+
- ADR-0069
|
|
11
|
+
- ADR-0070
|
|
12
|
+
- STUDY-0004
|
|
13
|
+
---
|
|
14
|
+
# ADR-0071 — A completion check decides whether a reply may end; finish is removed
|
|
15
|
+
|
|
16
|
+
## Context
|
|
17
|
+
|
|
18
|
+
ADR-0069 added a deterministic todo gate and a `finish` tool. A live A/B with the Panisara account
|
|
19
|
+
on `openai-codex/gpt-6-luna` used the prompt "work for the handoff docs/handoffs/B-platform-and-api.md":
|
|
20
|
+
|
|
21
|
+
| Build | What happened |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Before ADR-0069 | The reply branched, edited `package.json`, hit an `npm install` failure, and stopped. It marked every todo item `completed` while its own reply said "B0 remains incomplete", so it settled `completed`. |
|
|
24
|
+
| With ADR-0069 | The reply stopped after 23 seconds through `finish(needs_decision)`, asking to "confirm I should start with B0 and create the worktree". The handoff already answers both. |
|
|
25
|
+
|
|
26
|
+
The `role` section was missing from both runs, because the runner did not pass `launch.standard`,
|
|
27
|
+
so the prompt layer was not tested.
|
|
28
|
+
|
|
29
|
+
The A/B showed three ways a reply stops while it could continue:
|
|
30
|
+
|
|
31
|
+
1. it ends with todo items open (the gate catches this);
|
|
32
|
+
2. it marks items done falsely (the gate cannot see this);
|
|
33
|
+
3. it stops to ask permission for something inside its authority, which `finish` turned into a
|
|
34
|
+
sanctioned exit.
|
|
35
|
+
|
|
36
|
+
Every harness studied keeps the agent doing the work from certifying its own early stop:
|
|
37
|
+
|
|
38
|
+
| Harness | Who decides the work may stop |
|
|
39
|
+
|---|---|
|
|
40
|
+
| Claude Code | A Stop hook, or the `/goal` evaluator: a separate model returning met / not met / impossible |
|
|
41
|
+
| Codex, Cursor, Amp | Stop hooks |
|
|
42
|
+
| OpenHands headless | Scripted auto-continue: "Please continue working on the task… Do NOT ask for more help" |
|
|
43
|
+
| Aider | Test exit codes |
|
|
44
|
+
| Anthropic long-running harness | Tests decide before a feature is marked passing |
|
|
45
|
+
|
|
46
|
+
`finish(blocked | needs_decision)` was the opposite: a self-declared exit.
|
|
47
|
+
|
|
48
|
+
## Decision
|
|
49
|
+
|
|
50
|
+
1. **Remove `finish`.** The model has no tool that ends or hands off its own work (INV-TOOL-9).
|
|
51
|
+
2. **Add the completion check** (`sessions/completionCheck.ts`, wired into `sessions/stopGate.ts`).
|
|
52
|
+
- **When it runs:** at Pi's `agent_before_settle`, when the todo list is closed or absent and the
|
|
53
|
+
reply made a work tool call (pure chat and one-line answers are never checked).
|
|
54
|
+
- **What it asks:** the run's own model (`ctx.modelRegistry.streamSimple`, reasoning `low`, a
|
|
55
|
+
fresh context and its own system prompt) judges the person's request against a clipped
|
|
56
|
+
transcript of this reply and its todo list. For a continuation, the request is the one behind
|
|
57
|
+
the chain.
|
|
58
|
+
- **`continue`:** the reply is sent back with a displayed `xingular-completion-check` message
|
|
59
|
+
carrying the reason and the next step.
|
|
60
|
+
- **`needs_person`:** the reply settles `interrupted` / `needs_person`, with the check's reason as
|
|
61
|
+
the checkpoint's `blocked`.
|
|
62
|
+
- **`done`:** the reply ends `completed`.
|
|
63
|
+
- **Limits:** it shares the todo gate's cap of three nudges per reply and the no-progress rule.
|
|
64
|
+
- **Recording:** its request is recorded in the run's usage.
|
|
65
|
+
- **Failure:** it fails open on any error.
|
|
66
|
+
- **The request is the goal.** There is no `/goal` command and no condition to write.
|
|
67
|
+
3. **Same model, low effort.** Chosen by the person over a cheaper model. The trade-off is that the
|
|
68
|
+
same model shares some blind spots with the doer. A separate system prompt, a fresh context
|
|
69
|
+
holding only the request, list and transcript, and no tools limit that.
|
|
70
|
+
4. **Prompt.** `role` names the decisions that are the agent's own and the only reasons to stop. It
|
|
71
|
+
says that a document the request points to is the request, and that a question the request or
|
|
72
|
+
files already answer is not a question for the person. In a person's own session, the `Progress`
|
|
73
|
+
group says replies are checked. The role budget is now 2,200 characters, so the role fits uncut
|
|
74
|
+
with the subagent paragraph.
|
|
75
|
+
5. **Kill switches.** `XINGULAR_STOP_GATE=off` and `XINGULAR_COMPLETION_CHECK=off` at launch, for
|
|
76
|
+
layer-by-layer experiments.
|
|
77
|
+
|
|
78
|
+
## Consequences
|
|
79
|
+
|
|
80
|
+
- A reply that did work costs one more model request when it ends, plus at most three nudges. A
|
|
81
|
+
reply with no tool calls costs nothing extra.
|
|
82
|
+
- False "done" lists and permission questions are answered by the check rather than reaching the
|
|
83
|
+
person. A real blocker still stops the reply, but a separate judgement decides it, and the record
|
|
84
|
+
says why.
|
|
85
|
+
- The faux model in tests must answer the check too, so the test setup switches it off by default
|
|
86
|
+
and the tests about it switch it on.
|
|
87
|
+
- **Measure, layer by layer**, with a live A/B on clean copies, 3 runs per arm:
|
|
88
|
+
- (A) the old harness;
|
|
89
|
+
- (B) the prompt only;
|
|
90
|
+
- (C) the prompt plus the todo gate;
|
|
91
|
+
- (D) everything.
|
|
92
|
+
|
|
93
|
+
Compare tool calls before the reply ends, false "completed" lists, permission-question stops,
|
|
94
|
+
nudges by layer, check verdicts and cost.
|
|
95
|
+
|
|
96
|
+
## Alternatives considered
|
|
97
|
+
|
|
98
|
+
- **Keep `finish` with a double check** (refuse the first `needs_decision`). Rejected: it still tells
|
|
99
|
+
the model there is a sanctioned way out, and asks it to insist.
|
|
100
|
+
- **A `/goal` command.** Rejected by the person: ordinary requests must keep going without one.
|
|
101
|
+
- **A cheaper judge model.** Not chosen. It would be cheaper and more independent; the person
|
|
102
|
+
preferred the run's own model.
|
|
103
|
+
- **Prompt only.** Rejected as the only layer: agent B ignored "dont stop" in the person's own
|
|
104
|
+
message, and a live session keeps the prompt it started with.
|