@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.mdx
CHANGED
|
@@ -4,7 +4,7 @@ description: Every reticle command. What it does, what it prints, and what it ex
|
|
|
4
4
|
icon: terminal
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
The `reticle` CLI installs Reticle into a project and proves the install works (`init`), runs and diagnoses the daemon your app connects to (`
|
|
7
|
+
The `reticle` CLI installs Reticle into a project and proves the install works (`init`), runs and diagnoses the daemon your app connects to (`status`, `doctor`, `stop`, `restart`), and gates a build on verification in CI (`verify`, `affected`, `gate`). This page is the index; each command has its own page with real captured output and measured exit codes.
|
|
8
8
|
|
|
9
9
|
The CLI is mostly for you, not your agent. Your agent talks MCP; you use these to set things up, work out why nothing connected, and wire verification into CI.
|
|
10
10
|
|
|
@@ -24,6 +24,82 @@ npx @reticlehq/server <command>
|
|
|
24
24
|
below are pretty-printed so you can read them, and long lists are trimmed where the label says so.
|
|
25
25
|
</Note>
|
|
26
26
|
|
|
27
|
+
## Every command
|
|
28
|
+
|
|
29
|
+
`reticle --help` prints the short list, grouped the way you meet the commands. `reticle help all` prints every command, and `reticle <command> --help` prints one command's detail.
|
|
30
|
+
|
|
31
|
+
### Get started
|
|
32
|
+
|
|
33
|
+
| Command | What it does | Page |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `reticle init` | Wire Reticle into this project, boot the app, prove a session connected | [init](/cli/init) |
|
|
36
|
+
| `reticle connect [--project <name\|id>] [--workspace <name\|id>] [--url <origin>]` | Wire if needed, sign in, link this folder to a cloud project (created if it does not exist) in the workspace named (else the one you are signed in to, said when you belong to several), send local history | [cloud](/cli/cloud) |
|
|
37
|
+
| `reticle try <url> [--persona <who>]` | Signed in: one free Harness drive of a URL, in a window you watch, then which journeys work | [try](/cli/try) |
|
|
38
|
+
|
|
39
|
+
### Check your app
|
|
40
|
+
|
|
41
|
+
| Command | What it does | Page |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| `reticle verify <url>` | One-shot: drive the URL, verify saved flows or one predicate, exit 0 on pass | [verify](/cli/verify) |
|
|
44
|
+
| `reticle gate [--since <ref>] [--accept-coverage] [--hook]` | Exit non-zero unless passing artifacts cover the affected flows | [gate](/cli/gate) |
|
|
45
|
+
|
|
46
|
+
### Reticle on this machine
|
|
47
|
+
|
|
48
|
+
| Command | What it does | Page |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| `reticle status [--json]` | Is the daemon up, which pages connected, who is signed in, is this repo linked | [status](/cli/status) |
|
|
51
|
+
| `reticle doctor` | Diagnose setup: Chromium, daemon, port | [doctor](/cli/doctor) |
|
|
52
|
+
| `reticle open [url]` | Show the app: reuse the connected tab, else open one | [open](/cli/open) |
|
|
53
|
+
| `reticle stop [--force]` | Stop the daemon we started; `--force` frees the port by its listener, never the agent's MCP proxy | [stop](/cli/stop) |
|
|
54
|
+
| `reticle restart` | Free the port, then start a daemon and wait for a real bind | [restart](/cli/restart) |
|
|
55
|
+
| `reticle update` | Install the latest server version and restart | [update](/cli/update) |
|
|
56
|
+
|
|
57
|
+
### Account
|
|
58
|
+
|
|
59
|
+
| Command | What it does | Page |
|
|
60
|
+
| --- | --- | --- |
|
|
61
|
+
| `reticle logout [--url <u>]` | Sign out of one host; others stay signed in | [cloud](/cli/cloud#reticle-logout) |
|
|
62
|
+
| `reticle feedback` | Tell us what worked and what did not | [feedback](/cli/feedback) |
|
|
63
|
+
| `reticle telemetry [status\|enable\|disable]` | Anonymous usage metrics: what is sent, and the switch | [telemetry](/cli/telemetry) |
|
|
64
|
+
|
|
65
|
+
### More commands (`reticle help all`)
|
|
66
|
+
|
|
67
|
+
| Command | What it does | Page |
|
|
68
|
+
| --- | --- | --- |
|
|
69
|
+
| `reticle sync [--watch] [--move-history]` | Send what has not synced yet; `--watch` keeps going; `--move-history` also sends the runs, flows and records made under the folder's previous link | [cloud](/cli/cloud#reticle-sync) |
|
|
70
|
+
| `reticle runs [<runId>]` | The linked project's recent runs, or one of them | [cloud](/cli/cloud#reticle-runs) |
|
|
71
|
+
| `reticle runs regression` | Which flows broke; exits `3` if any did | [cloud](/cli/cloud#reticle-runs-regression) |
|
|
72
|
+
| `reticle runs share <runId>` | Mint a public proof link for one run | [cloud](/cli/cloud#reticle-runs-share) |
|
|
73
|
+
| `reticle runs issues [--fix <fp>]` | The triage queue; `--fix` prints one issue's fix prompt | [cloud](/cli/cloud#reticle-runs-issues) |
|
|
74
|
+
| `reticle runs memory` | What the linked project has learned | [cloud](/cli/cloud#reticle-runs-memory) |
|
|
75
|
+
| `reticle config` | Choose what syncs: runs, memory, flows; where verification runs | [cloud](/cli/cloud#reticle-config) |
|
|
76
|
+
| `reticle setup mcp` | Register the MCP server with your coding agents (the installer's registration half) | [setup](/cli/setup) |
|
|
77
|
+
| `reticle serve` | Start the daemon and wait for it to bind | [serve](/cli/serve) |
|
|
78
|
+
| `reticle mcp` | The MCP stdio proxy your agent runs; starts the daemon if needed | [mcp](/cli/mcp) |
|
|
79
|
+
| `reticle drive <url>` | Foreground mode, for debugging | [drive](/cli/drive) |
|
|
80
|
+
| `reticle affected [--since <ref>]` | Which saved flows must re-verify for the changed files | [affected](/cli/affected) |
|
|
81
|
+
| `reticle context --compact [--session <id>]` | Resume after a compaction: what was proved, failed and is still owed | none |
|
|
82
|
+
| `reticle report [--session <id>] [--hook]` | What the latest session claimed, and what held | [report](/cli/report) |
|
|
83
|
+
| `reticle rollback` | Restore the previous server version and restart | [rollback](/cli/rollback) |
|
|
84
|
+
| `reticle license` | Enterprise license status: active, eval or missing | [license](/cli/license) |
|
|
85
|
+
| `reticle version` | Print the version | [version](/cli/version) |
|
|
86
|
+
| `reticle help [all\|<command>]` | Usage: the short list, every command, or one command | [help](/cli/help) |
|
|
87
|
+
|
|
88
|
+
### Renamed and removed
|
|
89
|
+
|
|
90
|
+
The old names below still work for one release and print one line naming the new one.
|
|
91
|
+
|
|
92
|
+
| Old | Now |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| `reticle kill` | `reticle stop --force` |
|
|
95
|
+
| `reticle login`, `reticle link` | `reticle connect` |
|
|
96
|
+
| `reticle project` | `reticle connect --project <name\|id>` |
|
|
97
|
+
| `reticle whoami` | `reticle status` |
|
|
98
|
+
| `reticle push` | `reticle sync` |
|
|
99
|
+
| `reticle regression`, `share`, `issues`, `memory` | `reticle runs regression`, `runs share`, `runs issues`, `runs memory` |
|
|
100
|
+
|
|
101
|
+
`hunt`, `watch`, `capsules`, `tutorial` and `identify` were removed. Each prints what to use instead and exits `1`: `reticle affected` or `reticle gate` for `watch`, `reticle init` or `reticle try <url>` for `tutorial`, `reticle feedback` for `identify`. Saved capsules stay in `.reticle/capsules`.
|
|
102
|
+
|
|
27
103
|
## Setup and diagnosis
|
|
28
104
|
|
|
29
105
|
### `reticle connect`
|
|
@@ -42,14 +118,16 @@ Wires Reticle into the project in the current directory, then boots the app and
|
|
|
42
118
|
|
|
43
119
|
```
|
|
44
120
|
reticle init [--env KEY=VALUE]... [--app <dir>] [--license <key>]
|
|
45
|
-
[--json] [--files-only] [--no-open] [--
|
|
46
|
-
[--
|
|
121
|
+
[--json] [--files-only] [--relaunch] [--no-open] [--no-agents]
|
|
122
|
+
[--url <app url>] [--timeout S] [--dry-run] [--hooks]
|
|
123
|
+
[--port N] [--no-mcp] [--no-install] [--start]
|
|
124
|
+
[--capture-bodies] [--no-first-run]
|
|
47
125
|
```
|
|
48
126
|
|
|
49
127
|
`--env` and `--app` are the answers the command cannot work out for itself: what the app needs to reach a usable state, and which app in a monorepo. Which journey proves what you care about is asked on the first run, as `--persona`. `--files-only` is what `init` did before it learned to boot the app: it still registers the MCP server and pre-approves Reticle's tools, so it doubles as the upgrade path for an existing install.
|
|
50
128
|
|
|
51
129
|
<Card title="Full walkthrough with real output" icon="wand-magic-sparkles" href="/install-agentic">
|
|
52
|
-
What it writes, and how to read its
|
|
130
|
+
What it writes, and how to read its five status marks.
|
|
53
131
|
</Card>
|
|
54
132
|
|
|
55
133
|
### `reticle doctor`
|
|
@@ -64,9 +142,11 @@ npx @reticlehq/server doctor
|
|
|
64
142
|
reticle doctor
|
|
65
143
|
node v22.14.0
|
|
66
144
|
chromium ✓ installed (chromium-1234)
|
|
67
|
-
daemon ✓ running on :4400 (pid 72698,
|
|
145
|
+
daemon ✓ running on :4400 (pid 72698, v3.7.0)
|
|
68
146
|
sessions ✓ 1 page connected
|
|
69
147
|
bridge port 4400 (your app must dial THIS port, not your dev-server port)
|
|
148
|
+
agent link ✓ an MCP client attached here and called tools before (a record, not a live check)
|
|
149
|
+
project ✓ wired here (my-app)
|
|
70
150
|
daemon log /Users/you/.reticle/daemon-4400.log
|
|
71
151
|
tracing RETICLE_TRACE=1 on the daemon for per-stage timings in that log
|
|
72
152
|
```
|
|
@@ -75,7 +155,7 @@ Exits `0`. That parenthetical about the bridge port is doing a lot of work. Mixi
|
|
|
75
155
|
|
|
76
156
|
### `reticle status`
|
|
77
157
|
|
|
78
|
-
Whether the daemon is up
|
|
158
|
+
Whether the daemon is up, which apps have connected, who is signed in, and whether this repo is linked to a cloud project.
|
|
79
159
|
|
|
80
160
|
```text
|
|
81
161
|
reticle status
|
|
@@ -87,7 +167,7 @@ reticle status
|
|
|
87
167
|
|
|
88
168
|
Add `--json` for the same facts as one machine-readable event line. See [`reticle status`](/cli/status) for the fields.
|
|
89
169
|
|
|
90
|
-
Exits `0`. A session
|
|
170
|
+
Exits `0`. A session listed means the SDK reached the page. Setup is finished when the first run returns a verdict.
|
|
91
171
|
|
|
92
172
|
### `reticle telemetry [status|enable|disable]`
|
|
93
173
|
|
|
@@ -110,8 +190,8 @@ policy https://github.com/reticlehq/reticle/blob/main/docs/telemetry.md
|
|
|
110
190
|
| --- | --- |
|
|
111
191
|
| `reticle serve` | Start the daemon and wait for it to bind. `--drive <url>`, `--headless`, `--headed`, `--http`, `--http-port N`, `--http-token T` |
|
|
112
192
|
| `reticle stop` | Stop the daemon we started, by its recorded pid. `--quiet` |
|
|
113
|
-
| `reticle
|
|
114
|
-
| `reticle restart` |
|
|
193
|
+
| `reticle stop --force` | Free the port by asking who is **listening** on it |
|
|
194
|
+
| `reticle restart` | Free the port, then start a daemon and wait for a real bind. `--force` |
|
|
115
195
|
| `reticle open [url]` | Show the app. Reuse the connected tab, or open one |
|
|
116
196
|
| `reticle drive <url>` | Foreground mode, for debugging |
|
|
117
197
|
| `reticle mcp` | The MCP stdio proxy. Auto-starts the daemon if needed. This is what your agent runs |
|
|
@@ -124,15 +204,17 @@ A bare `reticle` with no arguments is not help. It is `reticle serve`.
|
|
|
124
204
|
`npx @reticlehq/server` never pairs a daemon with an SDK it cannot talk to. `init`, `update`,
|
|
125
205
|
`rollback`, `setup install`, `version` and `help` always run as typed, and so does a command whose
|
|
126
206
|
version you pinned yourself (`npx @reticlehq/server@<version> …`). Set `RETICLE_NO_VERSION_MATCH=1` to
|
|
127
|
-
turn it off.
|
|
207
|
+
turn it off. Because `--help` runs as typed too, it describes the CLI you ran. When the command it
|
|
208
|
+
describes would run at the project's version instead, the help opens with a line naming that version.
|
|
128
209
|
</Note>
|
|
129
210
|
|
|
130
|
-
<
|
|
131
|
-
`reticle verify`
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
211
|
+
<Note>
|
|
212
|
+
`reticle verify` works whether or not a daemon is running. With none, it starts its own browser on
|
|
213
|
+
the bridge port. With one, it replays the saved flows (or answers `--expect`) through that daemon.
|
|
214
|
+
Only `--headed` and `--storage-state` need their own browser, so with a daemon running those two
|
|
215
|
+
refuse and say so. Do not stop the daemon to get around it: that cuts your agent's MCP link. Point
|
|
216
|
+
`verify` at a free port with `--port N` instead.
|
|
217
|
+
</Note>
|
|
136
218
|
|
|
137
219
|
## Verification
|
|
138
220
|
|
|
@@ -144,7 +226,16 @@ One-shot: drive the URL, replay the saved flows, exit `0` on pass. This is the c
|
|
|
144
226
|
npx @reticlehq/server verify http://localhost:5173 --timeout 60000
|
|
145
227
|
```
|
|
146
228
|
|
|
147
|
-
Options:
|
|
229
|
+
Options:
|
|
230
|
+
|
|
231
|
+
- `--headed`, `--timeout N`, `--port N`.
|
|
232
|
+
- `--storage-state <file>`: verify flows behind a login without scripting the login every time.
|
|
233
|
+
- `--session-id <id>`: use a tab that is already connected.
|
|
234
|
+
- `--select <label>`: verify only flows carrying this label. Repeatable.
|
|
235
|
+
- `--expect '<json predicate>'` or `--expect-file <path>`: one verdict, no saved flows needed. Asks the running daemon; with none, it refuses. Exits `0` only on `verified: "yes"`.
|
|
236
|
+
- `--explore` with `--persona "<who does what>"`: no saved flows yet? The Harness drives the app and records them. Needs a linked project (`reticle connect`).
|
|
237
|
+
- `--results-json <file>`: also write one verdict per journey as JSON, for CI.
|
|
238
|
+
- `--confirm-dangerous`: let this run press what the replay guard holds as destructive.
|
|
148
239
|
|
|
149
240
|
### `reticle affected`
|
|
150
241
|
|
|
@@ -196,18 +287,6 @@ Measured exit code: **`1`**, with the flow lists trimmed above. That run genuine
|
|
|
196
287
|
|
|
197
288
|
`quarantined` flows are excluded from the pass/fail decision. Quarantine is for a flow that is known flaky and being fixed; it is not a place to hide failures, because the list is printed on every run.
|
|
198
289
|
|
|
199
|
-
### `reticle watch [url]`
|
|
200
|
-
|
|
201
|
-
On save, report which saved flows must re-verify. The interactive companion to `affected`. Long-running; stop it with `Ctrl+C`.
|
|
202
|
-
|
|
203
|
-
### `reticle capsules`
|
|
204
|
-
|
|
205
|
-
List the saved fail-to-pass bug capsules in `.reticle/capsules`. No flags. See [capsules](/cli/capsules).
|
|
206
|
-
|
|
207
|
-
### `reticle hunt <dir>`
|
|
208
|
-
|
|
209
|
-
Aggregate a directory of crawl reports into one false-green rate. See [hunt](/cli/hunt).
|
|
210
|
-
|
|
211
290
|
## Maintenance
|
|
212
291
|
|
|
213
292
|
| Command | What it does |
|
|
@@ -216,7 +295,7 @@ Aggregate a directory of crawl reports into one false-green rate. See [hunt](/cl
|
|
|
216
295
|
| `reticle rollback` | Restore the previous version and restart |
|
|
217
296
|
| `reticle license` | Enterprise license status: active, eval, or missing |
|
|
218
297
|
| `reticle version` | Print the version |
|
|
219
|
-
| `reticle help` |
|
|
298
|
+
| `reticle help` | The short list; `help all` for every command |
|
|
220
299
|
|
|
221
300
|
<Tip>
|
|
222
301
|
`rollback` exists because an auto-updating dev tool that cannot go back is a dev tool that can
|
|
@@ -230,7 +309,7 @@ Aggregate a directory of crawl reports into one false-green rate. See [hunt](/cl
|
|
|
230
309
|
npx @reticlehq/server feedback "what worked, what didn't"
|
|
231
310
|
|
|
232
311
|
# agents, including from a setup that never finished
|
|
233
|
-
npx @reticlehq/server feedback --agent --kind <bug|gap|ambiguity|feature_request|improvement> "what happened"
|
|
312
|
+
npx @reticlehq/server feedback --agent --kind <bug|gap|ambiguity|feature_request|improvement|experience> "what happened"
|
|
234
313
|
```
|
|
235
314
|
|
|
236
315
|
The `--agent` form matters more than it looks: the setup that failed halfway is exactly the setup worth hearing about, and in that state the MCP tools do not exist yet.
|
|
@@ -238,13 +317,3 @@ The `--agent` form matters more than it looks: the setup that failed halfway is
|
|
|
238
317
|
<Card title="How feedback is handled" icon="comments" href="/tools/session-and-feedback">
|
|
239
318
|
What each kind means, and what happens when a report cannot be delivered.
|
|
240
319
|
</Card>
|
|
241
|
-
|
|
242
|
-
## `reticle identify`
|
|
243
|
-
|
|
244
|
-
Opt-in, and off by default:
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
npx @reticlehq/server identify --context company|side_project|open_source|learning [--company N] [--email E] [--forget]
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
Only useful if you want support or an enterprise trial. `--forget` removes it.
|
package/docs/debugging.md
CHANGED
|
@@ -12,7 +12,7 @@ Reticle produces four different signals and they answer four different questions
|
|
|
12
12
|
|
|
13
13
|
| Question | Signal | Where |
|
|
14
14
|
| --- | --- | --- |
|
|
15
|
-
| What did the **agent** do to the app, and what did the app do back? | the journal | `reticle_observe` (the event window), `reticle_run_export` (a saved run),
|
|
15
|
+
| What did the **agent** do to the app, and what did the app do back? | the journal | `reticle_observe` (the event window), `reticle_run_export` (a saved run), `.reticle/sessions/<id>/` in the project |
|
|
16
16
|
| What did **Reticle** do internally to answer that call? | the **trace** | daemon log, with `RETICLE_TRACE=1` |
|
|
17
17
|
| What happened at a milestone (daemon start, skew, refusal)? | structured log lines | daemon log |
|
|
18
18
|
| How much is this being used, and does it work? | telemetry | [telemetry.md](telemetry.md) |
|
|
@@ -36,7 +36,7 @@ tail -f ~/.reticle/daemon-4400.log | jq .
|
|
|
36
36
|
Off by default, because a trace on every tool call is a cost on the hot path, and a verification loop is 50 to 200 calls. Measured, so the claim is checkable: a disabled span costs **126ns** per site (against ~9ns for a bare call), which is under a microsecond per tool call and not the literal zero it is tempting to write. Turn it on **for the daemon** (the flag is read per call, but the daemon is the process doing the work, so it has to be set where the daemon starts):
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
RETICLE_TRACE=1
|
|
39
|
+
RETICLE_TRACE=1 npx @reticlehq/server serve --port 4400
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
Every instrumented stage then emits one line **when it ends**, carrying its own duration:
|
|
@@ -95,7 +95,7 @@ init.write 1ms target=.reticle.json
|
|
|
95
95
|
init.apply 262ms steps=5
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
Two things that trace makes visible and nothing else did. Planning is ~2ms, so init's wall-clock is essentially all subprocess: the package manager, and `claude mcp add` when MCP registration is on. And when the pinned install is refused, the unpinned **retry is a second full package-manager run**, so init legitimately takes about twice as long on that path.
|
|
98
|
+
Two things that trace makes visible and nothing else did. Planning is ~2ms, so init's wall-clock is essentially all subprocess: the package manager, and `claude mcp add` when MCP registration is on. And when the pinned install is refused, the unpinned **retry is a second full package-manager run**, so init legitimately takes about twice as long on that path. An install of a version that is not published yet always takes it.
|
|
99
99
|
|
|
100
100
|
### Adding a span
|
|
101
101
|
|
package/docs/deploy-checks.md
CHANGED
|
@@ -91,7 +91,7 @@ Both. For a non-loopback origin Reticle injects `reticle.connect()` with a one-t
|
|
|
91
91
|
|
|
92
92
|
### One of my flows logs in and the next one starts logged in. How do I stop that?
|
|
93
93
|
|
|
94
|
-
`verify` replays flows sequentially against one tab, so leftover state carries. Either author each flow to be self-contained, or use `reticle_verify { action: "flows", parallel:
|
|
94
|
+
`verify` replays flows sequentially against one tab, so leftover state carries. Either author each flow to be self-contained, or use `reticle_verify { action: "flows", parallel: 4 }` (`parallel` is how many flows run at once), which gives every flow its own isolated browser context with its own cookies and storage.
|
|
95
95
|
|
|
96
96
|
### Should I run reticle gate as well as reticle verify?
|
|
97
97
|
|
package/docs/desktop.mdx
CHANGED
|
@@ -218,7 +218,7 @@ Alternatively, since an Electron renderer _is_ Chromium, `--remote-debugging-por
|
|
|
218
218
|
|
|
219
219
|
```toml
|
|
220
220
|
[dependencies]
|
|
221
|
-
reticle-tauri = "3.
|
|
221
|
+
reticle-tauri = "3.7"
|
|
222
222
|
```
|
|
223
223
|
|
|
224
224
|
```rust
|
|
@@ -227,6 +227,8 @@ tauri::Builder::default()
|
|
|
227
227
|
.on_page_load(reticle_tauri::on_page_load)
|
|
228
228
|
```
|
|
229
229
|
|
|
230
|
+
**Dev builds only.** In a release build the crate is inert: `reticle_capture` refuses and `on_page_load` does nothing, so the binary you sign and ship carries no Reticle capability. A release build you test with Reticle (a CI fixture) turns it on with `reticle-tauri = { version = "3.7", features = ["in-release"] }`.
|
|
231
|
+
|
|
230
232
|
Nothing on the JavaScript side: the SDK invokes the command through Tauri's own internals, because Tauri has no preload stage where a shim could be installed.
|
|
231
233
|
|
|
232
234
|
### Why the backing store, and not a screen capture
|
|
@@ -247,7 +249,7 @@ All three capture the visible viewport by default, so a baseline taken on a deve
|
|
|
247
249
|
|
|
248
250
|
**`{ fullPage: true }` works on Tauri/Linux only.** WebKitGTK can render the whole document offscreen; `takeSnapshot` (macOS) and `CapturePreview` (Windows) only give what is composited, and Electron's `capturePage()` is the same. Asked for a full page they cannot produce, all of them return `{ ok: false, reason: 'full-page-unsupported' }` rather than quietly handing back the viewport, which would be a baseline that omits everything below the fold while every later diff of it reports green about a region that was never captured. No baseline is written on a refusal.
|
|
249
251
|
|
|
250
|
-
An app that already has its own capture can expose `window.__reticleIpc.capture()` returning a PNG path instead; the SDK prefers it over the built-in command.
|
|
252
|
+
An app that already has its own capture can expose `window.__reticleIpc.capture()` returning a PNG path instead; the SDK prefers it over the built-in command. The daemon reads only a file in the OS temp directory whose name starts with `reticle-capture-`, so write the PNG there.
|
|
251
253
|
|
|
252
254
|
<Warning>
|
|
253
255
|
One honest caveat. A fully occluded or minimized window is only partially composited, so parts of
|
|
@@ -324,7 +326,7 @@ Without `@reticlehq/electron/preload`, every IPC call is invisible to Reticle. A
|
|
|
324
326
|
|
|
325
327
|
## How it compares to Playwright MCP
|
|
326
328
|
|
|
327
|
-
Both attached to the same running Electron app, same task ("archive a todo, then verify it worked"):
|
|
329
|
+
Both attached to the same running Electron app, same task ("archive a todo, then verify it worked"). Measured by hand, with Reticle's `lean` tool profile, which has since been retired:
|
|
328
330
|
|
|
329
331
|
| tool | ~tokens | ms | verdict |
|
|
330
332
|
| ----------------------- | ------- | ------- | ----------------------------------------- |
|
package/docs/enterprise.md
CHANGED
|
@@ -4,7 +4,7 @@ description: 'Premium access and activation, what is gated, the security and dat
|
|
|
4
4
|
icon: building
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Enterprise features ship inside the open package and are unlocked by a signed license key you set as `RETICLE_LICENSE_KEY`. Activation is verified locally with Ed25519 and makes **no network call**, so nothing about your usage leaves your machine. Run `npx @reticlehq/server license` to see whether you are `active`, `eval`, `missing` or `
|
|
7
|
+
Enterprise features ship inside the open package and are unlocked by a signed license key you set as `RETICLE_LICENSE_KEY`. Activation is verified locally with Ed25519 and makes **no network call**, so nothing about your usage leaves your machine. Run `npx @reticlehq/server license` to see whether you are `active`, `eval`, `missing`, `expired` or `invalid`.
|
|
8
8
|
|
|
9
9
|
> Premium access (how you get + activate it), what's gated, the security/data-handling posture, and the licensing model. Integration mechanics live in [`platform-integration.md`](./platform-integration.md).
|
|
10
10
|
|
|
@@ -22,19 +22,20 @@ Enterprise (`ee/`) features ship **inside the open package**; they're source-ava
|
|
|
22
22
|
export RETICLE_LICENSE_KEY="<your key>"
|
|
23
23
|
# the release already bakes the issuer public key (RETICLE_LICENSE_PUBLIC_KEY)
|
|
24
24
|
```
|
|
25
|
-
3. **Verify.** `reticle license`
|
|
25
|
+
3. **Verify.** `reticle license` prints one JSON line whose `status` and `detail` say where you stand:
|
|
26
26
|
|
|
27
27
|
```
|
|
28
|
-
active licensed to Acme Corp (enterprise), expires 2027-06-
|
|
28
|
+
active licensed to Acme Corp (enterprise), expires 2027-06-20T00:00:00.000Z
|
|
29
29
|
eval evaluation mode: enterprise features run free (no issuer key configured)
|
|
30
30
|
missing set RETICLE_LICENSE_KEY to activate enterprise features in production. Request a key from hey@reticle.sh
|
|
31
31
|
expired license expired. Renew with hey@reticle.sh to keep using enterprise features
|
|
32
|
+
invalid license key rejected (<reason>). hey@reticle.sh can re-issue it
|
|
32
33
|
```
|
|
33
34
|
|
|
34
35
|
Every status reports `contact`, so a reader who is stuck always has somebody to write to. An unlicensed status also reports `gated`, what a licence unlocks in the build you are running, so the command answers "what would this buy me, and how do I get one" without anybody having to find this page first. It is derived from the features the gate actually enforces, so it names what your build will really refuse rather than a roadmap. An `active` licence does not report it: that reader has already bought, and listing feature names at them answers nothing they asked.
|
|
35
36
|
|
|
36
|
-
4. **Unlock.** Enterprise features now run
|
|
37
|
-
5. **Renew.** Keys carry an expiry
|
|
37
|
+
4. **Unlock.** Enterprise features now run; without a valid key they refuse to run (a clear error, never a silent half-feature). A published release has the issuer key baked in, so it enforces the key everywhere. Only a build without one (from source) runs in `eval` mode, where the features run free outside `NODE_ENV=production`.
|
|
38
|
+
5. **Renew.** Keys carry an expiry, shown as `expiresAt`; once it passes, the status is `expired`.
|
|
38
39
|
|
|
39
40
|
> Procuring a license: contact **[hey@reticle.sh](mailto:hey@reticle.sh)**. Keys are issued offline and signed with Ed25519; the activation you run (`reticle license`) verifies them locally with no network call.
|
|
40
41
|
|
|
@@ -42,26 +43,26 @@ Enterprise (`ee/`) features ship **inside the open package**; they're source-ava
|
|
|
42
43
|
|
|
43
44
|
The licensing **mechanism** is open core (inspectable, FSL). Only the **features** under `ee/` are gated:
|
|
44
45
|
|
|
45
|
-
- **Today:** the activation gate +
|
|
46
|
+
- **Today:** the activation gate + one gated feature (audit event recording, `audit-log`).
|
|
46
47
|
- **Roadmap** (the reliably enterprise-only set): **SSO/SAML, SCIM, RBAC / team permissions, audit logs, multi-org management, verify-before-merge policy gates, and the hosted control-plane connectors.** These are the things a security/compliance org pays for; the core verification engine stays free forever.
|
|
47
48
|
|
|
48
49
|
> What's premium vs free, and pricing, are business decisions for the owner; this doc describes the _mechanism_, not the price list.
|
|
49
50
|
|
|
50
51
|
## Security & data handling
|
|
51
52
|
|
|
52
|
-
The honest one-pager a security review needs. Reticle is built so the answer to "where does our data go?" is **nowhere. It runs on your machine, in your infra.**
|
|
53
|
+
The honest one-pager a security review needs. Reticle is built so the answer to "where does our data go?" is **nowhere, unless you link a project to the dashboard. It runs on your machine, in your infra.**
|
|
53
54
|
|
|
54
55
|
| Question | Answer |
|
|
55
56
|
| --- | --- |
|
|
56
57
|
| Does the SDK ship to production? | **No.** Dev/preview-only, tree-shaken from production builds. |
|
|
57
58
|
| Where does the server run? | **Localhost.** The bridge binds `127.0.0.1`; the verify endpoint is localhost-bound + token-guarded (constant-time), with request/body-size/timeout limits. |
|
|
58
|
-
| Does anything phone home? | **No app data
|
|
59
|
+
| Does anything phone home? | **No app data unless you opt in.** Linking a project to the dashboard (`reticle connect`) sends its runs there; see [what is recorded](what-is-recorded.md) and `reticle config` for what it sends. License checks are offline (Ed25519). The CLI sends anonymous, opt-out usage metrics only (random id + event names, no code, no PII; see [telemetry](telemetry.md)); disable fleet-wide with `RETICLE_TELEMETRY=0` or per-machine with `reticle telemetry disable`. Feedback your team explicitly sends us (`reticle feedback`) is the only free text that ever leaves; it is never collected passively, is redacted client-side, and is disabled fleet-wide with `RETICLE_FEEDBACK=0`. |
|
|
59
60
|
| Where do artifacts live? | Your disk: `.reticle/runs/<id>.json` (atomic writes, bounded retention), `.reticle/flows/`, `.reticle/contract.json`. You own them. |
|
|
60
61
|
| What can the server read? | The DOM/network/console/routing/state of the app under test, locally. |
|
|
61
62
|
| Leak risk downstream? | The **`prod-preview` profile** redacts source `file:line`, raw bodies, and app-state values. |
|
|
62
63
|
| Path safety | Run/flow ids are validated as single path segments on read **and** write (no traversal). |
|
|
63
64
|
|
|
64
|
-
**Verify it yourself:** the SDK + server are source-available, so read the tree-shaking, the `127.0.0.1` bind, and the offline license verify. `SECURITY.md` has the disclosure process; an SBOM is available on request. SOC 2 is
|
|
65
|
+
**Verify it yourself:** the SDK + server are source-available, so read the tree-shaking, the `127.0.0.1` bind, and the offline license verify. `SECURITY.md` has the disclosure process; an SBOM is available on request. SOC 2 is not in place; the posture above is the honest current state.
|
|
65
66
|
|
|
66
67
|
## Licensing model (per package)
|
|
67
68
|
|
|
@@ -69,7 +70,7 @@ The honest one-pager a security review needs. Reticle is built so the answer to
|
|
|
69
70
|
| --- | --- | --- |
|
|
70
71
|
| The protocol and the rules (`open-verification`, `core`, `engine`) | **Apache-2.0** | the part that DECIDES a verdict, auditable and reimplementable by anyone |
|
|
71
72
|
| Embeddable SDK (`browser`, `react`, `babel-plugin`, `next`, `vite-plugin`, `electron`, `eslint-plugin`) | **Apache-2.0** | safe to ship inside your customers' apps; explicit patent grant |
|
|
72
|
-
| Server / CLI / MCP (`server`, `
|
|
73
|
+
| Server / CLI / MCP (`server`, `init`, `test`) | **FSL-1.1-ALv2** | free for any use except reselling Reticle itself; converts to Apache after 2 years |
|
|
73
74
|
| Enterprise features (`server/src/features/ee/`) | **Reticle Enterprise License** | source-available; free for dev/eval, license key required in production |
|
|
74
75
|
|
|
75
76
|
Embedding / OEM / enterprise: **[hey@reticle.sh](mailto:hey@reticle.sh)**.
|
package/docs/environment.mdx
CHANGED
|
@@ -17,6 +17,7 @@ Reticle works with none of these set. Each one changes a single behaviour, and m
|
|
|
17
17
|
| `RETICLE_ALLOWED_ORIGINS` | daemon | Comma-separated WebSocket origins the bridge accepts. |
|
|
18
18
|
| `RETICLE_STATE_DIR` | daemon, CLI | Daemon state: pid files, the discovery registry and logs. Defaults to `~/.reticle`. |
|
|
19
19
|
| `RETICLE_DAEMON_READY_TIMEOUT_MS` | MCP proxy | How long the MCP proxy waits for a daemon to come up before reporting it unreachable. |
|
|
20
|
+
| `RETICLE_NO_VERSION_MATCH` | CLI | `1` turns off version matching: when the project's SDK is a different major version from the CLI you ran, the CLI normally hands the command to the matching server version. |
|
|
20
21
|
| `RETICLE_DEV` | `@reticlehq/next` | Instrument even when `NODE_ENV` says production, for `NODE_ENV=production next dev`. |
|
|
21
22
|
|
|
22
23
|
## Daemon lifetime
|
|
@@ -41,7 +42,7 @@ Reticle works with none of these set. Each one changes a single behaviour, and m
|
|
|
41
42
|
|
|
42
43
|
| Variable | Read by | What it does |
|
|
43
44
|
| --- | --- | --- |
|
|
44
|
-
| `RETICLE_ADVERTISE_ALL_TOOLS` | daemon | Advertise
|
|
45
|
+
| `RETICLE_ADVERTISE_ALL_TOOLS` | daemon | Advertise 30 tools directly instead of the default ten, under their unmerged names (`reticle_snapshot` instead of `reticle_look { action: "page" }`, and so on). Everything is reachable either way, through `reticle_run`. |
|
|
45
46
|
| `RETICLE_VERIFY_SURFACE` | daemon | Advertise the smallest surface that can still produce a verdict. |
|
|
46
47
|
| `RETICLE_TOOL_PROFILE` | daemon | Retired. Any value it used to accept still resolves to a sensible surface, and the daemon says which one it used instead. |
|
|
47
48
|
| `RETICLE_ENCODING` | daemon | How tool results are written for the agent. Compact JSON by default; `pretty` indents it, and `toon` is a denser tabular form. The typed result is the same in every encoding. |
|
|
@@ -63,7 +64,8 @@ Reticle works with none of these set. Each one changes a single behaviour, and m
|
|
|
63
64
|
| `RETICLE_CLOUD_KEY` | CLI, daemon | The key's earlier name. Still honoured. |
|
|
64
65
|
| `RETICLE_CLOUD_URL`, `RETICLE_URL` | CLI, daemon | The platform host. `RETICLE_CLOUD_URL` wins when both are set. |
|
|
65
66
|
| `RETICLE_SYNC_INTERVAL_MS` | `reticle sync --watch` | How often the watching sync runs. Every 60 seconds by default. |
|
|
66
|
-
| `RETICLE_HARNESS_MAX_STEPS` | autonomous drive | A hard ceiling on steps in one drive. It bounds cost. The drive itself runs on the platform and needs a linked project;
|
|
67
|
+
| `RETICLE_HARNESS_MAX_STEPS` | autonomous drive | A hard ceiling on steps in one drive. It bounds cost. The drive itself runs on the platform and needs a linked project; each drive spends credits from the workspace's allowance. |
|
|
68
|
+
| `RETICLE_DRIVE_ID` | autonomous drive | The free drive the platform granted, sent with every Harness call. `reticle try` sets it; you do not need to. |
|
|
67
69
|
| `RETICLE_SECRET_<FIELD>` | autonomous drive, replay | The value of a secret field, typed in on this machine. Only the field's name goes to the platform. |
|
|
68
70
|
|
|
69
71
|
## Licensing
|
|
@@ -80,4 +82,5 @@ Reticle works with none of these set. Each one changes a single behaviour, and m
|
|
|
80
82
|
| `RETICLE_TELEMETRY_FILE` | CLI, daemon | Write telemetry to a local JSONL file and send nothing, so you can read exactly what would be sent. |
|
|
81
83
|
| `RETICLE_TELEMETRY_URL`, `RETICLE_TELEMETRY_KEY` | CLI, daemon | Send telemetry to a different host or project, such as an EU region or your own instance. |
|
|
82
84
|
| `RETICLE_FEEDBACK` | daemon | Turns off the feedback channel only. Usage telemetry follows `RETICLE_TELEMETRY`. |
|
|
85
|
+
| `RETICLE_INSTALL_SOURCE` | `init`, installer, plugin | Names the published route an install came through (`docs_site`, `skill_file`, `plugin`). Self-declared, carries nothing about you, and changes nothing about the install. |
|
|
83
86
|
| `RETICLE_TRACE` | daemon, CLI | Verbose internal tracing for people working on Reticle itself. Off by default. |
|
package/docs/faq.mdx
CHANGED
|
@@ -11,8 +11,8 @@ Reticle is a dev-only, localhost-only verification layer an AI coding agent uses
|
|
|
11
11
|
|
|
12
12
|
<Accordion title="Does this run in production?">
|
|
13
13
|
No, and it is built so that it cannot easily be made to. Keep `reticle.connect()` behind a dev
|
|
14
|
-
guard; the SDK is side-effect-free and tree-shakes out of production builds.
|
|
15
|
-
|
|
14
|
+
guard; the SDK is side-effect-free and tree-shakes out of production builds. In a production `vite
|
|
15
|
+
build`, the Vite plugin swaps the SDK for an inert stub and injects nothing.
|
|
16
16
|
</Accordion>
|
|
17
17
|
|
|
18
18
|
<Accordion title="Do I have to change my components?">
|
|
@@ -68,7 +68,7 @@ If you believe an `unknown` is wrong, report it. Reticle's own response says as
|
|
|
68
68
|
</Accordion>
|
|
69
69
|
|
|
70
70
|
<Accordion title="Does my data leave the machine?">
|
|
71
|
-
|
|
71
|
+
Reticle is dev-only and localhost-only. Nothing from your app leaves the machine until you link a project (`reticle connect`, or `RETICLE_API_KEY` in CI). After that, what syncs is set by `reticle config`, and when the Harness drives, the platform sees the steps it drives. Secret values never leave. Credential-shaped values are redacted before they leave the page. You will see `[REDACTED]` in request bodies without configuring anything.
|
|
72
72
|
|
|
73
73
|
Anonymous usage counts are sent by default, separately, and carry nothing from your app. `reticle telemetry disable`, `RETICLE_TELEMETRY=0` or `DO_NOT_TRACK=1` turns them off.
|
|
74
74
|
|
package/docs/first-drive.md
CHANGED
|
@@ -11,7 +11,7 @@ Everything here is written from a run of these exact steps, including the places
|
|
|
11
11
|
## Before you start
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
node --version # 22 or newer
|
|
14
|
+
node --version # 22.12 or newer
|
|
15
15
|
pnpm --version # this is a pnpm workspace; npm will not resolve it
|
|
16
16
|
```
|
|
17
17
|
|
|
@@ -25,9 +25,10 @@ pnpm build # required: the specs and the CLI run from dist/, not src/
|
|
|
25
25
|
|
|
26
26
|
## 1. Boot something to look at
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
Three processes: the Reticle daemon, a demo API, and the bench app that talks to both.
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
+
node server/dist/command/cli.js serve --port 4400 # returns once the daemon answers
|
|
31
32
|
node apps/api/server.mjs &
|
|
32
33
|
RETICLE_PORT=4400 VITE_RETICLE_TOKEN="$(cat ~/.reticle/pairing-token)" \
|
|
33
34
|
pnpm --filter @reticlehq/bench-app exec vite --port 4310 --strictPort &
|
|
@@ -40,11 +41,11 @@ curl -s -o /dev/null -w "api=%{http_code} app=%{http_code}\n" \
|
|
|
40
41
|
http://localhost:8787/api/saved-items http://localhost:4310/
|
|
41
42
|
```
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
The daemon writes `~/.reticle/pairing-token` when it starts, so start it before the bench app reads the token.
|
|
44
45
|
|
|
45
46
|
## 2. Take a verdict from the command line
|
|
46
47
|
|
|
47
|
-
This is the shortest path to seeing Reticle work, and it needs no MCP client at all.
|
|
48
|
+
This is the shortest path to seeing Reticle work, and it needs no MCP client at all. `--expect` asks the daemon you started in step 1 for the verdict; with no daemon on the port it refuses and proves nothing.
|
|
48
49
|
|
|
49
50
|
Ask for a verdict, naming the app's url. With no tab open on that origin, Reticle opens one in a browser it drives (Playwright's Chromium, or an installed Chrome or Edge when that is missing) and closes it afterwards; a tab you already have open is used instead:
|
|
50
51
|
|