@adhdev/daemon-core 0.9.82-rc.43 → 0.9.82-rc.431
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/dist/boot/daemon-lifecycle.d.ts +9 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/build-info.d.ts +37 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +68 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +200 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
- package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
- package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
- package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/resolve-executable.d.ts +69 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
- package/dist/cli-adapters/terminal-screen.d.ts +4 -11
- package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
- package/dist/commands/chat-commands-read.d.ts +7 -0
- package/dist/commands/chat-commands-scope.d.ts +39 -0
- package/dist/commands/chat-commands-shared.d.ts +33 -0
- package/dist/commands/chat-commands-write.d.ts +14 -0
- package/dist/commands/chat-commands.d.ts +10 -23
- package/dist/commands/cli-manager.d.ts +15 -1
- package/dist/commands/handler.d.ts +125 -0
- package/dist/commands/high-family/index.d.ts +3 -0
- package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
- package/dist/commands/high-family/mesh-events.d.ts +2 -0
- package/dist/commands/high-family/mesh-status.d.ts +2 -0
- package/dist/commands/high-family/types.d.ts +60 -0
- package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
- package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
- package/dist/commands/low-family/diagnostics.d.ts +2 -0
- package/dist/commands/low-family/index.d.ts +3 -0
- package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
- package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
- package/dist/commands/low-family/notification.d.ts +2 -0
- package/dist/commands/low-family/refine-config.d.ts +2 -0
- package/dist/commands/low-family/session-host.d.ts +2 -0
- package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
- package/dist/commands/low-family/status-meta.d.ts +2 -0
- package/dist/commands/low-family/types.d.ts +33 -0
- package/dist/commands/med-family/cli-agent.d.ts +2 -0
- package/dist/commands/med-family/fast-forward.d.ts +2 -0
- package/dist/commands/med-family/ide.d.ts +10 -0
- package/dist/commands/med-family/index.d.ts +3 -0
- package/dist/commands/med-family/mesh-crud.d.ts +29 -0
- package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
- package/dist/commands/med-family/mesh-queue.d.ts +2 -0
- package/dist/commands/med-family/mesh-restart.d.ts +2 -0
- package/dist/commands/med-family/types.d.ts +142 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router.d.ts +276 -2
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +9 -0
- package/dist/config/config.d.ts +5 -0
- package/dist/config/mesh-config.d.ts +100 -1
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- package/dist/detection/ide-detector.d.ts +13 -0
- package/dist/detection/win32-ide-version.d.ts +37 -0
- package/dist/git/change-impact-config.d.ts +159 -0
- package/dist/git/git-commands.d.ts +11 -1
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-executor.d.ts +11 -0
- package/dist/git/git-status.d.ts +57 -0
- package/dist/git/git-types.d.ts +2 -50
- package/dist/git/git-worktree.d.ts +71 -1
- package/dist/git/index.d.ts +3 -1
- package/dist/index.d.ts +64 -14
- package/dist/index.js +49391 -19228
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +48574 -18570
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/logging/log-redactor.d.ts +24 -0
- package/dist/logging/log-tail-reader.d.ts +81 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/mesh/contracts.d.ts +164 -0
- package/dist/mesh/coordinator-prompt.d.ts +89 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +174 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
- package/dist/mesh/mesh-event-classify.d.ts +5 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +41 -0
- package/dist/mesh/mesh-event-trace.d.ts +21 -0
- package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
- package/dist/mesh/mesh-events-pending.d.ts +69 -0
- package/dist/mesh/mesh-events-stale.d.ts +61 -0
- package/dist/mesh/mesh-events-utils.d.ts +75 -0
- package/dist/mesh/mesh-events.d.ts +6 -49
- package/dist/mesh/mesh-fast-forward.d.ts +81 -0
- package/dist/mesh/mesh-host-ownership.d.ts +9 -0
- package/dist/mesh/mesh-init.d.ts +86 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
- package/dist/mesh/mesh-ledger.d.ts +77 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +189 -0
- package/dist/mesh/mesh-node-identity.d.ts +289 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +65 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-gates.d.ts +428 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +450 -0
- package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
- package/dist/mesh/mesh-task-inflight.d.ts +46 -0
- package/dist/mesh/mesh-task-stats.d.ts +49 -0
- package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
- package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
- package/dist/mesh/mesh-work-queue.d.ts +290 -5
- package/dist/mesh/preview-freshness.d.ts +18 -0
- package/dist/mesh/refine-config.d.ts +216 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +145 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +20 -0
- package/dist/providers/chat-message-normalization.d.ts +31 -1
- package/dist/providers/cli-provider-instance.d.ts +221 -3
- package/dist/providers/contracts.d.ts +139 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +63 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/constants.d.ts +12 -0
- package/dist/providers/native-history/dispatcher.d.ts +27 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +29 -0
- package/dist/providers/provider-instance.d.ts +23 -1
- package/dist/providers/provider-loader.d.ts +26 -4
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +91 -0
- package/dist/providers/spec/cli-adapter.d.ts +223 -0
- package/dist/providers/spec/evaluator.d.ts +45 -0
- package/dist/providers/spec/fsm-driver.d.ts +422 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +76 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +174 -0
- package/dist/providers/spec/native-history-executor.d.ts +41 -0
- package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
- package/dist/providers/spec/route.d.ts +4 -0
- package/dist/providers/spec/types.d.ts +222 -0
- package/dist/providers/status-monitor.d.ts +7 -7
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +84 -0
- package/dist/providers/working-dir.d.ts +17 -0
- package/dist/repo-mesh-types.d.ts +501 -13
- package/dist/runtime-defaults.d.ts +2 -0
- package/dist/sessions/registry.d.ts +6 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +59 -2
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +26 -0
- package/dist/system/hash.d.ts +8 -0
- package/dist/system/load-better-sqlite3.d.ts +21 -0
- package/dist/types.d.ts +5 -0
- package/package.json +7 -3
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +63 -12
- package/src/boot/process-hardening.ts +89 -0
- package/src/build-info.ts +73 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +3 -1
- package/src/cli-adapter-types.ts +68 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1246 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
- package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
- package/src/cli-adapters/provider-cli-parse.ts +19 -0
- package/src/cli-adapters/provider-cli-runtime.ts +56 -7
- package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
- package/src/cli-adapters/provider-cli-shared.ts +121 -11
- package/src/cli-adapters/pty-transport.ts +2 -1
- package/src/cli-adapters/pty-write-chunking.ts +106 -0
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/resolve-executable.ts +204 -0
- package/src/cli-adapters/session-host-transport.ts +2 -1
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
- package/src/cli-adapters/terminal-backends/types.ts +10 -3
- package/src/cli-adapters/terminal-screen.ts +16 -81
- package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2327 -0
- package/src/commands/chat-commands-scope.ts +54 -0
- package/src/commands/chat-commands-shared.ts +114 -0
- package/src/commands/chat-commands-write.ts +891 -0
- package/src/commands/chat-commands.ts +19 -1841
- package/src/commands/cli-manager.ts +544 -26
- package/src/commands/handler.ts +841 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +678 -0
- package/src/commands/high-family/mesh-events.ts +80 -0
- package/src/commands/high-family/mesh-status.ts +710 -0
- package/src/commands/high-family/types.ts +76 -0
- package/src/commands/low-family/coordinator-prompt.ts +72 -0
- package/src/commands/low-family/daemon-lifecycle.ts +107 -0
- package/src/commands/low-family/diagnostics.ts +57 -0
- package/src/commands/low-family/index.ts +37 -0
- package/src/commands/low-family/mesh-ledger.ts +62 -0
- package/src/commands/low-family/mesh-node-logs.ts +87 -0
- package/src/commands/low-family/notification.ts +116 -0
- package/src/commands/low-family/refine-config.ts +106 -0
- package/src/commands/low-family/session-host.ts +274 -0
- package/src/commands/low-family/spec-providerdev.ts +217 -0
- package/src/commands/low-family/status-meta.ts +112 -0
- package/src/commands/low-family/types.ts +39 -0
- package/src/commands/med-family/cli-agent.ts +238 -0
- package/src/commands/med-family/fast-forward.ts +230 -0
- package/src/commands/med-family/ide.ts +163 -0
- package/src/commands/med-family/index.ts +37 -0
- package/src/commands/med-family/mesh-crud.ts +1066 -0
- package/src/commands/med-family/mesh-host-pairing.ts +234 -0
- package/src/commands/med-family/mesh-queue.ts +167 -0
- package/src/commands/med-family/mesh-restart.ts +92 -0
- package/src/commands/med-family/types.ts +143 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router.ts +2711 -3254
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +483 -24
- package/src/config/config.ts +12 -0
- package/src/config/mesh-config.ts +495 -22
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/repo-settings.ts +111 -0
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/daemon/dev-server.ts +0 -541
- package/src/detection/cli-detector.ts +28 -9
- package/src/detection/ide-detector.ts +55 -16
- package/src/detection/win32-ide-version.ts +106 -0
- package/src/git/change-impact-config.ts +354 -0
- package/src/git/git-commands.ts +59 -15
- package/src/git/git-diff.ts +81 -11
- package/src/git/git-executor.ts +12 -0
- package/src/git/git-status.ts +767 -48
- package/src/git/git-types.ts +14 -62
- package/src/git/git-worktree.ts +261 -4
- package/src/git/index.ts +17 -0
- package/src/index.ts +194 -12
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/command-log.ts +7 -5
- package/src/logging/log-redactor.ts +100 -0
- package/src/logging/log-tail-reader.ts +341 -0
- package/src/logging/logger.ts +14 -7
- package/src/mesh/contracts.ts +338 -0
- package/src/mesh/coordinator-prompt.ts +381 -33
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +645 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +315 -0
- package/src/mesh/mesh-event-classify.ts +51 -0
- package/src/mesh/mesh-event-forwarding.ts +1888 -0
- package/src/mesh/mesh-event-trace.ts +67 -0
- package/src/mesh/mesh-events-coordinator.ts +32 -0
- package/src/mesh/mesh-events-pending.ts +656 -0
- package/src/mesh/mesh-events-stale.ts +389 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +33 -1035
- package/src/mesh/mesh-fast-forward.ts +843 -0
- package/src/mesh/mesh-host-ownership.ts +73 -0
- package/src/mesh/mesh-init.ts +260 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
- package/src/mesh/mesh-ledger.ts +656 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +449 -0
- package/src/mesh/mesh-node-identity.ts +1887 -0
- package/src/mesh/mesh-queue-assignment.ts +1918 -0
- package/src/mesh/mesh-reconcile-loop.ts +1780 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1673 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-review-inbox.ts +307 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +1853 -0
- package/src/mesh/mesh-scheduling-runtime.ts +198 -0
- package/src/mesh/mesh-task-inflight.ts +70 -0
- package/src/mesh/mesh-task-stats.ts +161 -0
- package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
- package/src/mesh/mesh-warmup-deadline.ts +152 -0
- package/src/mesh/mesh-work-queue.ts +1243 -141
- package/src/mesh/preview-freshness.ts +118 -0
- package/src/mesh/refine-config.ts +423 -0
- package/src/mesh/worktree-bootstrap-config.ts +450 -0
- package/src/providers/acp-provider-instance.ts +43 -10
- package/src/providers/approval-utils.d.ts +5 -0
- package/src/providers/approval-utils.ts +57 -5
- package/src/providers/chat-message-normalization.ts +92 -4
- package/src/providers/cli-provider-instance.ts +1933 -104
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +150 -6
- package/src/providers/extension-provider-instance.ts +12 -7
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +35 -12
- package/src/providers/manual-attendance.ts +85 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
- package/src/providers/native-history/claude-cli-transcript.ts +396 -0
- package/src/providers/native-history/codex-cli-transcript.ts +479 -0
- package/src/providers/native-history/constants.ts +19 -0
- package/src/providers/native-history/dispatcher.ts +339 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +230 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +71 -0
- package/src/providers/provider-instance.ts +19 -1
- package/src/providers/provider-loader.ts +668 -50
- package/src/providers/provider-schema.ts +87 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +504 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +235 -0
- package/src/providers/spec/cli-adapter.ts +1056 -0
- package/src/providers/spec/evaluator.ts +407 -0
- package/src/providers/spec/fsm-driver.ts +1410 -0
- package/src/providers/spec/fsm-evaluator.ts +272 -0
- package/src/providers/spec/fsm-loader.ts +120 -0
- package/src/providers/spec/fsm-types.ts +273 -0
- package/src/providers/spec/native-history-executor.ts +1128 -0
- package/src/providers/spec/pre-launch-trust.ts +104 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +262 -0
- package/src/providers/status-monitor.d.ts +7 -7
- package/src/providers/status-monitor.ts +37 -22
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +536 -0
- package/src/providers/version-archive.ts +64 -24
- package/src/providers/working-dir.ts +23 -0
- package/src/repo-mesh-types.ts +740 -14
- package/src/runtime-defaults.ts +39 -0
- package/src/sessions/registry.ts +6 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +64 -1
- package/src/status/builders.ts +26 -6
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +19 -1
- package/src/status/snapshot.ts +95 -26
- package/src/system/hash.ts +23 -0
- package/src/system/host-memory.ts +29 -12
- package/src/system/load-better-sqlite3.ts +68 -0
- package/src/types.ts +5 -0
- package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
- package/dist/mesh/mesh-sync.d.ts +0 -53
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
- package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
- package/src/mesh/mesh-sync.ts +0 -111
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buildDetectStatusFromTui
|
|
3
|
+
*
|
|
4
|
+
* Turns a manifest's declarative TUI block into a runtime
|
|
5
|
+
* `(input: CliStatusInput) => CliStatus | null` function.
|
|
6
|
+
*
|
|
7
|
+
* Inputs handled (all optional except spinner):
|
|
8
|
+
* - tui/spinner@1 → contributes `generating`
|
|
9
|
+
* - tui/settled-prompt@1 → contributes `idle`
|
|
10
|
+
* - tui/modal@1 → contributes `waiting_approval`
|
|
11
|
+
*
|
|
12
|
+
* Dispatch order (sprint-2026-06 contract):
|
|
13
|
+
* 1. Active generation cues win over idle prompt — checked first.
|
|
14
|
+
* Reason: codex/claude keep model footer visible during `Working` and
|
|
15
|
+
* `hasReadyPrompt` falsely fired idle. Audit §4.2 introduces
|
|
16
|
+
* `tui/cue-ordering` as the named primitive for this rule.
|
|
17
|
+
* 2. Modal cue (if present) is checked next — `waiting_approval`.
|
|
18
|
+
* 3. Settled-prompt cue — `idle`.
|
|
19
|
+
* 4. Default: `null` (no change).
|
|
20
|
+
*/
|
|
21
|
+
import type { CliStatusInput, CliDetectStatusFn } from '../../types/cli/index.js';
|
|
22
|
+
import { type VisibleRegionSpec } from './visible-region.js';
|
|
23
|
+
interface RegexLikeSpec {
|
|
24
|
+
regex: string;
|
|
25
|
+
flags?: string;
|
|
26
|
+
}
|
|
27
|
+
interface SpinnerPatternSpec extends RegexLikeSpec {
|
|
28
|
+
description?: string;
|
|
29
|
+
}
|
|
30
|
+
interface SpinnerSpec {
|
|
31
|
+
$schema: 'adhdev:tui/spinner@1';
|
|
32
|
+
patterns: SpinnerPatternSpec[];
|
|
33
|
+
scope?: 'live-frame-tail' | 'whole-screen' | 'recent-buffer';
|
|
34
|
+
scopeWindowLines?: number;
|
|
35
|
+
}
|
|
36
|
+
interface SettledPromptFooterSpec {
|
|
37
|
+
pattern: string;
|
|
38
|
+
kind?: 'substring' | 'regex';
|
|
39
|
+
flags?: string;
|
|
40
|
+
}
|
|
41
|
+
interface SettledPromptSpec {
|
|
42
|
+
$schema: 'adhdev:tui/settled-prompt@1';
|
|
43
|
+
regex: string;
|
|
44
|
+
flags?: string;
|
|
45
|
+
withFooter?: SettledPromptFooterSpec[];
|
|
46
|
+
scope?: 'last-n-lines' | 'whole-screen';
|
|
47
|
+
scopeWindowLines?: number;
|
|
48
|
+
}
|
|
49
|
+
interface ModalSpec {
|
|
50
|
+
$schema: 'adhdev:tui/modal@1';
|
|
51
|
+
questionPattern: string;
|
|
52
|
+
questionFlags?: string;
|
|
53
|
+
questionVariants?: Array<{
|
|
54
|
+
regex: string;
|
|
55
|
+
flags?: string;
|
|
56
|
+
label?: string;
|
|
57
|
+
}>;
|
|
58
|
+
buttonPattern: string;
|
|
59
|
+
buttonFlags?: string;
|
|
60
|
+
buttonLabelGroup?: number;
|
|
61
|
+
}
|
|
62
|
+
export type DispatchGroup = 'spinner' | 'modal' | 'settled-prompt' | 'cue-ordering' | 'error-detection' | 'approval-stitching';
|
|
63
|
+
export interface DispatchOrderSpec {
|
|
64
|
+
$schema: 'adhdev:tui/dispatch-order@1';
|
|
65
|
+
order: DispatchGroup[];
|
|
66
|
+
onNoMatch?: 'idle' | 'unknown' | 'preserve-last';
|
|
67
|
+
}
|
|
68
|
+
export interface DetectStatusTuiSpec {
|
|
69
|
+
spinner?: SpinnerSpec;
|
|
70
|
+
settledPrompt?: SettledPromptSpec;
|
|
71
|
+
modal?: ModalSpec;
|
|
72
|
+
dispatchOrder?: DispatchOrderSpec;
|
|
73
|
+
visibleRegion?: VisibleRegionSpec;
|
|
74
|
+
}
|
|
75
|
+
declare function scopeText(input: CliStatusInput, scope: SpinnerSpec['scope'] | SettledPromptSpec['scope'], windowLines: number | undefined): string;
|
|
76
|
+
declare function spinnerMatches(spec: SpinnerSpec, input: CliStatusInput): boolean;
|
|
77
|
+
declare function settledPromptMatches(spec: SettledPromptSpec, input: CliStatusInput): boolean;
|
|
78
|
+
declare function modalMatches(spec: ModalSpec, input: CliStatusInput): boolean;
|
|
79
|
+
export declare function buildDetectStatusFromTui(spec: DetectStatusTuiSpec): CliDetectStatusFn;
|
|
80
|
+
export declare const __internal: {
|
|
81
|
+
scopeText: typeof scopeText;
|
|
82
|
+
spinnerMatches: typeof spinnerMatches;
|
|
83
|
+
settledPromptMatches: typeof settledPromptMatches;
|
|
84
|
+
modalMatches: typeof modalMatches;
|
|
85
|
+
};
|
|
86
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buildParseApprovalFromSquash
|
|
3
|
+
*
|
|
4
|
+
* Companion to buildParseApprovalFromTui. Handles the squashed-modal case:
|
|
5
|
+
* the terminal has re-flowed the approval frame so the rendered text is a
|
|
6
|
+
* single run of lowercase-alnum bytes (e.g. `doyoutrustthecontentsofthisdirectory…1yescontinue2noquit`).
|
|
7
|
+
*
|
|
8
|
+
* Author declares:
|
|
9
|
+
* - `cues` — compact substrings/regexes that identify the modal
|
|
10
|
+
* - `footers` — optional compact substrings that must also be present
|
|
11
|
+
* - `buttonRules` — compact→labels mappings used to recover button labels
|
|
12
|
+
*
|
|
13
|
+
* Returns the same shape as buildParseApprovalFromTui — a CliApprovalModal
|
|
14
|
+
* (message + buttons) or null when no rule matches. Caller composes the two
|
|
15
|
+
* builders: try the regular modal first, then fall back to squash. Codex
|
|
16
|
+
* needs both because at narrow widths the terminal renders the squash form,
|
|
17
|
+
* and at wider widths it renders the regular framed form.
|
|
18
|
+
*/
|
|
19
|
+
import type { CliApprovalInput, CliParseApprovalFn } from '../../types/cli/index.js';
|
|
20
|
+
interface SquashCueSpec {
|
|
21
|
+
compact: string;
|
|
22
|
+
kind?: 'substring' | 'regex';
|
|
23
|
+
label?: string;
|
|
24
|
+
messageWhenMatched?: string;
|
|
25
|
+
}
|
|
26
|
+
interface SquashFooterSpec {
|
|
27
|
+
compact: string;
|
|
28
|
+
kind?: 'substring' | 'regex';
|
|
29
|
+
}
|
|
30
|
+
interface SquashButtonRuleSpec {
|
|
31
|
+
compact: string;
|
|
32
|
+
kind?: 'substring' | 'regex';
|
|
33
|
+
labels: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface ApprovalSquashSpec {
|
|
36
|
+
$schema: 'adhdev:tui/approval-squash@1';
|
|
37
|
+
cues: SquashCueSpec[];
|
|
38
|
+
footers?: SquashFooterSpec[];
|
|
39
|
+
buttonRules: SquashButtonRuleSpec[];
|
|
40
|
+
scope?: 'tail-window' | 'whole-screen';
|
|
41
|
+
tailWindowLines?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The canonical normalisation. Identical to codex-cli's `compactText`:
|
|
45
|
+
* lowercase, then strip everything that is not a-z or 0-9.
|
|
46
|
+
*
|
|
47
|
+
* Exported for tests and for the (rare) provider that wants to compose this
|
|
48
|
+
* with extra normalisation steps.
|
|
49
|
+
*/
|
|
50
|
+
export declare function compactText(value: string): string;
|
|
51
|
+
declare function matchSubstringOrRegex(needle: string, kind: 'substring' | 'regex' | undefined, haystack: string): boolean;
|
|
52
|
+
declare function scopeText(spec: ApprovalSquashSpec, input: CliApprovalInput): string;
|
|
53
|
+
export declare function buildParseApprovalFromSquash(spec: ApprovalSquashSpec): CliParseApprovalFn;
|
|
54
|
+
export declare const __internal: {
|
|
55
|
+
compactText: typeof compactText;
|
|
56
|
+
matchSubstringOrRegex: typeof matchSubstringOrRegex;
|
|
57
|
+
scopeText: typeof scopeText;
|
|
58
|
+
};
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buildParseApprovalFromTui
|
|
3
|
+
*
|
|
4
|
+
* Turns a `tui/modal@1` block into a runtime
|
|
5
|
+
* `(input: CliApprovalInput) => CliApprovalModal | null` function.
|
|
6
|
+
*
|
|
7
|
+
* Contract rules enforced (sprint-2026-06):
|
|
8
|
+
* - Returns null when the question pattern is not visible.
|
|
9
|
+
* - Returns null when the button list is empty or shorter than minButtons.
|
|
10
|
+
* - Button labels are raw text; never rewritten (e.g. "Yes, and don't ask
|
|
11
|
+
* again for X" stays verbatim).
|
|
12
|
+
* - Modal scope respects between-last-two-separators / window-around-question
|
|
13
|
+
* / whole-screen to avoid false-positives from numbered lists in
|
|
14
|
+
* assistant prose.
|
|
15
|
+
*/
|
|
16
|
+
import type { CliParseApprovalFn } from '../../types/cli/index.js';
|
|
17
|
+
import { type VisibleRegionSpec } from './visible-region.js';
|
|
18
|
+
interface ModalQuestionVariant {
|
|
19
|
+
regex: string;
|
|
20
|
+
flags?: string;
|
|
21
|
+
label?: string;
|
|
22
|
+
}
|
|
23
|
+
interface ModalContextHeader {
|
|
24
|
+
regex: string;
|
|
25
|
+
flags?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ModalTuiSpec {
|
|
28
|
+
$schema: 'adhdev:tui/modal@1';
|
|
29
|
+
questionPattern: string;
|
|
30
|
+
questionFlags?: string;
|
|
31
|
+
questionVariants?: ModalQuestionVariant[];
|
|
32
|
+
buttonPattern: string;
|
|
33
|
+
buttonFlags?: string;
|
|
34
|
+
buttonLabelGroup?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Optional fallback for terminals that render all options on a single line
|
|
37
|
+
* (e.g. Antigravity feedback survey: `[0] skip [1] yes [2] no [3] still using`).
|
|
38
|
+
* When per-line button extraction collects fewer than `minButtons`, the
|
|
39
|
+
* builder makes a second pass with this regex (global match, capture group 1
|
|
40
|
+
* is the label).
|
|
41
|
+
*/
|
|
42
|
+
inlineButtonPattern?: string;
|
|
43
|
+
inlineButtonFlags?: string;
|
|
44
|
+
scope?: 'between-last-two-separators' | 'window-around-question' | 'whole-screen';
|
|
45
|
+
scopeWindowLines?: number;
|
|
46
|
+
contextHeader?: ModalContextHeader;
|
|
47
|
+
continuationLines?: boolean;
|
|
48
|
+
minButtons?: number;
|
|
49
|
+
}
|
|
50
|
+
declare function findQuestionLineIndex(spec: ModalTuiSpec, lines: string[]): {
|
|
51
|
+
index: number;
|
|
52
|
+
matchedSource: 'primary' | string;
|
|
53
|
+
} | null;
|
|
54
|
+
declare function scopeLines(spec: ModalTuiSpec, lines: string[], questionIndex: number): {
|
|
55
|
+
start: number;
|
|
56
|
+
end: number;
|
|
57
|
+
};
|
|
58
|
+
declare function extractButtons(spec: ModalTuiSpec, lines: string[], windowStart: number, windowEnd: number): string[];
|
|
59
|
+
export declare function buildParseApprovalFromTui(spec: ModalTuiSpec, visibleRegion?: VisibleRegionSpec): CliParseApprovalFn;
|
|
60
|
+
export declare const __internal: {
|
|
61
|
+
findQuestionLineIndex: typeof findQuestionLineIndex;
|
|
62
|
+
scopeLines: typeof scopeLines;
|
|
63
|
+
extractButtons: typeof extractButtons;
|
|
64
|
+
};
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buildParseSessionFromTui — synthesize a parseSession function from the
|
|
3
|
+
* manifest tui block alone.
|
|
4
|
+
*
|
|
5
|
+
* Composition:
|
|
6
|
+
* 1. detectStatus from tui.spinner/modal/settledPrompt/dispatchOrder
|
|
7
|
+
* (delegated to buildDetectStatusFromTui)
|
|
8
|
+
* 2. parseApproval from tui.modal (delegated to buildParseApprovalFromTui)
|
|
9
|
+
* 3. message extraction from tui.transcriptPty (this file)
|
|
10
|
+
*
|
|
11
|
+
* The result has the same shape as the legacy parse_output:
|
|
12
|
+
* { status, messages, activeModal, transcriptAuthority?, coverage?, providerSessionId? }
|
|
13
|
+
*
|
|
14
|
+
* Identity stamping (providerUnitKey, bubbleId, sequence, bubbleState) is
|
|
15
|
+
* applied by the caller, mirroring _shared/parse_session.js. We export the
|
|
16
|
+
* stamper as `normalizeMessageIdentity` for reuse.
|
|
17
|
+
*/
|
|
18
|
+
import { type ModalTuiSpec } from './parse-approval.js';
|
|
19
|
+
export interface PrefixSpec {
|
|
20
|
+
regex: string;
|
|
21
|
+
flags?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ToolPrefixSpec extends PrefixSpec {
|
|
24
|
+
skip?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface ChromePatternSpec {
|
|
27
|
+
regex: string;
|
|
28
|
+
flags?: string;
|
|
29
|
+
label?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface TranscriptPtySpec {
|
|
32
|
+
$schema?: 'adhdev:tui/transcript-pty@1';
|
|
33
|
+
assistantPrefix: PrefixSpec;
|
|
34
|
+
userPrefix?: PrefixSpec;
|
|
35
|
+
toolPrefix?: ToolPrefixSpec;
|
|
36
|
+
continuationLine?: {
|
|
37
|
+
indented?: boolean;
|
|
38
|
+
};
|
|
39
|
+
chromePatterns?: ChromePatternSpec[];
|
|
40
|
+
stripLeadingChrome?: boolean;
|
|
41
|
+
scope?: 'screen' | 'buffer' | 'tail';
|
|
42
|
+
}
|
|
43
|
+
export interface SessionIdExtractionSpec {
|
|
44
|
+
$schema?: 'adhdev:tui/session-id-extraction@1';
|
|
45
|
+
regex: string;
|
|
46
|
+
flags?: string;
|
|
47
|
+
scope?: 'screen' | 'tail' | 'buffer';
|
|
48
|
+
label?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ParseSessionTuiSpec {
|
|
51
|
+
spinner?: any;
|
|
52
|
+
settledPrompt?: any;
|
|
53
|
+
modal?: ModalTuiSpec;
|
|
54
|
+
dispatchOrder?: any;
|
|
55
|
+
transcriptPty: TranscriptPtySpec;
|
|
56
|
+
sessionIdExtraction?: SessionIdExtractionSpec;
|
|
57
|
+
}
|
|
58
|
+
export interface SynthesizedMessage {
|
|
59
|
+
role: 'user' | 'assistant';
|
|
60
|
+
kind?: 'standard' | 'tool';
|
|
61
|
+
content: string;
|
|
62
|
+
receivedAt?: number;
|
|
63
|
+
}
|
|
64
|
+
export interface SynthesizedSession {
|
|
65
|
+
status: string | null;
|
|
66
|
+
messages: SynthesizedMessage[];
|
|
67
|
+
activeModal: {
|
|
68
|
+
message: string;
|
|
69
|
+
buttons: string[];
|
|
70
|
+
} | null;
|
|
71
|
+
modal: {
|
|
72
|
+
message: string;
|
|
73
|
+
buttons: string[];
|
|
74
|
+
} | null;
|
|
75
|
+
parsedStatus: string | null;
|
|
76
|
+
transcriptAuthority?: 'provider' | 'daemon';
|
|
77
|
+
coverage?: 'full' | 'tail' | 'current-turn';
|
|
78
|
+
providerSessionId?: string;
|
|
79
|
+
}
|
|
80
|
+
export declare function normalizeMessageIdentity<T extends {
|
|
81
|
+
role?: string;
|
|
82
|
+
kind?: string;
|
|
83
|
+
content?: string;
|
|
84
|
+
}>(messages: T[], status: string): Array<T & {
|
|
85
|
+
providerUnitKey: string;
|
|
86
|
+
bubbleId: string;
|
|
87
|
+
sequence: number;
|
|
88
|
+
_turnKey: string;
|
|
89
|
+
bubbleState: 'streaming' | 'final';
|
|
90
|
+
}>;
|
|
91
|
+
export declare function buildParseSessionFromTui(spec: ParseSessionTuiSpec): (input: any) => SynthesizedSession;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* applyVisibleRegion
|
|
3
|
+
*
|
|
4
|
+
* Scopes the raw terminal text to the "visible region" declared by a
|
|
5
|
+
* `tui/visible-region@1` spec before handing it to detect-status and
|
|
6
|
+
* parse-approval matchers.
|
|
7
|
+
*
|
|
8
|
+
* Scope semantics:
|
|
9
|
+
* screen → full text unchanged (daemon already passes rendered screen)
|
|
10
|
+
* buffer → full text unchanged
|
|
11
|
+
* tail → last `tailChars` characters (default 4000)
|
|
12
|
+
* between-anchors → text between most recent (or first) top/bottom anchor
|
|
13
|
+
* regex matches; falls back to full text if anchors not found
|
|
14
|
+
*
|
|
15
|
+
* selectAnchor:
|
|
16
|
+
* "last" → use the LAST occurrence of the top anchor — useful for providers
|
|
17
|
+
* like Antigravity that redraw a separator + prompt on every turn;
|
|
18
|
+
* this excludes all scrollback above the current session frame.
|
|
19
|
+
* "first" → use the FIRST occurrence (default per schema).
|
|
20
|
+
*/
|
|
21
|
+
interface AnchorPatternSpec {
|
|
22
|
+
pattern: string;
|
|
23
|
+
flags?: string;
|
|
24
|
+
}
|
|
25
|
+
interface AnchorsSpec {
|
|
26
|
+
top?: AnchorPatternSpec;
|
|
27
|
+
bottom?: AnchorPatternSpec;
|
|
28
|
+
}
|
|
29
|
+
export interface VisibleRegionSpec {
|
|
30
|
+
$schema?: 'adhdev:tui/visible-region@1';
|
|
31
|
+
scope: 'screen' | 'tail' | 'buffer' | 'between-anchors';
|
|
32
|
+
tailChars?: number;
|
|
33
|
+
anchors?: AnchorsSpec;
|
|
34
|
+
selectAnchor?: 'first' | 'last';
|
|
35
|
+
stripCues?: string[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Apply the visible-region spec to `text` and return the scoped substring.
|
|
39
|
+
* Never throws on missing anchors — falls back to the full text instead.
|
|
40
|
+
*/
|
|
41
|
+
export declare function applyVisibleRegion(spec: VisibleRegionSpec, text: string): string;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider fixture format — v1.
|
|
3
|
+
*
|
|
4
|
+
* A fixture is two files committed alongside a provider:
|
|
5
|
+
*
|
|
6
|
+
* fixtures/<scenario>.pty — raw PTY byte capture (binary or text)
|
|
7
|
+
* fixtures/<scenario>.expected.json — expected handler outputs at one
|
|
8
|
+
* or more anchor frames
|
|
9
|
+
*
|
|
10
|
+
* Scenarios cover one concrete agent behaviour: cold start, prompt sent,
|
|
11
|
+
* generating with tool call, approval modal, idle after assistant complete,
|
|
12
|
+
* etc.
|
|
13
|
+
*
|
|
14
|
+
* The replay runner feeds the .pty bytes through the daemon's terminal
|
|
15
|
+
* emulator (TerminalTranscriptAccumulator) building up snapshots at each
|
|
16
|
+
* declared anchor, invokes the provider handlers, and compares results
|
|
17
|
+
* to the .expected.json shape.
|
|
18
|
+
*
|
|
19
|
+
* This file is the source of truth for the format. Schema mirror at
|
|
20
|
+
* sdk/v1/schemas/fixture-expected.schema.json.
|
|
21
|
+
*/
|
|
22
|
+
import type { CliApprovalModal, CliChatMessage, CliStatus } from '../types/cli/index.js';
|
|
23
|
+
/**
|
|
24
|
+
* The top-level shape of <scenario>.expected.json.
|
|
25
|
+
*
|
|
26
|
+
* `anchors` is an ordered list; each anchor declares a point in the
|
|
27
|
+
* PTY stream (by byte offset or by sentinel string) and the expected
|
|
28
|
+
* handler outputs at that point.
|
|
29
|
+
*/
|
|
30
|
+
export interface FixtureExpected {
|
|
31
|
+
/** Schema version. Currently always 1. */
|
|
32
|
+
version: 1;
|
|
33
|
+
/** Free-form human description of the scenario. */
|
|
34
|
+
description?: string;
|
|
35
|
+
/** Provider type this fixture is for. */
|
|
36
|
+
providerType: string;
|
|
37
|
+
/** Path (relative to the .expected.json file) of the corresponding .pty file. */
|
|
38
|
+
ptyFile: string;
|
|
39
|
+
/** Optional cols/rows the recording was captured under. Defaults to 80x24. */
|
|
40
|
+
terminal?: {
|
|
41
|
+
cols: number;
|
|
42
|
+
rows: number;
|
|
43
|
+
};
|
|
44
|
+
/** Anchor points. Order matters; bytes are replayed up to each anchor. */
|
|
45
|
+
anchors: FixtureAnchor[];
|
|
46
|
+
}
|
|
47
|
+
export interface FixtureAnchor {
|
|
48
|
+
/** Human-readable identifier. Used in test reporter output. */
|
|
49
|
+
name: string;
|
|
50
|
+
/** Optional description. */
|
|
51
|
+
description?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Where to stop replaying bytes. Exactly one of:
|
|
54
|
+
* - `untilByte` — stop after the Nth raw byte
|
|
55
|
+
* - `untilSentinel` — stop the first time `sentinel` appears in the
|
|
56
|
+
* accumulated rendered screen text
|
|
57
|
+
*/
|
|
58
|
+
untilByte?: number;
|
|
59
|
+
untilSentinel?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Expected handler outputs. All keys optional; the replay runner only
|
|
62
|
+
* checks the keys you provide.
|
|
63
|
+
*/
|
|
64
|
+
expect: {
|
|
65
|
+
detectStatus?: CliStatus | null;
|
|
66
|
+
parseApproval?: CliApprovalModal | null;
|
|
67
|
+
parseSession?: {
|
|
68
|
+
status?: CliStatus;
|
|
69
|
+
modal?: CliApprovalModal | null;
|
|
70
|
+
providerSessionId?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Either an exact array (deep-equal) or a shape declaration that lets
|
|
73
|
+
* you match only the role/kind/content shape without pinning specific
|
|
74
|
+
* fields. Pin specific message-by-message when you care about content.
|
|
75
|
+
*/
|
|
76
|
+
messages?: CliChatMessage[] | MessageShape[];
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Optional notes about why this anchor exists. Encouraged for
|
|
81
|
+
* regression-style fixtures so future maintainers know what bug the
|
|
82
|
+
* fixture catches.
|
|
83
|
+
*/
|
|
84
|
+
notes?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* A shape declaration that matches a message by role/kind plus optional
|
|
88
|
+
* content substring or regex. Use this instead of an exact CliChatMessage
|
|
89
|
+
* when you do not want to pin exact text.
|
|
90
|
+
*/
|
|
91
|
+
export interface MessageShape {
|
|
92
|
+
role: CliChatMessage['role'];
|
|
93
|
+
kind?: CliChatMessage['kind'];
|
|
94
|
+
/** Substring the content must contain. Plain string only. */
|
|
95
|
+
contentIncludes?: string;
|
|
96
|
+
/** Regex the content must match. */
|
|
97
|
+
contentMatches?: {
|
|
98
|
+
source: string;
|
|
99
|
+
flags?: string;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Result of replaying one anchor — what the handlers actually emitted.
|
|
104
|
+
* Used by the test runner to produce diff output.
|
|
105
|
+
*/
|
|
106
|
+
export interface AnchorReplayResult {
|
|
107
|
+
anchor: FixtureAnchor;
|
|
108
|
+
passes: boolean;
|
|
109
|
+
diffs: string[];
|
|
110
|
+
actual: {
|
|
111
|
+
detectStatus?: CliStatus | null;
|
|
112
|
+
parseApproval?: CliApprovalModal | null;
|
|
113
|
+
parseSession?: {
|
|
114
|
+
status: CliStatus;
|
|
115
|
+
modal: CliApprovalModal | null;
|
|
116
|
+
providerSessionId?: string;
|
|
117
|
+
messages: CliChatMessage[];
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export interface FixtureReplayResult {
|
|
122
|
+
fixturePath: string;
|
|
123
|
+
expected: FixtureExpected;
|
|
124
|
+
perAnchor: AnchorReplayResult[];
|
|
125
|
+
overallPasses: boolean;
|
|
126
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixture tooling — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Imported by `adhdev provider test` and by daemon-core's CI regression
|
|
5
|
+
* suite. Format types and the replay runner are stable v1.
|
|
6
|
+
*/
|
|
7
|
+
export type { FixtureExpected, FixtureAnchor, MessageShape, AnchorReplayResult, FixtureReplayResult, } from './format.js';
|
|
8
|
+
export { loadFixtureExpected, replayFixture, formatReplayReport, type CliProviderHandlers, type ReplayOptions, } from './replay.js';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixture replay runner.
|
|
3
|
+
*
|
|
4
|
+
* Given a `.pty` byte capture and `.expected.json` declaration, replay the
|
|
5
|
+
* bytes through the daemon's TerminalTranscriptAccumulator, invoke the
|
|
6
|
+
* provider handlers at each anchor, and diff against expectations.
|
|
7
|
+
*
|
|
8
|
+
* Used by:
|
|
9
|
+
* - `adhdev provider test` (daemon-cloud CLI)
|
|
10
|
+
* - daemon-core CI suite for production-provider regression tests
|
|
11
|
+
* - external authors as `adhdev provider test ./`
|
|
12
|
+
*/
|
|
13
|
+
import { type CliScriptInput as InternalCliScriptInput, type CliStatusInput as InternalCliStatusInput, type CliApprovalInput as InternalCliApprovalInput, type ParsedSession as InternalParsedSession } from '../../../../cli-adapters/provider-cli-shared.js';
|
|
14
|
+
import type { FixtureExpected, FixtureReplayResult } from './format.js';
|
|
15
|
+
export interface CliProviderHandlers {
|
|
16
|
+
createState?: () => Record<string, unknown>;
|
|
17
|
+
parseSession: (state: unknown, input: InternalCliScriptInput) => InternalParsedSession;
|
|
18
|
+
detectStatus: (input: InternalCliStatusInput) => string | null;
|
|
19
|
+
parseApproval: (input: InternalCliApprovalInput) => {
|
|
20
|
+
message: string;
|
|
21
|
+
buttons: string[];
|
|
22
|
+
} | null;
|
|
23
|
+
parseOutput?: (state: unknown, input: InternalCliScriptInput) => unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface ReplayOptions {
|
|
26
|
+
/** Override accumulator dimensions. Defaults to the fixture's terminal block or 80x24. */
|
|
27
|
+
cols?: number;
|
|
28
|
+
rows?: number;
|
|
29
|
+
/** Provided manually (e.g. by tests). Defaults to wall-clock at replay start. */
|
|
30
|
+
spawnAt?: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function loadFixtureExpected(expectedPath: string): FixtureExpected;
|
|
33
|
+
export declare function replayFixture(expectedPath: string, handlers: CliProviderHandlers, options?: ReplayOptions): FixtureReplayResult;
|
|
34
|
+
/**
|
|
35
|
+
* Format a result as a human-readable report. Returns the multi-line string;
|
|
36
|
+
* caller decides whether to print or assert.
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatReplayReport(result: FixtureReplayResult): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider SDK — v1 surface.
|
|
3
|
+
*
|
|
4
|
+
* Internal consumers (daemon-core) import directly from here.
|
|
5
|
+
* External consumers (provider authors) import from the npm package
|
|
6
|
+
* `@adhdev/provider-types` (Apache 2.0), which is extracted from this
|
|
7
|
+
* source at build time.
|
|
8
|
+
*/
|
|
9
|
+
export * from './types/cli/index.js';
|
|
10
|
+
export * from './types/common/index.js';
|
|
11
|
+
export { buildDetectStatusFromTui, type DetectStatusTuiSpec, } from './builders/cli/detect-status.js';
|
|
12
|
+
export { buildParseApprovalFromTui, type ModalTuiSpec, } from './builders/cli/parse-approval.js';
|
|
13
|
+
export { applyVisibleRegion, type VisibleRegionSpec, } from './builders/cli/visible-region.js';
|
|
14
|
+
export { buildParseApprovalFromSquash, compactText, type ApprovalSquashSpec, } from './builders/cli/parse-approval-squash.js';
|
|
15
|
+
export { buildParseSessionFromTui, normalizeMessageIdentity, type ParseSessionTuiSpec, type TranscriptPtySpec, type SessionIdExtractionSpec, type SynthesizedMessage, type SynthesizedSession, } from './builders/cli/parse-session.js';
|
|
16
|
+
export { buildDetectStatusFromAcp, type AcpSessionSpec, type AcpStatusInput, type AcpDetectedStatus, } from './builders/acp/detect-status.js';
|
|
17
|
+
export { loadFixtureExpected, replayFixture, formatReplayReport, type FixtureExpected, type FixtureAnchor, type MessageShape, type AnchorReplayResult, type FixtureReplayResult, type CliProviderHandlers, type ReplayOptions, } from './fixture-tooling/index.js';
|
|
18
|
+
export { analyzeOverrideTaint, formatTaintResult, type TaintLevel, type TaintCategory, type TaintFinding, type TaintResult, validateCliProviderManifest, formatManifestValidationIssues, type ManifestValidationIssue, type ManifestValidationResult, } from './validators/index.js';
|
|
19
|
+
export declare const V1_PRIMITIVE_CATALOG: Readonly<{
|
|
20
|
+
readonly acp: readonly ["adhdev:acp/session-protocol@1"];
|
|
21
|
+
readonly tui: readonly ["adhdev:tui/prompt-marker@1", "adhdev:tui/spinner@1", "adhdev:tui/settled-prompt@1", "adhdev:tui/assistant-block@1", "adhdev:tui/tool-block@1", "adhdev:tui/thinking-block@1", "adhdev:tui/user-echo@1", "adhdev:tui/modal@1", "adhdev:tui/modal-as-message@1", "adhdev:tui/footer-chrome@1", "adhdev:tui/welcome-screen@1", "adhdev:tui/visible-region@1", "adhdev:tui/cue-ordering@1", "adhdev:tui/dispatch-order@1", "adhdev:tui/index-finder@1", "adhdev:tui/status-downgrade@1", "adhdev:tui/approval-stitching@1", "adhdev:tui/approval-squash@1", "adhdev:tui/media-input@1", "adhdev:tui/session-id-extraction@1", "adhdev:tui/error-detection@1"];
|
|
22
|
+
readonly nativeHistory: readonly ["adhdev:native-history/codex-rollout@1", "adhdev:native-history/claude-jsonl@1", "adhdev:native-history/anthropic-cli-transcript@1", "adhdev:native-history/hermes-session@1"];
|
|
23
|
+
readonly cliCapability: readonly ["adhdev:cli/capability-list@1", "adhdev:cli/control-state@1", "adhdev:cli/capability-action@1", "adhdev:cli/control-toggle@1", "adhdev:cli/picker-open@1", "adhdev:cli/picker-set@1"];
|
|
24
|
+
readonly common: readonly ["adhdev:common/setting-boolean@1", "adhdev:common/setting-number@1", "adhdev:common/setting-string@1", "adhdev:common/setting-select@1", "adhdev:common/capability-input@1", "adhdev:common/capability-output@1", "adhdev:common/capability-controls@1", "adhdev:common/auth-env-var@1", "adhdev:common/auth-cli-command@1", "adhdev:common/spawn@1", "adhdev:common/timeouts@1", "adhdev:common/resume@1", "adhdev:common/mesh-coordinator@1"];
|
|
25
|
+
readonly override: readonly ["adhdev:override/cli-parse-session@1", "adhdev:override/cli-detect-status@1", "adhdev:override/cli-parse-approval@1", "adhdev:override/cli-parse-output@1", "adhdev:override/cli-read-native-history@1", "adhdev:override/cli-list-native-history@1", "adhdev:override/cli-capability-handler@1"];
|
|
26
|
+
}>;
|
|
27
|
+
/** Aggregate flat list — for provider catalog endpoints. */
|
|
28
|
+
export declare const V1_ALL_PRIMITIVES: ReadonlyArray<string>;
|
|
29
|
+
/** Catalog version label exposed at `registry.adhf.dev/primitives`. */
|
|
30
|
+
export declare const V1_CONTRACT_VERSION: "1.0.0";
|