@reticlehq/server 2.14.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +54 -136
- package/bin/reticle.js +1 -1
- package/dist/command/cli/adhoc-verdict.d.ts +64 -0
- package/dist/command/cli/adhoc-verdict.js +144 -0
- package/dist/command/cli/answers/status-next-action.d.ts +61 -0
- package/dist/command/cli/answers/status-next-action.js +84 -0
- package/dist/command/cli/auth/cloud-keystore.js +97 -0
- package/dist/command/cli/auth/device-flow.d.ts +76 -0
- package/dist/command/cli/auth/device-flow.js +56 -0
- package/dist/command/cli/cli-doctor.js +215 -0
- package/dist/command/cli/cli-flow-commands.d.ts +47 -0
- package/dist/command/cli/cli-flow-commands.js +255 -0
- package/dist/command/cli/cli-kill.d.ts +59 -0
- package/dist/command/cli/cli-kill.js +162 -0
- package/dist/command/cli/cli-parse-grammar.d.ts +29 -0
- package/dist/command/cli/cli-parse-grammar.js +39 -0
- package/dist/command/cli/cli-parse-verify.d.ts +22 -0
- package/dist/command/cli/cli-parse-verify.js +143 -0
- package/dist/command/cli/cli-parse.d.ts +193 -0
- package/dist/command/cli/cli-parse.js +833 -0
- package/dist/command/cli/cli-update-commands.js +112 -0
- package/dist/command/cli/cli-verify.d.ts +124 -0
- package/dist/command/cli/cli-verify.js +426 -0
- package/dist/command/cli/cloud-cli.js +694 -0
- package/dist/command/cli/cloud-kit.d.ts +37 -0
- package/dist/command/cli/cloud-kit.js +117 -0
- package/dist/command/cli/cloud-login.js +183 -0
- package/dist/command/cli/config/config-discovery.d.ts +48 -0
- package/dist/command/cli/config/config-discovery.js +183 -0
- package/dist/command/cli/daemon-start-options.d.ts +33 -0
- package/dist/command/cli/demo/demo-page.d.ts +78 -0
- package/dist/command/cli/demo/demo-page.js +238 -0
- package/dist/command/cli/demo/demo-run.d.ts +38 -0
- package/dist/command/cli/demo/demo-run.js +138 -0
- package/dist/command/cli/doctor/doctor-daemon-line.js +47 -0
- package/dist/command/cli/doctor/doctor-rows.d.ts +75 -0
- package/dist/command/cli/doctor/doctor-rows.js +77 -0
- package/dist/command/cli/doctor/doctor-sessions-line.js +69 -0
- package/dist/command/cli/drive/drive-attach.d.ts +113 -0
- package/dist/command/cli/drive/drive-attach.js +221 -0
- package/dist/command/cli/drive/drive-command.js +107 -0
- package/dist/command/cli/launch/cli-launch.d.ts +100 -0
- package/dist/command/cli/launch/cli-launch.js +216 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.d.ts +33 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +198 -0
- package/dist/command/cli/mcp-command.js +176 -0
- package/dist/command/cli/ports/port-holder.js +123 -0
- package/dist/command/cli/ports/resolve/cli-port.d.ts +71 -0
- package/dist/command/cli/ports/resolve/cli-port.js +140 -0
- package/dist/command/cli/setup-mcp-cli.d.ts +29 -0
- package/dist/command/cli/setup-mcp-cli.js +107 -0
- package/dist/command/cli/status/status-lines.d.ts +28 -0
- package/dist/command/cli/status/status-lines.js +117 -0
- package/dist/command/cli/status-fields.d.ts +28 -0
- package/dist/command/cli/status-fields.js +29 -0
- package/dist/command/cli/tutorial.d.ts +116 -0
- package/dist/command/cli/tutorial.js +189 -0
- package/dist/command/cli-onboarding.d.ts +21 -0
- package/dist/command/cli-onboarding.js +27 -0
- package/dist/command/cli.d.ts +6 -0
- package/dist/command/cli.js +710 -0
- package/dist/command/daemon/binding/daemon-status-probe.d.ts +2 -0
- package/dist/command/daemon/binding/daemon-status-probe.js +48 -0
- package/dist/command/daemon/binding/loopback-reach.d.ts +42 -0
- package/dist/command/daemon/binding/loopback-reach.js +63 -0
- package/dist/command/daemon/daemon-resilience.d.ts +86 -0
- package/dist/command/daemon/daemon-resilience.js +339 -0
- package/dist/command/daemon/daemon-resolve.d.ts +113 -0
- package/dist/command/daemon/daemon-resolve.js +187 -0
- package/dist/command/daemon/daemon.d.ts +86 -0
- package/dist/command/daemon/daemon.js +333 -0
- package/dist/command/daemon/idle-shutdown.d.ts +54 -0
- package/dist/command/daemon/idle-shutdown.js +98 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.d.ts +60 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.js +61 -0
- package/dist/command/daemon/lifetime/heartbeat.d.ts +119 -0
- package/dist/command/daemon/lifetime/heartbeat.js +151 -0
- package/dist/command/daemon/lifetime/idle-grace.d.ts +32 -0
- package/dist/command/daemon/lifetime/idle-grace.js +41 -0
- package/dist/command/daemon/lifetime/log-cap.d.ts +68 -0
- package/dist/command/daemon/lifetime/log-cap.js +115 -0
- package/dist/command/daemon/state-dir.js +59 -0
- package/dist/command/daemon/wake-decision.d.ts +32 -0
- package/dist/command/daemon/wake-decision.js +38 -0
- package/dist/command/dev/stale-issue-guard.d.ts +35 -0
- package/dist/command/dev/stale-issue-guard.js +69 -0
- package/dist/command/setup/agent-configs.d.ts +111 -0
- package/dist/command/setup/agent-configs.js +365 -0
- package/dist/command/setup/agent-notice-memory.d.ts +16 -0
- package/dist/command/setup/agent-notice-memory.js +65 -0
- package/dist/command/setup/agent-writer.d.ts +52 -0
- package/dist/command/setup/agent-writer.js +116 -0
- package/dist/command/setup/auto-approve.js +153 -0
- package/dist/command/setup/bringup/bridge-port.d.ts +15 -0
- package/dist/command/setup/bringup/bridge-port.js +24 -0
- package/dist/command/setup/bringup/dev-server-wait.d.ts +69 -0
- package/dist/command/setup/bringup/dev-server-wait.js +83 -0
- package/dist/command/setup/bringup/ensure-daemon.js +58 -0
- package/dist/command/setup/init/init-host.js +37 -0
- package/dist/command/setup/init/init-runtime.d.ts +39 -0
- package/dist/command/setup/init/init-runtime.js +168 -0
- package/dist/command/setup/node-effects.d.ts +63 -0
- package/dist/command/setup/node-effects.js +225 -0
- package/dist/command/setup/probe/page-probe.d.ts +71 -0
- package/dist/command/setup/probe/page-probe.js +89 -0
- package/dist/command/setup/remaining-steps.js +53 -0
- package/dist/command/setup/run-setup.d.ts +123 -0
- package/dist/command/setup/run-setup.js +316 -0
- package/dist/command/setup/setup-command.d.ts +48 -0
- package/dist/command/setup/setup-command.js +224 -0
- package/dist/command/setup/setup-install.d.ts +18 -0
- package/dist/command/setup/setup-install.js +40 -0
- package/dist/command/setup/setup-mcp.d.ts +57 -0
- package/dist/command/setup/setup-mcp.js +92 -0
- package/dist/command/setup/setup-options.d.ts +66 -0
- package/dist/command/setup/setup-options.js +63 -0
- package/dist/command/setup/terminal/confirm.js +206 -0
- package/dist/command/setup/terminal/crash.d.ts +55 -0
- package/dist/command/setup/terminal/crash.js +74 -0
- package/dist/command/update/nudge-credit.js +53 -0
- package/dist/command/update/sdk-sync.d.ts +20 -0
- package/dist/command/update/sdk-sync.js +22 -0
- package/dist/command/update/update-checker.js +122 -0
- package/dist/command/update/update-nudge.d.ts +90 -0
- package/dist/command/update/update-nudge.js +211 -0
- package/dist/command/update/updater.d.ts +81 -0
- package/dist/command/update/updater.js +223 -0
- package/dist/command/version/identity/server-version.js +50 -0
- package/dist/command/version/peer-announce.js +32 -0
- package/dist/command/version/sdk-fix.js +127 -0
- package/dist/command/version/version-nudge.js +61 -0
- package/dist/command/version/version-skew.d.ts +113 -0
- package/dist/command/version/version-skew.js +192 -0
- package/dist/features/crawl/crawl-tools.d.ts +7 -0
- package/dist/features/crawl/crawl-tools.js +89 -0
- package/dist/features/crawl/crawl.d.ts +98 -0
- package/dist/features/crawl/crawl.js +444 -0
- package/dist/features/ee/audit-log.js +11 -0
- package/dist/features/harness/drive-report.d.ts +73 -0
- package/dist/features/harness/drive-report.js +196 -0
- package/dist/features/harness/driver.d.ts +50 -0
- package/dist/features/harness/driver.js +239 -0
- package/dist/features/harness/drivers.d.ts +19 -0
- package/dist/features/harness/drivers.js +19 -0
- package/dist/features/harness/fill-values.d.ts +67 -0
- package/dist/features/harness/fill-values.js +153 -0
- package/dist/features/harness/harness.d.ts +159 -0
- package/dist/features/harness/harness.js +203 -0
- package/dist/features/harness/jev-driver.d.ts +188 -0
- package/dist/features/harness/jev-driver.js +664 -0
- package/dist/features/harness/openai-driver.d.ts +46 -0
- package/dist/features/harness/openai-driver.js +197 -0
- package/dist/features/harness/platform-config.d.ts +52 -0
- package/dist/features/harness/platform-config.js +89 -0
- package/dist/features/harness/with-timeout.d.ts +18 -0
- package/dist/features/harness/with-timeout.js +34 -0
- package/dist/features/license/license-env.d.ts +24 -0
- package/dist/features/license/license-env.js +140 -0
- package/dist/features/license/license.d.ts +161 -0
- package/dist/features/license/license.js +287 -0
- package/dist/features/visual/visual-store.d.ts +22 -0
- package/dist/features/visual/visual-store.js +66 -0
- package/dist/features/visual/visual-tools.d.ts +26 -0
- package/dist/features/visual/visual-tools.js +352 -0
- package/dist/hooks/hook-bus.d.ts +53 -0
- package/dist/hooks/hook-bus.js +106 -0
- package/dist/hooks/hook-commands.d.ts +59 -0
- package/dist/hooks/hook-commands.js +184 -0
- package/dist/hooks/hook-emit.d.ts +44 -0
- package/dist/hooks/hook-emit.js +85 -0
- package/dist/import-graph.d.ts +48 -0
- package/dist/import-graph.js +106 -0
- package/dist/index.d.ts +91 -125
- package/dist/index.js +250 -160
- package/dist/judgement/capsule/capsule-store.d.ts +70 -0
- package/dist/judgement/capsule/capsule-store.js +113 -0
- package/dist/judgement/capsule/capsule.d.ts +42 -0
- package/dist/judgement/capsule/capsule.js +73 -0
- package/dist/judgement/capsule/causal-summary.d.ts +119 -0
- package/dist/judgement/capsule/causal-summary.js +172 -0
- package/dist/judgement/capsule/divergence.d.ts +26 -0
- package/dist/judgement/domain/domain-model.js +126 -0
- package/dist/judgement/domain/domain-tools.d.ts +2 -0
- package/dist/judgement/domain/domain-tools.js +96 -0
- package/dist/judgement/domain/flow-risk.js +80 -0
- package/dist/judgement/oracles/propose-consequences.d.ts +22 -0
- package/dist/judgement/oracles/propose-consequences.js +106 -0
- package/dist/judgement/outcome/predicate-to-expect.d.ts +44 -0
- package/dist/judgement/outcome/predicate-to-expect.js +148 -0
- package/dist/judgement/runs/artifact/build-verification-run.d.ts +34 -0
- package/dist/judgement/runs/artifact/build-verification-run.js +83 -0
- package/dist/judgement/runs/artifact/render-report.js +84 -0
- package/dist/judgement/runs/artifact/replay-mapping.js +34 -0
- package/dist/judgement/runs/artifact/run-store.d.ts +54 -0
- package/dist/judgement/runs/artifact/run-store.js +150 -0
- package/dist/judgement/runs/artifact/to-artifact.d.ts +119 -0
- package/dist/judgement/runs/artifact/to-artifact.js +83 -0
- package/dist/judgement/runs/context-tools.d.ts +2 -0
- package/dist/judgement/runs/context-tools.js +70 -0
- package/dist/judgement/runs/default-run-id.d.ts +8 -0
- package/dist/judgement/runs/default-run-id.js +11 -0
- package/dist/judgement/runs/drive-run.d.ts +61 -0
- package/dist/judgement/runs/drive-run.js +130 -0
- package/dist/judgement/runs/late-answer.d.ts +55 -0
- package/dist/judgement/runs/late-answer.js +81 -0
- package/dist/judgement/runs/reticle-runner.d.ts +60 -0
- package/dist/judgement/runs/reticle-runner.js +95 -0
- package/dist/judgement/runs/run-tools.d.ts +17 -0
- package/dist/judgement/runs/run-tools.js +97 -0
- package/dist/judgement/runs/runner-port.d.ts +11 -0
- package/dist/judgement/runs/runner-port.js +18 -0
- package/dist/judgement/runs/verification-sync.d.ts +13 -0
- package/dist/judgement/runs/verification-sync.js +93 -0
- package/dist/language/flows/affected-tools.d.ts +18 -0
- package/dist/language/flows/affected-tools.js +83 -0
- package/dist/language/flows/annotate-tools.d.ts +15 -0
- package/dist/language/flows/annotate-tools.js +179 -0
- package/dist/language/flows/change/affected.d.ts +24 -0
- package/dist/language/flows/change/affected.js +35 -0
- package/dist/language/flows/change/flow-sources.d.ts +19 -0
- package/dist/language/flows/change/flow-sources.js +55 -0
- package/dist/language/flows/change/gate.js +33 -0
- package/dist/language/flows/decision.d.ts +45 -0
- package/dist/language/flows/decision.js +371 -0
- package/dist/language/flows/empty-flow.js +24 -0
- package/dist/language/flows/fields/flow-secret-field.d.ts +53 -0
- package/dist/language/flows/fields/flow-secret-field.js +75 -0
- package/dist/language/flows/fields/flow-upload-resolve.d.ts +23 -0
- package/dist/language/flows/fields/flow-upload-resolve.js +46 -0
- package/dist/language/flows/flow-anchor.d.ts +59 -0
- package/dist/language/flows/flow-anchor.js +240 -0
- package/dist/language/flows/flow-classify.d.ts +73 -0
- package/dist/language/flows/flow-classify.js +146 -0
- package/dist/language/flows/flow-expect-grammar.d.ts +33 -0
- package/dist/language/flows/flow-expect-grammar.js +155 -0
- package/dist/language/flows/flow-intent.d.ts +52 -0
- package/dist/language/flows/flow-intent.js +123 -0
- package/dist/language/flows/flow-learning.d.ts +52 -0
- package/dist/language/flows/flow-learning.js +76 -0
- package/dist/language/flows/flow-mutate-tools.d.ts +14 -0
- package/dist/language/flows/flow-mutate-tools.js +82 -0
- package/dist/language/flows/flow-replay-run.d.ts +91 -0
- package/dist/language/flows/flow-replay-run.js +748 -0
- package/dist/language/flows/flow-replay-types.d.ts +37 -0
- package/dist/language/flows/flow-replay-types.js +1 -0
- package/dist/language/flows/flow-replay.d.ts +91 -0
- package/dist/language/flows/flow-replay.js +487 -0
- package/dist/language/flows/flow-result.d.ts +35 -0
- package/dist/language/flows/flow-result.js +26 -0
- package/dist/language/flows/flow-step-runners.d.ts +54 -0
- package/dist/language/flows/flow-step-runners.js +369 -0
- package/dist/language/flows/flow-store-for-session.d.ts +32 -0
- package/dist/language/flows/flow-success.d.ts +32 -0
- package/dist/language/flows/flow-success.js +181 -0
- package/dist/language/flows/flow-tools.d.ts +15 -0
- package/dist/language/flows/flow-tools.js +842 -0
- package/dist/language/flows/flows.d.ts +114 -0
- package/dist/language/flows/flows.js +492 -0
- package/dist/language/flows/heal-precondition.d.ts +28 -0
- package/dist/language/flows/heal-precondition.js +38 -0
- package/dist/language/flows/heal-run.d.ts +17 -0
- package/dist/language/flows/heal-run.js +186 -0
- package/dist/language/flows/heal.js +97 -0
- package/dist/language/flows/mutation-run.d.ts +33 -0
- package/dist/language/flows/mutation-run.js +60 -0
- package/dist/language/flows/narrow-write.d.ts +32 -0
- package/dist/language/flows/narrow-write.js +26 -0
- package/dist/language/flows/recording/flake.d.ts +56 -0
- package/dist/language/flows/recording/recording-backtrack.js +73 -0
- package/dist/language/flows/recording/tape/recordings.d.ts +134 -0
- package/dist/language/flows/recording/tape/recordings.js +144 -0
- package/dist/language/flows/replay.d.ts +83 -0
- package/dist/language/flows/replay.js +397 -0
- package/dist/language/flows/role-anchor-nearest.js +45 -0
- package/dist/language/flows/stores/assertion-tiers-store.d.ts +26 -0
- package/dist/language/flows/stores/assertion-tiers-store.js +107 -0
- package/dist/language/flows/stores/flake-store.d.ts +18 -0
- package/dist/language/flows/stores/flake-store.js +58 -0
- package/dist/language/flows/suite/server-verify.d.ts +15 -0
- package/dist/language/flows/suite/server-verify.js +56 -0
- package/dist/language/flows/suite/suite-flakes.d.ts +34 -0
- package/dist/language/flows/suite/suite-flakes.js +32 -0
- package/dist/language/flows/suite-selection.d.ts +45 -0
- package/dist/language/flows/suite-selection.js +84 -0
- package/dist/language/flows/verify-change-tools.d.ts +2 -0
- package/dist/language/flows/verify-change-tools.js +244 -0
- package/dist/machine/clock.d.ts +24 -0
- package/dist/machine/clock.js +1 -0
- package/dist/machine/repo-root.d.ts +16 -0
- package/dist/machine/repo-root.js +20 -0
- package/dist/memory/cloud/account-state.d.ts +20 -0
- package/dist/memory/cloud/account-state.js +70 -0
- package/dist/memory/cloud/cloud-config.d.ts +79 -0
- package/dist/memory/cloud/cloud-config.js +156 -0
- package/dist/memory/cloud/cloud-sync.d.ts +195 -0
- package/dist/memory/cloud/cloud-sync.js +359 -0
- package/dist/memory/cloud/harness-config.d.ts +10 -0
- package/dist/memory/cloud/harness-config.js +58 -0
- package/dist/memory/cloud/harness-offer.d.ts +44 -0
- package/dist/memory/cloud/harness-offer.js +146 -0
- package/dist/memory/cloud/harness-switch.d.ts +11 -0
- package/dist/memory/cloud/harness-switch.js +53 -0
- package/dist/memory/cloud/sync-cycle.d.ts +121 -0
- package/dist/memory/cloud/sync-cycle.js +295 -0
- package/dist/memory/cloud/sync-daemon.d.ts +73 -0
- package/dist/memory/cloud/sync-daemon.js +297 -0
- package/dist/memory/cloud/sync-disk.js +193 -0
- package/dist/memory/impact/impact-recorder.d.ts +54 -0
- package/dist/memory/impact/impact-recorder.js +160 -0
- package/dist/memory/impact/impact-store.d.ts +52 -0
- package/dist/memory/impact/impact-store.js +274 -0
- package/dist/memory/intent/inline-intent.d.ts +60 -0
- package/dist/memory/intent/inline-intent.js +206 -0
- package/dist/memory/intent/intent-shard-store.d.ts +87 -0
- package/dist/memory/intent/intent-shard-store.js +215 -0
- package/dist/memory/intent/intent-shard.d.ts +389 -0
- package/dist/memory/intent/intent-shard.js +153 -0
- package/dist/memory/intent/intent-store.d.ts +47 -0
- package/dist/memory/intent/intent-store.js +133 -0
- package/dist/memory/intent/intent-subject.d.ts +46 -0
- package/dist/memory/intent/intent-subject.js +175 -0
- package/dist/memory/intent/intent-tools.d.ts +2 -0
- package/dist/memory/intent/intent-tools.js +157 -0
- package/dist/memory/intent/open-intents.d.ts +36 -0
- package/dist/memory/intent/open-intents.js +58 -0
- package/dist/memory/journal/ambient-store.d.ts +13 -0
- package/dist/memory/journal/ambient-store.js +52 -0
- package/dist/memory/journal/attach-journal.d.ts +37 -0
- package/dist/memory/journal/attach-journal.js +26 -0
- package/dist/memory/journal/drive-flow.d.ts +74 -0
- package/dist/memory/journal/drive-flow.js +157 -0
- package/dist/memory/journal/drive-run-flush.d.ts +42 -0
- package/dist/memory/journal/drive-run-flush.js +82 -0
- package/dist/memory/journal/envelope-store.d.ts +16 -0
- package/dist/memory/journal/envelope-store.js +61 -0
- package/dist/memory/journal/envelope.d.ts +230 -0
- package/dist/memory/journal/journal-query.d.ts +66 -0
- package/dist/memory/journal/journal-query.js +98 -0
- package/dist/memory/journal/journal-recorder.d.ts +109 -0
- package/dist/memory/journal/journal-recorder.js +153 -0
- package/dist/memory/journal/on-disk/ambient-file.d.ts +21 -0
- package/dist/memory/journal/on-disk/ambient-file.js +15 -0
- package/dist/memory/journal/on-disk/retention.d.ts +141 -0
- package/dist/memory/journal/on-disk/retention.js +291 -0
- package/dist/memory/journal/on-disk/workspace-gitignore.d.ts +21 -0
- package/dist/memory/journal/on-disk/workspace-gitignore.js +93 -0
- package/dist/memory/journal/self-observation.d.ts +3 -0
- package/dist/memory/journal/self-observation.js +67 -0
- package/dist/memory/journal/session-end.d.ts +112 -0
- package/dist/memory/journal/session-end.js +179 -0
- package/dist/memory/journal/session-journal.d.ts +134 -0
- package/dist/memory/journal/session-journal.js +614 -0
- package/dist/memory/project/artifact-root-resolver.d.ts +3 -0
- package/dist/memory/project/artifact-root-resolver.js +89 -0
- package/dist/memory/project/artifact-root.d.ts +109 -0
- package/dist/memory/project/artifact-root.js +157 -0
- package/dist/memory/project/dir/fill-value-store.d.ts +32 -0
- package/dist/memory/project/dir/fill-value-store.js +88 -0
- package/dist/memory/project/dir/reticle-dir.d.ts +139 -0
- package/dist/memory/project/dir/reticle-dir.js +229 -0
- package/dist/memory/project/fs/fs-port.d.ts +68 -0
- package/dist/memory/project/fs/fs-port.js +82 -0
- package/dist/memory/project/learned-routes.d.ts +38 -0
- package/dist/memory/project/learned-routes.js +79 -0
- package/dist/memory/project/memory-fs.d.ts +10 -0
- package/dist/memory/project/project-for-root.d.ts +30 -0
- package/dist/memory/project/project-for-root.js +43 -0
- package/dist/memory/project/project-store.d.ts +54 -0
- package/dist/memory/project/project-store.js +244 -0
- package/dist/memory/project/project-tools.d.ts +8 -0
- package/dist/memory/project/project-tools.js +160 -0
- package/dist/memory/project/reticle-deps.d.ts +15 -0
- package/dist/memory/project/reticle-deps.js +33 -0
- package/dist/memory/project/session-root.d.ts +52 -0
- package/dist/memory/project/session-root.js +100 -0
- package/dist/memory/recall/memory-tools.d.ts +2 -0
- package/dist/memory/recall/memory-tools.js +81 -0
- package/dist/memory/recall/prior/connection-memory.d.ts +65 -0
- package/dist/memory/recall/prior/connection-memory.js +114 -0
- package/dist/memory/recall/project-memory.d.ts +33 -0
- package/dist/portal/bridge/auth-failure-reason.d.ts +32 -0
- package/dist/portal/bridge/auth-failure-reason.js +68 -0
- package/dist/portal/bridge/bridge-security.d.ts +30 -0
- package/dist/portal/bridge/bridge-security.js +53 -0
- package/dist/portal/bridge/bridge.d.ts +109 -0
- package/dist/portal/bridge/bridge.js +808 -0
- package/dist/portal/input/drive-url-stamp.d.ts +14 -0
- package/dist/portal/input/drive-url-stamp.js +33 -0
- package/dist/portal/input/network-detail.d.ts +97 -0
- package/dist/portal/input/network-detail.js +138 -0
- package/dist/portal/input/network-mock-tools.d.ts +21 -0
- package/dist/portal/input/network-mock-tools.js +124 -0
- package/dist/portal/input/network-mock.js +83 -0
- package/dist/portal/input/network-mutation.d.ts +47 -0
- package/dist/portal/input/network-mutation.js +53 -0
- package/dist/portal/input/real-input.d.ts +261 -0
- package/dist/portal/input/real-input.js +488 -0
- package/dist/portal/input/scroll-find.js +111 -0
- package/dist/portal/input/scroll-tools.d.ts +2 -0
- package/dist/portal/input/scroll-tools.js +76 -0
- package/dist/portal/input/storage-fixture.d.ts +57 -0
- package/dist/portal/input/storage-fixture.js +92 -0
- package/dist/portal/input/viewport-tools.d.ts +2 -0
- package/dist/portal/input/viewport-tools.js +72 -0
- package/dist/portal/pool/browser-pool.d.ts +174 -0
- package/dist/portal/pool/browser-pool.js +559 -0
- package/dist/portal/pool/lease-reaper.js +40 -0
- package/dist/portal/pool/playwright-launcher.js +150 -0
- package/dist/portal/pool/pool-contract.d.ts +116 -0
- package/dist/portal/pool/pool-contract.js +8 -0
- package/dist/portal/pool/storage-seed.d.ts +23 -0
- package/dist/portal/realm/conformance-client.d.ts +43 -0
- package/dist/portal/realm/conformance-client.js +227 -0
- package/dist/portal/realm/http-witness.d.ts +48 -0
- package/dist/portal/realm/http-witness.js +135 -0
- package/dist/portal/realm/web-realm.d.ts +225 -0
- package/dist/portal/realm/web-realm.js +661 -0
- package/dist/portal/session/daemon-answers.d.ts +20 -0
- package/dist/portal/session/daemon-answers.js +20 -0
- package/dist/portal/session/dev-server/dev-server-probe.js +147 -0
- package/dist/portal/session/facts/handshake-facts.d.ts +56 -0
- package/dist/portal/session/facts/handshake-facts.js +1 -0
- package/dist/portal/session/facts/observed-state.d.ts +60 -0
- package/dist/portal/session/facts/observed-state.js +121 -0
- package/dist/portal/session/facts/session-replaced.d.ts +43 -0
- package/dist/portal/session/facts/session-replaced.js +51 -0
- package/dist/portal/session/live-control-tools.d.ts +15 -0
- package/dist/portal/session/live-control-tools.js +242 -0
- package/dist/portal/session/no-session-diagnosis.d.ts +176 -0
- package/dist/portal/session/no-session-diagnosis.js +457 -0
- package/dist/portal/session/no-session-next-action.d.ts +76 -0
- package/dist/portal/session/no-session-next-action.js +211 -0
- package/dist/portal/session/no-session-watch.js +351 -0
- package/dist/portal/session/output-budget.d.ts +82 -0
- package/dist/portal/session/output-budget.js +108 -0
- package/dist/portal/session/page-commands/undeclared-command.d.ts +30 -0
- package/dist/portal/session/page-commands/undeclared-command.js +44 -0
- package/dist/portal/session/presence/session-recommendation.js +29 -0
- package/dist/portal/session/rebind.d.ts +18 -0
- package/dist/portal/session/rebind.js +38 -0
- package/dist/portal/session/session-health.d.ts +145 -0
- package/dist/portal/session/session-health.js +154 -0
- package/dist/portal/session/session-manager.d.ts +81 -0
- package/dist/portal/session/session-manager.js +504 -0
- package/dist/portal/session/session-reaper.d.ts +36 -0
- package/dist/portal/session/session-reaper.js +93 -0
- package/dist/portal/session/session-tools.d.ts +8 -0
- package/dist/portal/session/session-tools.js +42 -0
- package/dist/portal/session/session.d.ts +279 -0
- package/dist/portal/session/session.js +875 -0
- package/dist/portal/session/stall-clock.js +48 -0
- package/dist/portal/session/timing/command-timeout.d.ts +40 -0
- package/dist/portal/session/timing/command-timeout.js +42 -0
- package/dist/start-options.d.ts +51 -0
- package/dist/start-options.js +7 -0
- package/dist/status-payload.d.ts +16 -10
- package/dist/status-payload.js +5 -2
- package/dist/surface/http-server.d.ts +52 -0
- package/dist/surface/http-server.js +379 -0
- package/dist/surface/mcp/consumer-verdict-guard.d.ts +40 -0
- package/dist/surface/mcp/consumer-verdict-guard.js +57 -0
- package/dist/surface/mcp/faults/mcp-is-error.d.ts +13 -0
- package/dist/surface/mcp/faults/mcp-is-error.js +18 -0
- package/dist/surface/mcp/faults/mcp-outage.d.ts +33 -0
- package/dist/surface/mcp/faults/mcp-outage.js +71 -0
- package/dist/surface/mcp/mcp-proxy.d.ts +119 -0
- package/dist/surface/mcp/mcp-proxy.js +882 -0
- package/dist/surface/mcp/mcp.d.ts +89 -0
- package/dist/surface/mcp/mcp.js +676 -0
- package/dist/surface/mcp/proxy/mcp-post-transport.js +109 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.d.ts +22 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.js +71 -0
- package/dist/surface/mcp/proxy/proxy-handshake.js +192 -0
- package/dist/surface/mcp/proxy/proxy-lifecycle.d.ts +90 -0
- package/dist/surface/mcp/proxy/proxy-lifecycle.js +98 -0
- package/dist/surface/mcp/proxy/proxy-log.d.ts +57 -0
- package/dist/surface/mcp/proxy/proxy-log.js +117 -0
- package/dist/surface/mcp/server-instructions.d.ts +26 -0
- package/dist/surface/mcp/server-instructions.js +156 -0
- package/dist/surface/mcp/surface-vocabulary.d.ts +47 -0
- package/dist/surface/mcp/surface-vocabulary.js +56 -0
- package/dist/surface/mcp/tool-catalog-cache.d.ts +45 -0
- package/dist/surface/mcp/tool-catalog-cache.js +77 -0
- package/dist/surface/tools/act/act-danger.js +69 -0
- package/dist/surface/tools/act/act-helpers.d.ts +17 -0
- package/dist/surface/tools/act/act-helpers.js +40 -0
- package/dist/surface/tools/act/act-observation.d.ts +42 -0
- package/dist/surface/tools/act/act-observation.js +36 -0
- package/dist/surface/tools/act/act-preflight.d.ts +27 -0
- package/dist/surface/tools/act/act-preflight.js +168 -0
- package/dist/surface/tools/act/act-target.d.ts +10 -0
- package/dist/surface/tools/act/act-target.js +100 -0
- package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +68 -0
- package/dist/surface/tools/act/resolve-target.js +115 -0
- package/dist/surface/tools/act/sequence-grade.d.ts +79 -0
- package/dist/surface/tools/act/sequence-grade.js +104 -0
- package/dist/surface/tools/act-capsule.d.ts +33 -0
- package/dist/surface/tools/act-capsule.js +79 -0
- package/dist/surface/tools/act-merged.d.ts +20 -0
- package/dist/surface/tools/act-merged.js +53 -0
- package/dist/surface/tools/act-sequence-tool.js +330 -0
- package/dist/surface/tools/act-tools.d.ts +24 -0
- package/dist/surface/tools/act-tools.js +835 -0
- package/dist/surface/tools/args/numeric-bounds.d.ts +97 -0
- package/dist/surface/tools/args/numeric-bounds.js +133 -0
- package/dist/surface/tools/assert/assert-grade.d.ts +42 -0
- package/dist/surface/tools/assert/assert-grade.js +125 -0
- package/dist/surface/tools/assert/assert-source.d.ts +52 -0
- package/dist/surface/tools/assert/assert-source.js +74 -0
- package/dist/surface/tools/assert/assert-verdict.d.ts +48 -0
- package/dist/surface/tools/assert/assert-verdict.js +247 -0
- package/dist/surface/tools/browser-tools.d.ts +2 -0
- package/dist/surface/tools/browser-tools.js +115 -0
- package/dist/surface/tools/contract-tools.d.ts +2 -0
- package/dist/surface/tools/contract-tools.js +112 -0
- package/dist/surface/tools/coverage-tools.d.ts +18 -0
- package/dist/surface/tools/coverage-tools.js +178 -0
- package/dist/surface/tools/dynamic-tools.d.ts +17 -0
- package/dist/surface/tools/dynamic-tools.js +282 -0
- package/dist/surface/tools/error-recovery.d.ts +116 -0
- package/dist/surface/tools/error-recovery.js +527 -0
- package/dist/surface/tools/explore-tools.d.ts +14 -0
- package/dist/surface/tools/explore-tools.js +162 -0
- package/dist/surface/tools/feature-capture.d.ts +151 -0
- package/dist/surface/tools/feature-capture.js +235 -0
- package/dist/surface/tools/feedback-invite.d.ts +48 -0
- package/dist/surface/tools/feedback-invite.js +71 -0
- package/dist/surface/tools/feedback-tools.d.ts +35 -0
- package/dist/surface/tools/feedback-tools.js +280 -0
- package/dist/surface/tools/first-sentence.d.ts +24 -0
- package/dist/surface/tools/first-sentence.js +0 -0
- package/dist/surface/tools/gap-novelty.d.ts +39 -0
- package/dist/surface/tools/gap-novelty.js +69 -0
- package/dist/surface/tools/gaps/capability-absences.d.ts +39 -0
- package/dist/surface/tools/gaps/capability-absences.js +46 -0
- package/dist/surface/tools/harness-explore.d.ts +177 -0
- package/dist/surface/tools/harness-explore.js +453 -0
- package/dist/surface/tools/harness-plan.d.ts +76 -0
- package/dist/surface/tools/harness-plan.js +156 -0
- package/dist/surface/tools/harness-toolset.d.ts +35 -0
- package/dist/surface/tools/harness-toolset.js +144 -0
- package/dist/surface/tools/inspect-tool.d.ts +4 -0
- package/dist/surface/tools/inspect-tool.js +142 -0
- package/dist/surface/tools/invoke-tool.d.ts +10 -0
- package/dist/surface/tools/invoke-tool.js +668 -0
- package/dist/surface/tools/lease-hint.d.ts +50 -0
- package/dist/surface/tools/lease-hint.js +125 -0
- package/dist/surface/tools/lease-tools.d.ts +195 -0
- package/dist/surface/tools/lease-tools.js +797 -0
- package/dist/surface/tools/lineage-tools.d.ts +14 -0
- package/dist/surface/tools/lineage-tools.js +64 -0
- package/dist/surface/tools/live-call-text.d.ts +25 -0
- package/dist/surface/tools/live-call-text.js +191 -0
- package/dist/surface/tools/merge-tools.d.ts +68 -0
- package/dist/surface/tools/merge-tools.js +110 -0
- package/dist/surface/tools/merged-name-redirect.d.ts +36 -0
- package/dist/surface/tools/merged-name-redirect.js +107 -0
- package/dist/surface/tools/observe-tools.js +700 -0
- package/dist/surface/tools/read/query-windowed.d.ts +54 -0
- package/dist/surface/tools/read/query-windowed.js +75 -0
- package/dist/surface/tools/read/snapshot-delta.d.ts +92 -0
- package/dist/surface/tools/read/snapshot-delta.js +356 -0
- package/dist/surface/tools/read-tools.js +569 -0
- package/dist/surface/tools/real-input-attempt.d.ts +68 -0
- package/dist/surface/tools/real-input-attempt.js +360 -0
- package/dist/surface/tools/reconcile-tools.js +211 -0
- package/dist/surface/tools/tool-hit-rate.js +90 -0
- package/dist/surface/tools/tool-kit.d.ts +254 -0
- package/dist/surface/tools/tool-kit.js +123 -0
- package/dist/surface/tools/tool-surface.d.ts +195 -0
- package/dist/surface/tools/tool-surface.js +429 -0
- package/dist/surface/tools/tools-helpers.d.ts +40 -0
- package/dist/surface/tools/tools-helpers.js +76 -0
- package/dist/surface/tools/tools.d.ts +76 -0
- package/dist/surface/tools/tools.js +799 -0
- package/dist/surface/tools/unadvertised-help.js +60 -0
- package/dist/surface/tools/verify-next-baton.js +52 -0
- package/dist/telemetry/app-instrumented.d.ts +3 -5
- package/dist/telemetry/app-instrumented.js +17 -6
- package/dist/telemetry/argument-shape.js +4 -4
- package/dist/telemetry/bug-found.js +49 -27
- package/dist/telemetry/cli-telemetry.js +27 -10
- package/dist/telemetry/daemon-telemetry.d.ts +7 -13
- package/dist/telemetry/daemon-telemetry.js +15 -22
- package/dist/telemetry/error-fingerprint.js +26 -1
- package/dist/telemetry/feedback-cli.d.ts +1 -1
- package/dist/telemetry/feedback-cli.js +2 -2
- package/dist/telemetry/feedback-context.js +4 -4
- package/dist/telemetry/feedback.js +1 -1
- package/dist/telemetry/harness-drive.d.ts +6 -0
- package/dist/telemetry/harness-drive.js +39 -0
- package/dist/telemetry/install-source.js +1 -1
- package/dist/telemetry/install-trace.d.ts +8 -0
- package/dist/telemetry/install-trace.js +74 -0
- package/dist/telemetry/license-activation.js +1 -1
- package/dist/telemetry/mcp-connection.d.ts +14 -1
- package/dist/telemetry/mcp-connection.js +17 -2
- package/dist/telemetry/onboarding-firsts.d.ts +40 -0
- package/dist/telemetry/onboarding-firsts.js +109 -0
- package/dist/telemetry/onboarding-funnel.d.ts +26 -0
- package/dist/telemetry/onboarding-funnel.js +60 -0
- package/dist/telemetry/project-profile.js +1 -1
- package/dist/telemetry/run-telemetry.js +13 -0
- package/dist/telemetry/session-metrics.d.ts +6 -7
- package/dist/telemetry/session-metrics.js +14 -21
- package/dist/telemetry/telemetry.d.ts +8 -1
- package/dist/telemetry/telemetry.js +6 -5
- package/dist/telemetry/verification-of.d.ts +6 -8
- package/dist/telemetry/verification-of.js +38 -12
- package/dist/workspace-packages.d.ts +22 -0
- package/dist/workspace-packages.js +57 -0
- package/docs/README.md +29 -23
- package/docs/actions.mdx +4 -4
- package/docs/adapters.md +75 -0
- package/docs/agent-cheatsheet.md +37 -27
- package/docs/architecture.md +3 -2
- package/docs/autodrive.md +99 -0
- package/docs/benchmarks.md +1 -1
- package/docs/best-practices.mdx +3 -3
- package/docs/capabilities.mdx +4 -4
- package/docs/cli/cloud.mdx +4 -4
- package/docs/cli/doctor.mdx +1 -0
- package/docs/cli/feedback.mdx +1 -1
- package/docs/cli/init.mdx +3 -3
- package/docs/cli/mcp.mdx +1 -1
- package/docs/cli/status.mdx +35 -20
- package/docs/cli/watch.mdx +1 -1
- package/docs/cli.mdx +15 -25
- package/docs/desktop.mdx +1 -1
- package/docs/enterprise.md +3 -2
- package/docs/faq.mdx +4 -4
- package/docs/first-drive.md +5 -5
- package/docs/flows.md +5 -5
- package/docs/for-agents.md +2 -1
- package/docs/frameworks.mdx +1 -1
- package/docs/getting-started.md +30 -21
- package/docs/http-transport.md +1 -1
- package/docs/index.mdx +28 -10
- package/docs/install-agentic.mdx +12 -4
- package/docs/install-manual.mdx +23 -7
- package/docs/instrumentation.mdx +3 -3
- package/docs/local-registry.md +15 -4
- package/docs/packages/babel-plugin.mdx +1 -1
- package/docs/packages/browser.mdx +2 -2
- package/docs/packages/core.mdx +2 -2
- package/docs/packages/engine.mdx +40 -0
- package/docs/packages/open-verification.mdx +40 -0
- package/docs/packages/tauri.mdx +1 -1
- package/docs/packages.mdx +22 -2
- package/docs/platform-integration.md +3 -3
- package/docs/predicates.mdx +19 -3
- package/docs/protocol.mdx +60 -0
- package/docs/quickstart.mdx +48 -13
- package/docs/recipes.mdx +1 -1
- package/docs/required-checks.md +37 -0
- package/docs/skill-file.mdx +2 -2
- package/docs/skill-setup.md +104 -0
- package/docs/state-files.md +46 -0
- package/docs/state-management.mdx +1 -1
- package/docs/system-map.md +8 -6
- package/docs/telemetry.md +4 -3
- package/docs/testing.md +12 -3
- package/docs/token-efficiency.md +3 -3
- package/docs/tools/act-and-wait.mdx +173 -0
- package/docs/tools/act-sequence.mdx +160 -0
- package/docs/tools/act.mdx +95 -0
- package/docs/tools/assert.mdx +129 -0
- package/docs/tools/console.mdx +70 -0
- package/docs/tools/inspect.mdx +95 -0
- package/docs/tools/navigate.mdx +107 -0
- package/docs/tools/network.mdx +126 -0
- package/docs/tools/observe.mdx +145 -0
- package/docs/tools/overview.mdx +163 -0
- package/docs/tools/query.mdx +133 -0
- package/docs/tools/sessions.mdx +101 -0
- package/docs/tools/snapshot.mdx +136 -0
- package/docs/tools/state.mdx +111 -0
- package/docs/tools/wait-for.mdx +92 -0
- package/docs/troubleshooting.mdx +43 -9
- package/docs/usage.md +59 -59
- package/package.json +31 -13
- package/dist/bridge/auth-failure-reason.d.ts +0 -23
- package/dist/bridge/auth-failure-reason.js +0 -47
- package/dist/bridge/bridge-security.d.ts +0 -30
- package/dist/bridge/bridge-security.js +0 -53
- package/dist/bridge/bridge.d.ts +0 -95
- package/dist/bridge/bridge.js +0 -713
- package/dist/bridge/bridge.test-harness.d.ts +0 -65
- package/dist/bridge/bridge.test-harness.js +0 -230
- package/dist/capsule/capsule-store.d.ts +0 -71
- package/dist/capsule/capsule-store.js +0 -114
- package/dist/capsule/capsule.d.ts +0 -18
- package/dist/capsule/capsule.js +0 -35
- package/dist/capsule/causal-summary.d.ts +0 -119
- package/dist/capsule/causal-summary.js +0 -172
- package/dist/capsule/divergence.d.ts +0 -35
- package/dist/capsule/predicate-to-links.d.ts +0 -8
- package/dist/capsule/predicate-to-links.js +0 -33
- package/dist/cli/adhoc-verdict.d.ts +0 -58
- package/dist/cli/adhoc-verdict.js +0 -115
- package/dist/cli/cli-doctor.js +0 -195
- package/dist/cli/cli-flow-commands.d.ts +0 -46
- package/dist/cli/cli-flow-commands.js +0 -255
- package/dist/cli/cli-kill.d.ts +0 -59
- package/dist/cli/cli-kill.js +0 -162
- package/dist/cli/cli-launch.d.ts +0 -92
- package/dist/cli/cli-launch.js +0 -223
- package/dist/cli/cli-parse.d.ts +0 -171
- package/dist/cli/cli-parse.js +0 -874
- package/dist/cli/cli-port.d.ts +0 -70
- package/dist/cli/cli-port.js +0 -136
- package/dist/cli/cli-update-commands.js +0 -112
- package/dist/cli/cli-verify.d.ts +0 -86
- package/dist/cli/cli-verify.js +0 -340
- package/dist/cli/cloud-cli.js +0 -694
- package/dist/cli/cloud-keystore.js +0 -97
- package/dist/cli/cloud-kit.d.ts +0 -37
- package/dist/cli/cloud-kit.js +0 -121
- package/dist/cli/cloud-login.js +0 -183
- package/dist/cli/config-discovery.d.ts +0 -36
- package/dist/cli/config-discovery.js +0 -164
- package/dist/cli/daemon-start-options.d.ts +0 -33
- package/dist/cli/device-flow.d.ts +0 -76
- package/dist/cli/device-flow.js +0 -56
- package/dist/cli/doctor-daemon-line.js +0 -47
- package/dist/cli/doctor-rows.d.ts +0 -63
- package/dist/cli/doctor-rows.js +0 -65
- package/dist/cli/doctor-sessions-line.js +0 -69
- package/dist/cli/drive-attach.d.ts +0 -113
- package/dist/cli/drive-attach.js +0 -221
- package/dist/cli/drive-command.js +0 -107
- package/dist/cli/mcp-command.js +0 -174
- package/dist/cli/port-holder.js +0 -123
- package/dist/cli/status-next-action.d.ts +0 -51
- package/dist/cli/status-next-action.js +0 -60
- package/dist/cli.d.ts +0 -6
- package/dist/cli.js +0 -828
- package/dist/cloud/account-state.d.ts +0 -20
- package/dist/cloud/account-state.js +0 -65
- package/dist/cloud/cloud-config.d.ts +0 -57
- package/dist/cloud/cloud-config.js +0 -145
- package/dist/cloud/cloud-sync.d.ts +0 -190
- package/dist/cloud/cloud-sync.js +0 -354
- package/dist/cloud/sync-cycle.d.ts +0 -111
- package/dist/cloud/sync-cycle.js +0 -270
- package/dist/cloud/sync-daemon.d.ts +0 -53
- package/dist/cloud/sync-daemon.js +0 -260
- package/dist/cloud/sync-disk.js +0 -191
- package/dist/crawl/crawl-tools.d.ts +0 -7
- package/dist/crawl/crawl-tools.js +0 -87
- package/dist/crawl/crawl.d.ts +0 -98
- package/dist/crawl/crawl.js +0 -441
- package/dist/daemon/daemon-resilience.d.ts +0 -74
- package/dist/daemon/daemon-resilience.js +0 -318
- package/dist/daemon/daemon-resolve.d.ts +0 -113
- package/dist/daemon/daemon-resolve.js +0 -187
- package/dist/daemon/daemon-usefulness.d.ts +0 -61
- package/dist/daemon/daemon-usefulness.js +0 -62
- package/dist/daemon/daemon.d.ts +0 -95
- package/dist/daemon/daemon.js +0 -336
- package/dist/daemon/heartbeat.d.ts +0 -111
- package/dist/daemon/heartbeat.js +0 -141
- package/dist/daemon/idle-grace.d.ts +0 -32
- package/dist/daemon/idle-grace.js +0 -41
- package/dist/daemon/idle-shutdown.d.ts +0 -54
- package/dist/daemon/idle-shutdown.js +0 -98
- package/dist/daemon/state-dir.js +0 -59
- package/dist/daemon/wake-decision.d.ts +0 -32
- package/dist/daemon/wake-decision.js +0 -38
- package/dist/dev/stale-issue-guard.d.ts +0 -41
- package/dist/dev/stale-issue-guard.js +0 -75
- package/dist/domain/domain-model.js +0 -126
- package/dist/domain/domain-tools.d.ts +0 -2
- package/dist/domain/domain-tools.js +0 -94
- package/dist/domain/flow-risk.js +0 -80
- package/dist/ee/audit-log.js +0 -11
- package/dist/events/body-failures.d.ts +0 -4
- package/dist/events/body-failures.js +0 -113
- package/dist/events/contradiction-folds.d.ts +0 -45
- package/dist/events/contradiction-folds.js +0 -42
- package/dist/events/contradictions.d.ts +0 -170
- package/dist/events/contradictions.js +0 -718
- package/dist/events/declared.d.ts +0 -74
- package/dist/events/declared.js +0 -171
- package/dist/events/echo-mismatch.d.ts +0 -10
- package/dist/events/echo-mismatch.js +0 -299
- package/dist/events/event-filters.d.ts +0 -121
- package/dist/events/event-filters.js +0 -215
- package/dist/events/json-salvage.d.ts +0 -33
- package/dist/events/json-salvage.js +0 -96
- package/dist/events/lineage.d.ts +0 -52
- package/dist/events/lineage.js +0 -122
- package/dist/events/net-evidence.d.ts +0 -21
- package/dist/events/net-evidence.js +0 -81
- package/dist/events/observed-in-window.d.ts +0 -24
- package/dist/events/observed-in-window.js +0 -38
- package/dist/events/predicate-asks.d.ts +0 -30
- package/dist/events/predicate-asks.js +0 -48
- package/dist/events/predicate-console.d.ts +0 -13
- package/dist/events/predicate-console.js +0 -138
- package/dist/events/predicate-element.d.ts +0 -13
- package/dist/events/predicate-element.js +0 -214
- package/dist/events/predicate-eval.d.ts +0 -101
- package/dist/events/predicate-eval.js +0 -834
- package/dist/events/predicate-parse.d.ts +0 -17
- package/dist/events/predicate-parse.js +0 -175
- package/dist/events/predicate-precheck.d.ts +0 -8
- package/dist/events/predicate-precheck.js +0 -41
- package/dist/events/predicate-request-body.d.ts +0 -50
- package/dist/events/predicate-request-body.js +0 -120
- package/dist/events/predicate-route.d.ts +0 -66
- package/dist/events/predicate-route.js +0 -258
- package/dist/events/predicate-schema.d.ts +0 -168
- package/dist/events/predicate-schema.js +0 -501
- package/dist/events/predicate.d.ts +0 -74
- package/dist/events/predicate.js +0 -725
- package/dist/events/reaction.d.ts +0 -33
- package/dist/events/reaction.js +0 -59
- package/dist/events/reconcile.d.ts +0 -39
- package/dist/events/reconcile.js +0 -211
- package/dist/events/ring-buffer.d.ts +0 -41
- package/dist/events/ring-buffer.js +0 -151
- package/dist/events/split-text-miss.d.ts +0 -32
- package/dist/events/split-text-miss.js +0 -51
- package/dist/events/stale-response.d.ts +0 -3
- package/dist/events/stale-response.js +0 -186
- package/dist/events/testid-near-miss.d.ts +0 -22
- package/dist/events/testid-near-miss.js +0 -33
- package/dist/events/unit-mismatch.d.ts +0 -16
- package/dist/events/unit-mismatch.js +0 -167
- package/dist/flows/affected-tools.d.ts +0 -18
- package/dist/flows/affected-tools.js +0 -80
- package/dist/flows/affected.d.ts +0 -24
- package/dist/flows/affected.js +0 -35
- package/dist/flows/annotate-tools.d.ts +0 -15
- package/dist/flows/annotate-tools.js +0 -179
- package/dist/flows/assertion-tiers-store.d.ts +0 -16
- package/dist/flows/assertion-tiers-store.js +0 -98
- package/dist/flows/decision.d.ts +0 -25
- package/dist/flows/decision.js +0 -201
- package/dist/flows/empty-flow.js +0 -24
- package/dist/flows/flake-store.d.ts +0 -18
- package/dist/flows/flake-store.js +0 -58
- package/dist/flows/flake.d.ts +0 -56
- package/dist/flows/flow-classify.d.ts +0 -51
- package/dist/flows/flow-classify.js +0 -102
- package/dist/flows/flow-expect-grammar.d.ts +0 -33
- package/dist/flows/flow-expect-grammar.js +0 -155
- package/dist/flows/flow-intent.d.ts +0 -52
- package/dist/flows/flow-intent.js +0 -123
- package/dist/flows/flow-replay-run.d.ts +0 -43
- package/dist/flows/flow-replay-run.js +0 -478
- package/dist/flows/flow-replay.d.ts +0 -82
- package/dist/flows/flow-replay.js +0 -519
- package/dist/flows/flow-secret-field.d.ts +0 -14
- package/dist/flows/flow-secret-field.js +0 -22
- package/dist/flows/flow-sources.d.ts +0 -19
- package/dist/flows/flow-sources.js +0 -32
- package/dist/flows/flow-step-runners.d.ts +0 -52
- package/dist/flows/flow-step-runners.js +0 -315
- package/dist/flows/flow-store-for-session.d.ts +0 -31
- package/dist/flows/flow-success.d.ts +0 -32
- package/dist/flows/flow-success.js +0 -169
- package/dist/flows/flow-tools.d.ts +0 -15
- package/dist/flows/flow-tools.js +0 -639
- package/dist/flows/flow-upload-resolve.d.ts +0 -23
- package/dist/flows/flow-upload-resolve.js +0 -46
- package/dist/flows/flows.d.ts +0 -130
- package/dist/flows/flows.js +0 -870
- package/dist/flows/gate.js +0 -33
- package/dist/flows/heal-run.d.ts +0 -10
- package/dist/flows/heal-run.js +0 -139
- package/dist/flows/heal.js +0 -97
- package/dist/flows/predicate-to-expect.d.ts +0 -44
- package/dist/flows/predicate-to-expect.js +0 -130
- package/dist/flows/recording-backtrack.js +0 -73
- package/dist/flows/recordings.d.ts +0 -63
- package/dist/flows/recordings.js +0 -57
- package/dist/flows/replay.d.ts +0 -62
- package/dist/flows/replay.js +0 -337
- package/dist/flows/role-anchor-nearest.js +0 -45
- package/dist/flows/server-verify.d.ts +0 -15
- package/dist/flows/server-verify.js +0 -56
- package/dist/flows/suite-flakes.d.ts +0 -34
- package/dist/flows/suite-flakes.js +0 -32
- package/dist/flows/verify-change-tools.d.ts +0 -2
- package/dist/flows/verify-change-tools.js +0 -231
- package/dist/honesty/accepted-write.d.ts +0 -17
- package/dist/honesty/accepted-write.js +0 -22
- package/dist/honesty/already-true.d.ts +0 -16
- package/dist/honesty/already-true.js +0 -89
- package/dist/honesty/blind-spots.d.ts +0 -133
- package/dist/honesty/blind-spots.js +0 -248
- package/dist/honesty/body-capture-remedy.d.ts +0 -42
- package/dist/honesty/body-capture-remedy.js +0 -95
- package/dist/honesty/feature-capture.d.ts +0 -151
- package/dist/honesty/feature-capture.js +0 -233
- package/dist/honesty/gap-ledger.d.ts +0 -52
- package/dist/honesty/gap-ledger.js +0 -63
- package/dist/honesty/honesty.d.ts +0 -103
- package/dist/honesty/honesty.js +0 -95
- package/dist/honesty/instrumentation-gaps.d.ts +0 -95
- package/dist/honesty/instrumentation-gaps.js +0 -114
- package/dist/honesty/observability.d.ts +0 -38
- package/dist/honesty/observability.js +0 -40
- package/dist/honesty/tool-hit-rate.js +0 -90
- package/dist/honesty/uncaptured-bodies.d.ts +0 -23
- package/dist/honesty/uncaptured-bodies.js +0 -41
- package/dist/honesty/undeclared-change.d.ts +0 -51
- package/dist/honesty/undeclared-change.js +0 -56
- package/dist/honesty/unread-outcome.d.ts +0 -10
- package/dist/honesty/unread-outcome.js +0 -77
- package/dist/honesty/unsettled.d.ts +0 -58
- package/dist/honesty/unsettled.js +0 -127
- package/dist/honesty/verified.d.ts +0 -148
- package/dist/honesty/verified.js +0 -330
- package/dist/http-server.d.ts +0 -52
- package/dist/http-server.js +0 -381
- package/dist/impact/impact-recorder.d.ts +0 -46
- package/dist/impact/impact-recorder.js +0 -159
- package/dist/impact/impact-store.d.ts +0 -47
- package/dist/impact/impact-store.js +0 -255
- package/dist/input/network-detail.d.ts +0 -104
- package/dist/input/network-detail.js +0 -211
- package/dist/input/network-mock-tools.d.ts +0 -21
- package/dist/input/network-mock-tools.js +0 -124
- package/dist/input/network-mock.js +0 -61
- package/dist/input/real-input.d.ts +0 -222
- package/dist/input/real-input.js +0 -405
- package/dist/input/scroll-find.js +0 -111
- package/dist/input/scroll-tools.d.ts +0 -2
- package/dist/input/scroll-tools.js +0 -76
- package/dist/input/viewport-tools.d.ts +0 -2
- package/dist/input/viewport-tools.js +0 -72
- package/dist/intent/inline-intent.d.ts +0 -27
- package/dist/intent/inline-intent.js +0 -193
- package/dist/intent/intent-shard-store.d.ts +0 -73
- package/dist/intent/intent-shard-store.js +0 -203
- package/dist/intent/intent-shard.d.ts +0 -411
- package/dist/intent/intent-shard.js +0 -176
- package/dist/intent/intent-store.d.ts +0 -49
- package/dist/intent/intent-store.js +0 -133
- package/dist/intent/intent-subject.d.ts +0 -46
- package/dist/intent/intent-subject.js +0 -177
- package/dist/intent/intent-tools.d.ts +0 -2
- package/dist/intent/intent-tools.js +0 -143
- package/dist/intent/open-intents.d.ts +0 -43
- package/dist/intent/open-intents.js +0 -40
- package/dist/journal/ambient-store.d.ts +0 -13
- package/dist/journal/ambient-store.js +0 -45
- package/dist/journal/ambient.d.ts +0 -47
- package/dist/journal/ambient.js +0 -47
- package/dist/journal/attach-journal.d.ts +0 -30
- package/dist/journal/attach-journal.js +0 -30
- package/dist/journal/envelope-store.d.ts +0 -16
- package/dist/journal/envelope-store.js +0 -61
- package/dist/journal/envelope.d.ts +0 -230
- package/dist/journal/journal-query.d.ts +0 -32
- package/dist/journal/journal-query.js +0 -52
- package/dist/journal/journal-recorder.d.ts +0 -61
- package/dist/journal/journal-recorder.js +0 -115
- package/dist/journal/retention.d.ts +0 -20
- package/dist/journal/retention.js +0 -49
- package/dist/journal/session-end.d.ts +0 -32
- package/dist/journal/session-end.js +0 -51
- package/dist/journal/session-journal.d.ts +0 -24
- package/dist/journal/session-journal.js +0 -167
- package/dist/journal/workspace-gitignore.d.ts +0 -10
- package/dist/journal/workspace-gitignore.js +0 -59
- package/dist/license/license-env.d.ts +0 -29
- package/dist/license/license-env.js +0 -148
- package/dist/license/license.d.ts +0 -169
- package/dist/license/license.js +0 -289
- package/dist/mcp/mcp-is-error.d.ts +0 -13
- package/dist/mcp/mcp-is-error.js +0 -18
- package/dist/mcp/mcp-outage.d.ts +0 -32
- package/dist/mcp/mcp-outage.js +0 -55
- package/dist/mcp/mcp-post-transport.js +0 -109
- package/dist/mcp/mcp-proxy.d.ts +0 -110
- package/dist/mcp/mcp-proxy.js +0 -872
- package/dist/mcp/mcp.d.ts +0 -80
- package/dist/mcp/mcp.js +0 -536
- package/dist/mcp/proxy-daemon-probe.d.ts +0 -9
- package/dist/mcp/proxy-daemon-probe.js +0 -54
- package/dist/mcp/proxy-handshake.js +0 -192
- package/dist/mcp/proxy-lifecycle.d.ts +0 -92
- package/dist/mcp/proxy-lifecycle.js +0 -100
- package/dist/mcp/proxy-log.d.ts +0 -63
- package/dist/mcp/proxy-log.js +0 -132
- package/dist/mcp/server-instructions.d.ts +0 -18
- package/dist/mcp/server-instructions.js +0 -98
- package/dist/mcp/tool-catalog-cache.d.ts +0 -45
- package/dist/mcp/tool-catalog-cache.js +0 -77
- package/dist/memory/memory-tools.d.ts +0 -2
- package/dist/memory/memory-tools.js +0 -82
- package/dist/memory/project-memory.d.ts +0 -33
- package/dist/oracles/propose-consequences.d.ts +0 -22
- package/dist/oracles/propose-consequences.js +0 -106
- package/dist/pool/browser-pool.d.ts +0 -282
- package/dist/pool/browser-pool.js +0 -560
- package/dist/pool/lease-reaper.js +0 -40
- package/dist/pool/playwright-launcher.js +0 -150
- package/dist/pool/storage-seed.d.ts +0 -23
- package/dist/project/artifact-root.d.ts +0 -84
- package/dist/project/artifact-root.js +0 -112
- package/dist/project/fs-port.d.ts +0 -47
- package/dist/project/fs-port.js +0 -54
- package/dist/project/learned-routes.d.ts +0 -24
- package/dist/project/learned-routes.js +0 -63
- package/dist/project/memory-fs.d.ts +0 -10
- package/dist/project/project-store.d.ts +0 -54
- package/dist/project/project-store.js +0 -201
- package/dist/project/project-tools.d.ts +0 -2
- package/dist/project/project-tools.js +0 -155
- package/dist/project/reticle-dir.d.ts +0 -102
- package/dist/project/reticle-dir.js +0 -188
- package/dist/project/session-root.d.ts +0 -23
- package/dist/project/session-root.js +0 -38
- package/dist/runs/build-verification-run.d.ts +0 -29
- package/dist/runs/build-verification-run.js +0 -70
- package/dist/runs/context-tools.d.ts +0 -2
- package/dist/runs/context-tools.js +0 -89
- package/dist/runs/render-report.js +0 -69
- package/dist/runs/replay-mapping.js +0 -34
- package/dist/runs/reticle-runner.d.ts +0 -60
- package/dist/runs/reticle-runner.js +0 -95
- package/dist/runs/run-store.d.ts +0 -54
- package/dist/runs/run-store.js +0 -147
- package/dist/runs/run-tools.d.ts +0 -9
- package/dist/runs/run-tools.js +0 -82
- package/dist/runs/runner-port.d.ts +0 -13
- package/dist/runs/runner-port.js +0 -22
- package/dist/runs/verification-sync.d.ts +0 -12
- package/dist/runs/verification-sync.js +0 -87
- package/dist/session/command-timeout.d.ts +0 -46
- package/dist/session/command-timeout.js +0 -42
- package/dist/session/connection-memory.d.ts +0 -59
- package/dist/session/connection-memory.js +0 -108
- package/dist/session/dev-server-probe.js +0 -147
- package/dist/session/live-control-tools.d.ts +0 -15
- package/dist/session/live-control-tools.js +0 -242
- package/dist/session/no-session-diagnosis.d.ts +0 -176
- package/dist/session/no-session-diagnosis.js +0 -477
- package/dist/session/no-session-next-action.d.ts +0 -72
- package/dist/session/no-session-next-action.js +0 -174
- package/dist/session/no-session-watch.js +0 -335
- package/dist/session/observed-state.d.ts +0 -60
- package/dist/session/observed-state.js +0 -121
- package/dist/session/output-budget.d.ts +0 -49
- package/dist/session/output-budget.js +0 -67
- package/dist/session/session-health.d.ts +0 -138
- package/dist/session/session-health.js +0 -154
- package/dist/session/session-manager.d.ts +0 -76
- package/dist/session/session-manager.js +0 -464
- package/dist/session/session-reaper.d.ts +0 -36
- package/dist/session/session-reaper.js +0 -93
- package/dist/session/session-recommendation.js +0 -29
- package/dist/session/session-replaced.d.ts +0 -24
- package/dist/session/session-replaced.js +0 -29
- package/dist/session/session-tools.d.ts +0 -8
- package/dist/session/session-tools.js +0 -42
- package/dist/session/session.d.ts +0 -280
- package/dist/session/session.js +0 -891
- package/dist/session/stall-clock.js +0 -48
- package/dist/setup/agent-configs.d.ts +0 -97
- package/dist/setup/agent-configs.js +0 -333
- package/dist/setup/agent-writer.d.ts +0 -52
- package/dist/setup/agent-writer.js +0 -115
- package/dist/setup/auto-approve.js +0 -153
- package/dist/setup/bridge-port.d.ts +0 -15
- package/dist/setup/bridge-port.js +0 -24
- package/dist/setup/confirm.js +0 -205
- package/dist/setup/dev-server-wait.d.ts +0 -68
- package/dist/setup/dev-server-wait.js +0 -67
- package/dist/setup/drive-agent.d.ts +0 -70
- package/dist/setup/drive-agent.js +0 -171
- package/dist/setup/drive-plan.d.ts +0 -69
- package/dist/setup/drive-plan.js +0 -130
- package/dist/setup/ensure-daemon.js +0 -58
- package/dist/setup/init-host.js +0 -26
- package/dist/setup/init-runtime.d.ts +0 -41
- package/dist/setup/init-runtime.js +0 -167
- package/dist/setup/node-effects.d.ts +0 -63
- package/dist/setup/node-effects.js +0 -225
- package/dist/setup/page-probe.d.ts +0 -44
- package/dist/setup/page-probe.js +0 -49
- package/dist/setup/remaining-steps.js +0 -31
- package/dist/setup/run-setup.d.ts +0 -103
- package/dist/setup/run-setup.js +0 -294
- package/dist/setup/setup-command.d.ts +0 -46
- package/dist/setup/setup-command.js +0 -207
- package/dist/setup/setup-options.d.ts +0 -76
- package/dist/setup/setup-options.js +0 -68
- package/dist/tools/act-capsule.d.ts +0 -33
- package/dist/tools/act-capsule.js +0 -53
- package/dist/tools/act-danger.js +0 -69
- package/dist/tools/act-helpers.d.ts +0 -17
- package/dist/tools/act-helpers.js +0 -40
- package/dist/tools/act-observation.d.ts +0 -42
- package/dist/tools/act-observation.js +0 -36
- package/dist/tools/act-preflight.d.ts +0 -20
- package/dist/tools/act-preflight.js +0 -103
- package/dist/tools/act-sequence-tool.js +0 -135
- package/dist/tools/act-target.d.ts +0 -18
- package/dist/tools/act-target.js +0 -56
- package/dist/tools/act-tools.d.ts +0 -20
- package/dist/tools/act-tools.js +0 -763
- package/dist/tools/assert-grade.d.ts +0 -42
- package/dist/tools/assert-grade.js +0 -108
- package/dist/tools/assert-source.d.ts +0 -52
- package/dist/tools/assert-source.js +0 -74
- package/dist/tools/assert-verdict.d.ts +0 -48
- package/dist/tools/assert-verdict.js +0 -197
- package/dist/tools/browser-tools.d.ts +0 -2
- package/dist/tools/browser-tools.js +0 -115
- package/dist/tools/contract-tools.d.ts +0 -2
- package/dist/tools/contract-tools.js +0 -98
- package/dist/tools/coverage-tools.d.ts +0 -18
- package/dist/tools/coverage-tools.js +0 -175
- package/dist/tools/dynamic-tools.d.ts +0 -7
- package/dist/tools/dynamic-tools.js +0 -257
- package/dist/tools/error-recovery.d.ts +0 -110
- package/dist/tools/error-recovery.js +0 -499
- package/dist/tools/feedback-invite.d.ts +0 -48
- package/dist/tools/feedback-invite.js +0 -71
- package/dist/tools/feedback-tools.d.ts +0 -35
- package/dist/tools/feedback-tools.js +0 -228
- package/dist/tools/invoke-tool.d.ts +0 -10
- package/dist/tools/invoke-tool.js +0 -569
- package/dist/tools/lease-hint.d.ts +0 -49
- package/dist/tools/lease-hint.js +0 -124
- package/dist/tools/lease-tools.d.ts +0 -143
- package/dist/tools/lease-tools.js +0 -688
- package/dist/tools/lineage-tools.d.ts +0 -14
- package/dist/tools/lineage-tools.js +0 -64
- package/dist/tools/merge-tools.d.ts +0 -51
- package/dist/tools/merge-tools.js +0 -69
- package/dist/tools/merged-name-redirect.d.ts +0 -26
- package/dist/tools/merged-name-redirect.js +0 -77
- package/dist/tools/navigate-arrival.d.ts +0 -68
- package/dist/tools/numeric-bounds.d.ts +0 -89
- package/dist/tools/numeric-bounds.js +0 -125
- package/dist/tools/observe-tools.js +0 -578
- package/dist/tools/read-tools.js +0 -569
- package/dist/tools/real-input-attempt.d.ts +0 -68
- package/dist/tools/real-input-attempt.js +0 -360
- package/dist/tools/reconcile-tools.js +0 -126
- package/dist/tools/resolve-target.js +0 -116
- package/dist/tools/snapshot-delta.d.ts +0 -92
- package/dist/tools/snapshot-delta.js +0 -356
- package/dist/tools/tool-kit.d.ts +0 -221
- package/dist/tools/tool-kit.js +0 -114
- package/dist/tools/tool-names.d.ts +0 -112
- package/dist/tools/tool-names.js +0 -112
- package/dist/tools/tool-surface.d.ts +0 -222
- package/dist/tools/tool-surface.js +0 -439
- package/dist/tools/tools-helpers.d.ts +0 -42
- package/dist/tools/tools-helpers.js +0 -87
- package/dist/tools/tools.d.ts +0 -20
- package/dist/tools/tools.js +0 -739
- package/dist/tools/unadvertised-help.js +0 -42
- package/dist/tools/verify-next-baton.js +0 -52
- package/dist/update/nudge-credit.js +0 -53
- package/dist/update/reticle-deps.d.ts +0 -9
- package/dist/update/reticle-deps.js +0 -27
- package/dist/update/sdk-sync.d.ts +0 -20
- package/dist/update/sdk-sync.js +0 -22
- package/dist/update/update-checker.js +0 -122
- package/dist/update/update-nudge.d.ts +0 -92
- package/dist/update/update-nudge.js +0 -214
- package/dist/update/updater.d.ts +0 -54
- package/dist/update/updater.js +0 -190
- package/dist/version/peer-announce.js +0 -32
- package/dist/version/sdk-fix.js +0 -127
- package/dist/version/server-version.js +0 -13
- package/dist/version/version-nudge.js +0 -61
- package/dist/version/version-skew.d.ts +0 -93
- package/dist/version/version-skew.js +0 -147
- package/dist/visual/visual-store.d.ts +0 -22
- package/dist/visual/visual-store.js +0 -66
- package/dist/visual/visual-tools.d.ts +0 -26
- package/dist/visual/visual-tools.js +0 -328
- package/docs/docs.json +0 -369
- package/docs/fixtures.md +0 -51
- package/docs/gate-plan.md +0 -104
- package/docs/gates.md +0 -131
- package/docs/style.css +0 -14
- package/docs/telemetry-contract.md +0 -390
- package/docs/telemetry-events.mdx +0 -442
- package/docs/tools-act-and-wait.mdx +0 -173
- package/docs/tools-act-sequence.mdx +0 -153
- package/docs/tools-act.mdx +0 -95
- package/docs/tools-assert.mdx +0 -129
- package/docs/tools-console.mdx +0 -63
- package/docs/tools-inspect.mdx +0 -88
- package/docs/tools-navigate.mdx +0 -107
- package/docs/tools-network.mdx +0 -119
- package/docs/tools-observe.mdx +0 -145
- package/docs/tools-overview.mdx +0 -160
- package/docs/tools-query.mdx +0 -126
- package/docs/tools-sessions.mdx +0 -94
- package/docs/tools-snapshot.mdx +0 -129
- package/docs/tools-state.mdx +0 -104
- package/docs/tools-wait-for.mdx +0 -85
- /package/dist/{cli → command/cli/answers}/gate-exit.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/gate-exit.js +0 -0
- /package/dist/{cli → command/cli/answers}/gate-hook-message.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/gate-hook-message.js +0 -0
- /package/dist/{cli → command/cli/answers}/open-note.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/open-note.js +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-keystore.d.ts +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-session.d.ts +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-session.js +0 -0
- /package/dist/{cli → command/cli}/cli-doctor.d.ts +0 -0
- /package/dist/{cli → command/cli}/cli-parse-feedback.d.ts +0 -0
- /package/dist/{cli → command/cli}/cli-parse-feedback.js +0 -0
- /package/dist/{cli → command/cli}/cli-update-commands.d.ts +0 -0
- /package/dist/{cli → command/cli}/cloud-cli.d.ts +0 -0
- /package/dist/{cli → command/cli}/cloud-login.d.ts +0 -0
- /package/dist/{cli → command/cli}/daemon-start-options.js +0 -0
- /package/dist/{cli → command/cli/doctor/browser}/chromium-hint.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor/browser}/chromium-hint.js +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-daemon-line.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-project-line.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-project-line.js +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-sessions-line.d.ts +0 -0
- /package/dist/{cli → command/cli/drive}/drive-command.d.ts +0 -0
- /package/dist/{cli → command/cli}/mcp-command.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/port-holder.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/sibling-ports.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/sibling-ports.js +0 -0
- /package/dist/{cli → command/cli}/project-name.d.ts +0 -0
- /package/dist/{cli → command/cli}/project-name.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/free-port.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/free-port.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/loopback-alias.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/loopback-alias.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/port-presence.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/port-presence.js +0 -0
- /package/dist/{daemon → command/daemon}/dev-servers.d.ts +0 -0
- /package/dist/{daemon → command/daemon}/dev-servers.js +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/startup-failure.d.ts +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/startup-failure.js +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/unclean-predecessor.d.ts +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/unclean-predecessor.js +0 -0
- /package/dist/{daemon → command/daemon}/state-dir.d.ts +0 -0
- /package/dist/{setup → command/setup}/agent-io.d.ts +0 -0
- /package/dist/{setup → command/setup}/agent-io.js +0 -0
- /package/dist/{setup → command/setup}/approval-migration.d.ts +0 -0
- /package/dist/{setup → command/setup}/approval-migration.js +0 -0
- /package/dist/{setup → command/setup}/auto-approve.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/ensure-daemon.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/relaunch.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/relaunch.js +0 -0
- /package/dist/{setup → command/setup}/desktop-shape.d.ts +0 -0
- /package/dist/{setup → command/setup}/desktop-shape.js +0 -0
- /package/dist/{setup → command/setup/init}/init-host.d.ts +0 -0
- /package/dist/{setup → command/setup}/license-key.d.ts +0 -0
- /package/dist/{setup → command/setup}/license-key.js +0 -0
- /package/dist/{setup → command/setup/probe}/existing-app.d.ts +0 -0
- /package/dist/{setup → command/setup/probe}/existing-app.js +0 -0
- /package/dist/{setup → command/setup/probe}/loopback-probe-urls.d.ts +0 -0
- /package/dist/{setup → command/setup/probe}/loopback-probe-urls.js +0 -0
- /package/dist/{setup → command/setup}/remaining-steps.d.ts +0 -0
- /package/dist/{setup → command/setup}/session-pick.d.ts +0 -0
- /package/dist/{setup → command/setup}/session-pick.js +0 -0
- /package/dist/{setup → command/setup/terminal}/confirm.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/interrupt.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/interrupt.js +0 -0
- /package/dist/{setup → command/setup/terminal}/listeners.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/listeners.js +0 -0
- /package/dist/{setup → command/setup/terminal}/transcripts.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/transcripts.js +0 -0
- /package/dist/{setup → command/setup/terminal}/wait-progress.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/wait-progress.js +0 -0
- /package/dist/{update → command/update}/nudge-credit.d.ts +0 -0
- /package/dist/{update → command/update}/update-checker.d.ts +0 -0
- /package/dist/{version → command/version/identity}/server-version.d.ts +0 -0
- /package/dist/{version → command/version}/peer-announce.d.ts +0 -0
- /package/dist/{version → command/version}/sdk-fix.d.ts +0 -0
- /package/dist/{version → command/version}/version-nudge.d.ts +0 -0
- /package/dist/{crawl → features/crawl}/crawl-empty.d.ts +0 -0
- /package/dist/{crawl → features/crawl}/crawl-empty.js +0 -0
- /package/dist/{ee → features/ee}/audit-log.d.ts +0 -0
- /package/dist/{visual → features/visual}/capture-cleanup.d.ts +0 -0
- /package/dist/{visual → features/visual}/capture-cleanup.js +0 -0
- /package/dist/{visual → features/visual}/visual-diff.d.ts +0 -0
- /package/dist/{visual → features/visual}/visual-diff.js +0 -0
- /package/dist/{capsule → judgement/capsule}/divergence.js +0 -0
- /package/dist/{capsule → judgement/capsule}/minimize.d.ts +0 -0
- /package/dist/{capsule → judgement/capsule}/minimize.js +0 -0
- /package/dist/{domain → judgement/domain}/domain-model.d.ts +0 -0
- /package/dist/{domain → judgement/domain}/flow-risk.d.ts +0 -0
- /package/dist/{hunt → judgement/hunt}/hunt-report.d.ts +0 -0
- /package/dist/{hunt → judgement/hunt}/hunt-report.js +0 -0
- /package/dist/{oracles → judgement/oracles}/flow-instrument-gaps.d.ts +0 -0
- /package/dist/{oracles → judgement/oracles}/flow-instrument-gaps.js +0 -0
- /package/dist/{oracles → judgement/oracles}/self-instrument.d.ts +0 -0
- /package/dist/{oracles → judgement/oracles}/self-instrument.js +0 -0
- /package/dist/{flows → judgement/outcome}/assertion-integrity.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/assertion-integrity.js +0 -0
- /package/dist/{flows → judgement/outcome}/attributed-failure.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/attributed-failure.js +0 -0
- /package/dist/{flows → judgement/outcome}/role-drift-reason.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/role-drift-reason.js +0 -0
- /package/dist/{flows → judgement/outcome}/verify-change-verdict.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/verify-change-verdict.js +0 -0
- /package/dist/{phenomena → judgement/phenomena}/phenomena.d.ts +0 -0
- /package/dist/{phenomena → judgement/phenomena}/phenomena.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/profile-redact.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/profile-redact.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/render-report.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/replay-mapping.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-context.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-context.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-diff.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-diff.js +0 -0
- /package/dist/{runs → judgement/runs}/repair-prompt.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/repair-prompt.js +0 -0
- /package/dist/{runs → judgement/runs}/risk-classify.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/risk-classify.js +0 -0
- /package/dist/{runs → judgement/runs}/verify-http.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/verify-http.js +0 -0
- /package/dist/{runs → judgement/runs}/verify-server.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/verify-server.js +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate-target.d.ts +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate-target.js +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate.d.ts +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate.js +0 -0
- /package/dist/{flows → language/flows}/buddy-status.d.ts +0 -0
- /package/dist/{flows → language/flows}/buddy-status.js +0 -0
- /package/dist/{flows → language/flows/change}/gate.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/git-changed.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/git-changed.js +0 -0
- /package/dist/{flows → language/flows/change}/watch-batcher.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/watch-batcher.js +0 -0
- /package/dist/{flows → language/flows}/empty-flow.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-memory-consult.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-memory-consult.js +0 -0
- /package/dist/{flows → language/flows}/flow-report.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-report.js +0 -0
- /package/dist/{flows → language/flows}/flow-scope.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-scope.js +0 -0
- /package/dist/{flows → language/flows}/flow-store-for-session.js +0 -0
- /package/dist/{flows → language/flows}/heal.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/flake.js +0 -0
- /package/dist/{flows → language/flows/recording}/recording-backtrack.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/replay-halt.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/replay-halt.js +0 -0
- /package/dist/{flows → language/flows}/role-anchor-nearest.d.ts +0 -0
- /package/dist/{flows → language/flows/stores}/annotation-store.d.ts +0 -0
- /package/dist/{flows → language/flows/stores}/annotation-store.js +0 -0
- /package/dist/{flows → language/flows/suite}/coverage.d.ts +0 -0
- /package/dist/{flows → language/flows/suite}/coverage.js +0 -0
- /package/dist/{flows → language/flows/suite}/parallel-suite.d.ts +0 -0
- /package/dist/{flows → language/flows/suite}/parallel-suite.js +0 -0
- /package/dist/{platform.d.ts → machine/platform.d.ts} +0 -0
- /package/dist/{platform.js → machine/platform.js} +0 -0
- /package/dist/{temp-dir.d.ts → machine/temp-dir.d.ts} +0 -0
- /package/dist/{temp-dir.js → machine/temp-dir.js} +0 -0
- /package/dist/{cloud → memory/cloud}/sync-disk.d.ts +0 -0
- /package/dist/{cloud → memory/cloud}/sync-hash.d.ts +0 -0
- /package/dist/{cloud → memory/cloud}/sync-hash.js +0 -0
- /package/dist/{journal → memory/journal}/deviation-report.d.ts +0 -0
- /package/dist/{journal → memory/journal}/deviation-report.js +0 -0
- /package/dist/{journal → memory/journal}/deviation-service.d.ts +0 -0
- /package/dist/{journal → memory/journal}/deviation-service.js +0 -0
- /package/dist/{journal → memory/journal}/envelope.js +0 -0
- /package/dist/{journal → memory/journal}/rollups.d.ts +0 -0
- /package/dist/{journal → memory/journal}/rollups.js +0 -0
- /package/dist/{project → memory/project}/baselines.d.ts +0 -0
- /package/dist/{project → memory/project}/baselines.js +0 -0
- /package/dist/{project → memory/project}/file-lock.d.ts +0 -0
- /package/dist/{project → memory/project}/file-lock.js +0 -0
- /package/dist/{project → memory/project}/memory-fs.js +0 -0
- /package/dist/{session → memory/recall}/looks-like-dev-server.d.ts +0 -0
- /package/dist/{session → memory/recall}/looks-like-dev-server.js +0 -0
- /package/dist/memory/{project-memory.js → recall/project-memory.js} +0 -0
- /package/dist/{session → memory/recall}/registered-projects.d.ts +0 -0
- /package/dist/{session → memory/recall}/registered-projects.js +0 -0
- /package/dist/{bridge → portal/bridge}/pairing-token.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/pairing-token.js +0 -0
- /package/dist/{bridge → portal/bridge}/protocol-skew.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/protocol-skew.js +0 -0
- /package/dist/{bridge → portal/bridge}/token-auth.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/token-auth.js +0 -0
- /package/dist/{input → portal/input}/driven-redaction.d.ts +0 -0
- /package/dist/{input → portal/input}/driven-redaction.js +0 -0
- /package/dist/{input → portal/input}/network-mock.d.ts +0 -0
- /package/dist/{input → portal/input}/scroll-find.d.ts +0 -0
- /package/dist/{pool → portal/pool}/lease-reaper.d.ts +0 -0
- /package/dist/{pool → portal/pool}/playwright-launcher.d.ts +0 -0
- /package/dist/{pool → portal/pool}/storage-seed.js +0 -0
- /package/dist/{session → portal/session}/control-envelope.d.ts +0 -0
- /package/dist/{session → portal/session}/control-envelope.js +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-command.d.ts +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-command.js +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-server-probe.d.ts +0 -0
- /package/dist/{session → portal/session/facts}/ref-provenance.d.ts +0 -0
- /package/dist/{session → portal/session/facts}/ref-provenance.js +0 -0
- /package/dist/{session → portal/session}/fake-session.d.ts +0 -0
- /package/dist/{session → portal/session}/fake-session.js +0 -0
- /package/dist/{session → portal/session/human}/live-control.d.ts +0 -0
- /package/dist/{session → portal/session/human}/live-control.js +0 -0
- /package/dist/{session → portal/session/human}/presenter-args.d.ts +0 -0
- /package/dist/{session → portal/session/human}/presenter-args.js +0 -0
- /package/dist/{session → portal/session/human}/review-store.d.ts +0 -0
- /package/dist/{session → portal/session/human}/review-store.js +0 -0
- /package/dist/{session → portal/session}/last-act.d.ts +0 -0
- /package/dist/{session → portal/session}/last-act.js +0 -0
- /package/dist/{session → portal/session}/lease-visibility.d.ts +0 -0
- /package/dist/{session → portal/session}/lease-visibility.js +0 -0
- /package/dist/{session → portal/session}/no-session-watch.d.ts +0 -0
- /package/dist/{session → portal/session/page-commands}/pending-commands.d.ts +0 -0
- /package/dist/{session → portal/session/page-commands}/pending-commands.js +0 -0
- /package/dist/{session → portal/session/presence}/attachment-history.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/attachment-history.js +0 -0
- /package/dist/{session → portal/session/presence}/lease-availability.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/lease-availability.js +0 -0
- /package/dist/{session → portal/session/presence}/session-lease.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/session-lease.js +0 -0
- /package/dist/{session → portal/session/presence}/session-mirror.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/session-mirror.js +0 -0
- /package/dist/{session → portal/session/presence}/session-recommendation.d.ts +0 -0
- /package/dist/{session → portal/session}/session-info.d.ts +0 -0
- /package/dist/{session → portal/session}/session-info.js +0 -0
- /package/dist/{session → portal/session}/session-reconnect.d.ts +0 -0
- /package/dist/{session → portal/session}/session-reconnect.js +0 -0
- /package/dist/{session → portal/session}/session-successor.d.ts +0 -0
- /package/dist/{session → portal/session}/session-successor.js +0 -0
- /package/dist/{session → portal/session}/stall-clock.d.ts +0 -0
- /package/dist/{session → portal/session}/state-select.d.ts +0 -0
- /package/dist/{session → portal/session}/state-select.js +0 -0
- /package/dist/{session → portal/session/timing}/resolve-within.d.ts +0 -0
- /package/dist/{session → portal/session/timing}/resolve-within.js +0 -0
- /package/dist/{session → portal/session/timing}/wall-clock.d.ts +0 -0
- /package/dist/{session → portal/session/timing}/wall-clock.js +0 -0
- /package/dist/{loopback-agent.d.ts → surface/loopback-agent.d.ts} +0 -0
- /package/dist/{loopback-agent.js → surface/loopback-agent.js} +0 -0
- /package/dist/{mcp → surface/mcp}/attach-memory.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/attach-memory.js +0 -0
- /package/dist/{mcp → surface/mcp/peer}/client-identity.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/peer}/client-identity.js +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/mcp-post-transport.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-backoff.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-backoff.js +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-handshake.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/proxy-idle-exit.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/proxy-idle-exit.js +0 -0
- /package/dist/{mcp → surface/mcp}/shared-params.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/shared-params.js +0 -0
- /package/dist/{mcp → surface/mcp}/sse-frame-parser.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/sse-frame-parser.js +0 -0
- /package/dist/{tools → surface/tools/act}/act-danger.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-sequence-retry.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-sequence-retry.js +0 -0
- /package/dist/{tools → surface/tools/act}/act-view.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-view.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-arrival.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-result.d.ts +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-result.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/reload-result.d.ts +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/reload-result.js +0 -0
- /package/dist/{tools → surface/tools/act}/react-grace.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/react-grace.js +0 -0
- /package/dist/{tools → surface/tools/act}/resolve-target.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/settle-in-flight.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/settle-in-flight.js +0 -0
- /package/dist/{tools → surface/tools}/act-sequence-tool.d.ts +0 -0
- /package/dist/{tools → surface/tools/args}/alias-args.d.ts +0 -0
- /package/dist/{tools → surface/tools/args}/alias-args.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/coverage-identity.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/coverage-identity.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/observed-nothing.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/observed-nothing.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/sdk-marker-probe.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/sdk-marker-probe.js +0 -0
- /package/dist/{tools → surface/tools}/observe-tools.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/complete-snapshot.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/complete-snapshot.js +0 -0
- /package/dist/{tools → surface/tools/read}/query-paginate.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/query-paginate.js +0 -0
- /package/dist/{tools → surface/tools/read}/query-shape.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/query-shape.js +0 -0
- /package/dist/{tools → surface/tools}/read-tools.d.ts +0 -0
- /package/dist/{tools → surface/tools}/reconcile-tools.d.ts +0 -0
- /package/dist/{honesty → surface/tools}/tool-hit-rate.d.ts +0 -0
- /package/dist/{tools → surface/tools}/tool-invoker.d.ts +0 -0
- /package/dist/{tools → surface/tools}/tool-invoker.js +0 -0
- /package/dist/{tools → surface/tools}/unadvertised-help.d.ts +0 -0
- /package/dist/{tools → surface/tools}/verify-next-baton.d.ts +0 -0
- /package/docs/{tools-session-and-feedback.mdx → tools/session-and-feedback.mdx} +0 -0
- /package/docs/{tools-tools-and-run.mdx → tools/tools-and-run.mdx} +0 -0
package/dist/events/predicate.js
DELETED
|
@@ -1,725 +0,0 @@
|
|
|
1
|
-
import { ElementState, PredicateKind, ReticleCommand, THROTTLED_STARVED_NOTE, isSameDocument, } from '@reticlehq/core';
|
|
2
|
-
import { log } from '../log.js';
|
|
3
|
-
import { bindSpanContext } from '../trace.js';
|
|
4
|
-
import { selectPath, capDepth } from '../session/state-select.js';
|
|
5
|
-
import { predicateToExpectedLinks } from '../capsule/predicate-to-links.js';
|
|
6
|
-
import { isAmbient, ambientKeyOf } from '../journal/ambient.js';
|
|
7
|
-
import { evalRoute } from './predicate-route.js';
|
|
8
|
-
import { describeSuperseded } from './observed-in-window.js';
|
|
9
|
-
import { evalElement } from './predicate-element.js';
|
|
10
|
-
import { PredicateSchema, matchValue, evalNet, evalConsole, evalAnimation, evalSignal, evalSettled, } from './predicate-eval.js';
|
|
11
|
-
export { PredicateSchema, PredicateKind };
|
|
12
|
-
/**
|
|
13
|
-
* A composite result that carries a child's "nobody could evaluate this" up to the verdict rule.
|
|
14
|
-
*
|
|
15
|
-
* `decideVerified` already treats `inconclusive` correctly and does it ahead of the failure clause,
|
|
16
|
-
* so all a composite has to do is stop dropping the field on its way out. `pass` stays false because
|
|
17
|
-
* nothing was proven; what changes is that the verdict reads UNKNOWN rather than blaming the app for
|
|
18
|
-
* a clause the CALL under-specified.
|
|
19
|
-
*/
|
|
20
|
-
function unreadableComposite(child, evidence) {
|
|
21
|
-
const reason = child.inconclusive ?? 'a sub-predicate could not be evaluated';
|
|
22
|
-
return { pass: false, failureReason: reason, inconclusive: reason, evidence };
|
|
23
|
-
}
|
|
24
|
-
function oneOf(names) {
|
|
25
|
-
return 1 === names.length ? names[0] : undefined;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* `readState`'s truncation report, when the caps actually fired.
|
|
29
|
-
*
|
|
30
|
-
* Its PRESENCE is the warning — the field is omitted entirely on an intact read, which is what lets
|
|
31
|
-
* "the list is short" stay distinguishable from "I shortened the list".
|
|
32
|
-
*/
|
|
33
|
-
function truncationOf(result) {
|
|
34
|
-
if ('object' !== typeof result || null === result)
|
|
35
|
-
return undefined;
|
|
36
|
-
const report = result.truncation;
|
|
37
|
-
return 'object' === typeof report && null !== report
|
|
38
|
-
? report
|
|
39
|
-
: undefined;
|
|
40
|
-
}
|
|
41
|
-
/** A scoped `readState` reply, narrowed to the shape `selectPath` would have produced. */
|
|
42
|
-
function asSelection(result) {
|
|
43
|
-
if ('object' !== typeof result || null === result)
|
|
44
|
-
return undefined;
|
|
45
|
-
const record = result;
|
|
46
|
-
return 'boolean' === typeof record.found
|
|
47
|
-
? { found: record.found, value: record.value }
|
|
48
|
-
: undefined;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* A NAMED store needs no whole-store read. `reticle_state`'s scoped mode selects the path out of the
|
|
52
|
-
* RAW store IN-PAGE and returns only it, so the assertion resolves in one round trip against a payload
|
|
53
|
-
* the size of the value — not the store. The unnamed case below still needs the wide read, because
|
|
54
|
-
* that is how it discovers WHICH store carries the path; only the named branch changes.
|
|
55
|
-
*
|
|
56
|
-
* A scoped read answers `found: false` for both "no such store" and "no such path", so the two are
|
|
57
|
-
* kept distinct here using the `storeNames` list the reply always carries — otherwise the payload gets
|
|
58
|
-
* cheaper while the message gets worse.
|
|
59
|
-
*/
|
|
60
|
-
async function evalStateNamed(session, p, storeName) {
|
|
61
|
-
const scoped = await session.command(ReticleCommand.STATE_READ, {
|
|
62
|
-
store: storeName,
|
|
63
|
-
path: p.path,
|
|
64
|
-
});
|
|
65
|
-
if (!scoped.ok) {
|
|
66
|
-
return {
|
|
67
|
-
pass: false,
|
|
68
|
-
failureReason: 'state read failed',
|
|
69
|
-
observed: 'the store could not be read',
|
|
70
|
-
expected: 'a readable registered store',
|
|
71
|
-
assertion: 'state.unreadable',
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
const reply = (scoped.result ?? {});
|
|
75
|
-
const names = Array.isArray(reply.storeNames) ? reply.storeNames : [];
|
|
76
|
-
// Resolve the value. A CURRENT SDK honours the scoped read and answers `{ found, value }` selected
|
|
77
|
-
// in-page — the whole point of this path. An OLDER SDK (version skew) or any transport that ignores
|
|
78
|
-
// `path` answers the whole-store shape `{ stores }`; walk the path server-side there so the verdict
|
|
79
|
-
// stays correct across SDK versions. The scoped win is simply unavailable on the old ones.
|
|
80
|
-
const scopedSel = asSelection(scoped.result);
|
|
81
|
-
const wholeStores = reply.stores;
|
|
82
|
-
const scopedKeys = Array.isArray(reply.availableKeys)
|
|
83
|
-
? reply.availableKeys
|
|
84
|
-
: undefined;
|
|
85
|
-
let selection;
|
|
86
|
-
if (scopedSel !== undefined) {
|
|
87
|
-
selection =
|
|
88
|
-
scopedKeys === undefined
|
|
89
|
-
? { found: scopedSel.found, value: scopedSel.value }
|
|
90
|
-
: { found: scopedSel.found, value: scopedSel.value, availableKeys: scopedKeys };
|
|
91
|
-
}
|
|
92
|
-
else if (wholeStores !== undefined) {
|
|
93
|
-
selection = selectPath(wholeStores[storeName], p.path);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
selection = { found: false };
|
|
97
|
-
}
|
|
98
|
-
// "no store named X" and "X has no such path" both surface as found:false; keep them distinct using
|
|
99
|
-
// the store list the reply carries, or the message regresses while the payload improves.
|
|
100
|
-
const storeAbsent = wholeStores !== undefined
|
|
101
|
-
? !(storeName in wholeStores)
|
|
102
|
-
: names.length > 0 && !names.includes(storeName);
|
|
103
|
-
if (!selection.found && storeAbsent) {
|
|
104
|
-
return {
|
|
105
|
-
pass: false,
|
|
106
|
-
failureReason: `no store named '${storeName}' is registered (${names.join(', ')})`,
|
|
107
|
-
observed: `store '${storeName}' is not registered`,
|
|
108
|
-
expected: `a registered store named '${storeName}'`,
|
|
109
|
-
assertion: 'state.store-missing',
|
|
110
|
-
evidence: { searchedStores: names },
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
// A scoped sub-tree can itself be too big for the caps; a comparison against a value known to be
|
|
114
|
-
// incomplete is an unanswered question, not a failure. Same rule the whole-store path applies.
|
|
115
|
-
if (truncationOf(scoped.result) !== undefined) {
|
|
116
|
-
const reason = `state '${p.path}' could not be read intact — the transport caps truncated it, so the ` +
|
|
117
|
-
'value was never compared. Assert a narrower path, or a smaller field inside it';
|
|
118
|
-
return { pass: false, failureReason: reason, inconclusive: reason };
|
|
119
|
-
}
|
|
120
|
-
if (!selection.found) {
|
|
121
|
-
return {
|
|
122
|
-
pass: false,
|
|
123
|
-
failureReason: `state path '${p.path}' not found in store '${storeName}'`,
|
|
124
|
-
observed: `no path '${p.path}' in store '${storeName}'`,
|
|
125
|
-
expected: `store '${storeName}' to expose '${p.path}'`,
|
|
126
|
-
assertion: 'state.path-missing',
|
|
127
|
-
evidence: { availableKeys: selection.availableKeys },
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
const want = p.equals === undefined ? '*' : p.equals;
|
|
131
|
-
if (matchValue(selection.value, want)) {
|
|
132
|
-
return {
|
|
133
|
-
pass: true,
|
|
134
|
-
evidence: { store: storeName, path: p.path, value: capDepth(selection.value, 1) },
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
return {
|
|
138
|
-
pass: false,
|
|
139
|
-
failureReason: `state '${p.path}' is ${JSON.stringify(capDepth(selection.value, 0))}, expected ${JSON.stringify(want)}`,
|
|
140
|
-
observed: `${p.path} = ${JSON.stringify(capDepth(selection.value, 0))}`,
|
|
141
|
-
expected: `${p.path} = ${JSON.stringify(want)}`,
|
|
142
|
-
assertion: 'state.equals',
|
|
143
|
-
evidence: { store: storeName, path: p.path, value: capDepth(selection.value, 1) },
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
async function evalState(session, p) {
|
|
147
|
-
// Named store: one scoped read, no whole-store payload (issue #336).
|
|
148
|
-
if (p.store !== undefined)
|
|
149
|
-
return await evalStateNamed(session, p, p.store);
|
|
150
|
-
const res = await session.command(ReticleCommand.STATE_READ, {});
|
|
151
|
-
if (!res.ok) {
|
|
152
|
-
return {
|
|
153
|
-
pass: false,
|
|
154
|
-
failureReason: 'state read failed',
|
|
155
|
-
observed: 'the store could not be read',
|
|
156
|
-
expected: 'a readable registered store',
|
|
157
|
-
assertion: 'state.unreadable',
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
const stores = (res.result ?? {}).stores ?? {};
|
|
161
|
-
const names = Object.keys(stores);
|
|
162
|
-
// Ambiguity is about the PATH, not the store count.
|
|
163
|
-
//
|
|
164
|
-
// Registering more than one store is normal — an app store, a query cache, and the render meter
|
|
165
|
-
// Reticle registers itself — and asking "which of these three?" when only one of them HAS the
|
|
166
|
-
// path is a question with one possible answer. It was costing a real verdict: a bench-app drive
|
|
167
|
-
// asserting `{path:'view'}` returned `unknown` while the same response body carried the matching
|
|
168
|
-
// `view` state diff. `unknown` is not a pass, so that is a verification that did not happen.
|
|
169
|
-
//
|
|
170
|
-
// So narrow to the stores that actually carry the path, and refuse only when THOSE collide.
|
|
171
|
-
const candidates = p.store === undefined ? names.filter((n) => selectPath(stores[n], p.path).found) : [];
|
|
172
|
-
const storeName = p.store ?? (1 === names.length ? names[0] : oneOf(candidates));
|
|
173
|
-
if (storeName === undefined) {
|
|
174
|
-
// With no store registered there is nothing to read, and with two stores that both carry the
|
|
175
|
-
// path there is no way to pick — neither is a finding about the app, no assertion was evaluated,
|
|
176
|
-
// so both are inconclusive rather than failed. See honesty/inconclusive.
|
|
177
|
-
//
|
|
178
|
-
// Zero candidates is the one case that is NOT a question: every registered store was searched
|
|
179
|
-
// and none exposes the path, so the assertion cannot hold anywhere. That is the same verdict a
|
|
180
|
-
// named store has always produced for a missing path, and it falls through to it below.
|
|
181
|
-
if (0 === names.length) {
|
|
182
|
-
const reason = 'no registered store to read state from';
|
|
183
|
-
return { pass: false, failureReason: reason, inconclusive: reason };
|
|
184
|
-
}
|
|
185
|
-
if (candidates.length > 1) {
|
|
186
|
-
// Names the stores that actually collide. Listing all of them made the reader weigh
|
|
187
|
-
// candidates that could never have matched.
|
|
188
|
-
const reason = `multiple stores (${candidates.join(', ')}) expose '${p.path}'; name one with \`store\``;
|
|
189
|
-
return { pass: false, failureReason: reason, inconclusive: reason };
|
|
190
|
-
}
|
|
191
|
-
return {
|
|
192
|
-
pass: false,
|
|
193
|
-
failureReason: `state path '${p.path}' not found in any registered store (${names.join(', ')})`,
|
|
194
|
-
observed: `no path '${p.path}' in ${names.join(', ')}`,
|
|
195
|
-
expected: `some registered store to expose '${p.path}'`,
|
|
196
|
-
assertion: 'state.path-missing',
|
|
197
|
-
evidence: { searchedStores: names },
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
let selection = selectPath(stores[storeName], p.path);
|
|
201
|
-
// The whole-store read walks into a value the transport caps may already have mangled.
|
|
202
|
-
//
|
|
203
|
-
// `readState` has a SCOPED mode that selects the path out of the RAW store before sanitising, added
|
|
204
|
-
// precisely so a large or deep path still resolves. This path was not using it, so a store with one
|
|
205
|
-
// big collection in it truncated the small value sitting beside it, and the comparison then ran
|
|
206
|
-
// against the literal string "[TRUNCATED]" and returned a confident `no`. Measured on the Atlas
|
|
207
|
-
// fixture: a one-element array reported as a failed assertion while the same payload's state diffs
|
|
208
|
-
// showed the assertion holding.
|
|
209
|
-
//
|
|
210
|
-
// Re-read only when a cap actually fired, so an intact read costs exactly what it did before.
|
|
211
|
-
if (truncationOf(res.result) !== undefined) {
|
|
212
|
-
const scoped = await session.command(ReticleCommand.STATE_READ, {
|
|
213
|
-
store: storeName,
|
|
214
|
-
path: p.path,
|
|
215
|
-
});
|
|
216
|
-
const result = scoped.ok ? scoped.result : undefined;
|
|
217
|
-
const scopedTruncation = truncationOf(result);
|
|
218
|
-
if (scopedTruncation !== undefined) {
|
|
219
|
-
// Even the raw sub-tree was too big. Nothing here knows what the value IS, so nothing here can
|
|
220
|
-
// say the assertion failed — that would be an accusation the evidence does not support.
|
|
221
|
-
const reason = `state '${p.path}' could not be read intact — the transport caps truncated it, so the ` +
|
|
222
|
-
'value was never compared. Assert a narrower path, or a smaller field inside it';
|
|
223
|
-
return { pass: false, failureReason: reason, inconclusive: reason };
|
|
224
|
-
}
|
|
225
|
-
if (result !== undefined) {
|
|
226
|
-
const scopedSelection = asSelection(result);
|
|
227
|
-
if (scopedSelection !== undefined)
|
|
228
|
-
selection = scopedSelection;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
if (!selection.found) {
|
|
232
|
-
return {
|
|
233
|
-
pass: false,
|
|
234
|
-
failureReason: `state path '${p.path}' not found in store '${storeName}'`,
|
|
235
|
-
observed: `no path '${p.path}' in store '${storeName}'`,
|
|
236
|
-
expected: `store '${storeName}' to expose '${p.path}'`,
|
|
237
|
-
assertion: 'state.path-missing',
|
|
238
|
-
evidence: { availableKeys: selection.availableKeys },
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
const want = p.equals === undefined ? '*' : p.equals;
|
|
242
|
-
if (matchValue(selection.value, want)) {
|
|
243
|
-
return {
|
|
244
|
-
pass: true,
|
|
245
|
-
evidence: { store: storeName, path: p.path, value: capDepth(selection.value, 1) },
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
return {
|
|
249
|
-
pass: false,
|
|
250
|
-
failureReason: `state '${p.path}' is ${JSON.stringify(capDepth(selection.value, 0))}, expected ${JSON.stringify(want)}`,
|
|
251
|
-
observed: `${p.path} = ${JSON.stringify(capDepth(selection.value, 0))}`,
|
|
252
|
-
expected: `${p.path} = ${JSON.stringify(want)}`,
|
|
253
|
-
assertion: 'state.equals',
|
|
254
|
-
evidence: { store: storeName, path: p.path, value: capDepth(selection.value, 1) },
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Oracles whose ONLY source of truth is the event window.
|
|
259
|
-
*
|
|
260
|
-
* Element, text and state read the page as it is right now, so supersession cannot reach them. Route
|
|
261
|
-
* is the deliberate omission: it has a second source — where the app is at this moment — and a
|
|
262
|
-
* reload is precisely the case it was given that fallback for, so emptying its window must not take
|
|
263
|
-
* the answer away.
|
|
264
|
-
*/
|
|
265
|
-
const WINDOW_ONLY_KINDS = new Set([
|
|
266
|
-
PredicateKind.NET,
|
|
267
|
-
PredicateKind.CONSOLE,
|
|
268
|
-
PredicateKind.ANIMATION,
|
|
269
|
-
PredicateKind.SIGNAL,
|
|
270
|
-
PredicateKind.SETTLED,
|
|
271
|
-
]);
|
|
272
|
-
/** Names the oracle that answered, in the same shape every other `assertion` here uses. */
|
|
273
|
-
const SUPERSEDED_ASSERTION = 'window.evidence-superseded';
|
|
274
|
-
/** The predicate's own event-time floor, if its kind carries one. */
|
|
275
|
-
function predicateSince(predicate) {
|
|
276
|
-
return 'since' in predicate && 'number' === typeof predicate.since ? predicate.since : 0;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* A miss on a throttled tab is not a missing render. The browser has starved the tab, so a timeout
|
|
280
|
-
* there may mean it never ran — which must not look like "the text is absent".
|
|
281
|
-
*
|
|
282
|
-
* Sets `inconclusive` only. The PROSE is already handled one layer up by
|
|
283
|
-
* `annotateStarvedFailure` (session-health.ts), which suffixes the same fact onto the
|
|
284
|
-
* failureReason so the concrete diagnosis still leads; writing it here as well would put the
|
|
285
|
-
* sentence in every throttled failure twice. What was missing was never the sentence — it was the
|
|
286
|
-
* FIELD an agent gates on, so a starved wait graded `assertion-failed` and sent somebody to fix
|
|
287
|
-
* working code.
|
|
288
|
-
*
|
|
289
|
-
* Idempotent, and a more specific `inconclusive` (unreadable locator, superseded window) is never
|
|
290
|
-
* overwritten.
|
|
291
|
-
*/
|
|
292
|
-
function annotateThrottledMiss(session, predicate, result) {
|
|
293
|
-
if (result.pass)
|
|
294
|
-
return result;
|
|
295
|
-
if (result.inconclusive !== undefined)
|
|
296
|
-
return result;
|
|
297
|
-
const preconditionFailure = session.preconditionFailure?.();
|
|
298
|
-
if (preconditionFailure !== undefined) {
|
|
299
|
-
return { ...result, inconclusive: preconditionFailure };
|
|
300
|
-
}
|
|
301
|
-
if (true !== session.throttled?.())
|
|
302
|
-
return result;
|
|
303
|
-
if (failureRestsOnSeeing(predicate))
|
|
304
|
-
return result;
|
|
305
|
-
return { ...result, inconclusive: THROTTLED_STARVED_NOTE };
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Does this predicate FAIL by having seen something, rather than by not having seen it?
|
|
309
|
-
*
|
|
310
|
-
* The starved-tab caveat only applies to a negative reading. Throttling can stop the tab rendering,
|
|
311
|
-
* so "I did not find it" may mean "I could not look" — but nothing about a starved tab conjures
|
|
312
|
-
* elements that were not there, so "I found 13 of them" is as true on a throttled tab as anywhere.
|
|
313
|
-
* An `absent: true` predicate inverts exactly that: its failure IS the positive observation.
|
|
314
|
-
*
|
|
315
|
-
* Getting this wrong understated real product failures. An absence assertion that matched a
|
|
316
|
-
* framework debug page's `ProgrammingError` heading came back `unknown`, and `unknown` is what an
|
|
317
|
-
* agent re-drives or walks away from — so the proof it was holding never reached anybody.
|
|
318
|
-
*
|
|
319
|
-
* `not` flips the polarity again, and nests, so this recurses rather than checking one level.
|
|
320
|
-
* Composites (`allOf` / `anyOf`) deliberately fall through to `false`: a composite fails for a
|
|
321
|
-
* reason this cannot name, and keeping the caveat is the conservative half of the trade — an
|
|
322
|
-
* over-cautious `unknown` costs a re-drive, a missing one costs a wrong verdict.
|
|
323
|
-
*/
|
|
324
|
-
function failureRestsOnSeeing(predicate) {
|
|
325
|
-
if (PredicateKind.NOT === predicate.kind)
|
|
326
|
-
return !failureRestsOnSeeing(predicate.predicate);
|
|
327
|
-
if ('absent' in predicate && true === predicate.absent)
|
|
328
|
-
return true;
|
|
329
|
-
// `count: 0` is absence written as arithmetic, and fails the same way: by matching something.
|
|
330
|
-
return 'count' in predicate && 0 === predicate.count;
|
|
331
|
-
}
|
|
332
|
-
export async function evaluatePredicate(session, predicate, since = 0, diagnose = true) {
|
|
333
|
-
return annotateThrottledMiss(session, predicate, await evaluatePredicateRaw(session, predicate, since, diagnose));
|
|
334
|
-
}
|
|
335
|
-
async function evaluatePredicateRaw(session, predicate, since = 0,
|
|
336
|
-
// Compute the (extra-round-trip) near-miss diagnostics on element failures. Default true so a
|
|
337
|
-
// one-shot assert is fully diagnostic; the wait loop passes false on its interim polls (which read
|
|
338
|
-
// only `pass`) and true on the final timeout eval, so a flood no longer pays for a diagnostic nobody
|
|
339
|
-
// reads. Only element/text failures have a near-miss; everything else ignores this.
|
|
340
|
-
diagnose = true) {
|
|
341
|
-
// A predicate's own `since` is a TIGHTER event-time floor than the caller's — an agent that took
|
|
342
|
-
// `since` from the act it just performed is scoping the assertion to that action's aftermath. It is
|
|
343
|
-
// applied here, once, rather than in each eval: the floor means the same thing for every kind that
|
|
344
|
-
// reads the event stream, and net/console re-applying it is a no-op.
|
|
345
|
-
const raw = session.eventsSince(Math.max(since, predicateSince(predicate)));
|
|
346
|
-
// Scoped ONCE, here, for the same reason the contradiction pass scopes at its own choke point:
|
|
347
|
-
// reasoning about a dead page's evidence is a defect in every oracle below rather than in whichever
|
|
348
|
-
// one happened to read it, and this is the single place they all take their window from.
|
|
349
|
-
const events = raw.filter((e) => isSameDocument(e.documentId, session.currentDocumentId));
|
|
350
|
-
const superseded = raw.length - events.length;
|
|
351
|
-
// An empty window was always allowed to mean "it did not happen"; that reading is only unsafe once
|
|
352
|
-
// supersession is what emptied it. Without this, dropping stale evidence would trade a wrong pass
|
|
353
|
-
// for a wrong FAILURE — and a failure names a component and sends an agent to fix working code.
|
|
354
|
-
// `inconclusive` is the established way to say "nothing was proven and nobody could have proven
|
|
355
|
-
// it", and `decideVerified` already reads it as UNKNOWN ahead of the failure clause.
|
|
356
|
-
if (superseded > 0 && 0 === events.length && WINDOW_ONLY_KINDS.has(predicate.kind)) {
|
|
357
|
-
const reason = describeSuperseded('observations', superseded);
|
|
358
|
-
return {
|
|
359
|
-
pass: false,
|
|
360
|
-
failureReason: reason,
|
|
361
|
-
inconclusive: reason,
|
|
362
|
-
observed: 'every observation in this window belongs to a document since replaced',
|
|
363
|
-
expected: `evidence recorded under the document now on screen for ${predicate.kind}`,
|
|
364
|
-
assertion: SUPERSEDED_ASSERTION,
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
switch (predicate.kind) {
|
|
368
|
-
case PredicateKind.ELEMENT:
|
|
369
|
-
return evalElement(session, predicate.query, predicate.state, predicate.absent ?? false, diagnose);
|
|
370
|
-
case PredicateKind.TEXT:
|
|
371
|
-
return evalElement(session,
|
|
372
|
-
// `scope` passes straight through: the text predicate has always been an element query
|
|
373
|
-
// with only `text` filled in, so scoping it needs the field, not a second code path.
|
|
374
|
-
undefined === predicate.scope
|
|
375
|
-
? { text: predicate.contains }
|
|
376
|
-
: {
|
|
377
|
-
text: predicate.contains,
|
|
378
|
-
scope: predicate.scope,
|
|
379
|
-
...(true === predicate.self ? { self: true } : {}),
|
|
380
|
-
}, true === predicate.visible ? ElementState.VISIBLE : undefined, predicate.absent ?? false, diagnose);
|
|
381
|
-
case PredicateKind.NET:
|
|
382
|
-
return evalNet(events, predicate);
|
|
383
|
-
case PredicateKind.ROUTE:
|
|
384
|
-
// `since` so an unanswered request already in flight before this window is not counted
|
|
385
|
-
// against the app — see unansweredIn.
|
|
386
|
-
return evalRoute(events, predicate, session.url, Math.max(since, predicateSince(predicate)));
|
|
387
|
-
case PredicateKind.CONSOLE:
|
|
388
|
-
return evalConsole(events, predicate);
|
|
389
|
-
case PredicateKind.ANIMATION:
|
|
390
|
-
return evalAnimation(events, predicate);
|
|
391
|
-
case PredicateKind.SIGNAL:
|
|
392
|
-
return evalSignal(events, predicate);
|
|
393
|
-
case PredicateKind.STATE:
|
|
394
|
-
return evalState(session, predicate);
|
|
395
|
-
case PredicateKind.SETTLED: {
|
|
396
|
-
// Drop events on learned-ambient regions (chat/ticker churn) before the settle check — by ref
|
|
397
|
-
// alone, NOT by attribution: window-attribution ("happened during the action window") is a time
|
|
398
|
-
// heuristic, never causation, so a chat message arriving mid-window must not hold settle open.
|
|
399
|
-
const counts = session.ambientCounts?.();
|
|
400
|
-
const settleEvents = counts === undefined ? events : events.filter((e) => !isAmbient(counts, ambientKeyOf(e)));
|
|
401
|
-
return evalSettled(settleEvents, predicate, session.elapsed());
|
|
402
|
-
}
|
|
403
|
-
case PredicateKind.ALL_OF: {
|
|
404
|
-
const results = await Promise.all(predicate.predicates.map((p) => evaluatePredicate(session, p, since, diagnose)));
|
|
405
|
-
// A clause that genuinely failed OUTRANKS one nobody could read. Softening a real failure to
|
|
406
|
-
// UNKNOWN would hide the defect the agent came for, which is the more expensive of the two
|
|
407
|
-
// mistakes; the reverse — grading an unreadable clause as a defect in the app — is the one
|
|
408
|
-
// that was happening.
|
|
409
|
-
const failed = results.find((r) => !r.pass && r.inconclusive === undefined);
|
|
410
|
-
if (failed !== undefined) {
|
|
411
|
-
return {
|
|
412
|
-
pass: false,
|
|
413
|
-
failureReason: failed.failureReason ?? 'a sub-predicate of allOf failed',
|
|
414
|
-
// A conjunction is decided as soon as ONE clause is: nothing the others do later can
|
|
415
|
-
// rescue it. This is what makes the early exit reach real calls, since an exact count is
|
|
416
|
-
// usually asserted alongside the UI change it is meant to accompany.
|
|
417
|
-
...(true === failed.decided ? { decided: true } : {}),
|
|
418
|
-
evidence: results,
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
const unreadable = results.find((r) => r.inconclusive !== undefined);
|
|
422
|
-
if (unreadable !== undefined)
|
|
423
|
-
return unreadableComposite(unreadable, results);
|
|
424
|
-
return { pass: true, evidence: results.map((r) => r.evidence) };
|
|
425
|
-
}
|
|
426
|
-
case PredicateKind.ANY_OF: {
|
|
427
|
-
const results = await Promise.all(predicate.predicates.map((p) => evaluatePredicate(session, p, since, diagnose)));
|
|
428
|
-
const passed = results.find((r) => r.pass);
|
|
429
|
-
if (passed !== undefined)
|
|
430
|
-
return { pass: true, evidence: passed.evidence };
|
|
431
|
-
// "No sub-predicate matched" is a claim anyOf is not entitled to make while one of them was
|
|
432
|
-
// never read: the unreadable clause might have been the one that would have matched.
|
|
433
|
-
const unreadable = results.find((r) => r.inconclusive !== undefined);
|
|
434
|
-
if (unreadable !== undefined)
|
|
435
|
-
return unreadableComposite(unreadable, results);
|
|
436
|
-
return { pass: false, failureReason: 'no sub-predicate of anyOf matched', evidence: results };
|
|
437
|
-
}
|
|
438
|
-
case PredicateKind.NOT: {
|
|
439
|
-
const inner = await evaluatePredicate(session, predicate.predicate, since, diagnose);
|
|
440
|
-
// The sharpest case of the three, and the only one that produced a GREEN. `not` read the
|
|
441
|
-
// child's `pass: false` as "the inner predicate did not hold" and passed — so an assertion
|
|
442
|
-
// nobody could evaluate became a verdict of verified, manufactured out of a missing reading.
|
|
443
|
-
// You cannot negate an answer nobody had.
|
|
444
|
-
if (inner.inconclusive !== undefined)
|
|
445
|
-
return unreadableComposite(inner, inner);
|
|
446
|
-
// A green negation used to return a bare `{ pass: true }`, so the payload fell back to
|
|
447
|
-
// whatever the caller had — every element matching the OUTER locator. Three clauses negating
|
|
448
|
-
// three different names then produced byte-identical responses, which reads as a checker that
|
|
449
|
-
// dropped the name rather than one that correctly found all three absent. The evidence is the
|
|
450
|
-
// whole answer here: what was looked for, and that it was not there.
|
|
451
|
-
return inner.pass
|
|
452
|
-
? { pass: false, failureReason: 'negated predicate unexpectedly held', evidence: inner }
|
|
453
|
-
: { pass: true, evidence: { negated: predicate.predicate, held: false, saw: inner } };
|
|
454
|
-
}
|
|
455
|
-
default:
|
|
456
|
-
return { pass: false, failureReason: 'unknown predicate' };
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
/** Backstop poll cadence — guarantees a re-check even if no event fires (e.g. a `settled` wait). */
|
|
460
|
-
const POLL_INTERVAL_MS = 150;
|
|
461
|
-
/** Minimum gap between consecutive event-driven rechecks, so an event flood can't drive back-to-back
|
|
462
|
-
* DOM/STATE round-trips. Small enough that added pass-detection latency is negligible next to the
|
|
463
|
-
* poll cadence, large enough to collapse a per-frame event storm into a bounded recheck rate. */
|
|
464
|
-
const MIN_RECHECK_GAP_MS = 25;
|
|
465
|
-
/**
|
|
466
|
-
* How long an exact-count predicate keeps watching AFTER it first reads true.
|
|
467
|
-
*
|
|
468
|
-
* A count only rises while a window is open, so "exactly N" is a statement about the END of one and
|
|
469
|
-
* cannot be settled early — yet every wait here resolves the moment a check passes. Live, on a real
|
|
470
|
-
* payments dashboard: a Refund confirm fired TWO POSTs 59 ms apart, and
|
|
471
|
-
* `until: { kind:'net', method:'POST', urlContains:'/refund', count:1 }` returned
|
|
472
|
-
* `pass: true, matched: 1`. Not a counting bug — `evalNet` counts occurrences correctly. The wait had
|
|
473
|
-
* already stopped looking. So `count: 1` silently meant "at least 1", which is the assertion the
|
|
474
|
-
* caller wrote `count` specifically to avoid, and the branch implementing it claims to catch "the
|
|
475
|
-
* double-submit / useEffect-double-fire / retry-storm regression class".
|
|
476
|
-
*
|
|
477
|
-
* 300 ms is chosen against the measured defect: the observed double-submit gap was 59 ms, a React
|
|
478
|
-
* double-effect fires within one commit, and a retry storm is faster still. It is a real ceiling, not
|
|
479
|
-
* a proof — a duplicate arriving 400 ms later still passes. Widening it costs every exact-count
|
|
480
|
-
* assertion that latency, so this trades an unbounded false green for a bounded one and says so.
|
|
481
|
-
*/
|
|
482
|
-
const COUNT_CONFIRM_MS = 300;
|
|
483
|
-
/**
|
|
484
|
-
* Does this predicate assert an exact cardinality anywhere inside it?
|
|
485
|
-
*
|
|
486
|
-
* Only these hold after passing. A presence-only predicate ("at least one") IS satisfiable early and
|
|
487
|
-
* must stay that way, or every ordinary wait pays the confirmation delay for nothing.
|
|
488
|
-
*/
|
|
489
|
-
function assertsExactCount(predicate) {
|
|
490
|
-
if (PredicateKind.ALL_OF === predicate.kind || PredicateKind.ANY_OF === predicate.kind) {
|
|
491
|
-
return predicate.predicates.some(assertsExactCount);
|
|
492
|
-
}
|
|
493
|
-
if (PredicateKind.NOT === predicate.kind)
|
|
494
|
-
return assertsExactCount(predicate.predicate);
|
|
495
|
-
// `signal` carries `count` for the same reason `net` does, and for the same defect: its schema
|
|
496
|
-
// calls the double-fire "the defect no state-only oracle can see", because a handler wired twice
|
|
497
|
-
// leaves the store in the right shape and a presence check green on both. Reading `net` alone
|
|
498
|
-
// meant a signal count resolved on its first match, so `count: 1` silently meant "at least 1" on
|
|
499
|
-
// the one channel able to see the bug. `evalSignal` counts correctly; the wait stopped early.
|
|
500
|
-
return ((PredicateKind.NET === predicate.kind || PredicateKind.SIGNAL === predicate.kind) &&
|
|
501
|
-
predicate.count !== undefined);
|
|
502
|
-
}
|
|
503
|
-
/**
|
|
504
|
-
* Evaluate now, else wait for it to become true (on each event + a poll) until timeout. `since` is
|
|
505
|
-
* the event-time floor (see evaluatePredicate) so a waiter cannot resolve on a stale buffered event.
|
|
506
|
-
*/
|
|
507
|
-
export function waitForPredicate(session, predicate, timeoutMs, since = 0) {
|
|
508
|
-
return new Promise((resolve) => {
|
|
509
|
-
let done = false;
|
|
510
|
-
const failed = (error) => ({
|
|
511
|
-
pass: false,
|
|
512
|
-
failureReason: error instanceof Error ? error.message : String(error),
|
|
513
|
-
});
|
|
514
|
-
let cooldownTimer;
|
|
515
|
-
/** One-shot re-check timed to when a time-based predicate could first pass. See retryAfterMs. */
|
|
516
|
-
let hintTimer;
|
|
517
|
-
// An exact-count wait keeps watching after it first reads true — see COUNT_CONFIRM_MS.
|
|
518
|
-
const holdsForCount = assertsExactCount(predicate);
|
|
519
|
-
let confirming = false;
|
|
520
|
-
let confirmTimer;
|
|
521
|
-
/** Report a wait that could not run, and END it — see guardedCheck. */
|
|
522
|
-
const failWait = (error) => {
|
|
523
|
-
log('reticle_wait_failed', {
|
|
524
|
-
predicate: predicate.kind,
|
|
525
|
-
error: error instanceof Error ? error.message : String(error),
|
|
526
|
-
});
|
|
527
|
-
finish({
|
|
528
|
-
...failed(error),
|
|
529
|
-
failureReason: 'the wait could not be evaluated and was ended rather than left pending: ' +
|
|
530
|
-
(error instanceof Error ? error.message : String(error)),
|
|
531
|
-
});
|
|
532
|
-
};
|
|
533
|
-
const finish = (result) => {
|
|
534
|
-
if (done)
|
|
535
|
-
return;
|
|
536
|
-
done = true;
|
|
537
|
-
unsub();
|
|
538
|
-
unsubDisconnect?.();
|
|
539
|
-
clearInterval(interval);
|
|
540
|
-
clearTimeout(timer);
|
|
541
|
-
if (cooldownTimer !== undefined)
|
|
542
|
-
clearTimeout(cooldownTimer);
|
|
543
|
-
if (hintTimer !== undefined)
|
|
544
|
-
clearTimeout(hintTimer);
|
|
545
|
-
if (confirmTimer !== undefined)
|
|
546
|
-
clearTimeout(confirmTimer);
|
|
547
|
-
resolve(result);
|
|
548
|
-
};
|
|
549
|
-
// Coalesce re-checks: at most ONE evaluatePredicate is ever in flight (each can be a browser
|
|
550
|
-
// MATCH/STATE_READ round-trip). Events that arrive while one is running set a single trailing
|
|
551
|
-
// re-check instead of each firing their own command — otherwise a page emitting an event per
|
|
552
|
-
// animation frame fans out hundreds of concurrent round-trips and collapses under backpressure.
|
|
553
|
-
//
|
|
554
|
-
// Beyond coalescing, PACE the trailing rechecks: without a gap the next eval fired the instant the
|
|
555
|
-
// previous finished, so under an event flood one round-trip was permanently in flight (~184/sec at
|
|
556
|
-
// 5ms RTT) — each a live-DOM scan on the app's main thread, the "the dashboard is janky while the
|
|
557
|
-
// agent waits" case. The FIRST check on an idle loop still runs immediately (leading edge, so fast
|
|
558
|
-
// detection is unchanged); only back-to-back rechecks under sustained load wait MIN_RECHECK_GAP_MS.
|
|
559
|
-
let inFlight = false;
|
|
560
|
-
let cooling = false;
|
|
561
|
-
let pendingRecheck = false;
|
|
562
|
-
const check = () => {
|
|
563
|
-
if (done)
|
|
564
|
-
return;
|
|
565
|
-
if (inFlight || cooling) {
|
|
566
|
-
pendingRecheck = true;
|
|
567
|
-
return;
|
|
568
|
-
}
|
|
569
|
-
inFlight = true;
|
|
570
|
-
// Interim poll: read only `pass`, so skip the extra near-miss round-trips (diagnose=false). The
|
|
571
|
-
// final timeout eval below runs with full diagnostics.
|
|
572
|
-
void evaluatePredicate(session, predicate, since, false)
|
|
573
|
-
.then((r) => {
|
|
574
|
-
if (!r.pass) {
|
|
575
|
-
// Final already: stop rather than spend a budget that cannot change the answer. Only
|
|
576
|
-
// where the evaluator could PROVE it (see EvalResult.decided) — an ordinary miss keeps
|
|
577
|
-
// waiting, because "it has not happened yet" and "it will not happen" are the same
|
|
578
|
-
// reading until the budget ends.
|
|
579
|
-
if (true === r.decided) {
|
|
580
|
-
finish(r);
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
// A time-based failure knows when it could stop being one — re-check THEN rather than on
|
|
584
|
-
// the next blind tick. Without this, every `settled` wait paid up to a full poll interval
|
|
585
|
-
// of dead time after the quiet window had already closed: measured at 566–627ms across
|
|
586
|
-
// the fleet for a 500ms window, on the call an agent makes after almost every action.
|
|
587
|
-
// Additive — the backstop interval below still runs, so a missed hint costs nothing.
|
|
588
|
-
const hint = r.retryAfterMs;
|
|
589
|
-
if ('number' === typeof hint && hint > 0 && hint < POLL_INTERVAL_MS) {
|
|
590
|
-
clearTimeout(hintTimer);
|
|
591
|
-
hintTimer = setTimeout(check, hint);
|
|
592
|
-
}
|
|
593
|
-
return;
|
|
594
|
-
}
|
|
595
|
-
// "Exactly N" cannot be concluded from a passing sample — the count can still rise. Hold,
|
|
596
|
-
// re-evaluate WITH diagnostics, and let that second read be the verdict: if an N+1th
|
|
597
|
-
// arrived in the meantime it now fails, carrying observed/expected rather than a bare no.
|
|
598
|
-
if (!holdsForCount) {
|
|
599
|
-
finish(r);
|
|
600
|
-
return;
|
|
601
|
-
}
|
|
602
|
-
if (confirming)
|
|
603
|
-
return;
|
|
604
|
-
confirming = true;
|
|
605
|
-
confirmTimer = setTimeout(() => {
|
|
606
|
-
void evaluatePredicate(session, predicate, since)
|
|
607
|
-
.then(finish)
|
|
608
|
-
.catch((error) => {
|
|
609
|
-
finish(failed(error));
|
|
610
|
-
});
|
|
611
|
-
}, COUNT_CONFIRM_MS);
|
|
612
|
-
})
|
|
613
|
-
.catch((error) => {
|
|
614
|
-
finish(failed(error));
|
|
615
|
-
})
|
|
616
|
-
.finally(() => {
|
|
617
|
-
inFlight = false;
|
|
618
|
-
if (done)
|
|
619
|
-
return;
|
|
620
|
-
// Enter a short cooldown; process a coalesced recheck when it ends. The 150ms poll is the
|
|
621
|
-
// backstop, so a missed trailing edge is caught within one interval regardless.
|
|
622
|
-
cooling = true;
|
|
623
|
-
cooldownTimer = setTimeout(() => {
|
|
624
|
-
cooling = false;
|
|
625
|
-
if (pendingRecheck && !done) {
|
|
626
|
-
pendingRecheck = false;
|
|
627
|
-
check();
|
|
628
|
-
}
|
|
629
|
-
}, MIN_RECHECK_GAP_MS);
|
|
630
|
-
});
|
|
631
|
-
};
|
|
632
|
-
/**
|
|
633
|
-
* Run a re-check so that NOTHING can leave this promise pending.
|
|
634
|
-
*
|
|
635
|
-
* `check` is fired from an event listener and an interval, neither of which is inside the
|
|
636
|
-
* awaited chain. A synchronous throw there reached the process as an uncaughtException; a
|
|
637
|
-
* rejection reached it as an unhandledRejection. Either way the wait never resolved and the tool
|
|
638
|
-
* handler never returned — the agent sees a call that simply never comes back.
|
|
639
|
-
*
|
|
640
|
-
* This half covers the SYNCHRONOUS throw only. The rejection half is handled inside `check`, by
|
|
641
|
-
* the `.catch` on its own promise chain — `check` returns void and voids the promise it starts,
|
|
642
|
-
* so there is nothing to hand back here to await. Said explicitly because the obvious-looking
|
|
643
|
-
* `if (result instanceof Promise) result.catch(…)` that used to sit here was dead code that read
|
|
644
|
-
* like the rejection guard, and removing `check`'s own `.catch` as redundant would have restored
|
|
645
|
-
* the exact hang this exists to prevent.
|
|
646
|
-
*
|
|
647
|
-
* That is the exact shape reported from a Plane (Next 14 + MobX) session, which tears the page
|
|
648
|
-
* session down and rebuilds it on EVERY navigation, so a `{kind:"route"}` predicate always races
|
|
649
|
-
* a teardown of the very session it is watching: `browser.command ok:true` for the click, and
|
|
650
|
-
* then no `tool.handler` for that callId, ever.
|
|
651
|
-
*
|
|
652
|
-
* A wait that cannot evaluate is a FAILED wait, not an eternal one. It now says so and finishes.
|
|
653
|
-
*/
|
|
654
|
-
const guardedCheck = () => {
|
|
655
|
-
try {
|
|
656
|
-
check();
|
|
657
|
-
}
|
|
658
|
-
catch (error) {
|
|
659
|
-
failWait(error);
|
|
660
|
-
}
|
|
661
|
-
};
|
|
662
|
-
// Bound to the CALL that started this wait. The listener fires from the WebSocket message
|
|
663
|
-
// handler and the interval from the timer queue — neither is in the awaited chain, so without
|
|
664
|
-
// this every re-check opened a new call at depth 0 and emitted a `browser.command` with no
|
|
665
|
-
// `tool.handler`. Measured on one healthy run: 23 such orphans, which is precisely the
|
|
666
|
-
// documented signature of a HUNG call. A diagnostic that fires on healthy runs is not one.
|
|
667
|
-
const boundCheck = bindSpanContext(guardedCheck);
|
|
668
|
-
const unsub = session.onEvent(() => {
|
|
669
|
-
boundCheck();
|
|
670
|
-
});
|
|
671
|
-
const unsubDisconnect = session.onDisconnect?.(() => {
|
|
672
|
-
// `observationLost` is what stops this being graded as an app defect. `pass: false` is still
|
|
673
|
-
// correct — the consequence was not seen to hold — but on its own it reached the verdict rule
|
|
674
|
-
// as ASSERTION_FAILED, so a reload mid-wait reported "the declared consequence did not hold"
|
|
675
|
-
// against a healthy component, by file and line. The flag is structured rather than inferred
|
|
676
|
-
// from this string, because every other `failureReason` here is prose about the APP.
|
|
677
|
-
finish({ pass: false, failureReason: 'session disconnected', observationLost: true });
|
|
678
|
-
});
|
|
679
|
-
const interval = setInterval(boundCheck, POLL_INTERVAL_MS);
|
|
680
|
-
const timer = setTimeout(() => {
|
|
681
|
-
void evaluatePredicate(session, predicate, since)
|
|
682
|
-
.then((r) => {
|
|
683
|
-
// Spread the near-miss, do NOT hand-copy two fields. The oracle computes observed / expected
|
|
684
|
-
// / assertion — the structured cause the repair literature ranks above prose — and the old
|
|
685
|
-
// `{ pass, evidence, failureReason }` construction DISCARDED them on every timed-out wait and
|
|
686
|
-
// assert. So the highest-value localization signal was computed and then thrown away exactly
|
|
687
|
-
// on the failure path where it matters, no matter what the schema declared.
|
|
688
|
-
finish(annotateThrottledMiss(session, predicate, {
|
|
689
|
-
...r,
|
|
690
|
-
pass: false,
|
|
691
|
-
failureReason: r.failureReason ?? 'timed out waiting for predicate',
|
|
692
|
-
}));
|
|
693
|
-
})
|
|
694
|
-
.catch((error) => {
|
|
695
|
-
finish(failed(error));
|
|
696
|
-
});
|
|
697
|
-
}, timeoutMs);
|
|
698
|
-
check();
|
|
699
|
-
});
|
|
700
|
-
}
|
|
701
|
-
/**
|
|
702
|
-
* The ExpectedLinks a GREEN verdict actually PROVED — not merely the ones it declared. Identical to
|
|
703
|
-
* predicateToExpectedLinks except for `anyOf`: an OR greens on a SINGLE branch, so only the branch that
|
|
704
|
-
* held may contribute its link. Grading a green anyOf off the declared links would let the honesty grade
|
|
705
|
-
* claim a signal/net consequence that was only one of the options and never fired — and a `minGrade:net`
|
|
706
|
-
* gate would then trust a verdict that proved nothing but presence. That is the exact false green the
|
|
707
|
-
* grade exists to prevent, sitting inside the grade itself.
|
|
708
|
-
*
|
|
709
|
-
* Call ONLY on a green verdict: a leaf and every `allOf` branch are returned unconditionally because a
|
|
710
|
-
* green top verdict guarantees they held (allOf needs all; a bare leaf IS the verdict). Only anyOf, where
|
|
711
|
-
* green ⇏ this-branch-held, re-checks each branch and keeps the winners.
|
|
712
|
-
*/
|
|
713
|
-
export async function provenExpectedLinks(session, predicate, since = 0) {
|
|
714
|
-
if (PredicateKind.ALL_OF === predicate.kind) {
|
|
715
|
-
const per = await Promise.all(predicate.predicates.map((p) => provenExpectedLinks(session, p, since)));
|
|
716
|
-
return per.flat();
|
|
717
|
-
}
|
|
718
|
-
if (PredicateKind.ANY_OF === predicate.kind) {
|
|
719
|
-
const per = await Promise.all(predicate.predicates.map(async (p) => (await evaluatePredicate(session, p, since)).pass
|
|
720
|
-
? provenExpectedLinks(session, p, since)
|
|
721
|
-
: []));
|
|
722
|
-
return per.flat();
|
|
723
|
-
}
|
|
724
|
-
return predicateToExpectedLinks(predicate);
|
|
725
|
-
}
|