@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,202 @@
|
|
|
1
|
+
# Handoff: App parity with the Harness, and the Solo sidebar and tabs (updated 2026-11-19)
|
|
2
|
+
|
|
3
|
+
The scoped implementation and documentation are in place; full parity acceptance remains open.
|
|
4
|
+
Nothing is committed. The working trees contain substantial pre-existing uncommitted work; preserve
|
|
5
|
+
it and do not revert unrelated files.
|
|
6
|
+
|
|
7
|
+
| Repository | Branch | State |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `Xingular Agent/Harness` | `release/1.0.0` | Code and architecture docs updated; typecheck, full tests and `prove` pass |
|
|
10
|
+
| `Xingular UI` | (current) | Shared tab-manager change; typecheck and full tests pass |
|
|
11
|
+
| `Xingular Agent/App` | `app-as-frontend` | Profile safety, commands, Solo tabs, browser refusal and docs updated; automated checks pass |
|
|
12
|
+
| `Xingular Workspace` | (current) | Shared-UI consumers typecheck and UI check pass; four test failures were observed |
|
|
13
|
+
|
|
14
|
+
Approved plan: `~/.claude/plans/i-wanna-make-change-velvet-nova.md`.
|
|
15
|
+
|
|
16
|
+
## What the owner asked for
|
|
17
|
+
|
|
18
|
+
1. Solo sidebar: **Project › Session**, with no folder or worktree level. People never configure
|
|
19
|
+
worktrees. A new session runs in the project folder, as `xagent` does in a terminal.
|
|
20
|
+
2. Each session card has two rows: the title, then a muted row such as `2h ago · 5.1MB`.
|
|
21
|
+
3. One shared top bar over the chat, with tabs and an icon-only view switch:
|
|
22
|
+
- **Split**: every open session is its own panel (the earlier behaviour).
|
|
23
|
+
- **Single**: one panel; clicking a tab replaces what it shows.
|
|
24
|
+
4. The sidebar shows which sessions are open. A middle click on a tab closes it. Closing a tab
|
|
25
|
+
only closes the tab; it never archives the session.
|
|
26
|
+
5. Every Harness terminal slash command works in the App.
|
|
27
|
+
6. The prompt, runtime, plugins and skills are the same in both front ends. Features that work
|
|
28
|
+
better in the App (annotate capture, the WebKit browser, computer control) are labelled as
|
|
29
|
+
add-ons in their plugin descriptions.
|
|
30
|
+
|
|
31
|
+
Choices the owner made:
|
|
32
|
+
- Parity: same core, plus labelled add-ons.
|
|
33
|
+
- Build every command now.
|
|
34
|
+
- Closing a tab only closes it.
|
|
35
|
+
|
|
36
|
+
## Done
|
|
37
|
+
|
|
38
|
+
### Harness
|
|
39
|
+
|
|
40
|
+
- **Shared command registry.** `src/commands/registry.ts` holds `CORE_COMMANDS`, plain data, each
|
|
41
|
+
with `kind` (session, page or local) and `methods`. The terminal's `BUILTINS` now comes from it
|
|
42
|
+
(`src/terminal/tui/commands.ts`).
|
|
43
|
+
- **`commands.list` server method** (`src/commands/list.ts`). It returns core commands, built-in
|
|
44
|
+
plugin commands (`annotate:…`), extension commands with their owner prefix, prompt templates
|
|
45
|
+
and `skill:` entries.
|
|
46
|
+
- **Session control methods** (`src/sessions/control.ts`, wired in `src/server/methods.ts`):
|
|
47
|
+
- `sessions.tree`, `sessions.navigate` (no summary; the move is saved as a `xingular-navigation`
|
|
48
|
+
custom entry so the next turn opens on it)
|
|
49
|
+
- `sessions.fork`, `sessions.clone` (both into a `targetDir`)
|
|
50
|
+
- `sessions.rename`, `sessions.lastReply`, `sessions.export` (JSONL)
|
|
51
|
+
- `sessions.reload`
|
|
52
|
+
- **Session command runs.** `SessionRunInput.command` / `TurnParams.command` accepts `compact`,
|
|
53
|
+
`navigate` (with a summary) or `export` (HTML). `runTurn` runs the command instead of a prompt
|
|
54
|
+
and skips the context update. `checkCommand` in `src/sessions/sessions.ts` validates it.
|
|
55
|
+
- **One launch path for prompts and tools:**
|
|
56
|
+
- `Launch.standard` (`src/prompt/standard.ts`) adds the same role, working-folder (with the
|
|
57
|
+
project name) and connections text for every front end.
|
|
58
|
+
- The terminal always uses it; the App now asks for it.
|
|
59
|
+
- The terminal-only `xagent-wiki` wording is gone from `compile.ts`. There is one files-and-shell
|
|
60
|
+
paragraph for every caller, and a standard session always gets it.
|
|
61
|
+
- A new Annotations tool group carries the `page_notes_*` guidance, moved from the App.
|
|
62
|
+
- **The terminal gets the same tools:**
|
|
63
|
+
- The Harness History, Wiki and skill tools go over the socket (`ownTools` in
|
|
64
|
+
`src/terminal/terminals.ts`), which closes PAR-002.
|
|
65
|
+
- Output trim and Budget guard load in the terminal (`firstParty.list` socket call plus
|
|
66
|
+
`piExtension.ts`), which closes PAR-006. Budget guard now resets its count per reply
|
|
67
|
+
(`agent_start`).
|
|
68
|
+
- The terminal-only `ask_user_question` alias is removed; `ask_user` covers it.
|
|
69
|
+
- The `pi` command's own extensions (llama.cpp, codemode, tool-search, mcp) are no longer loaded
|
|
70
|
+
in the terminal, because a host session cannot have them. See `catalogue.ts` and
|
|
71
|
+
`inventory.ts`.
|
|
72
|
+
- **`xagent --variant <scope>`** (`src/terminal/standalone.ts`, `src/cli.ts`). With the App's
|
|
73
|
+
`--data`, the terminal runs on the same variant as an App agent.
|
|
74
|
+
- **Add-on labels.** New `PluginDescriptor.surfaces` / `Plugin.surfaces` field
|
|
75
|
+
`{ preferred: 'host', terminal: 'fallback' | 'unavailable', note }`, with helpers in
|
|
76
|
+
`src/plugins/surfaces.ts`.
|
|
77
|
+
- The annotations plugin is labelled. The layer check forbids naming the App inside the
|
|
78
|
+
Harness, so its text says "a desktop app built on this harness".
|
|
79
|
+
- The terminal's `/plugins` and `/harness` pages show the note and a badge.
|
|
80
|
+
- **New exports** in `src/index.ts`: the registry, `SessionCommand`, `SessionTree`,
|
|
81
|
+
`PluginSurfaces`, `describePlugin`, `STANDARD_CONNECTIONS`.
|
|
82
|
+
- **Tests:**
|
|
83
|
+
- Added: `src/commands/registry.test.ts`, `src/sessions/control.test.ts`,
|
|
84
|
+
`src/prompt/surfaceParity.test.ts` (a terminal and a host session compile to identical text
|
|
85
|
+
and tool groups), and session-command tests in `sessions.test.ts`.
|
|
86
|
+
- Updated: terminal, catalogue, standalone, runtime-socket and lifecycle tests.
|
|
87
|
+
|
|
88
|
+
### Xingular UI
|
|
89
|
+
|
|
90
|
+
- `WorkspaceTabManager` (`src/ui/document-workspace.tsx`): new `addLabel`, and `activeTabId` may
|
|
91
|
+
be `null`. Test added in `tests/workspace-tabs.test.tsx`. Middle-click close already existed.
|
|
92
|
+
|
|
93
|
+
### App
|
|
94
|
+
|
|
95
|
+
- **Solo model rewritten:**
|
|
96
|
+
- `src/modes/solo/soloLayout.ts` (version 2): one layout across projects. Every open tab has a
|
|
97
|
+
pane; `view` is `split` or `single`. Functions: `openSoloTab`, `closeSoloTab`, `focusSoloTab`,
|
|
98
|
+
`visibleSoloTree`, `restoreSoloLayout` (migrates version 1).
|
|
99
|
+
- `soloWorkspaceState.ts`: storage key `…:v2`, migrated from the v1 key.
|
|
100
|
+
- `soloThreads.ts`: `groupSoloProjects`, `projectDefaultGroup`, `tabGroup`, `tabProjectId`.
|
|
101
|
+
- **Sidebar** (`SoloThreadList.tsx`):
|
|
102
|
+
- Project › Session, with two-row cards (`sessionMeta`) and an open/active indicator
|
|
103
|
+
(`data-open`, `data-active`, `data-solo-open-indicator`).
|
|
104
|
+
- Each session's ⋯ menu has Archive and Remove.
|
|
105
|
+
- The project's + button starts a session in the project's default folder group.
|
|
106
|
+
- The group rows and worktree controls are removed, and `SoloGroupDialog.tsx` is deleted.
|
|
107
|
+
- **Center** (`SoloCenter.tsx`):
|
|
108
|
+
- `SoloTabBar` and `SoloViewToggle` sit in the shared `PageFrame` compact header, wired in
|
|
109
|
+
`SoloWorkspace.tsx`.
|
|
110
|
+
- Per-pane headers are removed.
|
|
111
|
+
- ⌘W / ⌘T now call `closeFocusedTab` / `newSession` (`src/shell/frameControls.ts`,
|
|
112
|
+
`src/App.tsx`).
|
|
113
|
+
- **Session size.** `ThreadSummary.size_bytes` (Rust `history_bytes` in `agents.rs`) and
|
|
114
|
+
`sizeBytes` in `shared/contracts.ts`. `formatSessionSize` in `shared/files.ts` matches the
|
|
115
|
+
terminal's format.
|
|
116
|
+
- **Slash commands from the Harness:**
|
|
117
|
+
- `src/modes/solo/soloCommands.ts` has a handler for every non-sending core command.
|
|
118
|
+
`soloCommands.test.ts` fails if the registry gains one without a handler.
|
|
119
|
+
- `SoloCommandPicker.tsx` is the picker or page dialog.
|
|
120
|
+
- `SoloConversation.tsx`:
|
|
121
|
+
- The `/` menu and highlighting come from `commands.list`.
|
|
122
|
+
- Aliases (`/side`, `/tree`, `/resume`) work.
|
|
123
|
+
- A bare `/plan` toggles a persistent plan mode, and a bare `/btw` dismisses the side question.
|
|
124
|
+
- `chatCommands.ts` is reduced to `isStopCommand` and `chatCommandInput`. The duplicate
|
|
125
|
+
extension-command helpers in `pluginModel.ts` are removed.
|
|
126
|
+
- **Host side:**
|
|
127
|
+
- New Tauri commands in `src-tauri/src/agents.rs`, registered in `lib.rs`: `session_tree`,
|
|
128
|
+
`session_fork`, `session_clone` (fork and clone copy the transcript too), `session_rename`,
|
|
129
|
+
`session_compact`, `session_export`, `session_reload`.
|
|
130
|
+
- New sidecar `agent.command` (`createSessionCommand` in `sidecar/src/agentRuns.ts`).
|
|
131
|
+
- `RENDERER_METHODS` (`src-tauri/src/harness.rs`) gained `commands.list`, `doctor.*`,
|
|
132
|
+
`worktrees.list/status` and `agents.list/get`.
|
|
133
|
+
- Bridge: `bridge.commands`, `bridge.session` and `bridge.harnessPages` in
|
|
134
|
+
`src/bridge/commands.ts`. The schemas are in `shared/sessionCommands.ts`.
|
|
135
|
+
- **Prompt:**
|
|
136
|
+
- `src-tauri/src/prompts.rs` no longer writes identity, role, working-project or its own
|
|
137
|
+
connections text.
|
|
138
|
+
- It keeps only the add-on groups: App browser and computer, Files, Capabilities, Reactions.
|
|
139
|
+
- It adds a `folder-access` section for trusted folders.
|
|
140
|
+
- `agents.rs` sets `launch.standard = { cwd }`.
|
|
141
|
+
- **Plugin labels:**
|
|
142
|
+
- `sidecar/src/appPlugins.ts` labels every App part as an add-on, with `surfaces`.
|
|
143
|
+
- `app-identity` and `app-web-guidance` are removed, and `app-folder-access` is added.
|
|
144
|
+
- The Plugins screen shows a "Better in the app" or "App only" badge (`pluginModel.ts`,
|
|
145
|
+
`PluginCatalog.tsx`, `PluginInspector.tsx`).
|
|
146
|
+
- The plugin schema gains `surfaces`.
|
|
147
|
+
- **Guide demo** (`src/modes/guide/SoloWorkspaceExample.tsx`) and the Playwright fixtures and
|
|
148
|
+
specs (`tests/browser/solo-*.{fixture.tsx,spec.ts}`) are rewritten.
|
|
149
|
+
- **Shared interactive profile and root safety:** production App and standalone use the Harness
|
|
150
|
+
profile at `~/.xingular-harness/profile.json`; development uses the isolated
|
|
151
|
+
`~/.xingular-harness-dev/profile.json`. Existing App roots are adopted by reference, explicit
|
|
152
|
+
`dataRoot` overrides remain authoritative, and conflicting populated roots block startup rather
|
|
153
|
+
than merge. Historical account/variant/path/cwd pins are not rewritten. Legacy App Support moves
|
|
154
|
+
only if the destination is absent; if both trees exist, startup reports a recovery error and
|
|
155
|
+
leaves both untouched. Development paths are checked against production, including symlink
|
|
156
|
+
traversal. The App resolves the selected host credential backend through Keychain and fails
|
|
157
|
+
closed; the terminal also fails closed without a host adapter. Disposable App identifiers remain
|
|
158
|
+
blocked until an isolated Keychain adapter exists. Sidecar startup requires and validates the
|
|
159
|
+
selected profile and state-directory paths. Coverage is in `sidecar/src/profile.test.ts` and
|
|
160
|
+
`src-tauri/src/{state.rs,host.rs,secrets.rs}`.
|
|
161
|
+
- **Browser safety:** unsupported native WebKit operations (refs, accessibility snapshots,
|
|
162
|
+
screenshots, waits, and key presses) return an explicit refusal before effects; the App does not
|
|
163
|
+
switch automatically to the isolated Harness browser.
|
|
164
|
+
- **Current App documentation:** accepted ADR-0033 records Project › Session and shared tabs;
|
|
165
|
+
ADR-0027 and the obsolete pane-header portion of ADR-0031 are marked superseded. FEAT-0010,
|
|
166
|
+
FEAT-0018, the Solo glossary, architecture/implementation pages, and this handoff now describe
|
|
167
|
+
shared profile defaults, remaining gaps, and current verification.
|
|
168
|
+
|
|
169
|
+
## Check results (2026-11-19)
|
|
170
|
+
|
|
171
|
+
| Check | Result |
|
|
172
|
+
|---|---|
|
|
173
|
+
| Harness `npm run typecheck` | pass |
|
|
174
|
+
| Harness `npm test` | pass: 163 files, 1,255 passed, 3 skipped |
|
|
175
|
+
| Harness `npm run prove` | pass: build and standalone proof suite; no provider request |
|
|
176
|
+
| App `npm run typecheck` | pass |
|
|
177
|
+
| App `npm test` | pass: renderer 90 files/586 tests; sidecar 11 files/86 tests |
|
|
178
|
+
| App `npm run check:layers` | pass |
|
|
179
|
+
| App `npm run check:ui` | pass: 38 recorded findings, baseline 38 |
|
|
180
|
+
| App `cargo test` | pass: 186 passed, 1 ignored; compiler warnings remain |
|
|
181
|
+
| App `cargo test --features dev-profile` | pass: 189 passed, 1 ignored; compiler warnings remain |
|
|
182
|
+
| App Playwright | pass: all 61 tests with installed Chrome |
|
|
183
|
+
| Xingular UI typecheck and `npm test` | pass: 21 files, 124 tests; the package has no `check:ui` script |
|
|
184
|
+
| Xingular Workspace typecheck | pass |
|
|
185
|
+
| Xingular Workspace `check:ui` | pass: 79 findings, baseline 87 |
|
|
186
|
+
| Xingular Workspace `npm run test:run` | **4 failed, 993 passed**: three `assistantService.test.ts` cases hit the Harness Pi-version guard (requires Pi 1.2.0, found 1.4.0), leaving the fake provider's `release` callback unset; one `commandPaletteNoteItem.test.ts` assertion expects an inline SVG style string that is absent |
|
|
187
|
+
| Xingular Workspace `electron-vite build` | pass (targeted tab-E2E run) |
|
|
188
|
+
| Xingular Workspace tab Playwright (three selected tests) | **3 failed before tab assertions**: shared `launchWithFixture` clicked the Notes sidebar control, then `expectNotePanelReady` timed out. The run used temporary `HOME`, `TMPDIR`, vault and user-data paths; no root cause was established |
|
|
189
|
+
|
|
190
|
+
Browser command: `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" npx playwright test --reporter=list`.
|
|
191
|
+
|
|
192
|
+
No provider calls or owner profiles were used. Tests use fixture or temporary data. The Workspace test failures were not changed as part of this task; the shared-tab tests in Xingular UI and App Playwright passed.
|
|
193
|
+
|
|
194
|
+
## Remaining gaps and decisions
|
|
195
|
+
|
|
196
|
+
1. **Parity acceptance is not complete.** The source routes and command handlers are present, but each fixed core command still needs its own acceptance. `PAR-002` (Harness History/Wiki/skill tools) and `PAR-006` (first-party hooks) are implemented on both surfaces but acceptance has not been recertified. `get_capabilities` is now Harness-owned; the App has no duplicate tool.
|
|
197
|
+
2. **The session catalog remains separate (`PAR-008`).** App `/session` lists App-owned Solo threads; terminal `/session` lists native Pi histories. The read-only audit recommends a Harness-owned catalog of opaque references to existing native histories—not merging or copying transcripts or IDs. Keep logical/App and native Pi IDs distinct; retain the exact locator privately, preserve account/path/cwd guards, fail rather than substitute an unknown account, and serialize shared writes. This is a recommendation, not an implementation; do not claim `/session` parity.
|
|
198
|
+
3. **Other registered gaps remain:** `PAR-001` App checklist surface; `PAR-003` continuation; `PAR-004` terminal variant/refinement actions; `PAR-005` App-only Wiki browsing; `PAR-007` host-backed computer/files capabilities; `PAR-009` shared recent-folder choice; `PAR-010` Solo `/agents` detail/management; `PAR-011` native WebKit annotation-gesture acceptance; `PAR-012` Solo worktree status/create/remove; and `PAR-015` native WebKit browser coverage. Unsupported browser refs, accessibility snapshots, screenshots, waits, and key presses explicitly refuse before effects; there is no automatic switch to the isolated Harness browser.
|
|
199
|
+
4. **Profile interoperability is intentionally bounded.** Production App and standalone share profile-selected data/state defaults; explicit roots, `--variant`, and historical run pins remain authoritative. The App's per-agent variant is still an App-supplied override. App credentials use the host Keychain backend; a frontend without that host adapter fails closed, and disposable App identifiers are blocked until an isolated Keychain adapter exists. Shared roots do not mean credential-store copying or automatic account substitution.
|
|
200
|
+
5. **Native App acceptance was not performed.** The full Playwright suite ran against isolated browser fixtures, not a Tauri window. No real-model request or user profile was used; the native Keychain and WebKit surfaces therefore remain unverified in a running App.
|
|
201
|
+
6. **Workspace test failures need a separate follow-up.** `assistantService.test.ts` requires the pinned Pi runtime but this Workspace installation resolves Pi 1.4.0; `commandPaletteNoteItem.test.ts` has an SVG markup expectation mismatch. Typecheck and `check:ui` pass.
|
|
202
|
+
7. **Commits:** one per repository, in order Harness → Xingular UI → App, only when the owner asks. No files were committed in this work.
|
package/docs/parity.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Capability parity register
|
|
2
|
+
|
|
3
|
+
**Status:** descriptive register, as of 2026-11-19. The binding rules are
|
|
4
|
+
[14 Surfaces and parity](architecture/14-surfaces-and-parity.md) (`INV-PAR-1`–`INV-PAR-4`).
|
|
5
|
+
|
|
6
|
+
Every capability a person can use is a Harness capability. The standalone terminal (`xagent`)
|
|
7
|
+
is the reference front end; a host such as the App presents the same capabilities with a richer
|
|
8
|
+
UI. This page lists each capability, where the Harness owns it, how each front end shows it, and
|
|
9
|
+
whether both pass. A gap has an ID (`PAR-NNN`) until it is closed.
|
|
10
|
+
|
|
11
|
+
Host-only surfaces (presentation a terminal cannot show, `INV-PAR-4`) are not listed here; each
|
|
12
|
+
host keeps its own register. The App's is
|
|
13
|
+
[`App/docs/architecture/app-only-surfaces.md`](../../App/docs/architecture/app-only-surfaces.md).
|
|
14
|
+
|
|
15
|
+
Status: **parity** only where both surfaces passed acceptance; **implemented** means source routes
|
|
16
|
+
exist but acceptance is not certified; **terminal only**, **host only**, **partial**, **planned**,
|
|
17
|
+
and **host-backed** (needs a host object; terminal fallback named). A slash-command row marked
|
|
18
|
+
implemented is not a parity claim; acceptance is tracked per command.
|
|
19
|
+
|
|
20
|
+
## Register
|
|
21
|
+
|
|
22
|
+
| Capability | Harness owner | Method or tool | Terminal surface | App surface | Status | Gap |
|
|
23
|
+
|---|---|---|---|---|---|---|
|
|
24
|
+
| Sessions and turns | `sessions/` | `sessions.run`, `terminal.*` | the terminal itself | Solo chat | parity | — |
|
|
25
|
+
| Pending follow-up and steering queues | Pi session queue, terminal queue projection | `followUp` and `steer` delivery modes | clickable native queue rows; `/follow-up` edits, sends next or removes, preserving images; on explicit user stop send one unconsumed steer before follow-ups; never drain on retry/failure/non-user interruption | inline Send now/Remove controls; successful completion stays FIFO, explicit stop prioritizes an undelivered steer; `/follow-up` points to the inline queue | implemented; acceptance not recertified | — |
|
|
26
|
+
| Plan mode | `sessions/planMode.ts` | `plan: true` | `/plan`, Shift+Tab, plan card; shared outcome and bounded repair; a reply that needs no plan ends with no card or warning; plan/todo context restored after compaction | plan request, PlanCard for a complete block and nothing otherwise; shared Harness classification and checkpoint behavior | ADR-0077 `no_plan` outcome implemented; surface acceptance not recertified | — |
|
|
27
|
+
| Goal (`/goal`, ADR-0072) | `sessions/goal.ts`, `sessions/goalLoop.ts`, `sessions/goalPrompts.ts` | `sessions.run { goal }`, `goalMode` on the run record, model tools `get_goal`/`update_goal` while a goal exists, `extension: 'goal'` notices | `/goal [<objective>\|edit\|pause\|resume\|clear]`, `--rounds`/`--hours`, footer label, Esc pauses, goal restored `paused` from the Pi session | not wired: no goal control or status | terminal implemented; App presentation planned | PAR-017 |
|
|
28
|
+
| Capability discovery | `tools/getCapabilities.ts` | read-only `get_capabilities` | terminal extension reports Pi's active tools and schemas; shared plan allowlist includes it | structured Harness run uses the same tool; no duplicate App-owned tool | implemented; acceptance not recertified | — |
|
|
29
|
+
| Bash command mode | `sessions/sessions.ts`, `sessions/initialBash.ts` | `initialBashCommand`; Bash `workspaceWriteScope` | `!command` defaults to workspace; `!outside command` asks before running once | same `!command` and `!outside command` composer semantics | parity | — |
|
|
30
|
+
| Workspace-scoped writes | `core/workspace.ts`, `sessions/workspaceBoundary.ts`, `core/workspaceBashTool.ts`, `core/workspaceSandbox.ts`, `core/workspaceWriteOperations.ts` | pinned non-root `RunRecord.workspaceRoot`; native `edit`/`write`; Bash scope | revalidated atomic native writes; external-hard-link scan and Bash sandbox (Windows: no sandbox, each Bash call asks once, plan-mode Bash refused; ADR-0042); complete escaped outside command in scrollable approval details (deny if too small); no output-triggered retry | same Harness gate and full approval action in scrollable App details; App policy can tighten scope; Full Permission remains the eligible explicit bypass | parity | — |
|
|
31
|
+
| Side questions | `sessions/sideQuestions.ts` | `sideQuestions.start/read/interrupt`; terminal `terminal.sideQuestions.*` | `/btw` contextual dock; the answer renders as Markdown, with scroll and copy | side-question dock through the shared service | parity | — |
|
|
32
|
+
| Approvals and standing approvals | `sessions/approvals.ts` | `approvals.*`; run events `approval.requested`/`approval.resolved` | decision dock, `/permissions`; the call pauses in `waiting_for_approval` and resumes in the same turn | approvals dock above the composer, approval notification in the notification inbox and as a system notification while the window is hidden; settings | parity | — |
|
|
33
|
+
| Opening a link | `core/links.ts` | `links.open`; `HarnessOptions.linkOpener` (ADR-0047) | hover shows the hand pointer and recolours the link, Ctrl+click (the primary click on macOS, whose ⌘ the mouse protocol cannot report) opens web, `mailto:`, file and folder targets with the system handler, a refused link posts a notice | ⌘-click on macOS and Ctrl+click elsewhere opens with the system handler, a plain click keeps the sidebar and falls back to the system for what it cannot show, `a:hover` uses `--link-hover` | implemented; acceptance not certified | — |
|
|
34
|
+
| Questions (`ask_user`) | `tools/askUser.ts` | shared `ask_user` tool | plan-mode dock: strict aligned columns, bounded body scroll, fixed 80-column padded sketch canvas with a viewport-bounded frame and horizontal panning; connected structural projection with high-confidence boundary normalization (PROP-0026, PROP-0028, ADR-0080) | plan-mode form accepts the same permissive 80×24 ASCII source contract with a literal, horizontally scrollable preview; no App code change required | existing question surface parity; ADR-0058 plan clarification contract not verified | — |
|
|
35
|
+
| Subagents | `sessions/subagentService.ts` | `spawn_subagent` (requires `title`, PROP-0030; `continue` resumes a stopped child, ADR-0043), `subagents.*`; plan mode allows only named eligible read-only research profiles; per-profile and total child budgets enforced in `Subagents.spawn` (ADR-0052), with the same refusal result in both surfaces | `/subagents` page with the `main` row pinned first, and live rows under the status line (mark, profile, parent-set title, `n of m tasks`), both rebuilt from saved runs when a conversation reopens; plan-mode research delegation uses the same Harness gate | reply trajectory; plan-mode research delegation uses the same Harness gate | parity | — |
|
|
36
|
+
| Agent profiles | `agents/profiles.ts` | `spawn_subagent { agent }`, `agents.list/get/create/remove`; terminal `terminal.agents.*`; package profiles through `Loading.profilePaths` | `/agents` page: browse, create, edit in `$EDITOR`, copy, delete; package profiles listed under "From a plugin" and switched on `/plugins` | Solo `/agents` lists profiles; profile details and management are not wired | partial | PAR-010 |
|
|
37
|
+
| Run todo list | `tools/todo.ts` | `todo_write`, `runs.todo` (`runs.checklist` deprecated); terminal `todo` telemetry | registered in terminal sessions and their subagents; each write shows as a todo block in the transcript; `/todo` shows the current list; a subagent row shows its `n of m tasks` | `/todo` shows the current list on demand; each write is not rendered inline | terminal done; App shows it on demand | PAR-001 |
|
|
38
|
+
| Continuation of a stopped run | `sessions/continuation.ts` | `continueFrom`, `runs.continuation` | not offered (`/resume` reopens history only) | not offered | planned | PAR-003 |
|
|
39
|
+
| Bounded replies and checkpoints (PROP-0041) | `sessions/workSlice.ts`, `tools/checkpoint.ts`, `sessions/runner.ts`, `sessions/stallWatch.ts` | `checkpoint_write`, `workSlice`, `runs.continuation.checkpoint`, `checkpoint`/`heartbeat` events | guard on every terminal reply with the shared tool; every harness run and terminal reply heartbeats and a reply with no progress for fifteen minutes ends as `stalled` (a stalled live session is closed), a reply waiting on subagents is judged by each child's own clock, and the working row names what it waits on; the handoff is recorded on the run; no checkpoint card or slice control yet | not wired | implemented; terminal card, App presentation and `/slices` open | PAR-004 |
|
|
40
|
+
| Accounts | `accounts/` | `accounts.*` | `/accounts` | Accounts | parity | — |
|
|
41
|
+
| Models and effort | `accounts/choices.ts` | — | `/model`, `/effort` | composer pickers | parity | — |
|
|
42
|
+
| Skills | `plugins/`, `tools/dispatch.ts`, `prompt/compile.ts` | `skill_load`; `Launch.requiredSkills` | `$name` at any word start (required for that request), `/skill:name`, browser Skills tab | composer `$` chip with `requiredSkills`; Capability | implemented; install routes taught in the release-owned skill, foreign manifest skills load as package skills; acceptance not recertified | — |
|
|
43
|
+
| Plugins and Hub | `plugins/`, `hub/` | `plugins.*`, `hub.*` | full-screen `/plugins` local manager; separate full-screen `/hub` Community catalog with bounded registry/document Preview (no Pi-package Preview) | local Plugins manager; Community Hub with payload Preview for non-package entries | parity | — |
|
|
44
|
+
| Plugin authoring and proposal review | `plugins/proposals.ts`, `tools/defaultSkills.ts` | `plugin_propose`, `plugins.proposals.*` | `/plugins` Proposals tab: preview, accept or reject | structured model tool and skill; review UI not implemented | partial; App review pending | PAR-017 |
|
|
45
|
+
| Connected apps (MCP) | `mcp/` | `connections.*`, broker tools | resource browser Connections tab | Connections | parity | — |
|
|
46
|
+
| Web search and page reading | `web/` | `web_search`, `web_fetch` | world tools | world tools | parity | — |
|
|
47
|
+
| Browser (isolated or Brave) | `browser/`, `browser/extension/` | shared `browser_*` schemas; `browser.config`, `browser.extension.*` | isolated or connected Brave tools; `/settings` selects the device backend, pairs the extension and shows status | WebKit: navigate, tabs, visible-text read, page screenshot and page scroll without refs; Brave: shared snapshot-ref tools through the paired extension; `browser_upload` remains WebKit-only; no fallback on disconnect | implemented; disposable loopback acceptance passed; non-loopback host grant prompt untested; WebKit gap remains | PAR-015 |
|
|
48
|
+
| Web annotations | `annotations/` (PROP-0017, PROP-0018, PROP-0038, PROP-0048) | `annotations.*`, `annotations.capture.*`, `page_notes_*` | `/annotate:` page (Annotate and All annotations tabs; DevTools app list and launch), `/annotate:notes`, `/annotate:submit`, `/annotate:clear` | website tab Annotate panel (inspector, queue to the focused thread, app windows through `annotations.capture.*`) | App behind PROP-0048 (queue methods removed); native WKWebView gestures unaccepted | PAR-011 |
|
|
49
|
+
| Managed worktrees | `worktrees/` (PROP-0016) | `worktrees.*` | `--worktree`, `/worktree`, `xagent worktree` | Solo `/worktree` lists records only; Solo starts sessions in the project folder and has no worktree level | partial | PAR-012 |
|
|
50
|
+
| Wiki notes (model tools) | `wiki/`, `tools/` | `wiki_*` | `Terminals.ownTools` registers Wiki-read tools through the session socket; `xagent-wiki` remains a person-facing shell utility | structured Harness tools | implemented on both; acceptance not recertified | PAR-002: acceptance not recertified |
|
|
51
|
+
| History and trajectory (model tools) | `history/` | `history_*`, `trajectory_*` | `Terminals.ownTools` registers model tools through the session socket; `/trajectory` shows refusal events and interrupted status reasons or codes; `/history` navigates session branches | structured tools and trajectory views | implemented on both; acceptance not recertified | PAR-002: acceptance not recertified |
|
|
52
|
+
| Wiki browsing | `wiki/` | `wiki.*` | none | Wiki | host only | PAR-005 |
|
|
53
|
+
| Variants and refinement | `variant/`, `refine/` | `variants.*`, `refine.*` | `/variant` (switch, restore, compare, tag, take components), `/refine [guidance]` with background status and review/adopt, browser Variant tab, `xagent refine` | Harness screen; `/refine` and `/variant` open it | host only | PAR-004 |
|
|
54
|
+
| Output trim and budget guard plugins | `plugins/firstParty.ts` | trusted first-party hooks | `firstParty.list` loads enabled hooks in `terminal/piExtension.ts` | structured Harness sessions load enabled hooks | implemented on both; acceptance not recertified | PAR-006: acceptance not recertified |
|
|
55
|
+
| Doctor | `doctor/` | `doctor.*` | `/doctor` | diagnostics | parity | — |
|
|
56
|
+
| Run inspection | `sessions/runStore.ts` | `runs.*` | `/trajectory`, `/log` | run views, analytics | parity | — |
|
|
57
|
+
| Usage analytics | `usage/` (PROP-0042) | `usage.summary`, `usage.sync` | `/usage:`, `/usage:analysis` page (Analysis tab) | not wired | terminal implemented; host planned | PAR-016 |
|
|
58
|
+
| Remote control (ADR-0056) | `remote/` | protected `terminal.remoteControl.*`; phone calls through `Terminals.send` and the terminal controller | `/remote-control` (`/rc`) page with link, QR code, devices and pair confirmation; `rc` status-bar group; `--remote-control`; the served phone page | stub: App sessions are not terminal sessions | terminal only | PAR-018 |
|
|
59
|
+
| Run details | `context/runDetails.ts` | `context.runDetails`; protected terminal trajectory details | `/context` Run details tab, scoped run selection and links to `/trajectory` | Context Run details tab and links to Trajectory | implemented; acceptance not certified; skill observations cover `skill_load` only and terminal plugin activation is unknown | — |
|
|
60
|
+
| Context attribution (PROP-0049) | `context/` | `context.attribution`; protected `terminal.context` | `/context` page with Request and Growth tabs, a four-colour context bar with a free track and a compaction marker, `space` fold, `enter` row text, `g` grouping, `c` compact; the page header reads `18.3%/1M`, and the composer status band carries no context figure | full-width Context page opened from the Context tab with the same four-colour bar and a screen-reader reading of it, composer ring reading the same share | implemented on both; acceptance not recertified | — |
|
|
61
|
+
| Provider limits | `usage/limits/` (PROP-0042) | `usage.limits` | `/usage:limit` (current account), `/usage:accounts` (all accounts) | not wired | terminal implemented; host planned | PAR-016 |
|
|
62
|
+
| Session catalog (sessions per folder) | `sessions/` saved-history controls; shared catalog not implemented | `sessions.*` controls; no cross-surface catalog method | `/session` selects native Pi histories in the current folder | `/session` reads `bridge.agent.threads(SOLO_ID)`, maps each thread to its project folder, and filters by current effective account; `all` broadens only this App list | planned; catalogs differ | PAR-008 |
|
|
63
|
+
| Folder choice and recent folders | project/worktree selection remains surface-specific | launch `cwd`, `--worktree`, `/worktree` | starts in launch folder; explicit worktree commands | Solo sidebar is Project › Session; new sessions use the project's folder, with no folder/worktree level | planned; no shared recent-folder picker | PAR-009 |
|
|
64
|
+
| Computer control | `computer/screenshot.ts` defines an opt-in approved-window screenshot contract; `computer/control.ts` is an unregistered interaction adapter, not an authorization boundary | `computer_*` (host tools) | no computer screenshot or interaction backend | macOS bridge (host-backed); its display capture has not adopted the approved-window contract | partial; shared interaction adapter is not integrated | PAR-007 |
|
|
65
|
+
| Shared files vault | — | `files_*` (host tools) | none | Files | host only | PAR-007 |
|
|
66
|
+
|
|
67
|
+
## Plugin command namespaces (ADR-0061)
|
|
68
|
+
|
|
69
|
+
The approved contract gives plugin-owned extension commands and plugin-owned prompt templates the
|
|
70
|
+
same `/<owner-prefix>:<name>` namespace, with no bare plugin aliases. A package may set
|
|
71
|
+
`harness.defaultPrompt` to its own template for `/<owner-prefix>:`; built-in defaults remain
|
|
72
|
+
supported. Owner-prefix and same-owner route collisions fail closed with owner diagnostics.
|
|
73
|
+
Standalone templates, `/skill:<name>`, and core commands and their core aliases remain available.
|
|
74
|
+
`commands.list`, terminal completion and dispatch must agree; this documentation change does not
|
|
75
|
+
certify implementation or acceptance on either surface.
|
|
76
|
+
|
|
77
|
+
## Core slash-command surfaces (PROP-0040)
|
|
78
|
+
|
|
79
|
+
These are the fixed `CORE_COMMANDS` entries. The App column records the current Solo source route,
|
|
80
|
+
not a claim that it has passed acceptance. `commands.list`, a handler-completeness test, and source
|
|
81
|
+
presence do not certify parity. Each command needs its own acceptance evidence; dynamic
|
|
82
|
+
plugin/extension, prompt-template and skill commands are listed by `commands.list` but are not in
|
|
83
|
+
this fixed table.
|
|
84
|
+
|
|
85
|
+
| Command | Terminal surface | App Solo route in source | Acceptance / remaining gap |
|
|
86
|
+
|---|---|---|---|
|
|
87
|
+
| `/help` | Command list and palette | Searchable command picker; selection fills the composer | Not certified per command |
|
|
88
|
+
| `/plan` | Plan request / mode toggle | Plan request; bare form toggles persistent plan mode; model Bash runs read-only (PROP-0043) | Not certified per command |
|
|
89
|
+
| `/goal` | Set or view a goal; edit, pause, resume, clear | Not wired: PAR-017 | Not certified per command |
|
|
90
|
+
| `/btw` (`/side`) | Contextual side-question dock | Shared side-question service; bare form dismisses the dock | Not certified per command |
|
|
91
|
+
| `/new` | New conversation | Replaces focused tab with a draft; archives its saved session | Not certified per command |
|
|
92
|
+
| `/stop` | Interrupt current reply; explicitly releases the next eligible native queue item after settlement | Stops the focused session and sends the next eligible queued item after an explicit stop | Not certified per command |
|
|
93
|
+
| `/follow-up` | Opens the follow-up and steering queue editor | Points to the existing inline queue and its Send now/Remove controls | Not certified per command |
|
|
94
|
+
| `/session` (`/resume`) | Search/select native saved history in the current folder | Lists App Solo threads by folder and effective account; `all` widens only within that App list | PAR-008: separate catalogs; no native-history path opening; not certified |
|
|
95
|
+
| `/history` (`/tree`) | Navigate branches in the current native session | Calls `session.navigate` with stable native entry ID; same-session navigation, optional summary, no fork fallback | Route uses Harness `sessions.navigate`; per-command acceptance pending |
|
|
96
|
+
| `/fork` | Fork from a user message | Uses session tree/fork and opens the new session | Not certified per command |
|
|
97
|
+
| `/remote-control` (`/rc`) | Pairing link, QR code and devices; phone page served by the harness | Stub notice: remote control runs from an `xagent` terminal session | PAR-018; terminal only |
|
|
98
|
+
| `/clone` | Clone the current branch | Uses session clone and opens the copy | Not certified per command |
|
|
99
|
+
| `/model` | Choose model | App model picker updates session runtime | Not certified per command |
|
|
100
|
+
| `/effort` | Choose reasoning effort | Updates session runtime effort | Not certified per command |
|
|
101
|
+
| `/thinking` | Toggle thinking display | Toggles transcript thinking visibility | Not certified per command |
|
|
102
|
+
| `/name` | Name the native session | Renames the saved session | Not certified per command |
|
|
103
|
+
| `/compact` | Compact current context | Runs Harness compact command | Not certified per command |
|
|
104
|
+
| `/copy` | Copy last reply | Copies last reply to the clipboard | Not certified per command |
|
|
105
|
+
| `/export` | Export HTML or JSONL | Runs Harness session export; relative paths resolve from the project folder | Not certified per command |
|
|
106
|
+
| `/trajectory` | Inspect recorded runs | Opens trajectory view for the requested or latest run | Not certified per command |
|
|
107
|
+
| `/reload` | Reload trusted resources and keybindings | Reloads Harness resources and refreshes command discovery | Not certified per command |
|
|
108
|
+
| `/accounts` | Accounts page | Opens App Accounts | Not certified per command |
|
|
109
|
+
| `/permissions` | Permissions page | Opens App approval settings | Not certified per command |
|
|
110
|
+
| `/harness` | Harness resource browser | Opens App Harness screen | Not certified per command |
|
|
111
|
+
| `/skills` | Skills browser shortcut | Opens Capability skills | Not certified per command |
|
|
112
|
+
| `/connections` | Connections browser | Opens App connectors | Not certified per command |
|
|
113
|
+
| `/mcp` | Connections browser shortcut | Opens the same App connectors view | Not certified per command |
|
|
114
|
+
| `/tools` | Tools page | Opens Capability tools | Not certified per command |
|
|
115
|
+
| `/plugins` | Full-screen local Plugins manager | Opens local Plugins manager | Not certified per command |
|
|
116
|
+
| `/hub` | Separate full-screen Community Hub catalog | Opens Community Hub | Not certified per command |
|
|
117
|
+
| `/components` | Components browser | Opens App Harness components | Not certified per command |
|
|
118
|
+
| `/settings` | Terminal settings | Opens App settings | Not certified per command |
|
|
119
|
+
| `/doctor` | Doctor checks, including explicitly confirmed live probes | Runs local readiness checks only | Not certified; App route does not expose live checks |
|
|
120
|
+
| `/worktree` | Managed-worktree page and actions | Lists worktrees; Solo has no typed create/status/remove methods wired, and no worktree level | PAR-012; management actions unavailable; not certified |
|
|
121
|
+
| `/subagents` | Live monitor and roster with the `main` row, restored on reopen | Opens latest run's trajectory, not a dedicated subagent roster | Not certified; surfaces differ |
|
|
122
|
+
| `/agents` | Browse/create/edit/copy/delete profiles | Lists profiles only; detail/create/remove methods are not wired into Solo | PAR-010; management actions unavailable; not certified |
|
|
123
|
+
| `/log` | Harness diagnostics and current run events | Opens latest run's trajectory, not a separate log reader | Not certified; surfaces differ |
|
|
124
|
+
| `/hotkeys` | Keyboard controls | Opens App shortcut settings | Not certified per command |
|
|
125
|
+
| `/quit` | Restore terminal and exit | Closes the focused Solo tab; does not exit the App | Not certified per command |
|
|
126
|
+
|
|
127
|
+
The terminal-only display amendments [PROP-0026](architecture/proposals/PROP-0026-connected-sketch-display.md)
|
|
128
|
+
and [PROP-0028](architecture/proposals/PROP-0028-normalize-question-wireframes.md) permit connected
|
|
129
|
+
structural glyphs, frame-attached standalone dividers, and high-confidence boundary normalization
|
|
130
|
+
through whitespace while retaining literal ASCII persistence and unchanged answers. The App may
|
|
131
|
+
keep its literal preview. This does not reopen the expanded metadata contract verified under
|
|
132
|
+
PAR-013. Isolated production PTY evidence verifies bounded fixture topology, not every emulator/font
|
|
133
|
+
or live-model sketch quality.
|
|
134
|
+
|
|
135
|
+
## Gaps
|
|
136
|
+
|
|
137
|
+
| ID | Gap | Planned change |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| PAR-019 | Client terminal (ADR-0083) | The default terminal runs on harness live sessions; `--daemon` and `xagent attach` let a reply outlive its window. The full production PTY run passes at 40x20, 80x24, 100x30 and 120x40, with the focused suites as recorded in ADR-0083; the suites that still fail fail the same way on the previous release's in-process runtime (Known drift D-30, D-31). Plugin custom TUI components, key handlers, renderers, shortcuts and themes need `XINGULAR_TERMINAL_RUNTIME=inprocess` (INV-TUI-8). Provider limits are captured by the harness's own model runtime; `/goal` runs as a harness goal. |
|
|
140
|
+
| PAR-018 | Remote control from the App | `/remote-control` drives an `xagent` terminal session from a phone (page 15). App sessions are structured runs, not terminal sessions; the App would need the same pairing over its own session controls, or to present a terminal session's remote control. ADR-0083: App chat turns now run on live sessions (`live: true`), the same path a client terminal uses, so remote control can move to live sessions; not built yet. |
|
|
141
|
+
| PAR-017 | Plugin proposal review surfaces | The terminal provides hash-bound review in `/plugins`; the App has no proposal review UI yet. |
|
|
142
|
+
| PAR-001 | Todo list not rendered inline in the App | Both surfaces can show the current list: the terminal renders each write as a todo block and `/todo` shows a snapshot; the App's `/todo` shows a read-only list. The App still does not draw an inline block for each write. |
|
|
143
|
+
| PAR-002 | Acceptance of terminal-model History/Wiki/skill tools | Source gap resolved: `Terminals.ownTools` registers History/trajectory, Wiki-read and skill tools over the session socket; `xagent-wiki` is a user-facing shell utility, not the model's only route. Acceptance has not been recertified in this documentation pass. |
|
|
144
|
+
| PAR-003 | Continuation unused | `/resume` lists interrupted runs and continues one with `continueFrom`; the App offers Continue. |
|
|
145
|
+
| PAR-004 | Replaying a turn and switching a conversation's version only in the terminal | The terminal has `/refine` (replay, guidance, review, adopt) and `/variant` (PROP-0052). The App's Harness screen lacks replaying an App turn, guidance, tags, per-component revert and switching an open conversation to another version. |
|
|
146
|
+
| PAR-005 | Wiki browsing only in the App | A `/wiki` page over `wiki.*`. |
|
|
147
|
+
| PAR-006 | Acceptance of terminal first-party hooks | Source gap resolved: enabled hooks are returned by protected `firstParty.list` and loaded by `terminal/piExtension.ts`. Acceptance has not been recertified in this documentation pass. |
|
|
148
|
+
| PAR-007 | Host tools without a complete Harness surface | The opt-in screenshot contract and unregistered interaction adapter exist, but terminal availability reporting, per-action authorization and a conforming backend are not wired. The current macOS host captures a display, not an isolated approved window, and uses global input. Terminal socket execution and native input delivery require a verified authorization boundary before control tools can be exposed. The remaining computer controls are host-owned; the files vault becomes a Harness capability or is dropped. |
|
|
149
|
+
| PAR-008 | Separate session catalogs | Proposal approved; shared catalog is not implemented. Terminal `/session` selects native Pi history in the current folder. App `/session` reads Solo `agent.threads`, maps threads through Solo project groups, and filters to the current effective account and folder; `/session all` broadens only within that App catalog. It cannot open an arbitrary native session path. No cross-surface catalog or visibility guarantee exists. ADR-0083: `sessions.live` lists the live sessions of one harness, and the long-lived harness lists detached terminal replies (`terminal.detached`); neither is a catalog of saved sessions. |
|
|
150
|
+
| PAR-009 | Shared folder/recent-project choice | Terminal starts from its launch `cwd` and can switch through its worktree surface. App Solo uses Project › Session and starts new sessions in the selected project's folder; it has no folder/worktree level or shared recent-folder picker. |
|
|
151
|
+
| PAR-010 | Agent profile management in Solo | App Solo `/agents` can list profiles. Although the renderer allowlist includes `agents.get`, Solo does not wrap it; `agents.create/remove` are not exposed there. Profile details and management actions are unavailable, unlike terminal `/agents`. |
|
|
152
|
+
| PAR-011 | Web annotations | Harness, terminal and App source done (PROP-0017, PROP-0018, 2026-10-24): the App calls `annotations.*`, imports its old notes once, uses the `page_notes_*` tools, and has the Annotate panel. Open: acceptance of the inspector and selection gestures in the running App's WKWebView. PROP-0038 (2026-10-25): both front ends share the page helper, so open shadow roots work in the terminal's capture browser and the App's tabs alike; composed text capture, save, resolve and reveal were exercised in an isolated App WKWebView, inspector clicks were not. PROP-0048 (2026-10-27): Harness and terminal moved to pending/sent with two popover actions, send-all with an optional request, clear, read-only page-note tools, and DevTools app discovery and launch; the App's Annotate panel still uses the removed queue methods and must follow. |
|
|
153
|
+
| PAR-012 | Managed worktree management in Solo | Harness and terminal provide full worktree operations (PROP-0016). Solo `/worktree` lists records only: its renderer adapter does not wire typed `worktrees.create`, `status` or `remove` calls, and Solo session creation stays at the project folder with no worktree level. Handoff, branch, prune, restore and setup-trust actions are also absent from this Solo surface. |
|
|
154
|
+
| PAR-013 | Expanded question wireframes and terminal layout | Closed by [PROP-0025 verification](evidence/terminal-question-wireframes/README.md): four-size production PTY acceptance covers aligned compact columns, body scrolling, pinned controls, Shift+arrow sketch panning and live resizing. Host contracts accept 80×24 literal ASCII sketches (1,943 bytes); six isolated browser tests include exact-boundary content, accessible overflow and unchanged selection/answers. This is controlled fixture acceptance, not live-provider or native Tauri evidence. |
|
|
155
|
+
| PAR-014 | Connected terminal sketch display | Closed by [PROP-0026 verification](evidence/terminal-connected-sketches/README.md) and extended by [PROP-0028 verification](evidence/terminal-wireframe-normalization/README.md): production PTY fixtures cover connected corners/tees, title-bearing rules, missing and whitespace-shifted side edges, internal table widths, frame-attached dividers, resize/panning and unchanged raw persistence/answers. Harness and host checks passed. Host literal rendering remains permitted; no host implementation change was required. This is fixture verification, not an every-font or live-model guarantee. |
|
|
156
|
+
| PAR-016 | Usage analytics and provider limits in the App | The terminal has `/usage:analysis` and `/usage:limit` over `usage.*`. The App presents the same capability: an analytics view and a per-account provider limit view. |
|
|
157
|
+
| PAR-017 | Goal in the App | The terminal has `/goal` over `sessions.run { goal }` (ADR-0072). The App has no way to set, edit, pause, resume or clear a goal, or to show its status, rounds and time; it can read `goalMode` on a run record and the `extension: 'goal'` notices. Pause and resume across unrelated runs need `goal.set/get/clear` methods that are not built yet. |
|
|
158
|
+
| PAR-015 | Native WebKit browser-tool coverage | The shared browser schema is wider than the native backend. Native WebKit supports navigation, tabs, visible-text reads, page screenshots and scrolling without refs; live screenshot acceptance is pending. Accessibility snapshots, snapshot-ref interactions (including click/type/select/ref-scroll/ref-screenshot), waits and keyboard presses return an explicit `browser_unsupported` refusal before effects; there is no automatic switch to the isolated Harness browser. See page 13 and the native backend's `surfaces` note. |
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Xingular Harness 1.0.0
|
|
2
|
+
|
|
3
|
+
This release establishes @xingular/harness@1.0.0 as the stable baseline and retains the xharness
|
|
4
|
+
command. It intentionally resets the earlier development numbering; historical tags and published
|
|
5
|
+
versions remain unchanged. The npm registry published 1.0.0 as the stable baseline; this file
|
|
6
|
+
remains its release notes.
|
|
7
|
+
|
|
8
|
+
## Included
|
|
9
|
+
|
|
10
|
+
- Pi execution with isolated accounts, pinned models/capabilities, gated tools and recorded usage.
|
|
11
|
+
- Foundation/variant architecture, validated c1–c8 variants, version history, continuation,
|
|
12
|
+
answer-free refinement and opt-in lessons.
|
|
13
|
+
- Wiki notes, history/trajectory tools, MCP connectors, plugins, Hub installation and terminal UI.
|
|
14
|
+
- Generic web search/fetch and isolated browser tools, plus account and backend diagnostics in
|
|
15
|
+
/doctor. Local inspection is the default; selected live probes require consent.
|
|
16
|
+
- Compiled Node ESM SDK and TypeScript declarations, including supported subpath imports.
|
|
17
|
+
- Apache-2.0 for original project code, with retained upstream attribution and license texts.
|
|
18
|
+
|
|
19
|
+
## Installation and requirements
|
|
20
|
+
|
|
21
|
+
Use `npm install --global @xingular/harness@1.0.0`, then `xharness`. Node 22.19 or later is required.
|
|
22
|
+
The terminal additionally requires Bun; release CI uses Node 22.19.0 and Bun 1.4.2. Browser operation
|
|
23
|
+
requires an installed compatible browser or a deliberately configured endpoint. Model credentials
|
|
24
|
+
are configured inside an isolated Harness account.
|
|
25
|
+
|
|
26
|
+
## Migration
|
|
27
|
+
|
|
28
|
+
- SDK tree symbols/paths become variant symbols/paths: VariantChoice, seedVariant, variant/*.
|
|
29
|
+
- Server harnesses.* methods become variants.*. Session/context inputs use variant; variant
|
|
30
|
+
snapshots use variant and materialisation returns files. Old method aliases are not provided.
|
|
31
|
+
- Existing stored data is migrated without overwriting; historical run records remain readable.
|
|
32
|
+
- Versions numerically above 1.0.0 will not receive this release through higher-major semver ranges.
|
|
33
|
+
Install the exact version or latest tag deliberately.
|
|
34
|
+
|
|
35
|
+
## Diagnostics limitations
|
|
36
|
+
|
|
37
|
+
Local readiness is not live connectivity. Doctor never signs in, switches accounts or repairs
|
|
38
|
+
settings. Provider probes may incur charges. Computer input remains blocked when the embedding
|
|
39
|
+
host cannot provide an isolated diagnostic surface. Runtime execution and compiled artifacts are
|
|
40
|
+
validated independently from publication; see the release checklist for actual gate results.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Xingular Harness 1.1.1
|
|
2
|
+
|
|
3
|
+
The first published release of the 1.1 line, and npm `latest`. It follows the published 1.0.0
|
|
4
|
+
baseline. The 1.1.0 tag was pushed, but its release run stopped before publishing, so nothing was
|
|
5
|
+
published under 1.1.0.
|
|
6
|
+
|
|
7
|
+
## Agent profiles and named subagents
|
|
8
|
+
|
|
9
|
+
- A subagent can start from a named profile: the built-in `worker` and `explorer`, a person's
|
|
10
|
+
`<data root>/agents/<name>.md`, a repository's `.xingular/agents/<name>.md`, or a variant's c5
|
|
11
|
+
subagent. A profile narrows the child's tools and plugins and may choose its variant, model and
|
|
12
|
+
effort (PROP-0029, ADR-0030).
|
|
13
|
+
- The parent names each subagent. `spawn_subagent` requires a short `title`; `subagents.spawn`
|
|
14
|
+
takes an optional one (PROP-0030). The live roster, `/subagents` and the transcript show the
|
|
15
|
+
title.
|
|
16
|
+
- The terminal runs the checklist tool and shows each write as a checklist block. An in-progress
|
|
17
|
+
item shows a yellow dot, and a running subagent's row shows the working spinner in its profile's
|
|
18
|
+
colour.
|
|
19
|
+
|
|
20
|
+
## Release pipeline
|
|
21
|
+
|
|
22
|
+
- The release pack and smoke scripts take their npm cache from the system temp folder. They
|
|
23
|
+
previously used a macOS-only path, which failed on Linux runners.
|
|
24
|
+
- The `/help` terminal check matches the documented grouped, scrollable help: it pages until every
|
|
25
|
+
group is seen, and its expected group is `Plugins`.
|
|
26
|
+
|
|
27
|
+
Checks for this release: `npm run ci` (148 test files, 1111 tests), the exact-tarball fresh
|
|
28
|
+
installation smoke test including the packaged terminal, and the release preflight.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Xingular Harness 1.2.0
|
|
2
|
+
|
|
3
|
+
This release builds on the published 1.1.1 line.
|
|
4
|
+
|
|
5
|
+
## Compatibility note
|
|
6
|
+
|
|
7
|
+
The filesystem root cannot be used as an active workspace, because that would make the boundary
|
|
8
|
+
meaningless. The workspace boundary is intentionally stricter: model-controlled writes outside the active project,
|
|
9
|
+
including writes to temporary directories, require a one-call approval unless the eligible Full
|
|
10
|
+
Permission switch is explicitly enabled. Remembered per-tool grants do not cover them; unattended
|
|
11
|
+
runs cannot request approval. The Full Permission switch remains off by default. A workspace with
|
|
12
|
+
an external hard-link alias blocks default-scope Bash until the alias is removed or the file is
|
|
13
|
+
replaced with a copy. Native writes use atomic replacement and preserve ordinary file mode where
|
|
14
|
+
possible; ACLs and extended attributes are not guaranteed to survive replacement. On macOS, the
|
|
15
|
+
sandbox also blocks workspace-local hard-link creation.
|
|
16
|
+
|
|
17
|
+
## Workspace write boundary
|
|
18
|
+
|
|
19
|
+
Model-controlled file writes and Bash are scoped to the active project workspace by default. Native
|
|
20
|
+
write/edit operations revalidate the target and atomically replace the directory entry under an
|
|
21
|
+
OS-enforced write scope, so an in-workspace hard link does not modify an outside alias. Default Bash
|
|
22
|
+
scans for external hard links and runs in an OS sandbox that prevents cross-boundary hard-link
|
|
23
|
+
creation; unavailable or incomplete enforcement fails closed. Reads remain unchanged. Explicit
|
|
24
|
+
outside Bash writes require pre-execution one-call approval and run exactly once (`workspaceWriteScope:
|
|
25
|
+
'outside'`; in the terminal composer, `!outside <command>`). The approval shows the complete quoted
|
|
26
|
+
command in scrollable details; if the terminal is too small to show both details and choices, the
|
|
27
|
+
request is denied. Command output cannot trigger approval or automatic retry. Runs record their
|
|
28
|
+
resolved `workspaceRoot`; older run records remain readable.
|
|
29
|
+
Protection from a separate same-user process outside Harness is not provided.
|
|
30
|
+
|
|
31
|
+
## Planning and run continuity
|
|
32
|
+
|
|
33
|
+
Plan mode now requires evidence-grounded repository research and can delegate bounded read-only investigations to eligible research profiles. After compaction, active runs rehydrate the latest checklist and plan instructions. The terminal keeps the latest subagent status visible until its next run.
|
|
34
|
+
|
|
35
|
+
## Terminal commands and annotations
|
|
36
|
+
|
|
37
|
+
Plugin-owned terminal commands use `/<owner-prefix>:<command>`, while Harness-owned routes such as `/doctor`, `/worktree`, `/trajectory`, `/subagents`, and `/agents` are first-class core commands. Prior command forms remain hidden compatibility aliases for one release; migrate scripts and keybindings to the canonical names.
|
|
38
|
+
|
|
39
|
+
The annotation inspector now supports content in open shadow roots, including composed selections and targets. Closed shadow roots and frames remain unsupported, and existing document-only annotations retain their behavior.
|
|
40
|
+
|
|
41
|
+
## Terminal interaction
|
|
42
|
+
|
|
43
|
+
`/session` without a path now opens a searchable saved-session picker. Composer history includes user prompts, Bash commands and executed slash commands; browsing temporarily replaces the draft and restores its cursor, mode and attachments when it returns. Compact question docks now size each tab independently, keep nested sketches scrollable, and preserve page-footer hints at narrow widths.
|
|
44
|
+
|
|
45
|
+
## Performance evidence
|
|
46
|
+
|
|
47
|
+
Adds reproducible PTY and session-runtime profiling and publishes the [EXP-0003 report](../experiments/EXP-0003-performance-audit/results.md). That report is a 1.1.1 baseline captured from a dirty worktree, not a clean 1.2.0 benchmark; it also records a failed narrow-width `/settings` footer check and other measurement limits.
|
|
48
|
+
|
|
49
|
+
Node 22.19 or later is required. Building or running the standalone terminal also requires Bun 1.3.14 or later. See the project license and notices for third-party terms.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Xingular Harness 1.3.0
|
|
2
|
+
|
|
3
|
+
This minor release builds on 1.2.0 with clearer run progress, more reliable work-slice limits, bounded plan research, and distinct local-plugin and Community Hub experiences.
|
|
4
|
+
|
|
5
|
+
## Run progress and work slices
|
|
6
|
+
|
|
7
|
+
- `session_name` guidance names the session before the first tool call when a request needs tools or changes state. Multi-step work uses `todo_write`; the prompt and tool descriptions share the same concrete guidance.
|
|
8
|
+
- The run checklist is now a todo list: `todo_write`, `todo.updated`, `runs.todo`, the `todo` plugin and a terminal todo block. `/todo` displays the current list without a model request; `/checklist` remains an alias. Existing `checklist.updated` events are still read, and legacy pinned tools and server methods remain available as deprecated compatibility aliases for one release.
|
|
9
|
+
- Work slices default to 320 tool calls and 60 minutes, with no token cap unless configured. Stall detection recognizes meaningful progress, bounds repeated calls by name and arguments within each reply, and resets its counters between replies.
|
|
10
|
+
- Plan research can delegate only to named profiles whose effective tools and plugins qualify for read-only research. The active plan and latest todo list are restored after compaction.
|
|
11
|
+
|
|
12
|
+
## Plugins and Community Hub
|
|
13
|
+
|
|
14
|
+
- `/plugins` is a dedicated local plugin manager for installed packages, switching, trust, settings, install, update and removal. `/hub` is a separate Community catalog with Catalog and Installed views; Installed retains receipts from every channel and labels each channel.
|
|
15
|
+
- Hub shows cached or bundled catalog entries before refreshing remotely, and exposes origin, refresh time and stale/error status. Registry/document entries keep a bounded payload Preview; Pi packages have no payload Preview. Hub-owned packages remain pinned to receipt versions: removal is receipt-aware, and floating plugin updates cannot silently replace them.
|
|
16
|
+
- No catalog schema or storage migration is required; existing receipts, settings and trust remain intact. The broad `/harness` resource browser remains available.
|
|
17
|
+
|
|
18
|
+
## Terminal
|
|
19
|
+
|
|
20
|
+
- Skill completion and syntax highlighting distinguish enabled skill invocations, command names and arguments while retaining the existing composer workflow.
|
|
21
|
+
- Doctor's Bash readiness check now requires the platform write-boundary sandbox. Its live check runs one fixed, no-network command through the same workspace boundary as normal Bash, reports only the exit status, and stays subject to policy without being widened by Full Permission.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Xingular Harness 1.3.1-unstable.1
|
|
2
|
+
|
|
3
|
+
Unstable preview of the current Harness work. Install with `npm install @xingular/harness@unstable`.
|
|
4
|
+
|
|
5
|
+
- Import agent profiles from compatible plugins and continue stopped subagents across interruptions and restarts.
|
|
6
|
+
- Improve Windows shell, workspace write and edit support, with explicit per-call approval where an OS write-boundary sandbox is unavailable.
|
|
7
|
+
- Extend Doctor to check the active shell and exercise its workspace boundary with a fixed, no-network probe.
|
|
8
|
+
- Improve terminal subagent progress and plugin management, plus work-slice and plan-research behavior.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Xingular Harness 1.3.1-unstable.2
|
|
2
|
+
|
|
3
|
+
Unstable preview of the current Harness work. Install with `npm install @xingular/harness@unstable`.
|
|
4
|
+
|
|
5
|
+
- Swap the OpenTUI send keys back. `Return` sends, or steers a running reply, and `Cmd+Return`,
|
|
6
|
+
`Ctrl+Return` or `Alt+Return` queues a follow-up. The `app.message.followUp` action replaces
|
|
7
|
+
`app.message.steer`, so a `keybindings.json` entry under that name needs renaming.
|
|
8
|
+
- Show pending steering, follow-up and deferred plan/Bash inputs above the working line, each with
|
|
9
|
+
its delivery type. A queued plan or `!` command is a barrier: it runs as a standalone turn and
|
|
10
|
+
later inputs wait behind it instead of entering Pi's native queues.
|
|
11
|
+
- Restore queued text to the draft with `Alt+Up`. Queued images are dropped; deferred images warn.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Xingular Harness 1.3.1-unstable.3
|
|
2
|
+
|
|
3
|
+
Unstable preview of the current Harness work. Install with `npm install @xingular/harness@unstable`.
|
|
4
|
+
|
|
5
|
+
- Name a skill anywhere in a message: `$name` at any word start makes that skill required for the
|
|
6
|
+
request (ADR-0048). `Launch.requiredSkills` carries it, and the compiler renders a
|
|
7
|
+
`required-skills` section at order 52 from the pinned variant through `readSkillFile`, bounded at
|
|
8
|
+
12,000 characters. An unavailable skill is named honestly instead of invented, and the built-in
|
|
9
|
+
`plugin-authoring` skill stands in when the variant ships no skills. The section belongs to the
|
|
10
|
+
request, so an identical one is delivered again rather than deduplicated. The terminal builds the
|
|
11
|
+
same text with `requiredSkillsText` and appends it as a hidden `xingular-required-skills` message,
|
|
12
|
+
so the person's own wording reaches the model unchanged. In the composer the `$` palette opens at
|
|
13
|
+
the caret and inserts there, keeping the rest of the draft.
|
|
14
|
+
- Bound delegation per run and per profile (ADR-0052). A run now starts at most four distinct child
|
|
15
|
+
conversations: two `worker`, three `explorer`, one of any other named profile and one with no
|
|
16
|
+
profile. `SessionRunInput.subagents` / the SDK's `Subagents` options override them with
|
|
17
|
+
`maxChildren`, `maxByProfile`, `maxOther` and `maxUnprofiled` (clamped to 0–50), and the model's
|
|
18
|
+
`spawn_subagent` description states the budget it has left. `Subagents.spawn` refuses a child past
|
|
19
|
+
a limit with `invalid_request` and starts no run; continuing a stopped child costs no slot, and a
|
|
20
|
+
work-slice continuation keeps the parent's budget.
|
|
21
|
+
- Read what a request was made of. `context.attribution` returns one row per contributor with its
|
|
22
|
+
estimated tokens and share of the window, reconciled to the provider's measured total, and one
|
|
23
|
+
row's text on request; the terminal reaches it through `terminal.context`. The compiler now
|
|
24
|
+
records where its characters went: `renderSized` returns each section's size and the framing that
|
|
25
|
+
belongs to no section, `Delivery.sizes` stores them on the recorded pack, and `Source.chars`
|
|
26
|
+
attributes a variant's tool guidance inside the tools section. `context.snapshot` also records the
|
|
27
|
+
compaction headroom the run was held to (`compaction: { enabled, reserveTokens }`) from Pi's own
|
|
28
|
+
settings. The terminal page over this data arrives in a later preview; no `/context` command is
|
|
29
|
+
registered yet.
|
|
30
|
+
- Add an opt-in approved-window screenshot contract (ADR-0050). `src/computer/screenshot.ts` defines
|
|
31
|
+
`computer_screenshot` for a host-supplied backend: it captures exactly one currently approved
|
|
32
|
+
window, excludes the desktop, other windows and overlapping overlays, and refuses with
|
|
33
|
+
`COMPUTER_SCREENSHOT_UNAVAILABLE` rather than returning display pixels. It goes through the
|
|
34
|
+
ordinary tool gate, is not plan-mode safe, and adds no extension point. The standalone terminal
|
|
35
|
+
has no backend, and the existing macOS host capture has not adopted this contract.
|
|
36
|
+
- Deliver approvals and questions promptly without polling: the control-key-protected
|
|
37
|
+
`terminal.pending.wait` returns as soon as the pending revision changes and otherwise waits at most
|
|
38
|
+
20 s, waking on additions, removals and disposal (ADR-0051). `terminal.pending` is unchanged and
|
|
39
|
+
the server protocol is untouched.
|
|
40
|
+
- Swap the OpenTUI send keys back. `Return` sends, or queues a follow-up behind a running reply, and
|
|
41
|
+
`Cmd+Return`, `Ctrl+Return` or `Alt+Return` steers that reply. The `app.message.followUp` action is
|
|
42
|
+
`app.message.steer` again, so a `keybindings.json` entry under the newer name needs renaming.
|
|
43
|
+
- Keep a stray mouse report out of input. A report split across the input parser's timeout no longer
|
|
44
|
+
types its `<button;column;row>` tail into the composer or a single-line field, so a scroll cannot
|
|
45
|
+
become a run's prompt or a filter; typing and pastes are untouched and `/trajectory` no longer
|
|
46
|
+
prints a recorded report.
|
|
47
|
+
|
|
48
|
+
## Upgrading
|
|
49
|
+
|
|
50
|
+
- A leading `$name` is no longer rewritten to Pi's `/skill:name`. An embedding host sends required
|
|
51
|
+
skills as `Launch.requiredSkills`, and the message text reaches the model as written.
|
|
52
|
+
- Runs that spawned children freely now stop at the defaults above; set `subagents` explicitly to
|
|
53
|
+
change them.
|
|
54
|
+
- A `keybindings.json` entry named `app.message.followUp` is now `app.message.steer`.
|