@reticlehq/server 2.2.1 → 2.3.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 +60 -10
- package/dist/bridge.test-harness.d.ts +0 -1
- package/dist/bridge.test-harness.js +0 -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 +34 -2
- package/dist/cli-parse.js +107 -1
- package/dist/cli-port.d.ts +0 -1
- package/dist/cli-port.js +0 -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 +79 -67
- 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 -1
- package/dist/flows/decision.js +0 -1
- 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 +30 -8
- 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/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 +0 -1
- package/dist/init/detect.js +0 -1
- package/dist/init/mcp.d.ts +0 -1
- package/dist/init/mcp.js +0 -1
- package/dist/init/node-io.d.ts +0 -1
- package/dist/init/node-io.js +0 -1
- package/dist/init/plan.d.ts +4 -1
- package/dist/init/plan.js +23 -5
- package/dist/init/project-id.d.ts +0 -1
- package/dist/init/project-id.js +0 -1
- package/dist/init/run.d.ts +0 -1
- package/dist/init/run.js +31 -3
- package/dist/init/snippets.d.ts +5 -1
- package/dist/init/snippets.js +5 -1
- package/dist/init/vite-config.d.ts +0 -1
- package/dist/init/vite-config.js +0 -1
- package/dist/input/network-detail.d.ts +0 -1
- package/dist/input/network-detail.js +0 -1
- 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 +0 -1
- package/dist/mcp-proxy.js +0 -1
- 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 +29 -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 +27 -53
- package/dist/session/session.js +95 -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 +10 -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
package/dist/runs/run-diff.js
CHANGED
package/dist/runs/run-store.d.ts
CHANGED
package/dist/runs/run-store.js
CHANGED
package/dist/runs/run-tools.d.ts
CHANGED
package/dist/runs/run-tools.js
CHANGED
|
@@ -11,4 +11,3 @@ import type { RunnerPort } from './reticle-runner.js';
|
|
|
11
11
|
export declare function defaultRunId(): RunId;
|
|
12
12
|
/** Wire a RunnerPort to the live session. Pass sessionId to disambiguate when several tabs are open. */
|
|
13
13
|
export declare function createRunnerPort(deps: ToolDeps, sessionId?: string): RunnerPort;
|
|
14
|
-
//# sourceMappingURL=runner-port.d.ts.map
|
package/dist/runs/runner-port.js
CHANGED
|
@@ -21,4 +21,3 @@ export interface TimedReplay {
|
|
|
21
21
|
* unaffected. Returns the runId (for logging/tests); undefined if nothing was produced (empty suite).
|
|
22
22
|
*/
|
|
23
23
|
export declare function persistAndSyncVerificationRun(deps: ToolDeps, timed: TimedReplay[], projectId: string | undefined): Promise<string | undefined>;
|
|
24
|
-
//# sourceMappingURL=verification-sync.d.ts.map
|
|
@@ -31,4 +31,3 @@ export interface VerifyHttpResponse {
|
|
|
31
31
|
* and returns a status + body. No sockets, no globals — a test calls it directly.
|
|
32
32
|
*/
|
|
33
33
|
export declare function handleVerifyRequest(req: VerifyHttpRequest, runner: ReticleRunner, expectedToken: string, persist?: (run: ReticleVerificationRun) => Promise<void>): Promise<VerifyHttpResponse>;
|
|
34
|
-
//# sourceMappingURL=verify-http.d.ts.map
|
package/dist/runs/verify-http.js
CHANGED
package/dist/server-version.d.ts
CHANGED
package/dist/server-version.js
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn a bare command timeout into something the reader can act on.
|
|
3
|
+
*
|
|
4
|
+
* The default message — `command 'snapshot' timed out after 8000ms` — is eight seconds of silence
|
|
5
|
+
* followed by a fact with no cause. For a Tauri app the cause is usually not a bug in the app: its
|
|
6
|
+
* window was hidden before the webview had ever been PRESENTED, and a webview that has never been
|
|
7
|
+
* presented never loads its page. The session stays connected, so nothing looks wrong, and the
|
|
8
|
+
* developer goes hunting through their own code for a fault that is not there.
|
|
9
|
+
*
|
|
10
|
+
* This advice previously blamed occlusion — "macOS suspends an occluded or off-Space WKWebView" —
|
|
11
|
+
* which is false, and was the kind of wrong steer this function exists to prevent. A LOADED Tauri
|
|
12
|
+
* webview keeps answering while minimized, app-hidden, occluded, and on another Space.
|
|
13
|
+
*
|
|
14
|
+
* It then over-corrected: it asserted the hidden-before-load ordering as FACT. But the only evidence
|
|
15
|
+
* here is `hidden === true` — the ordering is never observed. Measured on a Tauri shell pointed at an
|
|
16
|
+
* external http origin, whose window nothing ever hid: the message confidently prescribed a fix for a
|
|
17
|
+
* mistake that had not been made, and two rounds of debugging went into the wrong place. A diagnostic
|
|
18
|
+
* that names the wrong cause is worse than a bare timeout, because the bare timeout at least sends
|
|
19
|
+
* the reader looking. So this now reports what is KNOWN and ranks the causes rather than picking one.
|
|
20
|
+
*
|
|
21
|
+
* The advice is ADDED, never substituted — the original fact still leads — and only for a runtime
|
|
22
|
+
* that can actually suffer it, since misdirecting an Electron user costs them the same hour.
|
|
23
|
+
*/
|
|
24
|
+
/** What the page told us about its shell, via PAGE_HEALTH. Undefined before the first report. */
|
|
25
|
+
export type PageRuntime = 'electron' | 'tauri' | 'web';
|
|
26
|
+
export interface TimeoutContext {
|
|
27
|
+
url: string;
|
|
28
|
+
/** The page's own last visibility report. */
|
|
29
|
+
hidden: boolean;
|
|
30
|
+
/** Reported by the SDK. A URL cannot distinguish a Tauri dev server from a plain localhost app. */
|
|
31
|
+
runtime?: PageRuntime;
|
|
32
|
+
/** ms since ANY inbound message from the SDK. Small = the page is demonstrably still running. */
|
|
33
|
+
lastSeenMs?: number;
|
|
34
|
+
}
|
|
35
|
+
export declare function commandTimeoutMessage(name: string, timeoutMs: number, context: TimeoutContext): string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { isOpaqueOrigin } from '@reticlehq/core';
|
|
2
|
+
/**
|
|
3
|
+
* Inbound silence beyond this means the page may genuinely be wedged; inside it, the SDK has spoken
|
|
4
|
+
* recently enough that "the page is hung" is provably the wrong story. A page that is streaming
|
|
5
|
+
* events is executing JavaScript by definition.
|
|
6
|
+
*/
|
|
7
|
+
const RECENTLY_HEARD_MS = 2000;
|
|
8
|
+
const ONE_WAY_ADVICE = 'The page is ALIVE — the SDK last reported to the bridge %MS%ms ago — but it is not answering ' +
|
|
9
|
+
'commands. A page that is still sending is executing JavaScript, so it is not hung, hidden or ' +
|
|
10
|
+
'suspended: messages are getting OUT and not back IN. Look at the bridge→page direction (a socket ' +
|
|
11
|
+
'replaced mid-session, a proxy buffering one way) rather than at your app.';
|
|
12
|
+
const HIDDEN_ADVICE = 'The page last reported itself hidden, and this is a WKWebView (Tauri) window, so the webview is ' +
|
|
13
|
+
'most likely not running the page at all. Two known causes, commonest first: (1) the window was ' +
|
|
14
|
+
'hidden BEFORE its first page load — a webview that has never been presented never loads, so hide ' +
|
|
15
|
+
'it from `on_page_load` instead of `setup` (see `reticle_tauri::on_page_load`, which does this for ' +
|
|
16
|
+
'RETICLE_HEADLESS=1); once the page HAS loaded, hiding it is safe. (2) the window never presented ' +
|
|
17
|
+
'for another reason — check that it is declared with a visible size and that the page URL actually ' +
|
|
18
|
+
'loaded. If neither fits, the page is reachable but not executing, which is worth reporting.';
|
|
19
|
+
/** True when this session is a WebKit desktop shell — the only runtime that suffers this. */
|
|
20
|
+
function isWebKitDesktop(context) {
|
|
21
|
+
if (context.runtime === 'tauri')
|
|
22
|
+
return true;
|
|
23
|
+
// A `tauri://` origin is unambiguous even before the first health report lands.
|
|
24
|
+
if (context.runtime !== undefined)
|
|
25
|
+
return false;
|
|
26
|
+
return isOpaqueOrigin(context.url) && context.url.startsWith('tauri:');
|
|
27
|
+
}
|
|
28
|
+
export function commandTimeoutMessage(name, timeoutMs, context) {
|
|
29
|
+
const base = `command '${name}' timed out after ${String(timeoutMs)}ms`;
|
|
30
|
+
// Checked FIRST, and it overrides the visibility story: a page that was heard from moments ago is
|
|
31
|
+
// executing JavaScript, so "hidden, hung or never presented" cannot be the explanation whatever
|
|
32
|
+
// `hidden` says. Deduced from the invariant, not from a measured incident — the Tauri case that
|
|
33
|
+
// prompted it turned out to go fully silent instead, which this branch correctly does not claim.
|
|
34
|
+
const heard = context.lastSeenMs;
|
|
35
|
+
if (heard !== undefined && heard <= RECENTLY_HEARD_MS) {
|
|
36
|
+
return `${base}. ${ONE_WAY_ADVICE.replace('%MS%', String(heard))}`;
|
|
37
|
+
}
|
|
38
|
+
if (!context.hidden || !isWebKitDesktop(context))
|
|
39
|
+
return base;
|
|
40
|
+
return `${base}. ${HIDDEN_ADVICE}`;
|
|
41
|
+
}
|
|
@@ -9,9 +9,9 @@ interface ControlEnvelope {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Agent-readable hint returned when an action is refused mid-pause. Named, not free — the agent's
|
|
12
|
-
* recovery path (address the guidance, then
|
|
12
|
+
* recovery path (address the guidance, then reticle_session{action:"resume"}) lives here in exactly one place.
|
|
13
13
|
*/
|
|
14
|
-
export declare const PAUSE_HINT = "Paused by the human. Address the guidance, then call
|
|
14
|
+
export declare const PAUSE_HINT = "Paused by the human. Address the guidance, then call reticle_session{action:\"resume\"} (or wait for the human to resume).";
|
|
15
15
|
/** Shape returned by the short-circuit when an action tool refuses while paused. */
|
|
16
16
|
interface PausedResult {
|
|
17
17
|
paused: true;
|
|
@@ -54,4 +54,3 @@ export declare function pausedShortCircuit(session: Session): PausedResult | und
|
|
|
54
54
|
*/
|
|
55
55
|
export declare function withControl<T extends object>(session: Session, result: T): T & ControlSpread;
|
|
56
56
|
export {};
|
|
57
|
-
//# sourceMappingURL=control-envelope.d.ts.map
|
|
@@ -2,9 +2,9 @@ import { SessionState } from '@reticlehq/core';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
/**
|
|
4
4
|
* Agent-readable hint returned when an action is refused mid-pause. Named, not free — the agent's
|
|
5
|
-
* recovery path (address the guidance, then
|
|
5
|
+
* recovery path (address the guidance, then reticle_session{action:"resume"}) lives here in exactly one place.
|
|
6
6
|
*/
|
|
7
|
-
export const PAUSE_HINT = 'Paused by the human. Address the guidance, then call
|
|
7
|
+
export const PAUSE_HINT = 'Paused by the human. Address the guidance, then call reticle_session{action:"resume"} (or wait for the human to resume).';
|
|
8
8
|
/**
|
|
9
9
|
* outputSchema fields every action tool that can short-circuit on pause MUST declare, or a validating
|
|
10
10
|
* profile strips the WHOLE pause payload — and because `guidance` is drained-once, that loses the
|
|
@@ -53,4 +53,3 @@ export function withControl(session, result) {
|
|
|
53
53
|
const control = buildControlEnvelope(session);
|
|
54
54
|
return control === undefined ? result : { ...result, control };
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=control-envelope.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the most recent action was, kept so a LATER tool call can judge the window it opened.
|
|
3
|
+
*
|
|
4
|
+
* Reticle's act and observe tools are separate calls by design — act returns a cursor immediately and
|
|
5
|
+
* the agent decides when to look. That split means the tool doing the judging holds none of the facts
|
|
6
|
+
* the tool doing the acting measured, and every honesty check that needs both has to bridge the gap
|
|
7
|
+
* somewhere. This is that somewhere.
|
|
8
|
+
*
|
|
9
|
+
* - **cursor** — the evaluation floor for wait_for/assert, so a signal buffered BEFORE the act can
|
|
10
|
+
* never fake a later pass.
|
|
11
|
+
* - **source** — where the acted control is written, for failures that have no element left to point
|
|
12
|
+
* at because the action unmounted it.
|
|
13
|
+
* - **action + mutatedWithin** — what was done and how much changed inside the target. Without these
|
|
14
|
+
* the "this click did nothing" check is unreachable on the ordinary act-then-observe flow: an
|
|
15
|
+
* empty-window test is a statement about the PAGE, and no real app has a quiet page.
|
|
16
|
+
*/
|
|
17
|
+
export interface ActEffect {
|
|
18
|
+
action?: string | undefined;
|
|
19
|
+
/** DOM mutations inside the acted element's own subtree. Undefined means nobody measured. */
|
|
20
|
+
mutatedWithin?: number | undefined;
|
|
21
|
+
}
|
|
22
|
+
export declare class LastAct {
|
|
23
|
+
#private;
|
|
24
|
+
markCursor(cursor: number): void;
|
|
25
|
+
cursor(): number | undefined;
|
|
26
|
+
markSource(source: string | undefined): void;
|
|
27
|
+
source(): string | undefined;
|
|
28
|
+
markEffect(action: string | undefined, mutatedWithin: number | undefined): void;
|
|
29
|
+
/** Empty when nothing has acted — callers then fall back to checks that need no action context. */
|
|
30
|
+
effect(): ActEffect;
|
|
31
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class LastAct {
|
|
2
|
+
#cursor;
|
|
3
|
+
#source;
|
|
4
|
+
#effect;
|
|
5
|
+
markCursor(cursor) {
|
|
6
|
+
this.#cursor = cursor;
|
|
7
|
+
}
|
|
8
|
+
cursor() {
|
|
9
|
+
return this.#cursor;
|
|
10
|
+
}
|
|
11
|
+
markSource(source) {
|
|
12
|
+
this.#source = source;
|
|
13
|
+
}
|
|
14
|
+
source() {
|
|
15
|
+
return this.#source;
|
|
16
|
+
}
|
|
17
|
+
markEffect(action, mutatedWithin) {
|
|
18
|
+
this.#effect = { action, mutatedWithin };
|
|
19
|
+
}
|
|
20
|
+
/** Empty when nothing has acted — callers then fall back to checks that need no action context. */
|
|
21
|
+
effect() {
|
|
22
|
+
return this.#effect ?? {};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -26,7 +26,7 @@ export const LIVE_CONTROL_TOOLS = [
|
|
|
26
26
|
name: ReticleTool.END_SESSION,
|
|
27
27
|
description: 'End this session for good — use ONLY when the whole task is complete. Sets state "ended" ' +
|
|
28
28
|
'(calm, terminal) and shows the optional `summary` on the panel. If you are just finishing a ' +
|
|
29
|
-
'turn or waiting on the human, call
|
|
29
|
+
'turn or waiting on the human, call reticle_session{action:"yield"} instead (revivable). Idempotent.',
|
|
30
30
|
inputSchema: { summary: z.string().optional(), ...sessionIdShape },
|
|
31
31
|
outputSchema: { ended: z.boolean(), sessionId: z.string() },
|
|
32
32
|
handler: (deps, args) => {
|
|
@@ -43,7 +43,7 @@ export const LIVE_CONTROL_TOOLS = [
|
|
|
43
43
|
'mode:"waiting" = you are done responding and will continue on their next message. ' +
|
|
44
44
|
'mode:"ask" = you are blocked and need an answer first; put the question in `note` so it shows ' +
|
|
45
45
|
'on the panel. The session is REVIVED automatically on your next tool call, so you never need to ' +
|
|
46
|
-
'reopen it. Use
|
|
46
|
+
'reopen it. Use reticle_session{action:"end"} instead only when the whole task is truly complete.',
|
|
47
47
|
inputSchema: {
|
|
48
48
|
mode: z
|
|
49
49
|
.enum([PresenterTone.WAITING, PresenterTone.ASK])
|
|
@@ -194,6 +194,5 @@ function buildFixHint(m) {
|
|
|
194
194
|
: m.label !== undefined
|
|
195
195
|
? `Find the "${m.label}" element`
|
|
196
196
|
: 'Find the flagged element';
|
|
197
|
-
return `${where} and fix: ${m.note}. Then call
|
|
197
|
+
return `${where} and fix: ${m.note}. Then call reticle_session { action: "review", resolve: "${m.id}" }.`;
|
|
198
198
|
}
|
|
199
|
-
//# sourceMappingURL=live-control-tools.js.map
|
|
@@ -40,7 +40,17 @@ export declare class ObservedState {
|
|
|
40
40
|
* In-session counts win: they describe this page as it is now.
|
|
41
41
|
*/
|
|
42
42
|
seedAmbient(counts: AmbientCounts): void;
|
|
43
|
-
/**
|
|
43
|
+
/** Record a driven ref. Idempotent. */
|
|
44
|
+
recordActedRef(ref: string): void;
|
|
45
|
+
/** Every ref driven so far this session. */
|
|
46
|
+
actedRefs(): ReadonlySet<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Record bridge-side sampling as a blind spot.
|
|
49
|
+
*
|
|
50
|
+
* Every other blind spot is reported BY the SDK, which cannot report this one: the events were
|
|
51
|
+
* dropped before they reached the observer. Recording it here keeps the honesty contract intact —
|
|
52
|
+
* a verdict over a sampled window says `coverage: partial` rather than implying it saw everything.
|
|
53
|
+
*/
|
|
54
|
+
noteRateLimited(dropped: number): void;
|
|
44
55
|
blindSpots(): Readonly<Record<string, number>>;
|
|
45
56
|
}
|
|
46
|
-
//# sourceMappingURL=observed-state.d.ts.map
|
|
@@ -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
|