@adhdev/daemon-core 0.9.82-rc.44 → 0.9.82-rc.441
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 +120 -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 +50719 -20120
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +50317 -19882
- 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 +29 -0
- package/dist/mesh/mesh-init.d.ts +128 -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 +300 -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 +252 -3
- package/dist/providers/contracts.d.ts +149 -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 +509 -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 +2447 -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 +572 -27
- 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 +714 -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 +1242 -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 +2846 -3484
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +493 -24
- package/src/config/config.ts +12 -0
- package/src/config/mesh-config.ts +593 -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 +196 -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 +415 -34
- 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 +1897 -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 +111 -0
- package/src/mesh/mesh-init.ts +350 -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 +1924 -0
- package/src/mesh/mesh-reconcile-loop.ts +1997 -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 +1254 -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 +2001 -106
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +160 -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 +345 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +260 -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 +509 -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 +1143 -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 +748 -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,41 @@
|
|
|
1
|
+
import type { NativeHistoryConfig } from './types.js';
|
|
2
|
+
export interface NativeHistoryInput {
|
|
3
|
+
agentType?: string;
|
|
4
|
+
sessionId?: string;
|
|
5
|
+
providerSessionId?: string;
|
|
6
|
+
historySessionId?: string;
|
|
7
|
+
workspace?: string;
|
|
8
|
+
/** Daemon-side wall clock at the moment the session was registered.
|
|
9
|
+
* Native-history file lookups use this as the lower bound: any file
|
|
10
|
+
* whose mtime is before the current session started can't be from
|
|
11
|
+
* this session, so it's excluded from newest-recent matching. The
|
|
12
|
+
* caller (chat-history pipeline) populates this from the session
|
|
13
|
+
* registry; specs/executor never need to know how it's sourced. */
|
|
14
|
+
sessionStartedAtMs?: number;
|
|
15
|
+
/** Env overrides the daemon set on the spawned CLI. The mesh
|
|
16
|
+
* coordinator points hermes at a per-coordinator HERMES_HOME so
|
|
17
|
+
* the hermes process writes its state.db into a tmp directory
|
|
18
|
+
* instead of ~/.hermes. expandPath consults this map before
|
|
19
|
+
* process.env so the native-history reader follows the spawned
|
|
20
|
+
* child's view of HERMES_HOME / similar overrides; without it
|
|
21
|
+
* the reader would always look at ~/.hermes and miss every
|
|
22
|
+
* coordinator-session transcript. */
|
|
23
|
+
envOverrides?: Record<string, string>;
|
|
24
|
+
args?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
export interface NativeHistoryMessage {
|
|
27
|
+
role: 'user' | 'assistant' | 'system';
|
|
28
|
+
content: string;
|
|
29
|
+
receivedAt: number;
|
|
30
|
+
kind?: string;
|
|
31
|
+
workspace?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface NativeHistoryResult {
|
|
34
|
+
messages: NativeHistoryMessage[];
|
|
35
|
+
providerSessionId?: string;
|
|
36
|
+
sourcePath: string;
|
|
37
|
+
sourceMtimeMs: number;
|
|
38
|
+
nativeHistoryCoverage?: 'full' | 'partial' | 'best-effort';
|
|
39
|
+
workspace?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function executeNativeHistory(cfg: NativeHistoryConfig, input: NativeHistoryInput): NativeHistoryResult | null;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PreLaunchTrust } from './fsm-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Idempotently add `workingDir` (realpath) to the trusted-folders array named
|
|
4
|
+
* by `trust.key` inside the JSON settings file at `trust.settings_path`.
|
|
5
|
+
*
|
|
6
|
+
* - Creates the file (and parent dir) if missing.
|
|
7
|
+
* - Preserves all other settings; only the trust array is touched.
|
|
8
|
+
* - No-ops if the path is already present.
|
|
9
|
+
* - Best-effort: any failure is logged and swallowed. A failed pre-trust must
|
|
10
|
+
* not block the launch — the worst case is the old behavior (the FSM still
|
|
11
|
+
* detects the trust modal as an approval state), not a crash.
|
|
12
|
+
*
|
|
13
|
+
* Returns the path that was added (realpath), or null if nothing changed /
|
|
14
|
+
* an error occurred — purely so callers/tests can assert the effect.
|
|
15
|
+
*/
|
|
16
|
+
export declare function applyPreLaunchTrust(trust: PreLaunchTrust, workingDir: string): string | null;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CliProviderModule } from '../../cli-adapters/provider-cli-adapter.js';
|
|
2
|
+
import type { PtyTransportFactory } from '../../cli-adapters/pty-transport.js';
|
|
3
|
+
import type { CliAdapter } from '../../cli-adapter-types.js';
|
|
4
|
+
export declare function createCliAdapter(provider: CliProviderModule, workingDir: string, cliArgs: string[], extraEnv: Record<string, string>, transportFactory?: PtyTransportFactory): CliAdapter;
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
export type Size = number | string;
|
|
2
|
+
export interface SectionPattern {
|
|
3
|
+
section?: string;
|
|
4
|
+
pattern: string;
|
|
5
|
+
flags?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Inline wait_for shape used by open_picker control actions. */
|
|
8
|
+
export interface WaitForCondition {
|
|
9
|
+
section?: string;
|
|
10
|
+
regex?: string;
|
|
11
|
+
flags?: string;
|
|
12
|
+
}
|
|
13
|
+
export type ControlAction = {
|
|
14
|
+
type: 'send_keys';
|
|
15
|
+
keys: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'open_picker';
|
|
18
|
+
trigger_keys: string;
|
|
19
|
+
wait_for: WaitForCondition;
|
|
20
|
+
extract_choices: SectionPattern;
|
|
21
|
+
submit_key: string;
|
|
22
|
+
/**
|
|
23
|
+
* How a parsed choice is committed once the picker is open.
|
|
24
|
+
* 'index' (default) — type the on-screen number then `submit_key`
|
|
25
|
+
* (`{index}\r`). Correct for CLIs whose picker is number-selectable
|
|
26
|
+
* (codex-cli, hermes-cli).
|
|
27
|
+
* 'arrow_keys' — the picker is a cursor list that ignores number keys
|
|
28
|
+
* (claude-cli /model): move the cursor from its current row to the
|
|
29
|
+
* target row with up/down arrows, then confirm with the `submit_key`
|
|
30
|
+
* tail (the `\r` left after stripping `{index}`). Requires the
|
|
31
|
+
* extracted choices to flag the current cursor row.
|
|
32
|
+
*/
|
|
33
|
+
select_mode?: 'index' | 'arrow_keys';
|
|
34
|
+
/** Arrow byte sequences for `select_mode: 'arrow_keys'`. Defaults to
|
|
35
|
+
* ANSI cursor up/down (`[A` / `[B`) when omitted. */
|
|
36
|
+
cursor_keys?: {
|
|
37
|
+
up: string;
|
|
38
|
+
down: string;
|
|
39
|
+
};
|
|
40
|
+
} | {
|
|
41
|
+
type: 'attach_image';
|
|
42
|
+
method: 'tempfile_then_keys';
|
|
43
|
+
keys_template: string;
|
|
44
|
+
};
|
|
45
|
+
export interface Control {
|
|
46
|
+
id: string;
|
|
47
|
+
label: string;
|
|
48
|
+
visible_when_state?: string[];
|
|
49
|
+
action: ControlAction;
|
|
50
|
+
}
|
|
51
|
+
export interface NotificationRule {
|
|
52
|
+
id: string;
|
|
53
|
+
when_state: string;
|
|
54
|
+
title: string;
|
|
55
|
+
body?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface DelegateTrigger {
|
|
58
|
+
id: string;
|
|
59
|
+
when_state: string;
|
|
60
|
+
after_duration_ms?: number;
|
|
61
|
+
task_template: string;
|
|
62
|
+
}
|
|
63
|
+
export interface NativeHistoryConfig {
|
|
64
|
+
reader?: 'claude-cli' | 'codex-cli' | 'antigravity-cli' | 'hermes-cli';
|
|
65
|
+
source?: NativeHistorySource;
|
|
66
|
+
override_path?: string;
|
|
67
|
+
}
|
|
68
|
+
export type NativeHistorySource = NativeHistoryJsonlSource | NativeHistorySqliteSource;
|
|
69
|
+
export interface NativeHistoryJsonlSource {
|
|
70
|
+
kind: 'jsonl';
|
|
71
|
+
path: string;
|
|
72
|
+
file_pattern?: string;
|
|
73
|
+
recent_window_ms?: number;
|
|
74
|
+
session_id_from?: 'filename_uuid' | 'first_record';
|
|
75
|
+
session_id_path?: string;
|
|
76
|
+
message_filter?: {
|
|
77
|
+
where: string;
|
|
78
|
+
};
|
|
79
|
+
message_map: NativeHistoryMessageMap;
|
|
80
|
+
}
|
|
81
|
+
export interface NativeHistorySqliteSource {
|
|
82
|
+
kind: 'sqlite';
|
|
83
|
+
path: string;
|
|
84
|
+
session_query: string;
|
|
85
|
+
message_query: string;
|
|
86
|
+
message_map: NativeHistoryMessageMap;
|
|
87
|
+
}
|
|
88
|
+
export interface NativeHistoryMessageMap {
|
|
89
|
+
role: string;
|
|
90
|
+
content: string;
|
|
91
|
+
content_strip?: string[];
|
|
92
|
+
content_unwrap?: string[];
|
|
93
|
+
timestamp_ms?: string;
|
|
94
|
+
kind?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Declarative tool-bubble extraction. Without it the executor only emits
|
|
97
|
+
* the text-bearing parts of each record, so a turn that is purely a tool
|
|
98
|
+
* call or tool result (no prose) is dropped — the restored transcript
|
|
99
|
+
* loses every tool interaction. When present, the executor walks each
|
|
100
|
+
* record's content blocks and emits an extra `kind:'tool'` message for
|
|
101
|
+
* any block whose `$.type` matches a tool shape.
|
|
102
|
+
*
|
|
103
|
+
* Defaults target the Anthropic-style content-block shape that claude-cli
|
|
104
|
+
* and codex-cli persist (blocks of `{ type: 'tool_use' | 'tool_result',
|
|
105
|
+
* name, input, content }`); a provider with a different on-disk shape
|
|
106
|
+
* overrides the field paths. Set `tools: {}` to opt in with the defaults.
|
|
107
|
+
*/
|
|
108
|
+
tools?: NativeHistoryToolMap;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* How to surface tool-call / tool-result blocks as `kind:'tool'` bubbles.
|
|
112
|
+
* Every field is optional — the defaults read the Anthropic block shape.
|
|
113
|
+
* Paths are jsonpath-lite evaluated against a single content block (the
|
|
114
|
+
* element of `$.message.content[]`), not the whole record.
|
|
115
|
+
*/
|
|
116
|
+
export interface NativeHistoryToolMap {
|
|
117
|
+
/** Path to a block's discriminator. Default `$.type`. */
|
|
118
|
+
block_type?: string;
|
|
119
|
+
/** Block-type values that mean "a tool was invoked". Default
|
|
120
|
+
* `['tool_use', 'function_call', 'custom_tool_call']`. */
|
|
121
|
+
call_types?: string[];
|
|
122
|
+
/** Block-type values that mean "a tool returned". Default
|
|
123
|
+
* `['tool_result', 'function_call_output', 'custom_tool_call_output']`. */
|
|
124
|
+
result_types?: string[];
|
|
125
|
+
/** Path to the tool name on a call block. Default `$.name`. */
|
|
126
|
+
call_name?: string;
|
|
127
|
+
/** Path to the tool arguments on a call block. Default `$.input`. */
|
|
128
|
+
call_args?: string;
|
|
129
|
+
/** Path to the result payload on a result block. Default `$.content`. */
|
|
130
|
+
result_content?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface AnchorContext {
|
|
133
|
+
prev?: string;
|
|
134
|
+
next?: string;
|
|
135
|
+
prev_flags?: string;
|
|
136
|
+
next_flags?: string;
|
|
137
|
+
}
|
|
138
|
+
export interface SectionDef {
|
|
139
|
+
from_top?: Size;
|
|
140
|
+
from_bottom?: Size;
|
|
141
|
+
until?: string;
|
|
142
|
+
/**
|
|
143
|
+
* Anchor regex(es). A single string anchors on the first/last matching line
|
|
144
|
+
* (per `anchor_last`). An array is an OR-set of candidate shapes: each
|
|
145
|
+
* candidate resolves its OWN anchor line independently (anchor_last → that
|
|
146
|
+
* candidate's last matching line, else its first), then the TOPMOST resolved
|
|
147
|
+
* line across candidates wins — a section's anchor marks the top of its
|
|
148
|
+
* block, so the highest recognized landmark bounds the whole block. This
|
|
149
|
+
* lets one section capture two shapes — e.g. a box-divider modal AND a
|
|
150
|
+
* divider-less modal whose only stable landmark is the question line above
|
|
151
|
+
* its numbered choices — while preventing a stray LOWER landmark (e.g. an
|
|
152
|
+
* input-box `────` rule below the choices) from clipping the block.
|
|
153
|
+
*/
|
|
154
|
+
anchor?: string | string[];
|
|
155
|
+
anchor_flags?: string;
|
|
156
|
+
anchor_last?: boolean;
|
|
157
|
+
/**
|
|
158
|
+
* Context guard(s) for the anchor. A single object applies to every anchor
|
|
159
|
+
* pattern. An array is matched positionally against an `anchor` array (entry
|
|
160
|
+
* i guards anchor i); a positional `undefined`/null entry means "no guard"
|
|
161
|
+
* for that anchor. A scalar `anchor` ignores array form beyond index 0.
|
|
162
|
+
*/
|
|
163
|
+
anchor_context?: AnchorContext | (AnchorContext | null)[];
|
|
164
|
+
lines?: number;
|
|
165
|
+
until_regex?: string;
|
|
166
|
+
until_regex_flags?: string;
|
|
167
|
+
}
|
|
168
|
+
export interface RegexCondition {
|
|
169
|
+
section?: string;
|
|
170
|
+
matches: string;
|
|
171
|
+
flags?: string;
|
|
172
|
+
cursor_row_min?: number;
|
|
173
|
+
cursor_row_max?: number;
|
|
174
|
+
cursor_col_min?: number;
|
|
175
|
+
cursor_col_max?: number;
|
|
176
|
+
}
|
|
177
|
+
export interface ChangedCondition {
|
|
178
|
+
cursor_above: number;
|
|
179
|
+
changed: boolean;
|
|
180
|
+
stable_ms?: number;
|
|
181
|
+
}
|
|
182
|
+
export interface AllCondition {
|
|
183
|
+
all: Condition[];
|
|
184
|
+
}
|
|
185
|
+
export interface AnyCondition {
|
|
186
|
+
any: Condition[];
|
|
187
|
+
}
|
|
188
|
+
export type Condition = RegexCondition | ChangedCondition | AllCondition | AnyCondition;
|
|
189
|
+
export interface ExtractTitle {
|
|
190
|
+
section?: string;
|
|
191
|
+
regex?: string;
|
|
192
|
+
flags?: string;
|
|
193
|
+
first_line?: true;
|
|
194
|
+
}
|
|
195
|
+
export interface ExtractButtons {
|
|
196
|
+
section?: string;
|
|
197
|
+
pattern: string;
|
|
198
|
+
flags?: string;
|
|
199
|
+
key_for_index: string;
|
|
200
|
+
min_count?: number;
|
|
201
|
+
continuation_lines?: boolean;
|
|
202
|
+
/**
|
|
203
|
+
* How a button is committed when its modal is resolved (auto-approve or an
|
|
204
|
+
* explicit dashboard click).
|
|
205
|
+
* 'index' (default) — send `key_for_index` with `{index}` filled in
|
|
206
|
+
* (`{index}\r` → `1\r`). Correct for modals whose buttons are
|
|
207
|
+
* number-selectable (codex, hermes, antigravity number rows).
|
|
208
|
+
* 'arrow_keys' — the modal is a cursor list that IGNORES number keys
|
|
209
|
+
* (claude-cli's new TUI approval modal): a typed `1` leaks into the
|
|
210
|
+
* composer as literal text and `\r` submits it. Instead move the cursor
|
|
211
|
+
* from its current row to the target row with up/down arrows, then
|
|
212
|
+
* confirm with the `key_for_index` tail (the `\r` left after stripping
|
|
213
|
+
* `{index}`). Mirrors the `open_picker` `select_mode` of the same name.
|
|
214
|
+
*/
|
|
215
|
+
select_mode?: 'index' | 'arrow_keys';
|
|
216
|
+
/** Arrow byte sequences for `select_mode: 'arrow_keys'`. Defaults to ANSI
|
|
217
|
+
* cursor up/down (`[A` / `[B`) when omitted. */
|
|
218
|
+
cursor_keys?: {
|
|
219
|
+
up: string;
|
|
220
|
+
down: string;
|
|
221
|
+
};
|
|
222
|
+
}
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Common across all Provider categories (IDE/Extension/CLI/ACP).
|
|
5
5
|
* - Approval waiting (waiting_approval) notification
|
|
6
|
-
* -
|
|
6
|
+
* - No-progress watchdog: alert when an active turn makes no progress for a while
|
|
7
7
|
* - All config toggleable via Provider Settings
|
|
8
8
|
*/
|
|
9
9
|
export interface MonitorConfig {
|
|
10
10
|
/** Enable awaiting-approval notification */
|
|
11
11
|
approvalAlert: boolean;
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
|
|
12
|
+
/** No-progress watchdog notification enabled */
|
|
13
|
+
noProgressAlert: boolean;
|
|
14
|
+
/** No-progress threshold (seconds) */
|
|
15
|
+
noProgressThresholdSec: number;
|
|
16
16
|
/** Repeat notification cooldown (seconds) */
|
|
17
17
|
alertCooldownSec: number;
|
|
18
18
|
}
|
|
@@ -28,7 +28,7 @@ export declare class StatusMonitor {
|
|
|
28
28
|
private config;
|
|
29
29
|
private lastAlertTime;
|
|
30
30
|
private generatingStartTimes;
|
|
31
|
-
private
|
|
31
|
+
private noProgressAlerted;
|
|
32
32
|
private lastProgressFingerprint;
|
|
33
33
|
private lastProgressChangeAt;
|
|
34
34
|
constructor(config?: Partial<MonitorConfig>);
|
|
@@ -40,7 +40,7 @@ export declare class StatusMonitor {
|
|
|
40
40
|
* Check status transition → return notification event array.
|
|
41
41
|
* Called from each onTick() or detectStatusTransition().
|
|
42
42
|
*/
|
|
43
|
-
check(agentKey: string, status: string, now: number, progressFingerprint?: string): MonitorEvent[];
|
|
43
|
+
check(agentKey: string, status: string, now: number, progressFingerprint?: string, approvalPending?: boolean): MonitorEvent[];
|
|
44
44
|
/** Cooldown check — prevent sending the same notification too frequently */
|
|
45
45
|
private shouldAlert;
|
|
46
46
|
/** Reset (on agent terminate/restart) */
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Transcript Contract v2
|
|
3
|
+
*
|
|
4
|
+
* First-class message identity, monotonic sequence, strict enums. Designed to
|
|
5
|
+
* replace the v1 contract (contracts.ts ReadChatResult + types.ts ChatMessage)
|
|
6
|
+
* during the A2 big-bang. This module defines the contract; it does not yet
|
|
7
|
+
* change runtime behaviour. v1 keeps working until A2 flips the switch.
|
|
8
|
+
*
|
|
9
|
+
* Invariants v2 enforces (and v1 does not):
|
|
10
|
+
* 1. Every ChatMessageV2 has providerUnitKey, bubbleId, sequence — none optional.
|
|
11
|
+
* 2. sequence is a monotonic integer per (sessionId, source) tuple. Producers
|
|
12
|
+
* never reuse it; consumers MAY assume strict ordering.
|
|
13
|
+
* 3. providerUnitKey is stable across re-reads: the same logical message
|
|
14
|
+
* always yields the same key even if its index shifts or content is
|
|
15
|
+
* edited mid-stream. Producers derive it from provider-owned identifiers
|
|
16
|
+
* (turn id, native message id), not from content hashes or array index.
|
|
17
|
+
* 4. timestamp is producer-asserted wall-clock; orderingTimestamp is monotonic
|
|
18
|
+
* and used for snapshot diffs. 1ms fallback increments are forbidden — if
|
|
19
|
+
* a producer cannot supply a stable monotonic value, the daemon assigns
|
|
20
|
+
* sequence at ingest and orderingTimestamp = ingestedAt.
|
|
21
|
+
* 5. visibility / source / role / kind are strict unions. No `(string & {})`
|
|
22
|
+
* escape hatches.
|
|
23
|
+
* 6. Coverage is exactly one of full/tail/current-turn. Mixing it with
|
|
24
|
+
* partialReason or unavailableReason is a contract violation.
|
|
25
|
+
* 7. workspace / sessionId are explicit on every ReadChatResultV2; the daemon
|
|
26
|
+
* no longer infers them from message bodies.
|
|
27
|
+
*/
|
|
28
|
+
import type { MessagePart, ToolCallInfo } from './contracts.js';
|
|
29
|
+
export declare const CHAT_CONTRACT_VERSION_V1: "1.0";
|
|
30
|
+
export declare const CHAT_CONTRACT_VERSION_V2: "2.0";
|
|
31
|
+
export type ChatContractVersion = typeof CHAT_CONTRACT_VERSION_V1 | typeof CHAT_CONTRACT_VERSION_V2;
|
|
32
|
+
export declare const SUPPORTED_CHAT_CONTRACT_VERSIONS: readonly ChatContractVersion[];
|
|
33
|
+
export declare const CHAT_ROLES_V2: readonly ["user", "assistant", "system"];
|
|
34
|
+
export type ChatRoleV2 = typeof CHAT_ROLES_V2[number];
|
|
35
|
+
export declare const CHAT_MESSAGE_KINDS_V2: readonly ["standard", "thought", "tool", "terminal", "system"];
|
|
36
|
+
export type ChatMessageKindV2 = typeof CHAT_MESSAGE_KINDS_V2[number];
|
|
37
|
+
export declare const CHAT_VISIBILITIES_V2: readonly ["user", "debug", "internal", "hidden"];
|
|
38
|
+
export type ChatVisibilityV2 = typeof CHAT_VISIBILITIES_V2[number];
|
|
39
|
+
export declare const CHAT_AUDIENCES_V2: readonly ["chat", "debug", "trace", "internal"];
|
|
40
|
+
export type ChatAudienceV2 = typeof CHAT_AUDIENCES_V2[number];
|
|
41
|
+
export declare const CHAT_SOURCES_V2: readonly ["assistant_text", "tool_call", "terminal_command", "runtime_activity", "runtime_status", "provider_chrome", "control"];
|
|
42
|
+
export type ChatSourceV2 = typeof CHAT_SOURCES_V2[number];
|
|
43
|
+
export declare const CHAT_BUBBLE_STATES_V2: readonly ["draft", "streaming", "final", "removed"];
|
|
44
|
+
export type ChatBubbleStateV2 = typeof CHAT_BUBBLE_STATES_V2[number];
|
|
45
|
+
/**
|
|
46
|
+
* Stable identity of a single chat message. All fields are required in v2.
|
|
47
|
+
*
|
|
48
|
+
* - providerUnitKey: provider-owned canonical id. Must be derivable from
|
|
49
|
+
* provider primitives (native message id, turn id, bubble id), NOT from
|
|
50
|
+
* array index or content hash. Stable across re-reads of the same logical
|
|
51
|
+
* message even if neighbours change.
|
|
52
|
+
* - bubbleId: dashboard-owned bubble identity. May equal providerUnitKey when
|
|
53
|
+
* the provider already exposes a bubble-grained id; otherwise daemon
|
|
54
|
+
* derives it deterministically from providerUnitKey (e.g. `bubble:${key}`).
|
|
55
|
+
* - sequence: monotonic integer per (sessionId, source). Strictly increasing
|
|
56
|
+
* over the lifetime of the session. Used for snapshot diffs and dedup.
|
|
57
|
+
* - turnKey: stable identifier for the conversation turn this message belongs
|
|
58
|
+
* to. Required so consumers can group messages without re-deriving turns.
|
|
59
|
+
*/
|
|
60
|
+
export interface MessageIdentityV2 {
|
|
61
|
+
providerUnitKey: string;
|
|
62
|
+
bubbleId: string;
|
|
63
|
+
sequence: number;
|
|
64
|
+
turnKey: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Producer-asserted wall-clock time (ms since epoch). Forward jumps are
|
|
68
|
+
* permitted; consumers MUST NOT rely on this for ordering.
|
|
69
|
+
*/
|
|
70
|
+
export type ChatTimestampMs = number;
|
|
71
|
+
/**
|
|
72
|
+
* Monotonic ordering value (ms since epoch, but assigned by the daemon at
|
|
73
|
+
* ingest to guarantee monotonicity even if the producer's wall clock skews).
|
|
74
|
+
* Used by snapshot diffs in place of timestamp.
|
|
75
|
+
*/
|
|
76
|
+
export type ChatOrderingTimestampMs = number;
|
|
77
|
+
export interface ChatMessageV2 extends MessageIdentityV2 {
|
|
78
|
+
role: ChatRoleV2;
|
|
79
|
+
kind: ChatMessageKindV2;
|
|
80
|
+
content: string | MessagePart[];
|
|
81
|
+
bubbleState: ChatBubbleStateV2;
|
|
82
|
+
timestamp: ChatTimestampMs;
|
|
83
|
+
orderingTimestamp: ChatOrderingTimestampMs;
|
|
84
|
+
visibility: ChatVisibilityV2;
|
|
85
|
+
audience: ChatAudienceV2;
|
|
86
|
+
source: ChatSourceV2;
|
|
87
|
+
/** Sender display name (for shared sessions). Empty string when unused. */
|
|
88
|
+
senderName: string;
|
|
89
|
+
/** Tool calls associated with this message. Empty array when none. */
|
|
90
|
+
toolCalls: ToolCallInfo[];
|
|
91
|
+
/** Producer-defined metadata. Daemon never inspects this except for passthrough. */
|
|
92
|
+
meta: Readonly<Record<string, unknown>>;
|
|
93
|
+
}
|
|
94
|
+
export interface WorkspaceContextV2 {
|
|
95
|
+
/** Absolute realpath of the workspace the session is reading from. */
|
|
96
|
+
workspacePath: string;
|
|
97
|
+
/** Workspace the session was intended to operate on (may differ during cross-workspace ops). */
|
|
98
|
+
intendedWorkspacePath: string;
|
|
99
|
+
}
|
|
100
|
+
export interface SessionContextV2 {
|
|
101
|
+
/** Provider-owned session id (e.g. claude.jsonl uuid, codex session_meta.id). */
|
|
102
|
+
providerSessionId: string;
|
|
103
|
+
/** Optional daemon-side history alias used to disambiguate within a workspace. */
|
|
104
|
+
historySessionId?: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* v1 allowed `coverage='full'` to coexist with `partialReason`/`unavailableReason`,
|
|
108
|
+
* which is a contract lie. v2 makes the three states mutually exclusive.
|
|
109
|
+
*/
|
|
110
|
+
export type CoverageHintV2 = {
|
|
111
|
+
kind: 'full';
|
|
112
|
+
} | {
|
|
113
|
+
kind: 'tail';
|
|
114
|
+
tailMessageCount: number;
|
|
115
|
+
} | {
|
|
116
|
+
kind: 'current-turn';
|
|
117
|
+
turnKey: string;
|
|
118
|
+
} | {
|
|
119
|
+
kind: 'partial';
|
|
120
|
+
partialReason: string;
|
|
121
|
+
} | {
|
|
122
|
+
kind: 'unavailable';
|
|
123
|
+
unavailableReason: string;
|
|
124
|
+
};
|
|
125
|
+
export type CanonicalHistoryModeV2 = 'native-source' | 'disabled' | 'materialized-mirror';
|
|
126
|
+
export interface CanonicalHistoryDeclarationV2 {
|
|
127
|
+
contractVersion: ChatContractVersion;
|
|
128
|
+
format: string;
|
|
129
|
+
mode: CanonicalHistoryModeV2;
|
|
130
|
+
watchPath?: string;
|
|
131
|
+
scripts: {
|
|
132
|
+
readSession: string;
|
|
133
|
+
listSessions: string;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
export type ReadChatStatusV2 = 'idle' | 'generating' | 'waiting_approval' | 'error' | 'panel_hidden' | 'streaming';
|
|
137
|
+
export type ReadChatTurnStatusV2 = 'open' | 'waiting_approval' | 'complete' | 'error';
|
|
138
|
+
export interface ReadChatResultV2 {
|
|
139
|
+
contractVersion: typeof CHAT_CONTRACT_VERSION_V2;
|
|
140
|
+
workspace: WorkspaceContextV2;
|
|
141
|
+
session: SessionContextV2;
|
|
142
|
+
coverage: CoverageHintV2;
|
|
143
|
+
status: ReadChatStatusV2;
|
|
144
|
+
messages: ChatMessageV2[];
|
|
145
|
+
currentTurnId: string;
|
|
146
|
+
turnStatus: ReadChatTurnStatusV2;
|
|
147
|
+
transcriptAuthority: 'provider' | 'daemon';
|
|
148
|
+
}
|
|
149
|
+
export declare class ChatContractViolationError extends Error {
|
|
150
|
+
readonly violationPath: string;
|
|
151
|
+
readonly contractVersion: ChatContractVersion;
|
|
152
|
+
constructor(contractVersion: ChatContractVersion, violationPath: string, detail: string);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Validate a v2 read_chat payload. Throws ChatContractViolationError on the
|
|
156
|
+
* first violation. v2 invariants beyond per-field checks:
|
|
157
|
+
* - messages[*].sequence strictly increasing
|
|
158
|
+
* - messages[*].orderingTimestamp monotonic non-decreasing
|
|
159
|
+
* - coverage union is well-formed
|
|
160
|
+
*/
|
|
161
|
+
export declare function assertReadChatResultV2Payload(raw: unknown): ReadChatResultV2;
|
|
162
|
+
export declare function isSupportedChatContractVersion(value: unknown): value is ChatContractVersion;
|
|
163
|
+
/**
|
|
164
|
+
* Read a provider's declared chat contract version from its parsed
|
|
165
|
+
* provider.json `canonicalHistory.contractVersion` field.
|
|
166
|
+
*
|
|
167
|
+
* - Absent or unrecognized → treated as v1 (legacy behaviour preserved during
|
|
168
|
+
* the A1 transition). A2 will tighten this to reject unsupported versions
|
|
169
|
+
* at provider load time.
|
|
170
|
+
* - Present and supported → returned as-is.
|
|
171
|
+
*
|
|
172
|
+
* The returned version drives which validator (assertReadChatResultV2Payload
|
|
173
|
+
* vs the legacy validateReadChatResultPayload) processes the provider's
|
|
174
|
+
* read_chat output.
|
|
175
|
+
*/
|
|
176
|
+
export declare function readDeclaredChatContractVersion(canonicalHistory: unknown): ChatContractVersion;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export interface InteractivePrompt {
|
|
2
|
+
promptId: string;
|
|
3
|
+
origin: 'cli' | 'mcp' | 'agent';
|
|
4
|
+
providerType: string;
|
|
5
|
+
createdAt: number;
|
|
6
|
+
questions: InteractiveQuestion[];
|
|
7
|
+
}
|
|
8
|
+
export interface InteractiveQuestion {
|
|
9
|
+
questionId: string;
|
|
10
|
+
question: string;
|
|
11
|
+
header?: string;
|
|
12
|
+
multiSelect: boolean;
|
|
13
|
+
options: InteractiveOption[];
|
|
14
|
+
allowFreeform?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface InteractiveOption {
|
|
17
|
+
label: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
preview?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface InteractivePromptResponse {
|
|
22
|
+
promptId: string;
|
|
23
|
+
answers: Record<string, InteractiveAnswer>;
|
|
24
|
+
}
|
|
25
|
+
export interface InteractiveAnswer {
|
|
26
|
+
selectedLabels: string[];
|
|
27
|
+
freeformText?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function normalizeInteractivePrompt(raw: unknown): InteractivePrompt | null;
|
|
30
|
+
export declare function normalizeInteractivePromptResponse(raw: unknown): InteractivePromptResponse;
|
|
31
|
+
export declare function buildClaudeInteractiveToolResult(response: InteractivePromptResponse): string;
|
|
32
|
+
export interface ClaudeInteractiveTuiPage {
|
|
33
|
+
screenText: string;
|
|
34
|
+
header?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Decide whether a captured claude-cli AskUserQuestion TUI page is multi-select.
|
|
38
|
+
*
|
|
39
|
+
* The original heuristic only matched the footer hint `/Space to select|toggle
|
|
40
|
+
* selections/i`. That string drifts between claude-cli versions, so when it
|
|
41
|
+
* changed the dashboard silently fell back to multiSelect:false and rendered
|
|
42
|
+
* single-select (radio) controls even though the on-screen picker showed
|
|
43
|
+
* checkboxes — the user could not check more than one box. (The CLI's own
|
|
44
|
+
* terminal still rendered `[ ]` correctly because it never depends on this
|
|
45
|
+
* parse.)
|
|
46
|
+
*
|
|
47
|
+
* Make detection robust by ALSO recognising the actual checkbox markers the
|
|
48
|
+
* multi-select picker draws on its option rows (`[ ]` / `[x]` / `☐` / `☒` /
|
|
49
|
+
* `◻` / `◼`). Single-select rows are drawn with a `❯`/number cursor only and
|
|
50
|
+
* carry none of these box glyphs, so their presence is a reliable signal. The
|
|
51
|
+
* broadened footer patterns ("Space to", "toggle", "select multiple") are kept
|
|
52
|
+
* as a secondary signal for layouts that render markers differently.
|
|
53
|
+
*/
|
|
54
|
+
export declare function detectClaudeTuiMultiSelect(screenText: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Read the question the live claude TUI picker is CURRENTLY focused on, plus
|
|
57
|
+
* whether that focused page renders multi-select checkbox markers.
|
|
58
|
+
*
|
|
59
|
+
* Used to repair a multi-question prompt after the fact: when the daemon
|
|
60
|
+
* Tab-captures pages 2..N it snapshots ~120ms after the Tab keypress, before
|
|
61
|
+
* the newly-focused page's option-row checkbox column has redrawn — so those
|
|
62
|
+
* questions get frozen as multiSelect:false even though the picker is
|
|
63
|
+
* multi-select. Re-reading the focused page on a later status tick (once it has
|
|
64
|
+
* settled) lets us attribute the now-visible glyphs to the matching question
|
|
65
|
+
* and upgrade just that one. Returns null when no picker question is on screen.
|
|
66
|
+
*/
|
|
67
|
+
export declare function readFocusedClaudeTuiQuestion(screenText: string): {
|
|
68
|
+
question: string;
|
|
69
|
+
header?: string;
|
|
70
|
+
multiSelect: boolean;
|
|
71
|
+
} | null;
|
|
72
|
+
export declare function detectClaudeAskUserQuestionPromptFromTuiPages(pages: ClaudeInteractiveTuiPage[], options: {
|
|
73
|
+
promptId: string;
|
|
74
|
+
providerType?: string;
|
|
75
|
+
createdAt?: number;
|
|
76
|
+
}): InteractivePrompt | null;
|
|
77
|
+
export declare function buildClaudeInteractiveTuiAnswerSteps(prompt: InteractivePrompt, response: InteractivePromptResponse): string[];
|
|
78
|
+
export declare function interactivePromptFromClaudeAskUserQuestion(input: unknown, options: {
|
|
79
|
+
promptId: string;
|
|
80
|
+
providerType: string;
|
|
81
|
+
createdAt?: number;
|
|
82
|
+
origin?: InteractivePrompt['origin'];
|
|
83
|
+
}): InteractivePrompt | null;
|
|
84
|
+
export declare function detectClaudeAskUserQuestionPromptFromJson(value: unknown, providerType?: string): InteractivePrompt | null;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* working-dir — shared helpers for deriving display names from a session's
|
|
3
|
+
* working directory. Used by CLI/ACP provider instances to build session/tab
|
|
4
|
+
* titles.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* OS-aware basename of a working directory path.
|
|
8
|
+
*
|
|
9
|
+
* Splits on BOTH POSIX (`/`) and Windows (`\`) separators so a win32 path like
|
|
10
|
+
* `D:\gh\adhdev-cloud` resolves to `adhdev-cloud` even when the daemon's own
|
|
11
|
+
* `path.basename` is POSIX-only — and a path that mixes separators still works.
|
|
12
|
+
* Trailing separators and root-only paths fall back to `'session'`, matching
|
|
13
|
+
* the historical `.split('/').filter(Boolean).pop() || 'session'` behavior.
|
|
14
|
+
*
|
|
15
|
+
* Mirrors the web dashboard's `getWorkspaceName` (`ws.split(/[/\\]/)`).
|
|
16
|
+
*/
|
|
17
|
+
export declare function workingDirBasename(p: string): string;
|