@reticlehq/server 2.0.1 → 2.2.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/LICENSE-ENTERPRISE +37 -0
- package/README.md +5 -1
- package/dist/bridge-security.d.ts +1 -1
- package/dist/bridge-security.js +1 -1
- package/dist/bridge.d.ts +7 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +62 -6
- package/dist/bridge.js.map +1 -1
- package/dist/bridge.test-harness.d.ts +5 -0
- package/dist/bridge.test-harness.d.ts.map +1 -1
- package/dist/bridge.test-harness.js +4 -0
- package/dist/bridge.test-harness.js.map +1 -1
- package/dist/capsule/capsule-store.d.ts +66 -0
- package/dist/capsule/capsule-store.d.ts.map +1 -0
- package/dist/capsule/capsule-store.js +110 -0
- package/dist/capsule/capsule-store.js.map +1 -0
- package/dist/capsule/capsule.d.ts +19 -0
- package/dist/capsule/capsule.d.ts.map +1 -0
- package/dist/capsule/capsule.js +36 -0
- package/dist/capsule/capsule.js.map +1 -0
- package/dist/capsule/causal-summary.d.ts +36 -0
- package/dist/capsule/causal-summary.d.ts.map +1 -0
- package/dist/capsule/causal-summary.js +111 -0
- package/dist/capsule/causal-summary.js.map +1 -0
- package/dist/capsule/divergence.d.ts +31 -0
- package/dist/capsule/divergence.d.ts.map +1 -0
- package/dist/capsule/divergence.js +41 -0
- package/dist/capsule/divergence.js.map +1 -0
- package/dist/capsule/minimize.d.ts +13 -0
- package/dist/capsule/minimize.d.ts.map +1 -0
- package/dist/capsule/minimize.js +23 -0
- package/dist/capsule/minimize.js.map +1 -0
- package/dist/capsule/predicate-to-links.d.ts +9 -0
- package/dist/capsule/predicate-to-links.d.ts.map +1 -0
- package/dist/capsule/predicate-to-links.js +31 -0
- package/dist/capsule/predicate-to-links.js.map +1 -0
- package/dist/cli-flow-commands.d.ts +31 -0
- package/dist/cli-flow-commands.d.ts.map +1 -0
- package/dist/cli-flow-commands.js +207 -0
- package/dist/cli-flow-commands.js.map +1 -0
- package/dist/cli-launch.d.ts.map +1 -1
- package/dist/cli-launch.js +1 -2
- package/dist/cli-launch.js.map +1 -1
- package/dist/cli-parse.d.ts +18 -2
- package/dist/cli-parse.d.ts.map +1 -1
- package/dist/cli-parse.js +57 -0
- package/dist/cli-parse.js.map +1 -1
- package/dist/cli-port.d.ts +10 -4
- package/dist/cli-port.d.ts.map +1 -1
- package/dist/cli-port.js +32 -6
- package/dist/cli-port.js.map +1 -1
- package/dist/cli-verify.d.ts.map +1 -1
- package/dist/cli-verify.js +29 -10
- package/dist/cli-verify.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +83 -13
- package/dist/cli.js.map +1 -1
- package/dist/crawl/crawl-tools.d.ts.map +1 -1
- package/dist/crawl/crawl-tools.js +12 -0
- package/dist/crawl/crawl-tools.js.map +1 -1
- package/dist/crawl/crawl.d.ts +23 -1
- package/dist/crawl/crawl.d.ts.map +1 -1
- package/dist/crawl/crawl.js +42 -12
- package/dist/crawl/crawl.js.map +1 -1
- package/dist/daemon-resilience.d.ts +5 -5
- package/dist/daemon-resilience.js +5 -5
- package/dist/daemon.d.ts +9 -3
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +41 -8
- package/dist/daemon.js.map +1 -1
- package/dist/domain/domain-tools.d.ts.map +1 -1
- package/dist/domain/domain-tools.js +11 -1
- package/dist/domain/domain-tools.js.map +1 -1
- package/dist/domain/flow-risk.d.ts +4 -4
- package/dist/domain/flow-risk.js +4 -4
- package/dist/ee/audit-log.d.ts +2 -2
- package/dist/ee/audit-log.js +2 -2
- package/dist/events/event-filters.d.ts +35 -1
- package/dist/events/event-filters.d.ts.map +1 -1
- package/dist/events/event-filters.js +93 -6
- package/dist/events/event-filters.js.map +1 -1
- package/dist/events/predicate-eval.d.ts +15 -0
- package/dist/events/predicate-eval.d.ts.map +1 -1
- package/dist/events/predicate-eval.js +130 -9
- package/dist/events/predicate-eval.js.map +1 -1
- package/dist/events/predicate.d.ts +22 -1
- package/dist/events/predicate.d.ts.map +1 -1
- package/dist/events/predicate.js +169 -15
- package/dist/events/predicate.js.map +1 -1
- package/dist/events/ring-buffer.d.ts +10 -8
- package/dist/events/ring-buffer.d.ts.map +1 -1
- package/dist/events/ring-buffer.js +84 -25
- package/dist/events/ring-buffer.js.map +1 -1
- package/dist/flows/affected.d.ts +25 -0
- package/dist/flows/affected.d.ts.map +1 -0
- package/dist/flows/affected.js +36 -0
- package/dist/flows/affected.js.map +1 -0
- package/dist/flows/annotate.d.ts +4 -4
- package/dist/flows/annotate.js +4 -4
- package/dist/flows/assertion-integrity.d.ts +24 -0
- package/dist/flows/assertion-integrity.d.ts.map +1 -0
- package/dist/flows/assertion-integrity.js +27 -0
- package/dist/flows/assertion-integrity.js.map +1 -0
- package/dist/flows/assertion-tiers-store.d.ts +80 -0
- package/dist/flows/assertion-tiers-store.d.ts.map +1 -0
- package/dist/flows/assertion-tiers-store.js +99 -0
- package/dist/flows/assertion-tiers-store.js.map +1 -0
- package/dist/flows/buddy-status.d.ts +25 -0
- package/dist/flows/buddy-status.d.ts.map +1 -0
- package/dist/flows/buddy-status.js +33 -0
- package/dist/flows/buddy-status.js.map +1 -0
- package/dist/flows/coverage.d.ts +28 -0
- package/dist/flows/coverage.d.ts.map +1 -0
- package/dist/flows/coverage.js +22 -0
- package/dist/flows/coverage.js.map +1 -0
- package/dist/flows/decision.d.ts.map +1 -1
- package/dist/flows/decision.js +18 -9
- package/dist/flows/decision.js.map +1 -1
- package/dist/flows/flake-store.d.ts +20 -0
- package/dist/flows/flake-store.d.ts.map +1 -0
- package/dist/flows/flake-store.js +59 -0
- package/dist/flows/flake-store.js.map +1 -0
- package/dist/flows/flake.d.ts +58 -0
- package/dist/flows/flake.d.ts.map +1 -0
- package/dist/flows/flake.js +36 -0
- package/dist/flows/flake.js.map +1 -0
- package/dist/flows/flow-classify.d.ts +8 -8
- package/dist/flows/flow-classify.d.ts.map +1 -1
- package/dist/flows/flow-classify.js +12 -20
- package/dist/flows/flow-classify.js.map +1 -1
- package/dist/flows/flow-replay-run.d.ts +6 -0
- package/dist/flows/flow-replay-run.d.ts.map +1 -1
- package/dist/flows/flow-replay-run.js +49 -0
- package/dist/flows/flow-replay-run.js.map +1 -1
- package/dist/flows/flow-replay.d.ts +9 -0
- package/dist/flows/flow-replay.d.ts.map +1 -1
- package/dist/flows/flow-replay.js +52 -18
- package/dist/flows/flow-replay.js.map +1 -1
- package/dist/flows/flow-report.d.ts +4 -4
- package/dist/flows/flow-report.d.ts.map +1 -1
- package/dist/flows/flow-report.js +2 -1
- package/dist/flows/flow-report.js.map +1 -1
- package/dist/flows/flow-sources.d.ts +20 -0
- package/dist/flows/flow-sources.d.ts.map +1 -0
- package/dist/flows/flow-sources.js +33 -0
- package/dist/flows/flow-sources.js.map +1 -0
- package/dist/flows/flow-tools.d.ts +13 -1
- package/dist/flows/flow-tools.d.ts.map +1 -1
- package/dist/flows/flow-tools.js +97 -152
- package/dist/flows/flow-tools.js.map +1 -1
- package/dist/flows/flows.d.ts +9 -4
- package/dist/flows/flows.d.ts.map +1 -1
- package/dist/flows/flows.js +39 -27
- package/dist/flows/flows.js.map +1 -1
- package/dist/flows/gate.d.ts +39 -0
- package/dist/flows/gate.d.ts.map +1 -0
- package/dist/flows/gate.js +34 -0
- package/dist/flows/gate.js.map +1 -0
- package/dist/flows/git-changed.d.ts +9 -0
- package/dist/flows/git-changed.d.ts.map +1 -0
- package/dist/flows/git-changed.js +25 -0
- package/dist/flows/git-changed.js.map +1 -0
- package/dist/flows/heal-run.d.ts +19 -0
- package/dist/flows/heal-run.d.ts.map +1 -0
- package/dist/flows/heal-run.js +137 -0
- package/dist/flows/heal-run.js.map +1 -0
- package/dist/flows/parallel-suite.d.ts +27 -0
- package/dist/flows/parallel-suite.d.ts.map +1 -0
- package/dist/flows/parallel-suite.js +51 -0
- package/dist/flows/parallel-suite.js.map +1 -0
- package/dist/flows/replay.d.ts +13 -0
- package/dist/flows/replay.d.ts.map +1 -1
- package/dist/flows/replay.js +56 -23
- package/dist/flows/replay.js.map +1 -1
- package/dist/flows/watch-batcher.d.ts +18 -0
- package/dist/flows/watch-batcher.d.ts.map +1 -0
- package/dist/flows/watch-batcher.js +20 -0
- package/dist/flows/watch-batcher.js.map +1 -0
- package/dist/honesty/blind-spots.d.ts +37 -0
- package/dist/honesty/blind-spots.d.ts.map +1 -0
- package/dist/honesty/blind-spots.js +57 -0
- package/dist/honesty/blind-spots.js.map +1 -0
- package/dist/honesty/honesty.d.ts +57 -0
- package/dist/honesty/honesty.d.ts.map +1 -0
- package/dist/honesty/honesty.js +63 -0
- package/dist/honesty/honesty.js.map +1 -0
- package/dist/http-server.d.ts +5 -9
- package/dist/http-server.d.ts.map +1 -1
- package/dist/http-server.js +5 -9
- package/dist/http-server.js.map +1 -1
- package/dist/idle-shutdown.d.ts +2 -2
- package/dist/idle-shutdown.js +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +131 -73
- package/dist/index.js.map +1 -1
- package/dist/init/agent-rules.d.ts +38 -0
- package/dist/init/agent-rules.d.ts.map +1 -0
- package/dist/init/agent-rules.js +65 -0
- package/dist/init/agent-rules.js.map +1 -0
- package/dist/init/mcp.d.ts.map +1 -1
- package/dist/init/mcp.js +4 -3
- package/dist/init/mcp.js.map +1 -1
- package/dist/init/plan.d.ts +6 -0
- package/dist/init/plan.d.ts.map +1 -1
- package/dist/init/plan.js +79 -3
- package/dist/init/plan.js.map +1 -1
- package/dist/init/run.d.ts.map +1 -1
- package/dist/init/run.js +4 -0
- package/dist/init/run.js.map +1 -1
- package/dist/init/snippets.js +1 -1
- package/dist/init/vite-config.d.ts +1 -1
- package/dist/init/vite-config.js +2 -2
- package/dist/init/vite-config.js.map +1 -1
- package/dist/input/network-detail.d.ts +74 -0
- package/dist/input/network-detail.d.ts.map +1 -0
- package/dist/input/network-detail.js +160 -0
- package/dist/input/network-detail.js.map +1 -0
- package/dist/input/network-mock-tools.d.ts.map +1 -1
- package/dist/input/network-mock-tools.js +1 -6
- package/dist/input/network-mock-tools.js.map +1 -1
- package/dist/input/network-mock.d.ts +4 -4
- package/dist/input/real-input.d.ts +44 -11
- package/dist/input/real-input.d.ts.map +1 -1
- package/dist/input/real-input.js +57 -9
- package/dist/input/real-input.js.map +1 -1
- package/dist/input/viewport-tools.d.ts.map +1 -1
- package/dist/input/viewport-tools.js +1 -6
- package/dist/input/viewport-tools.js.map +1 -1
- package/dist/journal/ambient-store.d.ts +16 -0
- package/dist/journal/ambient-store.d.ts.map +1 -0
- package/dist/journal/ambient-store.js +46 -0
- package/dist/journal/ambient-store.js.map +1 -0
- package/dist/journal/ambient.d.ts +48 -0
- package/dist/journal/ambient.d.ts.map +1 -0
- package/dist/journal/ambient.js +48 -0
- package/dist/journal/ambient.js.map +1 -0
- package/dist/journal/attach-journal.d.ts +22 -0
- package/dist/journal/attach-journal.d.ts.map +1 -0
- package/dist/journal/attach-journal.js +20 -0
- package/dist/journal/attach-journal.js.map +1 -0
- package/dist/journal/deviation-report.d.ts +28 -0
- package/dist/journal/deviation-report.d.ts.map +1 -0
- package/dist/journal/deviation-report.js +54 -0
- package/dist/journal/deviation-report.js.map +1 -0
- package/dist/journal/deviation-service.d.ts +12 -0
- package/dist/journal/deviation-service.d.ts.map +1 -0
- package/dist/journal/deviation-service.js +32 -0
- package/dist/journal/deviation-service.js.map +1 -0
- package/dist/journal/envelope-store.d.ts +19 -0
- package/dist/journal/envelope-store.d.ts.map +1 -0
- package/dist/journal/envelope-store.js +62 -0
- package/dist/journal/envelope-store.js.map +1 -0
- package/dist/journal/envelope.d.ts +232 -0
- package/dist/journal/envelope.d.ts.map +1 -0
- package/dist/journal/envelope.js +94 -0
- package/dist/journal/envelope.js.map +1 -0
- package/dist/journal/journal-query.d.ts +20 -0
- package/dist/journal/journal-query.d.ts.map +1 -0
- package/dist/journal/journal-query.js +28 -0
- package/dist/journal/journal-query.js.map +1 -0
- package/dist/journal/journal-recorder.d.ts +38 -0
- package/dist/journal/journal-recorder.d.ts.map +1 -0
- package/dist/journal/journal-recorder.js +81 -0
- package/dist/journal/journal-recorder.js.map +1 -0
- package/dist/journal/retention.d.ts +21 -0
- package/dist/journal/retention.d.ts.map +1 -0
- package/dist/journal/retention.js +50 -0
- package/dist/journal/retention.js.map +1 -0
- package/dist/journal/rollups.d.ts +49 -0
- package/dist/journal/rollups.d.ts.map +1 -0
- package/dist/journal/rollups.js +83 -0
- package/dist/journal/rollups.js.map +1 -0
- package/dist/journal/session-end.d.ts +32 -0
- package/dist/journal/session-end.d.ts.map +1 -0
- package/dist/journal/session-end.js +52 -0
- package/dist/journal/session-end.js.map +1 -0
- package/dist/journal/session-journal.d.ts +25 -0
- package/dist/journal/session-journal.d.ts.map +1 -0
- package/dist/journal/session-journal.js +168 -0
- package/dist/journal/session-journal.js.map +1 -0
- package/dist/license/license.d.ts +8 -3
- package/dist/license/license.d.ts.map +1 -1
- package/dist/license/license.js +34 -11
- package/dist/license/license.js.map +1 -1
- package/dist/mcp-proxy.d.ts +20 -0
- package/dist/mcp-proxy.d.ts.map +1 -1
- package/dist/mcp-proxy.js +52 -29
- package/dist/mcp-proxy.js.map +1 -1
- package/dist/mcp.d.ts +22 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +93 -10
- package/dist/mcp.js.map +1 -1
- package/dist/oracles/flow-instrument-gaps.d.ts +19 -0
- package/dist/oracles/flow-instrument-gaps.d.ts.map +1 -0
- package/dist/oracles/flow-instrument-gaps.js +45 -0
- package/dist/oracles/flow-instrument-gaps.js.map +1 -0
- package/dist/oracles/propose-consequences.d.ts +22 -0
- package/dist/oracles/propose-consequences.d.ts.map +1 -0
- package/dist/oracles/propose-consequences.js +93 -0
- package/dist/oracles/propose-consequences.js.map +1 -0
- package/dist/oracles/self-instrument.d.ts +32 -0
- package/dist/oracles/self-instrument.d.ts.map +1 -0
- package/dist/oracles/self-instrument.js +44 -0
- package/dist/oracles/self-instrument.js.map +1 -0
- package/dist/pairing-token.d.ts +1 -1
- package/dist/phenomena/phenomena.d.ts +27 -0
- package/dist/phenomena/phenomena.d.ts.map +1 -0
- package/dist/phenomena/phenomena.js +102 -0
- package/dist/phenomena/phenomena.js.map +1 -0
- package/dist/pool/browser-pool.d.ts +5 -3
- package/dist/pool/browser-pool.d.ts.map +1 -1
- package/dist/pool/browser-pool.js +21 -3
- package/dist/pool/browser-pool.js.map +1 -1
- package/dist/pool/playwright-launcher.d.ts +2 -2
- package/dist/pool/playwright-launcher.d.ts.map +1 -1
- package/dist/pool/playwright-launcher.js +20 -6
- package/dist/pool/playwright-launcher.js.map +1 -1
- package/dist/project/file-lock.d.ts +2 -0
- package/dist/project/file-lock.d.ts.map +1 -0
- package/dist/project/file-lock.js +24 -0
- package/dist/project/file-lock.js.map +1 -0
- package/dist/project/fs-port.d.ts +18 -0
- package/dist/project/fs-port.d.ts.map +1 -1
- package/dist/project/fs-port.js +24 -2
- package/dist/project/fs-port.js.map +1 -1
- package/dist/project/project-store.d.ts.map +1 -1
- package/dist/project/project-store.js +13 -7
- package/dist/project/project-store.js.map +1 -1
- package/dist/project/project-tools.d.ts +0 -6
- package/dist/project/project-tools.d.ts.map +1 -1
- package/dist/project/project-tools.js +25 -7
- package/dist/project/project-tools.js.map +1 -1
- package/dist/project/reticle-dir.d.ts +39 -14
- package/dist/project/reticle-dir.d.ts.map +1 -1
- package/dist/project/reticle-dir.js +30 -4
- package/dist/project/reticle-dir.js.map +1 -1
- package/dist/runs/build-verification-run.d.ts +1 -1
- package/dist/runs/build-verification-run.js +1 -1
- package/dist/runs/repair-prompt.d.ts +2 -0
- package/dist/runs/repair-prompt.d.ts.map +1 -1
- package/dist/runs/repair-prompt.js +14 -1
- package/dist/runs/repair-prompt.js.map +1 -1
- package/dist/runs/reticle-runner.d.ts +1 -1
- package/dist/runs/reticle-runner.d.ts.map +1 -1
- package/dist/runs/run-diff.d.ts +34 -0
- package/dist/runs/run-diff.d.ts.map +1 -0
- package/dist/runs/run-diff.js +71 -0
- package/dist/runs/run-diff.js.map +1 -0
- package/dist/runs/run-store.d.ts +6 -1
- package/dist/runs/run-store.d.ts.map +1 -1
- package/dist/runs/run-store.js +22 -2
- package/dist/runs/run-store.js.map +1 -1
- package/dist/runs/run-tools.d.ts.map +1 -1
- package/dist/runs/run-tools.js +16 -3
- package/dist/runs/run-tools.js.map +1 -1
- package/dist/runs/verify-server.js +1 -1
- package/dist/runs/verify-server.js.map +1 -1
- package/dist/server-version.d.ts +5 -0
- package/dist/server-version.d.ts.map +1 -1
- package/dist/server-version.js +5 -0
- package/dist/server-version.js.map +1 -1
- package/dist/session/control-envelope.d.ts +9 -1
- package/dist/session/control-envelope.d.ts.map +1 -1
- package/dist/session/control-envelope.js +13 -1
- package/dist/session/control-envelope.js.map +1 -1
- package/dist/session/live-control-tools.d.ts +1 -1
- package/dist/session/live-control-tools.d.ts.map +1 -1
- package/dist/session/live-control-tools.js +2 -7
- package/dist/session/live-control-tools.js.map +1 -1
- package/dist/session/live-control.d.ts +38 -0
- package/dist/session/live-control.d.ts.map +1 -0
- package/dist/session/live-control.js +64 -0
- package/dist/session/live-control.js.map +1 -0
- package/dist/session/observed-state.d.ts +46 -0
- package/dist/session/observed-state.d.ts.map +1 -0
- package/dist/session/observed-state.js +76 -0
- package/dist/session/observed-state.js.map +1 -0
- package/dist/session/output-budget.d.ts +9 -0
- package/dist/session/output-budget.d.ts.map +1 -1
- package/dist/session/output-budget.js +12 -1
- package/dist/session/output-budget.js.map +1 -1
- package/dist/session/review-store.d.ts +1 -1
- package/dist/session/review-store.d.ts.map +1 -1
- package/dist/session/review-store.js +2 -2
- package/dist/session/review-store.js.map +1 -1
- package/dist/session/session-manager.d.ts +9 -7
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +8 -8
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/session-readiness.js +1 -1
- package/dist/session/session-readiness.js.map +1 -1
- package/dist/session/session-reaper.d.ts +1 -1
- package/dist/session/session-reaper.js +1 -1
- package/dist/session/session-recommendation.d.ts +1 -1
- package/dist/session/session-recommendation.js +1 -1
- package/dist/session/session-tools.js +1 -1
- package/dist/session/session-tools.js.map +1 -1
- package/dist/session/session.d.ts +44 -12
- package/dist/session/session.d.ts.map +1 -1
- package/dist/session/session.js +116 -47
- package/dist/session/session.js.map +1 -1
- package/dist/tools/act-tools.d.ts.map +1 -1
- package/dist/tools/act-tools.js +257 -70
- package/dist/tools/act-tools.js.map +1 -1
- package/dist/tools/act-view.d.ts +4 -4
- package/dist/tools/act-view.js +4 -4
- package/dist/tools/assert-grade.d.ts.map +1 -1
- package/dist/tools/assert-grade.js +15 -26
- package/dist/tools/assert-grade.js.map +1 -1
- package/dist/tools/browser-tools.d.ts.map +1 -1
- package/dist/tools/browser-tools.js +32 -8
- package/dist/tools/browser-tools.js.map +1 -1
- package/dist/tools/contract-tools.d.ts.map +1 -1
- package/dist/tools/contract-tools.js +5 -0
- package/dist/tools/contract-tools.js.map +1 -1
- package/dist/tools/dynamic-tools.d.ts.map +1 -1
- package/dist/tools/dynamic-tools.js +7 -6
- package/dist/tools/dynamic-tools.js.map +1 -1
- package/dist/tools/invoke-tool.d.ts.map +1 -1
- package/dist/tools/invoke-tool.js +41 -30
- package/dist/tools/invoke-tool.js.map +1 -1
- package/dist/tools/lease-tools.d.ts +16 -0
- package/dist/tools/lease-tools.d.ts.map +1 -1
- package/dist/tools/lease-tools.js +11 -0
- package/dist/tools/lease-tools.js.map +1 -1
- package/dist/tools/merge-tools.d.ts +43 -0
- package/dist/tools/merge-tools.d.ts.map +1 -0
- package/dist/tools/merge-tools.js +66 -0
- package/dist/tools/merge-tools.js.map +1 -0
- package/dist/tools/observe-tools.d.ts.map +1 -1
- package/dist/tools/observe-tools.js +172 -29
- package/dist/tools/observe-tools.js.map +1 -1
- package/dist/tools/profiles.d.ts +18 -13
- package/dist/tools/profiles.d.ts.map +1 -1
- package/dist/tools/profiles.js +39 -33
- package/dist/tools/profiles.js.map +1 -1
- package/dist/tools/query-paginate.d.ts +9 -2
- package/dist/tools/query-paginate.d.ts.map +1 -1
- package/dist/tools/query-paginate.js +21 -4
- package/dist/tools/query-paginate.js.map +1 -1
- package/dist/tools/read-tools.d.ts.map +1 -1
- package/dist/tools/read-tools.js +95 -2
- package/dist/tools/read-tools.js.map +1 -1
- package/dist/tools/snapshot-delta.d.ts +2 -0
- package/dist/tools/snapshot-delta.d.ts.map +1 -1
- package/dist/tools/snapshot-delta.js +0 -0
- package/dist/tools/snapshot-delta.js.map +1 -1
- package/dist/tools/tool-kit.d.ts +11 -2
- package/dist/tools/tool-kit.d.ts.map +1 -1
- package/dist/tools/tool-kit.js +24 -1
- package/dist/tools/tool-kit.js.map +1 -1
- package/dist/tools/tool-names.d.ts +19 -10
- package/dist/tools/tool-names.d.ts.map +1 -1
- package/dist/tools/tool-names.js +23 -13
- package/dist/tools/tool-names.js.map +1 -1
- package/dist/tools/tools-helpers.d.ts +12 -0
- package/dist/tools/tools-helpers.d.ts.map +1 -1
- package/dist/tools/tools-helpers.js +20 -0
- package/dist/tools/tools-helpers.js.map +1 -1
- package/dist/tools/tools.d.ts.map +1 -1
- package/dist/tools/tools.js +162 -12
- package/dist/tools/tools.js.map +1 -1
- package/dist/update/update-checker.d.ts +14 -1
- package/dist/update/update-checker.d.ts.map +1 -1
- package/dist/update/update-checker.js +9 -5
- package/dist/update/update-checker.js.map +1 -1
- package/dist/update/updater.d.ts +20 -2
- package/dist/update/updater.d.ts.map +1 -1
- package/dist/update/updater.js +48 -14
- package/dist/update/updater.js.map +1 -1
- package/dist/visual/visual-tools.d.ts.map +1 -1
- package/dist/visual/visual-tools.js +1 -6
- package/dist/visual/visual-tools.js.map +1 -1
- package/package.json +8 -3
- package/dist/update/update-tools.d.ts +0 -3
- package/dist/update/update-tools.d.ts.map +0 -1
- package/dist/update/update-tools.js +0 -94
- package/dist/update/update-tools.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
The Reticle Enterprise License (the "Enterprise License")
|
|
2
|
+
Copyright (c) 2026 Reticle Labs
|
|
3
|
+
|
|
4
|
+
With regard to the Reticle software (the "Software"):
|
|
5
|
+
|
|
6
|
+
This Software and associated documentation files (the "Software") may only be
|
|
7
|
+
used in production if you (and any entity that you represent) hold a valid Reticle
|
|
8
|
+
Enterprise subscription for the correct number of seats and/or usage as agreed
|
|
9
|
+
with Reticle Labs.
|
|
10
|
+
|
|
11
|
+
Subject to the foregoing, you are free to use, copy, modify, and create
|
|
12
|
+
derivative works of the Software for development, testing, and evaluation
|
|
13
|
+
purposes without a subscription.
|
|
14
|
+
|
|
15
|
+
You may not move, change, disable, or circumvent the license-key functionality
|
|
16
|
+
in the Software, and you may not remove or obscure any functionality in the
|
|
17
|
+
Software that is protected by the license key.
|
|
18
|
+
|
|
19
|
+
You may not alter, remove, or obscure any licensing, copyright, or other
|
|
20
|
+
notices.
|
|
21
|
+
|
|
22
|
+
Any use of the Software in violation of this Enterprise License will
|
|
23
|
+
automatically terminate your rights under this Enterprise License for the
|
|
24
|
+
current and all other versions of the Software.
|
|
25
|
+
|
|
26
|
+
This Enterprise License does not grant you any rights to any trademark, trade
|
|
27
|
+
name, service mark, logo, or product name of Reticle Labs.
|
|
28
|
+
|
|
29
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
30
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
31
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
32
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
33
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
34
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
35
|
+
SOFTWARE.
|
|
36
|
+
|
|
37
|
+
For an Reticle Enterprise subscription: hey@reticle.ai
|
package/README.md
CHANGED
|
@@ -14,4 +14,8 @@ Point your agent at it (e.g. Claude Code `.mcp.json`):
|
|
|
14
14
|
|
|
15
15
|
Tools: `reticle_snapshot`, `reticle_query`, `reticle_inspect`, `reticle_act`, `reticle_act_sequence`, `reticle_observe`, `reticle_wait_for`, `reticle_assert`, `reticle_network`, `reticle_console`, `reticle_animations`, `reticle_baseline_save`/`_list`, `reticle_diff`, `reticle_record_start`/`_stop`, `reticle_explore`, `reticle_sessions`.
|
|
16
16
|
|
|
17
|
-
See the [main README](https://github.com/reticlehq/reticle).
|
|
17
|
+
See the [main README](https://github.com/reticlehq/reticle).
|
|
18
|
+
|
|
19
|
+
## License
|
|
20
|
+
|
|
21
|
+
[FSL-1.1-ALv2](./LICENSE) (source-available: free for any use except reselling Reticle itself; converts to Apache-2.0 after two years). Files under `dist/ee/` are enterprise features covered by the [Reticle Enterprise License](./LICENSE-ENTERPRISE) — free for development, testing, and evaluation; a license key activates them in production.
|
|
@@ -7,7 +7,7 @@ interface BridgeSecurity {
|
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Resolve the bridge's security options from explicit options first, then the environment. Shared by
|
|
10
|
-
* both `start
|
|
10
|
+
* both `start` and `startDaemon` so the token/host/origin contract is enforced identically on
|
|
11
11
|
* every entrypoint — a past divergence let daemon mode silently run with auth disabled.
|
|
12
12
|
*/
|
|
13
13
|
export declare function resolveBridgeSecurity(options: StartOptions): BridgeSecurity;
|
package/dist/bridge-security.js
CHANGED
|
@@ -3,7 +3,7 @@ import { defaultPairingTokenDir, nodePairingTokenDeps, readOrCreatePairingToken,
|
|
|
3
3
|
import { log } from './log.js';
|
|
4
4
|
/**
|
|
5
5
|
* Resolve the bridge's security options from explicit options first, then the environment. Shared by
|
|
6
|
-
* both `start
|
|
6
|
+
* both `start` and `startDaemon` so the token/host/origin contract is enforced identically on
|
|
7
7
|
* every entrypoint — a past divergence let daemon mode silently run with auth disabled.
|
|
8
8
|
*/
|
|
9
9
|
export function resolveBridgeSecurity(options) {
|
package/dist/bridge.d.ts
CHANGED
|
@@ -36,6 +36,13 @@ export declare class Bridge {
|
|
|
36
36
|
attachReplay(handler: ReplayRequestHandler): void;
|
|
37
37
|
/** Register a callback fired when a browser session connects (to push it the replayable flows). */
|
|
38
38
|
attachSessionReady(handler: SessionReadyHandler): void;
|
|
39
|
+
/** Register a callback fired the instant a session is created — used to attach the durable journal. */
|
|
40
|
+
/**
|
|
41
|
+
* Teardown handler fired when a session is removed (tab closed/disconnected). Without it the journal's
|
|
42
|
+
* batched tail (< one flush batch) never reaches disk and the learned ambient map is discarded.
|
|
43
|
+
*/
|
|
44
|
+
attachSessionEnd(handler: (session: Session) => Promise<void>): void;
|
|
45
|
+
attachSessionCreate(handler: (session: Session) => void): void;
|
|
39
46
|
close(): Promise<void>;
|
|
40
47
|
}
|
|
41
48
|
export {};
|
package/dist/bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAelC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI/D,qGAAqG;AACrG,KAAK,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AAC1E,kGAAkG;AAClG,KAAK,mBAAmB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAsBtD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;CACtB;AAwCD;;;;GAIG;AACH,qBAAa,MAAM;;IACjB,QAAQ,CAAC,QAAQ,iBAAwB;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAgBpB,OAAO,EAAE,aAAa;IAgOlC,mFAAmF;IACnF,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAIjD,mGAAmG;IACnG,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAItD,uGAAuG;IACvG;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIpE,mBAAmB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQvB"}
|
package/dist/bridge.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as http from 'node:http';
|
|
2
2
|
import { WebSocketServer } from 'ws';
|
|
3
|
-
import { EventType, HumanControlKind, RETICLE_WS_PATH, ReticleMessageSchema, LOOPBACK_HOST, MessageKind, TRANSPORT_LIMITS, isLoopbackHostname, } from '@reticlehq/core';
|
|
3
|
+
import { EventType, HumanControlKind, RETICLE_WS_PATH, ReticleMessageSchema, LOOPBACK_HOST, MessageKind, ReticleEnv, RETICLE_PROTOCOL_VERSION, TRANSPORT_LIMITS, isLoopbackHostname, } from '@reticlehq/core';
|
|
4
4
|
import { Session, SessionManager } from './session/session.js';
|
|
5
5
|
import { tokensMatch } from './token-auth.js';
|
|
6
6
|
import { log } from './log.js';
|
|
@@ -13,6 +13,7 @@ const WS_CLOSE = {
|
|
|
13
13
|
HELLO_DUPLICATE: [1008, 'hello already received'],
|
|
14
14
|
AUTH_FAILED: [1008, 'authentication failed'],
|
|
15
15
|
SESSION_LIMIT: [1013, 'session limit reached'],
|
|
16
|
+
PROTOCOL_MISMATCH: [1008, 'protocol version mismatch — upgrade @reticlehq/browser'],
|
|
16
17
|
};
|
|
17
18
|
/** The flow name if this event is a panel ▶ replay request, else undefined. Pure boundary narrowing. */
|
|
18
19
|
function replayRequest(event) {
|
|
@@ -31,6 +32,26 @@ function normalizeOrigin(origin) {
|
|
|
31
32
|
return null;
|
|
32
33
|
}
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* When a message fails the strict schema, detect the specific case of a HELLO whose protocolVersion
|
|
37
|
+
* differs from ours — so we can tell the operator "upgrade @reticlehq/browser" instead of dropping the
|
|
38
|
+
* connection into the generic NO_SESSION_CONNECTED path, which misdiagnoses it as a port mismatch.
|
|
39
|
+
* Returns the mismatched version, or null when it isn't a version-mismatched HELLO.
|
|
40
|
+
*/
|
|
41
|
+
function helloProtocolMismatch(text) {
|
|
42
|
+
try {
|
|
43
|
+
const json = JSON.parse(text);
|
|
44
|
+
if (json.kind === MessageKind.HELLO &&
|
|
45
|
+
typeof json.protocolVersion === 'number' &&
|
|
46
|
+
json.protocolVersion !== RETICLE_PROTOCOL_VERSION) {
|
|
47
|
+
return json.protocolVersion;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
/* not JSON — fall through to the generic invalid-message path */
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
34
55
|
/** Normalize ws RawData (string | Buffer | Buffer[] | ArrayBuffer) into a UTF-8 string. */
|
|
35
56
|
function rawToString(raw) {
|
|
36
57
|
if (typeof raw === 'string')
|
|
@@ -61,6 +82,9 @@ export class Bridge {
|
|
|
61
82
|
#pendingConnections = 0;
|
|
62
83
|
#onReplay;
|
|
63
84
|
#onSessionReady;
|
|
85
|
+
#onSessionCreate;
|
|
86
|
+
/** Fired when a session is removed — flushes its journal tail + persists what it learned. */
|
|
87
|
+
#onSessionEnd;
|
|
64
88
|
constructor(options) {
|
|
65
89
|
const host = options.host ?? LOOPBACK_HOST;
|
|
66
90
|
if ((options.token?.length ?? 0) > TRANSPORT_LIMITS.MAX_TOKEN_LENGTH) {
|
|
@@ -75,6 +99,14 @@ export class Bridge {
|
|
|
75
99
|
this.#allowedOrigins = new Set((options.allowedOrigins ?? [])
|
|
76
100
|
.map(normalizeOrigin)
|
|
77
101
|
.filter((origin) => origin !== null));
|
|
102
|
+
// Binding beyond localhost means the browser dials in from a non-loopback Origin. With no
|
|
103
|
+
// allow-list, #originAllowed rejects every such Origin at the WS handshake, so the bridge comes
|
|
104
|
+
// up but accepts nothing — a silent, fail-closed footgun. Refuse to start with a clear message.
|
|
105
|
+
if (!isLoopbackHostname(host) && this.#allowedOrigins.size === 0) {
|
|
106
|
+
throw new Error(`${ReticleEnv.ALLOWED_ORIGINS} must list the app origin(s) when the Reticle bridge binds ` +
|
|
107
|
+
'beyond localhost — otherwise every non-loopback browser is rejected at the WebSocket ' +
|
|
108
|
+
'origin check and no connection can be established.');
|
|
109
|
+
}
|
|
78
110
|
this.#maxMessagesPerSecond =
|
|
79
111
|
options.maxMessagesPerSecond ?? TRANSPORT_LIMITS.MAX_MESSAGES_PER_SECOND;
|
|
80
112
|
this.#maxSessions = options.maxSessions ?? TRANSPORT_LIMITS.MAX_SESSIONS;
|
|
@@ -94,7 +126,7 @@ export class Bridge {
|
|
|
94
126
|
done(allowed, 403, 'Forbidden');
|
|
95
127
|
},
|
|
96
128
|
});
|
|
97
|
-
// In shared-server mode the daemon owns listen
|
|
129
|
+
// In shared-server mode the daemon owns listen; but a WebSocketServer bound to a server that
|
|
98
130
|
// fails to listen (EADDRINUSE) surfaces the error on the WS instance too. Without a listener
|
|
99
131
|
// that is an unhandled 'error' that can crash/hang the process — so absorb it here and reject
|
|
100
132
|
// `ready`, mirroring the standalone branch. The daemon's own listen handler reports the failure.
|
|
@@ -174,8 +206,15 @@ export class Bridge {
|
|
|
174
206
|
socket.close(...WS_CLOSE.RATE_EXCEEDED);
|
|
175
207
|
return;
|
|
176
208
|
}
|
|
177
|
-
const
|
|
209
|
+
const text = rawToString(raw);
|
|
210
|
+
const parsed = this.#parse(text);
|
|
178
211
|
if (parsed === null) {
|
|
212
|
+
const got = helloProtocolMismatch(text);
|
|
213
|
+
if (got !== null) {
|
|
214
|
+
log('protocol_version_mismatch', { got, expected: RETICLE_PROTOCOL_VERSION });
|
|
215
|
+
socket.close(...WS_CLOSE.PROTOCOL_MISMATCH);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
179
218
|
socket.close(...WS_CLOSE.INVALID_MESSAGE);
|
|
180
219
|
return;
|
|
181
220
|
}
|
|
@@ -197,6 +236,7 @@ export class Bridge {
|
|
|
197
236
|
clearTimeout(helloTimer);
|
|
198
237
|
releasePending();
|
|
199
238
|
session = new Session(parsed, socket, this.#clock);
|
|
239
|
+
this.#onSessionCreate?.(session); // attach the durable journal before any events stream in
|
|
200
240
|
const replaced = this.sessions.add(session);
|
|
201
241
|
replaced?.disconnect('session replaced by a newer connection');
|
|
202
242
|
log('session_connected', { sessionId: session.id, url: session.url });
|
|
@@ -212,8 +252,9 @@ export class Bridge {
|
|
|
212
252
|
const replay = replayRequest(parsed.event);
|
|
213
253
|
if (replay !== undefined)
|
|
214
254
|
this.#onReplay?.(session.id, replay);
|
|
255
|
+
// Pass the raw frame's byte length so the buffer doesn't re-serialize every event for accounting.
|
|
215
256
|
else
|
|
216
|
-
session.pushEvent(parsed.event);
|
|
257
|
+
session.pushEvent(parsed.event, Buffer.byteLength(text, 'utf8'));
|
|
217
258
|
}
|
|
218
259
|
else if (parsed.kind === MessageKind.COMMAND_RESULT) {
|
|
219
260
|
session.handleResult(parsed);
|
|
@@ -223,8 +264,12 @@ export class Bridge {
|
|
|
223
264
|
clearTimeout(helloTimer);
|
|
224
265
|
releasePending();
|
|
225
266
|
if (session !== undefined) {
|
|
226
|
-
|
|
227
|
-
|
|
267
|
+
const ended = session;
|
|
268
|
+
if (this.sessions.remove(ended)) {
|
|
269
|
+
log('session_disconnected', { sessionId: ended.id });
|
|
270
|
+
// Best-effort teardown: flush the journal tail + persist ambient learning. Never awaited here
|
|
271
|
+
// (the socket is already closing) and never allowed to reject into the close handler.
|
|
272
|
+
void this.#onSessionEnd?.(ended).catch(() => undefined);
|
|
228
273
|
}
|
|
229
274
|
}
|
|
230
275
|
});
|
|
@@ -268,6 +313,17 @@ export class Bridge {
|
|
|
268
313
|
attachSessionReady(handler) {
|
|
269
314
|
this.#onSessionReady = handler;
|
|
270
315
|
}
|
|
316
|
+
/** Register a callback fired the instant a session is created — used to attach the durable journal. */
|
|
317
|
+
/**
|
|
318
|
+
* Teardown handler fired when a session is removed (tab closed/disconnected). Without it the journal's
|
|
319
|
+
* batched tail (< one flush batch) never reaches disk and the learned ambient map is discarded.
|
|
320
|
+
*/
|
|
321
|
+
attachSessionEnd(handler) {
|
|
322
|
+
this.#onSessionEnd = handler;
|
|
323
|
+
}
|
|
324
|
+
attachSessionCreate(handler) {
|
|
325
|
+
this.#onSessionCreate = handler;
|
|
326
|
+
}
|
|
271
327
|
close() {
|
|
272
328
|
return new Promise((resolve) => {
|
|
273
329
|
for (const client of this.#wss.clients)
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,11 @@ export declare class FakeBrowser {
|
|
|
21
21
|
handlesCapabilities: boolean;
|
|
22
22
|
/** When false, ACT results omit a testid (element has no data-testid → unstable step). */
|
|
23
23
|
actHasTestid: boolean;
|
|
24
|
+
/** Provenance the real browser captures alongside the anchor; undefined = app built without it. */
|
|
25
|
+
actSource: {
|
|
26
|
+
file: string;
|
|
27
|
+
line: number;
|
|
28
|
+
} | undefined;
|
|
24
29
|
/** when false, ACT reports settled:false + settleReason:'timeout' (throttled-tab path). */
|
|
25
30
|
actSettled: boolean;
|
|
26
31
|
/** When false, QUERY by testid returns no match (testid not in current DOM at replay). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.test-harness.d.ts","sourceRoot":"","sources":["../src/bridge.test-harness.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAO1C,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExD,wGAAwG;AACxG,eAAO,MAAM,iBAAiB;;;;;;;;CAK7B,CAAC;AAEF,4FAA4F;AAC5F,qBAAa,WAAW;;
|
|
1
|
+
{"version":3,"file":"bridge.test-harness.d.ts","sourceRoot":"","sources":["../src/bridge.test-harness.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAO1C,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExD,wGAAwG;AACxG,eAAO,MAAM,iBAAiB;;;;;;;;CAK7B,CAAC;AAEF,4FAA4F;AAC5F,qBAAa,WAAW;;IAkBpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAjBlC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAe;IACxD,qFAAqF;IACrF,mBAAmB,UAAQ;IAC3B,0FAA0F;IAC1F,YAAY,UAAQ;IACpB,mGAAmG;IACnG,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAa;IAClE,2FAA2F;IAC3F,UAAU,UAAQ;IAClB,0FAA0F;IAC1F,aAAa,UAAQ;IACrB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAM;gBAGxE,IAAI,EAAE,MAAM,EACK,SAAS,EAAE,MAAM,EACjB,eAAe,UAAQ;IAQ1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAOrE,KAAK,IAAI,IAAI;CA0Fd;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,OAAO,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9E;AAED,eAAO,MAAM,QAAQ,GACnB,MAAM,QAAQ,EACd,MAAM,MAAM,EACZ,OAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,KACjC,OAAO,CAAC,OAAO,CAIjB,CAAC;AAEF,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAcjD"}
|
|
@@ -24,6 +24,8 @@ export class FakeBrowser {
|
|
|
24
24
|
handlesCapabilities = true;
|
|
25
25
|
/** When false, ACT results omit a testid (element has no data-testid → unstable step). */
|
|
26
26
|
actHasTestid = true;
|
|
27
|
+
/** Provenance the real browser captures alongside the anchor; undefined = app built without it. */
|
|
28
|
+
actSource = undefined;
|
|
27
29
|
/** when false, ACT reports settled:false + settleReason:'timeout' (throttled-tab path). */
|
|
28
30
|
actSettled = true;
|
|
29
31
|
/** When false, QUERY by testid returns no match (testid not in current DOM at replay). */
|
|
@@ -84,6 +86,7 @@ export class FakeBrowser {
|
|
|
84
86
|
settleReason: this.actSettled ? null : 'timeout',
|
|
85
87
|
effect: { dispatched: true },
|
|
86
88
|
...(this.actHasTestid ? { testid: 'pay-btn' } : {}),
|
|
89
|
+
...(this.actSource === undefined ? {} : { source: this.actSource }),
|
|
87
90
|
};
|
|
88
91
|
}
|
|
89
92
|
else if (name === ReticleCommand.ACT_SEQUENCE) {
|
|
@@ -94,6 +97,7 @@ export class FakeBrowser {
|
|
|
94
97
|
ref: s['ref'],
|
|
95
98
|
action: s['action'],
|
|
96
99
|
...(this.actHasTestid ? { testid: 'pay-btn' } : {}),
|
|
100
|
+
...(this.actSource === undefined ? {} : { source: this.actSource }),
|
|
97
101
|
})),
|
|
98
102
|
};
|
|
99
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.test-harness.js","sourceRoot":"","sources":["../src/bridge.test-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,GAEZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAiB,MAAM,kBAAkB,CAAC;AAExD,wGAAwG;AACxG,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,kBAAkB,CAAC;IAC7B,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACnD,CAAC;AAEF,4FAA4F;AAC5F,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"bridge.test-harness.js","sourceRoot":"","sources":["../src/bridge.test-harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type FlowStep } from '@reticlehq/core';
|
|
3
|
+
import type { FileSystemPort } from '../project/fs-port.js';
|
|
4
|
+
/**
|
|
5
|
+
* Bug capsules. When an assertion fails, the evidence that explains it is in hand exactly once —
|
|
6
|
+
* at the moment of the failure. A capsule persists that moment as a *replayable artifact*: the minimal
|
|
7
|
+
* failing steps, the consequence that was supposed to hold, and the divergence that was observed instead.
|
|
8
|
+
*
|
|
9
|
+
* This is deliberately fail-to-pass shaped (SWE-bench style): a capsule reproduces a bug NOW and, once the
|
|
10
|
+
* fix lands, it is exactly a regression flow. Capsules are ordinary flow files plus evidence, so they
|
|
11
|
+
* replay through the existing machinery rather than needing a second runner.
|
|
12
|
+
*/
|
|
13
|
+
export declare const CapsuleSchema: z.ZodObject<{
|
|
14
|
+
version: z.ZodLiteral<1>;
|
|
15
|
+
id: z.ZodString;
|
|
16
|
+
/** The flow the failure happened in, when it came from one (a bare assert has no flow). */
|
|
17
|
+
flow: z.ZodOptional<z.ZodString>;
|
|
18
|
+
createdAt: z.ZodNumber;
|
|
19
|
+
/** Why it was captured — a failed assertion, a crawl anomaly, a human review pin. */
|
|
20
|
+
origin: z.ZodString;
|
|
21
|
+
/** The consequence that was supposed to hold. */
|
|
22
|
+
expected: z.ZodString;
|
|
23
|
+
/** What was observed instead — the first-divergence sentence. */
|
|
24
|
+
observed: z.ZodString;
|
|
25
|
+
/** Minimal steps to reproduce (prefix-trimmed). */
|
|
26
|
+
steps: z.ZodArray<z.ZodType<FlowStep, z.ZodTypeDef, FlowStep>, "many">;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
version: 1;
|
|
29
|
+
id: string;
|
|
30
|
+
expected: string;
|
|
31
|
+
origin: string;
|
|
32
|
+
steps: FlowStep[];
|
|
33
|
+
observed: string;
|
|
34
|
+
createdAt: number;
|
|
35
|
+
flow?: string | undefined;
|
|
36
|
+
}, {
|
|
37
|
+
version: 1;
|
|
38
|
+
id: string;
|
|
39
|
+
expected: string;
|
|
40
|
+
origin: string;
|
|
41
|
+
steps: FlowStep[];
|
|
42
|
+
observed: string;
|
|
43
|
+
createdAt: number;
|
|
44
|
+
flow?: string | undefined;
|
|
45
|
+
}>;
|
|
46
|
+
export type Capsule = z.infer<typeof CapsuleSchema>;
|
|
47
|
+
export declare const CAPSULE_VERSION = 1;
|
|
48
|
+
/** Capsule ids are filenames — refuse anything that could escape the capsules directory. */
|
|
49
|
+
export declare function isValidCapsuleId(id: string): boolean;
|
|
50
|
+
export declare class CapsuleStore {
|
|
51
|
+
#private;
|
|
52
|
+
constructor(fs: FileSystemPort, root: string);
|
|
53
|
+
/** Persist a capsule. Best-effort by design: capturing evidence must never fail the run that found it. */
|
|
54
|
+
save(capsule: Capsule): Promise<boolean>;
|
|
55
|
+
/** Capsule ids on disk, newest-first by id (ids are time-prefixed). Never throws. */
|
|
56
|
+
list(): Promise<string[]>;
|
|
57
|
+
/** Read one capsule; undefined when missing or malformed (never throws). */
|
|
58
|
+
read(id: string): Promise<Capsule | undefined>;
|
|
59
|
+
/** Every readable capsule, newest-first — what `reticle capsules` prints. */
|
|
60
|
+
all(): Promise<Capsule[]>;
|
|
61
|
+
}
|
|
62
|
+
/** Deterministic, path-safe capsule id: time-ordered so `list` sorts newest-first for free. */
|
|
63
|
+
export declare function capsuleId(now: number, label: string): string;
|
|
64
|
+
/** The minimal reproduction: the steps up to and including the one that failed (prefix trim). */
|
|
65
|
+
export declare function minimalSteps(steps: readonly FlowStep[], failedIndex: number): FlowStep[];
|
|
66
|
+
//# sourceMappingURL=capsule-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capsule-store.d.ts","sourceRoot":"","sources":["../../src/capsule/capsule-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;;;;;;;GAQG;AAEH,eAAO,MAAM,aAAa;;;IAGxB,2FAA2F;;;IAG3F,qFAAqF;;IAErF,iDAAiD;;IAEjD,iEAAiE;;IAEjE,mDAAmD;;;;;;;;;;;;;;;;;;;;EAEnD,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,qBAAa,YAAY;;gBAIX,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;IAS5C,0GAA0G;IACpG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAa9C,qFAAqF;IAC/E,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAc/B,4EAA4E;IACtE,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAWpD,6EAA6E;IACvE,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAQhC;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGxF"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { FlowStepSchema } from '@reticlehq/core';
|
|
4
|
+
import { reticleDirPaths } from '../project/reticle-dir.js';
|
|
5
|
+
/**
|
|
6
|
+
* Bug capsules. When an assertion fails, the evidence that explains it is in hand exactly once —
|
|
7
|
+
* at the moment of the failure. A capsule persists that moment as a *replayable artifact*: the minimal
|
|
8
|
+
* failing steps, the consequence that was supposed to hold, and the divergence that was observed instead.
|
|
9
|
+
*
|
|
10
|
+
* This is deliberately fail-to-pass shaped (SWE-bench style): a capsule reproduces a bug NOW and, once the
|
|
11
|
+
* fix lands, it is exactly a regression flow. Capsules are ordinary flow files plus evidence, so they
|
|
12
|
+
* replay through the existing machinery rather than needing a second runner.
|
|
13
|
+
*/
|
|
14
|
+
export const CapsuleSchema = z.object({
|
|
15
|
+
version: z.literal(1),
|
|
16
|
+
id: z.string(),
|
|
17
|
+
/** The flow the failure happened in, when it came from one (a bare assert has no flow). */
|
|
18
|
+
flow: z.string().optional(),
|
|
19
|
+
createdAt: z.number(),
|
|
20
|
+
/** Why it was captured — a failed assertion, a crawl anomaly, a human review pin. */
|
|
21
|
+
origin: z.string(),
|
|
22
|
+
/** The consequence that was supposed to hold. */
|
|
23
|
+
expected: z.string(),
|
|
24
|
+
/** What was observed instead — the first-divergence sentence. */
|
|
25
|
+
observed: z.string(),
|
|
26
|
+
/** Minimal steps to reproduce (prefix-trimmed). */
|
|
27
|
+
steps: z.array(FlowStepSchema),
|
|
28
|
+
});
|
|
29
|
+
export const CAPSULE_VERSION = 1;
|
|
30
|
+
/** Capsule ids are filenames — refuse anything that could escape the capsules directory. */
|
|
31
|
+
export function isValidCapsuleId(id) {
|
|
32
|
+
return /^[a-zA-Z0-9._-]+$/.test(id) && id !== '.' && id !== '..' && id.length <= 128;
|
|
33
|
+
}
|
|
34
|
+
export class CapsuleStore {
|
|
35
|
+
#fs;
|
|
36
|
+
#dir;
|
|
37
|
+
constructor(fs, root) {
|
|
38
|
+
this.#fs = fs;
|
|
39
|
+
this.#dir = reticleDirPaths(root).capsules;
|
|
40
|
+
}
|
|
41
|
+
#pathFor(id) {
|
|
42
|
+
return join(this.#dir, `${id}.json`);
|
|
43
|
+
}
|
|
44
|
+
/** Persist a capsule. Best-effort by design: capturing evidence must never fail the run that found it. */
|
|
45
|
+
async save(capsule) {
|
|
46
|
+
if (!isValidCapsuleId(capsule.id))
|
|
47
|
+
return false;
|
|
48
|
+
try {
|
|
49
|
+
await this.#fs.mkdir(this.#dir);
|
|
50
|
+
const tmp = `${this.#pathFor(capsule.id)}.tmp`;
|
|
51
|
+
await this.#fs.writeFile(tmp, `${JSON.stringify(capsule, null, 2)}\n`);
|
|
52
|
+
await this.#fs.rename(tmp, this.#pathFor(capsule.id));
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Capsule ids on disk, newest-first by id (ids are time-prefixed). Never throws. */
|
|
60
|
+
async list() {
|
|
61
|
+
try {
|
|
62
|
+
if (!(await this.#fs.exists(this.#dir)))
|
|
63
|
+
return [];
|
|
64
|
+
const entries = await this.#fs.readdir(this.#dir);
|
|
65
|
+
return entries
|
|
66
|
+
.filter((e) => e.endsWith('.json'))
|
|
67
|
+
.map((e) => e.slice(0, -'.json'.length))
|
|
68
|
+
.sort()
|
|
69
|
+
.reverse();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Read one capsule; undefined when missing or malformed (never throws). */
|
|
76
|
+
async read(id) {
|
|
77
|
+
if (!isValidCapsuleId(id))
|
|
78
|
+
return undefined;
|
|
79
|
+
try {
|
|
80
|
+
const parsed = JSON.parse(await this.#fs.readFile(this.#pathFor(id)));
|
|
81
|
+
const result = CapsuleSchema.safeParse(parsed);
|
|
82
|
+
return result.success ? result.data : undefined;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Every readable capsule, newest-first — what `reticle capsules` prints. */
|
|
89
|
+
async all() {
|
|
90
|
+
const out = [];
|
|
91
|
+
for (const id of await this.list()) {
|
|
92
|
+
const capsule = await this.read(id);
|
|
93
|
+
if (capsule !== undefined)
|
|
94
|
+
out.push(capsule);
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Deterministic, path-safe capsule id: time-ordered so `list` sorts newest-first for free. */
|
|
100
|
+
export function capsuleId(now, label) {
|
|
101
|
+
const safe = label.replace(/[^a-zA-Z0-9._-]/g, '-').slice(0, 40);
|
|
102
|
+
return `${String(now)}-${safe.length > 0 ? safe : 'capsule'}`;
|
|
103
|
+
}
|
|
104
|
+
/** The minimal reproduction: the steps up to and including the one that failed (prefix trim). */
|
|
105
|
+
export function minimalSteps(steps, failedIndex) {
|
|
106
|
+
if (failedIndex < 0)
|
|
107
|
+
return [...steps];
|
|
108
|
+
return steps.slice(0, failedIndex + 1);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=capsule-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capsule-store.js","sourceRoot":"","sources":["../../src/capsule/capsule-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ReticleEvent } from '@reticlehq/core';
|
|
2
|
+
import { type CausalSummary } from './causal-summary.js';
|
|
3
|
+
import { type Divergence, type ExpectedLink } from './divergence.js';
|
|
4
|
+
/**
|
|
5
|
+
* The divergence capsule (Tier 2) — the whole packet on a red: the attributed causal summary, the
|
|
6
|
+
* FIRST divergence (where declared ≠ observed), and the BLAST RADIUS (truth that changed OUTSIDE the
|
|
7
|
+
* declared consequence — an act that also fired an undeclared signal or mutated an unexpected store).
|
|
8
|
+
* Blast radius is how a "green" that did extra damage still gets caught. Pure composition of the parts;
|
|
9
|
+
* the paste-ready repair packet and wiring onto red results build on this.
|
|
10
|
+
*/
|
|
11
|
+
export interface DivergenceCapsule {
|
|
12
|
+
summary: CausalSummary;
|
|
13
|
+
firstDivergence: Divergence | null;
|
|
14
|
+
/** Observed consequences not in the declared set — unexpected side effects. */
|
|
15
|
+
blastRadius: string[];
|
|
16
|
+
}
|
|
17
|
+
/** Compose the full capsule from the declared chain and the observed (attributed) event window. */
|
|
18
|
+
export declare function buildDivergenceCapsule(expected: readonly ExpectedLink[], observed: readonly ReticleEvent[]): DivergenceCapsule;
|
|
19
|
+
//# sourceMappingURL=capsule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capsule.d.ts","sourceRoot":"","sources":["../../src/capsule/capsule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAmB,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEtF;;;;;;GAMG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,+EAA+E;IAC/E,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AA8BD,mGAAmG;AACnG,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAChC,iBAAiB,CAMnB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { EventType } from '@reticlehq/core';
|
|
2
|
+
import { causalSummary } from './causal-summary.js';
|
|
3
|
+
import { firstDivergence } from './divergence.js';
|
|
4
|
+
/** Observed signal/state changes the flow never declared — the side effects. */
|
|
5
|
+
function blastRadius(expected, observed) {
|
|
6
|
+
const declaredSignals = new Set(expected
|
|
7
|
+
.filter((l) => l.kind === 'signal')
|
|
8
|
+
.map((l) => l.name));
|
|
9
|
+
const declaredStates = new Set(expected
|
|
10
|
+
.filter((l) => l.kind === 'state')
|
|
11
|
+
.map((l) => l.name));
|
|
12
|
+
const radius = [];
|
|
13
|
+
const add = (value) => {
|
|
14
|
+
if (!radius.includes(value))
|
|
15
|
+
radius.push(value);
|
|
16
|
+
};
|
|
17
|
+
for (const event of observed) {
|
|
18
|
+
const name = event.data['name'];
|
|
19
|
+
if (typeof name !== 'string')
|
|
20
|
+
continue;
|
|
21
|
+
if (event.type === EventType.SIGNAL && !declaredSignals.has(name))
|
|
22
|
+
add(`signal ${name}`);
|
|
23
|
+
if (event.type === EventType.STATE_CHANGE && !declaredStates.has(name))
|
|
24
|
+
add(`state ${name}`);
|
|
25
|
+
}
|
|
26
|
+
return radius;
|
|
27
|
+
}
|
|
28
|
+
/** Compose the full capsule from the declared chain and the observed (attributed) event window. */
|
|
29
|
+
export function buildDivergenceCapsule(expected, observed) {
|
|
30
|
+
return {
|
|
31
|
+
summary: causalSummary(observed),
|
|
32
|
+
firstDivergence: firstDivergence(expected, observed),
|
|
33
|
+
blastRadius: blastRadius(expected, observed),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=capsule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capsule.js","sourceRoot":"","sources":["../../src/capsule/capsule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAsC,MAAM,iBAAiB,CAAC;AAiBtF,gFAAgF;AAChF,SAAS,WAAW,CAClB,QAAiC,EACjC,QAAiC;IAEjC,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,QAAQ;SACL,MAAM,CAAC,CAAC,CAAC,EAAkD,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;SAClF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACtB,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,QAAQ;SACL,MAAM,CAAC,CAAC,CAAC,EAAiD,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;SAChF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACtB,CAAC;IACF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,KAAa,EAAQ,EAAE;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,sBAAsB,CACpC,QAAiC,EACjC,QAAiC;IAEjC,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC;QAChC,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpD,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|