@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,299 @@
|
|
|
1
|
+
/** Where a command's work happens. */
|
|
2
|
+
export type CoreCommandKind =
|
|
3
|
+
/** Changes or reads the current session through a Harness method. */
|
|
4
|
+
'session'
|
|
5
|
+
/** Opens a capability page (doctor, worktrees, tools, ...). */
|
|
6
|
+
| 'page'
|
|
7
|
+
/** Presentation only: help, key bindings, copying, showing thinking, leaving. */
|
|
8
|
+
| 'local';
|
|
9
|
+
export type CoreCommandGroup = 'Core' | 'Run' | 'Model' | 'Session' | 'Inspect' | 'Harness';
|
|
10
|
+
export interface CoreCommand {
|
|
11
|
+
name: string;
|
|
12
|
+
aliases?: readonly string[];
|
|
13
|
+
/** What follows the name, for the palette: `<brief>`, `[path]`. */
|
|
14
|
+
args?: string;
|
|
15
|
+
description: string;
|
|
16
|
+
group: CoreCommandGroup;
|
|
17
|
+
kind: CoreCommandKind;
|
|
18
|
+
/** The Harness server methods the command uses, when it uses any. */
|
|
19
|
+
methods?: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export declare const CORE_COMMANDS: readonly [{
|
|
22
|
+
readonly name: "help";
|
|
23
|
+
readonly description: "List the commands";
|
|
24
|
+
readonly group: "Core";
|
|
25
|
+
readonly kind: "local";
|
|
26
|
+
}, {
|
|
27
|
+
readonly name: "plan";
|
|
28
|
+
readonly args: "[brief]";
|
|
29
|
+
readonly description: "Plan one request, read-only: /plan <brief>";
|
|
30
|
+
readonly group: "Run";
|
|
31
|
+
readonly kind: "session";
|
|
32
|
+
readonly methods: readonly ["sessions.run"];
|
|
33
|
+
}, {
|
|
34
|
+
readonly name: "goal";
|
|
35
|
+
readonly args: "[<objective>|edit|pause|resume|clear]";
|
|
36
|
+
readonly description: "Set or view a goal for a long-running task: /goal <objective>";
|
|
37
|
+
readonly group: "Run";
|
|
38
|
+
readonly kind: "session";
|
|
39
|
+
readonly methods: readonly ["sessions.run"];
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "btw";
|
|
42
|
+
readonly aliases: readonly ["side"];
|
|
43
|
+
readonly args: "[question]";
|
|
44
|
+
readonly description: "Ask a side question without interrupting: /btw <question>";
|
|
45
|
+
readonly group: "Run";
|
|
46
|
+
readonly kind: "session";
|
|
47
|
+
readonly methods: readonly ["sideQuestions.start", "sideQuestions.cancel"];
|
|
48
|
+
}, {
|
|
49
|
+
readonly name: "new";
|
|
50
|
+
readonly description: "Start a new session";
|
|
51
|
+
readonly group: "Session";
|
|
52
|
+
readonly kind: "session";
|
|
53
|
+
}, {
|
|
54
|
+
readonly name: "stop";
|
|
55
|
+
readonly description: "Stop the current reply";
|
|
56
|
+
readonly group: "Run";
|
|
57
|
+
readonly kind: "session";
|
|
58
|
+
readonly methods: readonly ["runs.interrupt"];
|
|
59
|
+
}, {
|
|
60
|
+
readonly name: "session";
|
|
61
|
+
readonly aliases: readonly ["resume"];
|
|
62
|
+
readonly args: "[path]";
|
|
63
|
+
readonly description: "Choose a saved session in this account and folder";
|
|
64
|
+
readonly group: "Session";
|
|
65
|
+
readonly kind: "session";
|
|
66
|
+
}, {
|
|
67
|
+
readonly name: "history";
|
|
68
|
+
readonly aliases: readonly ["tree"];
|
|
69
|
+
readonly description: "Navigate branches in the current session";
|
|
70
|
+
readonly group: "Session";
|
|
71
|
+
readonly kind: "session";
|
|
72
|
+
readonly methods: readonly ["sessions.tree", "sessions.navigate"];
|
|
73
|
+
}, {
|
|
74
|
+
readonly name: "fork";
|
|
75
|
+
readonly description: "Fork from an earlier message";
|
|
76
|
+
readonly group: "Session";
|
|
77
|
+
readonly kind: "session";
|
|
78
|
+
readonly methods: readonly ["sessions.tree", "sessions.fork"];
|
|
79
|
+
}, {
|
|
80
|
+
readonly name: "remote-control";
|
|
81
|
+
readonly aliases: readonly ["rc"];
|
|
82
|
+
readonly args: "[off|tailscale|lan]";
|
|
83
|
+
readonly description: "Continue this session from your phone or iPad";
|
|
84
|
+
readonly group: "Session";
|
|
85
|
+
readonly kind: "page";
|
|
86
|
+
readonly methods: readonly ["terminal.remoteControl.start", "terminal.remoteControl.stop", "terminal.remoteControl.status"];
|
|
87
|
+
}, {
|
|
88
|
+
readonly name: "clone";
|
|
89
|
+
readonly description: "Clone this branch into a new session";
|
|
90
|
+
readonly group: "Session";
|
|
91
|
+
readonly kind: "session";
|
|
92
|
+
readonly methods: readonly ["sessions.clone"];
|
|
93
|
+
}, {
|
|
94
|
+
readonly name: "model";
|
|
95
|
+
readonly args: "[search]";
|
|
96
|
+
readonly description: "Choose the model";
|
|
97
|
+
readonly group: "Model";
|
|
98
|
+
readonly kind: "session";
|
|
99
|
+
readonly methods: readonly ["accounts.models"];
|
|
100
|
+
}, {
|
|
101
|
+
readonly name: "effort";
|
|
102
|
+
readonly args: "[level]";
|
|
103
|
+
readonly description: "Choose the thinking effort";
|
|
104
|
+
readonly group: "Model";
|
|
105
|
+
readonly kind: "session";
|
|
106
|
+
}, {
|
|
107
|
+
readonly name: "thinking";
|
|
108
|
+
readonly args: "[show|hide]";
|
|
109
|
+
readonly description: "Toggle transcript thinking visibility: /thinking [show|hide]";
|
|
110
|
+
readonly group: "Model";
|
|
111
|
+
readonly kind: "local";
|
|
112
|
+
}, {
|
|
113
|
+
readonly name: "name";
|
|
114
|
+
readonly args: "[name]";
|
|
115
|
+
readonly description: "Name this session";
|
|
116
|
+
readonly group: "Session";
|
|
117
|
+
readonly kind: "session";
|
|
118
|
+
readonly methods: readonly ["sessions.rename"];
|
|
119
|
+
}, {
|
|
120
|
+
readonly name: "compact";
|
|
121
|
+
readonly args: "[instructions]";
|
|
122
|
+
readonly description: "Compact the context";
|
|
123
|
+
readonly group: "Session";
|
|
124
|
+
readonly kind: "session";
|
|
125
|
+
readonly methods: readonly ["sessions.run"];
|
|
126
|
+
}, {
|
|
127
|
+
readonly name: "copy";
|
|
128
|
+
readonly description: "Copy the last reply";
|
|
129
|
+
readonly group: "Inspect";
|
|
130
|
+
readonly kind: "local";
|
|
131
|
+
readonly methods: readonly ["sessions.lastReply"];
|
|
132
|
+
}, {
|
|
133
|
+
readonly name: "export";
|
|
134
|
+
readonly args: "[path.html|path.jsonl]";
|
|
135
|
+
readonly description: "Export this branch to HTML or JSONL";
|
|
136
|
+
readonly group: "Inspect";
|
|
137
|
+
readonly kind: "session";
|
|
138
|
+
readonly methods: readonly ["sessions.export", "sessions.run"];
|
|
139
|
+
}, {
|
|
140
|
+
readonly name: "todo";
|
|
141
|
+
readonly aliases: readonly ["checklist"];
|
|
142
|
+
readonly description: "Show the current todo list";
|
|
143
|
+
readonly group: "Inspect";
|
|
144
|
+
readonly kind: "session";
|
|
145
|
+
readonly methods: readonly ["runs.todo"];
|
|
146
|
+
}, {
|
|
147
|
+
readonly name: "follow-up";
|
|
148
|
+
readonly description: "Manage queued follow-up and steering messages";
|
|
149
|
+
readonly group: "Run";
|
|
150
|
+
readonly kind: "page";
|
|
151
|
+
}, {
|
|
152
|
+
readonly name: "trajectory";
|
|
153
|
+
readonly args: "[run-id]";
|
|
154
|
+
readonly description: "Inspect recorded runs for this session";
|
|
155
|
+
readonly group: "Inspect";
|
|
156
|
+
readonly kind: "page";
|
|
157
|
+
readonly methods: readonly ["runs.list", "runs.events"];
|
|
158
|
+
}, {
|
|
159
|
+
readonly name: "reload";
|
|
160
|
+
readonly description: "Reload trusted resources and keybindings";
|
|
161
|
+
readonly group: "Harness";
|
|
162
|
+
readonly kind: "session";
|
|
163
|
+
readonly methods: readonly ["sessions.reload"];
|
|
164
|
+
}, {
|
|
165
|
+
readonly name: "accounts";
|
|
166
|
+
readonly description: "Sign in, switch, check and remove Pi accounts";
|
|
167
|
+
readonly group: "Harness";
|
|
168
|
+
readonly kind: "page";
|
|
169
|
+
readonly methods: readonly ["accounts.list"];
|
|
170
|
+
}, {
|
|
171
|
+
readonly name: "permissions";
|
|
172
|
+
readonly description: "Full Permission and per-tool approvals";
|
|
173
|
+
readonly group: "Harness";
|
|
174
|
+
readonly kind: "page";
|
|
175
|
+
readonly methods: readonly ["approvals.get"];
|
|
176
|
+
}, {
|
|
177
|
+
readonly name: "harness";
|
|
178
|
+
readonly description: "Browse foundation, variant and all resources";
|
|
179
|
+
readonly group: "Harness";
|
|
180
|
+
readonly kind: "page";
|
|
181
|
+
}, {
|
|
182
|
+
readonly name: "skills";
|
|
183
|
+
readonly description: "View, inspect and use skills; discover more";
|
|
184
|
+
readonly group: "Harness";
|
|
185
|
+
readonly kind: "page";
|
|
186
|
+
}, {
|
|
187
|
+
readonly name: "connections";
|
|
188
|
+
readonly description: "Manage local and remote MCP connections";
|
|
189
|
+
readonly group: "Harness";
|
|
190
|
+
readonly kind: "page";
|
|
191
|
+
}, {
|
|
192
|
+
readonly name: "mcp";
|
|
193
|
+
readonly description: "Open Connections in the Harness browser";
|
|
194
|
+
readonly group: "Harness";
|
|
195
|
+
readonly kind: "page";
|
|
196
|
+
}, {
|
|
197
|
+
readonly name: "tools";
|
|
198
|
+
readonly description: "Inspect available tools, owners and approvals";
|
|
199
|
+
readonly group: "Harness";
|
|
200
|
+
readonly kind: "page";
|
|
201
|
+
}, {
|
|
202
|
+
readonly name: "plugins";
|
|
203
|
+
readonly description: "Manage local plugins, packages, trust and settings";
|
|
204
|
+
readonly group: "Harness";
|
|
205
|
+
readonly kind: "page";
|
|
206
|
+
readonly methods: readonly ["plugins.list", "plugins.attach", "plugins.detach", "plugins.trust", "plugins.untrust", "plugins.configure", "plugins.install", "plugins.update", "plugins.remove", "hub.list"];
|
|
207
|
+
}, {
|
|
208
|
+
readonly name: "hub";
|
|
209
|
+
readonly description: "Browse the Community catalog and manage Hub installs";
|
|
210
|
+
readonly group: "Harness";
|
|
211
|
+
readonly kind: "page";
|
|
212
|
+
readonly methods: readonly ["hub.list", "hub.install", "hub.uninstall"];
|
|
213
|
+
}, {
|
|
214
|
+
readonly name: "components";
|
|
215
|
+
readonly description: "Browse skills, prompts and rules for this Harness scope";
|
|
216
|
+
readonly group: "Harness";
|
|
217
|
+
readonly kind: "page";
|
|
218
|
+
}, {
|
|
219
|
+
readonly name: "variant";
|
|
220
|
+
readonly args: "[use|restore|tag|untag|diff|revert]";
|
|
221
|
+
readonly description: "Versions of this variant: switch, restore, tag, compare, take components back";
|
|
222
|
+
readonly group: "Harness";
|
|
223
|
+
readonly kind: "session";
|
|
224
|
+
readonly methods: readonly ["variants.lineage", "variants.compare", "variants.restore", "variants.tag", "variants.untag", "variants.revert"];
|
|
225
|
+
}, {
|
|
226
|
+
readonly name: "refine";
|
|
227
|
+
readonly args: "[guidance|status|review|stop]";
|
|
228
|
+
readonly description: "Improve this variant by replaying your last request: /refine <what to look at>";
|
|
229
|
+
readonly group: "Harness";
|
|
230
|
+
readonly kind: "session";
|
|
231
|
+
readonly methods: readonly ["refine.fromRun", "refine.start", "refine.list", "refine.cancel", "refine.candidates", "refine.candidateDiff", "refine.candidateOutput", "refine.adopt"];
|
|
232
|
+
}, {
|
|
233
|
+
readonly name: "settings";
|
|
234
|
+
readonly description: "Session, terminal and browser settings";
|
|
235
|
+
readonly group: "Harness";
|
|
236
|
+
readonly kind: "page";
|
|
237
|
+
}, {
|
|
238
|
+
readonly name: "doctor";
|
|
239
|
+
readonly description: "Check account, model, tools and runtime readiness";
|
|
240
|
+
readonly group: "Harness";
|
|
241
|
+
readonly kind: "page";
|
|
242
|
+
readonly methods: readonly ["doctor.start", "doctor.read"];
|
|
243
|
+
}, {
|
|
244
|
+
readonly name: "worktree";
|
|
245
|
+
readonly description: "Manage repository worktrees";
|
|
246
|
+
readonly group: "Harness";
|
|
247
|
+
readonly kind: "page";
|
|
248
|
+
readonly methods: readonly ["worktrees.list"];
|
|
249
|
+
}, {
|
|
250
|
+
readonly name: "subagents";
|
|
251
|
+
readonly description: "Watch current subagent tasks and activity";
|
|
252
|
+
readonly group: "Harness";
|
|
253
|
+
readonly kind: "page";
|
|
254
|
+
}, {
|
|
255
|
+
readonly name: "agents";
|
|
256
|
+
readonly description: "Browse and edit agent profiles";
|
|
257
|
+
readonly group: "Harness";
|
|
258
|
+
readonly kind: "page";
|
|
259
|
+
readonly methods: readonly ["agents.list"];
|
|
260
|
+
}, {
|
|
261
|
+
readonly name: "log";
|
|
262
|
+
readonly description: "Harness diagnostics and this conversation's run events";
|
|
263
|
+
readonly group: "Inspect";
|
|
264
|
+
readonly kind: "page";
|
|
265
|
+
}, {
|
|
266
|
+
readonly name: "context";
|
|
267
|
+
readonly args: "[growth]";
|
|
268
|
+
readonly description: "What the latest request was made of, and where the rest of the window went";
|
|
269
|
+
readonly group: "Inspect";
|
|
270
|
+
readonly kind: "page";
|
|
271
|
+
readonly methods: readonly ["context.attribution"];
|
|
272
|
+
}, {
|
|
273
|
+
readonly name: "hotkeys";
|
|
274
|
+
readonly description: "Keyboard controls";
|
|
275
|
+
readonly group: "Core";
|
|
276
|
+
readonly kind: "local";
|
|
277
|
+
}, {
|
|
278
|
+
readonly name: "quit";
|
|
279
|
+
readonly description: "Restore the terminal and exit";
|
|
280
|
+
readonly group: "Core";
|
|
281
|
+
readonly kind: "local";
|
|
282
|
+
}];
|
|
283
|
+
export type CoreCommandName = typeof CORE_COMMANDS[number]['name'];
|
|
284
|
+
/** The core command a typed name or alias stands for. */
|
|
285
|
+
export declare function coreCommand(name: string): CoreCommand | undefined;
|
|
286
|
+
/** Every listed command, as `commands.list` returns it. */
|
|
287
|
+
export interface ListedCommand {
|
|
288
|
+
/** What the person types after `/`: `fork`, `annotate:notes`, `skill:review`. */
|
|
289
|
+
name: string;
|
|
290
|
+
aliases?: string[];
|
|
291
|
+
args?: string;
|
|
292
|
+
description?: string;
|
|
293
|
+
group: string;
|
|
294
|
+
source: 'core' | 'plugin' | 'extension' | 'prompt' | 'skill';
|
|
295
|
+
/** Core commands only. */
|
|
296
|
+
kind?: CoreCommandKind;
|
|
297
|
+
/** The owning plugin of a plugin or extension command. */
|
|
298
|
+
owner?: string;
|
|
299
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// The core slash commands every front end offers. This module is plain data with no imports, so a
|
|
2
|
+
// browser renderer can read it as well as the terminal. A front end must handle every `action`
|
|
3
|
+
// here (INV-PAR-1); `commands.list` adds plugin commands, prompt templates and skills.
|
|
4
|
+
export const CORE_COMMANDS = [
|
|
5
|
+
{ name: 'help', description: 'List the commands', group: 'Core', kind: 'local' },
|
|
6
|
+
{ name: 'plan', args: '[brief]', description: 'Plan one request, read-only: /plan <brief>', group: 'Run', kind: 'session', methods: ['sessions.run'] },
|
|
7
|
+
{ name: 'goal', args: '[<objective>|edit|pause|resume|clear]', description: 'Set or view a goal for a long-running task: /goal <objective>', group: 'Run', kind: 'session', methods: ['sessions.run'] },
|
|
8
|
+
{ name: 'btw', aliases: ['side'], args: '[question]', description: 'Ask a side question without interrupting: /btw <question>', group: 'Run', kind: 'session', methods: ['sideQuestions.start', 'sideQuestions.cancel'] },
|
|
9
|
+
{ name: 'new', description: 'Start a new session', group: 'Session', kind: 'session' },
|
|
10
|
+
{ name: 'stop', description: 'Stop the current reply', group: 'Run', kind: 'session', methods: ['runs.interrupt'] },
|
|
11
|
+
{ name: 'session', aliases: ['resume'], args: '[path]', description: 'Choose a saved session in this account and folder', group: 'Session', kind: 'session' },
|
|
12
|
+
{ name: 'history', aliases: ['tree'], description: 'Navigate branches in the current session', group: 'Session', kind: 'session', methods: ['sessions.tree', 'sessions.navigate'] },
|
|
13
|
+
{ name: 'fork', description: 'Fork from an earlier message', group: 'Session', kind: 'session', methods: ['sessions.tree', 'sessions.fork'] },
|
|
14
|
+
{ name: 'remote-control', aliases: ['rc'], args: '[off|tailscale|lan]', description: 'Continue this session from your phone or iPad', group: 'Session', kind: 'page', methods: ['terminal.remoteControl.start', 'terminal.remoteControl.stop', 'terminal.remoteControl.status'] },
|
|
15
|
+
{ name: 'clone', description: 'Clone this branch into a new session', group: 'Session', kind: 'session', methods: ['sessions.clone'] },
|
|
16
|
+
{ name: 'model', args: '[search]', description: 'Choose the model', group: 'Model', kind: 'session', methods: ['accounts.models'] },
|
|
17
|
+
{ name: 'effort', args: '[level]', description: 'Choose the thinking effort', group: 'Model', kind: 'session' },
|
|
18
|
+
{ name: 'thinking', args: '[show|hide]', description: 'Toggle transcript thinking visibility: /thinking [show|hide]', group: 'Model', kind: 'local' },
|
|
19
|
+
{ name: 'name', args: '[name]', description: 'Name this session', group: 'Session', kind: 'session', methods: ['sessions.rename'] },
|
|
20
|
+
{ name: 'compact', args: '[instructions]', description: 'Compact the context', group: 'Session', kind: 'session', methods: ['sessions.run'] },
|
|
21
|
+
{ name: 'copy', description: 'Copy the last reply', group: 'Inspect', kind: 'local', methods: ['sessions.lastReply'] },
|
|
22
|
+
{ name: 'export', args: '[path.html|path.jsonl]', description: 'Export this branch to HTML or JSONL', group: 'Inspect', kind: 'session', methods: ['sessions.export', 'sessions.run'] },
|
|
23
|
+
{ name: 'todo', aliases: ['checklist'], description: 'Show the current todo list', group: 'Inspect', kind: 'session', methods: ['runs.todo'] },
|
|
24
|
+
{ name: 'follow-up', description: 'Manage queued follow-up and steering messages', group: 'Run', kind: 'page' },
|
|
25
|
+
{ name: 'trajectory', args: '[run-id]', description: 'Inspect recorded runs for this session', group: 'Inspect', kind: 'page', methods: ['runs.list', 'runs.events'] },
|
|
26
|
+
{ name: 'reload', description: 'Reload trusted resources and keybindings', group: 'Harness', kind: 'session', methods: ['sessions.reload'] },
|
|
27
|
+
{ name: 'accounts', description: 'Sign in, switch, check and remove Pi accounts', group: 'Harness', kind: 'page', methods: ['accounts.list'] },
|
|
28
|
+
{ name: 'permissions', description: 'Full Permission and per-tool approvals', group: 'Harness', kind: 'page', methods: ['approvals.get'] },
|
|
29
|
+
{ name: 'harness', description: 'Browse foundation, variant and all resources', group: 'Harness', kind: 'page' },
|
|
30
|
+
{ name: 'skills', description: 'View, inspect and use skills; discover more', group: 'Harness', kind: 'page' },
|
|
31
|
+
{ name: 'connections', description: 'Manage local and remote MCP connections', group: 'Harness', kind: 'page' },
|
|
32
|
+
{ name: 'mcp', description: 'Open Connections in the Harness browser', group: 'Harness', kind: 'page' },
|
|
33
|
+
{ name: 'tools', description: 'Inspect available tools, owners and approvals', group: 'Harness', kind: 'page' },
|
|
34
|
+
{ name: 'plugins', description: 'Manage local plugins, packages, trust and settings', group: 'Harness', kind: 'page', methods: ['plugins.list', 'plugins.attach', 'plugins.detach', 'plugins.trust', 'plugins.untrust', 'plugins.configure', 'plugins.install', 'plugins.update', 'plugins.remove', 'hub.list'] },
|
|
35
|
+
{ name: 'hub', description: 'Browse the Community catalog and manage Hub installs', group: 'Harness', kind: 'page', methods: ['hub.list', 'hub.install', 'hub.uninstall'] },
|
|
36
|
+
{ name: 'components', description: 'Browse skills, prompts and rules for this Harness scope', group: 'Harness', kind: 'page' },
|
|
37
|
+
{ name: 'variant', args: '[use|restore|tag|untag|diff|revert]', description: 'Versions of this variant: switch, restore, tag, compare, take components back', group: 'Harness', kind: 'session', methods: ['variants.lineage', 'variants.compare', 'variants.restore', 'variants.tag', 'variants.untag', 'variants.revert'] },
|
|
38
|
+
{ name: 'refine', args: '[guidance|status|review|stop]', description: 'Improve this variant by replaying your last request: /refine <what to look at>', group: 'Harness', kind: 'session', methods: ['refine.fromRun', 'refine.start', 'refine.list', 'refine.cancel', 'refine.candidates', 'refine.candidateDiff', 'refine.candidateOutput', 'refine.adopt'] },
|
|
39
|
+
{ name: 'settings', description: 'Session, terminal and browser settings', group: 'Harness', kind: 'page' },
|
|
40
|
+
{ name: 'doctor', description: 'Check account, model, tools and runtime readiness', group: 'Harness', kind: 'page', methods: ['doctor.start', 'doctor.read'] },
|
|
41
|
+
{ name: 'worktree', description: 'Manage repository worktrees', group: 'Harness', kind: 'page', methods: ['worktrees.list'] },
|
|
42
|
+
{ name: 'subagents', description: 'Watch current subagent tasks and activity', group: 'Harness', kind: 'page' },
|
|
43
|
+
{ name: 'agents', description: 'Browse and edit agent profiles', group: 'Harness', kind: 'page', methods: ['agents.list'] },
|
|
44
|
+
{ name: 'log', description: "Harness diagnostics and this conversation's run events", group: 'Inspect', kind: 'page' },
|
|
45
|
+
{ name: 'context', args: '[growth]', description: 'What the latest request was made of, and where the rest of the window went', group: 'Inspect', kind: 'page', methods: ['context.attribution'] },
|
|
46
|
+
{ name: 'hotkeys', description: 'Keyboard controls', group: 'Core', kind: 'local' },
|
|
47
|
+
{ name: 'quit', description: 'Restore the terminal and exit', group: 'Core', kind: 'local' }
|
|
48
|
+
];
|
|
49
|
+
const ALIASES = new Map(CORE_COMMANDS.flatMap((command) => ('aliases' in command ? command.aliases : []).map((alias) => [alias, command.name])));
|
|
50
|
+
/** The core command a typed name or alias stands for. */
|
|
51
|
+
export function coreCommand(name) {
|
|
52
|
+
const canonical = ALIASES.get(name) ?? name;
|
|
53
|
+
return CORE_COMMANDS.find((command) => command.name === canonical);
|
|
54
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** One observed registration, identified by its package or loose extension owner. */
|
|
2
|
+
export interface CommandRoute {
|
|
3
|
+
prefix: string;
|
|
4
|
+
name: string;
|
|
5
|
+
owner: string;
|
|
6
|
+
path: string;
|
|
7
|
+
}
|
|
8
|
+
/** Listing and dispatch reject the whole prefix when different owners claim it. */
|
|
9
|
+
export declare function commandRoutes<T extends CommandRoute>(commands: readonly T[]): {
|
|
10
|
+
routes: Map<string, T[]>;
|
|
11
|
+
byName: Map<string, T[]>;
|
|
12
|
+
ownersByPrefix: Map<string, Map<string, Set<string>>>;
|
|
13
|
+
conflictingPrefixes: Map<string, string[]>;
|
|
14
|
+
};
|
|
15
|
+
/** Namespace roots and reserved routes cannot be claimed by prompt templates. */
|
|
16
|
+
export declare function promptCommandAvailable(name: string, taken: ReadonlySet<string>, extensionCommands?: ReadonlySet<string>): boolean;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BUILTIN_PLUGIN_REGISTRY } from "../plugins/builtin.js";
|
|
2
|
+
/** Listing and dispatch reject the whole prefix when different owners claim it. */
|
|
3
|
+
export function commandRoutes(commands) {
|
|
4
|
+
const routes = new Map();
|
|
5
|
+
const byName = new Map();
|
|
6
|
+
const ownersByPrefix = new Map();
|
|
7
|
+
const builtinPrefixes = new Map(BUILTIN_PLUGIN_REGISTRY.commands().map(command => [command.prefix, command.pluginId]));
|
|
8
|
+
for (const command of commands) {
|
|
9
|
+
const owners = ownersByPrefix.get(command.prefix) ?? new Map();
|
|
10
|
+
const paths = owners.get(command.owner) ?? new Set();
|
|
11
|
+
paths.add(command.path);
|
|
12
|
+
owners.set(command.owner, paths);
|
|
13
|
+
ownersByPrefix.set(command.prefix, owners);
|
|
14
|
+
const route = `${command.prefix}:${command.name}`;
|
|
15
|
+
routes.set(route, [...(routes.get(route) ?? []), command]);
|
|
16
|
+
byName.set(command.name, [...(byName.get(command.name) ?? []), command]);
|
|
17
|
+
}
|
|
18
|
+
const conflictingPrefixes = new Map();
|
|
19
|
+
for (const [prefix, owners] of ownersByPrefix) {
|
|
20
|
+
const builtin = builtinPrefixes.get(prefix);
|
|
21
|
+
if (owners.size > 1 || builtin || prefix === 'plugin' || prefix === 'skill') {
|
|
22
|
+
conflictingPrefixes.set(prefix, [
|
|
23
|
+
...(builtin ? [`built-in plugin ${builtin}`] : []),
|
|
24
|
+
...[...owners.values()].flatMap(paths => [...paths])
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { routes, byName, ownersByPrefix, conflictingPrefixes };
|
|
29
|
+
}
|
|
30
|
+
/** Namespace roots and reserved routes cannot be claimed by prompt templates. */
|
|
31
|
+
export function promptCommandAvailable(name, taken, extensionCommands = new Set()) {
|
|
32
|
+
return !name.includes(':') && !taken.has(name) && !extensionCommands.has(name);
|
|
33
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentSession } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import type { Found } from "../plugins/discover.js";
|
|
3
|
+
/** Intercept before Pi can dispatch a bare extension command. */
|
|
4
|
+
export declare function installPluginCommandRouter(session: AgentSession, found: readonly Found[], barePrompts: Set<string>): () => string[];
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { resolve, sep } from 'node:path';
|
|
2
|
+
import { HarnessError } from "../core/errors.js";
|
|
3
|
+
import { pluginCommandPrefix } from "../plugins/commandPrefix.js";
|
|
4
|
+
import { commandRoutes } from "./routes.js";
|
|
5
|
+
/** Intercept before Pi can dispatch a bare extension command. */
|
|
6
|
+
export function installPluginCommandRouter(session, found, barePrompts) {
|
|
7
|
+
const registrations = () => session.extensionRunner.getRegisteredCommands().map(command => {
|
|
8
|
+
const source = command.sourceInfo;
|
|
9
|
+
const path = resolve(source.path);
|
|
10
|
+
const owner = found.filter(item => item.kind === 'extension' && item.packageRoot && (path === resolve(item.path) || path.startsWith(`${resolve(item.path)}${sep}`))).sort((a, b) => b.path.length - a.path.length)[0];
|
|
11
|
+
const prefix = pluginCommandPrefix(owner?.packageRoot ? { path: source.path, origin: 'package', baseDir: owner.packageRoot } : source);
|
|
12
|
+
return { ...command, prefix, owner: owner?.packageRoot ? `package:${owner.packageRoot}` : source.origin === 'package' ? `package:${source.baseDir ?? source.source}` : `extension:${source.path}`, path: source.path };
|
|
13
|
+
});
|
|
14
|
+
const originalPrompt = session.prompt.bind(session);
|
|
15
|
+
session.prompt = async (text, options) => {
|
|
16
|
+
if (options?.expandPromptTemplates === false)
|
|
17
|
+
return originalPrompt(text, options);
|
|
18
|
+
const match = /^\/([^\s]+)(?:\s+([\s\S]*))?$/.exec(text.trim());
|
|
19
|
+
if (match) {
|
|
20
|
+
const name = match[1];
|
|
21
|
+
const index = commandRoutes(registrations());
|
|
22
|
+
const promptNames = new Set(session.resourceLoader.getPrompts().prompts.map(prompt => prompt.name));
|
|
23
|
+
if (name.startsWith('plugin:') || index.byName.has(name) || (barePrompts.has(name) && !promptNames.has(name))) {
|
|
24
|
+
throw new HarnessError('invalid_request', `Plugin command /${name} requires its owner prefix.`);
|
|
25
|
+
}
|
|
26
|
+
const separator = name.indexOf(':');
|
|
27
|
+
const prefix = separator < 0 ? '' : name.slice(0, separator);
|
|
28
|
+
if (separator > 0 && index.ownersByPrefix.has(prefix)) {
|
|
29
|
+
if (index.conflictingPrefixes.has(prefix))
|
|
30
|
+
throw new HarnessError('invalid_request', `Plugin prefix /${prefix}: is ambiguous.`);
|
|
31
|
+
const matches = index.routes.get(name) ?? [];
|
|
32
|
+
if (matches.length > 1 || matches.length === 1 && promptNames.has(name))
|
|
33
|
+
throw new HarnessError('invalid_request', `Plugin command /${name} is ambiguous.`);
|
|
34
|
+
if (matches.length === 1) {
|
|
35
|
+
const command = session.extensionRunner.getCommand(matches[0].invocationName);
|
|
36
|
+
if (!command)
|
|
37
|
+
throw new HarnessError('invalid_request', `Plugin command /${name} is unavailable.`);
|
|
38
|
+
await command.handler(match[2]?.trim() ?? '', session.extensionRunner.createCommandContext());
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (!promptNames.has(name))
|
|
42
|
+
throw new HarnessError('invalid_request', `Unknown plugin command /${name}.`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
await originalPrompt(text, options);
|
|
46
|
+
};
|
|
47
|
+
return () => [...registrations().map(command => `${command.prefix}:${command.name}`), ...session.resourceLoader.getPrompts().prompts.map(prompt => prompt.name)];
|
|
48
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ToolSession } from "../tools/types.js";
|
|
2
|
+
import { type ComputerControlBackend } from "./control.js";
|
|
3
|
+
export type ComputerAction = 'click' | 'type' | 'key' | 'activate';
|
|
4
|
+
export interface ComputerApprovalDetails {
|
|
5
|
+
action: ComputerAction;
|
|
6
|
+
target: string;
|
|
7
|
+
/** Backend window identity; the host must not use a mutable selection as its handle. */
|
|
8
|
+
handle: string;
|
|
9
|
+
args: Record<string, unknown>;
|
|
10
|
+
capture?: {
|
|
11
|
+
id: string;
|
|
12
|
+
sha256: string;
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
mimeType: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Trusted parent backend. Revalidation must refuse revoked or changed targets/captures. Each
|
|
19
|
+
* effect must itself atomically enforce the control backend's point-of-effect requirements;
|
|
20
|
+
* a separate revalidation cannot close the race with revocation or window changes. */
|
|
21
|
+
export interface ComputerBoundaryBackend extends ComputerControlBackend {
|
|
22
|
+
revalidate(session: ToolSession, details: Readonly<ComputerApprovalDetails>): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/** Trusted live state, not model input. Missing/unknown state must not be reported as attended. */
|
|
25
|
+
export interface ComputerBoundaryState {
|
|
26
|
+
attended: boolean;
|
|
27
|
+
plan: boolean;
|
|
28
|
+
}
|
|
29
|
+
/** An unregistered parent-side boundary for one ToolSession. The caller must still route every
|
|
30
|
+
* tool call through the normal gate, and keep this instance and its backend in the parent process.
|
|
31
|
+
* Target selection and capture are observations; click, type, key and activate each ask anew.
|
|
32
|
+
* The approval includes typed text and window identity in run events: do not use for secrets. */
|
|
33
|
+
export declare function createComputerBoundary(session: ToolSession, backend: ComputerBoundaryBackend, state: () => ComputerBoundaryState): {
|
|
34
|
+
target: (input: unknown) => Promise<import("./contracts.js").ComputerTarget>;
|
|
35
|
+
screenshot: (input: unknown) => Promise<import("./contracts.js").ComputerControlScreenshot>;
|
|
36
|
+
click: (input: unknown) => Promise<void>;
|
|
37
|
+
type: (input: unknown) => Promise<void>;
|
|
38
|
+
key: (input: unknown) => Promise<void>;
|
|
39
|
+
activate: (input: unknown) => Promise<void>;
|
|
40
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { HarnessError } from "../core/errors.js";
|
|
3
|
+
import { createComputerControl } from "./control.js";
|
|
4
|
+
/** An unregistered parent-side boundary for one ToolSession. The caller must still route every
|
|
5
|
+
* tool call through the normal gate, and keep this instance and its backend in the parent process.
|
|
6
|
+
* Target selection and capture are observations; click, type, key and activate each ask anew.
|
|
7
|
+
* The approval includes typed text and window identity in run events: do not use for secrets. */
|
|
8
|
+
export function createComputerBoundary(session, backend, state) {
|
|
9
|
+
const run = session.run;
|
|
10
|
+
let current;
|
|
11
|
+
let busy = false;
|
|
12
|
+
function check() {
|
|
13
|
+
if (session.run !== run || run.finished)
|
|
14
|
+
throw new HarnessError('run_stopped', 'The run was stopped; computer control is cancelled.');
|
|
15
|
+
const live = state();
|
|
16
|
+
if (!live || live.attended !== true || live.plan !== false)
|
|
17
|
+
throw new HarnessError('computer_unavailable', 'Computer control requires an attended, non-plan run.');
|
|
18
|
+
}
|
|
19
|
+
async function approve(handle, shot) {
|
|
20
|
+
check();
|
|
21
|
+
if (!current)
|
|
22
|
+
throw new HarnessError('computer_error', 'Missing computer action.');
|
|
23
|
+
const { action, input } = current;
|
|
24
|
+
const details = {
|
|
25
|
+
action, target: input.target, handle,
|
|
26
|
+
args: Object.fromEntries(Object.entries(input).filter(([key]) => key !== 'target' && key !== 'screenshot')),
|
|
27
|
+
...(shot ? { capture: { id: input.screenshot, sha256: createHash('sha256').update(shot.data).digest('hex'), width: shot.width, height: shot.height, mimeType: shot.mimeType } } : {})
|
|
28
|
+
};
|
|
29
|
+
// Pass independent copies across trust boundaries; neither approval presentation nor a backend
|
|
30
|
+
// may mutate the private, approved action before the effect.
|
|
31
|
+
const description = JSON.stringify(details);
|
|
32
|
+
const decision = await run.requestApproval({ target: `computer_${action}`, action: description, operation: { tool: `computer_${action}`, args: JSON.parse(description) }, rememberable: false, standing: 'none' });
|
|
33
|
+
check();
|
|
34
|
+
if (decision !== 'approved')
|
|
35
|
+
throw new HarnessError('computer_denied', 'Computer action was not approved.');
|
|
36
|
+
await backend.revalidate(session, JSON.parse(description));
|
|
37
|
+
check();
|
|
38
|
+
}
|
|
39
|
+
const guarded = {
|
|
40
|
+
target: (s) => backend.target(s),
|
|
41
|
+
screenshot: (s, handle) => backend.screenshot(s, handle),
|
|
42
|
+
click: async (s, handle, shot, input) => { await approve(handle, shot); check(); await backend.click(s, handle, shot, input); },
|
|
43
|
+
type: async (s, handle, text) => { await approve(handle); check(); await backend.type(s, handle, text); },
|
|
44
|
+
key: async (s, handle, key) => { await approve(handle); check(); await backend.key(s, handle, key); },
|
|
45
|
+
activate: async (s, handle) => { await approve(handle); check(); await backend.activate(s, handle); }
|
|
46
|
+
};
|
|
47
|
+
const control = createComputerControl(session, guarded);
|
|
48
|
+
async function call(input, action, execute) {
|
|
49
|
+
check();
|
|
50
|
+
if (busy)
|
|
51
|
+
throw new HarnessError('computer_busy', 'A computer operation is already in progress.');
|
|
52
|
+
// Clone before the first await, including while another actor can hold the input object.
|
|
53
|
+
let copy;
|
|
54
|
+
try {
|
|
55
|
+
copy = structuredClone(input);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
throw new HarnessError('invalid_input', 'Invalid computer control input.');
|
|
59
|
+
}
|
|
60
|
+
busy = true;
|
|
61
|
+
try {
|
|
62
|
+
if (action)
|
|
63
|
+
current = { action, input: copy };
|
|
64
|
+
return await execute(copy);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
current = undefined;
|
|
68
|
+
busy = false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
target: (input) => call(input, undefined, control.target),
|
|
73
|
+
screenshot: (input) => call(input, undefined, control.screenshot),
|
|
74
|
+
click: (input) => call(input, 'click', control.click),
|
|
75
|
+
type: (input) => call(input, 'type', control.type),
|
|
76
|
+
key: (input) => call(input, 'key', control.key),
|
|
77
|
+
activate: (input) => call(input, 'activate', control.activate)
|
|
78
|
+
};
|
|
79
|
+
}
|