open-multi-agent-kit 0.80.7 → 0.80.8
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 +4 -30
- package/README.md +80 -38
- package/dist/agents/jailbreak/index.d.ts +7 -0
- package/dist/agents/jailbreak/index.d.ts.map +1 -0
- package/dist/agents/jailbreak/index.js +7 -0
- package/dist/agents/jailbreak/index.js.map +1 -0
- package/dist/agents/jailbreak/subagent-f.d.ts +44 -0
- package/dist/agents/jailbreak/subagent-f.d.ts.map +1 -0
- package/dist/agents/jailbreak/subagent-f.js +60 -0
- package/dist/agents/jailbreak/subagent-f.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/register-bedrock.js +2 -2
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/ci/verify-reporter.d.ts +22 -0
- package/dist/ci/verify-reporter.d.ts.map +1 -0
- package/dist/ci/verify-reporter.js +50 -0
- package/dist/ci/verify-reporter.js.map +1 -0
- package/dist/cli/args.d.ts +4 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +7 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/jailbreak-args.d.ts +26 -0
- package/dist/cli/jailbreak-args.d.ts.map +1 -0
- package/dist/cli/jailbreak-args.js +86 -0
- package/dist/cli/jailbreak-args.js.map +1 -0
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +1 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +1 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/commands/doctor-provider.d.ts +19 -0
- package/dist/commands/doctor-provider.d.ts.map +1 -0
- package/dist/commands/doctor-provider.js +123 -0
- package/dist/commands/doctor-provider.js.map +1 -0
- package/dist/commands/jailbreak.d.ts +49 -0
- package/dist/commands/jailbreak.d.ts.map +1 -0
- package/dist/commands/jailbreak.js +201 -0
- package/dist/commands/jailbreak.js.map +1 -0
- package/dist/config.d.ts +9 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -52
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +16 -27
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +185 -89
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +3 -6
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +7 -7
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +1 -0
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +1 -0
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/browser-use.d.ts +45 -0
- package/dist/core/browser-use.d.ts.map +1 -0
- package/dist/core/browser-use.js +70 -0
- package/dist/core/browser-use.js.map +1 -0
- package/dist/core/command-safety-parser.d.ts +77 -0
- package/dist/core/command-safety-parser.d.ts.map +1 -0
- package/dist/core/command-safety-parser.js +763 -0
- package/dist/core/command-safety-parser.js.map +1 -0
- package/dist/core/command-safety.d.ts.map +1 -1
- package/dist/core/command-safety.js +106 -3
- package/dist/core/command-safety.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +5 -21
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +3 -101
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +21 -656
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +2 -2
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/compactor.d.ts +42 -0
- package/dist/core/compactor.d.ts.map +1 -0
- package/dist/core/compactor.js +131 -0
- package/dist/core/compactor.js.map +1 -0
- package/dist/core/context-budget-compressors.d.ts +50 -0
- package/dist/core/context-budget-compressors.d.ts.map +1 -0
- package/dist/core/context-budget-compressors.js +166 -0
- package/dist/core/context-budget-compressors.js.map +1 -0
- package/dist/core/context-budget-governor-v2.d.ts +7 -0
- package/dist/core/context-budget-governor-v2.d.ts.map +1 -0
- package/dist/core/context-budget-governor-v2.js +7 -0
- package/dist/core/context-budget-governor-v2.js.map +1 -0
- package/dist/core/context-budget-governor.d.ts +67 -0
- package/dist/core/context-budget-governor.d.ts.map +1 -0
- package/dist/core/context-budget-governor.js +224 -0
- package/dist/core/context-budget-governor.js.map +1 -0
- package/dist/core/context-budget-headroom-candidates.d.ts +3 -0
- package/dist/core/context-budget-headroom-candidates.d.ts.map +1 -0
- package/dist/core/context-budget-headroom-candidates.js +85 -0
- package/dist/core/context-budget-headroom-candidates.js.map +1 -0
- package/dist/core/context-budget-headroom-types.d.ts +67 -0
- package/dist/core/context-budget-headroom-types.d.ts.map +1 -0
- package/dist/core/context-budget-headroom-types.js +46 -0
- package/dist/core/context-budget-headroom-types.js.map +1 -0
- package/dist/core/context-budget-headroom.d.ts +5 -0
- package/dist/core/context-budget-headroom.d.ts.map +1 -0
- package/dist/core/context-budget-headroom.js +123 -0
- package/dist/core/context-budget-headroom.js.map +1 -0
- package/dist/core/context-budget-relevance.d.ts +46 -0
- package/dist/core/context-budget-relevance.d.ts.map +1 -0
- package/dist/core/context-budget-relevance.js +329 -0
- package/dist/core/context-budget-relevance.js.map +1 -0
- package/dist/core/context-budget-system-prompt-items.d.ts +19 -0
- package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -0
- package/dist/core/context-budget-system-prompt-items.js +143 -0
- package/dist/core/context-budget-system-prompt-items.js.map +1 -0
- package/dist/core/context-budget-system-prompt.d.ts +31 -0
- package/dist/core/context-budget-system-prompt.d.ts.map +1 -0
- package/dist/core/context-budget-system-prompt.js +87 -0
- package/dist/core/context-budget-system-prompt.js.map +1 -0
- package/dist/core/context-budget-token-counter.d.ts +34 -0
- package/dist/core/context-budget-token-counter.d.ts.map +1 -0
- package/dist/core/context-budget-token-counter.js +315 -0
- package/dist/core/context-budget-token-counter.js.map +1 -0
- package/dist/core/context-budget-v2-coverage.d.ts +5 -0
- package/dist/core/context-budget-v2-coverage.d.ts.map +1 -0
- package/dist/core/context-budget-v2-coverage.js +58 -0
- package/dist/core/context-budget-v2-coverage.js.map +1 -0
- package/dist/core/context-budget-v2-plan-hash.d.ts +12 -0
- package/dist/core/context-budget-v2-plan-hash.d.ts.map +1 -0
- package/dist/core/context-budget-v2-plan-hash.js +38 -0
- package/dist/core/context-budget-v2-plan-hash.js.map +1 -0
- package/dist/core/context-budget-v2-planner.d.ts +3 -0
- package/dist/core/context-budget-v2-planner.d.ts.map +1 -0
- package/dist/core/context-budget-v2-planner.js +143 -0
- package/dist/core/context-budget-v2-planner.js.map +1 -0
- package/dist/core/context-budget-v2-scoring.d.ts +14 -0
- package/dist/core/context-budget-v2-scoring.d.ts.map +1 -0
- package/dist/core/context-budget-v2-scoring.js +114 -0
- package/dist/core/context-budget-v2-scoring.js.map +1 -0
- package/dist/core/context-budget-v2-selection.d.ts +32 -0
- package/dist/core/context-budget-v2-selection.d.ts.map +1 -0
- package/dist/core/context-budget-v2-selection.js +158 -0
- package/dist/core/context-budget-v2-selection.js.map +1 -0
- package/dist/core/context-budget-v2-tiers.d.ts +15 -0
- package/dist/core/context-budget-v2-tiers.d.ts.map +1 -0
- package/dist/core/context-budget-v2-tiers.js +68 -0
- package/dist/core/context-budget-v2-tiers.js.map +1 -0
- package/dist/core/context-budget-v2-types.d.ts +92 -0
- package/dist/core/context-budget-v2-types.d.ts.map +1 -0
- package/dist/core/context-budget-v2-types.js +24 -0
- package/dist/core/context-budget-v2-types.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/diagnostics.d.ts +4 -0
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/domain-confidence.d.ts +9 -0
- package/dist/core/domain-confidence.d.ts.map +1 -0
- package/dist/core/domain-confidence.js +39 -0
- package/dist/core/domain-confidence.js.map +1 -0
- package/dist/core/domain-dispatch.d.ts +44 -0
- package/dist/core/domain-dispatch.d.ts.map +1 -0
- package/dist/core/domain-dispatch.js +118 -0
- package/dist/core/domain-dispatch.js.map +1 -0
- package/dist/core/domain-loadouts.d.ts +76 -0
- package/dist/core/domain-loadouts.d.ts.map +1 -0
- package/dist/core/domain-loadouts.js +981 -0
- package/dist/core/domain-loadouts.js.map +1 -0
- package/dist/core/domain-registry.d.ts +7 -0
- package/dist/core/domain-registry.d.ts.map +1 -0
- package/dist/core/domain-registry.js +11 -0
- package/dist/core/domain-registry.js.map +1 -0
- package/dist/core/domain-router.d.ts +16 -0
- package/dist/core/domain-router.d.ts.map +1 -0
- package/dist/core/domain-router.js +24 -0
- package/dist/core/domain-router.js.map +1 -0
- package/dist/core/domain-score.d.ts +13 -0
- package/dist/core/domain-score.d.ts.map +1 -0
- package/dist/core/domain-score.js +48 -0
- package/dist/core/domain-score.js.map +1 -0
- package/dist/core/domain-trigger-match.d.ts +14 -0
- package/dist/core/domain-trigger-match.d.ts.map +1 -0
- package/dist/core/domain-trigger-match.js +51 -0
- package/dist/core/domain-trigger-match.js.map +1 -0
- package/dist/core/domain-types.d.ts +30 -0
- package/dist/core/domain-types.d.ts.map +1 -0
- package/dist/core/domain-types.js +2 -0
- package/dist/core/domain-types.js.map +1 -0
- package/dist/core/exact-cache-policy.d.ts +8 -0
- package/dist/core/exact-cache-policy.d.ts.map +1 -1
- package/dist/core/exact-cache-policy.js +9 -0
- package/dist/core/exact-cache-policy.js.map +1 -1
- package/dist/core/exec.d.ts +0 -2
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +0 -1
- package/dist/core/exec.js.map +1 -1
- package/dist/core/export-html/index.d.ts +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.js +1 -3
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/builtin/command-safety-gate.d.ts +3 -0
- package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -1
- package/dist/core/extensions/builtin/command-safety-gate.js +15 -3
- package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -1
- package/dist/core/extensions/builtin/todo-checklist.d.ts +20 -0
- package/dist/core/extensions/builtin/todo-checklist.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todo-checklist.js +70 -0
- package/dist/core/extensions/builtin/todo-checklist.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +4 -4
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +57 -92
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +7 -35
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/headroom.d.ts +45 -0
- package/dist/core/headroom.d.ts.map +1 -0
- package/dist/core/headroom.js +171 -0
- package/dist/core/headroom.js.map +1 -0
- package/dist/core/hook-inventory.d.ts +4 -2
- package/dist/core/hook-inventory.d.ts.map +1 -1
- package/dist/core/hook-inventory.js +80 -11
- package/dist/core/hook-inventory.js.map +1 -1
- package/dist/core/hooks/fail-closed.d.ts +4 -1
- package/dist/core/hooks/fail-closed.d.ts.map +1 -1
- package/dist/core/hooks/fail-closed.js +79 -5
- package/dist/core/hooks/fail-closed.js.map +1 -1
- package/dist/core/hooks/index.d.ts +2 -2
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js +1 -1
- package/dist/core/hooks/index.js.map +1 -1
- package/dist/core/hooks/types.d.ts +9 -0
- package/dist/core/hooks/types.d.ts.map +1 -1
- package/dist/core/hooks/types.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -14
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -31
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lean-ctx.d.ts +99 -0
- package/dist/core/lean-ctx.d.ts.map +1 -0
- package/dist/core/lean-ctx.js +225 -0
- package/dist/core/lean-ctx.js.map +1 -0
- package/dist/core/loadout-compose.d.ts +53 -0
- package/dist/core/loadout-compose.d.ts.map +1 -0
- package/dist/core/loadout-compose.js +172 -0
- package/dist/core/loadout-compose.js.map +1 -0
- package/dist/core/loadout-policy-bridge.d.ts +22 -0
- package/dist/core/loadout-policy-bridge.d.ts.map +1 -0
- package/dist/core/loadout-policy-bridge.js +52 -0
- package/dist/core/loadout-policy-bridge.js.map +1 -0
- package/dist/core/loadout-runtime.d.ts +22 -0
- package/dist/core/loadout-runtime.d.ts.map +1 -1
- package/dist/core/loadout-runtime.js +41 -5
- package/dist/core/loadout-runtime.js.map +1 -1
- package/dist/core/loadout-safety.d.ts +55 -0
- package/dist/core/loadout-safety.d.ts.map +1 -0
- package/dist/core/loadout-safety.js +213 -0
- package/dist/core/loadout-safety.js.map +1 -0
- package/dist/core/loadouts.d.ts +4 -2
- package/dist/core/loadouts.d.ts.map +1 -1
- package/dist/core/loadouts.js +116 -5
- package/dist/core/loadouts.js.map +1 -1
- package/dist/core/loop-gates.d.ts +48 -0
- package/dist/core/loop-gates.d.ts.map +1 -0
- package/dist/core/loop-gates.js +352 -0
- package/dist/core/loop-gates.js.map +1 -0
- package/dist/core/loop-registry.d.ts +77 -0
- package/dist/core/loop-registry.d.ts.map +1 -0
- package/dist/core/loop-registry.js +831 -0
- package/dist/core/loop-registry.js.map +1 -0
- package/dist/core/loop-types.d.ts +194 -0
- package/dist/core/loop-types.d.ts.map +1 -0
- package/dist/core/loop-types.js +2 -0
- package/dist/core/loop-types.js.map +1 -0
- package/dist/core/mcp-inventory.d.ts +7 -0
- package/dist/core/mcp-inventory.d.ts.map +1 -1
- package/dist/core/mcp-inventory.js +5 -1
- package/dist/core/mcp-inventory.js.map +1 -1
- package/dist/core/mcp-presets.d.ts +43 -2
- package/dist/core/mcp-presets.d.ts.map +1 -1
- package/dist/core/mcp-presets.js +298 -2
- package/dist/core/mcp-presets.js.map +1 -1
- package/dist/core/messages.d.ts +3 -3
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/metrics-sampler.d.ts +11 -0
- package/dist/core/metrics-sampler.d.ts.map +1 -1
- package/dist/core/metrics-sampler.js +52 -13
- package/dist/core/metrics-sampler.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -2
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +18 -41
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -2
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-gallery-identity.d.ts +7 -0
- package/dist/core/package-gallery-identity.d.ts.map +1 -0
- package/dist/core/package-gallery-identity.js +31 -0
- package/dist/core/package-gallery-identity.js.map +1 -0
- package/dist/core/package-gallery-install.d.ts +6 -0
- package/dist/core/package-gallery-install.d.ts.map +1 -0
- package/dist/core/package-gallery-install.js +59 -0
- package/dist/core/package-gallery-install.js.map +1 -0
- package/dist/core/package-gallery-manifest.d.ts +13 -0
- package/dist/core/package-gallery-manifest.d.ts.map +1 -0
- package/dist/core/package-gallery-manifest.js +183 -0
- package/dist/core/package-gallery-manifest.js.map +1 -0
- package/dist/core/package-gallery-trial.d.ts +4 -0
- package/dist/core/package-gallery-trial.d.ts.map +1 -0
- package/dist/core/package-gallery-trial.js +55 -0
- package/dist/core/package-gallery-trial.js.map +1 -0
- package/dist/core/package-gallery-types.d.ts +71 -0
- package/dist/core/package-gallery-types.d.ts.map +1 -0
- package/dist/core/package-gallery-types.js +2 -0
- package/dist/core/package-gallery-types.js.map +1 -0
- package/dist/core/package-gallery.d.ts +5 -123
- package/dist/core/package-gallery.d.ts.map +1 -1
- package/dist/core/package-gallery.js +5 -391
- package/dist/core/package-gallery.js.map +1 -1
- package/dist/core/package-manager.d.ts +0 -69
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +69 -367
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/package-procurement.d.ts +4 -4
- package/dist/core/package-procurement.d.ts.map +1 -1
- package/dist/core/package-procurement.js +29 -17
- package/dist/core/package-procurement.js.map +1 -1
- package/dist/core/provider-attribution.d.ts +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/read-anchors.d.ts +1 -1
- package/dist/core/read-anchors.d.ts.map +1 -1
- package/dist/core/read-anchors.js +1 -1
- package/dist/core/read-anchors.js.map +1 -1
- package/dist/core/recovery-checkpoint.d.ts +2 -2
- package/dist/core/recovery-checkpoint.d.ts.map +1 -1
- package/dist/core/recovery-checkpoint.js +2 -2
- package/dist/core/recovery-checkpoint.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts +1 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +2 -30
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +12 -20
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +66 -90
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sandbox-policy-v2.d.ts +49 -0
- package/dist/core/sandbox-policy-v2.d.ts.map +1 -0
- package/dist/core/sandbox-policy-v2.js +368 -0
- package/dist/core/sandbox-policy-v2.js.map +1 -0
- package/dist/core/sdk.d.ts +10 -78
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +97 -139
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/semantic-cache-policy.d.ts +7 -1
- package/dist/core/semantic-cache-policy.d.ts.map +1 -1
- package/dist/core/semantic-cache-policy.js +8 -0
- package/dist/core/semantic-cache-policy.js.map +1 -1
- package/dist/core/session-manager.d.ts +2 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +5 -6
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -18
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +2 -48
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +1 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +46 -5
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-orchestration.d.ts +73 -0
- package/dist/core/subagent-orchestration.d.ts.map +1 -0
- package/dist/core/subagent-orchestration.js +408 -0
- package/dist/core/subagent-orchestration.js.map +1 -0
- package/dist/core/system-prompt.d.ts +5 -4
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +57 -36
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/timings.d.ts +0 -4
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +0 -4
- package/dist/core/timings.js.map +1 -1
- package/dist/core/todo-state.d.ts +53 -0
- package/dist/core/todo-state.d.ts.map +1 -0
- package/dist/core/todo-state.js +87 -0
- package/dist/core/todo-state.js.map +1 -0
- package/dist/core/token-optimizer.d.ts +58 -0
- package/dist/core/token-optimizer.d.ts.map +1 -0
- package/dist/core/token-optimizer.js +179 -0
- package/dist/core/token-optimizer.js.map +1 -0
- package/dist/core/tools/bash.d.ts +8 -9
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +9 -8
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +3 -14
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +4 -25
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +1 -4
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -4
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +1 -4
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +2 -5
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +2 -2
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +1 -4
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +1 -4
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts +2 -14
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +4 -28
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/write.d.ts +2 -4
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +4 -4
- package/dist/core/tools/write.js.map +1 -1
- package/dist/encoding/index.d.ts +6 -0
- package/dist/encoding/index.d.ts.map +1 -0
- package/dist/encoding/index.js +6 -0
- package/dist/encoding/index.js.map +1 -0
- package/dist/encoding/l4-encoder.d.ts +96 -0
- package/dist/encoding/l4-encoder.d.ts.map +1 -0
- package/dist/encoding/l4-encoder.js +474 -0
- package/dist/encoding/l4-encoder.js.map +1 -0
- package/dist/fuzzing/index.d.ts +6 -0
- package/dist/fuzzing/index.d.ts.map +1 -0
- package/dist/fuzzing/index.js +6 -0
- package/dist/fuzzing/index.js.map +1 -0
- package/dist/fuzzing/mutation-engine.d.ts +93 -0
- package/dist/fuzzing/mutation-engine.d.ts.map +1 -0
- package/dist/fuzzing/mutation-engine.js +244 -0
- package/dist/fuzzing/mutation-engine.js.map +1 -0
- package/dist/guardrails/audit-logger.d.ts +4 -0
- package/dist/guardrails/audit-logger.d.ts.map +1 -0
- package/dist/guardrails/audit-logger.js +28 -0
- package/dist/guardrails/audit-logger.js.map +1 -0
- package/dist/guardrails/evidence-system.d.ts +61 -0
- package/dist/guardrails/evidence-system.d.ts.map +1 -0
- package/dist/guardrails/evidence-system.js +302 -0
- package/dist/guardrails/evidence-system.js.map +1 -0
- package/dist/guardrails/freedomd-adapter.d.ts +16 -0
- package/dist/guardrails/freedomd-adapter.d.ts.map +1 -0
- package/dist/guardrails/freedomd-adapter.js +87 -0
- package/dist/guardrails/freedomd-adapter.js.map +1 -0
- package/dist/index.d.ts +4 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -17
- package/dist/index.js.map +1 -1
- package/dist/jailbreak-extension.d.ts +48 -0
- package/dist/jailbreak-extension.d.ts.map +1 -0
- package/dist/jailbreak-extension.js +47 -0
- package/dist/jailbreak-extension.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +0 -37
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +6 -414
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +1 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-box.d.ts +15 -0
- package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-box.js +55 -0
- package/dist/modes/interactive/components/control-panel-box.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient-motion.js +2 -36
- package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient.d.ts +1 -0
- package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient.js +6 -5
- package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-layout.d.ts +23 -0
- package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-layout.js +165 -0
- package/dist/modes/interactive/components/control-panel-layout.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +5 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.js +20 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -0
- package/dist/modes/interactive/components/control-panel.d.ts +8 -31
- package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel.js +38 -169
- package/dist/modes/interactive/components/control-panel.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +14 -22
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +1 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -9
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +0 -2
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -2
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +2 -2
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +13 -47
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +118 -193
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +1 -1
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts +1 -2
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +2 -11
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -7
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +48 -7
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/todo-checklist.d.ts +31 -0
- package/dist/modes/interactive/components/todo-checklist.d.ts.map +1 -0
- package/dist/modes/interactive/components/todo-checklist.js +121 -0
- package/dist/modes/interactive/components/todo-checklist.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +1 -1
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -8
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +74 -232
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/omk-control-grid-dark.json +65 -77
- package/dist/modes/interactive/theme/omk-neon-control.json +90 -0
- package/dist/modes/interactive/theme/rust-forge.json +14 -24
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +22 -45
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +2 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +0 -4
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -2
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modules/index.d.ts +8 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +7 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/lrl-bypass.d.ts +40 -0
- package/dist/modules/lrl-bypass.d.ts.map +1 -0
- package/dist/modules/lrl-bypass.js +84 -0
- package/dist/modules/lrl-bypass.js.map +1 -0
- package/dist/modules/lrl-deps.d.ts +38 -0
- package/dist/modules/lrl-deps.d.ts.map +1 -0
- package/dist/modules/lrl-deps.js +128 -0
- package/dist/modules/lrl-deps.js.map +1 -0
- package/dist/multiturn/easl-chain.d.ts +113 -0
- package/dist/multiturn/easl-chain.d.ts.map +1 -0
- package/dist/multiturn/easl-chain.js +351 -0
- package/dist/multiturn/easl-chain.js.map +1 -0
- package/dist/multiturn/index.d.ts +6 -0
- package/dist/multiturn/index.d.ts.map +1 -0
- package/dist/multiturn/index.js +6 -0
- package/dist/multiturn/index.js.map +1 -0
- package/dist/orchestration/lane-grant-auditor.d.ts +4 -0
- package/dist/orchestration/lane-grant-auditor.d.ts.map +1 -0
- package/dist/orchestration/lane-grant-auditor.js +87 -0
- package/dist/orchestration/lane-grant-auditor.js.map +1 -0
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +48 -113
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/routing/fallback-router.d.ts +123 -0
- package/dist/routing/fallback-router.d.ts.map +1 -0
- package/dist/routing/fallback-router.js +355 -0
- package/dist/routing/fallback-router.js.map +1 -0
- package/dist/routing/index.d.ts +6 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +6 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/types/evidence.d.ts +117 -0
- package/dist/types/evidence.d.ts.map +1 -0
- package/dist/types/evidence.js +8 -0
- package/dist/types/evidence.js.map +1 -0
- package/dist/types/guardrails.d.ts +61 -0
- package/dist/types/guardrails.d.ts.map +1 -0
- package/dist/types/guardrails.js +9 -0
- package/dist/types/guardrails.js.map +1 -0
- package/dist/types/jailbreak.d.ts +246 -0
- package/dist/types/jailbreak.d.ts.map +1 -0
- package/dist/types/jailbreak.js +8 -0
- package/dist/types/jailbreak.js.map +1 -0
- package/dist/types/lane-grant.d.ts +58 -0
- package/dist/types/lane-grant.d.ts.map +1 -0
- package/dist/types/lane-grant.js +9 -0
- package/dist/types/lane-grant.js.map +1 -0
- package/dist/utils/jailbreak/common.d.ts +63 -0
- package/dist/utils/jailbreak/common.d.ts.map +1 -0
- package/dist/utils/jailbreak/common.js +130 -0
- package/dist/utils/jailbreak/common.js.map +1 -0
- package/dist/utils/jailbreak/index.d.ts +7 -0
- package/dist/utils/jailbreak/index.d.ts.map +1 -0
- package/dist/utils/jailbreak/index.js +7 -0
- package/dist/utils/jailbreak/index.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -1
- package/dist/utils/windows-self-update.js +1 -1
- package/dist/utils/windows-self-update.js.map +1 -1
- package/docs/compaction.md +8 -21
- package/docs/custom-provider.md +2 -2
- package/docs/development.md +1 -1
- package/docs/extensions.md +11 -11
- package/docs/loadout-domains/README.md +70 -0
- package/docs/loadout-domains/ai-agent-ops.md +94 -0
- package/docs/loadout-domains/backend-api.md +116 -0
- package/docs/loadout-domains/data-science.md +100 -0
- package/docs/loadout-domains/devops-infra.md +85 -0
- package/docs/loadout-domains/docs-writing.md +92 -0
- package/docs/loadout-domains/frontend-ui.md +128 -0
- package/docs/loadout-domains/general.md +62 -0
- package/docs/loadout-domains/mobile.md +84 -0
- package/docs/loadout-domains/qa-testing.md +87 -0
- package/docs/loadout-domains/research.md +80 -0
- package/docs/loadout-domains/security-audit.md +97 -0
- package/docs/packages.md +7 -48
- package/docs/prompt-templates.md +0 -2
- package/docs/sdk.md +3 -3
- package/docs/security.md +145 -0
- package/docs/session-format.md +1 -1
- package/docs/themes.md +8 -7
- package/docs/tui.md +14 -14
- package/docs/usage.md +6 -16
- package/examples/extensions/README.md +2 -2
- package/examples/extensions/aside-computer-use/README.md +114 -0
- package/examples/extensions/aside-computer-use/action-scoring.ts +122 -0
- package/examples/extensions/aside-computer-use/assertions.ts +380 -0
- package/examples/extensions/aside-computer-use/controller.ts +491 -0
- package/examples/extensions/aside-computer-use/evidence.ts +229 -0
- package/examples/extensions/aside-computer-use/golden-trace.ts +141 -0
- package/examples/extensions/aside-computer-use/index.ts +76 -0
- package/examples/extensions/aside-computer-use/mcp-client.ts +381 -0
- package/examples/extensions/aside-computer-use/observation-snapshot.ts +121 -0
- package/examples/extensions/aside-computer-use/package.json +16 -0
- package/examples/extensions/aside-computer-use/policy.ts +257 -0
- package/examples/extensions/aside-computer-use/risk-authorize.ts +200 -0
- package/examples/extensions/aside-computer-use/risk-classifier.ts +205 -0
- package/examples/extensions/aside-computer-use/schema-fingerprint.ts +80 -0
- package/examples/extensions/aside-computer-use/session-binding.ts +161 -0
- package/examples/extensions/aside-computer-use/tools.ts +449 -0
- package/examples/extensions/aside-computer-use/types.ts +217 -0
- package/examples/extensions/aside-computer-use/url-origin.ts +132 -0
- package/examples/extensions/bash-spawn-hook.ts +1 -1
- package/examples/extensions/border-status-editor.ts +2 -2
- package/examples/extensions/built-in-tool-renderer.ts +1 -1
- package/examples/extensions/custom-compaction.ts +1 -1
- package/examples/extensions/custom-footer.ts +2 -2
- package/examples/extensions/custom-header.ts +8 -8
- package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/doom-overlay/README.md +1 -2
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +4 -4
- package/examples/extensions/doom-overlay/doom/doomgeneric_omk.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +2 -2
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/git-merge-and-resolve.ts +1 -1
- package/examples/extensions/github-issue-autocomplete.ts +1 -6
- package/examples/extensions/gondolin/index.ts +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +2 -2
- package/examples/extensions/hello.ts +1 -1
- package/examples/extensions/inline-bash.ts +1 -1
- package/examples/extensions/input-transform-streaming.ts +1 -1
- package/examples/extensions/input-transform.ts +2 -2
- package/examples/extensions/mac-system-theme.ts +1 -1
- package/examples/extensions/message-renderer.ts +1 -1
- package/examples/extensions/minimal-mode.ts +1 -1
- package/examples/extensions/modal-editor.ts +1 -1
- package/examples/extensions/overlay-qa-tests.ts +7 -7
- package/examples/extensions/overlay-test.ts +1 -1
- package/examples/extensions/plan-mode/index.ts +3 -3
- package/examples/extensions/preset.ts +4 -4
- package/examples/extensions/provider-payload.ts +6 -3
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/question.ts +1 -1
- package/examples/extensions/questionnaire.ts +1 -1
- package/examples/extensions/rpc-demo.ts +1 -1
- package/examples/extensions/sandbox/index.ts +2 -2
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/shutdown-command.ts +5 -5
- package/examples/extensions/snake.ts +1 -1
- package/examples/extensions/space-invaders.ts +1 -1
- package/examples/extensions/structured-output.ts +1 -1
- package/examples/extensions/subagent/agents.ts +2 -2
- package/examples/extensions/subagent/index.ts +19 -51
- package/examples/extensions/summarize.ts +2 -2
- package/examples/extensions/tic-tac-toe.ts +2 -2
- package/examples/extensions/todo.ts +2 -2
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/extensions/tools.ts +1 -1
- package/examples/extensions/truncated-tool.ts +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/working-indicator.ts +3 -3
- package/examples/rpc-extension-ui.ts +1 -9
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/07-context-files.ts +0 -2
- package/examples/sdk/12-full-control.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +1805 -0
- package/package.json +10 -32
- package/dist/core/compaction/pruner-policy.d.ts +0 -84
- package/dist/core/compaction/pruner-policy.d.ts.map +0 -1
- package/dist/core/compaction/pruner-policy.js +0 -273
- package/dist/core/compaction/pruner-policy.js.map +0 -1
- package/dist/core/context-graph-identity-resolution.d.ts +0 -114
- package/dist/core/context-graph-identity-resolution.d.ts.map +0 -1
- package/dist/core/context-graph-identity-resolution.js +0 -127
- package/dist/core/context-graph-identity-resolution.js.map +0 -1
- package/dist/core/context-graph-memory-store.d.ts +0 -153
- package/dist/core/context-graph-memory-store.d.ts.map +0 -1
- package/dist/core/context-graph-memory-store.js +0 -377
- package/dist/core/context-graph-memory-store.js.map +0 -1
- package/dist/core/context-graph-ontology-generation.d.ts +0 -104
- package/dist/core/context-graph-ontology-generation.d.ts.map +0 -1
- package/dist/core/context-graph-ontology-generation.js +0 -135
- package/dist/core/context-graph-ontology-generation.js.map +0 -1
- package/dist/core/context-graph-ontology-registry.d.ts +0 -766
- package/dist/core/context-graph-ontology-registry.d.ts.map +0 -1
- package/dist/core/context-graph-ontology-registry.js +0 -1133
- package/dist/core/context-graph-ontology-registry.js.map +0 -1
- package/dist/core/context-graph-policy.d.ts +0 -68
- package/dist/core/context-graph-policy.d.ts.map +0 -1
- package/dist/core/context-graph-policy.js +0 -221
- package/dist/core/context-graph-policy.js.map +0 -1
- package/dist/core/context-graph-reasoning.d.ts +0 -130
- package/dist/core/context-graph-reasoning.d.ts.map +0 -1
- package/dist/core/context-graph-reasoning.js +0 -442
- package/dist/core/context-graph-reasoning.js.map +0 -1
- package/dist/core/context-graph-retrieval.d.ts +0 -120
- package/dist/core/context-graph-retrieval.d.ts.map +0 -1
- package/dist/core/context-graph-retrieval.js +0 -288
- package/dist/core/context-graph-retrieval.js.map +0 -1
- package/dist/core/contract-verification.d.ts +0 -78
- package/dist/core/contract-verification.d.ts.map +0 -1
- package/dist/core/contract-verification.js +0 -110
- package/dist/core/contract-verification.js.map +0 -1
- package/dist/core/freedom/banner.d.ts +0 -14
- package/dist/core/freedom/banner.d.ts.map +0 -1
- package/dist/core/freedom/banner.js +0 -22
- package/dist/core/freedom/banner.js.map +0 -1
- package/dist/core/freedom/config.d.ts +0 -27
- package/dist/core/freedom/config.d.ts.map +0 -1
- package/dist/core/freedom/config.js +0 -216
- package/dist/core/freedom/config.js.map +0 -1
- package/dist/core/freedom/index.d.ts +0 -23
- package/dist/core/freedom/index.d.ts.map +0 -1
- package/dist/core/freedom/index.js +0 -19
- package/dist/core/freedom/index.js.map +0 -1
- package/dist/core/freedom/policy.d.ts +0 -42
- package/dist/core/freedom/policy.d.ts.map +0 -1
- package/dist/core/freedom/policy.js +0 -47
- package/dist/core/freedom/policy.js.map +0 -1
- package/dist/core/freedom/safety-floor.d.ts +0 -73
- package/dist/core/freedom/safety-floor.d.ts.map +0 -1
- package/dist/core/freedom/safety-floor.js +0 -275
- package/dist/core/freedom/safety-floor.js.map +0 -1
- package/dist/core/harness-control-events.d.ts +0 -91
- package/dist/core/harness-control-events.d.ts.map +0 -1
- package/dist/core/harness-control-events.js +0 -514
- package/dist/core/harness-control-events.js.map +0 -1
- package/dist/core/harness-control-replay.d.ts +0 -31
- package/dist/core/harness-control-replay.d.ts.map +0 -1
- package/dist/core/harness-control-replay.js +0 -187
- package/dist/core/harness-control-replay.js.map +0 -1
- package/dist/core/headroom-middleware.d.ts +0 -35
- package/dist/core/headroom-middleware.d.ts.map +0 -1
- package/dist/core/headroom-middleware.js +0 -166
- package/dist/core/headroom-middleware.js.map +0 -1
- package/dist/core/lean-context-middleware.d.ts +0 -12
- package/dist/core/lean-context-middleware.d.ts.map +0 -1
- package/dist/core/lean-context-middleware.js +0 -87
- package/dist/core/lean-context-middleware.js.map +0 -1
- package/dist/core/lean-context-policy.d.ts +0 -45
- package/dist/core/lean-context-policy.d.ts.map +0 -1
- package/dist/core/lean-context-policy.js +0 -108
- package/dist/core/lean-context-policy.js.map +0 -1
- package/dist/core/native-adoption-benchmark.d.ts +0 -166
- package/dist/core/native-adoption-benchmark.d.ts.map +0 -1
- package/dist/core/native-adoption-benchmark.js +0 -624
- package/dist/core/native-adoption-benchmark.js.map +0 -1
- package/dist/core/observability-trace.d.ts +0 -80
- package/dist/core/observability-trace.d.ts.map +0 -1
- package/dist/core/observability-trace.js +0 -140
- package/dist/core/observability-trace.js.map +0 -1
- package/dist/core/orchestration/checkpoint.d.ts +0 -83
- package/dist/core/orchestration/checkpoint.d.ts.map +0 -1
- package/dist/core/orchestration/checkpoint.js +0 -152
- package/dist/core/orchestration/checkpoint.js.map +0 -1
- package/dist/core/orchestration/errors.d.ts +0 -74
- package/dist/core/orchestration/errors.d.ts.map +0 -1
- package/dist/core/orchestration/errors.js +0 -52
- package/dist/core/orchestration/errors.js.map +0 -1
- package/dist/core/orchestration/merge-queue.d.ts +0 -121
- package/dist/core/orchestration/merge-queue.d.ts.map +0 -1
- package/dist/core/orchestration/merge-queue.js +0 -149
- package/dist/core/orchestration/merge-queue.js.map +0 -1
- package/dist/core/orchestration/recovery.d.ts +0 -106
- package/dist/core/orchestration/recovery.d.ts.map +0 -1
- package/dist/core/orchestration/recovery.js +0 -110
- package/dist/core/orchestration/recovery.js.map +0 -1
- package/dist/core/orchestration/replay-ledger.d.ts +0 -76
- package/dist/core/orchestration/replay-ledger.d.ts.map +0 -1
- package/dist/core/orchestration/replay-ledger.js +0 -395
- package/dist/core/orchestration/replay-ledger.js.map +0 -1
- package/dist/core/orchestration/scheduler-state.d.ts +0 -78
- package/dist/core/orchestration/scheduler-state.d.ts.map +0 -1
- package/dist/core/orchestration/scheduler-state.js +0 -185
- package/dist/core/orchestration/scheduler-state.js.map +0 -1
- package/dist/core/orchestration/scheduler-store.d.ts +0 -309
- package/dist/core/orchestration/scheduler-store.d.ts.map +0 -1
- package/dist/core/orchestration/scheduler-store.js +0 -368
- package/dist/core/orchestration/scheduler-store.js.map +0 -1
- package/dist/core/orchestration/sqlite-scheduler-store.d.ts +0 -57
- package/dist/core/orchestration/sqlite-scheduler-store.d.ts.map +0 -1
- package/dist/core/orchestration/sqlite-scheduler-store.js +0 -528
- package/dist/core/orchestration/sqlite-scheduler-store.js.map +0 -1
- package/dist/core/orchestration/transaction-coordinator.d.ts +0 -217
- package/dist/core/orchestration/transaction-coordinator.d.ts.map +0 -1
- package/dist/core/orchestration/transaction-coordinator.js +0 -281
- package/dist/core/orchestration/transaction-coordinator.js.map +0 -1
- package/dist/core/orchestration/verification-contract.d.ts +0 -197
- package/dist/core/orchestration/verification-contract.d.ts.map +0 -1
- package/dist/core/orchestration/verification-contract.js +0 -145
- package/dist/core/orchestration/verification-contract.js.map +0 -1
- package/dist/core/package-composition.d.ts +0 -68
- package/dist/core/package-composition.d.ts.map +0 -1
- package/dist/core/package-composition.js +0 -304
- package/dist/core/package-composition.js.map +0 -1
- package/dist/core/package-trial-runtime.d.ts +0 -75
- package/dist/core/package-trial-runtime.d.ts.map +0 -1
- package/dist/core/package-trial-runtime.js +0 -73
- package/dist/core/package-trial-runtime.js.map +0 -1
- package/dist/core/package-trial-sandbox.d.ts +0 -27
- package/dist/core/package-trial-sandbox.d.ts.map +0 -1
- package/dist/core/package-trial-sandbox.js +0 -102
- package/dist/core/package-trial-sandbox.js.map +0 -1
- package/dist/core/policy-overlays-runtime.d.ts +0 -141
- package/dist/core/policy-overlays-runtime.d.ts.map +0 -1
- package/dist/core/policy-overlays-runtime.js +0 -720
- package/dist/core/policy-overlays-runtime.js.map +0 -1
- package/dist/core/read-anchor-registry.d.ts +0 -27
- package/dist/core/read-anchor-registry.d.ts.map +0 -1
- package/dist/core/read-anchor-registry.js +0 -103
- package/dist/core/read-anchor-registry.js.map +0 -1
- package/dist/core/read-content-cache.d.ts +0 -22
- package/dist/core/read-content-cache.d.ts.map +0 -1
- package/dist/core/read-content-cache.js +0 -79
- package/dist/core/read-content-cache.js.map +0 -1
- package/dist/core/session-digest.d.ts +0 -57
- package/dist/core/session-digest.d.ts.map +0 -1
- package/dist/core/session-digest.js +0 -193
- package/dist/core/session-digest.js.map +0 -1
- package/dist/core/spec-kit/compiler.d.ts +0 -67
- package/dist/core/spec-kit/compiler.d.ts.map +0 -1
- package/dist/core/spec-kit/compiler.js +0 -268
- package/dist/core/spec-kit/compiler.js.map +0 -1
- package/dist/core/transaction-coordinator.d.ts +0 -30
- package/dist/core/transaction-coordinator.d.ts.map +0 -1
- package/dist/core/transaction-coordinator.js +0 -173
- package/dist/core/transaction-coordinator.js.map +0 -1
- package/dist/modes/interactive/components/mcp-selector.d.ts +0 -30
- package/dist/modes/interactive/components/mcp-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/mcp-selector.js +0 -155
- package/dist/modes/interactive/components/mcp-selector.js.map +0 -1
- package/dist/modes/interactive/components/model-selector-state.d.ts +0 -101
- package/dist/modes/interactive/components/model-selector-state.d.ts.map +0 -1
- package/dist/modes/interactive/components/model-selector-state.js +0 -261
- package/dist/modes/interactive/components/model-selector-state.js.map +0 -1
- package/dist/modes/interactive/components/skills-selector.d.ts +0 -32
- package/dist/modes/interactive/components/skills-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/skills-selector.js +0 -130
- package/dist/modes/interactive/components/skills-selector.js.map +0 -1
- package/dist/modes/interactive/theme/omk-blackboard.json +0 -91
- package/dist/modes/interactive/theme/omk-freedom-grid.json +0 -91
- package/dist/modes/interactive/theme/omk-neon-ops.json +0 -90
- package/dist/modes/interactive/theme/omk-slate-light.json +0 -91
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
- package/node_modules/@earendil-works/omk-agent-core/README.md +0 -488
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts +0 -24
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js +0 -553
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts +0 -118
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.js +0 -402
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts +0 -95
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js +0 -996
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts +0 -53
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js +0 -175
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts +0 -117
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js +0 -568
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts +0 -25
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js +0 -131
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts +0 -51
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js +0 -510
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts +0 -51
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js +0 -102
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts +0 -48
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js +0 -230
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts +0 -26
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js +0 -101
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts +0 -36
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js +0 -273
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts +0 -18
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js +0 -42
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts +0 -25
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js +0 -114
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts +0 -11
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js +0 -39
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts +0 -33
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js +0 -210
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts +0 -2
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js +0 -50
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts +0 -44
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js +0 -311
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts +0 -3
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js +0 -30
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts +0 -616
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js +0 -94
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts +0 -14
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js +0 -126
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts +0 -70
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js +0 -297
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts +0 -20
- package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/index.js +0 -25
- package/node_modules/@earendil-works/omk-agent-core/dist/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts +0 -3
- package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/node.js +0 -3
- package/node_modules/@earendil-works/omk-agent-core/dist/node.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts +0 -69
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js +0 -278
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts +0 -393
- package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/types.js +0 -2
- package/node_modules/@earendil-works/omk-agent-core/dist/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/package.json +0 -60
- package/node_modules/@earendil-works/omk-ai/README.md +0 -1389
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts +0 -20
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.js +0 -44
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts +0 -5
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js +0 -6
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/cli.js +0 -130
- package/node_modules/@earendil-works/omk-ai/dist/cli.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts +0 -20
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js +0 -199
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts +0 -10
- package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts +0 -515
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js +0 -517
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.js +0 -23
- package/node_modules/@earendil-works/omk-ai/dist/image-models.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts +0 -14
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images.d.ts +0 -4
- package/node_modules/@earendil-works/omk-ai/dist/images.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images.js +0 -16
- package/node_modules/@earendil-works/omk-ai/dist/images.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/index.d.ts +0 -33
- package/node_modules/@earendil-works/omk-ai/dist/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/index.js +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.d.ts +0 -18
- package/node_modules/@earendil-works/omk-ai/dist/models.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts +0 -18762
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.js +0 -17197
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.js +0 -78
- package/node_modules/@earendil-works/omk-ai/dist/models.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/oauth.js +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/oauth.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts +0 -39
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.js +0 -170
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts +0 -38
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js +0 -826
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts +0 -77
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js +0 -1123
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts +0 -15
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js +0 -221
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js +0 -26
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts +0 -56
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js +0 -368
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js +0 -29
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts +0 -70
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js +0 -331
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts +0 -15
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js +0 -442
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.js +0 -402
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js +0 -128
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts +0 -4
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js +0 -34
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts +0 -25
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js +0 -534
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts +0 -30
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js +0 -1171
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts +0 -19
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js +0 -977
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts +0 -11
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts +0 -18
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js +0 -496
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js +0 -233
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts +0 -35
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js +0 -254
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js +0 -42
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js +0 -82
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js +0 -184
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts +0 -4
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.js +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/stream.js +0 -77
- package/node_modules/@earendil-works/omk-ai/dist/stream.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/types.d.ts +0 -570
- package/node_modules/@earendil-works/omk-ai/dist/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/types.js +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts +0 -6
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js +0 -34
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts +0 -19
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js +0 -25
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js +0 -81
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js +0 -14
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts +0 -16
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js +0 -113
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts +0 -10
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js +0 -97
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts +0 -25
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js +0 -335
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js +0 -56
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts +0 -30
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js +0 -280
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts +0 -58
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js +0 -122
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js +0 -105
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts +0 -43
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js +0 -487
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js +0 -31
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts +0 -64
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts +0 -57
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js +0 -154
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js +0 -26
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts +0 -17
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts +0 -18
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js +0 -281
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/package.json +0 -106
- package/node_modules/@earendil-works/omk-tui/README.md +0 -791
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts +0 -54
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js +0 -632
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts +0 -22
- package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/box.js +0 -104
- package/node_modules/@earendil-works/omk-tui/dist/components/box.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts +0 -22
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js +0 -35
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts +0 -249
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.js +0 -1857
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts +0 -28
- package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/image.js +0 -89
- package/node_modules/@earendil-works/omk-tui/dist/components/image.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts +0 -37
- package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/input.js +0 -378
- package/node_modules/@earendil-works/omk-tui/dist/components/input.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts +0 -31
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.js +0 -69
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts +0 -96
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js +0 -644
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts +0 -50
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js +0 -159
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts +0 -50
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js +0 -185
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts +0 -12
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js +0 -23
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts +0 -19
- package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/text.js +0 -89
- package/node_modules/@earendil-works/omk-tui/dist/components/text.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts +0 -13
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js +0 -51
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts +0 -39
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.js +0 -2
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts +0 -16
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js +0 -110
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/index.d.ts +0 -23
- package/node_modules/@earendil-works/omk-tui/dist/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/index.js +0 -32
- package/node_modules/@earendil-works/omk-tui/dist/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts +0 -212
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.js +0 -252
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts +0 -184
- package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keys.js +0 -1173
- package/node_modules/@earendil-works/omk-tui/dist/keys.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts +0 -28
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js +0 -44
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts +0 -3
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js +0 -53
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts +0 -50
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js +0 -361
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts +0 -90
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js +0 -366
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts +0 -113
- package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal.js +0 -472
- package/node_modules/@earendil-works/omk-tui/dist/terminal.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts +0 -242
- package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/tui.js +0 -1221
- package/node_modules/@earendil-works/omk-tui/dist/tui.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts +0 -17
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js +0 -25
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts +0 -84
- package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/utils.js +0 -1032
- package/node_modules/@earendil-works/omk-tui/dist/utils.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts +0 -25
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js +0 -96
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
- package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
- package/node_modules/@earendil-works/omk-tui/package.json +0 -47
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure scheduler state module for the durable DAG orchestrator.
|
|
3
|
-
*
|
|
4
|
-
* This module is intentionally free of I/O: it owns the node state machine,
|
|
5
|
-
* the read/write conflict model, the dispatchability predicate, and the
|
|
6
|
-
* deterministic dispatch selection. Persistence (SQLite WAL), leases, and
|
|
7
|
-
* dependency readiness live in sibling modules; this is the single source of
|
|
8
|
-
* truth for the *rules* those modules enforce.
|
|
9
|
-
*
|
|
10
|
-
* Erasable TypeScript only (no enum/namespace/parameter properties). All time
|
|
11
|
-
* values are epoch milliseconds so tests can use deterministic fake clocks.
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Legal direct transitions, derived from foundation.md section 2.2.
|
|
15
|
-
*
|
|
16
|
-
* Terminal statuses (completed, failed, blocked, cancelled, rolled_back,
|
|
17
|
-
* in_doubt) map to the empty set: once terminal, a node never moves again.
|
|
18
|
-
* block/cancel are legal from every non-terminal status ("any -> block",
|
|
19
|
-
* "any except terminal -> cancel"). running -> running encodes the heartbeat
|
|
20
|
-
* self-update.
|
|
21
|
-
*/
|
|
22
|
-
const ALLOWED_TRANSITIONS = {
|
|
23
|
-
queued: new Set(["leased", "blocked", "cancelled"]),
|
|
24
|
-
leased: new Set(["queued", "running", "blocked", "cancelled"]),
|
|
25
|
-
running: new Set([
|
|
26
|
-
"running",
|
|
27
|
-
"verifying",
|
|
28
|
-
"retry_wait",
|
|
29
|
-
"failed",
|
|
30
|
-
"compensating",
|
|
31
|
-
"blocked",
|
|
32
|
-
"cancelled",
|
|
33
|
-
]),
|
|
34
|
-
verifying: new Set([
|
|
35
|
-
"completed",
|
|
36
|
-
"retry_wait",
|
|
37
|
-
"failed",
|
|
38
|
-
"compensating",
|
|
39
|
-
"blocked",
|
|
40
|
-
"cancelled",
|
|
41
|
-
]),
|
|
42
|
-
completed: new Set(),
|
|
43
|
-
retry_wait: new Set(["queued", "blocked", "cancelled"]),
|
|
44
|
-
compensating: new Set(["rolled_back", "in_doubt", "blocked", "cancelled"]),
|
|
45
|
-
rolled_back: new Set(),
|
|
46
|
-
in_doubt: new Set(),
|
|
47
|
-
blocked: new Set(),
|
|
48
|
-
cancelled: new Set(),
|
|
49
|
-
failed: new Set(),
|
|
50
|
-
};
|
|
51
|
-
/** True iff moving a node from `from` to `to` is a legal direct transition. */
|
|
52
|
-
export function canTransitionNodeStatus(from, to) {
|
|
53
|
-
return ALLOWED_TRANSITIONS[from].has(to);
|
|
54
|
-
}
|
|
55
|
-
/** True iff the entry narrows on at least one symbol (empty list counts as no narrowing). */
|
|
56
|
-
function declaresSymbols(entry) {
|
|
57
|
-
return Array.isArray(entry.symbols) && entry.symbols.length > 0;
|
|
58
|
-
}
|
|
59
|
-
/** True iff two non-empty symbol lists share at least one symbol. */
|
|
60
|
-
function sharesSymbol(a, b) {
|
|
61
|
-
const seen = new Set(a);
|
|
62
|
-
for (const symbol of b) {
|
|
63
|
-
if (seen.has(symbol)) {
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Two access entries conflict iff they reference the same path. When BOTH
|
|
71
|
-
* entries declare (non-empty) symbols, the conflict narrows to a shared symbol;
|
|
72
|
-
* otherwise the conflict is path-level (conservative).
|
|
73
|
-
*/
|
|
74
|
-
export function accessEntriesConflict(a, b) {
|
|
75
|
-
if (a.path !== b.path) {
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
if (declaresSymbols(a) && declaresSymbols(b)) {
|
|
79
|
-
return sharesSymbol(a.symbols, b.symbols);
|
|
80
|
-
}
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
/** True iff any entry in `left` conflicts with any entry in `right`. */
|
|
84
|
-
function setsOverlap(left, right) {
|
|
85
|
-
for (const l of left) {
|
|
86
|
-
for (const r of right) {
|
|
87
|
-
if (accessEntriesConflict(l, r)) {
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* A candidate node conflicts with an in-flight node on write/write,
|
|
96
|
-
* write/read, or read/write overlap. read/read never conflicts.
|
|
97
|
-
*/
|
|
98
|
-
export function nodesConflict(candidate, inFlight) {
|
|
99
|
-
// write/write
|
|
100
|
-
if (setsOverlap(candidate.writeSet, inFlight.writeSet)) {
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
// write/read: candidate writes what in-flight reads
|
|
104
|
-
if (setsOverlap(candidate.writeSet, inFlight.readSet)) {
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
// read/write: candidate reads what in-flight writes
|
|
108
|
-
if (setsOverlap(candidate.readSet, inFlight.writeSet)) {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* A node is dispatchable iff it is `queued`, or `retry_wait` whose backoff
|
|
115
|
-
* deadline has elapsed (retryWaitUntil <= now). Dependencies and leases are
|
|
116
|
-
* checked elsewhere; this predicate only answers the time/status question.
|
|
117
|
-
*/
|
|
118
|
-
export function isNodeDispatchable(node, now) {
|
|
119
|
-
if (node.status === "queued") {
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
if (node.status === "retry_wait") {
|
|
123
|
-
return node.retryWaitUntil !== undefined && node.retryWaitUntil <= now;
|
|
124
|
-
}
|
|
125
|
-
return false;
|
|
126
|
-
}
|
|
127
|
-
/** Deterministic ordering: priority ascending, then nodeId ascending. */
|
|
128
|
-
function compareDispatchOrder(a, b) {
|
|
129
|
-
if (a.priority !== b.priority) {
|
|
130
|
-
return a.priority - b.priority;
|
|
131
|
-
}
|
|
132
|
-
if (a.nodeId < b.nodeId) {
|
|
133
|
-
return -1;
|
|
134
|
-
}
|
|
135
|
-
if (a.nodeId > b.nodeId) {
|
|
136
|
-
return 1;
|
|
137
|
-
}
|
|
138
|
-
return 0;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Select dispatchable nodes for a single tick, deterministically.
|
|
142
|
-
*
|
|
143
|
-
* Ordering: priority ascending, then nodeId ascending. A candidate is excluded
|
|
144
|
-
* if it conflicts (write/write, write/read, read/write) with any in-flight node
|
|
145
|
-
* or any node already selected this tick. `parallelizable: false` nodes may be
|
|
146
|
-
* selected only when nothing is selected and nothing is in-flight, and once one
|
|
147
|
-
* is selected the tick stops (serialized lane). Selection stops once
|
|
148
|
-
* in-flight + selected reaches `maxLeases`, or `maxParallel` is hit.
|
|
149
|
-
*/
|
|
150
|
-
export function selectDispatchableNodes(nodes, options) {
|
|
151
|
-
const inFlight = options.inFlight ?? [];
|
|
152
|
-
const maxParallel = options.maxParallel ?? Number.POSITIVE_INFINITY;
|
|
153
|
-
// Remaining lease headroom after accounting for in-flight occupancy.
|
|
154
|
-
const remaining = Math.max(0, options.maxLeases - inFlight.length);
|
|
155
|
-
if (remaining === 0) {
|
|
156
|
-
return [];
|
|
157
|
-
}
|
|
158
|
-
const candidates = nodes.filter((node) => isNodeDispatchable(node, options.now));
|
|
159
|
-
const ordered = [...candidates].sort(compareDispatchOrder);
|
|
160
|
-
const selected = [];
|
|
161
|
-
for (const candidate of ordered) {
|
|
162
|
-
if (selected.length >= remaining || selected.length >= maxParallel) {
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
// Serialized lane: a non-parallelizable node needs the lane to itself.
|
|
166
|
-
if (!candidate.parallelizable) {
|
|
167
|
-
if (selected.length > 0 || inFlight.length > 0) {
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// Exclude candidates that conflict with anything already in flight or chosen.
|
|
172
|
-
const conflictsWithBusy = inFlight.some((busy) => nodesConflict(candidate, busy)) ||
|
|
173
|
-
selected.some((chosen) => nodesConflict(candidate, chosen));
|
|
174
|
-
if (conflictsWithBusy) {
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
selected.push(candidate);
|
|
178
|
-
// A non-parallelizable node claims the whole lane for this tick.
|
|
179
|
-
if (!candidate.parallelizable) {
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return selected;
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=scheduler-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler-state.js","sourceRoot":"","sources":["../../../src/core/orchestration/scheduler-state.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Pure scheduler state module for the durable DAG orchestrator.\n *\n * This module is intentionally free of I/O: it owns the node state machine,\n * the read/write conflict model, the dispatchability predicate, and the\n * deterministic dispatch selection. Persistence (SQLite WAL), leases, and\n * dependency readiness live in sibling modules; this is the single source of\n * truth for the *rules* those modules enforce.\n *\n * Erasable TypeScript only (no enum/namespace/parameter properties). All time\n * values are epoch milliseconds so tests can use deterministic fake clocks.\n */\n\n/** Lifecycle status of a DAG node (see foundation.md section 2.1). */\nexport type SchedulerNodeStatus =\n\t| \"queued\"\n\t| \"leased\"\n\t| \"running\"\n\t| \"verifying\"\n\t| \"completed\"\n\t| \"retry_wait\"\n\t| \"compensating\"\n\t| \"rolled_back\"\n\t| \"in_doubt\"\n\t| \"blocked\"\n\t| \"cancelled\"\n\t| \"failed\";\n\n/** A single resource touched by a node's read_set or write_set. */\nexport interface AccessSetEntry {\n\t/** Filesystem path. Equality is exact string match (no prefix containment here). */\n\tpath: string;\n\t/** Optional symbol list for symbol-level conflict narrowing. */\n\tsymbols?: readonly string[];\n}\n\n/** A DAG node, narrowed to the fields the pure scheduler rules consume. */\nexport interface SchedulerNode {\n\tnodeId: string;\n\tstatus: SchedulerNodeStatus;\n\t/** Lower number dispatches sooner. */\n\tpriority: number;\n\t/** false => must run alone (no siblings selected or in-flight alongside it). */\n\tparallelizable: boolean;\n\treadSet: readonly AccessSetEntry[];\n\twriteSet: readonly AccessSetEntry[];\n\t/** Epoch ms backoff deadline; consulted only when status === \"retry_wait\". */\n\tretryWaitUntil?: number;\n\t/** Upstream node ids. Not consulted by these pure functions (dependency readiness is external). */\n\tdependsOn?: readonly string[];\n}\n\n/** Options driving a single dispatch selection pass. */\nexport interface DispatchSelectionOptions {\n\t/** Epoch ms \"now\"; used for retry_wait backoff comparison. */\n\tnow: number;\n\t/** Total in-flight lease ceiling. Selection stops once in-flight + selected reaches this. */\n\tmaxLeases: number;\n\t/** Optional per-tick cap on how many nodes may be selected. */\n\tmaxParallel?: number;\n\t/** Nodes already leased/running/verifying, counted toward maxLeases and conflict checks. */\n\tinFlight?: readonly SchedulerNode[];\n}\n\n/**\n * Legal direct transitions, derived from foundation.md section 2.2.\n *\n * Terminal statuses (completed, failed, blocked, cancelled, rolled_back,\n * in_doubt) map to the empty set: once terminal, a node never moves again.\n * block/cancel are legal from every non-terminal status (\"any -> block\",\n * \"any except terminal -> cancel\"). running -> running encodes the heartbeat\n * self-update.\n */\nconst ALLOWED_TRANSITIONS: Readonly<Record<SchedulerNodeStatus, ReadonlySet<SchedulerNodeStatus>>> = {\n\tqueued: new Set<SchedulerNodeStatus>([\"leased\", \"blocked\", \"cancelled\"]),\n\tleased: new Set<SchedulerNodeStatus>([\"queued\", \"running\", \"blocked\", \"cancelled\"]),\n\trunning: new Set<SchedulerNodeStatus>([\n\t\t\"running\",\n\t\t\"verifying\",\n\t\t\"retry_wait\",\n\t\t\"failed\",\n\t\t\"compensating\",\n\t\t\"blocked\",\n\t\t\"cancelled\",\n\t]),\n\tverifying: new Set<SchedulerNodeStatus>([\n\t\t\"completed\",\n\t\t\"retry_wait\",\n\t\t\"failed\",\n\t\t\"compensating\",\n\t\t\"blocked\",\n\t\t\"cancelled\",\n\t]),\n\tcompleted: new Set<SchedulerNodeStatus>(),\n\tretry_wait: new Set<SchedulerNodeStatus>([\"queued\", \"blocked\", \"cancelled\"]),\n\tcompensating: new Set<SchedulerNodeStatus>([\"rolled_back\", \"in_doubt\", \"blocked\", \"cancelled\"]),\n\trolled_back: new Set<SchedulerNodeStatus>(),\n\tin_doubt: new Set<SchedulerNodeStatus>(),\n\tblocked: new Set<SchedulerNodeStatus>(),\n\tcancelled: new Set<SchedulerNodeStatus>(),\n\tfailed: new Set<SchedulerNodeStatus>(),\n};\n\n/** True iff moving a node from `from` to `to` is a legal direct transition. */\nexport function canTransitionNodeStatus(from: SchedulerNodeStatus, to: SchedulerNodeStatus): boolean {\n\treturn ALLOWED_TRANSITIONS[from].has(to);\n}\n\n/** True iff the entry narrows on at least one symbol (empty list counts as no narrowing). */\nfunction declaresSymbols(entry: AccessSetEntry): boolean {\n\treturn Array.isArray(entry.symbols) && entry.symbols.length > 0;\n}\n\n/** True iff two non-empty symbol lists share at least one symbol. */\nfunction sharesSymbol(a: readonly string[], b: readonly string[]): boolean {\n\tconst seen = new Set(a);\n\tfor (const symbol of b) {\n\t\tif (seen.has(symbol)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Two access entries conflict iff they reference the same path. When BOTH\n * entries declare (non-empty) symbols, the conflict narrows to a shared symbol;\n * otherwise the conflict is path-level (conservative).\n */\nexport function accessEntriesConflict(a: AccessSetEntry, b: AccessSetEntry): boolean {\n\tif (a.path !== b.path) {\n\t\treturn false;\n\t}\n\tif (declaresSymbols(a) && declaresSymbols(b)) {\n\t\treturn sharesSymbol(a.symbols as readonly string[], b.symbols as readonly string[]);\n\t}\n\treturn true;\n}\n\n/** True iff any entry in `left` conflicts with any entry in `right`. */\nfunction setsOverlap(left: readonly AccessSetEntry[], right: readonly AccessSetEntry[]): boolean {\n\tfor (const l of left) {\n\t\tfor (const r of right) {\n\t\t\tif (accessEntriesConflict(l, r)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * A candidate node conflicts with an in-flight node on write/write,\n * write/read, or read/write overlap. read/read never conflicts.\n */\nexport function nodesConflict(candidate: SchedulerNode, inFlight: SchedulerNode): boolean {\n\t// write/write\n\tif (setsOverlap(candidate.writeSet, inFlight.writeSet)) {\n\t\treturn true;\n\t}\n\t// write/read: candidate writes what in-flight reads\n\tif (setsOverlap(candidate.writeSet, inFlight.readSet)) {\n\t\treturn true;\n\t}\n\t// read/write: candidate reads what in-flight writes\n\tif (setsOverlap(candidate.readSet, inFlight.writeSet)) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * A node is dispatchable iff it is `queued`, or `retry_wait` whose backoff\n * deadline has elapsed (retryWaitUntil <= now). Dependencies and leases are\n * checked elsewhere; this predicate only answers the time/status question.\n */\nexport function isNodeDispatchable(node: SchedulerNode, now: number): boolean {\n\tif (node.status === \"queued\") {\n\t\treturn true;\n\t}\n\tif (node.status === \"retry_wait\") {\n\t\treturn node.retryWaitUntil !== undefined && node.retryWaitUntil <= now;\n\t}\n\treturn false;\n}\n\n/** Deterministic ordering: priority ascending, then nodeId ascending. */\nfunction compareDispatchOrder(a: SchedulerNode, b: SchedulerNode): number {\n\tif (a.priority !== b.priority) {\n\t\treturn a.priority - b.priority;\n\t}\n\tif (a.nodeId < b.nodeId) {\n\t\treturn -1;\n\t}\n\tif (a.nodeId > b.nodeId) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\n\n/**\n * Select dispatchable nodes for a single tick, deterministically.\n *\n * Ordering: priority ascending, then nodeId ascending. A candidate is excluded\n * if it conflicts (write/write, write/read, read/write) with any in-flight node\n * or any node already selected this tick. `parallelizable: false` nodes may be\n * selected only when nothing is selected and nothing is in-flight, and once one\n * is selected the tick stops (serialized lane). Selection stops once\n * in-flight + selected reaches `maxLeases`, or `maxParallel` is hit.\n */\nexport function selectDispatchableNodes(\n\tnodes: readonly SchedulerNode[],\n\toptions: DispatchSelectionOptions,\n): SchedulerNode[] {\n\tconst inFlight = options.inFlight ?? [];\n\tconst maxParallel = options.maxParallel ?? Number.POSITIVE_INFINITY;\n\n\t// Remaining lease headroom after accounting for in-flight occupancy.\n\tconst remaining = Math.max(0, options.maxLeases - inFlight.length);\n\tif (remaining === 0) {\n\t\treturn [];\n\t}\n\n\tconst candidates = nodes.filter((node) => isNodeDispatchable(node, options.now));\n\tconst ordered = [...candidates].sort(compareDispatchOrder);\n\n\tconst selected: SchedulerNode[] = [];\n\tfor (const candidate of ordered) {\n\t\tif (selected.length >= remaining || selected.length >= maxParallel) {\n\t\t\tbreak;\n\t\t}\n\t\t// Serialized lane: a non-parallelizable node needs the lane to itself.\n\t\tif (!candidate.parallelizable) {\n\t\t\tif (selected.length > 0 || inFlight.length > 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\t// Exclude candidates that conflict with anything already in flight or chosen.\n\t\tconst conflictsWithBusy =\n\t\t\tinFlight.some((busy) => nodesConflict(candidate, busy)) ||\n\t\t\tselected.some((chosen) => nodesConflict(candidate, chosen));\n\t\tif (conflictsWithBusy) {\n\t\t\tcontinue;\n\t\t}\n\t\tselected.push(candidate);\n\t\t// A non-parallelizable node claims the whole lane for this tick.\n\t\tif (!candidate.parallelizable) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn selected;\n}\n"]}
|
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Driver-agnostic SchedulerStore contract for the durable DAG orchestrator.
|
|
3
|
-
*
|
|
4
|
-
* This module owns the persistence *contract* and the deterministic, pure
|
|
5
|
-
* helpers that any concrete store implementation must honor:
|
|
6
|
-
* - the canonical SQLite WAL DDL (one source of truth for the schema),
|
|
7
|
-
* - the connection pragmas,
|
|
8
|
-
* - stable idempotency / DAG hashing (so DAG ingestion is replay-safe),
|
|
9
|
-
* - access-set canonicalization (so stable keys are order-independent).
|
|
10
|
-
*
|
|
11
|
-
* It performs NO I/O itself. The concrete `node:sqlite` implementation lives in
|
|
12
|
-
* `sqlite-scheduler-store.ts`. Keeping the contract and pure helpers here lets a
|
|
13
|
-
* second driver (e.g. better-sqlite3) be added later without touching scheduler
|
|
14
|
-
* logic, and lets tests assert determinism without a database.
|
|
15
|
-
*
|
|
16
|
-
* Schema reference: `.omk/runs/omk-orchestration-upgrade-plan/foundation.md` §3.
|
|
17
|
-
* Conflict policy is reused from `scheduler-state.ts`; hashing primitives from
|
|
18
|
-
* `replay-ledger.ts`. Erasable TypeScript only (no enum/namespace/param props).
|
|
19
|
-
*/
|
|
20
|
-
import { type JsonValue } from "./replay-ledger.ts";
|
|
21
|
-
import { type AccessSetEntry, type SchedulerNode, type SchedulerNodeStatus } from "./scheduler-state.ts";
|
|
22
|
-
export type RunStatus = "running" | "paused" | "completed" | "failed" | "cancelled";
|
|
23
|
-
export type NodeStatus = SchedulerNodeStatus;
|
|
24
|
-
export type EdgeType = "strong" | "weak";
|
|
25
|
-
export type AccessKind = "read" | "write";
|
|
26
|
-
export type ConflictReason = "write-write" | "write-read" | "read-write";
|
|
27
|
-
export type NodeRole = "planner" | "explorer" | "coder" | "tester" | "reviewer" | "security" | "memory" | "synthesizer";
|
|
28
|
-
/** Retry envelope persisted as JSON on the node row. */
|
|
29
|
-
export interface RetryPolicy {
|
|
30
|
-
maxAttempts: number;
|
|
31
|
-
baseMs: number;
|
|
32
|
-
maxMs: number;
|
|
33
|
-
multiplier: number;
|
|
34
|
-
}
|
|
35
|
-
export interface RunInput {
|
|
36
|
-
runId: string;
|
|
37
|
-
goal: string;
|
|
38
|
-
topology: string;
|
|
39
|
-
dagHash?: string;
|
|
40
|
-
rootNodeId?: string;
|
|
41
|
-
}
|
|
42
|
-
export interface RunRow {
|
|
43
|
-
runId: string;
|
|
44
|
-
goal: string;
|
|
45
|
-
topology: string;
|
|
46
|
-
status: RunStatus;
|
|
47
|
-
createdAt: string;
|
|
48
|
-
updatedAt: string;
|
|
49
|
-
completedAt: string | null;
|
|
50
|
-
dagHash: string | null;
|
|
51
|
-
rootNodeId: string | null;
|
|
52
|
-
}
|
|
53
|
-
/** A node as submitted by the root coordinator (caller owns `nodeId`). */
|
|
54
|
-
export interface NodeInput {
|
|
55
|
-
nodeId: string;
|
|
56
|
-
role: NodeRole;
|
|
57
|
-
task: string;
|
|
58
|
-
readSet?: readonly AccessSetEntry[];
|
|
59
|
-
writeSet?: readonly AccessSetEntry[];
|
|
60
|
-
priority?: number;
|
|
61
|
-
parallelizable?: boolean;
|
|
62
|
-
retryPolicy?: RetryPolicy;
|
|
63
|
-
verificationContract?: string;
|
|
64
|
-
costBudget?: number;
|
|
65
|
-
}
|
|
66
|
-
/** A persisted node row, rehydrated from SQLite. */
|
|
67
|
-
export interface NodeRow {
|
|
68
|
-
nodeId: string;
|
|
69
|
-
runId: string;
|
|
70
|
-
role: NodeRole;
|
|
71
|
-
task: string;
|
|
72
|
-
status: NodeStatus;
|
|
73
|
-
idempotencyKey: string;
|
|
74
|
-
readSet: AccessSetEntry[];
|
|
75
|
-
writeSet: AccessSetEntry[];
|
|
76
|
-
leaseId: string | null;
|
|
77
|
-
leaseExpiresAt: string | null;
|
|
78
|
-
heartbeatAt: string | null;
|
|
79
|
-
attemptCount: number;
|
|
80
|
-
requeueCount: number;
|
|
81
|
-
retryWaitUntil: string | null;
|
|
82
|
-
priority: number;
|
|
83
|
-
parallelizable: boolean;
|
|
84
|
-
createdAt: string;
|
|
85
|
-
startedAt: string | null;
|
|
86
|
-
finishedAt: string | null;
|
|
87
|
-
}
|
|
88
|
-
export interface EdgeInput {
|
|
89
|
-
fromNodeId: string;
|
|
90
|
-
toNodeId: string;
|
|
91
|
-
edgeType?: EdgeType;
|
|
92
|
-
}
|
|
93
|
-
export interface EdgeRow {
|
|
94
|
-
runId: string;
|
|
95
|
-
fromNodeId: string;
|
|
96
|
-
toNodeId: string;
|
|
97
|
-
edgeType: EdgeType;
|
|
98
|
-
}
|
|
99
|
-
/** A whole DAG submission: run header + nodes + edges. */
|
|
100
|
-
export interface DagSubmission {
|
|
101
|
-
run: RunInput;
|
|
102
|
-
nodes: readonly NodeInput[];
|
|
103
|
-
edges?: readonly EdgeInput[];
|
|
104
|
-
}
|
|
105
|
-
/** Outcome of an idempotent DAG ingestion. */
|
|
106
|
-
export interface DagIngestionResult {
|
|
107
|
-
runId: string;
|
|
108
|
-
dagHash: string;
|
|
109
|
-
/** All node ids present after ingestion, in submission order. */
|
|
110
|
-
nodeIds: string[];
|
|
111
|
-
/** Node ids freshly inserted by this call. */
|
|
112
|
-
insertedNodeIds: string[];
|
|
113
|
-
/** Node ids that already existed (idempotency hit). */
|
|
114
|
-
reusedNodeIds: string[];
|
|
115
|
-
}
|
|
116
|
-
export interface LeaseInput {
|
|
117
|
-
leaseId: string;
|
|
118
|
-
ownerToken: string;
|
|
119
|
-
/** ISO-8601 absolute expiry deadline. */
|
|
120
|
-
expiresAt: string;
|
|
121
|
-
/** ISO-8601 issue time; defaults to now() in the implementation. */
|
|
122
|
-
now?: string;
|
|
123
|
-
}
|
|
124
|
-
export interface LeaseRow {
|
|
125
|
-
leaseId: string;
|
|
126
|
-
runId: string;
|
|
127
|
-
nodeId: string;
|
|
128
|
-
attemptId: string | null;
|
|
129
|
-
issuedAt: string;
|
|
130
|
-
expiresAt: string;
|
|
131
|
-
heartbeatAt: string | null;
|
|
132
|
-
ownerToken: string;
|
|
133
|
-
released: boolean;
|
|
134
|
-
}
|
|
135
|
-
/** One undirected edge of the conflict graph (always stored nodeA < nodeB). */
|
|
136
|
-
export interface ConflictEdge {
|
|
137
|
-
runId: string;
|
|
138
|
-
nodeA: string;
|
|
139
|
-
nodeB: string;
|
|
140
|
-
reason: ConflictReason;
|
|
141
|
-
}
|
|
142
|
-
export interface AttemptInput {
|
|
143
|
-
attemptId: string;
|
|
144
|
-
runId: string;
|
|
145
|
-
nodeId: string;
|
|
146
|
-
leaseId: string;
|
|
147
|
-
status: "running" | "completed" | "failed" | "rolled_back" | "in_doubt";
|
|
148
|
-
startedAt?: string;
|
|
149
|
-
finishedAt?: string;
|
|
150
|
-
exitCode?: number;
|
|
151
|
-
errorSummary?: JsonValue;
|
|
152
|
-
workerPid?: number;
|
|
153
|
-
}
|
|
154
|
-
export interface WorktreeInput {
|
|
155
|
-
worktreeId: string;
|
|
156
|
-
runId: string;
|
|
157
|
-
nodeId: string;
|
|
158
|
-
path: string;
|
|
159
|
-
branchName: string;
|
|
160
|
-
status?: "active" | "merged" | "reclaimed" | "orphaned";
|
|
161
|
-
createdAt?: string;
|
|
162
|
-
}
|
|
163
|
-
export interface ArtifactInput {
|
|
164
|
-
artifactId: string;
|
|
165
|
-
runId: string;
|
|
166
|
-
nodeId: string;
|
|
167
|
-
attemptId?: string;
|
|
168
|
-
path: string;
|
|
169
|
-
kind: "evidence" | "patch" | "result" | "checkpoint" | "contract";
|
|
170
|
-
sha256?: string;
|
|
171
|
-
sizeBytes?: number;
|
|
172
|
-
createdAt?: string;
|
|
173
|
-
}
|
|
174
|
-
/** A durable compensator row (mirrors recovery.ts CompensatorStep + run/node). */
|
|
175
|
-
export interface CompensatorInput {
|
|
176
|
-
compensatorId: string;
|
|
177
|
-
runId: string;
|
|
178
|
-
nodeId: string;
|
|
179
|
-
kind: string;
|
|
180
|
-
sequence: number;
|
|
181
|
-
idempotent: boolean;
|
|
182
|
-
applied: boolean;
|
|
183
|
-
preparedStateHash?: string | null;
|
|
184
|
-
createdAt?: string;
|
|
185
|
-
}
|
|
186
|
-
export interface SchedulerEventInput {
|
|
187
|
-
eventId: string;
|
|
188
|
-
runId: string;
|
|
189
|
-
operationId: string;
|
|
190
|
-
sequence: number;
|
|
191
|
-
timestamp: string;
|
|
192
|
-
kind: string;
|
|
193
|
-
status: string;
|
|
194
|
-
causationId?: string | null;
|
|
195
|
-
nodeId?: string | null;
|
|
196
|
-
data?: JsonValue;
|
|
197
|
-
}
|
|
198
|
-
export interface SchedulerEventRow {
|
|
199
|
-
eventId: string;
|
|
200
|
-
runId: string;
|
|
201
|
-
operationId: string;
|
|
202
|
-
causationId: string | null;
|
|
203
|
-
sequence: number;
|
|
204
|
-
timestamp: string;
|
|
205
|
-
kind: string;
|
|
206
|
-
status: string;
|
|
207
|
-
nodeId: string | null;
|
|
208
|
-
data: JsonValue;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* The durable scheduler persistence contract. Mutating methods that race a
|
|
212
|
-
* status guard return `boolean` (true iff the row was actually changed) so
|
|
213
|
-
* callers get guard-based CAS semantics. All methods are synchronous because
|
|
214
|
-
* both `node:sqlite` and `better-sqlite3` are synchronous.
|
|
215
|
-
*/
|
|
216
|
-
export interface SchedulerStore {
|
|
217
|
-
open(path: string): void;
|
|
218
|
-
close(): void;
|
|
219
|
-
createSchema(): void;
|
|
220
|
-
exec(sql: string): void;
|
|
221
|
-
/** Read a single PRAGMA scalar (first column of the first row). */
|
|
222
|
-
pragma(name: string): JsonValue;
|
|
223
|
-
createRun(run: RunInput): void;
|
|
224
|
-
getRun(runId: string): RunRow | undefined;
|
|
225
|
-
updateRunStatus(runId: string, status: RunStatus, now?: string): boolean;
|
|
226
|
-
ingestDag(submission: DagSubmission): DagIngestionResult;
|
|
227
|
-
getNode(runId: string, nodeId: string): NodeRow | undefined;
|
|
228
|
-
getNodesByRun(runId: string): NodeRow[];
|
|
229
|
-
getEdgesByRun(runId: string): EdgeRow[];
|
|
230
|
-
buildConflictGraph(runId: string): ConflictEdge[];
|
|
231
|
-
getConflicts(runId: string): ConflictEdge[];
|
|
232
|
-
acquireLease(runId: string, nodeId: string, lease: LeaseInput): boolean;
|
|
233
|
-
heartbeat(runId: string, nodeId: string, ownerToken: string, now: string, expiresAt: string): boolean;
|
|
234
|
-
startNode(runId: string, nodeId: string, ownerToken: string, now: string): boolean;
|
|
235
|
-
reclaimExpiredLeases(runId: string, now: string): string[];
|
|
236
|
-
getLease(leaseId: string): LeaseRow | undefined;
|
|
237
|
-
recordAttempt(attempt: AttemptInput): void;
|
|
238
|
-
getAttemptsByRun(runId: string): AttemptInput[];
|
|
239
|
-
registerWorktree(worktree: WorktreeInput): void;
|
|
240
|
-
getWorktreesByRun(runId: string): WorktreeInput[];
|
|
241
|
-
registerCompensator(compensator: CompensatorInput): void;
|
|
242
|
-
getCompensatorsByNode(runId: string, nodeId: string): CompensatorInput[];
|
|
243
|
-
recordArtifact(artifact: ArtifactInput): void;
|
|
244
|
-
getArtifactsByRun(runId: string): ArtifactInput[];
|
|
245
|
-
appendEvent(event: SchedulerEventInput): void;
|
|
246
|
-
getEvents(runId: string): SchedulerEventRow[];
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Canonical connection pragmas. WAL is a no-op for `:memory:` databases (SQLite
|
|
250
|
-
* keeps an in-memory journal there) but is applied verbatim for file stores.
|
|
251
|
-
*/
|
|
252
|
-
export declare const SCHEDULER_STORE_PRAGMAS: readonly string[];
|
|
253
|
-
/** Tables the schema must create, in dependency-safe creation order. */
|
|
254
|
-
export declare const SCHEDULER_STORE_TABLES: readonly string[];
|
|
255
|
-
/**
|
|
256
|
-
* Canonical SQLite WAL DDL. Parent tables precede children so FK declarations
|
|
257
|
-
* resolve cleanly. This is the single source of truth for the durable schema.
|
|
258
|
-
*/
|
|
259
|
-
export declare const SCHEDULER_STORE_SCHEMA = "\nCREATE TABLE IF NOT EXISTS runs (\n run_id TEXT PRIMARY KEY,\n goal TEXT NOT NULL,\n topology TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'running'\n CHECK (status IN ('running','paused','completed','failed','cancelled')),\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n completed_at TEXT,\n dag_hash TEXT,\n root_node_id TEXT\n);\n\nCREATE TABLE IF NOT EXISTS nodes (\n node_id TEXT NOT NULL,\n run_id TEXT NOT NULL,\n role TEXT NOT NULL\n CHECK (role IN ('planner','explorer','coder','tester','reviewer','security','memory','synthesizer')),\n task TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued'\n CHECK (status IN ('queued','leased','running','verifying','completed','retry_wait',\n 'compensating','rolled_back','in_doubt','blocked','cancelled','failed')),\n idempotency_key TEXT NOT NULL,\n read_set TEXT NOT NULL DEFAULT '[]',\n write_set TEXT NOT NULL DEFAULT '[]',\n lease_id TEXT,\n lease_expires_at TEXT,\n heartbeat_at TEXT,\n retry_policy TEXT NOT NULL DEFAULT '{}',\n verification_contract TEXT,\n cost_budget REAL,\n attempt_count INTEGER NOT NULL DEFAULT 0,\n requeue_count INTEGER NOT NULL DEFAULT 0,\n retry_wait_until TEXT,\n created_at TEXT NOT NULL,\n started_at TEXT,\n finished_at TEXT,\n priority INTEGER NOT NULL DEFAULT 0,\n parallelizable INTEGER NOT NULL DEFAULT 1,\n PRIMARY KEY (run_id, node_id),\n FOREIGN KEY (run_id) REFERENCES runs(run_id) ON DELETE CASCADE,\n UNIQUE (run_id, idempotency_key)\n);\n\nCREATE TABLE IF NOT EXISTS edges (\n run_id TEXT NOT NULL,\n from_node_id TEXT NOT NULL,\n to_node_id TEXT NOT NULL,\n edge_type TEXT NOT NULL DEFAULT 'strong'\n CHECK (edge_type IN ('strong','weak')),\n PRIMARY KEY (run_id, from_node_id, to_node_id),\n FOREIGN KEY (run_id) REFERENCES runs(run_id) ON DELETE CASCADE,\n FOREIGN KEY (run_id, from_node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (run_id, to_node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS access (\n access_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n kind TEXT NOT NULL CHECK (kind IN ('read','write')),\n path TEXT NOT NULL,\n symbols TEXT NOT NULL DEFAULT '[]',\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n UNIQUE (run_id, node_id, kind, path, symbols)\n);\n\nCREATE TABLE IF NOT EXISTS conflicts (\n run_id TEXT NOT NULL,\n node_a TEXT NOT NULL,\n node_b TEXT NOT NULL,\n reason TEXT NOT NULL CHECK (reason IN ('write-write','write-read','read-write')),\n PRIMARY KEY (run_id, node_a, node_b),\n FOREIGN KEY (run_id, node_a) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (run_id, node_b) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n CHECK (node_a < node_b)\n);\n\nCREATE TABLE IF NOT EXISTS attempts (\n attempt_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n lease_id TEXT NOT NULL,\n started_at TEXT NOT NULL,\n finished_at TEXT,\n status TEXT NOT NULL\n CHECK (status IN ('running','completed','failed','rolled_back','in_doubt')),\n exit_code INTEGER,\n error_summary TEXT,\n worker_pid INTEGER,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS leases (\n lease_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n attempt_id TEXT,\n issued_at TEXT NOT NULL,\n expires_at TEXT NOT NULL,\n heartbeat_at TEXT,\n owner_token TEXT NOT NULL,\n released INTEGER NOT NULL DEFAULT 0,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (attempt_id) REFERENCES attempts(attempt_id) ON DELETE SET NULL\n);\n\nCREATE TABLE IF NOT EXISTS artifacts (\n artifact_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n attempt_id TEXT,\n path TEXT NOT NULL,\n kind TEXT NOT NULL\n CHECK (kind IN ('evidence','patch','result','checkpoint','contract')),\n sha256 TEXT,\n size_bytes INTEGER,\n created_at TEXT NOT NULL,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (attempt_id) REFERENCES attempts(attempt_id) ON DELETE SET NULL\n);\n\nCREATE TABLE IF NOT EXISTS worktrees (\n worktree_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n path TEXT NOT NULL,\n branch_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'active'\n CHECK (status IN ('active','merged','reclaimed','orphaned')),\n created_at TEXT NOT NULL,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS merge_queue (\n queue_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n branch_name TEXT NOT NULL,\n target_branch TEXT NOT NULL DEFAULT 'main',\n status TEXT NOT NULL DEFAULT 'pending'\n CHECK (status IN ('pending','merging','merged','conflict','blocked')),\n priority INTEGER NOT NULL DEFAULT 0,\n dag_depth INTEGER NOT NULL DEFAULT 0,\n lease_finished_at TEXT,\n created_at TEXT NOT NULL,\n merged_at TEXT,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS compensators (\n compensator_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n kind TEXT NOT NULL,\n sequence INTEGER NOT NULL,\n idempotent INTEGER NOT NULL DEFAULT 1,\n applied INTEGER NOT NULL DEFAULT 0,\n prepared_state_hash TEXT,\n created_at TEXT NOT NULL,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n UNIQUE (run_id, node_id, sequence)\n);\n\nCREATE TABLE IF NOT EXISTS events (\n event_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n operation_id TEXT NOT NULL,\n causation_id TEXT,\n sequence INTEGER NOT NULL,\n timestamp TEXT NOT NULL,\n kind TEXT NOT NULL,\n status TEXT NOT NULL,\n node_id TEXT,\n data TEXT NOT NULL,\n FOREIGN KEY (run_id) REFERENCES runs(run_id) ON DELETE CASCADE\n);\n\nCREATE INDEX IF NOT EXISTS idx_nodes_dispatch\n ON nodes(run_id, status, retry_wait_until, priority, attempt_count)\n WHERE status IN ('queued','retry_wait');\nCREATE INDEX IF NOT EXISTS idx_nodes_lease ON nodes(run_id, lease_id);\nCREATE INDEX IF NOT EXISTS idx_nodes_expired\n ON nodes(lease_expires_at)\n WHERE status = 'leased' OR status = 'running' OR status = 'verifying';\nCREATE INDEX IF NOT EXISTS idx_edges_to ON edges(run_id, to_node_id);\nCREATE INDEX IF NOT EXISTS idx_edges_from ON edges(run_id, from_node_id);\nCREATE INDEX IF NOT EXISTS idx_access_node ON access(run_id, node_id);\nCREATE INDEX IF NOT EXISTS idx_conflicts_run ON conflicts(run_id, node_a, node_b);\nCREATE INDEX IF NOT EXISTS idx_artifacts_path ON artifacts(run_id, path);\nCREATE INDEX IF NOT EXISTS idx_events_run_seq ON events(run_id, sequence);\nCREATE INDEX IF NOT EXISTS idx_events_node ON events(run_id, node_id, sequence);\n";
|
|
260
|
-
/**
|
|
261
|
-
* Thrown when a DAG re-submission reuses an existing `node_id` within a run but
|
|
262
|
-
* supplies a different canonical descriptor. DAGs are immutable within a run:
|
|
263
|
-
* identical re-submissions are idempotent replays, but a changed definition for
|
|
264
|
-
* an existing node id is a divergence the store surfaces fail-closed instead of
|
|
265
|
-
* silently keeping the old or overwriting with the new.
|
|
266
|
-
*/
|
|
267
|
-
export declare class NodeRedefinitionError extends Error {
|
|
268
|
-
readonly runId: string;
|
|
269
|
-
readonly nodeId: string;
|
|
270
|
-
constructor(runId: string, nodeId: string);
|
|
271
|
-
}
|
|
272
|
-
/** Default retry policy applied when a node omits one. */
|
|
273
|
-
export declare const DEFAULT_RETRY_POLICY: RetryPolicy;
|
|
274
|
-
/**
|
|
275
|
-
* Canonicalize one access entry: drop undefined symbols, sort symbols, so the
|
|
276
|
-
* stable key never depends on declaration order.
|
|
277
|
-
*/
|
|
278
|
-
export declare function canonicalizeAccessEntry(entry: AccessSetEntry): {
|
|
279
|
-
path: string;
|
|
280
|
-
symbols: string[];
|
|
281
|
-
};
|
|
282
|
-
/** Canonicalize an access set: canonicalize each entry, then sort entries. */
|
|
283
|
-
export declare function canonicalizeAccessSet(entries: readonly AccessSetEntry[] | undefined): {
|
|
284
|
-
path: string;
|
|
285
|
-
symbols: string[];
|
|
286
|
-
}[];
|
|
287
|
-
/**
|
|
288
|
-
* Deterministic node descriptor used for idempotency. Excludes runtime state
|
|
289
|
-
* (status, leases, counters) so identical logical work always hashes the same.
|
|
290
|
-
*/
|
|
291
|
-
export declare function canonicalNodeDescriptor(node: NodeInput): JsonValue;
|
|
292
|
-
/**
|
|
293
|
-
* Stable idempotency key: `sha256(stableStringify({runId, descriptor}))`.
|
|
294
|
-
* Two submissions of identical logical work produce the same key, so DAG
|
|
295
|
-
* ingestion can deduplicate across root-coordinator retries (foundation §6.5).
|
|
296
|
-
*/
|
|
297
|
-
export declare function computeIdempotencyKey(runId: string, node: NodeInput): string;
|
|
298
|
-
/** Stable hash over the whole DAG (nodes + edges), order-independent. */
|
|
299
|
-
export declare function computeDagHash(submission: DagSubmission): string;
|
|
300
|
-
/**
|
|
301
|
-
* Classify the conflict between two nodes in canonical (nodeA < nodeB) order.
|
|
302
|
-
*
|
|
303
|
-
* Existence is decided by the shared pure policy `nodesConflict`; the label is
|
|
304
|
-
* derived from the same atomic `accessEntriesConflict` predicate. Precedence is
|
|
305
|
-
* deterministic: write/write, then write/read, then read/write. Returns
|
|
306
|
-
* undefined when the nodes do not conflict.
|
|
307
|
-
*/
|
|
308
|
-
export declare function classifyConflict(nodeA: SchedulerNode, nodeB: SchedulerNode): ConflictReason | undefined;
|
|
309
|
-
//# sourceMappingURL=scheduler-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler-store.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/scheduler-store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Driver-agnostic SchedulerStore contract for the durable DAG orchestrator.\n *\n * This module owns the persistence *contract* and the deterministic, pure\n * helpers that any concrete store implementation must honor:\n * - the canonical SQLite WAL DDL (one source of truth for the schema),\n * - the connection pragmas,\n * - stable idempotency / DAG hashing (so DAG ingestion is replay-safe),\n * - access-set canonicalization (so stable keys are order-independent).\n *\n * It performs NO I/O itself. The concrete `node:sqlite` implementation lives in\n * `sqlite-scheduler-store.ts`. Keeping the contract and pure helpers here lets a\n * second driver (e.g. better-sqlite3) be added later without touching scheduler\n * logic, and lets tests assert determinism without a database.\n *\n * Schema reference: `.omk/runs/omk-orchestration-upgrade-plan/foundation.md` §3.\n * Conflict policy is reused from `scheduler-state.ts`; hashing primitives from\n * `replay-ledger.ts`. Erasable TypeScript only (no enum/namespace/param props).\n */\n\nimport { type JsonValue, sha256Hex, stableStringify } from \"./replay-ledger.ts\";\nimport {\n\ttype AccessSetEntry,\n\taccessEntriesConflict,\n\tnodesConflict,\n\ttype SchedulerNode,\n\ttype SchedulerNodeStatus,\n} from \"./scheduler-state.ts\";\n\nexport type RunStatus = \"running\" | \"paused\" | \"completed\" | \"failed\" | \"cancelled\";\nexport type NodeStatus = SchedulerNodeStatus;\nexport type EdgeType = \"strong\" | \"weak\";\nexport type AccessKind = \"read\" | \"write\";\nexport type ConflictReason = \"write-write\" | \"write-read\" | \"read-write\";\nexport type NodeRole = \"planner\" | \"explorer\" | \"coder\" | \"tester\" | \"reviewer\" | \"security\" | \"memory\" | \"synthesizer\";\n\n/** Retry envelope persisted as JSON on the node row. */\nexport interface RetryPolicy {\n\tmaxAttempts: number;\n\tbaseMs: number;\n\tmaxMs: number;\n\tmultiplier: number;\n}\n\nexport interface RunInput {\n\trunId: string;\n\tgoal: string;\n\ttopology: string;\n\tdagHash?: string;\n\trootNodeId?: string;\n}\n\nexport interface RunRow {\n\trunId: string;\n\tgoal: string;\n\ttopology: string;\n\tstatus: RunStatus;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tcompletedAt: string | null;\n\tdagHash: string | null;\n\trootNodeId: string | null;\n}\n\n/** A node as submitted by the root coordinator (caller owns `nodeId`). */\nexport interface NodeInput {\n\tnodeId: string;\n\trole: NodeRole;\n\ttask: string;\n\treadSet?: readonly AccessSetEntry[];\n\twriteSet?: readonly AccessSetEntry[];\n\tpriority?: number;\n\tparallelizable?: boolean;\n\tretryPolicy?: RetryPolicy;\n\tverificationContract?: string;\n\tcostBudget?: number;\n}\n\n/** A persisted node row, rehydrated from SQLite. */\nexport interface NodeRow {\n\tnodeId: string;\n\trunId: string;\n\trole: NodeRole;\n\ttask: string;\n\tstatus: NodeStatus;\n\tidempotencyKey: string;\n\treadSet: AccessSetEntry[];\n\twriteSet: AccessSetEntry[];\n\tleaseId: string | null;\n\tleaseExpiresAt: string | null;\n\theartbeatAt: string | null;\n\tattemptCount: number;\n\trequeueCount: number;\n\tretryWaitUntil: string | null;\n\tpriority: number;\n\tparallelizable: boolean;\n\tcreatedAt: string;\n\tstartedAt: string | null;\n\tfinishedAt: string | null;\n}\n\nexport interface EdgeInput {\n\tfromNodeId: string;\n\ttoNodeId: string;\n\tedgeType?: EdgeType;\n}\n\nexport interface EdgeRow {\n\trunId: string;\n\tfromNodeId: string;\n\ttoNodeId: string;\n\tedgeType: EdgeType;\n}\n\n/** A whole DAG submission: run header + nodes + edges. */\nexport interface DagSubmission {\n\trun: RunInput;\n\tnodes: readonly NodeInput[];\n\tedges?: readonly EdgeInput[];\n}\n\n/** Outcome of an idempotent DAG ingestion. */\nexport interface DagIngestionResult {\n\trunId: string;\n\tdagHash: string;\n\t/** All node ids present after ingestion, in submission order. */\n\tnodeIds: string[];\n\t/** Node ids freshly inserted by this call. */\n\tinsertedNodeIds: string[];\n\t/** Node ids that already existed (idempotency hit). */\n\treusedNodeIds: string[];\n}\n\nexport interface LeaseInput {\n\tleaseId: string;\n\townerToken: string;\n\t/** ISO-8601 absolute expiry deadline. */\n\texpiresAt: string;\n\t/** ISO-8601 issue time; defaults to now() in the implementation. */\n\tnow?: string;\n}\n\nexport interface LeaseRow {\n\tleaseId: string;\n\trunId: string;\n\tnodeId: string;\n\tattemptId: string | null;\n\tissuedAt: string;\n\texpiresAt: string;\n\theartbeatAt: string | null;\n\townerToken: string;\n\treleased: boolean;\n}\n\n/** One undirected edge of the conflict graph (always stored nodeA < nodeB). */\nexport interface ConflictEdge {\n\trunId: string;\n\tnodeA: string;\n\tnodeB: string;\n\treason: ConflictReason;\n}\n\nexport interface AttemptInput {\n\tattemptId: string;\n\trunId: string;\n\tnodeId: string;\n\tleaseId: string;\n\tstatus: \"running\" | \"completed\" | \"failed\" | \"rolled_back\" | \"in_doubt\";\n\tstartedAt?: string;\n\tfinishedAt?: string;\n\texitCode?: number;\n\terrorSummary?: JsonValue;\n\tworkerPid?: number;\n}\n\nexport interface WorktreeInput {\n\tworktreeId: string;\n\trunId: string;\n\tnodeId: string;\n\tpath: string;\n\tbranchName: string;\n\tstatus?: \"active\" | \"merged\" | \"reclaimed\" | \"orphaned\";\n\tcreatedAt?: string;\n}\n\nexport interface ArtifactInput {\n\tartifactId: string;\n\trunId: string;\n\tnodeId: string;\n\tattemptId?: string;\n\tpath: string;\n\tkind: \"evidence\" | \"patch\" | \"result\" | \"checkpoint\" | \"contract\";\n\tsha256?: string;\n\tsizeBytes?: number;\n\tcreatedAt?: string;\n}\n\n/** A durable compensator row (mirrors recovery.ts CompensatorStep + run/node). */\nexport interface CompensatorInput {\n\tcompensatorId: string;\n\trunId: string;\n\tnodeId: string;\n\tkind: string;\n\tsequence: number;\n\tidempotent: boolean;\n\tapplied: boolean;\n\tpreparedStateHash?: string | null;\n\tcreatedAt?: string;\n}\n\nexport interface SchedulerEventInput {\n\teventId: string;\n\trunId: string;\n\toperationId: string;\n\tsequence: number;\n\ttimestamp: string;\n\tkind: string;\n\tstatus: string;\n\tcausationId?: string | null;\n\tnodeId?: string | null;\n\tdata?: JsonValue;\n}\n\nexport interface SchedulerEventRow {\n\teventId: string;\n\trunId: string;\n\toperationId: string;\n\tcausationId: string | null;\n\tsequence: number;\n\ttimestamp: string;\n\tkind: string;\n\tstatus: string;\n\tnodeId: string | null;\n\tdata: JsonValue;\n}\n\n/**\n * The durable scheduler persistence contract. Mutating methods that race a\n * status guard return `boolean` (true iff the row was actually changed) so\n * callers get guard-based CAS semantics. All methods are synchronous because\n * both `node:sqlite` and `better-sqlite3` are synchronous.\n */\nexport interface SchedulerStore {\n\t// connection / schema\n\topen(path: string): void;\n\tclose(): void;\n\tcreateSchema(): void;\n\texec(sql: string): void;\n\t/** Read a single PRAGMA scalar (first column of the first row). */\n\tpragma(name: string): JsonValue;\n\n\t// run lifecycle\n\tcreateRun(run: RunInput): void;\n\tgetRun(runId: string): RunRow | undefined;\n\tupdateRunStatus(runId: string, status: RunStatus, now?: string): boolean;\n\n\t// DAG ingestion (idempotent)\n\tingestDag(submission: DagSubmission): DagIngestionResult;\n\tgetNode(runId: string, nodeId: string): NodeRow | undefined;\n\tgetNodesByRun(runId: string): NodeRow[];\n\tgetEdgesByRun(runId: string): EdgeRow[];\n\n\t// conflict graph\n\tbuildConflictGraph(runId: string): ConflictEdge[];\n\tgetConflicts(runId: string): ConflictEdge[];\n\n\t// lease lifecycle (owner-token fenced)\n\tacquireLease(runId: string, nodeId: string, lease: LeaseInput): boolean;\n\theartbeat(runId: string, nodeId: string, ownerToken: string, now: string, expiresAt: string): boolean;\n\tstartNode(runId: string, nodeId: string, ownerToken: string, now: string): boolean;\n\treclaimExpiredLeases(runId: string, now: string): string[];\n\tgetLease(leaseId: string): LeaseRow | undefined;\n\n\t// scaffolded sibling-lane tables (schema-complete, minimal writers)\n\trecordAttempt(attempt: AttemptInput): void;\n\tgetAttemptsByRun(runId: string): AttemptInput[];\n\tregisterWorktree(worktree: WorktreeInput): void;\n\tgetWorktreesByRun(runId: string): WorktreeInput[];\n\tregisterCompensator(compensator: CompensatorInput): void;\n\tgetCompensatorsByNode(runId: string, nodeId: string): CompensatorInput[];\n\trecordArtifact(artifact: ArtifactInput): void;\n\tgetArtifactsByRun(runId: string): ArtifactInput[];\n\n\t// ledger mirror\n\tappendEvent(event: SchedulerEventInput): void;\n\tgetEvents(runId: string): SchedulerEventRow[];\n}\n\n/**\n * Canonical connection pragmas. WAL is a no-op for `:memory:` databases (SQLite\n * keeps an in-memory journal there) but is applied verbatim for file stores.\n */\nexport const SCHEDULER_STORE_PRAGMAS: readonly string[] = [\n\t\"PRAGMA journal_mode = WAL\",\n\t\"PRAGMA synchronous = NORMAL\",\n\t\"PRAGMA busy_timeout = 5000\",\n\t\"PRAGMA foreign_keys = ON\",\n\t\"PRAGMA temp_store = MEMORY\",\n];\n\n/** Tables the schema must create, in dependency-safe creation order. */\nexport const SCHEDULER_STORE_TABLES: readonly string[] = [\n\t\"runs\",\n\t\"nodes\",\n\t\"edges\",\n\t\"access\",\n\t\"conflicts\",\n\t\"attempts\",\n\t\"leases\",\n\t\"artifacts\",\n\t\"worktrees\",\n\t\"merge_queue\",\n\t\"compensators\",\n\t\"events\",\n];\n\n/**\n * Canonical SQLite WAL DDL. Parent tables precede children so FK declarations\n * resolve cleanly. This is the single source of truth for the durable schema.\n */\nexport const SCHEDULER_STORE_SCHEMA = `\nCREATE TABLE IF NOT EXISTS runs (\n run_id TEXT PRIMARY KEY,\n goal TEXT NOT NULL,\n topology TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'running'\n CHECK (status IN ('running','paused','completed','failed','cancelled')),\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n completed_at TEXT,\n dag_hash TEXT,\n root_node_id TEXT\n);\n\nCREATE TABLE IF NOT EXISTS nodes (\n node_id TEXT NOT NULL,\n run_id TEXT NOT NULL,\n role TEXT NOT NULL\n CHECK (role IN ('planner','explorer','coder','tester','reviewer','security','memory','synthesizer')),\n task TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued'\n CHECK (status IN ('queued','leased','running','verifying','completed','retry_wait',\n 'compensating','rolled_back','in_doubt','blocked','cancelled','failed')),\n idempotency_key TEXT NOT NULL,\n read_set TEXT NOT NULL DEFAULT '[]',\n write_set TEXT NOT NULL DEFAULT '[]',\n lease_id TEXT,\n lease_expires_at TEXT,\n heartbeat_at TEXT,\n retry_policy TEXT NOT NULL DEFAULT '{}',\n verification_contract TEXT,\n cost_budget REAL,\n attempt_count INTEGER NOT NULL DEFAULT 0,\n requeue_count INTEGER NOT NULL DEFAULT 0,\n retry_wait_until TEXT,\n created_at TEXT NOT NULL,\n started_at TEXT,\n finished_at TEXT,\n priority INTEGER NOT NULL DEFAULT 0,\n parallelizable INTEGER NOT NULL DEFAULT 1,\n PRIMARY KEY (run_id, node_id),\n FOREIGN KEY (run_id) REFERENCES runs(run_id) ON DELETE CASCADE,\n UNIQUE (run_id, idempotency_key)\n);\n\nCREATE TABLE IF NOT EXISTS edges (\n run_id TEXT NOT NULL,\n from_node_id TEXT NOT NULL,\n to_node_id TEXT NOT NULL,\n edge_type TEXT NOT NULL DEFAULT 'strong'\n CHECK (edge_type IN ('strong','weak')),\n PRIMARY KEY (run_id, from_node_id, to_node_id),\n FOREIGN KEY (run_id) REFERENCES runs(run_id) ON DELETE CASCADE,\n FOREIGN KEY (run_id, from_node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (run_id, to_node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS access (\n access_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n kind TEXT NOT NULL CHECK (kind IN ('read','write')),\n path TEXT NOT NULL,\n symbols TEXT NOT NULL DEFAULT '[]',\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n UNIQUE (run_id, node_id, kind, path, symbols)\n);\n\nCREATE TABLE IF NOT EXISTS conflicts (\n run_id TEXT NOT NULL,\n node_a TEXT NOT NULL,\n node_b TEXT NOT NULL,\n reason TEXT NOT NULL CHECK (reason IN ('write-write','write-read','read-write')),\n PRIMARY KEY (run_id, node_a, node_b),\n FOREIGN KEY (run_id, node_a) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (run_id, node_b) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n CHECK (node_a < node_b)\n);\n\nCREATE TABLE IF NOT EXISTS attempts (\n attempt_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n lease_id TEXT NOT NULL,\n started_at TEXT NOT NULL,\n finished_at TEXT,\n status TEXT NOT NULL\n CHECK (status IN ('running','completed','failed','rolled_back','in_doubt')),\n exit_code INTEGER,\n error_summary TEXT,\n worker_pid INTEGER,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS leases (\n lease_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n attempt_id TEXT,\n issued_at TEXT NOT NULL,\n expires_at TEXT NOT NULL,\n heartbeat_at TEXT,\n owner_token TEXT NOT NULL,\n released INTEGER NOT NULL DEFAULT 0,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (attempt_id) REFERENCES attempts(attempt_id) ON DELETE SET NULL\n);\n\nCREATE TABLE IF NOT EXISTS artifacts (\n artifact_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n attempt_id TEXT,\n path TEXT NOT NULL,\n kind TEXT NOT NULL\n CHECK (kind IN ('evidence','patch','result','checkpoint','contract')),\n sha256 TEXT,\n size_bytes INTEGER,\n created_at TEXT NOT NULL,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n FOREIGN KEY (attempt_id) REFERENCES attempts(attempt_id) ON DELETE SET NULL\n);\n\nCREATE TABLE IF NOT EXISTS worktrees (\n worktree_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n path TEXT NOT NULL,\n branch_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'active'\n CHECK (status IN ('active','merged','reclaimed','orphaned')),\n created_at TEXT NOT NULL,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS merge_queue (\n queue_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n branch_name TEXT NOT NULL,\n target_branch TEXT NOT NULL DEFAULT 'main',\n status TEXT NOT NULL DEFAULT 'pending'\n CHECK (status IN ('pending','merging','merged','conflict','blocked')),\n priority INTEGER NOT NULL DEFAULT 0,\n dag_depth INTEGER NOT NULL DEFAULT 0,\n lease_finished_at TEXT,\n created_at TEXT NOT NULL,\n merged_at TEXT,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS compensators (\n compensator_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n node_id TEXT NOT NULL,\n kind TEXT NOT NULL,\n sequence INTEGER NOT NULL,\n idempotent INTEGER NOT NULL DEFAULT 1,\n applied INTEGER NOT NULL DEFAULT 0,\n prepared_state_hash TEXT,\n created_at TEXT NOT NULL,\n FOREIGN KEY (run_id, node_id) REFERENCES nodes(run_id, node_id) ON DELETE CASCADE,\n UNIQUE (run_id, node_id, sequence)\n);\n\nCREATE TABLE IF NOT EXISTS events (\n event_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n operation_id TEXT NOT NULL,\n causation_id TEXT,\n sequence INTEGER NOT NULL,\n timestamp TEXT NOT NULL,\n kind TEXT NOT NULL,\n status TEXT NOT NULL,\n node_id TEXT,\n data TEXT NOT NULL,\n FOREIGN KEY (run_id) REFERENCES runs(run_id) ON DELETE CASCADE\n);\n\nCREATE INDEX IF NOT EXISTS idx_nodes_dispatch\n ON nodes(run_id, status, retry_wait_until, priority, attempt_count)\n WHERE status IN ('queued','retry_wait');\nCREATE INDEX IF NOT EXISTS idx_nodes_lease ON nodes(run_id, lease_id);\nCREATE INDEX IF NOT EXISTS idx_nodes_expired\n ON nodes(lease_expires_at)\n WHERE status = 'leased' OR status = 'running' OR status = 'verifying';\nCREATE INDEX IF NOT EXISTS idx_edges_to ON edges(run_id, to_node_id);\nCREATE INDEX IF NOT EXISTS idx_edges_from ON edges(run_id, from_node_id);\nCREATE INDEX IF NOT EXISTS idx_access_node ON access(run_id, node_id);\nCREATE INDEX IF NOT EXISTS idx_conflicts_run ON conflicts(run_id, node_a, node_b);\nCREATE INDEX IF NOT EXISTS idx_artifacts_path ON artifacts(run_id, path);\nCREATE INDEX IF NOT EXISTS idx_events_run_seq ON events(run_id, sequence);\nCREATE INDEX IF NOT EXISTS idx_events_node ON events(run_id, node_id, sequence);\n`;\n\n/**\n * Thrown when a DAG re-submission reuses an existing `node_id` within a run but\n * supplies a different canonical descriptor. DAGs are immutable within a run:\n * identical re-submissions are idempotent replays, but a changed definition for\n * an existing node id is a divergence the store surfaces fail-closed instead of\n * silently keeping the old or overwriting with the new.\n */\nexport class NodeRedefinitionError extends Error {\n\treadonly runId: string;\n\treadonly nodeId: string;\n\tconstructor(runId: string, nodeId: string) {\n\t\tsuper(\n\t\t\t`node \"${nodeId}\" in run \"${runId}\" was redefined with a different descriptor; DAGs are immutable within a run`,\n\t\t);\n\t\tthis.name = \"NodeRedefinitionError\";\n\t\tthis.runId = runId;\n\t\tthis.nodeId = nodeId;\n\t}\n}\n\n/** Default retry policy applied when a node omits one. */\nexport const DEFAULT_RETRY_POLICY: RetryPolicy = {\n\tmaxAttempts: 3,\n\tbaseMs: 1000,\n\tmaxMs: 30000,\n\tmultiplier: 2,\n};\n\n/**\n * Canonicalize one access entry: drop undefined symbols, sort symbols, so the\n * stable key never depends on declaration order.\n */\nexport function canonicalizeAccessEntry(entry: AccessSetEntry): { path: string; symbols: string[] } {\n\tconst symbols = entry.symbols === undefined ? [] : [...entry.symbols].sort(compareString);\n\treturn { path: entry.path, symbols };\n}\n\n/** Canonicalize an access set: canonicalize each entry, then sort entries. */\nexport function canonicalizeAccessSet(\n\tentries: readonly AccessSetEntry[] | undefined,\n): { path: string; symbols: string[] }[] {\n\tconst canonical = (entries ?? []).map(canonicalizeAccessEntry);\n\tcanonical.sort((a, b) => {\n\t\tconst byPath = compareString(a.path, b.path);\n\t\tif (byPath !== 0) {\n\t\t\treturn byPath;\n\t\t}\n\t\treturn compareString(stableStringify(a.symbols), stableStringify(b.symbols));\n\t});\n\treturn canonical;\n}\n\n/**\n * Deterministic node descriptor used for idempotency. Excludes runtime state\n * (status, leases, counters) so identical logical work always hashes the same.\n */\nexport function canonicalNodeDescriptor(node: NodeInput): JsonValue {\n\treturn {\n\t\tnodeId: node.nodeId,\n\t\trole: node.role,\n\t\ttask: node.task,\n\t\tpriority: node.priority ?? 0,\n\t\tparallelizable: node.parallelizable ?? true,\n\t\treadSet: canonicalizeAccessSet(node.readSet),\n\t\twriteSet: canonicalizeAccessSet(node.writeSet),\n\t};\n}\n\n/**\n * Stable idempotency key: `sha256(stableStringify({runId, descriptor}))`.\n * Two submissions of identical logical work produce the same key, so DAG\n * ingestion can deduplicate across root-coordinator retries (foundation §6.5).\n */\nexport function computeIdempotencyKey(runId: string, node: NodeInput): string {\n\treturn sha256Hex(stableStringify({ runId, descriptor: canonicalNodeDescriptor(node) }));\n}\n\n/** Stable hash over the whole DAG (nodes + edges), order-independent. */\nexport function computeDagHash(submission: DagSubmission): string {\n\tconst nodes = submission.nodes.map(canonicalNodeDescriptor);\n\tnodes.sort((a, b) => compareString(stableStringify(a), stableStringify(b)));\n\tconst edges = (submission.edges ?? []).map((edge) => ({\n\t\tfromNodeId: edge.fromNodeId,\n\t\ttoNodeId: edge.toNodeId,\n\t\tedgeType: edge.edgeType ?? \"strong\",\n\t}));\n\tedges.sort((a, b) => compareString(stableStringify(a), stableStringify(b)));\n\treturn sha256Hex(stableStringify({ runId: submission.run.runId, nodes, edges }));\n}\n\n/**\n * Classify the conflict between two nodes in canonical (nodeA < nodeB) order.\n *\n * Existence is decided by the shared pure policy `nodesConflict`; the label is\n * derived from the same atomic `accessEntriesConflict` predicate. Precedence is\n * deterministic: write/write, then write/read, then read/write. Returns\n * undefined when the nodes do not conflict.\n */\nexport function classifyConflict(nodeA: SchedulerNode, nodeB: SchedulerNode): ConflictReason | undefined {\n\tif (!nodesConflict(nodeA, nodeB)) {\n\t\treturn undefined;\n\t}\n\tif (setsConflict(nodeA.writeSet, nodeB.writeSet)) {\n\t\treturn \"write-write\";\n\t}\n\tif (setsConflict(nodeA.writeSet, nodeB.readSet)) {\n\t\treturn \"write-read\";\n\t}\n\tif (setsConflict(nodeA.readSet, nodeB.writeSet)) {\n\t\treturn \"read-write\";\n\t}\n\t// nodesConflict was true, so one of the above must hold; fall back defensively.\n\treturn \"write-write\";\n}\n\nfunction setsConflict(left: readonly AccessSetEntry[], right: readonly AccessSetEntry[]): boolean {\n\tfor (const l of left) {\n\t\tfor (const r of right) {\n\t\t\tif (accessEntriesConflict(l, r)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction compareString(a: string, b: string): number {\n\tif (a < b) {\n\t\treturn -1;\n\t}\n\tif (a > b) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\n"]}
|