@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,131 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Loopback address every OAuth sign-in returns to. Pre-registered clients must list it exactly. */
|
|
3
|
+
export declare const MCP_OAUTH_PORT = 47823;
|
|
4
|
+
export declare const MCP_OAUTH_REDIRECT_URL = "http://127.0.0.1:47823/oauth/callback";
|
|
5
|
+
/**
|
|
6
|
+
* The application's own registered OAuth clients, by catalog entry. A client supplied here is
|
|
7
|
+
* used for that sign-in only and is never written to the connection or the secret store.
|
|
8
|
+
*/
|
|
9
|
+
export interface AppOAuthClients {
|
|
10
|
+
/** The catalog entries this application can sign in for. */
|
|
11
|
+
ids(): string[];
|
|
12
|
+
get(catalogId: string): Promise<{
|
|
13
|
+
clientId: string;
|
|
14
|
+
clientSecret?: string;
|
|
15
|
+
} | null>;
|
|
16
|
+
}
|
|
17
|
+
/** Stable attachment key for a connected app's capability switch. */
|
|
18
|
+
export declare const connectionCapabilityId: (id: string) => string;
|
|
19
|
+
export declare const connectionSchema: z.ZodObject<{
|
|
20
|
+
id: z.ZodDefault<z.ZodString>;
|
|
21
|
+
name: z.ZodDefault<z.ZodString>;
|
|
22
|
+
kind: z.ZodDefault<z.ZodString>;
|
|
23
|
+
command: z.ZodDefault<z.ZodString>;
|
|
24
|
+
args: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
25
|
+
cwd: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
26
|
+
envKeys: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
27
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
28
|
+
global: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
+
agentIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
30
|
+
projectIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
31
|
+
excludedAgentIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
32
|
+
excludedProjectIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
33
|
+
readTools: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
34
|
+
expectedVaultId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
35
|
+
checkedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
36
|
+
serverName: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
37
|
+
tools: z.ZodDefault<z.ZodArray<z.ZodUnknown>>;
|
|
38
|
+
error: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
39
|
+
url: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
40
|
+
auth: z.ZodDefault<z.ZodString>;
|
|
41
|
+
headerKeys: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
42
|
+
oauthClient: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
43
|
+
oauthScopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
44
|
+
authState: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
45
|
+
catalogId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export type Connection = z.infer<typeof connectionSchema>;
|
|
48
|
+
export declare const connectionInputSchema: z.ZodObject<{
|
|
49
|
+
id: z.ZodDefault<z.ZodString>;
|
|
50
|
+
name: z.ZodDefault<z.ZodString>;
|
|
51
|
+
kind: z.ZodDefault<z.ZodString>;
|
|
52
|
+
command: z.ZodDefault<z.ZodString>;
|
|
53
|
+
args: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
54
|
+
cwd: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
55
|
+
envKeys: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
56
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
57
|
+
global: z.ZodDefault<z.ZodBoolean>;
|
|
58
|
+
agentIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
59
|
+
projectIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
60
|
+
excludedAgentIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
61
|
+
excludedProjectIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
62
|
+
readTools: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
63
|
+
expectedVaultId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
64
|
+
checkedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
65
|
+
serverName: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
66
|
+
tools: z.ZodDefault<z.ZodArray<z.ZodUnknown>>;
|
|
67
|
+
error: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
68
|
+
url: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
69
|
+
auth: z.ZodDefault<z.ZodString>;
|
|
70
|
+
headerKeys: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
71
|
+
oauthClient: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
72
|
+
oauthScopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
73
|
+
authState: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
74
|
+
catalogId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
75
|
+
env: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
76
|
+
removeEnv: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
77
|
+
headers: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
78
|
+
removeHeaders: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
79
|
+
oauthCredentials: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
80
|
+
clientId: z.ZodString;
|
|
81
|
+
clientSecret: z.ZodString;
|
|
82
|
+
}, z.core.$strip>>>;
|
|
83
|
+
}, z.core.$strip>;
|
|
84
|
+
export type ConnectionInput = z.input<typeof connectionInputSchema>;
|
|
85
|
+
export interface StdioConfig {
|
|
86
|
+
id: string;
|
|
87
|
+
name: string;
|
|
88
|
+
transport: 'stdio';
|
|
89
|
+
command: string;
|
|
90
|
+
args: string[];
|
|
91
|
+
cwd: string | null;
|
|
92
|
+
env: Record<string, string>;
|
|
93
|
+
}
|
|
94
|
+
export interface HttpConfig {
|
|
95
|
+
id: string;
|
|
96
|
+
name: string;
|
|
97
|
+
transport: 'http';
|
|
98
|
+
url: string;
|
|
99
|
+
headers: Record<string, string>;
|
|
100
|
+
auth: 'none' | 'headers' | 'oauth';
|
|
101
|
+
scopes: string[];
|
|
102
|
+
}
|
|
103
|
+
/** What it takes to reach a server: a process to start, or an address and its credentials. */
|
|
104
|
+
export type LaunchConfig = StdioConfig | HttpConfig;
|
|
105
|
+
/** Who a session is, for deciding which connections it may reach. */
|
|
106
|
+
export interface Scope {
|
|
107
|
+
agentId?: string | null;
|
|
108
|
+
projectId?: string | null;
|
|
109
|
+
}
|
|
110
|
+
export interface McpSource {
|
|
111
|
+
id: string;
|
|
112
|
+
title: string;
|
|
113
|
+
uri: string;
|
|
114
|
+
path?: string | null;
|
|
115
|
+
revision?: string;
|
|
116
|
+
excerpt?: string;
|
|
117
|
+
projectId?: string;
|
|
118
|
+
}
|
|
119
|
+
/** One connected-app call a run made, kept in `runs/<id>/mcp-context.json`. */
|
|
120
|
+
export interface McpTrace {
|
|
121
|
+
id: string;
|
|
122
|
+
connectionId: string;
|
|
123
|
+
connectionName: string;
|
|
124
|
+
tool: string;
|
|
125
|
+
at: string;
|
|
126
|
+
ok: boolean;
|
|
127
|
+
summary: string;
|
|
128
|
+
result: string;
|
|
129
|
+
sources: McpSource[];
|
|
130
|
+
truncated: boolean;
|
|
131
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Connected apps: MCP servers the user added. A connection is device-local; its secrets
|
|
2
|
+
// (environment values, request headers, OAuth tokens and client) are in the secret store,
|
|
3
|
+
// never in `connections.json`.
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/** Loopback address every OAuth sign-in returns to. Pre-registered clients must list it exactly. */
|
|
6
|
+
export const MCP_OAUTH_PORT = 47823;
|
|
7
|
+
export const MCP_OAUTH_REDIRECT_URL = `http://127.0.0.1:${MCP_OAUTH_PORT}/oauth/callback`;
|
|
8
|
+
/** Stable attachment key for a connected app's capability switch. */
|
|
9
|
+
export const connectionCapabilityId = (id) => `connected-apps/connection/${id}`;
|
|
10
|
+
export const connectionSchema = z.object({
|
|
11
|
+
id: z.string().default(''),
|
|
12
|
+
name: z.string().default(''),
|
|
13
|
+
/** `workspace` (the first-party Xingular Workspace server), `local` (a command), or `remote` (Streamable HTTP). */
|
|
14
|
+
kind: z.string().default(''),
|
|
15
|
+
command: z.string().default(''),
|
|
16
|
+
args: z.array(z.string()).default([]),
|
|
17
|
+
cwd: z.string().nullable().default(null),
|
|
18
|
+
envKeys: z.array(z.string()).default([]),
|
|
19
|
+
enabled: z.boolean().default(false),
|
|
20
|
+
/** Available to every agent and project, except those excluded. */
|
|
21
|
+
global: z.boolean().default(false),
|
|
22
|
+
agentIds: z.array(z.string()).default([]),
|
|
23
|
+
projectIds: z.array(z.string()).default([]),
|
|
24
|
+
excludedAgentIds: z.array(z.string()).default([]),
|
|
25
|
+
excludedProjectIds: z.array(z.string()).default([]),
|
|
26
|
+
/** Tools that run without asking. */
|
|
27
|
+
readTools: z.array(z.string()).default([]),
|
|
28
|
+
expectedVaultId: z.string().nullable().default(null),
|
|
29
|
+
checkedAt: z.string().nullable().default(null),
|
|
30
|
+
serverName: z.string().nullable().default(null),
|
|
31
|
+
tools: z.array(z.unknown()).default([]),
|
|
32
|
+
error: z.string().nullable().default(null),
|
|
33
|
+
url: z.string().nullable().default(null),
|
|
34
|
+
/** `none`, `headers`, or `oauth`. */
|
|
35
|
+
auth: z.string().default(''),
|
|
36
|
+
headerKeys: z.array(z.string()).default([]),
|
|
37
|
+
oauthClient: z.string().nullable().default(null),
|
|
38
|
+
oauthScopes: z.array(z.string()).default([]),
|
|
39
|
+
authState: z.string().nullable().default(null),
|
|
40
|
+
catalogId: z.string().nullable().default(null)
|
|
41
|
+
});
|
|
42
|
+
export const connectionInputSchema = connectionSchema.extend({
|
|
43
|
+
env: z.record(z.string(), z.string()).nullish(),
|
|
44
|
+
removeEnv: z.array(z.string()).nullish(),
|
|
45
|
+
headers: z.record(z.string(), z.string()).nullish(),
|
|
46
|
+
removeHeaders: z.array(z.string()).nullish(),
|
|
47
|
+
/** A client registered by the user with the provider; replaces any saved sign-in. */
|
|
48
|
+
oauthCredentials: z.object({ clientId: z.string(), clientSecret: z.string() }).nullish()
|
|
49
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Eight attempts at 2, 4, 8, 16, 32, 60, 60 and 60 seconds: about four minutes in all. */
|
|
2
|
+
export declare const TRANSIENT_RETRY: {
|
|
3
|
+
readonly enabled: true;
|
|
4
|
+
readonly maxRetries: 8;
|
|
5
|
+
readonly baseDelayMs: 2000;
|
|
6
|
+
readonly maxAgentDelayMs: 60000;
|
|
7
|
+
};
|
|
8
|
+
interface RetrySettings {
|
|
9
|
+
getGlobalSettings(): {
|
|
10
|
+
retry?: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
getProjectSettings(): {
|
|
13
|
+
retry?: Record<string, unknown>;
|
|
14
|
+
};
|
|
15
|
+
applyOverrides(overrides: Record<string, unknown>): void;
|
|
16
|
+
}
|
|
17
|
+
/** Raises the retry budget on a settings manager; anything the person set themselves still wins. */
|
|
18
|
+
export declare function withTransientRetry<T extends RetrySettings>(manager: T): T;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Pi retries a failed model request three times, 2, 4 and 8 seconds apart: about fourteen seconds
|
|
2
|
+
// of patience, so a half-minute network drop ended the whole reply. A reply that is working should
|
|
3
|
+
// ride out a short outage on its own (the working row shows the countdown), and stop for the person
|
|
4
|
+
// only when the outage outlasts several minutes or the error is not one a retry can fix.
|
|
5
|
+
/** Eight attempts at 2, 4, 8, 16, 32, 60, 60 and 60 seconds: about four minutes in all. */
|
|
6
|
+
export const TRANSIENT_RETRY = { enabled: true, maxRetries: 8, baseDelayMs: 2_000, maxAgentDelayMs: 60_000 };
|
|
7
|
+
/** Raises the retry budget on a settings manager; anything the person set themselves still wins. */
|
|
8
|
+
export function withTransientRetry(manager) {
|
|
9
|
+
manager.applyOverrides({ retry: { ...TRANSIENT_RETRY, ...manager.getGlobalSettings().retry, ...manager.getProjectSettings().retry } });
|
|
10
|
+
return manager;
|
|
11
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const PINNED_PI_VERSION = "1.4.0";
|
|
2
|
+
export declare const HTTP_DISPATCHER_CHUNK = "dist/bundle/chunks/chunk-MM3LKT73.js";
|
|
3
|
+
type PiRuntimeModule = {
|
|
4
|
+
VERSION: string;
|
|
5
|
+
getPackageDir(): string;
|
|
6
|
+
};
|
|
7
|
+
type PiDispatcherModule = {
|
|
8
|
+
configureHttpDispatcher?: unknown;
|
|
9
|
+
};
|
|
10
|
+
export declare function assertPiRuntimeVersion(version: string): void;
|
|
11
|
+
/** Builds a cached Pi loader so initialization order and compatibility behavior can be verified. */
|
|
12
|
+
export declare function createPiLoader<T extends PiRuntimeModule>(importPi: () => Promise<T>, importDispatcher: (packageDir: string) => Promise<PiDispatcherModule>): () => Promise<T>;
|
|
13
|
+
export declare const loadPi: () => Promise<typeof import("@earendil-works/pi-coding-agent")>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { pathToFileURL } from 'node:url';
|
|
3
|
+
export const PINNED_PI_VERSION = '1.4.0';
|
|
4
|
+
export const HTTP_DISPATCHER_CHUNK = 'dist/bundle/chunks/chunk-MM3LKT73.js';
|
|
5
|
+
export function assertPiRuntimeVersion(version) {
|
|
6
|
+
if (version !== PINNED_PI_VERSION)
|
|
7
|
+
throw new Error(`The Harness Pi runtime requires Pi ${PINNED_PI_VERSION}; found ${version}. Install the Harness package's pinned dependencies.`);
|
|
8
|
+
}
|
|
9
|
+
/** Builds a cached Pi loader so initialization order and compatibility behavior can be verified. */
|
|
10
|
+
export function createPiLoader(importPi, importDispatcher) {
|
|
11
|
+
let loading;
|
|
12
|
+
return () => {
|
|
13
|
+
if (!loading) {
|
|
14
|
+
loading = (async () => {
|
|
15
|
+
const pi = await importPi();
|
|
16
|
+
assertPiRuntimeVersion(pi.VERSION);
|
|
17
|
+
const dispatcher = await importDispatcher(pi.getPackageDir());
|
|
18
|
+
if (typeof dispatcher.configureHttpDispatcher !== 'function') {
|
|
19
|
+
throw new Error(`The Harness requires the pinned Pi ${PINNED_PI_VERSION} HTTP dispatcher hook; install the Harness package's pinned dependencies.`);
|
|
20
|
+
}
|
|
21
|
+
dispatcher.configureHttpDispatcher();
|
|
22
|
+
return pi;
|
|
23
|
+
})().catch((error) => {
|
|
24
|
+
loading = undefined;
|
|
25
|
+
throw error;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return loading;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export const loadPi = createPiLoader(() => import('@earendil-works/pi-coding-agent'), async (packageDir) => await import(pathToFileURL(join(packageDir, HTTP_DISPATCHER_CHUNK)).href));
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { Harness } from "../harness.js";
|
|
2
|
+
import type { CallerContext } from "../core/caller.js";
|
|
3
|
+
import type { Launch } from "../prompt/compile.js";
|
|
4
|
+
import { type VariantChoice } from "../variant/materialise.js";
|
|
5
|
+
import * as attachments from "./attachments.js";
|
|
6
|
+
import type { Loading } from "./plugins.js";
|
|
7
|
+
import type { Inventory, Plugin } from "./types.js";
|
|
8
|
+
export interface PluginScope {
|
|
9
|
+
/** The working folder to list for. Without one, nothing a folder brings is listed. */
|
|
10
|
+
cwd?: string | null;
|
|
11
|
+
/** The account whose Pi folder is searched. Defaults to the default account. */
|
|
12
|
+
accountId?: string | null;
|
|
13
|
+
/** Whose list it is. With either, each state is what that agent or project gets. */
|
|
14
|
+
agentId?: string | null;
|
|
15
|
+
projectId?: string | null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* What Pi would load for this account and folder. Before the first account exists, the folder
|
|
19
|
+
* every account shares stands in: packages and shared files are the same for all of them.
|
|
20
|
+
* `null` only when the account that was named cannot be found.
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadingFor(harness: Harness, scope: PluginScope): Promise<Loading | null>;
|
|
23
|
+
export declare function list(harness: Harness, scope?: PluginScope): Promise<Plugin[]>;
|
|
24
|
+
export interface InventoryParams extends PluginScope {
|
|
25
|
+
context?: CallerContext;
|
|
26
|
+
launch?: Launch;
|
|
27
|
+
tools?: string[];
|
|
28
|
+
connections?: boolean;
|
|
29
|
+
/** The variant the caller runs, so what it adds is listed too. */
|
|
30
|
+
variant?: VariantChoice | null;
|
|
31
|
+
}
|
|
32
|
+
export declare function inventoryFor(harness: Harness, params: InventoryParams): Promise<Inventory>;
|
|
33
|
+
/**
|
|
34
|
+
* Trusts code a person was shown, if it is still that code: a working folder's own, or an
|
|
35
|
+
* installed package's. The hash names which; a folder is needed only for the working folder's.
|
|
36
|
+
*/
|
|
37
|
+
export declare function trust(harness: Harness, scope: PluginScope & {
|
|
38
|
+
hash: string;
|
|
39
|
+
}): Promise<Plugin[]>;
|
|
40
|
+
export declare function untrust(harness: Harness, scope: PluginScope & {
|
|
41
|
+
hash: string;
|
|
42
|
+
}): Promise<Plugin[]>;
|
|
43
|
+
export interface AttachParams extends PluginScope {
|
|
44
|
+
/** A plugin's id, or one contribution's. */
|
|
45
|
+
id: string;
|
|
46
|
+
/** Who the switch is for. Neither id means everywhere. */
|
|
47
|
+
scope?: attachments.AttachScope | null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Switches a plugin, or one thing it brings, on or off: everywhere, for one agent, or for one
|
|
51
|
+
* project. A required part refuses and says why. Nothing here grants a permission: a tool that
|
|
52
|
+
* is switched on still passes the gate.
|
|
53
|
+
*/
|
|
54
|
+
export declare function attach(harness: Harness, params: AttachParams, on: boolean): Promise<Plugin[]>;
|
|
55
|
+
/** Saves the numbers a person set on a plugin. Each must be one of the plugin's settings and inside its range. */
|
|
56
|
+
export declare function configure(harness: Harness, params: PluginScope & {
|
|
57
|
+
pluginId: string;
|
|
58
|
+
settings: Record<string, unknown>;
|
|
59
|
+
}): Promise<Plugin[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Makes sure the packages that loaded before trust was asked per package were taken over, before
|
|
62
|
+
* something new is written that must not be taken over with them.
|
|
63
|
+
*/
|
|
64
|
+
export declare function ensureAdopted(harness: Harness): Promise<void>;
|
|
65
|
+
/** Forgets what was switched for an agent that no longer exists. */
|
|
66
|
+
export declare function forgetAgent(harness: Harness, agentId: string): void;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// The plugin calls a host makes: the list, what reaches one caller, switching something on or
|
|
2
|
+
// off for a scope, and the trust decision.
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { ensureSharedDir, sharedDir } from "../accounts/env.js";
|
|
5
|
+
import { invalid, notFound } from "../core/errors.js";
|
|
6
|
+
import { findProject } from "../core/projects.js";
|
|
7
|
+
import { materialise } from "../variant/materialise.js";
|
|
8
|
+
import * as attachments from "./attachments.js";
|
|
9
|
+
import { catalogue } from "./catalogue.js";
|
|
10
|
+
import { inventory } from "./inventory.js";
|
|
11
|
+
const callerOf = (scope) => ({ agentId: scope.agentId ?? null, projectId: scope.projectId ?? null });
|
|
12
|
+
/**
|
|
13
|
+
* What Pi would load for this account and folder. Before the first account exists, the folder
|
|
14
|
+
* every account shares stands in: packages and shared files are the same for all of them.
|
|
15
|
+
* `null` only when the account that was named cannot be found.
|
|
16
|
+
*/
|
|
17
|
+
export async function loadingFor(harness, scope) {
|
|
18
|
+
let agentDir;
|
|
19
|
+
try {
|
|
20
|
+
agentDir = harness.accounts.context(harness.accounts.resolve(scope.accountId ?? null, null)).configDir;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
if (scope.accountId)
|
|
24
|
+
return null;
|
|
25
|
+
agentDir = ensureSharedDir(harness.accounts.dir);
|
|
26
|
+
}
|
|
27
|
+
// Listing never installs anything. Without a working folder the state folder stands in, and
|
|
28
|
+
// what it "brings" is dropped by the catalogue.
|
|
29
|
+
return harness.plugins.loading({ cwd: scope.cwd || harness.stateDir, agentDir, caller: callerOf(scope) });
|
|
30
|
+
}
|
|
31
|
+
export async function list(harness, scope = {}) {
|
|
32
|
+
return catalogue({
|
|
33
|
+
root: harness.env.root,
|
|
34
|
+
descriptors: harness.descriptors,
|
|
35
|
+
application: harness.applicationPlugins,
|
|
36
|
+
connections: harness.apps.connections.list(),
|
|
37
|
+
loading: await loadingFor(harness, scope),
|
|
38
|
+
cwd: scope.cwd || null,
|
|
39
|
+
sharedDir: sharedDir(harness.accounts.dir),
|
|
40
|
+
packagesDir: join(harness.env.root, 'plugins'),
|
|
41
|
+
registered: harness.plugins.registered(),
|
|
42
|
+
hooks: harness.hooks.status(),
|
|
43
|
+
attachments: attachments.load(harness.env.root),
|
|
44
|
+
caller: callerOf(scope)
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export async function inventoryFor(harness, params) {
|
|
48
|
+
return inventory({
|
|
49
|
+
env: harness.env,
|
|
50
|
+
context: params.context ?? {},
|
|
51
|
+
launch: params.launch ?? {},
|
|
52
|
+
tools: Array.isArray(params.tools) ? params.tools : [],
|
|
53
|
+
connections: params.connections !== false,
|
|
54
|
+
// What is switched off for the caller is not in what reaches it.
|
|
55
|
+
plugins: await list(harness, { ...params, agentId: params.agentId ?? params.context?.agentId ?? null, projectId: params.projectId ?? params.context?.projectId ?? null }),
|
|
56
|
+
descriptors: harness.descriptors,
|
|
57
|
+
saved: harness.apps.connections.list(),
|
|
58
|
+
variant: params.variant ? materialise(harness.env.root, params.variant, { trust: harness.trust }) : null
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Trusts code a person was shown, if it is still that code: a working folder's own, or an
|
|
63
|
+
* installed package's. The hash names which; a folder is needed only for the working folder's.
|
|
64
|
+
*/
|
|
65
|
+
export async function trust(harness, scope) {
|
|
66
|
+
const loading = await loadingFor(harness, scope);
|
|
67
|
+
const project = scope.cwd && loading?.projectCode?.hash === scope.hash ? { code: loading.projectCode, folder: scope.cwd } : null;
|
|
68
|
+
const packaged = Object.entries(loading?.packageCode ?? {}).find(([, code]) => code.hash === scope.hash);
|
|
69
|
+
const match = project ?? (packaged ? { code: packaged[1], folder: packaged[0] } : null);
|
|
70
|
+
if (!match)
|
|
71
|
+
throw invalid('This code changed since it was shown. Review it again before trusting it.');
|
|
72
|
+
harness.plugins.trust.grant({ hash: match.code.hash, files: match.code.files }, match.folder);
|
|
73
|
+
return list(harness, scope);
|
|
74
|
+
}
|
|
75
|
+
export async function untrust(harness, scope) {
|
|
76
|
+
harness.plugins.trust.revoke(scope.hash);
|
|
77
|
+
return list(harness, scope);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Switches a plugin, or one thing it brings, on or off: everywhere, for one agent, or for one
|
|
81
|
+
* project. A required part refuses and says why. Nothing here grants a permission: a tool that
|
|
82
|
+
* is switched on still passes the gate.
|
|
83
|
+
*/
|
|
84
|
+
export async function attach(harness, params, on) {
|
|
85
|
+
const { root } = harness.env;
|
|
86
|
+
const scope = { agentId: params.scope?.agentId || null, projectId: params.scope?.projectId || null };
|
|
87
|
+
if (scope.projectId)
|
|
88
|
+
findProject(root, scope.projectId);
|
|
89
|
+
const plugins = await list(harness, params);
|
|
90
|
+
const plugin = plugins.find((candidate) => candidate.id === params.id || candidate.contributions.some((entry) => entry.id === params.id));
|
|
91
|
+
if (!plugin)
|
|
92
|
+
throw notFound('Plugin');
|
|
93
|
+
const contribution = plugin.id === params.id ? null : plugin.contributions.find((entry) => entry.id === params.id);
|
|
94
|
+
if (plugin.required && contribution?.kind !== 'connection')
|
|
95
|
+
throw invalid(`${plugin.title} cannot be switched off. ${plugin.required}`);
|
|
96
|
+
if (plugin.source === 'application')
|
|
97
|
+
throw invalid(`${plugin.title} is switched by the application that provides it.`);
|
|
98
|
+
if (!(contribution ?? plugin).attachment)
|
|
99
|
+
throw invalid(contribution ? `${contribution.name} cannot be switched on its own.` : `${plugin.title} is switched one item at a time.`);
|
|
100
|
+
if (contribution?.kind === 'connection') {
|
|
101
|
+
harness.apps.attach(contribution.id.slice(`${plugin.id}/connection/`.length), scope, on);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// A choice is stored under the contribution's id and then its plugin's.
|
|
105
|
+
const ids = contribution ? [contribution.id, plugin.id] : [plugin.id];
|
|
106
|
+
// What it is until a person says otherwise: a part that ships switched off is off, and
|
|
107
|
+
// anything found on disk is on.
|
|
108
|
+
const shipped = harness.descriptors.find((descriptor) => descriptor.id === plugin.id)?.switchable;
|
|
109
|
+
const fallback = shipped ? shipped.on : true;
|
|
110
|
+
const choices = attachments.load(root);
|
|
111
|
+
attachments.set(choices, ids, scope, on, fallback);
|
|
112
|
+
attachments.save(root, choices);
|
|
113
|
+
}
|
|
114
|
+
harness.bus.emit({ type: 'plugins.changed' });
|
|
115
|
+
return list(harness, params);
|
|
116
|
+
}
|
|
117
|
+
/** Saves the numbers a person set on a plugin. Each must be one of the plugin's settings and inside its range. */
|
|
118
|
+
export async function configure(harness, params) {
|
|
119
|
+
const descriptor = harness.descriptors.find((candidate) => candidate.id === params.pluginId);
|
|
120
|
+
if (!descriptor?.settings?.length)
|
|
121
|
+
throw invalid('This plugin has no settings.');
|
|
122
|
+
const choices = attachments.load(harness.env.root);
|
|
123
|
+
const saved = { ...choices.settings[descriptor.id] };
|
|
124
|
+
for (const [key, value] of Object.entries(params.settings ?? {})) {
|
|
125
|
+
const setting = descriptor.settings.find((candidate) => candidate.key === key);
|
|
126
|
+
if (!setting)
|
|
127
|
+
throw invalid(`${descriptor.title} has no setting called "${key}".`);
|
|
128
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < setting.min || value > setting.max)
|
|
129
|
+
throw invalid(`${setting.label} must be a number from ${setting.min} to ${setting.max}.`);
|
|
130
|
+
saved[key] = Math.floor(value);
|
|
131
|
+
}
|
|
132
|
+
choices.settings[descriptor.id] = saved;
|
|
133
|
+
attachments.save(harness.env.root, choices);
|
|
134
|
+
harness.bus.emit({ type: 'plugins.changed' });
|
|
135
|
+
return list(harness, params);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Makes sure the packages that loaded before trust was asked per package were taken over, before
|
|
139
|
+
* something new is written that must not be taken over with them.
|
|
140
|
+
*/
|
|
141
|
+
export async function ensureAdopted(harness) {
|
|
142
|
+
if (harness.plugins.trust.adopted)
|
|
143
|
+
return;
|
|
144
|
+
await loadingFor(harness, {});
|
|
145
|
+
if (!harness.plugins.trust.adopted)
|
|
146
|
+
harness.plugins.trust.adopt([]);
|
|
147
|
+
}
|
|
148
|
+
/** Forgets what was switched for an agent that no longer exists. */
|
|
149
|
+
export function forgetAgent(harness, agentId) {
|
|
150
|
+
const choices = attachments.load(harness.env.root);
|
|
151
|
+
if (!choices.agents[agentId])
|
|
152
|
+
return;
|
|
153
|
+
attachments.forget(choices, { agentId });
|
|
154
|
+
attachments.save(harness.env.root, choices);
|
|
155
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Who a choice applies to. Neither id means everywhere. */
|
|
2
|
+
export interface AttachScope {
|
|
3
|
+
agentId?: string | null;
|
|
4
|
+
projectId?: string | null;
|
|
5
|
+
}
|
|
6
|
+
interface Entries {
|
|
7
|
+
on: string[];
|
|
8
|
+
off: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface Attachments {
|
|
11
|
+
version: 1;
|
|
12
|
+
global: Entries;
|
|
13
|
+
agents: Record<string, Entries>;
|
|
14
|
+
projects: Record<string, Entries>;
|
|
15
|
+
/** Values a plugin reads, such as a limit. Keyed by plugin id. */
|
|
16
|
+
settings: Record<string, Record<string, unknown>>;
|
|
17
|
+
}
|
|
18
|
+
/** Where one id is switched on and off, as data for a screen. */
|
|
19
|
+
export interface Attachment {
|
|
20
|
+
/** On everywhere, unless a narrower scope says otherwise. */
|
|
21
|
+
global: boolean;
|
|
22
|
+
on: {
|
|
23
|
+
agentIds: string[];
|
|
24
|
+
projectIds: string[];
|
|
25
|
+
};
|
|
26
|
+
off: {
|
|
27
|
+
agentIds: string[];
|
|
28
|
+
projectIds: string[];
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export declare function load(root: string): Attachments;
|
|
32
|
+
export declare function save(root: string, attachments: Attachments): void;
|
|
33
|
+
/** What the stored choices say for a caller, or `null` when none applies. `ids` is the thing, then what it belongs to. */
|
|
34
|
+
export declare function decided(attachments: Attachments, ids: readonly string[], caller?: AttachScope): boolean | null;
|
|
35
|
+
export declare function attached(attachments: Attachments, ids: readonly string[], caller: AttachScope, fallback: boolean): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Switches one thing on or off for a scope. A choice that only repeats what the wider scopes
|
|
38
|
+
* already say is not kept, so the thing follows them again when they change.
|
|
39
|
+
*/
|
|
40
|
+
export declare function set(attachments: Attachments, ids: readonly string[], scope: AttachScope, on: boolean, fallback: boolean): void;
|
|
41
|
+
export declare function describe(attachments: Attachments, id: string, fallback: boolean): Attachment;
|
|
42
|
+
/** Forgets an agent's or a project's own choices, when it is deleted. */
|
|
43
|
+
export declare function forget(attachments: Attachments, scope: AttachScope): void;
|
|
44
|
+
/** Removes one capability's choices without disturbing the other items in each scope. */
|
|
45
|
+
export declare function forgetId(attachments: Attachments, id: string): void;
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// What is switched on, and for whom. One file in the data root holds every choice a person made
|
|
2
|
+
// about a plugin or one of its contributions; one rule reads it: the narrowest scope that says
|
|
3
|
+
// something wins, an agent before a project before everywhere. With no entry, the thing keeps
|
|
4
|
+
// its own default (what loads today stays on; a person's registry item is off until switched on).
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { readJsonOr, writeJson } from "../core/fs.js";
|
|
7
|
+
const path = (root) => join(root, 'config/plugin-attachments.json');
|
|
8
|
+
const legacyPath = (root) => join(root, 'config/registry-enabled.json');
|
|
9
|
+
const strings = (value) => (Array.isArray(value) ? value.filter((id) => typeof id === 'string') : []);
|
|
10
|
+
const entries = (value) => {
|
|
11
|
+
const record = (value && typeof value === 'object' ? value : {});
|
|
12
|
+
return { on: strings(record.on), off: strings(record.off) };
|
|
13
|
+
};
|
|
14
|
+
const scoped = (value) => Object.fromEntries(Object.entries((value && typeof value === 'object' && !Array.isArray(value) ? value : {})).map(([id, item]) => [id, entries(item)]));
|
|
15
|
+
/**
|
|
16
|
+
* The registry's earlier file: enabled ids keyed by project id, `global` (once `personal`) for
|
|
17
|
+
* everyone, and `builtinOff` for built-in items a person switched off. It is read until the
|
|
18
|
+
* first change is saved here, and never written again.
|
|
19
|
+
*/
|
|
20
|
+
function fromLegacy(root) {
|
|
21
|
+
const legacy = readJsonOr(legacyPath(root), {});
|
|
22
|
+
const map = (legacy && typeof legacy === 'object' && !Array.isArray(legacy) ? legacy : {});
|
|
23
|
+
const projects = {};
|
|
24
|
+
for (const [key, ids] of Object.entries(map)) {
|
|
25
|
+
if (key === 'global' || key === 'personal' || key === 'builtinOff')
|
|
26
|
+
continue;
|
|
27
|
+
projects[key] = { on: strings(ids), off: [] };
|
|
28
|
+
}
|
|
29
|
+
return { version: 1, global: { on: [...new Set([...strings(map.global), ...strings(map.personal)])], off: strings(map.builtinOff) }, agents: {}, projects, settings: {} };
|
|
30
|
+
}
|
|
31
|
+
export function load(root) {
|
|
32
|
+
const stored = readJsonOr(path(root), null);
|
|
33
|
+
if (!stored || typeof stored !== 'object' || stored.version !== 1)
|
|
34
|
+
return fromLegacy(root);
|
|
35
|
+
const settings = (stored.settings && typeof stored.settings === 'object' && !Array.isArray(stored.settings) ? stored.settings : {});
|
|
36
|
+
return { version: 1, global: entries(stored.global), agents: scoped(stored.agents), projects: scoped(stored.projects), settings };
|
|
37
|
+
}
|
|
38
|
+
export function save(root, attachments) {
|
|
39
|
+
const kept = (map) => Object.fromEntries(Object.entries(map).filter(([, item]) => item.on.length || item.off.length));
|
|
40
|
+
writeJson(path(root), { ...attachments, agents: kept(attachments.agents), projects: kept(attachments.projects) });
|
|
41
|
+
}
|
|
42
|
+
const said = (item, ids) => {
|
|
43
|
+
if (!item)
|
|
44
|
+
return null;
|
|
45
|
+
// The first id is the thing itself; the rest are what it belongs to.
|
|
46
|
+
for (const id of ids) {
|
|
47
|
+
if (item.off.includes(id))
|
|
48
|
+
return false;
|
|
49
|
+
if (item.on.includes(id))
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
};
|
|
54
|
+
/** What the stored choices say for a caller, or `null` when none applies. `ids` is the thing, then what it belongs to. */
|
|
55
|
+
export function decided(attachments, ids, caller = {}) {
|
|
56
|
+
return (caller.agentId ? said(attachments.agents[caller.agentId], ids) : null) ?? (caller.projectId ? said(attachments.projects[caller.projectId], ids) : null) ?? said(attachments.global, ids);
|
|
57
|
+
}
|
|
58
|
+
export function attached(attachments, ids, caller, fallback) {
|
|
59
|
+
return decided(attachments, ids, caller) ?? fallback;
|
|
60
|
+
}
|
|
61
|
+
function entriesAt(attachments, scope) {
|
|
62
|
+
if (scope.agentId)
|
|
63
|
+
return (attachments.agents[scope.agentId] ??= { on: [], off: [] });
|
|
64
|
+
if (scope.projectId)
|
|
65
|
+
return (attachments.projects[scope.projectId] ??= { on: [], off: [] });
|
|
66
|
+
return attachments.global;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Switches one thing on or off for a scope. A choice that only repeats what the wider scopes
|
|
70
|
+
* already say is not kept, so the thing follows them again when they change.
|
|
71
|
+
*/
|
|
72
|
+
export function set(attachments, ids, scope, on, fallback) {
|
|
73
|
+
const [id] = ids;
|
|
74
|
+
const target = entriesAt(attachments, scope.agentId ? { agentId: scope.agentId } : scope);
|
|
75
|
+
target.on = target.on.filter((item) => item !== id);
|
|
76
|
+
target.off = target.off.filter((item) => item !== id);
|
|
77
|
+
// An agent works in different projects, so a project's choice about this thing cannot stand in for the agent's.
|
|
78
|
+
const projectSays = !!scope.agentId && Object.values(attachments.projects).some((item) => said(item, ids) !== null);
|
|
79
|
+
const inherited = decided(attachments, ids, scope.agentId ? { agentId: scope.agentId } : scope) ?? fallback;
|
|
80
|
+
if (on !== inherited || projectSays)
|
|
81
|
+
(on ? target.on : target.off).push(id);
|
|
82
|
+
}
|
|
83
|
+
export function describe(attachments, id, fallback) {
|
|
84
|
+
const where = (map, list) => Object.entries(map).filter(([, item]) => item[list].includes(id)).map(([key]) => key);
|
|
85
|
+
return {
|
|
86
|
+
global: said(attachments.global, [id]) ?? fallback,
|
|
87
|
+
on: { agentIds: where(attachments.agents, 'on'), projectIds: where(attachments.projects, 'on') },
|
|
88
|
+
off: { agentIds: where(attachments.agents, 'off'), projectIds: where(attachments.projects, 'off') }
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/** Forgets an agent's or a project's own choices, when it is deleted. */
|
|
92
|
+
export function forget(attachments, scope) {
|
|
93
|
+
if (scope.agentId)
|
|
94
|
+
delete attachments.agents[scope.agentId];
|
|
95
|
+
if (scope.projectId)
|
|
96
|
+
delete attachments.projects[scope.projectId];
|
|
97
|
+
}
|
|
98
|
+
/** Removes one capability's choices without disturbing the other items in each scope. */
|
|
99
|
+
export function forgetId(attachments, id) {
|
|
100
|
+
const forgetFrom = (item) => {
|
|
101
|
+
item.on = item.on.filter((entry) => entry !== id);
|
|
102
|
+
item.off = item.off.filter((entry) => entry !== id);
|
|
103
|
+
};
|
|
104
|
+
forgetFrom(attachments.global);
|
|
105
|
+
for (const item of Object.values(attachments.agents))
|
|
106
|
+
forgetFrom(item);
|
|
107
|
+
for (const item of Object.values(attachments.projects))
|
|
108
|
+
forgetFrom(item);
|
|
109
|
+
attachments.agents = Object.fromEntries(Object.entries(attachments.agents).filter(([, item]) => item.on.length || item.off.length));
|
|
110
|
+
attachments.projects = Object.fromEntries(Object.entries(attachments.projects).filter(([, item]) => item.on.length || item.off.length));
|
|
111
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PluginDescriptor } from "./types.js";
|
|
2
|
+
/** Pi itself. Its command's built-in extensions are added to it as they are found. */
|
|
3
|
+
export declare const PI_PLUGIN: PluginDescriptor;
|
|
4
|
+
/** The variant: the eight components that shape what an agent is told and can do. */
|
|
5
|
+
export declare const VARIANT_PLUGIN: PluginDescriptor;
|
|
6
|
+
export declare const BUILTIN_PLUGIN_REGISTRY: import("./builtinRegistry.js").BuiltinPluginRegistry;
|
|
7
|
+
export declare const HARNESS_PLUGINS: readonly PluginDescriptor[];
|