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

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 (429) 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 +49753 -18414
  75. package/dist/index.js.map +1 -1
  76. package/dist/index.mjs +49614 -18438
  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/session-host/runtime-surface.d.ts +10 -16
  181. package/dist/sessions/registry.d.ts +6 -0
  182. package/dist/shared-types-extra.d.ts +2 -4
  183. package/dist/shared-types.d.ts +86 -55
  184. package/dist/status/normalize.d.ts +1 -1
  185. package/dist/status/normalize.js +1 -0
  186. package/dist/status/normalize.js.map +1 -1
  187. package/dist/status/normalize.mjs +1 -0
  188. package/dist/status/normalize.mjs.map +1 -1
  189. package/dist/status/reporter.d.ts +2 -0
  190. package/dist/status/snapshot.d.ts +26 -0
  191. package/dist/system/hash.d.ts +8 -0
  192. package/dist/system/load-better-sqlite3.d.ts +21 -0
  193. package/dist/types.d.ts +5 -0
  194. package/package.json +7 -3
  195. package/src/agent-stream/poller.ts +2 -3
  196. package/src/agent-stream/provider-adapter.ts +1 -1
  197. package/src/boot/daemon-lifecycle.ts +63 -12
  198. package/src/boot/process-hardening.ts +89 -0
  199. package/src/build-info.ts +73 -0
  200. package/src/chat/source-machine.ts +534 -0
  201. package/src/chat/source-resolver.ts +0 -0
  202. package/src/chat/subscription-updates.ts +20 -1
  203. package/src/cli-adapter-types.d.ts +3 -1
  204. package/src/cli-adapter-types.ts +68 -2
  205. package/src/cli-adapters/cli-script-runner.ts +421 -0
  206. package/src/cli-adapters/cli-state-engine.ts +1246 -0
  207. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  208. package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
  209. package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
  210. package/src/cli-adapters/provider-cli-parse.ts +19 -0
  211. package/src/cli-adapters/provider-cli-runtime.ts +56 -7
  212. package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
  213. package/src/cli-adapters/provider-cli-shared.ts +121 -11
  214. package/src/cli-adapters/pty-transport.ts +2 -1
  215. package/src/cli-adapters/pty-write-chunking.ts +106 -0
  216. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  217. package/src/cli-adapters/resolve-executable.ts +204 -0
  218. package/src/cli-adapters/session-host-transport.ts +2 -1
  219. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
  220. package/src/cli-adapters/terminal-backends/types.ts +10 -3
  221. package/src/cli-adapters/terminal-screen.ts +16 -81
  222. package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
  223. package/src/commands/chat-commands-debug-bundle.ts +398 -0
  224. package/src/commands/chat-commands-read.ts +2488 -0
  225. package/src/commands/chat-commands-scope.ts +54 -0
  226. package/src/commands/chat-commands-shared.ts +114 -0
  227. package/src/commands/chat-commands-write.ts +891 -0
  228. package/src/commands/chat-commands.ts +19 -1841
  229. package/src/commands/cli-manager.ts +596 -27
  230. package/src/commands/handler.ts +841 -2
  231. package/src/commands/high-family/index.ts +28 -0
  232. package/src/commands/high-family/mesh-coordinator-launch.ts +680 -0
  233. package/src/commands/high-family/mesh-events.ts +89 -0
  234. package/src/commands/high-family/mesh-status.ts +822 -0
  235. package/src/commands/high-family/types.ts +80 -0
  236. package/src/commands/low-family/coordinator-prompt.ts +72 -0
  237. package/src/commands/low-family/daemon-lifecycle.ts +107 -0
  238. package/src/commands/low-family/diagnostics.ts +57 -0
  239. package/src/commands/low-family/index.ts +37 -0
  240. package/src/commands/low-family/mesh-ledger.ts +62 -0
  241. package/src/commands/low-family/mesh-node-logs.ts +87 -0
  242. package/src/commands/low-family/notification.ts +116 -0
  243. package/src/commands/low-family/refine-config.ts +106 -0
  244. package/src/commands/low-family/session-host.ts +274 -0
  245. package/src/commands/low-family/spec-providerdev.ts +217 -0
  246. package/src/commands/low-family/status-meta.ts +112 -0
  247. package/src/commands/low-family/types.ts +39 -0
  248. package/src/commands/med-family/cli-agent.ts +238 -0
  249. package/src/commands/med-family/fast-forward.ts +230 -0
  250. package/src/commands/med-family/ide.ts +163 -0
  251. package/src/commands/med-family/index.ts +37 -0
  252. package/src/commands/med-family/mesh-crud.ts +1253 -0
  253. package/src/commands/med-family/mesh-host-pairing.ts +234 -0
  254. package/src/commands/med-family/mesh-queue.ts +167 -0
  255. package/src/commands/med-family/mesh-restart.ts +92 -0
  256. package/src/commands/med-family/types.ts +153 -0
  257. package/src/commands/mesh-coordinator.ts +334 -124
  258. package/src/commands/router.ts +2893 -3536
  259. package/src/commands/stream-commands.ts +8 -0
  260. package/src/commands/upgrade-helper.ts +310 -45
  261. package/src/config/chat-history.ts +493 -24
  262. package/src/config/config.ts +12 -0
  263. package/src/config/mesh-config.ts +619 -23
  264. package/src/config/mesh-json-config.ts +376 -0
  265. package/src/config/recent-activity.ts +8 -2
  266. package/src/config/repo-settings.ts +111 -0
  267. package/src/daemon/dev-auto-implement.ts +3 -2
  268. package/src/daemon/dev-cli-debug.ts +10 -1
  269. package/src/daemon/dev-server.ts +0 -541
  270. package/src/detection/cli-detector.ts +28 -9
  271. package/src/detection/ide-detector.ts +55 -16
  272. package/src/detection/win32-ide-version.ts +106 -0
  273. package/src/git/change-impact-config.ts +354 -0
  274. package/src/git/git-commands.ts +78 -15
  275. package/src/git/git-diff.ts +81 -11
  276. package/src/git/git-executor.ts +12 -0
  277. package/src/git/git-status.ts +767 -48
  278. package/src/git/git-types.ts +14 -62
  279. package/src/git/git-worktree.ts +261 -4
  280. package/src/git/index.ts +17 -0
  281. package/src/index.ts +198 -12
  282. package/src/installer.d.ts +1 -1
  283. package/src/installer.ts +8 -6
  284. package/src/ipc/local-ipc-server.ts +278 -0
  285. package/src/launch.d.ts +1 -1
  286. package/src/launch.ts +37 -28
  287. package/src/logging/async-batch-writer.ts +55 -0
  288. package/src/logging/command-log.ts +7 -5
  289. package/src/logging/log-redactor.ts +100 -0
  290. package/src/logging/log-tail-reader.ts +341 -0
  291. package/src/logging/logger.ts +14 -7
  292. package/src/mesh/contracts.ts +338 -0
  293. package/src/mesh/coordinator-prompt.ts +416 -34
  294. package/src/mesh/coordinator-registry.ts +121 -0
  295. package/src/mesh/mesh-active-work.ts +645 -0
  296. package/src/mesh/mesh-clone-grace.ts +68 -0
  297. package/src/mesh/mesh-coordinator-config.ts +97 -0
  298. package/src/mesh/mesh-delivery-policy.ts +315 -0
  299. package/src/mesh/mesh-event-classify.ts +51 -0
  300. package/src/mesh/mesh-event-forwarding.ts +1897 -0
  301. package/src/mesh/mesh-event-trace.ts +67 -0
  302. package/src/mesh/mesh-events-coordinator.ts +32 -0
  303. package/src/mesh/mesh-events-pending.ts +656 -0
  304. package/src/mesh/mesh-events-stale.ts +389 -0
  305. package/src/mesh/mesh-events-utils.ts +443 -0
  306. package/src/mesh/mesh-events.ts +33 -1035
  307. package/src/mesh/mesh-fast-forward.ts +843 -0
  308. package/src/mesh/mesh-host-ownership.ts +111 -0
  309. package/src/mesh/mesh-init.ts +350 -0
  310. package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
  311. package/src/mesh/mesh-ledger.ts +841 -102
  312. package/src/mesh/mesh-magi-status.ts +223 -0
  313. package/src/mesh/mesh-missions.ts +449 -0
  314. package/src/mesh/mesh-node-identity.ts +1985 -0
  315. package/src/mesh/mesh-queue-assignment.ts +1924 -0
  316. package/src/mesh/mesh-reconcile-loop.ts +2018 -0
  317. package/src/mesh/mesh-refine-batch.ts +205 -0
  318. package/src/mesh/mesh-refine-gates.ts +1673 -0
  319. package/src/mesh/mesh-refine-status.ts +231 -0
  320. package/src/mesh/mesh-review-inbox.ts +307 -0
  321. package/src/mesh/mesh-routing.ts +291 -0
  322. package/src/mesh/mesh-runtime-store.ts +1853 -0
  323. package/src/mesh/mesh-scheduling-runtime.ts +198 -0
  324. package/src/mesh/mesh-task-inflight.ts +70 -0
  325. package/src/mesh/mesh-task-stats.ts +161 -0
  326. package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
  327. package/src/mesh/mesh-warmup-deadline.ts +152 -0
  328. package/src/mesh/mesh-work-queue.ts +1254 -141
  329. package/src/mesh/preview-freshness.ts +118 -0
  330. package/src/mesh/refine-config.ts +423 -0
  331. package/src/mesh/worktree-bootstrap-config.ts +450 -0
  332. package/src/providers/acp-provider-instance.ts +43 -10
  333. package/src/providers/approval-utils.d.ts +5 -0
  334. package/src/providers/approval-utils.ts +57 -5
  335. package/src/providers/chat-message-normalization.ts +92 -4
  336. package/src/providers/cli-provider-instance.ts +2177 -107
  337. package/src/providers/contracts.d.ts +55 -0
  338. package/src/providers/contracts.ts +160 -6
  339. package/src/providers/extension-provider-instance.ts +12 -7
  340. package/src/providers/external-sources.ts +218 -0
  341. package/src/providers/ide-provider-instance.ts +35 -12
  342. package/src/providers/manual-attendance.ts +85 -0
  343. package/src/providers/native-history/antigravity-cli-transcript.ts +1043 -0
  344. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  345. package/src/providers/native-history/codex-cli-transcript.ts +479 -0
  346. package/src/providers/native-history/constants.ts +19 -0
  347. package/src/providers/native-history/dispatcher.ts +373 -0
  348. package/src/providers/native-history/hermes-cli-transcript.ts +260 -0
  349. package/src/providers/native-history/index.ts +30 -0
  350. package/src/providers/provider-instance-manager.ts +71 -0
  351. package/src/providers/provider-instance.ts +19 -1
  352. package/src/providers/provider-loader.ts +668 -50
  353. package/src/providers/provider-schema.ts +87 -14
  354. package/src/providers/provider-trust.ts +114 -0
  355. package/src/providers/read-chat-contract.ts +76 -16
  356. package/src/providers/sdk/README.md +49 -0
  357. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  358. package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
  359. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  360. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
  361. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  362. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  363. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  364. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  365. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  366. package/src/providers/sdk/v1/index.ts +152 -0
  367. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  368. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  369. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  370. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
  371. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  372. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  373. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  374. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  375. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  376. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  377. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  378. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  379. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  380. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  381. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  382. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  383. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  384. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  385. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  386. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  387. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  388. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  389. package/src/providers/sdk/v1/validators/index.ts +19 -0
  390. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  391. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  392. package/src/providers/spec/adapter.ts +246 -0
  393. package/src/providers/spec/cli-adapter.ts +1064 -0
  394. package/src/providers/spec/evaluator.ts +407 -0
  395. package/src/providers/spec/fsm-driver.ts +1481 -0
  396. package/src/providers/spec/fsm-evaluator.ts +290 -0
  397. package/src/providers/spec/fsm-loader.ts +128 -0
  398. package/src/providers/spec/fsm-types.ts +301 -0
  399. package/src/providers/spec/native-history-executor.ts +1174 -0
  400. package/src/providers/spec/pre-launch-trust.ts +104 -0
  401. package/src/providers/spec/route.ts +51 -0
  402. package/src/providers/spec/types.ts +262 -0
  403. package/src/providers/status-monitor.d.ts +7 -7
  404. package/src/providers/status-monitor.ts +37 -22
  405. package/src/providers/transcript-v2.ts +567 -0
  406. package/src/providers/types/interactive-prompt.ts +536 -0
  407. package/src/providers/version-archive.ts +64 -24
  408. package/src/providers/working-dir.ts +23 -0
  409. package/src/repo-mesh-types.ts +758 -14
  410. package/src/runtime-defaults.ts +39 -0
  411. package/src/session-host/managed-host.ts +218 -0
  412. package/src/session-host/runtime-surface.ts +20 -80
  413. package/src/sessions/registry.ts +6 -0
  414. package/src/shared-types-extra.ts +2 -4
  415. package/src/shared-types.d.ts +8 -0
  416. package/src/shared-types.ts +124 -55
  417. package/src/status/builders.ts +26 -6
  418. package/src/status/normalize.ts +2 -0
  419. package/src/status/reporter.ts +19 -1
  420. package/src/status/snapshot.ts +95 -26
  421. package/src/system/hash.ts +23 -0
  422. package/src/system/host-memory.ts +29 -12
  423. package/src/system/load-better-sqlite3.ts +68 -0
  424. package/src/types.ts +5 -0
  425. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  426. package/dist/mesh/mesh-sync.d.ts +0 -53
  427. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  428. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  429. package/src/mesh/mesh-sync.ts +0 -111
@@ -14,3 +14,42 @@ export const DEFAULT_SESSION_HOST_DIAGNOSTICS_SUBSCRIPTION_INTERVAL_MS = 10_000;
14
14
  export const DEFAULT_SESSION_HOST_READY_TIMEOUT_MS = 15_000;
15
15
 
16
16
  export const STANDALONE_CDP_SCAN_INTERVAL_MS = 15_000;
17
+
18
+ // ---------------------------------------------------------------------------
19
+ // Mesh P2P timeout windows (env-overridable)
20
+ // ---------------------------------------------------------------------------
21
+
22
+ // Reads a mesh timeout (ms) from the first non-empty env var in `names`, clamped
23
+ // to [1_000, 120_000]; falls back to `defaultMs` when none is set or the value is
24
+ // out of range. The clamp lets a slow real link be tuned up (TURN-relayed peers
25
+ // whose RTT is many seconds) and lets the test harness shrink the window to its
26
+ // 1s minimum, without ever degenerating to 0 or an absurd value. Multiple names
27
+ // are accepted so a renamed constant can keep honoring a legacy alias.
28
+ export function readMeshTimeoutEnvMs(names: string | string[], defaultMs: number): number {
29
+ const candidates = Array.isArray(names) ? names : [names];
30
+ for (const name of candidates) {
31
+ const raw = process.env[name]?.trim();
32
+ if (!raw) continue;
33
+ const parsed = Number.parseInt(raw, 10);
34
+ if (Number.isFinite(parsed) && parsed >= 1_000 && parsed <= 120_000) return parsed;
35
+ return defaultMs;
36
+ }
37
+ return defaultMs;
38
+ }
39
+
40
+ // SINGLE source of truth for the mesh cold-open *connect* budget — the time a
41
+ // caller grants a peer whose mesh DataChannel is not open yet to drive the
42
+ // cross-machine (often TURN-relayed) ICE/DTLS handshake before the response
43
+ // deadline takes over. Two call sites share this so an env override tunes BOTH:
44
+ // - commands/router.ts direct-peer git_status probe (requireDirectPeerTruth)
45
+ // - mesh/mesh-events-coordinator.ts remote task-dispatch (deliverTaskToSession)
46
+ // Before unification the coordinator hard-coded 45_000 while the router was
47
+ // env-overridable, so setting the env tuned the probe path but silently left the
48
+ // dispatch path at 45s — the same nominal 45s, but divergent the moment the env
49
+ // was set. Matches the daemon-cloud DaemonMeshManager CONNECT_TIMEOUT_MS (45s).
50
+ // `MESH_DIRECT_PROBE_CONNECT_TIMEOUT_MS` is honored as a backward-compat alias so
51
+ // environments already tuned under the old name keep working.
52
+ export const MESH_CONNECT_TIMEOUT_MS = readMeshTimeoutEnvMs(
53
+ ['MESH_CONNECT_TIMEOUT_MS', 'MESH_DIRECT_PROBE_CONNECT_TIMEOUT_MS'],
54
+ 45_000,
55
+ );
@@ -0,0 +1,218 @@
1
+ import { execFileSync, spawn, type StdioOptions } from 'child_process';
2
+ import * as fs from 'fs';
3
+ import * as os from 'os';
4
+ import * as path from 'path';
5
+ import {
6
+ getDefaultSessionHostEndpoint,
7
+ sanitizeSpawnEnv,
8
+ type SessionHostEndpoint,
9
+ type SessionHostRequestType,
10
+ } from '@adhdev/session-host-core';
11
+ import { ensureSessionHostReady as ensureSharedSessionHostReady } from './runtime-support.js';
12
+ import { DEFAULT_SESSION_HOST_READY_TIMEOUT_MS } from '../runtime-defaults.js';
13
+
14
+ /**
15
+ * Shared managed-session-host process helpers.
16
+ *
17
+ * The cloud (`packages/daemon-cloud`) and standalone (`oss/packages/daemon-standalone`)
18
+ * daemons carried byte-for-byte copies of `buildSessionHostEnv`, `resolveSessionHostEntry`,
19
+ * `getSessionHostPidFile`, `killPid`, a base `stopManagedSessionHostProcess`, and the
20
+ * `ensureSessionHostReady` retry-wrapper. Those live here now. The pieces that genuinely
21
+ * differ between the two daemons (kill windowsHide, quarantine preamble, spawn stdio,
22
+ * required request types, cloud's socket-owner sweep) are injected via options so the
23
+ * observable behavior of each daemon is preserved exactly.
24
+ */
25
+ export interface ManagedSessionHostOptions {
26
+ /** Session-host namespace (app name). Drives the socket endpoint and pidfile path. */
27
+ appName: string;
28
+ /** Capability probe: request types the host must advertise before it's considered ready. */
29
+ requiredRequestTypes: readonly SessionHostRequestType[];
30
+ /** Ready timeout for the spawn/poll loop. Defaults to the shared runtime default. */
31
+ timeoutMs?: number;
32
+ /**
33
+ * `killPid` on win32 uses `taskkill /T /F`. Cloud passes `windowsHide: true`; standalone
34
+ * historically did not. Kept as a flag to preserve each daemon's exact spawn options.
35
+ */
36
+ killWindowsHide?: boolean;
37
+ /**
38
+ * How the detached host child's stdio is wired. 'ignore' matches standalone; 'logfile'
39
+ * matches cloud (append to `~/.adhdev/logs/session-host.log`).
40
+ */
41
+ spawnStdio?: 'ignore' | 'logfile';
42
+ /**
43
+ * Optional preamble run at the start of `ensureReady` (before the first connect probe).
44
+ * Cloud uses this to quarantine legacy standalone runtime files.
45
+ */
46
+ beforeEnsureReady?: () => void;
47
+ /**
48
+ * Optional extra stop pass appended to `stopManagedSessionHostProcess`. Cloud sweeps
49
+ * managed session-host processes that own the default socket but predate pidfile tracking.
50
+ * Returns true if it stopped anything.
51
+ */
52
+ extraStop?: (endpoint: SessionHostEndpoint) => boolean;
53
+ /**
54
+ * Optional guard applied to a pidfile-tracked pid before killing it in
55
+ * `stopManagedSessionHostProcess`. Cloud verifies the command line is an ADHDev
56
+ * session-host daemon; standalone kills unconditionally (returns true here).
57
+ */
58
+ isManagedPid?: (pid: number) => boolean;
59
+ }
60
+
61
+ export interface ManagedSessionHost {
62
+ readonly appName: string;
63
+ readonly endpoint: SessionHostEndpoint;
64
+ getPidFile(): string;
65
+ getPid(): number | null;
66
+ buildEnv(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
67
+ resolveEntry(): string;
68
+ killPid(pid: number): boolean;
69
+ spawnHost(): void;
70
+ stopManagedSessionHostProcess(): boolean;
71
+ ensureReady(): Promise<SessionHostEndpoint>;
72
+ getStatusPaths(): { pidFile: string; endpoint: SessionHostEndpoint };
73
+ }
74
+
75
+ export function createManagedSessionHost(options: ManagedSessionHostOptions): ManagedSessionHost {
76
+ const appName = options.appName;
77
+ const timeoutMs = options.timeoutMs ?? DEFAULT_SESSION_HOST_READY_TIMEOUT_MS;
78
+ const endpoint = getDefaultSessionHostEndpoint(appName);
79
+ const isManagedPid = options.isManagedPid ?? (() => true);
80
+
81
+ function buildEnv(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
82
+ const env = sanitizeSpawnEnv(baseEnv) as NodeJS.ProcessEnv;
83
+ env.ADHDEV_SESSION_HOST_NAME = appName;
84
+ return env;
85
+ }
86
+
87
+ function resolveEntry(): string {
88
+ const packagedCandidates = [
89
+ path.resolve(__dirname, '../vendor/session-host-daemon/index.js'),
90
+ path.resolve(__dirname, '../../vendor/session-host-daemon/index.js'),
91
+ ];
92
+ for (const candidate of packagedCandidates) {
93
+ if (fs.existsSync(candidate)) {
94
+ return candidate;
95
+ }
96
+ }
97
+ return require.resolve('@adhdev/session-host-daemon');
98
+ }
99
+
100
+ function getPidFile(): string {
101
+ return path.join(os.homedir(), '.adhdev', `${appName}-session-host.pid`);
102
+ }
103
+
104
+ function getPid(): number | null {
105
+ try {
106
+ const pidFile = getPidFile();
107
+ if (!fs.existsSync(pidFile)) return null;
108
+ const pid = Number.parseInt(fs.readFileSync(pidFile, 'utf8').trim(), 10);
109
+ return Number.isFinite(pid) ? pid : null;
110
+ } catch {
111
+ return null;
112
+ }
113
+ }
114
+
115
+ function killPid(pid: number): boolean {
116
+ try {
117
+ if (process.platform === 'win32') {
118
+ const spawnOpts: { stdio: 'ignore'; windowsHide?: boolean } = { stdio: 'ignore' };
119
+ if (options.killWindowsHide) spawnOpts.windowsHide = true;
120
+ execFileSync('taskkill', ['/PID', String(pid), '/T', '/F'], spawnOpts);
121
+ } else {
122
+ process.kill(pid, 'SIGTERM');
123
+ }
124
+ return true;
125
+ } catch {
126
+ return false;
127
+ }
128
+ }
129
+
130
+ function spawnHost(): void {
131
+ const entry = resolveEntry();
132
+ let stdio: StdioOptions = 'ignore';
133
+ let logFd: number | null = null;
134
+ if (options.spawnStdio === 'logfile') {
135
+ const logDir = path.join(os.homedir(), '.adhdev', 'logs');
136
+ fs.mkdirSync(logDir, { recursive: true });
137
+ logFd = fs.openSync(path.join(logDir, 'session-host.log'), 'a');
138
+ stdio = ['ignore', logFd, logFd];
139
+ }
140
+ const child = spawn(process.execPath, [entry], {
141
+ detached: true,
142
+ stdio,
143
+ windowsHide: true,
144
+ env: buildEnv(process.env),
145
+ });
146
+ child.unref();
147
+ if (logFd !== null) {
148
+ try { fs.closeSync(logFd); } catch { /* noop */ }
149
+ }
150
+ }
151
+
152
+ function stopManagedSessionHostProcess(): boolean {
153
+ let stopped = false;
154
+ const pidFile = getPidFile();
155
+ try {
156
+ if (fs.existsSync(pidFile)) {
157
+ const pid = Number.parseInt(fs.readFileSync(pidFile, 'utf8').trim(), 10);
158
+ if (Number.isFinite(pid) && pid !== process.pid && isManagedPid(pid)) {
159
+ stopped = killPid(pid) || stopped;
160
+ }
161
+ }
162
+ } catch {
163
+ // noop
164
+ } finally {
165
+ try {
166
+ fs.unlinkSync(pidFile);
167
+ } catch {
168
+ // noop
169
+ }
170
+ }
171
+
172
+ if (options.extraStop) {
173
+ stopped = options.extraStop(endpoint) || stopped;
174
+ }
175
+
176
+ return stopped;
177
+ }
178
+
179
+ async function ensureReady(): Promise<SessionHostEndpoint> {
180
+ options.beforeEnsureReady?.();
181
+ try {
182
+ return await ensureSharedSessionHostReady({
183
+ appName,
184
+ spawnHost,
185
+ timeoutMs,
186
+ requiredRequestTypes: options.requiredRequestTypes,
187
+ });
188
+ } catch (error) {
189
+ stopManagedSessionHostProcess();
190
+ return ensureSharedSessionHostReady({
191
+ appName,
192
+ spawnHost,
193
+ timeoutMs,
194
+ requiredRequestTypes: options.requiredRequestTypes,
195
+ }).catch((retryError) => {
196
+ const initialMessage = error instanceof Error ? error.message : String(error);
197
+ const retryMessage = retryError instanceof Error ? retryError.message : String(retryError);
198
+ throw new Error(`Session host failed to start after retry (${initialMessage}; retry: ${retryMessage})`);
199
+ });
200
+ }
201
+ }
202
+
203
+ return {
204
+ appName,
205
+ endpoint,
206
+ getPidFile,
207
+ getPid,
208
+ buildEnv,
209
+ resolveEntry,
210
+ killPid,
211
+ spawnHost,
212
+ stopManagedSessionHostProcess,
213
+ ensureReady,
214
+ getStatusPaths() {
215
+ return { pidFile: getPidFile(), endpoint };
216
+ },
217
+ };
218
+ }
@@ -1,80 +1,20 @@
1
- import type { SessionHostRecord } from '../shared-types.js';
2
-
3
- export type SessionHostSurfaceKind = 'live_runtime' | 'recovery_snapshot' | 'inactive_record';
4
-
5
- export interface SessionHostSurfaceRecordLike {
6
- lifecycle?: string | null;
7
- meta?: Record<string, unknown> | null;
8
- }
9
-
10
- const LIVE_LIFECYCLES = new Set(['starting', 'running', 'stopping', 'interrupted']);
11
-
12
- export function isSessionHostLiveRuntime(record: SessionHostSurfaceRecordLike | null | undefined): boolean {
13
- const lifecycle = String(record?.lifecycle || '').trim();
14
- return LIVE_LIFECYCLES.has(lifecycle);
15
- }
16
-
17
- export function getSessionHostRecoveryLabel(meta: Record<string, unknown> | null | undefined): string | null {
18
- const recoveryState = typeof meta?.runtimeRecoveryState === 'string'
19
- ? String(meta.runtimeRecoveryState).trim()
20
- : '';
21
- if (!recoveryState) return null;
22
- if (recoveryState === 'auto_resumed') return 'restored after restart';
23
- if (recoveryState === 'resume_failed') return 'restore failed';
24
- if (recoveryState === 'host_restart_interrupted') return 'host restart interrupted';
25
- if (recoveryState === 'orphan_snapshot') return 'snapshot recovered';
26
- return recoveryState.replace(/_/g, ' ');
27
- }
28
-
29
- export function isSessionHostRecoverySnapshot(record: SessionHostSurfaceRecordLike | null | undefined): boolean {
30
- if (!record) return false;
31
- if (isSessionHostLiveRuntime(record)) return false;
32
-
33
- const lifecycle = String(record.lifecycle || '').trim();
34
- if (lifecycle && lifecycle !== 'stopped' && lifecycle !== 'failed') {
35
- return false;
36
- }
37
-
38
- const meta = record.meta || undefined;
39
- if (meta?.restoredFromStorage === true) return true;
40
- return getSessionHostRecoveryLabel(meta) !== null;
41
- }
42
-
43
- export function getSessionHostSurfaceKind(record: SessionHostSurfaceRecordLike | null | undefined): SessionHostSurfaceKind {
44
- if (isSessionHostLiveRuntime(record)) return 'live_runtime';
45
- if (isSessionHostRecoverySnapshot(record)) return 'recovery_snapshot';
46
- return 'inactive_record';
47
- }
48
-
49
- export function partitionSessionHostRecords<T extends SessionHostSurfaceRecordLike>(records: T[]): {
50
- liveRuntimes: T[];
51
- recoverySnapshots: T[];
52
- inactiveRecords: T[];
53
- } {
54
- const liveRuntimes: T[] = [];
55
- const recoverySnapshots: T[] = [];
56
- const inactiveRecords: T[] = [];
57
-
58
- for (const record of records) {
59
- const kind = getSessionHostSurfaceKind(record);
60
- if (kind === 'live_runtime') {
61
- liveRuntimes.push(record);
62
- } else if (kind === 'recovery_snapshot') {
63
- recoverySnapshots.push(record);
64
- } else {
65
- inactiveRecords.push(record);
66
- }
67
- }
68
-
69
- return {
70
- liveRuntimes,
71
- recoverySnapshots,
72
- inactiveRecords,
73
- };
74
- }
75
-
76
- export function partitionSessionHostDiagnosticsSessions(
77
- records: SessionHostRecord[] | null | undefined,
78
- ): ReturnType<typeof partitionSessionHostRecords<SessionHostRecord>> {
79
- return partitionSessionHostRecords(records || []);
80
- }
1
+ /**
2
+ * Session-host runtime-surface helpers.
3
+ *
4
+ * These classification helpers (live_runtime / recovery_snapshot / inactive_record)
5
+ * are owned by @adhdev/session-host-core as the single source of truth. daemon-core
6
+ * re-exports them so consumers can keep importing from this path while the behavior
7
+ * (including the `record.surfaceKind` short-circuit) stays identical across packages.
8
+ */
9
+ export {
10
+ getSessionHostRecoveryLabel,
11
+ getSessionHostSurfaceKind,
12
+ isSessionHostLiveRuntime,
13
+ isSessionHostRecoverySnapshot,
14
+ partitionSessionHostDiagnosticsSessions,
15
+ partitionSessionHostRecords,
16
+ } from '@adhdev/session-host-core';
17
+ export type {
18
+ SessionHostSurfaceKind,
19
+ SessionHostSurfaceRecordLike,
20
+ } from '@adhdev/session-host-core';
@@ -8,6 +8,12 @@ export interface SessionRuntimeTarget {
8
8
  cdpManagerKey?: string;
9
9
  adapterKey?: string;
10
10
  instanceKey?: string;
11
+ /** Working directory for CLI/ACP sessions. Used by read_chat to resolve
12
+ * native history when there is no live adapter (e.g. subscription path). */
13
+ workspace?: string;
14
+ /** Wall clock at register time. native-history readers use it as a
15
+ * cutoff so a fresh session can't show records from a prior one. */
16
+ spawnedAtMs?: number;
11
17
  }
12
18
 
13
19
  export class SessionRegistry {
@@ -21,14 +21,12 @@ export interface RuntimeAttachedClient {
21
21
  }
22
22
 
23
23
  /** Session status union (used by SessionEntry.status, legacy recent-launch metadata, etc.) */
24
- export type SessionStatus = 'idle' | 'generating' | 'waiting_approval' | 'error' | 'stopped' | 'starting' | 'panel_hidden' | 'not_monitored' | 'disconnected';
24
+ export type SessionStatus = 'idle' | 'generating' | 'waiting_approval' | 'waiting_choice' | 'error' | 'stopped' | 'starting' | 'panel_hidden' | 'not_monitored' | 'disconnected';
25
25
 
26
26
  /** Inbox bucket categories for recent sessions */
27
27
  export type RecentSessionBucket = 'needs_attention' | 'working' | 'task_complete' | 'idle';
28
28
 
29
29
  /** Terminal backend status */
30
30
  export interface TerminalBackendStatus {
31
- backend: 'xterm' | 'ghostty-vt';
32
- preference: 'auto' | 'xterm' | 'ghostty-vt';
33
- ghosttyAvailable: boolean;
31
+ backend: 'ghostty-vt';
34
32
  }
@@ -206,6 +206,14 @@ export interface SessionEntry {
206
206
  completionMarker?: string;
207
207
  seenCompletionMarker?: string;
208
208
  surfaceHidden?: boolean;
209
+ /**
210
+ * True owning-daemon id for a session a coordinator synthesises into its own
211
+ * status snapshot (mesh delegated sessions), so the dashboard attributes it to the
212
+ * worker node instead of the coordinator daemon hosting the snapshot.
213
+ */
214
+ ownerDaemonId?: string;
215
+ /** True owning-machine display name fallback when the owning daemon is not aggregated. */
216
+ ownerMachineName?: string;
209
217
  }
210
218
  /**
211
219
  * Compact session metadata stored in UserSessionDO and reused by server-side
@@ -15,6 +15,15 @@ import type {
15
15
  DetectedIde,
16
16
  AgentEntry,
17
17
  } from './types.js';
18
+ import type {
19
+ SessionAttachedClient as CoreSessionAttachedClient,
20
+ SessionWriteOwner as CoreSessionWriteOwner,
21
+ SessionHostRecord as CoreSessionHostRecord,
22
+ SessionHostLogEntry as CoreSessionHostLogEntry,
23
+ SessionHostRequestTrace as CoreSessionHostRequestTrace,
24
+ SessionHostRuntimeTransition as CoreSessionHostRuntimeTransition,
25
+ SessionHostDiagnostics as CoreSessionHostDiagnostics,
26
+ } from '@adhdev/session-host-core';
18
27
 
19
28
  export type {
20
29
  StatusResponse,
@@ -56,6 +65,7 @@ import type {
56
65
  GitWorkspaceUpdate,
57
66
  WorkspaceGitSubscriptionParams,
58
67
  } from './git/git-types.js';
68
+ import type { InteractivePrompt } from './providers/types/interactive-prompt.js';
59
69
 
60
70
  export type {
61
71
  GitCommandName,
@@ -110,6 +120,14 @@ export interface ReadChatSyncResult {
110
120
  status: string;
111
121
  title?: string;
112
122
  activeModal?: { message: string; buttons: string[] } | null;
123
+ activeInteractivePrompt?: InteractivePrompt | null;
124
+ /**
125
+ * Chat source provenance from ChatSourceMachine (A2). Carries the
126
+ * selected source, transition cause, lock state, and legacy
127
+ * fallbackReason — opaque to the daemon-core, consumed by web-core
128
+ * for the source debug badge and SourceTimeline (A3).
129
+ */
130
+ messageSource?: Record<string, unknown>;
113
131
  }
114
132
 
115
133
  export interface ProviderSummaryItem {
@@ -125,70 +143,67 @@ export interface ProviderSummaryMetadata {
125
143
  items: ProviderSummaryItem[];
126
144
  }
127
145
 
128
- export interface SessionHostAttachedClient {
129
- clientId: string;
146
+ /**
147
+ * Wire-subset session-host types.
148
+ *
149
+ * These are the shapes daemon-core / web-core see over the wire — a subset of the
150
+ * authoritative types owned by @adhdev/session-host-core (which additionally carry
151
+ * transport / category / launchCommand / buffer and stricter union typing on wire
152
+ * scalars). They are DERIVED from the SSOT via Pick/Omit so shared fields cannot
153
+ * drift; only the deliberate wire looseness (string-typed `type`/`lifecycle`,
154
+ * optional `meta`) is re-applied here.
155
+ */
156
+ export type SessionHostAttachedClient = Omit<CoreSessionAttachedClient, 'type'> & {
157
+ /** Widened over the wire — the raw client-type string is not re-validated here. */
130
158
  type: string;
131
- readOnly: boolean;
132
- attachedAt: number;
133
- lastSeenAt: number;
134
- }
135
-
136
- export interface SessionHostWriteOwner {
137
- clientId: string;
138
- ownerType: 'agent' | 'user';
139
- acquiredAt: number;
140
- }
159
+ };
141
160
 
142
- export interface SessionHostRecord {
143
- sessionId: string;
144
- runtimeKey: string;
145
- displayName: string;
146
- workspaceLabel: string;
147
- providerType: string;
148
- workspace: string;
149
- lifecycle: 'starting' | 'running' | 'stopping' | 'stopped' | 'failed' | 'interrupted';
150
- surfaceKind?: 'live_runtime' | 'recovery_snapshot' | 'inactive_record';
161
+ export type SessionHostWriteOwner = CoreSessionWriteOwner;
162
+
163
+ export type SessionHostRecord = Pick<
164
+ CoreSessionHostRecord,
165
+ | 'sessionId'
166
+ | 'runtimeKey'
167
+ | 'displayName'
168
+ | 'workspaceLabel'
169
+ | 'providerType'
170
+ | 'workspace'
171
+ | 'lifecycle'
172
+ | 'surfaceKind'
173
+ | 'osPid'
174
+ | 'lastActivityAt'
175
+ | 'createdAt'
176
+ | 'startedAt'
177
+ > & {
151
178
  writeOwner: SessionHostWriteOwner | null;
152
179
  attachedClients: SessionHostAttachedClient[];
153
- osPid?: number;
154
- lastActivityAt: number;
155
- createdAt: number;
156
- startedAt?: number;
180
+ /** Optional over the wire — omitted when the record carries no metadata. */
157
181
  meta?: Record<string, unknown>;
158
- }
182
+ };
159
183
 
160
- export interface SessionHostLogEntry {
161
- timestamp: number;
162
- level: 'debug' | 'info' | 'warn' | 'error';
163
- message: string;
164
- sessionId?: string;
165
- }
184
+ export type SessionHostLogEntry = Omit<CoreSessionHostLogEntry, 'data'>;
166
185
 
167
- export interface SessionHostRequestTrace {
168
- timestamp: number;
169
- requestId: string;
186
+ export type SessionHostRequestTrace = Omit<CoreSessionHostRequestTrace, 'type'> & {
187
+ /** Widened over the wire — the request-type union is not re-validated here. */
170
188
  type: string;
171
- sessionId?: string;
172
- clientId?: string;
173
- success: boolean;
174
- durationMs: number;
175
- error?: string;
176
- }
189
+ };
177
190
 
178
- export interface SessionHostRuntimeTransition {
179
- timestamp: number;
180
- sessionId: string;
181
- action: string;
191
+ export type SessionHostRuntimeTransition = Omit<CoreSessionHostRuntimeTransition, 'lifecycle'> & {
192
+ /** Widened over the wire — the lifecycle union is not re-validated here. */
182
193
  lifecycle?: string;
183
- detail?: string;
184
- success?: boolean;
185
- error?: string;
186
- }
194
+ };
187
195
 
188
- export interface SessionHostDiagnosticsSnapshot {
189
- hostStartedAt: number;
190
- endpoint: string;
191
- runtimeCount: number;
196
+ export type SessionHostDiagnosticsSnapshot = Omit<
197
+ CoreSessionHostDiagnostics,
198
+ | 'supportedRequestTypes'
199
+ | 'sessions'
200
+ | 'liveRuntimes'
201
+ | 'recoverySnapshots'
202
+ | 'inactiveRecords'
203
+ | 'recentLogs'
204
+ | 'recentRequests'
205
+ | 'recentTransitions'
206
+ > & {
192
207
  sessions?: SessionHostRecord[];
193
208
  liveRuntimes?: SessionHostRecord[];
194
209
  recoverySnapshots?: SessionHostRecord[];
@@ -196,7 +211,7 @@ export interface SessionHostDiagnosticsSnapshot {
196
211
  recentLogs: SessionHostLogEntry[];
197
212
  recentRequests: SessionHostRequestTrace[];
198
213
  recentTransitions: SessionHostRuntimeTransition[];
199
- }
214
+ };
200
215
 
201
216
  export type TransportTopic = 'session.chat_tail' | 'session.runtime_output' | 'machine.runtime' | 'session_host.diagnostics' | 'session.modal' | 'daemon.metadata' | 'workspace.git';
202
217
 
@@ -365,6 +380,7 @@ export interface SessionEntry {
365
380
  runtimeRecoveryState?: string | null;
366
381
  resume?: ProviderResumeCapability;
367
382
  activeChat: SessionActiveChatData | null;
383
+ activeInteractivePrompt?: InteractivePrompt | null;
368
384
  capabilities?: SessionCapability[];
369
385
  /** Effective message input/media support for this session. Defaults fail-closed to text-only. */
370
386
  messageInput?: MessageInputSupport;
@@ -389,6 +405,17 @@ export interface SessionEntry {
389
405
  seenCompletionMarker?: string;
390
406
  surfaceHidden?: boolean;
391
407
  settings?: Record<string, any>;
408
+ /**
409
+ * True owning-daemon id for a session a coordinator synthesises into its own
410
+ * status snapshot (mesh delegated sessions). The dashboard attributes the session
411
+ * to this daemon instead of the snapshot daemon so the worker node — not the
412
+ * coordinator — is shown as its machine.
413
+ */
414
+ ownerDaemonId?: string;
415
+ /** True owning-machine display name fallback when the owning daemon is not aggregated. */
416
+ ownerMachineName?: string;
417
+ /** Set when this session is acting as a mesh coordinator for the given mesh. */
418
+ coordinator?: { meshId: string; role: 'coordinator' };
392
419
  meshQueueStats?: {
393
420
  total?: number;
394
421
  active?: number;
@@ -516,7 +543,39 @@ export interface AvailableProviderInfo {
516
543
  lastVerification?: MachineProviderCheckResult;
517
544
  /** Provider-declared Repo Mesh coordinator/MCP behavior. */
518
545
  meshCoordinator?: ProviderMeshCoordinatorConfig;
519
- }
546
+ /**
547
+ * Provider trust classification — derived from the on-disk layer the
548
+ * manifest came from and the shape of the manifest. Dashboards use
549
+ * this to render a trust badge and gate activation of
550
+ * `external-untrusted` providers behind a confirm modal.
551
+ */
552
+ trust?: ProviderTrust;
553
+ /** Daemon-side human-readable description of the trust value. */
554
+ trustDescription?: string;
555
+ /** True when activation needs a user-side confirmation step. */
556
+ requiresConfirmation?: boolean;
557
+ /** Which on-disk layer the manifest lives in. */
558
+ sourceLayer?: 'user' | 'upstream' | 'external';
559
+ /** For external providers, the source-name namespace it came from. */
560
+ sourceName?: string | null;
561
+ /** Manifest-declared version, e.g. "1.2.1". */
562
+ providerVersion?: string;
563
+ /** Underlying executable name (CLI/binary providers). */
564
+ binary?: string;
565
+ /** Lifecycle label from the manifest: "Stable", "Beta", … */
566
+ status?: string;
567
+ /** One-line provider description from the manifest. */
568
+ details?: string;
569
+ /** Manifest-declared links: homepage, docs, repo, … */
570
+ links?: Record<string, string>;
571
+ }
572
+
573
+ export type ProviderTrust =
574
+ | 'user-custom'
575
+ | 'trusted'
576
+ | 'trusted-with-scripts'
577
+ | 'external-safe'
578
+ | 'external-untrusted';
520
579
 
521
580
  export interface MachineProviderCheckResult {
522
581
  ok: boolean;
@@ -582,6 +641,13 @@ export interface ProviderControlSchema {
582
641
  order?: number;
583
642
  /** Hide this control even if it would otherwise render */
584
643
  hidden?: boolean;
644
+ /**
645
+ * FSM state ids in which this control should be visible. When omitted the
646
+ * control is always visible. Mirrors the daemon's click-time enforcement so
647
+ * the bar hides controls the daemon would silently drop. Uses raw FSM state
648
+ * ids (e.g. 'idle', 'busy'), not the derived dashboard status.
649
+ */
650
+ visibleWhenState?: string[];
585
651
  }
586
652
 
587
653
  // ─── Common Sub-Types (used across StatusReportPayload, BaseDaemonData, etc.) ──
@@ -687,6 +753,9 @@ export type DaemonStatusEventName =
687
753
  | 'agent:waiting_approval'
688
754
  | 'agent:generating_completed'
689
755
  | 'agent:stopped'
756
+ | 'monitor:no_progress'
757
+ // Legacy alias for 'monitor:no_progress' — kept so older daemons that still
758
+ // emit it remain type-compatible with consumers during rollout.
690
759
  | 'monitor:long_generating';
691
760
 
692
761
  /** Minimal daemon-originated event payload relayed through the server. */