@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,330 @@
|
|
|
1
|
+
// The evidence folder an improver reads. Evidence is served as files and the prompt is a short
|
|
2
|
+
// pointer, so nothing is truncated to fit a prompt:
|
|
3
|
+
//
|
|
4
|
+
// context/task.md the task as the agent received it
|
|
5
|
+
// context/source/ the material it was done from
|
|
6
|
+
// context/rollouts/<label>.md full trajectories
|
|
7
|
+
// context/deliverables/<label>/ what each rollout produced
|
|
8
|
+
// context/harness/<rel> the harness being edited
|
|
9
|
+
// context/library/INDEX.md earlier tasks in this area and their full harnesses
|
|
10
|
+
// context/pool/<label>/ candidate harnesses, their diffs and rollouts
|
|
11
|
+
// context/decisions/<label>.md earlier edit and composition notes
|
|
12
|
+
//
|
|
13
|
+
// Ported from Harness² (Apache-2.0, Google LLC; `harness2/core/context.py`).
|
|
14
|
+
import { copyFileSync, cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
15
|
+
import { dirname, extname, join, relative, sep } from 'node:path';
|
|
16
|
+
import { PI_SURFACE } from "../variant/surface.js";
|
|
17
|
+
import { readVariant } from "../variant/variant.js";
|
|
18
|
+
/** Strings that only a grader's own output contains. A tripwire, not the defence itself. */
|
|
19
|
+
export const GRADER_VERDICT_MARKERS = [
|
|
20
|
+
'deterministic_eval_summary',
|
|
21
|
+
'deterministic_eval_result',
|
|
22
|
+
'judge_scope_and_deterministic_status',
|
|
23
|
+
'Judge findings on the rendered result',
|
|
24
|
+
'"passed_count"',
|
|
25
|
+
'"pass_rate"',
|
|
26
|
+
'"test_pass_rate"',
|
|
27
|
+
'review_verdict',
|
|
28
|
+
'"reviewVerdict"'
|
|
29
|
+
];
|
|
30
|
+
const SCANNED = new Set(['.md', '.txt', '.json', '.csv', '.tsv', '.yaml', '.yml', '.html', '.htm', '.log', '.py', '.js', '.mjs', '.ts', '.sh', '.xml', '.ini', '.toml', '.patch', '.diff', '']);
|
|
31
|
+
/** Minimum per-observation truncation; lower values fabricate defects. */
|
|
32
|
+
export const MIN_OBS_TRUNC = 10_000;
|
|
33
|
+
function files(dir) {
|
|
34
|
+
const out = [];
|
|
35
|
+
let names;
|
|
36
|
+
try {
|
|
37
|
+
names = readdirSync(dir);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
for (const name of names.sort()) {
|
|
43
|
+
const path = join(dir, name);
|
|
44
|
+
let isDir = false;
|
|
45
|
+
try {
|
|
46
|
+
isDir = statSync(path).isDirectory();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (isDir)
|
|
52
|
+
out.push(...files(path));
|
|
53
|
+
else
|
|
54
|
+
out.push(path);
|
|
55
|
+
}
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
function rel(root, path) {
|
|
59
|
+
return relative(root, path).split(sep).join('/');
|
|
60
|
+
}
|
|
61
|
+
function globToRegExp(glob) {
|
|
62
|
+
const pattern = glob.replace(/\\/g, '/').replace(/^\.\//, '');
|
|
63
|
+
let out = '';
|
|
64
|
+
for (const ch of pattern) {
|
|
65
|
+
if (ch === '*')
|
|
66
|
+
out += '[^]*';
|
|
67
|
+
else if (ch === '?')
|
|
68
|
+
out += '.';
|
|
69
|
+
else
|
|
70
|
+
out += ch.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
71
|
+
}
|
|
72
|
+
return new RegExp(`^(?:[^]*/)?${out}$`);
|
|
73
|
+
}
|
|
74
|
+
/** Refuses a folder holding a path the task marks as an answer key. */
|
|
75
|
+
export function assertNoLeakPaths(root, globs = []) {
|
|
76
|
+
if (!globs.length || !existsSync(root))
|
|
77
|
+
return;
|
|
78
|
+
const rx = globs.map(globToRegExp);
|
|
79
|
+
const hits = files(root).map((path) => rel(root, path)).filter((path) => rx.some((r) => r.test(path)));
|
|
80
|
+
if (hits.length)
|
|
81
|
+
throw new Error(`answer-key path(s) would enter model context: ${hits.sort().slice(0, 8).join(', ')}`);
|
|
82
|
+
}
|
|
83
|
+
/** Refuses a folder containing a grader's output, by file name and by content. */
|
|
84
|
+
export function assertNoGraderVerdicts(root, markers = GRADER_VERDICT_MARKERS) {
|
|
85
|
+
if (!existsSync(root))
|
|
86
|
+
return;
|
|
87
|
+
for (const path of files(root)) {
|
|
88
|
+
const name = rel(root, path);
|
|
89
|
+
for (const marker of markers) {
|
|
90
|
+
if (name.includes(marker))
|
|
91
|
+
throw new Error(`grader verdict would enter model context: '${name}' matched marker '${marker}' in its NAME. Find the read path that produced it.`);
|
|
92
|
+
}
|
|
93
|
+
if (!SCANNED.has(extname(path).toLowerCase()))
|
|
94
|
+
continue;
|
|
95
|
+
let body;
|
|
96
|
+
try {
|
|
97
|
+
body = readFileSync(path, 'utf8');
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
for (const marker of markers) {
|
|
103
|
+
const at = body.indexOf(marker);
|
|
104
|
+
if (at >= 0)
|
|
105
|
+
throw new Error(`grader verdict would enter model context: '${name}' contains marker '${marker}' at offset ${at}. Find the read path that produced it.`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** The same tripwire on a variant, before it is rolled or stored. */
|
|
110
|
+
export function assertVariantHasNoGraderVerdicts(variant, markers = GRADER_VERDICT_MARKERS) {
|
|
111
|
+
for (const [name, body] of Object.entries(variant).sort()) {
|
|
112
|
+
for (const marker of markers) {
|
|
113
|
+
if (name.includes(marker))
|
|
114
|
+
throw new Error(`harness file '${name}' has grader-verdict marker '${marker}' in its NAME; rename it`);
|
|
115
|
+
if (SCANNED.has(extname(name).toLowerCase()) && body.includes(marker))
|
|
116
|
+
throw new Error(`harness file '${name}' contains grader-verdict marker '${marker}'; remove that string -- files carrying it cannot be served as evidence to later tasks`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function copyFolder(src, dst) {
|
|
121
|
+
let n = 0;
|
|
122
|
+
for (const path of files(src)) {
|
|
123
|
+
if (path.includes(`${sep}__pycache__${sep}`) || path.endsWith('.pyc'))
|
|
124
|
+
continue;
|
|
125
|
+
const target = join(dst, relative(src, path));
|
|
126
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
127
|
+
copyFileSync(path, target);
|
|
128
|
+
n++;
|
|
129
|
+
}
|
|
130
|
+
return n;
|
|
131
|
+
}
|
|
132
|
+
/** Copies the task's source material under `root/source`, minus answer-key paths. */
|
|
133
|
+
export function copySource(task, root) {
|
|
134
|
+
const src = task.sourceDir;
|
|
135
|
+
if (!src || !existsSync(src))
|
|
136
|
+
return 0;
|
|
137
|
+
const leak = (task.leakGlobs ?? []).map(globToRegExp);
|
|
138
|
+
let n = 0;
|
|
139
|
+
for (const path of files(src)) {
|
|
140
|
+
const name = rel(src, path);
|
|
141
|
+
if (name.split('/').includes('__pycache__') || leak.some((r) => r.test(name)))
|
|
142
|
+
continue;
|
|
143
|
+
const target = join(root, 'source', name);
|
|
144
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
145
|
+
copyFileSync(path, target);
|
|
146
|
+
n++;
|
|
147
|
+
}
|
|
148
|
+
if (n)
|
|
149
|
+
assertNoLeakPaths(join(root, 'source'), task.leakGlobs);
|
|
150
|
+
return n;
|
|
151
|
+
}
|
|
152
|
+
/** A line-based unified diff, enough for a reader to see what changed. */
|
|
153
|
+
export function unifiedDiff(before, after, fromLabel, toLabel) {
|
|
154
|
+
const out = [];
|
|
155
|
+
for (const name of [...new Set([...Object.keys(before), ...Object.keys(after)])].sort()) {
|
|
156
|
+
const a = before[name] ?? '';
|
|
157
|
+
const b = after[name] ?? '';
|
|
158
|
+
if (a === b)
|
|
159
|
+
continue;
|
|
160
|
+
out.push(`--- ${fromLabel}/${name}`, `+++ ${toLabel}/${name}`);
|
|
161
|
+
const x = a ? a.split('\n') : [];
|
|
162
|
+
const y = b ? b.split('\n') : [];
|
|
163
|
+
// A longest-common-subsequence walk; variants are small enough for the quadratic table.
|
|
164
|
+
const dp = Array.from({ length: x.length + 1 }, () => new Array(y.length + 1).fill(0));
|
|
165
|
+
for (let i = x.length - 1; i >= 0; i--)
|
|
166
|
+
for (let j = y.length - 1; j >= 0; j--)
|
|
167
|
+
dp[i][j] = x[i] === y[j] ? dp[i + 1][j + 1] + 1 : Math.max(dp[i + 1][j], dp[i][j + 1]);
|
|
168
|
+
let i = 0;
|
|
169
|
+
let j = 0;
|
|
170
|
+
while (i < x.length || j < y.length) {
|
|
171
|
+
if (i < x.length && j < y.length && x[i] === y[j]) {
|
|
172
|
+
out.push(` ${x[i]}`);
|
|
173
|
+
i++;
|
|
174
|
+
j++;
|
|
175
|
+
}
|
|
176
|
+
else if (j < y.length && (i >= x.length || dp[i][j + 1] >= dp[i + 1][j])) {
|
|
177
|
+
out.push(`+${y[j]}`);
|
|
178
|
+
j++;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
out.push(`-${x[i]}`);
|
|
182
|
+
i++;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return out.length ? `${out.join('\n')}\n` : '';
|
|
187
|
+
}
|
|
188
|
+
/** The evidence-layout listing that goes in a mission; it mentions only what exists. */
|
|
189
|
+
export function layout(evidence) {
|
|
190
|
+
const lines = ['context/task.md the task as the agent received it'];
|
|
191
|
+
if (evidence.sourceFiles)
|
|
192
|
+
lines.push('context/source/ task source materials');
|
|
193
|
+
if (evidence.decisions)
|
|
194
|
+
lines.push('context/decisions/ earlier edits and composition decisions');
|
|
195
|
+
if (evidence.rollouts.length) {
|
|
196
|
+
const names = evidence.rollouts.slice(0, 6).map((label) => `${label}.md`).join(', ');
|
|
197
|
+
const more = evidence.rollouts.length > 6 ? ` (+${evidence.rollouts.length - 6} more)` : '';
|
|
198
|
+
lines.push(`context/rollouts/ FULL trajectories: ${names}${more}`);
|
|
199
|
+
}
|
|
200
|
+
if (evidence.deliverables.length)
|
|
201
|
+
lines.push('context/deliverables/<label>/ the files each rollout produced, one per artifact (browse INDEX.md for the set)');
|
|
202
|
+
if (evidence.harnessFiles)
|
|
203
|
+
lines.push(`context/harness/ the harness you are editing (${evidence.harnessFiles} files)`);
|
|
204
|
+
if (evidence.pool.length)
|
|
205
|
+
lines.push(`context/pool/ ${evidence.pool.length} candidates, each with its harness and its rollout`);
|
|
206
|
+
if (evidence.library)
|
|
207
|
+
lines.push('context/library/ earlier tasks in this area -- browse INDEX.md first, then open what looks relevant');
|
|
208
|
+
return lines.join('\n');
|
|
209
|
+
}
|
|
210
|
+
function writeRollout(dest, rollout, executor, obsTrunc) {
|
|
211
|
+
let failure = '';
|
|
212
|
+
mkdirSync(join(dest, 'rollouts'), { recursive: true });
|
|
213
|
+
try {
|
|
214
|
+
writeFileSync(join(dest, 'rollouts', `${rollout.label}.md`), executor.trajectory(rollout, { obsTrunc }));
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
218
|
+
writeFileSync(join(dest, 'rollouts', `${rollout.label}.md`), `(trajectory unavailable: ${message})`);
|
|
219
|
+
failure = `${rollout.label}: ${message}`;
|
|
220
|
+
}
|
|
221
|
+
const dir = join(dest, 'deliverables', rollout.label);
|
|
222
|
+
mkdirSync(dir, { recursive: true });
|
|
223
|
+
let produced = {};
|
|
224
|
+
try {
|
|
225
|
+
produced = executor.deliverableFiles(rollout);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
produced = { 'unavailable.md': `(deliverable unavailable: ${error instanceof Error ? error.message : String(error)})` };
|
|
229
|
+
}
|
|
230
|
+
const names = Object.keys(produced).sort();
|
|
231
|
+
for (const name of names) {
|
|
232
|
+
const target = join(dir, name);
|
|
233
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
234
|
+
writeFileSync(target, produced[name]);
|
|
235
|
+
}
|
|
236
|
+
writeFileSync(join(dir, 'INDEX.md'), names.length ? `# ${rollout.label} produced ${names.length} file(s)\n\n${names.map((name) => `- \`${name}\``).join('\n')}\n` : `# ${rollout.label} produced nothing\n`);
|
|
237
|
+
return failure;
|
|
238
|
+
}
|
|
239
|
+
function renderDeliverable(executor, rollout) {
|
|
240
|
+
const produced = executor.deliverableFiles(rollout);
|
|
241
|
+
const names = Object.keys(produced).sort();
|
|
242
|
+
if (!names.length)
|
|
243
|
+
return '';
|
|
244
|
+
if (names.length === 1)
|
|
245
|
+
return produced[names[0]];
|
|
246
|
+
return names.map((name) => `## ${name}\n\n${produced[name]}`).join('\n\n');
|
|
247
|
+
}
|
|
248
|
+
export { renderDeliverable };
|
|
249
|
+
/**
|
|
250
|
+
* Writes the evidence folder and returns what landed, so a mission describes only that. A
|
|
251
|
+
* trajectory is written in full; `obsTrunc` applies per observation.
|
|
252
|
+
*/
|
|
253
|
+
export function build(dest, input) {
|
|
254
|
+
const { task, executor } = input;
|
|
255
|
+
rmSync(dest, { recursive: true, force: true });
|
|
256
|
+
mkdirSync(dest, { recursive: true });
|
|
257
|
+
const obsTrunc = Math.max(input.obsTrunc ?? 50_000, MIN_OBS_TRUNC);
|
|
258
|
+
writeFileSync(join(dest, 'task.md'), task.prompt);
|
|
259
|
+
const sourceFiles = copySource(task, dest);
|
|
260
|
+
for (const [label, notes] of Object.entries(input.decisions ?? {})) {
|
|
261
|
+
mkdirSync(join(dest, 'decisions'), { recursive: true });
|
|
262
|
+
writeFileSync(join(dest, 'decisions', `${label}.md`), notes || 'No decision notes returned.');
|
|
263
|
+
}
|
|
264
|
+
const rollouts = [];
|
|
265
|
+
const deliverables = [];
|
|
266
|
+
const failed = [];
|
|
267
|
+
for (const rollout of input.rollouts ?? []) {
|
|
268
|
+
const failure = writeRollout(dest, rollout, executor, obsTrunc);
|
|
269
|
+
if (failure)
|
|
270
|
+
failed.push(failure);
|
|
271
|
+
else
|
|
272
|
+
rollouts.push(rollout.label);
|
|
273
|
+
deliverables.push(rollout.label);
|
|
274
|
+
}
|
|
275
|
+
let harnessFiles = 0;
|
|
276
|
+
if (input.variantDir && existsSync(input.variantDir)) {
|
|
277
|
+
assertNoLeakPaths(input.variantDir, task.leakGlobs);
|
|
278
|
+
harnessFiles = copyFolder(input.variantDir, join(dest, 'harness'));
|
|
279
|
+
}
|
|
280
|
+
const pool = [];
|
|
281
|
+
for (const entry of input.pool ?? []) {
|
|
282
|
+
const dir = join(dest, 'pool', entry.label);
|
|
283
|
+
mkdirSync(dir, { recursive: true });
|
|
284
|
+
if (entry.variantDir && existsSync(entry.variantDir)) {
|
|
285
|
+
assertNoLeakPaths(entry.variantDir, task.leakGlobs);
|
|
286
|
+
copyFolder(entry.variantDir, join(dir, 'harness'));
|
|
287
|
+
const reference = readVariant(PI_SURFACE, join(dest, 'harness'));
|
|
288
|
+
const candidate = readVariant(PI_SURFACE, entry.variantDir);
|
|
289
|
+
writeFileSync(join(dir, 'harness.diff'), unifiedDiff(reference, candidate, 'current', entry.label));
|
|
290
|
+
}
|
|
291
|
+
if (entry.rollout) {
|
|
292
|
+
try {
|
|
293
|
+
writeFileSync(join(dir, 'rollout.md'), executor.trajectory(entry.rollout, { obsTrunc }));
|
|
294
|
+
writeFileSync(join(dir, 'produced.md'), renderDeliverable(executor, entry.rollout) || '(nothing produced)');
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
writeFileSync(join(dir, 'rollout.md'), `(unavailable: ${error instanceof Error ? error.message : String(error)})`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
pool.push(entry.label);
|
|
301
|
+
}
|
|
302
|
+
let library = false;
|
|
303
|
+
if (input.libraryDir && existsSync(input.libraryDir) && readdirSync(input.libraryDir).length) {
|
|
304
|
+
assertNoLeakPaths(input.libraryDir, task.leakGlobs);
|
|
305
|
+
cpSync(input.libraryDir, join(dest, 'library'), { recursive: true });
|
|
306
|
+
library = true;
|
|
307
|
+
}
|
|
308
|
+
assertNoLeakPaths(dest, task.leakGlobs);
|
|
309
|
+
assertNoGraderVerdicts(dest);
|
|
310
|
+
if ((input.rollouts ?? []).length && !rollouts.length) {
|
|
311
|
+
throw new Error(`no trajectory could be rendered for ANY rollout -- the improver would be adapting on nothing: ${failed.slice(0, 4).join('; ')}`);
|
|
312
|
+
}
|
|
313
|
+
return { root: dest, taskId: task.id, rollouts, deliverables, harnessFiles, library, pool, failed, sourceFiles, decisions: Object.keys(input.decisions ?? {}).length };
|
|
314
|
+
}
|
|
315
|
+
/** The short pointer to the evidence on disk: the job, where the evidence is, and the instruction to open it. */
|
|
316
|
+
export function mission(evidence, job) {
|
|
317
|
+
return [
|
|
318
|
+
job.trim(),
|
|
319
|
+
'',
|
|
320
|
+
'# YOUR EVIDENCE',
|
|
321
|
+
'',
|
|
322
|
+
'It is on disk, in `context/`. Read it -- do not answer from this message alone.',
|
|
323
|
+
'',
|
|
324
|
+
layout(evidence),
|
|
325
|
+
'',
|
|
326
|
+
'Every trajectory EVENT is present: the trajectory was not clipped to fit this mission. An individual observation may contain an explicit renderer-truncation marker; that marker is ours, not behavior by the solver. Do not diagnose it as a solver failure.',
|
|
327
|
+
'',
|
|
328
|
+
'Read `task.md` and the current harness first. Inventory every available rollout or candidate and inspect each at least once before deciding. For a candidate, compare what changed from its editing baseline, what behavior changed in its rollout, what improved, and what regressed or remained unresolved. Then deep-read the evidence relevant to any edit. Cite the specific trajectory moment behind every change; one you cannot trace to a moment is speculation.'
|
|
329
|
+
].join('\n');
|
|
330
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { CallerContext } from "../core/caller.js";
|
|
2
|
+
import type { Launch } from "../prompt/compile.js";
|
|
3
|
+
import type { Effort } from "../sessions/runner.js";
|
|
4
|
+
import type { GitSnapshotWorkspace, RefineTask } from "./types.js";
|
|
5
|
+
/** How one execution of a task runs: who it works as and with what. */
|
|
6
|
+
export interface RolloutSession {
|
|
7
|
+
caller: CallerContext;
|
|
8
|
+
tools: {
|
|
9
|
+
allow: string[];
|
|
10
|
+
gated?: string[];
|
|
11
|
+
};
|
|
12
|
+
launch?: Launch;
|
|
13
|
+
model?: string | null;
|
|
14
|
+
effort?: Effort | null;
|
|
15
|
+
accountId?: string | null;
|
|
16
|
+
poolId?: string | null;
|
|
17
|
+
connections?: boolean | {
|
|
18
|
+
readOnly?: boolean;
|
|
19
|
+
};
|
|
20
|
+
providers?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface RolloutWorkspace {
|
|
23
|
+
/** The folder the execution works in. It must not be a folder a person is working in. */
|
|
24
|
+
cwd: string;
|
|
25
|
+
/** Called after what the execution produced has been read. */
|
|
26
|
+
cleanup?: () => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export interface RefineHost {
|
|
29
|
+
/** A fresh, isolated folder for one execution. */
|
|
30
|
+
prepareWorkspace(input: {
|
|
31
|
+
refineId: string;
|
|
32
|
+
label: string;
|
|
33
|
+
task: RefineTask;
|
|
34
|
+
}): Promise<RolloutWorkspace>;
|
|
35
|
+
/** The session settings an execution runs with. */
|
|
36
|
+
session(input: {
|
|
37
|
+
refineId: string;
|
|
38
|
+
label: string;
|
|
39
|
+
task: RefineTask;
|
|
40
|
+
}): Promise<RolloutSession>;
|
|
41
|
+
/** What one execution produced, filename → readable text. Defaults to its reply and the files it changed. */
|
|
42
|
+
deliverable?(input: {
|
|
43
|
+
cwd: string;
|
|
44
|
+
reply: string;
|
|
45
|
+
task: RefineTask;
|
|
46
|
+
}): Promise<Record<string, string>>;
|
|
47
|
+
}
|
|
48
|
+
/** The reply, and every text file the execution added or changed relative to the task's source. */
|
|
49
|
+
export declare function defaultDeliverable(cwd: string, reply: string, sourceDir: string | null | undefined): Record<string, string>;
|
|
50
|
+
/** For a host that supplies nothing: a temporary copy of the task's source, the caller as the scope, and Pi's file and shell tools. */
|
|
51
|
+
/**
|
|
52
|
+
* A throwaway checkout of a turn snapshot. It is a `--shared` clone, so the person's repository
|
|
53
|
+
* gains no worktree, ref or file: the clone only reads its object store. HEAD is the commit the
|
|
54
|
+
* turn started on and the working tree holds the snapshot, so tracked edits show as changes and new
|
|
55
|
+
* files as untracked, as they were. Ignored files named by `.worktreeinclude` are copied from the
|
|
56
|
+
* repository as it is now.
|
|
57
|
+
*/
|
|
58
|
+
export declare function prepareSnapshotWorkspace(snapshot: GitSnapshotWorkspace): Promise<RolloutWorkspace>;
|
|
59
|
+
export declare const DEFAULT_REFINE_HOST: RefineHost;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// The application's part in refinement (the seventh extension point). The harness runs the
|
|
2
|
+
// method; the application says where an execution may work, as whom, with which tools, and what
|
|
3
|
+
// it produced. Nothing here names an application concept.
|
|
4
|
+
import { cpSync, existsSync, mkdtempSync, readdirSync, readFileSync, rmSync, statSync } from 'node:fs';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { join, relative, sep } from 'node:path';
|
|
7
|
+
import { copyFiles, includedFiles } from "../worktrees/copy.js";
|
|
8
|
+
import { git } from "../worktrees/git.js";
|
|
9
|
+
const TEXT_LIMIT = 200_000;
|
|
10
|
+
const FILES_LIMIT = 40;
|
|
11
|
+
function files(dir, into = [], base = dir) {
|
|
12
|
+
let names;
|
|
13
|
+
try {
|
|
14
|
+
names = readdirSync(dir);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return into;
|
|
18
|
+
}
|
|
19
|
+
for (const name of names.sort()) {
|
|
20
|
+
if (name === '.git' || name === 'node_modules' || name.startsWith('.'))
|
|
21
|
+
continue;
|
|
22
|
+
const path = join(dir, name);
|
|
23
|
+
try {
|
|
24
|
+
if (statSync(path).isDirectory())
|
|
25
|
+
files(path, into, base);
|
|
26
|
+
else
|
|
27
|
+
into.push(relative(base, path).split(sep).join('/'));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Skip what cannot be read.
|
|
31
|
+
}
|
|
32
|
+
if (into.length > 2_000)
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
return into;
|
|
36
|
+
}
|
|
37
|
+
function readable(path) {
|
|
38
|
+
try {
|
|
39
|
+
const buffer = readFileSync(path);
|
|
40
|
+
if (buffer.length > TEXT_LIMIT || buffer.includes(0))
|
|
41
|
+
return null;
|
|
42
|
+
return buffer.toString('utf8');
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** The reply, and every text file the execution added or changed relative to the task's source. */
|
|
49
|
+
export function defaultDeliverable(cwd, reply, sourceDir) {
|
|
50
|
+
const out = {};
|
|
51
|
+
if (reply.trim())
|
|
52
|
+
out['reply.md'] = reply;
|
|
53
|
+
let count = 0;
|
|
54
|
+
for (const rel of files(cwd)) {
|
|
55
|
+
const text = readable(join(cwd, rel));
|
|
56
|
+
if (text === null)
|
|
57
|
+
continue;
|
|
58
|
+
const before = sourceDir && existsSync(join(sourceDir, rel)) ? readable(join(sourceDir, rel)) : null;
|
|
59
|
+
if (before === text)
|
|
60
|
+
continue;
|
|
61
|
+
out[`files/${rel}`] = text;
|
|
62
|
+
if (++count >= FILES_LIMIT)
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/** For a host that supplies nothing: a temporary copy of the task's source, the caller as the scope, and Pi's file and shell tools. */
|
|
68
|
+
/**
|
|
69
|
+
* A throwaway checkout of a turn snapshot. It is a `--shared` clone, so the person's repository
|
|
70
|
+
* gains no worktree, ref or file: the clone only reads its object store. HEAD is the commit the
|
|
71
|
+
* turn started on and the working tree holds the snapshot, so tracked edits show as changes and new
|
|
72
|
+
* files as untracked, as they were. Ignored files named by `.worktreeinclude` are copied from the
|
|
73
|
+
* repository as it is now.
|
|
74
|
+
*/
|
|
75
|
+
export async function prepareSnapshotWorkspace(snapshot) {
|
|
76
|
+
const cwd = mkdtempSync(join(tmpdir(), 'harness-replay-'));
|
|
77
|
+
const cleanup = async () => rmSync(cwd, { recursive: true, force: true });
|
|
78
|
+
try {
|
|
79
|
+
await git(snapshot.repo, ['clone', '--quiet', '--shared', '--no-checkout', snapshot.repo, cwd]);
|
|
80
|
+
await git(cwd, ['checkout', '--quiet', '--detach', snapshot.commit]);
|
|
81
|
+
const parent = await git(cwd, ['rev-parse', '--verify', '--quiet', `${snapshot.commit}^`], { allowFail: true });
|
|
82
|
+
// The tree stays the snapshot; HEAD and the index go back to the commit the turn started on.
|
|
83
|
+
if (parent.code === 0)
|
|
84
|
+
await git(cwd, ['reset', '--quiet', parent.stdout.trim()]);
|
|
85
|
+
copyFiles(snapshot.repo, cwd, await includedFiles(snapshot.repo).catch(() => []));
|
|
86
|
+
return { cwd, cleanup };
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
await cleanup();
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export const DEFAULT_REFINE_HOST = {
|
|
94
|
+
async prepareWorkspace({ task }) {
|
|
95
|
+
if (task.workspace?.kind === 'git-snapshot')
|
|
96
|
+
return prepareSnapshotWorkspace(task.workspace);
|
|
97
|
+
const cwd = mkdtempSync(join(tmpdir(), 'harness-rollout-'));
|
|
98
|
+
if (task.sourceDir && existsSync(task.sourceDir))
|
|
99
|
+
cpSync(task.sourceDir, cwd, { recursive: true });
|
|
100
|
+
return { cwd, cleanup: async () => rmSync(cwd, { recursive: true, force: true }) };
|
|
101
|
+
},
|
|
102
|
+
async session({ task }) {
|
|
103
|
+
return { caller: { agentId: task.scope, actor: 'Code' }, tools: { allow: ['read', 'grep', 'find', 'ls', 'edit', 'write', 'bash'] } };
|
|
104
|
+
}
|
|
105
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** R = 4k: k shared base + 2k candidates + k finals. */
|
|
2
|
+
export declare const expectedRollouts: (k: number) => number;
|
|
3
|
+
/** P = 3k: k INV + k DOM + k compositions. */
|
|
4
|
+
export declare const expectedSessions: (k: number) => number;
|
|
5
|
+
export declare class BudgetError extends Error {
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
export interface LedgerEntry {
|
|
9
|
+
kind: 'rollout' | 'session';
|
|
10
|
+
label: string;
|
|
11
|
+
usd: number;
|
|
12
|
+
cached: boolean;
|
|
13
|
+
attempts: number;
|
|
14
|
+
}
|
|
15
|
+
export interface LedgerRecord {
|
|
16
|
+
mode: string;
|
|
17
|
+
taskId: string;
|
|
18
|
+
k: number;
|
|
19
|
+
R: number;
|
|
20
|
+
expectedR: number;
|
|
21
|
+
P: number;
|
|
22
|
+
expectedP: number;
|
|
23
|
+
sessionAttempts: number;
|
|
24
|
+
usd: number;
|
|
25
|
+
rolloutUsd: number;
|
|
26
|
+
sessionUsd: number;
|
|
27
|
+
rollouts: string[];
|
|
28
|
+
sessions: string[];
|
|
29
|
+
}
|
|
30
|
+
export declare class Ledger {
|
|
31
|
+
readonly mode: string;
|
|
32
|
+
readonly taskId: string;
|
|
33
|
+
readonly k: number;
|
|
34
|
+
readonly entries: LedgerEntry[];
|
|
35
|
+
constructor(mode: string, taskId: string, k: number);
|
|
36
|
+
rollout(label: string, usd?: number, cached?: boolean): void;
|
|
37
|
+
session(label: string, usd?: number, options?: {
|
|
38
|
+
cached?: boolean;
|
|
39
|
+
attempts?: number;
|
|
40
|
+
}): void;
|
|
41
|
+
labels(kind: LedgerEntry['kind']): string[];
|
|
42
|
+
get R(): number;
|
|
43
|
+
get P(): number;
|
|
44
|
+
usd(kind?: LedgerEntry['kind']): number;
|
|
45
|
+
/** Throws unless the entries show exactly R=4k and P=3k with no repeated label. */
|
|
46
|
+
assertIdentity(): void;
|
|
47
|
+
toRecord(): LedgerRecord;
|
|
48
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Budget accounting: R = 4k rollouts and P = 3k improvement stages per mode. Base executions
|
|
2
|
+
// count toward each mode; retries are separate attempt counts; selection and reflection are
|
|
3
|
+
// recorded outside this ledger.
|
|
4
|
+
//
|
|
5
|
+
// Ported from Harness² (Apache-2.0, Google LLC; `harness2/core/ledger.py`).
|
|
6
|
+
/** R = 4k: k shared base + 2k candidates + k finals. */
|
|
7
|
+
export const expectedRollouts = (k) => 4 * k;
|
|
8
|
+
/** P = 3k: k INV + k DOM + k compositions. */
|
|
9
|
+
export const expectedSessions = (k) => 3 * k;
|
|
10
|
+
export class BudgetError extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'BudgetError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const round = (value) => Math.round(value * 1e6) / 1e6;
|
|
17
|
+
export class Ledger {
|
|
18
|
+
mode;
|
|
19
|
+
taskId;
|
|
20
|
+
k;
|
|
21
|
+
entries = [];
|
|
22
|
+
constructor(mode, taskId, k) {
|
|
23
|
+
this.mode = mode;
|
|
24
|
+
this.taskId = taskId;
|
|
25
|
+
this.k = k;
|
|
26
|
+
}
|
|
27
|
+
rollout(label, usd = 0, cached = false) {
|
|
28
|
+
this.entries.push({ kind: 'rollout', label, usd, cached, attempts: 1 });
|
|
29
|
+
}
|
|
30
|
+
session(label, usd = 0, options = {}) {
|
|
31
|
+
this.entries.push({ kind: 'session', label, usd, cached: options.cached ?? false, attempts: options.attempts ?? 1 });
|
|
32
|
+
}
|
|
33
|
+
labels(kind) {
|
|
34
|
+
return this.entries.filter((entry) => entry.kind === kind).map((entry) => entry.label);
|
|
35
|
+
}
|
|
36
|
+
get R() {
|
|
37
|
+
return this.labels('rollout').length;
|
|
38
|
+
}
|
|
39
|
+
get P() {
|
|
40
|
+
return this.labels('session').length;
|
|
41
|
+
}
|
|
42
|
+
usd(kind) {
|
|
43
|
+
return round(this.entries.filter((entry) => !kind || entry.kind === kind).reduce((sum, entry) => sum + entry.usd, 0));
|
|
44
|
+
}
|
|
45
|
+
/** Throws unless the entries show exactly R=4k and P=3k with no repeated label. */
|
|
46
|
+
assertIdentity() {
|
|
47
|
+
const wantR = expectedRollouts(this.k);
|
|
48
|
+
const wantP = expectedSessions(this.k);
|
|
49
|
+
const rl = this.labels('rollout');
|
|
50
|
+
const sl = this.labels('session');
|
|
51
|
+
const dupes = [...new Set([...rl.filter((label, i) => rl.indexOf(label) !== i), ...sl.filter((label, i) => sl.indexOf(label) !== i)])].sort();
|
|
52
|
+
if (!dupes.length && this.R === wantR && this.P === wantP)
|
|
53
|
+
return;
|
|
54
|
+
const detail = [`${this.mode}-${this.k} ${this.taskId}: R=${this.R} (want ${wantR}), P=${this.P} (want ${wantP})`, ` rollouts: ${rl.join(', ') || '(none)'}`, ` sessions: ${sl.join(', ') || '(none)'}`];
|
|
55
|
+
if (dupes.length)
|
|
56
|
+
detail.push(` DUPLICATE labels: ${dupes.join(', ')} -- two stages wrote the same run id and one overwrote the other`);
|
|
57
|
+
throw new BudgetError(detail.join('\n'));
|
|
58
|
+
}
|
|
59
|
+
toRecord() {
|
|
60
|
+
return {
|
|
61
|
+
mode: this.mode,
|
|
62
|
+
taskId: this.taskId,
|
|
63
|
+
k: this.k,
|
|
64
|
+
R: this.R,
|
|
65
|
+
expectedR: expectedRollouts(this.k),
|
|
66
|
+
P: this.P,
|
|
67
|
+
expectedP: expectedSessions(this.k),
|
|
68
|
+
sessionAttempts: this.entries.filter((entry) => entry.kind === 'session').reduce((sum, entry) => sum + entry.attempts, 0),
|
|
69
|
+
usd: this.usd(),
|
|
70
|
+
rolloutUsd: this.usd('rollout'),
|
|
71
|
+
sessionUsd: this.usd('session'),
|
|
72
|
+
rollouts: this.labels('rollout'),
|
|
73
|
+
sessions: this.labels('session')
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type SurfaceSpec, type Variant } from "../variant/surface.js";
|
|
2
|
+
export interface Experience {
|
|
3
|
+
cue: string;
|
|
4
|
+
lesson: string;
|
|
5
|
+
evidence: string;
|
|
6
|
+
confidence?: string;
|
|
7
|
+
/** The edit-by-edit record the lesson rests on. */
|
|
8
|
+
edits?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function hasExperience(experience: Partial<Experience> | null | undefined): experience is Experience;
|
|
11
|
+
/** One folder name for a task or area: separators collapse, nothing escapes. */
|
|
12
|
+
export declare function slug(text: string): string;
|
|
13
|
+
export interface LibraryEntry {
|
|
14
|
+
task: string;
|
|
15
|
+
label: string;
|
|
16
|
+
runId: string;
|
|
17
|
+
cue: string | null;
|
|
18
|
+
inventory: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function libraryRoot(root: string): string;
|
|
21
|
+
export declare class Library {
|
|
22
|
+
readonly root: string;
|
|
23
|
+
readonly scope: string;
|
|
24
|
+
readonly area: string;
|
|
25
|
+
readonly surface: SurfaceSpec;
|
|
26
|
+
constructor(root: string, scope: string, area?: string, surface?: SurfaceSpec);
|
|
27
|
+
get dir(): string;
|
|
28
|
+
get index(): string;
|
|
29
|
+
entryDir(task: string): string;
|
|
30
|
+
/** The folder handed to an improver, or null when nothing has been learned here yet. */
|
|
31
|
+
contextDir(): string | null;
|
|
32
|
+
entries(): string[];
|
|
33
|
+
variantOf(task: string): Variant;
|
|
34
|
+
experienceText(task: string): string | null;
|
|
35
|
+
list(): LibraryEntry[];
|
|
36
|
+
/** Drops these tasks' entries and rebuilds the index; unknown tasks are ignored. */
|
|
37
|
+
forget(tasks: readonly string[]): void;
|
|
38
|
+
/**
|
|
39
|
+
* Stores one adopted harness and why it was adopted, then rebuilds the index. Nothing is
|
|
40
|
+
* stored without a supported lesson. Returns the entry folder, or null.
|
|
41
|
+
*/
|
|
42
|
+
add(task: string, variant: Variant, input: {
|
|
43
|
+
why?: string;
|
|
44
|
+
label?: string;
|
|
45
|
+
runId?: string;
|
|
46
|
+
experience?: Partial<Experience> | null;
|
|
47
|
+
}): string | null;
|
|
48
|
+
rebuildIndex(): string;
|
|
49
|
+
}
|
|
50
|
+
/** A one-line census of the components in a variant. */
|
|
51
|
+
export declare function inventory(surface: SurfaceSpec, variant: Variant): string;
|
|
52
|
+
/** Every scope that has a library. */
|
|
53
|
+
export declare function libraryScopes(root: string): string[];
|
|
54
|
+
/** Every area a scope has entries in. */
|
|
55
|
+
export declare function libraryAreas(root: string, scope: string): string[];
|