@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,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0048
|
|
3
|
+
title: A skill named anywhere in a message is required for that request
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-11-20
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0048: A skill named anywhere in a message is required for that request
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
|
|
12
|
+
- `$name` is a skill invocation at any word start in a message, not only as its first token. The
|
|
13
|
+
composer's palette opens at the caret and replaces only the token being typed; the rest of the
|
|
14
|
+
draft and its caret stay in place.
|
|
15
|
+
- Every `$name` that names a skill the session can load makes that skill required for the request.
|
|
16
|
+
The named skills travel as `Launch.requiredSkills`, and the prompt compiler renders them as the
|
|
17
|
+
dynamic `required-skills` section: the skill's text from the pinned variant, the directive to
|
|
18
|
+
follow it, and an honest line for a name the variant does not have. The shipped
|
|
19
|
+
`plugin-authoring` skill fills in when the variant has none.
|
|
20
|
+
- The section belongs to the request. `sessionLaunch` resends it like `references`, even when it is
|
|
21
|
+
identical to the previous snapshot.
|
|
22
|
+
- The terminal builds the same text with `requiredSkillsText` from Pi's loaded skills and appends it
|
|
23
|
+
as a hidden `xingular-required-skills` custom message. It no longer rewrites a leading `$name` to
|
|
24
|
+
`/skill:name`; the person's message reaches the model unchanged and the requirement is enforced at
|
|
25
|
+
every position.
|
|
26
|
+
- A required skill changes no tool and no permission: the run's callable set and the gate are
|
|
27
|
+
untouched. It is a prompt-level requirement, not a capability narrowing.
|
|
28
|
+
|
|
29
|
+
## Rationale
|
|
30
|
+
|
|
31
|
+
Pi expands only a leading `/skill:name`, so a mid-message skill was plain text and had no effect.
|
|
32
|
+
Moving the requirement into the request-scoped prompt text makes the same promise at every position,
|
|
33
|
+
keeps the stable prefix (and therefore the provider cache) intact, and gives the terminal and a host
|
|
34
|
+
one shared wording through `requiredSkillsText`.
|
|
35
|
+
|
|
36
|
+
## Consequences
|
|
37
|
+
|
|
38
|
+
A leading `$name` no longer depends on Pi's `/skill:name` expansion. The skill's text is delivered
|
|
39
|
+
once per request that names it, so repeating the same skill in several turns repeats its text in
|
|
40
|
+
native history; the model sees the most recent copy. The App's composer already inserts `$` chips
|
|
41
|
+
anywhere; its reference path now sends skills as `requiredSkills` rather than as pinned notes.
|
|
42
|
+
Skills that a variant does not contain are reported as unavailable rather than silently dropped.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# ADR-0050: Approved-window screenshot contract
|
|
2
|
+
|
|
3
|
+
## Decision
|
|
4
|
+
|
|
5
|
+
A host may supply `computer_screenshot` through the existing tool-provider extension point using
|
|
6
|
+
the Harness contract in `src/computer/screenshot.ts`. The backend must capture one currently
|
|
7
|
+
approved window and exclude the desktop, other windows and overlays, including overlapping ones.
|
|
8
|
+
If it cannot guarantee that scope it refuses without returning pixels; it never silently captures a
|
|
9
|
+
display instead. The adapter is opt-in, goes through the ordinary tool gate, and does not make
|
|
10
|
+
capture plan-mode safe. A host that also offers coordinate-based interactions interprets their
|
|
11
|
+
coordinates relative to the returned image pixels.
|
|
12
|
+
|
|
13
|
+
## Consequences
|
|
14
|
+
|
|
15
|
+
Browser screenshots remain a separate capability with their own tab isolation. The contract cannot
|
|
16
|
+
verify native backend isolation; each host must implement and test it. The existing macOS display
|
|
17
|
+
capture has not adopted this contract and is not evidence of approved-window isolation. The
|
|
18
|
+
standalone terminal has no such backend. The contract adds no automatic provider registration or
|
|
19
|
+
new extension point.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# ADR-0051: Revisioned terminal decision waits
|
|
2
|
+
|
|
3
|
+
The terminal needs timely approval and question updates while avoiding a control request every
|
|
4
|
+
100 ms in every idle session. The controller owns the pending inbox, so it exposes a private,
|
|
5
|
+
control-key-protected revisioned snapshot with a bounded wait. Every inbox mutation wakes waiters;
|
|
6
|
+
the frontend resynchronizes on reconnect. The existing immediate snapshot remains available.
|
|
7
|
+
|
|
8
|
+
The wait uses a separate socket request, so it does not block other terminal control calls.
|
|
9
|
+
Waits time out after 20 seconds and are woken on controller disposal. Client shutdown cancels its
|
|
10
|
+
request. No persisted state or public server protocol changes.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# ADR-0052: Per-profile and total subagent budgets
|
|
2
|
+
|
|
3
|
+
A run could start any number of children: `maxDepth` bounded nesting only. Run `90906235`
|
|
4
|
+
("Implement the plan: Safe screenshot capability", 2026-10-28) started 11 children in nine
|
|
5
|
+
minutes for a five-step plan — three spawns before the parent had read a file, five children that
|
|
6
|
+
returned no change, and two tasks retried as fresh children. The shape of delegation was left to
|
|
7
|
+
the prompt.
|
|
8
|
+
|
|
9
|
+
A run now starts only a bounded number of distinct child conversations. Foundation defaults: four
|
|
10
|
+
children in total, two `worker`, three `explorer`, one of any other named profile and one with no
|
|
11
|
+
profile. A host overrides them through `SessionRunInput.subagents` (`maxChildren`, `maxByProfile`,
|
|
12
|
+
`maxOther`, `maxUnprofiled`), so the terminal and the App receive the same defaults; every value
|
|
13
|
+
is an integer clamped to 0–50.
|
|
14
|
+
|
|
15
|
+
`Subagents.spawn` counts the run's recorded children in `subagents.json`, the children of the
|
|
16
|
+
parent runs it was continued from (`resumedFromRunId`), and slots reserved by concurrent calls. It
|
|
17
|
+
deduplicates a continuation to its first link, so continuing a stopped child uses no new slot,
|
|
18
|
+
while a child whose startup failed still counts. A refused spawn returns an `invalid_request`
|
|
19
|
+
tool result telling the model to do the work itself; it creates no run. `continue` bypasses the
|
|
20
|
+
check because it is the same child.
|
|
21
|
+
|
|
22
|
+
The budget is per run, not per conversation, so a long chat is not starved. It lives in the
|
|
23
|
+
foundation because it bounds what every application built on the harness may spend, and changing
|
|
24
|
+
it needs a release. A host that legitimately needs more children raises the limits for its
|
|
25
|
+
session; the spawn tool's description states the effective numbers.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0053
|
|
3
|
+
title: No repeated-work guard in the work slice
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-28
|
|
6
|
+
supersedes: ADR-0039 (targeted protections only)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# ADR-0053: No repeated-work guard in the work slice
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Remove the repeated-work rules from the shared work-slice guard (`src/sessions/workSlice.ts`). A
|
|
14
|
+
reply is no longer refused for calling the same tool with the same arguments three times, for
|
|
15
|
+
running a Bash check that failed twice, or for more than four successful `edit`/`write` results on
|
|
16
|
+
one path. Nothing ends a reply as `stuck`.
|
|
17
|
+
|
|
18
|
+
The bounds that remain are the configured tool-call, minute and new-token budget and the
|
|
19
|
+
third-compaction thrash rule, both of which still ask for a checkpoint handoff and end the reply on
|
|
20
|
+
further calls. A budget-ended reply is `interrupted` with terminal reason `slice_complete` in both
|
|
21
|
+
surfaces. Slice continuation, the plan-research child bound and the model-written `blocked`
|
|
22
|
+
checkpoint gate are unchanged.
|
|
23
|
+
|
|
24
|
+
`checkpointReasonSchema` keeps `stuck` so stored `checkpoint` events stay readable and the
|
|
25
|
+
`checkpoint_write` argument set does not change; nothing produces it any more.
|
|
26
|
+
|
|
27
|
+
## Rationale
|
|
28
|
+
|
|
29
|
+
The rules fired on calls that are ordinary work. Reading a file again, editing one file several
|
|
30
|
+
times, or re-running a check after a partial fix are not loops, and a refusal there costs a reply
|
|
31
|
+
plus the checkpoint and continuation round trip. Tool arguments are not a reliable signal of a loop:
|
|
32
|
+
a changed argument is different work, an identical argument can be legitimate (a poll, a re-read
|
|
33
|
+
after an edit, a retried check), and the guard cannot tell them apart. The reply budget already
|
|
34
|
+
bounds a model that never stops, which is the failure the guard existed to catch; the compaction
|
|
35
|
+
rule covers the other observed thrash.
|
|
36
|
+
|
|
37
|
+
## Consequences
|
|
38
|
+
|
|
39
|
+
A reply may repeat any call until its budget, so a genuinely stuck model runs up to 320 calls or 60
|
|
40
|
+
minutes instead of being stopped earlier. No run-event schema, stored-data layout, server method or
|
|
41
|
+
App presentation changes: `stuck` remains a readable checkpoint reason and `stalled` remains the
|
|
42
|
+
watchdog's reason for a silent run. This supersedes the targeted repeated-call, repeated-failing-check
|
|
43
|
+
and edit-churn protections in [ADR-0039](ADR-0039-progress-aware-stall-guards.md); the rest of that
|
|
44
|
+
decision, including the bounded plan-research child, stands. See also
|
|
45
|
+
[PROP-0041](../architecture/proposals/PROP-0041-bounded-work-slices.md).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0054
|
|
3
|
+
title: A live terminal reply reports a heartbeat and ends when it stops making progress
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-28
|
|
6
|
+
proposal: PROP-0041
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# ADR-0054: A live terminal reply reports a heartbeat and ends when it stops making progress
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
A structured run emits a `heartbeat` every 30 seconds while it works, and the run sweep uses it to
|
|
14
|
+
settle a reply that stopped reporting (INV-RUN-14). A terminal reply emitted none: the extension sent
|
|
15
|
+
tool, message and usage telemetry, but never a heartbeat. Two consequences followed.
|
|
16
|
+
|
|
17
|
+
The sweep could not tell a wedged reply from one written before heartbeats existed, so it waited the
|
|
18
|
+
full 30-minute silence window, and then recorded `owner_gone` — "the owner process is gone" — while
|
|
19
|
+
the owner was alive and its turn was still pending. On 2026-10-28 a `deepseek-v4.1-flash` request in
|
|
20
|
+
a terminal session produced a partial tool call and then nothing for 38 minutes; a request earlier in
|
|
21
|
+
the same session stayed open for 2 h 13 min and ended only when the person typed the next message.
|
|
22
|
+
The run showed as `running` the whole time.
|
|
23
|
+
|
|
24
|
+
## Decision
|
|
25
|
+
|
|
26
|
+
A terminal reply reports a `heartbeat` every 30 seconds for as long as its turn is live, with the
|
|
27
|
+
counters its work slice already keeps: steps, elapsed time, last tool, compactions, slice and the
|
|
28
|
+
call budget. The controller records it on the active run like any other telemetry, so the sweep's
|
|
29
|
+
existing five-minute heartbeat rule now applies to terminal replies.
|
|
30
|
+
|
|
31
|
+
A heartbeat proves the turn is alive, not that it is working, so the terminal controller also ends a
|
|
32
|
+
reply that produced no event other than heartbeats for fifteen minutes. It does that by asking the
|
|
33
|
+
native turn to abort through the command the extension already polls; the run records `interrupted`
|
|
34
|
+
with reason `stalled`. A reply whose oldest running tool has run for thirty minutes is ended the same
|
|
35
|
+
way. A reply with an unanswered approval or question is never cut short, because it is waiting on the
|
|
36
|
+
person, not on the model.
|
|
37
|
+
|
|
38
|
+
## Rationale
|
|
39
|
+
|
|
40
|
+
The two windows are different questions. Five minutes of silence with no heartbeat means the process
|
|
41
|
+
stopped reporting, which the sweep settles; fifteen minutes of heartbeats with no progress means the
|
|
42
|
+
process is alive but the reply is not moving, which only the controller can end. Keeping both avoids
|
|
43
|
+
weakening the rule that protects a live but quiet turn: a long tool or a long reasoning stream still
|
|
44
|
+
reports its heartbeat, and the person answering a decision is never timed out.
|
|
45
|
+
|
|
46
|
+
## Consequences
|
|
47
|
+
|
|
48
|
+
A model request that never returns is ended after fifteen minutes instead of running for hours, and
|
|
49
|
+
the record carries a reason that is true. Terminal replies now write one small event every 30
|
|
50
|
+
seconds (about 60 KB an hour), the same as a bounded structured reply. No tool, permission, run-event
|
|
51
|
+
schema or stored-data layout changes: `heartbeat` already exists in the stream, and the reason
|
|
52
|
+
`stalled` is already part of the contract.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0055
|
|
3
|
+
title: An attended plan run repairs a missing plan block once, in the same run
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-28
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0055: An attended plan run repairs a missing plan block once, in the same run
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
Plan mode ends with a `<proposed_plan>` block that both the terminal and the App parse into a plan
|
|
13
|
+
card and the Implement choice. The block is an instruction to the model, not a schema, and a model
|
|
14
|
+
can omit it while still writing a correct plan body. On 2026-10-28 two attended plan runs in one
|
|
15
|
+
terminal session did exactly that: the plan instructions and the plan-only tool set were present,
|
|
16
|
+
the model's reasoning said it would tag the plan, and the final text had no block. The renderer then
|
|
17
|
+
showed ordinary assistant text with no card, no plan choice and no Implement.
|
|
18
|
+
|
|
19
|
+
The tag contract is deliberately text-only: it keeps the plan tool list and the cached prompt prefix
|
|
20
|
+
unchanged when the mode switches. Replacing it with a plan tool or a plan artifact would change that
|
|
21
|
+
boundary, the protocol and both renderers for a rare omission.
|
|
22
|
+
|
|
23
|
+
## Decision
|
|
24
|
+
|
|
25
|
+
When a top-level attended plan run ends without a complete plan block, the harness makes one hidden
|
|
26
|
+
format-repair turn in the same run. The custom message is not displayed, carries no new user
|
|
27
|
+
request, and asks the model to re-send its own plan, unchanged, in one complete block; a model that
|
|
28
|
+
was asking for input answers `No plan:` instead. The repair is attempted once, uses the same plan
|
|
29
|
+
tool set and gate, and is skipped for plan-research children, commands, probes, improvers,
|
|
30
|
+
reflections and other unattended runs.
|
|
31
|
+
|
|
32
|
+
If the repair also fails, the plan run still completes: the original reply stays in the transcript,
|
|
33
|
+
the harness records an `extension.notice` warning, and the terminal shows a warning instead of a
|
|
34
|
+
plan choice. The App shows the repaired card when the repair succeeds and otherwise keeps the
|
|
35
|
+
untagged reply.
|
|
36
|
+
|
|
37
|
+
## Rationale
|
|
38
|
+
|
|
39
|
+
The repair is the smallest change at the ownership layer that preserves the existing plan contract and
|
|
40
|
+
both surfaces. It does not fabricate a plan or guess where one starts, and it leaves the plan tool
|
|
41
|
+
list, the prompt prefix and the run event schema unchanged. Asking the model to re-send its own
|
|
42
|
+
answer is cheaper and less disruptive than re-planning, and a single bounded attempt keeps the extra
|
|
43
|
+
cost and latency predictable.
|
|
44
|
+
|
|
45
|
+
## Consequences
|
|
46
|
+
|
|
47
|
+
An attended plan run may make one additional model request and produce a second assistant message;
|
|
48
|
+
the first untagged reply remains visible. The extra request is counted in the run's usage, and the
|
|
49
|
+
run record, status and event types are unchanged. If the repair proves insufficient, a structured
|
|
50
|
+
plan tool or artifact remains the durable follow-up, but it changes the tool list, the cached prefix
|
|
51
|
+
and both renderers and is not part of this decision.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0056
|
|
3
|
+
title: Remote control connects a phone directly to the terminal session, with sealed frames
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-28
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0056: Remote control connects a phone directly to the terminal session, with sealed frames
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
A person wants to keep a terminal session going from a phone or iPad, the way Claude Code's
|
|
13
|
+
`/remote-control` (`/rc`) does: the session keeps running on the computer, and the phone sends
|
|
14
|
+
messages, watches the reply, stops it and answers approvals. Claude Code reaches the phone through
|
|
15
|
+
Anthropic's cloud relay. The harness has no cloud service, and every listener it had bound only
|
|
16
|
+
127.0.0.1.
|
|
17
|
+
|
|
18
|
+
## Decision
|
|
19
|
+
|
|
20
|
+
`/remote-control` (`/rc`) starts a small HTTP server in the `xagent` parent process, bound to one
|
|
21
|
+
address: the computer's Tailscale address when it has one, otherwise its private Wi-Fi or LAN
|
|
22
|
+
address. The terminal shows a QR code for a pairing link whose key is in the URL fragment. A phone
|
|
23
|
+
that opens it asks to pair; the person at the terminal allows it; the phone receives its own key.
|
|
24
|
+
The phone then becomes a second person at the terminal, with the same powers and the same paths:
|
|
25
|
+
`Terminals.send` and the terminal controller's interrupt and decision calls (page 15).
|
|
26
|
+
|
|
27
|
+
Every request and event body is a NaCl `secretbox` frame under the link or device key, with a
|
|
28
|
+
replay counter. All keys live in memory and end with the session.
|
|
29
|
+
|
|
30
|
+
## Rationale
|
|
31
|
+
|
|
32
|
+
- **Direct, not relayed.** A relay is a service to build, run and trust. A direct connection
|
|
33
|
+
needs nothing outside the computer, and Tailscale covers the "away from home" case with its own
|
|
34
|
+
end-to-end encryption.
|
|
35
|
+
- **Sealed frames, not TLS.** A LAN page cannot have a trusted certificate, and a self-signed one
|
|
36
|
+
shows a warning a person learns to click through. Over plain HTTP the browser has no WebCrypto,
|
|
37
|
+
so the page uses `tweetnacl`, served beside it. The key never crosses the network: it reaches the
|
|
38
|
+
phone in the QR code's fragment.
|
|
39
|
+
- **Confirmation at the terminal.** A photographed QR code is not enough to pair; the person at the
|
|
40
|
+
terminal sees the device and allows it.
|
|
41
|
+
- **In-memory keys.** Nothing to revoke later, nothing on disk (INV-ACC-3), and the link dies with
|
|
42
|
+
the session.
|
|
43
|
+
|
|
44
|
+
## Consequences
|
|
45
|
+
|
|
46
|
+
- New harness module `src/remote/`, a new spec page (15), and two dependencies: `tweetnacl` (also
|
|
47
|
+
served to the phone) and `uqr` (QR encoding).
|
|
48
|
+
- The terminal extension now reports streamed assistant text, batched, as `delta` telemetry, and
|
|
49
|
+
terminal runs record `message.delta` events the way structured runs already do.
|
|
50
|
+
- An attacker who can change LAN traffic could serve a changed page to the phone; the terminal
|
|
51
|
+
confirmation and the advice to use Tailscale on untrusted networks are the mitigation.
|
|
52
|
+
- The App presents remote control only as a stub for now (`PAR-018`): its sessions are not
|
|
53
|
+
terminal sessions.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0057
|
|
3
|
+
title: Structured outcomes for attended plan requests
|
|
4
|
+
status: Accepted
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ADR-0057: Structured outcomes for attended plan requests
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
A reply asking for a decision is not a finished plan. ADR-0055 prescribes one repair for a missing
|
|
12
|
+
plan block, but the prior server parser recognized only `<proposed_plan>` and could treat a request
|
|
13
|
+
for input as a format failure. The terminal did not run that repair. D-22 records the prior
|
|
14
|
+
implementation gap and documentation ambiguity.
|
|
15
|
+
|
|
16
|
+
## Decision
|
|
17
|
+
|
|
18
|
+
An attended top-level plan reply has one classified outcome: `plan_ready` for a complete existing
|
|
19
|
+
`<proposed_plan>` block, `needs_input` for a complete `<plan_clarification>` block containing the
|
|
20
|
+
needed question or explanation, and `invalid` for missing, incomplete, conflicting or malformed
|
|
21
|
+
outcome blocks. Only `plan_ready` permits a plan card and Implement. `needs_input` is displayed as
|
|
22
|
+
input needed, never as an actionable plan. The same classification and bounded repair belong to the
|
|
23
|
+
Harness and apply to both server and terminal, rather than independent surface heuristics.
|
|
24
|
+
|
|
25
|
+
When `ask_user` is available, it blocks for the person's answer and the same run continues; the
|
|
26
|
+
clarification outcome describes input still needed at the end, including when interaction is not
|
|
27
|
+
available. The model must not invent a decision. For an eligible run ending in `invalid`, one hidden
|
|
28
|
+
repair turn in the same run requests a valid outcome without changing substance or inventing
|
|
29
|
+
answers. Either valid outcome ends repair. If repair fails, retain the original text, complete with
|
|
30
|
+
a warning, and offer no Implement. Skip repair for unattended or child runs, commands, aborts,
|
|
31
|
+
errors and work-slice termination. The plan gate remains in force.
|
|
32
|
+
|
|
33
|
+
## Compatibility and consequences
|
|
34
|
+
|
|
35
|
+
This supersedes ADR-0055's plan-only repair criterion, not its bounded same-run mechanism. Existing
|
|
36
|
+
`<proposed_plan>` output and cards remain valid; no new tool, mandatory event type, changed stable
|
|
37
|
+
prompt prefix or widened permissions are required. Older clients may show clarification as ordinary
|
|
38
|
+
text, but must not interpret it as a plan. Historical untagged replies remain visible without being
|
|
39
|
+
fabricated into plans. D-22 is resolved by shared classification and bounded repair on both paths.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0058
|
|
3
|
+
title: Ask-user-only plan clarification
|
|
4
|
+
status: Accepted
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ADR-0058: Ask-user-only plan clarification
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
ADR-0057 allowed a final `<plan_clarification>` containing a question or explanation. That creates
|
|
12
|
+
another clarification channel alongside the blocking `ask_user` tool and can end a run instead of
|
|
13
|
+
continuing planning after the person's answer.
|
|
14
|
+
|
|
15
|
+
## Decision
|
|
16
|
+
|
|
17
|
+
For new attended top-level plan final replies, the shared server and terminal classification is
|
|
18
|
+
`plan_ready`, `blocked`, or `invalid`. A complete `<proposed_plan>` is `plan_ready` and alone offers
|
|
19
|
+
a plan card and Implement. If a required user decision cannot be obtained because `ask_user` is
|
|
20
|
+
unavailable, the reply is `blocked`: explain the blocker without inventing the decision, asking a
|
|
21
|
+
free-text question, or offering Implement. Malformed, missing or conflicting outcomes are `invalid`.
|
|
22
|
+
New final replies do not use `<plan_clarification>` or free-text questions for clarification.
|
|
23
|
+
|
|
24
|
+
When `ask_user` is available and clarification is needed, call it: it blocks the active run for the
|
|
25
|
+
answer, after which the same run continues. The existing one bounded hidden repair for an eligible
|
|
26
|
+
`invalid` outcome remains in the same run and under the same plan gate; it may call `ask_user` and
|
|
27
|
+
wait for the answer. If repair remains invalid, retain the original reply, warn and offer no
|
|
28
|
+
Implement. The existing repair exclusions remain in force.
|
|
29
|
+
|
|
30
|
+
## Compatibility and consequences
|
|
31
|
+
|
|
32
|
+
This supersedes ADR-0057's `needs_input` and `<plan_clarification>` final-outcome decision, not its
|
|
33
|
+
shared classification, bounded repair or other safeguards. Old transcripts remain intact and
|
|
34
|
+
visible, including historical clarification blocks; they are not rewritten or promoted into plans.
|
|
35
|
+
Existing plan cards, run events, permissions and the cached prompt boundary remain compatible. This
|
|
36
|
+
is an approved contract; implementation and surface acceptance must be verified separately.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0059
|
|
3
|
+
title: Record structured refusal and run stop evidence
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-29
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0059: Record structured refusal and run stop evidence
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
A stopped or incomplete run can result from a guardrail, a lifecycle limit, a provider failure, or
|
|
13
|
+
model behaviour. Human-readable tool results and terminal reasons alone do not reliably distinguish
|
|
14
|
+
these cases, and matching their text binds diagnosis to wording. Historical records cannot establish
|
|
15
|
+
an outcome code that was never recorded.
|
|
16
|
+
|
|
17
|
+
## Decision
|
|
18
|
+
|
|
19
|
+
The foundation records a `tool.refused` event for a gate or work-slice refusal, with the call id,
|
|
20
|
+
tool name, bounded reason and a fixed refusal code. It keeps the existing tool response text. The
|
|
21
|
+
terminal relays the same evidence on a best-effort basis; an unreachable controller cannot record its
|
|
22
|
+
own loss. Refusals within a running tool are not gate events.
|
|
23
|
+
|
|
24
|
+
A settled run records a nullable `terminalCode` separate from its human-readable `terminalReason`.
|
|
25
|
+
Interrupted status events may carry a code; failed events retain their existing failure code, mapped
|
|
26
|
+
to a stop code by the run store. Recovery records its own known cause. Older records without a code
|
|
27
|
+
remain unknown, not a guessed cause. Trajectory search and the terminal trajectory view expose the
|
|
28
|
+
recorded evidence. Compaction events include available measurements rather than estimates.
|
|
29
|
+
|
|
30
|
+
## Consequences
|
|
31
|
+
|
|
32
|
+
Diagnostic clients can distinguish recorded causes without parsing prose, while still examining the
|
|
33
|
+
original evidence. Stop codes describe why a run settled, not whether the requested work was actually
|
|
34
|
+
finished. Callers must accept the added event and optional record fields, and historical runs retain
|
|
35
|
+
less precise evidence. The foundation remains the only writer of run records and events.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0060
|
|
3
|
+
title: Approvals are controls, not messages
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-29
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0060: Approvals are controls, not messages
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
The gate already pauses a call that needs a person, reports `waiting_for_approval`, and resumes the
|
|
13
|
+
same call when it is allowed. But the compiled guidance said an outside file target "requires
|
|
14
|
+
one-call approval", and a denial said "Ask how they would like to proceed". A model read the first as
|
|
15
|
+
a prerequisite and ended its turn: the person then had to type an approval in a message before the
|
|
16
|
+
work could continue. Typed permission is neither recorded as a decision nor bound to the call it
|
|
17
|
+
authorizes, and it leaves the run idle while a control could have resolved it.
|
|
18
|
+
|
|
19
|
+
## Decision
|
|
20
|
+
|
|
21
|
+
An approval is a control a person operates, never a permission asked for or granted in a message.
|
|
22
|
+
The gate pauses the exact call, the run reports `waiting_for_approval`, Allow resumes that same call
|
|
23
|
+
in the same turn, and Deny returns a tool result on the still-running turn. The compiled prompt
|
|
24
|
+
states this rule and tells the model to call the tool rather than ask for permission, end its turn to
|
|
25
|
+
wait, or report a task as blocked before trying it. Denial text tells the model to continue instead
|
|
26
|
+
of asking again. Surfaces present a control: the terminal's decision dock and keypress, the App's
|
|
27
|
+
dock above the composer with an approval notification, and a paired phone's choices. A surface that
|
|
28
|
+
cannot ask a person refuses the call; it never waits for a message.
|
|
29
|
+
|
|
30
|
+
The boundary still applies before the effect. This decision changes who speaks, not when a call runs:
|
|
31
|
+
nothing outside the workspace changes before the click, and Full Permission remains the explicit
|
|
32
|
+
standing bypass for eligible runs.
|
|
33
|
+
|
|
34
|
+
## Consequences
|
|
35
|
+
|
|
36
|
+
The run survives the wait and resumes in place, and no approval depends on prose a person typed.
|
|
37
|
+
Clients must present a control for every request they surface (`INV-GATE-9`). A host that cannot
|
|
38
|
+
present one must refuse the call, and the model must treat that refusal as the tool result rather
|
|
39
|
+
than asking again. Recorded decisions, standing approvals and the refusal codes stay unchanged; only
|
|
40
|
+
the wording the model reads after a denial changed.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# ADR-0061 — Strict owner namespaces for plugin commands and prompts
|
|
2
|
+
|
|
3
|
+
Status: Accepted; implementation and surface acceptance not certified.
|
|
4
|
+
Amends: [ADR-0031](ADR-0031-plugin-command-owner-namespaces.md) and
|
|
5
|
+
[ADR-0034](ADR-0034-first-class-harness-terminal-commands.md) for plugin-owned routes.
|
|
6
|
+
Related: [06 Plugins and capabilities](../architecture/06-plugins-and-capabilities.md),
|
|
7
|
+
[10 Server protocol](../architecture/10-server-protocol.md),
|
|
8
|
+
[11 Terminal](../architecture/11-terminal.md), [parity register](../parity.md).
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
An owner-qualified extension command can coexist with a bare package prompt or alias, leaving
|
|
13
|
+
ownership unclear and allowing discovery order to decide what a person invokes. Package templates
|
|
14
|
+
and extension commands need one predictable namespace without changing standalone prompts, skills
|
|
15
|
+
or first-class Harness commands.
|
|
16
|
+
|
|
17
|
+
## Decision
|
|
18
|
+
|
|
19
|
+
Plugin-owned commands, including plugin-owned prompt templates, use
|
|
20
|
+
`/<owner-prefix>:<name>` only. No bare plugin command or template alias is offered in listing,
|
|
21
|
+
completion or dispatch. Existing core commands and their core aliases remain core; standalone
|
|
22
|
+
prompt templates retain their existing forms, and `/skill:<name>` remains reserved for skills.
|
|
23
|
+
Built-in default commands continue to use their namespace roots.
|
|
24
|
+
|
|
25
|
+
A package may set `harness.defaultPrompt` to the name of its own prompt template. The explicit,
|
|
26
|
+
valid and unambiguous selection makes `/<owner-prefix>:` invoke that template; no root is inferred
|
|
27
|
+
from an undeclared, missing, ambiguous or foreign template. Prefixes remain stable owner identities,
|
|
28
|
+
using `harness.commandPrefix` or the existing normalized fallback. When owners claim the same
|
|
29
|
+
prefix, or contributions within one owner claim the same route, including a template and an
|
|
30
|
+
extension command, the collision fails closed with owner diagnostics; discovery order never selects
|
|
31
|
+
a winner. The same rules apply to `commands.list`, completion, recognition and dispatch.
|
|
32
|
+
|
|
33
|
+
## Consequences
|
|
34
|
+
|
|
35
|
+
Plugin users must update bare plugin invocations to owner-qualified routes; standalone templates,
|
|
36
|
+
skills and core command routes are not renamed. Ownership does not grant attachment, code trust or
|
|
37
|
+
permission. The decision changes command routing and discovery, not protocol framing or persisted
|
|
38
|
+
run data. A listing is not evidence of surface acceptance. This record approves the contract; it
|
|
39
|
+
is not evidence that source or either surface has implemented it.
|
|
40
|
+
|
|
41
|
+
Page 14 states the same package-versus-standalone distinction.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0062
|
|
3
|
+
title: A launch signs in as the account state it is given, and development shares the installed one
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-29
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-0062: A launch signs in as the account state it is given, and development shares the installed one
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
Account identity was welded to the launch's state directory: a registry, one agent folder per
|
|
13
|
+
account and the owner-only `secrets.json` that holds their credentials, all under `<state dir>`.
|
|
14
|
+
`npm run dev` passes its own `~/.xingular-harness-dev/state`, so it started with no accounts, and a
|
|
15
|
+
person had to sign in again — a second OAuth flow, a second set of tokens and, for a subscription
|
|
16
|
+
provider, a second live sign-in — before the development terminal could run anything. The
|
|
17
|
+
installed `xagent` on the same machine had the sign-in the person actually wanted to use.
|
|
18
|
+
|
|
19
|
+
Signing in twice is not just friction. A subscription provider's OAuth flow rotates credentials,
|
|
20
|
+
and two independently signed-in copies are two sessions the provider sees; keeping them identical
|
|
21
|
+
by hand is not something a person can do.
|
|
22
|
+
|
|
23
|
+
## Decision
|
|
24
|
+
|
|
25
|
+
The account identity of a launch is a folder, not a fixed child of its state directory:
|
|
26
|
+
|
|
27
|
+
- `HarnessOptions.accountsDir` selects where the registry, the per-account Pi agent folders and
|
|
28
|
+
their shared settings live. It defaults to `<state dir>/accounts`, so every existing caller is
|
|
29
|
+
unchanged.
|
|
30
|
+
- The standalone terminal accepts `--account-state <dir>`, which uses that state directory's
|
|
31
|
+
`accounts/` folder and its `secrets.json`. A launch that shares an account folder must use the
|
|
32
|
+
secret store those account ids belong to; both halves travel together.
|
|
33
|
+
- `scripts/dev.mjs` passes `--account-state ~/.xingular-harness/state` unless the person names
|
|
34
|
+
another one, so the development terminal signs in as the installed command's accounts and a
|
|
35
|
+
single sign-in serves both launches.
|
|
36
|
+
|
|
37
|
+
Development keeps its own data root, state directory, approvals, plugin trust and connections.
|
|
38
|
+
Only the account identity is shared.
|
|
39
|
+
|
|
40
|
+
## Rationale
|
|
41
|
+
|
|
42
|
+
- **One identity, not a copy.** Two credential files that must stay equal is the failure this
|
|
43
|
+
removes. The registry, the account folders and the credential file are read and written by both
|
|
44
|
+
launches through the same paths and the same credential lock, which is the concurrency two
|
|
45
|
+
windows of the installed command already have.
|
|
46
|
+
- **The option belongs to the launch, not to a profile field.** A profile selects defaults; a
|
|
47
|
+
launch that wants another state's accounts names that state explicitly, and the terminal prints
|
|
48
|
+
nothing implicit about it. The host (`serve`) keeps deciding its own account identity, as the
|
|
49
|
+
App does with its own keychain.
|
|
50
|
+
- **The development launcher decides the sharing.** Keeping data and approvals separate was the
|
|
51
|
+
point of `~/.xingular-harness-dev`; signing in twice was the accident. Sharing only the identity
|
|
52
|
+
keeps both properties, and `--account-state` restores full isolation in one flag.
|
|
53
|
+
|
|
54
|
+
## Consequences
|
|
55
|
+
|
|
56
|
+
- A credential written by either launch is the credential of the other. A sign-out in development
|
|
57
|
+
signs out the installed command too; this is the same account, not a sandbox of it. Pi's native
|
|
58
|
+
sessions under each account folder are shared the same way, while run records stay in each
|
|
59
|
+
launch's own data root.
|
|
60
|
+
- Both launches write the one `secrets.json` under the same lock directory, and the one
|
|
61
|
+
`accounts.json` through atomic replacement. That is the concurrency the installed command
|
|
62
|
+
already allows between two of its own windows.
|
|
63
|
+
- Accounts created in the dev state before this change are not migrated. Their registry, folders
|
|
64
|
+
and credentials remain under `~/.xingular-harness-dev/state`; signing in to the shared identity
|
|
65
|
+
is the deliberate replacement.
|
|
66
|
+
- `docs/architecture/09-accounts-and-connectors.md`, `11-terminal.md` and `12-storage.md` state the
|
|
67
|
+
selected account folder rather than a fixed `<state dir>/accounts`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0063
|
|
3
|
+
title: Actionable handoffs for unfinished work
|
|
4
|
+
status: accepted
|
|
5
|
+
created: 2026-10-30
|
|
6
|
+
updated: 2026-10-30
|
|
7
|
+
---
|
|
8
|
+
# ADR-0063 — Actionable handoffs for unfinished work
|
|
9
|
+
|
|
10
|
+
> **Amended by [ADR-0069](ADR-0069-stop-gate-and-finish.md):** this guidance now applies only when the work stopped on a blocker or a decision (`finish`), never as a way to end a reply with work left.
|
|
11
|
+
|
|
12
|
+
## Context and decision
|
|
13
|
+
|
|
14
|
+
A reply can accurately report blockers yet leave the person unable to tell what decision or
|
|
15
|
+
action would resolve them. [PROP-0051](../architecture/proposals/PROP-0051-unfinished-run-handoff.md)
|
|
16
|
+
records an example. Extend the stable, harness-owned reporting guidance: when work remains
|
|
17
|
+
unfinished, identify the concrete decision the person must make or the next action and its owner
|
|
18
|
+
for each material blocker. Do not simply restate the blocker or invent a human decision.
|
|
19
|
+
|
|
20
|
+
This preserves [ADR-0008](ADR-0008-flexible-reporting-guidance.md): use only helpful structure,
|
|
21
|
+
without a fixed heading. It does not change approval controls, run status or the stable/dynamic
|
|
22
|
+
prompt boundary; no live todo state is injected into the system prompt.
|
|
23
|
+
|
|
24
|
+
## Consequences
|
|
25
|
+
|
|
26
|
+
- All packs receive the same conditional guidance; completed replies need no handoff boilerplate.
|
|
27
|
+
- The stable prefix changes; cache behavior requires real-request measurement under INV-PRM-8.
|
|
28
|
+
- This is model guidance, not enforced behavior; tests cannot guarantee the model follows it.
|
|
29
|
+
|
|
30
|
+
## Alternatives considered
|
|
31
|
+
|
|
32
|
+
- Only list blockers: rejected because it can leave the person without an actionable next step.
|
|
33
|
+
- Require a fixed heading or inject live todo state: rejected to preserve flexible reporting and
|
|
34
|
+
the stable prompt boundary.
|