@adhdev/daemon-core 0.9.82-rc.21 → 0.9.82-rc.211

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.
Files changed (269) hide show
  1. package/dist/boot/daemon-lifecycle.d.ts +1 -0
  2. package/dist/boot/process-hardening.d.ts +50 -0
  3. package/dist/chat/source-machine.d.ts +166 -0
  4. package/dist/chat/source-resolver.d.ts +104 -0
  5. package/dist/chat/subscription-updates.d.ts +1 -0
  6. package/dist/cli-adapter-types.d.ts +23 -2
  7. package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
  8. package/dist/cli-adapters/cli-state-engine.d.ts +178 -0
  9. package/dist/cli-adapters/provider-cli-adapter.d.ts +106 -63
  10. package/dist/cli-adapters/provider-cli-parse.d.ts +4 -0
  11. package/dist/cli-adapters/provider-cli-shared.d.ts +29 -0
  12. package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
  13. package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +3 -3
  14. package/dist/cli-adapters/terminal-backends/types.d.ts +1 -2
  15. package/dist/cli-adapters/terminal-screen.d.ts +2 -11
  16. package/dist/commands/cli-manager.d.ts +2 -1
  17. package/dist/commands/handler.d.ts +110 -0
  18. package/dist/commands/mesh-coordinator.d.ts +85 -1
  19. package/dist/commands/router.d.ts +32 -1
  20. package/dist/config/chat-history.d.ts +9 -0
  21. package/dist/config/config.d.ts +5 -0
  22. package/dist/config/mesh-config.d.ts +72 -1
  23. package/dist/git/git-commands.d.ts +9 -1
  24. package/dist/git/git-diff.d.ts +6 -0
  25. package/dist/git/git-types.d.ts +2 -0
  26. package/dist/index.d.ts +46 -11
  27. package/dist/index.js +35173 -15756
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +34880 -15556
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/installer.d.ts +1 -4
  32. package/dist/ipc/local-ipc-server.d.ts +91 -0
  33. package/dist/launch.d.ts +1 -1
  34. package/dist/logging/async-batch-writer.d.ts +10 -0
  35. package/dist/mesh/contracts.d.ts +164 -0
  36. package/dist/mesh/coordinator-prompt.d.ts +36 -0
  37. package/dist/mesh/coordinator-registry.d.ts +59 -0
  38. package/dist/mesh/mesh-active-work.d.ts +90 -0
  39. package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
  40. package/dist/mesh/mesh-events-coordinator.d.ts +151 -0
  41. package/dist/mesh/mesh-events-pending.d.ts +33 -0
  42. package/dist/mesh/mesh-events-stale.d.ts +40 -0
  43. package/dist/mesh/mesh-events-utils.d.ts +14 -0
  44. package/dist/mesh/mesh-events.d.ts +5 -40
  45. package/dist/mesh/mesh-fast-forward.d.ts +41 -0
  46. package/dist/mesh/mesh-host-ownership.d.ts +9 -0
  47. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -3
  48. package/dist/mesh/mesh-ledger.d.ts +77 -1
  49. package/dist/mesh/mesh-missions.d.ts +58 -0
  50. package/dist/mesh/mesh-refine-status.d.ts +26 -0
  51. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  52. package/dist/mesh/mesh-runtime-store.d.ts +324 -0
  53. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  54. package/dist/mesh/mesh-work-queue.d.ts +137 -6
  55. package/dist/mesh/preview-freshness.d.ts +18 -0
  56. package/dist/mesh/refine-config.d.ts +215 -0
  57. package/dist/mesh/worktree-bootstrap-config.d.ts +135 -0
  58. package/dist/providers/acp-provider-instance.d.ts +2 -0
  59. package/dist/providers/approval-utils.d.ts +13 -0
  60. package/dist/providers/cli-provider-instance.d.ts +39 -3
  61. package/dist/providers/contracts.d.ts +130 -6
  62. package/dist/providers/external-sources.d.ts +71 -0
  63. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -0
  64. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  65. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  66. package/dist/providers/native-history/dispatcher.d.ts +27 -0
  67. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  68. package/dist/providers/native-history/index.d.ts +13 -0
  69. package/dist/providers/provider-instance-manager.d.ts +12 -0
  70. package/dist/providers/provider-instance.d.ts +13 -1
  71. package/dist/providers/provider-loader.d.ts +26 -4
  72. package/dist/providers/provider-trust.d.ts +31 -0
  73. package/dist/providers/read-chat-contract.d.ts +29 -0
  74. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  75. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +85 -0
  76. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  77. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
  78. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  79. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  80. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  81. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  82. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  83. package/dist/providers/sdk/v1/index.d.ts +30 -0
  84. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  85. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  86. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  87. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  88. package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
  89. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  90. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  91. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  92. package/dist/providers/spec/adapter.d.ts +52 -0
  93. package/dist/providers/spec/cli-adapter.d.ts +101 -0
  94. package/dist/providers/spec/driver.d.ts +225 -0
  95. package/dist/providers/spec/evaluator.d.ts +54 -0
  96. package/dist/providers/spec/loader.d.ts +15 -0
  97. package/dist/providers/spec/native-history-executor.d.ts +41 -0
  98. package/dist/providers/spec/route.d.ts +4 -0
  99. package/dist/providers/spec/schema.gen.d.ts +2025 -0
  100. package/dist/providers/spec/types.d.ts +302 -0
  101. package/dist/providers/transcript-v2.d.ts +176 -0
  102. package/dist/providers/types/interactive-prompt.d.ts +48 -0
  103. package/dist/repo-mesh-types.d.ts +109 -1
  104. package/dist/sessions/registry.d.ts +3 -0
  105. package/dist/shared-types-extra.d.ts +2 -4
  106. package/dist/shared-types.d.ts +42 -1
  107. package/dist/status/normalize.d.ts +1 -1
  108. package/dist/status/normalize.js +1 -0
  109. package/dist/status/normalize.js.map +1 -1
  110. package/dist/status/normalize.mjs +1 -0
  111. package/dist/status/normalize.mjs.map +1 -1
  112. package/dist/status/reporter.d.ts +2 -0
  113. package/dist/status/snapshot.d.ts +1 -0
  114. package/dist/types.d.ts +5 -0
  115. package/package.json +6 -3
  116. package/src/agent-stream/poller.ts +2 -3
  117. package/src/boot/daemon-lifecycle.ts +22 -10
  118. package/src/boot/process-hardening.ts +89 -0
  119. package/src/chat/source-machine.ts +534 -0
  120. package/src/chat/source-resolver.ts +0 -0
  121. package/src/chat/subscription-updates.ts +20 -1
  122. package/src/cli-adapter-types.d.ts +1 -0
  123. package/src/cli-adapter-types.ts +22 -2
  124. package/src/cli-adapters/cli-script-runner.ts +421 -0
  125. package/src/cli-adapters/cli-state-engine.ts +1138 -0
  126. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  127. package/src/cli-adapters/provider-cli-adapter.ts +673 -1139
  128. package/src/cli-adapters/provider-cli-parse.d.ts +1 -0
  129. package/src/cli-adapters/provider-cli-parse.ts +13 -0
  130. package/src/cli-adapters/provider-cli-runtime.ts +3 -1
  131. package/src/cli-adapters/provider-cli-shared.d.ts +2 -0
  132. package/src/cli-adapters/provider-cli-shared.ts +59 -11
  133. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  134. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +35 -29
  135. package/src/cli-adapters/terminal-backends/types.ts +1 -3
  136. package/src/cli-adapters/terminal-screen.ts +11 -81
  137. package/src/commands/chat-commands.ts +1787 -60
  138. package/src/commands/cli-manager.ts +283 -14
  139. package/src/commands/handler.ts +809 -2
  140. package/src/commands/mesh-coordinator.ts +332 -122
  141. package/src/commands/router.ts +4198 -557
  142. package/src/config/chat-history.ts +95 -24
  143. package/src/config/config.ts +12 -0
  144. package/src/config/mesh-config.ts +280 -2
  145. package/src/config/recent-activity.ts +8 -2
  146. package/src/daemon/dev-auto-implement.ts +3 -2
  147. package/src/daemon/dev-cli-debug.ts +10 -1
  148. package/src/detection/ide-detector.ts +26 -16
  149. package/src/git/git-commands.ts +42 -12
  150. package/src/git/git-diff.ts +53 -0
  151. package/src/git/git-status.ts +35 -6
  152. package/src/git/git-types.ts +2 -0
  153. package/src/git/git-worktree.ts +8 -1
  154. package/src/index.ts +126 -10
  155. package/src/installer.d.ts +1 -1
  156. package/src/installer.ts +8 -6
  157. package/src/ipc/local-ipc-server.ts +278 -0
  158. package/src/launch.d.ts +1 -1
  159. package/src/launch.ts +37 -28
  160. package/src/logging/async-batch-writer.ts +55 -0
  161. package/src/logging/logger.ts +2 -1
  162. package/src/mesh/contracts.ts +329 -0
  163. package/src/mesh/coordinator-prompt.ts +218 -31
  164. package/src/mesh/coordinator-registry.ts +121 -0
  165. package/src/mesh/mesh-active-work.ts +437 -0
  166. package/src/mesh/mesh-delivery-policy.ts +315 -0
  167. package/src/mesh/mesh-events-coordinator.ts +1404 -0
  168. package/src/mesh/mesh-events-pending.ts +371 -0
  169. package/src/mesh/mesh-events-stale.ts +283 -0
  170. package/src/mesh/mesh-events-utils.ts +161 -0
  171. package/src/mesh/mesh-events.ts +24 -908
  172. package/src/mesh/mesh-fast-forward.ts +438 -0
  173. package/src/mesh/mesh-host-ownership.ts +73 -0
  174. package/src/mesh/mesh-ledger-reconciliation.ts +12 -5
  175. package/src/mesh/mesh-ledger.ts +587 -102
  176. package/src/mesh/mesh-missions.ts +151 -0
  177. package/src/mesh/mesh-refine-status.ts +144 -0
  178. package/src/mesh/mesh-review-inbox.ts +307 -0
  179. package/src/mesh/mesh-runtime-store.ts +1305 -0
  180. package/src/mesh/mesh-task-stats.ts +154 -0
  181. package/src/mesh/mesh-work-queue.ts +490 -166
  182. package/src/mesh/preview-freshness.ts +118 -0
  183. package/src/mesh/refine-config.ts +403 -0
  184. package/src/mesh/worktree-bootstrap-config.ts +326 -0
  185. package/src/providers/acp-provider-instance.ts +15 -1
  186. package/src/providers/approval-utils.d.ts +4 -0
  187. package/src/providers/approval-utils.ts +47 -5
  188. package/src/providers/chat-message-normalization.ts +4 -11
  189. package/src/providers/cli-provider-instance.ts +833 -64
  190. package/src/providers/contracts.d.ts +55 -0
  191. package/src/providers/contracts.ts +141 -6
  192. package/src/providers/external-sources.ts +218 -0
  193. package/src/providers/ide-provider-instance.ts +19 -5
  194. package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
  195. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  196. package/src/providers/native-history/codex-cli-transcript.ts +419 -0
  197. package/src/providers/native-history/dispatcher.ts +340 -0
  198. package/src/providers/native-history/hermes-cli-transcript.ts +230 -0
  199. package/src/providers/native-history/index.ts +30 -0
  200. package/src/providers/provider-instance-manager.ts +30 -0
  201. package/src/providers/provider-instance.ts +10 -1
  202. package/src/providers/provider-loader.ts +582 -50
  203. package/src/providers/provider-schema.ts +87 -14
  204. package/src/providers/provider-trust.ts +114 -0
  205. package/src/providers/read-chat-contract.ts +76 -16
  206. package/src/providers/sdk/README.md +49 -0
  207. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  208. package/src/providers/sdk/v1/builders/cli/detect-status.ts +262 -0
  209. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  210. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
  211. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  212. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  213. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  214. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  215. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  216. package/src/providers/sdk/v1/index.ts +152 -0
  217. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  218. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  219. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  220. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +504 -0
  221. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  222. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  223. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  224. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  225. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  226. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  227. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  228. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  229. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  230. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  231. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  232. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  233. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  234. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  235. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  236. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  237. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  238. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  239. package/src/providers/sdk/v1/validators/index.ts +19 -0
  240. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  241. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  242. package/src/providers/spec/adapter.ts +138 -0
  243. package/src/providers/spec/cli-adapter.ts +626 -0
  244. package/src/providers/spec/driver.ts +922 -0
  245. package/src/providers/spec/evaluator.ts +597 -0
  246. package/src/providers/spec/loader.ts +324 -0
  247. package/src/providers/spec/native-history-executor.ts +939 -0
  248. package/src/providers/spec/route.ts +51 -0
  249. package/src/providers/spec/schema.gen.ts +691 -0
  250. package/src/providers/spec/schema.json +341 -0
  251. package/src/providers/spec/types.ts +356 -0
  252. package/src/providers/transcript-v2.ts +567 -0
  253. package/src/providers/types/interactive-prompt.ts +425 -0
  254. package/src/providers/version-archive.ts +38 -20
  255. package/src/repo-mesh-types.ts +119 -1
  256. package/src/sessions/registry.ts +3 -0
  257. package/src/shared-types-extra.ts +2 -4
  258. package/src/shared-types.ts +45 -1
  259. package/src/status/builders.ts +24 -6
  260. package/src/status/normalize.ts +2 -0
  261. package/src/status/reporter.ts +15 -0
  262. package/src/status/snapshot.ts +84 -25
  263. package/src/system/host-memory.ts +29 -12
  264. package/src/types.ts +5 -0
  265. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  266. package/dist/mesh/mesh-sync.d.ts +0 -53
  267. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  268. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  269. package/src/mesh/mesh-sync.ts +0 -111
@@ -0,0 +1,178 @@
1
+ /**
2
+ * CliStateEngine — CLI provider status state machine
3
+ *
4
+ * Owns all status-transition logic, timer management, and script-driven
5
+ * evaluation. Reads buffer state from the transport and writes to PTY via
6
+ * the transport interface — adapter stays as pure I/O layer.
7
+ */
8
+ import { type TurnParseScope } from './provider-cli-parse.js';
9
+ import { type CliProviderModule, type CliSessionStatus, type CliTraceEntry, type ParsedSession } from './provider-cli-shared.js';
10
+ import type { CliScriptRunner } from './cli-script-runner.js';
11
+ export interface CliBufferSnapshot {
12
+ accumulatedBuffer: string;
13
+ accumulatedRawBuffer: string;
14
+ recentOutputBuffer: string;
15
+ responseBuffer: string;
16
+ screenText: string;
17
+ parseScreenText: string;
18
+ workingDir: string;
19
+ providerSessionId: string | null;
20
+ runtimeSettings: Record<string, any>;
21
+ isWaitingForResponse: boolean;
22
+ currentTurnScope: TurnParseScope | null;
23
+ lastOutputAt: number;
24
+ lastNonEmptyOutputAt: number;
25
+ lastScreenChangeAt: number;
26
+ lastScreenSnapshot: string;
27
+ }
28
+ /** What the engine needs from the transport layer */
29
+ export interface CliTransportAccess {
30
+ getSnapshot(): CliBufferSnapshot;
31
+ writeRaw(data: string | Buffer): void;
32
+ getApprovalKeyForIndex(buttonIndex: number): string | undefined;
33
+ flushOutboundQueue(): void;
34
+ isAlive(): boolean;
35
+ /** Optional: override script dispatch (used by tests to mock detection) */
36
+ runDetectStatus?(text: string): string | null;
37
+ /** Optional: override script dispatch (used by tests to mock approval) */
38
+ runParseApproval?(tail: string): {
39
+ message: string;
40
+ buttons: string[];
41
+ } | null;
42
+ /** Optional: override full session parse (used by tests to mock parsing) */
43
+ runParseSession?(): ParsedSession | null;
44
+ /** Optional: provider type override — used when tests patch the adapter's cliType */
45
+ cliType?: string;
46
+ }
47
+ export interface CliStateEngineCallbacks {
48
+ onStatusChange(): void;
49
+ onApplyParsedSession(session: ParsedSession): void;
50
+ onTurnCompleted(): void;
51
+ }
52
+ export declare class CliStateEngine {
53
+ private readonly provider;
54
+ private readonly runner;
55
+ private readonly transport;
56
+ private readonly callbacks;
57
+ private readonly timeouts;
58
+ currentStatus: CliSessionStatus['status'];
59
+ isWaitingForResponse: boolean;
60
+ currentTurnScope: TurnParseScope | null;
61
+ activeModal: {
62
+ message: string;
63
+ buttons: string[];
64
+ } | null;
65
+ lastApprovalResolvedAt: number;
66
+ lastResolvedModalMessage: string;
67
+ /**
68
+ * When the engine previously held a modal but the latest parse failed
69
+ * to extract one, we record the timestamp here and only drop the modal
70
+ * after the configured `approvalCooldown` to avoid flapping between
71
+ * waiting_approval and generating on every Claude TUI redraw — that
72
+ * flapping is what fed auto-approve a fresh modal signature on each
73
+ * paint and made the engine type "1" repeatedly into the prompt.
74
+ */
75
+ modalLostAt: number;
76
+ private approvalExitTimeout;
77
+ responseEpoch: number;
78
+ submitPendingUntil: number;
79
+ responseSettleIgnoreUntil: number;
80
+ submitRetryUsed: boolean;
81
+ submitRetryPromptSnippet: string;
82
+ finishRetryCount: number;
83
+ providerErrorMessage: string | null;
84
+ providerErrorReason: string | null;
85
+ private settleTimer;
86
+ private idleTimeout;
87
+ private finishRetryTimer;
88
+ private providerErrorRetryTimer;
89
+ private providerErrorRetryKey;
90
+ pendingScriptStatus: 'generating' | 'waiting_approval' | null;
91
+ pendingScriptStatusSince: number;
92
+ private pendingScriptStatusTimer;
93
+ private idleFinishCandidate;
94
+ /**
95
+ * `finishResponse` produces the `generating → idle` transition that
96
+ * coordinators interpret as "task complete". Some providers (antigravity-
97
+ * cli observed in the wild) briefly paint a screen that looks like an
98
+ * idle prompt between tool result frames while still actively running,
99
+ * which fired `response_finished` and broke completion semantics.
100
+ * We defer the actual idle transition by IDLE_CONFIRMATION_GRACE_MS and
101
+ * cancel it if the scripted detection re-detects generating during that
102
+ * window — a true completion stays idle for many seconds, so a 2-second
103
+ * grace is sufficient to filter the paint blip.
104
+ */
105
+ private pendingIdleFinishTimer;
106
+ private pendingIdleFinishAt;
107
+ private statusHistory;
108
+ private traceEntries;
109
+ private traceSeq;
110
+ private traceSessionId;
111
+ constructor(provider: CliProviderModule, runner: CliScriptRunner, transport: CliTransportAccess, callbacks: CliStateEngineCallbacks, timeouts: Required<NonNullable<CliProviderModule['timeouts']>>);
112
+ setStatus(status: CliSessionStatus['status'], trigger?: string): void;
113
+ scheduleSettle(): void;
114
+ /** Called from sendMessage in transport once a turn scope is established. */
115
+ onTurnStarted(turnScope: TurnParseScope): void;
116
+ /** Called when PTY exits */
117
+ onPtyExit(): void;
118
+ /** Called when adapter starts up successfully */
119
+ onSpawnReady(): void;
120
+ resolveModal(buttonIndex: number): void;
121
+ isApprovalRecentlyResolved(): boolean;
122
+ /**
123
+ * Called from sendMessage before starting a new turn.
124
+ * Clears stale idle response state when the terminal looks idle and no modal is active.
125
+ */
126
+ clearStaleIdleResponseGuard(reason: string, snap: CliBufferSnapshot): boolean;
127
+ /**
128
+ * Called from sendMessage before starting a new turn.
129
+ * Clears stale idle response state when the parsed session confirms idle with a final assistant message.
130
+ */
131
+ clearParsedIdleResponseGuard(reason: string, parsedStatus: any, snap: CliBufferSnapshot): boolean;
132
+ clearAllTimers(): void;
133
+ resetActiveTurnState(): void;
134
+ clearIdleFinishCandidate(reason: string): void;
135
+ hasActionableApproval(startupModal?: {
136
+ message: string;
137
+ buttons: string[];
138
+ } | null): boolean;
139
+ getTraceEntries(): CliTraceEntry[];
140
+ getStatusHistory(): {
141
+ status: string;
142
+ at: number;
143
+ trigger?: string;
144
+ }[];
145
+ getTraceSessionId(): string;
146
+ /** Record a trace entry from the transport layer (e.g. output events in debug mode). */
147
+ recordExternalTrace(type: string, payload?: Record<string, any>): void;
148
+ runDetectStatus(snap: CliBufferSnapshot): string | null;
149
+ runParseApproval(snap: CliBufferSnapshot): {
150
+ message: string;
151
+ buttons: string[];
152
+ } | null;
153
+ runParseSession(snap: CliBufferSnapshot): ParsedSession | null;
154
+ evaluateSettled(snap: CliBufferSnapshot): void;
155
+ private applyPendingScriptStatusDebounce;
156
+ private applyHoldGenerating;
157
+ private applyWaitingApproval;
158
+ private applyGenerating;
159
+ private applyError;
160
+ private maybeScheduleProviderErrorRetry;
161
+ private applyIdle;
162
+ finishResponse(): void;
163
+ private scheduleIdleFinish;
164
+ private cancelPendingIdleFinish;
165
+ private armApprovalExitTimeout;
166
+ private armIdleFinishCandidate;
167
+ private shouldDeferIdleTimeoutFinish;
168
+ private hasRecentInteractiveActivity;
169
+ private hasMeaningfulResponseBuffer;
170
+ private shouldDeferFinishForTranscript;
171
+ private rescheduleTranscriptFinishCheck;
172
+ private shouldRetryFinishResponse;
173
+ private commitCurrentTranscript;
174
+ private maybeCommitVisibleIdleTranscript;
175
+ private parsedStatusHasFinalAssistantMessage;
176
+ private parsedStatusHasFinalStandardAssistantMessage;
177
+ private recordTrace;
178
+ }
@@ -14,29 +14,30 @@
14
14
  * compatibility: [{ ideVersion, scriptDir }] ← versioned scripts
15
15
  */
16
16
  import type { CliAdapter } from '../cli-adapter-types.js';
17
+ import type { InteractivePromptResponse } from '../providers/types/interactive-prompt.js';
17
18
  import { type PtyRuntimeMetadata, type PtyTransportFactory } from './pty-transport.js';
18
- import { type CliProviderModule, type CliScripts, type CliSessionStatus } from './provider-cli-shared.js';
19
+ import { type CliProviderModule, type CliScripts, type CliSessionStatus, type CliTraceEntry, type ParsedSession } from './provider-cli-shared.js';
20
+ import { CliStateEngine, type CliBufferSnapshot } from './cli-state-engine.js';
21
+ import { type TurnParseScope } from './provider-cli-parse.js';
19
22
  import { type ProviderResolutionMeta } from './provider-cli-config.js';
20
23
  export { normalizeCliProviderForRuntime, type CliApprovalInput, type CliChatMessage, type CliProviderModule, type CliScreenLine, type CliScreenSnapshot, type CliScriptInput, type CliScripts, type CliSessionStatus, type CliStatusInput, type CliTraceEntry, } from './provider-cli-shared.js';
21
24
  export declare function appendBoundedText(current: string, chunk: string, maxChars: number): string;
22
25
  export declare class ProviderCliAdapter implements CliAdapter {
23
26
  private extraArgs;
24
27
  private extraEnv;
25
- readonly cliType: string;
28
+ cliType: string;
26
29
  readonly cliName: string;
27
30
  workingDir: string;
28
31
  private provider;
29
32
  private ptyProcess;
30
33
  private transportFactory;
31
- private currentStatus;
32
34
  private onStatusChange;
35
+ readonly engine: CliStateEngine;
33
36
  private responseBuffer;
34
37
  private recentOutputBuffer;
35
- private isWaitingForResponse;
36
- private activeModal;
37
- private parseErrorMessage;
38
+ private get parseErrorMessage();
39
+ private providerSessionId;
38
40
  private responseTimeout;
39
- private idleTimeout;
40
41
  private ready;
41
42
  private startupBuffer;
42
43
  private startupParseGate;
@@ -57,28 +58,32 @@ export declare class ProviderCliAdapter implements CliAdapter {
57
58
  private lastScreenSnapshotReadAt;
58
59
  private serverConn;
59
60
  private logBuffer;
60
- private lastApprovalResolvedAt;
61
- private approvalTransitionBuffer;
62
- private approvalExitTimeout;
63
- private pendingScriptStatus;
64
- private pendingScriptStatusSince;
65
- private pendingScriptStatusTimer;
66
- private settleTimer;
67
- private settledBuffer;
68
- private submitPendingUntil;
69
- private responseSettleIgnoreUntil;
70
- private responseEpoch;
61
+ private pendingOutboundQueue;
62
+ private pendingOutboundFlushTimer;
63
+ private pendingOutboundFlushInFlight;
71
64
  private submitRetryTimer;
72
- private submitRetryUsed;
73
- private submitRetryPromptSnippet;
74
- private idleFinishCandidate;
75
- private finishRetryTimer;
76
- private finishRetryCount;
77
65
  private resizeSuppressUntil;
78
- private statusHistory;
79
- private cliScripts;
80
- /** Per-session opaque state object created by cliScripts.createState(), reset on stop. */
81
- private scriptState;
66
+ private readonly runner;
67
+ /** @deprecated use runner.cliScripts for direct script access */
68
+ get cliScripts(): CliScripts;
69
+ /**
70
+ * Recent script invocations (oldest → newest). Exposed via the
71
+ * `get_chat_debug_bundle` daemon command so anyone debugging a
72
+ * stuck-status regression can read what each detectStatus /
73
+ * parseSession call actually saw and returned, instead of having
74
+ * to instrument the daemon.
75
+ */
76
+ getScriptInvocationTrace(): import("./cli-script-runner.js").CliScriptInvocationTrace[];
77
+ /**
78
+ * Returns the full raw PTY byte stream captured since adapter start.
79
+ * Used by the `record_provider_pty` IPC command to produce fixtures.
80
+ * Bounded by MAX_ACCUMULATED_BUFFER; older bytes may have been dropped.
81
+ */
82
+ getAccumulatedRawBuffer(): {
83
+ text: string;
84
+ droppedChars: number;
85
+ };
86
+ set cliScripts(scripts: CliScripts);
82
87
  private runtimeSettings;
83
88
  /** Full accumulated rendered PTY transcript for parser/readback use */
84
89
  private accumulatedBuffer;
@@ -98,16 +103,9 @@ export declare class ProviderCliAdapter implements CliAdapter {
98
103
  * Hermes turn (tool calls + reasoning + final bubble) without the
99
104
  * rolling window pushing the turn's ╭─ opening line out of view. */
100
105
  private static readonly MAX_ACCUMULATED_BUFFER;
101
- private currentTurnScope;
102
- private traceEntries;
103
- private traceSeq;
104
- private traceSessionId;
105
106
  private parsedStatusCache;
106
107
  private static readonly SCREEN_SNAPSHOT_MIN_INTERVAL_MS;
107
- private static readonly MAX_TRACE_ENTRIES;
108
108
  private readonly providerResolutionMeta;
109
- private static readonly FINISH_RETRY_DELAY_MS;
110
- private static readonly MAX_FINISH_RETRIES;
111
109
  private getBufferState;
112
110
  private recordBoundedAppendDrop;
113
111
  private readTerminalScreenText;
@@ -120,18 +118,12 @@ export declare class ProviderCliAdapter implements CliAdapter {
120
118
  private shouldUseFullProviderTranscriptContext;
121
119
  private getIdleFinishConfirmMs;
122
120
  private getStatusActivityHoldMs;
123
- private setStatus;
124
- private clearIdleFinishCandidate;
125
- private armIdleFinishCandidate;
126
- private recordTrace;
127
- private resetTraceSession;
128
121
  private readonly timeouts;
129
122
  private readonly approvalKeys;
130
123
  private readonly sendDelayMs;
131
124
  private readonly sendKey;
132
125
  private readonly submitStrategy;
133
126
  private readonly requirePromptEchoBeforeSubmit;
134
- private static readonly SCRIPT_STATUS_DEBOUNCE_MS;
135
127
  constructor(provider: CliProviderModule, workingDir: string, extraArgs?: string[], extraEnv?: Record<string, string>, transportFactory?: PtyTransportFactory);
136
128
  /** Inject CLI scripts after construction (e.g. when resolved by ProviderLoader) */
137
129
  setCliScripts(scripts: CliScripts): void;
@@ -146,29 +138,15 @@ export declare class ProviderCliAdapter implements CliAdapter {
146
138
  private handleOutput;
147
139
  private resolveStartupState;
148
140
  private scheduleStartupSettleCheck;
149
- private scheduleSettle;
150
- private armApprovalExitTimeout;
151
- private shouldRetryFinishResponse;
152
- private hasRecentInteractiveActivity;
153
- private shouldDeferIdleTimeoutFinish;
154
141
  private waitForInteractivePrompt;
155
142
  private clearAllTimers;
156
- private clearStaleIdleResponseGuard;
157
- private hasMeaningfulResponseBuffer;
158
- private evaluateSettled;
159
- private applyPendingScriptStatusDebounce;
160
- private applyHoldGenerating;
161
- private applyWaitingApproval;
162
- private applyGenerating;
163
- private applyIdle;
164
- private finishResponse;
165
- private maybeCommitVisibleIdleTranscript;
166
- private commitCurrentTranscript;
167
- private invokeCliScript;
168
- private runParseSession;
169
- private runDetectStatus;
170
- private runParseApproval;
171
- private hasActionableApproval;
143
+ runParseSession(): ParsedSession | null;
144
+ runDetectStatus(text: string): string | null;
145
+ runParseApproval(tail: string): {
146
+ message: string;
147
+ buttons: string[];
148
+ } | null;
149
+ private applyParsedSessionMetadata;
172
150
  private projectEffectiveStatus;
173
151
  getStatus(options?: {
174
152
  allowParse?: boolean;
@@ -187,7 +165,9 @@ export declare class ProviderCliAdapter implements CliAdapter {
187
165
  * Uses resolveAction script if available, otherwise falls back to standard text.
188
166
  */
189
167
  resolveAction(data: any): Promise<void>;
168
+ setInteractivePromptResponse(_response: InteractivePromptResponse): Promise<void>;
190
169
  private isSubmitStuck;
170
+ private hasMeaningfulResponseBufferLocal;
191
171
  private writeToPty;
192
172
  private resetPendingSendState;
193
173
  private commitSendUserTurn;
@@ -198,7 +178,15 @@ export declare class ProviderCliAdapter implements CliAdapter {
198
178
  private submitSendKey;
199
179
  private submitImmediatePrompt;
200
180
  private waitForEchoAndSubmit;
201
- sendMessage(text: string): Promise<void>;
181
+ sendMessage(text: string, options?: {
182
+ force?: boolean;
183
+ }): Promise<void>;
184
+ forceSendMessage(text: string): Promise<void>;
185
+ private enqueuePendingOutboundMessage;
186
+ private shouldQueuePendingOutboundMessage;
187
+ private schedulePendingOutboundFlush;
188
+ private flushPendingOutboundQueue;
189
+ private sendMessageNow;
202
190
  getPartialResponse(): string;
203
191
  getDebugSnapshot(): Record<string, unknown>;
204
192
  getRuntimeMetadata(): PtyRuntimeMetadata | null;
@@ -211,8 +199,63 @@ export declare class ProviderCliAdapter implements CliAdapter {
211
199
  clearHistory(): void;
212
200
  isProcessing(): boolean;
213
201
  isReady(): boolean;
214
- writeRaw(data: string): Promise<void>;
202
+ get currentStatus(): CliSessionStatus['status'];
203
+ set currentStatus(v: CliSessionStatus['status']);
204
+ get isWaitingForResponse(): boolean;
205
+ set isWaitingForResponse(v: boolean);
206
+ get activeModal(): {
207
+ message: string;
208
+ buttons: string[];
209
+ } | null;
210
+ set activeModal(v: {
211
+ message: string;
212
+ buttons: string[];
213
+ } | null);
214
+ get currentTurnScope(): TurnParseScope | null;
215
+ set currentTurnScope(v: TurnParseScope | null);
216
+ get responseEpoch(): number;
217
+ set responseEpoch(v: number);
218
+ get submitRetryUsed(): boolean;
219
+ set submitRetryUsed(v: boolean);
220
+ get submitRetryPromptSnippet(): string;
221
+ set submitRetryPromptSnippet(v: string);
222
+ get responseSettleIgnoreUntil(): number;
223
+ set responseSettleIgnoreUntil(v: number);
224
+ get submitPendingUntil(): number;
225
+ set submitPendingUntil(v: number);
226
+ get lastApprovalResolvedAt(): number;
227
+ set lastApprovalResolvedAt(v: number);
228
+ get providerErrorMessage(): string | null;
229
+ get providerErrorReason(): string | null;
230
+ get pendingScriptStatus(): 'generating' | 'waiting_approval' | null;
231
+ get pendingScriptStatusSince(): number;
232
+ get finishRetryCount(): number;
233
+ set finishRetryCount(v: number);
234
+ get traceSessionId(): string;
235
+ get traceEntries(): CliTraceEntry[];
236
+ get statusHistory(): {
237
+ status: string;
238
+ at: number;
239
+ trigger?: string;
240
+ }[];
241
+ get traceSeq(): number;
242
+ /** Expose engine's evaluateSettled for test access */
243
+ evaluateSettled(): void;
244
+ /** Expose engine's scheduleSettle for test access */
245
+ scheduleSettle(): void;
246
+ /** Expose engine's clearIdleFinishCandidate for test access */
247
+ clearIdleFinishCandidate(reason: string): void;
248
+ /** Expose engine's finishResponse for test access */
249
+ finishResponse(): void;
250
+ /** Returns a point-in-time snapshot of all buffer/screen state for external consumers (e.g. CliStateEngine). */
251
+ getSnapshot(): CliBufferSnapshot;
252
+ isAlive(): boolean;
253
+ flushOutboundQueue(): void;
254
+ writeRaw(data: string | Buffer): Promise<void>;
215
255
  resolveModal(buttonIndex: number): void;
256
+ getApprovalKeyForIndex(buttonIndex: number): string | undefined;
257
+ /** Returns true if an approval was resolved within the adapter's cooldown window. */
258
+ isApprovalRecentlyResolved(): boolean;
216
259
  resize(cols: number, rows: number): void;
217
260
  private getParsedDebugState;
218
261
  getDebugState(): Record<string, any>;
@@ -15,11 +15,15 @@ export declare function buildCliParseInput(options: {
15
15
  accumulatedRawBuffer: string;
16
16
  recentOutputBuffer: string;
17
17
  terminalScreenText: string;
18
+ workingDir?: string;
19
+ providerSessionId?: string;
20
+ historySessionId?: string;
18
21
  baseMessages: CliChatMessage[];
19
22
  partialResponse: string;
20
23
  isWaitingForResponse?: boolean;
21
24
  scope?: TurnParseScope | null;
22
25
  runtimeSettings: Record<string, any>;
26
+ spawnAt?: number;
23
27
  }): CliScriptInput;
24
28
  export declare function summarizeCliTraceText(text: string, max?: number): string;
25
29
  export declare function summarizeCliTraceMessages(messages: CliChatMessage[], limit?: number): {
@@ -1,6 +1,7 @@
1
1
  import type { ProviderResumeCapability } from '../providers/contracts.js';
2
2
  import type { ChatMessageKind } from '../providers/chat-message-normalization.js';
3
3
  import type { ChatBubbleState } from '../types.js';
4
+ import type { InteractivePrompt } from '../providers/types/interactive-prompt.js';
4
5
  import { sanitizeSpawnEnv } from './spawn-env.js';
5
6
  export interface CliChatMessage {
6
7
  role: string;
@@ -26,8 +27,18 @@ export interface CliSessionStatus {
26
27
  message: string;
27
28
  buttons: string[];
28
29
  } | null;
30
+ activeInteractivePrompt?: InteractivePrompt | null;
31
+ pendingOutboundCount?: number;
32
+ pendingOutboundMessages?: Array<{
33
+ id: string;
34
+ role: 'user';
35
+ content: string;
36
+ queuedAt: number;
37
+ source: string;
38
+ }>;
29
39
  errorMessage?: string;
30
40
  errorReason?: string;
41
+ providerSessionId?: string;
31
42
  bufferState?: {
32
43
  responseBuffer?: {
33
44
  truncated: boolean;
@@ -59,6 +70,9 @@ export interface ParsedSession {
59
70
  buttons: string[];
60
71
  } | null;
61
72
  parsedStatus: string | null;
73
+ errorMessage?: string;
74
+ errorReason?: string;
75
+ providerSessionId?: string;
62
76
  transcriptAuthority?: 'provider' | 'daemon';
63
77
  coverage?: 'full' | 'tail' | 'current-turn';
64
78
  }
@@ -112,6 +126,10 @@ export interface CliScriptInput {
112
126
  rawBuffer: string;
113
127
  recentBuffer: string;
114
128
  screenText: string;
129
+ workspace?: string;
130
+ workingDir?: string;
131
+ providerSessionId?: string;
132
+ historySessionId?: string;
115
133
  screen: CliScreenSnapshot;
116
134
  bufferScreen: CliScreenSnapshot;
117
135
  recentScreen: CliScreenSnapshot;
@@ -121,6 +139,7 @@ export interface CliScriptInput {
121
139
  promptText?: string;
122
140
  settings?: Record<string, any>;
123
141
  args?: Record<string, any>;
142
+ spawnAt?: number;
124
143
  }
125
144
  export interface CliStatusInput {
126
145
  tail: string;
@@ -158,16 +177,26 @@ export interface CliProviderModule {
158
177
  binary: string;
159
178
  approvalKeys?: Record<number, string>;
160
179
  sendDelayMs?: number;
180
+ /** Wall-clock budget (ms) for a single provider script invocation. Default 50. Range 1..5000.
181
+ * Exceeding the budget records `timedOut: true` on the invocation trace and emits a
182
+ * throttled WARN — it does NOT abort the script (Node CJS can't interrupt sync code). */
183
+ scriptCallBudgetMs?: number;
161
184
  sendKey?: string;
162
185
  submitStrategy?: 'wait_for_echo' | 'immediate';
163
186
  /** Require the typed prompt to be visible on the PTY screen before sending Enter. */
164
187
  requirePromptEchoBeforeSubmit?: boolean;
165
188
  /** Allow sending another prompt while the CLI is still generating so users can intervene mid-turn. */
166
189
  allowInputDuringGeneration?: boolean;
190
+ /** When true, only transition to idle after the parsed transcript includes a final standard assistant message. */
191
+ requiresFinalAssistantBeforeIdle?: boolean;
192
+ /** When true, allow providers to augment stale snapshot data before parse. Reserved for future use. */
193
+ augmentStaleSnapshot?: boolean;
167
194
  /** When provider-owned, daemon treats provider parser output as canonical transcript authority. */
168
195
  transcriptAuthority?: 'provider' | 'daemon';
169
196
  /** Full context lets provider-owned parsers canonicalize retained history instead of daemon prefix stitching. */
170
197
  transcriptContext?: 'full' | 'tail';
198
+ /** v1 declarative tui block — used by CliScriptRunner to synthesize SDK helpers (declarativeDetectStatus, declarativeParseApproval). */
199
+ tui?: Record<string, unknown>;
171
200
  scripts?: CliScripts;
172
201
  spawn: {
173
202
  command: string;
@@ -0,0 +1,37 @@
1
+ import { type SessionHostEndpoint, type SessionHostRequest, type SessionHostResponse, type SessionTerminalSnapshot, type SessionTerminalState } from '@adhdev/session-host-core';
2
+ type LowercaseLetter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
3
+ type FunctionKey = 'f1' | 'f2' | 'f3' | 'f4' | 'f5' | 'f6' | 'f7' | 'f8' | 'f9' | 'f10' | 'f11' | 'f12';
4
+ type BaseNamedKey = 'enter' | 'escape' | 'tab' | 'backspace' | 'up' | 'down' | 'left' | 'right' | 'home' | 'end' | 'pageup' | 'pagedown' | 'space' | FunctionKey;
5
+ type ShiftNamedKey = BaseNamedKey | LowercaseLetter | `ctrl+${LowercaseLetter}` | `alt+${LowercaseLetter}`;
6
+ export type NamedKey = BaseNamedKey | `ctrl+${LowercaseLetter}` | `alt+${LowercaseLetter}` | `shift+${ShiftNamedKey}`;
7
+ export declare function namedKeyToAnsi(key: NamedKey | string): string;
8
+ export declare function namedKeysToAnsi(keys: readonly (NamedKey | string)[]): string;
9
+ export interface RawTerminalSessionHostClient {
10
+ connect(): Promise<void>;
11
+ request<T = unknown>(request: SessionHostRequest): Promise<SessionHostResponse<T>>;
12
+ close(): Promise<void>;
13
+ }
14
+ export interface RawTerminalAttachmentOptions {
15
+ endpoint?: SessionHostEndpoint;
16
+ sessionId: string;
17
+ mode?: 'read' | 'write';
18
+ clientId?: string;
19
+ client?: RawTerminalSessionHostClient;
20
+ }
21
+ export declare class RawTerminalAttachment {
22
+ readonly sessionId: string;
23
+ private readonly clientId;
24
+ private readonly mode;
25
+ private readonly client;
26
+ private closed;
27
+ private constructor();
28
+ static attach(options: RawTerminalAttachmentOptions): Promise<RawTerminalAttachment>;
29
+ readSnapshot(): Promise<SessionTerminalSnapshot>;
30
+ readScreenText(): Promise<string>;
31
+ readState(): Promise<SessionTerminalState>;
32
+ writeInput(text: string): Promise<void>;
33
+ writeKeys(keys: readonly (NamedKey | string)[]): Promise<void>;
34
+ close(): Promise<void>;
35
+ }
36
+ export declare function withRawTerminalAttachment<T>(options: RawTerminalAttachmentOptions, operation: (attachment: RawTerminalAttachment) => Promise<T>): Promise<T>;
37
+ export {};
@@ -1,9 +1,9 @@
1
- import type { TerminalViewportBackend, TerminalViewportBackendOptions, TerminalViewportBackendPreference } from './types.js';
2
- export declare function resolveTerminalBackendPreference(): TerminalViewportBackendPreference;
3
- export declare function isGhosttyVtBackendAvailable(): boolean;
1
+ import type { TerminalViewportBackend, TerminalViewportBackendOptions } from './types.js';
4
2
  export declare class GhosttyVtTerminalBackend implements TerminalViewportBackend {
5
3
  readonly kind: "ghostty-vt";
6
4
  private terminal;
5
+ private rows;
6
+ private disposed;
7
7
  constructor(options: TerminalViewportBackendOptions);
8
8
  resize(rows: number, cols: number): void;
9
9
  write(data: string): void;
@@ -1,5 +1,4 @@
1
- export type TerminalViewportBackendKind = 'xterm' | 'ghostty-vt';
2
- export type TerminalViewportBackendPreference = TerminalViewportBackendKind | 'auto';
1
+ export type TerminalViewportBackendKind = 'ghostty-vt';
3
2
  export type TerminalViewportBackendOptions = {
4
3
  rows: number;
5
4
  cols: number;
@@ -1,23 +1,14 @@
1
1
  /**
2
- * PTY screen snapshot abstraction.
3
- *
4
- * Terminal viewport backend selection.
5
- *
6
- * Runtime preference is backend-agnostic:
7
- * - prefer ghostty-vt when available (or when explicitly requested)
8
- * - fall back to xterm when ghostty-vt is unavailable
2
+ * PTY screen snapshot abstraction — ghostty-vt backend.
9
3
  */
10
- import type { TerminalViewportBackendKind, TerminalViewportBackendPreference } from './terminal-backends/types.js';
4
+ import type { TerminalViewportBackendKind } from './terminal-backends/types.js';
11
5
  export declare function getTerminalBackendRuntimeStatus(): {
12
6
  backend: TerminalViewportBackendKind;
13
- preference: TerminalViewportBackendPreference;
14
- ghosttyAvailable: boolean;
15
7
  };
16
8
  export declare class TerminalScreen {
17
9
  readonly backendKind: TerminalViewportBackendKind;
18
10
  private rows;
19
11
  private cols;
20
- private readonly preference;
21
12
  private terminal;
22
13
  constructor(rows?: number, cols?: number);
23
14
  reset(rows?: number, cols?: number): void;
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import type { ProviderInstanceManager } from '../providers/provider-instance-manager.js';
8
8
  import { ProviderLoader } from '../providers/provider-loader.js';
9
- import { type ProviderModule, type ProviderResumeCapability } from '../providers/contracts.js';
9
+ import { type MeshCoordinatorDelegatedWorkerIsolation, type ProviderModule, type ProviderResumeCapability } from '../providers/contracts.js';
10
10
  import type { CliAdapter } from '../cli-adapter-types.js';
11
11
  import type { PtyTransportFactory } from '../cli-adapters/pty-transport.js';
12
12
  import type { SessionRegistry } from '../sessions/registry.js';
@@ -68,6 +68,7 @@ export interface CoordinatorDelegatedCliLaunchOptionsInput {
68
68
  workspace: string;
69
69
  cliArgs?: string[];
70
70
  env?: Record<string, string>;
71
+ isolation?: MeshCoordinatorDelegatedWorkerIsolation;
71
72
  }
72
73
  export interface CoordinatorDelegatedCliLaunchOptions {
73
74
  cliArgs: string[];