@reticlehq/server 2.0.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 +105 -0
- package/README.md +17 -0
- package/dist/bridge-security.d.ts +23 -0
- package/dist/bridge-security.d.ts.map +1 -0
- package/dist/bridge-security.js +44 -0
- package/dist/bridge-security.js.map +1 -0
- package/dist/bridge.d.ts +42 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +281 -0
- package/dist/bridge.js.map +1 -0
- package/dist/bridge.test-harness.d.ts +42 -0
- package/dist/bridge.test-harness.d.ts.map +1 -0
- package/dist/bridge.test-harness.js +192 -0
- package/dist/bridge.test-harness.js.map +1 -0
- package/dist/cli-launch.d.ts +53 -0
- package/dist/cli-launch.d.ts.map +1 -0
- package/dist/cli-launch.js +109 -0
- package/dist/cli-launch.js.map +1 -0
- package/dist/cli-parse.d.ts +74 -0
- package/dist/cli-parse.d.ts.map +1 -0
- package/dist/cli-parse.js +321 -0
- package/dist/cli-parse.js.map +1 -0
- package/dist/cli-port.d.ts +26 -0
- package/dist/cli-port.d.ts.map +1 -0
- package/dist/cli-port.js +57 -0
- package/dist/cli-port.js.map +1 -0
- package/dist/cli-verify.d.ts +46 -0
- package/dist/cli-verify.d.ts.map +1 -0
- package/dist/cli-verify.js +181 -0
- package/dist/cli-verify.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +337 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloud/cloud-sync.d.ts +50 -0
- package/dist/cloud/cloud-sync.d.ts.map +1 -0
- package/dist/cloud/cloud-sync.js +47 -0
- package/dist/cloud/cloud-sync.js.map +1 -0
- package/dist/crawl/crawl-tools.d.ts +8 -0
- package/dist/crawl/crawl-tools.d.ts.map +1 -0
- package/dist/crawl/crawl-tools.js +61 -0
- package/dist/crawl/crawl-tools.js.map +1 -0
- package/dist/crawl/crawl.d.ts +45 -0
- package/dist/crawl/crawl.d.ts.map +1 -0
- package/dist/crawl/crawl.js +106 -0
- package/dist/crawl/crawl.js.map +1 -0
- package/dist/daemon-resilience.d.ts +17 -0
- package/dist/daemon-resilience.d.ts.map +1 -0
- package/dist/daemon-resilience.js +23 -0
- package/dist/daemon-resilience.js.map +1 -0
- package/dist/daemon.d.ts +26 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +122 -0
- package/dist/daemon.js.map +1 -0
- package/dist/domain/domain-model.d.ts +64 -0
- package/dist/domain/domain-model.d.ts.map +1 -0
- package/dist/domain/domain-model.js +127 -0
- package/dist/domain/domain-model.js.map +1 -0
- package/dist/domain/domain-tools.d.ts +9 -0
- package/dist/domain/domain-tools.d.ts.map +1 -0
- package/dist/domain/domain-tools.js +66 -0
- package/dist/domain/domain-tools.js.map +1 -0
- package/dist/domain/flow-risk.d.ts +34 -0
- package/dist/domain/flow-risk.d.ts.map +1 -0
- package/dist/domain/flow-risk.js +81 -0
- package/dist/domain/flow-risk.js.map +1 -0
- package/dist/ee/audit-log.d.ts +15 -0
- package/dist/ee/audit-log.d.ts.map +1 -0
- package/dist/ee/audit-log.js +12 -0
- package/dist/ee/audit-log.js.map +1 -0
- package/dist/events/event-filters.d.ts +65 -0
- package/dist/events/event-filters.d.ts.map +1 -0
- package/dist/events/event-filters.js +98 -0
- package/dist/events/event-filters.js.map +1 -0
- package/dist/events/predicate-eval.d.ts +91 -0
- package/dist/events/predicate-eval.d.ts.map +1 -0
- package/dist/events/predicate-eval.js +299 -0
- package/dist/events/predicate-eval.js.map +1 -0
- package/dist/events/predicate.d.ts +19 -0
- package/dist/events/predicate.d.ts.map +1 -0
- package/dist/events/predicate.js +188 -0
- package/dist/events/predicate.js.map +1 -0
- package/dist/events/reaction.d.ts +34 -0
- package/dist/events/reaction.d.ts.map +1 -0
- package/dist/events/reaction.js +60 -0
- package/dist/events/reaction.js.map +1 -0
- package/dist/events/ring-buffer.d.ts +32 -0
- package/dist/events/ring-buffer.d.ts.map +1 -0
- package/dist/events/ring-buffer.js +75 -0
- package/dist/events/ring-buffer.js.map +1 -0
- package/dist/flows/annotate-tools.d.ts +16 -0
- package/dist/flows/annotate-tools.d.ts.map +1 -0
- package/dist/flows/annotate-tools.js +136 -0
- package/dist/flows/annotate-tools.js.map +1 -0
- package/dist/flows/annotate.d.ts +22 -0
- package/dist/flows/annotate.d.ts.map +1 -0
- package/dist/flows/annotate.js +134 -0
- package/dist/flows/annotate.js.map +1 -0
- package/dist/flows/annotation-store.d.ts +23 -0
- package/dist/flows/annotation-store.d.ts.map +1 -0
- package/dist/flows/annotation-store.js +51 -0
- package/dist/flows/annotation-store.js.map +1 -0
- package/dist/flows/decision.d.ts +13 -0
- package/dist/flows/decision.d.ts.map +1 -0
- package/dist/flows/decision.js +111 -0
- package/dist/flows/decision.js.map +1 -0
- package/dist/flows/flow-classify.d.ts +52 -0
- package/dist/flows/flow-classify.d.ts.map +1 -0
- package/dist/flows/flow-classify.js +99 -0
- package/dist/flows/flow-classify.js.map +1 -0
- package/dist/flows/flow-replay-run.d.ts +15 -0
- package/dist/flows/flow-replay-run.d.ts.map +1 -0
- package/dist/flows/flow-replay-run.js +120 -0
- package/dist/flows/flow-replay-run.js.map +1 -0
- package/dist/flows/flow-replay.d.ts +49 -0
- package/dist/flows/flow-replay.d.ts.map +1 -0
- package/dist/flows/flow-replay.js +391 -0
- package/dist/flows/flow-replay.js.map +1 -0
- package/dist/flows/flow-report.d.ts +23 -0
- package/dist/flows/flow-report.d.ts.map +1 -0
- package/dist/flows/flow-report.js +106 -0
- package/dist/flows/flow-report.js.map +1 -0
- package/dist/flows/flow-scope.d.ts +25 -0
- package/dist/flows/flow-scope.d.ts.map +1 -0
- package/dist/flows/flow-scope.js +32 -0
- package/dist/flows/flow-scope.js.map +1 -0
- package/dist/flows/flow-success.d.ts +33 -0
- package/dist/flows/flow-success.d.ts.map +1 -0
- package/dist/flows/flow-success.js +131 -0
- package/dist/flows/flow-success.js.map +1 -0
- package/dist/flows/flow-tools.d.ts +4 -0
- package/dist/flows/flow-tools.d.ts.map +1 -0
- package/dist/flows/flow-tools.js +460 -0
- package/dist/flows/flow-tools.js.map +1 -0
- package/dist/flows/flows.d.ts +86 -0
- package/dist/flows/flows.d.ts.map +1 -0
- package/dist/flows/flows.js +319 -0
- package/dist/flows/flows.js.map +1 -0
- package/dist/flows/heal.d.ts +43 -0
- package/dist/flows/heal.d.ts.map +1 -0
- package/dist/flows/heal.js +98 -0
- package/dist/flows/heal.js.map +1 -0
- package/dist/flows/recordings.d.ts +46 -0
- package/dist/flows/recordings.d.ts.map +1 -0
- package/dist/flows/recordings.js +43 -0
- package/dist/flows/recordings.js.map +1 -0
- package/dist/flows/replay.d.ts +23 -0
- package/dist/flows/replay.d.ts.map +1 -0
- package/dist/flows/replay.js +160 -0
- package/dist/flows/replay.js.map +1 -0
- package/dist/http-server.d.ts +39 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +145 -0
- package/dist/http-server.js.map +1 -0
- package/dist/idle-shutdown.d.ts +34 -0
- package/dist/idle-shutdown.d.ts.map +1 -0
- package/dist/idle-shutdown.js +68 -0
- package/dist/idle-shutdown.js.map +1 -0
- package/dist/index.d.ts +135 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +371 -0
- package/dist/index.js.map +1 -0
- package/dist/init/cursor.d.ts +25 -0
- package/dist/init/cursor.d.ts.map +1 -0
- package/dist/init/cursor.js +49 -0
- package/dist/init/cursor.js.map +1 -0
- package/dist/init/detect.d.ts +49 -0
- package/dist/init/detect.d.ts.map +1 -0
- package/dist/init/detect.js +84 -0
- package/dist/init/detect.js.map +1 -0
- package/dist/init/mcp.d.ts +40 -0
- package/dist/init/mcp.d.ts.map +1 -0
- package/dist/init/mcp.js +55 -0
- package/dist/init/mcp.js.map +1 -0
- package/dist/init/node-io.d.ts +8 -0
- package/dist/init/node-io.d.ts.map +1 -0
- package/dist/init/node-io.js +57 -0
- package/dist/init/node-io.js.map +1 -0
- package/dist/init/plan.d.ts +72 -0
- package/dist/init/plan.d.ts.map +1 -0
- package/dist/init/plan.js +280 -0
- package/dist/init/plan.js.map +1 -0
- package/dist/init/project-id.d.ts +17 -0
- package/dist/init/project-id.d.ts.map +1 -0
- package/dist/init/project-id.js +38 -0
- package/dist/init/project-id.js.map +1 -0
- package/dist/init/run.d.ts +42 -0
- package/dist/init/run.d.ts.map +1 -0
- package/dist/init/run.js +171 -0
- package/dist/init/run.js.map +1 -0
- package/dist/init/snippets.d.ts +33 -0
- package/dist/init/snippets.d.ts.map +1 -0
- package/dist/init/snippets.js +117 -0
- package/dist/init/snippets.js.map +1 -0
- package/dist/init/vite-config.d.ts +25 -0
- package/dist/init/vite-config.d.ts.map +1 -0
- package/dist/init/vite-config.js +45 -0
- package/dist/init/vite-config.js.map +1 -0
- package/dist/input/network-mock-tools.d.ts +3 -0
- package/dist/input/network-mock-tools.d.ts.map +1 -0
- package/dist/input/network-mock-tools.js +94 -0
- package/dist/input/network-mock-tools.js.map +1 -0
- package/dist/input/network-mock.d.ts +55 -0
- package/dist/input/network-mock.d.ts.map +1 -0
- package/dist/input/network-mock.js +62 -0
- package/dist/input/network-mock.js.map +1 -0
- package/dist/input/real-input.d.ts +174 -0
- package/dist/input/real-input.d.ts.map +1 -0
- package/dist/input/real-input.js +289 -0
- package/dist/input/real-input.js.map +1 -0
- package/dist/input/scroll-find.d.ts +41 -0
- package/dist/input/scroll-find.d.ts.map +1 -0
- package/dist/input/scroll-find.js +59 -0
- package/dist/input/scroll-find.js.map +1 -0
- package/dist/input/scroll-tools.d.ts +8 -0
- package/dist/input/scroll-tools.d.ts.map +1 -0
- package/dist/input/scroll-tools.js +68 -0
- package/dist/input/scroll-tools.js.map +1 -0
- package/dist/input/viewport-tools.d.ts +3 -0
- package/dist/input/viewport-tools.d.ts.map +1 -0
- package/dist/input/viewport-tools.js +65 -0
- package/dist/input/viewport-tools.js.map +1 -0
- package/dist/license/license.d.ts +108 -0
- package/dist/license/license.d.ts.map +1 -0
- package/dist/license/license.js +203 -0
- package/dist/license/license.js.map +1 -0
- package/dist/log.d.ts +6 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +9 -0
- package/dist/log.js.map +1 -0
- package/dist/mcp-proxy.d.ts +16 -0
- package/dist/mcp-proxy.d.ts.map +1 -0
- package/dist/mcp-proxy.js +168 -0
- package/dist/mcp-proxy.js.map +1 -0
- package/dist/mcp.d.ts +14 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +101 -0
- package/dist/mcp.js.map +1 -0
- package/dist/pairing-token.d.ts +28 -0
- package/dist/pairing-token.d.ts.map +1 -0
- package/dist/pairing-token.js +62 -0
- package/dist/pairing-token.js.map +1 -0
- package/dist/pool/browser-pool.d.ts +90 -0
- package/dist/pool/browser-pool.d.ts.map +1 -0
- package/dist/pool/browser-pool.js +221 -0
- package/dist/pool/browser-pool.js.map +1 -0
- package/dist/pool/lease-reaper.d.ts +16 -0
- package/dist/pool/lease-reaper.d.ts.map +1 -0
- package/dist/pool/lease-reaper.js +41 -0
- package/dist/pool/lease-reaper.js.map +1 -0
- package/dist/pool/playwright-launcher.d.ts +19 -0
- package/dist/pool/playwright-launcher.d.ts.map +1 -0
- package/dist/pool/playwright-launcher.js +51 -0
- package/dist/pool/playwright-launcher.js.map +1 -0
- package/dist/project/baselines.d.ts +22 -0
- package/dist/project/baselines.d.ts.map +1 -0
- package/dist/project/baselines.js +45 -0
- package/dist/project/baselines.js.map +1 -0
- package/dist/project/fs-port.d.ts +27 -0
- package/dist/project/fs-port.d.ts.map +1 -0
- package/dist/project/fs-port.js +32 -0
- package/dist/project/fs-port.js.map +1 -0
- package/dist/project/project-store.d.ts +32 -0
- package/dist/project/project-store.d.ts.map +1 -0
- package/dist/project/project-store.js +127 -0
- package/dist/project/project-store.js.map +1 -0
- package/dist/project/project-tools.d.ts +9 -0
- package/dist/project/project-tools.d.ts.map +1 -0
- package/dist/project/project-tools.js +118 -0
- package/dist/project/project-tools.js.map +1 -0
- package/dist/project/reticle-dir.d.ts +61 -0
- package/dist/project/reticle-dir.d.ts.map +1 -0
- package/dist/project/reticle-dir.js +144 -0
- package/dist/project/reticle-dir.js.map +1 -0
- package/dist/runs/build-verification-run.d.ts +30 -0
- package/dist/runs/build-verification-run.d.ts.map +1 -0
- package/dist/runs/build-verification-run.js +71 -0
- package/dist/runs/build-verification-run.js.map +1 -0
- package/dist/runs/profile-redact.d.ts +16 -0
- package/dist/runs/profile-redact.d.ts.map +1 -0
- package/dist/runs/profile-redact.js +32 -0
- package/dist/runs/profile-redact.js.map +1 -0
- package/dist/runs/render-report.d.ts +9 -0
- package/dist/runs/render-report.d.ts.map +1 -0
- package/dist/runs/render-report.js +70 -0
- package/dist/runs/render-report.js.map +1 -0
- package/dist/runs/repair-prompt.d.ts +15 -0
- package/dist/runs/repair-prompt.d.ts.map +1 -0
- package/dist/runs/repair-prompt.js +59 -0
- package/dist/runs/repair-prompt.js.map +1 -0
- package/dist/runs/replay-mapping.d.ts +12 -0
- package/dist/runs/replay-mapping.d.ts.map +1 -0
- package/dist/runs/replay-mapping.js +35 -0
- package/dist/runs/replay-mapping.js.map +1 -0
- package/dist/runs/reticle-runner.d.ts +48 -0
- package/dist/runs/reticle-runner.d.ts.map +1 -0
- package/dist/runs/reticle-runner.js +56 -0
- package/dist/runs/reticle-runner.js.map +1 -0
- package/dist/runs/risk-classify.d.ts +27 -0
- package/dist/runs/risk-classify.d.ts.map +1 -0
- package/dist/runs/risk-classify.js +76 -0
- package/dist/runs/risk-classify.js.map +1 -0
- package/dist/runs/run-store.d.ts +40 -0
- package/dist/runs/run-store.d.ts.map +1 -0
- package/dist/runs/run-store.js +118 -0
- package/dist/runs/run-store.js.map +1 -0
- package/dist/runs/run-tools.d.ts +10 -0
- package/dist/runs/run-tools.d.ts.map +1 -0
- package/dist/runs/run-tools.js +69 -0
- package/dist/runs/run-tools.js.map +1 -0
- package/dist/runs/runner-port.d.ts +14 -0
- package/dist/runs/runner-port.d.ts.map +1 -0
- package/dist/runs/runner-port.js +23 -0
- package/dist/runs/runner-port.js.map +1 -0
- package/dist/runs/verify-http.d.ts +34 -0
- package/dist/runs/verify-http.d.ts.map +1 -0
- package/dist/runs/verify-http.js +102 -0
- package/dist/runs/verify-http.js.map +1 -0
- package/dist/runs/verify-server.d.ts +26 -0
- package/dist/runs/verify-server.d.ts.map +1 -0
- package/dist/runs/verify-server.js +99 -0
- package/dist/runs/verify-server.js.map +1 -0
- package/dist/server-version.d.ts +3 -0
- package/dist/server-version.d.ts.map +1 -0
- package/dist/server-version.js +5 -0
- package/dist/server-version.js.map +1 -0
- package/dist/session/control-envelope.d.ts +49 -0
- package/dist/session/control-envelope.d.ts.map +1 -0
- package/dist/session/control-envelope.js +44 -0
- package/dist/session/control-envelope.js.map +1 -0
- package/dist/session/live-control-tools.d.ts +16 -0
- package/dist/session/live-control-tools.d.ts.map +1 -0
- package/dist/session/live-control-tools.js +204 -0
- package/dist/session/live-control-tools.js.map +1 -0
- package/dist/session/output-budget.d.ts +41 -0
- package/dist/session/output-budget.d.ts.map +1 -0
- package/dist/session/output-budget.js +54 -0
- package/dist/session/output-budget.js.map +1 -0
- package/dist/session/presenter-args.d.ts +8 -0
- package/dist/session/presenter-args.d.ts.map +1 -0
- package/dist/session/presenter-args.js +15 -0
- package/dist/session/presenter-args.js.map +1 -0
- package/dist/session/review-store.d.ts +40 -0
- package/dist/session/review-store.d.ts.map +1 -0
- package/dist/session/review-store.js +61 -0
- package/dist/session/review-store.js.map +1 -0
- package/dist/session/session-health.d.ts +22 -0
- package/dist/session/session-health.d.ts.map +1 -0
- package/dist/session/session-health.js +26 -0
- package/dist/session/session-health.js.map +1 -0
- package/dist/session/session-manager.d.ts +43 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +155 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/session-readiness.d.ts +35 -0
- package/dist/session/session-readiness.d.ts.map +1 -0
- package/dist/session/session-readiness.js +32 -0
- package/dist/session/session-readiness.js.map +1 -0
- package/dist/session/session-reaper.d.ts +37 -0
- package/dist/session/session-reaper.d.ts.map +1 -0
- package/dist/session/session-reaper.js +94 -0
- package/dist/session/session-reaper.js.map +1 -0
- package/dist/session/session-recommendation.d.ts +18 -0
- package/dist/session/session-recommendation.d.ts.map +1 -0
- package/dist/session/session-recommendation.js +14 -0
- package/dist/session/session-recommendation.js.map +1 -0
- package/dist/session/session-tools.d.ts +9 -0
- package/dist/session/session-tools.d.ts.map +1 -0
- package/dist/session/session-tools.js +43 -0
- package/dist/session/session-tools.js.map +1 -0
- package/dist/session/session.d.ts +166 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +408 -0
- package/dist/session/session.js.map +1 -0
- package/dist/session/state-select.d.ts +8 -0
- package/dist/session/state-select.d.ts.map +1 -0
- package/dist/session/state-select.js +8 -0
- package/dist/session/state-select.js.map +1 -0
- package/dist/token-auth.d.ts +24 -0
- package/dist/token-auth.d.ts.map +1 -0
- package/dist/token-auth.js +71 -0
- package/dist/token-auth.js.map +1 -0
- package/dist/tools/act-tools.d.ts +3 -0
- package/dist/tools/act-tools.d.ts.map +1 -0
- package/dist/tools/act-tools.js +327 -0
- package/dist/tools/act-tools.js.map +1 -0
- package/dist/tools/act-view.d.ts +19 -0
- package/dist/tools/act-view.d.ts.map +1 -0
- package/dist/tools/act-view.js +46 -0
- package/dist/tools/act-view.js.map +1 -0
- package/dist/tools/assert-grade.d.ts +21 -0
- package/dist/tools/assert-grade.d.ts.map +1 -0
- package/dist/tools/assert-grade.js +52 -0
- package/dist/tools/assert-grade.js.map +1 -0
- package/dist/tools/browser-tools.d.ts +3 -0
- package/dist/tools/browser-tools.d.ts.map +1 -0
- package/dist/tools/browser-tools.js +52 -0
- package/dist/tools/browser-tools.js.map +1 -0
- package/dist/tools/contract-tools.d.ts +8 -0
- package/dist/tools/contract-tools.d.ts.map +1 -0
- package/dist/tools/contract-tools.js +62 -0
- package/dist/tools/contract-tools.js.map +1 -0
- package/dist/tools/dynamic-tools.d.ts +7 -0
- package/dist/tools/dynamic-tools.d.ts.map +1 -0
- package/dist/tools/dynamic-tools.js +103 -0
- package/dist/tools/dynamic-tools.js.map +1 -0
- package/dist/tools/error-recovery.d.ts +31 -0
- package/dist/tools/error-recovery.d.ts.map +1 -0
- package/dist/tools/error-recovery.js +52 -0
- package/dist/tools/error-recovery.js.map +1 -0
- package/dist/tools/invoke-tool.d.ts +23 -0
- package/dist/tools/invoke-tool.d.ts.map +1 -0
- package/dist/tools/invoke-tool.js +99 -0
- package/dist/tools/invoke-tool.js.map +1 -0
- package/dist/tools/lease-tools.d.ts +31 -0
- package/dist/tools/lease-tools.d.ts.map +1 -0
- package/dist/tools/lease-tools.js +164 -0
- package/dist/tools/lease-tools.js.map +1 -0
- package/dist/tools/observe-tools.d.ts +3 -0
- package/dist/tools/observe-tools.d.ts.map +1 -0
- package/dist/tools/observe-tools.js +259 -0
- package/dist/tools/observe-tools.js.map +1 -0
- package/dist/tools/profiles.d.ts +33 -0
- package/dist/tools/profiles.d.ts.map +1 -0
- package/dist/tools/profiles.js +105 -0
- package/dist/tools/profiles.js.map +1 -0
- package/dist/tools/query-paginate.d.ts +15 -0
- package/dist/tools/query-paginate.d.ts.map +1 -0
- package/dist/tools/query-paginate.js +31 -0
- package/dist/tools/query-paginate.js.map +1 -0
- package/dist/tools/read-tools.d.ts +3 -0
- package/dist/tools/read-tools.d.ts.map +1 -0
- package/dist/tools/read-tools.js +329 -0
- package/dist/tools/read-tools.js.map +1 -0
- package/dist/tools/snapshot-delta.d.ts +59 -0
- package/dist/tools/snapshot-delta.d.ts.map +1 -0
- package/dist/tools/snapshot-delta.js +0 -0
- package/dist/tools/snapshot-delta.js.map +1 -0
- package/dist/tools/tool-invoker.d.ts +15 -0
- package/dist/tools/tool-invoker.d.ts.map +1 -0
- package/dist/tools/tool-invoker.js +20 -0
- package/dist/tools/tool-invoker.js.map +1 -0
- package/dist/tools/tool-kit.d.ts +60 -0
- package/dist/tools/tool-kit.d.ts.map +1 -0
- package/dist/tools/tool-kit.js +33 -0
- package/dist/tools/tool-kit.js.map +1 -0
- package/dist/tools/tool-names.d.ts +89 -0
- package/dist/tools/tool-names.d.ts.map +1 -0
- package/dist/tools/tool-names.js +88 -0
- package/dist/tools/tool-names.js.map +1 -0
- package/dist/tools/tools-helpers.d.ts +12 -0
- package/dist/tools/tools-helpers.d.ts.map +1 -0
- package/dist/tools/tools-helpers.js +22 -0
- package/dist/tools/tools-helpers.js.map +1 -0
- package/dist/tools/tools.d.ts +4 -0
- package/dist/tools/tools.d.ts.map +1 -0
- package/dist/tools/tools.js +268 -0
- package/dist/tools/tools.js.map +1 -0
- package/dist/update/update-checker.d.ts +20 -0
- package/dist/update/update-checker.d.ts.map +1 -0
- package/dist/update/update-checker.js +94 -0
- package/dist/update/update-checker.js.map +1 -0
- package/dist/update/update-tools.d.ts +3 -0
- package/dist/update/update-tools.d.ts.map +1 -0
- package/dist/update/update-tools.js +94 -0
- package/dist/update/update-tools.js.map +1 -0
- package/dist/update/updater.d.ts +31 -0
- package/dist/update/updater.d.ts.map +1 -0
- package/dist/update/updater.js +120 -0
- package/dist/update/updater.js.map +1 -0
- package/dist/visual/visual-diff.d.ts +46 -0
- package/dist/visual/visual-diff.d.ts.map +1 -0
- package/dist/visual/visual-diff.js +100 -0
- package/dist/visual/visual-diff.js.map +1 -0
- package/dist/visual/visual-store.d.ts +22 -0
- package/dist/visual/visual-store.d.ts.map +1 -0
- package/dist/visual/visual-store.js +60 -0
- package/dist/visual/visual-store.js.map +1 -0
- package/dist/visual/visual-tools.d.ts +9 -0
- package/dist/visual/visual-tools.d.ts.map +1 -0
- package/dist/visual/visual-tools.js +182 -0
- package/dist/visual/visual-tools.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure framework + toolchain detection for `reticle init`. No filesystem access — callers pass in
|
|
3
|
+
* the parsed package.json and the set of config/lock filenames present in the project root.
|
|
4
|
+
*/
|
|
5
|
+
export declare const Framework: {
|
|
6
|
+
readonly NEXT: "next";
|
|
7
|
+
readonly VITE: "vite";
|
|
8
|
+
readonly SVELTEKIT: "sveltekit";
|
|
9
|
+
readonly HTML: "html";
|
|
10
|
+
};
|
|
11
|
+
export type Framework = (typeof Framework)[keyof typeof Framework];
|
|
12
|
+
export declare const PackageManager: {
|
|
13
|
+
readonly PNPM: "pnpm";
|
|
14
|
+
readonly YARN: "yarn";
|
|
15
|
+
readonly BUN: "bun";
|
|
16
|
+
readonly NPM: "npm";
|
|
17
|
+
};
|
|
18
|
+
export type PackageManager = (typeof PackageManager)[keyof typeof PackageManager];
|
|
19
|
+
interface PackageJsonLike {
|
|
20
|
+
dependencies?: Record<string, string>;
|
|
21
|
+
devDependencies?: Record<string, string>;
|
|
22
|
+
peerDependencies?: Record<string, string>;
|
|
23
|
+
}
|
|
24
|
+
export interface DetectInput {
|
|
25
|
+
pkg: PackageJsonLike;
|
|
26
|
+
/** Basenames of config files present in the project root (e.g. 'next.config.mjs'). */
|
|
27
|
+
configFiles: ReadonlySet<string>;
|
|
28
|
+
/** Lockfile basenames present in the project root. */
|
|
29
|
+
lockfiles: ReadonlySet<string>;
|
|
30
|
+
}
|
|
31
|
+
export interface Detection {
|
|
32
|
+
framework: Framework;
|
|
33
|
+
reactMajor: number | undefined;
|
|
34
|
+
/** React 19 dropped _debugSource, so it needs the build-time source-map stamp. */
|
|
35
|
+
needsSourceMapping: boolean;
|
|
36
|
+
packageManager: PackageManager;
|
|
37
|
+
}
|
|
38
|
+
/** Extract the leading major version from a semver range like "^19.0.0" or "19.1.1". */
|
|
39
|
+
export declare function parseMajor(range: string | undefined): number | undefined;
|
|
40
|
+
export declare function detect(input: DetectInput): Detection;
|
|
41
|
+
interface InstallCommand {
|
|
42
|
+
command: string;
|
|
43
|
+
args: string[];
|
|
44
|
+
}
|
|
45
|
+
/** Build a dev-dependency install command for one or more packages (e.g. the kit + its build plugin). */
|
|
46
|
+
export declare function installCommandParts(pm: PackageManager, pkgs: string | readonly string[]): InstallCommand;
|
|
47
|
+
export declare function installCommand(pm: PackageManager, pkgs: string | readonly string[]): string;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/init/detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAElF,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,eAAe,CAAC;IACrB,sFAAsF;IACtF,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,sDAAsD;IACtD,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,kFAAkF;IAClF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;CAChC;AAcD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMxE;AAyBD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAQpD;AASD,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAC/B,cAAc,CAGhB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,MAAM,CAG3F"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure framework + toolchain detection for `reticle init`. No filesystem access — callers pass in
|
|
3
|
+
* the parsed package.json and the set of config/lock filenames present in the project root.
|
|
4
|
+
*/
|
|
5
|
+
export const Framework = {
|
|
6
|
+
NEXT: 'next',
|
|
7
|
+
VITE: 'vite',
|
|
8
|
+
SVELTEKIT: 'sveltekit',
|
|
9
|
+
HTML: 'html',
|
|
10
|
+
};
|
|
11
|
+
export const PackageManager = {
|
|
12
|
+
PNPM: 'pnpm',
|
|
13
|
+
YARN: 'yarn',
|
|
14
|
+
BUN: 'bun',
|
|
15
|
+
NPM: 'npm',
|
|
16
|
+
};
|
|
17
|
+
const NEXT_CONFIGS = ['next.config.js', 'next.config.mjs', 'next.config.ts', 'next.config.cjs'];
|
|
18
|
+
const VITE_CONFIGS = ['vite.config.js', 'vite.config.ts', 'vite.config.mjs', 'vite.config.mts'];
|
|
19
|
+
const SVELTE_CONFIGS = ['svelte.config.js', 'svelte.config.ts', 'svelte.config.mjs'];
|
|
20
|
+
function depVersion(pkg, name) {
|
|
21
|
+
return pkg.dependencies?.[name] ?? pkg.devDependencies?.[name] ?? pkg.peerDependencies?.[name];
|
|
22
|
+
}
|
|
23
|
+
function hasAnyConfig(files, candidates) {
|
|
24
|
+
return candidates.some((c) => files.has(c));
|
|
25
|
+
}
|
|
26
|
+
/** Extract the leading major version from a semver range like "^19.0.0" or "19.1.1". */
|
|
27
|
+
export function parseMajor(range) {
|
|
28
|
+
if (range === undefined)
|
|
29
|
+
return undefined;
|
|
30
|
+
const match = range.match(/(\d+)/);
|
|
31
|
+
if (match === null || match[1] === undefined)
|
|
32
|
+
return undefined;
|
|
33
|
+
const major = parseInt(match[1], 10);
|
|
34
|
+
return isNaN(major) ? undefined : major;
|
|
35
|
+
}
|
|
36
|
+
function detectPackageManager(lockfiles) {
|
|
37
|
+
if (lockfiles.has('pnpm-lock.yaml'))
|
|
38
|
+
return PackageManager.PNPM;
|
|
39
|
+
if (lockfiles.has('yarn.lock'))
|
|
40
|
+
return PackageManager.YARN;
|
|
41
|
+
if (lockfiles.has('bun.lockb') || lockfiles.has('bun.lock'))
|
|
42
|
+
return PackageManager.BUN;
|
|
43
|
+
return PackageManager.NPM;
|
|
44
|
+
}
|
|
45
|
+
function detectFramework(input) {
|
|
46
|
+
const { pkg, configFiles } = input;
|
|
47
|
+
if (depVersion(pkg, 'next') !== undefined || hasAnyConfig(configFiles, NEXT_CONFIGS)) {
|
|
48
|
+
return Framework.NEXT;
|
|
49
|
+
}
|
|
50
|
+
// SvelteKit is Vite-based but renders through app.html, so the Vite plugin's index.html injection
|
|
51
|
+
// never fires (verified) — it needs a manual client connect. Check BEFORE the generic Vite branch.
|
|
52
|
+
if (depVersion(pkg, '@sveltejs/kit') !== undefined || hasAnyConfig(configFiles, SVELTE_CONFIGS)) {
|
|
53
|
+
return Framework.SVELTEKIT;
|
|
54
|
+
}
|
|
55
|
+
if (depVersion(pkg, 'vite') !== undefined || hasAnyConfig(configFiles, VITE_CONFIGS)) {
|
|
56
|
+
return Framework.VITE;
|
|
57
|
+
}
|
|
58
|
+
return Framework.HTML;
|
|
59
|
+
}
|
|
60
|
+
export function detect(input) {
|
|
61
|
+
const reactMajor = parseMajor(depVersion(input.pkg, 'react'));
|
|
62
|
+
return {
|
|
63
|
+
framework: detectFramework(input),
|
|
64
|
+
reactMajor,
|
|
65
|
+
needsSourceMapping: reactMajor !== undefined && reactMajor >= 19,
|
|
66
|
+
packageManager: detectPackageManager(input.lockfiles),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const INSTALL_ARGS = {
|
|
70
|
+
[PackageManager.PNPM]: ['add', '-D'],
|
|
71
|
+
[PackageManager.YARN]: ['add', '-D'],
|
|
72
|
+
[PackageManager.BUN]: ['add', '-d'],
|
|
73
|
+
[PackageManager.NPM]: ['i', '-D'],
|
|
74
|
+
};
|
|
75
|
+
/** Build a dev-dependency install command for one or more packages (e.g. the kit + its build plugin). */
|
|
76
|
+
export function installCommandParts(pm, pkgs) {
|
|
77
|
+
const list = typeof pkgs === 'string' ? [pkgs] : pkgs;
|
|
78
|
+
return { command: pm, args: [...INSTALL_ARGS[pm], ...list] };
|
|
79
|
+
}
|
|
80
|
+
export function installCommand(pm, pkgs) {
|
|
81
|
+
const { command, args } = installCommandParts(pm, pkgs);
|
|
82
|
+
return `${command} ${args.join(' ')}`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/init/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global (user-scope) MCP registration for `reticle init`. The bridge + MCP server is a single
|
|
3
|
+
* process that serves every project, so it is registered ONCE at user scope — not per-project via
|
|
4
|
+
* a checked-in `.mcp.json`. We shell out to the official `claude mcp add -s user` CLI rather than
|
|
5
|
+
* hand-editing `~/.claude.json` (a large stateful file). When the `claude` CLI is absent we print a
|
|
6
|
+
* manual instruction instead.
|
|
7
|
+
*
|
|
8
|
+
* The registration is intentionally PORTLESS — `npx @reticlehq/server mcp`, never `--port N`. A single
|
|
9
|
+
* global entry serves every project, so baking a port into it would pin every project to one port
|
|
10
|
+
* and defeat per-project isolation. Instead `reticle mcp` resolves the port at runtime from the
|
|
11
|
+
* project's `.reticle.json` in its CWD (see cli-port.ts). The port belongs to the project, not the
|
|
12
|
+
* global agent config.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MCP_SERVER_NAME = "reticle";
|
|
15
|
+
export declare const NPX = "npx";
|
|
16
|
+
/** Args after `npx` that launch the bridge: `@reticlehq/server mcp`. Portless — the port comes from
|
|
17
|
+
* the project's `.reticle.json` at runtime, so one global entry works for every project. */
|
|
18
|
+
export declare function npxServerArgs(): string[];
|
|
19
|
+
interface ClaudeAddCommand {
|
|
20
|
+
command: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
/** Human-readable form of the same command, for reports and manual fallback. */
|
|
23
|
+
display: string;
|
|
24
|
+
}
|
|
25
|
+
/** `claude mcp add reticle -s user -- npx @reticlehq/server mcp` — registers globally for all projects (portless). */
|
|
26
|
+
export declare function claudeAddCommand(): ClaudeAddCommand;
|
|
27
|
+
/** Probe args that tell us whether an `reticle` server already exists in any scope (exit 0 = exists). */
|
|
28
|
+
export declare function claudeExistsProbe(): {
|
|
29
|
+
command: string;
|
|
30
|
+
args: string[];
|
|
31
|
+
};
|
|
32
|
+
/** Probe args for whether the `claude` CLI is installed at all. */
|
|
33
|
+
export declare function claudeAvailableProbe(): {
|
|
34
|
+
command: string;
|
|
35
|
+
args: string[];
|
|
36
|
+
};
|
|
37
|
+
/** Printed when the `claude` CLI isn't available — register Reticle globally once, by hand. */
|
|
38
|
+
export declare function mcpManual(): string;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/init/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,GAAG,QAAQ,CAAC;AAOzB;4FAC4F;AAC5F,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAOD,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sHAAsH;AACtH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAInD;AAED,yGAAyG;AACzG,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAEvE;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAE1E;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,IAAI,MAAM,CASlC"}
|
package/dist/init/mcp.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global (user-scope) MCP registration for `reticle init`. The bridge + MCP server is a single
|
|
3
|
+
* process that serves every project, so it is registered ONCE at user scope — not per-project via
|
|
4
|
+
* a checked-in `.mcp.json`. We shell out to the official `claude mcp add -s user` CLI rather than
|
|
5
|
+
* hand-editing `~/.claude.json` (a large stateful file). When the `claude` CLI is absent we print a
|
|
6
|
+
* manual instruction instead.
|
|
7
|
+
*
|
|
8
|
+
* The registration is intentionally PORTLESS — `npx @reticlehq/server mcp`, never `--port N`. A single
|
|
9
|
+
* global entry serves every project, so baking a port into it would pin every project to one port
|
|
10
|
+
* and defeat per-project isolation. Instead `reticle mcp` resolves the port at runtime from the
|
|
11
|
+
* project's `.reticle.json` in its CWD (see cli-port.ts). The port belongs to the project, not the
|
|
12
|
+
* global agent config.
|
|
13
|
+
*/
|
|
14
|
+
export const MCP_SERVER_NAME = 'reticle';
|
|
15
|
+
export const NPX = 'npx';
|
|
16
|
+
// The `reticle` bin lives in @reticlehq/server, so `npx @reticlehq/server mcp` runs the bridge
|
|
17
|
+
// without the retired `core` umbrella. `npx @reticlehq/server` resolves its sole bin (`reticle`).
|
|
18
|
+
const RETICLE_PACKAGE = '@reticlehq/server';
|
|
19
|
+
const MCP_SUBCOMMAND = 'mcp';
|
|
20
|
+
const CLAUDE_CLI = 'claude';
|
|
21
|
+
/** Args after `npx` that launch the bridge: `@reticlehq/server mcp`. Portless — the port comes from
|
|
22
|
+
* the project's `.reticle.json` at runtime, so one global entry works for every project. */
|
|
23
|
+
export function npxServerArgs() {
|
|
24
|
+
return [RETICLE_PACKAGE, MCP_SUBCOMMAND];
|
|
25
|
+
}
|
|
26
|
+
/** The full `npx …` invocation — the tail after `claude mcp add … --`. */
|
|
27
|
+
function serverInvocation() {
|
|
28
|
+
return [NPX, ...npxServerArgs()];
|
|
29
|
+
}
|
|
30
|
+
/** `claude mcp add reticle -s user -- npx @reticlehq/server mcp` — registers globally for all projects (portless). */
|
|
31
|
+
export function claudeAddCommand() {
|
|
32
|
+
const tail = serverInvocation();
|
|
33
|
+
const args = [MCP_SUBCOMMAND, 'add', MCP_SERVER_NAME, '-s', 'user', '--', ...tail];
|
|
34
|
+
return { command: CLAUDE_CLI, args, display: `${CLAUDE_CLI} ${args.join(' ')}` };
|
|
35
|
+
}
|
|
36
|
+
/** Probe args that tell us whether an `reticle` server already exists in any scope (exit 0 = exists). */
|
|
37
|
+
export function claudeExistsProbe() {
|
|
38
|
+
return { command: CLAUDE_CLI, args: [MCP_SUBCOMMAND, 'get', MCP_SERVER_NAME] };
|
|
39
|
+
}
|
|
40
|
+
/** Probe args for whether the `claude` CLI is installed at all. */
|
|
41
|
+
export function claudeAvailableProbe() {
|
|
42
|
+
return { command: CLAUDE_CLI, args: ['--version'] };
|
|
43
|
+
}
|
|
44
|
+
/** Printed when the `claude` CLI isn't available — register Reticle globally once, by hand. */
|
|
45
|
+
export function mcpManual() {
|
|
46
|
+
const tail = serverInvocation().join(' ');
|
|
47
|
+
return `Register the Reticle MCP server ONCE, globally (so every project gets it):
|
|
48
|
+
|
|
49
|
+
${CLAUDE_CLI} ${MCP_SUBCOMMAND} add ${MCP_SERVER_NAME} -s user -- ${tail}
|
|
50
|
+
|
|
51
|
+
Or, for another agent, add this to its global MCP config (e.g. Cursor's ~/.cursor/mcp.json):
|
|
52
|
+
|
|
53
|
+
"${MCP_SERVER_NAME}": { "command": "${NPX}", "args": ${JSON.stringify(serverInvocation().slice(1))} }`;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/init/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;AACzB,+FAA+F;AAC/F,kGAAkG;AAClG,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B;4FAC4F;AAC5F,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,0EAA0E;AAC1E,SAAS,gBAAgB;IACvB,OAAO,CAAC,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;AACnC,CAAC;AASD,sHAAsH;AACtH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACnF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnF,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO;;IAEL,UAAU,IAAI,cAAc,QAAQ,eAAe,eAAe,IAAI;;;;KAIrE,eAAe,oBAAoB,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzG,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The real (Node filesystem) implementation of `InitIo`. Kept separate from the pure runner so
|
|
3
|
+
* `runInit` stays testable with an in-memory IO. Prints to stdout — `init` is a one-shot CLI
|
|
4
|
+
* command, not the MCP stdio transport.
|
|
5
|
+
*/
|
|
6
|
+
import type { InitIo } from './run.js';
|
|
7
|
+
export declare function buildNodeIo(cwd: string): InitIo;
|
|
8
|
+
//# sourceMappingURL=node-io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-io.d.ts","sourceRoot":"","sources":["../../src/init/node-io.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA4C/C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The real (Node filesystem) implementation of `InitIo`. Kept separate from the pure runner so
|
|
3
|
+
* `runInit` stays testable with an in-memory IO. Prints to stdout — `init` is a one-shot CLI
|
|
4
|
+
* command, not the MCP stdio transport.
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync } from 'node:fs';
|
|
7
|
+
import { join, dirname, isAbsolute } from 'node:path';
|
|
8
|
+
import { homedir } from 'node:os';
|
|
9
|
+
import { spawnSync } from 'node:child_process';
|
|
10
|
+
export function buildNodeIo(cwd) {
|
|
11
|
+
// Project-relative by default; absolute paths (e.g. ~/.cursor/mcp.json) pass through unchanged.
|
|
12
|
+
const abs = (rel) => (isAbsolute(rel) ? rel : join(cwd, rel));
|
|
13
|
+
return {
|
|
14
|
+
readFile(rel) {
|
|
15
|
+
const path = abs(rel);
|
|
16
|
+
if (!existsSync(path))
|
|
17
|
+
return null;
|
|
18
|
+
return readFileSync(path, 'utf8');
|
|
19
|
+
},
|
|
20
|
+
writeFile(rel, content) {
|
|
21
|
+
const path = abs(rel);
|
|
22
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
23
|
+
writeFileSync(path, content, 'utf8');
|
|
24
|
+
},
|
|
25
|
+
exists(rel) {
|
|
26
|
+
return existsSync(abs(rel));
|
|
27
|
+
},
|
|
28
|
+
homeDir() {
|
|
29
|
+
return homedir();
|
|
30
|
+
},
|
|
31
|
+
rootFiles() {
|
|
32
|
+
return readdirSync(cwd).filter((name) => {
|
|
33
|
+
try {
|
|
34
|
+
return statSync(join(cwd, name)).isFile();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
exec(command, args) {
|
|
42
|
+
// `shell: true` lets package-manager shims (pnpm.cmd, etc.) resolve on Windows; inherit
|
|
43
|
+
// stdio so the install's own progress is visible to the user.
|
|
44
|
+
const result = spawnSync(command, [...args], { cwd, stdio: 'inherit', shell: true });
|
|
45
|
+
return result.status === 0;
|
|
46
|
+
},
|
|
47
|
+
probe(command, args) {
|
|
48
|
+
// Quiet yes/no check (CLI availability, existing registration). Never throws.
|
|
49
|
+
const result = spawnSync(command, [...args], { cwd, stdio: 'ignore', shell: true });
|
|
50
|
+
return result.status === 0;
|
|
51
|
+
},
|
|
52
|
+
print(line) {
|
|
53
|
+
process.stdout.write(`${line}\n`);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=node-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-io.js","sourceRoot":"","sources":["../../src/init/node-io.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,gGAAgG;IAChG,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9E,OAAO;QACL,QAAQ,CAAC,GAAG;YACV,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,SAAS,CAAC,GAAG,EAAE,OAAO;YACpB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,GAAG;YACR,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO;YACL,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;QACD,SAAS;YACP,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACtC,IAAI,CAAC;oBACH,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,IAAI;YAChB,wFAAwF;YACxF,8DAA8D;YAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,IAAI;YACjB,8EAA8E;YAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure assembly of the `reticle init` action plan. Given the detection result and the relevant file
|
|
3
|
+
* contents, produce an ordered list of steps — each marked apply / manual / already / skip. The
|
|
4
|
+
* runner performs the `write` side-effects; this module decides *what* should happen.
|
|
5
|
+
*/
|
|
6
|
+
import { Framework, type Detection } from './detect.js';
|
|
7
|
+
/** The dev-dependencies `reticle init` installs for a given framework — kit first, build plugin next. */
|
|
8
|
+
export declare function frameworkPackages(framework: Framework): readonly string[];
|
|
9
|
+
export declare const StepStatus: {
|
|
10
|
+
readonly APPLY: "apply";
|
|
11
|
+
readonly MANUAL: "manual";
|
|
12
|
+
readonly ALREADY: "already";
|
|
13
|
+
readonly SKIP: "skip";
|
|
14
|
+
};
|
|
15
|
+
export type StepStatus = (typeof StepStatus)[keyof typeof StepStatus];
|
|
16
|
+
interface Step {
|
|
17
|
+
title: string;
|
|
18
|
+
target: string;
|
|
19
|
+
status: StepStatus;
|
|
20
|
+
detail: string;
|
|
21
|
+
/** Present only when status is APPLY and a file must be written. */
|
|
22
|
+
write?: {
|
|
23
|
+
path: string;
|
|
24
|
+
content: string;
|
|
25
|
+
};
|
|
26
|
+
/** Present only when status is APPLY and a subprocess must run (the dependency install). */
|
|
27
|
+
exec?: {
|
|
28
|
+
command: string;
|
|
29
|
+
args: string[];
|
|
30
|
+
fallback: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface Plan {
|
|
34
|
+
framework: Framework;
|
|
35
|
+
steps: Step[];
|
|
36
|
+
}
|
|
37
|
+
export interface PlanInput {
|
|
38
|
+
detection: Detection;
|
|
39
|
+
/** Whether the `claude` CLI is installed (so we can register the MCP server globally). */
|
|
40
|
+
claudeCli: boolean;
|
|
41
|
+
/** Whether an `reticle` MCP server is already registered with Claude (any scope) — idempotency. */
|
|
42
|
+
mcpExists: boolean;
|
|
43
|
+
/** Whether Cursor is installed for this user (its global config dir exists). */
|
|
44
|
+
cursorPresent: boolean;
|
|
45
|
+
/** Current ~/.cursor/mcp.json content, or null if absent. */
|
|
46
|
+
cursorConfig: string | null;
|
|
47
|
+
/** Absolute path of ~/.cursor/mcp.json (the write target). */
|
|
48
|
+
cursorConfigPath: string;
|
|
49
|
+
/** Discovered Vite config: its path + source, or null if none found. */
|
|
50
|
+
viteConfig: {
|
|
51
|
+
path: string;
|
|
52
|
+
source: string;
|
|
53
|
+
} | null;
|
|
54
|
+
/** Discovered Next config filename (e.g. 'next.config.mjs'), or null. */
|
|
55
|
+
nextConfigFile: string | null;
|
|
56
|
+
/** Whether app/reticle-dev.tsx already exists. */
|
|
57
|
+
nextReticleDevExists: boolean;
|
|
58
|
+
/** Whether src/hooks.client.ts already exists (SvelteKit idempotency). */
|
|
59
|
+
svelteKitHooksExists?: boolean;
|
|
60
|
+
/** Whether .reticle.json already exists in the project root (idempotency). */
|
|
61
|
+
reticleConfigExists?: boolean;
|
|
62
|
+
options: {
|
|
63
|
+
port: number | undefined;
|
|
64
|
+
mcp: boolean;
|
|
65
|
+
install: boolean;
|
|
66
|
+
/** Stable project identity derived at init (package.json name + root). Baked into snippets/.reticle.json. */
|
|
67
|
+
projectId?: string;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export declare function buildPlan(input: PlanInput): Plan;
|
|
71
|
+
export {};
|
|
72
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/init/plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAuC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAwB7F,yGAAyG;AACzG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAYzE;AAKD,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,UAAU,IAAI;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,4FAA4F;IAC5F,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,0FAA0F;IAC1F,SAAS,EAAE,OAAO,CAAC;IACnB,mGAAmG;IACnG,SAAS,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,aAAa,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpD,yEAAyE;IACzE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,kDAAkD;IAClD,oBAAoB,EAAE,OAAO,CAAC;IAC9B,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,6GAA6G;QAC7G,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAuOD,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
|