@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,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0019
|
|
3
|
+
title: Harness-owned contextual side questions across surfaces
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-24
|
|
6
|
+
updated: 2026-10-24
|
|
7
|
+
affects: [INV-RUN-1, INV-RUN-3, INV-RUN-5, INV-GATE-1, INV-PLG-1, INV-PLG-5, INV-CAP-1, INV-SRV-1, INV-SRV-2, INV-PAR-1, INV-PAR-2, 02-sessions-and-runs.md, 06-plugins-and-capabilities.md, 07-tools-and-the-gate.md, 10-server-protocol.md, 11-terminal.md, 14-surfaces-and-parity.md, 12-storage.md, ADR-0023-contextual-side-question-runs.md]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0019: Harness-owned contextual side questions across surfaces
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
`/btw` currently has two different execution paths. The terminal constructs a direct, in-memory Pi
|
|
15
|
+
session in `src/terminal/tui/sideQuestion.ts`; it supplies at most six visible turns and 6,000
|
|
16
|
+
characters, names of tools called, but no tool inputs or results. It has no Harness run record. The
|
|
17
|
+
App assembles a different bounded snapshot and starts a separate, tracked `sessions.run` with
|
|
18
|
+
trigger `side-question` (`App/docs/features/FEAT-0014-side-questions.md`). The parity register calls
|
|
19
|
+
these one capability but lists no Harness owner method (`docs/parity.md`).
|
|
20
|
+
|
|
21
|
+
The terminal side model therefore answers from a short excerpt, lacks the main run's instructions
|
|
22
|
+
and evidence, and is explicitly told to be brief. The two surfaces also have different observability
|
|
23
|
+
and lifecycle. A question about work outside the repository can be answered incorrectly when that
|
|
24
|
+
work is absent from the excerpt, even if the main run already read it.
|
|
25
|
+
|
|
26
|
+
## Affected rules
|
|
27
|
+
|
|
28
|
+
- **INV-RUN-1:** A side question pins its selected account and an empty capability set, with no
|
|
29
|
+
variant (`variantVersion: null`), because it uses only fixed Harness instructions and a redacted
|
|
30
|
+
projection supplied by or read from the main run.
|
|
31
|
+
- **INV-RUN-3:** Parent run events used as context have already been validated, redacted and
|
|
32
|
+
persisted. Side-question events use the same contract.
|
|
33
|
+
- **INV-RUN-5:** Side questions use a dedicated unattended launch: no extensions, context files,
|
|
34
|
+
variant code, connectors, providers, subagents, or Harness tools.
|
|
35
|
+
- **INV-GATE-1:** A side-question run has no tools to call; this is enforced by the Harness.
|
|
36
|
+
- **INV-PLG-1 / INV-PLG-5:** The Harness remains the only loader. Its fixed side-question
|
|
37
|
+
instruction is attributed to a Harness-owned plugin descriptor.
|
|
38
|
+
- **INV-CAP-1:** The side run freezes an empty tool, connector, and contribution set.
|
|
39
|
+
- **INV-SRV-1/2:** Hosts call an additive Harness service through the server contract and the same
|
|
40
|
+
in-process API.
|
|
41
|
+
- **INV-PAR-1/2:** The Harness owns the capability; terminal and host surfaces use it.
|
|
42
|
+
|
|
43
|
+
## Proposal
|
|
44
|
+
|
|
45
|
+
1. Add a generic Harness side-question service with start, read and interrupt operations. It is
|
|
46
|
+
callable by the standalone terminal and embedding hosts. Each question is an independent
|
|
47
|
+
run with a new native history identity, ordinary run records, event validation and redaction.
|
|
48
|
+
It is not a child, subagent, continuation, queued message, or change to the main run.
|
|
49
|
+
2. The service builds a bounded context from the main run's recorded effective system prompt,
|
|
50
|
+
current context update, visible tool inventory, persisted public run events, and a caller-supplied
|
|
51
|
+
transcript projection. Visible context includes assistant text, tool names, inputs and results.
|
|
52
|
+
Hidden reasoning and attachment bytes are excluded. Credential-like fields and common secret
|
|
53
|
+
forms are redacted before context enters the side run. Conversation and tool contents are framed
|
|
54
|
+
as evidence; they cannot expand the side run's authority. Context limits are fixed in code and
|
|
55
|
+
tested, keeping the effective prompt first and the newest conversation/activity when trimming.
|
|
56
|
+
3. A side-question run uses the main conversation's selected account, model and effort, with an
|
|
57
|
+
independent session identity and a fixed, attributed Harness instruction. It records no variant
|
|
58
|
+
(`variantVersion: null`) and freezes an empty capability set. It loads no tools, providers,
|
|
59
|
+
connectors, subagents, project context files, user or variant plugin code, or main native history.
|
|
60
|
+
The main system prompt is context for answering, not permission to access the main run's tools.
|
|
61
|
+
4. A side question and answer never enter, steer, stop or queue work on the parent conversation.
|
|
62
|
+
They are recorded only in the independent side run's ordinary events; clients may show that run
|
|
63
|
+
in Trajectory and Usage. No separate durable side-thread store is introduced.
|
|
64
|
+
5. Each surface keeps its current side-question presentation. The terminal supports a scrollable
|
|
65
|
+
answer, copy and dismissal. The App continues to own its dock and conversation selection, while
|
|
66
|
+
the Harness owns launch policy, context construction, run lifecycle and result events.
|
|
67
|
+
6. Phase two aligns the host path policy with the main read path: absolute and `~` paths are
|
|
68
|
+
available to read-only file tools anywhere the operating system permits. The working directory
|
|
69
|
+
is a default location, not a repository sandbox. Edit, write and command calls continue through
|
|
70
|
+
the existing gate.
|
|
71
|
+
7. Update the capability register so the Harness service owns side questions and both terminal and
|
|
72
|
+
App surfaces call the shared contract.
|
|
73
|
+
|
|
74
|
+
## Alternatives
|
|
75
|
+
|
|
76
|
+
- **Keep the terminal-only Pi session and raise its excerpt limits.** This leaves the App and
|
|
77
|
+
terminal with different semantics and observability.
|
|
78
|
+
- **Send hidden reasoning, attachment bytes, or the entire native history.** This exposes material
|
|
79
|
+
that is not needed to answer questions and can include private or provider-internal content.
|
|
80
|
+
- **Give the side question the main run's tools.** This turns a side answer into independent work
|
|
81
|
+
with authority and can cause effects that the user did not request.
|
|
82
|
+
- **Persist all side-question threads in a new store.** This adds retention, deletion and
|
|
83
|
+
cross-surface synchronization contracts; ordinary run records already capture model usage and
|
|
84
|
+
results.
|
|
85
|
+
- **Treat the repository root as a read boundary.** Pi's read-only file tools accept absolute and
|
|
86
|
+
`~` paths, but the App's host policy also applies a working-folder/trusted-folder check. The
|
|
87
|
+
approved implementation removes that extra read restriction and accepts `~` in host path checks;
|
|
88
|
+
writes and commands keep their existing gates.
|
|
89
|
+
|
|
90
|
+
## Consequences
|
|
91
|
+
|
|
92
|
+
- Side-question requests and answers become ordinary, separately inspectable Harness run records.
|
|
93
|
+
They remain absent from the parent transcript and are no longer ephemeral from the run store.
|
|
94
|
+
- The Harness owns the context schema, redaction, bounds, restricted launch and lifecycle. Hosts
|
|
95
|
+
provide only the transcript projection they own and present the Harness result.
|
|
96
|
+
- A dedicated restricted launch and an attributed first-party instruction are required. The
|
|
97
|
+
restriction is explicit; `automatic: true` alone is not the contract because unattended runs have
|
|
98
|
+
their own plugin loading rules.
|
|
99
|
+
- No data migration or protocol version change is required. New side runs use the
|
|
100
|
+
`side-question` trigger and no variant pin. A supplied parent run must belong to the supplied
|
|
101
|
+
parent session; the terminal and App derive that relationship from their active conversation.
|
|
102
|
+
- The Harness file-reading behavior does not change. The App now aligns its host gate with that
|
|
103
|
+
OS-permission boundary for read-only native file tools. Its existing approval and scope gates
|
|
104
|
+
remain in place for writes and commands.
|
|
105
|
+
|
|
106
|
+
## Migration
|
|
107
|
+
|
|
108
|
+
No stored schema migration is planned. New side questions use standard run records under a distinct
|
|
109
|
+
trigger; clients do not reopen old side-question sessions. The App switches its launch path to the
|
|
110
|
+
shared Harness service and permits OS-readable paths in read-only native file tools. Existing run
|
|
111
|
+
records and write/command gates are unchanged.
|
|
112
|
+
|
|
113
|
+
## Checks
|
|
114
|
+
|
|
115
|
+
- Unit tests for context redaction, ordering, bounds, omitted hidden fields, parent event projection,
|
|
116
|
+
attributed instructions, no-tool launch, run pinning and owner-scoped reads/interrupts.
|
|
117
|
+
- Lifecycle checks for streaming, replacement, cancellation and dismissal without changing the
|
|
118
|
+
parent run or transcript.
|
|
119
|
+
- Harness `npm run typecheck`, `npm test`, `npm run prove`, and `python3 scripts/verify-terminal.py`.
|
|
120
|
+
- App `npm run typecheck`, `npm test`, `npm run check:layers`, and `cd src-tauri && cargo test`.
|
|
121
|
+
- Fake-provider tests are the default. Any real-model/cache or live UI acceptance run requires the
|
|
122
|
+
account owner's permission.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0020
|
|
3
|
+
title: Built-in feature modules and namespaced plugin commands
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-24
|
|
6
|
+
updated: 2026-10-24
|
|
7
|
+
affects: [INV-PLG-5, INV-PLG-6, INV-TUI-2, INV-TUI-7, INV-SRV-1, 06-plugins-and-capabilities.md, 11-terminal.md, 13-world-tools.md, 14-surfaces-and-parity.md]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0020: Built-in feature modules and namespaced plugin commands
|
|
11
|
+
|
|
12
|
+
**Command namespace note:** The initial decision to prefix every built-in command was superseded by
|
|
13
|
+
[PROP-0021](PROP-0021-command-namespaces-and-duplicates.md) and
|
|
14
|
+
[ADR-0021](../../decisions/ADR-0021-required-command-namespaces.md). Required built-in commands now
|
|
15
|
+
use their bare names; this proposal remains the record of the feature-module architecture.
|
|
16
|
+
|
|
17
|
+
## Problem
|
|
18
|
+
|
|
19
|
+
`PluginDescriptor` already describes first-party tools, but runtime ownership is split across the
|
|
20
|
+
central `World` constructor, `server/methods.ts`, and the TUI's command switch. TUI plugin commands
|
|
21
|
+
are indistinguishable from core commands, while Pi extension commands are exposed under their
|
|
22
|
+
unprefixed names. This makes feature ownership hard to follow and allows command-name conflicts to
|
|
23
|
+
be resolved by Pi's automatic suffixes instead of a clear owner decision.
|
|
24
|
+
|
|
25
|
+
Evidence: `src/world/world.ts` directly constructed the web, browser and annotation parts;
|
|
26
|
+
`src/server/methods.ts` owned their handlers alongside Wiki, history, worktree and refinement
|
|
27
|
+
handlers; `src/terminal/tui/commands.ts` held feature-page dispatch and exposed Pi commands as
|
|
28
|
+
`/<name>`.
|
|
29
|
+
|
|
30
|
+
## Affected rules
|
|
31
|
+
|
|
32
|
+
- **INV-PLG-5:** Everything model-visible belongs to a plugin. A new prompt section, tool group or
|
|
33
|
+
tool is declared by a `PluginDescriptor` or reported as unattributed.
|
|
34
|
+
- **INV-TUI-2:** The Harness owns screen composition, input, scrolling, command routing and plugin
|
|
35
|
+
UI. Pi owns the execution runtime, native history and rich content components.
|
|
36
|
+
- **INV-SRV-1:** `src/server/methods.ts` is the contract for every non-Node host. Renaming, removing,
|
|
37
|
+
or changing the params or result shape of a method is an architecture change.
|
|
38
|
+
|
|
39
|
+
## Proposal
|
|
40
|
+
|
|
41
|
+
Add one internal typed registry of Harness-managed built-in plugin modules. A module may contribute
|
|
42
|
+
its existing descriptor, world part and cleanup, server-method handlers, and terminal command
|
|
43
|
+
metadata. The registry checks plugin IDs, terminal command names and built-in server-method names
|
|
44
|
+
for duplicates. It does not add category fields to `PluginDescriptor`, plugin responses, or storage.
|
|
45
|
+
|
|
46
|
+
The TUI uses `/plugin:<command>` for built-in and Pi extension commands. Core terminal commands
|
|
47
|
+
remain unprefixed. The built-in commands become `/plugin:doctor`, `/plugin:worktree`,
|
|
48
|
+
`/plugin:trajectory`, `/plugin:subagents`, `/plugin:notes`, and `/plugin:annotate`. Their former
|
|
49
|
+
unprefixed forms are removed at cutover. Prompt templates and the existing `/skill:<name>` syntax
|
|
50
|
+
keep their current behavior.
|
|
51
|
+
|
|
52
|
+
Pi extension commands are invoked through their registered handler and command context. Duplicate
|
|
53
|
+
extension names are omitted from completion and rejected with the owning extension paths when
|
|
54
|
+
invoked. A built-in command name is reserved against extension commands; the built-in remains
|
|
55
|
+
available and reports the colliding extension owner.
|
|
56
|
+
|
|
57
|
+
Ownership taxonomy is documentation only:
|
|
58
|
+
|
|
59
|
+
- **Foundation:** accounts, sessions and run recording, prompt/variant validation, the gate,
|
|
60
|
+
plugin loading/trust/attachments, resource browsing, server and terminal frameworks, and the
|
|
61
|
+
isolated browser engine/network safety.
|
|
62
|
+
- **World:** web tools, browser tools and page annotations.
|
|
63
|
+
- **Memory:** Wiki, history and trajectory.
|
|
64
|
+
- **Automation:** subagents, ask-user, checklist, lessons and refinement.
|
|
65
|
+
- **Integrations:** connected apps/MCP and Hub.
|
|
66
|
+
- **Operations:** doctor and worktrees.
|
|
67
|
+
|
|
68
|
+
The generic browser engine stays Foundation-owned. The browser plugin contributes the user-facing
|
|
69
|
+
tools through an adapter. Required and switchable plugin availability remains as before. Public
|
|
70
|
+
server method names, method schemas, stored data and capability gating do not change.
|
|
71
|
+
|
|
72
|
+
## Alternatives
|
|
73
|
+
|
|
74
|
+
- Keep the TUI switch and move only the annotation command. This leaves all feature commands and
|
|
75
|
+
world assembly split across central dispatch points.
|
|
76
|
+
- Invoke extension handlers through rewritten user text. This relies on Pi's input parsing and
|
|
77
|
+
would not provide one collision policy or a stable plugin command context.
|
|
78
|
+
- Expose plugin categories in the public descriptor. The categories are for ownership and
|
|
79
|
+
documentation, and do not improve current runtime decisions or user flows.
|
|
80
|
+
- Do nothing. Feature ownership and command collisions stay implicit.
|
|
81
|
+
|
|
82
|
+
## Consequences
|
|
83
|
+
|
|
84
|
+
The built-in registry is the runtime source for first-party descriptors, world parts, server
|
|
85
|
+
handlers and command metadata. The terminal adapter still owns page construction and rendering.
|
|
86
|
+
Hosts retain the same RPC methods, tools pass through the same capability set and gate, and no
|
|
87
|
+
storage migration is needed. People update plugin slash commands to the `plugin:` prefix.
|
|
88
|
+
|
|
89
|
+
## Migration
|
|
90
|
+
|
|
91
|
+
Change all current terminal documentation and tests to the namespaced forms. Do not retain aliases
|
|
92
|
+
for old plugin command names. Keep the generic browser engine in Foundation and move only the
|
|
93
|
+
browser tools adapter under the browser plugin. Record plugin categories as an ownership taxonomy,
|
|
94
|
+
not public metadata.
|
|
95
|
+
|
|
96
|
+
## Checks
|
|
97
|
+
|
|
98
|
+
- Registry tests cover unique module IDs, command owners, duplicate server handlers and lifecycle
|
|
99
|
+
part construction.
|
|
100
|
+
- Terminal tests cover built-in and Pi command completions, argument dispatch, duplicate-owner
|
|
101
|
+
diagnostics and rejection of retired command names.
|
|
102
|
+
- Existing attachment tests continue to prove that switchable tool contributions obey the saved
|
|
103
|
+
capability set.
|
|
104
|
+
- Run Harness typecheck, tests, build and `npm run prove`; run terminal PTY journeys and the App's
|
|
105
|
+
typecheck, tests, layer check and Rust tests.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0021
|
|
3
|
+
title: Required built-in commands and duplicate command suppression
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-24
|
|
6
|
+
updated: 2026-10-24
|
|
7
|
+
affects: [INV-TUI-7, INV-PAR-1, 11-terminal.md, 14-surfaces-and-parity.md, ADR-0021]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0021: Required built-in commands and duplicate command suppression
|
|
11
|
+
|
|
12
|
+
Accepted by the user’s request to implement this plan on 2026-10-24; implemented in the working tree and recorded in ADR-0021.
|
|
13
|
+
|
|
14
|
+
## Problem
|
|
15
|
+
|
|
16
|
+
PROP-0020 put every built-in plugin command behind `/plugin:`. This makes required Harness features
|
|
17
|
+
less direct to invoke, and stale bridge registrations create duplicate `/plugin:accounts`,
|
|
18
|
+
`/plugin:hub`, and `/plugin:plugins` entries beside their core commands. Loaded extension commands can
|
|
19
|
+
also duplicate an existing bare command or prompt, as with `/plugin:mcp` or `/plugin:llama`.
|
|
20
|
+
|
|
21
|
+
Evidence: the required `subagents`, `history`, `doctor`, and `worktrees` plugin descriptors own
|
|
22
|
+
`subagents`, `trajectory`, `doctor`, and `worktree` terminal commands in `src/plugins/builtin.ts`.
|
|
23
|
+
`src/terminal/tui/commands.ts` prefixes every registry command and does not check extension names
|
|
24
|
+
against core commands or prompt templates. `src/terminal/piExtension.ts` separately registers
|
|
25
|
+
`hub`, `plugins`, and `accounts`, although the owned terminal already routes those names. `/mcp` is a
|
|
26
|
+
core alias for Connections. `/llama` is resource-dependent rather than a Harness core command; when
|
|
27
|
+
a matching prompt is loaded, it is the bare command that takes precedence.
|
|
28
|
+
|
|
29
|
+
## Affected rules
|
|
30
|
+
|
|
31
|
+
- **INV-TUI-7:** A plugin command is invoked as `/plugin:<command>`, dispatched to its registered
|
|
32
|
+
owner and shown that way in completion and help. Duplicate names are rejected with owner
|
|
33
|
+
diagnostics. Old unprefixed plugin command forms are not aliases; core commands stay unprefixed.
|
|
34
|
+
- **INV-PAR-1:** Every capability a person can use in a host is a Harness capability; the standalone
|
|
35
|
+
terminal surfaces it.
|
|
36
|
+
- **14 Surfaces and parity, Contracts:** Plugin-owned terminal commands use `/plugin:<command>`;
|
|
37
|
+
Foundation commands remain unprefixed.
|
|
38
|
+
|
|
39
|
+
## Proposal
|
|
40
|
+
|
|
41
|
+
Use an explicit namespace on each built-in terminal command. Commands owned by a required
|
|
42
|
+
`PluginDescriptor` use the bare terminal namespace; optional built-in plugin commands use
|
|
43
|
+
`/plugin:<command>`. This yields:
|
|
44
|
+
|
|
45
|
+
| Plugin | Command | Invocation |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| `subagents` (required) | `subagents` | `/subagents` |
|
|
48
|
+
| `history` (required) | `trajectory` | `/trajectory` |
|
|
49
|
+
| `doctor` (required) | `doctor` | `/doctor` |
|
|
50
|
+
| `worktrees` (required) | `worktree` | `/worktree` |
|
|
51
|
+
| `annotations` (switchable) | `notes`, `annotate` | `/plugin:notes`, `/plugin:annotate` |
|
|
52
|
+
|
|
53
|
+
Keep core `/accounts`, `/hub`, `/plugins`, and `/mcp` unprefixed. Remove the Pi bridge's duplicate
|
|
54
|
+
`accounts`, `hub`, and `plugins` command registrations.
|
|
55
|
+
|
|
56
|
+
A bare core command, alias, required built-in command, or loaded prompt owns that bare name. Do not
|
|
57
|
+
show or execute `/plugin:<name>` when its name collides with one of those commands; direct use reports
|
|
58
|
+
the bare command to use. The same rule handles dynamic duplicates such as `/plugin:mcp` or
|
|
59
|
+
`/plugin:llama` without special-casing installed packages. Pi extension commands with no bare-name
|
|
60
|
+
collision remain `/plugin:<name>`. Namespace collisions between core and required built-in commands
|
|
61
|
+
are rejected rather than silently overwritten. Old prefixed forms of required built-in commands are
|
|
62
|
+
not aliases.
|
|
63
|
+
|
|
64
|
+
Command routing, pages and existing account/plugin methods remain Harness-owned. No server method,
|
|
65
|
+
capability gate, storage layout, or plugin availability changes.
|
|
66
|
+
|
|
67
|
+
## Alternatives
|
|
68
|
+
|
|
69
|
+
- Keep all built-in commands namespaced. This preserves the duplicate entries and makes required
|
|
70
|
+
Harness operations less direct.
|
|
71
|
+
- Unprefix every built-in plugin command. This also changes the optional, switchable Annotations
|
|
72
|
+
commands even though the request targets required plugins.
|
|
73
|
+
- Hide only the five currently named duplicate entries. A general same-name rule would still allow
|
|
74
|
+
future extensions or prompts to create duplicates.
|
|
75
|
+
- Do nothing. The current prefixed required commands and duplicate entries remain.
|
|
76
|
+
|
|
77
|
+
## Consequences
|
|
78
|
+
|
|
79
|
+
Completion, help and dispatch use the namespace declared by the built-in registry. Bare names for
|
|
80
|
+
required plugins participate in the core command collision checks. Optional built-in and third-party
|
|
81
|
+
plugin commands retain the plugin namespace. When a bare prompt or command conflicts with a Pi
|
|
82
|
+
extension command, the bare command wins and the extension's slash command is unavailable under that
|
|
83
|
+
name; the extension must choose another name to expose both.
|
|
84
|
+
|
|
85
|
+
## Migration
|
|
86
|
+
|
|
87
|
+
Use `/subagents`, `/trajectory`, `/doctor`, and `/worktree` in place of their `/plugin:` forms. Keep
|
|
88
|
+
`/plugin:notes` and `/plugin:annotate`. Use `/accounts`, `/hub`, `/plugins`, and `/mcp` for their
|
|
89
|
+
existing core commands. No stored data or server methods migrate.
|
|
90
|
+
|
|
91
|
+
## Checks
|
|
92
|
+
|
|
93
|
+
- Registry tests cover the explicit namespace derived for required and optional plugin commands.
|
|
94
|
+
- Terminal tests cover bare command routing, optional/plugin-prefixed routing, help/completion,
|
|
95
|
+
bridge registration removal, extension duplicates, and extension collisions with bare commands,
|
|
96
|
+
aliases, and loaded prompts.
|
|
97
|
+
- Update parity and command documentation, including Doctor, trajectory, subagents and worktrees.
|
|
98
|
+
- Run Harness typecheck, tests, build and terminal proof; then run the App typecheck, tests, layer
|
|
99
|
+
check and Rust tests.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0022
|
|
3
|
+
title: Keep question tools available only in interactive plan mode
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-24
|
|
6
|
+
updated: 2026-10-24
|
|
7
|
+
affects: [INV-RUN-8, 02-sessions-and-runs.md, 04-prompt.md, 06-plugins-and-capabilities.md, 07-tools-and-gate.md, 11-terminal.md, 14-surfaces-and-parity.md, docs/parity.md]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0022: Keep question tools available only in interactive plan mode
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
The user wants ordinary chat not to expose a model-initiated question tool, while plan mode retains
|
|
15
|
+
questions, with no setting or plugin toggle. Today `Sessions.start` requests `ask_user` whenever
|
|
16
|
+
Harness tools are enabled (`src/sessions/sessions.ts`), and the terminal bridge registers both
|
|
17
|
+
`ask_user` and `ask_user_question` (`src/terminal/piExtension.ts`). Plan mode currently retains the
|
|
18
|
+
same SDK tool list (`src/sessions/planMode.ts`) and filters the terminal's active list from its
|
|
19
|
+
current tools (`src/terminal/tui/runtime.ts`).
|
|
20
|
+
|
|
21
|
+
`ask-user` is a required built-in plugin (`src/plugins/builtin.ts`); it has no switchable attachment,
|
|
22
|
+
and `plugins.attach` rejects required plugins (`src/plugins/api.ts`). `harnessTools: false` is too
|
|
23
|
+
broad: it also omits History, Wiki, skill loading, checklist, and session naming. A mode-aware tool
|
|
24
|
+
policy is needed instead of disabling the plugin.
|
|
25
|
+
|
|
26
|
+
## Affected rules
|
|
27
|
+
|
|
28
|
+
- **INV-RUN-8:** “Plan mode never changes the tool list or the system prompt, so switching it keeps
|
|
29
|
+
the cached prefix. Its refusals happen before approvals and no approval can lift them.” This
|
|
30
|
+
proposal changes the tool-list part: an attended plan request may expose the question tools that
|
|
31
|
+
ordinary runs omit. Plan refusals remain before approvals. The stable system prompt remains
|
|
32
|
+
unchanged; provider cache effects of the tool-list difference are not assumed.
|
|
33
|
+
|
|
34
|
+
## Proposal
|
|
35
|
+
|
|
36
|
+
1. New, ordinary interactive runs do not expose the Harness-owned `ask_user` tool. This is enforced
|
|
37
|
+
while the Harness resolves the run's callable tools, before the capability set is frozen, so a
|
|
38
|
+
caller cannot restore it by adding its name to `tools.allow` or a wider requested capability set.
|
|
39
|
+
2. An attended `plan: true` run may expose `ask_user`. Explicitly narrower caller capabilities
|
|
40
|
+
still win. Automatic, probe, improver, and reflection runs do not receive a question tool.
|
|
41
|
+
3. In the Harness terminal, ordinary mode does not activate `ask_user` or its terminal-specific
|
|
42
|
+
`ask_user_question` counterpart. A plan request may temporarily activate both from the registered
|
|
43
|
+
tool inventory; the normal active-tool set is restored when planning succeeds, fails, or is interrupted.
|
|
44
|
+
4. Keep the `ask-user` built-in required and non-switchable. Do not add an attachment, preference,
|
|
45
|
+
or per-run UI toggle. Approval prompts for gated actions remain available in normal mode; this
|
|
46
|
+
proposal only removes model-initiated question forms. A model can still state an assumption or
|
|
47
|
+
ask in ordinary reply text.
|
|
48
|
+
5. Preserve the existing run capability pinning contract. A continuation keeps its earlier frozen
|
|
49
|
+
capability set, even when that set contains a question tool; suppression applies to newly resolved
|
|
50
|
+
ordinary runs. If that snapshot includes `ask_user`, an automatic or probe/improver/reflection
|
|
51
|
+
continuation is rejected with `continuation_mismatch` rather than narrowing the snapshot or
|
|
52
|
+
allowing an unattended question. Update `INV-RUN-8` to document the plan-mode tool-list exception
|
|
53
|
+
and update the session and terminal contracts plus the parity register.
|
|
54
|
+
|
|
55
|
+
This proposal concerns Harness-owned question tools. It does not blacklist arbitrary third-party
|
|
56
|
+
extensions that independently implement a question interface under another tool name.
|
|
57
|
+
|
|
58
|
+
## Alternatives
|
|
59
|
+
|
|
60
|
+
- **Make `ask-user` switchable and default it off.** This would remove it in plan mode too unless
|
|
61
|
+
mode-specific overrides were added, and would contradict the requested fixed behavior. Making a
|
|
62
|
+
required Harness part optional also changes the plugin contract and `INV-PLG-9`.
|
|
63
|
+
- **Set `harnessTools: false`.** This hides unrelated Harness tools and is not a question-only
|
|
64
|
+
control.
|
|
65
|
+
- **Leave the tool visible but refuse calls outside plan mode.** The model would still see and may
|
|
66
|
+
call the tool in normal mode, receiving a refusal rather than having no question surface.
|
|
67
|
+
- **Do nothing.** Preserves current behavior, which does not meet the request.
|
|
68
|
+
|
|
69
|
+
## Consequences
|
|
70
|
+
|
|
71
|
+
- Newly resolved normal runs have a narrower frozen tool set. Attended plan runs may include
|
|
72
|
+
`ask_user` subject to their caller's capability set; this is the explicit exception to
|
|
73
|
+
`INV-RUN-8`.
|
|
74
|
+
- The terminal derives plan-safe tools from registered tools as well as its normal active-tool list,
|
|
75
|
+
then restores the ordinary list on success, failure or interruption.
|
|
76
|
+
- Tool-list changes may affect provider request caching. No cache-preservation claim is made; any
|
|
77
|
+
real-provider measurement follows `INV-PRM-8` and requires the account owner's permission.
|
|
78
|
+
- Existing stored runs and plugin attachments need no migration. Continuations retain the earlier
|
|
79
|
+
pinned tool set as required by `INV-RUN-2`.
|
|
80
|
+
- Gated tool approvals and plain-text questions remain possible. The guarantee is specifically
|
|
81
|
+
that the Harness-owned question tools are not callable in newly started normal runs.
|
|
82
|
+
|
|
83
|
+
## Migration
|
|
84
|
+
|
|
85
|
+
No protocol, storage schema, or attachment migration is required. New runs resolve the mode-specific
|
|
86
|
+
callable set before `freezeRun`; existing run records and their capability snapshots are unchanged.
|
|
87
|
+
Continuations preserve their original snapshot. The App needs no separate preference or UI; it
|
|
88
|
+
continues to call Harness, which enforces the selection. Its sidecar tests must verify the resulting
|
|
89
|
+
tool set.
|
|
90
|
+
|
|
91
|
+
## Checks
|
|
92
|
+
|
|
93
|
+
- SDK session tests prove normal runs omit `ask_user` even when requested, attended plan runs can
|
|
94
|
+
include it, narrower capability sets still exclude it, automatic/refinement/reflection runs do not
|
|
95
|
+
receive it, and continuation snapshots remain exact.
|
|
96
|
+
- Terminal tests prove normal active tools omit both question names, plan mode activates them, and
|
|
97
|
+
the normal set is restored after success, failure and interruption.
|
|
98
|
+
- Run Harness `npm run typecheck`, `npm test`, `npm run prove`, and the terminal question/plan
|
|
99
|
+
verification. After Harness implementation, run the App's typecheck, tests, layer check, and Rust
|
|
100
|
+
tests, including sidecar coverage of normal and plan tool lists.
|
|
101
|
+
- Use fake-provider tests by default. Any real provider cache check requires the account owner's
|
|
102
|
+
explicit permission.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0023
|
|
3
|
+
title: Rename the published CLI command to xagent
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-24
|
|
6
|
+
updated: 2026-10-24
|
|
7
|
+
affects: [11-terminal.md, package.json#bin, CLI documentation, ADR-0009]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0023: Rename the published CLI command to xagent
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
The package currently publishes `xharness` as its only executable, and invoking it without a
|
|
15
|
+
subcommand starts the Harness-owned OpenTUI terminal. The requested launch command is `xagent`.
|
|
16
|
+
The command name is a public CLI contract, so replacing it must update the package bin mapping,
|
|
17
|
+
help text, command examples, smoke checks, and the terminal specification.
|
|
18
|
+
|
|
19
|
+
## Affected rules
|
|
20
|
+
|
|
21
|
+
- Page 11 names `xharness` as the published executable and standalone terminal command.
|
|
22
|
+
- `package.json#bin`, the package lock, CLI usage, and command-specific help publish and document
|
|
23
|
+
`xharness`.
|
|
24
|
+
- ADR-0009 records `xharness` as the sole published executable.
|
|
25
|
+
|
|
26
|
+
## Proposal
|
|
27
|
+
|
|
28
|
+
Publish `xagent` as the sole executable mapped to `dist/cli.js`. Invoking `xagent` without a
|
|
29
|
+
subcommand starts the existing OpenTUI terminal; `terminal` remains an explicit alias and the
|
|
30
|
+
existing subcommands remain available. Do not keep `xharness` as a compatibility alias. Keep the
|
|
31
|
+
npm package name, terminal runtime, data/state directory names, and environment-variable names
|
|
32
|
+
unchanged. Update command examples and regression/smoke checks to use `xagent`.
|
|
33
|
+
|
|
34
|
+
## Alternatives
|
|
35
|
+
|
|
36
|
+
- Keep `xharness` as an alias. This avoids disruption but does not replace the requested launch
|
|
37
|
+
command.
|
|
38
|
+
- Rename the npm package. This is unrelated to the executable name.
|
|
39
|
+
- Do nothing. This leaves the requested command unavailable.
|
|
40
|
+
|
|
41
|
+
## Consequences
|
|
42
|
+
|
|
43
|
+
- Scripts and shell aliases using `xharness` must change to `xagent`.
|
|
44
|
+
- The rename is a breaking CLI change. It is included before publication of the 4.0.0 candidate;
|
|
45
|
+
if `xharness` has already been released, the rename requires a new major release.
|
|
46
|
+
- No account, data, state, or server-protocol migration is required.
|
|
47
|
+
|
|
48
|
+
## Migration
|
|
49
|
+
|
|
50
|
+
Install `@xingular/harness` and launch the terminal with `xagent`. Update invocations of the former
|
|
51
|
+
`xharness` command. Existing `~/.xingular-harness/{data,state}` contents are reused unchanged.
|
|
52
|
+
|
|
53
|
+
## Checks
|
|
54
|
+
|
|
55
|
+
- `npm run typecheck` passed.
|
|
56
|
+
- `npm test` passed: 137 test files, 1,036 tests passed, 3 skipped; the focused CLI test also passed (2 tests).
|
|
57
|
+
- `npm run prove` passed, including the standalone server lifecycle.
|
|
58
|
+
- `node dist/cli.js --help` printed usage beginning with `xagent`.
|
|
59
|
+
- `npm pack --dry-run` passed and included the CLI, TUI bundle, and updated decision records.
|
|
60
|
+
|
|
61
|
+
The lasting decision is recorded in [ADR-0024](../../decisions/ADR-0024-xagent-command.md).
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0024
|
|
3
|
+
title: Add bounded ASCII sketch previews to question choices
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-24
|
|
6
|
+
updated: 2026-10-24
|
|
7
|
+
affects: [INV-RUN-3, INV-PAR-1, INV-PAR-2, 02-sessions-and-runs.md, 10-server-protocol.md, 11-terminal.md, 14-surfaces-and-parity.md, docs/parity.md, App/shared/contracts.ts, App/src/modes/chat/QuestionBatchForm.tsx, App/docs/features/FEAT-0013-plan-mode.md, App/docs/architecture/implementation-stage.md, ADR-0025]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0024: Add bounded ASCII sketch previews to question choices
|
|
11
|
+
|
|
12
|
+
**Accepted by the product owner on 2026-10-24; implementation and verification completed in the working tree.**
|
|
13
|
+
|
|
14
|
+
## Problem
|
|
15
|
+
|
|
16
|
+
Question choices currently carry labels, descriptions and recommendation state. The validated
|
|
17
|
+
`question.requested` run event persists those fields, but neither the Harness question contract nor
|
|
18
|
+
the App's mirrored contract can carry a choice-specific visual sketch. As a result, an agent cannot
|
|
19
|
+
show a small text diagram to clarify a choice, and neither question surface can preview one while a
|
|
20
|
+
person compares choices.
|
|
21
|
+
|
|
22
|
+
This changes the persisted run-event payload contract. It must be accepted before changing code or
|
|
23
|
+
the architecture specification.
|
|
24
|
+
|
|
25
|
+
## Affected rules
|
|
26
|
+
|
|
27
|
+
- **INV-RUN-3:** “Every run event is validated against its schema, redacted, persisted, and only then
|
|
28
|
+
relayed to listeners, in order. An event that arrives after the run settled is kept as evidence and
|
|
29
|
+
never applied or relayed.” This proposal adds validated optional metadata to
|
|
30
|
+
`question.requested`; it does not change event ordering or persistence.
|
|
31
|
+
- **INV-PAR-1:** “Every capability a person can use in a host is a Harness capability: a foundation
|
|
32
|
+
service, a world part or a first-party plugin, reachable through server methods. The standalone
|
|
33
|
+
terminal surfaces it. A host is a presentation of it.” Sketch metadata and the terminal preview
|
|
34
|
+
are Harness-owned; the App presents the same question data.
|
|
35
|
+
- **INV-PAR-2:** “A capability is complete only when its terminal surface and its host surface both
|
|
36
|
+
pass acceptance. It lands in the Harness first, together with its terminal surface; the host
|
|
37
|
+
surface follows.” Both question surfaces must render and test the same metadata.
|
|
38
|
+
|
|
39
|
+
## Proposal
|
|
40
|
+
|
|
41
|
+
1. Extend each question input with optional `uiSketch?: true`. This question-level flag enables
|
|
42
|
+
sketch mode; it applies to that question only, including questions in an `ask_user` batch.
|
|
43
|
+
2. Extend each choice with optional `sketch?: string`. When `uiSketch: true`, every choice must
|
|
44
|
+
contain a valid sketch. When the flag is absent, choices must not contain sketches. Reject an
|
|
45
|
+
invalid combination before emitting a question event; do not silently omit or truncate data.
|
|
46
|
+
3. Bound each sketch to 1–8 lines and at most 32 printable ASCII characters per line. Lines are
|
|
47
|
+
separated by LF. Only bytes `0x20`–`0x7e` and LF are allowed; tabs, CR, terminal controls,
|
|
48
|
+
escape sequences and Unicode are rejected. The sketch must contain at least one non-space
|
|
49
|
+
printable character. Interior blank lines and trailing spaces are allowed and preserved exactly.
|
|
50
|
+
The maximum encoded length is 263 bytes (eight 32-character lines plus seven LF separators).
|
|
51
|
+
4. Add the fields to both Harness question-tool schemas (`ask_user` and terminal
|
|
52
|
+
`ask_user_question`) and their runtime validation. Add them to the `question.requested` payload
|
|
53
|
+
schema and preserve them through `RunRegistry` into the persisted event. `question.answered` and
|
|
54
|
+
`QuestionAnswer` stay unchanged: sketch metadata is never part of an answer.
|
|
55
|
+
5. The terminal question dock renders choice labels and descriptions in wrapping columns. It places
|
|
56
|
+
one shared, monospace sketch canvas below the choice list, displaying the hovered choice's sketch
|
|
57
|
+
or, with no hovered choice, the keyboard-focused choice's sketch. It does not create one canvas
|
|
58
|
+
per choice. Sketch content is rendered as literal text, without Markdown or ANSI interpretation.
|
|
59
|
+
6. The App mirrors the payload schema and preview behavior in `QuestionBatchForm`. Its choice
|
|
60
|
+
label/description columns wrap at narrow widths, and its shared preview is literal monospace
|
|
61
|
+
text. Update plan-mode acceptance to cover sketch-enabled questions and record the implementation
|
|
62
|
+
in the App's implementation-stage log. Update Harness architecture/terminal docs and
|
|
63
|
+
`docs/parity.md` when implementing.
|
|
64
|
+
7. On acceptance, add ADR-0025 to record the stable question-event and sketch-bounds contract.
|
|
65
|
+
|
|
66
|
+
The optional flag is intentionally a positive literal, not a free-form renderer configuration.
|
|
67
|
+
Sketches do not introduce an image/attachment type, a host-only surface or a new answer format.
|
|
68
|
+
|
|
69
|
+
## Alternatives
|
|
70
|
+
|
|
71
|
+
- **Accept optional sketches without a mode flag.** This leaves it unclear whether sketches are
|
|
72
|
+
expected, permits partially illustrated questions, and makes the preview's presence ambiguous.
|
|
73
|
+
- **Allow Markdown, Unicode diagrams, ANSI or unbounded text.** Rendering differs across terminal
|
|
74
|
+
and host, escape/control content creates risk, and unbounded content can overwhelm a question
|
|
75
|
+
surface.
|
|
76
|
+
- **Use image attachments or a rich-output event.** This adds a separate content/storage/rendering
|
|
77
|
+
contract for a small, readable diagram and cannot provide the same text fallback in the terminal.
|
|
78
|
+
- **Do nothing.** Keeps the existing event stable but does not let questions explain choices with
|
|
79
|
+
compact diagrams.
|
|
80
|
+
|
|
81
|
+
## Consequences
|
|
82
|
+
|
|
83
|
+
- New `question.requested` events may carry `uiSketch: true` and per-choice `sketch` strings. The
|
|
84
|
+
event remains backward-compatible: both fields are optional, and old events continue to parse.
|
|
85
|
+
- The App's shared contract must accept the same bounded fields as Harness. A stale host that does
|
|
86
|
+
not understand the optional metadata can still read the other question fields, but cannot show
|
|
87
|
+
the preview; parity requires updating the App before marking the feature complete.
|
|
88
|
+
- The question surface gains a bounded preview with no answer semantics. Recommendation ordering,
|
|
89
|
+
selection, free text, notes, submission and cancellation remain unchanged.
|
|
90
|
+
- There is no run-record layout change or migration. Sketches are stored only in the existing
|
|
91
|
+
`question.requested` event payload, subject to the existing event redaction and persistence path.
|
|
92
|
+
- Existing question-tool and event callers that omit `uiSketch` behave as before. Calls that enable
|
|
93
|
+
it must provide a valid sketch for every choice.
|
|
94
|
+
|
|
95
|
+
## Migration
|
|
96
|
+
|
|
97
|
+
No migration is needed. New readers accept old question events because the new payload fields are
|
|
98
|
+
optional; new writers validate the flag/choice relationship and bounds. Answer payloads are
|
|
99
|
+
unchanged. The Harness implementation and terminal surface must land first; then the App schema and
|
|
100
|
+
form are updated in a separate App repository change. No live-model request is required for
|
|
101
|
+
verification.
|
|
102
|
+
|
|
103
|
+
## Checks
|
|
104
|
+
|
|
105
|
+
After acceptance, verify schema bounds and flag/choice consistency, preservation of literal sketch
|
|
106
|
+
text through both tool paths and persisted events, compatibility with old events, unchanged answer
|
|
107
|
+
payloads, and terminal/App hover/focus preview behavior. Run the focused Harness and App question
|
|
108
|
+
tests, including the isolated question-form browser fixture. Also run:
|
|
109
|
+
|
|
110
|
+
- Harness: `npm run typecheck`, `npm test`, `npm run build`, `npm run prove`,
|
|
111
|
+
`python3 scripts/verify-terminal.py --questions-only` at 40×20, 80×24 and 120×40, and a terminal
|
|
112
|
+
input-latency profile.
|
|
113
|
+
- App: `npm run typecheck`, `npm test`, `npm run check:layers`, `npm run check:ui`,
|
|
114
|
+
`cd src-tauri && cargo test`, and the isolated question-form browser fixture.
|
|
115
|
+
|
|
116
|
+
## Implementation evidence
|
|
117
|
+
|
|
118
|
+
- Harness: `npm run typecheck`, all 1,041 tests (3 skipped), `npm run build` and `npm run prove`
|
|
119
|
+
passed. The isolated `--questions-only` PTY check passed at 40×20, 80×24 and 120×40 with
|
|
120
|
+
`pyte`; the 40-column run checks compact sketch navigation and answers, while wider runs also
|
|
121
|
+
check wrapped notes and free-text.
|
|
122
|
+
- Input latency profile (160×45, four rounds, loopback provider, no live requests): idle p50/p95/p99/max
|
|
123
|
+
4.83/9.69/10.02/10.14 ms; history 4.72/9.79/10.41/10.60 ms; streaming 8.36/19.53/21.67/26.00 ms.
|
|
124
|
+
No keystrokes were missed.
|
|
125
|
+
- App: `npm run typecheck`, `npm test` (566 renderer, 49 sidecar and 7 development-signing passed;
|
|
126
|
+
one signing test skipped), `npm run check:layers`, `npm run check:ui` and Rust tests (168 passed,
|
|
127
|
+
1 ignored) passed. The isolated question-form browser fixture passed all 5 tests using the installed
|
|
128
|
+
system Chrome executable.
|
|
129
|
+
- The first App test run, executed concurrently with other checks, exceeded an existing run-event
|
|
130
|
+
performance threshold; the full suite passed when rerun alone. No live-model request was made.
|