@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,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: EXP-0003
|
|
3
|
+
title: Layered Xingular terminal and Harness runtime performance audit
|
|
4
|
+
status: completed
|
|
5
|
+
created: 2026-10-25
|
|
6
|
+
updated: 2026-10-25
|
|
7
|
+
related: [EXP-0002]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# EXP-0003 — Layered performance audit
|
|
11
|
+
|
|
12
|
+
## Question and falsifiable hypothesis
|
|
13
|
+
|
|
14
|
+
How much of the user-visible delay belongs to terminal input/rendering, fresh-process startup, and
|
|
15
|
+
Harness session orchestration? After the OpenTUI work in EXP-0002, the hypothesis is that steady
|
|
16
|
+
keystroke-to-screen latency is comparable to Pi and OpenCode, while the Harness layers show up more
|
|
17
|
+
strongly in cold startup and memory. A long transcript should not materially increase Harness input
|
|
18
|
+
latency.
|
|
19
|
+
|
|
20
|
+
The comparison can falsify this: if Harness p95 grows after history, stays above OpenCode during
|
|
21
|
+
streaming, or Harness session calls contribute large repeatable latency with the injected session,
|
|
22
|
+
those are separate regression candidates.
|
|
23
|
+
|
|
24
|
+
## Targets and controls
|
|
25
|
+
|
|
26
|
+
- **Xingular Harness:** built `node dist/cli.js`, with temporary `--state` and `--data` roots, an
|
|
27
|
+
isolated API-key account, and a loopback OpenAI-compatible model.
|
|
28
|
+
- **Pure Pi:** `@earendil-works/pi-coding-agent` 1.2.0 with an isolated `PI_CODING_AGENT_DIR`.
|
|
29
|
+
- **OpenCode:** v2.1.4 with `--standalone`, isolated XDG roots and a loopback-compatible provider.
|
|
30
|
+
- Each terminal target runs in its own PTY and temporary profile. A local deterministic SSE provider
|
|
31
|
+
supplies the same fixture response to all targets. No external provider, OAuth profile, or
|
|
32
|
+
credential is used.
|
|
33
|
+
- Main terminal runs use a 160×45 PTY, 35 ms key interval, two rounds of 30 typed characters and
|
|
34
|
+
five independent launches for idle, stream and burst. The first eight keys in each round are
|
|
35
|
+
excluded from latency scoring; each idle run therefore scores 44 keys and each stream/burst run
|
|
36
|
+
scores 22. Target order rotates between repeats.
|
|
37
|
+
- History uses three launches per target. Each history is an 80-turn local tool loop (about 240
|
|
38
|
+
transcript messages) before typing is measured. The question scenario is Harness-only and uses
|
|
39
|
+
plan mode. A separate 80×24 run checks a compact terminal once per target; it is sensitivity data,
|
|
40
|
+
not a repeated comparison.
|
|
41
|
+
- The runtime benchmark runs in a separate Node process with temporary state/data and a deterministic
|
|
42
|
+
injected session. It measures SDK import, Harness initialization, cold/warm `terminal.prepare`,
|
|
43
|
+
run-to-first-persisted-delta/completion, and one local tool-event path. It does not start Bun or a
|
|
44
|
+
real model.
|
|
45
|
+
|
|
46
|
+
## Metrics
|
|
47
|
+
|
|
48
|
+
- Input latency is the time between writing a key to the PTY and the first time its typed prefix is
|
|
49
|
+
visible on a `pyte` virtual screen (p50/p95/p99/max). Missed keys are reported separately. This
|
|
50
|
+
includes the PTY and `pyte` parser, not a terminal emulator's physical paint.
|
|
51
|
+
- Startup is measured from process launch to first output, first nonblank visible screen, and a
|
|
52
|
+
quiet screen (750 ms with no further output). Process-tree RSS is sampled at that initial stable
|
|
53
|
+
screen. CPU and RSS are process-tree measurements; typing CPU is measured over the typing window.
|
|
54
|
+
- Terminal comparison summaries take the median of each run's metric (including each run's p95); they
|
|
55
|
+
are not pooled per-key percentiles. Session-runtime summaries use the median of measured samples.
|
|
56
|
+
- No credentialed run is required. The profiler rejects `--real` unless it is exactly one Xingular
|
|
57
|
+
run; this audit does not invoke `--real`.
|
|
58
|
+
|
|
59
|
+
## Reproduction
|
|
60
|
+
|
|
61
|
+
Build the CLI and create an isolated Python environment for the PTY screen parser:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
npm run build
|
|
65
|
+
python3 -m venv /tmp/harness-perf-venv
|
|
66
|
+
/tmp/harness-perf-venv/bin/python -m pip install -r scripts/requirements-performance.txt
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Main repeated comparison:
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
/tmp/harness-perf-venv/bin/python scripts/profile-terminal-latency.py \
|
|
73
|
+
--targets xingular,pi,opencode --repeats 5 --scenarios idle,stream,burst \
|
|
74
|
+
--rounds 2 --length 30 --interval 0.035 --width 160 --height 45 \
|
|
75
|
+
--warm-idle-seconds 2 --idle-seconds 2 --stream-seconds 4 \
|
|
76
|
+
--output /tmp/harness-perf-wide
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
History and compact-terminal sensitivity runs:
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
/tmp/harness-perf-venv/bin/python scripts/profile-terminal-latency.py \
|
|
83
|
+
--targets xingular,pi,opencode --repeats 3 --scenarios history \
|
|
84
|
+
--rounds 2 --length 30 --interval 0.035 --width 160 --height 45 \
|
|
85
|
+
--warm-idle-seconds 1 --idle-seconds 1 --stream-seconds 2 \
|
|
86
|
+
--output /tmp/harness-perf-history
|
|
87
|
+
|
|
88
|
+
/tmp/harness-perf-venv/bin/python scripts/profile-terminal-latency.py \
|
|
89
|
+
--targets xingular,pi,opencode --repeats 1 --scenarios idle,stream,burst \
|
|
90
|
+
--rounds 2 --length 30 --interval 0.035 --width 80 --height 24 \
|
|
91
|
+
--warm-idle-seconds 2 --idle-seconds 1 --stream-seconds 4 \
|
|
92
|
+
--output /tmp/harness-perf-compact
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Harness-only question latency and deterministic runtime overhead:
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
/tmp/harness-perf-venv/bin/python scripts/profile-terminal-latency.py \
|
|
99
|
+
--targets xingular --repeats 1 --scenarios question --rounds 2 --length 30 \
|
|
100
|
+
--width 160 --height 45 --warm-idle-seconds 1 --idle-seconds 1 \
|
|
101
|
+
--stream-seconds 3 --output /tmp/harness-perf-question
|
|
102
|
+
|
|
103
|
+
npm run profile:session-runtime -- --iterations 5 --warmup 1 \
|
|
104
|
+
--output /tmp/harness-session-runtime.json
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
For terminal behavior verification, run `python scripts/verify-terminal.py` with the same Python
|
|
108
|
+
environment. `npm run profile:terminal-input` measures the local draft-control socket separately;
|
|
109
|
+
it is not a substitute for the PTY latency run.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# EXP-0003 — Results
|
|
2
|
+
|
|
3
|
+
- **Status:** audit completed; one terminal behavior verification check failed (details below).
|
|
4
|
+
- **Run date:** 2026-10-25.
|
|
5
|
+
- **Code:** base commit `6f72a07` with a dirty worktree (81 changed/untracked paths were present).
|
|
6
|
+
Product changes in that worktree predate this audit; this audit added benchmark tooling and report
|
|
7
|
+
artifacts only.
|
|
8
|
+
- **Machine/runtime:** macOS 27.0, arm64, 8 logical CPUs; Node v26.8.2; Bun 1.4.2; Harness
|
|
9
|
+
1.1.1; Pi 1.2.0; OpenCode v2.1.4; Python 3.12.12; pyte 0.8.2.
|
|
10
|
+
- **Credentials/network:** terminal comparisons used a loopback model in isolated temporary
|
|
11
|
+
profiles. The session-runtime benchmark used an injected deterministic session. No provider,
|
|
12
|
+
OAuth credential, or user profile was used; `--real` was not run.
|
|
13
|
+
|
|
14
|
+
Raw terminal and runtime JSON is in [`data/`](data/): `terminal-wide.json`,
|
|
15
|
+
`terminal-history.json`, `terminal-compact.json`, `terminal-question.json`,
|
|
16
|
+
`session-runtime.json`, and `session-runtime-replication.json`. The OpenCode executable field is
|
|
17
|
+
normalized to `opencode` to avoid publishing a machine-specific path; measurements are unchanged.
|
|
18
|
+
|
|
19
|
+
## Terminal comparison
|
|
20
|
+
|
|
21
|
+
Main repeated comparison: 160×45 PTY, five launches per target, 2 rounds of 30 characters at 35 ms
|
|
22
|
+
per key, 2 s warm-idle and 2 s idle measurement. The table shows the median of per-launch values;
|
|
23
|
+
latency is milliseconds p50/p95 and CPU is process-tree CPU during the typing window. Every target
|
|
24
|
+
had zero missed keys.
|
|
25
|
+
|
|
26
|
+
| Scenario | Target | p50 / p95 (ms) | CPU (%) |
|
|
27
|
+
|---|---|---:|---:|
|
|
28
|
+
| Idle typing | Xingular | 5.11 / 9.98 | 7.7 |
|
|
29
|
+
| | Pure Pi | 5.32 / 6.39 | 3.1 |
|
|
30
|
+
| | OpenCode | 7.17 / 10.41 | 26.5 |
|
|
31
|
+
| After ~240 transcript messages | Xingular | 5.09 / 10.05 | 8.9 |
|
|
32
|
+
| | Pure Pi | 5.44 / 10.34 | 4.3 |
|
|
33
|
+
| | OpenCode | 9.47 / 12.70 | 32.6 |
|
|
34
|
+
| Regular stream | Xingular | 9.13 / 19.91 | 14.2 |
|
|
35
|
+
| | Pure Pi | 3.18 / 22.26 | 10.5 |
|
|
36
|
+
| | OpenCode | 10.02 / 24.87 | 41.5 |
|
|
37
|
+
| Burst stream | Xingular | 5.01 / 10.73 | 12.3 |
|
|
38
|
+
| | Pure Pi | 4.72 / 6.31 | 5.5 |
|
|
39
|
+
| | OpenCode | 10.42 / 21.85 | 33.2 |
|
|
40
|
+
|
|
41
|
+
History setup took a median 7.5 s for Xingular, 6.5 s for Pi, and 9.8 s for OpenCode. Xingular's
|
|
42
|
+
idle p95 was 9.98 ms before history and 10.05 ms after it, so this run found no meaningful
|
|
43
|
+
history-related typing regression. The median streaming p95 was lower than both comparisons; burst
|
|
44
|
+
p95 was below OpenCode but above Pi. Xingular idle p95 was roughly on par with OpenCode and 1.56×
|
|
45
|
+
Pure Pi; burst p95 was 1.70× Pure Pi. Thus the prior EXP-0002 p95 criterion of “no worse than
|
|
46
|
+
OpenCode” held for these four scenarios, while “within 1.5× Pi” did not hold for idle or burst.
|
|
47
|
+
|
|
48
|
+
The five-run p95 ranges show why the medians should not be read as precise rankings: idle ranges
|
|
49
|
+
were 9.64–10.19 ms (Xingular), 6.04–9.92 ms (Pi), and 9.58–11.08 ms (OpenCode); stream ranges
|
|
50
|
+
were 18.32–20.25, 22.02–23.38, and 19.00–26.36 ms; burst ranges were 8.87–12.08, 5.81–33.23,
|
|
51
|
+
and 12.86–26.00 ms respectively. Each run scores 44 idle keys and 22 stream/burst keys; p95 values
|
|
52
|
+
are medians of per-run p95, not pooled per-key percentiles.
|
|
53
|
+
|
|
54
|
+
### Fresh launch and memory
|
|
55
|
+
|
|
56
|
+
`first visible` is the first nonblank PTY screen; `stable screen` is measured after 750 ms without
|
|
57
|
+
output. Process-tree RSS is sampled at that initial stable screen.
|
|
58
|
+
|
|
59
|
+
| Target | First visible (ms) | Stable screen (ms) | Process-tree RSS (MiB) |
|
|
60
|
+
|---|---:|---:|---:|
|
|
61
|
+
| Xingular | 2,814 | 3,768 | 392 |
|
|
62
|
+
| Pure Pi | 261 | 1,035 | 134 |
|
|
63
|
+
| OpenCode | 304 | 1,107 | 489 |
|
|
64
|
+
|
|
65
|
+
On this machine, Xingular's end-to-end first-visible time was about 10.8× Pi and 9.3× OpenCode;
|
|
66
|
+
its process-tree RSS was about 2.9× Pi and 0.8× OpenCode. This launch comparison includes the
|
|
67
|
+
Harness CLI and its terminal child, while Pi and OpenCode have different process architectures. It
|
|
68
|
+
measures the user-visible path, not the renderer alone. A separate 80×24 single-run sensitivity
|
|
69
|
+
check showed idle p95 of 4.66/5.08/8.11 ms and stream p95 of 10.95/5.72/18.61 ms for
|
|
70
|
+
Xingular/Pi/OpenCode respectively; it supports the same broad pattern but is not a repeated result.
|
|
71
|
+
|
|
72
|
+
The Harness-only plan-question scenario passed after the profiler was changed to enter plan mode:
|
|
73
|
+
44 keys, no misses, p50 5.03 ms, p95 9.53 ms (one run; not a cross-target comparison). The raw
|
|
74
|
+
record is `data/terminal-question.json`.
|
|
75
|
+
|
|
76
|
+
A separate 2 s post-warm-up idle-resource window in the wide run measured median process-tree CPU
|
|
77
|
+
of 2.0% for Xingular, 0.5% for Pi, and 1.5% for OpenCode. These short windows are coarse and should
|
|
78
|
+
not be treated as a stable ranking.
|
|
79
|
+
|
|
80
|
+
## Harness runtime overhead
|
|
81
|
+
|
|
82
|
+
Two invocations of the isolated runtime benchmark contributed ten measured samples per warm
|
|
83
|
+
operation (five iterations and one warmup per invocation). It imports the built SDK and uses a fake
|
|
84
|
+
session seam; these values exclude model/provider latency and real Pi startup.
|
|
85
|
+
|
|
86
|
+
| Operation | Median | Sample range |
|
|
87
|
+
|---|---:|---:|
|
|
88
|
+
| Warm `terminal.prepare` | 9.65 ms | 7.69–11.78 ms |
|
|
89
|
+
| `sessions.run` to first persisted delta | 25.65 ms | 21.78–29.44 ms |
|
|
90
|
+
| `sessions.run` to completion | 33.86 ms | 27.96–39.06 ms |
|
|
91
|
+
| Tool run to `tool.started` | 29.12 ms | 25.74–31.92 ms |
|
|
92
|
+
| Tool run to `tool.completed` | 29.50 ms | 26.12–47.31 ms |
|
|
93
|
+
| Tool run to completion | 38.96 ms | 37.07–58.24 ms |
|
|
94
|
+
|
|
95
|
+
Across the two process starts, SDK import was 246–347 ms and Harness initialization was 27.8–28.5
|
|
96
|
+
ms. Cold `terminal.prepare` varied substantially, from 261 to 1,158 ms; its description includes
|
|
97
|
+
first socket-listener setup. Treat the warm path as the repeatable figure and cold preparation as a
|
|
98
|
+
signal to instrument further, not as a stable estimate. Every run verified the persisted event
|
|
99
|
+
sequence; the temporary state/data roots were removed.
|
|
100
|
+
|
|
101
|
+
## CPU profile notes
|
|
102
|
+
|
|
103
|
+
Profiles were captured separately from the comparison runs and are not included in their latency
|
|
104
|
+
medians. A one-run Bun profile of Xingular during startup and streaming (16.19 s, 846 samples) had
|
|
105
|
+
highest self-time in terminal output writing (`writeBuffered` 14.0%, Node `_write` 9.3%), key
|
|
106
|
+
matching (`matchesKey` 5.6%), OpenTUI stdout draining (4.5%), and the terminal socket `send` (3.2%).
|
|
107
|
+
This identifies output/key/event plumbing worth inspecting, but does not isolate one application
|
|
108
|
+
function as the cause of input latency.
|
|
109
|
+
|
|
110
|
+
A separate one-run Node profile of the Harness process (6.98 s, 5,576 samples) was 69% idle in the
|
|
111
|
+
profiler, with `spawnSync` at 11.2% and `readdir` at 3.2%. This is consistent with a startup path
|
|
112
|
+
that includes process and I/O waits rather than being dominated by one CPU-heavy JavaScript loop;
|
|
113
|
+
it is not a phase-by-phase startup trace. Profiles are diagnostic single runs and profiling itself
|
|
114
|
+
adds overhead.
|
|
115
|
+
|
|
116
|
+
## Verification
|
|
117
|
+
|
|
118
|
+
- `npm run typecheck` — passed.
|
|
119
|
+
- `npm test` — passed: 150 test files, 1,140 tests passed, 3 skipped.
|
|
120
|
+
- `npm run build` — passed.
|
|
121
|
+
- `npm run prove` — passed all 15 standalone proof cases.
|
|
122
|
+
- `npm run profile:terminal-input` — passed; 120 local draft-control socket requests, p50 0.022 ms,
|
|
123
|
+
p95 0.053 ms. This measures the socket path, not key-to-screen rendering.
|
|
124
|
+
- `profile-terminal-latency.py --real --targets pi` — rejected before launch as intended; `--real`
|
|
125
|
+
is restricted to one Xingular run.
|
|
126
|
+
- `python scripts/verify-terminal.py` — **failed** during `/settings` at a narrow terminal width.
|
|
127
|
+
The verifier expected `Esc close` on the last row; the observed footer was truncated to
|
|
128
|
+
`Enter change · type to search · Tab/`. This is a terminal behavior verification failure, not a
|
|
129
|
+
performance measurement. No product UI code was changed as part of this audit.
|
|
130
|
+
|
|
131
|
+
## Conclusions and follow-up
|
|
132
|
+
|
|
133
|
+
- **Steady typing:** competitive with OpenCode at 160×45, especially for streaming p95; history
|
|
134
|
+
does not increase Xingular's measured p95. Xingular still trails Pi on idle and burst p95, and
|
|
135
|
+
has higher CPU than Pi while typing/streaming.
|
|
136
|
+
- **Fresh start:** the clearest gap. Xingular takes about 2.8 s to first visible output and uses
|
|
137
|
+
about 392 MiB at the initial screen. The runtime benchmark makes warm Harness preparation look
|
|
138
|
+
inexpensive, but cold preparation is variable. Break startup into Node CLI, Harness account and
|
|
139
|
+
context setup, terminal preparation, Bun launch, and first render before attributing or optimizing
|
|
140
|
+
the gap.
|
|
141
|
+
- **Next measurements:** add phase markers for fresh startup and process-by-process RSS; repeat on a
|
|
142
|
+
slower machine; investigate burst input alongside `matchesKey`/output writes; and triage the
|
|
143
|
+
narrow `/settings` footer verification failure separately.
|
|
144
|
+
|
|
145
|
+
## Limits
|
|
146
|
+
|
|
147
|
+
One arm64 machine and a dirty worktree; no clean-commit A/B or slower-device run. The loopback stream
|
|
148
|
+
is regular and excludes network/provider delay. PTY/pyte timing excludes physical terminal paint.
|
|
149
|
+
The compact-screen and question results are single runs. CPU profiles are single instrumented runs.
|
|
150
|
+
The runtime benchmark's session is injected and deterministic, so it measures Harness runtime and
|
|
151
|
+
persistence costs, not real model inference or the complete Pi AgentSession startup path.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Harness features
|
|
2
|
+
|
|
3
|
+
The Harness is a reusable Pi runtime: its fixed foundation runs a configurable agent, records each
|
|
4
|
+
run, and can use that evidence to propose improvements. These pages organize current capabilities
|
|
5
|
+
by area.
|
|
6
|
+
|
|
7
|
+
The feature guide is descriptive. The [architecture specification](../architecture/README.md) is
|
|
8
|
+
binding and defines the contracts and invariants.
|
|
9
|
+
|
|
10
|
+
| Area | Includes | Guide |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| Core runtime | Foundation, accounts, sessions and runs, prompt compilation, tool governance | [Cores](cores/README.md) |
|
|
13
|
+
| Harness² | Harness Variants (HVs), recursive refinement, evidence-backed experience | [Google Harness²](google-harness2/README.md) |
|
|
14
|
+
| Automations | Subagents, recovery, optional run reflections, plugin hooks | [Automations](automations/README.md) |
|
|
15
|
+
| Memory | Wiki notes, run recall, trajectory search and reads | [Memory](memory/README.md) |
|
|
16
|
+
| Integrations | Application extension points, plugins, connected apps and Hub | [Integrations](integrations/README.md) |
|
|
17
|
+
| Interfaces | Node embedding, standalone terminal and JSON-lines server | [Interfaces](interfaces/README.md) |
|
|
18
|
+
|
|
19
|
+
## Built-in plugin ownership
|
|
20
|
+
|
|
21
|
+
PROP-0020 groups Harness-managed feature plugins by responsibility. These labels are an architecture
|
|
22
|
+
taxonomy only; they are not runtime plugin categories or public metadata. Foundation-owned
|
|
23
|
+
infrastructure remains the security and lifecycle boundary around each feature.
|
|
24
|
+
|
|
25
|
+
| Category | Features |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Foundation | Accounts, sessions, run recording, prompt/variant validation, gate, plugin loading/trust/attachments, resource browser, server and terminal framework |
|
|
28
|
+
| World | Web tools, browser tools and page annotations; generic isolated browser engine stays in Foundation |
|
|
29
|
+
| Memory | Wiki, history and trajectory |
|
|
30
|
+
| Automation | Subagents, ask-user, checklist, lessons and refinement |
|
|
31
|
+
| Integrations | Connected apps/MCP and Hub |
|
|
32
|
+
| Operations | Doctor and worktrees |
|
|
33
|
+
|
|
34
|
+
See [06 Plugins and capabilities](../architecture/06-plugins-and-capabilities.md#built-in-ownership-taxonomy-prop-0020) for the binding ownership boundary.
|
|
35
|
+
|
|
36
|
+
## Planned: Agent Modes
|
|
37
|
+
|
|
38
|
+
An **Agent Mode** selects one overall work style at a time; plugins remain stackable strategies and
|
|
39
|
+
contributions. The first planned mode is **Router Agent Mode**: the user works through one continuous
|
|
40
|
+
chat and browser experience with a router agent that proactively plans, delegates across persistent
|
|
41
|
+
subagent threads, and receives their messages. This is a future direction, not an implemented
|
|
42
|
+
capability. See [FW-0001](../future-work.md#fw-0001-agent-modes-starting-with-router-agent-mode) for
|
|
43
|
+
the backlog entry and required architecture decisions.
|
|
44
|
+
|
|
45
|
+
**Harness Variant (HV)** is the short name used in these feature pages. The architecture
|
|
46
|
+
specification uses the canonical term *variant*.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Automations
|
|
2
|
+
|
|
3
|
+
The Harness includes bounded ways to coordinate or react to work. It supplies run-level mechanisms;
|
|
4
|
+
the embedding application decides when to dispatch application work and owns schedules and broader
|
|
5
|
+
orchestration.
|
|
6
|
+
|
|
7
|
+
## Subagents
|
|
8
|
+
|
|
9
|
+
An interactive run can spawn child runs and wait for their results. A child receives no wider
|
|
10
|
+
capabilities than its parent, and the parent joins outstanding children before it completes. Nesting
|
|
11
|
+
is bounded. The host can also spawn and wait for subagents through the Harness API.
|
|
12
|
+
|
|
13
|
+
## Recovery and continuation
|
|
14
|
+
|
|
15
|
+
The Harness records interrupted runs and exposes what was left unfinished. It never restarts model
|
|
16
|
+
work automatically. The application chooses whether and when to continue an interrupted run; a
|
|
17
|
+
continuation starts as a new run with the earlier account, variant version, and capability set pinned.
|
|
18
|
+
|
|
19
|
+
## Optional run reflections
|
|
20
|
+
|
|
21
|
+
The first-party `lessons` plugin is off by default. When enabled, a qualifying completed top-level
|
|
22
|
+
run may trigger a bounded reflection that keeps a general lesson in the Wiki. Reflection runs with
|
|
23
|
+
read-only file tools and cannot ask a person or act outside its allowed workspace.
|
|
24
|
+
|
|
25
|
+
## Plugin hooks
|
|
26
|
+
|
|
27
|
+
Trusted hooks can listen for supported events such as a saved Wiki page or an ended run. Hooks run
|
|
28
|
+
after the event, cannot block or change the originating write, and have a time limit. They run only
|
|
29
|
+
while their plugin is enabled and trusted.
|
|
30
|
+
|
|
31
|
+
## Refinement is human-adopted
|
|
32
|
+
|
|
33
|
+
Refinement is another multi-step workflow, described in [Google Harness²](../google-harness2/README.md).
|
|
34
|
+
Its probes and improvers run unattended, but refinement never adopts a candidate by itself.
|
|
35
|
+
|
|
36
|
+
## Further reading
|
|
37
|
+
|
|
38
|
+
- [02 Sessions and runs](../../architecture/02-sessions-and-runs.md) — subagents, interruption, and continuation.
|
|
39
|
+
- [05 Refinement](../../architecture/05-refinement.md) — isolated refinement executions.
|
|
40
|
+
- [06 Plugins and capabilities](../../architecture/06-plugins-and-capabilities.md) — hooks and plugin trust.
|
|
41
|
+
- [08 Memory and history](../../architecture/08-memory-and-history.md) — optional lessons behavior.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Core runtime
|
|
2
|
+
|
|
3
|
+
The core is the Harness's reusable, fixed foundation for running one agent turn well. It controls
|
|
4
|
+
the Pi session, compiles context, limits available tools, applies the call-by-call gate, and records
|
|
5
|
+
what happened. Application-specific behavior enters through the [integration points](../integrations/README.md),
|
|
6
|
+
not application-specific branches in the core.
|
|
7
|
+
|
|
8
|
+
## Capabilities
|
|
9
|
+
|
|
10
|
+
- **Isolated accounts** — Each session uses a pinned Pi account and its own account folder;
|
|
11
|
+
credentials are supplied through a secret store.
|
|
12
|
+
- **Sessions and runs** — A session is a native Pi conversation; each run pins its account, variant
|
|
13
|
+
version, and capability set. Validated events are saved before they are relayed.
|
|
14
|
+
- **Compiled context** — One compiler combines variant, Harness, and host sections, applies budgets,
|
|
15
|
+
and separates stable prompt text from changing context updates.
|
|
16
|
+
- **Tool governance** — A frozen capability set controls which tools are registered. Every tool call
|
|
17
|
+
passes through the gate, which applies host policy, standing approvals, and—when needed—a person's
|
|
18
|
+
decision.
|
|
19
|
+
- **Controlled resource loading** — The Harness chooses session resources and requires trust for
|
|
20
|
+
plugin code; plugins cannot bypass the final tool gate.
|
|
21
|
+
|
|
22
|
+
## Foundation and Harness Variant
|
|
23
|
+
|
|
24
|
+
The **foundation** is fixed: code and contracts such as session execution, the prompt compiler, run
|
|
25
|
+
recording, account isolation, and the tool gate change through releases. A **Harness Variant (HV)**
|
|
26
|
+
is the configurable behavior used by a scope. A run pins one validated HV version; it can shape the
|
|
27
|
+
agent's instructions and resources, but cannot change the foundation. See [Google Harness²](../google-harness2/README.md)
|
|
28
|
+
for its components and refinement process.
|
|
29
|
+
|
|
30
|
+
The Harness provides the single-run runtime. Higher-level orchestration—such as application agents,
|
|
31
|
+
tasks, scheduling, and UI—belongs to the embedding application.
|
|
32
|
+
|
|
33
|
+
## Further reading
|
|
34
|
+
|
|
35
|
+
- [00 Overview](../../architecture/00-overview.md) — foundation/variant split and module ownership.
|
|
36
|
+
- [02 Sessions and runs](../../architecture/02-sessions-and-runs.md) — execution lifecycle and run records.
|
|
37
|
+
- [04 Prompt](../../architecture/04-prompt.md) — compilation and delivery.
|
|
38
|
+
- [07 Tools and the gate](../../architecture/07-tools-and-gate.md) — tool registration, permissions, and approvals.
|
|
39
|
+
- [09 Accounts and connectors](../../architecture/09-accounts-and-connectors.md) — account isolation and secret handling.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Google Harness²
|
|
2
|
+
|
|
3
|
+
Harness² is the recursive-harnessing approach described in the [Harness² paper](https://arxiv.org/abs/2610.14224)
|
|
4
|
+
(Apache-2.0, Google LLC). The Harness applies the idea to improve agent behavior while keeping
|
|
5
|
+
model weights fixed: runs produce evidence, refinement proposes changes to a Harness Variant, and
|
|
6
|
+
a person decides whether to adopt them.
|
|
7
|
+
|
|
8
|
+
## Harness Variant (HV)
|
|
9
|
+
|
|
10
|
+
**HV** is the short name for **Harness Variant**. An HV is a validated, versioned set of eight
|
|
11
|
+
components for one scope. A run pins a version so its behavior does not change mid-run.
|
|
12
|
+
|
|
13
|
+
| Component | What it controls |
|
|
14
|
+
|---|---|
|
|
15
|
+
| c1 — System prompt | Agent instructions |
|
|
16
|
+
| c2 — Guardrails | Behavioral constraints |
|
|
17
|
+
| c3 — Memory | Always-on memory guidance |
|
|
18
|
+
| c4 — Tool guidance | Guidance for using available tools |
|
|
19
|
+
| c5 — Subagents | Named subagent instructions |
|
|
20
|
+
| c6 — Skills | On-demand skills and their scripts |
|
|
21
|
+
| c7 — Scripts | On-demand scripts |
|
|
22
|
+
| c8 — Plugins | Plugin extensions in the tool loop |
|
|
23
|
+
|
|
24
|
+
An HV changes agent guidance and selected resources, not the foundation. It cannot change the prompt
|
|
25
|
+
compiler, tool gate, run recorder, accounts, or trust rules. A candidate is not used until a person
|
|
26
|
+
adopts it as the scope's head version.
|
|
27
|
+
|
|
28
|
+
## The Propose–Probe–Compose loop
|
|
29
|
+
|
|
30
|
+
1. Run the current HV on a task in isolated workspaces and capture evidence.
|
|
31
|
+
2. Improver sessions propose edits to copies of the HV from two perspectives: **INV** (how the agent
|
|
32
|
+
works) and **DOM** (what a practitioner knows).
|
|
33
|
+
3. Probe candidates, then compose behavior from observed contrasts.
|
|
34
|
+
4. Select a final output blindly from anonymized candidates. Improvers and the selector never receive
|
|
35
|
+
scores, rubrics, or reviewer verdicts.
|
|
36
|
+
5. Return a candidate for a person to adopt; refinement never updates the active HV by itself.
|
|
37
|
+
|
|
38
|
+
Parallel mode explores more alternatives; sequential mode refines more deeply. Both follow the
|
|
39
|
+
method's budget identity of **R = 4k executions** and **P = 3k improver sessions**.
|
|
40
|
+
|
|
41
|
+
## Experience across tasks
|
|
42
|
+
|
|
43
|
+
Each scope has an experience library containing adopted HVs and evidence-backed lessons about their
|
|
44
|
+
edits. Future task improvers can consult that library. The library preserves the variants themselves
|
|
45
|
+
rather than only summaries.
|
|
46
|
+
|
|
47
|
+
## Further reading
|
|
48
|
+
|
|
49
|
+
- [03 Variants](../../architecture/03-variants.md) — component surface, validation, versions, and trust.
|
|
50
|
+
- [05 Refinement](../../architecture/05-refinement.md) — full method, evidence contract, budgets, and selection.
|
|
51
|
+
- [ADR-0011](../../decisions/ADR-0011-foundation-and-variants.md) — the fixed-foundation/mutating-variant decision.
|
|
52
|
+
- [Harness² paper](https://arxiv.org/abs/2610.14224).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Integrations
|
|
2
|
+
|
|
3
|
+
The Harness stays application-neutral. An embedding application contributes its own data and
|
|
4
|
+
capabilities through generic extension points; plugins and connected apps are loaded and governed by
|
|
5
|
+
the Harness.
|
|
6
|
+
|
|
7
|
+
## Application extension points
|
|
8
|
+
|
|
9
|
+
The Harness has seven extension points:
|
|
10
|
+
|
|
11
|
+
1. **Prompt sections** — application context added to the compiled prompt.
|
|
12
|
+
2. **Tool providers** — application tools offered to eligible sessions.
|
|
13
|
+
3. **Tool policy** — per-call scope, authorization, approvals, and connector limits.
|
|
14
|
+
4. **Secret store** — application-chosen credential storage.
|
|
15
|
+
5. **Directory** — names for opaque application identifiers.
|
|
16
|
+
6. **Plugin descriptions** — attribution for tools, sections, and groups supplied by a plugin.
|
|
17
|
+
7. **RefineHost** — isolated workspaces, sessions, and deliverables for refinement.
|
|
18
|
+
|
|
19
|
+
The server protocol provides equivalents for non-Node hosts except `RefineHost`, which is Node-only
|
|
20
|
+
today.
|
|
21
|
+
|
|
22
|
+
## Plugins and capabilities
|
|
23
|
+
|
|
24
|
+
Plugins can contribute instructions, skills, commands, tools, connections, extension code, and themes.
|
|
25
|
+
The Harness selects what loads, keeps capabilities scoped to callers, and requires trust for
|
|
26
|
+
executable plugin code. Enabling a plugin does not by itself grant tool permission; calls still pass
|
|
27
|
+
the gate.
|
|
28
|
+
|
|
29
|
+
## Connected apps and Hub
|
|
30
|
+
|
|
31
|
+
Connected apps use an MCP broker with scoped session access, approval for non-read calls, and
|
|
32
|
+
redaction of stored traces. The Hub installs exact catalog versions of skills, prompts, rules, and
|
|
33
|
+
Pi packages. Installation does not automatically enable, trust, or authorize the installed resources.
|
|
34
|
+
|
|
35
|
+
## Further reading
|
|
36
|
+
|
|
37
|
+
- [01 Extension points](../../architecture/01-extension-points.md) — the application-to-Harness contract.
|
|
38
|
+
- [06 Plugins and capabilities](../../architecture/06-plugins-and-capabilities.md) — loading, trust, and frozen capability sets.
|
|
39
|
+
- [07 Tools and the gate](../../architecture/07-tools-and-gate.md) — per-call authorization.
|
|
40
|
+
- [09 Accounts and connectors](../../architecture/09-accounts-and-connectors.md) — secrets, connected apps, OAuth, and Hub.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Interfaces
|
|
2
|
+
|
|
3
|
+
The same Harness runtime can be embedded by a Node application, hosted as a child process by another
|
|
4
|
+
language, or used through its standalone terminal.
|
|
5
|
+
|
|
6
|
+
## Node embedding
|
|
7
|
+
|
|
8
|
+
A Node host constructs the package with `createHarness(...)`, supplies application-owned capabilities
|
|
9
|
+
through the extension points, and uses its sessions, runs, accounts, variants, and other services
|
|
10
|
+
directly. The [embedding guide](../../README.md#using-it-from-node) has a code example and API details.
|
|
11
|
+
|
|
12
|
+
## Server protocol
|
|
13
|
+
|
|
14
|
+
A non-Node host can run the Harness server and exchange newline-delimited JSON messages over stdin
|
|
15
|
+
and stdout. The protocol exposes the Harness API, saved run events, state-change notices, and calls
|
|
16
|
+
for host-provided extension points.
|
|
17
|
+
|
|
18
|
+
## Standalone terminal
|
|
19
|
+
|
|
20
|
+
`xagent` provides the Harness-owned OpenTUI terminal over a persistent Pi session. An embedding
|
|
21
|
+
application may host the terminal in its own PTY; the Harness owns the terminal UI and session
|
|
22
|
+
behavior, while the host owns PTY and process supervision.
|
|
23
|
+
|
|
24
|
+
## Further reading
|
|
25
|
+
|
|
26
|
+
- [01 Extension points](../../architecture/01-extension-points.md) — how an embedding application extends the Harness.
|
|
27
|
+
- [10 Server protocol](../../architecture/10-server-protocol.md) — wire format and method contract.
|
|
28
|
+
- [11 Terminal](../../architecture/11-terminal.md) — terminal ownership and runtime.
|
|
29
|
+
- [Terminal guide](../../terminal-tui.md) — implementation details and verification evidence.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Memory and history
|
|
2
|
+
|
|
3
|
+
The Harness keeps two kinds of information outside a run's prompt configuration: reference notes in
|
|
4
|
+
the Wiki and evidence from earlier runs. Both are searchable; the run index is derived and rebuildable.
|
|
5
|
+
|
|
6
|
+
## Wiki
|
|
7
|
+
|
|
8
|
+
The Wiki stores linked, versioned Markdown notes for projects and shared knowledge. Notes are
|
|
9
|
+
reference material, not instructions: they do not replace or modify a Harness Variant's guidance.
|
|
10
|
+
Selected references may be delivered as changing context, but the Wiki itself is not an always-on
|
|
11
|
+
prompt.
|
|
12
|
+
|
|
13
|
+
## Run history and trajectories
|
|
14
|
+
|
|
15
|
+
History supports scoped recall over earlier conversations. Trajectory tools search and read bounded
|
|
16
|
+
pages of recorded run events, including context, tool calls, decisions, retries, and usage. Reads are
|
|
17
|
+
redacted and report evidence; they do not score runs.
|
|
18
|
+
|
|
19
|
+
## Lessons and the experience library
|
|
20
|
+
|
|
21
|
+
The optional `lessons` plugin may turn a completed run into a general Wiki lesson; see
|
|
22
|
+
[Automations](../automations/README.md). The [Harness² experience library](../google-harness2/README.md#experience-across-tasks)
|
|
23
|
+
is separate: it stores adopted Harness Variants with evidence-backed lessons about their edits.
|
|
24
|
+
|
|
25
|
+
## Further reading
|
|
26
|
+
|
|
27
|
+
- [08 Memory and history](../../architecture/08-memory-and-history.md) — Wiki, recall, trajectories, and indexing.
|
|
28
|
+
- [12 Storage](../../architecture/12-storage.md) — data root and state directory.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Future feature backlog
|
|
2
|
+
|
|
3
|
+
This backlog records candidate directions. An entry here does not change the binding architecture,
|
|
4
|
+
approve implementation, or describe an available feature. A change to an architecture contract,
|
|
5
|
+
invariant, layer boundary, extension point, or storage layout still requires a reviewed proposal.
|
|
6
|
+
|
|
7
|
+
## FW-0001: Agent Modes, starting with Router Agent Mode
|
|
8
|
+
|
|
9
|
+
**Status:** Candidate; future architecture proposal required before implementation.
|
|
10
|
+
|
|
11
|
+
### Concept
|
|
12
|
+
|
|
13
|
+
An **Agent Mode** selects one overall work style, with only one mode active at a time. Plugins remain
|
|
14
|
+
stackable strategies and contributions that can be used within a mode; they do not select the
|
|
15
|
+
agent's overall work style.
|
|
16
|
+
|
|
17
|
+
The first planned mode is **Router Agent Mode**. The user interacts with one user-facing agent through
|
|
18
|
+
one continuous chat and browser experience. That router proactively plans and delegates work across
|
|
19
|
+
persistent subagent threads, receives their messages, and coordinates the overall work while the user
|
|
20
|
+
can continue sending messages.
|
|
21
|
+
|
|
22
|
+
### Intended ownership
|
|
23
|
+
|
|
24
|
+
This is intended as a Harness foundation capability. The current architecture describes subagents as
|
|
25
|
+
child runs and assigns persistent teams, broader orchestration, and the application's shared UI to
|
|
26
|
+
the embedding application ([02 Sessions and runs](architecture/02-sessions-and-runs.md), [feature-gap
|
|
27
|
+
review](study/feature-gap-review.md)). This backlog entry proposes revisiting that boundary; it does
|
|
28
|
+
not change it.
|
|
29
|
+
|
|
30
|
+
### Decisions required before a proposal
|
|
31
|
+
|
|
32
|
+
- Define the mode selection scope and lifetime, including how one active mode applies to sessions,
|
|
33
|
+
runs, and child agents.
|
|
34
|
+
- Define persistent subagent thread identity, history, communication, delegation, recovery, and
|
|
35
|
+
resource limits while preserving the run's account, variant, capability, and gate guarantees.
|
|
36
|
+
- Define how the router receives worker messages and incorporates them while accepting continued
|
|
37
|
+
user input in one conversation.
|
|
38
|
+
- Define how the single chat and browser experience maps to the Harness terminal, server protocol,
|
|
39
|
+
and embedding hosts, including which UI responsibilities remain with the host.
|
|
40
|
+
- Identify the storage, run-event, and public API changes needed to support the mode and migrate or
|
|
41
|
+
coexist with current run-scoped subagents.
|
|
42
|
+
|
|
43
|
+
### Next step
|
|
44
|
+
|
|
45
|
+
When implementation is scheduled, write a formal architecture proposal from the proposal template,
|
|
46
|
+
identify every affected contract and invariant, and obtain acceptance before changing code or binding
|
|
47
|
+
specification pages. Record a lasting accepted architecture choice in an ADR. Until then, Agent Mode
|
|
48
|
+
and Router Agent Mode are planning terms only; no runtime behavior or public interface is implied.
|