open-multi-agent-kit 0.80.7 → 0.90.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -27
- package/README.md +81 -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 +8 -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/automation/index.d.ts +359 -0
- package/dist/core/automation/index.d.ts.map +1 -0
- package/dist/core/automation/index.js +665 -0
- package/dist/core/automation/index.js.map +1 -0
- 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 +53 -0
- package/dist/core/browser-use.d.ts.map +1 -0
- package/dist/core/browser-use.js +108 -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 +6 -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 +73 -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/footer-data-provider.d.ts +3 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +4 -0
- package/dist/core/footer-data-provider.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 +2 -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/pi-package-intake-candidates.d.ts +21 -0
- package/dist/core/pi-package-intake-candidates.d.ts.map +1 -0
- package/dist/core/pi-package-intake-candidates.js +109 -0
- package/dist/core/pi-package-intake-candidates.js.map +1 -0
- package/dist/core/pi-package-intake.d.ts +43 -0
- package/dist/core/pi-package-intake.d.ts.map +1 -0
- package/dist/core/pi-package-intake.js +122 -0
- package/dist/core/pi-package-intake.js.map +1 -0
- 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/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +1 -0
- package/dist/core/provider-display-names.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 +67 -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 +5 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +149 -36
- 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-runtime-state.d.ts +5 -0
- package/dist/core/todo-runtime-state.d.ts.map +1 -0
- package/dist/core/todo-runtime-state.js +12 -0
- package/dist/core/todo-runtime-state.js.map +1 -0
- 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 +5 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -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 +30 -0
- package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-layout.js +197 -0
- package/dist/modes/interactive/components/control-panel-layout.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +6 -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 +29 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -0
- package/dist/modes/interactive/components/control-panel.d.ts +9 -31
- package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel.js +49 -168
- 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 +7 -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 +80 -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 +25 -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/providers.md +12 -0
- 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,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `cli.contract.verify` — durable, tamper-evident verification of a CLI contract.
|
|
3
|
-
*
|
|
4
|
-
* Builds on the harness-control hash-chained ledger to record a contract
|
|
5
|
-
* verification as two correlated events (started -> completed/blocked), each
|
|
6
|
-
* carrying the SHA-256 of the contract's manifest and test files. After
|
|
7
|
-
* recording, the whole ledger is re-verified; a contract is only `passed` when
|
|
8
|
-
* both the gate succeeds AND the hash-chain ledger verifies. This lets a release
|
|
9
|
-
* gate detect after-the-fact tampering of either the contract artifacts or the
|
|
10
|
-
* audit ledger itself.
|
|
11
|
-
*
|
|
12
|
-
* Dependency-free: uses node:crypto only (no fast-check/xterm/etc.).
|
|
13
|
-
*/
|
|
14
|
-
export declare const CONTRACT_VERIFY_EVENT_KIND = "cli.contract.verify";
|
|
15
|
-
export declare const CONTRACT_RESULT_SCHEMA_VERSION = "omk.cli-contract.result.v1";
|
|
16
|
-
export interface ContractFileRef {
|
|
17
|
-
readonly id: string;
|
|
18
|
-
readonly path: string;
|
|
19
|
-
}
|
|
20
|
-
export interface ContractFileHash {
|
|
21
|
-
readonly id: string;
|
|
22
|
-
readonly path: string;
|
|
23
|
-
/** `sha256:<hex>` of the file contents. */
|
|
24
|
-
readonly sha256: string;
|
|
25
|
-
}
|
|
26
|
-
export type ContractVerificationStatus = "passed" | "blocked";
|
|
27
|
-
export interface ContractGateResult {
|
|
28
|
-
readonly ok: boolean;
|
|
29
|
-
readonly details?: string;
|
|
30
|
-
}
|
|
31
|
-
export interface ContractLedgerSummary {
|
|
32
|
-
readonly path: string;
|
|
33
|
-
readonly verified: boolean;
|
|
34
|
-
readonly errors: readonly string[];
|
|
35
|
-
}
|
|
36
|
-
export interface ContractResult {
|
|
37
|
-
readonly schemaVersion: typeof CONTRACT_RESULT_SCHEMA_VERSION;
|
|
38
|
-
readonly contractId: string;
|
|
39
|
-
readonly contractVersion: string;
|
|
40
|
-
readonly status: ContractVerificationStatus;
|
|
41
|
-
readonly manifestHash: string;
|
|
42
|
-
readonly testFileHash: string;
|
|
43
|
-
readonly files: readonly ContractFileHash[];
|
|
44
|
-
readonly gate: ContractGateResult;
|
|
45
|
-
readonly ledger: ContractLedgerSummary;
|
|
46
|
-
readonly startedAt: string;
|
|
47
|
-
readonly completedAt: string;
|
|
48
|
-
}
|
|
49
|
-
export interface VerifyCliContractOptions {
|
|
50
|
-
readonly contractId: string;
|
|
51
|
-
readonly contractVersion: string;
|
|
52
|
-
readonly manifestPath: string;
|
|
53
|
-
readonly testPath: string;
|
|
54
|
-
readonly extraFiles?: readonly ContractFileRef[];
|
|
55
|
-
/** Runs the actual contract gate (e.g. the vitest contract file). */
|
|
56
|
-
readonly runGate: () => ContractGateResult | Promise<ContractGateResult>;
|
|
57
|
-
readonly cwd?: string;
|
|
58
|
-
readonly logPath?: string;
|
|
59
|
-
readonly runId?: string;
|
|
60
|
-
/** When set, a JSON contract-result is written here (atomically). */
|
|
61
|
-
readonly resultPath?: string;
|
|
62
|
-
readonly now?: () => Date;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Verify a CLI contract and append a tamper-evident audit trail.
|
|
66
|
-
*
|
|
67
|
-
* Algorithm:
|
|
68
|
-
* 1. SHA-256 the manifest, test, and any extra contract files.
|
|
69
|
-
* 2. Record a `started` ledger event (manifest/test hashes + artifact manifest).
|
|
70
|
-
* 3. Run the contract gate.
|
|
71
|
-
* 4. Record a `completed` (gate ok) or `blocked` (gate failed) ledger event.
|
|
72
|
-
* 5. Re-verify the whole hash-chain ledger.
|
|
73
|
-
* 6. Status is `passed` only when the gate passed AND the ledger verifies;
|
|
74
|
-
* otherwise `blocked`.
|
|
75
|
-
* 7. Optionally write a canonical contract-result.json.
|
|
76
|
-
*/
|
|
77
|
-
export declare function verifyCliContract(options: VerifyCliContractOptions): Promise<ContractResult>;
|
|
78
|
-
//# sourceMappingURL=contract-verification.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract-verification.d.ts","sourceRoot":"","sources":["../../src/core/contract-verification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,aAAa,EAAE,OAAO,8BAA8B,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CAgFlG","sourcesContent":["/**\n * `cli.contract.verify` — durable, tamper-evident verification of a CLI contract.\n *\n * Builds on the harness-control hash-chained ledger to record a contract\n * verification as two correlated events (started -> completed/blocked), each\n * carrying the SHA-256 of the contract's manifest and test files. After\n * recording, the whole ledger is re-verified; a contract is only `passed` when\n * both the gate succeeds AND the hash-chain ledger verifies. This lets a release\n * gate detect after-the-fact tampering of either the contract artifacts or the\n * audit ledger itself.\n *\n * Dependency-free: uses node:crypto only (no fast-check/xterm/etc.).\n */\n\nimport { createHash, randomUUID } from \"node:crypto\";\nimport { mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { dirname, resolve } from \"node:path\";\nimport {\n\ttype HarnessControlEventOptions,\n\ttype HarnessControlEventWriteResult,\n\trecordHarnessControlEvent,\n\tresolveHarnessControlEventLogPath,\n\tverifyHarnessControlLedger,\n} from \"./harness-control-events.ts\";\n\nexport const CONTRACT_VERIFY_EVENT_KIND = \"cli.contract.verify\";\nexport const CONTRACT_RESULT_SCHEMA_VERSION = \"omk.cli-contract.result.v1\";\n\nexport interface ContractFileRef {\n\treadonly id: string;\n\treadonly path: string;\n}\n\nexport interface ContractFileHash {\n\treadonly id: string;\n\treadonly path: string;\n\t/** `sha256:<hex>` of the file contents. */\n\treadonly sha256: string;\n}\n\nexport type ContractVerificationStatus = \"passed\" | \"blocked\";\n\nexport interface ContractGateResult {\n\treadonly ok: boolean;\n\treadonly details?: string;\n}\n\nexport interface ContractLedgerSummary {\n\treadonly path: string;\n\treadonly verified: boolean;\n\treadonly errors: readonly string[];\n}\n\nexport interface ContractResult {\n\treadonly schemaVersion: typeof CONTRACT_RESULT_SCHEMA_VERSION;\n\treadonly contractId: string;\n\treadonly contractVersion: string;\n\treadonly status: ContractVerificationStatus;\n\treadonly manifestHash: string;\n\treadonly testFileHash: string;\n\treadonly files: readonly ContractFileHash[];\n\treadonly gate: ContractGateResult;\n\treadonly ledger: ContractLedgerSummary;\n\treadonly startedAt: string;\n\treadonly completedAt: string;\n}\n\nexport interface VerifyCliContractOptions {\n\treadonly contractId: string;\n\treadonly contractVersion: string;\n\treadonly manifestPath: string;\n\treadonly testPath: string;\n\treadonly extraFiles?: readonly ContractFileRef[];\n\t/** Runs the actual contract gate (e.g. the vitest contract file). */\n\treadonly runGate: () => ContractGateResult | Promise<ContractGateResult>;\n\treadonly cwd?: string;\n\treadonly logPath?: string;\n\treadonly runId?: string;\n\t/** When set, a JSON contract-result is written here (atomically). */\n\treadonly resultPath?: string;\n\treadonly now?: () => Date;\n}\n\nfunction hashFile(path: string): string {\n\treturn `sha256:${createHash(\"sha256\").update(readFileSync(path)).digest(\"hex\")}`;\n}\n\nfunction writeJsonAtomic(path: string, value: unknown): void {\n\tmkdirSync(dirname(path), { recursive: true });\n\tconst tmp = `${path}.tmp-${process.pid}-${randomUUID()}`;\n\twriteFileSync(tmp, `${JSON.stringify(value, null, 2)}\\n`, { encoding: \"utf-8\", mode: 0o600 });\n\trenameSync(tmp, path);\n}\n\nfunction ledgerErrorOf(record: HarnessControlEventWriteResult): string | undefined {\n\tif (record.ok) return undefined;\n\treturn record.error ? `event not recorded: ${record.error}` : \"event not recorded\";\n}\n\n/**\n * Verify a CLI contract and append a tamper-evident audit trail.\n *\n * Algorithm:\n * 1. SHA-256 the manifest, test, and any extra contract files.\n * 2. Record a `started` ledger event (manifest/test hashes + artifact manifest).\n * 3. Run the contract gate.\n * 4. Record a `completed` (gate ok) or `blocked` (gate failed) ledger event.\n * 5. Re-verify the whole hash-chain ledger.\n * 6. Status is `passed` only when the gate passed AND the ledger verifies;\n * otherwise `blocked`.\n * 7. Optionally write a canonical contract-result.json.\n */\nexport async function verifyCliContract(options: VerifyCliContractOptions): Promise<ContractResult> {\n\tconst clock = options.now ?? (() => new Date());\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst operationId = randomUUID();\n\tconst startedAt = clock().toISOString();\n\n\tconst files: ContractFileHash[] = [\n\t\t{ id: \"manifest\", path: options.manifestPath, sha256: hashFile(options.manifestPath) },\n\t\t{ id: \"test\", path: options.testPath, sha256: hashFile(options.testPath) },\n\t\t...(options.extraFiles ?? []).map((file) => ({ id: file.id, path: file.path, sha256: hashFile(file.path) })),\n\t];\n\tconst manifestHash = files[0]?.sha256 ?? \"\";\n\tconst testFileHash = files[1]?.sha256 ?? \"\";\n\tconst artifactRefs = files.map((file) => file.path);\n\n\tconst eventBase: HarnessControlEventOptions = {\n\t\tcwd,\n\t\tlogPath: options.logPath,\n\t\trunId: options.runId,\n\t\toperationId,\n\t\tcorrelationId: operationId,\n\t\tartifactRefs,\n\t};\n\n\tconst startedRecord = recordHarnessControlEvent(\n\t\tCONTRACT_VERIFY_EVENT_KIND,\n\t\t\"started\",\n\t\t{ contractId: options.contractId, contractVersion: options.contractVersion, manifestHash, testFileHash, files },\n\t\t{ ...eventBase, now: clock() },\n\t);\n\n\tconst gate = await options.runGate();\n\tconst completedAt = clock().toISOString();\n\n\tconst completedRecord = recordHarnessControlEvent(\n\t\tCONTRACT_VERIFY_EVENT_KIND,\n\t\tgate.ok ? \"completed\" : \"blocked\",\n\t\t{\n\t\t\tcontractId: options.contractId,\n\t\t\tcontractVersion: options.contractVersion,\n\t\t\tmanifestHash,\n\t\t\ttestFileHash,\n\t\t\tgate,\n\t\t},\n\t\t{ ...eventBase, causationId: startedRecord.event?.eventId ?? null, now: clock() },\n\t);\n\n\tconst ledgerPath = resolveHarnessControlEventLogPath({ cwd, logPath: options.logPath, runId: options.runId });\n\tconst ledgerErrors: string[] = [];\n\tlet ledgerChainOk = true;\n\tif (ledgerPath) {\n\t\tconst verification = verifyHarnessControlLedger(ledgerPath);\n\t\tledgerChainOk = verification.ok;\n\t\tledgerErrors.push(...verification.errors);\n\t}\n\tfor (const record of [startedRecord, completedRecord]) {\n\t\tconst error = ledgerErrorOf(record);\n\t\tif (error) ledgerErrors.push(error);\n\t}\n\tconst ledgerVerified = ledgerChainOk && ledgerErrors.length === 0;\n\n\tconst result: ContractResult = {\n\t\tschemaVersion: CONTRACT_RESULT_SCHEMA_VERSION,\n\t\tcontractId: options.contractId,\n\t\tcontractVersion: options.contractVersion,\n\t\tstatus: gate.ok && ledgerVerified ? \"passed\" : \"blocked\",\n\t\tmanifestHash,\n\t\ttestFileHash,\n\t\tfiles,\n\t\tgate,\n\t\tledger: { path: ledgerPath ?? \"\", verified: ledgerVerified, errors: ledgerErrors },\n\t\tstartedAt,\n\t\tcompletedAt,\n\t};\n\n\tif (options.resultPath) {\n\t\twriteJsonAtomic(resolve(cwd, options.resultPath), result);\n\t}\n\n\treturn result;\n}\n"]}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `cli.contract.verify` — durable, tamper-evident verification of a CLI contract.
|
|
3
|
-
*
|
|
4
|
-
* Builds on the harness-control hash-chained ledger to record a contract
|
|
5
|
-
* verification as two correlated events (started -> completed/blocked), each
|
|
6
|
-
* carrying the SHA-256 of the contract's manifest and test files. After
|
|
7
|
-
* recording, the whole ledger is re-verified; a contract is only `passed` when
|
|
8
|
-
* both the gate succeeds AND the hash-chain ledger verifies. This lets a release
|
|
9
|
-
* gate detect after-the-fact tampering of either the contract artifacts or the
|
|
10
|
-
* audit ledger itself.
|
|
11
|
-
*
|
|
12
|
-
* Dependency-free: uses node:crypto only (no fast-check/xterm/etc.).
|
|
13
|
-
*/
|
|
14
|
-
import { createHash, randomUUID } from "node:crypto";
|
|
15
|
-
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
16
|
-
import { dirname, resolve } from "node:path";
|
|
17
|
-
import { recordHarnessControlEvent, resolveHarnessControlEventLogPath, verifyHarnessControlLedger, } from "./harness-control-events.js";
|
|
18
|
-
export const CONTRACT_VERIFY_EVENT_KIND = "cli.contract.verify";
|
|
19
|
-
export const CONTRACT_RESULT_SCHEMA_VERSION = "omk.cli-contract.result.v1";
|
|
20
|
-
function hashFile(path) {
|
|
21
|
-
return `sha256:${createHash("sha256").update(readFileSync(path)).digest("hex")}`;
|
|
22
|
-
}
|
|
23
|
-
function writeJsonAtomic(path, value) {
|
|
24
|
-
mkdirSync(dirname(path), { recursive: true });
|
|
25
|
-
const tmp = `${path}.tmp-${process.pid}-${randomUUID()}`;
|
|
26
|
-
writeFileSync(tmp, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf-8", mode: 0o600 });
|
|
27
|
-
renameSync(tmp, path);
|
|
28
|
-
}
|
|
29
|
-
function ledgerErrorOf(record) {
|
|
30
|
-
if (record.ok)
|
|
31
|
-
return undefined;
|
|
32
|
-
return record.error ? `event not recorded: ${record.error}` : "event not recorded";
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Verify a CLI contract and append a tamper-evident audit trail.
|
|
36
|
-
*
|
|
37
|
-
* Algorithm:
|
|
38
|
-
* 1. SHA-256 the manifest, test, and any extra contract files.
|
|
39
|
-
* 2. Record a `started` ledger event (manifest/test hashes + artifact manifest).
|
|
40
|
-
* 3. Run the contract gate.
|
|
41
|
-
* 4. Record a `completed` (gate ok) or `blocked` (gate failed) ledger event.
|
|
42
|
-
* 5. Re-verify the whole hash-chain ledger.
|
|
43
|
-
* 6. Status is `passed` only when the gate passed AND the ledger verifies;
|
|
44
|
-
* otherwise `blocked`.
|
|
45
|
-
* 7. Optionally write a canonical contract-result.json.
|
|
46
|
-
*/
|
|
47
|
-
export async function verifyCliContract(options) {
|
|
48
|
-
const clock = options.now ?? (() => new Date());
|
|
49
|
-
const cwd = options.cwd ?? process.cwd();
|
|
50
|
-
const operationId = randomUUID();
|
|
51
|
-
const startedAt = clock().toISOString();
|
|
52
|
-
const files = [
|
|
53
|
-
{ id: "manifest", path: options.manifestPath, sha256: hashFile(options.manifestPath) },
|
|
54
|
-
{ id: "test", path: options.testPath, sha256: hashFile(options.testPath) },
|
|
55
|
-
...(options.extraFiles ?? []).map((file) => ({ id: file.id, path: file.path, sha256: hashFile(file.path) })),
|
|
56
|
-
];
|
|
57
|
-
const manifestHash = files[0]?.sha256 ?? "";
|
|
58
|
-
const testFileHash = files[1]?.sha256 ?? "";
|
|
59
|
-
const artifactRefs = files.map((file) => file.path);
|
|
60
|
-
const eventBase = {
|
|
61
|
-
cwd,
|
|
62
|
-
logPath: options.logPath,
|
|
63
|
-
runId: options.runId,
|
|
64
|
-
operationId,
|
|
65
|
-
correlationId: operationId,
|
|
66
|
-
artifactRefs,
|
|
67
|
-
};
|
|
68
|
-
const startedRecord = recordHarnessControlEvent(CONTRACT_VERIFY_EVENT_KIND, "started", { contractId: options.contractId, contractVersion: options.contractVersion, manifestHash, testFileHash, files }, { ...eventBase, now: clock() });
|
|
69
|
-
const gate = await options.runGate();
|
|
70
|
-
const completedAt = clock().toISOString();
|
|
71
|
-
const completedRecord = recordHarnessControlEvent(CONTRACT_VERIFY_EVENT_KIND, gate.ok ? "completed" : "blocked", {
|
|
72
|
-
contractId: options.contractId,
|
|
73
|
-
contractVersion: options.contractVersion,
|
|
74
|
-
manifestHash,
|
|
75
|
-
testFileHash,
|
|
76
|
-
gate,
|
|
77
|
-
}, { ...eventBase, causationId: startedRecord.event?.eventId ?? null, now: clock() });
|
|
78
|
-
const ledgerPath = resolveHarnessControlEventLogPath({ cwd, logPath: options.logPath, runId: options.runId });
|
|
79
|
-
const ledgerErrors = [];
|
|
80
|
-
let ledgerChainOk = true;
|
|
81
|
-
if (ledgerPath) {
|
|
82
|
-
const verification = verifyHarnessControlLedger(ledgerPath);
|
|
83
|
-
ledgerChainOk = verification.ok;
|
|
84
|
-
ledgerErrors.push(...verification.errors);
|
|
85
|
-
}
|
|
86
|
-
for (const record of [startedRecord, completedRecord]) {
|
|
87
|
-
const error = ledgerErrorOf(record);
|
|
88
|
-
if (error)
|
|
89
|
-
ledgerErrors.push(error);
|
|
90
|
-
}
|
|
91
|
-
const ledgerVerified = ledgerChainOk && ledgerErrors.length === 0;
|
|
92
|
-
const result = {
|
|
93
|
-
schemaVersion: CONTRACT_RESULT_SCHEMA_VERSION,
|
|
94
|
-
contractId: options.contractId,
|
|
95
|
-
contractVersion: options.contractVersion,
|
|
96
|
-
status: gate.ok && ledgerVerified ? "passed" : "blocked",
|
|
97
|
-
manifestHash,
|
|
98
|
-
testFileHash,
|
|
99
|
-
files,
|
|
100
|
-
gate,
|
|
101
|
-
ledger: { path: ledgerPath ?? "", verified: ledgerVerified, errors: ledgerErrors },
|
|
102
|
-
startedAt,
|
|
103
|
-
completedAt,
|
|
104
|
-
};
|
|
105
|
-
if (options.resultPath) {
|
|
106
|
-
writeJsonAtomic(resolve(cwd, options.resultPath), result);
|
|
107
|
-
}
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=contract-verification.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract-verification.js","sourceRoot":"","sources":["../../src/core/contract-verification.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `cli.contract.verify` — durable, tamper-evident verification of a CLI contract.\n *\n * Builds on the harness-control hash-chained ledger to record a contract\n * verification as two correlated events (started -> completed/blocked), each\n * carrying the SHA-256 of the contract's manifest and test files. After\n * recording, the whole ledger is re-verified; a contract is only `passed` when\n * both the gate succeeds AND the hash-chain ledger verifies. This lets a release\n * gate detect after-the-fact tampering of either the contract artifacts or the\n * audit ledger itself.\n *\n * Dependency-free: uses node:crypto only (no fast-check/xterm/etc.).\n */\n\nimport { createHash, randomUUID } from \"node:crypto\";\nimport { mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { dirname, resolve } from \"node:path\";\nimport {\n\ttype HarnessControlEventOptions,\n\ttype HarnessControlEventWriteResult,\n\trecordHarnessControlEvent,\n\tresolveHarnessControlEventLogPath,\n\tverifyHarnessControlLedger,\n} from \"./harness-control-events.ts\";\n\nexport const CONTRACT_VERIFY_EVENT_KIND = \"cli.contract.verify\";\nexport const CONTRACT_RESULT_SCHEMA_VERSION = \"omk.cli-contract.result.v1\";\n\nexport interface ContractFileRef {\n\treadonly id: string;\n\treadonly path: string;\n}\n\nexport interface ContractFileHash {\n\treadonly id: string;\n\treadonly path: string;\n\t/** `sha256:<hex>` of the file contents. */\n\treadonly sha256: string;\n}\n\nexport type ContractVerificationStatus = \"passed\" | \"blocked\";\n\nexport interface ContractGateResult {\n\treadonly ok: boolean;\n\treadonly details?: string;\n}\n\nexport interface ContractLedgerSummary {\n\treadonly path: string;\n\treadonly verified: boolean;\n\treadonly errors: readonly string[];\n}\n\nexport interface ContractResult {\n\treadonly schemaVersion: typeof CONTRACT_RESULT_SCHEMA_VERSION;\n\treadonly contractId: string;\n\treadonly contractVersion: string;\n\treadonly status: ContractVerificationStatus;\n\treadonly manifestHash: string;\n\treadonly testFileHash: string;\n\treadonly files: readonly ContractFileHash[];\n\treadonly gate: ContractGateResult;\n\treadonly ledger: ContractLedgerSummary;\n\treadonly startedAt: string;\n\treadonly completedAt: string;\n}\n\nexport interface VerifyCliContractOptions {\n\treadonly contractId: string;\n\treadonly contractVersion: string;\n\treadonly manifestPath: string;\n\treadonly testPath: string;\n\treadonly extraFiles?: readonly ContractFileRef[];\n\t/** Runs the actual contract gate (e.g. the vitest contract file). */\n\treadonly runGate: () => ContractGateResult | Promise<ContractGateResult>;\n\treadonly cwd?: string;\n\treadonly logPath?: string;\n\treadonly runId?: string;\n\t/** When set, a JSON contract-result is written here (atomically). */\n\treadonly resultPath?: string;\n\treadonly now?: () => Date;\n}\n\nfunction hashFile(path: string): string {\n\treturn `sha256:${createHash(\"sha256\").update(readFileSync(path)).digest(\"hex\")}`;\n}\n\nfunction writeJsonAtomic(path: string, value: unknown): void {\n\tmkdirSync(dirname(path), { recursive: true });\n\tconst tmp = `${path}.tmp-${process.pid}-${randomUUID()}`;\n\twriteFileSync(tmp, `${JSON.stringify(value, null, 2)}\\n`, { encoding: \"utf-8\", mode: 0o600 });\n\trenameSync(tmp, path);\n}\n\nfunction ledgerErrorOf(record: HarnessControlEventWriteResult): string | undefined {\n\tif (record.ok) return undefined;\n\treturn record.error ? `event not recorded: ${record.error}` : \"event not recorded\";\n}\n\n/**\n * Verify a CLI contract and append a tamper-evident audit trail.\n *\n * Algorithm:\n * 1. SHA-256 the manifest, test, and any extra contract files.\n * 2. Record a `started` ledger event (manifest/test hashes + artifact manifest).\n * 3. Run the contract gate.\n * 4. Record a `completed` (gate ok) or `blocked` (gate failed) ledger event.\n * 5. Re-verify the whole hash-chain ledger.\n * 6. Status is `passed` only when the gate passed AND the ledger verifies;\n * otherwise `blocked`.\n * 7. Optionally write a canonical contract-result.json.\n */\nexport async function verifyCliContract(options: VerifyCliContractOptions): Promise<ContractResult> {\n\tconst clock = options.now ?? (() => new Date());\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst operationId = randomUUID();\n\tconst startedAt = clock().toISOString();\n\n\tconst files: ContractFileHash[] = [\n\t\t{ id: \"manifest\", path: options.manifestPath, sha256: hashFile(options.manifestPath) },\n\t\t{ id: \"test\", path: options.testPath, sha256: hashFile(options.testPath) },\n\t\t...(options.extraFiles ?? []).map((file) => ({ id: file.id, path: file.path, sha256: hashFile(file.path) })),\n\t];\n\tconst manifestHash = files[0]?.sha256 ?? \"\";\n\tconst testFileHash = files[1]?.sha256 ?? \"\";\n\tconst artifactRefs = files.map((file) => file.path);\n\n\tconst eventBase: HarnessControlEventOptions = {\n\t\tcwd,\n\t\tlogPath: options.logPath,\n\t\trunId: options.runId,\n\t\toperationId,\n\t\tcorrelationId: operationId,\n\t\tartifactRefs,\n\t};\n\n\tconst startedRecord = recordHarnessControlEvent(\n\t\tCONTRACT_VERIFY_EVENT_KIND,\n\t\t\"started\",\n\t\t{ contractId: options.contractId, contractVersion: options.contractVersion, manifestHash, testFileHash, files },\n\t\t{ ...eventBase, now: clock() },\n\t);\n\n\tconst gate = await options.runGate();\n\tconst completedAt = clock().toISOString();\n\n\tconst completedRecord = recordHarnessControlEvent(\n\t\tCONTRACT_VERIFY_EVENT_KIND,\n\t\tgate.ok ? \"completed\" : \"blocked\",\n\t\t{\n\t\t\tcontractId: options.contractId,\n\t\t\tcontractVersion: options.contractVersion,\n\t\t\tmanifestHash,\n\t\t\ttestFileHash,\n\t\t\tgate,\n\t\t},\n\t\t{ ...eventBase, causationId: startedRecord.event?.eventId ?? null, now: clock() },\n\t);\n\n\tconst ledgerPath = resolveHarnessControlEventLogPath({ cwd, logPath: options.logPath, runId: options.runId });\n\tconst ledgerErrors: string[] = [];\n\tlet ledgerChainOk = true;\n\tif (ledgerPath) {\n\t\tconst verification = verifyHarnessControlLedger(ledgerPath);\n\t\tledgerChainOk = verification.ok;\n\t\tledgerErrors.push(...verification.errors);\n\t}\n\tfor (const record of [startedRecord, completedRecord]) {\n\t\tconst error = ledgerErrorOf(record);\n\t\tif (error) ledgerErrors.push(error);\n\t}\n\tconst ledgerVerified = ledgerChainOk && ledgerErrors.length === 0;\n\n\tconst result: ContractResult = {\n\t\tschemaVersion: CONTRACT_RESULT_SCHEMA_VERSION,\n\t\tcontractId: options.contractId,\n\t\tcontractVersion: options.contractVersion,\n\t\tstatus: gate.ok && ledgerVerified ? \"passed\" : \"blocked\",\n\t\tmanifestHash,\n\t\ttestFileHash,\n\t\tfiles,\n\t\tgate,\n\t\tledger: { path: ledgerPath ?? \"\", verified: ledgerVerified, errors: ledgerErrors },\n\t\tstartedAt,\n\t\tcompletedAt,\n\t};\n\n\tif (options.resultPath) {\n\t\twriteJsonAtomic(resolve(cwd, options.resultPath), result);\n\t}\n\n\treturn result;\n}\n"]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One-shot freedom-mode banner.
|
|
3
|
-
*
|
|
4
|
-
* The interactive session calls `bannerOnce(cfg, memo)` once at startup. The
|
|
5
|
-
* memo is a session-scoped object that this module mutates so the same banner
|
|
6
|
-
* is never rendered twice in the same session. The memo lives wherever the
|
|
7
|
-
* session does; that keeps the banner module pure and testable.
|
|
8
|
-
*/
|
|
9
|
-
import type { FreedomConfig } from "./config.ts";
|
|
10
|
-
export interface BannerMemo {
|
|
11
|
-
shown?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare function bannerOnce(cfg: FreedomConfig, memo: BannerMemo): string | undefined;
|
|
14
|
-
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/core/freedom/banner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,UAAU;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAcD,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAMnF","sourcesContent":["/**\n * One-shot freedom-mode banner.\n *\n * The interactive session calls `bannerOnce(cfg, memo)` once at startup. The\n * memo is a session-scoped object that this module mutates so the same banner\n * is never rendered twice in the same session. The memo lives wherever the\n * session does; that keeps the banner module pure and testable.\n */\nimport type { FreedomConfig } from \"./config.ts\";\n\nexport interface BannerMemo {\n\tshown?: boolean;\n}\n\nconst BANNER_TEMPLATE = `\n╔══════════════════════════════════════════════════════════╗\n║ OMK FREEDOM MODE — ACTIVE ║\n║ ║\n║ approval_policy = yolo ║\n║ safety floor = enforced (secrets / privilege / ║\n║ fs / scope) ║\n║ ║\n║ > User autonomy. Bounded execution. No moralizing. ║\n╚══════════════════════════════════════════════════════════╝\n`;\n\nexport function bannerOnce(cfg: FreedomConfig, memo: BannerMemo): string | undefined {\n\tif (!cfg.enabled) return undefined;\n\tif (!cfg.banner.show) return undefined;\n\tif (memo.shown) return undefined;\n\tmemo.shown = true;\n\treturn BANNER_TEMPLATE;\n}\n"]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
const BANNER_TEMPLATE = `
|
|
2
|
-
╔══════════════════════════════════════════════════════════╗
|
|
3
|
-
║ OMK FREEDOM MODE — ACTIVE ║
|
|
4
|
-
║ ║
|
|
5
|
-
║ approval_policy = yolo ║
|
|
6
|
-
║ safety floor = enforced (secrets / privilege / ║
|
|
7
|
-
║ fs / scope) ║
|
|
8
|
-
║ ║
|
|
9
|
-
║ > User autonomy. Bounded execution. No moralizing. ║
|
|
10
|
-
╚══════════════════════════════════════════════════════════╝
|
|
11
|
-
`;
|
|
12
|
-
export function bannerOnce(cfg, memo) {
|
|
13
|
-
if (!cfg.enabled)
|
|
14
|
-
return undefined;
|
|
15
|
-
if (!cfg.banner.show)
|
|
16
|
-
return undefined;
|
|
17
|
-
if (memo.shown)
|
|
18
|
-
return undefined;
|
|
19
|
-
memo.shown = true;
|
|
20
|
-
return BANNER_TEMPLATE;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=banner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/core/freedom/banner.ts"],"names":[],"mappings":"AAcA,MAAM,eAAe,GAAG;;;;;;;;;;CAUvB,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,GAAkB,EAAE,IAAgB,EAAsB;IACpF,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,OAAO,eAAe,CAAC;AAAA,CACvB","sourcesContent":["/**\n * One-shot freedom-mode banner.\n *\n * The interactive session calls `bannerOnce(cfg, memo)` once at startup. The\n * memo is a session-scoped object that this module mutates so the same banner\n * is never rendered twice in the same session. The memo lives wherever the\n * session does; that keeps the banner module pure and testable.\n */\nimport type { FreedomConfig } from \"./config.ts\";\n\nexport interface BannerMemo {\n\tshown?: boolean;\n}\n\nconst BANNER_TEMPLATE = `\n╔══════════════════════════════════════════════════════════╗\n║ OMK FREEDOM MODE — ACTIVE ║\n║ ║\n║ approval_policy = yolo ║\n║ safety floor = enforced (secrets / privilege / ║\n║ fs / scope) ║\n║ ║\n║ > User autonomy. Bounded execution. No moralizing. ║\n╚══════════════════════════════════════════════════════════╝\n`;\n\nexport function bannerOnce(cfg: FreedomConfig, memo: BannerMemo): string | undefined {\n\tif (!cfg.enabled) return undefined;\n\tif (!cfg.banner.show) return undefined;\n\tif (memo.shown) return undefined;\n\tmemo.shown = true;\n\treturn BANNER_TEMPLATE;\n}\n"]}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export type ApprovalPolicy = "yolo" | "prompt-per-tool";
|
|
2
|
-
export interface FreedomConfig {
|
|
3
|
-
enabled: boolean;
|
|
4
|
-
approvalPolicy: ApprovalPolicy;
|
|
5
|
-
yoloMode: boolean;
|
|
6
|
-
safetyFloor: {
|
|
7
|
-
enforced: true;
|
|
8
|
-
};
|
|
9
|
-
banner: {
|
|
10
|
-
show: boolean;
|
|
11
|
-
suppressAfter: "session" | "forever";
|
|
12
|
-
};
|
|
13
|
-
audit: {
|
|
14
|
-
emitEvents: boolean;
|
|
15
|
-
includeArgs: boolean;
|
|
16
|
-
logPath: string;
|
|
17
|
-
};
|
|
18
|
-
doctrineVersion: string;
|
|
19
|
-
}
|
|
20
|
-
export declare const FREEDOM_CONFIG_DEFAULTS: FreedomConfig;
|
|
21
|
-
export declare class FreedomConfigError extends Error {
|
|
22
|
-
readonly line?: number;
|
|
23
|
-
constructor(message: string, line?: number);
|
|
24
|
-
}
|
|
25
|
-
export declare function loadFreedomConfig(projectRoot: string): FreedomConfig;
|
|
26
|
-
export declare function parseFreedomConfigFromString(raw: string): FreedomConfig;
|
|
27
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/freedom/config.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAChC,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,SAAS,GAAG,SAAS,CAAA;KAAE,CAAC;IAChE,KAAK,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,aAenB,CAAC;AAMpB,qBAAa,kBAAmB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAIzC;CACD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAMpE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAEvE","sourcesContent":["/**\n * `.omk/config.toml` loader for the freedom block.\n *\n * Implements a tiny, deterministic TOML subset that is exactly enough for the\n * schema defined in `.omk/runs/freedom-plan-20260619/config-schema.md`:\n *\n * - `# comment` lines and blank lines\n * - `[section.subsection]` headers\n * - `key = \"string\"` | `key = true` | `key = false`\n *\n * Anything outside that subset is treated as a malformed line and rejected\n * at parse time so users learn early that their config is wrong.\n *\n * Adding `@iarna/toml` would also work, but AGENTS.md keeps direct deps pinned\n * and reviewed; a 60-line hand parser avoids the dep-review cost for a config\n * shape this small.\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport type ApprovalPolicy = \"yolo\" | \"prompt-per-tool\";\n\nexport interface FreedomConfig {\n\tenabled: boolean;\n\tapprovalPolicy: ApprovalPolicy;\n\tyoloMode: boolean;\n\tsafetyFloor: { enforced: true };\n\tbanner: { show: boolean; suppressAfter: \"session\" | \"forever\" };\n\taudit: { emitEvents: boolean; includeArgs: boolean; logPath: string };\n\tdoctrineVersion: string;\n}\n\nexport const FREEDOM_CONFIG_DEFAULTS: FreedomConfig = Object.freeze({\n\tenabled: false,\n\tapprovalPolicy: \"prompt-per-tool\",\n\tyoloMode: false,\n\tsafetyFloor: Object.freeze({ enforced: true }) as { enforced: true },\n\tbanner: Object.freeze({ show: true, suppressAfter: \"session\" }) as {\n\t\tshow: boolean;\n\t\tsuppressAfter: \"session\" | \"forever\";\n\t},\n\taudit: Object.freeze({ emitEvents: true, includeArgs: false, logPath: \".omk/audit/freedom.log\" }) as {\n\t\temitEvents: boolean;\n\t\tincludeArgs: boolean;\n\t\tlogPath: string;\n\t},\n\tdoctrineVersion: \"0.78.0-freedom\",\n}) as FreedomConfig;\n\ntype TomlValue = string | boolean | number;\n\ntype TomlTable = { [key: string]: TomlValue | TomlTable };\n\nexport class FreedomConfigError extends Error {\n\treadonly line?: number;\n\tconstructor(message: string, line?: number) {\n\t\tsuper(line ? `${message} (line ${line})` : message);\n\t\tthis.name = \"FreedomConfigError\";\n\t\tthis.line = line;\n\t}\n}\n\nexport function loadFreedomConfig(projectRoot: string): FreedomConfig {\n\tconst configPath = join(projectRoot, \".omk\", \"config.toml\");\n\tif (!existsSync(configPath)) return FREEDOM_CONFIG_DEFAULTS;\n\tconst raw = readFileSync(configPath, \"utf8\");\n\tconst parsed = parseToml(raw);\n\treturn materializeFreedomConfig(parsed);\n}\n\nexport function parseFreedomConfigFromString(raw: string): FreedomConfig {\n\treturn materializeFreedomConfig(parseToml(raw));\n}\n\nfunction parseToml(raw: string): TomlTable {\n\tconst root: TomlTable = {};\n\tlet current: TomlTable = root;\n\tconst normalized = raw.replace(/\\r\\n/g, \"\\n\");\n\tconst lines = normalized.split(\"\\n\");\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst lineNumber = i + 1;\n\t\tconst line = stripInlineComment(lines[i]).trim();\n\t\tif (line.length === 0) continue;\n\t\tif (line.startsWith(\"[\")) {\n\t\t\tif (!line.endsWith(\"]\")) {\n\t\t\t\tthrow new FreedomConfigError(`Unterminated section header: ${line}`, lineNumber);\n\t\t\t}\n\t\t\tconst path = line\n\t\t\t\t.slice(1, -1)\n\t\t\t\t.split(\".\")\n\t\t\t\t.map((part) => part.trim());\n\t\t\tfor (const part of path) {\n\t\t\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(part)) {\n\t\t\t\t\tthrow new FreedomConfigError(`Invalid section name '${part}'`, lineNumber);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrent = ensureTable(root, path);\n\t\t\tcontinue;\n\t\t}\n\t\tconst eq = line.indexOf(\"=\");\n\t\tif (eq < 0) {\n\t\t\tthrow new FreedomConfigError(`Expected 'key = value' but got '${line}'`, lineNumber);\n\t\t}\n\t\tconst key = line.slice(0, eq).trim();\n\t\tconst value = line.slice(eq + 1).trim();\n\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {\n\t\t\tthrow new FreedomConfigError(`Invalid key '${key}'`, lineNumber);\n\t\t}\n\t\tcurrent[key] = parseValue(value, lineNumber);\n\t}\n\treturn root;\n}\n\nfunction ensureTable(root: TomlTable, path: readonly string[]): TomlTable {\n\tlet cursor: TomlTable = root;\n\tfor (const part of path) {\n\t\tconst next = cursor[part];\n\t\tif (next === undefined) {\n\t\t\tconst created: TomlTable = {};\n\t\t\tcursor[part] = created;\n\t\t\tcursor = created;\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof next !== \"object\" || next === null) {\n\t\t\tthrow new FreedomConfigError(`Section '${path.join(\".\")}' collides with a value`);\n\t\t}\n\t\tcursor = next as TomlTable;\n\t}\n\treturn cursor;\n}\n\nfunction stripInlineComment(line: string): string {\n\tlet inString = false;\n\tlet quote = \"\";\n\tfor (let i = 0; i < line.length; i++) {\n\t\tconst c = line[i];\n\t\tif (inString) {\n\t\t\tif (c === \"\\\\\") {\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (c === quote) inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === '\"' || c === \"'\") {\n\t\t\tinString = true;\n\t\t\tquote = c;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"#\") return line.slice(0, i);\n\t}\n\treturn line;\n}\n\nfunction parseValue(raw: string, lineNumber: number): TomlValue {\n\tif (raw === \"true\") return true;\n\tif (raw === \"false\") return false;\n\tif (/^-?\\d+$/.test(raw)) return Number(raw);\n\tif ((raw.startsWith('\"') && raw.endsWith('\"')) || (raw.startsWith(\"'\") && raw.endsWith(\"'\"))) {\n\t\treturn raw.slice(1, -1).replace(/\\\\n/g, \"\\n\").replace(/\\\\t/g, \"\\t\").replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, \"\\\\\");\n\t}\n\tthrow new FreedomConfigError(`Unsupported value '${raw}'`, lineNumber);\n}\n\nfunction materializeFreedomConfig(parsed: TomlTable): FreedomConfig {\n\tconst block = parsed.freedom;\n\tif (block === undefined) return FREEDOM_CONFIG_DEFAULTS;\n\tif (typeof block !== \"object\" || block === null) {\n\t\tthrow new FreedomConfigError(\"'[freedom]' must be a table\");\n\t}\n\tconst freedom = block as TomlTable;\n\n\tconst enabled = readBool(freedom, \"enabled\", FREEDOM_CONFIG_DEFAULTS.enabled);\n\tconst approvalPolicy = readApprovalPolicy(freedom);\n\tconst yoloMode = readBool(freedom, \"yolo_mode\", FREEDOM_CONFIG_DEFAULTS.yoloMode);\n\tconst doctrineVersion = readString(freedom, \"doctrine_version\", FREEDOM_CONFIG_DEFAULTS.doctrineVersion);\n\n\tif (yoloMode && approvalPolicy !== \"yolo\") {\n\t\tthrow new FreedomConfigError('yolo_mode=true requires approval_policy=\"yolo\"');\n\t}\n\n\tconst safetyFloorBlock = (freedom.safety_floor ?? {}) as TomlTable;\n\tfor (const [key, value] of Object.entries(safetyFloorBlock)) {\n\t\tif (value !== \"enforced\") {\n\t\t\tthrow new FreedomConfigError(\n\t\t\t\t`[freedom.safety_floor] '${key}' must be \"enforced\", got ${JSON.stringify(value)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst bannerBlock = (freedom.banner ?? {}) as TomlTable;\n\tconst banner = {\n\t\tshow: readBool(bannerBlock, \"show\", FREEDOM_CONFIG_DEFAULTS.banner.show),\n\t\tsuppressAfter: readSuppressAfter(bannerBlock),\n\t};\n\n\tconst auditBlock = (freedom.audit ?? {}) as TomlTable;\n\tconst audit = {\n\t\temitEvents: readBool(auditBlock, \"emit_events\", FREEDOM_CONFIG_DEFAULTS.audit.emitEvents),\n\t\tincludeArgs: readBool(auditBlock, \"include_args\", FREEDOM_CONFIG_DEFAULTS.audit.includeArgs),\n\t\tlogPath: readString(auditBlock, \"log_path\", FREEDOM_CONFIG_DEFAULTS.audit.logPath),\n\t};\n\n\treturn {\n\t\tenabled,\n\t\tapprovalPolicy,\n\t\tyoloMode,\n\t\tsafetyFloor: { enforced: true },\n\t\tbanner,\n\t\taudit,\n\t\tdoctrineVersion,\n\t};\n}\n\nfunction readBool(table: TomlTable, key: string, fallback: boolean): boolean {\n\tconst value = table[key];\n\tif (value === undefined) return fallback;\n\tif (typeof value !== \"boolean\") {\n\t\tthrow new FreedomConfigError(`'${key}' must be a boolean, got ${JSON.stringify(value)}`);\n\t}\n\treturn value;\n}\n\nfunction readString(table: TomlTable, key: string, fallback: string): string {\n\tconst value = table[key];\n\tif (value === undefined) return fallback;\n\tif (typeof value !== \"string\") {\n\t\tthrow new FreedomConfigError(`'${key}' must be a string, got ${JSON.stringify(value)}`);\n\t}\n\treturn value;\n}\n\nfunction readApprovalPolicy(table: TomlTable): ApprovalPolicy {\n\tconst value = table.approval_policy;\n\tif (value === undefined) return FREEDOM_CONFIG_DEFAULTS.approvalPolicy;\n\tif (value === \"yolo\" || value === \"prompt-per-tool\") return value;\n\tthrow new FreedomConfigError(`approval_policy must be \"yolo\" or \"prompt-per-tool\", got ${JSON.stringify(value)}`);\n}\n\nfunction readSuppressAfter(table: TomlTable): \"session\" | \"forever\" {\n\tconst value = table.suppress_after;\n\tif (value === undefined) return FREEDOM_CONFIG_DEFAULTS.banner.suppressAfter;\n\tif (value === \"session\" || value === \"forever\") return value;\n\tthrow new FreedomConfigError(`suppress_after must be \"session\" or \"forever\", got ${JSON.stringify(value)}`);\n}\n"]}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `.omk/config.toml` loader for the freedom block.
|
|
3
|
-
*
|
|
4
|
-
* Implements a tiny, deterministic TOML subset that is exactly enough for the
|
|
5
|
-
* schema defined in `.omk/runs/freedom-plan-20260619/config-schema.md`:
|
|
6
|
-
*
|
|
7
|
-
* - `# comment` lines and blank lines
|
|
8
|
-
* - `[section.subsection]` headers
|
|
9
|
-
* - `key = "string"` | `key = true` | `key = false`
|
|
10
|
-
*
|
|
11
|
-
* Anything outside that subset is treated as a malformed line and rejected
|
|
12
|
-
* at parse time so users learn early that their config is wrong.
|
|
13
|
-
*
|
|
14
|
-
* Adding `@iarna/toml` would also work, but AGENTS.md keeps direct deps pinned
|
|
15
|
-
* and reviewed; a 60-line hand parser avoids the dep-review cost for a config
|
|
16
|
-
* shape this small.
|
|
17
|
-
*/
|
|
18
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
19
|
-
import { join } from "node:path";
|
|
20
|
-
export const FREEDOM_CONFIG_DEFAULTS = Object.freeze({
|
|
21
|
-
enabled: false,
|
|
22
|
-
approvalPolicy: "prompt-per-tool",
|
|
23
|
-
yoloMode: false,
|
|
24
|
-
safetyFloor: Object.freeze({ enforced: true }),
|
|
25
|
-
banner: Object.freeze({ show: true, suppressAfter: "session" }),
|
|
26
|
-
audit: Object.freeze({ emitEvents: true, includeArgs: false, logPath: ".omk/audit/freedom.log" }),
|
|
27
|
-
doctrineVersion: "0.78.0-freedom",
|
|
28
|
-
});
|
|
29
|
-
export class FreedomConfigError extends Error {
|
|
30
|
-
line;
|
|
31
|
-
constructor(message, line) {
|
|
32
|
-
super(line ? `${message} (line ${line})` : message);
|
|
33
|
-
this.name = "FreedomConfigError";
|
|
34
|
-
this.line = line;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export function loadFreedomConfig(projectRoot) {
|
|
38
|
-
const configPath = join(projectRoot, ".omk", "config.toml");
|
|
39
|
-
if (!existsSync(configPath))
|
|
40
|
-
return FREEDOM_CONFIG_DEFAULTS;
|
|
41
|
-
const raw = readFileSync(configPath, "utf8");
|
|
42
|
-
const parsed = parseToml(raw);
|
|
43
|
-
return materializeFreedomConfig(parsed);
|
|
44
|
-
}
|
|
45
|
-
export function parseFreedomConfigFromString(raw) {
|
|
46
|
-
return materializeFreedomConfig(parseToml(raw));
|
|
47
|
-
}
|
|
48
|
-
function parseToml(raw) {
|
|
49
|
-
const root = {};
|
|
50
|
-
let current = root;
|
|
51
|
-
const normalized = raw.replace(/\r\n/g, "\n");
|
|
52
|
-
const lines = normalized.split("\n");
|
|
53
|
-
for (let i = 0; i < lines.length; i++) {
|
|
54
|
-
const lineNumber = i + 1;
|
|
55
|
-
const line = stripInlineComment(lines[i]).trim();
|
|
56
|
-
if (line.length === 0)
|
|
57
|
-
continue;
|
|
58
|
-
if (line.startsWith("[")) {
|
|
59
|
-
if (!line.endsWith("]")) {
|
|
60
|
-
throw new FreedomConfigError(`Unterminated section header: ${line}`, lineNumber);
|
|
61
|
-
}
|
|
62
|
-
const path = line
|
|
63
|
-
.slice(1, -1)
|
|
64
|
-
.split(".")
|
|
65
|
-
.map((part) => part.trim());
|
|
66
|
-
for (const part of path) {
|
|
67
|
-
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(part)) {
|
|
68
|
-
throw new FreedomConfigError(`Invalid section name '${part}'`, lineNumber);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
current = ensureTable(root, path);
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
const eq = line.indexOf("=");
|
|
75
|
-
if (eq < 0) {
|
|
76
|
-
throw new FreedomConfigError(`Expected 'key = value' but got '${line}'`, lineNumber);
|
|
77
|
-
}
|
|
78
|
-
const key = line.slice(0, eq).trim();
|
|
79
|
-
const value = line.slice(eq + 1).trim();
|
|
80
|
-
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
|
|
81
|
-
throw new FreedomConfigError(`Invalid key '${key}'`, lineNumber);
|
|
82
|
-
}
|
|
83
|
-
current[key] = parseValue(value, lineNumber);
|
|
84
|
-
}
|
|
85
|
-
return root;
|
|
86
|
-
}
|
|
87
|
-
function ensureTable(root, path) {
|
|
88
|
-
let cursor = root;
|
|
89
|
-
for (const part of path) {
|
|
90
|
-
const next = cursor[part];
|
|
91
|
-
if (next === undefined) {
|
|
92
|
-
const created = {};
|
|
93
|
-
cursor[part] = created;
|
|
94
|
-
cursor = created;
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
if (typeof next !== "object" || next === null) {
|
|
98
|
-
throw new FreedomConfigError(`Section '${path.join(".")}' collides with a value`);
|
|
99
|
-
}
|
|
100
|
-
cursor = next;
|
|
101
|
-
}
|
|
102
|
-
return cursor;
|
|
103
|
-
}
|
|
104
|
-
function stripInlineComment(line) {
|
|
105
|
-
let inString = false;
|
|
106
|
-
let quote = "";
|
|
107
|
-
for (let i = 0; i < line.length; i++) {
|
|
108
|
-
const c = line[i];
|
|
109
|
-
if (inString) {
|
|
110
|
-
if (c === "\\") {
|
|
111
|
-
i += 1;
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
if (c === quote)
|
|
115
|
-
inString = false;
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
if (c === '"' || c === "'") {
|
|
119
|
-
inString = true;
|
|
120
|
-
quote = c;
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
if (c === "#")
|
|
124
|
-
return line.slice(0, i);
|
|
125
|
-
}
|
|
126
|
-
return line;
|
|
127
|
-
}
|
|
128
|
-
function parseValue(raw, lineNumber) {
|
|
129
|
-
if (raw === "true")
|
|
130
|
-
return true;
|
|
131
|
-
if (raw === "false")
|
|
132
|
-
return false;
|
|
133
|
-
if (/^-?\d+$/.test(raw))
|
|
134
|
-
return Number(raw);
|
|
135
|
-
if ((raw.startsWith('"') && raw.endsWith('"')) || (raw.startsWith("'") && raw.endsWith("'"))) {
|
|
136
|
-
return raw.slice(1, -1).replace(/\\n/g, "\n").replace(/\\t/g, "\t").replace(/\\"/g, '"').replace(/\\\\/g, "\\");
|
|
137
|
-
}
|
|
138
|
-
throw new FreedomConfigError(`Unsupported value '${raw}'`, lineNumber);
|
|
139
|
-
}
|
|
140
|
-
function materializeFreedomConfig(parsed) {
|
|
141
|
-
const block = parsed.freedom;
|
|
142
|
-
if (block === undefined)
|
|
143
|
-
return FREEDOM_CONFIG_DEFAULTS;
|
|
144
|
-
if (typeof block !== "object" || block === null) {
|
|
145
|
-
throw new FreedomConfigError("'[freedom]' must be a table");
|
|
146
|
-
}
|
|
147
|
-
const freedom = block;
|
|
148
|
-
const enabled = readBool(freedom, "enabled", FREEDOM_CONFIG_DEFAULTS.enabled);
|
|
149
|
-
const approvalPolicy = readApprovalPolicy(freedom);
|
|
150
|
-
const yoloMode = readBool(freedom, "yolo_mode", FREEDOM_CONFIG_DEFAULTS.yoloMode);
|
|
151
|
-
const doctrineVersion = readString(freedom, "doctrine_version", FREEDOM_CONFIG_DEFAULTS.doctrineVersion);
|
|
152
|
-
if (yoloMode && approvalPolicy !== "yolo") {
|
|
153
|
-
throw new FreedomConfigError('yolo_mode=true requires approval_policy="yolo"');
|
|
154
|
-
}
|
|
155
|
-
const safetyFloorBlock = (freedom.safety_floor ?? {});
|
|
156
|
-
for (const [key, value] of Object.entries(safetyFloorBlock)) {
|
|
157
|
-
if (value !== "enforced") {
|
|
158
|
-
throw new FreedomConfigError(`[freedom.safety_floor] '${key}' must be "enforced", got ${JSON.stringify(value)}`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
const bannerBlock = (freedom.banner ?? {});
|
|
162
|
-
const banner = {
|
|
163
|
-
show: readBool(bannerBlock, "show", FREEDOM_CONFIG_DEFAULTS.banner.show),
|
|
164
|
-
suppressAfter: readSuppressAfter(bannerBlock),
|
|
165
|
-
};
|
|
166
|
-
const auditBlock = (freedom.audit ?? {});
|
|
167
|
-
const audit = {
|
|
168
|
-
emitEvents: readBool(auditBlock, "emit_events", FREEDOM_CONFIG_DEFAULTS.audit.emitEvents),
|
|
169
|
-
includeArgs: readBool(auditBlock, "include_args", FREEDOM_CONFIG_DEFAULTS.audit.includeArgs),
|
|
170
|
-
logPath: readString(auditBlock, "log_path", FREEDOM_CONFIG_DEFAULTS.audit.logPath),
|
|
171
|
-
};
|
|
172
|
-
return {
|
|
173
|
-
enabled,
|
|
174
|
-
approvalPolicy,
|
|
175
|
-
yoloMode,
|
|
176
|
-
safetyFloor: { enforced: true },
|
|
177
|
-
banner,
|
|
178
|
-
audit,
|
|
179
|
-
doctrineVersion,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
function readBool(table, key, fallback) {
|
|
183
|
-
const value = table[key];
|
|
184
|
-
if (value === undefined)
|
|
185
|
-
return fallback;
|
|
186
|
-
if (typeof value !== "boolean") {
|
|
187
|
-
throw new FreedomConfigError(`'${key}' must be a boolean, got ${JSON.stringify(value)}`);
|
|
188
|
-
}
|
|
189
|
-
return value;
|
|
190
|
-
}
|
|
191
|
-
function readString(table, key, fallback) {
|
|
192
|
-
const value = table[key];
|
|
193
|
-
if (value === undefined)
|
|
194
|
-
return fallback;
|
|
195
|
-
if (typeof value !== "string") {
|
|
196
|
-
throw new FreedomConfigError(`'${key}' must be a string, got ${JSON.stringify(value)}`);
|
|
197
|
-
}
|
|
198
|
-
return value;
|
|
199
|
-
}
|
|
200
|
-
function readApprovalPolicy(table) {
|
|
201
|
-
const value = table.approval_policy;
|
|
202
|
-
if (value === undefined)
|
|
203
|
-
return FREEDOM_CONFIG_DEFAULTS.approvalPolicy;
|
|
204
|
-
if (value === "yolo" || value === "prompt-per-tool")
|
|
205
|
-
return value;
|
|
206
|
-
throw new FreedomConfigError(`approval_policy must be "yolo" or "prompt-per-tool", got ${JSON.stringify(value)}`);
|
|
207
|
-
}
|
|
208
|
-
function readSuppressAfter(table) {
|
|
209
|
-
const value = table.suppress_after;
|
|
210
|
-
if (value === undefined)
|
|
211
|
-
return FREEDOM_CONFIG_DEFAULTS.banner.suppressAfter;
|
|
212
|
-
if (value === "session" || value === "forever")
|
|
213
|
-
return value;
|
|
214
|
-
throw new FreedomConfigError(`suppress_after must be "session" or "forever", got ${JSON.stringify(value)}`);
|
|
215
|
-
}
|
|
216
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/freedom/config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `.omk/config.toml` loader for the freedom block.\n *\n * Implements a tiny, deterministic TOML subset that is exactly enough for the\n * schema defined in `.omk/runs/freedom-plan-20260619/config-schema.md`:\n *\n * - `# comment` lines and blank lines\n * - `[section.subsection]` headers\n * - `key = \"string\"` | `key = true` | `key = false`\n *\n * Anything outside that subset is treated as a malformed line and rejected\n * at parse time so users learn early that their config is wrong.\n *\n * Adding `@iarna/toml` would also work, but AGENTS.md keeps direct deps pinned\n * and reviewed; a 60-line hand parser avoids the dep-review cost for a config\n * shape this small.\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport type ApprovalPolicy = \"yolo\" | \"prompt-per-tool\";\n\nexport interface FreedomConfig {\n\tenabled: boolean;\n\tapprovalPolicy: ApprovalPolicy;\n\tyoloMode: boolean;\n\tsafetyFloor: { enforced: true };\n\tbanner: { show: boolean; suppressAfter: \"session\" | \"forever\" };\n\taudit: { emitEvents: boolean; includeArgs: boolean; logPath: string };\n\tdoctrineVersion: string;\n}\n\nexport const FREEDOM_CONFIG_DEFAULTS: FreedomConfig = Object.freeze({\n\tenabled: false,\n\tapprovalPolicy: \"prompt-per-tool\",\n\tyoloMode: false,\n\tsafetyFloor: Object.freeze({ enforced: true }) as { enforced: true },\n\tbanner: Object.freeze({ show: true, suppressAfter: \"session\" }) as {\n\t\tshow: boolean;\n\t\tsuppressAfter: \"session\" | \"forever\";\n\t},\n\taudit: Object.freeze({ emitEvents: true, includeArgs: false, logPath: \".omk/audit/freedom.log\" }) as {\n\t\temitEvents: boolean;\n\t\tincludeArgs: boolean;\n\t\tlogPath: string;\n\t},\n\tdoctrineVersion: \"0.78.0-freedom\",\n}) as FreedomConfig;\n\ntype TomlValue = string | boolean | number;\n\ntype TomlTable = { [key: string]: TomlValue | TomlTable };\n\nexport class FreedomConfigError extends Error {\n\treadonly line?: number;\n\tconstructor(message: string, line?: number) {\n\t\tsuper(line ? `${message} (line ${line})` : message);\n\t\tthis.name = \"FreedomConfigError\";\n\t\tthis.line = line;\n\t}\n}\n\nexport function loadFreedomConfig(projectRoot: string): FreedomConfig {\n\tconst configPath = join(projectRoot, \".omk\", \"config.toml\");\n\tif (!existsSync(configPath)) return FREEDOM_CONFIG_DEFAULTS;\n\tconst raw = readFileSync(configPath, \"utf8\");\n\tconst parsed = parseToml(raw);\n\treturn materializeFreedomConfig(parsed);\n}\n\nexport function parseFreedomConfigFromString(raw: string): FreedomConfig {\n\treturn materializeFreedomConfig(parseToml(raw));\n}\n\nfunction parseToml(raw: string): TomlTable {\n\tconst root: TomlTable = {};\n\tlet current: TomlTable = root;\n\tconst normalized = raw.replace(/\\r\\n/g, \"\\n\");\n\tconst lines = normalized.split(\"\\n\");\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst lineNumber = i + 1;\n\t\tconst line = stripInlineComment(lines[i]).trim();\n\t\tif (line.length === 0) continue;\n\t\tif (line.startsWith(\"[\")) {\n\t\t\tif (!line.endsWith(\"]\")) {\n\t\t\t\tthrow new FreedomConfigError(`Unterminated section header: ${line}`, lineNumber);\n\t\t\t}\n\t\t\tconst path = line\n\t\t\t\t.slice(1, -1)\n\t\t\t\t.split(\".\")\n\t\t\t\t.map((part) => part.trim());\n\t\t\tfor (const part of path) {\n\t\t\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(part)) {\n\t\t\t\t\tthrow new FreedomConfigError(`Invalid section name '${part}'`, lineNumber);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrent = ensureTable(root, path);\n\t\t\tcontinue;\n\t\t}\n\t\tconst eq = line.indexOf(\"=\");\n\t\tif (eq < 0) {\n\t\t\tthrow new FreedomConfigError(`Expected 'key = value' but got '${line}'`, lineNumber);\n\t\t}\n\t\tconst key = line.slice(0, eq).trim();\n\t\tconst value = line.slice(eq + 1).trim();\n\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {\n\t\t\tthrow new FreedomConfigError(`Invalid key '${key}'`, lineNumber);\n\t\t}\n\t\tcurrent[key] = parseValue(value, lineNumber);\n\t}\n\treturn root;\n}\n\nfunction ensureTable(root: TomlTable, path: readonly string[]): TomlTable {\n\tlet cursor: TomlTable = root;\n\tfor (const part of path) {\n\t\tconst next = cursor[part];\n\t\tif (next === undefined) {\n\t\t\tconst created: TomlTable = {};\n\t\t\tcursor[part] = created;\n\t\t\tcursor = created;\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof next !== \"object\" || next === null) {\n\t\t\tthrow new FreedomConfigError(`Section '${path.join(\".\")}' collides with a value`);\n\t\t}\n\t\tcursor = next as TomlTable;\n\t}\n\treturn cursor;\n}\n\nfunction stripInlineComment(line: string): string {\n\tlet inString = false;\n\tlet quote = \"\";\n\tfor (let i = 0; i < line.length; i++) {\n\t\tconst c = line[i];\n\t\tif (inString) {\n\t\t\tif (c === \"\\\\\") {\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (c === quote) inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === '\"' || c === \"'\") {\n\t\t\tinString = true;\n\t\t\tquote = c;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"#\") return line.slice(0, i);\n\t}\n\treturn line;\n}\n\nfunction parseValue(raw: string, lineNumber: number): TomlValue {\n\tif (raw === \"true\") return true;\n\tif (raw === \"false\") return false;\n\tif (/^-?\\d+$/.test(raw)) return Number(raw);\n\tif ((raw.startsWith('\"') && raw.endsWith('\"')) || (raw.startsWith(\"'\") && raw.endsWith(\"'\"))) {\n\t\treturn raw.slice(1, -1).replace(/\\\\n/g, \"\\n\").replace(/\\\\t/g, \"\\t\").replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, \"\\\\\");\n\t}\n\tthrow new FreedomConfigError(`Unsupported value '${raw}'`, lineNumber);\n}\n\nfunction materializeFreedomConfig(parsed: TomlTable): FreedomConfig {\n\tconst block = parsed.freedom;\n\tif (block === undefined) return FREEDOM_CONFIG_DEFAULTS;\n\tif (typeof block !== \"object\" || block === null) {\n\t\tthrow new FreedomConfigError(\"'[freedom]' must be a table\");\n\t}\n\tconst freedom = block as TomlTable;\n\n\tconst enabled = readBool(freedom, \"enabled\", FREEDOM_CONFIG_DEFAULTS.enabled);\n\tconst approvalPolicy = readApprovalPolicy(freedom);\n\tconst yoloMode = readBool(freedom, \"yolo_mode\", FREEDOM_CONFIG_DEFAULTS.yoloMode);\n\tconst doctrineVersion = readString(freedom, \"doctrine_version\", FREEDOM_CONFIG_DEFAULTS.doctrineVersion);\n\n\tif (yoloMode && approvalPolicy !== \"yolo\") {\n\t\tthrow new FreedomConfigError('yolo_mode=true requires approval_policy=\"yolo\"');\n\t}\n\n\tconst safetyFloorBlock = (freedom.safety_floor ?? {}) as TomlTable;\n\tfor (const [key, value] of Object.entries(safetyFloorBlock)) {\n\t\tif (value !== \"enforced\") {\n\t\t\tthrow new FreedomConfigError(\n\t\t\t\t`[freedom.safety_floor] '${key}' must be \"enforced\", got ${JSON.stringify(value)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst bannerBlock = (freedom.banner ?? {}) as TomlTable;\n\tconst banner = {\n\t\tshow: readBool(bannerBlock, \"show\", FREEDOM_CONFIG_DEFAULTS.banner.show),\n\t\tsuppressAfter: readSuppressAfter(bannerBlock),\n\t};\n\n\tconst auditBlock = (freedom.audit ?? {}) as TomlTable;\n\tconst audit = {\n\t\temitEvents: readBool(auditBlock, \"emit_events\", FREEDOM_CONFIG_DEFAULTS.audit.emitEvents),\n\t\tincludeArgs: readBool(auditBlock, \"include_args\", FREEDOM_CONFIG_DEFAULTS.audit.includeArgs),\n\t\tlogPath: readString(auditBlock, \"log_path\", FREEDOM_CONFIG_DEFAULTS.audit.logPath),\n\t};\n\n\treturn {\n\t\tenabled,\n\t\tapprovalPolicy,\n\t\tyoloMode,\n\t\tsafetyFloor: { enforced: true },\n\t\tbanner,\n\t\taudit,\n\t\tdoctrineVersion,\n\t};\n}\n\nfunction readBool(table: TomlTable, key: string, fallback: boolean): boolean {\n\tconst value = table[key];\n\tif (value === undefined) return fallback;\n\tif (typeof value !== \"boolean\") {\n\t\tthrow new FreedomConfigError(`'${key}' must be a boolean, got ${JSON.stringify(value)}`);\n\t}\n\treturn value;\n}\n\nfunction readString(table: TomlTable, key: string, fallback: string): string {\n\tconst value = table[key];\n\tif (value === undefined) return fallback;\n\tif (typeof value !== \"string\") {\n\t\tthrow new FreedomConfigError(`'${key}' must be a string, got ${JSON.stringify(value)}`);\n\t}\n\treturn value;\n}\n\nfunction readApprovalPolicy(table: TomlTable): ApprovalPolicy {\n\tconst value = table.approval_policy;\n\tif (value === undefined) return FREEDOM_CONFIG_DEFAULTS.approvalPolicy;\n\tif (value === \"yolo\" || value === \"prompt-per-tool\") return value;\n\tthrow new FreedomConfigError(`approval_policy must be \"yolo\" or \"prompt-per-tool\", got ${JSON.stringify(value)}`);\n}\n\nfunction readSuppressAfter(table: TomlTable): \"session\" | \"forever\" {\n\tconst value = table.suppress_after;\n\tif (value === undefined) return FREEDOM_CONFIG_DEFAULTS.banner.suppressAfter;\n\tif (value === \"session\" || value === \"forever\") return value;\n\tthrow new FreedomConfigError(`suppress_after must be \"session\" or \"forever\", got ${JSON.stringify(value)}`);\n}\n"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public surface for the OMK freedom-mode runtime.
|
|
3
|
-
*
|
|
4
|
-
* Tool dispatchers import `gate`. The interactive TUI imports `badgeText` and
|
|
5
|
-
* `bannerOnce`. Subprocess spawners import `applyFreedomEnv`. Everything else
|
|
6
|
-
* is implementation detail and stays inside this directory.
|
|
7
|
-
*
|
|
8
|
-
* Design: every doctrine clause from AGENTS.md §0 has exactly one owner here.
|
|
9
|
-
* - §0.1 safety floor → safety-floor.ts (always-on, never downgradable)
|
|
10
|
-
* - §0.2 defaults → config.ts (parsed from .omk/config.toml)
|
|
11
|
-
* - §0.3 no moralizing → not enforced at runtime (system prompt only)
|
|
12
|
-
* - banner & badge → banner.ts + policy.badgeText
|
|
13
|
-
* - subprocess env → policy.applyFreedomEnv
|
|
14
|
-
*/
|
|
15
|
-
export type { BannerMemo } from "./banner.ts";
|
|
16
|
-
export { bannerOnce } from "./banner.ts";
|
|
17
|
-
export type { ApprovalPolicy, FreedomConfig } from "./config.ts";
|
|
18
|
-
export { FREEDOM_CONFIG_DEFAULTS, FreedomConfigError, loadFreedomConfig, parseFreedomConfigFromString, } from "./config.ts";
|
|
19
|
-
export type { PolicyDecision, ToolCallContext } from "./policy.ts";
|
|
20
|
-
export { applyFreedomEnv, badgeText, gate } from "./policy.ts";
|
|
21
|
-
export type { MatcherVerdict } from "./safety-floor.ts";
|
|
22
|
-
export { redactSecrets, runSafetyFloor } from "./safety-floor.ts";
|
|
23
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/freedom/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACN,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,GAC5B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["/**\n * Public surface for the OMK freedom-mode runtime.\n *\n * Tool dispatchers import `gate`. The interactive TUI imports `badgeText` and\n * `bannerOnce`. Subprocess spawners import `applyFreedomEnv`. Everything else\n * is implementation detail and stays inside this directory.\n *\n * Design: every doctrine clause from AGENTS.md §0 has exactly one owner here.\n * - §0.1 safety floor → safety-floor.ts (always-on, never downgradable)\n * - §0.2 defaults → config.ts (parsed from .omk/config.toml)\n * - §0.3 no moralizing → not enforced at runtime (system prompt only)\n * - banner & badge → banner.ts + policy.badgeText\n * - subprocess env → policy.applyFreedomEnv\n */\n\nexport type { BannerMemo } from \"./banner.ts\";\nexport { bannerOnce } from \"./banner.ts\";\nexport type { ApprovalPolicy, FreedomConfig } from \"./config.ts\";\nexport {\n\tFREEDOM_CONFIG_DEFAULTS,\n\tFreedomConfigError,\n\tloadFreedomConfig,\n\tparseFreedomConfigFromString,\n} from \"./config.ts\";\nexport type { PolicyDecision, ToolCallContext } from \"./policy.ts\";\nexport { applyFreedomEnv, badgeText, gate } from \"./policy.ts\";\nexport type { MatcherVerdict } from \"./safety-floor.ts\";\nexport { redactSecrets, runSafetyFloor } from \"./safety-floor.ts\";\n"]}
|