@reticlehq/server 2.14.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +54 -136
- package/bin/reticle.js +1 -1
- package/dist/command/cli/adhoc-verdict.d.ts +64 -0
- package/dist/command/cli/adhoc-verdict.js +144 -0
- package/dist/command/cli/answers/status-next-action.d.ts +61 -0
- package/dist/command/cli/answers/status-next-action.js +84 -0
- package/dist/command/cli/auth/cloud-keystore.js +97 -0
- package/dist/command/cli/auth/device-flow.d.ts +76 -0
- package/dist/command/cli/auth/device-flow.js +56 -0
- package/dist/command/cli/cli-doctor.js +215 -0
- package/dist/command/cli/cli-flow-commands.d.ts +47 -0
- package/dist/command/cli/cli-flow-commands.js +255 -0
- package/dist/command/cli/cli-kill.d.ts +59 -0
- package/dist/command/cli/cli-kill.js +162 -0
- package/dist/command/cli/cli-parse-grammar.d.ts +29 -0
- package/dist/command/cli/cli-parse-grammar.js +39 -0
- package/dist/command/cli/cli-parse-verify.d.ts +22 -0
- package/dist/command/cli/cli-parse-verify.js +143 -0
- package/dist/command/cli/cli-parse.d.ts +193 -0
- package/dist/command/cli/cli-parse.js +833 -0
- package/dist/command/cli/cli-update-commands.js +112 -0
- package/dist/command/cli/cli-verify.d.ts +124 -0
- package/dist/command/cli/cli-verify.js +426 -0
- package/dist/command/cli/cloud-cli.js +694 -0
- package/dist/command/cli/cloud-kit.d.ts +37 -0
- package/dist/command/cli/cloud-kit.js +117 -0
- package/dist/command/cli/cloud-login.js +183 -0
- package/dist/command/cli/config/config-discovery.d.ts +48 -0
- package/dist/command/cli/config/config-discovery.js +183 -0
- package/dist/command/cli/daemon-start-options.d.ts +33 -0
- package/dist/command/cli/demo/demo-page.d.ts +78 -0
- package/dist/command/cli/demo/demo-page.js +238 -0
- package/dist/command/cli/demo/demo-run.d.ts +38 -0
- package/dist/command/cli/demo/demo-run.js +138 -0
- package/dist/command/cli/doctor/doctor-daemon-line.js +47 -0
- package/dist/command/cli/doctor/doctor-rows.d.ts +75 -0
- package/dist/command/cli/doctor/doctor-rows.js +77 -0
- package/dist/command/cli/doctor/doctor-sessions-line.js +69 -0
- package/dist/command/cli/drive/drive-attach.d.ts +113 -0
- package/dist/command/cli/drive/drive-attach.js +221 -0
- package/dist/command/cli/drive/drive-command.js +107 -0
- package/dist/command/cli/launch/cli-launch.d.ts +100 -0
- package/dist/command/cli/launch/cli-launch.js +216 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.d.ts +33 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +198 -0
- package/dist/command/cli/mcp-command.js +176 -0
- package/dist/command/cli/ports/port-holder.js +123 -0
- package/dist/command/cli/ports/resolve/cli-port.d.ts +71 -0
- package/dist/command/cli/ports/resolve/cli-port.js +140 -0
- package/dist/command/cli/setup-mcp-cli.d.ts +29 -0
- package/dist/command/cli/setup-mcp-cli.js +107 -0
- package/dist/command/cli/status/status-lines.d.ts +28 -0
- package/dist/command/cli/status/status-lines.js +117 -0
- package/dist/command/cli/status-fields.d.ts +28 -0
- package/dist/command/cli/status-fields.js +29 -0
- package/dist/command/cli/tutorial.d.ts +116 -0
- package/dist/command/cli/tutorial.js +189 -0
- package/dist/command/cli-onboarding.d.ts +21 -0
- package/dist/command/cli-onboarding.js +27 -0
- package/dist/command/cli.d.ts +6 -0
- package/dist/command/cli.js +710 -0
- package/dist/command/daemon/binding/daemon-status-probe.d.ts +2 -0
- package/dist/command/daemon/binding/daemon-status-probe.js +48 -0
- package/dist/command/daemon/binding/loopback-reach.d.ts +42 -0
- package/dist/command/daemon/binding/loopback-reach.js +63 -0
- package/dist/command/daemon/daemon-resilience.d.ts +86 -0
- package/dist/command/daemon/daemon-resilience.js +339 -0
- package/dist/command/daemon/daemon-resolve.d.ts +113 -0
- package/dist/command/daemon/daemon-resolve.js +187 -0
- package/dist/command/daemon/daemon.d.ts +86 -0
- package/dist/command/daemon/daemon.js +333 -0
- package/dist/command/daemon/idle-shutdown.d.ts +54 -0
- package/dist/command/daemon/idle-shutdown.js +98 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.d.ts +60 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.js +61 -0
- package/dist/command/daemon/lifetime/heartbeat.d.ts +119 -0
- package/dist/command/daemon/lifetime/heartbeat.js +151 -0
- package/dist/command/daemon/lifetime/idle-grace.d.ts +32 -0
- package/dist/command/daemon/lifetime/idle-grace.js +41 -0
- package/dist/command/daemon/lifetime/log-cap.d.ts +68 -0
- package/dist/command/daemon/lifetime/log-cap.js +115 -0
- package/dist/command/daemon/state-dir.js +59 -0
- package/dist/command/daemon/wake-decision.d.ts +32 -0
- package/dist/command/daemon/wake-decision.js +38 -0
- package/dist/command/dev/stale-issue-guard.d.ts +35 -0
- package/dist/command/dev/stale-issue-guard.js +69 -0
- package/dist/command/setup/agent-configs.d.ts +111 -0
- package/dist/command/setup/agent-configs.js +365 -0
- package/dist/command/setup/agent-notice-memory.d.ts +16 -0
- package/dist/command/setup/agent-notice-memory.js +65 -0
- package/dist/command/setup/agent-writer.d.ts +52 -0
- package/dist/command/setup/agent-writer.js +116 -0
- package/dist/command/setup/auto-approve.js +153 -0
- package/dist/command/setup/bringup/bridge-port.d.ts +15 -0
- package/dist/command/setup/bringup/bridge-port.js +24 -0
- package/dist/command/setup/bringup/dev-server-wait.d.ts +69 -0
- package/dist/command/setup/bringup/dev-server-wait.js +83 -0
- package/dist/command/setup/bringup/ensure-daemon.js +58 -0
- package/dist/command/setup/init/init-host.js +37 -0
- package/dist/command/setup/init/init-runtime.d.ts +39 -0
- package/dist/command/setup/init/init-runtime.js +168 -0
- package/dist/command/setup/node-effects.d.ts +63 -0
- package/dist/command/setup/node-effects.js +225 -0
- package/dist/command/setup/probe/page-probe.d.ts +71 -0
- package/dist/command/setup/probe/page-probe.js +89 -0
- package/dist/command/setup/remaining-steps.js +53 -0
- package/dist/command/setup/run-setup.d.ts +123 -0
- package/dist/command/setup/run-setup.js +316 -0
- package/dist/command/setup/setup-command.d.ts +48 -0
- package/dist/command/setup/setup-command.js +224 -0
- package/dist/command/setup/setup-install.d.ts +18 -0
- package/dist/command/setup/setup-install.js +40 -0
- package/dist/command/setup/setup-mcp.d.ts +57 -0
- package/dist/command/setup/setup-mcp.js +92 -0
- package/dist/command/setup/setup-options.d.ts +66 -0
- package/dist/command/setup/setup-options.js +63 -0
- package/dist/command/setup/terminal/confirm.js +206 -0
- package/dist/command/setup/terminal/crash.d.ts +55 -0
- package/dist/command/setup/terminal/crash.js +74 -0
- package/dist/command/update/nudge-credit.js +53 -0
- package/dist/command/update/sdk-sync.d.ts +20 -0
- package/dist/command/update/sdk-sync.js +22 -0
- package/dist/command/update/update-checker.js +122 -0
- package/dist/command/update/update-nudge.d.ts +90 -0
- package/dist/command/update/update-nudge.js +211 -0
- package/dist/command/update/updater.d.ts +81 -0
- package/dist/command/update/updater.js +223 -0
- package/dist/command/version/identity/server-version.js +50 -0
- package/dist/command/version/peer-announce.js +32 -0
- package/dist/command/version/sdk-fix.js +127 -0
- package/dist/command/version/version-nudge.js +61 -0
- package/dist/command/version/version-skew.d.ts +113 -0
- package/dist/command/version/version-skew.js +192 -0
- package/dist/features/crawl/crawl-tools.d.ts +7 -0
- package/dist/features/crawl/crawl-tools.js +89 -0
- package/dist/features/crawl/crawl.d.ts +98 -0
- package/dist/features/crawl/crawl.js +444 -0
- package/dist/features/ee/audit-log.js +11 -0
- package/dist/features/harness/drive-report.d.ts +73 -0
- package/dist/features/harness/drive-report.js +196 -0
- package/dist/features/harness/driver.d.ts +50 -0
- package/dist/features/harness/driver.js +239 -0
- package/dist/features/harness/drivers.d.ts +19 -0
- package/dist/features/harness/drivers.js +19 -0
- package/dist/features/harness/fill-values.d.ts +67 -0
- package/dist/features/harness/fill-values.js +153 -0
- package/dist/features/harness/harness.d.ts +159 -0
- package/dist/features/harness/harness.js +203 -0
- package/dist/features/harness/jev-driver.d.ts +188 -0
- package/dist/features/harness/jev-driver.js +664 -0
- package/dist/features/harness/openai-driver.d.ts +46 -0
- package/dist/features/harness/openai-driver.js +197 -0
- package/dist/features/harness/platform-config.d.ts +52 -0
- package/dist/features/harness/platform-config.js +89 -0
- package/dist/features/harness/with-timeout.d.ts +18 -0
- package/dist/features/harness/with-timeout.js +34 -0
- package/dist/features/license/license-env.d.ts +24 -0
- package/dist/features/license/license-env.js +140 -0
- package/dist/features/license/license.d.ts +161 -0
- package/dist/features/license/license.js +287 -0
- package/dist/features/visual/visual-store.d.ts +22 -0
- package/dist/features/visual/visual-store.js +66 -0
- package/dist/features/visual/visual-tools.d.ts +26 -0
- package/dist/features/visual/visual-tools.js +352 -0
- package/dist/hooks/hook-bus.d.ts +53 -0
- package/dist/hooks/hook-bus.js +106 -0
- package/dist/hooks/hook-commands.d.ts +59 -0
- package/dist/hooks/hook-commands.js +184 -0
- package/dist/hooks/hook-emit.d.ts +44 -0
- package/dist/hooks/hook-emit.js +85 -0
- package/dist/import-graph.d.ts +48 -0
- package/dist/import-graph.js +106 -0
- package/dist/index.d.ts +91 -125
- package/dist/index.js +250 -160
- package/dist/judgement/capsule/capsule-store.d.ts +70 -0
- package/dist/judgement/capsule/capsule-store.js +113 -0
- package/dist/judgement/capsule/capsule.d.ts +42 -0
- package/dist/judgement/capsule/capsule.js +73 -0
- package/dist/judgement/capsule/causal-summary.d.ts +119 -0
- package/dist/judgement/capsule/causal-summary.js +172 -0
- package/dist/judgement/capsule/divergence.d.ts +26 -0
- package/dist/judgement/domain/domain-model.js +126 -0
- package/dist/judgement/domain/domain-tools.d.ts +2 -0
- package/dist/judgement/domain/domain-tools.js +96 -0
- package/dist/judgement/domain/flow-risk.js +80 -0
- package/dist/judgement/oracles/propose-consequences.d.ts +22 -0
- package/dist/judgement/oracles/propose-consequences.js +106 -0
- package/dist/judgement/outcome/predicate-to-expect.d.ts +44 -0
- package/dist/judgement/outcome/predicate-to-expect.js +148 -0
- package/dist/judgement/runs/artifact/build-verification-run.d.ts +34 -0
- package/dist/judgement/runs/artifact/build-verification-run.js +83 -0
- package/dist/judgement/runs/artifact/render-report.js +84 -0
- package/dist/judgement/runs/artifact/replay-mapping.js +34 -0
- package/dist/judgement/runs/artifact/run-store.d.ts +54 -0
- package/dist/judgement/runs/artifact/run-store.js +150 -0
- package/dist/judgement/runs/artifact/to-artifact.d.ts +119 -0
- package/dist/judgement/runs/artifact/to-artifact.js +83 -0
- package/dist/judgement/runs/context-tools.d.ts +2 -0
- package/dist/judgement/runs/context-tools.js +70 -0
- package/dist/judgement/runs/default-run-id.d.ts +8 -0
- package/dist/judgement/runs/default-run-id.js +11 -0
- package/dist/judgement/runs/drive-run.d.ts +61 -0
- package/dist/judgement/runs/drive-run.js +130 -0
- package/dist/judgement/runs/late-answer.d.ts +55 -0
- package/dist/judgement/runs/late-answer.js +81 -0
- package/dist/judgement/runs/reticle-runner.d.ts +60 -0
- package/dist/judgement/runs/reticle-runner.js +95 -0
- package/dist/judgement/runs/run-tools.d.ts +17 -0
- package/dist/judgement/runs/run-tools.js +97 -0
- package/dist/judgement/runs/runner-port.d.ts +11 -0
- package/dist/judgement/runs/runner-port.js +18 -0
- package/dist/judgement/runs/verification-sync.d.ts +13 -0
- package/dist/judgement/runs/verification-sync.js +93 -0
- package/dist/language/flows/affected-tools.d.ts +18 -0
- package/dist/language/flows/affected-tools.js +83 -0
- package/dist/language/flows/annotate-tools.d.ts +15 -0
- package/dist/language/flows/annotate-tools.js +179 -0
- package/dist/language/flows/change/affected.d.ts +24 -0
- package/dist/language/flows/change/affected.js +35 -0
- package/dist/language/flows/change/flow-sources.d.ts +19 -0
- package/dist/language/flows/change/flow-sources.js +55 -0
- package/dist/language/flows/change/gate.js +33 -0
- package/dist/language/flows/decision.d.ts +45 -0
- package/dist/language/flows/decision.js +371 -0
- package/dist/language/flows/empty-flow.js +24 -0
- package/dist/language/flows/fields/flow-secret-field.d.ts +53 -0
- package/dist/language/flows/fields/flow-secret-field.js +75 -0
- package/dist/language/flows/fields/flow-upload-resolve.d.ts +23 -0
- package/dist/language/flows/fields/flow-upload-resolve.js +46 -0
- package/dist/language/flows/flow-anchor.d.ts +59 -0
- package/dist/language/flows/flow-anchor.js +240 -0
- package/dist/language/flows/flow-classify.d.ts +73 -0
- package/dist/language/flows/flow-classify.js +146 -0
- package/dist/language/flows/flow-expect-grammar.d.ts +33 -0
- package/dist/language/flows/flow-expect-grammar.js +155 -0
- package/dist/language/flows/flow-intent.d.ts +52 -0
- package/dist/language/flows/flow-intent.js +123 -0
- package/dist/language/flows/flow-learning.d.ts +52 -0
- package/dist/language/flows/flow-learning.js +76 -0
- package/dist/language/flows/flow-mutate-tools.d.ts +14 -0
- package/dist/language/flows/flow-mutate-tools.js +82 -0
- package/dist/language/flows/flow-replay-run.d.ts +91 -0
- package/dist/language/flows/flow-replay-run.js +748 -0
- package/dist/language/flows/flow-replay-types.d.ts +37 -0
- package/dist/language/flows/flow-replay-types.js +1 -0
- package/dist/language/flows/flow-replay.d.ts +91 -0
- package/dist/language/flows/flow-replay.js +487 -0
- package/dist/language/flows/flow-result.d.ts +35 -0
- package/dist/language/flows/flow-result.js +26 -0
- package/dist/language/flows/flow-step-runners.d.ts +54 -0
- package/dist/language/flows/flow-step-runners.js +369 -0
- package/dist/language/flows/flow-store-for-session.d.ts +32 -0
- package/dist/language/flows/flow-success.d.ts +32 -0
- package/dist/language/flows/flow-success.js +181 -0
- package/dist/language/flows/flow-tools.d.ts +15 -0
- package/dist/language/flows/flow-tools.js +842 -0
- package/dist/language/flows/flows.d.ts +114 -0
- package/dist/language/flows/flows.js +492 -0
- package/dist/language/flows/heal-precondition.d.ts +28 -0
- package/dist/language/flows/heal-precondition.js +38 -0
- package/dist/language/flows/heal-run.d.ts +17 -0
- package/dist/language/flows/heal-run.js +186 -0
- package/dist/language/flows/heal.js +97 -0
- package/dist/language/flows/mutation-run.d.ts +33 -0
- package/dist/language/flows/mutation-run.js +60 -0
- package/dist/language/flows/narrow-write.d.ts +32 -0
- package/dist/language/flows/narrow-write.js +26 -0
- package/dist/language/flows/recording/flake.d.ts +56 -0
- package/dist/language/flows/recording/recording-backtrack.js +73 -0
- package/dist/language/flows/recording/tape/recordings.d.ts +134 -0
- package/dist/language/flows/recording/tape/recordings.js +144 -0
- package/dist/language/flows/replay.d.ts +83 -0
- package/dist/language/flows/replay.js +397 -0
- package/dist/language/flows/role-anchor-nearest.js +45 -0
- package/dist/language/flows/stores/assertion-tiers-store.d.ts +26 -0
- package/dist/language/flows/stores/assertion-tiers-store.js +107 -0
- package/dist/language/flows/stores/flake-store.d.ts +18 -0
- package/dist/language/flows/stores/flake-store.js +58 -0
- package/dist/language/flows/suite/server-verify.d.ts +15 -0
- package/dist/language/flows/suite/server-verify.js +56 -0
- package/dist/language/flows/suite/suite-flakes.d.ts +34 -0
- package/dist/language/flows/suite/suite-flakes.js +32 -0
- package/dist/language/flows/suite-selection.d.ts +45 -0
- package/dist/language/flows/suite-selection.js +84 -0
- package/dist/language/flows/verify-change-tools.d.ts +2 -0
- package/dist/language/flows/verify-change-tools.js +244 -0
- package/dist/machine/clock.d.ts +24 -0
- package/dist/machine/clock.js +1 -0
- package/dist/machine/repo-root.d.ts +16 -0
- package/dist/machine/repo-root.js +20 -0
- package/dist/memory/cloud/account-state.d.ts +20 -0
- package/dist/memory/cloud/account-state.js +70 -0
- package/dist/memory/cloud/cloud-config.d.ts +79 -0
- package/dist/memory/cloud/cloud-config.js +156 -0
- package/dist/memory/cloud/cloud-sync.d.ts +195 -0
- package/dist/memory/cloud/cloud-sync.js +359 -0
- package/dist/memory/cloud/harness-config.d.ts +10 -0
- package/dist/memory/cloud/harness-config.js +58 -0
- package/dist/memory/cloud/harness-offer.d.ts +44 -0
- package/dist/memory/cloud/harness-offer.js +146 -0
- package/dist/memory/cloud/harness-switch.d.ts +11 -0
- package/dist/memory/cloud/harness-switch.js +53 -0
- package/dist/memory/cloud/sync-cycle.d.ts +121 -0
- package/dist/memory/cloud/sync-cycle.js +295 -0
- package/dist/memory/cloud/sync-daemon.d.ts +73 -0
- package/dist/memory/cloud/sync-daemon.js +297 -0
- package/dist/memory/cloud/sync-disk.js +193 -0
- package/dist/memory/impact/impact-recorder.d.ts +54 -0
- package/dist/memory/impact/impact-recorder.js +160 -0
- package/dist/memory/impact/impact-store.d.ts +52 -0
- package/dist/memory/impact/impact-store.js +274 -0
- package/dist/memory/intent/inline-intent.d.ts +60 -0
- package/dist/memory/intent/inline-intent.js +206 -0
- package/dist/memory/intent/intent-shard-store.d.ts +87 -0
- package/dist/memory/intent/intent-shard-store.js +215 -0
- package/dist/memory/intent/intent-shard.d.ts +389 -0
- package/dist/memory/intent/intent-shard.js +153 -0
- package/dist/memory/intent/intent-store.d.ts +47 -0
- package/dist/memory/intent/intent-store.js +133 -0
- package/dist/memory/intent/intent-subject.d.ts +46 -0
- package/dist/memory/intent/intent-subject.js +175 -0
- package/dist/memory/intent/intent-tools.d.ts +2 -0
- package/dist/memory/intent/intent-tools.js +157 -0
- package/dist/memory/intent/open-intents.d.ts +36 -0
- package/dist/memory/intent/open-intents.js +58 -0
- package/dist/memory/journal/ambient-store.d.ts +13 -0
- package/dist/memory/journal/ambient-store.js +52 -0
- package/dist/memory/journal/attach-journal.d.ts +37 -0
- package/dist/memory/journal/attach-journal.js +26 -0
- package/dist/memory/journal/drive-flow.d.ts +74 -0
- package/dist/memory/journal/drive-flow.js +157 -0
- package/dist/memory/journal/drive-run-flush.d.ts +42 -0
- package/dist/memory/journal/drive-run-flush.js +82 -0
- package/dist/memory/journal/envelope-store.d.ts +16 -0
- package/dist/memory/journal/envelope-store.js +61 -0
- package/dist/memory/journal/envelope.d.ts +230 -0
- package/dist/memory/journal/journal-query.d.ts +66 -0
- package/dist/memory/journal/journal-query.js +98 -0
- package/dist/memory/journal/journal-recorder.d.ts +109 -0
- package/dist/memory/journal/journal-recorder.js +153 -0
- package/dist/memory/journal/on-disk/ambient-file.d.ts +21 -0
- package/dist/memory/journal/on-disk/ambient-file.js +15 -0
- package/dist/memory/journal/on-disk/retention.d.ts +141 -0
- package/dist/memory/journal/on-disk/retention.js +291 -0
- package/dist/memory/journal/on-disk/workspace-gitignore.d.ts +21 -0
- package/dist/memory/journal/on-disk/workspace-gitignore.js +93 -0
- package/dist/memory/journal/self-observation.d.ts +3 -0
- package/dist/memory/journal/self-observation.js +67 -0
- package/dist/memory/journal/session-end.d.ts +112 -0
- package/dist/memory/journal/session-end.js +179 -0
- package/dist/memory/journal/session-journal.d.ts +134 -0
- package/dist/memory/journal/session-journal.js +614 -0
- package/dist/memory/project/artifact-root-resolver.d.ts +3 -0
- package/dist/memory/project/artifact-root-resolver.js +89 -0
- package/dist/memory/project/artifact-root.d.ts +109 -0
- package/dist/memory/project/artifact-root.js +157 -0
- package/dist/memory/project/dir/fill-value-store.d.ts +32 -0
- package/dist/memory/project/dir/fill-value-store.js +88 -0
- package/dist/memory/project/dir/reticle-dir.d.ts +139 -0
- package/dist/memory/project/dir/reticle-dir.js +229 -0
- package/dist/memory/project/fs/fs-port.d.ts +68 -0
- package/dist/memory/project/fs/fs-port.js +82 -0
- package/dist/memory/project/learned-routes.d.ts +38 -0
- package/dist/memory/project/learned-routes.js +79 -0
- package/dist/memory/project/memory-fs.d.ts +10 -0
- package/dist/memory/project/project-for-root.d.ts +30 -0
- package/dist/memory/project/project-for-root.js +43 -0
- package/dist/memory/project/project-store.d.ts +54 -0
- package/dist/memory/project/project-store.js +244 -0
- package/dist/memory/project/project-tools.d.ts +8 -0
- package/dist/memory/project/project-tools.js +160 -0
- package/dist/memory/project/reticle-deps.d.ts +15 -0
- package/dist/memory/project/reticle-deps.js +33 -0
- package/dist/memory/project/session-root.d.ts +52 -0
- package/dist/memory/project/session-root.js +100 -0
- package/dist/memory/recall/memory-tools.d.ts +2 -0
- package/dist/memory/recall/memory-tools.js +81 -0
- package/dist/memory/recall/prior/connection-memory.d.ts +65 -0
- package/dist/memory/recall/prior/connection-memory.js +114 -0
- package/dist/memory/recall/project-memory.d.ts +33 -0
- package/dist/portal/bridge/auth-failure-reason.d.ts +32 -0
- package/dist/portal/bridge/auth-failure-reason.js +68 -0
- package/dist/portal/bridge/bridge-security.d.ts +30 -0
- package/dist/portal/bridge/bridge-security.js +53 -0
- package/dist/portal/bridge/bridge.d.ts +109 -0
- package/dist/portal/bridge/bridge.js +808 -0
- package/dist/portal/input/drive-url-stamp.d.ts +14 -0
- package/dist/portal/input/drive-url-stamp.js +33 -0
- package/dist/portal/input/network-detail.d.ts +97 -0
- package/dist/portal/input/network-detail.js +138 -0
- package/dist/portal/input/network-mock-tools.d.ts +21 -0
- package/dist/portal/input/network-mock-tools.js +124 -0
- package/dist/portal/input/network-mock.js +83 -0
- package/dist/portal/input/network-mutation.d.ts +47 -0
- package/dist/portal/input/network-mutation.js +53 -0
- package/dist/portal/input/real-input.d.ts +261 -0
- package/dist/portal/input/real-input.js +488 -0
- package/dist/portal/input/scroll-find.js +111 -0
- package/dist/portal/input/scroll-tools.d.ts +2 -0
- package/dist/portal/input/scroll-tools.js +76 -0
- package/dist/portal/input/storage-fixture.d.ts +57 -0
- package/dist/portal/input/storage-fixture.js +92 -0
- package/dist/portal/input/viewport-tools.d.ts +2 -0
- package/dist/portal/input/viewport-tools.js +72 -0
- package/dist/portal/pool/browser-pool.d.ts +174 -0
- package/dist/portal/pool/browser-pool.js +559 -0
- package/dist/portal/pool/lease-reaper.js +40 -0
- package/dist/portal/pool/playwright-launcher.js +150 -0
- package/dist/portal/pool/pool-contract.d.ts +116 -0
- package/dist/portal/pool/pool-contract.js +8 -0
- package/dist/portal/pool/storage-seed.d.ts +23 -0
- package/dist/portal/realm/conformance-client.d.ts +43 -0
- package/dist/portal/realm/conformance-client.js +227 -0
- package/dist/portal/realm/http-witness.d.ts +48 -0
- package/dist/portal/realm/http-witness.js +135 -0
- package/dist/portal/realm/web-realm.d.ts +225 -0
- package/dist/portal/realm/web-realm.js +661 -0
- package/dist/portal/session/daemon-answers.d.ts +20 -0
- package/dist/portal/session/daemon-answers.js +20 -0
- package/dist/portal/session/dev-server/dev-server-probe.js +147 -0
- package/dist/portal/session/facts/handshake-facts.d.ts +56 -0
- package/dist/portal/session/facts/handshake-facts.js +1 -0
- package/dist/portal/session/facts/observed-state.d.ts +60 -0
- package/dist/portal/session/facts/observed-state.js +121 -0
- package/dist/portal/session/facts/session-replaced.d.ts +43 -0
- package/dist/portal/session/facts/session-replaced.js +51 -0
- package/dist/portal/session/live-control-tools.d.ts +15 -0
- package/dist/portal/session/live-control-tools.js +242 -0
- package/dist/portal/session/no-session-diagnosis.d.ts +176 -0
- package/dist/portal/session/no-session-diagnosis.js +457 -0
- package/dist/portal/session/no-session-next-action.d.ts +76 -0
- package/dist/portal/session/no-session-next-action.js +211 -0
- package/dist/portal/session/no-session-watch.js +351 -0
- package/dist/portal/session/output-budget.d.ts +82 -0
- package/dist/portal/session/output-budget.js +108 -0
- package/dist/portal/session/page-commands/undeclared-command.d.ts +30 -0
- package/dist/portal/session/page-commands/undeclared-command.js +44 -0
- package/dist/portal/session/presence/session-recommendation.js +29 -0
- package/dist/portal/session/rebind.d.ts +18 -0
- package/dist/portal/session/rebind.js +38 -0
- package/dist/portal/session/session-health.d.ts +145 -0
- package/dist/portal/session/session-health.js +154 -0
- package/dist/portal/session/session-manager.d.ts +81 -0
- package/dist/portal/session/session-manager.js +504 -0
- package/dist/portal/session/session-reaper.d.ts +36 -0
- package/dist/portal/session/session-reaper.js +93 -0
- package/dist/portal/session/session-tools.d.ts +8 -0
- package/dist/portal/session/session-tools.js +42 -0
- package/dist/portal/session/session.d.ts +279 -0
- package/dist/portal/session/session.js +875 -0
- package/dist/portal/session/stall-clock.js +48 -0
- package/dist/portal/session/timing/command-timeout.d.ts +40 -0
- package/dist/portal/session/timing/command-timeout.js +42 -0
- package/dist/start-options.d.ts +51 -0
- package/dist/start-options.js +7 -0
- package/dist/status-payload.d.ts +16 -10
- package/dist/status-payload.js +5 -2
- package/dist/surface/http-server.d.ts +52 -0
- package/dist/surface/http-server.js +379 -0
- package/dist/surface/mcp/consumer-verdict-guard.d.ts +40 -0
- package/dist/surface/mcp/consumer-verdict-guard.js +57 -0
- package/dist/surface/mcp/faults/mcp-is-error.d.ts +13 -0
- package/dist/surface/mcp/faults/mcp-is-error.js +18 -0
- package/dist/surface/mcp/faults/mcp-outage.d.ts +33 -0
- package/dist/surface/mcp/faults/mcp-outage.js +71 -0
- package/dist/surface/mcp/mcp-proxy.d.ts +119 -0
- package/dist/surface/mcp/mcp-proxy.js +882 -0
- package/dist/surface/mcp/mcp.d.ts +89 -0
- package/dist/surface/mcp/mcp.js +676 -0
- package/dist/surface/mcp/proxy/mcp-post-transport.js +109 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.d.ts +22 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.js +71 -0
- package/dist/surface/mcp/proxy/proxy-handshake.js +192 -0
- package/dist/surface/mcp/proxy/proxy-lifecycle.d.ts +90 -0
- package/dist/surface/mcp/proxy/proxy-lifecycle.js +98 -0
- package/dist/surface/mcp/proxy/proxy-log.d.ts +57 -0
- package/dist/surface/mcp/proxy/proxy-log.js +117 -0
- package/dist/surface/mcp/server-instructions.d.ts +26 -0
- package/dist/surface/mcp/server-instructions.js +156 -0
- package/dist/surface/mcp/surface-vocabulary.d.ts +47 -0
- package/dist/surface/mcp/surface-vocabulary.js +56 -0
- package/dist/surface/mcp/tool-catalog-cache.d.ts +45 -0
- package/dist/surface/mcp/tool-catalog-cache.js +77 -0
- package/dist/surface/tools/act/act-danger.js +69 -0
- package/dist/surface/tools/act/act-helpers.d.ts +17 -0
- package/dist/surface/tools/act/act-helpers.js +40 -0
- package/dist/surface/tools/act/act-observation.d.ts +42 -0
- package/dist/surface/tools/act/act-observation.js +36 -0
- package/dist/surface/tools/act/act-preflight.d.ts +27 -0
- package/dist/surface/tools/act/act-preflight.js +168 -0
- package/dist/surface/tools/act/act-target.d.ts +10 -0
- package/dist/surface/tools/act/act-target.js +100 -0
- package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +68 -0
- package/dist/surface/tools/act/resolve-target.js +115 -0
- package/dist/surface/tools/act/sequence-grade.d.ts +79 -0
- package/dist/surface/tools/act/sequence-grade.js +104 -0
- package/dist/surface/tools/act-capsule.d.ts +33 -0
- package/dist/surface/tools/act-capsule.js +79 -0
- package/dist/surface/tools/act-merged.d.ts +20 -0
- package/dist/surface/tools/act-merged.js +53 -0
- package/dist/surface/tools/act-sequence-tool.js +330 -0
- package/dist/surface/tools/act-tools.d.ts +24 -0
- package/dist/surface/tools/act-tools.js +835 -0
- package/dist/surface/tools/args/numeric-bounds.d.ts +97 -0
- package/dist/surface/tools/args/numeric-bounds.js +133 -0
- package/dist/surface/tools/assert/assert-grade.d.ts +42 -0
- package/dist/surface/tools/assert/assert-grade.js +125 -0
- package/dist/surface/tools/assert/assert-source.d.ts +52 -0
- package/dist/surface/tools/assert/assert-source.js +74 -0
- package/dist/surface/tools/assert/assert-verdict.d.ts +48 -0
- package/dist/surface/tools/assert/assert-verdict.js +247 -0
- package/dist/surface/tools/browser-tools.d.ts +2 -0
- package/dist/surface/tools/browser-tools.js +115 -0
- package/dist/surface/tools/contract-tools.d.ts +2 -0
- package/dist/surface/tools/contract-tools.js +112 -0
- package/dist/surface/tools/coverage-tools.d.ts +18 -0
- package/dist/surface/tools/coverage-tools.js +178 -0
- package/dist/surface/tools/dynamic-tools.d.ts +17 -0
- package/dist/surface/tools/dynamic-tools.js +282 -0
- package/dist/surface/tools/error-recovery.d.ts +116 -0
- package/dist/surface/tools/error-recovery.js +527 -0
- package/dist/surface/tools/explore-tools.d.ts +14 -0
- package/dist/surface/tools/explore-tools.js +162 -0
- package/dist/surface/tools/feature-capture.d.ts +151 -0
- package/dist/surface/tools/feature-capture.js +235 -0
- package/dist/surface/tools/feedback-invite.d.ts +48 -0
- package/dist/surface/tools/feedback-invite.js +71 -0
- package/dist/surface/tools/feedback-tools.d.ts +35 -0
- package/dist/surface/tools/feedback-tools.js +280 -0
- package/dist/surface/tools/first-sentence.d.ts +24 -0
- package/dist/surface/tools/first-sentence.js +0 -0
- package/dist/surface/tools/gap-novelty.d.ts +39 -0
- package/dist/surface/tools/gap-novelty.js +69 -0
- package/dist/surface/tools/gaps/capability-absences.d.ts +39 -0
- package/dist/surface/tools/gaps/capability-absences.js +46 -0
- package/dist/surface/tools/harness-explore.d.ts +177 -0
- package/dist/surface/tools/harness-explore.js +453 -0
- package/dist/surface/tools/harness-plan.d.ts +76 -0
- package/dist/surface/tools/harness-plan.js +156 -0
- package/dist/surface/tools/harness-toolset.d.ts +35 -0
- package/dist/surface/tools/harness-toolset.js +144 -0
- package/dist/surface/tools/inspect-tool.d.ts +4 -0
- package/dist/surface/tools/inspect-tool.js +142 -0
- package/dist/surface/tools/invoke-tool.d.ts +10 -0
- package/dist/surface/tools/invoke-tool.js +668 -0
- package/dist/surface/tools/lease-hint.d.ts +50 -0
- package/dist/surface/tools/lease-hint.js +125 -0
- package/dist/surface/tools/lease-tools.d.ts +195 -0
- package/dist/surface/tools/lease-tools.js +797 -0
- package/dist/surface/tools/lineage-tools.d.ts +14 -0
- package/dist/surface/tools/lineage-tools.js +64 -0
- package/dist/surface/tools/live-call-text.d.ts +25 -0
- package/dist/surface/tools/live-call-text.js +191 -0
- package/dist/surface/tools/merge-tools.d.ts +68 -0
- package/dist/surface/tools/merge-tools.js +110 -0
- package/dist/surface/tools/merged-name-redirect.d.ts +36 -0
- package/dist/surface/tools/merged-name-redirect.js +107 -0
- package/dist/surface/tools/observe-tools.js +700 -0
- package/dist/surface/tools/read/query-windowed.d.ts +54 -0
- package/dist/surface/tools/read/query-windowed.js +75 -0
- package/dist/surface/tools/read/snapshot-delta.d.ts +92 -0
- package/dist/surface/tools/read/snapshot-delta.js +356 -0
- package/dist/surface/tools/read-tools.js +569 -0
- package/dist/surface/tools/real-input-attempt.d.ts +68 -0
- package/dist/surface/tools/real-input-attempt.js +360 -0
- package/dist/surface/tools/reconcile-tools.js +211 -0
- package/dist/surface/tools/tool-hit-rate.js +90 -0
- package/dist/surface/tools/tool-kit.d.ts +254 -0
- package/dist/surface/tools/tool-kit.js +123 -0
- package/dist/surface/tools/tool-surface.d.ts +195 -0
- package/dist/surface/tools/tool-surface.js +429 -0
- package/dist/surface/tools/tools-helpers.d.ts +40 -0
- package/dist/surface/tools/tools-helpers.js +76 -0
- package/dist/surface/tools/tools.d.ts +76 -0
- package/dist/surface/tools/tools.js +799 -0
- package/dist/surface/tools/unadvertised-help.js +60 -0
- package/dist/surface/tools/verify-next-baton.js +52 -0
- package/dist/telemetry/app-instrumented.d.ts +3 -5
- package/dist/telemetry/app-instrumented.js +17 -6
- package/dist/telemetry/argument-shape.js +4 -4
- package/dist/telemetry/bug-found.js +49 -27
- package/dist/telemetry/cli-telemetry.js +27 -10
- package/dist/telemetry/daemon-telemetry.d.ts +7 -13
- package/dist/telemetry/daemon-telemetry.js +15 -22
- package/dist/telemetry/error-fingerprint.js +26 -1
- package/dist/telemetry/feedback-cli.d.ts +1 -1
- package/dist/telemetry/feedback-cli.js +2 -2
- package/dist/telemetry/feedback-context.js +4 -4
- package/dist/telemetry/feedback.js +1 -1
- package/dist/telemetry/harness-drive.d.ts +6 -0
- package/dist/telemetry/harness-drive.js +39 -0
- package/dist/telemetry/install-source.js +1 -1
- package/dist/telemetry/install-trace.d.ts +8 -0
- package/dist/telemetry/install-trace.js +74 -0
- package/dist/telemetry/license-activation.js +1 -1
- package/dist/telemetry/mcp-connection.d.ts +14 -1
- package/dist/telemetry/mcp-connection.js +17 -2
- package/dist/telemetry/onboarding-firsts.d.ts +40 -0
- package/dist/telemetry/onboarding-firsts.js +109 -0
- package/dist/telemetry/onboarding-funnel.d.ts +26 -0
- package/dist/telemetry/onboarding-funnel.js +60 -0
- package/dist/telemetry/project-profile.js +1 -1
- package/dist/telemetry/run-telemetry.js +13 -0
- package/dist/telemetry/session-metrics.d.ts +6 -7
- package/dist/telemetry/session-metrics.js +14 -21
- package/dist/telemetry/telemetry.d.ts +8 -1
- package/dist/telemetry/telemetry.js +6 -5
- package/dist/telemetry/verification-of.d.ts +6 -8
- package/dist/telemetry/verification-of.js +38 -12
- package/dist/workspace-packages.d.ts +22 -0
- package/dist/workspace-packages.js +57 -0
- package/docs/README.md +29 -23
- package/docs/actions.mdx +4 -4
- package/docs/adapters.md +75 -0
- package/docs/agent-cheatsheet.md +37 -27
- package/docs/architecture.md +3 -2
- package/docs/autodrive.md +99 -0
- package/docs/benchmarks.md +1 -1
- package/docs/best-practices.mdx +3 -3
- package/docs/capabilities.mdx +4 -4
- package/docs/cli/cloud.mdx +4 -4
- package/docs/cli/doctor.mdx +1 -0
- package/docs/cli/feedback.mdx +1 -1
- package/docs/cli/init.mdx +3 -3
- package/docs/cli/mcp.mdx +1 -1
- package/docs/cli/status.mdx +35 -20
- package/docs/cli/watch.mdx +1 -1
- package/docs/cli.mdx +15 -25
- package/docs/desktop.mdx +1 -1
- package/docs/enterprise.md +3 -2
- package/docs/faq.mdx +4 -4
- package/docs/first-drive.md +5 -5
- package/docs/flows.md +5 -5
- package/docs/for-agents.md +2 -1
- package/docs/frameworks.mdx +1 -1
- package/docs/getting-started.md +30 -21
- package/docs/http-transport.md +1 -1
- package/docs/index.mdx +28 -10
- package/docs/install-agentic.mdx +12 -4
- package/docs/install-manual.mdx +23 -7
- package/docs/instrumentation.mdx +3 -3
- package/docs/local-registry.md +15 -4
- package/docs/packages/babel-plugin.mdx +1 -1
- package/docs/packages/browser.mdx +2 -2
- package/docs/packages/core.mdx +2 -2
- package/docs/packages/engine.mdx +40 -0
- package/docs/packages/open-verification.mdx +40 -0
- package/docs/packages/tauri.mdx +1 -1
- package/docs/packages.mdx +22 -2
- package/docs/platform-integration.md +3 -3
- package/docs/predicates.mdx +19 -3
- package/docs/protocol.mdx +60 -0
- package/docs/quickstart.mdx +48 -13
- package/docs/recipes.mdx +1 -1
- package/docs/required-checks.md +37 -0
- package/docs/skill-file.mdx +2 -2
- package/docs/skill-setup.md +104 -0
- package/docs/state-files.md +46 -0
- package/docs/state-management.mdx +1 -1
- package/docs/system-map.md +8 -6
- package/docs/telemetry.md +4 -3
- package/docs/testing.md +12 -3
- package/docs/token-efficiency.md +3 -3
- package/docs/tools/act-and-wait.mdx +173 -0
- package/docs/tools/act-sequence.mdx +160 -0
- package/docs/tools/act.mdx +95 -0
- package/docs/tools/assert.mdx +129 -0
- package/docs/tools/console.mdx +70 -0
- package/docs/tools/inspect.mdx +95 -0
- package/docs/tools/navigate.mdx +107 -0
- package/docs/tools/network.mdx +126 -0
- package/docs/tools/observe.mdx +145 -0
- package/docs/tools/overview.mdx +163 -0
- package/docs/tools/query.mdx +133 -0
- package/docs/tools/sessions.mdx +101 -0
- package/docs/tools/snapshot.mdx +136 -0
- package/docs/tools/state.mdx +111 -0
- package/docs/tools/wait-for.mdx +92 -0
- package/docs/troubleshooting.mdx +43 -9
- package/docs/usage.md +59 -59
- package/package.json +31 -13
- package/dist/bridge/auth-failure-reason.d.ts +0 -23
- package/dist/bridge/auth-failure-reason.js +0 -47
- package/dist/bridge/bridge-security.d.ts +0 -30
- package/dist/bridge/bridge-security.js +0 -53
- package/dist/bridge/bridge.d.ts +0 -95
- package/dist/bridge/bridge.js +0 -713
- package/dist/bridge/bridge.test-harness.d.ts +0 -65
- package/dist/bridge/bridge.test-harness.js +0 -230
- package/dist/capsule/capsule-store.d.ts +0 -71
- package/dist/capsule/capsule-store.js +0 -114
- package/dist/capsule/capsule.d.ts +0 -18
- package/dist/capsule/capsule.js +0 -35
- package/dist/capsule/causal-summary.d.ts +0 -119
- package/dist/capsule/causal-summary.js +0 -172
- package/dist/capsule/divergence.d.ts +0 -35
- package/dist/capsule/predicate-to-links.d.ts +0 -8
- package/dist/capsule/predicate-to-links.js +0 -33
- package/dist/cli/adhoc-verdict.d.ts +0 -58
- package/dist/cli/adhoc-verdict.js +0 -115
- package/dist/cli/cli-doctor.js +0 -195
- package/dist/cli/cli-flow-commands.d.ts +0 -46
- package/dist/cli/cli-flow-commands.js +0 -255
- package/dist/cli/cli-kill.d.ts +0 -59
- package/dist/cli/cli-kill.js +0 -162
- package/dist/cli/cli-launch.d.ts +0 -92
- package/dist/cli/cli-launch.js +0 -223
- package/dist/cli/cli-parse.d.ts +0 -171
- package/dist/cli/cli-parse.js +0 -874
- package/dist/cli/cli-port.d.ts +0 -70
- package/dist/cli/cli-port.js +0 -136
- package/dist/cli/cli-update-commands.js +0 -112
- package/dist/cli/cli-verify.d.ts +0 -86
- package/dist/cli/cli-verify.js +0 -340
- package/dist/cli/cloud-cli.js +0 -694
- package/dist/cli/cloud-keystore.js +0 -97
- package/dist/cli/cloud-kit.d.ts +0 -37
- package/dist/cli/cloud-kit.js +0 -121
- package/dist/cli/cloud-login.js +0 -183
- package/dist/cli/config-discovery.d.ts +0 -36
- package/dist/cli/config-discovery.js +0 -164
- package/dist/cli/daemon-start-options.d.ts +0 -33
- package/dist/cli/device-flow.d.ts +0 -76
- package/dist/cli/device-flow.js +0 -56
- package/dist/cli/doctor-daemon-line.js +0 -47
- package/dist/cli/doctor-rows.d.ts +0 -63
- package/dist/cli/doctor-rows.js +0 -65
- package/dist/cli/doctor-sessions-line.js +0 -69
- package/dist/cli/drive-attach.d.ts +0 -113
- package/dist/cli/drive-attach.js +0 -221
- package/dist/cli/drive-command.js +0 -107
- package/dist/cli/mcp-command.js +0 -174
- package/dist/cli/port-holder.js +0 -123
- package/dist/cli/status-next-action.d.ts +0 -51
- package/dist/cli/status-next-action.js +0 -60
- package/dist/cli.d.ts +0 -6
- package/dist/cli.js +0 -828
- package/dist/cloud/account-state.d.ts +0 -20
- package/dist/cloud/account-state.js +0 -65
- package/dist/cloud/cloud-config.d.ts +0 -57
- package/dist/cloud/cloud-config.js +0 -145
- package/dist/cloud/cloud-sync.d.ts +0 -190
- package/dist/cloud/cloud-sync.js +0 -354
- package/dist/cloud/sync-cycle.d.ts +0 -111
- package/dist/cloud/sync-cycle.js +0 -270
- package/dist/cloud/sync-daemon.d.ts +0 -53
- package/dist/cloud/sync-daemon.js +0 -260
- package/dist/cloud/sync-disk.js +0 -191
- package/dist/crawl/crawl-tools.d.ts +0 -7
- package/dist/crawl/crawl-tools.js +0 -87
- package/dist/crawl/crawl.d.ts +0 -98
- package/dist/crawl/crawl.js +0 -441
- package/dist/daemon/daemon-resilience.d.ts +0 -74
- package/dist/daemon/daemon-resilience.js +0 -318
- package/dist/daemon/daemon-resolve.d.ts +0 -113
- package/dist/daemon/daemon-resolve.js +0 -187
- package/dist/daemon/daemon-usefulness.d.ts +0 -61
- package/dist/daemon/daemon-usefulness.js +0 -62
- package/dist/daemon/daemon.d.ts +0 -95
- package/dist/daemon/daemon.js +0 -336
- package/dist/daemon/heartbeat.d.ts +0 -111
- package/dist/daemon/heartbeat.js +0 -141
- package/dist/daemon/idle-grace.d.ts +0 -32
- package/dist/daemon/idle-grace.js +0 -41
- package/dist/daemon/idle-shutdown.d.ts +0 -54
- package/dist/daemon/idle-shutdown.js +0 -98
- package/dist/daemon/state-dir.js +0 -59
- package/dist/daemon/wake-decision.d.ts +0 -32
- package/dist/daemon/wake-decision.js +0 -38
- package/dist/dev/stale-issue-guard.d.ts +0 -41
- package/dist/dev/stale-issue-guard.js +0 -75
- package/dist/domain/domain-model.js +0 -126
- package/dist/domain/domain-tools.d.ts +0 -2
- package/dist/domain/domain-tools.js +0 -94
- package/dist/domain/flow-risk.js +0 -80
- package/dist/ee/audit-log.js +0 -11
- package/dist/events/body-failures.d.ts +0 -4
- package/dist/events/body-failures.js +0 -113
- package/dist/events/contradiction-folds.d.ts +0 -45
- package/dist/events/contradiction-folds.js +0 -42
- package/dist/events/contradictions.d.ts +0 -170
- package/dist/events/contradictions.js +0 -718
- package/dist/events/declared.d.ts +0 -74
- package/dist/events/declared.js +0 -171
- package/dist/events/echo-mismatch.d.ts +0 -10
- package/dist/events/echo-mismatch.js +0 -299
- package/dist/events/event-filters.d.ts +0 -121
- package/dist/events/event-filters.js +0 -215
- package/dist/events/json-salvage.d.ts +0 -33
- package/dist/events/json-salvage.js +0 -96
- package/dist/events/lineage.d.ts +0 -52
- package/dist/events/lineage.js +0 -122
- package/dist/events/net-evidence.d.ts +0 -21
- package/dist/events/net-evidence.js +0 -81
- package/dist/events/observed-in-window.d.ts +0 -24
- package/dist/events/observed-in-window.js +0 -38
- package/dist/events/predicate-asks.d.ts +0 -30
- package/dist/events/predicate-asks.js +0 -48
- package/dist/events/predicate-console.d.ts +0 -13
- package/dist/events/predicate-console.js +0 -138
- package/dist/events/predicate-element.d.ts +0 -13
- package/dist/events/predicate-element.js +0 -214
- package/dist/events/predicate-eval.d.ts +0 -101
- package/dist/events/predicate-eval.js +0 -834
- package/dist/events/predicate-parse.d.ts +0 -17
- package/dist/events/predicate-parse.js +0 -175
- package/dist/events/predicate-precheck.d.ts +0 -8
- package/dist/events/predicate-precheck.js +0 -41
- package/dist/events/predicate-request-body.d.ts +0 -50
- package/dist/events/predicate-request-body.js +0 -120
- package/dist/events/predicate-route.d.ts +0 -66
- package/dist/events/predicate-route.js +0 -258
- package/dist/events/predicate-schema.d.ts +0 -168
- package/dist/events/predicate-schema.js +0 -501
- package/dist/events/predicate.d.ts +0 -74
- package/dist/events/predicate.js +0 -725
- package/dist/events/reaction.d.ts +0 -33
- package/dist/events/reaction.js +0 -59
- package/dist/events/reconcile.d.ts +0 -39
- package/dist/events/reconcile.js +0 -211
- package/dist/events/ring-buffer.d.ts +0 -41
- package/dist/events/ring-buffer.js +0 -151
- package/dist/events/split-text-miss.d.ts +0 -32
- package/dist/events/split-text-miss.js +0 -51
- package/dist/events/stale-response.d.ts +0 -3
- package/dist/events/stale-response.js +0 -186
- package/dist/events/testid-near-miss.d.ts +0 -22
- package/dist/events/testid-near-miss.js +0 -33
- package/dist/events/unit-mismatch.d.ts +0 -16
- package/dist/events/unit-mismatch.js +0 -167
- package/dist/flows/affected-tools.d.ts +0 -18
- package/dist/flows/affected-tools.js +0 -80
- package/dist/flows/affected.d.ts +0 -24
- package/dist/flows/affected.js +0 -35
- package/dist/flows/annotate-tools.d.ts +0 -15
- package/dist/flows/annotate-tools.js +0 -179
- package/dist/flows/assertion-tiers-store.d.ts +0 -16
- package/dist/flows/assertion-tiers-store.js +0 -98
- package/dist/flows/decision.d.ts +0 -25
- package/dist/flows/decision.js +0 -201
- package/dist/flows/empty-flow.js +0 -24
- package/dist/flows/flake-store.d.ts +0 -18
- package/dist/flows/flake-store.js +0 -58
- package/dist/flows/flake.d.ts +0 -56
- package/dist/flows/flow-classify.d.ts +0 -51
- package/dist/flows/flow-classify.js +0 -102
- package/dist/flows/flow-expect-grammar.d.ts +0 -33
- package/dist/flows/flow-expect-grammar.js +0 -155
- package/dist/flows/flow-intent.d.ts +0 -52
- package/dist/flows/flow-intent.js +0 -123
- package/dist/flows/flow-replay-run.d.ts +0 -43
- package/dist/flows/flow-replay-run.js +0 -478
- package/dist/flows/flow-replay.d.ts +0 -82
- package/dist/flows/flow-replay.js +0 -519
- package/dist/flows/flow-secret-field.d.ts +0 -14
- package/dist/flows/flow-secret-field.js +0 -22
- package/dist/flows/flow-sources.d.ts +0 -19
- package/dist/flows/flow-sources.js +0 -32
- package/dist/flows/flow-step-runners.d.ts +0 -52
- package/dist/flows/flow-step-runners.js +0 -315
- package/dist/flows/flow-store-for-session.d.ts +0 -31
- package/dist/flows/flow-success.d.ts +0 -32
- package/dist/flows/flow-success.js +0 -169
- package/dist/flows/flow-tools.d.ts +0 -15
- package/dist/flows/flow-tools.js +0 -639
- package/dist/flows/flow-upload-resolve.d.ts +0 -23
- package/dist/flows/flow-upload-resolve.js +0 -46
- package/dist/flows/flows.d.ts +0 -130
- package/dist/flows/flows.js +0 -870
- package/dist/flows/gate.js +0 -33
- package/dist/flows/heal-run.d.ts +0 -10
- package/dist/flows/heal-run.js +0 -139
- package/dist/flows/heal.js +0 -97
- package/dist/flows/predicate-to-expect.d.ts +0 -44
- package/dist/flows/predicate-to-expect.js +0 -130
- package/dist/flows/recording-backtrack.js +0 -73
- package/dist/flows/recordings.d.ts +0 -63
- package/dist/flows/recordings.js +0 -57
- package/dist/flows/replay.d.ts +0 -62
- package/dist/flows/replay.js +0 -337
- package/dist/flows/role-anchor-nearest.js +0 -45
- package/dist/flows/server-verify.d.ts +0 -15
- package/dist/flows/server-verify.js +0 -56
- package/dist/flows/suite-flakes.d.ts +0 -34
- package/dist/flows/suite-flakes.js +0 -32
- package/dist/flows/verify-change-tools.d.ts +0 -2
- package/dist/flows/verify-change-tools.js +0 -231
- package/dist/honesty/accepted-write.d.ts +0 -17
- package/dist/honesty/accepted-write.js +0 -22
- package/dist/honesty/already-true.d.ts +0 -16
- package/dist/honesty/already-true.js +0 -89
- package/dist/honesty/blind-spots.d.ts +0 -133
- package/dist/honesty/blind-spots.js +0 -248
- package/dist/honesty/body-capture-remedy.d.ts +0 -42
- package/dist/honesty/body-capture-remedy.js +0 -95
- package/dist/honesty/feature-capture.d.ts +0 -151
- package/dist/honesty/feature-capture.js +0 -233
- package/dist/honesty/gap-ledger.d.ts +0 -52
- package/dist/honesty/gap-ledger.js +0 -63
- package/dist/honesty/honesty.d.ts +0 -103
- package/dist/honesty/honesty.js +0 -95
- package/dist/honesty/instrumentation-gaps.d.ts +0 -95
- package/dist/honesty/instrumentation-gaps.js +0 -114
- package/dist/honesty/observability.d.ts +0 -38
- package/dist/honesty/observability.js +0 -40
- package/dist/honesty/tool-hit-rate.js +0 -90
- package/dist/honesty/uncaptured-bodies.d.ts +0 -23
- package/dist/honesty/uncaptured-bodies.js +0 -41
- package/dist/honesty/undeclared-change.d.ts +0 -51
- package/dist/honesty/undeclared-change.js +0 -56
- package/dist/honesty/unread-outcome.d.ts +0 -10
- package/dist/honesty/unread-outcome.js +0 -77
- package/dist/honesty/unsettled.d.ts +0 -58
- package/dist/honesty/unsettled.js +0 -127
- package/dist/honesty/verified.d.ts +0 -148
- package/dist/honesty/verified.js +0 -330
- package/dist/http-server.d.ts +0 -52
- package/dist/http-server.js +0 -381
- package/dist/impact/impact-recorder.d.ts +0 -46
- package/dist/impact/impact-recorder.js +0 -159
- package/dist/impact/impact-store.d.ts +0 -47
- package/dist/impact/impact-store.js +0 -255
- package/dist/input/network-detail.d.ts +0 -104
- package/dist/input/network-detail.js +0 -211
- package/dist/input/network-mock-tools.d.ts +0 -21
- package/dist/input/network-mock-tools.js +0 -124
- package/dist/input/network-mock.js +0 -61
- package/dist/input/real-input.d.ts +0 -222
- package/dist/input/real-input.js +0 -405
- package/dist/input/scroll-find.js +0 -111
- package/dist/input/scroll-tools.d.ts +0 -2
- package/dist/input/scroll-tools.js +0 -76
- package/dist/input/viewport-tools.d.ts +0 -2
- package/dist/input/viewport-tools.js +0 -72
- package/dist/intent/inline-intent.d.ts +0 -27
- package/dist/intent/inline-intent.js +0 -193
- package/dist/intent/intent-shard-store.d.ts +0 -73
- package/dist/intent/intent-shard-store.js +0 -203
- package/dist/intent/intent-shard.d.ts +0 -411
- package/dist/intent/intent-shard.js +0 -176
- package/dist/intent/intent-store.d.ts +0 -49
- package/dist/intent/intent-store.js +0 -133
- package/dist/intent/intent-subject.d.ts +0 -46
- package/dist/intent/intent-subject.js +0 -177
- package/dist/intent/intent-tools.d.ts +0 -2
- package/dist/intent/intent-tools.js +0 -143
- package/dist/intent/open-intents.d.ts +0 -43
- package/dist/intent/open-intents.js +0 -40
- package/dist/journal/ambient-store.d.ts +0 -13
- package/dist/journal/ambient-store.js +0 -45
- package/dist/journal/ambient.d.ts +0 -47
- package/dist/journal/ambient.js +0 -47
- package/dist/journal/attach-journal.d.ts +0 -30
- package/dist/journal/attach-journal.js +0 -30
- package/dist/journal/envelope-store.d.ts +0 -16
- package/dist/journal/envelope-store.js +0 -61
- package/dist/journal/envelope.d.ts +0 -230
- package/dist/journal/journal-query.d.ts +0 -32
- package/dist/journal/journal-query.js +0 -52
- package/dist/journal/journal-recorder.d.ts +0 -61
- package/dist/journal/journal-recorder.js +0 -115
- package/dist/journal/retention.d.ts +0 -20
- package/dist/journal/retention.js +0 -49
- package/dist/journal/session-end.d.ts +0 -32
- package/dist/journal/session-end.js +0 -51
- package/dist/journal/session-journal.d.ts +0 -24
- package/dist/journal/session-journal.js +0 -167
- package/dist/journal/workspace-gitignore.d.ts +0 -10
- package/dist/journal/workspace-gitignore.js +0 -59
- package/dist/license/license-env.d.ts +0 -29
- package/dist/license/license-env.js +0 -148
- package/dist/license/license.d.ts +0 -169
- package/dist/license/license.js +0 -289
- package/dist/mcp/mcp-is-error.d.ts +0 -13
- package/dist/mcp/mcp-is-error.js +0 -18
- package/dist/mcp/mcp-outage.d.ts +0 -32
- package/dist/mcp/mcp-outage.js +0 -55
- package/dist/mcp/mcp-post-transport.js +0 -109
- package/dist/mcp/mcp-proxy.d.ts +0 -110
- package/dist/mcp/mcp-proxy.js +0 -872
- package/dist/mcp/mcp.d.ts +0 -80
- package/dist/mcp/mcp.js +0 -536
- package/dist/mcp/proxy-daemon-probe.d.ts +0 -9
- package/dist/mcp/proxy-daemon-probe.js +0 -54
- package/dist/mcp/proxy-handshake.js +0 -192
- package/dist/mcp/proxy-lifecycle.d.ts +0 -92
- package/dist/mcp/proxy-lifecycle.js +0 -100
- package/dist/mcp/proxy-log.d.ts +0 -63
- package/dist/mcp/proxy-log.js +0 -132
- package/dist/mcp/server-instructions.d.ts +0 -18
- package/dist/mcp/server-instructions.js +0 -98
- package/dist/mcp/tool-catalog-cache.d.ts +0 -45
- package/dist/mcp/tool-catalog-cache.js +0 -77
- package/dist/memory/memory-tools.d.ts +0 -2
- package/dist/memory/memory-tools.js +0 -82
- package/dist/memory/project-memory.d.ts +0 -33
- package/dist/oracles/propose-consequences.d.ts +0 -22
- package/dist/oracles/propose-consequences.js +0 -106
- package/dist/pool/browser-pool.d.ts +0 -282
- package/dist/pool/browser-pool.js +0 -560
- package/dist/pool/lease-reaper.js +0 -40
- package/dist/pool/playwright-launcher.js +0 -150
- package/dist/pool/storage-seed.d.ts +0 -23
- package/dist/project/artifact-root.d.ts +0 -84
- package/dist/project/artifact-root.js +0 -112
- package/dist/project/fs-port.d.ts +0 -47
- package/dist/project/fs-port.js +0 -54
- package/dist/project/learned-routes.d.ts +0 -24
- package/dist/project/learned-routes.js +0 -63
- package/dist/project/memory-fs.d.ts +0 -10
- package/dist/project/project-store.d.ts +0 -54
- package/dist/project/project-store.js +0 -201
- package/dist/project/project-tools.d.ts +0 -2
- package/dist/project/project-tools.js +0 -155
- package/dist/project/reticle-dir.d.ts +0 -102
- package/dist/project/reticle-dir.js +0 -188
- package/dist/project/session-root.d.ts +0 -23
- package/dist/project/session-root.js +0 -38
- package/dist/runs/build-verification-run.d.ts +0 -29
- package/dist/runs/build-verification-run.js +0 -70
- package/dist/runs/context-tools.d.ts +0 -2
- package/dist/runs/context-tools.js +0 -89
- package/dist/runs/render-report.js +0 -69
- package/dist/runs/replay-mapping.js +0 -34
- package/dist/runs/reticle-runner.d.ts +0 -60
- package/dist/runs/reticle-runner.js +0 -95
- package/dist/runs/run-store.d.ts +0 -54
- package/dist/runs/run-store.js +0 -147
- package/dist/runs/run-tools.d.ts +0 -9
- package/dist/runs/run-tools.js +0 -82
- package/dist/runs/runner-port.d.ts +0 -13
- package/dist/runs/runner-port.js +0 -22
- package/dist/runs/verification-sync.d.ts +0 -12
- package/dist/runs/verification-sync.js +0 -87
- package/dist/session/command-timeout.d.ts +0 -46
- package/dist/session/command-timeout.js +0 -42
- package/dist/session/connection-memory.d.ts +0 -59
- package/dist/session/connection-memory.js +0 -108
- package/dist/session/dev-server-probe.js +0 -147
- package/dist/session/live-control-tools.d.ts +0 -15
- package/dist/session/live-control-tools.js +0 -242
- package/dist/session/no-session-diagnosis.d.ts +0 -176
- package/dist/session/no-session-diagnosis.js +0 -477
- package/dist/session/no-session-next-action.d.ts +0 -72
- package/dist/session/no-session-next-action.js +0 -174
- package/dist/session/no-session-watch.js +0 -335
- package/dist/session/observed-state.d.ts +0 -60
- package/dist/session/observed-state.js +0 -121
- package/dist/session/output-budget.d.ts +0 -49
- package/dist/session/output-budget.js +0 -67
- package/dist/session/session-health.d.ts +0 -138
- package/dist/session/session-health.js +0 -154
- package/dist/session/session-manager.d.ts +0 -76
- package/dist/session/session-manager.js +0 -464
- package/dist/session/session-reaper.d.ts +0 -36
- package/dist/session/session-reaper.js +0 -93
- package/dist/session/session-recommendation.js +0 -29
- package/dist/session/session-replaced.d.ts +0 -24
- package/dist/session/session-replaced.js +0 -29
- package/dist/session/session-tools.d.ts +0 -8
- package/dist/session/session-tools.js +0 -42
- package/dist/session/session.d.ts +0 -280
- package/dist/session/session.js +0 -891
- package/dist/session/stall-clock.js +0 -48
- package/dist/setup/agent-configs.d.ts +0 -97
- package/dist/setup/agent-configs.js +0 -333
- package/dist/setup/agent-writer.d.ts +0 -52
- package/dist/setup/agent-writer.js +0 -115
- package/dist/setup/auto-approve.js +0 -153
- package/dist/setup/bridge-port.d.ts +0 -15
- package/dist/setup/bridge-port.js +0 -24
- package/dist/setup/confirm.js +0 -205
- package/dist/setup/dev-server-wait.d.ts +0 -68
- package/dist/setup/dev-server-wait.js +0 -67
- package/dist/setup/drive-agent.d.ts +0 -70
- package/dist/setup/drive-agent.js +0 -171
- package/dist/setup/drive-plan.d.ts +0 -69
- package/dist/setup/drive-plan.js +0 -130
- package/dist/setup/ensure-daemon.js +0 -58
- package/dist/setup/init-host.js +0 -26
- package/dist/setup/init-runtime.d.ts +0 -41
- package/dist/setup/init-runtime.js +0 -167
- package/dist/setup/node-effects.d.ts +0 -63
- package/dist/setup/node-effects.js +0 -225
- package/dist/setup/page-probe.d.ts +0 -44
- package/dist/setup/page-probe.js +0 -49
- package/dist/setup/remaining-steps.js +0 -31
- package/dist/setup/run-setup.d.ts +0 -103
- package/dist/setup/run-setup.js +0 -294
- package/dist/setup/setup-command.d.ts +0 -46
- package/dist/setup/setup-command.js +0 -207
- package/dist/setup/setup-options.d.ts +0 -76
- package/dist/setup/setup-options.js +0 -68
- package/dist/tools/act-capsule.d.ts +0 -33
- package/dist/tools/act-capsule.js +0 -53
- package/dist/tools/act-danger.js +0 -69
- package/dist/tools/act-helpers.d.ts +0 -17
- package/dist/tools/act-helpers.js +0 -40
- package/dist/tools/act-observation.d.ts +0 -42
- package/dist/tools/act-observation.js +0 -36
- package/dist/tools/act-preflight.d.ts +0 -20
- package/dist/tools/act-preflight.js +0 -103
- package/dist/tools/act-sequence-tool.js +0 -135
- package/dist/tools/act-target.d.ts +0 -18
- package/dist/tools/act-target.js +0 -56
- package/dist/tools/act-tools.d.ts +0 -20
- package/dist/tools/act-tools.js +0 -763
- package/dist/tools/assert-grade.d.ts +0 -42
- package/dist/tools/assert-grade.js +0 -108
- package/dist/tools/assert-source.d.ts +0 -52
- package/dist/tools/assert-source.js +0 -74
- package/dist/tools/assert-verdict.d.ts +0 -48
- package/dist/tools/assert-verdict.js +0 -197
- package/dist/tools/browser-tools.d.ts +0 -2
- package/dist/tools/browser-tools.js +0 -115
- package/dist/tools/contract-tools.d.ts +0 -2
- package/dist/tools/contract-tools.js +0 -98
- package/dist/tools/coverage-tools.d.ts +0 -18
- package/dist/tools/coverage-tools.js +0 -175
- package/dist/tools/dynamic-tools.d.ts +0 -7
- package/dist/tools/dynamic-tools.js +0 -257
- package/dist/tools/error-recovery.d.ts +0 -110
- package/dist/tools/error-recovery.js +0 -499
- package/dist/tools/feedback-invite.d.ts +0 -48
- package/dist/tools/feedback-invite.js +0 -71
- package/dist/tools/feedback-tools.d.ts +0 -35
- package/dist/tools/feedback-tools.js +0 -228
- package/dist/tools/invoke-tool.d.ts +0 -10
- package/dist/tools/invoke-tool.js +0 -569
- package/dist/tools/lease-hint.d.ts +0 -49
- package/dist/tools/lease-hint.js +0 -124
- package/dist/tools/lease-tools.d.ts +0 -143
- package/dist/tools/lease-tools.js +0 -688
- package/dist/tools/lineage-tools.d.ts +0 -14
- package/dist/tools/lineage-tools.js +0 -64
- package/dist/tools/merge-tools.d.ts +0 -51
- package/dist/tools/merge-tools.js +0 -69
- package/dist/tools/merged-name-redirect.d.ts +0 -26
- package/dist/tools/merged-name-redirect.js +0 -77
- package/dist/tools/navigate-arrival.d.ts +0 -68
- package/dist/tools/numeric-bounds.d.ts +0 -89
- package/dist/tools/numeric-bounds.js +0 -125
- package/dist/tools/observe-tools.js +0 -578
- package/dist/tools/read-tools.js +0 -569
- package/dist/tools/real-input-attempt.d.ts +0 -68
- package/dist/tools/real-input-attempt.js +0 -360
- package/dist/tools/reconcile-tools.js +0 -126
- package/dist/tools/resolve-target.js +0 -116
- package/dist/tools/snapshot-delta.d.ts +0 -92
- package/dist/tools/snapshot-delta.js +0 -356
- package/dist/tools/tool-kit.d.ts +0 -221
- package/dist/tools/tool-kit.js +0 -114
- package/dist/tools/tool-names.d.ts +0 -112
- package/dist/tools/tool-names.js +0 -112
- package/dist/tools/tool-surface.d.ts +0 -222
- package/dist/tools/tool-surface.js +0 -439
- package/dist/tools/tools-helpers.d.ts +0 -42
- package/dist/tools/tools-helpers.js +0 -87
- package/dist/tools/tools.d.ts +0 -20
- package/dist/tools/tools.js +0 -739
- package/dist/tools/unadvertised-help.js +0 -42
- package/dist/tools/verify-next-baton.js +0 -52
- package/dist/update/nudge-credit.js +0 -53
- package/dist/update/reticle-deps.d.ts +0 -9
- package/dist/update/reticle-deps.js +0 -27
- package/dist/update/sdk-sync.d.ts +0 -20
- package/dist/update/sdk-sync.js +0 -22
- package/dist/update/update-checker.js +0 -122
- package/dist/update/update-nudge.d.ts +0 -92
- package/dist/update/update-nudge.js +0 -214
- package/dist/update/updater.d.ts +0 -54
- package/dist/update/updater.js +0 -190
- package/dist/version/peer-announce.js +0 -32
- package/dist/version/sdk-fix.js +0 -127
- package/dist/version/server-version.js +0 -13
- package/dist/version/version-nudge.js +0 -61
- package/dist/version/version-skew.d.ts +0 -93
- package/dist/version/version-skew.js +0 -147
- package/dist/visual/visual-store.d.ts +0 -22
- package/dist/visual/visual-store.js +0 -66
- package/dist/visual/visual-tools.d.ts +0 -26
- package/dist/visual/visual-tools.js +0 -328
- package/docs/docs.json +0 -369
- package/docs/fixtures.md +0 -51
- package/docs/gate-plan.md +0 -104
- package/docs/gates.md +0 -131
- package/docs/style.css +0 -14
- package/docs/telemetry-contract.md +0 -390
- package/docs/telemetry-events.mdx +0 -442
- package/docs/tools-act-and-wait.mdx +0 -173
- package/docs/tools-act-sequence.mdx +0 -153
- package/docs/tools-act.mdx +0 -95
- package/docs/tools-assert.mdx +0 -129
- package/docs/tools-console.mdx +0 -63
- package/docs/tools-inspect.mdx +0 -88
- package/docs/tools-navigate.mdx +0 -107
- package/docs/tools-network.mdx +0 -119
- package/docs/tools-observe.mdx +0 -145
- package/docs/tools-overview.mdx +0 -160
- package/docs/tools-query.mdx +0 -126
- package/docs/tools-sessions.mdx +0 -94
- package/docs/tools-snapshot.mdx +0 -129
- package/docs/tools-state.mdx +0 -104
- package/docs/tools-wait-for.mdx +0 -85
- /package/dist/{cli → command/cli/answers}/gate-exit.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/gate-exit.js +0 -0
- /package/dist/{cli → command/cli/answers}/gate-hook-message.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/gate-hook-message.js +0 -0
- /package/dist/{cli → command/cli/answers}/open-note.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/open-note.js +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-keystore.d.ts +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-session.d.ts +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-session.js +0 -0
- /package/dist/{cli → command/cli}/cli-doctor.d.ts +0 -0
- /package/dist/{cli → command/cli}/cli-parse-feedback.d.ts +0 -0
- /package/dist/{cli → command/cli}/cli-parse-feedback.js +0 -0
- /package/dist/{cli → command/cli}/cli-update-commands.d.ts +0 -0
- /package/dist/{cli → command/cli}/cloud-cli.d.ts +0 -0
- /package/dist/{cli → command/cli}/cloud-login.d.ts +0 -0
- /package/dist/{cli → command/cli}/daemon-start-options.js +0 -0
- /package/dist/{cli → command/cli/doctor/browser}/chromium-hint.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor/browser}/chromium-hint.js +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-daemon-line.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-project-line.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-project-line.js +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-sessions-line.d.ts +0 -0
- /package/dist/{cli → command/cli/drive}/drive-command.d.ts +0 -0
- /package/dist/{cli → command/cli}/mcp-command.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/port-holder.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/sibling-ports.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/sibling-ports.js +0 -0
- /package/dist/{cli → command/cli}/project-name.d.ts +0 -0
- /package/dist/{cli → command/cli}/project-name.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/free-port.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/free-port.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/loopback-alias.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/loopback-alias.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/port-presence.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/port-presence.js +0 -0
- /package/dist/{daemon → command/daemon}/dev-servers.d.ts +0 -0
- /package/dist/{daemon → command/daemon}/dev-servers.js +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/startup-failure.d.ts +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/startup-failure.js +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/unclean-predecessor.d.ts +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/unclean-predecessor.js +0 -0
- /package/dist/{daemon → command/daemon}/state-dir.d.ts +0 -0
- /package/dist/{setup → command/setup}/agent-io.d.ts +0 -0
- /package/dist/{setup → command/setup}/agent-io.js +0 -0
- /package/dist/{setup → command/setup}/approval-migration.d.ts +0 -0
- /package/dist/{setup → command/setup}/approval-migration.js +0 -0
- /package/dist/{setup → command/setup}/auto-approve.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/ensure-daemon.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/relaunch.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/relaunch.js +0 -0
- /package/dist/{setup → command/setup}/desktop-shape.d.ts +0 -0
- /package/dist/{setup → command/setup}/desktop-shape.js +0 -0
- /package/dist/{setup → command/setup/init}/init-host.d.ts +0 -0
- /package/dist/{setup → command/setup}/license-key.d.ts +0 -0
- /package/dist/{setup → command/setup}/license-key.js +0 -0
- /package/dist/{setup → command/setup/probe}/existing-app.d.ts +0 -0
- /package/dist/{setup → command/setup/probe}/existing-app.js +0 -0
- /package/dist/{setup → command/setup/probe}/loopback-probe-urls.d.ts +0 -0
- /package/dist/{setup → command/setup/probe}/loopback-probe-urls.js +0 -0
- /package/dist/{setup → command/setup}/remaining-steps.d.ts +0 -0
- /package/dist/{setup → command/setup}/session-pick.d.ts +0 -0
- /package/dist/{setup → command/setup}/session-pick.js +0 -0
- /package/dist/{setup → command/setup/terminal}/confirm.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/interrupt.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/interrupt.js +0 -0
- /package/dist/{setup → command/setup/terminal}/listeners.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/listeners.js +0 -0
- /package/dist/{setup → command/setup/terminal}/transcripts.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/transcripts.js +0 -0
- /package/dist/{setup → command/setup/terminal}/wait-progress.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/wait-progress.js +0 -0
- /package/dist/{update → command/update}/nudge-credit.d.ts +0 -0
- /package/dist/{update → command/update}/update-checker.d.ts +0 -0
- /package/dist/{version → command/version/identity}/server-version.d.ts +0 -0
- /package/dist/{version → command/version}/peer-announce.d.ts +0 -0
- /package/dist/{version → command/version}/sdk-fix.d.ts +0 -0
- /package/dist/{version → command/version}/version-nudge.d.ts +0 -0
- /package/dist/{crawl → features/crawl}/crawl-empty.d.ts +0 -0
- /package/dist/{crawl → features/crawl}/crawl-empty.js +0 -0
- /package/dist/{ee → features/ee}/audit-log.d.ts +0 -0
- /package/dist/{visual → features/visual}/capture-cleanup.d.ts +0 -0
- /package/dist/{visual → features/visual}/capture-cleanup.js +0 -0
- /package/dist/{visual → features/visual}/visual-diff.d.ts +0 -0
- /package/dist/{visual → features/visual}/visual-diff.js +0 -0
- /package/dist/{capsule → judgement/capsule}/divergence.js +0 -0
- /package/dist/{capsule → judgement/capsule}/minimize.d.ts +0 -0
- /package/dist/{capsule → judgement/capsule}/minimize.js +0 -0
- /package/dist/{domain → judgement/domain}/domain-model.d.ts +0 -0
- /package/dist/{domain → judgement/domain}/flow-risk.d.ts +0 -0
- /package/dist/{hunt → judgement/hunt}/hunt-report.d.ts +0 -0
- /package/dist/{hunt → judgement/hunt}/hunt-report.js +0 -0
- /package/dist/{oracles → judgement/oracles}/flow-instrument-gaps.d.ts +0 -0
- /package/dist/{oracles → judgement/oracles}/flow-instrument-gaps.js +0 -0
- /package/dist/{oracles → judgement/oracles}/self-instrument.d.ts +0 -0
- /package/dist/{oracles → judgement/oracles}/self-instrument.js +0 -0
- /package/dist/{flows → judgement/outcome}/assertion-integrity.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/assertion-integrity.js +0 -0
- /package/dist/{flows → judgement/outcome}/attributed-failure.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/attributed-failure.js +0 -0
- /package/dist/{flows → judgement/outcome}/role-drift-reason.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/role-drift-reason.js +0 -0
- /package/dist/{flows → judgement/outcome}/verify-change-verdict.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/verify-change-verdict.js +0 -0
- /package/dist/{phenomena → judgement/phenomena}/phenomena.d.ts +0 -0
- /package/dist/{phenomena → judgement/phenomena}/phenomena.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/profile-redact.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/profile-redact.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/render-report.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/replay-mapping.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-context.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-context.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-diff.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-diff.js +0 -0
- /package/dist/{runs → judgement/runs}/repair-prompt.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/repair-prompt.js +0 -0
- /package/dist/{runs → judgement/runs}/risk-classify.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/risk-classify.js +0 -0
- /package/dist/{runs → judgement/runs}/verify-http.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/verify-http.js +0 -0
- /package/dist/{runs → judgement/runs}/verify-server.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/verify-server.js +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate-target.d.ts +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate-target.js +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate.d.ts +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate.js +0 -0
- /package/dist/{flows → language/flows}/buddy-status.d.ts +0 -0
- /package/dist/{flows → language/flows}/buddy-status.js +0 -0
- /package/dist/{flows → language/flows/change}/gate.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/git-changed.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/git-changed.js +0 -0
- /package/dist/{flows → language/flows/change}/watch-batcher.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/watch-batcher.js +0 -0
- /package/dist/{flows → language/flows}/empty-flow.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-memory-consult.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-memory-consult.js +0 -0
- /package/dist/{flows → language/flows}/flow-report.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-report.js +0 -0
- /package/dist/{flows → language/flows}/flow-scope.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-scope.js +0 -0
- /package/dist/{flows → language/flows}/flow-store-for-session.js +0 -0
- /package/dist/{flows → language/flows}/heal.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/flake.js +0 -0
- /package/dist/{flows → language/flows/recording}/recording-backtrack.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/replay-halt.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/replay-halt.js +0 -0
- /package/dist/{flows → language/flows}/role-anchor-nearest.d.ts +0 -0
- /package/dist/{flows → language/flows/stores}/annotation-store.d.ts +0 -0
- /package/dist/{flows → language/flows/stores}/annotation-store.js +0 -0
- /package/dist/{flows → language/flows/suite}/coverage.d.ts +0 -0
- /package/dist/{flows → language/flows/suite}/coverage.js +0 -0
- /package/dist/{flows → language/flows/suite}/parallel-suite.d.ts +0 -0
- /package/dist/{flows → language/flows/suite}/parallel-suite.js +0 -0
- /package/dist/{platform.d.ts → machine/platform.d.ts} +0 -0
- /package/dist/{platform.js → machine/platform.js} +0 -0
- /package/dist/{temp-dir.d.ts → machine/temp-dir.d.ts} +0 -0
- /package/dist/{temp-dir.js → machine/temp-dir.js} +0 -0
- /package/dist/{cloud → memory/cloud}/sync-disk.d.ts +0 -0
- /package/dist/{cloud → memory/cloud}/sync-hash.d.ts +0 -0
- /package/dist/{cloud → memory/cloud}/sync-hash.js +0 -0
- /package/dist/{journal → memory/journal}/deviation-report.d.ts +0 -0
- /package/dist/{journal → memory/journal}/deviation-report.js +0 -0
- /package/dist/{journal → memory/journal}/deviation-service.d.ts +0 -0
- /package/dist/{journal → memory/journal}/deviation-service.js +0 -0
- /package/dist/{journal → memory/journal}/envelope.js +0 -0
- /package/dist/{journal → memory/journal}/rollups.d.ts +0 -0
- /package/dist/{journal → memory/journal}/rollups.js +0 -0
- /package/dist/{project → memory/project}/baselines.d.ts +0 -0
- /package/dist/{project → memory/project}/baselines.js +0 -0
- /package/dist/{project → memory/project}/file-lock.d.ts +0 -0
- /package/dist/{project → memory/project}/file-lock.js +0 -0
- /package/dist/{project → memory/project}/memory-fs.js +0 -0
- /package/dist/{session → memory/recall}/looks-like-dev-server.d.ts +0 -0
- /package/dist/{session → memory/recall}/looks-like-dev-server.js +0 -0
- /package/dist/memory/{project-memory.js → recall/project-memory.js} +0 -0
- /package/dist/{session → memory/recall}/registered-projects.d.ts +0 -0
- /package/dist/{session → memory/recall}/registered-projects.js +0 -0
- /package/dist/{bridge → portal/bridge}/pairing-token.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/pairing-token.js +0 -0
- /package/dist/{bridge → portal/bridge}/protocol-skew.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/protocol-skew.js +0 -0
- /package/dist/{bridge → portal/bridge}/token-auth.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/token-auth.js +0 -0
- /package/dist/{input → portal/input}/driven-redaction.d.ts +0 -0
- /package/dist/{input → portal/input}/driven-redaction.js +0 -0
- /package/dist/{input → portal/input}/network-mock.d.ts +0 -0
- /package/dist/{input → portal/input}/scroll-find.d.ts +0 -0
- /package/dist/{pool → portal/pool}/lease-reaper.d.ts +0 -0
- /package/dist/{pool → portal/pool}/playwright-launcher.d.ts +0 -0
- /package/dist/{pool → portal/pool}/storage-seed.js +0 -0
- /package/dist/{session → portal/session}/control-envelope.d.ts +0 -0
- /package/dist/{session → portal/session}/control-envelope.js +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-command.d.ts +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-command.js +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-server-probe.d.ts +0 -0
- /package/dist/{session → portal/session/facts}/ref-provenance.d.ts +0 -0
- /package/dist/{session → portal/session/facts}/ref-provenance.js +0 -0
- /package/dist/{session → portal/session}/fake-session.d.ts +0 -0
- /package/dist/{session → portal/session}/fake-session.js +0 -0
- /package/dist/{session → portal/session/human}/live-control.d.ts +0 -0
- /package/dist/{session → portal/session/human}/live-control.js +0 -0
- /package/dist/{session → portal/session/human}/presenter-args.d.ts +0 -0
- /package/dist/{session → portal/session/human}/presenter-args.js +0 -0
- /package/dist/{session → portal/session/human}/review-store.d.ts +0 -0
- /package/dist/{session → portal/session/human}/review-store.js +0 -0
- /package/dist/{session → portal/session}/last-act.d.ts +0 -0
- /package/dist/{session → portal/session}/last-act.js +0 -0
- /package/dist/{session → portal/session}/lease-visibility.d.ts +0 -0
- /package/dist/{session → portal/session}/lease-visibility.js +0 -0
- /package/dist/{session → portal/session}/no-session-watch.d.ts +0 -0
- /package/dist/{session → portal/session/page-commands}/pending-commands.d.ts +0 -0
- /package/dist/{session → portal/session/page-commands}/pending-commands.js +0 -0
- /package/dist/{session → portal/session/presence}/attachment-history.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/attachment-history.js +0 -0
- /package/dist/{session → portal/session/presence}/lease-availability.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/lease-availability.js +0 -0
- /package/dist/{session → portal/session/presence}/session-lease.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/session-lease.js +0 -0
- /package/dist/{session → portal/session/presence}/session-mirror.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/session-mirror.js +0 -0
- /package/dist/{session → portal/session/presence}/session-recommendation.d.ts +0 -0
- /package/dist/{session → portal/session}/session-info.d.ts +0 -0
- /package/dist/{session → portal/session}/session-info.js +0 -0
- /package/dist/{session → portal/session}/session-reconnect.d.ts +0 -0
- /package/dist/{session → portal/session}/session-reconnect.js +0 -0
- /package/dist/{session → portal/session}/session-successor.d.ts +0 -0
- /package/dist/{session → portal/session}/session-successor.js +0 -0
- /package/dist/{session → portal/session}/stall-clock.d.ts +0 -0
- /package/dist/{session → portal/session}/state-select.d.ts +0 -0
- /package/dist/{session → portal/session}/state-select.js +0 -0
- /package/dist/{session → portal/session/timing}/resolve-within.d.ts +0 -0
- /package/dist/{session → portal/session/timing}/resolve-within.js +0 -0
- /package/dist/{session → portal/session/timing}/wall-clock.d.ts +0 -0
- /package/dist/{session → portal/session/timing}/wall-clock.js +0 -0
- /package/dist/{loopback-agent.d.ts → surface/loopback-agent.d.ts} +0 -0
- /package/dist/{loopback-agent.js → surface/loopback-agent.js} +0 -0
- /package/dist/{mcp → surface/mcp}/attach-memory.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/attach-memory.js +0 -0
- /package/dist/{mcp → surface/mcp/peer}/client-identity.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/peer}/client-identity.js +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/mcp-post-transport.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-backoff.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-backoff.js +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-handshake.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/proxy-idle-exit.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/proxy-idle-exit.js +0 -0
- /package/dist/{mcp → surface/mcp}/shared-params.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/shared-params.js +0 -0
- /package/dist/{mcp → surface/mcp}/sse-frame-parser.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/sse-frame-parser.js +0 -0
- /package/dist/{tools → surface/tools/act}/act-danger.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-sequence-retry.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-sequence-retry.js +0 -0
- /package/dist/{tools → surface/tools/act}/act-view.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-view.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-arrival.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-result.d.ts +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-result.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/reload-result.d.ts +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/reload-result.js +0 -0
- /package/dist/{tools → surface/tools/act}/react-grace.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/react-grace.js +0 -0
- /package/dist/{tools → surface/tools/act}/resolve-target.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/settle-in-flight.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/settle-in-flight.js +0 -0
- /package/dist/{tools → surface/tools}/act-sequence-tool.d.ts +0 -0
- /package/dist/{tools → surface/tools/args}/alias-args.d.ts +0 -0
- /package/dist/{tools → surface/tools/args}/alias-args.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/coverage-identity.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/coverage-identity.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/observed-nothing.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/observed-nothing.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/sdk-marker-probe.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/sdk-marker-probe.js +0 -0
- /package/dist/{tools → surface/tools}/observe-tools.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/complete-snapshot.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/complete-snapshot.js +0 -0
- /package/dist/{tools → surface/tools/read}/query-paginate.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/query-paginate.js +0 -0
- /package/dist/{tools → surface/tools/read}/query-shape.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/query-shape.js +0 -0
- /package/dist/{tools → surface/tools}/read-tools.d.ts +0 -0
- /package/dist/{tools → surface/tools}/reconcile-tools.d.ts +0 -0
- /package/dist/{honesty → surface/tools}/tool-hit-rate.d.ts +0 -0
- /package/dist/{tools → surface/tools}/tool-invoker.d.ts +0 -0
- /package/dist/{tools → surface/tools}/tool-invoker.js +0 -0
- /package/dist/{tools → surface/tools}/unadvertised-help.d.ts +0 -0
- /package/dist/{tools → surface/tools}/verify-next-baton.d.ts +0 -0
- /package/docs/{tools-session-and-feedback.mdx → tools/session-and-feedback.mdx} +0 -0
- /package/docs/{tools-tools-and-run.mdx → tools/tools-and-run.mdx} +0 -0
package/dist/tools/act-tools.js
DELETED
|
@@ -1,763 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { aliasParam } from './alias-args.js';
|
|
3
|
-
import { resolveSessionWithin } from '../session/resolve-within.js';
|
|
4
|
-
import { WALL_CLOCK } from '../session/wall-clock.js';
|
|
5
|
-
import { ACT_SEQUENCE_TOOL } from './act-sequence-tool.js';
|
|
6
|
-
import { timeoutMsSchema } from './numeric-bounds.js';
|
|
7
|
-
import { captureAct } from '../flows/replay.js';
|
|
8
|
-
import { ActionType, ActionWarning, CaptureLoss, DEFAULT_ASSERT_TIMEOUT_MS, InputMode, ReticleCommand, Verified, VerifiedReason, PredicateKind, } from '@reticlehq/core';
|
|
9
|
-
import { leanActResult, mutatedWithin } from './act-view.js';
|
|
10
|
-
import { ReticleTool } from './tool-names.js';
|
|
11
|
-
import { buildReactionReport, summarizeReaction } from '../events/reaction.js';
|
|
12
|
-
import { parsePredicate } from '../events/predicate-parse.js';
|
|
13
|
-
import { bodyClauseRefusal } from '../honesty/body-capture-remedy.js';
|
|
14
|
-
import { causalSummary } from '../capsule/causal-summary.js';
|
|
15
|
-
import { findContradictions } from '../events/contradictions.js';
|
|
16
|
-
import { gapsForAction } from '../honesty/instrumentation-gaps.js';
|
|
17
|
-
import { noteSessionGaps } from '../honesty/gap-ledger.js';
|
|
18
|
-
import { isChangeUndeclared } from '../honesty/undeclared-change.js';
|
|
19
|
-
import { intentDebt, openSessionIntents } from '../intent/open-intents.js';
|
|
20
|
-
import { dischargeInlineIntent, inlineVerdictId, linkInlineIntent, } from '../intent/inline-intent.js';
|
|
21
|
-
import { declaresState } from '../events/predicate-asks.js';
|
|
22
|
-
import { isStateUnwatched } from '../honesty/blind-spots.js';
|
|
23
|
-
import { inFlightRequestLabels, repeatedRequestLabels, waitForInFlight, } from './settle-in-flight.js';
|
|
24
|
-
import { waitForReaction } from './react-grace.js';
|
|
25
|
-
import { decideVerified } from '../honesty/verified.js';
|
|
26
|
-
import { honestyForVerdict } from '../honesty/honesty.js';
|
|
27
|
-
import { declaredExpectations, declaresBodyIndependentChannel } from '../events/declared.js';
|
|
28
|
-
import { readsDomState, alreadyTrueHiddenMatch as alreadyTrueHiddenMatchOf, } from '../honesty/already-true.js';
|
|
29
|
-
import { describeWaitTarget, namedNetIsInFlight } from '../honesty/unsettled.js';
|
|
30
|
-
import { saveFailedAssertCapsule } from './act-capsule.js';
|
|
31
|
-
import { buildDivergenceCapsule } from '../capsule/capsule.js';
|
|
32
|
-
import { predicateToExpectedLinks } from '../capsule/predicate-to-links.js';
|
|
33
|
-
import { buildHonestyBlock } from '../honesty/honesty.js';
|
|
34
|
-
import { absenceBlindSpotNote, buildCoverageStatement, blindSpotsFromState, transportGapNote, Coverage, impeachesCapture, } from '../honesty/blind-spots.js';
|
|
35
|
-
import { hasAcceptedWrite } from '../honesty/accepted-write.js';
|
|
36
|
-
import { unreadWriteLabels } from '../honesty/unread-outcome.js';
|
|
37
|
-
import { evaluatePredicate, waitForPredicate, provenExpectedLinks, PredicateSchema, } from '../events/predicate.js';
|
|
38
|
-
import { healthEnvelope, refuseIfThrottled } from '../session/session-health.js';
|
|
39
|
-
import { pausedShortCircuit, pausedOutputShape, withControl, PAUSED_NO_VERDICT, } from '../session/control-envelope.js';
|
|
40
|
-
import { asString, asNumber, asRecord, sourceOf } from './tools-helpers.js';
|
|
41
|
-
import { dispatchAct, preflightAct } from './act-preflight.js';
|
|
42
|
-
import { followLostObservation } from './act-observation.js';
|
|
43
|
-
import { intentArg, sessionIdShape } from './tool-kit.js';
|
|
44
|
-
import { asActionType, gradeOf } from './act-helpers.js';
|
|
45
|
-
import { resolveActTarget } from './act-target.js';
|
|
46
|
-
import { tryRealInput, rewriteUploadArgs, HOVER_NEEDS_POINTER_MSG } from './real-input-attempt.js';
|
|
47
|
-
/**
|
|
48
|
-
* Single dispatch point for every ACT and ACT_SEQUENCE command.
|
|
49
|
-
*
|
|
50
|
-
* This is the seam the reviewer asked for: instead of wiring rewriteUploadArgs at three separate
|
|
51
|
-
* call sites (reticle_act, reticle_act_and_wait, reticle_act_sequence) we intercept once here,
|
|
52
|
-
* which also covers flow-replay, crawl, and any future dispatch site that goes through this helper.
|
|
53
|
-
*
|
|
54
|
-
* captureAct is called AFTER this, so the flow-recording captures the pre-rewrite args (the path
|
|
55
|
-
* the agent actually wrote) rather than the base64 blob — replay would otherwise send 750 KiB of
|
|
56
|
-
* base64 to the browser as if it were an inline content call.
|
|
57
|
-
*/
|
|
58
|
-
export async function actCommand(deps, session, actArgs, timeoutMs) {
|
|
59
|
-
const rewritten = await rewriteUploadArgs(deps, 'string' === typeof actArgs['action'] ? actArgs['action'] : '', asRecord(actArgs['args']));
|
|
60
|
-
// Sequence and act_and_wait dispatch through here without the ACT handler's tryRealInput.
|
|
61
|
-
// A synthetic hover reports dispatched/settled while CSS :hover never applies — drive a real
|
|
62
|
-
// pointer when one is available, otherwise refuse rather than lie.
|
|
63
|
-
if (ActionType.HOVER === actArgs['action']) {
|
|
64
|
-
const ref = asString(actArgs['ref']);
|
|
65
|
-
if (ref === undefined)
|
|
66
|
-
throw new Error(HOVER_NEEDS_POINTER_MSG);
|
|
67
|
-
const real = await tryRealInput(deps, session, ref, ActionType.HOVER, actArgs);
|
|
68
|
-
if (real.result === undefined)
|
|
69
|
-
throw new Error(HOVER_NEEDS_POINTER_MSG);
|
|
70
|
-
return {
|
|
71
|
-
kind: 'command_result',
|
|
72
|
-
id: 'hover',
|
|
73
|
-
ok: true,
|
|
74
|
-
result: { dispatched: true, settled: real.settled, ...asRecord(real.result) },
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
const bridgeArgs = { ...actArgs, args: rewritten };
|
|
78
|
-
return timeoutMs !== undefined
|
|
79
|
-
? session.command(ReticleCommand.ACT, bridgeArgs, timeoutMs)
|
|
80
|
-
: session.command(ReticleCommand.ACT, bridgeArgs);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Narrow the wire's `action` to a real ActionType, or undefined.
|
|
84
|
-
*
|
|
85
|
-
* It used to be `asString(args['action']) ?? ''`, so an unknown or missing action became the empty
|
|
86
|
-
* string and travelled on — reaching the browser as a command it could not perform, and reported back
|
|
87
|
-
* as a generic failure rather than "that is not an action". Validate at the boundary, per the project's
|
|
88
|
-
* unknown-plus-narrowing rule, so a typo is rejected where it can still be explained.
|
|
89
|
-
*/
|
|
90
|
-
/**
|
|
91
|
-
* The action vocabulary, derived from ActionType — never retyped.
|
|
92
|
-
*
|
|
93
|
-
* The description used to list thirteen actions while ActionType had seventeen: blur, upload, drag
|
|
94
|
-
* and webmcp were real, callable, and undocumented, because a hand-copied list drifts the moment
|
|
95
|
-
* someone adds an arm. Deriving both the schema and the prose from the enum makes that impossible.
|
|
96
|
-
*
|
|
97
|
-
* The handler already refused an unknown action with a good message; the schema now refuses it
|
|
98
|
-
* one layer earlier, before any session is resolved or any work is done.
|
|
99
|
-
*/
|
|
100
|
-
const ACTION_TYPE_VALUES = Object.values(ActionType);
|
|
101
|
-
const actionTypeEnum = z.enum(ACTION_TYPE_VALUES);
|
|
102
|
-
export const ACT_TOOLS = [
|
|
103
|
-
{
|
|
104
|
-
name: ReticleTool.ACT,
|
|
105
|
-
example: { ref: 'e42', action: 'fill', args: { value: 'hello' } },
|
|
106
|
-
description: 'Act WITHOUT checking the result — if the action is supposed to cause something, use reticle_act_and_wait { until } instead and get the verdict in the same call. This tool returns immediately with a `since` cursor; observe the reaction yourself with reticle_observe. Use it for actions with no observable consequence to assert (focus, hover, scrollIntoView, a fill you are about to submit). One action against a ref: click|dblclick|hover|focus|fill|type|clear|select|check|uncheck|submit|press|scrollIntoView. Carries effect:{dispatched,targetMatched,visible,enabled,focusMoved,valueChanged,domMutatedWithin,occluded,occludedBy,scrolledIntoView} to tell "action missed" from "app didn\'t react"; dispatched=landed, settled=a real frame flushed, and a settle timeout never fails the tool. Fields at their uninformative default are OMITTED so a clean action collapses to its consequence: an absent dispatched/targetMatched/visible/enabled means true, an absent occluded/scrolledIntoView/valueChanged/defaultPrevented means false, an absent focusMoved/occludedBy means null. occluded=true means the click point is covered by another element (a real user could not click it) — synthetic dispatch still delivered the event; scrolledIntoView=true means an off-viewport target was scrolled in first. effect.alreadyAtValue=true (check/uncheck only) means the box already read as the requested state, so NOTHING was dispatched and the app was never told — the DOM property is not evidence the application holds that value, so assert the app\'s own state (a signal, a request, a derived control), not the box. inputMode is "real" (native CDP, no synthetic effect block) or "synthetic"; clicks default to the occlusion-honest synthetic path even when CDP is configured — pass args.native:true to force a trusted native click (file pickers, clipboard). args.holdMs keeps the pointer DOWN for that long between mousedown and mouseup — the only way to drive a hold-to-confirm control (hold-to-delete, hold-to-record, long-press); effect.heldMs reports the hold actually achieved, which a throttled background tab can stretch. args.confirmDangerous is a permission gate and NOT a duration: it allows a destructive control, it does not hold one. inputModeReason explains any real→synthetic choice so it is never silent. Full model (real-input, throttled tabs, `reticle drive`): node_modules/@reticlehq/server/docs/usage.md §18.',
|
|
107
|
-
inputSchema: {
|
|
108
|
-
ref: z
|
|
109
|
-
.string()
|
|
110
|
-
.optional()
|
|
111
|
-
.describe(`Element ref (e.g. 'e42') from reticle_snapshot/reticle_query — stable until the element leaves the DOM, so no re-snapshot between actions. Give this OR \`target\`. A press of Escape, Tab, or a modifier shortcut (Cmd+K) is a document key and needs neither.`),
|
|
112
|
-
target: z
|
|
113
|
-
.record(z.unknown())
|
|
114
|
-
.optional()
|
|
115
|
-
.describe('Find the element and act on it in ONE call, instead of a reticle_query round trip first: { testid } | { text } | { role, name } | { label }. Refuses if it matches more than one, rather than guessing.'),
|
|
116
|
-
action: actionTypeEnum.describe('Action to perform.'),
|
|
117
|
-
args: z
|
|
118
|
-
.record(z.unknown())
|
|
119
|
-
.optional()
|
|
120
|
-
.describe('Action-specific arguments: { value } for fill/select, { text } for type/press (the key NAME, e.g. Escape or Tab), { modifiers: ["Meta","Shift"] } for a press shortcut (Meta/Control/Shift/Alt — a Cmd+K), { toRef } for drag (the ref to drop ON — without it the drag lands nowhere), { native: true } to force a trusted native click, { holdMs: N } to keep the pointer DOWN for N ms (hold-to-confirm controls; effect.heldMs reports what was achieved), { confirmDangerous: true } to allow a potentially destructive control — a permission gate, NOT a duration. For upload: { path } is a path on disk (absolute or relative to the project root; the daemon reads the file and delivers real bytes to the file picker — this is the way to verify document-ingestion flows); or { name, content?, type? } to supply inline bytes directly.'),
|
|
121
|
-
refuseWhenThrottled: z
|
|
122
|
-
.boolean()
|
|
123
|
-
.optional()
|
|
124
|
-
.describe('Throw instead of silently sending synthetic events when the tab is throttled/backgrounded. Default: false (synthetic events are still sent).'),
|
|
125
|
-
...sessionIdShape,
|
|
126
|
-
},
|
|
127
|
-
outputSchema: {
|
|
128
|
-
since: z
|
|
129
|
-
.number()
|
|
130
|
-
.describe('Cursor — pass to reticle_observe/reticle_wait_for/reticle_assert to scope reaction queries to this act.'),
|
|
131
|
-
dispatched: z.boolean(),
|
|
132
|
-
settled: z.boolean().nullable(),
|
|
133
|
-
inputMode: z.string(),
|
|
134
|
-
// Diagnostic fields the handler splices — declared so schema-strict clients keep them.
|
|
135
|
-
effect: z.unknown().optional(),
|
|
136
|
-
settleReason: z.unknown().nullable().optional(),
|
|
137
|
-
inputModeReason: z.string().optional(),
|
|
138
|
-
warning: z.string().optional(),
|
|
139
|
-
result: z.unknown().optional(),
|
|
140
|
-
session: z
|
|
141
|
-
.object({ lastSeenMs: z.number(), throttled: z.boolean(), focused: z.boolean() })
|
|
142
|
-
.optional(),
|
|
143
|
-
// This tool short-circuits to pausedShortCircuit while the human has paused; declare its fields
|
|
144
|
-
// or the whole pause payload — including drained-once guidance — is stripped on validating clients.
|
|
145
|
-
...pausedOutputShape,
|
|
146
|
-
},
|
|
147
|
-
handler: async (deps, args) => {
|
|
148
|
-
// Validate the REQUEST before touching a session: a malformed action is the caller's error and
|
|
149
|
-
// should be reported as such, not after resolving a session and marking an act cursor.
|
|
150
|
-
const action = asActionType(args['action']);
|
|
151
|
-
if (action === undefined) {
|
|
152
|
-
throw new Error(`unknown action '${String(args['action'])}' — expected one of: ${Object.values(ActionType).join(', ')}`);
|
|
153
|
-
}
|
|
154
|
-
const session = deps.sessions.resolve(asString(args['sessionId']));
|
|
155
|
-
// Live-control: refuse to drive the page while the human has paused us (before any work).
|
|
156
|
-
const paused = pausedShortCircuit(session);
|
|
157
|
-
if (paused !== undefined)
|
|
158
|
-
return paused;
|
|
159
|
-
refuseIfThrottled(session, args['refuseWhenThrottled']);
|
|
160
|
-
// Resolve `target` to a ref BEFORE the action window opens, so the lookup is not attributed to
|
|
161
|
-
// the act and cannot be mistaken for something the action caused.
|
|
162
|
-
const targetRef = await resolveActTarget(session, args);
|
|
163
|
-
if ('error' === targetRef.kind)
|
|
164
|
-
throw new Error(targetRef.message);
|
|
165
|
-
const since = session.elapsed();
|
|
166
|
-
// The act cursor + effect are marked only once the action has actually DISPATCHED (below, on
|
|
167
|
-
// each success path) — a refused act must leave nothing behind for the next observe to judge.
|
|
168
|
-
const ref = targetRef.ref;
|
|
169
|
-
// Open the journal's action-attribution window BEFORE dispatching, so it covers the native path
|
|
170
|
-
// too. It used to open only on the synthetic path, and the native path returned above it — so a
|
|
171
|
-
// hover, a drag or any native:true click produced events with no actionId. Session.pushEvent
|
|
172
|
-
// treats an unattributed ref-bearing event as ambient background churn, so an action's OWN
|
|
173
|
-
// effects were learned as noise; past the ambient threshold the settle oracle then filtered that
|
|
174
|
-
// region out entirely and reported settled while the app was still working. A false green
|
|
175
|
-
// manufactured by the machinery that exists to prevent false greens.
|
|
176
|
-
session.beginAction(ReticleTool.ACT, asRecord(args));
|
|
177
|
-
let settledOutcome;
|
|
178
|
-
try {
|
|
179
|
-
// drive native pointer input when a provider is available; otherwise fall back.
|
|
180
|
-
const real = await tryRealInput(deps, session, ref, action, args);
|
|
181
|
-
if (real.result !== undefined) {
|
|
182
|
-
captureAct(deps.recordings, args, real.result);
|
|
183
|
-
settledOutcome = real.settled ?? undefined;
|
|
184
|
-
// Native input reports no synthetic effect block, so nothing measured in-target: undefined
|
|
185
|
-
// (the weaker empty-window test), never a fabricated zero.
|
|
186
|
-
session.lastAct.markActed(since, action, undefined, asString(args['ref']));
|
|
187
|
-
return withControl(session, {
|
|
188
|
-
since,
|
|
189
|
-
inputMode: InputMode.REAL,
|
|
190
|
-
dispatched: true,
|
|
191
|
-
settled: real.settled,
|
|
192
|
-
settleReason: null,
|
|
193
|
-
result: leanActResult(real.result),
|
|
194
|
-
...healthEnvelope(session),
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
// actCommand is the single interception point: it rewrites upload+path args to real bytes
|
|
198
|
-
// before any ACT command crosses the bridge, covering this call site and all others.
|
|
199
|
-
const result = await actCommand(deps, session, {
|
|
200
|
-
ref: targetRef.ref,
|
|
201
|
-
action: args['action'],
|
|
202
|
-
args: args['args'] ?? {},
|
|
203
|
-
});
|
|
204
|
-
if (!result.ok)
|
|
205
|
-
throw new Error(result.error ?? 'act failed');
|
|
206
|
-
captureAct(deps.recordings, args, result.result);
|
|
207
|
-
// lift dispatch/settle status to the envelope (a settle timeout is NOT a failure).
|
|
208
|
-
const r = asRecord(result.result);
|
|
209
|
-
if ('boolean' === typeof r['settled'])
|
|
210
|
-
settledOutcome = r['settled'];
|
|
211
|
-
// Keep what only this call measured, so the observe that judges this window can ask whether
|
|
212
|
-
// anything happened INSIDE the target — the one fact that separates a dead control from a
|
|
213
|
-
// page that was merely busy with something else.
|
|
214
|
-
session.lastAct.markActed(since, action, mutatedWithin(r), asString(args['ref']));
|
|
215
|
-
return withControl(session, {
|
|
216
|
-
since,
|
|
217
|
-
inputMode: InputMode.SYNTHETIC,
|
|
218
|
-
// #2: never a silent real→synthetic fallback — say WHY (unless real input isn't configured).
|
|
219
|
-
...(real.reason !== undefined ? { inputModeReason: real.reason } : {}),
|
|
220
|
-
dispatched: r['dispatched'] ?? true,
|
|
221
|
-
settled: r['settled'] ?? null,
|
|
222
|
-
settleReason: r['settleReason'] ?? null,
|
|
223
|
-
result: leanActResult(result.result),
|
|
224
|
-
...(true === real.fellBack ? { warning: ActionWarning.REAL_INPUT_FELL_BACK } : {}),
|
|
225
|
-
...healthEnvelope(session),
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
finally {
|
|
229
|
-
// Close the window on every exit (settle or throw), recording the action + settle outcome.
|
|
230
|
-
session.finishAction(undefined, settledOutcome, true === settledOutcome ? session.elapsed() - since : undefined);
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
},
|
|
234
|
-
{
|
|
235
|
-
name: ReticleTool.ACT_AND_WAIT,
|
|
236
|
-
example: {
|
|
237
|
-
ref: 'e42',
|
|
238
|
-
action: 'click',
|
|
239
|
-
until: { kind: PredicateKind.SIGNAL, name: 'todos:loaded' },
|
|
240
|
-
},
|
|
241
|
-
description: 'Act on a ref, then wait for a predicate to hold — one hop for the act->observe->assert loop. ' +
|
|
242
|
-
'Omit `until` to wait for the page to settle (network + DOM idle) — use this instead of a fixed sleep. ' +
|
|
243
|
-
'Returns { effect } (the action result), { verdict } (predicate pass/evidence/near-miss), ' +
|
|
244
|
-
'{ trace } (a digest — window_ms + summary counts of what the app did), and { since } (the act ' +
|
|
245
|
-
'cursor; pass it to reticle_observe for the full per-event timeline when the counts are not enough). ' +
|
|
246
|
-
'timeout_ms 0 evaluates the predicate once without waiting.',
|
|
247
|
-
inputSchema: {
|
|
248
|
-
ref: z
|
|
249
|
-
.string()
|
|
250
|
-
.optional()
|
|
251
|
-
.describe(`Element ref (e.g. 'e42') from reticle_snapshot/reticle_query — stable until the element leaves the DOM, so no re-snapshot between actions. Give this OR \`target\`. A press of Escape, Tab, or a modifier shortcut (Cmd+K) is a document key and needs neither.`),
|
|
252
|
-
target: z
|
|
253
|
-
.record(z.unknown())
|
|
254
|
-
.optional()
|
|
255
|
-
.describe('Find the element and act on it in ONE call, instead of a reticle_query round trip first: { testid } | { text } | { role, name } | { label }. Refuses if it matches more than one, rather than guessing.'),
|
|
256
|
-
action: actionTypeEnum.describe('Action to perform.'),
|
|
257
|
-
args: z
|
|
258
|
-
.record(z.unknown())
|
|
259
|
-
.optional()
|
|
260
|
-
.describe('Action-specific arguments: { value } for fill/select, { text } for type/press (the key NAME, e.g. Escape or Tab), { modifiers: ["Meta","Shift"] } for a press shortcut (Meta/Control/Shift/Alt), { toRef } for drag (the ref to drop ON — without it the drag lands nowhere), { confirmDangerous: true } for a potentially destructive control. For upload: { path } is a path on disk (absolute or relative to project root; daemon reads real bytes) or { name, content?, type? } for inline bytes.'),
|
|
261
|
-
predicate: PredicateSchema.optional().describe('Alias for `until` (the name reticle_assert / reticle_wait_for use).'),
|
|
262
|
-
until: PredicateSchema.optional().describe('Predicate to wait for after the action completes (same shape as reticle_assert). OMIT to wait for the page to SETTLE — network + DOM idle — the deterministic default instead of a sleep. To assert a consequence AND settle, allOf them: { kind: "allOf", predicates: [<your predicate>, { kind: "settled" }] }.'),
|
|
263
|
-
timeout_ms: timeoutMsSchema
|
|
264
|
-
.optional()
|
|
265
|
-
.describe('Maximum wait time in milliseconds. 0 = evaluate once without waiting. Default: 4000.'),
|
|
266
|
-
refuseWhenThrottled: z
|
|
267
|
-
.boolean()
|
|
268
|
-
.optional()
|
|
269
|
-
.describe('Throw if the tab is throttled. Default: false.'),
|
|
270
|
-
intent: intentArg,
|
|
271
|
-
...sessionIdShape,
|
|
272
|
-
},
|
|
273
|
-
outputSchema: {
|
|
274
|
-
effect: z
|
|
275
|
-
.unknown()
|
|
276
|
-
.describe('The reticle_act result (dispatched, settled, inputMode, etc.).'),
|
|
277
|
-
verdict: z.object({
|
|
278
|
-
pass: z.boolean(),
|
|
279
|
-
evidence: z.unknown().optional(),
|
|
280
|
-
failureReason: z.string().optional(),
|
|
281
|
-
observationLost: z
|
|
282
|
-
.boolean()
|
|
283
|
-
.optional()
|
|
284
|
-
.describe('The tab disconnected mid-wait, so this was never observed — the verdict is UNKNOWN, not a failure of the app.'),
|
|
285
|
-
inconclusive: z
|
|
286
|
-
.string()
|
|
287
|
-
.optional()
|
|
288
|
-
.describe('The wait could not be graded as a product failure — e.g. the tab is throttled and may never have rendered. The verdict is UNKNOWN, not "the UI is absent".'),
|
|
289
|
-
// The STRUCTURED cause — observed / expected / assertion — is what the repair literature ranks
|
|
290
|
-
// above the prose failureReason (structured feedback beat narrative by 10.5pp) and above a bare
|
|
291
|
-
// pointer. `verdict` is `await waitForPredicate(...)`, whose EvalResult carries these on a
|
|
292
|
-
// failure; without declaring them here the strict object schema silently dropped them from
|
|
293
|
-
// structuredContent on the validating `full` profile — reticle_assert declares them (it spreads
|
|
294
|
-
// the verdict at top level), so act_and_wait was losing the highest-value signal that assert kept.
|
|
295
|
-
observed: z.string().optional(),
|
|
296
|
-
expected: z.string().optional(),
|
|
297
|
-
assertion: z.string().optional(),
|
|
298
|
-
}),
|
|
299
|
-
trace: z
|
|
300
|
-
.unknown()
|
|
301
|
-
.describe('Reaction digest: { window_ms, summary } of what the app did (DOM/network/route/console/signal counts). The full per-event timeline is one reticle_observe { since } away.'),
|
|
302
|
-
summary: z
|
|
303
|
-
.unknown()
|
|
304
|
-
.describe('Bounded causal summary: net {total,errors,headline}, consoleErrors, statePathsChanged, storageKeysChanged, stateDiffs [{path,from,to}], storageDiffs [{key,from,to}], route, signals, layoutShift, longTasks — real before→after diffs (capped), not just readings. THIS IS THE ANSWER TO "what did that click do": console, network, storage and state for this action are all here, so do NOT follow an act with reticle_console + reticle_network + reticle_state to find out — call them only to go deeper into something this block already pointed at. Every list is length-capped so the verdict can never be the field a client truncates; `elided` says which lists lost entries and how many. `stateUnwatched: true` means NO subscribable store is registered, so an empty stateDiffs means unwatched, NOT unchanged — no state conclusion is available until one is registered.'),
|
|
305
|
-
// Promoted out of `effect` on RED only — the file:line the failure came from, the first thing a
|
|
306
|
-
// repair wants. Undeclared, it was stripped on the validating profile exactly like the structured
|
|
307
|
-
// cause above was, losing the highest-value pointer on the one path (a failed verdict) that has it.
|
|
308
|
-
source: z
|
|
309
|
-
.string()
|
|
310
|
-
.optional()
|
|
311
|
-
.describe('Present only on a FAILED verdict: `file:line` of the acted element.'),
|
|
312
|
-
capsule: z
|
|
313
|
-
.unknown()
|
|
314
|
-
.optional()
|
|
315
|
-
.describe('Present only on a FAILED verdict: the divergence capsule { summary, firstDivergence (declared vs observed), blastRadius (undeclared side effects) } — the fault, located, no re-exploration needed.'),
|
|
316
|
-
capsuleSaved: z
|
|
317
|
-
.string()
|
|
318
|
-
.optional()
|
|
319
|
-
.describe('Present only on a FAILED verdict when the fail-to-pass capsule was persisted: its id, replayable as a regression flow once the bug goes green.'),
|
|
320
|
-
verified: z
|
|
321
|
-
.string()
|
|
322
|
-
.describe('THE field to gate on: "yes" | "no" | "unknown". Read this first and read `because` for the reason. "unknown" is NOT failure — it means the evidence could not decide (dirty capture, nothing asserted at a real grade, or the page never settled), which calls for a better check rather than a code change. Everything else on this result is the evidence this was derived from.'),
|
|
323
|
-
because: z.string().describe('One sentence naming the deciding evidence behind `verified`.'),
|
|
324
|
-
contradictions: z
|
|
325
|
-
.array(z.unknown())
|
|
326
|
-
.optional()
|
|
327
|
-
.describe('Channels that DISAGREE about this action — the UI advanced while its write failed, a success signal fired over a failed request, a response changed nothing, a duplicate fired, a request never settled. OMITTED when clean. Treat any entry as a finding even when the verdict is green: a passing assertion and a contradicted channel is exactly the false green this exists to catch.'),
|
|
328
|
-
instrumentationGaps: z
|
|
329
|
-
.array(z.unknown())
|
|
330
|
-
.optional()
|
|
331
|
-
.describe('What the APP did not tell Reticle, and the one change that would fix it — each entry is { kind, missing, cost, fix, source?, ref? }. Reported ONLY where an absence made THIS verdict weaker (a red that cannot name a file:line, a state assertion with no registered store, a DOM change no signal announced, a route change nothing signalled); never a survey of the page, so an entry is always work worth doing now. OMITTED when the app told Reticle everything it needed. Applying `fix` makes every later verdict on this app stronger, not just this one.'),
|
|
332
|
-
honesty: z
|
|
333
|
-
.unknown()
|
|
334
|
-
.describe('The verdict trust block { grade, attribution, coverage, integrity, envelope? } — a green never looks stronger than this. Gate on grade ≥ net AND integrity.clean. Fields that were not measured are OMITTED rather than reported as zero, so treat an absent `envelope` as "not sampled", never as a failure.'),
|
|
335
|
-
since: z
|
|
336
|
-
.number()
|
|
337
|
-
.describe('Cursor for this act — pass to reticle_observe/reticle_assert for the full timeline.'),
|
|
338
|
-
sessionId: z
|
|
339
|
-
.string()
|
|
340
|
-
.optional()
|
|
341
|
-
.describe('The session that answered, when a full-document navigation replaced the one that was acted on. Absent when the original session survived.'),
|
|
342
|
-
session: z
|
|
343
|
-
.object({ lastSeenMs: z.number(), throttled: z.boolean(), focused: z.boolean() })
|
|
344
|
-
.optional(),
|
|
345
|
-
// Short-circuits to pausedShortCircuit while paused — declare its fields (drained-once guidance).
|
|
346
|
-
...pausedOutputShape,
|
|
347
|
-
},
|
|
348
|
-
handler: async (deps, args) => {
|
|
349
|
-
// Spend the caller's budget waiting for the APP too, not only for the consequence. This tool
|
|
350
|
-
// is the one an agent reaches for straight after `init` and a dev-server restart, which is
|
|
351
|
-
// exactly when there is no session yet and one is seconds away. See resolve-within.
|
|
352
|
-
let session = await resolveSessionWithin(deps.sessions, asString(args['sessionId']), asNumber(args['timeout_ms']) ?? DEFAULT_ASSERT_TIMEOUT_MS, WALL_CLOCK);
|
|
353
|
-
const acted = session;
|
|
354
|
-
const actedSessionId = session.id;
|
|
355
|
-
// Live-control: refuse to drive the page (no act, no predicate eval) while paused.
|
|
356
|
-
//
|
|
357
|
-
// A VERDICT rides out with the refusal. This is the one tool here that promises `verified`,
|
|
358
|
-
// and the bare pause payload omitted it — so an agent reading `result.verified` got undefined
|
|
359
|
-
// from a call that carried no error, which is neither yes, no, nor unknown. It also broke this
|
|
360
|
-
// tool's own outputSchema, where `because` is required.
|
|
361
|
-
const paused = pausedShortCircuit(session);
|
|
362
|
-
if (paused !== undefined) {
|
|
363
|
-
return { ...paused, verified: Verified.UNKNOWN, because: PAUSED_NO_VERDICT };
|
|
364
|
-
}
|
|
365
|
-
refuseIfThrottled(session, args['refuseWhenThrottled']);
|
|
366
|
-
// Omitting `until` waits for the page to settle (idle) — the deterministic default vs a sleep.
|
|
367
|
-
// `predicate` is what reticle_assert / reticle_wait_for call this — see alias-args.ts.
|
|
368
|
-
const withUntil = aliasParam(args, 'until', ['predicate']);
|
|
369
|
-
const until = withUntil['until'] !== undefined
|
|
370
|
-
? parsePredicate(withUntil['until'])
|
|
371
|
-
: { kind: PredicateKind.SETTLED };
|
|
372
|
-
// BEFORE the action. A body clause this session cannot answer would fail whatever the app
|
|
373
|
-
// did, and on a drive that mutates state the action is not always repeatable. See #801(C).
|
|
374
|
-
const bodyRefusal = bodyClauseRefusal(until, session);
|
|
375
|
-
if (bodyRefusal !== undefined)
|
|
376
|
-
throw new Error(bodyRefusal);
|
|
377
|
-
const timeout = asNumber(args['timeout_ms']) ?? DEFAULT_ASSERT_TIMEOUT_MS;
|
|
378
|
-
// An intent declared here lands in the ledger BEFORE the verdict is drawn, which is what makes
|
|
379
|
-
// the undeclared-change gap silent on THIS verdict rather than the next one: it reads the
|
|
380
|
-
// ledger below and finds something open. The discharge comes after that read.
|
|
381
|
-
const intentId = await linkInlineIntent(deps, asString(args['sessionId']), asString(args['intent']), PredicateKind.SETTLED === until.kind ? undefined : until);
|
|
382
|
-
// Everything refusable without touching the page — see act-preflight.ts.
|
|
383
|
-
preflightAct(asRecord(args['args']), until);
|
|
384
|
-
// Resolve `target` to a ref BEFORE the action window opens, so the lookup is not attributed to
|
|
385
|
-
// the act and cannot be mistaken for something the action caused.
|
|
386
|
-
const resolved = await resolveActTarget(session, args);
|
|
387
|
-
if ('error' === resolved.kind)
|
|
388
|
-
throw new Error(resolved.message);
|
|
389
|
-
let since = session.elapsed();
|
|
390
|
-
const actedSince = since;
|
|
391
|
-
// The cursor + effect are marked after the act dispatches (below) — a refused act leaves none.
|
|
392
|
-
// The attribution window stays open across the settle wait below, so post-dispatch async events
|
|
393
|
-
// (the whole point of act_and_wait) attribute to this action. finishAction fires after the wait.
|
|
394
|
-
session.beginAction(ReticleTool.ACT_AND_WAIT, asRecord(args));
|
|
395
|
-
let settledOutcome;
|
|
396
|
-
// The verdict, written into the action record so a LATER turn can read what this one proved.
|
|
397
|
-
// A verdict that lives only in the response lives only in the agent's context window, which is
|
|
398
|
-
// exactly the copy a compaction destroys — see runs/run-context.ts.
|
|
399
|
-
let verdictEffect;
|
|
400
|
-
// Was the declared consequence ALREADY TRUE? Only asked for predicates that read live DOM
|
|
401
|
-
// state — event-based ones are floored at this act's cursor and cannot be satisfied by the
|
|
402
|
-
// past, so they need no pre-check and pay nothing. One extra query, on the path where a green
|
|
403
|
-
// is otherwise unfalsifiable. See honesty/already-true.
|
|
404
|
-
const alreadyTruePrecheck = until !== undefined && readsDomState(until)
|
|
405
|
-
? await evaluatePredicate(session, until, since, false)
|
|
406
|
-
: undefined;
|
|
407
|
-
const alreadyTrue = alreadyTruePrecheck?.pass ?? false;
|
|
408
|
-
// #889: the pre-check evidence is already in hand — cheap to also ask whether that match was
|
|
409
|
-
// against something hidden, so the already_true message can name it instead of leaving the
|
|
410
|
-
// agent to re-derive "was this actually showing?" from nothing.
|
|
411
|
-
const alreadyTrueHiddenMatch = alreadyTrue && until !== undefined
|
|
412
|
-
? alreadyTrueHiddenMatchOf(until, alreadyTruePrecheck?.evidence)
|
|
413
|
-
: false;
|
|
414
|
-
try {
|
|
415
|
-
// actCommand is the single interception point for upload+path rewrite.
|
|
416
|
-
//
|
|
417
|
-
// A replacement can land BETWEEN resolving the target and dispatching, and the tool used to
|
|
418
|
-
// throw that transport fact at the agent verbatim: no verdict at all, from the layer whose
|
|
419
|
-
// whole job is to answer in verdicts, worded as though the app were at fault. `dispatchAct`
|
|
420
|
-
// returns null instead (see act-preflight.ts for why a write is never re-sent), and the
|
|
421
|
-
// successor block below then asks whether the consequence held on the NEW document — a
|
|
422
|
-
// green if it did, an honest observation_lost if it did not.
|
|
423
|
-
const actResult = await dispatchAct(() => actCommand(deps, session, {
|
|
424
|
-
ref: resolved.ref,
|
|
425
|
-
action: args['action'],
|
|
426
|
-
args: args['args'] ?? {},
|
|
427
|
-
}));
|
|
428
|
-
if (actResult !== null) {
|
|
429
|
-
if (!actResult.ok)
|
|
430
|
-
throw new Error(actResult.error ?? 'act failed');
|
|
431
|
-
captureAct(deps.recordings, args, actResult.result);
|
|
432
|
-
// Dispatched — now this act owns the cursor and the effect. Marking its OWN measurement
|
|
433
|
-
// also stops the spread below from inheriting an earlier reticle_act's action and
|
|
434
|
-
// mutation count.
|
|
435
|
-
session.lastAct.markActed(since, asString(args['action']), mutatedWithin(asRecord(actResult.result)), asString(args['ref']));
|
|
436
|
-
}
|
|
437
|
-
// Honesty: floor the predicate at this act's cursor so a stale buffered event can't satisfy it.
|
|
438
|
-
const predicateStarted = session.elapsed();
|
|
439
|
-
let verdict = null === actResult
|
|
440
|
-
? { pass: false, observationLost: true }
|
|
441
|
-
: timeout > 0
|
|
442
|
-
? await waitForPredicate(session, until, timeout, since)
|
|
443
|
-
: await evaluatePredicate(session, until, since);
|
|
444
|
-
// The SDK may have gone away mid-act — see act-observation.ts.
|
|
445
|
-
const followed = await followLostObservation({
|
|
446
|
-
sessions: deps.sessions,
|
|
447
|
-
session,
|
|
448
|
-
verdict,
|
|
449
|
-
timeout,
|
|
450
|
-
predicateStarted,
|
|
451
|
-
reevaluate: (next, budget) => waitForPredicate(next, until, budget, 0),
|
|
452
|
-
});
|
|
453
|
-
if (followed.followed)
|
|
454
|
-
since = 0;
|
|
455
|
-
session = followed.session;
|
|
456
|
-
verdict = followed.verdict;
|
|
457
|
-
// The predicate resolves the INSTANT it holds, which on an optimistically-navigating app is
|
|
458
|
-
// while the write is still in flight — so the verdict was taken over a window the app had not
|
|
459
|
-
// finished, and came back `unknown / unsettled` asking the CALLER to re-check. A login that
|
|
460
|
-
// genuinely succeeded returned at 492ms of an 8000ms budget with every corroborating channel
|
|
461
|
-
// agreeing. Spend the rest of the budget the caller already granted.
|
|
462
|
-
//
|
|
463
|
-
// This decides nothing: it waits for the answer instead of guessing at it. A response that
|
|
464
|
-
// arrives as a FAILURE still contradicts — and now arrives INSIDE the window, where the
|
|
465
|
-
// detector can see it at all — while a request still open when the budget genuinely runs out
|
|
466
|
-
// reports unsettled exactly as before, an honest limit rather than an early exit. Costs
|
|
467
|
-
// nothing on the common path, where no request is in flight.
|
|
468
|
-
if (verdict.pass && timeout > 0) {
|
|
469
|
-
const sleep = {
|
|
470
|
-
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
|
|
471
|
-
};
|
|
472
|
-
const spent = () => timeout - (session.elapsed() - predicateStarted);
|
|
473
|
-
await waitForInFlight(session, since, spent(), sleep);
|
|
474
|
-
// Waiting for the response moved the hazard rather than removing it: the response now lands
|
|
475
|
-
// inside the window BY DESIGN, and the app's re-render happens a task or two later. Close
|
|
476
|
-
// the window in that gap and every channel agrees the app took a successful write and did
|
|
477
|
-
// nothing — `response-ignored`, i.e. `verified:"no"` on a correct app, produced entirely by
|
|
478
|
-
// where we stopped looking. A false accusation is the more damaging direction of error for
|
|
479
|
-
// a verification tool: it sends someone to fix code that is not broken.
|
|
480
|
-
//
|
|
481
|
-
// So the response is not the end of the window; the app's REACTION to it is. Paid only in
|
|
482
|
-
// the shape that would otherwise be accused — a successful mutating write with nothing
|
|
483
|
-
// moved after it — and short enough that a genuinely dropped response is still reported.
|
|
484
|
-
await waitForReaction(session, since, spent(), sleep);
|
|
485
|
-
}
|
|
486
|
-
const r = asRecord(actResult?.result);
|
|
487
|
-
if ('boolean' === typeof r['settled'])
|
|
488
|
-
settledOutcome = r['settled'];
|
|
489
|
-
// Where the acted element is written. Captured at act time alongside the anchor, so it is
|
|
490
|
-
// available even when the action unmounted its own target.
|
|
491
|
-
const actedSource = sourceOf(r['source']);
|
|
492
|
-
// Remembered on the session so a LATER assertion can name a file even when its failure has no
|
|
493
|
-
// element to point at — a signal that never fired, a request that was never made.
|
|
494
|
-
const actedSourceLabel = actedSource === undefined ? undefined : `${actedSource.file}:${String(actedSource.line)}`;
|
|
495
|
-
session.lastAct.markSource(actedSourceLabel);
|
|
496
|
-
const windowEvents = session.eventsSince(since);
|
|
497
|
-
const trace = summarizeReaction(buildReactionReport(windowEvents, session.elapsed() - since));
|
|
498
|
-
// The bounded Tier-1 causal summary — net/console/state/storage diffs the trace's counts miss.
|
|
499
|
-
// ponytail: Layer B validation of this result-shape change is pending — additive + bounded.
|
|
500
|
-
// On RED only, attach the Tier-2 divergence capsule (first-divergence + blast radius). Red-only,
|
|
501
|
-
// so the common green path — what the loop optimizes — is unchanged; on red, diagnosis is the point.
|
|
502
|
-
const links = predicateToExpectedLinks(until);
|
|
503
|
-
// Read before the capsule, which needs it: a window the buffer trimmed cannot state an
|
|
504
|
-
// absolute about what did NOT happen. See CausalSummary.truncated.
|
|
505
|
-
const bufferLost = session.lostSince(since);
|
|
506
|
-
const capsule = verdict.pass
|
|
507
|
-
? undefined
|
|
508
|
-
: buildDivergenceCapsule(links, windowEvents, bufferLost);
|
|
509
|
-
// Grade from what the verdict PROVED, not what it declared. A green anyOf holds on one branch, so
|
|
510
|
-
// grading off `links` (every branch) would let a presence-only OR report grade `signal` — a false
|
|
511
|
-
// green in the gate itself. `provenExpectedLinks` narrows a green to the branch that actually held;
|
|
512
|
-
// on red we keep the declared links (the capsule wants the full expected surface).
|
|
513
|
-
const gradedLinks = verdict.pass ? await provenExpectedLinks(session, until, since) : links;
|
|
514
|
-
// Honesty: the grade this verdict actually proved + capture integrity — a green never looks
|
|
515
|
-
// stronger than this block. Grade from the strongest asserted consequence; integrity from evictions.
|
|
516
|
-
// Coverage: cross-origin frames / other blind spots the SDK reported during this window mean the
|
|
517
|
-
// verdict didn't see everything — say so, never imply full coverage.
|
|
518
|
-
const spots = blindSpotsFromState(session.blindSpots(), session.runtime);
|
|
519
|
-
const coverage = buildCoverageStatement(spots);
|
|
520
|
-
const absenceBlindSpot = absenceBlindSpotNote(until, spots);
|
|
521
|
-
// Nothing subscribed ⇒ the state channel is dark, and the summary must say so rather than
|
|
522
|
-
// report an empty diff list that reads like a fact about the app. See CausalSummary.
|
|
523
|
-
const stateUnwatched = isStateUnwatched(spots);
|
|
524
|
-
// Only a spot that IMPEACHES the capture belongs in integrity — see impeachesCapture. A
|
|
525
|
-
// structural boundary (virtualized rows, a cross-origin frame) is reported as coverage and
|
|
526
|
-
// must not downgrade a verdict about what WAS observed.
|
|
527
|
-
const impeaching = buildCoverageStatement(spots.filter((s) => impeachesCapture(s.kind)));
|
|
528
|
-
// Same rule as reticle_assert: a browser-side transport gap means part of this window was
|
|
529
|
-
// never seen, which is what `blindSpots` exists to say. `truncated` above covers the SERVER
|
|
530
|
-
// ring buffer evicting; this covers the BROWSER queue overflowing, and they are not the same
|
|
531
|
-
// loss — an act_and_wait that graded `proved` over 34 dropped events said so in a sentence
|
|
532
|
-
// whose own words were "over a clean capture".
|
|
533
|
-
const gapNote = transportGapNote(windowEvents);
|
|
534
|
-
const impeachingNotes = [impeaching.note, gapNote].filter((n) => n !== undefined);
|
|
535
|
-
// Which loss, as an enum, beside the prose that describes it. Classified here because this is
|
|
536
|
-
// the only place that knows the three apart: our buffer, our transport, and the page's own
|
|
537
|
-
// boundaries. See `CaptureLoss`.
|
|
538
|
-
const losses = [
|
|
539
|
-
...(bufferLost ? [CaptureLoss.BUFFER_LOSS] : []),
|
|
540
|
-
...(gapNote === undefined ? [] : [CaptureLoss.TRANSPORT_GAP]),
|
|
541
|
-
...(impeaching.note === undefined ? [] : [CaptureLoss.BLIND_SPOT]),
|
|
542
|
-
];
|
|
543
|
-
// Named because the discharge below records the same grade the verdict reports, rather than a
|
|
544
|
-
// second reading of the same evidence that could drift from it.
|
|
545
|
-
const grade = gradeOf(gradedLinks);
|
|
546
|
-
const honesty = buildHonestyBlock({
|
|
547
|
-
grade,
|
|
548
|
-
attribution: 'window',
|
|
549
|
-
// Did the buffer lose scarce evidence FROM THIS WINDOW — not "did it evict anything while
|
|
550
|
-
// the action ran", which was the previous rule and which is true on essentially every live
|
|
551
|
-
// page. Age eviction retires everything past 60s on every push, and the churn floor is
|
|
552
|
-
// sacrificed on purpose; neither costs this verdict a single event it needed. In the
|
|
553
|
-
// field this made `unclean_capture` the dominant cause of `unknown`, reported for
|
|
554
|
-
// evictions that happened outside the window they impeached.
|
|
555
|
-
truncated: bufferLost,
|
|
556
|
-
coveragePartial: Coverage.PARTIAL === coverage.coverage,
|
|
557
|
-
...(coverage.note === undefined ? {} : { coverageNote: coverage.note }),
|
|
558
|
-
// Settlement no longer vetoes a declared consequence that held, so the fact is carried
|
|
559
|
-
// here instead of only in the verdict it used to decide. Omitted when never measured.
|
|
560
|
-
...(settledOutcome === undefined ? {} : { settled: settledOutcome }),
|
|
561
|
-
...(0 === impeachingNotes.length ? {} : { blindSpots: impeachingNotes }),
|
|
562
|
-
losses,
|
|
563
|
-
});
|
|
564
|
-
const capsuleSaved = await saveFailedAssertCapsule({
|
|
565
|
-
deps,
|
|
566
|
-
verdict,
|
|
567
|
-
capsule,
|
|
568
|
-
links,
|
|
569
|
-
args,
|
|
570
|
-
// The session actually driven — after any navigation follow — so the capsule is filed
|
|
571
|
-
// against the codebase that produced the failure, not wherever the daemon stands.
|
|
572
|
-
root: session.artifactRoot,
|
|
573
|
-
// No dispatch result to capture when the transport was displaced mid-write.
|
|
574
|
-
actResult: actResult ?? {},
|
|
575
|
-
...(actedSource === undefined ? {} : { actedSource }),
|
|
576
|
-
});
|
|
577
|
-
// Pass the action: an EMPTY window then reads as "the target does not react" rather than as a
|
|
578
|
-
// clean run — `settled` is satisfied by a page that did nothing, i.e. by a click that missed.
|
|
579
|
-
const acted = asString(args['action']);
|
|
580
|
-
// `prior` matters here for the same reason it matters on the assert path: a SCALE error
|
|
581
|
-
// disagrees with a value the API stated EARLIER in the session, which an action-scoped
|
|
582
|
-
// window can never contain. Without it `unit-mismatch` — the money false green, where a
|
|
583
|
-
// total renders 100x off — is structurally unreachable from `act_and_wait`, which is the
|
|
584
|
-
// tool the product tells agents to reach for first. Our best detector could not fire on our
|
|
585
|
-
// flagship path, and nothing said so: the finding was simply never produced.
|
|
586
|
-
//
|
|
587
|
-
// Learning material only. Attribution is unchanged — findings still come exclusively from
|
|
588
|
-
// `windowEvents`, exactly as on the assert path.
|
|
589
|
-
const prior = since > 0 ? (await session.queryEvents({ since: 0 })).filter((e) => e.t < since) : [];
|
|
590
|
-
//
|
|
591
|
-
// `actionSince` is the window's own floor here, which is the tightest attribution there is —
|
|
592
|
-
// and it is what lets `duplicate-request` claim "one user action was performed" and mean it.
|
|
593
|
-
// What the caller DECLARED before acting, handed to the detector that would otherwise judge
|
|
594
|
-
// the window as if nobody had said what they expected. See events/declared.ts.
|
|
595
|
-
const declared = declaredExpectations(until);
|
|
596
|
-
const contradictions = findContradictions(windowEvents, {
|
|
597
|
-
action: acted,
|
|
598
|
-
prior,
|
|
599
|
-
actionSince: since,
|
|
600
|
-
expectedFailures: declared.netFailures,
|
|
601
|
-
// A consequence that was already true before the action proves nothing about it, so it is
|
|
602
|
-
// not evidence the destination rendered either — `alreadyTrue` decides that, once.
|
|
603
|
-
renderProved: verdict.pass && !alreadyTrue && declared.rendersContent,
|
|
604
|
-
...session.lastAct.effect(),
|
|
605
|
-
currentDocumentId: session.currentDocumentId,
|
|
606
|
-
currentEditEpoch: session.currentEditEpoch,
|
|
607
|
-
appOrigin: session.url,
|
|
608
|
-
});
|
|
609
|
-
// The single field an agent reads. Everything below it is the evidence it was derived from;
|
|
610
|
-
// this is the only one that has to be interpreted, and now it interprets itself.
|
|
611
|
-
const outcomePending = hasAcceptedWrite(windowEvents);
|
|
612
|
-
const outcomeUnread = unreadWriteLabels(windowEvents);
|
|
613
|
-
const stillInFlight = inFlightRequestLabels(windowEvents);
|
|
614
|
-
const decision = decideVerified({
|
|
615
|
-
pass: verdict.pass,
|
|
616
|
-
// So the unread-body remedy can check it applies to THIS page. Threaded rather than
|
|
617
|
-
// looked up inside decideVerified, which is pure and has no session.
|
|
618
|
-
...(session.sdkVersion === undefined ? {} : { sdkVersion: session.sdkVersion }),
|
|
619
|
-
// The caller NAMED the consequence rather than defaulting to "wait for idle". A
|
|
620
|
-
// declaration made before the action is what this tool sells, and idle-settlement was
|
|
621
|
-
// overriding it — see `declaredConsequence`. An explicit `{ kind: "settled" }` is not a
|
|
622
|
-
// declaration about the app's behaviour, it IS the idle wait, so it does not count.
|
|
623
|
-
declaredConsequence: until.kind !== PredicateKind.SETTLED,
|
|
624
|
-
// A body-independent declaration that held is a channel the unread payload does not own.
|
|
625
|
-
// Omit when false: a net-only `until` must still hit `outcome_unread`.
|
|
626
|
-
...(declaresBodyIndependentChannel(until) ? { independentOfBody: true } : {}),
|
|
627
|
-
...(alreadyTrue ? { alreadyTrue } : {}),
|
|
628
|
-
...(alreadyTrueHiddenMatch ? { alreadyTrueHiddenMatch } : {}),
|
|
629
|
-
// An assertion nobody could evaluate must not be reported as one the app failed.
|
|
630
|
-
...(verdict.inconclusive === undefined ? {} : { inconclusive: verdict.inconclusive }),
|
|
631
|
-
// Nor must one nobody could OBSERVE. This is the act path, so it is the one that produced
|
|
632
|
-
// the measured false red: a reload mid-wait, graded assertion_failed at the clicked
|
|
633
|
-
// component's own file and line.
|
|
634
|
-
...(true === verdict.observationLost
|
|
635
|
-
? { observationLost: true, lastUrl: session.url }
|
|
636
|
-
: {}),
|
|
637
|
-
...(absenceBlindSpot === undefined ? {} : { absenceBlindSpot }),
|
|
638
|
-
honesty,
|
|
639
|
-
contradictions,
|
|
640
|
-
...(outcomePending ? { outcomePending } : {}),
|
|
641
|
-
...(outcomeUnread.length > 0 ? { outcomeUnread } : {}),
|
|
642
|
-
// `settled` is genuinely optional: a wait that declared no predicate never measured it, and
|
|
643
|
-
// passing `false` there would report "never settled" about something never asked to settle.
|
|
644
|
-
...(settledOutcome === undefined ? {} : { settled: settledOutcome }),
|
|
645
|
-
// What the wait was for and what was still outstanding when it ended. Read only by the
|
|
646
|
-
// UNSETTLED clauses; supplied always because both of them are reachable from here and the
|
|
647
|
-
// window is already in hand.
|
|
648
|
-
unsettled: {
|
|
649
|
-
waitedFor: describeWaitTarget(until),
|
|
650
|
-
stillInFlight,
|
|
651
|
-
// The retry loop that leaves nothing outstanding — see repeatedRequestLabels.
|
|
652
|
-
repeated: repeatedRequestLabels(windowEvents),
|
|
653
|
-
},
|
|
654
|
-
...(namedNetIsInFlight(until, stillInFlight) ? { namedRequestInFlight: true } : {}),
|
|
655
|
-
});
|
|
656
|
-
// Computed once: the verdict block reports it, and the instrumentation gaps are a second
|
|
657
|
-
// reading of the same evidence rather than a new observation.
|
|
658
|
-
const actionSummary = causalSummary(windowEvents, {
|
|
659
|
-
stateUnwatched,
|
|
660
|
-
truncated: bufferLost,
|
|
661
|
-
});
|
|
662
|
-
// Asked of every verdict drawn after an observed edit, not once per edit — see
|
|
663
|
-
// isChangeUndeclared for why repeating it is disclosure rather than nagging.
|
|
664
|
-
// Read ONCE and used twice: `changeUndeclared` asks whether the ledger is empty, and the
|
|
665
|
-
// undischarged-intent gap asks how much it still holds. Two reads would be two chances for
|
|
666
|
-
// them to disagree about the same file.
|
|
667
|
-
const openIntents = await openSessionIntents(deps, asString(args['sessionId']));
|
|
668
|
-
const changeUndeclared = await isChangeUndeclared(session.currentEditEpoch, () => Promise.resolve(openIntents));
|
|
669
|
-
const gaps = gapsForAction({
|
|
670
|
-
pass: verdict.pass,
|
|
671
|
-
proved: decision.verifiedReason === VerifiedReason.PROVED,
|
|
672
|
-
changeUndeclared,
|
|
673
|
-
source: actedSourceLabel,
|
|
674
|
-
ref: asString(args['ref']),
|
|
675
|
-
stateAsked: declaresState(until),
|
|
676
|
-
stateUnwatched,
|
|
677
|
-
// What the app DECLARED, so an under-instrumented one is told without having to be asked.
|
|
678
|
-
hasCapabilities: session.hasCapabilities,
|
|
679
|
-
// Whether the build TURNED the source stamp off, so a red with no file:line prescribes the
|
|
680
|
-
// right fix. `false` from the page is the only value that means anything; absent is unknown.
|
|
681
|
-
...(false === session.sourceMapping ? { sourceMappingDisabled: true } : {}),
|
|
682
|
-
// What the run still owes. A green that leaves this above zero is not the same as done.
|
|
683
|
-
// MINUS the one this verdict is about to discharge.
|
|
684
|
-
//
|
|
685
|
-
// The discharge happens below, after the gaps are built, so a straight `openIntents.length`
|
|
686
|
-
// counts the intent this very call proves. Measured live on the first drive: an inline
|
|
687
|
-
// intent was declared, asserted and PROVED by the same verdict, and the result still said
|
|
688
|
-
// "1 declared intent(s) are still unproved" while the ledger recorded it `proved`. A gap
|
|
689
|
-
// that fires on the one path doing everything right is noise, and noise is what gets
|
|
690
|
-
// filtered out — taking the honest gaps with it.
|
|
691
|
-
...intentDebt(openIntents, intentId !== undefined && Verified.YES === decision.verified ? intentId : undefined, deps.now()),
|
|
692
|
-
domMutated: (session.lastAct.effect().mutatedWithin ?? 0) > 0,
|
|
693
|
-
signalsFired: actionSummary.signals.length,
|
|
694
|
-
routeChanged: actionSummary.route !== undefined,
|
|
695
|
-
routeSignalFired: actionSummary.signals.some((name) => name.startsWith('route')),
|
|
696
|
-
});
|
|
697
|
-
// The verdict IS the proof attempt, so a green one discharges the intent it was drawn for.
|
|
698
|
-
// Only a green: a red proved nothing, and `dischargeIntent` refuses an unbound intent anyway,
|
|
699
|
-
// so a bare settle leaves it open rather than collecting a proof nothing earned. The id is
|
|
700
|
-
// checked here rather than only inside the helper so a caller that declared no intent touches
|
|
701
|
-
// nothing at all, not even the clock.
|
|
702
|
-
if (intentId !== undefined && Verified.YES === decision.verified) {
|
|
703
|
-
await dischargeInlineIntent(deps, asString(args['sessionId']), intentId, {
|
|
704
|
-
verdictId: inlineVerdictId(ReticleTool.ACT_AND_WAIT, deps.now()),
|
|
705
|
-
grade,
|
|
706
|
-
at: deps.now(),
|
|
707
|
-
},
|
|
708
|
-
// Where the acted element is written, so the record can name a file somebody would open
|
|
709
|
-
// to change the thing it describes.
|
|
710
|
-
actedSourceLabel);
|
|
711
|
-
}
|
|
712
|
-
verdictEffect = {
|
|
713
|
-
claim: describeWaitTarget(until),
|
|
714
|
-
verified: decision.verified,
|
|
715
|
-
...(actedSourceLabel === undefined ? {} : { source: actedSourceLabel }),
|
|
716
|
-
};
|
|
717
|
-
// Recorded on the session, so a later "am I done?" can answer with what is STILL missing
|
|
718
|
-
// rather than with everything that was ever missing. An empty list closes a gap, which is
|
|
719
|
-
// why it is noted rather than skipped.
|
|
720
|
-
noteSessionGaps(session, gaps);
|
|
721
|
-
return withControl(session, {
|
|
722
|
-
...decision,
|
|
723
|
-
// An unobserved act has no effect to report, and inventing an empty one would read as
|
|
724
|
-
// "the page did nothing" — a claim about the app, from a call that never saw it.
|
|
725
|
-
...(null === actResult ? {} : { effect: leanActResult(actResult.result) }),
|
|
726
|
-
verdict,
|
|
727
|
-
// Promoted out of `effect` on red only. On green nobody needs it and it is noise; on red it
|
|
728
|
-
// is the first thing the agent wants, and burying a file:line inside the effect block is
|
|
729
|
-
// most of the way to not reporting it at all.
|
|
730
|
-
...(verdict.pass || actedSourceLabel === undefined ? {} : { source: actedSourceLabel }),
|
|
731
|
-
trace,
|
|
732
|
-
...(capsuleSaved === undefined ? {} : { capsuleSaved }),
|
|
733
|
-
// The window cannot say whether anything was WATCHING state — that is a level fact the
|
|
734
|
-
// session holds. Without it an empty `stateDiffs` reads as "the app changed nothing".
|
|
735
|
-
summary: actionSummary,
|
|
736
|
-
// What the APP did not tell Reticle, and the one change that would fix it. Reported only
|
|
737
|
-
// where an absence made this very verdict weaker — never as a survey of the page.
|
|
738
|
-
...(gaps.length > 0 ? { instrumentationGaps: gaps } : {}),
|
|
739
|
-
// Cross-channel disagreement, reported WITH the action that caused it.
|
|
740
|
-
//
|
|
741
|
-
// This is the one finding here a human structurally cannot make — they watch one channel,
|
|
742
|
-
// the screen, so a UI that advanced while its write failed looks like success to them and
|
|
743
|
-
// always will. It ran only inside reticle_observe, which means it was found only when the
|
|
744
|
-
// agent already suspected something and thought to go looking. That inverts the value: the
|
|
745
|
-
// whole point is catching what NOBODY suspected. It now travels with the action, so an
|
|
746
|
-
// agent cannot miss it by not asking. Omitted entirely when clean, so a healthy action
|
|
747
|
-
// pays nothing.
|
|
748
|
-
...(contradictions.length > 0 ? { contradictions } : {}),
|
|
749
|
-
honesty: honestyForVerdict(String(decision.verified), honesty),
|
|
750
|
-
...(capsule === undefined ? {} : { capsule }),
|
|
751
|
-
since,
|
|
752
|
-
...(session.id === actedSessionId ? {} : { sessionId: session.id }),
|
|
753
|
-
...healthEnvelope(session),
|
|
754
|
-
});
|
|
755
|
-
}
|
|
756
|
-
finally {
|
|
757
|
-
acted.finishAction(verdictEffect, settledOutcome, true === settledOutcome ? acted.elapsed() - actedSince : undefined);
|
|
758
|
-
}
|
|
759
|
-
},
|
|
760
|
-
},
|
|
761
|
-
// Split into its own module for size; still shipped as one of the acting tools.
|
|
762
|
-
ACT_SEQUENCE_TOOL,
|
|
763
|
-
];
|