@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 @@
|
|
|
1
|
+
{"version":3,"file":"flake-store.js","sourceRoot":"","sources":["../../src/flows/flake-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAEpG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACZ,GAAG,CAAiB;IACpB,KAAK,CAAS;IAEvB,YAAY,EAAkB,EAAE,IAAY;QAC1C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC1C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAmB;QAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAC5F,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,MAAM,CAAC;QAChC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,MAAe;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,uFAAuF;IACvF,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Flake ledger. Trust in the red is the product; one unexplained flake a week kills it. A flow that
|
|
4
|
+
* fails intermittently at UNCHANGED code is flaky, not a real regression — it must be quarantined
|
|
5
|
+
* (excluded from gate-blocking) and surfaced for repair, never silently blocking. The caller accrues an
|
|
6
|
+
* outcome ONLY for unchanged-code replays (a fail after a code change is a legitimate red, not flake).
|
|
7
|
+
*/
|
|
8
|
+
export declare const FlakeRecordSchema: z.ZodObject<{
|
|
9
|
+
runs: z.ZodNumber;
|
|
10
|
+
fails: z.ZodNumber;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
fails: number;
|
|
13
|
+
runs: number;
|
|
14
|
+
}, {
|
|
15
|
+
fails: number;
|
|
16
|
+
runs: number;
|
|
17
|
+
}>;
|
|
18
|
+
export type FlakeRecord = z.infer<typeof FlakeRecordSchema>;
|
|
19
|
+
/** Per-flow map (flow name → record). */
|
|
20
|
+
export type FlakeLedger = Record<string, FlakeRecord>;
|
|
21
|
+
export declare const FlakeFileSchema: z.ZodObject<{
|
|
22
|
+
version: z.ZodLiteral<1>;
|
|
23
|
+
flows: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
24
|
+
runs: z.ZodNumber;
|
|
25
|
+
fails: z.ZodNumber;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
fails: number;
|
|
28
|
+
runs: number;
|
|
29
|
+
}, {
|
|
30
|
+
fails: number;
|
|
31
|
+
runs: number;
|
|
32
|
+
}>>;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
version: 1;
|
|
35
|
+
flows: Record<string, {
|
|
36
|
+
fails: number;
|
|
37
|
+
runs: number;
|
|
38
|
+
}>;
|
|
39
|
+
}, {
|
|
40
|
+
version: 1;
|
|
41
|
+
flows: Record<string, {
|
|
42
|
+
fails: number;
|
|
43
|
+
runs: number;
|
|
44
|
+
}>;
|
|
45
|
+
}>;
|
|
46
|
+
/** Minimum unchanged-code replays before flakiness can be judged (too few = noise). */
|
|
47
|
+
export declare const DEFAULT_MIN_FLAKE_RUNS = 5;
|
|
48
|
+
export declare function emptyRecord(): FlakeRecord;
|
|
49
|
+
/** Accrue one unchanged-code replay outcome. */
|
|
50
|
+
export declare function recordOutcome(record: FlakeRecord, passed: boolean): FlakeRecord;
|
|
51
|
+
/**
|
|
52
|
+
* Flaky = enough unchanged-code runs, and it has BOTH passed and failed (intermittent). A flow that
|
|
53
|
+
* always fails is a real red; one that always passes is healthy; only the mix is flake.
|
|
54
|
+
*/
|
|
55
|
+
export declare function isFlaky(record: FlakeRecord, minRuns?: number): boolean;
|
|
56
|
+
/** Observed intermittent-failure rate (0 when too few runs to judge). */
|
|
57
|
+
export declare function flakeRate(record: FlakeRecord): number;
|
|
58
|
+
//# sourceMappingURL=flake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flake.d.ts","sourceRoot":"","sources":["../../src/flows/flake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,yCAAyC;AACzC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;EAG1B,CAAC;AAEH,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,wBAAgB,WAAW,IAAI,WAAW,CAEzC;AAED,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAG,WAAW,CAE/E;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,MAA+B,GAAG,OAAO,CAE9F;AAED,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Flake ledger. Trust in the red is the product; one unexplained flake a week kills it. A flow that
|
|
4
|
+
* fails intermittently at UNCHANGED code is flaky, not a real regression — it must be quarantined
|
|
5
|
+
* (excluded from gate-blocking) and surfaced for repair, never silently blocking. The caller accrues an
|
|
6
|
+
* outcome ONLY for unchanged-code replays (a fail after a code change is a legitimate red, not flake).
|
|
7
|
+
*/
|
|
8
|
+
export const FlakeRecordSchema = z.object({
|
|
9
|
+
runs: z.number().int().min(0),
|
|
10
|
+
fails: z.number().int().min(0),
|
|
11
|
+
});
|
|
12
|
+
export const FlakeFileSchema = z.object({
|
|
13
|
+
version: z.literal(1),
|
|
14
|
+
flows: z.record(FlakeRecordSchema),
|
|
15
|
+
});
|
|
16
|
+
/** Minimum unchanged-code replays before flakiness can be judged (too few = noise). */
|
|
17
|
+
export const DEFAULT_MIN_FLAKE_RUNS = 5;
|
|
18
|
+
export function emptyRecord() {
|
|
19
|
+
return { runs: 0, fails: 0 };
|
|
20
|
+
}
|
|
21
|
+
/** Accrue one unchanged-code replay outcome. */
|
|
22
|
+
export function recordOutcome(record, passed) {
|
|
23
|
+
return { runs: record.runs + 1, fails: record.fails + (passed ? 0 : 1) };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Flaky = enough unchanged-code runs, and it has BOTH passed and failed (intermittent). A flow that
|
|
27
|
+
* always fails is a real red; one that always passes is healthy; only the mix is flake.
|
|
28
|
+
*/
|
|
29
|
+
export function isFlaky(record, minRuns = DEFAULT_MIN_FLAKE_RUNS) {
|
|
30
|
+
return record.runs >= minRuns && record.fails > 0 && record.fails < record.runs;
|
|
31
|
+
}
|
|
32
|
+
/** Observed intermittent-failure rate (0 when too few runs to judge). */
|
|
33
|
+
export function flakeRate(record) {
|
|
34
|
+
return record.runs === 0 ? 0 : record.fails / record.runs;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=flake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flake.js","sourceRoot":"","sources":["../../src/flows/flake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;CACnC,CAAC,CAAC;AAEH,uFAAuF;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,MAAe;IAChE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,MAAmB,EAAE,UAAkB,sBAAsB;IACnF,OAAO,MAAM,CAAC,IAAI,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;AAClF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5D,CAAC"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Classify whether a flow asserts an observable CONSEQUENCE or is "assertion-free" / presence-only.
|
|
3
3
|
*
|
|
4
4
|
* Why this exists (grounded in real testing behavior):
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
5
|
+
* - Martin Fowler, *Assertion-Free Testing*: teams hit 100% coverage with tests that "weren't any
|
|
6
|
+
* assertions" — green, but verifying nothing.
|
|
7
|
+
* - Kent C. Dodds, *Make Your Test Fail*: a test that doesn't fail when you break the code gives
|
|
8
|
+
* false security.
|
|
9
|
+
* - Self-healing vendors (mabl, qate.ai) admit a locator healed to the WRONG element makes a test
|
|
10
|
+
* pass green while a real regression ships — but only if the test merely checks presence.
|
|
11
|
+
* - AI agents agree with human pass/fail only ~68% of the time (arXiv 2510.02418), so the flow
|
|
12
|
+
* itself must carry a real oracle, not rely on the agent eyeballing success.
|
|
13
13
|
*
|
|
14
14
|
* For a flow, an FlowExpect can assert a `signal` (app emitted an event), a `net` call, or just an
|
|
15
15
|
* `element` presence. signal/net are OBSERVABLE CONSEQUENCES — they can't be satisfied by a wrong
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-classify.d.ts","sourceRoot":"","sources":["../../src/flows/flow-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"flow-classify.d.ts","sourceRoot":"","sources":["../../src/flows/flow-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,iBAAiB,CAAC;AAE1D,eAAO,MAAM,kBAAkB;IAC7B,6FAA6F;;IAE7F,kFAAkF;;IAElF,8FAA8F;;CAEtF,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE9F,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,kBAAkB,CAAC;IAC1B,kFAAkF;IAClF,uBAAuB,EAAE,OAAO,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuBD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,2BAA2B,CA0ClF"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Classify whether a flow asserts an observable CONSEQUENCE or is "assertion-free" / presence-only.
|
|
3
3
|
*
|
|
4
4
|
* Why this exists (grounded in real testing behavior):
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
5
|
+
* - Martin Fowler, *Assertion-Free Testing*: teams hit 100% coverage with tests that "weren't any
|
|
6
|
+
* assertions" — green, but verifying nothing.
|
|
7
|
+
* - Kent C. Dodds, *Make Your Test Fail*: a test that doesn't fail when you break the code gives
|
|
8
|
+
* false security.
|
|
9
|
+
* - Self-healing vendors (mabl, qate.ai) admit a locator healed to the WRONG element makes a test
|
|
10
|
+
* pass green while a real regression ships — but only if the test merely checks presence.
|
|
11
|
+
* - AI agents agree with human pass/fail only ~68% of the time (arXiv 2510.02418), so the flow
|
|
12
|
+
* itself must carry a real oracle, not rely on the agent eyeballing success.
|
|
13
13
|
*
|
|
14
14
|
* For a flow, an FlowExpect can assert a `signal` (app emitted an event), a `net` call, or just an
|
|
15
15
|
* `element` presence. signal/net are OBSERVABLE CONSEQUENCES — they can't be satisfied by a wrong
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*
|
|
19
19
|
* Pure: no IO, no clock.
|
|
20
20
|
*/
|
|
21
|
+
import { flowExpectHasConsequence, flowExpectIsPresenceOnly } from '@reticlehq/core';
|
|
21
22
|
export const FlowAssertionGrade = {
|
|
22
23
|
/** At least one step (or the success end-condition) asserts a signal/network consequence. */
|
|
23
24
|
ASSERTED: 'asserted',
|
|
@@ -29,18 +30,9 @@ export const FlowAssertionGrade = {
|
|
|
29
30
|
const ASSERTION_FREE_WARNING = 'This flow performs actions but asserts no observable consequence — it will pass even if the feature is broken. Add a consequence assertion with reticle_annotate (assert-signal / assert-net) or a success-state.';
|
|
30
31
|
const PRESENCE_ONLY_WARNING = 'This flow only checks element presence, not an observable consequence (signal/network). A locator healed to the wrong element can still pass it. Add a consequence assertion (assert-signal / assert-net / success-state).';
|
|
31
32
|
const INTENT_WITHOUT_OUTCOME_WARNING = 'This flow declares a business intent but asserts no observable outcome (signal/network) — it claims to verify a goal it cannot actually check. Add a success-state consequence so the flow fails when the goal stops being met.';
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
/** element-only (no signal/net/state) → presence check, weak. */
|
|
37
|
-
function expectIsWeak(e) {
|
|
38
|
-
return (e !== undefined &&
|
|
39
|
-
e.element !== undefined &&
|
|
40
|
-
e.signal === undefined &&
|
|
41
|
-
e.net === undefined &&
|
|
42
|
-
e.state === undefined);
|
|
43
|
-
}
|
|
33
|
+
// Consequence vs presence-only classification lives in @reticlehq/core (one source for all graders).
|
|
34
|
+
const expectIsConsequence = flowExpectHasConsequence;
|
|
35
|
+
const expectIsWeak = flowExpectIsPresenceOnly;
|
|
44
36
|
/** Walk steps + act_sequence sub-steps so an expect on either level is counted. */
|
|
45
37
|
function flattenSteps(steps) {
|
|
46
38
|
const out = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-classify.js","sourceRoot":"","sources":["../../src/flows/flow-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"flow-classify.js","sourceRoot":"","sources":["../../src/flows/flow-classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,4 +24,10 @@ export declare function startPathMismatchHint(flow: FlowFile, session: {
|
|
|
24
24
|
* both produce identical FlowReplayResults. Every exit path records a run to project.json.
|
|
25
25
|
*/
|
|
26
26
|
export declare function replayNamedFlow(deps: ToolDeps, args: Record<string, unknown>): Promise<FlowReplayResult>;
|
|
27
|
+
/**
|
|
28
|
+
* The connecting session's project, or undefined when no browser is attached. Flow tools use it to
|
|
29
|
+
* scope storage to the current app on a shared daemon; resolving must NOT throw here (list/load are
|
|
30
|
+
* documented to work headless), so a missing/unknown session degrades to the global/legacy store.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sessionProjectId(deps: ToolDeps, sessionId: string | undefined): string | undefined;
|
|
27
33
|
//# sourceMappingURL=flow-replay-run.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-replay-run.d.ts","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EAKb,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-replay-run.d.ts","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EAKb,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EAAE,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,QAAQ,CAAA;CAAE,GAAG,SAAS,CAQxE;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAW5D;AA+BD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE;IAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAAA;CAAE,GACvD,MAAM,GAAG,SAAS,CASpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA+F3B;AA2BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,GAAG,SAAS,CAMpB"}
|
|
@@ -4,6 +4,11 @@ import { replayFlow } from './flow-replay.js';
|
|
|
4
4
|
import { assertSuccess, dynamicTestids, successLabel, SUCCESS_STEP_TOOL } from './flow-success.js';
|
|
5
5
|
import { buildDecision } from './decision.js';
|
|
6
6
|
import { waitForPredicate } from '../events/predicate.js';
|
|
7
|
+
import { computeSegments } from '../journal/rollups.js';
|
|
8
|
+
import { AssertionTiersStore } from './assertion-tiers-store.js';
|
|
9
|
+
import { toFlowSources } from './flow-sources.js';
|
|
10
|
+
import { reportAndAccumulate } from '../journal/deviation-service.js';
|
|
11
|
+
import { EnvelopeStore } from '../journal/envelope-store.js';
|
|
7
12
|
export function latestRecordedFlow(events) {
|
|
8
13
|
for (let i = events.length - 1; i >= 0; i--) {
|
|
9
14
|
const event = events[i];
|
|
@@ -125,6 +130,18 @@ export async function replayNamedFlow(deps, args) {
|
|
|
125
130
|
const allOk = steps.every((s) => s.ok);
|
|
126
131
|
const status = driftSteps > 0 ? ReplayStatus.DRIFT : allOk ? ReplayStatus.OK : ReplayStatus.ERROR;
|
|
127
132
|
await recordReplayRun(deps, name, status, driftSteps, deps.now() - startedAt);
|
|
133
|
+
// Anti-reward-hacking baseline: record what this flow asserted ONLY when it passed clean. A
|
|
134
|
+
// failing run must never become the baseline a later weakening is measured against.
|
|
135
|
+
if (status === ReplayStatus.OK) {
|
|
136
|
+
await new AssertionTiersStore(deps.fs, deps.reticleRoot).recordPassing(name, loaded.value.steps.map((s, i) => ({
|
|
137
|
+
step: i,
|
|
138
|
+
...(s.expect === undefined ? {} : { expect: s.expect }),
|
|
139
|
+
})),
|
|
140
|
+
// Record what this flow COVERS so a later deletion can be scoped to the files that changed.
|
|
141
|
+
toFlowSources([{ name, steps: loaded.value.steps }])[0]?.sources ?? []);
|
|
142
|
+
}
|
|
143
|
+
// Push-default: the deviation report over this drive's segments, learned across runs. Best-effort.
|
|
144
|
+
const deviation = await computeReplayDeviation(deps, session, replayFloor);
|
|
128
145
|
const failed = steps.find((step) => !step.ok && step.drift === undefined);
|
|
129
146
|
if (failed !== undefined) {
|
|
130
147
|
const errored = {
|
|
@@ -135,14 +152,33 @@ export async function replayNamedFlow(deps, args) {
|
|
|
135
152
|
};
|
|
136
153
|
errored.decision = buildDecision(errored, loaded.value);
|
|
137
154
|
applyStartPathHint(errored, startPathHint);
|
|
155
|
+
if (deviation !== undefined)
|
|
156
|
+
errored.deviation = deviation;
|
|
138
157
|
return errored;
|
|
139
158
|
}
|
|
140
159
|
const result = { name, status, steps };
|
|
141
160
|
if (status !== ReplayStatus.OK)
|
|
142
161
|
result.decision = buildDecision(result, loaded.value);
|
|
143
162
|
applyStartPathHint(result, startPathHint);
|
|
163
|
+
if (deviation !== undefined)
|
|
164
|
+
result.deviation = deviation;
|
|
144
165
|
return result;
|
|
145
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* The deviation report over a replay's route segments — compared against the learned envelope, which is
|
|
169
|
+
* then updated. Best-effort: any failure (disk, empty window) yields undefined, never breaking the replay.
|
|
170
|
+
*/
|
|
171
|
+
async function computeReplayDeviation(deps, session, floor) {
|
|
172
|
+
try {
|
|
173
|
+
const segments = computeSegments(session.eventsSince(floor));
|
|
174
|
+
if (segments.length === 0)
|
|
175
|
+
return undefined;
|
|
176
|
+
return await reportAndAccumulate(new EnvelopeStore(deps.fs, deps.reticleRoot), segments);
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
146
182
|
/** Fold a start-page-mismatch hint onto a non-passing replay's decision (the actionable next move). */
|
|
147
183
|
function applyStartPathHint(result, hint) {
|
|
148
184
|
if (hint === undefined || result.decision === undefined)
|
|
@@ -150,4 +186,17 @@ function applyStartPathHint(result, hint) {
|
|
|
150
186
|
result.decision.suggestedFix = hint;
|
|
151
187
|
result.decision.nextAction = hint;
|
|
152
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* The connecting session's project, or undefined when no browser is attached. Flow tools use it to
|
|
191
|
+
* scope storage to the current app on a shared daemon; resolving must NOT throw here (list/load are
|
|
192
|
+
* documented to work headless), so a missing/unknown session degrades to the global/legacy store.
|
|
193
|
+
*/
|
|
194
|
+
export function sessionProjectId(deps, sessionId) {
|
|
195
|
+
try {
|
|
196
|
+
return deps.sessions.resolve(sessionId).projectId;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
153
202
|
//# sourceMappingURL=flow-replay-run.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-replay-run.js","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,SAAS,GAKV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-replay-run.js","sourceRoot":"","sources":["../../src/flows/flow-replay-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,15 @@ import type { EvalResult, Predicate } from '../events/predicate.js';
|
|
|
7
7
|
*/
|
|
8
8
|
export interface FlowReplaySession {
|
|
9
9
|
command(name: string, args?: Record<string, unknown>): Promise<CommandResult>;
|
|
10
|
+
/**
|
|
11
|
+
* Attribution window around each replayed step. Optional so a minimal test double still satisfies the
|
|
12
|
+
* interface, but a real session MUST supply it: without a window the step's own effects carry no
|
|
13
|
+
* actionId, and Session.pushEvent classifies an unattributed ref-bearing event as ambient background
|
|
14
|
+
* churn. A 15-step flow can therefore teach the settle oracle to ignore every region the app reacts
|
|
15
|
+
* in — and this is the CI path, so the result is a green suite over an app that is still working.
|
|
16
|
+
*/
|
|
17
|
+
beginAction?(tool: string, args: Record<string, unknown>): void;
|
|
18
|
+
finishAction?(error?: string, settled?: boolean, settleMs?: number): void;
|
|
10
19
|
eventsSince(cursor: number): ReticleEvent[];
|
|
11
20
|
onEvent(listener: (event: ReticleEvent) => void): () => void;
|
|
12
21
|
/** Buffer clock (ms since connect) — required by the predicate engine's `settled` check. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-replay.d.ts","sourceRoot":"","sources":["../../src/flows/flow-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAIlB,KAAK,QAAQ,EAEb,KAAK,cAAc,EACnB,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-replay.d.ts","sourceRoot":"","sources":["../../src/flows/flow-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAIlB,KAAK,QAAQ,EAEb,KAAK,cAAc,EACnB,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKpE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAC5C,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC7D,4FAA4F;IAC5F,OAAO,IAAI,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAkB/E;AAYD,mGAAmG;AACnG,KAAK,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AA2B3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAc9E;AAuSD;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,EACvB,gBAAgB,UAAQ,EACxB,KAAK,GAAE,KAAiB,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC,CA+D3B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AnchorKind, DriftReason, EventType, ReticleCommand, QueryBy, } from '@reticlehq/core';
|
|
2
2
|
import { asRecord, asString } from '../tools/tools-helpers.js';
|
|
3
|
-
import { replayActionArgs } from './replay.js';
|
|
3
|
+
import { replayActionArgs, ambiguousTestidNote, queryRefs } from './replay.js';
|
|
4
|
+
import { ReticleTool } from '../tools/tool-names.js';
|
|
4
5
|
/**
|
|
5
6
|
* A single ASCII-ish edit distance (case-insensitive). Small inputs (testids), so O(n*m) is fine.
|
|
6
7
|
* Exported so the heal proposal layer derives its confidence from the SAME distance used to
|
|
@@ -60,11 +61,10 @@ const ANCHOR_SETTLE_DELAY_MS = 150;
|
|
|
60
61
|
const realSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
61
62
|
/** Extract the live element refs + the zero-match near-miss hint from a QUERY command result. */
|
|
62
63
|
function readQuery(result) {
|
|
64
|
+
const refs = queryRefs(result);
|
|
63
65
|
if (!result.ok)
|
|
64
|
-
return { refs
|
|
66
|
+
return { refs };
|
|
65
67
|
const payload = asRecord(result.result);
|
|
66
|
-
const elements = Array.isArray(payload['elements']) ? payload['elements'] : [];
|
|
67
|
-
const refs = elements.map((e) => asString(asRecord(e)['ref']) ?? '').filter((r) => r.length > 0);
|
|
68
68
|
const rawHint = payload['hint'];
|
|
69
69
|
if (typeof rawHint === 'object' && rawHint !== null) {
|
|
70
70
|
const hint = asRecord(rawHint);
|
|
@@ -242,11 +242,21 @@ async function runComponentStep(session, step, index, anchor, confirmDangerous,
|
|
|
242
242
|
};
|
|
243
243
|
}
|
|
244
244
|
const ref = refs[0] ?? '';
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
245
|
+
// Attribute the step's effects to the step. Without this window they arrive with no actionId and are
|
|
246
|
+
// learned as ambient churn on the very regions the flow exercises.
|
|
247
|
+
session.beginAction?.(ReticleTool.FLOW_REPLAY, { ref, action: step.action ?? '' });
|
|
248
|
+
let act;
|
|
249
|
+
try {
|
|
250
|
+
act = await session.command(ReticleCommand.ACT, {
|
|
251
|
+
ref,
|
|
252
|
+
action: step.action ?? '',
|
|
253
|
+
args: replayActionArgs(step.args, confirmDangerous),
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
finally {
|
|
257
|
+
// Close on every exit so a throwing step cannot leak the window onto the next step's events.
|
|
258
|
+
session.finishAction?.();
|
|
259
|
+
}
|
|
250
260
|
const result = { step: index, tool: step.tool, anchor: label, ok: act.ok };
|
|
251
261
|
if (!act.ok)
|
|
252
262
|
result.error = act.error ?? 'command failed';
|
|
@@ -265,12 +275,19 @@ async function runTestidStep(session, step, index, value, dynamic, confirmDanger
|
|
|
265
275
|
};
|
|
266
276
|
}
|
|
267
277
|
const ref = refs[0] ?? '';
|
|
268
|
-
const note = refs.length > 1 ?
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
278
|
+
const note = refs.length > 1 ? ambiguousTestidNote(value) : undefined;
|
|
279
|
+
session.beginAction?.(ReticleTool.FLOW_REPLAY, { ref, action: step.action ?? '' });
|
|
280
|
+
let act;
|
|
281
|
+
try {
|
|
282
|
+
act = await session.command(ReticleCommand.ACT, {
|
|
283
|
+
ref,
|
|
284
|
+
action: step.action ?? '',
|
|
285
|
+
args: replayActionArgs(step.args, confirmDangerous),
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
finally {
|
|
289
|
+
session.finishAction?.();
|
|
290
|
+
}
|
|
274
291
|
const result = { step: index, tool: step.tool, anchor: value, ok: act.ok };
|
|
275
292
|
if (!act.ok) {
|
|
276
293
|
result.error = act.error ?? 'command failed';
|
|
@@ -321,8 +338,17 @@ async function assertStepState(session, state, waitForSignal, timeoutMs, since)
|
|
|
321
338
|
};
|
|
322
339
|
}
|
|
323
340
|
/** Run one signal-anchored step: wait for the signal predicate, else drift (no nearest for signals). */
|
|
324
|
-
async function runSignalStep(session, step, index, name, waitForSignal, signalTimeoutMs) {
|
|
325
|
-
|
|
341
|
+
async function runSignalStep(session, step, index, name, waitForSignal, signalTimeoutMs, since) {
|
|
342
|
+
// Scope to THIS replay's floor, not the whole buffer.
|
|
343
|
+
//
|
|
344
|
+
// A signal step is a pure wait — the signal is fired by the PRECEDING act step — so a per-step floor
|
|
345
|
+
// would miss it (false negative). But the default whole-buffer read (since=0) was too loose in the
|
|
346
|
+
// one place it matters most: reticle_flow_verify replays every saved flow back-to-back in ONE
|
|
347
|
+
// session, so a signal an EARLIER flow emitted (`auth:granted`, `nav:changed`) sat in the buffer and
|
|
348
|
+
// satisfied a LATER flow's signal step even when that flow's own action never fired it — a
|
|
349
|
+
// cross-flow false green on the exact suite-verify path the regression-cost claim rests on. The
|
|
350
|
+
// replay-start floor excludes prior flows/runs while still seeing this run's adjacent-step signal.
|
|
351
|
+
const verdict = await waitForSignal(session, { kind: 'signal', name }, signalTimeoutMs, since);
|
|
326
352
|
if (verdict.pass)
|
|
327
353
|
return { step: index, tool: step.tool, anchor: name, ok: true };
|
|
328
354
|
return {
|
|
@@ -350,6 +376,9 @@ export async function replayFlow(session, flow, waitForSignal, signalTimeoutMs,
|
|
|
350
376
|
const dynamic = new Set((flow.dynamic ?? [])
|
|
351
377
|
.filter((a) => a.kind === AnchorKind.TESTID)
|
|
352
378
|
.map((a) => (a.kind === AnchorKind.TESTID ? a.value : '')));
|
|
379
|
+
// Floor for signal steps: signals that fire during THIS replay, never a prior flow/run in the same
|
|
380
|
+
// session. Captured once, before any step, so a back-to-back suite verify cannot cross-satisfy.
|
|
381
|
+
const replayFloor = session.elapsed();
|
|
353
382
|
let index = 0;
|
|
354
383
|
for (const step of flow.steps) {
|
|
355
384
|
const label = anchorLabel(step.anchor);
|
|
@@ -359,7 +388,7 @@ export async function replayFlow(session, flow, waitForSignal, signalTimeoutMs,
|
|
|
359
388
|
const cursorBefore = session.elapsed();
|
|
360
389
|
let result;
|
|
361
390
|
if (step.anchor.kind === AnchorKind.SIGNAL) {
|
|
362
|
-
result = await runSignalStep(session, step, index, label, waitForSignal, signalTimeoutMs);
|
|
391
|
+
result = await runSignalStep(session, step, index, label, waitForSignal, signalTimeoutMs, replayFloor);
|
|
363
392
|
}
|
|
364
393
|
else if (step.anchor.kind === AnchorKind.COMPONENT) {
|
|
365
394
|
result = await runComponentStep(session, step, index, step.anchor, confirmDangerous, sleep);
|
|
@@ -381,6 +410,11 @@ export async function replayFlow(session, flow, waitForSignal, signalTimeoutMs,
|
|
|
381
410
|
const consequence = summarizeConsequence(session.eventsSince(cursorBefore).filter((e) => e.t >= cursorBefore));
|
|
382
411
|
if (consequence !== undefined)
|
|
383
412
|
result.consequence = consequence;
|
|
413
|
+
// Per-step wall time from the session's injected clock (dispatch → here, post-settle). Only set when
|
|
414
|
+
// the clock actually advanced, so a fixed-clock fake reads durationMs-free (additive, non-breaking).
|
|
415
|
+
const durationMs = session.elapsed() - cursorBefore;
|
|
416
|
+
if (durationMs > 0)
|
|
417
|
+
result.durationMs = durationMs;
|
|
384
418
|
results.push(result);
|
|
385
419
|
if (result.drift !== undefined || !result.ok)
|
|
386
420
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-replay.js","sourceRoot":"","sources":["../../src/flows/flow-replay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flow-replay.js","sourceRoot":"","sources":["../../src/flows/flow-replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@ import { type FlowFile, type FlowReplayResult } from '@reticlehq/core';
|
|
|
2
2
|
/**
|
|
3
3
|
* Render a HUMAN-facing confidence report for a replayed flow — the artifact a developer reads to
|
|
4
4
|
* trust the test without re-running it. It answers the three confidence questions in one page:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* WHY — the declared business intent (+ whether it is actually asserted).
|
|
6
|
+
* WHAT — the journey: a mermaid flow diagram + a per-step page → action → consequence table.
|
|
7
|
+
* PROOF — the verdict (pass/drift/fail), the observed evidence (signals/network), and the
|
|
8
|
+
* measured cost (deterministic replay tokens vs an LLM re-drive).
|
|
9
9
|
*
|
|
10
10
|
* Pure: no IO, no clock. Markdown out (mermaid is the one place mermaid earns its tokens — a human
|
|
11
11
|
* renders it). Token figures are passed in (measured by the caller), never faked.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-report.d.ts","sourceRoot":"","sources":["../../src/flows/flow-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-report.d.ts","sourceRoot":"","sources":["../../src/flows/flow-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;;;;GAUG;AAEH,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;IACzB,+FAA+F;IAC/F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAuED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAyC9D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReplayStatus, } from '@reticlehq/core';
|
|
2
2
|
import { classifyFlowAssertions } from './flow-classify.js';
|
|
3
|
+
import { SUCCESS_STEP_TOOL } from './flow-success.js';
|
|
3
4
|
const VERDICT_GLYPH = {
|
|
4
5
|
[ReplayStatus.OK]: '✅ pass',
|
|
5
6
|
[ReplayStatus.DRIFT]: '⚠️ drift',
|
|
@@ -15,7 +16,7 @@ function mermaidLabel(text) {
|
|
|
15
16
|
}
|
|
16
17
|
/** A short action verb for a step row ("act" is the tool; the anchor carries the target). */
|
|
17
18
|
function stepAction(step) {
|
|
18
|
-
return step.tool ===
|
|
19
|
+
return step.tool === SUCCESS_STEP_TOOL ? 'assert outcome' : step.anchor;
|
|
19
20
|
}
|
|
20
21
|
/** The mermaid flowchart of the journey: one node per step, page-labelled, consequence on the edge. */
|
|
21
22
|
function mermaidDiagram(steps) {
|