@reticlehq/server 3.5.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/SKILL.md +123 -116
- package/dist/chromium-launch-options.d.ts +3 -1
- package/dist/chromium-launch-options.js +2 -1
- package/dist/command/cli/adhoc-suite.d.ts +14 -0
- package/dist/command/cli/adhoc-suite.js +42 -7
- package/dist/command/cli/adhoc-verdict.d.ts +19 -2
- package/dist/command/cli/adhoc-verdict.js +76 -9
- package/dist/command/cli/answers/gate-exit.d.ts +23 -0
- package/dist/command/cli/answers/gate-exit.js +45 -0
- package/dist/command/cli/answers/gate-hook-message.d.ts +2 -0
- package/dist/command/cli/answers/gate-hook-message.js +3 -1
- package/dist/command/cli/answers/open-note.d.ts +2 -0
- package/dist/command/cli/answers/open-note.js +22 -0
- package/dist/command/cli/auth/device-flow.d.ts +13 -2
- package/dist/command/cli/auth/device-flow.js +17 -0
- package/dist/command/cli/cli-doctor.js +14 -0
- package/dist/command/cli/cli-flow-commands.d.ts +0 -11
- package/dist/command/cli/cli-flow-commands.js +31 -112
- package/dist/command/cli/cli-kill.js +3 -2
- package/dist/command/cli/cli-parse-grammar.d.ts +24 -0
- package/dist/command/cli/cli-parse-grammar.js +75 -0
- package/dist/command/cli/cli-parse-verify.d.ts +2 -0
- package/dist/command/cli/cli-parse-verify.js +18 -0
- package/dist/command/cli/cli-parse.d.ts +19 -28
- package/dist/command/cli/cli-parse.js +82 -182
- package/dist/command/cli/cli-update-commands.d.ts +1 -1
- package/dist/command/cli/cli-update-commands.js +61 -9
- package/dist/command/cli/cli-usage.d.ts +33 -0
- package/dist/command/cli/cli-usage.js +287 -0
- package/dist/command/cli/cli-verify.d.ts +35 -5
- package/dist/command/cli/cli-verify.js +114 -35
- package/dist/command/cli/cloud-cli.d.ts +13 -0
- package/dist/command/cli/cloud-cli.js +192 -341
- package/dist/command/cli/cloud-kit.d.ts +12 -0
- package/dist/command/cli/cloud-kit.js +41 -2
- package/dist/command/cli/cloud-link.d.ts +57 -0
- package/dist/command/cli/cloud-link.js +308 -0
- package/dist/command/cli/cloud-login.d.ts +22 -0
- package/dist/command/cli/cloud-login.js +96 -8
- package/dist/command/cli/context-command.d.ts +1 -0
- package/dist/command/cli/context-command.js +33 -0
- package/dist/command/cli/daemon-start-options.d.ts +3 -0
- package/dist/command/cli/daemon-start-options.js +24 -3
- package/dist/command/cli/doctor/browser/chromium-hint.d.ts +46 -0
- package/dist/command/cli/doctor/browser/chromium-hint.js +99 -1
- package/dist/command/cli/doctor/doctor-coverage-line.d.ts +2 -0
- package/dist/command/cli/doctor/doctor-coverage-line.js +47 -0
- package/dist/command/cli/doctor/doctor-project-line.d.ts +0 -12
- package/dist/command/cli/doctor/doctor-project-line.js +5 -4
- package/dist/command/cli/doctor/doctor-rows.d.ts +6 -0
- package/dist/command/cli/doctor/doctor-rows.js +6 -0
- package/dist/command/cli/doctor/doctor-signing-line.d.ts +38 -0
- package/dist/command/cli/doctor/doctor-signing-line.js +114 -0
- package/dist/command/cli/drive/drive-attach.d.ts +27 -2
- package/dist/command/cli/drive/drive-attach.js +71 -4
- package/dist/command/cli/drive/drive-command.d.ts +2 -1
- package/dist/command/cli/drive/drive-command.js +13 -7
- package/dist/command/cli/known-regression.d.ts +13 -0
- package/dist/command/cli/known-regression.js +34 -0
- package/dist/command/cli/launch/sdk-version-match.d.ts +12 -0
- package/dist/command/cli/launch/sdk-version-match.js +25 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +15 -3
- package/dist/command/cli/mcp-command.d.ts +6 -0
- package/dist/command/cli/mcp-command.js +13 -5
- package/dist/command/cli/ports/port-holder.d.ts +10 -0
- package/dist/command/cli/ports/port-holder.js +25 -1
- package/dist/command/cli/project-name.d.ts +29 -1
- package/dist/command/cli/project-name.js +107 -2
- package/dist/command/cli/setup-mcp-cli.d.ts +17 -1
- package/dist/command/cli/setup-mcp-cli.js +35 -12
- package/dist/command/cli/status/status-lines.d.ts +1 -0
- package/dist/command/cli/status/status-lines.js +47 -2
- package/dist/command/cli/status/workspace-links.d.ts +10 -0
- package/dist/command/cli/status/workspace-links.js +29 -0
- package/dist/command/cli/try-command.d.ts +96 -0
- package/dist/command/cli/try-command.js +362 -0
- package/dist/command/cli/tutorial.d.ts +0 -100
- package/dist/command/cli/tutorial.js +0 -181
- package/dist/command/cli/verify-results.d.ts +19 -0
- package/dist/command/cli/verify-results.js +29 -0
- package/dist/command/cli-onboarding.d.ts +0 -11
- package/dist/command/cli-onboarding.js +0 -15
- package/dist/command/cli.d.ts +20 -0
- package/dist/command/cli.js +130 -104
- package/dist/command/daemon/binding/daemon-status-probe.d.ts +2 -0
- package/dist/command/daemon/binding/daemon-status-probe.js +1 -0
- package/dist/command/daemon/daemon-resilience.js +4 -4
- package/dist/command/daemon/daemon-resolve.d.ts +23 -1
- package/dist/command/daemon/daemon-resolve.js +79 -9
- package/dist/command/setup/agent-writer.d.ts +1 -1
- package/dist/command/setup/agent-writer.js +3 -2
- package/dist/command/setup/bringup/bridge-port.d.ts +3 -1
- package/dist/command/setup/bringup/bridge-port.js +13 -3
- package/dist/command/setup/bringup/connect-lease.d.ts +1 -0
- package/dist/command/setup/bringup/connect-lease.js +1 -0
- package/dist/command/setup/bringup/dev-server-log-cap.js +2 -0
- package/dist/command/setup/bringup/dev-server-wait.d.ts +8 -0
- package/dist/command/setup/bringup/dev-server-wait.js +19 -0
- package/dist/command/setup/bringup/ensure-daemon.js +9 -2
- package/dist/command/setup/init/agent-restart.d.ts +23 -0
- package/dist/command/setup/init/agent-restart.js +28 -0
- package/dist/command/setup/init/init-port.d.ts +14 -1
- package/dist/command/setup/init/init-port.js +32 -2
- package/dist/command/setup/init/init-runtime.d.ts +22 -2
- package/dist/command/setup/init/init-runtime.js +114 -38
- package/dist/command/setup/node-effects.d.ts +2 -0
- package/dist/command/setup/node-effects.js +38 -9
- package/dist/command/setup/probe/existing-app.d.ts +12 -0
- package/dist/command/setup/probe/existing-app.js +14 -0
- package/dist/command/setup/remaining-steps.js +2 -1
- package/dist/command/setup/run-setup.d.ts +34 -9
- package/dist/command/setup/run-setup.js +65 -51
- package/dist/command/setup/setup-command.d.ts +25 -1
- package/dist/command/setup/setup-command.js +59 -4
- package/dist/command/setup/setup-mcp.js +25 -2
- package/dist/command/setup/tauri-signing.d.ts +19 -0
- package/dist/command/setup/tauri-signing.js +79 -0
- package/dist/command/setup/terminal/listeners.d.ts +10 -1
- package/dist/command/setup/terminal/listeners.js +37 -6
- package/dist/command/update/update-nudge.d.ts +9 -0
- package/dist/command/update/update-nudge.js +1 -1
- package/dist/command/update/updater.js +11 -15
- package/dist/command/version/version-nudge.js +3 -0
- package/dist/command/version/version-skew.d.ts +20 -1
- package/dist/command/version/version-skew.js +49 -4
- package/dist/features/crawl/crawl-tools.js +4 -0
- package/dist/features/crawl/crawl.d.ts +6 -0
- package/dist/features/crawl/crawl.js +23 -2
- package/dist/features/exhaust/ledger.d.ts +21 -14
- package/dist/features/exhaust/ledger.js +35 -9
- package/dist/features/harness/app-findings.d.ts +2 -0
- package/dist/features/harness/app-findings.js +52 -0
- package/dist/features/harness/drive-report.d.ts +61 -1
- package/dist/features/harness/drive-report.js +394 -26
- package/dist/features/harness/drive-runs.d.ts +120 -0
- package/dist/features/harness/drive-runs.js +289 -0
- package/dist/features/harness/drivers.d.ts +10 -14
- package/dist/features/harness/drivers.js +10 -14
- package/dist/features/harness/explore/console-pages.d.ts +15 -0
- package/dist/features/harness/explore/console-pages.js +146 -0
- package/dist/features/harness/explore/disparity.d.ts +19 -0
- package/dist/features/harness/explore/disparity.js +71 -0
- package/dist/features/harness/explore/fake-app.d.ts +16 -0
- package/dist/features/harness/explore/fake-app.js +49 -0
- package/dist/features/harness/explore/goal-search.d.ts +26 -0
- package/dist/features/harness/explore/goal-search.js +144 -0
- package/dist/features/harness/explore/page-tree.d.ts +49 -0
- package/dist/features/harness/explore/page-tree.js +148 -0
- package/dist/features/harness/explore/site-map.d.ts +34 -0
- package/dist/features/harness/explore/site-map.js +150 -0
- package/dist/features/harness/fill-values.d.ts +3 -73
- package/dist/features/harness/fill-values.js +3 -169
- package/dist/features/harness/goals.d.ts +82 -0
- package/dist/features/harness/goals.js +330 -0
- package/dist/features/harness/harness.d.ts +51 -1
- package/dist/features/harness/harness.js +207 -6
- package/dist/features/harness/platform/drive-target.d.ts +30 -0
- package/dist/features/harness/platform/drive-target.js +81 -0
- package/dist/features/harness/platform/local-apps.d.ts +127 -0
- package/dist/features/harness/platform/local-apps.js +280 -0
- package/dist/features/harness/platform/persona-credentials.d.ts +20 -0
- package/dist/features/harness/platform/persona-credentials.js +69 -0
- package/dist/features/harness/platform/platform-drives.d.ts +61 -0
- package/dist/features/harness/platform/platform-drives.js +114 -0
- package/dist/features/harness/platform/refusal.d.ts +52 -0
- package/dist/features/harness/platform/refusal.js +71 -0
- package/dist/features/harness/platform/remote-drive.d.ts +186 -0
- package/dist/features/harness/platform/remote-drive.js +378 -0
- package/dist/features/harness/platform/script.d.ts +94 -0
- package/dist/features/harness/platform/script.js +260 -0
- package/dist/features/harness/platform/server-driver.d.ts +54 -0
- package/dist/features/harness/platform/server-driver.js +182 -0
- package/dist/features/harness/platform-config.d.ts +41 -1
- package/dist/features/harness/platform-config.js +106 -9
- package/dist/features/harness/route-guess.d.ts +13 -0
- package/dist/features/harness/route-guess.js +49 -0
- package/dist/features/harness/script/app-controls.d.ts +5 -0
- package/dist/features/harness/script/app-controls.js +40 -0
- package/dist/features/harness/script/lane-ids.d.ts +14 -0
- package/dist/features/harness/script/lane-ids.js +16 -0
- package/dist/features/harness/script/script-run.d.ts +70 -0
- package/dist/features/harness/script/script-run.js +606 -0
- package/dist/features/license/license.d.ts +2 -2
- package/dist/features/visual/step-shots.d.ts +31 -0
- package/dist/features/visual/step-shots.js +231 -0
- package/dist/features/visual/visual-tools.d.ts +10 -1
- package/dist/features/visual/visual-tools.js +62 -17
- package/dist/hooks/client-directory.d.ts +18 -0
- package/dist/hooks/client-directory.js +57 -0
- package/dist/hooks/coding-agents.d.ts +34 -0
- package/dist/hooks/coding-agents.js +117 -0
- package/dist/hooks/driven-by.d.ts +23 -0
- package/dist/hooks/driven-by.js +56 -0
- package/dist/hooks/hook-bus.d.ts +4 -0
- package/dist/hooks/hook-bus.js +18 -0
- package/dist/hooks/hook-commands.js +15 -4
- package/dist/hooks/tool-log.d.ts +9 -0
- package/dist/hooks/tool-log.js +29 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +80 -243
- package/dist/judgement/capsule/capsule-store.d.ts +2 -2
- package/dist/judgement/capsule/causal-summary.d.ts +15 -1
- package/dist/judgement/capsule/causal-summary.js +33 -0
- package/dist/judgement/runs/artifact/build-verification-run.d.ts +1 -1
- package/dist/judgement/runs/artifact/build-verification-run.js +25 -3
- package/dist/judgement/runs/artifact/gap-summary.d.ts +0 -18
- package/dist/judgement/runs/artifact/gap-summary.js +12 -3
- package/dist/judgement/runs/artifact/replay-mapping.d.ts +1 -1
- package/dist/judgement/runs/artifact/replay-mapping.js +37 -11
- package/dist/judgement/runs/artifact/run-store.d.ts +14 -2
- package/dist/judgement/runs/artifact/run-store.js +195 -3
- package/dist/judgement/runs/context-tools.js +59 -1
- package/dist/judgement/runs/default-run-id.d.ts +3 -0
- package/dist/judgement/runs/default-run-id.js +16 -0
- package/dist/judgement/runs/drive-run.d.ts +71 -1
- package/dist/judgement/runs/drive-run.js +317 -5
- package/dist/judgement/runs/repair-prompt.js +1 -1
- package/dist/judgement/runs/resume.d.ts +44 -0
- package/dist/judgement/runs/resume.js +137 -0
- package/dist/judgement/runs/reticle-runner.js +13 -3
- package/dist/judgement/runs/runner-port.d.ts +5 -1
- package/dist/judgement/runs/runner-port.js +8 -2
- package/dist/judgement/runs/verification-sync.d.ts +5 -2
- package/dist/judgement/runs/verification-sync.js +40 -18
- package/dist/language/flows/change/gate.d.ts +10 -0
- package/dist/language/flows/change/gate.js +22 -0
- package/dist/language/flows/decision.js +36 -1
- package/dist/language/flows/fields/flow-secret-field.d.ts +12 -0
- package/dist/language/flows/fields/flow-secret-field.js +25 -2
- package/dist/language/flows/flow-anchor.d.ts +61 -10
- package/dist/language/flows/flow-anchor.js +98 -6
- package/dist/language/flows/flow-cross-step.d.ts +15 -0
- package/dist/language/flows/flow-cross-step.js +21 -0
- package/dist/language/flows/flow-intent.d.ts +1 -0
- package/dist/language/flows/flow-journey.d.ts +6 -0
- package/dist/language/flows/flow-journey.js +20 -0
- package/dist/language/flows/flow-learning.d.ts +4 -0
- package/dist/language/flows/flow-learning.js +45 -14
- package/dist/language/flows/flow-mutate-tools.js +5 -3
- package/dist/language/flows/flow-replay-run.d.ts +23 -9
- package/dist/language/flows/flow-replay-run.js +115 -110
- package/dist/language/flows/flow-replay-types.d.ts +1 -1
- package/dist/language/flows/flow-replay.d.ts +40 -1
- package/dist/language/flows/flow-replay.js +110 -22
- package/dist/language/flows/flow-result.d.ts +22 -1
- package/dist/language/flows/flow-result.js +47 -2
- package/dist/language/flows/flow-scope.js +5 -1
- package/dist/language/flows/flow-step-runners.d.ts +22 -2
- package/dist/language/flows/flow-step-runners.js +247 -47
- package/dist/language/flows/flow-store-for-session.d.ts +2 -2
- package/dist/language/flows/flow-store-for-session.js +7 -3
- package/dist/language/flows/flow-tools.d.ts +10 -0
- package/dist/language/flows/flow-tools.js +112 -89
- package/dist/language/flows/flows.d.ts +16 -1
- package/dist/language/flows/flows.js +74 -12
- package/dist/language/flows/heal-run.js +6 -4
- package/dist/language/flows/narrow-write.d.ts +7 -0
- package/dist/language/flows/narrow-write.js +36 -1
- package/dist/language/flows/recording/flake.d.ts +2 -2
- package/dist/language/flows/recording/recording-backtrack.js +14 -1
- package/dist/language/flows/recording/tape/recordings.d.ts +58 -4
- package/dist/language/flows/recording/tape/recordings.js +95 -13
- package/dist/language/flows/replay-from-hud.d.ts +20 -0
- package/dist/language/flows/replay-from-hud.js +51 -0
- package/dist/language/flows/replay.d.ts +9 -5
- package/dist/language/flows/replay.js +56 -15
- package/dist/language/flows/single-replay.d.ts +7 -0
- package/dist/language/flows/single-replay.js +26 -0
- package/dist/language/flows/suite/suite-flakes.js +2 -0
- package/dist/language/flows/suite-selection.d.ts +2 -15
- package/dist/language/flows/suite-selection.js +4 -3
- package/dist/language/flows/verify-change-tools.d.ts +1 -0
- package/dist/language/flows/verify-change-tools.js +202 -191
- package/dist/launch-chromium.d.ts +27 -5
- package/dist/launch-chromium.js +38 -8
- package/dist/memory/cloud/cloud-config.d.ts +22 -1
- package/dist/memory/cloud/cloud-config.js +34 -5
- package/dist/memory/cloud/cloud-sync.d.ts +17 -14
- package/dist/memory/cloud/cloud-sync.js +15 -4
- package/dist/memory/cloud/harness-config.d.ts +75 -1
- package/dist/memory/cloud/harness-config.js +115 -24
- package/dist/memory/cloud/hud-notices-source.d.ts +21 -0
- package/dist/memory/cloud/hud-notices-source.js +128 -0
- package/dist/memory/cloud/memory-scope.d.ts +161 -0
- package/dist/memory/cloud/memory-scope.js +227 -0
- package/dist/memory/cloud/sync-cycle.d.ts +44 -7
- package/dist/memory/cloud/sync-cycle.js +129 -15
- package/dist/memory/cloud/sync-daemon.d.ts +11 -0
- package/dist/memory/cloud/sync-daemon.js +121 -9
- package/dist/memory/cloud/sync-disk.d.ts +1 -1
- package/dist/memory/cloud/sync-disk.js +31 -10
- package/dist/memory/cloud/sync-screenshots.d.ts +32 -0
- package/dist/memory/cloud/sync-screenshots.js +105 -0
- package/dist/memory/cloud/unsynced-roots.d.ts +47 -0
- package/dist/memory/cloud/unsynced-roots.js +166 -0
- package/dist/memory/impact/account-watch.d.ts +34 -0
- package/dist/memory/impact/account-watch.js +59 -0
- package/dist/memory/impact/impact-recorder.d.ts +8 -0
- package/dist/memory/impact/impact-recorder.js +12 -2
- package/dist/memory/impact/impact-store.d.ts +17 -4
- package/dist/memory/impact/impact-store.js +169 -63
- package/dist/memory/intent/inline-intent.d.ts +1 -0
- package/dist/memory/intent/intent-shard-store.js +16 -4
- package/dist/memory/intent/intent-shard.d.ts +14 -2
- package/dist/memory/intent/intent-store.d.ts +1 -0
- package/dist/memory/intent/intent-tools.js +122 -4
- package/dist/memory/intent/open-intents.d.ts +6 -0
- package/dist/memory/intent/open-intents.js +10 -1
- package/dist/memory/intent/settled-words.d.ts +24 -0
- package/dist/memory/intent/settled-words.js +130 -0
- package/dist/memory/journal/drive-flow.d.ts +16 -0
- package/dist/memory/journal/drive-flow.js +34 -2
- package/dist/memory/journal/drive-run-flush.d.ts +2 -0
- package/dist/memory/journal/drive-run-flush.js +20 -5
- package/dist/memory/journal/envelope.d.ts +8 -8
- package/dist/memory/journal/journal-recorder.js +52 -3
- package/dist/memory/journal/on-disk/retention.d.ts +8 -0
- package/dist/memory/journal/on-disk/retention.js +32 -2
- package/dist/memory/journal/on-disk/startup-maintenance.js +3 -1
- package/dist/memory/journal/on-disk/workspace-tiers.js +9 -4
- package/dist/memory/journal/session-end.d.ts +15 -1
- package/dist/memory/journal/session-end.js +42 -9
- package/dist/memory/project/artifact-root-resolver.d.ts +26 -1
- package/dist/memory/project/artifact-root-resolver.js +125 -16
- package/dist/memory/project/artifact-root.d.ts +46 -8
- package/dist/memory/project/artifact-root.js +89 -10
- package/dist/memory/project/dir/reticle-dir.d.ts +18 -2
- package/dist/memory/project/dir/reticle-dir.js +26 -3
- package/dist/memory/project/link-directory.d.ts +15 -0
- package/dist/memory/project/link-directory.js +44 -0
- package/dist/memory/project/project-tools.js +22 -3
- package/dist/memory/project/root-claims.d.ts +6 -0
- package/dist/memory/project/root-claims.js +39 -0
- package/dist/memory/project/session-root.d.ts +26 -1
- package/dist/memory/project/session-root.js +49 -5
- package/dist/memory/project/sync-status.d.ts +85 -0
- package/dist/memory/project/sync-status.js +224 -0
- package/dist/memory/recall/memory-tools.js +47 -2
- package/dist/memory/recall/platform-memory.d.ts +34 -0
- package/dist/memory/recall/platform-memory.js +139 -0
- package/dist/memory/recall/project-memory.d.ts +19 -0
- package/dist/memory/recall/project-memory.js +80 -13
- package/dist/portal/bridge/bridge.d.ts +9 -3
- package/dist/portal/bridge/bridge.js +82 -22
- package/dist/portal/bridge/harness-request.d.ts +23 -0
- package/dist/portal/bridge/harness-request.js +27 -0
- package/dist/portal/bridge/pairing-token.d.ts +9 -0
- package/dist/portal/bridge/pairing-token.js +17 -0
- package/dist/portal/bridge/wrong-path.d.ts +17 -0
- package/dist/portal/bridge/wrong-path.js +35 -0
- package/dist/portal/input/network-mock-tools.js +11 -2
- package/dist/portal/input/real-input.d.ts +83 -10
- package/dist/portal/input/real-input.js +218 -30
- package/dist/portal/input/viewport-tools.js +3 -3
- package/dist/portal/pool/browser-pool.d.ts +70 -9
- package/dist/portal/pool/browser-pool.js +190 -37
- package/dist/portal/pool/context-permissions.d.ts +33 -0
- package/dist/portal/pool/context-permissions.js +33 -0
- package/dist/portal/pool/lease-marker-stamp.d.ts +23 -0
- package/dist/portal/pool/lease-marker-stamp.js +49 -0
- package/dist/portal/pool/playwright-launcher.d.ts +35 -0
- package/dist/portal/pool/playwright-launcher.js +64 -3
- package/dist/portal/pool/pool-contract.d.ts +28 -5
- package/dist/portal/session/agent-link.d.ts +8 -0
- package/dist/portal/session/agent-link.js +17 -0
- package/dist/portal/session/command-payload.d.ts +8 -0
- package/dist/portal/session/command-payload.js +24 -0
- package/dist/portal/session/daemon-answers.d.ts +3 -3
- package/dist/portal/session/daemon-answers.js +4 -2
- package/dist/portal/session/dev-server/dev-command.d.ts +21 -0
- package/dist/portal/session/dev-server/dev-command.js +87 -12
- package/dist/portal/session/facts/departure-note.d.ts +22 -0
- package/dist/portal/session/facts/departure-note.js +47 -0
- package/dist/portal/session/facts/observed-state.d.ts +16 -18
- package/dist/portal/session/facts/observed-state.js +46 -3
- package/dist/portal/session/facts/session-replaced.d.ts +5 -0
- package/dist/portal/session/facts/session-replaced.js +5 -0
- package/dist/portal/session/first-run-wiring.d.ts +42 -0
- package/dist/portal/session/first-run-wiring.js +132 -0
- package/dist/portal/session/human/live-control.d.ts +9 -2
- package/dist/portal/session/human/live-control.js +12 -3
- package/dist/portal/session/human/notes-ledger.d.ts +20 -0
- package/dist/portal/session/human/notes-ledger.js +55 -0
- package/dist/portal/session/human/review-store.d.ts +12 -0
- package/dist/portal/session/human/review-store.js +18 -10
- package/dist/portal/session/live-control-tools.d.ts +0 -13
- package/dist/portal/session/live-control-tools.js +107 -13
- package/dist/portal/session/narration-args.d.ts +5 -0
- package/dist/portal/session/narration-args.js +17 -0
- package/dist/portal/session/no-session-diagnosis.d.ts +8 -1
- package/dist/portal/session/no-session-diagnosis.js +46 -9
- package/dist/portal/session/no-session-next-action.d.ts +31 -0
- package/dist/portal/session/no-session-next-action.js +159 -60
- package/dist/portal/session/no-session-watch.d.ts +14 -1
- package/dist/portal/session/no-session-watch.js +227 -17
- package/dist/portal/session/presence/session-lease.js +1 -1
- package/dist/portal/session/presence/session-mirror.js +3 -0
- package/dist/portal/session/recorded-gaps.d.ts +97 -0
- package/dist/portal/session/recorded-gaps.js +251 -0
- package/dist/portal/session/serving-directory.d.ts +27 -0
- package/dist/portal/session/serving-directory.js +45 -0
- package/dist/portal/session/session-health.d.ts +18 -0
- package/dist/portal/session/session-health.js +9 -1
- package/dist/portal/session/session-info.d.ts +8 -1
- package/dist/portal/session/session-info.js +8 -1
- package/dist/portal/session/session-manager.d.ts +39 -0
- package/dist/portal/session/session-manager.js +98 -11
- package/dist/portal/session/session-reaper.js +4 -1
- package/dist/portal/session/session-successor.d.ts +13 -0
- package/dist/portal/session/session-successor.js +1 -1
- package/dist/portal/session/session-tools.js +26 -3
- package/dist/portal/session/session.d.ts +22 -30
- package/dist/portal/session/session.js +81 -79
- package/dist/portal/session/timing/command-timeout.js +25 -1
- package/dist/portal/session/timing/wall-clock.d.ts +1 -1
- package/dist/portal/session/timing/wall-clock.js +1 -1
- package/dist/portal/session/zero-install-first-call.d.ts +31 -0
- package/dist/portal/session/zero-install-first-call.js +88 -0
- package/dist/start-options.d.ts +12 -0
- package/dist/start-wiring.d.ts +63 -0
- package/dist/start-wiring.js +169 -0
- package/dist/status-payload.d.ts +23 -1
- package/dist/status-payload.js +36 -1
- package/dist/surface/http-server.js +18 -2
- package/dist/surface/mcp/attach-memory.d.ts +1 -0
- package/dist/surface/mcp/attach-memory.js +12 -1
- package/dist/surface/mcp/mcp-proxy.d.ts +9 -0
- package/dist/surface/mcp/mcp-proxy.js +65 -13
- package/dist/surface/mcp/mcp.d.ts +34 -6
- package/dist/surface/mcp/mcp.js +61 -17
- package/dist/surface/mcp/proxy/drive-calls.d.ts +10 -0
- package/dist/surface/mcp/proxy/drive-calls.js +27 -0
- package/dist/surface/mcp/proxy/mcp-post-transport.js +5 -0
- package/dist/surface/mcp/server-instructions.d.ts +4 -2
- package/dist/surface/mcp/server-instructions.js +32 -14
- package/dist/surface/mcp/shared-params.js +2 -2
- package/dist/surface/mcp/surface-vocabulary.d.ts +2 -0
- package/dist/surface/mcp/surface-vocabulary.js +1 -0
- package/dist/surface/tools/account-tool.d.ts +22 -0
- package/dist/surface/tools/account-tool.js +157 -0
- package/dist/surface/tools/act/act-danger.d.ts +11 -0
- package/dist/surface/tools/act/act-danger.js +38 -1
- package/dist/surface/tools/act/act-observation.d.ts +33 -0
- package/dist/surface/tools/act/act-observation.js +57 -0
- package/dist/surface/tools/act/act-preflight.js +25 -2
- package/dist/surface/tools/act/act-target.js +8 -3
- package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +8 -0
- package/dist/surface/tools/act/navigation/navigate-arrival.js +56 -2
- package/dist/surface/tools/act/resolve-target.d.ts +1 -1
- package/dist/surface/tools/act/resolve-target.js +18 -3
- package/dist/surface/tools/act/screen-request.d.ts +34 -0
- package/dist/surface/tools/act/screen-request.js +113 -0
- package/dist/surface/tools/act/sequence-grade.d.ts +8 -0
- package/dist/surface/tools/act/sequence-grade.js +13 -2
- package/dist/surface/tools/act/settle-in-flight.js +25 -3
- package/dist/surface/tools/act-sequence-tool.js +138 -29
- package/dist/surface/tools/act-tools.d.ts +0 -9
- package/dist/surface/tools/act-tools.js +71 -41
- package/dist/surface/tools/agent/app-notes-learning.d.ts +7 -0
- package/dist/surface/tools/agent/app-notes-learning.js +80 -0
- package/dist/surface/tools/agent/app-notes.d.ts +4 -0
- package/dist/surface/tools/agent/app-notes.js +48 -0
- package/dist/surface/tools/agent/build-staleness.d.ts +7 -0
- package/dist/surface/tools/agent/build-staleness.js +62 -0
- package/dist/surface/tools/agent/compact-envelope.d.ts +80 -0
- package/dist/surface/tools/agent/compact-envelope.js +374 -0
- package/dist/surface/tools/agent/for-the-agent.d.ts +12 -0
- package/dist/surface/tools/agent/for-the-agent.js +44 -0
- package/dist/surface/tools/agent/notices.d.ts +50 -0
- package/dist/surface/tools/agent/notices.js +152 -0
- package/dist/surface/tools/agent/reteach.d.ts +11 -0
- package/dist/surface/tools/agent/reteach.js +50 -0
- package/dist/surface/tools/args/alias-args.d.ts +5 -0
- package/dist/surface/tools/args/alias-args.js +10 -0
- package/dist/surface/tools/args/confirm-dangerous-arg.d.ts +6 -0
- package/dist/surface/tools/args/confirm-dangerous-arg.js +6 -0
- package/dist/surface/tools/assert/assert-source.d.ts +15 -0
- package/dist/surface/tools/assert/assert-source.js +40 -0
- package/dist/surface/tools/assert/assert-verdict.d.ts +1 -1
- package/dist/surface/tools/assert/assert-verdict.js +42 -17
- package/dist/surface/tools/browser-tools.js +51 -2
- package/dist/surface/tools/chat-drives.d.ts +101 -0
- package/dist/surface/tools/chat-drives.js +409 -0
- package/dist/surface/tools/coverage-tools.d.ts +2 -10
- package/dist/surface/tools/coverage-tools.js +2 -53
- package/dist/surface/tools/dynamic-tools.js +29 -1
- package/dist/surface/tools/empty-session-list.d.ts +51 -0
- package/dist/surface/tools/empty-session-list.js +120 -0
- package/dist/surface/tools/error-recovery.d.ts +14 -0
- package/dist/surface/tools/error-recovery.js +105 -8
- package/dist/surface/tools/explore-tools.d.ts +31 -1
- package/dist/surface/tools/explore-tools.js +438 -66
- package/dist/surface/tools/feedback-tools.d.ts +2 -3
- package/dist/surface/tools/feedback-tools.js +18 -3
- package/dist/surface/tools/gap-novelty.d.ts +3 -1
- package/dist/surface/tools/gap-novelty.js +8 -1
- package/dist/surface/tools/harness-explore.d.ts +118 -57
- package/dist/surface/tools/harness-explore.js +344 -292
- package/dist/surface/tools/harness-gate.d.ts +88 -0
- package/dist/surface/tools/harness-gate.js +235 -0
- package/dist/surface/tools/harness-hunt.d.ts +43 -0
- package/dist/surface/tools/harness-hunt.js +215 -0
- package/dist/surface/tools/harness-plan.d.ts +17 -0
- package/dist/surface/tools/harness-plan.js +38 -0
- package/dist/surface/tools/harness-script.d.ts +30 -0
- package/dist/surface/tools/harness-script.js +560 -0
- package/dist/surface/tools/harness-tab-guard.d.ts +5 -0
- package/dist/surface/tools/harness-tab-guard.js +27 -0
- package/dist/surface/tools/harness-toolset.d.ts +22 -1
- package/dist/surface/tools/harness-toolset.js +101 -7
- package/dist/surface/tools/human-notes.d.ts +16 -0
- package/dist/surface/tools/human-notes.js +27 -0
- package/dist/surface/tools/invoke-tool.d.ts +5 -2
- package/dist/surface/tools/invoke-tool.js +263 -85
- package/dist/surface/tools/lease-hint.js +26 -5
- package/dist/surface/tools/lease-permissions.d.ts +33 -0
- package/dist/surface/tools/lease-permissions.js +73 -0
- package/dist/surface/tools/lease-readiness.d.ts +38 -0
- package/dist/surface/tools/lease-readiness.js +57 -0
- package/dist/surface/tools/lease-seed.d.ts +49 -0
- package/dist/surface/tools/lease-seed.js +167 -0
- package/dist/surface/tools/lease-tools.d.ts +13 -24
- package/dist/surface/tools/lease-tools.js +146 -197
- package/dist/surface/tools/live-call-text.js +4 -4
- package/dist/surface/tools/merge-tools.js +42 -2
- package/dist/surface/tools/merged-name-redirect.js +4 -0
- package/dist/surface/tools/next-step.d.ts +29 -0
- package/dist/surface/tools/next-step.js +214 -0
- package/dist/surface/tools/observe-tools.js +45 -9
- package/dist/surface/tools/platform-moment.d.ts +72 -0
- package/dist/surface/tools/platform-moment.js +296 -0
- package/dist/surface/tools/query-hint-schema.d.ts +7 -0
- package/dist/surface/tools/query-hint-schema.js +10 -0
- package/dist/surface/tools/read-tools.js +71 -14
- package/dist/surface/tools/real-input-attempt.js +96 -13
- package/dist/surface/tools/reticle-result.d.ts +120 -0
- package/dist/surface/tools/reticle-result.js +364 -0
- package/dist/surface/tools/tool-kit.d.ts +83 -3
- package/dist/surface/tools/tool-kit.js +77 -7
- package/dist/surface/tools/tools.js +43 -59
- package/dist/telemetry/account-envelope.d.ts +7 -0
- package/dist/telemetry/account-envelope.js +61 -0
- package/dist/telemetry/agent-client.d.ts +15 -0
- package/dist/telemetry/agent-client.js +57 -0
- package/dist/telemetry/app-instrumented.js +9 -2
- package/dist/telemetry/argument-shape.d.ts +7 -0
- package/dist/telemetry/argument-shape.js +86 -1
- package/dist/telemetry/automation-hint.d.ts +2 -3
- package/dist/telemetry/automation-hint.js +33 -8
- package/dist/telemetry/cli-telemetry.js +7 -2
- package/dist/telemetry/daemon-telemetry.js +3 -0
- package/dist/telemetry/error-fingerprint.d.ts +10 -1
- package/dist/telemetry/error-fingerprint.js +61 -5
- package/dist/telemetry/feedback-cli.d.ts +0 -13
- package/dist/telemetry/feedback-cli.js +0 -77
- package/dist/telemetry/feedback.d.ts +13 -0
- package/dist/telemetry/feedback.js +183 -17
- package/dist/telemetry/harness-run.d.ts +18 -0
- package/dist/telemetry/harness-run.js +80 -0
- package/dist/telemetry/hud-events.d.ts +16 -0
- package/dist/telemetry/hud-events.js +27 -0
- package/dist/telemetry/hud-metrics.d.ts +29 -6
- package/dist/telemetry/hud-metrics.js +116 -25
- package/dist/telemetry/init-telemetry.js +2 -2
- package/dist/telemetry/install-source.d.ts +13 -25
- package/dist/telemetry/install-source.js +44 -3
- package/dist/telemetry/mcp-connection.d.ts +0 -14
- package/dist/telemetry/mcp-connection.js +5 -1
- package/dist/telemetry/onboarding-firsts.d.ts +32 -0
- package/dist/telemetry/onboarding-firsts.js +81 -6
- package/dist/telemetry/platform-linked.d.ts +5 -0
- package/dist/telemetry/platform-linked.js +32 -0
- package/dist/telemetry/project-profile.js +5 -3
- package/dist/telemetry/proxy-telemetry.js +4 -1
- package/dist/telemetry/session-metrics.d.ts +15 -4
- package/dist/telemetry/session-metrics.js +88 -52
- package/dist/telemetry/telemetry.d.ts +38 -2
- package/dist/telemetry/telemetry.js +144 -34
- package/dist/telemetry/verification-of.d.ts +3 -1
- package/dist/telemetry/verification-of.js +13 -4
- package/dist/wire-journal.d.ts +2 -2
- package/dist/wire-journal.js +20 -6
- package/docs/README.md +3 -3
- package/docs/actions.mdx +6 -3
- package/docs/adapters.md +1 -1
- package/docs/agent-cheatsheet.md +25 -28
- package/docs/architecture.md +5 -5
- package/docs/autodrive.md +33 -28
- package/docs/benchmarks.md +5 -5
- package/docs/best-practices.mdx +27 -9
- package/docs/capabilities.mdx +14 -16
- package/docs/cli/affected.mdx +1 -1
- package/docs/cli/cloud.mdx +54 -75
- package/docs/cli/doctor.mdx +14 -3
- package/docs/cli/drive.mdx +20 -14
- package/docs/cli/feedback.mdx +3 -3
- package/docs/cli/gate.mdx +7 -2
- package/docs/cli/help.mdx +50 -55
- package/docs/cli/init.mdx +43 -28
- package/docs/cli/license.mdx +12 -8
- package/docs/cli/mcp.mdx +4 -4
- package/docs/cli/open.mdx +3 -3
- package/docs/cli/report.mdx +4 -2
- package/docs/cli/restart.mdx +2 -2
- package/docs/cli/rollback.mdx +14 -8
- package/docs/cli/serve.mdx +4 -4
- package/docs/cli/setup.mdx +23 -0
- package/docs/cli/status.mdx +18 -5
- package/docs/cli/stop.mdx +67 -8
- package/docs/cli/try.mdx +62 -0
- package/docs/cli/update.mdx +4 -3
- package/docs/cli/verify.mdx +17 -6
- package/docs/cli/version.mdx +5 -4
- package/docs/cli.mdx +111 -42
- package/docs/debugging.md +3 -3
- package/docs/deploy-checks.md +1 -1
- package/docs/desktop.mdx +9 -3
- package/docs/enterprise.md +11 -10
- package/docs/environment.mdx +7 -8
- package/docs/faq.mdx +3 -3
- package/docs/first-drive.md +5 -4
- package/docs/flows.md +35 -27
- package/docs/for-agents.md +4 -5
- package/docs/frameworks.mdx +32 -21
- package/docs/getting-started.md +65 -61
- package/docs/human-control.md +16 -16
- package/docs/index.mdx +15 -42
- package/docs/install-agentic.mdx +22 -37
- package/docs/install-manual.mdx +23 -13
- package/docs/instrumentation.mdx +5 -3
- package/docs/integration-patterns.md +7 -7
- package/docs/license-activation.mdx +1 -1
- package/docs/multi-agent-testing.md +24 -6
- package/docs/packages/babel-plugin.mdx +4 -2
- package/docs/packages/browser.mdx +16 -10
- package/docs/packages/core.mdx +12 -5
- package/docs/packages/electron.mdx +3 -2
- package/docs/packages/engine.mdx +1 -1
- package/docs/packages/eslint-plugin.mdx +18 -12
- package/docs/packages/next.mdx +8 -7
- package/docs/packages/open-verification.mdx +1 -1
- package/docs/packages/server.mdx +5 -5
- package/docs/packages/tauri.mdx +9 -9
- package/docs/packages/test.mdx +4 -10
- package/docs/packages/vite-plugin.mdx +32 -4
- package/docs/packages.mdx +11 -15
- package/docs/platform-integration.md +6 -5
- package/docs/predicates.mdx +40 -24
- package/docs/quickstart.mdx +69 -30
- package/docs/required-checks.md +8 -7
- package/docs/reticle-manual.md +15 -5
- package/docs/skill-file.mdx +17 -79
- package/docs/skill-setup.md +9 -9
- package/docs/skill.md +200 -0
- package/docs/system-map.md +7 -7
- package/docs/telemetry.md +23 -25
- package/docs/testing.md +4 -4
- package/docs/token-efficiency.md +12 -12
- package/docs/tools/act-and-wait.mdx +9 -2
- package/docs/tools/act-sequence.mdx +6 -7
- package/docs/tools/act.mdx +2 -2
- package/docs/tools/assert.mdx +18 -17
- package/docs/tools/console.mdx +9 -9
- package/docs/tools/inspect.mdx +16 -7
- package/docs/tools/look.mdx +24 -0
- package/docs/tools/navigate.mdx +5 -3
- package/docs/tools/network.mdx +2 -2
- package/docs/tools/observe.mdx +6 -6
- package/docs/tools/overview.mdx +34 -33
- package/docs/tools/query.mdx +5 -5
- package/docs/tools/session-and-feedback.mdx +22 -13
- package/docs/tools/sessions.mdx +8 -8
- package/docs/tools/snapshot.mdx +6 -5
- package/docs/tools/state.mdx +9 -9
- package/docs/tools/tools-and-run.mdx +26 -24
- package/docs/tools/verify.mdx +28 -0
- package/docs/tools/wait-for.mdx +8 -4
- package/docs/troubleshooting.mdx +21 -6
- package/docs/usage.md +55 -46
- package/docs/use-cases.mdx +3 -3
- package/docs/vs-chrome-devtools-mcp.mdx +9 -6
- package/docs/vs-playwright-mcp.mdx +3 -1
- package/docs/what-is-recorded.md +17 -5
- package/docs/what-is-reticle.mdx +5 -3
- package/docs/why-reticle.mdx +1 -1
- package/package.json +9 -12
- package/dist/command/cli/demo/demo-page.d.ts +0 -78
- package/dist/command/cli/demo/demo-page.js +0 -241
- package/dist/command/cli/demo/demo-run.d.ts +0 -38
- package/dist/command/cli/demo/demo-run.js +0 -138
- package/dist/features/harness/driver.d.ts +0 -50
- package/dist/features/harness/driver.js +0 -236
- package/dist/features/harness/jev-driver.d.ts +0 -188
- package/dist/features/harness/jev-driver.js +0 -678
- package/dist/features/harness/openai-driver.d.ts +0 -58
- package/dist/features/harness/openai-driver.js +0 -206
- package/dist/judgement/hunt/hunt-report.d.ts +0 -49
- package/dist/judgement/hunt/hunt-report.js +0 -84
- package/dist/language/flows/buddy-status.d.ts +0 -25
- package/dist/language/flows/buddy-status.js +0 -32
- package/dist/language/flows/change/watch-batcher.d.ts +0 -18
- package/dist/language/flows/change/watch-batcher.js +0 -19
- package/dist/memory/cloud/harness-offer.d.ts +0 -44
- package/dist/memory/cloud/harness-offer.js +0 -145
- package/dist/memory/project/dir/fill-value-store.d.ts +0 -32
- package/dist/memory/project/dir/fill-value-store.js +0 -88
- package/dist/surface/tools/feature-capture.d.ts +0 -151
- package/dist/surface/tools/feature-capture.js +0 -235
- package/dist/surface/tools/tool-hit-rate.d.ts +0 -87
- package/dist/surface/tools/tool-hit-rate.js +0 -90
- package/dist/telemetry/harness-drive.d.ts +0 -4
- package/dist/telemetry/harness-drive.js +0 -35
- package/dist/telemetry/identify.d.ts +0 -22
- package/dist/telemetry/identify.js +0 -73
- package/docs/cli/capsules.mdx +0 -70
- package/docs/cli/hunt.mdx +0 -73
- package/docs/cli/identify.mdx +0 -76
- package/docs/cli/kill.mdx +0 -91
- package/docs/cli/watch.mdx +0 -62
- package/docs/local-registry.md +0 -143
package/docs/cli/init.mdx
CHANGED
|
@@ -7,7 +7,10 @@ icon: wand-magic-sparkles
|
|
|
7
7
|
`reticle init` is the one command a person runs before anything else. It inspects the directory it is standing in, works out the framework, and writes every piece of wiring Reticle needs: the MCP server registration, the agent rule files, the dev dependencies, `.reticle.json`, and the bundler plugin.
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npx @reticlehq/server init [--
|
|
10
|
+
npx @reticlehq/server init [--env KEY=VALUE]... [--app <dir>] [--license <key>] [--json]
|
|
11
|
+
[--files-only] [--relaunch] [--no-open] [--no-agents] [--url <app url>]
|
|
12
|
+
[--timeout S] [--dry-run] [--hooks] [--port N] [--no-mcp] [--no-install]
|
|
13
|
+
[--start] [--capture-bodies] [--no-first-run]
|
|
11
14
|
```
|
|
12
15
|
|
|
13
16
|
## Flags
|
|
@@ -17,9 +20,21 @@ npx @reticlehq/server init [--dry-run] [--port N] [--no-mcp] [--no-install] [--a
|
|
|
17
20
|
| `--dry-run` | boolean | `false` | Print the full plan and write nothing |
|
|
18
21
|
| `--port N` | number | unset (resolves to `4400`) | Bridge port to write into the config |
|
|
19
22
|
| `--no-mcp` | boolean | `false` (MCP is registered) | Skip the MCP registration **and** the agent rule files (`CLAUDE.md`, `AGENTS.md`, `.cursor`) and the `/reticle` command |
|
|
20
|
-
| `--no-install` | boolean | `false` (deps are installed) | Do not run the install. The step becomes `[
|
|
21
|
-
| `--app <dir>` | string | unset | Pick which app to wire in a monorepo, without changing directory |
|
|
23
|
+
| `--no-install` | boolean | `false` (deps are installed) | Do not run the install. The step becomes `[–]` ("skipped (--no-install); install them yourself: …") with the install command for you to run by hand, rather than vanishing from the plan |
|
|
24
|
+
| `--app <dir>` | string | unset | Pick which app to wire in a monorepo, without changing directory. On its own it implies `--files-only` |
|
|
25
|
+
| `--start` | boolean | `false` | With `--app`, also boot the app the way a plain `init` does |
|
|
26
|
+
| `--capture-bodies` | boolean | `false` | Write `captureNetworkBodies: true` into the Vite plugin call, so request and response bodies are captured |
|
|
27
|
+
| `--no-first-run` | boolean | `false` | Connect and stop, without the coverage summary |
|
|
22
28
|
| `--hooks` | boolean | `false` | Also add a print-only Stop hook to `.claude/settings.json`, merged into what is there. When the agent stops without a claim that held, it prints one line; it never blocks. See [`reticle report`](/cli/report) |
|
|
29
|
+
| `--env KEY=VALUE` | string, repeatable | none | What the app needs to reach a usable state: a key from `.env.example`, a mock backend, a variable that skips an auth wall. A value may contain spaces and `=` |
|
|
30
|
+
| `--license <key>` | string | unset | Write an enterprise license key to `.env` and keep `.env` out of git |
|
|
31
|
+
| `--json` | boolean | `false` | Put the result on stdout as one object, for an agent to read |
|
|
32
|
+
| `--files-only` | boolean | `false` | Write the files, register the MCP server and pre-approve the tools, then stop: no dev server, no browser. Also the upgrade path for an existing install |
|
|
33
|
+
| `--relaunch` | boolean | `false` | Print the exact command that restarts this agent conversation with the `reticle_*` tools loaded. Refuses when the session has no transcript behind it. Works with `--files-only` |
|
|
34
|
+
| `--no-open` | boolean | `false` | Do not open a browser window. The connect is checked in a hidden tab instead |
|
|
35
|
+
| `--no-agents` | boolean | `false` | Do not register the MCP server with the other agents on this machine |
|
|
36
|
+
| `--url <app url>` | string | unset | The app is already running at this URL: use it instead of starting a dev server |
|
|
37
|
+
| `--timeout S` | seconds | the framework's own budget | How long to wait for the dev server and for a session to connect |
|
|
23
38
|
| `--yes` | boolean | `false` | Accepted for scripting. `init` has no interactive prompts today, so it is a no-op |
|
|
24
39
|
|
|
25
40
|
<Warning>
|
|
@@ -29,7 +44,7 @@ npx @reticlehq/server init [--dry-run] [--port N] [--no-mcp] [--no-install] [--a
|
|
|
29
44
|
|
|
30
45
|
## What it prints
|
|
31
46
|
|
|
32
|
-
A plan, one line per step, each with a status mark: `✓` written, `·` already in place or left alone, `⚠` needs a hand, `–` deliberately skipped by a flag. Captured from a real `--dry-run` inside `apps/bench-app`:
|
|
47
|
+
A plan, one line per step, each with a status mark: `✓` written, `·` already in place or left alone, `⚠` needs a hand, `–` deliberately skipped by a flag, `ℹ` done, but incomplete in a way that matters. Captured from a real `--dry-run` inside `apps/bench-app`:
|
|
33
48
|
|
|
34
49
|
```
|
|
35
50
|
reticle init (dry run, no files written)
|
|
@@ -37,8 +52,8 @@ reticle init (dry run, no files written)
|
|
|
37
52
|
|
|
38
53
|
[·] MCP server (Claude, global) → global (claude user scope)
|
|
39
54
|
reticle already registered (install once, used by every project)
|
|
40
|
-
[·] MCP server (Cursor
|
|
41
|
-
reticle already
|
|
55
|
+
[·] MCP server (Cursor) → /Users/you/.cursor/mcp.json
|
|
56
|
+
reticle already registered with Cursor
|
|
42
57
|
[⚠] MCP server (Codex CLI) → /Users/you/.codex/config.toml
|
|
43
58
|
add this to /Users/you/.codex/config.toml by hand:
|
|
44
59
|
[mcp_servers.reticle]
|
|
@@ -54,7 +69,7 @@ reticle init (dry run, no files written)
|
|
|
54
69
|
[✓] The /reticle command → .claude/commands/reticle.md
|
|
55
70
|
type /reticle to verify one flow in the browser
|
|
56
71
|
[✓] Install dependencies → package.json
|
|
57
|
-
pnpm add -D @reticlehq/react@
|
|
72
|
+
pnpm add -D @reticlehq/react@3.7.0 @reticlehq/vite-plugin@3.7.0
|
|
58
73
|
[✓] Reticle config → .reticle.json
|
|
59
74
|
write project config (framework + port)
|
|
60
75
|
[✓] Vite plugin → vite.config.ts
|
|
@@ -62,9 +77,11 @@ reticle init (dry run, no files written)
|
|
|
62
77
|
[·] Capabilities + store → src/reticle-dev.ts
|
|
63
78
|
file exists, left alone, it is yours to edit
|
|
64
79
|
|
|
65
|
-
Restart `vite
|
|
80
|
+
Restart your dev server (`vite`).
|
|
66
81
|
```
|
|
67
82
|
|
|
83
|
+
The install line pins the packages to the version of Reticle you are running. When the `codex` binary is on your PATH, the Codex row is not a hand edit: it reads `[✓] MCP server (Codex CLI)` and registers through `codex mcp add reticle -- npx @reticlehq/server mcp`.
|
|
84
|
+
|
|
68
85
|
Below the plan it also prints the two things that actually finish the install: restart your agent so it re-reads its MCP server list, then run `npx @reticlehq/server status` to confirm the app connected.
|
|
69
86
|
|
|
70
87
|
With `--no-mcp`, the whole MCP and rules group collapses into one skipped line:
|
|
@@ -74,24 +91,22 @@ With `--no-mcp`, the whole MCP and rules group collapses into one skipped line:
|
|
|
74
91
|
--no-mcp ... also skips the agent rule files (CLAUDE.md / AGENTS.md / .cursor) and the /reticle command
|
|
75
92
|
```
|
|
76
93
|
|
|
77
|
-
Run from a workspace root with several apps, it refuses to guess,
|
|
94
|
+
Run from a workspace root with several apps, it refuses to guess, prints a command for each one, and exits `1`:
|
|
78
95
|
|
|
79
96
|
```
|
|
80
|
-
Several apps found in this workspace. Re-run `reticle init`
|
|
81
|
-
adapters/build/next
|
|
82
|
-
adapters/build/vite
|
|
83
|
-
apps/atlas
|
|
84
|
-
apps/bench-app
|
|
85
|
-
apps/electron-smoke
|
|
86
|
-
apps/large-dom-bench
|
|
87
|
-
apps/next-smoke
|
|
88
|
-
apps/tauri-smoke
|
|
89
|
-
apps/vibe-builder-demo
|
|
90
|
-
|
|
91
|
-
Or name one without changing directory: reticle init --app apps/next-smoke
|
|
97
|
+
Several apps found in this workspace. Re-run `reticle init` for the one you want:
|
|
98
|
+
reticle init --app adapters/build/next
|
|
99
|
+
reticle init --app adapters/build/vite
|
|
100
|
+
reticle init --app apps/atlas
|
|
101
|
+
reticle init --app apps/bench-app
|
|
102
|
+
reticle init --app apps/electron-smoke
|
|
103
|
+
reticle init --app apps/large-dom-bench
|
|
104
|
+
reticle init --app apps/next-smoke
|
|
105
|
+
reticle init --app apps/tauri-smoke
|
|
106
|
+
reticle init --app apps/vibe-builder-demo
|
|
92
107
|
```
|
|
93
108
|
|
|
94
|
-
Given `--app`, it says which directory it moved to before printing the plan:
|
|
109
|
+
Given `--app`, it writes that app's files and starts nothing: no daemon and no dev server, since a monorepo app's dev server is often run from the root. Add `--start` to boot it the way a plain `init` does. It says which directory it moved to before printing the plan:
|
|
95
110
|
|
|
96
111
|
```
|
|
97
112
|
No app in this directory ... wiring apps/bench-app instead.
|
|
@@ -101,12 +116,12 @@ In the two captures above, the punctuation that separates the two halves of the
|
|
|
101
116
|
|
|
102
117
|
## Exit codes
|
|
103
118
|
|
|
104
|
-
| Code | Meaning
|
|
105
|
-
|
|
|
106
|
-
| `0`
|
|
107
|
-
| `1`
|
|
119
|
+
| Code | Meaning |
|
|
120
|
+
| --- | --- |
|
|
121
|
+
| `0` | The app connected. Steps marked `⚠` still need a hand, and do not change the code |
|
|
122
|
+
| `1` | No session connected, init failed, an unknown flag was passed, or several apps were found and none was chosen |
|
|
108
123
|
|
|
109
|
-
An unknown flag is rejected by name: `reticle init --bogus` prints `unknown argument '--bogus'`, then the
|
|
124
|
+
An unknown flag is rejected by name: `reticle init --bogus` prints `unknown argument '--bogus'`, then the short usage (`reticle --help`), and exits `1`.
|
|
110
125
|
|
|
111
126
|
## Worked example
|
|
112
127
|
|
|
@@ -118,5 +133,5 @@ npx @reticlehq/server status # confirm the app actually connected
|
|
|
118
133
|
```
|
|
119
134
|
|
|
120
135
|
<Card title="The install, step by step" icon="wand-magic-sparkles" href="/install-agentic">
|
|
121
|
-
What each step writes and how to read the
|
|
136
|
+
What each step writes and how to read the five status marks.
|
|
122
137
|
</Card>
|
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
|
|
@@ -45,7 +53,11 @@ A session's parenthesised notes are the ones that explain an answer you would ot
|
|
|
45
53
|
|
|
46
54
|
### `--json`
|
|
47
55
|
|
|
48
|
-
The same facts as one
|
|
56
|
+
The same facts as one JSON line on stdout, so a caller can pipe it to a parser:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx @reticlehq/server status --json | jq '.running, .sessionCount'
|
|
60
|
+
```
|
|
49
61
|
|
|
50
62
|
```json
|
|
51
63
|
{
|
|
@@ -67,6 +79,7 @@ It is one line in the terminal, pretty-printed here, with `why` trimmed at the e
|
|
|
67
79
|
"sessionId": "s223e0fad-e012-43f9-a23d-6d585470c90d",
|
|
68
80
|
"url": "http://localhost:4310/",
|
|
69
81
|
"throttled": false,
|
|
82
|
+
"hidden": false,
|
|
70
83
|
"stale": false,
|
|
71
84
|
"pendingMarks": 0
|
|
72
85
|
}
|
|
@@ -75,9 +88,9 @@ It is one line in the terminal, pretty-printed here, with `why` trimmed at the e
|
|
|
75
88
|
| Field | Meaning |
|
|
76
89
|
| --- | --- |
|
|
77
90
|
| `running` | Whether a usable daemon owns the port |
|
|
78
|
-
| `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 |
|
|
79
92
|
| `pid` | The daemon process |
|
|
80
|
-
| `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` |
|
|
81
94
|
| `why` | Present when zero sessions connected. Names the two likely causes and refuses to assert either |
|
|
82
95
|
| `updateAvailable` | Present when a newer server version is on the registry |
|
|
83
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 |
|