@reticlehq/server 3.6.0 → 3.7.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 +122 -123
- package/dist/command/cli/adhoc-suite.d.ts +14 -0
- package/dist/command/cli/adhoc-suite.js +42 -7
- package/dist/command/cli/adhoc-verdict.d.ts +18 -2
- package/dist/command/cli/adhoc-verdict.js +70 -6
- package/dist/command/cli/answers/gate-exit.d.ts +23 -0
- package/dist/command/cli/answers/gate-exit.js +45 -0
- package/dist/command/cli/answers/gate-hook-message.d.ts +2 -0
- package/dist/command/cli/answers/gate-hook-message.js +3 -1
- package/dist/command/cli/auth/device-flow.d.ts +13 -2
- package/dist/command/cli/auth/device-flow.js +17 -0
- package/dist/command/cli/cli-doctor.js +14 -0
- package/dist/command/cli/cli-flow-commands.d.ts +0 -11
- package/dist/command/cli/cli-flow-commands.js +28 -105
- package/dist/command/cli/cli-kill.js +3 -2
- package/dist/command/cli/cli-parse-grammar.d.ts +24 -0
- package/dist/command/cli/cli-parse-grammar.js +75 -0
- package/dist/command/cli/cli-parse-verify.d.ts +2 -0
- package/dist/command/cli/cli-parse-verify.js +18 -0
- package/dist/command/cli/cli-parse.d.ts +19 -28
- package/dist/command/cli/cli-parse.js +82 -182
- package/dist/command/cli/cli-update-commands.d.ts +1 -1
- package/dist/command/cli/cli-update-commands.js +61 -9
- package/dist/command/cli/cli-usage.d.ts +33 -0
- package/dist/command/cli/cli-usage.js +287 -0
- package/dist/command/cli/cli-verify.d.ts +34 -4
- package/dist/command/cli/cli-verify.js +81 -12
- package/dist/command/cli/cloud-cli.d.ts +13 -0
- package/dist/command/cli/cloud-cli.js +145 -333
- package/dist/command/cli/cloud-kit.d.ts +12 -0
- package/dist/command/cli/cloud-kit.js +41 -2
- package/dist/command/cli/cloud-link.d.ts +57 -0
- package/dist/command/cli/cloud-link.js +308 -0
- package/dist/command/cli/cloud-login.d.ts +15 -1
- package/dist/command/cli/cloud-login.js +67 -13
- package/dist/command/cli/context-command.d.ts +1 -0
- package/dist/command/cli/context-command.js +33 -0
- package/dist/command/cli/daemon-start-options.d.ts +3 -0
- package/dist/command/cli/daemon-start-options.js +24 -3
- package/dist/command/cli/doctor/doctor-coverage-line.d.ts +2 -0
- package/dist/command/cli/doctor/doctor-coverage-line.js +47 -0
- package/dist/command/cli/doctor/doctor-project-line.d.ts +0 -12
- package/dist/command/cli/doctor/doctor-project-line.js +5 -4
- package/dist/command/cli/doctor/doctor-rows.d.ts +6 -0
- package/dist/command/cli/doctor/doctor-rows.js +6 -0
- package/dist/command/cli/doctor/doctor-signing-line.d.ts +38 -0
- package/dist/command/cli/doctor/doctor-signing-line.js +114 -0
- package/dist/command/cli/known-regression.d.ts +13 -0
- package/dist/command/cli/known-regression.js +34 -0
- package/dist/command/cli/launch/sdk-version-match.d.ts +12 -0
- package/dist/command/cli/launch/sdk-version-match.js +25 -0
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +11 -2
- package/dist/command/cli/mcp-command.d.ts +6 -0
- package/dist/command/cli/mcp-command.js +13 -5
- package/dist/command/cli/ports/port-holder.js +1 -1
- package/dist/command/cli/project-name.d.ts +29 -1
- package/dist/command/cli/project-name.js +107 -2
- package/dist/command/cli/setup-mcp-cli.d.ts +17 -1
- package/dist/command/cli/setup-mcp-cli.js +29 -8
- package/dist/command/cli/status/status-lines.d.ts +1 -0
- package/dist/command/cli/status/status-lines.js +47 -2
- package/dist/command/cli/status/workspace-links.d.ts +10 -0
- package/dist/command/cli/status/workspace-links.js +29 -0
- package/dist/command/cli/try-command.d.ts +96 -0
- package/dist/command/cli/try-command.js +362 -0
- package/dist/command/cli/tutorial.d.ts +0 -100
- package/dist/command/cli/tutorial.js +0 -178
- package/dist/command/cli/verify-results.d.ts +19 -0
- package/dist/command/cli/verify-results.js +29 -0
- package/dist/command/cli-onboarding.d.ts +0 -11
- package/dist/command/cli-onboarding.js +0 -15
- package/dist/command/cli.d.ts +14 -0
- package/dist/command/cli.js +103 -83
- package/dist/command/daemon/daemon-resilience.js +4 -4
- package/dist/command/daemon/daemon-resolve.d.ts +9 -1
- package/dist/command/daemon/daemon-resolve.js +49 -10
- package/dist/command/setup/bringup/bridge-port.d.ts +3 -1
- package/dist/command/setup/bringup/bridge-port.js +13 -3
- package/dist/command/setup/bringup/dev-server-log-cap.js +2 -0
- package/dist/command/setup/bringup/ensure-daemon.js +9 -2
- package/dist/command/setup/init/agent-restart.d.ts +23 -0
- package/dist/command/setup/init/agent-restart.js +28 -0
- package/dist/command/setup/init/init-port.d.ts +10 -1
- package/dist/command/setup/init/init-port.js +22 -2
- package/dist/command/setup/init/init-runtime.d.ts +12 -2
- package/dist/command/setup/init/init-runtime.js +96 -37
- package/dist/command/setup/node-effects.d.ts +2 -0
- package/dist/command/setup/node-effects.js +36 -8
- package/dist/command/setup/probe/existing-app.d.ts +12 -0
- package/dist/command/setup/probe/existing-app.js +14 -0
- package/dist/command/setup/remaining-steps.js +1 -1
- package/dist/command/setup/run-setup.d.ts +29 -9
- package/dist/command/setup/run-setup.js +34 -28
- package/dist/command/setup/setup-command.d.ts +23 -0
- package/dist/command/setup/setup-command.js +57 -4
- package/dist/command/setup/setup-mcp.js +25 -2
- package/dist/command/setup/tauri-signing.d.ts +19 -0
- package/dist/command/setup/tauri-signing.js +79 -0
- package/dist/command/setup/terminal/listeners.d.ts +10 -1
- package/dist/command/setup/terminal/listeners.js +37 -6
- package/dist/command/update/update-nudge.d.ts +9 -0
- package/dist/command/update/update-nudge.js +1 -1
- package/dist/command/update/updater.js +11 -15
- package/dist/command/version/version-nudge.js +3 -0
- package/dist/command/version/version-skew.d.ts +20 -1
- package/dist/command/version/version-skew.js +38 -2
- package/dist/features/crawl/crawl.js +14 -1
- package/dist/features/exhaust/ledger.d.ts +14 -14
- package/dist/features/harness/drive-report.d.ts +39 -5
- package/dist/features/harness/drive-report.js +271 -54
- package/dist/features/harness/drive-runs.d.ts +120 -0
- package/dist/features/harness/drive-runs.js +289 -0
- package/dist/features/harness/drivers.d.ts +1 -1
- package/dist/features/harness/drivers.js +1 -1
- package/dist/features/harness/explore/console-pages.d.ts +15 -0
- package/dist/features/harness/explore/console-pages.js +146 -0
- package/dist/features/harness/explore/disparity.d.ts +19 -0
- package/dist/features/harness/explore/disparity.js +71 -0
- package/dist/features/harness/explore/fake-app.d.ts +16 -0
- package/dist/features/harness/explore/fake-app.js +49 -0
- package/dist/features/harness/explore/goal-search.d.ts +26 -0
- package/dist/features/harness/explore/goal-search.js +144 -0
- package/dist/features/harness/explore/page-tree.d.ts +49 -0
- package/dist/features/harness/explore/page-tree.js +148 -0
- package/dist/features/harness/explore/site-map.d.ts +34 -0
- package/dist/features/harness/explore/site-map.js +150 -0
- package/dist/features/harness/goals.d.ts +68 -7
- package/dist/features/harness/goals.js +289 -36
- package/dist/features/harness/harness.d.ts +30 -1
- package/dist/features/harness/harness.js +141 -7
- package/dist/features/harness/platform/local-apps.d.ts +36 -3
- package/dist/features/harness/platform/local-apps.js +81 -5
- package/dist/features/harness/platform/persona-credentials.d.ts +20 -0
- package/dist/features/harness/platform/persona-credentials.js +69 -0
- package/dist/features/harness/platform/platform-drives.d.ts +61 -0
- package/dist/features/harness/platform/platform-drives.js +114 -0
- package/dist/features/harness/platform/refusal.d.ts +52 -0
- package/dist/features/harness/platform/refusal.js +71 -0
- package/dist/features/harness/platform/remote-drive.d.ts +8 -2
- package/dist/features/harness/platform/remote-drive.js +22 -9
- package/dist/features/harness/platform/script.d.ts +57 -11
- package/dist/features/harness/platform/script.js +144 -12
- package/dist/features/harness/platform/server-driver.d.ts +17 -4
- package/dist/features/harness/platform/server-driver.js +29 -26
- package/dist/features/harness/platform-config.d.ts +38 -5
- package/dist/features/harness/platform-config.js +93 -8
- package/dist/features/harness/route-guess.d.ts +13 -0
- package/dist/features/harness/route-guess.js +49 -0
- package/dist/features/harness/script/script-run.d.ts +30 -1
- package/dist/features/harness/script/script-run.js +355 -48
- package/dist/features/license/license.d.ts +2 -2
- package/dist/features/visual/step-shots.d.ts +31 -0
- package/dist/features/visual/step-shots.js +231 -0
- package/dist/features/visual/visual-tools.js +22 -14
- package/dist/hooks/client-directory.d.ts +18 -0
- package/dist/hooks/client-directory.js +57 -0
- package/dist/hooks/coding-agents.d.ts +34 -0
- package/dist/hooks/coding-agents.js +117 -0
- package/dist/hooks/driven-by.d.ts +21 -2
- package/dist/hooks/driven-by.js +42 -2
- package/dist/hooks/hook-bus.d.ts +4 -0
- package/dist/hooks/hook-bus.js +18 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26 -183
- package/dist/judgement/capsule/capsule-store.d.ts +2 -2
- package/dist/judgement/capsule/causal-summary.d.ts +15 -1
- package/dist/judgement/capsule/causal-summary.js +33 -0
- package/dist/judgement/runs/artifact/build-verification-run.d.ts +1 -1
- package/dist/judgement/runs/artifact/build-verification-run.js +20 -4
- package/dist/judgement/runs/artifact/gap-summary.d.ts +0 -18
- package/dist/judgement/runs/artifact/gap-summary.js +12 -3
- package/dist/judgement/runs/artifact/replay-mapping.js +25 -9
- package/dist/judgement/runs/artifact/run-store.d.ts +13 -1
- package/dist/judgement/runs/artifact/run-store.js +175 -8
- package/dist/judgement/runs/context-tools.js +59 -1
- package/dist/judgement/runs/default-run-id.d.ts +3 -0
- package/dist/judgement/runs/default-run-id.js +16 -0
- package/dist/judgement/runs/drive-run.d.ts +53 -5
- package/dist/judgement/runs/drive-run.js +234 -20
- package/dist/judgement/runs/resume.d.ts +44 -0
- package/dist/judgement/runs/resume.js +137 -0
- package/dist/judgement/runs/reticle-runner.js +5 -2
- package/dist/judgement/runs/runner-port.d.ts +5 -1
- package/dist/judgement/runs/runner-port.js +8 -2
- package/dist/judgement/runs/verification-sync.d.ts +2 -0
- package/dist/judgement/runs/verification-sync.js +36 -15
- package/dist/language/flows/decision.js +2 -1
- package/dist/language/flows/fields/flow-secret-field.d.ts +12 -0
- package/dist/language/flows/fields/flow-secret-field.js +25 -2
- package/dist/language/flows/flow-anchor.d.ts +7 -2
- package/dist/language/flows/flow-anchor.js +10 -3
- package/dist/language/flows/flow-intent.d.ts +1 -0
- package/dist/language/flows/flow-journey.d.ts +6 -0
- package/dist/language/flows/flow-journey.js +20 -0
- package/dist/language/flows/flow-learning.d.ts +4 -0
- package/dist/language/flows/flow-learning.js +37 -3
- package/dist/language/flows/flow-replay-run.js +16 -18
- package/dist/language/flows/flow-replay-types.d.ts +1 -1
- package/dist/language/flows/flow-replay.d.ts +18 -1
- package/dist/language/flows/flow-replay.js +22 -7
- package/dist/language/flows/flow-result.d.ts +22 -1
- package/dist/language/flows/flow-result.js +47 -2
- package/dist/language/flows/flow-step-runners.d.ts +2 -0
- package/dist/language/flows/flow-step-runners.js +12 -6
- package/dist/language/flows/flow-store-for-session.js +5 -1
- package/dist/language/flows/flow-tools.d.ts +10 -0
- package/dist/language/flows/flow-tools.js +61 -62
- package/dist/language/flows/flows.d.ts +16 -1
- package/dist/language/flows/flows.js +69 -10
- package/dist/language/flows/narrow-write.d.ts +7 -0
- package/dist/language/flows/narrow-write.js +36 -1
- package/dist/language/flows/recording/recording-backtrack.js +14 -1
- package/dist/language/flows/recording/tape/recordings.d.ts +29 -1
- package/dist/language/flows/recording/tape/recordings.js +60 -10
- package/dist/language/flows/replay.js +29 -6
- package/dist/language/flows/single-replay.d.ts +7 -0
- package/dist/language/flows/single-replay.js +26 -0
- package/dist/language/flows/verify-change-tools.d.ts +1 -0
- package/dist/language/flows/verify-change-tools.js +200 -193
- package/dist/memory/cloud/cloud-config.d.ts +10 -1
- package/dist/memory/cloud/cloud-config.js +19 -5
- package/dist/memory/cloud/cloud-sync.js +3 -3
- package/dist/memory/cloud/harness-config.d.ts +49 -0
- package/dist/memory/cloud/harness-config.js +16 -20
- package/dist/memory/cloud/memory-scope.d.ts +17 -0
- package/dist/memory/cloud/memory-scope.js +22 -0
- package/dist/memory/cloud/sync-cycle.d.ts +32 -4
- package/dist/memory/cloud/sync-cycle.js +113 -12
- package/dist/memory/cloud/sync-daemon.d.ts +11 -0
- package/dist/memory/cloud/sync-daemon.js +114 -4
- package/dist/memory/cloud/sync-disk.js +26 -2
- package/dist/memory/cloud/sync-screenshots.d.ts +32 -0
- package/dist/memory/cloud/sync-screenshots.js +105 -0
- package/dist/memory/cloud/unsynced-roots.d.ts +47 -0
- package/dist/memory/cloud/unsynced-roots.js +166 -0
- package/dist/memory/impact/account-watch.d.ts +16 -1
- package/dist/memory/impact/account-watch.js +26 -1
- package/dist/memory/impact/impact-store.d.ts +1 -4
- package/dist/memory/impact/impact-store.js +32 -42
- package/dist/memory/intent/inline-intent.d.ts +1 -0
- package/dist/memory/intent/intent-shard-store.js +16 -4
- package/dist/memory/intent/intent-shard.d.ts +12 -0
- package/dist/memory/intent/intent-store.d.ts +1 -0
- package/dist/memory/intent/intent-tools.js +42 -2
- package/dist/memory/intent/open-intents.d.ts +6 -0
- package/dist/memory/intent/open-intents.js +10 -1
- package/dist/memory/intent/settled-words.d.ts +24 -0
- package/dist/memory/intent/settled-words.js +130 -0
- package/dist/memory/journal/drive-flow.d.ts +16 -0
- package/dist/memory/journal/drive-flow.js +34 -2
- package/dist/memory/journal/drive-run-flush.d.ts +2 -0
- package/dist/memory/journal/drive-run-flush.js +20 -5
- package/dist/memory/journal/journal-recorder.js +46 -3
- package/dist/memory/journal/on-disk/retention.d.ts +5 -0
- package/dist/memory/journal/on-disk/retention.js +27 -2
- package/dist/memory/journal/on-disk/workspace-tiers.js +2 -0
- package/dist/memory/journal/session-end.d.ts +15 -1
- package/dist/memory/journal/session-end.js +38 -7
- package/dist/memory/project/artifact-root-resolver.js +33 -5
- package/dist/memory/project/artifact-root.d.ts +4 -3
- package/dist/memory/project/artifact-root.js +2 -2
- package/dist/memory/project/dir/reticle-dir.d.ts +14 -0
- package/dist/memory/project/dir/reticle-dir.js +23 -2
- package/dist/memory/project/link-directory.d.ts +15 -0
- package/dist/memory/project/link-directory.js +44 -0
- package/dist/memory/project/root-claims.d.ts +6 -0
- package/dist/memory/project/root-claims.js +39 -0
- package/dist/memory/project/session-root.d.ts +2 -0
- package/dist/memory/project/session-root.js +9 -1
- package/dist/memory/project/sync-status.d.ts +46 -0
- package/dist/memory/project/sync-status.js +135 -1
- package/dist/memory/recall/memory-tools.js +46 -3
- package/dist/memory/recall/platform-memory.d.ts +34 -0
- package/dist/memory/recall/platform-memory.js +139 -0
- package/dist/memory/recall/project-memory.js +36 -8
- package/dist/portal/bridge/bridge.d.ts +9 -5
- package/dist/portal/bridge/bridge.js +66 -23
- package/dist/portal/bridge/harness-request.d.ts +23 -0
- package/dist/portal/bridge/harness-request.js +27 -0
- package/dist/portal/bridge/wrong-path.d.ts +17 -0
- package/dist/portal/bridge/wrong-path.js +35 -0
- package/dist/portal/input/network-mock-tools.js +11 -2
- package/dist/portal/input/real-input.d.ts +2 -0
- package/dist/portal/input/real-input.js +13 -10
- package/dist/portal/pool/browser-pool.d.ts +48 -0
- package/dist/portal/pool/browser-pool.js +120 -2
- package/dist/portal/pool/context-permissions.d.ts +33 -0
- package/dist/portal/pool/context-permissions.js +33 -0
- package/dist/portal/pool/lease-marker-stamp.d.ts +23 -0
- package/dist/portal/pool/lease-marker-stamp.js +49 -0
- package/dist/portal/pool/playwright-launcher.d.ts +27 -5
- package/dist/portal/pool/playwright-launcher.js +59 -14
- package/dist/portal/pool/pool-contract.d.ts +21 -1
- package/dist/portal/session/agent-link.d.ts +8 -0
- package/dist/portal/session/agent-link.js +17 -0
- package/dist/portal/session/command-payload.js +6 -1
- package/dist/portal/session/daemon-answers.d.ts +3 -3
- package/dist/portal/session/daemon-answers.js +4 -2
- package/dist/portal/session/dev-server/dev-command.d.ts +9 -0
- package/dist/portal/session/dev-server/dev-command.js +27 -1
- package/dist/portal/session/facts/observed-state.d.ts +16 -18
- package/dist/portal/session/facts/observed-state.js +46 -3
- package/dist/portal/session/human/live-control.d.ts +9 -2
- package/dist/portal/session/human/live-control.js +12 -3
- package/dist/portal/session/live-control-tools.js +82 -13
- package/dist/portal/session/narration-args.d.ts +5 -0
- package/dist/portal/session/narration-args.js +17 -0
- package/dist/portal/session/no-session-diagnosis.d.ts +1 -1
- package/dist/portal/session/no-session-diagnosis.js +31 -9
- package/dist/portal/session/no-session-next-action.d.ts +20 -0
- package/dist/portal/session/no-session-next-action.js +134 -61
- package/dist/portal/session/no-session-watch.js +179 -22
- package/dist/portal/session/presence/session-lease.js +1 -1
- package/dist/portal/session/recorded-gaps.d.ts +97 -0
- package/dist/portal/session/recorded-gaps.js +251 -0
- package/dist/portal/session/session-health.d.ts +11 -0
- package/dist/portal/session/session-health.js +3 -1
- package/dist/portal/session/session-info.js +2 -1
- package/dist/portal/session/session-manager.d.ts +18 -0
- package/dist/portal/session/session-manager.js +54 -3
- package/dist/portal/session/session-successor.d.ts +8 -0
- package/dist/portal/session/session-successor.js +1 -1
- package/dist/portal/session/session.d.ts +15 -28
- package/dist/portal/session/session.js +60 -61
- package/dist/portal/session/timing/command-timeout.js +25 -1
- package/dist/portal/session/timing/wall-clock.d.ts +1 -1
- package/dist/portal/session/timing/wall-clock.js +1 -1
- package/dist/portal/session/zero-install-first-call.d.ts +31 -0
- package/dist/portal/session/zero-install-first-call.js +88 -0
- package/dist/start-options.d.ts +7 -1
- package/dist/start-wiring.d.ts +63 -0
- package/dist/start-wiring.js +169 -0
- package/dist/status-payload.d.ts +13 -1
- package/dist/status-payload.js +13 -1
- package/dist/surface/http-server.js +7 -1
- package/dist/surface/mcp/attach-memory.d.ts +1 -0
- package/dist/surface/mcp/attach-memory.js +12 -1
- package/dist/surface/mcp/mcp-proxy.d.ts +4 -0
- package/dist/surface/mcp/mcp-proxy.js +29 -8
- package/dist/surface/mcp/mcp.d.ts +23 -0
- package/dist/surface/mcp/mcp.js +34 -4
- package/dist/surface/mcp/proxy/drive-calls.d.ts +10 -0
- package/dist/surface/mcp/proxy/drive-calls.js +27 -0
- package/dist/surface/mcp/proxy/mcp-post-transport.js +5 -0
- package/dist/surface/mcp/server-instructions.js +22 -14
- package/dist/surface/mcp/shared-params.js +1 -1
- package/dist/surface/mcp/surface-vocabulary.d.ts +2 -0
- package/dist/surface/mcp/surface-vocabulary.js +1 -0
- package/dist/surface/tools/account-tool.d.ts +22 -0
- package/dist/surface/tools/account-tool.js +157 -0
- package/dist/surface/tools/act/act-danger.d.ts +11 -0
- package/dist/surface/tools/act/act-danger.js +38 -1
- package/dist/surface/tools/act/act-observation.d.ts +33 -0
- package/dist/surface/tools/act/act-observation.js +57 -0
- package/dist/surface/tools/act/act-preflight.js +25 -2
- package/dist/surface/tools/act/act-target.js +8 -3
- package/dist/surface/tools/act/resolve-target.d.ts +1 -1
- package/dist/surface/tools/act/resolve-target.js +18 -3
- package/dist/surface/tools/act/screen-request.d.ts +34 -0
- package/dist/surface/tools/act/screen-request.js +113 -0
- package/dist/surface/tools/act/sequence-grade.d.ts +8 -0
- package/dist/surface/tools/act/sequence-grade.js +13 -2
- package/dist/surface/tools/act-sequence-tool.js +136 -27
- package/dist/surface/tools/act-tools.d.ts +0 -9
- package/dist/surface/tools/act-tools.js +48 -34
- package/dist/surface/tools/agent/app-notes-learning.d.ts +7 -0
- package/dist/surface/tools/agent/app-notes-learning.js +80 -0
- package/dist/surface/tools/agent/app-notes.d.ts +4 -0
- package/dist/surface/tools/agent/app-notes.js +48 -0
- package/dist/surface/tools/agent/build-staleness.d.ts +7 -0
- package/dist/surface/tools/agent/build-staleness.js +62 -0
- package/dist/surface/tools/agent/compact-envelope.d.ts +80 -0
- package/dist/surface/tools/agent/compact-envelope.js +374 -0
- package/dist/surface/tools/agent/for-the-agent.d.ts +12 -0
- package/dist/surface/tools/agent/for-the-agent.js +44 -0
- package/dist/surface/tools/agent/notices.d.ts +50 -0
- package/dist/surface/tools/agent/notices.js +152 -0
- package/dist/surface/tools/agent/reteach.d.ts +11 -0
- package/dist/surface/tools/agent/reteach.js +50 -0
- package/dist/surface/tools/args/alias-args.d.ts +5 -0
- package/dist/surface/tools/args/alias-args.js +10 -0
- package/dist/surface/tools/args/confirm-dangerous-arg.d.ts +6 -0
- package/dist/surface/tools/args/confirm-dangerous-arg.js +6 -0
- package/dist/surface/tools/assert/assert-source.d.ts +15 -0
- package/dist/surface/tools/assert/assert-source.js +40 -0
- package/dist/surface/tools/assert/assert-verdict.js +25 -15
- package/dist/surface/tools/browser-tools.js +43 -1
- package/dist/surface/tools/chat-drives.d.ts +75 -0
- package/dist/surface/tools/chat-drives.js +265 -21
- package/dist/surface/tools/coverage-tools.d.ts +2 -10
- package/dist/surface/tools/coverage-tools.js +2 -53
- package/dist/surface/tools/dynamic-tools.js +29 -1
- package/dist/surface/tools/empty-session-list.d.ts +10 -0
- package/dist/surface/tools/empty-session-list.js +45 -5
- package/dist/surface/tools/error-recovery.d.ts +8 -0
- package/dist/surface/tools/error-recovery.js +69 -5
- package/dist/surface/tools/explore-tools.d.ts +23 -2
- package/dist/surface/tools/explore-tools.js +377 -74
- package/dist/surface/tools/feedback-tools.d.ts +2 -3
- package/dist/surface/tools/feedback-tools.js +4 -3
- package/dist/surface/tools/gap-novelty.d.ts +3 -1
- package/dist/surface/tools/gap-novelty.js +8 -1
- package/dist/surface/tools/harness-explore.d.ts +52 -73
- package/dist/surface/tools/harness-explore.js +177 -146
- package/dist/surface/tools/harness-gate.d.ts +88 -0
- package/dist/surface/tools/harness-gate.js +235 -0
- package/dist/surface/tools/harness-hunt.d.ts +43 -0
- package/dist/surface/tools/harness-hunt.js +215 -0
- package/dist/surface/tools/harness-plan.d.ts +5 -0
- package/dist/surface/tools/harness-plan.js +7 -0
- package/dist/surface/tools/harness-script.d.ts +22 -0
- package/dist/surface/tools/harness-script.js +256 -38
- package/dist/surface/tools/harness-tab-guard.d.ts +5 -0
- package/dist/surface/tools/harness-tab-guard.js +27 -0
- package/dist/surface/tools/harness-toolset.d.ts +8 -0
- package/dist/surface/tools/harness-toolset.js +27 -4
- package/dist/surface/tools/human-notes.d.ts +16 -0
- package/dist/surface/tools/human-notes.js +27 -0
- package/dist/surface/tools/invoke-tool.d.ts +5 -2
- package/dist/surface/tools/invoke-tool.js +220 -93
- package/dist/surface/tools/lease-hint.js +26 -5
- package/dist/surface/tools/lease-permissions.d.ts +33 -0
- package/dist/surface/tools/lease-permissions.js +73 -0
- package/dist/surface/tools/lease-readiness.d.ts +38 -0
- package/dist/surface/tools/lease-readiness.js +57 -0
- package/dist/surface/tools/lease-seed.d.ts +20 -0
- package/dist/surface/tools/lease-seed.js +45 -1
- package/dist/surface/tools/lease-tools.d.ts +10 -1
- package/dist/surface/tools/lease-tools.js +119 -69
- package/dist/surface/tools/live-call-text.js +2 -2
- package/dist/surface/tools/merge-tools.js +42 -2
- package/dist/surface/tools/merged-name-redirect.js +4 -0
- package/dist/surface/tools/next-step.d.ts +11 -1
- package/dist/surface/tools/next-step.js +73 -18
- package/dist/surface/tools/observe-tools.js +43 -5
- package/dist/surface/tools/platform-moment.d.ts +60 -0
- package/dist/surface/tools/platform-moment.js +132 -4
- package/dist/surface/tools/read-tools.js +65 -14
- package/dist/surface/tools/reticle-result.d.ts +120 -0
- package/dist/surface/tools/reticle-result.js +364 -0
- package/dist/surface/tools/tool-kit.d.ts +68 -2
- package/dist/surface/tools/tool-kit.js +73 -1
- package/dist/surface/tools/tools.js +25 -13
- package/dist/telemetry/account-envelope.d.ts +7 -0
- package/dist/telemetry/account-envelope.js +61 -0
- package/dist/telemetry/agent-client.d.ts +15 -0
- package/dist/telemetry/agent-client.js +57 -0
- package/dist/telemetry/app-instrumented.js +9 -2
- package/dist/telemetry/argument-shape.d.ts +7 -0
- package/dist/telemetry/argument-shape.js +86 -1
- package/dist/telemetry/automation-hint.d.ts +2 -3
- package/dist/telemetry/automation-hint.js +33 -8
- package/dist/telemetry/cli-telemetry.js +7 -2
- package/dist/telemetry/daemon-telemetry.js +3 -0
- package/dist/telemetry/error-fingerprint.d.ts +10 -1
- package/dist/telemetry/error-fingerprint.js +61 -5
- package/dist/telemetry/feedback-cli.d.ts +0 -13
- package/dist/telemetry/feedback-cli.js +0 -77
- package/dist/telemetry/feedback.d.ts +13 -0
- package/dist/telemetry/feedback.js +183 -17
- package/dist/telemetry/harness-run.d.ts +18 -0
- package/dist/telemetry/harness-run.js +80 -0
- package/dist/telemetry/hud-events.d.ts +16 -0
- package/dist/telemetry/hud-events.js +27 -0
- package/dist/telemetry/hud-metrics.d.ts +27 -6
- package/dist/telemetry/hud-metrics.js +99 -25
- package/dist/telemetry/init-telemetry.js +2 -2
- package/dist/telemetry/install-source.d.ts +13 -25
- package/dist/telemetry/install-source.js +44 -3
- package/dist/telemetry/mcp-connection.d.ts +0 -14
- package/dist/telemetry/mcp-connection.js +5 -1
- package/dist/telemetry/onboarding-firsts.d.ts +32 -0
- package/dist/telemetry/onboarding-firsts.js +81 -6
- package/dist/telemetry/platform-linked.d.ts +5 -0
- package/dist/telemetry/platform-linked.js +32 -0
- package/dist/telemetry/project-profile.js +5 -3
- package/dist/telemetry/proxy-telemetry.js +4 -1
- package/dist/telemetry/session-metrics.d.ts +15 -4
- package/dist/telemetry/session-metrics.js +88 -52
- package/dist/telemetry/telemetry.d.ts +26 -2
- package/dist/telemetry/telemetry.js +102 -21
- package/dist/telemetry/verification-of.d.ts +3 -1
- package/dist/telemetry/verification-of.js +12 -4
- package/dist/wire-journal.d.ts +2 -2
- package/dist/wire-journal.js +16 -5
- package/docs/README.md +2 -2
- package/docs/actions.mdx +6 -3
- package/docs/adapters.md +1 -1
- package/docs/agent-cheatsheet.md +24 -27
- package/docs/architecture.md +5 -5
- package/docs/autodrive.md +13 -12
- package/docs/benchmarks.md +5 -5
- package/docs/best-practices.mdx +27 -9
- package/docs/capabilities.mdx +14 -16
- package/docs/cli/affected.mdx +1 -1
- package/docs/cli/cloud.mdx +54 -75
- package/docs/cli/doctor.mdx +8 -3
- package/docs/cli/drive.mdx +12 -12
- package/docs/cli/feedback.mdx +3 -3
- package/docs/cli/gate.mdx +7 -2
- package/docs/cli/help.mdx +50 -55
- package/docs/cli/init.mdx +32 -15
- package/docs/cli/license.mdx +12 -8
- package/docs/cli/mcp.mdx +4 -4
- package/docs/cli/open.mdx +3 -3
- package/docs/cli/report.mdx +4 -2
- package/docs/cli/restart.mdx +2 -2
- package/docs/cli/rollback.mdx +14 -8
- package/docs/cli/serve.mdx +4 -4
- package/docs/cli/setup.mdx +23 -0
- package/docs/cli/status.mdx +13 -4
- package/docs/cli/stop.mdx +67 -8
- package/docs/cli/try.mdx +62 -0
- package/docs/cli/update.mdx +4 -3
- package/docs/cli/verify.mdx +17 -6
- package/docs/cli/version.mdx +3 -2
- package/docs/cli.mdx +110 -41
- package/docs/debugging.md +3 -3
- package/docs/deploy-checks.md +1 -1
- package/docs/desktop.mdx +5 -3
- package/docs/enterprise.md +11 -10
- package/docs/environment.mdx +5 -2
- package/docs/faq.mdx +3 -3
- package/docs/first-drive.md +5 -4
- package/docs/flows.md +35 -27
- package/docs/for-agents.md +4 -5
- package/docs/frameworks.mdx +32 -21
- package/docs/getting-started.md +66 -64
- package/docs/human-control.md +15 -14
- package/docs/index.mdx +15 -43
- package/docs/install-agentic.mdx +22 -37
- package/docs/install-manual.mdx +22 -12
- package/docs/instrumentation.mdx +5 -3
- package/docs/integration-patterns.md +7 -7
- package/docs/license-activation.mdx +1 -1
- package/docs/multi-agent-testing.md +24 -6
- package/docs/packages/babel-plugin.mdx +4 -2
- package/docs/packages/browser.mdx +16 -10
- package/docs/packages/core.mdx +12 -5
- package/docs/packages/electron.mdx +3 -2
- package/docs/packages/engine.mdx +1 -1
- package/docs/packages/eslint-plugin.mdx +18 -12
- package/docs/packages/next.mdx +8 -7
- package/docs/packages/open-verification.mdx +1 -1
- package/docs/packages/server.mdx +5 -5
- package/docs/packages/tauri.mdx +8 -8
- package/docs/packages/test.mdx +4 -10
- package/docs/packages/vite-plugin.mdx +11 -4
- package/docs/packages.mdx +11 -15
- package/docs/platform-integration.md +6 -5
- package/docs/predicates.mdx +40 -24
- package/docs/quickstart.mdx +58 -29
- package/docs/required-checks.md +8 -7
- package/docs/reticle-manual.md +15 -5
- package/docs/skill-file.mdx +17 -79
- package/docs/skill-setup.md +9 -9
- package/docs/skill.md +200 -0
- package/docs/system-map.md +7 -7
- package/docs/telemetry.md +22 -24
- package/docs/testing.md +4 -4
- package/docs/token-efficiency.md +12 -12
- package/docs/tools/act-and-wait.mdx +9 -2
- package/docs/tools/act-sequence.mdx +6 -7
- package/docs/tools/act.mdx +2 -2
- package/docs/tools/assert.mdx +18 -17
- package/docs/tools/console.mdx +9 -9
- package/docs/tools/inspect.mdx +16 -7
- package/docs/tools/look.mdx +24 -0
- package/docs/tools/navigate.mdx +5 -3
- package/docs/tools/network.mdx +2 -2
- package/docs/tools/observe.mdx +6 -6
- package/docs/tools/overview.mdx +34 -33
- package/docs/tools/query.mdx +5 -5
- package/docs/tools/session-and-feedback.mdx +13 -4
- package/docs/tools/sessions.mdx +8 -8
- package/docs/tools/snapshot.mdx +6 -5
- package/docs/tools/state.mdx +9 -9
- package/docs/tools/tools-and-run.mdx +26 -24
- package/docs/tools/verify.mdx +28 -0
- package/docs/tools/wait-for.mdx +8 -4
- package/docs/troubleshooting.mdx +21 -6
- package/docs/usage.md +51 -45
- package/docs/use-cases.mdx +3 -3
- package/docs/vs-chrome-devtools-mcp.mdx +9 -6
- package/docs/vs-playwright-mcp.mdx +3 -1
- package/docs/what-is-recorded.md +7 -5
- package/docs/what-is-reticle.mdx +2 -2
- package/docs/why-reticle.mdx +1 -1
- package/package.json +6 -5
- package/dist/command/cli/demo/demo-page.d.ts +0 -78
- package/dist/command/cli/demo/demo-page.js +0 -249
- package/dist/command/cli/demo/demo-run.d.ts +0 -38
- package/dist/command/cli/demo/demo-run.js +0 -138
- package/dist/judgement/hunt/hunt-report.d.ts +0 -49
- package/dist/judgement/hunt/hunt-report.js +0 -84
- package/dist/language/flows/buddy-status.d.ts +0 -25
- package/dist/language/flows/buddy-status.js +0 -32
- package/dist/language/flows/change/watch-batcher.d.ts +0 -18
- package/dist/language/flows/change/watch-batcher.js +0 -19
- package/dist/memory/cloud/harness-offer.d.ts +0 -44
- package/dist/memory/cloud/harness-offer.js +0 -145
- package/dist/surface/tools/feature-capture.d.ts +0 -151
- package/dist/surface/tools/feature-capture.js +0 -235
- package/dist/surface/tools/tool-hit-rate.d.ts +0 -87
- package/dist/surface/tools/tool-hit-rate.js +0 -90
- package/dist/telemetry/harness-drive.d.ts +0 -4
- package/dist/telemetry/harness-drive.js +0 -35
- package/dist/telemetry/identify.d.ts +0 -22
- package/dist/telemetry/identify.js +0 -73
- package/docs/cli/capsules.mdx +0 -70
- package/docs/cli/hunt.mdx +0 -73
- package/docs/cli/identify.mdx +0 -76
- package/docs/cli/kill.mdx +0 -91
- package/docs/cli/watch.mdx +0 -62
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
* - it never overrides someone who was EXPLICIT. A driver named in the call, or set in the
|
|
17
17
|
* environment, wins over the stored preference. Precedence lives in the caller.
|
|
18
18
|
*/
|
|
19
|
-
import { platformCredentialFrom } from '@reticlehq/core';
|
|
19
|
+
import { CreditKind, ReticleEnv, platformCredentialFrom } from '@reticlehq/core';
|
|
20
20
|
const CONFIG_PATH = '/v1/model/config';
|
|
21
|
+
/** The header naming the free drive a call belongs to. See `ReticleEnv.DRIVE_ID`. */
|
|
22
|
+
export const DRIVE_HEADER = 'x-reticle-drive';
|
|
21
23
|
/**
|
|
22
24
|
* How long the daemon will wait for a preference before driving without it.
|
|
23
25
|
*
|
|
@@ -26,6 +28,67 @@ const CONFIG_PATH = '/v1/model/config';
|
|
|
26
28
|
* everybody had before this endpoint existed.
|
|
27
29
|
*/
|
|
28
30
|
const TIMEOUT_MS = 2_000;
|
|
31
|
+
const count = (value) => 'number' === typeof value && Number.isInteger(value) && value >= 0 ? value : undefined;
|
|
32
|
+
const field = (value, key) => 'object' === typeof value && null !== value ? value[key] : undefined;
|
|
33
|
+
/** `plan`, `harnessRuns` and `memory` out of `/v1/model/config`; each absent when not sent. */
|
|
34
|
+
function hudFieldsOf(record) {
|
|
35
|
+
const plan = record['plan'];
|
|
36
|
+
const kind = Object.values(CreditKind).find((k) => k === field(plan, 'kind'));
|
|
37
|
+
const daysLeft = count(field(plan, 'daysLeft'));
|
|
38
|
+
const seats = count(field(plan, 'seats'));
|
|
39
|
+
const runs = count(field(record['harnessRuns'], 'total'));
|
|
40
|
+
const memory = count(field(record['memory'], 'entries'));
|
|
41
|
+
return {
|
|
42
|
+
...(kind === undefined
|
|
43
|
+
? {}
|
|
44
|
+
: {
|
|
45
|
+
plan: {
|
|
46
|
+
kind,
|
|
47
|
+
...(daysLeft === undefined ? {} : { daysLeft }),
|
|
48
|
+
...(seats === undefined ? {} : { seats }),
|
|
49
|
+
},
|
|
50
|
+
}),
|
|
51
|
+
...(runs === undefined ? {} : { harnessRuns: runs }),
|
|
52
|
+
...(memory === undefined ? {} : { memoryEntries: memory }),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** `{ [key]: value }` when `value` is an http(s) address, else nothing: a link must open. */
|
|
56
|
+
function webUrl(value, key) {
|
|
57
|
+
if ('string' !== typeof value)
|
|
58
|
+
return {};
|
|
59
|
+
try {
|
|
60
|
+
const url = new URL(value);
|
|
61
|
+
return 'http:' === url.protocol || 'https:' === url.protocol
|
|
62
|
+
? { [key]: value }
|
|
63
|
+
: {};
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return {};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** The gate out of `/v1/model/config`, or undefined from a platform that does not send one. */
|
|
70
|
+
function gateOf(record) {
|
|
71
|
+
const unlocked = record['harnessUnlocked'];
|
|
72
|
+
if ('boolean' !== typeof unlocked)
|
|
73
|
+
return undefined;
|
|
74
|
+
const score = record['coverageScore'];
|
|
75
|
+
const lock = record['harnessLock'];
|
|
76
|
+
const lockRecord = 'object' === typeof lock && null !== lock ? lock : {};
|
|
77
|
+
const reason = lockRecord['reason'];
|
|
78
|
+
const prompt = lockRecord['prompt'];
|
|
79
|
+
return {
|
|
80
|
+
unlocked,
|
|
81
|
+
// Rounded down, as core's rule is: a locked app never shows 80%.
|
|
82
|
+
...('number' === typeof score ? { percent: Math.floor(score * 100 + 1e-9) } : {}),
|
|
83
|
+
...('string' === typeof reason ? { reason } : {}),
|
|
84
|
+
...('string' === typeof prompt ? { prompt } : {}),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** When the grant ends, epoch ms, from an ISO date or a number. Anything else: not said. */
|
|
88
|
+
function endsAtOf(value) {
|
|
89
|
+
const at = 'number' === typeof value ? value : 'string' === typeof value ? Date.parse(value) : NaN;
|
|
90
|
+
return Number.isFinite(at) ? at : undefined;
|
|
91
|
+
}
|
|
29
92
|
function parse(body) {
|
|
30
93
|
try {
|
|
31
94
|
const parsed = JSON.parse(body);
|
|
@@ -35,11 +98,11 @@ function parse(body) {
|
|
|
35
98
|
const provider = record['provider'];
|
|
36
99
|
if ('string' !== typeof provider || 0 === provider.length)
|
|
37
100
|
return undefined;
|
|
38
|
-
// Absent reads as
|
|
39
|
-
//
|
|
101
|
+
// Absent reads as OFF: the Harness is opt-in, a new project starts with it off, and only the
|
|
102
|
+
// platform saying it is on lets a drive spend credits.
|
|
40
103
|
const enabled = record['harnessEnabled'];
|
|
41
|
-
//
|
|
42
|
-
//
|
|
104
|
+
// Entitlement keeps the old rule: an older API that does not report it must not have its silence
|
|
105
|
+
// read as a refusal. The switch above is what keeps an unasked drive from running.
|
|
43
106
|
const entitled = record['harnessEntitled'];
|
|
44
107
|
// `available` is keyed by provider and says which ones the platform holds a key for. Read only
|
|
45
108
|
// the entry for the provider this project uses: another provider being configured says nothing
|
|
@@ -55,13 +118,30 @@ function parse(body) {
|
|
|
55
118
|
const limit = 'object' === typeof credits && null !== credits
|
|
56
119
|
? credits['limit']
|
|
57
120
|
: undefined;
|
|
121
|
+
const kind = 'object' === typeof credits && null !== credits
|
|
122
|
+
? Object.values(CreditKind).find((k) => k === credits['kind'])
|
|
123
|
+
: undefined;
|
|
124
|
+
const gate = gateOf(record);
|
|
125
|
+
const endsAt = endsAtOf('object' === typeof credits && null !== credits
|
|
126
|
+
? credits['endsAt']
|
|
127
|
+
: undefined);
|
|
58
128
|
return {
|
|
59
129
|
provider,
|
|
60
|
-
harnessEnabled:
|
|
130
|
+
harnessEnabled: true === enabled,
|
|
61
131
|
harnessEntitled: 'boolean' === typeof entitled ? entitled : true,
|
|
62
132
|
providerReady: 'boolean' === typeof ready ? ready : true,
|
|
133
|
+
...(gate === undefined ? {} : { gate }),
|
|
134
|
+
...hudFieldsOf(record),
|
|
135
|
+
...webUrl(record['planUrl'], 'planUrl'),
|
|
63
136
|
...('number' === typeof used && 'number' === typeof limit
|
|
64
|
-
? {
|
|
137
|
+
? {
|
|
138
|
+
credits: {
|
|
139
|
+
used,
|
|
140
|
+
limit,
|
|
141
|
+
...(kind === undefined ? {} : { kind }),
|
|
142
|
+
...(endsAt === undefined ? {} : { endsAt }),
|
|
143
|
+
},
|
|
144
|
+
}
|
|
65
145
|
: {}),
|
|
66
146
|
};
|
|
67
147
|
}
|
|
@@ -83,6 +163,7 @@ export async function fetchPlatformConfig(env, doFetch = (url, init) => fetch(ur
|
|
|
83
163
|
return undefined;
|
|
84
164
|
const key = cloud.apiKey;
|
|
85
165
|
const host = cloud.url;
|
|
166
|
+
const drive = env[ReticleEnv.DRIVE_ID];
|
|
86
167
|
const controller = new AbortController();
|
|
87
168
|
const timer = setTimeout(() => {
|
|
88
169
|
controller.abort();
|
|
@@ -91,7 +172,11 @@ export async function fetchPlatformConfig(env, doFetch = (url, init) => fetch(ur
|
|
|
91
172
|
const base = host.replace(/\/+$/, '');
|
|
92
173
|
const res = await doFetch(`${base}${CONFIG_PATH}`, {
|
|
93
174
|
method: 'GET',
|
|
94
|
-
|
|
175
|
+
// The free drive too: a workspace with no card is entitled for that drive and no other.
|
|
176
|
+
headers: {
|
|
177
|
+
authorization: `Bearer ${key}`,
|
|
178
|
+
...(drive === undefined || 0 === drive.length ? {} : { [DRIVE_HEADER]: drive }),
|
|
179
|
+
},
|
|
95
180
|
signal: controller.signal,
|
|
96
181
|
});
|
|
97
182
|
if (!res.ok)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Said of a route guess that missed, on the step. */
|
|
2
|
+
export declare const MSG_ROUTE_GUESS_MISSED = "the drive guessed this would change the route and it did not go where it said: the driver's wrong guess, not an app defect";
|
|
3
|
+
/** Said of a route claim whose click opened a menu or dialog instead: the route comes after it. */
|
|
4
|
+
export declare const MSG_OPENED_MENU = "it opened a menu or dialog; the route it named comes after a choice in it \u2014 progress, not a check";
|
|
5
|
+
/** Whether a declared predicate claims nothing but a route (or leaving one). */
|
|
6
|
+
export declare function claimsOnlyRoute(predicate: unknown): boolean;
|
|
7
|
+
/** The pages the map knows, as one line for the model. */
|
|
8
|
+
export declare const knownPagesLine: (routes: readonly string[]) => string;
|
|
9
|
+
/**
|
|
10
|
+
* What to do instead of guessing again, after a route guess missed: the known page it was after,
|
|
11
|
+
* by its route, or the pages the map knows. Undefined when the map knows none.
|
|
12
|
+
*/
|
|
13
|
+
export declare function routeHint(predicate: unknown, routes: readonly string[]): string | undefined;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Harness check that only claimed where the page would go, and missed.
|
|
3
|
+
*
|
|
4
|
+
* The driver declares a consequence before each click. When all it declares is a route ("this will
|
|
5
|
+
* leave /overview") and the route does something else, that is the driver guessing wrong about an
|
|
6
|
+
* in-page control (a Mine/Team toggle, a project picker, a dialog, a tab), not the app failing:
|
|
7
|
+
* three runs whose every goal was met read NOT PROVED with "findings" that were the driver's own
|
|
8
|
+
* predictions. Such a check is undecided, never failed, and never a finding.
|
|
9
|
+
*
|
|
10
|
+
* ponytail: a route-only claim is always read as a guess. A link that should navigate and does not
|
|
11
|
+
* is still found, by the crawl and by the goals, which are what a run is judged on.
|
|
12
|
+
*/
|
|
13
|
+
import { PredicateKind, asRecord, asString } from '@reticlehq/core';
|
|
14
|
+
/** Said of a route guess that missed, on the step. */
|
|
15
|
+
export const MSG_ROUTE_GUESS_MISSED = "the drive guessed this would change the route and it did not go where it said: the driver's wrong guess, not an app defect";
|
|
16
|
+
/** Said of a route claim whose click opened a menu or dialog instead: the route comes after it. */
|
|
17
|
+
export const MSG_OPENED_MENU = 'it opened a menu or dialog; the route it named comes after a choice in it — progress, not a check';
|
|
18
|
+
/** Whether a declared predicate claims nothing but a route (or leaving one). */
|
|
19
|
+
export function claimsOnlyRoute(predicate) {
|
|
20
|
+
const p = asRecord(predicate);
|
|
21
|
+
const kind = asString(p['kind']);
|
|
22
|
+
if (PredicateKind.ROUTE === kind)
|
|
23
|
+
return true;
|
|
24
|
+
return (PredicateKind.NOT === kind && PredicateKind.ROUTE === asString(asRecord(p['predicate'])['kind']));
|
|
25
|
+
}
|
|
26
|
+
/** How many known pages a line names; a map of hundreds is a list nobody reads. */
|
|
27
|
+
const MAX_ROUTES_NAMED = 20;
|
|
28
|
+
/** The pages the map knows, as one line for the model. */
|
|
29
|
+
export const knownPagesLine = (routes) => routes.slice(0, MAX_ROUTES_NAMED).join(', ');
|
|
30
|
+
/** The route a claim names arriving at, when it names one (`not` a route names none). */
|
|
31
|
+
function claimedRoute(predicate) {
|
|
32
|
+
const p = asRecord(predicate);
|
|
33
|
+
if (PredicateKind.ROUTE !== asString(p['kind']))
|
|
34
|
+
return undefined;
|
|
35
|
+
return asString(p['pathname']) ?? asString(p['contains']);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* What to do instead of guessing again, after a route guess missed: the known page it was after,
|
|
39
|
+
* by its route, or the pages the map knows. Undefined when the map knows none.
|
|
40
|
+
*/
|
|
41
|
+
export function routeHint(predicate, routes) {
|
|
42
|
+
if (0 === routes.length)
|
|
43
|
+
return undefined;
|
|
44
|
+
const wanted = claimedRoute(predicate);
|
|
45
|
+
const known = wanted === undefined ? undefined : routes.find((r) => r.includes(wanted));
|
|
46
|
+
return known === undefined
|
|
47
|
+
? `That control does not lead where you guessed. The pages this app has: ${knownPagesLine(routes)}. Go to one by its link or reticle_navigate, rather than guessing which control leads there.`
|
|
48
|
+
: `That control does not lead to ${known}. It is a page this app has: press its link, or reticle_navigate { url: "${known}" }, rather than guessing another control.`;
|
|
49
|
+
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* are started in order, so whatever is waited on has already started.
|
|
10
10
|
*/
|
|
11
11
|
import { type PlanView } from '@reticlehq/core';
|
|
12
|
-
import { type DriveScript } from '@reticlehq/core/artifacts';
|
|
12
|
+
import { JourneyBy, type DriveScript } from '@reticlehq/core/artifacts';
|
|
13
13
|
import { type HarnessResult, type HarnessToolset, type ToolOutcome } from '../harness.js';
|
|
14
14
|
export interface ScriptPorts {
|
|
15
15
|
/** A browser context for one lane. Without a pool this is the user's own tab, every time. */
|
|
@@ -25,6 +25,33 @@ export interface ScriptPorts {
|
|
|
25
25
|
parallel: number;
|
|
26
26
|
/** A person switched autonomous driving off. */
|
|
27
27
|
stopped(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* A person started this run and acknowledged the saved flows' destructive steps: replays take
|
|
30
|
+
* them. Never applied to a step the model decides.
|
|
31
|
+
*/
|
|
32
|
+
confirmDangerous?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Text the Harness wrote itself (the journey asked for, the plan's titles and goals): a page
|
|
35
|
+
* showing it back, as the saved plan's name on /plans, is not a journey's end reached.
|
|
36
|
+
*/
|
|
37
|
+
own?: readonly string[];
|
|
38
|
+
/**
|
|
39
|
+
* Why the model may not drive a journey's fallback now (credits gone, Harness off), or undefined
|
|
40
|
+
* when it may. Asked only when a fallback is about to run: a plan that only replays never pays.
|
|
41
|
+
*/
|
|
42
|
+
fallbackRefused?(): Promise<string | undefined>;
|
|
43
|
+
}
|
|
44
|
+
/** How one journey was answered, as the platform is told it. */
|
|
45
|
+
export interface JourneyRun {
|
|
46
|
+
id: string;
|
|
47
|
+
/** Absent when it neither replayed nor drove: a guard stopped it first. */
|
|
48
|
+
by?: JourneyBy;
|
|
49
|
+
/** Model tokens the journey spent, cache reads and writes included; 0 for a pure replay. */
|
|
50
|
+
tokens: number;
|
|
51
|
+
/** Credits its model drives spent, when the platform said. */
|
|
52
|
+
credits?: number;
|
|
53
|
+
/** The flows it replayed or recorded. */
|
|
54
|
+
flows: string[];
|
|
28
55
|
}
|
|
29
56
|
export interface ScriptRun {
|
|
30
57
|
view: PlanView;
|
|
@@ -35,6 +62,8 @@ export interface ScriptRun {
|
|
|
35
62
|
stopped: boolean;
|
|
36
63
|
/** One line per journey, for the drive's report. */
|
|
37
64
|
lines: string[];
|
|
65
|
+
/** Each journey that ran, once, however many lanes held it. */
|
|
66
|
+
journeys: JourneyRun[];
|
|
38
67
|
}
|
|
39
68
|
export declare function runScript(script: DriveScript, ports: ScriptPorts, onChange?: (view: PlanView) => void): Promise<ScriptRun>;
|
|
40
69
|
/** The HUD's picture of a script before anything ran. */
|