@reticlehq/server 2.1.0 → 2.2.1
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 +36 -2
- package/dist/cli-parse.d.ts.map +1 -1
- package/dist/cli-parse.js +97 -2
- 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 +2 -0
- package/dist/cli-verify.d.ts.map +1 -1
- package/dist/cli-verify.js +52 -11
- package/dist/cli-verify.js.map +1 -1
- package/dist/cli.d.ts +2 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +175 -9
- package/dist/cli.js.map +1 -1
- package/dist/cloud/cloud-config.d.ts +37 -0
- package/dist/cloud/cloud-config.d.ts.map +1 -0
- package/dist/cloud/cloud-config.js +87 -0
- package/dist/cloud/cloud-config.js.map +1 -0
- package/dist/cloud/cloud-sync.d.ts +96 -3
- package/dist/cloud/cloud-sync.d.ts.map +1 -1
- package/dist/cloud/cloud-sync.js +131 -2
- package/dist/cloud/cloud-sync.js.map +1 -1
- package/dist/cloud-cli.d.ts +4 -0
- package/dist/cloud-cli.d.ts.map +1 -0
- package/dist/cloud-cli.js +507 -0
- package/dist/cloud-cli.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/daemon.js +53 -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 +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 +58 -5
- 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 +116 -13
- 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/server-verify.d.ts +16 -0
- package/dist/flows/server-verify.d.ts.map +1 -0
- package/dist/flows/server-verify.js +43 -0
- package/dist/flows/server-verify.js.map +1 -0
- 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 +2 -0
- package/dist/pool/playwright-launcher.d.ts.map +1 -1
- package/dist/pool/playwright-launcher.js +21 -2
- package/dist/pool/playwright-launcher.js.map +1 -1
- package/dist/project/baselines.d.ts.map +1 -1
- package/dist/project/baselines.js +5 -3
- package/dist/project/baselines.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 +33 -15
- 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 +52 -6
- 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/verification-sync.d.ts +24 -0
- package/dist/runs/verification-sync.d.ts.map +1 -0
- package/dist/runs/verification-sync.js +67 -0
- package/dist/runs/verification-sync.js.map +1 -0
- 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/telemetry/telemetry.d.ts +41 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +220 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- 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 +8 -7
- 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 +36 -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/update-checker.d.ts.map +1 -1
- package/dist/update/update-checker.js +26 -1
- package/dist/update/update-checker.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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-control.d.ts","sourceRoot":"","sources":["../../src/session/live-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExF,mGAAmG;AACnG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;;IAItB,KAAK,IAAI,YAAY;IAIrB,QAAQ,IAAI,OAAO;IAInB,OAAO,IAAI,OAAO;IAIlB,sGAAsG;IACtG,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIlC,wGAAwG;IACxG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnC,wFAAwF;IACxF,KAAK,IAAI,YAAY,EAAE;IAIvB,2DAA2D;IAC3D,IAAI,IAAI,MAAM;IAId;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,GAAG,SAAS;CAa/D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { HumanControlKind, SessionState } from '@reticlehq/core';
|
|
2
|
+
/**
|
|
3
|
+
* The human-in-the-loop half of a session: its lifecycle state, and the one-way inbox a person uses
|
|
4
|
+
* to talk to the agent driving their browser.
|
|
5
|
+
*
|
|
6
|
+
* Server-owned on purpose — a paused session has to stay paused even if the page reloads, so this
|
|
7
|
+
* cannot live in the tab. Split out of Session because it shares nothing with the transport, the
|
|
8
|
+
* ring buffer, or the journal: it is state a HUMAN changes, on a human's timescale, while everything
|
|
9
|
+
* else in Session is driven by the event stream.
|
|
10
|
+
*/
|
|
11
|
+
export class LiveControl {
|
|
12
|
+
#state = SessionState.ACTIVE;
|
|
13
|
+
#inbox = [];
|
|
14
|
+
state() {
|
|
15
|
+
return this.#state;
|
|
16
|
+
}
|
|
17
|
+
isPaused() {
|
|
18
|
+
return this.#state === SessionState.PAUSED;
|
|
19
|
+
}
|
|
20
|
+
isEnded() {
|
|
21
|
+
return this.#state === SessionState.ENDED;
|
|
22
|
+
}
|
|
23
|
+
/** Set the lifecycle state. Echoing it to the presenter is the caller's job (one push per change). */
|
|
24
|
+
setState(next) {
|
|
25
|
+
this.#state = next;
|
|
26
|
+
}
|
|
27
|
+
/** Queue a human note. Empty/whitespace-only text is ignored so a stray enter cannot spam the agent. */
|
|
28
|
+
push(text, t) {
|
|
29
|
+
const trimmed = text.trim();
|
|
30
|
+
if (trimmed.length === 0)
|
|
31
|
+
return;
|
|
32
|
+
this.#inbox.push({ text: trimmed, t });
|
|
33
|
+
}
|
|
34
|
+
/** Return the queued notes AND clear them — delivered once, so a hint never repeats. */
|
|
35
|
+
drain() {
|
|
36
|
+
return this.#inbox.splice(0, this.#inbox.length);
|
|
37
|
+
}
|
|
38
|
+
/** Diagnostic read of the inbox depth (does not clear). */
|
|
39
|
+
size() {
|
|
40
|
+
return this.#inbox.length;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The state a human control should move this session to, or undefined for "no change".
|
|
44
|
+
*
|
|
45
|
+
* Returning the decision rather than applying it keeps the ONE-PUSH-PER-TRANSITION rule enforceable
|
|
46
|
+
* by the caller: a no-op (resume while already active, pause after end) yields undefined and so
|
|
47
|
+
* cannot emit a presenter push. `ended` is terminal — pause and resume after it do nothing.
|
|
48
|
+
*/
|
|
49
|
+
nextStateFor(data) {
|
|
50
|
+
if (this.isEnded())
|
|
51
|
+
return undefined;
|
|
52
|
+
switch (data.kind) {
|
|
53
|
+
case HumanControlKind.PAUSE:
|
|
54
|
+
return this.isPaused() ? undefined : SessionState.PAUSED;
|
|
55
|
+
case HumanControlKind.RESUME:
|
|
56
|
+
return this.#state === SessionState.ACTIVE ? undefined : SessionState.ACTIVE;
|
|
57
|
+
case HumanControlKind.END:
|
|
58
|
+
return SessionState.ENDED;
|
|
59
|
+
default:
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=live-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-control.js","sourceRoot":"","sources":["../../src/session/live-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAQxF;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAW;IACtB,MAAM,GAAiB,YAAY,CAAC,MAAM,CAAC;IAClC,MAAM,GAAmB,EAAE,CAAC;IAErC,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,sGAAsG;IACtG,QAAQ,CAAC,IAAkB;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,wGAAwG;IACxG,IAAI,CAAC,IAAY,EAAE,CAAS;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,wFAAwF;IACxF,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,2DAA2D;IAC3D,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,IAAsB;QACjC,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAC;QACrC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,gBAAgB,CAAC,KAAK;gBACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3D,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,OAAO,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;YAC/E,KAAK,gBAAgB,CAAC,GAAG;gBACvB,OAAO,YAAY,CAAC,KAAK,CAAC;YAC5B;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type ReticleEvent } from '@reticlehq/core';
|
|
2
|
+
import { type AmbientCounts } from '../journal/ambient.js';
|
|
3
|
+
/**
|
|
4
|
+
* The two things a session learns by watching its own event stream, as opposed to storing.
|
|
5
|
+
*
|
|
6
|
+
* Both are LEVELS derived from a stream, and both have to outlive the ring buffer — which is what
|
|
7
|
+
* separates them from the buffer's job and earns them their own unit:
|
|
8
|
+
*
|
|
9
|
+
* ambient — which regions of the page move on their own (chat, tickers, live counters). Used by
|
|
10
|
+
* the settle oracle to ignore background motion, so an action isn't held open forever
|
|
11
|
+
* by churn it did not cause.
|
|
12
|
+
* blindSpots — how much of the page the SDK cannot observe (cross-origin frames, closed shadow
|
|
13
|
+
* roots). The SDK reports these only when the count CHANGES, so a page that mounts
|
|
14
|
+
* two frames at load announces them once and is silent forever after. Anything that
|
|
15
|
+
* infers coverage from a window of events therefore sees nothing and concludes the
|
|
16
|
+
* page was fully observed — a positive claim to have seen what we cannot see. Holding
|
|
17
|
+
* the level here makes coverage something to ask rather than infer.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ObservedState {
|
|
20
|
+
#private;
|
|
21
|
+
/** Fold one already-attributed event into the learned state. */
|
|
22
|
+
observe(event: ReticleEvent): void;
|
|
23
|
+
/**
|
|
24
|
+
* Learned ambient-churn counts — seeded history PLUS this session — for the settle oracle, which
|
|
25
|
+
* wants the sharpest available picture of what moves on its own.
|
|
26
|
+
*/
|
|
27
|
+
ambientCounts(): AmbientCounts;
|
|
28
|
+
/**
|
|
29
|
+
* ONLY what this session observed — the correct input to persistence.
|
|
30
|
+
*
|
|
31
|
+
* Teardown accumulates by adding the session's counts onto the file it loaded. When the session's
|
|
32
|
+
* counts still contained the seeded ones, that addition wrote `2 x persisted + own` every run, so
|
|
33
|
+
* the map doubled per session: the file committed in this repo had reached ~9.1e23 (about 2^80,
|
|
34
|
+
* i.e. ~80 sessions of doubling). Keeping the seed separate makes the accumulation what it always
|
|
35
|
+
* claimed to be — history plus what is new.
|
|
36
|
+
*/
|
|
37
|
+
ownAmbientCounts(): AmbientCounts;
|
|
38
|
+
/**
|
|
39
|
+
* Seed from the persisted per-app map so the picture sharpens across sessions.
|
|
40
|
+
* In-session counts win: they describe this page as it is now.
|
|
41
|
+
*/
|
|
42
|
+
seedAmbient(counts: AmbientCounts): void;
|
|
43
|
+
/** Latest reported count per blind-spot kind, for the whole session. */
|
|
44
|
+
blindSpots(): Readonly<Record<string, number>>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=observed-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observed-state.d.ts","sourceRoot":"","sources":["../../src/session/observed-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;;IAOxB,gEAAgE;IAChE,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAclC;;;OAGG;IACH,aAAa,IAAI,aAAa;IAQ9B;;;;;;;;OAQG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAIxC,wEAAwE;IACxE,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAG/C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { EventType } from '@reticlehq/core';
|
|
2
|
+
import { ambientKeyOf } from '../journal/ambient.js';
|
|
3
|
+
/**
|
|
4
|
+
* The two things a session learns by watching its own event stream, as opposed to storing.
|
|
5
|
+
*
|
|
6
|
+
* Both are LEVELS derived from a stream, and both have to outlive the ring buffer — which is what
|
|
7
|
+
* separates them from the buffer's job and earns them their own unit:
|
|
8
|
+
*
|
|
9
|
+
* ambient — which regions of the page move on their own (chat, tickers, live counters). Used by
|
|
10
|
+
* the settle oracle to ignore background motion, so an action isn't held open forever
|
|
11
|
+
* by churn it did not cause.
|
|
12
|
+
* blindSpots — how much of the page the SDK cannot observe (cross-origin frames, closed shadow
|
|
13
|
+
* roots). The SDK reports these only when the count CHANGES, so a page that mounts
|
|
14
|
+
* two frames at load announces them once and is silent forever after. Anything that
|
|
15
|
+
* infers coverage from a window of events therefore sees nothing and concludes the
|
|
16
|
+
* page was fully observed — a positive claim to have seen what we cannot see. Holding
|
|
17
|
+
* the level here makes coverage something to ask rather than infer.
|
|
18
|
+
*/
|
|
19
|
+
export class ObservedState {
|
|
20
|
+
/** What THIS session observed. Never contains seeded history — see seedAmbient. */
|
|
21
|
+
#ownAmbient = {};
|
|
22
|
+
/** What previous sessions learned, kept separate so it is never re-persisted as if newly seen. */
|
|
23
|
+
#seededAmbient = {};
|
|
24
|
+
#blindSpots = {};
|
|
25
|
+
/** Fold one already-attributed event into the learned state. */
|
|
26
|
+
observe(event) {
|
|
27
|
+
// Only UNATTRIBUTED events count as ambient: an event caused by an action is the action's work,
|
|
28
|
+
// and learning it as background would teach the settle oracle to ignore real effects.
|
|
29
|
+
if (event.actionId === undefined) {
|
|
30
|
+
const key = ambientKeyOf(event);
|
|
31
|
+
if (key !== undefined)
|
|
32
|
+
this.#ownAmbient[key] = (this.#ownAmbient[key] ?? 0) + 1;
|
|
33
|
+
}
|
|
34
|
+
if (event.type === EventType.BLIND_SPOT) {
|
|
35
|
+
const kind = event.data['kind'];
|
|
36
|
+
const count = event.data['count'];
|
|
37
|
+
if (typeof kind === 'string' && typeof count === 'number')
|
|
38
|
+
this.#blindSpots[kind] = count;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Learned ambient-churn counts — seeded history PLUS this session — for the settle oracle, which
|
|
43
|
+
* wants the sharpest available picture of what moves on its own.
|
|
44
|
+
*/
|
|
45
|
+
ambientCounts() {
|
|
46
|
+
const merged = { ...this.#seededAmbient };
|
|
47
|
+
for (const [key, count] of Object.entries(this.#ownAmbient)) {
|
|
48
|
+
merged[key] = (merged[key] ?? 0) + count;
|
|
49
|
+
}
|
|
50
|
+
return merged;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* ONLY what this session observed — the correct input to persistence.
|
|
54
|
+
*
|
|
55
|
+
* Teardown accumulates by adding the session's counts onto the file it loaded. When the session's
|
|
56
|
+
* counts still contained the seeded ones, that addition wrote `2 x persisted + own` every run, so
|
|
57
|
+
* the map doubled per session: the file committed in this repo had reached ~9.1e23 (about 2^80,
|
|
58
|
+
* i.e. ~80 sessions of doubling). Keeping the seed separate makes the accumulation what it always
|
|
59
|
+
* claimed to be — history plus what is new.
|
|
60
|
+
*/
|
|
61
|
+
ownAmbientCounts() {
|
|
62
|
+
return this.#ownAmbient;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Seed from the persisted per-app map so the picture sharpens across sessions.
|
|
66
|
+
* In-session counts win: they describe this page as it is now.
|
|
67
|
+
*/
|
|
68
|
+
seedAmbient(counts) {
|
|
69
|
+
this.#seededAmbient = { ...counts };
|
|
70
|
+
}
|
|
71
|
+
/** Latest reported count per blind-spot kind, for the whole session. */
|
|
72
|
+
blindSpots() {
|
|
73
|
+
return this.#blindSpots;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=observed-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observed-state.js","sourceRoot":"","sources":["../../src/session/observed-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAsB,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAa;IACxB,mFAAmF;IAC1E,WAAW,GAAkB,EAAE,CAAC;IACzC,kGAAkG;IAClG,cAAc,GAAkB,EAAE,CAAC;IAC1B,WAAW,GAA2B,EAAE,CAAC;IAElD,gEAAgE;IAChE,OAAO,CAAC,KAAmB;QACzB,gGAAgG;QAChG,sFAAsF;QACtF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,GAAG,KAAK,SAAS;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC5F,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,MAAM,MAAM,GAAkB,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,MAAqB;QAC/B,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,wEAAwE;IACxE,UAAU;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -12,6 +12,15 @@ interface CostHint {
|
|
|
12
12
|
/** Present when the timeline is large — tells the agent to scope its NEXT call (cut tokens). */
|
|
13
13
|
recommendation?: string;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Default cap for reticle_network / reticle_console when the caller passes no `limit`. Those tools
|
|
17
|
+
* default `since` to 0 (the whole session), so a long-lived or event-flooded session produced an
|
|
18
|
+
* UNBOUNDED result — a measured 1-hour flood is ~72,000 calls / ~1M tokens in a single tool result.
|
|
19
|
+
* Capping to the most-recent N (with `total`/`droppedOldest` disclosed, so nothing is hidden and the
|
|
20
|
+
* agent can page with since/until or a higher explicit limit) bounds the cost without changing the
|
|
21
|
+
* window. 200 comfortably covers a real flow's traffic while killing the pathological case.
|
|
22
|
+
*/
|
|
23
|
+
export declare const DEFAULT_QUERY_LIMIT = 200;
|
|
15
24
|
/** Keep only the most recent `maxEvents` events; report how many older ones were dropped. */
|
|
16
25
|
export declare function applyEventBudget(events: ReticleEvent[], maxEvents: number | undefined): {
|
|
17
26
|
events: ReticleEvent[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-budget.d.ts","sourceRoot":"","sources":["../../src/session/output-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;GAKG;AACH,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EAAE,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B;IAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAQnD;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,QAAQ,CAUtF;AAUD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAGnD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAG5C"}
|
|
1
|
+
{"version":3,"file":"output-budget.d.ts","sourceRoot":"","sources":["../../src/session/output-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;GAKG;AACH,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EAAE,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B;IAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAQnD;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,QAAQ,CAUtF;AAUD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAGnD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAG5C"}
|
|
@@ -6,6 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
const LARGE_TIMELINE_EVENTS = 80;
|
|
8
8
|
const LARGE_TIMELINE_BYTES = 8000;
|
|
9
|
+
/**
|
|
10
|
+
* Default cap for reticle_network / reticle_console when the caller passes no `limit`. Those tools
|
|
11
|
+
* default `since` to 0 (the whole session), so a long-lived or event-flooded session produced an
|
|
12
|
+
* UNBOUNDED result — a measured 1-hour flood is ~72,000 calls / ~1M tokens in a single tool result.
|
|
13
|
+
* Capping to the most-recent N (with `total`/`droppedOldest` disclosed, so nothing is hidden and the
|
|
14
|
+
* agent can page with since/until or a higher explicit limit) bounds the cost without changing the
|
|
15
|
+
* window. 200 comfortably covers a real flow's traffic while killing the pathological case.
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_QUERY_LIMIT = 200;
|
|
9
18
|
/** Keep only the most recent `maxEvents` events; report how many older ones were dropped. */
|
|
10
19
|
export function applyEventBudget(events, maxEvents) {
|
|
11
20
|
if (maxEvents === undefined || maxEvents < 0 || events.length <= maxEvents) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-budget.js","sourceRoot":"","sources":["../../src/session/output-budget.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAC9B,MAAsB,EACtB,SAA6B;IAE7B,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC3E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IACtC,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC/C,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS;KACzC,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,MAAc,EAAE,aAAa,GAAG,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3C,kGAAkG;IAClG,4FAA4F;IAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAa,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAChG,IAAI,MAAM,IAAI,qBAAqB,IAAI,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACrE,IAAI,CAAC,cAAc,GAAG,mBAAmB,MAAM,CAAC,MAAM,CAAC,aAAa,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,4GAA4G,CAAC;IAC/M,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;AAClD,CAAC;AAaD,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAI,MAAS;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACjE,OAAO,EAAE,GAAI,MAAkC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAO,CAAC;AACjF,CAAC"}
|
|
1
|
+
{"version":3,"file":"output-budget.js","sourceRoot":"","sources":["../../src/session/output-budget.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAC9B,MAAsB,EACtB,SAA6B;IAE7B,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC3E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IACtC,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC/C,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS;KACzC,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,MAAc,EAAE,aAAa,GAAG,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3C,kGAAkG;IAClG,4FAA4F;IAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAa,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAChG,IAAI,MAAM,IAAI,qBAAqB,IAAI,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACrE,IAAI,CAAC,cAAc,GAAG,mBAAmB,MAAM,CAAC,MAAM,CAAC,aAAa,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,4GAA4G,CAAC;IAC/M,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;AAClD,CAAC;AAaD,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAI,MAAS;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACjE,OAAO,EAAE,GAAI,MAAkC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAO,CAAC;AACjF,CAAC"}
|
|
@@ -25,7 +25,7 @@ export declare class ReviewStore {
|
|
|
25
25
|
#private;
|
|
26
26
|
/** Store a new mark (status pending) stamped with the caller-supplied session-relative time. */
|
|
27
27
|
add(data: HumanMarkData, at: number): ReviewMark;
|
|
28
|
-
/** All marks still awaiting a fix, oldest first. Reading never consumes — resolve
|
|
28
|
+
/** All marks still awaiting a fix, oldest first. Reading never consumes — resolve retires a mark. */
|
|
29
29
|
pending(): ReviewMark[];
|
|
30
30
|
/** Count of pending marks, for the panel badge / diagnostics. */
|
|
31
31
|
pendingCount(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-store.d.ts","sourceRoot":"","sources":["../../src/session/review-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1F;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;CACpB;AAeD,qBAAa,WAAW;;IAItB,gGAAgG;IAChG,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU;IAiBhD,
|
|
1
|
+
{"version":3,"file":"review-store.d.ts","sourceRoot":"","sources":["../../src/session/review-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1F;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;CACpB;AAeD,qBAAa,WAAW;;IAItB,gGAAgG;IAChG,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU;IAiBhD,qGAAqG;IACrG,OAAO,IAAI,UAAU,EAAE;IAIvB,iEAAiE;IACjE,YAAY,IAAI,MAAM;IAItB,uDAAuD;IACvD,GAAG,IAAI,UAAU,EAAE;IAInB;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAM7B"}
|
|
@@ -2,7 +2,7 @@ import { MarkStatus } from '@reticlehq/core';
|
|
|
2
2
|
/**
|
|
3
3
|
* Per-session store of human review marks (the "annotate the bug where you see it" inbox). A mark is
|
|
4
4
|
* added when a HUMAN_MARK event arrives, listed by the agent via reticle_review, and retired with
|
|
5
|
-
* resolve
|
|
5
|
+
* resolve when the agent claims the fix — distinct from the live-control inbox, which is drained
|
|
6
6
|
* (delivered-once) on read. Marks persist (read does not consume) so the agent can list, fix, and
|
|
7
7
|
* THEN resolve, and a fix can be verified against the same mark.
|
|
8
8
|
*
|
|
@@ -34,7 +34,7 @@ export class ReviewStore {
|
|
|
34
34
|
this.#marks.push(mark);
|
|
35
35
|
return mark;
|
|
36
36
|
}
|
|
37
|
-
/** All marks still awaiting a fix, oldest first. Reading never consumes — resolve
|
|
37
|
+
/** All marks still awaiting a fix, oldest first. Reading never consumes — resolve retires a mark. */
|
|
38
38
|
pending() {
|
|
39
39
|
return this.#marks.filter((m) => m.status === MarkStatus.PENDING).map((m) => ({ ...m }));
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-store.js","sourceRoot":"","sources":["../../src/session/review-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA+C,MAAM,iBAAiB,CAAC;AAsB1F;;;;;;;;;GASG;AACH,mFAAmF;AACnF,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,OAAO,WAAW;IACb,MAAM,GAAiB,EAAE,CAAC;IACnC,IAAI,GAAG,CAAC,CAAC;IAET,gGAAgG;IAChG,GAAG,CAAC,IAAmB,EAAE,EAAU;QACjC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACf,MAAM,IAAI,GAAe;YACvB,EAAE,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,EAAE;YACF,MAAM,EAAE,UAAU,CAAC,OAAO;SAC3B,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"review-store.js","sourceRoot":"","sources":["../../src/session/review-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA+C,MAAM,iBAAiB,CAAC;AAsB1F;;;;;;;;;GASG;AACH,mFAAmF;AACnF,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,OAAO,WAAW;IACb,MAAM,GAAiB,EAAE,CAAC;IACnC,IAAI,GAAG,CAAC,CAAC;IAET,gGAAgG;IAChG,GAAG,CAAC,IAAmB,EAAE,EAAU;QACjC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACf,MAAM,IAAI,GAAe;YACvB,EAAE,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,EAAE;YACF,MAAM,EAAE,UAAU,CAAC,OAAO;SAC3B,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qGAAqG;IACrG,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,iEAAiE;IACjE,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,uDAAuD;IACvD,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,EAAU;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5E,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -8,6 +8,8 @@ interface ResolveScope {
|
|
|
8
8
|
projectId?: string;
|
|
9
9
|
url?: string;
|
|
10
10
|
}
|
|
11
|
+
/** The scheme://host:port of a URL, or undefined if it can't be parsed. Used to compare origins. */
|
|
12
|
+
export declare function originOf(url: string | undefined): string | undefined;
|
|
11
13
|
/**
|
|
12
14
|
* Owns the set of connected browser sessions and the smart auto-selection that resolves which one a
|
|
13
15
|
* tool targets when the agent omits an explicit sessionId. Extracted from session.ts so each file
|
|
@@ -29,13 +31,13 @@ export declare class SessionManager {
|
|
|
29
31
|
* one connected, returns that.
|
|
30
32
|
*
|
|
31
33
|
* With none and multiple connected, applies smart auto-selection:
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
34
|
+
* 1. Prefer non-throttled sessions (not hidden + recently heard from).
|
|
35
|
+
* 2. Within each tier, prefer lowest lastSeenMs (most recently active SDK heartbeat).
|
|
36
|
+
* 3. If two or more non-throttled sessions are within 1 s of each other, throw —
|
|
37
|
+
* genuinely ambiguous, agent must specify sessionId.
|
|
38
|
+
* 4. If ALL sessions are throttled (e.g. user is working in their editor on another
|
|
39
|
+
* desktop), skip the gap check and pick the freshest heartbeat. This lets the agent
|
|
40
|
+
* keep working in the background without requiring sessionId every time.
|
|
39
41
|
*/
|
|
40
42
|
resolve(sessionId?: string, scope?: ResolveScope): Session;
|
|
41
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;GAIG;AACH,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;GAIG;AACH,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,oGAAoG;AACpG,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOpE;AA8BD;;;;GAIG;AACH,qBAAa,cAAc;;IASzB,qFAAqF;IACrF,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAItD,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAM1C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAMjC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,IAAI,IAAI,WAAW,EAAE;IAIrB,iGAAiG;IACjG,GAAG,IAAI,OAAO,EAAE;IAIhB,KAAK,IAAI,MAAM;IAIf;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO;CAoE3D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NO_SESSION_CONNECTED_ERROR } from '@reticlehq/core';
|
|
2
2
|
import { Session } from './session.js';
|
|
3
3
|
/** The scheme://host:port of a URL, or undefined if it can't be parsed. Used to compare origins. */
|
|
4
|
-
function originOf(url) {
|
|
4
|
+
export function originOf(url) {
|
|
5
5
|
if (url === undefined)
|
|
6
6
|
return undefined;
|
|
7
7
|
try {
|
|
@@ -83,13 +83,13 @@ export class SessionManager {
|
|
|
83
83
|
* one connected, returns that.
|
|
84
84
|
*
|
|
85
85
|
* With none and multiple connected, applies smart auto-selection:
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
86
|
+
* 1. Prefer non-throttled sessions (not hidden + recently heard from).
|
|
87
|
+
* 2. Within each tier, prefer lowest lastSeenMs (most recently active SDK heartbeat).
|
|
88
|
+
* 3. If two or more non-throttled sessions are within 1 s of each other, throw —
|
|
89
|
+
* genuinely ambiguous, agent must specify sessionId.
|
|
90
|
+
* 4. If ALL sessions are throttled (e.g. user is working in their editor on another
|
|
91
|
+
* desktop), skip the gap check and pick the freshest heartbeat. This lets the agent
|
|
92
|
+
* keep working in the background without requiring sessionId every time.
|
|
93
93
|
*/
|
|
94
94
|
resolve(sessionId, scope) {
|
|
95
95
|
if (sessionId !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AAYzD,oGAAoG;AACpG,
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export const RETICLE_LOOP_GUIDE = 'Reticle loop — LOOK: reticle_snapshot / ret
|
|
|
8
8
|
'OBSERVE: reticle_observe / reticle_wait_for / reticle_network / reticle_console · ASSERT: reticle_assert over program ' +
|
|
9
9
|
'truth, not just the DOM · REGRESS: reticle_record_start → reticle_replay, or reticle_flow_verify for the whole ' +
|
|
10
10
|
'suite. The human can flag bugs from the panel — drain them with reticle_review and resolve each once fixed. ' +
|
|
11
|
-
'MANDATORY: the moment you stop driving — finishing your reply or waiting on the human — call
|
|
11
|
+
'MANDATORY: the moment you stop driving — finishing your reply or waiting on the human — call reticle_session {action:"yield"} ' +
|
|
12
12
|
'(mode:"waiting", or mode:"ask" with the question) so the panel shows your real state; reticle_end_session ' +
|
|
13
13
|
'only when the whole task is done. Never leave the panel reading "live" when you have actually stopped.';
|
|
14
14
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-readiness.js","sourceRoot":"","sources":["../../src/session/session-readiness.ts"],"names":[],"mappings":"AAsBA,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,yHAAyH;IACzH,wHAAwH;IACxH,iHAAiH;IACjH,8GAA8G;IAC9G,
|
|
1
|
+
{"version":3,"file":"session-readiness.js","sourceRoot":"","sources":["../../src/session/session-readiness.ts"],"names":[],"mappings":"AAsBA,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,yHAAyH;IACzH,wHAAwH;IACxH,iHAAiH;IACjH,8GAA8G;IAC9G,gIAAgI;IAChI,4GAA4G;IAC5G,wGAAwG,CAAC;AAE3G;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAyB;IAC1D,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC;IAC5C,SAAS,CAAC;QACR,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;AACH,CAAC"}
|
|
@@ -26,7 +26,7 @@ export declare function reapIdleSessions(sessions: SessionManager): string[];
|
|
|
26
26
|
export declare function endAllSessions(sessions: SessionManager, reason: string): string[];
|
|
27
27
|
/**
|
|
28
28
|
* Runs {@link reapIdleSessions} on a Node interval. The timer is `unref`'d so it never keeps the
|
|
29
|
-
* process alive on its own, and `start
|
|
29
|
+
* process alive on its own, and `start` is idempotent.
|
|
30
30
|
*/
|
|
31
31
|
export declare class SessionReaper {
|
|
32
32
|
#private;
|
|
@@ -66,7 +66,7 @@ export function endAllSessions(sessions, reason) {
|
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
68
|
* Runs {@link reapIdleSessions} on a Node interval. The timer is `unref`'d so it never keeps the
|
|
69
|
-
* process alive on its own, and `start
|
|
69
|
+
* process alive on its own, and `start` is idempotent.
|
|
70
70
|
*/
|
|
71
71
|
export class SessionReaper {
|
|
72
72
|
#timer;
|
|
@@ -10,7 +10,7 @@ export interface RecommendationInputs {
|
|
|
10
10
|
/**
|
|
11
11
|
* A human-readable escape-hatch hint when a tab is hidden/throttled and may be
|
|
12
12
|
* un-scriptable/un-focusable from here. Returns undefined for a healthy tab so the field stays
|
|
13
|
-
* ABSENT (not empty). Keys on `hidden || throttled` — the same disjunction as Session.throttled
|
|
13
|
+
* ABSENT (not empty). Keys on `hidden || throttled` — the same disjunction as Session.throttled —
|
|
14
14
|
* so it never disagrees with the `throttled` flag the agent already sees. A merely-unfocused but
|
|
15
15
|
* live tab is still scriptable, so blur alone does not trigger it. Pure.
|
|
16
16
|
*/
|
|
@@ -2,7 +2,7 @@ import { UNSCRIPTABLE_TAB_RECOMMENDATION } from '@reticlehq/core';
|
|
|
2
2
|
/**
|
|
3
3
|
* A human-readable escape-hatch hint when a tab is hidden/throttled and may be
|
|
4
4
|
* un-scriptable/un-focusable from here. Returns undefined for a healthy tab so the field stays
|
|
5
|
-
* ABSENT (not empty). Keys on `hidden || throttled` — the same disjunction as Session.throttled
|
|
5
|
+
* ABSENT (not empty). Keys on `hidden || throttled` — the same disjunction as Session.throttled —
|
|
6
6
|
* so it never disagrees with the `throttled` flag the agent already sees. A merely-unfocused but
|
|
7
7
|
* live tab is still scriptable, so blur alone does not trigger it. Pure.
|
|
8
8
|
*/
|
|
@@ -10,7 +10,7 @@ import { asNumber, asString } from '../tools/tools-helpers.js';
|
|
|
10
10
|
*/
|
|
11
11
|
export const SESSION_TOOLS = [
|
|
12
12
|
{
|
|
13
|
-
name: ReticleTool.
|
|
13
|
+
name: ReticleTool.SESSION_TUNE,
|
|
14
14
|
description: 'Tune the presenter session for this app. { idleEndMs } sets how long the session stays open after you go quiet before the panel shows the human you are WAITING (your turn). Default 5min — the SLOW backstop; signal handback IMMEDIATELY with reticle_yield instead of waiting for this. Lower it for snappier auto-handback, raise it for a slow app where long gaps between your tool calls are normal. Enforced SERVER-SIDE (immune to background-tab throttling); it also fires if you (the MCP client) disconnect — so a forgotten or crashed session never leaves the HUD reading "live". Going quiet then acting again revives the session automatically. Returns { applied, idleEndMs }.',
|
|
15
15
|
inputSchema: {
|
|
16
16
|
idleEndMs: z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tools.js","sourceRoot":"","sources":["../../src/session/session-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC;QACE,IAAI,EAAE,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"session-tools.js","sourceRoot":"","sources":["../../src/session/session-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC;QACE,IAAI,EAAE,WAAW,CAAC,YAAY;QAC9B,WAAW,EACT,oqBAAoqB;QACtqB,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sKAAsK,CACvK;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sFAAsF,CACvF;SACJ;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACjC;QACD,OAAO,EAAE,KAAK,EAAE,IAAc,EAAE,IAAI,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9C,iGAAiG;YACjG,oFAAoF;YACpF,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAC/B,cAAc,CAAC,cAAc,EAC7B,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAC7C,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;YACnE,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACzC,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { WebSocket } from 'ws';
|
|
2
2
|
import { PresenterTone, SessionState, type CommandResult, type HelloMessage, type HumanControlData, type ReticleEvent } from '@reticlehq/core';
|
|
3
|
+
import type { JournalReader, JournalRecorder } from '../journal/journal-recorder.js';
|
|
4
|
+
import { type EventQueryOptions } from '../journal/journal-query.js';
|
|
5
|
+
import { type AmbientCounts } from '../journal/ambient.js';
|
|
6
|
+
import { type InboxMessage } from './live-control.js';
|
|
7
|
+
export type { InboxMessage } from './live-control.js';
|
|
3
8
|
import { type ReviewMark } from './review-store.js';
|
|
4
9
|
export interface SessionInfo {
|
|
5
10
|
sessionId: string;
|
|
@@ -32,11 +37,6 @@ export interface SessionHealth {
|
|
|
32
37
|
recommendation?: string;
|
|
33
38
|
}
|
|
34
39
|
type Clock = () => number;
|
|
35
|
-
/** Live-control: a human note queued for the agent, stamped with session-relative elapsed time. */
|
|
36
|
-
export interface InboxMessage {
|
|
37
|
-
text: string;
|
|
38
|
-
t: number;
|
|
39
|
-
}
|
|
40
40
|
/**
|
|
41
41
|
* One connected browser tab. Owns its socket, a ring buffer of observations, and the
|
|
42
42
|
* in-flight command map. `clock` is injected so elapsed-time logic stays testable.
|
|
@@ -68,6 +68,35 @@ export declare class Session {
|
|
|
68
68
|
staleMs(): number;
|
|
69
69
|
/** Re-stamp an incoming event with server-relative time, buffer it, and fan out. */
|
|
70
70
|
pushEvent(event: ReticleEvent, byteSize?: number): void;
|
|
71
|
+
/** Latest count per blind-spot kind; survives buffer eviction. See ObservedState for why. */
|
|
72
|
+
blindSpots(): Readonly<Record<string, number>>;
|
|
73
|
+
/** Learned ambient-churn counts (PredicateSession hook the settle oracle reads). */
|
|
74
|
+
ambientCounts(): AmbientCounts;
|
|
75
|
+
/** Only what THIS session observed — what teardown accumulates onto the persisted map. */
|
|
76
|
+
ownAmbientCounts(): AmbientCounts;
|
|
77
|
+
/** Seed the ambient map from the persisted per-app `.reticle/ambient.json` (sharpens across sessions). */
|
|
78
|
+
seedAmbient(counts: AmbientCounts): void;
|
|
79
|
+
/**
|
|
80
|
+
* Attach the durable causal-journal recorder (off by default; wired at session creation). The optional
|
|
81
|
+
* reader is the query fall-through source — pass it to make `queryEvents` survive buffer eviction.
|
|
82
|
+
*/
|
|
83
|
+
setJournal(recorder: JournalRecorder, reader?: JournalReader): void;
|
|
84
|
+
/**
|
|
85
|
+
* Journal-backed event query: the ring buffer's events, merged with the durable journal **only when
|
|
86
|
+
* the buffer has evicted** (so a healthy session pays no disk cost), then filtered by since/until/
|
|
87
|
+
* actionId. This is how "what did action N cause" is answered after the buffer has dropped the
|
|
88
|
+
* evidence — the substrate's whole point. The sync `eventsSince`/`window` stay for the hot path.
|
|
89
|
+
*/
|
|
90
|
+
queryEvents(options: EventQueryOptions): Promise<ReticleEvent[]>;
|
|
91
|
+
/**
|
|
92
|
+
* Open an action-attribution window: events observed until finishAction attribute to the returned
|
|
93
|
+
* action id. Ids are minted independently of command correlation ids so the journal is self-contained.
|
|
94
|
+
*/
|
|
95
|
+
beginAction(tool: string, args: Record<string, unknown>): string;
|
|
96
|
+
/** Close the active action window, persisting its action record with the settle outcome. */
|
|
97
|
+
finishAction(effect?: unknown, settled?: boolean, settledInMs?: number): void;
|
|
98
|
+
/** Flush any buffered journal events to disk (call on session end). */
|
|
99
|
+
flushJournal(): Promise<void>;
|
|
71
100
|
eventsSince(cursor: number): ReticleEvent[];
|
|
72
101
|
/**
|
|
73
102
|
* Honesty: remember the event cursor of the most recent act so wait_for/assert can default their
|
|
@@ -76,6 +105,10 @@ export declare class Session {
|
|
|
76
105
|
markActCursor(cursor: number): void;
|
|
77
106
|
/** The cursor of the last act, or undefined if nothing has acted yet. */
|
|
78
107
|
lastActCursor(): number | undefined;
|
|
108
|
+
/** Remember where the last acted control is written (`file:line`), for failures with no element. */
|
|
109
|
+
markActSource(source: string | undefined): void;
|
|
110
|
+
/** Where the last acted control is written, or undefined if nothing has acted yet. */
|
|
111
|
+
lastActSource(): string | undefined;
|
|
79
112
|
/**
|
|
80
113
|
* Stamp the wall-clock of the latest AGENT command (called whenever a tool resolves this session).
|
|
81
114
|
* If the reaper had auto-ended the session, a fresh command means the agent is alive again, so the
|
|
@@ -118,13 +151,13 @@ export declare class Session {
|
|
|
118
151
|
* summary) so a transition never emits two PRESENTER commands.
|
|
119
152
|
*/
|
|
120
153
|
setState(next: SessionState, text?: string, tone?: PresenterTone): void;
|
|
121
|
-
/** Push a human note onto the inbox
|
|
154
|
+
/** Push a human note onto the inbox (see LiveControl). */
|
|
122
155
|
pushMessage(text: string): void;
|
|
123
|
-
/**
|
|
156
|
+
/** Queued human notes, cleared as they are read (delivered-once). */
|
|
124
157
|
drainInbox(): InboxMessage[];
|
|
125
158
|
/** Diagnostic read of the inbox depth (does not clear). */
|
|
126
159
|
inboxSize(): number;
|
|
127
|
-
/** Human marks still awaiting a fix (oldest first). Reading does not consume — resolveMark
|
|
160
|
+
/** Human marks still awaiting a fix (oldest first). Reading does not consume — resolveMark does. */
|
|
128
161
|
pendingMarks(): ReviewMark[];
|
|
129
162
|
/** Full mark history (pending + resolved), oldest first. */
|
|
130
163
|
allMarks(): ReviewMark[];
|
|
@@ -133,9 +166,8 @@ export declare class Session {
|
|
|
133
166
|
/** Retire a mark the agent fixed. True on a real pending → resolved transition; false otherwise. */
|
|
134
167
|
resolveMark(id: string): boolean;
|
|
135
168
|
/**
|
|
136
|
-
* Apply a narrowed human control.
|
|
137
|
-
*
|
|
138
|
-
* end) push nothing. `ended` is terminal — pause/resume after end are no-ops.
|
|
169
|
+
* Apply a narrowed human control. LiveControl decides the transition; this applies it, so a real
|
|
170
|
+
* change pushes exactly one PRESENTER command and a no-op pushes none.
|
|
139
171
|
*/
|
|
140
172
|
applyHumanControl(data: HumanControlData): void;
|
|
141
173
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAOL,aAAa,EAIb,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIjE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAQD,KAAK,KAAK,GAAG,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
|