@xingular/harness 0.1.6 → 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 +107 -0
- package/LICENSE +202 -0
- package/NOTICE.md +60 -0
- package/README.md +265 -71
- package/THIRD_PARTY_LICENSES.md +942 -0
- package/dist/cli.js +14842 -9445
- 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 +1170 -62
- package/docs/README.md +34 -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-0001-owned-terminal.md +87 -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 +671 -0
- package/package.json +48 -12
- package/src/accounts/accounts.test.ts +0 -223
- package/src/accounts/accounts.ts +0 -522
- 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 -114
- 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 -299
- package/src/index.ts +0 -70
- 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 -289
- package/src/memory/blocks.test.ts +0 -78
- package/src/memory/blocks.ts +0 -406
- package/src/memory/caller.ts +0 -57
- 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 -330
- package/src/memory/migrate.ts +0 -79
- package/src/memory/operations.ts +0 -138
- package/src/memory/proposals.test.ts +0 -168
- package/src/memory/proposals.ts +0 -576
- package/src/memory/recall.test.ts +0 -104
- package/src/memory/recall.ts +0 -271
- 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 -314
- 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 -310
- package/src/sessions/conversation.test.ts +0 -150
- 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 -32
- package/src/sessions/pricing.ts +0 -60
- package/src/sessions/reasoningSummaries.ts +0 -59
- package/src/sessions/registry.ts +0 -294
- 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 -569
- package/src/sessions/runtimeResources.test.ts +0 -61
- package/src/sessions/sessions.test.ts +0 -455
- package/src/sessions/sessions.ts +0 -295
- package/src/skills/registry.test.ts +0 -104
- package/src/skills/registry.ts +0 -407
- package/src/terminal/cli.ts +0 -149
- package/src/terminal/client.ts +0 -74
- package/src/terminal/controller.ts +0 -227
- package/src/terminal/launch.test.ts +0 -34
- package/src/terminal/launch.ts +0 -88
- package/src/terminal/piExtension.ts +0 -210
- 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 -221
- package/src/terminal/standalone.test.ts +0 -130
- package/src/terminal/standalone.ts +0 -144
- package/src/terminal/terminal.test.ts +0 -330
- package/src/terminal/terminals.ts +0 -443
- package/src/tools/askUser.ts +0 -45
- package/src/tools/definitions.ts +0 -187
- package/src/tools/memoryTools.ts +0 -22
- package/src/tools/pluginPropose.ts +0 -41
- 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,43 @@
|
|
|
1
|
+
import type { CallerContext } from "../core/caller.js";
|
|
2
|
+
import type { ApprovalFacts } from "./approvals.js";
|
|
3
|
+
import type { RunRecord } from "./contracts.js";
|
|
4
|
+
export interface ToolCall {
|
|
5
|
+
run: RunRecord;
|
|
6
|
+
caller: CallerContext;
|
|
7
|
+
tool: string;
|
|
8
|
+
args: unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface ScopeDecision {
|
|
11
|
+
/** The run is unattended: nothing may ask a person, so what is not allowed is refused. */
|
|
12
|
+
automatic?: boolean;
|
|
13
|
+
allowed: boolean;
|
|
14
|
+
/** Not allowed as it stands, but a person may approve this one call. */
|
|
15
|
+
requiresApproval?: boolean;
|
|
16
|
+
/** Per-tool remembered approvals never answer this call. */
|
|
17
|
+
humanOnly?: boolean;
|
|
18
|
+
/** Whether the global always-approve switch may answer a human-only call. Defaults to false. */
|
|
19
|
+
allowGlobalApproval?: boolean;
|
|
20
|
+
reason?: string | null;
|
|
21
|
+
}
|
|
22
|
+
export interface ToolPolicy {
|
|
23
|
+
/** Whether the call is inside what this run may do. Asked before every tool call. */
|
|
24
|
+
scope?(call: ToolCall): Promise<ScopeDecision>;
|
|
25
|
+
/** Whether the tool is still switched on. Asked before a call and again after an approval; throws to block. */
|
|
26
|
+
authorize?(call: ToolCall): Promise<void>;
|
|
27
|
+
/** Facts about a pending approval that only the application knows. */
|
|
28
|
+
approval?(input: {
|
|
29
|
+
run: RunRecord;
|
|
30
|
+
target: string;
|
|
31
|
+
operation?: {
|
|
32
|
+
tool: string;
|
|
33
|
+
args: unknown;
|
|
34
|
+
};
|
|
35
|
+
}): Promise<ApprovalFacts>;
|
|
36
|
+
/** The connected apps this session may reach, out of those its scope already allows. */
|
|
37
|
+
connections?(input: {
|
|
38
|
+
sessionId: string;
|
|
39
|
+
runId: string | null;
|
|
40
|
+
caller: CallerContext;
|
|
41
|
+
connectionIds: string[];
|
|
42
|
+
}): Promise<string[]>;
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Dollars per million tokens. */
|
|
2
|
+
export interface PriceRates {
|
|
3
|
+
input: number;
|
|
4
|
+
output: number;
|
|
5
|
+
cacheRead: number;
|
|
6
|
+
cacheWrite: number;
|
|
7
|
+
/** The highest tier whose threshold the request's whole input exceeds replaces the base rates. */
|
|
8
|
+
tiers?: Array<{
|
|
9
|
+
input: number;
|
|
10
|
+
output: number;
|
|
11
|
+
cacheRead: number;
|
|
12
|
+
cacheWrite: number;
|
|
13
|
+
inputTokensAbove: number;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export interface PricedTokens {
|
|
17
|
+
inputTokens?: number;
|
|
18
|
+
outputTokens?: number;
|
|
19
|
+
cacheReadTokens?: number;
|
|
20
|
+
cacheWriteTokens?: number;
|
|
21
|
+
}
|
|
22
|
+
/** The cost of one request at `rates`. Same arithmetic as Pi's own `calculateCost`. */
|
|
23
|
+
export declare function costAt(rates: PriceRates, usage: PricedTokens): number;
|
|
24
|
+
type Catalogue = {
|
|
25
|
+
getModel(provider: string, model: string): {
|
|
26
|
+
cost?: PriceRates;
|
|
27
|
+
} | undefined;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The list rates Pi's catalogue has for a model, or null when it has none. A dated model id
|
|
31
|
+
* (`…-20250929`) also matches its undated entry. Rates of zero are "unknown", not "free".
|
|
32
|
+
*/
|
|
33
|
+
export declare function modelRates(provider: string | undefined, model: string | undefined, lookup?: Promise<Catalogue>): Promise<PriceRates | null>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { loadPi } from "../pi/runtime.js";
|
|
2
|
+
/** The cost of one request at `rates`. Same arithmetic as Pi's own `calculateCost`. */
|
|
3
|
+
export function costAt(rates, usage) {
|
|
4
|
+
const input = usage.inputTokens ?? 0;
|
|
5
|
+
const cacheRead = usage.cacheReadTokens ?? 0;
|
|
6
|
+
const cacheWrite = usage.cacheWriteTokens ?? 0;
|
|
7
|
+
const whole = input + cacheRead + cacheWrite;
|
|
8
|
+
let applied = rates;
|
|
9
|
+
let threshold = -1;
|
|
10
|
+
for (const tier of rates.tiers ?? []) {
|
|
11
|
+
if (whole > tier.inputTokensAbove && tier.inputTokensAbove > threshold) {
|
|
12
|
+
applied = tier;
|
|
13
|
+
threshold = tier.inputTokensAbove;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return (applied.input * input + applied.output * (usage.outputTokens ?? 0) + applied.cacheRead * cacheRead + applied.cacheWrite * cacheWrite) / 1_000_000;
|
|
17
|
+
}
|
|
18
|
+
let catalogue = null;
|
|
19
|
+
async function loadCatalogue() {
|
|
20
|
+
const { ModelRuntime } = await loadPi();
|
|
21
|
+
const none = { read: async () => undefined, list: async () => [], modify: async () => undefined, delete: async () => undefined };
|
|
22
|
+
return (await ModelRuntime.create({ credentials: none, modelsPath: null, refreshOnCreate: false }));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The list rates Pi's catalogue has for a model, or null when it has none. A dated model id
|
|
26
|
+
* (`…-20250929`) also matches its undated entry. Rates of zero are "unknown", not "free".
|
|
27
|
+
*/
|
|
28
|
+
export async function modelRates(provider, model, lookup = (catalogue ??= loadCatalogue())) {
|
|
29
|
+
if (!provider || !model)
|
|
30
|
+
return null;
|
|
31
|
+
const models = await lookup.catch(() => null);
|
|
32
|
+
if (!models)
|
|
33
|
+
return null;
|
|
34
|
+
for (const id of new Set([model, model.replace(/-\d{8}$/, '')])) {
|
|
35
|
+
const cost = models.getModel(provider, id)?.cost;
|
|
36
|
+
if (cost && (cost.input > 0 || cost.output > 0))
|
|
37
|
+
return cost;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const MAX_REASONING_SUMMARY_CHARS = 4000;
|
|
2
|
+
export declare const REASONING_SUMMARY_APIS: Set<string>;
|
|
3
|
+
/** Add the Responses API summary request while preserving the provider-selected effort. */
|
|
4
|
+
export declare function requestConciseReasoningSummary(payload: unknown): {
|
|
5
|
+
payload: unknown;
|
|
6
|
+
requested: boolean;
|
|
7
|
+
};
|
|
8
|
+
/** Pi preserves the provider reasoning item for both WebSocket and SSE replay.
|
|
9
|
+
* Read only its explicit summary: Pi's generic thinking field can also contain raw reasoning.
|
|
10
|
+
*/
|
|
11
|
+
export declare function completedReasoningSummary(message: unknown): string | undefined;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export const MAX_REASONING_SUMMARY_CHARS = 4_000;
|
|
2
|
+
export const REASONING_SUMMARY_APIS = new Set([
|
|
3
|
+
'openai-responses',
|
|
4
|
+
'azure-openai-responses',
|
|
5
|
+
'openai-codex-responses'
|
|
6
|
+
]);
|
|
7
|
+
function isRecord(value) {
|
|
8
|
+
return Boolean(value && typeof value === 'object' && !Array.isArray(value));
|
|
9
|
+
}
|
|
10
|
+
function cleanSummary(value) {
|
|
11
|
+
let text = '';
|
|
12
|
+
for (const character of value.trim()) {
|
|
13
|
+
if (text.length + character.length > MAX_REASONING_SUMMARY_CHARS)
|
|
14
|
+
break;
|
|
15
|
+
text += character;
|
|
16
|
+
}
|
|
17
|
+
return text.trim() || undefined;
|
|
18
|
+
}
|
|
19
|
+
/** Add the Responses API summary request while preserving the provider-selected effort. */
|
|
20
|
+
export function requestConciseReasoningSummary(payload) {
|
|
21
|
+
if (!isRecord(payload) || !isRecord(payload.reasoning))
|
|
22
|
+
return { payload, requested: false };
|
|
23
|
+
const effort = payload.reasoning.effort;
|
|
24
|
+
if (typeof effort !== 'string' || ['none', 'off'].includes(effort.toLowerCase()))
|
|
25
|
+
return { payload, requested: false };
|
|
26
|
+
return {
|
|
27
|
+
payload: { ...payload, reasoning: { ...payload.reasoning, summary: 'concise' } },
|
|
28
|
+
requested: true
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Pi preserves the provider reasoning item for both WebSocket and SSE replay.
|
|
32
|
+
* Read only its explicit summary: Pi's generic thinking field can also contain raw reasoning.
|
|
33
|
+
*/
|
|
34
|
+
export function completedReasoningSummary(message) {
|
|
35
|
+
if (!isRecord(message) || message.role !== 'assistant' || typeof message.api !== 'string' || !REASONING_SUMMARY_APIS.has(message.api) || !Array.isArray(message.content))
|
|
36
|
+
return undefined;
|
|
37
|
+
const parts = [];
|
|
38
|
+
const seen = new Set();
|
|
39
|
+
for (const block of message.content) {
|
|
40
|
+
if (!isRecord(block) || block.type !== 'thinking' || typeof block.thinkingSignature !== 'string')
|
|
41
|
+
continue;
|
|
42
|
+
try {
|
|
43
|
+
const item = JSON.parse(block.thinkingSignature);
|
|
44
|
+
if (!isRecord(item) || item.type !== 'reasoning' || !Array.isArray(item.summary))
|
|
45
|
+
continue;
|
|
46
|
+
if (typeof item.id === 'string') {
|
|
47
|
+
if (seen.has(item.id))
|
|
48
|
+
continue;
|
|
49
|
+
seen.add(item.id);
|
|
50
|
+
}
|
|
51
|
+
for (const part of item.summary) {
|
|
52
|
+
if (isRecord(part) && part.type === 'summary_text' && typeof part.text === 'string')
|
|
53
|
+
parts.push(part.text);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Signatures of other formats, or incomplete items, are not summary evidence.
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return cleanSummary(parts.join('\n\n'));
|
|
61
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { AutomaticReason } from "./approvals.js";
|
|
2
|
+
import { type QuestionOption, type RunEvent, type RunEventType, type RunRecord } from "./contracts.js";
|
|
3
|
+
export type ApprovalDecision = 'approved' | 'denied' | 'native';
|
|
4
|
+
export interface ApprovalInput {
|
|
5
|
+
requestId?: string;
|
|
6
|
+
operation?: {
|
|
7
|
+
tool: string;
|
|
8
|
+
args: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
target: string;
|
|
11
|
+
action: string;
|
|
12
|
+
screenshotRef?: string;
|
|
13
|
+
/** A tool the user may choose to always allow for this session. */
|
|
14
|
+
rememberable?: boolean;
|
|
15
|
+
/** `switch`: only the "always approve" switch may grant it. `none`: a person always decides. */
|
|
16
|
+
standing?: 'full' | 'switch' | 'none';
|
|
17
|
+
/** How long to wait for a decision before the request counts as denied. */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface QuestionInput {
|
|
21
|
+
requestId?: string;
|
|
22
|
+
userOnly?: boolean;
|
|
23
|
+
summary?: string;
|
|
24
|
+
question: string;
|
|
25
|
+
options: QuestionOption[];
|
|
26
|
+
multiSelect: boolean;
|
|
27
|
+
allowText: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface QuestionAnswer {
|
|
30
|
+
selected: string[];
|
|
31
|
+
text?: string;
|
|
32
|
+
/** Optional notes keyed by the selected choice label. */
|
|
33
|
+
notes?: Record<string, string>;
|
|
34
|
+
}
|
|
35
|
+
export interface ActiveRun {
|
|
36
|
+
runId: string;
|
|
37
|
+
sessionId: string;
|
|
38
|
+
emit(type: RunEventType, payload: unknown, native?: unknown): void;
|
|
39
|
+
onInterrupt(handler: () => Promise<void> | void): void;
|
|
40
|
+
/** Hands a message to the model after its current step; the session registers how. */
|
|
41
|
+
onSteer(handler: (text: string) => Promise<void> | void): void;
|
|
42
|
+
/** Resolves when the user decides; only the approval with this exact id can be resolved by it. */
|
|
43
|
+
requestApproval(input: ApprovalInput): Promise<ApprovalDecision>;
|
|
44
|
+
/** Asks the user a question and resolves with their answer. */
|
|
45
|
+
requestAnswer(input: QuestionInput): Promise<QuestionAnswer>;
|
|
46
|
+
/** Asks one to five related questions and resolves only after the whole batch is answered. */
|
|
47
|
+
requestAnswers(inputs: QuestionInput[]): Promise<QuestionAnswer[]>;
|
|
48
|
+
finish(outcome: 'completed' | 'failed' | 'interrupted', failure?: {
|
|
49
|
+
code: string;
|
|
50
|
+
message: string;
|
|
51
|
+
}): void;
|
|
52
|
+
readonly finished: boolean;
|
|
53
|
+
}
|
|
54
|
+
/** Called with every persisted event, and the run's record as it is after that event. */
|
|
55
|
+
export type RunListener = (event: RunEvent, run: RunRecord | null) => void;
|
|
56
|
+
export interface RegistryOptions {
|
|
57
|
+
root: () => string;
|
|
58
|
+
/** Why this approval can be granted without asking, if it can. */
|
|
59
|
+
automatic?: (run: RunRecord, target: string, operation: ApprovalInput['operation'], standing: 'full' | 'switch') => Promise<AutomaticReason | null>;
|
|
60
|
+
/** Called when a run stops being live, whatever its outcome. */
|
|
61
|
+
ended?: (runId: string, sessionId: string) => void;
|
|
62
|
+
/** Removes secrets from an event before it is stored or shown. */
|
|
63
|
+
redact?: (event: RunEvent) => void;
|
|
64
|
+
}
|
|
65
|
+
export declare class RunRegistry {
|
|
66
|
+
private readonly options;
|
|
67
|
+
private readonly runs;
|
|
68
|
+
private readonly approvals;
|
|
69
|
+
private readonly questions;
|
|
70
|
+
private readonly nativeCleared;
|
|
71
|
+
private readonly waiters;
|
|
72
|
+
private readonly stopping;
|
|
73
|
+
private readonly listeners;
|
|
74
|
+
constructor(options: RegistryOptions);
|
|
75
|
+
/** Observers see events after they are persisted, in order. */
|
|
76
|
+
listen(listener: RunListener): () => void;
|
|
77
|
+
private deliver;
|
|
78
|
+
/** Starts tracking a run whose record is already saved. */
|
|
79
|
+
start(sessionId: string, runId?: string): ActiveRun;
|
|
80
|
+
private hasStoppedAncestor;
|
|
81
|
+
/** Wait for a recorded run to settle without polling storage or retaining an event listener. */
|
|
82
|
+
wait(runId: string, signal?: AbortSignal): Promise<void>;
|
|
83
|
+
/** The live run with this id, for a tool or broker that reports into it. */
|
|
84
|
+
active(runId: string): ActiveRun | null;
|
|
85
|
+
/** The live run of a session, when it has one. */
|
|
86
|
+
activeForSession(sessionId: string): ActiveRun | null;
|
|
87
|
+
/** Hands a message to a live run's model after its current step. Throws `run_not_active` when the run cannot take it. */
|
|
88
|
+
steer(runId: string, text: string): Promise<void>;
|
|
89
|
+
interrupt(runId: string): Promise<void>;
|
|
90
|
+
/** Interrupts every live run, giving each a moment to stop cleanly. */
|
|
91
|
+
interruptAll(timeoutMs?: number): Promise<void>;
|
|
92
|
+
resolveApproval(runId: string, approvalId: string, decision: ApprovalDecision): void;
|
|
93
|
+
answerQuestion(runId: string, questionId: string, answer: QuestionAnswer): void;
|
|
94
|
+
answerQuestions(runId: string, batchId: string, answers: Array<{
|
|
95
|
+
questionId: string;
|
|
96
|
+
answer: QuestionAnswer;
|
|
97
|
+
}>): void;
|
|
98
|
+
private validateAnswer;
|
|
99
|
+
activeRunIds(): string[];
|
|
100
|
+
/** A request the session's own interface already settled: nothing here is waiting on it any more. */
|
|
101
|
+
nativeResolved(runId: string, requestId: string): void;
|
|
102
|
+
}
|