@reticlehq/server 2.2.1 → 2.4.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/README.md +1 -1
- package/dist/bridge-security.d.ts +0 -1
- package/dist/bridge-security.js +0 -1
- package/dist/bridge.d.ts +0 -1
- package/dist/bridge.js +102 -12
- package/dist/bridge.test-harness.d.ts +5 -1
- package/dist/bridge.test-harness.js +12 -1
- package/dist/capsule/capsule-store.d.ts +2 -3
- package/dist/capsule/capsule-store.js +0 -1
- package/dist/capsule/capsule.d.ts +0 -1
- package/dist/capsule/capsule.js +0 -1
- package/dist/capsule/causal-summary.d.ts +21 -1
- package/dist/capsule/causal-summary.js +20 -2
- package/dist/capsule/divergence.d.ts +0 -1
- package/dist/capsule/divergence.js +0 -1
- package/dist/capsule/minimize.d.ts +0 -1
- package/dist/capsule/minimize.js +0 -1
- package/dist/capsule/predicate-to-links.d.ts +0 -1
- package/dist/capsule/predicate-to-links.js +0 -1
- package/dist/cli-doctor.d.ts +6 -0
- package/dist/cli-doctor.js +60 -0
- package/dist/cli-flow-commands.d.ts +0 -1
- package/dist/cli-flow-commands.js +0 -1
- package/dist/cli-launch.d.ts +0 -1
- package/dist/cli-launch.js +7 -3
- package/dist/cli-parse.d.ts +47 -3
- package/dist/cli-parse.js +147 -13
- package/dist/cli-port.d.ts +3 -1
- package/dist/cli-port.js +21 -1
- package/dist/cli-verify.d.ts +0 -1
- package/dist/cli-verify.js +1 -2
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +88 -69
- package/dist/cloud/cloud-config.d.ts +0 -1
- package/dist/cloud/cloud-config.js +0 -1
- package/dist/cloud/cloud-sync.d.ts +4 -5
- package/dist/cloud/cloud-sync.js +0 -1
- package/dist/cloud-cli.d.ts +0 -1
- package/dist/cloud-cli.js +9 -2
- package/dist/crawl/crawl-tools.d.ts +0 -1
- package/dist/crawl/crawl-tools.js +1 -2
- package/dist/crawl/crawl.d.ts +17 -3
- package/dist/crawl/crawl.js +43 -4
- package/dist/daemon-resilience.d.ts +6 -1
- package/dist/daemon-resilience.js +63 -1
- package/dist/daemon.d.ts +23 -3
- package/dist/daemon.js +36 -24
- package/dist/domain/domain-model.d.ts +0 -1
- package/dist/domain/domain-model.js +1 -2
- package/dist/domain/domain-tools.d.ts +0 -7
- package/dist/domain/domain-tools.js +21 -4
- package/dist/domain/flow-risk.d.ts +0 -1
- package/dist/domain/flow-risk.js +0 -1
- package/dist/ee/audit-log.d.ts +0 -1
- package/dist/ee/audit-log.js +0 -1
- package/dist/events/body-failures.d.ts +4 -0
- package/dist/events/body-failures.js +113 -0
- package/dist/events/contradictions.d.ts +53 -0
- package/dist/events/contradictions.js +282 -0
- package/dist/events/echo-mismatch.d.ts +4 -0
- package/dist/events/echo-mismatch.js +138 -0
- package/dist/events/event-filters.d.ts +17 -3
- package/dist/events/event-filters.js +13 -3
- package/dist/events/json-salvage.d.ts +32 -0
- package/dist/events/json-salvage.js +96 -0
- package/dist/events/predicate-eval.d.ts +2 -1
- package/dist/events/predicate-eval.js +56 -9
- package/dist/events/predicate.d.ts +0 -1
- package/dist/events/predicate.js +56 -2
- package/dist/events/reaction.d.ts +0 -1
- package/dist/events/reaction.js +0 -1
- package/dist/events/reconcile.d.ts +39 -0
- package/dist/events/reconcile.js +211 -0
- package/dist/events/ring-buffer.d.ts +0 -1
- package/dist/events/ring-buffer.js +0 -1
- package/dist/events/stale-response.d.ts +4 -0
- package/dist/events/stale-response.js +139 -0
- package/dist/events/unit-mismatch.d.ts +16 -0
- package/dist/events/unit-mismatch.js +167 -0
- package/dist/flows/affected-tools.d.ts +18 -0
- package/dist/flows/affected-tools.js +52 -0
- package/dist/flows/affected.d.ts +0 -1
- package/dist/flows/affected.js +0 -1
- package/dist/flows/annotate-tools.d.ts +0 -1
- package/dist/flows/annotate-tools.js +21 -3
- package/dist/flows/annotate.d.ts +0 -1
- package/dist/flows/annotate.js +0 -1
- package/dist/flows/annotation-store.d.ts +0 -1
- package/dist/flows/annotation-store.js +0 -1
- package/dist/flows/assertion-integrity.d.ts +0 -1
- package/dist/flows/assertion-integrity.js +0 -1
- package/dist/flows/assertion-tiers-store.d.ts +0 -1
- package/dist/flows/assertion-tiers-store.js +0 -1
- package/dist/flows/buddy-status.d.ts +0 -1
- package/dist/flows/buddy-status.js +0 -1
- package/dist/flows/coverage.d.ts +0 -1
- package/dist/flows/coverage.js +0 -1
- package/dist/flows/decision.d.ts +0 -7
- package/dist/flows/decision.js +47 -7
- package/dist/flows/flake-store.d.ts +0 -1
- package/dist/flows/flake-store.js +0 -1
- package/dist/flows/flake.d.ts +0 -1
- package/dist/flows/flake.js +0 -1
- package/dist/flows/flow-classify.d.ts +0 -1
- package/dist/flows/flow-classify.js +0 -1
- package/dist/flows/flow-replay-run.d.ts +0 -1
- package/dist/flows/flow-replay-run.js +2 -3
- package/dist/flows/flow-replay.d.ts +20 -4
- package/dist/flows/flow-replay.js +9 -43
- package/dist/flows/flow-report.d.ts +0 -1
- package/dist/flows/flow-report.js +0 -1
- package/dist/flows/flow-scope.d.ts +0 -1
- package/dist/flows/flow-scope.js +0 -1
- package/dist/flows/flow-sources.d.ts +0 -1
- package/dist/flows/flow-sources.js +0 -1
- package/dist/flows/flow-step-runners.d.ts +23 -0
- package/dist/flows/flow-step-runners.js +102 -0
- package/dist/flows/flow-success.d.ts +0 -1
- package/dist/flows/flow-success.js +0 -1
- package/dist/flows/flow-tools.d.ts +0 -1
- package/dist/flows/flow-tools.js +44 -14
- package/dist/flows/flows.d.ts +6 -2
- package/dist/flows/flows.js +15 -2
- package/dist/flows/gate.d.ts +0 -1
- package/dist/flows/gate.js +0 -1
- package/dist/flows/git-changed.d.ts +0 -1
- package/dist/flows/git-changed.js +0 -1
- package/dist/flows/heal-run.d.ts +0 -1
- package/dist/flows/heal-run.js +0 -1
- package/dist/flows/heal.d.ts +0 -1
- package/dist/flows/heal.js +0 -1
- package/dist/flows/parallel-suite.d.ts +0 -1
- package/dist/flows/parallel-suite.js +0 -1
- package/dist/flows/recordings.d.ts +0 -1
- package/dist/flows/recordings.js +0 -1
- package/dist/flows/replay.d.ts +0 -1
- package/dist/flows/replay.js +71 -4
- package/dist/flows/server-verify.d.ts +0 -1
- package/dist/flows/server-verify.js +0 -1
- package/dist/flows/verify-change-tools.d.ts +2 -0
- package/dist/flows/verify-change-tools.js +187 -0
- package/dist/flows/watch-batcher.d.ts +0 -1
- package/dist/flows/watch-batcher.js +0 -1
- package/dist/honesty/accepted-write.d.ts +14 -0
- package/dist/honesty/accepted-write.js +17 -0
- package/dist/honesty/blind-spots.d.ts +18 -1
- package/dist/honesty/blind-spots.js +47 -5
- package/dist/honesty/honesty.d.ts +0 -1
- package/dist/honesty/honesty.js +0 -1
- package/dist/honesty/uncaptured-bodies.d.ts +19 -0
- package/dist/honesty/uncaptured-bodies.js +30 -0
- package/dist/honesty/unread-outcome.d.ts +2 -0
- package/dist/honesty/unread-outcome.js +50 -0
- package/dist/honesty/verified.d.ts +40 -0
- package/dist/honesty/verified.js +86 -0
- package/dist/http-server.d.ts +0 -1
- package/dist/http-server.js +5 -1
- package/dist/hunt/hunt-report.d.ts +50 -0
- package/dist/hunt/hunt-report.js +84 -0
- package/dist/idle-shutdown.d.ts +0 -1
- package/dist/idle-shutdown.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/init/agent-rules.d.ts +0 -1
- package/dist/init/agent-rules.js +4 -2
- package/dist/init/capabilities.d.ts +17 -0
- package/dist/init/capabilities.js +51 -0
- package/dist/init/cursor.d.ts +0 -1
- package/dist/init/cursor.js +0 -1
- package/dist/init/desktop-doctor.d.ts +40 -0
- package/dist/init/desktop-doctor.js +198 -0
- package/dist/init/detect.d.ts +25 -1
- package/dist/init/detect.js +65 -4
- package/dist/init/mcp.d.ts +0 -1
- package/dist/init/mcp.js +0 -1
- package/dist/init/next-patch.d.ts +41 -0
- package/dist/init/next-patch.js +106 -0
- package/dist/init/node-io.d.ts +0 -1
- package/dist/init/node-io.js +25 -1
- package/dist/init/patch-kind.d.ts +20 -0
- package/dist/init/patch-kind.js +10 -0
- package/dist/init/plan-framework.d.ts +35 -0
- package/dist/init/plan-framework.js +217 -0
- package/dist/init/plan.d.ts +55 -4
- package/dist/init/plan.js +130 -112
- package/dist/init/project-id.d.ts +0 -1
- package/dist/init/project-id.js +0 -1
- package/dist/init/run.d.ts +17 -1
- package/dist/init/run.js +237 -18
- package/dist/init/slash-command.d.ts +18 -0
- package/dist/init/slash-command.js +52 -0
- package/dist/init/snippets.d.ts +48 -3
- package/dist/init/snippets.js +156 -6
- package/dist/init/vite-config.d.ts +4 -11
- package/dist/init/vite-config.js +15 -8
- package/dist/input/driven-redaction.d.ts +15 -0
- package/dist/input/driven-redaction.js +76 -0
- package/dist/input/network-detail.d.ts +9 -4
- package/dist/input/network-detail.js +35 -16
- package/dist/input/network-mock-tools.d.ts +0 -1
- package/dist/input/network-mock-tools.js +3 -4
- package/dist/input/network-mock.d.ts +0 -1
- package/dist/input/network-mock.js +0 -1
- package/dist/input/real-input.d.ts +14 -1
- package/dist/input/real-input.js +45 -3
- package/dist/input/scroll-find.d.ts +0 -1
- package/dist/input/scroll-find.js +0 -1
- package/dist/input/scroll-tools.d.ts +0 -1
- package/dist/input/scroll-tools.js +0 -1
- package/dist/input/viewport-tools.d.ts +0 -1
- package/dist/input/viewport-tools.js +3 -4
- package/dist/journal/ambient-store.d.ts +0 -1
- package/dist/journal/ambient-store.js +0 -1
- package/dist/journal/ambient.d.ts +0 -1
- package/dist/journal/ambient.js +0 -1
- package/dist/journal/attach-journal.d.ts +0 -1
- package/dist/journal/attach-journal.js +0 -1
- package/dist/journal/deviation-report.d.ts +0 -1
- package/dist/journal/deviation-report.js +0 -1
- package/dist/journal/deviation-service.d.ts +0 -1
- package/dist/journal/deviation-service.js +0 -1
- package/dist/journal/envelope-store.d.ts +0 -1
- package/dist/journal/envelope-store.js +0 -1
- package/dist/journal/envelope.d.ts +8 -9
- package/dist/journal/envelope.js +0 -1
- package/dist/journal/journal-query.d.ts +0 -1
- package/dist/journal/journal-query.js +0 -1
- package/dist/journal/journal-recorder.d.ts +0 -1
- package/dist/journal/journal-recorder.js +0 -1
- package/dist/journal/retention.d.ts +0 -1
- package/dist/journal/retention.js +0 -1
- package/dist/journal/rollups.d.ts +0 -1
- package/dist/journal/rollups.js +0 -1
- package/dist/journal/session-end.d.ts +0 -1
- package/dist/journal/session-end.js +0 -1
- package/dist/journal/session-journal.d.ts +0 -1
- package/dist/journal/session-journal.js +0 -1
- package/dist/license/license.d.ts +0 -1
- package/dist/license/license.js +0 -1
- package/dist/log.d.ts +0 -1
- package/dist/log.js +0 -1
- package/dist/mcp-proxy.d.ts +35 -4
- package/dist/mcp-proxy.js +174 -28
- package/dist/mcp.d.ts +15 -1
- package/dist/mcp.js +145 -17
- package/dist/oracles/flow-instrument-gaps.d.ts +0 -1
- package/dist/oracles/flow-instrument-gaps.js +0 -1
- package/dist/oracles/propose-consequences.d.ts +0 -1
- package/dist/oracles/propose-consequences.js +0 -1
- package/dist/oracles/self-instrument.d.ts +0 -1
- package/dist/oracles/self-instrument.js +0 -1
- package/dist/pairing-token.d.ts +0 -1
- package/dist/pairing-token.js +0 -1
- package/dist/phenomena/phenomena.d.ts +0 -1
- package/dist/phenomena/phenomena.js +0 -1
- package/dist/pool/browser-pool.d.ts +0 -1
- package/dist/pool/browser-pool.js +0 -1
- package/dist/pool/lease-reaper.d.ts +0 -1
- package/dist/pool/lease-reaper.js +0 -1
- package/dist/pool/playwright-launcher.d.ts +0 -1
- package/dist/pool/playwright-launcher.js +10 -2
- package/dist/project/baselines.d.ts +0 -1
- package/dist/project/baselines.js +0 -1
- package/dist/project/file-lock.d.ts +2 -1
- package/dist/project/file-lock.js +12 -2
- package/dist/project/fs-port.d.ts +0 -1
- package/dist/project/fs-port.js +0 -1
- package/dist/project/project-store.d.ts +0 -1
- package/dist/project/project-store.js +0 -1
- package/dist/project/project-tools.d.ts +0 -1
- package/dist/project/project-tools.js +29 -4
- package/dist/project/reticle-dir.d.ts +0 -1
- package/dist/project/reticle-dir.js +0 -1
- package/dist/runs/build-verification-run.d.ts +0 -1
- package/dist/runs/build-verification-run.js +0 -1
- package/dist/runs/profile-redact.d.ts +0 -1
- package/dist/runs/profile-redact.js +0 -1
- package/dist/runs/render-report.d.ts +0 -1
- package/dist/runs/render-report.js +0 -1
- package/dist/runs/repair-prompt.d.ts +0 -1
- package/dist/runs/repair-prompt.js +0 -1
- package/dist/runs/replay-mapping.d.ts +0 -1
- package/dist/runs/replay-mapping.js +0 -1
- package/dist/runs/reticle-runner.d.ts +0 -1
- package/dist/runs/reticle-runner.js +4 -2
- package/dist/runs/risk-classify.d.ts +0 -1
- package/dist/runs/risk-classify.js +0 -1
- package/dist/runs/run-diff.d.ts +0 -1
- package/dist/runs/run-diff.js +0 -1
- package/dist/runs/run-store.d.ts +0 -1
- package/dist/runs/run-store.js +0 -1
- package/dist/runs/run-tools.d.ts +0 -1
- package/dist/runs/run-tools.js +0 -1
- package/dist/runs/runner-port.d.ts +0 -1
- package/dist/runs/runner-port.js +0 -1
- package/dist/runs/verification-sync.d.ts +0 -1
- package/dist/runs/verification-sync.js +0 -1
- package/dist/runs/verify-http.d.ts +0 -1
- package/dist/runs/verify-http.js +0 -1
- package/dist/runs/verify-server.d.ts +0 -1
- package/dist/runs/verify-server.js +0 -1
- package/dist/server-version.d.ts +0 -1
- package/dist/server-version.js +0 -1
- package/dist/session/command-timeout.d.ts +35 -0
- package/dist/session/command-timeout.js +41 -0
- package/dist/session/control-envelope.d.ts +2 -3
- package/dist/session/control-envelope.js +2 -3
- package/dist/session/last-act.d.ts +31 -0
- package/dist/session/last-act.js +24 -0
- package/dist/session/live-control-tools.d.ts +0 -1
- package/dist/session/live-control-tools.js +3 -4
- package/dist/session/live-control.d.ts +0 -1
- package/dist/session/live-control.js +0 -1
- package/dist/session/observed-state.d.ts +12 -2
- package/dist/session/observed-state.js +29 -2
- package/dist/session/output-budget.d.ts +0 -1
- package/dist/session/output-budget.js +0 -1
- package/dist/session/pending-commands.d.ts +12 -0
- package/dist/session/pending-commands.js +36 -0
- package/dist/session/presenter-args.d.ts +0 -1
- package/dist/session/presenter-args.js +0 -1
- package/dist/session/review-store.d.ts +0 -1
- package/dist/session/review-store.js +0 -1
- package/dist/session/session-health.d.ts +26 -2
- package/dist/session/session-health.js +13 -1
- package/dist/session/session-info.d.ts +29 -0
- package/dist/session/session-info.js +1 -0
- package/dist/session/session-lease.d.ts +25 -0
- package/dist/session/session-lease.js +14 -0
- package/dist/session/session-manager.d.ts +7 -19
- package/dist/session/session-manager.js +35 -2
- package/dist/session/session-readiness.d.ts +0 -1
- package/dist/session/session-readiness.js +3 -4
- package/dist/session/session-reaper.d.ts +0 -1
- package/dist/session/session-reaper.js +0 -1
- package/dist/session/session-recommendation.d.ts +0 -1
- package/dist/session/session-recommendation.js +0 -1
- package/dist/session/session-tools.d.ts +0 -1
- package/dist/session/session-tools.js +2 -3
- package/dist/session/session.d.ts +33 -53
- package/dist/session/session.js +102 -66
- package/dist/session/state-select.d.ts +0 -1
- package/dist/session/state-select.js +0 -1
- package/dist/telemetry/argument-shape.d.ts +41 -0
- package/dist/telemetry/argument-shape.js +87 -0
- package/dist/telemetry/bug-found.d.ts +33 -0
- package/dist/telemetry/bug-found.js +95 -0
- package/dist/telemetry/cli-telemetry.d.ts +13 -0
- package/dist/telemetry/cli-telemetry.js +43 -0
- package/dist/telemetry/connect-failure.d.ts +16 -0
- package/dist/telemetry/connect-failure.js +44 -0
- package/dist/telemetry/daemon-telemetry.d.ts +19 -0
- package/dist/telemetry/daemon-telemetry.js +76 -0
- package/dist/telemetry/dev-repo.d.ts +10 -0
- package/dist/telemetry/dev-repo.js +80 -0
- package/dist/telemetry/error-fingerprint.d.ts +24 -0
- package/dist/telemetry/error-fingerprint.js +88 -0
- package/dist/telemetry/feedback-cli.d.ts +31 -0
- package/dist/telemetry/feedback-cli.js +102 -0
- package/dist/telemetry/feedback-context.d.ts +32 -0
- package/dist/telemetry/feedback-context.js +143 -0
- package/dist/telemetry/feedback.d.ts +66 -0
- package/dist/telemetry/feedback.js +175 -0
- package/dist/telemetry/git-facts.d.ts +21 -0
- package/dist/telemetry/git-facts.js +109 -0
- package/dist/telemetry/identify.d.ts +22 -0
- package/dist/telemetry/identify.js +73 -0
- package/dist/telemetry/init-telemetry.d.ts +26 -0
- package/dist/telemetry/init-telemetry.js +33 -0
- package/dist/telemetry/machine-snapshot.d.ts +6 -0
- package/dist/telemetry/machine-snapshot.js +39 -0
- package/dist/telemetry/mcp-connection.d.ts +5 -0
- package/dist/telemetry/mcp-connection.js +44 -0
- package/dist/telemetry/project-profile.d.ts +44 -0
- package/dist/telemetry/project-profile.js +205 -0
- package/dist/telemetry/run-telemetry.d.ts +21 -0
- package/dist/telemetry/run-telemetry.js +62 -0
- package/dist/telemetry/session-metrics.d.ts +103 -0
- package/dist/telemetry/session-metrics.js +329 -0
- package/dist/telemetry/telemetry.d.ts +35 -8
- package/dist/telemetry/telemetry.js +105 -12
- package/dist/token-auth.d.ts +0 -1
- package/dist/token-auth.js +0 -1
- package/dist/tools/act-capsule.d.ts +23 -0
- package/dist/tools/act-capsule.js +47 -0
- package/dist/tools/act-danger.d.ts +7 -0
- package/dist/tools/act-danger.js +44 -0
- package/dist/tools/act-helpers.d.ts +17 -0
- package/dist/tools/act-helpers.js +40 -0
- package/dist/tools/act-tools.d.ts +8 -1
- package/dist/tools/act-tools.js +96 -98
- package/dist/tools/act-view.d.ts +7 -1
- package/dist/tools/act-view.js +13 -1
- package/dist/tools/assert-grade.d.ts +22 -1
- package/dist/tools/assert-grade.js +46 -1
- package/dist/tools/assert-verdict.d.ts +21 -0
- package/dist/tools/assert-verdict.js +62 -0
- package/dist/tools/browser-tools.d.ts +0 -1
- package/dist/tools/browser-tools.js +2 -2
- package/dist/tools/contract-tools.d.ts +0 -1
- package/dist/tools/contract-tools.js +0 -1
- package/dist/tools/coverage-tools.d.ts +9 -0
- package/dist/tools/coverage-tools.js +92 -0
- package/dist/tools/dynamic-tools.d.ts +0 -1
- package/dist/tools/dynamic-tools.js +21 -2
- package/dist/tools/error-recovery.d.ts +18 -2
- package/dist/tools/error-recovery.js +42 -7
- package/dist/tools/feedback-tools.d.ts +24 -0
- package/dist/tools/feedback-tools.js +180 -0
- package/dist/tools/invoke-tool.d.ts +0 -1
- package/dist/tools/invoke-tool.js +115 -5
- package/dist/tools/lease-tools.d.ts +0 -1
- package/dist/tools/lease-tools.js +6 -5
- package/dist/tools/merge-tools.d.ts +0 -1
- package/dist/tools/merge-tools.js +0 -1
- package/dist/tools/observe-tools.d.ts +0 -1
- package/dist/tools/observe-tools.js +91 -39
- package/dist/tools/profiles.d.ts +1 -2
- package/dist/tools/profiles.js +43 -16
- package/dist/tools/query-paginate.d.ts +0 -1
- package/dist/tools/query-paginate.js +0 -1
- package/dist/tools/read-tools.d.ts +0 -1
- package/dist/tools/read-tools.js +14 -8
- package/dist/tools/reconcile-tools.d.ts +2 -0
- package/dist/tools/reconcile-tools.js +111 -0
- package/dist/tools/snapshot-delta.d.ts +0 -1
- package/dist/tools/snapshot-delta.js +0 -0
- package/dist/tools/tool-invoker.d.ts +0 -1
- package/dist/tools/tool-invoker.js +0 -1
- package/dist/tools/tool-kit.d.ts +16 -1
- package/dist/tools/tool-kit.js +8 -2
- package/dist/tools/tool-names.d.ts +6 -1
- package/dist/tools/tool-names.js +6 -1
- package/dist/tools/tools-helpers.d.ts +0 -1
- package/dist/tools/tools-helpers.js +0 -1
- package/dist/tools/tools.d.ts +0 -1
- package/dist/tools/tools.js +24 -4
- package/dist/update/update-checker.d.ts +0 -1
- package/dist/update/update-checker.js +0 -1
- package/dist/update/update-nudge.d.ts +20 -0
- package/dist/update/update-nudge.js +72 -0
- package/dist/update/updater.d.ts +14 -1
- package/dist/update/updater.js +33 -2
- package/dist/visual/visual-diff.d.ts +0 -1
- package/dist/visual/visual-diff.js +0 -1
- package/dist/visual/visual-store.d.ts +0 -1
- package/dist/visual/visual-store.js +0 -1
- package/dist/visual/visual-tools.d.ts +0 -1
- package/dist/visual/visual-tools.js +103 -16
- package/package.json +2 -2
- package/dist/bridge-security.d.ts.map +0 -1
- package/dist/bridge-security.js.map +0 -1
- package/dist/bridge.d.ts.map +0 -1
- package/dist/bridge.js.map +0 -1
- package/dist/bridge.test-harness.d.ts.map +0 -1
- package/dist/bridge.test-harness.js.map +0 -1
- package/dist/capsule/capsule-store.d.ts.map +0 -1
- package/dist/capsule/capsule-store.js.map +0 -1
- package/dist/capsule/capsule.d.ts.map +0 -1
- package/dist/capsule/capsule.js.map +0 -1
- package/dist/capsule/causal-summary.d.ts.map +0 -1
- package/dist/capsule/causal-summary.js.map +0 -1
- package/dist/capsule/divergence.d.ts.map +0 -1
- package/dist/capsule/divergence.js.map +0 -1
- package/dist/capsule/minimize.d.ts.map +0 -1
- package/dist/capsule/minimize.js.map +0 -1
- package/dist/capsule/predicate-to-links.d.ts.map +0 -1
- package/dist/capsule/predicate-to-links.js.map +0 -1
- package/dist/cli-flow-commands.d.ts.map +0 -1
- package/dist/cli-flow-commands.js.map +0 -1
- package/dist/cli-launch.d.ts.map +0 -1
- package/dist/cli-launch.js.map +0 -1
- package/dist/cli-parse.d.ts.map +0 -1
- package/dist/cli-parse.js.map +0 -1
- package/dist/cli-port.d.ts.map +0 -1
- package/dist/cli-port.js.map +0 -1
- package/dist/cli-verify.d.ts.map +0 -1
- package/dist/cli-verify.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cloud/cloud-config.d.ts.map +0 -1
- package/dist/cloud/cloud-config.js.map +0 -1
- package/dist/cloud/cloud-sync.d.ts.map +0 -1
- package/dist/cloud/cloud-sync.js.map +0 -1
- package/dist/cloud-cli.d.ts.map +0 -1
- package/dist/cloud-cli.js.map +0 -1
- package/dist/crawl/crawl-tools.d.ts.map +0 -1
- package/dist/crawl/crawl-tools.js.map +0 -1
- package/dist/crawl/crawl.d.ts.map +0 -1
- package/dist/crawl/crawl.js.map +0 -1
- package/dist/daemon-resilience.d.ts.map +0 -1
- package/dist/daemon-resilience.js.map +0 -1
- package/dist/daemon.d.ts.map +0 -1
- package/dist/daemon.js.map +0 -1
- package/dist/domain/domain-model.d.ts.map +0 -1
- package/dist/domain/domain-model.js.map +0 -1
- package/dist/domain/domain-tools.d.ts.map +0 -1
- package/dist/domain/domain-tools.js.map +0 -1
- package/dist/domain/flow-risk.d.ts.map +0 -1
- package/dist/domain/flow-risk.js.map +0 -1
- package/dist/ee/audit-log.d.ts.map +0 -1
- package/dist/ee/audit-log.js.map +0 -1
- package/dist/events/event-filters.d.ts.map +0 -1
- package/dist/events/event-filters.js.map +0 -1
- package/dist/events/predicate-eval.d.ts.map +0 -1
- package/dist/events/predicate-eval.js.map +0 -1
- package/dist/events/predicate.d.ts.map +0 -1
- package/dist/events/predicate.js.map +0 -1
- package/dist/events/reaction.d.ts.map +0 -1
- package/dist/events/reaction.js.map +0 -1
- package/dist/events/ring-buffer.d.ts.map +0 -1
- package/dist/events/ring-buffer.js.map +0 -1
- package/dist/flows/affected.d.ts.map +0 -1
- package/dist/flows/affected.js.map +0 -1
- package/dist/flows/annotate-tools.d.ts.map +0 -1
- package/dist/flows/annotate-tools.js.map +0 -1
- package/dist/flows/annotate.d.ts.map +0 -1
- package/dist/flows/annotate.js.map +0 -1
- package/dist/flows/annotation-store.d.ts.map +0 -1
- package/dist/flows/annotation-store.js.map +0 -1
- package/dist/flows/assertion-integrity.d.ts.map +0 -1
- package/dist/flows/assertion-integrity.js.map +0 -1
- package/dist/flows/assertion-tiers-store.d.ts.map +0 -1
- package/dist/flows/assertion-tiers-store.js.map +0 -1
- package/dist/flows/buddy-status.d.ts.map +0 -1
- package/dist/flows/buddy-status.js.map +0 -1
- package/dist/flows/coverage.d.ts.map +0 -1
- package/dist/flows/coverage.js.map +0 -1
- package/dist/flows/decision.d.ts.map +0 -1
- package/dist/flows/decision.js.map +0 -1
- package/dist/flows/flake-store.d.ts.map +0 -1
- package/dist/flows/flake-store.js.map +0 -1
- package/dist/flows/flake.d.ts.map +0 -1
- package/dist/flows/flake.js.map +0 -1
- package/dist/flows/flow-classify.d.ts.map +0 -1
- package/dist/flows/flow-classify.js.map +0 -1
- package/dist/flows/flow-replay-run.d.ts.map +0 -1
- package/dist/flows/flow-replay-run.js.map +0 -1
- package/dist/flows/flow-replay.d.ts.map +0 -1
- package/dist/flows/flow-replay.js.map +0 -1
- package/dist/flows/flow-report.d.ts.map +0 -1
- package/dist/flows/flow-report.js.map +0 -1
- package/dist/flows/flow-scope.d.ts.map +0 -1
- package/dist/flows/flow-scope.js.map +0 -1
- package/dist/flows/flow-sources.d.ts.map +0 -1
- package/dist/flows/flow-sources.js.map +0 -1
- package/dist/flows/flow-success.d.ts.map +0 -1
- package/dist/flows/flow-success.js.map +0 -1
- package/dist/flows/flow-tools.d.ts.map +0 -1
- package/dist/flows/flow-tools.js.map +0 -1
- package/dist/flows/flows.d.ts.map +0 -1
- package/dist/flows/flows.js.map +0 -1
- package/dist/flows/gate.d.ts.map +0 -1
- package/dist/flows/gate.js.map +0 -1
- package/dist/flows/git-changed.d.ts.map +0 -1
- package/dist/flows/git-changed.js.map +0 -1
- package/dist/flows/heal-run.d.ts.map +0 -1
- package/dist/flows/heal-run.js.map +0 -1
- package/dist/flows/heal.d.ts.map +0 -1
- package/dist/flows/heal.js.map +0 -1
- package/dist/flows/parallel-suite.d.ts.map +0 -1
- package/dist/flows/parallel-suite.js.map +0 -1
- package/dist/flows/recordings.d.ts.map +0 -1
- package/dist/flows/recordings.js.map +0 -1
- package/dist/flows/replay.d.ts.map +0 -1
- package/dist/flows/replay.js.map +0 -1
- package/dist/flows/server-verify.d.ts.map +0 -1
- package/dist/flows/server-verify.js.map +0 -1
- package/dist/flows/watch-batcher.d.ts.map +0 -1
- package/dist/flows/watch-batcher.js.map +0 -1
- package/dist/honesty/blind-spots.d.ts.map +0 -1
- package/dist/honesty/blind-spots.js.map +0 -1
- package/dist/honesty/honesty.d.ts.map +0 -1
- package/dist/honesty/honesty.js.map +0 -1
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js.map +0 -1
- package/dist/idle-shutdown.d.ts.map +0 -1
- package/dist/idle-shutdown.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init/agent-rules.d.ts.map +0 -1
- package/dist/init/agent-rules.js.map +0 -1
- package/dist/init/cursor.d.ts.map +0 -1
- package/dist/init/cursor.js.map +0 -1
- package/dist/init/detect.d.ts.map +0 -1
- package/dist/init/detect.js.map +0 -1
- package/dist/init/mcp.d.ts.map +0 -1
- package/dist/init/mcp.js.map +0 -1
- package/dist/init/node-io.d.ts.map +0 -1
- package/dist/init/node-io.js.map +0 -1
- package/dist/init/plan.d.ts.map +0 -1
- package/dist/init/plan.js.map +0 -1
- package/dist/init/project-id.d.ts.map +0 -1
- package/dist/init/project-id.js.map +0 -1
- package/dist/init/run.d.ts.map +0 -1
- package/dist/init/run.js.map +0 -1
- package/dist/init/snippets.d.ts.map +0 -1
- package/dist/init/snippets.js.map +0 -1
- package/dist/init/vite-config.d.ts.map +0 -1
- package/dist/init/vite-config.js.map +0 -1
- package/dist/input/network-detail.d.ts.map +0 -1
- package/dist/input/network-detail.js.map +0 -1
- package/dist/input/network-mock-tools.d.ts.map +0 -1
- package/dist/input/network-mock-tools.js.map +0 -1
- package/dist/input/network-mock.d.ts.map +0 -1
- package/dist/input/network-mock.js.map +0 -1
- package/dist/input/real-input.d.ts.map +0 -1
- package/dist/input/real-input.js.map +0 -1
- package/dist/input/scroll-find.d.ts.map +0 -1
- package/dist/input/scroll-find.js.map +0 -1
- package/dist/input/scroll-tools.d.ts.map +0 -1
- package/dist/input/scroll-tools.js.map +0 -1
- package/dist/input/viewport-tools.d.ts.map +0 -1
- package/dist/input/viewport-tools.js.map +0 -1
- package/dist/journal/ambient-store.d.ts.map +0 -1
- package/dist/journal/ambient-store.js.map +0 -1
- package/dist/journal/ambient.d.ts.map +0 -1
- package/dist/journal/ambient.js.map +0 -1
- package/dist/journal/attach-journal.d.ts.map +0 -1
- package/dist/journal/attach-journal.js.map +0 -1
- package/dist/journal/deviation-report.d.ts.map +0 -1
- package/dist/journal/deviation-report.js.map +0 -1
- package/dist/journal/deviation-service.d.ts.map +0 -1
- package/dist/journal/deviation-service.js.map +0 -1
- package/dist/journal/envelope-store.d.ts.map +0 -1
- package/dist/journal/envelope-store.js.map +0 -1
- package/dist/journal/envelope.d.ts.map +0 -1
- package/dist/journal/envelope.js.map +0 -1
- package/dist/journal/journal-query.d.ts.map +0 -1
- package/dist/journal/journal-query.js.map +0 -1
- package/dist/journal/journal-recorder.d.ts.map +0 -1
- package/dist/journal/journal-recorder.js.map +0 -1
- package/dist/journal/retention.d.ts.map +0 -1
- package/dist/journal/retention.js.map +0 -1
- package/dist/journal/rollups.d.ts.map +0 -1
- package/dist/journal/rollups.js.map +0 -1
- package/dist/journal/session-end.d.ts.map +0 -1
- package/dist/journal/session-end.js.map +0 -1
- package/dist/journal/session-journal.d.ts.map +0 -1
- package/dist/journal/session-journal.js.map +0 -1
- package/dist/license/license.d.ts.map +0 -1
- package/dist/license/license.js.map +0 -1
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js.map +0 -1
- package/dist/mcp-proxy.d.ts.map +0 -1
- package/dist/mcp-proxy.js.map +0 -1
- package/dist/mcp.d.ts.map +0 -1
- package/dist/mcp.js.map +0 -1
- package/dist/oracles/flow-instrument-gaps.d.ts.map +0 -1
- package/dist/oracles/flow-instrument-gaps.js.map +0 -1
- package/dist/oracles/propose-consequences.d.ts.map +0 -1
- package/dist/oracles/propose-consequences.js.map +0 -1
- package/dist/oracles/self-instrument.d.ts.map +0 -1
- package/dist/oracles/self-instrument.js.map +0 -1
- package/dist/pairing-token.d.ts.map +0 -1
- package/dist/pairing-token.js.map +0 -1
- package/dist/phenomena/phenomena.d.ts.map +0 -1
- package/dist/phenomena/phenomena.js.map +0 -1
- package/dist/pool/browser-pool.d.ts.map +0 -1
- package/dist/pool/browser-pool.js.map +0 -1
- package/dist/pool/lease-reaper.d.ts.map +0 -1
- package/dist/pool/lease-reaper.js.map +0 -1
- package/dist/pool/playwright-launcher.d.ts.map +0 -1
- package/dist/pool/playwright-launcher.js.map +0 -1
- package/dist/project/baselines.d.ts.map +0 -1
- package/dist/project/baselines.js.map +0 -1
- package/dist/project/file-lock.d.ts.map +0 -1
- package/dist/project/file-lock.js.map +0 -1
- package/dist/project/fs-port.d.ts.map +0 -1
- package/dist/project/fs-port.js.map +0 -1
- package/dist/project/project-store.d.ts.map +0 -1
- package/dist/project/project-store.js.map +0 -1
- package/dist/project/project-tools.d.ts.map +0 -1
- package/dist/project/project-tools.js.map +0 -1
- package/dist/project/reticle-dir.d.ts.map +0 -1
- package/dist/project/reticle-dir.js.map +0 -1
- package/dist/runs/build-verification-run.d.ts.map +0 -1
- package/dist/runs/build-verification-run.js.map +0 -1
- package/dist/runs/profile-redact.d.ts.map +0 -1
- package/dist/runs/profile-redact.js.map +0 -1
- package/dist/runs/render-report.d.ts.map +0 -1
- package/dist/runs/render-report.js.map +0 -1
- package/dist/runs/repair-prompt.d.ts.map +0 -1
- package/dist/runs/repair-prompt.js.map +0 -1
- package/dist/runs/replay-mapping.d.ts.map +0 -1
- package/dist/runs/replay-mapping.js.map +0 -1
- package/dist/runs/reticle-runner.d.ts.map +0 -1
- package/dist/runs/reticle-runner.js.map +0 -1
- package/dist/runs/risk-classify.d.ts.map +0 -1
- package/dist/runs/risk-classify.js.map +0 -1
- package/dist/runs/run-diff.d.ts.map +0 -1
- package/dist/runs/run-diff.js.map +0 -1
- package/dist/runs/run-store.d.ts.map +0 -1
- package/dist/runs/run-store.js.map +0 -1
- package/dist/runs/run-tools.d.ts.map +0 -1
- package/dist/runs/run-tools.js.map +0 -1
- package/dist/runs/runner-port.d.ts.map +0 -1
- package/dist/runs/runner-port.js.map +0 -1
- package/dist/runs/verification-sync.d.ts.map +0 -1
- package/dist/runs/verification-sync.js.map +0 -1
- package/dist/runs/verify-http.d.ts.map +0 -1
- package/dist/runs/verify-http.js.map +0 -1
- package/dist/runs/verify-server.d.ts.map +0 -1
- package/dist/runs/verify-server.js.map +0 -1
- package/dist/server-version.d.ts.map +0 -1
- package/dist/server-version.js.map +0 -1
- package/dist/session/control-envelope.d.ts.map +0 -1
- package/dist/session/control-envelope.js.map +0 -1
- package/dist/session/live-control-tools.d.ts.map +0 -1
- package/dist/session/live-control-tools.js.map +0 -1
- package/dist/session/live-control.d.ts.map +0 -1
- package/dist/session/live-control.js.map +0 -1
- package/dist/session/observed-state.d.ts.map +0 -1
- package/dist/session/observed-state.js.map +0 -1
- package/dist/session/output-budget.d.ts.map +0 -1
- package/dist/session/output-budget.js.map +0 -1
- package/dist/session/presenter-args.d.ts.map +0 -1
- package/dist/session/presenter-args.js.map +0 -1
- package/dist/session/review-store.d.ts.map +0 -1
- package/dist/session/review-store.js.map +0 -1
- package/dist/session/session-health.d.ts.map +0 -1
- package/dist/session/session-health.js.map +0 -1
- package/dist/session/session-manager.d.ts.map +0 -1
- package/dist/session/session-manager.js.map +0 -1
- package/dist/session/session-readiness.d.ts.map +0 -1
- package/dist/session/session-readiness.js.map +0 -1
- package/dist/session/session-reaper.d.ts.map +0 -1
- package/dist/session/session-reaper.js.map +0 -1
- package/dist/session/session-recommendation.d.ts.map +0 -1
- package/dist/session/session-recommendation.js.map +0 -1
- package/dist/session/session-tools.d.ts.map +0 -1
- package/dist/session/session-tools.js.map +0 -1
- package/dist/session/session.d.ts.map +0 -1
- package/dist/session/session.js.map +0 -1
- package/dist/session/state-select.d.ts.map +0 -1
- package/dist/session/state-select.js.map +0 -1
- package/dist/telemetry/telemetry.d.ts.map +0 -1
- package/dist/telemetry/telemetry.js.map +0 -1
- package/dist/token-auth.d.ts.map +0 -1
- package/dist/token-auth.js.map +0 -1
- package/dist/tools/act-tools.d.ts.map +0 -1
- package/dist/tools/act-tools.js.map +0 -1
- package/dist/tools/act-view.d.ts.map +0 -1
- package/dist/tools/act-view.js.map +0 -1
- package/dist/tools/assert-grade.d.ts.map +0 -1
- package/dist/tools/assert-grade.js.map +0 -1
- package/dist/tools/browser-tools.d.ts.map +0 -1
- package/dist/tools/browser-tools.js.map +0 -1
- package/dist/tools/contract-tools.d.ts.map +0 -1
- package/dist/tools/contract-tools.js.map +0 -1
- package/dist/tools/dynamic-tools.d.ts.map +0 -1
- package/dist/tools/dynamic-tools.js.map +0 -1
- package/dist/tools/error-recovery.d.ts.map +0 -1
- package/dist/tools/error-recovery.js.map +0 -1
- package/dist/tools/invoke-tool.d.ts.map +0 -1
- package/dist/tools/invoke-tool.js.map +0 -1
- package/dist/tools/lease-tools.d.ts.map +0 -1
- package/dist/tools/lease-tools.js.map +0 -1
- package/dist/tools/merge-tools.d.ts.map +0 -1
- package/dist/tools/merge-tools.js.map +0 -1
- package/dist/tools/observe-tools.d.ts.map +0 -1
- package/dist/tools/observe-tools.js.map +0 -1
- package/dist/tools/profiles.d.ts.map +0 -1
- package/dist/tools/profiles.js.map +0 -1
- package/dist/tools/query-paginate.d.ts.map +0 -1
- package/dist/tools/query-paginate.js.map +0 -1
- package/dist/tools/read-tools.d.ts.map +0 -1
- package/dist/tools/read-tools.js.map +0 -1
- package/dist/tools/snapshot-delta.d.ts.map +0 -1
- package/dist/tools/snapshot-delta.js.map +0 -1
- package/dist/tools/tool-invoker.d.ts.map +0 -1
- package/dist/tools/tool-invoker.js.map +0 -1
- package/dist/tools/tool-kit.d.ts.map +0 -1
- package/dist/tools/tool-kit.js.map +0 -1
- package/dist/tools/tool-names.d.ts.map +0 -1
- package/dist/tools/tool-names.js.map +0 -1
- package/dist/tools/tools-helpers.d.ts.map +0 -1
- package/dist/tools/tools-helpers.js.map +0 -1
- package/dist/tools/tools.d.ts.map +0 -1
- package/dist/tools/tools.js.map +0 -1
- package/dist/update/update-checker.d.ts.map +0 -1
- package/dist/update/update-checker.js.map +0 -1
- package/dist/update/updater.d.ts.map +0 -1
- package/dist/update/updater.js.map +0 -1
- package/dist/visual/visual-diff.d.ts.map +0 -1
- package/dist/visual/visual-diff.js.map +0 -1
- package/dist/visual/visual-store.d.ts.map +0 -1
- package/dist/visual/visual-store.js.map +0 -1
- package/dist/visual/visual-tools.d.ts.map +0 -1
- package/dist/visual/visual-tools.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventType } from '@reticlehq/core';
|
|
1
|
+
import { BlindSpotKind, EventType } from '@reticlehq/core';
|
|
2
2
|
import { ambientKeyOf } from '../journal/ambient.js';
|
|
3
3
|
/**
|
|
4
4
|
* The two things a session learns by watching its own event stream, as opposed to storing.
|
|
@@ -69,8 +69,35 @@ export class ObservedState {
|
|
|
69
69
|
this.#seededAmbient = { ...counts };
|
|
70
70
|
}
|
|
71
71
|
/** Latest reported count per blind-spot kind, for the whole session. */
|
|
72
|
+
/**
|
|
73
|
+
* Refs the agent has driven, for the exercised/untouched split `reticle_coverage` reports.
|
|
74
|
+
*
|
|
75
|
+
* Kept here beside the blind-spot counts because both are per-session observed facts that must
|
|
76
|
+
* SURVIVE buffer eviction. Deriving "what did I touch" from the event buffer instead would mean an
|
|
77
|
+
* action fifty steps ago silently stops counting, so "untouched" would quietly come to mean
|
|
78
|
+
* "recently untouched" — a number that reads as thorough while drifting toward the opposite.
|
|
79
|
+
*/
|
|
80
|
+
#actedRefs = new Set();
|
|
81
|
+
/** Record a driven ref. Idempotent. */
|
|
82
|
+
recordActedRef(ref) {
|
|
83
|
+
if (ref.length > 0)
|
|
84
|
+
this.#actedRefs.add(ref);
|
|
85
|
+
}
|
|
86
|
+
/** Every ref driven so far this session. */
|
|
87
|
+
actedRefs() {
|
|
88
|
+
return this.#actedRefs;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Record bridge-side sampling as a blind spot.
|
|
92
|
+
*
|
|
93
|
+
* Every other blind spot is reported BY the SDK, which cannot report this one: the events were
|
|
94
|
+
* dropped before they reached the observer. Recording it here keeps the honesty contract intact —
|
|
95
|
+
* a verdict over a sampled window says `coverage: partial` rather than implying it saw everything.
|
|
96
|
+
*/
|
|
97
|
+
noteRateLimited(dropped) {
|
|
98
|
+
this.#blindSpots[BlindSpotKind.RATE_LIMITED] = dropped;
|
|
99
|
+
}
|
|
72
100
|
blindSpots() {
|
|
73
101
|
return this.#blindSpots;
|
|
74
102
|
}
|
|
75
103
|
}
|
|
76
|
-
//# sourceMappingURL=observed-state.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CommandResult } from '@reticlehq/core';
|
|
2
|
+
export declare class PendingCommands {
|
|
3
|
+
#private;
|
|
4
|
+
/** Next correlation id. Monotonic per session, so a reply can never match an earlier command. */
|
|
5
|
+
nextId(prefix: string): string;
|
|
6
|
+
/** Register a command and arm its timeout. `describeTimeout` runs only if the reply never lands. */
|
|
7
|
+
track(id: string, timeoutMs: number, describeTimeout: () => string): Promise<CommandResult>;
|
|
8
|
+
/** Resolve the command this reply belongs to. Unknown ids are ignored, never thrown on. */
|
|
9
|
+
settle(result: CommandResult): void;
|
|
10
|
+
/** Reject everything still in flight — used on disconnect, so no caller waits on a dead socket. */
|
|
11
|
+
rejectAll(reason: string): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export class PendingCommands {
|
|
2
|
+
#pending = new Map();
|
|
3
|
+
#seq = 0;
|
|
4
|
+
/** Next correlation id. Monotonic per session, so a reply can never match an earlier command. */
|
|
5
|
+
nextId(prefix) {
|
|
6
|
+
this.#seq += 1;
|
|
7
|
+
return `${prefix}${String(this.#seq)}`;
|
|
8
|
+
}
|
|
9
|
+
/** Register a command and arm its timeout. `describeTimeout` runs only if the reply never lands. */
|
|
10
|
+
track(id, timeoutMs, describeTimeout) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
const timer = setTimeout(() => {
|
|
13
|
+
this.#pending.delete(id);
|
|
14
|
+
reject(new Error(describeTimeout()));
|
|
15
|
+
}, timeoutMs);
|
|
16
|
+
this.#pending.set(id, { resolve, reject, timer });
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/** Resolve the command this reply belongs to. Unknown ids are ignored, never thrown on. */
|
|
20
|
+
settle(result) {
|
|
21
|
+
const pending = this.#pending.get(result.id);
|
|
22
|
+
if (pending === undefined)
|
|
23
|
+
return;
|
|
24
|
+
clearTimeout(pending.timer);
|
|
25
|
+
this.#pending.delete(result.id);
|
|
26
|
+
pending.resolve(result);
|
|
27
|
+
}
|
|
28
|
+
/** Reject everything still in flight — used on disconnect, so no caller waits on a dead socket. */
|
|
29
|
+
rejectAll(reason) {
|
|
30
|
+
for (const [id, pending] of this.#pending) {
|
|
31
|
+
clearTimeout(pending.timer);
|
|
32
|
+
pending.reject(new Error(reason));
|
|
33
|
+
this.#pending.delete(id);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -5,4 +5,3 @@ import { PresenterTone, SessionState } from '@reticlehq/core';
|
|
|
5
5
|
* Tone only rides an ended push; live transitions (active/paused) never carry one. Pure.
|
|
6
6
|
*/
|
|
7
7
|
export declare function buildPresenterArgs(state: SessionState, text: string | undefined, tone: PresenterTone | undefined): Record<string, unknown>;
|
|
8
|
-
//# sourceMappingURL=presenter-args.d.ts.map
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import type { Session
|
|
1
|
+
import type { Session } from './session.js';
|
|
2
|
+
/**
|
|
3
|
+
* The health block spliced onto act/assert results. Defined here rather than in session.ts: this is
|
|
4
|
+
* the module that builds it, and session.ts was over the file-size cap.
|
|
5
|
+
*/
|
|
6
|
+
export interface SessionHealth {
|
|
7
|
+
lastSeenMs: number;
|
|
8
|
+
throttled: boolean;
|
|
9
|
+
focused: boolean;
|
|
10
|
+
/** present only when hidden/throttled — points at the `reticle drive` escape hatch. */
|
|
11
|
+
recommendation?: string;
|
|
12
|
+
}
|
|
2
13
|
/** The evidence-completeness block spliced onto observe/network/console results. */
|
|
3
14
|
interface BufferEnvelope {
|
|
4
15
|
buffer?: {
|
|
@@ -33,5 +44,18 @@ export declare function healthEnvelope(session: Session): HealthEnvelope;
|
|
|
33
44
|
* warn-only so background testing never breaks.
|
|
34
45
|
*/
|
|
35
46
|
export declare function refuseIfThrottled(session: Session, refuse: unknown): void;
|
|
47
|
+
/** The page's own visibility/runtime report, narrowed out of an untrusted PAGE_HEALTH payload. */
|
|
48
|
+
export interface HealthReport {
|
|
49
|
+
hidden: boolean | undefined;
|
|
50
|
+
focused: boolean | undefined;
|
|
51
|
+
runtime: string | undefined;
|
|
52
|
+
/** Coarse rendering engine (blink/gecko/webkit) — context for a feedback report, not a health input. */
|
|
53
|
+
engine: string | undefined;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Narrow a PAGE_HEALTH payload. Every field is optional on the wire — an older SDK does not report
|
|
57
|
+
* `runtime` at all — so each is returned as undefined rather than defaulted here, letting the caller
|
|
58
|
+
* keep its previous value instead of silently flipping a session to "visible" on a partial report.
|
|
59
|
+
*/
|
|
60
|
+
export declare function readHealthEvent(data: Record<string, unknown>): HealthReport;
|
|
36
61
|
export {};
|
|
37
|
-
//# sourceMappingURL=session-health.d.ts.map
|
|
@@ -35,4 +35,16 @@ export function refuseIfThrottled(session, refuse) {
|
|
|
35
35
|
throw new Error(`refusing to act: ${THROTTLED_WARNING}`);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Narrow a PAGE_HEALTH payload. Every field is optional on the wire — an older SDK does not report
|
|
40
|
+
* `runtime` at all — so each is returned as undefined rather than defaulted here, letting the caller
|
|
41
|
+
* keep its previous value instead of silently flipping a session to "visible" on a partial report.
|
|
42
|
+
*/
|
|
43
|
+
export function readHealthEvent(data) {
|
|
44
|
+
return {
|
|
45
|
+
hidden: typeof data['hidden'] === 'boolean' ? data['hidden'] : undefined,
|
|
46
|
+
focused: typeof data['focused'] === 'boolean' ? data['focused'] : undefined,
|
|
47
|
+
runtime: typeof data['runtime'] === 'string' ? data['runtime'] : undefined,
|
|
48
|
+
engine: typeof data['engine'] === 'string' ? data['engine'] : undefined,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shape `reticle_sessions` returns for one connected tab.
|
|
3
|
+
*
|
|
4
|
+
* Split from session.ts when that file crossed the 600-line cap. A pure description of what a
|
|
5
|
+
* session looks like from the outside has no reason to live inside the class that happens to build
|
|
6
|
+
* it, and separating them keeps the wire-facing shape reviewable on its own.
|
|
7
|
+
*/
|
|
8
|
+
export interface SessionInfo {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
url: string;
|
|
11
|
+
/** Stable build-stamped project identity; absent for v1.0 SDKs that don't send it. */
|
|
12
|
+
projectId?: string;
|
|
13
|
+
title: string;
|
|
14
|
+
adapters: string[];
|
|
15
|
+
hasCapabilities: boolean;
|
|
16
|
+
/** ms since the SDK last reported anything (silence ⇒ likely throttled). */
|
|
17
|
+
lastSeenMs: number;
|
|
18
|
+
hidden: boolean;
|
|
19
|
+
focused: boolean;
|
|
20
|
+
throttled: boolean;
|
|
21
|
+
/** present only when hidden/throttled — points at the `reticle drive` escape hatch. */
|
|
22
|
+
recommendation?: string;
|
|
23
|
+
stale?: boolean;
|
|
24
|
+
cleanup_suggestion?: string;
|
|
25
|
+
/** present only when the human has flagged bugs on this tab — count of pending review marks. */
|
|
26
|
+
pendingMarks?: number;
|
|
27
|
+
/** present with pendingMarks — nudges the agent to drain them with reticle_review. */
|
|
28
|
+
review_suggestion?: string;
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one-time session lease block, returned on the very first agent command of a session.
|
|
3
|
+
*
|
|
4
|
+
* It has to be carried in a RESULT rather than in `reticle_session`'s tool description: that tool is
|
|
5
|
+
* not advertised under the default `hybrid` profile, so its description is never in the agent's
|
|
6
|
+
* context, and the lease is the only place these two calls are ever named. Coding agents read tool
|
|
7
|
+
* results, so this is where the reminder actually lands.
|
|
8
|
+
*/
|
|
9
|
+
export interface SessionLease {
|
|
10
|
+
sessionId: string;
|
|
11
|
+
opened_at: number;
|
|
12
|
+
IMPORTANT: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Kept SHORT on purpose, and this is the reason to read before editing it.
|
|
16
|
+
*
|
|
17
|
+
* This block is a fixed, identical cost paid by EVERY session. The long-form version was 433 bytes
|
|
18
|
+
* on a `reticle_query` whose actual answer was 259 — 57% of the first call of every session spent
|
|
19
|
+
* re-explaining something that never varies. Measured at 815 → 1058 average observation tokens, and
|
|
20
|
+
* the benchmark's fresh-session-per-scenario shape pays it ten times over.
|
|
21
|
+
*
|
|
22
|
+
* Any edit here is a per-session tax on every user: say it in as few words as still work.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SESSION_LEASE_NOTICE = "When you stop driving, call reticle_session {action:\"yield\", mode:\"waiting\"|\"ask\"} \u2014 the panel reads \"live\" until you do. {action:\"end\"} when the task is done; it revives on your next action.";
|
|
25
|
+
export declare function buildSessionLease(sessionId: string, openedAt: number): SessionLease;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kept SHORT on purpose, and this is the reason to read before editing it.
|
|
3
|
+
*
|
|
4
|
+
* This block is a fixed, identical cost paid by EVERY session. The long-form version was 433 bytes
|
|
5
|
+
* on a `reticle_query` whose actual answer was 259 — 57% of the first call of every session spent
|
|
6
|
+
* re-explaining something that never varies. Measured at 815 → 1058 average observation tokens, and
|
|
7
|
+
* the benchmark's fresh-session-per-scenario shape pays it ten times over.
|
|
8
|
+
*
|
|
9
|
+
* Any edit here is a per-session tax on every user: say it in as few words as still work.
|
|
10
|
+
*/
|
|
11
|
+
export const SESSION_LEASE_NOTICE = 'When you stop driving, call reticle_session {action:"yield", mode:"waiting"|"ask"} — the panel reads "live" until you do. {action:"end"} when the task is done; it revives on your next action.';
|
|
12
|
+
export function buildSessionLease(sessionId, openedAt) {
|
|
13
|
+
return { sessionId, opened_at: openedAt, IMPORTANT: SESSION_LEASE_NOTICE };
|
|
14
|
+
}
|
|
@@ -10,11 +10,6 @@ interface ResolveScope {
|
|
|
10
10
|
}
|
|
11
11
|
/** The scheme://host:port of a URL, or undefined if it can't be parsed. Used to compare origins. */
|
|
12
12
|
export declare function originOf(url: string | undefined): string | undefined;
|
|
13
|
-
/**
|
|
14
|
-
* Owns the set of connected browser sessions and the smart auto-selection that resolves which one a
|
|
15
|
-
* tool targets when the agent omits an explicit sessionId. Extracted from session.ts so each file
|
|
16
|
-
* stays one cohesive unit (Session = one tab; SessionManager = the registry over all tabs).
|
|
17
|
-
*/
|
|
18
13
|
export declare class SessionManager {
|
|
19
14
|
#private;
|
|
20
15
|
/** Set the active project's default resolve scope (called once at daemon wiring). */
|
|
@@ -26,20 +21,13 @@ export declare class SessionManager {
|
|
|
26
21
|
/** Every connected session — used by the liveness reaper to sweep for idle/disconnected ones. */
|
|
27
22
|
all(): Session[];
|
|
28
23
|
count(): number;
|
|
29
|
-
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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.
|
|
41
|
-
*/
|
|
24
|
+
/** Record a bridge-initiated close so `resolve` can explain a session that vanished. */
|
|
25
|
+
noteClosure(reason: string, at: number): void;
|
|
26
|
+
/** The most recent bridge-initiated close, if any. */
|
|
27
|
+
lastClosure(): {
|
|
28
|
+
at: number;
|
|
29
|
+
reason: string;
|
|
30
|
+
} | undefined;
|
|
42
31
|
resolve(sessionId?: string, scope?: ResolveScope): Session;
|
|
43
32
|
}
|
|
44
33
|
export {};
|
|
45
|
-
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NO_SESSION_CONNECTED_ERROR } from '@reticlehq/core';
|
|
2
|
+
import { declareDrivenRedactionKeys, forgetDrivenRedactionKeys, } from '../input/driven-redaction.js';
|
|
2
3
|
import { Session } from './session.js';
|
|
3
4
|
/** The scheme://host:port of a URL, or undefined if it can't be parsed. Used to compare origins. */
|
|
4
5
|
export function originOf(url) {
|
|
@@ -42,6 +43,8 @@ function scopeMissError(scope) {
|
|
|
42
43
|
* tool targets when the agent omits an explicit sessionId. Extracted from session.ts so each file
|
|
43
44
|
* stays one cohesive unit (Session = one tab; SessionManager = the registry over all tabs).
|
|
44
45
|
*/
|
|
46
|
+
/** How many bridge-initiated closes to remember for diagnosis. */
|
|
47
|
+
const MAX_REMEMBERED_CLOSURES = 5;
|
|
45
48
|
export class SessionManager {
|
|
46
49
|
#sessions = new Map();
|
|
47
50
|
/**
|
|
@@ -57,12 +60,17 @@ export class SessionManager {
|
|
|
57
60
|
add(session) {
|
|
58
61
|
const previous = this.#sessions.get(session.id);
|
|
59
62
|
this.#sessions.set(session.id, session);
|
|
63
|
+
// Publish what this app declared sensitive to the driven-path rule. Here rather than in the
|
|
64
|
+
// bridge because EVERY path that registers a session goes through this method, and a declaration
|
|
65
|
+
// that silently fails to register is a leak nothing would report.
|
|
66
|
+
declareDrivenRedactionKeys(session.id, session.redactKeys);
|
|
60
67
|
return previous;
|
|
61
68
|
}
|
|
62
69
|
remove(session) {
|
|
63
70
|
if (this.#sessions.get(session.id) !== session)
|
|
64
71
|
return false;
|
|
65
72
|
session.rejectAll('session disconnected');
|
|
73
|
+
forgetDrivenRedactionKeys(session.id);
|
|
66
74
|
return this.#sessions.delete(session.id);
|
|
67
75
|
}
|
|
68
76
|
get(sessionId) {
|
|
@@ -91,6 +99,29 @@ export class SessionManager {
|
|
|
91
99
|
* desktop), skip the gap check and pick the freshest heartbeat. This lets the agent
|
|
92
100
|
* keep working in the background without requiring sessionId every time.
|
|
93
101
|
*/
|
|
102
|
+
/**
|
|
103
|
+
* Why a session recently went away, when the bridge closed it rather than the tab.
|
|
104
|
+
*
|
|
105
|
+
* The bridge enforces a message-rate cap and closes the socket on breach with `1008 message rate
|
|
106
|
+
* exceeded` — a policy violation, so the SDK does not retry. The app keeps running and Reticle is
|
|
107
|
+
* blind from that moment. Measured on the bench app: 2600 requests fired in one tick disconnected
|
|
108
|
+
* the session permanently, and the only trace was a line in the PAGE console, which no agent reads.
|
|
109
|
+
*
|
|
110
|
+
* Without this the agent is told "no browser session connected — check your app is running with
|
|
111
|
+
* @reticlehq/browser enabled", which is precisely wrong: the app IS running and instrumented. It
|
|
112
|
+
* was hung up on. Keeping the last few reasons turns an unexplained disappearance into a fact.
|
|
113
|
+
*/
|
|
114
|
+
#recentClosures = [];
|
|
115
|
+
/** Record a bridge-initiated close so `resolve` can explain a session that vanished. */
|
|
116
|
+
noteClosure(reason, at) {
|
|
117
|
+
this.#recentClosures.push({ at, reason });
|
|
118
|
+
if (this.#recentClosures.length > MAX_REMEMBERED_CLOSURES)
|
|
119
|
+
this.#recentClosures.shift();
|
|
120
|
+
}
|
|
121
|
+
/** The most recent bridge-initiated close, if any. */
|
|
122
|
+
lastClosure() {
|
|
123
|
+
return this.#recentClosures[this.#recentClosures.length - 1];
|
|
124
|
+
}
|
|
94
125
|
resolve(sessionId, scope) {
|
|
95
126
|
if (sessionId !== undefined) {
|
|
96
127
|
const found = this.#sessions.get(sessionId);
|
|
@@ -101,7 +132,10 @@ export class SessionManager {
|
|
|
101
132
|
return found;
|
|
102
133
|
}
|
|
103
134
|
if (this.#sessions.size === 0) {
|
|
104
|
-
|
|
135
|
+
const closure = this.lastClosure();
|
|
136
|
+
throw new Error(closure === undefined
|
|
137
|
+
? NO_SESSION_CONNECTED_ERROR
|
|
138
|
+
: `${NO_SESSION_CONNECTED_ERROR} NOTE: the bridge closed a session recently — "${closure.reason}". The app is probably still running; it was disconnected, and the SDK does not retry after a policy close. Reload the page to reconnect.`);
|
|
105
139
|
}
|
|
106
140
|
// Scope to the agent's active project FIRST, so a stray tab from another app/origin (e.g. a
|
|
107
141
|
// leftover dashboard on a different port) is structurally unselectable — it never enters the
|
|
@@ -153,4 +187,3 @@ export class SessionManager {
|
|
|
153
187
|
return best.s;
|
|
154
188
|
}
|
|
155
189
|
}
|
|
156
|
-
//# sourceMappingURL=session-manager.js.map
|
|
@@ -6,10 +6,10 @@ const DEFAULT_POLL_MS = 100;
|
|
|
6
6
|
*/
|
|
7
7
|
export const RETICLE_LOOP_GUIDE = 'Reticle loop — LOOK: reticle_snapshot / reticle_query / reticle_inspect · ACT: reticle_act (or reticle_act_and_wait) · ' +
|
|
8
8
|
'OBSERVE: reticle_observe / reticle_wait_for / reticle_network / reticle_console · ASSERT: reticle_assert over program ' +
|
|
9
|
-
'truth, not just the DOM · REGRESS:
|
|
10
|
-
'suite. The human can flag bugs from the panel — drain them with
|
|
9
|
+
'truth, not just the DOM · REGRESS: reticle_record{action:"start"} → reticle_replay, or reticle_flow_verify for the whole ' +
|
|
10
|
+
'suite. The human can flag bugs from the panel — drain them with reticle_session{action:"review"} and resolve each once fixed. ' +
|
|
11
11
|
'MANDATORY: the moment you stop driving — finishing your reply or waiting on the human — call reticle_session {action:"yield"} ' +
|
|
12
|
-
'(mode:"waiting", or mode:"ask" with the question) so the panel shows your real state;
|
|
12
|
+
'(mode:"waiting", or mode:"ask" with the question) so the panel shows your real state; reticle_session{action:"end"} ' +
|
|
13
13
|
'only when the whole task is done. Never leave the panel reading "live" when you have actually stopped.';
|
|
14
14
|
/**
|
|
15
15
|
* Resolve `true` as soon as at least one session is connected, or `false` if the timeout elapses
|
|
@@ -29,4 +29,3 @@ export async function waitForReady(opts) {
|
|
|
29
29
|
return true;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
//# sourceMappingURL=session-readiness.js.map
|
|
@@ -15,4 +15,3 @@ export interface RecommendationInputs {
|
|
|
15
15
|
* live tab is still scriptable, so blur alone does not trigger it. Pure.
|
|
16
16
|
*/
|
|
17
17
|
export declare function buildSessionRecommendation(inputs: RecommendationInputs): string | undefined;
|
|
18
|
-
//# sourceMappingURL=session-recommendation.d.ts.map
|
|
@@ -11,12 +11,12 @@ import { asNumber, asString } from '../tools/tools-helpers.js';
|
|
|
11
11
|
export const SESSION_TOOLS = [
|
|
12
12
|
{
|
|
13
13
|
name: ReticleTool.SESSION_TUNE,
|
|
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
|
|
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_session{action:"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
|
|
17
17
|
.number()
|
|
18
18
|
.optional()
|
|
19
|
-
.describe('Idle window in milliseconds after which the panel shows WAITING (your turn). Default: 300000 (5 min) — the slow backstop; prefer
|
|
19
|
+
.describe('Idle window in milliseconds after which the panel shows WAITING (your turn). Default: 300000 (5 min) — the slow backstop; prefer reticle_session{action:"yield"}. Raise for slow apps.'),
|
|
20
20
|
sessionId: z
|
|
21
21
|
.string()
|
|
22
22
|
.optional()
|
|
@@ -40,4 +40,3 @@ export const SESSION_TOOLS = [
|
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
42
|
];
|
|
43
|
-
//# sourceMappingURL=session-tools.js.map
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { WebSocket } from 'ws';
|
|
2
|
+
import { LastAct } from './last-act.js';
|
|
3
|
+
import { type PageRuntime } from './command-timeout.js';
|
|
4
|
+
import { type SessionHealth } from './session-health.js';
|
|
5
|
+
export type { SessionHealth };
|
|
2
6
|
import { PresenterTone, SessionState, type CommandResult, type HelloMessage, type HumanControlData, type ReticleEvent } from '@reticlehq/core';
|
|
3
7
|
import type { JournalReader, JournalRecorder } from '../journal/journal-recorder.js';
|
|
4
8
|
import { type EventQueryOptions } from '../journal/journal-query.js';
|
|
@@ -6,36 +10,9 @@ import { type AmbientCounts } from '../journal/ambient.js';
|
|
|
6
10
|
import { type InboxMessage } from './live-control.js';
|
|
7
11
|
export type { InboxMessage } from './live-control.js';
|
|
8
12
|
import { type ReviewMark } from './review-store.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/** Stable build-stamped project identity; absent for v1.0 SDKs that don't send it. */
|
|
13
|
-
projectId?: string;
|
|
14
|
-
title: string;
|
|
15
|
-
adapters: string[];
|
|
16
|
-
hasCapabilities: boolean;
|
|
17
|
-
/** ms since the SDK last reported anything (silence ⇒ likely throttled). */
|
|
18
|
-
lastSeenMs: number;
|
|
19
|
-
hidden: boolean;
|
|
20
|
-
focused: boolean;
|
|
21
|
-
throttled: boolean;
|
|
22
|
-
/** present only when hidden/throttled — points at the `reticle drive` escape hatch. */
|
|
23
|
-
recommendation?: string;
|
|
24
|
-
stale?: boolean;
|
|
25
|
-
cleanup_suggestion?: string;
|
|
26
|
-
/** present only when the human has flagged bugs on this tab — count of pending review marks. */
|
|
27
|
-
pendingMarks?: number;
|
|
28
|
-
/** present with pendingMarks — nudges the agent to drain them with reticle_review. */
|
|
29
|
-
review_suggestion?: string;
|
|
30
|
-
}
|
|
31
|
-
/** The health block spliced onto act/assert results. */
|
|
32
|
-
export interface SessionHealth {
|
|
33
|
-
lastSeenMs: number;
|
|
34
|
-
throttled: boolean;
|
|
35
|
-
focused: boolean;
|
|
36
|
-
/** present only when hidden/throttled — points at the `reticle drive` escape hatch. */
|
|
37
|
-
recommendation?: string;
|
|
38
|
-
}
|
|
13
|
+
import { type SessionLease } from './session-lease.js';
|
|
14
|
+
import type { SessionInfo } from './session-info.js';
|
|
15
|
+
export type { SessionInfo } from './session-info.js';
|
|
39
16
|
type Clock = () => number;
|
|
40
17
|
/**
|
|
41
18
|
* One connected browser tab. Owns its socket, a ring buffer of observations, and the
|
|
@@ -50,6 +27,12 @@ export declare class Session {
|
|
|
50
27
|
title: string;
|
|
51
28
|
adapters: string[];
|
|
52
29
|
hasCapabilities: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Extra key names this app declared sensitive via `connect({ redact: { keys } })`. Held so the
|
|
32
|
+
* DRIVEN path can redact them too — a request body the daemon captures from the network stack
|
|
33
|
+
* never passes through the SDK, so nothing else would.
|
|
34
|
+
*/
|
|
35
|
+
readonly redactKeys: readonly string[];
|
|
53
36
|
constructor(hello: HelloMessage, socket: WebSocket, clock: Clock);
|
|
54
37
|
/** Milliseconds since this session connected — the authoritative buffer clock. */
|
|
55
38
|
elapsed(): number;
|
|
@@ -57,8 +40,16 @@ export declare class Session {
|
|
|
57
40
|
touch(): void;
|
|
58
41
|
/** ms since the SDK last reported anything (distinct from elapsed-since-connect). */
|
|
59
42
|
lastSeenMs(): number;
|
|
60
|
-
/**
|
|
61
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Record the latest page visibility/focus state from a PAGE_HEALTH event.
|
|
45
|
+
*
|
|
46
|
+
* `runtime` is optional so an older SDK (which does not report it) still works — it simply loses
|
|
47
|
+
* the desktop-specific timeout diagnosis rather than breaking.
|
|
48
|
+
*/
|
|
49
|
+
applyHealth(hidden: boolean, focused: boolean, runtime?: string, engine?: string): void;
|
|
50
|
+
/** The shell (web/electron/tauri) and rendering engine the SDK reported. Undefined on an older SDK. */
|
|
51
|
+
get runtime(): PageRuntime | undefined;
|
|
52
|
+
get engine(): string | undefined;
|
|
62
53
|
/** Throttled if the tab is hidden OR we have not heard from it recently. */
|
|
63
54
|
throttled(): boolean;
|
|
64
55
|
/** The attachable health block — single source of truth for the tools. */
|
|
@@ -68,7 +59,9 @@ export declare class Session {
|
|
|
68
59
|
staleMs(): number;
|
|
69
60
|
/** Re-stamp an incoming event with server-relative time, buffer it, and fan out. */
|
|
70
61
|
pushEvent(event: ReticleEvent, byteSize?: number): void;
|
|
71
|
-
|
|
62
|
+
recordActedRef(ref: string): void;
|
|
63
|
+
actedRefs(): ReadonlySet<string>;
|
|
64
|
+
noteRateLimited(dropped: number): void;
|
|
72
65
|
blindSpots(): Readonly<Record<string, number>>;
|
|
73
66
|
/** Learned ambient-churn counts (PredicateSession hook the settle oracle reads). */
|
|
74
67
|
ambientCounts(): AmbientCounts;
|
|
@@ -99,16 +92,12 @@ export declare class Session {
|
|
|
99
92
|
flushJournal(): Promise<void>;
|
|
100
93
|
eventsSince(cursor: number): ReticleEvent[];
|
|
101
94
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
95
|
+
* What the most recent act was: its cursor, its source, and what it changed inside its target.
|
|
96
|
+
*
|
|
97
|
+
* Exposed as the object rather than six pass-through methods — act writes to it and observe reads
|
|
98
|
+
* from it, and the split between those two tool calls is the whole reason it exists.
|
|
104
99
|
*/
|
|
105
|
-
|
|
106
|
-
/** The cursor of the last act, or undefined if nothing has acted yet. */
|
|
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;
|
|
100
|
+
readonly lastAct: LastAct;
|
|
112
101
|
/**
|
|
113
102
|
* Stamp the wall-clock of the latest AGENT command (called whenever a tool resolves this session).
|
|
114
103
|
* If the reaper had auto-ended the session, a fresh command means the agent is alive again, so the
|
|
@@ -177,16 +166,8 @@ export declare class Session {
|
|
|
177
166
|
pushPresenter(state: SessionState, text?: string, tone?: PresenterTone): void;
|
|
178
167
|
/** Fire-and-forget a narration row to the live panel (so a resolved mark shows "✓ fixed"). */
|
|
179
168
|
pushNarration(text: string): void;
|
|
180
|
-
/**
|
|
181
|
-
|
|
182
|
-
* forever after. The lease carries an IMPORTANT reminder to call reticle_end_session. Coding agents
|
|
183
|
-
* (Claude Code, Codex) read tool results — they will see this and remember to clean up.
|
|
184
|
-
*/
|
|
185
|
-
takeSessionLease(): {
|
|
186
|
-
sessionId: string;
|
|
187
|
-
opened_at: number;
|
|
188
|
-
IMPORTANT: string;
|
|
189
|
-
} | undefined;
|
|
169
|
+
/** The one-time lease block on the first agent command, then undefined forever after. */
|
|
170
|
+
takeSessionLease(): SessionLease | undefined;
|
|
190
171
|
/**
|
|
191
172
|
* Returns a human-readable age warning after SESSION_LEASE.WARN_AFTER_MS (10 min), else undefined.
|
|
192
173
|
* Spliced onto every session-bound tool result so the agent is passively reminded to clean up
|
|
@@ -200,4 +181,3 @@ export declare class Session {
|
|
|
200
181
|
* units under the file-size cap.
|
|
201
182
|
*/
|
|
202
183
|
export { SessionManager } from './session-manager.js';
|
|
203
|
-
//# sourceMappingURL=session.d.ts.map
|