@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,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0079
|
|
3
|
+
title: Phase-led flexible reporting guidance
|
|
4
|
+
status: accepted
|
|
5
|
+
created: 2026-11-02
|
|
6
|
+
updated: 2026-11-02
|
|
7
|
+
amends: ADR-0076 (report phases, reader context, verification honesty, subagent reports and headings)
|
|
8
|
+
related:
|
|
9
|
+
- ADR-0076
|
|
10
|
+
- STUDY-0009
|
|
11
|
+
---
|
|
12
|
+
# ADR-0079 — Phase-led flexible reporting guidance
|
|
13
|
+
|
|
14
|
+
> Amends [ADR-0076](ADR-0076-codex-final-answer-verbatim.md): keep its self-contained, outcome-first
|
|
15
|
+
> report and flexible structure, while strengthening the reader, evidence, heading and subagent
|
|
16
|
+
> guidance based on [STUDY-0009](../study/STUDY-0009-claude-code-reporting.md).
|
|
17
|
+
|
|
18
|
+
## Context
|
|
19
|
+
|
|
20
|
+
The study compared Claude Code's external and internal prompt phases with the Harness reporting
|
|
21
|
+
section. It found three useful gaps: the Harness did not explicitly help a reader who has lost the
|
|
22
|
+
thread, did not say directly how to report checks that were not run or failed, and gave subagents no
|
|
23
|
+
caller-facing report contract. The in-flight progress sentence also appeared in both `writing` and
|
|
24
|
+
`reporting`, although `reporting` shapes the final answer.
|
|
25
|
+
|
|
26
|
+
The user asked for phase-led final-report guidance and frequent Markdown `#` / `##` headings such as
|
|
27
|
+
"What changed", "Checks" and "Things to know", while explicitly rejecting a fixed heading vocabulary.
|
|
28
|
+
|
|
29
|
+
## Decision
|
|
30
|
+
|
|
31
|
+
- Keep the final reply self-contained, outcome-first, evidence-led and scaled to the work. Organize
|
|
32
|
+
the guidance in final-report order: reader and purpose, opening, body, evidence and honesty,
|
|
33
|
+
person-owned next step when one exists, headings, lists and tables, length, references and
|
|
34
|
+
formatting, then examples and pre-send review. Follow citation and file-link rules already
|
|
35
|
+
supplied by the active session or host. Pre-tool narration and in-flight updates remain in their existing prompt section;
|
|
36
|
+
remove only the duplicate progress-update sentence from `reporting`. Do not add an away-recap
|
|
37
|
+
surface or numeric word caps.
|
|
38
|
+
- Add the cold-reader test: assume the person may have stepped away and lost the thread; give enough
|
|
39
|
+
context to pick the work back up and match the explanation to cues about their experience.
|
|
40
|
+
- State verification honestly. Say when a check was not run, never imply that it passed, report
|
|
41
|
+
failures with relevant output, and state passes plainly.
|
|
42
|
+
- When writing as a subagent, give the caller a concise account of work done and key findings. The
|
|
43
|
+
caller integrates and relays it. Include absolute paths and useful evidence, snippets only when
|
|
44
|
+
exact text is load-bearing, and no recap of code merely read.
|
|
45
|
+
- For substantive replies with distinct parts, often use Markdown headings: a `#` title when useful
|
|
46
|
+
and `##` headings for meaningful sections. Choose labels from the reply's actual content. Examples
|
|
47
|
+
such as "What changed", "Checks" and "Things to know" are optional wording, not a fixed list or
|
|
48
|
+
template. Short replies may stay in prose; headings are never forced and empty sections are not
|
|
49
|
+
added.
|
|
50
|
+
- Revise one worked example to demonstrate a content-specific `#` / `##` structure and retain a
|
|
51
|
+
short heading-free example. Keep the 12,000-character reporting budget.
|
|
52
|
+
|
|
53
|
+
## Consequences
|
|
54
|
+
|
|
55
|
+
- Reporting behavior changes the stable prompt prefix. Existing live terminal sessions retain the
|
|
56
|
+
pack they started with; new sessions receive the updated text. Cache reuse after the prefix change
|
|
57
|
+
must be measured only with real application requests and the account owner's permission
|
|
58
|
+
(INV-PRM-8).
|
|
59
|
+
- No storage, server protocol or tool capability changes.
|
|
60
|
+
- The guidance favors headings for substantial multi-part reports without prescribing section names
|
|
61
|
+
or forcing headings on simple replies.
|
|
62
|
+
|
|
63
|
+
## Alternatives
|
|
64
|
+
|
|
65
|
+
- **Require a fixed set of report headings.** Rejected: the user wants headings chosen for the
|
|
66
|
+
content, and fixed labels become a template.
|
|
67
|
+
- **Keep reports prose-only unless a heading is requested.** Rejected: substantial reports should
|
|
68
|
+
use headings often enough to make their parts easy to find.
|
|
69
|
+
- **Move progress updates or add an away recap to reporting.** Rejected: in-flight updates already
|
|
70
|
+
belong in `writing`, and this harness has no away-recap surface.
|
|
71
|
+
- **Adopt Claude Code's numeric word limits.** Rejected: the study did not establish their quality
|
|
72
|
+
effect for this Harness.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0080
|
|
3
|
+
title: Use a fixed 80-column canvas for question sketches
|
|
4
|
+
status: accepted
|
|
5
|
+
created: 2026-11-28
|
|
6
|
+
updated: 2026-11-28
|
|
7
|
+
related: [PROP-0026, ADR-0027, ADR-0029, INV-PAR-1, INV-PAR-2]
|
|
8
|
+
supersedes: null
|
|
9
|
+
superseded_by: null
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-0080 — Use a fixed 80-column canvas for question sketches
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
The shared question-sketch contract permits up to 80 printable ASCII columns, but neither validation
|
|
17
|
+
nor the tool guidance required the model to use that full width. The terminal's display width also
|
|
18
|
+
followed the viewport, so the same sketch could appear at different widths on different terminals.
|
|
19
|
+
A fixed design canvas gives the model room for contextual UI detail and makes terminal previews
|
|
20
|
+
consistent without breaking callers that provide shorter sketches.
|
|
21
|
+
|
|
22
|
+
## Decision
|
|
23
|
+
|
|
24
|
+
Ask the model to design detailed `uiSketch` wireframes on a fixed 80-column canvas. This remains
|
|
25
|
+
guidance: preserve the existing validator, which allows sketches shorter than 80 columns and does
|
|
26
|
+
not require trailing spaces.
|
|
27
|
+
|
|
28
|
+
The terminal projects every valid source sketch to 80 content columns, padding shorter rows and
|
|
29
|
+
extending standalone divider rows to the same width. Keep the outer preview frame no wider than the
|
|
30
|
+
available dock; the content remains horizontally pannable when the canvas does not fit. Keep the
|
|
31
|
+
existing structural-border projection within the canvas. Padding and projected glyphs are display-only;
|
|
32
|
+
source events and answer payloads remain unchanged.
|
|
33
|
+
|
|
34
|
+
The App may keep its literal ASCII preview and overflow behavior. Both surfaces use the same source
|
|
35
|
+
contract and model guidance; identical preview typography is not required. This amends only the
|
|
36
|
+
viewport-relative canvas and divider sizing in [ADR-0027](ADR-0027-connected-sketch-display.md) /
|
|
37
|
+
[PROP-0026](../architecture/proposals/PROP-0026-connected-sketch-display.md). Their structural
|
|
38
|
+
recognition and persistence rules remain in force.
|
|
39
|
+
|
|
40
|
+
## Consequences
|
|
41
|
+
|
|
42
|
+
Short source rows appear padded in the terminal but remain unchanged in history. A model may still
|
|
43
|
+
return a narrower drawing because canvas usage is not schema-enforced. There is no data migration,
|
|
44
|
+
wire-contract change, or answer-payload change.
|
|
45
|
+
|
|
46
|
+
## Verification
|
|
47
|
+
|
|
48
|
+
Cover fixed width and padding in unit tests; verify the viewport-bounded frame and horizontal panning
|
|
49
|
+
at compact, standard, and wide PTY sizes. Confirm persisted sketch text and submitted answers remain
|
|
50
|
+
unchanged. Fixture verification does not guarantee every live-model sketch uses the full canvas.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0081
|
|
3
|
+
title: No work-slice budget by default
|
|
4
|
+
status: accepted
|
|
5
|
+
created: 2026-11-02
|
|
6
|
+
updated: 2026-11-02
|
|
7
|
+
related: [PROP-0041, PROP-0044, ADR-0070, ADR-0075, INV-RUN-13]
|
|
8
|
+
supersedes: null
|
|
9
|
+
superseded_by: null
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-0081 — No work-slice budget by default
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
PROP-0041 bounded a reply at a number of tool calls and minutes, then handed off, and ADR-0070 and
|
|
17
|
+
PROP-0044 tuned that to 320 calls and 60 minutes with up to eight continued slices. In practice a
|
|
18
|
+
reply that was plainly still working was cut mid-task, told to "stop using tools and write a short
|
|
19
|
+
report", and showed as unfinished while a child worker kept the run alive.
|
|
20
|
+
|
|
21
|
+
## Decision
|
|
22
|
+
|
|
23
|
+
The foundation default has no tool-call, time or token limit. `DEFAULT_SLICE_POLICY` sets
|
|
24
|
+
`maxToolCalls`, `maxMinutes` and `maxNewTokens` to 0, so `sliceLimitReached` never fires and no reply
|
|
25
|
+
ends or continues at a budget. The guard, `workSlice` on `sessions.run` and `XINGULAR_WORK_SLICE`
|
|
26
|
+
stay for a caller that wants a limit, and the three-compaction guard is unchanged. The model is no
|
|
27
|
+
longer told a budget exists, and the standard prompt asks it to keep working until the request is
|
|
28
|
+
done or the person interrupts.
|
|
29
|
+
|
|
30
|
+
## Consequences
|
|
31
|
+
|
|
32
|
+
- The stable prompt prefix changes once, so the first reply after upgrading is uncached.
|
|
33
|
+
- Runaway work is bounded only by the stall watch (ADR-0054), the compaction guard, approvals and
|
|
34
|
+
the person's Esc; a host that wants a ceiling sets `workSlice`.
|
|
35
|
+
- The budget code, its protocol field and its heartbeat fields remain, so a later decision can
|
|
36
|
+
delete them without a migration. `heartbeat.maxToolCalls` is 0.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0082
|
|
3
|
+
title: Connected Brave browser backend
|
|
4
|
+
status: accepted
|
|
5
|
+
created: 2026-11-20
|
|
6
|
+
updated: 2026-11-20
|
|
7
|
+
related: [STUDY-0008, PROP-0040, INV-PAR-1, INV-PAR-2]
|
|
8
|
+
supersedes: null
|
|
9
|
+
superseded_by: null
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-0082 — Connected Brave browser backend
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
The isolated Chromium browser cannot use the person's existing sign-in. The App's WebKit tabs are
|
|
17
|
+
host-owned, have a different profile lifecycle, and do not implement snapshot-scoped ref actions.
|
|
18
|
+
The person asked to choose between an isolated browser and their existing signed-in Brave profile,
|
|
19
|
+
with no automatic switch if the chosen backend disconnects.
|
|
20
|
+
|
|
21
|
+
## Decision
|
|
22
|
+
|
|
23
|
+
Add an opt-in Brave backend through an unpacked Manifest V3 extension. The extension uses
|
|
24
|
+
`chrome.debugger` to adopt existing normal tabs, and the Harness adapts the extension to the shared
|
|
25
|
+
`BrowserToolSession` and `browser_*` schemas. The extension is loaded manually and pairs with the
|
|
26
|
+
Harness over an authenticated loopback bridge. Do not enable remote debugging on the person's
|
|
27
|
+
profile and do not require Native Messaging. Pairing validates the extension origin; subsequent
|
|
28
|
+
service-worker calls require the bearer token because the browser may omit Origin on those requests,
|
|
29
|
+
and any supplied mismatched Origin is rejected.
|
|
30
|
+
|
|
31
|
+
Browser backend selection is device-local. A project, variant or page cannot enable Brave. A person
|
|
32
|
+
must explicitly choose Brave, pair the extension with a short-lived code, and allow each exact
|
|
33
|
+
origin from the extension popup. Chrome host grants can cover every port on a host, so the extension
|
|
34
|
+
also records the exact scheme, host and port and checks that allow list before exposing a tab.
|
|
35
|
+
Incognito is disabled. The extension does
|
|
36
|
+
not request history or cookie permissions and does not export cookies; a signed-in page remains
|
|
37
|
+
signed in because it uses the existing profile. The extension's `debugger` permission is broad and
|
|
38
|
+
must be disclosed before the person selects Brave.
|
|
39
|
+
|
|
40
|
+
While connected and permitted, the page shows **“Xingular Agent is on this site”**, with Pause and
|
|
41
|
+
Stop controls and a brief pulse at the most recent click. Pause refuses new calls but lets an action
|
|
42
|
+
already in flight finish. Stop revokes the pairing, rejects pending calls, clears the badge and closes
|
|
43
|
+
the bridge. Normal Harness shutdown closes the bridge but keeps the pairing so the extension can
|
|
44
|
+
reconnect. A lost or paused connection refuses calls; it never selects another browser. A timed-out
|
|
45
|
+
call reports that its outcome is unknown and requires a fresh snapshot before retry.
|
|
46
|
+
|
|
47
|
+
The shared browser gate remains authoritative: snapshot refs are invalidated when page state or the
|
|
48
|
+
debugger attachment changes; sensitive fields are refused; consequential actions require fresh
|
|
49
|
+
human approval and are revalidated; actions require an attended run; page content remains untrusted.
|
|
50
|
+
The Brave tool list does not include the App-specific `browser_upload`. WebKit remains an independent
|
|
51
|
+
backend with its existing narrower capabilities.
|
|
52
|
+
|
|
53
|
+
## Consequences
|
|
54
|
+
|
|
55
|
+
- Harness and terminal settings can select isolated or Brave, pair, inspect status and stop the
|
|
56
|
+
connection. Hosts may disable the generic browser provider with `browser: false` and retain the
|
|
57
|
+
Harness bridge through `HarnessOptions.browserExtension`.
|
|
58
|
+
- The App keeps WebKit as its native backend and obtains shared Harness browser tools only when
|
|
59
|
+
Brave is selected. The App's connected-apps broker does not expose duplicate browser tools in
|
|
60
|
+
Brave mode.
|
|
61
|
+
- Pairing state lives in owner-only `<state dir>/browser/extension-bridge.json`; backend and
|
|
62
|
+
network settings remain in `<state dir>/browser.json`.
|
|
63
|
+
- The extension requires manual loading and site permissions. It does not provide a remote browser
|
|
64
|
+
service, history, cookie export, file uploads or general DevTools console/network access.
|
|
65
|
+
- D-25 remains open for selector-based operations in the App's WebKit Rust implementation and its
|
|
66
|
+
App-only upload contract. D-26 is partly resolved: Brave implements the shared ref tools, but the
|
|
67
|
+
App's Rust capability response is not yet backend-aware.
|
|
68
|
+
- The opt-in live acceptance in `src/browser/extension/brave-live.acceptance.test.ts` passed with a
|
|
69
|
+
disposable Brave profile and a loopback fixture. It covers pairing, exact-origin gating, snapshots,
|
|
70
|
+
actions, pause/stop and disconnect refusal; it does not exercise Chrome's optional-host grant
|
|
71
|
+
prompt for a non-loopback site. Use only disposable profiles for runtime verification; never use the
|
|
72
|
+
everyday profile.
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ADR-0083
|
|
3
|
+
title: One live session runtime in the harness
|
|
4
|
+
status: accepted
|
|
5
|
+
created: 2026-11-03
|
|
6
|
+
updated: 2026-11-03
|
|
7
|
+
related: [ADR-0001, ADR-0035, ADR-0056, INV-RUN-1, INV-SRV-1, INV-SRV-4, INV-TUI-2, INV-RC-5, INV-PAR-1, INV-PAR-2, PAR-008, PAR-018]
|
|
8
|
+
supersedes: null
|
|
9
|
+
superseded_by: null
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-0083 — One live session runtime in the harness
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
The harness runs a conversation in two different runtimes:
|
|
17
|
+
|
|
18
|
+
- **Structured sessions** (`xagent serve`, the App sidecar): `Sessions.run` opens a Pi session for
|
|
19
|
+
one run and disposes it when the run settles (`sessions/runner.ts`, `piSessionFactory` and the
|
|
20
|
+
`finally` of `runTurn`).
|
|
21
|
+
- **The terminal**: a Bun child keeps one Pi `AgentSessionRuntime` alive across turns
|
|
22
|
+
(`terminal/tui/runtime.ts`). Its gate, telemetry and run accounting go through
|
|
23
|
+
`terminal/piExtension.ts`, the session socket and `TerminalController`.
|
|
24
|
+
|
|
25
|
+
ADR-0001 chose the second runtime because calling `sessions.run` per prompt "recreates and disposes
|
|
26
|
+
the runtime per turn, losing persistent plugin UI/queue state". That reason still holds for the
|
|
27
|
+
structured path as it is built today.
|
|
28
|
+
|
|
29
|
+
Two runtimes mean many lifecycle features are built twice and drift: plan-outcome repair (D-22),
|
|
30
|
+
the queued-message rules, work slices (a headless run continues as a new run, a terminal reply in
|
|
31
|
+
place), stall guards (`terminal/stallWatch.ts`, now `sessions/stallWatch.ts`), `get_capabilities`, and about fifteen private
|
|
32
|
+
`terminal.*` routes that mirror public methods. A terminal session cannot be reached from the App
|
|
33
|
+
(PAR-018) and the two keep separate session catalogs (PAR-008). A run ends when its window closes.
|
|
34
|
+
|
|
35
|
+
Codex keeps the agent loop in one server process (`codex app-server`) and makes every front end a
|
|
36
|
+
client of it: threads, turns and items over JSON-RPC, approvals as server-to-client requests.
|
|
37
|
+
Claude Code keeps the loop inside the CLI process and lets other front ends spawn that process.
|
|
38
|
+
The harness's server protocol (page 10) and run events (page 02) already have Codex's shape
|
|
39
|
+
(session ≈ thread, run ≈ turn, run events ≈ items). The missing part is a live session the server
|
|
40
|
+
owns across runs.
|
|
41
|
+
|
|
42
|
+
## Decision
|
|
43
|
+
|
|
44
|
+
The harness owns one session runtime. A *live session* is a Pi session the harness keeps open
|
|
45
|
+
across runs of the same native conversation. Every front end, including the terminal, reaches it
|
|
46
|
+
through server methods. The terminal keeps its owned OpenTUI presentation (the screen half of
|
|
47
|
+
ADR-0001); only its private runtime goes away.
|
|
48
|
+
|
|
49
|
+
Work proceeds in phases; each lands with its spec pages and checks.
|
|
50
|
+
|
|
51
|
+
1. **Live sessions.** A `LiveSessions` service in `src/sessions/` keeps a Pi session open between
|
|
52
|
+
runs. `Sessions.run` reuses it when the new run's pins match the open session, and opens a fresh
|
|
53
|
+
one otherwise. Unattended triggers (`probe`, `improver`, `reflection`) and refinement keep the
|
|
54
|
+
per-run open and dispose. A caller opts in with `sessions.run { live: true }`; the first such run
|
|
55
|
+
opens the live session. Additive methods: `sessions.live`, `sessions.close`, `sessions.followUp`,
|
|
56
|
+
`sessions.followUp.clear`. Steering stays `runs.steer`, and replay stays `runs.since`, which
|
|
57
|
+
already exist. The App adopts this first.
|
|
58
|
+
2. **The terminal as a client.** The OpenTUI child talks to the harness over the protocol on a
|
|
59
|
+
local socket and renders from run events. The private `terminal.*` mirrors give way to the
|
|
60
|
+
public methods, scoped by the caller identity the control key proves. The old path stays behind
|
|
61
|
+
a flag until production PTY acceptance at 40x20, 80x24 and 100x30, then is removed.
|
|
62
|
+
3. **Optional daemon.** Decided after phase 2: a long-lived `xagent serve --daemon` on a Unix
|
|
63
|
+
socket under the state directory, with one writer per data root, so a run outlives its window,
|
|
64
|
+
and remote control belongs to a live session rather than a terminal (PAR-018).
|
|
65
|
+
|
|
66
|
+
### Phase 1 design: what a run binds
|
|
67
|
+
|
|
68
|
+
A run pins its account, variant version and capability set (INV-RUN-1), so a live session may only
|
|
69
|
+
serve a run whose pins equal the session's. The reuse key is: account, variant version, frozen
|
|
70
|
+
capability fingerprint, working folder and workspace root, plan flag, allowed tool names, the
|
|
71
|
+
stable system prompt, and the loaded plugin set. Model and effort changes go through Pi's own
|
|
72
|
+
setters. Any other difference closes the live session at the turn boundary and opens a new one on
|
|
73
|
+
the same native history, as `/variant` already does (ADR-0065).
|
|
74
|
+
|
|
75
|
+
Today these are created per run and baked into the Pi session when it opens
|
|
76
|
+
(`sessions/sessions.ts`, the `params` and `factory` call; `sessions/runner.ts`,
|
|
77
|
+
`piSessionFactory`). Each must read a *current run binding* that `LiveSessions` swaps at the start
|
|
78
|
+
of every run:
|
|
79
|
+
|
|
80
|
+
| Bound per run today | Where | Becomes |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| The gate (`checkDetailed`, workspace scope requests, plan refusals) | `gatedExtension` in `piSessionFactory` | A session-level `tool_call` handler that asks the current binding's gate |
|
|
83
|
+
| Custom tool specs bound to the run (`spec.execute`) | `customTools` in `piSessionFactory` | Session-level tool definitions that call the current binding's spec of the same name |
|
|
84
|
+
| The extension host (`ask`, `notice`) | `bindExtensions` in `piSessionFactory` | A host that forwards to the current run, and refuses between runs |
|
|
85
|
+
| `runLineageJoin(root, runId)`, `subagents.extension(runId)` | `params.inline` | Extensions that read the current run id |
|
|
86
|
+
| Compaction checkpoint (`initialTodo`, plan instructions) | `params.inline` | Reads the current run's todo and plan flag |
|
|
87
|
+
| Work-slice guard and goal loop (their state and controller) | `params.inline` | Installed once, enabled and fed by the current binding |
|
|
88
|
+
| `onRefusal`, `activatedPlugins`, the heartbeat and `settle` | `params`, `runTurn` | Already per run in `runTurn`; unchanged |
|
|
89
|
+
|
|
90
|
+
`runTurn` stops disposing the session; `LiveSessions` disposes it on `sessions.close`, on a pin
|
|
91
|
+
change, after an idle timeout, and at harness shutdown. A live session runs one run at a time; a
|
|
92
|
+
second `sessions.run` while one is active is refused, or delivered as a steer or follow-up when the
|
|
93
|
+
caller asks for that.
|
|
94
|
+
|
|
95
|
+
## Alternatives and rejection reasons
|
|
96
|
+
|
|
97
|
+
- **Keep two runtimes.** Every lifecycle feature keeps its second copy, and the drift and parity
|
|
98
|
+
lists keep growing.
|
|
99
|
+
- **Claude Code's model** (the terminal process is the engine, hosts spawn it). Simple for one front
|
|
100
|
+
end, but the App, the phone surface and evaluation would each drive a terminal process, and the
|
|
101
|
+
structured path would remain a second runtime.
|
|
102
|
+
- **Make the terminal call today's `sessions.run`.** Rejected by ADR-0001 for the same reason it
|
|
103
|
+
gives: a per-run runtime loses queues and persistent plugin UI. Phase 1 removes that reason first.
|
|
104
|
+
- **A rewrite in one release.** Too large to verify; each phase must pass the full checks and, for
|
|
105
|
+
phase 2, production PTY acceptance.
|
|
106
|
+
|
|
107
|
+
## Consequences and risks
|
|
108
|
+
|
|
109
|
+
- This is a 2.0-level change: it adds methods and a socket transport (INV-SRV-1, INV-SRV-4),
|
|
110
|
+
changes who owns execution in the terminal (INV-TUI-2), and moves remote control's lifetime
|
|
111
|
+
(INV-RC-5). Pages 02, 10, 11, 14 and 15 change as each phase lands.
|
|
112
|
+
- Every inline extension must be safe to keep across runs. A missed per-run closure would leak one
|
|
113
|
+
run's state into the next; phase 1 tests run two turns on one live session and check each run's
|
|
114
|
+
events, refusals and records belong to that run only.
|
|
115
|
+
- Streaming over IPC adds latency to the terminal; phase 2 measures first-delta latency before and
|
|
116
|
+
after.
|
|
117
|
+
- Live checks may use real model requests only with the owner's permission (granted for this work
|
|
118
|
+
with a Codex account on Luna 6, or the OpenCode account on DeepSeek V4.1 Flash), never against
|
|
119
|
+
`~/.codex`, `~/.claude` or `~/.pi`.
|
|
120
|
+
|
|
121
|
+
## Evidence — phase 1, 2026-11-03
|
|
122
|
+
|
|
123
|
+
Implemented in `src/sessions/live.ts`, `src/sessions/runner.ts` (`rebind`, `release`, run slots),
|
|
124
|
+
`src/sessions/sessions.ts` (`live`, follow-ups) and `src/server/methods.ts`. `src/sessions/live.test.ts`
|
|
125
|
+
covers reuse across runs, a pin change, the per-run default, busy refusal, queued, idle and parked
|
|
126
|
+
follow-ups, close and shutdown, refusal for unattended runs, and a rebind of a real Pi session (an
|
|
127
|
+
`input` handler and a bound tool replaced by the next run's) with no model request. Harness:
|
|
128
|
+
1,803 tests passed, `npm run prove` passed. App sidecar typecheck and 89 tests passed against this
|
|
129
|
+
tree.
|
|
130
|
+
|
|
131
|
+
Live check with owner permission, account OpenCode, model `opencode-go/deepseek-v4.1-flash`, a
|
|
132
|
+
throwaway data root and the installed sign-in:
|
|
133
|
+
|
|
134
|
+
| Run | Live | Status | Native session | Session ready (ms) | Input tokens | Cache read |
|
|
135
|
+
|---|---|---|---|---|---|---|
|
|
136
|
+
| b1 | no | completed | `01a19f83-2ef3…` | 1002 (cold start) | 4796 | 0 |
|
|
137
|
+
| b2 | no | completed | same | 73 | 73 | 4736 |
|
|
138
|
+
| l1 | yes | completed | `01a19f83-408c…` | 75 | 4796 | 0 |
|
|
139
|
+
| l2 | yes | completed | same, reused | 52 | 73 | 4736 |
|
|
140
|
+
| l3 | yes, steered | completed | same, reused | 59 | 326 | 9472 |
|
|
141
|
+
|
|
142
|
+
The live session served three runs (`runs: 3`). Reuse keeps the provider cache exactly as the
|
|
143
|
+
per-run path does. A steer sent after the first delta was recorded as `message.steered` and the
|
|
144
|
+
model answered it in the same run. A reused session is ready slightly sooner (52–59 ms against 73 ms
|
|
145
|
+
warm); the larger gains are steering, follow-ups and plugin state that survive between runs.
|
|
146
|
+
|
|
147
|
+
## Evidence — phases 2 and 3, 2026-11-03
|
|
148
|
+
|
|
149
|
+
**Phase 2, the terminal as a client.** `XINGULAR_TERMINAL_RUNTIME=harness` selects
|
|
150
|
+
`terminal/tui/harnessRuntime.ts`; the parent side is `terminal/liveTerminal.ts`. The in-process
|
|
151
|
+
runtime stays the default. Decision recorded with the owner: plugin presentation that needs an
|
|
152
|
+
in-process terminal is unavailable in client mode (INV-TUI-8), as it is in a host.
|
|
153
|
+
|
|
154
|
+
- Tests with real Pi and a scripted model: `terminal/liveTerminal.test.ts` (two turns on one live
|
|
155
|
+
session, the native event journal, a plan-mode `ask_user` answered through the decision routes,
|
|
156
|
+
busy refusal) and `terminal/tui/harnessRuntime.socket.test.ts` over the real session socket (the
|
|
157
|
+
mirrored transcript, one native session, the in-process tool set, `/todo` and `/trajectory`
|
|
158
|
+
lookup, the system prompt, a plan question, `/new` on a new file).
|
|
159
|
+
- Live, OpenCode account, `opencode-go/deepseek-v4.1-flash`, real OpenTUI frontend in a PTY at
|
|
160
|
+
100x30, 80x24 and 40x20: five turns and a queued follow-up each, all completed on one native
|
|
161
|
+
session. Mean time from Enter to the reply on screen for turns 2–5: client 1.60 s, 1.79 s and
|
|
162
|
+
1.37 s against in-process 1.59 s at 100x30, within the model's own variation. The fixed overhead
|
|
163
|
+
from Enter to the harness run starting is about 30 ms against about 5 ms in process. Startup to
|
|
164
|
+
ready: 2.2–2.9 s client, 2.6–2.8 s in process.
|
|
165
|
+
- Found and fixed on the way: the client first lacked the world tools and had `grep`, `find` and
|
|
166
|
+
`ls`, which the in-process terminal does not activate; a new conversation re-adopted the old file
|
|
167
|
+
from stale state; a mode with no saved model sent none; child runs inherited `live: true` (caught
|
|
168
|
+
by the App's sidecar test).
|
|
169
|
+
- Not passing yet: the production PTY suite stops early in client mode on a record-contract
|
|
170
|
+
difference (Known drift D-28).
|
|
171
|
+
|
|
172
|
+
**Phase 3, the long-lived harness.** `server/socket.ts`, `terminal/daemon.ts`, `Terminals.detach`
|
|
173
|
+
and `prepare { attach }`, CLI `xagent daemon start|stop|status`, `xagent --daemon`, `xagent attach`.
|
|
174
|
+
|
|
175
|
+
- Tests: `terminal/daemon.test.ts` (one lock per state folder and a stale lock replaced, the
|
|
176
|
+
protocol on an owner-only socket to several connections, a full daemon run that prepares over its
|
|
177
|
+
socket, reports and stops); `harnessRuntime.socket.test.ts` (a reply keeps running when its
|
|
178
|
+
window closes and a new window reattaches and sees it finish; a detached session ends when its
|
|
179
|
+
reply settles).
|
|
180
|
+
- Live, same account and model: `xagent daemon start`, a `--daemon` window asked for 600 numbers,
|
|
181
|
+
the window was hung up (SIGHUP) mid-reply; it printed the `xagent attach <id>` line, `daemon
|
|
182
|
+
status` reported one live session and one reply without a window, `xagent attach` showed the
|
|
183
|
+
reply finish 3.6 s later, and the run recorded `completed`. Afterwards no live or detached
|
|
184
|
+
session remained and `daemon stop` removed the lock and socket.
|
|
185
|
+
- Found and fixed: the daemon took its lock before the state folder existed.
|
|
186
|
+
|
|
187
|
+
Checks at the end: harness typecheck clean, 1,820 tests pass, `npm run prove` passes; App sidecar
|
|
188
|
+
typecheck and 89 tests pass against this tree, `check:layers` flags none of the new files. Open
|
|
189
|
+
and unrelated to this change: the App's `soloCommands.test.ts` expects Solo to handle `/goal`
|
|
190
|
+
(PAR-017), and the App's root typecheck reports button-prop errors in its UI.
|
|
191
|
+
|
|
192
|
+
## The client terminal is the default — 2026-11-03
|
|
193
|
+
|
|
194
|
+
The owner asked to finish the client terminal and make it the default once it works. `xagent` now
|
|
195
|
+
runs the client terminal unless `XINGULAR_TERMINAL_RUNTIME=inprocess` is set. The in-process
|
|
196
|
+
runtime stays for plugins that need their own terminal components.
|
|
197
|
+
|
|
198
|
+
What finishing it took, each with a test:
|
|
199
|
+
|
|
200
|
+
- Parity of what a person sees: plugin notices, status lines, widgets and titles (`harness_notice`);
|
|
201
|
+
a failed reply's message; a settle marker when Pi's loop never started; plugin `select`,
|
|
202
|
+
`confirm`, `input` and `editor` shown with the window's own dialogs (`question.requested.dialog`);
|
|
203
|
+
plugin commands listed before the first turn and sent by their owner-qualified route; a plugin
|
|
204
|
+
that cannot load stops the window's start; `/goal` run as a harness goal with its state shown.
|
|
205
|
+
- Parity of what a turn does: plan runs carry only the plan's tools (`planTools: 'active'`); `!`
|
|
206
|
+
commands run as the turn's initial Bash on a resumed history; `/session` takes a file or a session
|
|
207
|
+
id; `/new` and steering ask the harness whether a reply really runs before refusing.
|
|
208
|
+
- Lifecycle: `/stop` and Esc return at once and Pi's abort finishes behind them; the window closes
|
|
209
|
+
cleanly when its harness is gone; an uncaught error in the host closes the window before exiting
|
|
210
|
+
1; a frontend left after its terminal hangs up is ended after three seconds (this also leaked
|
|
211
|
+
in-process windows); the long-lived harness survives one plugin's uncaught error.
|
|
212
|
+
- A harness fix every host gets: a provider request that timed out and was retried and answered no
|
|
213
|
+
longer marks the run failed.
|
|
214
|
+
|
|
215
|
+
Evidence:
|
|
216
|
+
|
|
217
|
+
- Harness: typecheck clean, 1,829 tests pass, `npm run prove` passes; App sidecar typecheck and 89
|
|
218
|
+
tests pass; `check:layers` flags none of the new files.
|
|
219
|
+
- Production PTY suite (`scripts/verify-terminal.py`, its local provider, no real requests) in the
|
|
220
|
+
default client terminal: the full run passes at 40x20, 80x24, 100x30 and 120x40, and so do the
|
|
221
|
+
welcome, click-focus, composer, file-completion, history, resume, todo, questions, jump-latest,
|
|
222
|
+
help, command-completion, attachments, dialog-paste, thinking, queue and compaction suites. The
|
|
223
|
+
script now accepts what differs by design: either approval title, a question asked with or without
|
|
224
|
+
an approval, either `nativeSessionId` contract, a plugin overlay the client cannot draw, a size
|
|
225
|
+
shown in bytes, a varying usage-event count, and a long command name wrapped after its owner
|
|
226
|
+
prefix. Browser, palette, accounts at 120x40 and trajectory at 120x40 fail the same way on the
|
|
227
|
+
previous commit (Known drift D-30); markdown fails only with uncommitted work outside this change
|
|
228
|
+
(D-31). The full run's `/stop` step, which allows 0.8 seconds, failed twice while the machine's
|
|
229
|
+
load average was above 20 and passed every time below it.
|
|
230
|
+
- Live, OpenCode account, `opencode-go/deepseek-v4.1-flash`, real frontend at 100x30: five turns
|
|
231
|
+
and a queued follow-up on one native session; `/stop` and Esc recorded the reply interrupted in
|
|
232
|
+
33–77 ms against 35–62 ms in process; turn latency within the provider's variation. One turn hit
|
|
233
|
+
a ten-minute provider timeout and its retry answered; the run now records `completed`. With
|
|
234
|
+
`--daemon`, a window hung up mid-reply left the reply running; `xagent attach` showed it complete.
|
|
235
|
+
|
|
236
|
+
## Closing the migration — 2026-11-04
|
|
237
|
+
|
|
238
|
+
- **Stall guard for every harness run.** The terminal's stall rule (15 minutes without an event, 30
|
|
239
|
+
with a tool running; ADR-0054, ADR-0078) lived only in the in-process controller, so a client
|
|
240
|
+
terminal reply, a live session and an App turn had only Pi's own request timeout (about ten
|
|
241
|
+
minutes, retried). `runTurn` now applies it to every run (`sessions/stallWatch.ts`, moved from
|
|
242
|
+
`terminal/`): the run settles `interrupted` with `stalled`, the native turn is aborted, and a live
|
|
243
|
+
session is closed (queued follow-ups parked), or closed under the turn if the abort has not
|
|
244
|
+
unwound it after 30 seconds. A pending approval or question, and a wait for subagents (each child
|
|
245
|
+
has its own guard), restart the clock. Pi's request timeout is unchanged: a shorter one multiplies
|
|
246
|
+
with the retry policy and could cut a slow reasoning model's first token, so the progress rule is
|
|
247
|
+
the cap.
|
|
248
|
+
- **Heartbeat for every run.** `runTurn` emitted `heartbeat` only for work-slice runs, against
|
|
249
|
+
INV-RUN-14; a live reply with a quiet tool for 30 minutes could be settled `owner_gone`. It is now
|
|
250
|
+
unconditional (slice counters zero without a slice).
|
|
251
|
+
- **Verifier.** The four D-30 suites asserted stale layouts, not product faults, and are fixed; the
|
|
252
|
+
`/stop` step polls the run record up to 8 seconds instead of reading for 0.8; the in-process
|
|
253
|
+
fallback's full run passes at 80x24 (the deny/approval-cancel stop did not reproduce). D-31 (the
|
|
254
|
+
markdown suite) is the other change's fixture overflowing the screen. Tests: `sessions/stall.test.ts`
|
|
255
|
+
(8) cover the guard and heartbeat.
|
|
256
|
+
- Not done: PAR-018 (remote control bound to a live session). Notes in HANDOFF.md.
|
package/docs/doctor.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Doctor
|
|
2
|
+
|
|
3
|
+
Run `/doctor` in the Harness terminal. It opens a readiness report for the selected account/model,
|
|
4
|
+
enabled tools, MCP connections, plugins and skills, pinned variant, runtime and storage.
|
|
5
|
+
|
|
6
|
+
**Local is the default.** It inspects configuration, saved state and resource readability without
|
|
7
|
+
provider requests, token refreshes, browser launch, permission prompts or computer input. A local
|
|
8
|
+
pass does not establish live connectivity. Other accounts show their saved status and timestamp.
|
|
9
|
+
Providers without diagnostics report unverified. Disabled capabilities are not failures.
|
|
10
|
+
The application-window capture check reports blocked when no screenshot tool is listed, and
|
|
11
|
+
unverified when one is listed; it does not capture a window or establish backend isolation.
|
|
12
|
+
|
|
13
|
+
The shell check reports which `bash` the session would run and whether the platform's
|
|
14
|
+
write-boundary sandbox (sandbox-exec on macOS, bubblewrap on Linux) is installed, because a missing
|
|
15
|
+
backend stops every Bash call before the command starts. It runs nothing. On Windows it reports a
|
|
16
|
+
warning naming the shell (Git Bash or PowerShell) and that each command asks for approval, because
|
|
17
|
+
Windows has no write-boundary sandbox; the live shell check reports unverified there, since a
|
|
18
|
+
command would need a person to approve it.
|
|
19
|
+
|
|
20
|
+
Press `l` to choose live checks, then review the account/model, destinations, possible charges and
|
|
21
|
+
isolation notice. The model check makes one synthetic request with at most 64 output tokens;
|
|
22
|
+
usage appears on a separate diagnostic run. Web checks fetch example.com and search for “example
|
|
23
|
+
domain”. The shell check runs one fixed command written by the harness (`printf`) in the working
|
|
24
|
+
folder through the same root, hard-link scan and write-boundary sandbox a normal Bash call uses, and
|
|
25
|
+
reports only the exit status: no model input is sent, no file is written and no network request is
|
|
26
|
+
made. A diagnostic never widens the boundary, so Full Permission cannot change its result; when the
|
|
27
|
+
boundary refuses before the shell starts (for example a hard-link alias in the workspace), the
|
|
28
|
+
finding is blocked with that reason instead of claiming the shell is broken. MCP checks
|
|
29
|
+
connect/list only. Browser checks use a disposable headless profile and an
|
|
30
|
+
offline synthetic page; configured CDP attachment is blocked. Computer input is blocked unless the
|
|
31
|
+
host supplies a disposable diagnostic surface; the current desktop host supplies readiness only.
|
|
32
|
+
|
|
33
|
+
The report keeps mode, progress, account/model and status counts visible above the findings. Wide
|
|
34
|
+
layouts use aligned Status, Check, Category and Verification columns; evidence and any next step
|
|
35
|
+
appear beneath each finding. Narrow layouts stack those fields. Status colors follow the active
|
|
36
|
+
theme: pass is green, warning/blocked amber, fail red, disabled dim and unverified muted.
|
|
37
|
+
|
|
38
|
+
`r` refreshes local readiness, `t` retries a selected local check, `c` cancels, and Escape closes
|
|
39
|
+
and cancels pending work. Use Up/Down to scroll by line, PgUp/PgDn or the mouse wheel to scroll by
|
|
40
|
+
page, and Home/End to jump to the first/last finding. Completed findings survive cancellation. Every finding includes
|
|
41
|
+
evidence and, where useful, a next step. Doctor never signs in, switches accounts, installs, grants
|
|
42
|
+
access, or repairs settings. Findings and jobs are retained in memory until shutdown; live run
|
|
43
|
+
records and usage remain in normal Harness storage.
|
|
44
|
+
|
|
45
|
+
## Embedding
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
const job = harness.doctor.start({
|
|
49
|
+
context: { caller: {}, cwd, accountId, model: 'provider/model', tools: ['web_fetch'] }
|
|
50
|
+
})
|
|
51
|
+
const report = harness.doctor.read(job.id)
|
|
52
|
+
harness.doctor.cancel(job.id)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Server hosts use `doctor.start`, `doctor.read`, and `doctor.cancel`. A host must obtain consent
|
|
56
|
+
before setting `mode: 'live'`, `checks`, and `confirmed: true`. Supply an exact variant version and
|
|
57
|
+
capability snapshot when reproducing a pinned run. Exported schemas validate reports.
|
|
58
|
+
|
|
59
|
+
Tool providers may attach `diagnostics(context)` returning `DoctorCheck[]`. Local callbacks must
|
|
60
|
+
be passive and network-free. Optional live callbacks declare a notice and receive an AbortSignal,
|
|
61
|
+
a separate real run, and a gated `call(tool, input)` helper. Honor cancellation; release owned
|
|
62
|
+
resources. Route all live tool execution through `call`. Each check has a stable unique ID and
|
|
63
|
+
lists the tools it covers. Existing providers need no changes and appear as unverified.
|
|
64
|
+
|
|
65
|
+
## Working-tree verification — 2026-10-22
|
|
66
|
+
|
|
67
|
+
| Check | Result |
|
|
68
|
+
|---|---|
|
|
69
|
+
| Focused Harness service, protocol, control-key, gate, offline-account, browser-isolation and terminal tests | 69 passed across 7 files |
|
|
70
|
+
| App computer diagnostics and diagnostic report contract | 7 passed |
|
|
71
|
+
| Harness typecheck and build/standalone proof | Passed |
|
|
72
|
+
| App renderer typecheck and UI consistency | Passed; existing UI baseline remains |
|
|
73
|
+
| App Rust tests | 240 passed, 1 ignored |
|
|
74
|
+
| Full Harness suite | Could not complete successfully in this sandbox: terminal socket creation returns EPERM; other platform-dependent failures were also reported. The stalled full run was stopped after failures. |
|
|
75
|
+
| Full App renderer tests | 590 passed, 2 failed on existing Guide links/headings |
|
|
76
|
+
| Full App sidecar tests/typecheck | Blocked by older tree/HarnessChoice imports and contract expectations against the current variant API; diagnostic tests pass |
|
|
77
|
+
| App layer check | Rejects the in-progress Harness browser implementation, including backend diagnostic callbacks; ownership/specification drift is recorded as D-9 |
|
|
78
|
+
|
|
79
|
+
No live provider diagnostic or user browser/computer interaction was performed. Browser regression
|
|
80
|
+
tests use injected launchers. The proof uses isolated scripted fixtures. Changes remain uncommitted
|
|
81
|
+
alongside concurrent work; these results do not establish release readiness for the whole workspace.
|
|
82
|
+
|
|
83
|
+
## Later 1.0.0 candidate preparation — 2026-10-22
|
|
84
|
+
|
|
85
|
+
The release preparation resolved the earlier App migration, Guide-link and browser-layer blockers:
|
|
86
|
+
the App's 592 renderer tests, 40 sidecar tests, typechecks and layer/UI checks pass. Rust has
|
|
87
|
+
240 passing tests and one ignored test. A focused Harness run covering Doctor, browser diagnostics,
|
|
88
|
+
world tools, terminal command/page behavior and Hub has 100 passing tests. The compiled package's
|
|
89
|
+
SDK, TypeScript consumer, server and local Doctor smoke checks also pass using existing locked
|
|
90
|
+
dependencies. These later results supersede the earlier blocker descriptions for those checks.
|
|
91
|
+
|
|
92
|
+
Full Harness acceptance remains blocked locally by sandbox socket denial and HEIC encoder system
|
|
93
|
+
query denial; the complete suite is retained as a mandatory two-OS CI gate. Fresh network install,
|
|
94
|
+
registry availability and npm trusted-publisher configuration remain unverified. No tag or package
|
|
95
|
+
has been published during preparation. See the release procedure and external candidate report.
|