@reticlehq/server 2.0.1 → 2.2.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/LICENSE-ENTERPRISE +37 -0
- package/README.md +5 -1
- package/dist/bridge-security.d.ts +1 -1
- package/dist/bridge-security.js +1 -1
- package/dist/bridge.d.ts +7 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +62 -6
- package/dist/bridge.js.map +1 -1
- package/dist/bridge.test-harness.d.ts +5 -0
- package/dist/bridge.test-harness.d.ts.map +1 -1
- package/dist/bridge.test-harness.js +4 -0
- package/dist/bridge.test-harness.js.map +1 -1
- package/dist/capsule/capsule-store.d.ts +66 -0
- package/dist/capsule/capsule-store.d.ts.map +1 -0
- package/dist/capsule/capsule-store.js +110 -0
- package/dist/capsule/capsule-store.js.map +1 -0
- package/dist/capsule/capsule.d.ts +19 -0
- package/dist/capsule/capsule.d.ts.map +1 -0
- package/dist/capsule/capsule.js +36 -0
- package/dist/capsule/capsule.js.map +1 -0
- package/dist/capsule/causal-summary.d.ts +36 -0
- package/dist/capsule/causal-summary.d.ts.map +1 -0
- package/dist/capsule/causal-summary.js +111 -0
- package/dist/capsule/causal-summary.js.map +1 -0
- package/dist/capsule/divergence.d.ts +31 -0
- package/dist/capsule/divergence.d.ts.map +1 -0
- package/dist/capsule/divergence.js +41 -0
- package/dist/capsule/divergence.js.map +1 -0
- package/dist/capsule/minimize.d.ts +13 -0
- package/dist/capsule/minimize.d.ts.map +1 -0
- package/dist/capsule/minimize.js +23 -0
- package/dist/capsule/minimize.js.map +1 -0
- package/dist/capsule/predicate-to-links.d.ts +9 -0
- package/dist/capsule/predicate-to-links.d.ts.map +1 -0
- package/dist/capsule/predicate-to-links.js +31 -0
- package/dist/capsule/predicate-to-links.js.map +1 -0
- package/dist/cli-flow-commands.d.ts +31 -0
- package/dist/cli-flow-commands.d.ts.map +1 -0
- package/dist/cli-flow-commands.js +207 -0
- package/dist/cli-flow-commands.js.map +1 -0
- package/dist/cli-launch.d.ts.map +1 -1
- package/dist/cli-launch.js +1 -2
- package/dist/cli-launch.js.map +1 -1
- package/dist/cli-parse.d.ts +18 -2
- package/dist/cli-parse.d.ts.map +1 -1
- package/dist/cli-parse.js +57 -0
- package/dist/cli-parse.js.map +1 -1
- package/dist/cli-port.d.ts +10 -4
- package/dist/cli-port.d.ts.map +1 -1
- package/dist/cli-port.js +32 -6
- package/dist/cli-port.js.map +1 -1
- package/dist/cli-verify.d.ts.map +1 -1
- package/dist/cli-verify.js +29 -10
- package/dist/cli-verify.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +83 -13
- package/dist/cli.js.map +1 -1
- package/dist/crawl/crawl-tools.d.ts.map +1 -1
- package/dist/crawl/crawl-tools.js +12 -0
- package/dist/crawl/crawl-tools.js.map +1 -1
- package/dist/crawl/crawl.d.ts +23 -1
- package/dist/crawl/crawl.d.ts.map +1 -1
- package/dist/crawl/crawl.js +42 -12
- package/dist/crawl/crawl.js.map +1 -1
- package/dist/daemon-resilience.d.ts +5 -5
- package/dist/daemon-resilience.js +5 -5
- package/dist/daemon.d.ts +9 -3
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +41 -8
- package/dist/daemon.js.map +1 -1
- package/dist/domain/domain-tools.d.ts.map +1 -1
- package/dist/domain/domain-tools.js +11 -1
- package/dist/domain/domain-tools.js.map +1 -1
- package/dist/domain/flow-risk.d.ts +4 -4
- package/dist/domain/flow-risk.js +4 -4
- package/dist/ee/audit-log.d.ts +2 -2
- package/dist/ee/audit-log.js +2 -2
- package/dist/events/event-filters.d.ts +35 -1
- package/dist/events/event-filters.d.ts.map +1 -1
- package/dist/events/event-filters.js +93 -6
- package/dist/events/event-filters.js.map +1 -1
- package/dist/events/predicate-eval.d.ts +15 -0
- package/dist/events/predicate-eval.d.ts.map +1 -1
- package/dist/events/predicate-eval.js +130 -9
- package/dist/events/predicate-eval.js.map +1 -1
- package/dist/events/predicate.d.ts +22 -1
- package/dist/events/predicate.d.ts.map +1 -1
- package/dist/events/predicate.js +169 -15
- package/dist/events/predicate.js.map +1 -1
- package/dist/events/ring-buffer.d.ts +10 -8
- package/dist/events/ring-buffer.d.ts.map +1 -1
- package/dist/events/ring-buffer.js +84 -25
- package/dist/events/ring-buffer.js.map +1 -1
- package/dist/flows/affected.d.ts +25 -0
- package/dist/flows/affected.d.ts.map +1 -0
- package/dist/flows/affected.js +36 -0
- package/dist/flows/affected.js.map +1 -0
- package/dist/flows/annotate.d.ts +4 -4
- package/dist/flows/annotate.js +4 -4
- package/dist/flows/assertion-integrity.d.ts +24 -0
- package/dist/flows/assertion-integrity.d.ts.map +1 -0
- package/dist/flows/assertion-integrity.js +27 -0
- package/dist/flows/assertion-integrity.js.map +1 -0
- package/dist/flows/assertion-tiers-store.d.ts +80 -0
- package/dist/flows/assertion-tiers-store.d.ts.map +1 -0
- package/dist/flows/assertion-tiers-store.js +99 -0
- package/dist/flows/assertion-tiers-store.js.map +1 -0
- package/dist/flows/buddy-status.d.ts +25 -0
- package/dist/flows/buddy-status.d.ts.map +1 -0
- package/dist/flows/buddy-status.js +33 -0
- package/dist/flows/buddy-status.js.map +1 -0
- package/dist/flows/coverage.d.ts +28 -0
- package/dist/flows/coverage.d.ts.map +1 -0
- package/dist/flows/coverage.js +22 -0
- package/dist/flows/coverage.js.map +1 -0
- package/dist/flows/decision.d.ts.map +1 -1
- package/dist/flows/decision.js +18 -9
- package/dist/flows/decision.js.map +1 -1
- package/dist/flows/flake-store.d.ts +20 -0
- package/dist/flows/flake-store.d.ts.map +1 -0
- package/dist/flows/flake-store.js +59 -0
- package/dist/flows/flake-store.js.map +1 -0
- package/dist/flows/flake.d.ts +58 -0
- package/dist/flows/flake.d.ts.map +1 -0
- package/dist/flows/flake.js +36 -0
- package/dist/flows/flake.js.map +1 -0
- package/dist/flows/flow-classify.d.ts +8 -8
- package/dist/flows/flow-classify.d.ts.map +1 -1
- package/dist/flows/flow-classify.js +12 -20
- package/dist/flows/flow-classify.js.map +1 -1
- package/dist/flows/flow-replay-run.d.ts +6 -0
- package/dist/flows/flow-replay-run.d.ts.map +1 -1
- package/dist/flows/flow-replay-run.js +49 -0
- package/dist/flows/flow-replay-run.js.map +1 -1
- package/dist/flows/flow-replay.d.ts +9 -0
- package/dist/flows/flow-replay.d.ts.map +1 -1
- package/dist/flows/flow-replay.js +52 -18
- package/dist/flows/flow-replay.js.map +1 -1
- package/dist/flows/flow-report.d.ts +4 -4
- package/dist/flows/flow-report.d.ts.map +1 -1
- package/dist/flows/flow-report.js +2 -1
- package/dist/flows/flow-report.js.map +1 -1
- package/dist/flows/flow-sources.d.ts +20 -0
- package/dist/flows/flow-sources.d.ts.map +1 -0
- package/dist/flows/flow-sources.js +33 -0
- package/dist/flows/flow-sources.js.map +1 -0
- package/dist/flows/flow-tools.d.ts +13 -1
- package/dist/flows/flow-tools.d.ts.map +1 -1
- package/dist/flows/flow-tools.js +97 -152
- package/dist/flows/flow-tools.js.map +1 -1
- package/dist/flows/flows.d.ts +9 -4
- package/dist/flows/flows.d.ts.map +1 -1
- package/dist/flows/flows.js +39 -27
- package/dist/flows/flows.js.map +1 -1
- package/dist/flows/gate.d.ts +39 -0
- package/dist/flows/gate.d.ts.map +1 -0
- package/dist/flows/gate.js +34 -0
- package/dist/flows/gate.js.map +1 -0
- package/dist/flows/git-changed.d.ts +9 -0
- package/dist/flows/git-changed.d.ts.map +1 -0
- package/dist/flows/git-changed.js +25 -0
- package/dist/flows/git-changed.js.map +1 -0
- package/dist/flows/heal-run.d.ts +19 -0
- package/dist/flows/heal-run.d.ts.map +1 -0
- package/dist/flows/heal-run.js +137 -0
- package/dist/flows/heal-run.js.map +1 -0
- package/dist/flows/parallel-suite.d.ts +27 -0
- package/dist/flows/parallel-suite.d.ts.map +1 -0
- package/dist/flows/parallel-suite.js +51 -0
- package/dist/flows/parallel-suite.js.map +1 -0
- package/dist/flows/replay.d.ts +13 -0
- package/dist/flows/replay.d.ts.map +1 -1
- package/dist/flows/replay.js +56 -23
- package/dist/flows/replay.js.map +1 -1
- package/dist/flows/watch-batcher.d.ts +18 -0
- package/dist/flows/watch-batcher.d.ts.map +1 -0
- package/dist/flows/watch-batcher.js +20 -0
- package/dist/flows/watch-batcher.js.map +1 -0
- package/dist/honesty/blind-spots.d.ts +37 -0
- package/dist/honesty/blind-spots.d.ts.map +1 -0
- package/dist/honesty/blind-spots.js +57 -0
- package/dist/honesty/blind-spots.js.map +1 -0
- package/dist/honesty/honesty.d.ts +57 -0
- package/dist/honesty/honesty.d.ts.map +1 -0
- package/dist/honesty/honesty.js +63 -0
- package/dist/honesty/honesty.js.map +1 -0
- package/dist/http-server.d.ts +5 -9
- package/dist/http-server.d.ts.map +1 -1
- package/dist/http-server.js +5 -9
- package/dist/http-server.js.map +1 -1
- package/dist/idle-shutdown.d.ts +2 -2
- package/dist/idle-shutdown.js +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +131 -73
- package/dist/index.js.map +1 -1
- package/dist/init/agent-rules.d.ts +38 -0
- package/dist/init/agent-rules.d.ts.map +1 -0
- package/dist/init/agent-rules.js +65 -0
- package/dist/init/agent-rules.js.map +1 -0
- package/dist/init/mcp.d.ts.map +1 -1
- package/dist/init/mcp.js +4 -3
- package/dist/init/mcp.js.map +1 -1
- package/dist/init/plan.d.ts +6 -0
- package/dist/init/plan.d.ts.map +1 -1
- package/dist/init/plan.js +79 -3
- package/dist/init/plan.js.map +1 -1
- package/dist/init/run.d.ts.map +1 -1
- package/dist/init/run.js +4 -0
- package/dist/init/run.js.map +1 -1
- package/dist/init/snippets.js +1 -1
- package/dist/init/vite-config.d.ts +1 -1
- package/dist/init/vite-config.js +2 -2
- package/dist/init/vite-config.js.map +1 -1
- package/dist/input/network-detail.d.ts +74 -0
- package/dist/input/network-detail.d.ts.map +1 -0
- package/dist/input/network-detail.js +160 -0
- package/dist/input/network-detail.js.map +1 -0
- package/dist/input/network-mock-tools.d.ts.map +1 -1
- package/dist/input/network-mock-tools.js +1 -6
- package/dist/input/network-mock-tools.js.map +1 -1
- package/dist/input/network-mock.d.ts +4 -4
- package/dist/input/real-input.d.ts +44 -11
- package/dist/input/real-input.d.ts.map +1 -1
- package/dist/input/real-input.js +57 -9
- package/dist/input/real-input.js.map +1 -1
- package/dist/input/viewport-tools.d.ts.map +1 -1
- package/dist/input/viewport-tools.js +1 -6
- package/dist/input/viewport-tools.js.map +1 -1
- package/dist/journal/ambient-store.d.ts +16 -0
- package/dist/journal/ambient-store.d.ts.map +1 -0
- package/dist/journal/ambient-store.js +46 -0
- package/dist/journal/ambient-store.js.map +1 -0
- package/dist/journal/ambient.d.ts +48 -0
- package/dist/journal/ambient.d.ts.map +1 -0
- package/dist/journal/ambient.js +48 -0
- package/dist/journal/ambient.js.map +1 -0
- package/dist/journal/attach-journal.d.ts +22 -0
- package/dist/journal/attach-journal.d.ts.map +1 -0
- package/dist/journal/attach-journal.js +20 -0
- package/dist/journal/attach-journal.js.map +1 -0
- package/dist/journal/deviation-report.d.ts +28 -0
- package/dist/journal/deviation-report.d.ts.map +1 -0
- package/dist/journal/deviation-report.js +54 -0
- package/dist/journal/deviation-report.js.map +1 -0
- package/dist/journal/deviation-service.d.ts +12 -0
- package/dist/journal/deviation-service.d.ts.map +1 -0
- package/dist/journal/deviation-service.js +32 -0
- package/dist/journal/deviation-service.js.map +1 -0
- package/dist/journal/envelope-store.d.ts +19 -0
- package/dist/journal/envelope-store.d.ts.map +1 -0
- package/dist/journal/envelope-store.js +62 -0
- package/dist/journal/envelope-store.js.map +1 -0
- package/dist/journal/envelope.d.ts +232 -0
- package/dist/journal/envelope.d.ts.map +1 -0
- package/dist/journal/envelope.js +94 -0
- package/dist/journal/envelope.js.map +1 -0
- package/dist/journal/journal-query.d.ts +20 -0
- package/dist/journal/journal-query.d.ts.map +1 -0
- package/dist/journal/journal-query.js +28 -0
- package/dist/journal/journal-query.js.map +1 -0
- package/dist/journal/journal-recorder.d.ts +38 -0
- package/dist/journal/journal-recorder.d.ts.map +1 -0
- package/dist/journal/journal-recorder.js +81 -0
- package/dist/journal/journal-recorder.js.map +1 -0
- package/dist/journal/retention.d.ts +21 -0
- package/dist/journal/retention.d.ts.map +1 -0
- package/dist/journal/retention.js +50 -0
- package/dist/journal/retention.js.map +1 -0
- package/dist/journal/rollups.d.ts +49 -0
- package/dist/journal/rollups.d.ts.map +1 -0
- package/dist/journal/rollups.js +83 -0
- package/dist/journal/rollups.js.map +1 -0
- package/dist/journal/session-end.d.ts +32 -0
- package/dist/journal/session-end.d.ts.map +1 -0
- package/dist/journal/session-end.js +52 -0
- package/dist/journal/session-end.js.map +1 -0
- package/dist/journal/session-journal.d.ts +25 -0
- package/dist/journal/session-journal.d.ts.map +1 -0
- package/dist/journal/session-journal.js +168 -0
- package/dist/journal/session-journal.js.map +1 -0
- package/dist/license/license.d.ts +8 -3
- package/dist/license/license.d.ts.map +1 -1
- package/dist/license/license.js +34 -11
- package/dist/license/license.js.map +1 -1
- package/dist/mcp-proxy.d.ts +20 -0
- package/dist/mcp-proxy.d.ts.map +1 -1
- package/dist/mcp-proxy.js +52 -29
- package/dist/mcp-proxy.js.map +1 -1
- package/dist/mcp.d.ts +22 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +93 -10
- package/dist/mcp.js.map +1 -1
- package/dist/oracles/flow-instrument-gaps.d.ts +19 -0
- package/dist/oracles/flow-instrument-gaps.d.ts.map +1 -0
- package/dist/oracles/flow-instrument-gaps.js +45 -0
- package/dist/oracles/flow-instrument-gaps.js.map +1 -0
- package/dist/oracles/propose-consequences.d.ts +22 -0
- package/dist/oracles/propose-consequences.d.ts.map +1 -0
- package/dist/oracles/propose-consequences.js +93 -0
- package/dist/oracles/propose-consequences.js.map +1 -0
- package/dist/oracles/self-instrument.d.ts +32 -0
- package/dist/oracles/self-instrument.d.ts.map +1 -0
- package/dist/oracles/self-instrument.js +44 -0
- package/dist/oracles/self-instrument.js.map +1 -0
- package/dist/pairing-token.d.ts +1 -1
- package/dist/phenomena/phenomena.d.ts +27 -0
- package/dist/phenomena/phenomena.d.ts.map +1 -0
- package/dist/phenomena/phenomena.js +102 -0
- package/dist/phenomena/phenomena.js.map +1 -0
- package/dist/pool/browser-pool.d.ts +5 -3
- package/dist/pool/browser-pool.d.ts.map +1 -1
- package/dist/pool/browser-pool.js +21 -3
- package/dist/pool/browser-pool.js.map +1 -1
- package/dist/pool/playwright-launcher.d.ts +2 -2
- package/dist/pool/playwright-launcher.d.ts.map +1 -1
- package/dist/pool/playwright-launcher.js +20 -6
- package/dist/pool/playwright-launcher.js.map +1 -1
- package/dist/project/file-lock.d.ts +2 -0
- package/dist/project/file-lock.d.ts.map +1 -0
- package/dist/project/file-lock.js +24 -0
- package/dist/project/file-lock.js.map +1 -0
- package/dist/project/fs-port.d.ts +18 -0
- package/dist/project/fs-port.d.ts.map +1 -1
- package/dist/project/fs-port.js +24 -2
- package/dist/project/fs-port.js.map +1 -1
- package/dist/project/project-store.d.ts.map +1 -1
- package/dist/project/project-store.js +13 -7
- package/dist/project/project-store.js.map +1 -1
- package/dist/project/project-tools.d.ts +0 -6
- package/dist/project/project-tools.d.ts.map +1 -1
- package/dist/project/project-tools.js +25 -7
- package/dist/project/project-tools.js.map +1 -1
- package/dist/project/reticle-dir.d.ts +39 -14
- package/dist/project/reticle-dir.d.ts.map +1 -1
- package/dist/project/reticle-dir.js +30 -4
- package/dist/project/reticle-dir.js.map +1 -1
- package/dist/runs/build-verification-run.d.ts +1 -1
- package/dist/runs/build-verification-run.js +1 -1
- package/dist/runs/repair-prompt.d.ts +2 -0
- package/dist/runs/repair-prompt.d.ts.map +1 -1
- package/dist/runs/repair-prompt.js +14 -1
- package/dist/runs/repair-prompt.js.map +1 -1
- package/dist/runs/reticle-runner.d.ts +1 -1
- package/dist/runs/reticle-runner.d.ts.map +1 -1
- package/dist/runs/run-diff.d.ts +34 -0
- package/dist/runs/run-diff.d.ts.map +1 -0
- package/dist/runs/run-diff.js +71 -0
- package/dist/runs/run-diff.js.map +1 -0
- package/dist/runs/run-store.d.ts +6 -1
- package/dist/runs/run-store.d.ts.map +1 -1
- package/dist/runs/run-store.js +22 -2
- package/dist/runs/run-store.js.map +1 -1
- package/dist/runs/run-tools.d.ts.map +1 -1
- package/dist/runs/run-tools.js +16 -3
- package/dist/runs/run-tools.js.map +1 -1
- package/dist/runs/verify-server.js +1 -1
- package/dist/runs/verify-server.js.map +1 -1
- package/dist/server-version.d.ts +5 -0
- package/dist/server-version.d.ts.map +1 -1
- package/dist/server-version.js +5 -0
- package/dist/server-version.js.map +1 -1
- package/dist/session/control-envelope.d.ts +9 -1
- package/dist/session/control-envelope.d.ts.map +1 -1
- package/dist/session/control-envelope.js +13 -1
- package/dist/session/control-envelope.js.map +1 -1
- package/dist/session/live-control-tools.d.ts +1 -1
- package/dist/session/live-control-tools.d.ts.map +1 -1
- package/dist/session/live-control-tools.js +2 -7
- package/dist/session/live-control-tools.js.map +1 -1
- package/dist/session/live-control.d.ts +38 -0
- package/dist/session/live-control.d.ts.map +1 -0
- package/dist/session/live-control.js +64 -0
- package/dist/session/live-control.js.map +1 -0
- package/dist/session/observed-state.d.ts +46 -0
- package/dist/session/observed-state.d.ts.map +1 -0
- package/dist/session/observed-state.js +76 -0
- package/dist/session/observed-state.js.map +1 -0
- package/dist/session/output-budget.d.ts +9 -0
- package/dist/session/output-budget.d.ts.map +1 -1
- package/dist/session/output-budget.js +12 -1
- package/dist/session/output-budget.js.map +1 -1
- package/dist/session/review-store.d.ts +1 -1
- package/dist/session/review-store.d.ts.map +1 -1
- package/dist/session/review-store.js +2 -2
- package/dist/session/review-store.js.map +1 -1
- package/dist/session/session-manager.d.ts +9 -7
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +8 -8
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/session-readiness.js +1 -1
- package/dist/session/session-readiness.js.map +1 -1
- package/dist/session/session-reaper.d.ts +1 -1
- package/dist/session/session-reaper.js +1 -1
- package/dist/session/session-recommendation.d.ts +1 -1
- package/dist/session/session-recommendation.js +1 -1
- package/dist/session/session-tools.js +1 -1
- package/dist/session/session-tools.js.map +1 -1
- package/dist/session/session.d.ts +44 -12
- package/dist/session/session.d.ts.map +1 -1
- package/dist/session/session.js +116 -47
- package/dist/session/session.js.map +1 -1
- package/dist/tools/act-tools.d.ts.map +1 -1
- package/dist/tools/act-tools.js +257 -70
- package/dist/tools/act-tools.js.map +1 -1
- package/dist/tools/act-view.d.ts +4 -4
- package/dist/tools/act-view.js +4 -4
- package/dist/tools/assert-grade.d.ts.map +1 -1
- package/dist/tools/assert-grade.js +15 -26
- package/dist/tools/assert-grade.js.map +1 -1
- package/dist/tools/browser-tools.d.ts.map +1 -1
- package/dist/tools/browser-tools.js +32 -8
- package/dist/tools/browser-tools.js.map +1 -1
- package/dist/tools/contract-tools.d.ts.map +1 -1
- package/dist/tools/contract-tools.js +5 -0
- package/dist/tools/contract-tools.js.map +1 -1
- package/dist/tools/dynamic-tools.d.ts.map +1 -1
- package/dist/tools/dynamic-tools.js +7 -6
- package/dist/tools/dynamic-tools.js.map +1 -1
- package/dist/tools/invoke-tool.d.ts.map +1 -1
- package/dist/tools/invoke-tool.js +41 -30
- package/dist/tools/invoke-tool.js.map +1 -1
- package/dist/tools/lease-tools.d.ts +16 -0
- package/dist/tools/lease-tools.d.ts.map +1 -1
- package/dist/tools/lease-tools.js +11 -0
- package/dist/tools/lease-tools.js.map +1 -1
- package/dist/tools/merge-tools.d.ts +43 -0
- package/dist/tools/merge-tools.d.ts.map +1 -0
- package/dist/tools/merge-tools.js +66 -0
- package/dist/tools/merge-tools.js.map +1 -0
- package/dist/tools/observe-tools.d.ts.map +1 -1
- package/dist/tools/observe-tools.js +172 -29
- package/dist/tools/observe-tools.js.map +1 -1
- package/dist/tools/profiles.d.ts +18 -13
- package/dist/tools/profiles.d.ts.map +1 -1
- package/dist/tools/profiles.js +39 -33
- package/dist/tools/profiles.js.map +1 -1
- package/dist/tools/query-paginate.d.ts +9 -2
- package/dist/tools/query-paginate.d.ts.map +1 -1
- package/dist/tools/query-paginate.js +21 -4
- package/dist/tools/query-paginate.js.map +1 -1
- package/dist/tools/read-tools.d.ts.map +1 -1
- package/dist/tools/read-tools.js +95 -2
- package/dist/tools/read-tools.js.map +1 -1
- package/dist/tools/snapshot-delta.d.ts +2 -0
- package/dist/tools/snapshot-delta.d.ts.map +1 -1
- package/dist/tools/snapshot-delta.js +0 -0
- package/dist/tools/snapshot-delta.js.map +1 -1
- package/dist/tools/tool-kit.d.ts +11 -2
- package/dist/tools/tool-kit.d.ts.map +1 -1
- package/dist/tools/tool-kit.js +24 -1
- package/dist/tools/tool-kit.js.map +1 -1
- package/dist/tools/tool-names.d.ts +19 -10
- package/dist/tools/tool-names.d.ts.map +1 -1
- package/dist/tools/tool-names.js +23 -13
- package/dist/tools/tool-names.js.map +1 -1
- package/dist/tools/tools-helpers.d.ts +12 -0
- package/dist/tools/tools-helpers.d.ts.map +1 -1
- package/dist/tools/tools-helpers.js +20 -0
- package/dist/tools/tools-helpers.js.map +1 -1
- package/dist/tools/tools.d.ts.map +1 -1
- package/dist/tools/tools.js +162 -12
- package/dist/tools/tools.js.map +1 -1
- package/dist/update/update-checker.d.ts +14 -1
- package/dist/update/update-checker.d.ts.map +1 -1
- package/dist/update/update-checker.js +9 -5
- package/dist/update/update-checker.js.map +1 -1
- package/dist/update/updater.d.ts +20 -2
- package/dist/update/updater.d.ts.map +1 -1
- package/dist/update/updater.js +48 -14
- package/dist/update/updater.js.map +1 -1
- package/dist/visual/visual-tools.d.ts.map +1 -1
- package/dist/visual/visual-tools.js +1 -6
- package/dist/visual/visual-tools.js.map +1 -1
- package/package.json +8 -3
- package/dist/update/update-tools.d.ts +0 -3
- package/dist/update/update-tools.d.ts.map +0 -1
- package/dist/update/update-tools.js +0 -94
- package/dist/update/update-tools.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/tools-helpers.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAShE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEhE"}
|
|
1
|
+
{"version":3,"file":"tools-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/tools-helpers.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAShE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAS7D"}
|
|
@@ -19,4 +19,24 @@ export function asNumber(value) {
|
|
|
19
19
|
export function asRecord(value) {
|
|
20
20
|
return typeof value === 'object' && value !== null ? value : {};
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* A `{ file, line }` source location off an untrusted result payload, or undefined.
|
|
24
|
+
*
|
|
25
|
+
* The browser sends this alongside an act's anchor so a failure can name the file to open. Validated
|
|
26
|
+
* rather than cast: it crosses the wire, and a half-formed location rendered as "undefined:NaN" is
|
|
27
|
+
* worse than no location at all — it looks like an answer.
|
|
28
|
+
*/
|
|
29
|
+
export function sourceOf(value) {
|
|
30
|
+
if (value === null || typeof value !== 'object')
|
|
31
|
+
return undefined;
|
|
32
|
+
const record = value;
|
|
33
|
+
const file = record['file'];
|
|
34
|
+
const line = record['line'];
|
|
35
|
+
if (typeof file !== 'string' || file.length === 0 || typeof line !== 'number')
|
|
36
|
+
return undefined;
|
|
37
|
+
const out = { file, line };
|
|
38
|
+
if (typeof record['column'] === 'number')
|
|
39
|
+
out.column = record['column'];
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
22
42
|
//# sourceMappingURL=tools-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-helpers.js","sourceRoot":"","sources":["../../src/tools/tools-helpers.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAO1D,qFAAqF;AACrF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC"}
|
|
1
|
+
{"version":3,"file":"tools-helpers.js","sourceRoot":"","sources":["../../src/tools/tools-helpers.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAO1D,qFAAqF;AACrF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChG,MAAM,GAAG,GAAoD,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5E,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ;QAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxE,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,eAAe,CAAC;AAQ7E,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA+cvD,eAAO,MAAM,KAAK,EAAE,OAAO,EAA8D,CAAC"}
|
package/dist/tools/tools.js
CHANGED
|
@@ -19,15 +19,15 @@ import { VIEWPORT_TOOLS } from '../input/viewport-tools.js';
|
|
|
19
19
|
import { SESSION_TOOLS } from '../session/session-tools.js';
|
|
20
20
|
import { ANNOTATE_TOOLS } from '../flows/annotate-tools.js';
|
|
21
21
|
import { LIVE_CONTROL_TOOLS } from '../session/live-control-tools.js';
|
|
22
|
-
import { UPDATE_TOOLS } from '../update/update-tools.js';
|
|
23
22
|
import { sessionIdShape, commandOrThrow } from './tool-kit.js';
|
|
23
|
+
import { applyMerges } from './merge-tools.js';
|
|
24
24
|
import { ACT_TOOLS } from './act-tools.js';
|
|
25
25
|
import { OBSERVE_TOOLS } from './observe-tools.js';
|
|
26
26
|
import { READ_TOOLS } from './read-tools.js';
|
|
27
27
|
import { LEASE_TOOLS } from './lease-tools.js';
|
|
28
28
|
/** Per-server last-snapshot cache backing reticle_snapshot's diff:true delta mode (route-invalidated). */
|
|
29
29
|
const SNAPSHOT_CACHE = new SnapshotCache();
|
|
30
|
-
|
|
30
|
+
const RAW_TOOLS = [
|
|
31
31
|
{
|
|
32
32
|
name: ReticleTool.SESSIONS,
|
|
33
33
|
description: 'List connected browser sessions (tab url/title, sessionId, last-seen, health: hidden/focused/throttled, and `realInputAvailable` — true when native CDP/launched real input is driving this tab), plus a `recommendation` pointing to `reticle drive` when a tab is hidden/throttled and may be un-scriptable from here.',
|
|
@@ -110,15 +110,39 @@ export const TOOLS = [
|
|
|
110
110
|
.object({ bytes: z.number(), tokens: z.number() })
|
|
111
111
|
.optional()
|
|
112
112
|
.describe('Estimated size of this result — re-scope if large.'),
|
|
113
|
+
// buildSnapshot has always returned these; leaving them undeclared stripped them from
|
|
114
|
+
// structuredContent, so a schema-aware client saw a tree that ended abruptly with no way to
|
|
115
|
+
// tell a small page from a capped one. Every "that element isn't rendered" conclusion drawn
|
|
116
|
+
// from a capped tree inherits the omission.
|
|
117
|
+
nodes: z.number().optional().describe('How many nodes this tree actually contains.'),
|
|
118
|
+
truncated: z
|
|
119
|
+
.boolean()
|
|
120
|
+
.optional()
|
|
121
|
+
.describe('True when the page exceeded the snapshot cap. The tree is then a document-order PREFIX: an element being absent from it does NOT mean it is absent from the page.'),
|
|
122
|
+
note: z
|
|
123
|
+
.string()
|
|
124
|
+
.optional()
|
|
125
|
+
.describe('Present when a diff was computed over a capped tree — "unchanged" is then partial.'),
|
|
126
|
+
scopeMissing: z
|
|
127
|
+
.boolean()
|
|
128
|
+
.optional()
|
|
129
|
+
.describe('True when a scope was given but resolved to nothing — the tree is EMPTY on purpose, not because the page is empty. Do not read an absent element as absent from the page; re-check the scope.'),
|
|
113
130
|
},
|
|
114
|
-
|
|
115
|
-
|
|
131
|
+
// async so a synchronous resolve() failure (no session connected) surfaces as a REJECTED promise —
|
|
132
|
+
// the handler contract every caller relies on — not a throw that escapes a direct invocation.
|
|
133
|
+
handler: async (deps, args) => {
|
|
134
|
+
// Resolve ONCE and key the diff cache on the RESOLVED session id. Keying on `sessionId ?? 'default'`
|
|
135
|
+
// meant two different auto-selected sessions (agent omits sessionId) shared the 'default' slot, so
|
|
136
|
+
// diff:true computed a delta against the WRONG session's prior snapshot — a cross-session false
|
|
137
|
+
// change. Pass the resolved id to the command too, so the cache key and the snapshotted session
|
|
138
|
+
// can't drift apart via a second auto-selection.
|
|
139
|
+
const resolved = deps.sessions.resolve(asString(args['sessionId']));
|
|
116
140
|
const mode = asString(args['mode']) ?? SnapshotMode.FULL;
|
|
117
|
-
return commandOrThrow(deps,
|
|
141
|
+
return commandOrThrow(deps, resolved.id, ReticleCommand.SNAPSHOT, {
|
|
118
142
|
scope: args['scope'],
|
|
119
143
|
mode,
|
|
120
144
|
}).then((raw) => withSizeCost(applySnapshotDelta(raw, {
|
|
121
|
-
sessionId:
|
|
145
|
+
sessionId: resolved.id,
|
|
122
146
|
scope: asString(args['scope']) ?? '',
|
|
123
147
|
mode,
|
|
124
148
|
diff: args['diff'] === true,
|
|
@@ -127,7 +151,7 @@ export const TOOLS = [
|
|
|
127
151
|
},
|
|
128
152
|
{
|
|
129
153
|
name: ReticleTool.QUERY,
|
|
130
|
-
description: 'Find elements by Testing-Library semantics. Pass `by` (role|text|label|placeholder|testid|alt) and `value` (the query string). Returns matching refs + descriptors + visibility. Pass `limit` to cap descriptors (broad role queries can be large) or `count_only:true` for just the match count — both cut tokens. On zero matches, also returns hint:{ route,
|
|
154
|
+
description: 'Find elements by Testing-Library semantics, INCLUDING inside open shadow roots. Pass `by` (role|text|label|placeholder|testid|alt) and `value` (the query string). Returns matching refs + descriptors + visibility. Pass `attrs:["href"]` to project attributes (link/image URLs) onto each match. Pass `limit` to cap descriptors (broad role queries can be large) or `count_only:true` for just the match count — both cut tokens. On zero matches, also returns hint:{ route, presentRegions[], knownEmptyState } so you can distinguish an empty state from a missing element WITHOUT taking a snapshot.',
|
|
131
155
|
inputSchema: {
|
|
132
156
|
by: z.string().describe('Query strategy: role | text | label | placeholder | testid | alt'),
|
|
133
157
|
value: z
|
|
@@ -141,6 +165,10 @@ export const TOOLS = [
|
|
|
141
165
|
.string()
|
|
142
166
|
.optional()
|
|
143
167
|
.describe('CSS selector or element ref to restrict the search to a subtree.'),
|
|
168
|
+
attrs: z
|
|
169
|
+
.array(z.string())
|
|
170
|
+
.optional()
|
|
171
|
+
.describe("Attribute names to return per match, e.g. ['href'] to inventory links or ['src'] for images. Absent attributes are omitted; credential-bearing names are redacted."),
|
|
144
172
|
limit: z
|
|
145
173
|
.number()
|
|
146
174
|
.optional()
|
|
@@ -160,9 +188,29 @@ export const TOOLS = [
|
|
|
160
188
|
value: z.string().optional(),
|
|
161
189
|
states: z.array(z.string()),
|
|
162
190
|
visible: z.boolean(),
|
|
191
|
+
attrs: z
|
|
192
|
+
.record(z.string())
|
|
193
|
+
.optional()
|
|
194
|
+
.describe('Present only for attributes requested via `attrs` and found on the element.'),
|
|
195
|
+
source: z
|
|
196
|
+
.string()
|
|
197
|
+
.optional()
|
|
198
|
+
.describe('Where this element is written, as `file:line` — open this to change it. Present when the app is built with the Reticle plugin in dev; absent in production builds.'),
|
|
199
|
+
chart: z
|
|
200
|
+
.array(z.object({
|
|
201
|
+
kind: z.string(),
|
|
202
|
+
tag: z.string(),
|
|
203
|
+
attr: z.string(),
|
|
204
|
+
sample: z.string(),
|
|
205
|
+
}))
|
|
206
|
+
.optional()
|
|
207
|
+
.describe('Chart geometry faults, present ONLY when the element is a broken chart. kind is non-finite-coordinates | empty-geometry | degenerate-geometry. A healthy chart omits this. Declared here so structuredContent carries it on validating profiles rather than dropping it.'),
|
|
163
208
|
}))
|
|
164
209
|
.optional(),
|
|
165
|
-
count: z
|
|
210
|
+
count: z
|
|
211
|
+
.number()
|
|
212
|
+
.optional()
|
|
213
|
+
.describe('How many elements MATCHED — always exact, even when the returned list was capped. Never derive a count from elements.length.'),
|
|
166
214
|
total: z
|
|
167
215
|
.number()
|
|
168
216
|
.optional()
|
|
@@ -171,7 +219,23 @@ export const TOOLS = [
|
|
|
171
219
|
hint: z
|
|
172
220
|
.object({
|
|
173
221
|
route: z.string(),
|
|
174
|
-
|
|
222
|
+
// The browser emits presentRegions and it was NOT declared here, so zod stripped it from
|
|
223
|
+
// structuredContent on every zero-match result — the successor field was invisible while its
|
|
224
|
+
// deprecated predecessor was the only thing an agent could see. An undeclared field is a
|
|
225
|
+
// silent data loss, which is exactly what this schema exists to prevent.
|
|
226
|
+
presentRegions: z
|
|
227
|
+
.array(z.object({
|
|
228
|
+
role: z.string(),
|
|
229
|
+
name: z.string().optional(),
|
|
230
|
+
childCount: z.number(),
|
|
231
|
+
// `sample` is the orientation payload an agent actually reads ("there is a list with
|
|
232
|
+
// 847 rows, first three are …"). It was omitted from the first version of this
|
|
233
|
+
// declaration, which repeated the original sin one level down.
|
|
234
|
+
sample: z.array(z.string()),
|
|
235
|
+
}))
|
|
236
|
+
.optional()
|
|
237
|
+
.describe('Structural clusters on the page — what IS here, to diagnose the miss.'),
|
|
238
|
+
presentTestids: z.array(z.string()).optional(),
|
|
175
239
|
knownEmptyState: z.boolean(),
|
|
176
240
|
})
|
|
177
241
|
.optional()
|
|
@@ -180,12 +244,20 @@ export const TOOLS = [
|
|
|
180
244
|
.object({ bytes: z.number(), tokens: z.number() })
|
|
181
245
|
.optional()
|
|
182
246
|
.describe('Estimated size of this result — narrow with `name`/`scope`/`limit` if large.'),
|
|
247
|
+
scopeMissing: z
|
|
248
|
+
.boolean()
|
|
249
|
+
.optional()
|
|
250
|
+
.describe('True when a `scope` was given but resolved to nothing — zero matches then means the scope is gone, NOT that the element is absent. The search did not widen to the whole page. Re-check the scope before concluding anything.'),
|
|
183
251
|
},
|
|
184
252
|
handler: (deps, args) => commandOrThrow(deps, asString(args['sessionId']), ReticleCommand.QUERY, {
|
|
185
253
|
by: args['by'],
|
|
186
254
|
value: args['value'],
|
|
187
255
|
name: args['name'],
|
|
188
256
|
scope: args['scope'],
|
|
257
|
+
// The handler forwards an explicit allowlist, so a new input is silently dropped unless it is
|
|
258
|
+
// added here — the browser saw no `attrs` and returned undefined while the unit tests, which
|
|
259
|
+
// call matchQuery directly, passed. Schema plus implementation is not the whole wire.
|
|
260
|
+
attrs: args['attrs'],
|
|
189
261
|
}).then((result) => withSizeCost(paginateQueryResult(result, asNumber(args['limit']), args['count_only'] === true))),
|
|
190
262
|
},
|
|
191
263
|
{
|
|
@@ -225,8 +297,27 @@ export const TOOLS = [
|
|
|
225
297
|
// large inspect payload's fields to strings, which a strict shape would reject; the full object
|
|
226
298
|
// is always present in the text content the agent reads.
|
|
227
299
|
theme: z.unknown().optional(),
|
|
300
|
+
/**
|
|
301
|
+
* Where this element is written, as `file:line`. Present when the app is built with the
|
|
302
|
+
* Reticle build plugin in dev; absent in production builds.
|
|
303
|
+
*/
|
|
304
|
+
source: z.string().optional(),
|
|
305
|
+
/**
|
|
306
|
+
* Component identity from the framework adapter (@reticlehq/react).
|
|
307
|
+
*
|
|
308
|
+
* Declared to match what the handler actually returns. It previously declared
|
|
309
|
+
* `{ name, sourceFile }` while the runtime returned `{ componentStack, source }` — the SDK
|
|
310
|
+
* passes structured content through, so the real shape won and the declaration was simply
|
|
311
|
+
* wrong. An agent reads this schema to decide what to ask for, which makes a wrong schema worse
|
|
312
|
+
* than a missing one.
|
|
313
|
+
*/
|
|
228
314
|
component: z
|
|
229
|
-
.object({
|
|
315
|
+
.object({
|
|
316
|
+
componentStack: z.array(z.string()).optional(),
|
|
317
|
+
source: z
|
|
318
|
+
.object({ file: z.string(), line: z.number(), column: z.number().optional() })
|
|
319
|
+
.optional(),
|
|
320
|
+
})
|
|
230
321
|
.optional(),
|
|
231
322
|
},
|
|
232
323
|
handler: (deps, args) => commandOrThrow(deps, asString(args['sessionId']), ReticleCommand.INSPECT, {
|
|
@@ -258,11 +349,70 @@ export const TOOLS = [
|
|
|
258
349
|
...LIVE_CONTROL_TOOLS,
|
|
259
350
|
// reticle_navigate / reticle_refresh — browser navigation tools. See browser-tools.ts.
|
|
260
351
|
...BROWSER_TOOLS,
|
|
261
|
-
// reticle_version_info / reticle_apply_update / reticle_rollback — update lifecycle tools.
|
|
262
|
-
...UPDATE_TOOLS,
|
|
263
352
|
...ACT_TOOLS,
|
|
264
353
|
...OBSERVE_TOOLS,
|
|
265
354
|
...READ_TOOLS,
|
|
266
355
|
...LEASE_TOOLS,
|
|
267
356
|
];
|
|
357
|
+
/**
|
|
358
|
+
* surface consolidation. Tool defs are re-sent EVERY turn, so the advertised count is a per-turn
|
|
359
|
+
* tax multiplied by loop length. Sibling families collapse into one action-dispatched tool; the member
|
|
360
|
+
* handlers stay defined above and are simply no longer advertised separately.
|
|
361
|
+
*
|
|
362
|
+
* Guardrail (from the plan): the 12-tool core hot-set keeps its EXACT names and shapes and is never
|
|
363
|
+
* merged — sessions/navigate/snapshot/query/act/act_and_wait/observe/network/console/wait_for/assert/state.
|
|
364
|
+
*/
|
|
365
|
+
const MERGE_PLANS = [
|
|
366
|
+
{
|
|
367
|
+
name: ReticleTool.BASELINE,
|
|
368
|
+
description: 'Semantic-state baselines: { action: "save" } snapshots the current state under a name, "list" returns saved names, "diff" compares the live page against a saved baseline (REMOVED/ADDED elements + console-error count).',
|
|
369
|
+
members: {
|
|
370
|
+
save: ReticleTool.BASELINE_SAVE,
|
|
371
|
+
list: ReticleTool.BASELINE_LIST,
|
|
372
|
+
diff: ReticleTool.DIFF,
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
name: ReticleTool.RECORD,
|
|
377
|
+
description: 'Timeline recording: { action: "start" } begins recording under a name, "stop" ends it and returns the reaction report plus a compiled replayable program.',
|
|
378
|
+
members: { start: ReticleTool.RECORD_START, stop: ReticleTool.RECORD_STOP },
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
name: ReticleTool.FLOW,
|
|
382
|
+
description: 'Saved-flow management: { action: "list" } names every saved flow, "load" reads+validates one by flowName, "delete" removes one. The hot verbs (flow_save, flow_replay, flow_verify, flow_heal) stay separate.',
|
|
383
|
+
members: {
|
|
384
|
+
list: ReticleTool.FLOW_LIST,
|
|
385
|
+
load: ReticleTool.FLOW_LOAD,
|
|
386
|
+
delete: ReticleTool.FLOW_DELETE,
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
name: ReticleTool.SESSION,
|
|
391
|
+
description: 'Session lifecycle and the human channel, by action: "tune" adjusts the presenter session (e.g. idle-end window); "yield" hands control back to the human between turns (mode: waiting|ask) and is MANDATORY before you stop driving; "end" terminates the session for good; "resume" clears a human pause; "messages" drains the human→agent inbox; "review" lists/resolves the mistakes a human pinned to elements; "narrate" states your intent on the presenter HUD.',
|
|
392
|
+
members: {
|
|
393
|
+
tune: ReticleTool.SESSION_TUNE,
|
|
394
|
+
yield: ReticleTool.YIELD,
|
|
395
|
+
end: ReticleTool.END_SESSION,
|
|
396
|
+
resume: ReticleTool.RESUME,
|
|
397
|
+
messages: ReticleTool.MESSAGES,
|
|
398
|
+
review: ReticleTool.REVIEW,
|
|
399
|
+
narrate: ReticleTool.NARRATE,
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
name: ReticleTool.LEASE,
|
|
404
|
+
description: 'Isolated headless contexts from the shared pool: { action: "acquire" } leases one and navigates it to the app URL, "release" closes it and frees the slot.',
|
|
405
|
+
members: { acquire: ReticleTool.LEASE_ACQUIRE, release: ReticleTool.LEASE_RELEASE },
|
|
406
|
+
},
|
|
407
|
+
];
|
|
408
|
+
/**
|
|
409
|
+
* Retired from the MCP surface entirely (capability preserved elsewhere, per the plan):
|
|
410
|
+
* - run_record: auto-recording on flow_replay already persists run outcomes.
|
|
411
|
+
*/
|
|
412
|
+
const RETIRED_FROM_SURFACE = [
|
|
413
|
+
ReticleTool.RUN_RECORD, // auto-recording on flow_replay already persists run outcomes
|
|
414
|
+
ReticleTool.REFRESH, // absorbed into reticle_navigate { reload: true }
|
|
415
|
+
ReticleTool.WAIT_READY, // server-internal: the first live call already blocks for the session
|
|
416
|
+
];
|
|
417
|
+
export const TOOLS = applyMerges(RAW_TOOLS, MERGE_PLANS, RETIRED_FROM_SURFACE);
|
|
268
418
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,13 +8,26 @@ interface UpdateManifest {
|
|
|
8
8
|
/** The version that was running before the last update — used for rollback. */
|
|
9
9
|
previousVersion?: string;
|
|
10
10
|
}
|
|
11
|
+
interface NpmPackageInfo {
|
|
12
|
+
version: string;
|
|
13
|
+
reticle?: {
|
|
14
|
+
changelog?: string;
|
|
15
|
+
breakingChanges?: string[];
|
|
16
|
+
};
|
|
17
|
+
}
|
|
11
18
|
export declare function loadManifest(): UpdateManifest | null;
|
|
12
19
|
export declare function saveManifest(manifest: UpdateManifest): void;
|
|
20
|
+
/** Injectable IO for checkForUpdate so the network + manifest cache are testable (default = real). */
|
|
21
|
+
export interface UpdateCheckPorts {
|
|
22
|
+
fetchInfo: () => Promise<NpmPackageInfo>;
|
|
23
|
+
loadManifest: () => UpdateManifest | null;
|
|
24
|
+
saveManifest: (manifest: UpdateManifest) => void;
|
|
25
|
+
}
|
|
13
26
|
/**
|
|
14
27
|
* Returns the current update manifest, refreshing from the npm registry when the cache
|
|
15
28
|
* is older than UpdateCheckIntervalMs. Never throws — falls back to the cached manifest
|
|
16
29
|
* (or a safe "no update" default) when the registry is unreachable.
|
|
17
30
|
*/
|
|
18
|
-
export declare function checkForUpdate(currentVersion: string, now: () => number): Promise<UpdateManifest>;
|
|
31
|
+
export declare function checkForUpdate(currentVersion: string, now: () => number, ports?: UpdateCheckPorts): Promise<UpdateManifest>;
|
|
19
32
|
export {};
|
|
20
33
|
//# sourceMappingURL=update-checker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"AAcA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;CACH;AAED,wBAAgB,YAAY,IAAI,cAAc,GAAG,IAAI,CAQpD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAG3D;AAgCD,sGAAsG;AACtG,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CAClD;AAID;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,MAAM,EACjB,KAAK,GAAE,gBAA+B,GACrC,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
|
|
@@ -3,10 +3,13 @@ import * as https from 'node:https';
|
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import { UpdateCheckIntervalMs } from '@reticlehq/core';
|
|
6
|
+
import { RETICLE_NPM_PACKAGE } from '../server-version.js';
|
|
6
7
|
import { log } from '../log.js';
|
|
7
8
|
const RETICLE_HOME = join(homedir(), '.reticle');
|
|
8
9
|
const MANIFEST_PATH = join(RETICLE_HOME, 'update-manifest.json');
|
|
9
|
-
|
|
10
|
+
// Poll the package that carries the bin (@reticlehq/server), so the version we compare against and
|
|
11
|
+
// the version we install are the same package — not @reticlehq/core, which only tracks it by luck.
|
|
12
|
+
const NPM_REGISTRY = `https://registry.npmjs.org/${RETICLE_NPM_PACKAGE}/latest`;
|
|
10
13
|
export function loadManifest() {
|
|
11
14
|
if (!fs.existsSync(MANIFEST_PATH))
|
|
12
15
|
return null;
|
|
@@ -51,18 +54,19 @@ function fetchNpmInfo() {
|
|
|
51
54
|
req.on('error', reject);
|
|
52
55
|
});
|
|
53
56
|
}
|
|
57
|
+
const defaultPorts = { fetchInfo: fetchNpmInfo, loadManifest, saveManifest };
|
|
54
58
|
/**
|
|
55
59
|
* Returns the current update manifest, refreshing from the npm registry when the cache
|
|
56
60
|
* is older than UpdateCheckIntervalMs. Never throws — falls back to the cached manifest
|
|
57
61
|
* (or a safe "no update" default) when the registry is unreachable.
|
|
58
62
|
*/
|
|
59
|
-
export async function checkForUpdate(currentVersion, now) {
|
|
60
|
-
const cached = loadManifest();
|
|
63
|
+
export async function checkForUpdate(currentVersion, now, ports = defaultPorts) {
|
|
64
|
+
const cached = ports.loadManifest();
|
|
61
65
|
if (cached !== null && cached.currentVersion === currentVersion && isCacheFresh(cached, now)) {
|
|
62
66
|
return cached;
|
|
63
67
|
}
|
|
64
68
|
try {
|
|
65
|
-
const info = await
|
|
69
|
+
const info = await ports.fetchInfo();
|
|
66
70
|
const updateAvailable = info.version !== currentVersion;
|
|
67
71
|
const manifest = {
|
|
68
72
|
currentVersion,
|
|
@@ -75,7 +79,7 @@ export async function checkForUpdate(currentVersion, now) {
|
|
|
75
79
|
: {}),
|
|
76
80
|
...(cached?.previousVersion !== undefined ? { previousVersion: cached.previousVersion } : {}),
|
|
77
81
|
};
|
|
78
|
-
saveManifest(manifest);
|
|
82
|
+
ports.saveManifest(manifest);
|
|
79
83
|
return manifest;
|
|
80
84
|
}
|
|
81
85
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AACjE,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"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"}
|
package/dist/update/updater.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** How this reticle process was launched — determines which npm strategy to use for updates. */
|
|
2
2
|
declare const ExecutionKind: {
|
|
3
|
-
/** Launched via `npx @reticlehq/
|
|
3
|
+
/** Launched via `npx @reticlehq/server` — npm re-resolves the package on restart. */
|
|
4
4
|
readonly NPX: "npx";
|
|
5
5
|
/** Installed globally via `npm install -g`. */
|
|
6
6
|
readonly GLOBAL: "global";
|
|
@@ -16,10 +16,28 @@ type ExecutionKind = (typeof ExecutionKind)[keyof typeof ExecutionKind];
|
|
|
16
16
|
* `node_modules` directory. Everything else is treated as a global install.
|
|
17
17
|
*/
|
|
18
18
|
export declare function detectExecutionKind(): ExecutionKind;
|
|
19
|
+
/**
|
|
20
|
+
* Classify a launch from the entry script path. Pure so it's testable. Global installs ALSO live under
|
|
21
|
+
* a `node_modules`, but under the npm global prefix — a `lib/node_modules` (unix: /usr/local, Homebrew,
|
|
22
|
+
* nvm) or AppData\npm (Windows). Match those FIRST, otherwise a global install is misread as local and
|
|
23
|
+
* `apply_update` npm-installs into the user's own project (polluting their package.json).
|
|
24
|
+
*/
|
|
25
|
+
export declare function classifyExecutionKind(script: string): ExecutionKind;
|
|
26
|
+
interface NpmInstall {
|
|
27
|
+
args: string[];
|
|
28
|
+
cwd?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The npm argv (and optional cwd) that installs `version` for the given launch kind, or null for
|
|
32
|
+
* npx (which re-resolves the package on the next restart — no install needed). Installs
|
|
33
|
+
* `@reticlehq/server` — the package that actually carries the `reticle` bin — never
|
|
34
|
+
* `@reticlehq/core`, which is schema-only and has no executable.
|
|
35
|
+
*/
|
|
36
|
+
export declare function installArgs(version: string, kind: ExecutionKind, localRoot: string | null): NpmInstall | null;
|
|
19
37
|
/**
|
|
20
38
|
* Install targetVersion using the appropriate strategy for the detected execution kind,
|
|
21
39
|
* then exit so Claude Code restarts with the new binary. Saves the current version
|
|
22
|
-
* first so rollback
|
|
40
|
+
* first so rollback can restore it.
|
|
23
41
|
*/
|
|
24
42
|
export declare function applyUpdate(targetVersion: string): Promise<void>;
|
|
25
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"AAWA,gGAAgG;AAChG,QAAA,MAAM,aAAa;IACjB,qFAAqF;;IAErF,+CAA+C;;IAE/C,+CAA+C;;CAEvC,CAAC;AACX,KAAK,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAenE;AAoCD,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,UAAU,GAAG,IAAI,CAOnB;AA8BD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWtE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAc9C"}
|
package/dist/update/updater.js
CHANGED
|
@@ -3,12 +3,13 @@ import { existsSync } from 'node:fs';
|
|
|
3
3
|
import { platform } from 'node:os';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
5
|
import { loadManifest, saveManifest } from './update-checker.js';
|
|
6
|
+
import { RETICLE_NPM_PACKAGE } from '../server-version.js';
|
|
6
7
|
import { log } from '../log.js';
|
|
7
8
|
const NPM_BIN = platform() === 'win32' ? 'npm.cmd' : 'npm';
|
|
8
9
|
const NPM_TIMEOUT_MS = 120_000;
|
|
9
10
|
/** How this reticle process was launched — determines which npm strategy to use for updates. */
|
|
10
11
|
const ExecutionKind = {
|
|
11
|
-
/** Launched via `npx @reticlehq/
|
|
12
|
+
/** Launched via `npx @reticlehq/server` — npm re-resolves the package on restart. */
|
|
12
13
|
NPX: 'npx',
|
|
13
14
|
/** Installed globally via `npm install -g`. */
|
|
14
15
|
GLOBAL: 'global',
|
|
@@ -23,9 +24,27 @@ const ExecutionKind = {
|
|
|
23
24
|
* `node_modules` directory. Everything else is treated as a global install.
|
|
24
25
|
*/
|
|
25
26
|
export function detectExecutionKind() {
|
|
26
|
-
|
|
27
|
+
return classifyExecutionKind(process.argv[1] ?? '');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Classify a launch from the entry script path. Pure so it's testable. Global installs ALSO live under
|
|
31
|
+
* a `node_modules`, but under the npm global prefix — a `lib/node_modules` (unix: /usr/local, Homebrew,
|
|
32
|
+
* nvm) or AppData\npm (Windows). Match those FIRST, otherwise a global install is misread as local and
|
|
33
|
+
* `apply_update` npm-installs into the user's own project (polluting their package.json).
|
|
34
|
+
*/
|
|
35
|
+
export function classifyExecutionKind(script) {
|
|
27
36
|
if (script.includes('/_npx/') || script.includes('\\_npx\\'))
|
|
28
37
|
return ExecutionKind.NPX;
|
|
38
|
+
const globalSignals = [
|
|
39
|
+
'/lib/node_modules/',
|
|
40
|
+
'\\npm\\node_modules\\',
|
|
41
|
+
'/.nvm/',
|
|
42
|
+
'/homebrew/',
|
|
43
|
+
'/usr/local/',
|
|
44
|
+
'/usr/lib/',
|
|
45
|
+
];
|
|
46
|
+
if (globalSignals.some((s) => script.includes(s)))
|
|
47
|
+
return ExecutionKind.GLOBAL;
|
|
29
48
|
if (script.includes('/node_modules/') || script.includes('\\node_modules\\')) {
|
|
30
49
|
return ExecutionKind.LOCAL;
|
|
31
50
|
}
|
|
@@ -55,9 +74,25 @@ function runNpm(args, opts = {}) {
|
|
|
55
74
|
});
|
|
56
75
|
});
|
|
57
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* The npm argv (and optional cwd) that installs `version` for the given launch kind, or null for
|
|
79
|
+
* npx (which re-resolves the package on the next restart — no install needed). Installs
|
|
80
|
+
* `@reticlehq/server` — the package that actually carries the `reticle` bin — never
|
|
81
|
+
* `@reticlehq/core`, which is schema-only and has no executable.
|
|
82
|
+
*/
|
|
83
|
+
export function installArgs(version, kind, localRoot) {
|
|
84
|
+
if (kind === ExecutionKind.NPX)
|
|
85
|
+
return null;
|
|
86
|
+
const pkg = `${RETICLE_NPM_PACKAGE}@${version}`;
|
|
87
|
+
if (kind === ExecutionKind.LOCAL && localRoot !== null) {
|
|
88
|
+
return { args: ['install', pkg], cwd: localRoot };
|
|
89
|
+
}
|
|
90
|
+
return { args: ['install', '-g', pkg] };
|
|
91
|
+
}
|
|
58
92
|
async function installVersion(version, kind) {
|
|
59
|
-
const
|
|
60
|
-
|
|
93
|
+
const localRoot = kind === ExecutionKind.LOCAL ? findLocalProjectRoot() : null;
|
|
94
|
+
const plan = installArgs(version, kind, localRoot);
|
|
95
|
+
if (plan === null) {
|
|
61
96
|
// npx re-resolves the package from npm on the next Claude Code restart — no npm
|
|
62
97
|
// install needed. The restart itself is what triggers the update.
|
|
63
98
|
log('reticle_update_npx_strategy', {
|
|
@@ -65,16 +100,11 @@ async function installVersion(version, kind) {
|
|
|
65
100
|
});
|
|
66
101
|
return;
|
|
67
102
|
}
|
|
68
|
-
if (kind === ExecutionKind.LOCAL) {
|
|
69
|
-
|
|
70
|
-
if (root !== null) {
|
|
71
|
-
await runNpm(['install', pkg], { cwd: root });
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
// Could not find a project root — fall through to global install as a safe default
|
|
103
|
+
if (kind === ExecutionKind.LOCAL && localRoot === null) {
|
|
104
|
+
// Could not find a project root — fell back to a global install as a safe default.
|
|
75
105
|
log('reticle_update_local_no_root', { fallback: 'global' });
|
|
76
106
|
}
|
|
77
|
-
await runNpm(
|
|
107
|
+
await runNpm(plan.args, plan.cwd !== undefined ? { cwd: plan.cwd } : {});
|
|
78
108
|
}
|
|
79
109
|
async function installVersionRollback(version, kind) {
|
|
80
110
|
if (kind === ExecutionKind.NPX) {
|
|
@@ -88,7 +118,7 @@ async function installVersionRollback(version, kind) {
|
|
|
88
118
|
/**
|
|
89
119
|
* Install targetVersion using the appropriate strategy for the detected execution kind,
|
|
90
120
|
* then exit so Claude Code restarts with the new binary. Saves the current version
|
|
91
|
-
* first so rollback
|
|
121
|
+
* first so rollback can restore it.
|
|
92
122
|
*/
|
|
93
123
|
export async function applyUpdate(targetVersion) {
|
|
94
124
|
const manifest = loadManifest();
|
|
@@ -115,6 +145,10 @@ export async function rollback() {
|
|
|
115
145
|
log('reticle_rollback_applying', { version: prev, executionKind: kind });
|
|
116
146
|
await installVersionRollback(prev, kind);
|
|
117
147
|
log('reticle_rollback_applied', { version: prev, executionKind: kind });
|
|
118
|
-
|
|
148
|
+
// For npx, exiting would let the next restart re-resolve @latest — rolling FORWARD, the opposite
|
|
149
|
+
// of rollback. installVersionRollback already told the user to pin the version in.mcp.json, so
|
|
150
|
+
// stay running rather than trigger that. Other kinds installed the old version and must restart.
|
|
151
|
+
if (kind !== ExecutionKind.NPX)
|
|
152
|
+
process.exit(0);
|
|
119
153
|
}
|
|
120
154
|
//# sourceMappingURL=updater.js.map
|