@reticlehq/server 2.11.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +93 -111
- package/dist/bridge/auth-failure-reason.d.ts +6 -2
- package/dist/bridge/auth-failure-reason.js +15 -8
- package/dist/bridge/bridge.d.ts +18 -14
- package/dist/bridge/bridge.js +248 -165
- package/dist/bridge/bridge.test-harness.d.ts +2 -0
- package/dist/bridge/bridge.test-harness.js +8 -1
- package/dist/bridge/pairing-token.d.ts +5 -0
- package/dist/bridge/pairing-token.js +28 -0
- package/dist/bridge/protocol-skew.d.ts +37 -0
- package/dist/bridge/protocol-skew.js +45 -0
- package/dist/capsule/capsule-store.d.ts +8 -7
- package/dist/capsule/capsule-store.js +1 -1
- package/dist/capsule/causal-summary.d.ts +2 -2
- package/dist/capsule/causal-summary.js +7 -2
- package/dist/chromium-launch-options.d.ts +28 -0
- package/dist/chromium-launch-options.js +29 -0
- package/dist/cli/cli-doctor.js +39 -1
- package/dist/cli/cli-flow-commands.d.ts +3 -1
- package/dist/cli/cli-flow-commands.js +34 -4
- package/dist/cli/cli-kill.d.ts +2 -1
- package/dist/cli/cli-launch.d.ts +11 -1
- package/dist/cli/cli-launch.js +59 -10
- package/dist/cli/cli-parse.d.ts +17 -1
- package/dist/cli/cli-parse.js +238 -12
- package/dist/cli/cli-update-commands.js +20 -1
- package/dist/cli/cli-verify.d.ts +2 -1
- package/dist/cli/cli-verify.js +5 -4
- package/dist/cli/cloud-cli.js +428 -253
- package/dist/cli/cloud-keystore.d.ts +37 -0
- package/dist/cli/cloud-keystore.js +97 -0
- package/dist/cli/cloud-kit.d.ts +37 -0
- package/dist/cli/cloud-kit.js +121 -0
- package/dist/cli/cloud-login.d.ts +17 -0
- package/dist/cli/cloud-login.js +183 -0
- package/dist/cli/cloud-session.d.ts +48 -0
- package/dist/cli/cloud-session.js +53 -0
- package/dist/cli/config-discovery.d.ts +2 -1
- package/dist/cli/config-discovery.js +1 -0
- package/dist/cli/daemon-start-options.d.ts +32 -0
- package/dist/cli/daemon-start-options.js +38 -0
- package/dist/cli/device-flow.d.ts +76 -0
- package/dist/cli/device-flow.js +56 -0
- package/dist/cli/doctor-rows.d.ts +12 -1
- package/dist/cli/doctor-rows.js +12 -1
- package/dist/cli/drive-attach.d.ts +13 -0
- package/dist/cli/drive-attach.js +18 -0
- package/dist/cli/drive-command.js +7 -3
- package/dist/cli/gate-exit.d.ts +21 -0
- package/dist/cli/gate-exit.js +21 -0
- package/dist/cli/gate-hook-message.d.ts +33 -0
- package/dist/cli/gate-hook-message.js +46 -0
- package/dist/cli/mcp-command.d.ts +25 -0
- package/dist/cli/mcp-command.js +174 -0
- package/dist/cli/project-name.d.ts +30 -0
- package/dist/cli/project-name.js +44 -0
- package/dist/cli/sibling-ports.d.ts +37 -0
- package/dist/cli/sibling-ports.js +56 -0
- package/dist/cli/status-next-action.d.ts +14 -0
- package/dist/cli/status-next-action.js +4 -4
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +167 -186
- package/dist/cloud/cloud-config.d.ts +24 -2
- package/dist/cloud/cloud-config.js +64 -5
- package/dist/cloud/cloud-sync.d.ts +16 -5
- package/dist/cloud/cloud-sync.js +64 -1
- package/dist/cloud/sync-cycle.d.ts +110 -0
- package/dist/cloud/sync-cycle.js +270 -0
- package/dist/cloud/sync-daemon.d.ts +69 -0
- package/dist/cloud/sync-daemon.js +260 -0
- package/dist/cloud/sync-disk.d.ts +9 -0
- package/dist/cloud/sync-disk.js +191 -0
- package/dist/cloud/sync-hash.d.ts +2 -0
- package/dist/cloud/sync-hash.js +35 -0
- package/dist/crawl/crawl-tools.js +5 -3
- package/dist/crawl/crawl.d.ts +12 -13
- package/dist/crawl/crawl.js +25 -3
- package/dist/daemon/daemon-resolve.d.ts +122 -0
- package/dist/daemon/daemon-resolve.js +187 -0
- package/dist/daemon/dev-servers.d.ts +15 -0
- package/dist/daemon/dev-servers.js +68 -0
- package/dist/daemon/free-port.d.ts +29 -0
- package/dist/daemon/free-port.js +55 -0
- package/dist/daemon/heartbeat.d.ts +0 -4
- package/dist/daemon/heartbeat.js +2 -2
- package/dist/daemon/wake-decision.d.ts +32 -0
- package/dist/daemon/wake-decision.js +38 -0
- package/dist/dev/stale-issue-guard.d.ts +0 -2
- package/dist/dev/stale-issue-guard.js +1 -1
- package/dist/domain/domain-tools.js +2 -2
- package/dist/events/contradictions.d.ts +59 -0
- package/dist/events/contradictions.js +253 -27
- package/dist/events/declared.d.ts +17 -0
- package/dist/events/declared.js +43 -1
- package/dist/events/echo-mismatch.js +65 -1
- package/dist/events/event-filters.d.ts +8 -0
- package/dist/events/event-filters.js +19 -2
- package/dist/events/observed-in-window.d.ts +12 -0
- package/dist/events/observed-in-window.js +17 -0
- package/dist/events/predicate-asks.d.ts +13 -0
- package/dist/events/predicate-asks.js +22 -0
- package/dist/events/predicate-eval.js +117 -27
- package/dist/events/predicate-parse.d.ts +0 -6
- package/dist/events/predicate-parse.js +43 -3
- package/dist/events/predicate-precheck.d.ts +8 -0
- package/dist/events/predicate-precheck.js +41 -0
- package/dist/events/predicate-route.d.ts +14 -0
- package/dist/events/predicate-route.js +36 -8
- package/dist/events/predicate-schema.d.ts +44 -0
- package/dist/events/predicate-schema.js +126 -23
- package/dist/events/predicate.d.ts +20 -0
- package/dist/events/predicate.js +77 -6
- package/dist/events/split-text-miss.d.ts +30 -0
- package/dist/events/split-text-miss.js +44 -0
- package/dist/flows/coverage.d.ts +0 -8
- package/dist/flows/coverage.js +1 -1
- package/dist/flows/decision.d.ts +5 -1
- package/dist/flows/decision.js +33 -7
- package/dist/flows/flake.d.ts +6 -8
- package/dist/flows/flake.js +1 -1
- package/dist/flows/flow-intent.d.ts +52 -0
- package/dist/flows/flow-intent.js +123 -0
- package/dist/flows/flow-memory-consult.d.ts +55 -0
- package/dist/flows/flow-memory-consult.js +38 -0
- package/dist/flows/flow-replay-run.d.ts +18 -7
- package/dist/flows/flow-replay-run.js +263 -23
- package/dist/flows/flow-replay.js +11 -2
- package/dist/flows/flow-step-runners.d.ts +8 -0
- package/dist/flows/flow-step-runners.js +8 -2
- package/dist/flows/flow-store-for-session.d.ts +31 -0
- package/dist/flows/flow-store-for-session.js +33 -0
- package/dist/flows/flow-success.js +15 -3
- package/dist/flows/flow-tools.js +87 -33
- package/dist/flows/flows.d.ts +14 -1
- package/dist/flows/flows.js +502 -24
- package/dist/flows/heal-run.js +5 -2
- package/dist/flows/predicate-to-expect.d.ts +17 -12
- package/dist/flows/predicate-to-expect.js +36 -15
- package/dist/flows/recordings.d.ts +13 -1
- package/dist/flows/recordings.js +17 -2
- package/dist/flows/replay.d.ts +22 -2
- package/dist/flows/replay.js +28 -2
- package/dist/flows/server-verify.js +16 -2
- package/dist/flows/verify-change-tools.js +9 -3
- package/dist/honesty/blind-spots.d.ts +51 -15
- package/dist/honesty/blind-spots.js +64 -4
- package/dist/honesty/feature-capture.d.ts +150 -0
- package/dist/honesty/feature-capture.js +233 -0
- package/dist/honesty/honesty.d.ts +24 -0
- package/dist/honesty/honesty.js +25 -1
- package/dist/honesty/instrumentation-gaps.d.ts +39 -6
- package/dist/honesty/instrumentation-gaps.js +88 -5
- package/dist/honesty/tool-hit-rate.d.ts +86 -0
- package/dist/honesty/tool-hit-rate.js +90 -0
- package/dist/honesty/undeclared-change.d.ts +51 -0
- package/dist/honesty/undeclared-change.js +56 -0
- package/dist/honesty/verified.d.ts +16 -0
- package/dist/honesty/verified.js +84 -5
- package/dist/http-server.d.ts +0 -1
- package/dist/http-server.js +13 -1
- package/dist/hunt/hunt-report.d.ts +0 -2
- package/dist/hunt/hunt-report.js +1 -1
- package/dist/impact/impact-recorder.d.ts +31 -8
- package/dist/impact/impact-recorder.js +104 -21
- package/dist/impact/impact-store.d.ts +13 -4
- package/dist/impact/impact-store.js +44 -3
- package/dist/index.d.ts +4 -1
- package/dist/index.js +113 -7
- package/dist/init/agent-rules.d.ts +30 -6
- package/dist/init/agent-rules.js +54 -13
- package/dist/init/astro-patch.d.ts +16 -0
- package/dist/init/astro-patch.js +28 -0
- package/dist/init/capabilities.d.ts +4 -3
- package/dist/init/capabilities.js +23 -3
- package/dist/init/closing-hint.d.ts +36 -0
- package/dist/init/closing-hint.js +120 -0
- package/dist/init/confirm.d.ts +27 -28
- package/dist/init/confirm.js +51 -11
- package/dist/init/cra.d.ts +34 -5
- package/dist/init/cra.js +96 -25
- package/dist/init/csp-check.js +17 -2
- package/dist/init/csp-doctor.d.ts +8 -1
- package/dist/init/csp-doctor.js +8 -3
- package/dist/init/dev-script.d.ts +50 -0
- package/dist/init/dev-script.js +66 -0
- package/dist/init/format-generated.d.ts +18 -0
- package/dist/init/format-generated.js +39 -0
- package/dist/init/install-hint.d.ts +9 -0
- package/dist/init/install-hint.js +29 -0
- package/dist/init/mcp-clients.d.ts +7 -0
- package/dist/init/mcp-clients.js +7 -0
- package/dist/init/mcp.d.ts +17 -6
- package/dist/init/mcp.js +27 -11
- package/dist/init/node-io.js +11 -1
- package/dist/init/plan-framework.d.ts +0 -5
- package/dist/init/plan-framework.js +147 -37
- package/dist/init/plan.d.ts +30 -37
- package/dist/init/plan.js +50 -60
- package/dist/init/preflight.d.ts +28 -0
- package/dist/init/preflight.js +38 -0
- package/dist/init/refresh-rules.d.ts +39 -0
- package/dist/init/refresh-rules.js +51 -0
- package/dist/init/run.d.ts +32 -35
- package/dist/init/run.js +151 -202
- package/dist/init/slash-command.d.ts +1 -1
- package/dist/init/snippets.js +90 -31
- package/dist/init/vite-config.d.ts +1 -1
- package/dist/init/vite-config.js +39 -25
- package/dist/init/workspace-apps.d.ts +17 -10
- package/dist/init/workspace-apps.js +110 -0
- package/dist/input/network-mock-tools.js +3 -6
- package/dist/input/real-input.d.ts +2 -0
- package/dist/input/real-input.js +28 -7
- package/dist/input/scroll-find.d.ts +7 -4
- package/dist/input/scroll-find.js +63 -25
- package/dist/input/scroll-tools.js +4 -6
- package/dist/input/viewport-tools.js +5 -4
- package/dist/intent/inline-intent.d.ts +37 -0
- package/dist/intent/inline-intent.js +193 -0
- package/dist/intent/intent-shard-store.d.ts +72 -0
- package/dist/intent/intent-shard-store.js +203 -0
- package/dist/intent/intent-shard.d.ts +411 -0
- package/dist/intent/intent-shard.js +176 -0
- package/dist/intent/intent-store.d.ts +49 -0
- package/dist/intent/intent-store.js +133 -0
- package/dist/intent/intent-subject.d.ts +45 -0
- package/dist/intent/intent-subject.js +177 -0
- package/dist/intent/intent-tools.d.ts +2 -0
- package/dist/intent/intent-tools.js +143 -0
- package/dist/intent/open-intents.d.ts +42 -0
- package/dist/intent/open-intents.js +40 -0
- package/dist/journal/envelope.d.ts +26 -26
- package/dist/journal/journal-recorder.d.ts +23 -0
- package/dist/journal/journal-recorder.js +35 -0
- package/dist/license/license-env.d.ts +29 -0
- package/dist/license/license-env.js +148 -0
- package/dist/loopback-agent.d.ts +31 -0
- package/dist/loopback-agent.js +57 -0
- package/dist/mcp/attach-memory.d.ts +83 -0
- package/dist/mcp/attach-memory.js +185 -0
- package/dist/mcp/client-identity.d.ts +31 -0
- package/dist/mcp/client-identity.js +51 -0
- package/dist/mcp/mcp-post-transport.d.ts +26 -0
- package/dist/mcp/mcp-post-transport.js +109 -0
- package/dist/mcp/mcp-proxy.d.ts +2 -8
- package/dist/mcp/mcp-proxy.js +64 -62
- package/dist/mcp/mcp.d.ts +2 -0
- package/dist/mcp/mcp.js +52 -24
- package/dist/mcp/proxy-backoff.d.ts +11 -0
- package/dist/mcp/proxy-backoff.js +13 -0
- package/dist/mcp/proxy-daemon-probe.d.ts +1 -0
- package/dist/mcp/proxy-daemon-probe.js +7 -1
- package/dist/mcp/proxy-handshake.d.ts +23 -0
- package/dist/mcp/proxy-handshake.js +31 -0
- package/dist/mcp/server-instructions.js +45 -3
- package/dist/mcp/tool-catalog-cache.d.ts +16 -0
- package/dist/mcp/tool-catalog-cache.js +22 -0
- package/dist/memory/memory-tools.d.ts +2 -0
- package/dist/memory/memory-tools.js +82 -0
- package/dist/memory/project-memory.d.ts +34 -0
- package/dist/memory/project-memory.js +96 -0
- package/dist/oracles/flow-instrument-gaps.d.ts +4 -4
- package/dist/oracles/flow-instrument-gaps.js +4 -5
- package/dist/oracles/propose-consequences.js +12 -3
- package/dist/oracles/self-instrument.d.ts +9 -9
- package/dist/oracles/self-instrument.js +19 -13
- package/dist/pool/browser-pool.d.ts +75 -5
- package/dist/pool/browser-pool.js +144 -5
- package/dist/pool/playwright-launcher.js +12 -1
- package/dist/project/fs-port.d.ts +3 -0
- package/dist/project/fs-port.js +3 -2
- package/dist/project/memory-fs.js +6 -1
- package/dist/project/project-tools.js +6 -35
- package/dist/project/reticle-dir.d.ts +17 -2
- package/dist/project/reticle-dir.js +22 -4
- package/dist/runs/context-tools.d.ts +2 -0
- package/dist/runs/context-tools.js +89 -0
- package/dist/runs/run-context.d.ts +40 -0
- package/dist/runs/run-context.js +158 -0
- package/dist/runs/run-diff.d.ts +2 -1
- package/dist/runs/run-store.d.ts +10 -0
- package/dist/runs/run-store.js +10 -0
- package/dist/runs/verification-sync.d.ts +0 -11
- package/dist/runs/verification-sync.js +24 -3
- package/dist/runs/verify-server.d.ts +8 -1
- package/dist/runs/verify-server.js +14 -2
- package/dist/session/command-timeout.d.ts +5 -2
- package/dist/session/command-timeout.js +5 -4
- package/dist/session/dev-server-probe.d.ts +0 -8
- package/dist/session/dev-server-probe.js +1 -1
- package/dist/session/last-act.d.ts +7 -1
- package/dist/session/last-act.js +2 -2
- package/dist/session/lease-visibility.d.ts +67 -0
- package/dist/session/lease-visibility.js +76 -0
- package/dist/session/live-control-tools.js +1 -42
- package/dist/session/no-session-diagnosis.d.ts +33 -0
- package/dist/session/no-session-diagnosis.js +82 -24
- package/dist/session/no-session-next-action.d.ts +12 -0
- package/dist/session/no-session-next-action.js +77 -6
- package/dist/session/no-session-watch.d.ts +18 -6
- package/dist/session/no-session-watch.js +125 -75
- package/dist/session/output-budget.js +4 -1
- package/dist/session/pending-commands.d.ts +11 -1
- package/dist/session/pending-commands.js +12 -2
- package/dist/session/resolve-within.d.ts +34 -0
- package/dist/session/resolve-within.js +53 -0
- package/dist/session/session-health.d.ts +9 -0
- package/dist/session/session-health.js +23 -0
- package/dist/session/session-info.d.ts +18 -0
- package/dist/session/session-info.js +11 -0
- package/dist/session/session-manager.d.ts +14 -0
- package/dist/session/session-manager.js +111 -4
- package/dist/session/session-mirror.d.ts +16 -0
- package/dist/session/session-mirror.js +22 -0
- package/dist/session/session-recommendation.d.ts +19 -5
- package/dist/session/session-recommendation.js +25 -9
- package/dist/session/session-successor.d.ts +37 -0
- package/dist/session/session-successor.js +113 -0
- package/dist/session/session-tools.js +2 -2
- package/dist/session/session.d.ts +53 -3
- package/dist/session/session.js +162 -9
- package/dist/session/wall-clock.d.ts +12 -0
- package/dist/session/wall-clock.js +14 -0
- package/dist/setup/agent-configs.d.ts +96 -0
- package/dist/setup/agent-configs.js +333 -0
- package/dist/setup/agent-io.d.ts +9 -0
- package/dist/setup/agent-io.js +16 -0
- package/dist/setup/agent-writer.d.ts +51 -0
- package/dist/setup/agent-writer.js +115 -0
- package/dist/setup/approval-migration.d.ts +47 -0
- package/dist/setup/approval-migration.js +68 -0
- package/dist/setup/auto-approve.d.ts +85 -0
- package/dist/setup/auto-approve.js +150 -0
- package/dist/setup/bridge-port.d.ts +15 -0
- package/dist/setup/bridge-port.js +24 -0
- package/dist/setup/desktop-shape.d.ts +57 -0
- package/dist/setup/desktop-shape.js +63 -0
- package/dist/setup/dev-server-wait.d.ts +60 -0
- package/dist/setup/dev-server-wait.js +65 -0
- package/dist/setup/drive-agent.d.ts +71 -0
- package/dist/setup/drive-agent.js +171 -0
- package/dist/setup/drive-plan.d.ts +68 -0
- package/dist/setup/drive-plan.js +130 -0
- package/dist/setup/ensure-daemon.d.ts +29 -0
- package/dist/setup/ensure-daemon.js +58 -0
- package/dist/setup/init-runtime.d.ts +47 -0
- package/dist/setup/init-runtime.js +160 -0
- package/dist/setup/interrupt.d.ts +25 -0
- package/dist/setup/interrupt.js +40 -0
- package/dist/setup/license-key.d.ts +39 -0
- package/dist/setup/license-key.js +72 -0
- package/dist/setup/listeners.d.ts +37 -0
- package/dist/setup/listeners.js +85 -0
- package/dist/setup/node-effects.d.ts +60 -0
- package/dist/setup/node-effects.js +210 -0
- package/dist/setup/page-probe.d.ts +39 -0
- package/dist/setup/page-probe.js +49 -0
- package/dist/setup/relaunch.d.ts +36 -0
- package/dist/setup/relaunch.js +57 -0
- package/dist/setup/remaining-steps.d.ts +19 -0
- package/dist/setup/remaining-steps.js +31 -0
- package/dist/setup/run-setup.d.ts +99 -0
- package/dist/setup/run-setup.js +187 -0
- package/dist/setup/session-pick.d.ts +47 -0
- package/dist/setup/session-pick.js +51 -0
- package/dist/setup/setup-command.d.ts +45 -0
- package/dist/setup/setup-command.js +199 -0
- package/dist/setup/setup-options.d.ts +74 -0
- package/dist/setup/setup-options.js +67 -0
- package/dist/setup/transcripts.d.ts +16 -0
- package/dist/setup/transcripts.js +43 -0
- package/dist/status-payload.d.ts +14 -1
- package/dist/status-payload.js +23 -1
- package/dist/telemetry/automation-hint.d.ts +2 -1
- package/dist/telemetry/daemon-telemetry.d.ts +8 -1
- package/dist/telemetry/daemon-telemetry.js +52 -5
- package/dist/telemetry/error-class.js +1 -1
- package/dist/telemetry/feedback-context.d.ts +9 -1
- package/dist/telemetry/feedback-context.js +60 -29
- package/dist/telemetry/feedback-local.d.ts +15 -0
- package/dist/telemetry/feedback-local.js +56 -0
- package/dist/telemetry/feedback-outbox.d.ts +2 -1
- package/dist/telemetry/feedback.d.ts +11 -0
- package/dist/telemetry/feedback.js +19 -6
- package/dist/telemetry/init-telemetry.d.ts +2 -0
- package/dist/telemetry/init-telemetry.js +2 -0
- package/dist/telemetry/install-source.d.ts +14 -0
- package/dist/telemetry/install-source.js +30 -0
- package/dist/telemetry/license-activation.d.ts +7 -1
- package/dist/telemetry/license-activation.js +9 -5
- package/dist/telemetry/mcp-connection.js +7 -0
- package/dist/telemetry/project-profile.d.ts +12 -9
- package/dist/telemetry/project-profile.js +12 -7
- package/dist/telemetry/proxy-telemetry.d.ts +3 -0
- package/dist/telemetry/proxy-telemetry.js +21 -0
- package/dist/telemetry/run-telemetry.d.ts +0 -2
- package/dist/telemetry/run-telemetry.js +1 -1
- package/dist/telemetry/session-metrics.d.ts +12 -0
- package/dist/telemetry/session-metrics.js +35 -1
- package/dist/telemetry/telemetry.js +17 -2
- package/dist/telemetry/tool-refused.d.ts +3 -1
- package/dist/telemetry/tool-refused.js +34 -2
- package/dist/telemetry/verification-of.js +2 -2
- package/dist/tools/act-capsule.d.ts +10 -0
- package/dist/tools/act-capsule.js +8 -2
- package/dist/tools/act-danger.d.ts +2 -1
- package/dist/tools/act-danger.js +11 -3
- package/dist/tools/act-observation.d.ts +41 -0
- package/dist/tools/act-observation.js +36 -0
- package/dist/tools/act-preflight.d.ts +20 -0
- package/dist/tools/act-preflight.js +98 -0
- package/dist/tools/act-sequence-retry.d.ts +45 -0
- package/dist/tools/act-sequence-retry.js +58 -0
- package/dist/tools/act-sequence-tool.d.ts +13 -0
- package/dist/tools/act-sequence-tool.js +135 -0
- package/dist/tools/act-target.d.ts +14 -0
- package/dist/tools/act-target.js +47 -0
- package/dist/tools/act-tools.d.ts +21 -1
- package/dist/tools/act-tools.js +196 -204
- package/dist/tools/assert-source.d.ts +22 -0
- package/dist/tools/assert-source.js +53 -0
- package/dist/tools/assert-verdict.d.ts +20 -3
- package/dist/tools/assert-verdict.js +58 -20
- package/dist/tools/browser-tools.js +6 -22
- package/dist/tools/complete-snapshot.d.ts +48 -0
- package/dist/tools/complete-snapshot.js +75 -0
- package/dist/tools/coverage-tools.d.ts +10 -1
- package/dist/tools/coverage-tools.js +123 -69
- package/dist/tools/dynamic-tools.js +53 -13
- package/dist/tools/error-recovery.d.ts +25 -14
- package/dist/tools/error-recovery.js +78 -9
- package/dist/tools/feedback-tools.d.ts +1 -1
- package/dist/tools/feedback-tools.js +2 -2
- package/dist/tools/invoke-tool.js +121 -11
- package/dist/tools/lease-hint.d.ts +10 -0
- package/dist/tools/lease-hint.js +53 -4
- package/dist/tools/lease-tools.d.ts +35 -5
- package/dist/tools/lease-tools.js +191 -13
- package/dist/tools/merged-name-redirect.d.ts +13 -0
- package/dist/tools/merged-name-redirect.js +22 -0
- package/dist/tools/navigate-arrival.d.ts +0 -2
- package/dist/tools/navigate-arrival.js +1 -1
- package/dist/tools/numeric-bounds.d.ts +100 -0
- package/dist/tools/numeric-bounds.js +125 -0
- package/dist/tools/observe-tools.js +109 -65
- package/dist/tools/read-tools.js +31 -8
- package/dist/tools/real-input-attempt.d.ts +32 -0
- package/dist/tools/real-input-attempt.js +212 -2
- package/dist/tools/reconcile-tools.js +22 -8
- package/dist/tools/resolve-target.d.ts +0 -7
- package/dist/tools/sdk-marker-probe.d.ts +29 -0
- package/dist/tools/sdk-marker-probe.js +57 -0
- package/dist/tools/snapshot-delta.d.ts +1 -1
- package/dist/tools/tool-kit.d.ts +24 -0
- package/dist/tools/tool-kit.js +21 -0
- package/dist/tools/tool-names.d.ts +5 -0
- package/dist/tools/tool-names.js +5 -0
- package/dist/tools/tool-surface.d.ts +85 -6
- package/dist/tools/tool-surface.js +122 -2
- package/dist/tools/tools-helpers.d.ts +19 -0
- package/dist/tools/tools-helpers.js +46 -0
- package/dist/tools/tools.d.ts +2 -0
- package/dist/tools/tools.js +78 -12
- package/dist/tools/unadvertised-help.js +4 -4
- package/dist/tools/verify-next-baton.d.ts +53 -0
- package/dist/tools/verify-next-baton.js +52 -0
- package/dist/update/reticle-deps.d.ts +9 -0
- package/dist/update/reticle-deps.js +27 -0
- package/dist/update/sdk-sync.d.ts +1 -2
- package/dist/update/sdk-sync.js +1 -21
- package/dist/update/update-nudge.d.ts +25 -10
- package/dist/update/update-nudge.js +32 -3
- package/dist/update/updater.d.ts +1 -1
- package/dist/version/peer-announce.js +4 -2
- package/dist/version/sdk-fix.d.ts +47 -0
- package/dist/version/sdk-fix.js +127 -0
- package/dist/version/version-nudge.d.ts +14 -0
- package/dist/version/version-nudge.js +21 -0
- package/dist/version/version-skew.d.ts +38 -3
- package/dist/version/version-skew.js +83 -7
- package/dist/visual/visual-store.d.ts +6 -6
- package/dist/visual/visual-store.js +18 -16
- package/dist/visual/visual-tools.js +57 -12
- package/docs/README.md +2 -1
- package/docs/cli/cloud.mdx +1 -1
- package/docs/cli/doctor.mdx +2 -0
- package/docs/cli/serve.mdx +4 -2
- package/docs/cli/verify.mdx +4 -5
- package/docs/cli.mdx +7 -3
- package/docs/desktop.mdx +1 -1
- package/docs/docs.json +2 -2
- package/docs/gates.md +1 -1
- package/docs/getting-started.md +19 -3
- package/docs/index.mdx +9 -6
- package/docs/install-agentic.mdx +38 -12
- package/docs/install-manual.mdx +1 -1
- package/docs/packages/browser.mdx +2 -2
- package/docs/packages/server.mdx +1 -1
- package/docs/packages.mdx +8 -6
- package/docs/platform-integration.md +17 -0
- package/docs/predicates.mdx +8 -0
- package/docs/reticle-manual.md +106 -0
- package/docs/skill-file.mdx +3 -3
- package/docs/telemetry-contract.md +108 -4
- package/docs/tools-act-sequence.mdx +16 -0
- package/docs/tools-tools-and-run.mdx +2 -4
- package/docs/troubleshooting.mdx +9 -0
- package/docs/usage.md +4 -3
- package/package.json +4 -3
- package/dist/init/cursor.d.ts +0 -24
- package/dist/init/cursor.js +0 -80
- package/dist/session/session-readiness.d.ts +0 -34
- package/dist/session/session-readiness.js +0 -36
package/dist/flows/flows.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { asFlowName } from '@reticlehq/core';
|
|
2
|
-
import { AnchorKind, DEGRADED_ANCHOR_ROLE, FLOW_FILE_VERSION, FlowErrorCode, FlowFileSchema, QueryBy, } from '@reticlehq/core';
|
|
2
|
+
import { AnchorKind, DEGRADED_ANCHOR_ROLE, FLOW_FILE_VERSION, FlowErrorCode, FlowFileSchema, QueryBy, defaultIsSensitiveKey, } from '@reticlehq/core';
|
|
3
3
|
import { ReticleTool } from '../tools/tool-names.js';
|
|
4
4
|
import { asString, asRecord } from '../tools/tools-helpers.js';
|
|
5
5
|
import { applyHealChanges } from './heal.js';
|
|
6
|
+
import { flowIntentGap, linkFlowIntent } from './flow-intent.js';
|
|
7
|
+
import { IntentStore } from '../intent/intent-store.js';
|
|
6
8
|
import { flowDir, flowPath, reticleDirPaths, isValidFlowName } from '../project/reticle-dir.js';
|
|
7
9
|
/**
|
|
8
10
|
* A projectId only scopes storage when it's a safe single path segment (it's stamped from the
|
|
@@ -92,8 +94,464 @@ function subStepToFlowStep(raw) {
|
|
|
92
94
|
const { anchor, degraded } = anchorForStep(sub);
|
|
93
95
|
return buildStep(ReticleTool.ACT, anchor, action, args, degraded);
|
|
94
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* What a redacted fill value is replaced WITH.
|
|
99
|
+
*
|
|
100
|
+
* Replaced, never dropped. Replay still needs a step there, and a flow that silently loses its
|
|
101
|
+
* password step drifts at sign-in forever with no explanation of why. The placeholder also tells a
|
|
102
|
+
* reader what to do: the value belongs in the environment, not in a file they are about to commit.
|
|
103
|
+
*/
|
|
104
|
+
export const REDACTED_FILL = '<redacted: supply at replay>';
|
|
105
|
+
/**
|
|
106
|
+
* Strip credentials from what gets written to disk.
|
|
107
|
+
*
|
|
108
|
+
* is the GIT-CHECKED flow store — that is its whole purpose, and this file's own
|
|
109
|
+
* header already insists a volatile ref must never "leak into a git-checked file". A password did:
|
|
110
|
+
* recording a sign-in captures the fill VALUE verbatim, so the first flow anybody records on an
|
|
111
|
+
* authenticated app writes their password into a file they then commit. Found by driving a fresh
|
|
112
|
+
* workspace, where .claude/scheduled_tasks.lock
|
|
113
|
+
.claude/skills/reticle-ui/SKILL.md
|
|
114
|
+
.env.example
|
|
115
|
+
.gcloudignore
|
|
116
|
+
.gitattributes
|
|
117
|
+
.github/workflows/ci.yml
|
|
118
|
+
.gitignore
|
|
119
|
+
.prettierignore
|
|
120
|
+
.prettierrc
|
|
121
|
+
.reticle/flows/console-4734c2f0/sign-in.json
|
|
122
|
+
.reticle/flows/console-4734c2f0/triage-filter-link.json
|
|
123
|
+
.reticle/flows/console-4734c2f0/triage-queue.json
|
|
124
|
+
CLAUDE.md
|
|
125
|
+
LICENSE
|
|
126
|
+
README.md
|
|
127
|
+
apps/api/.env.example
|
|
128
|
+
apps/api/.gitignore
|
|
129
|
+
apps/api/.prettierrc.json
|
|
130
|
+
apps/api/certs/supabase-prod-ca.crt
|
|
131
|
+
apps/api/eslint.config.mjs
|
|
132
|
+
apps/api/package.json
|
|
133
|
+
apps/api/pnpm-lock.yaml
|
|
134
|
+
apps/api/scripts/gen-license-keypair.mjs
|
|
135
|
+
apps/api/scripts/purge-test-user.mjs
|
|
136
|
+
apps/api/scripts/setup-razorpay-plans.mjs
|
|
137
|
+
apps/api/src/constants/auth.constants.ts
|
|
138
|
+
apps/api/src/constants/billing.constants.ts
|
|
139
|
+
apps/api/src/constants/corpus.constants.ts
|
|
140
|
+
apps/api/src/constants/http.constants.ts
|
|
141
|
+
apps/api/src/constants/identity.constants.ts
|
|
142
|
+
apps/api/src/constants/issues.constants.ts
|
|
143
|
+
apps/api/src/constants/overview.constants.ts
|
|
144
|
+
apps/api/src/constants/project.constants.ts
|
|
145
|
+
apps/api/src/constants/review.constants.ts
|
|
146
|
+
apps/api/src/constants/runs.constants.ts
|
|
147
|
+
apps/api/src/constants/verification.constants.ts
|
|
148
|
+
apps/api/src/domain/admin/admin-gate.test.ts
|
|
149
|
+
apps/api/src/domain/admin/admin.routes.test.ts
|
|
150
|
+
apps/api/src/domain/admin/admin.routes.ts
|
|
151
|
+
apps/api/src/domain/admin/admin.service.ts
|
|
152
|
+
apps/api/src/domain/billing/billing.routes.ts
|
|
153
|
+
apps/api/src/domain/billing/coupon.routes.test.ts
|
|
154
|
+
apps/api/src/domain/billing/coupons.service.ts
|
|
155
|
+
apps/api/src/domain/billing/entitlements.test.ts
|
|
156
|
+
apps/api/src/domain/billing/entitlements.ts
|
|
157
|
+
apps/api/src/domain/billing/plans.routes.test.ts
|
|
158
|
+
apps/api/src/domain/billing/subscription.routes.test.ts
|
|
159
|
+
apps/api/src/domain/corpus/corpus.service.test.ts
|
|
160
|
+
apps/api/src/domain/corpus/corpus.service.ts
|
|
161
|
+
apps/api/src/domain/flows/flows.routes.ts
|
|
162
|
+
apps/api/src/domain/flows/flows.service.test.ts
|
|
163
|
+
apps/api/src/domain/flows/flows.service.ts
|
|
164
|
+
apps/api/src/domain/identity/access-control.routes.test.ts
|
|
165
|
+
apps/api/src/domain/identity/api-key.test.ts
|
|
166
|
+
apps/api/src/domain/identity/api-key.ts
|
|
167
|
+
apps/api/src/domain/identity/auth-audit.service.ts
|
|
168
|
+
apps/api/src/domain/identity/create-org.routes.test.ts
|
|
169
|
+
apps/api/src/domain/identity/device-auth.service.ts
|
|
170
|
+
apps/api/src/domain/identity/identity.routes.ts
|
|
171
|
+
apps/api/src/domain/identity/identity.service.test.ts
|
|
172
|
+
apps/api/src/domain/identity/identity.service.ts
|
|
173
|
+
apps/api/src/domain/identity/identity.types.test.ts
|
|
174
|
+
apps/api/src/domain/identity/identity.types.ts
|
|
175
|
+
apps/api/src/domain/identity/invites.test.ts
|
|
176
|
+
apps/api/src/domain/identity/join-workspace.test.ts
|
|
177
|
+
apps/api/src/domain/identity/login-code.ts
|
|
178
|
+
apps/api/src/domain/identity/members.routes.test.ts
|
|
179
|
+
apps/api/src/domain/identity/members.routes.ts
|
|
180
|
+
apps/api/src/domain/identity/oauth.routes.test.ts
|
|
181
|
+
apps/api/src/domain/identity/oauth.routes.ts
|
|
182
|
+
apps/api/src/domain/identity/password-auth.test.ts
|
|
183
|
+
apps/api/src/domain/identity/password-routes.test.ts
|
|
184
|
+
apps/api/src/domain/identity/password.test.ts
|
|
185
|
+
apps/api/src/domain/identity/password.ts
|
|
186
|
+
apps/api/src/domain/identity/permissions.test.ts
|
|
187
|
+
apps/api/src/domain/identity/permissions.ts
|
|
188
|
+
apps/api/src/domain/identity/project-scope.routes.test.ts
|
|
189
|
+
apps/api/src/domain/identity/team-scenarios.test.ts
|
|
190
|
+
apps/api/src/domain/ingest/agent-attribution.test.ts
|
|
191
|
+
apps/api/src/domain/ingest/ingest.service.ts
|
|
192
|
+
apps/api/src/domain/insights/insights.routes.test.ts
|
|
193
|
+
apps/api/src/domain/insights/insights.routes.ts
|
|
194
|
+
apps/api/src/domain/insights/insights.service.ts
|
|
195
|
+
apps/api/src/domain/issues/attribution-filter.test.ts
|
|
196
|
+
apps/api/src/domain/issues/issue-extract.test.ts
|
|
197
|
+
apps/api/src/domain/issues/issue-extract.ts
|
|
198
|
+
apps/api/src/domain/issues/issue-owner.test.ts
|
|
199
|
+
apps/api/src/domain/issues/issue-repair.test.ts
|
|
200
|
+
apps/api/src/domain/issues/issues.routes.test.ts
|
|
201
|
+
apps/api/src/domain/issues/issues.routes.ts
|
|
202
|
+
apps/api/src/domain/issues/issues.service.test.ts
|
|
203
|
+
apps/api/src/domain/issues/issues.service.ts
|
|
204
|
+
apps/api/src/domain/licensing/licensing.service.test.ts
|
|
205
|
+
apps/api/src/domain/licensing/licensing.service.ts
|
|
206
|
+
apps/api/src/domain/licensing/subscription.service.test.ts
|
|
207
|
+
apps/api/src/domain/licensing/subscription.service.ts
|
|
208
|
+
apps/api/src/domain/memory/memory-constants.ts
|
|
209
|
+
apps/api/src/domain/memory/memory-from-intent.test.ts
|
|
210
|
+
apps/api/src/domain/memory/memory-from-intent.ts
|
|
211
|
+
apps/api/src/domain/memory/memory-merge.test.ts
|
|
212
|
+
apps/api/src/domain/memory/memory-merge.ts
|
|
213
|
+
apps/api/src/domain/memory/memory.routes.test.ts
|
|
214
|
+
apps/api/src/domain/memory/memory.routes.ts
|
|
215
|
+
apps/api/src/domain/memory/memory.service.ts
|
|
216
|
+
apps/api/src/domain/overview/honesty.test.ts
|
|
217
|
+
apps/api/src/domain/overview/overview.routes.ts
|
|
218
|
+
apps/api/src/domain/overview/overview.service.test.ts
|
|
219
|
+
apps/api/src/domain/overview/overview.service.ts
|
|
220
|
+
apps/api/src/domain/project/project-access.routes.ts
|
|
221
|
+
apps/api/src/domain/project/project-access.test.ts
|
|
222
|
+
apps/api/src/domain/project/project-cascade.test.ts
|
|
223
|
+
apps/api/src/domain/project/project-name.test.ts
|
|
224
|
+
apps/api/src/domain/project/project.routes.ts
|
|
225
|
+
apps/api/src/domain/project/project.service.test.ts
|
|
226
|
+
apps/api/src/domain/project/project.service.ts
|
|
227
|
+
apps/api/src/domain/reviews/review.service.test.ts
|
|
228
|
+
apps/api/src/domain/reviews/review.service.ts
|
|
229
|
+
apps/api/src/domain/runs/regrade-backfill.test.ts
|
|
230
|
+
apps/api/src/domain/runs/regrade-backfill.ts
|
|
231
|
+
apps/api/src/domain/runs/run-grade.test.ts
|
|
232
|
+
apps/api/src/domain/runs/run-grade.ts
|
|
233
|
+
apps/api/src/domain/runs/runs.routes.ts
|
|
234
|
+
apps/api/src/domain/runs/runs.service.test.ts
|
|
235
|
+
apps/api/src/domain/runs/runs.service.ts
|
|
236
|
+
apps/api/src/domain/sync/permutations.test.ts
|
|
237
|
+
apps/api/src/domain/sync/sync.routes.test.ts
|
|
238
|
+
apps/api/src/domain/sync/sync.routes.ts
|
|
239
|
+
apps/api/src/domain/sync/sync.service.ts
|
|
240
|
+
apps/api/src/domain/verifications/verifications.routes.ts
|
|
241
|
+
apps/api/src/domain/verifications/verifications.service.test.ts
|
|
242
|
+
apps/api/src/domain/verifications/verifications.service.ts
|
|
243
|
+
apps/api/src/http/app-context.ts
|
|
244
|
+
apps/api/src/http/app.test.ts
|
|
245
|
+
apps/api/src/http/app.ts
|
|
246
|
+
apps/api/src/http/cookies.ts
|
|
247
|
+
apps/api/src/http/guards.ts
|
|
248
|
+
apps/api/src/http/http-kit.ts
|
|
249
|
+
apps/api/src/http/malformed-body.test.ts
|
|
250
|
+
apps/api/src/http/server.ts
|
|
251
|
+
apps/api/src/http/spa.test.ts
|
|
252
|
+
apps/api/src/platform/auth/session.test.ts
|
|
253
|
+
apps/api/src/platform/auth/session.ts
|
|
254
|
+
apps/api/src/platform/clock.ts
|
|
255
|
+
apps/api/src/platform/config.test.ts
|
|
256
|
+
apps/api/src/platform/config.ts
|
|
257
|
+
apps/api/src/platform/db/database.test.ts
|
|
258
|
+
apps/api/src/platform/db/database.ts
|
|
259
|
+
apps/api/src/platform/db/schema.ts
|
|
260
|
+
apps/api/src/platform/google-id-token.test.ts
|
|
261
|
+
apps/api/src/platform/google-id-token.ts
|
|
262
|
+
apps/api/src/platform/id.ts
|
|
263
|
+
apps/api/src/platform/license-signer.ts
|
|
264
|
+
apps/api/src/platform/mailer.test.ts
|
|
265
|
+
apps/api/src/platform/mailer.ts
|
|
266
|
+
apps/api/src/platform/oauth.test.ts
|
|
267
|
+
apps/api/src/platform/oauth.ts
|
|
268
|
+
apps/api/src/platform/payment.ts
|
|
269
|
+
apps/api/src/platform/rate-limit.test.ts
|
|
270
|
+
apps/api/src/platform/rate-limit.ts
|
|
271
|
+
apps/api/src/platform/razorpay.test.ts
|
|
272
|
+
apps/api/src/platform/razorpay.ts
|
|
273
|
+
apps/api/src/platform/reticle-runner.test.ts
|
|
274
|
+
apps/api/src/platform/reticle-runner.ts
|
|
275
|
+
apps/api/src/platform/runner.ts
|
|
276
|
+
apps/api/src/platform/verification-worker.ts
|
|
277
|
+
apps/api/src/test-support/flow-fixture.ts
|
|
278
|
+
apps/api/src/test-support/run-fixture.ts
|
|
279
|
+
apps/api/src/types/brand.ts
|
|
280
|
+
apps/api/src/types/fastify.d.ts
|
|
281
|
+
apps/api/tsconfig.json
|
|
282
|
+
apps/api/vitest.config.ts
|
|
283
|
+
apps/console/.env.example
|
|
284
|
+
apps/console/.gitignore
|
|
285
|
+
apps/console/.prettierrc.json
|
|
286
|
+
apps/console/.reticle/cloud.json
|
|
287
|
+
apps/console/components.json
|
|
288
|
+
apps/console/eslint.config.mjs
|
|
289
|
+
apps/console/index.html
|
|
290
|
+
apps/console/package.json
|
|
291
|
+
apps/console/pnpm-lock.yaml
|
|
292
|
+
apps/console/scripts/selfcheck.mjs
|
|
293
|
+
apps/console/src/App.tsx
|
|
294
|
+
apps/console/src/api/client.ts
|
|
295
|
+
apps/console/src/api/endpoints.ts
|
|
296
|
+
apps/console/src/api/types.ts
|
|
297
|
+
apps/console/src/app/app-shell.tsx
|
|
298
|
+
apps/console/src/app/auth-context.tsx
|
|
299
|
+
apps/console/src/app/live.ts
|
|
300
|
+
apps/console/src/app/new-workspace.tsx
|
|
301
|
+
apps/console/src/app/org-switcher.tsx
|
|
302
|
+
apps/console/src/app/project-context.test.tsx
|
|
303
|
+
apps/console/src/app/project-context.tsx
|
|
304
|
+
apps/console/src/app/project-switcher.tsx
|
|
305
|
+
apps/console/src/app/scope-notice.tsx
|
|
306
|
+
apps/console/src/app/theme.ts
|
|
307
|
+
apps/console/src/app/toast.tsx
|
|
308
|
+
apps/console/src/components/ui.tsx
|
|
309
|
+
apps/console/src/constants/api.constants.ts
|
|
310
|
+
apps/console/src/design/tailwind.css
|
|
311
|
+
apps/console/src/design/theme.css
|
|
312
|
+
apps/console/src/design/tokens.ts
|
|
313
|
+
apps/console/src/features/auth/device-view.tsx
|
|
314
|
+
apps/console/src/features/auth/login-view.tsx
|
|
315
|
+
apps/console/src/features/billing/billing-view.tsx
|
|
316
|
+
apps/console/src/features/billing/redeem-panel.tsx
|
|
317
|
+
apps/console/src/features/connect/connect-view.test.tsx
|
|
318
|
+
apps/console/src/features/connect/connect-view.tsx
|
|
319
|
+
apps/console/src/features/connect/copy-button.tsx
|
|
320
|
+
apps/console/src/features/issues/assignee.tsx
|
|
321
|
+
apps/console/src/features/issues/expected-actual.tsx
|
|
322
|
+
apps/console/src/features/issues/fix-prompt.tsx
|
|
323
|
+
apps/console/src/features/issues/issues-view.test.tsx
|
|
324
|
+
apps/console/src/features/issues/issues-view.tsx
|
|
325
|
+
apps/console/src/features/issues/source-link.tsx
|
|
326
|
+
apps/console/src/features/keys/keys-view.test.tsx
|
|
327
|
+
apps/console/src/features/keys/keys-view.tsx
|
|
328
|
+
apps/console/src/features/memory/memory-view.tsx
|
|
329
|
+
apps/console/src/features/overview/getting-started.test.tsx
|
|
330
|
+
apps/console/src/features/overview/getting-started.tsx
|
|
331
|
+
apps/console/src/features/overview/impact-board.test.tsx
|
|
332
|
+
apps/console/src/features/overview/impact-board.tsx
|
|
333
|
+
apps/console/src/features/overview/impact-format.ts
|
|
334
|
+
apps/console/src/features/overview/overview-view.test.tsx
|
|
335
|
+
apps/console/src/features/overview/overview-view.tsx
|
|
336
|
+
apps/console/src/features/overview/people-panel.tsx
|
|
337
|
+
apps/console/src/features/overview/trust-panels.test.tsx
|
|
338
|
+
apps/console/src/features/overview/trust-panels.tsx
|
|
339
|
+
apps/console/src/features/runs/runs-view.tsx
|
|
340
|
+
apps/console/src/features/settings/members-panel.test.tsx
|
|
341
|
+
apps/console/src/features/settings/members-panel.tsx
|
|
342
|
+
apps/console/src/features/settings/plan-panel.tsx
|
|
343
|
+
apps/console/src/features/settings/project-access-panel.test.tsx
|
|
344
|
+
apps/console/src/features/settings/project-access-panel.tsx
|
|
345
|
+
apps/console/src/features/settings/settings-view.test.tsx
|
|
346
|
+
apps/console/src/features/settings/settings-view.tsx
|
|
347
|
+
apps/console/src/lib/utils.ts
|
|
348
|
+
apps/console/src/main.tsx
|
|
349
|
+
apps/console/src/test-setup.ts
|
|
350
|
+
apps/console/src/test-support.ts
|
|
351
|
+
apps/console/src/ui/alert-dialog.tsx
|
|
352
|
+
apps/console/src/ui/avatar.tsx
|
|
353
|
+
apps/console/src/ui/badge.tsx
|
|
354
|
+
apps/console/src/ui/button.tsx
|
|
355
|
+
apps/console/src/ui/card.tsx
|
|
356
|
+
apps/console/src/ui/checkbox.tsx
|
|
357
|
+
apps/console/src/ui/command.tsx
|
|
358
|
+
apps/console/src/ui/dialog.tsx
|
|
359
|
+
apps/console/src/ui/dropdown-menu.tsx
|
|
360
|
+
apps/console/src/ui/index.ts
|
|
361
|
+
apps/console/src/ui/input.tsx
|
|
362
|
+
apps/console/src/ui/label.tsx
|
|
363
|
+
apps/console/src/ui/popover.tsx
|
|
364
|
+
apps/console/src/ui/scroll-area.tsx
|
|
365
|
+
apps/console/src/ui/select.tsx
|
|
366
|
+
apps/console/src/ui/separator.tsx
|
|
367
|
+
apps/console/src/ui/sheet.tsx
|
|
368
|
+
apps/console/src/ui/skeleton.tsx
|
|
369
|
+
apps/console/src/ui/sonner.tsx
|
|
370
|
+
apps/console/src/ui/switch.tsx
|
|
371
|
+
apps/console/src/ui/table.tsx
|
|
372
|
+
apps/console/src/ui/tabs.tsx
|
|
373
|
+
apps/console/src/ui/textarea.tsx
|
|
374
|
+
apps/console/src/ui/tooltip.tsx
|
|
375
|
+
apps/console/tsconfig.json
|
|
376
|
+
apps/console/vite.config.ts
|
|
377
|
+
apps/console/vitest.config.ts
|
|
378
|
+
apps/verifier/package.json
|
|
379
|
+
apps/verifier/src/anthropic-driver.test.ts
|
|
380
|
+
apps/verifier/src/anthropic-driver.ts
|
|
381
|
+
apps/verifier/src/bench.ts
|
|
382
|
+
apps/verifier/src/best-effort.ts
|
|
383
|
+
apps/verifier/src/call-tool.test.ts
|
|
384
|
+
apps/verifier/src/call-tool.ts
|
|
385
|
+
apps/verifier/src/capability.ts
|
|
386
|
+
apps/verifier/src/cli.ts
|
|
387
|
+
apps/verifier/src/coverage.test.ts
|
|
388
|
+
apps/verifier/src/coverage.ts
|
|
389
|
+
apps/verifier/src/differential.test.ts
|
|
390
|
+
apps/verifier/src/differential.ts
|
|
391
|
+
apps/verifier/src/explore/routes-memory.test.ts
|
|
392
|
+
apps/verifier/src/explore/routes.test.ts
|
|
393
|
+
apps/verifier/src/explore/routes.ts
|
|
394
|
+
apps/verifier/src/explore/scope.test.ts
|
|
395
|
+
apps/verifier/src/explore/scope.ts
|
|
396
|
+
apps/verifier/src/explore/verify-routes-live.test.ts
|
|
397
|
+
apps/verifier/src/explore/verify-routes.test.ts
|
|
398
|
+
apps/verifier/src/explore/verify-routes.ts
|
|
399
|
+
apps/verifier/src/gateway-live.test.ts
|
|
400
|
+
apps/verifier/src/gateway.test.ts
|
|
401
|
+
apps/verifier/src/gateway.ts
|
|
402
|
+
apps/verifier/src/grade-reconcile.test.ts
|
|
403
|
+
apps/verifier/src/grade.ts
|
|
404
|
+
apps/verifier/src/harness.test.ts
|
|
405
|
+
apps/verifier/src/harness.ts
|
|
406
|
+
apps/verifier/src/index.ts
|
|
407
|
+
apps/verifier/src/inject/inject-live.test.ts
|
|
408
|
+
apps/verifier/src/inject/inject-run.test.ts
|
|
409
|
+
apps/verifier/src/inject/injecting-launcher.test.ts
|
|
410
|
+
apps/verifier/src/inject/injecting-launcher.ts
|
|
411
|
+
apps/verifier/src/inject/origin-bridges.test.ts
|
|
412
|
+
apps/verifier/src/inject/origin-bridges.ts
|
|
413
|
+
apps/verifier/src/inject/sdk-bundle.test.ts
|
|
414
|
+
apps/verifier/src/inject/sdk-bundle.ts
|
|
415
|
+
apps/verifier/src/memory/knowledge-store.test.ts
|
|
416
|
+
apps/verifier/src/memory/knowledge-store.ts
|
|
417
|
+
apps/verifier/src/model/app-model-starting-route.test.ts
|
|
418
|
+
apps/verifier/src/model/app-model.test.ts
|
|
419
|
+
apps/verifier/src/model/app-model.ts
|
|
420
|
+
apps/verifier/src/oracles/crawl-artifact.test.ts
|
|
421
|
+
apps/verifier/src/oracles/crawl-artifact.ts
|
|
422
|
+
apps/verifier/src/oracles/finding.ts
|
|
423
|
+
apps/verifier/src/oracles/history.test.ts
|
|
424
|
+
apps/verifier/src/oracles/history.ts
|
|
425
|
+
apps/verifier/src/oracles/index.ts
|
|
426
|
+
apps/verifier/src/oracles/metamorphic.test.ts
|
|
427
|
+
apps/verifier/src/oracles/metamorphic.ts
|
|
428
|
+
apps/verifier/src/oracles/state-write-drift.test.ts
|
|
429
|
+
apps/verifier/src/oracles/state-write-drift.ts
|
|
430
|
+
apps/verifier/src/parallel/fanout.test.ts
|
|
431
|
+
apps/verifier/src/parallel/fanout.ts
|
|
432
|
+
apps/verifier/src/path-segment.test.ts
|
|
433
|
+
apps/verifier/src/path-segment.ts
|
|
434
|
+
apps/verifier/src/precision.test.ts
|
|
435
|
+
apps/verifier/src/precision.ts
|
|
436
|
+
apps/verifier/src/preview/readiness-run.test.ts
|
|
437
|
+
apps/verifier/src/preview/readiness.test.ts
|
|
438
|
+
apps/verifier/src/preview/readiness.ts
|
|
439
|
+
apps/verifier/src/promote.test.ts
|
|
440
|
+
apps/verifier/src/promote.ts
|
|
441
|
+
apps/verifier/src/regression.test.ts
|
|
442
|
+
apps/verifier/src/regression.ts
|
|
443
|
+
apps/verifier/src/report-gaps.test.ts
|
|
444
|
+
apps/verifier/src/report-routes.test.ts
|
|
445
|
+
apps/verifier/src/report.test.ts
|
|
446
|
+
apps/verifier/src/report.ts
|
|
447
|
+
apps/verifier/src/reticle-toolset.test.ts
|
|
448
|
+
apps/verifier/src/reticle-toolset.ts
|
|
449
|
+
apps/verifier/src/runner.test.ts
|
|
450
|
+
apps/verifier/src/runner.ts
|
|
451
|
+
apps/verifier/src/serve.ts
|
|
452
|
+
apps/verifier/src/store-fs.test.ts
|
|
453
|
+
apps/verifier/src/store-fs.ts
|
|
454
|
+
apps/verifier/src/suite/derive-expect.test.ts
|
|
455
|
+
apps/verifier/src/suite/derive-expect.ts
|
|
456
|
+
apps/verifier/src/suite/domains.test.ts
|
|
457
|
+
apps/verifier/src/suite/domains.ts
|
|
458
|
+
apps/verifier/src/suite/flow-health.test.ts
|
|
459
|
+
apps/verifier/src/suite/flow-health.ts
|
|
460
|
+
apps/verifier/src/suite/flow-identity.test.ts
|
|
461
|
+
apps/verifier/src/suite/flow-identity.ts
|
|
462
|
+
apps/verifier/src/suite/replay-live.test.ts
|
|
463
|
+
apps/verifier/src/suite/replay.test.ts
|
|
464
|
+
apps/verifier/src/suite/replay.ts
|
|
465
|
+
apps/verifier/src/suite/route-set.test.ts
|
|
466
|
+
apps/verifier/src/suite/route-set.ts
|
|
467
|
+
apps/verifier/src/suite/route-tagging.test.ts
|
|
468
|
+
apps/verifier/src/suite/segment.test.ts
|
|
469
|
+
apps/verifier/src/suite/segment.ts
|
|
470
|
+
apps/verifier/src/suite/suite-store.test.ts
|
|
471
|
+
apps/verifier/src/suite/suite-store.ts
|
|
472
|
+
apps/verifier/src/suite/unproven.test.ts
|
|
473
|
+
apps/verifier/src/suite/unproven.ts
|
|
474
|
+
apps/verifier/src/suite/write-set.ts
|
|
475
|
+
apps/verifier/src/tool-contract.test.ts
|
|
476
|
+
apps/verifier/src/transport.test.ts
|
|
477
|
+
apps/verifier/src/transport.ts
|
|
478
|
+
apps/verifier/src/with-timeout.test.ts
|
|
479
|
+
apps/verifier/src/with-timeout.ts
|
|
480
|
+
apps/verifier/tsconfig.json
|
|
481
|
+
deploy/README.md
|
|
482
|
+
deploy/api.Dockerfile
|
|
483
|
+
deploy/deploy.sh
|
|
484
|
+
deploy/secrets.env.example
|
|
485
|
+
deploy/verifier.Dockerfile
|
|
486
|
+
docs/fixtures.md
|
|
487
|
+
docs/gates.md
|
|
488
|
+
docs/persona.md
|
|
489
|
+
docs/service-api.md
|
|
490
|
+
eslint.config.mjs
|
|
491
|
+
eval/fixtures/index.html
|
|
492
|
+
eval/fixtures/package.json
|
|
493
|
+
eval/fixtures/src/main.ts
|
|
494
|
+
eval/fixtures/src/manifest.ts
|
|
495
|
+
eval/fixtures/src/scenario.ts
|
|
496
|
+
eval/fixtures/src/scenarios/canvas.ts
|
|
497
|
+
eval/fixtures/src/scenarios/checkout.ts
|
|
498
|
+
eval/fixtures/src/scenarios/dashboard.ts
|
|
499
|
+
eval/fixtures/src/scenarios/game.ts
|
|
500
|
+
eval/fixtures/src/scenarios/index.ts
|
|
501
|
+
eval/fixtures/src/scenarios/landing.ts
|
|
502
|
+
eval/fixtures/src/scenarios/realtime.ts
|
|
503
|
+
eval/fixtures/src/scenarios/trading.ts
|
|
504
|
+
eval/fixtures/src/scenarios/video.ts
|
|
505
|
+
eval/fixtures/src/scenarios/workspace.ts
|
|
506
|
+
eval/fixtures/src/styles.css
|
|
507
|
+
eval/fixtures/tsconfig.json
|
|
508
|
+
eval/fixtures/vite.config.ts
|
|
509
|
+
package.json
|
|
510
|
+
pnpm-lock.yaml
|
|
511
|
+
pnpm-workspace.yaml
|
|
512
|
+
pre-commit.sh
|
|
513
|
+
scripts/capacity.mjs
|
|
514
|
+
scripts/eval-env.sh
|
|
515
|
+
scripts/token-cost.mjs
|
|
516
|
+
tsconfig.base.json
|
|
517
|
+
tsconfig.json
|
|
518
|
+
turbo.json confirmed a tracked flow holding a plaintext password.
|
|
519
|
+
*
|
|
520
|
+
* The decision keys off the ANCHOR, not the value. The anchor names the field — ,
|
|
521
|
+
* — so a credential is recognised by WHERE it was typed rather than by guessing whether
|
|
522
|
+
* the characters look secret, which is the guess that both over-redacts a search box and misses a
|
|
523
|
+
* password that happens to be a dictionary word.
|
|
524
|
+
*
|
|
525
|
+
* is the same rule the network channel already redacts by. One rule, so a
|
|
526
|
+
* field considered sensitive on the wire cannot be considered safe on disk.
|
|
527
|
+
*/
|
|
528
|
+
function redactSecretFill(anchor, args) {
|
|
529
|
+
if (typeof args['value'] !== 'string')
|
|
530
|
+
return args;
|
|
531
|
+
const field = anchorFieldName(anchor);
|
|
532
|
+
if (field === undefined || !defaultIsSensitiveKey(field))
|
|
533
|
+
return args;
|
|
534
|
+
return { ...args, value: REDACTED_FILL };
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* What the anchor CALLS the field it points at.
|
|
538
|
+
*
|
|
539
|
+
* Every anchor kind names its target differently and all of them can name a password: a testid
|
|
540
|
+
* (auth-password), an accessible name (role=textbox, name="Password"), a signal. Checking only the
|
|
541
|
+
* testid variant would redact the app that uses test ids and quietly leak the one that does not —
|
|
542
|
+
* and an app without test ids is exactly the app whose flows were recorded by role.
|
|
543
|
+
*/
|
|
544
|
+
function anchorFieldName(anchor) {
|
|
545
|
+
if (AnchorKind.TESTID === anchor.kind)
|
|
546
|
+
return anchor.value;
|
|
547
|
+
if (AnchorKind.ROLE === anchor.kind)
|
|
548
|
+
return anchor.name;
|
|
549
|
+
if (AnchorKind.SIGNAL === anchor.kind)
|
|
550
|
+
return anchor.name;
|
|
551
|
+
return undefined;
|
|
552
|
+
}
|
|
95
553
|
function buildStep(tool, anchor, action, args, degraded) {
|
|
96
|
-
const step = { tool, anchor, args };
|
|
554
|
+
const step = { tool, anchor, args: redactSecretFill(anchor, args) };
|
|
97
555
|
if (action !== undefined)
|
|
98
556
|
step.action = action;
|
|
99
557
|
if (degraded)
|
|
@@ -168,6 +626,34 @@ export class FlowStore {
|
|
|
168
626
|
#serialize(flow) {
|
|
169
627
|
return `${JSON.stringify(flow, null, JSON_INDENT)}\n`;
|
|
170
628
|
}
|
|
629
|
+
/**
|
|
630
|
+
* Register the flow's business goal in the intent ledger and stamp the row's id onto the flow.
|
|
631
|
+
*
|
|
632
|
+
* Both save paths route through here — the compiled-recording one and the in-page recorder one —
|
|
633
|
+
* because a flow's goal must land in the ledger whichever way the flow arrived. A flow with no
|
|
634
|
+
* goal is returned untouched and nothing is written, so an older flow keeps its exact bytes.
|
|
635
|
+
*/
|
|
636
|
+
#linkIntent(flow) {
|
|
637
|
+
return linkFlowIntent(new IntentStore(this.#fs, this.#root, this.#clock), flow);
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* What a caller is told about a flow that just landed on disk.
|
|
641
|
+
*
|
|
642
|
+
* Both save paths build it here rather than each assembling their own object, because the two used
|
|
643
|
+
* to be duplicates and the intent nudge is exactly the kind of field that gets added to one of a
|
|
644
|
+
* pair. A flow saved by the recorder and a flow saved from a compiled recording are the same
|
|
645
|
+
* regression test, and must not report differently for having arrived by a different door.
|
|
646
|
+
*/
|
|
647
|
+
#summary(flow) {
|
|
648
|
+
const gap = flowIntentGap(flow);
|
|
649
|
+
return {
|
|
650
|
+
name: flow.name,
|
|
651
|
+
stepCount: flow.steps.length,
|
|
652
|
+
degraded: flow.steps.filter((s) => true === s.degraded).length,
|
|
653
|
+
empty: 0 === flow.steps.length,
|
|
654
|
+
...(gap === undefined ? {} : { intentGap: gap }),
|
|
655
|
+
};
|
|
656
|
+
}
|
|
171
657
|
/**
|
|
172
658
|
* Convert a CompiledProgram (testid-normalized) into an anchored, on-disk flow + write it.
|
|
173
659
|
* Optionally fold structured annotations (per-step expect, dynamic[], success) onto
|
|
@@ -185,20 +671,21 @@ export class FlowStore {
|
|
|
185
671
|
...(pid === undefined ? {} : { projectId: pid }),
|
|
186
672
|
createdAt: this.#clock.now(),
|
|
187
673
|
steps,
|
|
674
|
+
/*
|
|
675
|
+
* The route the journey started on, when the recording captured one.
|
|
676
|
+
*
|
|
677
|
+
* The in-page recorder has always written this; the agent's recording had nowhere to put it,
|
|
678
|
+
* so a flow an agent recorded replayed from wherever the tab happened to be. A first step
|
|
679
|
+
* whose whole consequence is "this navigation fetches" fetches nothing when replay already
|
|
680
|
+
* sits on the destination, and the flow then drifts for a reason that has nothing to do with
|
|
681
|
+
* the app. Observed doing exactly that.
|
|
682
|
+
*/
|
|
683
|
+
...(program.startPath === undefined ? {} : { startPath: program.startPath }),
|
|
188
684
|
};
|
|
189
|
-
const flow = withAnnotations(base, annotations);
|
|
685
|
+
const flow = await this.#linkIntent(withAnnotations(base, annotations));
|
|
190
686
|
await this.#fs.mkdir(flowDir(this.#root, pid));
|
|
191
687
|
await this.#fs.writeFile(flowPath(this.#root, program.name, pid), this.#serialize(flow));
|
|
192
|
-
|
|
193
|
-
return {
|
|
194
|
-
ok: true,
|
|
195
|
-
value: {
|
|
196
|
-
name: program.name,
|
|
197
|
-
stepCount: flow.steps.length,
|
|
198
|
-
degraded,
|
|
199
|
-
empty: 0 === flow.steps.length,
|
|
200
|
-
},
|
|
201
|
-
};
|
|
688
|
+
return { ok: true, value: this.#summary(flow) };
|
|
202
689
|
}
|
|
203
690
|
/**
|
|
204
691
|
* Persist an already-anchored FlowFile captured in-page (no recompilation). The
|
|
@@ -215,19 +702,10 @@ export class FlowStore {
|
|
|
215
702
|
const parsed = FlowFileSchema.safeParse(stamped);
|
|
216
703
|
if (!parsed.success)
|
|
217
704
|
return { ok: false, code: FlowErrorCode.PARSE_FAILED };
|
|
218
|
-
const valid = parsed.data;
|
|
705
|
+
const valid = await this.#linkIntent(parsed.data);
|
|
219
706
|
await this.#fs.mkdir(flowDir(this.#root, pid));
|
|
220
707
|
await this.#fs.writeFile(flowPath(this.#root, asFlowName(valid.name), pid), this.#serialize(valid));
|
|
221
|
-
|
|
222
|
-
return {
|
|
223
|
-
ok: true,
|
|
224
|
-
value: {
|
|
225
|
-
name: valid.name,
|
|
226
|
-
stepCount: valid.steps.length,
|
|
227
|
-
degraded,
|
|
228
|
-
empty: 0 === valid.steps.length,
|
|
229
|
-
},
|
|
230
|
-
};
|
|
708
|
+
return { ok: true, value: this.#summary(valid) };
|
|
231
709
|
}
|
|
232
710
|
/**
|
|
233
711
|
* Apply confident testid rebinds to an on-disk flow (the reticle_flow_heal
|
package/dist/flows/heal-run.js
CHANGED
|
@@ -12,6 +12,7 @@ import { replayFlow } from './flow-replay.js';
|
|
|
12
12
|
import { applyHealChanges, collectProposals } from './heal.js';
|
|
13
13
|
import { assertSuccess, dynamicTestids, successLabel } from './flow-success.js';
|
|
14
14
|
import { flowErrorMessage, sessionProjectId } from './flow-replay-run.js';
|
|
15
|
+
import { flowsForSession } from './flow-store-for-session.js';
|
|
15
16
|
const HEAL_MESSAGES = {
|
|
16
17
|
NOTHING: 'nothing to heal — every anchor resolved on replay',
|
|
17
18
|
HEALED: "rewrote drifted testid anchors to their nearest surviving match and re-verified the flow's success consequence still fires",
|
|
@@ -27,7 +28,7 @@ export async function healFlow(deps, args) {
|
|
|
27
28
|
const name = asString(args['flowName']) ?? '';
|
|
28
29
|
const apply = true === args['apply'];
|
|
29
30
|
const projectId = sessionProjectId(deps, asString(args['sessionId']));
|
|
30
|
-
const loaded = await deps.flows.load(name, projectId);
|
|
31
|
+
const loaded = await flowsForSession(deps, projectId).flows.load(name, projectId);
|
|
31
32
|
if (!loaded.ok) {
|
|
32
33
|
return {
|
|
33
34
|
name,
|
|
@@ -113,7 +114,9 @@ export async function healFlow(deps, args) {
|
|
|
113
114
|
};
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
|
-
|
|
117
|
+
// Healing WRITES, so it must land where the load came from — a heal that read the app's flow and
|
|
118
|
+
// wrote the daemon's copy would silently fork the two.
|
|
119
|
+
const written = await flowsForSession(deps, projectId).flows.heal(name, proposals.map(toChange), projectId);
|
|
117
120
|
if (!written.ok) {
|
|
118
121
|
return {
|
|
119
122
|
name,
|
|
@@ -19,20 +19,25 @@ import type { FlowExpect } from '@reticlehq/core';
|
|
|
19
19
|
import type { Predicate } from '../events/predicate.js';
|
|
20
20
|
export declare function predicateToExpect(predicate: Predicate): FlowExpect | undefined;
|
|
21
21
|
/**
|
|
22
|
-
* The subset a REPLAY actually enforces
|
|
22
|
+
* The subset a REPLAY actually enforces.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* would make it report `grade: "asserted"` while nothing checks it.
|
|
24
|
+
* The rule has never changed: never write an assertion into a flow file that nothing evaluates. A
|
|
25
|
+
* flow reporting `grade: "asserted"` while its assertion is read by no one is a false green, in the
|
|
26
|
+
* feature whose entire purpose is preventing them.
|
|
28
27
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
* What changed is the SET. This kept only `element.testid` and `state`, because for a long time
|
|
29
|
+
* those were the only kinds replay checked — and the note here said lifting it "requires replay to
|
|
30
|
+
* evaluate them per step". Replay now does exactly that: `assertStepExpect` compiles every
|
|
31
|
+
* remaining kind through `successToPredicate` and waits on it. The condition was met and the filter
|
|
32
|
+
* was not updated, so the two drifted.
|
|
32
33
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
34
|
+
* That drift had a cost, and it fell on the agent. `reticle_act_and_wait { until }` IS the agent
|
|
35
|
+
* saying what success means, and `net` is overwhelmingly what it says. Every one of those was
|
|
36
|
+
* discarded at capture, so an agent-recorded flow reached disk assertion-free BY CONSTRUCTION and
|
|
37
|
+
* `reticle_verify` then correctly called it `unverifiable` — the record → save → verify path
|
|
38
|
+
* completing all the way to a run that could never be a pass. Found by driving it.
|
|
39
|
+
*
|
|
40
|
+
* The list below is exactly what `successToPredicate` reads, plus the testid the step runner
|
|
41
|
+
* asserts directly against the DOM. Anything it cannot compile is still dropped.
|
|
37
42
|
*/
|
|
38
43
|
export declare function enforcedOnReplay(expect: FlowExpect | undefined): FlowExpect | undefined;
|