@adhdev/daemon-core 0.9.82-rc.44 → 0.9.82-rc.441

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) 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 +15 -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 +60 -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 +142 -0
  54. package/dist/commands/mesh-coordinator.d.ts +85 -1
  55. package/dist/commands/router.d.ts +276 -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 +120 -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 +11 -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 +64 -14
  74. package/dist/index.js +50719 -20120
  75. package/dist/index.js.map +1 -1
  76. package/dist/index.mjs +50317 -19882
  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 +77 -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 +289 -0
  108. package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
  109. package/dist/mesh/mesh-reconcile-loop.d.ts +65 -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 +31 -1
  128. package/dist/providers/cli-provider-instance.d.ts +252 -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 +100 -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 +91 -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 +422 -0
  166. package/dist/providers/spec/fsm-evaluator.d.ts +76 -0
  167. package/dist/providers/spec/fsm-loader.d.ts +14 -0
  168. package/dist/providers/spec/fsm-types.d.ts +174 -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 +509 -13
  178. package/dist/runtime-defaults.d.ts +2 -0
  179. package/dist/sessions/registry.d.ts +6 -0
  180. package/dist/shared-types-extra.d.ts +2 -4
  181. package/dist/shared-types.d.ts +59 -2
  182. package/dist/status/normalize.d.ts +1 -1
  183. package/dist/status/normalize.js +1 -0
  184. package/dist/status/normalize.js.map +1 -1
  185. package/dist/status/normalize.mjs +1 -0
  186. package/dist/status/normalize.mjs.map +1 -1
  187. package/dist/status/reporter.d.ts +2 -0
  188. package/dist/status/snapshot.d.ts +26 -0
  189. package/dist/system/hash.d.ts +8 -0
  190. package/dist/system/load-better-sqlite3.d.ts +21 -0
  191. package/dist/types.d.ts +5 -0
  192. package/package.json +7 -3
  193. package/src/agent-stream/poller.ts +2 -3
  194. package/src/agent-stream/provider-adapter.ts +1 -1
  195. package/src/boot/daemon-lifecycle.ts +63 -12
  196. package/src/boot/process-hardening.ts +89 -0
  197. package/src/build-info.ts +73 -0
  198. package/src/chat/source-machine.ts +534 -0
  199. package/src/chat/source-resolver.ts +0 -0
  200. package/src/chat/subscription-updates.ts +20 -1
  201. package/src/cli-adapter-types.d.ts +3 -1
  202. package/src/cli-adapter-types.ts +68 -2
  203. package/src/cli-adapters/cli-script-runner.ts +421 -0
  204. package/src/cli-adapters/cli-state-engine.ts +1246 -0
  205. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  206. package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
  207. package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
  208. package/src/cli-adapters/provider-cli-parse.ts +19 -0
  209. package/src/cli-adapters/provider-cli-runtime.ts +56 -7
  210. package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
  211. package/src/cli-adapters/provider-cli-shared.ts +121 -11
  212. package/src/cli-adapters/pty-transport.ts +2 -1
  213. package/src/cli-adapters/pty-write-chunking.ts +106 -0
  214. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  215. package/src/cli-adapters/resolve-executable.ts +204 -0
  216. package/src/cli-adapters/session-host-transport.ts +2 -1
  217. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
  218. package/src/cli-adapters/terminal-backends/types.ts +10 -3
  219. package/src/cli-adapters/terminal-screen.ts +16 -81
  220. package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
  221. package/src/commands/chat-commands-debug-bundle.ts +398 -0
  222. package/src/commands/chat-commands-read.ts +2447 -0
  223. package/src/commands/chat-commands-scope.ts +54 -0
  224. package/src/commands/chat-commands-shared.ts +114 -0
  225. package/src/commands/chat-commands-write.ts +891 -0
  226. package/src/commands/chat-commands.ts +19 -1841
  227. package/src/commands/cli-manager.ts +572 -27
  228. package/src/commands/handler.ts +841 -2
  229. package/src/commands/high-family/index.ts +28 -0
  230. package/src/commands/high-family/mesh-coordinator-launch.ts +678 -0
  231. package/src/commands/high-family/mesh-events.ts +80 -0
  232. package/src/commands/high-family/mesh-status.ts +714 -0
  233. package/src/commands/high-family/types.ts +76 -0
  234. package/src/commands/low-family/coordinator-prompt.ts +72 -0
  235. package/src/commands/low-family/daemon-lifecycle.ts +107 -0
  236. package/src/commands/low-family/diagnostics.ts +57 -0
  237. package/src/commands/low-family/index.ts +37 -0
  238. package/src/commands/low-family/mesh-ledger.ts +62 -0
  239. package/src/commands/low-family/mesh-node-logs.ts +87 -0
  240. package/src/commands/low-family/notification.ts +116 -0
  241. package/src/commands/low-family/refine-config.ts +106 -0
  242. package/src/commands/low-family/session-host.ts +274 -0
  243. package/src/commands/low-family/spec-providerdev.ts +217 -0
  244. package/src/commands/low-family/status-meta.ts +112 -0
  245. package/src/commands/low-family/types.ts +39 -0
  246. package/src/commands/med-family/cli-agent.ts +238 -0
  247. package/src/commands/med-family/fast-forward.ts +230 -0
  248. package/src/commands/med-family/ide.ts +163 -0
  249. package/src/commands/med-family/index.ts +37 -0
  250. package/src/commands/med-family/mesh-crud.ts +1242 -0
  251. package/src/commands/med-family/mesh-host-pairing.ts +234 -0
  252. package/src/commands/med-family/mesh-queue.ts +167 -0
  253. package/src/commands/med-family/mesh-restart.ts +92 -0
  254. package/src/commands/med-family/types.ts +143 -0
  255. package/src/commands/mesh-coordinator.ts +334 -124
  256. package/src/commands/router.ts +2846 -3484
  257. package/src/commands/stream-commands.ts +8 -0
  258. package/src/commands/upgrade-helper.ts +310 -45
  259. package/src/config/chat-history.ts +493 -24
  260. package/src/config/config.ts +12 -0
  261. package/src/config/mesh-config.ts +593 -22
  262. package/src/config/mesh-json-config.ts +376 -0
  263. package/src/config/recent-activity.ts +8 -2
  264. package/src/config/repo-settings.ts +111 -0
  265. package/src/daemon/dev-auto-implement.ts +3 -2
  266. package/src/daemon/dev-cli-debug.ts +10 -1
  267. package/src/daemon/dev-server.ts +0 -541
  268. package/src/detection/cli-detector.ts +28 -9
  269. package/src/detection/ide-detector.ts +55 -16
  270. package/src/detection/win32-ide-version.ts +106 -0
  271. package/src/git/change-impact-config.ts +354 -0
  272. package/src/git/git-commands.ts +59 -15
  273. package/src/git/git-diff.ts +81 -11
  274. package/src/git/git-executor.ts +12 -0
  275. package/src/git/git-status.ts +767 -48
  276. package/src/git/git-types.ts +14 -62
  277. package/src/git/git-worktree.ts +261 -4
  278. package/src/git/index.ts +17 -0
  279. package/src/index.ts +196 -12
  280. package/src/installer.d.ts +1 -1
  281. package/src/installer.ts +8 -6
  282. package/src/ipc/local-ipc-server.ts +278 -0
  283. package/src/launch.d.ts +1 -1
  284. package/src/launch.ts +37 -28
  285. package/src/logging/async-batch-writer.ts +55 -0
  286. package/src/logging/command-log.ts +7 -5
  287. package/src/logging/log-redactor.ts +100 -0
  288. package/src/logging/log-tail-reader.ts +341 -0
  289. package/src/logging/logger.ts +14 -7
  290. package/src/mesh/contracts.ts +338 -0
  291. package/src/mesh/coordinator-prompt.ts +415 -34
  292. package/src/mesh/coordinator-registry.ts +121 -0
  293. package/src/mesh/mesh-active-work.ts +645 -0
  294. package/src/mesh/mesh-clone-grace.ts +68 -0
  295. package/src/mesh/mesh-coordinator-config.ts +97 -0
  296. package/src/mesh/mesh-delivery-policy.ts +315 -0
  297. package/src/mesh/mesh-event-classify.ts +51 -0
  298. package/src/mesh/mesh-event-forwarding.ts +1897 -0
  299. package/src/mesh/mesh-event-trace.ts +67 -0
  300. package/src/mesh/mesh-events-coordinator.ts +32 -0
  301. package/src/mesh/mesh-events-pending.ts +656 -0
  302. package/src/mesh/mesh-events-stale.ts +389 -0
  303. package/src/mesh/mesh-events-utils.ts +443 -0
  304. package/src/mesh/mesh-events.ts +33 -1035
  305. package/src/mesh/mesh-fast-forward.ts +843 -0
  306. package/src/mesh/mesh-host-ownership.ts +111 -0
  307. package/src/mesh/mesh-init.ts +350 -0
  308. package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
  309. package/src/mesh/mesh-ledger.ts +656 -102
  310. package/src/mesh/mesh-magi-status.ts +223 -0
  311. package/src/mesh/mesh-missions.ts +449 -0
  312. package/src/mesh/mesh-node-identity.ts +1887 -0
  313. package/src/mesh/mesh-queue-assignment.ts +1924 -0
  314. package/src/mesh/mesh-reconcile-loop.ts +1997 -0
  315. package/src/mesh/mesh-refine-batch.ts +205 -0
  316. package/src/mesh/mesh-refine-gates.ts +1673 -0
  317. package/src/mesh/mesh-refine-status.ts +231 -0
  318. package/src/mesh/mesh-review-inbox.ts +307 -0
  319. package/src/mesh/mesh-routing.ts +291 -0
  320. package/src/mesh/mesh-runtime-store.ts +1853 -0
  321. package/src/mesh/mesh-scheduling-runtime.ts +198 -0
  322. package/src/mesh/mesh-task-inflight.ts +70 -0
  323. package/src/mesh/mesh-task-stats.ts +161 -0
  324. package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
  325. package/src/mesh/mesh-warmup-deadline.ts +152 -0
  326. package/src/mesh/mesh-work-queue.ts +1254 -141
  327. package/src/mesh/preview-freshness.ts +118 -0
  328. package/src/mesh/refine-config.ts +423 -0
  329. package/src/mesh/worktree-bootstrap-config.ts +450 -0
  330. package/src/providers/acp-provider-instance.ts +43 -10
  331. package/src/providers/approval-utils.d.ts +5 -0
  332. package/src/providers/approval-utils.ts +57 -5
  333. package/src/providers/chat-message-normalization.ts +92 -4
  334. package/src/providers/cli-provider-instance.ts +2001 -106
  335. package/src/providers/contracts.d.ts +55 -0
  336. package/src/providers/contracts.ts +160 -6
  337. package/src/providers/extension-provider-instance.ts +12 -7
  338. package/src/providers/external-sources.ts +218 -0
  339. package/src/providers/ide-provider-instance.ts +35 -12
  340. package/src/providers/manual-attendance.ts +85 -0
  341. package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
  342. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  343. package/src/providers/native-history/codex-cli-transcript.ts +479 -0
  344. package/src/providers/native-history/constants.ts +19 -0
  345. package/src/providers/native-history/dispatcher.ts +345 -0
  346. package/src/providers/native-history/hermes-cli-transcript.ts +260 -0
  347. package/src/providers/native-history/index.ts +30 -0
  348. package/src/providers/provider-instance-manager.ts +71 -0
  349. package/src/providers/provider-instance.ts +19 -1
  350. package/src/providers/provider-loader.ts +668 -50
  351. package/src/providers/provider-schema.ts +87 -14
  352. package/src/providers/provider-trust.ts +114 -0
  353. package/src/providers/read-chat-contract.ts +76 -16
  354. package/src/providers/sdk/README.md +49 -0
  355. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  356. package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
  357. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  358. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
  359. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  360. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  361. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  362. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  363. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  364. package/src/providers/sdk/v1/index.ts +152 -0
  365. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  366. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  367. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  368. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
  369. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  370. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  371. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  372. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  373. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  374. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  375. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  376. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  377. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  378. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  379. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  380. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  381. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  382. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  383. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  384. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  385. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  386. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  387. package/src/providers/sdk/v1/validators/index.ts +19 -0
  388. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  389. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  390. package/src/providers/spec/adapter.ts +235 -0
  391. package/src/providers/spec/cli-adapter.ts +1056 -0
  392. package/src/providers/spec/evaluator.ts +407 -0
  393. package/src/providers/spec/fsm-driver.ts +1410 -0
  394. package/src/providers/spec/fsm-evaluator.ts +272 -0
  395. package/src/providers/spec/fsm-loader.ts +120 -0
  396. package/src/providers/spec/fsm-types.ts +273 -0
  397. package/src/providers/spec/native-history-executor.ts +1143 -0
  398. package/src/providers/spec/pre-launch-trust.ts +104 -0
  399. package/src/providers/spec/route.ts +51 -0
  400. package/src/providers/spec/types.ts +262 -0
  401. package/src/providers/status-monitor.d.ts +7 -7
  402. package/src/providers/status-monitor.ts +37 -22
  403. package/src/providers/transcript-v2.ts +567 -0
  404. package/src/providers/types/interactive-prompt.ts +536 -0
  405. package/src/providers/version-archive.ts +64 -24
  406. package/src/providers/working-dir.ts +23 -0
  407. package/src/repo-mesh-types.ts +748 -14
  408. package/src/runtime-defaults.ts +39 -0
  409. package/src/sessions/registry.ts +6 -0
  410. package/src/shared-types-extra.ts +2 -4
  411. package/src/shared-types.d.ts +8 -0
  412. package/src/shared-types.ts +64 -1
  413. package/src/status/builders.ts +26 -6
  414. package/src/status/normalize.ts +2 -0
  415. package/src/status/reporter.ts +19 -1
  416. package/src/status/snapshot.ts +95 -26
  417. package/src/system/hash.ts +23 -0
  418. package/src/system/host-memory.ts +29 -12
  419. package/src/system/load-better-sqlite3.ts +68 -0
  420. package/src/types.ts +5 -0
  421. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  422. package/dist/mesh/mesh-sync.d.ts +0 -53
  423. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  424. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  425. package/src/mesh/mesh-sync.ts +0 -111
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @file README-design.ts
3
+ * @description Phase 5 Sandbox Design Document
4
+ *
5
+ * This file is a design document written as TypeScript JSDoc/comments.
6
+ * It is NOT executable — it exists to communicate the sandboxing architecture
7
+ * to future implementors, reviewers, and delegated agents.
8
+ *
9
+ * =============================================================================
10
+ * CONTEXT: EXTENDED-LEGACY PROVIDER SCRIPT EXECUTION (PRE-PHASE-5)
11
+ * =============================================================================
12
+ *
13
+ * "Extended-legacy" providers (e.g. hermes-cli, and any provider using the
14
+ * `compatibility` script format) supply JavaScript override scripts that the
15
+ * daemon loads and calls directly via Node.js `require()`:
16
+ *
17
+ * provider-loader.ts → require(scriptsPath) // load
18
+ * cli-script-runner.ts → this.invoke(fn, input) // call at runtime
19
+ *
20
+ * The loaded module exports plain JS functions (detectStatus, parseApproval,
21
+ * parseSession, etc.). These functions run **in the daemon process with full
22
+ * Node.js access** — no memory cap, no CPU limit, full `require`, `fs`, `net`.
23
+ *
24
+ * The `extended-legacy` label refers to providers that still use the JS-function
25
+ * override layer rather than the pure-declarative `tui` manifest block. The
26
+ * claude-cli provider (scripts/v1/detect_status.js) is the canonical example of
27
+ * this pattern: it delegates to `sdk.declarativeDetectStatus` for the raw verdict
28
+ * but adds a stateful generating-hold on top that cannot be expressed declaratively.
29
+ *
30
+ * =============================================================================
31
+ * PHASE 5 GOAL: isolated-vm SANDBOXING
32
+ * =============================================================================
33
+ *
34
+ * Phase 5 wraps each script call in an isolated-vm context so that:
35
+ *
36
+ * 1. CPU time is capped per call (default 50 ms hard limit).
37
+ * 2. Memory is capped per Isolate (default 32 MB heap limit).
38
+ * 3. The script cannot reach back into the daemon process — no `require`,
39
+ * no `import`, no Node.js built-ins (fs, net, child_process, etc.).
40
+ * 4. Execution errors and timeouts are caught and surfaced cleanly instead
41
+ * of propagating exceptions that could crash the daemon parse loop.
42
+ *
43
+ * =============================================================================
44
+ * SANDBOX EXECUTION MODEL
45
+ * =============================================================================
46
+ *
47
+ * Each call to SandboxedScriptRunner.run() creates a **fresh evaluation context**
48
+ * inside the Isolate. Persistent state across calls (e.g. the `state` object in
49
+ * detectStatus) is cloned in/out of the sandbox via structured serialization.
50
+ *
51
+ * Flow per call:
52
+ *
53
+ * 1. Serialize `context` (input + state) into a plain JSON-safe value.
54
+ * 2. Create a new isolated-vm Context from the shared Isolate.
55
+ * 3. Inject allowed globals (see below) into the context.
56
+ * 4. Compile + run the script string with `cpuTimeLimitMs` enforced.
57
+ * 5. Deserialize and return the result.
58
+ * 6. Discard the Context (short-lived).
59
+ *
60
+ * The Isolate itself is reused across calls so that the V8 JIT and snapshot
61
+ * warm-up cost is paid once per runner instance, not per call.
62
+ *
63
+ * Memory limit (32 MB) applies to the Isolate heap. If a script allocates
64
+ * beyond the limit, isolated-vm throws RangeError: Array buffer allocation
65
+ * failed (or similar). The runner catches this and returns an error signal.
66
+ *
67
+ * CPU time limit (50 ms) is a wall-clock limit on the script execution tick
68
+ * measured by isolated-vm's internal timer. Async operations inside the script
69
+ * are not permitted (the context is synchronous-only).
70
+ *
71
+ * =============================================================================
72
+ * ALLOWED API SURFACE (what scripts CAN use)
73
+ * =============================================================================
74
+ *
75
+ * The following globals are explicitly injected into the sandbox context:
76
+ *
77
+ * - `input` — the calling frame's input object (CliStatusInput, etc.)
78
+ * - `sdk` — a controlled facade object; see sdk shape below
79
+ * - `console.log` — redirected to daemon LOG.debug; console.error/warn also
80
+ * allowed but routed to LOG.warn
81
+ * - `JSON` — standard JSON object (parse + stringify)
82
+ * - `Math` — standard Math object
83
+ * - `Date` — Date constructor (read-only; no timers)
84
+ * - `String`, `Number`, `Boolean`, `Array`, `Object`, `RegExp`
85
+ * — standard constructors
86
+ * - `undefined`, `null`, `NaN`, `Infinity`, `parseInt`, `parseFloat`,
87
+ * `isNaN`, `isFinite`, `encodeURIComponent`, `decodeURIComponent`
88
+ *
89
+ * sdk shape injected into the sandbox:
90
+ *
91
+ * sdk.declarativeDetectStatus(input) → string
92
+ * Calls the daemon-built declarative verdict function. The implementation
93
+ * serializes the call, executes the declarative function in daemon-land,
94
+ * and returns the result string into the sandbox.
95
+ *
96
+ * sdk.tailHasPrimitive(input, primitive) → boolean
97
+ * Returns true if the screen tail contains the named TUI primitive token.
98
+ *
99
+ * sdk.state (object | null)
100
+ * The per-session state object returned by createState(). Mutable inside
101
+ * the script; mutations are copied back after the call completes.
102
+ *
103
+ * =============================================================================
104
+ * FORBIDDEN API SURFACE (what scripts CANNOT use)
105
+ * =============================================================================
106
+ *
107
+ * The sandbox provides NO access to:
108
+ *
109
+ * - `require` / `import` / `module` / `exports` / `__dirname` / `__filename`
110
+ * - `process` (no env, no exit, no stdio)
111
+ * - `fs`, `path`, `os`, `net`, `http`, `https`, `child_process`, `worker_threads`
112
+ * - `setTimeout`, `setInterval`, `setImmediate`, `clearTimeout`, `clearInterval`
113
+ * (async scheduling is blocked; scripts must be synchronous)
114
+ * - `Promise`, `async/await` (not injected; async resolution is disallowed)
115
+ * - `WebAssembly` (not injected)
116
+ * - `Buffer`, `TextEncoder`, `TextDecoder` (not injected by default; can be
117
+ * added to allowedGlobals if a specific script family requires them)
118
+ * - Any daemon-internal module, class, or singleton
119
+ *
120
+ * =============================================================================
121
+ * MIGRATION PATH FOR HERMES-CLI (when Phase 5 lands)
122
+ * =============================================================================
123
+ *
124
+ * hermes-cli (adhdev-providers/cli/hermes-cli) uses the `compatibility` script
125
+ * format with `defaultScriptDir: "scripts/1.0"`. Its scripts are loaded via
126
+ * require() in provider-loader.ts → loadScriptsFromDir() and called via
127
+ * CliScriptRunner.invoke().
128
+ *
129
+ * Phase 5 migration steps:
130
+ *
131
+ * 1. The ProviderLoader detects at load time whether a provider's scriptDir
132
+ * uses the extended-legacy JS override layer (i.e. scripts.js exports
133
+ * function(s) rather than a pure-declarative object).
134
+ *
135
+ * 2. For extended-legacy providers, instead of storing the raw Function
136
+ * references in `normalizedProvider.scripts`, the loader stores the
137
+ * **script source strings** alongside a flag `sandboxed: true`.
138
+ *
139
+ * 3. CliScriptRunner is extended with an optional SandboxedScriptRunner
140
+ * member. When present, invoke() routes script calls through the sandbox
141
+ * instead of calling the function directly.
142
+ *
143
+ * 4. hermes-cli's scripts/1.0/scripts.js is updated (or a scripts/2.0/ dir
144
+ * created) with source strings compatible with the allowed API surface.
145
+ * In particular:
146
+ * - `require` calls must be removed.
147
+ * - Any direct Node.js module access must be replaced with sdk equivalents.
148
+ *
149
+ * 5. The daemon's dev server (port 19280) exposes a /sandbox/test endpoint
150
+ * that accepts a script source string + input and returns the sandboxed
151
+ * result — useful for provider authors to iterate without restarting.
152
+ *
153
+ * 6. Fallback: providers that have not been migrated to the sandbox API still
154
+ * run via DirectEvalRunner (see script-runner.ts) — unsafe but compatible,
155
+ * with a visible deprecation warning in the daemon log.
156
+ *
157
+ * =============================================================================
158
+ * SandboxedScriptRunner INTERFACE (to be satisfied by the Phase 5 implementation)
159
+ * =============================================================================
160
+ *
161
+ * The interface defined in script-runner.ts must be satisfied by two
162
+ * implementations:
163
+ *
164
+ * DirectEvalRunner — no-op stub; runs script via eval() in a try/catch.
165
+ * Used when isolated-vm is not installed or when
166
+ * sandboxing is explicitly disabled for development.
167
+ * Logs a warning on first use.
168
+ * Safe to use in tests (no native dependency).
169
+ *
170
+ * IsolatedVmRunner — full implementation using the `isolated-vm` npm package.
171
+ * Created by createScriptRunner() when isolated-vm is
172
+ * importable. Not committed to the OSS package — loaded
173
+ * dynamically at runtime.
174
+ *
175
+ * Factory function createScriptRunner(options?) returns:
176
+ * - IsolatedVmRunner if `require('isolated-vm')` succeeds
177
+ * - DirectEvalRunner otherwise, with a LOG.warn() deprecation notice
178
+ *
179
+ * =============================================================================
180
+ * FILE LAYOUT (Phase 5 deliverables under this directory)
181
+ * =============================================================================
182
+ *
183
+ * sandbox/
184
+ * README-design.ts ← this file (design document)
185
+ * script-runner.ts ← SandboxedScriptRunner interface + DirectEvalRunner stub
186
+ * isolated-vm-runner.ts ← IsolatedVmRunner (Phase 5 full impl, not yet committed)
187
+ *
188
+ * Related files that will be touched in Phase 5:
189
+ * cli-adapters/cli-script-runner.ts ← add optional SandboxedScriptRunner member
190
+ * providers/provider-loader.ts ← detect extended-legacy, store source strings
191
+ * providers/cli-provider-instance.ts ← TODO comment (already added in Phase 4 scaffold)
192
+ */
193
+ export {};
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Provider script require() whitelist.
3
+ *
4
+ * Provider scripts (detect_status.js, parse_session.js, the override layer
5
+ * the v1 contract exposes, plus their _shared helpers) execute in the
6
+ * daemon process with full Node access — see sandbox/README-design.ts for
7
+ * the long story. Full isolation via isolated-vm has a real perf cost and
8
+ * a real marshalling-complexity cost, so we instead constrain the most
9
+ * dangerous attack surface: what a provider script can `require()`.
10
+ *
11
+ * The hook wraps Node's CJS `Module._load` and, when the calling file is
12
+ * inside a directory that this loader has registered as a provider script
13
+ * root, blocks every module that isn't on the allowlist below. Relative
14
+ * paths are allowed but only when they resolve back inside the same
15
+ * provider root — providers can require their sibling helpers but they
16
+ * can't reach `../../../../etc/passwd` through a clever segment.
17
+ *
18
+ * The hook installs exactly once per process; subsequent `register()` /
19
+ * `unregister()` calls just adjust the set of roots that are gated.
20
+ *
21
+ * Performance: the hook adds one `path.normalize` + one Set lookup to
22
+ * every require call coming from a registered root. At the measured
23
+ * baseline (~6 script invocations / second / session, each making
24
+ * ≤1 require during initial module evaluation, zero during steady-state
25
+ * calls), this is unmeasurable.
26
+ */
27
+ /**
28
+ * Wrap `globalThis.process` methods so calls from provider script stacks
29
+ * throw, while every other caller (daemon-core itself, npm deps, the test
30
+ * harness) goes through untouched.
31
+ *
32
+ * Trade-off: this is a stack-introspection check on every call to the
33
+ * affected methods. The methods in question (exit/kill/abort/binding/dlopen)
34
+ * are not hot paths — they're either never called or called once at
35
+ * shutdown. The cost is negligible.
36
+ *
37
+ * Alternative considered: wrap only the module-scope `process` binding via
38
+ * Module._extensions. Node's ESM/CJS semantics make this unreliable across
39
+ * dynamic-require paths. Stack introspection is uglier but correct.
40
+ *
41
+ * Caveat: a provider script that grabs `globalThis.process.exit` once and
42
+ * passes the reference to a non-provider callback can still escape — the
43
+ * stack at the actual call site no longer goes through provider code. We
44
+ * accept this gap; the threat model assumes scripts are not actively
45
+ * trying to launder calls through arbitrary daemon callbacks, just that
46
+ * a naive `process.exit(0)` should not silently terminate the daemon.
47
+ */
48
+ export declare function installProviderProcessShim(): void;
49
+ /** For tests — restore the original process.* methods. */
50
+ export declare function _uninstallProviderProcessShimForTest(): void;
51
+ /**
52
+ * Register a directory whose `.js` files should be subject to the
53
+ * whitelist when they call require(). Idempotent — repeated registration
54
+ * of the same root is a no-op. Pass the same string back to
55
+ * `unregisterProviderScriptRoot` to remove it.
56
+ */
57
+ export declare function registerProviderScriptRoot(absRoot: string): void;
58
+ /** Inverse of registerProviderScriptRoot. */
59
+ export declare function unregisterProviderScriptRoot(absRoot: string): void;
60
+ /** For tests — drop every registration and reset internal state. */
61
+ export declare function _resetProviderScriptRoots(): void;
62
+ /** For tests — peek at the gated root list. */
63
+ export declare function _getRegisteredRoots(): readonly string[];
64
+ /**
65
+ * Public re-exports — registry consumers want to know what's on the
66
+ * allowlist without parsing this file.
67
+ */
68
+ export declare const PROVIDER_REQUIRE_POLICY: Readonly<{
69
+ safeStdlib: string[];
70
+ shimmedStdlib: string[];
71
+ fsAllowedMembers: ("existsSync" | "statSync" | "lstatSync" | "realpathSync" | "readFileSync" | "readdirSync" | "readlinkSync" | "accessSync" | "constants" | "exists" | "stat" | "lstat" | "realpath" | "readFile" | "readdir" | "readlink" | "access" | "promises")[];
72
+ childProcessAllowedMembers: string[];
73
+ processDeniedMembers: string[];
74
+ }>;
@@ -0,0 +1,98 @@
1
+ /**
2
+ * script-runner.ts — SandboxedScriptRunner interface + DirectEvalRunner stub
3
+ *
4
+ * Phase 5 scaffold: defines the interface that the isolated-vm implementation
5
+ * will satisfy, and provides a DirectEvalRunner that keeps providers working
6
+ * without the native isolated-vm package.
7
+ *
8
+ * See README-design.ts for the full design rationale.
9
+ */
10
+ /** Options controlling the resource limits applied to a sandboxed script call. */
11
+ export interface SandboxOptions {
12
+ /** Maximum CPU time (wall-clock) in milliseconds before the script is killed. Default: 50. */
13
+ cpuTimeLimitMs: number;
14
+ /** Maximum V8 heap size in megabytes for the Isolate. Default: 32. */
15
+ memoryLimitMb: number;
16
+ /**
17
+ * Whitelist of global names the script may access.
18
+ * The full allowed surface is documented in README-design.ts.
19
+ * Default: ['console', 'JSON', 'Math', 'Date', 'String', 'Number', 'Boolean',
20
+ * 'Array', 'Object', 'RegExp']
21
+ */
22
+ allowedGlobals: string[];
23
+ }
24
+ /** Default resource limits applied when no options are supplied. */
25
+ export declare const DEFAULT_SANDBOX_OPTIONS: SandboxOptions;
26
+ /**
27
+ * Contract for sandboxed script execution.
28
+ *
29
+ * Implementations:
30
+ * - DirectEvalRunner — no-op stub; uses eval() with a try/catch (unsafe, no limits).
31
+ * - IsolatedVmRunner — Phase 5 full implementation using the `isolated-vm` package.
32
+ *
33
+ * Usage:
34
+ * const runner = createScriptRunner({ cpuTimeLimitMs: 50, memoryLimitMb: 32 });
35
+ * const result = await runner.run(scriptSource, { input, sdk });
36
+ * runner.dispose();
37
+ */
38
+ export interface SandboxedScriptRunner {
39
+ /**
40
+ * Execute `script` synchronously inside a sandboxed context.
41
+ *
42
+ * @param script JavaScript source string. The script body should
43
+ * evaluate to the desired return value (the last expression
44
+ * is returned, module.exports is NOT consulted).
45
+ * Example: `"input.tail.includes('✓') ? 'idle' : 'generating'"`
46
+ *
47
+ * @param context Plain key/value pairs injected as globals inside the
48
+ * sandbox. All values must be JSON-serializable.
49
+ * Typically: `{ input: <CliStatusInput>, sdk: <sdk facade> }`
50
+ *
51
+ * @param options Optional per-call overrides for resource limits.
52
+ * Merged with the options supplied to createScriptRunner().
53
+ *
54
+ * @returns The value produced by the script (JSON-deserialized from
55
+ * the sandbox). May be `unknown` — callers must validate.
56
+ *
57
+ * @throws Re-throws if the script contains a syntax error.
58
+ * Returns `undefined` (via rejection) on timeout or OOM.
59
+ */
60
+ run(script: string, context: Record<string, unknown>, options?: Partial<SandboxOptions>): Promise<unknown>;
61
+ /**
62
+ * Release all resources held by this runner (Isolate, Contexts, etc.).
63
+ * After dispose(), calling run() has undefined behavior.
64
+ */
65
+ dispose(): void;
66
+ }
67
+ /**
68
+ * No-op stub used when isolated-vm is not available (graceful degradation).
69
+ *
70
+ * Falls back to direct `eval()` inside a try/catch — there are no CPU or
71
+ * memory limits. A warning is logged on the first run() call to make the
72
+ * fallback visible in daemon logs.
73
+ *
74
+ * This implementation is suitable for:
75
+ * - Development environments where isolated-vm is not installed.
76
+ * - Unit tests (no native dependency required).
77
+ * - Graceful fallback for existing extended-legacy providers while Phase 5
78
+ * is being rolled out.
79
+ *
80
+ * NOT suitable for production use with untrusted script sources.
81
+ */
82
+ export declare class DirectEvalRunner implements SandboxedScriptRunner {
83
+ private warned;
84
+ private readonly defaultOptions;
85
+ constructor(options?: Partial<SandboxOptions>);
86
+ run(script: string, context: Record<string, unknown>, _options?: Partial<SandboxOptions>): Promise<unknown>;
87
+ dispose(): void;
88
+ }
89
+ /**
90
+ * Factory: returns IsolatedVmRunner if isolated-vm is installed, else DirectEvalRunner.
91
+ *
92
+ * Logs a warning when falling back to DirectEvalRunner so the operator is aware
93
+ * that sandboxing is inactive.
94
+ *
95
+ * @param options Resource limit defaults applied to every run() call unless
96
+ * overridden at the call site. Merged with DEFAULT_SANDBOX_OPTIONS.
97
+ */
98
+ export declare function createScriptRunner(options?: Partial<SandboxOptions>): SandboxedScriptRunner;
@@ -0,0 +1,277 @@
1
+ /**
2
+ * CLI provider types — v1.
3
+ *
4
+ * Mirrors the contract documented in
5
+ * adhdev-providers/docs/provider-contract/cli/v1.md.
6
+ *
7
+ * Extracted at build time into the Apache 2.0 npm package
8
+ * `@adhdev/provider-types`.
9
+ */
10
+ import type { SettingsDef, CapabilitiesDef, SpawnDef, TimeoutsDef, ResumeDef, MeshCoordinatorDef, CompatibilityEntryDef, ControlDef, ProviderLifecycleStatus } from '../common/index.js';
11
+ export interface CliScreenLine {
12
+ text: string;
13
+ /** Number of visible columns the line occupies. */
14
+ width: number;
15
+ }
16
+ export interface CliScreenSnapshot {
17
+ text: string;
18
+ lineCount: number;
19
+ lines: CliScreenLine[];
20
+ nonEmptyLines: CliScreenLine[];
21
+ firstNonEmptyLineIndex: number;
22
+ lastNonEmptyLineIndex: number;
23
+ firstNonEmptyLine: CliScreenLine | null;
24
+ lastNonEmptyLine: CliScreenLine | null;
25
+ promptLineIndex: number;
26
+ promptLine: CliScreenLine | null;
27
+ linesAbovePrompt: CliScreenLine[];
28
+ linesBelowPrompt: CliScreenLine[];
29
+ }
30
+ export type CliChatRole = 'user' | 'assistant' | 'system' | 'tool';
31
+ export type CliChatKind = 'standard' | 'tool' | 'thinking' | 'system';
32
+ export type CliBubbleState = 'visible' | 'collapsed' | 'hidden';
33
+ export interface CliChatMessage {
34
+ role: CliChatRole;
35
+ /** Plain string is the common case; rich content (arrays / objects) is permitted but parsing differs by category. */
36
+ content: string | unknown;
37
+ timestamp?: number;
38
+ receivedAt?: number;
39
+ kind?: CliChatKind | string;
40
+ /** Stable id from the agent's native history when available. */
41
+ id?: string;
42
+ /** Display index, can drift. Prefer `providerUnitKey` for stable identity. */
43
+ index?: number;
44
+ /**
45
+ * Stable per-message identity used by ChatSourceMachine to compare native
46
+ * vs PTY transcripts. When the provider supports native history, this
47
+ * should be derivable from the on-disk session-id + turn-number.
48
+ */
49
+ providerUnitKey?: string;
50
+ bubbleId?: string;
51
+ bubbleState?: CliBubbleState;
52
+ senderName?: string;
53
+ meta?: Record<string, unknown>;
54
+ /** Provider-specific extensions are permitted; daemon ignores unknown keys. */
55
+ [extra: string]: unknown;
56
+ }
57
+ export interface CliApprovalModal {
58
+ message: string;
59
+ /** Raw button labels as the user sees them. Do not rewrite. */
60
+ buttons: string[];
61
+ }
62
+ /**
63
+ * Provided to `parseSession` and `parseOutput`. The richest input shape.
64
+ */
65
+ export interface CliScriptInput {
66
+ /** Accumulated PTY output, ANSI cleaned. */
67
+ buffer: string;
68
+ /** Raw PTY bytes including ANSI sequences. */
69
+ rawBuffer: string;
70
+ /** Last ~1000 chars of buffer. */
71
+ recentBuffer: string;
72
+ /** The terminal screen as rendered by ghostty/xterm. */
73
+ screenText: string;
74
+ workspace?: string;
75
+ /** Same as workspace; legacy alias. */
76
+ workingDir?: string;
77
+ /** Last known provider session id. May be empty. */
78
+ providerSessionId?: string;
79
+ /** Alias used for some native-history flows. */
80
+ historySessionId?: string;
81
+ screen: CliScreenSnapshot;
82
+ bufferScreen: CliScreenSnapshot;
83
+ recentScreen: CliScreenSnapshot;
84
+ /** Accumulated from previous parse calls. */
85
+ messages: CliChatMessage[];
86
+ /** Current in-flight assistant text. */
87
+ partialResponse: string;
88
+ isWaitingForResponse?: boolean;
89
+ /** The user's prompt for the active turn. */
90
+ promptText?: string;
91
+ /** Provider settings from ~/.adhdev/config.json. */
92
+ settings?: Record<string, unknown>;
93
+ /** Command-specific args (e.g. handler invocation parameters). */
94
+ args?: Record<string, unknown>;
95
+ /** ms timestamp of process spawn. Useful for native rollover guards. */
96
+ spawnAt?: number;
97
+ }
98
+ /**
99
+ * Provided to `detectStatus`. Trimmed for hot-path performance.
100
+ */
101
+ export interface CliStatusInput {
102
+ tail: string;
103
+ screenText?: string;
104
+ rawBuffer?: string;
105
+ isWaitingForResponse?: boolean;
106
+ screen: CliScreenSnapshot;
107
+ tailScreen: CliScreenSnapshot;
108
+ }
109
+ /**
110
+ * Provided to `parseApproval`.
111
+ */
112
+ export interface CliApprovalInput {
113
+ buffer: string;
114
+ screenText?: string;
115
+ rawBuffer?: string;
116
+ tail: string;
117
+ screen: CliScreenSnapshot;
118
+ bufferScreen: CliScreenSnapshot;
119
+ tailScreen: CliScreenSnapshot;
120
+ }
121
+ export type CliStatus = 'idle' | 'generating' | 'waiting_approval' | 'starting' | 'error';
122
+ export type CliTranscriptAuthority = 'provider' | 'daemon';
123
+ export type CliTranscriptCoverage = 'full' | 'tail' | 'current-turn';
124
+ export interface CliParsedSession {
125
+ status: CliStatus;
126
+ messages: CliChatMessage[];
127
+ modal: CliApprovalModal | null;
128
+ parsedStatus?: string | null;
129
+ errorMessage?: string;
130
+ errorReason?: string;
131
+ providerSessionId?: string;
132
+ transcriptAuthority?: CliTranscriptAuthority;
133
+ coverage?: CliTranscriptCoverage;
134
+ }
135
+ export interface CliReadChatPayload {
136
+ id: 'cli_session' | string;
137
+ status: CliStatus;
138
+ title: string;
139
+ messages: CliChatMessage[];
140
+ activeModal: CliApprovalModal | null;
141
+ providerSessionId?: string;
142
+ transcriptAuthority?: CliTranscriptAuthority;
143
+ coverage?: CliTranscriptCoverage;
144
+ controlValues?: Record<string, unknown>;
145
+ }
146
+ export type CliCreateStateFn<S = Record<string, unknown>> = () => S;
147
+ export type CliParseSessionFn<S = unknown> = (state: S | undefined, input: CliScriptInput) => CliParsedSession;
148
+ export type CliDetectStatusFn = (input: CliStatusInput) => CliStatus | null;
149
+ export type CliParseApprovalFn = (input: CliApprovalInput) => CliApprovalModal | null;
150
+ export type CliParseOutputFn<S = unknown> = (state: S | undefined, input: CliScriptInput) => CliReadChatPayload;
151
+ export interface CliCapabilityHandlerResult {
152
+ ok?: boolean;
153
+ writeRaw?: string;
154
+ sendMessage?: string;
155
+ result?: unknown;
156
+ }
157
+ export type CliCapabilityHandlerFn<S = unknown> = (state: S | undefined, input: CliScriptInput) => CliCapabilityHandlerResult;
158
+ export interface CliNativeHistoryReadInput {
159
+ historySessionId?: string;
160
+ workspace?: string;
161
+ /** ms timestamp of provider spawn. Use to reject pre-spawn rollovers. */
162
+ spawnAt?: number;
163
+ }
164
+ export interface CliNativeHistoryMessage {
165
+ role: CliChatRole;
166
+ content: unknown;
167
+ kind?: CliChatKind | string;
168
+ providerUnitKey?: string;
169
+ receivedAt?: number;
170
+ workspace?: string;
171
+ historySessionId?: string;
172
+ }
173
+ export interface CliNativeHistoryReadResult {
174
+ source: 'provider-native';
175
+ providerSessionId: string;
176
+ messages: CliNativeHistoryMessage[];
177
+ sourcePath: string;
178
+ sourceMtimeMs: number;
179
+ nativeHistoryCoverage: CliTranscriptCoverage;
180
+ workspace?: string;
181
+ unavailableReason?: string;
182
+ }
183
+ export type CliReadNativeHistoryFn = (input: CliNativeHistoryReadInput) => CliNativeHistoryReadResult | null;
184
+ export interface CliListNativeHistoryEntry {
185
+ providerSessionId: string;
186
+ title?: string;
187
+ workspace?: string;
188
+ receivedAt?: number;
189
+ messageCount?: number;
190
+ }
191
+ export type CliListNativeHistoryFn = () => {
192
+ sessions: CliListNativeHistoryEntry[];
193
+ };
194
+ export interface CliNativeHistoryDef {
195
+ /** Built-in adapter $schema (e.g. "adhdev:native-history/claude-jsonl@1"). */
196
+ $schema?: string;
197
+ format: string;
198
+ watchPath: string;
199
+ mode: 'native-source' | 'daemon-mirror';
200
+ contractVersion?: string;
201
+ scripts?: {
202
+ readSession?: string;
203
+ listSessions?: string;
204
+ };
205
+ }
206
+ /**
207
+ * @deprecated Use {@link CliNativeHistoryDef}. Retained as an alias for one
208
+ * release so SDK consumers that referenced the v0 name keep compiling.
209
+ */
210
+ export type CliCanonicalHistoryDef = CliNativeHistoryDef;
211
+ export interface CliPatternEntry {
212
+ source: string;
213
+ flags?: string;
214
+ }
215
+ export interface CliPatternsDef {
216
+ prompt?: CliPatternEntry[];
217
+ generating?: CliPatternEntry[];
218
+ approval?: CliPatternEntry[];
219
+ ready?: CliPatternEntry[];
220
+ dialog?: CliPatternEntry[];
221
+ }
222
+ export interface CliProviderManifest {
223
+ /** Identity */
224
+ type: string;
225
+ name: string;
226
+ displayName?: string;
227
+ category: 'cli';
228
+ icon?: string;
229
+ aliases?: ReadonlyArray<string>;
230
+ /** Versioning */
231
+ engines?: {
232
+ adhdev?: string;
233
+ };
234
+ providerVersion?: string;
235
+ contractVersion?: number | string;
236
+ status?: ProviderLifecycleStatus;
237
+ details?: string;
238
+ disableUpstream?: boolean;
239
+ /** Process spawn */
240
+ binary: string;
241
+ versionCommand?: string;
242
+ spawn: SpawnDef;
243
+ /** Input/output behavior */
244
+ sendDelayMs?: number;
245
+ sendKey?: string;
246
+ submitStrategy?: 'wait_for_echo' | 'immediate';
247
+ requirePromptEchoBeforeSubmit?: boolean;
248
+ allowInputDuringGeneration?: boolean;
249
+ requiresFinalAssistantBeforeIdle?: boolean;
250
+ augmentStaleSnapshot?: boolean;
251
+ transcriptAuthority?: CliTranscriptAuthority;
252
+ transcriptContext?: 'full' | 'tail';
253
+ /** Patterns (legacy fallback) */
254
+ patterns?: CliPatternsDef;
255
+ /** Approval */
256
+ approvalKeys?: Readonly<Record<string, string>>;
257
+ approvalPositiveHints?: ReadonlyArray<string>;
258
+ /** Timeouts */
259
+ timeouts?: TimeoutsDef;
260
+ /** Resume */
261
+ resume?: ResumeDef;
262
+ /** Compatibility */
263
+ compatibility: ReadonlyArray<CompatibilityEntryDef>;
264
+ defaultScriptDir?: string;
265
+ /** Capabilities advertised to the dashboard */
266
+ capabilities?: CapabilitiesDef;
267
+ /** Mesh coordinator setup */
268
+ meshCoordinator?: MeshCoordinatorDef;
269
+ /** Native history (v1 canonical field name) */
270
+ nativeHistory?: CliNativeHistoryDef;
271
+ /** @deprecated v0 alias for `nativeHistory`. */
272
+ canonicalHistory?: CliCanonicalHistoryDef;
273
+ /** Settings (UI toggles persisted to ~/.adhdev/config.json) */
274
+ settings?: SettingsDef;
275
+ /** Controls (dashboard chips/buttons) */
276
+ controls?: ReadonlyArray<ControlDef>;
277
+ }