@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
package/docs/cli/license.mdx
CHANGED
|
@@ -14,24 +14,28 @@ No flags.
|
|
|
14
14
|
|
|
15
15
|
## What it prints
|
|
16
16
|
|
|
17
|
-
One `reticle_license` line
|
|
17
|
+
One `reticle_license` JSON line, on stderr. On a checkout with no issuer key configured:
|
|
18
18
|
|
|
19
19
|
```json
|
|
20
20
|
{
|
|
21
21
|
"t": "2026-08-15T18:42:26.758Z",
|
|
22
22
|
"event": "reticle_license",
|
|
23
|
+
"gated": ["audit-log"],
|
|
24
|
+
"contact": "hey@reticle.sh",
|
|
23
25
|
"status": "eval",
|
|
24
26
|
"detail": "evaluation mode: enterprise features run free (no issuer key configured)"
|
|
25
27
|
}
|
|
26
28
|
```
|
|
27
29
|
|
|
28
|
-
| `status` | Meaning
|
|
29
|
-
| --------- |
|
|
30
|
-
| `active` | A valid license is present
|
|
31
|
-
| `eval` | Evaluation mode. Enterprise features run free
|
|
32
|
-
| `missing` | No license, and the build expects one
|
|
30
|
+
| `status` | Meaning |
|
|
31
|
+
| --------- | --------------------------------------------------- |
|
|
32
|
+
| `active` | A valid license is present |
|
|
33
|
+
| `eval` | Evaluation mode. Enterprise features run free |
|
|
34
|
+
| `missing` | No license, and the build expects one |
|
|
35
|
+
| `expired` | The key verified, but its expiry has passed |
|
|
36
|
+
| `invalid` | The key was rejected, or the build is misconfigured |
|
|
33
37
|
|
|
34
|
-
`detail` is a sentence explaining the status.
|
|
38
|
+
`detail` is a sentence explaining the status. An active license also carries `licenseId`, `org`, `plan` and `expiresAt`.
|
|
35
39
|
|
|
36
40
|
## Exit codes
|
|
37
41
|
|
|
@@ -40,7 +44,7 @@ Always `0`.
|
|
|
40
44
|
## Worked example
|
|
41
45
|
|
|
42
46
|
```bash
|
|
43
|
-
npx @reticlehq/server license | jq -r .status
|
|
47
|
+
npx @reticlehq/server license 2>&1 | jq -r .status
|
|
44
48
|
```
|
|
45
49
|
|
|
46
50
|
<Card title="What enterprise covers" icon="building" href="/enterprise">
|
package/docs/cli/mcp.mdx
CHANGED
|
@@ -18,15 +18,15 @@ This is what `reticle init` registers, so you rarely type it yourself.
|
|
|
18
18
|
| --- | --- | --- | --- |
|
|
19
19
|
| `--port N` | number | `4400` (or `RETICLE_PORT`, or the port in `.reticle.json`) | Bridge port |
|
|
20
20
|
| `--drive <url>` | string | unset | Have the daemon launch its own browser at this URL, so the agent has autonomous control without relying on your tab |
|
|
21
|
-
| `--headless` | boolean | `
|
|
22
|
-
| `--headed` | boolean |
|
|
21
|
+
| `--headless` | boolean | on when `CI` or `RETICLE_HEADLESS` is set, or on Linux with no display | Hide that browser |
|
|
22
|
+
| `--headed` | boolean | on otherwise | Show it |
|
|
23
23
|
| `--http` | boolean | `false` | Forward the HTTP verify endpoint flags to the daemon it spawns |
|
|
24
24
|
| `--http-port N` | number | unset | Port for that endpoint |
|
|
25
25
|
| `--http-token T` | string | unset | Bearer token for it |
|
|
26
26
|
|
|
27
27
|
## The rule this command lives by
|
|
28
28
|
|
|
29
|
-
The proxy **is** the MCP server the editor launched. Nothing respawns it, so an uncaught throw here is what a user experiences as "the MCP server disconnected".
|
|
29
|
+
The proxy **is** the MCP server the editor launched. Nothing respawns it, so an uncaught throw here is what a user experiences as "the MCP server disconnected". Four behaviours follow from that:
|
|
30
30
|
|
|
31
31
|
- Crash handlers write to the proxy's own log file, not just stderr, because the editor swallows stderr.
|
|
32
32
|
- A daemon that is not there is not fatal. The proxy answers `initialize` itself, serves the cached tool catalog, and retries a daemon on every client request. Present and complaining beats absent, because absent needs a human.
|
|
@@ -35,7 +35,7 @@ The proxy **is** the MCP server the editor launched. Nothing respawns it, so an
|
|
|
35
35
|
|
|
36
36
|
## What it prints
|
|
37
37
|
|
|
38
|
-
Structured lines
|
|
38
|
+
Structured JSON lines on stderr, never stdout, since stdout is the MCP transport. Most editors swallow stderr, so the idle exit and the crash handlers also write to the proxy log, `~/.reticle/proxy-<port>.log`.
|
|
39
39
|
|
|
40
40
|
| Event | Meaning |
|
|
41
41
|
| --- | --- |
|
package/docs/cli/open.mdx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: reticle open
|
|
3
|
-
description:
|
|
3
|
+
description: Open the app in your default browser, or reuse a tab that is already connected.
|
|
4
4
|
icon: window-maximize
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
`reticle open` is the one-command "show me the app". It resolves the port, makes sure a daemon is up, and then either reuses the tab that is already connected or opens
|
|
7
|
+
`reticle open` is the one-command "show me the app". It resolves the port, makes sure a daemon is up, and then either reuses the tab that is already connected or hands the URL to your operating system's default browser. It never opens the browser Reticle drives.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx @reticlehq/server open [url] [--port N]
|
|
@@ -27,7 +27,7 @@ One `reticle_open` line, whose fields say which of four things happened.
|
|
|
27
27
|
| --- | --- |
|
|
28
28
|
| `reusing` | A connected tab was already on the right page. Nothing was opened |
|
|
29
29
|
| `reusing` + `requested` + `note` | A tab is connected on that origin but sitting on a different page. It was **left there**, not navigated. Drive it with `reticle_navigate` or open the URL yourself |
|
|
30
|
-
| `opened` + `connected: true` |
|
|
30
|
+
| `opened` + `connected: true` | The URL went to the system default browser and a new Reticle session appeared within 8 seconds |
|
|
31
31
|
| `opened` + `connected: false` + `note` | The URL went to the system default browser and no session showed up within 8 seconds. Almost always means the app carries no SDK, or dials a different port |
|
|
32
32
|
| `error` | No app connected and no URL given, or the browser could not be launched |
|
|
33
33
|
|
package/docs/cli/report.mdx
CHANGED
|
@@ -15,7 +15,7 @@ npx @reticlehq/server report [--session <id>] [--hook]
|
|
|
15
15
|
| Flag | Default | What it does |
|
|
16
16
|
| --- | --- | --- |
|
|
17
17
|
| `--session <id>` | the newest session | Report a specific session |
|
|
18
|
-
| `--hook` | off | Print
|
|
18
|
+
| `--hook` | off | Print a short message, and only when the working tree changed and no claim held |
|
|
19
19
|
|
|
20
20
|
## What it prints
|
|
21
21
|
|
|
@@ -27,11 +27,13 @@ session lease-85f8191b-3874-457b-973b-8ee365e5acfb
|
|
|
27
27
|
✗ signal order:placed
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
The report ends with one more line, an invitation to talk to the founder or leave an email. A session with no claims prints `no claims this session, so nothing was verified`.
|
|
31
|
+
|
|
30
32
|
An `unknown` is never counted as held. It is Reticle saying it could not tell, and the owner beside it says what to do next.
|
|
31
33
|
|
|
32
34
|
## As a Claude Code Stop hook
|
|
33
35
|
|
|
34
|
-
With `--hook` it prints nothing when a claim held or nothing in the tree changed, and otherwise one line, such as `Reticle: not verified. 3 claims: 1 failed, 2 unknown
|
|
36
|
+
With `--hook` it prints nothing when a claim held or nothing in the tree changed, and otherwise one line, such as `Reticle: not verified. 3 claims: 1 failed, 2 unknown`, followed by the same invitation line. It prints Claude Code's `systemMessage` shape and always exits `0`: you see the line when the agent stops, and the agent is never blocked by it. `reticle init --hooks` adds it for you, merged into whatever `.claude/settings.json` already holds. By hand:
|
|
35
37
|
|
|
36
38
|
```json
|
|
37
39
|
{
|
package/docs/cli/restart.mdx
CHANGED
|
@@ -4,7 +4,7 @@ description: Free the bridge port and put a daemon back on it, reporting each ha
|
|
|
4
4
|
icon: rotate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
`reticle restart` is [`reticle
|
|
7
|
+
`reticle restart` is [`reticle stop --force`](/cli/stop#freeing-the-port-force) followed by a daemon start that waits for a real bind.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx @reticlehq/server restart [--port N] [--force]
|
|
@@ -55,6 +55,6 @@ npx @reticlehq/server restart # after an upgrade, so the new version is
|
|
|
55
55
|
npx @reticlehq/server status
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
<Card title="Why not lsof" icon="skull" href="/cli/
|
|
58
|
+
<Card title="Why not lsof" icon="skull" href="/cli/stop#freeing-the-port-force">
|
|
59
59
|
The pipeline everyone reaches for kills the agent's own MCP proxy along with the daemon.
|
|
60
60
|
</Card>
|
package/docs/cli/rollback.mdx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: reticle rollback
|
|
3
|
-
description:
|
|
3
|
+
description: Reinstall the previously installed Reticle server version, then exit so your agent restarts it.
|
|
4
4
|
icon: arrow-rotate-left
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
`reticle rollback` is the undo for [`reticle update`](/cli/update). It
|
|
7
|
+
`reticle rollback` is the undo for [`reticle update`](/cli/update). It reinstalls the version `update` replaced (recorded in the update manifest), then exits so the next start runs it.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx @reticlehq/server rollback
|
|
@@ -14,7 +14,11 @@ No flags.
|
|
|
14
14
|
|
|
15
15
|
## What it prints
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Two structured lines on the happy path, `reticle_rollback_applying` and `reticle_rollback_applied`, each with the `version` and the `executionKind` (`global`, `local` or `npx`). A failure logs `reticle_rollback_failed` with the error message.
|
|
18
|
+
|
|
19
|
+
<Warning>
|
|
20
|
+
Run from a one-off `npx` download (no global or project install), there is nothing to reinstall. It logs `reticle_rollback_npx_strategy` with a note to pin the version in your MCP config (for example `@reticlehq/server@<version>` in `.mcp.json`), and does not exit. Pin the version there yourself.
|
|
21
|
+
</Warning>
|
|
18
22
|
|
|
19
23
|
Telemetry records the move as a `version_changed` event with `direction: "rollback"`, which is treated as a release-quality alarm rather than a routine version move.
|
|
20
24
|
|
|
@@ -22,14 +26,16 @@ Telemetry records the move as a `version_changed` event with `direction: "rollba
|
|
|
22
26
|
|
|
23
27
|
| Code | Meaning |
|
|
24
28
|
| ---- | ----------------------------------------------------------- |
|
|
25
|
-
| `0` | The previous version was
|
|
29
|
+
| `0` | The previous version was reinstalled and the process exited |
|
|
26
30
|
| `1` | There was nothing to roll back to, or the restore threw |
|
|
27
31
|
|
|
28
32
|
## Worked example
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
On the global install the installer puts on your PATH (under `npx` there is nothing to roll back):
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
reticle update
|
|
32
38
|
# the new build misbehaves:
|
|
33
|
-
|
|
34
|
-
|
|
39
|
+
reticle rollback
|
|
40
|
+
reticle version
|
|
35
41
|
```
|
package/docs/cli/serve.mdx
CHANGED
|
@@ -16,10 +16,10 @@ Most people never type this. Your agent runs [`reticle mcp`](/cli/mcp), which st
|
|
|
16
16
|
|
|
17
17
|
| Flag | Type | Default | What it does |
|
|
18
18
|
| --- | --- | --- | --- |
|
|
19
|
-
| `--port N` | number | `
|
|
19
|
+
| `--port N` | number | `RETICLE_PORT`, else the port in `.reticle.json`, else the daemon already serving this project, else `4400` | Bridge port to bind |
|
|
20
20
|
| `--drive <url>` | string | unset | Launch Reticle's own browser at this URL instead of waiting for your tab |
|
|
21
|
-
| `--headless` | boolean | `
|
|
22
|
-
| `--headed` | boolean |
|
|
21
|
+
| `--headless` | boolean | on when `CI` or `RETICLE_HEADLESS` is set (and not `0` or `false`), or on Linux with no display | Hide the browser |
|
|
22
|
+
| `--headed` | boolean | on otherwise | Show it, so you can watch the run |
|
|
23
23
|
| `--http` | boolean | `false` | Also expose the HTTP verify endpoint |
|
|
24
24
|
| `--http-port N` | number | unset (`7331`) | Port for that endpoint. Requires `--http`. |
|
|
25
25
|
| `--http-token T` | string | unset | Bearer token the endpoint requires. Requires `--http`. |
|
|
@@ -34,7 +34,7 @@ One structured line. When a daemon already owns the port, it says so and does no
|
|
|
34
34
|
{ "t": "2026-08-15T18:43:33.065Z", "event": "reticle_daemon_already_running", "port": 4499 }
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Once the spawned daemon answers, it logs `reticle_daemon_spawned` with the port:
|
|
38
38
|
|
|
39
39
|
```json
|
|
40
40
|
{ "t": "2026-08-15T18:43:32.604Z", "event": "reticle_daemon_spawned", "port": 4499 }
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: reticle setup mcp
|
|
3
|
+
description: Register the Reticle MCP server with every coding agent on this machine.
|
|
4
|
+
icon: plug
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
`reticle setup mcp` registers the Reticle MCP server with the coding agents on this machine, so the `reticle_*` tools are there the next time each one starts. It is the registration half of the [installer](/quickstart), and you rarely need to run it yourself.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx @reticlehq/server setup mcp
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
No flags, and nothing is asked. It works for your user account, not for one project, so it does not touch your app. To wire an app, run [`reticle init`](/cli/init).
|
|
14
|
+
|
|
15
|
+
## What it prints
|
|
16
|
+
|
|
17
|
+
One line per agent: `✓ <agent>` for a new registration, `✓ <agent> (already set up)` when Reticle was there already, `⚠ <agent>: Reticle registration failed…` when a registration failed (the command then exits `1`), and `⚠ <agent>: add the reticle entry to <path> by hand` for a config it will not rewrite. If it finds no agent, it names every agent it looked for.
|
|
18
|
+
|
|
19
|
+
## How you know it worked
|
|
20
|
+
|
|
21
|
+
Restart your coding agent. An agent reads its server list only when it starts. After the restart, the `reticle_*` tools are listed.
|
|
22
|
+
|
|
23
|
+
Codex CLI keeps a TOML config that Reticle does not rewrite. When the `codex` binary is on your PATH, Reticle registers through `codex mcp add` instead; otherwise it prints the hand-edit line above.
|
package/docs/cli/status.mdx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: reticle status
|
|
3
|
-
description: Ask whether the Reticle daemon is up
|
|
3
|
+
description: Ask whether the Reticle daemon is up, which app sessions have connected, who is signed in, and whether this folder is linked.
|
|
4
4
|
icon: heart-pulse
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
`reticle status`
|
|
7
|
+
`reticle status` tells you whether the daemon is up and which pages connected, who you are signed in to Reticle Cloud as, and whether this folder is linked to a cloud project. The account facts come from local files; no network call is made. A session listed means the SDK reached the page. Setup is finished when the first run returns a verdict.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx @reticlehq/server status [--port N] [--json]
|
|
@@ -19,6 +19,13 @@ npx @reticlehq/server status [--port N] [--json]
|
|
|
19
19
|
|
|
20
20
|
## What it prints
|
|
21
21
|
|
|
22
|
+
The block also carries an account row: who you are signed in as and the cloud project this folder is linked to, or what to run (`reticle connect`) when it is not. `reticle whoami` is the old name for this question; it still works for one release.
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
account ✓ signed in as Acme
|
|
26
|
+
this repo is not linked: run `reticle connect`
|
|
27
|
+
```
|
|
28
|
+
|
|
22
29
|
A short block, for whoever is reading the terminal. Real capture, daemon up with two apps connected:
|
|
23
30
|
|
|
24
31
|
```text
|
|
@@ -35,6 +42,7 @@ And with no daemon on the port:
|
|
|
35
42
|
```text
|
|
36
43
|
reticle status
|
|
37
44
|
daemon ✗ not running on :4999
|
|
45
|
+
port presence: free
|
|
38
46
|
agent link never-attached
|
|
39
47
|
next no daemon is running on this port, which is normal. An agent starts it when it
|
|
40
48
|
first calls a Reticle tool, and it exits again when idle. Ask your agent to verify
|
|
@@ -71,6 +79,7 @@ It is one line in the terminal, pretty-printed here, with `why` trimmed at the e
|
|
|
71
79
|
"sessionId": "s223e0fad-e012-43f9-a23d-6d585470c90d",
|
|
72
80
|
"url": "http://localhost:4310/",
|
|
73
81
|
"throttled": false,
|
|
82
|
+
"hidden": false,
|
|
74
83
|
"stale": false,
|
|
75
84
|
"pendingMarks": 0
|
|
76
85
|
}
|
|
@@ -79,9 +88,9 @@ It is one line in the terminal, pretty-printed here, with `why` trimmed at the e
|
|
|
79
88
|
| Field | Meaning |
|
|
80
89
|
| --- | --- |
|
|
81
90
|
| `running` | Whether a usable daemon owns the port |
|
|
82
|
-
| `presence` | Present when
|
|
91
|
+
| `presence` | Present when no usable daemon answered: `foreign` (something else holds the port) or `free`. The port is asked, not just the pid file |
|
|
83
92
|
| `pid` | The daemon process |
|
|
84
|
-
| `sessionCount` / `sessions` | Connected app sessions, each with `sessionId`, `url`, `throttled`, `stale`, `pendingMarks` |
|
|
93
|
+
| `sessionCount` / `sessions` | Connected app sessions, each with `sessionId`, `url`, `throttled`, `hidden`, `stale`, `pendingMarks` |
|
|
85
94
|
| `why` | Present when zero sessions connected. Names the two likely causes and refuses to assert either |
|
|
86
95
|
| `updateAvailable` | Present when a newer server version is on the registry |
|
|
87
96
|
|
package/docs/cli/stop.mdx
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: reticle stop
|
|
3
|
-
description: Stop the Reticle daemon on a port,
|
|
3
|
+
description: Stop the Reticle daemon on a port, or free the port by its listener with --force, never touching the agent's MCP proxy.
|
|
4
4
|
icon: circle-stop
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
`reticle stop` reads the pid recorded for the port and stops that process.
|
|
7
|
+
`reticle stop` reads the pid recorded for the port and stops that process. `reticle stop --force` asks **who is listening** on the port instead, and frees it.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npx @reticlehq/server stop [--port N] [--quiet]
|
|
10
|
+
npx @reticlehq/server stop [--port N] [--quiet] [--force]
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+
`reticle kill` is the old name for `stop --force`. It still works for one release and prints one line naming the new spelling.
|
|
14
|
+
|
|
13
15
|
## Flags
|
|
14
16
|
|
|
15
17
|
| Flag | Type | Default | What it does |
|
|
16
18
|
| --- | --- | --- | --- |
|
|
17
19
|
| `--port N` | number | `4400` (or `RETICLE_PORT`, or the port in `.reticle.json`) | Which daemon to stop |
|
|
18
20
|
| `--quiet` | boolean | `false` | Print nothing. For scripts that stop a daemon that may not be running |
|
|
21
|
+
| `--force` | boolean | `false` | Find the process by the **listener** on the port, not by the recorded pid. See [Freeing the port](#freeing-the-port-force) |
|
|
19
22
|
|
|
20
23
|
## How it stops
|
|
21
24
|
|
|
@@ -28,7 +31,7 @@ npx @reticlehq/server stop [--port N] [--quiet]
|
|
|
28
31
|
| Event | When |
|
|
29
32
|
| --- | --- |
|
|
30
33
|
| `reticle_daemon_stopped` | It stopped. Carries `port`, `pid`, and `escalated: true` if it took a `SIGKILL` |
|
|
31
|
-
| `reticle_daemon_not_running` | No live pid for that port. The stale pid file is removed |
|
|
34
|
+
| `reticle_daemon_not_running` | No live pid for that port, and nothing answers `/status` on it. The stale pid file is removed |
|
|
32
35
|
| `reticle_daemon_stop_timeout` | It survived everything. Exits `1` |
|
|
33
36
|
|
|
34
37
|
Real capture, stopping a port with no live pid recorded for it. It exits `0`, because "already not running" is the state you asked for:
|
|
@@ -48,17 +51,73 @@ With `--quiet` that same run prints nothing at all and still exits `0`.
|
|
|
48
51
|
|
|
49
52
|
<Warning>
|
|
50
53
|
Do not stop a daemon with `lsof -ti tcp:4400 | xargs kill -9`. That pattern matches the agent's
|
|
51
|
-
own `reticle mcp` proxy as well as the daemon and takes both down. Use this command, or
|
|
52
|
-
|
|
54
|
+
own `reticle mcp` proxy as well as the daemon and takes both down. Use this command, or `reticle
|
|
55
|
+
stop --force`.
|
|
56
|
+
</Warning>
|
|
57
|
+
|
|
58
|
+
## Freeing the port: `--force`
|
|
59
|
+
|
|
60
|
+
`stop` starts from the pid Reticle recorded. When that pid is dead or missing but a Reticle daemon still answers `/status` on the port (a stale pid file, or a daemon from another checkout), plain `stop` frees that listener the same way `--force` does. When nothing answers `/status`, plain `stop` reports `reticle_daemon_not_running`. `stop --force` always asks the **port** first, and is the command to reach for when the pid file and the port disagree.
|
|
61
|
+
|
|
62
|
+
<Warning>
|
|
63
|
+
Never free the port with `lsof -ti tcp:4400 | xargs kill -9`. `reticle mcp` holds a **client**
|
|
64
|
+
socket on that port, so `-ti` lists the proxy right beside the daemon and the pipeline kills both.
|
|
65
|
+
When the proxy dies, the agent's next tool calls get no reply at all: not an error, not a timeout.
|
|
66
|
+
Nothing is written to the proxy log either, because the process that writes it is the one that
|
|
67
|
+
died. That is the mechanism behind most "my MCP disconnected" reports.
|
|
53
68
|
</Warning>
|
|
54
69
|
|
|
55
|
-
|
|
70
|
+
| | `reticle stop` | `reticle stop --force` |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| Finds the process by | the pid recorded in Reticle's own state | the **listener** on the port |
|
|
73
|
+
| Works when the pid file is stale or was never written | yes, when the daemon answers `/status` | yes |
|
|
74
|
+
| Works on a daemon from another checkout | yes, when it answers `/status` | yes |
|
|
75
|
+
| Works without `lsof` (Windows, slim containers) | yes | yes, falling back to the recorded pid and saying so |
|
|
76
|
+
|
|
77
|
+
### How `--force` decides
|
|
78
|
+
|
|
79
|
+
1. Look up the listener with `lsof -nP -iTCP:<port> -sTCP:LISTEN`. Client sockets are excluded by construction, so the proxy is never a candidate.
|
|
80
|
+
2. It is Reticle's if it answers `/status`, **or** if it is the pid Reticle recorded for the port. `/status` outranks the pid file, so a daemon started from another checkout is still recognised as ours.
|
|
81
|
+
3. Anything else is refused, by name: it is someone else's process.
|
|
82
|
+
4. `SIGTERM`, then `SIGKILL` after 5 seconds, then report that it survived and exit `1`.
|
|
83
|
+
|
|
84
|
+
### What `--force` prints
|
|
85
|
+
|
|
86
|
+
Real captures, taken against a daemon started on a scratch port. The long `note` and `reason` strings are trimmed at the ellipsis. Measured exit codes: `0` for killed and nothing-to-do, `1` for refused.
|
|
87
|
+
|
|
88
|
+
Killed:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
{"t":"2026-08-15T18:43:43.590Z","event":"reticle_killed","port":4499,"pid":78621,"escalated":false,"listenerIdentified":true,"note":"only the listener was signalled. Any `reticle mcp` proxy on this port holds a client connection, not the port, and was left alone ..."}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Refused, because the listener is not ours. This one was captured with `python3 -m http.server 4498` holding the port:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
{"t":"2026-08-15T18:43:57.128Z","event":"reticle_kill_refused","port":4498,"reason":"pid 78795 (\"Python\") is listening, and it is not a Reticle daemon ... it never answered /status and it is not the pid Reticle recorded. Killing it would be killing someone else's process. Run it again with --force if that is what you meant, or start Reticle on another port.","holder":"Python"}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Nothing to free:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
{"t":"2026-08-15T18:43:43.784Z","event":"reticle_kill_nothing_to_do","port":4499,"presence":"free"}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
| Event | When |
|
|
107
|
+
| ---------------------------- | ----------------------------------------------------------------- |
|
|
108
|
+
| `reticle_killed` | The listener is gone. `escalated: true` means it took a `SIGKILL` |
|
|
109
|
+
| `reticle_kill_refused` | The listener is not a Reticle daemon. Exits `1` |
|
|
110
|
+
| `reticle_kill_survived` | It survived `SIGKILL`. The port is still held. Exits `1` |
|
|
111
|
+
| `reticle_kill_nothing_to_do` | No listener, and no live recorded pid |
|
|
112
|
+
|
|
113
|
+
`listenerIdentified: false` means `lsof` could not run and the pid came from Reticle's records rather than from an observed listener. Those are different claims, so the field says which one you got.
|
|
56
114
|
|
|
57
|
-
|
|
115
|
+
With `--force`, exit `0` means the port is free and `1` means it is still held: refused, or the process survived `SIGKILL`.
|
|
58
116
|
|
|
59
117
|
## Worked example
|
|
60
118
|
|
|
61
119
|
```bash
|
|
62
120
|
npx @reticlehq/server stop --port 4400 --quiet && npx @reticlehq/server serve --port 4400
|
|
63
121
|
npx @reticlehq/server restart --port 4400 # the same thing, honest about each half
|
|
122
|
+
npx @reticlehq/server stop --force # the port is held and the pid file says nothing
|
|
64
123
|
```
|
package/docs/cli/try.mdx
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: reticle try
|
|
3
|
+
description: Sign in, then watch Reticle drive any URL once and say which journeys work.
|
|
4
|
+
icon: play
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
`reticle try` is the fastest way to see Reticle on your own app. It drives a URL once with the Reticle Harness, in a browser window you can watch, and ends with a list of the journeys it tried and how each one ended.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx @reticlehq/server try <url> [--persona <who>]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The app needs nothing installed. A page with no Reticle SDK gets one supplied for the drive, so verdicts cover the DOM, network, console and routes. There is no component state and no source `file:line` until you run [`reticle init`](/cli/init).
|
|
14
|
+
|
|
15
|
+
## Sign in first
|
|
16
|
+
|
|
17
|
+
The drive runs on the Reticle platform, so `try` needs a linked folder. On a machine that is not linked it drives nothing and says:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Sign in first: reticle connect (it is free, no card)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Run [`reticle connect`](/cli/cloud) in the folder, then run `try` again. It exits `1` in this case.
|
|
24
|
+
|
|
25
|
+
## Arguments and flags
|
|
26
|
+
|
|
27
|
+
| Argument | Type | Default | What it does |
|
|
28
|
+
| --- | --- | --- | --- |
|
|
29
|
+
| `url` | string, positional, **required** | none | The page to drive. It must already be running |
|
|
30
|
+
| `--persona <who>` | string | unset | Who to be, or what to get done ("a returning customer checking out"). Without it, the platform plans the journeys from what the page offers |
|
|
31
|
+
|
|
32
|
+
## What happens
|
|
33
|
+
|
|
34
|
+
1. `try` asks the platform for one free drive. If the workspace needs a card first, it prints the platform's message and the plan page, then exits `1` without opening anything.
|
|
35
|
+
2. It opens the URL in a window you can watch, through the Reticle daemon, and starting one if none is running.
|
|
36
|
+
3. The Harness drives for up to two minutes and 40 steps, and records what it drove as saved flows.
|
|
37
|
+
4. It prints the result and sends the run to your dashboard, the same way [`reticle sync`](/cli/cloud#reticle-sync) does.
|
|
38
|
+
|
|
39
|
+
## What it prints
|
|
40
|
+
|
|
41
|
+
A `Driving <url>` line first, telling you to watch the window, then:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Tried 3 journeys: 1 work, 1 broken, 1 not proved
|
|
45
|
+
✓ works: Shopper: checks out
|
|
46
|
+
✗ broken: Shopper: applies a coupon
|
|
47
|
+
? not proved (blocked): Admin: refunds
|
|
48
|
+
See it in your dashboard: <the run's page>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
There is one `See it in your dashboard` line per run. When the dashboard address is not known, a single `Saved to your dashboard: <url>` line takes their place.
|
|
52
|
+
|
|
53
|
+
Each verdict comes from the engine. A journey that neither passed nor failed is reported as **not proved**. It is never counted as working.
|
|
54
|
+
|
|
55
|
+
If the run could not be sent, `try` says so, keeps the run on this machine and tells you to run `reticle sync`. It never prints a dashboard line in that case.
|
|
56
|
+
|
|
57
|
+
## Exit codes
|
|
58
|
+
|
|
59
|
+
| Code | When |
|
|
60
|
+
| ---- | -------------------------------------------------------------------------- |
|
|
61
|
+
| `0` | The drive ran. Broken journeys are a finding, not a failure of the command |
|
|
62
|
+
| `1` | Not signed in, no free drive granted, or the drive could not run |
|
package/docs/cli/update.mdx
CHANGED
|
@@ -16,8 +16,8 @@ No flags.
|
|
|
16
16
|
|
|
17
17
|
1. Ask the registry what is available.
|
|
18
18
|
2. Compare by **direction**, not inequality. A registry version that merely differs is not a newer one, and the old check happily installed a downgrade.
|
|
19
|
-
3. Nothing newer: log `reticle_update` with `ok: false` and `message: "already on the latest version"`,
|
|
20
|
-
4. Otherwise sync the **app's SDK first**. `reticle update` used to swap only the CLI, so the command whose job is keeping an install current was itself a way to produce a version-skewed pair.
|
|
19
|
+
3. Nothing newer: if this project's SDK is older than the CLI, bring it up to the CLI's version; then log `reticle_update` with `ok: false` and `message: "already on the latest version"`, and stop.
|
|
20
|
+
4. Otherwise refresh the Reticle block in agent rule files that already carry one, then sync the **app's SDK first**. `reticle update` used to swap only the CLI, so the command whose job is keeping an install current was itself a way to produce a version-skewed pair.
|
|
21
21
|
5. Then apply the CLI update, which execs and exits. Your agent client restarts it.
|
|
22
22
|
|
|
23
23
|
## What it prints
|
|
@@ -27,6 +27,7 @@ No flags.
|
|
|
27
27
|
| `reticle_update` | `ok`, and either `from` and `to`, or `message` and `version` |
|
|
28
28
|
| `reticle_update_sdk` | `synced`, `packages`, `to`, `packageManager`. Or `synced: false` with `reason: "no @reticlehq packages in this project"` |
|
|
29
29
|
| `reticle_update_sdk_failed` | A `hint` naming the exact command to run by hand |
|
|
30
|
+
| `reticle_rules_refreshed` | `files`, `to`: the agent rule files whose Reticle block was brought up to the new version |
|
|
30
31
|
| `reticle_update_failed` | The error |
|
|
31
32
|
|
|
32
33
|
The SDK sync is best effort and non-fatal on purpose. This command gets run from wherever the human happens to be standing, which is often not an app at all.
|
|
@@ -51,7 +52,7 @@ This installs the current server without going through the old updater.
|
|
|
51
52
|
## Worked example
|
|
52
53
|
|
|
53
54
|
```bash
|
|
54
|
-
npx @reticlehq/server version #
|
|
55
|
+
npx @reticlehq/server version # 3.6.0
|
|
55
56
|
npx @reticlehq/server update
|
|
56
57
|
```
|
|
57
58
|
|
package/docs/cli/verify.mdx
CHANGED
|
@@ -4,7 +4,7 @@ description: Drive a URL once, replay every saved flow, and exit zero only on a
|
|
|
4
4
|
icon: circle-check
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
`reticle verify` is the CI command: no model in the loop, no MCP.
|
|
7
|
+
`reticle verify` is the CI command: no model in the loop, no MCP. On a free port it boots the engine in drive mode, waits for the in-page SDK to dial back, replays every saved flow, renders the verdict, and exits. When a Reticle daemon already owns the port, it asks that daemon to replay the flows instead.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx @reticlehq/server verify <url> [--headed] [--timeout N] [--storage-state <file>]
|
|
@@ -20,6 +20,13 @@ It uses the same runner and the same verdict as the MCP and HTTP paths, so a pla
|
|
|
20
20
|
| `--headed` | boolean | `false` (headless) | Show the browser |
|
|
21
21
|
| `--timeout N` | number, ms | `15000` | How long to wait for a browser session to dial back |
|
|
22
22
|
| `--storage-state <file>` | string | unset | A Playwright storage state file. This is how you verify flows behind a login without scripting the login every time |
|
|
23
|
+
| `--results-json <file>` | string | unset | Also write one verdict per journey to this file: `{ verdict, results: [{ journey, verdict, reason? }] }`, each verdict `yes`, `no` or `unknown`. A skipped journey is `unknown`, and the run is `yes` only when every journey is. Written when verify boots its own browser and a run finishes; a refusal before that writes nothing. The [GitHub Action](https://github.com/reticlehq/reticle/tree/main/action) posts this file |
|
|
24
|
+
| `--port N` | number | `RETICLE_PORT`, else the project's port, else `4400` | The bridge port the app dials |
|
|
25
|
+
| `--session-id <id>` | string | unset | Use a tab that is already connected |
|
|
26
|
+
| `--select <label>` | string, repeatable | unset | Verify only flows carrying this label |
|
|
27
|
+
| `--expect '<json predicate>'` / `--expect-file <path>` | string | unset | One verdict on one predicate, no saved flows needed. Asks the daemon that owns the port and never starts one; with no daemon it refuses. Exits `0` only on `verified: "yes"`. Cannot be combined with `--storage-state` |
|
|
28
|
+
| `--explore` / `--persona "<who does what>"` | boolean / string | off | No saved flows yet? The Harness drives the app and records them. `--persona` implies `--explore` |
|
|
29
|
+
| `--confirm-dangerous` | boolean | off | Let this run press the controls the replay guard holds as destructive, such as a "Place order" or "Delete" button in a saved flow. Without it such a step is refused, so a checkout flow cannot pass. It covers this run only and is never saved into a flow. |
|
|
23
30
|
|
|
24
31
|
## What it prints
|
|
25
32
|
|
|
@@ -34,6 +41,8 @@ No app connected: Reticle drove the URL but no @reticlehq/browser session dialed
|
|
|
34
41
|
No saved flows to verify (.reticle/flows is empty), so refusing to report a pass for verifying nothing.
|
|
35
42
|
Flows are recorded interactively by an agent (reticle_record{action:"start"} → act → reticle_flow_save via the
|
|
36
43
|
MCP tools), then committed to .reticle/flows/. In CI, check those files in and re-run `reticle verify`.
|
|
44
|
+
Or let Reticle record them for you: `reticle verify <url> --explore` drives the app itself and saves what it
|
|
45
|
+
drove, so every run after the first one replays with no model in the loop.
|
|
37
46
|
```
|
|
38
47
|
|
|
39
48
|
<Warning>
|
|
@@ -49,11 +58,13 @@ Call log:
|
|
|
49
58
|
```
|
|
50
59
|
|
|
51
60
|
<Warning>
|
|
52
|
-
`verify`
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
`verify` never starts a second daemon on a port that already has one. With a daemon there, it
|
|
62
|
+
replays the saved flows (or answers `--expect`, or runs `--explore`) through that daemon. Only
|
|
63
|
+
`--headed` and `--storage-state` need a browser of its own, so with a daemon on the port those
|
|
64
|
+
refuse and print the ways out (drive through the running daemon, ask it via `reticle_run`, move
|
|
65
|
+
both to another port with `--port` or `RETICLE_PORT`, or stop it). This bites most often on a
|
|
66
|
+
developer machine, where an agent has usually left a daemon running; in CI the port is normally
|
|
67
|
+
free.
|
|
57
68
|
</Warning>
|
|
58
69
|
|
|
59
70
|
## Exit codes
|
package/docs/cli/version.mdx
CHANGED
|
@@ -19,7 +19,7 @@ All three are the same command. No flags.
|
|
|
19
19
|
The version, and nothing else, on stdout, so `V=$(reticle version)` works:
|
|
20
20
|
|
|
21
21
|
```text
|
|
22
|
-
3.
|
|
22
|
+
3.7.0
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
## Exit codes
|
|
@@ -29,7 +29,8 @@ Always `0`.
|
|
|
29
29
|
## Worked example
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
npx @reticlehq/server version
|
|
32
|
+
V=$(npx @reticlehq/server version)
|
|
33
|
+
echo "$V"
|
|
33
34
|
```
|
|
34
35
|
|
|
35
36
|
<Note>
|