@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,277 @@
|
|
|
1
|
+
# 04 Prompt
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
One compiler builds every model instruction the harness gives. A terminal compiles its pack again
|
|
6
|
+
only when the person switches the conversation to another variant version, at a turn boundary
|
|
7
|
+
(ADR-0065); that costs the provider cache once. It merges the pinned variant's
|
|
8
|
+
sections, the harness's own sections and the application's sections into an ordered,
|
|
9
|
+
budgeted pack, then splits the pack into a **stable system prompt** (cached by the provider) and
|
|
10
|
+
a **context update** (changing state appended to native history). Keeping the two apart is what
|
|
11
|
+
keeps provider caching effective across turns.
|
|
12
|
+
|
|
13
|
+
## Components
|
|
14
|
+
|
|
15
|
+
| Type / function | Role |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `compile(env, caller, launch, variant)` → `ContextPack` | Builds the ordered, budgeted sections, including the configured data-root path in native file guidance. |
|
|
18
|
+
| `render(env, pack)` → `string` | One string for a session that takes a single prompt. |
|
|
19
|
+
| `renderSized(env, pack)` → `{ text, sizes, framing }` | The same string, plus the characters each section occupied and the framing around them. |
|
|
20
|
+
| `sessionLaunch(env, caller, launch, historyFile, variant)` → `{ system, update, pack }` | SDK sessions: stable prefix plus an update with only the dynamic sections that changed since the last delivered snapshot. |
|
|
21
|
+
| `deliveredSnapshot(sessionFile)` | Reads the last delivered snapshot on the active history branch; a compaction forces a fresh one. |
|
|
22
|
+
| `renderCompactionCheckpoint` | Compiles a bounded current-request, todo list and plan-state message for post-compaction model requests. |
|
|
23
|
+
| `saveForSession`, `copyToRun` | Terminal sessions keep the pack they started with and copy it to each run. |
|
|
24
|
+
| `record`, `load`, `packPath` | The pack each run was given, at `runs/<id>/context.json`. |
|
|
25
|
+
| `toolGroups`, `fit`, `clip` | The tool manifest by group; cutting text to a budget at a paragraph boundary. |
|
|
26
|
+
|
|
27
|
+
Assembly is in `prompt/compile.ts`; shared standard-section data is in `prompt/standard.ts`.
|
|
28
|
+
A `ContextPack` holds `sections: Section[]` (each with `id`, `title`,
|
|
29
|
+
`body`, `sources`, `budget`, `size`, `cut`), `toolGroups`, `harness` (scope and fingerprint),
|
|
30
|
+
`profile`, `compiledAt` and `delivery` (`systemSectionIds`, `updatedSectionIds`).
|
|
31
|
+
|
|
32
|
+
`delivery.sizes` records what each delivered section occupied when it was rendered — `system` and
|
|
33
|
+
`update` maps by section id, plus the framing characters that belong to no section (the product
|
|
34
|
+
heading, the section headings, the context-update guidance). It is what lets a surface attribute the
|
|
35
|
+
context window without re-parsing a prompt whose bodies may contain their own headings. A pack
|
|
36
|
+
recorded before the compiler measured them has no `sizes`, and a reader then falls back to
|
|
37
|
+
`Section.size` and says the split is approximate.
|
|
38
|
+
|
|
39
|
+
## Section order
|
|
40
|
+
|
|
41
|
+
`SECTION_ORDER`: `harnessIdentity` 5, `system` 25, `sessionState` 30, `guardrails` 40, `memory` 45, `references` 50, `requiredSkills` 52, `subagents` 64, `scripts` 66, `wiki` 80, `tools` 90, `reporting` 95. Application sections
|
|
42
|
+
sit among them by their `order`; plan mode uses `plan` at 25. Ties keep insertion order.
|
|
43
|
+
When a run may spawn, the dynamic `subagents` section lists every profile it can start (built-in,
|
|
44
|
+
global, project and variant c5 names) and replaces the variant's own list (PROP-0029). Normal-mode
|
|
45
|
+
guidance in that section explains when delegation is worth its overhead, profile selection,
|
|
46
|
+
self-contained briefs, independent parallel work, and parent ownership of integration. Plan mode
|
|
47
|
+
lists only effective profiles eligible for read-only research and requires a named profile; keeping
|
|
48
|
+
this section dynamic leaves the stable system prompt unchanged across modes. The `tools`
|
|
49
|
+
section has a Progress paragraph whenever `todo_write` is available: it asks for `todo_write` before
|
|
50
|
+
the first other tool call when work has several steps, asks for the list to stay current, then
|
|
51
|
+
requests a final update before the reply. Only fully completed work is
|
|
52
|
+
marked completed; unfinished or blocked steps remain accurate (PROP-0006).
|
|
53
|
+
|
|
54
|
+
`session-state` is a built-in dynamic section at order 30 when a top-level run supplies it. It
|
|
55
|
+
names the current session or says “unnamed”, shows this run's todo (empty at the start) and a
|
|
56
|
+
previous run's list as context, and says whether this is the first turn. It describes only tools
|
|
57
|
+
in the frozen set: the name line appears only with `session_name`, and the todo line only with
|
|
58
|
+
`todo_write`. It never enters the stable prefix. Structured sessions deliver it through
|
|
59
|
+
`sessionLaunch` and the changed-section rule; the terminal appends the same text as a request-time
|
|
60
|
+
custom message.
|
|
61
|
+
|
|
62
|
+
`required-skills` is a built-in dynamic section at order 52 when `Launch.requiredSkills` names any
|
|
63
|
+
skill. Named in a message as `$name`, a skill is required for that request: the compiler reads its
|
|
64
|
+
`SKILL.md` from the pinned variant (the built-in `plugin-authoring` skill fills in when the variant
|
|
65
|
+
has none) through `readSkillFile`, and the section carries the skill's text and the directive to
|
|
66
|
+
follow it. It is bounded like `references`, names an unavailable skill honestly, and changes no tool
|
|
67
|
+
or permission. Structured sessions deliver it through `sessionLaunch`; the terminal builds the same
|
|
68
|
+
text with `requiredSkillsText` from Pi's loaded skills and appends it as a hidden request-time custom
|
|
69
|
+
message. The section belongs to the request, so an identical one is delivered again.
|
|
70
|
+
|
|
71
|
+
The fixed `harness-identity` section says `You are an AI agent running in <productName>[, based on
|
|
72
|
+
<model>]. You and the user share one workspace, and your job is to collaborate with them until their
|
|
73
|
+
intended goal is completely handled.` It uses `env.productName` (default `Xingular Agent`) and
|
|
74
|
+
`Launch.model` when the host knows the model. `Launch.standard: { cwd, project?: { name } | null }` requests shared role, personality and working-folder
|
|
75
|
+
sections from `prompt/standard.ts`; the compiler supplies common connections, file and annotation
|
|
76
|
+
guidance for the effective tools. Terminal preparation defaults to standard sections (explicit
|
|
77
|
+
`standard: null` opts out); the host interactive path requests the same sections. Hosts may add
|
|
78
|
+
attributed add-on and task context, not a duplicate standard role or connection policy (PROP-0040).
|
|
79
|
+
|
|
80
|
+
Budgets (characters): variant sections 30,000 each (already capped at save, so never cut here);
|
|
81
|
+
references 12,000; Wiki pointer 2,500; tools 8,000; reporting 12,000 (ADR-0076); the
|
|
82
|
+
standard session's sections: role 1,400, autonomy 2,600, personality 1,200, permission 1,800,
|
|
83
|
+
steering 2,000, writing 1,900 (ADR-0072); application sections their own `budget`.
|
|
84
|
+
|
|
85
|
+
## Reporting
|
|
86
|
+
|
|
87
|
+
Every pack ends with the harness's `reporting` section ("Reporting your work",
|
|
88
|
+
`REPORTING_GUIDANCE` in `prompt/reporting.ts`, imported by `prompt/compile.ts`). It is fixed text
|
|
89
|
+
that shapes the final reply. ADR-0076 adopts Codex's final-answer guidance (`gpt-6.1-sol`), amended
|
|
90
|
+
by ADR-0079: the reply is self-contained, outcome-first, explains the work and its evidence and
|
|
91
|
+
limits, and gives the reader enough context to pick it up cold. It explicitly reports checks that
|
|
92
|
+
were not run or failed; a person-owned next step appears only when one is needed. For substantial
|
|
93
|
+
replies with distinct parts, it often uses content-named Markdown `#` and `##` headings; there is no
|
|
94
|
+
fixed heading vocabulary or required template, and short replies may stay in prose. Code fences name
|
|
95
|
+
the language; commands the person must run use a `bash` fence, while short references stay inline.
|
|
96
|
+
Tables are used for mappings and comparisons. Length follows complexity; prose comes first, with
|
|
97
|
+
lists when the information is genuinely parallel, sequential or easier to compare. References and formatting
|
|
98
|
+
follow rules supplied by the active session or host. Progress updates stay in the standard `writing`
|
|
99
|
+
section, not `reporting`. A subagent's reply gives its caller the concise work
|
|
100
|
+
summary and key findings, with useful absolute paths and evidence; snippets appear only when exact
|
|
101
|
+
text is load-bearing, and code merely read is not recapped. The section ships two examples (a
|
|
102
|
+
headed screen change and a heading-free blocked publish), the shape-by-work table and a four-line
|
|
103
|
+
pre-send list; the blocked-publish example puts its login command in a `bash` fence. A person,
|
|
104
|
+
application or mode format takes precedence. The section names no application, is never dynamic, and is never cut; its
|
|
105
|
+
budget is 12,000 characters, with 5,081 currently delivered (ADR-0079, amended for language-labeled
|
|
106
|
+
code fences).
|
|
107
|
+
|
|
108
|
+
## When a reply may end
|
|
109
|
+
|
|
110
|
+
A reply ends when the request is done, when the compaction guard ends it (INV-RUN-13), when a person
|
|
111
|
+
interrupts, or when the work cannot continue without the person. An open todo item, a passing check,
|
|
112
|
+
a partial result or a long task is not such a reason: the words below ask the model to carry the
|
|
113
|
+
request to completion, and they are the only layer (ADR-0075). The harness does not send a reply
|
|
114
|
+
back and does not mark it unfinished from the todo list; a reply the model ends settles `completed`.
|
|
115
|
+
**No model judges an ordinary reply**; a goal's completion claim is the one thing a model checks
|
|
116
|
+
(INV-RUN-16). A goal that ends blocked settles `needs_person`; a goal that ends on a limit, a pause
|
|
117
|
+
or a stall settles `unfinished`.
|
|
118
|
+
|
|
119
|
+
The words are what asks the model to carry on, and none of them may read as permission to stop with
|
|
120
|
+
work left. A person's own session (`launch.standard`, `prompt/standard.ts`)
|
|
121
|
+
reads six stable sections adapted from OpenAI Codex's gpt-6.1-sol instructions (Apache-2.0, see
|
|
122
|
+
`NOTICE.md`), the same for every model so the terminal and a host read the same text (INV-PAR-1):
|
|
123
|
+
|
|
124
|
+
- `role` — the assistant's job, and the extra work it does without asking (the obvious adjacent
|
|
125
|
+
step, what the work exposes, the check it needs) inside the working folder and away from what a
|
|
126
|
+
person must decide (a deploy, a secret, remote data, money). Extra work and departures from the
|
|
127
|
+
plan are allowed on those terms and reported at the end.
|
|
128
|
+
- `autonomy` — bias to action; persist until the intended goal is complete; "can you...", "help
|
|
129
|
+
me..." are instructions; no partial or "helpful enough" solution; an open todo item, a passing
|
|
130
|
+
check, a partial result or a long task is not a reason to end the turn; the todo list shows
|
|
131
|
+
progress and the request is the scope; which decisions are the agent's own; a document the request
|
|
132
|
+
points to is the request; a question the request or files already answer is not a question for the
|
|
133
|
+
person; the only reasons to stop, one of them a fix to a test or error that does not come from
|
|
134
|
+
this session's work (and then say exactly what is needed).
|
|
135
|
+
- `personality` — curious, thoughtful and candid; keeps its own judgment, disagrees when it has
|
|
136
|
+
reason and reconsiders when the evidence warrants it, without flattery or forced enthusiasm.
|
|
137
|
+
- `permission` — authorisation persists; finish the authorised work first so that approval is the
|
|
138
|
+
last step; no permission for reversible, read-only or already authorised work; a test or error
|
|
139
|
+
that does not come from this session's work is reported, not fixed, unless the person asks (a
|
|
140
|
+
failure is this session's work when the agent's changes caused it), and is kept off the todo
|
|
141
|
+
list; no messages to other people unless asked; when the agent must ask, it says why and where
|
|
142
|
+
the requirement comes from.
|
|
143
|
+
- `steering` — a new message steers the active task; a correction means "fix it"; compaction does
|
|
144
|
+
not end the task, and work across compactions is one chain.
|
|
145
|
+
- `writing` — plain words, the outcome first, evidence and limits, routine verification summarised,
|
|
146
|
+
no AI-slop phrases, no "X, not Y" contrast, no invented labels, no needless apology.
|
|
147
|
+
|
|
148
|
+
Other fixed text that shapes the end of a reply:
|
|
149
|
+
|
|
150
|
+
- `TODO_GUIDANCE` (`tools/todo.ts`): the list is progress, not scope; the request, and any document
|
|
151
|
+
it points to, is the scope; add steps as the work shows them; list a handoff's steps instead of one
|
|
152
|
+
"remaining work" item; before ending, compare the request, not the list, with what is done and
|
|
153
|
+
checked. An open step is work to do in this reply, not something to report.
|
|
154
|
+
- `reporting` (`REPORTING_GUIDANCE`): the final answer is self-contained, outcome-first and gives
|
|
155
|
+
the reader enough context to pick up cold. It reports checks accurately, including checks not run
|
|
156
|
+
or failed; names a person's next step only when one is needed; and often uses content-named `#` / `##`
|
|
157
|
+
headings for substantial multi-part replies without a fixed heading set. A subagent gives its
|
|
158
|
+
caller a concise report of the work and findings. Length and structure follow the content, and
|
|
159
|
+
references follow the active session's format; a login the work needs is named with its exact
|
|
160
|
+
command.
|
|
161
|
+
- `ask_user` (`tools/askUser.ts`): for a decision the request and files do not answer, never for
|
|
162
|
+
permission to do work inside the request; no answer means continue with best judgment (Codex's
|
|
163
|
+
Default-mode rule).
|
|
164
|
+
- In a person's own session the `Progress` tool group says that a reply with open items is sent back.
|
|
165
|
+
There is no tool to stop "on purpose": ADR-0069 removed `checkpoint_write` and ADR-0071 removed
|
|
166
|
+
`finish`. The only tool that ends work is `update_goal` in a goal the person started (INV-TOOL-9).
|
|
167
|
+
|
|
168
|
+
All of these are fixed text in the stable prefix, so changing them changes the cached prefix once.
|
|
169
|
+
A live terminal session keeps the pack, and the extension code, it started with; a harness update
|
|
170
|
+
reaches it only when the session restarts.
|
|
171
|
+
|
|
172
|
+
A goal's text (`sessions/goalPrompts.ts`, adapted from Codex's `ext/goal/templates`) is not in the
|
|
173
|
+
prefix: the continuation, round-cap and edit prompts ride as hidden user messages, with the
|
|
174
|
+
objective escaped and wrapped as data (INV-PRM-2).
|
|
175
|
+
|
|
176
|
+
## Delivery
|
|
177
|
+
|
|
178
|
+
```text
|
|
179
|
+
compile ──► pack ──► stable sections ──► system prompt (+ "Context updates" guidance)
|
|
180
|
+
└──► dynamic sections ──► compare with delivered snapshot ──► custom message
|
|
181
|
+
type xingular-context
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
- Dynamic sections are the built-in `references`, `required-skills` and `wiki`, plus every application section with
|
|
185
|
+
`dynamic: true`.
|
|
186
|
+
- The rendered sizes of both halves are recorded with the pack (`delivery.sizes`), so the context a run
|
|
187
|
+
was given can be attributed after the fact without replaying the compiler.
|
|
188
|
+
- An update lists only the dynamic sections that changed, and announces a withdrawn one.
|
|
189
|
+
`references` and `required-skills` are always resent when present, because they belong to the current request.
|
|
190
|
+
- After a compaction during the active run, the foundation checkpoint extension detects the new
|
|
191
|
+
summary and uses `renderCompactionCheckpoint` once to build one hidden, ephemeral context message.
|
|
192
|
+
It inserts that same message directly after the summary in each later model request while the run
|
|
193
|
+
continues, when a todo list or applicable plan instructions existed at the compaction. A moving
|
|
194
|
+
message would make each request differ from the previous one before its end and defeat provider
|
|
195
|
+
caching (ADR-0067). A run that starts from already-compacted history gets no checkpoint.
|
|
196
|
+
It contains only the current request and available state. It is not written to native history, and its state is
|
|
197
|
+
discarded when the run settles or the branch changes.
|
|
198
|
+
- The session appends the update as a hidden custom message and saves its snapshot in the
|
|
199
|
+
message details (`xingularContext`); recording a pack does not mark it delivered.
|
|
200
|
+
- Terminal sessions use `compile` + `render` once, pass it as `--append-system-prompt`, and keep
|
|
201
|
+
that pack for the life of the session.
|
|
202
|
+
- Native file guidance states that absolute and `~` paths work for reads when the operating
|
|
203
|
+
system permits access, names the configured data root, and describes the working folder as a
|
|
204
|
+
default location. Native writes and Bash filesystem effects default to the run's pinned project
|
|
205
|
+
or worktree root; an outside file target is allowed, and the Harness pauses that one call until
|
|
206
|
+
the person allows or denies it with a control. The tools section opens with the approval rule:
|
|
207
|
+
call the tool, never ask for permission in a message, and never end the turn to wait for an
|
|
208
|
+
answer. Bash is sandboxed unless the eligible user explicitly enables Full Permission. Edits and
|
|
209
|
+
commands remain subject to the gate.
|
|
210
|
+
- A side-question launch attributes its fixed no-tool instruction to the `side-questions` plugin.
|
|
211
|
+
Its launch suppresses tool guidance entirely. The main run's effective prompt and current context
|
|
212
|
+
update are included in the separately bounded, redacted context message (PROP-0019).
|
|
213
|
+
|
|
214
|
+
## Launch parity status (2026-11-19)
|
|
215
|
+
|
|
216
|
+
Shared section generation is present in source; `surfaceParity.test.ts` checks compiler equality.
|
|
217
|
+
That does not verify actual prepared launches, registered schemas, credentials, variant pins or
|
|
218
|
+
provider-cache reuse. PROP-0040 also requires one Harness-owned interactive default for roots,
|
|
219
|
+
variant scope and credential backend. Adoption and runtime acceptance remain in progress; explicit
|
|
220
|
+
roots/scopes and continuation pins take precedence. Matching `--data` alone cannot reconcile a
|
|
221
|
+
file SecretStore with a host Keychain. See [parity](../parity.md).
|
|
222
|
+
|
|
223
|
+
## Invariants
|
|
224
|
+
|
|
225
|
+
- **INV-PRM-1** The prompt is assembled only in `src/prompt/compile.ts`. Nothing else builds model
|
|
226
|
+
instructions. SDK sessions use `sessionLaunch`; terminal sessions use `compile` + `render`.
|
|
227
|
+
- **INV-PRM-2** The system prompt holds only stable text: identity, role, the variant's sections, the
|
|
228
|
+
harness's reporting guidance, tool guidance and the tool manifest. Changing state never enters it.
|
|
229
|
+
- **INV-PRM-3** `session-state`, `references`, `required-skills`, `wiki`, and every section the application marks
|
|
230
|
+
`dynamic` are delivered as context updates in native history, never in the system prompt.
|
|
231
|
+
- **INV-PRM-4** An update carries only changed dynamic sections, so an unchanged turn appends
|
|
232
|
+
nothing. A compaction on the active branch forces the full snapshot again.
|
|
233
|
+
- **INV-PRM-5** The pack only describes tools the caller can call (the frozen capability set).
|
|
234
|
+
`ask_user` is not part of the compiler's tool-group manifest; its mode-specific availability is
|
|
235
|
+
resolved with the run's callable tools (page 02).
|
|
236
|
+
- **INV-PRM-6** Each run's pack is recorded beside the run. Failing to record it never fails the
|
|
237
|
+
session.
|
|
238
|
+
- **INV-PRM-7** The compiler is synchronous (`INV-BND-4`).
|
|
239
|
+
- **INV-PRM-8** Whether a prompt or callable tool-list change keeps the provider's cache is measured
|
|
240
|
+
with real requests from the application, only with the account owner's permission. Tests do not
|
|
241
|
+
stand in for it.
|
|
242
|
+
- **INV-PRM-9** Native file guidance describes the boundary accurately: absolute and `~` paths
|
|
243
|
+
are valid for read-only file tools, which remain bounded by OS permissions rather than the
|
|
244
|
+
workspace root. Native file writes and Bash filesystem effects are workspace-scoped by default;
|
|
245
|
+
the working folder itself is not the boundary. Side-question runs with no callable tools omit
|
|
246
|
+
tool guidance.
|
|
247
|
+
- **INV-PRM-10** Compaction checkpoints are assembled by this compiler, bounded, and delivered only
|
|
248
|
+
as ephemeral context while their active run continues, at a fixed place right after the compaction
|
|
249
|
+
summary and unchanged until the next compaction. They do not change the stable system prompt
|
|
250
|
+
or native history, and do not carry hidden reasoning (PROP-0033, ADR-0032, ADR-0067). A work-slice handoff is
|
|
251
|
+
the same kind of bounded projection: the `checkpoint` event is rendered into the continuation
|
|
252
|
+
section by `continuationBody`, never into the system prompt (PROP-0041).
|
|
253
|
+
- **INV-PRM-11** The Progress group names `checkpoint_write` when it is in the frozen capability
|
|
254
|
+
set, with the same budget as the other tool guidance, and says only that a bounded reply records a
|
|
255
|
+
handoff when its budget is reached. It does not describe the limits themselves, which the guard
|
|
256
|
+
states at the boundary.
|
|
257
|
+
|
|
258
|
+
## Relation to DESIGN-0001
|
|
259
|
+
|
|
260
|
+
[`../system-prompt-design.md`](../system-prompt-design.md) is a draft design (not accepted). Only
|
|
261
|
+
what this page states is binding. Adopting parts of that draft is an architecture change.
|
|
262
|
+
|
|
263
|
+
## Source map
|
|
264
|
+
|
|
265
|
+
`src/prompt/compile.ts`, `src/sessions/sessions.ts` (calls `sessionLaunch`),
|
|
266
|
+
`src/terminal/terminals.ts` (calls `compile` + `render`), `src/sessions/sessionState.ts`
|
|
267
|
+
(the native name reader and state shape), `src/variant/materialise.ts` (variant sections),
|
|
268
|
+
`src/sessions/planMode.ts` (`plan` section).
|
|
269
|
+
|
|
270
|
+
## Session naming guidance (PROP-0010)
|
|
271
|
+
|
|
272
|
+
The Session tool group describes `session_name` when available: call it once before the first
|
|
273
|
+
other tool call when a request needs tools or changes state, with an imperative sentence of at
|
|
274
|
+
most six words, and revise only when the objective changes.
|
|
275
|
+
This is fixed foundation guidance. The current name stays in native session metadata and
|
|
276
|
+
the terminal snapshot; it may appear in the request-scoped `session-state` update, but it is never
|
|
277
|
+
interpolated into the stable system prompt.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# 05 Refinement
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Refinement improves a variant from evidence of how it ran, with model weights fixed
|
|
6
|
+
(Harness²). On one task it runs the current variant, lets improver sessions edit it, probes each
|
|
7
|
+
candidate, composes the best behaviours, and picks one final output without ever seeing a score.
|
|
8
|
+
A person adopts the result. Adopted variants and their lessons go to an experience library that the
|
|
9
|
+
next task's improvers read.
|
|
10
|
+
|
|
11
|
+
## Components
|
|
12
|
+
|
|
13
|
+
| Type / function | Module | Role |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| `Refinements` | `refine/service.ts` | `start`, `taskFromRun`, `wait`, `get`, `list`, `cancel`, `candidates`, `candidateDiff`, `candidateOutput`, `adopt`, `library`, `libraryEntry`, `forget`. |
|
|
16
|
+
| `runRefinement` | `refine/runner.ts` | One refinement end to end; writes `summary.json`. |
|
|
17
|
+
| `runMatrix` | `refine/suite.ts` | Evaluates variant versions on a task set without refining: one probe execution per version × task, recorded as `matrix.json` with comparability keys. Reads with `readMatrix`. |
|
|
18
|
+
| recursion | `refine/recursion.ts` | Parallel (`agg`) and sequential (`seq`) modes; stages `INV`, `DOM`, `AGG`, `COMPOSE`. |
|
|
19
|
+
| `Ledger` | `refine/ledger.ts` | Budget identity: R = 4k rollouts, P = 3k improver sessions. |
|
|
20
|
+
| evidence | `refine/evidence.ts` | Builds the evidence folder and guards it against grader output. |
|
|
21
|
+
| selection | `refine/selection.ts` | Blind choice among anonymised outputs, then reflection. |
|
|
22
|
+
| `Library` | `refine/library.ts` | The experience library per scope and area. |
|
|
23
|
+
| `PiExecutor`, `PiImprover` | `refine/pi.ts` | Executions and improvers as ordinary harness runs, triggers `probe` and `improver`. |
|
|
24
|
+
| `RefineHost` | `refine/host.ts` | The application's part (page 01, surface 7). The default host replays a git snapshot in a shared clone (`prepareSnapshotWorkspace`). |
|
|
25
|
+
| `snapshotWorkingTree` | `worktrees/snapshot.ts` | The working tree as a typed turn found it, as a commit (PROP-0052). |
|
|
26
|
+
| prompts | `refine/prompts.ts` | Improver missions. |
|
|
27
|
+
|
|
28
|
+
## Method
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
base variant ──► k base executions (probe runs, isolated workspaces)
|
|
32
|
+
──► evidence folder (task, source, trajectories, deliverables, variant, library, pool)
|
|
33
|
+
──► improvers: k INV (how the agent works) + k DOM (what a practitioner knows)
|
|
34
|
+
──► probe each candidate ──► k compositions from behavioural contrasts ──► k finals
|
|
35
|
+
──► blind selection among anonymised outputs ──► reflection ──► candidate for adoption
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Parallel mode explores wider; sequential mode refines deeper. Both cost R = 4k executions and
|
|
39
|
+
P = 3k improver sessions. An invalid proposal gets one retry with the validator's message
|
|
40
|
+
(`STAGE_ATTEMPTS = 2`), then inherits the current variant.
|
|
41
|
+
|
|
42
|
+
An **evaluation matrix** is the measurement half on its own: `runMatrix` runs every
|
|
43
|
+
`{variant version × task}` pair through the same `Executor` contract — no improver, no selection,
|
|
44
|
+
no adoption, and an empty or failed execution is an honest row. Every row records
|
|
45
|
+
deliverability (`ok`, `delivered`) and cost, plus its comparability keys (task-prompt hash,
|
|
46
|
+
executor name, package version, variant fingerprint), so matrices taken across variant versions or
|
|
47
|
+
package commits are diffable directly. An evaluation never moves a head, and it inherits the
|
|
48
|
+
answer-free rule: a variant or record carrying grader output is refused before any execution
|
|
49
|
+
(`INV-REF-1`).
|
|
50
|
+
|
|
51
|
+
## Contracts
|
|
52
|
+
|
|
53
|
+
- `start({ task: { id, scope, prompt, ... }, k?, mode?: 'parallel' | 'sequential', baseVersion?, improver?, executor?, retainWorkspaces? })`
|
|
54
|
+
returns `{ id }` at once; progress arrives as `refine.changed` and `refine.event` notices.
|
|
55
|
+
- With `retainWorkspaces: true` (default `false`), each execution's workspace — base, candidate
|
|
56
|
+
and final — is copied whole to `rollouts/<label>/workspace/` after its run settles and before
|
|
57
|
+
the host's `cleanup`. Binary and hidden files are kept, and symbolic links are copied as links.
|
|
58
|
+
A failed copy is recorded as `workspaceError` in `rollout.json` and never fails the execution.
|
|
59
|
+
`candidates(id)` reports each execution's `workspace` path, or `null` (PROP-0002).
|
|
60
|
+
- `executor: { model?, effort?, accountId?, poolId? }` names how executions run. For each value
|
|
61
|
+
the host's `session(...)` wins, then `executor`, then the account default. `summary.json`
|
|
62
|
+
records `settings: { executor, improver }` as started; each probe run's record holds what it
|
|
63
|
+
resolved (PROP-0003).
|
|
64
|
+
- `adopt(id, { label?, tag? })` commits the chosen (or named) candidate as the scope's head with
|
|
65
|
+
source `refinement`, records `tunedFor` from the model its execution ran on, and tags it when
|
|
66
|
+
asked. It refuses while any plugin code in it is untrusted, and checks the tag before committing.
|
|
67
|
+
- `taskFromRun({ runId? | sessionId?, nativeSessionId?, guidance? })` builds a task that replays
|
|
68
|
+
one turn a person typed: its request text, the scope its variant came from, and its
|
|
69
|
+
`workspaceSnapshot` as `task.workspace`. With a session it takes the latest typed turn; with a
|
|
70
|
+
native session id it also finds turns recorded before the terminal restarted on another version.
|
|
71
|
+
It refuses a run something else started, a run with no variant, and a run with no snapshot, and
|
|
72
|
+
lists what the replay leaves out (attachments, untracked files the snapshot omitted).
|
|
73
|
+
- `task.workspace: { kind: 'git-snapshot', repo, commit }`: the default host prepares each
|
|
74
|
+
execution as a `--shared` clone of `repo` checked out at `commit`, with HEAD and the index at the
|
|
75
|
+
commit's parent, so tracked edits, deletions and new files look as they did. Ignored files named
|
|
76
|
+
by `.worktreeinclude` are copied from the repository as it is now. The person's repository gains
|
|
77
|
+
no worktree, ref or file.
|
|
78
|
+
- `task.guidance`: where the person asked improvers to look, at most 2,000 characters, refused when
|
|
79
|
+
it names measurement (`checkGuidance`). It is added to the INV, DOM, aggregate and compose
|
|
80
|
+
missions as a focus block that directs attention and keeps `KEEP_BASE` valid, and recorded on the
|
|
81
|
+
summary. It never reaches the selector or the reflector.
|
|
82
|
+
- `candidateDiff(id, label)` and `candidateOutput(id, label)` return one candidate's file changes
|
|
83
|
+
from the base and what its execution produced, for review before adopting.
|
|
84
|
+
- Executions run as `sessions.run` with `trigger: 'probe'`, `automatic: true`, in the host's
|
|
85
|
+
workspace. Improvers run with `trigger: 'improver'`, `automatic: true`, file tools only, no
|
|
86
|
+
providers, no connected apps, no harness tools, no variant, in a temporary copy of the evidence.
|
|
87
|
+
|
|
88
|
+
## Invariants
|
|
89
|
+
|
|
90
|
+
- **INV-REF-1** Refinement is answer-free. No rubric, score, grader output or reviewer verdict
|
|
91
|
+
reaches an improver, the selector or the library. `refine/evidence.ts` guards every evidence
|
|
92
|
+
folder (`GRADER_VERDICT_MARKERS` as a tripwire) and `assertTreeHasNoGraderVerdicts` guards the
|
|
93
|
+
library. Retained workspaces are output for measurement after the fact; evidence, selection,
|
|
94
|
+
reflection and the library never read them.
|
|
95
|
+
- **INV-REF-2** The selector sees only the request, the source and the outputs, shuffled under
|
|
96
|
+
arbitrary ids. It never sees a harness, a trajectory, a verdict or the person's guidance.
|
|
97
|
+
- **INV-REF-3** The budget identity R = 4k, P = 3k holds in both modes (`Ledger.assertIdentity`).
|
|
98
|
+
A change to the method changes both modes and their tests together.
|
|
99
|
+
- **INV-REF-4** Refinement never acts in the world. Executions are unattended `probe` runs in a
|
|
100
|
+
folder the `RefineHost` prepared; anything that needs a person is refused at the gate, never
|
|
101
|
+
queued.
|
|
102
|
+
- **INV-REF-5** Improvers have file tools only and work on a copy of the evidence.
|
|
103
|
+
- **INV-REF-6** Refinement never moves a head by itself. Only `adopt`, a person's action, does, and
|
|
104
|
+
only with all plugin code trusted (`INV-VAR-5`).
|
|
105
|
+
- **INV-REF-7** The library carries whole adopted variants with an evidence-backed lesson, never a
|
|
106
|
+
summary in place of the variant.
|
|
107
|
+
- **INV-REF-8** Per-observation truncation of trajectories is never below `MIN_OBS_TRUNC`
|
|
108
|
+
(10,000 characters); lower values fabricate defects.
|
|
109
|
+
|
|
110
|
+
## Data
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
<data root>/refine/<id>/ summary.json, task.json, variants/<label>/, rollouts/<label>/,
|
|
114
|
+
sessions/<label>/, context/, selection/, reflection/, improver/
|
|
115
|
+
<data root>/refine/<id>/rollouts/<label>/workspace/ only with retainWorkspaces
|
|
116
|
+
<data root>/refine/<id>/ matrix.json, suite.json (evaluation matrices; see above)
|
|
117
|
+
<data root>/library/<scope>/<area>/INDEX.md
|
|
118
|
+
<data root>/library/<scope>/<area>/variants/<task>/{variant/, EXPERIENCE.md}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Source map
|
|
122
|
+
|
|
123
|
+
In the terminal, `/refine [--k N] [--mode parallel|sequential] [--model id] [--executor-model id]
|
|
124
|
+
[guidance]` replays the latest request typed in this conversation. It shows the request, its
|
|
125
|
+
snapshot, the focus, the run count (4k executions, 3k improver sessions, selection and reflection)
|
|
126
|
+
and the models, asks, then runs in the background with a status item. Executions use this chat's
|
|
127
|
+
model unless `--executor-model` names another; `--model` sets the improver's. `/refine status`,
|
|
128
|
+
`/refine stop` and `/refine review` follow it; review marks the selector's pick, shows each
|
|
129
|
+
candidate's changes and output, and adopts any candidate, then switches the conversation to it.
|
|
130
|
+
|
|
131
|
+
`src/refine/*.ts`. Method origin: Harness² (`harness2/core/{recursion,ledger,selection,library,context}.py`,
|
|
132
|
+
Apache-2.0). The evaluation matrix is this harness's addition (`refine/suite.ts`), shaped by the
|
|
133
|
+
same executor contract and demo executor. Try it with no model: `npm run build && node dist/cli.js refine demo --k 2`,
|
|
134
|
+
or evaluate a matrix with `node dist/cli.js refine matrix --demo [--data <root>] [--out <file.json>]`.
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# 06 Plugins and capabilities
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
A *plugin* is a bundle with a title, a description and contributions: instructions, skills,
|
|
6
|
+
commands, subagent profiles (`agent`), tools, connections, code (a Pi extension) and themes. A Pi package is a plugin as it is;
|
|
7
|
+
so are the harness's own parts, the application's parts, a person's registry, the folder every
|
|
8
|
+
account shares, and what a working folder brings. This part decides what a session loads, who has
|
|
9
|
+
what switched on, which code may run, and what reaches one caller. A *capability set* is the
|
|
10
|
+
callable result for one run.
|
|
11
|
+
|
|
12
|
+
## Components
|
|
13
|
+
|
|
14
|
+
| Type / function | Module | Role |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `Plugin`, `Contribution`, `PluginDescriptor`, `CONTRIBUTION_KINDS`, `PLUGIN_SOURCES` | `plugins/types.ts` | The model of a plugin and what it brings. |
|
|
17
|
+
| `Plugins` (`loading`, `loaded`) | `plugins/plugins.ts` | Chooses the paths a session or terminal loads; records what each extension registered. |
|
|
18
|
+
| discovery | `plugins/discover.ts` | Finds items with Pi's own resolver, which runs no extension code. |
|
|
19
|
+
| attachments (`load`, `save`, `attached`, `decided`, `set`) | `plugins/attachments.ts` | The one store of what is switched on, per scope. |
|
|
20
|
+
| `BuiltinPluginRegistry`, `BuiltinPluginModule` | `plugins/builtinRegistry.ts`, `plugins/builtin.ts` | Registers built-in modules and their descriptors, world parts, server handlers and plugin-owned terminal commands. Harness core commands live in `commands/registry.ts`, shared by both surfaces. |
|
|
21
|
+
| `HARNESS_PLUGINS` | `plugins/builtin.ts` | Descriptor view of the registered Harness parts and feature plugins. |
|
|
22
|
+
| `FIRST_PARTY_PLUGINS` | `plugins/firstParty.ts` | `output-trim`, `budget-guard`: inline extensions shipped switched off. `lessons`: switched off; its contribution turns on reflection after a run (page 08, PROP-0008) and loads no Pi code. |
|
|
23
|
+
| `Hooks` | `plugins/hooks.ts` | Runs a package's hooks file after a write. |
|
|
24
|
+
| install / trust | `plugins/install.ts`, `plugins/trust.ts` | Install through Pi's package manager with scripts off; trust code by hash. |
|
|
25
|
+
| proposals | `plugins/proposals.ts` | Validate and store inert proposals; preview, reject or accept a hash-bound review. |
|
|
26
|
+
| inventory / api | `plugins/inventory.ts`, `plugins/api.ts` | `plugins.list`, `plugins.inventory`, attach, trust. |
|
|
27
|
+
| capability api | `capabilities/api.ts`, `capabilities/types.ts` | `list`, `resolve`, `toolIntersection`, `inventory`, `attach`. |
|
|
28
|
+
| run snapshot | `capabilities/runSnapshot.ts` | `freezeRun`, `loadRun`, `capabilitySet`. |
|
|
29
|
+
|
|
30
|
+
## Contracts
|
|
31
|
+
|
|
32
|
+
- **Loading.** `Plugins.loading({ cwd, agentDir, caller, contributions, install? })` returns
|
|
33
|
+
`extensionPaths`, `skillPaths`, `promptPaths`, `themePaths`, `profilePaths`, `builtins` (legacy shape; no Pi CLI built-ins selected), `hooks`,
|
|
34
|
+
`found`, `detached`, `projectCode`, `packageCode`. `profilePaths` are read by the harness for
|
|
35
|
+
subagent profiles (page 02); Pi is never given them. A session opens Pi with its own discovery off
|
|
36
|
+
and only these paths; a terminal receives them as `--extension`, `--skill`,
|
|
37
|
+
`--prompt-template` and `--theme` after `--no-extensions --no-skills --no-prompt-templates
|
|
38
|
+
--no-themes`. Pi still reads `AGENTS.md` and `SYSTEM.md` itself.
|
|
39
|
+
- **Surface metadata (PROP-0040).** `PluginDescriptor.surfaces` and `Plugin.surfaces` optionally
|
|
40
|
+
carry `{ preferred: 'host', terminal: 'fallback' | 'unavailable', note: string }`.
|
|
41
|
+
`plugins/surfaces.ts` formats the note and badge. Inspection explains what the host adds and
|
|
42
|
+
what the terminal does instead; this is not a category, attachment switch or permission.
|
|
43
|
+
- **Shared resources (PROP-0040).** Both surfaces load Harness-selected resources and enabled
|
|
44
|
+
first-party hooks, including output trim and budget guard. Terminal preparation exposes these
|
|
45
|
+
through its protected bridge. Pi CLI-only llama.cpp, codemode, tool-search and MCP built-ins are
|
|
46
|
+
not selected or advertised as extra terminal capabilities. This does not remove Harness MCP.
|
|
47
|
+
- **Attachments.** `config/plugin-attachments.json` holds `global`, `agents`, `projects` (each
|
|
48
|
+
`{ on, off }`) and `settings` per plugin. The narrowest scope that says something wins: agent,
|
|
49
|
+
then project, then everywhere. With no entry an item keeps its default.
|
|
50
|
+
- **Package metadata.** A Pi package may declare `"harness": { "extends": [...], "hooks": "./hooks.mjs", "commandPrefix": "my-tools", "defaultPrompt": "review", "agents": "./agents" }`.
|
|
51
|
+
`defaultPrompt` names one of that package's prompt templates as the target of `/<owner-prefix>:`;
|
|
52
|
+
it is not a path or an arbitrary command. Without a valid, unambiguous owned target, it must not
|
|
53
|
+
route to another owner's template or guess a default (ADR-0061).
|
|
54
|
+
A package without a `package.json` name is named, described and versioned by the first of
|
|
55
|
+
`plugin.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, so an agent plugin
|
|
56
|
+
written for other harnesses installs as it is. The first of those manifests that declares
|
|
57
|
+
`skills` (a path or a list of paths) also brings those skill folders as package skill
|
|
58
|
+
contributions, so a plugin laid out for another harness contributes the skills it declares. A
|
|
59
|
+
declared path must stay inside the package, and a symlinked skill folder is skipped. Pi's own
|
|
60
|
+
`skills/` folder and `package.json` manifest take precedence, and a package whose settings entry
|
|
61
|
+
names skill patterns is left to that filter.
|
|
62
|
+
- **Skill installation routes.** A skill reaches a run as text from the working folder's `.pi/skills`
|
|
63
|
+
or `.agents/skills` (walking up to the repository root), the OS user's `~/.agents/skills`, the
|
|
64
|
+
state's `accounts/_shared/pi/skills`, a package's `skills` or a foreign manifest's declared paths,
|
|
65
|
+
or the pinned variant's `skills`. A model may write the first two; `~/.agents` is outside the
|
|
66
|
+
workspace, so a write there needs the person's approval. Variant, library, Hub and package
|
|
67
|
+
installs change committed state and are person acts (`/skills`, `/components`, `/hub`,
|
|
68
|
+
`/plugins`). A variant holds `SKILL.md` and flat `scripts/` files only. `plugins.install` takes a
|
|
69
|
+
package address: a GitHub or GitLab `tree`/`blob` page address is refused with the repository
|
|
70
|
+
address and these routes. The install guidance lives in the release-owned `plugin-authoring`
|
|
71
|
+
skill, not the always-on prompt ([STUDY-0005](../study/STUDY-0005-skill-installation-guidance.md)).
|
|
72
|
+
- **Package subagent profiles.** An installed package's agents folder (`agents/` unless
|
|
73
|
+
`harness.agents` names another) brings each Markdown file whose frontmatter has a `name` and a
|
|
74
|
+
`description` as an `agent` contribution (at most 50). It is text: it needs no trust and follows
|
|
75
|
+
its switch like a skill. The profile is named by its frontmatter, not its file. Fields only other
|
|
76
|
+
harnesses understand are dropped (`agents/profiles.ts`, `parsePackageProfile`): their tool names
|
|
77
|
+
are translated (`Read`→`read`, `Glob`→`find`, …), a model without a provider is left to the
|
|
78
|
+
parent, `plugins` and `variant` are never taken, and a tool list of which nothing translates
|
|
79
|
+
keeps the child read-only. A package profile never replaces a built-in, person's, project's or
|
|
80
|
+
variant's profile of the same name; the listing reports it as a problem instead.
|
|
81
|
+
`commandPrefix` is optional; in the terminal, commands otherwise use a normalized package name as
|
|
82
|
+
their owner prefix. Prefixes use lowercase letters, digits and hyphens, starting with a letter;
|
|
83
|
+
`plugin` and `skill` are reserved. Package-owned prompt templates share the package's command
|
|
84
|
+
namespace with its extension commands; prompts discovered by a loose extension use that
|
|
85
|
+
extension's namespace. Neither is exposed as a bare plugin alias. Standalone prompt templates
|
|
86
|
+
retain their existing form. See page 11 for routing and collision rules.
|
|
87
|
+
- **Plugin authoring.** `plugin_propose` creates a pending proposal, not an installation. The
|
|
88
|
+
release-owned `plugin-authoring` skill is available on demand in structured and terminal sessions;
|
|
89
|
+
a pinned variant's skill of the same name wins. It adds no trust or permission
|
|
90
|
+
([ADR-0045](../decisions/ADR-0045-default-plugin-authoring-skill.md)).
|
|
91
|
+
- **Proposal review.** `plugins/proposals.ts` validates a lowercase package name, nonempty description,
|
|
92
|
+
and 1–100 UTF-8 text files (256 KiB each, 1 MiB total). It accepts `README.md`, extensions
|
|
93
|
+
(`.ts`, `.js`, `.mjs`), Markdown skills, prompts and agents, and JSON themes in their respective
|
|
94
|
+
directories; paths must be safe and cannot contain `.git` or `node_modules`. A
|
|
95
|
+
`skills/<name>/SKILL.md` needs matching name and nonempty description frontmatter. The Harness
|
|
96
|
+
generates `package.json`; it is not supplied by the proposal. Preview revalidates the stored data
|
|
97
|
+
and computes SHA-256 over name, description, generated manifest and sorted file entries. Accept
|
|
98
|
+
and reject require the current preview hash and pending status; stale reviews fail.
|
|
99
|
+
Acceptance rechecks after adoption and listing, refuses an existing package name or already-trusted
|
|
100
|
+
identical package code, stages and publishes under `<data root>/plugins/<name>`, clears old
|
|
101
|
+
attachment decisions for that package and explicitly switches it off globally. It grants no code
|
|
102
|
+
trust or permission; reject retains the proposal as rejected. These are trusted caller review
|
|
103
|
+
operations, not model tools. See [ADR-0046](../decisions/ADR-0046-hash-bound-plugin-proposals.md).
|
|
104
|
+
- **Hooks.** A package declares `"harness": { "extends": [...], "hooks": "./hooks.mjs" }`. Events:
|
|
105
|
+
`wiki.page.saved`, `history.run.ended`. A hook has 30 seconds; its errors are kept in
|
|
106
|
+
`plugin-hooks.json`. `ctx.call(connection, tool, args)` reaches only a connected app that is on
|
|
107
|
+
for everyone, and only a tool marked to run without asking.
|
|
108
|
+
- **Capability set** (`CapabilitySet`): `{ version: 1, tools, connectors, contributions }`.
|
|
109
|
+
`capabilities.resolve` returns the set available to a caller; `capabilities.intersect` /
|
|
110
|
+
`toolIntersection` narrows it for a child. The required `ask-user` plugin remains attached, but its
|
|
111
|
+
`ask_user` tool is included only for an attended plan run or a continuation pinned with that
|
|
112
|
+
capability. Automatic or refinement-triggered continuations with it are rejected rather than
|
|
113
|
+
weakening the frozen set. The `side-questions` descriptor owns the fixed instruction for the
|
|
114
|
+
restricted side-question run; it has no tools, providers, connectors, subagents or variant code
|
|
115
|
+
(PROP-0019). In plan mode, delegation is limited to research children: the resolved profile must
|
|
116
|
+
have explicit tool and plugin allowlists confined to the research set, and the child's frozen
|
|
117
|
+
capabilities are intersected with the parent and profile. A profile name or its instructions alone
|
|
118
|
+
never grants eligibility (INV-RUN-8).
|
|
119
|
+
|
|
120
|
+
## Invariants
|
|
121
|
+
|
|
122
|
+
- **INV-PLG-1** The harness is the only loader. A session or terminal loads exactly what
|
|
123
|
+
`Plugins.loading` chose, with Pi's discovery switched off. Never pass a session a loader that
|
|
124
|
+
discovers on its own.
|
|
125
|
+
- **INV-PLG-2** Code waits for trust. A working folder's `.pi/extensions` and the packages its
|
|
126
|
+
settings name are trusted together; each installed package is trusted on its own. Trust is a
|
|
127
|
+
hash of the files; a changed file asks again. A loose file a person put in the shared
|
|
128
|
+
`extensions/` folder needs no trust. Text contributions always load.
|
|
129
|
+
- **INV-PLG-3** Installing runs no code (`npm_config_ignore_scripts`). A package arrives switched
|
|
130
|
+
off and, if it has code, untrusted. Installing grants no attachment, trust, credential or
|
|
131
|
+
permission.
|
|
132
|
+
- **INV-PLG-4** The approval gate is the last extension to see a tool call (page 07, `INV-GATE-2`).
|
|
133
|
+
A plugin that changes a call's input does so before the gate sees it.
|
|
134
|
+
- **INV-PLG-5** Everything model-visible belongs to a plugin. A new prompt section, tool group or
|
|
135
|
+
tool is declared by a `PluginDescriptor` (`plugins/builtin.ts` for the harness's own), or
|
|
136
|
+
`plugins.inventory` reports it as `unattributed`.
|
|
137
|
+
- **INV-PLG-6** One store says what is switched on: `plugins/attachments.ts`. A new kind of
|
|
138
|
+
switchable thing gets a default and is read with `attached`; no second enablement file.
|
|
139
|
+
- **INV-PLG-7** A hook is told, never asked. Hooks run after the write, in the background; a write
|
|
140
|
+
never waits for a hook and a hook's failure never reaches it. A new write point that should be
|
|
141
|
+
heard calls `noteChange` (`core/changes.ts`). No hook may stop or change a write.
|
|
142
|
+
- **INV-PLG-8** A hook runs only while its plugin is on for everyone and trusted, checked before
|
|
143
|
+
each delivery. A working folder's package cannot bring a hook.
|
|
144
|
+
- **INV-PLG-9** Unattended runs load no extension found on disk (`INV-RUN-5`). The harness's own
|
|
145
|
+
parts are required and refuse to be switched off; switching something on grants no permission.
|
|
146
|
+
A side-question run also has no variant plugin code or tool guidance (PROP-0019).
|
|
147
|
+
- **INV-PLG-10** Every Harness-managed built-in feature is registered by `BuiltinPluginRegistry`.
|
|
148
|
+
Its descriptor, world tools, server handlers and any plugin-owned terminal commands share one
|
|
149
|
+
owner. First-class Harness terminal commands are registered by the terminal command registry and
|
|
150
|
+
do not depend on a feature plugin's command metadata or attachment state. A module's world part
|
|
151
|
+
releases resources through the existing session and Harness lifecycle. This registry does not
|
|
152
|
+
load third-party Pi code or bypass its trust checks.
|
|
153
|
+
- **INV-PLG-11** Built-in plugin categories are a documentation ownership taxonomy. They are not a
|
|
154
|
+
`PluginDescriptor` field, a public response field or a second attachment scope.
|
|
155
|
+
- **INV-PLG-12** Plugin command ownership includes plugin-owned prompt templates. An owner prefix
|
|
156
|
+
identifies exactly one owner; prefix collisions between owners and duplicate routes within an
|
|
157
|
+
owner fail closed with owner diagnostics, including collisions between a template and an extension
|
|
158
|
+
command. Package `harness.defaultPrompt` can select only its own unambiguous template for the
|
|
159
|
+
namespace root. Ownership does not change attachment, code trust or permission rules.
|
|
160
|
+
- **INV-CAP-1** A capability set only narrows. `intersect` never adds access; a run's set is
|
|
161
|
+
frozen when it starts (`INV-RUN-2`). An agent profile's `plugins` list keeps only the parent's
|
|
162
|
+
contributions of those plugins (required plugins always stay) and drops the tools they own; it
|
|
163
|
+
never adds one (PROP-0029).
|
|
164
|
+
- **INV-CAP-2** The capability contract is generic. It names no application task, role or UI
|
|
165
|
+
concept.
|
|
166
|
+
- **INV-CAP-3** A capability set says what may be called, not whether a call may run. The gate
|
|
167
|
+
still decides each call.
|
|
168
|
+
|
|
169
|
+
## Data
|
|
170
|
+
|
|
171
|
+
```text
|
|
172
|
+
<data root>/config/plugin-attachments.json (registry-enabled.json read until the first change)
|
|
173
|
+
<data root>/plugins/<name>/ packages kept with the data; removal moves to trash/plugins/
|
|
174
|
+
<data root>/plugin-proposals/<id>.json proposed text, hash and review status
|
|
175
|
+
<state dir>/plugin-trust.json trusted code, by hash
|
|
176
|
+
<state dir>/plugin-registered.json what each extension registered last time
|
|
177
|
+
<state dir>/plugin-hooks.json hooks and their last run
|
|
178
|
+
<state dir>/accounts/_shared/pi/ settings and packages shared by every account
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Source map
|
|
182
|
+
|
|
183
|
+
`src/plugins/*.ts`, `src/capabilities/*.ts`, `src/core/changes.ts`.
|
|
184
|
+
|
|
185
|
+
## Built-in ownership taxonomy (PROP-0020)
|
|
186
|
+
|
|
187
|
+
These categories make ownership visible in docs and source layout. They do not change plugin
|
|
188
|
+
metadata or availability:
|
|
189
|
+
|
|
190
|
+
| Category | Features | Foundation boundary |
|
|
191
|
+
|---|---|---|
|
|
192
|
+
| Foundation | Accounts, sessions and run recording, prompt and variant validation, gate, plugin loading/trust/attachments, resource browser, server and terminal frameworks | Release-owned infrastructure and security contracts |
|
|
193
|
+
| World | Web search/read tools, browser tools, page annotations | The isolated browser engine and network policy remain Foundation services |
|
|
194
|
+
| Memory | Wiki, history and trajectory | Storage and run records remain Foundation-owned services |
|
|
195
|
+
| Automation | Subagents, ask-user, todo, lessons and refinement | Run lifecycle, capability narrowing and approval gate remain Foundation-owned |
|
|
196
|
+
| Integrations | Connected apps/MCP and Hub | Connector credentials and plugin installation remain behind Foundation services |
|
|
197
|
+
| Operations | Doctor, worktrees and usage | Diagnostics, repository operations and usage analytics remain Harness-managed services |
|
|
198
|
+
|
|
199
|
+
## Terminal plugin and resource inspection
|
|
200
|
+
|
|
201
|
+
The broad `/harness` browser joins saved plugin/contribution metadata with actual session skills and
|
|
202
|
+
tool registration. A saved on/off state does not prove a resource loaded; origins and owners
|
|
203
|
+
distinguish same-name resources. `/plugins` is a focused local manager with Plugins, Trust and
|
|
204
|
+
Packages tabs. It uses the existing plugin services for switching, trust, settings, package install,
|
|
205
|
+
update and removal. `/hub` is a distinct Community catalog surface; it does not load code or add a
|
|
206
|
+
second loader. Hub-owned package removal through `plugins.remove` delegates to Hub so the exact
|
|
207
|
+
receipt and its resources stay consistent. No second discovery or enablement mechanism is
|
|
208
|
+
introduced (PROP-0013, PROP-0047).
|