@provos/ironcurtain 0.9.1 → 0.11.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 +69 -10
- package/dist/auth/oauth-provider.js +1 -4
- package/dist/auth/oauth-provider.js.map +1 -1
- package/dist/cli.js +40 -2
- package/dist/cli.js.map +1 -1
- package/dist/config/config-command.js +174 -10
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/first-start.js +61 -0
- 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 +8 -2
- package/dist/config/model-provider.js +52 -9
- package/dist/config/model-provider.js.map +1 -1
- package/dist/config/paths.d.ts +181 -0
- package/dist/config/paths.js +326 -23
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +7 -1
- package/dist/config/user-config.d.ts +61 -4
- package/dist/config/user-config.js +108 -21
- 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/compile-task-policy.js +1 -0
- package/dist/cron/compile-task-policy.js.map +1 -1
- 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 +16 -2
- package/dist/daemon/daemon-command.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.d.ts +44 -1
- package/dist/daemon/ironcurtain-daemon.js +210 -8
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/docker/adapters/claude-code.d.ts +2 -1
- package/dist/docker/adapters/claude-code.js +320 -131
- package/dist/docker/adapters/claude-code.js.map +1 -1
- 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 +178 -4
- package/dist/docker/agent-adapter.js +14 -0
- package/dist/docker/agent-adapter.js.map +1 -1
- package/dist/docker/agent-registry.js +3 -2
- package/dist/docker/agent-registry.js.map +1 -1
- package/dist/docker/code-mode-proxy.d.ts +27 -0
- package/dist/docker/code-mode-proxy.js +3 -0
- package/dist/docker/code-mode-proxy.js.map +1 -1
- package/dist/docker/container-lifecycle.d.ts +15 -0
- package/dist/docker/container-lifecycle.js +32 -0
- package/dist/docker/container-lifecycle.js.map +1 -0
- package/dist/docker/docker-agent-session.d.ts +113 -62
- package/dist/docker/docker-agent-session.js +241 -300
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.d.ts +256 -21
- package/dist/docker/docker-infrastructure.js +585 -30
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/docker-manager.d.ts +36 -1
- package/dist/docker/docker-manager.js +168 -26
- package/dist/docker/docker-manager.js.map +1 -1
- 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 +90 -1
- package/dist/docker/mitm-proxy.js +720 -40
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/oauth-credentials.d.ts +46 -3
- package/dist/docker/oauth-credentials.js +56 -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/provider-config.d.ts +81 -2
- package/dist/docker/provider-config.js +222 -28
- package/dist/docker/provider-config.js.map +1 -1
- 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 +49 -1
- package/dist/docker/pty-session.js +212 -90
- 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/resource-limits.d.ts +125 -0
- package/dist/docker/resource-limits.js +200 -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/types.d.ts +61 -6
- package/dist/doctor/checks.d.ts +138 -0
- package/dist/doctor/checks.js +511 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/doctor-command.d.ts +29 -0
- package/dist/doctor/doctor-command.js +160 -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 +84 -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 +32 -9
- 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 +30 -34
- package/dist/mux/mux-app.js.map +1 -1
- package/dist/mux/mux-command.d.ts +10 -1
- package/dist/mux/mux-command.js +62 -35
- package/dist/mux/mux-command.js.map +1 -1
- package/dist/mux/mux-renderer.js +22 -17
- 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.d.ts +7 -0
- package/dist/mux/session-scanner.js +21 -2
- package/dist/mux/session-scanner.js.map +1 -1
- package/dist/mux/types.d.ts +0 -4
- package/dist/mux/types.js.map +1 -1
- package/dist/{pipeline → observability}/llm-logger.d.ts +9 -3
- package/dist/{pipeline → observability}/llm-logger.js +16 -4
- package/dist/observability/llm-logger.js.map +1 -0
- package/dist/observe/observe-command.d.ts +12 -0
- package/dist/observe/observe-command.js +298 -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/compile-persona-policy.js +1 -0
- package/dist/persona/compile-persona-policy.js.map +1 -1
- 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 +41 -6
- package/dist/persona/persona-command.js.map +1 -1
- 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/types.d.ts +16 -0
- package/dist/pipeline/annotate.d.ts +7 -1
- package/dist/pipeline/annotate.js +92 -2
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.js +2 -0
- 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/parallel-progress.d.ts +59 -0
- package/dist/pipeline/parallel-progress.js +263 -0
- package/dist/pipeline/parallel-progress.js.map +1 -0
- package/dist/pipeline/pipeline-runner.d.ts +49 -8
- package/dist/pipeline/pipeline-runner.js +419 -231
- package/dist/pipeline/pipeline-runner.js.map +1 -1
- package/dist/pipeline/pipeline-shared.d.ts +59 -1
- package/dist/pipeline/pipeline-shared.js +127 -12
- 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/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/pipeline/server-prefilter.d.ts +31 -0
- package/dist/pipeline/server-prefilter.js +115 -0
- package/dist/pipeline/server-prefilter.js.map +1 -0
- package/dist/pipeline/types.d.ts +5 -0
- package/dist/sandbox/index.d.ts +14 -0
- package/dist/sandbox/index.js +335 -116
- 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 +324 -130
- package/dist/session/index.js.map +1 -1
- package/dist/session/preflight.d.ts +50 -13
- package/dist/session/preflight.js +252 -80
- 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 +311 -5
- package/dist/session/types.js +57 -1
- package/dist/session/types.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.js +7 -1
- 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.js +2 -1
- package/dist/trusted-process/call-circuit-breaker.js.map +1 -1
- 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 +166 -657
- 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 +90 -45
- 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 +26 -0
- package/dist/trusted-process/sandbox-integration.js.map +1 -1
- package/dist/trusted-process/tool-call-coordinator.d.ts +269 -0
- package/dist/trusted-process/tool-call-coordinator.js +508 -0
- package/dist/trusted-process/tool-call-coordinator.js.map +1 -0
- package/dist/trusted-process/tool-call-pipeline.d.ts +205 -0
- package/dist/trusted-process/tool-call-pipeline.js +798 -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/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/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 +6 -0
- package/dist/web-ui/dispatch/persona-dispatch.js +116 -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 +201 -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 +31 -0
- package/dist/web-ui/dispatch/types.js +68 -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 +925 -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 +152 -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 +76 -0
- package/dist/web-ui/web-ui-server.js +461 -0
- package/dist/web-ui/web-ui-server.js.map +1 -0
- package/dist/web-ui/web-ui-types.d.ts +290 -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-BFO5z1js.js +76 -0
- package/dist/web-ui-static/assets/index-CCUwrkIL.css +1 -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-support.d.ts +92 -0
- package/dist/workflow/cli-support.js +423 -0
- package/dist/workflow/cli-support.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 +78 -0
- package/dist/workflow/discovery.js +203 -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/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 +66 -0
- package/dist/workflow/lint.js +410 -0
- package/dist/workflow/lint.js.map +1 -0
- package/dist/workflow/machine-builder.d.ts +90 -0
- package/dist/workflow/machine-builder.js +485 -0
- package/dist/workflow/machine-builder.js.map +1 -0
- package/dist/workflow/message-log.d.ts +85 -0
- package/dist/workflow/message-log.js +40 -0
- package/dist/workflow/message-log.js.map +1 -0
- package/dist/workflow/orchestrator.d.ts +450 -0
- package/dist/workflow/orchestrator.js +1941 -0
- package/dist/workflow/orchestrator.js.map +1 -0
- package/dist/workflow/prompt-builder.d.ts +39 -0
- package/dist/workflow/prompt-builder.js +242 -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 +259 -0
- package/dist/workflow/status-parser.js.map +1 -0
- package/dist/workflow/types.d.ts +498 -0
- package/dist/workflow/types.js +83 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflow/validate.d.ts +58 -0
- package/dist/workflow/validate.js +499 -0
- package/dist/workflow/validate.js.map +1 -0
- package/dist/workflow/workflow-command.d.ts +26 -0
- package/dist/workflow/workflow-command.js +648 -0
- package/dist/workflow/workflow-command.js.map +1 -0
- package/dist/workflow/workflow-discovery.d.ts +25 -0
- package/dist/workflow/workflow-discovery.js +100 -0
- package/dist/workflow/workflow-discovery.js.map +1 -0
- package/dist/workflow/workflow-manager.d.ts +122 -0
- package/dist/workflow/workflow-manager.js +308 -0
- package/dist/workflow/workflow-manager.js.map +1 -0
- package/dist/workflow/workflows/design-and-code/workflow.yaml +169 -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 +89 -0
- package/dist/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +201 -0
- package/dist/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +166 -0
- package/dist/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +185 -0
- package/dist/workflow/workflows/vuln-discovery/workflow.yaml +920 -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 +12 -1
- package/docker/Dockerfile.base.arm64 +17 -1
- package/docker/entrypoint-claude-code.sh +46 -0
- package/docker/entrypoint-goose.sh +25 -0
- package/package.json +22 -8
- 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/workflow.yaml +169 -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 +89 -0
- package/src/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +201 -0
- package/src/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +166 -0
- package/src/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +185 -0
- package/src/workflow/workflows/vuln-discovery/workflow.yaml +920 -0
- package/dist/pipeline/llm-logger.js.map +0 -1
- package/dist/session/errors.js.map +0 -1
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* across batches.
|
|
12
12
|
*/
|
|
13
13
|
import type { LanguageModel, SystemModelMessage } from 'ai';
|
|
14
|
-
import type { ConditionalRoles, DynamicListsFile, StoredToolAnnotation,
|
|
14
|
+
import type { ConditionalRoles, DynamicListsFile, StoredToolAnnotation, TestScenario } from './types.js';
|
|
15
15
|
export declare const SCENARIO_BATCH_SIZE = 25;
|
|
16
16
|
/**
|
|
17
17
|
* Formats a ## Dynamic List Values section for inclusion in prompts.
|
|
@@ -29,18 +29,14 @@ export declare function formatConditionalRoles(argName: string, spec: Conditiona
|
|
|
29
29
|
* Builds the stable system prompt portion for the scenario generator.
|
|
30
30
|
* Contains: role preamble, constitution, annotations, system config, and instructions.
|
|
31
31
|
* This is the cacheable part.
|
|
32
|
-
*
|
|
33
|
-
* @param storedAnnotations - Optional raw annotations with conditional role specs.
|
|
34
|
-
* When provided, the prompt includes discriminator argument names and valid values
|
|
35
|
-
* so the LLM generates scenarios with correct argument names for multi-mode tools.
|
|
36
32
|
*/
|
|
37
|
-
export declare function buildGeneratorSystemPrompt(constitutionText: string, annotations:
|
|
33
|
+
export declare function buildGeneratorSystemPrompt(constitutionText: string, annotations: StoredToolAnnotation[], sandboxDirectory: string, permittedDirectories?: string[], dynamicLists?: DynamicListsFile): string;
|
|
38
34
|
/**
|
|
39
35
|
* Generates test scenarios by batching annotations into groups of
|
|
40
36
|
* SCENARIO_BATCH_SIZE, running generateObjectWithRepair per batch with
|
|
41
37
|
* scoped system prompts and Zod schemas, then deduplicating results.
|
|
42
38
|
*/
|
|
43
|
-
export declare function generateScenarios(constitutionText: string, annotations:
|
|
39
|
+
export declare function generateScenarios(constitutionText: string, annotations: StoredToolAnnotation[], handwrittenScenarios: TestScenario[], sandboxDirectory: string, llm: LanguageModel, permittedDirectories?: string[], onProgress?: (message: string) => void, dynamicLists?: DynamicListsFile, wrapSystemPrompt?: (prompt: string) => string | SystemModelMessage): Promise<TestScenario[]>;
|
|
44
40
|
/**
|
|
45
41
|
* Generates replacement scenarios for structurally discarded ones.
|
|
46
42
|
* Uses a single-shot generateObjectWithRepair call (no batching needed
|
|
@@ -49,4 +45,4 @@ export declare function generateScenarios(constitutionText: string, annotations:
|
|
|
49
45
|
export declare function repairScenarios(discardedScenarios: {
|
|
50
46
|
scenario: TestScenario;
|
|
51
47
|
feedback: string;
|
|
52
|
-
}[], constitutionText: string, annotations:
|
|
48
|
+
}[], constitutionText: string, annotations: StoredToolAnnotation[], sandboxDirectory: string, llm: LanguageModel, permittedDirectories?: string[], dynamicLists?: DynamicListsFile, onProgress?: (message: string) => void): Promise<TestScenario[]>;
|
|
@@ -85,17 +85,15 @@ export function formatConditionalRoles(argName, spec) {
|
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
87
|
* Formats a tool annotation summary line for the scenario generator prompt.
|
|
88
|
-
*
|
|
89
|
-
*
|
|
88
|
+
* Conditional role specs are surfaced with their discriminator argument names
|
|
89
|
+
* and valid values; static role arrays render as flat lists.
|
|
90
90
|
*/
|
|
91
|
-
function formatAnnotationForPrompt(annotation
|
|
92
|
-
const
|
|
93
|
-
const argsDesc = Object.entries(args)
|
|
91
|
+
function formatAnnotationForPrompt(annotation) {
|
|
92
|
+
const argsDesc = Object.entries(annotation.args)
|
|
94
93
|
.map(([name, spec]) => {
|
|
95
94
|
if (isConditionalRoles(spec)) {
|
|
96
95
|
return formatConditionalRoles(name, spec);
|
|
97
96
|
}
|
|
98
|
-
// After isConditionalRoles check, spec is always ArgumentRole[]
|
|
99
97
|
return `${name}: [${spec.join(', ')}]`;
|
|
100
98
|
})
|
|
101
99
|
.join(', ');
|
|
@@ -105,25 +103,9 @@ function formatAnnotationForPrompt(annotation, storedAnnotation) {
|
|
|
105
103
|
* Builds the stable system prompt portion for the scenario generator.
|
|
106
104
|
* Contains: role preamble, constitution, annotations, system config, and instructions.
|
|
107
105
|
* This is the cacheable part.
|
|
108
|
-
*
|
|
109
|
-
* @param storedAnnotations - Optional raw annotations with conditional role specs.
|
|
110
|
-
* When provided, the prompt includes discriminator argument names and valid values
|
|
111
|
-
* so the LLM generates scenarios with correct argument names for multi-mode tools.
|
|
112
106
|
*/
|
|
113
|
-
export function buildGeneratorSystemPrompt(constitutionText, annotations, sandboxDirectory, permittedDirectories, dynamicLists
|
|
114
|
-
|
|
115
|
-
const storedByKey = new Map();
|
|
116
|
-
if (storedAnnotations) {
|
|
117
|
-
for (const sa of storedAnnotations) {
|
|
118
|
-
storedByKey.set(`${sa.serverName}/${sa.toolName}`, sa);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
const annotationsSummary = annotations
|
|
122
|
-
.map((a) => {
|
|
123
|
-
const stored = storedByKey.get(`${a.serverName}/${a.toolName}`);
|
|
124
|
-
return formatAnnotationForPrompt(a, stored);
|
|
125
|
-
})
|
|
126
|
-
.join('\n');
|
|
107
|
+
export function buildGeneratorSystemPrompt(constitutionText, annotations, sandboxDirectory, permittedDirectories, dynamicLists) {
|
|
108
|
+
const annotationsSummary = annotations.map(formatAnnotationForPrompt).join('\n');
|
|
127
109
|
return `You are generating test scenarios for a security policy engine. Each scenario is a concrete tool call with an expected policy decision.
|
|
128
110
|
|
|
129
111
|
## Constitution
|
|
@@ -134,7 +116,7 @@ ${constitutionText}
|
|
|
134
116
|
|
|
135
117
|
${annotationsSummary}
|
|
136
118
|
|
|
137
|
-
${
|
|
119
|
+
${annotations.length > 0 ? `## Valid Tool Arguments (from MCP input schemas)\n\n${formatToolArgNames(annotations)}\n\nCRITICAL: Only use argument names listed above for each tool. Using unlisted argument names will cause validation failure.\n` : ''}
|
|
138
120
|
## System Configuration
|
|
139
121
|
|
|
140
122
|
- Sandbox directory: ${sandboxDirectory}
|
|
@@ -222,18 +204,11 @@ Generate test scenarios following the instructions above.`;
|
|
|
222
204
|
* SCENARIO_BATCH_SIZE, running generateObjectWithRepair per batch with
|
|
223
205
|
* scoped system prompts and Zod schemas, then deduplicating results.
|
|
224
206
|
*/
|
|
225
|
-
export async function generateScenarios(constitutionText, annotations, handwrittenScenarios, sandboxDirectory, llm, permittedDirectories, onProgress, dynamicLists, wrapSystemPrompt
|
|
207
|
+
export async function generateScenarios(constitutionText, annotations, handwrittenScenarios, sandboxDirectory, llm, permittedDirectories, onProgress, dynamicLists, wrapSystemPrompt) {
|
|
226
208
|
if (annotations.length === 0)
|
|
227
209
|
return [...handwrittenScenarios];
|
|
228
210
|
const batches = chunk(annotations, SCENARIO_BATCH_SIZE);
|
|
229
211
|
const allGenerated = [];
|
|
230
|
-
// Build stored annotation lookup for batching
|
|
231
|
-
const storedByKey = new Map();
|
|
232
|
-
if (storedAnnotations) {
|
|
233
|
-
for (const sa of storedAnnotations) {
|
|
234
|
-
storedByKey.set(`${sa.serverName}/${sa.toolName}`, sa);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
212
|
for (let i = 0; i < batches.length; i++) {
|
|
238
213
|
const batch = batches[i];
|
|
239
214
|
if (batches.length > 1) {
|
|
@@ -242,17 +217,11 @@ export async function generateScenarios(constitutionText, annotations, handwritt
|
|
|
242
217
|
// Scoped schema: only this batch's server/tool names
|
|
243
218
|
const serverNames = [...new Set(batch.map((a) => a.serverName))];
|
|
244
219
|
const toolNames = [...new Set(batch.map((a) => a.toolName))];
|
|
245
|
-
// Filter stored annotations to this batch
|
|
246
|
-
const batchStored = storedAnnotations
|
|
247
|
-
? batch
|
|
248
|
-
.map((a) => storedByKey.get(`${a.serverName}/${a.toolName}`))
|
|
249
|
-
.filter((sa) => sa !== undefined)
|
|
250
|
-
: undefined;
|
|
251
220
|
// Build Zod schema with superRefine that validates argument names at parse time
|
|
252
|
-
const argsSuperRefine =
|
|
221
|
+
const argsSuperRefine = buildScenarioArgsSuperRefine(buildToolArgNamesMap(batch));
|
|
253
222
|
const schema = buildGeneratorResponseSchema(serverNames, toolNames, argsSuperRefine);
|
|
254
223
|
// Per-batch system prompt with only this batch's annotations
|
|
255
|
-
const batchPromptText = buildGeneratorSystemPrompt(constitutionText, batch, sandboxDirectory, permittedDirectories, dynamicLists
|
|
224
|
+
const batchPromptText = buildGeneratorSystemPrompt(constitutionText, batch, sandboxDirectory, permittedDirectories, dynamicLists);
|
|
256
225
|
// Apply cache strategy wrapping if provided
|
|
257
226
|
const batchSystem = wrapSystemPrompt ? wrapSystemPrompt(batchPromptText) : batchPromptText;
|
|
258
227
|
// Filter handwritten scenarios to those relevant to this batch (composite key avoids cross-server collisions)
|
|
@@ -289,12 +258,10 @@ export async function generateScenarios(constitutionText, annotations, handwritt
|
|
|
289
258
|
* Uses a single-shot generateObjectWithRepair call (no batching needed
|
|
290
259
|
* since the discarded set is typically small).
|
|
291
260
|
*/
|
|
292
|
-
export async function repairScenarios(discardedScenarios, constitutionText, annotations, sandboxDirectory, llm, permittedDirectories, dynamicLists, onProgress
|
|
261
|
+
export async function repairScenarios(discardedScenarios, constitutionText, annotations, sandboxDirectory, llm, permittedDirectories, dynamicLists, onProgress) {
|
|
293
262
|
const serverNames = [...new Set(annotations.map((a) => a.serverName))];
|
|
294
263
|
const toolNames = [...new Set(annotations.map((a) => a.toolName))];
|
|
295
|
-
const argsSuperRefine =
|
|
296
|
-
? buildScenarioArgsSuperRefine(buildToolArgNamesMap(storedAnnotations))
|
|
297
|
-
: undefined;
|
|
264
|
+
const argsSuperRefine = buildScenarioArgsSuperRefine(buildToolArgNamesMap(annotations));
|
|
298
265
|
const schema = buildGeneratorResponseSchema(serverNames, toolNames, argsSuperRefine);
|
|
299
266
|
const discardedList = discardedScenarios
|
|
300
267
|
.map((b, i) => `${i + 1}. "${b.scenario.description}" (${b.scenario.request.serverName}/${b.scenario.request.toolName}): ${b.feedback}`)
|
|
@@ -305,7 +272,7 @@ Generate replacement scenarios that cover similar tools and decision types but w
|
|
|
305
272
|
${discardedList}
|
|
306
273
|
|
|
307
274
|
Generate one replacement scenario per discarded scenario.`;
|
|
308
|
-
const system = buildGeneratorSystemPrompt(constitutionText, annotations, sandboxDirectory, permittedDirectories, dynamicLists
|
|
275
|
+
const system = buildGeneratorSystemPrompt(constitutionText, annotations, sandboxDirectory, permittedDirectories, dynamicLists);
|
|
309
276
|
const { output } = await generateObjectWithRepair({
|
|
310
277
|
model: llm,
|
|
311
278
|
schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario-generator.js","sourceRoot":"","sources":["../../src/pipeline/scenario-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"scenario-generator.js","sourceRoot":"","sources":["../../src/pipeline/scenario-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Haiku-based server pre-filter for policy compilation.
|
|
3
|
+
*
|
|
4
|
+
* Uses a cheap classification model (Haiku) to determine whether each
|
|
5
|
+
* MCP server can be skipped before invoking the expensive compilation
|
|
6
|
+
* model. If the input text (constitution, task description, or persona
|
|
7
|
+
* definition) has no specific guidance for a server, that server is
|
|
8
|
+
* skipped and default-deny handles all its tools.
|
|
9
|
+
*/
|
|
10
|
+
import type { LanguageModel } from 'ai';
|
|
11
|
+
import type { ConstitutionKind } from './pipeline-runner.js';
|
|
12
|
+
import type { ToolAnnotation } from './types.js';
|
|
13
|
+
/** Result of the pre-filter for a single server. */
|
|
14
|
+
export interface PrefilterDecision {
|
|
15
|
+
readonly serverName: string;
|
|
16
|
+
readonly skip: boolean;
|
|
17
|
+
readonly reason: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Determines whether a server can be skipped during policy compilation.
|
|
21
|
+
*
|
|
22
|
+
* Errors are caught internally and result in skip: false (fail-open).
|
|
23
|
+
*/
|
|
24
|
+
export declare function checkServerRelevance(text: string, serverName: string, tools: ReadonlyArray<ToolAnnotation>, model: LanguageModel, kind: ConstitutionKind): Promise<PrefilterDecision>;
|
|
25
|
+
/**
|
|
26
|
+
* Runs the pre-filter for all servers concurrently.
|
|
27
|
+
*
|
|
28
|
+
* Short-circuits when text is empty/whitespace (returns skip: true
|
|
29
|
+
* for all servers without making any LLM calls).
|
|
30
|
+
*/
|
|
31
|
+
export declare function prefilterServers(text: string, servers: Array<[string, ReadonlyArray<ToolAnnotation>]>, model: LanguageModel, kind: ConstitutionKind): Promise<PrefilterDecision[]>;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Haiku-based server pre-filter for policy compilation.
|
|
3
|
+
*
|
|
4
|
+
* Uses a cheap classification model (Haiku) to determine whether each
|
|
5
|
+
* MCP server can be skipped before invoking the expensive compilation
|
|
6
|
+
* model. If the input text (constitution, task description, or persona
|
|
7
|
+
* definition) has no specific guidance for a server, that server is
|
|
8
|
+
* skipped and default-deny handles all its tools.
|
|
9
|
+
*/
|
|
10
|
+
import pLimit from 'p-limit';
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import { generateObjectWithRepair } from './generate-with-repair.js';
|
|
13
|
+
/** Cap concurrent pre-filter LLM calls to avoid rate-limit bursts. */
|
|
14
|
+
const PREFILTER_CONCURRENCY = 5;
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Schema
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
const serverRelevanceSchema = z.object({
|
|
19
|
+
skip: z
|
|
20
|
+
.boolean()
|
|
21
|
+
.describe("true if the input text contains no specific guidance that would require or allow any of this server's tools. When in doubt, set to false."),
|
|
22
|
+
reason: z.string().describe('Brief explanation of why the server is or is not relevant to the input text'),
|
|
23
|
+
});
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Prompt
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
function buildPrefilterPrompt(serverName, tools, kind) {
|
|
28
|
+
const toolList = tools.map((t) => `- ${t.toolName}: ${t.comment}`).join('\n');
|
|
29
|
+
const taskFraming = kind === 'constitution'
|
|
30
|
+
? `Based ONLY on the user guidance below, determine whether ANY of this server's tools would be specifically allowed or granted special permissions.
|
|
31
|
+
|
|
32
|
+
The user guidance is relevant to this server if it:
|
|
33
|
+
- Mentions the server by name
|
|
34
|
+
- Mentions capabilities that map to this server's tools (e.g., "read files" maps to a filesystem server, "search GitHub issues" maps to a GitHub server)
|
|
35
|
+
- Grants permissions for operations this server provides
|
|
36
|
+
|
|
37
|
+
The user guidance is NOT relevant if it:
|
|
38
|
+
- Contains no mention of this server's domain of functionality
|
|
39
|
+
- Only contains general principles that don't translate to specific allow rules for this server's tools
|
|
40
|
+
|
|
41
|
+
If the user guidance contains no specific permissions for this server, the server can be safely skipped — a default-deny policy will handle all its tools.`
|
|
42
|
+
: `Based ONLY on the task description below, determine whether accomplishing this task would require ANY of this server's tools.
|
|
43
|
+
|
|
44
|
+
The task is relevant to this server if it:
|
|
45
|
+
- Describes work that directly requires this server's capabilities (e.g., "analyze CSV files" requires filesystem tools, "check open PRs" requires GitHub tools)
|
|
46
|
+
- References data, resources, or operations that this server provides access to
|
|
47
|
+
|
|
48
|
+
The task is NOT relevant to this server if it:
|
|
49
|
+
- Describes work entirely outside this server's domain of functionality
|
|
50
|
+
- Makes no reference to resources or operations this server provides
|
|
51
|
+
|
|
52
|
+
If the task does not require any of this server's tools, the server can be safely skipped — a default-deny policy will handle all its tools.`;
|
|
53
|
+
return `You are evaluating whether an input text is relevant to a specific MCP server's tools.
|
|
54
|
+
|
|
55
|
+
## Server: "${serverName}"
|
|
56
|
+
|
|
57
|
+
### Available tools:
|
|
58
|
+
${toolList}
|
|
59
|
+
|
|
60
|
+
## Task
|
|
61
|
+
|
|
62
|
+
${taskFraming}
|
|
63
|
+
|
|
64
|
+
**Important: When in doubt, set skip to false.** It is better to compile rules unnecessarily than to skip a server that needs them.
|
|
65
|
+
|
|
66
|
+
Respond with a JSON object: { "skip": boolean, "reason": string }`;
|
|
67
|
+
}
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Core functions
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
/**
|
|
72
|
+
* Determines whether a server can be skipped during policy compilation.
|
|
73
|
+
*
|
|
74
|
+
* Errors are caught internally and result in skip: false (fail-open).
|
|
75
|
+
*/
|
|
76
|
+
export async function checkServerRelevance(text, serverName, tools, model, kind) {
|
|
77
|
+
try {
|
|
78
|
+
const { output } = await generateObjectWithRepair({
|
|
79
|
+
model,
|
|
80
|
+
schema: serverRelevanceSchema,
|
|
81
|
+
system: buildPrefilterPrompt(serverName, tools, kind),
|
|
82
|
+
prompt: text || '(no guidance provided)',
|
|
83
|
+
maxRepairAttempts: 1,
|
|
84
|
+
maxOutputTokens: 256,
|
|
85
|
+
});
|
|
86
|
+
return { serverName, skip: output.skip, reason: output.reason };
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
90
|
+
return {
|
|
91
|
+
serverName,
|
|
92
|
+
skip: false,
|
|
93
|
+
reason: `Pre-filter error (proceeding with compilation): ${message}`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Runs the pre-filter for all servers concurrently.
|
|
99
|
+
*
|
|
100
|
+
* Short-circuits when text is empty/whitespace (returns skip: true
|
|
101
|
+
* for all servers without making any LLM calls).
|
|
102
|
+
*/
|
|
103
|
+
export async function prefilterServers(text, servers, model, kind) {
|
|
104
|
+
const trimmed = text.trim();
|
|
105
|
+
if (trimmed === '') {
|
|
106
|
+
return servers.map(([serverName]) => ({
|
|
107
|
+
serverName,
|
|
108
|
+
skip: true,
|
|
109
|
+
reason: 'No input text provided — all servers skipped by default',
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
const limit = pLimit(PREFILTER_CONCURRENCY);
|
|
113
|
+
return Promise.all(servers.map(([serverName, tools]) => limit(() => checkServerRelevance(trimmed, serverName, tools, model, kind))));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=server-prefilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-prefilter.js","sourceRoot":"","sources":["../../src/pipeline/server-prefilter.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline/types.d.ts
CHANGED
|
@@ -186,6 +186,11 @@ export interface CompiledPolicyFile {
|
|
|
186
186
|
rules: CompiledRule[];
|
|
187
187
|
/** List definitions emitted by the compiler. Empty if no dynamic lists needed. */
|
|
188
188
|
listDefinitions?: ListDefinition[];
|
|
189
|
+
/** Servers skipped by the pre-filter (all calls denied by default). */
|
|
190
|
+
skippedServers?: Array<{
|
|
191
|
+
readonly serverName: string;
|
|
192
|
+
readonly reason: string;
|
|
193
|
+
}>;
|
|
189
194
|
}
|
|
190
195
|
/**
|
|
191
196
|
* Per-server compiled policy artifact.
|
package/dist/sandbox/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import '@utcp/mcp';
|
|
10
10
|
import type { IronCurtainConfig } from '../config/types.js';
|
|
11
|
+
import { ToolCallCoordinator } from '../trusted-process/tool-call-coordinator.js';
|
|
11
12
|
/**
|
|
12
13
|
* Mirrors UTCP Code Mode's sanitizeIdentifier() behavior — the property name
|
|
13
14
|
* that UTCP actually creates on `global.tools` in the V8 isolate.
|
|
@@ -68,6 +69,19 @@ export declare class Sandbox {
|
|
|
68
69
|
private toolCatalog;
|
|
69
70
|
private preamble;
|
|
70
71
|
private helpData;
|
|
72
|
+
private coordinator;
|
|
73
|
+
/**
|
|
74
|
+
* Per-sandbox UTCP manual name (e.g., `tools_abc123_...`). Unique
|
|
75
|
+
* per instance so concurrent sandboxes don't overwrite each other's
|
|
76
|
+
* coordinator binding. The same name is used as the V8 global UTCP
|
|
77
|
+
* creates in the isolate; snippets reference it directly.
|
|
78
|
+
*/
|
|
79
|
+
private readonly manualName;
|
|
80
|
+
/**
|
|
81
|
+
* Exposes the policy coordinator once the sandbox is initialized.
|
|
82
|
+
* Returns `null` before `initialize()` completes.
|
|
83
|
+
*/
|
|
84
|
+
getCoordinator(): ToolCallCoordinator | null;
|
|
71
85
|
initialize(config: IronCurtainConfig): Promise<void>;
|
|
72
86
|
/**
|
|
73
87
|
* Builds the tool catalog, the __getToolInterface patch, namespace alias
|