@provos/ironcurtain 0.10.0 → 0.12.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/README.md +68 -14
- package/dist/auth/oauth-provider.js +1 -4
- package/dist/auth/oauth-provider.js.map +1 -1
- package/dist/cli-help.d.ts +12 -0
- package/dist/cli-help.js +21 -0
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.js +46 -6
- package/dist/cli.js.map +1 -1
- package/dist/config/agent-model-guard.d.ts +14 -0
- package/dist/config/agent-model-guard.js +24 -0
- package/dist/config/agent-model-guard.js.map +1 -0
- package/dist/config/config-command.js +277 -7
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/first-start.js +62 -7
- package/dist/config/first-start.js.map +1 -1
- package/dist/config/generated/compiled-policy.json +528 -161
- package/dist/config/generated/test-scenarios.json +4810 -170
- package/dist/config/generated/tool-annotations.json +34 -47
- package/dist/config/index.d.ts +58 -0
- package/dist/config/index.js +97 -15
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-servers.json +2 -2
- package/dist/config/model-provider.d.ts +9 -0
- package/dist/config/model-provider.js +13 -0
- package/dist/config/model-provider.js.map +1 -1
- package/dist/config/paths.d.ts +217 -0
- package/dist/config/paths.js +363 -14
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +7 -1
- package/dist/config/user-config.d.ts +101 -6
- package/dist/config/user-config.js +145 -31
- package/dist/config/user-config.js.map +1 -1
- package/dist/config/validate-policy-dir.d.ts +10 -0
- package/dist/config/validate-policy-dir.js +59 -0
- package/dist/config/validate-policy-dir.js.map +1 -0
- package/dist/cron/job-commands.js +22 -2
- package/dist/cron/job-commands.js.map +1 -1
- package/dist/cron/types.d.ts +16 -2
- package/dist/cron/types.js +1 -3
- package/dist/cron/types.js.map +1 -1
- package/dist/daemon/daemon-command.js +30 -7
- package/dist/daemon/daemon-command.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.d.ts +62 -1
- package/dist/daemon/ironcurtain-daemon.js +231 -8
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/daemon-client/daemon-client.d.ts +123 -0
- package/dist/daemon-client/daemon-client.js +324 -0
- package/dist/daemon-client/daemon-client.js.map +1 -0
- package/dist/docker/adapters/claude-code.js +194 -20
- package/dist/docker/adapters/claude-code.js.map +1 -1
- package/dist/docker/adapters/codex.d.ts +9 -0
- package/dist/docker/adapters/codex.js +297 -0
- package/dist/docker/adapters/codex.js.map +1 -0
- package/dist/docker/adapters/goose.d.ts +12 -11
- package/dist/docker/adapters/goose.js +80 -27
- package/dist/docker/adapters/goose.js.map +1 -1
- package/dist/docker/agent-adapter.d.ts +183 -5
- package/dist/docker/agent-adapter.js +16 -0
- package/dist/docker/agent-adapter.js.map +1 -1
- package/dist/docker/agent-registry.js +5 -0
- package/dist/docker/agent-registry.js.map +1 -1
- package/dist/docker/apple-container-manager.d.ts +49 -0
- package/dist/docker/apple-container-manager.js +464 -0
- package/dist/docker/apple-container-manager.js.map +1 -0
- package/dist/docker/code-mode-proxy.d.ts +38 -0
- package/dist/docker/code-mode-proxy.js +6 -1
- package/dist/docker/code-mode-proxy.js.map +1 -1
- package/dist/docker/container-lifecycle.d.ts +2 -2
- package/dist/docker/container-lifecycle.js.map +1 -1
- package/dist/docker/container-runtime.d.ts +29 -0
- package/dist/docker/container-runtime.js +76 -0
- package/dist/docker/container-runtime.js.map +1 -0
- package/dist/docker/docker-agent-session.d.ts +113 -62
- package/dist/docker/docker-agent-session.js +271 -294
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.d.ts +428 -26
- package/dist/docker/docker-infrastructure.js +1005 -70
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/docker-manager.d.ts +58 -3
- package/dist/docker/docker-manager.js +378 -33
- package/dist/docker/docker-manager.js.map +1 -1
- package/dist/docker/docker-probe.d.ts +45 -0
- package/dist/docker/docker-probe.js +86 -0
- package/dist/docker/docker-probe.js.map +1 -0
- package/dist/docker/docker-progress-sink.d.ts +43 -0
- package/dist/docker/docker-progress-sink.js +299 -0
- package/dist/docker/docker-progress-sink.js.map +1 -0
- package/dist/docker/mitm-proxy.d.ts +135 -1
- package/dist/docker/mitm-proxy.js +611 -25
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/network-topology.d.ts +81 -0
- package/dist/docker/network-topology.js +160 -0
- package/dist/docker/network-topology.js.map +1 -0
- package/dist/docker/oauth-credentials.d.ts +59 -3
- package/dist/docker/oauth-credentials.js +181 -14
- package/dist/docker/oauth-credentials.js.map +1 -1
- package/dist/docker/oauth-token-manager.js +2 -2
- package/dist/docker/oauth-token-manager.js.map +1 -1
- package/dist/docker/orientation.d.ts +1 -1
- package/dist/docker/package-types.d.ts +1 -1
- package/dist/docker/provider-config.d.ts +78 -3
- package/dist/docker/provider-config.js +295 -31
- package/dist/docker/provider-config.js.map +1 -1
- package/dist/docker/provision-lock.d.ts +46 -0
- package/dist/docker/provision-lock.js +152 -0
- package/dist/docker/provision-lock.js.map +1 -0
- package/dist/docker/proxy-tools.d.ts +0 -2
- package/dist/docker/proxy-tools.js +2 -7
- package/dist/docker/proxy-tools.js.map +1 -1
- package/dist/docker/pty-session.d.ts +64 -1
- package/dist/docker/pty-session.js +306 -104
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/docker/pty-types.d.ts +0 -2
- package/dist/docker/pty-types.js +0 -2
- package/dist/docker/pty-types.js.map +1 -1
- package/dist/docker/registry-proxy.d.ts +46 -0
- package/dist/docker/registry-proxy.js +255 -1
- package/dist/docker/registry-proxy.js.map +1 -1
- package/dist/docker/resource-limits.d.ts +134 -0
- package/dist/docker/resource-limits.js +203 -0
- package/dist/docker/resource-limits.js.map +1 -0
- package/dist/docker/spawn-with-idle-timeout.d.ts +39 -0
- package/dist/docker/spawn-with-idle-timeout.js +152 -0
- package/dist/docker/spawn-with-idle-timeout.js.map +1 -0
- package/dist/docker/sse-extractor.d.ts +51 -0
- package/dist/docker/sse-extractor.js +303 -0
- package/dist/docker/sse-extractor.js.map +1 -0
- package/dist/docker/token-stream-bus.d.ts +83 -0
- package/dist/docker/token-stream-bus.js +98 -0
- package/dist/docker/token-stream-bus.js.map +1 -0
- package/dist/docker/token-stream-types.d.ts +71 -0
- package/dist/docker/token-stream-types.js +8 -0
- package/dist/docker/token-stream-types.js.map +1 -0
- package/dist/docker/trajectory-capture.d.ts +79 -0
- package/dist/docker/trajectory-capture.js +521 -0
- package/dist/docker/trajectory-capture.js.map +1 -0
- package/dist/docker/trajectory-reassembler.d.ts +286 -0
- package/dist/docker/trajectory-reassembler.js +990 -0
- package/dist/docker/trajectory-reassembler.js.map +1 -0
- package/dist/docker/trajectory-tap.d.ts +100 -0
- package/dist/docker/trajectory-tap.js +410 -0
- package/dist/docker/trajectory-tap.js.map +1 -0
- package/dist/docker/trajectory-types.d.ts +187 -0
- package/dist/docker/trajectory-types.js +43 -0
- package/dist/docker/trajectory-types.js.map +1 -0
- package/dist/docker/types.d.ts +105 -12
- package/dist/doctor/checks.d.ts +171 -0
- package/dist/doctor/checks.js +598 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/doctor-command.d.ts +29 -0
- package/dist/doctor/doctor-command.js +190 -0
- package/dist/doctor/doctor-command.js.map +1 -0
- package/dist/doctor/mcp-liveness.d.ts +28 -0
- package/dist/doctor/mcp-liveness.js +92 -0
- package/dist/doctor/mcp-liveness.js.map +1 -0
- package/dist/doctor/oauth-checks.d.ts +23 -0
- package/dist/doctor/oauth-checks.js +157 -0
- package/dist/doctor/oauth-checks.js.map +1 -0
- package/dist/doctor/output.d.ts +26 -0
- package/dist/doctor/output.js +82 -0
- package/dist/doctor/output.js.map +1 -0
- package/dist/escalation/listener-command.js +0 -3
- package/dist/escalation/listener-command.js.map +1 -1
- package/dist/event-bus/typed-event-bus.d.ts +26 -0
- package/dist/event-bus/typed-event-bus.js +35 -0
- package/dist/event-bus/typed-event-bus.js.map +1 -0
- package/dist/index.js +54 -21
- package/dist/index.js.map +1 -1
- package/dist/logger.js +31 -2
- package/dist/logger.js.map +1 -1
- package/dist/memory/auto-save.d.ts +18 -4
- package/dist/memory/auto-save.js +46 -6
- package/dist/memory/auto-save.js.map +1 -1
- package/dist/memory/memory-policy.d.ts +41 -0
- package/dist/memory/memory-policy.js +36 -0
- package/dist/memory/memory-policy.js.map +1 -0
- package/dist/mux/mux-app.d.ts +2 -0
- package/dist/mux/mux-app.js +1 -0
- package/dist/mux/mux-app.js.map +1 -1
- package/dist/mux/mux-command.d.ts +10 -1
- package/dist/mux/mux-command.js +74 -40
- package/dist/mux/mux-command.js.map +1 -1
- package/dist/mux/mux-renderer.js +2 -12
- package/dist/mux/mux-renderer.js.map +1 -1
- package/dist/mux/pty-bridge.d.ts +2 -0
- package/dist/mux/pty-bridge.js +3 -0
- package/dist/mux/pty-bridge.js.map +1 -1
- package/dist/mux/session-scanner.js +1 -2
- package/dist/mux/session-scanner.js.map +1 -1
- package/dist/{pipeline → observability}/llm-logger.d.ts +8 -3
- package/dist/{pipeline → observability}/llm-logger.js +8 -3
- package/dist/observability/llm-logger.js.map +1 -0
- package/dist/observe/observe-command.d.ts +12 -0
- package/dist/observe/observe-command.js +285 -0
- package/dist/observe/observe-command.js.map +1 -0
- package/dist/observe/observe-renderer.d.ts +24 -0
- package/dist/observe/observe-renderer.js +87 -0
- package/dist/observe/observe-renderer.js.map +1 -0
- package/dist/observe/observe-tui-rain.d.ts +42 -0
- package/dist/observe/observe-tui-rain.js +531 -0
- package/dist/observe/observe-tui-rain.js.map +1 -0
- package/dist/observe/observe-tui-text-panel.d.ts +46 -0
- package/dist/observe/observe-tui-text-panel.js +525 -0
- package/dist/observe/observe-tui-text-panel.js.map +1 -0
- package/dist/observe/observe-tui-types.d.ts +270 -0
- package/dist/observe/observe-tui-types.js +200 -0
- package/dist/observe/observe-tui-types.js.map +1 -0
- package/dist/observe/observe-tui-word-scorer.d.ts +143 -0
- package/dist/observe/observe-tui-word-scorer.js +572 -0
- package/dist/observe/observe-tui-word-scorer.js.map +1 -0
- package/dist/observe/observe-tui.d.ts +59 -0
- package/dist/observe/observe-tui.js +592 -0
- package/dist/observe/observe-tui.js.map +1 -0
- package/dist/persona/broad-policy-validator.d.ts +95 -0
- package/dist/persona/broad-policy-validator.js +171 -0
- package/dist/persona/broad-policy-validator.js.map +1 -0
- package/dist/persona/compile-persona-policy.d.ts +54 -2
- package/dist/persona/compile-persona-policy.js +29 -4
- package/dist/persona/compile-persona-policy.js.map +1 -1
- package/dist/persona/event-bus-progress-reporter.d.ts +57 -0
- package/dist/persona/event-bus-progress-reporter.js +66 -0
- package/dist/persona/event-bus-progress-reporter.js.map +1 -0
- package/dist/persona/memory-gate.d.ts +19 -0
- package/dist/persona/memory-gate.js +33 -0
- package/dist/persona/memory-gate.js.map +1 -0
- package/dist/persona/persona-command.js +77 -72
- package/dist/persona/persona-command.js.map +1 -1
- package/dist/persona/persona-compile-orchestrator.d.ts +101 -0
- package/dist/persona/persona-compile-orchestrator.js +504 -0
- package/dist/persona/persona-compile-orchestrator.js.map +1 -0
- package/dist/persona/persona-service.d.ts +137 -0
- package/dist/persona/persona-service.js +263 -0
- package/dist/persona/persona-service.js.map +1 -0
- package/dist/persona/policy-mutation-audit.d.ts +109 -0
- package/dist/persona/policy-mutation-audit.js +179 -0
- package/dist/persona/policy-mutation-audit.js.map +1 -0
- package/dist/persona/resolve.d.ts +22 -0
- package/dist/persona/resolve.js +45 -2
- package/dist/persona/resolve.js.map +1 -1
- package/dist/persona/rule-delta.d.ts +30 -0
- package/dist/persona/rule-delta.js +82 -0
- package/dist/persona/rule-delta.js.map +1 -0
- package/dist/persona/types.d.ts +28 -0
- package/dist/pipeline/annotate.js +10 -2
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.js +14 -2
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.d.ts +25 -14
- package/dist/pipeline/constitution-compiler.js +107 -38
- package/dist/pipeline/constitution-compiler.js.map +1 -1
- package/dist/pipeline/dynamic-list-types.d.ts +3 -6
- package/dist/pipeline/dynamic-list-types.js +3 -16
- package/dist/pipeline/dynamic-list-types.js.map +1 -1
- package/dist/pipeline/pipeline-runner.d.ts +63 -4
- package/dist/pipeline/pipeline-runner.js +242 -94
- package/dist/pipeline/pipeline-runner.js.map +1 -1
- package/dist/pipeline/pipeline-shared.d.ts +33 -4
- package/dist/pipeline/pipeline-shared.js +79 -19
- package/dist/pipeline/pipeline-shared.js.map +1 -1
- package/dist/pipeline/policy-verifier.js +16 -3
- package/dist/pipeline/policy-verifier.js.map +1 -1
- package/dist/pipeline/proxy-mcp-connections.js +17 -2
- package/dist/pipeline/proxy-mcp-connections.js.map +1 -1
- package/dist/pipeline/refresh-lists.js +3 -5
- package/dist/pipeline/refresh-lists.js.map +1 -1
- package/dist/pipeline/scenario-generator.d.ts +4 -8
- package/dist/pipeline/scenario-generator.js +13 -46
- package/dist/pipeline/scenario-generator.js.map +1 -1
- package/dist/sandbox/index.d.ts +29 -0
- package/dist/sandbox/index.js +351 -119
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/ironcurtain-protocol.d.ts +52 -0
- package/dist/sandbox/ironcurtain-protocol.js +185 -0
- package/dist/sandbox/ironcurtain-protocol.js.map +1 -0
- package/dist/session/agent-session.d.ts +6 -0
- package/dist/session/agent-session.js +16 -5
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/cli-transport.js +0 -6
- package/dist/session/cli-transport.js.map +1 -1
- package/dist/session/index.d.ts +35 -14
- package/dist/session/index.js +333 -130
- package/dist/session/index.js.map +1 -1
- package/dist/session/preflight.d.ts +21 -13
- package/dist/session/preflight.js +227 -88
- package/dist/session/preflight.js.map +1 -1
- package/dist/session/prompts.d.ts +2 -5
- package/dist/session/prompts.js.map +1 -1
- package/dist/session/session-manager.d.ts +61 -6
- package/dist/session/session-manager.js +72 -10
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/session-metadata.d.ts +21 -5
- package/dist/session/session-metadata.js +34 -12
- package/dist/session/session-metadata.js.map +1 -1
- package/dist/session/types.d.ts +320 -5
- package/dist/session/types.js +57 -1
- package/dist/session/types.js.map +1 -1
- package/dist/signal/bot-command.js +6 -1
- package/dist/signal/bot-command.js.map +1 -1
- package/dist/signal/setup-signal.js +13 -21
- package/dist/signal/setup-signal.js.map +1 -1
- package/dist/signal/signal-bot-daemon.d.ts +16 -1
- package/dist/signal/signal-bot-daemon.js +39 -27
- package/dist/signal/signal-bot-daemon.js.map +1 -1
- package/dist/signal/signal-container.d.ts +3 -3
- package/dist/signal/signal-container.js +9 -3
- package/dist/signal/signal-container.js.map +1 -1
- package/dist/skills/discovery.d.ts +77 -0
- package/dist/skills/discovery.js +206 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.js +3 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/staging.d.ts +28 -0
- package/dist/skills/staging.js +68 -0
- package/dist/skills/staging.js.map +1 -0
- package/dist/skills/types.d.ts +46 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/trusted-process/approval-whitelist.d.ts +0 -2
- package/dist/trusted-process/approval-whitelist.js +17 -17
- package/dist/trusted-process/approval-whitelist.js.map +1 -1
- package/dist/trusted-process/async-mutex.d.ts +32 -0
- package/dist/trusted-process/async-mutex.js +50 -0
- package/dist/trusted-process/async-mutex.js.map +1 -0
- package/dist/trusted-process/audit-log.d.ts +38 -1
- package/dist/trusted-process/audit-log.js +82 -13
- package/dist/trusted-process/audit-log.js.map +1 -1
- package/dist/trusted-process/call-circuit-breaker.d.ts +6 -0
- package/dist/trusted-process/call-circuit-breaker.js +23 -3
- package/dist/trusted-process/call-circuit-breaker.js.map +1 -1
- package/dist/trusted-process/container-command.d.ts +35 -0
- package/dist/trusted-process/container-command.js +49 -0
- package/dist/trusted-process/container-command.js.map +1 -0
- package/dist/trusted-process/control-server.d.ts +101 -0
- package/dist/trusted-process/control-server.js +282 -0
- package/dist/trusted-process/control-server.js.map +1 -0
- package/dist/trusted-process/domain-utils.d.ts +6 -6
- package/dist/trusted-process/domain-utils.js +7 -23
- package/dist/trusted-process/domain-utils.js.map +1 -1
- package/dist/trusted-process/error-prefixes.d.ts +16 -0
- package/dist/trusted-process/error-prefixes.js +17 -0
- package/dist/trusted-process/error-prefixes.js.map +1 -0
- package/dist/trusted-process/index.d.ts +40 -23
- package/dist/trusted-process/index.js +131 -225
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/list-matcher.d.ts +17 -0
- package/dist/trusted-process/list-matcher.js +31 -0
- package/dist/trusted-process/list-matcher.js.map +1 -0
- package/dist/trusted-process/mcp-client-manager.d.ts +35 -6
- package/dist/trusted-process/mcp-client-manager.js +40 -45
- package/dist/trusted-process/mcp-client-manager.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +31 -120
- package/dist/trusted-process/mcp-proxy-server.js +201 -660
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +16 -4
- package/dist/trusted-process/policy-engine.js +103 -47
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/trusted-process/policy-roots.d.ts +6 -0
- package/dist/trusted-process/policy-roots.js +20 -0
- package/dist/trusted-process/policy-roots.js.map +1 -1
- package/dist/trusted-process/sandbox-integration.d.ts +12 -0
- package/dist/trusted-process/sandbox-integration.js +18 -0
- package/dist/trusted-process/sandbox-integration.js.map +1 -1
- package/dist/trusted-process/tcp-server-transport.d.ts +12 -1
- package/dist/trusted-process/tcp-server-transport.js +9 -1
- package/dist/trusted-process/tcp-server-transport.js.map +1 -1
- package/dist/trusted-process/tool-call-coordinator.d.ts +283 -0
- package/dist/trusted-process/tool-call-coordinator.js +592 -0
- package/dist/trusted-process/tool-call-coordinator.js.map +1 -0
- package/dist/trusted-process/tool-call-pipeline.d.ts +213 -0
- package/dist/trusted-process/tool-call-pipeline.js +832 -0
- package/dist/trusted-process/tool-call-pipeline.js.map +1 -0
- package/dist/trusted-process/tool-description-hints.d.ts +1 -1
- package/dist/types/argument-roles.d.ts +1 -1
- package/dist/types/argument-roles.js +14 -1
- package/dist/types/argument-roles.js.map +1 -1
- package/dist/types/audit.d.ts +9 -0
- package/dist/{session → types}/errors.d.ts +8 -2
- package/dist/{session → types}/errors.js +8 -2
- package/dist/types/errors.js.map +1 -0
- package/dist/types/reserved-servers.d.ts +11 -0
- package/dist/types/reserved-servers.js +12 -0
- package/dist/types/reserved-servers.js.map +1 -0
- package/dist/types/server-listing.d.ts +14 -0
- package/dist/types/server-listing.js +2 -0
- package/dist/types/server-listing.js.map +1 -0
- package/dist/types/slug.d.ts +2 -0
- package/dist/types/slug.js +2 -0
- package/dist/types/slug.js.map +1 -1
- package/dist/types/url-normalize.d.ts +16 -0
- package/dist/types/url-normalize.js +33 -0
- package/dist/types/url-normalize.js.map +1 -0
- package/dist/util/atomic-write.d.ts +31 -0
- package/dist/util/atomic-write.js +43 -0
- package/dist/util/atomic-write.js.map +1 -0
- package/dist/utils/error-message.d.ts +8 -0
- package/dist/utils/error-message.js +11 -0
- package/dist/utils/error-message.js.map +1 -0
- package/dist/utils/exec-error.d.ts +19 -0
- package/dist/utils/exec-error.js +16 -0
- package/dist/utils/exec-error.js.map +1 -0
- package/dist/utils/is-plain-object.d.ts +7 -0
- package/dist/utils/is-plain-object.js +12 -0
- package/dist/utils/is-plain-object.js.map +1 -0
- package/dist/utils/preflight-checks.d.ts +16 -0
- package/dist/utils/preflight-checks.js +178 -0
- package/dist/utils/preflight-checks.js.map +1 -0
- package/dist/web-ui/__tests__/json-rpc-dispatch.test.d.ts +7 -0
- package/dist/web-ui/__tests__/json-rpc-dispatch.test.js +725 -0
- package/dist/web-ui/__tests__/json-rpc-dispatch.test.js.map +1 -0
- package/dist/web-ui/conn-registry.d.ts +14 -0
- package/dist/web-ui/conn-registry.js +25 -0
- package/dist/web-ui/conn-registry.js.map +1 -0
- package/dist/web-ui/dispatch/escalation-dispatch.d.ts +7 -0
- package/dist/web-ui/dispatch/escalation-dispatch.js +52 -0
- package/dist/web-ui/dispatch/escalation-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/job-dispatch.d.ts +8 -0
- package/dist/web-ui/dispatch/job-dispatch.js +83 -0
- package/dist/web-ui/dispatch/job-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/persona-dispatch.d.ts +50 -0
- package/dist/web-ui/dispatch/persona-dispatch.js +269 -0
- package/dist/web-ui/dispatch/persona-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/session-dispatch.d.ts +9 -0
- package/dist/web-ui/dispatch/session-dispatch.js +219 -0
- package/dist/web-ui/dispatch/session-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/token-stream-dispatch.d.ts +15 -0
- package/dist/web-ui/dispatch/token-stream-dispatch.js +55 -0
- package/dist/web-ui/dispatch/token-stream-dispatch.js.map +1 -0
- package/dist/web-ui/dispatch/types.d.ts +54 -0
- package/dist/web-ui/dispatch/types.js +72 -0
- package/dist/web-ui/dispatch/types.js.map +1 -0
- package/dist/web-ui/dispatch/workflow-dispatch.d.ts +103 -0
- package/dist/web-ui/dispatch/workflow-dispatch.js +1036 -0
- package/dist/web-ui/dispatch/workflow-dispatch.js.map +1 -0
- package/dist/web-ui/json-rpc-dispatch.d.ts +12 -0
- package/dist/web-ui/json-rpc-dispatch.js +34 -0
- package/dist/web-ui/json-rpc-dispatch.js.map +1 -0
- package/dist/web-ui/state-graph.d.ts +13 -0
- package/dist/web-ui/state-graph.js +82 -0
- package/dist/web-ui/state-graph.js.map +1 -0
- package/dist/web-ui/token-stream-bridge.d.ts +76 -0
- package/dist/web-ui/token-stream-bridge.js +265 -0
- package/dist/web-ui/token-stream-bridge.js.map +1 -0
- package/dist/web-ui/web-event-bus.d.ts +176 -0
- package/dist/web-ui/web-event-bus.js +19 -0
- package/dist/web-ui/web-event-bus.js.map +1 -0
- package/dist/web-ui/web-session-transport.d.ts +31 -0
- package/dist/web-ui/web-session-transport.js +109 -0
- package/dist/web-ui/web-session-transport.js.map +1 -0
- package/dist/web-ui/web-ui-server.d.ts +90 -0
- package/dist/web-ui/web-ui-server.js +477 -0
- package/dist/web-ui/web-ui-server.js.map +1 -0
- package/dist/web-ui/web-ui-types.d.ts +418 -0
- package/dist/web-ui/web-ui-types.js +32 -0
- package/dist/web-ui/web-ui-types.js.map +1 -0
- package/dist/web-ui/ws-utils.d.ts +5 -0
- package/dist/web-ui/ws-utils.js +12 -0
- package/dist/web-ui/ws-utils.js.map +1 -0
- package/dist/web-ui-static/assets/index-BD5U6ILh.css +1 -0
- package/dist/web-ui-static/assets/index-FMsHWEfK.js +79 -0
- package/dist/web-ui-static/assets/orbitron-latin-700-normal-4jsRXGGJ.woff2 +0 -0
- package/dist/web-ui-static/assets/orbitron-latin-700-normal-DmYOh-W9.woff +0 -0
- package/dist/web-ui-static/index.html +14 -0
- package/dist/workflow/artifacts.d.ts +59 -0
- package/dist/workflow/artifacts.js +188 -0
- package/dist/workflow/artifacts.js.map +1 -0
- package/dist/workflow/checkpoint-selection.d.ts +34 -0
- package/dist/workflow/checkpoint-selection.js +48 -0
- package/dist/workflow/checkpoint-selection.js.map +1 -0
- package/dist/workflow/checkpoint.d.ts +35 -0
- package/dist/workflow/checkpoint.js +84 -0
- package/dist/workflow/checkpoint.js.map +1 -0
- package/dist/workflow/cli-shared.d.ts +62 -0
- package/dist/workflow/cli-shared.js +117 -0
- package/dist/workflow/cli-shared.js.map +1 -0
- package/dist/workflow/cli-support.d.ts +92 -0
- package/dist/workflow/cli-support.js +421 -0
- package/dist/workflow/cli-support.js.map +1 -0
- package/dist/workflow/container-snapshots.d.ts +29 -0
- package/dist/workflow/container-snapshots.js +137 -0
- package/dist/workflow/container-snapshots.js.map +1 -0
- package/dist/workflow/daemon-gate-commands.d.ts +21 -0
- package/dist/workflow/daemon-gate-commands.js +599 -0
- package/dist/workflow/daemon-gate-commands.js.map +1 -0
- package/dist/workflow/definition-loader.d.ts +32 -0
- package/dist/workflow/definition-loader.js +56 -0
- package/dist/workflow/definition-loader.js.map +1 -0
- package/dist/workflow/discovery.d.ts +107 -0
- package/dist/workflow/discovery.js +263 -0
- package/dist/workflow/discovery.js.map +1 -0
- package/dist/workflow/errors.d.ts +66 -0
- package/dist/workflow/errors.js +49 -0
- package/dist/workflow/errors.js.map +1 -0
- package/dist/workflow/guards.d.ts +8 -0
- package/dist/workflow/guards.js +38 -0
- package/dist/workflow/guards.js.map +1 -0
- package/dist/workflow/lane-template.d.ts +89 -0
- package/dist/workflow/lane-template.js +141 -0
- package/dist/workflow/lane-template.js.map +1 -0
- package/dist/workflow/lint-integration.d.ts +64 -0
- package/dist/workflow/lint-integration.js +56 -0
- package/dist/workflow/lint-integration.js.map +1 -0
- package/dist/workflow/lint.d.ts +72 -0
- package/dist/workflow/lint.js +593 -0
- package/dist/workflow/lint.js.map +1 -0
- package/dist/workflow/machine-builder.d.ts +178 -0
- package/dist/workflow/machine-builder.js +678 -0
- package/dist/workflow/machine-builder.js.map +1 -0
- package/dist/workflow/message-log.d.ts +99 -0
- package/dist/workflow/message-log.js +40 -0
- package/dist/workflow/message-log.js.map +1 -0
- package/dist/workflow/orchestrator.d.ts +954 -0
- package/dist/workflow/orchestrator.js +3594 -0
- package/dist/workflow/orchestrator.js.map +1 -0
- package/dist/workflow/prompt-builder.d.ts +39 -0
- package/dist/workflow/prompt-builder.js +243 -0
- package/dist/workflow/prompt-builder.js.map +1 -0
- package/dist/workflow/run-state-command.d.ts +9 -0
- package/dist/workflow/run-state-command.js +414 -0
- package/dist/workflow/run-state-command.js.map +1 -0
- package/dist/workflow/run-state-debug-capture.d.ts +40 -0
- package/dist/workflow/run-state-debug-capture.js +101 -0
- package/dist/workflow/run-state-debug-capture.js.map +1 -0
- package/dist/workflow/status-parser.d.ts +68 -0
- package/dist/workflow/status-parser.js +274 -0
- package/dist/workflow/status-parser.js.map +1 -0
- package/dist/workflow/types.d.ts +598 -0
- package/dist/workflow/types.js +85 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflow/validate.d.ts +80 -0
- package/dist/workflow/validate.js +788 -0
- package/dist/workflow/validate.js.map +1 -0
- package/dist/workflow/workflow-command.d.ts +9 -0
- package/dist/workflow/workflow-command.js +670 -0
- package/dist/workflow/workflow-command.js.map +1 -0
- package/dist/workflow/workflow-discovery.d.ts +27 -0
- package/dist/workflow/workflow-discovery.js +121 -0
- package/dist/workflow/workflow-discovery.js.map +1 -0
- package/dist/workflow/workflow-manager.d.ts +156 -0
- package/dist/workflow/workflow-manager.js +359 -0
- package/dist/workflow/workflow-manager.js.map +1 -0
- package/dist/workflow/workflows/design-and-code/README.md +50 -0
- package/dist/workflow/workflows/design-and-code/workflow.yaml +169 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
- package/dist/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
- package/dist/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
- package/dist/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
- package/dist/workflow/workflows/evolve/scripts/LICENSE +201 -0
- package/dist/workflow/workflows/evolve/scripts/README.md +314 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-brief +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-db +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-eval +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-files +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve-summary +16 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
- package/dist/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
- package/dist/workflow/workflows/evolve/scripts/requirements.txt +2 -0
- package/dist/workflow/workflows/evolve/workflow.yaml +646 -0
- package/dist/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
- package/dist/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
- package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
- package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
- package/dist/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
- package/dist/workflow/workflows/test-email-summary/workflow.yaml +90 -0
- package/dist/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +206 -0
- package/dist/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +167 -0
- package/dist/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +189 -0
- package/dist/workflow/workflows/vuln-discovery/workflow.yaml +925 -0
- package/dist/workflow/worktree.d.ts +43 -0
- package/dist/workflow/worktree.js +106 -0
- package/dist/workflow/worktree.js.map +1 -0
- package/docker/Dockerfile.base +31 -0
- package/docker/Dockerfile.base.arm64 +27 -0
- package/docker/Dockerfile.claude-code +3 -1
- package/docker/Dockerfile.codex +17 -0
- package/docker/Dockerfile.goose +3 -1
- package/docker/entrypoint-claude-code.sh +7 -0
- package/docker/entrypoint-codex.sh +42 -0
- package/docker/entrypoint-goose.sh +6 -0
- package/docker/entrypoint-uid-remap.sh +93 -0
- package/package.json +27 -11
- package/packages/web-ui/README.md +113 -0
- package/packages/web-ui/docs/workflow-state-machine.png +0 -0
- package/src/config/generated/compiled-policy.json +528 -161
- package/src/config/generated/test-scenarios.json +4810 -170
- package/src/config/generated/tool-annotations.json +34 -47
- package/src/config/mcp-servers.json +2 -2
- package/src/workflow/workflows/design-and-code/README.md +50 -0
- package/src/workflow/workflows/design-and-code/workflow.yaml +169 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
- package/src/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
- package/src/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
- package/src/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
- package/src/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
- package/src/workflow/workflows/evolve/scripts/LICENSE +201 -0
- package/src/workflow/workflows/evolve/scripts/README.md +314 -0
- package/src/workflow/workflows/evolve/scripts/evolve-brief +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-db +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-eval +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-files +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve-summary +16 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
- package/src/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
- package/src/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
- package/src/workflow/workflows/evolve/scripts/requirements.txt +2 -0
- package/src/workflow/workflows/evolve/workflow.yaml +646 -0
- package/src/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
- package/src/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
- package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
- package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
- package/src/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
- package/src/workflow/workflows/test-email-summary/workflow.yaml +90 -0
- package/src/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +206 -0
- package/src/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +167 -0
- package/src/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +189 -0
- package/src/workflow/workflows/vuln-discovery/workflow.yaml +925 -0
- package/dist/pipeline/llm-logger.js.map +0 -1
- package/dist/session/errors.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Container-CLI translation for Docker-based MCP server commands.
|
|
3
|
+
*
|
|
4
|
+
* Several bundled MCP servers run as containers via `docker run -i --rm
|
|
5
|
+
* [-e VAR] <image>` (e.g. the GitHub MCP server). On machines using the
|
|
6
|
+
* Apple `container` runtime instead of Docker (see
|
|
7
|
+
* docs/designs/apple-container-runtime.md), the `docker` binary does not
|
|
8
|
+
* exist — but the Apple CLI accepts the same `run -i --rm -e VAR <image>`
|
|
9
|
+
* invocation, so the spawn can be translated by swapping the binary.
|
|
10
|
+
*
|
|
11
|
+
* The translation is deliberately narrow: only `docker run ...` commands
|
|
12
|
+
* are rewritten, only when `docker` is absent AND `container` is present,
|
|
13
|
+
* and only the binary name changes — the argument array passes through
|
|
14
|
+
* untouched (no string assembly; see the Safe Coding rules).
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Returns true when `bin --version` can be spawned (the binary exists on
|
|
18
|
+
* PATH). A non-zero exit still counts as existing — only a spawn error
|
|
19
|
+
* (ENOENT et al.) counts as missing.
|
|
20
|
+
*/
|
|
21
|
+
export declare function commandExists(bin: string): boolean;
|
|
22
|
+
export interface ContainerSpawnSpec {
|
|
23
|
+
readonly command: string;
|
|
24
|
+
readonly args: string[];
|
|
25
|
+
/** True when the spawn was rewritten from `docker` to `container`. */
|
|
26
|
+
readonly translated: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Rewrites a `docker run ...` MCP server spawn to the Apple `container`
|
|
30
|
+
* CLI when Docker is unavailable but `container` is present. Everything
|
|
31
|
+
* else passes through unchanged — including `docker run` on machines
|
|
32
|
+
* that have Docker, and non-`run` docker subcommands (which have no
|
|
33
|
+
* guaranteed CLI parity).
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveContainerSpawnCommand(command: string, args: readonly string[], binExists?: (bin: string) => boolean): ContainerSpawnSpec;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Container-CLI translation for Docker-based MCP server commands.
|
|
3
|
+
*
|
|
4
|
+
* Several bundled MCP servers run as containers via `docker run -i --rm
|
|
5
|
+
* [-e VAR] <image>` (e.g. the GitHub MCP server). On machines using the
|
|
6
|
+
* Apple `container` runtime instead of Docker (see
|
|
7
|
+
* docs/designs/apple-container-runtime.md), the `docker` binary does not
|
|
8
|
+
* exist — but the Apple CLI accepts the same `run -i --rm -e VAR <image>`
|
|
9
|
+
* invocation, so the spawn can be translated by swapping the binary.
|
|
10
|
+
*
|
|
11
|
+
* The translation is deliberately narrow: only `docker run ...` commands
|
|
12
|
+
* are rewritten, only when `docker` is absent AND `container` is present,
|
|
13
|
+
* and only the binary name changes — the argument array passes through
|
|
14
|
+
* untouched (no string assembly; see the Safe Coding rules).
|
|
15
|
+
*/
|
|
16
|
+
import { spawnSync } from 'node:child_process';
|
|
17
|
+
/** Probe cache: binary name → exists on PATH. One probe per process. */
|
|
18
|
+
const existsCache = new Map();
|
|
19
|
+
/**
|
|
20
|
+
* Returns true when `bin --version` can be spawned (the binary exists on
|
|
21
|
+
* PATH). A non-zero exit still counts as existing — only a spawn error
|
|
22
|
+
* (ENOENT et al.) counts as missing.
|
|
23
|
+
*/
|
|
24
|
+
export function commandExists(bin) {
|
|
25
|
+
const cached = existsCache.get(bin);
|
|
26
|
+
if (cached !== undefined)
|
|
27
|
+
return cached;
|
|
28
|
+
const result = spawnSync(bin, ['--version'], { stdio: 'ignore', timeout: 10_000 });
|
|
29
|
+
const exists = result.error === undefined;
|
|
30
|
+
existsCache.set(bin, exists);
|
|
31
|
+
return exists;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Rewrites a `docker run ...` MCP server spawn to the Apple `container`
|
|
35
|
+
* CLI when Docker is unavailable but `container` is present. Everything
|
|
36
|
+
* else passes through unchanged — including `docker run` on machines
|
|
37
|
+
* that have Docker, and non-`run` docker subcommands (which have no
|
|
38
|
+
* guaranteed CLI parity).
|
|
39
|
+
*/
|
|
40
|
+
export function resolveContainerSpawnCommand(command, args, binExists = commandExists) {
|
|
41
|
+
if (command !== 'docker' || args[0] !== 'run') {
|
|
42
|
+
return { command, args: [...args], translated: false };
|
|
43
|
+
}
|
|
44
|
+
if (binExists('docker') || !binExists('container')) {
|
|
45
|
+
return { command, args: [...args], translated: false };
|
|
46
|
+
}
|
|
47
|
+
return { command: 'container', args: [...args], translated: true };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=container-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-command.js","sourceRoot":"","sources":["../../src/trusted-process/container-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,wEAAwE;AACxE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;IAC1C,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AASD;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAAe,EACf,IAAuB,EACvB,YAAsC,aAAa;IAEnD,IAAI,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP control server for `ToolCallCoordinator`.
|
|
3
|
+
*
|
|
4
|
+
* Exposes a small JSON-over-HTTP API that the workflow orchestrator uses
|
|
5
|
+
* to hot-swap the coordinator's policy between state transitions. The
|
|
6
|
+
* server follows the same shape as the MITM proxy's control server:
|
|
7
|
+
* HTTP/1.1 over a Unix domain socket (preferred) or loopback TCP
|
|
8
|
+
* (fallback for platforms where UDS in bind mounts is not viable --
|
|
9
|
+
* typically macOS with Docker Desktop).
|
|
10
|
+
*
|
|
11
|
+
* Routing convention: endpoints live under `/__ironcurtain/<noun>/<verb>`.
|
|
12
|
+
* This prefix is shared with the MITM control server but each server
|
|
13
|
+
* routes a disjoint set of nouns (MITM owns `domains/*`; the coordinator
|
|
14
|
+
* owns `policy/*`). The two services are deliberately separate --
|
|
15
|
+
* they run in different processes and serve different concerns.
|
|
16
|
+
*
|
|
17
|
+
* Transport selection rules:
|
|
18
|
+
* - If `socketPath` is supplied, bind UDS. The parent directory is
|
|
19
|
+
* assumed to carry `0o700` mode (same pattern as MITM); this is
|
|
20
|
+
* how access control is enforced.
|
|
21
|
+
* - Otherwise if `port` is supplied, bind TCP on 127.0.0.1.
|
|
22
|
+
* - Callers must supply exactly one of the two.
|
|
23
|
+
*
|
|
24
|
+
* The server is silent when no workflow is wired up: `start()` is only
|
|
25
|
+
* called when the coordinator was constructed with a control-socket
|
|
26
|
+
* path, so the single-session CLI / daemon / cron paths are unaffected.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* HTTP path for the policy hot-swap RPC. Exported so clients (the
|
|
30
|
+
* workflow orchestrator) can target it without stringly-typed paths.
|
|
31
|
+
*/
|
|
32
|
+
export declare const POLICY_LOAD_PATH = "/__ironcurtain/policy/load";
|
|
33
|
+
/**
|
|
34
|
+
* Request body for `POST {POLICY_LOAD_PATH}`.
|
|
35
|
+
* Matches `ToolCallCoordinator.loadPolicy`'s argument shape exactly so
|
|
36
|
+
* the server is a thin HTTP adapter.
|
|
37
|
+
*
|
|
38
|
+
* Audit entries are written to the coordinator's single long-lived
|
|
39
|
+
* audit file (fixed at construction time); each entry carries a
|
|
40
|
+
* `persona` field so consumers can reconstruct per-persona slices
|
|
41
|
+
* without per-state file rotation.
|
|
42
|
+
*/
|
|
43
|
+
export interface LoadPolicyRequest {
|
|
44
|
+
readonly persona: string;
|
|
45
|
+
readonly policyDir: string;
|
|
46
|
+
}
|
|
47
|
+
/** Handler invoked when `POST /__ironcurtain/policy/load` arrives. */
|
|
48
|
+
export type LoadPolicyHandler = (req: LoadPolicyRequest) => Promise<void>;
|
|
49
|
+
/** Listen options. Exactly one of `socketPath` / `port` must be set. */
|
|
50
|
+
export interface ControlServerListenOptions {
|
|
51
|
+
/** Absolute UDS path. Mutually exclusive with `port`. */
|
|
52
|
+
readonly socketPath?: string;
|
|
53
|
+
/** TCP port (0 for OS-assigned). Mutually exclusive with `socketPath`. */
|
|
54
|
+
readonly port?: number;
|
|
55
|
+
}
|
|
56
|
+
/** Address the server actually bound to (TCP port is filled in if 0 was passed). */
|
|
57
|
+
export interface ControlServerAddress {
|
|
58
|
+
readonly socketPath?: string;
|
|
59
|
+
readonly port?: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Constructor dependencies for `ControlServer`. The handler is injected
|
|
63
|
+
* so the server has no direct coupling to `ToolCallCoordinator`; this
|
|
64
|
+
* keeps the server unit-testable without a full coordinator.
|
|
65
|
+
*/
|
|
66
|
+
export interface ControlServerDeps {
|
|
67
|
+
readonly onLoadPolicy: LoadPolicyHandler;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* HTTP server that routes control requests to the coordinator.
|
|
71
|
+
*
|
|
72
|
+
* Lifecycle: call `start(options)` to bind the server and `stop()` to
|
|
73
|
+
* unbind it. After `stop()` completes, the same instance may be started
|
|
74
|
+
* again with new listen options.
|
|
75
|
+
*/
|
|
76
|
+
export declare class ControlServer {
|
|
77
|
+
private readonly server;
|
|
78
|
+
private boundAddress;
|
|
79
|
+
constructor(deps: ControlServerDeps);
|
|
80
|
+
/** Dispatches a single request. One method, one route, for now. */
|
|
81
|
+
private route;
|
|
82
|
+
/**
|
|
83
|
+
* Parses a `POST /__ironcurtain/policy/load` request and invokes the
|
|
84
|
+
* handler. 400 on malformed input; 500 on handler failure; 200 on
|
|
85
|
+
* success with `{ ok: true, loadedAt: <ISO> }`.
|
|
86
|
+
*/
|
|
87
|
+
private handleLoadPolicy;
|
|
88
|
+
/**
|
|
89
|
+
* Begins accepting connections. Resolves once the socket is bound;
|
|
90
|
+
* rejects with the server's `'error'` event on bind failure.
|
|
91
|
+
*/
|
|
92
|
+
start(options: ControlServerListenOptions): Promise<ControlServerAddress>;
|
|
93
|
+
/** Returns the bound address, or null if `start()` has not completed. */
|
|
94
|
+
getAddress(): ControlServerAddress | null;
|
|
95
|
+
/**
|
|
96
|
+
* Shuts down the server. Closes all in-flight connections, removes
|
|
97
|
+
* the socket file (UDS mode), and resolves once the listener has
|
|
98
|
+
* fully stopped.
|
|
99
|
+
*/
|
|
100
|
+
stop(): Promise<void>;
|
|
101
|
+
}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP control server for `ToolCallCoordinator`.
|
|
3
|
+
*
|
|
4
|
+
* Exposes a small JSON-over-HTTP API that the workflow orchestrator uses
|
|
5
|
+
* to hot-swap the coordinator's policy between state transitions. The
|
|
6
|
+
* server follows the same shape as the MITM proxy's control server:
|
|
7
|
+
* HTTP/1.1 over a Unix domain socket (preferred) or loopback TCP
|
|
8
|
+
* (fallback for platforms where UDS in bind mounts is not viable --
|
|
9
|
+
* typically macOS with Docker Desktop).
|
|
10
|
+
*
|
|
11
|
+
* Routing convention: endpoints live under `/__ironcurtain/<noun>/<verb>`.
|
|
12
|
+
* This prefix is shared with the MITM control server but each server
|
|
13
|
+
* routes a disjoint set of nouns (MITM owns `domains/*`; the coordinator
|
|
14
|
+
* owns `policy/*`). The two services are deliberately separate --
|
|
15
|
+
* they run in different processes and serve different concerns.
|
|
16
|
+
*
|
|
17
|
+
* Transport selection rules:
|
|
18
|
+
* - If `socketPath` is supplied, bind UDS. The parent directory is
|
|
19
|
+
* assumed to carry `0o700` mode (same pattern as MITM); this is
|
|
20
|
+
* how access control is enforced.
|
|
21
|
+
* - Otherwise if `port` is supplied, bind TCP on 127.0.0.1.
|
|
22
|
+
* - Callers must supply exactly one of the two.
|
|
23
|
+
*
|
|
24
|
+
* The server is silent when no workflow is wired up: `start()` is only
|
|
25
|
+
* called when the coordinator was constructed with a control-socket
|
|
26
|
+
* path, so the single-session CLI / daemon / cron paths are unaffected.
|
|
27
|
+
*/
|
|
28
|
+
import { existsSync, unlinkSync } from 'node:fs';
|
|
29
|
+
import * as http from 'node:http';
|
|
30
|
+
import * as logger from '../logger.js';
|
|
31
|
+
import { PolicyDirValidationError } from '../config/validate-policy-dir.js';
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Public types
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
/**
|
|
36
|
+
* HTTP path for the policy hot-swap RPC. Exported so clients (the
|
|
37
|
+
* workflow orchestrator) can target it without stringly-typed paths.
|
|
38
|
+
*/
|
|
39
|
+
export const POLICY_LOAD_PATH = '/__ironcurtain/policy/load';
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// Implementation
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
/** Cap on control-request body size (4 KiB). Load requests are tiny; anything larger is hostile or buggy. */
|
|
44
|
+
const MAX_BODY_BYTES = 4096;
|
|
45
|
+
/** Buffers an HTTP request body up to `maxBytes`; rejects if the limit is exceeded. */
|
|
46
|
+
function bufferRequestBody(req, maxBytes) {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const chunks = [];
|
|
49
|
+
let size = 0;
|
|
50
|
+
req.on('data', (chunk) => {
|
|
51
|
+
size += chunk.length;
|
|
52
|
+
if (size > maxBytes) {
|
|
53
|
+
req.destroy();
|
|
54
|
+
reject(new Error(`Request body exceeds ${maxBytes} bytes`));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
chunks.push(chunk);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
req.on('end', () => resolve(Buffer.concat(chunks)));
|
|
61
|
+
req.on('error', reject);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/** Writes a JSON response with the given status code and body. */
|
|
65
|
+
function writeJson(res, status, body) {
|
|
66
|
+
res.writeHead(status, { 'Content-Type': 'application/json' });
|
|
67
|
+
res.end(JSON.stringify(body));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Formats an unknown thrown value for server-side logging. Includes the
|
|
71
|
+
* stack trace when available -- this is server-side only, so full
|
|
72
|
+
* internals are appropriate. Never pass this output to an HTTP response:
|
|
73
|
+
* error messages in Node commonly embed filesystem paths and other
|
|
74
|
+
* internal details that should not cross the trust boundary.
|
|
75
|
+
*/
|
|
76
|
+
function formatErrorForLog(err) {
|
|
77
|
+
if (err instanceof Error) {
|
|
78
|
+
return err.stack ?? `${err.name}: ${err.message}`;
|
|
79
|
+
}
|
|
80
|
+
return String(err);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validates the decoded body of a load-policy request. Returns the
|
|
84
|
+
* validated shape or a string describing the first validation failure.
|
|
85
|
+
*/
|
|
86
|
+
function parseLoadPolicyBody(raw) {
|
|
87
|
+
if (typeof raw !== 'object' || raw === null)
|
|
88
|
+
return 'body must be a JSON object';
|
|
89
|
+
const obj = raw;
|
|
90
|
+
if (typeof obj.persona !== 'string' || obj.persona.length === 0) {
|
|
91
|
+
return 'persona must be a non-empty string';
|
|
92
|
+
}
|
|
93
|
+
if (typeof obj.policyDir !== 'string' || obj.policyDir.length === 0) {
|
|
94
|
+
return 'policyDir must be a non-empty string';
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
persona: obj.persona,
|
|
98
|
+
policyDir: obj.policyDir,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* HTTP server that routes control requests to the coordinator.
|
|
103
|
+
*
|
|
104
|
+
* Lifecycle: call `start(options)` to bind the server and `stop()` to
|
|
105
|
+
* unbind it. After `stop()` completes, the same instance may be started
|
|
106
|
+
* again with new listen options.
|
|
107
|
+
*/
|
|
108
|
+
export class ControlServer {
|
|
109
|
+
server;
|
|
110
|
+
boundAddress = null;
|
|
111
|
+
constructor(deps) {
|
|
112
|
+
this.server = http.createServer((req, res) => {
|
|
113
|
+
this.route(req, res, deps).catch((err) => {
|
|
114
|
+
// The per-handler try/catch should absorb all errors; this is
|
|
115
|
+
// a belt-and-braces guard against a handler that leaks a
|
|
116
|
+
// rejection. Log the full error server-side (including stack)
|
|
117
|
+
// and return an opaque 500 to the client -- raw error text
|
|
118
|
+
// from Node commonly embeds absolute paths and internal
|
|
119
|
+
// details that should not cross the trust boundary.
|
|
120
|
+
logger.warn(`[control-server] unhandled handler error: ${formatErrorForLog(err)}`);
|
|
121
|
+
if (!res.headersSent) {
|
|
122
|
+
writeJson(res, 500, { error: 'Internal error' });
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
res.end();
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/** Dispatches a single request. One method, one route, for now. */
|
|
131
|
+
async route(req, res, deps) {
|
|
132
|
+
const url = req.url ?? '';
|
|
133
|
+
if (url === POLICY_LOAD_PATH && req.method === 'POST') {
|
|
134
|
+
await this.handleLoadPolicy(req, res, deps.onLoadPolicy);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
writeJson(res, 404, { error: 'Not Found' });
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Parses a `POST /__ironcurtain/policy/load` request and invokes the
|
|
141
|
+
* handler. 400 on malformed input; 500 on handler failure; 200 on
|
|
142
|
+
* success with `{ ok: true, loadedAt: <ISO> }`.
|
|
143
|
+
*/
|
|
144
|
+
async handleLoadPolicy(req, res, onLoadPolicy) {
|
|
145
|
+
let body;
|
|
146
|
+
try {
|
|
147
|
+
body = await bufferRequestBody(req, MAX_BODY_BYTES);
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
// bufferRequestBody rejects on (a) oversized body — our controlled
|
|
151
|
+
// message — or (b) Node-level req 'error' events, whose messages
|
|
152
|
+
// may embed filesystem paths or other internals. Generic response
|
|
153
|
+
// either way; details go to the server log.
|
|
154
|
+
logger.warn(`ControlServer bufferRequestBody failed: ${formatErrorForLog(err)}`);
|
|
155
|
+
writeJson(res, 400, { error: 'Bad request' });
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
let parsed;
|
|
159
|
+
try {
|
|
160
|
+
parsed = JSON.parse(body.toString('utf-8'));
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// JSON.parse's error text embeds parser internals (byte offsets
|
|
164
|
+
// and the surrounding characters of the input). The caller knows
|
|
165
|
+
// what they sent; a generic message is sufficient and avoids
|
|
166
|
+
// echoing any fragment of the request back.
|
|
167
|
+
writeJson(res, 400, { error: 'Invalid JSON' });
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const validated = parseLoadPolicyBody(parsed);
|
|
171
|
+
if (typeof validated === 'string') {
|
|
172
|
+
writeJson(res, 400, { error: validated });
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
await onLoadPolicy(validated);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
// PolicyDirValidationError is a caller-fault case (the RPC
|
|
180
|
+
// supplied a policyDir that escapes the trusted roots). Its
|
|
181
|
+
// message is built by our own code and references only paths
|
|
182
|
+
// the caller already knows, so surfacing it as 400 helps the
|
|
183
|
+
// orchestrator log the real cause instead of a blind "Internal
|
|
184
|
+
// error". Any other throw is an unexpected server-side failure
|
|
185
|
+
// whose error text may embed filesystem internals; log it
|
|
186
|
+
// server-side and return a generic 500.
|
|
187
|
+
if (err instanceof PolicyDirValidationError) {
|
|
188
|
+
writeJson(res, 400, { error: err.message });
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
logger.warn(`[control-server] loadPolicy failed: ${formatErrorForLog(err)}`);
|
|
192
|
+
writeJson(res, 500, { error: 'Internal error' });
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
writeJson(res, 200, { ok: true, loadedAt: new Date().toISOString() });
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Begins accepting connections. Resolves once the socket is bound;
|
|
199
|
+
* rejects with the server's `'error'` event on bind failure.
|
|
200
|
+
*/
|
|
201
|
+
async start(options) {
|
|
202
|
+
if (this.boundAddress !== null) {
|
|
203
|
+
throw new Error(`ControlServer.start() called twice (already listening at ${JSON.stringify(this.boundAddress)})`);
|
|
204
|
+
}
|
|
205
|
+
const { socketPath, port } = options;
|
|
206
|
+
const hasSocket = socketPath !== undefined;
|
|
207
|
+
const hasPort = port !== undefined;
|
|
208
|
+
if (hasSocket === hasPort) {
|
|
209
|
+
throw new Error('ControlServer.start: exactly one of socketPath or port must be provided');
|
|
210
|
+
}
|
|
211
|
+
if (socketPath !== undefined) {
|
|
212
|
+
// If a stale socket exists from a previous run, clear it. Matches
|
|
213
|
+
// MITM's behavior at mitm-proxy.ts:1600.
|
|
214
|
+
if (existsSync(socketPath)) {
|
|
215
|
+
unlinkSync(socketPath);
|
|
216
|
+
}
|
|
217
|
+
this.boundAddress = await listen(this.server, socketPath);
|
|
218
|
+
return this.boundAddress;
|
|
219
|
+
}
|
|
220
|
+
// Narrowing: port must be defined here (we rejected the both-undefined
|
|
221
|
+
// and both-defined cases above).
|
|
222
|
+
this.boundAddress = await listenTcp(this.server, port ?? 0);
|
|
223
|
+
return this.boundAddress;
|
|
224
|
+
}
|
|
225
|
+
/** Returns the bound address, or null if `start()` has not completed. */
|
|
226
|
+
getAddress() {
|
|
227
|
+
return this.boundAddress;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Shuts down the server. Closes all in-flight connections, removes
|
|
231
|
+
* the socket file (UDS mode), and resolves once the listener has
|
|
232
|
+
* fully stopped.
|
|
233
|
+
*/
|
|
234
|
+
async stop() {
|
|
235
|
+
// closeAllConnections() cancels any in-flight requests so close()
|
|
236
|
+
// doesn't hang waiting for keep-alive connections to end.
|
|
237
|
+
this.server.closeAllConnections();
|
|
238
|
+
await new Promise((resolve) => {
|
|
239
|
+
this.server.close(() => resolve());
|
|
240
|
+
});
|
|
241
|
+
const socketPath = this.boundAddress?.socketPath;
|
|
242
|
+
if (socketPath) {
|
|
243
|
+
try {
|
|
244
|
+
if (existsSync(socketPath)) {
|
|
245
|
+
unlinkSync(socketPath);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// best-effort cleanup
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// Clear the bound address so `getAddress()` correctly reports the
|
|
253
|
+
// listener as gone and a subsequent `start()` is permitted (the
|
|
254
|
+
// double-start guard in `start()` keys off `boundAddress`).
|
|
255
|
+
this.boundAddress = null;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/** Listens on a UDS and resolves with the bound address. */
|
|
259
|
+
function listen(server, socketPath) {
|
|
260
|
+
return new Promise((resolve, reject) => {
|
|
261
|
+
const onError = (err) => reject(err);
|
|
262
|
+
server.once('error', onError);
|
|
263
|
+
server.listen(socketPath, () => {
|
|
264
|
+
server.removeListener('error', onError);
|
|
265
|
+
resolve({ socketPath });
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
/** Listens on loopback TCP and resolves with the OS-assigned port. */
|
|
270
|
+
function listenTcp(server, port) {
|
|
271
|
+
return new Promise((resolve, reject) => {
|
|
272
|
+
const onError = (err) => reject(err);
|
|
273
|
+
server.once('error', onError);
|
|
274
|
+
server.listen(port, '127.0.0.1', () => {
|
|
275
|
+
server.removeListener('error', onError);
|
|
276
|
+
const addr = server.address();
|
|
277
|
+
const boundPort = addr && typeof addr === 'object' ? addr.port : port;
|
|
278
|
+
resolve({ port: boundPort });
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=control-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-server.js","sourceRoot":"","sources":["../../src/trusted-process/control-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
* Domain matching (domainMatchesAllowlist, isIpAddress) shared by the
|
|
5
5
|
* PolicyEngine and the list type registry (dynamic-list-types.ts).
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Domain extraction (extractDomain, extractGitDomain) and git remote
|
|
8
|
+
* resolution (resolveGitRemote, resolveDefaultGitRemote) used by the
|
|
9
9
|
* policy engine's domain check pipeline and the auto-approver.
|
|
10
|
+
*
|
|
11
|
+
* URL canonicalizers (normalizeUrl, normalizeGitUrl) live in
|
|
12
|
+
* `../types/url-normalize.js` so the ArgumentRole registry can use them
|
|
13
|
+
* without forming a runtime cycle through this module.
|
|
10
14
|
*/
|
|
11
15
|
import type { ArgumentRole } from '../types/argument-roles.js';
|
|
12
16
|
/**
|
|
@@ -29,12 +33,8 @@ export declare function isIpAddress(domain: string): boolean;
|
|
|
29
33
|
* For plain hostname domains (e.g., from `fetch-url`), behavior is unchanged.
|
|
30
34
|
*/
|
|
31
35
|
export declare function domainMatchesAllowlist(domain: string, allowedDomains: readonly string[]): boolean;
|
|
32
|
-
/** Normalizes an HTTP(S) URL to a canonical form. Returns value as-is on parse failure. */
|
|
33
|
-
export declare function normalizeUrl(value: string): string;
|
|
34
36
|
/** Extracts the hostname from an HTTP(S) URL. Returns value as-is on parse failure. */
|
|
35
37
|
export declare function extractDomain(value: string): string;
|
|
36
|
-
/** Normalizes a git URL (HTTP or SSH format). SSH URLs are returned as-is. */
|
|
37
|
-
export declare function normalizeGitUrl(value: string): string;
|
|
38
38
|
/**
|
|
39
39
|
* Extracts the domain from a URL value, dispatching to the correct
|
|
40
40
|
* extractor based on role. Use this instead of calling extractDomain
|
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
* Domain matching (domainMatchesAllowlist, isIpAddress) shared by the
|
|
5
5
|
* PolicyEngine and the list type registry (dynamic-list-types.ts).
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Domain extraction (extractDomain, extractGitDomain) and git remote
|
|
8
|
+
* resolution (resolveGitRemote, resolveDefaultGitRemote) used by the
|
|
9
9
|
* policy engine's domain check pipeline and the auto-approver.
|
|
10
|
+
*
|
|
11
|
+
* URL canonicalizers (normalizeUrl, normalizeGitUrl) live in
|
|
12
|
+
* `../types/url-normalize.js` so the ArgumentRole registry can use them
|
|
13
|
+
* without forming a runtime cycle through this module.
|
|
10
14
|
*/
|
|
11
15
|
import { execFileSync } from 'node:child_process';
|
|
12
16
|
import { resolve } from 'node:path';
|
|
@@ -52,20 +56,8 @@ export function domainMatchesAllowlist(domain, allowedDomains) {
|
|
|
52
56
|
});
|
|
53
57
|
}
|
|
54
58
|
// ---------------------------------------------------------------------------
|
|
55
|
-
//
|
|
59
|
+
// Domain extraction
|
|
56
60
|
// ---------------------------------------------------------------------------
|
|
57
|
-
/** Normalizes an HTTP(S) URL to a canonical form. Returns value as-is on parse failure. */
|
|
58
|
-
export function normalizeUrl(value) {
|
|
59
|
-
try {
|
|
60
|
-
const url = new URL(value);
|
|
61
|
-
if (url.pathname === '/')
|
|
62
|
-
url.pathname = '';
|
|
63
|
-
return url.toString().replace(/\/$/, '');
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
return value;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
61
|
/** Extracts the hostname from an HTTP(S) URL. Returns value as-is on parse failure. */
|
|
70
62
|
export function extractDomain(value) {
|
|
71
63
|
try {
|
|
@@ -75,14 +67,6 @@ export function extractDomain(value) {
|
|
|
75
67
|
return value;
|
|
76
68
|
}
|
|
77
69
|
}
|
|
78
|
-
/** Normalizes a git URL (HTTP or SSH format). SSH URLs are returned as-is. */
|
|
79
|
-
export function normalizeGitUrl(value) {
|
|
80
|
-
// SSH format: git@host:path -- no further normalization needed
|
|
81
|
-
const sshMatch = value.match(/^(?:[\w.+-]+@)?([^:]+):/);
|
|
82
|
-
if (sshMatch && !value.includes('://'))
|
|
83
|
-
return value;
|
|
84
|
-
return normalizeUrl(value);
|
|
85
|
-
}
|
|
86
70
|
/**
|
|
87
71
|
* Extracts the domain from a URL value, dispatching to the correct
|
|
88
72
|
* extractor based on role. Use this instead of calling extractDomain
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-utils.js","sourceRoot":"","sources":["../../src/trusted-process/domain-utils.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"domain-utils.js","sourceRoot":"","sources":["../../src/trusted-process/domain-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared error-message prefixes used by the pipeline to tag error
|
|
3
|
+
* responses with a recognizable category. Consumers (logs, UI, user
|
|
4
|
+
* messages) can pattern-match on these to identify the error category
|
|
5
|
+
* without relying on internal decision fields.
|
|
6
|
+
*
|
|
7
|
+
* The coordinator itself classifies tool-call outcomes via the
|
|
8
|
+
* `_policyDecision.status` field stamped on every response, not by
|
|
9
|
+
* matching these prefixes.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ERROR_PREFIX_DENIED = "DENIED:";
|
|
12
|
+
export declare const ERROR_PREFIX_ESCALATION_REQUIRED = "ESCALATION REQUIRED:";
|
|
13
|
+
export declare const ERROR_PREFIX_ESCALATION_DENIED = "ESCALATION DENIED:";
|
|
14
|
+
export declare const ERROR_PREFIX_CIRCUIT_BREAKER = "CIRCUIT BREAKER:";
|
|
15
|
+
export declare const ERROR_PREFIX_UNKNOWN_ARGS = "Unknown argument(s):";
|
|
16
|
+
export declare const ERROR_PREFIX_MISSING_ANNOTATION = "Missing annotation for tool:";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared error-message prefixes used by the pipeline to tag error
|
|
3
|
+
* responses with a recognizable category. Consumers (logs, UI, user
|
|
4
|
+
* messages) can pattern-match on these to identify the error category
|
|
5
|
+
* without relying on internal decision fields.
|
|
6
|
+
*
|
|
7
|
+
* The coordinator itself classifies tool-call outcomes via the
|
|
8
|
+
* `_policyDecision.status` field stamped on every response, not by
|
|
9
|
+
* matching these prefixes.
|
|
10
|
+
*/
|
|
11
|
+
export const ERROR_PREFIX_DENIED = 'DENIED:';
|
|
12
|
+
export const ERROR_PREFIX_ESCALATION_REQUIRED = 'ESCALATION REQUIRED:';
|
|
13
|
+
export const ERROR_PREFIX_ESCALATION_DENIED = 'ESCALATION DENIED:';
|
|
14
|
+
export const ERROR_PREFIX_CIRCUIT_BREAKER = 'CIRCUIT BREAKER:';
|
|
15
|
+
export const ERROR_PREFIX_UNKNOWN_ARGS = 'Unknown argument(s):';
|
|
16
|
+
export const ERROR_PREFIX_MISSING_ANNOTATION = 'Missing annotation for tool:';
|
|
17
|
+
//# sourceMappingURL=error-prefixes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-prefixes.js","sourceRoot":"","sources":["../../src/trusted-process/error-prefixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAC7C,MAAM,CAAC,MAAM,gCAAgC,GAAG,sBAAsB,CAAC;AACvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,oBAAoB,CAAC;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAChE,MAAM,CAAC,MAAM,+BAA+B,GAAG,8BAA8B,CAAC"}
|