@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
|
@@ -0,0 +1,668 @@
|
|
|
1
|
+
import { healthEnvelope } from '../../portal/session/session-health.js';
|
|
2
|
+
import { verifyNextBaton, SUPPRESS_VERIFY_NEXT_ENV } from './verify-next-baton.js';
|
|
3
|
+
import { TelemetryActor, TelemetryEventKind, TRANSPORT_LIMITS, fingerprintFinding, } from '@reticlehq/core';
|
|
4
|
+
import { getSessionMetrics } from '../../telemetry/session-metrics.js';
|
|
5
|
+
import { getTelemetry } from '../../telemetry/telemetry.js';
|
|
6
|
+
import { takeUpdateNudge } from '../../command/update/update-nudge.js';
|
|
7
|
+
import { takeVersionSkew } from '../../command/version/version-nudge.js';
|
|
8
|
+
import { rewriteClosedAsSkew } from '../../command/version/version-skew.js';
|
|
9
|
+
import { noteToolCall } from '../../command/daemon/lifetime/daemon-usefulness.js';
|
|
10
|
+
import { bugsInResult, routeOf } from '../../telemetry/bug-found.js';
|
|
11
|
+
import { noteToolServed, reportToolRefused } from '../../telemetry/tool-refused.js';
|
|
12
|
+
import { buildErrorPayload, refusalReasonFor } from './error-recovery.js';
|
|
13
|
+
import { resultIsError } from '../mcp/faults/mcp-is-error.js';
|
|
14
|
+
import { verificationOf } from '../../telemetry/verification-of.js';
|
|
15
|
+
import { emitBugFoundHook, emitVerdictHook } from '../../hooks/hook-emit.js';
|
|
16
|
+
import { reportOnboardingStep } from '../../telemetry/onboarding-funnel.js';
|
|
17
|
+
import { noteActed, noteFirstVerdict, noteOnboardingFirst } from '../../telemetry/onboarding-firsts.js';
|
|
18
|
+
import { withHarnessDrive } from '../../telemetry/harness-drive.js';
|
|
19
|
+
import { OnboardingPhase, OnboardingStepStatus } from '@reticlehq/core/telemetry';
|
|
20
|
+
import { asString } from '@reticlehq/core';
|
|
21
|
+
import { SESSION_ID_ARG, sessionIdFromArgs, spentRefFromArgs } from './tools-helpers.js';
|
|
22
|
+
import { EnvelopeKey } from './tool-kit.js';
|
|
23
|
+
import { ReticleTool } from '@reticlehq/core';
|
|
24
|
+
import { takeFeedbackPrompt } from './feedback-tools.js';
|
|
25
|
+
import { takeFeedbackUndelivered } from '../../telemetry/feedback-delivery.js';
|
|
26
|
+
import { noteRefsMinted, wrongTabRefusal } from '../../portal/session/facts/ref-provenance.js';
|
|
27
|
+
import { CAPTURED_TOOLS, noteCapturedCall, noteToolDispatched, } from './feature-capture.js';
|
|
28
|
+
import { span } from '../../trace.js';
|
|
29
|
+
import { defectForToolResult, deltaForToolResult, impactSnapshot, initImpact, recordImpact, } from '../../memory/impact/impact-recorder.js';
|
|
30
|
+
import { frictionOf, inviteFor } from './feedback-invite.js';
|
|
31
|
+
/**
|
|
32
|
+
* The live-session tools whose result MUST carry the
|
|
33
|
+
* session-health envelope. Owned in ONE place — not retrofitted per handler — so a throttled tab
|
|
34
|
+
* can never return a healthy-looking result from any of these. `runTool` is the single choke point
|
|
35
|
+
* (mcp.ts + tool-invoker.ts) that splices health on; the guard test asserts the set is exhaustive.
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Tools that DRIVE the page. An action with no verdict after it is the signature of the loop
|
|
39
|
+
* breaking mid-task — see `abandonedActions`. `act_and_wait` is one of these AND a verification, so
|
|
40
|
+
* it settles its own action, which is exactly right: it is the tool that does both.
|
|
41
|
+
*/
|
|
42
|
+
const ACTION_TOOLS = new Set([
|
|
43
|
+
ReticleTool.ACT,
|
|
44
|
+
ReticleTool.ACT_SEQUENCE,
|
|
45
|
+
ReticleTool.ACT_AND_WAIT,
|
|
46
|
+
]);
|
|
47
|
+
/**
|
|
48
|
+
* Tools that go through Playwright CDP rather than the page SDK.
|
|
49
|
+
*
|
|
50
|
+
* Under version skew these fail with "Target page, context or browser has been closed" while every
|
|
51
|
+
* DOM tool against the same tab still works (#688). They are session-EXEMPT (own result contracts),
|
|
52
|
+
* so the bound-tool resolve above never runs for them — resolve again here so we can refuse with
|
|
53
|
+
* the skew sentence before Playwright lies about a closed page.
|
|
54
|
+
*/
|
|
55
|
+
const CDP_TOOLS = new Set([
|
|
56
|
+
ReticleTool.SCREENSHOT,
|
|
57
|
+
ReticleTool.VISUAL_DIFF,
|
|
58
|
+
ReticleTool.NETWORK_MOCK,
|
|
59
|
+
ReticleTool.VIEWPORT,
|
|
60
|
+
// Breaks a request through the same Playwright route `reticle_network_mock` uses, so it fails the
|
|
61
|
+
// same way under version skew and must be refused with the same sentence.
|
|
62
|
+
ReticleTool.FLOW_MUTATE,
|
|
63
|
+
]);
|
|
64
|
+
/**
|
|
65
|
+
* Tools whose result hands the agent refs. The tab they were minted in is remembered, so the call
|
|
66
|
+
* that spends one cannot be routed to a different tab without saying so — see ref-provenance.ts.
|
|
67
|
+
*
|
|
68
|
+
* Over-inclusion is the safe direction here and under-inclusion is not dangerous either: both ends
|
|
69
|
+
* produce a REFUSAL naming the two tabs, never a silent drive against the wrong one.
|
|
70
|
+
*/
|
|
71
|
+
const REF_MINTING_TOOLS = new Set([
|
|
72
|
+
ReticleTool.SNAPSHOT,
|
|
73
|
+
ReticleTool.QUERY,
|
|
74
|
+
ReticleTool.INSPECT,
|
|
75
|
+
// The same three merged, on the `merged` surface. Its `state` action mints nothing, and
|
|
76
|
+
// over-inclusion is the safe direction here: the worst case is a refusal naming two tabs.
|
|
77
|
+
ReticleTool.LOOK,
|
|
78
|
+
ReticleTool.EXPLORE,
|
|
79
|
+
// `crawl` mints refs for the controls it drives and `coverage` for the ones it reports untouched.
|
|
80
|
+
// Both are actions on the merged verify tool now.
|
|
81
|
+
ReticleTool.VERIFY,
|
|
82
|
+
]);
|
|
83
|
+
export const SESSION_BOUND_TOOLS = new Set([
|
|
84
|
+
// Resolves a session and reads its event window (`session.eventsSince`), exactly as OBSERVE and
|
|
85
|
+
// NETWORK do. Without this it runs with no session and answers from nothing.
|
|
86
|
+
ReticleTool.SNAPSHOT,
|
|
87
|
+
ReticleTool.QUERY,
|
|
88
|
+
ReticleTool.INSPECT,
|
|
89
|
+
// All four merged. Every member here is session-bound, so unlike `verify` there is no split to
|
|
90
|
+
// adjudicate — the merged tool inherits the only answer its members ever gave.
|
|
91
|
+
ReticleTool.LOOK,
|
|
92
|
+
// Merged change/flows/affected/coverage/crawl. Its members were SPLIT across bound and exempt —
|
|
93
|
+
// coverage/change/crawl bound, flow_verify exempt because it returns its own suite contract — and
|
|
94
|
+
// a merged tool has to be one or the other. Bound is the right side: `crawl` drives the app
|
|
95
|
+
// itself, so a throttled or event-dropping tab is exactly the condition its verdict depends on,
|
|
96
|
+
// and dropping the health disclosure there to protect a sibling's output shape would trade an
|
|
97
|
+
// honesty signal for a formatting preference.
|
|
98
|
+
ReticleTool.VERIFY,
|
|
99
|
+
ReticleTool.ACT,
|
|
100
|
+
ReticleTool.ACT_SEQUENCE,
|
|
101
|
+
ReticleTool.ACT_AND_WAIT,
|
|
102
|
+
ReticleTool.OBSERVE,
|
|
103
|
+
ReticleTool.WAIT_FOR,
|
|
104
|
+
ReticleTool.ASSERT,
|
|
105
|
+
// Reads the live page as well as the event window, so a throttled tab can make it compare a stale
|
|
106
|
+
// render against fresh data — exactly the case the health envelope exists to disclose.
|
|
107
|
+
ReticleTool.RECONCILE,
|
|
108
|
+
ReticleTool.NETWORK,
|
|
109
|
+
ReticleTool.CONSOLE,
|
|
110
|
+
ReticleTool.ANIMATIONS,
|
|
111
|
+
ReticleTool.BASELINE, // merged save/list/diff — save+diff are live reads
|
|
112
|
+
ReticleTool.RECORD, // merged start/stop — both live
|
|
113
|
+
ReticleTool.REPLAY,
|
|
114
|
+
ReticleTool.CLOCK,
|
|
115
|
+
ReticleTool.STATE,
|
|
116
|
+
ReticleTool.STORAGE,
|
|
117
|
+
ReticleTool.EXPLORE,
|
|
118
|
+
ReticleTool.SCROLL_TO,
|
|
119
|
+
ReticleTool.NAVIGATE,
|
|
120
|
+
]);
|
|
121
|
+
/**
|
|
122
|
+
* Tools that carry a `sessionId` arg but are NOT live-session-health tools — they read/write
|
|
123
|
+
* disk (capabilities/contract/flow/project), drain a buffer, or steer session lifecycle. They are
|
|
124
|
+
* exempt from the health splice ON PURPOSE. Kept explicit so the guard test can force every new
|
|
125
|
+
* `sessionId`-bearing tool to be classified into exactly one set (bound XOR exempt).
|
|
126
|
+
*/
|
|
127
|
+
export const SESSION_EXEMPT_TOOLS = new Set([
|
|
128
|
+
ReticleTool.CAPABILITIES, // has a fromDisk mode with no live session
|
|
129
|
+
ReticleTool.CONTRACT_SAVE, // persists the registry to disk
|
|
130
|
+
ReticleTool.FLOW_SAVE, // sessionId only scopes the write to the app's flow subdir; disk-side
|
|
131
|
+
ReticleTool.FLOW, // merged list/load/delete — sessionId only scopes the project; all disk-side
|
|
132
|
+
ReticleTool.FLOW_REPLAY, // returns its own FlowReplayResult contract (+ auto-records a run)
|
|
133
|
+
ReticleTool.FLOW_SAVE_RECORDED, // reads the recording buffer, writes disk
|
|
134
|
+
// FLOW_HEAL is no longer a name runTool ever sees: it became `reticle_verify {action:"heal"}`,
|
|
135
|
+
// and VERIFY is already listed here, so the exemption is inherited from the parent. Left as a
|
|
136
|
+
// dangling name it would be a lie this file's own test 6 is written to catch.
|
|
137
|
+
ReticleTool.INTENT, // reads/writes .reticle/intent.json; sessionId only picks the project
|
|
138
|
+
ReticleTool.CONTEXT, // folds the journal + intent ledger; must still answer when nothing is connected
|
|
139
|
+
ReticleTool.PROJECT, // reads .reticle/project.json
|
|
140
|
+
// Reads the team's shared memory over HTTP; sessionId only resolves WHICH project's link file to
|
|
141
|
+
// use. It must answer with no tab connected — "what does this project know?" is a question an
|
|
142
|
+
// agent asks before it has opened anything.
|
|
143
|
+
ReticleTool.MEMORY,
|
|
144
|
+
ReticleTool.RUN_EXPORT, // reads .reticle/runs/<id>.json (verification-run artifact)
|
|
145
|
+
ReticleTool.SESSION, // merged lifecycle/human-channel family (tune/yield/end/resume/messages/review/narrate)
|
|
146
|
+
ReticleTool.SCREENSHOT, // own contract; provider-driven, not a live-DOM-health read
|
|
147
|
+
ReticleTool.VISUAL_DIFF, // own contract (matched/ratio/region)
|
|
148
|
+
ReticleTool.NETWORK_MOCK, // own contract (applied/count); provider-driven, not a live-DOM read
|
|
149
|
+
ReticleTool.VIEWPORT, // own contract (applied/width/height); provider-driven, not a live-DOM read
|
|
150
|
+
ReticleTool.ANNOTATE, // annotates a recording's steps; pure disk-side metadata, no live DOM read
|
|
151
|
+
ReticleTool.LEASE, // merged acquire/release — its sessionId is a pool lease id, not a live session
|
|
152
|
+
// Its sessionId only enriches the report with the tab's runtime/engine, and it must stay callable
|
|
153
|
+
// when NO session exists — "nothing ever connected" is feedback we especially want.
|
|
154
|
+
ReticleTool.FEEDBACK,
|
|
155
|
+
]);
|
|
156
|
+
/**
|
|
157
|
+
* The merged action that hands the drive to a model inside the daemon.
|
|
158
|
+
*
|
|
159
|
+
* Derived from the member tool's own name rather than spelled again: the merge dispatches on
|
|
160
|
+
* `action`, and `reticle_verify` plus `explore` IS `reticle_verify_explore`. A literal here would be
|
|
161
|
+
* a third spelling of one name, and the one that silently stops matching when the action is renamed.
|
|
162
|
+
*/
|
|
163
|
+
const HARNESS_DRIVE_ACTION = ReticleTool.VERIFY_EXPLORE.slice(`${ReticleTool.VERIFY}_`.length);
|
|
164
|
+
function isHarnessDrive(toolName, args) {
|
|
165
|
+
return ReticleTool.VERIFY === toolName && HARNESS_DRIVE_ACTION === args['action'];
|
|
166
|
+
}
|
|
167
|
+
function isPlainObject(value) {
|
|
168
|
+
return 'object' === typeof value && value !== null && !Array.isArray(value);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Emit `verification_completed` when a verification tool produced a verdict.
|
|
172
|
+
*
|
|
173
|
+
* Read off the RESULT here rather than emitted from `decideVerified`, which is where the verdict is
|
|
174
|
+
* actually decided: that function is pure, and the repo's rules keep clocks, IO and side effects out
|
|
175
|
+
* of pure logic for good reason. Reading the result also means all the verification tools are covered
|
|
176
|
+
* by one site instead of N handler edits, and the next one is covered the moment it joins the set.
|
|
177
|
+
*
|
|
178
|
+
* The RULE itself lives in verification-of.ts, because getting it wrong fails silently.
|
|
179
|
+
*/
|
|
180
|
+
function recordVerification(toolName, result, durationMs, brand, sessionId) {
|
|
181
|
+
const verification = verificationOf(toolName, result, durationMs, brand);
|
|
182
|
+
if (verification === undefined)
|
|
183
|
+
return;
|
|
184
|
+
getSessionMetrics().recordVerification();
|
|
185
|
+
void getTelemetry().emit(TelemetryEventKind.VERIFICATION_COMPLETED, {
|
|
186
|
+
actor: TelemetryActor.AGENT,
|
|
187
|
+
verification,
|
|
188
|
+
});
|
|
189
|
+
// The public half of the same moment. Nothing before this marks a user's own app actually being
|
|
190
|
+
// verified: `init_completed` fires when files are written, minutes earlier.
|
|
191
|
+
//
|
|
192
|
+
// Emitted from the site that already decided a verdict happened, so the two can never disagree —
|
|
193
|
+
// a second listener deciding for itself is a second thing that can stop firing.
|
|
194
|
+
//
|
|
195
|
+
// Idempotency is deliberately NOT applied: the step is per verdict, and a session that proves ten
|
|
196
|
+
// things is a different shape from one that proves one.
|
|
197
|
+
emitVerdictHook(toolName, result, verification.verified, sessionId);
|
|
198
|
+
// The ONBOARD half of the same moment: the first verdict of this run, once.
|
|
199
|
+
noteFirstVerdict();
|
|
200
|
+
void reportOnboardingStep({
|
|
201
|
+
phase: OnboardingPhase.FIRST_RUN,
|
|
202
|
+
step: 'verdict_produced',
|
|
203
|
+
status: OnboardingStepStatus.COMPLETED,
|
|
204
|
+
elapsedMs: Math.max(0, Math.round(durationMs)),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Emit one `bug_found` per defect in a tool result, and count it into the session.
|
|
209
|
+
*
|
|
210
|
+
* The outcome metric: everything else measures whether Reticle is used, this measures whether it
|
|
211
|
+
* works. Discrete events rather than only a counter, because the KIND distribution is the argument —
|
|
212
|
+
* "we found 4,000 bugs" is a claim, "1,200 were greens that lied" is evidence.
|
|
213
|
+
*/
|
|
214
|
+
function reportBugsFound(toolName, result, sessionId) {
|
|
215
|
+
const bugs = bugsInResult(toolName, result);
|
|
216
|
+
if (0 === bugs.length)
|
|
217
|
+
return;
|
|
218
|
+
const metrics = getSessionMetrics();
|
|
219
|
+
const route = routeOf(result);
|
|
220
|
+
for (const bug of bugs) {
|
|
221
|
+
// `recordBug` answers whether this kind is new to the session, which is the only thing that
|
|
222
|
+
// separates "another defect" from "the same defect again". Counting instances as defects is how
|
|
223
|
+
// a published number inflates itself.
|
|
224
|
+
const first = metrics.recordBug(bug.kind);
|
|
225
|
+
const identity = route !== undefined
|
|
226
|
+
? { kind: bug.kind, source: bug.source, route }
|
|
227
|
+
: { kind: bug.kind, source: bug.source };
|
|
228
|
+
const fingerprint = fingerprintFinding(identity);
|
|
229
|
+
void getTelemetry().emit(TelemetryEventKind.BUG_FOUND, {
|
|
230
|
+
actor: TelemetryActor.AGENT,
|
|
231
|
+
bug: { ...bug, repeat: !first, fingerprint },
|
|
232
|
+
});
|
|
233
|
+
// The same defect, said out loud to whoever is building on Reticle. Inside the loop rather than
|
|
234
|
+
// after it because the event is PER DEFECT — one event carrying a list would make a consumer
|
|
235
|
+
// unpack it to answer "what was found", which is the question they are subscribing to ask.
|
|
236
|
+
emitBugFoundHook(toolName, bug, { repeat: !first, fingerprint, route, sessionId });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Report a refused call, at the one place both dispatch paths cross.
|
|
241
|
+
*
|
|
242
|
+
* A refusal arrives two ways and they are the same event: the handler THROWS (the common case — no
|
|
243
|
+
* session, a stale ref, a schema rejection), or it RETURNS `{ error }`, which is this codebase's
|
|
244
|
+
* refusal convention and just as much a refusal. Both are classified by the same table the agent's
|
|
245
|
+
* recovery advice comes from, so the reason we record and the advice it got cannot describe
|
|
246
|
+
* different things.
|
|
247
|
+
*
|
|
248
|
+
* `reticle_run` is skipped for the same reason `bugsInResult` skips it: it is a WRAPPER whose
|
|
249
|
+
* handler calls `runTool` on the real tool, which already reported that refusal under the real
|
|
250
|
+
* tool's name, and then hands the same failure back out to be reported a second time as
|
|
251
|
+
* `reticle_run`. A count that doubles because of HOW a tool was reached is not a measurement.
|
|
252
|
+
*/
|
|
253
|
+
function reportRefusal(toolName, message) {
|
|
254
|
+
if (toolName === ReticleTool.RUN)
|
|
255
|
+
return;
|
|
256
|
+
reportToolRefused(toolName, refusalReasonFor(message));
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Which friction this result represents, counting the invitation if there is one.
|
|
260
|
+
*
|
|
261
|
+
* Feedback is the highest-yield channel this product has, and `feedbackPrompted` is the denominator
|
|
262
|
+
* that says whether inviting mid-task works or is decoration. It read as near-empty because the
|
|
263
|
+
* count sat behind the session-bound early return, so a session-EXEMPT tool never invited and a tool
|
|
264
|
+
* that THREW never got there — and a throw is the commonest refusal there is.
|
|
265
|
+
*
|
|
266
|
+
* `reticle_run` is skipped for the same reason it is skipped for refusals and defects: the wrapper's
|
|
267
|
+
* handler calls `runTool` on the real tool, which already invited under the real tool's name, and
|
|
268
|
+
* the failure is then handed back out to be counted a second time. A doubled denominator makes the
|
|
269
|
+
* feedback rate read half.
|
|
270
|
+
*/
|
|
271
|
+
function frictionInviteFor(toolName, raw) {
|
|
272
|
+
if (!isPlainObject(raw) || toolName === ReticleTool.RUN)
|
|
273
|
+
return undefined;
|
|
274
|
+
const friction = frictionOf({
|
|
275
|
+
unknownTool: false,
|
|
276
|
+
verifiedUnknown: 'unknown' === raw['verified'],
|
|
277
|
+
repeatRun: getSessionMetrics().currentRun,
|
|
278
|
+
errored: resultIsError(raw),
|
|
279
|
+
// A verdict is progress. Without this, three successful act_and_wait calls in a row — the exact
|
|
280
|
+
// loop this release exists to encourage — get told they are stuck.
|
|
281
|
+
producedVerdict: 'verified' in raw,
|
|
282
|
+
});
|
|
283
|
+
if (friction !== undefined)
|
|
284
|
+
getSessionMetrics().recordFeedbackPrompt();
|
|
285
|
+
return friction;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* The single entry point both the MCP server and the programmatic invoker call instead of
|
|
289
|
+
* `tool.handler` directly. Runs the handler, then — for a live-session tool returning a plain
|
|
290
|
+
* object that did not already include `session` — splices the health envelope on. Idempotent
|
|
291
|
+
* (handlers that already add health are left untouched) and never alters non-object results.
|
|
292
|
+
*/
|
|
293
|
+
/**
|
|
294
|
+
* The name of the first argument whose string value exceeds the transport bound, if any.
|
|
295
|
+
*
|
|
296
|
+
* One level of nesting is searched because that is where callers put payloads — `reticle_act`'s
|
|
297
|
+
* `args.value`, and the fuzz's own `huge-string` shape. Deeper recursion would cost more than it
|
|
298
|
+
* buys: the failure is a single huge string, not a deeply nested structure of small ones.
|
|
299
|
+
*/
|
|
300
|
+
function firstOversizedArg(args) {
|
|
301
|
+
const tooLong = (value) => 'string' === typeof value && value.length > TRANSPORT_LIMITS.MAX_STRING_LENGTH;
|
|
302
|
+
for (const [key, value] of Object.entries(args)) {
|
|
303
|
+
if (tooLong(value))
|
|
304
|
+
return key;
|
|
305
|
+
if ('object' === typeof value && null !== value && !Array.isArray(value)) {
|
|
306
|
+
for (const [inner, nested] of Object.entries(value)) {
|
|
307
|
+
if (tooLong(nested))
|
|
308
|
+
return `${key}.${inner}`;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return undefined;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* The args the handler is dispatched with, pinned to the session THIS call resolved.
|
|
316
|
+
*
|
|
317
|
+
* `runTool` resolves the session once and then attributes the whole call to it: the pool lease it
|
|
318
|
+
* refreshes, the health envelope it splices, the tab a ref is recorded as minted in, the project
|
|
319
|
+
* ledger the call lands in, the session a verdict is reported under. The handler was then handed
|
|
320
|
+
* the caller's args untouched, so a call that named no `sessionId` resolved a SECOND time — and a
|
|
321
|
+
* tab that connects in between can win auto-selection on its fresher heartbeat. The action goes to
|
|
322
|
+
* one tab and the answer describes another, which is a verdict about a page that was never driven
|
|
323
|
+
* and reads exactly like a correct one (#983).
|
|
324
|
+
*
|
|
325
|
+
* The wrong-tab ref guard is the sharpest case: it is asked whether the ref belongs to the tab
|
|
326
|
+
* resolution picked, so its permission is only sound if that is also the tab the handler drives.
|
|
327
|
+
*
|
|
328
|
+
* A COPY, never a write into the caller's object. `reticle_run`, the merged families and the
|
|
329
|
+
* programmatic invoker all pass the same record on, and a dispatch decision leaking back into it
|
|
330
|
+
* would outlive this call.
|
|
331
|
+
*
|
|
332
|
+
* Only a GUESSED session is pinned. An explicit id — including one lifted off a sequence step — is
|
|
333
|
+
* passed through exactly as written, so whether a stale id refuses or rebinds stays the resolver's
|
|
334
|
+
* decision; and a tool no session was resolved for (disk-only tools, or nothing connected) is left
|
|
335
|
+
* unscoped, so it answers as it always did.
|
|
336
|
+
*/
|
|
337
|
+
function pinnedArgs(args, explicitSessionId, session) {
|
|
338
|
+
if (explicitSessionId !== undefined || session === undefined)
|
|
339
|
+
return args;
|
|
340
|
+
return { ...args, [SESSION_ID_ARG]: session.id };
|
|
341
|
+
}
|
|
342
|
+
export async function runTool(tool, deps, args) {
|
|
343
|
+
// Both dispatch paths (MCP + programmatic) pass through here — the one place "which tool is mostly
|
|
344
|
+
// used" can be counted. This used to EMIT an event per call; it now increments an in-process counter
|
|
345
|
+
// that leaves once, with the session summary. A verification loop is 50–200 calls, and PostHog bills
|
|
346
|
+
// per event — so the old design made the telemetry bill scale with how hard people used the product,
|
|
347
|
+
// to answer a question the histogram answers better. Counting is also free: no network, no promise,
|
|
348
|
+
// nothing to fail on a tool call's hot path.
|
|
349
|
+
// Started/settled as a pair rather than a bare counter: several agents can be inside runTool at
|
|
350
|
+
// once, so a single "last start" field would attribute one tool's duration to another. The returned
|
|
351
|
+
// closure carries this call's own identity, which is also what makes peak-concurrency measurable.
|
|
352
|
+
// A daemon that has served even one tool call is doing a job for somebody; see daemon-usefulness.
|
|
353
|
+
noteToolCall();
|
|
354
|
+
// The ONBOARD firsts, at the chokepoint every call already passes through — so a second dispatch
|
|
355
|
+
// path cannot quietly stop reporting them the way an extra listener would.
|
|
356
|
+
noteOnboardingFirst(tool.name);
|
|
357
|
+
// The impact record needs the project's own `.reticle` root, and this is the first place every
|
|
358
|
+
// call knows it. Idempotent: the first root wins for the daemon's lifetime.
|
|
359
|
+
initImpact({ reticleRoot: deps.reticleRoot });
|
|
360
|
+
// An oversized argument is refused BEFORE the handler deserialises it.
|
|
361
|
+
//
|
|
362
|
+
// tool-fuzz failed CI on the invariant that matters most — `every tool answers every hostile call`
|
|
363
|
+
// — for a ~100KB string. Seen twice with different tools; the earlier one came back
|
|
364
|
+
// `-32001 sse_aborted` with the tool surface dropping 48→17, which is a RESTARTED daemon. The
|
|
365
|
+
// shape is: oversized argument → the daemon dies → the proxy answers the in-flight call with
|
|
366
|
+
// transport loss, and the next assertion is talking to a different daemon.
|
|
367
|
+
//
|
|
368
|
+
// `TRANSPORT_LIMITS.MAX_STRING_LENGTH` already bounds what crosses the bridge; a tool argument
|
|
369
|
+
// arrives over MCP stdio and never met it. Here, because this is the one place every invocation
|
|
370
|
+
// routes through, so a tool added later inherits the bound instead of having to remember it.
|
|
371
|
+
//
|
|
372
|
+
// A refusal is a normal answer. An UNANSWERED call is a hung agent, and that is the failure this
|
|
373
|
+
// prevents: the agent learns its argument was too big, which is something it can fix.
|
|
374
|
+
const oversized = firstOversizedArg(args);
|
|
375
|
+
if (oversized !== undefined) {
|
|
376
|
+
const error = `argument '${oversized}' is larger than ${String(TRANSPORT_LIMITS.MAX_STRING_LENGTH)} ` +
|
|
377
|
+
'characters, which is the most Reticle moves in one call. Nothing ran. Send a smaller ' +
|
|
378
|
+
'value — a selector or an id rather than a document, or a slice of the text you need.';
|
|
379
|
+
// Refused before the handler was ever entered, and still a refusal the agent has to recover
|
|
380
|
+
// from. Reported here rather than at the return below, which this branch never reaches.
|
|
381
|
+
reportRefusal(tool.name, error);
|
|
382
|
+
return { error };
|
|
383
|
+
}
|
|
384
|
+
// An ACTION is what gets abandoned. Counted here, against verifications, so "the agent drove the
|
|
385
|
+
// page and then wandered off" becomes a number instead of an impression.
|
|
386
|
+
if (ACTION_TOOLS.has(tool.name)) {
|
|
387
|
+
getSessionMetrics().recordAction();
|
|
388
|
+
// The two funnel rungs this branch is the authority on: the first action of the run, and the
|
|
389
|
+
// fact that this install has been driven at all. Reported from the set that already decides
|
|
390
|
+
// what "drove the page" means, so a fourth driving tool inherits both.
|
|
391
|
+
noteActed(args);
|
|
392
|
+
}
|
|
393
|
+
const settleTiming = getSessionMetrics().startToolCall(tool.name, args);
|
|
394
|
+
const startedAt = Date.now();
|
|
395
|
+
const rawSessionId = sessionIdFromArgs(args);
|
|
396
|
+
const bound = SESSION_BOUND_TOOLS.has(tool.name);
|
|
397
|
+
// Resolve the session identity ONCE, up front, for a live-session tool. The lease heartbeat must
|
|
398
|
+
// target the session the handler will ACTUALLY drive — which, when the agent omits sessionId, is the
|
|
399
|
+
// auto-selected one, NOT the raw (undefined) arg. Touching the raw arg meant an auto-selected drive
|
|
400
|
+
// never refreshed its pool lease, so the reaper could reclaim the session mid-operation. Resolve
|
|
401
|
+
// before the handler so a long ACT_AND_WAIT is protected for its whole duration; on failure leave it
|
|
402
|
+
// to the handler to throw the canonical no-session error.
|
|
403
|
+
let session;
|
|
404
|
+
if (bound || CDP_TOOLS.has(tool.name)) {
|
|
405
|
+
try {
|
|
406
|
+
session = deps.sessions.resolve(rawSessionId);
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
session = undefined;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// CDP tools against a skewed session: refuse with the sentence reticle_sessions already knows,
|
|
413
|
+
// before Playwright invents a closed page. ready:true leases still hit this path.
|
|
414
|
+
if (session?.versionSkew !== undefined && CDP_TOOLS.has(tool.name)) {
|
|
415
|
+
const message = session.versionSkew;
|
|
416
|
+
reportRefusal(tool.name, message);
|
|
417
|
+
throw new Error(message);
|
|
418
|
+
}
|
|
419
|
+
// The read-only calls the journal never keeps, recorded HERE because this is the one dispatch
|
|
420
|
+
// point every call routes through — a second recording site is a second thing to forget, and this
|
|
421
|
+
// instrument exists precisely because nothing was recorded before. Recorded before the handler
|
|
422
|
+
// runs: a read dispatches no action, so the counter reads the same either side.
|
|
423
|
+
//
|
|
424
|
+
// `reticle_context` is session-EXEMPT, so `session` above is undefined for it and it needs its own
|
|
425
|
+
// lenient resolve. Failing that resolve is silent by design: a call made with nothing connected
|
|
426
|
+
// has no per-session ledger to land in, and an instrument must never be why a tool call fails.
|
|
427
|
+
//
|
|
428
|
+
// EVERY tool is counted here, not just the read set: which of the 70-odd names in the table an
|
|
429
|
+
// agent actually reaches for is the question a decision about cutting or consolidating the surface
|
|
430
|
+
// turns on, and it had no answer. `reticle_run` is the one exclusion, for the same reason
|
|
431
|
+
// `reportRefusal` and `bugsInResult` exclude it — its handler calls `runTool` on the real tool, so
|
|
432
|
+
// the inner call is already counted under the name that RAN, and counting the wrapper too would
|
|
433
|
+
// both double the total and hide the run-only tier behind a single wrapper name. That tier is
|
|
434
|
+
// precisely the one the decision hinges on. See surface/tools/tool-hit-rate.ts.
|
|
435
|
+
if (ReticleTool.RUN !== tool.name) {
|
|
436
|
+
let target = session;
|
|
437
|
+
if (target === undefined) {
|
|
438
|
+
try {
|
|
439
|
+
target = deps.sessions.resolve(rawSessionId);
|
|
440
|
+
}
|
|
441
|
+
catch {
|
|
442
|
+
target = undefined;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
if (target !== undefined) {
|
|
446
|
+
noteToolDispatched(target, tool.name);
|
|
447
|
+
if (CAPTURED_TOOLS.has(tool.name)) {
|
|
448
|
+
const subject = asString(args['ref']) ?? asString(args['target']);
|
|
449
|
+
noteCapturedCall(target, {
|
|
450
|
+
tool: tool.name,
|
|
451
|
+
...(subject === undefined ? {} : { subject }),
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
// A ref that was handed out by a DIFFERENT tab, on a call that named no session. Refused here, at
|
|
457
|
+
// the one point that knows both the ref and the tab resolution picked — the handler only learns
|
|
458
|
+
// that the ref missed, and answers that with "the DOM re-rendered", which is a confident diagnosis
|
|
459
|
+
// of the wrong thing. The other half is worse: the same ref can resolve to a different element in
|
|
460
|
+
// the guessed tab and return a green about a page nobody asked about.
|
|
461
|
+
if (session !== undefined) {
|
|
462
|
+
const wrongTab = wrongTabRefusal({
|
|
463
|
+
ref: spentRefFromArgs(args),
|
|
464
|
+
explicitSessionId: rawSessionId,
|
|
465
|
+
chosenSessionId: session.id,
|
|
466
|
+
connected: () => deps.sessions.list(),
|
|
467
|
+
});
|
|
468
|
+
if (wrongTab !== undefined) {
|
|
469
|
+
// Refused before the handler was entered, so it is reported here — the same shape as the
|
|
470
|
+
// oversized-argument refusal above.
|
|
471
|
+
reportRefusal(tool.name, wrongTab);
|
|
472
|
+
return { error: wrongTab };
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
const leaseId = session?.id ?? rawSessionId;
|
|
476
|
+
if (leaseId !== undefined)
|
|
477
|
+
deps.pool?.touch(leaseId);
|
|
478
|
+
// One identity for the whole call: the handler drives the session everything above is attributed
|
|
479
|
+
// to, rather than resolving again against a registry that can have changed underneath it.
|
|
480
|
+
const dispatchArgs = pinnedArgs(args, rawSessionId, session);
|
|
481
|
+
let raw;
|
|
482
|
+
try {
|
|
483
|
+
// The one dispatch point every tool call passes through, so it is where the trace's root span
|
|
484
|
+
// belongs: with RETICLE_TRACE on, every stage that runs underneath inherits this call's id and
|
|
485
|
+
// nests under it. Free when off — see trace.ts.
|
|
486
|
+
// `dispatchArgs`, not `args`: an inferred session is pinned into the arguments before the
|
|
487
|
+
// handler sees them, so a tool that resolves the session a second time cannot land on a
|
|
488
|
+
// different one than the dispatcher chose.
|
|
489
|
+
const call = () => span('tool.handler', { tool: tool.name, session: session?.id }, () => tool.handler(deps, dispatchArgs));
|
|
490
|
+
// A drive we run on the user's behalf, marked for its whole span so the verdicts it produces
|
|
491
|
+
// underneath are distinguishable from the ones the user's own agent earned.
|
|
492
|
+
//
|
|
493
|
+
// The outer call emits no verdict of its own, and that is the honest answer rather than a gap:
|
|
494
|
+
// it drives and records, it adjudicates nothing, and its result carries no verified/pass field
|
|
495
|
+
// to read. Deriving one from how far the drive got would be inventing a verdict nobody reached.
|
|
496
|
+
// What was missing was never an event here — it was that a session driven BY US read exactly
|
|
497
|
+
// like one the agent earned, which is what the span fixes.
|
|
498
|
+
raw = await (isHarnessDrive(tool.name, args) ? withHarnessDrive(call) : call());
|
|
499
|
+
}
|
|
500
|
+
catch (error) {
|
|
501
|
+
// The commonest refusal shape by far, and the one nothing could see: the message is built, handed
|
|
502
|
+
// to the agent by the MCP boundary, and discarded. Reported here rather than at that boundary
|
|
503
|
+
// because there are two of them (mcp.ts and the reticle_run hatch) and this is the one place both
|
|
504
|
+
// go through — a third would otherwise be invisible from the day it was added.
|
|
505
|
+
//
|
|
506
|
+
// Under version skew, Playwright's "Target page has been closed" is the wrong cause (#688): the
|
|
507
|
+
// page is still dialled in. Prefer the session's skew sentence when we already know the pair is
|
|
508
|
+
// mismatched — including for tools that are not in CDP_TOOLS (real-input fallbacks that throw).
|
|
509
|
+
let skewText = session?.versionSkew;
|
|
510
|
+
if (skewText === undefined) {
|
|
511
|
+
try {
|
|
512
|
+
skewText = deps.sessions.resolve(rawSessionId).versionSkew;
|
|
513
|
+
}
|
|
514
|
+
catch {
|
|
515
|
+
skewText = undefined;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
const rewritten = rewriteClosedAsSkew(error, skewText);
|
|
519
|
+
const toThrow = rewritten ?? error;
|
|
520
|
+
const message = toThrow instanceof Error ? toThrow.message : String(toThrow);
|
|
521
|
+
reportRefusal(tool.name, message);
|
|
522
|
+
// The invitation on THIS path is the one `buildErrorPayload` attaches when it does not recognise
|
|
523
|
+
// the error, and it was never counted — so the denominator excluded the commonest friction there
|
|
524
|
+
// is. Gated on the payload actually carrying the ask, because a recognised error gets a recovery
|
|
525
|
+
// instead and counting an invitation nobody was shown breaks the ratio in the other direction.
|
|
526
|
+
if (tool.name !== ReticleTool.RUN && buildErrorPayload(message).feedback !== undefined) {
|
|
527
|
+
getSessionMetrics().recordFeedbackPrompt();
|
|
528
|
+
}
|
|
529
|
+
throw toThrow;
|
|
530
|
+
}
|
|
531
|
+
finally {
|
|
532
|
+
// In a `finally` so a THROWN call still settles: otherwise every failing tool would leak a
|
|
533
|
+
// concurrency slot and peakConcurrentTools would climb forever on an unhealthy session.
|
|
534
|
+
settleTiming(Date.now() - startedAt);
|
|
535
|
+
}
|
|
536
|
+
// The human-feedback ask rides out on the first VERIFICATION that completes — the one moment the
|
|
537
|
+
// experience is fresh and there is something concrete to react to. It is spliced BEFORE the
|
|
538
|
+
// session-bound early return, because two of the four verification tools (flow_verify,
|
|
539
|
+
// verify_change) are session-EXEMPT and would otherwise never carry it.
|
|
540
|
+
if (isPlainObject(raw)) {
|
|
541
|
+
// The brand comes from the session's own PAGE_HEALTH report, so it is present for the four
|
|
542
|
+
// session-bound verification tools and absent for flow_verify (session-exempt) — which replays
|
|
543
|
+
// into a browser Reticle launched, where `browser` already says what happened.
|
|
544
|
+
recordVerification(tool.name, raw, Date.now() - startedAt, session?.brand, session?.id);
|
|
545
|
+
reportBugsFound(tool.name, raw, session?.id);
|
|
546
|
+
}
|
|
547
|
+
// The other half of the refusal surface. A top-level `error` string IS this codebase's refusal
|
|
548
|
+
// convention, so half the tools refuse by RETURNING one rather than throwing — and reading only the
|
|
549
|
+
// throw path would have measured half the wall and called it the whole of it, the same way `isError`
|
|
550
|
+
// once did. A call that was served clears the retry chain, so the next refusal after it is a first
|
|
551
|
+
// refusal rather than a retry of something unrelated.
|
|
552
|
+
// The user's own record of what Reticle did for them. Same chokepoint as everything else that
|
|
553
|
+
// counts, for the same reason: a second recording site is a second thing to forget. Separate
|
|
554
|
+
// store from telemetry - this one never leaves the machine.
|
|
555
|
+
const finishedAt = Date.now();
|
|
556
|
+
const defect = defectForToolResult(raw, finishedAt);
|
|
557
|
+
// Which project's ledger this call belongs to. Resolved from the SESSION being driven, not from
|
|
558
|
+
// wherever the daemon happens to stand: one daemon serves many projects, and recording every
|
|
559
|
+
// call against its own cwd is how one app's verdicts ended up on another account's dashboard.
|
|
560
|
+
// Falls back to the daemon root when no session can be named, which is the old behaviour.
|
|
561
|
+
const artifactRoot = session?.artifactRoot ?? deps.reticleRoot;
|
|
562
|
+
recordImpact(deltaForToolResult(raw, finishedAt - startedAt, resultIsError(raw)), { ...(defect === undefined ? {} : { defect }) }, artifactRoot);
|
|
563
|
+
// ...and the tab being driven is told, so the report is live rather than a thing you reload.
|
|
564
|
+
// Optional-call, not optional-chain-on-the-object: a test double is a partial Session, and a
|
|
565
|
+
// courtesy push must never be the reason a tool call throws.
|
|
566
|
+
// Bound to THIS session's root: a tab must be shown its own project's numbers, not whichever
|
|
567
|
+
// project the daemon was started in.
|
|
568
|
+
session?.pushImpact?.(() => impactSnapshot(artifactRoot));
|
|
569
|
+
if (resultIsError(raw))
|
|
570
|
+
reportRefusal(tool.name, raw.error);
|
|
571
|
+
else {
|
|
572
|
+
noteToolServed();
|
|
573
|
+
// Which tab these refs belong to. Recorded on the way OUT, so the next call that spends one is
|
|
574
|
+
// measured against the tab that actually produced it.
|
|
575
|
+
if (session !== undefined && REF_MINTING_TOOLS.has(tool.name))
|
|
576
|
+
noteRefsMinted(session.id);
|
|
577
|
+
}
|
|
578
|
+
const prompt = isPlainObject(raw) ? takeFeedbackPrompt(tool.name) : undefined;
|
|
579
|
+
// Same one-shot channel as the feedback ask: the agent is mid-task, so anything it would have to go
|
|
580
|
+
// and ASK for is something it will never ask for. Spliced on ANY tool result, not just a
|
|
581
|
+
// verification, because an out-of-date install is worth mentioning whatever the agent is doing.
|
|
582
|
+
const update = isPlainObject(raw) ? takeUpdateNudge() : undefined;
|
|
583
|
+
// Same one-shot channel, for the same reason. Skew was only ever reported in
|
|
584
|
+
// reticle_sessions.versionSkew and a CLI log line — two places an agent driving a flow never
|
|
585
|
+
// looks — so it could work a whole session against a mismatched pair and never learn the one fact
|
|
586
|
+
// that explains the behaviour. It rides out here on whatever tool it happens to be calling.
|
|
587
|
+
const skew = isPlainObject(raw) ? takeVersionSkew() : undefined;
|
|
588
|
+
// A feedback report that was accepted and then failed to send. Same one-shot channel, because the
|
|
589
|
+
// reporter is the only person who can act on it and they are not reading the daemon log — and a
|
|
590
|
+
// report announced as accepted and then silently lost is the failure the awaited send existed to
|
|
591
|
+
// prevent. See feedback-delivery.ts.
|
|
592
|
+
const undelivered = isPlainObject(raw) ? takeFeedbackUndelivered() : undefined;
|
|
593
|
+
// Invite feedback at the moment of friction, worded for what just happened. Counted, because
|
|
594
|
+
// `feedback_submitted / feedbackPrompted` is the only thing that says whether the invitation works
|
|
595
|
+
// at all rather than being decoration.
|
|
596
|
+
//
|
|
597
|
+
// This used to sit below the session-bound early return, which put it behind two conditions that
|
|
598
|
+
// exclude most friction there is. A session-EXEMPT tool never reached it, and neither did a tool
|
|
599
|
+
// that THREW — and throwing is the commonest refusal shape by a wide margin, i.e. exactly the
|
|
600
|
+
// `refused` friction the line is written for. `errored` could only ever see the handlers that
|
|
601
|
+
// RETURN an error. So the denominator was counting a small, unrepresentative slice of the
|
|
602
|
+
// invitations and reading near-empty, which looks identical to a nudge that never fires.
|
|
603
|
+
const friction = frictionInviteFor(tool.name, raw);
|
|
604
|
+
const result = prompt === undefined &&
|
|
605
|
+
update === undefined &&
|
|
606
|
+
skew === undefined &&
|
|
607
|
+
undelivered === undefined &&
|
|
608
|
+
friction === undefined
|
|
609
|
+
? raw
|
|
610
|
+
: {
|
|
611
|
+
...raw,
|
|
612
|
+
...(friction !== undefined ? { [EnvelopeKey.FEEDBACK_INVITE]: inviteFor(friction) } : {}),
|
|
613
|
+
...(prompt !== undefined ? { [EnvelopeKey.FEEDBACK_PROMPT]: prompt } : {}),
|
|
614
|
+
...(update !== undefined ? { [EnvelopeKey.UPDATE_AVAILABLE]: update } : {}),
|
|
615
|
+
...(skew !== undefined ? { [EnvelopeKey.VERSION_SKEW]: skew } : {}),
|
|
616
|
+
...(undelivered !== undefined
|
|
617
|
+
? {
|
|
618
|
+
[EnvelopeKey.FEEDBACK_UNDELIVERED]: `your earlier report did NOT send: ${undelivered}. Tell the human what you found so it is not lost.`,
|
|
619
|
+
}
|
|
620
|
+
: {}),
|
|
621
|
+
};
|
|
622
|
+
if (!bound || !isPlainObject(result))
|
|
623
|
+
return result;
|
|
624
|
+
// Reuse the session resolved above so the health envelope describes the SAME session the handler
|
|
625
|
+
// drove; only re-resolve if the up-front attempt failed but the handler somehow succeeded.
|
|
626
|
+
const resolved = session ?? deps.sessions.resolve(rawSessionId);
|
|
627
|
+
const envelope = {};
|
|
628
|
+
// The health block is idempotent: add it only when the handler didn't already include a `session`.
|
|
629
|
+
if (!('session' in result))
|
|
630
|
+
Object.assign(envelope, healthEnvelope(resolved));
|
|
631
|
+
// Lease + age-warning are INDEPENDENT of the health block. Previously the `'session' in result`
|
|
632
|
+
// early-return skipped them whenever a handler returned its own health (which a throttled tab always
|
|
633
|
+
// does) — so a long-running backgrounded session, the case most likely to leak, never got the
|
|
634
|
+
// one-time pool-lease reminder or the age cleanup nudge. Splice them regardless.
|
|
635
|
+
const lease = resolved.takeSessionLease();
|
|
636
|
+
if (lease !== undefined)
|
|
637
|
+
envelope[EnvelopeKey.SESSION_LEASE] = lease;
|
|
638
|
+
const warning = resolved.ageWarning();
|
|
639
|
+
if (warning !== undefined)
|
|
640
|
+
envelope[EnvelopeKey.SESSION_AGE_WARNING] = warning;
|
|
641
|
+
// Ask for a verdict when the agent has driven the page and not asked for one: a session that never
|
|
642
|
+
// calls a verdict-producing tool proves nothing, however many tools it used. One-shot per
|
|
643
|
+
// abandoned run, same discipline as the pool lease — a hint on every call is noise that gets tuned
|
|
644
|
+
// out.
|
|
645
|
+
// The A/B control, and the reason it exists as an env flag rather than a code edit.
|
|
646
|
+
//
|
|
647
|
+
// `verify_next` is described in this repo's own changelog as "the largest known lever on whether a
|
|
648
|
+
// session produces a verdict at all", and it has never been measured — it was once built, fired
|
|
649
|
+
// and silently dropped by schema-strict clients for a whole release, which is exactly what an
|
|
650
|
+
// unmeasured lever looks like from the inside. "The payload now arrives" and "the agent acts on
|
|
651
|
+
// it" are different claims and only the first was ever verified.
|
|
652
|
+
//
|
|
653
|
+
// Suppressing it for a control arm has to leave the ONLY difference being the baton: same build,
|
|
654
|
+
// same surface, same counters. So the nudge is still TAKEN (the counter still resets, so the
|
|
655
|
+
// one-shot cadence is identical) and only the envelope key is withheld.
|
|
656
|
+
const suppressBaton = '1' === process.env[SUPPRESS_VERIFY_NEXT_ENV];
|
|
657
|
+
const unverified = getSessionMetrics().takeUnverifiedNudge();
|
|
658
|
+
// Carry the CALL, not just the sentence. The prose has to be translated back into arguments, and
|
|
659
|
+
// that translation is where agents were already going wrong — `until` omitted, action arguments
|
|
660
|
+
// flat instead of nested under `args`. `ref` and `action` come from the act that actually
|
|
661
|
+
// dispatched, so the suggestion is about the element the agent touched. See verify-next-baton.
|
|
662
|
+
if (unverified !== undefined && !suppressBaton)
|
|
663
|
+
// `lastAct` read defensively: this envelope is built on EVERY tool call, so a session shape
|
|
664
|
+
// without it would turn a missing field into a crash on the whole surface rather than a missing
|
|
665
|
+
// suggestion. The baton degrades to prose, which is what it carried before.
|
|
666
|
+
envelope[EnvelopeKey.VERIFY_NEXT] = verifyNextBaton(unverified, resolved.lastAct?.effect() ?? {});
|
|
667
|
+
return Object.keys(envelope).length > 0 ? { ...result, ...envelope } : result;
|
|
668
|
+
}
|