@reticlehq/server 3.5.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/SKILL.md +123 -116
- package/dist/chromium-launch-options.d.ts +3 -1
- package/dist/chromium-launch-options.js +2 -1
- package/dist/command/cli/adhoc-suite.d.ts +14 -0
- package/dist/command/cli/adhoc-suite.js +42 -7
- package/dist/command/cli/adhoc-verdict.d.ts +19 -2
- package/dist/command/cli/adhoc-verdict.js +76 -9
- package/dist/command/cli/answers/gate-exit.d.ts +23 -0
- package/dist/command/cli/answers/gate-exit.js +45 -0
- package/dist/command/cli/answers/gate-hook-message.d.ts +2 -0
- package/dist/command/cli/answers/gate-hook-message.js +3 -1
- package/dist/command/cli/answers/open-note.d.ts +2 -0
- package/dist/command/cli/answers/open-note.js +22 -0
- package/dist/command/cli/auth/device-flow.d.ts +13 -2
- package/dist/command/cli/auth/device-flow.js +17 -0
- package/dist/command/cli/cli-doctor.js +14 -0
- package/dist/command/cli/cli-flow-commands.d.ts +0 -11
- package/dist/command/cli/cli-flow-commands.js +31 -112
- package/dist/command/cli/cli-kill.js +3 -2
- package/dist/command/cli/cli-parse-grammar.d.ts +24 -0
- package/dist/command/cli/cli-parse-grammar.js +75 -0
- package/dist/command/cli/cli-parse-verify.d.ts +2 -0
- package/dist/command/cli/cli-parse-verify.js +18 -0
- package/dist/command/cli/cli-parse.d.ts +19 -28
- package/dist/command/cli/cli-parse.js +82 -182
- package/dist/command/cli/cli-update-commands.d.ts +1 -1
- package/dist/command/cli/cli-update-commands.js +61 -9
- package/dist/command/cli/cli-usage.d.ts +33 -0
- package/dist/command/cli/cli-usage.js +287 -0
- package/dist/command/cli/cli-verify.d.ts +35 -5
- package/dist/command/cli/cli-verify.js +114 -35
- package/dist/command/cli/cloud-cli.d.ts +13 -0
- package/dist/command/cli/cloud-cli.js +192 -341
- package/dist/command/cli/cloud-kit.d.ts +12 -0
- package/dist/command/cli/cloud-kit.js +41 -2
- package/dist/command/cli/cloud-link.d.ts +57 -0
- package/dist/command/cli/cloud-link.js +308 -0
- package/dist/command/cli/cloud-login.d.ts +22 -0
- package/dist/command/cli/cloud-login.js +96 -8
- package/dist/command/cli/context-command.d.ts +1 -0
- package/dist/command/cli/context-command.js +33 -0
- package/dist/command/cli/daemon-start-options.d.ts +3 -0
- package/dist/command/cli/daemon-start-options.js +24 -3
- package/dist/command/cli/doctor/browser/chromium-hint.d.ts +46 -0
- package/dist/command/cli/doctor/browser/chromium-hint.js +99 -1
- package/dist/command/cli/doctor/doctor-coverage-line.d.ts +2 -0
- package/dist/command/cli/doctor/doctor-coverage-line.js +47 -0
- package/dist/command/cli/doctor/doctor-project-line.d.ts +0 -12
- package/dist/command/cli/doctor/doctor-project-line.js +5 -4
- package/dist/command/cli/doctor/doctor-rows.d.ts +6 -0
- package/dist/command/cli/doctor/doctor-rows.js +6 -0
- package/dist/command/cli/doctor/doctor-signing-line.d.ts +38 -0
- package/dist/command/cli/doctor/doctor-signing-line.js +114 -0
- package/dist/command/cli/drive/drive-attach.d.ts +27 -2
- package/dist/command/cli/drive/drive-attach.js +71 -4
- package/dist/command/cli/drive/drive-command.d.ts +2 -1
- package/dist/command/cli/drive/drive-command.js +13 -7
- package/dist/command/cli/known-regression.d.ts +13 -0
- package/dist/command/cli/known-regression.js +34 -0
- package/dist/command/cli/launch/sdk-version-match.d.ts +12 -0
- package/dist/command/cli/launch/sdk-version-match.js +25 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +15 -3
- package/dist/command/cli/mcp-command.d.ts +6 -0
- package/dist/command/cli/mcp-command.js +13 -5
- package/dist/command/cli/ports/port-holder.d.ts +10 -0
- package/dist/command/cli/ports/port-holder.js +25 -1
- package/dist/command/cli/project-name.d.ts +29 -1
- package/dist/command/cli/project-name.js +107 -2
- package/dist/command/cli/setup-mcp-cli.d.ts +17 -1
- package/dist/command/cli/setup-mcp-cli.js +35 -12
- package/dist/command/cli/status/status-lines.d.ts +1 -0
- package/dist/command/cli/status/status-lines.js +47 -2
- package/dist/command/cli/status/workspace-links.d.ts +10 -0
- package/dist/command/cli/status/workspace-links.js +29 -0
- package/dist/command/cli/try-command.d.ts +96 -0
- package/dist/command/cli/try-command.js +362 -0
- package/dist/command/cli/tutorial.d.ts +0 -100
- package/dist/command/cli/tutorial.js +0 -181
- package/dist/command/cli/verify-results.d.ts +19 -0
- package/dist/command/cli/verify-results.js +29 -0
- package/dist/command/cli-onboarding.d.ts +0 -11
- package/dist/command/cli-onboarding.js +0 -15
- package/dist/command/cli.d.ts +20 -0
- package/dist/command/cli.js +130 -104
- package/dist/command/daemon/binding/daemon-status-probe.d.ts +2 -0
- package/dist/command/daemon/binding/daemon-status-probe.js +1 -0
- package/dist/command/daemon/daemon-resilience.js +4 -4
- package/dist/command/daemon/daemon-resolve.d.ts +23 -1
- package/dist/command/daemon/daemon-resolve.js +79 -9
- package/dist/command/setup/agent-writer.d.ts +1 -1
- package/dist/command/setup/agent-writer.js +3 -2
- package/dist/command/setup/bringup/bridge-port.d.ts +3 -1
- package/dist/command/setup/bringup/bridge-port.js +13 -3
- package/dist/command/setup/bringup/connect-lease.d.ts +1 -0
- package/dist/command/setup/bringup/connect-lease.js +1 -0
- package/dist/command/setup/bringup/dev-server-log-cap.js +2 -0
- package/dist/command/setup/bringup/dev-server-wait.d.ts +8 -0
- package/dist/command/setup/bringup/dev-server-wait.js +19 -0
- package/dist/command/setup/bringup/ensure-daemon.js +9 -2
- package/dist/command/setup/init/agent-restart.d.ts +23 -0
- package/dist/command/setup/init/agent-restart.js +28 -0
- package/dist/command/setup/init/init-port.d.ts +14 -1
- package/dist/command/setup/init/init-port.js +32 -2
- package/dist/command/setup/init/init-runtime.d.ts +22 -2
- package/dist/command/setup/init/init-runtime.js +114 -38
- package/dist/command/setup/node-effects.d.ts +2 -0
- package/dist/command/setup/node-effects.js +38 -9
- package/dist/command/setup/probe/existing-app.d.ts +12 -0
- package/dist/command/setup/probe/existing-app.js +14 -0
- package/dist/command/setup/remaining-steps.js +2 -1
- package/dist/command/setup/run-setup.d.ts +34 -9
- package/dist/command/setup/run-setup.js +65 -51
- package/dist/command/setup/setup-command.d.ts +25 -1
- package/dist/command/setup/setup-command.js +59 -4
- package/dist/command/setup/setup-mcp.js +25 -2
- package/dist/command/setup/tauri-signing.d.ts +19 -0
- package/dist/command/setup/tauri-signing.js +79 -0
- package/dist/command/setup/terminal/listeners.d.ts +10 -1
- package/dist/command/setup/terminal/listeners.js +37 -6
- package/dist/command/update/update-nudge.d.ts +9 -0
- package/dist/command/update/update-nudge.js +1 -1
- package/dist/command/update/updater.js +11 -15
- package/dist/command/version/version-nudge.js +3 -0
- package/dist/command/version/version-skew.d.ts +20 -1
- package/dist/command/version/version-skew.js +49 -4
- package/dist/features/crawl/crawl-tools.js +4 -0
- package/dist/features/crawl/crawl.d.ts +6 -0
- package/dist/features/crawl/crawl.js +23 -2
- package/dist/features/exhaust/ledger.d.ts +21 -14
- package/dist/features/exhaust/ledger.js +35 -9
- package/dist/features/harness/app-findings.d.ts +2 -0
- package/dist/features/harness/app-findings.js +52 -0
- package/dist/features/harness/drive-report.d.ts +61 -1
- package/dist/features/harness/drive-report.js +394 -26
- package/dist/features/harness/drive-runs.d.ts +120 -0
- package/dist/features/harness/drive-runs.js +289 -0
- package/dist/features/harness/drivers.d.ts +10 -14
- package/dist/features/harness/drivers.js +10 -14
- package/dist/features/harness/explore/console-pages.d.ts +15 -0
- package/dist/features/harness/explore/console-pages.js +146 -0
- package/dist/features/harness/explore/disparity.d.ts +19 -0
- package/dist/features/harness/explore/disparity.js +71 -0
- package/dist/features/harness/explore/fake-app.d.ts +16 -0
- package/dist/features/harness/explore/fake-app.js +49 -0
- package/dist/features/harness/explore/goal-search.d.ts +26 -0
- package/dist/features/harness/explore/goal-search.js +144 -0
- package/dist/features/harness/explore/page-tree.d.ts +49 -0
- package/dist/features/harness/explore/page-tree.js +148 -0
- package/dist/features/harness/explore/site-map.d.ts +34 -0
- package/dist/features/harness/explore/site-map.js +150 -0
- package/dist/features/harness/fill-values.d.ts +3 -73
- package/dist/features/harness/fill-values.js +3 -169
- package/dist/features/harness/goals.d.ts +82 -0
- package/dist/features/harness/goals.js +330 -0
- package/dist/features/harness/harness.d.ts +51 -1
- package/dist/features/harness/harness.js +207 -6
- package/dist/features/harness/platform/drive-target.d.ts +30 -0
- package/dist/features/harness/platform/drive-target.js +81 -0
- package/dist/features/harness/platform/local-apps.d.ts +127 -0
- package/dist/features/harness/platform/local-apps.js +280 -0
- package/dist/features/harness/platform/persona-credentials.d.ts +20 -0
- package/dist/features/harness/platform/persona-credentials.js +69 -0
- package/dist/features/harness/platform/platform-drives.d.ts +61 -0
- package/dist/features/harness/platform/platform-drives.js +114 -0
- package/dist/features/harness/platform/refusal.d.ts +52 -0
- package/dist/features/harness/platform/refusal.js +71 -0
- package/dist/features/harness/platform/remote-drive.d.ts +186 -0
- package/dist/features/harness/platform/remote-drive.js +378 -0
- package/dist/features/harness/platform/script.d.ts +94 -0
- package/dist/features/harness/platform/script.js +260 -0
- package/dist/features/harness/platform/server-driver.d.ts +54 -0
- package/dist/features/harness/platform/server-driver.js +182 -0
- package/dist/features/harness/platform-config.d.ts +41 -1
- package/dist/features/harness/platform-config.js +106 -9
- package/dist/features/harness/route-guess.d.ts +13 -0
- package/dist/features/harness/route-guess.js +49 -0
- package/dist/features/harness/script/app-controls.d.ts +5 -0
- package/dist/features/harness/script/app-controls.js +40 -0
- package/dist/features/harness/script/lane-ids.d.ts +14 -0
- package/dist/features/harness/script/lane-ids.js +16 -0
- package/dist/features/harness/script/script-run.d.ts +70 -0
- package/dist/features/harness/script/script-run.js +606 -0
- package/dist/features/license/license.d.ts +2 -2
- package/dist/features/visual/step-shots.d.ts +31 -0
- package/dist/features/visual/step-shots.js +231 -0
- package/dist/features/visual/visual-tools.d.ts +10 -1
- package/dist/features/visual/visual-tools.js +62 -17
- package/dist/hooks/client-directory.d.ts +18 -0
- package/dist/hooks/client-directory.js +57 -0
- package/dist/hooks/coding-agents.d.ts +34 -0
- package/dist/hooks/coding-agents.js +117 -0
- package/dist/hooks/driven-by.d.ts +23 -0
- package/dist/hooks/driven-by.js +56 -0
- package/dist/hooks/hook-bus.d.ts +4 -0
- package/dist/hooks/hook-bus.js +18 -0
- package/dist/hooks/hook-commands.js +15 -4
- package/dist/hooks/tool-log.d.ts +9 -0
- package/dist/hooks/tool-log.js +29 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +80 -243
- package/dist/judgement/capsule/capsule-store.d.ts +2 -2
- package/dist/judgement/capsule/causal-summary.d.ts +15 -1
- package/dist/judgement/capsule/causal-summary.js +33 -0
- package/dist/judgement/runs/artifact/build-verification-run.d.ts +1 -1
- package/dist/judgement/runs/artifact/build-verification-run.js +25 -3
- package/dist/judgement/runs/artifact/gap-summary.d.ts +0 -18
- package/dist/judgement/runs/artifact/gap-summary.js +12 -3
- package/dist/judgement/runs/artifact/replay-mapping.d.ts +1 -1
- package/dist/judgement/runs/artifact/replay-mapping.js +37 -11
- package/dist/judgement/runs/artifact/run-store.d.ts +14 -2
- package/dist/judgement/runs/artifact/run-store.js +195 -3
- package/dist/judgement/runs/context-tools.js +59 -1
- package/dist/judgement/runs/default-run-id.d.ts +3 -0
- package/dist/judgement/runs/default-run-id.js +16 -0
- package/dist/judgement/runs/drive-run.d.ts +71 -1
- package/dist/judgement/runs/drive-run.js +317 -5
- package/dist/judgement/runs/repair-prompt.js +1 -1
- package/dist/judgement/runs/resume.d.ts +44 -0
- package/dist/judgement/runs/resume.js +137 -0
- package/dist/judgement/runs/reticle-runner.js +13 -3
- package/dist/judgement/runs/runner-port.d.ts +5 -1
- package/dist/judgement/runs/runner-port.js +8 -2
- package/dist/judgement/runs/verification-sync.d.ts +5 -2
- package/dist/judgement/runs/verification-sync.js +40 -18
- package/dist/language/flows/change/gate.d.ts +10 -0
- package/dist/language/flows/change/gate.js +22 -0
- package/dist/language/flows/decision.js +36 -1
- package/dist/language/flows/fields/flow-secret-field.d.ts +12 -0
- package/dist/language/flows/fields/flow-secret-field.js +25 -2
- package/dist/language/flows/flow-anchor.d.ts +61 -10
- package/dist/language/flows/flow-anchor.js +98 -6
- package/dist/language/flows/flow-cross-step.d.ts +15 -0
- package/dist/language/flows/flow-cross-step.js +21 -0
- package/dist/language/flows/flow-intent.d.ts +1 -0
- package/dist/language/flows/flow-journey.d.ts +6 -0
- package/dist/language/flows/flow-journey.js +20 -0
- package/dist/language/flows/flow-learning.d.ts +4 -0
- package/dist/language/flows/flow-learning.js +45 -14
- package/dist/language/flows/flow-mutate-tools.js +5 -3
- package/dist/language/flows/flow-replay-run.d.ts +23 -9
- package/dist/language/flows/flow-replay-run.js +115 -110
- package/dist/language/flows/flow-replay-types.d.ts +1 -1
- package/dist/language/flows/flow-replay.d.ts +40 -1
- package/dist/language/flows/flow-replay.js +110 -22
- package/dist/language/flows/flow-result.d.ts +22 -1
- package/dist/language/flows/flow-result.js +47 -2
- package/dist/language/flows/flow-scope.js +5 -1
- package/dist/language/flows/flow-step-runners.d.ts +22 -2
- package/dist/language/flows/flow-step-runners.js +247 -47
- package/dist/language/flows/flow-store-for-session.d.ts +2 -2
- package/dist/language/flows/flow-store-for-session.js +7 -3
- package/dist/language/flows/flow-tools.d.ts +10 -0
- package/dist/language/flows/flow-tools.js +112 -89
- package/dist/language/flows/flows.d.ts +16 -1
- package/dist/language/flows/flows.js +74 -12
- package/dist/language/flows/heal-run.js +6 -4
- package/dist/language/flows/narrow-write.d.ts +7 -0
- package/dist/language/flows/narrow-write.js +36 -1
- package/dist/language/flows/recording/flake.d.ts +2 -2
- package/dist/language/flows/recording/recording-backtrack.js +14 -1
- package/dist/language/flows/recording/tape/recordings.d.ts +58 -4
- package/dist/language/flows/recording/tape/recordings.js +95 -13
- package/dist/language/flows/replay-from-hud.d.ts +20 -0
- package/dist/language/flows/replay-from-hud.js +51 -0
- package/dist/language/flows/replay.d.ts +9 -5
- package/dist/language/flows/replay.js +56 -15
- package/dist/language/flows/single-replay.d.ts +7 -0
- package/dist/language/flows/single-replay.js +26 -0
- package/dist/language/flows/suite/suite-flakes.js +2 -0
- package/dist/language/flows/suite-selection.d.ts +2 -15
- package/dist/language/flows/suite-selection.js +4 -3
- package/dist/language/flows/verify-change-tools.d.ts +1 -0
- package/dist/language/flows/verify-change-tools.js +202 -191
- package/dist/launch-chromium.d.ts +27 -5
- package/dist/launch-chromium.js +38 -8
- package/dist/memory/cloud/cloud-config.d.ts +22 -1
- package/dist/memory/cloud/cloud-config.js +34 -5
- package/dist/memory/cloud/cloud-sync.d.ts +17 -14
- package/dist/memory/cloud/cloud-sync.js +15 -4
- package/dist/memory/cloud/harness-config.d.ts +75 -1
- package/dist/memory/cloud/harness-config.js +115 -24
- package/dist/memory/cloud/hud-notices-source.d.ts +21 -0
- package/dist/memory/cloud/hud-notices-source.js +128 -0
- package/dist/memory/cloud/memory-scope.d.ts +161 -0
- package/dist/memory/cloud/memory-scope.js +227 -0
- package/dist/memory/cloud/sync-cycle.d.ts +44 -7
- package/dist/memory/cloud/sync-cycle.js +129 -15
- package/dist/memory/cloud/sync-daemon.d.ts +11 -0
- package/dist/memory/cloud/sync-daemon.js +121 -9
- package/dist/memory/cloud/sync-disk.d.ts +1 -1
- package/dist/memory/cloud/sync-disk.js +31 -10
- package/dist/memory/cloud/sync-screenshots.d.ts +32 -0
- package/dist/memory/cloud/sync-screenshots.js +105 -0
- package/dist/memory/cloud/unsynced-roots.d.ts +47 -0
- package/dist/memory/cloud/unsynced-roots.js +166 -0
- package/dist/memory/impact/account-watch.d.ts +34 -0
- package/dist/memory/impact/account-watch.js +59 -0
- package/dist/memory/impact/impact-recorder.d.ts +8 -0
- package/dist/memory/impact/impact-recorder.js +12 -2
- package/dist/memory/impact/impact-store.d.ts +17 -4
- package/dist/memory/impact/impact-store.js +169 -63
- package/dist/memory/intent/inline-intent.d.ts +1 -0
- package/dist/memory/intent/intent-shard-store.js +16 -4
- package/dist/memory/intent/intent-shard.d.ts +14 -2
- package/dist/memory/intent/intent-store.d.ts +1 -0
- package/dist/memory/intent/intent-tools.js +122 -4
- package/dist/memory/intent/open-intents.d.ts +6 -0
- package/dist/memory/intent/open-intents.js +10 -1
- package/dist/memory/intent/settled-words.d.ts +24 -0
- package/dist/memory/intent/settled-words.js +130 -0
- package/dist/memory/journal/drive-flow.d.ts +16 -0
- package/dist/memory/journal/drive-flow.js +34 -2
- package/dist/memory/journal/drive-run-flush.d.ts +2 -0
- package/dist/memory/journal/drive-run-flush.js +20 -5
- package/dist/memory/journal/envelope.d.ts +8 -8
- package/dist/memory/journal/journal-recorder.js +52 -3
- package/dist/memory/journal/on-disk/retention.d.ts +8 -0
- package/dist/memory/journal/on-disk/retention.js +32 -2
- package/dist/memory/journal/on-disk/startup-maintenance.js +3 -1
- package/dist/memory/journal/on-disk/workspace-tiers.js +9 -4
- package/dist/memory/journal/session-end.d.ts +15 -1
- package/dist/memory/journal/session-end.js +42 -9
- package/dist/memory/project/artifact-root-resolver.d.ts +26 -1
- package/dist/memory/project/artifact-root-resolver.js +125 -16
- package/dist/memory/project/artifact-root.d.ts +46 -8
- package/dist/memory/project/artifact-root.js +89 -10
- package/dist/memory/project/dir/reticle-dir.d.ts +18 -2
- package/dist/memory/project/dir/reticle-dir.js +26 -3
- package/dist/memory/project/link-directory.d.ts +15 -0
- package/dist/memory/project/link-directory.js +44 -0
- package/dist/memory/project/project-tools.js +22 -3
- package/dist/memory/project/root-claims.d.ts +6 -0
- package/dist/memory/project/root-claims.js +39 -0
- package/dist/memory/project/session-root.d.ts +26 -1
- package/dist/memory/project/session-root.js +49 -5
- package/dist/memory/project/sync-status.d.ts +85 -0
- package/dist/memory/project/sync-status.js +224 -0
- package/dist/memory/recall/memory-tools.js +47 -2
- package/dist/memory/recall/platform-memory.d.ts +34 -0
- package/dist/memory/recall/platform-memory.js +139 -0
- package/dist/memory/recall/project-memory.d.ts +19 -0
- package/dist/memory/recall/project-memory.js +80 -13
- package/dist/portal/bridge/bridge.d.ts +9 -3
- package/dist/portal/bridge/bridge.js +82 -22
- package/dist/portal/bridge/harness-request.d.ts +23 -0
- package/dist/portal/bridge/harness-request.js +27 -0
- package/dist/portal/bridge/pairing-token.d.ts +9 -0
- package/dist/portal/bridge/pairing-token.js +17 -0
- package/dist/portal/bridge/wrong-path.d.ts +17 -0
- package/dist/portal/bridge/wrong-path.js +35 -0
- package/dist/portal/input/network-mock-tools.js +11 -2
- package/dist/portal/input/real-input.d.ts +83 -10
- package/dist/portal/input/real-input.js +218 -30
- package/dist/portal/input/viewport-tools.js +3 -3
- package/dist/portal/pool/browser-pool.d.ts +70 -9
- package/dist/portal/pool/browser-pool.js +190 -37
- package/dist/portal/pool/context-permissions.d.ts +33 -0
- package/dist/portal/pool/context-permissions.js +33 -0
- package/dist/portal/pool/lease-marker-stamp.d.ts +23 -0
- package/dist/portal/pool/lease-marker-stamp.js +49 -0
- package/dist/portal/pool/playwright-launcher.d.ts +35 -0
- package/dist/portal/pool/playwright-launcher.js +64 -3
- package/dist/portal/pool/pool-contract.d.ts +28 -5
- package/dist/portal/session/agent-link.d.ts +8 -0
- package/dist/portal/session/agent-link.js +17 -0
- package/dist/portal/session/command-payload.d.ts +8 -0
- package/dist/portal/session/command-payload.js +24 -0
- package/dist/portal/session/daemon-answers.d.ts +3 -3
- package/dist/portal/session/daemon-answers.js +4 -2
- package/dist/portal/session/dev-server/dev-command.d.ts +21 -0
- package/dist/portal/session/dev-server/dev-command.js +87 -12
- package/dist/portal/session/facts/departure-note.d.ts +22 -0
- package/dist/portal/session/facts/departure-note.js +47 -0
- package/dist/portal/session/facts/observed-state.d.ts +16 -18
- package/dist/portal/session/facts/observed-state.js +46 -3
- package/dist/portal/session/facts/session-replaced.d.ts +5 -0
- package/dist/portal/session/facts/session-replaced.js +5 -0
- package/dist/portal/session/first-run-wiring.d.ts +42 -0
- package/dist/portal/session/first-run-wiring.js +132 -0
- package/dist/portal/session/human/live-control.d.ts +9 -2
- package/dist/portal/session/human/live-control.js +12 -3
- package/dist/portal/session/human/notes-ledger.d.ts +20 -0
- package/dist/portal/session/human/notes-ledger.js +55 -0
- package/dist/portal/session/human/review-store.d.ts +12 -0
- package/dist/portal/session/human/review-store.js +18 -10
- package/dist/portal/session/live-control-tools.d.ts +0 -13
- package/dist/portal/session/live-control-tools.js +107 -13
- package/dist/portal/session/narration-args.d.ts +5 -0
- package/dist/portal/session/narration-args.js +17 -0
- package/dist/portal/session/no-session-diagnosis.d.ts +8 -1
- package/dist/portal/session/no-session-diagnosis.js +46 -9
- package/dist/portal/session/no-session-next-action.d.ts +31 -0
- package/dist/portal/session/no-session-next-action.js +159 -60
- package/dist/portal/session/no-session-watch.d.ts +14 -1
- package/dist/portal/session/no-session-watch.js +227 -17
- package/dist/portal/session/presence/session-lease.js +1 -1
- package/dist/portal/session/presence/session-mirror.js +3 -0
- package/dist/portal/session/recorded-gaps.d.ts +97 -0
- package/dist/portal/session/recorded-gaps.js +251 -0
- package/dist/portal/session/serving-directory.d.ts +27 -0
- package/dist/portal/session/serving-directory.js +45 -0
- package/dist/portal/session/session-health.d.ts +18 -0
- package/dist/portal/session/session-health.js +9 -1
- package/dist/portal/session/session-info.d.ts +8 -1
- package/dist/portal/session/session-info.js +8 -1
- package/dist/portal/session/session-manager.d.ts +39 -0
- package/dist/portal/session/session-manager.js +98 -11
- package/dist/portal/session/session-reaper.js +4 -1
- package/dist/portal/session/session-successor.d.ts +13 -0
- package/dist/portal/session/session-successor.js +1 -1
- package/dist/portal/session/session-tools.js +26 -3
- package/dist/portal/session/session.d.ts +22 -30
- package/dist/portal/session/session.js +81 -79
- package/dist/portal/session/timing/command-timeout.js +25 -1
- package/dist/portal/session/timing/wall-clock.d.ts +1 -1
- package/dist/portal/session/timing/wall-clock.js +1 -1
- package/dist/portal/session/zero-install-first-call.d.ts +31 -0
- package/dist/portal/session/zero-install-first-call.js +88 -0
- package/dist/start-options.d.ts +12 -0
- package/dist/start-wiring.d.ts +63 -0
- package/dist/start-wiring.js +169 -0
- package/dist/status-payload.d.ts +23 -1
- package/dist/status-payload.js +36 -1
- package/dist/surface/http-server.js +18 -2
- package/dist/surface/mcp/attach-memory.d.ts +1 -0
- package/dist/surface/mcp/attach-memory.js +12 -1
- package/dist/surface/mcp/mcp-proxy.d.ts +9 -0
- package/dist/surface/mcp/mcp-proxy.js +65 -13
- package/dist/surface/mcp/mcp.d.ts +34 -6
- package/dist/surface/mcp/mcp.js +61 -17
- package/dist/surface/mcp/proxy/drive-calls.d.ts +10 -0
- package/dist/surface/mcp/proxy/drive-calls.js +27 -0
- package/dist/surface/mcp/proxy/mcp-post-transport.js +5 -0
- package/dist/surface/mcp/server-instructions.d.ts +4 -2
- package/dist/surface/mcp/server-instructions.js +32 -14
- package/dist/surface/mcp/shared-params.js +2 -2
- package/dist/surface/mcp/surface-vocabulary.d.ts +2 -0
- package/dist/surface/mcp/surface-vocabulary.js +1 -0
- package/dist/surface/tools/account-tool.d.ts +22 -0
- package/dist/surface/tools/account-tool.js +157 -0
- package/dist/surface/tools/act/act-danger.d.ts +11 -0
- package/dist/surface/tools/act/act-danger.js +38 -1
- package/dist/surface/tools/act/act-observation.d.ts +33 -0
- package/dist/surface/tools/act/act-observation.js +57 -0
- package/dist/surface/tools/act/act-preflight.js +25 -2
- package/dist/surface/tools/act/act-target.js +8 -3
- package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +8 -0
- package/dist/surface/tools/act/navigation/navigate-arrival.js +56 -2
- package/dist/surface/tools/act/resolve-target.d.ts +1 -1
- package/dist/surface/tools/act/resolve-target.js +18 -3
- package/dist/surface/tools/act/screen-request.d.ts +34 -0
- package/dist/surface/tools/act/screen-request.js +113 -0
- package/dist/surface/tools/act/sequence-grade.d.ts +8 -0
- package/dist/surface/tools/act/sequence-grade.js +13 -2
- package/dist/surface/tools/act/settle-in-flight.js +25 -3
- package/dist/surface/tools/act-sequence-tool.js +138 -29
- package/dist/surface/tools/act-tools.d.ts +0 -9
- package/dist/surface/tools/act-tools.js +71 -41
- package/dist/surface/tools/agent/app-notes-learning.d.ts +7 -0
- package/dist/surface/tools/agent/app-notes-learning.js +80 -0
- package/dist/surface/tools/agent/app-notes.d.ts +4 -0
- package/dist/surface/tools/agent/app-notes.js +48 -0
- package/dist/surface/tools/agent/build-staleness.d.ts +7 -0
- package/dist/surface/tools/agent/build-staleness.js +62 -0
- package/dist/surface/tools/agent/compact-envelope.d.ts +80 -0
- package/dist/surface/tools/agent/compact-envelope.js +374 -0
- package/dist/surface/tools/agent/for-the-agent.d.ts +12 -0
- package/dist/surface/tools/agent/for-the-agent.js +44 -0
- package/dist/surface/tools/agent/notices.d.ts +50 -0
- package/dist/surface/tools/agent/notices.js +152 -0
- package/dist/surface/tools/agent/reteach.d.ts +11 -0
- package/dist/surface/tools/agent/reteach.js +50 -0
- package/dist/surface/tools/args/alias-args.d.ts +5 -0
- package/dist/surface/tools/args/alias-args.js +10 -0
- package/dist/surface/tools/args/confirm-dangerous-arg.d.ts +6 -0
- package/dist/surface/tools/args/confirm-dangerous-arg.js +6 -0
- package/dist/surface/tools/assert/assert-source.d.ts +15 -0
- package/dist/surface/tools/assert/assert-source.js +40 -0
- package/dist/surface/tools/assert/assert-verdict.d.ts +1 -1
- package/dist/surface/tools/assert/assert-verdict.js +42 -17
- package/dist/surface/tools/browser-tools.js +51 -2
- package/dist/surface/tools/chat-drives.d.ts +101 -0
- package/dist/surface/tools/chat-drives.js +409 -0
- package/dist/surface/tools/coverage-tools.d.ts +2 -10
- package/dist/surface/tools/coverage-tools.js +2 -53
- package/dist/surface/tools/dynamic-tools.js +29 -1
- package/dist/surface/tools/empty-session-list.d.ts +51 -0
- package/dist/surface/tools/empty-session-list.js +120 -0
- package/dist/surface/tools/error-recovery.d.ts +14 -0
- package/dist/surface/tools/error-recovery.js +105 -8
- package/dist/surface/tools/explore-tools.d.ts +31 -1
- package/dist/surface/tools/explore-tools.js +438 -66
- package/dist/surface/tools/feedback-tools.d.ts +2 -3
- package/dist/surface/tools/feedback-tools.js +18 -3
- package/dist/surface/tools/gap-novelty.d.ts +3 -1
- package/dist/surface/tools/gap-novelty.js +8 -1
- package/dist/surface/tools/harness-explore.d.ts +118 -57
- package/dist/surface/tools/harness-explore.js +344 -292
- package/dist/surface/tools/harness-gate.d.ts +88 -0
- package/dist/surface/tools/harness-gate.js +235 -0
- package/dist/surface/tools/harness-hunt.d.ts +43 -0
- package/dist/surface/tools/harness-hunt.js +215 -0
- package/dist/surface/tools/harness-plan.d.ts +17 -0
- package/dist/surface/tools/harness-plan.js +38 -0
- package/dist/surface/tools/harness-script.d.ts +30 -0
- package/dist/surface/tools/harness-script.js +560 -0
- package/dist/surface/tools/harness-tab-guard.d.ts +5 -0
- package/dist/surface/tools/harness-tab-guard.js +27 -0
- package/dist/surface/tools/harness-toolset.d.ts +22 -1
- package/dist/surface/tools/harness-toolset.js +101 -7
- package/dist/surface/tools/human-notes.d.ts +16 -0
- package/dist/surface/tools/human-notes.js +27 -0
- package/dist/surface/tools/invoke-tool.d.ts +5 -2
- package/dist/surface/tools/invoke-tool.js +263 -85
- package/dist/surface/tools/lease-hint.js +26 -5
- package/dist/surface/tools/lease-permissions.d.ts +33 -0
- package/dist/surface/tools/lease-permissions.js +73 -0
- package/dist/surface/tools/lease-readiness.d.ts +38 -0
- package/dist/surface/tools/lease-readiness.js +57 -0
- package/dist/surface/tools/lease-seed.d.ts +49 -0
- package/dist/surface/tools/lease-seed.js +167 -0
- package/dist/surface/tools/lease-tools.d.ts +13 -24
- package/dist/surface/tools/lease-tools.js +146 -197
- package/dist/surface/tools/live-call-text.js +4 -4
- package/dist/surface/tools/merge-tools.js +42 -2
- package/dist/surface/tools/merged-name-redirect.js +4 -0
- package/dist/surface/tools/next-step.d.ts +29 -0
- package/dist/surface/tools/next-step.js +214 -0
- package/dist/surface/tools/observe-tools.js +45 -9
- package/dist/surface/tools/platform-moment.d.ts +72 -0
- package/dist/surface/tools/platform-moment.js +296 -0
- package/dist/surface/tools/query-hint-schema.d.ts +7 -0
- package/dist/surface/tools/query-hint-schema.js +10 -0
- package/dist/surface/tools/read-tools.js +71 -14
- package/dist/surface/tools/real-input-attempt.js +96 -13
- package/dist/surface/tools/reticle-result.d.ts +120 -0
- package/dist/surface/tools/reticle-result.js +364 -0
- package/dist/surface/tools/tool-kit.d.ts +83 -3
- package/dist/surface/tools/tool-kit.js +77 -7
- package/dist/surface/tools/tools.js +43 -59
- package/dist/telemetry/account-envelope.d.ts +7 -0
- package/dist/telemetry/account-envelope.js +61 -0
- package/dist/telemetry/agent-client.d.ts +15 -0
- package/dist/telemetry/agent-client.js +57 -0
- package/dist/telemetry/app-instrumented.js +9 -2
- package/dist/telemetry/argument-shape.d.ts +7 -0
- package/dist/telemetry/argument-shape.js +86 -1
- package/dist/telemetry/automation-hint.d.ts +2 -3
- package/dist/telemetry/automation-hint.js +33 -8
- package/dist/telemetry/cli-telemetry.js +7 -2
- package/dist/telemetry/daemon-telemetry.js +3 -0
- package/dist/telemetry/error-fingerprint.d.ts +10 -1
- package/dist/telemetry/error-fingerprint.js +61 -5
- package/dist/telemetry/feedback-cli.d.ts +0 -13
- package/dist/telemetry/feedback-cli.js +0 -77
- package/dist/telemetry/feedback.d.ts +13 -0
- package/dist/telemetry/feedback.js +183 -17
- package/dist/telemetry/harness-run.d.ts +18 -0
- package/dist/telemetry/harness-run.js +80 -0
- package/dist/telemetry/hud-events.d.ts +16 -0
- package/dist/telemetry/hud-events.js +27 -0
- package/dist/telemetry/hud-metrics.d.ts +29 -6
- package/dist/telemetry/hud-metrics.js +116 -25
- package/dist/telemetry/init-telemetry.js +2 -2
- package/dist/telemetry/install-source.d.ts +13 -25
- package/dist/telemetry/install-source.js +44 -3
- package/dist/telemetry/mcp-connection.d.ts +0 -14
- package/dist/telemetry/mcp-connection.js +5 -1
- package/dist/telemetry/onboarding-firsts.d.ts +32 -0
- package/dist/telemetry/onboarding-firsts.js +81 -6
- package/dist/telemetry/platform-linked.d.ts +5 -0
- package/dist/telemetry/platform-linked.js +32 -0
- package/dist/telemetry/project-profile.js +5 -3
- package/dist/telemetry/proxy-telemetry.js +4 -1
- package/dist/telemetry/session-metrics.d.ts +15 -4
- package/dist/telemetry/session-metrics.js +88 -52
- package/dist/telemetry/telemetry.d.ts +38 -2
- package/dist/telemetry/telemetry.js +144 -34
- package/dist/telemetry/verification-of.d.ts +3 -1
- package/dist/telemetry/verification-of.js +13 -4
- package/dist/wire-journal.d.ts +2 -2
- package/dist/wire-journal.js +20 -6
- package/docs/README.md +3 -3
- package/docs/actions.mdx +6 -3
- package/docs/adapters.md +1 -1
- package/docs/agent-cheatsheet.md +25 -28
- package/docs/architecture.md +5 -5
- package/docs/autodrive.md +33 -28
- package/docs/benchmarks.md +5 -5
- package/docs/best-practices.mdx +27 -9
- package/docs/capabilities.mdx +14 -16
- package/docs/cli/affected.mdx +1 -1
- package/docs/cli/cloud.mdx +54 -75
- package/docs/cli/doctor.mdx +14 -3
- package/docs/cli/drive.mdx +20 -14
- package/docs/cli/feedback.mdx +3 -3
- package/docs/cli/gate.mdx +7 -2
- package/docs/cli/help.mdx +50 -55
- package/docs/cli/init.mdx +43 -28
- package/docs/cli/license.mdx +12 -8
- package/docs/cli/mcp.mdx +4 -4
- package/docs/cli/open.mdx +3 -3
- package/docs/cli/report.mdx +4 -2
- package/docs/cli/restart.mdx +2 -2
- package/docs/cli/rollback.mdx +14 -8
- package/docs/cli/serve.mdx +4 -4
- package/docs/cli/setup.mdx +23 -0
- package/docs/cli/status.mdx +18 -5
- package/docs/cli/stop.mdx +67 -8
- package/docs/cli/try.mdx +62 -0
- package/docs/cli/update.mdx +4 -3
- package/docs/cli/verify.mdx +17 -6
- package/docs/cli/version.mdx +5 -4
- package/docs/cli.mdx +111 -42
- package/docs/debugging.md +3 -3
- package/docs/deploy-checks.md +1 -1
- package/docs/desktop.mdx +9 -3
- package/docs/enterprise.md +11 -10
- package/docs/environment.mdx +7 -8
- package/docs/faq.mdx +3 -3
- package/docs/first-drive.md +5 -4
- package/docs/flows.md +35 -27
- package/docs/for-agents.md +4 -5
- package/docs/frameworks.mdx +32 -21
- package/docs/getting-started.md +65 -61
- package/docs/human-control.md +16 -16
- package/docs/index.mdx +15 -42
- package/docs/install-agentic.mdx +22 -37
- package/docs/install-manual.mdx +23 -13
- package/docs/instrumentation.mdx +5 -3
- package/docs/integration-patterns.md +7 -7
- package/docs/license-activation.mdx +1 -1
- package/docs/multi-agent-testing.md +24 -6
- package/docs/packages/babel-plugin.mdx +4 -2
- package/docs/packages/browser.mdx +16 -10
- package/docs/packages/core.mdx +12 -5
- package/docs/packages/electron.mdx +3 -2
- package/docs/packages/engine.mdx +1 -1
- package/docs/packages/eslint-plugin.mdx +18 -12
- package/docs/packages/next.mdx +8 -7
- package/docs/packages/open-verification.mdx +1 -1
- package/docs/packages/server.mdx +5 -5
- package/docs/packages/tauri.mdx +9 -9
- package/docs/packages/test.mdx +4 -10
- package/docs/packages/vite-plugin.mdx +32 -4
- package/docs/packages.mdx +11 -15
- package/docs/platform-integration.md +6 -5
- package/docs/predicates.mdx +40 -24
- package/docs/quickstart.mdx +69 -30
- package/docs/required-checks.md +8 -7
- package/docs/reticle-manual.md +15 -5
- package/docs/skill-file.mdx +17 -79
- package/docs/skill-setup.md +9 -9
- package/docs/skill.md +200 -0
- package/docs/system-map.md +7 -7
- package/docs/telemetry.md +23 -25
- package/docs/testing.md +4 -4
- package/docs/token-efficiency.md +12 -12
- package/docs/tools/act-and-wait.mdx +9 -2
- package/docs/tools/act-sequence.mdx +6 -7
- package/docs/tools/act.mdx +2 -2
- package/docs/tools/assert.mdx +18 -17
- package/docs/tools/console.mdx +9 -9
- package/docs/tools/inspect.mdx +16 -7
- package/docs/tools/look.mdx +24 -0
- package/docs/tools/navigate.mdx +5 -3
- package/docs/tools/network.mdx +2 -2
- package/docs/tools/observe.mdx +6 -6
- package/docs/tools/overview.mdx +34 -33
- package/docs/tools/query.mdx +5 -5
- package/docs/tools/session-and-feedback.mdx +22 -13
- package/docs/tools/sessions.mdx +8 -8
- package/docs/tools/snapshot.mdx +6 -5
- package/docs/tools/state.mdx +9 -9
- package/docs/tools/tools-and-run.mdx +26 -24
- package/docs/tools/verify.mdx +28 -0
- package/docs/tools/wait-for.mdx +8 -4
- package/docs/troubleshooting.mdx +21 -6
- package/docs/usage.md +55 -46
- package/docs/use-cases.mdx +3 -3
- package/docs/vs-chrome-devtools-mcp.mdx +9 -6
- package/docs/vs-playwright-mcp.mdx +3 -1
- package/docs/what-is-recorded.md +17 -5
- package/docs/what-is-reticle.mdx +5 -3
- package/docs/why-reticle.mdx +1 -1
- package/package.json +9 -12
- package/dist/command/cli/demo/demo-page.d.ts +0 -78
- package/dist/command/cli/demo/demo-page.js +0 -241
- package/dist/command/cli/demo/demo-run.d.ts +0 -38
- package/dist/command/cli/demo/demo-run.js +0 -138
- package/dist/features/harness/driver.d.ts +0 -50
- package/dist/features/harness/driver.js +0 -236
- package/dist/features/harness/jev-driver.d.ts +0 -188
- package/dist/features/harness/jev-driver.js +0 -678
- package/dist/features/harness/openai-driver.d.ts +0 -58
- package/dist/features/harness/openai-driver.js +0 -206
- package/dist/judgement/hunt/hunt-report.d.ts +0 -49
- package/dist/judgement/hunt/hunt-report.js +0 -84
- package/dist/language/flows/buddy-status.d.ts +0 -25
- package/dist/language/flows/buddy-status.js +0 -32
- package/dist/language/flows/change/watch-batcher.d.ts +0 -18
- package/dist/language/flows/change/watch-batcher.js +0 -19
- package/dist/memory/cloud/harness-offer.d.ts +0 -44
- package/dist/memory/cloud/harness-offer.js +0 -145
- package/dist/memory/project/dir/fill-value-store.d.ts +0 -32
- package/dist/memory/project/dir/fill-value-store.js +0 -88
- package/dist/surface/tools/feature-capture.d.ts +0 -151
- package/dist/surface/tools/feature-capture.js +0 -235
- package/dist/surface/tools/tool-hit-rate.d.ts +0 -87
- package/dist/surface/tools/tool-hit-rate.js +0 -90
- package/dist/telemetry/harness-drive.d.ts +0 -4
- package/dist/telemetry/harness-drive.js +0 -35
- package/dist/telemetry/identify.d.ts +0 -22
- package/dist/telemetry/identify.js +0 -73
- package/docs/cli/capsules.mdx +0 -70
- package/docs/cli/hunt.mdx +0 -73
- package/docs/cli/identify.mdx +0 -76
- package/docs/cli/kill.mdx +0 -91
- package/docs/cli/watch.mdx +0 -62
- package/docs/local-registry.md +0 -143
|
@@ -27,7 +27,26 @@
|
|
|
27
27
|
* - still in flight when the budget genuinely runs out → `unsettled`, as before, but now an honest
|
|
28
28
|
* limit instead of an early exit.
|
|
29
29
|
*/
|
|
30
|
-
import { EventType, NetInitiator, isDevToolingUrl, isForeignTraffic } from '@reticlehq/core';
|
|
30
|
+
import { EventType, NetInitiator, isDevToolingUrl, isForeignTraffic, urlForMatch, } from '@reticlehq/core';
|
|
31
|
+
/**
|
|
32
|
+
* What a URL is matched against, as opposed to what is shown.
|
|
33
|
+
*
|
|
34
|
+
* Redaction runs at emit time and rewrites a sensitive path segment in place: `/verify/refresh-token`
|
|
35
|
+
* becomes `/verify/[REDACTED]`, and the original survives only in `urlRaw`. A project that DECLARED
|
|
36
|
+
* `/verify/refresh-token` in `.reticle.json` `background` is matched with `String.includes`, so
|
|
37
|
+
* classifying on the displayed URL silently put the endpoint back into the in-flight count and held
|
|
38
|
+
* the settle window open — the exact defect this file exists to prevent, reached through the one
|
|
39
|
+
* field the classifier did not consult.
|
|
40
|
+
*
|
|
41
|
+
* The same division every other URL comparison in the product already uses (`urlContains`, `netCall`):
|
|
42
|
+
* match against `urlForMatch`, DISCLOSE `url`. The transcript keeps the redacted spelling.
|
|
43
|
+
*/
|
|
44
|
+
const matchUrlOf = (data) => {
|
|
45
|
+
// `urlForMatch` answers with the empty string when the event carries no URL at all, and every
|
|
46
|
+
// classifier below takes `undefined` to mean "nothing to judge". Fails OPEN either way.
|
|
47
|
+
const url = urlForMatch(data);
|
|
48
|
+
return 0 === url.length ? undefined : url;
|
|
49
|
+
};
|
|
31
50
|
/**
|
|
32
51
|
* The dev toolchain talking about ITSELF is not the app finishing its work.
|
|
33
52
|
*
|
|
@@ -36,7 +55,7 @@ import { EventType, NetInitiator, isDevToolingUrl, isForeignTraffic } from '@ret
|
|
|
36
55
|
* deliberately disabled control — no state change, no storage change, zero application requests —
|
|
37
56
|
* was graded on the strength of a Next webpack hot-update the same payload printed as ignored.
|
|
38
57
|
*/
|
|
39
|
-
const isDevTooling = (data) => isDevToolingUrl(
|
|
58
|
+
const isDevTooling = (data) => isDevToolingUrl(matchUrlOf(data));
|
|
40
59
|
/**
|
|
41
60
|
* Somebody else's host is not the app finishing its work.
|
|
42
61
|
*
|
|
@@ -55,12 +74,15 @@ const isDevTooling = (data) => isDevToolingUrl('string' === typeof data['url'] ?
|
|
|
55
74
|
* SAME-ORIGIN background traffic is never guessed: nothing in a URL separates the app's telemetry
|
|
56
75
|
* from the app's work. It is excluded only when the project DECLARED it (`background`).
|
|
57
76
|
*/
|
|
58
|
-
const isForeign = (data, appOrigin, background) => isForeignTraffic(
|
|
77
|
+
const isForeign = (data, appOrigin, background) => isForeignTraffic(matchUrlOf(data), appOrigin, background);
|
|
59
78
|
/**
|
|
60
79
|
* A departure records where the browser was SENT, not a request whose result we will see — the
|
|
61
80
|
* response is delivered to a document this session does not live into. It can never be matched by a
|
|
62
81
|
* NET_REQUEST, so counting it as outstanding would mean no page containing an outbound link or a
|
|
63
82
|
* download button ever settles again. See `NetInitiator.NAVIGATION`.
|
|
83
|
+
*
|
|
84
|
+
* The `settled` predicate asks the same question in `evalSettled`; it spells it against this same
|
|
85
|
+
* constant rather than against a string, which is what keeps the two answers one vocabulary.
|
|
64
86
|
*/
|
|
65
87
|
const isDeparture = (data) => data['initiator'] === NetInitiator.NAVIGATION;
|
|
66
88
|
/** How often to re-read the buffer. Short enough to return promptly, long enough not to spin. */
|
|
@@ -12,22 +12,28 @@
|
|
|
12
12
|
import { z } from 'zod';
|
|
13
13
|
import { timeoutMsSchema } from './args/numeric-bounds.js';
|
|
14
14
|
import { compileSequenceStep, pathOf } from '../../language/flows/replay.js';
|
|
15
|
+
import { DEFAULT_SEQUENCE_STEP_TIMEOUT_MS } from '../../language/flows/flow-step-runners.js';
|
|
15
16
|
import { sequenceStepArgs } from './act/act-preflight.js';
|
|
16
|
-
import { ReticleTool } from '@reticlehq/core';
|
|
17
|
+
import { REPLAY_PROGRAM_VERSION, ReticleTool, Verified, VerifiedReason, } from '@reticlehq/core';
|
|
17
18
|
import { healthEnvelope } from '../../portal/session/session-health.js';
|
|
18
19
|
import { pausedShortCircuit, pausedOutputShape, withControl, } from '../../portal/session/control-envelope.js';
|
|
19
20
|
import { asRecord, isAbsenceDerived, isAdvisory } from '@reticlehq/core';
|
|
20
21
|
import { sessionIdFromArgs } from './tools-helpers.js';
|
|
21
22
|
import { describeStepResult, runStepWithStaleRetry } from './act/act-sequence-retry.js';
|
|
22
23
|
import { assertSequenceSteps } from './act/act-preflight.js';
|
|
23
|
-
import { sessionIdShape } from './tool-kit.js';
|
|
24
|
+
import { EnvelopeKey, sessionIdShape } from './tool-kit.js';
|
|
25
|
+
import { takeStepShot } from '../../features/visual/step-shots.js';
|
|
24
26
|
import { actCommand } from './act-tools.js';
|
|
25
27
|
import { PredicateSchema, waitForPredicate, } from '@reticlehq/engine/question/predicate/predicate.js';
|
|
26
|
-
import { DeviationMode, gradeSequence, offerToKeep, } from './act/sequence-grade.js';
|
|
28
|
+
import { DeviationMode, gradeSequence, JOURNEY_RECORDING, offerToKeep, } from './act/sequence-grade.js';
|
|
27
29
|
import { stepEffect } from '@reticlehq/engine/evidence/step-effect.js';
|
|
28
30
|
// resolveActTarget moved out of act-tools into its own module on this branch; #706 was written
|
|
29
31
|
// against the older layout where act-tools re-exported it.
|
|
30
32
|
import { resolveActTarget } from './act/act-target.js';
|
|
33
|
+
import { gradeOfPredicate } from './assert/assert-grade.js';
|
|
34
|
+
import { describeWaitTarget } from '@reticlehq/engine/evidence/unsettled.js';
|
|
35
|
+
import { sourceOf } from './tools-helpers.js';
|
|
36
|
+
import { confirmedByDeclaration } from './act/act-danger.js';
|
|
31
37
|
/**
|
|
32
38
|
* The step's effect record, best-effort.
|
|
33
39
|
*
|
|
@@ -45,6 +51,38 @@ function effectOf(session, since) {
|
|
|
45
51
|
return {};
|
|
46
52
|
}
|
|
47
53
|
}
|
|
54
|
+
/** The verdict effect for one step: the same rules act_and_wait applies to one action. */
|
|
55
|
+
function stepVerdictEffect(check) {
|
|
56
|
+
const { verified, reason } = check.held
|
|
57
|
+
? 0 < check.contradicted.length
|
|
58
|
+
? { verified: Verified.NO, reason: VerifiedReason.CONTRADICTED }
|
|
59
|
+
: { verified: Verified.YES, reason: undefined }
|
|
60
|
+
: check.undecided
|
|
61
|
+
? { verified: Verified.UNKNOWN, reason: VerifiedReason.OBSERVATION_LOST }
|
|
62
|
+
: { verified: Verified.NO, reason: VerifiedReason.ASSERTION_FAILED };
|
|
63
|
+
const source = sourceOf(check.source);
|
|
64
|
+
return {
|
|
65
|
+
claim: describeWaitTarget(check.expect),
|
|
66
|
+
verified,
|
|
67
|
+
...(source === undefined ? {} : { source: `${source.file}:${String(source.line)}` }),
|
|
68
|
+
...(check.expected === undefined ? {} : { expected: check.expected }),
|
|
69
|
+
...(check.observed === undefined ? {} : { observed: check.observed }),
|
|
70
|
+
// Named in the step before the step ran — a check, not a rationalisation.
|
|
71
|
+
declaredBeforeActing: true,
|
|
72
|
+
grade: gradeOfPredicate(check.expect),
|
|
73
|
+
kind: check.expect.kind,
|
|
74
|
+
...(reason === undefined ? {} : { reason }),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** One step's check, journaled best-effort: the record must never fail the drive it records. */
|
|
78
|
+
function journalStep(session, args, effect) {
|
|
79
|
+
try {
|
|
80
|
+
session.recordAction(ReticleTool.ACT_SEQUENCE, args, effect);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// ponytail: a session without a journal (a test double, journaling off) keeps no check.
|
|
84
|
+
}
|
|
85
|
+
}
|
|
48
86
|
/**
|
|
49
87
|
* Ceiling for a burst gap. Past this it is not a burst, it is a paced walk.
|
|
50
88
|
*
|
|
@@ -57,6 +95,8 @@ function effectOf(session, since) {
|
|
|
57
95
|
* number: read its own slow endpoint.
|
|
58
96
|
*/
|
|
59
97
|
const BURST_MAX_GAP_MS = 500;
|
|
98
|
+
/** A step error that means nothing was acted on, or the page went away with the observation. */
|
|
99
|
+
const UNJUDGED_STEP = /matched no element|no longer resolves|session disconnected|session (was )?replaced/i;
|
|
60
100
|
export const ACT_SEQUENCE_TOOL = {
|
|
61
101
|
name: ReticleTool.ACT_SEQUENCE,
|
|
62
102
|
// The example is required for a core tool, and this one carries weight: the loop it replaces is
|
|
@@ -96,6 +136,8 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
96
136
|
since: z.number(),
|
|
97
137
|
dispatched: z.boolean(),
|
|
98
138
|
completed: z.number(),
|
|
139
|
+
/** Number of steps included in the saved recording, when a recording was created. */
|
|
140
|
+
recorded: z.number(),
|
|
99
141
|
stalled_at: z.number().optional(),
|
|
100
142
|
/** Index of the step whose declared consequence did not hold, when one did not. */
|
|
101
143
|
stopped_at: z.number().optional(),
|
|
@@ -137,8 +179,17 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
137
179
|
try {
|
|
138
180
|
const inputSteps = Array.isArray(args['steps']) ? args['steps'] : [];
|
|
139
181
|
assertSequenceSteps(inputSteps);
|
|
140
|
-
const perStepTimeout = 'number' === typeof args['timeout_ms']
|
|
182
|
+
const perStepTimeout = 'number' === typeof args['timeout_ms']
|
|
183
|
+
? args['timeout_ms']
|
|
184
|
+
: DEFAULT_SEQUENCE_STEP_TIMEOUT_MS;
|
|
141
185
|
const stepResults = [];
|
|
186
|
+
// Every step leaves a picture of the page as its outcome was decided — see step-shots.ts.
|
|
187
|
+
const pushStep = async (row) => {
|
|
188
|
+
stepResults.push({
|
|
189
|
+
...row,
|
|
190
|
+
[EnvelopeKey.SCREENSHOT]: await takeStepShot(deps, session.id, ReticleTool.ACT),
|
|
191
|
+
});
|
|
192
|
+
};
|
|
142
193
|
const expectations = [];
|
|
143
194
|
// `true` means the default window; a number means that window exactly. 0 is legal and means
|
|
144
195
|
// "no settle at all" — useful only when the app issues its request synchronously.
|
|
@@ -181,9 +232,9 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
181
232
|
// race rAF and return early anyway — a budget is a CEILING, not a floor, which is
|
|
182
233
|
// why an earlier attempt to pace with `settleMs` alone produced a 12ms step and
|
|
183
234
|
// no race at all.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
235
|
+
// A step that names its dangerous control and declares its consequence is
|
|
236
|
+
// confirmed by that declaration, as act_and_wait is — see confirmedByDeclaration.
|
|
237
|
+
args: ((stepArgs) => burstGapMs === undefined ? stepArgs : { ...stepArgs, settleMs: 0 })(confirmedByDeclaration(sequenceStepArgs(step), step['target'], step['expect'] !== undefined)),
|
|
187
238
|
}, perStepTimeout);
|
|
188
239
|
}, session, since, perStepTimeout);
|
|
189
240
|
// Hold the gap BEFORE the next dispatch, measured from this step's own start so the
|
|
@@ -197,16 +248,19 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
197
248
|
}
|
|
198
249
|
if (!outcome.ok) {
|
|
199
250
|
stalledAt = i;
|
|
200
|
-
|
|
251
|
+
await pushStep({
|
|
201
252
|
ref: step['ref'],
|
|
202
253
|
action: step['action'],
|
|
203
254
|
dispatched: false,
|
|
204
255
|
error: outcome.error ?? 'step failed',
|
|
205
256
|
});
|
|
257
|
+
const error = outcome.error ?? 'the step could not be performed';
|
|
206
258
|
expectations.push({
|
|
207
259
|
declared: undefined !== step['expect'],
|
|
208
260
|
held: false,
|
|
209
|
-
observed:
|
|
261
|
+
observed: error,
|
|
262
|
+
// Nothing acted on, or the page gone with the observation: undecided, not a miss.
|
|
263
|
+
...(UNJUDGED_STEP.test(error) ? { undecided: error } : {}),
|
|
210
264
|
});
|
|
211
265
|
break;
|
|
212
266
|
}
|
|
@@ -218,10 +272,13 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
218
272
|
* cannot be read. Sharing the builder is what makes that true by construction rather than
|
|
219
273
|
* by two implementations agreeing today.
|
|
220
274
|
*/
|
|
221
|
-
const
|
|
275
|
+
const describe = () => ({
|
|
222
276
|
...describeStepResult(step, asRecord(outcome.result)),
|
|
223
277
|
...effectOf(session, stepSince),
|
|
224
|
-
};
|
|
278
|
+
});
|
|
279
|
+
const deciding = (step) => (step.contradictions ?? [])
|
|
280
|
+
.map((c) => c.kind)
|
|
281
|
+
.filter((kind) => !isAdvisory(kind) && !isAbsenceDerived(kind));
|
|
225
282
|
/*
|
|
226
283
|
* Evaluate what the step SAID it would cause, in the window this step opened.
|
|
227
284
|
*
|
|
@@ -230,29 +287,61 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
230
287
|
* satisfy step four's assertion, which is a false green built out of correct parts.
|
|
231
288
|
*/
|
|
232
289
|
const parsed = PredicateSchema.safeParse(step['expect']);
|
|
233
|
-
const contradicted = (described.contradictions ?? [])
|
|
234
|
-
.map((c) => c.kind)
|
|
235
|
-
.filter((kind) => !isAdvisory(kind) && !isAbsenceDerived(kind));
|
|
236
|
-
const disagreement = 0 === contradicted.length ? {} : { contradicted };
|
|
237
290
|
if (!parsed.success) {
|
|
238
|
-
|
|
239
|
-
|
|
291
|
+
const described = describe();
|
|
292
|
+
const contradicted = deciding(described);
|
|
293
|
+
expectations.push({
|
|
294
|
+
declared: false,
|
|
295
|
+
...(0 === contradicted.length ? {} : { contradicted }),
|
|
296
|
+
});
|
|
297
|
+
await pushStep(described);
|
|
240
298
|
}
|
|
241
299
|
else {
|
|
242
300
|
const verdict = await waitForPredicate(session, parsed.data, perStepTimeout, stepSince);
|
|
301
|
+
// Described over the window the verdict was taken in, not the dispatch window before it:
|
|
302
|
+
// a step that waited 1.5s for its declared 200 reported that request "still in flight"
|
|
303
|
+
// beside `held: true`, a contradiction about a moment the verdict was not taken at.
|
|
304
|
+
const described = describe();
|
|
305
|
+
const contradicted = deciding(described);
|
|
306
|
+
const disagreement = 0 === contradicted.length ? {} : { contradicted };
|
|
243
307
|
const held = true === verdict.pass;
|
|
308
|
+
// A tab that went away (an external checkout page) or a predicate that could not be
|
|
309
|
+
// read decided nothing: unknown, never a miss blamed on the app.
|
|
310
|
+
const undecided = !held && (true === verdict.observationLost || verdict.inconclusive !== undefined);
|
|
311
|
+
// One check per declared step, journaled as act_and_wait journals its own, so the
|
|
312
|
+
// session's result, its run file and the dashboard all count it. See sequence-journal.ts.
|
|
313
|
+
journalStep(session, { step: i, expect: step['expect'] }, stepVerdictEffect({
|
|
314
|
+
expect: parsed.data,
|
|
315
|
+
held,
|
|
316
|
+
undecided,
|
|
317
|
+
contradicted,
|
|
318
|
+
expected: verdict.expected,
|
|
319
|
+
observed: held ? undefined : (verdict.observed ?? verdict.failureReason),
|
|
320
|
+
source: asRecord(outcome.result)['source'],
|
|
321
|
+
}));
|
|
244
322
|
expectations.push({
|
|
245
323
|
declared: true,
|
|
246
324
|
held,
|
|
325
|
+
...(undecided
|
|
326
|
+
? {
|
|
327
|
+
undecided: true === verdict.observationLost
|
|
328
|
+
? `${verdict.failureReason ?? 'the observation was lost'} (the page left)`
|
|
329
|
+
: (verdict.failureReason ?? 'the predicate could not be read'),
|
|
330
|
+
}
|
|
331
|
+
: {}),
|
|
247
332
|
...disagreement,
|
|
248
333
|
...(verdict.observed === undefined ? {} : { observed: verdict.observed }),
|
|
249
334
|
...(verdict.expected === undefined ? {} : { expected: verdict.expected }),
|
|
250
335
|
});
|
|
251
|
-
|
|
336
|
+
await pushStep({
|
|
252
337
|
...described,
|
|
253
338
|
expected: verdict.expected ?? true,
|
|
254
339
|
held,
|
|
255
340
|
...(held ? {} : { observed: verdict.observed ?? verdict.failureReason }),
|
|
341
|
+
// What would have held, on a case-only miss — the verdict stays a miss.
|
|
342
|
+
...(true === verdict.caseOnlyMiss
|
|
343
|
+
? { caseOnlyMiss: true, wouldHold: verdict.wouldHold }
|
|
344
|
+
: {}),
|
|
256
345
|
});
|
|
257
346
|
if (!held) {
|
|
258
347
|
stoppedAt ??= i;
|
|
@@ -263,7 +352,7 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
263
352
|
}
|
|
264
353
|
catch (err) {
|
|
265
354
|
stalledAt = i;
|
|
266
|
-
|
|
355
|
+
await pushStep({
|
|
267
356
|
ref: step['ref'],
|
|
268
357
|
action: step['action'],
|
|
269
358
|
dispatched: null,
|
|
@@ -285,26 +374,32 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
285
374
|
* The halted step counts: it WAS dispatched, and only the consequence it declared failed
|
|
286
375
|
* afterwards. A stalled step never ran, which is why that index stays exclusive.
|
|
287
376
|
*/
|
|
288
|
-
const completed =
|
|
377
|
+
const completed = DeviationMode.CONTINUE === onDeviation
|
|
378
|
+
? (stalledAt ?? inputSteps.length)
|
|
379
|
+
: stoppedAt !== undefined
|
|
380
|
+
? stoppedAt + 1
|
|
381
|
+
: (stalledAt ?? inputSteps.length);
|
|
289
382
|
if (completed > 0) {
|
|
290
383
|
session.lastAct.markActed(since, undefined, undefined);
|
|
291
384
|
}
|
|
292
385
|
// Same as captureAct: no `active()` gate, so a sequence driven with nothing open still lands
|
|
293
|
-
// in the ambient tape. A stalled plan
|
|
294
|
-
|
|
386
|
+
// in the ambient tape. A stalled plan keeps only the prefix whose steps actually ran.
|
|
387
|
+
let journey;
|
|
388
|
+
if (completed > 0) {
|
|
295
389
|
// A sub-step keeps its `expect` only if it held — same rule as act_and_wait, so a flow
|
|
296
390
|
// never replays an expectation that was never once observed to hold.
|
|
297
|
-
const proved = inputSteps.map((raw, i) => {
|
|
391
|
+
const proved = inputSteps.slice(0, completed).map((raw, i) => {
|
|
298
392
|
const step = asRecord(raw);
|
|
299
393
|
const { expect: _expect, ...rest } = step;
|
|
300
394
|
return true === expectations[i]?.held ? step : rest;
|
|
301
395
|
});
|
|
302
396
|
const recorded = compileSequenceStep({ ...args, steps: proved }, {
|
|
303
|
-
count:
|
|
304
|
-
steps: stepResults,
|
|
397
|
+
count: completed,
|
|
398
|
+
steps: stepResults.slice(0, completed),
|
|
305
399
|
});
|
|
306
|
-
|
|
307
|
-
deps.recordings.
|
|
400
|
+
journey = recorded;
|
|
401
|
+
deps.recordings.capture(pageBefore === undefined ? recorded : { ...recorded, page: pageBefore }, undefined, session.id);
|
|
402
|
+
deps.recordings.markEnded(pathOf(session.url), session.id);
|
|
308
403
|
}
|
|
309
404
|
/*
|
|
310
405
|
* The grade, and the coverage it is never allowed to hide.
|
|
@@ -317,12 +412,26 @@ export const ACT_SEQUENCE_TOOL = {
|
|
|
317
412
|
planned: inputSteps.length,
|
|
318
413
|
dispatched: completed > 0,
|
|
319
414
|
});
|
|
320
|
-
|
|
321
|
-
|
|
415
|
+
// The journey a `keep` offer names, held as a stopped recording so `reticle_flow_save
|
|
416
|
+
// { flowName: JOURNEY_RECORDING, saveAs }` saves exactly what was just driven. The offer used
|
|
417
|
+
// to name a save that refused with no recording, a dead end that cost a round trip.
|
|
418
|
+
if (journey !== undefined && offerToKeep(grade) !== undefined) {
|
|
419
|
+
deps.recordings.saveCompiled({
|
|
420
|
+
name: JOURNEY_RECORDING,
|
|
421
|
+
version: REPLAY_PROGRAM_VERSION,
|
|
422
|
+
steps: [journey],
|
|
423
|
+
...(pageBefore === undefined ? {} : { startPath: pageBefore }),
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
const tailStart = DeviationMode.HALT === onDeviation && stoppedAt !== undefined
|
|
427
|
+
? stoppedAt + 1
|
|
428
|
+
: (stalledAt ?? inputSteps.length);
|
|
429
|
+
const tail = inputSteps.slice(tailStart);
|
|
322
430
|
return withControl(session, {
|
|
323
431
|
since,
|
|
324
432
|
dispatched: completed > 0,
|
|
325
433
|
completed,
|
|
434
|
+
recorded: journey === undefined ? 0 : completed,
|
|
326
435
|
...(stalledAt !== undefined ? { stalled_at: stalledAt } : {}),
|
|
327
436
|
...(stoppedAt !== undefined ? { stopped_at: stoppedAt } : {}),
|
|
328
437
|
verified: grade.verified,
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Action tools — reticle_act and reticle_act_and_wait. Split out of tools.ts to keep that file under
|
|
3
|
-
* the line cap and assembled back into the tool list there via ...ACT_TOOLS; the native-input attempt
|
|
4
|
-
* itself lives in real-input-attempt.ts for the same reason.
|
|
5
|
-
*
|
|
6
|
-
* `reticle_act_sequence` is a sibling file and is assembled by `tools.ts` directly. It used to be
|
|
7
|
-
* re-exported through this list, which made a cycle out of nothing: that file needs `actCommand` from
|
|
8
|
-
* here, and a registry is the right place to collect a definition from.
|
|
9
|
-
*/
|
|
10
1
|
import type { Session } from '../../portal/session/session.js';
|
|
11
2
|
import { type ToolDef, type ToolDeps } from './tool-kit.js';
|
|
12
3
|
/**
|