@reticlehq/server 3.7.0 → 3.8.1
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 +59 -68
- package/bin/reticle.js +9 -2
- package/dist/command/cli/adhoc-suite.js +1 -1
- package/dist/command/cli/adhoc-verdict.d.ts +12 -0
- package/dist/command/cli/adhoc-verdict.js +62 -4
- package/dist/command/cli/answers/gate-hook-message.d.ts +2 -0
- package/dist/command/cli/answers/gate-hook-message.js +5 -1
- package/dist/command/cli/auth/cloud-session.d.ts +11 -19
- package/dist/command/cli/auth/cloud-session.js +23 -0
- package/dist/command/cli/auth/device-flow.d.ts +3 -37
- package/dist/command/cli/cli-doctor.js +66 -21
- package/dist/command/cli/cli-flow-commands.js +53 -11
- package/dist/command/cli/cli-kill.d.ts +8 -0
- package/dist/command/cli/cli-kill.js +43 -3
- package/dist/command/cli/cli-parse-feedback.d.ts +4 -0
- package/dist/command/cli/cli-parse-feedback.js +13 -1
- package/dist/command/cli/cli-parse-grammar.d.ts +1 -2
- package/dist/command/cli/cli-parse-grammar.js +1 -6
- package/dist/command/cli/cli-parse-serve.d.ts +24 -0
- package/dist/command/cli/cli-parse-serve.js +124 -0
- package/dist/command/cli/cli-parse.d.ts +12 -11
- package/dist/command/cli/cli-parse.js +100 -123
- package/dist/command/cli/cli-usage.d.ts +0 -11
- package/dist/command/cli/cli-usage.js +43 -16
- package/dist/command/cli/cli-verify.d.ts +1 -1
- package/dist/command/cli/cli-verify.js +29 -14
- package/dist/command/cli/cloud-cli.js +27 -9
- package/dist/command/cli/cloud-kit.js +3 -3
- package/dist/command/cli/cloud-link.d.ts +1 -20
- package/dist/command/cli/cloud-link.js +2 -0
- package/dist/command/cli/cloud-login.d.ts +6 -2
- package/dist/command/cli/cloud-login.js +13 -41
- package/dist/command/cli/config/checkout.d.ts +10 -0
- package/dist/command/cli/config/checkout.js +78 -0
- package/dist/command/cli/doctor/doctor-agent-link.d.ts +23 -0
- package/dist/command/cli/doctor/doctor-agent-link.js +28 -0
- package/dist/command/cli/doctor/doctor-coverage-line.js +1 -7
- package/dist/command/cli/doctor/doctor-rows.d.ts +4 -0
- package/dist/command/cli/doctor/doctor-rows.js +4 -0
- package/dist/command/cli/drive/drive-attach.d.ts +5 -0
- package/dist/command/cli/drive/drive-attach.js +21 -1
- package/dist/command/cli/hook/codex-transcript.d.ts +20 -0
- package/dist/command/cli/hook/codex-transcript.js +224 -0
- package/dist/command/cli/hook/episode-structure.d.ts +24 -0
- package/dist/command/cli/hook/episode-structure.js +138 -0
- package/dist/command/cli/hook/hook-command.d.ts +9 -0
- package/dist/command/cli/hook/hook-command.js +211 -0
- package/dist/command/cli/hook/hook-fast.d.ts +31 -0
- package/dist/command/cli/hook/hook-fast.js +136 -0
- package/dist/command/cli/hook/prompt-hook.d.ts +30 -0
- package/dist/command/cli/hook/prompt-hook.js +199 -0
- package/dist/command/cli/hook/tool-hook.d.ts +21 -0
- package/dist/command/cli/hook/tool-hook.js +259 -0
- package/dist/command/cli/launch/cli-launch.d.ts +2 -0
- package/dist/command/cli/launch/cli-launch.js +22 -2
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +28 -2
- package/dist/command/cli/mcp-command.d.ts +9 -0
- package/dist/command/cli/mcp-command.js +127 -41
- package/dist/command/cli/open-navigate.d.ts +43 -0
- package/dist/command/cli/open-navigate.js +85 -0
- package/dist/command/cli/ports/port-holder.d.ts +16 -4
- package/dist/command/cli/ports/port-holder.js +58 -12
- package/dist/command/cli/ports/resolve/cli-port.js +18 -2
- package/dist/command/cli/project-name.d.ts +1 -7
- package/dist/command/cli/project-name.js +1 -0
- package/dist/command/cli/report-command.d.ts +8 -2
- package/dist/command/cli/report-command.js +95 -18
- package/dist/command/cli/status-fields.d.ts +9 -2
- package/dist/command/cli/status-fields.js +148 -4
- package/dist/command/cli/try-command.d.ts +3 -4
- package/dist/command/cli/try-command.js +6 -11
- package/dist/command/cli/verify-results.d.ts +4 -1
- package/dist/command/cli/verify-results.js +3 -1
- package/dist/command/cli.d.ts +1 -7
- package/dist/command/cli.js +79 -160
- package/dist/command/daemon/daemon-resilience.d.ts +6 -1
- package/dist/command/daemon/daemon-resilience.js +31 -18
- package/dist/command/daemon/daemon.d.ts +11 -0
- package/dist/command/daemon/daemon.js +70 -2
- package/dist/command/daemon/lifetime/daemon-usefulness.d.ts +2 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.js +13 -2
- package/dist/command/daemon/wake-decision.js +4 -2
- package/dist/command/daemon/win32-escape.d.ts +32 -0
- package/dist/command/daemon/win32-escape.js +119 -0
- package/dist/command/setup/agent-configs.d.ts +9 -0
- package/dist/command/setup/agent-configs.js +9 -0
- package/dist/command/setup/auto-approve.d.ts +10 -3
- package/dist/command/setup/auto-approve.js +51 -3
- package/dist/command/setup/bringup/dev-server-files.d.ts +1 -9
- package/dist/command/setup/bringup/dev-server-wait.js +5 -1
- package/dist/command/setup/bringup/ensure-daemon.js +4 -7
- package/dist/command/setup/init/init-host.js +6 -0
- package/dist/command/setup/init/init-port.js +5 -4
- package/dist/command/setup/init/init-runtime.js +7 -1
- package/dist/command/setup/node-effects.d.ts +8 -0
- package/dist/command/setup/node-effects.js +36 -4
- package/dist/command/setup/probe/dev-port.d.ts +26 -0
- package/dist/command/setup/probe/dev-port.js +117 -0
- package/dist/command/setup/probe/page-probe.d.ts +1 -1
- package/dist/command/setup/probe/page-probe.js +11 -3
- package/dist/command/setup/remaining-steps.d.ts +0 -7
- package/dist/command/setup/remaining-steps.js +3 -2
- package/dist/command/setup/run-setup.d.ts +11 -0
- package/dist/command/setup/run-setup.js +33 -5
- package/dist/command/setup/setup-command.d.ts +2 -0
- package/dist/command/setup/setup-command.js +22 -4
- package/dist/command/update/updater.d.ts +1 -6
- package/dist/command/update/updater.js +4 -5
- package/dist/command/update/version-seen.d.ts +24 -0
- package/dist/command/update/version-seen.js +65 -0
- package/dist/command/version/peer-announce.d.ts +9 -1
- package/dist/command/version/peer-announce.js +25 -2
- package/dist/command/version/sdk-fix.d.ts +5 -6
- package/dist/command/version/sdk-fix.js +17 -32
- package/dist/command/version/version-skew.d.ts +16 -1
- package/dist/command/version/version-skew.js +84 -10
- package/dist/features/crawl/crawl-tools.js +2 -2
- package/dist/features/crawl/crawl.js +2 -0
- package/dist/features/exhaust/ledger.d.ts +15 -96
- package/dist/features/exhaust/ledger.js +3 -3
- package/dist/features/harness/drive-runs.d.ts +28 -4
- package/dist/features/harness/drive-runs.js +99 -7
- package/dist/features/harness/drivers.d.ts +1 -1
- package/dist/features/harness/drivers.js +1 -1
- package/dist/features/harness/harness.d.ts +5 -0
- package/dist/features/harness/harness.js +24 -12
- package/dist/features/harness/platform/platform-drives.d.ts +7 -1
- package/dist/features/harness/platform/platform-drives.js +12 -7
- package/dist/features/harness/platform/refusal.d.ts +1 -1
- package/dist/features/harness/platform/refusal.js +4 -4
- package/dist/features/harness/platform/remote-drive.js +70 -28
- package/dist/features/harness/platform/server-driver.js +22 -1
- package/dist/features/harness/platform-config.d.ts +1 -10
- package/dist/features/harness/platform-config.js +0 -20
- package/dist/features/license/license.d.ts +2 -14
- package/dist/features/visual/step-shots.d.ts +33 -1
- package/dist/features/visual/step-shots.js +155 -1
- package/dist/features/visual/visual-tools.js +12 -4
- package/dist/hooks/coding-agents.d.ts +6 -0
- package/dist/hooks/coding-agents.js +24 -3
- package/dist/hooks/episode-stamp.d.ts +32 -0
- package/dist/hooks/episode-stamp.js +61 -0
- package/dist/hooks/hook-commands.js +19 -9
- package/dist/index.d.ts +5 -1
- package/dist/index.js +66 -24
- package/dist/judgement/app-graph/journal-steps.d.ts +8 -0
- package/dist/judgement/app-graph/journal-steps.js +92 -0
- package/dist/judgement/capsule/capsule-store.d.ts +2 -39
- package/dist/judgement/domain/domain-model.js +1 -10
- package/dist/judgement/domain/domain-tools.js +4 -2
- package/dist/judgement/runs/artifact/run-store.d.ts +28 -8
- package/dist/judgement/runs/artifact/run-store.js +153 -28
- package/dist/judgement/runs/default-run-id.d.ts +3 -1
- package/dist/judgement/runs/default-run-id.js +15 -3
- package/dist/judgement/runs/drive-run.d.ts +3 -3
- package/dist/judgement/runs/drive-run.js +11 -7
- package/dist/judgement/runs/run-ledger.d.ts +21 -0
- package/dist/judgement/runs/run-ledger.js +143 -0
- package/dist/judgement/runs/runner-port.d.ts +1 -1
- package/dist/judgement/runs/runner-port.js +8 -2
- package/dist/judgement/runs/verification-sync.d.ts +4 -3
- package/dist/judgement/runs/verification-sync.js +27 -5
- package/dist/language/flows/affected-tools.js +2 -1
- package/dist/language/flows/annotate-notes/annotate.js +8 -3
- package/dist/language/flows/annotate-tools.js +1 -1
- package/dist/language/flows/change/affected.d.ts +8 -0
- package/dist/language/flows/change/affected.js +20 -7
- package/dist/language/flows/decision.js +19 -4
- package/dist/language/flows/fields/flow-secret-field.d.ts +9 -0
- package/dist/language/flows/fields/flow-secret-field.js +67 -5
- package/dist/language/flows/flow-anchor.d.ts +5 -0
- package/dist/language/flows/flow-anchor.js +4 -0
- package/dist/language/flows/flow-cross-step.d.ts +7 -1
- package/dist/language/flows/flow-cross-step.js +9 -0
- package/dist/language/flows/flow-expect-grammar.js +15 -10
- package/dist/language/flows/flow-intent.js +6 -1
- package/dist/language/flows/flow-journey.d.ts +8 -0
- package/dist/language/flows/flow-journey.js +13 -0
- package/dist/language/flows/flow-lease.d.ts +27 -0
- package/dist/language/flows/flow-lease.js +59 -0
- package/dist/language/flows/flow-replay-run.d.ts +1 -87
- package/dist/language/flows/flow-replay-run.js +111 -310
- package/dist/language/flows/flow-replay.js +21 -19
- package/dist/language/flows/flow-replayable.d.ts +38 -0
- package/dist/language/flows/flow-replayable.js +179 -0
- package/dist/language/flows/flow-start-path.d.ts +108 -0
- package/dist/language/flows/flow-start-path.js +313 -0
- package/dist/language/flows/flow-step-runners.d.ts +23 -2
- package/dist/language/flows/flow-step-runners.js +191 -32
- package/dist/language/flows/flow-store-for-session.d.ts +8 -1
- package/dist/language/flows/flow-store-for-session.js +6 -0
- package/dist/language/flows/flow-tools.d.ts +2 -23
- package/dist/language/flows/flow-tools.js +63 -113
- package/dist/language/flows/flows.d.ts +4 -6
- package/dist/language/flows/flows.js +90 -15
- package/dist/language/flows/heal-run.d.ts +10 -4
- package/dist/language/flows/heal-run.js +26 -9
- package/dist/language/flows/recording/flake.d.ts +3 -27
- package/dist/language/flows/recording/flake.js +1 -1
- package/dist/language/flows/recording/recording-backtrack.js +1 -4
- package/dist/language/flows/recording/tape/recordings.d.ts +11 -1
- package/dist/language/flows/recording/tape/recordings.js +9 -3
- package/dist/language/flows/replay.d.ts +25 -5
- package/dist/language/flows/replay.js +83 -16
- package/dist/language/flows/stores/assertion-tiers-store.js +1 -1
- package/dist/language/flows/suite/coverage.d.ts +9 -0
- package/dist/language/flows/suite/coverage.js +12 -1
- package/dist/language/flows/suite-selection.d.ts +25 -0
- package/dist/language/flows/suite-selection.js +41 -9
- package/dist/machine/git-tracks.d.ts +6 -0
- package/dist/machine/git-tracks.js +36 -0
- package/dist/memory/cloud/background-sync.d.ts +25 -0
- package/dist/memory/cloud/background-sync.js +79 -0
- package/dist/memory/cloud/cloud-config.d.ts +12 -1
- package/dist/memory/cloud/cloud-config.js +39 -13
- package/dist/memory/cloud/cloud-sync.d.ts +3 -24
- package/dist/memory/cloud/cloud-sync.js +5 -2
- package/dist/memory/cloud/harness-config.d.ts +0 -7
- package/dist/memory/cloud/memory-scope.d.ts +19 -0
- package/dist/memory/cloud/memory-scope.js +48 -0
- package/dist/memory/cloud/sync-answer.d.ts +43 -0
- package/dist/memory/cloud/sync-answer.js +42 -0
- package/dist/memory/cloud/sync-cycle.d.ts +40 -10
- package/dist/memory/cloud/sync-cycle.js +97 -144
- package/dist/memory/cloud/sync-daemon.d.ts +50 -3
- package/dist/memory/cloud/sync-daemon.js +473 -83
- package/dist/memory/cloud/sync-describe.d.ts +28 -0
- package/dist/memory/cloud/sync-describe.js +92 -0
- package/dist/memory/cloud/sync-disk.d.ts +9 -1
- package/dist/memory/cloud/sync-disk.js +137 -33
- package/dist/memory/cloud/sync-flow-versions.d.ts +26 -0
- package/dist/memory/cloud/sync-flow-versions.js +42 -0
- package/dist/memory/impact/impact-store.js +32 -15
- package/dist/memory/intent/intent-shard.d.ts +41 -266
- package/dist/memory/intent/intent-tools.js +20 -61
- package/dist/memory/intent/record-request.d.ts +27 -0
- package/dist/memory/intent/record-request.js +88 -0
- package/dist/memory/intent/settled-words.js +9 -1
- package/dist/memory/journal/drive-flow.d.ts +3 -0
- package/dist/memory/journal/drive-flow.js +11 -41
- package/dist/memory/journal/envelope-store.js +1 -1
- package/dist/memory/journal/envelope.d.ts +6 -154
- package/dist/memory/journal/episode-log.d.ts +107 -0
- package/dist/memory/journal/episode-log.js +302 -0
- package/dist/memory/journal/journal-recorder.d.ts +7 -0
- package/dist/memory/journal/journal-recorder.js +22 -9
- package/dist/memory/journal/on-disk/ambient-file.d.ts +1 -7
- package/dist/memory/journal/on-disk/ambient-file.js +1 -1
- package/dist/memory/journal/on-disk/workspace-gitignore.d.ts +24 -3
- package/dist/memory/journal/on-disk/workspace-gitignore.js +38 -7
- package/dist/memory/journal/on-disk/workspace-tiers.js +7 -0
- package/dist/memory/journal/self-observation.js +3 -1
- package/dist/memory/journal/session-end.js +23 -9
- package/dist/memory/journal/session-journal.js +39 -20
- package/dist/memory/project/artifact-root-resolver.d.ts +14 -1
- package/dist/memory/project/artifact-root-resolver.js +68 -23
- package/dist/memory/project/artifact-root.d.ts +17 -3
- package/dist/memory/project/artifact-root.js +47 -9
- package/dist/memory/project/fs/fs-port.d.ts +5 -0
- package/dist/memory/project/fs/fs-port.js +13 -0
- package/dist/memory/project/learned-routes.d.ts +3 -4
- package/dist/memory/project/learned-routes.js +3 -11
- package/dist/memory/project/link-directory.js +5 -2
- package/dist/memory/project/root-claims.d.ts +3 -1
- package/dist/memory/project/root-claims.js +41 -7
- package/dist/memory/project/session-root.d.ts +1 -1
- package/dist/memory/project/session-root.js +1 -15
- package/dist/memory/project/sync-status.js +5 -6
- package/dist/memory/recall/memory-tools.js +2 -2
- package/dist/memory/recall/platform-memory.d.ts +3 -1
- package/dist/memory/recall/platform-memory.js +9 -1
- package/dist/memory/recall/project-memory.js +15 -19
- package/dist/portal/bridge/auth-failure-reason.d.ts +13 -0
- package/dist/portal/bridge/auth-failure-reason.js +19 -0
- package/dist/portal/bridge/bridge.d.ts +19 -4
- package/dist/portal/bridge/bridge.js +150 -177
- package/dist/portal/bridge/harness-request.d.ts +15 -0
- package/dist/portal/bridge/harness-request.js +19 -0
- package/dist/portal/bridge/origin/origin-follow.d.ts +46 -0
- package/dist/portal/bridge/origin/origin-follow.js +110 -0
- package/dist/portal/bridge/pairing-token.d.ts +6 -0
- package/dist/portal/bridge/pairing-token.js +47 -16
- package/dist/portal/bridge/protocol-skew.d.ts +27 -2
- package/dist/portal/bridge/protocol-skew.js +66 -2
- package/dist/portal/bridge/session-nonces.d.ts +46 -0
- package/dist/portal/bridge/session-nonces.js +72 -0
- package/dist/portal/input/viewport-tools.d.ts +31 -0
- package/dist/portal/input/viewport-tools.js +106 -15
- package/dist/portal/pool/bounded-close.d.ts +23 -0
- package/dist/portal/pool/bounded-close.js +38 -0
- package/dist/portal/pool/browser-pool.d.ts +44 -39
- package/dist/portal/pool/browser-pool.js +247 -95
- package/dist/portal/pool/context-permissions.d.ts +9 -1
- package/dist/portal/pool/context-permissions.js +26 -0
- package/dist/portal/pool/lease-emulation.d.ts +37 -0
- package/dist/portal/pool/lease-emulation.js +29 -0
- package/dist/portal/pool/playwright-launcher.d.ts +6 -0
- package/dist/portal/pool/playwright-launcher.js +74 -7
- package/dist/portal/pool/pool-contract.d.ts +23 -1
- package/dist/portal/pool/pool-lease.d.ts +128 -0
- package/dist/portal/pool/pool-lease.js +49 -0
- package/dist/portal/pool/zero-install.d.ts +8 -1
- package/dist/portal/pool/zero-install.js +24 -2
- package/dist/portal/production/production-activation.d.ts +136 -0
- package/dist/portal/production/production-activation.js +173 -0
- package/dist/portal/production/production-drive.d.ts +52 -0
- package/dist/portal/production/production-drive.js +301 -0
- package/dist/portal/production/production-hello.d.ts +23 -0
- package/dist/portal/production/production-hello.js +23 -0
- package/dist/portal/realm/web-realm.js +42 -15
- package/dist/portal/session/control-envelope.d.ts +1 -1
- package/dist/portal/session/dev-server/served-document.d.ts +0 -5
- package/dist/portal/session/dev-server/served-document.js +6 -8
- package/dist/portal/session/facts/handshake-facts.d.ts +8 -1
- package/dist/portal/session/first-run-wiring.d.ts +3 -36
- package/dist/portal/session/first-run-wiring.js +10 -103
- package/dist/portal/session/live-control-tools.js +61 -19
- package/dist/portal/session/no-session-next-action.d.ts +11 -0
- package/dist/portal/session/no-session-next-action.js +40 -15
- package/dist/portal/session/no-session-watch.d.ts +7 -0
- package/dist/portal/session/no-session-watch.js +67 -23
- package/dist/portal/session/output-budget.d.ts +10 -0
- package/dist/portal/session/output-budget.js +16 -0
- package/dist/portal/session/presence/session-lease.d.ts +2 -0
- package/dist/portal/session/presence/session-lease.js +8 -0
- package/dist/portal/session/recorded-gaps.d.ts +15 -11
- package/dist/portal/session/recorded-gaps.js +39 -18
- package/dist/portal/session/serving-directory.d.ts +24 -2
- package/dist/portal/session/serving-directory.js +93 -5
- package/dist/portal/session/session-info.d.ts +26 -0
- package/dist/portal/session/session-info.js +20 -0
- package/dist/portal/session/session-manager.d.ts +35 -3
- package/dist/portal/session/session-manager.js +69 -14
- package/dist/portal/session/session-successor.js +1 -9
- package/dist/portal/session/session-tools.js +22 -4
- package/dist/portal/session/session.d.ts +10 -10
- package/dist/portal/session/session.js +37 -29
- package/dist/portal/session/zero-install-first-call.d.ts +7 -2
- package/dist/portal/session/zero-install-first-call.js +43 -20
- package/dist/start-wiring.d.ts +2 -2
- package/dist/start-wiring.js +17 -3
- package/dist/status-payload.d.ts +11 -1
- package/dist/status-payload.js +7 -1
- package/dist/surface/agent-presence-grace.d.ts +11 -0
- package/dist/surface/agent-presence-grace.js +34 -0
- package/dist/surface/http-server.d.ts +12 -1
- package/dist/surface/http-server.js +64 -15
- package/dist/surface/mcp/faults/mcp-outage.d.ts +12 -2
- package/dist/surface/mcp/faults/mcp-outage.js +19 -1
- package/dist/surface/mcp/mcp-proxy.d.ts +17 -74
- package/dist/surface/mcp/mcp-proxy.js +194 -267
- package/dist/surface/mcp/mcp.d.ts +20 -3
- package/dist/surface/mcp/mcp.js +88 -25
- package/dist/surface/mcp/proxy/drive-calls.d.ts +44 -0
- package/dist/surface/mcp/proxy/drive-calls.js +114 -5
- package/dist/surface/mcp/proxy/proxy-boot.d.ts +11 -0
- package/dist/surface/mcp/proxy/proxy-boot.js +1 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.d.ts +6 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.js +14 -1
- package/dist/surface/mcp/proxy/proxy-handshake.d.ts +34 -2
- package/dist/surface/mcp/proxy/proxy-handshake.js +76 -8
- package/dist/surface/mcp/server-instructions.js +35 -16
- package/dist/surface/mcp/shared-params.d.ts +8 -0
- package/dist/surface/mcp/shared-params.js +15 -1
- package/dist/surface/mcp/sse-frame-parser.d.ts +11 -0
- package/dist/surface/mcp/sse-frame-parser.js +18 -0
- package/dist/surface/mcp/surface-vocabulary.d.ts +2 -0
- package/dist/surface/mcp/surface-vocabulary.js +13 -0
- package/dist/surface/mcp/tool-catalog-cache.d.ts +2 -0
- package/dist/surface/mcp/tool-catalog-cache.js +14 -4
- package/dist/surface/tools/account-tool.d.ts +4 -3
- package/dist/surface/tools/account-tool.js +20 -31
- package/dist/surface/tools/act/act-danger.d.ts +2 -0
- package/dist/surface/tools/act/act-danger.js +41 -14
- package/dist/surface/tools/act/act-observation.d.ts +11 -0
- package/dist/surface/tools/act/act-observation.js +33 -0
- package/dist/surface/tools/act/act-preflight.js +10 -3
- package/dist/surface/tools/act/act-sequence-retry.js +2 -1
- package/dist/surface/tools/act/act-target.js +19 -5
- package/dist/surface/tools/act/durable.js +1 -1
- package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +9 -7
- package/dist/surface/tools/act/navigation/navigate-arrival.js +11 -14
- package/dist/surface/tools/act/unsettled-find.d.ts +36 -0
- package/dist/surface/tools/act/unsettled-find.js +71 -0
- package/dist/surface/tools/act-sequence-tool.js +53 -24
- package/dist/surface/tools/act-tools.d.ts +2 -3
- package/dist/surface/tools/act-tools.js +49 -47
- package/dist/surface/tools/agent/compact-envelope.d.ts +2 -2
- package/dist/surface/tools/agent/for-the-agent.js +41 -3
- package/dist/surface/tools/assert/assert-grade.js +8 -3
- package/dist/surface/tools/assert/assert-verdict.js +4 -2
- package/dist/surface/tools/browser-tools.js +7 -4
- package/dist/surface/tools/chat-drives.js +50 -25
- package/dist/surface/tools/coverage-tools.js +1 -1
- package/dist/surface/tools/dynamic-tools.d.ts +8 -0
- package/dist/surface/tools/dynamic-tools.js +89 -34
- package/dist/surface/tools/empty-session-list.d.ts +18 -25
- package/dist/surface/tools/empty-session-list.js +67 -38
- package/dist/surface/tools/error-recovery.d.ts +17 -7
- package/dist/surface/tools/error-recovery.js +53 -20
- package/dist/surface/tools/explore-tools.d.ts +10 -0
- package/dist/surface/tools/explore-tools.js +72 -19
- package/dist/surface/tools/feedback-tools.js +23 -2
- package/dist/surface/tools/gap-novelty.d.ts +6 -0
- package/dist/surface/tools/gap-novelty.js +9 -0
- package/dist/surface/tools/gaps/capability-absences.js +4 -3
- package/dist/surface/tools/harness-explore.d.ts +1 -1
- package/dist/surface/tools/harness-explore.js +6 -4
- package/dist/surface/tools/harness-gate.d.ts +43 -21
- package/dist/surface/tools/harness-gate.js +55 -81
- package/dist/surface/tools/harness-script.d.ts +2 -0
- package/dist/surface/tools/harness-script.js +11 -6
- package/dist/surface/tools/harness-toolset.js +3 -4
- package/dist/surface/tools/invoke-tool.d.ts +0 -8
- package/dist/surface/tools/invoke-tool.js +164 -178
- package/dist/surface/tools/lease-hint.d.ts +9 -0
- package/dist/surface/tools/lease-hint.js +22 -3
- package/dist/surface/tools/lease-permissions.d.ts +1 -1
- package/dist/surface/tools/lease-readiness.d.ts +55 -0
- package/dist/surface/tools/lease-readiness.js +150 -2
- package/dist/surface/tools/lease-tools.d.ts +3 -75
- package/dist/surface/tools/lease-tools.js +124 -188
- package/dist/surface/tools/map-tools.d.ts +20 -0
- package/dist/surface/tools/map-tools.js +145 -0
- package/dist/surface/tools/merge-tools.js +11 -7
- package/dist/surface/tools/next-step.js +6 -3
- package/dist/surface/tools/observe-tools.js +46 -35
- package/dist/surface/tools/platform-moment.d.ts +3 -12
- package/dist/surface/tools/platform-moment.js +12 -24
- package/dist/surface/tools/read/complete-snapshot.d.ts +7 -1
- package/dist/surface/tools/read/complete-snapshot.js +13 -2
- package/dist/surface/tools/read/query-paginate.js +6 -0
- package/dist/surface/tools/read/query-shape.d.ts +9 -0
- package/dist/surface/tools/read/query-shape.js +15 -0
- package/dist/surface/tools/read/snapshot-unmounted-note.d.ts +1 -0
- package/dist/surface/tools/read/snapshot-unmounted-note.js +73 -0
- package/dist/surface/tools/read-tools.js +5 -5
- package/dist/surface/tools/real-input-attempt.d.ts +11 -0
- package/dist/surface/tools/real-input-attempt.js +206 -38
- package/dist/surface/tools/reconcile-tools.js +21 -8
- package/dist/surface/tools/reticle-result.d.ts +3 -0
- package/dist/surface/tools/reticle-result.js +8 -1
- package/dist/surface/tools/run-report.d.ts +22 -0
- package/dist/surface/tools/run-report.js +141 -0
- package/dist/surface/tools/session-ports.d.ts +57 -0
- package/dist/surface/tools/session-ports.js +102 -0
- package/dist/surface/tools/tool-kit.d.ts +58 -4
- package/dist/surface/tools/tool-kit.js +140 -6
- package/dist/surface/tools/tool-surface.d.ts +2 -0
- package/dist/surface/tools/tool-surface.js +45 -0
- package/dist/surface/tools/tools.js +49 -87
- package/dist/telemetry/automation-hint.d.ts +5 -0
- package/dist/telemetry/automation-hint.js +7 -0
- package/dist/telemetry/cli-telemetry.d.ts +22 -0
- package/dist/telemetry/cli-telemetry.js +80 -11
- package/dist/telemetry/daemon-telemetry.d.ts +3 -1
- package/dist/telemetry/daemon-telemetry.js +9 -2
- package/dist/telemetry/feedback-cli.d.ts +1 -1
- package/dist/telemetry/feedback-cli.js +8 -3
- package/dist/telemetry/feedback.d.ts +1 -1
- package/dist/telemetry/feedback.js +51 -4
- package/dist/telemetry/harness-run.d.ts +3 -3
- package/dist/telemetry/harness-run.js +18 -7
- package/dist/telemetry/hud-events.d.ts +1 -1
- package/dist/telemetry/hud-metrics.d.ts +6 -3
- package/dist/telemetry/hud-metrics.js +20 -8
- package/dist/telemetry/install-source.js +1 -1
- package/dist/telemetry/mcp-connection.d.ts +1 -1
- package/dist/telemetry/mcp-connection.js +21 -2
- package/dist/telemetry/onboarding-firsts.d.ts +6 -1
- package/dist/telemetry/onboarding-firsts.js +41 -1
- package/dist/telemetry/proxy-telemetry.d.ts +42 -0
- package/dist/telemetry/proxy-telemetry.js +70 -1
- package/dist/telemetry/session-metrics.d.ts +1 -3
- package/dist/telemetry/session-metrics.js +16 -12
- package/dist/telemetry/telemetry.d.ts +9 -1
- package/dist/telemetry/telemetry.js +16 -1
- package/dist/telemetry/verification-of.d.ts +3 -1
- package/dist/telemetry/verification-of.js +7 -1
- package/dist/wire-journal.js +12 -2
- package/docs/README.md +4 -2
- package/docs/actions.mdx +7 -6
- package/docs/adapters.md +2 -1
- package/docs/agent-cheatsheet.md +19 -5
- package/docs/architecture.md +13 -10
- package/docs/autodrive.md +6 -5
- package/docs/benchmarks.md +2 -2
- package/docs/capabilities.mdx +1 -1
- package/docs/cli/affected.mdx +1 -1
- package/docs/cli/cloud.mdx +6 -6
- package/docs/cli/doctor.mdx +3 -1
- package/docs/cli/feedback.mdx +11 -7
- package/docs/cli/gate.mdx +1 -1
- package/docs/cli/help.mdx +1 -1
- package/docs/cli/init.mdx +20 -16
- package/docs/cli/mcp.mdx +5 -2
- package/docs/cli/open.mdx +5 -2
- package/docs/cli/report.mdx +1 -1
- package/docs/cli/restart.mdx +1 -1
- package/docs/cli/rollback.mdx +4 -4
- package/docs/cli/serve.mdx +7 -5
- package/docs/cli/setup.mdx +1 -1
- package/docs/cli/status.mdx +6 -2
- package/docs/cli/stop.mdx +3 -3
- package/docs/cli/telemetry.mdx +5 -1
- package/docs/cli/try.mdx +8 -8
- package/docs/cli/update.mdx +8 -5
- package/docs/cli/verify.mdx +12 -5
- package/docs/cli/version.mdx +1 -1
- package/docs/cli.mdx +10 -6
- package/docs/debugging.md +1 -1
- package/docs/deploy-checks.md +8 -6
- package/docs/desktop.mdx +14 -18
- package/docs/enterprise.md +6 -6
- package/docs/environment.mdx +5 -3
- package/docs/faq.mdx +9 -6
- package/docs/first-drive.md +19 -9
- package/docs/flows.md +3 -4
- package/docs/for-agents.md +1 -1
- package/docs/frameworks.mdx +34 -11
- package/docs/getting-started.md +46 -29
- package/docs/http-transport.md +2 -2
- package/docs/human-control.md +8 -8
- package/docs/index.mdx +2 -2
- package/docs/install-agentic.mdx +18 -19
- package/docs/install-manual.mdx +8 -4
- package/docs/integration-patterns.md +5 -5
- package/docs/multi-agent-testing.md +7 -5
- package/docs/packages/browser.mdx +34 -2
- package/docs/packages/core.mdx +2 -1
- package/docs/packages/electron.mdx +15 -3
- package/docs/packages/eslint-plugin.mdx +1 -1
- package/docs/packages/next.mdx +17 -5
- package/docs/packages/react.mdx +8 -1
- package/docs/packages/server.mdx +3 -3
- package/docs/packages/tauri.mdx +3 -3
- package/docs/packages/vite-plugin.mdx +1 -1
- package/docs/packages.mdx +19 -6
- package/docs/platform-integration.md +12 -4
- package/docs/predicates.mdx +18 -7
- package/docs/production-mode.md +108 -0
- package/docs/prompt-capture.md +99 -0
- package/docs/quickstart.mdx +14 -12
- package/docs/recipes.mdx +9 -8
- package/docs/required-checks.md +3 -2
- package/docs/skill-file.mdx +4 -3
- package/docs/skill-setup.md +2 -2
- package/docs/skill.md +62 -70
- package/docs/state-files.md +1 -0
- package/docs/state-management.mdx +11 -9
- package/docs/system-map.md +14 -13
- package/docs/telemetry.md +32 -24
- package/docs/testing.md +9 -5
- package/docs/tools/act-and-wait.mdx +17 -13
- package/docs/tools/act-sequence.mdx +40 -66
- package/docs/tools/act.mdx +7 -5
- package/docs/tools/assert.mdx +1 -1
- package/docs/tools/look.mdx +1 -1
- package/docs/tools/navigate.mdx +1 -1
- package/docs/tools/network.mdx +13 -11
- package/docs/tools/overview.mdx +3 -3
- package/docs/tools/query.mdx +3 -3
- package/docs/tools/session-and-feedback.mdx +9 -6
- package/docs/tools/sessions.mdx +7 -0
- package/docs/tools/snapshot.mdx +9 -7
- package/docs/tools/tools-and-run.mdx +11 -10
- package/docs/tools/verify.mdx +1 -1
- package/docs/troubleshooting.mdx +21 -9
- package/docs/usage.md +58 -43
- package/docs/use-cases.mdx +2 -2
- package/docs/vs-chrome-devtools-mcp.mdx +5 -5
- package/docs/vs-playwright-mcp.mdx +5 -4
- package/docs/what-is-recorded.md +12 -7
- package/docs/what-is-reticle.mdx +2 -2
- package/docs/why-reticle.mdx +1 -1
- package/package.json +9 -12
- package/dist/command/dev/stale-issue-guard.d.ts +0 -34
- package/dist/command/dev/stale-issue-guard.js +0 -69
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
import { type ParsedFeedback } from './cli-parse-feedback.js';
|
|
7
7
|
import { HEADED_FLAG, PORT_FLAG } from './cli-parse-grammar.js';
|
|
8
8
|
export { HEADED_FLAG, PORT_FLAG };
|
|
9
|
-
export {
|
|
9
|
+
export { DRIVE_FLAG, HEADLESS_FLAG, HTTP_FLAG, HTTP_PORT_FLAG, HTTP_TOKEN_FLAG, } from './cli-parse-serve.js';
|
|
10
|
+
export { AGENT_FLAG, BUG_FLAG, CONTACT_FLAG, FEEDBACK_KINDS, KIND_FLAG, RATING_FLAG, } from './cli-parse-feedback.js';
|
|
10
11
|
import { CLI_USAGE } from './cli-usage.js';
|
|
11
12
|
export { CLI_USAGE };
|
|
13
|
+
/** `reticle hook`: the agent prompt hook. `cli.ts` runs it before this parser, and before telemetry. */
|
|
14
|
+
export declare const HOOK_COMMAND = "hook";
|
|
12
15
|
/** The `reticle telemetry` sub-actions. Bare `reticle telemetry` means `status`. */
|
|
13
16
|
export declare const TelemetryAction: {
|
|
14
17
|
readonly STATUS: "status";
|
|
@@ -27,20 +30,15 @@ export declare const DAEMON_INNER_COMMAND = "_daemon";
|
|
|
27
30
|
* defined; a second list somewhere else would drift the first time a command is added.
|
|
28
31
|
*/
|
|
29
32
|
export declare const UNKNOWN_COMMAND = "unknown";
|
|
33
|
+
/**
|
|
34
|
+
* Commands that only ask about the CLI. An agent often runs one before anything else, so the first
|
|
35
|
+
* run on a machine is not the install until a real command follows.
|
|
36
|
+
*/
|
|
37
|
+
export declare const PROBE_COMMANDS: ReadonlySet<string>;
|
|
30
38
|
/** Every command the typed parser below routes. The parser refuses any word not in this list. */
|
|
31
39
|
export declare const LOCAL_COMMANDS: readonly string[];
|
|
32
40
|
/** The subcommand name if we recognize it, else `unknown`. Bare `reticle` reports `help`. */
|
|
33
41
|
export declare function knownCommand(arg: string | undefined): string;
|
|
34
|
-
/**
|
|
35
|
-
* Force a hidden browser. The default is now HEADED: a run nobody can see is a run nobody trusts,
|
|
36
|
-
* and every "did it actually do anything?" question cost a round-trip. CI passes this (or just sets
|
|
37
|
-
* CI, which flips the default) because there is no display there to be headed on.
|
|
38
|
-
*/
|
|
39
|
-
export declare const HEADLESS_FLAG = "--headless";
|
|
40
|
-
export declare const DRIVE_FLAG = "--drive";
|
|
41
|
-
export declare const HTTP_FLAG = "--http";
|
|
42
|
-
export declare const HTTP_PORT_FLAG = "--http-port";
|
|
43
|
-
export declare const HTTP_TOKEN_FLAG = "--http-token";
|
|
44
42
|
/**
|
|
45
43
|
* A predicate for a flow-free, one-shot verdict against the daemon that is already running.
|
|
46
44
|
*
|
|
@@ -60,6 +58,7 @@ export type CliResult = {
|
|
|
60
58
|
filesOnly: boolean;
|
|
61
59
|
captureBodies: boolean;
|
|
62
60
|
hooks: boolean;
|
|
61
|
+
promptCapture: boolean;
|
|
63
62
|
json: boolean;
|
|
64
63
|
relaunch: boolean;
|
|
65
64
|
open: boolean;
|
|
@@ -68,6 +67,7 @@ export type CliResult = {
|
|
|
68
67
|
url: string | undefined;
|
|
69
68
|
timeoutSeconds: number | undefined;
|
|
70
69
|
licenseKey: string | undefined;
|
|
70
|
+
newId: boolean;
|
|
71
71
|
} | {
|
|
72
72
|
kind: 'serve';
|
|
73
73
|
port: number;
|
|
@@ -121,6 +121,7 @@ export type CliResult = {
|
|
|
121
121
|
kind: 'open';
|
|
122
122
|
port: number;
|
|
123
123
|
url?: string;
|
|
124
|
+
navigate: boolean;
|
|
124
125
|
} | {
|
|
125
126
|
kind: '_daemon';
|
|
126
127
|
port: number;
|
|
@@ -4,14 +4,16 @@
|
|
|
4
4
|
* and re-exports this surface.
|
|
5
5
|
*/
|
|
6
6
|
import { parseFeedbackArgs } from './cli-parse-feedback.js';
|
|
7
|
+
import { HEADLESS_FLAG, parseServeFlags } from './cli-parse-serve.js';
|
|
7
8
|
import { parseVerifySuffix } from './cli-parse-verify.js';
|
|
8
9
|
import { HEADED_FLAG, PORT_FLAG, VERIFY_COMMAND, missingOperand, missingValue, notANumber, retiredFlag, unknownArgument, CLOUD_COMMANDS, REMOVED_COMMANDS, removedNote, } from './cli-parse-grammar.js';
|
|
9
10
|
// Re-exported because the daemon's own argv builder reaches for these through this module, which is
|
|
10
11
|
// where the grammar has always lived as far as every caller is concerned.
|
|
11
12
|
export { HEADED_FLAG, PORT_FLAG };
|
|
13
|
+
export { DRIVE_FLAG, HEADLESS_FLAG, HTTP_FLAG, HTTP_PORT_FLAG, HTTP_TOKEN_FLAG, } from './cli-parse-serve.js';
|
|
12
14
|
import { FORCE_FLAG } from './cli-kill.js';
|
|
13
15
|
// Re-exported so every existing importer of these flags is unaffected by the file split.
|
|
14
|
-
export { AGENT_FLAG, BUG_FLAG, FEEDBACK_KINDS, KIND_FLAG, RATING_FLAG, } from './cli-parse-feedback.js';
|
|
16
|
+
export { AGENT_FLAG, BUG_FLAG, CONTACT_FLAG, FEEDBACK_KINDS, KIND_FLAG, RATING_FLAG, } from './cli-parse-feedback.js';
|
|
15
17
|
// The help text lives on its own page; re-exported so every importer of it is unaffected.
|
|
16
18
|
import { CLI_USAGE } from './cli-usage.js';
|
|
17
19
|
export { CLI_USAGE };
|
|
@@ -42,6 +44,8 @@ const TELEMETRY_COMMAND = 'telemetry';
|
|
|
42
44
|
const FEEDBACK_COMMAND = 'feedback';
|
|
43
45
|
const DOCTOR_COMMAND = 'doctor';
|
|
44
46
|
const SETUP_COMMAND = 'setup';
|
|
47
|
+
/** `reticle hook`: the agent prompt hook. `cli.ts` runs it before this parser, and before telemetry. */
|
|
48
|
+
export const HOOK_COMMAND = 'hook';
|
|
45
49
|
/** The `reticle telemetry` sub-actions. Bare `reticle telemetry` means `status`. */
|
|
46
50
|
export const TelemetryAction = {
|
|
47
51
|
STATUS: 'status',
|
|
@@ -61,6 +65,15 @@ export const DAEMON_INNER_COMMAND = '_daemon';
|
|
|
61
65
|
export const UNKNOWN_COMMAND = 'unknown';
|
|
62
66
|
const HELP_COMMAND = 'help';
|
|
63
67
|
const HELP_FLAGS = new Set(['--help', '-h']);
|
|
68
|
+
/**
|
|
69
|
+
* Commands that only ask about the CLI. An agent often runs one before anything else, so the first
|
|
70
|
+
* run on a machine is not the install until a real command follows.
|
|
71
|
+
*/
|
|
72
|
+
export const PROBE_COMMANDS = new Set([
|
|
73
|
+
VERSION_COMMAND,
|
|
74
|
+
HELP_COMMAND,
|
|
75
|
+
TELEMETRY_COMMAND,
|
|
76
|
+
]);
|
|
64
77
|
/** Every command the typed parser below routes. The parser refuses any word not in this list. */
|
|
65
78
|
export const LOCAL_COMMANDS = [
|
|
66
79
|
INIT_COMMAND,
|
|
@@ -86,6 +99,7 @@ export const LOCAL_COMMANDS = [
|
|
|
86
99
|
DAEMON_INNER_COMMAND,
|
|
87
100
|
DOCTOR_COMMAND,
|
|
88
101
|
SETUP_COMMAND,
|
|
102
|
+
HOOK_COMMAND,
|
|
89
103
|
];
|
|
90
104
|
const LOCAL_COMMAND_SET = new Set(LOCAL_COMMANDS);
|
|
91
105
|
const KNOWN_COMMANDS = new Set([
|
|
@@ -110,24 +124,19 @@ const COMMAND_FLAG_ALIASES = new Map([
|
|
|
110
124
|
*/
|
|
111
125
|
function numberFlag(args, name) {
|
|
112
126
|
const at = args.indexOf(name);
|
|
113
|
-
if (at < 0)
|
|
127
|
+
if (at < 0) {
|
|
114
128
|
return 0;
|
|
129
|
+
}
|
|
115
130
|
const raw = Number(args[at + 1]);
|
|
116
131
|
return Number.isFinite(raw) && raw >= 0 ? Math.floor(raw) : 0;
|
|
117
132
|
}
|
|
118
133
|
/** The subcommand name if we recognize it, else `unknown`. Bare `reticle` reports `help`. */
|
|
119
134
|
export function knownCommand(arg) {
|
|
120
|
-
if (arg === undefined || '' === arg)
|
|
135
|
+
if (arg === undefined || '' === arg) {
|
|
121
136
|
return HELP_COMMAND;
|
|
137
|
+
}
|
|
122
138
|
return KNOWN_COMMANDS.has(arg) ? arg : (COMMAND_FLAG_ALIASES.get(arg) ?? UNKNOWN_COMMAND);
|
|
123
139
|
}
|
|
124
|
-
/**
|
|
125
|
-
* Force a hidden browser. The default is now HEADED: a run nobody can see is a run nobody trusts,
|
|
126
|
-
* and every "did it actually do anything?" question cost a round-trip. CI passes this (or just sets
|
|
127
|
-
* CI, which flips the default) because there is no display there to be headed on.
|
|
128
|
-
*/
|
|
129
|
-
export const HEADLESS_FLAG = '--headless';
|
|
130
|
-
export const DRIVE_FLAG = '--drive';
|
|
131
140
|
const QUIET_FLAG = '--quiet';
|
|
132
141
|
const DRY_RUN_FLAG = '--dry-run';
|
|
133
142
|
const YES_FLAG = '--yes';
|
|
@@ -159,6 +168,8 @@ const START_FLAG = '--start';
|
|
|
159
168
|
const CAPTURE_BODIES_FLAG = '--capture-bodies';
|
|
160
169
|
/** `--hooks`: also install the print-only Claude Code Stop hook (`reticle report --hook`). */
|
|
161
170
|
const HOOKS_FLAG = '--hooks';
|
|
171
|
+
/** `--no-prompt-capture`: install no prompt-capture hook for the agents found. */
|
|
172
|
+
const NO_PROMPT_CAPTURE_FLAG = '--no-prompt-capture';
|
|
162
173
|
/**
|
|
163
174
|
* The rest of the runtime surface.
|
|
164
175
|
*
|
|
@@ -169,6 +180,8 @@ const HOOKS_FLAG = '--hooks';
|
|
|
169
180
|
const JSON_FLAG = '--json';
|
|
170
181
|
const NO_DRIVE_FLAG = '--no-drive';
|
|
171
182
|
const NO_OPEN_FLAG = '--no-open';
|
|
183
|
+
/** `reticle open <url> --navigate`: move a tab already on the origin to the url (#1140). */
|
|
184
|
+
const NAVIGATE_FLAG = '--navigate';
|
|
172
185
|
/** Connect and stop: no coverage summary and no prompt at the end. */
|
|
173
186
|
const NO_FIRST_RUN_FLAG = '--no-first-run';
|
|
174
187
|
const NO_AGENTS_FLAG = '--no-agents';
|
|
@@ -193,9 +206,8 @@ const DRIVE_MODEL_FLAG = '--drive-model';
|
|
|
193
206
|
*/
|
|
194
207
|
const LICENSE_FLAG = '--license';
|
|
195
208
|
const NO_INSTALL_FLAG = '--no-install';
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
export const HTTP_TOKEN_FLAG = '--http-token';
|
|
209
|
+
/** Give this checkout a project id of its own: a copied repository keeps the original's. */
|
|
210
|
+
const NEW_ID_FLAG = '--new-id';
|
|
199
211
|
/**
|
|
200
212
|
* A usage error names the thing that was wrong.
|
|
201
213
|
*
|
|
@@ -208,98 +220,19 @@ export const HTTP_TOKEN_FLAG = '--http-token';
|
|
|
208
220
|
* The help text is still shown — cli.ts renders it as readable text underneath. It is just not the
|
|
209
221
|
* message any more.
|
|
210
222
|
*/
|
|
211
|
-
const requiresHttp = (flag) => ({
|
|
212
|
-
kind: 'error',
|
|
213
|
-
message: `${flag} requires ${HTTP_FLAG} — it configures the verify endpoint ${HTTP_FLAG} starts`,
|
|
214
|
-
});
|
|
215
223
|
const unknownCommand = (command) => ({
|
|
216
224
|
kind: 'error',
|
|
217
225
|
message: `unknown command '${command}'`,
|
|
218
226
|
});
|
|
219
|
-
function parseServeFlags(args, defaultPort, defaultHeadless) {
|
|
220
|
-
let port = defaultPort;
|
|
221
|
-
let driveUrl;
|
|
222
|
-
let headless = defaultHeadless;
|
|
223
|
-
let http = false;
|
|
224
|
-
let httpPort;
|
|
225
|
-
let httpToken;
|
|
226
|
-
let i = 0;
|
|
227
|
-
while (i < args.length) {
|
|
228
|
-
const arg = args[i];
|
|
229
|
-
// `i < args.length` already guarantees this, but the index signature does not say so and the
|
|
230
|
-
// unknown-argument error needs a real string to name.
|
|
231
|
-
if (arg === undefined)
|
|
232
|
-
break;
|
|
233
|
-
if (arg === PORT_FLAG) {
|
|
234
|
-
i++;
|
|
235
|
-
const n = args[i];
|
|
236
|
-
if (n === undefined)
|
|
237
|
-
return missingValue(PORT_FLAG);
|
|
238
|
-
const parsed = parseInt(n, 10);
|
|
239
|
-
if (isNaN(parsed))
|
|
240
|
-
return notANumber(PORT_FLAG, n);
|
|
241
|
-
port = parsed;
|
|
242
|
-
}
|
|
243
|
-
else if (arg === DRIVE_FLAG) {
|
|
244
|
-
i++;
|
|
245
|
-
driveUrl = args[i];
|
|
246
|
-
if (driveUrl === undefined)
|
|
247
|
-
return missingValue(DRIVE_FLAG);
|
|
248
|
-
}
|
|
249
|
-
else if (arg === HEADED_FLAG) {
|
|
250
|
-
headless = false;
|
|
251
|
-
}
|
|
252
|
-
else if (arg === HEADLESS_FLAG) {
|
|
253
|
-
headless = true;
|
|
254
|
-
}
|
|
255
|
-
else if (arg === HTTP_FLAG) {
|
|
256
|
-
http = true;
|
|
257
|
-
}
|
|
258
|
-
else if (arg === HTTP_PORT_FLAG) {
|
|
259
|
-
i++;
|
|
260
|
-
const n = args[i];
|
|
261
|
-
if (n === undefined)
|
|
262
|
-
return missingValue(HTTP_PORT_FLAG);
|
|
263
|
-
const parsed = parseInt(n, 10);
|
|
264
|
-
if (isNaN(parsed))
|
|
265
|
-
return notANumber(HTTP_PORT_FLAG, n);
|
|
266
|
-
httpPort = parsed;
|
|
267
|
-
}
|
|
268
|
-
else if (arg === HTTP_TOKEN_FLAG) {
|
|
269
|
-
i++;
|
|
270
|
-
httpToken = args[i];
|
|
271
|
-
if (httpToken === undefined)
|
|
272
|
-
return missingValue(HTTP_TOKEN_FLAG);
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
return unknownArgument(arg);
|
|
276
|
-
}
|
|
277
|
-
i++;
|
|
278
|
-
}
|
|
279
|
-
// Without `--http` these flags configure an endpoint nothing starts, and they were accepted and
|
|
280
|
-
// silently ignored — worse than being rejected, because the whole reason to pass them is to be
|
|
281
|
-
// honoured (#687).
|
|
282
|
-
if (!http && httpPort !== undefined)
|
|
283
|
-
return requiresHttp(HTTP_PORT_FLAG);
|
|
284
|
-
if (!http && httpToken !== undefined)
|
|
285
|
-
return requiresHttp(HTTP_TOKEN_FLAG);
|
|
286
|
-
return {
|
|
287
|
-
kind: 'ok',
|
|
288
|
-
port,
|
|
289
|
-
headless,
|
|
290
|
-
http,
|
|
291
|
-
...(driveUrl !== undefined ? { driveUrl } : {}),
|
|
292
|
-
...(httpPort !== undefined ? { httpPort } : {}),
|
|
293
|
-
...(httpToken !== undefined ? { httpToken } : {}),
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
227
|
function parsePortFlag(args, defaultPort) {
|
|
297
228
|
const idx = args.indexOf(PORT_FLAG);
|
|
298
|
-
if (-1 === idx)
|
|
229
|
+
if (-1 === idx) {
|
|
299
230
|
return defaultPort;
|
|
231
|
+
}
|
|
300
232
|
const n = args[idx + 1];
|
|
301
|
-
if (n === undefined)
|
|
233
|
+
if (n === undefined) {
|
|
302
234
|
return defaultPort;
|
|
235
|
+
}
|
|
303
236
|
const parsed = parseInt(n, 10);
|
|
304
237
|
return isNaN(parsed) ? defaultPort : parsed;
|
|
305
238
|
}
|
|
@@ -323,8 +256,9 @@ function parseDriveSuffix(args, port, defaultHeadless) {
|
|
|
323
256
|
return unknownArgument(arg);
|
|
324
257
|
}
|
|
325
258
|
}
|
|
326
|
-
if (driveUrl === undefined)
|
|
259
|
+
if (driveUrl === undefined) {
|
|
327
260
|
return missingOperand(DRIVE_COMMAND, 'a url');
|
|
261
|
+
}
|
|
328
262
|
return { kind: 'ok', port, driveUrl, headless };
|
|
329
263
|
}
|
|
330
264
|
function parseInitFlags(args) {
|
|
@@ -339,6 +273,7 @@ function parseInitFlags(args) {
|
|
|
339
273
|
let start = false;
|
|
340
274
|
let captureBodies = false;
|
|
341
275
|
let hooks = false;
|
|
276
|
+
let promptCapture = true;
|
|
342
277
|
let json = false;
|
|
343
278
|
let open = true;
|
|
344
279
|
let firstRun = true;
|
|
@@ -347,28 +282,33 @@ function parseInitFlags(args) {
|
|
|
347
282
|
let url;
|
|
348
283
|
let timeoutSeconds;
|
|
349
284
|
let licenseKey;
|
|
285
|
+
let newId = false;
|
|
350
286
|
let i = 0;
|
|
351
287
|
while (i < args.length) {
|
|
352
288
|
const arg = args[i];
|
|
353
289
|
// `i < args.length` already guarantees this, but the index signature does not say so and the
|
|
354
290
|
// unknown-argument error needs a real string to name.
|
|
355
|
-
if (arg === undefined)
|
|
291
|
+
if (arg === undefined) {
|
|
356
292
|
break;
|
|
293
|
+
}
|
|
357
294
|
if (arg === PORT_FLAG) {
|
|
358
295
|
i++;
|
|
359
296
|
const n = args[i];
|
|
360
|
-
if (n === undefined)
|
|
297
|
+
if (n === undefined) {
|
|
361
298
|
return missingValue(PORT_FLAG);
|
|
299
|
+
}
|
|
362
300
|
const parsed = parseInt(n, 10);
|
|
363
|
-
if (isNaN(parsed))
|
|
301
|
+
if (isNaN(parsed)) {
|
|
364
302
|
return notANumber(PORT_FLAG, n);
|
|
303
|
+
}
|
|
365
304
|
port = parsed;
|
|
366
305
|
}
|
|
367
306
|
else if (arg === APP_FLAG) {
|
|
368
307
|
i++;
|
|
369
308
|
const value = args[i];
|
|
370
|
-
if (value === undefined)
|
|
309
|
+
if (value === undefined) {
|
|
371
310
|
return missingValue(APP_FLAG);
|
|
311
|
+
}
|
|
372
312
|
app = value;
|
|
373
313
|
}
|
|
374
314
|
else if (arg === FLOW_FLAG || arg === NO_DRIVE_FLAG || arg === DRIVE_MODEL_FLAG) {
|
|
@@ -377,8 +317,9 @@ function parseInitFlags(args) {
|
|
|
377
317
|
else if (arg === ENV_FLAG) {
|
|
378
318
|
i++;
|
|
379
319
|
const value = args[i];
|
|
380
|
-
if (value === undefined)
|
|
320
|
+
if (value === undefined) {
|
|
381
321
|
return missingValue(ENV_FLAG);
|
|
322
|
+
}
|
|
382
323
|
env.push(value);
|
|
383
324
|
}
|
|
384
325
|
else if (arg === FILES_ONLY_FLAG) {
|
|
@@ -393,6 +334,9 @@ function parseInitFlags(args) {
|
|
|
393
334
|
else if (arg === HOOKS_FLAG) {
|
|
394
335
|
hooks = true;
|
|
395
336
|
}
|
|
337
|
+
else if (arg === NO_PROMPT_CAPTURE_FLAG) {
|
|
338
|
+
promptCapture = false;
|
|
339
|
+
}
|
|
396
340
|
else if (arg === JSON_FLAG) {
|
|
397
341
|
json = true;
|
|
398
342
|
}
|
|
@@ -411,25 +355,29 @@ function parseInitFlags(args) {
|
|
|
411
355
|
else if (arg === URL_FLAG) {
|
|
412
356
|
i++;
|
|
413
357
|
const value = args[i];
|
|
414
|
-
if (value === undefined)
|
|
358
|
+
if (value === undefined) {
|
|
415
359
|
return missingValue(URL_FLAG);
|
|
360
|
+
}
|
|
416
361
|
url = value;
|
|
417
362
|
}
|
|
418
363
|
else if (arg === LICENSE_FLAG) {
|
|
419
364
|
i++;
|
|
420
365
|
const value = args[i];
|
|
421
|
-
if (value === undefined)
|
|
366
|
+
if (value === undefined) {
|
|
422
367
|
return missingValue(LICENSE_FLAG);
|
|
368
|
+
}
|
|
423
369
|
licenseKey = value;
|
|
424
370
|
}
|
|
425
371
|
else if (arg === TIMEOUT_FLAG_INIT) {
|
|
426
372
|
i++;
|
|
427
373
|
const value = args[i];
|
|
428
|
-
if (value === undefined)
|
|
374
|
+
if (value === undefined) {
|
|
429
375
|
return missingValue(TIMEOUT_FLAG_INIT);
|
|
376
|
+
}
|
|
430
377
|
const seconds = parseInt(value, 10);
|
|
431
|
-
if (isNaN(seconds))
|
|
378
|
+
if (isNaN(seconds)) {
|
|
432
379
|
return notANumber(TIMEOUT_FLAG_INIT, value);
|
|
380
|
+
}
|
|
433
381
|
timeoutSeconds = seconds;
|
|
434
382
|
}
|
|
435
383
|
else if (arg === NO_MCP_FLAG) {
|
|
@@ -438,6 +386,9 @@ function parseInitFlags(args) {
|
|
|
438
386
|
else if (arg === NO_INSTALL_FLAG) {
|
|
439
387
|
install = false;
|
|
440
388
|
}
|
|
389
|
+
else if (arg === NEW_ID_FLAG) {
|
|
390
|
+
newId = true;
|
|
391
|
+
}
|
|
441
392
|
else if (arg === DRY_RUN_FLAG) {
|
|
442
393
|
dryRun = true;
|
|
443
394
|
}
|
|
@@ -462,6 +413,7 @@ function parseInitFlags(args) {
|
|
|
462
413
|
filesOnly: filesOnly || (app !== undefined && !start),
|
|
463
414
|
captureBodies,
|
|
464
415
|
hooks,
|
|
416
|
+
promptCapture,
|
|
465
417
|
json,
|
|
466
418
|
open,
|
|
467
419
|
firstRun,
|
|
@@ -470,6 +422,7 @@ function parseInitFlags(args) {
|
|
|
470
422
|
url,
|
|
471
423
|
timeoutSeconds,
|
|
472
424
|
licenseKey,
|
|
425
|
+
newId,
|
|
473
426
|
};
|
|
474
427
|
}
|
|
475
428
|
/** Pure CLI arg parser — exported for unit tests. argv = process.argv.slice(2). */
|
|
@@ -499,8 +452,9 @@ function parseTargetArgs(rest) {
|
|
|
499
452
|
i += 1;
|
|
500
453
|
continue;
|
|
501
454
|
}
|
|
502
|
-
if (arg !== undefined && !arg.startsWith('-'))
|
|
455
|
+
if (arg !== undefined && !arg.startsWith('-')) {
|
|
503
456
|
files.push(arg);
|
|
457
|
+
}
|
|
504
458
|
}
|
|
505
459
|
return since === undefined ? { files } : { files, since };
|
|
506
460
|
}
|
|
@@ -510,8 +464,9 @@ function parseTargetArgs(rest) {
|
|
|
510
464
|
* workspace itself, and a tutorial only dials one when asked to run.
|
|
511
465
|
*/
|
|
512
466
|
export function dialsTheDaemon(parsed) {
|
|
513
|
-
if ('init' === parsed.kind)
|
|
467
|
+
if ('init' === parsed.kind) {
|
|
514
468
|
return false;
|
|
469
|
+
}
|
|
515
470
|
return 'port' in parsed;
|
|
516
471
|
}
|
|
517
472
|
/**
|
|
@@ -522,16 +477,19 @@ export function dialsTheDaemon(parsed) {
|
|
|
522
477
|
*/
|
|
523
478
|
export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
524
479
|
// Bare `reticle` is `serve`.
|
|
525
|
-
if (0 === argv.length)
|
|
480
|
+
if (0 === argv.length) {
|
|
526
481
|
return { kind: 'serve', port: defaultPort, headless: defaultHeadless, http: false };
|
|
482
|
+
}
|
|
527
483
|
const [cmd, ...rest] = argv;
|
|
528
484
|
// Guaranteed by the bare-argv check above; restated so the unknown-command error can name it.
|
|
529
|
-
if (cmd === undefined)
|
|
485
|
+
if (cmd === undefined) {
|
|
530
486
|
return { kind: 'error', message: CLI_USAGE };
|
|
487
|
+
}
|
|
531
488
|
// `version` (or the conventional -v/--version flags) prints the running version — the diagnostic the
|
|
532
489
|
// troubleshooting docs lean on to confirm which npx-resolved build is actually executing.
|
|
533
|
-
if (cmd === VERSION_COMMAND || '--version' === cmd || '-v' === cmd)
|
|
490
|
+
if (cmd === VERSION_COMMAND || '--version' === cmd || '-v' === cmd) {
|
|
534
491
|
return { kind: 'version' };
|
|
492
|
+
}
|
|
535
493
|
// `help` (and the conventional -h/--help) print usage to stdout and exit 0 — the universal first move
|
|
536
494
|
// for a new user, which otherwise fell through to a JSON error with exit 1.
|
|
537
495
|
//
|
|
@@ -545,23 +503,27 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
545
503
|
// Removed commands answer before help does: `reticle hunt --help` should say it is gone, not
|
|
546
504
|
// describe something that no longer runs.
|
|
547
505
|
const removed = REMOVED_COMMANDS.get(cmd);
|
|
548
|
-
if (removed !== undefined)
|
|
506
|
+
if (removed !== undefined) {
|
|
549
507
|
return { kind: 'removed', message: removedNote(cmd, removed) };
|
|
508
|
+
}
|
|
550
509
|
if (HELP_COMMAND === cmd || HELP_FLAGS.has(cmd)) {
|
|
551
510
|
// `reticle help all`, `reticle --help all`, `reticle help init`.
|
|
552
511
|
const topic = rest.find((arg) => !HELP_FLAGS.has(arg));
|
|
553
512
|
return topic === undefined ? { kind: 'help' } : { kind: 'help', topic };
|
|
554
513
|
}
|
|
555
|
-
if (argv.some((arg) => HELP_FLAGS.has(arg)))
|
|
514
|
+
if (argv.some((arg) => HELP_FLAGS.has(arg))) {
|
|
556
515
|
return { kind: 'help', topic: cmd };
|
|
516
|
+
}
|
|
557
517
|
// The list is the gate, so a command cannot be routed without also being named in telemetry.
|
|
558
|
-
if (!LOCAL_COMMAND_SET.has(cmd))
|
|
518
|
+
if (!LOCAL_COMMAND_SET.has(cmd)) {
|
|
559
519
|
return unknownCommand(cmd);
|
|
520
|
+
}
|
|
560
521
|
switch (cmd) {
|
|
561
522
|
case INIT_COMMAND: {
|
|
562
523
|
const r = parseInitFlags(rest);
|
|
563
|
-
if ('error' === r.kind)
|
|
524
|
+
if ('error' === r.kind) {
|
|
564
525
|
return r;
|
|
526
|
+
}
|
|
565
527
|
return {
|
|
566
528
|
kind: 'init',
|
|
567
529
|
port: r.port,
|
|
@@ -573,6 +535,7 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
573
535
|
filesOnly: r.filesOnly,
|
|
574
536
|
captureBodies: r.captureBodies,
|
|
575
537
|
hooks: r.hooks,
|
|
538
|
+
promptCapture: r.promptCapture,
|
|
576
539
|
json: r.json,
|
|
577
540
|
open: r.open,
|
|
578
541
|
firstRun: r.firstRun,
|
|
@@ -581,12 +544,14 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
581
544
|
url: r.url,
|
|
582
545
|
timeoutSeconds: r.timeoutSeconds,
|
|
583
546
|
licenseKey: r.licenseKey,
|
|
547
|
+
newId: r.newId,
|
|
584
548
|
};
|
|
585
549
|
}
|
|
586
550
|
case SERVE_COMMAND: {
|
|
587
551
|
const r = parseServeFlags(rest, defaultPort, defaultHeadless);
|
|
588
|
-
if ('error' === r.kind)
|
|
552
|
+
if ('error' === r.kind) {
|
|
589
553
|
return r;
|
|
554
|
+
}
|
|
590
555
|
return {
|
|
591
556
|
kind: 'serve',
|
|
592
557
|
port: r.port,
|
|
@@ -601,8 +566,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
601
566
|
const port = parsePortFlag(rest, defaultPort);
|
|
602
567
|
// `stop --force` is what `kill` was: free the port by its listener, which must still be a
|
|
603
568
|
// Reticle daemon. Overriding that refusal stays on `restart --force` and the old `kill --force`.
|
|
604
|
-
if (rest.includes(FORCE_FLAG))
|
|
569
|
+
if (rest.includes(FORCE_FLAG)) {
|
|
605
570
|
return { kind: 'kill', port, force: false };
|
|
571
|
+
}
|
|
606
572
|
const quiet = rest.includes(QUIET_FLAG);
|
|
607
573
|
return { kind: 'stop', port, quiet };
|
|
608
574
|
}
|
|
@@ -657,8 +623,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
657
623
|
}
|
|
658
624
|
// Only `mcp` today. A bare `reticle setup` falls to help rather than guessing, because the
|
|
659
625
|
// next subcommand here will not be a synonym for this one.
|
|
660
|
-
if (what !== 'mcp')
|
|
626
|
+
if (what !== 'mcp') {
|
|
661
627
|
return { kind: 'help', topic: SETUP_COMMAND };
|
|
628
|
+
}
|
|
662
629
|
return { kind: 'setup-mcp' };
|
|
663
630
|
}
|
|
664
631
|
case LICENSE_COMMAND:
|
|
@@ -678,18 +645,23 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
678
645
|
const port = parsePortFlag(rest, defaultPort);
|
|
679
646
|
// The first non-flag arg is the url (optional — omitting reuses a connected tab).
|
|
680
647
|
const url = rest.find((a) => !a.startsWith('--') && a !== String(port));
|
|
681
|
-
|
|
648
|
+
const navigate = rest.includes(NAVIGATE_FLAG);
|
|
649
|
+
return url !== undefined
|
|
650
|
+
? { kind: 'open', port, url, navigate }
|
|
651
|
+
: { kind: 'open', port, navigate };
|
|
682
652
|
}
|
|
683
653
|
case DRIVE_COMMAND: {
|
|
684
654
|
const r = parseDriveSuffix(rest, defaultPort, defaultHeadless);
|
|
685
|
-
if ('error' === r.kind)
|
|
655
|
+
if ('error' === r.kind) {
|
|
686
656
|
return r;
|
|
657
|
+
}
|
|
687
658
|
return { kind: 'drive', port: r.port, driveUrl: r.driveUrl, headless: r.headless };
|
|
688
659
|
}
|
|
689
660
|
case DAEMON_INNER_COMMAND: {
|
|
690
661
|
const r = parseServeFlags(rest, defaultPort, defaultHeadless);
|
|
691
|
-
if ('error' === r.kind)
|
|
662
|
+
if ('error' === r.kind) {
|
|
692
663
|
return r;
|
|
664
|
+
}
|
|
693
665
|
return {
|
|
694
666
|
kind: '_daemon',
|
|
695
667
|
port: r.port,
|
|
@@ -702,8 +674,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
702
674
|
}
|
|
703
675
|
case VERIFY_COMMAND: {
|
|
704
676
|
const r = parseVerifySuffix(rest, defaultPort);
|
|
705
|
-
if ('error' === r.kind)
|
|
677
|
+
if ('error' === r.kind) {
|
|
706
678
|
return r;
|
|
679
|
+
}
|
|
707
680
|
return {
|
|
708
681
|
kind: 'verify',
|
|
709
682
|
url: r.url,
|
|
@@ -749,6 +722,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
749
722
|
...(session === undefined ? {} : { session }),
|
|
750
723
|
};
|
|
751
724
|
}
|
|
725
|
+
// `cli.ts` runs `hook` before this parser. Reached only without that dispatch: say what it does.
|
|
726
|
+
case HOOK_COMMAND:
|
|
727
|
+
return { kind: 'help', topic: HOOK_COMMAND };
|
|
752
728
|
case CONTEXT_COMMAND: {
|
|
753
729
|
// `--compact` is the only form; accepted so the hook line reads as what it does.
|
|
754
730
|
const at = rest.indexOf(SESSION_FLAG);
|
|
@@ -761,8 +737,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
|
|
|
761
737
|
return { kind: 'rollback' };
|
|
762
738
|
case MCP_COMMAND: {
|
|
763
739
|
const r = parseServeFlags(rest, defaultPort, defaultHeadless);
|
|
764
|
-
if ('error' === r.kind)
|
|
740
|
+
if ('error' === r.kind) {
|
|
765
741
|
return r;
|
|
742
|
+
}
|
|
766
743
|
return {
|
|
767
744
|
kind: 'mcp',
|
|
768
745
|
port: r.port,
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The `reticle` help text.
|
|
3
|
-
*
|
|
4
|
-
* `reticle --help` is short: the commands a person needs, one line each, in four groups. Every other
|
|
5
|
-
* command is still there and still works; `reticle help all` lists it, and `reticle <command> --help`
|
|
6
|
-
* carries the detail that used to sit in the one long page.
|
|
7
|
-
*
|
|
8
|
-
* The lines say `reticle <command>`, which is the bin this package installs. Copied into `npx` it is
|
|
9
|
-
* not: `npx reticle` resolves the PACKAGE named `reticle`, which belongs to somebody else, and npx
|
|
10
|
-
* will happily fetch and run it. So the npx spelling leads every page.
|
|
11
|
-
*/
|
|
12
1
|
export declare const HelpGroup: {
|
|
13
2
|
readonly START: "Get started";
|
|
14
3
|
readonly CHECK: "Check your app";
|