@probelabs/visor 0.1.127 → 0.1.129
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 +31 -1
- package/defaults/.visor.yaml +420 -0
- package/dist/ai-review-service.d.ts +1 -0
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/daemon.js +19 -0
- package/dist/defaults/.visor.yaml +420 -0
- package/dist/docs/commands.md +1 -1
- package/dist/docs/debugging.md +133 -0
- package/dist/docs/dev-playbook.md +10 -0
- package/dist/docs/index.md +1 -0
- package/dist/docs/scheduler.md +503 -0
- package/dist/docs/slack-integration.md +21 -0
- package/dist/docs/timeouts.md +1 -1
- package/dist/docs/workflow-creation-guide.md +39 -0
- package/dist/examples/README.md +30 -0
- package/dist/examples/calculator-config.yaml +4 -4
- package/dist/examples/sandbox-basic.yaml +18 -0
- package/dist/examples/sandbox-cache.yaml +32 -0
- package/dist/examples/sandbox-dockerfile-inline.yaml +22 -0
- package/dist/examples/sandbox-env-passthrough.yaml +26 -0
- package/dist/examples/sandbox-multi-env.yaml +27 -0
- package/dist/examples/sandbox-read-only.yaml +33 -0
- package/dist/examples/scheduler-example.yaml +118 -0
- package/dist/frontends/host.d.ts.map +1 -1
- package/dist/frontends/slack-frontend.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +230 -9
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/index.js +13676 -1604
- package/dist/mcp-server.d.ts +8 -8
- package/dist/{traces/run-2026-02-01T09-59-08-165Z.ndjson → output/traces/run-2026-02-08T18-16-04-160Z.ndjson} +84 -84
- package/dist/{traces/run-2026-02-01T09-59-52-595Z.ndjson → output/traces/run-2026-02-08T18-16-51-253Z.ndjson} +1029 -1029
- package/dist/providers/ai-check-provider.d.ts +16 -0
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts +5 -0
- package/dist/providers/check-provider.interface.d.ts.map +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/log-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-check-provider.d.ts +3 -0
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts +22 -2
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
- package/dist/providers/workflow-check-provider.d.ts.map +1 -1
- package/dist/providers/workflow-tool-executor.d.ts +2 -0
- package/dist/providers/workflow-tool-executor.d.ts.map +1 -1
- package/dist/sandbox/cache-volume-manager.d.ts +48 -0
- package/dist/sandbox/cache-volume-manager.d.ts.map +1 -0
- package/dist/sandbox/check-runner.d.ts +25 -0
- package/dist/sandbox/check-runner.d.ts.map +1 -0
- package/dist/sandbox/docker-compose-sandbox.d.ts +25 -0
- package/dist/sandbox/docker-compose-sandbox.d.ts.map +1 -0
- package/dist/sandbox/docker-image-sandbox.d.ts +32 -0
- package/dist/sandbox/docker-image-sandbox.d.ts.map +1 -0
- package/dist/sandbox/env-filter.d.ts +19 -0
- package/dist/sandbox/env-filter.d.ts.map +1 -0
- package/dist/sandbox/index.d.ts +9 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/sandbox-manager.d.ts +39 -0
- package/dist/sandbox/sandbox-manager.d.ts.map +1 -0
- package/dist/sandbox/sandbox-telemetry.d.ts +9 -0
- package/dist/sandbox/sandbox-telemetry.d.ts.map +1 -0
- package/dist/sandbox/trace-ingester.d.ts +19 -0
- package/dist/sandbox/trace-ingester.d.ts.map +1 -0
- package/dist/sandbox/types.d.ts +149 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/scheduler/cli-handler.d.ts +6 -0
- package/dist/scheduler/cli-handler.d.ts.map +1 -0
- package/dist/scheduler/index.d.ts +14 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/schedule-parser.d.ts +34 -0
- package/dist/scheduler/schedule-parser.d.ts.map +1 -0
- package/dist/scheduler/schedule-store.d.ts +182 -0
- package/dist/scheduler/schedule-store.d.ts.map +1 -0
- package/dist/scheduler/schedule-tool.d.ts +137 -0
- package/dist/scheduler/schedule-tool.d.ts.map +1 -0
- package/dist/scheduler/scheduler.d.ts +195 -0
- package/dist/scheduler/scheduler.d.ts.map +1 -0
- package/dist/sdk/check-provider-registry-ACRGIYOB.mjs +28 -0
- package/dist/sdk/check-provider-registry-VYHKFHK2.mjs +28 -0
- package/dist/sdk/{chunk-CNX7V5JK.mjs → chunk-25IC7KXZ.mjs} +2 -2
- package/dist/sdk/{chunk-IHZOSIF4.mjs → chunk-2KB35MB7.mjs} +3 -3
- package/dist/sdk/{chunk-HQL734ZI.mjs → chunk-6W75IMDC.mjs} +3 -3
- package/dist/sdk/{chunk-XWJPT5KQ.mjs → chunk-7YSOINAQ.mjs} +392 -18
- package/dist/sdk/chunk-7YSOINAQ.mjs.map +1 -0
- package/dist/sdk/{chunk-3OMWVM6J.mjs → chunk-B7BVQM5K.mjs} +2 -2
- package/dist/sdk/chunk-BDGUM6BA.mjs +38825 -0
- package/dist/sdk/chunk-BDGUM6BA.mjs.map +1 -0
- package/dist/sdk/{chunk-VW2GBXQT.mjs → chunk-D5KI4YQ4.mjs} +3 -3
- package/dist/sdk/chunk-DGZPPGJJ.mjs +38825 -0
- package/dist/sdk/chunk-DGZPPGJJ.mjs.map +1 -0
- package/dist/sdk/chunk-H5BOW5CR.mjs +91 -0
- package/dist/sdk/chunk-H5BOW5CR.mjs.map +1 -0
- package/dist/sdk/{chunk-YSN4G6CI.mjs → chunk-HEX3RL32.mjs} +81 -3
- package/dist/sdk/{chunk-YSN4G6CI.mjs.map → chunk-HEX3RL32.mjs.map} +1 -1
- package/dist/sdk/{chunk-ZYAUYXSW.mjs → chunk-J5RGJQ53.mjs} +14 -3
- package/dist/sdk/{chunk-ZYAUYXSW.mjs.map → chunk-J5RGJQ53.mjs.map} +1 -1
- package/dist/sdk/{chunk-WMJKH4XE.mjs → chunk-J7LXIPZS.mjs} +16 -1
- package/dist/sdk/{chunk-EXFGO4FX.mjs → chunk-KFKHU6CM.mjs} +2 -2
- package/dist/sdk/{chunk-MPS4HVQI.mjs → chunk-N7HO6KKC.mjs} +8 -8
- package/dist/sdk/{chunk-O5EZDNYL.mjs → chunk-NCWIZVOT.mjs} +2 -2
- package/dist/sdk/{chunk-3NMLT3YS.mjs → chunk-PO7X5XI7.mjs} +3 -3
- package/dist/sdk/{chunk-BHOKBQPB.mjs → chunk-R5Z7YWPB.mjs} +5 -5
- package/dist/sdk/{chunk-EORMDOZU.mjs → chunk-SGS2VMEL.mjs} +7 -7
- package/dist/sdk/{chunk-BOVFH3LI.mjs → chunk-VF6XIUE4.mjs} +21 -10
- package/dist/sdk/chunk-VF6XIUE4.mjs.map +1 -0
- package/dist/sdk/{chunk-J2QWVDXK.mjs → chunk-XDLQ3UNF.mjs} +3 -3
- package/dist/sdk/{chunk-S2RUE2RG.mjs → chunk-XR7XXGL7.mjs} +3 -3
- package/dist/sdk/{chunk-NAW3DB3I.mjs → chunk-XXAEN5KU.mjs} +3 -3
- package/dist/sdk/command-executor-DVVXERLR.mjs +14 -0
- package/dist/sdk/config-7VTT64SQ.mjs +16 -0
- package/dist/sdk/config-merger-RKCZJQ44.mjs +10 -0
- package/dist/sdk/event-bus-5K3Y2FCS.mjs +43 -0
- package/dist/sdk/{event-bus-5BEVPQ6T.mjs.map → event-bus-5K3Y2FCS.mjs.map} +1 -1
- package/dist/sdk/failure-condition-evaluator-4WMDF4Q3.mjs +17 -0
- package/dist/sdk/git-repository-analyzer-QFMW6WIS.mjs +471 -0
- package/dist/sdk/git-repository-analyzer-QFMW6WIS.mjs.map +1 -0
- package/dist/sdk/{github-frontend-5PCKKHVC.mjs → github-frontend-3N2NLO66.mjs} +520 -588
- package/dist/sdk/github-frontend-3N2NLO66.mjs.map +1 -0
- package/dist/sdk/host-ONVMEHAA.mjs +63 -0
- package/dist/sdk/host-ONVMEHAA.mjs.map +1 -0
- package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs → liquid-extensions-5IZLTFSZ.mjs} +8 -8
- package/dist/sdk/memory-store-3N4AZCYB.mjs +12 -0
- package/dist/sdk/{metrics-7PP3EJUH.mjs → metrics-GXQ2EDXA.mjs} +4 -4
- package/dist/sdk/ndjson-sink-FD2PSXGD.mjs +52 -0
- package/dist/sdk/{ndjson-sink-B4V4NTAQ.mjs.map → ndjson-sink-FD2PSXGD.mjs.map} +1 -1
- package/dist/sdk/{prompt-state-EZYOUG75.mjs → prompt-state-YHGXB2OA.mjs} +5 -5
- package/dist/sdk/{renderer-schema-CKFB5NDB.mjs → renderer-schema-CMXOLNIG.mjs} +4 -4
- package/dist/sdk/routing-S3Y7T2X3.mjs +24 -0
- package/dist/sdk/sdk.d.mts +212 -4
- package/dist/sdk/sdk.d.ts +212 -4
- package/dist/sdk/sdk.js +26927 -6264
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +23 -1278
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/session-registry-6PV6SGEJ.mjs +10 -0
- package/dist/sdk/slack-frontend-R3M2CACB.mjs +899 -0
- package/dist/sdk/slack-frontend-R3M2CACB.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-VP6QYVBX.mjs → trace-helpers-YHNPC7MR.mjs} +4 -4
- package/dist/sdk/tracer-init-XPRWKMZT.mjs +10 -0
- package/dist/sdk/tui-frontend-S546M7A7.mjs +281 -0
- package/dist/sdk/tui-frontend-S546M7A7.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-4F3432ZP.mjs +28 -0
- package/dist/sdk/workflow-check-provider-A44PBPG2.mjs +28 -0
- package/dist/sdk/workflow-check-provider-A44PBPG2.mjs.map +1 -0
- package/dist/sdk/workflow-registry-ZAYYXLEP.mjs +12 -0
- package/dist/sdk/workflow-registry-ZAYYXLEP.mjs.map +1 -0
- package/dist/slack/client.d.ts +28 -0
- package/dist/slack/client.d.ts.map +1 -1
- package/dist/slack/schedule-tool-handler.d.ts +46 -0
- package/dist/slack/schedule-tool-handler.d.ts.map +1 -0
- package/dist/slack/slack-output-adapter.d.ts +44 -0
- package/dist/slack/slack-output-adapter.d.ts.map +1 -0
- package/dist/slack/socket-runner.d.ts +22 -0
- package/dist/slack/socket-runner.d.ts.map +1 -1
- package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
- package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -1
- package/dist/state-machine/dispatch/sandbox-routing.d.ts +21 -0
- package/dist/state-machine/dispatch/sandbox-routing.d.ts.map +1 -0
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
- package/dist/state-machine-execution-engine.d.ts.map +1 -1
- package/dist/test-runner/index.d.ts +5 -0
- package/dist/test-runner/index.d.ts.map +1 -1
- package/dist/{output/traces/run-2026-02-01T09-59-08-165Z.ndjson → traces/run-2026-02-08T18-16-04-160Z.ndjson} +84 -84
- package/dist/{output/traces/run-2026-02-01T09-59-52-595Z.ndjson → traces/run-2026-02-08T18-16-51-253Z.ndjson} +1029 -1029
- package/dist/tui/chat-runner.d.ts +39 -0
- package/dist/tui/chat-runner.d.ts.map +1 -0
- package/dist/tui/chat-state.d.ts +56 -0
- package/dist/tui/chat-state.d.ts.map +1 -0
- package/dist/tui/chat-tui.d.ts +69 -0
- package/dist/tui/chat-tui.d.ts.map +1 -0
- package/dist/tui/components/chat-box.d.ts +33 -0
- package/dist/tui/components/chat-box.d.ts.map +1 -0
- package/dist/tui/components/input-bar.d.ts +50 -0
- package/dist/tui/components/input-bar.d.ts.map +1 -0
- package/dist/tui/components/status-bar.d.ts +31 -0
- package/dist/tui/components/status-bar.d.ts.map +1 -0
- package/dist/tui/components/trace-viewer.d.ts +73 -0
- package/dist/tui/components/trace-viewer.d.ts.map +1 -0
- package/dist/tui/index.d.ts +14 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/tui-frontend.d.ts +29 -0
- package/dist/tui/tui-frontend.d.ts.map +1 -0
- package/dist/types/bot.d.ts +35 -0
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/config.d.ts +152 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +3 -0
- package/dist/types/engine.d.ts.map +1 -1
- package/dist/utils/sandbox.d.ts.map +1 -1
- package/dist/utils/workspace-manager.d.ts +22 -2
- package/dist/utils/workspace-manager.d.ts.map +1 -1
- package/dist/utils/worktree-manager.d.ts +2 -1
- package/dist/utils/worktree-manager.d.ts.map +1 -1
- package/package.json +4 -2
- package/dist/docs/NPM_USAGE.md +0 -281
- package/dist/generated/config-schema.json +0 -2161
- package/dist/sdk/check-provider-registry-CVUONJ5A.mjs +0 -28
- package/dist/sdk/chunk-BOVFH3LI.mjs.map +0 -1
- package/dist/sdk/chunk-TS6BUNAI.mjs +0 -17722
- package/dist/sdk/chunk-TS6BUNAI.mjs.map +0 -1
- package/dist/sdk/chunk-XWJPT5KQ.mjs.map +0 -1
- package/dist/sdk/command-executor-Q7MHJKZJ.mjs +0 -14
- package/dist/sdk/config-DXX64GD3.mjs +0 -16
- package/dist/sdk/config-merger-PX3WIT57.mjs +0 -10
- package/dist/sdk/event-bus-5BEVPQ6T.mjs +0 -35
- package/dist/sdk/failure-condition-evaluator-G4HMJPXF.mjs +0 -17
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +0 -458
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +0 -1
- package/dist/sdk/github-frontend-5PCKKHVC.mjs.map +0 -1
- package/dist/sdk/host-H3AWNZ2F.mjs +0 -52
- package/dist/sdk/host-H3AWNZ2F.mjs.map +0 -1
- package/dist/sdk/memory-store-RW5N2NGJ.mjs +0 -12
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +0 -44
- package/dist/sdk/routing-QHTGDIXF.mjs +0 -24
- package/dist/sdk/session-registry-4E6YRQ77.mjs +0 -10
- package/dist/sdk/slack-frontend-JUT3TYVC.mjs +0 -821
- package/dist/sdk/slack-frontend-JUT3TYVC.mjs.map +0 -1
- package/dist/sdk/tracer-init-GSLPPLCD.mjs +0 -10
- package/dist/sdk/workflow-check-provider-3IWBAZP7.mjs +0 -28
- package/dist/sdk/workflow-registry-KFWSDSLM.mjs +0 -12
- package/dist/tui.d.ts +0 -51
- package/dist/tui.d.ts.map +0 -1
- /package/dist/sdk/{check-provider-registry-CVUONJ5A.mjs.map → check-provider-registry-ACRGIYOB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-WMJKH4XE.mjs.map → check-provider-registry-VYHKFHK2.mjs.map} +0 -0
- /package/dist/sdk/{chunk-CNX7V5JK.mjs.map → chunk-25IC7KXZ.mjs.map} +0 -0
- /package/dist/sdk/{chunk-IHZOSIF4.mjs.map → chunk-2KB35MB7.mjs.map} +0 -0
- /package/dist/sdk/{chunk-HQL734ZI.mjs.map → chunk-6W75IMDC.mjs.map} +0 -0
- /package/dist/sdk/{chunk-3OMWVM6J.mjs.map → chunk-B7BVQM5K.mjs.map} +0 -0
- /package/dist/sdk/{chunk-VW2GBXQT.mjs.map → chunk-D5KI4YQ4.mjs.map} +0 -0
- /package/dist/sdk/{command-executor-Q7MHJKZJ.mjs.map → chunk-J7LXIPZS.mjs.map} +0 -0
- /package/dist/sdk/{chunk-EXFGO4FX.mjs.map → chunk-KFKHU6CM.mjs.map} +0 -0
- /package/dist/sdk/{chunk-MPS4HVQI.mjs.map → chunk-N7HO6KKC.mjs.map} +0 -0
- /package/dist/sdk/{chunk-O5EZDNYL.mjs.map → chunk-NCWIZVOT.mjs.map} +0 -0
- /package/dist/sdk/{chunk-3NMLT3YS.mjs.map → chunk-PO7X5XI7.mjs.map} +0 -0
- /package/dist/sdk/{chunk-BHOKBQPB.mjs.map → chunk-R5Z7YWPB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-EORMDOZU.mjs.map → chunk-SGS2VMEL.mjs.map} +0 -0
- /package/dist/sdk/{chunk-J2QWVDXK.mjs.map → chunk-XDLQ3UNF.mjs.map} +0 -0
- /package/dist/sdk/{chunk-S2RUE2RG.mjs.map → chunk-XR7XXGL7.mjs.map} +0 -0
- /package/dist/sdk/{chunk-NAW3DB3I.mjs.map → chunk-XXAEN5KU.mjs.map} +0 -0
- /package/dist/sdk/{config-DXX64GD3.mjs.map → command-executor-DVVXERLR.mjs.map} +0 -0
- /package/dist/sdk/{config-merger-PX3WIT57.mjs.map → config-7VTT64SQ.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-G4HMJPXF.mjs.map → config-merger-RKCZJQ44.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs.map → failure-condition-evaluator-4WMDF4Q3.mjs.map} +0 -0
- /package/dist/sdk/{memory-store-RW5N2NGJ.mjs.map → liquid-extensions-5IZLTFSZ.mjs.map} +0 -0
- /package/dist/sdk/{metrics-7PP3EJUH.mjs.map → memory-store-3N4AZCYB.mjs.map} +0 -0
- /package/dist/sdk/{prompt-state-EZYOUG75.mjs.map → metrics-GXQ2EDXA.mjs.map} +0 -0
- /package/dist/sdk/{routing-QHTGDIXF.mjs.map → prompt-state-YHGXB2OA.mjs.map} +0 -0
- /package/dist/sdk/{renderer-schema-CKFB5NDB.mjs.map → renderer-schema-CMXOLNIG.mjs.map} +0 -0
- /package/dist/sdk/{session-registry-4E6YRQ77.mjs.map → routing-S3Y7T2X3.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-VP6QYVBX.mjs.map → session-registry-6PV6SGEJ.mjs.map} +0 -0
- /package/dist/sdk/{tracer-init-GSLPPLCD.mjs.map → trace-helpers-YHNPC7MR.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-3IWBAZP7.mjs.map → tracer-init-XPRWKMZT.mjs.map} +0 -0
- /package/dist/sdk/{workflow-registry-KFWSDSLM.mjs.map → workflow-check-provider-4F3432ZP.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/sandbox.ts"],"sourcesContent":["import Sandbox from '@nyariv/sandboxjs';\n\n/**\n * Centralized helpers for creating and using SandboxJS instances consistently\n * across providers. The goal is to have one place to define allowed globals\n * and prototype whitelists, and to offer a small helper to inject a `log`\n * utility inside user-provided JS snippets.\n */\n\nexport interface CompileOptions {\n injectLog?: boolean;\n logPrefix?: string;\n /** When true, wrap the code in a function and `return` its result */\n wrapFunction?: boolean;\n}\n\nexport interface JsSyntaxValidationResult {\n valid: boolean;\n error?: string;\n}\n\n/**\n * Validate JavaScript syntax without executing it.\n * Uses the sandbox's compile method to check for syntax errors.\n * Returns validation result with error message if invalid.\n */\nexport function validateJsSyntax(code: string): JsSyntaxValidationResult {\n if (!code || typeof code !== 'string') {\n return { valid: false, error: 'Code must be a non-empty string' };\n }\n\n const trimmed = code.trim();\n if (trimmed.length === 0) {\n return { valid: false, error: 'Code cannot be empty' };\n }\n\n // Create a minimal sandbox instance for syntax checking\n const sandbox = createSecureSandbox();\n\n // Wrap code similar to compileAndRun to catch the same syntax issues\n const looksLikeBlock = /\\breturn\\b/.test(trimmed) || /;/.test(trimmed) || /\\n/.test(trimmed);\n const looksLikeIife = /\\)\\s*\\(\\s*\\)\\s*;?$/.test(trimmed);\n const body = looksLikeBlock\n ? looksLikeIife\n ? `return (\\n${trimmed}\\n);\\n`\n : `return (() => {\\n${trimmed}\\n})();\\n`\n : `return (\\n${trimmed}\\n);\\n`;\n\n // For syntax validation, we just need to ensure 'log' is defined so code using it parses correctly\n // No need for unique IDs since validation creates a fresh sandbox and only compiles (no execution)\n const header = `var log = function() {};\\n`;\n const fullCode = `${header}${body}`;\n\n try {\n sandbox.compile(fullCode);\n return { valid: true };\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n return { valid: false, error: msg };\n }\n}\n\n/**\n * Create a hardened Sandbox with a consistent set of globals and prototype\n * whitelists. This is a superset of the sets previously used by individual\n * providers, kept intentionally minimal and side‑effect free.\n */\nexport function createSecureSandbox(): Sandbox {\n const globals = {\n ...Sandbox.SAFE_GLOBALS,\n Math,\n JSON,\n // Provide console with limited surface. Use trampolines so that any test\n // spies (e.g., jest.spyOn(console, 'log')) see calls made inside the sandbox.\n console: {\n log: (...args: unknown[]) => {\n try {\n (console as any).log(...args);\n } catch {}\n },\n warn: (...args: unknown[]) => {\n try {\n (console as any).warn(...args);\n } catch {}\n },\n error: (...args: unknown[]) => {\n try {\n (console as any).error(...args);\n } catch {}\n },\n },\n } as Record<string, unknown>;\n\n const prototypeWhitelist = new Map(Sandbox.SAFE_PROTOTYPES);\n\n // Arrays — union of methods used around the codebase\n const arrayMethods = new Set<string>([\n // Query/iteration\n 'some',\n 'every',\n 'filter',\n 'map',\n 'reduce',\n 'reduceRight',\n 'find',\n 'findIndex',\n 'findLast',\n 'findLastIndex',\n 'includes',\n 'indexOf',\n 'lastIndexOf',\n 'keys',\n 'values',\n 'entries',\n 'forEach',\n // Non‑mutating ES2023 additions\n 'toReversed',\n 'toSorted',\n 'toSpliced',\n 'with',\n 'at',\n // Mutators and common ops\n 'slice',\n 'concat',\n 'join',\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'sort',\n 'reverse',\n 'copyWithin',\n 'fill',\n // Flattening\n 'flat',\n 'flatMap',\n // Meta\n 'length',\n ]);\n prototypeWhitelist.set(Array.prototype, arrayMethods);\n\n // Strings — allow common, safe manipulation helpers\n const stringMethods = new Set<string>([\n 'toLowerCase',\n 'toUpperCase',\n 'includes',\n 'indexOf',\n 'lastIndexOf',\n 'startsWith',\n 'endsWith',\n 'slice',\n 'substring',\n 'substr',\n 'trim',\n 'trimStart',\n 'trimEnd',\n 'split',\n 'replace',\n 'replaceAll',\n 'match',\n 'matchAll',\n 'charAt',\n 'charCodeAt',\n 'codePointAt',\n 'normalize',\n 'repeat',\n 'padStart',\n 'padEnd',\n 'at',\n 'length',\n ]);\n prototypeWhitelist.set(String.prototype, stringMethods);\n\n // Objects — keep to basic safe operations\n const objectMethods = new Set<string>([\n 'hasOwnProperty',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n ]);\n prototypeWhitelist.set(Object.prototype, objectMethods);\n\n // Keep native constructors from SAFE_GLOBALS; rely on prototype whitelists above.\n\n // Maps and Sets — allow common, safe operations\n const mapMethods = new Set<string>([\n 'get',\n 'set',\n 'has',\n 'delete',\n 'entries',\n 'keys',\n 'values',\n 'forEach',\n ]);\n // @ts-ignore - sandbox typings accept Map.prototype as a key\n prototypeWhitelist.set((Map as any).prototype, mapMethods);\n\n const setMethods = new Set<string>([\n 'add',\n 'has',\n 'delete',\n 'entries',\n 'keys',\n 'values',\n 'forEach',\n ]);\n // @ts-ignore\n prototypeWhitelist.set((Set as any).prototype, setMethods);\n\n // Date and RegExp — read‑only helpers\n const dateMethods = new Set<string>(['toISOString', 'toJSON', 'getTime']);\n // @ts-ignore\n prototypeWhitelist.set((Date as any).prototype, dateMethods);\n\n const regexpMethods = new Set<string>(['test', 'exec']);\n // @ts-ignore\n prototypeWhitelist.set((RegExp as any).prototype, regexpMethods);\n\n return new Sandbox({ globals, prototypeWhitelist });\n}\n\n/**\n * Compile and execute user-provided JS inside the sandbox with optional\n * helper injection. By default, code is wrapped in a function to keep the\n * global scope clean.\n */\nexport function compileAndRun<T = unknown>(\n sandbox: Sandbox,\n userCode: string,\n scope: Record<string, unknown>,\n opts: CompileOptions = { injectLog: true, wrapFunction: true, logPrefix: '[sandbox]' }\n): T {\n const inject = opts?.injectLog === true;\n let safePrefix = String(opts?.logPrefix ?? '[sandbox]');\n // Sanitize prefix aggressively: drop control chars and risky tokens, limit length\n safePrefix = safePrefix\n .replace(/[\\r\\n\\t\\0]/g, '')\n .replace(/[`$\\\\]/g, '') // strip backticks, dollar (template) and backslashes\n .replace(/\\$\\{/g, '') // remove template openings if present\n .slice(0, 64);\n // Inject log function through scope to avoid \"already declared\" errors\n // when multiple sandbox executions run in parallel with shared global state.\n // Only add log when injectLog is true - when false, user code may declare its own log.\n const scopeWithLog = inject\n ? {\n ...scope,\n log: (...args: unknown[]) => {\n try {\n console.log(safePrefix, ...args);\n } catch {}\n },\n }\n : scope;\n // No header needed - log is passed through scope\n const header = '';\n // When wrapping, execute user code inside an IIFE and return its value.\n // This reliably captures the value of the last expression or any explicit\n // return statements inside the script, without requiring the caller to\n // manually `return` at top level.\n // Wrapper heuristic:\n // - If the snippet contains an explicit `return`, semicolons or newlines (likely a block),\n // run it inside an IIFE so `return` works: (() => { code })()\n // - Otherwise treat it as a pure expression and return its value directly.\n const src = String(userCode);\n const looksLikeBlock = /\\breturn\\b/.test(src) || /;/.test(src) || /\\n/.test(src);\n // Heuristic: if the snippet itself looks like an IIFE/callable expression\n // (e.g., `(() => { ... })()` or `(function(){ ... })()`), return its value\n // directly to avoid swallowing the result by nesting it inside another block.\n const looksLikeIife = /\\)\\s*\\(\\s*\\)\\s*;?$/.test(src.trim());\n // Default wrapFunction to true if not explicitly set to false\n const shouldWrap = opts.wrapFunction !== false;\n const body = shouldWrap\n ? looksLikeBlock\n ? looksLikeIife\n ? `return (\\n${src}\\n);\\n`\n : `return (() => {\\n${src}\\n})();\\n`\n : `return (\\n${src}\\n);\\n`\n : `${src}`;\n const code = `${header}${body}`;\n\n // Create code preview for error messages (first 100 chars, single line)\n const codePreview = src.replace(/\\s+/g, ' ').trim().slice(0, 100);\n const contextInfo = safePrefix !== '[sandbox]' ? ` [${safePrefix}]` : '';\n\n let exec: ReturnType<typeof sandbox.compile>;\n try {\n exec = sandbox.compile(code);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`sandbox_compile_error${contextInfo}: ${msg} | code: ${codePreview}`);\n }\n\n let out: any;\n try {\n out = exec(scopeWithLog);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`sandbox_execution_error${contextInfo}: ${msg} | code: ${codePreview}`);\n }\n\n if (out && typeof out.run === 'function') {\n try {\n return out.run();\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`sandbox_runner_error${contextInfo}: ${msg} | code: ${codePreview}`);\n }\n }\n return out as T;\n}\n"],"mappings":";;;;;AAAA,OAAO,aAAa;AA0Bb,SAAS,iBAAiB,MAAwC;AACvE,MAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,WAAO,EAAE,OAAO,OAAO,OAAO,kCAAkC;AAAA,EAClE;AAEA,QAAM,UAAU,KAAK,KAAK;AAC1B,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,EAAE,OAAO,OAAO,OAAO,uBAAuB;AAAA,EACvD;AAGA,QAAM,UAAU,oBAAoB;AAGpC,QAAM,iBAAiB,aAAa,KAAK,OAAO,KAAK,IAAI,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO;AAC3F,QAAM,gBAAgB,qBAAqB,KAAK,OAAO;AACvD,QAAM,OAAO,iBACT,gBACE;AAAA,EAAa,OAAO;AAAA;AAAA,IACpB;AAAA,EAAoB,OAAO;AAAA;AAAA,IAC7B;AAAA,EAAa,OAAO;AAAA;AAAA;AAIxB,QAAM,SAAS;AAAA;AACf,QAAM,WAAW,GAAG,MAAM,GAAG,IAAI;AAEjC,MAAI;AACF,YAAQ,QAAQ,QAAQ;AACxB,WAAO,EAAE,OAAO,KAAK;AAAA,EACvB,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,WAAO,EAAE,OAAO,OAAO,OAAO,IAAI;AAAA,EACpC;AACF;AAOO,SAAS,sBAA+B;AAC7C,QAAM,UAAU;AAAA,IACd,GAAG,QAAQ;AAAA,IACX;AAAA,IACA;AAAA;AAAA;AAAA,IAGA,SAAS;AAAA,MACP,KAAK,IAAI,SAAoB;AAC3B,YAAI;AACF,UAAC,QAAgB,IAAI,GAAG,IAAI;AAAA,QAC9B,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,MACA,MAAM,IAAI,SAAoB;AAC5B,YAAI;AACF,UAAC,QAAgB,KAAK,GAAG,IAAI;AAAA,QAC/B,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,MACA,OAAO,IAAI,SAAoB;AAC7B,YAAI;AACF,UAAC,QAAgB,MAAM,GAAG,IAAI;AAAA,QAChC,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,IAAI,IAAI,QAAQ,eAAe;AAG1D,QAAM,eAAe,oBAAI,IAAY;AAAA;AAAA,IAEnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EACF,CAAC;AACD,qBAAmB,IAAI,MAAM,WAAW,YAAY;AAGpD,QAAM,gBAAgB,oBAAI,IAAY;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,qBAAmB,IAAI,OAAO,WAAW,aAAa;AAGtD,QAAM,gBAAgB,oBAAI,IAAY;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,qBAAmB,IAAI,OAAO,WAAW,aAAa;AAKtD,QAAM,aAAa,oBAAI,IAAY;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,qBAAmB,IAAK,IAAY,WAAW,UAAU;AAEzD,QAAM,aAAa,oBAAI,IAAY;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,qBAAmB,IAAK,IAAY,WAAW,UAAU;AAGzD,QAAM,cAAc,oBAAI,IAAY,CAAC,eAAe,UAAU,SAAS,CAAC;AAExE,qBAAmB,IAAK,KAAa,WAAW,WAAW;AAE3D,QAAM,gBAAgB,oBAAI,IAAY,CAAC,QAAQ,MAAM,CAAC;AAEtD,qBAAmB,IAAK,OAAe,WAAW,aAAa;AAE/D,SAAO,IAAI,QAAQ,EAAE,SAAS,mBAAmB,CAAC;AACpD;AAOO,SAAS,cACd,SACA,UACA,OACA,OAAuB,EAAE,WAAW,MAAM,cAAc,MAAM,WAAW,YAAY,GAClF;AACH,QAAM,SAAS,MAAM,cAAc;AACnC,MAAI,aAAa,OAAO,MAAM,aAAa,WAAW;AAEtD,eAAa,WACV,QAAQ,eAAe,EAAE,EACzB,QAAQ,WAAW,EAAE,EACrB,QAAQ,SAAS,EAAE,EACnB,MAAM,GAAG,EAAE;AAId,QAAM,eAAe,SACjB;AAAA,IACE,GAAG;AAAA,IACH,KAAK,IAAI,SAAoB;AAC3B,UAAI;AACF,gBAAQ,IAAI,YAAY,GAAG,IAAI;AAAA,MACjC,QAAQ;AAAA,MAAC;AAAA,IACX;AAAA,EACF,IACA;AAEJ,QAAM,SAAS;AASf,QAAM,MAAM,OAAO,QAAQ;AAC3B,QAAM,iBAAiB,aAAa,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG;AAI/E,QAAM,gBAAgB,qBAAqB,KAAK,IAAI,KAAK,CAAC;AAE1D,QAAM,aAAa,KAAK,iBAAiB;AACzC,QAAM,OAAO,aACT,iBACE,gBACE;AAAA,EAAa,GAAG;AAAA;AAAA,IAChB;AAAA,EAAoB,GAAG;AAAA;AAAA,IACzB;AAAA,EAAa,GAAG;AAAA;AAAA,IAClB,GAAG,GAAG;AACV,QAAM,OAAO,GAAG,MAAM,GAAG,IAAI;AAG7B,QAAM,cAAc,IAAI,QAAQ,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;AAChE,QAAM,cAAc,eAAe,cAAc,KAAK,UAAU,MAAM;AAEtE,MAAI;AACJ,MAAI;AACF,WAAO,QAAQ,QAAQ,IAAI;AAAA,EAC7B,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,UAAM,IAAI,MAAM,wBAAwB,WAAW,KAAK,GAAG,YAAY,WAAW,EAAE;AAAA,EACtF;AAEA,MAAI;AACJ,MAAI;AACF,UAAM,KAAK,YAAY;AAAA,EACzB,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,UAAM,IAAI,MAAM,0BAA0B,WAAW,KAAK,GAAG,YAAY,WAAW,EAAE;AAAA,EACxF;AAEA,MAAI,OAAO,OAAO,IAAI,QAAQ,YAAY;AACxC,QAAI;AACF,aAAO,IAAI,IAAI;AAAA,IACjB,SAAS,GAAG;AACV,YAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,YAAM,IAAI,MAAM,uBAAuB,WAAW,KAAK,GAAG,YAAY,WAAW,EAAE;AAAA,IACrF;AAAA,EACF;AACA,SAAO;AACT;AAtTA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init_logger,
|
|
3
3
|
logger
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PO7X5XI7.mjs";
|
|
5
5
|
import {
|
|
6
6
|
__esm
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-J7LXIPZS.mjs";
|
|
8
8
|
|
|
9
9
|
// src/utils/command-executor.ts
|
|
10
10
|
import { exec } from "child_process";
|
|
@@ -136,4 +136,4 @@ export {
|
|
|
136
136
|
commandExecutor,
|
|
137
137
|
init_command_executor
|
|
138
138
|
};
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
139
|
+
//# sourceMappingURL=chunk-XDLQ3UNF.mjs.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init_lazy_otel,
|
|
3
3
|
metrics
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-HEX3RL32.mjs";
|
|
5
5
|
import {
|
|
6
6
|
__esm
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-J7LXIPZS.mjs";
|
|
8
8
|
|
|
9
9
|
// src/telemetry/metrics.ts
|
|
10
10
|
function ensureInstruments() {
|
|
@@ -142,4 +142,4 @@ export {
|
|
|
142
142
|
resetTestMetricsSnapshot,
|
|
143
143
|
init_metrics
|
|
144
144
|
};
|
|
145
|
-
//# sourceMappingURL=chunk-
|
|
145
|
+
//# sourceMappingURL=chunk-XR7XXGL7.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
__esm,
|
|
3
3
|
__export
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-J7LXIPZS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/session-registry.ts
|
|
7
7
|
var session_registry_exports = {};
|
|
@@ -114,7 +114,7 @@ var init_session_registry = __esm({
|
|
|
114
114
|
});
|
|
115
115
|
if (sourceAgent.debug && checkName) {
|
|
116
116
|
try {
|
|
117
|
-
const { initializeTracer } = await import("./tracer-init-
|
|
117
|
+
const { initializeTracer } = await import("./tracer-init-XPRWKMZT.mjs");
|
|
118
118
|
const tracerResult = await initializeTracer(newSessionId, checkName);
|
|
119
119
|
if (tracerResult) {
|
|
120
120
|
clonedAgent.tracer = tracerResult.tracer;
|
|
@@ -194,4 +194,4 @@ export {
|
|
|
194
194
|
session_registry_exports,
|
|
195
195
|
init_session_registry
|
|
196
196
|
};
|
|
197
|
-
//# sourceMappingURL=chunk-
|
|
197
|
+
//# sourceMappingURL=chunk-XXAEN5KU.mjs.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CommandExecutor,
|
|
3
|
+
commandExecutor,
|
|
4
|
+
init_command_executor
|
|
5
|
+
} from "./chunk-XDLQ3UNF.mjs";
|
|
6
|
+
import "./chunk-PO7X5XI7.mjs";
|
|
7
|
+
import "./chunk-HEX3RL32.mjs";
|
|
8
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
9
|
+
init_command_executor();
|
|
10
|
+
export {
|
|
11
|
+
CommandExecutor,
|
|
12
|
+
commandExecutor
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=command-executor-DVVXERLR.mjs.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ConfigManager,
|
|
3
|
+
VALID_EVENT_TRIGGERS,
|
|
4
|
+
init_config
|
|
5
|
+
} from "./chunk-7YSOINAQ.mjs";
|
|
6
|
+
import "./chunk-NCWIZVOT.mjs";
|
|
7
|
+
import "./chunk-VF6XIUE4.mjs";
|
|
8
|
+
import "./chunk-PO7X5XI7.mjs";
|
|
9
|
+
import "./chunk-HEX3RL32.mjs";
|
|
10
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
11
|
+
init_config();
|
|
12
|
+
export {
|
|
13
|
+
ConfigManager,
|
|
14
|
+
VALID_EVENT_TRIGGERS
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=config-7VTT64SQ.mjs.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__esm
|
|
3
|
+
} from "./chunk-J7LXIPZS.mjs";
|
|
4
|
+
|
|
5
|
+
// src/event-bus/event-bus.ts
|
|
6
|
+
var EventBus;
|
|
7
|
+
var init_event_bus = __esm({
|
|
8
|
+
"src/event-bus/event-bus.ts"() {
|
|
9
|
+
EventBus = class {
|
|
10
|
+
handlers = /* @__PURE__ */ new Map();
|
|
11
|
+
anyHandlers = /* @__PURE__ */ new Set();
|
|
12
|
+
on(eventType, handler) {
|
|
13
|
+
const set = this.handlers.get(eventType) || /* @__PURE__ */ new Set();
|
|
14
|
+
set.add(handler);
|
|
15
|
+
this.handlers.set(eventType, set);
|
|
16
|
+
return {
|
|
17
|
+
unsubscribe: () => {
|
|
18
|
+
set.delete(handler);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
onAny(handler) {
|
|
23
|
+
this.anyHandlers.add(handler);
|
|
24
|
+
return { unsubscribe: () => this.anyHandlers.delete(handler) };
|
|
25
|
+
}
|
|
26
|
+
async emit(event) {
|
|
27
|
+
const type = event?.payload?.type ?? event?.type ?? "unknown";
|
|
28
|
+
const list = [
|
|
29
|
+
...Array.from(this.anyHandlers),
|
|
30
|
+
...Array.from(this.handlers.get(type) || [])
|
|
31
|
+
];
|
|
32
|
+
for (const h of list) {
|
|
33
|
+
await h(event);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
init_event_bus();
|
|
40
|
+
export {
|
|
41
|
+
EventBus
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=event-bus-5K3Y2FCS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/event-bus/event-bus.ts"],"sourcesContent":["import type { EventEnvelope, AnyEvent } from './types';\n\nexport type EventHandler<T = AnyEvent> = (event: T | EventEnvelope<T>) => void | Promise<void>;\n\nexport interface Subscription {\n unsubscribe(): void;\n}\n\nexport class EventBus {\n private handlers: Map<string, Set<EventHandler>> = new Map();\n private anyHandlers: Set<EventHandler> = new Set();\n\n on<T = AnyEvent>(eventType: string, handler: EventHandler<T>): Subscription {\n const set = this.handlers.get(eventType) || new Set<EventHandler>();\n set.add(handler);\n this.handlers.set(eventType, set);\n return {\n unsubscribe: () => {\n set.delete(handler);\n },\n };\n }\n\n onAny(handler: EventHandler): Subscription {\n this.anyHandlers.add(handler);\n return { unsubscribe: () => this.anyHandlers.delete(handler) };\n }\n\n async emit(event: AnyEvent | EventEnvelope): Promise<void> {\n const type = (event as any)?.payload?.type ?? (event as any)?.type ?? 'unknown';\n const list: EventHandler[] = [\n ...Array.from(this.anyHandlers),\n ...Array.from(this.handlers.get(type) || []),\n ];\n for (const h of list) {\n // Run sequentially to keep ordering guarantees per emit call\n // Handlers themselves should fan out if they need concurrency\n await h(event as any);\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/event-bus/event-bus.ts"],"sourcesContent":["import type { EventEnvelope, AnyEvent } from './types';\n\nexport type EventHandler<T = AnyEvent> = (event: T | EventEnvelope<T>) => void | Promise<void>;\n\nexport interface Subscription {\n unsubscribe(): void;\n}\n\nexport class EventBus {\n private handlers: Map<string, Set<EventHandler>> = new Map();\n private anyHandlers: Set<EventHandler> = new Set();\n\n on<T = AnyEvent>(eventType: string, handler: EventHandler<T>): Subscription {\n const set = this.handlers.get(eventType) || new Set<EventHandler>();\n set.add(handler);\n this.handlers.set(eventType, set);\n return {\n unsubscribe: () => {\n set.delete(handler);\n },\n };\n }\n\n onAny(handler: EventHandler): Subscription {\n this.anyHandlers.add(handler);\n return { unsubscribe: () => this.anyHandlers.delete(handler) };\n }\n\n async emit(event: AnyEvent | EventEnvelope): Promise<void> {\n const type = (event as any)?.payload?.type ?? (event as any)?.type ?? 'unknown';\n const list: EventHandler[] = [\n ...Array.from(this.anyHandlers),\n ...Array.from(this.handlers.get(type) || []),\n ];\n for (const h of list) {\n // Run sequentially to keep ordering guarantees per emit call\n // Handlers themselves should fan out if they need concurrency\n await h(event as any);\n }\n }\n}\n"],"mappings":";;;;;AAAA,IAQa;AARb;AAAA;AAQO,IAAM,WAAN,MAAe;AAAA,MACZ,WAA2C,oBAAI,IAAI;AAAA,MACnD,cAAiC,oBAAI,IAAI;AAAA,MAEjD,GAAiB,WAAmB,SAAwC;AAC1E,cAAM,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,oBAAI,IAAkB;AAClE,YAAI,IAAI,OAAO;AACf,aAAK,SAAS,IAAI,WAAW,GAAG;AAChC,eAAO;AAAA,UACL,aAAa,MAAM;AACjB,gBAAI,OAAO,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAqC;AACzC,aAAK,YAAY,IAAI,OAAO;AAC5B,eAAO,EAAE,aAAa,MAAM,KAAK,YAAY,OAAO,OAAO,EAAE;AAAA,MAC/D;AAAA,MAEA,MAAM,KAAK,OAAgD;AACzD,cAAM,OAAQ,OAAe,SAAS,QAAS,OAAe,QAAQ;AACtE,cAAM,OAAuB;AAAA,UAC3B,GAAG,MAAM,KAAK,KAAK,WAAW;AAAA,UAC9B,GAAG,MAAM,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,CAAC,CAAC;AAAA,QAC7C;AACA,mBAAW,KAAK,MAAM;AAGpB,gBAAM,EAAE,KAAY;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FailureConditionEvaluator,
|
|
3
|
+
init_failure_condition_evaluator
|
|
4
|
+
} from "./chunk-N7HO6KKC.mjs";
|
|
5
|
+
import "./chunk-J5RGJQ53.mjs";
|
|
6
|
+
import "./chunk-XR7XXGL7.mjs";
|
|
7
|
+
import "./chunk-25IC7KXZ.mjs";
|
|
8
|
+
import "./chunk-VF6XIUE4.mjs";
|
|
9
|
+
import "./chunk-2KB35MB7.mjs";
|
|
10
|
+
import "./chunk-PO7X5XI7.mjs";
|
|
11
|
+
import "./chunk-HEX3RL32.mjs";
|
|
12
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
13
|
+
init_failure_condition_evaluator();
|
|
14
|
+
export {
|
|
15
|
+
FailureConditionEvaluator
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=failure-condition-evaluator-4WMDF4Q3.mjs.map
|