open-multi-agent-kit 0.78.7 → 0.79.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4258 -391
- package/README.md +541 -267
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +10 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +13 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +32 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +56 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +392 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +82 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +17 -16
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +132 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +529 -0
- package/dist/config.js.map +1 -0
- package/dist/core/adaptive-runtime.d.ts +150 -0
- package/dist/core/adaptive-runtime.d.ts.map +1 -0
- package/dist/core/adaptive-runtime.js +378 -0
- package/dist/core/adaptive-runtime.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +117 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +300 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +87 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +119 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +604 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2535 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +141 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +445 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +90 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +249 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +132 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +635 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +38 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +153 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +226 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1864 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +6 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +24 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +494 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +161 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +842 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1181 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +45 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +54 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +338 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +21 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +48 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +353 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +295 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +123 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +150 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +789 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +110 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +495 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/omk-control.d.ts +62 -0
- package/dist/core/omk-control.d.ts.map +1 -0
- package/dist/core/omk-control.js +190 -0
- package/dist/core/omk-control.js.map +1 -0
- package/dist/core/omk-subagent.d.ts +17 -0
- package/dist/core/omk-subagent.d.ts.map +1 -0
- package/dist/core/omk-subagent.js +704 -0
- package/dist/core/omk-subagent.js.map +1 -0
- package/dist/core/output-guard.d.ts +7 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +89 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +206 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +2056 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +52 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +238 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-attribution.d.ts +4 -0
- package/dist/core/provider-attribution.d.ts.map +1 -0
- package/dist/core/provider-attribution.js +78 -0
- package/dist/core/provider-attribution.js.map +1 -0
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +35 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +31 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +249 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +194 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +740 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/runtime-defaults.d.ts +14 -0
- package/dist/core/runtime-defaults.d.ts.map +1 -0
- package/dist/core/runtime-defaults.js +15 -0
- package/dist/core/runtime-defaults.js.map +1 -0
- package/dist/core/sdk.d.ts +109 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +270 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +332 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1218 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +273 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +839 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +387 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +26 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +98 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +120 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +10 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/timings.d.ts +4 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +32 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +68 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +337 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +87 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +345 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +51 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +284 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +52 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +297 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +37 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +304 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +40 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +112 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +37 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +167 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +184 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +99 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +289 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +65 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +34 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +215 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +26 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +197 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +12 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +673 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +35 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +401 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +9 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/cockpit-scroll.d.ts +54 -0
- package/dist/modes/interactive/cockpit-scroll.d.ts.map +1 -0
- package/dist/modes/interactive/cockpit-scroll.js +133 -0
- package/dist/modes/interactive/cockpit-scroll.js.map +1 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +333 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +20 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +121 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +175 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +54 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +506 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +70 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +79 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +42 -0
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +119 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +61 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +83 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +35 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +223 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +36 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +37 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +51 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +174 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +69 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +411 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/omk-brand-surface.d.ts +58 -0
- package/dist/modes/interactive/components/omk-brand-surface.d.ts.map +1 -0
- package/dist/modes/interactive/components/omk-brand-surface.js +330 -0
- package/dist/modes/interactive/components/omk-brand-surface.js.map +1 -0
- package/dist/modes/interactive/components/omk-brand.d.ts +10 -0
- package/dist/modes/interactive/components/omk-brand.d.ts.map +1 -0
- package/dist/modes/interactive/components/omk-brand.js +12 -0
- package/dist/modes/interactive/components/omk-brand.js.map +1 -0
- package/dist/modes/interactive/components/omk-control-dashboard.d.ts +36 -0
- package/dist/modes/interactive/components/omk-control-dashboard.d.ts.map +1 -0
- package/dist/modes/interactive/components/omk-control-dashboard.js +348 -0
- package/dist/modes/interactive/components/omk-control-dashboard.js.map +1 -0
- package/dist/modes/interactive/components/omk-control-layout.d.ts +34 -0
- package/dist/modes/interactive/components/omk-control-layout.d.ts.map +1 -0
- package/dist/modes/interactive/components/omk-control-layout.js +85 -0
- package/dist/modes/interactive/components/omk-control-layout.js.map +1 -0
- package/dist/modes/interactive/components/omk-history-panel.d.ts +27 -0
- package/dist/modes/interactive/components/omk-history-panel.d.ts.map +1 -0
- package/dist/modes/interactive/components/omk-history-panel.js +162 -0
- package/dist/modes/interactive/components/omk-history-panel.js.map +1 -0
- package/dist/modes/interactive/components/omk-neon-hud.d.ts +19 -0
- package/dist/modes/interactive/components/omk-neon-hud.d.ts.map +1 -0
- package/dist/modes/interactive/components/omk-neon-hud.js +75 -0
- package/dist/modes/interactive/components/omk-neon-hud.js.map +1 -0
- package/dist/modes/interactive/components/omk-tabbed-panel.d.ts +30 -0
- package/dist/modes/interactive/components/omk-tabbed-panel.d.ts.map +1 -0
- package/dist/modes/interactive/components/omk-tabbed-panel.js +99 -0
- package/dist/modes/interactive/components/omk-tabbed-panel.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +290 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/scrollable-transcript.d.ts +20 -0
- package/dist/modes/interactive/components/scrollable-transcript.d.ts.map +1 -0
- package/dist/modes/interactive/components/scrollable-transcript.js +25 -0
- package/dist/modes/interactive/components/scrollable-transcript.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +96 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +861 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +69 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +391 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +52 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +63 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +317 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1093 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +10 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +29 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +422 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +5388 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +87 -0
- package/dist/modes/interactive/theme/light.json +86 -0
- package/dist/modes/interactive/theme/omk-control.json +92 -0
- package/dist/modes/interactive/theme/omk-rust.json +94 -0
- package/dist/modes/interactive/theme/theme-schema.json +340 -0
- package/dist/modes/interactive/theme/theme.d.ts +102 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +1093 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +132 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +227 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +467 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +616 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +420 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/omk-env.d.ts +2 -0
- package/dist/omk-env.d.ts.map +1 -0
- package/dist/omk-env.js +3 -0
- package/dist/omk-env.js.map +1 -0
- package/dist/omk.d.ts +4 -0
- package/dist/omk.d.ts.map +1 -0
- package/dist/omk.js +4 -0
- package/dist/omk.js.map +1 -0
- package/dist/package-manager-cli.d.ts +4 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +528 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/package.json +97 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +52 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +21 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +87 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +15 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +88 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +249 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +10 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +20 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +117 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +195 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +39 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +124 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +16 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +97 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +7 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +69 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/dist/utils/paths.d.ts +31 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +92 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/utils/pi-user-agent.d.ts.map +1 -0
- package/dist/utils/pi-user-agent.js +6 -0
- package/dist/utils/pi-user-agent.js.map +1 -0
- package/dist/utils/shell.d.ts +30 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +195 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +118 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +325 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +15 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +85 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +394 -0
- package/docs/containerization.md +111 -0
- package/docs/custom-provider.md +736 -0
- package/docs/development.md +71 -0
- package/docs/docs.json +152 -0
- package/docs/extensions.md +2627 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +81 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +493 -0
- package/docs/packages.md +226 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +256 -0
- package/docs/quickstart.md +165 -0
- package/docs/rpc.md +1408 -0
- package/docs/sdk.md +1137 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +145 -0
- package/docs/settings.md +281 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +231 -0
- package/docs/terminal-setup.md +114 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +297 -0
- package/docs/tmux.md +61 -0
- package/docs/tui.md +927 -0
- package/docs/usage.md +288 -0
- package/docs/windows.md +17 -0
- package/examples/README.md +25 -0
- package/examples/extensions/README.md +210 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +127 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +400 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/git-merge-and-resolve.ts +115 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/gondolin/index.ts +531 -0
- package/examples/extensions/gondolin/package-lock.json +185 -0
- package/examples/extensions/gondolin/package.json +19 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform-streaming.ts +39 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1450 -0
- package/examples/extensions/overlay-test.ts +153 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +430 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +122 -0
- package/examples/extensions/question.ts +264 -0
- package/examples/extensions/questionnaire.ts +427 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +321 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +175 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +1009 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +206 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +146 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +26 -0
- package/examples/sdk/02-custom-model.ts +53 -0
- package/examples/sdk/03-custom-prompt.ts +75 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +48 -0
- package/examples/sdk/06-extensions.ts +99 -0
- package/examples/sdk/07-context-files.ts +47 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +52 -0
- package/examples/sdk/12-full-control.ts +77 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +144 -0
- package/npm-shrinkwrap.json +512 -0
- package/package.json +97 -191
- package/AGENTS.md +0 -550
- package/CLAUDE.md +0 -8
- package/DESIGN.md +0 -334
- package/GEMINI.md +0 -8
- package/LICENSE +0 -21
- package/MATURITY.md +0 -81
- package/ROADMAP.md +0 -138
- package/SECURITY.md +0 -83
- package/WORKER_MANIFEST.md +0 -35
- package/dist/adapters/commandcode/commandcode-cli-adapter.d.ts +0 -10
- package/dist/adapters/commandcode/commandcode-cli-adapter.js +0 -57
- package/dist/adapters/kimi/ascii-art.d.ts +0 -1
- package/dist/adapters/kimi/ascii-art.js +0 -23
- package/dist/adapters/kimi/banner.d.ts +0 -53
- package/dist/adapters/kimi/banner.js +0 -284
- package/dist/adapters/kimi/bug-filter.d.ts +0 -15
- package/dist/adapters/kimi/bug-filter.js +0 -150
- package/dist/adapters/kimi/capability.d.ts +0 -25
- package/dist/adapters/kimi/capability.js +0 -68
- package/dist/adapters/kimi/continue-prompt-guard.d.ts +0 -20
- package/dist/adapters/kimi/continue-prompt-guard.js +0 -70
- package/dist/adapters/kimi/isolated-home.d.ts +0 -21
- package/dist/adapters/kimi/isolated-home.js +0 -270
- package/dist/adapters/kimi/runner.d.ts +0 -71
- package/dist/adapters/kimi/runner.js +0 -1084
- package/dist/adapters/kimi/simple-art.d.ts +0 -1
- package/dist/adapters/kimi/simple-art.js +0 -1
- package/dist/adapters/kimi/statusline.d.ts +0 -26
- package/dist/adapters/kimi/statusline.js +0 -142
- package/dist/adapters/kimi/usage.d.ts +0 -52
- package/dist/adapters/kimi/usage.js +0 -481
- package/dist/adapters/kimi/wire-client.d.ts +0 -142
- package/dist/adapters/kimi/wire-client.js +0 -725
- package/dist/adapters/kimi/wire-protocol-types.d.ts +0 -549
- package/dist/adapters/kimi/wire-protocol-types.js +0 -59
- package/dist/adapters/opencode/opencode-cli-adapter.d.ts +0 -9
- package/dist/adapters/opencode/opencode-cli-adapter.js +0 -43
- package/dist/awareness/classifiers/browser-console-classifier.d.ts +0 -3
- package/dist/awareness/classifiers/browser-console-classifier.js +0 -47
- package/dist/awareness/classifiers/evidence-gap-classifier.d.ts +0 -3
- package/dist/awareness/classifiers/evidence-gap-classifier.js +0 -31
- package/dist/awareness/classifiers/stalled-run-classifier.d.ts +0 -2
- package/dist/awareness/classifiers/stalled-run-classifier.js +0 -24
- package/dist/awareness/notice-store.d.ts +0 -6
- package/dist/awareness/notice-store.js +0 -91
- package/dist/awareness/notice.d.ts +0 -17
- package/dist/awareness/notice.js +0 -1
- package/dist/awareness/noticer-engine.d.ts +0 -42
- package/dist/awareness/noticer-engine.js +0 -63
- package/dist/awareness/router.d.ts +0 -6
- package/dist/awareness/router.js +0 -46
- package/dist/benchmark/contracts.d.ts +0 -116
- package/dist/benchmark/contracts.js +0 -6
- package/dist/benchmark/fixtures.d.ts +0 -11
- package/dist/benchmark/fixtures.js +0 -124
- package/dist/benchmark/harness.d.ts +0 -13
- package/dist/benchmark/harness.js +0 -191
- package/dist/benchmark/shadow-mode.d.ts +0 -17
- package/dist/benchmark/shadow-mode.js +0 -95
- package/dist/brand/matrix-rain.d.ts +0 -15
- package/dist/brand/matrix-rain.js +0 -132
- package/dist/brand/night-city.theme.json +0 -80
- package/dist/brand/omk-matrix-art.d.ts +0 -1
- package/dist/brand/omk-matrix-art.js +0 -10
- package/dist/brand/omk-simple-art.d.ts +0 -7
- package/dist/brand/omk-simple-art.js +0 -13
- package/dist/brand/palette.d.ts +0 -90
- package/dist/brand/palette.js +0 -129
- package/dist/brand/rust-forge.theme.json +0 -216
- package/dist/brand/theme-compiled.d.ts +0 -61
- package/dist/brand/theme-compiled.js +0 -241
- package/dist/brand/theme.d.ts +0 -41
- package/dist/brand/theme.js +0 -275
- package/dist/browser/browser-feedback.d.ts +0 -10
- package/dist/browser/browser-feedback.js +0 -84
- package/dist/browser/browser-observer.d.ts +0 -21
- package/dist/browser/browser-observer.js +0 -159
- package/dist/browser/browser-session.d.ts +0 -26
- package/dist/browser/browser-session.js +0 -63
- package/dist/cli/command-registry.d.ts +0 -2
- package/dist/cli/command-registry.js +0 -20
- package/dist/cli/input/argv-parser.d.ts +0 -16
- package/dist/cli/input/argv-parser.js +0 -50
- package/dist/cli/input/command-envelope.d.ts +0 -16
- package/dist/cli/input/command-envelope.js +0 -64
- package/dist/cli/input/config-loader.d.ts +0 -16
- package/dist/cli/input/config-loader.js +0 -48
- package/dist/cli/input/index.d.ts +0 -8
- package/dist/cli/input/index.js +0 -8
- package/dist/cli/input/input-resolver.d.ts +0 -13
- package/dist/cli/input/input-resolver.js +0 -50
- package/dist/cli/input/validator.d.ts +0 -10
- package/dist/cli/input/validator.js +0 -37
- package/dist/cli/main.d.ts +0 -4
- package/dist/cli/main.js +0 -34
- package/dist/cli/output/error-renderer.d.ts +0 -10
- package/dist/cli/output/error-renderer.js +0 -68
- package/dist/cli/output/hash.d.ts +0 -1
- package/dist/cli/output/hash.js +0 -10
- package/dist/cli/output/index.d.ts +0 -9
- package/dist/cli/output/index.js +0 -9
- package/dist/cli/output/json-renderer.d.ts +0 -7
- package/dist/cli/output/json-renderer.js +0 -35
- package/dist/cli/output/markdown-renderer.d.ts +0 -5
- package/dist/cli/output/markdown-renderer.js +0 -86
- package/dist/cli/output/nlp-renderer.d.ts +0 -7
- package/dist/cli/output/nlp-renderer.js +0 -96
- package/dist/cli/output/output-router.d.ts +0 -5
- package/dist/cli/output/output-router.js +0 -33
- package/dist/cli/register-awareness-commands.d.ts +0 -2
- package/dist/cli/register-awareness-commands.js +0 -133
- package/dist/cli/register-basic-commands.d.ts +0 -2
- package/dist/cli/register-basic-commands.js +0 -488
- package/dist/cli/register-integration-commands.d.ts +0 -2
- package/dist/cli/register-integration-commands.js +0 -59
- package/dist/cli/register-mcp-dag-cron-screenshot-commands.d.ts +0 -2
- package/dist/cli/register-mcp-dag-cron-screenshot-commands.js +0 -275
- package/dist/cli/register-openai-codex-commands.d.ts +0 -2
- package/dist/cli/register-openai-codex-commands.js +0 -55
- package/dist/cli/register-provider-commands.d.ts +0 -2
- package/dist/cli/register-provider-commands.js +0 -244
- package/dist/cli/register-spec-agent-goal-commands.d.ts +0 -2
- package/dist/cli/register-spec-agent-goal-commands.js +0 -486
- package/dist/cli/register-tool-commands.d.ts +0 -2
- package/dist/cli/register-tool-commands.js +0 -202
- package/dist/cli/register-workflow-commands.d.ts +0 -2
- package/dist/cli/register-workflow-commands.js +0 -158
- package/dist/cli/registry/core.d.ts +0 -2
- package/dist/cli/registry/core.js +0 -27
- package/dist/cli/registry/session.d.ts +0 -2
- package/dist/cli/registry/session.js +0 -137
- package/dist/cli/registry/system.d.ts +0 -2
- package/dist/cli/registry/system.js +0 -95
- package/dist/cli/registry/tooling.d.ts +0 -2
- package/dist/cli/registry/tooling.js +0 -112
- package/dist/cli/registry/visual.d.ts +0 -2
- package/dist/cli/registry/visual.js +0 -91
- package/dist/cli/release-promotion-gate.d.ts +0 -21
- package/dist/cli/release-promotion-gate.js +0 -93
- package/dist/cli/root.d.ts +0 -11
- package/dist/cli/root.js +0 -119
- package/dist/cli/runtime/capability-selector.d.ts +0 -18
- package/dist/cli/runtime/capability-selector.js +0 -208
- package/dist/cli/runtime/cli-runtime.d.ts +0 -10
- package/dist/cli/runtime/cli-runtime.js +0 -35
- package/dist/cli/runtime/cli-writer.d.ts +0 -18
- package/dist/cli/runtime/cli-writer.js +0 -87
- package/dist/cli/runtime/command-bus.d.ts +0 -45
- package/dist/cli/runtime/command-bus.js +0 -132
- package/dist/cli/runtime/event-bus.d.ts +0 -12
- package/dist/cli/runtime/event-bus.js +0 -31
- package/dist/cli/runtime/generic-provider-adapter.d.ts +0 -24
- package/dist/cli/runtime/generic-provider-adapter.js +0 -38
- package/dist/cli/runtime/index.d.ts +0 -17
- package/dist/cli/runtime/index.js +0 -18
- package/dist/cli/runtime/intent-classifier.d.ts +0 -16
- package/dist/cli/runtime/intent-classifier.js +0 -113
- package/dist/cli/runtime/plan-controller.d.ts +0 -7
- package/dist/cli/runtime/plan-controller.js +0 -29
- package/dist/cli/runtime/provider-adapter-registry.d.ts +0 -32
- package/dist/cli/runtime/provider-adapter-registry.js +0 -60
- package/dist/cli/runtime/provider-event-normalizer.d.ts +0 -19
- package/dist/cli/runtime/provider-event-normalizer.js +0 -150
- package/dist/cli/runtime/run-controller.d.ts +0 -7
- package/dist/cli/runtime/run-controller.js +0 -30
- package/dist/cli/runtime/runtime-sidecar.d.ts +0 -17
- package/dist/cli/runtime/runtime-sidecar.js +0 -138
- package/dist/cli/runtime/task-controller.d.ts +0 -7
- package/dist/cli/runtime/task-controller.js +0 -29
- package/dist/cli/runtime/types.d.ts +0 -312
- package/dist/cli/runtime/types.js +0 -6
- package/dist/cli/theme/index.d.ts +0 -18
- package/dist/cli/theme/index.js +0 -11
- package/dist/cli/theme/oklab-quantize.d.ts +0 -29
- package/dist/cli/theme/oklab-quantize.js +0 -105
- package/dist/cli/theme/render-table.d.ts +0 -59
- package/dist/cli/theme/render-table.js +0 -112
- package/dist/cli/theme/status-frame.d.ts +0 -10
- package/dist/cli/theme/status-frame.js +0 -22
- package/dist/cli/theme/terminal-capability.d.ts +0 -23
- package/dist/cli/theme/terminal-capability.js +0 -104
- package/dist/cli/theme/theme-doc.d.ts +0 -22
- package/dist/cli/theme/theme-doc.js +0 -97
- package/dist/cli/theme/theme-registry.d.ts +0 -25
- package/dist/cli/theme/theme-registry.js +0 -357
- package/dist/cli/theme/theme-resolver.d.ts +0 -12
- package/dist/cli/theme/theme-resolver.js +0 -38
- package/dist/cli/theme/tier-explain.d.ts +0 -21
- package/dist/cli/theme/tier-explain.js +0 -60
- package/dist/cli/ui/event.d.ts +0 -65
- package/dist/cli/ui/event.js +0 -1
- package/dist/cli/ui/green-rain-renderer.d.ts +0 -17
- package/dist/cli/ui/green-rain-renderer.js +0 -97
- package/dist/cli/ui/neon-grid-renderer.d.ts +0 -17
- package/dist/cli/ui/neon-grid-renderer.js +0 -100
- package/dist/cli/ui/plain-renderer.d.ts +0 -37
- package/dist/cli/ui/plain-renderer.js +0 -160
- package/dist/cli/ui/renderer.d.ts +0 -7
- package/dist/cli/ui/renderer.js +0 -1
- package/dist/cli/ui/rich-renderer.d.ts +0 -32
- package/dist/cli/ui/rich-renderer.js +0 -234
- package/dist/cli/ui/route-blocked-panel.d.ts +0 -5
- package/dist/cli/ui/route-blocked-panel.js +0 -67
- package/dist/cli/ui/rust-forge-renderer.d.ts +0 -19
- package/dist/cli/ui/rust-forge-renderer.js +0 -143
- package/dist/cli/ui/system24-renderer.d.ts +0 -96
- package/dist/cli/ui/system24-renderer.js +0 -531
- package/dist/cli/v2/chat-repl.d.ts +0 -37
- package/dist/cli/v2/chat-repl.js +0 -282
- package/dist/cli/v2/cli-v2-skeleton.d.ts +0 -105
- package/dist/cli/v2/cli-v2-skeleton.js +0 -462
- package/dist/cli/v2/interactive-prompt.d.ts +0 -52
- package/dist/cli/v2/interactive-prompt.js +0 -191
- package/dist/cli/v2/persistent-memory.d.ts +0 -70
- package/dist/cli/v2/persistent-memory.js +0 -229
- package/dist/cli/v2/provider-commands.d.ts +0 -120
- package/dist/cli/v2/provider-commands.js +0 -244
- package/dist/cli/v2/release-commands.d.ts +0 -29
- package/dist/cli/v2/release-commands.js +0 -95
- package/dist/cli/v2/workflow-commands.d.ts +0 -72
- package/dist/cli/v2/workflow-commands.js +0 -198
- package/dist/cockpit/git-numstat.d.ts +0 -10
- package/dist/cockpit/git-numstat.js +0 -97
- package/dist/cockpit/lsp-status.d.ts +0 -5
- package/dist/cockpit/lsp-status.js +0 -51
- package/dist/cockpit/types.d.ts +0 -66
- package/dist/cockpit/types.js +0 -4
- package/dist/cockpit/views/rail-view.d.ts +0 -9
- package/dist/cockpit/views/rail-view.js +0 -160
- package/dist/commands/agent.d.ts +0 -6
- package/dist/commands/agent.js +0 -263
- package/dist/commands/appshot.d.ts +0 -15
- package/dist/commands/appshot.js +0 -122
- package/dist/commands/auth.d.ts +0 -43
- package/dist/commands/auth.js +0 -167
- package/dist/commands/browser.d.ts +0 -18
- package/dist/commands/browser.js +0 -110
- package/dist/commands/chat/chat-turn-dag.d.ts +0 -21
- package/dist/commands/chat/chat-turn-dag.js +0 -72
- package/dist/commands/chat/core.d.ts +0 -27
- package/dist/commands/chat/core.js +0 -423
- package/dist/commands/chat/index.d.ts +0 -5
- package/dist/commands/chat/index.js +0 -5
- package/dist/commands/chat/native-root-loop.d.ts +0 -57
- package/dist/commands/chat/native-root-loop.js +0 -1114
- package/dist/commands/chat/runtime.d.ts +0 -46
- package/dist/commands/chat/runtime.js +0 -397
- package/dist/commands/chat/slash/commands/control.d.ts +0 -2
- package/dist/commands/chat/slash/commands/control.js +0 -196
- package/dist/commands/chat/slash/commands/diagnostics.d.ts +0 -2
- package/dist/commands/chat/slash/commands/diagnostics.js +0 -64
- package/dist/commands/chat/slash/commands/harness.d.ts +0 -2
- package/dist/commands/chat/slash/commands/harness.js +0 -21
- package/dist/commands/chat/slash/commands/index.d.ts +0 -2
- package/dist/commands/chat/slash/commands/index.js +0 -18
- package/dist/commands/chat/slash/commands/routing.d.ts +0 -2
- package/dist/commands/chat/slash/commands/routing.js +0 -355
- package/dist/commands/chat/slash/commands/session.d.ts +0 -2
- package/dist/commands/chat/slash/commands/session.js +0 -104
- package/dist/commands/chat/slash/commands/tool-plane.d.ts +0 -2
- package/dist/commands/chat/slash/commands/tool-plane.js +0 -64
- package/dist/commands/chat/slash/commands/ui.d.ts +0 -2
- package/dist/commands/chat/slash/commands/ui.js +0 -108
- package/dist/commands/chat/slash/context.d.ts +0 -3
- package/dist/commands/chat/slash/context.js +0 -9
- package/dist/commands/chat/slash/format.d.ts +0 -3
- package/dist/commands/chat/slash/format.js +0 -19
- package/dist/commands/chat/slash/parser.d.ts +0 -15
- package/dist/commands/chat/slash/parser.js +0 -97
- package/dist/commands/chat/slash/registry.d.ts +0 -13
- package/dist/commands/chat/slash/registry.js +0 -38
- package/dist/commands/chat/slash/result.d.ts +0 -7
- package/dist/commands/chat/slash/result.js +0 -35
- package/dist/commands/chat/slash/types.d.ts +0 -32
- package/dist/commands/chat/slash/types.js +0 -1
- package/dist/commands/chat/startup.d.ts +0 -68
- package/dist/commands/chat/startup.js +0 -150
- package/dist/commands/chat/state.d.ts +0 -3
- package/dist/commands/chat/state.js +0 -100
- package/dist/commands/chat/utils.d.ts +0 -25
- package/dist/commands/chat/utils.js +0 -216
- package/dist/commands/chat.d.ts +0 -2
- package/dist/commands/chat.js +0 -2
- package/dist/commands/cockpit/core.d.ts +0 -5
- package/dist/commands/cockpit/core.js +0 -91
- package/dist/commands/cockpit/render.d.ts +0 -5
- package/dist/commands/cockpit/render.js +0 -969
- package/dist/commands/cockpit/scroll.d.ts +0 -39
- package/dist/commands/cockpit/scroll.js +0 -87
- package/dist/commands/cockpit/telemetry.d.ts +0 -30
- package/dist/commands/cockpit/telemetry.js +0 -361
- package/dist/commands/cockpit/update-loop.d.ts +0 -54
- package/dist/commands/cockpit/update-loop.js +0 -285
- package/dist/commands/cockpit/utils.d.ts +0 -233
- package/dist/commands/cockpit/utils.js +0 -388
- package/dist/commands/cockpit.d.ts +0 -8
- package/dist/commands/cockpit.js +0 -7
- package/dist/commands/codex.d.ts +0 -70
- package/dist/commands/codex.js +0 -597
- package/dist/commands/consent.d.ts +0 -24
- package/dist/commands/consent.js +0 -255
- package/dist/commands/cron.d.ts +0 -16
- package/dist/commands/cron.js +0 -187
- package/dist/commands/dag-from-spec.d.ts +0 -31
- package/dist/commands/dag-from-spec.js +0 -344
- package/dist/commands/dag.d.ts +0 -10
- package/dist/commands/dag.js +0 -467
- package/dist/commands/design.d.ts +0 -73
- package/dist/commands/design.js +0 -1253
- package/dist/commands/diff-runs.d.ts +0 -3
- package/dist/commands/diff-runs.js +0 -36
- package/dist/commands/do.d.ts +0 -29
- package/dist/commands/do.js +0 -196
- package/dist/commands/doctor/checks.d.ts +0 -19
- package/dist/commands/doctor/checks.js +0 -861
- package/dist/commands/doctor/core.d.ts +0 -2
- package/dist/commands/doctor/core.js +0 -53
- package/dist/commands/doctor/fix-plan.d.ts +0 -69
- package/dist/commands/doctor/fix-plan.js +0 -78
- package/dist/commands/doctor/fix.d.ts +0 -5
- package/dist/commands/doctor/fix.js +0 -1002
- package/dist/commands/doctor/report.d.ts +0 -7
- package/dist/commands/doctor/report.js +0 -140
- package/dist/commands/doctor/utils.d.ts +0 -52
- package/dist/commands/doctor/utils.js +0 -124
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.js +0 -1
- package/dist/commands/goal-interview.d.ts +0 -18
- package/dist/commands/goal-interview.js +0 -396
- package/dist/commands/goal.d.ts +0 -46
- package/dist/commands/goal.js +0 -492
- package/dist/commands/google.d.ts +0 -1
- package/dist/commands/google.js +0 -27
- package/dist/commands/graph.d.ts +0 -71
- package/dist/commands/graph.js +0 -208
- package/dist/commands/hud.d.ts +0 -57
- package/dist/commands/hud.js +0 -1031
- package/dist/commands/image.d.ts +0 -16
- package/dist/commands/image.js +0 -102
- package/dist/commands/init/config.d.ts +0 -8
- package/dist/commands/init/config.js +0 -97
- package/dist/commands/init/constants.d.ts +0 -7
- package/dist/commands/init/constants.js +0 -49
- package/dist/commands/init/content.d.ts +0 -12
- package/dist/commands/init/content.js +0 -1775
- package/dist/commands/init/core.d.ts +0 -2
- package/dist/commands/init/core.js +0 -298
- package/dist/commands/init/interactive.d.ts +0 -9
- package/dist/commands/init/interactive.js +0 -170
- package/dist/commands/init/scaffold.d.ts +0 -17
- package/dist/commands/init/scaffold.js +0 -146
- package/dist/commands/init/types.d.ts +0 -35
- package/dist/commands/init/types.js +0 -1
- package/dist/commands/init/utils.d.ts +0 -13
- package/dist/commands/init/utils.js +0 -107
- package/dist/commands/init.d.ts +0 -32
- package/dist/commands/init.js +0 -2581
- package/dist/commands/inspect.d.ts +0 -9
- package/dist/commands/inspect.js +0 -12
- package/dist/commands/lsp.d.ts +0 -8
- package/dist/commands/lsp.js +0 -60
- package/dist/commands/mcp/config.d.ts +0 -32
- package/dist/commands/mcp/config.js +0 -264
- package/dist/commands/mcp/doctor-fix.d.ts +0 -12
- package/dist/commands/mcp/doctor-fix.js +0 -261
- package/dist/commands/mcp/doctor.d.ts +0 -55
- package/dist/commands/mcp/doctor.js +0 -401
- package/dist/commands/mcp/list.d.ts +0 -1
- package/dist/commands/mcp/list.js +0 -56
- package/dist/commands/mcp/shared.d.ts +0 -47
- package/dist/commands/mcp/shared.js +0 -192
- package/dist/commands/mcp/test.d.ts +0 -5
- package/dist/commands/mcp/test.js +0 -457
- package/dist/commands/mcp.d.ts +0 -8
- package/dist/commands/mcp.js +0 -5
- package/dist/commands/menu.d.ts +0 -4
- package/dist/commands/menu.js +0 -213
- package/dist/commands/merge.d.ts +0 -9
- package/dist/commands/merge.js +0 -363
- package/dist/commands/mode.d.ts +0 -3
- package/dist/commands/mode.js +0 -60
- package/dist/commands/model.d.ts +0 -15
- package/dist/commands/model.js +0 -215
- package/dist/commands/notice.d.ts +0 -7
- package/dist/commands/notice.js +0 -76
- package/dist/commands/open-design-agent.d.ts +0 -46
- package/dist/commands/open-design-agent.js +0 -569
- package/dist/commands/orchestrate.d.ts +0 -18
- package/dist/commands/orchestrate.js +0 -284
- package/dist/commands/parallel/core.d.ts +0 -34
- package/dist/commands/parallel/core.js +0 -296
- package/dist/commands/parallel/index.d.ts +0 -5
- package/dist/commands/parallel/index.js +0 -5
- package/dist/commands/parallel/interactive.d.ts +0 -27
- package/dist/commands/parallel/interactive.js +0 -172
- package/dist/commands/parallel/orchestrator.d.ts +0 -40
- package/dist/commands/parallel/orchestrator.js +0 -564
- package/dist/commands/parallel/utils.d.ts +0 -12
- package/dist/commands/parallel/utils.js +0 -114
- package/dist/commands/parallel/worker.d.ts +0 -43
- package/dist/commands/parallel/worker.js +0 -276
- package/dist/commands/parallel.d.ts +0 -4
- package/dist/commands/parallel.js +0 -3
- package/dist/commands/plan.d.ts +0 -6
- package/dist/commands/plan.js +0 -113
- package/dist/commands/project-index.d.ts +0 -18
- package/dist/commands/project-index.js +0 -312
- package/dist/commands/provider.d.ts +0 -65
- package/dist/commands/provider.js +0 -621
- package/dist/commands/rail.d.ts +0 -6
- package/dist/commands/rail.js +0 -7
- package/dist/commands/replay.d.ts +0 -7
- package/dist/commands/replay.js +0 -10
- package/dist/commands/research.d.ts +0 -5
- package/dist/commands/research.js +0 -48
- package/dist/commands/run.d.ts +0 -15
- package/dist/commands/run.js +0 -312
- package/dist/commands/runs.d.ts +0 -36
- package/dist/commands/runs.js +0 -504
- package/dist/commands/screenshot.d.ts +0 -10
- package/dist/commands/screenshot.js +0 -72
- package/dist/commands/skill.d.ts +0 -28
- package/dist/commands/skill.js +0 -382
- package/dist/commands/snip.d.ts +0 -8
- package/dist/commands/snip.js +0 -77
- package/dist/commands/spec.d.ts +0 -17
- package/dist/commands/spec.js +0 -262
- package/dist/commands/specify.d.ts +0 -18
- package/dist/commands/specify.js +0 -111
- package/dist/commands/star.d.ts +0 -3
- package/dist/commands/star.js +0 -35
- package/dist/commands/summary.d.ts +0 -5
- package/dist/commands/summary.js +0 -445
- package/dist/commands/sync.d.ts +0 -6
- package/dist/commands/sync.js +0 -129
- package/dist/commands/team.d.ts +0 -8
- package/dist/commands/team.js +0 -302
- package/dist/commands/verify.d.ts +0 -4
- package/dist/commands/verify.js +0 -320
- package/dist/commands/version.d.ts +0 -6
- package/dist/commands/version.js +0 -83
- package/dist/commands/web-bridge.d.ts +0 -12
- package/dist/commands/web-bridge.js +0 -75
- package/dist/commands/why.d.ts +0 -14
- package/dist/commands/why.js +0 -46
- package/dist/commands/workflow.d.ts +0 -13
- package/dist/commands/workflow.js +0 -385
- package/dist/contracts/dag.d.ts +0 -134
- package/dist/contracts/dag.js +0 -4
- package/dist/contracts/decision.d.ts +0 -23
- package/dist/contracts/decision.js +0 -1
- package/dist/contracts/envelope.d.ts +0 -29
- package/dist/contracts/envelope.js +0 -1
- package/dist/contracts/errors.d.ts +0 -13
- package/dist/contracts/errors.js +0 -15
- package/dist/contracts/evidence.d.ts +0 -23
- package/dist/contracts/evidence.js +0 -1
- package/dist/contracts/goal.d.ts +0 -169
- package/dist/contracts/goal.js +0 -4
- package/dist/contracts/hud.d.ts +0 -17
- package/dist/contracts/hud.js +0 -4
- package/dist/contracts/index.d.ts +0 -8
- package/dist/contracts/index.js +0 -8
- package/dist/contracts/interview.d.ts +0 -106
- package/dist/contracts/interview.js +0 -9
- package/dist/contracts/orchestration.d.ts +0 -215
- package/dist/contracts/orchestration.js +0 -4
- package/dist/contracts/proof.d.ts +0 -32
- package/dist/contracts/proof.js +0 -1
- package/dist/contracts/provider-health.d.ts +0 -79
- package/dist/contracts/provider-health.js +0 -57
- package/dist/contracts/provider.d.ts +0 -35
- package/dist/contracts/provider.js +0 -1
- package/dist/contracts/replay.d.ts +0 -95
- package/dist/contracts/replay.js +0 -7
- package/dist/contracts/run.d.ts +0 -34
- package/dist/contracts/run.js +0 -1
- package/dist/contracts/safety.d.ts +0 -10
- package/dist/contracts/safety.js +0 -4
- package/dist/contracts/version.d.ts +0 -21
- package/dist/contracts/version.js +0 -1
- package/dist/contracts/web-bridge.d.ts +0 -95
- package/dist/contracts/web-bridge.js +0 -168
- package/dist/contracts/worker-context.d.ts +0 -70
- package/dist/contracts/worker-context.js +0 -1
- package/dist/evidence/attempt-record.d.ts +0 -78
- package/dist/evidence/attempt-record.js +0 -16
- package/dist/evidence/context-snapshot.d.ts +0 -20
- package/dist/evidence/context-snapshot.js +0 -81
- package/dist/evidence/decision-trace.d.ts +0 -14
- package/dist/evidence/decision-trace.js +0 -54
- package/dist/evidence/diagnosis.d.ts +0 -15
- package/dist/evidence/diagnosis.js +0 -279
- package/dist/evidence/evidence-recorder.d.ts +0 -19
- package/dist/evidence/evidence-recorder.js +0 -55
- package/dist/evidence/evidence-trust-score.d.ts +0 -101
- package/dist/evidence/evidence-trust-score.js +0 -408
- package/dist/evidence/index.d.ts +0 -21
- package/dist/evidence/index.js +0 -10
- package/dist/evidence/proof-trust-cli.d.ts +0 -8
- package/dist/evidence/proof-trust-cli.js +0 -27
- package/dist/evidence/proof-trust.d.ts +0 -14
- package/dist/evidence/proof-trust.js +0 -381
- package/dist/evidence/regression-proof-matrix.d.ts +0 -42
- package/dist/evidence/regression-proof-matrix.js +0 -72
- package/dist/evidence/run-trace.d.ts +0 -103
- package/dist/evidence/run-trace.js +0 -191
- package/dist/goal/compiler.d.ts +0 -5
- package/dist/goal/compiler.js +0 -350
- package/dist/goal/control-loop.d.ts +0 -124
- package/dist/goal/control-loop.js +0 -1123
- package/dist/goal/ensemble-memory.d.ts +0 -26
- package/dist/goal/ensemble-memory.js +0 -55
- package/dist/goal/eval-criteria.d.ts +0 -3
- package/dist/goal/eval-criteria.js +0 -72
- package/dist/goal/evidence.d.ts +0 -20
- package/dist/goal/evidence.js +0 -321
- package/dist/goal/goal-daemon.d.ts +0 -40
- package/dist/goal/goal-daemon.js +0 -318
- package/dist/goal/intake.d.ts +0 -48
- package/dist/goal/intake.js +0 -561
- package/dist/goal/intent-analyzer.d.ts +0 -9
- package/dist/goal/intent-analyzer.js +0 -322
- package/dist/goal/intent-frame.d.ts +0 -65
- package/dist/goal/intent-frame.js +0 -596
- package/dist/goal/interview-assimilation.d.ts +0 -13
- package/dist/goal/interview-assimilation.js +0 -383
- package/dist/goal/interview-question-bank.d.ts +0 -11
- package/dist/goal/interview-question-bank.js +0 -225
- package/dist/goal/interview-scoring.d.ts +0 -31
- package/dist/goal/interview-scoring.js +0 -187
- package/dist/goal/interview-session.d.ts +0 -25
- package/dist/goal/interview-session.js +0 -116
- package/dist/goal/persistence.d.ts +0 -11
- package/dist/goal/persistence.js +0 -134
- package/dist/goal/prompt-digest.d.ts +0 -13
- package/dist/goal/prompt-digest.js +0 -111
- package/dist/goal/scoring.d.ts +0 -2
- package/dist/goal/scoring.js +0 -69
- package/dist/goal/wake-policy.d.ts +0 -26
- package/dist/goal/wake-policy.js +0 -58
- package/dist/harness/create-harness-task-runner.d.ts +0 -43
- package/dist/harness/create-harness-task-runner.js +0 -56
- package/dist/harness/execute-harness-run.d.ts +0 -34
- package/dist/harness/execute-harness-run.js +0 -109
- package/dist/hooks/events.d.ts +0 -71
- package/dist/hooks/events.js +0 -1
- package/dist/hooks/hook-bus.d.ts +0 -13
- package/dist/hooks/hook-bus.js +0 -59
- package/dist/hooks/hook-registry.d.ts +0 -6
- package/dist/hooks/hook-registry.js +0 -64
- package/dist/hooks/index.d.ts +0 -3
- package/dist/hooks/index.js +0 -2
- package/dist/hud/index.d.ts +0 -9
- package/dist/hud/index.js +0 -11
- package/dist/hud/live-renderer.d.ts +0 -17
- package/dist/hud/live-renderer.js +0 -52
- package/dist/hud/render.d.ts +0 -64
- package/dist/hud/render.js +0 -960
- package/dist/hud/types.d.ts +0 -58
- package/dist/hud/types.js +0 -7
- package/dist/input/input-artifacts.d.ts +0 -10
- package/dist/input/input-artifacts.js +0 -19
- package/dist/input/input-envelope.d.ts +0 -86
- package/dist/input/input-envelope.js +0 -87
- package/dist/integrations/servarr/adapter.d.ts +0 -29
- package/dist/integrations/servarr/adapter.js +0 -156
- package/dist/integrations/servarr/commands.d.ts +0 -15
- package/dist/integrations/servarr/commands.js +0 -119
- package/dist/integrations/servarr/schema.d.ts +0 -34
- package/dist/integrations/servarr/schema.js +0 -149
- package/dist/kimi/ascii-art.d.ts +0 -1
- package/dist/kimi/ascii-art.js +0 -23
- package/dist/kimi/banner.d.ts +0 -53
- package/dist/kimi/banner.js +0 -284
- package/dist/kimi/bug-filter.d.ts +0 -15
- package/dist/kimi/bug-filter.js +0 -150
- package/dist/kimi/capability.d.ts +0 -25
- package/dist/kimi/capability.js +0 -68
- package/dist/kimi/isolated-home.d.ts +0 -21
- package/dist/kimi/isolated-home.js +0 -270
- package/dist/kimi/runner.d.ts +0 -74
- package/dist/kimi/runner.js +0 -1052
- package/dist/kimi/simple-art.d.ts +0 -1
- package/dist/kimi/simple-art.js +0 -1
- package/dist/kimi/statusline.d.ts +0 -26
- package/dist/kimi/statusline.js +0 -142
- package/dist/kimi/usage.d.ts +0 -52
- package/dist/kimi/usage.js +0 -481
- package/dist/kimi/wire-client.d.ts +0 -95
- package/dist/kimi/wire-client.js +0 -338
- package/dist/lsp/default-config.d.ts +0 -16
- package/dist/lsp/default-config.js +0 -26
- package/dist/mcp/acp-server.d.ts +0 -2
- package/dist/mcp/acp-server.js +0 -357
- package/dist/mcp/autoconnect.d.ts +0 -60
- package/dist/mcp/autoconnect.js +0 -192
- package/dist/mcp/client.d.ts +0 -112
- package/dist/mcp/client.js +0 -276
- package/dist/mcp/config-permissions.d.ts +0 -23
- package/dist/mcp/config-permissions.js +0 -66
- package/dist/mcp/consent-flow.d.ts +0 -152
- package/dist/mcp/consent-flow.js +0 -329
- package/dist/mcp/filesystem-readonly-server.d.ts +0 -2
- package/dist/mcp/filesystem-readonly-server.js +0 -320
- package/dist/mcp/governance.d.ts +0 -292
- package/dist/mcp/governance.js +0 -602
- package/dist/mcp/host.d.ts +0 -154
- package/dist/mcp/host.js +0 -792
- package/dist/mcp/omk-project-server.d.ts +0 -2
- package/dist/mcp/omk-project-server.js +0 -1632
- package/dist/mcp/omk-web-bridge-server.d.ts +0 -14
- package/dist/mcp/omk-web-bridge-server.js +0 -154
- package/dist/mcp/permission-resolver.d.ts +0 -67
- package/dist/mcp/permission-resolver.js +0 -124
- package/dist/mcp/quality-gate.d.ts +0 -36
- package/dist/mcp/quality-gate.js +0 -247
- package/dist/mcp/quarantine.d.ts +0 -11
- package/dist/mcp/quarantine.js +0 -79
- package/dist/mcp/secret-scanner.d.ts +0 -195
- package/dist/mcp/secret-scanner.js +0 -742
- package/dist/mcp/server-catalog.d.ts +0 -36
- package/dist/mcp/server-catalog.js +0 -168
- package/dist/mcp/shared-secret-registry.d.ts +0 -61
- package/dist/mcp/shared-secret-registry.js +0 -171
- package/dist/mcp/transports/stdio.d.ts +0 -22
- package/dist/mcp/transports/stdio.js +0 -165
- package/dist/mcp/transports/streamable-http.d.ts +0 -31
- package/dist/mcp/transports/streamable-http.js +0 -289
- package/dist/mcp/transports/transport.d.ts +0 -20
- package/dist/mcp/transports/transport.js +0 -3
- package/dist/memory/embedding.d.ts +0 -11
- package/dist/memory/embedding.js +0 -24
- package/dist/memory/graph-delta-log.d.ts +0 -137
- package/dist/memory/graph-delta-log.js +0 -650
- package/dist/memory/graph-viewer.d.ts +0 -72
- package/dist/memory/graph-viewer.js +0 -383
- package/dist/memory/kuzu-memory-store.d.ts +0 -37
- package/dist/memory/kuzu-memory-store.js +0 -453
- package/dist/memory/local-graph-memory-store.d.ts +0 -189
- package/dist/memory/local-graph-memory-store.js +0 -1305
- package/dist/memory/memory-config.d.ts +0 -51
- package/dist/memory/memory-config.js +0 -187
- package/dist/memory/memory-store.d.ts +0 -66
- package/dist/memory/memory-store.js +0 -228
- package/dist/memory/ontology-model.d.ts +0 -175
- package/dist/memory/ontology-model.js +0 -131
- package/dist/openai/image-client.d.ts +0 -103
- package/dist/openai/image-client.js +0 -380
- package/dist/orchestration/adaptorch-topology.d.ts +0 -59
- package/dist/orchestration/adaptorch-topology.js +0 -194
- package/dist/orchestration/agent-worker.d.ts +0 -72
- package/dist/orchestration/agent-worker.js +0 -278
- package/dist/orchestration/capability-agents.d.ts +0 -14
- package/dist/orchestration/capability-agents.js +0 -180
- package/dist/orchestration/capability-routing.d.ts +0 -65
- package/dist/orchestration/capability-routing.js +0 -121
- package/dist/orchestration/compiled-dag-executor.d.ts +0 -56
- package/dist/orchestration/compiled-dag-executor.js +0 -88
- package/dist/orchestration/completion-artifacts.d.ts +0 -37
- package/dist/orchestration/completion-artifacts.js +0 -84
- package/dist/orchestration/completion-sentinel.d.ts +0 -37
- package/dist/orchestration/completion-sentinel.js +0 -66
- package/dist/orchestration/contracts/index.d.ts +0 -45
- package/dist/orchestration/contracts/index.js +0 -6
- package/dist/orchestration/dag-artifacts.d.ts +0 -11
- package/dist/orchestration/dag-artifacts.js +0 -42
- package/dist/orchestration/dag-compiler-presets.d.ts +0 -20
- package/dist/orchestration/dag-compiler-presets.js +0 -476
- package/dist/orchestration/dag-compiler-types.d.ts +0 -43
- package/dist/orchestration/dag-compiler-types.js +0 -1
- package/dist/orchestration/dag-compiler.d.ts +0 -3
- package/dist/orchestration/dag-compiler.js +0 -135
- package/dist/orchestration/dag.d.ts +0 -158
- package/dist/orchestration/dag.js +0 -310
- package/dist/orchestration/diagnostics.d.ts +0 -27
- package/dist/orchestration/diagnostics.js +0 -262
- package/dist/orchestration/enhanced-modes.d.ts +0 -116
- package/dist/orchestration/enhanced-modes.js +0 -231
- package/dist/orchestration/enhanced-parallel-orchestrator.d.ts +0 -127
- package/dist/orchestration/enhanced-parallel-orchestrator.js +0 -734
- package/dist/orchestration/ensemble-decision.d.ts +0 -40
- package/dist/orchestration/ensemble-decision.js +0 -297
- package/dist/orchestration/ensemble.d.ts +0 -22
- package/dist/orchestration/ensemble.js +0 -558
- package/dist/orchestration/eta.d.ts +0 -10
- package/dist/orchestration/eta.js +0 -75
- package/dist/orchestration/evidence-check.d.ts +0 -36
- package/dist/orchestration/evidence-check.js +0 -257
- package/dist/orchestration/evidence-gate.d.ts +0 -34
- package/dist/orchestration/evidence-gate.js +0 -501
- package/dist/orchestration/execution-planner.d.ts +0 -40
- package/dist/orchestration/execution-planner.js +0 -252
- package/dist/orchestration/executor.d.ts +0 -11
- package/dist/orchestration/executor.js +0 -979
- package/dist/orchestration/interactive-orchestrator.d.ts +0 -134
- package/dist/orchestration/interactive-orchestrator.js +0 -450
- package/dist/orchestration/log-streamer.d.ts +0 -104
- package/dist/orchestration/log-streamer.js +0 -293
- package/dist/orchestration/loop-artifacts.d.ts +0 -14
- package/dist/orchestration/loop-artifacts.js +0 -20
- package/dist/orchestration/loop-controller.d.ts +0 -14
- package/dist/orchestration/loop-controller.js +0 -311
- package/dist/orchestration/loop-guard.d.ts +0 -28
- package/dist/orchestration/loop-guard.js +0 -104
- package/dist/orchestration/loop-state.d.ts +0 -86
- package/dist/orchestration/loop-state.js +0 -1
- package/dist/orchestration/merge-arbiter.d.ts +0 -91
- package/dist/orchestration/merge-arbiter.js +0 -376
- package/dist/orchestration/node-monitor.d.ts +0 -18
- package/dist/orchestration/node-monitor.js +0 -98
- package/dist/orchestration/orchestrate-prompt.d.ts +0 -43
- package/dist/orchestration/orchestrate-prompt.js +0 -533
- package/dist/orchestration/orchestration-state.d.ts +0 -3
- package/dist/orchestration/orchestration-state.js +0 -2
- package/dist/orchestration/parallel-orchestrator.d.ts +0 -165
- package/dist/orchestration/parallel-orchestrator.js +0 -607
- package/dist/orchestration/parallel-ui.d.ts +0 -51
- package/dist/orchestration/parallel-ui.js +0 -470
- package/dist/orchestration/repair-policy.d.ts +0 -20
- package/dist/orchestration/repair-policy.js +0 -221
- package/dist/orchestration/routing/inventory.d.ts +0 -9
- package/dist/orchestration/routing/inventory.js +0 -273
- package/dist/orchestration/routing/mcp-config.d.ts +0 -17
- package/dist/orchestration/routing/mcp-config.js +0 -154
- package/dist/orchestration/routing/types.d.ts +0 -38
- package/dist/orchestration/routing/types.js +0 -4
- package/dist/orchestration/routing.d.ts +0 -35
- package/dist/orchestration/routing.js +0 -986
- package/dist/orchestration/run-state.d.ts +0 -36
- package/dist/orchestration/run-state.js +0 -176
- package/dist/orchestration/scheduler.d.ts +0 -9
- package/dist/orchestration/scheduler.js +0 -85
- package/dist/orchestration/skill-assigner.d.ts +0 -22
- package/dist/orchestration/skill-assigner.js +0 -345
- package/dist/orchestration/state-machine/index.d.ts +0 -3
- package/dist/orchestration/state-machine/index.js +0 -3
- package/dist/orchestration/state-machine/node-state-machine.d.ts +0 -24
- package/dist/orchestration/state-machine/node-state-machine.js +0 -35
- package/dist/orchestration/state-machine/run-state-machine.d.ts +0 -38
- package/dist/orchestration/state-machine/run-state-machine.js +0 -161
- package/dist/orchestration/state-machine/run-state-manager.d.ts +0 -108
- package/dist/orchestration/state-machine/run-state-manager.js +0 -314
- package/dist/orchestration/state-persister.d.ts +0 -7
- package/dist/orchestration/state-persister.js +0 -84
- package/dist/orchestration/task-graph.d.ts +0 -29
- package/dist/orchestration/task-graph.js +0 -261
- package/dist/orchestration/verification-only.d.ts +0 -28
- package/dist/orchestration/verification-only.js +0 -94
- package/dist/providers/anthropic-messages-runner.d.ts +0 -17
- package/dist/providers/anthropic-messages-runner.js +0 -197
- package/dist/providers/attempt-recorder.d.ts +0 -10
- package/dist/providers/attempt-recorder.js +0 -38
- package/dist/providers/codex-cli-runner.d.ts +0 -11
- package/dist/providers/codex-cli-runner.js +0 -129
- package/dist/providers/context-preflight.d.ts +0 -47
- package/dist/providers/context-preflight.js +0 -134
- package/dist/providers/deepseek/deepseek-balance.d.ts +0 -29
- package/dist/providers/deepseek/deepseek-balance.js +0 -80
- package/dist/providers/deepseek/deepseek-client.d.ts +0 -53
- package/dist/providers/deepseek/deepseek-client.js +0 -164
- package/dist/providers/deepseek/deepseek-config.d.ts +0 -89
- package/dist/providers/deepseek/deepseek-config.js +0 -272
- package/dist/providers/deepseek/deepseek-errors.d.ts +0 -5
- package/dist/providers/deepseek/deepseek-errors.js +0 -48
- package/dist/providers/deepseek/deepseek-provider.d.ts +0 -10
- package/dist/providers/deepseek/deepseek-provider.js +0 -162
- package/dist/providers/deepseek/deepseek-super-config.d.ts +0 -31
- package/dist/providers/deepseek/deepseek-super-config.js +0 -136
- package/dist/providers/deepseek-provider.d.ts +0 -8
- package/dist/providers/deepseek-provider.js +0 -78
- package/dist/providers/health.d.ts +0 -16
- package/dist/providers/health.js +0 -101
- package/dist/providers/index.d.ts +0 -23
- package/dist/providers/index.js +0 -23
- package/dist/providers/kimi-provider-failure.d.ts +0 -8
- package/dist/providers/kimi-provider-failure.js +0 -56
- package/dist/providers/kimi-provider.d.ts +0 -7
- package/dist/providers/kimi-provider.js +0 -27
- package/dist/providers/model-registry.d.ts +0 -103
- package/dist/providers/model-registry.js +0 -605
- package/dist/providers/model-table.d.ts +0 -24
- package/dist/providers/model-table.js +0 -140
- package/dist/providers/model-tabs.d.ts +0 -33
- package/dist/providers/model-tabs.js +0 -98
- package/dist/providers/openai-compatible-runner.d.ts +0 -17
- package/dist/providers/openai-compatible-runner.js +0 -180
- package/dist/providers/provider-health.d.ts +0 -46
- package/dist/providers/provider-health.js +0 -200
- package/dist/providers/provider-router.d.ts +0 -8
- package/dist/providers/provider-router.js +0 -174
- package/dist/providers/provider-runtime.d.ts +0 -17
- package/dist/providers/provider-runtime.js +0 -262
- package/dist/providers/provider-stats.d.ts +0 -56
- package/dist/providers/provider-stats.js +0 -303
- package/dist/providers/provider-task-runner.d.ts +0 -23
- package/dist/providers/provider-task-runner.js +0 -1202
- package/dist/providers/provider.d.ts +0 -76
- package/dist/providers/provider.js +0 -9
- package/dist/providers/router.d.ts +0 -14
- package/dist/providers/router.js +0 -563
- package/dist/providers/runner/deepseek-helpers.d.ts +0 -38
- package/dist/providers/runner/deepseek-helpers.js +0 -150
- package/dist/providers/runner/env.d.ts +0 -12
- package/dist/providers/runner/env.js +0 -98
- package/dist/providers/runner/execution.d.ts +0 -26
- package/dist/providers/runner/execution.js +0 -42
- package/dist/providers/runner/helpers.d.ts +0 -9
- package/dist/providers/runner/helpers.js +0 -38
- package/dist/providers/runner/results.d.ts +0 -26
- package/dist/providers/runner/results.js +0 -104
- package/dist/providers/thinking-levels.d.ts +0 -7
- package/dist/providers/thinking-levels.js +0 -70
- package/dist/providers/types.d.ts +0 -143
- package/dist/providers/types.js +0 -60
- package/dist/replay/differ.d.ts +0 -5
- package/dist/replay/differ.js +0 -314
- package/dist/replay/index.d.ts +0 -6
- package/dist/replay/index.js +0 -4
- package/dist/replay/inspector.d.ts +0 -14
- package/dist/replay/inspector.js +0 -264
- package/dist/replay/manifest-builder.d.ts +0 -11
- package/dist/replay/manifest-builder.js +0 -184
- package/dist/replay/replay-engine.d.ts +0 -18
- package/dist/replay/replay-engine.js +0 -265
- package/dist/runtime/adapter.d.ts +0 -77
- package/dist/runtime/adapter.js +0 -28
- package/dist/runtime/advanced-control-loop.d.ts +0 -60
- package/dist/runtime/advanced-control-loop.js +0 -136
- package/dist/runtime/agent-runtime.d.ts +0 -133
- package/dist/runtime/agent-runtime.js +0 -18
- package/dist/runtime/blast-radius.d.ts +0 -10
- package/dist/runtime/blast-radius.js +0 -14
- package/dist/runtime/cache-stable-session.d.ts +0 -55
- package/dist/runtime/cache-stable-session.js +0 -108
- package/dist/runtime/capability-injection.d.ts +0 -39
- package/dist/runtime/capability-injection.js +0 -93
- package/dist/runtime/chat-advisory-runtime.d.ts +0 -2
- package/dist/runtime/chat-advisory-runtime.js +0 -71
- package/dist/runtime/child-env.d.ts +0 -31
- package/dist/runtime/child-env.js +0 -131
- package/dist/runtime/codex-cli-runtime.d.ts +0 -10
- package/dist/runtime/codex-cli-runtime.js +0 -78
- package/dist/runtime/codex-runtime.d.ts +0 -35
- package/dist/runtime/codex-runtime.js +0 -264
- package/dist/runtime/command-bus.d.ts +0 -13
- package/dist/runtime/command-bus.js +0 -57
- package/dist/runtime/context-broker-converter.d.ts +0 -9
- package/dist/runtime/context-broker-converter.js +0 -96
- package/dist/runtime/context-broker.d.ts +0 -34
- package/dist/runtime/context-broker.js +0 -321
- package/dist/runtime/context-budget-optimizer.d.ts +0 -73
- package/dist/runtime/context-budget-optimizer.js +0 -300
- package/dist/runtime/context-capsule.d.ts +0 -81
- package/dist/runtime/context-capsule.js +0 -46
- package/dist/runtime/contracts/command-envelope.d.ts +0 -99
- package/dist/runtime/contracts/command-envelope.js +0 -5
- package/dist/runtime/contracts/evidence.d.ts +0 -87
- package/dist/runtime/contracts/evidence.js +0 -7
- package/dist/runtime/contracts/reasoning-trace.d.ts +0 -120
- package/dist/runtime/contracts/reasoning-trace.js +0 -10
- package/dist/runtime/contracts/router-v2.d.ts +0 -44
- package/dist/runtime/contracts/router-v2.js +0 -4
- package/dist/runtime/contracts/shared.d.ts +0 -34
- package/dist/runtime/contracts/shared.js +0 -12
- package/dist/runtime/contracts/weakness-remediation.d.ts +0 -83
- package/dist/runtime/contracts/weakness-remediation.js +0 -44
- package/dist/runtime/core-verified-preset.d.ts +0 -37
- package/dist/runtime/core-verified-preset.js +0 -205
- package/dist/runtime/debloat-nlp.d.ts +0 -140
- package/dist/runtime/debloat-nlp.js +0 -398
- package/dist/runtime/deepseek-runtime.d.ts +0 -28
- package/dist/runtime/deepseek-runtime.js +0 -270
- package/dist/runtime/external-cli-adapter.d.ts +0 -29
- package/dist/runtime/external-cli-adapter.js +0 -283
- package/dist/runtime/headroom-policy.d.ts +0 -37
- package/dist/runtime/headroom-policy.js +0 -122
- package/dist/runtime/index.d.ts +0 -8
- package/dist/runtime/index.js +0 -8
- package/dist/runtime/kimi-api-runtime.d.ts +0 -52
- package/dist/runtime/kimi-api-runtime.js +0 -425
- package/dist/runtime/kimi-print-runtime.d.ts +0 -10
- package/dist/runtime/kimi-print-runtime.js +0 -87
- package/dist/runtime/kimi-wire-protocol-runtime.d.ts +0 -44
- package/dist/runtime/kimi-wire-protocol-runtime.js +0 -436
- package/dist/runtime/kimi-wire-runtime.d.ts +0 -17
- package/dist/runtime/kimi-wire-runtime.js +0 -112
- package/dist/runtime/legacy-bridge.d.ts +0 -14
- package/dist/runtime/legacy-bridge.js +0 -27
- package/dist/runtime/local-llm-runtime.d.ts +0 -29
- package/dist/runtime/local-llm-runtime.js +0 -231
- package/dist/runtime/mimo-api-runtime.d.ts +0 -13
- package/dist/runtime/mimo-api-runtime.js +0 -24
- package/dist/runtime/nlg-renderer.d.ts +0 -38
- package/dist/runtime/nlg-renderer.js +0 -132
- package/dist/runtime/ouroboros-policy.d.ts +0 -57
- package/dist/runtime/ouroboros-policy.js +0 -134
- package/dist/runtime/output-router.d.ts +0 -20
- package/dist/runtime/output-router.js +0 -171
- package/dist/runtime/process-session.d.ts +0 -27
- package/dist/runtime/process-session.js +0 -35
- package/dist/runtime/prompt-envelope.d.ts +0 -28
- package/dist/runtime/prompt-envelope.js +0 -78
- package/dist/runtime/proof-bundle-trust.d.ts +0 -74
- package/dist/runtime/proof-bundle-trust.js +0 -100
- package/dist/runtime/provider-event-normalizer.d.ts +0 -117
- package/dist/runtime/provider-event-normalizer.js +0 -454
- package/dist/runtime/provider-maturity-gate.d.ts +0 -43
- package/dist/runtime/provider-maturity-gate.js +0 -127
- package/dist/runtime/provider-tool-contracts.d.ts +0 -24
- package/dist/runtime/provider-tool-contracts.js +0 -56
- package/dist/runtime/public-surface.d.ts +0 -93
- package/dist/runtime/public-surface.js +0 -146
- package/dist/runtime/reasoning-trace.d.ts +0 -46
- package/dist/runtime/reasoning-trace.js +0 -289
- package/dist/runtime/renderers.d.ts +0 -33
- package/dist/runtime/renderers.js +0 -221
- package/dist/runtime/router-v2-scoring.d.ts +0 -16
- package/dist/runtime/router-v2-scoring.js +0 -156
- package/dist/runtime/runtime-backed-task-runner.d.ts +0 -20
- package/dist/runtime/runtime-backed-task-runner.js +0 -174
- package/dist/runtime/runtime-bootstrap.d.ts +0 -21
- package/dist/runtime/runtime-bootstrap.js +0 -208
- package/dist/runtime/runtime-registry.d.ts +0 -23
- package/dist/runtime/runtime-registry.js +0 -95
- package/dist/runtime/runtime-router.d.ts +0 -56
- package/dist/runtime/runtime-router.js +0 -652
- package/dist/runtime/sandbox-profile.d.ts +0 -54
- package/dist/runtime/sandbox-profile.js +0 -136
- package/dist/runtime/slash-commands.d.ts +0 -46
- package/dist/runtime/slash-commands.js +0 -619
- package/dist/runtime/stable-json.d.ts +0 -9
- package/dist/runtime/stable-json.js +0 -45
- package/dist/runtime/tool-call-repair.d.ts +0 -35
- package/dist/runtime/tool-call-repair.js +0 -181
- package/dist/runtime/tool-dispatch-contracts.d.ts +0 -100
- package/dist/runtime/tool-dispatch-contracts.js +0 -160
- package/dist/runtime/tool-plane.d.ts +0 -31
- package/dist/runtime/tool-plane.js +0 -112
- package/dist/runtime/tool-proxy.d.ts +0 -20
- package/dist/runtime/tool-proxy.js +0 -109
- package/dist/runtime/tool-registry-contract.d.ts +0 -40
- package/dist/runtime/tool-registry-contract.js +0 -52
- package/dist/runtime/ui-components.d.ts +0 -64
- package/dist/runtime/ui-components.js +0 -232
- package/dist/runtime/weakness-remediation-index.d.ts +0 -27
- package/dist/runtime/weakness-remediation-index.js +0 -37
- package/dist/runtime/weights-config.d.ts +0 -90
- package/dist/runtime/weights-config.js +0 -249
- package/dist/runtime/worker-manifest.d.ts +0 -34
- package/dist/runtime/worker-manifest.js +0 -204
- package/dist/safety/approval-policy.d.ts +0 -4
- package/dist/safety/approval-policy.js +0 -33
- package/dist/safety/enforcement-engine.d.ts +0 -89
- package/dist/safety/enforcement-engine.js +0 -279
- package/dist/safety/guard-hooks.d.ts +0 -3
- package/dist/safety/guard-hooks.js +0 -64
- package/dist/safety/tool-authority-gate.d.ts +0 -102
- package/dist/safety/tool-authority-gate.js +0 -200
- package/dist/schema/decision.schema.d.ts +0 -57
- package/dist/schema/decision.schema.js +0 -32
- package/dist/schema/envelope.schema.d.ts +0 -216
- package/dist/schema/envelope.schema.js +0 -38
- package/dist/schema/error.schema.d.ts +0 -51
- package/dist/schema/error.schema.js +0 -12
- package/dist/schema/evidence.schema.d.ts +0 -58
- package/dist/schema/evidence.schema.js +0 -31
- package/dist/schema/index.d.ts +0 -8
- package/dist/schema/index.js +0 -8
- package/dist/schema/proof-bundle.schema.d.ts +0 -150
- package/dist/schema/proof-bundle.schema.js +0 -41
- package/dist/schema/provider.schema.d.ts +0 -138
- package/dist/schema/provider.schema.js +0 -35
- package/dist/schema/run-manifest.schema.d.ts +0 -168
- package/dist/schema/run-manifest.schema.js +0 -35
- package/dist/schema/version.schema.d.ts +0 -64
- package/dist/schema/version.schema.js +0 -21
- package/dist/theme/ansi.d.ts +0 -15
- package/dist/theme/ansi.js +0 -48
- package/dist/theme/colors.d.ts +0 -87
- package/dist/theme/colors.js +0 -105
- package/dist/theme/extended-palette.d.ts +0 -85
- package/dist/theme/extended-palette.js +0 -108
- package/dist/theme/hud-theme.d.ts +0 -6
- package/dist/theme/hud-theme.js +0 -41
- package/dist/theme/index.d.ts +0 -12
- package/dist/theme/index.js +0 -20
- package/dist/theme/layout.d.ts +0 -24
- package/dist/theme/layout.js +0 -160
- package/dist/theme/metrics.d.ts +0 -23
- package/dist/theme/metrics.js +0 -93
- package/dist/theme/parallel.d.ts +0 -68
- package/dist/theme/parallel.js +0 -355
- package/dist/theme/working-indicator.d.ts +0 -38
- package/dist/theme/working-indicator.js +0 -149
- package/dist/tui/model.d.ts +0 -28
- package/dist/tui/model.js +0 -1
- package/dist/tui/terminal-frame-renderer.d.ts +0 -19
- package/dist/tui/terminal-frame-renderer.js +0 -60
- package/dist/tui/views/capabilities-view.d.ts +0 -3
- package/dist/tui/views/capabilities-view.js +0 -13
- package/dist/tui/views/common.d.ts +0 -11
- package/dist/tui/views/common.js +0 -35
- package/dist/tui/views/dag-view.d.ts +0 -3
- package/dist/tui/views/dag-view.js +0 -12
- package/dist/tui/views/evidence-view.d.ts +0 -3
- package/dist/tui/views/evidence-view.js +0 -18
- package/dist/tui/views/index.d.ts +0 -4
- package/dist/tui/views/index.js +0 -3
- package/dist/ui/omk-sigil.d.ts +0 -13
- package/dist/ui/omk-sigil.js +0 -268
- package/dist/ui/omk-working-sweep.d.ts +0 -61
- package/dist/ui/omk-working-sweep.js +0 -406
- package/dist/util/agent-schema.d.ts +0 -24
- package/dist/util/agent-schema.js +0 -293
- package/dist/util/appshot-store.d.ts +0 -68
- package/dist/util/appshot-store.js +0 -506
- package/dist/util/chat-agent-mode.d.ts +0 -184
- package/dist/util/chat-agent-mode.js +0 -938
- package/dist/util/chat-cockpit.d.ts +0 -54
- package/dist/util/chat-cockpit.js +0 -350
- package/dist/util/chat-startup.d.ts +0 -35
- package/dist/util/chat-startup.js +0 -330
- package/dist/util/chat-state.d.ts +0 -27
- package/dist/util/chat-state.js +0 -105
- package/dist/util/checkpoint.d.ts +0 -21
- package/dist/util/checkpoint.js +0 -238
- package/dist/util/cli-contract.d.ts +0 -46
- package/dist/util/cli-contract.js +0 -72
- package/dist/util/clipboard-image.d.ts +0 -49
- package/dist/util/clipboard-image.js +0 -263
- package/dist/util/cron-engine.d.ts +0 -24
- package/dist/util/cron-engine.js +0 -227
- package/dist/util/events-logger.d.ts +0 -30
- package/dist/util/events-logger.js +0 -135
- package/dist/util/execution-selection.d.ts +0 -13
- package/dist/util/execution-selection.js +0 -82
- package/dist/util/first-run-star.d.ts +0 -58
- package/dist/util/first-run-star.js +0 -264
- package/dist/util/fs/core.d.ts +0 -5
- package/dist/util/fs/core.js +0 -35
- package/dist/util/fs/internal.d.ts +0 -14
- package/dist/util/fs/internal.js +0 -169
- package/dist/util/fs/kimi-sync.d.ts +0 -41
- package/dist/util/fs/kimi-sync.js +0 -495
- package/dist/util/fs/logo.d.ts +0 -2
- package/dist/util/fs/logo.js +0 -78
- package/dist/util/fs/manifest.d.ts +0 -6
- package/dist/util/fs/manifest.js +0 -40
- package/dist/util/fs/mcp-diagnose.d.ts +0 -15
- package/dist/util/fs/mcp-diagnose.js +0 -204
- package/dist/util/fs/mcp-runtime-config.d.ts +0 -23
- package/dist/util/fs/mcp-runtime-config.js +0 -412
- package/dist/util/fs/paths.d.ts +0 -13
- package/dist/util/fs/paths.js +0 -82
- package/dist/util/fs/preflight.d.ts +0 -27
- package/dist/util/fs/preflight.js +0 -271
- package/dist/util/fs.d.ts +0 -8
- package/dist/util/fs.js +0 -8
- package/dist/util/git.d.ts +0 -11
- package/dist/util/git.js +0 -39
- package/dist/util/help-text.d.ts +0 -1
- package/dist/util/help-text.js +0 -60
- package/dist/util/i18n.d.ts +0 -10
- package/dist/util/i18n.js +0 -848
- package/dist/util/json-envelope.d.ts +0 -15
- package/dist/util/json-envelope.js +0 -28
- package/dist/util/mcp-preflight.d.ts +0 -26
- package/dist/util/mcp-preflight.js +0 -29
- package/dist/util/mode-preset.d.ts +0 -29
- package/dist/util/mode-preset.js +0 -222
- package/dist/util/mode-selector.d.ts +0 -6
- package/dist/util/mode-selector.js +0 -74
- package/dist/util/output-buffer.d.ts +0 -12
- package/dist/util/output-buffer.js +0 -59
- package/dist/util/process-tree.d.ts +0 -18
- package/dist/util/process-tree.js +0 -102
- package/dist/util/project-root.d.ts +0 -27
- package/dist/util/project-root.js +0 -382
- package/dist/util/provider-usage.d.ts +0 -2
- package/dist/util/provider-usage.js +0 -1
- package/dist/util/reasoning-nlp.d.ts +0 -84
- package/dist/util/reasoning-nlp.js +0 -325
- package/dist/util/resource-profile.d.ts +0 -32
- package/dist/util/resource-profile.js +0 -219
- package/dist/util/run-store.d.ts +0 -38
- package/dist/util/run-store.js +0 -151
- package/dist/util/run-view-model.d.ts +0 -111
- package/dist/util/run-view-model.js +0 -333
- package/dist/util/runtime-profile.d.ts +0 -34
- package/dist/util/runtime-profile.js +0 -149
- package/dist/util/runtime-scope.d.ts +0 -2
- package/dist/util/runtime-scope.js +0 -19
- package/dist/util/scoped-agent-file.d.ts +0 -47
- package/dist/util/scoped-agent-file.js +0 -121
- package/dist/util/screenshot-store.d.ts +0 -35
- package/dist/util/screenshot-store.js +0 -310
- package/dist/util/secret-mask.d.ts +0 -5
- package/dist/util/secret-mask.js +0 -41
- package/dist/util/session.d.ts +0 -19
- package/dist/util/session.js +0 -80
- package/dist/util/shell.d.ts +0 -30
- package/dist/util/shell.js +0 -350
- package/dist/util/snippet.d.ts +0 -17
- package/dist/util/snippet.js +0 -110
- package/dist/util/sync-manifest.d.ts +0 -13
- package/dist/util/sync-manifest.js +0 -22
- package/dist/util/terminal-input.d.ts +0 -45
- package/dist/util/terminal-input.js +0 -67
- package/dist/util/terminal-layout.d.ts +0 -18
- package/dist/util/terminal-layout.js +0 -112
- package/dist/util/terminal-owner.d.ts +0 -19
- package/dist/util/terminal-owner.js +0 -64
- package/dist/util/theme.d.ts +0 -9
- package/dist/util/theme.js +0 -9
- package/dist/util/timeout-config.d.ts +0 -18
- package/dist/util/timeout-config.js +0 -101
- package/dist/util/todo-sync.d.ts +0 -58
- package/dist/util/todo-sync.js +0 -473
- package/dist/util/update-check.d.ts +0 -94
- package/dist/util/update-check.js +0 -355
- package/dist/util/usage-view-model.d.ts +0 -22
- package/dist/util/usage-view-model.js +0 -57
- package/dist/util/user-visible-output.d.ts +0 -19
- package/dist/util/user-visible-output.js +0 -48
- package/dist/util/version.d.ts +0 -4
- package/dist/util/version.js +0 -52
- package/dist/util/worktree.d.ts +0 -10
- package/dist/util/worktree.js +0 -165
- package/dist/ux/explain-loop-decision.d.ts +0 -4
- package/dist/ux/explain-loop-decision.js +0 -55
- package/dist/ux/intent-router.d.ts +0 -15
- package/dist/ux/intent-router.js +0 -64
- package/dist/ux/natural-entrypoint.d.ts +0 -21
- package/dist/ux/natural-entrypoint.js +0 -122
- package/dist/version.d.ts +0 -11
- package/dist/version.js +0 -18
- package/dist/web-bridge/host.d.ts +0 -8
- package/dist/web-bridge/host.js +0 -109
- package/dist/web-bridge/native-host.d.ts +0 -6
- package/dist/web-bridge/native-host.js +0 -40
- package/dist/web-bridge/status.d.ts +0 -84
- package/dist/web-bridge/status.js +0 -201
- package/docs/2026-05-01-16gb-lite-mode.md +0 -37
- package/docs/2026-05-01-critical-issues-and-improvements.md +0 -361
- package/docs/2026-05-01-dag-ensemble-runtime.md +0 -74
- package/docs/2026-05-02-p1-p2-hardening-handoff.md +0 -139
- package/docs/2026-05-05-adjustable-timeouts-and-cron-jobs.md +0 -252
- package/docs/2026-05-08-omk-hardening-plan.md +0 -62
- package/docs/2026-05-14/critical-issues.md +0 -20
- package/docs/2026-05-14/improvements.md +0 -14
- package/docs/2026-05-14/init-checklist.md +0 -25
- package/docs/2026-05-14/plan.md +0 -20
- package/docs/2026-05-15/critical-issues.md +0 -20
- package/docs/2026-05-15/improvements.md +0 -14
- package/docs/2026-05-15/init-checklist.md +0 -25
- package/docs/2026-05-15/plan.md +0 -20
- package/docs/2026-05-16/critical-issues.md +0 -20
- package/docs/2026-05-16/improvements.md +0 -14
- package/docs/2026-05-16/init-checklist.md +0 -25
- package/docs/2026-05-16/plan.md +0 -20
- package/docs/2026-05-17/critical-issues.md +0 -20
- package/docs/2026-05-17/improvements.md +0 -14
- package/docs/2026-05-17/init-checklist.md +0 -25
- package/docs/2026-05-17/plan.md +0 -20
- package/docs/2026-05-18/improvements.md +0 -14
- package/docs/2026-05-18/init-checklist.md +0 -25
- package/docs/2026-05-18/plan.md +0 -20
- package/docs/2026-05-18-critical-issues-and-improvements.md +0 -441
- package/docs/2026-05-18-project-direction.md +0 -223
- package/docs/2026-05-19/critical-issues.md +0 -20
- package/docs/2026-05-19/improvements.md +0 -14
- package/docs/2026-05-19/init-checklist.md +0 -25
- package/docs/2026-05-19/plan.md +0 -20
- package/docs/2026-05-20/critical-issues.md +0 -20
- package/docs/2026-05-20/improvements.md +0 -14
- package/docs/2026-05-20/init-checklist.md +0 -25
- package/docs/2026-05-20/plan.md +0 -20
- package/docs/2026-05-21/critical-issues.md +0 -20
- package/docs/2026-05-21/improvements.md +0 -14
- package/docs/2026-05-21/init-checklist.md +0 -25
- package/docs/2026-05-21/plan.md +0 -20
- package/docs/2026-05-22/critical-issues.md +0 -20
- package/docs/2026-05-22/improvements.md +0 -14
- package/docs/2026-05-22/init-checklist.md +0 -25
- package/docs/2026-05-22/plan.md +0 -20
- package/docs/2026-05-23/critical-issues.md +0 -20
- package/docs/2026-05-23/improvements.md +0 -14
- package/docs/2026-05-23/init-checklist.md +0 -25
- package/docs/2026-05-23/plan.md +0 -20
- package/docs/2026-05-24/critical-issues.md +0 -30
- package/docs/2026-05-24/improvements.md +0 -23
- package/docs/2026-05-24/init-checklist.md +0 -25
- package/docs/2026-05-24/plan.md +0 -22
- package/docs/2026-05-25/critical-issues.md +0 -20
- package/docs/2026-05-25/improvements.md +0 -14
- package/docs/2026-05-25/init-checklist.md +0 -25
- package/docs/2026-05-25/plan.md +0 -20
- package/docs/2026-05-26/critical-issues.md +0 -20
- package/docs/2026-05-26/improvements.md +0 -14
- package/docs/2026-05-26/init-checklist.md +0 -25
- package/docs/2026-05-26/plan.md +0 -20
- package/docs/2026-05-27/critical-issues.md +0 -20
- package/docs/2026-05-27/improvements.md +0 -14
- package/docs/2026-05-27/init-checklist.md +0 -25
- package/docs/2026-05-27/plan.md +0 -20
- package/docs/2026-05-28/critical-issues.md +0 -20
- package/docs/2026-05-28/improvements.md +0 -14
- package/docs/2026-05-28/init-checklist.md +0 -25
- package/docs/2026-05-28/plan.md +0 -20
- package/docs/2026-05-29/critical-issues.md +0 -20
- package/docs/2026-05-29/improvements.md +0 -14
- package/docs/2026-05-29/init-checklist.md +0 -25
- package/docs/2026-05-29/plan.md +0 -20
- package/docs/2026-05-30/critical-issues.md +0 -20
- package/docs/2026-05-30/improvements.md +0 -14
- package/docs/2026-05-30/init-checklist.md +0 -25
- package/docs/2026-05-30/plan.md +0 -20
- package/docs/2026-05-31/critical-issues.md +0 -20
- package/docs/2026-05-31/improvements.md +0 -14
- package/docs/2026-05-31/init-checklist.md +0 -25
- package/docs/2026-05-31/plan.md +0 -20
- package/docs/2026-06-01/critical-issues.md +0 -20
- package/docs/2026-06-01/improvements.md +0 -14
- package/docs/2026-06-01/init-checklist.md +0 -25
- package/docs/2026-06-01/plan.md +0 -20
- package/docs/2026-06-02/critical-issues.md +0 -20
- package/docs/2026-06-02/improvements.md +0 -14
- package/docs/2026-06-02/init-checklist.md +0 -25
- package/docs/2026-06-02/plan.md +0 -20
- package/docs/2026-06-03/critical-issues.md +0 -20
- package/docs/2026-06-03/improvements.md +0 -14
- package/docs/2026-06-03/init-checklist.md +0 -25
- package/docs/2026-06-03/plan.md +0 -20
- package/docs/2026-06-04/critical-issues.md +0 -20
- package/docs/2026-06-04/improvements.md +0 -14
- package/docs/2026-06-04/init-checklist.md +0 -25
- package/docs/2026-06-04/plan.md +0 -20
- package/docs/2026-06-05/critical-issues.md +0 -20
- package/docs/2026-06-05/improvements.md +0 -14
- package/docs/2026-06-05/init-checklist.md +0 -25
- package/docs/2026-06-05/plan.md +0 -20
- package/docs/2026-06-06/critical-issues.md +0 -20
- package/docs/2026-06-06/improvements.md +0 -14
- package/docs/2026-06-06/init-checklist.md +0 -25
- package/docs/2026-06-06/plan.md +0 -20
- package/docs/2026-06-07/critical-issues.md +0 -20
- package/docs/2026-06-07/improvements.md +0 -14
- package/docs/2026-06-07/init-checklist.md +0 -25
- package/docs/2026-06-07/plan.md +0 -20
- package/docs/2026-06-08/critical-issues.md +0 -20
- package/docs/2026-06-08/improvements.md +0 -14
- package/docs/2026-06-08/init-checklist.md +0 -25
- package/docs/2026-06-08/plan.md +0 -20
- package/docs/2026-06-09/critical-issues.md +0 -20
- package/docs/2026-06-09/improvements.md +0 -14
- package/docs/2026-06-09/init-checklist.md +0 -25
- package/docs/2026-06-09/plan.md +0 -20
- package/docs/2026-06-10/critical-issues.md +0 -20
- package/docs/2026-06-10/improvements.md +0 -14
- package/docs/2026-06-10/init-checklist.md +0 -25
- package/docs/2026-06-10/plan.md +0 -20
- package/docs/2026-06-11/critical-issues.md +0 -20
- package/docs/2026-06-11/improvements.md +0 -14
- package/docs/2026-06-11/init-checklist.md +0 -25
- package/docs/2026-06-11/plan.md +0 -20
- package/docs/ARCHITECTURE_ANALYSIS_CODEGRAPH.md +0 -223
- package/docs/GSTACK_MIGRATION.md +0 -169
- package/docs/OMK_CLI_V2_RUNTIME_ARCHITECTURE.md +0 -2058
- package/docs/adr/0001-no-native-rust-lane.md +0 -52
- package/docs/benchmark-design.md +0 -122
- package/docs/cli-v2-migration.md +0 -87
- package/docs/codex-oauth-setup.md +0 -62
- package/docs/decisions/2026-06-10-git-history-bloat.md +0 -61
- package/docs/decisions/ADR-theme-dark-only-assets.md +0 -43
- package/docs/demo/verified-run/README.md +0 -32
- package/docs/demo/verified-run/artifacts/README.md +0 -18
- package/docs/demo/verified-run/capture-plan.md +0 -51
- package/docs/demo/verified-run/generated-diff.md +0 -27
- package/docs/demo/verified-run/raw-prompt.md +0 -21
- package/docs/demo/verified-run/video-shot-list.md +0 -14
- package/docs/design-md.md +0 -35
- package/docs/getting-started.md +0 -65
- package/docs/github-organic-promotion.md +0 -127
- package/docs/headroom-omk-final-summary.md +0 -188
- package/docs/headroom-omk-integration.md +0 -394
- package/docs/headroom-omk-setup-guide.md +0 -422
- package/docs/headroom-omk-usage-examples.md +0 -371
- package/docs/hud-and-parallel-ux.md +0 -155
- package/docs/integrations/ouroboros.md +0 -96
- package/docs/kimi-oauth-usage-status.md +0 -33
- package/docs/kimi-okabe-dmail.md +0 -44
- package/docs/local-graph-memory.md +0 -102
- package/docs/lsp.md +0 -48
- package/docs/mcp-ontology-proposal.md +0 -12
- package/docs/native-root-runtime-algorithms.md +0 -703
- package/docs/native-root-runtime-hardening.md +0 -131
- package/docs/neo4j-memory.md +0 -5
- package/docs/openai-platform-image-keys.md +0 -23
- package/docs/phase1-final-report.md +0 -154
- package/docs/provider-maturity.md +0 -44
- package/docs/runtime-architecture.md +0 -89
- package/docs/versioning.md +0 -49
- package/llms.txt +0 -38
- package/readmeasset/.npmignore +0 -22
- package/readmeasset/ASSET_INDEX.md +0 -39
- package/readmeasset/ASSET_PROVENANCE.md +0 -110
- package/readmeasset/omk-control-surfaces.svg +0 -55
- package/readmeasset/omk-core-loop.svg +0 -26
- package/readmeasset/omk-evidence-gate-card.png +0 -0
- package/readmeasset/omk-github-banner.webp +0 -0
- package/readmeasset/omk-github-header.webp +0 -0
- package/readmeasset/omk-install-card.png +0 -0
- package/readmeasset/omk-logo-512.png +0 -0
- package/readmeasset/omk-logo-mark.svg +0 -8
- package/readmeasset/omk-provider-router-card.png +0 -0
- package/readmeasset/omk-release-assertions.svg +0 -51
- package/readmeasset/omk-runtime-flow-0.78.0.webp +0 -0
- package/readmeasset/omk-social-preview.png +0 -0
- package/readmeasset/omk-tui-0.78.0.webp +0 -0
- package/readmeasset/omk_tui.png +0 -0
- package/templates/.kimi/AGENTS.md +0 -93
- package/templates/.omk/agents/okabe.yaml +0 -30
- package/templates/.omk/agents/roles/aggregator.yaml +0 -13
- package/templates/.omk/agents/roles/architect.yaml +0 -13
- package/templates/.omk/agents/roles/coder.yaml +0 -9
- package/templates/.omk/agents/roles/explorer.yaml +0 -13
- package/templates/.omk/agents/roles/integrator.yaml +0 -13
- package/templates/.omk/agents/roles/interviewer.yaml +0 -13
- package/templates/.omk/agents/roles/ontology.yaml +0 -18
- package/templates/.omk/agents/roles/planner.yaml +0 -13
- package/templates/.omk/agents/roles/qa.yaml +0 -12
- package/templates/.omk/agents/roles/researcher.yaml +0 -13
- package/templates/.omk/agents/roles/reviewer.yaml +0 -13
- package/templates/.omk/agents/roles/router.yaml +0 -13
- package/templates/.omk/agents/roles/security.yaml +0 -12
- package/templates/.omk/agents/roles/tester.yaml +0 -12
- package/templates/.omk/agents/roles/vision-debugger.yaml +0 -12
- package/templates/.omk/agents/root.yaml +0 -62
- package/templates/.omk/lsp.json +0 -27
- package/templates/.omk/prompts/root.md +0 -74
- package/templates/AGENTS.md +0 -510
- package/templates/skills/agents/agentmemory/SKILL.md +0 -40
- package/templates/skills/agents/andrej-karpathy-skills/SKILL.md +0 -41
- package/templates/skills/agents/claude-for-legal/SKILL.md +0 -63
- package/templates/skills/agents/claude-for-legal/references/workflow-catalog.md +0 -38
- package/templates/skills/agents/matt-pocock-skills/SKILL.md +0 -40
- package/templates/skills/agents/multica/SKILL.md +0 -40
- package/templates/skills/agents/omk-agent-reach-websearch/SKILL.md +0 -55
- package/templates/skills/agents/omk-backend-api-review/SKILL.md +0 -30
- package/templates/skills/agents/omk-code-review/SKILL.md +0 -40
- package/templates/skills/agents/omk-context-broker/SKILL.md +0 -57
- package/templates/skills/agents/omk-control-loop-debugger/SKILL.md +0 -49
- package/templates/skills/agents/omk-design-system/SKILL.md +0 -22
- package/templates/skills/agents/omk-docs-release/SKILL.md +0 -42
- package/templates/skills/agents/omk-evidence-contract/SKILL.md +0 -52
- package/templates/skills/agents/omk-frontend-implementation/SKILL.md +0 -13
- package/templates/skills/agents/omk-frontend-ui-review/SKILL.md +0 -29
- package/templates/skills/agents/omk-git-commit-pr/SKILL.md +0 -45
- package/templates/skills/agents/omk-industrial-control-loop/SKILL.md +0 -33
- package/templates/skills/agents/omk-plan-first/SKILL.md +0 -39
- package/templates/skills/agents/omk-project-rules/SKILL.md +0 -46
- package/templates/skills/agents/omk-python-typing/SKILL.md +0 -33
- package/templates/skills/agents/omk-quality-gate/SKILL.md +0 -54
- package/templates/skills/agents/omk-repo-explorer/SKILL.md +0 -33
- package/templates/skills/agents/omk-research-verify/SKILL.md +0 -30
- package/templates/skills/agents/omk-secret-guard/SKILL.md +0 -23
- package/templates/skills/agents/omk-security-review/SKILL.md +0 -49
- package/templates/skills/agents/omk-test-debug-loop/SKILL.md +0 -43
- package/templates/skills/agents/omk-troubleshooting/SKILL.md +0 -14
- package/templates/skills/agents/omk-typescript-strict/SKILL.md +0 -38
- package/templates/skills/agents/omk-worktree-team/SKILL.md +0 -44
- package/templates/skills/agents/react-doctor/SKILL.md +0 -46
- package/templates/skills/kimi/agentmemory/SKILL.md +0 -40
- package/templates/skills/kimi/andrej-karpathy-skills/SKILL.md +0 -41
- package/templates/skills/kimi/awesome-design-md/SKILL.md +0 -54
- package/templates/skills/kimi/claude-for-legal/SKILL.md +0 -63
- package/templates/skills/kimi/claude-for-legal/references/workflow-catalog.md +0 -38
- package/templates/skills/kimi/deepseek-api/SKILL.md +0 -27
- package/templates/skills/kimi/deepseek-disable/SKILL.md +0 -20
- package/templates/skills/kimi/deepseek-enable/SKILL.md +0 -20
- package/templates/skills/kimi/deepseekset/SKILL.md +0 -27
- package/templates/skills/kimi/graph-view/SKILL.md +0 -29
- package/templates/skills/kimi/matt-pocock-skills/SKILL.md +0 -40
- package/templates/skills/kimi/multica/SKILL.md +0 -40
- package/templates/skills/kimi/omk-agent-reach-websearch/SKILL.md +0 -55
- package/templates/skills/kimi/omk-backend-api-review/SKILL.md +0 -30
- package/templates/skills/kimi/omk-code-review/SKILL.md +0 -34
- package/templates/skills/kimi/omk-context-broker/SKILL.md +0 -57
- package/templates/skills/kimi/omk-control-loop-debugger/SKILL.md +0 -49
- package/templates/skills/kimi/omk-design-md/SKILL.md +0 -55
- package/templates/skills/kimi/omk-design-system/SKILL.md +0 -22
- package/templates/skills/kimi/omk-docs-release/SKILL.md +0 -42
- package/templates/skills/kimi/omk-evidence-contract/SKILL.md +0 -52
- package/templates/skills/kimi/omk-flow-bugfix/SKILL.md +0 -20
- package/templates/skills/kimi/omk-flow-design-to-code/SKILL.md +0 -23
- package/templates/skills/kimi/omk-flow-feature-dev/SKILL.md +0 -24
- package/templates/skills/kimi/omk-flow-pr-review/SKILL.md +0 -17
- package/templates/skills/kimi/omk-flow-refactor/SKILL.md +0 -21
- package/templates/skills/kimi/omk-flow-release/SKILL.md +0 -20
- package/templates/skills/kimi/omk-flow-team-run/SKILL.md +0 -24
- package/templates/skills/kimi/omk-frontend-implementation/SKILL.md +0 -13
- package/templates/skills/kimi/omk-frontend-ui-review/SKILL.md +0 -29
- package/templates/skills/kimi/omk-git-commit-pr/SKILL.md +0 -45
- package/templates/skills/kimi/omk-global-rules/SKILL.md +0 -31
- package/templates/skills/kimi/omk-industrial-control-loop/SKILL.md +0 -33
- package/templates/skills/kimi/omk-kimi-runtime/SKILL.md +0 -46
- package/templates/skills/kimi/omk-multimodal-ui-review/SKILL.md +0 -26
- package/templates/skills/kimi/omk-plan-first/SKILL.md +0 -39
- package/templates/skills/kimi/omk-project-rules/SKILL.md +0 -21
- package/templates/skills/kimi/omk-python-typing/SKILL.md +0 -33
- package/templates/skills/kimi/omk-quality-gate/SKILL.md +0 -36
- package/templates/skills/kimi/omk-repo-explorer/SKILL.md +0 -33
- package/templates/skills/kimi/omk-research-verify/SKILL.md +0 -30
- package/templates/skills/kimi/omk-secret-guard/SKILL.md +0 -23
- package/templates/skills/kimi/omk-security-review/SKILL.md +0 -49
- package/templates/skills/kimi/omk-task-router/SKILL.md +0 -27
- package/templates/skills/kimi/omk-test-debug-loop/SKILL.md +0 -43
- package/templates/skills/kimi/omk-typescript-strict/SKILL.md +0 -38
- package/templates/skills/kimi/omk-worktree-team/SKILL.md +0 -44
- package/templates/skills/kimi/open-design/SKILL.md +0 -56
- package/templates/skills/kimi/provider/SKILL.md +0 -47
- package/templates/skills/kimi/react-doctor/SKILL.md +0 -46
- package/templates/skills/kimi/speckit-analyze/SKILL.md +0 -255
- package/templates/skills/kimi/speckit-checklist/SKILL.md +0 -367
- package/templates/skills/kimi/speckit-clarify/SKILL.md +0 -249
- package/templates/skills/kimi/speckit-constitution/SKILL.md +0 -152
- package/templates/skills/kimi/speckit-implement/SKILL.md +0 -204
- package/templates/skills/kimi/speckit-plan/SKILL.md +0 -147
- package/templates/skills/kimi/speckit-specify/SKILL.md +0 -325
- package/templates/skills/kimi/speckit-tasks/SKILL.md +0 -197
- package/templates/skills/kimi/speckit-taskstoissues/SKILL.md +0 -101
- package/templates/skills/kimi/think/SKILL.md +0 -41
- package/templates/spec-kit-omk-preset/commands/plan.md +0 -21
- package/templates/spec-kit-omk-preset/commands/tasks.md +0 -21
- package/templates/spec-kit-omk-preset/preset.yml +0 -12
- package/templates/spec-kit-omk-preset/templates/plan-template.md +0 -75
- package/templates/spec-kit-omk-preset/templates/spec-template.md +0 -80
- package/templates/spec-kit-omk-preset/templates/tasks-template.md +0 -160
- package/templates/web-bridge/chrome-extension/README.md +0 -18
- package/templates/web-bridge/chrome-extension/background.js +0 -57
- package/templates/web-bridge/chrome-extension/content-script.js +0 -46
- package/templates/web-bridge/chrome-extension/manifest.json +0 -16
- package/templates/web-bridge/chrome-extension/popup.html +0 -21
- package/templates/web-bridge/chrome-extension/popup.js +0 -9
- /package/{readmeasset → dist/modes/interactive/assets}/omk-control.webp +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive runtime algorithms for the OMK hardfork.
|
|
3
|
+
*
|
|
4
|
+
* This module hosts pure, side-effect-free helpers that drive adaptive behaviour:
|
|
5
|
+
* - Headroom thresholds (when to compact / hand off before the context limit).
|
|
6
|
+
* - Topology routing (classify a task DAG into an execution topology).
|
|
7
|
+
* - Ouroboros preference detection (presence-only, never throws, no secret reads).
|
|
8
|
+
* - First-run adaptive plan generation (JSON-serializable artifact).
|
|
9
|
+
*
|
|
10
|
+
* The only non-pure helper is `writeFirstRunAdaptivePlan`, which performs an
|
|
11
|
+
* idempotent, non-fatal filesystem write of the generated plan. It is kept here
|
|
12
|
+
* so the behaviour stays unit-testable.
|
|
13
|
+
*/
|
|
14
|
+
/** Minimal environment shape consumed by adaptive helpers. */
|
|
15
|
+
export type AdaptiveEnv = Record<string, string | undefined>;
|
|
16
|
+
/** Directed edge in a task DAG. */
|
|
17
|
+
export interface AdaptiveEdge {
|
|
18
|
+
from: string;
|
|
19
|
+
to: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const DEFAULT_HEADROOM_THRESHOLD = 0.9;
|
|
22
|
+
export declare const MIN_HEADROOM_THRESHOLD = 0.5;
|
|
23
|
+
export declare const MAX_HEADROOM_THRESHOLD = 0.99;
|
|
24
|
+
/** Whether the adaptive headroom feature is explicitly disabled via OMK_HEADROOM. */
|
|
25
|
+
export declare function isHeadroomDisabled(env?: AdaptiveEnv): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the adaptive headroom utilization threshold.
|
|
28
|
+
*
|
|
29
|
+
* - Default 0.90.
|
|
30
|
+
* - `OMK_HEADROOM_THRESHOLD` overrides (accepts a fraction `0.9` or percentage `90`).
|
|
31
|
+
* - Clamped to [0.5, 0.99].
|
|
32
|
+
* - Returns `0` when disabled via `OMK_HEADROOM=off|0|false|no`.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveAdaptiveHeadroomThreshold(env?: AdaptiveEnv): number;
|
|
35
|
+
/**
|
|
36
|
+
* Whether to invoke headroom (compact / hand off) before hitting the hard context limit.
|
|
37
|
+
* True only when the feature is enabled and utilization meets the resolved threshold.
|
|
38
|
+
*/
|
|
39
|
+
export declare function shouldUseHeadroomBeforeLimit(contextTokens: number, contextWindow: number, env?: AdaptiveEnv): boolean;
|
|
40
|
+
export type AdaptiveTopology = "singleton" | "parallel" | "pipeline" | "map_reduce" | "hierarchical" | "dag" | "hybrid";
|
|
41
|
+
export interface AdaptiveTopologyFeatures {
|
|
42
|
+
nodeCount: number;
|
|
43
|
+
edgeCount: number;
|
|
44
|
+
/** Maximum number of nodes in a single Kahn layer (parallel width). */
|
|
45
|
+
width: number;
|
|
46
|
+
/** Number of layers / longest dependency chain in node terms. */
|
|
47
|
+
criticalDepth: number;
|
|
48
|
+
/** Edges / possible edges (0 = fully parallel, 1 = fully sequential). */
|
|
49
|
+
couplingDensity: number;
|
|
50
|
+
/** width / nodeCount (inherent parallelism potential). */
|
|
51
|
+
parallelRatio: number;
|
|
52
|
+
}
|
|
53
|
+
export interface AdaptiveTopologyDecision {
|
|
54
|
+
topology: AdaptiveTopology;
|
|
55
|
+
features: AdaptiveTopologyFeatures;
|
|
56
|
+
/** Kahn layering; each entry is the set of node ids executable in that wave. */
|
|
57
|
+
waves: string[][];
|
|
58
|
+
reason: string;
|
|
59
|
+
hasCycle: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Compute structural features and an execution topology for a task DAG.
|
|
63
|
+
*
|
|
64
|
+
* Pure: uses Kahn layering with a cycle guard. Dangling edges (endpoints not in
|
|
65
|
+
* `nodes`) and duplicate edges are ignored; self loops mark the graph as cyclic.
|
|
66
|
+
*/
|
|
67
|
+
export declare function computeAdaptiveTopology(nodes: readonly string[], edges: readonly AdaptiveEdge[]): AdaptiveTopologyDecision;
|
|
68
|
+
export type OuroborosMode = "always" | "auto" | "off";
|
|
69
|
+
export interface OuroborosIndicators {
|
|
70
|
+
mcp: boolean;
|
|
71
|
+
skills: boolean;
|
|
72
|
+
binary: boolean;
|
|
73
|
+
}
|
|
74
|
+
export interface OuroborosPreference {
|
|
75
|
+
mode: OuroborosMode;
|
|
76
|
+
/** True when not off and at least one indicator is present. */
|
|
77
|
+
preferred: boolean;
|
|
78
|
+
/** True when any indicator is present (mcp/skills/binary). */
|
|
79
|
+
available: boolean;
|
|
80
|
+
fallback: "ouroboros" | "native";
|
|
81
|
+
indicators: OuroborosIndicators;
|
|
82
|
+
reason: string;
|
|
83
|
+
}
|
|
84
|
+
export interface OuroborosDetectionInput {
|
|
85
|
+
env?: AdaptiveEnv;
|
|
86
|
+
agentDir?: string;
|
|
87
|
+
cwd?: string;
|
|
88
|
+
home?: string;
|
|
89
|
+
/** Injectable existence check (defaults to fs.existsSync); used for the binary indicator. */
|
|
90
|
+
exists?: (path: string) => boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Detect whether the Ouroboros runtime should be preferred.
|
|
94
|
+
*
|
|
95
|
+
* Presence-only: never throws, performs no secret reads. When indicators are
|
|
96
|
+
* absent the preference falls back to the native runtime.
|
|
97
|
+
*/
|
|
98
|
+
export declare function detectOuroborosPreference(input?: OuroborosDetectionInput): OuroborosPreference;
|
|
99
|
+
export declare const ADAPTIVE_PLAN_VERSION = 1;
|
|
100
|
+
export declare const DEFAULT_ADAPTIVE_RUNTIME = "omk-parallel-orchestrator";
|
|
101
|
+
/** Startup DAG used to seed the first-run adaptive plan. */
|
|
102
|
+
export declare const OMK_STARTUP_DAG_NODES: readonly string[];
|
|
103
|
+
export declare const OMK_STARTUP_DAG_EDGES: readonly AdaptiveEdge[];
|
|
104
|
+
export interface FirstRunAdaptivePlanInput {
|
|
105
|
+
nodes?: readonly string[];
|
|
106
|
+
edges?: readonly AdaptiveEdge[];
|
|
107
|
+
env?: AdaptiveEnv;
|
|
108
|
+
agentDir?: string;
|
|
109
|
+
cwd?: string;
|
|
110
|
+
home?: string;
|
|
111
|
+
runtime?: string;
|
|
112
|
+
/** Injectable clock (defaults to Date.now) for deterministic tests. */
|
|
113
|
+
now?: () => number;
|
|
114
|
+
exists?: (path: string) => boolean;
|
|
115
|
+
}
|
|
116
|
+
export interface FirstRunAdaptivePlan {
|
|
117
|
+
version: number;
|
|
118
|
+
runtime: string;
|
|
119
|
+
createdAt: string;
|
|
120
|
+
cwd: string | null;
|
|
121
|
+
topology: AdaptiveTopologyDecision;
|
|
122
|
+
headroom: {
|
|
123
|
+
enabled: boolean;
|
|
124
|
+
threshold: number;
|
|
125
|
+
};
|
|
126
|
+
ouroboros: OuroborosPreference;
|
|
127
|
+
}
|
|
128
|
+
/** Build a JSON-serializable first-run adaptive plan. Pure. */
|
|
129
|
+
export declare function createFirstRunAdaptivePlan(input?: FirstRunAdaptivePlanInput): FirstRunAdaptivePlan;
|
|
130
|
+
export interface WriteAdaptivePlanInput extends FirstRunAdaptivePlanInput {
|
|
131
|
+
agentDir: string;
|
|
132
|
+
/** Force rewrite even if the artifact already exists. */
|
|
133
|
+
refresh?: boolean;
|
|
134
|
+
}
|
|
135
|
+
export interface WriteAdaptivePlanResult {
|
|
136
|
+
path: string;
|
|
137
|
+
written: boolean;
|
|
138
|
+
plan?: FirstRunAdaptivePlan;
|
|
139
|
+
reason: "created" | "refreshed" | "exists" | "error";
|
|
140
|
+
error?: string;
|
|
141
|
+
}
|
|
142
|
+
/** Path of the first-run adaptive plan artifact. */
|
|
143
|
+
export declare function getAdaptivePlanPath(agentDir: string): string;
|
|
144
|
+
/**
|
|
145
|
+
* Idempotently write the first-run adaptive plan. Non-fatal: any error is
|
|
146
|
+
* captured in the result rather than thrown. Skips writing when the artifact
|
|
147
|
+
* already exists unless `refresh` (or `OMK_ADAPTIVE_PLAN_REFRESH=1`) is set.
|
|
148
|
+
*/
|
|
149
|
+
export declare function writeFirstRunAdaptivePlan(input: WriteAdaptivePlanInput): WriteAdaptivePlanResult;
|
|
150
|
+
//# sourceMappingURL=adaptive-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-runtime.d.ts","sourceRoot":"","sources":["../../src/core/adaptive-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Adaptive runtime algorithms for the OMK hardfork.\n *\n * This module hosts pure, side-effect-free helpers that drive adaptive behaviour:\n * - Headroom thresholds (when to compact / hand off before the context limit).\n * - Topology routing (classify a task DAG into an execution topology).\n * - Ouroboros preference detection (presence-only, never throws, no secret reads).\n * - First-run adaptive plan generation (JSON-serializable artifact).\n *\n * The only non-pure helper is `writeFirstRunAdaptivePlan`, which performs an\n * idempotent, non-fatal filesystem write of the generated plan. It is kept here\n * so the behaviour stays unit-testable.\n */\n\nimport { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\n\n// ============================================================================\n// Shared types\n// ============================================================================\n\n/** Minimal environment shape consumed by adaptive helpers. */\nexport type AdaptiveEnv = Record<string, string | undefined>;\n\n/** Directed edge in a task DAG. */\nexport interface AdaptiveEdge {\n\tfrom: string;\n\tto: string;\n}\n\n// ============================================================================\n// Headroom thresholds\n// ============================================================================\n\nexport const DEFAULT_HEADROOM_THRESHOLD = 0.9;\nexport const MIN_HEADROOM_THRESHOLD = 0.5;\nexport const MAX_HEADROOM_THRESHOLD = 0.99;\n\nfunction normalizeFlag(value: string | undefined): string {\n\treturn value?.trim().toLowerCase() ?? \"\";\n}\n\n/** Whether the adaptive headroom feature is explicitly disabled via OMK_HEADROOM. */\nexport function isHeadroomDisabled(env: AdaptiveEnv = {}): boolean {\n\tconst raw = normalizeFlag(env.OMK_HEADROOM);\n\treturn raw === \"off\" || raw === \"0\" || raw === \"false\" || raw === \"no\";\n}\n\n/**\n * Resolve the adaptive headroom utilization threshold.\n *\n * - Default 0.90.\n * - `OMK_HEADROOM_THRESHOLD` overrides (accepts a fraction `0.9` or percentage `90`).\n * - Clamped to [0.5, 0.99].\n * - Returns `0` when disabled via `OMK_HEADROOM=off|0|false|no`.\n */\nexport function resolveAdaptiveHeadroomThreshold(env: AdaptiveEnv = {}): number {\n\tif (isHeadroomDisabled(env)) {\n\t\treturn 0;\n\t}\n\tlet threshold = DEFAULT_HEADROOM_THRESHOLD;\n\tconst raw = env.OMK_HEADROOM_THRESHOLD;\n\tif (raw !== undefined && raw.trim().length > 0) {\n\t\tconst parsed = Number.parseFloat(raw);\n\t\tif (Number.isFinite(parsed)) {\n\t\t\tthreshold = parsed > 1 ? parsed / 100 : parsed;\n\t\t}\n\t}\n\treturn Math.min(MAX_HEADROOM_THRESHOLD, Math.max(MIN_HEADROOM_THRESHOLD, threshold));\n}\n\n/**\n * Whether to invoke headroom (compact / hand off) before hitting the hard context limit.\n * True only when the feature is enabled and utilization meets the resolved threshold.\n */\nexport function shouldUseHeadroomBeforeLimit(\n\tcontextTokens: number,\n\tcontextWindow: number,\n\tenv: AdaptiveEnv = {},\n): boolean {\n\tconst threshold = resolveAdaptiveHeadroomThreshold(env);\n\tif (threshold <= 0) {\n\t\treturn false;\n\t}\n\tif (!Number.isFinite(contextWindow) || contextWindow <= 0) {\n\t\treturn false;\n\t}\n\tif (!Number.isFinite(contextTokens) || contextTokens < 0) {\n\t\treturn false;\n\t}\n\treturn contextTokens / contextWindow >= threshold;\n}\n\n// ============================================================================\n// Topology routing\n// ============================================================================\n\nexport type AdaptiveTopology = \"singleton\" | \"parallel\" | \"pipeline\" | \"map_reduce\" | \"hierarchical\" | \"dag\" | \"hybrid\";\n\nexport interface AdaptiveTopologyFeatures {\n\tnodeCount: number;\n\tedgeCount: number;\n\t/** Maximum number of nodes in a single Kahn layer (parallel width). */\n\twidth: number;\n\t/** Number of layers / longest dependency chain in node terms. */\n\tcriticalDepth: number;\n\t/** Edges / possible edges (0 = fully parallel, 1 = fully sequential). */\n\tcouplingDensity: number;\n\t/** width / nodeCount (inherent parallelism potential). */\n\tparallelRatio: number;\n}\n\nexport interface AdaptiveTopologyDecision {\n\ttopology: AdaptiveTopology;\n\tfeatures: AdaptiveTopologyFeatures;\n\t/** Kahn layering; each entry is the set of node ids executable in that wave. */\n\twaves: string[][];\n\treason: string;\n\thasCycle: boolean;\n}\n\n/** Routing thresholds for the OMK topology router. */\nconst THETA_OMEGA = 0.5; // parallel ratio above this -> parallel/map_reduce\nconst THETA_GAMMA = 0.6; // coupling density above this -> high coupling\nconst THETA_DELTA = 5; // node-count / depth threshold for hierarchical\n\ninterface GraphStats {\n\trootCount: number;\n\thasFanInSink: boolean;\n\thasFanOutRoot: boolean;\n\thasCycle: boolean;\n}\n\nfunction classifyTopology(\n\tfeatures: AdaptiveTopologyFeatures,\n\tstats: GraphStats,\n): { topology: AdaptiveTopology; reason: string } {\n\tconst { nodeCount, width, criticalDepth, couplingDensity, parallelRatio } = features;\n\n\tif (nodeCount === 0) {\n\t\treturn { topology: \"dag\", reason: \"empty DAG\" };\n\t}\n\tif (nodeCount === 1) {\n\t\treturn { topology: \"singleton\", reason: \"single node, no parallelism\" };\n\t}\n\tif (stats.hasCycle) {\n\t\treturn { topology: \"dag\", reason: \"cycle detected; treating as general DAG\" };\n\t}\n\n\tconst wide = parallelRatio >= THETA_OMEGA;\n\tconst highCoupling = couplingDensity >= THETA_GAMMA;\n\tconst deep = criticalDepth >= THETA_DELTA;\n\n\tif (width === 1) {\n\t\treturn { topology: \"pipeline\", reason: \"fully sequential chain (width 1)\" };\n\t}\n\tif (wide && highCoupling) {\n\t\treturn { topology: \"hybrid\", reason: \"high parallelism with high coupling (mixed signals)\" };\n\t}\n\tif (wide) {\n\t\tif (stats.rootCount <= 1 && stats.hasFanOutRoot && stats.hasFanInSink) {\n\t\t\treturn { topology: \"map_reduce\", reason: \"fan-out then fan-in with low coupling\" };\n\t\t}\n\t\treturn { topology: \"parallel\", reason: \"wide DAG with low coupling\" };\n\t}\n\tif (highCoupling) {\n\t\treturn { topology: \"pipeline\", reason: \"high coupling, sequential stages\" };\n\t}\n\tif (deep && nodeCount > THETA_DELTA) {\n\t\treturn { topology: \"hierarchical\", reason: \"deep, large dependency tree\" };\n\t}\n\treturn { topology: \"dag\", reason: \"general DAG with mixed parallelism\" };\n}\n\n/**\n * Compute structural features and an execution topology for a task DAG.\n *\n * Pure: uses Kahn layering with a cycle guard. Dangling edges (endpoints not in\n * `nodes`) and duplicate edges are ignored; self loops mark the graph as cyclic.\n */\nexport function computeAdaptiveTopology(\n\tnodes: readonly string[],\n\tedges: readonly AdaptiveEdge[],\n): AdaptiveTopologyDecision {\n\t// De-duplicate nodes while preserving input order for deterministic layering.\n\tconst orderedNodes: string[] = [];\n\tconst nodeSet = new Set<string>();\n\tfor (const node of nodes) {\n\t\tif (!nodeSet.has(node)) {\n\t\t\tnodeSet.add(node);\n\t\t\torderedNodes.push(node);\n\t\t}\n\t}\n\tconst indexOf = new Map<string, number>();\n\torderedNodes.forEach((node, index) => {\n\t\tindexOf.set(node, index);\n\t});\n\n\tconst adjacency = new Map<string, Set<string>>();\n\tconst inDegree = new Map<string, number>();\n\tconst outDegree = new Map<string, number>();\n\tfor (const node of orderedNodes) {\n\t\tadjacency.set(node, new Set());\n\t\tinDegree.set(node, 0);\n\t\toutDegree.set(node, 0);\n\t}\n\n\tlet edgeCount = 0;\n\tlet hasCycle = false;\n\tconst edgeSeen = new Set<string>();\n\tfor (const edge of edges) {\n\t\tif (!nodeSet.has(edge.from) || !nodeSet.has(edge.to)) {\n\t\t\tcontinue; // ignore dangling edges\n\t\t}\n\t\tif (edge.from === edge.to) {\n\t\t\thasCycle = true; // self loop\n\t\t\tcontinue;\n\t\t}\n\t\tconst key = `${edge.from}\\u0000${edge.to}`;\n\t\tif (edgeSeen.has(key)) {\n\t\t\tcontinue; // dedupe\n\t\t}\n\t\tedgeSeen.add(key);\n\t\tconst targets = adjacency.get(edge.from);\n\t\tif (targets && !targets.has(edge.to)) {\n\t\t\ttargets.add(edge.to);\n\t\t\tinDegree.set(edge.to, (inDegree.get(edge.to) ?? 0) + 1);\n\t\t\toutDegree.set(edge.from, (outDegree.get(edge.from) ?? 0) + 1);\n\t\t\tedgeCount++;\n\t\t}\n\t}\n\n\t// Kahn layering.\n\tconst remaining = new Map(inDegree);\n\tlet frontier = orderedNodes.filter((node) => (remaining.get(node) ?? 0) === 0);\n\tconst waves: string[][] = [];\n\tlet processed = 0;\n\twhile (frontier.length > 0) {\n\t\tconst wave = [...frontier].sort((a, b) => (indexOf.get(a) ?? 0) - (indexOf.get(b) ?? 0));\n\t\twaves.push(wave);\n\t\tconst next: string[] = [];\n\t\tfor (const node of wave) {\n\t\t\tprocessed++;\n\t\t\tfor (const neighbor of adjacency.get(node) ?? []) {\n\t\t\t\tconst degree = (remaining.get(neighbor) ?? 0) - 1;\n\t\t\t\tremaining.set(neighbor, degree);\n\t\t\t\tif (degree === 0) {\n\t\t\t\t\tnext.push(neighbor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfrontier = next;\n\t}\n\n\tif (processed < orderedNodes.length) {\n\t\thasCycle = true;\n\t\tconst placed = new Set(waves.flat());\n\t\tconst leftover = orderedNodes.filter((node) => !placed.has(node));\n\t\tif (leftover.length > 0) {\n\t\t\twaves.push(leftover);\n\t\t}\n\t}\n\n\tconst nodeCount = orderedNodes.length;\n\tconst width = waves.reduce((max, wave) => Math.max(max, wave.length), 0);\n\tconst criticalDepth = waves.length;\n\tconst maxEdges = nodeCount > 1 ? (nodeCount * (nodeCount - 1)) / 2 : 0;\n\tconst couplingDensity = maxEdges > 0 ? Math.min(1, edgeCount / maxEdges) : 0;\n\tconst parallelRatio = nodeCount > 0 ? width / nodeCount : 0;\n\n\tconst features: AdaptiveTopologyFeatures = {\n\t\tnodeCount,\n\t\tedgeCount,\n\t\twidth,\n\t\tcriticalDepth,\n\t\tcouplingDensity,\n\t\tparallelRatio,\n\t};\n\n\tconst roots = orderedNodes.filter((node) => (inDegree.get(node) ?? 0) === 0);\n\tconst stats: GraphStats = {\n\t\trootCount: roots.length,\n\t\thasFanOutRoot: roots.some((node) => (outDegree.get(node) ?? 0) > 1),\n\t\thasFanInSink: orderedNodes.some((node) => (outDegree.get(node) ?? 0) === 0 && (inDegree.get(node) ?? 0) > 1),\n\t\thasCycle,\n\t};\n\n\tconst { topology, reason } = classifyTopology(features, stats);\n\treturn { topology, features, waves, reason, hasCycle };\n}\n\n// ============================================================================\n// Ouroboros preference detection\n// ============================================================================\n\nexport type OuroborosMode = \"always\" | \"auto\" | \"off\";\n\nexport interface OuroborosIndicators {\n\tmcp: boolean;\n\tskills: boolean;\n\tbinary: boolean;\n}\n\nexport interface OuroborosPreference {\n\tmode: OuroborosMode;\n\t/** True when not off and at least one indicator is present. */\n\tpreferred: boolean;\n\t/** True when any indicator is present (mcp/skills/binary). */\n\tavailable: boolean;\n\tfallback: \"ouroboros\" | \"native\";\n\tindicators: OuroborosIndicators;\n\treason: string;\n}\n\nexport interface OuroborosDetectionInput {\n\tenv?: AdaptiveEnv;\n\tagentDir?: string;\n\tcwd?: string;\n\thome?: string;\n\t/** Injectable existence check (defaults to fs.existsSync); used for the binary indicator. */\n\texists?: (path: string) => boolean;\n}\n\nfunction resolveOuroborosMode(env: AdaptiveEnv): OuroborosMode {\n\tconst raw = normalizeFlag(env.OMK_OUROBOROS);\n\tif (raw === \"off\" || raw === \"0\" || raw === \"false\" || raw === \"no\") {\n\t\treturn \"off\";\n\t}\n\tif (raw === \"auto\") {\n\t\treturn \"auto\";\n\t}\n\treturn \"always\"; // default, also \"always\" | \"1\" | \"true\" | \"on\" | unset\n}\n\nfunction safeExists(exists: (path: string) => boolean, path: string): boolean {\n\ttry {\n\t\treturn exists(path);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction detectMcpIndicator(agentDir: string, exists: (path: string) => boolean): boolean {\n\tconst mcpPath = join(agentDir, \"mcp.json\");\n\tif (!safeExists(exists, mcpPath)) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst parsed = JSON.parse(readFileSync(mcpPath, \"utf-8\")) as Record<string, unknown>;\n\t\tconst serversValue = parsed.mcpServers ?? parsed.servers ?? parsed;\n\t\tif (serversValue && typeof serversValue === \"object\") {\n\t\t\treturn Object.keys(serversValue as Record<string, unknown>).some((key) =>\n\t\t\t\tkey.toLowerCase().includes(\"ouroboros\"),\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction detectSkillsIndicator(agentDir: string, exists: (path: string) => boolean): boolean {\n\tconst skillsDir = join(agentDir, \"skills\");\n\tif (!safeExists(exists, skillsDir)) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn readdirSync(skillsDir).some((name) => name.toLowerCase().startsWith(\"ouroboros-\"));\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction detectBinaryIndicator(home: string, exists: (path: string) => boolean): boolean {\n\treturn safeExists(exists, join(home, \".local\", \"bin\", \"ouroboros\"));\n}\n\n/**\n * Detect whether the Ouroboros runtime should be preferred.\n *\n * Presence-only: never throws, performs no secret reads. When indicators are\n * absent the preference falls back to the native runtime.\n */\nexport function detectOuroborosPreference(input: OuroborosDetectionInput = {}): OuroborosPreference {\n\tconst env = input.env ?? {};\n\tconst exists = input.exists ?? existsSync;\n\tconst home = input.home ?? env.HOME ?? env.USERPROFILE ?? homedir();\n\tconst agentDir = input.agentDir;\n\n\tconst mode = resolveOuroborosMode(env);\n\n\tconst indicators: OuroborosIndicators = {\n\t\tmcp: agentDir ? detectMcpIndicator(agentDir, exists) : false,\n\t\tskills: agentDir ? detectSkillsIndicator(agentDir, exists) : false,\n\t\tbinary: detectBinaryIndicator(home, exists),\n\t};\n\n\tconst available = indicators.mcp || indicators.skills || indicators.binary;\n\tconst preferred = mode !== \"off\" && available;\n\tconst fallback: OuroborosPreference[\"fallback\"] = preferred ? \"ouroboros\" : \"native\";\n\n\tlet reason: string;\n\tif (mode === \"off\") {\n\t\treason = \"ouroboros disabled via OMK_OUROBOROS\";\n\t} else if (available) {\n\t\tconst present = [\n\t\t\tindicators.mcp ? \"mcp\" : undefined,\n\t\t\tindicators.skills ? \"skills\" : undefined,\n\t\t\tindicators.binary ? \"binary\" : undefined,\n\t\t].filter((value): value is string => value !== undefined);\n\t\treason = `ouroboros preferred (${present.join(\", \")})`;\n\t} else {\n\t\treason = \"ouroboros unavailable; falling back to native runtime\";\n\t}\n\n\treturn { mode, preferred, available, fallback, indicators, reason };\n}\n\n// ============================================================================\n// First-run adaptive plan\n// ============================================================================\n\nexport const ADAPTIVE_PLAN_VERSION = 1;\nexport const DEFAULT_ADAPTIVE_RUNTIME = \"omk-parallel-orchestrator\";\n\n/** Startup DAG used to seed the first-run adaptive plan. */\nexport const OMK_STARTUP_DAG_NODES: readonly string[] = [\n\t\"session_start\",\n\t\"resources_discover\",\n\t\"model_select\",\n\t\"run_loop\",\n];\n\nexport const OMK_STARTUP_DAG_EDGES: readonly AdaptiveEdge[] = [\n\t{ from: \"session_start\", to: \"resources_discover\" },\n\t{ from: \"resources_discover\", to: \"model_select\" },\n\t{ from: \"model_select\", to: \"run_loop\" },\n];\n\nexport interface FirstRunAdaptivePlanInput {\n\tnodes?: readonly string[];\n\tedges?: readonly AdaptiveEdge[];\n\tenv?: AdaptiveEnv;\n\tagentDir?: string;\n\tcwd?: string;\n\thome?: string;\n\truntime?: string;\n\t/** Injectable clock (defaults to Date.now) for deterministic tests. */\n\tnow?: () => number;\n\texists?: (path: string) => boolean;\n}\n\nexport interface FirstRunAdaptivePlan {\n\tversion: number;\n\truntime: string;\n\tcreatedAt: string;\n\tcwd: string | null;\n\ttopology: AdaptiveTopologyDecision;\n\theadroom: { enabled: boolean; threshold: number };\n\touroboros: OuroborosPreference;\n}\n\n/** Build a JSON-serializable first-run adaptive plan. Pure. */\nexport function createFirstRunAdaptivePlan(input: FirstRunAdaptivePlanInput = {}): FirstRunAdaptivePlan {\n\tconst env = input.env ?? {};\n\tconst now = input.now ?? Date.now;\n\tconst nodes = input.nodes ?? OMK_STARTUP_DAG_NODES;\n\tconst edges = input.edges ?? OMK_STARTUP_DAG_EDGES;\n\n\tconst topology = computeAdaptiveTopology(nodes, edges);\n\tconst threshold = resolveAdaptiveHeadroomThreshold(env);\n\tconst headroom = {\n\t\tenabled: threshold > 0,\n\t\tthreshold: threshold > 0 ? threshold : DEFAULT_HEADROOM_THRESHOLD,\n\t};\n\tconst ouroboros = detectOuroborosPreference({\n\t\tenv,\n\t\tagentDir: input.agentDir,\n\t\tcwd: input.cwd,\n\t\thome: input.home,\n\t\texists: input.exists,\n\t});\n\n\treturn {\n\t\tversion: ADAPTIVE_PLAN_VERSION,\n\t\truntime: input.runtime ?? DEFAULT_ADAPTIVE_RUNTIME,\n\t\tcreatedAt: new Date(now()).toISOString(),\n\t\tcwd: input.cwd ?? null,\n\t\ttopology,\n\t\theadroom,\n\t\touroboros,\n\t};\n}\n\nexport interface WriteAdaptivePlanInput extends FirstRunAdaptivePlanInput {\n\tagentDir: string;\n\t/** Force rewrite even if the artifact already exists. */\n\trefresh?: boolean;\n}\n\nexport interface WriteAdaptivePlanResult {\n\tpath: string;\n\twritten: boolean;\n\tplan?: FirstRunAdaptivePlan;\n\treason: \"created\" | \"refreshed\" | \"exists\" | \"error\";\n\terror?: string;\n}\n\n/** Path of the first-run adaptive plan artifact. */\nexport function getAdaptivePlanPath(agentDir: string): string {\n\treturn join(agentDir, \"runs\", \"adaptive-runtime-plan.json\");\n}\n\nfunction isTruthyFlag(value: string | undefined): boolean {\n\tconst raw = normalizeFlag(value);\n\treturn raw === \"1\" || raw === \"true\" || raw === \"yes\" || raw === \"on\";\n}\n\n/**\n * Idempotently write the first-run adaptive plan. Non-fatal: any error is\n * captured in the result rather than thrown. Skips writing when the artifact\n * already exists unless `refresh` (or `OMK_ADAPTIVE_PLAN_REFRESH=1`) is set.\n */\nexport function writeFirstRunAdaptivePlan(input: WriteAdaptivePlanInput): WriteAdaptivePlanResult {\n\tconst env = input.env ?? {};\n\tconst exists = input.exists ?? existsSync;\n\tconst path = getAdaptivePlanPath(input.agentDir);\n\tconst refresh = input.refresh ?? isTruthyFlag(env.OMK_ADAPTIVE_PLAN_REFRESH);\n\n\ttry {\n\t\tconst alreadyExists = safeExists(exists, path);\n\t\tif (alreadyExists && !refresh) {\n\t\t\treturn { path, written: false, reason: \"exists\" };\n\t\t}\n\t\tconst plan = createFirstRunAdaptivePlan(input);\n\t\tmkdirSync(dirname(path), { recursive: true });\n\t\twriteFileSync(path, `${JSON.stringify(plan, null, 2)}\\n`, \"utf-8\");\n\t\treturn { path, written: true, plan, reason: alreadyExists ? \"refreshed\" : \"created\" };\n\t} catch (error) {\n\t\treturn { path, written: false, reason: \"error\", error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n"]}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive runtime algorithms for the OMK hardfork.
|
|
3
|
+
*
|
|
4
|
+
* This module hosts pure, side-effect-free helpers that drive adaptive behaviour:
|
|
5
|
+
* - Headroom thresholds (when to compact / hand off before the context limit).
|
|
6
|
+
* - Topology routing (classify a task DAG into an execution topology).
|
|
7
|
+
* - Ouroboros preference detection (presence-only, never throws, no secret reads).
|
|
8
|
+
* - First-run adaptive plan generation (JSON-serializable artifact).
|
|
9
|
+
*
|
|
10
|
+
* The only non-pure helper is `writeFirstRunAdaptivePlan`, which performs an
|
|
11
|
+
* idempotent, non-fatal filesystem write of the generated plan. It is kept here
|
|
12
|
+
* so the behaviour stays unit-testable.
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
15
|
+
import { homedir } from "node:os";
|
|
16
|
+
import { dirname, join } from "node:path";
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Headroom thresholds
|
|
19
|
+
// ============================================================================
|
|
20
|
+
export const DEFAULT_HEADROOM_THRESHOLD = 0.9;
|
|
21
|
+
export const MIN_HEADROOM_THRESHOLD = 0.5;
|
|
22
|
+
export const MAX_HEADROOM_THRESHOLD = 0.99;
|
|
23
|
+
function normalizeFlag(value) {
|
|
24
|
+
return value?.trim().toLowerCase() ?? "";
|
|
25
|
+
}
|
|
26
|
+
/** Whether the adaptive headroom feature is explicitly disabled via OMK_HEADROOM. */
|
|
27
|
+
export function isHeadroomDisabled(env = {}) {
|
|
28
|
+
const raw = normalizeFlag(env.OMK_HEADROOM);
|
|
29
|
+
return raw === "off" || raw === "0" || raw === "false" || raw === "no";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the adaptive headroom utilization threshold.
|
|
33
|
+
*
|
|
34
|
+
* - Default 0.90.
|
|
35
|
+
* - `OMK_HEADROOM_THRESHOLD` overrides (accepts a fraction `0.9` or percentage `90`).
|
|
36
|
+
* - Clamped to [0.5, 0.99].
|
|
37
|
+
* - Returns `0` when disabled via `OMK_HEADROOM=off|0|false|no`.
|
|
38
|
+
*/
|
|
39
|
+
export function resolveAdaptiveHeadroomThreshold(env = {}) {
|
|
40
|
+
if (isHeadroomDisabled(env)) {
|
|
41
|
+
return 0;
|
|
42
|
+
}
|
|
43
|
+
let threshold = DEFAULT_HEADROOM_THRESHOLD;
|
|
44
|
+
const raw = env.OMK_HEADROOM_THRESHOLD;
|
|
45
|
+
if (raw !== undefined && raw.trim().length > 0) {
|
|
46
|
+
const parsed = Number.parseFloat(raw);
|
|
47
|
+
if (Number.isFinite(parsed)) {
|
|
48
|
+
threshold = parsed > 1 ? parsed / 100 : parsed;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return Math.min(MAX_HEADROOM_THRESHOLD, Math.max(MIN_HEADROOM_THRESHOLD, threshold));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Whether to invoke headroom (compact / hand off) before hitting the hard context limit.
|
|
55
|
+
* True only when the feature is enabled and utilization meets the resolved threshold.
|
|
56
|
+
*/
|
|
57
|
+
export function shouldUseHeadroomBeforeLimit(contextTokens, contextWindow, env = {}) {
|
|
58
|
+
const threshold = resolveAdaptiveHeadroomThreshold(env);
|
|
59
|
+
if (threshold <= 0) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (!Number.isFinite(contextWindow) || contextWindow <= 0) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
if (!Number.isFinite(contextTokens) || contextTokens < 0) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return contextTokens / contextWindow >= threshold;
|
|
69
|
+
}
|
|
70
|
+
/** Routing thresholds for the OMK topology router. */
|
|
71
|
+
const THETA_OMEGA = 0.5; // parallel ratio above this -> parallel/map_reduce
|
|
72
|
+
const THETA_GAMMA = 0.6; // coupling density above this -> high coupling
|
|
73
|
+
const THETA_DELTA = 5; // node-count / depth threshold for hierarchical
|
|
74
|
+
function classifyTopology(features, stats) {
|
|
75
|
+
const { nodeCount, width, criticalDepth, couplingDensity, parallelRatio } = features;
|
|
76
|
+
if (nodeCount === 0) {
|
|
77
|
+
return { topology: "dag", reason: "empty DAG" };
|
|
78
|
+
}
|
|
79
|
+
if (nodeCount === 1) {
|
|
80
|
+
return { topology: "singleton", reason: "single node, no parallelism" };
|
|
81
|
+
}
|
|
82
|
+
if (stats.hasCycle) {
|
|
83
|
+
return { topology: "dag", reason: "cycle detected; treating as general DAG" };
|
|
84
|
+
}
|
|
85
|
+
const wide = parallelRatio >= THETA_OMEGA;
|
|
86
|
+
const highCoupling = couplingDensity >= THETA_GAMMA;
|
|
87
|
+
const deep = criticalDepth >= THETA_DELTA;
|
|
88
|
+
if (width === 1) {
|
|
89
|
+
return { topology: "pipeline", reason: "fully sequential chain (width 1)" };
|
|
90
|
+
}
|
|
91
|
+
if (wide && highCoupling) {
|
|
92
|
+
return { topology: "hybrid", reason: "high parallelism with high coupling (mixed signals)" };
|
|
93
|
+
}
|
|
94
|
+
if (wide) {
|
|
95
|
+
if (stats.rootCount <= 1 && stats.hasFanOutRoot && stats.hasFanInSink) {
|
|
96
|
+
return { topology: "map_reduce", reason: "fan-out then fan-in with low coupling" };
|
|
97
|
+
}
|
|
98
|
+
return { topology: "parallel", reason: "wide DAG with low coupling" };
|
|
99
|
+
}
|
|
100
|
+
if (highCoupling) {
|
|
101
|
+
return { topology: "pipeline", reason: "high coupling, sequential stages" };
|
|
102
|
+
}
|
|
103
|
+
if (deep && nodeCount > THETA_DELTA) {
|
|
104
|
+
return { topology: "hierarchical", reason: "deep, large dependency tree" };
|
|
105
|
+
}
|
|
106
|
+
return { topology: "dag", reason: "general DAG with mixed parallelism" };
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Compute structural features and an execution topology for a task DAG.
|
|
110
|
+
*
|
|
111
|
+
* Pure: uses Kahn layering with a cycle guard. Dangling edges (endpoints not in
|
|
112
|
+
* `nodes`) and duplicate edges are ignored; self loops mark the graph as cyclic.
|
|
113
|
+
*/
|
|
114
|
+
export function computeAdaptiveTopology(nodes, edges) {
|
|
115
|
+
// De-duplicate nodes while preserving input order for deterministic layering.
|
|
116
|
+
const orderedNodes = [];
|
|
117
|
+
const nodeSet = new Set();
|
|
118
|
+
for (const node of nodes) {
|
|
119
|
+
if (!nodeSet.has(node)) {
|
|
120
|
+
nodeSet.add(node);
|
|
121
|
+
orderedNodes.push(node);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const indexOf = new Map();
|
|
125
|
+
orderedNodes.forEach((node, index) => {
|
|
126
|
+
indexOf.set(node, index);
|
|
127
|
+
});
|
|
128
|
+
const adjacency = new Map();
|
|
129
|
+
const inDegree = new Map();
|
|
130
|
+
const outDegree = new Map();
|
|
131
|
+
for (const node of orderedNodes) {
|
|
132
|
+
adjacency.set(node, new Set());
|
|
133
|
+
inDegree.set(node, 0);
|
|
134
|
+
outDegree.set(node, 0);
|
|
135
|
+
}
|
|
136
|
+
let edgeCount = 0;
|
|
137
|
+
let hasCycle = false;
|
|
138
|
+
const edgeSeen = new Set();
|
|
139
|
+
for (const edge of edges) {
|
|
140
|
+
if (!nodeSet.has(edge.from) || !nodeSet.has(edge.to)) {
|
|
141
|
+
continue; // ignore dangling edges
|
|
142
|
+
}
|
|
143
|
+
if (edge.from === edge.to) {
|
|
144
|
+
hasCycle = true; // self loop
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const key = `${edge.from}\u0000${edge.to}`;
|
|
148
|
+
if (edgeSeen.has(key)) {
|
|
149
|
+
continue; // dedupe
|
|
150
|
+
}
|
|
151
|
+
edgeSeen.add(key);
|
|
152
|
+
const targets = adjacency.get(edge.from);
|
|
153
|
+
if (targets && !targets.has(edge.to)) {
|
|
154
|
+
targets.add(edge.to);
|
|
155
|
+
inDegree.set(edge.to, (inDegree.get(edge.to) ?? 0) + 1);
|
|
156
|
+
outDegree.set(edge.from, (outDegree.get(edge.from) ?? 0) + 1);
|
|
157
|
+
edgeCount++;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Kahn layering.
|
|
161
|
+
const remaining = new Map(inDegree);
|
|
162
|
+
let frontier = orderedNodes.filter((node) => (remaining.get(node) ?? 0) === 0);
|
|
163
|
+
const waves = [];
|
|
164
|
+
let processed = 0;
|
|
165
|
+
while (frontier.length > 0) {
|
|
166
|
+
const wave = [...frontier].sort((a, b) => (indexOf.get(a) ?? 0) - (indexOf.get(b) ?? 0));
|
|
167
|
+
waves.push(wave);
|
|
168
|
+
const next = [];
|
|
169
|
+
for (const node of wave) {
|
|
170
|
+
processed++;
|
|
171
|
+
for (const neighbor of adjacency.get(node) ?? []) {
|
|
172
|
+
const degree = (remaining.get(neighbor) ?? 0) - 1;
|
|
173
|
+
remaining.set(neighbor, degree);
|
|
174
|
+
if (degree === 0) {
|
|
175
|
+
next.push(neighbor);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
frontier = next;
|
|
180
|
+
}
|
|
181
|
+
if (processed < orderedNodes.length) {
|
|
182
|
+
hasCycle = true;
|
|
183
|
+
const placed = new Set(waves.flat());
|
|
184
|
+
const leftover = orderedNodes.filter((node) => !placed.has(node));
|
|
185
|
+
if (leftover.length > 0) {
|
|
186
|
+
waves.push(leftover);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const nodeCount = orderedNodes.length;
|
|
190
|
+
const width = waves.reduce((max, wave) => Math.max(max, wave.length), 0);
|
|
191
|
+
const criticalDepth = waves.length;
|
|
192
|
+
const maxEdges = nodeCount > 1 ? (nodeCount * (nodeCount - 1)) / 2 : 0;
|
|
193
|
+
const couplingDensity = maxEdges > 0 ? Math.min(1, edgeCount / maxEdges) : 0;
|
|
194
|
+
const parallelRatio = nodeCount > 0 ? width / nodeCount : 0;
|
|
195
|
+
const features = {
|
|
196
|
+
nodeCount,
|
|
197
|
+
edgeCount,
|
|
198
|
+
width,
|
|
199
|
+
criticalDepth,
|
|
200
|
+
couplingDensity,
|
|
201
|
+
parallelRatio,
|
|
202
|
+
};
|
|
203
|
+
const roots = orderedNodes.filter((node) => (inDegree.get(node) ?? 0) === 0);
|
|
204
|
+
const stats = {
|
|
205
|
+
rootCount: roots.length,
|
|
206
|
+
hasFanOutRoot: roots.some((node) => (outDegree.get(node) ?? 0) > 1),
|
|
207
|
+
hasFanInSink: orderedNodes.some((node) => (outDegree.get(node) ?? 0) === 0 && (inDegree.get(node) ?? 0) > 1),
|
|
208
|
+
hasCycle,
|
|
209
|
+
};
|
|
210
|
+
const { topology, reason } = classifyTopology(features, stats);
|
|
211
|
+
return { topology, features, waves, reason, hasCycle };
|
|
212
|
+
}
|
|
213
|
+
function resolveOuroborosMode(env) {
|
|
214
|
+
const raw = normalizeFlag(env.OMK_OUROBOROS);
|
|
215
|
+
if (raw === "off" || raw === "0" || raw === "false" || raw === "no") {
|
|
216
|
+
return "off";
|
|
217
|
+
}
|
|
218
|
+
if (raw === "auto") {
|
|
219
|
+
return "auto";
|
|
220
|
+
}
|
|
221
|
+
return "always"; // default, also "always" | "1" | "true" | "on" | unset
|
|
222
|
+
}
|
|
223
|
+
function safeExists(exists, path) {
|
|
224
|
+
try {
|
|
225
|
+
return exists(path);
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
function detectMcpIndicator(agentDir, exists) {
|
|
232
|
+
const mcpPath = join(agentDir, "mcp.json");
|
|
233
|
+
if (!safeExists(exists, mcpPath)) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
const parsed = JSON.parse(readFileSync(mcpPath, "utf-8"));
|
|
238
|
+
const serversValue = parsed.mcpServers ?? parsed.servers ?? parsed;
|
|
239
|
+
if (serversValue && typeof serversValue === "object") {
|
|
240
|
+
return Object.keys(serversValue).some((key) => key.toLowerCase().includes("ouroboros"));
|
|
241
|
+
}
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
function detectSkillsIndicator(agentDir, exists) {
|
|
249
|
+
const skillsDir = join(agentDir, "skills");
|
|
250
|
+
if (!safeExists(exists, skillsDir)) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
try {
|
|
254
|
+
return readdirSync(skillsDir).some((name) => name.toLowerCase().startsWith("ouroboros-"));
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
function detectBinaryIndicator(home, exists) {
|
|
261
|
+
return safeExists(exists, join(home, ".local", "bin", "ouroboros"));
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Detect whether the Ouroboros runtime should be preferred.
|
|
265
|
+
*
|
|
266
|
+
* Presence-only: never throws, performs no secret reads. When indicators are
|
|
267
|
+
* absent the preference falls back to the native runtime.
|
|
268
|
+
*/
|
|
269
|
+
export function detectOuroborosPreference(input = {}) {
|
|
270
|
+
const env = input.env ?? {};
|
|
271
|
+
const exists = input.exists ?? existsSync;
|
|
272
|
+
const home = input.home ?? env.HOME ?? env.USERPROFILE ?? homedir();
|
|
273
|
+
const agentDir = input.agentDir;
|
|
274
|
+
const mode = resolveOuroborosMode(env);
|
|
275
|
+
const indicators = {
|
|
276
|
+
mcp: agentDir ? detectMcpIndicator(agentDir, exists) : false,
|
|
277
|
+
skills: agentDir ? detectSkillsIndicator(agentDir, exists) : false,
|
|
278
|
+
binary: detectBinaryIndicator(home, exists),
|
|
279
|
+
};
|
|
280
|
+
const available = indicators.mcp || indicators.skills || indicators.binary;
|
|
281
|
+
const preferred = mode !== "off" && available;
|
|
282
|
+
const fallback = preferred ? "ouroboros" : "native";
|
|
283
|
+
let reason;
|
|
284
|
+
if (mode === "off") {
|
|
285
|
+
reason = "ouroboros disabled via OMK_OUROBOROS";
|
|
286
|
+
}
|
|
287
|
+
else if (available) {
|
|
288
|
+
const present = [
|
|
289
|
+
indicators.mcp ? "mcp" : undefined,
|
|
290
|
+
indicators.skills ? "skills" : undefined,
|
|
291
|
+
indicators.binary ? "binary" : undefined,
|
|
292
|
+
].filter((value) => value !== undefined);
|
|
293
|
+
reason = `ouroboros preferred (${present.join(", ")})`;
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
reason = "ouroboros unavailable; falling back to native runtime";
|
|
297
|
+
}
|
|
298
|
+
return { mode, preferred, available, fallback, indicators, reason };
|
|
299
|
+
}
|
|
300
|
+
// ============================================================================
|
|
301
|
+
// First-run adaptive plan
|
|
302
|
+
// ============================================================================
|
|
303
|
+
export const ADAPTIVE_PLAN_VERSION = 1;
|
|
304
|
+
export const DEFAULT_ADAPTIVE_RUNTIME = "omk-parallel-orchestrator";
|
|
305
|
+
/** Startup DAG used to seed the first-run adaptive plan. */
|
|
306
|
+
export const OMK_STARTUP_DAG_NODES = [
|
|
307
|
+
"session_start",
|
|
308
|
+
"resources_discover",
|
|
309
|
+
"model_select",
|
|
310
|
+
"run_loop",
|
|
311
|
+
];
|
|
312
|
+
export const OMK_STARTUP_DAG_EDGES = [
|
|
313
|
+
{ from: "session_start", to: "resources_discover" },
|
|
314
|
+
{ from: "resources_discover", to: "model_select" },
|
|
315
|
+
{ from: "model_select", to: "run_loop" },
|
|
316
|
+
];
|
|
317
|
+
/** Build a JSON-serializable first-run adaptive plan. Pure. */
|
|
318
|
+
export function createFirstRunAdaptivePlan(input = {}) {
|
|
319
|
+
const env = input.env ?? {};
|
|
320
|
+
const now = input.now ?? Date.now;
|
|
321
|
+
const nodes = input.nodes ?? OMK_STARTUP_DAG_NODES;
|
|
322
|
+
const edges = input.edges ?? OMK_STARTUP_DAG_EDGES;
|
|
323
|
+
const topology = computeAdaptiveTopology(nodes, edges);
|
|
324
|
+
const threshold = resolveAdaptiveHeadroomThreshold(env);
|
|
325
|
+
const headroom = {
|
|
326
|
+
enabled: threshold > 0,
|
|
327
|
+
threshold: threshold > 0 ? threshold : DEFAULT_HEADROOM_THRESHOLD,
|
|
328
|
+
};
|
|
329
|
+
const ouroboros = detectOuroborosPreference({
|
|
330
|
+
env,
|
|
331
|
+
agentDir: input.agentDir,
|
|
332
|
+
cwd: input.cwd,
|
|
333
|
+
home: input.home,
|
|
334
|
+
exists: input.exists,
|
|
335
|
+
});
|
|
336
|
+
return {
|
|
337
|
+
version: ADAPTIVE_PLAN_VERSION,
|
|
338
|
+
runtime: input.runtime ?? DEFAULT_ADAPTIVE_RUNTIME,
|
|
339
|
+
createdAt: new Date(now()).toISOString(),
|
|
340
|
+
cwd: input.cwd ?? null,
|
|
341
|
+
topology,
|
|
342
|
+
headroom,
|
|
343
|
+
ouroboros,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
/** Path of the first-run adaptive plan artifact. */
|
|
347
|
+
export function getAdaptivePlanPath(agentDir) {
|
|
348
|
+
return join(agentDir, "runs", "adaptive-runtime-plan.json");
|
|
349
|
+
}
|
|
350
|
+
function isTruthyFlag(value) {
|
|
351
|
+
const raw = normalizeFlag(value);
|
|
352
|
+
return raw === "1" || raw === "true" || raw === "yes" || raw === "on";
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Idempotently write the first-run adaptive plan. Non-fatal: any error is
|
|
356
|
+
* captured in the result rather than thrown. Skips writing when the artifact
|
|
357
|
+
* already exists unless `refresh` (or `OMK_ADAPTIVE_PLAN_REFRESH=1`) is set.
|
|
358
|
+
*/
|
|
359
|
+
export function writeFirstRunAdaptivePlan(input) {
|
|
360
|
+
const env = input.env ?? {};
|
|
361
|
+
const exists = input.exists ?? existsSync;
|
|
362
|
+
const path = getAdaptivePlanPath(input.agentDir);
|
|
363
|
+
const refresh = input.refresh ?? isTruthyFlag(env.OMK_ADAPTIVE_PLAN_REFRESH);
|
|
364
|
+
try {
|
|
365
|
+
const alreadyExists = safeExists(exists, path);
|
|
366
|
+
if (alreadyExists && !refresh) {
|
|
367
|
+
return { path, written: false, reason: "exists" };
|
|
368
|
+
}
|
|
369
|
+
const plan = createFirstRunAdaptivePlan(input);
|
|
370
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
371
|
+
writeFileSync(path, `${JSON.stringify(plan, null, 2)}\n`, "utf-8");
|
|
372
|
+
return { path, written: true, plan, reason: alreadyExists ? "refreshed" : "created" };
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
return { path, written: false, reason: "error", error: error instanceof Error ? error.message : String(error) };
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=adaptive-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-runtime.js","sourceRoot":"","sources":["../../src/core/adaptive-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Adaptive runtime algorithms for the OMK hardfork.\n *\n * This module hosts pure, side-effect-free helpers that drive adaptive behaviour:\n * - Headroom thresholds (when to compact / hand off before the context limit).\n * - Topology routing (classify a task DAG into an execution topology).\n * - Ouroboros preference detection (presence-only, never throws, no secret reads).\n * - First-run adaptive plan generation (JSON-serializable artifact).\n *\n * The only non-pure helper is `writeFirstRunAdaptivePlan`, which performs an\n * idempotent, non-fatal filesystem write of the generated plan. It is kept here\n * so the behaviour stays unit-testable.\n */\n\nimport { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\n\n// ============================================================================\n// Shared types\n// ============================================================================\n\n/** Minimal environment shape consumed by adaptive helpers. */\nexport type AdaptiveEnv = Record<string, string | undefined>;\n\n/** Directed edge in a task DAG. */\nexport interface AdaptiveEdge {\n\tfrom: string;\n\tto: string;\n}\n\n// ============================================================================\n// Headroom thresholds\n// ============================================================================\n\nexport const DEFAULT_HEADROOM_THRESHOLD = 0.9;\nexport const MIN_HEADROOM_THRESHOLD = 0.5;\nexport const MAX_HEADROOM_THRESHOLD = 0.99;\n\nfunction normalizeFlag(value: string | undefined): string {\n\treturn value?.trim().toLowerCase() ?? \"\";\n}\n\n/** Whether the adaptive headroom feature is explicitly disabled via OMK_HEADROOM. */\nexport function isHeadroomDisabled(env: AdaptiveEnv = {}): boolean {\n\tconst raw = normalizeFlag(env.OMK_HEADROOM);\n\treturn raw === \"off\" || raw === \"0\" || raw === \"false\" || raw === \"no\";\n}\n\n/**\n * Resolve the adaptive headroom utilization threshold.\n *\n * - Default 0.90.\n * - `OMK_HEADROOM_THRESHOLD` overrides (accepts a fraction `0.9` or percentage `90`).\n * - Clamped to [0.5, 0.99].\n * - Returns `0` when disabled via `OMK_HEADROOM=off|0|false|no`.\n */\nexport function resolveAdaptiveHeadroomThreshold(env: AdaptiveEnv = {}): number {\n\tif (isHeadroomDisabled(env)) {\n\t\treturn 0;\n\t}\n\tlet threshold = DEFAULT_HEADROOM_THRESHOLD;\n\tconst raw = env.OMK_HEADROOM_THRESHOLD;\n\tif (raw !== undefined && raw.trim().length > 0) {\n\t\tconst parsed = Number.parseFloat(raw);\n\t\tif (Number.isFinite(parsed)) {\n\t\t\tthreshold = parsed > 1 ? parsed / 100 : parsed;\n\t\t}\n\t}\n\treturn Math.min(MAX_HEADROOM_THRESHOLD, Math.max(MIN_HEADROOM_THRESHOLD, threshold));\n}\n\n/**\n * Whether to invoke headroom (compact / hand off) before hitting the hard context limit.\n * True only when the feature is enabled and utilization meets the resolved threshold.\n */\nexport function shouldUseHeadroomBeforeLimit(\n\tcontextTokens: number,\n\tcontextWindow: number,\n\tenv: AdaptiveEnv = {},\n): boolean {\n\tconst threshold = resolveAdaptiveHeadroomThreshold(env);\n\tif (threshold <= 0) {\n\t\treturn false;\n\t}\n\tif (!Number.isFinite(contextWindow) || contextWindow <= 0) {\n\t\treturn false;\n\t}\n\tif (!Number.isFinite(contextTokens) || contextTokens < 0) {\n\t\treturn false;\n\t}\n\treturn contextTokens / contextWindow >= threshold;\n}\n\n// ============================================================================\n// Topology routing\n// ============================================================================\n\nexport type AdaptiveTopology = \"singleton\" | \"parallel\" | \"pipeline\" | \"map_reduce\" | \"hierarchical\" | \"dag\" | \"hybrid\";\n\nexport interface AdaptiveTopologyFeatures {\n\tnodeCount: number;\n\tedgeCount: number;\n\t/** Maximum number of nodes in a single Kahn layer (parallel width). */\n\twidth: number;\n\t/** Number of layers / longest dependency chain in node terms. */\n\tcriticalDepth: number;\n\t/** Edges / possible edges (0 = fully parallel, 1 = fully sequential). */\n\tcouplingDensity: number;\n\t/** width / nodeCount (inherent parallelism potential). */\n\tparallelRatio: number;\n}\n\nexport interface AdaptiveTopologyDecision {\n\ttopology: AdaptiveTopology;\n\tfeatures: AdaptiveTopologyFeatures;\n\t/** Kahn layering; each entry is the set of node ids executable in that wave. */\n\twaves: string[][];\n\treason: string;\n\thasCycle: boolean;\n}\n\n/** Routing thresholds for the OMK topology router. */\nconst THETA_OMEGA = 0.5; // parallel ratio above this -> parallel/map_reduce\nconst THETA_GAMMA = 0.6; // coupling density above this -> high coupling\nconst THETA_DELTA = 5; // node-count / depth threshold for hierarchical\n\ninterface GraphStats {\n\trootCount: number;\n\thasFanInSink: boolean;\n\thasFanOutRoot: boolean;\n\thasCycle: boolean;\n}\n\nfunction classifyTopology(\n\tfeatures: AdaptiveTopologyFeatures,\n\tstats: GraphStats,\n): { topology: AdaptiveTopology; reason: string } {\n\tconst { nodeCount, width, criticalDepth, couplingDensity, parallelRatio } = features;\n\n\tif (nodeCount === 0) {\n\t\treturn { topology: \"dag\", reason: \"empty DAG\" };\n\t}\n\tif (nodeCount === 1) {\n\t\treturn { topology: \"singleton\", reason: \"single node, no parallelism\" };\n\t}\n\tif (stats.hasCycle) {\n\t\treturn { topology: \"dag\", reason: \"cycle detected; treating as general DAG\" };\n\t}\n\n\tconst wide = parallelRatio >= THETA_OMEGA;\n\tconst highCoupling = couplingDensity >= THETA_GAMMA;\n\tconst deep = criticalDepth >= THETA_DELTA;\n\n\tif (width === 1) {\n\t\treturn { topology: \"pipeline\", reason: \"fully sequential chain (width 1)\" };\n\t}\n\tif (wide && highCoupling) {\n\t\treturn { topology: \"hybrid\", reason: \"high parallelism with high coupling (mixed signals)\" };\n\t}\n\tif (wide) {\n\t\tif (stats.rootCount <= 1 && stats.hasFanOutRoot && stats.hasFanInSink) {\n\t\t\treturn { topology: \"map_reduce\", reason: \"fan-out then fan-in with low coupling\" };\n\t\t}\n\t\treturn { topology: \"parallel\", reason: \"wide DAG with low coupling\" };\n\t}\n\tif (highCoupling) {\n\t\treturn { topology: \"pipeline\", reason: \"high coupling, sequential stages\" };\n\t}\n\tif (deep && nodeCount > THETA_DELTA) {\n\t\treturn { topology: \"hierarchical\", reason: \"deep, large dependency tree\" };\n\t}\n\treturn { topology: \"dag\", reason: \"general DAG with mixed parallelism\" };\n}\n\n/**\n * Compute structural features and an execution topology for a task DAG.\n *\n * Pure: uses Kahn layering with a cycle guard. Dangling edges (endpoints not in\n * `nodes`) and duplicate edges are ignored; self loops mark the graph as cyclic.\n */\nexport function computeAdaptiveTopology(\n\tnodes: readonly string[],\n\tedges: readonly AdaptiveEdge[],\n): AdaptiveTopologyDecision {\n\t// De-duplicate nodes while preserving input order for deterministic layering.\n\tconst orderedNodes: string[] = [];\n\tconst nodeSet = new Set<string>();\n\tfor (const node of nodes) {\n\t\tif (!nodeSet.has(node)) {\n\t\t\tnodeSet.add(node);\n\t\t\torderedNodes.push(node);\n\t\t}\n\t}\n\tconst indexOf = new Map<string, number>();\n\torderedNodes.forEach((node, index) => {\n\t\tindexOf.set(node, index);\n\t});\n\n\tconst adjacency = new Map<string, Set<string>>();\n\tconst inDegree = new Map<string, number>();\n\tconst outDegree = new Map<string, number>();\n\tfor (const node of orderedNodes) {\n\t\tadjacency.set(node, new Set());\n\t\tinDegree.set(node, 0);\n\t\toutDegree.set(node, 0);\n\t}\n\n\tlet edgeCount = 0;\n\tlet hasCycle = false;\n\tconst edgeSeen = new Set<string>();\n\tfor (const edge of edges) {\n\t\tif (!nodeSet.has(edge.from) || !nodeSet.has(edge.to)) {\n\t\t\tcontinue; // ignore dangling edges\n\t\t}\n\t\tif (edge.from === edge.to) {\n\t\t\thasCycle = true; // self loop\n\t\t\tcontinue;\n\t\t}\n\t\tconst key = `${edge.from}\\u0000${edge.to}`;\n\t\tif (edgeSeen.has(key)) {\n\t\t\tcontinue; // dedupe\n\t\t}\n\t\tedgeSeen.add(key);\n\t\tconst targets = adjacency.get(edge.from);\n\t\tif (targets && !targets.has(edge.to)) {\n\t\t\ttargets.add(edge.to);\n\t\t\tinDegree.set(edge.to, (inDegree.get(edge.to) ?? 0) + 1);\n\t\t\toutDegree.set(edge.from, (outDegree.get(edge.from) ?? 0) + 1);\n\t\t\tedgeCount++;\n\t\t}\n\t}\n\n\t// Kahn layering.\n\tconst remaining = new Map(inDegree);\n\tlet frontier = orderedNodes.filter((node) => (remaining.get(node) ?? 0) === 0);\n\tconst waves: string[][] = [];\n\tlet processed = 0;\n\twhile (frontier.length > 0) {\n\t\tconst wave = [...frontier].sort((a, b) => (indexOf.get(a) ?? 0) - (indexOf.get(b) ?? 0));\n\t\twaves.push(wave);\n\t\tconst next: string[] = [];\n\t\tfor (const node of wave) {\n\t\t\tprocessed++;\n\t\t\tfor (const neighbor of adjacency.get(node) ?? []) {\n\t\t\t\tconst degree = (remaining.get(neighbor) ?? 0) - 1;\n\t\t\t\tremaining.set(neighbor, degree);\n\t\t\t\tif (degree === 0) {\n\t\t\t\t\tnext.push(neighbor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfrontier = next;\n\t}\n\n\tif (processed < orderedNodes.length) {\n\t\thasCycle = true;\n\t\tconst placed = new Set(waves.flat());\n\t\tconst leftover = orderedNodes.filter((node) => !placed.has(node));\n\t\tif (leftover.length > 0) {\n\t\t\twaves.push(leftover);\n\t\t}\n\t}\n\n\tconst nodeCount = orderedNodes.length;\n\tconst width = waves.reduce((max, wave) => Math.max(max, wave.length), 0);\n\tconst criticalDepth = waves.length;\n\tconst maxEdges = nodeCount > 1 ? (nodeCount * (nodeCount - 1)) / 2 : 0;\n\tconst couplingDensity = maxEdges > 0 ? Math.min(1, edgeCount / maxEdges) : 0;\n\tconst parallelRatio = nodeCount > 0 ? width / nodeCount : 0;\n\n\tconst features: AdaptiveTopologyFeatures = {\n\t\tnodeCount,\n\t\tedgeCount,\n\t\twidth,\n\t\tcriticalDepth,\n\t\tcouplingDensity,\n\t\tparallelRatio,\n\t};\n\n\tconst roots = orderedNodes.filter((node) => (inDegree.get(node) ?? 0) === 0);\n\tconst stats: GraphStats = {\n\t\trootCount: roots.length,\n\t\thasFanOutRoot: roots.some((node) => (outDegree.get(node) ?? 0) > 1),\n\t\thasFanInSink: orderedNodes.some((node) => (outDegree.get(node) ?? 0) === 0 && (inDegree.get(node) ?? 0) > 1),\n\t\thasCycle,\n\t};\n\n\tconst { topology, reason } = classifyTopology(features, stats);\n\treturn { topology, features, waves, reason, hasCycle };\n}\n\n// ============================================================================\n// Ouroboros preference detection\n// ============================================================================\n\nexport type OuroborosMode = \"always\" | \"auto\" | \"off\";\n\nexport interface OuroborosIndicators {\n\tmcp: boolean;\n\tskills: boolean;\n\tbinary: boolean;\n}\n\nexport interface OuroborosPreference {\n\tmode: OuroborosMode;\n\t/** True when not off and at least one indicator is present. */\n\tpreferred: boolean;\n\t/** True when any indicator is present (mcp/skills/binary). */\n\tavailable: boolean;\n\tfallback: \"ouroboros\" | \"native\";\n\tindicators: OuroborosIndicators;\n\treason: string;\n}\n\nexport interface OuroborosDetectionInput {\n\tenv?: AdaptiveEnv;\n\tagentDir?: string;\n\tcwd?: string;\n\thome?: string;\n\t/** Injectable existence check (defaults to fs.existsSync); used for the binary indicator. */\n\texists?: (path: string) => boolean;\n}\n\nfunction resolveOuroborosMode(env: AdaptiveEnv): OuroborosMode {\n\tconst raw = normalizeFlag(env.OMK_OUROBOROS);\n\tif (raw === \"off\" || raw === \"0\" || raw === \"false\" || raw === \"no\") {\n\t\treturn \"off\";\n\t}\n\tif (raw === \"auto\") {\n\t\treturn \"auto\";\n\t}\n\treturn \"always\"; // default, also \"always\" | \"1\" | \"true\" | \"on\" | unset\n}\n\nfunction safeExists(exists: (path: string) => boolean, path: string): boolean {\n\ttry {\n\t\treturn exists(path);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction detectMcpIndicator(agentDir: string, exists: (path: string) => boolean): boolean {\n\tconst mcpPath = join(agentDir, \"mcp.json\");\n\tif (!safeExists(exists, mcpPath)) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst parsed = JSON.parse(readFileSync(mcpPath, \"utf-8\")) as Record<string, unknown>;\n\t\tconst serversValue = parsed.mcpServers ?? parsed.servers ?? parsed;\n\t\tif (serversValue && typeof serversValue === \"object\") {\n\t\t\treturn Object.keys(serversValue as Record<string, unknown>).some((key) =>\n\t\t\t\tkey.toLowerCase().includes(\"ouroboros\"),\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction detectSkillsIndicator(agentDir: string, exists: (path: string) => boolean): boolean {\n\tconst skillsDir = join(agentDir, \"skills\");\n\tif (!safeExists(exists, skillsDir)) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn readdirSync(skillsDir).some((name) => name.toLowerCase().startsWith(\"ouroboros-\"));\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction detectBinaryIndicator(home: string, exists: (path: string) => boolean): boolean {\n\treturn safeExists(exists, join(home, \".local\", \"bin\", \"ouroboros\"));\n}\n\n/**\n * Detect whether the Ouroboros runtime should be preferred.\n *\n * Presence-only: never throws, performs no secret reads. When indicators are\n * absent the preference falls back to the native runtime.\n */\nexport function detectOuroborosPreference(input: OuroborosDetectionInput = {}): OuroborosPreference {\n\tconst env = input.env ?? {};\n\tconst exists = input.exists ?? existsSync;\n\tconst home = input.home ?? env.HOME ?? env.USERPROFILE ?? homedir();\n\tconst agentDir = input.agentDir;\n\n\tconst mode = resolveOuroborosMode(env);\n\n\tconst indicators: OuroborosIndicators = {\n\t\tmcp: agentDir ? detectMcpIndicator(agentDir, exists) : false,\n\t\tskills: agentDir ? detectSkillsIndicator(agentDir, exists) : false,\n\t\tbinary: detectBinaryIndicator(home, exists),\n\t};\n\n\tconst available = indicators.mcp || indicators.skills || indicators.binary;\n\tconst preferred = mode !== \"off\" && available;\n\tconst fallback: OuroborosPreference[\"fallback\"] = preferred ? \"ouroboros\" : \"native\";\n\n\tlet reason: string;\n\tif (mode === \"off\") {\n\t\treason = \"ouroboros disabled via OMK_OUROBOROS\";\n\t} else if (available) {\n\t\tconst present = [\n\t\t\tindicators.mcp ? \"mcp\" : undefined,\n\t\t\tindicators.skills ? \"skills\" : undefined,\n\t\t\tindicators.binary ? \"binary\" : undefined,\n\t\t].filter((value): value is string => value !== undefined);\n\t\treason = `ouroboros preferred (${present.join(\", \")})`;\n\t} else {\n\t\treason = \"ouroboros unavailable; falling back to native runtime\";\n\t}\n\n\treturn { mode, preferred, available, fallback, indicators, reason };\n}\n\n// ============================================================================\n// First-run adaptive plan\n// ============================================================================\n\nexport const ADAPTIVE_PLAN_VERSION = 1;\nexport const DEFAULT_ADAPTIVE_RUNTIME = \"omk-parallel-orchestrator\";\n\n/** Startup DAG used to seed the first-run adaptive plan. */\nexport const OMK_STARTUP_DAG_NODES: readonly string[] = [\n\t\"session_start\",\n\t\"resources_discover\",\n\t\"model_select\",\n\t\"run_loop\",\n];\n\nexport const OMK_STARTUP_DAG_EDGES: readonly AdaptiveEdge[] = [\n\t{ from: \"session_start\", to: \"resources_discover\" },\n\t{ from: \"resources_discover\", to: \"model_select\" },\n\t{ from: \"model_select\", to: \"run_loop\" },\n];\n\nexport interface FirstRunAdaptivePlanInput {\n\tnodes?: readonly string[];\n\tedges?: readonly AdaptiveEdge[];\n\tenv?: AdaptiveEnv;\n\tagentDir?: string;\n\tcwd?: string;\n\thome?: string;\n\truntime?: string;\n\t/** Injectable clock (defaults to Date.now) for deterministic tests. */\n\tnow?: () => number;\n\texists?: (path: string) => boolean;\n}\n\nexport interface FirstRunAdaptivePlan {\n\tversion: number;\n\truntime: string;\n\tcreatedAt: string;\n\tcwd: string | null;\n\ttopology: AdaptiveTopologyDecision;\n\theadroom: { enabled: boolean; threshold: number };\n\touroboros: OuroborosPreference;\n}\n\n/** Build a JSON-serializable first-run adaptive plan. Pure. */\nexport function createFirstRunAdaptivePlan(input: FirstRunAdaptivePlanInput = {}): FirstRunAdaptivePlan {\n\tconst env = input.env ?? {};\n\tconst now = input.now ?? Date.now;\n\tconst nodes = input.nodes ?? OMK_STARTUP_DAG_NODES;\n\tconst edges = input.edges ?? OMK_STARTUP_DAG_EDGES;\n\n\tconst topology = computeAdaptiveTopology(nodes, edges);\n\tconst threshold = resolveAdaptiveHeadroomThreshold(env);\n\tconst headroom = {\n\t\tenabled: threshold > 0,\n\t\tthreshold: threshold > 0 ? threshold : DEFAULT_HEADROOM_THRESHOLD,\n\t};\n\tconst ouroboros = detectOuroborosPreference({\n\t\tenv,\n\t\tagentDir: input.agentDir,\n\t\tcwd: input.cwd,\n\t\thome: input.home,\n\t\texists: input.exists,\n\t});\n\n\treturn {\n\t\tversion: ADAPTIVE_PLAN_VERSION,\n\t\truntime: input.runtime ?? DEFAULT_ADAPTIVE_RUNTIME,\n\t\tcreatedAt: new Date(now()).toISOString(),\n\t\tcwd: input.cwd ?? null,\n\t\ttopology,\n\t\theadroom,\n\t\touroboros,\n\t};\n}\n\nexport interface WriteAdaptivePlanInput extends FirstRunAdaptivePlanInput {\n\tagentDir: string;\n\t/** Force rewrite even if the artifact already exists. */\n\trefresh?: boolean;\n}\n\nexport interface WriteAdaptivePlanResult {\n\tpath: string;\n\twritten: boolean;\n\tplan?: FirstRunAdaptivePlan;\n\treason: \"created\" | \"refreshed\" | \"exists\" | \"error\";\n\terror?: string;\n}\n\n/** Path of the first-run adaptive plan artifact. */\nexport function getAdaptivePlanPath(agentDir: string): string {\n\treturn join(agentDir, \"runs\", \"adaptive-runtime-plan.json\");\n}\n\nfunction isTruthyFlag(value: string | undefined): boolean {\n\tconst raw = normalizeFlag(value);\n\treturn raw === \"1\" || raw === \"true\" || raw === \"yes\" || raw === \"on\";\n}\n\n/**\n * Idempotently write the first-run adaptive plan. Non-fatal: any error is\n * captured in the result rather than thrown. Skips writing when the artifact\n * already exists unless `refresh` (or `OMK_ADAPTIVE_PLAN_REFRESH=1`) is set.\n */\nexport function writeFirstRunAdaptivePlan(input: WriteAdaptivePlanInput): WriteAdaptivePlanResult {\n\tconst env = input.env ?? {};\n\tconst exists = input.exists ?? existsSync;\n\tconst path = getAdaptivePlanPath(input.agentDir);\n\tconst refresh = input.refresh ?? isTruthyFlag(env.OMK_ADAPTIVE_PLAN_REFRESH);\n\n\ttry {\n\t\tconst alreadyExists = safeExists(exists, path);\n\t\tif (alreadyExists && !refresh) {\n\t\t\treturn { path, written: false, reason: \"exists\" };\n\t\t}\n\t\tconst plan = createFirstRunAdaptivePlan(input);\n\t\tmkdirSync(dirname(path), { recursive: true });\n\t\twriteFileSync(path, `${JSON.stringify(plan, null, 2)}\\n`, \"utf-8\");\n\t\treturn { path, written: true, plan, reason: alreadyExists ? \"refreshed\" : \"created\" };\n\t} catch (error) {\n\t\treturn { path, written: false, reason: \"error\", error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n"]}
|