@reticlehq/server 3.6.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/SKILL.md +122 -123
- 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 +18 -2
- package/dist/command/cli/adhoc-verdict.js +70 -6
- 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/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 +28 -105
- 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 +34 -4
- package/dist/command/cli/cli-verify.js +81 -12
- package/dist/command/cli/cloud-cli.d.ts +13 -0
- package/dist/command/cli/cloud-cli.js +145 -333
- 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 +15 -1
- package/dist/command/cli/cloud-login.js +67 -13
- 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/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/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 +11 -2
- 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.js +1 -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 +29 -8
- 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 -178
- 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 +14 -0
- package/dist/command/cli.js +103 -83
- package/dist/command/daemon/daemon-resilience.js +4 -4
- package/dist/command/daemon/daemon-resolve.d.ts +9 -1
- package/dist/command/daemon/daemon-resolve.js +49 -10
- 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/dev-server-log-cap.js +2 -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 +10 -1
- package/dist/command/setup/init/init-port.js +22 -2
- package/dist/command/setup/init/init-runtime.d.ts +12 -2
- package/dist/command/setup/init/init-runtime.js +96 -37
- package/dist/command/setup/node-effects.d.ts +2 -0
- package/dist/command/setup/node-effects.js +36 -8
- 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 +1 -1
- package/dist/command/setup/run-setup.d.ts +29 -9
- package/dist/command/setup/run-setup.js +34 -28
- package/dist/command/setup/setup-command.d.ts +23 -0
- package/dist/command/setup/setup-command.js +57 -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 +38 -2
- package/dist/features/crawl/crawl.js +14 -1
- package/dist/features/exhaust/ledger.d.ts +14 -14
- package/dist/features/harness/drive-report.d.ts +39 -5
- package/dist/features/harness/drive-report.js +271 -54
- 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 +1 -1
- package/dist/features/harness/drivers.js +1 -1
- 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/goals.d.ts +68 -7
- package/dist/features/harness/goals.js +289 -36
- package/dist/features/harness/harness.d.ts +30 -1
- package/dist/features/harness/harness.js +141 -7
- package/dist/features/harness/platform/local-apps.d.ts +36 -3
- package/dist/features/harness/platform/local-apps.js +81 -5
- 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 +8 -2
- package/dist/features/harness/platform/remote-drive.js +22 -9
- package/dist/features/harness/platform/script.d.ts +57 -11
- package/dist/features/harness/platform/script.js +144 -12
- package/dist/features/harness/platform/server-driver.d.ts +17 -4
- package/dist/features/harness/platform/server-driver.js +29 -26
- package/dist/features/harness/platform-config.d.ts +38 -5
- package/dist/features/harness/platform-config.js +93 -8
- package/dist/features/harness/route-guess.d.ts +13 -0
- package/dist/features/harness/route-guess.js +49 -0
- package/dist/features/harness/script/script-run.d.ts +30 -1
- package/dist/features/harness/script/script-run.js +355 -48
- 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.js +22 -14
- 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 +21 -2
- package/dist/hooks/driven-by.js +42 -2
- package/dist/hooks/hook-bus.d.ts +4 -0
- package/dist/hooks/hook-bus.js +18 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26 -183
- 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 +20 -4
- 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.js +25 -9
- package/dist/judgement/runs/artifact/run-store.d.ts +13 -1
- package/dist/judgement/runs/artifact/run-store.js +175 -8
- 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 +53 -5
- package/dist/judgement/runs/drive-run.js +234 -20
- package/dist/judgement/runs/resume.d.ts +44 -0
- package/dist/judgement/runs/resume.js +137 -0
- package/dist/judgement/runs/reticle-runner.js +5 -2
- 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 +2 -0
- package/dist/judgement/runs/verification-sync.js +36 -15
- package/dist/language/flows/decision.js +2 -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 +7 -2
- package/dist/language/flows/flow-anchor.js +10 -3
- 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 +37 -3
- package/dist/language/flows/flow-replay-run.js +16 -18
- package/dist/language/flows/flow-replay-types.d.ts +1 -1
- package/dist/language/flows/flow-replay.d.ts +18 -1
- package/dist/language/flows/flow-replay.js +22 -7
- package/dist/language/flows/flow-result.d.ts +22 -1
- package/dist/language/flows/flow-result.js +47 -2
- package/dist/language/flows/flow-step-runners.d.ts +2 -0
- package/dist/language/flows/flow-step-runners.js +12 -6
- package/dist/language/flows/flow-store-for-session.js +5 -1
- package/dist/language/flows/flow-tools.d.ts +10 -0
- package/dist/language/flows/flow-tools.js +61 -62
- package/dist/language/flows/flows.d.ts +16 -1
- package/dist/language/flows/flows.js +69 -10
- package/dist/language/flows/narrow-write.d.ts +7 -0
- package/dist/language/flows/narrow-write.js +36 -1
- package/dist/language/flows/recording/recording-backtrack.js +14 -1
- package/dist/language/flows/recording/tape/recordings.d.ts +29 -1
- package/dist/language/flows/recording/tape/recordings.js +60 -10
- package/dist/language/flows/replay.js +29 -6
- package/dist/language/flows/single-replay.d.ts +7 -0
- package/dist/language/flows/single-replay.js +26 -0
- package/dist/language/flows/verify-change-tools.d.ts +1 -0
- package/dist/language/flows/verify-change-tools.js +200 -193
- package/dist/memory/cloud/cloud-config.d.ts +10 -1
- package/dist/memory/cloud/cloud-config.js +19 -5
- package/dist/memory/cloud/cloud-sync.js +3 -3
- package/dist/memory/cloud/harness-config.d.ts +49 -0
- package/dist/memory/cloud/harness-config.js +16 -20
- package/dist/memory/cloud/memory-scope.d.ts +17 -0
- package/dist/memory/cloud/memory-scope.js +22 -0
- package/dist/memory/cloud/sync-cycle.d.ts +32 -4
- package/dist/memory/cloud/sync-cycle.js +113 -12
- package/dist/memory/cloud/sync-daemon.d.ts +11 -0
- package/dist/memory/cloud/sync-daemon.js +114 -4
- package/dist/memory/cloud/sync-disk.js +26 -2
- 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 +16 -1
- package/dist/memory/impact/account-watch.js +26 -1
- package/dist/memory/impact/impact-store.d.ts +1 -4
- package/dist/memory/impact/impact-store.js +32 -42
- 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 +12 -0
- package/dist/memory/intent/intent-store.d.ts +1 -0
- package/dist/memory/intent/intent-tools.js +42 -2
- 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/journal-recorder.js +46 -3
- package/dist/memory/journal/on-disk/retention.d.ts +5 -0
- package/dist/memory/journal/on-disk/retention.js +27 -2
- package/dist/memory/journal/on-disk/workspace-tiers.js +2 -0
- package/dist/memory/journal/session-end.d.ts +15 -1
- package/dist/memory/journal/session-end.js +38 -7
- package/dist/memory/project/artifact-root-resolver.js +33 -5
- package/dist/memory/project/artifact-root.d.ts +4 -3
- package/dist/memory/project/artifact-root.js +2 -2
- package/dist/memory/project/dir/reticle-dir.d.ts +14 -0
- package/dist/memory/project/dir/reticle-dir.js +23 -2
- package/dist/memory/project/link-directory.d.ts +15 -0
- package/dist/memory/project/link-directory.js +44 -0
- 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 +2 -0
- package/dist/memory/project/session-root.js +9 -1
- package/dist/memory/project/sync-status.d.ts +46 -0
- package/dist/memory/project/sync-status.js +135 -1
- package/dist/memory/recall/memory-tools.js +46 -3
- 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.js +36 -8
- package/dist/portal/bridge/bridge.d.ts +9 -5
- package/dist/portal/bridge/bridge.js +66 -23
- package/dist/portal/bridge/harness-request.d.ts +23 -0
- package/dist/portal/bridge/harness-request.js +27 -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 +2 -0
- package/dist/portal/input/real-input.js +13 -10
- package/dist/portal/pool/browser-pool.d.ts +48 -0
- package/dist/portal/pool/browser-pool.js +120 -2
- 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 +27 -5
- package/dist/portal/pool/playwright-launcher.js +59 -14
- package/dist/portal/pool/pool-contract.d.ts +21 -1
- 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.js +6 -1
- 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 +9 -0
- package/dist/portal/session/dev-server/dev-command.js +27 -1
- 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/human/live-control.d.ts +9 -2
- package/dist/portal/session/human/live-control.js +12 -3
- package/dist/portal/session/live-control-tools.js +82 -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 +1 -1
- package/dist/portal/session/no-session-diagnosis.js +31 -9
- package/dist/portal/session/no-session-next-action.d.ts +20 -0
- package/dist/portal/session/no-session-next-action.js +134 -61
- package/dist/portal/session/no-session-watch.js +179 -22
- package/dist/portal/session/presence/session-lease.js +1 -1
- package/dist/portal/session/recorded-gaps.d.ts +97 -0
- package/dist/portal/session/recorded-gaps.js +251 -0
- package/dist/portal/session/session-health.d.ts +11 -0
- package/dist/portal/session/session-health.js +3 -1
- package/dist/portal/session/session-info.js +2 -1
- package/dist/portal/session/session-manager.d.ts +18 -0
- package/dist/portal/session/session-manager.js +54 -3
- package/dist/portal/session/session-successor.d.ts +8 -0
- package/dist/portal/session/session-successor.js +1 -1
- package/dist/portal/session/session.d.ts +15 -28
- package/dist/portal/session/session.js +60 -61
- 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 +7 -1
- package/dist/start-wiring.d.ts +63 -0
- package/dist/start-wiring.js +169 -0
- package/dist/status-payload.d.ts +13 -1
- package/dist/status-payload.js +13 -1
- package/dist/surface/http-server.js +7 -1
- 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 +4 -0
- package/dist/surface/mcp/mcp-proxy.js +29 -8
- package/dist/surface/mcp/mcp.d.ts +23 -0
- package/dist/surface/mcp/mcp.js +34 -4
- 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.js +22 -14
- package/dist/surface/mcp/shared-params.js +1 -1
- 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/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-sequence-tool.js +136 -27
- package/dist/surface/tools/act-tools.d.ts +0 -9
- package/dist/surface/tools/act-tools.js +48 -34
- 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.js +25 -15
- package/dist/surface/tools/browser-tools.js +43 -1
- package/dist/surface/tools/chat-drives.d.ts +75 -0
- package/dist/surface/tools/chat-drives.js +265 -21
- 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 +10 -0
- package/dist/surface/tools/empty-session-list.js +45 -5
- package/dist/surface/tools/error-recovery.d.ts +8 -0
- package/dist/surface/tools/error-recovery.js +69 -5
- package/dist/surface/tools/explore-tools.d.ts +23 -2
- package/dist/surface/tools/explore-tools.js +377 -74
- package/dist/surface/tools/feedback-tools.d.ts +2 -3
- package/dist/surface/tools/feedback-tools.js +4 -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 +52 -73
- package/dist/surface/tools/harness-explore.js +177 -146
- 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 +5 -0
- package/dist/surface/tools/harness-plan.js +7 -0
- package/dist/surface/tools/harness-script.d.ts +22 -0
- package/dist/surface/tools/harness-script.js +256 -38
- 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 +8 -0
- package/dist/surface/tools/harness-toolset.js +27 -4
- 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 +220 -93
- 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 +20 -0
- package/dist/surface/tools/lease-seed.js +45 -1
- package/dist/surface/tools/lease-tools.d.ts +10 -1
- package/dist/surface/tools/lease-tools.js +119 -69
- package/dist/surface/tools/live-call-text.js +2 -2
- 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 +11 -1
- package/dist/surface/tools/next-step.js +73 -18
- package/dist/surface/tools/observe-tools.js +43 -5
- package/dist/surface/tools/platform-moment.d.ts +60 -0
- package/dist/surface/tools/platform-moment.js +132 -4
- package/dist/surface/tools/read-tools.js +65 -14
- 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 +68 -2
- package/dist/surface/tools/tool-kit.js +73 -1
- package/dist/surface/tools/tools.js +25 -13
- 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 +27 -6
- package/dist/telemetry/hud-metrics.js +99 -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 +26 -2
- package/dist/telemetry/telemetry.js +102 -21
- package/dist/telemetry/verification-of.d.ts +3 -1
- package/dist/telemetry/verification-of.js +12 -4
- package/dist/wire-journal.d.ts +2 -2
- package/dist/wire-journal.js +16 -5
- package/docs/README.md +2 -2
- package/docs/actions.mdx +6 -3
- package/docs/adapters.md +1 -1
- package/docs/agent-cheatsheet.md +24 -27
- package/docs/architecture.md +5 -5
- package/docs/autodrive.md +13 -12
- 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 +8 -3
- package/docs/cli/drive.mdx +12 -12
- 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 +32 -15
- 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 +13 -4
- 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 +3 -2
- package/docs/cli.mdx +110 -41
- package/docs/debugging.md +3 -3
- package/docs/deploy-checks.md +1 -1
- package/docs/desktop.mdx +5 -3
- package/docs/enterprise.md +11 -10
- package/docs/environment.mdx +5 -2
- 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 +66 -64
- package/docs/human-control.md +15 -14
- package/docs/index.mdx +15 -43
- package/docs/install-agentic.mdx +22 -37
- package/docs/install-manual.mdx +22 -12
- 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 +8 -8
- package/docs/packages/test.mdx +4 -10
- package/docs/packages/vite-plugin.mdx +11 -4
- package/docs/packages.mdx +11 -15
- package/docs/platform-integration.md +6 -5
- package/docs/predicates.mdx +40 -24
- package/docs/quickstart.mdx +58 -29
- 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 +22 -24
- 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 +13 -4
- 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 +51 -45
- 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 +7 -5
- package/docs/what-is-reticle.mdx +2 -2
- package/docs/why-reticle.mdx +1 -1
- package/package.json +6 -5
- package/dist/command/cli/demo/demo-page.d.ts +0 -78
- package/dist/command/cli/demo/demo-page.js +0 -249
- package/dist/command/cli/demo/demo-run.d.ts +0 -38
- package/dist/command/cli/demo/demo-run.js +0 -138
- 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/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
|
@@ -8,9 +8,13 @@ import { z } from 'zod';
|
|
|
8
8
|
import { EventType, ReticleCommand, REPLAY_PROGRAM_VERSION, SnapshotMode, StorageArea, } from '@reticlehq/core';
|
|
9
9
|
import { ReticleTool } from '@reticlehq/core';
|
|
10
10
|
import { advanceMsSchema, depthSchema } from './args/numeric-bounds.js';
|
|
11
|
+
import { aliasParam, aliasUsed } from './args/alias-args.js';
|
|
12
|
+
/** `name` for `recordingName`: the spelling every other naming argument uses. */
|
|
13
|
+
const RECORDING_NAME_ALIAS = z.string().optional().describe('Alias for `recordingName`.');
|
|
11
14
|
import { proposeConsequences } from '../../judgement/oracles/propose-consequences.js';
|
|
12
15
|
import { recordingBacktrackWarning, routesFromRecording, } from '../../language/flows/recording/recording-backtrack.js';
|
|
13
16
|
import { replayProgram } from '../../language/flows/replay.js';
|
|
17
|
+
import { redactRecordedSteps } from '../../language/flows/flows.js';
|
|
14
18
|
import { diffLines } from '../../memory/project/baselines.js';
|
|
15
19
|
import { selectPath, capDepth, projectComponentState } from '../../portal/session/state-select.js';
|
|
16
20
|
import { costHint } from '../../portal/session/output-budget.js';
|
|
@@ -18,10 +22,10 @@ import { buildReactionReport, summarizeReaction } from '@reticlehq/engine/questi
|
|
|
18
22
|
import { asNumber, asString, parseInteractive } from '@reticlehq/core';
|
|
19
23
|
import { sessionIdShape, commandOrThrow, snapshotTree } from './tool-kit.js';
|
|
20
24
|
import { bufferEnvelope } from '../../portal/session/session-health.js';
|
|
21
|
-
import { routeOfUrl } from '@reticlehq/engine/question/predicate/predicate-route.js';
|
|
25
|
+
import { navigablePath, routeOfUrl } from '@reticlehq/engine/question/predicate/predicate-route.js';
|
|
22
26
|
/** The route part of a session URL. A host belongs to the machine, not to the journey. */
|
|
23
27
|
/**
|
|
24
|
-
* The page a recording started on, as a NAVIGABLE path: pathname + hash.
|
|
28
|
+
* The page a recording started on, as a NAVIGABLE path: pathname + query + hash.
|
|
25
29
|
*
|
|
26
30
|
* The hash matters and the pathname alone is not enough. Under a hash router every page has the
|
|
27
31
|
* document pathname `/`, so a recording made on `#/posts/12` stored `/`, the replay's start-path
|
|
@@ -32,8 +36,13 @@ function pathnameOf(url) {
|
|
|
32
36
|
if (url === undefined)
|
|
33
37
|
return undefined;
|
|
34
38
|
const parts = routeOfUrl(url);
|
|
35
|
-
|
|
39
|
+
// The query too, minus Reticle's own params: `/products?scope=TOPWEAR` and `/products` are different
|
|
40
|
+
// pages, and replay compares the query when the flow recorded one (#1059), so dropping it here
|
|
41
|
+
// started the replay on the unfiltered page (#1411).
|
|
42
|
+
return parts === undefined ? undefined : navigablePath(parts);
|
|
36
43
|
}
|
|
44
|
+
/** What record-stop says when the span crossed a full-page load (#1411). */
|
|
45
|
+
const RECORDING_CROSSED_RELOAD = 'The recording crossed a full-page load: the page it started on unloaded, so the reaction report and the proposed consequences cover only the page that loaded after it.';
|
|
37
46
|
/**
|
|
38
47
|
* What record-stop says about a step that compiled to no anchor at all.
|
|
39
48
|
*
|
|
@@ -105,6 +114,9 @@ export const READ_TOOLS = [
|
|
|
105
114
|
baseline: z
|
|
106
115
|
.string()
|
|
107
116
|
.describe('Baseline name to compare against. Call reticle_baseline{action:"list"} to get available names; names are created by reticle_baseline{action:"save"}.'),
|
|
117
|
+
// Read below as an alias, so declared: a merged tool refuses a key its chosen action does not
|
|
118
|
+
// declare, and `name` is what the saving sibling calls the same thing (#1536).
|
|
119
|
+
name: z.string().optional().describe('Alias for `baseline`.'),
|
|
108
120
|
...sessionIdShape,
|
|
109
121
|
},
|
|
110
122
|
outputSchema: {
|
|
@@ -148,22 +160,30 @@ export const READ_TOOLS = [
|
|
|
148
160
|
inputSchema: {
|
|
149
161
|
recordingName: z
|
|
150
162
|
.string()
|
|
163
|
+
.optional()
|
|
151
164
|
.describe('Identifier for this recording. Pass the same name to reticle_record{action:"stop"} and reticle_replay.'),
|
|
165
|
+
name: RECORDING_NAME_ALIAS,
|
|
152
166
|
...sessionIdShape,
|
|
153
167
|
},
|
|
154
168
|
outputSchema: {
|
|
155
169
|
recordingName: z.string(),
|
|
156
170
|
since: z.number(),
|
|
171
|
+
normalized: z.array(z.string()).optional(),
|
|
157
172
|
},
|
|
158
173
|
handler: (deps, args) => {
|
|
159
174
|
const session = deps.sessions.resolve(asString(args['sessionId']));
|
|
160
|
-
const
|
|
175
|
+
const normalized = aliasUsed(args, 'recordingName', ['name']);
|
|
176
|
+
const name = asString(aliasParam(args, 'recordingName', ['name'])['recordingName']) ?? 'default';
|
|
161
177
|
const cursor = session.elapsed();
|
|
162
178
|
// Where the journey begins, so a saved flow can navigate here before step 1 instead of
|
|
163
179
|
// replaying from wherever the page happens to be. Pathname only: a host or port belongs to
|
|
164
180
|
// the machine that recorded it, not to the journey.
|
|
165
|
-
deps.recordings.start(name, cursor, pathnameOf(session.url), session.id);
|
|
166
|
-
return Promise.resolve({
|
|
181
|
+
deps.recordings.start(name, cursor, pathnameOf(session.url), session.id, session.currentDocumentId);
|
|
182
|
+
return Promise.resolve({
|
|
183
|
+
recordingName: name,
|
|
184
|
+
since: cursor,
|
|
185
|
+
...(0 === normalized.length ? {} : { normalized }),
|
|
186
|
+
});
|
|
167
187
|
},
|
|
168
188
|
},
|
|
169
189
|
{
|
|
@@ -172,7 +192,9 @@ export const READ_TOOLS = [
|
|
|
172
192
|
inputSchema: {
|
|
173
193
|
recordingName: z
|
|
174
194
|
.string()
|
|
195
|
+
.optional()
|
|
175
196
|
.describe('Identifier of an active recording started with reticle_record{action:"start"}.'),
|
|
197
|
+
name: RECORDING_NAME_ALIAS,
|
|
176
198
|
...sessionIdShape,
|
|
177
199
|
},
|
|
178
200
|
outputSchema: {
|
|
@@ -189,7 +211,7 @@ export const READ_TOOLS = [
|
|
|
189
211
|
// The recording actually RUNNING when there is exactly one, not the literal name `default` —
|
|
190
212
|
// the same defaulting that made `annotate` report "no steps" against a recording full of them.
|
|
191
213
|
// With several running, `default` stays the documented answer rather than a guess.
|
|
192
|
-
const name = resolveAnnotateTarget(asString(args['recordingName']), deps.recordings.active());
|
|
214
|
+
const name = resolveAnnotateTarget(asString(aliasParam(args, 'recordingName', ['name'])['recordingName']), deps.recordings.active());
|
|
193
215
|
const rec = deps.recordings.stop(name);
|
|
194
216
|
if (rec === undefined) {
|
|
195
217
|
const active = deps.recordings.active();
|
|
@@ -197,7 +219,18 @@ export const READ_TOOLS = [
|
|
|
197
219
|
? `no active recording named '${name}' — none is in progress`
|
|
198
220
|
: `no active recording named '${name}'; in progress: ${active.map((r) => `'${r}'`).join(', ')}`);
|
|
199
221
|
}
|
|
200
|
-
|
|
222
|
+
// A full-page load mid-recording reconnects the page as a NEW Session, whose clock restarts
|
|
223
|
+
// below the cursor stored at start: the window came out negative and the span empty (#1411).
|
|
224
|
+
// Detected by the session that answers now not being the one that started it, or by the tab
|
|
225
|
+
// being on another document. A reconnect can keep the id, and its clock comes from another
|
|
226
|
+
// connection, so comparing clocks alone misses a reload once the new page has run past the
|
|
227
|
+
// cursor. The clock check stays for an SDK that stamps no document. The new page is then read
|
|
228
|
+
// from its start, and the warning says the report covers only it.
|
|
229
|
+
const crossedReload = (rec.session !== undefined && rec.session !== session.id) ||
|
|
230
|
+
(rec.document !== undefined && rec.document !== session.currentDocumentId) ||
|
|
231
|
+
session.elapsed() < rec.cursor;
|
|
232
|
+
const from = crossedReload ? 0 : rec.cursor;
|
|
233
|
+
const events = session.eventsSince(from);
|
|
201
234
|
const routes = routesFromRecording(rec.startPath, events);
|
|
202
235
|
const program = {
|
|
203
236
|
name,
|
|
@@ -208,7 +241,7 @@ export const READ_TOOLS = [
|
|
|
208
241
|
};
|
|
209
242
|
deps.recordings.saveCompiled(program);
|
|
210
243
|
const unstable = rec.steps.filter((s) => !s.stable).length;
|
|
211
|
-
const report = buildReactionReport(events, session.elapsed() -
|
|
244
|
+
const report = buildReactionReport(events, session.elapsed() - from);
|
|
212
245
|
// Self-generating oracles: propose ranked mustHold from what the recorded window actually did.
|
|
213
246
|
const proposedConsequences = proposeConsequences(events);
|
|
214
247
|
const digest = summarizeReaction(report);
|
|
@@ -220,7 +253,7 @@ export const READ_TOOLS = [
|
|
|
220
253
|
// same rule the capped diff arrays follow: a trim is never silent.
|
|
221
254
|
const timeline = events.length > 0
|
|
222
255
|
? {
|
|
223
|
-
timeline_omitted: `${String(events.length)} event(s) were recorded and are not included here. Call reticle_observe { since: ${String(
|
|
256
|
+
timeline_omitted: `${String(events.length)} event(s) were recorded and are not included here. Call reticle_observe { since: ${String(from)} } for the raw timeline.`,
|
|
224
257
|
}
|
|
225
258
|
: {};
|
|
226
259
|
const unanchored = 0 < unstable ? unanchoredWarning(unstable) : undefined;
|
|
@@ -230,10 +263,12 @@ export const READ_TOOLS = [
|
|
|
230
263
|
? `${String(unkept)} step(s) proved a consequence this flow does not keep: ${UNKEPT_EXPECT}.`
|
|
231
264
|
: undefined;
|
|
232
265
|
const backtrack = recordingBacktrackWarning(routes);
|
|
233
|
-
const
|
|
266
|
+
const reloaded = crossedReload ? RECORDING_CROSSED_RELOAD : undefined;
|
|
267
|
+
const warning = [reloaded, unanchored, backtrack, lostChecks].filter((part) => part !== undefined);
|
|
234
268
|
const body = {
|
|
235
269
|
recordingName: name,
|
|
236
|
-
|
|
270
|
+
// Redacted as the saved flow is; the store above keeps the real values for replay.
|
|
271
|
+
program: { ...program, steps: redactRecordedSteps(program.steps) },
|
|
237
272
|
...timeline,
|
|
238
273
|
...(0 === warning.length ? {} : { warning: warning.join(' ') }),
|
|
239
274
|
...(proposedConsequences.length > 0 ? { proposedConsequences } : {}),
|
|
@@ -251,7 +286,9 @@ export const READ_TOOLS = [
|
|
|
251
286
|
inputSchema: {
|
|
252
287
|
recordingName: z
|
|
253
288
|
.string()
|
|
289
|
+
.optional()
|
|
254
290
|
.describe('Name of a compiled recording (from reticle_record{action:"stop"}) to re-execute.'),
|
|
291
|
+
name: RECORDING_NAME_ALIAS,
|
|
255
292
|
confirmDangerous: z
|
|
256
293
|
.boolean()
|
|
257
294
|
.optional()
|
|
@@ -269,7 +306,7 @@ export const READ_TOOLS = [
|
|
|
269
306
|
})),
|
|
270
307
|
},
|
|
271
308
|
handler: async (deps, args) => {
|
|
272
|
-
const name = asString(args['recordingName']) ?? 'default';
|
|
309
|
+
const name = asString(aliasParam(args, 'recordingName', ['name'])['recordingName']) ?? 'default';
|
|
273
310
|
const program = deps.recordings.getCompiled(name);
|
|
274
311
|
if (program === undefined)
|
|
275
312
|
throw new Error(`no compiled recording named '${name}'`);
|
|
@@ -470,7 +507,21 @@ export const READ_TOOLS = [
|
|
|
470
507
|
// Back-compat: an older browser returned the whole store; scope it here (may already be
|
|
471
508
|
// size-truncated in transit for a very large store — that is the limitation this fix removes
|
|
472
509
|
// for current SDKs).
|
|
473
|
-
const
|
|
510
|
+
const stores = root.stores;
|
|
511
|
+
const hasStore = store !== undefined &&
|
|
512
|
+
'object' === typeof stores &&
|
|
513
|
+
stores !== null &&
|
|
514
|
+
Object.prototype.hasOwnProperty.call(stores, store);
|
|
515
|
+
if (store !== undefined && path === undefined && !hasStore) {
|
|
516
|
+
return {
|
|
517
|
+
store,
|
|
518
|
+
found: false,
|
|
519
|
+
value: null,
|
|
520
|
+
availableKeys: names,
|
|
521
|
+
storeNames: names,
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
const base = store !== undefined ? (stores ?? {})[store] : result;
|
|
474
525
|
const selection = path !== undefined ? selectPath(base, path) : { found: true, value: base };
|
|
475
526
|
const value = selection.found && depth !== undefined ? capDepth(selection.value, depth) : selection.value;
|
|
476
527
|
return {
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Verified, VerdictStatus, type FlowReplayResult, type JournalAction, type SuiteVerdict } from '@reticlehq/core';
|
|
2
|
+
import type { TimedReplay } from '../../judgement/runs/verification-sync.js';
|
|
3
|
+
import type { ToolDeps } from './tool-kit.js';
|
|
4
|
+
export declare const ResultWord: {
|
|
5
|
+
readonly PROVED: "proved";
|
|
6
|
+
readonly NOT_PROVED: "not proved";
|
|
7
|
+
readonly FAILED: "failed";
|
|
8
|
+
};
|
|
9
|
+
export type ResultWord = (typeof ResultWord)[keyof typeof ResultWord];
|
|
10
|
+
/** The output field every result that ends a verification carries. */
|
|
11
|
+
export declare const RESULT_FIELD = "reticleResult";
|
|
12
|
+
export interface ResultFacts {
|
|
13
|
+
yes: number;
|
|
14
|
+
no: number;
|
|
15
|
+
undecided: number;
|
|
16
|
+
/** The journeys or flows the checks covered. */
|
|
17
|
+
covered?: readonly string[];
|
|
18
|
+
/** The journeys, flows or claims that did not hold. */
|
|
19
|
+
failed?: readonly string[];
|
|
20
|
+
flowsReplayed?: number;
|
|
21
|
+
/** Harness journeys answered by replaying saved flows (no model), and driven by the model. */
|
|
22
|
+
journeysReplayed?: number;
|
|
23
|
+
journeysDriven?: number;
|
|
24
|
+
wallMs?: number;
|
|
25
|
+
screenshots?: readonly string[];
|
|
26
|
+
/** From `platformLine`. */
|
|
27
|
+
platform: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Each fact once. The headline carries the check count, so the metrics do not repeat it; with one
|
|
31
|
+
* check the headline is the whole tally, so the per-word count line is left out.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildReticleResult(f: ResultFacts): string;
|
|
34
|
+
/**
|
|
35
|
+
* The same block under a verdict decided above the counts: `reticle_verify { change }` can turn a
|
|
36
|
+
* green suite into `no` (a channel disagreed) or `unknown` (the flows do not cover the files).
|
|
37
|
+
*/
|
|
38
|
+
export declare function retitleResult(block: string, verified: Verified, because: string): string;
|
|
39
|
+
/** The platform line when the key was refused: one true sentence, and the fix. */
|
|
40
|
+
export declare const KEY_REFUSED_HEAD = "Not on the platform: ";
|
|
41
|
+
/** The line for a key refused for no reason the platform named. */
|
|
42
|
+
export declare const KEY_REFUSED_LINE: string;
|
|
43
|
+
/** The platform line: where the run lives when linked, what linking adds when not. One line. */
|
|
44
|
+
export declare function platformLine(root: string, env: Record<string, string | undefined>, runId?: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* The block for a replayed suite: the flows are the journeys, each flow's verdict one check, decided
|
|
47
|
+
* as the run decides it (`mapReplayToFlowResult`): a green a channel contradicted is undecided, as
|
|
48
|
+
* the suite's `unverifiable` status says, never held.
|
|
49
|
+
*/
|
|
50
|
+
export declare function suiteResult(root: string, verdict: SuiteVerdict, timed: readonly TimedReplay[], runId: string | undefined): string;
|
|
51
|
+
/**
|
|
52
|
+
* `reticle_verify { change }`'s answer with the block on it. Its verdict is decided ABOVE the suite
|
|
53
|
+
* (uncovered files, a disagreeing channel), so the suite's own block is retitled with that verdict
|
|
54
|
+
* and moved to the top level: a nested block saying "proved" under an outer `no` is a false green.
|
|
55
|
+
*/
|
|
56
|
+
export declare function changeResult(root: string, out: unknown): unknown;
|
|
57
|
+
/**
|
|
58
|
+
* The block for one replayed flow: one check, decided as the synced run decides it — a pass whose
|
|
59
|
+
* flow asserts nothing, or whose channels disagreed, is undecided, never held.
|
|
60
|
+
*/
|
|
61
|
+
export declare function replayResult(root: string, replay: FlowReplayResult, durationMs: number, runId: string | undefined): string;
|
|
62
|
+
/** What a Harness drive's answer says about itself, as the block reads it. */
|
|
63
|
+
export interface DriveFacts {
|
|
64
|
+
checks: {
|
|
65
|
+
held: number;
|
|
66
|
+
failed: number;
|
|
67
|
+
undecided: number;
|
|
68
|
+
};
|
|
69
|
+
/** The end-state goals the Harness graded itself. */
|
|
70
|
+
goals: readonly {
|
|
71
|
+
verified: string;
|
|
72
|
+
}[];
|
|
73
|
+
goalMet?: boolean;
|
|
74
|
+
journeys?: readonly {
|
|
75
|
+
title: string;
|
|
76
|
+
status: string;
|
|
77
|
+
by?: string;
|
|
78
|
+
}[];
|
|
79
|
+
runIds?: readonly string[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The block for a Harness drive: its checks and its graded goals are the checks; a plan's journeys
|
|
83
|
+
* are what it covered, with how many were replayed and how many the model drove. Checks that held
|
|
84
|
+
* over a goal the drive did not reach are not proved, as the answer's own `proved` says.
|
|
85
|
+
*/
|
|
86
|
+
export declare function exploreResult(root: string, drive: DriveFacts): string;
|
|
87
|
+
/**
|
|
88
|
+
* The block for a session ending: every verdict the journal holds is one check. `no-fault` (nothing
|
|
89
|
+
* declared) counts as undecided, never as held — a session that proved nothing must not read as one
|
|
90
|
+
* that proved something.
|
|
91
|
+
*/
|
|
92
|
+
export declare function sessionResult(deps: ToolDeps, sessionId: string, actions: readonly JournalAction[], wallMs: number | undefined, runId?: string): string;
|
|
93
|
+
/**
|
|
94
|
+
* What an ending agent session reports: its own calls since its previous end in the tab, never the
|
|
95
|
+
* Harness drives the tab also holds, and the run they are kept under.
|
|
96
|
+
*/
|
|
97
|
+
export declare function endedAgentSession(sessionId: string, actions: readonly JournalAction[], at: number | undefined, claim?: VerdictStatus): {
|
|
98
|
+
actions: JournalAction[];
|
|
99
|
+
runId: string;
|
|
100
|
+
wallMs?: number;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* The agent's own claim beside what grading the session's checks gave: the comparison a dashboard
|
|
104
|
+
* makes, said where the agent can read it. The claim never becomes the verdict.
|
|
105
|
+
*/
|
|
106
|
+
export declare function claimAgainstGrade(claim: VerdictStatus, actions: readonly JournalAction[]): {
|
|
107
|
+
claimed: VerdictStatus;
|
|
108
|
+
graded: VerdictStatus;
|
|
109
|
+
agrees: boolean;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* A verdict tool's call, remembered until it settles, so a session that ends meanwhile counts it.
|
|
113
|
+
* An agent ended its session while a `reticle_assert { wait }` was still waiting: the end folded
|
|
114
|
+
* first ("proved · 1 of 1"), a PASS on the dashboard, and the failure landed in the next run.
|
|
115
|
+
*/
|
|
116
|
+
export declare function trackVerdict<T>(tool: string, call: Promise<T>): Promise<T>;
|
|
117
|
+
/** Resolves once every verdict in flight now has been decided (and journaled). */
|
|
118
|
+
export declare function verdictsSettled(): Promise<void>;
|
|
119
|
+
/** The block as a field, or no field: the block is advice, never the reason a result throws. */
|
|
120
|
+
export declare function resultField(build: () => string): Partial<Record<typeof RESULT_FIELD, string>>;
|