@adhdev/daemon-core 0.9.82-rc.41 → 0.9.82-rc.411
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 +14 -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 +2 -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 +116 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router.d.ts +256 -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 +77 -1
- package/dist/config/mesh-json-config.d.ts +299 -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 +57 -13
- package/dist/index.js +46445 -17229
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +46052 -16978
- 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-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 +19 -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 +55 -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-missions.d.ts +164 -0
- package/dist/mesh/mesh-node-identity.d.ts +289 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +95 -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 +447 -0
- package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -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 +281 -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 +197 -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 +14 -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 +407 -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 +420 -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 +90 -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 +527 -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 +673 -0
- package/src/commands/high-family/mesh-events.ts +80 -0
- package/src/commands/high-family/mesh-status.ts +678 -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 +874 -0
- package/src/commands/med-family/mesh-host-pairing.ts +234 -0
- package/src/commands/med-family/mesh-queue.ts +131 -0
- package/src/commands/med-family/mesh-restart.ts +92 -0
- package/src/commands/med-family/types.ts +120 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router.ts +2516 -3221
- 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 +353 -22
- package/src/config/mesh-json-config.ts +617 -0
- package/src/config/recent-activity.ts +8 -2
- 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 +171 -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-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 +1773 -0
- package/src/mesh/mesh-event-trace.ts +67 -0
- package/src/mesh/mesh-events-coordinator.ts +31 -0
- package/src/mesh/mesh-events-pending.ts +590 -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 +32 -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 +596 -102
- package/src/mesh/mesh-missions.ts +322 -0
- package/src/mesh/mesh-node-identity.ts +1887 -0
- package/src/mesh/mesh-queue-assignment.ts +1738 -0
- package/src/mesh/mesh-reconcile-loop.ts +1726 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1666 -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 +1836 -0
- package/src/mesh/mesh-scheduling-runtime.ts +198 -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 +1205 -141
- package/src/mesh/preview-freshness.ts +118 -0
- package/src/mesh/refine-config.ts +423 -0
- package/src/mesh/worktree-bootstrap-config.ts +369 -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 +1865 -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 +30 -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 +1304 -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 +629 -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
|
@@ -82,6 +82,20 @@ export declare class ProviderInstanceManager {
|
|
|
82
82
|
* Called when user changes settings from dashboard.
|
|
83
83
|
*/
|
|
84
84
|
updateInstanceSettings(providerType: string, settings: Record<string, any>): number;
|
|
85
|
+
/** Stamp a mesh assignment on a single instance (used by mesh_send_task
|
|
86
|
+
* --direct so the worker's completion event has a coordinator routing
|
|
87
|
+
* marker in state.settings). Returns true if the instance existed and
|
|
88
|
+
* the stamp was applied. */
|
|
89
|
+
attachMeshAssignmentToInstance(instanceId: string, assignment: {
|
|
90
|
+
meshId: string;
|
|
91
|
+
nodeId?: string;
|
|
92
|
+
taskId?: string;
|
|
93
|
+
coordinatorDaemonId?: string;
|
|
94
|
+
coordinatorSessionId?: string;
|
|
95
|
+
}): boolean;
|
|
96
|
+
/** Clear a mesh assignment after the dispatched task reaches a terminal
|
|
97
|
+
* state (generating_completed / stopped / failed). */
|
|
98
|
+
detachMeshAssignmentFromInstance(instanceId: string): boolean;
|
|
85
99
|
refreshProviderDefinitions(resolveProvider: (providerType: string) => unknown): number;
|
|
86
100
|
/**
|
|
87
101
|
* All terminate
|
|
@@ -11,7 +11,8 @@ import type { ProviderModule, ProviderResumeCapability } from './contracts.js';
|
|
|
11
11
|
import type { AcpConfigOption, AcpMode, ProviderControlSchema, ProviderSummaryMetadata, SessionCapability } from '../shared-types.js';
|
|
12
12
|
import type { MessageInputSupport } from './provider-input-support.js';
|
|
13
13
|
import type { ChatMessage } from '../types.js';
|
|
14
|
-
|
|
14
|
+
import type { InteractivePrompt } from './types/interactive-prompt.js';
|
|
15
|
+
export type ProviderStatus = 'idle' | 'generating' | 'waiting_approval' | 'waiting_choice' | 'error' | 'stopped' | 'starting';
|
|
15
16
|
export interface ProviderRuntimeWriteOwner {
|
|
16
17
|
clientId: string;
|
|
17
18
|
ownerType: 'agent' | 'user';
|
|
@@ -42,6 +43,7 @@ export interface ActiveChatData {
|
|
|
42
43
|
message: string;
|
|
43
44
|
buttons: string[];
|
|
44
45
|
} | null;
|
|
46
|
+
activeInteractivePrompt?: InteractivePrompt | null;
|
|
45
47
|
inputContent?: string;
|
|
46
48
|
}
|
|
47
49
|
/** Standardized error reasons across all provider categories */
|
|
@@ -56,6 +58,7 @@ interface ProviderStateBase {
|
|
|
56
58
|
status: ProviderStatus;
|
|
57
59
|
/** chat data */
|
|
58
60
|
activeChat: ActiveChatData | null;
|
|
61
|
+
activeInteractivePrompt?: InteractivePrompt | null;
|
|
59
62
|
/** Workspace — project path or name (all categories) */
|
|
60
63
|
workspace?: string | null;
|
|
61
64
|
/** Runtime info (real-time detection) */
|
|
@@ -178,8 +181,27 @@ export interface ProviderInstance {
|
|
|
178
181
|
onEvent(event: string, data?: any): void;
|
|
179
182
|
/** Update settings at runtime (called when user changes settings from dashboard) */
|
|
180
183
|
updateSettings?(newSettings: Record<string, any>): void;
|
|
184
|
+
/** Stamp a direct-dispatch mesh task assignment so generating_completed
|
|
185
|
+
* events route back to the originating coordinator. Cleared by
|
|
186
|
+
* detachMeshAssignment when the task reaches a terminal state. */
|
|
187
|
+
attachMeshAssignment?(assignment: {
|
|
188
|
+
meshId: string;
|
|
189
|
+
nodeId?: string;
|
|
190
|
+
taskId?: string;
|
|
191
|
+
coordinatorDaemonId?: string;
|
|
192
|
+
coordinatorSessionId?: string;
|
|
193
|
+
}): void;
|
|
194
|
+
detachMeshAssignment?(): void;
|
|
181
195
|
/** Refresh static provider definition/scripts without restarting the live runtime. */
|
|
182
196
|
refreshProviderDefinition?(provider: ProviderModule): void;
|
|
197
|
+
/**
|
|
198
|
+
* Record that a human is actively attending this session by hand right now
|
|
199
|
+
* (foreground tab selection, controlbar use, manual approval, terminal
|
|
200
|
+
* input). Provider-common signal that suppresses auto-approve for a short
|
|
201
|
+
* window so the user can drive the session manually; background mesh worker
|
|
202
|
+
* sessions never receive it, so their delegated auto-approve is unaffected.
|
|
203
|
+
*/
|
|
204
|
+
noteManualInteraction?(now?: number): void;
|
|
183
205
|
/** cleanup */
|
|
184
206
|
dispose(): void;
|
|
185
207
|
}
|
|
@@ -58,7 +58,9 @@ export declare class ProviderLoader {
|
|
|
58
58
|
/** Inject VersionArchive so resolve() can auto-detect installed versions */
|
|
59
59
|
setVersionArchive(archive: VersionArchive): void;
|
|
60
60
|
private static readonly GITHUB_TARBALL_URL;
|
|
61
|
+
private static readonly REGISTRY_BASE_URL;
|
|
61
62
|
private static readonly META_FILE;
|
|
63
|
+
private static readonly REGISTRY_META_FILE;
|
|
62
64
|
private static readonly REPO_PROVIDER_DIRNAME;
|
|
63
65
|
private static readonly SIBLING_MARKER_FILE;
|
|
64
66
|
private static readonly SIBLING_ENV_VAR;
|
|
@@ -84,6 +86,7 @@ export declare class ProviderLoader {
|
|
|
84
86
|
*/
|
|
85
87
|
probeStarts?: string[];
|
|
86
88
|
});
|
|
89
|
+
private migrateMarketplaceDirToExternal;
|
|
87
90
|
private log;
|
|
88
91
|
private debugLog;
|
|
89
92
|
/**
|
|
@@ -128,9 +131,12 @@ export declare class ProviderLoader {
|
|
|
128
131
|
resolveProviderFile(type: string, ...segments: string[]): string | null;
|
|
129
132
|
/**
|
|
130
133
|
* Load all providers (3-tier priority)
|
|
131
|
-
* 1.
|
|
132
|
-
* 2.
|
|
133
|
-
*
|
|
134
|
+
* 1. ~/.adhdev/providers/.upstream/ — official git, auto-synced
|
|
135
|
+
* 2. ~/.adhdev/external/ — 3rd-party git sources, user-added,
|
|
136
|
+
* bundled providers may include arbitrary JS (untrusted by default)
|
|
137
|
+
* 3. ~/.adhdev/providers/ (excluding .upstream) — user-authored customs,
|
|
138
|
+
* always wins
|
|
139
|
+
* Highest priority listed last (overwrites earlier loads).
|
|
134
140
|
* If .upstream/ is empty, call fetchLatest() before loadAll().
|
|
135
141
|
*/
|
|
136
142
|
loadAll(): void;
|
|
@@ -295,6 +301,22 @@ export declare class ProviderLoader {
|
|
|
295
301
|
*
|
|
296
302
|
* @returns Whether an update occurred
|
|
297
303
|
*/
|
|
304
|
+
/**
|
|
305
|
+
* Sync providers from the ADHDev registry (registry.adhf.dev).
|
|
306
|
+
*
|
|
307
|
+
* Downloads only providers whose server checksum differs from the locally
|
|
308
|
+
* cached checksum. Falls back gracefully to the GitHub tarball path if the
|
|
309
|
+
* registry is unreachable or returns an unexpected response.
|
|
310
|
+
*
|
|
311
|
+
* Returns `{ updated: true }` when at least one provider file changed on disk,
|
|
312
|
+
* `{ updated: false }` when everything is already current, or
|
|
313
|
+
* `{ updated: false, error }` when the registry couldn't be reached and we
|
|
314
|
+
* should proceed to the GitHub tarball fallback.
|
|
315
|
+
*/
|
|
316
|
+
fetchFromRegistry(): Promise<{
|
|
317
|
+
updated: boolean;
|
|
318
|
+
error?: string;
|
|
319
|
+
}>;
|
|
298
320
|
fetchLatest(): Promise<{
|
|
299
321
|
updated: boolean;
|
|
300
322
|
error?: string;
|
|
@@ -305,7 +327,7 @@ export declare class ProviderLoader {
|
|
|
305
327
|
private copyDirRecursive;
|
|
306
328
|
/** .meta.json save */
|
|
307
329
|
private writeMeta;
|
|
308
|
-
/** Count provider files (provider.
|
|
330
|
+
/** Count provider files (provider.v1.json or provider.json — at most one per dir). */
|
|
309
331
|
private countProviders;
|
|
310
332
|
/**
|
|
311
333
|
* Get public settings schema for a provider (for dashboard UI rendering)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type ProviderTrust = 'user-custom' | 'trusted' | 'trusted-with-scripts' | 'external-safe' | 'external-untrusted';
|
|
2
|
+
export type ProviderLayer = 'user' | 'upstream' | 'external';
|
|
3
|
+
export interface ProviderManifestShape {
|
|
4
|
+
/** Has a `tui` block — SDK builders consume it as code paths. */
|
|
5
|
+
hasTui: boolean;
|
|
6
|
+
/** Has a non-empty `overrides` object — JS override paths. */
|
|
7
|
+
hasOverrides: boolean;
|
|
8
|
+
/** compatibility[].scriptDir or defaultScriptDir is set — JS scripts dir. */
|
|
9
|
+
hasScriptDir: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Inspect a manifest to decide whether it ships JavaScript hooks.
|
|
13
|
+
* Cheap; pure; safe to call on every provider load.
|
|
14
|
+
*/
|
|
15
|
+
export declare function inspectManifestShape(manifest: Record<string, unknown>): ProviderManifestShape;
|
|
16
|
+
/**
|
|
17
|
+
* Classify trust given the layer the provider was loaded from + the
|
|
18
|
+
* manifest's JS-hook footprint.
|
|
19
|
+
*/
|
|
20
|
+
export declare function classifyTrust(layer: ProviderLayer, shape: ProviderManifestShape): ProviderTrust;
|
|
21
|
+
/**
|
|
22
|
+
* Returns true when activation should require an explicit user confirm.
|
|
23
|
+
* Today only `external-untrusted` qualifies; future trust levels may
|
|
24
|
+
* fold in here.
|
|
25
|
+
*/
|
|
26
|
+
export declare function requiresConfirmation(trust: ProviderTrust): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Render a short human-readable rationale for the trust tag. Used by
|
|
29
|
+
* the dashboard's confirmation modal and the provider catalog tooltip.
|
|
30
|
+
*/
|
|
31
|
+
export declare function describeTrust(trust: ProviderTrust): string;
|
|
@@ -1,2 +1,31 @@
|
|
|
1
1
|
import type { ReadChatResult } from './contracts.js';
|
|
2
|
+
import { CHAT_CONTRACT_VERSION_V1, CHAT_CONTRACT_VERSION_V2, type ChatContractVersion, type ReadChatResultV2 } from './transcript-v2.js';
|
|
3
|
+
/**
|
|
4
|
+
* Read the producer-declared contract version from a raw read_chat payload.
|
|
5
|
+
* Returns v1 when absent or unrecognised, so legacy producers keep working
|
|
6
|
+
* through A1. A2 will tighten this to throw when an unsupported version is
|
|
7
|
+
* declared.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readPayloadContractVersion(raw: unknown): ChatContractVersion;
|
|
10
|
+
/**
|
|
11
|
+
* Validate a v2 payload. Thin wrapper around assertReadChatResultV2Payload
|
|
12
|
+
* that prefixes the contract violation with the caller's source label.
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateReadChatResultV2Payload(raw: unknown, source?: string): ReadChatResultV2;
|
|
15
|
+
/**
|
|
16
|
+
* Versioned entry point. Routes on the producer-declared contractVersion:
|
|
17
|
+
* - v2 → strict v2 validation (transcript-v2.ts invariants)
|
|
18
|
+
* - v1 (or absent) → legacy permissive validation
|
|
19
|
+
*
|
|
20
|
+
* Callers that have not yet been audited to handle v2 outputs should use
|
|
21
|
+
* validateReadChatResultPayload directly; that path stays bound to v1 shape
|
|
22
|
+
* during the A1 transition.
|
|
23
|
+
*/
|
|
24
|
+
export declare function validateReadChatResultPayloadVersioned(raw: unknown, source?: string): {
|
|
25
|
+
version: typeof CHAT_CONTRACT_VERSION_V1;
|
|
26
|
+
payload: ReadChatResult & Record<string, unknown>;
|
|
27
|
+
} | {
|
|
28
|
+
version: typeof CHAT_CONTRACT_VERSION_V2;
|
|
29
|
+
payload: ReadChatResultV2;
|
|
30
|
+
};
|
|
2
31
|
export declare function validateReadChatResultPayload(raw: unknown, source?: string): ReadChatResult & Record<string, unknown>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buildDetectStatusFromAcp
|
|
3
|
+
*
|
|
4
|
+
* Turns a declarative `acp/session-protocol@1` block into a runtime
|
|
5
|
+
* `(input: AcpStatusInput) => 'idle' | 'generating' | 'waiting_approval' | null`
|
|
6
|
+
* function.
|
|
7
|
+
*
|
|
8
|
+
* Dispatch order:
|
|
9
|
+
* 1. Not connected → null (no information available).
|
|
10
|
+
* 2. Error patterns — checked first; first match returns the declared verdict.
|
|
11
|
+
* 3. Generating pattern — `generating`.
|
|
12
|
+
* 4. Idle pattern — `idle`.
|
|
13
|
+
* 5. Default: `null` (no change — caller preserves last known status).
|
|
14
|
+
*
|
|
15
|
+
* All regex patterns are compiled once at builder time so the returned
|
|
16
|
+
* detector function is allocation-free on the hot path.
|
|
17
|
+
*/
|
|
18
|
+
interface AcpRegexPatternSpec {
|
|
19
|
+
regex: string;
|
|
20
|
+
flags?: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
}
|
|
23
|
+
interface AcpErrorPatternSpec extends AcpRegexPatternSpec {
|
|
24
|
+
verdict: 'idle' | 'generating' | 'waiting_approval';
|
|
25
|
+
}
|
|
26
|
+
export interface AcpSessionSpec {
|
|
27
|
+
$schema?: 'adhdev:acp/session-protocol@1';
|
|
28
|
+
/** Pattern that matches a line emitted when the agent is idle/ready. */
|
|
29
|
+
idlePattern?: AcpRegexPatternSpec;
|
|
30
|
+
/** Pattern that matches a line emitted while the agent is actively working. */
|
|
31
|
+
generatingPattern?: AcpRegexPatternSpec;
|
|
32
|
+
/**
|
|
33
|
+
* Error/edge-case patterns. Checked in order; first match returns the
|
|
34
|
+
* declared verdict. Useful for approval prompts, fatal errors, etc.
|
|
35
|
+
*/
|
|
36
|
+
errorPatterns?: AcpErrorPatternSpec[];
|
|
37
|
+
/** Wire format; informational only at the builder level — regex matching
|
|
38
|
+
* is identical regardless of promptStyle. */
|
|
39
|
+
promptStyle?: 'json-rpc' | 'plain-text' | 'mcp';
|
|
40
|
+
/** Message delimiter used to split incoming bytes (default: newline). */
|
|
41
|
+
messageDelimiter?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface AcpStatusInput {
|
|
44
|
+
/** The most recently received line from the stdio stream. */
|
|
45
|
+
lastLine: string;
|
|
46
|
+
/**
|
|
47
|
+
* A sliding window of recent output lines (newest last).
|
|
48
|
+
* Builders may check these when a single line is not enough for context.
|
|
49
|
+
*/
|
|
50
|
+
recentLines: string[];
|
|
51
|
+
/** Whether the ACP process is currently connected and running. */
|
|
52
|
+
isConnected: boolean;
|
|
53
|
+
}
|
|
54
|
+
export type AcpDetectedStatus = 'idle' | 'generating' | 'waiting_approval' | null;
|
|
55
|
+
interface CompiledAcpSpec {
|
|
56
|
+
idle: RegExp | null;
|
|
57
|
+
generating: RegExp | null;
|
|
58
|
+
errors: Array<{
|
|
59
|
+
re: RegExp;
|
|
60
|
+
verdict: AcpDetectedStatus;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
declare function compileSpec(spec: AcpSessionSpec): CompiledAcpSpec;
|
|
64
|
+
export declare function buildDetectStatusFromAcp(spec: AcpSessionSpec): (input: AcpStatusInput) => AcpDetectedStatus;
|
|
65
|
+
export declare const __internal: {
|
|
66
|
+
compileSpec: typeof compileSpec;
|
|
67
|
+
};
|
|
68
|
+
export {};
|
|
@@ -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 {};
|