@xingular/harness 0.1.7 → 1.0.0
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 +97 -1
- package/LICENSE +202 -0
- package/NOTICE.md +22 -0
- package/README.md +187 -85
- package/THIRD_PARTY_LICENSES.md +942 -0
- package/dist/cli.js +13701 -13498
- 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/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 +17 -0
- package/dist/sdk/browser/index.js +65 -0
- package/dist/sdk/browser/network.d.ts +10 -0
- package/dist/sdk/browser/network.js +59 -0
- package/dist/sdk/browser/session.d.ts +84 -0
- package/dist/sdk/browser/session.js +192 -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 +142 -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/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 +133 -0
- package/dist/sdk/harness.js +299 -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/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/index.d.ts +63 -0
- package/dist/sdk/index.js +48 -0
- package/dist/sdk/mcp/connections.d.ts +83 -0
- package/dist/sdk/mcp/connections.js +669 -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/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 +6 -0
- package/dist/sdk/plugins/builtin.js +68 -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 +187 -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 +174 -0
- package/dist/sdk/prompt/compile.js +396 -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/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 +370 -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 +534 -0
- package/dist/sdk/sessions/contracts.js +299 -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 +36 -0
- package/dist/sdk/sessions/planMode.js +84 -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 +102 -0
- package/dist/sdk/sessions/registry.js +383 -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 +335 -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 +140 -0
- package/dist/sdk/sessions/sessions.js +394 -0
- package/dist/sdk/sessions/subagentService.d.ts +41 -0
- package/dist/sdk/sessions/subagentService.js +247 -0
- package/dist/sdk/sessions/subagents.d.ts +50 -0
- package/dist/sdk/sessions/subagents.js +68 -0
- package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
- package/dist/sdk/terminal/accountsMenu.js +392 -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/control.d.ts +4 -0
- package/dist/sdk/terminal/control.js +25 -0
- package/dist/sdk/terminal/controller.d.ts +72 -0
- package/dist/sdk/terminal/controller.js +351 -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/piExtension.d.ts +6 -0
- package/dist/sdk/terminal/piExtension.js +392 -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 +70 -0
- package/dist/sdk/terminal/socket.js +256 -0
- package/dist/sdk/terminal/standalone.d.ts +18 -0
- package/dist/sdk/terminal/standalone.js +146 -0
- package/dist/sdk/terminal/terminals.d.ts +176 -0
- package/dist/sdk/terminal/terminals.js +767 -0
- package/dist/sdk/terminal/trajectory.d.ts +10 -0
- package/dist/sdk/terminal/trajectory.js +30 -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 +7 -0
- package/dist/sdk/terminal/tui/commandPages.js +63 -0
- package/dist/sdk/terminal/tui/commands.d.ts +42 -0
- package/dist/sdk/terminal/tui/commands.js +276 -0
- package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
- package/dist/sdk/terminal/tui/dialogGeometry.js +50 -0
- package/dist/sdk/terminal/tui/dialogs.d.ts +75 -0
- package/dist/sdk/terminal/tui/dialogs.js +363 -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 +155 -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 +14 -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 +145 -0
- package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +54 -0
- package/dist/sdk/terminal/tui/pages/accountsPage.js +181 -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 +37 -0
- package/dist/sdk/terminal/tui/pages/doctorPage.js +145 -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/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 +55 -0
- package/dist/sdk/terminal/tui/pages/settingsPage.js +88 -0
- package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +58 -0
- package/dist/sdk/terminal/tui/pages/trajectoryPage.js +377 -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/questionPicker.d.ts +20 -0
- package/dist/sdk/terminal/tui/questionPicker.js +150 -0
- package/dist/sdk/terminal/tui/questions.d.ts +19 -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 +441 -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 +12 -0
- package/dist/sdk/terminal/tui/settingsModel.js +84 -0
- package/dist/sdk/terminal/tui/sideQuestion.d.ts +53 -0
- package/dist/sdk/terminal/tui/sideQuestion.js +197 -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 +47 -0
- package/dist/sdk/terminal/tui/ui.js +148 -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 +74 -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 +6 -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 +49 -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/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/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/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 +65 -0
- package/dist/sdk/world/world.js +80 -0
- package/dist/terminal-opentui.js +13612 -0
- package/dist/terminal-pi.js +808 -151
- package/docs/README.md +22 -0
- package/docs/architecture/00-overview.md +159 -0
- package/docs/architecture/01-extension-points.md +78 -0
- package/docs/architecture/02-sessions-and-runs.md +146 -0
- package/docs/architecture/03-variants.md +95 -0
- package/docs/architecture/04-prompt.md +102 -0
- package/docs/architecture/05-refinement.md +107 -0
- package/docs/architecture/06-plugins-and-capabilities.md +93 -0
- package/docs/architecture/07-tools-and-gate.md +88 -0
- package/docs/architecture/08-memory-and-history.md +94 -0
- package/docs/architecture/09-accounts-and-connectors.md +90 -0
- package/docs/architecture/10-server-protocol.md +84 -0
- package/docs/architecture/11-terminal.md +81 -0
- package/docs/architecture/12-storage.md +61 -0
- package/docs/architecture/13-world-tools.md +23 -0
- package/docs/architecture/README.md +114 -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 +68 -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/README.md +76 -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 +38 -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 +21 -0
- package/docs/doctor.md +74 -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 +20 -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/releases/1.0.0.md +40 -0
- package/docs/releases/README.md +36 -0
- package/docs/study/00-index.md +78 -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/btw-comparison.md +37 -0
- package/docs/study/feature-gap-review.md +42 -0
- package/docs/study/insights.md +123 -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/system-prompt-design.md +196 -0
- package/docs/terminal-tui.md +473 -56
- 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,72 @@
|
|
|
1
|
+
# Adoption roadmap — implementing these findings in this harness
|
|
2
|
+
|
|
3
|
+
Derived from `arms/01–10` and `insights.md`. Tiering: **T1** = landed patterns
|
|
4
|
+
from battle-tested open harnesses, adopt now; **T2** = adopt after a check or a
|
|
5
|
+
measurement; **T3** = park. Every item lands through one of the seven surfaces
|
|
6
|
+
(prompt sections, tool providers, `ToolPolicy`, `SecretStore`, `Directory`,
|
|
7
|
+
plugin descriptions, `RefineHost`) or the tree/refine machinery already in
|
|
8
|
+
`src/`, never by naming an application concept. Check plan: `npm run typecheck`,
|
|
9
|
+
`npm test`; `npm run prove` when the server/CLI/startup changes.
|
|
10
|
+
|
|
11
|
+
## Tier 1 — adopt now
|
|
12
|
+
|
|
13
|
+
| # | What | Where it lands | Why & source | Verification |
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
| 1 | **Prompt-section ordering contract**: contributors declare a numeric order; compilation sorts (order, then name), rejects duplicate ids, scoped entries shadow globals | prompt compilation in `src/prompt/compile.ts` + plugin descriptor (`src/plugins/builtin.ts`) | dsh's section contract — deterministic ordering is a *cache* and *reasoning* asset (arm 01, insight 3) | unit tests incl. duplicate-order throws and shadowing either-order |
|
|
16
|
+
| 2 | **Tool approval tiers**: every ToolSpec declares `read\|write\|exec`; standing-approval policy wording derives from tiers | `ToolPolicy` + `src/tools/types.ts` (+ tool providers' default rows) | omp's tier×policy legibility (arm 02/07) | the tier is mandatory in the gate path; docs |
|
|
17
|
+
| 3 | **Policy-missing ⇒ ask** invariant with tests | gate in `src/` (`ToolPolicy` evaluation) | omp fails closed; dsh bundle default (arm 07) | a gate test per missing-policy shape |
|
|
18
|
+
| 4 | **Tool descriptions as template files**: description text lives in `.md` (interpolating `{product}`), imported `type:"text"` — no inline instruction literals in tool definitions | `src/tools/*` | omp's "prompts never in code"; reviewability (arm 02) | build renders identical output; no behavior change |
|
|
19
|
+
| 5 | **Subagent receipts self-describe limits** (24k cap, delivery semantics) inside the receipt text | `src/tools/spawnSubagent.ts` | ours — the cap exists but is implicit (arm 03, S2) | receipt content test |
|
|
20
|
+
| 6 | **Tree validation adopts harness²'s discard rules** where missing: skill trigger-line presence in always-on text; braces checking; script-existence (re-verify which already hold in `validate()`) | `src/tree/tree.ts` + tests | harness² turns prompt conventions into machine gates (arms 04/10, K2/K3) | a failing-tree test per rule |
|
|
21
|
+
| 7 | **Sync refinement prompts with upstream drift**: pull changed sentences from harness² `adapt` pack (pool-anonymity, deliverable-shape rule) into `src/refine/prompts.ts` | `src/refine/prompts.ts` | upstream evolved past our port snapshot (arm 10, R1) | existing refine tests stay green; wording-insensitive assertions |
|
|
22
|
+
| 8 | **`<notes>` decision-audit format** added to compose/selection stages (kept\|revised\|dropped → edit → evidence) | `src/refine/prompts.ts` | tts pack's auditability upgrade (arm 10, R2) | schema on notes parse |
|
|
23
|
+
| 9 | **Volatile-value placement rule**: no date/cwd/env in the stable prefix ever; supply via `xingular-context` channel or a user-turn injection | `src/prompt/compile.ts` (nothing, if currently absent — confirm) | omp's invalidation lesson (arm 01, A1; **verified**: our compiler injects none today) | a lint-style test asserting the prefix has no volatile lines |
|
|
24
|
+
| 10 | **Normative docs**: one-subprocess-service norm and identity-blind transport commitment for any future telemetry-like export | repo README / docs | dsh (arms 08/09, E2/O1) | ADR text only |
|
|
25
|
+
|
|
26
|
+
## Tier 2 — adopt after a check or measurement
|
|
27
|
+
|
|
28
|
+
| # | What | Precondition | Landing surface |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| 11 | Compaction shapes: fixed named-template summary + verbatim tail checkpoint + prune-first ordering | inventory our current compaction behavior first (Pi-native history; no `src/` compaction found) | `RefineHost`/session docs, then prompt sections for restoration text (arm 05, C1–C3) |
|
|
31
|
+
| 12 | `toolOrder` validation for pinned tool sets (unknown/rejected/marker rules) | confirm our capability freezing can't already be ordered inconsistently | `sessions.run` freeze path (arm 02, A4) |
|
|
32
|
+
| 13 | Restriction masks equivalent to dsh `ctx.tools.restrict` — check whether `capabilities.intersect` already covers scoped narrow-and-lift before adding anything | read `src/capabilities/` | none if covered (arm 02) |
|
|
33
|
+
| 14 | Skill-catalog deltas in `xingular-context` when tree versions change mid-run | assess token cost of name+description deltas vs tree sections | context update contents (arm 04, K1) |
|
|
34
|
+
| 15 | Substrate-parity test R5: an upstream harness² candidate tree validates under `PI_SURFACE` without edit | none — test only | `src/tree/` tests (arm 10, R5) |
|
|
35
|
+
| 16 | **Cache warming** near TTL (omp `cache-warmer.ts`) and the cache-*stable-prefix* probe protocol: engineering lives app-side; the harness may only need to expose request timing in run events | measure with `probe-chat-cache-app.py` from the App repo, with the account owner's permission | nothing harness-side unless events lack durations (arm 01, A5) |
|
|
36
|
+
| 17 | Sandbox classes offered as `ToolPolicy` options (read-only/workspace-write) | app-level sandbox plumbing exists | ToolPolicy (arm 08, E1) |
|
|
37
|
+
|
|
38
|
+
## Evaluation of the harness — suite and sweep items
|
|
39
|
+
|
|
40
|
+
How the harness itself gets measured over time (STUDY-0001; the mechanism is
|
|
41
|
+
`src/refine/`, with frozen tasks and sweeps owned by the Evaluation repo).
|
|
42
|
+
|
|
43
|
+
| # | What | Where it lives | Status |
|
|
44
|
+
|---|---|---|---|
|
|
45
|
+
| E1 | **Evaluation matrix** (`runMatrix`): tree × task deliverability records with comparability keys (task-hash, executor, package version, fingerprint); `refine matrix` CLI taking tree dirs or committed scope versions; records beside refinements (`refine/<id>/matrix.json`) | `src/refine/suite.ts`, `refine/cli.ts` | **landed** (05/12 pages updated) |
|
|
46
|
+
| E2 | No-model CI lane: the matrix through the demo executor, proved standalone | `scripts/prove-standalone.mjs` | **landed** |
|
|
47
|
+
| E3 | Tree-lineage sweep: matrix across every adopted version of a scope | suite `{scope, version}` entries; a driver later | capability landed |
|
|
48
|
+
| E4 | Frozen task library: answer-stripped `RefineTask` records + source fixtures + leak globs | Evaluation repo | pending |
|
|
49
|
+
| E5 | Commit-range sweep: per commit, git worktree → `refine matrix` → matrix rows | Evaluation repo (drives production code; never fakes a session) | pending |
|
|
50
|
+
| E6 | Regression report: flip table (delivered⇄empty), cost-per-delivered between two matrices | Evaluation repo dashboard | pending |
|
|
51
|
+
| E7 | Suite-based adoption gate: `adopt` only when the chosen tree wins the frozen suite, else `keep_base` | `refine/service.ts` policy; suite data from Evaluation | pending |
|
|
52
|
+
| E8 | Real PiExecutor lane with cost/wall budget stops | Evaluation repo + App; needs the account owner's approval | parked until approved |
|
|
53
|
+
|
|
54
|
+
## Parked / anti-candidates (recorded, do not build)
|
|
55
|
+
|
|
56
|
+
- `memory://` protocol over wiki tools (omp mnemopi) — caps/budgets suffice for now (arm 06, M2).
|
|
57
|
+
- `fork`-style history-seeded children (dsh) — breaks the fresh-child accounting model (arm 03).
|
|
58
|
+
- Free code-as-action for model tools (smolagents) — the per-call gate is a load-bearing contract; revisit only behind a RefineHost-scope opt-in (arm 02).
|
|
59
|
+
- In-harness judge module — requires the family-layering decision (Evaluation owns measurement) before any port; if ever ported, port the *decoupling shape* verbatim (arm 10, R4).
|
|
60
|
+
- omp's in-process coretools shell environment — an execution detail of
|
|
61
|
+
omp/pi-shell, host-supervised here; not adoptable machinery (arm 08).
|
|
62
|
+
|
|
63
|
+
## Sequencing
|
|
64
|
+
|
|
65
|
+
1. Items 1–4 (contract tier: prompt ordering, tiers, fail-closed, template descriptions) — one focused change each, with tests; land first because later items build on the vocabulary.
|
|
66
|
+
2. Items 5–9 (mechanical: receipts, validation, prompt sync/notes, placement rule).
|
|
67
|
+
3. Item 10 + Tier-2 checks (12–15) as a small batch.
|
|
68
|
+
4. Measurement-gated items (11, 16) last, through the App scripts where indicated.
|
|
69
|
+
|
|
70
|
+
Every landed item updates the relevant arm doc's "adoption candidates" row to
|
|
71
|
+
`landed: <path>` and adds an ADR when the change alters a contract (server
|
|
72
|
+
methods, tool gate semantics, tree validation).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Source: Claude Code (Anthropic) — no local code
|
|
2
|
+
|
|
3
|
+
- Origin: [Anthropic Claude Code](https://www.anthropic.com/claude-code). Not open
|
|
4
|
+
source: no clone. Material to audit: the npm package (`@anthropic-ai/claude-code`,
|
|
5
|
+
bundled JS — inspect for system prompt and tool descriptions), Anthropic's
|
|
6
|
+
engineering blog posts on Claude Code (agent loop, harness internals, sub-agent
|
|
7
|
+
guidance, compaction), the skills spec (agent skills API), and observed CLI
|
|
8
|
+
behavior (`/hooks`, `Permission` modes, CLAUDE.md hierarchy, memory
|
|
9
|
+
instructions).
|
|
10
|
+
- Why studied: the de-facto reference for UX-shaped harness conventions — CLAUDE.md
|
|
11
|
+
hierarchy, skills, subagents as first-class configs, hook events, plan mode,
|
|
12
|
+
permission modes. Every other harness in this study copies it knowingly or not.
|
|
13
|
+
|
|
14
|
+
## Map to arms (from public, verifiable material — no code claims)
|
|
15
|
+
|
|
16
|
+
- Arm 01 (prompt): CLAUDE.md hierarchy (enterprise/user/project/local), `@file`
|
|
17
|
+
imports, `#` quick-memory, output styles forcing; the leak-history repo
|
|
18
|
+
(community) documents the shipped system prompt — cite carefully, it changes.
|
|
19
|
+
- Arm 02 (tools): bundled tools w/ rich descriptions ("use when…" instructions
|
|
20
|
+
live in tool descriptions, not the prompt); MCP support.
|
|
21
|
+
- Arm 03 (subagents): `.claude/agents/*.md` subagent files w/ own name/description/
|
|
22
|
+
toolset/model; auto-delegation by description matching.
|
|
23
|
+
- Arm 04 (skills): SKILL.md progressive disclosure (name+description only loaded;
|
|
24
|
+
body read on demand), script support.
|
|
25
|
+
- Arm 05 (context): compaction thresholds, `--continue/--resume`, context restore
|
|
26
|
+
via note files.
|
|
27
|
+
- Arm 06 (memory): `CLAUDE.local.md`, `#` memory notes, user memory file.
|
|
28
|
+
- Arm 07 (governance): permission modes (default/acceptEdits/plan/
|
|
29
|
+
bypassPermissions), allow/deny rules patterns, hooks (PreToolUse/PostToolUse)
|
|
30
|
+
as policy handlers, sandboxed bash per platform.
|
|
31
|
+
- Arm 08 (execution): bash w/ working-dir constraints; desktop app tooling.
|
|
32
|
+
|
|
33
|
+
## Open questions for the audit (each needs its citation landing)
|
|
34
|
+
|
|
35
|
+
1. SKILL.md spec: exact progressive-disclosure contract; compare against this
|
|
36
|
+
harness's skill loader c7/c8 + trust requirements.
|
|
37
|
+
2. Hooks: which events exist, do they mutate tool input (``PreToolUse`` update
|
|
38
|
+
semantics) — contrast with the here-rule "a hook is told, never asked".
|
|
39
|
+
3. Subagent file spec: fields, tool inheritance, model pinning; our extension
|
|
40
|
+
point answer.
|
|
41
|
+
4. Plan mode mechanics (bilateral approval) — how does its gate differ from our
|
|
42
|
+
refinement probes (answer-free, no world effect).
|
|
43
|
+
5. Verbatim from a recent npm bundle: capture current system prompt + tool
|
|
44
|
+
descriptions and date-stamp them.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Source: deepseek-harness (dsh)
|
|
2
|
+
|
|
3
|
+
- Origin: [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness),
|
|
4
|
+
released Aug 2026, MIT, developer preview (compatibility-breaking expected).
|
|
5
|
+
Built on the Cordis meta-framework ("spatiotemporal composability"); one radical
|
|
6
|
+
claim: **everything is a plugin** — model adapters, tool registry, session log,
|
|
7
|
+
sandboxes, and the agent loop itself have no privileged core.
|
|
8
|
+
- Local clone: `external/deepseek-harness` (205 MB).
|
|
9
|
+
- Status: **arm-01 audited; arms 02–06 audited** (explorer report; verified spot
|
|
10
|
+
checks pending — treat claims below as explorer-verified until I re-read).
|
|
11
|
+
|
|
12
|
+
## Verified layout
|
|
13
|
+
|
|
14
|
+
`packages/` (arm-shaped): `acp`, `api`, `attachment`, `boot`, `browser-use`,
|
|
15
|
+
`bundle`, `client`, `compaction`, `computer-use`, `context`, `core` (with
|
|
16
|
+
`packages/core/tools`, `packages/core/system-prompt`, `packages/core/agent-loop`),
|
|
17
|
+
`credentials`, `deliverables`, `fs`, `guard`, `host`, `identity`, `interaction`,
|
|
18
|
+
`jobs`, `llm`, `lsp`, `mcp`, `plan`, `preset`, `ptc-runtime`, `sandbox`,
|
|
19
|
+
`schedule`, `session`, `session-query`, `settings`, `shell`, `skill`, `spill`,
|
|
20
|
+
`ssh`, `storage`, `subagent`, `subprocess`, `telemetry`, `terminal`, `todo`,
|
|
21
|
+
`util`, `web`, `workflow`, `workspace`.
|
|
22
|
+
|
|
23
|
+
## Core facts per arm (audited)
|
|
24
|
+
|
|
25
|
+
**02 tools.** Canonical registry is `ctx.tools` (dsh-tools), not the loop:
|
|
26
|
+
declaring a tool via `defineTool` makes it visible, and ToolRuntime feeds the
|
|
27
|
+
system prompt automatically (`packages/core/tools/README.md:30,34-62`;
|
|
28
|
+
`packages/core/tools/src/index.ts:857`). Two presentation modes: `native`
|
|
29
|
+
(all schemas) vs `ptc` (models see only `run_code` + generated SDK — programmatic
|
|
30
|
+
tool calling), with per-agent `presentAs` override
|
|
31
|
+
(`packages/core/tools/README.md:68-81`). Plain restriction API:
|
|
32
|
+
`ctx.tools.restrict(filter)` allow/deny masks that intersect and lift on dispose
|
|
33
|
+
(`README.md:85`). **The gate is inside dsh-tools**, a fixed pipeline:
|
|
34
|
+
`tools/pre-execute` (allow/deny/ask) → monotonic `ctx.tools.guard()` reasons →
|
|
35
|
+
`tools/execute` → `tools/post-execute` → observe-only `tools/result`
|
|
36
|
+
(`README.md:89,109`; ask at `packages/core/tools/src/index.ts:608-612,1513-1527`).
|
|
37
|
+
`packages/guard` is *not* the gate — it is loop hygiene (repeat-tool reminder,
|
|
38
|
+
timeout policy). `toolOrder` is validated config: explicit model-facing order,
|
|
39
|
+
exactly one `<unlisted-tools>` rest entry, unknown names fail assembly
|
|
40
|
+
(`packages/core/system-prompt/README.md:50-52,179`). Bundle = profile patch
|
|
41
|
+
layer stacked over `dsh-base`, which ships a default wallet policy confining
|
|
42
|
+
file writes and asking before risky actions
|
|
43
|
+
(`packages/bundle/README.md:12`, `packages/bundle/base/README.md:50`).
|
|
44
|
+
|
|
45
|
+
**03 subagents.** `ctx.subagents` + provider backends + tool plugins
|
|
46
|
+
(`packages/subagent/README.md:27-35`). Spawn returns immediately with
|
|
47
|
+
`started subagent <childId>`; completion notice delivered later
|
|
48
|
+
(`tool-subagent/README.md:59`). Two kinds: fresh child (`spawn`) vs `fork`
|
|
49
|
+
seeded from the parent's completed history (`README.md:28-29`); local children
|
|
50
|
+
are continuable; external backends (ACP/Codex/Claude Code) "execute once"
|
|
51
|
+
(`README.md:12,61`). Capacity defaults: 8 active, depth 1
|
|
52
|
+
(`subagent/src/README.md:53,49`). **No description-based auto-routing** in dsh —
|
|
53
|
+
the model names a preset from an enum allowlist (`tool-subagent/README.md:52,68`).
|
|
54
|
+
|
|
55
|
+
**04 skills.** Progressive disclosure: before the first request the model gets a
|
|
56
|
+
durable catalog of names + capped descriptions (default cap 500 chars), and
|
|
57
|
+
loads full body via the `skill` tool; `/name` invocation injects the same
|
|
58
|
+
instructions (`packages/skill/tool-skill/README.md:12,54-56`); catalog changes
|
|
59
|
+
append a complete replacement; empty catalog retires names
|
|
60
|
+
(`:57`).
|
|
61
|
+
|
|
62
|
+
**05 context.** `compaction-basic` triggers at
|
|
63
|
+
`floor(min(W×0.8, W−O−headroom))` with 65_536 headroom, keeps the newest 16%,
|
|
64
|
+
one extra model request, only the summary retained
|
|
65
|
+
(`packages/compaction/compaction-basic/README.md:12,32,62-68`; `config.ts:75-78`);
|
|
66
|
+
oversized tool outputs pruned first, image placeholders swapped for offloaded
|
|
67
|
+
images (`packages/compaction/README.md:31-32`). `session-query` = SQLite FTS5
|
|
68
|
+
search over the durable log, independent of compaction
|
|
69
|
+
(`packages/session-query/README.md:12,30`).
|
|
70
|
+
|
|
71
|
+
**06 memory.** No memory package by design. Durables: immutable canonical JSONL
|
|
72
|
+
sessions with checkpoint policy (`packages/session/README.md:38-39`), todo lists
|
|
73
|
+
persisting across sessions (owned by the session, whole-list replace,
|
|
74
|
+
`packages/todo/README.md:12`), `spill` = full text stored outside context with
|
|
75
|
+
locator + retrieval guidance (`packages/spill/README.md:12,30-31`),
|
|
76
|
+
`storage` = non-session app data, never model-visible
|
|
77
|
+
(`packages/storage/README.md:12,27-30`), `deliverables` = per-turn outputs as
|
|
78
|
+
client-only session events with `workspace/changes` derived from git snapshots
|
|
79
|
+
(`packages/deliverables/README.md:12,27-28`). Cross-session agent memory:
|
|
80
|
+
unaddressed.
|
|
81
|
+
|
|
82
|
+
**07–09 briefs.** Sandbox = file-effect policy classes
|
|
83
|
+
(read-only/workspace-write/danger-full-access) with Landlock/Seatbelt/Windows
|
|
84
|
+
backends and one-time approved escalation (`packages/sandbox/README.md:12,30`);
|
|
85
|
+
one shell executor per composition (`packages/shell/README.md:12,38`); one
|
|
86
|
+
`ctx.subprocess` service with bounded output and scrubbed env
|
|
87
|
+
(`packages/subprocess/README.md:12,27`); telemetry is an OTel transport with
|
|
88
|
+
`FEEDBACK_ONLY` default (`packages/telemetry/README.md:12,25`,
|
|
89
|
+
`packages/bundle/base/README.md:50`).
|
|
90
|
+
|
|
91
|
+
## Open questions, answered
|
|
92
|
+
|
|
93
|
+
1. Tool plugin interface → `defineTool` + `ctx.tools` registry; schemas flow to
|
|
94
|
+
the prompt via ToolRuntime's self-registration.
|
|
95
|
+
2. `guard` → not the approval mechanism; gate = `tools/pre-execute` pipeline in
|
|
96
|
+
dsh-tools.
|
|
97
|
+
3. `ptc-runtime` → programmatic tool calling: models get exactly `run_code` plus
|
|
98
|
+
a generated SDK; executionInstructions carry syntax/state guidance.
|
|
99
|
+
4. `spill` → out-of-context storage returning locators; feeds compaction policy.
|
|
100
|
+
5. `acp` → Agent Client Protocol islands (one of several subagent backends).
|
|
101
|
+
6. Plugin prompt contributions → ordered sections incl. `.tools()` providers;
|
|
102
|
+
ordering is a validated contract (see arm 01).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Source: harness² (Google Research)
|
|
2
|
+
|
|
3
|
+
- Origin: [google-research/harness2](https://github.com/google-research/harness2)
|
|
4
|
+
(Apache 2.0) and the paper *Harness²: Recursive Agent Harnessing for an Open
|
|
5
|
+
World* — Xu et al., 2026, [arXiv:2610.14224](https://arxiv.org/abs/2610.14224)
|
|
6
|
+
(PDF saved at `external/harness2/harness2-arxiv-2610.14224.pdf`). Project page:
|
|
7
|
+
[harness2.github.io](https://harness2.github.io/). Site: 11.5 pts WorkBuddy-Bench
|
|
8
|
+
etc. — verify exact numbers from the paper before citing.
|
|
9
|
+
- Local clone: `external/harness2` (Python). Note: substrate adapters include
|
|
10
|
+
`opencode.py` and `codex.py` — harness² wraps other harnesses.
|
|
11
|
+
- Why studied: the conceptual core of this study. A harness = everything around a
|
|
12
|
+
frozen model (prompts, tools, memory, skills, orchestration); harnessing =
|
|
13
|
+
optimizing that system recursively, at task level (edit → probe → compose) and
|
|
14
|
+
harness level (experience reflector → improvement harness).
|
|
15
|
+
|
|
16
|
+
## Verified layout
|
|
17
|
+
|
|
18
|
+
`harness2/core/`: `prompts.py`, `proposer.py`, `recursion.py`, `selection.py`,
|
|
19
|
+
`judge.py`, `library.py`, `ledger.py`, `tree.py`, `context.py`, `spec.py`,
|
|
20
|
+
`schedule.py`, `runmark.py`, `report.py`.
|
|
21
|
+
|
|
22
|
+
`harness2/substrate/`: `base.py`, `codex.py`, `opencode.py`.
|
|
23
|
+
|
|
24
|
+
`harness2/cli/`: `bridge.py`, `judge.py`, `run_sweep.py`, `check.py`, `report.py`,
|
|
25
|
+
`setup.py`, `demo.py`.
|
|
26
|
+
|
|
27
|
+
Docs: `docs/BENCHMARKS.md`, `docs/EXPERIMENTS.md`, `docs/SETUP.md`.
|
|
28
|
+
|
|
29
|
+
## Map to arms
|
|
30
|
+
|
|
31
|
+
- Arm 10 (refinement ⭐ — primary): `proposer` (harness editor: invariant vs domain
|
|
32
|
+
edits), probes/executor for candidates, `selection` (composer choosing among
|
|
33
|
+
candidates), `recursion` (two levels), `judge` (answer-free self-labelling of
|
|
34
|
+
rollouts), `library` (experience library), `ledger` — compare against this
|
|
35
|
+
harness's Propose–Probe–Compose, answer-free selection, experience library,
|
|
36
|
+
refine/ledger identity, and `RefineHost` isolation.
|
|
37
|
+
- Arm 01 (prompt): `tree.py` + `context.py` — what their harness tree/editable
|
|
38
|
+
files look like vs this harness's versions never, only superseded.
|
|
39
|
+
- Arm 06 (memory): `library.py` — cross-task experience write-back policy.
|
|
40
|
+
|
|
41
|
+
## Open questions for the audit
|
|
42
|
+
|
|
43
|
+
1. What is editable in their harness tree, what is invariant, and how does
|
|
44
|
+
"invariant" map to this harness's capped/validated c1–c4?
|
|
45
|
+
2. How does their self-judge stay answer-free — is its label visible to proposer
|
|
46
|
+
and composer, and does its error bar matter?
|
|
47
|
+
3. How are candidate probes isolated (workspace, approvals refused)?
|
|
48
|
+
4. What does the experience reflector write back, with what schema and trigger?
|
|
49
|
+
5. Which substrate contract does `substrate/opencode.py` actually need — is one
|
|
50
|
+
substrate adapter for this harness feasible via `RefineHost`?
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Source: Kimi CLI (Moonshot)
|
|
2
|
+
|
|
3
|
+
- Origin: [MoonshotAI/Kimi-CLI](https://github.com/MoonshotAI/Kimi-CLI) — Moonshot's
|
|
4
|
+
coding agent CLI for Kimi models; also source for the K2 agent-harness lessons in
|
|
5
|
+
[the Kimi K2 technical report](https://github.com/MoonshotAI/Kimi-K2/blob/main/tech_report.md)
|
|
6
|
+
(agent-related: tool design, agentic data pipeline, prompt formats — offline read).
|
|
7
|
+
- Local clone: `external/kimi-cli` (30 MB, Python + Bun packages). **Note: neuron
|
|
8
|
+
shipped archived** — `packages/kosong/README.md:3-5` states the package (and the
|
|
9
|
+
Kimi CLI monorepo) is no longer maintained; PyPI versions remain. Treat as a
|
|
10
|
+
historical design point, not a living one.
|
|
11
|
+
- Why studied: they report agent-capability numbers from harness choices
|
|
12
|
+
(tool-call reliability, cross-platform behavior), and their harness is young —
|
|
13
|
+
a good contrast to opencode/dsh maturity.
|
|
14
|
+
|
|
15
|
+
## Verified layout
|
|
16
|
+
|
|
17
|
+
**Archived, no longer maintained** — `external/kimi-cli/packages/kosong/README.md:3-5`
|
|
18
|
+
states the Kimi CLI monorepo is archived; kosong itself ("LLM abstraction layer:
|
|
19
|
+
unified messages, async tool orchestration, pluggable providers", `README.md:9-10`)
|
|
20
|
+
remains published on PyPI.
|
|
21
|
+
- `packages/`: `kaos`, `kimi-code`, `kosong` — names suggest an OS-abstraction
|
|
22
|
+
layer (kaos), the coding product (kimi-code), and a core/primitive crate
|
|
23
|
+
(kosong). Verify.
|
|
24
|
+
- `klips/`, `sdks/`, `examples/`, `docs/`.
|
|
25
|
+
|
|
26
|
+
## Map to arms (pending verification per claim)
|
|
27
|
+
|
|
28
|
+
- Arm 02 (tools): kosong primitives (tool call protocol), shell/file tools.
|
|
29
|
+
- Arm 08 (execution): kaos (platform abstraction — include zsh/POSIX-specific
|
|
30
|
+
behavior matrices from their reports).
|
|
31
|
+
- Arm 01 (prompt): kimi-code's prompt assembly; system prompt size/variants.
|
|
32
|
+
- Arm 03 (subagents): verify — does kimi-cli have subagents or just parallel
|
|
33
|
+
tools?
|
|
34
|
+
- Arm 09 (observability): `klips`/vis.
|
|
35
|
+
|
|
36
|
+
## Open questions for the audit
|
|
37
|
+
|
|
38
|
+
1. What is kosong's tool interface, and does it version tool schemas?
|
|
39
|
+
2. kaos: which OS differences do they encode (Windows/macOS sandbox quirks)?
|
|
40
|
+
3. How does the CLI do cost/usage accounting and context tracking?
|
|
41
|
+
4. Tech report: what harness decisions do they credit for SWE-bench/ToolBench
|
|
42
|
+
deltas —tool granularity, prompting, or sandboxing?
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Source: oh-my-pi (omp) — the open tuning of pi
|
|
2
|
+
|
|
3
|
+
- Origin: [can1357/oh-my-pi](https://github.com/can1357/oh-my-pi); a fork of
|
|
4
|
+
[badlogic/pi-mono](https://github.com/badlogic/pi-mono) by @mariozechner. This
|
|
5
|
+
harness family's Pi session runtime is upstream pi; omp is the sharpened sibling.
|
|
6
|
+
- Local clone: `external/omp` (907 MB incl. assets/Bazel).
|
|
7
|
+
- Status: **arm-01 verified in person; arms 02–06 audited** (explorer report;
|
|
8
|
+
my spot-check of `date-cwd-reminder.ts` done).
|
|
9
|
+
|
|
10
|
+
## Verified layout
|
|
11
|
+
|
|
12
|
+
Rust crates (`crates/`): `pi-ast`, `pi-builtins`, `pi-diff`, `pi-edit`, `pi-iso`,
|
|
13
|
+
`pi-natives`, `pi-predict`, `pi-shell`, `pi-vcs`, `pi-vfs`, `pi-voice`,
|
|
14
|
+
`pi-walker`. Bun/TS packages: `coding-agent` (the surface), `metaharness`,
|
|
15
|
+
`mnemopi`, `snapcompact`, `agent`, `stats`, `tui`, `wire`, `catalog`.
|
|
16
|
+
|
|
17
|
+
## Core facts per arm (audited)
|
|
18
|
+
|
|
19
|
+
**02 tools.** 30 built-in tool names as a const list
|
|
20
|
+
(`packages/coding-agent/src/tools/builtin-names.ts:1-32`) + 3 hidden
|
|
21
|
+
(`think/yield/goal`, `:36`; root README's "31" claim disagrees — unverified).
|
|
22
|
+
`createTools` resolves/constructs/registers into `session.toolRegistry`
|
|
23
|
+
(`.../tools/index.ts:554-591,831-861`); settings gate each tool
|
|
24
|
+
(`:96-105`). Tool definition is rich: `AgentTool` extends `Tool` with label,
|
|
25
|
+
TypeBox parameters, execute, renderCall/renderResult hooks, an **approval tier
|
|
26
|
+
declaration** (read|write|exec, exec default), `loadMode` essential/discoverable,
|
|
27
|
+
`docTopics` (`xd://` links), per-call concurrency (shared/exclusive), and
|
|
28
|
+
speculation policy (`packages/agent/src/types.ts:1129-1243`). Descriptions are
|
|
29
|
+
rendered from static `.md` templates via a dynamic getter (`.../tools/read.ts:975-996`).
|
|
30
|
+
Tool prompts never inline (`AGENTS.md` "Prompts never in code"). Rust side:
|
|
31
|
+
`pi-natives` = PTY/grep/diff/EditStore/snapcompact.rs bindings;
|
|
32
|
+
`pi-edit` = patch engine; `pi-shell` = in-process bash host **with vendored
|
|
33
|
+
uutils coretools (`pi-builtins`) — a real Unix environment**; `pi-edit`+`pi-shell`
|
|
34
|
+
compose the editing/shell backbone
|
|
35
|
+
(`crates/pi-shell/Cargo.toml:18`; `crates/pi-builtins/src/`). MCP: `mcp__<server>_<tool>`
|
|
36
|
+
names, 64-char cap, deduped transforms before registry reconciliation
|
|
37
|
+
(`.../mcp/tool-bridge.ts:428,468-491`; `session/session-tools.ts:2231-2264`).
|
|
38
|
+
|
|
39
|
+
**Gate (02/07).** Tier × policy per tool: user-overridable `allow|deny|prompt`
|
|
40
|
+
per tool; modes `always-ask | write | yolo`; missing context **fails closed**
|
|
41
|
+
to always-ask (`.../tools/approval.ts:17-18,53-84,100`). Extension hooks wrap
|
|
42
|
+
every call (`extensibility/hooks/tool-wrapper.ts`).
|
|
43
|
+
|
|
44
|
+
**03 subagents.** The `task` tool; agent definitions discovered from bundled +
|
|
45
|
+
`~/.omp/agent/agents/*.md` + `.omp/agents/*.md` (`.../task/index.ts:4-10`,
|
|
46
|
+
`task/discovery.ts`). `SpawnRun` holds a semaphore permit, streams progress,
|
|
47
|
+
adopted by the owner on abort/binding (`task/spawn-run.ts:1-9,47-88`);
|
|
48
|
+
**speculative launch** starts children while the `tasks[]` arguments are still
|
|
49
|
+
streaming (`task/speculative-launch.ts`). Isolation: pinned child settings,
|
|
50
|
+
advisor forced off, **mid-turn compaction forced on** (whole assignment = one
|
|
51
|
+
turn), isolated runs get their own **worktree** and may not expose roots outside
|
|
52
|
+
it (`task/executor.ts:1132,4033-4055,4339`; `docs/compaction.md:76`). Structured
|
|
53
|
+
children always get `yield`; depth-limited recursion (`task/index.ts:45`).
|
|
54
|
+
`autoresearch` is a hillclimb/eval loop with dashboard + own git branch — no
|
|
55
|
+
spawn refs found (**unverified** whether it uses task).
|
|
56
|
+
|
|
57
|
+
**05 context.** Compaction triggers post-turn above
|
|
58
|
+
`resolveThresholdTokens`, mid-turn before requests, idle, and on
|
|
59
|
+
overflow-recovery (`.../session/session-maintenance.ts:626,2147,2246,2412`).
|
|
60
|
+
`compaction.methodOrder` strategy ladder: LLM summarize (regular/handoff), `shake`
|
|
61
|
+
(local mechanical elision to `artifact://` refs), `snapcompact`
|
|
62
|
+
(`docs/compaction.md:202-215`). **Snapcompact = deterministic, no LLM**:
|
|
63
|
+
discarded history serialized with caps into provider-aware PNG bitmaps
|
|
64
|
+
(fonts per provider family), persisted and re-attached each rebuild
|
|
65
|
+
(`packages/snapcompact/README.md:3-29,44-68`). Sizing: archive gets half the
|
|
66
|
+
headroom; kept context ≤ 60% of threshold, target ≤ 80%
|
|
67
|
+
(`docs/compaction.md:217,221`). Cache care: pruned outputs blanked only within
|
|
68
|
+
the model's `prompt-cache-lookback` bound (`docs/compaction.md:248`); summary
|
|
69
|
+
drops whole call/result pairs (`:250`); **byte-stable system prompt between
|
|
70
|
+
turns is a session invariant** (`session/agent-session.ts:2607`).
|
|
71
|
+
`compress/` is unrelated — a separate "dense prompt register" rewriter
|
|
72
|
+
(`compress/index.ts:2-11`).
|
|
73
|
+
|
|
74
|
+
**06 memory.** Five `memory.backend` modes: off | local | hindsight | mnemopi |
|
|
75
|
+
sharpshooter (`docs/memory.md:3-11`). Injection = Memory Guidance block at
|
|
76
|
+
session start from a project summary; outputs are per-project `MEMORY.md` +
|
|
77
|
+
lessons + `skills/` on disk. Pipeline: startup background job, two phases
|
|
78
|
+
(per-session extraction → global consolidation with lease+heartbeat; skipped
|
|
79
|
+
for subagents), SQLite job queues (`memories/index.ts:29-67`; `docs/memory.md:74-89`).
|
|
80
|
+
Injection budget shares 5000 tokens (summary+lessons, `docs/memory.md:132`);
|
|
81
|
+
`learn` lessons capped 100 × 2000 chars and redacted (`docs/memory.md:70`).
|
|
82
|
+
`hindsight` = remote vector service; recall on first turn, auto-retain every N
|
|
83
|
+
turns (`hindsight/state.ts:385-388`). `mnemopi` = local SQLite working/episodic
|
|
84
|
+
engine + `memory://` read protocol; user-facing tools `recall/retain/reflect/
|
|
85
|
+
memory_edit` (`packages/mnemopi/README.md:5-8`; `docs/memory.md:34-46`).
|
|
86
|
+
Written on minutes/days cadence — not immediately at task end.
|
|
87
|
+
|
|
88
|
+
**07–09 briefs.** `judgment/` resolves a Judge model role for typed judgments
|
|
89
|
+
(`judgment/index.ts:1-10`); `capability/` is the provider/extension loading
|
|
90
|
+
registry. Execution: inside-process unix env via pi-shell, always
|
|
91
|
+
non-interactive env (pagers off, TERM=dumb) (`exec/non-interactive-env.ts:6-25`);
|
|
92
|
+
no OS-level sandbox located (**unverified**). `omp stats` = local usage
|
|
93
|
+
dashboard, live ingest, port 3847 (`packages/stats/README.md:3,9,31-35`).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Source: opencode
|
|
2
|
+
|
|
3
|
+
- Origin: [sst/opencode](https://github.com/sst/opencode), the coding agent this
|
|
4
|
+
harness family uses day-to-day. TypeScript/Bun monorepo.
|
|
5
|
+
- Local clone: `external/opencode` (shallow, cloned 2026-10-21).
|
|
6
|
+
- Why studied as an anchor: battle-tested open harness; this harness already borrows
|
|
7
|
+
its mental model of sessions/agents/tools, so deltas are cheap to evaluate.
|
|
8
|
+
|
|
9
|
+
## Verified layout
|
|
10
|
+
|
|
11
|
+
- `packages/core/src/` — the harness core. Observed top-level: `agent.ts`,
|
|
12
|
+
`permission.ts`, `mcp.ts`, `filesystem.ts`, `instructions` dir,
|
|
13
|
+
`instruction-discovery.ts`, `compaction`? (not yet verified below alphabet
|
|
14
|
+
cut), `codemode/`, `config/`, `event-logger.ts`, `persistent-pty.ts`,
|
|
15
|
+
`models-dev/`, `job.ts`, `kv.ts`.
|
|
16
|
+
- `packages/` of interest beyond core: `agent`, `cli`, `plugin`,
|
|
17
|
+
`plugin-browser`, `plugins`, `server`, `session-ui`, `tui`, `codemode`,
|
|
18
|
+
`httpapi-codegen`, `protocol`, `sdk`.
|
|
19
|
+
- AGENTS.md at repo root states their engineering expectations.
|
|
20
|
+
|
|
21
|
+
## Map to arms (pending verification per claim)
|
|
22
|
+
|
|
23
|
+
- Arm 01 (prompt): `instructions/`, `instruction-discovery` — AGENTS.md-style
|
|
24
|
+
instruction discovery; ayurveda of stable/dynamic sections unknown.
|
|
25
|
+
- Arm 02 (tools): built-in tool set + MCP (`mcp.ts`) + tool providers via plugins.
|
|
26
|
+
- Arm 03 (subagents): `agent.ts` — primary/secondary agents by description.
|
|
27
|
+
- Arm 04 (skills): plugins and community plugins; the `plugins/` package.
|
|
28
|
+
- Arm 05 (context): compaction (verify location), message queueing.
|
|
29
|
+
- Arm 06 (memory): no first-class memory beyond instructions; community plugins.
|
|
30
|
+
- Arm 07 (governance): `permission.ts` — permission model, per-tool approval modes.
|
|
31
|
+
- Arm 08 (execution): `persistent-pty.ts`, `terminal/` package, containers package.
|
|
32
|
+
- Arm 09 (observability): `event-logger.ts`, events bus (`bus.ts`), TUI
|
|
33
|
+
trajectories.
|
|
34
|
+
|
|
35
|
+
## Open questions for the audit
|
|
36
|
+
|
|
37
|
+
1. Where is the session system prompt assembled, and is any of it cache-stable?
|
|
38
|
+
2. How do tool descriptions reach the model: generated, hardcoded, or provider
|
|
39
|
+
overridable?
|
|
40
|
+
3. What compaction exists in core, and is it triggered in-band?
|
|
41
|
+
4. How does the permission model express "always/deny/ask" per tool and per
|
|
42
|
+
pattern?
|
|
43
|
+
5. What do plugin tool providers get access to (context object shape)?
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Source: OpenHands (All Hands AI)
|
|
2
|
+
|
|
3
|
+
- Origin: [All-Hands-AI/OpenHands](https://github.com/All-Hands-AI/OpenHands) is now
|
|
4
|
+
the **Agent Canvas frontend** (TypeScript UI + backend orchestration); the agent
|
|
5
|
+
runtime itself lives in the [OpenHands/software-agent-sdk](https://github.com/OpenHands/software-agent-sdk)
|
|
6
|
+
(`openhands-sdk`, `openhands-agent-server`, `openhands-tools`,
|
|
7
|
+
`openhands-workspace`). README: each conversation runs in its own Docker
|
|
8
|
+
container with its own Agent Server and tools; Agent Server is a REST API on a
|
|
9
|
+
host/port.
|
|
10
|
+
- Local clones: `external/openhands` (41 MB UI/orchestration) and
|
|
11
|
+
`external/openhands-agent-sdk` (runtime).
|
|
12
|
+
- Why studied: the most productized open harness — UI, server, containers,
|
|
13
|
+
scheduling, and a clean agent/skill/microagent story in Python.
|
|
14
|
+
|
|
15
|
+
## Verified layout
|
|
16
|
+
|
|
17
|
+
- `external/openhands-agent-sdk/`: `openhands-sdk/` (agent, tools, llm, events),
|
|
18
|
+
`openhands-agent-server/`, `openhands-tools/`, `openhands-workspace/`,
|
|
19
|
+
`clients/`. (Deeper inventory pending.)
|
|
20
|
+
- `external/openhands/src/`: React app (`routes`, `stores`, `services`,
|
|
21
|
+
`extensions`, `hooks`).
|
|
22
|
+
|
|
23
|
+
## Map to arms (pending verification per claim)
|
|
24
|
+
|
|
25
|
+
- Arm 03 (subagents): SDK agents + Agent Server's conversation-per-container
|
|
26
|
+
isolation; scheduling via the separate `automation` repo.
|
|
27
|
+
- Arm 04 (skills): SDK's skill/microagent model (condenser? verify) — historically
|
|
28
|
+
"microagents" from `.openhands/` folders.
|
|
29
|
+
- Arm 05 (context): SDK condensation pipeline (researched: LLM-based
|
|
30
|
+
condensers) — worth auditing closely; this harness has explicit opinions here.
|
|
31
|
+
- Arm 06 (memory): microagents + per-agent state in SDK; frontend `library/`?
|
|
32
|
+
- Arm 07 (governance): server-side confirmation policy, sandboxed exec, security
|
|
33
|
+
modes.
|
|
34
|
+
- Arm 08 (execution): workspace containers, per-conversation isolation.
|
|
35
|
+
- Arm 09 (observability): event stream persisted per conversation; frontend
|
|
36
|
+
trajectory UI.
|
|
37
|
+
|
|
38
|
+
## Open questions for the audit
|
|
39
|
+
|
|
40
|
+
1. SDK `openhands-sdk/`: how are tools, skills, agents wired — what is the
|
|
41
|
+
`llm.py` ↔ tool schema path?
|
|
42
|
+
2. Condensers: which ones exist, when triggered, how events are rewritten — does
|
|
43
|
+
it preserve caching/prefix stability?
|
|
44
|
+
3. What does the Agent Server persist per conversation (format, retention).
|
|
45
|
+
4. How do microagents differ from skills (trigger on file/mention vs on-demand)?
|
|
46
|
+
5. Where does the UI fit in governance (approval UI) vs server-side `ToolPolicy`.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Source: smolagents (HF CodeAct)
|
|
2
|
+
|
|
3
|
+
- Origin: [huggingface/smolagents](https://github.com/huggingface/smolagents) —
|
|
4
|
+
the CodeAct lineage: the model writes Python action code instead of JSON tool
|
|
5
|
+
calls ("simple = true"). Paper: *CodeAct* (arXiv:2402.01030, executable-code
|
|
6
|
+
actions outperform JSON); smolagents docs echo it.
|
|
7
|
+
- Local clone: `external/smolagents` (4.3 MB, Python; smallest source here).
|
|
8
|
+
- Why studied: the sharpest *alternative* to JSON tool calls — code-as-action
|
|
9
|
+
changes every arm at once (tools, context, memory, governance).
|
|
10
|
+
|
|
11
|
+
## Verified layout
|
|
12
|
+
|
|
13
|
+
`src/smolagents/`: `agents.py`, `memory.py`, `tools.py`, `default_tools.py`,
|
|
14
|
+
`prompts/`, `local_python_executor.py`, `models.py`, `mcp_client.py`,
|
|
15
|
+
`tool_validation.py`, `_function_type_hints_utils.py`, `serialization.py`,
|
|
16
|
+
`monitoring.py`, `gradio_ui.py`, `vision_web_browser.py`, `remote_executors.py`.
|
|
17
|
+
|
|
18
|
+
## Map to arms (pending verification per claim)
|
|
19
|
+
|
|
20
|
+
- Arm 02 (tools): `tools.py` + `@tool` decorator + `tool_validation.py` — tool =
|
|
21
|
+
Python function w/ schema from type hints; `default_tools.py` set.
|
|
22
|
+
- Arm 08+02 (code-as-action): `local_python_executor.py`, `remote_executors.py`
|
|
23
|
+
(sandbox: local interception vs E2B etc.), `sandbox resolution`.
|
|
24
|
+
- Arm 05 (context): `memory.py` — the agent's step memory structure (planning
|
|
25
|
+
steps, tool logs); re-writable by design.
|
|
26
|
+
- Arm 01 (prompt): `prompts/` templates incl. system prompt for CodeAct loops,
|
|
27
|
+
planning prompts.
|
|
28
|
+
- Arm 09 (observability): `monitoring.py`, `gradio_ui.py`.
|
|
29
|
+
- Arm 02-interop: `mcp_client.py` — MCP tools bridged into code actions.
|
|
30
|
+
|
|
31
|
+
## Open questions for the audit
|
|
32
|
+
|
|
33
|
+
1. How is memory.py structured (system prompt + zipped action log) and what does
|
|
34
|
+
the model re-see each step?
|
|
35
|
+
2. What does the local executor intercept (imports? outputs?) and how does the
|
|
36
|
+
sandbox story compare with `RefineHost` probe isolation?
|
|
37
|
+
3. How do MCP tools become callable from generated code — namespace injection?
|
|
38
|
+
4. What is definitely not adoptable here (this harness has a strict tool-gate model;
|
|
39
|
+
free code execution is anathema), yet may translate as *internal* code actions
|
|
40
|
+
(cf. opencode codemode, dsh ptc-runtime)?
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Source: SWE-agent
|
|
2
|
+
|
|
3
|
+
- Origin: [SWE-agent/SWE-agent](https://github.com/SWE-agent/SWE-agent) (formerly
|
|
4
|
+
princeton-nlp), research framework whose thesis is that *the environment
|
|
5
|
+
interface is the model's feature surface*: IC = Agent–Computer Interface design.
|
|
6
|
+
- Local clone: `external/swe-agent` (65 MB, Python).
|
|
7
|
+
- Why studied: the clearest published statement of "tools + interface shape
|
|
8
|
+
agent success" (arXiv:2405.15793); benchmark-native harness (SWE-bench).
|
|
9
|
+
|
|
10
|
+
## Verified layout
|
|
11
|
+
|
|
12
|
+
- `sweagent/`: `agent/`, `environment/`, `run/`, `tools/`, `inspector/`,
|
|
13
|
+
`exceptions.py`, `types.py`, `utils/`.
|
|
14
|
+
- `tools/` at repo root: tool bundles (separate package). `config/`: agent configs
|
|
15
|
+
(YAML per model). `trajectories/`: run artifacts in-tree. `mkdocs.yml` + `docs/`.
|
|
16
|
+
|
|
17
|
+
## Map to arms (pending verification per claim)
|
|
18
|
+
|
|
19
|
+
- Arm 02 (tools): tool bundles (`tools/`), command-parsing interface state
|
|
20
|
+
(`agent/`), explicit "no dangerous commands" curation lists.
|
|
21
|
+
- Arm 01 (prompt): `config/` YAML templates + `sweagent/agent/` template
|
|
22
|
+
variables.
|
|
23
|
+
- Arm 08 (execution): `sweagent/environment/` — containerized bash sandboxes.
|
|
24
|
+
- Arm 09 (observability): `trajectories/` + `inspector/` — offline trajectory
|
|
25
|
+
viewer.
|
|
26
|
+
|
|
27
|
+
## Open questions for the audit
|
|
28
|
+
|
|
29
|
+
1. How much of their gain came from interface design (evidence in paper §)?
|
|
30
|
+
2. How are tool bundles declared/loaded, and what is their gate story?
|
|
31
|
+
3. Is there anything analogous to compaction (their runs are bounded) — or do they
|
|
32
|
+
rely on truncation and restarts?
|
|
33
|
+
4. What is worth copying given they optimize for single-shot benchmark runs, not
|
|
34
|
+
interactive use?
|