@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/docs/parity.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Capability parity register
|
|
2
|
+
|
|
3
|
+
**Status:** descriptive register, as of 2026-10-24. 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** (both surfaces pass), **terminal only**, **host only** (a gap), **planned**,
|
|
16
|
+
**host-backed** (needs a host object; terminal fallback named).
|
|
17
|
+
|
|
18
|
+
## Register
|
|
19
|
+
|
|
20
|
+
| Capability | Harness owner | Method or tool | Terminal surface | App surface | Status | Gap |
|
|
21
|
+
|---|---|---|---|---|---|---|
|
|
22
|
+
| Sessions and turns | `sessions/` | `sessions.run`, `terminal.*` | the terminal itself | Solo chat | parity | — |
|
|
23
|
+
| Plan mode | `sessions/planMode.ts` | `plan: true` | `/plan`, Shift+Tab, plan card | plan request, PlanCard | parity | — |
|
|
24
|
+
| Bash command mode | `sessions/sessions.ts` | `initialBashCommand` | `!command` | `!command` in the composer | parity | — |
|
|
25
|
+
| Side questions | `sessions/sideQuestions.ts` | `sideQuestions.start/read/interrupt`; terminal `terminal.sideQuestions.*` | `/btw` contextual dock with scroll and copy | side-question dock through the shared service | parity | — |
|
|
26
|
+
| Approvals and standing approvals | `sessions/approvals.ts` | `approvals.*` | decision dock, `/permissions` | approvals dock, settings | parity | — |
|
|
27
|
+
| Questions (`ask_user`) | `tools/askUser.ts` | `ask_user`; terminal `ask_user_question` | plan-mode dock: strict aligned columns, bounded body scroll, 80×24 source sketch viewport; connected structural projection with high-confidence boundary normalization (PROP-0026, PROP-0028) | plan-mode form accepts the same 80×24 ASCII source contract with literal preview and accessible overflow; no typography change required | parity; terminal projection verified in isolated fixtures | — |
|
|
28
|
+
| Subagents | `sessions/subagentService.ts` | `spawn_subagent` (requires `title`, PROP-0030), `subagents.*` | `/subagents` page and live rows under the status line (mark, profile, parent-set title, `n of m tasks`) | reply trajectory | parity | — |
|
|
29
|
+
| Agent profiles | `agents/profiles.ts` | `spawn_subagent { agent }`, `agents.list/get/create/remove`; terminal `terminal.agents.*` | `/agents` page: browse, create, edit in `$EDITOR`, copy, delete | not shown; `RunRecord.profile` available | terminal done; App planned | PAR-010 |
|
|
30
|
+
| Run checklist | `tools/checklist.ts` | `checklist_write`, `runs.checklist`; terminal `checklist` telemetry | registered in terminal sessions and their subagents; each write shows as a checklist block in the transcript; a subagent row shows its `n of m tasks` | not shown | terminal done; App planned | PAR-001 |
|
|
31
|
+
| Continuation of a stopped run | `sessions/continuation.ts` | `continueFrom`, `runs.continuation` | not offered (`/resume` reopens history only) | not offered | planned | PAR-003 |
|
|
32
|
+
| Accounts | `accounts/` | `accounts.*` | `/accounts` | Accounts | parity | — |
|
|
33
|
+
| Models and effort | `accounts/choices.ts` | — | `/model`, `/effort` | composer pickers | parity | — |
|
|
34
|
+
| Skills | `plugins/`, `tools/dispatch.ts` | `skill_load` | `$name`, `/skill:name`, browser Skills tab | Capability, composer | parity | — |
|
|
35
|
+
| Plugins and Hub | `plugins/`, `hub/` | `plugins.*`, `hub.*` | resource browser | Capability | parity | — |
|
|
36
|
+
| Connected apps (MCP) | `mcp/` | `connections.*`, broker tools | resource browser Connections tab | Connections | parity | — |
|
|
37
|
+
| Web search and page reading | `web/` | `web_search`, `web_fetch` | world tools | world tools | parity | — |
|
|
38
|
+
| Isolated browser | `browser/` | `browser_*` | world tools, headed on request, `/settings` Browser tab | App WebKit tabs (host-backed) | host-backed | — |
|
|
39
|
+
| Page annotations | `annotations/` (PROP-0017, PROP-0018) | `annotations.*`, `annotations.capture.*`, `page_notes_*` | `/plugin:annotate` pane (inspector, queue, app windows over DevTools or the page bridge), `/plugin:notes` | website tab Annotate panel (inspector, queue to the focused thread, app windows through `annotations.capture.*`) | parity in the working tree; native WKWebView gestures unaccepted | PAR-011 |
|
|
40
|
+
| Managed worktrees | `worktrees/` (PROP-0016) | `worktrees.*` | `--worktree`, `/worktree`, `xagent worktree` | working group **Create worktree** (`worktrees.create`) | partial | PAR-012 |
|
|
41
|
+
| Wiki notes (model tools) | `wiki/`, `tools/` | `wiki_*` | `xagent-wiki` shell command only | tools | host only | PAR-002 |
|
|
42
|
+
| History and trajectory (model tools) | `history/` | `history_*`, `trajectory_*` | shell command, `/trajectory` page | tools, trajectory views | host only | PAR-002 |
|
|
43
|
+
| Wiki browsing | `wiki/` | `wiki.*` | none | Wiki | host only | PAR-005 |
|
|
44
|
+
| Variants and refinement | `variant/`, `refine/` | `harnesses.*`, `refine.*` | browser Variant tab (read-only), `xagent refine` | Harness screen | host only | PAR-004 |
|
|
45
|
+
| Output trim and budget guard plugins | `plugins/firstParty.ts` | — | not loaded in terminals | loaded | host only | PAR-006 |
|
|
46
|
+
| Doctor | `doctor/` | `doctor.*` | `/doctor` | diagnostics | parity | — |
|
|
47
|
+
| Run inspection | `sessions/runStore.ts` | `runs.*` | `/trajectory`, `/log` | run views, analytics | parity | — |
|
|
48
|
+
| Session catalog (sessions per folder) | — | — | per-folder history | Solo thread list | planned | PAR-008 |
|
|
49
|
+
| Folder choice and recent folders | `core/projects.ts` | — | launch folder only | working groups | planned | PAR-009 |
|
|
50
|
+
| Computer control | — | `computer_*` (host tools) | unavailable, with reason | macOS bridge (host-backed) | host-backed | PAR-007 |
|
|
51
|
+
| Shared files vault | — | `files_*` (host tools) | none | Files | host only | PAR-007 |
|
|
52
|
+
|
|
53
|
+
The terminal-only display amendments [PROP-0026](architecture/proposals/PROP-0026-connected-sketch-display.md)
|
|
54
|
+
and [PROP-0028](architecture/proposals/PROP-0028-normalize-question-wireframes.md) permit connected
|
|
55
|
+
structural glyphs, frame-attached standalone dividers, and high-confidence boundary normalization
|
|
56
|
+
through whitespace while retaining literal ASCII persistence and unchanged answers. The App may
|
|
57
|
+
keep its literal preview. This does not reopen the expanded metadata contract verified under
|
|
58
|
+
PAR-013. Isolated production PTY evidence verifies bounded fixture topology, not every emulator/font
|
|
59
|
+
or live-model sketch quality.
|
|
60
|
+
|
|
61
|
+
## Gaps
|
|
62
|
+
|
|
63
|
+
| ID | Gap | Planned change |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| PAR-001 | Checklist absent from the App | The terminal registers the tool and renders a checklist block; the App renders it too. |
|
|
66
|
+
| PAR-002 | Wiki, history and trajectory reach terminal models only through a shell command | Register the harness tools in terminal sessions; retire the shell commands (drift D-4). |
|
|
67
|
+
| PAR-003 | Continuation unused | `/resume` lists interrupted runs and continues one with `continueFrom`; the App offers Continue. |
|
|
68
|
+
| PAR-004 | Refinement and adoption only in the App | Variant tab actions: start, candidates, adopt, trust. |
|
|
69
|
+
| PAR-005 | Wiki browsing only in the App | A `/wiki` page over `wiki.*`. |
|
|
70
|
+
| PAR-006 | First-party hook plugins not loaded in terminals | Load them through the terminal's trusted selection. |
|
|
71
|
+
| PAR-007 | Host tools without a Harness owner | Decide each: computer control stays host-backed (terminal shows unavailable); the files vault becomes a Harness capability or is dropped. |
|
|
72
|
+
| PAR-008 | Separate session catalogs | A Harness session catalog per folder, read by both front ends (needs a proposal). |
|
|
73
|
+
| PAR-009 | Folder choice | Built on PAR-008: recent folders in both front ends. |
|
|
74
|
+
| PAR-010 | Agent profiles absent from the App | An Agents screen over `agents.*`, and the profile name and colour on subagent rows (PROP-0029). |
|
|
75
|
+
| PAR-011 | Page 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. |
|
|
76
|
+
| PAR-012 | Managed worktrees | Harness and terminal done (PROP-0016). The App creates through `worktrees.create`; its groups do not yet offer hand off, prune, restore or managed worktrees per thread. |
|
|
77
|
+
| 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. |
|
|
78
|
+
| 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. |
|
|
@@ -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,46 @@
|
|
|
1
|
+
# Xingular Harness 4.0.0
|
|
2
|
+
|
|
3
|
+
This major release builds on the published 1.0.0 baseline. It extends Harness-owned terminal
|
|
4
|
+
surfaces and adds generic worktree and page-annotation capabilities; it also changes the built-in
|
|
5
|
+
terminal command namespace, documented below. Earlier published versions remain available.
|
|
6
|
+
|
|
7
|
+
## Included
|
|
8
|
+
|
|
9
|
+
- Managed Git worktrees for sessions and the terminal, with leases, guarded setup scripts, handoff,
|
|
10
|
+
pruning, restoration, and bounded snapshots that preserve uncommitted work.
|
|
11
|
+
- Page annotations and queued notes, including capture, review, resolution, sharing, and delivery
|
|
12
|
+
through Harness methods and terminal `/plugin:annotate` and `/plugin:notes` pages.
|
|
13
|
+
- A unified terminal resource browser with persistent full-screen sections for browser tabs,
|
|
14
|
+
plugins, skills, connectors, variants, and other Harness resources.
|
|
15
|
+
- A full-screen `/trajectory` Runs/Events browser with searchable event details, selected-event
|
|
16
|
+
JSON, and a responsive split-pane layout.
|
|
17
|
+
- Additional terminal controls for browser settings, plugin settings, and subagent activity.
|
|
18
|
+
- Fix Node 22 SQLite parameter binding in recall and run indexes, and guard worktree Git calls
|
|
19
|
+
against early child-process exits while writing input.
|
|
20
|
+
- Updated architecture and parity documentation for Harness capabilities and their terminal and
|
|
21
|
+
host surfaces.
|
|
22
|
+
|
|
23
|
+
## Installation and requirements
|
|
24
|
+
|
|
25
|
+
Use `npm install --global @xingular/harness@4.0.0`, then `xagent`. Node 22.19 or later is required.
|
|
26
|
+
The interactive terminal also requires Bun; release CI uses Node 22.19.0 and Bun 1.4.2. Browser
|
|
27
|
+
operation requires an installed compatible browser or a deliberately configured endpoint. Model
|
|
28
|
+
credentials are configured inside an isolated Harness account.
|
|
29
|
+
|
|
30
|
+
## Compatibility
|
|
31
|
+
|
|
32
|
+
The new server methods are additive. The published executable is `xagent`, replacing the earlier
|
|
33
|
+
`xharness` candidate command without a compatibility alias; scripts using that candidate name must
|
|
34
|
+
be updated. Required built-in plugin commands use unprefixed names:
|
|
35
|
+
`/subagents`, `/trajectory`, `/doctor`, and `/worktree`. Optional built-in and third-party extension
|
|
36
|
+
commands use `/plugin:<command>`; the optional page-annotation commands remain `/plugin:notes` and
|
|
37
|
+
`/plugin:annotate`. Update scripts and keybindings that used the earlier candidate's prefixed forms
|
|
38
|
+
for required commands. Existing session, variant, account, plugin, and browser contracts remain in
|
|
39
|
+
place. Install this exact version or use the `latest` tag; historical versions remain available.
|
|
40
|
+
|
|
41
|
+
## Verification scope
|
|
42
|
+
|
|
43
|
+
The Harness CI suite, standalone proof, App typecheck/tests/layer check/Rust tests, and App UI
|
|
44
|
+
consistency check must pass for the reviewed release candidate. The release tag workflow separately
|
|
45
|
+
builds and smoke-tests the exact tarball on its supported operating systems before publishing it
|
|
46
|
+
with npm provenance.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Release procedure
|
|
2
|
+
|
|
3
|
+
1. Review and commit completed Harness changes on the active release branch. Review App
|
|
4
|
+
compatibility changes separately. Preserve old tags and exclude outputs, external references,
|
|
5
|
+
and caches.
|
|
6
|
+
2. Run npm run ci and the required App checks on unrestricted macOS/Linux runners. Install Bun
|
|
7
|
+
1.4.2 and use Node 22.19.0 for the release build. Do not waive failing checks.
|
|
8
|
+
3. Run npm run release:pack. The unique output folder contains the candidate tarball, inventory,
|
|
9
|
+
SHA-256 checksum and npm integrity. Run npm run release:smoke -- <tarball> --terminal for a fresh
|
|
10
|
+
dependency installation and packaged SDK/server/terminal checks. --offline reuses the checkout's
|
|
11
|
+
installed dependency tree and is only a local smoke check, not fresh-install acceptance.
|
|
12
|
+
4. Run npm run release:preflight. Verify npm scope ownership and trusted-publisher settings for
|
|
13
|
+
tanntnny/xingular-harness and workflow release.yml, with direct publishing enabled. No login is
|
|
14
|
+
started automatically. An already-used target version or unreachable registry blocks publication.
|
|
15
|
+
5. Present the exact commit, candidate inventory/hash, notes and check results for approval. Pushing
|
|
16
|
+
the matching v<version> tag triggers publication; do not push it before this approval. Preserve
|
|
17
|
+
historical tags.
|
|
18
|
+
6. After approval, push the reviewed commits and tag. The workflow runs both OS checks, packages
|
|
19
|
+
and tests one candidate, then publishes that same tarball with OIDC provenance and --tag latest.
|
|
20
|
+
No local publishing token is needed. It verifies registry integrity/provenance and creates a
|
|
21
|
+
GitHub release. Inspect registry state before retrying any failed publication.
|
|
22
|
+
|
|
23
|
+
A published version cannot be replaced. Corrections require a later version. This package's
|
|
24
|
+
intentional 1.0.0 reset does not rewrite historical decisions or claim an ordering above older
|
|
25
|
+
2.x–5.x development versions. Publication status and local evidence belong in the candidate report.
|
|
26
|
+
|
|
27
|
+
## 4.0.0 candidate preparation
|
|
28
|
+
|
|
29
|
+
Local checks on the candidate source passed: Harness `npm run ci` (typecheck, 134 test files with
|
|
30
|
+
1,004 passing tests and 3 skipped, plus the standalone proof); App typecheck, `npm test` (566 renderer
|
|
31
|
+
tests, 47 sidecar tests, and 7 dev-signing tests passed with 1 skipped), layer check, and Rust tests
|
|
32
|
+
(168 passed, 1 ignored); and App UI consistency. The registry lists 1.0.0 as `latest` and 4.0.0 as
|
|
33
|
+
unused. The clean-tree release preflight passed. Exact-tarball packaging and a fresh-install smoke
|
|
34
|
+
test passed, including the packaged SDK, types, CLI, server and isolated terminal. The tagged
|
|
35
|
+
preflight, two-OS CI, and exact-tarball smoke are enforced by the release workflow. The npm
|
|
36
|
+
trusted-publisher configuration for `tanntnny/xingular-harness` and `release.yml` requires
|
|
37
|
+
package-owner verification; `npm login` does not verify that setting.
|
|
38
|
+
|
|
39
|
+
The release workflow runs its full CI and exact-tarball smoke test on both Ubuntu and macOS before
|
|
40
|
+
publishing. Branch upload and the matching release-tag push are separate GitHub side effects; only
|
|
41
|
+
the tag triggers publication. No local test failure is waived by this note.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Harness arm study — index
|
|
2
|
+
|
|
3
|
+
An audit of agent-harness designs, arm by arm: where each studied harness puts its
|
|
4
|
+
prompt assembly, tools, memory, subagents, skills, context management, refinement,
|
|
5
|
+
governance, execution and observability, and what to adopt into this harness.
|
|
6
|
+
|
|
7
|
+
Positioning: this is analysis, not checked source behavior. Living contract docs and
|
|
8
|
+
decisions stay in `docs/`; when a study produces an actual change here, an ADR is
|
|
9
|
+
written and the claim moves to checked behavior. Cite material as
|
|
10
|
+
`external/<name>/<path>:<line>` — never second-hand summaries.
|
|
11
|
+
|
|
12
|
+
## Focused notes
|
|
13
|
+
|
|
14
|
+
- [Proactive autonomy and three feature directions](proactive-autonomy.md) — scheduled initiative,
|
|
15
|
+
a human-readable agenda, UI repair, cleanup and product experiments; fresh
|
|
16
|
+
[proactive-system evidence](autonomy-sources.md) and
|
|
17
|
+
[autonomous-engineering evidence](autonomous-engineering-sources.md). Research hypotheses,
|
|
18
|
+
not an accepted architecture change.
|
|
19
|
+
- [`/btw` side-question comparison](btw-comparison.md) — this terminal, the App-owned
|
|
20
|
+
side question, and checked-out external implementations.
|
|
21
|
+
- [Harness feature-gap review](feature-gap-review.md) — task/goal management, long-running work,
|
|
22
|
+
memory, execution isolation, verification, and observability gaps against the studied peers.
|
|
23
|
+
|
|
24
|
+
## Sources
|
|
25
|
+
|
|
26
|
+
Clones live in `external/` (this repo). Field notes in `sources/`.
|
|
27
|
+
|
|
28
|
+
| Source | Origin | Note | Stage |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| opencode | [sst/opencode](https://github.com/sst/opencode) — TypeScript, the tool this harness family runs sessions in | [opencode.md](sources/opencode.md) | arm-01 audited |
|
|
31
|
+
| pi / omp | [can1357/oh-my-pi](https://github.com/can1357/oh-my-pi) — tuned fork of [pi-mono](https://github.com/badlogic/pi-mono), the session runtime underneath this harness | [omp.md](sources/omp.md) | arm-01 audited |
|
|
32
|
+
| deepseek-harness (`dsh`) | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness) — MIT, Cordis, "everything is a plugin" | [deepseek-harness.md](sources/deepseek-harness.md) | arm-01 audited |
|
|
33
|
+
| harness2 | [google-research/harness2](https://github.com/google-research/harness2) + paper *Harness²: Recursive Agent Harnessing for an Open World* (arXiv:2610.14224, PDF in the clone) | [harness2.md](sources/harness2.md) | arm-01 audited |
|
|
34
|
+
| swe-agent | [SWE-agent/SWE-agent](https://github.com/SWE-agent/SWE-agent) | [swe-agent.md](sources/swe-agent.md) | inventory |
|
|
35
|
+
| openhands | [All-Hands-AI/OpenHands](https://github.com/All-Hands-AI/OpenHands) (UI) + [OpenHands/software-agent-sdk](https://github.com/OpenHands/software-agent-sdk) (agent server runtime) | [openhands.md](sources/openhands.md) | inventory |
|
|
36
|
+
| kimi-cli | [MoonshotAI/Kimi-CLI](https://github.com/MoonshotAI/Kimi-CLI) | [kimi-cli.md](sources/kimi-cli.md) | inventory |
|
|
37
|
+
| smolagents | [huggingface/smolagents](https://github.com/huggingface/smolagents) — CodeAct | [smolagents.md](sources/smolagents.md) | inventory |
|
|
38
|
+
| claude-code | [Anthropic Claude Code](https://www.anthropic.com/claude-code) — not open source; audit npm bundle, published prompts, observed behavior | [claude-code.md](sources/claude-code.md) | no clone |
|
|
39
|
+
|
|
40
|
+
## Arms
|
|
41
|
+
|
|
42
|
+
One doc per arm: *design space → per-source comparison → trade-offs → adoption
|
|
43
|
+
candidates*. Adoption candidates feed a two-tier roadmap: Tier 1 = patterns already
|
|
44
|
+
battle-tested in open harnesses (OpenCode / pi / dsh); Tier 2 = research-backed ideas
|
|
45
|
+
(harness² and the literature) attempted after Tier 1.
|
|
46
|
+
|
|
47
|
+
| # | Arm | Doc | Stage |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| 1 | System prompt / context assembly | [arms/01-system-prompt.md](arms/01-system-prompt.md) | core four audited (opencode, omp, dsh, harness²); 5 sources pending |
|
|
50
|
+
| 2 | Tools | [arms/02-tools.md](arms/02-tools.md) | core four audited (opencode, omp, dsh + harness²/swe-agent/smolagents in person); partial |
|
|
51
|
+
| 4 | Subagents | [arms/03-subagents.md](arms/03-subagents.md) | core four audited; openhands/claude-code pending |
|
|
52
|
+
| 5 | Skills & loading | [arms/04-skills.md](arms/04-skills.md) | three sources audited (dsh, opencode, harness²) + our tree; omp partial |
|
|
53
|
+
| 6 | Context management | [arms/05-context-management.md](arms/05-context-management.md) | core three audited; ours needs inventory |
|
|
54
|
+
| 3 | Memory | [arms/06-memory.md](arms/06-memory.md) | core four audited + our Wiki |
|
|
55
|
+
| 8 | Governance | [arms/07-governance.md](arms/07-governance.md) | core three audited; claude-code/openhands pending |
|
|
56
|
+
| 9 | Execution | [arms/08-execution.md](arms/08-execution.md) | core three audited; hands pending |
|
|
57
|
+
| 10 | Observability | [arms/09-observability.md](arms/09-observability.md) | core three audited; hands pending |
|
|
58
|
+
| 7 | Refinement / self-improvement | [arms/10-refinement.md](arms/10-refinement.md) | **done in person — port confirmed**; judge delta + drift sync open |
|
|
59
|
+
|
|
60
|
+
Wide comparison: [arms/00-matrix.md](arms/00-matrix.md). Standing conclusions:
|
|
61
|
+
[insights.md](insights.md). Roadmap: [roadmap.md](roadmap.md).
|
|
62
|
+
|
|
63
|
+
## Work order
|
|
64
|
+
|
|
65
|
+
1. `sources/` inventories (all nine), then arms 01–02 (prompt, tools)
|
|
66
|
+
2. Arms 03–06 (subagents, skills, context management, memory)
|
|
67
|
+
3. Arms 07–09 (governance, execution, observability)
|
|
68
|
+
4. Arm 10 (refinement ⭐ — the merge study against harness²) + `roadmap.md`
|
|
69
|
+
5. `arms/00-matrix.md` last, from the finished arm docs
|
|
70
|
+
|
|
71
|
+
## Method rules
|
|
72
|
+
|
|
73
|
+
- **Ground truth first.** Read the code before forming a position; every claim in an
|
|
74
|
+
arm doc needs at least one `path:line` citation per source, or an explicit
|
|
75
|
+
"unverified".
|
|
76
|
+
- **Describe, then judge.** The comparison table states what each harness does; the
|
|
77
|
+
trade-off section says why; only `adoption candidates` mentions this harness.
|
|
78
|
+
- **Respect the boundary.** Nothing here changes `src/`; study docs name no product
|
|
79
|
+
concept that the harness would learn. Adoption goes through the extension-point
|
|
80
|
+
flow later.
|
|
81
|
+
- **The anchor arms are the seven surfaces.** Prompt sections, tool providers,
|
|
82
|
+
`ToolPolicy`, `SecretStore`, `Directory`, plugin descriptions, `RefineHost` — map
|
|
83
|
+
foreign mechanisms onto these without inventing application concepts.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Wide comparison matrix
|
|
2
|
+
|
|
3
|
+
One row per source per arm; ≤12 words per cell, verbs first. Detail and
|
|
4
|
+
citations live in the arm docs; this page is an index, not the analysis.
|
|
5
|
+
|
|
6
|
+
| Arm | this harness | opencode | omp (pi fork) | dsh | harness² | swe-agent | openhands SDK | kimi-cli | smolagents | claude-code |
|
|
7
|
+
|---|---|---|---|---|---|---|---|---|---|---|
|
|
8
|
+
| 01 prompt | compile.ts only; stable prefix + hidden context updates | template + deltas appended to history | parallel compiler; two-block cache; static invariant | ordered per-step sections + user snapshot | tree IS prompt, capped always-on | yaml config templates | pending | pending | step-log replay | CLAUDE.md hierarchy (pending) |
|
|
9
|
+
| 02 tools | providers + per-call gate; `{product}` | Effect plugins, codemode, MCP names | 30 rich builtin tools, tiers | defineTool registry, PTC mode | editable c4 guidance | YAML string bundles | pending | kosong abstract layer (archived) | code actions, @tool | descriptions answer how (pending) |
|
|
10
|
+
| 03 subagents | fresh run children + delivery receipts | subagent tool, fresh sessions, description route | task tool, worktree isolation, speculative | spawn/fork service, continuable | c5 own-context text agents | runs only | per-container opens | pending | none in-source | agents files (pending) |
|
|
11
|
+
| 04 skills | c6 tree skills, trust-gated loader | depth-6 scan, skill lazy-load | manage_skill; memory writes skills | durable capped catalog + skill tool | trigger lines validated | procedures via bundles | microagents (pending) | klips dir | prompt templates | SKILL.md (pending) |
|
|
12
|
+
| 05 context | context message + budgets | compaction agent, fixed template, verbatim tail | method ladder, snapcompact deterministic | formula trigger, prune first, FTS5 query | replica-era limits, trim-to-pay | bounded single shots | condensers pending | pending | full replay memory | auto-compact (pending) |
|
|
13
|
+
| 06 memory | wiki notes on file writes; guarded refine lane | none visible | 5 backends, two-phase consolidation, MEMORY.md | durability only: spill/todo/deliverables | per-domain experience library | none | pending | pending | step log | memory files (pending) |
|
|
14
|
+
| 07 governance | gate last; standing + single-use | per-leaf asserts, always/deny/ask | tier×policy, fails closed | pre-execute pipeline + guard | substrate-dependent | curated blocklists | confirmation policy | archived | executor = gate | permission modes (pending) |
|
|
15
|
+
| 08 execution | account-isolated sessions; host PTY | shell tool + separate pty daemon | in-process rust unix env | sandbox classes + single executor | substrate workspace | container env | workspace containers | kaos (archived) | intercepted exec | desktop app (pending) |
|
|
16
|
+
| 09 observability | runStore-only validated events | bus + UsageRecorded | stats dashboard + ledgers | OTel transport only, FEEDBACK_ONLY | runmark + reports | trajectories + inspector | event stream | klips vis | monitor.py | sentry optional |
|
|
17
|
+
| 10 refinement | ported harness² core (arm 10) | none | autoresearch hillclimb loop | none found | editor→probe→compose + reflector | IC design lessons | none found | archived | none | plan mode only |
|
|
18
|
+
|
|
19
|
+
Fill rule for later passes: replace `pending` from each source note's audit;
|
|
20
|
+
mark archived designs and reference the note.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# Arm 01 — System prompt / context assembly
|
|
2
|
+
|
|
3
|
+
Status: **core four audited** (opencode, omp, dsh, harness²); swe-agent,
|
|
4
|
+
openhands, kimi-cli, smolagents, claude-code pending.
|
|
5
|
+
Sources audited by explorer agents with citations; my own spot-checks marked.
|
|
6
|
+
|
|
7
|
+
Shape: design space → per-source comparison → trade-offs → adoption candidates.
|
|
8
|
+
|
|
9
|
+
## 1. Design space
|
|
10
|
+
|
|
11
|
+
Where the model's instructions come from when a session starts, and how they
|
|
12
|
+
evolve mid-session. Sub-decisions:
|
|
13
|
+
|
|
14
|
+
1. **Assembly location** — one compiler, a grid-like assembler, or a template
|
|
15
|
+
engine? Who is *allowed* to contribute (core only, plugins, file discovery)?
|
|
16
|
+
2. **Static vs dynamic** — what is identical across calls of a session (or across
|
|
17
|
+
sessions, for cross-session cache) vs what must be refreshed; and *where* each
|
|
18
|
+
is injected (system message at node 0, later system messages, user messages
|
|
19
|
+
after history, synthetic messages inside history).
|
|
20
|
+
3. **Reach of instructions** — always-on prose vs skills vs hooks vs scripts;
|
|
21
|
+
caps and budget language.
|
|
22
|
+
4. **Cache discipline** — prefix stability, cache breakpoints, proactive
|
|
23
|
+
warming, append-only updates.
|
|
24
|
+
5. **Editability/versioning** — how the tree of instruction files is versioned
|
|
25
|
+
or validated (this harness: never edit, only supersede).
|
|
26
|
+
|
|
27
|
+
## 2. Comparison
|
|
28
|
+
|
|
29
|
+
### this harness (reference point)
|
|
30
|
+
|
|
31
|
+
- The prompt is assembled only in `src/prompt/compile.ts`; sessions launch with a
|
|
32
|
+
stable system prefix plus a hidden `xingular-context` message appended to
|
|
33
|
+
native history for changing state (repo rules; `AGENTS.md`). Tree sections
|
|
34
|
+
c1–c8 are versioned; c1–c4 always-on and capped/validated (`tree/tree.ts`);
|
|
35
|
+
a version is never edited, only superseded (`tree/store.ts`).
|
|
36
|
+
|
|
37
|
+
### opencode — compiler + instruction deltas
|
|
38
|
+
|
|
39
|
+
- Small text template with a tool-guidance placeholder, rendered per tool list
|
|
40
|
+
(`external/opencode/packages/core/src/session/system-prompt.ts:9-27`; the
|
|
41
|
+
template is `session/runner/prompt/system.txt`).
|
|
42
|
+
- Per-step transcript: system = agent template **plus an instruction baseline as
|
|
43
|
+
a second system part**; messages = history (`.../session/model-request.ts:99-119`).
|
|
44
|
+
- Instruction sources composed in a fixed order (codemode catalog, MCP,
|
|
45
|
+
references, skills, AGENTS.md discovery, builtins, API entries) with a comment
|
|
46
|
+
stating the order keeps "a reusable prompt-cache prefix"
|
|
47
|
+
(`.../session/context.ts:137-166`, comment at 152-154).
|
|
48
|
+
- Dynamic updates are **appended as system messages after history, before the
|
|
49
|
+
new user prompt**: AGENTS.md changes render as a unidiff patch or a full
|
|
50
|
+
rewrite; date/env/codeMode changes likewise (`.../session/generate.ts:53-57`,
|
|
51
|
+
`.../session/instruction-discovery.ts:127-149`, `.../session/builtins.ts:30-52`).
|
|
52
|
+
- Discovery: global file, ancestor walk, configured globs/URLs, watcher-driven
|
|
53
|
+
reload; **no size caps found** in the discovered files (auditor: unverified
|
|
54
|
+
beyond those files) (`.../config/plugin/instruction.ts:51-62,143-225`).
|
|
55
|
+
- On-demand AGENTS.md: the `read` tool injects ancestors as synthetic history
|
|
56
|
+
messages deduped by metadata (`.../tool/plugin/read.ts:82-104` →
|
|
57
|
+
`.../session/instructions.ts:74-79`).
|
|
58
|
+
- Cache hygiene: stable `promptCacheKey` from session affinity
|
|
59
|
+
(`.../model-request.ts:294-295`), tool definitions kept on the final step to
|
|
60
|
+
preserve the prefix (`.../runner/llm.ts:237`), prefix-stable image elision
|
|
61
|
+
(`.../model-request.ts:199-207`).
|
|
62
|
+
- Plugins get a per-request hook over `system`, `messages`, `tools`, `options`,
|
|
63
|
+
with tool-identity matching to prevent hook-invented tools
|
|
64
|
+
(`.../model-request.ts:236-320`, `packages/plugin/src/effect/session.ts:25-36`).
|
|
65
|
+
|
|
66
|
+
### omp (oh-my-pi) — parallel compiler with deadlines, two-block cache
|
|
67
|
+
|
|
68
|
+
- `buildSystemPrompt` fans out **timed, parallel** preparation (project context
|
|
69
|
+
files, skills, workspace tree, active-repo context, personality; each with a
|
|
70
|
+
deadline fallback) (`external/omp/packages/coding-agent/src/system-prompt.ts:630,723-848,954-1009`).
|
|
71
|
+
- All prompt text lives in `.md` Handlebars templates, imported `{type:"text"}` —
|
|
72
|
+
repo rule "Prompts never in code"
|
|
73
|
+
(`.../system-prompt.ts:24-31`, `.../prompts/system/system-prompt.md`).
|
|
74
|
+
- **Stable prefix is a separate entry**: the default body renders as block 0;
|
|
75
|
+
`<project-context>` is appended as a *second prompt entry* so the static
|
|
76
|
+
prefix is shared across directories — with the comment that the Anthropic head
|
|
77
|
+
cache breakpoint lands right before it (`.../system-prompt.ts:1026-1036`).
|
|
78
|
+
- **Volatile content (date/cwd) was deliberately moved out of the system
|
|
79
|
+
prompt** because it "invalidated the whole tool array"; now injected onto the
|
|
80
|
+
first user turn per request, append-only, with a synthetic developer turn when
|
|
81
|
+
no new user turn exists (`.../session/date-cwd-reminder.ts:1-11,50-129`;
|
|
82
|
+
wired at `.../sdk.ts:4333-4340`).
|
|
83
|
+
**Verified in person**: `.../date-cwd-reminder.ts:1-12` — header comment states
|
|
84
|
+
the reason (open-weight chat templates render tool schemas *after* system
|
|
85
|
+
content, so a volatile tail invalidates the whole tool array), and lines 44-48
|
|
86
|
+
guarantee append-only injection: changed values attach to a newly appended
|
|
87
|
+
user turn, leaving every earlier message byte-identical.
|
|
88
|
+
- Instructions arrive via a **capability API**, not hard-coding:
|
|
89
|
+
`contextFileCapability` (project AGENTS.md family with dedupe), `systemPromptCapability`
|
|
90
|
+
(SYSTEM.md override), `instructionCapability` — extensions add content through
|
|
91
|
+
named slots (`.../capability/context-file.ts:26-56`,
|
|
92
|
+
`.../capability/system-prompt.ts:31`).
|
|
93
|
+
- Cache: `CacheWarmer` replays requests at ~90% of cache lifetime when savings
|
|
94
|
+
clear a floor (`.../session/cache-warmer.ts:1-17`); per-component token
|
|
95
|
+
usage breakdown (`systemPromptTokens`, `skillsTokens`, …,
|
|
96
|
+
`.../session/agent-session-types.ts:529-535`); truncating MCP server
|
|
97
|
+
instructions invalidates the tools cache breakpoint (`.../sdk.ts:1374-1375`).
|
|
98
|
+
- `metaharness` is **not** runtime prompt machinery: it is their benchmark
|
|
99
|
+
manager (Harbor/SnapCompact experiments over one SQLite store; runner note at
|
|
100
|
+
`.../packages/metaharness/src/runner.ts:1257-1258`). Their word "harness" in
|
|
101
|
+
`metaharness` = a harness around the harness, for measurement.
|
|
102
|
+
|
|
103
|
+
### deepseek-harness (dsh) — ordered sections, snapshot-as-user-message
|
|
104
|
+
|
|
105
|
+
- Own package `packages/core/system-prompt`; assembled **per step** via an
|
|
106
|
+
ordered "waterfall" of sections/context entries
|
|
107
|
+
(`external/deepseek-harness/packages/core/system-prompt/src/index.ts:429,677-680`,
|
|
108
|
+
`.../agent-loop/src/agent.ts:272,407`).
|
|
109
|
+
- **Plugin contribution contract**: `ctx.systemPrompt.section()`, `.context()`,
|
|
110
|
+
`.tools(provider)`, `.variable(name, provider)` — sections are sorted by
|
|
111
|
+
numeric `order` then name, duplicates throw, scoped entries shadow globals,
|
|
112
|
+
and a `complete: true` section replaces everything else
|
|
113
|
+
(`.../system-prompt/src/index.ts:53-76,131-179,478-570,653-686`; shadowing
|
|
114
|
+
tested in `.../system-prompt/tests/scoped.spec.ts:33`).
|
|
115
|
+
- Static = section text at node 0 (identity fixed in code, `index.ts:449-466`);
|
|
116
|
+
dynamic facts (cwd, sandbox policy, time, plan) are `PromptContext` entries,
|
|
117
|
+
re-resolved per request and appended as a **durable user-role message**
|
|
118
|
+
headed "Current runtime context. This snapshot supersedes earlier…"
|
|
119
|
+
(`.../index.ts:314-318,582-602`, `.../agent-loop/src/agent.ts:411,429-440`).
|
|
120
|
+
- Workspace instructions also inject into history as sourced `user/message`
|
|
121
|
+
events, not system text (`.../packages/context/agent-instructions/README.md:88-103,158-186`).
|
|
122
|
+
- Tool ordering is part of prompt assembly: providers' tools are `structuredClone`d
|
|
123
|
+
and ordered by configured `toolOrder` with an `<unlisted-tools>` rest marker
|
|
124
|
+
(`.../system-prompt/src/index.ts:208-240,633-651,674`).
|
|
125
|
+
- Token metering as a service with fixed-density estimates
|
|
126
|
+
(`.../packages/llm/token-meter/src/index.ts:4-35`, `estimate.ts:16-27`).
|
|
127
|
+
|
|
128
|
+
### harness² — the tree is the prompt; caps and economics
|
|
129
|
+
|
|
130
|
+
- Their editable tree per substrate (here for opencode): `systemprompt.md` (c1),
|
|
131
|
+
always-on files with caps, skills loaded on demand, subagents in own context,
|
|
132
|
+
scripts, and a plugin acting inside the tool loop
|
|
133
|
+
(`external/harness2/harness2/core/prompts.py:424-453`).
|
|
134
|
+
- Always-on prose is framed as an **output-budget** cost: "ALWAYS-ON PROSE IS THE
|
|
135
|
+
EXPENSIVE OPTION… the most costly failure on this work is a run that reasons
|
|
136
|
+
until the budget is gone and produces nothing" (`.../prompts.py:129-146,455-458`).
|
|
137
|
+
- Validation discards a whole harness for: a skill without a trigger line naming
|
|
138
|
+
it in always-on text; template braces in always-on text (Jinja StrictUndefined);
|
|
139
|
+
a named script that is missing (`.../prompts.py:148-167`,
|
|
140
|
+
`.../core/tree.py:15-21` — caps, frontmatter rules per `SurfaceSpec`).
|
|
141
|
+
- Notably, their opencode-surface table labels components **c1–c8** — the same
|
|
142
|
+
eight-component numbering this harness uses (`.../prompts.py:424-431`). Both
|
|
143
|
+
projects have converged on the same tree taxonomy; treat as confirmation of
|
|
144
|
+
shape, not shared code.
|
|
145
|
+
- Instruction-bearing text is data, not branches: "Benchmark text arrives as
|
|
146
|
+
values, never as branches" (`.../prompts.py:15-20`) — prompt templates are
|
|
147
|
+
parameterized by a `BenchPrompts` value, and each new benchmark gets slots,
|
|
148
|
+
not edits. Answer-free framing is literally part of the prompt
|
|
149
|
+
(`ANSWER_FREE`, `.../prompts.py:38-44`).
|
|
150
|
+
|
|
151
|
+
### claude-code (from public material, no clone) — pending
|
|
152
|
+
|
|
153
|
+
CLAUDE.md hierarchy + `@` imports + `#` quick-memory; tool descriptions as the
|
|
154
|
+
home of usage guidance. To be filled with dated citations.
|
|
155
|
+
|
|
156
|
+
### swe-agent / openhands / kimi-cli / smolagents — pending
|
|
157
|
+
|
|
158
|
+
## 3. Trade-offs
|
|
159
|
+
|
|
160
|
+
- **Stable prefix vs fresh state.** Everyone converges on stable static +
|
|
161
|
+
appended dynamic. Two designs for the dynamic: (a) appended *system* messages
|
|
162
|
+
rendering deltas (opencode), (b) appended *user-role* context snapshot whose
|
|
163
|
+
text supersedes earlier ones (dsh). (a) is precise (a unidiff names what
|
|
164
|
+
changed); (b) is simpler and carries whole state per turn, at the cost of
|
|
165
|
+
re-sending unchanged facts.
|
|
166
|
+
- **Where volatile values live.** omp's lesson is the strongest: even one line
|
|
167
|
+
of date/cwd inside the system prompt invalidates far more than itself (it
|
|
168
|
+
invalidated the whole tool-array cache). Moving it into the user turn costs a
|
|
169
|
+
message but saves the prefix. dsh's snapshot approach (user message) has the
|
|
170
|
+
same property w.r.t. the system node.
|
|
171
|
+
- **Who may contribute.** Ordered, deterministic contribution with declared
|
|
172
|
+
order + name ties (dsh) vs deployment-order composition with a cache comment
|
|
173
|
+
(opencode) vs capability slots with dedupe (omp). The deterministic-order end
|
|
174
|
+
is friendlier to caching and to reasoning about plugins; the discovery end is
|
|
175
|
+
friendlier to "just drop a file in the repo" workflows but needs watcher-driven
|
|
176
|
+
reload and dedupe, and risks unbounded size (opencode has no caps).
|
|
177
|
+
- **Economics of always-on text.** harness² puts the sharpest numbers-language on
|
|
178
|
+
it: always-on prose competes with output budget; prefer on-demand forms. This
|
|
179
|
+
matches this harness's capped c1–c4, with the difference that harness² enforces
|
|
180
|
+
the "cut to pay" rule by validation and this harness by editor review.
|
|
181
|
+
- **Templates in code vs files.** omp keeps every word of prompt text in `.md`
|
|
182
|
+
templates; harness² inlines exact prompts as Python constants but keeps
|
|
183
|
+
benchmark text as values; dsh fixes identity prose in the constructor. Pure
|
|
184
|
+
style until a person wants to review/audit prompt diffs — then files win
|
|
185
|
+
(reviewable without code knowledge).
|
|
186
|
+
|
|
187
|
+
## 4. Adoption candidates (Tier 1 unless noted)
|
|
188
|
+
|
|
189
|
+
| # | Idea | From | Land as | Notes |
|
|
190
|
+
|---|---|---|---|---|
|
|
191
|
+
| A1 | Move volatile date/cwd out of the stable prefix into the first user turn (or the appended context message) | omp `date-cwd-reminder.ts` | prompt sections change in `src/prompt/compile.ts` | **verify our current placement first**; high cache value if our prefix carries date |
|
|
192
|
+
| A2 | Named, ordered prompt sections with deterministic order-name ties and duplicate-name rejection; scoped shadowing | dsh `system-prompt` contract | a rule inside plugin prompt sections (existing surface) | makes section ordering a contract instead of an implementation detail |
|
|
193
|
+
| A3 | Render instruction deltas as unidiff-style "what changed" text in the appended context message | opencode `instruction-state.ts` | the `xingular-context` hidden message mechanism | our channel exists; this is a rendering upgrade |
|
|
194
|
+
| A4 | Proactive cache warming near the provider's cache TTL | omp `cache-warmer.ts` | *not* a harness surface — host/app concern | Tier 2; needs measurement harness first (`probe-chat-cache-app.py` in the App) |
|
|
195
|
+
| A5 | Memory/prompts in reviewable template files rather than inline strings | omp rule | none now — style guidance for future prompt text | Tier 2, low cost, no behavior change |
|
|
196
|
+
|
|
197
|
+
Carry later: opencode's "no caps on discovered instructions" as an anti-pattern to
|
|
198
|
+
contrast with c1–c4 caps; harness²'s three discard rules (trigger line, no
|
|
199
|
+
template braces, shipped scripts) when tree validation is next touched (arm 04).
|
|
200
|
+
Also carry:
|
|
201
|
+
- **Model-conditioned policy as data.** omp forbids model-conditional branching in
|
|
202
|
+
code entirely — no `id.includes("claude")`; all model/provider policy lives in a
|
|
203
|
+
declarative KDL rule tree compiled to `rules.json`
|
|
204
|
+
(`external/omp/AGENTS.md` — "Model/Provider Policy Lives in KDL"). opencode
|
|
205
|
+
instead ships per-model prompt adjustments as *plugins*
|
|
206
|
+
(`external/opencode/packages/plugin/plugin/optimize.ts:16-86` — confirmed by
|
|
207
|
+
explorer audit). Same problem (per-model prompt/policy deltas), two answers:
|
|
208
|
+
data tables vs evaluated plugins.
|
|
209
|
+
- omp's **judge-questions convention** — per-feature JSON mapping question ids →
|
|
210
|
+
`{instructions, criteria?}` — is source material for arm 10 (refinement) and
|
|
211
|
+
its answer-free selector.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Arm 02 — Tools
|
|
2
|
+
|
|
3
|
+
Status: **core four audited** (opencode, omp, dsh + harness²/tree, smolagents,
|
|
4
|
+
swe-agent in person); kimi-cli archived; claude-code openhands pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
How tools are declared (interface & schema origin), described (who writes the
|
|
9
|
+
model-facing guidance), provided (core vs provider vs plugin vs MCP), named and
|
|
10
|
+
ordered (namespacing, `toolOrder`), gated (tier/policy/event pipeline), and
|
|
11
|
+
whether tools are JSON calls at all — or the model writes code that calls them
|
|
12
|
+
(codemode / PTC / CodeAct).
|
|
13
|
+
|
|
14
|
+
## 1. Comparison
|
|
15
|
+
|
|
16
|
+
| Source | Declaration | Gating | Calls |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| this harness | provider extension points; `describeTool` fills `{product}`; definitions in `src/tools/definitions.ts`, dispatch in `src/tools/dispatch.ts` | per-call gate, last extension to see a call | JSON + limited code tool |
|
|
19
|
+
| opencode | internal Effect plugins registering via `ctx.tool.transform(editor.add)`; `Tool.Info{input,execute,output,options{namespace,permission,codemode,pinned}}` | per-leaf `Permission.assert` (`allow\|deny\|ask`, `findLast` wildcard match, default ask; agent rules∪session; missing agent denies) | JSON by default, `codemode:true` folds tools into a code catalog |
|
|
20
|
+
| omp | 30 builtins; rich `AgentTool` (approval tier read\|write\|exec, loadMode, docTopics, per-call concurrency, speculation) | tier × per-tool policy `allow\|deny\|prompt`, modes `always-ask\|write\|yolo`; **fails closed** | JSON; speculative pre-dispatch |
|
|
21
|
+
| dsh | `defineTool` into `ctx.tools`; ToolRuntime self-feeds the system prompt via `.tools(provider)` | fixed pipeline `pre-execute(allow/deny/ask) → ctx.tools.guard() → execute → post-execute → result` | `mode: native` (all schemas) vs `ptc` (model sees only `run_code` + SDK) |
|
|
22
|
+
| harness² | tools = part of the editable tree, c4 tool guidance prose | whatever the agent's substrate does | JSON (substrate tools) |
|
|
23
|
+
| swe-agent | YAML bundles: `signature`/`docstring`/arguments; string parsing; `state_command` for interface state | curated blocklists in bundles | text commands into a stateful shell |
|
|
24
|
+
| smolagents | `@tool` decorated functions, schema from type hints, validated at init | none in-source (executor sandbox is the gate) | **code actions**; MCP tools bridged into code |
|
|
25
|
+
| kimi-cli | kosong async tool-orchestration abstraction (archived) | — | JSON |
|
|
26
|
+
|
|
27
|
+
Citations: opencode `external/opencode/packages/core/src/tool/plugin/subagent.ts:100-107`,
|
|
28
|
+
`.../tool.ts:161-291,233,293-296`, `.../permission.ts:87-97,158-172`,
|
|
29
|
+
`.../tool/runtime.ts:276-281`, `.../tool/mcp.ts:20-21,52-75`;
|
|
30
|
+
omp `external/omp/packages/agent/src/types.ts:1129-1243`,
|
|
31
|
+
`.../tools/approval.ts:17-18,53-84,100`, `.../tools/builtin-names.ts:1-36`;
|
|
32
|
+
dsh `external/deepseek-harness/packages/core/tools/README.md:30-109`,
|
|
33
|
+
`.../core/tools/src/index.ts:608-612,857,1513-1527`,
|
|
34
|
+
`.../core/system-prompt/README.md:50-52`; swe-agent
|
|
35
|
+
`external/swe-agent/tools/windowed/config.yaml:1-40`; smolagents
|
|
36
|
+
`external/smolagents/src/smolagents/tools.py` (init validation),
|
|
37
|
+
`.../tool_validation.py`.
|
|
38
|
+
|
|
39
|
+
Instruction-bearing descriptions: opencode embeds whole prose instructions in
|
|
40
|
+
tool descriptions, e.g. the never-poll rule for subagents
|
|
41
|
+
(`.../tool/plugin/subagent.ts:44-47`) and todo's full-file description imported
|
|
42
|
+
verbatim (`.../tool/todowrite.txt`, `.../tool/plugin/todo.ts:12`) — matching
|
|
43
|
+
the claude-code school. omp instead renders descriptions from static `.md`
|
|
44
|
+
templates (`.../tools/read.ts:975-996`; "prompts never in code"). dsh's `ptc`
|
|
45
|
+
moves *all* tool knowledge out of schemas into a generated SDK plus
|
|
46
|
+
`executionInstructions` (`.../core/tools/README.md:68-81`).
|
|
47
|
+
|
|
48
|
+
## 2. Trade-offs
|
|
49
|
+
|
|
50
|
+
- **Tool descriptions = prime instruction real estate.** Every source pushes how-to
|
|
51
|
+
into descriptions; the divergence is *where the text lives*: inline strings
|
|
52
|
+
(opencode), md templates (omp, self-documenting diffs), schema-erased SDKs (dsh
|
|
53
|
+
ptc). md templates are cheapest to audit; inline is cheapest to write.
|
|
54
|
+
- **Gate taxonomies.** omp's declared tier × policy is the most legible to users;
|
|
55
|
+
opencode's per-leaf asserts are the most composable (plugins wrap calls);
|
|
56
|
+
dsh's pipeline events generalize hooks at the cost of indirection. All three
|
|
57
|
+
(and ours) converge on `ask` as a first-class outcome that surfaces to a person.
|
|
58
|
+
- **`toolOrder`/namespacing.** dsh validates order config at assembly with a
|
|
59
|
+
reserved rest margin; opencode mints `server_tool` names with dotted→underscore
|
|
60
|
+
namespaces; omp caps length at 64. Namespacing rules should be one place; ours
|
|
61
|
+
has MCP namespaces via the harness's own MCP integration — worth a contract
|
|
62
|
+
test, not new machinery.
|
|
63
|
+
- **Code-as-action in three strengths.** Full CodeAct (smolagents), opt-out
|
|
64
|
+
codemode (opencode), mode-switched PTC with SDK (dsh). All reduce schema token
|
|
65
|
+
cost and multi-call latency, all concentrate risk into the executor. For this
|
|
66
|
+
harness the gate is per-call and synchronous — free-form code actions are a
|
|
67
|
+
deliberate non-goal, but `codemode`-style *internal* catalogs remain open
|
|
68
|
+
behind existing tool providers.
|
|
69
|
+
|
|
70
|
+
## 3. Adoption candidates
|
|
71
|
+
| # | Idea | From | Land as | Tier |
|
|
72
|
+
|---|---|---|---|---|
|
|
73
|
+
| A1 | Per-tool **approval tier declaration** (read/write/exec) on the harness ToolSpec; gate consults it when policy is silent | omp `AgentTool.approval` | `ToolPolicy` surface + `src/tools/types.ts` | T1 |
|
|
74
|
+
| A2 | Tool **descriptions from template files** rendered per `{product}` (`.md` in repo, imported `type:"text"`) instead of inline string literals in tool definitions | omp | tool definitions (`src/tools/*`) | T1 |
|
|
75
|
+
| A3 | `toolOrder`-style validated ordering when a caller pins an explicit tool set (fail loudly on unknowns/missing rest-marker) | dsh | capability freezing at `sessions.run` | T2 |
|
|
76
|
+
| A4 | Restrict allow/deny masks scoped to a subexpression that intersect and lift on dispose | dsh `ctx.tools.restrict` | child-run capability narrowing (`capabilities.intersect` already does this — verify equivalence before adding) | T2 verify-first |
|
|
77
|
+
|
|
78
|
+
Anti-candidates: open-ended code-as-action for model-driven tools (gate model);
|
|
79
|
+
moving gating into per-tool hooks (gate stays the final authority layer).
|