@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
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What an `unsettled` verdict was waiting for, and what its window held instead.
|
|
3
|
-
*
|
|
4
|
-
* `unsettled` is the commonest reason a verdict comes back `unknown`, and all it said was that the
|
|
5
|
-
* page "never settled" — a sentence equally true of a page that polls, a page that animates, and a
|
|
6
|
-
* page whose write is still open. Those need three different next moves, and an agent handed the
|
|
7
|
-
* sentence cannot tell which it is holding, so the drive stops there. An `unknown` that explains
|
|
8
|
-
* itself is a retry; one that does not is a dead end.
|
|
9
|
-
*
|
|
10
|
-
* Two releases already tuned this window and neither is undone here. The budget is still spent in
|
|
11
|
-
* full before anything is called unsettled (settle-in-flight.ts), and the app is still given its
|
|
12
|
-
* reaction window before any accusation (waitForReaction). This only describes what was true at the
|
|
13
|
-
* moment the budget genuinely ran out.
|
|
14
|
-
*
|
|
15
|
-
* It rides in `because`, beside `verifiedReason`, rather than in a field of its own: the verdict has
|
|
16
|
-
* one sentence an agent is known to read, and a caveat parked anywhere else is a caveat nobody reads.
|
|
17
|
-
*/
|
|
18
|
-
import { PredicateKind } from '@reticlehq/core';
|
|
19
|
-
/** Enough to recognise the one that is stuck; not so many that a chatty window eats the verdict. */
|
|
20
|
-
const MAX_LISTED_REQUESTS = 3;
|
|
21
|
-
/**
|
|
22
|
-
* The wait, in one phrase.
|
|
23
|
-
*
|
|
24
|
-
* The default matters most: a call that declares no `until` waits for the page to go IDLE, and an
|
|
25
|
-
* agent that never chose that wait cannot be expected to recognise it in a timeout about it.
|
|
26
|
-
*/
|
|
27
|
-
export function describeWaitTarget(predicate) {
|
|
28
|
-
switch (predicate.kind) {
|
|
29
|
-
case PredicateKind.SETTLED:
|
|
30
|
-
return 'the page to go idle';
|
|
31
|
-
case PredicateKind.SIGNAL:
|
|
32
|
-
return predicate.name === undefined ? 'any signal' : `signal '${predicate.name}'`;
|
|
33
|
-
case PredicateKind.NET:
|
|
34
|
-
return `a request${predicate.method === undefined ? '' : ` ${predicate.method}`}${predicate.urlContains === undefined ? '' : ` matching '${predicate.urlContains}'`}`;
|
|
35
|
-
case PredicateKind.ROUTE:
|
|
36
|
-
return `a route change${predicate.pathname === undefined ? '' : ` to '${predicate.pathname}'`}${predicate.contains === undefined ? '' : ` containing '${predicate.contains}'`}`;
|
|
37
|
-
case PredicateKind.STATE:
|
|
38
|
-
return `state at '${predicate.path}'`;
|
|
39
|
-
case PredicateKind.TEXT:
|
|
40
|
-
return `text containing '${predicate.contains}'`;
|
|
41
|
-
case PredicateKind.ELEMENT:
|
|
42
|
-
return `an element matching ${JSON.stringify(predicate.query)}`;
|
|
43
|
-
case PredicateKind.CONSOLE:
|
|
44
|
-
return 'a console message';
|
|
45
|
-
case PredicateKind.ANIMATION:
|
|
46
|
-
return predicate.name === undefined ? 'an animation' : `animation '${predicate.name}'`;
|
|
47
|
-
case PredicateKind.ALL_OF:
|
|
48
|
-
return `all of (${predicate.predicates.map(describeWaitTarget).join('; ')})`;
|
|
49
|
-
case PredicateKind.ANY_OF:
|
|
50
|
-
return `any of (${predicate.predicates.map(describeWaitTarget).join('; ')})`;
|
|
51
|
-
case PredicateKind.NOT:
|
|
52
|
-
return `the absence of ${describeWaitTarget(predicate.predicate)}`;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Did the assertion name a request that is still open?
|
|
57
|
-
*
|
|
58
|
-
* `waitForPredicate` reports a miss ("no request to /register") the moment the budget ends, even
|
|
59
|
-
* when that same POST is sitting in `stillInFlight`. Grading that miss `no` is a race against the
|
|
60
|
-
* backend, not a defect. Matching is the discriminator: an unrelated poll left open does not pardon
|
|
61
|
-
* a named URL that never started.
|
|
62
|
-
*/
|
|
63
|
-
export function namedNetIsInFlight(predicate, stillInFlight) {
|
|
64
|
-
if (0 === stillInFlight.length)
|
|
65
|
-
return false;
|
|
66
|
-
const nets = [];
|
|
67
|
-
const walk = (p) => {
|
|
68
|
-
switch (p.kind) {
|
|
69
|
-
case PredicateKind.ALL_OF:
|
|
70
|
-
case PredicateKind.ANY_OF:
|
|
71
|
-
for (const child of p.predicates)
|
|
72
|
-
walk(child);
|
|
73
|
-
return;
|
|
74
|
-
case PredicateKind.NET: {
|
|
75
|
-
if (undefined === p.urlContains || 0 === p.urlContains.length)
|
|
76
|
-
return;
|
|
77
|
-
nets.push({
|
|
78
|
-
...(undefined === p.method ? {} : { method: p.method }),
|
|
79
|
-
urlContains: p.urlContains,
|
|
80
|
-
});
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
default:
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
walk(predicate);
|
|
88
|
-
return nets.some((net) => stillInFlight.some((label) => inFlightLabelMatchesNet(label, net)));
|
|
89
|
-
}
|
|
90
|
-
function inFlightLabelMatchesNet(label, net) {
|
|
91
|
-
const space = label.indexOf(' ');
|
|
92
|
-
if (space <= 0)
|
|
93
|
-
return false;
|
|
94
|
-
const method = label.slice(0, space);
|
|
95
|
-
const url = label.slice(space + 1);
|
|
96
|
-
if (undefined !== net.method && method.toUpperCase() !== net.method.toUpperCase())
|
|
97
|
-
return false;
|
|
98
|
-
return url.includes(net.urlContains);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* The `because` sentence for an unsettled verdict: the wait, the observation, the next move.
|
|
102
|
-
*
|
|
103
|
-
* The two branches are the point. An outstanding write is worth waiting for and worth asserting
|
|
104
|
-
* directly; page churn is neither, and telling an agent to raise its timeout on churn sells it a
|
|
105
|
-
* slower dead end. Without the detail the sentence is the one that shipped before, so a caller that
|
|
106
|
-
* cannot supply the facts loses nothing.
|
|
107
|
-
*/
|
|
108
|
-
export function unsettledBecause(base, window) {
|
|
109
|
-
if (window === undefined)
|
|
110
|
-
return `${base} — re-check, or assert a consequence that settles`;
|
|
111
|
-
if (0 === window.stillInFlight.length) {
|
|
112
|
-
const repeated = window.repeated ?? [];
|
|
113
|
-
return (`${base}. It waited for ${window.waitedFor}, and no request started in this window was left ` +
|
|
114
|
-
'open — what kept the page busy was its own churn ' +
|
|
115
|
-
(0 === repeated.length
|
|
116
|
-
? '(a poll, a timer, an animation)'
|
|
117
|
-
: `(these fired repeatedly: ${repeated.join(', ')} — a poll or a retrying query)`) +
|
|
118
|
-
', so waiting longer will not help. Assert the consequence you care about (a signal, a route ' +
|
|
119
|
-
'change, or store state) instead of waiting for idle, and re-check if the app is genuinely slow');
|
|
120
|
-
}
|
|
121
|
-
const shown = window.stillInFlight.slice(0, MAX_LISTED_REQUESTS);
|
|
122
|
-
const rest = window.stillInFlight.length - shown.length;
|
|
123
|
-
return (`${base}. It waited for ${window.waitedFor}, and ${String(window.stillInFlight.length)} ` +
|
|
124
|
-
`request(s) started in this window had not come back: ${shown.join(', ')}` +
|
|
125
|
-
`${rest > 0 ? `, and ${String(rest)} more` : ''} — re-check once they land, raise timeout_ms, ` +
|
|
126
|
-
'or assert the request itself so the wait ends on the response rather than on idle');
|
|
127
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { Verified, VerifiedReason } from '@reticlehq/core';
|
|
2
|
-
import { type HonestyBlock } from './honesty.js';
|
|
3
|
-
import { type UnsettledWindow } from './unsettled.js';
|
|
4
|
-
/**
|
|
5
|
-
* The decision rule: eight trust dimensions in, one answer out.
|
|
6
|
-
*
|
|
7
|
-
* Everything needed to judge an action already travelled on the result — the assertion verdict, the
|
|
8
|
-
* grade it proved, whether the capture was clean, whether the page settled, whether any channel
|
|
9
|
-
* disagreed. What was missing was the RULE, so every agent had to invent one, and inventing it under
|
|
10
|
-
* uncertainty is exactly where a confident wrong answer comes from.
|
|
11
|
-
*
|
|
12
|
-
* Ordering is deliberate, because the first matching clause also writes `because`, and the reader
|
|
13
|
-
* should be told the most actionable fact rather than the first true one.
|
|
14
|
-
*/
|
|
15
|
-
interface VerifiedInputs {
|
|
16
|
-
/** Did the declared consequence hold? Undefined when the action declared none. */
|
|
17
|
-
pass?: boolean;
|
|
18
|
-
/**
|
|
19
|
-
* The wait ended because the TAB went away, not because the app did anything.
|
|
20
|
-
*
|
|
21
|
-
* A structured flag rather than a match on `failureReason`, which is free prose everywhere else it
|
|
22
|
-
* is produced and describes what the APP did. A string test here would silently reclassify the
|
|
23
|
-
* next app-side reason that happened to mention a disconnect, which is the same
|
|
24
|
-
* confidently-wrong-by-accident this clause exists to remove.
|
|
25
|
-
*/
|
|
26
|
-
observationLost?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* The URL the session was on when observation was lost.
|
|
29
|
-
*
|
|
30
|
-
* Only meaningful with `observationLost`. A route that 500s tears the page down mid-wait; naming
|
|
31
|
-
* the last URL in the verdict is the difference between "install problem" and "the page died on
|
|
32
|
-
* /X" (#808). Absent when we never knew, which must not invent a route.
|
|
33
|
-
*/
|
|
34
|
-
lastUrl?: string;
|
|
35
|
-
honesty: HonestyBlock;
|
|
36
|
-
/**
|
|
37
|
-
* Set when the assertion could not be EVALUATED at all — an under-specified call, or nothing
|
|
38
|
-
* instrumented to read. Carries the sentence naming what is missing.
|
|
39
|
-
*/
|
|
40
|
-
inconclusive?: string;
|
|
41
|
-
/**
|
|
42
|
-
* The declared consequence was ALREADY TRUE before the action ran, so its holding afterwards says
|
|
43
|
-
* nothing about the action. Only meaningful for predicates that read live DOM state — event-based
|
|
44
|
-
* ones are floored at the act's cursor and cannot be satisfied by the past.
|
|
45
|
-
*/
|
|
46
|
-
alreadyTrue?: boolean;
|
|
47
|
-
/**
|
|
48
|
-
* The `alreadyTrue` match was against a HIDDEN element/text — DOM presence, not something a person
|
|
49
|
-
* could see on screen. `text`/`element` predicates match presence by default (`visible: true` is
|
|
50
|
-
* opt-in), so a dialog's content mounted-but-hidden before the click reads identically to content
|
|
51
|
-
* that was genuinely already showing, and named neither fact (#889). Only changes `because`; the
|
|
52
|
-
* verdict itself is unchanged; a hidden pre-existing match is exactly as unfalsifiable as a visible
|
|
53
|
-
* one.
|
|
54
|
-
*/
|
|
55
|
-
alreadyTrueHiddenMatch?: boolean;
|
|
56
|
-
/** Cross-channel disagreements found in the action's window. */
|
|
57
|
-
contradictions?: readonly {
|
|
58
|
-
kind: string;
|
|
59
|
-
}[];
|
|
60
|
-
/** Did a real frame flush before the wait gave up? */
|
|
61
|
-
settled?: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* The caller named a consequence before acting — an `until`/`predicate` of its own,
|
|
64
|
-
* rather than the default "wait for the page to go idle".
|
|
65
|
-
*
|
|
66
|
-
* This is the epistemic core of the tool: a declaration made before the action cannot be
|
|
67
|
-
* rationalised after it. When such a declaration HOLDS, settlement is corroboration, not a veto —
|
|
68
|
-
* so the two clauses that answer "the app had not gone quiet" step aside for it. Measured in the
|
|
69
|
-
* field on three different apps: the expected text was on screen, the write returned 204, the
|
|
70
|
-
* nested verdict passed with evidence, and the verdict was `unknown` because the SPA polls, or
|
|
71
|
-
* because the tab was hidden and a hidden tab never fires the animation frame `settled` is read
|
|
72
|
-
* from. A hidden tab is the NORMAL state for agent-driven verification, so a signal that is always
|
|
73
|
-
* false there cannot be a precondition for a verdict.
|
|
74
|
-
*
|
|
75
|
-
* Narrow on purpose. It steps aside for settlement ONLY: an absence-derived finding about what the
|
|
76
|
-
* action DID — a duplicate write, a dead control, a route that rendered nothing, a response
|
|
77
|
-
* nothing consumed — still downgrades, and every positively OBSERVED contradiction still wins
|
|
78
|
-
* outright. Fixing a false negative must not open a path to a false positive.
|
|
79
|
-
*/
|
|
80
|
-
declaredConsequence?: boolean;
|
|
81
|
-
/**
|
|
82
|
-
* A net the caller named is still open. `waitForPredicate` reports that as `pass: false` ("no
|
|
83
|
-
* request to …") the instant the budget ends, which made a cold backend `assertion_failed` and a
|
|
84
|
-
* warm one `proved`. Absence of a settle is not evidence the request never happened — see #669.
|
|
85
|
-
*/
|
|
86
|
-
namedRequestInFlight?: boolean;
|
|
87
|
-
/**
|
|
88
|
-
* A write in this window answered `202 Accepted` — the server took the request and has NOT
|
|
89
|
-
* finished processing it.
|
|
90
|
-
*/
|
|
91
|
-
outcomePending?: boolean;
|
|
92
|
-
/**
|
|
93
|
-
* Writes in this window that returned 2xx with a payload that was never recorded, as "METHOD url",
|
|
94
|
-
* so their outcome was never read. See `unreadWriteLabels` — the status line describes the
|
|
95
|
-
* transport, not the result.
|
|
96
|
-
*
|
|
97
|
-
* The LABELS rather than a flag: every other clause names the evidence that decided it, and this
|
|
98
|
-
* one named nothing, so an agent holding the caveat could not tell which call it was about.
|
|
99
|
-
* Empty means nothing went unread.
|
|
100
|
-
*/
|
|
101
|
-
outcomeUnread?: readonly string[];
|
|
102
|
-
/**
|
|
103
|
-
* The page SDK's version, so the unread-body remedy can check whether it applies.
|
|
104
|
-
*
|
|
105
|
-
* This clause is the highest-traffic producer of that advice — every 2xx write whose body went
|
|
106
|
-
* unread lands here — and it inlined the setting unconditionally, which is what a reporter saw six
|
|
107
|
-
* times at a repo pinned below the release that introduced it. See body-capture-remedy.ts.
|
|
108
|
-
*/
|
|
109
|
-
sdkVersion?: string | undefined;
|
|
110
|
-
/**
|
|
111
|
-
* The declared consequence that held does not depend on the response body — an exact string
|
|
112
|
-
* rendered, a store path, a signal, a route, or an element located by role / name / testid. See
|
|
113
|
-
* `declaresBodyIndependentChannel`.
|
|
114
|
-
*
|
|
115
|
-
* The unread-body clause exists for the case where the body is the ONLY channel that could have
|
|
116
|
-
* contradicted the screen (a 200 with batch/GraphQL errors inside). When a body-independent
|
|
117
|
-
* declaration held, that is no longer true, and grading `unknown` costs a real verdict. The unread
|
|
118
|
-
* labels still ride out in `because`, the way absence-derived contradictions still ride out in
|
|
119
|
-
* `contradictions`.
|
|
120
|
-
*
|
|
121
|
-
* Narrow: it does not soften a 202, an observed contradiction, a dirty capture, or a net-only
|
|
122
|
-
* declaration. `declaredConsequence` alone is not enough — a `{ kind: "net", status: 200 }` is a
|
|
123
|
-
* declaration whose remaining channel IS the body.
|
|
124
|
-
*/
|
|
125
|
-
independentOfBody?: boolean;
|
|
126
|
-
/**
|
|
127
|
-
* What the wait was for and what the window held when it ended — read ONLY by the two clauses that
|
|
128
|
-
* answer UNSETTLED, which is the commonest reason a verdict comes back `unknown` and was also the
|
|
129
|
-
* least actionable. Optional: without it those clauses say exactly what they said before.
|
|
130
|
-
*/
|
|
131
|
-
unsettled?: UnsettledWindow;
|
|
132
|
-
/** A passing absence assertion targeted a region that the current capture could not observe. */
|
|
133
|
-
absenceBlindSpot?: string;
|
|
134
|
-
}
|
|
135
|
-
interface VerifiedVerdict {
|
|
136
|
-
verified: Verified;
|
|
137
|
-
/**
|
|
138
|
-
* WHICH clause below decided this, as a closed enum. `verified` has three values and this rule has
|
|
139
|
-
* eleven clauses, so the verdict alone collapses opposite facts — "Reticle caught a real bug", "the
|
|
140
|
-
* agent wrote a bad predicate" and "Reticle could not see" all arrived as one string. Named here,
|
|
141
|
-
* beside the sentence, so the vocabulary cannot drift from the branches that produce it.
|
|
142
|
-
*/
|
|
143
|
-
verifiedReason: VerifiedReason;
|
|
144
|
-
/** One sentence naming the deciding evidence — never a restatement of the field. */
|
|
145
|
-
because: string;
|
|
146
|
-
}
|
|
147
|
-
export declare function decideVerified(inputs: VerifiedInputs): VerifiedVerdict;
|
|
148
|
-
export {};
|
package/dist/honesty/verified.js
DELETED
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
import { bodyCaptureRemedy } from './body-capture-remedy.js';
|
|
2
|
-
import { ContradictionKind, MUTATING_METHODS, Verified, VerifiedReason, isAbsenceDerived, isAdvisory, } from '@reticlehq/core';
|
|
3
|
-
import { HonestyGrade } from './honesty.js';
|
|
4
|
-
import { unsettledBecause } from './unsettled.js';
|
|
5
|
-
import { pageTornDownWhileOn } from '../session/no-session-diagnosis.js';
|
|
6
|
-
export function decideVerified(inputs) {
|
|
7
|
-
const { pass, honesty, contradictions = [], settled, outcomePending, outcomeUnread } = inputs;
|
|
8
|
-
/** The caller named a consequence before acting and it held — see `declaredConsequence`. */
|
|
9
|
-
const declaredHeld = true === inputs.declaredConsequence && true === pass;
|
|
10
|
-
// Ahead of the failure clause, because a failure is only the most actionable fact when there WAS
|
|
11
|
-
// one. An assertion nobody could evaluate is not a defect in the app, and calling it one was
|
|
12
|
-
// putting the agent's own malformed calls into the bug count.
|
|
13
|
-
if (inputs.inconclusive !== undefined) {
|
|
14
|
-
return {
|
|
15
|
-
verified: Verified.UNKNOWN,
|
|
16
|
-
verifiedReason: VerifiedReason.INCONCLUSIVE,
|
|
17
|
-
because: `the assertion could not be evaluated: ${inputs.inconclusive}`,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
// ABOVE the failure clause, because a wait that ended when the tab vanished did not fail — it was
|
|
21
|
-
// never finished. `waitForPredicate` reports that as `pass: false`, and taking it at face value
|
|
22
|
-
// made Reticle blame the app, by file and line, for its own lost connection. Measured twice: a
|
|
23
|
-
// reload 300ms into a wait returned `verified:"no" / assertion_failed` against a healthy Counter.
|
|
24
|
-
//
|
|
25
|
-
// UNKNOWN, for the same reason `unclean_capture` is: the evidence is ABSENT, not negative.
|
|
26
|
-
if (true === inputs.observationLost) {
|
|
27
|
-
const lost = undefined === inputs.lastUrl || '' === inputs.lastUrl
|
|
28
|
-
? 'the tab disconnected'
|
|
29
|
-
: pageTornDownWhileOn(inputs.lastUrl);
|
|
30
|
-
return {
|
|
31
|
-
verified: Verified.UNKNOWN,
|
|
32
|
-
verifiedReason: VerifiedReason.OBSERVATION_LOST,
|
|
33
|
-
because: `${lost} while this action was being observed, so its outcome was never ` +
|
|
34
|
-
'seen — this says nothing about the app. Call reticle_sessions for the current session ' +
|
|
35
|
-
'(a reloaded tab keeps its id; a closed one is gone) and repeat the action if it is safe ' +
|
|
36
|
-
'to repeat',
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
// ABOVE the failure clause, for the third time and the same reason: absence is not evidence.
|
|
40
|
-
//
|
|
41
|
-
// Omitting `until` waits for the page to SETTLE. Nobody declared a consequence, so a settle that
|
|
42
|
-
// times out says "the page was still busy when I stopped looking" — the definition of an
|
|
43
|
-
// absence-derived finding. The failure clause below took it at face value and returned
|
|
44
|
-
// `verified: "no"` with `because: 'the declared consequence did not hold'`, naming a consequence
|
|
45
|
-
// that does not exist. Measured on the hard fixture, whose push updates mean it never goes idle:
|
|
46
|
-
// a healthy pagination click was graded NO. Any app with polling or a live feed gets accused of a
|
|
47
|
-
// defect for being alive, which is the false NEGATIVE the ABSENCE_DERIVED doctrine exists to stop.
|
|
48
|
-
if (false === pass && false === inputs.declaredConsequence) {
|
|
49
|
-
return {
|
|
50
|
-
verified: Verified.UNKNOWN,
|
|
51
|
-
verifiedReason: VerifiedReason.UNSETTLED,
|
|
52
|
-
because: 'no consequence was declared, so this only waited for the page to go idle and it never ' +
|
|
53
|
-
'did — that is a statement about when Reticle stopped looking, not about the app. Pass ' +
|
|
54
|
-
'`until` naming what the action should cause (a signal, a request, a route, or store state)',
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
// ABOVE the failure clause, same reason as observationLost: absence is not evidence.
|
|
58
|
-
//
|
|
59
|
-
// A `{ net, urlContains }` miss while that URL is still in `stillInFlight` is a window that
|
|
60
|
-
// closed early, not a request that never happened. The same result object already named the
|
|
61
|
-
// in-flight POST; calling it `assertion_failed` contradicted that field and flipped green on a
|
|
62
|
-
// warm backend. UNKNOWN, and the sentence says to re-check once the request lands.
|
|
63
|
-
if (false === pass && true === inputs.namedRequestInFlight) {
|
|
64
|
-
return {
|
|
65
|
-
verified: Verified.UNKNOWN,
|
|
66
|
-
verifiedReason: VerifiedReason.WINDOW_CLOSED_EARLY,
|
|
67
|
-
because: unsettledBecause('the request this assertion named was still in flight when the window closed, so the ' +
|
|
68
|
-
'consequence was not disproved — it had not finished', inputs.unsettled),
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
// A failed assertion is the most actionable fact there is; it leads — including over
|
|
72
|
-
// `alreadyTrue`, because a condition that held before AND fails now is a real regression.
|
|
73
|
-
if (false === pass) {
|
|
74
|
-
return {
|
|
75
|
-
verified: Verified.NO,
|
|
76
|
-
verifiedReason: VerifiedReason.ASSERTION_FAILED,
|
|
77
|
-
because: 'the declared consequence did not hold',
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
// A contradiction outranks a passing assertion, and that inversion is the whole point: the case
|
|
81
|
-
// this product exists to catch is a green assertion sitting on top of a failed write. Measured on
|
|
82
|
-
// the bench app — `ui-advanced-request-failed` arrived with verdict.pass true and every other
|
|
83
|
-
// channel agreeing. Letting `pass` win there would report exactly the false green being detected.
|
|
84
|
-
// ...but ONLY for contradictions we positively OBSERVED. A kind inferred from the absence of
|
|
85
|
-
// evidence — the request had not settled, the response had not been applied yet — is a statement
|
|
86
|
-
// about when we stopped looking, not about whether the action worked, and the window closes the
|
|
87
|
-
// moment the predicate first passes. Reproduced on the bench app: `auth:granted` fired with
|
|
88
|
-
// matching data, state changed, the token was stored, the capture was clean and the grade was
|
|
89
|
-
// `signal`, and the verdict was still NO because one POST was in flight. That inverts the grade
|
|
90
|
-
// hierarchy — a timing observation beat a consequence observation — and it is the shape of half of
|
|
91
|
-
// every `no` verdict in the field. See ABSENCE_DERIVED_CONTRADICTIONS for why a false negative
|
|
92
|
-
// costs more than it looks: it makes an agent redo work that succeeded, or stop believing the
|
|
93
|
-
// verdict channel, which is the product.
|
|
94
|
-
// Advisory findings are dropped from the decision entirely, at both tiers below. They are true and
|
|
95
|
-
// they ride out in `contradictions`; what they are not is evidence about the consequence the
|
|
96
|
-
// caller declared, because they concern traffic the assertion never named (#673).
|
|
97
|
-
const deciding = contradictions.filter((c) => !isAdvisory(c.kind));
|
|
98
|
-
const observed = deciding.filter((c) => !isAbsenceDerived(c.kind));
|
|
99
|
-
if (observed.length > 0) {
|
|
100
|
-
const kinds = observed.map((c) => c.kind).join(', ');
|
|
101
|
-
return {
|
|
102
|
-
verified: Verified.NO,
|
|
103
|
-
verifiedReason: VerifiedReason.CONTRADICTED,
|
|
104
|
-
because: `channels disagree about this action (${kinds}) even though the assertion passed`,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
// Absence-derived only: report it, do not assert failure. UNKNOWN is the honest answer — Reticle
|
|
108
|
-
// drove the app and could not yet tell. The finding still rides out in `contradictions`, so an
|
|
109
|
-
// agent that wants to wait and re-check has everything it needs.
|
|
110
|
-
//
|
|
111
|
-
// ...except when the only finding is that a READ had not come back AND the caller declared the
|
|
112
|
-
// consequence that did. `request-never-settled` is a statement about when we stopped looking; the
|
|
113
|
-
// declaration is a statement about what was supposed to happen, made before it could. On a page
|
|
114
|
-
// that polls, the first is permanently true and vetoed every verdict the second earned.
|
|
115
|
-
//
|
|
116
|
-
// An open WRITE is the exception to the exception, and it is where the false-green defence lives:
|
|
117
|
-
// "the toast said Saved while the POST was still open" is the archetype this product exists to
|
|
118
|
-
// catch, and its outcome genuinely does not exist yet. A poll or a prefetch left hanging says
|
|
119
|
-
// nothing about the action; an unfinished mutation says the answer is not in yet. Read off the
|
|
120
|
-
// labels the window already carries — and when there are no labels to read, nothing is softened.
|
|
121
|
-
const openWrite = (inputs.unsettled?.stillInFlight ?? []).some((label) => MUTATING_METHODS.includes((label.split(' ')[0] ?? '').toUpperCase()));
|
|
122
|
-
const settlementOnly = declaredHeld &&
|
|
123
|
-
inputs.unsettled !== undefined &&
|
|
124
|
-
!openWrite &&
|
|
125
|
-
deciding.every((c) => c.kind === ContradictionKind.REQUEST_NEVER_SETTLED);
|
|
126
|
-
// `signal-without-consequence` gets its own sentence, because the generic one is FALSE for it.
|
|
127
|
-
//
|
|
128
|
-
// That sentence says the window "closed before the app finished" and then explains that a poll or
|
|
129
|
-
// a timer kept the page busy. Nothing kept this page busy — nothing happened at all, which is the
|
|
130
|
-
// entire finding. Measured on the bench fixture: the correct UNKNOWN arrived wearing an
|
|
131
|
-
// explanation that told the agent to wait longer or assert something else, when the fact to act on
|
|
132
|
-
// was that the app announced a consequence it did not deliver. A right verdict with a wrong reason
|
|
133
|
-
// sends an agent to the wrong place, which costs as much as the wrong verdict did.
|
|
134
|
-
const signalOnly = deciding.length > 0 &&
|
|
135
|
-
deciding.every((c) => c.kind === ContradictionKind.SIGNAL_WITHOUT_CONSEQUENCE);
|
|
136
|
-
if (signalOnly) {
|
|
137
|
-
return {
|
|
138
|
-
verified: Verified.UNKNOWN,
|
|
139
|
-
verifiedReason: VerifiedReason.EVIDENCE_INCOMPLETE,
|
|
140
|
-
because: 'the app fired the signal you waited for and NOTHING else moved — no DOM, no store, no ' +
|
|
141
|
-
'route, no request — so the only evidence is the app saying so. A signal emitted from the ' +
|
|
142
|
-
'value the app was ASKED for, rather than the one it committed, looks exactly like this. ' +
|
|
143
|
-
'Check the consequence directly (reticle_snapshot for what rendered, reticle_state for what ' +
|
|
144
|
-
'the store holds) before trusting it',
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
if (deciding.length > 0 && !settlementOnly) {
|
|
148
|
-
const kinds = deciding.map((c) => c.kind).join(', ');
|
|
149
|
-
return {
|
|
150
|
-
verified: Verified.UNKNOWN,
|
|
151
|
-
// NOT `unsettled`: this clause fires whether or not the page went idle, and naming it after
|
|
152
|
-
// idle produced verdicts that read `unsettled` beside `settled: true`.
|
|
153
|
-
verifiedReason: VerifiedReason.EVIDENCE_INCOMPLETE,
|
|
154
|
-
because: unsettledBecause(`the assertion held, but this window closed before the app finished (${kinds})`, inputs.unsettled),
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
// An absence assertion over a region Reticle cannot observe is not disproved, but it is not proved
|
|
158
|
-
// either. This is narrower than general partial coverage: the target itself is scoped to the blind
|
|
159
|
-
// region, so the DOM result cannot answer the question the caller asked.
|
|
160
|
-
if (inputs.absenceBlindSpot !== undefined) {
|
|
161
|
-
return {
|
|
162
|
-
verified: Verified.UNKNOWN,
|
|
163
|
-
verifiedReason: VerifiedReason.ABSENCE_BLIND_SPOT,
|
|
164
|
-
because: inputs.absenceBlindSpot,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
// Below the contradiction clause, and for the same reason a contradiction outranks a dirty
|
|
168
|
-
// capture: evidence AGAINST beats absence of evidence, whichever absence it is. Both can hold at
|
|
169
|
-
// once — assert `{ text: 'Saved' }` that was already on screen while the write 500s — and ordering
|
|
170
|
-
// this first downgraded a DETECTED false green from NO to UNKNOWN, which reads as "assert
|
|
171
|
-
// something else" rather than "this is broken".
|
|
172
|
-
//
|
|
173
|
-
// A green that was already green before the action is not evidence about the action. Measured in
|
|
174
|
-
// the field: a click asserted with `{ text: 'Parallel Routes' }` returned verified "yes" in 478ms
|
|
175
|
-
// with routeChanges 0, because the text was the nav link already on screen — the real navigation
|
|
176
|
-
// landed 1.8s later. UNKNOWN rather than NO on purpose: the app may well be fine, and reporting a
|
|
177
|
-
// failure we did not observe would be its own false claim.
|
|
178
|
-
//
|
|
179
|
-
// `no-fault` rather than `unknown`, once the window settled — the same distinction
|
|
180
|
-
// `nothing_declared` already draws, gated the same way.
|
|
181
|
-
//
|
|
182
|
-
// The two words ask for opposite things. `unknown` means LOOK AGAIN WITH BETTER COVERAGE, so an
|
|
183
|
-
// agent reading it reasonably concludes the engine could not see, and spends its remaining turns
|
|
184
|
-
// enabling capture, widening timeouts and re-driving — none of which can help, because the engine
|
|
185
|
-
// saw the whole window and there was nothing wrong with the evidence. The fault is in the
|
|
186
|
-
// ASSERTION: it named something that was true before the action, so it cannot tell success from a
|
|
187
|
-
// no-op. `no-fault` says exactly that, and `because` already carried the remedy that `unknown`
|
|
188
|
-
// was burying.
|
|
189
|
-
//
|
|
190
|
-
// Gated on `true === settled` for the same reason `nothing_declared` is: no-fault claims the whole
|
|
191
|
-
// window was seen, and a call that returned before the app stopped moving has not earned that.
|
|
192
|
-
// Unsettled stays `unknown`, which is then the honest word for it.
|
|
193
|
-
if (true === inputs.alreadyTrue) {
|
|
194
|
-
return {
|
|
195
|
-
verified: true === settled ? Verified.NO_FAULT : Verified.UNKNOWN,
|
|
196
|
-
verifiedReason: VerifiedReason.ALREADY_TRUE,
|
|
197
|
-
because: 'the declared consequence was already true before this action, so it proves nothing about it — assert something the action CHANGES (a signal, a request, a route, or store state)' +
|
|
198
|
-
(true === inputs.alreadyTrueHiddenMatch
|
|
199
|
-
? '. That prior match was against a HIDDEN element — this predicate checks DOM presence, not visibility, by default; add `visible: true` if you meant "this is showing", not merely "this exists"'
|
|
200
|
-
: ''),
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
// Dirty capture is NOT failure. The layer could not see part of the window, so any green is a
|
|
204
|
-
// statement about what it happened to observe — which is precisely the thing that must not be
|
|
205
|
-
// reported as proof.
|
|
206
|
-
if (!honesty.integrity.clean) {
|
|
207
|
-
return {
|
|
208
|
-
verified: Verified.UNKNOWN,
|
|
209
|
-
verifiedReason: VerifiedReason.UNCLEAN_CAPTURE,
|
|
210
|
-
because: `capture was not clean (${honesty.integrity.issues.join('; ')}), so a green here would only describe what was observed`,
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
// A vacuous green: nothing was actually proved. Grade NONE means no signal, no request, no state
|
|
214
|
-
// change and no element was pinned — the assertion could not have failed, which makes passing it
|
|
215
|
-
// evidence of nothing.
|
|
216
|
-
// Two different facts used to share this answer. Everything above has already ruled out a failure,
|
|
217
|
-
// a contradiction, a dirty capture, a pending write and an unread one — so when the window ALSO
|
|
218
|
-
// settled, the engine did not fail to see: it saw the whole window, ran every oracle, and found
|
|
219
|
-
// nothing wrong. That is `no-fault`, and telling it apart from "I could not see" is the difference
|
|
220
|
-
// between "assert something" and "look again with better coverage".
|
|
221
|
-
//
|
|
222
|
-
// Gated on `true === settled` rather than on a caller's say-so. A call that returned before the app
|
|
223
|
-
// stopped moving has not earned this, whatever it declared — which is what stops `no-fault` from
|
|
224
|
-
// becoming the green-forever button an always-available "nothing was wrong" would be.
|
|
225
|
-
// Two ways to have proved nothing, and only one of them used to be caught. Grade NONE is the
|
|
226
|
-
// engine's own reading — no signal, no request, no state change, nothing pinned. An explicit
|
|
227
|
-
// `declaredConsequence: false` is the CALLER saying it asserted nothing, which `act_and_wait`
|
|
228
|
-
// reports whenever `until` is omitted (an omitted `until` becomes `{kind:"settled"}` — a
|
|
229
|
-
// sleep-replacement, not an assertion).
|
|
230
|
-
//
|
|
231
|
-
// Grading alone missed the second case, because a click that merely moves the DOM lifts the grade
|
|
232
|
-
// to PRESENCE and walks past this branch into a full green. Measured live: clicking a submit
|
|
233
|
-
// button, and an inert text input, with no `until` both returned `verified:"yes"` /
|
|
234
|
-
// `verifiedReason:"proved"`. The claim it printed — "assertion held at presence grade" — was true
|
|
235
|
-
// about a grade and false about an assertion, because there was no assertion.
|
|
236
|
-
//
|
|
237
|
-
// It compounds: `reticle_context` persists proven claims, so an undeclared green becomes
|
|
238
|
-
// established fact for the agent that re-enters after a compaction.
|
|
239
|
-
if (honesty.grade === HonestyGrade.NONE || false === inputs.declaredConsequence) {
|
|
240
|
-
if (true === settled) {
|
|
241
|
-
return {
|
|
242
|
-
verified: Verified.NO_FAULT,
|
|
243
|
-
verifiedReason: VerifiedReason.NOTHING_DECLARED,
|
|
244
|
-
because: 'the page settled and no channel reported a problem, but nothing was declared to prove — this is not verification. Assert a consequence the action CHANGES (a signal, a request, a route, or store state) to get one',
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
return {
|
|
248
|
-
verified: Verified.UNKNOWN,
|
|
249
|
-
verifiedReason: VerifiedReason.VACUOUS_GRADE,
|
|
250
|
-
because: 'nothing was asserted at a real grade, so passing proves nothing — assert a signal, request, or state path',
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
// A `202 Accepted` is the server saying, in the only word HTTP has for it, that the outcome does
|
|
254
|
-
// not exist yet. Treating 2xx as success makes every asynchronous workflow verifiable at exactly
|
|
255
|
-
// the moment nothing has been decided.
|
|
256
|
-
//
|
|
257
|
-
// Measured on a logistics console with server-side reconciliation: a dispatch answered 202, the row
|
|
258
|
-
// optimistically rendered "dispatched", the page settled, and the verdict came back `yes` — then
|
|
259
|
-
// the server REVERTED it to `held` 1.2s later. Every channel agreed, and every channel was early.
|
|
260
|
-
// UNKNOWN rather than NO: nothing has failed, and saying it has would be its own false report.
|
|
261
|
-
if (true === outcomePending) {
|
|
262
|
-
return {
|
|
263
|
-
verified: Verified.UNKNOWN,
|
|
264
|
-
verifiedReason: VerifiedReason.OUTCOME_PENDING,
|
|
265
|
-
because: 'a write returned 202 Accepted, so the server has not finished processing it — this window cannot contain the outcome; re-check once it reconciles',
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
// A write answered 2xx and its payload went unread, so the one channel that could contradict the
|
|
269
|
-
// screen was never opened. Reporting `yes` here means "no channel disagreed" — true only because a
|
|
270
|
-
// channel was closed. Measured on a shipments console: `POST /api/bulk-hold` → 200 with three of
|
|
271
|
-
// nine items failed inside the body, banner reading "9 shipments held", verdict `yes`.
|
|
272
|
-
//
|
|
273
|
-
// UNKNOWN, not NO: nothing is known to have failed. The remedy is in the sentence, because an
|
|
274
|
-
// agent that cannot act on a caveat will learn to skip it.
|
|
275
|
-
//
|
|
276
|
-
// Skipped when the caller declared a consequence that does not depend on the body and it held.
|
|
277
|
-
// The clause was written for the body being the ONLY remaining channel; a unique row on screen, a
|
|
278
|
-
// store path, or a signal that held is a different channel, and grading unknown there cost a real
|
|
279
|
-
// verdict (a 201 plus the exact message text, agent went to enable capture instead of finishing).
|
|
280
|
-
// The unread write still rides out in `because`. A net-only declaration does not skip: then the
|
|
281
|
-
// body is still the remaining channel.
|
|
282
|
-
const unreadHeldIndependently = declaredHeld && true === inputs.independentOfBody;
|
|
283
|
-
if (outcomeUnread !== undefined && outcomeUnread.length > 0 && !unreadHeldIndependently) {
|
|
284
|
-
return {
|
|
285
|
-
verified: Verified.UNKNOWN,
|
|
286
|
-
verifiedReason: VerifiedReason.OUTCOME_UNREAD,
|
|
287
|
-
because: `a write returned 2xx with a response body that was never recorded (${outcomeUnread.join('; ')}), so its outcome is unread` +
|
|
288
|
-
' — a 200 describes the transport, not the result (a batch reports per-item failures in the body, and every GraphQL error is a 200). ' +
|
|
289
|
-
bodyCaptureRemedy(inputs.sdkVersion),
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
// Never settled: the page may still be moving, so the observation window may have closed early.
|
|
293
|
-
//
|
|
294
|
-
// Skipped when the caller DECLARED the consequence and it held. `settled` here is "a real
|
|
295
|
-
// animation frame fired within the budget", which a hidden or throttled tab never does — and a
|
|
296
|
-
// hidden tab is the ordinary case for agent-driven verification. It is corroboration; it is not
|
|
297
|
-
// the claim. It is still reported: `honesty.settled` carries the fact, and the sentence below says
|
|
298
|
-
// so in words.
|
|
299
|
-
if (false === settled && !declaredHeld) {
|
|
300
|
-
return {
|
|
301
|
-
verified: Verified.UNKNOWN,
|
|
302
|
-
verifiedReason: VerifiedReason.UNSETTLED,
|
|
303
|
-
because: unsettledBecause('the page never settled, so the reaction window may have closed before the app finished', inputs.unsettled),
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
// Partial coverage is a real caveat but not a blocker — it is reported in `honesty.coverage` and
|
|
307
|
-
// does not by itself make a graded, clean, uncontradicted pass untrustworthy.
|
|
308
|
-
//
|
|
309
|
-
// It must not be described as clean, though. This sentence said "over a clean capture" regardless,
|
|
310
|
-
// so a verdict could read `verified: yes ... over a clean capture` directly beside `coverage:
|
|
311
|
-
// partial` — the prose contradicting the evidence block next to it. Whichever a reader believes,
|
|
312
|
-
// one of them lied, and the whole point of this layer is that the sentence can be trusted on its
|
|
313
|
-
// own. Seen on a one-way IPC send: coverage said the outcome was unobservable, `because` said clean.
|
|
314
|
-
// A green that rests on the declaration rather than on idle says so. The page not going quiet is a
|
|
315
|
-
// real fact about the app — a poll, a timer, a throttled tab — and a caller who cares must be able
|
|
316
|
-
// to see it without re-deriving it, so it is stated here and carried in `honesty.settled`.
|
|
317
|
-
const notIdle = false === settled
|
|
318
|
-
? ', though the page never went idle — this rests on the consequence you declared, not on the page going quiet'
|
|
319
|
-
: '';
|
|
320
|
-
const unreadCaveat = unreadHeldIndependently && outcomeUnread !== undefined && outcomeUnread.length > 0
|
|
321
|
-
? `, though a write returned 2xx with a response body that was never recorded (${outcomeUnread.join('; ')}) — a 200 describes the transport, not the result`
|
|
322
|
-
: '';
|
|
323
|
-
return {
|
|
324
|
-
verified: Verified.YES,
|
|
325
|
-
verifiedReason: VerifiedReason.PROVED,
|
|
326
|
-
because: true === honesty.coverage?.partial
|
|
327
|
-
? `assertion held at ${honesty.grade} grade with no channel disagreeing, but coverage was PARTIAL — see \`coverage\` for what went unobserved${notIdle}${unreadCaveat}`
|
|
328
|
-
: `assertion held at ${honesty.grade} grade over a clean capture with no channel disagreeing${notIdle}${unreadCaveat}`,
|
|
329
|
-
};
|
|
330
|
-
}
|