@xingular/harness 0.1.7 → 1.1.1
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 +125 -1
- package/LICENSE +202 -0
- package/NOTICE.md +22 -0
- package/README.md +239 -86
- package/THIRD_PARTY_LICENSES.md +942 -0
- package/dist/cli.js +17853 -13114
- package/dist/sdk/accounts/accounts.d.ts +165 -0
- package/dist/sdk/accounts/accounts.js +730 -0
- package/dist/sdk/accounts/choices.d.ts +23 -0
- package/dist/sdk/accounts/choices.js +62 -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 +16 -0
- package/dist/sdk/accounts/secrets.js +40 -0
- package/dist/sdk/accounts/store.d.ts +114 -0
- package/dist/sdk/accounts/store.js +255 -0
- package/dist/sdk/agents/builtin.d.ts +2 -0
- package/dist/sdk/agents/builtin.js +34 -0
- package/dist/sdk/agents/narrow.d.ts +13 -0
- package/dist/sdk/agents/narrow.js +29 -0
- package/dist/sdk/agents/profiles.d.ts +80 -0
- package/dist/sdk/agents/profiles.js +221 -0
- package/dist/sdk/annotations/bridge.d.ts +42 -0
- package/dist/sdk/annotations/bridge.js +264 -0
- package/dist/sdk/annotations/capture.d.ts +116 -0
- package/dist/sdk/annotations/capture.js +308 -0
- package/dist/sdk/annotations/delivery.d.ts +72 -0
- package/dist/sdk/annotations/delivery.js +130 -0
- package/dist/sdk/annotations/inspect.d.ts +10 -0
- package/dist/sdk/annotations/inspect.js +33 -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 +570 -0
- package/dist/sdk/annotations/part.d.ts +10 -0
- package/dist/sdk/annotations/part.js +144 -0
- package/dist/sdk/annotations/queue.d.ts +4 -0
- package/dist/sdk/annotations/queue.js +40 -0
- package/dist/sdk/annotations/serverMethods.d.ts +3 -0
- package/dist/sdk/annotations/serverMethods.js +62 -0
- package/dist/sdk/annotations/store.d.ts +160 -0
- package/dist/sdk/annotations/store.js +386 -0
- package/dist/sdk/browser/config.d.ts +16 -0
- package/dist/sdk/browser/config.js +22 -0
- package/dist/sdk/browser/diagnostics.d.ts +4 -0
- package/dist/sdk/browser/diagnostics.js +38 -0
- package/dist/sdk/browser/index.d.ts +28 -0
- package/dist/sdk/browser/index.js +72 -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 +7 -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 +8 -0
- package/dist/sdk/browser/tools.js +329 -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 +47 -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 +150 -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/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 +187 -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/text.d.ts +7 -0
- package/dist/sdk/core/text.js +40 -0
- package/dist/sdk/doctor/checks.d.ts +5 -0
- package/dist/sdk/doctor/checks.js +208 -0
- package/dist/sdk/doctor/probe.d.ts +4 -0
- package/dist/sdk/doctor/probe.js +92 -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 +148 -0
- package/dist/sdk/harness.js +338 -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 +216 -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 +474 -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 +73 -0
- package/dist/sdk/index.js +55 -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/runtime.d.ts +13 -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 +163 -0
- package/dist/sdk/plugins/builtinRegistry.d.ts +53 -0
- package/dist/sdk/plugins/builtinRegistry.js +49 -0
- package/dist/sdk/plugins/catalogue.d.ts +29 -0
- package/dist/sdk/plugins/catalogue.js +196 -0
- package/dist/sdk/plugins/cli.d.ts +13 -0
- package/dist/sdk/plugins/cli.js +188 -0
- package/dist/sdk/plugins/discover.d.ts +42 -0
- package/dist/sdk/plugins/discover.js +115 -0
- package/dist/sdk/plugins/firstParty.d.ts +50 -0
- package/dist/sdk/plugins/firstParty.js +113 -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 +20 -0
- package/dist/sdk/plugins/install.js +110 -0
- package/dist/sdk/plugins/inventory.d.ts +22 -0
- package/dist/sdk/plugins/inventory.js +110 -0
- package/dist/sdk/plugins/manifest.d.ts +13 -0
- package/dist/sdk/plugins/manifest.js +56 -0
- package/dist/sdk/plugins/plugins.d.ts +104 -0
- package/dist/sdk/plugins/plugins.js +164 -0
- package/dist/sdk/plugins/runtime.d.ts +9 -0
- package/dist/sdk/plugins/runtime.js +95 -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 +159 -0
- package/dist/sdk/plugins/types.js +7 -0
- package/dist/sdk/prompt/compile.d.ts +177 -0
- package/dist/sdk/prompt/compile.js +413 -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 +51 -0
- package/dist/sdk/refine/host.js +76 -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 +45 -0
- package/dist/sdk/refine/prompts.js +390 -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 +81 -0
- package/dist/sdk/refine/runner.js +150 -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 +20 -0
- package/dist/sdk/refine/service.d.ts +84 -0
- package/dist/sdk/refine/service.js +165 -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 +68 -0
- package/dist/sdk/refine/types.d.ts +77 -0
- package/dist/sdk/refine/types.js +10 -0
- package/dist/sdk/server/methods.d.ts +3 -0
- package/dist/sdk/server/methods.js +293 -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 +84 -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 +10 -0
- package/dist/sdk/server/serve.js +18 -0
- package/dist/sdk/sessions/approvals.d.ts +47 -0
- package/dist/sdk/sessions/approvals.js +119 -0
- package/dist/sdk/sessions/continuation.d.ts +48 -0
- package/dist/sdk/sessions/continuation.js +85 -0
- package/dist/sdk/sessions/contracts.d.ts +551 -0
- package/dist/sdk/sessions/contracts.js +338 -0
- package/dist/sdk/sessions/extensionUi.d.ts +19 -0
- package/dist/sdk/sessions/extensionUi.js +64 -0
- package/dist/sdk/sessions/history.d.ts +16 -0
- package/dist/sdk/sessions/history.js +68 -0
- package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
- package/dist/sdk/sessions/lineageJoin.js +61 -0
- package/dist/sdk/sessions/planMode.d.ts +39 -0
- package/dist/sdk/sessions/planMode.js +93 -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 +103 -0
- package/dist/sdk/sessions/registry.js +386 -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 +66 -0
- package/dist/sdk/sessions/runStore.js +337 -0
- package/dist/sdk/sessions/runner.d.ts +213 -0
- package/dist/sdk/sessions/runner.js +589 -0
- package/dist/sdk/sessions/sessions.d.ts +152 -0
- package/dist/sdk/sessions/sessions.js +461 -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/subagentServerMethods.d.ts +3 -0
- package/dist/sdk/sessions/subagentServerMethods.js +41 -0
- package/dist/sdk/sessions/subagentService.d.ts +52 -0
- package/dist/sdk/sessions/subagentService.js +265 -0
- package/dist/sdk/sessions/subagents.d.ts +58 -0
- package/dist/sdk/sessions/subagents.js +87 -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 +186 -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 +15 -0
- package/dist/sdk/terminal/client.js +126 -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 +78 -0
- package/dist/sdk/terminal/controller.js +383 -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/logs.d.ts +14 -0
- package/dist/sdk/terminal/logs.js +59 -0
- package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +28 -0
- package/dist/sdk/terminal/opentui/subagentsWidget.js +52 -0
- package/dist/sdk/terminal/piExtension.d.ts +6 -0
- package/dist/sdk/terminal/piExtension.js +377 -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 +20 -0
- package/dist/sdk/terminal/standalone.js +186 -0
- package/dist/sdk/terminal/subagentMonitor.d.ts +38 -0
- package/dist/sdk/terminal/subagentMonitor.js +121 -0
- package/dist/sdk/terminal/terminals.d.ts +212 -0
- package/dist/sdk/terminal/terminals.js +1108 -0
- package/dist/sdk/terminal/trajectory.d.ts +10 -0
- package/dist/sdk/terminal/trajectory.js +30 -0
- package/dist/sdk/terminal/tui/annotateCommand.d.ts +3 -0
- package/dist/sdk/terminal/tui/annotateCommand.js +22 -0
- package/dist/sdk/terminal/tui/chrome.d.ts +64 -0
- package/dist/sdk/terminal/tui/chrome.js +169 -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 +11 -0
- package/dist/sdk/terminal/tui/commandPages.js +111 -0
- package/dist/sdk/terminal/tui/commands.d.ts +46 -0
- package/dist/sdk/terminal/tui/commands.js +399 -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 +80 -0
- package/dist/sdk/terminal/tui/dialogs.js +370 -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 +73 -0
- package/dist/sdk/terminal/tui/list.js +196 -0
- package/dist/sdk/terminal/tui/modeChoices.d.ts +42 -0
- package/dist/sdk/terminal/tui/modeChoices.js +70 -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/page.d.ts +17 -0
- package/dist/sdk/terminal/tui/page.js +1 -0
- package/dist/sdk/terminal/tui/pageOverlay.d.ts +27 -0
- package/dist/sdk/terminal/tui/pageOverlay.js +156 -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 +190 -0
- package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +94 -0
- package/dist/sdk/terminal/tui/pages/annotatePage.js +341 -0
- package/dist/sdk/terminal/tui/pages/browserPage.d.ts +87 -0
- package/dist/sdk/terminal/tui/pages/browserPage.js +738 -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/doctorPage.d.ts +39 -0
- package/dist/sdk/terminal/tui/pages/doctorPage.js +233 -0
- package/dist/sdk/terminal/tui/pages/hubPage.d.ts +39 -0
- package/dist/sdk/terminal/tui/pages/hubPage.js +128 -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/notesPage.d.ts +75 -0
- package/dist/sdk/terminal/tui/pages/notesPage.js +201 -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 +57 -0
- package/dist/sdk/terminal/tui/pages/pluginsPage.js +243 -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 +23 -0
- package/dist/sdk/terminal/tui/pages/subagentsPage.js +70 -0
- package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +65 -0
- package/dist/sdk/terminal/tui/pages/trajectoryPage.js +450 -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 +18 -0
- package/dist/sdk/terminal/tui/piAdapter.js +48 -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 +14 -0
- package/dist/sdk/terminal/tui/pluginCommands.js +27 -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 +114 -0
- package/dist/sdk/terminal/tui/runtime.js +443 -0
- package/dist/sdk/terminal/tui/search.d.ts +22 -0
- package/dist/sdk/terminal/tui/search.js +60 -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/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 +114 -0
- package/dist/sdk/terminal/tui/sideQuestion.d.ts +53 -0
- package/dist/sdk/terminal/tui/sideQuestion.js +230 -0
- package/dist/sdk/terminal/tui/skillInvocation.d.ts +9 -0
- package/dist/sdk/terminal/tui/skillInvocation.js +43 -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 +45 -0
- package/dist/sdk/terminal/tui/theme.js +176 -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/workingStatus.d.ts +9 -0
- package/dist/sdk/terminal/tui/workingStatus.js +229 -0
- package/dist/sdk/tools/askUser.d.ts +6 -0
- package/dist/sdk/tools/askUser.js +92 -0
- package/dist/sdk/tools/checklist.d.ts +9 -0
- package/dist/sdk/tools/checklist.js +54 -0
- package/dist/sdk/tools/definitions.d.ts +30 -0
- package/dist/sdk/tools/definitions.js +117 -0
- package/dist/sdk/tools/dispatch.d.ts +16 -0
- package/dist/sdk/tools/dispatch.js +67 -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 +7 -0
- package/dist/sdk/tools/sessionName.js +31 -0
- package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
- package/dist/sdk/tools/spawnSubagent.js +58 -0
- package/dist/sdk/tools/types.d.ts +48 -0
- package/dist/sdk/tools/types.js +1 -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 +82 -0
- package/dist/sdk/variant/store.js +151 -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 +16 -0
- package/dist/sdk/worktrees/git.js +81 -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/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 +67 -0
- package/dist/sdk/world/world.js +79 -0
- package/dist/terminal-opentui.js +20778 -0
- package/dist/terminal-pi.js +794 -518
- package/docs/README.md +42 -0
- 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 +203 -0
- package/docs/architecture/03-variants.md +103 -0
- package/docs/architecture/04-prompt.md +122 -0
- package/docs/architecture/05-refinement.md +107 -0
- package/docs/architecture/06-plugins-and-capabilities.md +129 -0
- package/docs/architecture/07-tools-and-gate.md +103 -0
- package/docs/architecture/08-memory-and-history.md +94 -0
- package/docs/architecture/09-accounts-and-connectors.md +98 -0
- package/docs/architecture/10-server-protocol.md +193 -0
- package/docs/architecture/11-terminal.md +261 -0
- package/docs/architecture/12-storage.md +75 -0
- package/docs/architecture/13-world-tools.md +45 -0
- package/docs/architecture/14-surfaces-and-parity.md +89 -0
- package/docs/architecture/README.md +125 -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 +70 -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 +127 -0
- package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +179 -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 +94 -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/README.md +101 -0
- package/docs/decisions/ADR-0002-native-subagent-lifecycle.md +49 -0
- package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +70 -0
- package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +50 -0
- package/docs/decisions/ADR-0005-app-provided-oauth-clients.md +54 -0
- 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 +38 -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 +60 -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/doctor.md +80 -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/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/parity.md +78 -0
- package/docs/releases/1.0.0.md +40 -0
- package/docs/releases/4.0.0.md +46 -0
- package/docs/releases/README.md +41 -0
- package/docs/study/00-index.md +83 -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 +75 -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 +44 -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 +707 -58
- package/package.json +43 -13
- package/docs/evidence/terminal-2026-10-17/120x40-completed-transcript.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/40x20-settings-interaction.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/40x20-settings-keyboard.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/40x20-welcome.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/verification.json +0 -130
- package/docs/evidence/terminal-2026-10-17-followup/120x40-completed-transcript.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-interaction.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-keyboard.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/40x20-welcome.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-plugin-light.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-question-batch.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-plugin-light.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question-batch.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/verification.json +0 -95
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-plugin-light.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question-batch.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/README.md +0 -27
- package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command-80x24.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command.json +0 -18
- package/docs/evidence/terminal-2026-10-17-followup/global-install/verification.json +0 -95
- package/docs/evidence/terminal-2026-10-17-followup/harness-reference-80x24.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/harness-reference-final-80x24.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/harness-reference-scenario.json +0 -60
- package/docs/evidence/terminal-2026-10-17-followup/live-codex/README.md +0 -24
- package/docs/evidence/terminal-2026-10-17-followup/live-codex/complete-80x24.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/live-codex/verification.json +0 -57
- package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24-early.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/omp-reference-scenario.json +0 -58
- package/docs/evidence/terminal-2026-10-17-followup/omp-supplemental-static.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/rea-artifacts.json +0 -320
- package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.json +0 -30
- package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.md +0 -133
- package/docs/evidence/terminal-2026-10-17-followup/reference-source-observations.json +0 -20
- package/docs/evidence/terminal-2026-10-17-followup/verification.json +0 -207
- package/src/accounts/accounts.test.ts +0 -333
- package/src/accounts/accounts.ts +0 -658
- 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.ts +0 -34
- 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 -312
- 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 -75
- package/src/mcp/connections.ts +0 -614
- 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 -376
- package/src/mcp/service.ts +0 -549
- package/src/mcp/types.ts +0 -108
- 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 -163
- package/src/memory/curation.ts +0 -64
- package/src/memory/dispatch.ts +0 -59
- 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 -176
- package/src/memory/maintenance.ts +0 -518
- 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 -278
- 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/wiki.test.ts +0 -47
- package/src/memory/wiki.ts +0 -422
- package/src/memory/wikiIndex.test.ts +0 -88
- package/src/memory/wikiIndex.ts +0 -116
- 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 -82
- 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 -349
- 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 -174
- package/src/sessions/approvals.ts +0 -118
- package/src/sessions/contracts.ts +0 -336
- package/src/sessions/conversation.test.ts +0 -177
- 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 -381
- package/src/sessions/runIndex.ts +0 -99
- package/src/sessions/runStore.test.ts +0 -152
- package/src/sessions/runStore.ts +0 -332
- package/src/sessions/runner.ts +0 -604
- package/src/sessions/runtimeResources.test.ts +0 -61
- package/src/sessions/sessions.test.ts +0 -549
- package/src/sessions/sessions.ts +0 -339
- 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 -291
- 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 -259
- package/src/terminal/pluginControl.test.ts +0 -146
- package/src/terminal/pluginMenu.ts +0 -112
- package/src/terminal/socket.test.ts +0 -71
- package/src/terminal/socket.ts +0 -232
- package/src/terminal/standalone.test.ts +0 -167
- package/src/terminal/standalone.ts +0 -153
- package/src/terminal/terminal.test.ts +0 -399
- package/src/terminal/terminals.ts +0 -553
- package/src/terminal/tui/application.test.ts +0 -114
- package/src/terminal/tui/application.ts +0 -491
- package/src/terminal/tui/commands.test.ts +0 -218
- package/src/terminal/tui/commands.ts +0 -361
- package/src/terminal/tui/dialogs.ts +0 -301
- package/src/terminal/tui/editor.test.ts +0 -84
- package/src/terminal/tui/editor.ts +0 -79
- package/src/terminal/tui/keybindings.test.ts +0 -22
- package/src/terminal/tui/keybindings.ts +0 -50
- package/src/terminal/tui/piAdapter.ts +0 -62
- 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 -104
- package/src/terminal/tui/runtime.test.ts +0 -215
- package/src/terminal/tui/runtime.ts +0 -388
- 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/status.test.ts +0 -70
- package/src/terminal/tui/status.ts +0 -109
- package/src/terminal/tui/theme.ts +0 -174
- package/src/terminal/tui/tools.test.ts +0 -145
- package/src/terminal/tui/tools.ts +0 -142
- package/src/terminal/tui/transcript.test.ts +0 -25
- package/src/terminal/tui/transcript.ts +0 -124
- 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/tools/askUser.test.ts +0 -69
- package/src/tools/askUser.ts +0 -59
- package/src/tools/definitions.ts +0 -187
- package/src/tools/maintenance.ts +0 -24
- 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 -92
- package/src/tools/types.ts +0 -39
- 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
package/README.md
CHANGED
|
@@ -1,30 +1,63 @@
|
|
|
1
1
|
# Xingular Harness
|
|
2
2
|
|
|
3
|
-
A Pi agent harness
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
A Pi agent harness built on **recursive harnessing** ([Harness²](https://arxiv.org/abs/2610.14224),
|
|
4
|
+
Apache-2.0, Google LLC), as one TypeScript package (`@xingular/harness`). It lets a running host
|
|
5
|
+
improve the harness itself, with model weights fixed. To say that precisely, the harness has two
|
|
6
|
+
halves:
|
|
7
|
+
|
|
8
|
+
- **The foundation is fixed.** Pi sessions, the prompt compiler, the run recorder, the tool gate,
|
|
9
|
+
accounts, plugin-code trust, the refinement method and the extension points. Only a release
|
|
10
|
+
changes it.
|
|
11
|
+
- **A Harness Variant (HV) mutates.** It is what a model is told and can load: eight components
|
|
12
|
+
(c1–c8) for one scope. Each scope has versioned, validated HVs; a run pins one version, and
|
|
13
|
+
refinement proposes a better HV that a person adopts.
|
|
14
|
+
|
|
15
|
+
*The foundation runs a variant, records how it went, and lets refinement propose a better
|
|
16
|
+
variant; only a person adopts one.* Refinement edits a copy of a variant and never the
|
|
17
|
+
foundation. See [Foundation and variants](docs/architecture/00-overview.md#foundation-and-variants).
|
|
18
|
+
|
|
19
|
+
Recursive refinement proposes HV improvements from run evidence. A person adopts candidates;
|
|
20
|
+
model weights and the foundation stay fixed. See the [Google Harness² feature guide](docs/features/google-harness2/README.md)
|
|
21
|
+
for the method and HV components.
|
|
22
|
+
|
|
23
|
+
| Area | Main features | Guide |
|
|
7
24
|
|---|---|---|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
| Memory |
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
The [documentation index](docs/README.md) links current terminal architecture and decisions.
|
|
25
|
+
| Core runtime | Accounts, sessions and runs, prompt compilation, tool governance | [Cores](docs/features/cores/README.md) |
|
|
26
|
+
| Harness² | HVs, recursive refinement, answer-free selection, experience library | [Google Harness²](docs/features/google-harness2/README.md) |
|
|
27
|
+
| Automations | Subagents, recovery, optional run reflections, plugin hooks | [Automations](docs/features/automations/README.md) |
|
|
28
|
+
| Memory | Wiki notes, run recall, trajectory search and reads | [Memory](docs/features/memory/README.md) |
|
|
29
|
+
| Integrations | Application extension points, plugins, connected apps and Hub | [Integrations](docs/features/integrations/README.md) |
|
|
30
|
+
| Interfaces | Node embedding, standalone terminal and JSON-lines server | [Interfaces](docs/features/interfaces/README.md) |
|
|
31
|
+
|
|
32
|
+
The binding design of every part is the [architecture specification](docs/architecture/README.md).
|
|
33
|
+
|
|
34
|
+
Try refinement with no model and no credentials: `npm run build && node dist/cli.js refine demo --k 2`.
|
|
35
|
+
The [feature guide](docs/features/README.md) groups capabilities by area; the [documentation
|
|
36
|
+
index](docs/README.md) links the architecture and other project records.
|
|
21
37
|
|
|
22
38
|
### Session options for applications
|
|
23
39
|
|
|
24
|
-
- `subagents: { maxDepth }`
|
|
40
|
+
- Interactive sessions offer `spawn_subagent` and `wait_subagents` by default. `subagents: null` disables them; `{ maxDepth }` configures native nesting (default one, maximum three), independently of the host caller depth. Unattended sessions remain disabled unless the host explicitly supplies subagent options. A frozen capability set can narrow these tools further.
|
|
41
|
+
- `harness.subagents.spawn({ parentRunId, brief, agent?, tools?, wait? })` opens a fresh child of the same caller with no wider capabilities. `agent` names an agent profile (below). It returns `{ runId, nativeSessionId, agent?, unavailableTools? }` once open; `wait: true` also waits for settlement. `harness.subagents.wait({ parentRunId, runIds? })` joins selected direct children, or the current children when omitted, and returns their outcomes. `results` reads the same bounded outcome records without waiting. RPC exposes `subagents.spawn`, `subagents.wait`, and `subagents.results`; `sessions.spawnSubagent` remains a compatibility alias.
|
|
42
|
+
- **Agent profiles** (PROP-0029) are what a subagent starts from: the built-in `worker` (reads, edits, writes, runs commands) and `explorer` (reads only), a person's own `<data root>/agents/<name>.md`, a repository's `<project>/.xingular/agents/<name>.md`, and the variant's c5 subagents, later ones winning. A profile is Markdown with frontmatter (`description`, `color`, `tools`, `plugins`, `variant`, `model`, `effort`) and its body is the role. It only narrows the parent's tools and plugins. `listProfiles`, `resolveProfile`, `createProfile` and `removeProfile` (RPC `agents.list|get|create|remove`) read and write them, and the child's `RunRecord.profile` names the one it used.
|
|
43
|
+
- The model's `spawn_subagent` returns immediately by default; `wait: true` returns an inline result. `wait_subagents` joins selected children. The SDK and standalone terminal share this execution service. Terminal calls use its private control channel, including when connected apps are disabled.
|
|
44
|
+
- Parents receive results at native turn boundaries and join outstanding children before completing. Typed native-history receipts prevent duplicate automatic delivery; explicit waits can reread results. Ownership is recorded before startup so an explicit resume can recover even a lost spawn return. Startup reservations without a run become interrupted outcomes. A restarted Harness never restarts model work automatically. Recovery requires the same recorded account, caller, working folder, and selected history branch. Session IDs are opaque; consumers follow `parentRunId` and `relation`.
|
|
25
45
|
- `providers: false` runs a session with the harness's own tools only.
|
|
26
|
-
-
|
|
27
|
-
-
|
|
46
|
+
- `variant: { scope }` runs the session on that scope's head variant (or `{ scope, version }`, or `{ dir }` for a variant on disk). The version is pinned for the run and recorded on it.
|
|
47
|
+
- On the caller, `recallExcludeAgents` hides those agents' conversations from history and trajectory tools.
|
|
48
|
+
- `harnessTools: false` runs a session without the History, Wiki and skill tools (and without `ask_user` and `checklist_write`).
|
|
49
|
+
- Every session with harness tools gets `checklist_write`: the model sends its whole checklist (`pending`, `in_progress`, `completed`, at most 50 steps) and the run records it as a `checklist.updated` event. `checklistOf(events)` or the `runs.checklist` method reads the latest one. Plan mode allows it.
|
|
50
|
+
- `continueFrom: <run id>` continues a run that stopped before it finished (interrupted or failed) as a new run. `harness.recovery.interruptedRunIds` lists the runs `open` marked interrupted, and `continuationOf(root, runId, sessionDir)` (`runs.continuation`) says whether one can be continued and what it left: checklist, unanswered approvals and questions, the last tool and whether it finished, unfinished subagents. The new run reopens the same native history, records `resumedFromRunId`, keeps the account, variant version and capability set (`continuation_mismatch` otherwise), and the model is told where the earlier run stopped. The harness never continues a run by itself; which runs to continue, and when, is the application's choice.
|
|
51
|
+
- The first-party `lessons` plugin (off by default) reflects on a completed top-level run with enough tool calls and may keep one general lesson in the Wiki under `library/lessons/`, in refinement's cue/lesson shape. It uses the run's own account and model, read-only file tools, and is capped (`minToolCalls`, `maxLessons`, `maxChars`). See PROP-0008.
|
|
52
|
+
|
|
53
|
+
Every session also gets `trajectory_search` and `trajectory_read` from the built-in History plugin.
|
|
54
|
+
Search lists runs in the current data root, including active runs, with filters and a continuation
|
|
55
|
+
cursor. Read returns pages of the canonical execution events, including captured prompt/context,
|
|
56
|
+
tool, decision, retry, compaction, and usage evidence. Active runs show the latest events saved so
|
|
57
|
+
far; settled reads stop at the first outcome. Payloads are bounded and marked when truncated, and
|
|
58
|
+
the tools omit account identifiers, credential fields, attachment bytes, native adapter payloads,
|
|
59
|
+
and provider reasoning text or summaries.
|
|
60
|
+
They report recorded evidence without scoring runs, and do not backfill older records.
|
|
28
61
|
|
|
29
62
|
## Using it from Node
|
|
30
63
|
|
|
@@ -32,16 +65,19 @@ The [documentation index](docs/README.md) links current terminal architecture an
|
|
|
32
65
|
import { createHarness } from '@xingular/harness'
|
|
33
66
|
|
|
34
67
|
const harness = createHarness({
|
|
35
|
-
dataRoot: '/path/to/data', //
|
|
68
|
+
dataRoot: '/path/to/data', // variants/, library/, refine/, wiki/, registry/, runs/, index.sqlite
|
|
36
69
|
stateDir: '/path/to/state', // device-local: accounts, approvals, connections, sockets
|
|
37
|
-
productName: 'My App', // how the harness names itself to a model (default 'Xingular
|
|
70
|
+
productName: 'My App', // how the harness names itself to a model (default 'Xingular Agent')
|
|
38
71
|
secrets, // SecretStore; defaults to an owner-only file in stateDir
|
|
39
72
|
policy, // ToolPolicy: what a run may do, and what needs a person
|
|
40
73
|
directory, // names for the ids the application uses
|
|
41
74
|
builtins: ['/path/to/builtin'], // folders of built-in skills, prompts, and rules
|
|
42
|
-
plugins: [myPlugin]
|
|
75
|
+
plugins: [myPlugin], // the application's own parts, described as plugins
|
|
76
|
+
refineHost // where refinement executions work, as whom, with which tools
|
|
43
77
|
})
|
|
44
78
|
|
|
79
|
+
harness.refine.start({ task: { id, scope: 'agent-1', prompt }, k: 1, mode: 'parallel' })
|
|
80
|
+
|
|
45
81
|
harness.sessions.provide((session) => myTools(session)) // the application's own tools
|
|
46
82
|
harness.runs.listen((event, run) => show(event)) // every run event, after it is saved
|
|
47
83
|
|
|
@@ -49,6 +85,7 @@ await harness.sessions.run({
|
|
|
49
85
|
run: { id, sessionId },
|
|
50
86
|
cwd, sessionDir, text,
|
|
51
87
|
caller: { agentId, agentName, actor: 'Chat' },
|
|
88
|
+
variant: { scope: 'agent-1' },
|
|
52
89
|
launch: { sections: [{ id: 'identity', title: 'Identity', body, budget: 2000, order: 10 }] },
|
|
53
90
|
tools: { allow: ['read', 'bash', 'my_tool'], gated: ['bash'] }
|
|
54
91
|
})
|
|
@@ -56,14 +93,14 @@ await harness.sessions.run({
|
|
|
56
93
|
|
|
57
94
|
## How an application extends it
|
|
58
95
|
|
|
59
|
-
The harness knows a caller
|
|
60
|
-
An application adds what it knows through
|
|
96
|
+
The harness knows a caller and a harness scope (opaque ids), never an agent, a group, or a task.
|
|
97
|
+
An application adds what it knows through seven points:
|
|
61
98
|
|
|
62
99
|
1. **Prompt sections** (`Launch.sections`, `Launch.toolGroups`, `Launch.references`). Each
|
|
63
|
-
section has an `order` and may be `dynamic`. The harness adds its own (`
|
|
64
|
-
`
|
|
65
|
-
|
|
66
|
-
updates.
|
|
100
|
+
section has an `order` and may be `dynamic`. The harness adds its own (`system` 25,
|
|
101
|
+
`guardrails` 40, `memory` 45, `references` 50, `subagents` 64, `scripts` 66, `wiki` 80,
|
|
102
|
+
`tools` 90), applies budgets, keeps stable sections in the system prompt, and sends dynamic
|
|
103
|
+
ones as updates.
|
|
67
104
|
2. **Tool providers** (`harness.sessions.provide`). A provider returns `ToolSpec`s for a session;
|
|
68
105
|
only the names in the session's `allow` list are registered, in that order.
|
|
69
106
|
A tool may return `attachments` as `{ id, name, mimeType }` references. The harness records
|
|
@@ -72,9 +109,6 @@ An application adds what it knows through six points:
|
|
|
72
109
|
The harness provides the web tools itself: `webTools({ secrets })` gives `web_search` (Brave Search,
|
|
73
110
|
key read from the secret store) and `web_fetch` (checked reads of public pages). An application
|
|
74
111
|
passes it to `harness.sessions.provide` and switches the names on for each agent.
|
|
75
|
-
`registryTools({ harness })` gives `registry_write` (a skill, rule, or prompt) and `plugin_write`
|
|
76
|
-
(a plugin). Each writes for the calling agent only: the item is on for that agent, and a plugin's
|
|
77
|
-
code is trusted once written. An item others already use goes to the Inbox instead.
|
|
78
112
|
3. **`ToolPolicy`**. `scope` says whether a call is inside what the run may do (or needs one
|
|
79
113
|
approval). A decision with `humanOnly` is for a person alone: the always-approve switch and
|
|
80
114
|
remembered answers do not apply to it. `authorize` says whether the tool is still switched on;
|
|
@@ -87,6 +121,11 @@ An application adds what it knows through six points:
|
|
|
87
121
|
the application and says which tools, prompt sections and tool groups it provides. It is data:
|
|
88
122
|
it changes what `plugins.list` and `plugins.inventory` report, never what runs. `WEB_PLUGIN`
|
|
89
123
|
describes the web tools. A host that is not a Node program sends them with `plugins.describe`.
|
|
124
|
+
7. **`RefineHost`** (`HarnessOptions.refineHost`). Where a refinement execution works
|
|
125
|
+
(`prepareWorkspace`: an isolated folder, such as a git worktree), as whom and with which tools
|
|
126
|
+
(`session`), and what it produced (`deliverable`). Executions run as unattended runs with
|
|
127
|
+
trigger `probe`, so a `ToolPolicy` can refuse anything with effects outside that folder;
|
|
128
|
+
improver sessions run with trigger `improver`, file tools only, on a copy of the evidence.
|
|
90
129
|
|
|
91
130
|
`apps.expose(...)` additionally offers the application's tools through the connected-apps
|
|
92
131
|
broker (`mcp_list_tools`, `mcp_call_tool`), which is how a terminal session reaches them.
|
|
@@ -95,7 +134,7 @@ broker (`mcp_list_tools`, `mcp_call_tool`), which is how a terminal session reac
|
|
|
95
134
|
|
|
96
135
|
A plugin is a bundle with a title, a description and contributions: instructions, skills,
|
|
97
136
|
commands, tools, connections, code (a Pi extension) and themes. A Pi package is a plugin as it
|
|
98
|
-
is; so are the harness's own parts (
|
|
137
|
+
is; so are the harness's own parts (Harness, Wiki, History, Subagents, Ask the user, Connected apps, Pi), the
|
|
99
138
|
application's, a person's registry ("Yours"), the folder every account shares, and what a
|
|
100
139
|
working folder brings.
|
|
101
140
|
|
|
@@ -129,11 +168,10 @@ working folder brings.
|
|
|
129
168
|
input does so before the gate sees it. Every resource reload revalidates the parent's original
|
|
130
169
|
trusted selection; changed or revoked code requires review and a fresh terminal.
|
|
131
170
|
- **A required part can be extended.** A package names the part it adds to and, optionally, a
|
|
132
|
-
hooks file: `"harness": { "extends": ["
|
|
133
|
-
hooks itself (`src/plugins/hooks.ts`), in its own process, because
|
|
134
|
-
no session is open. `export default function (harness) { harness.on('
|
|
135
|
-
(event, ctx) => …) }`; the events are `
|
|
136
|
-
`wiki.page.saved` and `history.run.ended`. A hook is told after the write and cannot stop it,
|
|
171
|
+
hooks file: `"harness": { "extends": ["wiki"], "hooks": "./hooks.mjs" }`. The harness runs
|
|
172
|
+
hooks itself (`src/plugins/hooks.ts`), in its own process, because notes are often written while
|
|
173
|
+
no session is open. `export default function (harness) { harness.on('wiki.page.saved', async
|
|
174
|
+
(event, ctx) => …) }`; the events are `wiki.page.saved` and `history.run.ended`. A hook is told after the write and cannot stop it,
|
|
137
175
|
has 30 seconds, and what it throws is kept in `plugin-hooks.json` and shown on its plugin. It
|
|
138
176
|
runs only while its plugin is switched on for everyone and trusted; what is loaded is checked
|
|
139
177
|
against that before each delivery. `ctx.call(connection, tool, args)` reaches a connected app
|
|
@@ -157,10 +195,11 @@ working folder brings.
|
|
|
157
195
|
terminal process claims once (`control.claim`) and shares with its bridge in memory; the socket's
|
|
158
196
|
`plugins.list` is open to the session, and `plugins.attach`, `plugins.detach`, `plugins.trust`
|
|
159
197
|
and `plugins.untrust` refuse without that key. A change applies when the session restarts.
|
|
160
|
-
Outside a session, `
|
|
198
|
+
Outside a session, `xagent plugins list | show | install | remove | update | attach |
|
|
161
199
|
detach | trust | untrust` acts directly, as the person who typed it; `trust` shows the files
|
|
162
200
|
and wants a typed yes or `--yes`. It does not open the data root, so it settles no run.
|
|
163
|
-
- **Unattended runs
|
|
201
|
+
- **Unattended runs load no extension found on disk.** A variant's own trusted plugins still
|
|
202
|
+
load, so a refinement probe runs the plugin it is testing.
|
|
164
203
|
- **A person switches things on and off for a scope.** `plugins.attach` and `plugins.detach`
|
|
165
204
|
take a plugin's or a contribution's `id` and a `scope` (`{}` for everywhere, `{ agentId }`, or
|
|
166
205
|
`{ projectId }`). The narrowest scope that says something wins: an agent, then a project, then
|
|
@@ -204,7 +243,8 @@ table. With the `--host-*` flags the harness calls the host for `secrets.get|set
|
|
|
204
243
|
`policy.scope|authorize|approval|connections`, and `tools.call`; the host registers its tools
|
|
205
244
|
with `tools.register` and its names with `directory.set`.
|
|
206
245
|
|
|
207
|
-
`
|
|
246
|
+
`variants.importComponents` adds complete skill folders, or single-file rules and prompts, to the
|
|
247
|
+
component library:
|
|
208
248
|
|
|
209
249
|
```ts
|
|
210
250
|
{ skills: [{ name, files: [{ path, content, encoding }] }] }
|
|
@@ -215,7 +255,8 @@ It validates bounded relative paths and file encodings, requires a root
|
|
|
215
255
|
has no knowledge of the application feature that may call it.
|
|
216
256
|
|
|
217
257
|
`npm run prove` starts that server on a throwaway data root, with no application present, and
|
|
218
|
-
exercises accounts,
|
|
258
|
+
exercises accounts, variants, the Wiki, the prompt, connected apps, a recorded session, a
|
|
259
|
+
plugin hook, and the refinement demo end to end.
|
|
219
260
|
|
|
220
261
|
## Run it as a standalone Harness terminal
|
|
221
262
|
|
|
@@ -223,13 +264,12 @@ After the CLI package is published to npm or your company's npm registry, instal
|
|
|
223
264
|
|
|
224
265
|
```sh
|
|
225
266
|
npm install --global @xingular/harness
|
|
226
|
-
|
|
267
|
+
xagent
|
|
227
268
|
```
|
|
228
269
|
|
|
229
|
-
The machine needs Node 22.19 or newer. Harness runs its own
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
`/accounts` or `/login` to sign in.
|
|
270
|
+
The machine needs Node 22.19 or newer and Bun 1.3.14 or newer. Harness runs its own OpenTUI
|
|
271
|
+
terminal frontend with Bun, using its pinned Pi SDK; no separate global `pi` installation is
|
|
272
|
+
required. On first launch, it creates a `Default` isolated account. Use `/accounts` to sign in.
|
|
233
273
|
|
|
234
274
|
Provider sign-in progress lives in the running Harness process. An embedding application can call
|
|
235
275
|
`accounts.loginStatus` after reconnecting to recover the current device code or prompt by account;
|
|
@@ -244,30 +284,95 @@ npm run dev
|
|
|
244
284
|
```
|
|
245
285
|
|
|
246
286
|
`npm run dev` rebuilds the CLI and opens the Harness terminal in the current working directory.
|
|
247
|
-
It uses
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
287
|
+
It uses separate development directories by default: `~/.xingular-harness-dev/data` and
|
|
288
|
+
`~/.xingular-harness-dev/state`. This keeps development harness data and device settings—including
|
|
289
|
+
accounts, Pi settings, approvals, and connections—separate from the installed command. Press
|
|
290
|
+
`/quit`, Ctrl+C or Ctrl+D to close it. Override either directory with `--data <dir>` or
|
|
291
|
+
`--state <dir>`; for example: `npm run dev -- --data <dir> --state <dir>`. An omitted option keeps
|
|
292
|
+
its development specific default.
|
|
293
|
+
|
|
294
|
+
The OpenTUI/Solid frontend is the only terminal. Install Bun 1.3.14 or newer and run
|
|
295
|
+
`npm run build:tui` (or `npm run build`); without Bun the build fails rather than producing a
|
|
296
|
+
terminal that cannot start. The harness runs `dist/terminal-opentui.js`, which uses the same
|
|
297
|
+
session runtime, accounts, command pages, approvals, questions, plugins and run records as the
|
|
298
|
+
embedded SDK. See [the terminal guide](docs/terminal-tui.md).
|
|
299
|
+
|
|
300
|
+
### Worktrees
|
|
301
|
+
|
|
302
|
+
Run `xagent --worktree` (or `-w [name]`) inside a git repository to start in a fresh managed
|
|
303
|
+
worktree: a detached checkout under `<state dir>/worktrees/` that carries your uncommitted
|
|
304
|
+
changes, copies ignored files named in `.worktreeinclude`, and runs the repository's
|
|
305
|
+
`.xharness/worktree-setup` once you trust it (`xagent worktree trust-setup`). The 15 most recent
|
|
306
|
+
managed worktrees per repository are kept; older ones are pruned, and unsaved work is kept as a
|
|
307
|
+
snapshot you can restore. `/plugin:worktree` in a session, `xagent worktree <command>` in a shell, and
|
|
308
|
+
the `worktrees.*` server methods offer the same actions: new, switch, create branch, hand off to
|
|
309
|
+
or from the main checkout, remove, restore, prune and adopt. An application passes a worktree's id
|
|
310
|
+
as `run.worktreeId` and the session works in it. See
|
|
311
|
+
[PROP-0016](docs/architecture/proposals/PROP-0016-managed-worktrees.md).
|
|
312
|
+
|
|
313
|
+
### Page notes
|
|
314
|
+
|
|
315
|
+
`/plugin:annotate [url]` opens a visible capture browser (its own window and profile, separate from the
|
|
316
|
+
agent's browser). Note the whole page, select a passage, or click an element there, then write the
|
|
317
|
+
note in the terminal. `/plugin:notes` lists, edits, resolves, reveals and deletes notes. A note is private
|
|
318
|
+
until you share it with the session; its agent then reads it with `page_notes_list` and
|
|
319
|
+
`page_notes_read`, with quoted page text marked untrusted. Notes live in `<data root>/annotations/`
|
|
320
|
+
and the `annotations.*` server methods give a host the same store. A host with its own web view
|
|
321
|
+
runs the same page helper (`annotations.pageScript`). See
|
|
322
|
+
[PROP-0017](docs/architecture/proposals/PROP-0017-page-annotations.md).
|
|
323
|
+
|
|
324
|
+
`/plugin:annotate` turns this into an inspector:
|
|
325
|
+
- Hover a component in the browser or an app window, click it, and write a comment in the popover.
|
|
326
|
+
- Then keep it as a note, add it to the agent's queue, or send it now. The agent reports back with `page_notes_mark_fixed`.
|
|
327
|
+
- App windows work two ways:
|
|
328
|
+
- **DevTools port:** start an Electron app with `--remote-debugging-port=9229` and run `/plugin:annotate --app 9229`.
|
|
329
|
+
- **Page bridge:** for a macOS web view such as Tauri, run `/plugin:annotate --bridge` and load the script tag it shows while developing the app. Allow `http://127.0.0.1:<port>` in the app's `script-src` and `connect-src`.
|
|
330
|
+
- A host drives the same flow with `annotations.capture.*`, and sends to its own sessions with `annotations.compose` and `annotations.delivered`.
|
|
331
|
+
|
|
332
|
+
See [PROP-0018](docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md).
|
|
333
|
+
|
|
334
|
+
Building a checkout does not update an existing global `xagent` installation.
|
|
252
335
|
To replace that command with this checkout, run `npm pack`, then install the exact tarball
|
|
253
336
|
filename it prints with `npm install --global ./<tarball-filename>`. This is a local install;
|
|
254
337
|
it does not publish a release. Close an already-running terminal session and launch the command
|
|
255
338
|
again to load the new frontend. A package version alone cannot distinguish an unreleased local
|
|
256
339
|
build from an older installed build with the same version.
|
|
257
340
|
|
|
258
|
-
This opens the Harness-owned terminal
|
|
259
|
-
|
|
260
|
-
status
|
|
261
|
-
owns screen composition, editing/input dispatch, scrolling, command routing and plugin UI;
|
|
262
|
-
Pi supplies the persistent execution runtime, native history and rich content components.
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
341
|
+
This opens the Harness-owned OpenTUI terminal in the current working directory. Its presentation
|
|
342
|
+
uses the Harness titanium palette and an OpenCode-inspired layout: the transcript above a
|
|
343
|
+
borderless composer with the working status above it and the model, context and token line below.
|
|
344
|
+
Harness owns screen composition, editing/input dispatch, scrolling, command routing and plugin UI;
|
|
345
|
+
Pi supplies the persistent execution runtime, native history and rich content components. The
|
|
346
|
+
existing isolated account, compiled context, approval gate, telemetry and Wiki/socket commands
|
|
347
|
+
remain behind the terminal. No Pi `InteractiveMode` is constructed.
|
|
348
|
+
|
|
349
|
+
Core terminal commands stay unprefixed. Built-in and Pi extension plugin commands use
|
|
350
|
+
`/plugin:<command>`; for example, annotate a page with `/plugin:annotate https://example.com`.
|
|
351
|
+
Old unprefixed plugin command forms are no longer aliases.
|
|
352
|
+
|
|
353
|
+
`/resume` stays inside the prepared account history and working folder. Cancel an active response
|
|
354
|
+
before changing or reloading a session. Full OMP visual parity is not established by the current
|
|
355
|
+
verification. `/harness` opens one browser for Foundation, Variant, Skills, Plugins,
|
|
356
|
+
Connections (MCP), Tools and Library. `/skills`, `/plugins`, `/connections` (`/mcp`) and `/tools`
|
|
357
|
+
open its sections directly; `/hub` opens Discover and `/components` opens Library. Resource
|
|
358
|
+
sections share Installed / Discover, source filters, search and a detail inspector. Tab focuses
|
|
359
|
+
controls, arrows change the focused choice, Ctrl+F returns to search and Escape goes back.
|
|
360
|
+
Skills show actual session availability even with invocation shortcuts off. With shortcuts on,
|
|
361
|
+
Use inserts `$name` into the draft without sending it; typing `$` also completes loaded skills.
|
|
362
|
+
To keep an existing message and attachments, open Ctrl+K, choose Skills, then Use.
|
|
363
|
+
Variant inspection distinguishes the pinned session version from the latest saved version.
|
|
364
|
+
Adding a library skill or rule creates a validated version for future sessions.
|
|
365
|
+
|
|
366
|
+
`/accounts`, `/permissions`, `/settings`, `/plugin:trajectory` and `/log` retain their own centered pages.
|
|
367
|
+
`/permissions` reviews device-local Pi terminal grants and the Full Permission switch; tool grants
|
|
368
|
+
apply across terminal sessions sharing this Harness state, and Full Permission requires confirmation.
|
|
369
|
+
`/plugin:trajectory` opens recorded runs for the current native conversation,
|
|
370
|
+
with event navigation and a detail inspector. `/log` shows a static, redacted snapshot of Harness
|
|
371
|
+
diagnostics and run events for the current conversation; press Escape to close. See
|
|
372
|
+
[terminal architecture and evidence](docs/terminal-tui.md),
|
|
373
|
+
[the ownership decision](docs/decisions/ADR-0001-owned-terminal.md),
|
|
374
|
+
[the OpenTUI-only decision](docs/decisions/ADR-0006-opentui-only-terminal.md), and
|
|
375
|
+
[third-party notices](NOTICE.md).
|
|
271
376
|
|
|
272
377
|
### `/accounts` in the terminal
|
|
273
378
|
|
|
@@ -279,36 +384,46 @@ command the model runs in the shell cannot make it.
|
|
|
279
384
|
A running session stays on the account it started with. To use another account for this
|
|
280
385
|
session, choose **Use for this session**: the terminal child restarts and the same conversation
|
|
281
386
|
resumes on that account. Removing an account that a running terminal is using is refused. Only
|
|
282
|
-
terminals in this process are counted, so an account used by another running `
|
|
387
|
+
terminals in this process are counted, so an account used by another running `xagent` window can
|
|
283
388
|
still be removed; that session then asks for another account the next time it starts.
|
|
284
389
|
|
|
285
|
-
The
|
|
286
|
-
`~/.xingular-harness/state
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
390
|
+
The installed standalone command defaults to `~/.xingular-harness/data` and
|
|
391
|
+
`~/.xingular-harness/state`; `npm run dev` instead defaults to the separate
|
|
392
|
+
`~/.xingular-harness-dev/data` and `~/.xingular-harness-dev/state`. Override either with
|
|
393
|
+
`--data <dir>` and `--state <dir>`. Session history is stored per working directory and can be
|
|
394
|
+
reopened with the terminal's `/resume` command. The explicit `terminal` command is an alias for
|
|
395
|
+
the default launch. Use `--help` to see the commands; `serve` remains the host-facing RPC service
|
|
396
|
+
for integrations such as Xingular Agent/App.
|
|
290
397
|
|
|
291
398
|
## Storage
|
|
292
399
|
|
|
293
400
|
```
|
|
294
401
|
<data root>/
|
|
295
|
-
|
|
296
|
-
|
|
402
|
+
variants/<scope>/ versions/<fingerprint>/variant/, head.json, lineage.jsonl (the eight components)
|
|
403
|
+
refine/<id>/ summary.json, task.json, variants/<label>/, rollouts/, context/, selection/, reflection/, improver/
|
|
404
|
+
library/<scope>/<area>/ INDEX.md, variants/<task>/{variant/, EXPERIENCE.md} (the experience library)
|
|
405
|
+
wiki/ home.md, library/, projects/<slug>/ (project notes)
|
|
406
|
+
wiki-history/ earlier versions of notes
|
|
407
|
+
legacy/ what an earlier Wiki kept (memory blocks, facts, revisions, Inbox), moved once
|
|
408
|
+
registry/ skills/, prompts/, rules/ (the component library; the Hub installs here)
|
|
297
409
|
plugins/<name>/ packages kept with a person's data; each is found as an installed plugin
|
|
298
|
-
runs/<id>/ run.json, events.jsonl, context.json, caller.json
|
|
299
|
-
config/
|
|
410
|
+
runs/<id>/ run.json, events.jsonl, context.json, caller.json, subagents.json (reserved child IDs)
|
|
411
|
+
config/ what is switched on for whom (plugin-attachments.json),
|
|
300
412
|
settings the harness reads
|
|
301
|
-
|
|
413
|
+
agents/<name>.md a person's agent profiles (a repository keeps its own in .xingular/agents/)
|
|
414
|
+
index.sqlite a rebuildable index of runs for recall (FTS5)
|
|
302
415
|
projects.json read only: the application owns it
|
|
303
416
|
|
|
304
417
|
<state dir>/
|
|
305
418
|
accounts/ registry, per-account Pi agent folders, audit log
|
|
306
419
|
approvals.json standing approvals
|
|
307
420
|
plugin-trust.json the code a person trusted, by hash, and whether earlier packages were taken over
|
|
421
|
+
variant-plugin-trust.json harness-variant plugin code a person trusted, and scopes whose probes may run improver code
|
|
308
422
|
plugin-registered.json what each extension registered the last time a session loaded it
|
|
309
423
|
plugin-hooks.json what each hooks file listens for and how its last run went
|
|
310
424
|
connections.json connected apps (secrets are in the SecretStore)
|
|
311
425
|
run/ the session socket and the terminal commands
|
|
426
|
+
harness.log diagnostics from the standalone terminal, kept off its screen
|
|
312
427
|
```
|
|
313
428
|
|
|
314
429
|
The files are the source of truth; `index.sqlite` can be deleted and rebuilt
|
|
@@ -318,28 +433,39 @@ The files are the source of truth; `index.sqlite` can be deleted and rebuilt
|
|
|
318
433
|
|
|
319
434
|
```sh
|
|
320
435
|
npm run ci # typecheck, unit/golden tests, and standalone proof; matches GitHub CI
|
|
321
|
-
npm run build # dist/cli.js
|
|
436
|
+
npm run build # dist/cli.js, dist/terminal-pi.js, and the OpenTUI frontend
|
|
437
|
+
npm run build:tui # only the OpenTUI frontend
|
|
322
438
|
```
|
|
323
439
|
|
|
324
|
-
Node 22.19 or newer.
|
|
440
|
+
Node 22.19 or newer and Bun 1.3.14 or newer.
|
|
325
441
|
|
|
326
442
|
## Images
|
|
327
443
|
|
|
328
|
-
`SessionRunInput.requiresImageInput` optionally requires a vision-capable resolved Pi model before a prompt is delivered. The check includes direct `images` input, and the generic tool wrapper rejects image results on text-only models. Direct prompt images use Pi's `{ type: 'image', data, mimeType }` content shape. Applications own
|
|
444
|
+
`SessionRunInput.requiresImageInput` optionally requires a vision-capable resolved Pi model before a prompt is delivered. The check includes direct `images` input, and the generic tool wrapper rejects image results on text-only models. Direct prompt images use Pi's `{ type: 'image', data, mimeType }` content shape. Applications own attachment selection, extraction and image preparation; the Harness transports typed image content and validates model capability. In the standalone terminal, pasting Finder-copied HEIC/HEIF files on macOS converts them to temporary PNGs so Pi can read their pixels. See [the terminal guide](docs/terminal-tui.md#clipboard-image-paste).
|
|
445
|
+
|
|
446
|
+
`SessionRunInput.initialBashCommand` is an opt-in for one new interactive user turn. It must match
|
|
447
|
+
the leading `!` command in `text`; Harness checks it through the same per-call gate as model-issued
|
|
448
|
+
Bash, executes it once in Pi's native session, records its bounded result, and asks the model to
|
|
449
|
+
inspect that result before replying. Automatic, plan, resumed, relation, probe, and improver runs
|
|
450
|
+
cannot carry it. See the [terminal guide](docs/terminal-tui.md#bash-command-mode).
|
|
329
451
|
|
|
330
452
|
## Curated Hub
|
|
331
453
|
|
|
332
|
-
`
|
|
454
|
+
`xagent hub list [--refresh]`, `xagent hub show publisher/name@version`, and
|
|
333
455
|
`hub install publisher/name@version` browse and install exact catalog versions. `/hub` offers the
|
|
334
456
|
same review in the interactive terminal, using its private control key for installation. Both the
|
|
335
|
-
terminal and embedding applications use `hub.list`, `hub.get`, `hub.
|
|
336
|
-
`hub.get { id, version, preview: true }` verifies data
|
|
457
|
+
terminal and embedding applications use `hub.list`, `hub.get`, `hub.preview`, `hub.install`,
|
|
458
|
+
`hub.uninstall`, and `hub.readDocument`. `hub.get { id, version, preview: true }` verifies data
|
|
459
|
+
payload bytes without installing them. `hub.preview { id, version, offset }` returns bounded,
|
|
460
|
+
UTF-8-safe pages of up to 16 KiB from a verified payload.
|
|
337
461
|
|
|
338
462
|
Registry bundles import complete skills or single Markdown prompts/rules, disabled. Pi packages
|
|
339
463
|
reuse the existing installer and require an exact npm version or full GitHub commit. Documents
|
|
340
464
|
are saved as inert JSON for a compatible host to interpret; the harness does not apply them.
|
|
341
465
|
Installation grants no attachment, trust, credentials, or permission. Writes are serialized and
|
|
342
|
-
existing registry files are never overwritten.
|
|
466
|
+
existing registry files are never overwritten. Receipts report whether their resources are intact;
|
|
467
|
+
uninstall removes only the exact receipt's resources, including local edits within those paths, and
|
|
468
|
+
revokes its attachment choices.
|
|
343
469
|
|
|
344
470
|
Installed documents and provenance live under `<data root>/hub/`; the catalog cache is
|
|
345
471
|
`<state dir>/hub/catalog.json`. An offline snapshot ships with the package. Explicit refresh keeps
|
|
@@ -358,9 +484,36 @@ An embedding application may set `externalMaintenance: true`, supply trusted `Ca
|
|
|
358
484
|
`vaultAccess` (`self` or `curator`), and register `maintenanceTools`/`MAINTENANCE_PLUGIN`.
|
|
359
485
|
Self callers directly edit only their own writable persona/notes; shared knowledge and text-resource
|
|
360
486
|
writes become persistent proposals. Curator tools read original evidence, compare captured target
|
|
361
|
-
revisions,
|
|
487
|
+
revisions, read all host-assigned requests together, and apply reconciled Wiki proposals as one
|
|
488
|
+
undoable change set. Resource proposals keep their own receipts; executable proposals remain inert
|
|
489
|
+
until the user reviews/trusts them. Later user edits are never overwritten.
|
|
362
490
|
`maintenance.list`, `maintenance.review` and `maintenance.retry` let the host dispatch its own
|
|
363
491
|
recorded sessions. Curator runs do not recursively queue maintenance. Optional assigned IDs freeze
|
|
364
492
|
which requests a batch may claim. These fields are trusted host context, never model arguments.
|
|
365
|
-
|
|
366
|
-
|
|
493
|
+
`maintenance_read_batch` reads those assigned requests together; `maintenance_apply_batch` records
|
|
494
|
+
one decision for each and applies the evidence-checked Wiki set atomically. Standalone callers that
|
|
495
|
+
omit this option retain the existing lifecycle and direct-write contract.
|
|
496
|
+
|
|
497
|
+
## Readiness diagnostics
|
|
498
|
+
|
|
499
|
+
Use `/plugin:doctor` in the terminal for local readiness checks and explicitly selected live probes. The same
|
|
500
|
+
structured jobs are available through `harness.doctor` and `doctor.*` server methods. See
|
|
501
|
+
[Doctor](docs/doctor.md) for coverage, consent, isolation, and provider callbacks.
|
|
502
|
+
|
|
503
|
+
## Public 4.0.0 release candidate
|
|
504
|
+
|
|
505
|
+
The public package is ESM: import from `@xingular/harness` or supported subpaths such as
|
|
506
|
+
`@xingular/harness/variant/seed`. JavaScript and declarations are shipped in `dist/sdk`; a
|
|
507
|
+
TypeScript loader is not required. Node 22.19 or later is required. The interactive terminal
|
|
508
|
+
also requires Bun (release builds use 1.4.2); the CLI reports its version with `xagent --version`.
|
|
509
|
+
Original project code is Apache-2.0. See LICENSE, NOTICE.md and THIRD_PARTY_LICENSES.md.
|
|
510
|
+
|
|
511
|
+
A host providing its own browser tools sets `browser: false` on `createHarness` to disable the
|
|
512
|
+
generic backend and prevent tool-name collisions. The desktop App uses this for shared tabs.
|
|
513
|
+
The default standalone Harness keeps its isolated browser backend enabled.
|
|
514
|
+
|
|
515
|
+
This additive release follows the published 1.0.0 baseline, which intentionally reset development
|
|
516
|
+
numbering while preserving older published versions. See [4.0.0 release notes](docs/releases/4.0.0.md),
|
|
517
|
+
[1.0.0 release notes](docs/releases/1.0.0.md), and the [release procedure](docs/releases/README.md).
|
|
518
|
+
Publication requires registry verification, green CI on supported operating systems, and approval of
|
|
519
|
+
the exact candidate and tag push.
|