@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,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0032
|
|
3
|
+
title: Evidence-grounded planning with read-only research delegation
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-25
|
|
6
|
+
updated: 2026-10-25
|
|
7
|
+
affects: [02-sessions-and-runs.md, 06-plugins-and-capabilities.md, 07-tools-and-gate.md, 14-surfaces-and-parity.md, parity]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0032: Evidence-grounded planning with read-only research delegation
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
Plan mode has a strong read-only gate and a usable terminal handoff, but its instructions describe
|
|
15
|
+
only broad research, a UI-specific set of directions, and a loose output shape. They do not require
|
|
16
|
+
plans to ground code claims in inspected sources, map the requested outcomes to actionable steps,
|
|
17
|
+
resolve user-owned choices without asking about discoverable facts, or handle revisions as complete
|
|
18
|
+
replacement plans. Plan mode also forbids delegation entirely, so substantial investigations cannot
|
|
19
|
+
use the existing `explorer` profile to research in parallel; it has an explicit no-write tool list,
|
|
20
|
+
but no plan-specific plugin restriction, and there is no built-in `researcher` profile. The
|
|
21
|
+
instruction to explore “typically 3–5” UI directions also pushes ordinary UI implementation requests
|
|
22
|
+
toward unnecessary design alternatives. Verification is requested but not defined as concrete checks
|
|
23
|
+
with expected results.
|
|
24
|
+
|
|
25
|
+
Evidence: `src/sessions/planMode.ts` defines `PLAN_INSTRUCTIONS`; `src/sessions/planMode.test.ts`
|
|
26
|
+
checks prompt phrases and parser mechanics but does not measure plan quality. The binding summary in
|
|
27
|
+
`docs/architecture/02-sessions-and-runs.md` currently says UI plans explore distinct design directions,
|
|
28
|
+
compare trade-offs and recommend one. This differs from the stronger planning rubric in the checked-
|
|
29
|
+
out oh-my-pi prompt (`external/omp/packages/coding-agent/src/prompts/system/plan-mode-active.md`):
|
|
30
|
+
“Plan: execution spec, not design doc,” and “Every asserted path, symbol, signature, behavior:
|
|
31
|
+
actually read this session.” Adopt those principles, not its plan-file/approval mechanics. OpenCode's
|
|
32
|
+
checked-out plan plugin primarily defines role and read-only constraints; DeepSeek Harness leaves the
|
|
33
|
+
planning guidance deployment-defined. Neither provides the same detailed planning rubric.
|
|
34
|
+
|
|
35
|
+
## Affected rules
|
|
36
|
+
|
|
37
|
+
- `02-sessions-and-runs.md`, Plan mode: “for UI-related plans it asks the model to explore distinct
|
|
38
|
+
design directions, compare trade-offs and recommend one, using contextual `uiSketch` questions when
|
|
39
|
+
helpful. The reply ends with one `<proposed_plan>` block.” Replace the default multiple-directions
|
|
40
|
+
requirement with conditional, user-requested or materially useful alternatives.
|
|
41
|
+
- `INV-RUN-8` changes narrowly: an attended plan may use the existing subagent tools for bounded
|
|
42
|
+
research when subagents are in the frozen caller capability set, and only with an eligible
|
|
43
|
+
read-only profile. Plan refusals—including profile eligibility—remain before policy and approvals.
|
|
44
|
+
The plan remains read-only with this limited run-lifecycle exception; it gains no repository or
|
|
45
|
+
world-write capability. The stable system prompt remains unchanged; plan instructions remain a
|
|
46
|
+
dynamic section. The `<proposed_plan>` envelope and terminal parser contract remain unchanged.
|
|
47
|
+
- `INV-CAP-1` and `INV-RUN-2` remain the safety ceiling: a child has only the intersection of the
|
|
48
|
+
parent's frozen capabilities and its explicit profile allowlists, and it inherits plan mode. The
|
|
49
|
+
profile's name or instructions alone never make it eligible.
|
|
50
|
+
- `07-tools-and-gate.md`, `INV-GATE-3`: eligibility for a plan-mode spawn is part of the
|
|
51
|
+
argument-aware plan refusal and happens before policy, standing approvals or the person. The
|
|
52
|
+
subagent service also validates the request before launching the child.
|
|
53
|
+
- `14-surfaces-and-parity.md` and `docs/parity.md`: plan-mode delegation has the same restrictions
|
|
54
|
+
in the terminal and every host; the register records that mode-specific availability.
|
|
55
|
+
|
|
56
|
+
## Proposal
|
|
57
|
+
|
|
58
|
+
Keep plan mode request-scoped and read-only for repository and world actions, with only a bounded
|
|
59
|
+
read-only research-delegation exception. Improve the shared plan instructions in
|
|
60
|
+
`src/sessions/planMode.ts` so they define a repeatable, evidence-grounded workflow:
|
|
61
|
+
|
|
62
|
+
1. Classify the requested work (for example, code change, UI/design, research, or another deliverable)
|
|
63
|
+
and scale investigation and plan detail to that work. For repository work, inspect governing project
|
|
64
|
+
instructions and relevant source, callers and tests before asserting paths, symbols, behavior or
|
|
65
|
+
verification commands. For external research, use web sources only when needed and treat page content
|
|
66
|
+
as untrusted.
|
|
67
|
+
2. Separate discoverable facts from user-owned preferences. Do not ask the user questions repository
|
|
68
|
+
inspection can answer. Use `ask_user` for consequential preferences or requirements that materially
|
|
69
|
+
change the plan; batch related choices, state trade-offs and recommend a default. If interaction is
|
|
70
|
+
unavailable and the task can proceed, state the material assumption and choose the recommended
|
|
71
|
+
fallback. If the choice blocks a sound plan, ask before presenting a plan.
|
|
72
|
+
3. Select one recommended approach and leave no implementation-changing decision unresolved. Do not
|
|
73
|
+
invent paths, APIs, test commands or unrelated scope. Mark facts that could not be verified as
|
|
74
|
+
unknown. Include alternatives only when the user asks for them or a genuine trade-off requires a
|
|
75
|
+
user choice. For UI work, follow the project's design system and consider accessibility and
|
|
76
|
+
responsive behavior; use contextual `uiSketch` wireframes only when they clarify a real question.
|
|
77
|
+
4. Before finalizing, check that each requested outcome is represented, the proposed steps follow
|
|
78
|
+
from inspected evidence, important dependencies and edge cases are covered, and verification is
|
|
79
|
+
specific. Scale the output: a small fix gets a short plan; cross-cutting work gets ordered steps.
|
|
80
|
+
5. Return a complete plan in exactly one `<proposed_plan>` block with the title as its first `#`
|
|
81
|
+
heading. Use concise `Goal`, `Findings` when useful, `Steps`, `Verification`, and material
|
|
82
|
+
`Assumptions` sections. For code changes, steps name verified files/symbols and intended behavior;
|
|
83
|
+
verification names repository-grounded commands/checks and expected results without claiming they ran.
|
|
84
|
+
For non-code work, describe concrete deliverables and success checks instead of forcing file lists.
|
|
85
|
+
6. When revising an earlier plan, treat the latest user request as primary, incorporate prior answers,
|
|
86
|
+
preserve still-valid decisions, and return a complete replacement block rather than a delta.
|
|
87
|
+
7. For substantial work where independent investigation adds value, delegate bounded research using
|
|
88
|
+
the existing `spawn_subagent` and `wait_subagents` tools when they are in the frozen caller
|
|
89
|
+
capabilities. Use `explorer` for repository tracing and a new built-in `researcher` for source-based
|
|
90
|
+
external research. Give each child a focused question and require evidence (`path:line` or source
|
|
91
|
+
URLs), uncertainty and findings only; never delegate implementation. The parent verifies useful
|
|
92
|
+
claims and synthesizes them into its plan. Small tasks need not spawn a child, and user questions
|
|
93
|
+
remain with the parent.
|
|
94
|
+
|
|
95
|
+
Plan mode may spawn only profiles whose *effective resolved* tool and plugin allowlists are
|
|
96
|
+
explicit and confined to a plan research set. Add the `researcher` built-in and give `explorer` an
|
|
97
|
+
explicit safe plugin allowlist. Expose only eligible profiles in the plan's agent guidance; the
|
|
98
|
+
runtime check remains authoritative. Global or project overrides are checked by their resolved
|
|
99
|
+
capabilities, not trusted by name or role text; reject omitted profiles, profiles with
|
|
100
|
+
inherited unbounded allowlists, and profiles that include write/edit/Bash, connected-app actions or
|
|
101
|
+
other non-research capabilities. The gate makes this an argument-aware plan refusal before approvals;
|
|
102
|
+
the shared subagent service rechecks it before launch. A child keeps `plan: true`, remains within
|
|
103
|
+
the parent's frozen capability ceiling, cannot ask the user or spawn nested agents, and receives
|
|
104
|
+
only the intersection of parent tools/plugins, the profile allowlists and the plan research set.
|
|
105
|
+
`wait_subagents` can collect only the resulting eligible child work. Existing automatic join and
|
|
106
|
+
result-delivery behavior remains in force.
|
|
107
|
+
|
|
108
|
+
Keep the existing PlanCard's implement/edit behavior and same-session handoff. Reuse the existing
|
|
109
|
+
subagent methods, records and lifecycle; add no public server methods, writable plan files, new
|
|
110
|
+
approval tool, persistent plan state, or application-specific behavior. The mode-specific tool-set
|
|
111
|
+
exception is limited to eligible research delegation; it does not permit arbitrary profiles or
|
|
112
|
+
writes. Keep the plan section dynamic; increase its character budget from 2,000 to 4,000 only to fit
|
|
113
|
+
the richer instructions, and test that the compiled section is not cut.
|
|
114
|
+
|
|
115
|
+
Evaluate plan quality in the separate Evaluation repository, not by treating prompt-string assertions
|
|
116
|
+
as proof. Add a small representative planning task set and a rubric for source grounding, request
|
|
117
|
+
coverage, decision quality, actionability, verification and calibrated use of alternatives/questions.
|
|
118
|
+
Use deterministic checks where possible and blinded semantic review for qualities a keyword grader
|
|
119
|
+
cannot establish. Evaluation task/grader paths and adapter support for `plan: true` must be inspected
|
|
120
|
+
before selecting implementation points. Any changed task or grader must receive the required suite or
|
|
121
|
+
grader version bump. Compare current and candidate prompts on the same tasks, model, effort and tools;
|
|
122
|
+
run live trials only with explicit credential/model selection and authorization.
|
|
123
|
+
|
|
124
|
+
## Alternatives
|
|
125
|
+
|
|
126
|
+
- **Make only a short wording edit.** Rejected: it could remove the UI bias but would not define
|
|
127
|
+
evidence grounding, revision behavior, decision-completeness or how to measure improvement.
|
|
128
|
+
- **Copy oh-my-pi's plan workflow wholesale.** Rejected: it depends on writable `local://` plan files,
|
|
129
|
+
plan-file editing and `xd://propose` approval. This Harness prohibits those actions in plan mode and
|
|
130
|
+
already carries the proposed plan in session history for its PlanCard handoff.
|
|
131
|
+
- **Add a plan file, new approval tool or persisted plan lifecycle.** Deferred: these introduce new
|
|
132
|
+
behavior/state and are not needed to improve plan quality with the current handoff. Reconsider only
|
|
133
|
+
if controlled evaluations show the existing history-based handoff is insufficient.
|
|
134
|
+
- **Keep 3–5 UI directions as the default.** Rejected: alternatives are useful for explicit design
|
|
135
|
+
exploration or genuine preference decisions, not as a routine precondition for implementing a
|
|
136
|
+
clear UI request.
|
|
137
|
+
- **Allow every subagent profile in plan mode and rely on prompt wording.** Rejected: profiles can
|
|
138
|
+
be overridden and may inherit the parent's full tool/plugin set; a prompt is not an enforcement
|
|
139
|
+
boundary.
|
|
140
|
+
- **Allow only profiles whose names are `explorer` or `researcher`.** Rejected: a global or project
|
|
141
|
+
profile can replace either name with broader capabilities. Eligibility must be checked against the
|
|
142
|
+
effective explicit allowlists, with the plan gate and child capability intersection as enforcement.
|
|
143
|
+
- **Do not allow delegation in plan mode.** Rejected: independent read-only research can improve
|
|
144
|
+
coverage on substantial plans without granting implementation capability.
|
|
145
|
+
- **Do nothing.** Rejected: the current tests cannot detect unsupported claims, missing requested
|
|
146
|
+
outcomes, vague verification or unnecessary alternatives.
|
|
147
|
+
|
|
148
|
+
## Consequences
|
|
149
|
+
|
|
150
|
+
The plan-mode prompt becomes more prescriptive only while planning; its dynamic-section delivery
|
|
151
|
+
continues to leave the stable system prompt unchanged. Plan responses become more consistently
|
|
152
|
+
structured, while retaining the existing title/tag parser and PlanCard. Both the SDK and terminal
|
|
153
|
+
use the shared instructions and enforce the same profile eligibility before approvals. When the
|
|
154
|
+
parent already has subagent capability, a plan may create ordinary child-run records for eligible
|
|
155
|
+
read-only research; no child can gain tools beyond the parent's frozen set, and plan-mode refusals
|
|
156
|
+
still prevent writes and commands. The terminal and App expose the same conditional behavior, with
|
|
157
|
+
no host-only capability or presentation change. Existing saved histories, run records and old
|
|
158
|
+
`<proposed_plan>` blocks remain readable; no storage or public protocol schema changes. Planning
|
|
159
|
+
runs carry a larger dynamic section (up to 4,000 characters).
|
|
160
|
+
|
|
161
|
+
The Evaluation repository will gain versioned planning tasks and grading, including a case where
|
|
162
|
+
research delegation is useful and the parent must verify evidence. Its benchmark results are
|
|
163
|
+
separately versioned and are not product behavior. The Xingular Agent application requires no
|
|
164
|
+
presentation change unless evaluation identifies a genuine surface gap.
|
|
165
|
+
|
|
166
|
+
## Migration
|
|
167
|
+
|
|
168
|
+
No stored-data migration. Reuse the current subagent run records and methods; no server protocol or
|
|
169
|
+
capability schema migration is required. Preserve the opening and closing `<proposed_plan>` tags and
|
|
170
|
+
first-level title heading so old and new plans remain parseable. Existing plans are not rewritten;
|
|
171
|
+
revisions produce a new complete block in the existing conversation. The plan-mode tool set and
|
|
172
|
+
argument-aware refusal behavior change only as described above; all other approval behavior remains
|
|
173
|
+
unchanged.
|
|
174
|
+
|
|
175
|
+
## Checks
|
|
176
|
+
|
|
177
|
+
- Harness tests cover the revised prompt contract, section budget/no-cut behavior, dynamic
|
|
178
|
+
delivery/withdrawal, plan revisions and structured-plan parsing. Add profile and subagent cases for
|
|
179
|
+
eligible built-ins, disabled parent capabilities, omitted/unsafe profiles, global/project overrides,
|
|
180
|
+
child inheritance of `plan: true`, strict child tool/plugin intersection, blocked write/command
|
|
181
|
+
attempts before approvals, non-nested delegation and result delivery. Exercise the same eligibility
|
|
182
|
+
and refusal behavior through SDK and terminal plan runs. Run Harness typecheck and tests.
|
|
183
|
+
- After acceptance, update `docs/architecture/02-sessions-and-runs.md`,
|
|
184
|
+
`docs/architecture/06-plugins-and-capabilities.md`, `docs/architecture/07-tools-and-gate.md`,
|
|
185
|
+
`docs/architecture/14-surfaces-and-parity.md` and `docs/parity.md` in the implementation change.
|
|
186
|
+
Confirm both surfaces display and enforce the same mode-specific restriction.
|
|
187
|
+
- In Evaluation, add representative planning scenarios, including a research task where delegation
|
|
188
|
+
is useful and a case where it is not; grade evidence verification and verify that no child performs
|
|
189
|
+
writes. Version the suite/grader as required. Verify the adapter launches a real plan-mode run and
|
|
190
|
+
retains native tool/output evidence.
|
|
191
|
+
- Run a controlled baseline/candidate pilot with the same explicitly selected model, provider,
|
|
192
|
+
effort, tools and tasks; use repeated trials and blinded review. Do not call it a passing baseline
|
|
193
|
+
until complete. Live requests require explicit authorization and credentials. No live model comparison
|
|
194
|
+
was run for this implementation; it remains pending explicit model/credential selection and authorization.
|
|
195
|
+
- After a Harness implementation, run its required checks and the Xingular Agent checks. For
|
|
196
|
+
Evaluation runner/grader changes, run its offline dependency and unit-test commands.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0033
|
|
3
|
+
title: Rehydrate bounded run checkpoints after compaction
|
|
4
|
+
status: Accepted
|
|
5
|
+
created: 2026-10-25
|
|
6
|
+
updated: 2026-10-25
|
|
7
|
+
affects: [INV-PRM-1, INV-PRM-4, INV-RUN-8, 02-sessions-and-runs.md, 04-prompt.md, 11-terminal.md, 14-surfaces-and-parity.md, ADR-0032]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0033: Rehydrate bounded run checkpoints after compaction
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
Pi keeps the native transcript when it compacts context, but the model receives a summary and
|
|
15
|
+
recent messages. A run's latest checklist is already persisted as `checklist.updated`, and
|
|
16
|
+
continuations restore it, but the active run does not put that state back into model context after a
|
|
17
|
+
successful compaction. Dynamic plan instructions can likewise be summarized away during an SDK
|
|
18
|
+
run. This can leave an unfinished task without a reliable current step or planning contract.
|
|
19
|
+
|
|
20
|
+
## Affected rules
|
|
21
|
+
|
|
22
|
+
- **INV-PRM-1:** “The prompt is assembled only in `src/prompt/compile.ts`. Nothing else builds
|
|
23
|
+
model instructions.” The checkpoint must use that compiler.
|
|
24
|
+
- **INV-PRM-4:** “An update carries only changed dynamic sections, so an unchanged turn appends
|
|
25
|
+
nothing. A compaction on the active branch forces the full snapshot again.” This proposal adds
|
|
26
|
+
rehydration inside an active run, before its next model request.
|
|
27
|
+
- **INV-RUN-8:** Plan-mode tools and gate restrictions stay unchanged; checkpointing must not widen
|
|
28
|
+
the callable set or change the stable system prompt.
|
|
29
|
+
|
|
30
|
+
## Proposal
|
|
31
|
+
|
|
32
|
+
- Add a foundation-owned Pi extension, used by both `Sessions.run` and the Harness terminal. It
|
|
33
|
+
observes successful checklist tool results and the active request, and detects compaction through
|
|
34
|
+
the model-context projection.
|
|
35
|
+
- After compaction, on each model request while that run remains active, append one ephemeral,
|
|
36
|
+
hidden context message compiled by `src/prompt/compile.ts`. It contains the bounded user request,
|
|
37
|
+
the latest validated checklist (including current and pending items), and current plan-mode
|
|
38
|
+
instructions when applicable. Continuations may seed it from their already persisted checklist.
|
|
39
|
+
- Do not persist the checkpoint as another session entry or run event. Keep it scoped to the active
|
|
40
|
+
request, clear its in-memory state when that run settles or the branch changes, and never include
|
|
41
|
+
hidden reasoning. The existing native transcript, `checklist.updated` event and continuation
|
|
42
|
+
behavior remain the durable records.
|
|
43
|
+
- Keep all authorization in the existing plan-mode gate. The checkpoint only restores context; it
|
|
44
|
+
grants no tools or permissions.
|
|
45
|
+
|
|
46
|
+
## Alternatives
|
|
47
|
+
|
|
48
|
+
- **Rely on the compaction summary to retain progress.** Rejected: the summarizer is probabilistic
|
|
49
|
+
and may omit exact checklist state or dynamic plan instructions.
|
|
50
|
+
- **Add a checkpoint side file or run-event type.** Rejected: the run already records its checklist,
|
|
51
|
+
and an additional durable format would duplicate state and require protocol migration.
|
|
52
|
+
- **Persist a custom context message after every compaction.** Rejected: it would remain in future
|
|
53
|
+
requests after the active run ended. An ephemeral context projection keeps the checkpoint
|
|
54
|
+
request-scoped.
|
|
55
|
+
- **Do nothing.** Rejected: a bounded state checkpoint improves recovery without retaining the full
|
|
56
|
+
conversation in model context.
|
|
57
|
+
|
|
58
|
+
## Consequences
|
|
59
|
+
|
|
60
|
+
After compaction, each model request in the active run receives the checkpoint again; this adds a
|
|
61
|
+
bounded amount of input until the run settles. There is no model call, run-event schema, public
|
|
62
|
+
method, storage-layout, or stable-prefix change. Both the terminal and embedding sessions use the
|
|
63
|
+
same compiler and checkpoint semantics. Existing application event validators require no update.
|
|
64
|
+
|
|
65
|
+
## Migration
|
|
66
|
+
|
|
67
|
+
None. Existing run events and native session histories remain readable. Runs without a checklist or
|
|
68
|
+
active plan context receive no checkpoint. Interrupted-run continuation continues to use its
|
|
69
|
+
existing dynamic continuation section.
|
|
70
|
+
|
|
71
|
+
## Checks
|
|
72
|
+
|
|
73
|
+
Test the compiler's bounds and content, active compaction detection, per-request reinjection,
|
|
74
|
+
checklist updates, plan instruction restoration, and state clearing. Run Harness `npm run typecheck`,
|
|
75
|
+
`npm test`, and `npm run prove`, then the Xingular Agent App checks required for a Harness change.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0034
|
|
3
|
+
title: Conversation-scoped provider fast mode
|
|
4
|
+
status: Proposed
|
|
5
|
+
created: 2026-10-25
|
|
6
|
+
updated: 2026-10-25
|
|
7
|
+
affects: [INV-RUN-1, INV-RUN-3, INV-PAR-1, INV-PAR-2, 02-sessions-and-runs.md, 09-accounts-and-connectors.md, 10-server-protocol.md, 11-terminal.md, 12-storage.md, 14-surfaces-and-parity.md, parity, App thread runtime settings]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0034: Conversation-scoped provider fast mode
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
People cannot request a provider's native priority/fast service for a conversation without changing
|
|
15
|
+
models or reasoning effort. Adding a UI-only flag would not reach Pi's provider request, and
|
|
16
|
+
forwarding an unchecked option would send unsupported fields to APIs that do not implement it.
|
|
17
|
+
The terminal and App must agree on the setting, restore it with the conversation, and explain when
|
|
18
|
+
the selected provider/API/model cannot honor it.
|
|
19
|
+
|
|
20
|
+
Evidence: Pi 1.2.0 exposes `serviceTier` for OpenAI Responses and Codex Responses requests. The
|
|
21
|
+
Anthropic SDK exposes `speed: 'fast'` for beta Messages; Anthropic documents the eligible Claude
|
|
22
|
+
models and the preview beta requirement at
|
|
23
|
+
https://platform.claude.com/docs/en/build-with-claude/fast-mode. The existing Harness terminal has
|
|
24
|
+
a persistent Pi history branch, while the App stores `ThreadRuntimeSettings` with each conversation
|
|
25
|
+
and passes `SessionRunInput` through its sidecar.
|
|
26
|
+
|
|
27
|
+
## Affected rules
|
|
28
|
+
|
|
29
|
+
- **INV-RUN-1** currently says: “A run pins one account, one variant version and one capability set
|
|
30
|
+
when it starts. None of them changes during the run.” The selected service tier must also be fixed
|
|
31
|
+
for the whole run; it must not alter the model or effort.
|
|
32
|
+
- **INV-RUN-3** currently says: “Every run event is validated against its schema, redacted,
|
|
33
|
+
persisted, and only then relayed to listeners, in order.” A provider rejection that disables fast
|
|
34
|
+
mode needs a validated event so both surfaces can persist the conversation setting as off.
|
|
35
|
+
- **INV-PAR-1** requires every host capability to be a Harness capability surfaced by the terminal.
|
|
36
|
+
- **INV-PAR-2** requires both terminal and host surfaces to pass acceptance for a capability.
|
|
37
|
+
|
|
38
|
+
## Proposal
|
|
39
|
+
|
|
40
|
+
Add an optional `fastMode` boolean to `SessionRunInput`, defaulting to `false`. A run captures this
|
|
41
|
+
value at start and uses the same value for all model requests in that run. The option changes only a
|
|
42
|
+
provider-native request parameter; it never changes the selected model, reasoning effort, prompt, or
|
|
43
|
+
tool set. Fast mode is an attended conversation setting; automated, refinement, reflection,
|
|
44
|
+
subagent, and side-question runs do not inherit it implicitly.
|
|
45
|
+
|
|
46
|
+
Use a conservative, explicit provider capability map based on the resolved model's provider, API,
|
|
47
|
+
model id, and endpoint:
|
|
48
|
+
|
|
49
|
+
- OpenAI Responses and Codex Responses use their native `service_tier: 'fast'` option.
|
|
50
|
+
- Eligible Anthropic Messages models use `speed: 'fast'`; preview models also receive the required
|
|
51
|
+
fast-mode beta header, composed with any existing headers and Pi payload hooks.
|
|
52
|
+
- Only documented model/API combinations on verified official endpoints are supported. Unknown
|
|
53
|
+
APIs, custom endpoints, proxies and other providers are unsupported until verified. The model
|
|
54
|
+
capability response reports both support and a short reason when unavailable.
|
|
55
|
+
|
|
56
|
+
Unsupported combinations never receive a fast request. Attempting to enable the setting leaves it
|
|
57
|
+
off and explains why. Selecting an unsupported model while fast mode is on turns the setting off
|
|
58
|
+
with an explanation. If a provider explicitly rejects the fast/priority option after a supported
|
|
59
|
+
request was sent, do not retry at standard priority: surface the provider error, emit a validated
|
|
60
|
+
`fast_mode.disabled` run event, and disable fast mode for later requests in that conversation.
|
|
61
|
+
|
|
62
|
+
Persist the conversation setting at the owning surface:
|
|
63
|
+
|
|
64
|
+
- The terminal writes an invisible custom entry to Pi's native history branch. New sessions start
|
|
65
|
+
off; resumed sessions and branch navigation restore the last setting on that branch. A failed
|
|
66
|
+
fast request appends the off state to the branch.
|
|
67
|
+
- The App adds `fastMode` to its existing per-thread `ThreadRuntimeSettings` and passes it with each
|
|
68
|
+
run. Missing values in older thread files mean off. The App handles `fast_mode.disabled` by
|
|
69
|
+
saving the setting as off.
|
|
70
|
+
|
|
71
|
+
Expose `/fast`, `/fast on`, and `/fast off` in the terminal and App composer. The App also offers a
|
|
72
|
+
Fast on/off row in the existing thread Account/Model/Effort settings popover. The terminal status
|
|
73
|
+
line shows a shimmering `⚡ fast` immediately after effort when enabled. Both surfaces explain that
|
|
74
|
+
fast mode may cost more and does not guarantee lower latency. New conversations default off; resume
|
|
75
|
+
restores the existing conversation setting.
|
|
76
|
+
|
|
77
|
+
The account model capability response gains `fastModeSupported` and an optional explanatory reason
|
|
78
|
+
so the App can disable the setting before a request. No new Harness storage directory or run-record
|
|
79
|
+
file is added; the terminal setting uses native Pi history, the App setting uses its existing thread
|
|
80
|
+
record, and the rejection event uses the existing run event store.
|
|
81
|
+
|
|
82
|
+
## Alternatives
|
|
83
|
+
|
|
84
|
+
- **Do nothing.** This avoids a new provider option but leaves no supported way to request native
|
|
85
|
+
priority.
|
|
86
|
+
- **Change model or effort to imply fast mode.** Rejected: those are independent user choices and
|
|
87
|
+
would not select the provider's priority service.
|
|
88
|
+
- **Forward a generic priority field to every provider or proxy.** Rejected: support and semantics
|
|
89
|
+
are API-specific, and an unknown endpoint must not receive an unverified option.
|
|
90
|
+
- **Retry at standard priority after rejection.** Rejected: this hides the provider's error and
|
|
91
|
+
changes the requested service without consent.
|
|
92
|
+
- **Keep the setting only in the App.** Rejected by INV-PAR-1/2: the terminal must offer the same
|
|
93
|
+
conversation capability.
|
|
94
|
+
|
|
95
|
+
## Consequences
|
|
96
|
+
|
|
97
|
+
`SessionRunInput`, the model-capability response, and the run-event schema change. The terminal,
|
|
98
|
+
App sidecar, App thread settings UI, and both surfaces' command handling change. No prompt compiler,
|
|
99
|
+
model-selection, effort-selection, or tool-gate behavior changes. Because fast mode can cost more,
|
|
100
|
+
the UI must disclose that; no latency improvement is promised. A provider error remains visible and
|
|
101
|
+
is not hidden by a normal-priority retry.
|
|
102
|
+
|
|
103
|
+
## Migration
|
|
104
|
+
|
|
105
|
+
No native-history or App thread migration is required. A missing terminal custom entry and a missing
|
|
106
|
+
App `fastMode` field both mean off. Existing provider and run-event readers remain compatible with
|
|
107
|
+
old records; the App's run-event schema must be updated before it consumes the new event. Resuming a
|
|
108
|
+
conversation restores its setting; starting a separate conversation defaults off.
|
|
109
|
+
|
|
110
|
+
## Checks
|
|
111
|
+
|
|
112
|
+
- Unit tests for provider/API/model/endpoint support and native request-option composition, including
|
|
113
|
+
preserving Anthropic reasoning-summary hooks and headers.
|
|
114
|
+
- Harness tests for preflight rejection, per-run stability, provider rejection without standard-tier
|
|
115
|
+
retry, validated disable events, and terminal setting persistence across resume/fork/navigation.
|
|
116
|
+
- App tests for legacy thread defaults, persistence, capability gating, `/fast`, the settings row,
|
|
117
|
+
and handling `fast_mode.disabled`.
|
|
118
|
+
- Run Harness `npm run typecheck`, `npm test`, and `npm run prove`; App `npm run typecheck`,
|
|
119
|
+
`npm test`, `npm run check:layers`, and `cd src-tauri && cargo test`; exercise the terminal status
|
|
120
|
+
line in a local PTY. Do not make live-provider requests as part of these checks.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0035
|
|
3
|
+
title: Retain terminal subagent status until the next run
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-25
|
|
6
|
+
updated: 2026-11-19
|
|
7
|
+
affects: [11-terminal.md, terminal-tui.md]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0035: Retain terminal subagent status until the next run
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
The terminal shows subagent descendants under the working status line and in `/subagents:subagents`, but removes them when the parent run settles. The terminal specification says finished rows remain only until the parent settles. This makes the final child statuses unavailable during the idle interval before the next run, even though the terminal itself remains open.
|
|
15
|
+
|
|
16
|
+
Evidence: `src/terminal/controller.ts` clears the volatile `SubagentMonitor` in `finish()` and `subagentSnapshot()` returns an empty list without an active run. `src/terminal/opentui/app.ts` polls only during an active run and clears its local rows on `agent_settled`. The current retention boundary is documented in `docs/architecture/11-terminal.md` and `docs/terminal-tui.md`.
|
|
17
|
+
|
|
18
|
+
## Affected rules
|
|
19
|
+
|
|
20
|
+
- `docs/architecture/11-terminal.md` currently says: “Finished rows remain until the parent run settles. The projection is volatile and scoped to that parent run; it is not a persisted event or public server method.”
|
|
21
|
+
- `docs/terminal-tui.md` currently says the projection “keeps finished child rows until that parent settles.”
|
|
22
|
+
|
|
23
|
+
## Proposal
|
|
24
|
+
|
|
25
|
+
Retain the latest parent run's subagent projection in the terminal after that parent settles. Keep showing the compact rows and the `/subagents:subagents` roster, with each child's final known status, until the next parent run starts. At the next run's start, clear the old projection before displaying that run's children. A final settlement read should capture child states that the periodic monitor poll has not yet reflected; overlapping or late reads must not replace data from a newer run.
|
|
26
|
+
|
|
27
|
+
The projection remains volatile, read-only, and limited to the existing redacted fields. It is scoped to the latest parent run for the current terminal session, and is cleared when the session is replaced or the terminal is disposed. It remains neither a persisted event nor a public server method. No run-event schema, storage, or host API changes.
|
|
28
|
+
|
|
29
|
+
## Alternatives
|
|
30
|
+
|
|
31
|
+
- **Do nothing.** The last statuses remain unavailable once the parent settles.
|
|
32
|
+
- **Retain only the frontend's last poll.** This can leave a child marked active after it has completed because monitor updates may fall between one-second polls.
|
|
33
|
+
- **Persist a separate status snapshot.** Rejected: the requested lifetime is only until the next run, and retaining the existing volatile projection is sufficient.
|
|
34
|
+
|
|
35
|
+
## Consequences
|
|
36
|
+
|
|
37
|
+
The terminal monitor and presentation retain one run's already-redacted subagent rows while idle. The next run replaces them. Other Harness capabilities and the App surface are unchanged. There is no new persistent data, migration, public method, or event contract.
|
|
38
|
+
|
|
39
|
+
## Migration
|
|
40
|
+
|
|
41
|
+
None. Existing terminals clear their in-memory monitor on restart; the new behavior applies to runs observed by the updated terminal process.
|
|
42
|
+
|
|
43
|
+
## Checks
|
|
44
|
+
|
|
45
|
+
- Harness `npm run typecheck`, `npm test` (150 files; 1,141 passed, 3 skipped), focused terminal tests (61 passed), `npm run build`, and `npm run prove` passed.
|
|
46
|
+
- App `npm run typecheck`, `npm test` (567 App and 67 sidecar tests passed), `npm run check:layers`, and `cd src-tauri && cargo test` (167 passed, 1 ignored) passed.
|
|
47
|
+
- The initial full PTY run failed waiting for `1 of 1` in its plan-question flow, and `--questions-only` failed waiting for `UI layout`. After the question-dock/layout fixes, `python3 scripts/verify-terminal.py --cli dist/cli.js --sizes 40x20,80x24,100x30` passed 19 interaction groups at each size with the tty restored (2026-11-19). Focused unit and real-socket tests cover subagent retention. No real-model request was made.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0036
|
|
3
|
+
title: First-class Harness terminal commands
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-10-25
|
|
6
|
+
updated: 2026-10-25
|
|
7
|
+
affects: [INV-PLG-10, INV-TUI-7, 06-plugins-and-capabilities.md, 11-terminal.md, 14-surfaces-and-parity.md, terminal-tui.md, parity, ADR-0031]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0036: First-class Harness terminal commands
|
|
11
|
+
|
|
12
|
+
## Problem
|
|
13
|
+
|
|
14
|
+
Harness-owned pages for subagents, agent profiles, recorded-run inspection, diagnostics and worktrees are currently exposed through `BuiltinPluginRegistry` command metadata. This couples their terminal command namespace and discoverability to a feature-plugin registry even though these required features are not optional plugin toggles. It also makes ordinary Harness commands appear as plugin commands in help and completion.
|
|
15
|
+
|
|
16
|
+
Evidence: `src/plugins/builtin.ts` registers these commands on the `subagents`, `history`, `doctor` and `worktrees` modules; `src/terminal/tui/pluginCommands.ts` maps them to pages; `src/terminal/tui/commands.ts` builds canonical namespaced completion and dispatch from `BuiltinPluginRegistry`.
|
|
17
|
+
|
|
18
|
+
## Affected rules
|
|
19
|
+
|
|
20
|
+
- **INV-PLG-10** currently couples a built-in feature's descriptor, tools, server methods and terminal command metadata to one registry owner. Plugin-owned commands should remain with their feature modules, but Harness core commands should be owned by the terminal's core command registry.
|
|
21
|
+
- **INV-TUI-7** requires every plugin-owned command to use an owner prefix. The commands in this proposal become Harness core commands, not plugin-owned commands; all other plugin and extension commands retain owner-qualified routes.
|
|
22
|
+
- **14 Surfaces and parity, Contracts** describes the current terminal command namespace. The command changes are presentation only and add no capability or server method.
|
|
23
|
+
|
|
24
|
+
## Proposal
|
|
25
|
+
|
|
26
|
+
Register these routes directly in the core terminal command table and dispatch them to the existing Harness pages:
|
|
27
|
+
|
|
28
|
+
- `/doctor` opens readiness diagnostics.
|
|
29
|
+
- `/worktree` opens managed worktrees.
|
|
30
|
+
- `/trajectory [run-id]` opens recorded runs and events.
|
|
31
|
+
- `/subagents` opens the subagent roster; `/agents` opens agent profiles.
|
|
32
|
+
|
|
33
|
+
Keep `/history` (and its `/tree` alias) for session branch navigation. Keep `/mcp` and `/connections` as first-class entries into the Connections browser. All other core commands stay unprefixed. Plugin-owned built-in and extension commands continue to use `/<owner-prefix>:<command>`; annotations retain their `annotate` namespace and default route.
|
|
34
|
+
|
|
35
|
+
The `doctor`, `worktrees`, `history` and `subagents` feature descriptors remain registered and required. Their services, server methods, tools and capability behavior do not move. Only their terminal command metadata and dispatch move to the core command registry. Core commands reserve their names under the existing terminal command collision policy.
|
|
36
|
+
|
|
37
|
+
For one release, accept the prior owner-qualified and `/plugin:<command>` forms for the routes being promoted as hidden compatibility aliases. Do not show aliases in help or completion. Remove them after the compatibility release.
|
|
38
|
+
|
|
39
|
+
## Alternatives
|
|
40
|
+
|
|
41
|
+
- Keep these routes under owner prefixes. Rejected: it keeps core terminal actions classified as plugin commands and exposes redundant namespaces for required Harness features.
|
|
42
|
+
- Remove the feature descriptors from `BuiltinPluginRegistry`. Rejected: those descriptors still own Harness tools, server methods and capability contributions; only terminal command ownership needs to change.
|
|
43
|
+
- Replace `/history` with the trajectory page. Rejected: `/history` already navigates the current session's branches. Keep it and expose the run trajectory as `/trajectory`.
|
|
44
|
+
- Do nothing. Rejected: help, completion and dispatch continue to treat these core pages as plugin-owned commands.
|
|
45
|
+
|
|
46
|
+
## Consequences
|
|
47
|
+
|
|
48
|
+
Help, completion, slash recognition and dispatch use the core command table for the promoted commands. The `/mcp` command remains in that table and keeps its Connections behavior. Plugin command-prefix collision checks remain in force for plugin-owned commands. No capability set, server protocol, account data, run record or stored resource changes.
|
|
49
|
+
|
|
50
|
+
## Migration
|
|
51
|
+
|
|
52
|
+
No stored-data migration. Accept the previous qualified forms as hidden aliases for one release; scripts and keybindings should use the bare canonical names. `/history` remains the branch picker and `/trajectory` is the recorded-run page.
|
|
53
|
+
|
|
54
|
+
## Checks
|
|
55
|
+
|
|
56
|
+
- Registry and terminal tests cover bare routes, help, completion, slash recognition, compatibility aliases, prompt-name collisions, `/history`, `/mcp` and unchanged plugin namespace routing.
|
|
57
|
+
- Harness `npm run typecheck`, `npm test` (150 files; 1,143 passed, 3 skipped) and `npm run prove` passed.
|
|
58
|
+
- Xingular Agent `npm run typecheck`, `npm test` (App and sidecar suites: 634 passed; signing tests: 7 passed, 1 skipped), `npm run check:layers` and `cargo test` (167 passed, 1 ignored) passed.
|
|
59
|
+
- Isolated terminal PTY checks passed for `/help`, composer modes, and the `/trajectory` Runs/Events page. `/help` screen-layout assertions were skipped because optional `pyte` is unavailable.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PROP-0037
|
|
3
|
+
title: Default filesystem writes to the active project workspace
|
|
4
|
+
status: Implemented
|
|
5
|
+
created: 2026-11-19
|
|
6
|
+
updated: 2026-11-19
|
|
7
|
+
affects: [INV-GATE-1, INV-GATE-3, INV-GATE-8, INV-RUN-1, INV-TUI-8, 02-sessions-and-runs.md, 04-prompt.md, 07-tools-and-gate.md, 10-server-protocol.md, 11-terminal.md, 12-storage.md, 14-surfaces-and-parity.md, parity]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PROP-0037: Default filesystem writes to the active project workspace
|
|
11
|
+
|
|
12
|
+
> **Implementation update:** This proposal records the original pathname-check and
|
|
13
|
+
> denial-triggered-retry design. Security review found those details bypassable; accepted
|
|
14
|
+
> [PROP-0039](PROP-0039-workspace-boundary-hardening.md) replaces them with operation-time atomic
|
|
15
|
+
> writes and explicit pre-execution outside-scope approval. Follow the current contracts in
|
|
16
|
+
> [07 Tools and the gate](../07-tools-and-gate.md) and [11 Terminal](../11-terminal.md).
|
|
17
|
+
|
|
18
|
+
## Problem
|
|
19
|
+
|
|
20
|
+
Harness tells the model that read-only file tools can use any path the process can read, and that the working folder is not a repository boundary (`src/prompt/compile.ts`; `docs/architecture/07-tools-and-gate.md`, Native file paths). The same page says `edit`, `write` and `bash` pass through the existing gate and policy, but that gate has no built-in workspace-root rule. The SDK's `ToolPolicy` is optional, and the terminal's default approval flow is not a filesystem sandbox (`src/sessions/policy.ts`, `src/sessions/sessions.ts`, `src/terminal/terminals.ts`). Thus a session has no Harness-wide default that keeps model-initiated file mutations in its project.
|
|
21
|
+
|
|
22
|
+
## Affected rules
|
|
23
|
+
|
|
24
|
+
- **INV-GATE-8**, as it stands: “Native read-only file access is bounded by process and operating-system permissions, not by the repository root. Absolute and `~` paths are valid inputs. This does not change the gate or permissions for writes and commands.” The first two sentences remain; the final sentence changes because the Harness will scope writes and shell file effects.
|
|
25
|
+
- **INV-GATE-3**, as it stands: “Order is fixed: capability and plan-mode refusals, then the policy's scope and authorize, then standing approvals, then the person, then authorize again.” The mandatory workspace check must join this ordering without allowing a host policy to silently broaden it; an approved one-call escape must be authorized before the operation runs.
|
|
26
|
+
- **INV-RUN-1**, as it stands: “A run pins one account, one variant version and one capability set when it starts. None of them changes during the run.” A run will also pin its resolved workspace-write root so a continuation or later filesystem change cannot silently widen its scope.
|
|
27
|
+
- **INV-TUI-8**, added by implementation: the terminal uses the same Harness-pinned root and workspace-write policy as SDK sessions; it cannot widen the boundary through its private socket or native extension.
|
|
28
|
+
|
|
29
|
+
## Proposal
|
|
30
|
+
|
|
31
|
+
1. **Preserve broad reads.** Read-only filesystem tools retain their existing process/OS-permission behavior. The write boundary applies to model-controlled filesystem mutations, not to reads.
|
|
32
|
+
2. **Resolve one trusted workspace root per run.** After Harness has selected the effective `cwd` (including a managed worktree), resolve the nearest ancestor containing `.git`, canonicalize it, and store it as `RunRecord.workspaceRoot`. If there is no Git repository, use the canonical `cwd`. A worktree is its own active workspace. Do not infer the root from model-supplied tool arguments or an unvalidated `projectId`.
|
|
33
|
+
3. **Default file writes to that root.** Native `edit` and `write` calls may mutate paths inside the root. Resolve paths canonically and reject symlink/path escapes. Paths outside it require approval for that operation. A per-tool remembered grant does not authorize an outside write.
|
|
34
|
+
4. **Enforce shell writes, not just shell-call names.** Run model Bash—including the initial `!` command—under an OS-enforced workspace-write sandbox. Shell commands may read as before but may write only under `workspaceRoot`; `/tmp` and other external paths are outside the default write scope. A denied outside write produces a clear denial and a one-shot escalation path for that command. Approval reruns only that command with the wider access needed. Fail closed when workspace-mode enforcement is unavailable; never silently run it unconfined.
|
|
35
|
+
5. **Use existing approval controls.** Outside writes require a person’s one-call approval. Mark the request human-only so remembered grants cannot answer it. The existing Full Permission switch may automatically grant this explicitly eligible escape; it is off by default. Preserve hard policy denials and the existing read-only, plan, unattended, probe, improver and reflection restrictions. Full Permission does not add tools or bypass those restrictions.
|
|
36
|
+
6. **Keep artifacts in the project by default.** Files created for the task, including deliverables, belong inside the active workspace. Prefer an existing project convention such as `artifacts/` or `outputs/` when present; do not require or create a universal output folder. An explicitly approved outside write remains possible.
|
|
37
|
+
7. **Make the policy Harness-owned and shared.** Apply the same root and decision in SDK sessions and the standalone terminal. Host `ToolPolicy` may impose stricter limits, but cannot waive the Harness boundary except through the same explicit approval path. Connected-app and other non-filesystem side effects remain governed by their existing tool policies.
|
|
38
|
+
|
|
39
|
+
## Alternatives
|
|
40
|
+
|
|
41
|
+
- **Prompt-only “write in the repo” guidance.** Rejected: it expresses a preference but does not prevent absolute paths, symlink escapes or shell commands from writing elsewhere.
|
|
42
|
+
- **Rely only on the host `ToolPolicy`.** Rejected: it is optional and host-specific, so terminal and embedded sessions could differ.
|
|
43
|
+
- **Check only `edit`/`write` paths or parse Bash strings.** Rejected: shell commands can write through arbitrary programs, redirection, subprocesses and indirect paths; string inspection is not a reliable boundary.
|
|
44
|
+
- **Allow all OS temp directories by default.** Rejected for this proposal: the requested default is project-only. A temp location outside the workspace needs the same approval as any other outside write.
|
|
45
|
+
- **Do nothing.** Keeps the existing broad behavior and leaves repository scope to prompt guidance or host configuration.
|
|
46
|
+
|
|
47
|
+
## Consequences
|
|
48
|
+
|
|
49
|
+
- Add an optional, backward-compatible `workspaceRoot` field to `RunRecord`; new runs set it, old records remain readable, and continuations of older runs derive it from their recorded working directory. No separate workspace registry or output directory is introduced.
|
|
50
|
+
- The native file tools and shell need different enforcement mechanisms: canonical target checks for file mutations and an OS sandbox for shell subprocesses. The same workspace policy and approval semantics must be used by SDK and terminal paths.
|
|
51
|
+
- The `RunRecord` schema is returned over the server protocol, so embedding hosts and sidecar schemas must tolerate the additive field. The Harness remains responsible for computing it; a host cannot nominate an arbitrary wider root.
|
|
52
|
+
- Workspace mode fails closed on unsupported or unavailable sandbox backends. A person can still explicitly authorize one outside operation, or use the existing Full Permission switch where permitted.
|
|
53
|
+
- Standard commands that need to write outside the project (including to `/tmp`) may need an approved one-shot retry. Project-local artifact/output conventions continue to work without extra approval.
|
|
54
|
+
|
|
55
|
+
## Migration
|
|
56
|
+
|
|
57
|
+
No stored files are rewritten. Parsers accept older run records without `workspaceRoot`; a continuation derives the root from the earlier record's `workingDirectory` and stores it on the new run. New runs pin the effective root after worktree selection. Existing remembered tool grants remain stored but do not satisfy outside-write approvals. The current Full Permission switch remains off/on as configured; it is the only standing choice that may approve a boundary escape, and read-only or unattended facts continue to disable it.
|
|
58
|
+
|
|
59
|
+
## Checks
|
|
60
|
+
|
|
61
|
+
- Workspace resolution, canonical file-write inspection, session/terminal approvals and sandbox tests cover Git roots, worktrees, non-Git folders, symlink escapes, broad reads, remembered-grant rejection, eligible Full Permission, hard restrictions, fail-closed behavior and one-shot retries. Passed.
|
|
62
|
+
- Harness `npm run typecheck`, full `npm test` (153 files; 1,167 passed, 3 skipped), and `npm run prove` passed on 2026-11-19.
|
|
63
|
+
- The App sidecar contract verifies `runs.find` returns the pinned root. App `npm run typecheck`, `npm test` (571 renderer and 67 sidecar tests passed; 7 development-signing tests passed, 1 skipped), `npm run check:layers`, and `cd src-tauri && cargo test` (169 passed, 1 ignored) passed. Rust compilation emitted warnings.
|