@reticlehq/server 2.1.0 → 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 +22 -3
- 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-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 +81 -2
- 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 +36 -9
- 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 +1 -1
- package/dist/daemon.js +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 +29 -1
- package/dist/events/event-filters.d.ts.map +1 -1
- package/dist/events/event-filters.js +75 -1
- 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 +97 -18
- 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 +154 -20
- package/dist/events/predicate.js.map +1 -1
- package/dist/events/ring-buffer.d.ts +3 -3
- package/dist/events/ring-buffer.d.ts.map +1 -1
- package/dist/events/ring-buffer.js +54 -8
- 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 +16 -8
- 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.js +8 -8
- package/dist/flows/flow-replay-run.d.ts.map +1 -1
- package/dist/flows/flow-replay-run.js +36 -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 +48 -13
- package/dist/flows/flow-replay.js.map +1 -1
- package/dist/flows/flow-report.d.ts +4 -4
- 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 +92 -5
- 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 +38 -21
- 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 +1 -1
- package/dist/flows/heal-run.js +1 -1
- 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.map +1 -1
- package/dist/flows/replay.js +33 -11
- 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 -5
- package/dist/http-server.js +4 -4
- package/dist/idle-shutdown.d.ts +2 -2
- package/dist/idle-shutdown.js +2 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +98 -13
- 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/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.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/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 +45 -27
- package/dist/mcp-proxy.js.map +1 -1
- package/dist/mcp.d.ts +14 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +79 -9
- 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.map +1 -1
- package/dist/pool/playwright-launcher.js +9 -2
- 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 +24 -1
- 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/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.js +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 +9 -0
- 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 +43 -11
- package/dist/session/session.d.ts.map +1 -1
- package/dist/session/session.js +115 -46
- package/dist/session/session.js.map +1 -1
- package/dist/tools/act-tools.d.ts.map +1 -1
- package/dist/tools/act-tools.js +252 -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/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 +32 -29
- 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 +30 -1
- 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 +3 -2
- package/dist/tools/tool-kit.d.ts.map +1 -1
- package/dist/tools/tool-kit.js +11 -1
- package/dist/tools/tool-kit.js.map +1 -1
- package/dist/tools/tool-names.d.ts +18 -10
- package/dist/tools/tool-names.d.ts.map +1 -1
- package/dist/tools/tool-names.js +22 -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/updater.d.ts +1 -1
- package/dist/update/updater.js +2 -2
- package/dist/update/updater.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predicate.js","sourceRoot":"","sources":["../../src/events/predicate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,GAKf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACL,eAAe,EACf,UAAU,EACV,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,CAAC;AAY3B,KAAK,UAAU,SAAS,CACtB,OAAyB,EACzB,KAAmB,EACnB,KAA+B;IAE/B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAgB,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAyB,EACzB,KAAmB,EACnB,KAA+B,EAC/B,MAAe;IAEf,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,OAAO;YAClB,CAAC,CAAC;gBACE,IAAI,EAAE,KAAK;gBACX,aAAa,EAAE,2CAA2C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAC/E,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB;YACH,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IAEnE,2FAA2F;IAC3F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,aAAa,EAAE,oCAAoC,KAAK,GAAG;gBAC3D,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;aACzC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,aAAa,EAAE,OAAO,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,WAAW,QAAQ,CAAC,QAAQ;qBAC/E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;qBAC3B,IAAI,CAAC,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;aAC1C,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,GAAG,EAAE;KACjH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,OAAyB,EACzB,CAAwC;IAExC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAC/B,cAAc,CAAC,UAAU,EACzB,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAChD,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACxE,MAAM,MAAM,GAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAA0C,CAAC,MAAM,IAAI,EAAE,CAAC;IACzF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,KAAK;YACX,aAAa,EACX,KAAK,CAAC,MAAM,KAAK,CAAC;gBAChB,CAAC,CAAC,wCAAwC;gBAC1C,CAAC,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B;SACvE,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,eAAe,CAAC,CAAC,IAAI,yBAAyB,SAAS,GAAG;YACzE,QAAQ,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE;SACrD,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACrD,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;SAClF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,UAAU,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACvH,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;KAClF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAyB,EACzB,SAAoB,EACpB,KAAK,GAAG,CAAC;IAET,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1C,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QAC3F,KAAK,MAAM;YACT,OAAO,WAAW,CAChB,OAAO,EACP,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,EAC5B,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC7D,SAAS,CAAC,MAAM,IAAI,KAAK,CAC1B,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpC,KAAK,OAAO;YACV,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,KAAK,WAAW;YACd,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CACtE,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,MAAM,KAAK,SAAS;gBACzB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;gBAC1D,CAAC,CAAC;oBACE,IAAI,EAAE,KAAK;oBACX,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,iCAAiC;oBACxE,QAAQ,EAAE,OAAO;iBAClB,CAAC;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CACtE,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,MAAM,KAAK,SAAS;gBACzB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;gBAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,mCAAmC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC7F,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC,IAAI;gBACf,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,qCAAqC,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACxF,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrB,CAAC;QACD;YACE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAyB,EACzB,SAAoB,EACpB,SAAiB,EACjB,KAAK,GAAG,CAAC;IAET,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,EAAE;QACzC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,KAAc,EAAc,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SACtE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAkB,EAAQ,EAAE;YAC1C,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,KAAK,EAAE,CAAC;YACR,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,6FAA6F;QAC7F,8FAA8F;QAC9F,6FAA6F;QAC7F,gGAAgG;QAChG,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,QAAQ,EAAE,CAAC;gBACb,cAAc,GAAG,IAAI,CAAC;gBACtB,OAAO;YACT,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;iBAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,IAAI,CAAC,CAAC,IAAI;oBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,QAAQ,GAAG,KAAK,CAAC;gBACjB,IAAI,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,cAAc,GAAG,KAAK,CAAC;oBACvB,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACjC,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,KAAK,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;iBAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,MAAM,CAAC;oBACL,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,iCAAiC;iBACpE,CAAC,CAAC;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,EAAE,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"predicate.js","sourceRoot":"","sources":["../../src/events/predicate.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,15 +6,15 @@ interface RingBufferOptions {
|
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Bounded, time-aware event store per session. The single data structure that powers
|
|
9
|
-
* observe
|
|
9
|
+
* observe/wait_for/assert — it lets us look both backward (recent buffer) and
|
|
10
10
|
* forward (await new events).
|
|
11
11
|
*
|
|
12
|
-
* Eviction advances a HEAD index instead of shift
|
|
12
|
+
* Eviction advances a HEAD index instead of shift/splice — O(1) per dropped event (was O(n) per
|
|
13
13
|
* shift, i.e. O(n) per push at steady state under the DOM/animation floods). The dead prefix is
|
|
14
14
|
* compacted away once it dominates, so the backing arrays stay bounded (amortized O(1)).
|
|
15
15
|
*
|
|
16
16
|
* `now` is injected so the buffer is deterministically testable (inject the clock, never call
|
|
17
|
-
* Date.now
|
|
17
|
+
* Date.now inside logic).
|
|
18
18
|
*/
|
|
19
19
|
export declare class RingBuffer {
|
|
20
20
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../src/events/ring-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../src/events/ring-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAqBrF,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;;gBAWT,OAAO,GAAE,iBAAsB;IAU3C,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAU/D,mDAAmD;IACnD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAIrC,4DAA4D;IAC5D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE;IAqErD,qGAAqG;IACrG,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAGnD"}
|
|
@@ -1,15 +1,32 @@
|
|
|
1
|
-
import { RING_BUFFER_DEFAULTS } from '@reticlehq/core';
|
|
1
|
+
import { EventType, RING_BUFFER_DEFAULTS } from '@reticlehq/core';
|
|
2
|
+
/**
|
|
3
|
+
* The high-volume, low-signal floor. These fire continuously on any live page (count-up text, CSS
|
|
4
|
+
* animation frames, React commits, health heartbeats, scroll) and are the ONLY thing that should be
|
|
5
|
+
* sacrificed when the buffer is full. Everything else — a failed request, a console error, a domain
|
|
6
|
+
* signal, a truncation/blind-spot marker — is scarce evidence a verdict depends on, and a churning
|
|
7
|
+
* region must never be able to push it out of the window.
|
|
8
|
+
*/
|
|
9
|
+
const CHURN_TYPES = new Set([
|
|
10
|
+
EventType.DOM_TEXT,
|
|
11
|
+
EventType.ANIM_START,
|
|
12
|
+
EventType.ANIM_END,
|
|
13
|
+
EventType.RENDER_COMMIT,
|
|
14
|
+
EventType.PAGE_HEALTH,
|
|
15
|
+
EventType.SCROLL_POSITION,
|
|
16
|
+
]);
|
|
17
|
+
/** How far forward to look for a churn event to sacrifice before falling back to plain FIFO. */
|
|
18
|
+
const CHURN_SCAN_LIMIT = 256;
|
|
2
19
|
/**
|
|
3
20
|
* Bounded, time-aware event store per session. The single data structure that powers
|
|
4
|
-
* observe
|
|
21
|
+
* observe/wait_for/assert — it lets us look both backward (recent buffer) and
|
|
5
22
|
* forward (await new events).
|
|
6
23
|
*
|
|
7
|
-
* Eviction advances a HEAD index instead of shift
|
|
24
|
+
* Eviction advances a HEAD index instead of shift/splice — O(1) per dropped event (was O(n) per
|
|
8
25
|
* shift, i.e. O(n) per push at steady state under the DOM/animation floods). The dead prefix is
|
|
9
26
|
* compacted away once it dominates, so the backing arrays stay bounded (amortized O(1)).
|
|
10
27
|
*
|
|
11
28
|
* `now` is injected so the buffer is deterministically testable (inject the clock, never call
|
|
12
|
-
* Date.now
|
|
29
|
+
* Date.now inside logic).
|
|
13
30
|
*/
|
|
14
31
|
export class RingBuffer {
|
|
15
32
|
#maxEvents;
|
|
@@ -62,11 +79,31 @@ export class RingBuffer {
|
|
|
62
79
|
#evict(now) {
|
|
63
80
|
const cutoff = now - this.#maxAgeMs;
|
|
64
81
|
const before = this.#liveCount();
|
|
65
|
-
//
|
|
82
|
+
// Cap/byte pressure: sacrifice the CHURN floor before scarce evidence. The head is usually churn on
|
|
83
|
+
// a busy page, so this stays the O(1) head-advance; only when the oldest event is worth keeping do we
|
|
84
|
+
// look forward (bounded) for a churn event to drop instead.
|
|
85
|
+
// Byte pressure keeps at least ONE event: a single event larger than the whole byte budget would
|
|
86
|
+
// otherwise be pushed and then immediately self-evicted, so a waiter for it never saw it and only
|
|
87
|
+
// `dropped` moved. Bytes is a soft cap and per-value serialization already bounds any one event, so
|
|
88
|
+
// keeping the sole survivor over the budget is the correct trade. The count cap (maxEvents, ~2000)
|
|
89
|
+
// is a hard bound and stays `> maxEvents`.
|
|
66
90
|
while (this.#liveCount() > this.#maxEvents ||
|
|
67
|
-
(this.#totalBytes > this.#maxBytes && this.#liveCount() >
|
|
68
|
-
|
|
69
|
-
|
|
91
|
+
(this.#totalBytes > this.#maxBytes && this.#liveCount() > 1)) {
|
|
92
|
+
if (CHURN_TYPES.has(this.#events[this.#head]?.type ?? '')) {
|
|
93
|
+
this.#totalBytes -= this.#eventBytes[this.#head] ?? 0;
|
|
94
|
+
this.#head += 1;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const victim = this.#findChurnAfterHead();
|
|
98
|
+
if (victim === -1) {
|
|
99
|
+
// Buffer genuinely full of high-signal events — fall back to FIFO so it stays bounded.
|
|
100
|
+
this.#totalBytes -= this.#eventBytes[this.#head] ?? 0;
|
|
101
|
+
this.#head += 1;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
this.#totalBytes -= this.#eventBytes[victim] ?? 0;
|
|
105
|
+
this.#events.splice(victim, 1); // order preserved; victim > #head so the head stays valid
|
|
106
|
+
this.#eventBytes.splice(victim, 1);
|
|
70
107
|
}
|
|
71
108
|
while (this.#liveCount() > 0 && (this.#events[this.#head]?.t ?? cutoff) < cutoff) {
|
|
72
109
|
this.#totalBytes -= this.#eventBytes[this.#head] ?? 0;
|
|
@@ -80,6 +117,15 @@ export class RingBuffer {
|
|
|
80
117
|
this.#head = 0;
|
|
81
118
|
}
|
|
82
119
|
}
|
|
120
|
+
/** First churn event after the head, or -1 if none within the bounded scan (keeps eviction cheap). */
|
|
121
|
+
#findChurnAfterHead() {
|
|
122
|
+
const end = Math.min(this.#events.length, this.#head + CHURN_SCAN_LIMIT);
|
|
123
|
+
for (let i = this.#head + 1; i < end; i++) {
|
|
124
|
+
if (CHURN_TYPES.has(this.#events[i]?.type ?? ''))
|
|
125
|
+
return i;
|
|
126
|
+
}
|
|
127
|
+
return -1;
|
|
128
|
+
}
|
|
83
129
|
/** Snapshot of buffer health for the agent — live events held and cumulative drops since connect. */
|
|
84
130
|
bufferHealth() {
|
|
85
131
|
return { total: this.#liveCount(), dropped: this.#droppedCount };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../src/events/ring-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAqB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../src/events/ring-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The file→flow reverse index — the heart of the unavoidable loop. When a file changes, which flows must
|
|
3
|
+
* re-verify? A flow persists the source files its anchors were stamped from (its "sources manifest"); a
|
|
4
|
+
* changed file that appears in a flow's manifest makes that flow affected. A flow with NO manifest
|
|
5
|
+
* (recorded before v2.2, or un-stampable) is `unknown` — and unknown always means affected, never
|
|
6
|
+
* silently skipped: the loop fails safe toward re-verifying.
|
|
7
|
+
*/
|
|
8
|
+
export interface FlowSources {
|
|
9
|
+
name: string;
|
|
10
|
+
/** Repo-relative source files this flow's anchors came from. Empty/absent ⇒ unknown provenance. */
|
|
11
|
+
sources?: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
export interface AffectedResult {
|
|
14
|
+
/** Flows to re-verify: those touching a changed file, plus all unknown-provenance flows. */
|
|
15
|
+
affected: string[];
|
|
16
|
+
/** Of the affected, which were included only because their provenance is unknown (fail-safe). */
|
|
17
|
+
unknownProvenance: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Which flows are affected by a set of changed files. Deterministic; a flow with no sources manifest is
|
|
21
|
+
* always affected (fail-safe). `changedFiles` and flow sources are matched by normalized path suffix so
|
|
22
|
+
* a repo-relative change matches an absolute stamp and vice-versa.
|
|
23
|
+
*/
|
|
24
|
+
export declare function affectedFlows(flows: readonly FlowSources[], changedFiles: readonly string[]): AffectedResult;
|
|
25
|
+
//# sourceMappingURL=affected.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"affected.d.ts","sourceRoot":"","sources":["../../src/flows/affected.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iGAAiG;IACjG,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAOD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,cAAc,CAkBhB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The file→flow reverse index — the heart of the unavoidable loop. When a file changes, which flows must
|
|
3
|
+
* re-verify? A flow persists the source files its anchors were stamped from (its "sources manifest"); a
|
|
4
|
+
* changed file that appears in a flow's manifest makes that flow affected. A flow with NO manifest
|
|
5
|
+
* (recorded before v2.2, or un-stampable) is `unknown` — and unknown always means affected, never
|
|
6
|
+
* silently skipped: the loop fails safe toward re-verifying.
|
|
7
|
+
*/
|
|
8
|
+
/** Normalize a path for comparison — strip a leading./ and any file:line suffix. */
|
|
9
|
+
function normalize(path) {
|
|
10
|
+
return path.replace(/^\.\//, '').replace(/:\d+(:\d+)?$/, '');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Which flows are affected by a set of changed files. Deterministic; a flow with no sources manifest is
|
|
14
|
+
* always affected (fail-safe). `changedFiles` and flow sources are matched by normalized path suffix so
|
|
15
|
+
* a repo-relative change matches an absolute stamp and vice-versa.
|
|
16
|
+
*/
|
|
17
|
+
export function affectedFlows(flows, changedFiles) {
|
|
18
|
+
const changed = changedFiles.map(normalize);
|
|
19
|
+
const matchesChange = (source) => {
|
|
20
|
+
const s = normalize(source);
|
|
21
|
+
return changed.some((c) => c === s || c.endsWith(`/${s}`) || s.endsWith(`/${c}`));
|
|
22
|
+
};
|
|
23
|
+
const affected = [];
|
|
24
|
+
const unknownProvenance = [];
|
|
25
|
+
for (const flow of flows) {
|
|
26
|
+
if (flow.sources === undefined || flow.sources.length === 0) {
|
|
27
|
+
affected.push(flow.name);
|
|
28
|
+
unknownProvenance.push(flow.name);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (flow.sources.some(matchesChange))
|
|
32
|
+
affected.push(flow.name);
|
|
33
|
+
}
|
|
34
|
+
return { affected, unknownProvenance };
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=affected.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"affected.js","sourceRoot":"","sources":["../../src/flows/affected.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,oFAAoF;AACpF,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,KAA6B,EAC7B,YAA+B;IAE/B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE;QAChD,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AACzC,CAAC"}
|
package/dist/flows/annotate.d.ts
CHANGED
|
@@ -4,10 +4,10 @@ import { type Annotation, type AnnotateOutcome } from '@reticlehq/core';
|
|
|
4
4
|
* the current captured-step count → an AnnotateOutcome (a result envelope + the patch to apply to
|
|
5
5
|
* the AnnotationStore). No IO, no clock, unit-testable in isolation.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* assert-signal → step.expect.signal (+ signalData) on the LAST step (needs ≥1 step)
|
|
8
|
+
* assert-visible → step.expect.element.testid on the LAST step (needs ≥1 step)
|
|
9
|
+
* mark-dynamic → flow.dynamic[] += testid flow-level, allowed with 0 steps
|
|
10
|
+
* success-state → flow.success = { signal | element } flow-level (signal XOR testid; both → signal)
|
|
11
11
|
*
|
|
12
12
|
* FIRST CUT: only the four structured kinds above. Free natural-language annotation → predicate
|
|
13
13
|
* compilation is explicitly FUTURE — an NL string never reaches here (AnnotationSchema
|
package/dist/flows/annotate.js
CHANGED
|
@@ -4,10 +4,10 @@ import { AnnotationErrorCode, AnnotationKind, AnnotationTarget, COMPILED_PREDICA
|
|
|
4
4
|
* the current captured-step count → an AnnotateOutcome (a result envelope + the patch to apply to
|
|
5
5
|
* the AnnotationStore). No IO, no clock, unit-testable in isolation.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* assert-signal → step.expect.signal (+ signalData) on the LAST step (needs ≥1 step)
|
|
8
|
+
* assert-visible → step.expect.element.testid on the LAST step (needs ≥1 step)
|
|
9
|
+
* mark-dynamic → flow.dynamic[] += testid flow-level, allowed with 0 steps
|
|
10
|
+
* success-state → flow.success = { signal | element } flow-level (signal XOR testid; both → signal)
|
|
11
11
|
*
|
|
12
12
|
* FIRST CUT: only the four structured kinds above. Free natural-language annotation → predicate
|
|
13
13
|
* compilation is explicitly FUTURE — an NL string never reaches here (AnnotationSchema
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type FlowExpect } from '@reticlehq/core';
|
|
2
|
+
/**
|
|
3
|
+
* Anti-reward-hacking (research-mandated). Test-gated agents pass gates by WEAKENING assertions — the
|
|
4
|
+
* canonical documented failure. Flows are git-checked and agent-editable, so a mustHold that dropped
|
|
5
|
+
* from a consequence (signal/net/state) to presence-only since the last passing run is a downgrade the
|
|
6
|
+
* gate must flag as a first-class finding, never silently accept. This is the pure detector; the gate
|
|
7
|
+
* and flow_verify surface it.
|
|
8
|
+
*/
|
|
9
|
+
/** True when `after` weakened `before` — a real consequence became a fakeable presence-only check. */
|
|
10
|
+
export declare function isAssertionDowngrade(before: FlowExpect | undefined, after: FlowExpect | undefined): boolean;
|
|
11
|
+
export interface StepExpect {
|
|
12
|
+
step: number;
|
|
13
|
+
expect?: FlowExpect;
|
|
14
|
+
}
|
|
15
|
+
export interface DowngradeFinding {
|
|
16
|
+
step: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Compare a flow's steps between its last-passing version and now (matched by step index). Reports each
|
|
20
|
+
* step whose assertion tier dropped. Steps added/removed are out of scope here — deleted-flow detection
|
|
21
|
+
* lives with the affected index.
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectDowngrades(before: readonly StepExpect[], after: readonly StepExpect[]): DowngradeFinding[];
|
|
24
|
+
//# sourceMappingURL=assertion-integrity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-integrity.d.ts","sourceRoot":"","sources":["../../src/flows/assertion-integrity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;GAMG;AAEH,sGAAsG;AACtG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,OAAO,CAET;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,KAAK,EAAE,SAAS,UAAU,EAAE,GAC3B,gBAAgB,EAAE,CAOpB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { flowExpectHasConsequence, flowExpectIsPresenceOnly, } from '@reticlehq/core';
|
|
2
|
+
/**
|
|
3
|
+
* Anti-reward-hacking (research-mandated). Test-gated agents pass gates by WEAKENING assertions — the
|
|
4
|
+
* canonical documented failure. Flows are git-checked and agent-editable, so a mustHold that dropped
|
|
5
|
+
* from a consequence (signal/net/state) to presence-only since the last passing run is a downgrade the
|
|
6
|
+
* gate must flag as a first-class finding, never silently accept. This is the pure detector; the gate
|
|
7
|
+
* and flow_verify surface it.
|
|
8
|
+
*/
|
|
9
|
+
/** True when `after` weakened `before` — a real consequence became a fakeable presence-only check. */
|
|
10
|
+
export function isAssertionDowngrade(before, after) {
|
|
11
|
+
return flowExpectHasConsequence(before) && flowExpectIsPresenceOnly(after);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Compare a flow's steps between its last-passing version and now (matched by step index). Reports each
|
|
15
|
+
* step whose assertion tier dropped. Steps added/removed are out of scope here — deleted-flow detection
|
|
16
|
+
* lives with the affected index.
|
|
17
|
+
*/
|
|
18
|
+
export function detectDowngrades(before, after) {
|
|
19
|
+
const afterByStep = new Map(after.map((s) => [s.step, s.expect]));
|
|
20
|
+
const findings = [];
|
|
21
|
+
for (const { step, expect } of before) {
|
|
22
|
+
if (isAssertionDowngrade(expect, afterByStep.get(step)))
|
|
23
|
+
findings.push({ step });
|
|
24
|
+
}
|
|
25
|
+
return findings;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=assertion-integrity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-integrity.js","sourceRoot":"","sources":["../../src/flows/assertion-integrity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GAEzB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;GAMG;AAEH,sGAAsG;AACtG,MAAM,UAAU,oBAAoB,CAClC,MAA8B,EAC9B,KAA6B;IAE7B,OAAO,wBAAwB,CAAC,MAAM,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA6B,EAC7B,KAA4B;IAE5B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACtC,IAAI,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { FileSystemPort } from '../project/fs-port.js';
|
|
3
|
+
import type { StepExpect } from './assertion-integrity.js';
|
|
4
|
+
/**
|
|
5
|
+
* The anti-reward-hacking baseline. Detecting an assertion DOWNGRADE requires knowing what the
|
|
6
|
+
* flow asserted the last time it PASSED — otherwise a weakened flow simply looks like a flow that always
|
|
7
|
+
* asserted little. Flows are git-checked and agent-editable, so we cannot trust the file itself as its own
|
|
8
|
+
* history.
|
|
9
|
+
*
|
|
10
|
+
* So: on every passing replay we record that flow's per-step assertion shape here, and the gate diffs the
|
|
11
|
+
* current file against it. Recorded only on PASS, deliberately — a failing run must never become the
|
|
12
|
+
* baseline a later weakening is measured against.
|
|
13
|
+
*
|
|
14
|
+
* Loads never throw: a missing/corrupt ledger degrades to "no baseline", which means no downgrade can be
|
|
15
|
+
* claimed. Failing OPEN is right here — accusing an agent of gaming the gate on the strength of an
|
|
16
|
+
* unreadable file would be worse than missing one downgrade.
|
|
17
|
+
*/
|
|
18
|
+
export declare const AssertionTiersFileSchema: z.ZodObject<{
|
|
19
|
+
version: z.ZodLiteral<1>;
|
|
20
|
+
flows: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
21
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
22
|
+
step: z.ZodNumber;
|
|
23
|
+
expect: z.ZodOptional<z.ZodUnknown>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
step: number;
|
|
26
|
+
expect?: unknown;
|
|
27
|
+
}, {
|
|
28
|
+
step: number;
|
|
29
|
+
expect?: unknown;
|
|
30
|
+
}>, "many">;
|
|
31
|
+
/** Source files this flow covered when it last passed — lets the gate scope DELETION findings to
|
|
32
|
+
* the files that actually changed, instead of flagging every intentionally-removed flow. */
|
|
33
|
+
sources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
steps: {
|
|
36
|
+
step: number;
|
|
37
|
+
expect?: unknown;
|
|
38
|
+
}[];
|
|
39
|
+
sources: string[];
|
|
40
|
+
}, {
|
|
41
|
+
steps: {
|
|
42
|
+
step: number;
|
|
43
|
+
expect?: unknown;
|
|
44
|
+
}[];
|
|
45
|
+
sources?: string[] | undefined;
|
|
46
|
+
}>>;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
version: 1;
|
|
49
|
+
flows: Record<string, {
|
|
50
|
+
steps: {
|
|
51
|
+
step: number;
|
|
52
|
+
expect?: unknown;
|
|
53
|
+
}[];
|
|
54
|
+
sources: string[];
|
|
55
|
+
}>;
|
|
56
|
+
}, {
|
|
57
|
+
version: 1;
|
|
58
|
+
flows: Record<string, {
|
|
59
|
+
steps: {
|
|
60
|
+
step: number;
|
|
61
|
+
expect?: unknown;
|
|
62
|
+
}[];
|
|
63
|
+
sources?: string[] | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
}>;
|
|
66
|
+
export interface FlowBaseline {
|
|
67
|
+
steps: StepExpect[];
|
|
68
|
+
sources: string[];
|
|
69
|
+
}
|
|
70
|
+
export type FlowTiers = Record<string, FlowBaseline>;
|
|
71
|
+
export declare const ASSERTION_TIERS_VERSION = 1;
|
|
72
|
+
export declare class AssertionTiersStore {
|
|
73
|
+
#private;
|
|
74
|
+
constructor(fs: FileSystemPort, root: string);
|
|
75
|
+
load(): Promise<FlowTiers>;
|
|
76
|
+
save(tiers: FlowTiers): Promise<void>;
|
|
77
|
+
/** Record one flow's assertion shape + covered sources after it PASSED. Never breaks a replay. */
|
|
78
|
+
recordPassing(name: string, steps: readonly StepExpect[], sources?: readonly string[]): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=assertion-tiers-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-tiers-store.d.ts","sourceRoot":"","sources":["../../src/flows/assertion-tiers-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;QAK/B;oGAC4F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIhG,CAAC;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AACD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAErD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,qBAAa,mBAAmB;;gBAIlB,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;IAKtC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;IA6B1B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,kGAAkG;IAC5F,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,GAAE,SAAS,MAAM,EAAO,GAC9B,OAAO,CAAC,IAAI,CAAC;CAqBjB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { dirname } from 'node:path';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { reticleDirPaths } from '../project/reticle-dir.js';
|
|
4
|
+
import { withFileLock } from '../project/file-lock.js';
|
|
5
|
+
/**
|
|
6
|
+
* The anti-reward-hacking baseline. Detecting an assertion DOWNGRADE requires knowing what the
|
|
7
|
+
* flow asserted the last time it PASSED — otherwise a weakened flow simply looks like a flow that always
|
|
8
|
+
* asserted little. Flows are git-checked and agent-editable, so we cannot trust the file itself as its own
|
|
9
|
+
* history.
|
|
10
|
+
*
|
|
11
|
+
* So: on every passing replay we record that flow's per-step assertion shape here, and the gate diffs the
|
|
12
|
+
* current file against it. Recorded only on PASS, deliberately — a failing run must never become the
|
|
13
|
+
* baseline a later weakening is measured against.
|
|
14
|
+
*
|
|
15
|
+
* Loads never throw: a missing/corrupt ledger degrades to "no baseline", which means no downgrade can be
|
|
16
|
+
* claimed. Failing OPEN is right here — accusing an agent of gaming the gate on the strength of an
|
|
17
|
+
* unreadable file would be worse than missing one downgrade.
|
|
18
|
+
*/
|
|
19
|
+
export const AssertionTiersFileSchema = z.object({
|
|
20
|
+
version: z.literal(1),
|
|
21
|
+
flows: z.record(z.object({
|
|
22
|
+
steps: z.array(z.object({ step: z.number(), expect: z.unknown().optional() })),
|
|
23
|
+
/** Source files this flow covered when it last passed — lets the gate scope DELETION findings to
|
|
24
|
+
* the files that actually changed, instead of flagging every intentionally-removed flow. */
|
|
25
|
+
sources: z.array(z.string()).default([]),
|
|
26
|
+
})),
|
|
27
|
+
});
|
|
28
|
+
export const ASSERTION_TIERS_VERSION = 1;
|
|
29
|
+
export class AssertionTiersStore {
|
|
30
|
+
#fs;
|
|
31
|
+
#path;
|
|
32
|
+
constructor(fs, root) {
|
|
33
|
+
this.#fs = fs;
|
|
34
|
+
this.#path = reticleDirPaths(root).tiers;
|
|
35
|
+
}
|
|
36
|
+
async load() {
|
|
37
|
+
let text;
|
|
38
|
+
try {
|
|
39
|
+
text = await this.#fs.readFile(this.#path);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (this.#fs.isNotFound(error))
|
|
43
|
+
return {};
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
let parsed;
|
|
47
|
+
try {
|
|
48
|
+
parsed = JSON.parse(text);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
const result = AssertionTiersFileSchema.safeParse(parsed);
|
|
54
|
+
if (!result.success)
|
|
55
|
+
return {};
|
|
56
|
+
const out = {};
|
|
57
|
+
for (const [name, entry] of Object.entries(result.data.flows)) {
|
|
58
|
+
out[name] = {
|
|
59
|
+
steps: entry.steps.map((s) => ({
|
|
60
|
+
step: s.step,
|
|
61
|
+
...(s.expect === undefined ? {} : { expect: s.expect }),
|
|
62
|
+
})),
|
|
63
|
+
sources: entry.sources,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
async save(tiers) {
|
|
69
|
+
await this.#fs.mkdir(dirname(this.#path));
|
|
70
|
+
const body = `${JSON.stringify({ version: ASSERTION_TIERS_VERSION, flows: tiers }, null, 2)}\n`;
|
|
71
|
+
const tmp = `${this.#path}.tmp`;
|
|
72
|
+
await this.#fs.writeFile(tmp, body);
|
|
73
|
+
await this.#fs.rename(tmp, this.#path);
|
|
74
|
+
}
|
|
75
|
+
/** Record one flow's assertion shape + covered sources after it PASSED. Never breaks a replay. */
|
|
76
|
+
async recordPassing(name, steps, sources = []) {
|
|
77
|
+
try {
|
|
78
|
+
// Serialized per file: a fresh store instance is created per flow (flow-replay-run), so parallel
|
|
79
|
+
// passing replays would otherwise each load the same baseline, add only THEIR flow, and the last
|
|
80
|
+
// save would drop every other flow's baseline — the downgrade-detection gate silently losing
|
|
81
|
+
// coverage. The lock is keyed by path, so it serializes across those distinct instances.
|
|
82
|
+
await withFileLock(this.#path, async () => {
|
|
83
|
+
const all = await this.load();
|
|
84
|
+
all[name] = {
|
|
85
|
+
steps: steps.map((s) => ({
|
|
86
|
+
step: s.step,
|
|
87
|
+
...(s.expect === undefined ? {} : { expect: s.expect }),
|
|
88
|
+
})),
|
|
89
|
+
sources: [...sources],
|
|
90
|
+
};
|
|
91
|
+
await this.save(all);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// a ledger write must never fail a green replay
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=assertion-tiers-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-tiers-store.js","sourceRoot":"","sources":["../../src/flows/assertion-tiers-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The buddy channel. The co-dev experience for the HUMAN: a single ambient line they can park in
|
|
3
|
+
* a statusline or terminal and glance at — never a wall of output, never something they have to ask for.
|
|
4
|
+
*
|
|
5
|
+
* The rule this encodes: say the reassuring thing briefly and the alarming thing specifically. "41 flows
|
|
6
|
+
* nominal" needs no detail; a deviation needs its name, because a status line that says only "1 deviation"
|
|
7
|
+
* forces the human to go digging, which is exactly the work the buddy exists to remove.
|
|
8
|
+
*/
|
|
9
|
+
export interface BuddyStatusInput {
|
|
10
|
+
/** Every saved flow. */
|
|
11
|
+
total: number;
|
|
12
|
+
/** Flows with a passing artifact. */
|
|
13
|
+
passing: number;
|
|
14
|
+
/** Flows that changed files put at risk and that have NO passing artifact — the actionable set. */
|
|
15
|
+
deviations: readonly string[];
|
|
16
|
+
/** Flows quarantined as flaky — surfaced, never blocking. */
|
|
17
|
+
quarantined: readonly string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* One line, safe to print on every save. Shape:
|
|
21
|
+
* `✓ 41 flows nominal`
|
|
22
|
+
* `✗ 2 deviations: checkout, billing · 39 nominal · 1 flaky quarantined`
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatBuddyStatus(input: BuddyStatusInput): string;
|
|
25
|
+
//# sourceMappingURL=buddy-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buddy-status.d.ts","sourceRoot":"","sources":["../../src/flows/buddy-status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,mGAAmG;IACnG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,6DAA6D;IAC7D,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAmBjE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The buddy channel. The co-dev experience for the HUMAN: a single ambient line they can park in
|
|
3
|
+
* a statusline or terminal and glance at — never a wall of output, never something they have to ask for.
|
|
4
|
+
*
|
|
5
|
+
* The rule this encodes: say the reassuring thing briefly and the alarming thing specifically. "41 flows
|
|
6
|
+
* nominal" needs no detail; a deviation needs its name, because a status line that says only "1 deviation"
|
|
7
|
+
* forces the human to go digging, which is exactly the work the buddy exists to remove.
|
|
8
|
+
*/
|
|
9
|
+
/** How many deviation names to spell out before collapsing to a count (a status line must stay one line). */
|
|
10
|
+
const MAX_NAMED = 2;
|
|
11
|
+
/**
|
|
12
|
+
* One line, safe to print on every save. Shape:
|
|
13
|
+
* `✓ 41 flows nominal`
|
|
14
|
+
* `✗ 2 deviations: checkout, billing · 39 nominal · 1 flaky quarantined`
|
|
15
|
+
*/
|
|
16
|
+
export function formatBuddyStatus(input) {
|
|
17
|
+
const parts = [];
|
|
18
|
+
const deviations = input.deviations.length;
|
|
19
|
+
if (deviations === 0) {
|
|
20
|
+
parts.push(`✓ ${String(input.passing)}/${String(input.total)} flows nominal`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const named = input.deviations.slice(0, MAX_NAMED).join(', ');
|
|
24
|
+
const rest = deviations - Math.min(MAX_NAMED, deviations);
|
|
25
|
+
parts.push(`✗ ${String(deviations)} deviation${deviations === 1 ? '' : 's'}: ${named}${rest > 0 ? ` +${String(rest)} more` : ''}`);
|
|
26
|
+
parts.push(`${String(input.passing)} nominal`);
|
|
27
|
+
}
|
|
28
|
+
if (input.quarantined.length > 0) {
|
|
29
|
+
parts.push(`${String(input.quarantined.length)} flaky quarantined`);
|
|
30
|
+
}
|
|
31
|
+
return parts.join(' · ');
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=buddy-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buddy-status.js","sourceRoot":"","sources":["../../src/flows/buddy-status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,6GAA6G;AAC7G,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IAE3C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CACR,KAAK,MAAM,CAAC,UAAU,CAAC,aAAa,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACvH,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
|