@reticlehq/server 2.14.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +54 -136
- package/bin/reticle.js +1 -1
- package/dist/command/cli/adhoc-verdict.d.ts +64 -0
- package/dist/command/cli/adhoc-verdict.js +144 -0
- package/dist/command/cli/answers/status-next-action.d.ts +61 -0
- package/dist/command/cli/answers/status-next-action.js +84 -0
- package/dist/command/cli/auth/cloud-keystore.js +97 -0
- package/dist/command/cli/auth/device-flow.d.ts +76 -0
- package/dist/command/cli/auth/device-flow.js +56 -0
- package/dist/command/cli/cli-doctor.js +215 -0
- package/dist/command/cli/cli-flow-commands.d.ts +47 -0
- package/dist/command/cli/cli-flow-commands.js +255 -0
- package/dist/command/cli/cli-kill.d.ts +59 -0
- package/dist/command/cli/cli-kill.js +162 -0
- package/dist/command/cli/cli-parse-grammar.d.ts +29 -0
- package/dist/command/cli/cli-parse-grammar.js +39 -0
- package/dist/command/cli/cli-parse-verify.d.ts +22 -0
- package/dist/command/cli/cli-parse-verify.js +143 -0
- package/dist/command/cli/cli-parse.d.ts +193 -0
- package/dist/command/cli/cli-parse.js +833 -0
- package/dist/command/cli/cli-update-commands.js +112 -0
- package/dist/command/cli/cli-verify.d.ts +124 -0
- package/dist/command/cli/cli-verify.js +426 -0
- package/dist/command/cli/cloud-cli.js +694 -0
- package/dist/command/cli/cloud-kit.d.ts +37 -0
- package/dist/command/cli/cloud-kit.js +117 -0
- package/dist/command/cli/cloud-login.js +183 -0
- package/dist/command/cli/config/config-discovery.d.ts +48 -0
- package/dist/command/cli/config/config-discovery.js +183 -0
- package/dist/command/cli/daemon-start-options.d.ts +33 -0
- package/dist/command/cli/demo/demo-page.d.ts +78 -0
- package/dist/command/cli/demo/demo-page.js +238 -0
- package/dist/command/cli/demo/demo-run.d.ts +38 -0
- package/dist/command/cli/demo/demo-run.js +138 -0
- package/dist/command/cli/doctor/doctor-daemon-line.js +47 -0
- package/dist/command/cli/doctor/doctor-rows.d.ts +75 -0
- package/dist/command/cli/doctor/doctor-rows.js +77 -0
- package/dist/command/cli/doctor/doctor-sessions-line.js +69 -0
- package/dist/command/cli/drive/drive-attach.d.ts +113 -0
- package/dist/command/cli/drive/drive-attach.js +221 -0
- package/dist/command/cli/drive/drive-command.js +107 -0
- package/dist/command/cli/launch/cli-launch.d.ts +100 -0
- package/dist/command/cli/launch/cli-launch.js +216 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.d.ts +33 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +198 -0
- package/dist/command/cli/mcp-command.js +176 -0
- package/dist/command/cli/ports/port-holder.js +123 -0
- package/dist/command/cli/ports/resolve/cli-port.d.ts +71 -0
- package/dist/command/cli/ports/resolve/cli-port.js +140 -0
- package/dist/command/cli/setup-mcp-cli.d.ts +29 -0
- package/dist/command/cli/setup-mcp-cli.js +107 -0
- package/dist/command/cli/status/status-lines.d.ts +28 -0
- package/dist/command/cli/status/status-lines.js +117 -0
- package/dist/command/cli/status-fields.d.ts +28 -0
- package/dist/command/cli/status-fields.js +29 -0
- package/dist/command/cli/tutorial.d.ts +116 -0
- package/dist/command/cli/tutorial.js +189 -0
- package/dist/command/cli-onboarding.d.ts +21 -0
- package/dist/command/cli-onboarding.js +27 -0
- package/dist/command/cli.d.ts +6 -0
- package/dist/command/cli.js +710 -0
- package/dist/command/daemon/binding/daemon-status-probe.d.ts +2 -0
- package/dist/command/daemon/binding/daemon-status-probe.js +48 -0
- package/dist/command/daemon/binding/loopback-reach.d.ts +42 -0
- package/dist/command/daemon/binding/loopback-reach.js +63 -0
- package/dist/command/daemon/daemon-resilience.d.ts +86 -0
- package/dist/command/daemon/daemon-resilience.js +339 -0
- package/dist/command/daemon/daemon-resolve.d.ts +113 -0
- package/dist/command/daemon/daemon-resolve.js +187 -0
- package/dist/command/daemon/daemon.d.ts +86 -0
- package/dist/command/daemon/daemon.js +333 -0
- package/dist/command/daemon/idle-shutdown.d.ts +54 -0
- package/dist/command/daemon/idle-shutdown.js +98 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.d.ts +60 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.js +61 -0
- package/dist/command/daemon/lifetime/heartbeat.d.ts +119 -0
- package/dist/command/daemon/lifetime/heartbeat.js +151 -0
- package/dist/command/daemon/lifetime/idle-grace.d.ts +32 -0
- package/dist/command/daemon/lifetime/idle-grace.js +41 -0
- package/dist/command/daemon/lifetime/log-cap.d.ts +68 -0
- package/dist/command/daemon/lifetime/log-cap.js +115 -0
- package/dist/command/daemon/state-dir.js +59 -0
- package/dist/command/daemon/wake-decision.d.ts +32 -0
- package/dist/command/daemon/wake-decision.js +38 -0
- package/dist/command/dev/stale-issue-guard.d.ts +35 -0
- package/dist/command/dev/stale-issue-guard.js +69 -0
- package/dist/command/setup/agent-configs.d.ts +111 -0
- package/dist/command/setup/agent-configs.js +365 -0
- package/dist/command/setup/agent-notice-memory.d.ts +16 -0
- package/dist/command/setup/agent-notice-memory.js +65 -0
- package/dist/command/setup/agent-writer.d.ts +52 -0
- package/dist/command/setup/agent-writer.js +116 -0
- package/dist/command/setup/auto-approve.js +153 -0
- package/dist/command/setup/bringup/bridge-port.d.ts +15 -0
- package/dist/command/setup/bringup/bridge-port.js +24 -0
- package/dist/command/setup/bringup/dev-server-wait.d.ts +69 -0
- package/dist/command/setup/bringup/dev-server-wait.js +83 -0
- package/dist/command/setup/bringup/ensure-daemon.js +58 -0
- package/dist/command/setup/init/init-host.js +37 -0
- package/dist/command/setup/init/init-runtime.d.ts +39 -0
- package/dist/command/setup/init/init-runtime.js +168 -0
- package/dist/command/setup/node-effects.d.ts +63 -0
- package/dist/command/setup/node-effects.js +225 -0
- package/dist/command/setup/probe/page-probe.d.ts +71 -0
- package/dist/command/setup/probe/page-probe.js +89 -0
- package/dist/command/setup/remaining-steps.js +53 -0
- package/dist/command/setup/run-setup.d.ts +123 -0
- package/dist/command/setup/run-setup.js +316 -0
- package/dist/command/setup/setup-command.d.ts +48 -0
- package/dist/command/setup/setup-command.js +224 -0
- package/dist/command/setup/setup-install.d.ts +18 -0
- package/dist/command/setup/setup-install.js +40 -0
- package/dist/command/setup/setup-mcp.d.ts +57 -0
- package/dist/command/setup/setup-mcp.js +92 -0
- package/dist/command/setup/setup-options.d.ts +66 -0
- package/dist/command/setup/setup-options.js +63 -0
- package/dist/command/setup/terminal/confirm.js +206 -0
- package/dist/command/setup/terminal/crash.d.ts +55 -0
- package/dist/command/setup/terminal/crash.js +74 -0
- package/dist/command/update/nudge-credit.js +53 -0
- package/dist/command/update/sdk-sync.d.ts +20 -0
- package/dist/command/update/sdk-sync.js +22 -0
- package/dist/command/update/update-checker.js +122 -0
- package/dist/command/update/update-nudge.d.ts +90 -0
- package/dist/command/update/update-nudge.js +211 -0
- package/dist/command/update/updater.d.ts +81 -0
- package/dist/command/update/updater.js +223 -0
- package/dist/command/version/identity/server-version.js +50 -0
- package/dist/command/version/peer-announce.js +32 -0
- package/dist/command/version/sdk-fix.js +127 -0
- package/dist/command/version/version-nudge.js +61 -0
- package/dist/command/version/version-skew.d.ts +113 -0
- package/dist/command/version/version-skew.js +192 -0
- package/dist/features/crawl/crawl-tools.d.ts +7 -0
- package/dist/features/crawl/crawl-tools.js +89 -0
- package/dist/features/crawl/crawl.d.ts +98 -0
- package/dist/features/crawl/crawl.js +444 -0
- package/dist/features/ee/audit-log.js +11 -0
- package/dist/features/harness/drive-report.d.ts +73 -0
- package/dist/features/harness/drive-report.js +196 -0
- package/dist/features/harness/driver.d.ts +50 -0
- package/dist/features/harness/driver.js +239 -0
- package/dist/features/harness/drivers.d.ts +19 -0
- package/dist/features/harness/drivers.js +19 -0
- package/dist/features/harness/fill-values.d.ts +67 -0
- package/dist/features/harness/fill-values.js +153 -0
- package/dist/features/harness/harness.d.ts +159 -0
- package/dist/features/harness/harness.js +203 -0
- package/dist/features/harness/jev-driver.d.ts +188 -0
- package/dist/features/harness/jev-driver.js +664 -0
- package/dist/features/harness/openai-driver.d.ts +46 -0
- package/dist/features/harness/openai-driver.js +197 -0
- package/dist/features/harness/platform-config.d.ts +52 -0
- package/dist/features/harness/platform-config.js +89 -0
- package/dist/features/harness/with-timeout.d.ts +18 -0
- package/dist/features/harness/with-timeout.js +34 -0
- package/dist/features/license/license-env.d.ts +24 -0
- package/dist/features/license/license-env.js +140 -0
- package/dist/features/license/license.d.ts +161 -0
- package/dist/features/license/license.js +287 -0
- package/dist/features/visual/visual-store.d.ts +22 -0
- package/dist/features/visual/visual-store.js +66 -0
- package/dist/features/visual/visual-tools.d.ts +26 -0
- package/dist/features/visual/visual-tools.js +352 -0
- package/dist/hooks/hook-bus.d.ts +53 -0
- package/dist/hooks/hook-bus.js +106 -0
- package/dist/hooks/hook-commands.d.ts +59 -0
- package/dist/hooks/hook-commands.js +184 -0
- package/dist/hooks/hook-emit.d.ts +44 -0
- package/dist/hooks/hook-emit.js +85 -0
- package/dist/import-graph.d.ts +48 -0
- package/dist/import-graph.js +106 -0
- package/dist/index.d.ts +91 -125
- package/dist/index.js +250 -160
- package/dist/judgement/capsule/capsule-store.d.ts +70 -0
- package/dist/judgement/capsule/capsule-store.js +113 -0
- package/dist/judgement/capsule/capsule.d.ts +42 -0
- package/dist/judgement/capsule/capsule.js +73 -0
- package/dist/judgement/capsule/causal-summary.d.ts +119 -0
- package/dist/judgement/capsule/causal-summary.js +172 -0
- package/dist/judgement/capsule/divergence.d.ts +26 -0
- package/dist/judgement/domain/domain-model.js +126 -0
- package/dist/judgement/domain/domain-tools.d.ts +2 -0
- package/dist/judgement/domain/domain-tools.js +96 -0
- package/dist/judgement/domain/flow-risk.js +80 -0
- package/dist/judgement/oracles/propose-consequences.d.ts +22 -0
- package/dist/judgement/oracles/propose-consequences.js +106 -0
- package/dist/judgement/outcome/predicate-to-expect.d.ts +44 -0
- package/dist/judgement/outcome/predicate-to-expect.js +148 -0
- package/dist/judgement/runs/artifact/build-verification-run.d.ts +34 -0
- package/dist/judgement/runs/artifact/build-verification-run.js +83 -0
- package/dist/judgement/runs/artifact/render-report.js +84 -0
- package/dist/judgement/runs/artifact/replay-mapping.js +34 -0
- package/dist/judgement/runs/artifact/run-store.d.ts +54 -0
- package/dist/judgement/runs/artifact/run-store.js +150 -0
- package/dist/judgement/runs/artifact/to-artifact.d.ts +119 -0
- package/dist/judgement/runs/artifact/to-artifact.js +83 -0
- package/dist/judgement/runs/context-tools.d.ts +2 -0
- package/dist/judgement/runs/context-tools.js +70 -0
- package/dist/judgement/runs/default-run-id.d.ts +8 -0
- package/dist/judgement/runs/default-run-id.js +11 -0
- package/dist/judgement/runs/drive-run.d.ts +61 -0
- package/dist/judgement/runs/drive-run.js +130 -0
- package/dist/judgement/runs/late-answer.d.ts +55 -0
- package/dist/judgement/runs/late-answer.js +81 -0
- package/dist/judgement/runs/reticle-runner.d.ts +60 -0
- package/dist/judgement/runs/reticle-runner.js +95 -0
- package/dist/judgement/runs/run-tools.d.ts +17 -0
- package/dist/judgement/runs/run-tools.js +97 -0
- package/dist/judgement/runs/runner-port.d.ts +11 -0
- package/dist/judgement/runs/runner-port.js +18 -0
- package/dist/judgement/runs/verification-sync.d.ts +13 -0
- package/dist/judgement/runs/verification-sync.js +93 -0
- package/dist/language/flows/affected-tools.d.ts +18 -0
- package/dist/language/flows/affected-tools.js +83 -0
- package/dist/language/flows/annotate-tools.d.ts +15 -0
- package/dist/language/flows/annotate-tools.js +179 -0
- package/dist/language/flows/change/affected.d.ts +24 -0
- package/dist/language/flows/change/affected.js +35 -0
- package/dist/language/flows/change/flow-sources.d.ts +19 -0
- package/dist/language/flows/change/flow-sources.js +55 -0
- package/dist/language/flows/change/gate.js +33 -0
- package/dist/language/flows/decision.d.ts +45 -0
- package/dist/language/flows/decision.js +371 -0
- package/dist/language/flows/empty-flow.js +24 -0
- package/dist/language/flows/fields/flow-secret-field.d.ts +53 -0
- package/dist/language/flows/fields/flow-secret-field.js +75 -0
- package/dist/language/flows/fields/flow-upload-resolve.d.ts +23 -0
- package/dist/language/flows/fields/flow-upload-resolve.js +46 -0
- package/dist/language/flows/flow-anchor.d.ts +59 -0
- package/dist/language/flows/flow-anchor.js +240 -0
- package/dist/language/flows/flow-classify.d.ts +73 -0
- package/dist/language/flows/flow-classify.js +146 -0
- package/dist/language/flows/flow-expect-grammar.d.ts +33 -0
- package/dist/language/flows/flow-expect-grammar.js +155 -0
- package/dist/language/flows/flow-intent.d.ts +52 -0
- package/dist/language/flows/flow-intent.js +123 -0
- package/dist/language/flows/flow-learning.d.ts +52 -0
- package/dist/language/flows/flow-learning.js +76 -0
- package/dist/language/flows/flow-mutate-tools.d.ts +14 -0
- package/dist/language/flows/flow-mutate-tools.js +82 -0
- package/dist/language/flows/flow-replay-run.d.ts +91 -0
- package/dist/language/flows/flow-replay-run.js +748 -0
- package/dist/language/flows/flow-replay-types.d.ts +37 -0
- package/dist/language/flows/flow-replay-types.js +1 -0
- package/dist/language/flows/flow-replay.d.ts +91 -0
- package/dist/language/flows/flow-replay.js +487 -0
- package/dist/language/flows/flow-result.d.ts +35 -0
- package/dist/language/flows/flow-result.js +26 -0
- package/dist/language/flows/flow-step-runners.d.ts +54 -0
- package/dist/language/flows/flow-step-runners.js +369 -0
- package/dist/language/flows/flow-store-for-session.d.ts +32 -0
- package/dist/language/flows/flow-success.d.ts +32 -0
- package/dist/language/flows/flow-success.js +181 -0
- package/dist/language/flows/flow-tools.d.ts +15 -0
- package/dist/language/flows/flow-tools.js +842 -0
- package/dist/language/flows/flows.d.ts +114 -0
- package/dist/language/flows/flows.js +492 -0
- package/dist/language/flows/heal-precondition.d.ts +28 -0
- package/dist/language/flows/heal-precondition.js +38 -0
- package/dist/language/flows/heal-run.d.ts +17 -0
- package/dist/language/flows/heal-run.js +186 -0
- package/dist/language/flows/heal.js +97 -0
- package/dist/language/flows/mutation-run.d.ts +33 -0
- package/dist/language/flows/mutation-run.js +60 -0
- package/dist/language/flows/narrow-write.d.ts +32 -0
- package/dist/language/flows/narrow-write.js +26 -0
- package/dist/language/flows/recording/flake.d.ts +56 -0
- package/dist/language/flows/recording/recording-backtrack.js +73 -0
- package/dist/language/flows/recording/tape/recordings.d.ts +134 -0
- package/dist/language/flows/recording/tape/recordings.js +144 -0
- package/dist/language/flows/replay.d.ts +83 -0
- package/dist/language/flows/replay.js +397 -0
- package/dist/language/flows/role-anchor-nearest.js +45 -0
- package/dist/language/flows/stores/assertion-tiers-store.d.ts +26 -0
- package/dist/language/flows/stores/assertion-tiers-store.js +107 -0
- package/dist/language/flows/stores/flake-store.d.ts +18 -0
- package/dist/language/flows/stores/flake-store.js +58 -0
- package/dist/language/flows/suite/server-verify.d.ts +15 -0
- package/dist/language/flows/suite/server-verify.js +56 -0
- package/dist/language/flows/suite/suite-flakes.d.ts +34 -0
- package/dist/language/flows/suite/suite-flakes.js +32 -0
- package/dist/language/flows/suite-selection.d.ts +45 -0
- package/dist/language/flows/suite-selection.js +84 -0
- package/dist/language/flows/verify-change-tools.d.ts +2 -0
- package/dist/language/flows/verify-change-tools.js +244 -0
- package/dist/machine/clock.d.ts +24 -0
- package/dist/machine/clock.js +1 -0
- package/dist/machine/repo-root.d.ts +16 -0
- package/dist/machine/repo-root.js +20 -0
- package/dist/memory/cloud/account-state.d.ts +20 -0
- package/dist/memory/cloud/account-state.js +70 -0
- package/dist/memory/cloud/cloud-config.d.ts +79 -0
- package/dist/memory/cloud/cloud-config.js +156 -0
- package/dist/memory/cloud/cloud-sync.d.ts +195 -0
- package/dist/memory/cloud/cloud-sync.js +359 -0
- package/dist/memory/cloud/harness-config.d.ts +10 -0
- package/dist/memory/cloud/harness-config.js +58 -0
- package/dist/memory/cloud/harness-offer.d.ts +44 -0
- package/dist/memory/cloud/harness-offer.js +146 -0
- package/dist/memory/cloud/harness-switch.d.ts +11 -0
- package/dist/memory/cloud/harness-switch.js +53 -0
- package/dist/memory/cloud/sync-cycle.d.ts +121 -0
- package/dist/memory/cloud/sync-cycle.js +295 -0
- package/dist/memory/cloud/sync-daemon.d.ts +73 -0
- package/dist/memory/cloud/sync-daemon.js +297 -0
- package/dist/memory/cloud/sync-disk.js +193 -0
- package/dist/memory/impact/impact-recorder.d.ts +54 -0
- package/dist/memory/impact/impact-recorder.js +160 -0
- package/dist/memory/impact/impact-store.d.ts +52 -0
- package/dist/memory/impact/impact-store.js +274 -0
- package/dist/memory/intent/inline-intent.d.ts +60 -0
- package/dist/memory/intent/inline-intent.js +206 -0
- package/dist/memory/intent/intent-shard-store.d.ts +87 -0
- package/dist/memory/intent/intent-shard-store.js +215 -0
- package/dist/memory/intent/intent-shard.d.ts +389 -0
- package/dist/memory/intent/intent-shard.js +153 -0
- package/dist/memory/intent/intent-store.d.ts +47 -0
- package/dist/memory/intent/intent-store.js +133 -0
- package/dist/memory/intent/intent-subject.d.ts +46 -0
- package/dist/memory/intent/intent-subject.js +175 -0
- package/dist/memory/intent/intent-tools.d.ts +2 -0
- package/dist/memory/intent/intent-tools.js +157 -0
- package/dist/memory/intent/open-intents.d.ts +36 -0
- package/dist/memory/intent/open-intents.js +58 -0
- package/dist/memory/journal/ambient-store.d.ts +13 -0
- package/dist/memory/journal/ambient-store.js +52 -0
- package/dist/memory/journal/attach-journal.d.ts +37 -0
- package/dist/memory/journal/attach-journal.js +26 -0
- package/dist/memory/journal/drive-flow.d.ts +74 -0
- package/dist/memory/journal/drive-flow.js +157 -0
- package/dist/memory/journal/drive-run-flush.d.ts +42 -0
- package/dist/memory/journal/drive-run-flush.js +82 -0
- package/dist/memory/journal/envelope-store.d.ts +16 -0
- package/dist/memory/journal/envelope-store.js +61 -0
- package/dist/memory/journal/envelope.d.ts +230 -0
- package/dist/memory/journal/journal-query.d.ts +66 -0
- package/dist/memory/journal/journal-query.js +98 -0
- package/dist/memory/journal/journal-recorder.d.ts +109 -0
- package/dist/memory/journal/journal-recorder.js +153 -0
- package/dist/memory/journal/on-disk/ambient-file.d.ts +21 -0
- package/dist/memory/journal/on-disk/ambient-file.js +15 -0
- package/dist/memory/journal/on-disk/retention.d.ts +141 -0
- package/dist/memory/journal/on-disk/retention.js +291 -0
- package/dist/memory/journal/on-disk/workspace-gitignore.d.ts +21 -0
- package/dist/memory/journal/on-disk/workspace-gitignore.js +93 -0
- package/dist/memory/journal/self-observation.d.ts +3 -0
- package/dist/memory/journal/self-observation.js +67 -0
- package/dist/memory/journal/session-end.d.ts +112 -0
- package/dist/memory/journal/session-end.js +179 -0
- package/dist/memory/journal/session-journal.d.ts +134 -0
- package/dist/memory/journal/session-journal.js +614 -0
- package/dist/memory/project/artifact-root-resolver.d.ts +3 -0
- package/dist/memory/project/artifact-root-resolver.js +89 -0
- package/dist/memory/project/artifact-root.d.ts +109 -0
- package/dist/memory/project/artifact-root.js +157 -0
- package/dist/memory/project/dir/fill-value-store.d.ts +32 -0
- package/dist/memory/project/dir/fill-value-store.js +88 -0
- package/dist/memory/project/dir/reticle-dir.d.ts +139 -0
- package/dist/memory/project/dir/reticle-dir.js +229 -0
- package/dist/memory/project/fs/fs-port.d.ts +68 -0
- package/dist/memory/project/fs/fs-port.js +82 -0
- package/dist/memory/project/learned-routes.d.ts +38 -0
- package/dist/memory/project/learned-routes.js +79 -0
- package/dist/memory/project/memory-fs.d.ts +10 -0
- package/dist/memory/project/project-for-root.d.ts +30 -0
- package/dist/memory/project/project-for-root.js +43 -0
- package/dist/memory/project/project-store.d.ts +54 -0
- package/dist/memory/project/project-store.js +244 -0
- package/dist/memory/project/project-tools.d.ts +8 -0
- package/dist/memory/project/project-tools.js +160 -0
- package/dist/memory/project/reticle-deps.d.ts +15 -0
- package/dist/memory/project/reticle-deps.js +33 -0
- package/dist/memory/project/session-root.d.ts +52 -0
- package/dist/memory/project/session-root.js +100 -0
- package/dist/memory/recall/memory-tools.d.ts +2 -0
- package/dist/memory/recall/memory-tools.js +81 -0
- package/dist/memory/recall/prior/connection-memory.d.ts +65 -0
- package/dist/memory/recall/prior/connection-memory.js +114 -0
- package/dist/memory/recall/project-memory.d.ts +33 -0
- package/dist/portal/bridge/auth-failure-reason.d.ts +32 -0
- package/dist/portal/bridge/auth-failure-reason.js +68 -0
- package/dist/portal/bridge/bridge-security.d.ts +30 -0
- package/dist/portal/bridge/bridge-security.js +53 -0
- package/dist/portal/bridge/bridge.d.ts +109 -0
- package/dist/portal/bridge/bridge.js +808 -0
- package/dist/portal/input/drive-url-stamp.d.ts +14 -0
- package/dist/portal/input/drive-url-stamp.js +33 -0
- package/dist/portal/input/network-detail.d.ts +97 -0
- package/dist/portal/input/network-detail.js +138 -0
- package/dist/portal/input/network-mock-tools.d.ts +21 -0
- package/dist/portal/input/network-mock-tools.js +124 -0
- package/dist/portal/input/network-mock.js +83 -0
- package/dist/portal/input/network-mutation.d.ts +47 -0
- package/dist/portal/input/network-mutation.js +53 -0
- package/dist/portal/input/real-input.d.ts +261 -0
- package/dist/portal/input/real-input.js +488 -0
- package/dist/portal/input/scroll-find.js +111 -0
- package/dist/portal/input/scroll-tools.d.ts +2 -0
- package/dist/portal/input/scroll-tools.js +76 -0
- package/dist/portal/input/storage-fixture.d.ts +57 -0
- package/dist/portal/input/storage-fixture.js +92 -0
- package/dist/portal/input/viewport-tools.d.ts +2 -0
- package/dist/portal/input/viewport-tools.js +72 -0
- package/dist/portal/pool/browser-pool.d.ts +174 -0
- package/dist/portal/pool/browser-pool.js +559 -0
- package/dist/portal/pool/lease-reaper.js +40 -0
- package/dist/portal/pool/playwright-launcher.js +150 -0
- package/dist/portal/pool/pool-contract.d.ts +116 -0
- package/dist/portal/pool/pool-contract.js +8 -0
- package/dist/portal/pool/storage-seed.d.ts +23 -0
- package/dist/portal/realm/conformance-client.d.ts +43 -0
- package/dist/portal/realm/conformance-client.js +227 -0
- package/dist/portal/realm/http-witness.d.ts +48 -0
- package/dist/portal/realm/http-witness.js +135 -0
- package/dist/portal/realm/web-realm.d.ts +225 -0
- package/dist/portal/realm/web-realm.js +661 -0
- package/dist/portal/session/daemon-answers.d.ts +20 -0
- package/dist/portal/session/daemon-answers.js +20 -0
- package/dist/portal/session/dev-server/dev-server-probe.js +147 -0
- package/dist/portal/session/facts/handshake-facts.d.ts +56 -0
- package/dist/portal/session/facts/handshake-facts.js +1 -0
- package/dist/portal/session/facts/observed-state.d.ts +60 -0
- package/dist/portal/session/facts/observed-state.js +121 -0
- package/dist/portal/session/facts/session-replaced.d.ts +43 -0
- package/dist/portal/session/facts/session-replaced.js +51 -0
- package/dist/portal/session/live-control-tools.d.ts +15 -0
- package/dist/portal/session/live-control-tools.js +242 -0
- package/dist/portal/session/no-session-diagnosis.d.ts +176 -0
- package/dist/portal/session/no-session-diagnosis.js +457 -0
- package/dist/portal/session/no-session-next-action.d.ts +76 -0
- package/dist/portal/session/no-session-next-action.js +211 -0
- package/dist/portal/session/no-session-watch.js +351 -0
- package/dist/portal/session/output-budget.d.ts +82 -0
- package/dist/portal/session/output-budget.js +108 -0
- package/dist/portal/session/page-commands/undeclared-command.d.ts +30 -0
- package/dist/portal/session/page-commands/undeclared-command.js +44 -0
- package/dist/portal/session/presence/session-recommendation.js +29 -0
- package/dist/portal/session/rebind.d.ts +18 -0
- package/dist/portal/session/rebind.js +38 -0
- package/dist/portal/session/session-health.d.ts +145 -0
- package/dist/portal/session/session-health.js +154 -0
- package/dist/portal/session/session-manager.d.ts +81 -0
- package/dist/portal/session/session-manager.js +504 -0
- package/dist/portal/session/session-reaper.d.ts +36 -0
- package/dist/portal/session/session-reaper.js +93 -0
- package/dist/portal/session/session-tools.d.ts +8 -0
- package/dist/portal/session/session-tools.js +42 -0
- package/dist/portal/session/session.d.ts +279 -0
- package/dist/portal/session/session.js +875 -0
- package/dist/portal/session/stall-clock.js +48 -0
- package/dist/portal/session/timing/command-timeout.d.ts +40 -0
- package/dist/portal/session/timing/command-timeout.js +42 -0
- package/dist/start-options.d.ts +51 -0
- package/dist/start-options.js +7 -0
- package/dist/status-payload.d.ts +16 -10
- package/dist/status-payload.js +5 -2
- package/dist/surface/http-server.d.ts +52 -0
- package/dist/surface/http-server.js +379 -0
- package/dist/surface/mcp/consumer-verdict-guard.d.ts +40 -0
- package/dist/surface/mcp/consumer-verdict-guard.js +57 -0
- package/dist/surface/mcp/faults/mcp-is-error.d.ts +13 -0
- package/dist/surface/mcp/faults/mcp-is-error.js +18 -0
- package/dist/surface/mcp/faults/mcp-outage.d.ts +33 -0
- package/dist/surface/mcp/faults/mcp-outage.js +71 -0
- package/dist/surface/mcp/mcp-proxy.d.ts +119 -0
- package/dist/surface/mcp/mcp-proxy.js +882 -0
- package/dist/surface/mcp/mcp.d.ts +89 -0
- package/dist/surface/mcp/mcp.js +676 -0
- package/dist/surface/mcp/proxy/mcp-post-transport.js +109 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.d.ts +22 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.js +71 -0
- package/dist/surface/mcp/proxy/proxy-handshake.js +192 -0
- package/dist/surface/mcp/proxy/proxy-lifecycle.d.ts +90 -0
- package/dist/surface/mcp/proxy/proxy-lifecycle.js +98 -0
- package/dist/surface/mcp/proxy/proxy-log.d.ts +57 -0
- package/dist/surface/mcp/proxy/proxy-log.js +117 -0
- package/dist/surface/mcp/server-instructions.d.ts +26 -0
- package/dist/surface/mcp/server-instructions.js +156 -0
- package/dist/surface/mcp/surface-vocabulary.d.ts +47 -0
- package/dist/surface/mcp/surface-vocabulary.js +56 -0
- package/dist/surface/mcp/tool-catalog-cache.d.ts +45 -0
- package/dist/surface/mcp/tool-catalog-cache.js +77 -0
- package/dist/surface/tools/act/act-danger.js +69 -0
- package/dist/surface/tools/act/act-helpers.d.ts +17 -0
- package/dist/surface/tools/act/act-helpers.js +40 -0
- package/dist/surface/tools/act/act-observation.d.ts +42 -0
- package/dist/surface/tools/act/act-observation.js +36 -0
- package/dist/surface/tools/act/act-preflight.d.ts +27 -0
- package/dist/surface/tools/act/act-preflight.js +168 -0
- package/dist/surface/tools/act/act-target.d.ts +10 -0
- package/dist/surface/tools/act/act-target.js +100 -0
- package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +68 -0
- package/dist/surface/tools/act/resolve-target.js +115 -0
- package/dist/surface/tools/act/sequence-grade.d.ts +79 -0
- package/dist/surface/tools/act/sequence-grade.js +104 -0
- package/dist/surface/tools/act-capsule.d.ts +33 -0
- package/dist/surface/tools/act-capsule.js +79 -0
- package/dist/surface/tools/act-merged.d.ts +20 -0
- package/dist/surface/tools/act-merged.js +53 -0
- package/dist/surface/tools/act-sequence-tool.js +330 -0
- package/dist/surface/tools/act-tools.d.ts +24 -0
- package/dist/surface/tools/act-tools.js +835 -0
- package/dist/surface/tools/args/numeric-bounds.d.ts +97 -0
- package/dist/surface/tools/args/numeric-bounds.js +133 -0
- package/dist/surface/tools/assert/assert-grade.d.ts +42 -0
- package/dist/surface/tools/assert/assert-grade.js +125 -0
- package/dist/surface/tools/assert/assert-source.d.ts +52 -0
- package/dist/surface/tools/assert/assert-source.js +74 -0
- package/dist/surface/tools/assert/assert-verdict.d.ts +48 -0
- package/dist/surface/tools/assert/assert-verdict.js +247 -0
- package/dist/surface/tools/browser-tools.d.ts +2 -0
- package/dist/surface/tools/browser-tools.js +115 -0
- package/dist/surface/tools/contract-tools.d.ts +2 -0
- package/dist/surface/tools/contract-tools.js +112 -0
- package/dist/surface/tools/coverage-tools.d.ts +18 -0
- package/dist/surface/tools/coverage-tools.js +178 -0
- package/dist/surface/tools/dynamic-tools.d.ts +17 -0
- package/dist/surface/tools/dynamic-tools.js +282 -0
- package/dist/surface/tools/error-recovery.d.ts +116 -0
- package/dist/surface/tools/error-recovery.js +527 -0
- package/dist/surface/tools/explore-tools.d.ts +14 -0
- package/dist/surface/tools/explore-tools.js +162 -0
- package/dist/surface/tools/feature-capture.d.ts +151 -0
- package/dist/surface/tools/feature-capture.js +235 -0
- package/dist/surface/tools/feedback-invite.d.ts +48 -0
- package/dist/surface/tools/feedback-invite.js +71 -0
- package/dist/surface/tools/feedback-tools.d.ts +35 -0
- package/dist/surface/tools/feedback-tools.js +280 -0
- package/dist/surface/tools/first-sentence.d.ts +24 -0
- package/dist/surface/tools/first-sentence.js +0 -0
- package/dist/surface/tools/gap-novelty.d.ts +39 -0
- package/dist/surface/tools/gap-novelty.js +69 -0
- package/dist/surface/tools/gaps/capability-absences.d.ts +39 -0
- package/dist/surface/tools/gaps/capability-absences.js +46 -0
- package/dist/surface/tools/harness-explore.d.ts +177 -0
- package/dist/surface/tools/harness-explore.js +453 -0
- package/dist/surface/tools/harness-plan.d.ts +76 -0
- package/dist/surface/tools/harness-plan.js +156 -0
- package/dist/surface/tools/harness-toolset.d.ts +35 -0
- package/dist/surface/tools/harness-toolset.js +144 -0
- package/dist/surface/tools/inspect-tool.d.ts +4 -0
- package/dist/surface/tools/inspect-tool.js +142 -0
- package/dist/surface/tools/invoke-tool.d.ts +10 -0
- package/dist/surface/tools/invoke-tool.js +668 -0
- package/dist/surface/tools/lease-hint.d.ts +50 -0
- package/dist/surface/tools/lease-hint.js +125 -0
- package/dist/surface/tools/lease-tools.d.ts +195 -0
- package/dist/surface/tools/lease-tools.js +797 -0
- package/dist/surface/tools/lineage-tools.d.ts +14 -0
- package/dist/surface/tools/lineage-tools.js +64 -0
- package/dist/surface/tools/live-call-text.d.ts +25 -0
- package/dist/surface/tools/live-call-text.js +191 -0
- package/dist/surface/tools/merge-tools.d.ts +68 -0
- package/dist/surface/tools/merge-tools.js +110 -0
- package/dist/surface/tools/merged-name-redirect.d.ts +36 -0
- package/dist/surface/tools/merged-name-redirect.js +107 -0
- package/dist/surface/tools/observe-tools.js +700 -0
- package/dist/surface/tools/read/query-windowed.d.ts +54 -0
- package/dist/surface/tools/read/query-windowed.js +75 -0
- package/dist/surface/tools/read/snapshot-delta.d.ts +92 -0
- package/dist/surface/tools/read/snapshot-delta.js +356 -0
- package/dist/surface/tools/read-tools.js +569 -0
- package/dist/surface/tools/real-input-attempt.d.ts +68 -0
- package/dist/surface/tools/real-input-attempt.js +360 -0
- package/dist/surface/tools/reconcile-tools.js +211 -0
- package/dist/surface/tools/tool-hit-rate.js +90 -0
- package/dist/surface/tools/tool-kit.d.ts +254 -0
- package/dist/surface/tools/tool-kit.js +123 -0
- package/dist/surface/tools/tool-surface.d.ts +195 -0
- package/dist/surface/tools/tool-surface.js +429 -0
- package/dist/surface/tools/tools-helpers.d.ts +40 -0
- package/dist/surface/tools/tools-helpers.js +76 -0
- package/dist/surface/tools/tools.d.ts +76 -0
- package/dist/surface/tools/tools.js +799 -0
- package/dist/surface/tools/unadvertised-help.js +60 -0
- package/dist/surface/tools/verify-next-baton.js +52 -0
- package/dist/telemetry/app-instrumented.d.ts +3 -5
- package/dist/telemetry/app-instrumented.js +17 -6
- package/dist/telemetry/argument-shape.js +4 -4
- package/dist/telemetry/bug-found.js +49 -27
- package/dist/telemetry/cli-telemetry.js +27 -10
- package/dist/telemetry/daemon-telemetry.d.ts +7 -13
- package/dist/telemetry/daemon-telemetry.js +15 -22
- package/dist/telemetry/error-fingerprint.js +26 -1
- package/dist/telemetry/feedback-cli.d.ts +1 -1
- package/dist/telemetry/feedback-cli.js +2 -2
- package/dist/telemetry/feedback-context.js +4 -4
- package/dist/telemetry/feedback.js +1 -1
- package/dist/telemetry/harness-drive.d.ts +6 -0
- package/dist/telemetry/harness-drive.js +39 -0
- package/dist/telemetry/install-source.js +1 -1
- package/dist/telemetry/install-trace.d.ts +8 -0
- package/dist/telemetry/install-trace.js +74 -0
- package/dist/telemetry/license-activation.js +1 -1
- package/dist/telemetry/mcp-connection.d.ts +14 -1
- package/dist/telemetry/mcp-connection.js +17 -2
- package/dist/telemetry/onboarding-firsts.d.ts +40 -0
- package/dist/telemetry/onboarding-firsts.js +109 -0
- package/dist/telemetry/onboarding-funnel.d.ts +26 -0
- package/dist/telemetry/onboarding-funnel.js +60 -0
- package/dist/telemetry/project-profile.js +1 -1
- package/dist/telemetry/run-telemetry.js +13 -0
- package/dist/telemetry/session-metrics.d.ts +6 -7
- package/dist/telemetry/session-metrics.js +14 -21
- package/dist/telemetry/telemetry.d.ts +8 -1
- package/dist/telemetry/telemetry.js +6 -5
- package/dist/telemetry/verification-of.d.ts +6 -8
- package/dist/telemetry/verification-of.js +38 -12
- package/dist/workspace-packages.d.ts +22 -0
- package/dist/workspace-packages.js +57 -0
- package/docs/README.md +29 -23
- package/docs/actions.mdx +4 -4
- package/docs/adapters.md +75 -0
- package/docs/agent-cheatsheet.md +37 -27
- package/docs/architecture.md +3 -2
- package/docs/autodrive.md +99 -0
- package/docs/benchmarks.md +1 -1
- package/docs/best-practices.mdx +3 -3
- package/docs/capabilities.mdx +4 -4
- package/docs/cli/cloud.mdx +4 -4
- package/docs/cli/doctor.mdx +1 -0
- package/docs/cli/feedback.mdx +1 -1
- package/docs/cli/init.mdx +3 -3
- package/docs/cli/mcp.mdx +1 -1
- package/docs/cli/status.mdx +35 -20
- package/docs/cli/watch.mdx +1 -1
- package/docs/cli.mdx +15 -25
- package/docs/desktop.mdx +1 -1
- package/docs/enterprise.md +3 -2
- package/docs/faq.mdx +4 -4
- package/docs/first-drive.md +5 -5
- package/docs/flows.md +5 -5
- package/docs/for-agents.md +2 -1
- package/docs/frameworks.mdx +1 -1
- package/docs/getting-started.md +30 -21
- package/docs/http-transport.md +1 -1
- package/docs/index.mdx +28 -10
- package/docs/install-agentic.mdx +12 -4
- package/docs/install-manual.mdx +23 -7
- package/docs/instrumentation.mdx +3 -3
- package/docs/local-registry.md +15 -4
- package/docs/packages/babel-plugin.mdx +1 -1
- package/docs/packages/browser.mdx +2 -2
- package/docs/packages/core.mdx +2 -2
- package/docs/packages/engine.mdx +40 -0
- package/docs/packages/open-verification.mdx +40 -0
- package/docs/packages/tauri.mdx +1 -1
- package/docs/packages.mdx +22 -2
- package/docs/platform-integration.md +3 -3
- package/docs/predicates.mdx +19 -3
- package/docs/protocol.mdx +60 -0
- package/docs/quickstart.mdx +48 -13
- package/docs/recipes.mdx +1 -1
- package/docs/required-checks.md +37 -0
- package/docs/skill-file.mdx +2 -2
- package/docs/skill-setup.md +104 -0
- package/docs/state-files.md +46 -0
- package/docs/state-management.mdx +1 -1
- package/docs/system-map.md +8 -6
- package/docs/telemetry.md +4 -3
- package/docs/testing.md +12 -3
- package/docs/token-efficiency.md +3 -3
- package/docs/tools/act-and-wait.mdx +173 -0
- package/docs/tools/act-sequence.mdx +160 -0
- package/docs/tools/act.mdx +95 -0
- package/docs/tools/assert.mdx +129 -0
- package/docs/tools/console.mdx +70 -0
- package/docs/tools/inspect.mdx +95 -0
- package/docs/tools/navigate.mdx +107 -0
- package/docs/tools/network.mdx +126 -0
- package/docs/tools/observe.mdx +145 -0
- package/docs/tools/overview.mdx +163 -0
- package/docs/tools/query.mdx +133 -0
- package/docs/tools/sessions.mdx +101 -0
- package/docs/tools/snapshot.mdx +136 -0
- package/docs/tools/state.mdx +111 -0
- package/docs/tools/wait-for.mdx +92 -0
- package/docs/troubleshooting.mdx +43 -9
- package/docs/usage.md +59 -59
- package/package.json +31 -13
- package/dist/bridge/auth-failure-reason.d.ts +0 -23
- package/dist/bridge/auth-failure-reason.js +0 -47
- package/dist/bridge/bridge-security.d.ts +0 -30
- package/dist/bridge/bridge-security.js +0 -53
- package/dist/bridge/bridge.d.ts +0 -95
- package/dist/bridge/bridge.js +0 -713
- package/dist/bridge/bridge.test-harness.d.ts +0 -65
- package/dist/bridge/bridge.test-harness.js +0 -230
- package/dist/capsule/capsule-store.d.ts +0 -71
- package/dist/capsule/capsule-store.js +0 -114
- package/dist/capsule/capsule.d.ts +0 -18
- package/dist/capsule/capsule.js +0 -35
- package/dist/capsule/causal-summary.d.ts +0 -119
- package/dist/capsule/causal-summary.js +0 -172
- package/dist/capsule/divergence.d.ts +0 -35
- package/dist/capsule/predicate-to-links.d.ts +0 -8
- package/dist/capsule/predicate-to-links.js +0 -33
- package/dist/cli/adhoc-verdict.d.ts +0 -58
- package/dist/cli/adhoc-verdict.js +0 -115
- package/dist/cli/cli-doctor.js +0 -195
- package/dist/cli/cli-flow-commands.d.ts +0 -46
- package/dist/cli/cli-flow-commands.js +0 -255
- package/dist/cli/cli-kill.d.ts +0 -59
- package/dist/cli/cli-kill.js +0 -162
- package/dist/cli/cli-launch.d.ts +0 -92
- package/dist/cli/cli-launch.js +0 -223
- package/dist/cli/cli-parse.d.ts +0 -171
- package/dist/cli/cli-parse.js +0 -874
- package/dist/cli/cli-port.d.ts +0 -70
- package/dist/cli/cli-port.js +0 -136
- package/dist/cli/cli-update-commands.js +0 -112
- package/dist/cli/cli-verify.d.ts +0 -86
- package/dist/cli/cli-verify.js +0 -340
- package/dist/cli/cloud-cli.js +0 -694
- package/dist/cli/cloud-keystore.js +0 -97
- package/dist/cli/cloud-kit.d.ts +0 -37
- package/dist/cli/cloud-kit.js +0 -121
- package/dist/cli/cloud-login.js +0 -183
- package/dist/cli/config-discovery.d.ts +0 -36
- package/dist/cli/config-discovery.js +0 -164
- package/dist/cli/daemon-start-options.d.ts +0 -33
- package/dist/cli/device-flow.d.ts +0 -76
- package/dist/cli/device-flow.js +0 -56
- package/dist/cli/doctor-daemon-line.js +0 -47
- package/dist/cli/doctor-rows.d.ts +0 -63
- package/dist/cli/doctor-rows.js +0 -65
- package/dist/cli/doctor-sessions-line.js +0 -69
- package/dist/cli/drive-attach.d.ts +0 -113
- package/dist/cli/drive-attach.js +0 -221
- package/dist/cli/drive-command.js +0 -107
- package/dist/cli/mcp-command.js +0 -174
- package/dist/cli/port-holder.js +0 -123
- package/dist/cli/status-next-action.d.ts +0 -51
- package/dist/cli/status-next-action.js +0 -60
- package/dist/cli.d.ts +0 -6
- package/dist/cli.js +0 -828
- package/dist/cloud/account-state.d.ts +0 -20
- package/dist/cloud/account-state.js +0 -65
- package/dist/cloud/cloud-config.d.ts +0 -57
- package/dist/cloud/cloud-config.js +0 -145
- package/dist/cloud/cloud-sync.d.ts +0 -190
- package/dist/cloud/cloud-sync.js +0 -354
- package/dist/cloud/sync-cycle.d.ts +0 -111
- package/dist/cloud/sync-cycle.js +0 -270
- package/dist/cloud/sync-daemon.d.ts +0 -53
- package/dist/cloud/sync-daemon.js +0 -260
- package/dist/cloud/sync-disk.js +0 -191
- package/dist/crawl/crawl-tools.d.ts +0 -7
- package/dist/crawl/crawl-tools.js +0 -87
- package/dist/crawl/crawl.d.ts +0 -98
- package/dist/crawl/crawl.js +0 -441
- package/dist/daemon/daemon-resilience.d.ts +0 -74
- package/dist/daemon/daemon-resilience.js +0 -318
- package/dist/daemon/daemon-resolve.d.ts +0 -113
- package/dist/daemon/daemon-resolve.js +0 -187
- package/dist/daemon/daemon-usefulness.d.ts +0 -61
- package/dist/daemon/daemon-usefulness.js +0 -62
- package/dist/daemon/daemon.d.ts +0 -95
- package/dist/daemon/daemon.js +0 -336
- package/dist/daemon/heartbeat.d.ts +0 -111
- package/dist/daemon/heartbeat.js +0 -141
- package/dist/daemon/idle-grace.d.ts +0 -32
- package/dist/daemon/idle-grace.js +0 -41
- package/dist/daemon/idle-shutdown.d.ts +0 -54
- package/dist/daemon/idle-shutdown.js +0 -98
- package/dist/daemon/state-dir.js +0 -59
- package/dist/daemon/wake-decision.d.ts +0 -32
- package/dist/daemon/wake-decision.js +0 -38
- package/dist/dev/stale-issue-guard.d.ts +0 -41
- package/dist/dev/stale-issue-guard.js +0 -75
- package/dist/domain/domain-model.js +0 -126
- package/dist/domain/domain-tools.d.ts +0 -2
- package/dist/domain/domain-tools.js +0 -94
- package/dist/domain/flow-risk.js +0 -80
- package/dist/ee/audit-log.js +0 -11
- package/dist/events/body-failures.d.ts +0 -4
- package/dist/events/body-failures.js +0 -113
- package/dist/events/contradiction-folds.d.ts +0 -45
- package/dist/events/contradiction-folds.js +0 -42
- package/dist/events/contradictions.d.ts +0 -170
- package/dist/events/contradictions.js +0 -718
- package/dist/events/declared.d.ts +0 -74
- package/dist/events/declared.js +0 -171
- package/dist/events/echo-mismatch.d.ts +0 -10
- package/dist/events/echo-mismatch.js +0 -299
- package/dist/events/event-filters.d.ts +0 -121
- package/dist/events/event-filters.js +0 -215
- package/dist/events/json-salvage.d.ts +0 -33
- package/dist/events/json-salvage.js +0 -96
- package/dist/events/lineage.d.ts +0 -52
- package/dist/events/lineage.js +0 -122
- package/dist/events/net-evidence.d.ts +0 -21
- package/dist/events/net-evidence.js +0 -81
- package/dist/events/observed-in-window.d.ts +0 -24
- package/dist/events/observed-in-window.js +0 -38
- package/dist/events/predicate-asks.d.ts +0 -30
- package/dist/events/predicate-asks.js +0 -48
- package/dist/events/predicate-console.d.ts +0 -13
- package/dist/events/predicate-console.js +0 -138
- package/dist/events/predicate-element.d.ts +0 -13
- package/dist/events/predicate-element.js +0 -214
- package/dist/events/predicate-eval.d.ts +0 -101
- package/dist/events/predicate-eval.js +0 -834
- package/dist/events/predicate-parse.d.ts +0 -17
- package/dist/events/predicate-parse.js +0 -175
- package/dist/events/predicate-precheck.d.ts +0 -8
- package/dist/events/predicate-precheck.js +0 -41
- package/dist/events/predicate-request-body.d.ts +0 -50
- package/dist/events/predicate-request-body.js +0 -120
- package/dist/events/predicate-route.d.ts +0 -66
- package/dist/events/predicate-route.js +0 -258
- package/dist/events/predicate-schema.d.ts +0 -168
- package/dist/events/predicate-schema.js +0 -501
- package/dist/events/predicate.d.ts +0 -74
- package/dist/events/predicate.js +0 -725
- package/dist/events/reaction.d.ts +0 -33
- package/dist/events/reaction.js +0 -59
- package/dist/events/reconcile.d.ts +0 -39
- package/dist/events/reconcile.js +0 -211
- package/dist/events/ring-buffer.d.ts +0 -41
- package/dist/events/ring-buffer.js +0 -151
- package/dist/events/split-text-miss.d.ts +0 -32
- package/dist/events/split-text-miss.js +0 -51
- package/dist/events/stale-response.d.ts +0 -3
- package/dist/events/stale-response.js +0 -186
- package/dist/events/testid-near-miss.d.ts +0 -22
- package/dist/events/testid-near-miss.js +0 -33
- package/dist/events/unit-mismatch.d.ts +0 -16
- package/dist/events/unit-mismatch.js +0 -167
- package/dist/flows/affected-tools.d.ts +0 -18
- package/dist/flows/affected-tools.js +0 -80
- package/dist/flows/affected.d.ts +0 -24
- package/dist/flows/affected.js +0 -35
- package/dist/flows/annotate-tools.d.ts +0 -15
- package/dist/flows/annotate-tools.js +0 -179
- package/dist/flows/assertion-tiers-store.d.ts +0 -16
- package/dist/flows/assertion-tiers-store.js +0 -98
- package/dist/flows/decision.d.ts +0 -25
- package/dist/flows/decision.js +0 -201
- package/dist/flows/empty-flow.js +0 -24
- package/dist/flows/flake-store.d.ts +0 -18
- package/dist/flows/flake-store.js +0 -58
- package/dist/flows/flake.d.ts +0 -56
- package/dist/flows/flow-classify.d.ts +0 -51
- package/dist/flows/flow-classify.js +0 -102
- package/dist/flows/flow-expect-grammar.d.ts +0 -33
- package/dist/flows/flow-expect-grammar.js +0 -155
- package/dist/flows/flow-intent.d.ts +0 -52
- package/dist/flows/flow-intent.js +0 -123
- package/dist/flows/flow-replay-run.d.ts +0 -43
- package/dist/flows/flow-replay-run.js +0 -478
- package/dist/flows/flow-replay.d.ts +0 -82
- package/dist/flows/flow-replay.js +0 -519
- package/dist/flows/flow-secret-field.d.ts +0 -14
- package/dist/flows/flow-secret-field.js +0 -22
- package/dist/flows/flow-sources.d.ts +0 -19
- package/dist/flows/flow-sources.js +0 -32
- package/dist/flows/flow-step-runners.d.ts +0 -52
- package/dist/flows/flow-step-runners.js +0 -315
- package/dist/flows/flow-store-for-session.d.ts +0 -31
- package/dist/flows/flow-success.d.ts +0 -32
- package/dist/flows/flow-success.js +0 -169
- package/dist/flows/flow-tools.d.ts +0 -15
- package/dist/flows/flow-tools.js +0 -639
- package/dist/flows/flow-upload-resolve.d.ts +0 -23
- package/dist/flows/flow-upload-resolve.js +0 -46
- package/dist/flows/flows.d.ts +0 -130
- package/dist/flows/flows.js +0 -870
- package/dist/flows/gate.js +0 -33
- package/dist/flows/heal-run.d.ts +0 -10
- package/dist/flows/heal-run.js +0 -139
- package/dist/flows/heal.js +0 -97
- package/dist/flows/predicate-to-expect.d.ts +0 -44
- package/dist/flows/predicate-to-expect.js +0 -130
- package/dist/flows/recording-backtrack.js +0 -73
- package/dist/flows/recordings.d.ts +0 -63
- package/dist/flows/recordings.js +0 -57
- package/dist/flows/replay.d.ts +0 -62
- package/dist/flows/replay.js +0 -337
- package/dist/flows/role-anchor-nearest.js +0 -45
- package/dist/flows/server-verify.d.ts +0 -15
- package/dist/flows/server-verify.js +0 -56
- package/dist/flows/suite-flakes.d.ts +0 -34
- package/dist/flows/suite-flakes.js +0 -32
- package/dist/flows/verify-change-tools.d.ts +0 -2
- package/dist/flows/verify-change-tools.js +0 -231
- package/dist/honesty/accepted-write.d.ts +0 -17
- package/dist/honesty/accepted-write.js +0 -22
- package/dist/honesty/already-true.d.ts +0 -16
- package/dist/honesty/already-true.js +0 -89
- package/dist/honesty/blind-spots.d.ts +0 -133
- package/dist/honesty/blind-spots.js +0 -248
- package/dist/honesty/body-capture-remedy.d.ts +0 -42
- package/dist/honesty/body-capture-remedy.js +0 -95
- package/dist/honesty/feature-capture.d.ts +0 -151
- package/dist/honesty/feature-capture.js +0 -233
- package/dist/honesty/gap-ledger.d.ts +0 -52
- package/dist/honesty/gap-ledger.js +0 -63
- package/dist/honesty/honesty.d.ts +0 -103
- package/dist/honesty/honesty.js +0 -95
- package/dist/honesty/instrumentation-gaps.d.ts +0 -95
- package/dist/honesty/instrumentation-gaps.js +0 -114
- package/dist/honesty/observability.d.ts +0 -38
- package/dist/honesty/observability.js +0 -40
- package/dist/honesty/tool-hit-rate.js +0 -90
- package/dist/honesty/uncaptured-bodies.d.ts +0 -23
- package/dist/honesty/uncaptured-bodies.js +0 -41
- package/dist/honesty/undeclared-change.d.ts +0 -51
- package/dist/honesty/undeclared-change.js +0 -56
- package/dist/honesty/unread-outcome.d.ts +0 -10
- package/dist/honesty/unread-outcome.js +0 -77
- package/dist/honesty/unsettled.d.ts +0 -58
- package/dist/honesty/unsettled.js +0 -127
- package/dist/honesty/verified.d.ts +0 -148
- package/dist/honesty/verified.js +0 -330
- package/dist/http-server.d.ts +0 -52
- package/dist/http-server.js +0 -381
- package/dist/impact/impact-recorder.d.ts +0 -46
- package/dist/impact/impact-recorder.js +0 -159
- package/dist/impact/impact-store.d.ts +0 -47
- package/dist/impact/impact-store.js +0 -255
- package/dist/input/network-detail.d.ts +0 -104
- package/dist/input/network-detail.js +0 -211
- package/dist/input/network-mock-tools.d.ts +0 -21
- package/dist/input/network-mock-tools.js +0 -124
- package/dist/input/network-mock.js +0 -61
- package/dist/input/real-input.d.ts +0 -222
- package/dist/input/real-input.js +0 -405
- package/dist/input/scroll-find.js +0 -111
- package/dist/input/scroll-tools.d.ts +0 -2
- package/dist/input/scroll-tools.js +0 -76
- package/dist/input/viewport-tools.d.ts +0 -2
- package/dist/input/viewport-tools.js +0 -72
- package/dist/intent/inline-intent.d.ts +0 -27
- package/dist/intent/inline-intent.js +0 -193
- package/dist/intent/intent-shard-store.d.ts +0 -73
- package/dist/intent/intent-shard-store.js +0 -203
- package/dist/intent/intent-shard.d.ts +0 -411
- package/dist/intent/intent-shard.js +0 -176
- package/dist/intent/intent-store.d.ts +0 -49
- package/dist/intent/intent-store.js +0 -133
- package/dist/intent/intent-subject.d.ts +0 -46
- package/dist/intent/intent-subject.js +0 -177
- package/dist/intent/intent-tools.d.ts +0 -2
- package/dist/intent/intent-tools.js +0 -143
- package/dist/intent/open-intents.d.ts +0 -43
- package/dist/intent/open-intents.js +0 -40
- package/dist/journal/ambient-store.d.ts +0 -13
- package/dist/journal/ambient-store.js +0 -45
- package/dist/journal/ambient.d.ts +0 -47
- package/dist/journal/ambient.js +0 -47
- package/dist/journal/attach-journal.d.ts +0 -30
- package/dist/journal/attach-journal.js +0 -30
- package/dist/journal/envelope-store.d.ts +0 -16
- package/dist/journal/envelope-store.js +0 -61
- package/dist/journal/envelope.d.ts +0 -230
- package/dist/journal/journal-query.d.ts +0 -32
- package/dist/journal/journal-query.js +0 -52
- package/dist/journal/journal-recorder.d.ts +0 -61
- package/dist/journal/journal-recorder.js +0 -115
- package/dist/journal/retention.d.ts +0 -20
- package/dist/journal/retention.js +0 -49
- package/dist/journal/session-end.d.ts +0 -32
- package/dist/journal/session-end.js +0 -51
- package/dist/journal/session-journal.d.ts +0 -24
- package/dist/journal/session-journal.js +0 -167
- package/dist/journal/workspace-gitignore.d.ts +0 -10
- package/dist/journal/workspace-gitignore.js +0 -59
- package/dist/license/license-env.d.ts +0 -29
- package/dist/license/license-env.js +0 -148
- package/dist/license/license.d.ts +0 -169
- package/dist/license/license.js +0 -289
- package/dist/mcp/mcp-is-error.d.ts +0 -13
- package/dist/mcp/mcp-is-error.js +0 -18
- package/dist/mcp/mcp-outage.d.ts +0 -32
- package/dist/mcp/mcp-outage.js +0 -55
- package/dist/mcp/mcp-post-transport.js +0 -109
- package/dist/mcp/mcp-proxy.d.ts +0 -110
- package/dist/mcp/mcp-proxy.js +0 -872
- package/dist/mcp/mcp.d.ts +0 -80
- package/dist/mcp/mcp.js +0 -536
- package/dist/mcp/proxy-daemon-probe.d.ts +0 -9
- package/dist/mcp/proxy-daemon-probe.js +0 -54
- package/dist/mcp/proxy-handshake.js +0 -192
- package/dist/mcp/proxy-lifecycle.d.ts +0 -92
- package/dist/mcp/proxy-lifecycle.js +0 -100
- package/dist/mcp/proxy-log.d.ts +0 -63
- package/dist/mcp/proxy-log.js +0 -132
- package/dist/mcp/server-instructions.d.ts +0 -18
- package/dist/mcp/server-instructions.js +0 -98
- package/dist/mcp/tool-catalog-cache.d.ts +0 -45
- package/dist/mcp/tool-catalog-cache.js +0 -77
- package/dist/memory/memory-tools.d.ts +0 -2
- package/dist/memory/memory-tools.js +0 -82
- package/dist/memory/project-memory.d.ts +0 -33
- package/dist/oracles/propose-consequences.d.ts +0 -22
- package/dist/oracles/propose-consequences.js +0 -106
- package/dist/pool/browser-pool.d.ts +0 -282
- package/dist/pool/browser-pool.js +0 -560
- package/dist/pool/lease-reaper.js +0 -40
- package/dist/pool/playwright-launcher.js +0 -150
- package/dist/pool/storage-seed.d.ts +0 -23
- package/dist/project/artifact-root.d.ts +0 -84
- package/dist/project/artifact-root.js +0 -112
- package/dist/project/fs-port.d.ts +0 -47
- package/dist/project/fs-port.js +0 -54
- package/dist/project/learned-routes.d.ts +0 -24
- package/dist/project/learned-routes.js +0 -63
- package/dist/project/memory-fs.d.ts +0 -10
- package/dist/project/project-store.d.ts +0 -54
- package/dist/project/project-store.js +0 -201
- package/dist/project/project-tools.d.ts +0 -2
- package/dist/project/project-tools.js +0 -155
- package/dist/project/reticle-dir.d.ts +0 -102
- package/dist/project/reticle-dir.js +0 -188
- package/dist/project/session-root.d.ts +0 -23
- package/dist/project/session-root.js +0 -38
- package/dist/runs/build-verification-run.d.ts +0 -29
- package/dist/runs/build-verification-run.js +0 -70
- package/dist/runs/context-tools.d.ts +0 -2
- package/dist/runs/context-tools.js +0 -89
- package/dist/runs/render-report.js +0 -69
- package/dist/runs/replay-mapping.js +0 -34
- package/dist/runs/reticle-runner.d.ts +0 -60
- package/dist/runs/reticle-runner.js +0 -95
- package/dist/runs/run-store.d.ts +0 -54
- package/dist/runs/run-store.js +0 -147
- package/dist/runs/run-tools.d.ts +0 -9
- package/dist/runs/run-tools.js +0 -82
- package/dist/runs/runner-port.d.ts +0 -13
- package/dist/runs/runner-port.js +0 -22
- package/dist/runs/verification-sync.d.ts +0 -12
- package/dist/runs/verification-sync.js +0 -87
- package/dist/session/command-timeout.d.ts +0 -46
- package/dist/session/command-timeout.js +0 -42
- package/dist/session/connection-memory.d.ts +0 -59
- package/dist/session/connection-memory.js +0 -108
- package/dist/session/dev-server-probe.js +0 -147
- package/dist/session/live-control-tools.d.ts +0 -15
- package/dist/session/live-control-tools.js +0 -242
- package/dist/session/no-session-diagnosis.d.ts +0 -176
- package/dist/session/no-session-diagnosis.js +0 -477
- package/dist/session/no-session-next-action.d.ts +0 -72
- package/dist/session/no-session-next-action.js +0 -174
- package/dist/session/no-session-watch.js +0 -335
- package/dist/session/observed-state.d.ts +0 -60
- package/dist/session/observed-state.js +0 -121
- package/dist/session/output-budget.d.ts +0 -49
- package/dist/session/output-budget.js +0 -67
- package/dist/session/session-health.d.ts +0 -138
- package/dist/session/session-health.js +0 -154
- package/dist/session/session-manager.d.ts +0 -76
- package/dist/session/session-manager.js +0 -464
- package/dist/session/session-reaper.d.ts +0 -36
- package/dist/session/session-reaper.js +0 -93
- package/dist/session/session-recommendation.js +0 -29
- package/dist/session/session-replaced.d.ts +0 -24
- package/dist/session/session-replaced.js +0 -29
- package/dist/session/session-tools.d.ts +0 -8
- package/dist/session/session-tools.js +0 -42
- package/dist/session/session.d.ts +0 -280
- package/dist/session/session.js +0 -891
- package/dist/session/stall-clock.js +0 -48
- package/dist/setup/agent-configs.d.ts +0 -97
- package/dist/setup/agent-configs.js +0 -333
- package/dist/setup/agent-writer.d.ts +0 -52
- package/dist/setup/agent-writer.js +0 -115
- package/dist/setup/auto-approve.js +0 -153
- package/dist/setup/bridge-port.d.ts +0 -15
- package/dist/setup/bridge-port.js +0 -24
- package/dist/setup/confirm.js +0 -205
- package/dist/setup/dev-server-wait.d.ts +0 -68
- package/dist/setup/dev-server-wait.js +0 -67
- package/dist/setup/drive-agent.d.ts +0 -70
- package/dist/setup/drive-agent.js +0 -171
- package/dist/setup/drive-plan.d.ts +0 -69
- package/dist/setup/drive-plan.js +0 -130
- package/dist/setup/ensure-daemon.js +0 -58
- package/dist/setup/init-host.js +0 -26
- package/dist/setup/init-runtime.d.ts +0 -41
- package/dist/setup/init-runtime.js +0 -167
- package/dist/setup/node-effects.d.ts +0 -63
- package/dist/setup/node-effects.js +0 -225
- package/dist/setup/page-probe.d.ts +0 -44
- package/dist/setup/page-probe.js +0 -49
- package/dist/setup/remaining-steps.js +0 -31
- package/dist/setup/run-setup.d.ts +0 -103
- package/dist/setup/run-setup.js +0 -294
- package/dist/setup/setup-command.d.ts +0 -46
- package/dist/setup/setup-command.js +0 -207
- package/dist/setup/setup-options.d.ts +0 -76
- package/dist/setup/setup-options.js +0 -68
- package/dist/tools/act-capsule.d.ts +0 -33
- package/dist/tools/act-capsule.js +0 -53
- package/dist/tools/act-danger.js +0 -69
- package/dist/tools/act-helpers.d.ts +0 -17
- package/dist/tools/act-helpers.js +0 -40
- package/dist/tools/act-observation.d.ts +0 -42
- package/dist/tools/act-observation.js +0 -36
- package/dist/tools/act-preflight.d.ts +0 -20
- package/dist/tools/act-preflight.js +0 -103
- package/dist/tools/act-sequence-tool.js +0 -135
- package/dist/tools/act-target.d.ts +0 -18
- package/dist/tools/act-target.js +0 -56
- package/dist/tools/act-tools.d.ts +0 -20
- package/dist/tools/act-tools.js +0 -763
- package/dist/tools/assert-grade.d.ts +0 -42
- package/dist/tools/assert-grade.js +0 -108
- package/dist/tools/assert-source.d.ts +0 -52
- package/dist/tools/assert-source.js +0 -74
- package/dist/tools/assert-verdict.d.ts +0 -48
- package/dist/tools/assert-verdict.js +0 -197
- package/dist/tools/browser-tools.d.ts +0 -2
- package/dist/tools/browser-tools.js +0 -115
- package/dist/tools/contract-tools.d.ts +0 -2
- package/dist/tools/contract-tools.js +0 -98
- package/dist/tools/coverage-tools.d.ts +0 -18
- package/dist/tools/coverage-tools.js +0 -175
- package/dist/tools/dynamic-tools.d.ts +0 -7
- package/dist/tools/dynamic-tools.js +0 -257
- package/dist/tools/error-recovery.d.ts +0 -110
- package/dist/tools/error-recovery.js +0 -499
- package/dist/tools/feedback-invite.d.ts +0 -48
- package/dist/tools/feedback-invite.js +0 -71
- package/dist/tools/feedback-tools.d.ts +0 -35
- package/dist/tools/feedback-tools.js +0 -228
- package/dist/tools/invoke-tool.d.ts +0 -10
- package/dist/tools/invoke-tool.js +0 -569
- package/dist/tools/lease-hint.d.ts +0 -49
- package/dist/tools/lease-hint.js +0 -124
- package/dist/tools/lease-tools.d.ts +0 -143
- package/dist/tools/lease-tools.js +0 -688
- package/dist/tools/lineage-tools.d.ts +0 -14
- package/dist/tools/lineage-tools.js +0 -64
- package/dist/tools/merge-tools.d.ts +0 -51
- package/dist/tools/merge-tools.js +0 -69
- package/dist/tools/merged-name-redirect.d.ts +0 -26
- package/dist/tools/merged-name-redirect.js +0 -77
- package/dist/tools/navigate-arrival.d.ts +0 -68
- package/dist/tools/numeric-bounds.d.ts +0 -89
- package/dist/tools/numeric-bounds.js +0 -125
- package/dist/tools/observe-tools.js +0 -578
- package/dist/tools/read-tools.js +0 -569
- package/dist/tools/real-input-attempt.d.ts +0 -68
- package/dist/tools/real-input-attempt.js +0 -360
- package/dist/tools/reconcile-tools.js +0 -126
- package/dist/tools/resolve-target.js +0 -116
- package/dist/tools/snapshot-delta.d.ts +0 -92
- package/dist/tools/snapshot-delta.js +0 -356
- package/dist/tools/tool-kit.d.ts +0 -221
- package/dist/tools/tool-kit.js +0 -114
- package/dist/tools/tool-names.d.ts +0 -112
- package/dist/tools/tool-names.js +0 -112
- package/dist/tools/tool-surface.d.ts +0 -222
- package/dist/tools/tool-surface.js +0 -439
- package/dist/tools/tools-helpers.d.ts +0 -42
- package/dist/tools/tools-helpers.js +0 -87
- package/dist/tools/tools.d.ts +0 -20
- package/dist/tools/tools.js +0 -739
- package/dist/tools/unadvertised-help.js +0 -42
- package/dist/tools/verify-next-baton.js +0 -52
- package/dist/update/nudge-credit.js +0 -53
- package/dist/update/reticle-deps.d.ts +0 -9
- package/dist/update/reticle-deps.js +0 -27
- package/dist/update/sdk-sync.d.ts +0 -20
- package/dist/update/sdk-sync.js +0 -22
- package/dist/update/update-checker.js +0 -122
- package/dist/update/update-nudge.d.ts +0 -92
- package/dist/update/update-nudge.js +0 -214
- package/dist/update/updater.d.ts +0 -54
- package/dist/update/updater.js +0 -190
- package/dist/version/peer-announce.js +0 -32
- package/dist/version/sdk-fix.js +0 -127
- package/dist/version/server-version.js +0 -13
- package/dist/version/version-nudge.js +0 -61
- package/dist/version/version-skew.d.ts +0 -93
- package/dist/version/version-skew.js +0 -147
- package/dist/visual/visual-store.d.ts +0 -22
- package/dist/visual/visual-store.js +0 -66
- package/dist/visual/visual-tools.d.ts +0 -26
- package/dist/visual/visual-tools.js +0 -328
- package/docs/docs.json +0 -369
- package/docs/fixtures.md +0 -51
- package/docs/gate-plan.md +0 -104
- package/docs/gates.md +0 -131
- package/docs/style.css +0 -14
- package/docs/telemetry-contract.md +0 -390
- package/docs/telemetry-events.mdx +0 -442
- package/docs/tools-act-and-wait.mdx +0 -173
- package/docs/tools-act-sequence.mdx +0 -153
- package/docs/tools-act.mdx +0 -95
- package/docs/tools-assert.mdx +0 -129
- package/docs/tools-console.mdx +0 -63
- package/docs/tools-inspect.mdx +0 -88
- package/docs/tools-navigate.mdx +0 -107
- package/docs/tools-network.mdx +0 -119
- package/docs/tools-observe.mdx +0 -145
- package/docs/tools-overview.mdx +0 -160
- package/docs/tools-query.mdx +0 -126
- package/docs/tools-sessions.mdx +0 -94
- package/docs/tools-snapshot.mdx +0 -129
- package/docs/tools-state.mdx +0 -104
- package/docs/tools-wait-for.mdx +0 -85
- /package/dist/{cli → command/cli/answers}/gate-exit.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/gate-exit.js +0 -0
- /package/dist/{cli → command/cli/answers}/gate-hook-message.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/gate-hook-message.js +0 -0
- /package/dist/{cli → command/cli/answers}/open-note.d.ts +0 -0
- /package/dist/{cli → command/cli/answers}/open-note.js +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-keystore.d.ts +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-session.d.ts +0 -0
- /package/dist/{cli → command/cli/auth}/cloud-session.js +0 -0
- /package/dist/{cli → command/cli}/cli-doctor.d.ts +0 -0
- /package/dist/{cli → command/cli}/cli-parse-feedback.d.ts +0 -0
- /package/dist/{cli → command/cli}/cli-parse-feedback.js +0 -0
- /package/dist/{cli → command/cli}/cli-update-commands.d.ts +0 -0
- /package/dist/{cli → command/cli}/cloud-cli.d.ts +0 -0
- /package/dist/{cli → command/cli}/cloud-login.d.ts +0 -0
- /package/dist/{cli → command/cli}/daemon-start-options.js +0 -0
- /package/dist/{cli → command/cli/doctor/browser}/chromium-hint.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor/browser}/chromium-hint.js +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-daemon-line.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-project-line.d.ts +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-project-line.js +0 -0
- /package/dist/{cli → command/cli/doctor}/doctor-sessions-line.d.ts +0 -0
- /package/dist/{cli → command/cli/drive}/drive-command.d.ts +0 -0
- /package/dist/{cli → command/cli}/mcp-command.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/port-holder.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/sibling-ports.d.ts +0 -0
- /package/dist/{cli → command/cli/ports}/sibling-ports.js +0 -0
- /package/dist/{cli → command/cli}/project-name.d.ts +0 -0
- /package/dist/{cli → command/cli}/project-name.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/free-port.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/free-port.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/loopback-alias.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/loopback-alias.js +0 -0
- /package/dist/{daemon → command/daemon/binding}/port-presence.d.ts +0 -0
- /package/dist/{daemon → command/daemon/binding}/port-presence.js +0 -0
- /package/dist/{daemon → command/daemon}/dev-servers.d.ts +0 -0
- /package/dist/{daemon → command/daemon}/dev-servers.js +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/startup-failure.d.ts +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/startup-failure.js +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/unclean-predecessor.d.ts +0 -0
- /package/dist/{daemon → command/daemon/lifetime}/unclean-predecessor.js +0 -0
- /package/dist/{daemon → command/daemon}/state-dir.d.ts +0 -0
- /package/dist/{setup → command/setup}/agent-io.d.ts +0 -0
- /package/dist/{setup → command/setup}/agent-io.js +0 -0
- /package/dist/{setup → command/setup}/approval-migration.d.ts +0 -0
- /package/dist/{setup → command/setup}/approval-migration.js +0 -0
- /package/dist/{setup → command/setup}/auto-approve.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/ensure-daemon.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/relaunch.d.ts +0 -0
- /package/dist/{setup → command/setup/bringup}/relaunch.js +0 -0
- /package/dist/{setup → command/setup}/desktop-shape.d.ts +0 -0
- /package/dist/{setup → command/setup}/desktop-shape.js +0 -0
- /package/dist/{setup → command/setup/init}/init-host.d.ts +0 -0
- /package/dist/{setup → command/setup}/license-key.d.ts +0 -0
- /package/dist/{setup → command/setup}/license-key.js +0 -0
- /package/dist/{setup → command/setup/probe}/existing-app.d.ts +0 -0
- /package/dist/{setup → command/setup/probe}/existing-app.js +0 -0
- /package/dist/{setup → command/setup/probe}/loopback-probe-urls.d.ts +0 -0
- /package/dist/{setup → command/setup/probe}/loopback-probe-urls.js +0 -0
- /package/dist/{setup → command/setup}/remaining-steps.d.ts +0 -0
- /package/dist/{setup → command/setup}/session-pick.d.ts +0 -0
- /package/dist/{setup → command/setup}/session-pick.js +0 -0
- /package/dist/{setup → command/setup/terminal}/confirm.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/interrupt.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/interrupt.js +0 -0
- /package/dist/{setup → command/setup/terminal}/listeners.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/listeners.js +0 -0
- /package/dist/{setup → command/setup/terminal}/transcripts.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/transcripts.js +0 -0
- /package/dist/{setup → command/setup/terminal}/wait-progress.d.ts +0 -0
- /package/dist/{setup → command/setup/terminal}/wait-progress.js +0 -0
- /package/dist/{update → command/update}/nudge-credit.d.ts +0 -0
- /package/dist/{update → command/update}/update-checker.d.ts +0 -0
- /package/dist/{version → command/version/identity}/server-version.d.ts +0 -0
- /package/dist/{version → command/version}/peer-announce.d.ts +0 -0
- /package/dist/{version → command/version}/sdk-fix.d.ts +0 -0
- /package/dist/{version → command/version}/version-nudge.d.ts +0 -0
- /package/dist/{crawl → features/crawl}/crawl-empty.d.ts +0 -0
- /package/dist/{crawl → features/crawl}/crawl-empty.js +0 -0
- /package/dist/{ee → features/ee}/audit-log.d.ts +0 -0
- /package/dist/{visual → features/visual}/capture-cleanup.d.ts +0 -0
- /package/dist/{visual → features/visual}/capture-cleanup.js +0 -0
- /package/dist/{visual → features/visual}/visual-diff.d.ts +0 -0
- /package/dist/{visual → features/visual}/visual-diff.js +0 -0
- /package/dist/{capsule → judgement/capsule}/divergence.js +0 -0
- /package/dist/{capsule → judgement/capsule}/minimize.d.ts +0 -0
- /package/dist/{capsule → judgement/capsule}/minimize.js +0 -0
- /package/dist/{domain → judgement/domain}/domain-model.d.ts +0 -0
- /package/dist/{domain → judgement/domain}/flow-risk.d.ts +0 -0
- /package/dist/{hunt → judgement/hunt}/hunt-report.d.ts +0 -0
- /package/dist/{hunt → judgement/hunt}/hunt-report.js +0 -0
- /package/dist/{oracles → judgement/oracles}/flow-instrument-gaps.d.ts +0 -0
- /package/dist/{oracles → judgement/oracles}/flow-instrument-gaps.js +0 -0
- /package/dist/{oracles → judgement/oracles}/self-instrument.d.ts +0 -0
- /package/dist/{oracles → judgement/oracles}/self-instrument.js +0 -0
- /package/dist/{flows → judgement/outcome}/assertion-integrity.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/assertion-integrity.js +0 -0
- /package/dist/{flows → judgement/outcome}/attributed-failure.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/attributed-failure.js +0 -0
- /package/dist/{flows → judgement/outcome}/role-drift-reason.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/role-drift-reason.js +0 -0
- /package/dist/{flows → judgement/outcome}/verify-change-verdict.d.ts +0 -0
- /package/dist/{flows → judgement/outcome}/verify-change-verdict.js +0 -0
- /package/dist/{phenomena → judgement/phenomena}/phenomena.d.ts +0 -0
- /package/dist/{phenomena → judgement/phenomena}/phenomena.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/profile-redact.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/profile-redact.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/render-report.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/replay-mapping.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-context.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-context.js +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-diff.d.ts +0 -0
- /package/dist/{runs → judgement/runs/artifact}/run-diff.js +0 -0
- /package/dist/{runs → judgement/runs}/repair-prompt.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/repair-prompt.js +0 -0
- /package/dist/{runs → judgement/runs}/risk-classify.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/risk-classify.js +0 -0
- /package/dist/{runs → judgement/runs}/verify-http.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/verify-http.js +0 -0
- /package/dist/{runs → judgement/runs}/verify-server.d.ts +0 -0
- /package/dist/{runs → judgement/runs}/verify-server.js +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate-target.d.ts +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate-target.js +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate.d.ts +0 -0
- /package/dist/{flows → language/flows/annotate-notes}/annotate.js +0 -0
- /package/dist/{flows → language/flows}/buddy-status.d.ts +0 -0
- /package/dist/{flows → language/flows}/buddy-status.js +0 -0
- /package/dist/{flows → language/flows/change}/gate.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/git-changed.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/git-changed.js +0 -0
- /package/dist/{flows → language/flows/change}/watch-batcher.d.ts +0 -0
- /package/dist/{flows → language/flows/change}/watch-batcher.js +0 -0
- /package/dist/{flows → language/flows}/empty-flow.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-memory-consult.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-memory-consult.js +0 -0
- /package/dist/{flows → language/flows}/flow-report.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-report.js +0 -0
- /package/dist/{flows → language/flows}/flow-scope.d.ts +0 -0
- /package/dist/{flows → language/flows}/flow-scope.js +0 -0
- /package/dist/{flows → language/flows}/flow-store-for-session.js +0 -0
- /package/dist/{flows → language/flows}/heal.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/flake.js +0 -0
- /package/dist/{flows → language/flows/recording}/recording-backtrack.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/replay-halt.d.ts +0 -0
- /package/dist/{flows → language/flows/recording}/replay-halt.js +0 -0
- /package/dist/{flows → language/flows}/role-anchor-nearest.d.ts +0 -0
- /package/dist/{flows → language/flows/stores}/annotation-store.d.ts +0 -0
- /package/dist/{flows → language/flows/stores}/annotation-store.js +0 -0
- /package/dist/{flows → language/flows/suite}/coverage.d.ts +0 -0
- /package/dist/{flows → language/flows/suite}/coverage.js +0 -0
- /package/dist/{flows → language/flows/suite}/parallel-suite.d.ts +0 -0
- /package/dist/{flows → language/flows/suite}/parallel-suite.js +0 -0
- /package/dist/{platform.d.ts → machine/platform.d.ts} +0 -0
- /package/dist/{platform.js → machine/platform.js} +0 -0
- /package/dist/{temp-dir.d.ts → machine/temp-dir.d.ts} +0 -0
- /package/dist/{temp-dir.js → machine/temp-dir.js} +0 -0
- /package/dist/{cloud → memory/cloud}/sync-disk.d.ts +0 -0
- /package/dist/{cloud → memory/cloud}/sync-hash.d.ts +0 -0
- /package/dist/{cloud → memory/cloud}/sync-hash.js +0 -0
- /package/dist/{journal → memory/journal}/deviation-report.d.ts +0 -0
- /package/dist/{journal → memory/journal}/deviation-report.js +0 -0
- /package/dist/{journal → memory/journal}/deviation-service.d.ts +0 -0
- /package/dist/{journal → memory/journal}/deviation-service.js +0 -0
- /package/dist/{journal → memory/journal}/envelope.js +0 -0
- /package/dist/{journal → memory/journal}/rollups.d.ts +0 -0
- /package/dist/{journal → memory/journal}/rollups.js +0 -0
- /package/dist/{project → memory/project}/baselines.d.ts +0 -0
- /package/dist/{project → memory/project}/baselines.js +0 -0
- /package/dist/{project → memory/project}/file-lock.d.ts +0 -0
- /package/dist/{project → memory/project}/file-lock.js +0 -0
- /package/dist/{project → memory/project}/memory-fs.js +0 -0
- /package/dist/{session → memory/recall}/looks-like-dev-server.d.ts +0 -0
- /package/dist/{session → memory/recall}/looks-like-dev-server.js +0 -0
- /package/dist/memory/{project-memory.js → recall/project-memory.js} +0 -0
- /package/dist/{session → memory/recall}/registered-projects.d.ts +0 -0
- /package/dist/{session → memory/recall}/registered-projects.js +0 -0
- /package/dist/{bridge → portal/bridge}/pairing-token.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/pairing-token.js +0 -0
- /package/dist/{bridge → portal/bridge}/protocol-skew.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/protocol-skew.js +0 -0
- /package/dist/{bridge → portal/bridge}/token-auth.d.ts +0 -0
- /package/dist/{bridge → portal/bridge}/token-auth.js +0 -0
- /package/dist/{input → portal/input}/driven-redaction.d.ts +0 -0
- /package/dist/{input → portal/input}/driven-redaction.js +0 -0
- /package/dist/{input → portal/input}/network-mock.d.ts +0 -0
- /package/dist/{input → portal/input}/scroll-find.d.ts +0 -0
- /package/dist/{pool → portal/pool}/lease-reaper.d.ts +0 -0
- /package/dist/{pool → portal/pool}/playwright-launcher.d.ts +0 -0
- /package/dist/{pool → portal/pool}/storage-seed.js +0 -0
- /package/dist/{session → portal/session}/control-envelope.d.ts +0 -0
- /package/dist/{session → portal/session}/control-envelope.js +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-command.d.ts +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-command.js +0 -0
- /package/dist/{session → portal/session/dev-server}/dev-server-probe.d.ts +0 -0
- /package/dist/{session → portal/session/facts}/ref-provenance.d.ts +0 -0
- /package/dist/{session → portal/session/facts}/ref-provenance.js +0 -0
- /package/dist/{session → portal/session}/fake-session.d.ts +0 -0
- /package/dist/{session → portal/session}/fake-session.js +0 -0
- /package/dist/{session → portal/session/human}/live-control.d.ts +0 -0
- /package/dist/{session → portal/session/human}/live-control.js +0 -0
- /package/dist/{session → portal/session/human}/presenter-args.d.ts +0 -0
- /package/dist/{session → portal/session/human}/presenter-args.js +0 -0
- /package/dist/{session → portal/session/human}/review-store.d.ts +0 -0
- /package/dist/{session → portal/session/human}/review-store.js +0 -0
- /package/dist/{session → portal/session}/last-act.d.ts +0 -0
- /package/dist/{session → portal/session}/last-act.js +0 -0
- /package/dist/{session → portal/session}/lease-visibility.d.ts +0 -0
- /package/dist/{session → portal/session}/lease-visibility.js +0 -0
- /package/dist/{session → portal/session}/no-session-watch.d.ts +0 -0
- /package/dist/{session → portal/session/page-commands}/pending-commands.d.ts +0 -0
- /package/dist/{session → portal/session/page-commands}/pending-commands.js +0 -0
- /package/dist/{session → portal/session/presence}/attachment-history.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/attachment-history.js +0 -0
- /package/dist/{session → portal/session/presence}/lease-availability.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/lease-availability.js +0 -0
- /package/dist/{session → portal/session/presence}/session-lease.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/session-lease.js +0 -0
- /package/dist/{session → portal/session/presence}/session-mirror.d.ts +0 -0
- /package/dist/{session → portal/session/presence}/session-mirror.js +0 -0
- /package/dist/{session → portal/session/presence}/session-recommendation.d.ts +0 -0
- /package/dist/{session → portal/session}/session-info.d.ts +0 -0
- /package/dist/{session → portal/session}/session-info.js +0 -0
- /package/dist/{session → portal/session}/session-reconnect.d.ts +0 -0
- /package/dist/{session → portal/session}/session-reconnect.js +0 -0
- /package/dist/{session → portal/session}/session-successor.d.ts +0 -0
- /package/dist/{session → portal/session}/session-successor.js +0 -0
- /package/dist/{session → portal/session}/stall-clock.d.ts +0 -0
- /package/dist/{session → portal/session}/state-select.d.ts +0 -0
- /package/dist/{session → portal/session}/state-select.js +0 -0
- /package/dist/{session → portal/session/timing}/resolve-within.d.ts +0 -0
- /package/dist/{session → portal/session/timing}/resolve-within.js +0 -0
- /package/dist/{session → portal/session/timing}/wall-clock.d.ts +0 -0
- /package/dist/{session → portal/session/timing}/wall-clock.js +0 -0
- /package/dist/{loopback-agent.d.ts → surface/loopback-agent.d.ts} +0 -0
- /package/dist/{loopback-agent.js → surface/loopback-agent.js} +0 -0
- /package/dist/{mcp → surface/mcp}/attach-memory.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/attach-memory.js +0 -0
- /package/dist/{mcp → surface/mcp/peer}/client-identity.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/peer}/client-identity.js +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/mcp-post-transport.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-backoff.d.ts +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-backoff.js +0 -0
- /package/dist/{mcp → surface/mcp/proxy}/proxy-handshake.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/proxy-idle-exit.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/proxy-idle-exit.js +0 -0
- /package/dist/{mcp → surface/mcp}/shared-params.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/shared-params.js +0 -0
- /package/dist/{mcp → surface/mcp}/sse-frame-parser.d.ts +0 -0
- /package/dist/{mcp → surface/mcp}/sse-frame-parser.js +0 -0
- /package/dist/{tools → surface/tools/act}/act-danger.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-sequence-retry.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-sequence-retry.js +0 -0
- /package/dist/{tools → surface/tools/act}/act-view.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/act-view.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-arrival.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-result.d.ts +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/navigate-result.js +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/reload-result.d.ts +0 -0
- /package/dist/{tools → surface/tools/act/navigation}/reload-result.js +0 -0
- /package/dist/{tools → surface/tools/act}/react-grace.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/react-grace.js +0 -0
- /package/dist/{tools → surface/tools/act}/resolve-target.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/settle-in-flight.d.ts +0 -0
- /package/dist/{tools → surface/tools/act}/settle-in-flight.js +0 -0
- /package/dist/{tools → surface/tools}/act-sequence-tool.d.ts +0 -0
- /package/dist/{tools → surface/tools/args}/alias-args.d.ts +0 -0
- /package/dist/{tools → surface/tools/args}/alias-args.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/coverage-identity.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/coverage-identity.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/observed-nothing.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/observed-nothing.js +0 -0
- /package/dist/{tools → surface/tools/gaps}/sdk-marker-probe.d.ts +0 -0
- /package/dist/{tools → surface/tools/gaps}/sdk-marker-probe.js +0 -0
- /package/dist/{tools → surface/tools}/observe-tools.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/complete-snapshot.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/complete-snapshot.js +0 -0
- /package/dist/{tools → surface/tools/read}/query-paginate.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/query-paginate.js +0 -0
- /package/dist/{tools → surface/tools/read}/query-shape.d.ts +0 -0
- /package/dist/{tools → surface/tools/read}/query-shape.js +0 -0
- /package/dist/{tools → surface/tools}/read-tools.d.ts +0 -0
- /package/dist/{tools → surface/tools}/reconcile-tools.d.ts +0 -0
- /package/dist/{honesty → surface/tools}/tool-hit-rate.d.ts +0 -0
- /package/dist/{tools → surface/tools}/tool-invoker.d.ts +0 -0
- /package/dist/{tools → surface/tools}/tool-invoker.js +0 -0
- /package/dist/{tools → surface/tools}/unadvertised-help.d.ts +0 -0
- /package/dist/{tools → surface/tools}/verify-next-baton.d.ts +0 -0
- /package/docs/{tools-session-and-feedback.mdx → tools/session-and-feedback.mdx} +0 -0
- /package/docs/{tools-tools-and-run.mdx → tools/tools-and-run.mdx} +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page the tutorial drives when the user has no app of their own yet.
|
|
3
|
+
*
|
|
4
|
+
* `reticle tutorial` used to print four steps and stop. Printing is not teaching: the reader is told
|
|
5
|
+
* that a verdict is the point, and then watches nothing produce one. So the tour now RUNS — against a
|
|
6
|
+
* page served from here, because the alternative (drive whatever is in front of the user) is how a
|
|
7
|
+
* first run ends on a login wall, and a tutorial that fails on step one teaches that Reticle does not
|
|
8
|
+
* work.
|
|
9
|
+
*
|
|
10
|
+
* It carries the real SDK, not a stub. A demo instrumented by something other than the thing being
|
|
11
|
+
* demonstrated proves nothing about the thing being demonstrated.
|
|
12
|
+
*
|
|
13
|
+
* WHY THERE IS NO IMPORT MAP WRITTEN DOWN HERE. The SDK is ESM with bare specifiers, the shipped
|
|
14
|
+
* server has no bundler, and the obvious fix — a hand-written map of specifier to path — is the exact
|
|
15
|
+
* defect this repository keeps paying for: two lists that must agree, where the one nobody updated is
|
|
16
|
+
* the one that breaks. A dependency added to the SDK would leave this map short by one, the page
|
|
17
|
+
* would fail to load a module, and the tour would report that the user's setup is broken.
|
|
18
|
+
*
|
|
19
|
+
* So the map is DISCOVERED. Start at the SDK entry, scan the files beside it for bare specifiers,
|
|
20
|
+
* resolve each one, and repeat. It cannot be short by one, because nothing here knows the names.
|
|
21
|
+
*
|
|
22
|
+
* The walk follows imports out of OUR packages only; a third-party one is mounted whole and not
|
|
23
|
+
* read. That is a deliberate line, not an oversight. Reading zod means walking several thousand
|
|
24
|
+
* files to learn something that has not changed in this repository's lifetime, and it measurably
|
|
25
|
+
* cost about a minute — on the one command whose whole job is a good first impression. The drift
|
|
26
|
+
* this guards against is our own SDK gaining a dependency, which is the thing that actually moves;
|
|
27
|
+
* a third-party leaf that grows a bare runtime import would fail loudly on the page instead, which
|
|
28
|
+
* is a worse message but not a silent one.
|
|
29
|
+
*/
|
|
30
|
+
/** The signal the demo app fires when it saves — the consequence the tour declares in advance. */
|
|
31
|
+
export declare const DEMO_SIGNAL = "demo:saved";
|
|
32
|
+
/** Controls the tour points at. Named here so the page and the run cannot disagree about them. */
|
|
33
|
+
export declare const DemoTestId: {
|
|
34
|
+
readonly SAVE: "demo-save";
|
|
35
|
+
readonly NAME: "demo-name";
|
|
36
|
+
readonly STATUS: "demo-status";
|
|
37
|
+
};
|
|
38
|
+
export interface SdkMount {
|
|
39
|
+
/** URL prefix the page fetches under. */
|
|
40
|
+
prefix: string;
|
|
41
|
+
/** Directory on disk it serves from. */
|
|
42
|
+
dir: string;
|
|
43
|
+
}
|
|
44
|
+
export interface SdkGraph {
|
|
45
|
+
/** Bare specifier to the URL the page should load it from. */
|
|
46
|
+
imports: Record<string, string>;
|
|
47
|
+
mounts: SdkMount[];
|
|
48
|
+
/** URL of the SDK entry module itself. */
|
|
49
|
+
entry: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the SDK and everything it reaches, as URLs a page can fetch.
|
|
53
|
+
*
|
|
54
|
+
* `resolve` is injected so a test can describe a dependency graph without one existing on disk —
|
|
55
|
+
* and because the real one is `import.meta.resolve`, which answers against THIS module's location
|
|
56
|
+
* and so cannot be pointed at a fixture.
|
|
57
|
+
*/
|
|
58
|
+
export declare function sdkGraph(resolve?: (spec: string) => string): SdkGraph;
|
|
59
|
+
/**
|
|
60
|
+
* The demo app, and the one line that makes it verifiable.
|
|
61
|
+
*
|
|
62
|
+
* Saving fires a SIGNAL as well as changing the text. Both are here on purpose: the text is what a
|
|
63
|
+
* person sees, the signal is what the app itself says happened, and the tour waits on the signal
|
|
64
|
+
* because that is the difference it exists to teach — a rendered word can be a coincidence, and an
|
|
65
|
+
* app declaring its own state cannot.
|
|
66
|
+
*/
|
|
67
|
+
export declare function demoPageHtml(graph: SdkGraph, token: string, bridgeUrl: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Serve the demo on a port the OS picks.
|
|
70
|
+
*
|
|
71
|
+
* Port 0 rather than a chosen number: this starts while a daemon, a dev server and possibly another
|
|
72
|
+
* copy of this tour are already running, and a tutorial whose first act is a port collision has
|
|
73
|
+
* taught the wrong lesson about the product.
|
|
74
|
+
*/
|
|
75
|
+
export declare function serveDemoPage(html: string, graph: SdkGraph): Promise<{
|
|
76
|
+
url: string;
|
|
77
|
+
close: () => Promise<void>;
|
|
78
|
+
}>;
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page the tutorial drives when the user has no app of their own yet.
|
|
3
|
+
*
|
|
4
|
+
* `reticle tutorial` used to print four steps and stop. Printing is not teaching: the reader is told
|
|
5
|
+
* that a verdict is the point, and then watches nothing produce one. So the tour now RUNS — against a
|
|
6
|
+
* page served from here, because the alternative (drive whatever is in front of the user) is how a
|
|
7
|
+
* first run ends on a login wall, and a tutorial that fails on step one teaches that Reticle does not
|
|
8
|
+
* work.
|
|
9
|
+
*
|
|
10
|
+
* It carries the real SDK, not a stub. A demo instrumented by something other than the thing being
|
|
11
|
+
* demonstrated proves nothing about the thing being demonstrated.
|
|
12
|
+
*
|
|
13
|
+
* WHY THERE IS NO IMPORT MAP WRITTEN DOWN HERE. The SDK is ESM with bare specifiers, the shipped
|
|
14
|
+
* server has no bundler, and the obvious fix — a hand-written map of specifier to path — is the exact
|
|
15
|
+
* defect this repository keeps paying for: two lists that must agree, where the one nobody updated is
|
|
16
|
+
* the one that breaks. A dependency added to the SDK would leave this map short by one, the page
|
|
17
|
+
* would fail to load a module, and the tour would report that the user's setup is broken.
|
|
18
|
+
*
|
|
19
|
+
* So the map is DISCOVERED. Start at the SDK entry, scan the files beside it for bare specifiers,
|
|
20
|
+
* resolve each one, and repeat. It cannot be short by one, because nothing here knows the names.
|
|
21
|
+
*
|
|
22
|
+
* The walk follows imports out of OUR packages only; a third-party one is mounted whole and not
|
|
23
|
+
* read. That is a deliberate line, not an oversight. Reading zod means walking several thousand
|
|
24
|
+
* files to learn something that has not changed in this repository's lifetime, and it measurably
|
|
25
|
+
* cost about a minute — on the one command whose whole job is a good first impression. The drift
|
|
26
|
+
* this guards against is our own SDK gaining a dependency, which is the thing that actually moves;
|
|
27
|
+
* a third-party leaf that grows a bare runtime import would fail loudly on the page instead, which
|
|
28
|
+
* is a worse message but not a silent one.
|
|
29
|
+
*/
|
|
30
|
+
import { fileURLToPath } from 'node:url';
|
|
31
|
+
import { createServer } from 'node:http';
|
|
32
|
+
import { dirname, join, relative, extname, sep } from 'node:path';
|
|
33
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
34
|
+
/** Where the tour starts. Everything else on the page is reached from here. */
|
|
35
|
+
const SDK_ENTRY = '@reticlehq/browser';
|
|
36
|
+
/** The signal the demo app fires when it saves — the consequence the tour declares in advance. */
|
|
37
|
+
export const DEMO_SIGNAL = 'demo:saved';
|
|
38
|
+
/** Controls the tour points at. Named here so the page and the run cannot disagree about them. */
|
|
39
|
+
export const DemoTestId = {
|
|
40
|
+
SAVE: 'demo-save',
|
|
41
|
+
NAME: 'demo-name',
|
|
42
|
+
STATUS: 'demo-status',
|
|
43
|
+
};
|
|
44
|
+
/** What the status line says before anything has been proved. */
|
|
45
|
+
const STATUS_BEFORE = 'nothing saved yet';
|
|
46
|
+
/** Bare specifiers this cannot serve and must not try to: the page is a browser. */
|
|
47
|
+
const NOT_SERVABLE = /^node:/;
|
|
48
|
+
/**
|
|
49
|
+
* The packages whose imports are followed. See the note at the top for why the walk stops here.
|
|
50
|
+
*
|
|
51
|
+
* `open-verification` is listed by NAME because it is ours without being in the scope: it left the
|
|
52
|
+
* org to stand on its own as the specification, and matching on `@reticlehq/` alone would silently
|
|
53
|
+
* demote it to an unscanned third-party leaf. Today its only dependency is zod, which core already
|
|
54
|
+
* pulls in, so nothing would have broken yet — which is exactly the kind of gap that is cheap now
|
|
55
|
+
* and expensive on the day the spec grows a second dependency.
|
|
56
|
+
*/
|
|
57
|
+
const OURS = /^(@reticlehq\/|open-verification$)/;
|
|
58
|
+
const JS_CONTENT_TYPE = 'text/javascript; charset=utf-8';
|
|
59
|
+
const HTML_CONTENT_TYPE = 'text/html; charset=utf-8';
|
|
60
|
+
/**
|
|
61
|
+
* A compiled package's own imports, read off disk.
|
|
62
|
+
*
|
|
63
|
+
* Test files are skipped: `dist` carries compiled specs, and those import `vitest` and `node:fs`,
|
|
64
|
+
* which are not part of what a page loads and would send the walk looking for packages that only
|
|
65
|
+
* exist in this repository.
|
|
66
|
+
*/
|
|
67
|
+
function bareSpecifiersIn(dir) {
|
|
68
|
+
const found = new Set();
|
|
69
|
+
const walk = (at) => {
|
|
70
|
+
for (const name of readdirSync(at)) {
|
|
71
|
+
const path = join(at, name);
|
|
72
|
+
if (statSync(path).isDirectory()) {
|
|
73
|
+
if ('node_modules' !== name)
|
|
74
|
+
walk(path);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (!name.endsWith('.js') || name.endsWith('.test.js'))
|
|
78
|
+
continue;
|
|
79
|
+
for (const match of readFileSync(path, 'utf8').matchAll(/from\s*'([^.'][^']*)'/g)) {
|
|
80
|
+
const spec = match[1];
|
|
81
|
+
if (spec !== undefined && !NOT_SERVABLE.test(spec))
|
|
82
|
+
found.add(spec);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
walk(dir);
|
|
87
|
+
return found;
|
|
88
|
+
}
|
|
89
|
+
/** The directory holding a resolved entry's `package.json` — what has to be mounted whole. */
|
|
90
|
+
function packageRootOf(entryPath) {
|
|
91
|
+
let at = dirname(entryPath);
|
|
92
|
+
for (;;) {
|
|
93
|
+
if (existsSync(join(at, 'package.json')))
|
|
94
|
+
return at;
|
|
95
|
+
const up = dirname(at);
|
|
96
|
+
if (up === at)
|
|
97
|
+
return undefined;
|
|
98
|
+
at = up;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Resolve the SDK and everything it reaches, as URLs a page can fetch.
|
|
103
|
+
*
|
|
104
|
+
* `resolve` is injected so a test can describe a dependency graph without one existing on disk —
|
|
105
|
+
* and because the real one is `import.meta.resolve`, which answers against THIS module's location
|
|
106
|
+
* and so cannot be pointed at a fixture.
|
|
107
|
+
*/
|
|
108
|
+
export function sdkGraph(resolve = defaultResolve) {
|
|
109
|
+
const imports = {};
|
|
110
|
+
const mounts = [];
|
|
111
|
+
const roots = new Map();
|
|
112
|
+
const queue = [SDK_ENTRY];
|
|
113
|
+
const seen = new Set();
|
|
114
|
+
let entry = '';
|
|
115
|
+
while (queue.length > 0) {
|
|
116
|
+
const spec = queue.shift();
|
|
117
|
+
if (spec === undefined || seen.has(spec))
|
|
118
|
+
continue;
|
|
119
|
+
seen.add(spec);
|
|
120
|
+
const entryPath = resolve(spec);
|
|
121
|
+
const root = packageRootOf(entryPath);
|
|
122
|
+
if (root === undefined) {
|
|
123
|
+
throw new Error(`the demo page cannot serve ${spec}: it resolves outside any package`);
|
|
124
|
+
}
|
|
125
|
+
let prefix = roots.get(root);
|
|
126
|
+
if (prefix === undefined) {
|
|
127
|
+
prefix = `/sdk/${String(mounts.length)}/`;
|
|
128
|
+
roots.set(root, prefix);
|
|
129
|
+
mounts.push({ prefix, dir: root });
|
|
130
|
+
}
|
|
131
|
+
const url = prefix + relative(root, entryPath).split(sep).join('/');
|
|
132
|
+
if (SDK_ENTRY === spec)
|
|
133
|
+
entry = url;
|
|
134
|
+
else
|
|
135
|
+
imports[spec] = url;
|
|
136
|
+
if (OURS.test(spec)) {
|
|
137
|
+
for (const next of bareSpecifiersIn(dirname(entryPath)))
|
|
138
|
+
queue.push(next);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return { imports, mounts, entry };
|
|
142
|
+
}
|
|
143
|
+
function defaultResolve(spec) {
|
|
144
|
+
return fileURLToPath(import.meta.resolve(spec));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The demo app, and the one line that makes it verifiable.
|
|
148
|
+
*
|
|
149
|
+
* Saving fires a SIGNAL as well as changing the text. Both are here on purpose: the text is what a
|
|
150
|
+
* person sees, the signal is what the app itself says happened, and the tour waits on the signal
|
|
151
|
+
* because that is the difference it exists to teach — a rendered word can be a coincidence, and an
|
|
152
|
+
* app declaring its own state cannot.
|
|
153
|
+
*/
|
|
154
|
+
export function demoPageHtml(graph, token, bridgeUrl) {
|
|
155
|
+
const importMap = JSON.stringify({ imports: graph.imports });
|
|
156
|
+
const connect = JSON.stringify({ session: 'demo', url: bridgeUrl, token });
|
|
157
|
+
return `<!doctype html>
|
|
158
|
+
<html lang="en"><head><meta charset="utf-8"><title>Reticle demo</title>
|
|
159
|
+
<script type="importmap">${importMap}</script>
|
|
160
|
+
<style>
|
|
161
|
+
body{font:16px/1.5 system-ui,sans-serif;margin:0;padding:2.5rem 1.5rem;max-width:34rem}
|
|
162
|
+
h1{font-size:1.3rem;margin:0 0 .25rem}
|
|
163
|
+
p.lede{color:#555;margin:0 0 2rem}
|
|
164
|
+
label{display:block;font-weight:600;margin:0 0 .4rem}
|
|
165
|
+
input{font:inherit;padding:.5rem .6rem;width:100%;box-sizing:border-box;border:1px solid #bbb;border-radius:6px}
|
|
166
|
+
button{font:inherit;margin-top:1rem;padding:.55rem 1.1rem;border:0;border-radius:6px;background:#111;color:#fff;cursor:pointer}
|
|
167
|
+
p.status{margin-top:1.5rem;padding:.75rem;background:#f4f4f5;border-radius:6px}
|
|
168
|
+
</style></head>
|
|
169
|
+
<body>
|
|
170
|
+
<h1>Reticle demo</h1>
|
|
171
|
+
<p class="lede">A tiny app, instrumented with the real SDK. The tutorial is about to drive it.</p>
|
|
172
|
+
<label for="${DemoTestId.NAME}">Display name</label>
|
|
173
|
+
<input id="${DemoTestId.NAME}" data-testid="${DemoTestId.NAME}" value="Ada">
|
|
174
|
+
<button data-testid="${DemoTestId.SAVE}">Save</button>
|
|
175
|
+
<p class="status" data-testid="${DemoTestId.STATUS}">${STATUS_BEFORE}</p>
|
|
176
|
+
<script type="module">
|
|
177
|
+
import { reticle } from ${JSON.stringify(graph.entry)};
|
|
178
|
+
reticle.connect(${connect});
|
|
179
|
+
const status = document.querySelector('[data-testid="${DemoTestId.STATUS}"]');
|
|
180
|
+
document.querySelector('[data-testid="${DemoTestId.SAVE}"]').addEventListener('click', () => {
|
|
181
|
+
const name = document.querySelector('[data-testid="${DemoTestId.NAME}"]').value;
|
|
182
|
+
status.textContent = 'saved ' + name;
|
|
183
|
+
reticle.signal(${JSON.stringify(DEMO_SIGNAL)}, { name });
|
|
184
|
+
});
|
|
185
|
+
</script>
|
|
186
|
+
</body></html>`;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Serve the demo on a port the OS picks.
|
|
190
|
+
*
|
|
191
|
+
* Port 0 rather than a chosen number: this starts while a daemon, a dev server and possibly another
|
|
192
|
+
* copy of this tour are already running, and a tutorial whose first act is a port collision has
|
|
193
|
+
* taught the wrong lesson about the product.
|
|
194
|
+
*/
|
|
195
|
+
export function serveDemoPage(html, graph) {
|
|
196
|
+
const server = createServer((req, res) => {
|
|
197
|
+
const path = (req.url ?? '/').split('?')[0] ?? '/';
|
|
198
|
+
if ('/' === path) {
|
|
199
|
+
res.writeHead(200, { 'content-type': HTML_CONTENT_TYPE });
|
|
200
|
+
res.end(html);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
for (const mount of graph.mounts) {
|
|
204
|
+
if (!path.startsWith(mount.prefix))
|
|
205
|
+
continue;
|
|
206
|
+
const file = join(mount.dir, path.slice(mount.prefix.length));
|
|
207
|
+
// A request that climbed out of the mount is not served, whatever it points at.
|
|
208
|
+
if (!file.startsWith(mount.dir + sep) || !existsSync(file) || statSync(file).isDirectory()) {
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
res.writeHead(200, {
|
|
212
|
+
'content-type': '.js' === extname(file) ? JS_CONTENT_TYPE : 'application/octet-stream',
|
|
213
|
+
});
|
|
214
|
+
res.end(readFileSync(file));
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
res.writeHead(404);
|
|
218
|
+
res.end('not found');
|
|
219
|
+
});
|
|
220
|
+
return new Promise((resolve, reject) => {
|
|
221
|
+
server.once('error', reject);
|
|
222
|
+
server.listen(0, '127.0.0.1', () => {
|
|
223
|
+
const address = server.address();
|
|
224
|
+
if (null === address || 'string' === typeof address) {
|
|
225
|
+
reject(new Error('the demo page could not be served: no port was assigned'));
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
resolve({
|
|
229
|
+
url: `http://127.0.0.1:${String(address.port)}/`,
|
|
230
|
+
close: () => new Promise((done) => {
|
|
231
|
+
server.close(() => {
|
|
232
|
+
done();
|
|
233
|
+
});
|
|
234
|
+
}),
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tutorial, run rather than printed.
|
|
3
|
+
*
|
|
4
|
+
* `reticle tutorial` described four steps and produced nothing. The last of those steps says that a
|
|
5
|
+
* drive without a verdict has no result — and the tour itself ended without one, which is the lesson
|
|
6
|
+
* taught by counter-example. So the same four steps now execute, against the demo page, and every
|
|
7
|
+
* line the reader sees is a thing that actually happened.
|
|
8
|
+
*
|
|
9
|
+
* The steps are NOT re-listed here. They come from `tutorialScript`, the same source the printed tour
|
|
10
|
+
* reads, because two descriptions of one sequence drift and the one nobody updated is the one
|
|
11
|
+
* somebody follows.
|
|
12
|
+
*
|
|
13
|
+
* Tools are called in-process rather than over the daemon's MCP transport. This command starts the
|
|
14
|
+
* daemon it drives, so it already holds the session; going back out over a socket to reach a server
|
|
15
|
+
* inside this process would add a transport that can fail to a tour whose job is to not fail. The
|
|
16
|
+
* funnel telemetry is unaffected either way — `runTool` is the chokepoint that reports it, and both
|
|
17
|
+
* routes pass through it.
|
|
18
|
+
*/
|
|
19
|
+
export interface DemoTourOptions {
|
|
20
|
+
port: number;
|
|
21
|
+
headless: boolean;
|
|
22
|
+
/** Every line the reader sees, in order. Injected so a test reads the tour instead of a terminal. */
|
|
23
|
+
say: (line: string) => void;
|
|
24
|
+
now?: () => number;
|
|
25
|
+
}
|
|
26
|
+
/** A tour either reached a verdict or it did not; the exit code says which. */
|
|
27
|
+
export interface DemoTourResult {
|
|
28
|
+
code: number;
|
|
29
|
+
verified: string | undefined;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Run the tour, and report whether it ended at a proof.
|
|
33
|
+
*
|
|
34
|
+
* A step that cannot be taken stops the tour and says which one. Carrying on past a failed step
|
|
35
|
+
* would end at a verdict taken against a page the earlier steps never reached — which is precisely
|
|
36
|
+
* the false green the fourth step is there to warn about.
|
|
37
|
+
*/
|
|
38
|
+
export declare function runDemoTour(options: DemoTourOptions): Promise<DemoTourResult>;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tutorial, run rather than printed.
|
|
3
|
+
*
|
|
4
|
+
* `reticle tutorial` described four steps and produced nothing. The last of those steps says that a
|
|
5
|
+
* drive without a verdict has no result — and the tour itself ended without one, which is the lesson
|
|
6
|
+
* taught by counter-example. So the same four steps now execute, against the demo page, and every
|
|
7
|
+
* line the reader sees is a thing that actually happened.
|
|
8
|
+
*
|
|
9
|
+
* The steps are NOT re-listed here. They come from `tutorialScript`, the same source the printed tour
|
|
10
|
+
* reads, because two descriptions of one sequence drift and the one nobody updated is the one
|
|
11
|
+
* somebody follows.
|
|
12
|
+
*
|
|
13
|
+
* Tools are called in-process rather than over the daemon's MCP transport. This command starts the
|
|
14
|
+
* daemon it drives, so it already holds the session; going back out over a socket to reach a server
|
|
15
|
+
* inside this process would add a transport that can fail to a tour whose job is to not fail. The
|
|
16
|
+
* funnel telemetry is unaffected either way — `runTool` is the chokepoint that reports it, and both
|
|
17
|
+
* routes pass through it.
|
|
18
|
+
*/
|
|
19
|
+
import { ReticleTool } from '@reticlehq/core';
|
|
20
|
+
// TOOLS comes through the package barrel rather than from `surface/tools/tools.js` directly. That
|
|
21
|
+
// aggregator composes the tool arrays out of five directories, and anything importing it back is how
|
|
22
|
+
// this package accumulated cycles; the barrel sits above both it and this file, which is the
|
|
23
|
+
// direction that does not close a loop.
|
|
24
|
+
import { start, TOOLS } from '../../../index.js';
|
|
25
|
+
import { runTool } from '../../../surface/tools/invoke-tool.js';
|
|
26
|
+
import { buildVerifyDeps } from '../cli-verify.js';
|
|
27
|
+
import { readOrCreatePairingTokenSync, defaultPairingTokenDir, } from '../../../portal/bridge/pairing-token.js';
|
|
28
|
+
import { tutorialScript, TutorialAudience, demoPlan } from '../tutorial.js';
|
|
29
|
+
import { sdkGraph, demoPageHtml, serveDemoPage, DEMO_SIGNAL } from './demo-page.js';
|
|
30
|
+
/** How long to wait for the demo page to dial the bridge before giving up on it. */
|
|
31
|
+
const SESSION_TIMEOUT_MS = 30_000;
|
|
32
|
+
const SESSION_POLL_MS = 250;
|
|
33
|
+
/** Only `verified: "yes"` is a pass — see the contract every verdict tool here is held to. */
|
|
34
|
+
const PROVED = 'yes';
|
|
35
|
+
function toolNamed(name) {
|
|
36
|
+
const found = TOOLS.find((t) => t.name === name);
|
|
37
|
+
if (found === undefined) {
|
|
38
|
+
throw new Error(`the tutorial cannot run: ${name} is not in the tool registry`);
|
|
39
|
+
}
|
|
40
|
+
return found;
|
|
41
|
+
}
|
|
42
|
+
function asRecord(value) {
|
|
43
|
+
return 'object' === typeof value && null !== value ? value : {};
|
|
44
|
+
}
|
|
45
|
+
function asText(value) {
|
|
46
|
+
return 'string' === typeof value ? value : undefined;
|
|
47
|
+
}
|
|
48
|
+
/** The controls `reticle_query` found, in the shape the safety rule reads them. */
|
|
49
|
+
function controlsIn(result) {
|
|
50
|
+
const raw = asRecord(result)['elements'];
|
|
51
|
+
if (!Array.isArray(raw))
|
|
52
|
+
return [];
|
|
53
|
+
const out = [];
|
|
54
|
+
for (const item of raw) {
|
|
55
|
+
const el = asRecord(item);
|
|
56
|
+
const ref = asText(el['ref']);
|
|
57
|
+
const name = asText(el['name']);
|
|
58
|
+
if (ref === undefined || name === undefined)
|
|
59
|
+
continue;
|
|
60
|
+
const role = asText(el['role']);
|
|
61
|
+
out.push(role === undefined ? { ref, name } : { ref, name, role });
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
async function waitForSession(running, now) {
|
|
66
|
+
const deadline = now() + SESSION_TIMEOUT_MS;
|
|
67
|
+
while (now() < deadline) {
|
|
68
|
+
if (running.bridge.sessions.count() > 0)
|
|
69
|
+
return true;
|
|
70
|
+
await new Promise((resolve) => setTimeout(resolve, SESSION_POLL_MS));
|
|
71
|
+
}
|
|
72
|
+
return running.bridge.sessions.count() > 0;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Run the tour, and report whether it ended at a proof.
|
|
76
|
+
*
|
|
77
|
+
* A step that cannot be taken stops the tour and says which one. Carrying on past a failed step
|
|
78
|
+
* would end at a verdict taken against a page the earlier steps never reached — which is precisely
|
|
79
|
+
* the false green the fourth step is there to warn about.
|
|
80
|
+
*/
|
|
81
|
+
export async function runDemoTour(options) {
|
|
82
|
+
const now = options.now ?? (() => Date.now());
|
|
83
|
+
const steps = new Map(tutorialScript(TutorialAudience.HUMAN).map((s) => [s.id, s]));
|
|
84
|
+
const announce = (id) => {
|
|
85
|
+
const step = steps.get(id);
|
|
86
|
+
if (step === undefined)
|
|
87
|
+
return;
|
|
88
|
+
options.say('');
|
|
89
|
+
options.say(step.say);
|
|
90
|
+
options.say(` why: ${step.why}`);
|
|
91
|
+
};
|
|
92
|
+
const graph = sdkGraph();
|
|
93
|
+
const token = readOrCreatePairingTokenSync(defaultPairingTokenDir()) ?? '';
|
|
94
|
+
const bridgeUrl = `ws://localhost:${String(options.port)}/reticle`;
|
|
95
|
+
const page = await serveDemoPage(demoPageHtml(graph, token, bridgeUrl), graph);
|
|
96
|
+
let running;
|
|
97
|
+
try {
|
|
98
|
+
running = await start({ port: options.port, driveUrl: page.url, headless: options.headless });
|
|
99
|
+
const deps = buildVerifyDeps(running, process.cwd(), now);
|
|
100
|
+
const call = async (name, args) => await runTool(toolNamed(name), deps, args);
|
|
101
|
+
announce('connect');
|
|
102
|
+
if (!(await waitForSession(running, now))) {
|
|
103
|
+
options.say(' the demo page never dialled the bridge, so there is nothing to show.');
|
|
104
|
+
return { code: 1, verified: undefined };
|
|
105
|
+
}
|
|
106
|
+
options.say(` one session connected: the demo app at ${page.url}`);
|
|
107
|
+
announce('look');
|
|
108
|
+
const snapshot = asRecord(await call(ReticleTool.SNAPSHOT, { mode: 'interactive' }));
|
|
109
|
+
for (const line of (asText(snapshot['tree']) ?? '').split('\n'))
|
|
110
|
+
options.say(` ${line}`);
|
|
111
|
+
announce('declare');
|
|
112
|
+
const found = controlsIn(await call(ReticleTool.QUERY, { role: 'button' }));
|
|
113
|
+
const plan = demoPlan(found);
|
|
114
|
+
if (!plan.ok) {
|
|
115
|
+
options.say(` ${plan.because}`);
|
|
116
|
+
return { code: 1, verified: undefined };
|
|
117
|
+
}
|
|
118
|
+
options.say(` "${plan.name}" is safe to press. Saving should make the app say so itself:`);
|
|
119
|
+
options.say(` reticle_act_and_wait { ref: "${plan.ref}", action: "click", until: {`);
|
|
120
|
+
options.say(` kind: "signal", name: "${DEMO_SIGNAL}" } }`);
|
|
121
|
+
announce('verdict');
|
|
122
|
+
const verdict = asRecord(await call(ReticleTool.ACT_AND_WAIT, {
|
|
123
|
+
ref: plan.ref,
|
|
124
|
+
action: 'click',
|
|
125
|
+
until: { kind: 'signal', name: DEMO_SIGNAL },
|
|
126
|
+
}));
|
|
127
|
+
const verified = asText(verdict['verified']);
|
|
128
|
+
const because = asText(verdict['verifiedReason']) ?? asText(verdict['failureReason']);
|
|
129
|
+
options.say(` verified: ${verified ?? 'unknown'}`);
|
|
130
|
+
if (because !== undefined)
|
|
131
|
+
options.say(` because: ${because}`);
|
|
132
|
+
return { code: PROVED === verified ? 0 : 1, verified };
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
await page.close();
|
|
136
|
+
await running?.close?.();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What `doctor` says about the daemon it found — pure, so it can be tested without a socket.
|
|
3
|
+
*
|
|
4
|
+
* Doctor already stopped lying about the PORT: `probePresence` separates "a daemon is here" from "a
|
|
5
|
+
* stranger holds it" from "nothing is listening", which was the load-bearing half of the report. It
|
|
6
|
+
* still did not say WHICH daemon, though the `/status` payload it already fetches carries `version`
|
|
7
|
+
* and `contract` and it discarded both.
|
|
8
|
+
*
|
|
9
|
+
* That is the gap worth closing, because skew is invisible everywhere else: a CLI and a daemon on
|
|
10
|
+
* different contracts connect anyway and then disagree about behaviour, which reaches the agent as a
|
|
11
|
+
* bare `-32000` naming no version at all. Doctor is the command a human runs at exactly that moment.
|
|
12
|
+
*
|
|
13
|
+
* Same split as `classifyPort`/`probePresence`: the rule lives here and is tested; the fetching stays
|
|
14
|
+
* at the call site.
|
|
15
|
+
*/
|
|
16
|
+
import { describeSkew } from '../../version/version-skew.js';
|
|
17
|
+
import { DoctorRow, doctorRow } from './doctor-rows.js';
|
|
18
|
+
/**
|
|
19
|
+
* `reticle stop`, not `reticle kill`.
|
|
20
|
+
*
|
|
21
|
+
* The first version of this said `reticle kill`, which this CLI does not dispatch — it is a proposal
|
|
22
|
+
* (#114), described as a gap in docs/system-map.md, and I read it there as if it shipped. A remedy
|
|
23
|
+
* naming a command that errors is a second dead end handed to someone already stuck, on the one
|
|
24
|
+
* command they run when they are confused.
|
|
25
|
+
*/
|
|
26
|
+
const FIX = 'Restart it so both ends are the same build: `reticle stop`, then let your agent reconnect (it ' +
|
|
27
|
+
'spawns a fresh daemon on the next tool call).';
|
|
28
|
+
/**
|
|
29
|
+
* Build the daemon line for a port that answered `/status`.
|
|
30
|
+
*
|
|
31
|
+
* `pid` comes from the pid file and is genuinely optional — a daemon started by another user, or one
|
|
32
|
+
* whose pid file was cleaned up, still answers. Printing `(pid null)` would be worse than printing
|
|
33
|
+
* nothing, which is the same class of mistake as the port lie this command already fixed.
|
|
34
|
+
*/
|
|
35
|
+
export function daemonLine(port, pid, peer, self) {
|
|
36
|
+
const parts = [];
|
|
37
|
+
if (null !== pid)
|
|
38
|
+
parts.push(`pid ${String(pid)}`);
|
|
39
|
+
if (peer.version !== undefined)
|
|
40
|
+
parts.push(`v${peer.version}`);
|
|
41
|
+
const detail = 0 === parts.length ? '' : ` (${parts.join(', ')})`;
|
|
42
|
+
const skew = describeSkew({ what: 'the daemon on this port', version: peer.version, contract: peer.contract, fix: FIX }, self);
|
|
43
|
+
const line = {
|
|
44
|
+
text: doctorRow(DoctorRow.DAEMON, `✓ running on :${String(port)}${detail}`),
|
|
45
|
+
};
|
|
46
|
+
return skew === undefined ? line : { ...line, skew };
|
|
47
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The row labels `reticle doctor` can print, and the one place that pads them into a column.
|
|
3
|
+
*
|
|
4
|
+
* These were free strings before, hand-padded at every call site across three modules
|
|
5
|
+
* (`cli-doctor.ts`, `doctor-daemon-line.ts`, `doctor-sessions-line.ts`). Two problems with that,
|
|
6
|
+
* and the second is the one that motivated #340:
|
|
7
|
+
*
|
|
8
|
+
* 1. The padding was maintained by eye. Every label happened to be padded to the same column, but
|
|
9
|
+
* nothing enforced it, and a label longer than the column would have quietly broken the
|
|
10
|
+
* alignment of one row in a checklist whose whole readability is the column.
|
|
11
|
+
* 2. Nothing connected the labels to the docs pages that reproduce doctor's output. A row could be
|
|
12
|
+
* added, renamed or removed and the three pages showing sample output would go on describing the
|
|
13
|
+
* old vocabulary, with no gate noticing. `doctor` is the command a stuck user runs, and the docs
|
|
14
|
+
* are what they read when its output does not match what they were told to expect.
|
|
15
|
+
*
|
|
16
|
+
* The label set is exported so the docs guard can derive its expectation from the command rather
|
|
17
|
+
* than from a hand-kept list, which is the direction that catches the case that actually bites: a
|
|
18
|
+
* row added and never documented.
|
|
19
|
+
*
|
|
20
|
+
* NOT every row prints on every run. `version` prints only on skew, `port check` only on a
|
|
21
|
+
* mismatch, `sibling` only when a well-known Reticle port other than ours has a listener,
|
|
22
|
+
* `desktop` only on a desktop project, and `sessions` only when a daemon answered. The
|
|
23
|
+
* vocabulary is therefore "what this command can print", not "what one run printed" — a guard built
|
|
24
|
+
* by scraping a single invocation would silently stop covering the conditional rows, which are
|
|
25
|
+
* exactly the ones a reader is least likely to have seen before.
|
|
26
|
+
*/
|
|
27
|
+
/** Every row label `doctor` can emit. Values are the literal text at the head of the row. */
|
|
28
|
+
export declare const DoctorRow: {
|
|
29
|
+
readonly NODE: "node";
|
|
30
|
+
readonly CHROMIUM: "chromium";
|
|
31
|
+
readonly DAEMON: "daemon";
|
|
32
|
+
readonly VERSION: "version";
|
|
33
|
+
readonly SESSIONS: "sessions";
|
|
34
|
+
/**
|
|
35
|
+
* The agent-to-daemon hop, which every other row here is blind to.
|
|
36
|
+
*
|
|
37
|
+
* Reported from the field: a user with the SDK injected, the overlay visible, a live session on
|
|
38
|
+
* the daemon and every tool listed in their client was still told by three separate agents that
|
|
39
|
+
* Reticle was not present. Their words: "four green checkmarks that don't add up to a working
|
|
40
|
+
* verification." Every row in this list checks a COMPONENT; none checked a LINK.
|
|
41
|
+
*/
|
|
42
|
+
readonly AGENT_LINK: "agent link";
|
|
43
|
+
/**
|
|
44
|
+
* Which of `localhost`'s two answers reaches the bridge, printed only when they disagree.
|
|
45
|
+
*
|
|
46
|
+
* The daemon binds `127.0.0.1` and `loopback-alias.ts` forwards `[::1]` to it, best-effort —
|
|
47
|
+
* a machine with IPv6 off, or something already holding `[::1]:port`, leaves the daemon serving
|
|
48
|
+
* IPv4 alone and must not be fatal. But `localhost` is a NAME, and Windows Chrome tries the IPv6
|
|
49
|
+
* answer first, so on that combination the SDK's documented default URL cannot reach a daemon that
|
|
50
|
+
* is running perfectly. The only record of the alias failing was a field on one JSON log line.
|
|
51
|
+
*
|
|
52
|
+
* Conditional like `version`: a healthy machine answers on both and prints nothing.
|
|
53
|
+
*/
|
|
54
|
+
readonly LOOPBACK: "loopback";
|
|
55
|
+
readonly BRIDGE_PORT: "bridge port";
|
|
56
|
+
readonly PORT_CHECK: "port check";
|
|
57
|
+
readonly SIBLING: "sibling";
|
|
58
|
+
readonly DAEMON_LOG: "daemon log";
|
|
59
|
+
readonly TRACING: "tracing";
|
|
60
|
+
readonly DESKTOP: "desktop";
|
|
61
|
+
};
|
|
62
|
+
type DoctorRowLabel = (typeof DoctorRow)[keyof typeof DoctorRow];
|
|
63
|
+
export declare const DOCTOR_ROW_LABELS: readonly DoctorRowLabel[];
|
|
64
|
+
/**
|
|
65
|
+
* Width the label column pads to.
|
|
66
|
+
*
|
|
67
|
+
* Derived from the longest label rather than hardcoded, so adding a longer row realigns the whole
|
|
68
|
+
* checklist instead of breaking one line of it. With the current set the longest is `bridge port`
|
|
69
|
+
* (11), so this is 13 — byte-identical to the hand-padding it replaces. A test pins that, so a
|
|
70
|
+
* change to the column is a deliberate, visible change rather than an invisible reflow.
|
|
71
|
+
*/
|
|
72
|
+
export declare const LABEL_COLUMN: number;
|
|
73
|
+
/** Build one `doctor` row: the standard indent, the label padded to the column, then `rest`. */
|
|
74
|
+
export declare function doctorRow(label: DoctorRowLabel, rest: string): string;
|
|
75
|
+
export {};
|