@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,110 @@
|
|
|
1
|
+
# Arm 10 — Refinement / self-improvement
|
|
2
|
+
|
|
3
|
+
Status: **audited (self + upstream, in person)** — this arm's headline finding changes
|
|
4
|
+
the shape of the study, see §1.
|
|
5
|
+
|
|
6
|
+
## Design space
|
|
7
|
+
|
|
8
|
+
Who is improved (prompt files, tools, tree files), how candidates are made
|
|
9
|
+
(dimension-split editors?), how they are probed (isolated, unattended; approvals
|
|
10
|
+
refused), how selection stays answer-free, how experience accumulates across
|
|
11
|
+
tasks, and what no step may do (act in the world with a person's assets).
|
|
12
|
+
|
|
13
|
+
## 1. Headline finding: this harness already ports harness²
|
|
14
|
+
|
|
15
|
+
Every module of `src/refine/` is an explicit port of harness²'s core, by its own
|
|
16
|
+
header comments:
|
|
17
|
+
|
|
18
|
+
| this harness | upstream |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `src/refine/recursion.ts:5` | `harness2/core/recursion.py` |
|
|
21
|
+
| `src/refine/selection.ts:5` | `harness2/core/selection.py` |
|
|
22
|
+
| `src/refine/prompts.ts:5` | `harness2/core/prompts.py` (the **adapt** pack only — `prompts.ts:1`) |
|
|
23
|
+
| `src/refine/ledger.ts:5` | `harness2/core/ledger.py` |
|
|
24
|
+
| `src/refine/library.ts:9` | `harness2/core/library.py` |
|
|
25
|
+
| `src/refine/evidence.ts:13` | `harness2/core/context.py` |
|
|
26
|
+
| `src/refine/runner.ts:6` | `harness2/core/schedule.py::run_task` (shaped after) |
|
|
27
|
+
|
|
28
|
+
Identities preserved: R = 4k rollouts / P = 3k sessions per mode
|
|
29
|
+
(`src/refine/ledger.ts:7-11`), matching upstream `recursion.py:15-19`; Stage
|
|
30
|
+
shape (`Stage {label, dim, tree, keptBase, fellBack…}` `src/refine/recursion.ts:26-37`)
|
|
31
|
+
with one-retry-then-inherit upstream `recursion.py` docstring; sequential-round
|
|
32
|
+
checkpoint anchoring incl. the "KEEP_BASE means the CURRENT checkpoint" rule
|
|
33
|
+
(`src/refine/prompts.ts:316` vs upstream `prompts.py:852-857`); the answer-free
|
|
34
|
+
selector (`src/refine/prompts.ts:399` mirrors `prompts.py:791-793`); KEEP_BASE
|
|
35
|
+
doctrine (`src/refine/prompts.ts:232` mirrors `prompts.py:333-335`).
|
|
36
|
+
|
|
37
|
+
The merge the study was asked to plan is therefore **already largely executed**.
|
|
38
|
+
What remains is a mature-upstream delta analysis, below.
|
|
39
|
+
|
|
40
|
+
## 2. Comparison with harness² as it now stands
|
|
41
|
+
|
|
42
|
+
Converged (ported): parallel/sequential recursion, INV/DOM candidate split with
|
|
43
|
+
independent same-evidence samplers, aggregator/composer with MERGE / ADOPT-ONE /
|
|
44
|
+
KEEP_BASE, anonymized answer-free selection, per-domain experience library
|
|
45
|
+
carrying the **full adopted tree plus an EXPERIENCE.ms-style why/lesson** (ours:
|
|
46
|
+
`src/refine/library.ts`; theirs: `external/harness2/harness2/core/library.py:15-23`,
|
|
47
|
+
"the whole tree is carried, never a summary"), reflection writing cue/lesson rows
|
|
48
|
+
(`src/refine/prompts.ts:418-425` mirrors their `_EXP`-driven reflector).
|
|
49
|
+
|
|
50
|
+
Deltas (upstream beyond our port):
|
|
51
|
+
|
|
52
|
+
1. **Second, hardened prompt pack ("tts").** Upstream ships two packs per stage
|
|
53
|
+
(`_tts_propose` / `_tts_aggregate` / `_tts_select` vs the base pack,
|
|
54
|
+
`external/harness2/harness2/core/prompts.py:838-839,896-897`); ours carries
|
|
55
|
+
only the adapt pack (`src/refine/prompts.ts:1`). The tts pack adds: an
|
|
56
|
+
explicit **`<notes>` decision audit format** (`kept|revised|dropped -> edit ->
|
|
57
|
+
evidence`, `.../prompts.py:765-769`), a `yardstick` slot ("WHAT GOOD PROCESS
|
|
58
|
+
LOOKS LIKE HERE", `.../prompts.py:705-706,757-761`), sharper always-on
|
|
59
|
+
economics and on-demand-first framing, and pool-anonymity emphases
|
|
60
|
+
(`PICKING AN UNMODIFIED HARNESS IS VALID`, `.../prompts.py:66-74`).
|
|
61
|
+
2. **Screenshot-era surface dialects.** Upstream maintains this c1–c8 tree for
|
|
62
|
+
two substrates (opencode and codex) with per-substrate hook/plugin mechanics
|
|
63
|
+
(`.../prompts.py:617-661`, `tree.py:41-60 SurfaceSpec`) — ours compiles one
|
|
64
|
+
Pi surface (`src/refine/recursion.ts` imports `PI_SURFACE`).
|
|
65
|
+
3. **A decoupled judge.** `harness2/core/judge.py:15-19`: measurement of the
|
|
66
|
+
chosen run happens *after selection*, **"Nothing in the method imports this
|
|
67
|
+
module"**; a judge failure is None, excluded from denominators
|
|
68
|
+
(`.../judge.py:37-40`). **Not ported** — `src/refine/` has no judge module.
|
|
69
|
+
This is the one structural piece of upstream we do not have.
|
|
70
|
+
4. **Substrate contract vs our RefineHost.** Their substrate wrap is a
|
|
71
|
+
file-level (`context/harness/` editable tree + workspace dirs); ours isolates
|
|
72
|
+
through `RefineHost` (workspace, probe session, deliverable) with probe runs
|
|
73
|
+
as unattended sessions whose approvals are refused (repo contract). Same
|
|
74
|
+
shape, different isolation vocabulary — ours is the stronger primitive, but
|
|
75
|
+
note upstream's `keep_base` inherits untouched files with no re-read
|
|
76
|
+
(`.../prompts.py:186-189`); ours should verify the same semantic survived the
|
|
77
|
+
port (pending test-level confirmation).
|
|
78
|
+
|
|
79
|
+
## 3. Trade-offs
|
|
80
|
+
|
|
81
|
+
- **Judge in or out.** Keeping measurement out of the harness (our family rule:
|
|
82
|
+
measurement belongs to Evaluation) preserves layering but forfeits private
|
|
83
|
+
experience labeling — the `<experience>` reflection then rests only on
|
|
84
|
+
trajectory contrast, which ours already guards ("A lesson resting only on
|
|
85
|
+
`confounded` rows is a guess", `src/refine/prompts.ts:425`). Upstream's
|
|
86
|
+
compromise: a judge that labels the *chosen* run only, never feeds forward, and
|
|
87
|
+
is excluded from denominators on failure — it cannot leak into selection
|
|
88
|
+
because selection already happened.
|
|
89
|
+
- **Prompt packs.** Two packs cost maintenance but let upstream evolve hardening
|
|
90
|
+
without destabilizing the published method. Ours froze one pack at port time;
|
|
91
|
+
upstream drift since then is invisible to our selectors.
|
|
92
|
+
- **One surface vs many.** Ours targets Pi only; upstream's SurfaceSpec proves
|
|
93
|
+
the same method bends to codex/opencode cheaply — a bridge test for whether
|
|
94
|
+
our `RefineHost` boundary is truly substrate-agnostic.
|
|
95
|
+
|
|
96
|
+
## 4. Adoption candidates
|
|
97
|
+
|
|
98
|
+
| # | Idea | From | Tier | Land as |
|
|
99
|
+
|---|---|---|---|---|
|
|
100
|
+
| R1 | Diff the ported prompts against upstream's `adapt` lines and pull changed sentences (e.g. pool-anonymity emphasis, deliverable-shape rule) into `src/refine/prompts.ts` | harness² drift since the port | T1 | in-place prompt text sync (tests measure wording-insensitive behavior) |
|
|
101
|
+
| R2 | Add the `<notes>` audit format to compose/selected stages so adoption decisions carry their evidence | tts pack | T1 | our prompts' notes sections |
|
|
102
|
+
| R3 | Consider the yardstick slot as an optional, app-supplied `BenchPrompts` field — *only if* an app needs a domain yardstick; it must remain prose, never a score | tts pack via `Spec` | T2 | `RefineHost` launch input, thinking hard before adding |
|
|
103
|
+
| R4 | A post-selection judge module, ported with upstream's exact decoupling (not imported by the method; None on failure excluded from denominators) **or** explicitly glued to Evaluation | judge.py | T2 with a layering decision first — see trade-off above | new `src/refine/judge.ts` behind `RefineHost`, or nothing |
|
|
104
|
+
| R5 | Re-run upstream-vs-ours substrate parity test: can our tree/validation accept an upstream-authored candidate tree without edits? (`isAllowed`, caps, autotrigger semantics) | both | T1 verification task, no code change | a test |
|
|
105
|
+
|
|
106
|
+
Anti-candidates, recorded so nobody re-proposes them: do **not** move measurement
|
|
107
|
+
or grading into `src/refine/` (family boundary: Evaluation owns measurement);
|
|
108
|
+
do **not** let any judge label reach improver or selector (answer-free is
|
|
109
|
+
invariant); do **not** carry per-task facts into the durable library without the
|
|
110
|
+
cue/lesson narrowing ours already enforces.
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Autonomous engineering: evidence from other harnesses
|
|
2
|
+
|
|
3
|
+
Companion evidence for [STUDY-0002: proactive autonomy and three feature ideas](proactive-autonomy.md).
|
|
4
|
+
|
|
5
|
+
Research date: 2026-10-23. Scope: autonomous software maintenance, recurring execution,
|
|
6
|
+
human-readable continuity, visual inspection, and the limits of product inference.
|
|
7
|
+
This is research evidence and design interpretation, not an accepted architecture change.
|
|
8
|
+
|
|
9
|
+
## Finding
|
|
10
|
+
|
|
11
|
+
The strongest transferable pattern is a worker that repeatedly receives new evidence,
|
|
12
|
+
selects a concrete obligation, exercises the product, changes a branch, and leaves a
|
|
13
|
+
legible record for the next worker. The evidence supports automating that engineering
|
|
14
|
+
loop. It does not establish that a scheduler or a capable coding model can independently
|
|
15
|
+
discover which new feature customers need.
|
|
16
|
+
|
|
17
|
+
Three distinctions matter when comparing products:
|
|
18
|
+
|
|
19
|
+
1. A scheduled prompt, a recoverable conversation, and a continuously available execution
|
|
20
|
+
service solve different problems.
|
|
21
|
+
2. A screenshot, a browser interaction, and evidence that an edit fixed the correct source
|
|
22
|
+
component provide different levels of confidence.
|
|
23
|
+
3. A working pull request, a justified product experiment, and an improved customer outcome
|
|
24
|
+
are different claims.
|
|
25
|
+
|
|
26
|
+
These distinctions are the researcher's synthesis of the cases below, rather than vendor
|
|
27
|
+
terminology or a benchmark result.
|
|
28
|
+
|
|
29
|
+
## Evidence standard
|
|
30
|
+
|
|
31
|
+
**Documented capability** means the vendor or project documents the behavior; it was not
|
|
32
|
+
executed in this study. **Source observation** means the public implementation or README
|
|
33
|
+
was inspected. **Author-reported experiment** means the system's authors describe their
|
|
34
|
+
own run or evaluation. **Design inference** means a proposed lesson for this harness.
|
|
35
|
+
No model runs, production deployments, repository tests, or independent comparative
|
|
36
|
+
benchmarks were performed for this document.
|
|
37
|
+
|
|
38
|
+
## 1. Anthropic: continuity artifacts and an evaluator that uses the application
|
|
39
|
+
|
|
40
|
+
**Author-reported experiment, November 2025.** Anthropic found that compaction alone did
|
|
41
|
+
not keep a coding agent coherent across many sessions. Its example used an initializer,
|
|
42
|
+
a startup script, Git history, a progress log, and a JSON feature list with explicit
|
|
43
|
+
acceptance steps and completion flags. A subsequent worker selected unfinished work,
|
|
44
|
+
verified basic behavior, implemented an increment, and handed off artifacts. Browser
|
|
45
|
+
interaction caught failures missed by unit checks or HTTP requests, although the
|
|
46
|
+
particular Puppeteer integration had blind spots such as native alert dialogs. These
|
|
47
|
+
are observations from Anthropic's harness experiments, not a general reliability rate.
|
|
48
|
+
[Source: effective harnesses, published 2025-11-26](https://www.anthropic.com/research/effective-harnesses-for-long-running-agents).
|
|
49
|
+
|
|
50
|
+
**Author-reported experiment, March 2026.** A later design separated planning, generation,
|
|
51
|
+
and evaluation. The evaluator exercised the running application with Playwright and
|
|
52
|
+
graded it against explicit criteria. One reported failure connected an unsuccessful
|
|
53
|
+
delete interaction to a condition in `LevelEditor.tsx:892`, demonstrating a useful
|
|
54
|
+
browser-to-source investigation. The author also found generous, superficial QA and
|
|
55
|
+
had to tune its judgment. With Opus 4.6, the author removed sprint scaffolding and moved
|
|
56
|
+
QA later; evaluation was valuable near the generator's capability limit and overhead
|
|
57
|
+
for easier tasks. An illustrative updated run took 3 hr 50 min and $124.70. These are
|
|
58
|
+
case studies and author-reported costs, not controlled evidence of general superiority.
|
|
59
|
+
[Source: harness design, published 2026-03-24](https://www.anthropic.com/research/harness-design-long-running-apps).
|
|
60
|
+
|
|
61
|
+
**Design inference.** Human readability belongs in the persisted work product: what was
|
|
62
|
+
observed, which obligation was chosen, what changed, what was verified, and what remains.
|
|
63
|
+
A separate critic is most useful when evidence is subjective or the change is difficult.
|
|
64
|
+
Making every tiny cleanup pass through a heavyweight planner and browser evaluator can
|
|
65
|
+
consume more time and money than the maintenance itself.
|
|
66
|
+
|
|
67
|
+
## 2. Claude Code: maintenance becomes a default behavior, but scheduling has modes
|
|
68
|
+
|
|
69
|
+
**Documented capability, checked on the research date.** Claude Code's current `/loop`
|
|
70
|
+
can choose its own wakeup interval. Its default maintenance instructions continue
|
|
71
|
+
unfinished work, address the branch's PR, CI failures and conflicts, then do cleanup.
|
|
72
|
+
The documented scope excludes new initiatives, and irreversible actions must continue
|
|
73
|
+
existing authorization. A project can replace the default with `.claude/loop.md`.
|
|
74
|
+
Session cron runs while the process is active and idle, has no catch-up per missed tick,
|
|
75
|
+
and recurring tasks expire after seven days. Fixed cron tasks can be restored with
|
|
76
|
+
exceptions; self-paced loops are not restored. Cloud and Desktop scheduling are separate
|
|
77
|
+
options: cloud scheduling needs no open session or running laptop, while Desktop jobs
|
|
78
|
+
require the machine. Cloud tasks work from a fresh clone rather than local files.
|
|
79
|
+
[Source: scheduled tasks documentation](https://code.claude.com/docs/en/scheduled-tasks).
|
|
80
|
+
|
|
81
|
+
**Design inference.** A useful default work order can create the feeling that an agent
|
|
82
|
+
knows what to do next, without pretending it has an unlimited product mandate. Recovery
|
|
83
|
+
must belong to the execution system: a loop that only resumes while someone has an
|
|
84
|
+
interactive process open is not an unattended maintenance service. Seven-day expiry is
|
|
85
|
+
the current documented session behavior; older articles describing a three-day limit
|
|
86
|
+
should not be used as the current specification.
|
|
87
|
+
|
|
88
|
+
## 3. OpenHands: scheduling and recoverable execution have explicit ownership
|
|
89
|
+
|
|
90
|
+
**Source observation.** OpenHands' Software Agent SDK owns conversations, workspaces,
|
|
91
|
+
events, tools and Agent Server execution. Its README explicitly assigns scheduling,
|
|
92
|
+
webhooks, run history and dispatch to a separate automation service. The automation
|
|
93
|
+
README also assigns sandbox lifecycle orchestration to that service and labels it beta.
|
|
94
|
+
This is an architectural precedent for separating *when work should happen* from
|
|
95
|
+
*executing an agent conversation*.
|
|
96
|
+
[SDK README](https://github.com/OpenHands/software-agent-sdk/blob/main/README.md),
|
|
97
|
+
[automation README](https://github.com/OpenHands/automation/blob/main/README.md).
|
|
98
|
+
|
|
99
|
+
**Source observation.** The automation scheduler polls persistent definitions and creates
|
|
100
|
+
pending runs. The inspected implementation uses PostgreSQL row locks with
|
|
101
|
+
`FOR UPDATE SKIP LOCKED`; its SQLite path assumes a single process. Dispatch is a separate
|
|
102
|
+
poller, and completion is reported asynchronously by the execution environment. The
|
|
103
|
+
inspected dispatcher distinguishes retryable HTTP statuses from permanent errors.
|
|
104
|
+
These details demonstrate queueing and failure handling; they do not prove exactly-once
|
|
105
|
+
execution of arbitrary external side effects.
|
|
106
|
+
[Scheduler source](https://github.com/OpenHands/automation/blob/main/openhands/automation/scheduler.py),
|
|
107
|
+
[dispatcher source](https://github.com/OpenHands/automation/blob/main/openhands/automation/dispatcher.py).
|
|
108
|
+
|
|
109
|
+
**Documented capability.** SDK persistence stores configuration and runtime status in
|
|
110
|
+
`base_state.json` and individual conversation events under `events/`. The same
|
|
111
|
+
conversation ID and persistence directory can restore a conversation for another run.
|
|
112
|
+
Separately, metrics expose per-LLM token usage, costs and latency, with conversation
|
|
113
|
+
aggregation that includes auxiliary LLMs such as a context condenser.
|
|
114
|
+
[Persistence guide](https://docs.openhands.dev/sdk/guides/convo-persistence),
|
|
115
|
+
[metrics guide](https://docs.openhands.dev/sdk/guides/metrics).
|
|
116
|
+
|
|
117
|
+
**Design inference.** A cron definition should create a durable work request that has
|
|
118
|
+
its own identity and lifecycle. A human-readable narrative should be derived from
|
|
119
|
+
those facts. Saving messages alone is not enough to decide whether a failed deployment
|
|
120
|
+
was retried, whether a run still owns a branch, or whether a successful tool call was
|
|
121
|
+
already applied before a worker crashed. Cost accounting must include scouting and
|
|
122
|
+
evaluation, not only the worker that edits code.
|
|
123
|
+
|
|
124
|
+
## 4. SWE-agent and mini-swe-agent: evidence against unnecessary harness machinery
|
|
125
|
+
|
|
126
|
+
**Author-reported benchmark.** The original SWE-agent paper studies how the interface
|
|
127
|
+
given to an agent affects repository navigation, editing and tool execution. It reports
|
|
128
|
+
12.5% pass@1 on SWE-bench and 87.7% on HumanEvalFix in its 2024 setup. These historical
|
|
129
|
+
figures establish a scoped research result; they do not describe current model quality,
|
|
130
|
+
an autonomous product manager, or long-running production maintenance.
|
|
131
|
+
[Paper, revised 2024-11-11](https://arxiv.org/abs/2405.15793v3).
|
|
132
|
+
|
|
133
|
+
**Source observation.** The SWE-agent README now recommends mini-swe-agent as its default
|
|
134
|
+
successor. mini-swe-agent's README describes a simple agent with bash actions, a linear
|
|
135
|
+
message history, independent subprocess execution, configurable local or sandbox
|
|
136
|
+
environments, and a trajectory browser. Its current README advertises a verified-benchmark
|
|
137
|
+
score above 74%; this study did not reproduce that claim or equate it to the original
|
|
138
|
+
paper's different benchmark setting.
|
|
139
|
+
[SWE-agent README](https://github.com/SWE-agent/SWE-agent/blob/main/README.md),
|
|
140
|
+
[mini-swe-agent README](https://github.com/SWE-agent/mini-swe-agent/blob/main/README.md).
|
|
141
|
+
|
|
142
|
+
**Design inference.** Durable execution and good evidence do not require a large society
|
|
143
|
+
of agents. Keep a small worker loop and add structure where observed failures require
|
|
144
|
+
it. A useful trajectory is both a debugging aid and training evidence for improving
|
|
145
|
+
future task selection. Benchmark issue repair supplies the problem statement; it does
|
|
146
|
+
not test whether the agent chose the right problem to solve without a human.
|
|
147
|
+
|
|
148
|
+
## 5. Cursor and Copilot: unattended work increasingly arrives with review artifacts
|
|
149
|
+
|
|
150
|
+
**Documented capability: Cursor.** Cursor Automations supports schedules and external
|
|
151
|
+
events, configurable tools, repository or multiple-repository work, and PR creation.
|
|
152
|
+
Scheduled starts may be delayed. Persistent notes can be viewed and edited outside the
|
|
153
|
+
worker filesystem, and computer use is included for automations. Cursor explicitly warns
|
|
154
|
+
that untrusted input can influence memories and thereby later runs. An automation with
|
|
155
|
+
no repository does not clone code and cannot edit code or open PRs.
|
|
156
|
+
[Source: Automations](https://cursor.com/docs/cloud-agent/automations).
|
|
157
|
+
|
|
158
|
+
Cloud agents have isolated desktop VMs and can exercise software, then attach screenshots,
|
|
159
|
+
videos and log references. Cursor documents that artifacts embedded in GitHub PR
|
|
160
|
+
descriptions use unauthenticated, unguessable URLs. Screenshots make changes reviewable,
|
|
161
|
+
but their storage and publication are also deliberate product decisions.
|
|
162
|
+
[Source: capabilities](https://cursor.com/docs/cloud-agent/capabilities).
|
|
163
|
+
|
|
164
|
+
**Documented capability: Copilot.** GitHub's application card describes asynchronous
|
|
165
|
+
cloud execution in ephemeral environments, branch and PR creation, iteration from
|
|
166
|
+
feedback, and automated security scanning. It also documents missed defects, false
|
|
167
|
+
positives and potentially incorrect suggestions. GitHub's browser announcement describes
|
|
168
|
+
Playwright MCP for reproducing and validating web-app bugs and sharing screenshots in PRs.
|
|
169
|
+
[Application card](https://docs.github.com/en/copilot/responsible-use/agents),
|
|
170
|
+
[browser announcement, 2025-07-02](https://github.blog/changelog/2025-07-02-copilot-coding-agent-now-has-its-own-web-browser/).
|
|
171
|
+
|
|
172
|
+
VS Code's current browser guide describes a loop using page content, screenshots,
|
|
173
|
+
console errors and interaction results. Human-selected element context can include HTML
|
|
174
|
+
and CSS. The guide distinguishes isolated agent-opened pages from explicitly shared,
|
|
175
|
+
authenticated pages. This describes VS Code's tools; it is not a claim that every
|
|
176
|
+
Copilot cloud session exposes the identical integration.
|
|
177
|
+
[Source: VS Code browser tools, page dated 2026-10-21](https://code.visualstudio.com/docs/agents/run/browser-tools).
|
|
178
|
+
|
|
179
|
+
**Design inference.** The novel opportunity is the quality of the autonomous judgment
|
|
180
|
+
and the explanation it leaves. Cron, browser control and PR creation are already
|
|
181
|
+
established features. A compelling harness should explain why it chose this change,
|
|
182
|
+
show the failed journey, link the source ownership, and expose the resulting behavior.
|
|
183
|
+
|
|
184
|
+
## What “knows where to fix the UI” should mean
|
|
185
|
+
|
|
186
|
+
The following is a proposed evidence chain, informed by the browser cases above:
|
|
187
|
+
|
|
188
|
+
| Step | Evidence the worker should preserve | What it establishes |
|
|
189
|
+
|---|---|---|
|
|
190
|
+
| Observe | Route, viewport, interaction trace, screenshot and console output | A specific condition was seen |
|
|
191
|
+
| Reproduce | A repeatable journey and its expected result | The suspected issue can be exercised |
|
|
192
|
+
| Locate | Component or handler, source revision and explanation of ownership | A plausible causal source exists |
|
|
193
|
+
| Change | Patch, branch and a statement of intended behavior | The intervention is inspectable |
|
|
194
|
+
| Recheck | The same journey before and after, plus relevant neighboring behavior | The intervention changed observed behavior |
|
|
195
|
+
| Learn | User correction or measured post-release outcome | The repair helped outside the agent's imagined task |
|
|
196
|
+
|
|
197
|
+
The first five steps can often operate against a development environment. The sixth
|
|
198
|
+
requires information from real usage or a human. A screenshot cannot by itself prove
|
|
199
|
+
which source file owns an element, and fixing one click path does not establish that
|
|
200
|
+
every customer path works. Framework metadata, source maps, route manifests and code
|
|
201
|
+
search are candidate techniques for source ownership, proposed here rather than claimed
|
|
202
|
+
as a universal capability of the surveyed products.
|
|
203
|
+
|
|
204
|
+
## What “knows where to clean up” should mean
|
|
205
|
+
|
|
206
|
+
These are design judgments, not comparative benchmark findings:
|
|
207
|
+
|
|
208
|
+
- Prefer an observed maintenance obligation: a failing check, repeated exception, unused
|
|
209
|
+
export supported by repository analysis, duplicated implementation with clear ownership,
|
|
210
|
+
or a broken journey.
|
|
211
|
+
- For an apparent dead module, examine dynamic loading, scripts, plugins, generated
|
|
212
|
+
references and public package entry points before treating absence of ordinary imports
|
|
213
|
+
as evidence of non-use.
|
|
214
|
+
- Preserve a compact explanation: what made the code suspect, why the behavior should
|
|
215
|
+
remain equivalent, what was exercised, and how the change can be reverted.
|
|
216
|
+
- Treat a cleaner-looking diff as a hypothesis. A refactor that increases abstraction or
|
|
217
|
+
churn while changing no user outcome may be a poor use of the next unattended run.
|
|
218
|
+
|
|
219
|
+
Cleanup confidence should come from converging evidence, rather than a model's confidence
|
|
220
|
+
adjective. The failure mode is an endless sequence of plausible edits that produces
|
|
221
|
+
activity without making the software easier to maintain.
|
|
222
|
+
|
|
223
|
+
## What “suggests features from analytics” needs beyond an agent runtime
|
|
224
|
+
|
|
225
|
+
The surveyed execution and browser capabilities provide tools for investigating product
|
|
226
|
+
questions. They do not supply this application's success definition. The following input
|
|
227
|
+
contract is a design inference:
|
|
228
|
+
|
|
229
|
+
| Input | Why feature invention needs it |
|
|
230
|
+
|---|---|
|
|
231
|
+
| Declared product direction and excluded work | Prevents successful optimization of the wrong objective |
|
|
232
|
+
| Journey events with stable definitions | Shows what users attempted, completed or abandoned |
|
|
233
|
+
| Errors linked to application revision and journey | Distinguishes product friction from release failures |
|
|
234
|
+
| Qualitative feedback and customer segment | Gives context for ambiguous behavior and conflicting needs |
|
|
235
|
+
| Baselines, experiment assignment and outcome windows | Makes a claimed improvement assessable |
|
|
236
|
+
| A permitted intervention scope | Defines where an agent may spend its own initiative |
|
|
237
|
+
|
|
238
|
+
A feature idea should state the observed signal, the user problem it suggests, an
|
|
239
|
+
alternative explanation, the proposed intervention, and an outcome that could prove the
|
|
240
|
+
idea wrong. Low usage alone is insufficient to justify deleting a capability: it may
|
|
241
|
+
serve a rare but essential workflow. Likewise, an apparent funnel improvement is not
|
|
242
|
+
automatically causal if releases, traffic composition or instrumentation also changed.
|
|
243
|
+
|
|
244
|
+
## Where to trade safety for more autonomous behavior
|
|
245
|
+
|
|
246
|
+
The requested adventurous direction can be made explicit as product choices. These are
|
|
247
|
+
proposed tradeoffs, not features already implemented in this harness:
|
|
248
|
+
|
|
249
|
+
| Autonomy granted | What becomes more exciting | What the owner accepts |
|
|
250
|
+
|---|---|---|
|
|
251
|
+
| Let the worker choose an unassigned maintenance obligation | Useful work appears without a task queue curated by a person | Some work will be low value or based on a false diagnosis |
|
|
252
|
+
| Let it change presentation and interaction details in a preview | The agent can discover and demonstrate a better experience | Taste can drift and previews may include failed experiments |
|
|
253
|
+
| Let it prepare its own feature experiment from usage evidence | The harness can behave like an opinionated product collaborator | Analytics can be misread and an experiment can worsen its target metric |
|
|
254
|
+
|
|
255
|
+
The interesting freedom is initiative within an understandable operating agreement.
|
|
256
|
+
None of the research establishes that disabling account isolation, erasing the tool gate,
|
|
257
|
+
or allowing refinement to act externally improves autonomous product judgment. Those
|
|
258
|
+
would be separate architecture changes rather than a prerequisite for these ideas.
|
|
259
|
+
|
|
260
|
+
## Source trace
|
|
261
|
+
|
|
262
|
+
All URLs were accessed on 2026-10-23. Public documentation can change. GitHub reads used
|
|
263
|
+
the connected GitHub tool. Inspected file blob SHAs, recorded for source identification:
|
|
264
|
+
|
|
265
|
+
| Repository and file | Blob SHA |
|
|
266
|
+
|---|---|
|
|
267
|
+
| `OpenHands/software-agent-sdk/README.md` | `386dc8945133cb51969192b0b29c8396719cbff6` |
|
|
268
|
+
| `OpenHands/automation/README.md` | `eb02e7d60fa72a9cd4207ca8841d37b675094643` |
|
|
269
|
+
| `OpenHands/automation/openhands/automation/scheduler.py` | `d9c17e3f6bc8a6942ff82d7b1c437fe553c31842` |
|
|
270
|
+
| `OpenHands/automation/openhands/automation/dispatcher.py` | `18d3f583e7f67a0fae0cde23d4ec447522c6a618` |
|
|
271
|
+
| `SWE-agent/SWE-agent/README.md` | `e241ede47c338b69eb13cbc5423047e1edf1d50f` |
|
|
272
|
+
| `SWE-agent/mini-swe-agent/README.md` | `7db1d82dfa92eaa00adeb10c8681677a9e6ec639` |
|
|
273
|
+
|
|
274
|
+
Blob SHAs identify the retrieved file contents; they are not repository commit SHAs.
|
|
275
|
+
The OpenHands scheduler and dispatcher observations above are limited to the retrieved
|
|
276
|
+
opening portions of those files (through lines 250 and 240 respectively), rather than
|
|
277
|
+
an audit of every backend, retry path or production deployment.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Proactive autonomy precedents: OpenClaw, Paperclip, and Letta
|
|
2
|
+
|
|
3
|
+
Companion evidence for [STUDY-0002: proactive autonomy and three feature ideas](proactive-autonomy.md).
|
|
4
|
+
|
|
5
|
+
Research date: **2026-10-23**. Status: external evidence and design interpretation; this document changes no Harness contract or runtime behavior.
|
|
6
|
+
|
|
7
|
+
The useful combination is a readable mandate, a durable wake mechanism, explicit work ownership, and memory that improves between conversations. Scheduling alone supplies none of the judgment needed to identify valuable work. The three systems below implement different parts of that combination; their documentation and source establish mechanisms, not evidence that an unattended agent consistently improves a real product.
|
|
8
|
+
|
|
9
|
+
## Evidence and version boundaries
|
|
10
|
+
|
|
11
|
+
Official documentation, upstream code, and original research were inspected. Source links are pinned to these upstream snapshots where possible:
|
|
12
|
+
|
|
13
|
+
| System | Snapshot inspected | What the evidence establishes |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| OpenClaw | [`42c0d5a8`](https://github.com/openclaw/openclaw/commit/42c0d5a8f9d00e113c48090c3d259977e67b5b5a), 2026-10-22 | Automation, prospective memory, and consolidation contracts; selected implementation checks |
|
|
16
|
+
| Paperclip | [`def4726b`](https://github.com/paperclipai/paperclip/commit/def4726bea0e3b340457100038d80ca55c2b7d4f), 2026-10-22 | Routine dispatch, ownership protocol, accounting controls, and suppression logic |
|
|
17
|
+
| Letta Code | [`035bb8c8`](https://github.com/letta-ai/letta-code/commit/035bb8c8917b5dd94a3989d4adf04860a2ce8fea), 2026-10-22 | Reflection triggers, memory editing instructions, merge behavior, and retry controls |
|
|
18
|
+
|
|
19
|
+
Two freshness traps matter. OpenClaw's [fetched live heartbeat page](https://docs.openclaw.ai/heartbeat) described a system-owned monitor, while repository HEAD documents its migration into ordinary automation jobs. Paperclip's [live routine guide](https://docs.paperclip.ing/guides/projects-workflow/routines/) described coalescing as a queued follow-up, while its API reference and dispatch implementation finalize the incoming occurrence against existing work without creating another issue. This note uses the pinned source for those disputed details. [OpenClaw migration][o1], [Paperclip API][p2], [Paperclip dispatch][p3]
|
|
20
|
+
|
|
21
|
+
## OpenClaw: make recurring work inspectable
|
|
22
|
+
|
|
23
|
+
### Current direction: ordinary jobs replace a special heartbeat mechanism
|
|
24
|
+
|
|
25
|
+
At the inspected revision, legacy heartbeat monitors become editable automation jobs with schedules, prompts, scratch context, policies, and run history. Migration preserves identity and history and verifies the destination before retiring old configuration. Runtime no longer interprets `HEARTBEAT.md` or scratch `tasks:` blocks as schedules. Initial setup provisions one owner-associated proactive check; deleting it is lasting because a provisioning receipt prevents its recreation. The worker implementation performs receipt inspection and job creation in a state transaction. [Migration and setup][o1], [`default-proactive-job.worker.ts:20`][o2]
|
|
26
|
+
|
|
27
|
+
**Interpretation:** an appealing Markdown checklist can express intent, but a machine-owned occurrence record should decide what is due. A self-editing checklist that also acts as the scheduler makes deleted tasks, concurrent edits, and restart behavior ambiguous. OpenClaw's evolution offers a stronger precedent than copying an old `HEARTBEAT.md` example.
|
|
28
|
+
|
|
29
|
+
### Keep the mandate readable; make updates and silence structured
|
|
30
|
+
|
|
31
|
+
Each job can retain private scratch context. Scratch updates require revision comparison; an agent rereads and reconciles a conflicting revision. During a scheduled turn, scratch and result actions are restricted to the current job. Scratch is prompt context, so its private storage does not make it an appropriate secret store. [Scratch contract][o3]
|
|
32
|
+
|
|
33
|
+
The model can produce no outward message while recording an outcome such as `no_change`, `progress`, `done`, `blocked`, or `needs_attention`. A quiet outcome stays in run history and bounded session context. Silence does not erase execution failure. Explicitly empty scratch can suppress a run when that policy is enabled; absent scratch has different semantics. These are small distinctions with large consequences for an unattended system's readability. [Scratch and quiet results][o3]
|
|
34
|
+
|
|
35
|
+
**Interpretation:** provide a compact human view of “what I care about” and a separate machine record of “what happened.” Show consequential changes and blocked work; let routine all-clear checks remain quiet but inspectable. Preserve the difference between a quiet success, a deliberate skip, and an error.
|
|
36
|
+
|
|
37
|
+
### Durable scheduling requires recovery rules, not merely persistence
|
|
38
|
+
|
|
39
|
+
OpenClaw documents persisted job definitions, runtime state, and history in shared SQLite state; its Gateway process must be running for schedules to fire. Startup reschedules overdue agent work rather than executing it during initialization, and the worker coalesces missed ticks. Execution and primary-delivery outcomes are persisted together before subsequent notification work. A terminal result recovers by exact run identity without replaying execution or delivery. [Runtime and recovery][o4]
|
|
40
|
+
|
|
41
|
+
For an interrupted, unchanged timed agent job before delivery, recovery permits one fresh attempt and asks the agent to reconcile prior effects. The documentation explicitly excludes an exactly-once guarantee for arbitrary interrupted tool effects. Unknown or possible delivery, command/script payloads, and event schedules have different replay rules. This is a useful honesty boundary: a durable scheduler cannot infer whether an external write succeeded just before a crash. [Run reconciliation][o4]
|
|
42
|
+
|
|
43
|
+
Policies support idle-only admission and timezone-aware active hours. The inspected migration also removes earlier heartbeat-specific duplicate suppression and no-route skipping. New designs should therefore state their own deduplication and delivery semantics rather than assuming a heartbeat label provides them. [Monitoring policies][o5], [Migration behavior][o1]
|
|
44
|
+
|
|
45
|
+
### Future intent is not all the same kind of state
|
|
46
|
+
|
|
47
|
+
OpenClaw distinguishes clock work, event-conditioned intent, and aspirations kept in readable notes with review dates. Standing intents live in agent SQLite state and are matched before eligible interactive replies using a keyword prefilter and authoritative scope, expiry, cooldown, and fire-budget checks. Matching does not call a model. Default cooldown, fire count, and expiry bound repeated reminders. Cancellation is explicit durable state. These intents react to eligible incoming turns; they are not independent background event monitors. [Standing intents][o6]
|
|
48
|
+
|
|
49
|
+
Its memory system additionally separates dated working notes, curated durable knowledge, and a human Dream Diary. Dreaming applies evidence and provenance gates before consolidation; the model chooses operations while a writer constructs grounded entries. Untrusted and system-derived candidates are excluded from promotion. Prior memory is backed up, and the diary records additions, merges, and supersessions; the diary itself is not promoted as evidence. [Memory organization][o7], [Consolidation and diary][o8]
|
|
50
|
+
|
|
51
|
+
**Interpretation:** track “when to act,” “what I believe,” and “what I learned” separately. Otherwise generated reports become their own evidence and stale intentions keep reappearing.
|
|
52
|
+
|
|
53
|
+
## Paperclip: organize autonomy around owned work
|
|
54
|
+
|
|
55
|
+
### Goals provide direction; assigned tasks select execution
|
|
56
|
+
|
|
57
|
+
Paperclip models organizations, goals, agents, projects, and issues. Its core concepts describe a goal-to-task hierarchy and atomic task checkout, with a conflict preventing two agents from owning the same issue. The current agent skill is stricter than a free-roaming assistant: it selects assigned work, prioritizes existing work before new todo items, skips blocked tasks without new context, and exits if nothing is assigned. A scoped wake can bypass general inbox discovery. [Core concepts][p1], [`SKILL.md:94`][p4]
|
|
58
|
+
|
|
59
|
+
This matters for the user's “knows what to do next” request: Paperclip demonstrates a durable work queue and allocation protocol. It does **not** establish that any worker should invent unbounded new work whenever idle. Autonomous opportunity discovery would require a separate product-level mandate, candidate selection process, and resource policy. That is a proposed extension, not an observed property of the worker protocol.
|
|
60
|
+
|
|
61
|
+
The skill asks for compact incremental context rather than full thread replay. A blocked-status comment without subsequent replies suppresses another checkout or comment. Progress should identify what changed and the next owner, and waiting for a human uses a saved interaction that can wake the assignee later. A prose claim that a watcher exists is insufficient: an actual scheduled continuation must exist. [Heartbeat procedure][p4]
|
|
62
|
+
|
|
63
|
+
### A routine creates accountable work with explicit overlap behavior
|
|
64
|
+
|
|
65
|
+
Routine definitions contain a readable title and description, assignee, project, optional goal, priority, triggers, and policies. They support schedule, webhook, and API activation, execution history, definition revisions, and optional revision checks on updates. Agents can manage routines assigned to themselves, while assignment to another agent is an operator capability. Webhook requests can use stable idempotency keys; acceptance means queued asynchronous work, not completion. [Routine API][p2]
|
|
66
|
+
|
|
67
|
+
At the inspected revision, `coalesce_if_active` finalizes the incoming occurrence as coalesced and links it to existing active execution; `skip_if_active` records a skip; `always_enqueue` creates separate work. The implementation checks for existing execution and handles the corresponding uniqueness conflict before creating and linking a new issue to an assignment wake. Catch-up is bounded, with an internal limit of 25; the scheduler has additional behavior for subhourly schedules. [Dispatch implementation][p3]
|
|
68
|
+
|
|
69
|
+
**Interpretation:** decide whether a missed tick represents discarded work, merged observation, or a required follow-up. Those are different semantics. A maintenance scan usually does not deserve a backlog entry for every missed hour.
|
|
70
|
+
|
|
71
|
+
### Suppress work that feeds on its own bookkeeping
|
|
72
|
+
|
|
73
|
+
Paperclip's activity gate can require external activity since the last dispatched non-skipped occurrence. It excludes the routine's own execution issues, its scheduler bookkeeping, and read/archive activity, while work by other agents on delegated tasks counts as external input. Quiet skipped occurrences do not advance the observation window. This supports a watcher that runs while genuine work continues and becomes cheap when the environment settles. [Activity-gated runs][p5]
|
|
74
|
+
|
|
75
|
+
Source also implements an independent no-progress wake throttle: after two consecutive successful runs without issue-visible progress, eligible empty wakes receive a two-minute cooldown that doubles up to thirty minutes. Fresh input, human comment wakes, and explicit operator resumption bypass it; agent-authored comment wakes remain throttled. Failures break the successful-no-progress streak so recovery is not mistaken for redundant polling. [Wake throttle implementation][p6]
|
|
76
|
+
|
|
77
|
+
**Interpretation:** durable “no new evidence” state is as valuable as a task queue. Otherwise one autonomous agent's status comment can become another agent's reason to run, producing activity without useful progress.
|
|
78
|
+
|
|
79
|
+
### Budgets must account for unfinished work
|
|
80
|
+
|
|
81
|
+
The inspected accounting source evaluates policies across organization, agent, and project scopes. It distinguishes recorded spend, held reservations, pending work, and unpriced usage, with policy-dependent blocking. Admission rechecks a held reservation before provider dispatch; budget enforcement pauses applicable scope and schedules cancellation through a durable path. This is more substantial than logging costs after a cron run completes. These are source-level controls, not a measurement that real provider spend can never overshoot a limit. [Budget admission and enforcement][p7]
|
|
82
|
+
|
|
83
|
+
**Interpretation:** a system allowed to discover its own work needs a resource envelope for discovery as well as implementation. Concurrent agents can exhaust a budget before any completed run reports a bill.
|
|
84
|
+
|
|
85
|
+
## Letta: improve future work during idle periods
|
|
86
|
+
|
|
87
|
+
### Use the current filesystem model, with historical sleep-time work as context
|
|
88
|
+
|
|
89
|
+
The 2025 sleep-time architecture used a primary agent and a separate memory editor. Letta's later first-party roadmap explicitly moves away from server memory tools and server-side sleep-time agents toward filesystem operations, context repositories, and runtime subagents. Current documentation describes MemFS as Markdown memory in an agent-owned Git repository. Root memories enter active context; deeper indexed directories can be read when needed. Memory subagents use worktrees to avoid blocking the foreground agent. [Historical design][l1], [Migration direction][l2], [Current MemFS][l3]
|
|
90
|
+
|
|
91
|
+
Current dreaming reviews recent conversations, extracts lessons, and updates memory. It can trigger after completed steps or compaction. The optional agent-review stage is another background conversation that can revise proposed edits; it consumes more tokens and does not require human approval. These are event/step triggers, not evidence of an always-running wall-clock daemon. Local schedules also require an active Letta session, whereas cloud schedules run in the managed environment. [Dream settings][l4], [Schedule execution targets][l5]
|
|
92
|
+
|
|
93
|
+
### Autonomous learning already includes editing procedures
|
|
94
|
+
|
|
95
|
+
The inspected reflection prompt prioritizes mistakes and corrections, preferences, durable facts, contradictions, and reusable workflows. It directs the agent to skip ephemeral or duplicate material, prefer existing procedures, limit skill changes, make no commit when nothing survives, and report exact memory changes and issues. It permits autonomous memory and skill edits within the memory directory, with a commit recording why. This is implemented instruction, not evidence that every learned rule improves later performance. [`reflection-v2.md:27`][l6]
|
|
96
|
+
|
|
97
|
+
The launcher prevents overlapping reflection for the same agent, skips empty transcript work, and suppresses automatic retries for invalid model configuration. Worktree integration handles dirty parent state and conflicts explicitly. Failed integration has exponential retry delay from one to thirty minutes and notification deduplication; that retry state is process-local and resets on restart. [Launcher][l7], [Worktree integration][l8], [Retry implementation][l9]
|
|
98
|
+
|
|
99
|
+
**Interpretation:** the bold precedent is letting experience edit future procedure without a human approving each memory diff. Git history makes those changes reviewable and reversible. It does not make them correct, authorize unrelated source edits, or justify letting a background learner rewrite its own resource and permission limits.
|
|
100
|
+
|
|
101
|
+
## What has actually been measured
|
|
102
|
+
|
|
103
|
+
The original sleep-time paper reports roughly five times less test-time compute at comparable accuracy on its stateful math variants, and amortized savings across related queries. Its software case study uses only 33 feature examples from two repositories and evaluates overlap with ground-truth modified files, not implementation correctness. Predictable future queries benefit more; the paper acknowledges the simplified split between preparation and later queries. These results motivate reusable preparation and memory, but do not establish reliable autonomous UI repair, product prioritization, or profitability. [Original paper, Sections 5–7 and Appendix D][r1]
|
|
104
|
+
|
|
105
|
+
TriggerBench finds proactive recall can degrade with longer context even when explicitly queried recall remains strong; enhanced reasoning can produce an excessive-reminder strategy. ProEvent evaluates synthetic ongoing chats and finds overaction and cancellation failures across tested systems. These benchmarks justify measuring missed opportunities **and** false actions, timing, cancellation, and cost. Their environments differ from this Harness; the findings are directional evidence rather than predicted local failure rates. [TriggerBench][r2], [ProEvent][r3]
|
|
106
|
+
|
|
107
|
+
## Design consequences for this research
|
|
108
|
+
|
|
109
|
+
The following are inferences from the precedents, not existing Harness features:
|
|
110
|
+
|
|
111
|
+
| Capability | Grounded precedent | Deliberate autonomy trade |
|
|
112
|
+
|---|---|---|
|
|
113
|
+
| Scheduled self-directed work | OpenClaw jobs plus Paperclip owned issues, activity gates, and budgets | Let the agent rank and start bounded local work from a standing mandate without a fresh human prompt |
|
|
114
|
+
| Human-readable operating intent | Readable routine descriptions, scratch, explicit standing intents, and outcome diaries | Let the agent revise working plans while preserving owner intent and an inspectable change history |
|
|
115
|
+
| Learning between sessions | Letta reflection, versioned memory, procedure edits, and optional agent review | Automatically apply learned procedures or candidate improvements while keeping changes attributable and reversible |
|
|
116
|
+
|
|
117
|
+
The novel opportunity is combining those mechanisms with real product evidence and a human-readable explanation of why the next action was selected. The studied sources do not establish an end-to-end system that identifies a product's highest-value UI defect from analytics, repairs it correctly, and invents a desirable feature without supervision. That remains a hypothesis requiring local evaluation.
|
|
118
|
+
|
|
119
|
+
The most informative first evaluation would replay real work episodes with known useful actions and explicit “do nothing” cases. Record whether the right work was chosen, duplicate or canceled work was suppressed, artifacts stayed reviewable, and spending matched value. A system that runs frequently while producing low-value changes has not demonstrated useful autonomy.
|
|
120
|
+
|
|
121
|
+
[o1]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/docs/gateway/heartbeat.md#L27
|
|
122
|
+
[o2]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/src/cron/default-proactive-job.worker.ts#L20
|
|
123
|
+
[o3]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/docs/automation/cron-jobs/payloads.md#L268
|
|
124
|
+
[o4]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/docs/automation/cron-jobs/how-it-works.md#L14
|
|
125
|
+
[o5]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/docs/automation/cron-jobs/schedules.md#L61
|
|
126
|
+
[o6]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/docs/concepts/standing-intents.md#L14
|
|
127
|
+
[o7]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/docs/concepts/memory.md
|
|
128
|
+
[o8]: https://github.com/openclaw/openclaw/blob/42c0d5a8f9d00e113c48090c3d259977e67b5b5a/docs/concepts/dreaming.md#L106
|
|
129
|
+
[p1]: https://github.com/paperclipai/paperclip/blob/def4726bea0e3b340457100038d80ca55c2b7d4f/docs/start/core-concepts.md
|
|
130
|
+
[p2]: https://github.com/paperclipai/paperclip/blob/def4726bea0e3b340457100038d80ca55c2b7d4f/docs/api/routines.md
|
|
131
|
+
[p3]: https://github.com/paperclipai/paperclip/blob/def4726bea0e3b340457100038d80ca55c2b7d4f/server/src/services/routines.ts#L1859
|
|
132
|
+
[p4]: https://github.com/paperclipai/paperclip/blob/def4726bea0e3b340457100038d80ca55c2b7d4f/skills/paperclip/SKILL.md#L94
|
|
133
|
+
[p5]: https://github.com/paperclipai/paperclip/blob/def4726bea0e3b340457100038d80ca55c2b7d4f/skills/paperclip/references/routines.md#L87
|
|
134
|
+
[p6]: https://github.com/paperclipai/paperclip/blob/def4726bea0e3b340457100038d80ca55c2b7d4f/server/src/services/issue-rewake-throttle.ts
|
|
135
|
+
[p7]: https://github.com/paperclipai/paperclip/blob/def4726bea0e3b340457100038d80ca55c2b7d4f/server/src/services/budgets.ts
|
|
136
|
+
[l1]: https://www.letta.com/blog/sleep-time-compute/
|
|
137
|
+
[l2]: https://www.letta.com/blog/our-next-phase/
|
|
138
|
+
[l3]: https://docs.letta.com/concepts/memfs
|
|
139
|
+
[l4]: https://docs.letta.com/configuration/memory
|
|
140
|
+
[l5]: https://docs.letta.com/configuration/schedules
|
|
141
|
+
[l6]: https://github.com/letta-ai/letta-code/blob/035bb8c8917b5dd94a3989d4adf04860a2ce8fea/src/agent/subagents/builtin/reflection-v2.md#L27
|
|
142
|
+
[l7]: https://github.com/letta-ai/letta-code/blob/035bb8c8917b5dd94a3989d4adf04860a2ce8fea/src/cli/helpers/reflection-launcher.ts
|
|
143
|
+
[l8]: https://github.com/letta-ai/letta-code/blob/035bb8c8917b5dd94a3989d4adf04860a2ce8fea/src/agent/memory-worktree.ts#L363
|
|
144
|
+
[l9]: https://github.com/letta-ai/letta-code/blob/035bb8c8917b5dd94a3989d4adf04860a2ce8fea/src/cli/helpers/reflection-retry.ts
|
|
145
|
+
[r1]: https://arxiv.org/html/2504.13171v1
|
|
146
|
+
[r2]: https://arxiv.org/abs/2606.23459
|
|
147
|
+
[r3]: https://arxiv.org/abs/2607.17701
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# `/btw` side-question comparison
|
|
2
|
+
|
|
3
|
+
Status: source-reviewed comparison of the checked-out workspace snapshots; no live model or UI runs were performed. This is a study note, not a change to the Harness contract.
|
|
4
|
+
|
|
5
|
+
## Scope and conclusion
|
|
6
|
+
|
|
7
|
+
This compares the terminal implementation in this repository, Xingular Agent's app-owned chat feature, and the external projects with an actual `/btw` implementation in the checked-out `external/` sources. The external set is Oh My Pi (`omp`), Kimi CLI, OpenCode, and OpenHands. OpenHands' SDK is its backend, not a separate UI implementation.
|
|
8
|
+
|
|
9
|
+
The similarly named features are not one shared implementation. **Xingular Harness terminal creates a separate, in-memory Pi session with a bounded transcript excerpt and hard tool suppression. Oh My Pi's native `/btw` uses the main session's ephemeral side-turn pipeline, with much more context and persistent BTW history.** Xingular Agent's `/btw` is instead owned by the App: it starts a tracked, tool-free side run using a deliberately bounded public snapshot.
|
|
10
|
+
|
|
11
|
+
## Comparison
|
|
12
|
+
|
|
13
|
+
| Implementation | Context supplied | Isolation and persistence | Interaction |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| **Xingular Harness terminal** | Up to six visible user/assistant turns; each is clipped to 1,200 characters and the excerpt to 6,000. Includes tool names and a running flag, not tool inputs/results. | Creates an in-memory Pi session using the active model, with tools, extensions, skills, prompt templates, themes, and context files disabled; thinking is off. The side exchange is not added to the main transcript or a Harness run record. | One dock at a time. A new question replaces the old one; an empty `/btw` or Escape dismisses it and aborts the side session. The displayed answer is limited to eight lines. (`src/terminal/tui/sideQuestion.ts:13-21,39-53,69-85,106-165`; wiring: `src/terminal/opentui/app.ts:376-399`.) |
|
|
16
|
+
| **Xingular Agent (App-owned)** | Up to eight visible conversation messages plus a bounded public-progress snapshot: current request, visible partial answer, status, and up to six public tool-activity summaries. Excludes hidden reasoning, tool arguments/results, and attachments. | Separate tool-free run using the conversation's account/model/effort and an opaque one-use session identity. It does not control or enter the main transcript; it has an ordinary run record/events for Trajectory and Usage. | One temporary dock per one-to-one Agent/Solo conversation. Stop and Dismiss affect only the side run; a new question replaces it. Groups and attachments are unsupported. (`../App/docs/features/FEAT-0014-side-questions.md:25-43`; snapshot and run launch: `../App/src-tauri/src/agents.rs:2748-2881`; dock lifecycle: `../App/src/modes/chat/useSideQuestion.ts:15-110`.) |
|
|
17
|
+
| **Oh My Pi (`external/omp`)** | Uses the main system prompt and session history, and includes the in-progress assistant text. The snapshot preserves thinking blocks too. Its main tool catalog is supplied for the request, but the side turn does not execute tool calls. | Ephemeral side turn does not mutate the main session history. BTW questions and answers are checkpointed in a separate on-disk history sidecar; topics support follow-ups. | TUI history panel, cancellation, copy, optional promotion of a single answer to a branch, and RPC commands/stream events. (`external/omp/packages/coding-agent/src/session/agent-session.ts:11363-11550,11555-11600`; turn/follow-up context: `external/omp/packages/coding-agent/src/session/btw-turn.ts:13-93`; sidecar: `external/omp/packages/coding-agent/src/session/btw-history.ts:80-146`; controller: `external/omp/packages/coding-agent/src/modes/controllers/btw-controller.ts:121-190,356-448`; RPC: `external/omp/packages/coding-agent/src/modes/rpc/rpc-btw.ts:1-18`.) |
|
|
18
|
+
| **Kimi CLI** | Uses the same system prompt, normalized conversation history, and tool definitions as the main agent, explicitly to align the prompt cache. It does not explicitly add the current partial stream to that history. | Tool definitions are visible, but a deny-all toolset rejects calls. If the model tries a tool, it gets one retry (two model steps maximum). The side exchange is not written into main conversation history. | Streams into a scrollable modal; Escape dismisses. Interactive shell and wire events are supported. (`external/kimi-cli/src/kimi_cli/soul/btw.py:33-93,102-190,233-247`; behavior: `external/kimi-cli/docs/en/reference/slash-commands.md:247-256`; modal handling: `external/kimi-cli/src/kimi_cli/ui/shell/visualize/_interactive.py:120-189,281-324`.) |
|
|
19
|
+
| **OpenCode** | Makes a one-shot generation from the selected session's previewed history, system transcript, and tool definitions, followed by the BTW instruction and question. | The generation explicitly does not mutate the session; it returns text rather than entering a tool-execution loop. The question/answer live in a separate per-session extension store until the tab closes. | One side tab per question; supports retry and copy. The command is enabled only with an open session in a desktop-width window. (`external/opencode/packages/core/src/session/generate.ts:25-65`; extension state: `external/opencode/packages/gui-extensions/src/btw/model.ts:7-110`; command/panel: `external/opencode/packages/gui-extensions/src/btw/renderer.tsx:32-101`.) |
|
|
20
|
+
| **OpenHands** | The default SDK path prepares a request from the enforced conversation snapshot plus the side question, using the agent's model and tool definitions. | `ask_agent` is documented as stateless: it does not alter conversation state, persist events, or change execution status. It makes a direct generation rather than running tool actions. The UI entries are held in a client-side store. | The UI shows a pending card and then the answer, which can be expanded or dismissed; it waits for the response rather than rendering token deltas. (`external/openhands-agent-sdk/openhands-sdk/openhands/sdk/conversation/impl/local_conversation.py:2903-2966`; interception: `external/openhands/src/hooks/chat/use-btw-interceptor.ts:13-43`; client state and card: `external/openhands/src/stores/btw-store.ts:1-68`, `external/openhands/src/components/features/chat/btw-messages.tsx:11-55`.) |
|
|
21
|
+
|
|
22
|
+
## Cross-cutting trade-offs
|
|
23
|
+
|
|
24
|
+
- **Context breadth:** Harness terminal and Agent App construct bounded excerpts. Oh My Pi, Kimi CLI, OpenCode, and OpenHands reuse broader session context. Oh My Pi is the most explicit about carrying live state—and its code includes current thinking blocks—so it is also the least restrictive about what private context the side request can see.
|
|
25
|
+
- **Tool boundary:** Harness terminal and Agent App suppress tools at launch. Kimi advertises the main tool definitions but denies execution and retries after a tool attempt. Oh My Pi, OpenCode, and OpenHands make direct side generations without dispatching the returned answer through the main agent's tool-execution loop; some still send tool definitions for context or cache alignment.
|
|
26
|
+
- **Retention:** Harness terminal is intentionally transient. Agent App retains an ordinary run record for observability. Oh My Pi has durable, followable BTW topics; OpenCode retains one tab's question and answer in its session store. OpenHands' displayed entries are client-side state, not main conversation events.
|
|
27
|
+
- **Cache versus least privilege:** Kimi CLI explicitly aligns system prompt and tool definitions for cache reuse; Oh My Pi reuses the main session's prompt/cache path. This means broader context and tool metadata may be sent than the bounded-snapshot designs require.
|
|
28
|
+
|
|
29
|
+
## Study implications
|
|
30
|
+
|
|
31
|
+
1. Keep the Harness terminal's bounded context and hard no-tools setup as the conservative generic default.
|
|
32
|
+
2. If a side question needs better awareness of an active run, prefer a bounded summary of public progress over forwarding hidden reasoning or raw tool inputs/results. Agent App already demonstrates that application-specific snapshot at the App layer; keep that ownership boundary intact.
|
|
33
|
+
3. Treat persistent follow-up topics, branching, and RPC support as optional product capabilities, not requirements of a basic side question.
|
|
34
|
+
|
|
35
|
+
## Coverage note
|
|
36
|
+
|
|
37
|
+
A source scan found no `/btw` implementation in the checked-out `external/deepseek-harness`, `external/harness2`, `external/smolagents`, or `external/swe-agent` trees. Matches in `external/orca` were fixture/test references, not an implementation. These are observations about the local snapshots, not claims about current upstream releases.
|