@adhdev/daemon-core 0.9.82-rc.45 → 0.9.82-rc.450

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 (427) hide show
  1. package/dist/boot/daemon-lifecycle.d.ts +9 -0
  2. package/dist/boot/process-hardening.d.ts +50 -0
  3. package/dist/build-info.d.ts +37 -0
  4. package/dist/chat/source-machine.d.ts +166 -0
  5. package/dist/chat/source-resolver.d.ts +104 -0
  6. package/dist/chat/subscription-updates.d.ts +1 -0
  7. package/dist/cli-adapter-types.d.ts +68 -2
  8. package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
  9. package/dist/cli-adapters/cli-state-engine.d.ts +200 -0
  10. package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
  11. package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
  12. package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
  13. package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
  14. package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
  15. package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
  16. package/dist/cli-adapters/resolve-executable.d.ts +69 -0
  17. package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
  18. package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
  19. package/dist/cli-adapters/terminal-screen.d.ts +4 -11
  20. package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
  21. package/dist/commands/chat-commands-read.d.ts +7 -0
  22. package/dist/commands/chat-commands-scope.d.ts +39 -0
  23. package/dist/commands/chat-commands-shared.d.ts +33 -0
  24. package/dist/commands/chat-commands-write.d.ts +14 -0
  25. package/dist/commands/chat-commands.d.ts +10 -23
  26. package/dist/commands/cli-manager.d.ts +25 -1
  27. package/dist/commands/handler.d.ts +125 -0
  28. package/dist/commands/high-family/index.d.ts +3 -0
  29. package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
  30. package/dist/commands/high-family/mesh-events.d.ts +2 -0
  31. package/dist/commands/high-family/mesh-status.d.ts +2 -0
  32. package/dist/commands/high-family/types.d.ts +64 -0
  33. package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
  34. package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
  35. package/dist/commands/low-family/diagnostics.d.ts +2 -0
  36. package/dist/commands/low-family/index.d.ts +3 -0
  37. package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
  38. package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
  39. package/dist/commands/low-family/notification.d.ts +2 -0
  40. package/dist/commands/low-family/refine-config.d.ts +2 -0
  41. package/dist/commands/low-family/session-host.d.ts +2 -0
  42. package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
  43. package/dist/commands/low-family/status-meta.d.ts +2 -0
  44. package/dist/commands/low-family/types.d.ts +33 -0
  45. package/dist/commands/med-family/cli-agent.d.ts +2 -0
  46. package/dist/commands/med-family/fast-forward.d.ts +2 -0
  47. package/dist/commands/med-family/ide.d.ts +10 -0
  48. package/dist/commands/med-family/index.d.ts +3 -0
  49. package/dist/commands/med-family/mesh-crud.d.ts +29 -0
  50. package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
  51. package/dist/commands/med-family/mesh-queue.d.ts +2 -0
  52. package/dist/commands/med-family/mesh-restart.d.ts +2 -0
  53. package/dist/commands/med-family/types.d.ts +152 -0
  54. package/dist/commands/mesh-coordinator.d.ts +85 -1
  55. package/dist/commands/router.d.ts +279 -2
  56. package/dist/commands/upgrade-helper.d.ts +41 -1
  57. package/dist/config/chat-history.d.ts +9 -0
  58. package/dist/config/config.d.ts +5 -0
  59. package/dist/config/mesh-config.d.ts +129 -1
  60. package/dist/config/mesh-json-config.d.ts +199 -0
  61. package/dist/config/repo-settings.d.ts +77 -0
  62. package/dist/daemon/dev-server.d.ts +0 -2
  63. package/dist/detection/ide-detector.d.ts +13 -0
  64. package/dist/detection/win32-ide-version.d.ts +37 -0
  65. package/dist/git/change-impact-config.d.ts +159 -0
  66. package/dist/git/git-commands.d.ts +12 -1
  67. package/dist/git/git-diff.d.ts +6 -0
  68. package/dist/git/git-executor.d.ts +11 -0
  69. package/dist/git/git-status.d.ts +57 -0
  70. package/dist/git/git-types.d.ts +2 -50
  71. package/dist/git/git-worktree.d.ts +71 -1
  72. package/dist/git/index.d.ts +3 -1
  73. package/dist/index.d.ts +66 -14
  74. package/dist/index.js +48475 -17084
  75. package/dist/index.js.map +1 -1
  76. package/dist/index.mjs +49521 -18300
  77. package/dist/index.mjs.map +1 -1
  78. package/dist/installer.d.ts +1 -4
  79. package/dist/ipc/local-ipc-server.d.ts +91 -0
  80. package/dist/launch.d.ts +1 -1
  81. package/dist/logging/async-batch-writer.d.ts +10 -0
  82. package/dist/logging/log-redactor.d.ts +24 -0
  83. package/dist/logging/log-tail-reader.d.ts +81 -0
  84. package/dist/logging/logger.d.ts +1 -1
  85. package/dist/mesh/contracts.d.ts +164 -0
  86. package/dist/mesh/coordinator-prompt.d.ts +89 -0
  87. package/dist/mesh/coordinator-registry.d.ts +59 -0
  88. package/dist/mesh/mesh-active-work.d.ts +174 -0
  89. package/dist/mesh/mesh-clone-grace.d.ts +8 -0
  90. package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
  91. package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
  92. package/dist/mesh/mesh-event-classify.d.ts +5 -0
  93. package/dist/mesh/mesh-event-forwarding.d.ts +41 -0
  94. package/dist/mesh/mesh-event-trace.d.ts +21 -0
  95. package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
  96. package/dist/mesh/mesh-events-pending.d.ts +69 -0
  97. package/dist/mesh/mesh-events-stale.d.ts +61 -0
  98. package/dist/mesh/mesh-events-utils.d.ts +75 -0
  99. package/dist/mesh/mesh-events.d.ts +6 -49
  100. package/dist/mesh/mesh-fast-forward.d.ts +81 -0
  101. package/dist/mesh/mesh-host-ownership.d.ts +29 -0
  102. package/dist/mesh/mesh-init.d.ts +128 -0
  103. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
  104. package/dist/mesh/mesh-ledger.d.ts +115 -1
  105. package/dist/mesh/mesh-magi-status.d.ts +63 -0
  106. package/dist/mesh/mesh-missions.d.ts +189 -0
  107. package/dist/mesh/mesh-node-identity.d.ts +306 -0
  108. package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
  109. package/dist/mesh/mesh-reconcile-loop.d.ts +79 -0
  110. package/dist/mesh/mesh-refine-batch.d.ts +68 -0
  111. package/dist/mesh/mesh-refine-gates.d.ts +428 -0
  112. package/dist/mesh/mesh-refine-status.d.ts +62 -0
  113. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  114. package/dist/mesh/mesh-routing.d.ts +70 -0
  115. package/dist/mesh/mesh-runtime-store.d.ts +450 -0
  116. package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
  117. package/dist/mesh/mesh-task-inflight.d.ts +46 -0
  118. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  119. package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
  120. package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
  121. package/dist/mesh/mesh-work-queue.d.ts +300 -5
  122. package/dist/mesh/preview-freshness.d.ts +18 -0
  123. package/dist/mesh/refine-config.d.ts +216 -0
  124. package/dist/mesh/worktree-bootstrap-config.d.ts +145 -0
  125. package/dist/providers/acp-provider-instance.d.ts +5 -0
  126. package/dist/providers/approval-utils.d.ts +20 -0
  127. package/dist/providers/chat-message-normalization.d.ts +32 -1
  128. package/dist/providers/cli-provider-instance.d.ts +254 -3
  129. package/dist/providers/contracts.d.ts +149 -6
  130. package/dist/providers/external-sources.d.ts +71 -0
  131. package/dist/providers/manual-attendance.d.ts +63 -0
  132. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +126 -0
  133. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  134. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  135. package/dist/providers/native-history/constants.d.ts +12 -0
  136. package/dist/providers/native-history/dispatcher.d.ts +27 -0
  137. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  138. package/dist/providers/native-history/index.d.ts +13 -0
  139. package/dist/providers/provider-instance-manager.d.ts +29 -0
  140. package/dist/providers/provider-instance.d.ts +23 -1
  141. package/dist/providers/provider-loader.d.ts +26 -4
  142. package/dist/providers/provider-trust.d.ts +31 -0
  143. package/dist/providers/read-chat-contract.d.ts +29 -0
  144. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  145. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
  146. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  147. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
  148. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  149. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  150. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  151. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  152. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  153. package/dist/providers/sdk/v1/index.d.ts +30 -0
  154. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  155. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  156. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  157. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  158. package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
  159. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  160. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  161. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  162. package/dist/providers/spec/adapter.d.ts +98 -0
  163. package/dist/providers/spec/cli-adapter.d.ts +223 -0
  164. package/dist/providers/spec/evaluator.d.ts +45 -0
  165. package/dist/providers/spec/fsm-driver.d.ts +444 -0
  166. package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
  167. package/dist/providers/spec/fsm-loader.d.ts +14 -0
  168. package/dist/providers/spec/fsm-types.d.ts +202 -0
  169. package/dist/providers/spec/native-history-executor.d.ts +41 -0
  170. package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
  171. package/dist/providers/spec/route.d.ts +4 -0
  172. package/dist/providers/spec/types.d.ts +222 -0
  173. package/dist/providers/status-monitor.d.ts +7 -7
  174. package/dist/providers/transcript-v2.d.ts +176 -0
  175. package/dist/providers/types/interactive-prompt.d.ts +84 -0
  176. package/dist/providers/working-dir.d.ts +17 -0
  177. package/dist/repo-mesh-types.d.ts +519 -13
  178. package/dist/runtime-defaults.d.ts +2 -0
  179. package/dist/session-host/managed-host.d.ts +64 -0
  180. package/dist/sessions/registry.d.ts +6 -0
  181. package/dist/shared-types-extra.d.ts +2 -4
  182. package/dist/shared-types.d.ts +59 -2
  183. package/dist/status/normalize.d.ts +1 -1
  184. package/dist/status/normalize.js +1 -0
  185. package/dist/status/normalize.js.map +1 -1
  186. package/dist/status/normalize.mjs +1 -0
  187. package/dist/status/normalize.mjs.map +1 -1
  188. package/dist/status/reporter.d.ts +2 -0
  189. package/dist/status/snapshot.d.ts +26 -0
  190. package/dist/system/hash.d.ts +8 -0
  191. package/dist/system/load-better-sqlite3.d.ts +21 -0
  192. package/dist/types.d.ts +5 -0
  193. package/package.json +7 -3
  194. package/src/agent-stream/poller.ts +2 -3
  195. package/src/agent-stream/provider-adapter.ts +1 -1
  196. package/src/boot/daemon-lifecycle.ts +63 -12
  197. package/src/boot/process-hardening.ts +89 -0
  198. package/src/build-info.ts +73 -0
  199. package/src/chat/source-machine.ts +534 -0
  200. package/src/chat/source-resolver.ts +0 -0
  201. package/src/chat/subscription-updates.ts +20 -1
  202. package/src/cli-adapter-types.d.ts +3 -1
  203. package/src/cli-adapter-types.ts +68 -2
  204. package/src/cli-adapters/cli-script-runner.ts +421 -0
  205. package/src/cli-adapters/cli-state-engine.ts +1246 -0
  206. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  207. package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
  208. package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
  209. package/src/cli-adapters/provider-cli-parse.ts +19 -0
  210. package/src/cli-adapters/provider-cli-runtime.ts +56 -7
  211. package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
  212. package/src/cli-adapters/provider-cli-shared.ts +121 -11
  213. package/src/cli-adapters/pty-transport.ts +2 -1
  214. package/src/cli-adapters/pty-write-chunking.ts +106 -0
  215. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  216. package/src/cli-adapters/resolve-executable.ts +204 -0
  217. package/src/cli-adapters/session-host-transport.ts +2 -1
  218. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
  219. package/src/cli-adapters/terminal-backends/types.ts +10 -3
  220. package/src/cli-adapters/terminal-screen.ts +16 -81
  221. package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
  222. package/src/commands/chat-commands-debug-bundle.ts +398 -0
  223. package/src/commands/chat-commands-read.ts +2488 -0
  224. package/src/commands/chat-commands-scope.ts +54 -0
  225. package/src/commands/chat-commands-shared.ts +114 -0
  226. package/src/commands/chat-commands-write.ts +891 -0
  227. package/src/commands/chat-commands.ts +19 -1841
  228. package/src/commands/cli-manager.ts +596 -27
  229. package/src/commands/handler.ts +841 -2
  230. package/src/commands/high-family/index.ts +28 -0
  231. package/src/commands/high-family/mesh-coordinator-launch.ts +680 -0
  232. package/src/commands/high-family/mesh-events.ts +89 -0
  233. package/src/commands/high-family/mesh-status.ts +822 -0
  234. package/src/commands/high-family/types.ts +80 -0
  235. package/src/commands/low-family/coordinator-prompt.ts +72 -0
  236. package/src/commands/low-family/daemon-lifecycle.ts +107 -0
  237. package/src/commands/low-family/diagnostics.ts +57 -0
  238. package/src/commands/low-family/index.ts +37 -0
  239. package/src/commands/low-family/mesh-ledger.ts +62 -0
  240. package/src/commands/low-family/mesh-node-logs.ts +87 -0
  241. package/src/commands/low-family/notification.ts +116 -0
  242. package/src/commands/low-family/refine-config.ts +106 -0
  243. package/src/commands/low-family/session-host.ts +274 -0
  244. package/src/commands/low-family/spec-providerdev.ts +217 -0
  245. package/src/commands/low-family/status-meta.ts +112 -0
  246. package/src/commands/low-family/types.ts +39 -0
  247. package/src/commands/med-family/cli-agent.ts +238 -0
  248. package/src/commands/med-family/fast-forward.ts +230 -0
  249. package/src/commands/med-family/ide.ts +163 -0
  250. package/src/commands/med-family/index.ts +37 -0
  251. package/src/commands/med-family/mesh-crud.ts +1253 -0
  252. package/src/commands/med-family/mesh-host-pairing.ts +234 -0
  253. package/src/commands/med-family/mesh-queue.ts +167 -0
  254. package/src/commands/med-family/mesh-restart.ts +92 -0
  255. package/src/commands/med-family/types.ts +153 -0
  256. package/src/commands/mesh-coordinator.ts +334 -124
  257. package/src/commands/router.ts +2893 -3536
  258. package/src/commands/stream-commands.ts +8 -0
  259. package/src/commands/upgrade-helper.ts +310 -45
  260. package/src/config/chat-history.ts +493 -24
  261. package/src/config/config.ts +12 -0
  262. package/src/config/mesh-config.ts +619 -23
  263. package/src/config/mesh-json-config.ts +376 -0
  264. package/src/config/recent-activity.ts +8 -2
  265. package/src/config/repo-settings.ts +111 -0
  266. package/src/daemon/dev-auto-implement.ts +3 -2
  267. package/src/daemon/dev-cli-debug.ts +10 -1
  268. package/src/daemon/dev-server.ts +0 -541
  269. package/src/detection/cli-detector.ts +28 -9
  270. package/src/detection/ide-detector.ts +55 -16
  271. package/src/detection/win32-ide-version.ts +106 -0
  272. package/src/git/change-impact-config.ts +354 -0
  273. package/src/git/git-commands.ts +78 -15
  274. package/src/git/git-diff.ts +81 -11
  275. package/src/git/git-executor.ts +12 -0
  276. package/src/git/git-status.ts +767 -48
  277. package/src/git/git-types.ts +14 -62
  278. package/src/git/git-worktree.ts +261 -4
  279. package/src/git/index.ts +17 -0
  280. package/src/index.ts +198 -12
  281. package/src/installer.d.ts +1 -1
  282. package/src/installer.ts +8 -6
  283. package/src/ipc/local-ipc-server.ts +278 -0
  284. package/src/launch.d.ts +1 -1
  285. package/src/launch.ts +37 -28
  286. package/src/logging/async-batch-writer.ts +55 -0
  287. package/src/logging/command-log.ts +7 -5
  288. package/src/logging/log-redactor.ts +100 -0
  289. package/src/logging/log-tail-reader.ts +341 -0
  290. package/src/logging/logger.ts +14 -7
  291. package/src/mesh/contracts.ts +338 -0
  292. package/src/mesh/coordinator-prompt.ts +416 -34
  293. package/src/mesh/coordinator-registry.ts +121 -0
  294. package/src/mesh/mesh-active-work.ts +645 -0
  295. package/src/mesh/mesh-clone-grace.ts +68 -0
  296. package/src/mesh/mesh-coordinator-config.ts +97 -0
  297. package/src/mesh/mesh-delivery-policy.ts +315 -0
  298. package/src/mesh/mesh-event-classify.ts +51 -0
  299. package/src/mesh/mesh-event-forwarding.ts +1897 -0
  300. package/src/mesh/mesh-event-trace.ts +67 -0
  301. package/src/mesh/mesh-events-coordinator.ts +32 -0
  302. package/src/mesh/mesh-events-pending.ts +656 -0
  303. package/src/mesh/mesh-events-stale.ts +389 -0
  304. package/src/mesh/mesh-events-utils.ts +443 -0
  305. package/src/mesh/mesh-events.ts +33 -1035
  306. package/src/mesh/mesh-fast-forward.ts +843 -0
  307. package/src/mesh/mesh-host-ownership.ts +111 -0
  308. package/src/mesh/mesh-init.ts +350 -0
  309. package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
  310. package/src/mesh/mesh-ledger.ts +841 -102
  311. package/src/mesh/mesh-magi-status.ts +223 -0
  312. package/src/mesh/mesh-missions.ts +449 -0
  313. package/src/mesh/mesh-node-identity.ts +1985 -0
  314. package/src/mesh/mesh-queue-assignment.ts +1924 -0
  315. package/src/mesh/mesh-reconcile-loop.ts +2018 -0
  316. package/src/mesh/mesh-refine-batch.ts +205 -0
  317. package/src/mesh/mesh-refine-gates.ts +1673 -0
  318. package/src/mesh/mesh-refine-status.ts +231 -0
  319. package/src/mesh/mesh-review-inbox.ts +307 -0
  320. package/src/mesh/mesh-routing.ts +291 -0
  321. package/src/mesh/mesh-runtime-store.ts +1853 -0
  322. package/src/mesh/mesh-scheduling-runtime.ts +198 -0
  323. package/src/mesh/mesh-task-inflight.ts +70 -0
  324. package/src/mesh/mesh-task-stats.ts +161 -0
  325. package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
  326. package/src/mesh/mesh-warmup-deadline.ts +152 -0
  327. package/src/mesh/mesh-work-queue.ts +1254 -141
  328. package/src/mesh/preview-freshness.ts +118 -0
  329. package/src/mesh/refine-config.ts +423 -0
  330. package/src/mesh/worktree-bootstrap-config.ts +450 -0
  331. package/src/providers/acp-provider-instance.ts +43 -10
  332. package/src/providers/approval-utils.d.ts +5 -0
  333. package/src/providers/approval-utils.ts +57 -5
  334. package/src/providers/chat-message-normalization.ts +92 -4
  335. package/src/providers/cli-provider-instance.ts +2177 -107
  336. package/src/providers/contracts.d.ts +55 -0
  337. package/src/providers/contracts.ts +160 -6
  338. package/src/providers/extension-provider-instance.ts +12 -7
  339. package/src/providers/external-sources.ts +218 -0
  340. package/src/providers/ide-provider-instance.ts +35 -12
  341. package/src/providers/manual-attendance.ts +85 -0
  342. package/src/providers/native-history/antigravity-cli-transcript.ts +1043 -0
  343. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  344. package/src/providers/native-history/codex-cli-transcript.ts +479 -0
  345. package/src/providers/native-history/constants.ts +19 -0
  346. package/src/providers/native-history/dispatcher.ts +373 -0
  347. package/src/providers/native-history/hermes-cli-transcript.ts +260 -0
  348. package/src/providers/native-history/index.ts +30 -0
  349. package/src/providers/provider-instance-manager.ts +71 -0
  350. package/src/providers/provider-instance.ts +19 -1
  351. package/src/providers/provider-loader.ts +668 -50
  352. package/src/providers/provider-schema.ts +87 -14
  353. package/src/providers/provider-trust.ts +114 -0
  354. package/src/providers/read-chat-contract.ts +76 -16
  355. package/src/providers/sdk/README.md +49 -0
  356. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  357. package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
  358. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  359. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
  360. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  361. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  362. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  363. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  364. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  365. package/src/providers/sdk/v1/index.ts +152 -0
  366. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  367. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  368. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  369. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
  370. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  371. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  372. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  373. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  374. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  375. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  376. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  377. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  378. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  379. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  380. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  381. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  382. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  383. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  384. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  385. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  386. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  387. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  388. package/src/providers/sdk/v1/validators/index.ts +19 -0
  389. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  390. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  391. package/src/providers/spec/adapter.ts +246 -0
  392. package/src/providers/spec/cli-adapter.ts +1064 -0
  393. package/src/providers/spec/evaluator.ts +407 -0
  394. package/src/providers/spec/fsm-driver.ts +1481 -0
  395. package/src/providers/spec/fsm-evaluator.ts +290 -0
  396. package/src/providers/spec/fsm-loader.ts +128 -0
  397. package/src/providers/spec/fsm-types.ts +301 -0
  398. package/src/providers/spec/native-history-executor.ts +1174 -0
  399. package/src/providers/spec/pre-launch-trust.ts +104 -0
  400. package/src/providers/spec/route.ts +51 -0
  401. package/src/providers/spec/types.ts +262 -0
  402. package/src/providers/status-monitor.d.ts +7 -7
  403. package/src/providers/status-monitor.ts +37 -22
  404. package/src/providers/transcript-v2.ts +567 -0
  405. package/src/providers/types/interactive-prompt.ts +536 -0
  406. package/src/providers/version-archive.ts +64 -24
  407. package/src/providers/working-dir.ts +23 -0
  408. package/src/repo-mesh-types.ts +758 -14
  409. package/src/runtime-defaults.ts +39 -0
  410. package/src/session-host/managed-host.ts +218 -0
  411. package/src/sessions/registry.ts +6 -0
  412. package/src/shared-types-extra.ts +2 -4
  413. package/src/shared-types.d.ts +8 -0
  414. package/src/shared-types.ts +64 -1
  415. package/src/status/builders.ts +26 -6
  416. package/src/status/normalize.ts +2 -0
  417. package/src/status/reporter.ts +19 -1
  418. package/src/status/snapshot.ts +95 -26
  419. package/src/system/hash.ts +23 -0
  420. package/src/system/host-memory.ts +29 -12
  421. package/src/system/load-better-sqlite3.ts +68 -0
  422. package/src/types.ts +5 -0
  423. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  424. package/dist/mesh/mesh-sync.d.ts +0 -53
  425. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  426. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  427. package/src/mesh/mesh-sync.ts +0 -111
@@ -0,0 +1,200 @@
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
+ currentTurnTaskId: string | null;
62
+ currentTurnStartedAt: number;
63
+ activeModal: {
64
+ message: string;
65
+ buttons: string[];
66
+ } | null;
67
+ lastApprovalResolvedAt: number;
68
+ lastResolvedModalMessage: string;
69
+ /**
70
+ * Monotonic counter bumped every time the FSM *enters* waiting_approval
71
+ * with a freshly captured modal (see `applyWaitingApproval`). It is the
72
+ * single discriminator between "the same approval re-observed across TUI
73
+ * paint flaps" and "a genuinely new, distinct approval".
74
+ *
75
+ * The message-equality cooldown below (`lastResolvedModalMessage`) cannot
76
+ * tell these apart on its own: claude-cli routinely presents consecutive
77
+ * approvals whose modal message text is identical (e.g. two back-to-back
78
+ * Bash-command prompts). When that second approval arrived inside
79
+ * `approvalCooldown`, the message-equality guard silently swallowed the
80
+ * key write and the approval stuck forever — fatal under auto-approval.
81
+ *
82
+ * `approvalEntrySeq` increments on every fresh entry; `lastResolvedEntrySeq`
83
+ * records which entry the cooldown belongs to. We only short-circuit the
84
+ * write when we are still resolving *that same* entry — a new entry (new
85
+ * seq) is always a real, distinct approval and must be written.
86
+ */
87
+ approvalEntrySeq: number;
88
+ lastResolvedEntrySeq: number;
89
+ /**
90
+ * When the engine previously held a modal but the latest parse failed
91
+ * to extract one, we record the timestamp here and only drop the modal
92
+ * after the configured `approvalCooldown` to avoid flapping between
93
+ * waiting_approval and generating on every Claude TUI redraw — that
94
+ * flapping is what fed auto-approve a fresh modal signature on each
95
+ * paint and made the engine type "1" repeatedly into the prompt.
96
+ */
97
+ modalLostAt: number;
98
+ private approvalExitTimeout;
99
+ responseEpoch: number;
100
+ submitPendingUntil: number;
101
+ responseSettleIgnoreUntil: number;
102
+ submitRetryUsed: boolean;
103
+ submitRetryPromptSnippet: string;
104
+ finishRetryCount: number;
105
+ providerErrorMessage: string | null;
106
+ providerErrorReason: string | null;
107
+ private settleTimer;
108
+ private idleTimeout;
109
+ private finishRetryTimer;
110
+ private providerErrorRetryTimer;
111
+ private providerErrorRetryKey;
112
+ pendingScriptStatus: 'generating' | 'waiting_approval' | null;
113
+ pendingScriptStatusSince: number;
114
+ private pendingScriptStatusTimer;
115
+ private idleFinishCandidate;
116
+ /**
117
+ * `finishResponse` produces the `generating → idle` transition that
118
+ * coordinators interpret as "task complete". Some providers (antigravity-
119
+ * cli observed in the wild) briefly paint a screen that looks like an
120
+ * idle prompt between tool result frames while still actively running,
121
+ * which fired `response_finished` and broke completion semantics.
122
+ * We defer the actual idle transition by IDLE_CONFIRMATION_GRACE_MS and
123
+ * cancel it if the scripted detection re-detects generating during that
124
+ * window — a true completion stays idle for many seconds, so a 2-second
125
+ * grace is sufficient to filter the paint blip.
126
+ */
127
+ private pendingIdleFinishTimer;
128
+ private pendingIdleFinishAt;
129
+ private statusHistory;
130
+ private traceEntries;
131
+ private traceSeq;
132
+ private traceSessionId;
133
+ constructor(provider: CliProviderModule, runner: CliScriptRunner, transport: CliTransportAccess, callbacks: CliStateEngineCallbacks, timeouts: Required<NonNullable<CliProviderModule['timeouts']>>);
134
+ setStatus(status: CliSessionStatus['status'], trigger?: string): void;
135
+ scheduleSettle(): void;
136
+ /** Called from sendMessage in transport once a turn scope is established. */
137
+ onTurnStarted(turnScope: TurnParseScope): void;
138
+ /** Called when PTY exits */
139
+ onPtyExit(): void;
140
+ /** Called when adapter starts up successfully */
141
+ onSpawnReady(): void;
142
+ resolveModal(buttonIndex: number): void;
143
+ isApprovalRecentlyResolved(): boolean;
144
+ /**
145
+ * Called from sendMessage before starting a new turn.
146
+ * Clears stale idle response state when the terminal looks idle and no modal is active.
147
+ */
148
+ clearStaleIdleResponseGuard(reason: string, snap: CliBufferSnapshot): boolean;
149
+ /**
150
+ * Called from sendMessage before starting a new turn.
151
+ * Clears stale idle response state when the parsed session confirms idle with a final assistant message.
152
+ */
153
+ clearParsedIdleResponseGuard(reason: string, parsedStatus: any, snap: CliBufferSnapshot): boolean;
154
+ clearAllTimers(): void;
155
+ resetActiveTurnState(): void;
156
+ clearIdleFinishCandidate(reason: string): void;
157
+ hasActionableApproval(startupModal?: {
158
+ message: string;
159
+ buttons: string[];
160
+ } | null): boolean;
161
+ getTraceEntries(): CliTraceEntry[];
162
+ getStatusHistory(): {
163
+ status: string;
164
+ at: number;
165
+ trigger?: string;
166
+ }[];
167
+ getTraceSessionId(): string;
168
+ /** Record a trace entry from the transport layer (e.g. output events in debug mode). */
169
+ recordExternalTrace(type: string, payload?: Record<string, any>): void;
170
+ runDetectStatus(snap: CliBufferSnapshot): string | null;
171
+ runParseApproval(snap: CliBufferSnapshot): {
172
+ message: string;
173
+ buttons: string[];
174
+ } | null;
175
+ runParseSession(snap: CliBufferSnapshot): ParsedSession | null;
176
+ evaluateSettled(snap: CliBufferSnapshot): void;
177
+ private applyPendingScriptStatusDebounce;
178
+ private applyHoldGenerating;
179
+ private applyWaitingApproval;
180
+ private applyGenerating;
181
+ private applyError;
182
+ private maybeScheduleProviderErrorRetry;
183
+ private applyIdle;
184
+ finishResponse(): void;
185
+ private scheduleIdleFinish;
186
+ private cancelPendingIdleFinish;
187
+ private armApprovalExitTimeout;
188
+ private armIdleFinishCandidate;
189
+ private shouldDeferIdleTimeoutFinish;
190
+ private hasRecentInteractiveActivity;
191
+ private hasMeaningfulResponseBuffer;
192
+ private shouldDeferFinishForTranscript;
193
+ private rescheduleTranscriptFinishCheck;
194
+ private shouldRetryFinishResponse;
195
+ private commitCurrentTranscript;
196
+ private maybeCommitVisibleIdleTranscript;
197
+ private parsedStatusHasFinalAssistantMessage;
198
+ private parsedStatusHasFinalStandardAssistantMessage;
199
+ private recordTrace;
200
+ }
@@ -13,31 +13,33 @@
13
13
  * type, name, category: 'cli', binary, spawn, approvalKeys
14
14
  * compatibility: [{ ideVersion, scriptDir }] ← versioned scripts
15
15
  */
16
- import type { CliAdapter } from '../cli-adapter-types.js';
16
+ import type { CliAdapter, CliLaunchInfo } 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;
42
+ private firstTurnSent;
41
43
  private startupBuffer;
42
44
  private startupParseGate;
43
45
  private startupSettleTimer;
@@ -57,28 +59,32 @@ export declare class ProviderCliAdapter implements CliAdapter {
57
59
  private lastScreenSnapshotReadAt;
58
60
  private serverConn;
59
61
  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;
62
+ private pendingOutboundQueue;
63
+ private pendingOutboundFlushTimer;
64
+ private pendingOutboundFlushInFlight;
71
65
  private submitRetryTimer;
72
- private submitRetryUsed;
73
- private submitRetryPromptSnippet;
74
- private idleFinishCandidate;
75
- private finishRetryTimer;
76
- private finishRetryCount;
77
66
  private resizeSuppressUntil;
78
- private statusHistory;
79
- private cliScripts;
80
- /** Per-session opaque state object created by cliScripts.createState(), reset on stop. */
81
- private scriptState;
67
+ private readonly runner;
68
+ /** @deprecated use runner.cliScripts for direct script access */
69
+ get cliScripts(): CliScripts;
70
+ /**
71
+ * Recent script invocations (oldest → newest). Exposed via the
72
+ * `get_chat_debug_bundle` daemon command so anyone debugging a
73
+ * stuck-status regression can read what each detectStatus /
74
+ * parseSession call actually saw and returned, instead of having
75
+ * to instrument the daemon.
76
+ */
77
+ getScriptInvocationTrace(): import("./cli-script-runner.js").CliScriptInvocationTrace[];
78
+ /**
79
+ * Returns the full raw PTY byte stream captured since adapter start.
80
+ * Used by the `record_provider_pty` IPC command to produce fixtures.
81
+ * Bounded by MAX_ACCUMULATED_BUFFER; older bytes may have been dropped.
82
+ */
83
+ getAccumulatedRawBuffer(): {
84
+ text: string;
85
+ droppedChars: number;
86
+ };
87
+ set cliScripts(scripts: CliScripts);
82
88
  private runtimeSettings;
83
89
  /** Full accumulated rendered PTY transcript for parser/readback use */
84
90
  private accumulatedBuffer;
@@ -98,16 +104,9 @@ export declare class ProviderCliAdapter implements CliAdapter {
98
104
  * Hermes turn (tool calls + reasoning + final bubble) without the
99
105
  * rolling window pushing the turn's ╭─ opening line out of view. */
100
106
  private static readonly MAX_ACCUMULATED_BUFFER;
101
- private currentTurnScope;
102
- private traceEntries;
103
- private traceSeq;
104
- private traceSessionId;
105
107
  private parsedStatusCache;
106
108
  private static readonly SCREEN_SNAPSHOT_MIN_INTERVAL_MS;
107
- private static readonly MAX_TRACE_ENTRIES;
108
109
  private readonly providerResolutionMeta;
109
- private static readonly FINISH_RETRY_DELAY_MS;
110
- private static readonly MAX_FINISH_RETRIES;
111
110
  private getBufferState;
112
111
  private recordBoundedAppendDrop;
113
112
  private readTerminalScreenText;
@@ -120,18 +119,12 @@ export declare class ProviderCliAdapter implements CliAdapter {
120
119
  private shouldUseFullProviderTranscriptContext;
121
120
  private getIdleFinishConfirmMs;
122
121
  private getStatusActivityHoldMs;
123
- private setStatus;
124
- private clearIdleFinishCandidate;
125
- private armIdleFinishCandidate;
126
- private recordTrace;
127
- private resetTraceSession;
128
122
  private readonly timeouts;
129
123
  private readonly approvalKeys;
130
124
  private readonly sendDelayMs;
131
125
  private readonly sendKey;
132
126
  private readonly submitStrategy;
133
127
  private readonly requirePromptEchoBeforeSubmit;
134
- private static readonly SCRIPT_STATUS_DEBOUNCE_MS;
135
128
  constructor(provider: CliProviderModule, workingDir: string, extraArgs?: string[], extraEnv?: Record<string, string>, transportFactory?: PtyTransportFactory);
136
129
  /** Inject CLI scripts after construction (e.g. when resolved by ProviderLoader) */
137
130
  setCliScripts(scripts: CliScripts): void;
@@ -146,29 +139,15 @@ export declare class ProviderCliAdapter implements CliAdapter {
146
139
  private handleOutput;
147
140
  private resolveStartupState;
148
141
  private scheduleStartupSettleCheck;
149
- private scheduleSettle;
150
- private armApprovalExitTimeout;
151
- private shouldRetryFinishResponse;
152
- private hasRecentInteractiveActivity;
153
- private shouldDeferIdleTimeoutFinish;
154
142
  private waitForInteractivePrompt;
155
143
  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;
144
+ runParseSession(): ParsedSession | null;
145
+ runDetectStatus(text: string): string | null;
146
+ runParseApproval(tail: string): {
147
+ message: string;
148
+ buttons: string[];
149
+ } | null;
150
+ private applyParsedSessionMetadata;
172
151
  private projectEffectiveStatus;
173
152
  getStatus(options?: {
174
153
  allowParse?: boolean;
@@ -187,21 +166,47 @@ export declare class ProviderCliAdapter implements CliAdapter {
187
166
  * Uses resolveAction script if available, otherwise falls back to standard text.
188
167
  */
189
168
  resolveAction(data: any): Promise<void>;
169
+ setInteractivePromptResponse(_response: InteractivePromptResponse): Promise<void>;
190
170
  private isSubmitStuck;
171
+ private hasMeaningfulResponseBufferLocal;
191
172
  private writeToPty;
173
+ /** Write `data` to the PTY in bounded, surrogate-safe chunks with a short
174
+ * inter-chunk gap (win32 paced write). Awaits each chunk's write and the gap
175
+ * so the returned promise resolves only after the FINAL chunk (carrying any
176
+ * trailing submit key) has been written. */
177
+ private writeWin32Chunked;
192
178
  private resetPendingSendState;
193
179
  private commitSendUserTurn;
194
180
  private armResponseTimeout;
195
181
  private writeSubmitKeyForRetry;
182
+ private writeStuckRetry;
196
183
  private retrySubmitIfStuck;
197
184
  private retryImmediateSubmitIfStuck;
198
185
  private submitSendKey;
199
186
  private submitImmediatePrompt;
200
187
  private waitForEchoAndSubmit;
201
- sendMessage(text: string): Promise<void>;
188
+ sendMessage(text: string, options?: {
189
+ force?: boolean;
190
+ meshTaskId?: string;
191
+ }): Promise<void>;
192
+ forceSendMessage(text: string, meshTaskId?: string): Promise<void>;
193
+ private waitForForceSubmitSettle;
194
+ private enqueuePendingOutboundMessage;
195
+ private shouldQueuePendingOutboundMessage;
196
+ private schedulePendingOutboundFlush;
197
+ private flushPendingOutboundQueue;
198
+ private sendMessageNow;
202
199
  getPartialResponse(): string;
203
200
  getDebugSnapshot(): Record<string, unknown>;
204
201
  getRuntimeMetadata(): PtyRuntimeMetadata | null;
202
+ /**
203
+ * Launch metadata for the dashboard Session info panel. Re-derives the spawn plan
204
+ * (pure — same inputs the live PTY was spawned with) so the dashboard sees the
205
+ * resolved binary, full arg vector, and cwd without us having to persist it.
206
+ * extraEnv values are intentionally dropped (keys only) so secrets passed at
207
+ * launch time never reach the dashboard.
208
+ */
209
+ getLaunchInfo(): CliLaunchInfo;
205
210
  updateRuntimeMeta(meta: Record<string, unknown>, replace?: boolean): void;
206
211
  cancel(): void;
207
212
  saveAndStop(): Promise<void>;
@@ -211,8 +216,65 @@ export declare class ProviderCliAdapter implements CliAdapter {
211
216
  clearHistory(): void;
212
217
  isProcessing(): boolean;
213
218
  isReady(): boolean;
214
- writeRaw(data: string): Promise<void>;
219
+ get currentStatus(): CliSessionStatus['status'];
220
+ set currentStatus(v: CliSessionStatus['status']);
221
+ get isWaitingForResponse(): boolean;
222
+ set isWaitingForResponse(v: boolean);
223
+ get activeModal(): {
224
+ message: string;
225
+ buttons: string[];
226
+ } | null;
227
+ set activeModal(v: {
228
+ message: string;
229
+ buttons: string[];
230
+ } | null);
231
+ get currentTurnScope(): TurnParseScope | null;
232
+ set currentTurnScope(v: TurnParseScope | null);
233
+ get currentTurnTaskId(): string | null;
234
+ get currentTurnStartedAt(): number;
235
+ get responseEpoch(): number;
236
+ set responseEpoch(v: number);
237
+ get submitRetryUsed(): boolean;
238
+ set submitRetryUsed(v: boolean);
239
+ get submitRetryPromptSnippet(): string;
240
+ set submitRetryPromptSnippet(v: string);
241
+ get responseSettleIgnoreUntil(): number;
242
+ set responseSettleIgnoreUntil(v: number);
243
+ get submitPendingUntil(): number;
244
+ set submitPendingUntil(v: number);
245
+ get lastApprovalResolvedAt(): number;
246
+ set lastApprovalResolvedAt(v: number);
247
+ get providerErrorMessage(): string | null;
248
+ get providerErrorReason(): string | null;
249
+ get pendingScriptStatus(): 'generating' | 'waiting_approval' | null;
250
+ get pendingScriptStatusSince(): number;
251
+ get finishRetryCount(): number;
252
+ set finishRetryCount(v: number);
253
+ get traceSessionId(): string;
254
+ get traceEntries(): CliTraceEntry[];
255
+ get statusHistory(): {
256
+ status: string;
257
+ at: number;
258
+ trigger?: string;
259
+ }[];
260
+ get traceSeq(): number;
261
+ /** Expose engine's evaluateSettled for test access */
262
+ evaluateSettled(): void;
263
+ /** Expose engine's scheduleSettle for test access */
264
+ scheduleSettle(): void;
265
+ /** Expose engine's clearIdleFinishCandidate for test access */
266
+ clearIdleFinishCandidate(reason: string): void;
267
+ /** Expose engine's finishResponse for test access */
268
+ finishResponse(): void;
269
+ /** Returns a point-in-time snapshot of all buffer/screen state for external consumers (e.g. CliStateEngine). */
270
+ getSnapshot(): CliBufferSnapshot;
271
+ isAlive(): boolean;
272
+ flushOutboundQueue(): void;
273
+ writeRaw(data: string | Buffer): Promise<void>;
215
274
  resolveModal(buttonIndex: number): void;
275
+ getApprovalKeyForIndex(buttonIndex: number): string | undefined;
276
+ /** Returns true if an approval was resolved within the adapter's cooldown window. */
277
+ isApprovalRecentlyResolved(): boolean;
216
278
  resize(cols: number, rows: number): void;
217
279
  private getParsedDebugState;
218
280
  getDebugState(): Record<string, any>;
@@ -4,6 +4,7 @@ export interface TurnParseScope {
4
4
  startedAt: number;
5
5
  bufferStart: number;
6
6
  rawBufferStart: number;
7
+ taskId?: string;
7
8
  }
8
9
  export declare function normalizeCliParsedMessages(parsedMessages: any[], _options: {
9
10
  scope?: TurnParseScope | null;
@@ -15,11 +16,15 @@ export declare function buildCliParseInput(options: {
15
16
  accumulatedRawBuffer: string;
16
17
  recentOutputBuffer: string;
17
18
  terminalScreenText: string;
19
+ workingDir?: string;
20
+ providerSessionId?: string;
21
+ historySessionId?: string;
18
22
  baseMessages: CliChatMessage[];
19
23
  partialResponse: string;
20
24
  isWaitingForResponse?: boolean;
21
25
  scope?: TurnParseScope | null;
22
26
  runtimeSettings: Record<string, any>;
27
+ spawnAt?: number;
23
28
  }): CliScriptInput;
24
29
  export declare function summarizeCliTraceText(text: string, max?: number): string;
25
30
  export declare function summarizeCliTraceMessages(messages: CliChatMessage[], limit?: number): {
@@ -17,6 +17,40 @@ export declare function resolveCliSpawnPlan(options: {
17
17
  extraArgs: string[];
18
18
  extraEnv?: Record<string, string>;
19
19
  }): CliSpawnPlan;
20
+ /**
21
+ * Cols/rows for a PTY spawn. Defaults to the session-host terminal size; the
22
+ * spec driver may override per-instance.
23
+ */
24
+ export interface CliSpawnGeometry {
25
+ cols?: number;
26
+ rows?: number;
27
+ }
28
+ /**
29
+ * Core spawn-plan resolution from already-flattened spawn parts — the single
30
+ * source of truth for binary resolution (findBinary: PATH + npm-global / Node
31
+ * dir fallback), `{{workingDir}}` token substitution, shell wrapping
32
+ * (script-shims / non-absolute / non-native binaries), and env sanitization +
33
+ * TERMINAL_CWD. Both the legacy provider-module path (resolveCliSpawnPlan) and
34
+ * the spec/FSM path (FsmDriver.buildAdapterOpts) feed into this so the two
35
+ * spawn paths can never diverge.
36
+ */
37
+ export declare function resolveCliSpawnPlanFromParts(options: {
38
+ /** Raw command from the spec/provider (`binary` / `spawn.command`), or an
39
+ * operator-configured executable path override. */
40
+ command: string;
41
+ /** Base launch args declared by the spec/provider (`spawn_args` /
42
+ * `spawn.args`). */
43
+ baseArgs?: string[];
44
+ /** When true, always wrap the launch in a login shell. */
45
+ shell?: boolean;
46
+ /** Base env declared by the spec/provider (`env` / `spawn.env`). */
47
+ baseEnv?: Record<string, string>;
48
+ workingDir: string;
49
+ /** Per-launch extra args (e.g. resume session id) appended after baseArgs. */
50
+ extraArgs?: string[];
51
+ extraEnv?: Record<string, string>;
52
+ geometry?: CliSpawnGeometry;
53
+ }): CliSpawnPlan;
20
54
  export declare function buildCliLoginShellRetry(plan: Pick<CliSpawnPlan, 'binaryPath' | 'allArgs'>): {
21
55
  shellCmd: string;
22
56
  shellArgs: string[];
@@ -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,63 @@ export interface CliSessionStatus {
26
27
  message: string;
27
28
  buttons: string[];
28
29
  } | null;
30
+ /**
31
+ * Monotonic counter identifying which approval *entry* the current modal
32
+ * belongs to. Bumped by the FSM on every fresh waiting_approval entry.
33
+ * Consumers (e.g. auto-approval) use it to distinguish a genuinely new
34
+ * approval from the same approval re-observed across TUI paint flaps —
35
+ * two distinct approvals can carry identical message/button text, so the
36
+ * seq is the only reliable discriminator.
37
+ */
38
+ approvalEntrySeq?: number;
39
+ /**
40
+ * The approval entry seq that the engine's last resolveModal() handled. When
41
+ * `lastResolvedEntrySeq >= approvalEntrySeq` (and approvalEntrySeq > 0) it is positive
42
+ * evidence that the current/latest approval entry was resolved through ADHDev (auto-approve
43
+ * fire, dashboard / mesh_approve, or dev-cli-debug — all route through resolveModal). The
44
+ * completion finalization gate uses this to avoid confirming a waiting_approval→idle
45
+ * transition for which no resolution actually occurred (a false idle: the spec's text-based
46
+ * approval→idle rule tripped while the modal is still on screen).
47
+ */
48
+ lastResolvedEntrySeq?: number;
49
+ activeInteractivePrompt?: InteractivePrompt | null;
50
+ pendingOutboundCount?: number;
51
+ pendingOutboundMessages?: Array<{
52
+ id: string;
53
+ role: 'user';
54
+ content: string;
55
+ queuedAt: number;
56
+ source: string;
57
+ }>;
29
58
  errorMessage?: string;
30
59
  errorReason?: string;
60
+ providerSessionId?: string;
61
+ /**
62
+ * Spec/FSM adapters only (SpecCliAdapter): true once the driver has observed
63
+ * its first non-initial idle state — the prompt is genuinely drawn. The
64
+ * legacy ProviderCliAdapter never sets it (undefined). CliProviderInstance
65
+ * uses it to re-arm the queue-claim agent:ready on the first genuine ready,
66
+ * independent of the boot-time starting→idle one-shot (which is consumed too
67
+ * early for specs whose initial state already reports status 'idle', e.g.
68
+ * antigravity-cli — without the re-arm the worker never claims its queued
69
+ * task and the coordinator relaunch-loops).
70
+ */
71
+ fsmReadySeen?: boolean;
72
+ /**
73
+ * Timestamp (ms) of the most recent raw PTY output chunk. Advances on every
74
+ * byte the process emits, including tool/build output that produces no
75
+ * parsed assistant text. Liveness watchdogs use this to distinguish a real
76
+ * stall (no output at all) from an active turn whose assistant buffer is
77
+ * momentarily static while a tool runs.
78
+ */
79
+ lastOutputAt?: number;
80
+ /**
81
+ * Timestamp (ms) of the most recent *visible* terminal screen change.
82
+ * Stricter than lastOutputAt — only advances when the rendered screen
83
+ * content actually differs, so repeated keepalive bytes do not register as
84
+ * progress. Preferred liveness signal for the no-progress watchdog.
85
+ */
86
+ lastScreenChangeAt?: number;
31
87
  bufferState?: {
32
88
  responseBuffer?: {
33
89
  truncated: boolean;
@@ -59,6 +115,9 @@ export interface ParsedSession {
59
115
  buttons: string[];
60
116
  } | null;
61
117
  parsedStatus: string | null;
118
+ errorMessage?: string;
119
+ errorReason?: string;
120
+ providerSessionId?: string;
62
121
  transcriptAuthority?: 'provider' | 'daemon';
63
122
  coverage?: 'full' | 'tail' | 'current-turn';
64
123
  }
@@ -112,6 +171,10 @@ export interface CliScriptInput {
112
171
  rawBuffer: string;
113
172
  recentBuffer: string;
114
173
  screenText: string;
174
+ workspace?: string;
175
+ workingDir?: string;
176
+ providerSessionId?: string;
177
+ historySessionId?: string;
115
178
  screen: CliScreenSnapshot;
116
179
  bufferScreen: CliScreenSnapshot;
117
180
  recentScreen: CliScreenSnapshot;
@@ -121,6 +184,7 @@ export interface CliScriptInput {
121
184
  promptText?: string;
122
185
  settings?: Record<string, any>;
123
186
  args?: Record<string, any>;
187
+ spawnAt?: number;
124
188
  }
125
189
  export interface CliStatusInput {
126
190
  tail: string;
@@ -158,16 +222,26 @@ export interface CliProviderModule {
158
222
  binary: string;
159
223
  approvalKeys?: Record<number, string>;
160
224
  sendDelayMs?: number;
225
+ /** Wall-clock budget (ms) for a single provider script invocation. Default 50. Range 1..5000.
226
+ * Exceeding the budget records `timedOut: true` on the invocation trace and emits a
227
+ * throttled WARN — it does NOT abort the script (Node CJS can't interrupt sync code). */
228
+ scriptCallBudgetMs?: number;
161
229
  sendKey?: string;
162
230
  submitStrategy?: 'wait_for_echo' | 'immediate';
163
231
  /** Require the typed prompt to be visible on the PTY screen before sending Enter. */
164
232
  requirePromptEchoBeforeSubmit?: boolean;
165
233
  /** Allow sending another prompt while the CLI is still generating so users can intervene mid-turn. */
166
234
  allowInputDuringGeneration?: boolean;
235
+ /** When true, only transition to idle after the parsed transcript includes a final standard assistant message. */
236
+ requiresFinalAssistantBeforeIdle?: boolean;
237
+ /** When true, allow providers to augment stale snapshot data before parse. Reserved for future use. */
238
+ augmentStaleSnapshot?: boolean;
167
239
  /** When provider-owned, daemon treats provider parser output as canonical transcript authority. */
168
240
  transcriptAuthority?: 'provider' | 'daemon';
169
241
  /** Full context lets provider-owned parsers canonicalize retained history instead of daemon prefix stitching. */
170
242
  transcriptContext?: 'full' | 'tail';
243
+ /** v1 declarative tui block — used by CliScriptRunner to synthesize SDK helpers (declarativeDetectStatus, declarativeParseApproval). */
244
+ tui?: Record<string, unknown>;
171
245
  scripts?: CliScripts;
172
246
  spawn: {
173
247
  command: string;