@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
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Arm 03 — Subagents
|
|
2
|
+
|
|
3
|
+
Status: **core four audited** (opencode, omp, dsh, plus our ADR-0003 lineage);
|
|
4
|
+
openhands/claude-code pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
Spawn model (tool vs scheduler vs server), child context (fresh, forked, or
|
|
9
|
+
continuable), isolation primitives (separate session, separate history, own
|
|
10
|
+
worktree/capabilities), delivery (block vs background + receipts), routing
|
|
11
|
+
(manual naming vs description-based auto-selection), and depth/capacity limits.
|
|
12
|
+
|
|
13
|
+
## Comparison
|
|
14
|
+
|
|
15
|
+
**this harness.** `spawn_subagent` + `wait_subagents` tools
|
|
16
|
+
(`src/tools/spawnSubagent.ts`): child is "a fresh child run for independent
|
|
17
|
+
work… no conversation history and no more capabilities than you"; spawn returns
|
|
18
|
+
the child run id immediately; results arrive **automatically before you finish**
|
|
19
|
+
(native-history delivery receipts per ADR-0003); 24k per-report cap
|
|
20
|
+
(`spawnSubagent.ts` `reported()`); depth limits live in
|
|
21
|
+
`src/sessions/subagents.ts` (exported constants). Architectural statement:
|
|
22
|
+
Architectural statement:
|
|
23
|
+
opaque-run children (runStore writes, opaque ids).
|
|
24
|
+
|
|
25
|
+
**opencode — subagent is a tool, not a scheduler.** Agents registry
|
|
26
|
+
(`mode: primary|subagent`) with selectability excluding subagents from direct
|
|
27
|
+
conversation (`.../core/src/agent.ts:74-75`). The `subagent` tool rejects
|
|
28
|
+
primaries/unknowns, enforces depth via config, asserts permission, then creates
|
|
29
|
+
a child session and prompts it "You are a subagent spawned by another session."
|
|
30
|
+
— **fresh context, nothing inherited** (`.../tool/plugin/subagent.ts:129-218`).
|
|
31
|
+
Foreground variant blocks and wraps the final text in
|
|
32
|
+
`<subagent sessionID=… state="completed">`; background replies immediately with
|
|
33
|
+
an explicit **never-poll instruction** and completion notification
|
|
34
|
+
(`.../subagent.ts:19-27,229-265`). **Routing is description-based**: a context
|
|
35
|
+
hook appends "Available subagents:" with each agent's own description to the
|
|
36
|
+
tool description (`.../subagent.ts:282-309`).
|
|
37
|
+
|
|
38
|
+
**omp — spawn machinery with isolation budgets.** The `task` tool; agent
|
|
39
|
+
definitions from bundled + `~/.omp/agent/agents/*.md` + `.omp/agents/*.md`
|
|
40
|
+
(`.../task/index.ts:4-10`). `SpawnRun` holds a semaphore permit and streams
|
|
41
|
+
progress; the owner adopts binding abort signal/sinks
|
|
42
|
+
(`.../task/spawn-run.ts:47-88`). **Speculative launch starts the child while
|
|
43
|
+
the `tasks[]` argument is still streaming** (`.../task/speculative-launch.ts`).
|
|
44
|
+
Isolation: pinned settings, advisor forced off, **mid-turn compaction forced on
|
|
45
|
+
(whole assignment is one turn)**, isolated runs get their own **worktree** and
|
|
46
|
+
may not expose roots outside it (`.../task/executor.ts:1132,4033-4055,4339`).
|
|
47
|
+
Structured children get `yield` to stream partial results
|
|
48
|
+
(`docs/task-agent-discovery.md:38`).
|
|
49
|
+
|
|
50
|
+
**dsh — services + backends, two child topologies.** `ctx.subagents` +
|
|
51
|
+
provider backends (local, ACP, Codex, Claude DSH-SDK) + a tool plugin
|
|
52
|
+
(`.../packages/subagent/README.md:27-35`). Spawn returns `started subagent
|
|
53
|
+
<childId>` immediately; a completion notice delivery later
|
|
54
|
+
(`.../tool-subagent/README.md:59`). `spawn` = fresh child; **`fork` = seeded
|
|
55
|
+
from the parent's completed history** (`.../subagent/README.md:28-29` — the one
|
|
56
|
+
source with tree-history in context children). Local children **continue
|
|
57
|
+
accepting messages** (cold-resume); external backends "execute once"
|
|
58
|
+
(`:12,61`). Defaults: 8 active, depth 1 (`.../subagent/README.md:53,49`).
|
|
59
|
+
The model names presets from an enum allowlist; **no description routing**
|
|
60
|
+
(`.../tool-subagent/README.md:52,68`).
|
|
61
|
+
|
|
62
|
+
**openhands (pending)** conversation-per-container REST server;
|
|
63
|
+
**claude-code (pending)** `.claude/agents/*.md` description routing.
|
|
64
|
+
|
|
65
|
+
## Trade-offs
|
|
66
|
+
|
|
67
|
+
- **Receipts vs block.** Ours receipts-then-auto-deliver; opencode's
|
|
68
|
+
foreground blocks and the background variant needs a no-poll instruction to
|
|
69
|
+
stop wasted loops — our "results arrive automatically" tool description does
|
|
70
|
+
the same thing natively. block variants pay latency, buy simplicity.
|
|
71
|
+
- **What the child sees.** Everyone defaults fresh. dsh's `fork` (parent history
|
|
72
|
+
as seed) is the only in-history-inherited design — powerful for "continue in
|
|
73
|
+
the main context's condition", dangerous for either prosecution
|
|
74
|
+
side-venting or slow joins; ours rejects it by `"no more capabilities than
|
|
75
|
+
you"` + fresh-run rule.
|
|
76
|
+
- **Isolation granularity.** worktree (omp isolated runs) is the strongest
|
|
77
|
+
world-isolation; ours ties isolation to account and run records instead. The
|
|
78
|
+
`tools` CSV narrowing idea maps to our `capabilities.intersect` — same
|
|
79
|
+
primitive, different vocabulary.
|
|
80
|
+
- **Routing.** Description-based auto-pick (opencode, and claude-code's docs)
|
|
81
|
+
puts all selection power in the model's reading; ours requires named briefs
|
|
82
|
+
and a Directory when names exist, which matches the opaque-id
|
|
83
|
+
contract (no names in the harness; names arrive via Directory).
|
|
84
|
+
|
|
85
|
+
## Adoption candidates
|
|
86
|
+
|
|
87
|
+
| # | Idea | From | Land as | Tier |
|
|
88
|
+
|---|---|---|---|---|
|
|
89
|
+
| S1 | Inject capability-set summaries (slots "Current subagents") into the tool description **when names exist via Directory**, instead of static description | opencode context hook | tool provider building the spawn tool's description | T2 (only if app supplies names) |
|
|
90
|
+
| S2 | Receipt text carries child tool limits next to the 24k cap (`reported()` already does this only implicitly; make the receipt self-describing) | ours (deficiency) | `spawnSubagent.ts` | T1 |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Arm 04 — Skills & loading
|
|
2
|
+
|
|
3
|
+
Status: **three sources audited** (dsh, opencode, harness² + our tree);
|
|
4
|
+
omp's skill tool verified as builtin only (`manage_skill`); claude-code/openhands pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
Skill format and discovery, what ships in context (name+description only vs
|
|
9
|
+
whole body), how bodies are fetched (tool call vs command), trust (does loading
|
|
10
|
+
run code?), and the ruling constraint here: the harness is the only loader, with
|
|
11
|
+
extension discovery switched off.
|
|
12
|
+
|
|
13
|
+
## Comparison
|
|
14
|
+
|
|
15
|
+
**this harness.** Skills are part of the versioned tree (c6), loaded only when
|
|
16
|
+
their exact code is trusted (`src/tree/trust.ts`), surfaced via tree sections
|
|
17
|
+
and `Plugins.loading` (src/plugins/) — extension discovery is disabled; the
|
|
18
|
+
seed includes an `autotrigger` mechanism (`src/tree/tree.ts`, used by
|
|
19
|
+
`src/tree/seed.ts`) — skills may carry trigger conditions compiled into
|
|
20
|
+
always-on text.
|
|
21
|
+
|
|
22
|
+
**opencode.** `SKILL.md` files found by a depth-6 scan
|
|
23
|
+
(`.../core/src/config/plugin/skill-scan.ts:3,29`), also fetched from URL
|
|
24
|
+
indexes into a global dir (`.../skill/discovery.ts:112,194`); availability is
|
|
25
|
+
permission-gated (`.../skill.ts:33-34`). Progressive disclosure: instructions
|
|
26
|
+
list skills in system context; the `skill` tool lazily loads the body "when
|
|
27
|
+
the task at hand matches its description", including a sampled file list
|
|
28
|
+
(`.../tool/plugin/skill.ts:19-33`).
|
|
29
|
+
|
|
30
|
+
**omp.** `manage_skill` builtin (30 builtins list,
|
|
31
|
+
`.../tools/builtin-names.ts:24`); skills also **emitted as a product of memory
|
|
32
|
+
consolidation** (`docs/memory.md:78-88` — learned lessons land in `skills/` on
|
|
33
|
+
disk), an unusual write-back path. Trust/approval per separate ability loading
|
|
34
|
+
unverified.
|
|
35
|
+
|
|
36
|
+
**dsh.** The cleanest contract: before the first request the model receives a
|
|
37
|
+
**durable catalog** — "available skill names and capped descriptions"
|
|
38
|
+
(default cap 500 chars) — and loads body instructions through the `skill` tool;
|
|
39
|
+
`/name` invocation injects the same instructions the user named;
|
|
40
|
+
catalog changes append a **complete replacement** message, empty catalog retires
|
|
41
|
+
old names (`.../packages/skill/tool-skill/README.md:12,54-57`).
|
|
42
|
+
|
|
43
|
+
**harness² — the validation-first school.** Frontmatter requires `name:`
|
|
44
|
+
matching the directory and a `description:`; a malformed file is silently dropped
|
|
45
|
+
load if malformed (`.../core/prompts.py:113-115` in the tts pack: naming rules,
|
|
46
|
+
and `.../prompts.py:151-157`: "An unnamed skill is never opened anyway").
|
|
47
|
+
Its three discard rules (trigger line naming the skill in always-on text; no
|
|
48
|
+
template braces; shipped scripts travel with the skill,
|
|
49
|
+
`.../prompts.py:148-167`, `.../core/tree.py` validation) turn prompt-prose
|
|
50
|
+
conventions into machine-checks — the same philosophy as our `validate()`.
|
|
51
|
+
|
|
52
|
+
**claude-code / openhands (pending).** SKILL.md progressive disclosure spec and
|
|
53
|
+
SDK microagents respectively.
|
|
54
|
+
|
|
55
|
+
## Trade-offs
|
|
56
|
+
|
|
57
|
+
- **Catalog hygiene.** dsh's "complete replacement + empty retires" keeps
|
|
58
|
+
staleness windows near-zero on a cheap message; opencode's rescan keeps
|
|
59
|
+
file-truth simplicity. The durable-catalog variant is the better fit for our
|
|
60
|
+
file truth. The durable-catalog variant is the better fit for our
|
|
61
|
+
stable-prefix diagnostics (context updates could carry skill deltas).
|
|
62
|
+
- **Validation turns conventions into gates.** harness² proves skill trigger
|
|
63
|
+
lines and shipped scripts can be enforced mechanically; ours additionally
|
|
64
|
+
require trust for *code* — the sharpest position (everything model-visible is
|
|
65
|
+
a plugin, c8 loads only trusted content).
|
|
66
|
+
- **Cost shape.** Everyone: bodies are free until invoked; naming is the true
|
|
67
|
+
gate. An unnamed skill is dead weight in all four.
|
|
68
|
+
|
|
69
|
+
## Adoption candidates
|
|
70
|
+
|
|
71
|
+
| # | Idea | From | Land as | Tier |
|
|
72
|
+
|---|---|---|---|---|
|
|
73
|
+
| K1 | Emit a **skill catalog delta** (name + capped description) in the hidden `xingular-context` message instead of relying on static tree text alone, when trees change mid-run | dsh durable-catalog + our context-update channel | `src/prompt/compile.ts` context update contents | T2 |
|
|
74
|
+
| K2 | Adopt harness²'s three validation rules into `validate()` (trigger-line presence for skills; script existence paths already enforced, re-verify) | harness² | tree validation + tests | T1 verify-first |
|
|
75
|
+
| K3 | **Enforce skill trigger lines mechanically** (autotrigger already carries triggers; keep prose+code in sync) | both | `src/tree/tree.ts` validation | T1 verify-first |
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Arm 05 — Context management
|
|
2
|
+
|
|
3
|
+
Status: **core three audited** (opencode, omp, dsh); smolagents skeleton;
|
|
4
|
+
ours=pending inventory beyond contracts; claude-code/openhands pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
What is sent per turn vs fetched on demand; compaction triggers and strategies;
|
|
9
|
+
where summarization sits relative to the cache; truncation of tool outputs;
|
|
10
|
+
token accounting granularity (uncached input / cache read+write separation).
|
|
11
|
+
|
|
12
|
+
## Comparison
|
|
13
|
+
|
|
14
|
+
**this harness (contracts).** Stable system prefix + hidden `xingular-context`
|
|
15
|
+
native-history message for changing state; usage accounting: `inputTokens` is
|
|
16
|
+
uncached input, cache reads/writes separate, reasoning inside output,
|
|
17
|
+
`usage.updated` cumulative per run (repo contracts). Compaction story pending
|
|
18
|
+
inventory (whether sessions rely on Pi native history management + context
|
|
19
|
+
updates).
|
|
20
|
+
|
|
21
|
+
**opencode — summarizer as a resident agent.** Triggers: `auto` when estimated
|
|
22
|
+
context ≥ ceiling (window − max(15%, 16k) reserve), `overflow` after provider
|
|
23
|
+
rejection, `manual` (`.../session/compaction.ts:53-57,93-101,849-856`); auto
|
|
24
|
+
skips until a fresh provider measurement exists (`:245-253`).
|
|
25
|
+
Strategy: a dedicated compaction agent/model summarizes every dialog into a
|
|
26
|
+
**fixed template** (Objective / Requirements / Decision / Work State / Next
|
|
27
|
+
Move / Relevant Files) while keeping the newest `keep` tokens verbatim as a
|
|
28
|
+
`<conversation-checkpoint>`; **the whole conversation is sent to the
|
|
29
|
+
summarizer to reuse the prefix cache** (`:107-138,256-332`). Rejection retries
|
|
30
|
+
at 70/50/35% of the rejected size (`:455-461`). Generic ToolOutput truncation to
|
|
31
|
+
maxLines/maxBytes with `metadata.truncated`
|
|
32
|
+
(`.../core/src/tool-output.ts:28-88`); shell saves full output to a file and
|
|
33
|
+
returns a bounded tail (`.../tool/plugin/shell.ts:42-43`).
|
|
34
|
+
Accounting: latest assistant response is the anchor
|
|
35
|
+
(`input+cacheRead+cacheWrite+output+reasoning` measured) plus an estimate of
|
|
36
|
+
unmeasured since (`:812-842`); 4 chars/token estimate ±15%
|
|
37
|
+
(`.../session/model-request.ts:53-54`).
|
|
38
|
+
|
|
39
|
+
**omp — the strategy ladder + deterministic frontier.** Trigger points: post-turn
|
|
40
|
+
over `resolveThresholdTokens`, mid-turn, idle, overflow-recovery
|
|
41
|
+
(`.../session/session-maintenance.ts:626,2147,2246,2412`).
|
|
42
|
+
`compaction.methodOrder` ladder: LLM summarize (regular/handoff), `shake`
|
|
43
|
+
(local mechanical elision to `artifact://` refs), `snapcompact`
|
|
44
|
+
(`docs/compaction.md:202-215`). **Snapcompact is local/deterministic, no LLM**:
|
|
45
|
+
discarded history serialized with per-result caps into provider-aware PNG
|
|
46
|
+
bitmap frames (typography per provider family), persisted and re-attached each
|
|
47
|
+
rebuild (`packages/snapcompact/README.md:3-29,44-68`). Budgets: kept context
|
|
48
|
+
≤60% of threshold, target ≤80% (`docs/compaction.md:217,221`). Cache care:
|
|
49
|
+
pruning blanks outputs only within the model's `prompt-cache-lookback`
|
|
50
|
+
(`docs/compaction.md:248`); summaries drop whole call/result pairs (`:250`).
|
|
51
|
+
Byte-stable system prompt between turns is an invariant
|
|
52
|
+
(`.../session/agent-session.ts:2607`).
|
|
53
|
+
|
|
54
|
+
**dsh — formulas + query-ability.** `compaction-basic` trigger:
|
|
55
|
+
`floor(min(W×0.8, W−O−headroom))`, headroom 65_536, keeps newest 16% of the
|
|
56
|
+
usable window, one extra model request, summary-only retention
|
|
57
|
+
(`.../packages/compaction/compaction-basic/README.md:12,32,62-68`).
|
|
58
|
+
Oversized tool results pruned first; images offloaded to placeholders
|
|
59
|
+
(`.../packages/compaction/README.md:31-32`). `session-query` = SQLite FTS5
|
|
60
|
+
full-text search over the durable log, independent of compaction
|
|
61
|
+
(`.../packages/session-query/README.md:12,30`).
|
|
62
|
+
|
|
63
|
+
**smolagents.** `AgentMemory` is a step log (ToolCall/ActionStep/PlanningStep/
|
|
64
|
+
FinalAnswer) rebuilt to messages with `summary_mode` each step — replay-style,
|
|
65
|
+
no incremental fades (`external/smolagents/src/smolagents/memory.py:25,46,92,206-229`).
|
|
66
|
+
|
|
67
|
+
## Trade-offs
|
|
68
|
+
|
|
69
|
+
- **Summarizer economics.** opencode sends the *whole transcript* to the
|
|
70
|
+
summarizer to reuse the prefix cache — larger paid input per compression, but
|
|
71
|
+
cache-discounted and higher-fidelity. dsh keeps only the summary (cheapest
|
|
72
|
+
retention). The choice hinges on whether compaction runs once or repeatedly.
|
|
73
|
+
- **A deterministic rung is the safety net.** omp's ladder means a compaction
|
|
74
|
+
never fully depends on a slow/failing LLM pass (shake/snapcompact). That
|
|
75
|
+
resilience has no counterpart in opencode/dsh (dsh retries on overflow).
|
|
76
|
+
- **Searching beats re-shipping.** dsh's session-query (and omp's shard
|
|
77
|
+
omp's shard-style retrieval in `shake`) treat old context as a database, not a
|
|
78
|
+
transcript; "retrieve details through tools when needed" matches our
|
|
79
|
+
CONTEXT_GUIDANCE wording (`src/prompt/compile.ts:333`).
|
|
80
|
+
- **Accounting honesty.** opencode's anchor-measured + estimated-elsewhere and
|
|
81
|
+
our uncached/cached split are compatible; the 4-chars/token estimate is the
|
|
82
|
+
common fixed-density fallback (dsh token-meter identical semantics).
|
|
83
|
+
|
|
84
|
+
## Adoption candidates
|
|
85
|
+
|
|
86
|
+
| # | Idea | From | Land as | Tier |
|
|
87
|
+
|---|---|---|---|---|
|
|
88
|
+
| C1 | A fixed-template summary shape (named sections) for any summarization run, so restored context is predictable and diffable | opencode compaction template | refine/trajectory or session docs; needs Pi-native compaction knowledge first | T2 verify-first |
|
|
89
|
+
| C2 | Prune-first ordering (oversized tool outputs) before any summarization | dsh + omp | facet of the context update path | T2 verify-first (what already trims?) |
|
|
90
|
+
| C3 | Keep a verbatim tail checkpoint marker in any summary | opencode | same home as C1 | T2 |
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Arm 06 — Memory
|
|
2
|
+
|
|
3
|
+
Status: **core four audited** (omp, dsh, opencode, harness²) + our Wiki;
|
|
4
|
+
claude-code/openhands pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
What counts as memory (instruction files, durable notes, episodic stores,
|
|
9
|
+
learned harnesses), who writes and when (model via tools, background
|
|
10
|
+
consolidation, per-write hooks), what shapes entries and their limits, and how
|
|
11
|
+
recall is gated (never ship rubrics or other answer-leaking data).
|
|
12
|
+
|
|
13
|
+
## Comparison
|
|
14
|
+
|
|
15
|
+
**this harness.** Wiki notes: `noteChange` fires once the file is in place, in
|
|
16
|
+
the background; a hook's failure never reaches the write; every new write point
|
|
17
|
+
calls it too (repo contract). Injection sections are bounded (`WIKI_BUDGET`,
|
|
18
|
+
`NOTES_LISTED` in `src/prompt/compile.ts:167` etc.), listing notes + revision,
|
|
19
|
+
with more available via `wiki-list`/`wiki-search` tools. The refine experience
|
|
20
|
+
library is a separate, answer-free lane (arm 10) — never ships rubrics
|
|
21
|
+
(`refine/evidence.ts` guard).
|
|
22
|
+
|
|
23
|
+
**omp — the memory machine.** Five `memory.backend` modes: off | local |
|
|
24
|
+
hindsight | mnemopi | sharpshooter (`docs/memory.md:3-11`). A startup
|
|
25
|
+
background job runs two phases (per-session extraction → global consolidation
|
|
26
|
+
with lease+heartbeat, skipped for subagents), producing per-project `MEMORY.md`
|
|
27
|
+
(+ summary) and lessons and **skills/** on disk
|
|
28
|
+
(`.../memories/index.ts:29-67`; `docs/memory.md:22-26,74-89`). Injection =
|
|
29
|
+
Memory Guidance block at session start sharing a 5000-token budget with
|
|
30
|
+
lessons (`docs/memory.md:132`); `learn` lessons capped 100 entries × 2000
|
|
31
|
+
chars, redacted (`docs/memory.md:70`). `mnemopi` = local SQLite
|
|
32
|
+
working/episodic engine with embeddings and a `memory://` read protocol plus
|
|
33
|
+
model-facing tools `recall|retain|reflect|memory_edit`
|
|
34
|
+
(`packages/mnemopi/README.md:5-8`; `docs/memory.md:34-46`). `hindsight` =
|
|
35
|
+
remote vector service; recall on first user turn, auto-retain every N turns
|
|
36
|
+
(`.../hindsight/state.ts:385-388`). Writes happen minutes/days later — nothing
|
|
37
|
+
is "auto right after task".
|
|
38
|
+
|
|
39
|
+
**dsh — durability without a memory package.** No memory package by design:
|
|
40
|
+
the durable session log (immutable JSONL + checkpoint policy,
|
|
41
|
+
`.../packages/session/README.md:38-39`), todos persisting across sessions
|
|
42
|
+
(owned by the session; whole-list replace, `.../packages/todo/README.md:12`),
|
|
43
|
+
`spill` storing oversized text out of context with locator+guidance
|
|
44
|
+
(`.../packages/spill/README.md:12,30-31`), `storage` for app data that is
|
|
45
|
+
**never model-visible** (`.../packages/storage/README.md:12,27-30`),
|
|
46
|
+
`deliverables` recording outputs as client-only events
|
|
47
|
+
(`.../packages/deliverables/README.md:12,27-28`). Cross-session memory:
|
|
48
|
+
deliberately absent.
|
|
49
|
+
|
|
50
|
+
**opencode.** No cross-session memory product: per-session todos (feature-gated
|
|
51
|
+
`experimental.todo`), skills/config as durable files, snapshot revert/restore
|
|
52
|
+
(`.../tool/plugin/todo.ts:50-75`; `.../session/revert.ts:37-42`). Memory is a
|
|
53
|
+
community-plugin story.
|
|
54
|
+
|
|
55
|
+
**harness².** Memory belongs to refinement: the per-domain experience library
|
|
56
|
+
carries full adopted trees + `EXPERIENCE.md` (why + lesson) per task, scoped
|
|
57
|
+
per run and domain, starting empty
|
|
58
|
+
(`external/harness2/harness2/core/library.py:15-23`). At proposal time the
|
|
59
|
+
library is *read* (`INDEX.md` browse, `prompts.py:320-328`), workspace facts
|
|
60
|
+
are re-verified before reuse — memory is a drift-checked `[cue→lesson]`, not a
|
|
61
|
+
freeform store. The editable tree also holds `LongTermMEMORY.md` as c3 durable
|
|
62
|
+
facts, "ALWAYS ON" with the output-budget price tag (`.../prompts.py:104,426`).
|
|
63
|
+
|
|
64
|
+
**claude-code (pending).** CLAUDE.local.md, `#` quick-notes, user memory file
|
|
65
|
+
(publishable specs; citations pending).
|
|
66
|
+
|
|
67
|
+
## Trade-offs
|
|
68
|
+
|
|
69
|
+
- **Where memory lives.** The file the model reads (`MEMORY.md`, our Wiki) is
|
|
70
|
+
the visible tier; the episodic store (mnemopi) is the cheap tier for
|
|
71
|
+
per-project recall. omp is the only source with both, and it pays for it with
|
|
72
|
+
background jobs and lease/heartbeat machinery.
|
|
73
|
+
- **Learning to write.** harness²'s lessons have a *scope contract*
|
|
74
|
+
(generic/procedural, but never task facts; "too generic changes nothing, task
|
|
75
|
+
facts are wrong anchors") — enforced by prompt discipline and by the `cue`
|
|
76
|
+
shape in ours (`src/refine/prompts.ts:425`). Any Wiki lesson should carry the
|
|
77
|
+
same contract (pattern vs fact).
|
|
78
|
+
- **Caps and redaction.** omp's budget regime (100×2000 lessons, injection caps)
|
|
79
|
+
caps) mirrors our WIKI_BUDGET approach; worth remembering that redaction is
|
|
80
|
+
part of the cap story, not just size.
|
|
81
|
+
- **Nothing is model-visible that shouldn't be** (dsh `storage`): keep the
|
|
82
|
+
separation of run records (ours).validate Never model-visible: run events
|
|
83
|
+
used for the Wiki must already be validated kinds (family rule).
|
|
84
|
+
|
|
85
|
+
## Adoption candidates
|
|
86
|
+
|
|
87
|
+
| # | Idea | From | Land as | Tier |
|
|
88
|
+
|---|---|---|---|---|
|
|
89
|
+
| M1 | Apply harness²'s lesson-shape contract to any Wiki note that summarizes behavior (cue = shape of situation, lesson = checkable operation, NO_ENTRY when unsupported) | harness² + omp caps | Wiki note template/validation (plugin) | landed: `src/history/lessons.ts` (PROP-0008) |
|
|
90
|
+
| M2 | Evaluate a `memory://`-style read protocol (note retrieval as URI) — compare cost against plain wiki tools before adopting | omp mnemopi | none (note only) | T3 |
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Arm 07 — Governance
|
|
2
|
+
|
|
3
|
+
Status: **core three audited** (opencode, omp, dsh) + swe-agent blocklists,
|
|
4
|
+
smolagents executor posture; claude-code/openhands pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
Who may call what, expressed how (per-call gate, tier×policy, event pipeline,
|
|
9
|
+
modes), approval UX (`ask` as outcome), fallback behavior (fail-closed or not),
|
|
10
|
+
trust for loaded code, secret/account isolation.
|
|
11
|
+
|
|
12
|
+
## Comparison
|
|
13
|
+
|
|
14
|
+
**this harness (contracts).** Per-call gate as the final extension; standing
|
|
15
|
+
approvals; single-use operation approvals in the app scope; account pinning
|
|
16
|
+
and redaction; tree plugins load only when their exact code is trusted
|
|
17
|
+
(`src/tree/trust.ts`).
|
|
18
|
+
|
|
19
|
+
**opencode — effect assertions with a wildcard ladder.** Rules: `allow|deny|ask`
|
|
20
|
+
literals, `findLast` wildcard resource match, default ask; agent rules and
|
|
21
|
+
session-level rules merge; a missing agent rule means deny-all
|
|
22
|
+
(`.../core/src/permission.ts:87-97,158-172`); user-saved "always allow"
|
|
23
|
+
(`:148-155`); catalog filtering only for wildcard-deny leaves
|
|
24
|
+
(`.../tool.ts:233,293-296`). Plugins may reject calls via `execute.before`
|
|
25
|
+
(`.../packages/plugin/src/effect/tool.ts:20-52`) — handy, but note the gate
|
|
26
|
+
stays the execution boundary's last authority only if core retains its own
|
|
27
|
+
assert.
|
|
28
|
+
|
|
29
|
+
**omp — declared tiers and modes.** `ToolTier = read|write|exec` per tool
|
|
30
|
+
(exec default when unclaimed), per-tool policy `allow|deny|prompt`, modes
|
|
31
|
+
`always-ask | write | yolo`; **missing context fails closed to always-ask**
|
|
32
|
+
(`.../tools/approval.ts:17-18,53-84,100,1226-1230`). Extension hooks wrap every
|
|
33
|
+
call (`extensibility/hooks/tool-wrapper.ts`).
|
|
34
|
+
|
|
35
|
+
**dsh — pipeline events, not a package.** Gate inside dsh-tools:
|
|
36
|
+
`tools/pre-execute` (allow/deny/ask) → monotonic guard() reasons → execute →
|
|
37
|
+
post-execute → result (observe-only)
|
|
38
|
+
(`.../packages/core/tools/README.md:89,109`; ask at `.../index.ts:608-612`).
|
|
39
|
+
Bundle base ships a default policy confining file writes and asking before
|
|
40
|
+
risky actions (`.../bundle/base/README.md:50`). OS sandbox separately:
|
|
41
|
+
file-effect policy classes with Landlock/Seatbelt/Windows backends and one-time
|
|
42
|
+
approved escalation (`.../packages/sandbox/README.md:12,30`).
|
|
43
|
+
|
|
44
|
+
**swe-agent.** Governance = curation: blocklist files in bundles
|
|
45
|
+
(`external/swe-agent/tools` listing); the environment's own command filter
|
|
46
|
+
(pending detail).
|
|
47
|
+
|
|
48
|
+
**smolagents.** Almost none in-source; the free executor (interception-based
|
|
49
|
+
local or paid remote) carries the risk — the anti-reference for our no-code-actions stance.
|
|
50
|
+
|
|
51
|
+
**claude-code (pending).** Permission modes + allow/deny rules + hooks.
|
|
52
|
+
|
|
53
|
+
## Trade-offs
|
|
54
|
+
|
|
55
|
+
- **Declarative vs hook-composed.** A user wanting "always allow reads, ask on
|
|
56
|
+
writes" gets legibility from omp's tables; a plugin author gets power from
|
|
57
|
+
opencode's before-hooks. Our per-call gate can host both: tiers inform, hooks
|
|
58
|
+
advise, gate decides.
|
|
59
|
+
- **Fail-closed culture.** omp fails closed on missing policy; opencode defaults
|
|
60
|
+
ask; dsh asks by bundle default. Convergent good posture — record as a
|
|
61
|
+
shared norm, and keep our own default equally closed.
|
|
62
|
+
- **Escalations are one-time, auditable.** dsh's one-time approved sandbox
|
|
63
|
+
escalation and our single-use approvals express the same idea; forcing a
|
|
64
|
+
person to re-re-approve persistent bypasses is the safer curve.
|
|
65
|
+
|
|
66
|
+
## Adoption candidates
|
|
67
|
+
|
|
68
|
+
| # | Idea | From | Land as | Tier |
|
|
69
|
+
|---|---|---|---|---|
|
|
70
|
+
| G1 | Tier-per-tool declarations inform standing-approval wording (reads bulk-allowed, writes asked) | omp | ToolPolicy documents + default policy | T1 |
|
|
71
|
+
| G2 | Codify "policy missing ⇒ ask" as an invariant test | omp fail-closed | src tests around the gate | T1 |
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Arm 08 — Execution
|
|
2
|
+
|
|
3
|
+
Status: **core three audited** (opencode, omp, dsh) + swe-agent environments,
|
|
4
|
+
smolagents executors; hands pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
Where a step's process runs (own process, PTY owner, container), sandbox
|
|
9
|
+
mechanics per OS, output shapes (streaming, truncation, side-files), and who
|
|
10
|
+
owns the terminal surface.
|
|
11
|
+
|
|
12
|
+
## Comparison
|
|
13
|
+
|
|
14
|
+
**this harness (contracts).** Host owns PTY and supervision; the harness owns
|
|
15
|
+
the terminal launch spec; a session runs in its account's own Pi agent folder,
|
|
16
|
+
never `~/.pi` (isolation by account).
|
|
17
|
+
|
|
18
|
+
**opencode.** The `shell` tool runs via the core Shell service returning
|
|
19
|
+
bounded tail output with full output saved to a file
|
|
20
|
+
(`.../tool/plugin/shell.ts:17-23,42-43`). `persistent-pty` is a separate
|
|
21
|
+
per-server daemon for owned PTYs rooted at `<state>/pty` — for interactive
|
|
22
|
+
frontends, distinct from the tool path
|
|
23
|
+
(`.../core/src/persistent-pty/index.ts:6-23,129` — tool-vs-PTY overlap
|
|
24
|
+
unverified).
|
|
25
|
+
|
|
26
|
+
**omp.** The strongest in-process Unix environment: bash runs inside a Rust
|
|
27
|
+
`pi-shell` host **with vendored uutils coretools (pi-builtins)** — real
|
|
28
|
+
utilities, one process (`crates/pi-shell/Cargo.toml:18`,
|
|
29
|
+
`crates/pi-builtins/src/`). Always non-interactive env (pagers off,
|
|
30
|
+
TERM=dumb, credential prompts fail via `false`)
|
|
31
|
+
(`.../exec/non-interactive-env.ts:6-25`). No OS-level sandbox located
|
|
32
|
+
(unverified absence).
|
|
33
|
+
|
|
34
|
+
**dsh.** Layered: OS sandbox classes (read-only / workspace-write /
|
|
35
|
+
danger-full-access on Landlock/Seatbelt/Windows tokens, one-time approved
|
|
36
|
+
escalation), exactly one shell executor per composition exposing `bash`/`pwsh`
|
|
37
|
+
tools, and a single `ctx.subprocess` service with bounded output and scrubbed
|
|
38
|
+
env (`.../sandbox/README.md:12,30`; `.../shell/README.md:12,38`;
|
|
39
|
+
`.../subprocess/README.md:12,27`).
|
|
40
|
+
|
|
41
|
+
**swe-agent.** Containerized bash environments per run with tool bundles
|
|
42
|
+
bound to the interface (`sweagent/environment/`); benchmark single-shot
|
|
43
|
+
workspaces.
|
|
44
|
+
|
|
45
|
+
**smolagents.** Local executor intercepts/denies dangerous calls in-process;
|
|
46
|
+
remote (E2B etc.) otherwise (`local_python_executor.py`, `remote_executors.py`).
|
|
47
|
+
|
|
48
|
+
## Trade-offs
|
|
49
|
+
|
|
50
|
+
- **In-process Unix vs OS sandbox.** omp buys speed/fidelity with a Rust-hosted
|
|
51
|
+
environment; dsh buys verifiable confinement with OS primitives. This harness
|
|
52
|
+
runs on a host's PTY, so the OS-sandbox direction (dsh) is the compatible
|
|
53
|
+
one; "in-process coretools" is an execution detail of pi, not adoptable
|
|
54
|
+
machinery here without duplicating rust-supported layers.
|
|
55
|
+
- **Two command paths is the norm.** opencode (tool shell vs owned PTY) and dsh
|
|
56
|
+
(shell executor vs subprocess service) both split "model calls" from
|
|
57
|
+
"platform plumbing" — our launch-spec/PTY split matches; the invariant to
|
|
58
|
+
keep: environments are per-account, launched by spec, never shared across
|
|
59
|
+
accounts.
|
|
60
|
+
- **Output hygiene** (bounded tails + side files, scrubbed env, non-interactive
|
|
61
|
+
defaults) is universal; treat as a checklist for any new tool rather than a
|
|
62
|
+
design to adopt.
|
|
63
|
+
|
|
64
|
+
## Adoption candidates
|
|
65
|
+
|
|
66
|
+
| # | Idea | From | Land as | Tier |
|
|
67
|
+
|---|---|---|---|---|
|
|
68
|
+
| E1 | Sandboxing classes as a ToolPolicy option (read-only/workspace-write) for *host* integrations — offered, never default | dsh | ToolPolicy scope option | T2 (needs app-level sandbox plumbing) |
|
|
69
|
+
| E2 | "One subprocess service" norm: all child spawns montage through one owned helper with bounded output + env scrub | dsh subprocess | App-sidecar ownership unchanged; only normative doc | T1 as ADR text |
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Arm 09 — Observability
|
|
2
|
+
|
|
3
|
+
Status: **core three audited** (opencode, omp, dsh) + swe-agent trajectories;
|
|
4
|
+
hands pending.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
What is recorded (events, trajectories, usage), validation of records, who may
|
|
9
|
+
write run records, live relay to interfaces, retention/redaction, and cost
|
|
10
|
+
accounting granularity.
|
|
11
|
+
|
|
12
|
+
## Comparison
|
|
13
|
+
|
|
14
|
+
**this harness (contracts).** Validated run events saved per run by the only
|
|
15
|
+
writer (`sessions/runStore.ts`); `usage.updated` cumulative per run with the
|
|
16
|
+
uncached-input / cache-read / cache-write split; app relays to UI.
|
|
17
|
+
|
|
18
|
+
**opencode.** "event-logger.ts listens on the event bus and logs only
|
|
19
|
+
allow-listed config-type events (agent/provider/model/command/config updated),
|
|
20
|
+
as a global node" (`.../core/src/event-logger.ts:10-19`). Usage published as
|
|
21
|
+
`SessionEvent.UsageRecorded` from the compaction anchor
|
|
22
|
+
(`.../session/compaction.ts:632-639`); trajectory surface lives in session-ui
|
|
23
|
+
and the TUI (packages listing).
|
|
24
|
+
|
|
25
|
+
**omp.** `omp stats` — local web dashboard with live ingest (port 3847)
|
|
26
|
+
covering AI usage, with per-session ledgers available
|
|
27
|
+
(`packages/stats/README.md:3,9,31-35`); `wire` package supplies transport;
|
|
28
|
+
judgment roles record usage too (`.../judgment/index.ts:6-10`).
|
|
29
|
+
|
|
30
|
+
**dsh.** Telemetry is an OTel transport only — "business consumers own events,
|
|
31
|
+
identities, redaction"; feedback-authorized upload, default `FEEDBACK_ONLY`
|
|
32
|
+
(`.../packages/telemetry/README.md:12,25`; `.../bundle/base/README.md:50`).
|
|
33
|
+
Business events flow through the session event stream.
|
|
34
|
+
|
|
35
|
+
**swe-agent.** trajectory JSON per run + a separate inspector to browse them
|
|
36
|
+
(`external/swe-agent/trajectories`, `sweagent/inspector/`).
|
|
37
|
+
|
|
38
|
+
**smolagents.** `monitoring.py` metrics + `AgentLogger` markdown logs; gradio UI.
|
|
39
|
+
|
|
40
|
+
## Trade-offs
|
|
41
|
+
|
|
42
|
+
- **Where transport ends.** The dsh rule — a transport package knows nothing
|
|
43
|
+
about business events — is the cleanest boundary. Our runStore already
|
|
44
|
+
*is* the business schema; be careful that nothing in run records assumes an
|
|
45
|
+
application consumer (they don't: read-only records).
|
|
46
|
+
- **Local dashboards vs relay.** omp's stats serves a self-hosted view; ours
|
|
47
|
+
hands validated events to a UI. Same functionality, different home; nothing
|
|
48
|
+
to adopt; the one check if we ever add an export path: no
|
|
49
|
+
duplicate charges on relaunch (event ids dedupe).
|
|
50
|
+
- **Cost accounting alignment.** Everyone anchors usage at the latest provider
|
|
51
|
+
response and estimates lagging items (opencode anchor pattern at
|
|
52
|
+
`compaction.ts:812-842`). Ours does the same via usage.updated — align
|
|
53
|
+
definitions (reasoning inside output) with any upstream comparisons to
|
|
54
|
+
prevent double-cost surface.
|
|
55
|
+
|
|
56
|
+
## Adoption candidates
|
|
57
|
+
|
|
58
|
+
| # | Idea | From | Land as | Tier |
|
|
59
|
+
|---|---|---|---|---|
|
|
60
|
+
| O1 | A "transport owns nothing about identities" doc commitment when any telemetry-like export exists (apps may add; harness stays identity-blind) | dsh telemetry | a para note in repo README | T1 doc |
|