@reticlehq/server 3.7.0 → 3.8.1
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 +59 -68
- package/bin/reticle.js +9 -2
- package/dist/command/cli/adhoc-suite.js +1 -1
- package/dist/command/cli/adhoc-verdict.d.ts +12 -0
- package/dist/command/cli/adhoc-verdict.js +62 -4
- package/dist/command/cli/answers/gate-hook-message.d.ts +2 -0
- package/dist/command/cli/answers/gate-hook-message.js +5 -1
- package/dist/command/cli/auth/cloud-session.d.ts +11 -19
- package/dist/command/cli/auth/cloud-session.js +23 -0
- package/dist/command/cli/auth/device-flow.d.ts +3 -37
- package/dist/command/cli/cli-doctor.js +66 -21
- package/dist/command/cli/cli-flow-commands.js +53 -11
- package/dist/command/cli/cli-kill.d.ts +8 -0
- package/dist/command/cli/cli-kill.js +43 -3
- package/dist/command/cli/cli-parse-feedback.d.ts +4 -0
- package/dist/command/cli/cli-parse-feedback.js +13 -1
- package/dist/command/cli/cli-parse-grammar.d.ts +1 -2
- package/dist/command/cli/cli-parse-grammar.js +1 -6
- package/dist/command/cli/cli-parse-serve.d.ts +24 -0
- package/dist/command/cli/cli-parse-serve.js +124 -0
- package/dist/command/cli/cli-parse.d.ts +12 -11
- package/dist/command/cli/cli-parse.js +100 -123
- package/dist/command/cli/cli-usage.d.ts +0 -11
- package/dist/command/cli/cli-usage.js +43 -16
- package/dist/command/cli/cli-verify.d.ts +1 -1
- package/dist/command/cli/cli-verify.js +29 -14
- package/dist/command/cli/cloud-cli.js +27 -9
- package/dist/command/cli/cloud-kit.js +3 -3
- package/dist/command/cli/cloud-link.d.ts +1 -20
- package/dist/command/cli/cloud-link.js +2 -0
- package/dist/command/cli/cloud-login.d.ts +6 -2
- package/dist/command/cli/cloud-login.js +13 -41
- package/dist/command/cli/config/checkout.d.ts +10 -0
- package/dist/command/cli/config/checkout.js +78 -0
- package/dist/command/cli/doctor/doctor-agent-link.d.ts +23 -0
- package/dist/command/cli/doctor/doctor-agent-link.js +28 -0
- package/dist/command/cli/doctor/doctor-coverage-line.js +1 -7
- package/dist/command/cli/doctor/doctor-rows.d.ts +4 -0
- package/dist/command/cli/doctor/doctor-rows.js +4 -0
- package/dist/command/cli/drive/drive-attach.d.ts +5 -0
- package/dist/command/cli/drive/drive-attach.js +21 -1
- package/dist/command/cli/hook/codex-transcript.d.ts +20 -0
- package/dist/command/cli/hook/codex-transcript.js +224 -0
- package/dist/command/cli/hook/episode-structure.d.ts +24 -0
- package/dist/command/cli/hook/episode-structure.js +138 -0
- package/dist/command/cli/hook/hook-command.d.ts +9 -0
- package/dist/command/cli/hook/hook-command.js +211 -0
- package/dist/command/cli/hook/hook-fast.d.ts +31 -0
- package/dist/command/cli/hook/hook-fast.js +136 -0
- package/dist/command/cli/hook/prompt-hook.d.ts +30 -0
- package/dist/command/cli/hook/prompt-hook.js +199 -0
- package/dist/command/cli/hook/tool-hook.d.ts +21 -0
- package/dist/command/cli/hook/tool-hook.js +259 -0
- package/dist/command/cli/launch/cli-launch.d.ts +2 -0
- package/dist/command/cli/launch/cli-launch.js +22 -2
- package/dist/command/cli/lifecycle/daemon-lifecycle.js +28 -2
- package/dist/command/cli/mcp-command.d.ts +9 -0
- package/dist/command/cli/mcp-command.js +127 -41
- package/dist/command/cli/open-navigate.d.ts +43 -0
- package/dist/command/cli/open-navigate.js +85 -0
- package/dist/command/cli/ports/port-holder.d.ts +16 -4
- package/dist/command/cli/ports/port-holder.js +58 -12
- package/dist/command/cli/ports/resolve/cli-port.js +18 -2
- package/dist/command/cli/project-name.d.ts +1 -7
- package/dist/command/cli/project-name.js +1 -0
- package/dist/command/cli/report-command.d.ts +8 -2
- package/dist/command/cli/report-command.js +95 -18
- package/dist/command/cli/status-fields.d.ts +9 -2
- package/dist/command/cli/status-fields.js +148 -4
- package/dist/command/cli/try-command.d.ts +3 -4
- package/dist/command/cli/try-command.js +6 -11
- package/dist/command/cli/verify-results.d.ts +4 -1
- package/dist/command/cli/verify-results.js +3 -1
- package/dist/command/cli.d.ts +1 -7
- package/dist/command/cli.js +79 -160
- package/dist/command/daemon/daemon-resilience.d.ts +6 -1
- package/dist/command/daemon/daemon-resilience.js +31 -18
- package/dist/command/daemon/daemon.d.ts +11 -0
- package/dist/command/daemon/daemon.js +70 -2
- package/dist/command/daemon/lifetime/daemon-usefulness.d.ts +2 -0
- package/dist/command/daemon/lifetime/daemon-usefulness.js +13 -2
- package/dist/command/daemon/wake-decision.js +4 -2
- package/dist/command/daemon/win32-escape.d.ts +32 -0
- package/dist/command/daemon/win32-escape.js +119 -0
- package/dist/command/setup/agent-configs.d.ts +9 -0
- package/dist/command/setup/agent-configs.js +9 -0
- package/dist/command/setup/auto-approve.d.ts +10 -3
- package/dist/command/setup/auto-approve.js +51 -3
- package/dist/command/setup/bringup/dev-server-files.d.ts +1 -9
- package/dist/command/setup/bringup/dev-server-wait.js +5 -1
- package/dist/command/setup/bringup/ensure-daemon.js +4 -7
- package/dist/command/setup/init/init-host.js +6 -0
- package/dist/command/setup/init/init-port.js +5 -4
- package/dist/command/setup/init/init-runtime.js +7 -1
- package/dist/command/setup/node-effects.d.ts +8 -0
- package/dist/command/setup/node-effects.js +36 -4
- package/dist/command/setup/probe/dev-port.d.ts +26 -0
- package/dist/command/setup/probe/dev-port.js +117 -0
- package/dist/command/setup/probe/page-probe.d.ts +1 -1
- package/dist/command/setup/probe/page-probe.js +11 -3
- package/dist/command/setup/remaining-steps.d.ts +0 -7
- package/dist/command/setup/remaining-steps.js +3 -2
- package/dist/command/setup/run-setup.d.ts +11 -0
- package/dist/command/setup/run-setup.js +33 -5
- package/dist/command/setup/setup-command.d.ts +2 -0
- package/dist/command/setup/setup-command.js +22 -4
- package/dist/command/update/updater.d.ts +1 -6
- package/dist/command/update/updater.js +4 -5
- package/dist/command/update/version-seen.d.ts +24 -0
- package/dist/command/update/version-seen.js +65 -0
- package/dist/command/version/peer-announce.d.ts +9 -1
- package/dist/command/version/peer-announce.js +25 -2
- package/dist/command/version/sdk-fix.d.ts +5 -6
- package/dist/command/version/sdk-fix.js +17 -32
- package/dist/command/version/version-skew.d.ts +16 -1
- package/dist/command/version/version-skew.js +84 -10
- package/dist/features/crawl/crawl-tools.js +2 -2
- package/dist/features/crawl/crawl.js +2 -0
- package/dist/features/exhaust/ledger.d.ts +15 -96
- package/dist/features/exhaust/ledger.js +3 -3
- package/dist/features/harness/drive-runs.d.ts +28 -4
- package/dist/features/harness/drive-runs.js +99 -7
- package/dist/features/harness/drivers.d.ts +1 -1
- package/dist/features/harness/drivers.js +1 -1
- package/dist/features/harness/harness.d.ts +5 -0
- package/dist/features/harness/harness.js +24 -12
- package/dist/features/harness/platform/platform-drives.d.ts +7 -1
- package/dist/features/harness/platform/platform-drives.js +12 -7
- package/dist/features/harness/platform/refusal.d.ts +1 -1
- package/dist/features/harness/platform/refusal.js +4 -4
- package/dist/features/harness/platform/remote-drive.js +70 -28
- package/dist/features/harness/platform/server-driver.js +22 -1
- package/dist/features/harness/platform-config.d.ts +1 -10
- package/dist/features/harness/platform-config.js +0 -20
- package/dist/features/license/license.d.ts +2 -14
- package/dist/features/visual/step-shots.d.ts +33 -1
- package/dist/features/visual/step-shots.js +155 -1
- package/dist/features/visual/visual-tools.js +12 -4
- package/dist/hooks/coding-agents.d.ts +6 -0
- package/dist/hooks/coding-agents.js +24 -3
- package/dist/hooks/episode-stamp.d.ts +32 -0
- package/dist/hooks/episode-stamp.js +61 -0
- package/dist/hooks/hook-commands.js +19 -9
- package/dist/index.d.ts +5 -1
- package/dist/index.js +66 -24
- package/dist/judgement/app-graph/journal-steps.d.ts +8 -0
- package/dist/judgement/app-graph/journal-steps.js +92 -0
- package/dist/judgement/capsule/capsule-store.d.ts +2 -39
- package/dist/judgement/domain/domain-model.js +1 -10
- package/dist/judgement/domain/domain-tools.js +4 -2
- package/dist/judgement/runs/artifact/run-store.d.ts +28 -8
- package/dist/judgement/runs/artifact/run-store.js +153 -28
- package/dist/judgement/runs/default-run-id.d.ts +3 -1
- package/dist/judgement/runs/default-run-id.js +15 -3
- package/dist/judgement/runs/drive-run.d.ts +3 -3
- package/dist/judgement/runs/drive-run.js +11 -7
- package/dist/judgement/runs/run-ledger.d.ts +21 -0
- package/dist/judgement/runs/run-ledger.js +143 -0
- package/dist/judgement/runs/runner-port.d.ts +1 -1
- package/dist/judgement/runs/runner-port.js +8 -2
- package/dist/judgement/runs/verification-sync.d.ts +4 -3
- package/dist/judgement/runs/verification-sync.js +27 -5
- package/dist/language/flows/affected-tools.js +2 -1
- package/dist/language/flows/annotate-notes/annotate.js +8 -3
- package/dist/language/flows/annotate-tools.js +1 -1
- package/dist/language/flows/change/affected.d.ts +8 -0
- package/dist/language/flows/change/affected.js +20 -7
- package/dist/language/flows/decision.js +19 -4
- package/dist/language/flows/fields/flow-secret-field.d.ts +9 -0
- package/dist/language/flows/fields/flow-secret-field.js +67 -5
- package/dist/language/flows/flow-anchor.d.ts +5 -0
- package/dist/language/flows/flow-anchor.js +4 -0
- package/dist/language/flows/flow-cross-step.d.ts +7 -1
- package/dist/language/flows/flow-cross-step.js +9 -0
- package/dist/language/flows/flow-expect-grammar.js +15 -10
- package/dist/language/flows/flow-intent.js +6 -1
- package/dist/language/flows/flow-journey.d.ts +8 -0
- package/dist/language/flows/flow-journey.js +13 -0
- package/dist/language/flows/flow-lease.d.ts +27 -0
- package/dist/language/flows/flow-lease.js +59 -0
- package/dist/language/flows/flow-replay-run.d.ts +1 -87
- package/dist/language/flows/flow-replay-run.js +111 -310
- package/dist/language/flows/flow-replay.js +21 -19
- package/dist/language/flows/flow-replayable.d.ts +38 -0
- package/dist/language/flows/flow-replayable.js +179 -0
- package/dist/language/flows/flow-start-path.d.ts +108 -0
- package/dist/language/flows/flow-start-path.js +313 -0
- package/dist/language/flows/flow-step-runners.d.ts +23 -2
- package/dist/language/flows/flow-step-runners.js +191 -32
- package/dist/language/flows/flow-store-for-session.d.ts +8 -1
- package/dist/language/flows/flow-store-for-session.js +6 -0
- package/dist/language/flows/flow-tools.d.ts +2 -23
- package/dist/language/flows/flow-tools.js +63 -113
- package/dist/language/flows/flows.d.ts +4 -6
- package/dist/language/flows/flows.js +90 -15
- package/dist/language/flows/heal-run.d.ts +10 -4
- package/dist/language/flows/heal-run.js +26 -9
- package/dist/language/flows/recording/flake.d.ts +3 -27
- package/dist/language/flows/recording/flake.js +1 -1
- package/dist/language/flows/recording/recording-backtrack.js +1 -4
- package/dist/language/flows/recording/tape/recordings.d.ts +11 -1
- package/dist/language/flows/recording/tape/recordings.js +9 -3
- package/dist/language/flows/replay.d.ts +25 -5
- package/dist/language/flows/replay.js +83 -16
- package/dist/language/flows/stores/assertion-tiers-store.js +1 -1
- package/dist/language/flows/suite/coverage.d.ts +9 -0
- package/dist/language/flows/suite/coverage.js +12 -1
- package/dist/language/flows/suite-selection.d.ts +25 -0
- package/dist/language/flows/suite-selection.js +41 -9
- package/dist/machine/git-tracks.d.ts +6 -0
- package/dist/machine/git-tracks.js +36 -0
- package/dist/memory/cloud/background-sync.d.ts +25 -0
- package/dist/memory/cloud/background-sync.js +79 -0
- package/dist/memory/cloud/cloud-config.d.ts +12 -1
- package/dist/memory/cloud/cloud-config.js +39 -13
- package/dist/memory/cloud/cloud-sync.d.ts +3 -24
- package/dist/memory/cloud/cloud-sync.js +5 -2
- package/dist/memory/cloud/harness-config.d.ts +0 -7
- package/dist/memory/cloud/memory-scope.d.ts +19 -0
- package/dist/memory/cloud/memory-scope.js +48 -0
- package/dist/memory/cloud/sync-answer.d.ts +43 -0
- package/dist/memory/cloud/sync-answer.js +42 -0
- package/dist/memory/cloud/sync-cycle.d.ts +40 -10
- package/dist/memory/cloud/sync-cycle.js +97 -144
- package/dist/memory/cloud/sync-daemon.d.ts +50 -3
- package/dist/memory/cloud/sync-daemon.js +473 -83
- package/dist/memory/cloud/sync-describe.d.ts +28 -0
- package/dist/memory/cloud/sync-describe.js +92 -0
- package/dist/memory/cloud/sync-disk.d.ts +9 -1
- package/dist/memory/cloud/sync-disk.js +137 -33
- package/dist/memory/cloud/sync-flow-versions.d.ts +26 -0
- package/dist/memory/cloud/sync-flow-versions.js +42 -0
- package/dist/memory/impact/impact-store.js +32 -15
- package/dist/memory/intent/intent-shard.d.ts +41 -266
- package/dist/memory/intent/intent-tools.js +20 -61
- package/dist/memory/intent/record-request.d.ts +27 -0
- package/dist/memory/intent/record-request.js +88 -0
- package/dist/memory/intent/settled-words.js +9 -1
- package/dist/memory/journal/drive-flow.d.ts +3 -0
- package/dist/memory/journal/drive-flow.js +11 -41
- package/dist/memory/journal/envelope-store.js +1 -1
- package/dist/memory/journal/envelope.d.ts +6 -154
- package/dist/memory/journal/episode-log.d.ts +107 -0
- package/dist/memory/journal/episode-log.js +302 -0
- package/dist/memory/journal/journal-recorder.d.ts +7 -0
- package/dist/memory/journal/journal-recorder.js +22 -9
- package/dist/memory/journal/on-disk/ambient-file.d.ts +1 -7
- package/dist/memory/journal/on-disk/ambient-file.js +1 -1
- package/dist/memory/journal/on-disk/workspace-gitignore.d.ts +24 -3
- package/dist/memory/journal/on-disk/workspace-gitignore.js +38 -7
- package/dist/memory/journal/on-disk/workspace-tiers.js +7 -0
- package/dist/memory/journal/self-observation.js +3 -1
- package/dist/memory/journal/session-end.js +23 -9
- package/dist/memory/journal/session-journal.js +39 -20
- package/dist/memory/project/artifact-root-resolver.d.ts +14 -1
- package/dist/memory/project/artifact-root-resolver.js +68 -23
- package/dist/memory/project/artifact-root.d.ts +17 -3
- package/dist/memory/project/artifact-root.js +47 -9
- package/dist/memory/project/fs/fs-port.d.ts +5 -0
- package/dist/memory/project/fs/fs-port.js +13 -0
- package/dist/memory/project/learned-routes.d.ts +3 -4
- package/dist/memory/project/learned-routes.js +3 -11
- package/dist/memory/project/link-directory.js +5 -2
- package/dist/memory/project/root-claims.d.ts +3 -1
- package/dist/memory/project/root-claims.js +41 -7
- package/dist/memory/project/session-root.d.ts +1 -1
- package/dist/memory/project/session-root.js +1 -15
- package/dist/memory/project/sync-status.js +5 -6
- package/dist/memory/recall/memory-tools.js +2 -2
- package/dist/memory/recall/platform-memory.d.ts +3 -1
- package/dist/memory/recall/platform-memory.js +9 -1
- package/dist/memory/recall/project-memory.js +15 -19
- package/dist/portal/bridge/auth-failure-reason.d.ts +13 -0
- package/dist/portal/bridge/auth-failure-reason.js +19 -0
- package/dist/portal/bridge/bridge.d.ts +19 -4
- package/dist/portal/bridge/bridge.js +150 -177
- package/dist/portal/bridge/harness-request.d.ts +15 -0
- package/dist/portal/bridge/harness-request.js +19 -0
- package/dist/portal/bridge/origin/origin-follow.d.ts +46 -0
- package/dist/portal/bridge/origin/origin-follow.js +110 -0
- package/dist/portal/bridge/pairing-token.d.ts +6 -0
- package/dist/portal/bridge/pairing-token.js +47 -16
- package/dist/portal/bridge/protocol-skew.d.ts +27 -2
- package/dist/portal/bridge/protocol-skew.js +66 -2
- package/dist/portal/bridge/session-nonces.d.ts +46 -0
- package/dist/portal/bridge/session-nonces.js +72 -0
- package/dist/portal/input/viewport-tools.d.ts +31 -0
- package/dist/portal/input/viewport-tools.js +106 -15
- package/dist/portal/pool/bounded-close.d.ts +23 -0
- package/dist/portal/pool/bounded-close.js +38 -0
- package/dist/portal/pool/browser-pool.d.ts +44 -39
- package/dist/portal/pool/browser-pool.js +247 -95
- package/dist/portal/pool/context-permissions.d.ts +9 -1
- package/dist/portal/pool/context-permissions.js +26 -0
- package/dist/portal/pool/lease-emulation.d.ts +37 -0
- package/dist/portal/pool/lease-emulation.js +29 -0
- package/dist/portal/pool/playwright-launcher.d.ts +6 -0
- package/dist/portal/pool/playwright-launcher.js +74 -7
- package/dist/portal/pool/pool-contract.d.ts +23 -1
- package/dist/portal/pool/pool-lease.d.ts +128 -0
- package/dist/portal/pool/pool-lease.js +49 -0
- package/dist/portal/pool/zero-install.d.ts +8 -1
- package/dist/portal/pool/zero-install.js +24 -2
- package/dist/portal/production/production-activation.d.ts +136 -0
- package/dist/portal/production/production-activation.js +173 -0
- package/dist/portal/production/production-drive.d.ts +52 -0
- package/dist/portal/production/production-drive.js +301 -0
- package/dist/portal/production/production-hello.d.ts +23 -0
- package/dist/portal/production/production-hello.js +23 -0
- package/dist/portal/realm/web-realm.js +42 -15
- package/dist/portal/session/control-envelope.d.ts +1 -1
- package/dist/portal/session/dev-server/served-document.d.ts +0 -5
- package/dist/portal/session/dev-server/served-document.js +6 -8
- package/dist/portal/session/facts/handshake-facts.d.ts +8 -1
- package/dist/portal/session/first-run-wiring.d.ts +3 -36
- package/dist/portal/session/first-run-wiring.js +10 -103
- package/dist/portal/session/live-control-tools.js +61 -19
- package/dist/portal/session/no-session-next-action.d.ts +11 -0
- package/dist/portal/session/no-session-next-action.js +40 -15
- package/dist/portal/session/no-session-watch.d.ts +7 -0
- package/dist/portal/session/no-session-watch.js +67 -23
- package/dist/portal/session/output-budget.d.ts +10 -0
- package/dist/portal/session/output-budget.js +16 -0
- package/dist/portal/session/presence/session-lease.d.ts +2 -0
- package/dist/portal/session/presence/session-lease.js +8 -0
- package/dist/portal/session/recorded-gaps.d.ts +15 -11
- package/dist/portal/session/recorded-gaps.js +39 -18
- package/dist/portal/session/serving-directory.d.ts +24 -2
- package/dist/portal/session/serving-directory.js +93 -5
- package/dist/portal/session/session-info.d.ts +26 -0
- package/dist/portal/session/session-info.js +20 -0
- package/dist/portal/session/session-manager.d.ts +35 -3
- package/dist/portal/session/session-manager.js +69 -14
- package/dist/portal/session/session-successor.js +1 -9
- package/dist/portal/session/session-tools.js +22 -4
- package/dist/portal/session/session.d.ts +10 -10
- package/dist/portal/session/session.js +37 -29
- package/dist/portal/session/zero-install-first-call.d.ts +7 -2
- package/dist/portal/session/zero-install-first-call.js +43 -20
- package/dist/start-wiring.d.ts +2 -2
- package/dist/start-wiring.js +17 -3
- package/dist/status-payload.d.ts +11 -1
- package/dist/status-payload.js +7 -1
- package/dist/surface/agent-presence-grace.d.ts +11 -0
- package/dist/surface/agent-presence-grace.js +34 -0
- package/dist/surface/http-server.d.ts +12 -1
- package/dist/surface/http-server.js +64 -15
- package/dist/surface/mcp/faults/mcp-outage.d.ts +12 -2
- package/dist/surface/mcp/faults/mcp-outage.js +19 -1
- package/dist/surface/mcp/mcp-proxy.d.ts +17 -74
- package/dist/surface/mcp/mcp-proxy.js +194 -267
- package/dist/surface/mcp/mcp.d.ts +20 -3
- package/dist/surface/mcp/mcp.js +88 -25
- package/dist/surface/mcp/proxy/drive-calls.d.ts +44 -0
- package/dist/surface/mcp/proxy/drive-calls.js +114 -5
- package/dist/surface/mcp/proxy/proxy-boot.d.ts +11 -0
- package/dist/surface/mcp/proxy/proxy-boot.js +1 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.d.ts +6 -0
- package/dist/surface/mcp/proxy/proxy-daemon-probe.js +14 -1
- package/dist/surface/mcp/proxy/proxy-handshake.d.ts +34 -2
- package/dist/surface/mcp/proxy/proxy-handshake.js +76 -8
- package/dist/surface/mcp/server-instructions.js +35 -16
- package/dist/surface/mcp/shared-params.d.ts +8 -0
- package/dist/surface/mcp/shared-params.js +15 -1
- package/dist/surface/mcp/sse-frame-parser.d.ts +11 -0
- package/dist/surface/mcp/sse-frame-parser.js +18 -0
- package/dist/surface/mcp/surface-vocabulary.d.ts +2 -0
- package/dist/surface/mcp/surface-vocabulary.js +13 -0
- package/dist/surface/mcp/tool-catalog-cache.d.ts +2 -0
- package/dist/surface/mcp/tool-catalog-cache.js +14 -4
- package/dist/surface/tools/account-tool.d.ts +4 -3
- package/dist/surface/tools/account-tool.js +20 -31
- package/dist/surface/tools/act/act-danger.d.ts +2 -0
- package/dist/surface/tools/act/act-danger.js +41 -14
- package/dist/surface/tools/act/act-observation.d.ts +11 -0
- package/dist/surface/tools/act/act-observation.js +33 -0
- package/dist/surface/tools/act/act-preflight.js +10 -3
- package/dist/surface/tools/act/act-sequence-retry.js +2 -1
- package/dist/surface/tools/act/act-target.js +19 -5
- package/dist/surface/tools/act/durable.js +1 -1
- package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +9 -7
- package/dist/surface/tools/act/navigation/navigate-arrival.js +11 -14
- package/dist/surface/tools/act/unsettled-find.d.ts +36 -0
- package/dist/surface/tools/act/unsettled-find.js +71 -0
- package/dist/surface/tools/act-sequence-tool.js +53 -24
- package/dist/surface/tools/act-tools.d.ts +2 -3
- package/dist/surface/tools/act-tools.js +49 -47
- package/dist/surface/tools/agent/compact-envelope.d.ts +2 -2
- package/dist/surface/tools/agent/for-the-agent.js +41 -3
- package/dist/surface/tools/assert/assert-grade.js +8 -3
- package/dist/surface/tools/assert/assert-verdict.js +4 -2
- package/dist/surface/tools/browser-tools.js +7 -4
- package/dist/surface/tools/chat-drives.js +50 -25
- package/dist/surface/tools/coverage-tools.js +1 -1
- package/dist/surface/tools/dynamic-tools.d.ts +8 -0
- package/dist/surface/tools/dynamic-tools.js +89 -34
- package/dist/surface/tools/empty-session-list.d.ts +18 -25
- package/dist/surface/tools/empty-session-list.js +67 -38
- package/dist/surface/tools/error-recovery.d.ts +17 -7
- package/dist/surface/tools/error-recovery.js +53 -20
- package/dist/surface/tools/explore-tools.d.ts +10 -0
- package/dist/surface/tools/explore-tools.js +72 -19
- package/dist/surface/tools/feedback-tools.js +23 -2
- package/dist/surface/tools/gap-novelty.d.ts +6 -0
- package/dist/surface/tools/gap-novelty.js +9 -0
- package/dist/surface/tools/gaps/capability-absences.js +4 -3
- package/dist/surface/tools/harness-explore.d.ts +1 -1
- package/dist/surface/tools/harness-explore.js +6 -4
- package/dist/surface/tools/harness-gate.d.ts +43 -21
- package/dist/surface/tools/harness-gate.js +55 -81
- package/dist/surface/tools/harness-script.d.ts +2 -0
- package/dist/surface/tools/harness-script.js +11 -6
- package/dist/surface/tools/harness-toolset.js +3 -4
- package/dist/surface/tools/invoke-tool.d.ts +0 -8
- package/dist/surface/tools/invoke-tool.js +164 -178
- package/dist/surface/tools/lease-hint.d.ts +9 -0
- package/dist/surface/tools/lease-hint.js +22 -3
- package/dist/surface/tools/lease-permissions.d.ts +1 -1
- package/dist/surface/tools/lease-readiness.d.ts +55 -0
- package/dist/surface/tools/lease-readiness.js +150 -2
- package/dist/surface/tools/lease-tools.d.ts +3 -75
- package/dist/surface/tools/lease-tools.js +124 -188
- package/dist/surface/tools/map-tools.d.ts +20 -0
- package/dist/surface/tools/map-tools.js +145 -0
- package/dist/surface/tools/merge-tools.js +11 -7
- package/dist/surface/tools/next-step.js +6 -3
- package/dist/surface/tools/observe-tools.js +46 -35
- package/dist/surface/tools/platform-moment.d.ts +3 -12
- package/dist/surface/tools/platform-moment.js +12 -24
- package/dist/surface/tools/read/complete-snapshot.d.ts +7 -1
- package/dist/surface/tools/read/complete-snapshot.js +13 -2
- package/dist/surface/tools/read/query-paginate.js +6 -0
- package/dist/surface/tools/read/query-shape.d.ts +9 -0
- package/dist/surface/tools/read/query-shape.js +15 -0
- package/dist/surface/tools/read/snapshot-unmounted-note.d.ts +1 -0
- package/dist/surface/tools/read/snapshot-unmounted-note.js +73 -0
- package/dist/surface/tools/read-tools.js +5 -5
- package/dist/surface/tools/real-input-attempt.d.ts +11 -0
- package/dist/surface/tools/real-input-attempt.js +206 -38
- package/dist/surface/tools/reconcile-tools.js +21 -8
- package/dist/surface/tools/reticle-result.d.ts +3 -0
- package/dist/surface/tools/reticle-result.js +8 -1
- package/dist/surface/tools/run-report.d.ts +22 -0
- package/dist/surface/tools/run-report.js +141 -0
- package/dist/surface/tools/session-ports.d.ts +57 -0
- package/dist/surface/tools/session-ports.js +102 -0
- package/dist/surface/tools/tool-kit.d.ts +58 -4
- package/dist/surface/tools/tool-kit.js +140 -6
- package/dist/surface/tools/tool-surface.d.ts +2 -0
- package/dist/surface/tools/tool-surface.js +45 -0
- package/dist/surface/tools/tools.js +49 -87
- package/dist/telemetry/automation-hint.d.ts +5 -0
- package/dist/telemetry/automation-hint.js +7 -0
- package/dist/telemetry/cli-telemetry.d.ts +22 -0
- package/dist/telemetry/cli-telemetry.js +80 -11
- package/dist/telemetry/daemon-telemetry.d.ts +3 -1
- package/dist/telemetry/daemon-telemetry.js +9 -2
- package/dist/telemetry/feedback-cli.d.ts +1 -1
- package/dist/telemetry/feedback-cli.js +8 -3
- package/dist/telemetry/feedback.d.ts +1 -1
- package/dist/telemetry/feedback.js +51 -4
- package/dist/telemetry/harness-run.d.ts +3 -3
- package/dist/telemetry/harness-run.js +18 -7
- package/dist/telemetry/hud-events.d.ts +1 -1
- package/dist/telemetry/hud-metrics.d.ts +6 -3
- package/dist/telemetry/hud-metrics.js +20 -8
- package/dist/telemetry/install-source.js +1 -1
- package/dist/telemetry/mcp-connection.d.ts +1 -1
- package/dist/telemetry/mcp-connection.js +21 -2
- package/dist/telemetry/onboarding-firsts.d.ts +6 -1
- package/dist/telemetry/onboarding-firsts.js +41 -1
- package/dist/telemetry/proxy-telemetry.d.ts +42 -0
- package/dist/telemetry/proxy-telemetry.js +70 -1
- package/dist/telemetry/session-metrics.d.ts +1 -3
- package/dist/telemetry/session-metrics.js +16 -12
- package/dist/telemetry/telemetry.d.ts +9 -1
- package/dist/telemetry/telemetry.js +16 -1
- package/dist/telemetry/verification-of.d.ts +3 -1
- package/dist/telemetry/verification-of.js +7 -1
- package/dist/wire-journal.js +12 -2
- package/docs/README.md +4 -2
- package/docs/actions.mdx +7 -6
- package/docs/adapters.md +2 -1
- package/docs/agent-cheatsheet.md +19 -5
- package/docs/architecture.md +13 -10
- package/docs/autodrive.md +6 -5
- package/docs/benchmarks.md +2 -2
- package/docs/capabilities.mdx +1 -1
- package/docs/cli/affected.mdx +1 -1
- package/docs/cli/cloud.mdx +6 -6
- package/docs/cli/doctor.mdx +3 -1
- package/docs/cli/feedback.mdx +11 -7
- package/docs/cli/gate.mdx +1 -1
- package/docs/cli/help.mdx +1 -1
- package/docs/cli/init.mdx +20 -16
- package/docs/cli/mcp.mdx +5 -2
- package/docs/cli/open.mdx +5 -2
- package/docs/cli/report.mdx +1 -1
- package/docs/cli/restart.mdx +1 -1
- package/docs/cli/rollback.mdx +4 -4
- package/docs/cli/serve.mdx +7 -5
- package/docs/cli/setup.mdx +1 -1
- package/docs/cli/status.mdx +6 -2
- package/docs/cli/stop.mdx +3 -3
- package/docs/cli/telemetry.mdx +5 -1
- package/docs/cli/try.mdx +8 -8
- package/docs/cli/update.mdx +8 -5
- package/docs/cli/verify.mdx +12 -5
- package/docs/cli/version.mdx +1 -1
- package/docs/cli.mdx +10 -6
- package/docs/debugging.md +1 -1
- package/docs/deploy-checks.md +8 -6
- package/docs/desktop.mdx +14 -18
- package/docs/enterprise.md +6 -6
- package/docs/environment.mdx +5 -3
- package/docs/faq.mdx +9 -6
- package/docs/first-drive.md +19 -9
- package/docs/flows.md +3 -4
- package/docs/for-agents.md +1 -1
- package/docs/frameworks.mdx +34 -11
- package/docs/getting-started.md +46 -29
- package/docs/http-transport.md +2 -2
- package/docs/human-control.md +8 -8
- package/docs/index.mdx +2 -2
- package/docs/install-agentic.mdx +18 -19
- package/docs/install-manual.mdx +8 -4
- package/docs/integration-patterns.md +5 -5
- package/docs/multi-agent-testing.md +7 -5
- package/docs/packages/browser.mdx +34 -2
- package/docs/packages/core.mdx +2 -1
- package/docs/packages/electron.mdx +15 -3
- package/docs/packages/eslint-plugin.mdx +1 -1
- package/docs/packages/next.mdx +17 -5
- package/docs/packages/react.mdx +8 -1
- package/docs/packages/server.mdx +3 -3
- package/docs/packages/tauri.mdx +3 -3
- package/docs/packages/vite-plugin.mdx +1 -1
- package/docs/packages.mdx +19 -6
- package/docs/platform-integration.md +12 -4
- package/docs/predicates.mdx +18 -7
- package/docs/production-mode.md +108 -0
- package/docs/prompt-capture.md +99 -0
- package/docs/quickstart.mdx +14 -12
- package/docs/recipes.mdx +9 -8
- package/docs/required-checks.md +3 -2
- package/docs/skill-file.mdx +4 -3
- package/docs/skill-setup.md +2 -2
- package/docs/skill.md +62 -70
- package/docs/state-files.md +1 -0
- package/docs/state-management.mdx +11 -9
- package/docs/system-map.md +14 -13
- package/docs/telemetry.md +32 -24
- package/docs/testing.md +9 -5
- package/docs/tools/act-and-wait.mdx +17 -13
- package/docs/tools/act-sequence.mdx +40 -66
- package/docs/tools/act.mdx +7 -5
- package/docs/tools/assert.mdx +1 -1
- package/docs/tools/look.mdx +1 -1
- package/docs/tools/navigate.mdx +1 -1
- package/docs/tools/network.mdx +13 -11
- package/docs/tools/overview.mdx +3 -3
- package/docs/tools/query.mdx +3 -3
- package/docs/tools/session-and-feedback.mdx +9 -6
- package/docs/tools/sessions.mdx +7 -0
- package/docs/tools/snapshot.mdx +9 -7
- package/docs/tools/tools-and-run.mdx +11 -10
- package/docs/tools/verify.mdx +1 -1
- package/docs/troubleshooting.mdx +21 -9
- package/docs/usage.md +58 -43
- package/docs/use-cases.mdx +2 -2
- package/docs/vs-chrome-devtools-mcp.mdx +5 -5
- package/docs/vs-playwright-mcp.mdx +5 -4
- package/docs/what-is-recorded.md +12 -7
- package/docs/what-is-reticle.mdx +2 -2
- package/docs/why-reticle.mdx +1 -1
- package/package.json +9 -12
- package/dist/command/dev/stale-issue-guard.d.ts +0 -34
- package/dist/command/dev/stale-issue-guard.js +0 -69
|
@@ -43,111 +43,39 @@ export type IntentStatus = (typeof IntentStatus)[keyof typeof IntentStatus];
|
|
|
43
43
|
declare const IntentRecordSchema: z.ZodObject<{
|
|
44
44
|
id: z.ZodString;
|
|
45
45
|
statement: z.ZodString;
|
|
46
|
-
state: z.ZodEnum<
|
|
46
|
+
state: z.ZodEnum<{
|
|
47
|
+
proved: "proved";
|
|
48
|
+
declared: "declared";
|
|
49
|
+
bound: "bound";
|
|
50
|
+
}>;
|
|
47
51
|
declaredAt: z.ZodNumber;
|
|
48
52
|
binding: z.ZodOptional<z.ZodUnknown>;
|
|
49
53
|
surface: z.ZodOptional<z.ZodObject<{
|
|
50
54
|
route: z.ZodOptional<z.ZodString>;
|
|
51
55
|
flow: z.ZodOptional<z.ZodString>;
|
|
52
|
-
files: z.ZodOptional<z.ZodArray<z.ZodString
|
|
53
|
-
},
|
|
54
|
-
route?: string | undefined;
|
|
55
|
-
flow?: string | undefined;
|
|
56
|
-
files?: string[] | undefined;
|
|
57
|
-
}, {
|
|
58
|
-
route?: string | undefined;
|
|
59
|
-
flow?: string | undefined;
|
|
60
|
-
files?: string[] | undefined;
|
|
61
|
-
}>>;
|
|
56
|
+
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
57
|
+
}, z.core.$strip>>;
|
|
62
58
|
provenBy: z.ZodOptional<z.ZodObject<{
|
|
63
59
|
verdictId: z.ZodString;
|
|
64
60
|
grade: z.ZodString;
|
|
65
61
|
at: z.ZodNumber;
|
|
66
62
|
runId: z.ZodOptional<z.ZodString>;
|
|
67
|
-
},
|
|
68
|
-
at: number;
|
|
69
|
-
grade: string;
|
|
70
|
-
verdictId: string;
|
|
71
|
-
runId?: string | undefined;
|
|
72
|
-
}, {
|
|
73
|
-
at: number;
|
|
74
|
-
grade: string;
|
|
75
|
-
verdictId: string;
|
|
76
|
-
runId?: string | undefined;
|
|
77
|
-
}>>;
|
|
63
|
+
}, z.core.$strip>>;
|
|
78
64
|
amended: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
79
65
|
statement: z.ZodString;
|
|
80
66
|
at: z.ZodNumber;
|
|
81
|
-
},
|
|
82
|
-
at: number;
|
|
83
|
-
statement: string;
|
|
84
|
-
}, {
|
|
85
|
-
at: number;
|
|
86
|
-
statement: string;
|
|
87
|
-
}>, "many">>;
|
|
88
|
-
} & {
|
|
89
|
-
/** Which shard this lives in. Stored as well as implied, so a file read alone is self-describing. */
|
|
67
|
+
}, z.core.$strip>>>;
|
|
90
68
|
subject: z.ZodString;
|
|
91
|
-
status: z.ZodEnum<
|
|
92
|
-
|
|
69
|
+
status: z.ZodEnum<{
|
|
70
|
+
proved: "proved";
|
|
71
|
+
proposed: "proposed";
|
|
72
|
+
agreed: "agreed";
|
|
73
|
+
stale: "stale";
|
|
74
|
+
}>;
|
|
93
75
|
why: z.ZodOptional<z.ZodString>;
|
|
94
|
-
/** Where it came from — "the user, in conversation" beats an anonymous assertion in six months. */
|
|
95
76
|
source: z.ZodOptional<z.ZodString>;
|
|
96
|
-
/** When it was last touched, so a stale-looking record can be told from an untouched one. */
|
|
97
77
|
updatedAt: z.ZodOptional<z.ZodNumber>;
|
|
98
|
-
},
|
|
99
|
-
status: "proved" | "proposed" | "agreed" | "stale";
|
|
100
|
-
state: "proved" | "declared" | "bound";
|
|
101
|
-
id: string;
|
|
102
|
-
subject: string;
|
|
103
|
-
statement: string;
|
|
104
|
-
declaredAt: number;
|
|
105
|
-
surface?: {
|
|
106
|
-
route?: string | undefined;
|
|
107
|
-
flow?: string | undefined;
|
|
108
|
-
files?: string[] | undefined;
|
|
109
|
-
} | undefined;
|
|
110
|
-
source?: string | undefined;
|
|
111
|
-
why?: string | undefined;
|
|
112
|
-
updatedAt?: number | undefined;
|
|
113
|
-
binding?: unknown;
|
|
114
|
-
provenBy?: {
|
|
115
|
-
at: number;
|
|
116
|
-
grade: string;
|
|
117
|
-
verdictId: string;
|
|
118
|
-
runId?: string | undefined;
|
|
119
|
-
} | undefined;
|
|
120
|
-
amended?: {
|
|
121
|
-
at: number;
|
|
122
|
-
statement: string;
|
|
123
|
-
}[] | undefined;
|
|
124
|
-
}, {
|
|
125
|
-
status: "proved" | "proposed" | "agreed" | "stale";
|
|
126
|
-
state: "proved" | "declared" | "bound";
|
|
127
|
-
id: string;
|
|
128
|
-
subject: string;
|
|
129
|
-
statement: string;
|
|
130
|
-
declaredAt: number;
|
|
131
|
-
surface?: {
|
|
132
|
-
route?: string | undefined;
|
|
133
|
-
flow?: string | undefined;
|
|
134
|
-
files?: string[] | undefined;
|
|
135
|
-
} | undefined;
|
|
136
|
-
source?: string | undefined;
|
|
137
|
-
why?: string | undefined;
|
|
138
|
-
updatedAt?: number | undefined;
|
|
139
|
-
binding?: unknown;
|
|
140
|
-
provenBy?: {
|
|
141
|
-
at: number;
|
|
142
|
-
grade: string;
|
|
143
|
-
verdictId: string;
|
|
144
|
-
runId?: string | undefined;
|
|
145
|
-
} | undefined;
|
|
146
|
-
amended?: {
|
|
147
|
-
at: number;
|
|
148
|
-
statement: string;
|
|
149
|
-
}[] | undefined;
|
|
150
|
-
}>;
|
|
78
|
+
}, z.core.$strip>;
|
|
151
79
|
export type IntentRecord = z.infer<typeof IntentRecordSchema>;
|
|
152
80
|
export declare const IntentShardSchema: z.ZodObject<{
|
|
153
81
|
version: z.ZodLiteral<1>;
|
|
@@ -155,172 +83,40 @@ export declare const IntentShardSchema: z.ZodObject<{
|
|
|
155
83
|
intents: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
156
84
|
id: z.ZodString;
|
|
157
85
|
statement: z.ZodString;
|
|
158
|
-
state: z.ZodEnum<
|
|
86
|
+
state: z.ZodEnum<{
|
|
87
|
+
proved: "proved";
|
|
88
|
+
declared: "declared";
|
|
89
|
+
bound: "bound";
|
|
90
|
+
}>;
|
|
159
91
|
declaredAt: z.ZodNumber;
|
|
160
92
|
binding: z.ZodOptional<z.ZodUnknown>;
|
|
161
93
|
surface: z.ZodOptional<z.ZodObject<{
|
|
162
94
|
route: z.ZodOptional<z.ZodString>;
|
|
163
95
|
flow: z.ZodOptional<z.ZodString>;
|
|
164
|
-
files: z.ZodOptional<z.ZodArray<z.ZodString
|
|
165
|
-
},
|
|
166
|
-
route?: string | undefined;
|
|
167
|
-
flow?: string | undefined;
|
|
168
|
-
files?: string[] | undefined;
|
|
169
|
-
}, {
|
|
170
|
-
route?: string | undefined;
|
|
171
|
-
flow?: string | undefined;
|
|
172
|
-
files?: string[] | undefined;
|
|
173
|
-
}>>;
|
|
96
|
+
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
97
|
+
}, z.core.$strip>>;
|
|
174
98
|
provenBy: z.ZodOptional<z.ZodObject<{
|
|
175
99
|
verdictId: z.ZodString;
|
|
176
100
|
grade: z.ZodString;
|
|
177
101
|
at: z.ZodNumber;
|
|
178
102
|
runId: z.ZodOptional<z.ZodString>;
|
|
179
|
-
},
|
|
180
|
-
at: number;
|
|
181
|
-
grade: string;
|
|
182
|
-
verdictId: string;
|
|
183
|
-
runId?: string | undefined;
|
|
184
|
-
}, {
|
|
185
|
-
at: number;
|
|
186
|
-
grade: string;
|
|
187
|
-
verdictId: string;
|
|
188
|
-
runId?: string | undefined;
|
|
189
|
-
}>>;
|
|
103
|
+
}, z.core.$strip>>;
|
|
190
104
|
amended: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
191
105
|
statement: z.ZodString;
|
|
192
106
|
at: z.ZodNumber;
|
|
193
|
-
},
|
|
194
|
-
at: number;
|
|
195
|
-
statement: string;
|
|
196
|
-
}, {
|
|
197
|
-
at: number;
|
|
198
|
-
statement: string;
|
|
199
|
-
}>, "many">>;
|
|
200
|
-
} & {
|
|
201
|
-
/** Which shard this lives in. Stored as well as implied, so a file read alone is self-describing. */
|
|
107
|
+
}, z.core.$strip>>>;
|
|
202
108
|
subject: z.ZodString;
|
|
203
|
-
status: z.ZodEnum<
|
|
204
|
-
|
|
109
|
+
status: z.ZodEnum<{
|
|
110
|
+
proved: "proved";
|
|
111
|
+
proposed: "proposed";
|
|
112
|
+
agreed: "agreed";
|
|
113
|
+
stale: "stale";
|
|
114
|
+
}>;
|
|
205
115
|
why: z.ZodOptional<z.ZodString>;
|
|
206
|
-
/** Where it came from — "the user, in conversation" beats an anonymous assertion in six months. */
|
|
207
116
|
source: z.ZodOptional<z.ZodString>;
|
|
208
|
-
/** When it was last touched, so a stale-looking record can be told from an untouched one. */
|
|
209
117
|
updatedAt: z.ZodOptional<z.ZodNumber>;
|
|
210
|
-
},
|
|
211
|
-
|
|
212
|
-
state: "proved" | "declared" | "bound";
|
|
213
|
-
id: string;
|
|
214
|
-
subject: string;
|
|
215
|
-
statement: string;
|
|
216
|
-
declaredAt: number;
|
|
217
|
-
surface?: {
|
|
218
|
-
route?: string | undefined;
|
|
219
|
-
flow?: string | undefined;
|
|
220
|
-
files?: string[] | undefined;
|
|
221
|
-
} | undefined;
|
|
222
|
-
source?: string | undefined;
|
|
223
|
-
why?: string | undefined;
|
|
224
|
-
updatedAt?: number | undefined;
|
|
225
|
-
binding?: unknown;
|
|
226
|
-
provenBy?: {
|
|
227
|
-
at: number;
|
|
228
|
-
grade: string;
|
|
229
|
-
verdictId: string;
|
|
230
|
-
runId?: string | undefined;
|
|
231
|
-
} | undefined;
|
|
232
|
-
amended?: {
|
|
233
|
-
at: number;
|
|
234
|
-
statement: string;
|
|
235
|
-
}[] | undefined;
|
|
236
|
-
}, {
|
|
237
|
-
status: "proved" | "proposed" | "agreed" | "stale";
|
|
238
|
-
state: "proved" | "declared" | "bound";
|
|
239
|
-
id: string;
|
|
240
|
-
subject: string;
|
|
241
|
-
statement: string;
|
|
242
|
-
declaredAt: number;
|
|
243
|
-
surface?: {
|
|
244
|
-
route?: string | undefined;
|
|
245
|
-
flow?: string | undefined;
|
|
246
|
-
files?: string[] | undefined;
|
|
247
|
-
} | undefined;
|
|
248
|
-
source?: string | undefined;
|
|
249
|
-
why?: string | undefined;
|
|
250
|
-
updatedAt?: number | undefined;
|
|
251
|
-
binding?: unknown;
|
|
252
|
-
provenBy?: {
|
|
253
|
-
at: number;
|
|
254
|
-
grade: string;
|
|
255
|
-
verdictId: string;
|
|
256
|
-
runId?: string | undefined;
|
|
257
|
-
} | undefined;
|
|
258
|
-
amended?: {
|
|
259
|
-
at: number;
|
|
260
|
-
statement: string;
|
|
261
|
-
}[] | undefined;
|
|
262
|
-
}>>;
|
|
263
|
-
}, "strip", z.ZodTypeAny, {
|
|
264
|
-
version: 1;
|
|
265
|
-
intents: Record<string, {
|
|
266
|
-
status: "proved" | "proposed" | "agreed" | "stale";
|
|
267
|
-
state: "proved" | "declared" | "bound";
|
|
268
|
-
id: string;
|
|
269
|
-
subject: string;
|
|
270
|
-
statement: string;
|
|
271
|
-
declaredAt: number;
|
|
272
|
-
surface?: {
|
|
273
|
-
route?: string | undefined;
|
|
274
|
-
flow?: string | undefined;
|
|
275
|
-
files?: string[] | undefined;
|
|
276
|
-
} | undefined;
|
|
277
|
-
source?: string | undefined;
|
|
278
|
-
why?: string | undefined;
|
|
279
|
-
updatedAt?: number | undefined;
|
|
280
|
-
binding?: unknown;
|
|
281
|
-
provenBy?: {
|
|
282
|
-
at: number;
|
|
283
|
-
grade: string;
|
|
284
|
-
verdictId: string;
|
|
285
|
-
runId?: string | undefined;
|
|
286
|
-
} | undefined;
|
|
287
|
-
amended?: {
|
|
288
|
-
at: number;
|
|
289
|
-
statement: string;
|
|
290
|
-
}[] | undefined;
|
|
291
|
-
}>;
|
|
292
|
-
subject: string;
|
|
293
|
-
}, {
|
|
294
|
-
version: 1;
|
|
295
|
-
intents: Record<string, {
|
|
296
|
-
status: "proved" | "proposed" | "agreed" | "stale";
|
|
297
|
-
state: "proved" | "declared" | "bound";
|
|
298
|
-
id: string;
|
|
299
|
-
subject: string;
|
|
300
|
-
statement: string;
|
|
301
|
-
declaredAt: number;
|
|
302
|
-
surface?: {
|
|
303
|
-
route?: string | undefined;
|
|
304
|
-
flow?: string | undefined;
|
|
305
|
-
files?: string[] | undefined;
|
|
306
|
-
} | undefined;
|
|
307
|
-
source?: string | undefined;
|
|
308
|
-
why?: string | undefined;
|
|
309
|
-
updatedAt?: number | undefined;
|
|
310
|
-
binding?: unknown;
|
|
311
|
-
provenBy?: {
|
|
312
|
-
at: number;
|
|
313
|
-
grade: string;
|
|
314
|
-
verdictId: string;
|
|
315
|
-
runId?: string | undefined;
|
|
316
|
-
} | undefined;
|
|
317
|
-
amended?: {
|
|
318
|
-
at: number;
|
|
319
|
-
statement: string;
|
|
320
|
-
}[] | undefined;
|
|
321
|
-
}>;
|
|
322
|
-
subject: string;
|
|
323
|
-
}>;
|
|
118
|
+
}, z.core.$strip>>;
|
|
119
|
+
}, z.core.$strip>;
|
|
324
120
|
export type IntentShard = z.infer<typeof IntentShardSchema>;
|
|
325
121
|
export declare const IntentIndexSchema: z.ZodObject<{
|
|
326
122
|
version: z.ZodLiteral<1>;
|
|
@@ -328,35 +124,14 @@ export declare const IntentIndexSchema: z.ZodObject<{
|
|
|
328
124
|
id: z.ZodString;
|
|
329
125
|
subject: z.ZodString;
|
|
330
126
|
statement: z.ZodString;
|
|
331
|
-
status: z.ZodEnum<
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
},
|
|
338
|
-
|
|
339
|
-
id: string;
|
|
340
|
-
subject: string;
|
|
341
|
-
statement: string;
|
|
342
|
-
}>, "many">;
|
|
343
|
-
}, "strip", z.ZodTypeAny, {
|
|
344
|
-
entries: {
|
|
345
|
-
status: "proved" | "proposed" | "agreed" | "stale";
|
|
346
|
-
id: string;
|
|
347
|
-
subject: string;
|
|
348
|
-
statement: string;
|
|
349
|
-
}[];
|
|
350
|
-
version: 1;
|
|
351
|
-
}, {
|
|
352
|
-
entries: {
|
|
353
|
-
status: "proved" | "proposed" | "agreed" | "stale";
|
|
354
|
-
id: string;
|
|
355
|
-
subject: string;
|
|
356
|
-
statement: string;
|
|
357
|
-
}[];
|
|
358
|
-
version: 1;
|
|
359
|
-
}>;
|
|
127
|
+
status: z.ZodEnum<{
|
|
128
|
+
proved: "proved";
|
|
129
|
+
proposed: "proposed";
|
|
130
|
+
agreed: "agreed";
|
|
131
|
+
stale: "stale";
|
|
132
|
+
}>;
|
|
133
|
+
}, z.core.$strip>>;
|
|
134
|
+
}, z.core.$strip>;
|
|
360
135
|
export type IntentIndex = z.infer<typeof IntentIndexSchema>;
|
|
361
136
|
export declare const emptyShard: (subject: string) => IntentShard;
|
|
362
137
|
/** The verification lifecycle a legacy record carried, mapped onto the settledness axis. */
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
2
1
|
import { dirname, join } from 'node:path';
|
|
3
2
|
import { z } from 'zod';
|
|
4
|
-
import {
|
|
5
|
-
import { redactFeedbackText } from '../../telemetry/feedback.js';
|
|
3
|
+
import { promptContextFor, sharesRequests } from './record-request.js';
|
|
6
4
|
import { reticleDirPaths } from '../project/dir/reticle-dir.js';
|
|
7
5
|
import { IntentStore } from './intent-store.js';
|
|
8
6
|
import { IntentShardStore } from './intent-shard-store.js';
|
|
9
7
|
import { IntentStatus } from './intent-shard.js';
|
|
10
8
|
import { UNSORTED_SUBJECT } from './intent-subject.js';
|
|
11
|
-
import {
|
|
9
|
+
import { ReticleTool } from '@reticlehq/core';
|
|
12
10
|
import { sessionIdShape } from '../../surface/tools/tool-kit.js';
|
|
13
11
|
import { PredicateSchema } from '@reticlehq/engine/question/predicate/predicate.js';
|
|
14
12
|
import { sessionRoot } from '../project/session-root.js';
|
|
@@ -81,7 +79,10 @@ export const INTENT_TOOLS = [
|
|
|
81
79
|
.optional()
|
|
82
80
|
.describe('declare only. Batchable — declare every intent for a feature in one call.'),
|
|
83
81
|
request: z.string().optional().describe("declare: the user's words, verbatim."),
|
|
84
|
-
id: z
|
|
82
|
+
id: z
|
|
83
|
+
.string()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe('bind, get and record: which intent. For bind, the intent the predicate proves.'),
|
|
85
86
|
/*
|
|
86
87
|
* The predicate schema, not `unknown`.
|
|
87
88
|
*
|
|
@@ -136,18 +137,26 @@ export const INTENT_TOOLS = [
|
|
|
136
137
|
const store = new IntentStore(deps.fs, root, { now: deps.now });
|
|
137
138
|
const shards = new IntentShardStore(deps.fs, root, { now: deps.now });
|
|
138
139
|
const action = asString(args['action']);
|
|
140
|
+
// An empty argument answered "there is none" (`null`, `[]`, `bound: false`), or a raw zod
|
|
141
|
+
// path for `record`, instead of saying which argument the call left out.
|
|
142
|
+
const need = (name) => {
|
|
143
|
+
const value = asString(args[name]);
|
|
144
|
+
if (value !== undefined && 0 < value.trim().length)
|
|
145
|
+
return value;
|
|
146
|
+
throw new Error(`${ReticleTool.INTENT} ${String(action)}: \`${name}\` is required, and none was given — nothing was read or stored`);
|
|
147
|
+
};
|
|
139
148
|
if (INDEX === action)
|
|
140
149
|
return { entries: (await shards.index()).entries, path: root };
|
|
141
150
|
if (SUBJECT === action)
|
|
142
|
-
return { records: await shards.subject(
|
|
151
|
+
return { records: await shards.subject(need('subject')), path: root };
|
|
143
152
|
if (GET === action)
|
|
144
|
-
return { record: await shards.get(
|
|
153
|
+
return { record: await shards.get(need('id')) };
|
|
145
154
|
if (MIGRATE === action)
|
|
146
155
|
return { ...(await shards.migrate()), path: root };
|
|
147
156
|
if (RECORD === action) {
|
|
148
157
|
const written = await shards.record({
|
|
149
|
-
id:
|
|
150
|
-
statement:
|
|
158
|
+
id: need('id'),
|
|
159
|
+
statement: need('statement'),
|
|
151
160
|
subject: asString(args['subject']),
|
|
152
161
|
why: asString(args['why']),
|
|
153
162
|
source: asString(args['source']),
|
|
@@ -157,7 +166,7 @@ export const INTENT_TOOLS = [
|
|
|
157
166
|
return { record: written, path: root };
|
|
158
167
|
}
|
|
159
168
|
if (BIND === action) {
|
|
160
|
-
const id =
|
|
169
|
+
const id = need('id');
|
|
161
170
|
return { bound: await store.bind(id, args['binding']) };
|
|
162
171
|
}
|
|
163
172
|
if (LIST === action) {
|
|
@@ -223,38 +232,6 @@ async function withExistingFiles(deps, projectDir, entries) {
|
|
|
223
232
|
return { entries: kept, missing };
|
|
224
233
|
}
|
|
225
234
|
const NO_SUBJECT_FIX = 'Nothing says what these are about, so an agent looking for them cannot find them: declare each again with surface.route (the page it is about) or surface.flow.';
|
|
226
|
-
const MAX_REQUEST = 20_000;
|
|
227
|
-
const MAX_STATEMENT = 500;
|
|
228
|
-
const MAX_STATEMENTS = 100;
|
|
229
|
-
const PROJECT_CONFIG = '.reticle.json';
|
|
230
|
-
/** Credentials and personal data out, length capped: the same rules feedback reports follow. */
|
|
231
|
-
function redactSecrets(text, max) {
|
|
232
|
-
return redactFeedbackText(text, max).text;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Whether the request goes to the platform with the runs that verify it.
|
|
236
|
-
*
|
|
237
|
-
* A LINKED project shares it unless `.reticle.json` says `"shareRequests": false`: the platform
|
|
238
|
-
* reads what each run was for, which is half of what a run means. An unlinked project has nowhere
|
|
239
|
-
* to send it, and `"shareRequests": true` still shares from one that links later.
|
|
240
|
-
*/
|
|
241
|
-
function sharesRequests(projectDir, reticleRoot) {
|
|
242
|
-
let setting;
|
|
243
|
-
try {
|
|
244
|
-
const config = JSON.parse(readFileSync(join(projectDir, PROJECT_CONFIG), 'utf8'));
|
|
245
|
-
setting = config?.shareRequests;
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
setting = undefined;
|
|
249
|
-
}
|
|
250
|
-
if (false === setting)
|
|
251
|
-
return false;
|
|
252
|
-
if (true === setting)
|
|
253
|
-
return true;
|
|
254
|
-
// Linked by `reticle connect` (cloud.json), or by a key in the environment, the way CI syncs.
|
|
255
|
-
return (existsSync(join(reticleRoot, ReticleDir.CLOUD_LINK_FILE)) ||
|
|
256
|
-
apiKeyFrom(process.env) !== undefined);
|
|
257
|
-
}
|
|
258
235
|
/**
|
|
259
236
|
* Keep the user's request, and every statement in it and in the declared intents, classified and
|
|
260
237
|
* attributed, for the runs that verify it. Secrets are redacted before anything is written.
|
|
@@ -262,29 +239,11 @@ function sharesRequests(projectDir, reticleRoot) {
|
|
|
262
239
|
* Shared with the platform from a linked project unless `.reticle.json` says `"shareRequests": false`.
|
|
263
240
|
*/
|
|
264
241
|
async function recordRequest(deps, root, request, declared) {
|
|
265
|
-
const text = redactSecrets(request, MAX_REQUEST);
|
|
266
242
|
const agentStatements = declared.flatMap((d) => {
|
|
267
243
|
const statement = d?.statement;
|
|
268
244
|
return 'string' === typeof statement ? [statement] : [];
|
|
269
245
|
});
|
|
270
|
-
const context =
|
|
271
|
-
request: text,
|
|
272
|
-
statements: [
|
|
273
|
-
...splitStatements(text).map((t) => ({ text: t, source: StatementSource.USER })),
|
|
274
|
-
...agentStatements.map((t) => ({
|
|
275
|
-
text: redactSecrets(t, MAX_STATEMENT),
|
|
276
|
-
source: StatementSource.AGENT,
|
|
277
|
-
})),
|
|
278
|
-
]
|
|
279
|
-
.slice(0, MAX_STATEMENTS)
|
|
280
|
-
.map((s) => ({
|
|
281
|
-
...s,
|
|
282
|
-
text: s.text.slice(0, MAX_STATEMENT),
|
|
283
|
-
kind: classifyStatement(s.text),
|
|
284
|
-
})),
|
|
285
|
-
at: deps.now(),
|
|
286
|
-
shared: sharesRequests(dirname(root), root),
|
|
287
|
-
};
|
|
246
|
+
const context = promptContextFor(request, agentStatements, deps.now(), sharesRequests(dirname(root), root));
|
|
288
247
|
const path = reticleDirPaths(root).request;
|
|
289
248
|
await deps.fs.mkdir(dirname(path));
|
|
290
249
|
await deps.fs.writeFile(path, `${JSON.stringify(context, null, 2)}\n`);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type PromptContext } from '@reticlehq/core/artifacts';
|
|
2
|
+
export declare const MAX_REQUEST = 20000;
|
|
3
|
+
export declare const PROJECT_CONFIG = ".reticle.json";
|
|
4
|
+
/** Credentials and personal data out, length capped: the same rules feedback reports follow. */
|
|
5
|
+
export declare function redactSecrets(text: string, max: number): string;
|
|
6
|
+
/** One setting from the project's `.reticle.json`, or undefined when it is absent or unreadable. */
|
|
7
|
+
export declare function projectSetting(projectDir: string, key: string): unknown;
|
|
8
|
+
/**
|
|
9
|
+
* The one switch for everything the agent hooks keep: prompts, tool calls, the model and the
|
|
10
|
+
* closing message. `RETICLE_PROMPT_CAPTURE=0` stops it on this machine.
|
|
11
|
+
*/
|
|
12
|
+
export declare function agentCaptureOff(env: NodeJS.ProcessEnv): boolean;
|
|
13
|
+
/** The same switch for one project: `"promptCapture": false` in its `.reticle.json`. */
|
|
14
|
+
export declare function agentCaptureOffIn(projectDir: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the request goes to the platform with the runs that verify it.
|
|
17
|
+
*
|
|
18
|
+
* A LINKED project shares it unless `.reticle.json` says `"shareRequests": false`: the platform
|
|
19
|
+
* reads what each run was for, which is half of what a run means. An unlinked project has nowhere
|
|
20
|
+
* to send it, and `"shareRequests": true` still shares from one that links later.
|
|
21
|
+
*/
|
|
22
|
+
export declare function sharesRequests(projectDir: string, reticleRoot: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* The prompt context for one request. `agentStatements` are the statements the agent declared
|
|
25
|
+
* beside it; the hook has none. Pure: the clock and the share decision arrive as values.
|
|
26
|
+
*/
|
|
27
|
+
export declare function promptContextFor(request: string, agentStatements: readonly string[], at: number, shared: boolean): PromptContext;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The user's request as Reticle keeps it: redacted, split into statements, classified, and marked
|
|
3
|
+
* shared or not. Two writers use it. `reticle_intent { declare, request }` records what the agent
|
|
4
|
+
* relays, and `reticle hook prompt` records what the user typed, before the agent sees it. One
|
|
5
|
+
* function, so the two writers cannot keep the request in two shapes.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { StatementSource, classifyStatement, splitStatements, } from '@reticlehq/core/artifacts';
|
|
10
|
+
import { ReticleDir, ReticleEnv, apiKeyFrom, mainCheckoutTwin } from '@reticlehq/core';
|
|
11
|
+
import { readTextOrUndefined } from '../project/fs/fs-port.js';
|
|
12
|
+
import { redactFeedbackText } from '../../telemetry/feedback.js';
|
|
13
|
+
export const MAX_REQUEST = 20_000;
|
|
14
|
+
const MAX_STATEMENT = 500;
|
|
15
|
+
const MAX_STATEMENTS = 100;
|
|
16
|
+
export const PROJECT_CONFIG = '.reticle.json';
|
|
17
|
+
const OFF_VALUES = new Set(['0', 'false', 'off', 'no']);
|
|
18
|
+
/** Credentials and personal data out, length capped: the same rules feedback reports follow. */
|
|
19
|
+
export function redactSecrets(text, max) {
|
|
20
|
+
return redactFeedbackText(text, max).text;
|
|
21
|
+
}
|
|
22
|
+
/** One setting from the project's `.reticle.json`, or undefined when it is absent or unreadable. */
|
|
23
|
+
export function projectSetting(projectDir, key) {
|
|
24
|
+
try {
|
|
25
|
+
const config = JSON.parse(readFileSync(join(projectDir, PROJECT_CONFIG), 'utf8'));
|
|
26
|
+
return 'object' === typeof config && null !== config
|
|
27
|
+
? config[key]
|
|
28
|
+
: undefined;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The one switch for everything the agent hooks keep: prompts, tool calls, the model and the
|
|
36
|
+
* closing message. `RETICLE_PROMPT_CAPTURE=0` stops it on this machine.
|
|
37
|
+
*/
|
|
38
|
+
export function agentCaptureOff(env) {
|
|
39
|
+
return OFF_VALUES.has((env[ReticleEnv.PROMPT_CAPTURE] ?? '').toLowerCase());
|
|
40
|
+
}
|
|
41
|
+
/** The same switch for one project: `"promptCapture": false` in its `.reticle.json`. */
|
|
42
|
+
export function agentCaptureOffIn(projectDir) {
|
|
43
|
+
return false === projectSetting(projectDir, 'promptCapture');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Whether the request goes to the platform with the runs that verify it.
|
|
47
|
+
*
|
|
48
|
+
* A LINKED project shares it unless `.reticle.json` says `"shareRequests": false`: the platform
|
|
49
|
+
* reads what each run was for, which is half of what a run means. An unlinked project has nowhere
|
|
50
|
+
* to send it, and `"shareRequests": true` still shares from one that links later.
|
|
51
|
+
*/
|
|
52
|
+
export function sharesRequests(projectDir, reticleRoot) {
|
|
53
|
+
const setting = projectSetting(projectDir, 'shareRequests');
|
|
54
|
+
if (false === setting)
|
|
55
|
+
return false;
|
|
56
|
+
if (true === setting)
|
|
57
|
+
return true;
|
|
58
|
+
// Linked by `reticle connect` (cloud.json), or by a key in the environment, the way CI syncs.
|
|
59
|
+
return (existsSync(join(reticleRoot, ReticleDir.CLOUD_LINK_FILE)) ||
|
|
60
|
+
// A git worktree of a linked project is linked: its `.reticle/` is often git-ignored.
|
|
61
|
+
existsSync(join(mainCheckoutTwin(reticleRoot, readTextOrUndefined) ?? reticleRoot, ReticleDir.CLOUD_LINK_FILE)) ||
|
|
62
|
+
apiKeyFrom(process.env) !== undefined);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The prompt context for one request. `agentStatements` are the statements the agent declared
|
|
66
|
+
* beside it; the hook has none. Pure: the clock and the share decision arrive as values.
|
|
67
|
+
*/
|
|
68
|
+
export function promptContextFor(request, agentStatements, at, shared) {
|
|
69
|
+
const text = redactSecrets(request, MAX_REQUEST);
|
|
70
|
+
return {
|
|
71
|
+
request: text,
|
|
72
|
+
statements: [
|
|
73
|
+
...splitStatements(text).map((t) => ({ text: t, source: StatementSource.USER })),
|
|
74
|
+
...agentStatements.map((t) => ({
|
|
75
|
+
text: redactSecrets(t, MAX_STATEMENT),
|
|
76
|
+
source: StatementSource.AGENT,
|
|
77
|
+
})),
|
|
78
|
+
]
|
|
79
|
+
.slice(0, MAX_STATEMENTS)
|
|
80
|
+
.map((s) => ({
|
|
81
|
+
...s,
|
|
82
|
+
text: s.text.slice(0, MAX_STATEMENT),
|
|
83
|
+
kind: classifyStatement(s.text),
|
|
84
|
+
})),
|
|
85
|
+
at,
|
|
86
|
+
shared,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
@@ -77,6 +77,9 @@ export async function applySettledWords(store, settled) {
|
|
|
77
77
|
const decision = settled.find((s) => s.setAside === record.statement);
|
|
78
78
|
if (decision === undefined)
|
|
79
79
|
continue;
|
|
80
|
+
// The status the team settled on the kept words comes with them, in this same read: the next
|
|
81
|
+
// read of an unchanged memory is a 304, which would leave the record proposed.
|
|
82
|
+
const keptStatus = settled.find((s) => s.status !== undefined && s.kept === decision.kept)?.status;
|
|
80
83
|
const next = await store.upsert(record.id, (existing) =>
|
|
81
84
|
// The check bound to the words set aside proves nothing about the words kept.
|
|
82
85
|
existing === undefined
|
|
@@ -89,7 +92,12 @@ export async function applySettledWords(store, settled) {
|
|
|
89
92
|
...existing.surface,
|
|
90
93
|
files: decision.file === undefined ? [] : [decision.file],
|
|
91
94
|
},
|
|
92
|
-
}, {
|
|
95
|
+
}, {
|
|
96
|
+
source: decidedBy(decision.by),
|
|
97
|
+
...(keptStatus !== undefined && RANK[keptStatus] > RANK[record.status]
|
|
98
|
+
? { status: keptStatus }
|
|
99
|
+
: {}),
|
|
100
|
+
});
|
|
93
101
|
if (next?.statement === decision.kept)
|
|
94
102
|
changed += 1;
|
|
95
103
|
}
|
|
@@ -29,6 +29,9 @@ export interface DriveProgram {
|
|
|
29
29
|
steps: TapeStep[];
|
|
30
30
|
startPath?: string;
|
|
31
31
|
author?: FlowFile['author'];
|
|
32
|
+
/** Built from the steps' expects when no step declared an intent. Never a declared goal. */
|
|
33
|
+
intent?: string;
|
|
34
|
+
intentDerived?: true;
|
|
32
35
|
}
|
|
33
36
|
/**
|
|
34
37
|
* What a session drove, saved as a replayable flow — without anybody asking for it.
|