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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/dist/boot/daemon-lifecycle.d.ts +9 -0
  2. package/dist/boot/process-hardening.d.ts +50 -0
  3. package/dist/build-info.d.ts +37 -0
  4. package/dist/chat/source-machine.d.ts +166 -0
  5. package/dist/chat/source-resolver.d.ts +104 -0
  6. package/dist/chat/subscription-updates.d.ts +1 -0
  7. package/dist/cli-adapter-types.d.ts +68 -2
  8. package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
  9. package/dist/cli-adapters/cli-state-engine.d.ts +200 -0
  10. package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
  11. package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
  12. package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
  13. package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
  14. package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
  15. package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
  16. package/dist/cli-adapters/resolve-executable.d.ts +69 -0
  17. package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
  18. package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
  19. package/dist/cli-adapters/terminal-screen.d.ts +4 -11
  20. package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
  21. package/dist/commands/chat-commands-read.d.ts +7 -0
  22. package/dist/commands/chat-commands-scope.d.ts +39 -0
  23. package/dist/commands/chat-commands-shared.d.ts +33 -0
  24. package/dist/commands/chat-commands-write.d.ts +14 -0
  25. package/dist/commands/chat-commands.d.ts +10 -23
  26. package/dist/commands/cli-manager.d.ts +25 -1
  27. package/dist/commands/handler.d.ts +125 -0
  28. package/dist/commands/high-family/index.d.ts +3 -0
  29. package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
  30. package/dist/commands/high-family/mesh-events.d.ts +2 -0
  31. package/dist/commands/high-family/mesh-status.d.ts +2 -0
  32. package/dist/commands/high-family/types.d.ts +64 -0
  33. package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
  34. package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
  35. package/dist/commands/low-family/diagnostics.d.ts +2 -0
  36. package/dist/commands/low-family/index.d.ts +3 -0
  37. package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
  38. package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
  39. package/dist/commands/low-family/notification.d.ts +2 -0
  40. package/dist/commands/low-family/refine-config.d.ts +2 -0
  41. package/dist/commands/low-family/session-host.d.ts +2 -0
  42. package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
  43. package/dist/commands/low-family/status-meta.d.ts +2 -0
  44. package/dist/commands/low-family/types.d.ts +33 -0
  45. package/dist/commands/med-family/cli-agent.d.ts +2 -0
  46. package/dist/commands/med-family/fast-forward.d.ts +2 -0
  47. package/dist/commands/med-family/ide.d.ts +10 -0
  48. package/dist/commands/med-family/index.d.ts +3 -0
  49. package/dist/commands/med-family/mesh-crud.d.ts +29 -0
  50. package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
  51. package/dist/commands/med-family/mesh-queue.d.ts +2 -0
  52. package/dist/commands/med-family/mesh-restart.d.ts +2 -0
  53. package/dist/commands/med-family/types.d.ts +152 -0
  54. package/dist/commands/mesh-coordinator.d.ts +85 -1
  55. package/dist/commands/router.d.ts +279 -2
  56. package/dist/commands/upgrade-helper.d.ts +41 -1
  57. package/dist/config/chat-history.d.ts +9 -0
  58. package/dist/config/config.d.ts +5 -0
  59. package/dist/config/mesh-config.d.ts +129 -1
  60. package/dist/config/mesh-json-config.d.ts +199 -0
  61. package/dist/config/repo-settings.d.ts +77 -0
  62. package/dist/daemon/dev-server.d.ts +0 -2
  63. package/dist/detection/ide-detector.d.ts +13 -0
  64. package/dist/detection/win32-ide-version.d.ts +37 -0
  65. package/dist/git/change-impact-config.d.ts +159 -0
  66. package/dist/git/git-commands.d.ts +12 -1
  67. package/dist/git/git-diff.d.ts +6 -0
  68. package/dist/git/git-executor.d.ts +11 -0
  69. package/dist/git/git-status.d.ts +57 -0
  70. package/dist/git/git-types.d.ts +2 -50
  71. package/dist/git/git-worktree.d.ts +71 -1
  72. package/dist/git/index.d.ts +3 -1
  73. package/dist/index.d.ts +66 -14
  74. package/dist/index.js +48475 -17084
  75. package/dist/index.js.map +1 -1
  76. package/dist/index.mjs +49521 -18300
  77. package/dist/index.mjs.map +1 -1
  78. package/dist/installer.d.ts +1 -4
  79. package/dist/ipc/local-ipc-server.d.ts +91 -0
  80. package/dist/launch.d.ts +1 -1
  81. package/dist/logging/async-batch-writer.d.ts +10 -0
  82. package/dist/logging/log-redactor.d.ts +24 -0
  83. package/dist/logging/log-tail-reader.d.ts +81 -0
  84. package/dist/logging/logger.d.ts +1 -1
  85. package/dist/mesh/contracts.d.ts +164 -0
  86. package/dist/mesh/coordinator-prompt.d.ts +89 -0
  87. package/dist/mesh/coordinator-registry.d.ts +59 -0
  88. package/dist/mesh/mesh-active-work.d.ts +174 -0
  89. package/dist/mesh/mesh-clone-grace.d.ts +8 -0
  90. package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
  91. package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
  92. package/dist/mesh/mesh-event-classify.d.ts +5 -0
  93. package/dist/mesh/mesh-event-forwarding.d.ts +41 -0
  94. package/dist/mesh/mesh-event-trace.d.ts +21 -0
  95. package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
  96. package/dist/mesh/mesh-events-pending.d.ts +69 -0
  97. package/dist/mesh/mesh-events-stale.d.ts +61 -0
  98. package/dist/mesh/mesh-events-utils.d.ts +75 -0
  99. package/dist/mesh/mesh-events.d.ts +6 -49
  100. package/dist/mesh/mesh-fast-forward.d.ts +81 -0
  101. package/dist/mesh/mesh-host-ownership.d.ts +29 -0
  102. package/dist/mesh/mesh-init.d.ts +128 -0
  103. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
  104. package/dist/mesh/mesh-ledger.d.ts +115 -1
  105. package/dist/mesh/mesh-magi-status.d.ts +63 -0
  106. package/dist/mesh/mesh-missions.d.ts +189 -0
  107. package/dist/mesh/mesh-node-identity.d.ts +306 -0
  108. package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
  109. package/dist/mesh/mesh-reconcile-loop.d.ts +79 -0
  110. package/dist/mesh/mesh-refine-batch.d.ts +68 -0
  111. package/dist/mesh/mesh-refine-gates.d.ts +428 -0
  112. package/dist/mesh/mesh-refine-status.d.ts +62 -0
  113. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  114. package/dist/mesh/mesh-routing.d.ts +70 -0
  115. package/dist/mesh/mesh-runtime-store.d.ts +450 -0
  116. package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
  117. package/dist/mesh/mesh-task-inflight.d.ts +46 -0
  118. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  119. package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
  120. package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
  121. package/dist/mesh/mesh-work-queue.d.ts +300 -5
  122. package/dist/mesh/preview-freshness.d.ts +18 -0
  123. package/dist/mesh/refine-config.d.ts +216 -0
  124. package/dist/mesh/worktree-bootstrap-config.d.ts +145 -0
  125. package/dist/providers/acp-provider-instance.d.ts +5 -0
  126. package/dist/providers/approval-utils.d.ts +20 -0
  127. package/dist/providers/chat-message-normalization.d.ts +32 -1
  128. package/dist/providers/cli-provider-instance.d.ts +254 -3
  129. package/dist/providers/contracts.d.ts +149 -6
  130. package/dist/providers/external-sources.d.ts +71 -0
  131. package/dist/providers/manual-attendance.d.ts +63 -0
  132. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +126 -0
  133. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  134. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  135. package/dist/providers/native-history/constants.d.ts +12 -0
  136. package/dist/providers/native-history/dispatcher.d.ts +27 -0
  137. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  138. package/dist/providers/native-history/index.d.ts +13 -0
  139. package/dist/providers/provider-instance-manager.d.ts +29 -0
  140. package/dist/providers/provider-instance.d.ts +23 -1
  141. package/dist/providers/provider-loader.d.ts +26 -4
  142. package/dist/providers/provider-trust.d.ts +31 -0
  143. package/dist/providers/read-chat-contract.d.ts +29 -0
  144. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  145. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
  146. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  147. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
  148. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  149. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  150. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  151. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  152. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  153. package/dist/providers/sdk/v1/index.d.ts +30 -0
  154. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  155. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  156. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  157. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  158. package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
  159. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  160. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  161. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  162. package/dist/providers/spec/adapter.d.ts +98 -0
  163. package/dist/providers/spec/cli-adapter.d.ts +223 -0
  164. package/dist/providers/spec/evaluator.d.ts +45 -0
  165. package/dist/providers/spec/fsm-driver.d.ts +444 -0
  166. package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
  167. package/dist/providers/spec/fsm-loader.d.ts +14 -0
  168. package/dist/providers/spec/fsm-types.d.ts +202 -0
  169. package/dist/providers/spec/native-history-executor.d.ts +41 -0
  170. package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
  171. package/dist/providers/spec/route.d.ts +4 -0
  172. package/dist/providers/spec/types.d.ts +222 -0
  173. package/dist/providers/status-monitor.d.ts +7 -7
  174. package/dist/providers/transcript-v2.d.ts +176 -0
  175. package/dist/providers/types/interactive-prompt.d.ts +84 -0
  176. package/dist/providers/working-dir.d.ts +17 -0
  177. package/dist/repo-mesh-types.d.ts +519 -13
  178. package/dist/runtime-defaults.d.ts +2 -0
  179. package/dist/session-host/managed-host.d.ts +64 -0
  180. package/dist/sessions/registry.d.ts +6 -0
  181. package/dist/shared-types-extra.d.ts +2 -4
  182. package/dist/shared-types.d.ts +59 -2
  183. package/dist/status/normalize.d.ts +1 -1
  184. package/dist/status/normalize.js +1 -0
  185. package/dist/status/normalize.js.map +1 -1
  186. package/dist/status/normalize.mjs +1 -0
  187. package/dist/status/normalize.mjs.map +1 -1
  188. package/dist/status/reporter.d.ts +2 -0
  189. package/dist/status/snapshot.d.ts +26 -0
  190. package/dist/system/hash.d.ts +8 -0
  191. package/dist/system/load-better-sqlite3.d.ts +21 -0
  192. package/dist/types.d.ts +5 -0
  193. package/package.json +7 -3
  194. package/src/agent-stream/poller.ts +2 -3
  195. package/src/agent-stream/provider-adapter.ts +1 -1
  196. package/src/boot/daemon-lifecycle.ts +63 -12
  197. package/src/boot/process-hardening.ts +89 -0
  198. package/src/build-info.ts +73 -0
  199. package/src/chat/source-machine.ts +534 -0
  200. package/src/chat/source-resolver.ts +0 -0
  201. package/src/chat/subscription-updates.ts +20 -1
  202. package/src/cli-adapter-types.d.ts +3 -1
  203. package/src/cli-adapter-types.ts +68 -2
  204. package/src/cli-adapters/cli-script-runner.ts +421 -0
  205. package/src/cli-adapters/cli-state-engine.ts +1246 -0
  206. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  207. package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
  208. package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
  209. package/src/cli-adapters/provider-cli-parse.ts +19 -0
  210. package/src/cli-adapters/provider-cli-runtime.ts +56 -7
  211. package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
  212. package/src/cli-adapters/provider-cli-shared.ts +121 -11
  213. package/src/cli-adapters/pty-transport.ts +2 -1
  214. package/src/cli-adapters/pty-write-chunking.ts +106 -0
  215. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  216. package/src/cli-adapters/resolve-executable.ts +204 -0
  217. package/src/cli-adapters/session-host-transport.ts +2 -1
  218. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
  219. package/src/cli-adapters/terminal-backends/types.ts +10 -3
  220. package/src/cli-adapters/terminal-screen.ts +16 -81
  221. package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
  222. package/src/commands/chat-commands-debug-bundle.ts +398 -0
  223. package/src/commands/chat-commands-read.ts +2488 -0
  224. package/src/commands/chat-commands-scope.ts +54 -0
  225. package/src/commands/chat-commands-shared.ts +114 -0
  226. package/src/commands/chat-commands-write.ts +891 -0
  227. package/src/commands/chat-commands.ts +19 -1841
  228. package/src/commands/cli-manager.ts +596 -27
  229. package/src/commands/handler.ts +841 -2
  230. package/src/commands/high-family/index.ts +28 -0
  231. package/src/commands/high-family/mesh-coordinator-launch.ts +680 -0
  232. package/src/commands/high-family/mesh-events.ts +89 -0
  233. package/src/commands/high-family/mesh-status.ts +822 -0
  234. package/src/commands/high-family/types.ts +80 -0
  235. package/src/commands/low-family/coordinator-prompt.ts +72 -0
  236. package/src/commands/low-family/daemon-lifecycle.ts +107 -0
  237. package/src/commands/low-family/diagnostics.ts +57 -0
  238. package/src/commands/low-family/index.ts +37 -0
  239. package/src/commands/low-family/mesh-ledger.ts +62 -0
  240. package/src/commands/low-family/mesh-node-logs.ts +87 -0
  241. package/src/commands/low-family/notification.ts +116 -0
  242. package/src/commands/low-family/refine-config.ts +106 -0
  243. package/src/commands/low-family/session-host.ts +274 -0
  244. package/src/commands/low-family/spec-providerdev.ts +217 -0
  245. package/src/commands/low-family/status-meta.ts +112 -0
  246. package/src/commands/low-family/types.ts +39 -0
  247. package/src/commands/med-family/cli-agent.ts +238 -0
  248. package/src/commands/med-family/fast-forward.ts +230 -0
  249. package/src/commands/med-family/ide.ts +163 -0
  250. package/src/commands/med-family/index.ts +37 -0
  251. package/src/commands/med-family/mesh-crud.ts +1253 -0
  252. package/src/commands/med-family/mesh-host-pairing.ts +234 -0
  253. package/src/commands/med-family/mesh-queue.ts +167 -0
  254. package/src/commands/med-family/mesh-restart.ts +92 -0
  255. package/src/commands/med-family/types.ts +153 -0
  256. package/src/commands/mesh-coordinator.ts +334 -124
  257. package/src/commands/router.ts +2893 -3536
  258. package/src/commands/stream-commands.ts +8 -0
  259. package/src/commands/upgrade-helper.ts +310 -45
  260. package/src/config/chat-history.ts +493 -24
  261. package/src/config/config.ts +12 -0
  262. package/src/config/mesh-config.ts +619 -23
  263. package/src/config/mesh-json-config.ts +376 -0
  264. package/src/config/recent-activity.ts +8 -2
  265. package/src/config/repo-settings.ts +111 -0
  266. package/src/daemon/dev-auto-implement.ts +3 -2
  267. package/src/daemon/dev-cli-debug.ts +10 -1
  268. package/src/daemon/dev-server.ts +0 -541
  269. package/src/detection/cli-detector.ts +28 -9
  270. package/src/detection/ide-detector.ts +55 -16
  271. package/src/detection/win32-ide-version.ts +106 -0
  272. package/src/git/change-impact-config.ts +354 -0
  273. package/src/git/git-commands.ts +78 -15
  274. package/src/git/git-diff.ts +81 -11
  275. package/src/git/git-executor.ts +12 -0
  276. package/src/git/git-status.ts +767 -48
  277. package/src/git/git-types.ts +14 -62
  278. package/src/git/git-worktree.ts +261 -4
  279. package/src/git/index.ts +17 -0
  280. package/src/index.ts +198 -12
  281. package/src/installer.d.ts +1 -1
  282. package/src/installer.ts +8 -6
  283. package/src/ipc/local-ipc-server.ts +278 -0
  284. package/src/launch.d.ts +1 -1
  285. package/src/launch.ts +37 -28
  286. package/src/logging/async-batch-writer.ts +55 -0
  287. package/src/logging/command-log.ts +7 -5
  288. package/src/logging/log-redactor.ts +100 -0
  289. package/src/logging/log-tail-reader.ts +341 -0
  290. package/src/logging/logger.ts +14 -7
  291. package/src/mesh/contracts.ts +338 -0
  292. package/src/mesh/coordinator-prompt.ts +416 -34
  293. package/src/mesh/coordinator-registry.ts +121 -0
  294. package/src/mesh/mesh-active-work.ts +645 -0
  295. package/src/mesh/mesh-clone-grace.ts +68 -0
  296. package/src/mesh/mesh-coordinator-config.ts +97 -0
  297. package/src/mesh/mesh-delivery-policy.ts +315 -0
  298. package/src/mesh/mesh-event-classify.ts +51 -0
  299. package/src/mesh/mesh-event-forwarding.ts +1897 -0
  300. package/src/mesh/mesh-event-trace.ts +67 -0
  301. package/src/mesh/mesh-events-coordinator.ts +32 -0
  302. package/src/mesh/mesh-events-pending.ts +656 -0
  303. package/src/mesh/mesh-events-stale.ts +389 -0
  304. package/src/mesh/mesh-events-utils.ts +443 -0
  305. package/src/mesh/mesh-events.ts +33 -1035
  306. package/src/mesh/mesh-fast-forward.ts +843 -0
  307. package/src/mesh/mesh-host-ownership.ts +111 -0
  308. package/src/mesh/mesh-init.ts +350 -0
  309. package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
  310. package/src/mesh/mesh-ledger.ts +841 -102
  311. package/src/mesh/mesh-magi-status.ts +223 -0
  312. package/src/mesh/mesh-missions.ts +449 -0
  313. package/src/mesh/mesh-node-identity.ts +1985 -0
  314. package/src/mesh/mesh-queue-assignment.ts +1924 -0
  315. package/src/mesh/mesh-reconcile-loop.ts +2018 -0
  316. package/src/mesh/mesh-refine-batch.ts +205 -0
  317. package/src/mesh/mesh-refine-gates.ts +1673 -0
  318. package/src/mesh/mesh-refine-status.ts +231 -0
  319. package/src/mesh/mesh-review-inbox.ts +307 -0
  320. package/src/mesh/mesh-routing.ts +291 -0
  321. package/src/mesh/mesh-runtime-store.ts +1853 -0
  322. package/src/mesh/mesh-scheduling-runtime.ts +198 -0
  323. package/src/mesh/mesh-task-inflight.ts +70 -0
  324. package/src/mesh/mesh-task-stats.ts +161 -0
  325. package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
  326. package/src/mesh/mesh-warmup-deadline.ts +152 -0
  327. package/src/mesh/mesh-work-queue.ts +1254 -141
  328. package/src/mesh/preview-freshness.ts +118 -0
  329. package/src/mesh/refine-config.ts +423 -0
  330. package/src/mesh/worktree-bootstrap-config.ts +450 -0
  331. package/src/providers/acp-provider-instance.ts +43 -10
  332. package/src/providers/approval-utils.d.ts +5 -0
  333. package/src/providers/approval-utils.ts +57 -5
  334. package/src/providers/chat-message-normalization.ts +92 -4
  335. package/src/providers/cli-provider-instance.ts +2177 -107
  336. package/src/providers/contracts.d.ts +55 -0
  337. package/src/providers/contracts.ts +160 -6
  338. package/src/providers/extension-provider-instance.ts +12 -7
  339. package/src/providers/external-sources.ts +218 -0
  340. package/src/providers/ide-provider-instance.ts +35 -12
  341. package/src/providers/manual-attendance.ts +85 -0
  342. package/src/providers/native-history/antigravity-cli-transcript.ts +1043 -0
  343. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  344. package/src/providers/native-history/codex-cli-transcript.ts +479 -0
  345. package/src/providers/native-history/constants.ts +19 -0
  346. package/src/providers/native-history/dispatcher.ts +373 -0
  347. package/src/providers/native-history/hermes-cli-transcript.ts +260 -0
  348. package/src/providers/native-history/index.ts +30 -0
  349. package/src/providers/provider-instance-manager.ts +71 -0
  350. package/src/providers/provider-instance.ts +19 -1
  351. package/src/providers/provider-loader.ts +668 -50
  352. package/src/providers/provider-schema.ts +87 -14
  353. package/src/providers/provider-trust.ts +114 -0
  354. package/src/providers/read-chat-contract.ts +76 -16
  355. package/src/providers/sdk/README.md +49 -0
  356. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  357. package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
  358. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  359. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
  360. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  361. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  362. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  363. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  364. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  365. package/src/providers/sdk/v1/index.ts +152 -0
  366. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  367. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  368. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  369. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
  370. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  371. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  372. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  373. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  374. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  375. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  376. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  377. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  378. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  379. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  380. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  381. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  382. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  383. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  384. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  385. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  386. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  387. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  388. package/src/providers/sdk/v1/validators/index.ts +19 -0
  389. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  390. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  391. package/src/providers/spec/adapter.ts +246 -0
  392. package/src/providers/spec/cli-adapter.ts +1064 -0
  393. package/src/providers/spec/evaluator.ts +407 -0
  394. package/src/providers/spec/fsm-driver.ts +1481 -0
  395. package/src/providers/spec/fsm-evaluator.ts +290 -0
  396. package/src/providers/spec/fsm-loader.ts +128 -0
  397. package/src/providers/spec/fsm-types.ts +301 -0
  398. package/src/providers/spec/native-history-executor.ts +1174 -0
  399. package/src/providers/spec/pre-launch-trust.ts +104 -0
  400. package/src/providers/spec/route.ts +51 -0
  401. package/src/providers/spec/types.ts +262 -0
  402. package/src/providers/status-monitor.d.ts +7 -7
  403. package/src/providers/status-monitor.ts +37 -22
  404. package/src/providers/transcript-v2.ts +567 -0
  405. package/src/providers/types/interactive-prompt.ts +536 -0
  406. package/src/providers/version-archive.ts +64 -24
  407. package/src/providers/working-dir.ts +23 -0
  408. package/src/repo-mesh-types.ts +758 -14
  409. package/src/runtime-defaults.ts +39 -0
  410. package/src/session-host/managed-host.ts +218 -0
  411. package/src/sessions/registry.ts +6 -0
  412. package/src/shared-types-extra.ts +2 -4
  413. package/src/shared-types.d.ts +8 -0
  414. package/src/shared-types.ts +64 -1
  415. package/src/status/builders.ts +26 -6
  416. package/src/status/normalize.ts +2 -0
  417. package/src/status/reporter.ts +19 -1
  418. package/src/status/snapshot.ts +95 -26
  419. package/src/system/hash.ts +23 -0
  420. package/src/system/host-memory.ts +29 -12
  421. package/src/system/load-better-sqlite3.ts +68 -0
  422. package/src/types.ts +5 -0
  423. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  424. package/dist/mesh/mesh-sync.d.ts +0 -53
  425. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  426. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  427. package/src/mesh/mesh-sync.ts +0 -111
@@ -14,6 +14,9 @@ import { DaemonCliManager } from './cli-manager.js';
14
14
  import type { ProviderLoader } from '../providers/provider-loader.js';
15
15
  import type { ProviderInstanceManager } from '../providers/provider-instance-manager.js';
16
16
  import { SessionRegistry } from '../sessions/registry.js';
17
+ export * from '../mesh/mesh-node-identity.js';
18
+ export * from '../mesh/mesh-refine-gates.js';
19
+ export * from '../mesh/mesh-coordinator-config.js';
17
20
  export interface SessionHostControlPlane {
18
21
  getDiagnostics(payload?: {
19
22
  includeSessions?: boolean;
@@ -55,12 +58,14 @@ export interface CommandRouterDeps {
55
58
  value: any[];
56
59
  };
57
60
  sessionRegistry: SessionRegistry;
58
- /** Callback for CDP manager creation after launch_ide */
61
+ /** Callback after CDP manager created (transport-specific extras) */
59
62
  onCdpManagerCreated?: (ideType: string, manager: DaemonCdpManager) => void;
60
63
  /** Callback after IDE connected (e.g., startAgentStreamPolling) */
61
64
  onIdeConnected?: () => void;
62
65
  /** Callback after status change (stop_ide, restart) */
63
66
  onStatusChange?: () => void;
67
+ /** Callback when a mesh state is invalidated */
68
+ onMeshStateChange?: (meshId: string) => void;
64
69
  /** Callback after chat-related commands */
65
70
  onPostChatCommand?: () => void;
66
71
  /** Get a connected CDP manager (for agent stream reset check) */
@@ -81,33 +86,197 @@ export interface CommandRouterResult {
81
86
  success: boolean;
82
87
  [key: string]: unknown;
83
88
  }
89
+ /**
90
+ * Confine a spec path to ~/.adhdev/providers, defeating both prefix-bypass
91
+ * (e.g. ".../providers-evil") and symlink escape. Resolves the real path of
92
+ * the *parent* directory (the file may not exist yet for writes), requires the
93
+ * basename to be a literal `*.json`, and re-joins under the verified parent so
94
+ * the returned path can't point outside the tree. Used by get/write_spec_source.
95
+ */
96
+ export declare function normalizeStandaloneHostCommandUrl(hostAddress: string): string;
97
+ export declare function buildMemberJoinNode(mesh: any, args: any, fallbackDaemonId?: string): Record<string, unknown> | null;
84
98
  export declare class DaemonCommandRouter {
85
99
  private deps;
86
100
  /** In-memory cache for cloud-originating meshes passed via inlineMesh.
87
101
  * Allows the MCP server to query mesh data via get_mesh even when
88
102
  * the mesh doesn't exist in the local meshes.json file. */
89
103
  private inlineMeshCache;
104
+ /** Tombstones for inline mesh nodes removed via remove_mesh_node, keyed by
105
+ * meshId → set of removed nodeIds. The dashboard keeps echoing the removed
106
+ * node in the inlineMesh it attaches to every command; without a tombstone,
107
+ * reconcileInlineMeshCache MERGEs it straight back (resurrection). A
108
+ * tombstoned node is skipped during reconcile only while its workspace is
109
+ * absent from disk — a genuine re-registration (same nodeId, workspace back
110
+ * on disk) clears the tombstone and merges normally, preserving clone
111
+ * worktree visibility and legitimate node re-creation. */
112
+ private removedInlineMeshNodeIds;
90
113
  /** Coordinator-owned whole-mesh aggregate status snapshots. Browser callers read this by default. */
91
114
  private aggregateMeshStatusCache;
115
+ /** Shared per-peer git_status probe dedup + recently-probed reuse gate.
116
+ * Spans separate mesh_status/get_mesh calls so the dashboard auto-retry
117
+ * loop cannot storm a slow peer with back-to-back refreshUpstream probes. */
118
+ private meshGitProbeCache;
119
+ /** Meshes with a background SWR freshen (async mesh_status refresh) already in
120
+ * flight — so a burst of interactive detail-opens serves the cached snapshot
121
+ * and coalesces onto ONE background refresh instead of storming the peers. */
122
+ private swrRefreshInFlight;
123
+ /** In-memory async Refinery jobs keyed by meshId:nodeId to reject/return duplicate in-flight requests. */
124
+ private runningRefineJobs;
125
+ /** Terminal async Refinery jobs preserve a clear answer after the worktree node has been removed. */
126
+ private terminalRefineJobs;
127
+ /** In-memory async batch Refinery jobs keyed by meshId (one batch convergence per mesh at a time). */
128
+ private runningRefineBatchJobs;
129
+ /** Terminal async batch Refinery jobs preserve the last batch outcome for late readers. */
130
+ private terminalRefineBatchJobs;
92
131
  constructor(deps: CommandRouterDeps);
93
132
  private cloneJsonValue;
94
133
  private hydrateCachedAggregateMeshStatusFromInline;
95
134
  private getCachedAggregateMeshStatus;
96
135
  private rememberAggregateMeshStatus;
136
+ getCachedInlineMeshNodes(): any[];
137
+ /**
138
+ * Resolve the REMOTE worker daemonId that owns a given session, when the session
139
+ * belongs to a mesh node hosted on a DIFFERENT daemon than this coordinator.
140
+ *
141
+ * The coordinator does not host remote-worker session instances in its own
142
+ * instanceManager/sessionRegistry — only their cached mesh-node metadata. A
143
+ * dashboard-issued session-scoped command (invoke_provider_script / resolve_action /
144
+ * set_mode / …) lands on the coordinator with a targetSessionId the coordinator can't
145
+ * find locally, and without forwarding it dies as "Live session not found". send_chat
146
+ * happens to survive (its target resolves to the worker by another route), but the
147
+ * controlbar commands do not — so the controlbar buttons appear to do nothing.
148
+ *
149
+ * Mirror the existing node-level remote-forward pattern (fast_forward_mesh_node etc.):
150
+ * scan the candidate mesh nodes for the one hosting the targetSessionId, and return its
151
+ * daemonId when that daemonId is a remote daemon (i.e. not this coordinator's own
152
+ * statusInstanceId). Returns undefined for a locally-hosted session (no forward — execute
153
+ * locally as before) or when ownership can't be resolved.
154
+ *
155
+ * The candidate set spans BOTH the cached inline-mesh nodes and the live aggregate
156
+ * mesh-status snapshots. The inline cache reliably carries only each node's single primary
157
+ * session (cachedStatus.activeSession), so a worker hosting more than one session exposes its
158
+ * non-primary sessions only on the aggregate snapshot nodes (status.activeSessions /
159
+ * activeSessionDetails, built from live session records). collectMeshNodeHostedSessionIds does
160
+ * the wider plural-shape scan so a controlbar/modal command targeting a non-primary remote
161
+ * session still resolves its owner — the singular readCachedInlineMeshActiveSessions semantics
162
+ * other consumers depend on stay untouched.
163
+ *
164
+ * CANCEL-STOP-RELAY: the session-id cache scan above only matches when the coordinator's
165
+ * cached status snapshot already lists the worker's session id in a recognized active-sessions
166
+ * shape. A worktree-clone worker session whose id form/timing differs from the cached snapshot
167
+ * (or is simply not yet reflected) misses the scan, so a stop that carries the authoritative
168
+ * owning nodeId (mesh_queue_cancel knows assignedNodeId) used to silently fail to forward.
169
+ * `ownerNodeIdHint` adds a deterministic fallback: when the session-id scan misses, resolve the
170
+ * owner daemonId by matching the node by id (meshNodeIdMatches — same form-tolerant compare the
171
+ * rest of the router uses, no new raw compare). The same self-loopback guard applies to both
172
+ * paths, so a coordinator-hosted node is still never force-forwarded to a remote form of itself.
173
+ */
174
+ resolveRemoteMeshSessionOwnerDaemonId(sessionId: string, ownerNodeIdHint?: string): string | undefined;
175
+ /**
176
+ * Candidate nodes for remote-session owner resolution: the cached inline-mesh nodes (which
177
+ * carry each node's primary session) plus the nodes from every cached aggregate mesh-status
178
+ * snapshot (which carry each node's full live session list). getCachedInlineMeshNodes()
179
+ * returns a fresh array, so appending the aggregate nodes never mutates cached state.
180
+ */
181
+ private collectMeshSessionOwnerCandidateNodes;
97
182
  getCachedInlineMesh(meshId: string, inlineMesh?: unknown): any | undefined;
98
183
  private warmInlineMeshCache;
99
184
  private getMeshForCommand;
100
185
  private invalidateAggregateMeshStatus;
186
+ /**
187
+ * Build the MedFamilyContext handed to RF-ROUTER MED family handlers. Binds the
188
+ * router-private collaborators those handlers need (mesh resolution, owner
189
+ * gating, inline-cache mutation, worktree / session cleanup, refine job
190
+ * starters, IDE stop/launch) plus the inline-mesh and git-probe caches. The
191
+ * `launchIde` field closes over the freshly-built context so restart_session /
192
+ * restart_ide invoke the IDE launch directly instead of recursing through
193
+ * executeDaemonCommand('launch_ide').
194
+ */
195
+ private buildMedFamilyContext;
196
+ /**
197
+ * Build the HighFamilyContext handed to RF-ROUTER HIGH family handlers. Binds
198
+ * the router-private collaborators those handlers need (mesh resolution, the
199
+ * aggregate-status memory cache + its bound read/write helpers, the
200
+ * running-refine-job table, inline-mesh + git-probe caches, and the router's
201
+ * own `execute` for the get_mesh_review_inbox mesh_status re-entry). HIGH
202
+ * handlers reach more router-owned state than MED, but the binding shape is
203
+ * the same: bound methods + direct field references, none reachable from
204
+ * `deps`.
205
+ */
206
+ private buildHighFamilyContext;
207
+ private requireMeshHostMutationOwner;
101
208
  private updateInlineMeshNode;
102
209
  private removeInlineMeshNode;
210
+ /**
211
+ * WORKTREE-BOOTSTRAP-COORD-STATE: mark a worktree node's bootstrap as reaching a
212
+ * terminal state (complete / failed) in THIS daemon's mesh view.
213
+ *
214
+ * Root cause this fixes: clone_mesh_node forwards the clone+bootstrap to the
215
+ * source node's daemon (the worktree's machine). persistWorktreeSetupState
216
+ * therefore flips worktreeBootstrap.status to 'complete' on the WORKER daemon's
217
+ * mesh object — never on the coordinator's. The coordinator only ever holds the
218
+ * 'running' state it stamped from the forwarded clone reply. The claim path's
219
+ * bootstrap gate (mesh-event-forwarding agent:ready / mesh-queue-assignment)
220
+ * reads the coordinator's mesh via getMeshWithCache, sees status==='running'
221
+ * forever, and DEFERS every claim — so the worktree_bootstrap_complete re-fire
222
+ * (triggerMeshQueue) loops against a gate that never opens: claim never lands,
223
+ * the idle session is re-registered each tick, and auto-launch keeps spawning
224
+ * fresh sessions (runaway worktree-session multiplication).
225
+ *
226
+ * Called from the worktree_bootstrap_complete/_failed event handler BEFORE the
227
+ * queue re-fire so the gate sees the terminal state and the deferred claim can
228
+ * finally land. Updates the inline cache (clone worktree nodes are inline-only)
229
+ * and, when the node also exists in local config, persists there too; both paths
230
+ * invalidate the aggregate status cache. Best-effort and idempotent.
231
+ */
232
+ markWorktreeBootstrapTerminalState(meshId: string, nodeId: string, status: 'complete' | 'failed', opts?: {
233
+ workspace?: string;
234
+ }): void;
235
+ private tombstoneRemovedInlineMeshNode;
236
+ /** Filter an incoming inline mesh against this mesh's tombstones before it is
237
+ * reconciled into the cache. A tombstoned node is dropped only while its
238
+ * workspace is still absent from disk; if the workspace is back (genuine
239
+ * re-registration), the tombstone is cleared and the node merges normally. */
240
+ private applyInlineMeshNodeTombstones;
103
241
  private normalizeMeshSessionCleanupMode;
104
242
  private sessionMatchesMeshNode;
243
+ /**
244
+ * Best-effort recursive removal of a managed worktree directory.
245
+ *
246
+ * The git-registry de-registration is the safety-critical step of worktree
247
+ * teardown; a leftover directory must never gate dropping the node from the
248
+ * mesh. On Windows, `fs.rmSync` can throw EINVAL/EPERM/EBUSY on submodule
249
+ * gitlink (`.git`) files, long paths, junctions, or while a just-stopped
250
+ * delegate session is still releasing a handle/cwd on the directory. This
251
+ * helper absorbs those errors (never throws), with bounded retries + backoff
252
+ * to give handles time to release, and reports whether residue remains.
253
+ */
254
+ private bestEffortRemoveWorktreeDir;
255
+ /**
256
+ * Non-destructive precheck mirroring every REFUSAL condition in
257
+ * {@link cleanupLocalWorktreeNode} — missing workspace / source-repo / branch
258
+ * metadata, unexpected (non-managed) path, branch mismatch — PLUS the
259
+ * dirty-worktree guard that `removeWorktree(requireClean)` enforces
260
+ * (`git status --porcelain`). It performs ZERO destructive actions: no
261
+ * `git worktree remove`, no `git worktree prune`, no directory deletion.
262
+ *
263
+ * remove_mesh_node calls this BEFORE any session cleanup so that a refusal
264
+ * (the common one being a dirty worktree) does not first stop/delete the
265
+ * delegated session and orphan it — the original ordering bug. Success/skip
266
+ * cases that the real cleanup handles idempotently (worktree path already
267
+ * gone, git-de-registered residue) are NOT refusals and return `{ ok: true }`.
268
+ *
269
+ * `force:true` skips the dirty guard, preserving `removeWorktree`'s
270
+ * `requireClean: !force` semantics. This is a read-only superset check; the
271
+ * authoritative `requireClean` guard inside `removeWorktree` is intentionally
272
+ * kept as a second line of defense against a precheck→execute race.
273
+ */
274
+ private precheckLocalWorktreeRemovable;
105
275
  private cleanupLocalWorktreeNode;
106
276
  private getWorktreeForceCleanupConvergence;
107
277
  private isCompletedHostedSession;
108
278
  private recordIntentionalMeshSessionStop;
109
279
  private cleanupMeshSessions;
110
- private traceSessionHostAction;
111
280
  /**
112
281
  * Unified command routing.
113
282
  * Returns result for all commands:
@@ -120,6 +289,114 @@ export declare class DaemonCommandRouter {
120
289
  * @param source Log source ('ws' | 'p2p' | 'standalone' | etc.)
121
290
  */
122
291
  execute(cmd: string, args: any, source?: string): Promise<CommandRouterResult>;
292
+ private buildRefineJobKey;
293
+ private buildRefineJobHandle;
294
+ private queueRefineJobEvent;
295
+ private appendRefineJobLedger;
296
+ /**
297
+ * On daemon restart, scan all mesh ledgers for refine jobs that were dispatched
298
+ * but never completed/failed (i.e. the daemon died mid-job). Re-queue each one
299
+ * so the job runs to completion automatically without coordinator intervention.
300
+ */
301
+ resumePendingRefineJobsOnStartup(): Promise<void>;
302
+ /**
303
+ * Synchronous refinery for a single worktree node — the gate pipeline that
304
+ * validates, preflights (patch-equivalence / submodule-reachability /
305
+ * no-op), merges, aligns submodules, cleans up the worktree node and
306
+ * (optionally) pushes. The body is a flat sequence of stage methods; each
307
+ * stage either returns a terminal CommandRouterResult (gate failure or a
308
+ * successful already-merged short-circuit) or `continue` with the extended
309
+ * context. Behavior — stage order, every early-exit, and every result shape —
310
+ * is identical to the previous single inlined body.
311
+ */
312
+ private executeMeshRefineNodeSynchronously;
313
+ /**
314
+ * resolve_refs stage: resolve the mesh / worktree node / source node /
315
+ * repoRoot, then the worktree branch, base branch, fetched base head and
316
+ * branch head. Seeds the RefineContext consumed by every later stage.
317
+ */
318
+ private refineResolveRefsStage;
319
+ /**
320
+ * validation stage: run the refinery validation gate (typecheck / test /
321
+ * lint / build per node config) and block on failure or when no allowlisted
322
+ * command was available. On pass, stores the summary on the context.
323
+ */
324
+ private refineValidationStage;
325
+ /**
326
+ * patch_equivalence stage: preflight that the worktree branch's cumulative
327
+ * patch is equivalent to base+branch. On a "behind base" branch, auto-rebase
328
+ * once and re-check; on an empty merge-tree with real branch changes, treat as
329
+ * already-merged-via-another-path and short-circuit to cleanup. Mutates the
330
+ * context's branchHead (after rebase) and patchEquivalence (rebased gate).
331
+ */
332
+ private refinePatchEquivalenceStage;
333
+ /**
334
+ * submodule_reachability stage: verify every submodule gitlink commit that
335
+ * would land via the merge is reachable from its configured remote main
336
+ * branch (optionally auto-publishing when policy allows). Blocks the merge
337
+ * when any commit is unreachable. Stores the result on the context.
338
+ */
339
+ private refineSubmoduleReachabilityStage;
340
+ /**
341
+ * effective_diff stage (no-op guard): block a silent no-op merge where the
342
+ * branch produces no effective root-tree diff against base — typically a
343
+ * submodule that has commits but whose root-level gitlink (pointer) bump was
344
+ * never committed, so the merge would land nothing real on main.
345
+ */
346
+ private refineEffectiveDiffStage;
347
+ /**
348
+ * merge + finalize stage: perform the --no-ff merge, align submodule
349
+ * checkouts after merge, clean up (remove) the worktree node per policy,
350
+ * append the refinery ledger entry, and (unless approval is required) push the
351
+ * base branch. Always terminal — produces the final CommandRouterResult.
352
+ */
353
+ private refineMergeAndFinalizeStage;
354
+ /**
355
+ * Batch refinery: converge multiple sibling worktree nodes onto the base branch
356
+ * in one sequential pipeline, absorbing the rebase + patch-equivalence churn that
357
+ * arises when several siblings touch the same submodule.
358
+ *
359
+ * Reuses executeMeshRefineNodeSynchronously per node — every node goes through the
360
+ * exact same validation / patch-equivalence / submodule-reachability / merge / cleanup
361
+ * gates, including its built-in auto-rebase onto fresh origin/<base>. Because each
362
+ * node fetches origin/<base> at the start of its own refine, a node merged earlier in
363
+ * the batch advances the base, and the next node's refine auto-rebases onto it before
364
+ * re-running patch-equivalence. No force-push, no reset — conflicting nodes are
365
+ * isolated as blocked_review while the rest of the batch proceeds.
366
+ */
367
+ private batchRefineMeshNodes;
368
+ /**
369
+ * Convergence core shared by the synchronous batch entry and the async batch job.
370
+ * Refines each node in order: the per-node refine pipeline fetches origin/<base>
371
+ * fresh, so each merged sibling advances the base before the next node's auto-rebase
372
+ * + patch-equivalence re-check. A blocked/failed node is isolated; the batch
373
+ * continues with the remaining nodes. Does NOT touch the per-node merge logic — it
374
+ * only sequences calls to executeMeshRefineNodeSynchronously and aggregates outcomes.
375
+ */
376
+ private runMeshRefineBatchConvergence;
377
+ private buildRefineBatchJobKey;
378
+ private buildRefineBatchJobHandle;
379
+ /**
380
+ * Emit a batch Refinery terminal/accepted event through the SAME pending-event +
381
+ * forward mechanism single-node refine uses (queueRefineJobEvent), so the
382
+ * coordinator's existing refine:accepted/completed/failed handling and message
383
+ * renderer apply unchanged. The aggregate per-node results ride along in `result`.
384
+ */
385
+ private queueRefineBatchJobEvent;
386
+ private appendRefineBatchJobLedger;
387
+ private finishMeshRefineBatchJob;
388
+ /**
389
+ * Async entry for the batch Refinery execute path. Mirrors startMeshRefineJob:
390
+ * resolves the plan synchronously (so target/ordering errors and the dry-run shape
391
+ * stay synchronous), then for execute=true registers an in-flight batch job, returns
392
+ * {async:true, status:'accepted', batch:true, ...plan} immediately, and runs the
393
+ * convergence loop in the background — emitting the same terminal refine event.
394
+ * Idempotent: a batch already in flight for this mesh returns the running handle
395
+ * with duplicate:true rather than spawning a second background job.
396
+ */
397
+ private startMeshRefineBatchJob;
398
+ private finishMeshRefineJob;
399
+ private startMeshRefineJob;
123
400
  /**
124
401
  * Daemon-level command execution (IDE start/stop/restart, CLI, detect, logs).
125
402
  * Returns null if not handled at this level → caller delegates to CommandHandler.
@@ -39,6 +39,46 @@ export declare function buildPinnedGlobalInstallCommand(options: {
39
39
  }): PinnedGlobalInstallCommand;
40
40
  export declare function getNpmExecOptions(platform?: NodeJS.Platform): NpmExecOptions;
41
41
  export declare function execNpmCommandSync(args: string[], options?: ExecFileSyncOptions, surface?: Pick<CurrentGlobalInstallSurface, 'npmExecutable' | 'npmArgsPrefix' | 'execOptions'>): Buffer | string;
42
- export declare function stopSessionHostProcesses(appName: string): void;
42
+ export declare function stopSessionHostProcesses(appName: string): Promise<void>;
43
+ /**
44
+ * Enumerate processes that have a locked native addon (conpty.node /
45
+ * ghostty-vt.dll) of *this* install memory-mapped.
46
+ *
47
+ * `stopSessionHostProcesses()` only knows the single managed session-host pid, so
48
+ * any *foreign* holder — e.g. an orphaned `pty_*probe*.cjs` left in `%TEMP%` — is
49
+ * invisible to it and keeps the addon locked through every install retry, dooming
50
+ * the upgrade with EBUSY. This scans by the module's full path so we only ever
51
+ * target a holder of the exact `packageRoot` being replaced (never an unrelated
52
+ * install's copy). Windows-only — these locks don't exist on POSIX.
53
+ */
54
+ export declare function listForeignNativeAddonHolders(packageRoot: string | null | undefined): Array<{
55
+ pid: number;
56
+ commandLine: string | null;
57
+ }>;
58
+ /**
59
+ * Terminate every foreign process holding this install's native addon mapped,
60
+ * then wait for each to actually exit so the mapping is released before npm
61
+ * copies the file into its staging dir. Returns what it found/killed so the
62
+ * caller can surface an actionable recovery message on failure.
63
+ */
64
+ export declare function stopForeignNativeAddonHolders(packageRoot: string | null | undefined, options?: {
65
+ parentPid?: number;
66
+ }): Promise<Array<{
67
+ pid: number;
68
+ commandLine: string | null;
69
+ killed: boolean;
70
+ }>>;
71
+ /**
72
+ * Best-effort removal of a leftover npm staging entry.
73
+ *
74
+ * A stale staging dir can hold a locked native binary — e.g. `ghostty-vt.dll`
75
+ * from `@adhdev/ghostty-vt-node` still mapped by a lingering session-host
76
+ * process — which makes `rmSync` throw `EPERM` on Windows. Staging cleanup is
77
+ * only housekeeping: the leftover is inert and npm creates its own fresh
78
+ * staging dir for the real install, so a lock on an old leftover must NOT abort
79
+ * the upgrade. Log and continue instead of letting the error propagate.
80
+ */
81
+ export declare function safeRemoveStaleEntry(target: string, label: string): void;
82
+ export declare function cleanupStaleGlobalInstallDirs(pkgName: string, surface: CurrentGlobalInstallSurface): void;
43
83
  export declare function spawnDetachedDaemonUpgradeHelper(payload: DaemonUpgradeHelperPayload): void;
44
84
  export declare function maybeRunDaemonUpgradeHelperFromEnv(): Promise<boolean>;
@@ -110,12 +110,21 @@ export declare function readProviderChatHistory(agentType: string, options?: {
110
110
  excludeRecentCount?: number;
111
111
  historyBehavior?: ProviderHistoryBehavior;
112
112
  scripts?: ProviderNativeHistoryScripts;
113
+ excludeInProgressTurn?: boolean;
114
+ sessionStartedAtMs?: number;
115
+ envOverrides?: Record<string, string>;
116
+ forceRefresh?: boolean;
113
117
  }): {
114
118
  messages: HistoryMessage[];
115
119
  hasMore: boolean;
116
120
  source: 'provider-native' | 'adhdev-mirror' | 'native-unavailable';
117
121
  sourcePath?: string;
118
122
  sourceMtimeMs?: number;
123
+ providerSessionId?: string;
124
+ workspace?: string;
125
+ nativeHistoryCoverage?: string;
126
+ partialReason?: string;
127
+ unavailableReason?: string;
119
128
  };
120
129
  export declare function listProviderHistorySessions(agentType: string, options?: {
121
130
  canonicalHistory?: ProviderCanonicalHistoryConfig;
@@ -86,6 +86,11 @@ export declare function isStableMachineId(machineId?: string | null): boolean;
86
86
  * Get the config directory path
87
87
  */
88
88
  export declare function getConfigDir(): string;
89
+ /**
90
+ * Get the daemon runtime data directory (~/.adhdev/daemon/).
91
+ * Distinct from the user-config dir so runtime state can be cleared independently.
92
+ */
93
+ export declare function getDaemonDataDir(): string;
89
94
  /**
90
95
  * Load configuration from disk
91
96
  */
@@ -5,7 +5,8 @@
5
5
  * Cloud mode syncs these to D1 via server routes; standalone mode
6
6
  * uses this file as the single source of truth.
7
7
  */
8
- import type { LocalMeshEntry, LocalMeshNodeEntry, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshNodeCapabilities, RepoMeshCoordinatorConfig } from '../repo-mesh-types.js';
8
+ import type { LocalMeshEntry, LocalMeshNodeEntry, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshNodeCapabilities, RepoMeshCoordinatorConfig, RepoMeshHostMetadata, RepoMeshDaemonRole } from '../repo-mesh-types.js';
9
+ import type { MagiPanel, MagiKindPanelMap, MagiSlot } from '@adhdev/mesh-shared';
9
10
  /**
10
11
  * Normalize a Git remote URL into a stable identity string.
11
12
  * e.g. "git@github.com:user/repo.git" → "github.com/user/repo"
@@ -22,6 +23,7 @@ export interface CreateMeshOptions {
22
23
  defaultBranch?: string;
23
24
  policy?: Partial<RepoMeshPolicy>;
24
25
  coordinator?: RepoMeshCoordinatorConfig;
26
+ meshHost?: RepoMeshHostMetadata;
25
27
  }
26
28
  export declare function createMesh(opts: CreateMeshOptions): LocalMeshEntry;
27
29
  export interface UpdateMeshOptions {
@@ -29,23 +31,149 @@ export interface UpdateMeshOptions {
29
31
  defaultBranch?: string;
30
32
  policy?: Partial<RepoMeshPolicy>;
31
33
  coordinator?: RepoMeshCoordinatorConfig;
34
+ meshHost?: RepoMeshHostMetadata;
32
35
  }
33
36
  export declare function updateMesh(meshId: string, opts: UpdateMeshOptions): LocalMeshEntry | undefined;
34
37
  export declare function deleteMesh(meshId: string): boolean;
38
+ export declare function tokenIdForManualPairing(token: string): string;
39
+ export interface ConfigureMeshHostPairingOptions {
40
+ hostAddress: string;
41
+ token: string;
42
+ now?: string;
43
+ }
44
+ export declare function configureMeshHostPairing(meshId: string, opts: ConfigureMeshHostPairingOptions): {
45
+ mesh: LocalMeshEntry;
46
+ meshHost: RepoMeshHostMetadata;
47
+ hostAddress: string;
48
+ } | undefined;
49
+ export interface CreateMeshHostPairingTokenOptions {
50
+ token?: string;
51
+ expiresAt?: string;
52
+ now?: string;
53
+ }
54
+ export declare function createMeshHostPairingToken(meshId: string, opts?: CreateMeshHostPairingTokenOptions): {
55
+ mesh: LocalMeshEntry;
56
+ meshHost: RepoMeshHostMetadata;
57
+ token: string;
58
+ tokenId: string;
59
+ expiresAt?: string;
60
+ } | undefined;
61
+ export interface MeshHostJoinMemberNodeInput {
62
+ id?: string;
63
+ workspace: string;
64
+ repoRoot?: string;
65
+ daemonId?: string;
66
+ machineId?: string;
67
+ userOverrides?: Partial<RepoMeshNodeCapabilities>;
68
+ policy?: RepoMeshNodePolicy;
69
+ role?: RepoMeshDaemonRole;
70
+ }
71
+ export interface ApplyMeshHostJoinOptions {
72
+ token: string;
73
+ memberNode: MeshHostJoinMemberNodeInput;
74
+ memberMeshId?: string;
75
+ now?: string;
76
+ }
77
+ export declare function applyMeshHostJoinRequest(meshId: string, opts: ApplyMeshHostJoinOptions): {
78
+ accepted: true;
79
+ mesh: LocalMeshEntry;
80
+ meshHost: RepoMeshHostMetadata;
81
+ node: LocalMeshNodeEntry;
82
+ tokenId: string;
83
+ } | {
84
+ accepted: false;
85
+ mesh?: LocalMeshEntry;
86
+ meshHost?: RepoMeshHostMetadata;
87
+ tokenId?: string;
88
+ reason: string;
89
+ } | undefined;
90
+ export declare function markMeshHostPairingJoined(meshId: string, opts: {
91
+ hostDaemonId?: string;
92
+ hostNodeId?: string;
93
+ joinedAt?: string;
94
+ token?: string;
95
+ tokenId?: string;
96
+ }): {
97
+ mesh: LocalMeshEntry;
98
+ meshHost: RepoMeshHostMetadata;
99
+ } | undefined;
35
100
  export interface AddNodeOptions {
36
101
  workspace: string;
37
102
  repoRoot?: string;
38
103
  daemonId?: string;
39
104
  machineId?: string;
105
+ capabilities?: string[];
40
106
  userOverrides?: Partial<RepoMeshNodeCapabilities>;
41
107
  policy?: RepoMeshNodePolicy;
42
108
  isLocalWorktree?: boolean;
43
109
  worktreeBranch?: string;
44
110
  clonedFromNodeId?: string;
111
+ worktreeBootstrap?: LocalMeshNodeEntry['worktreeBootstrap'];
112
+ role?: RepoMeshDaemonRole;
113
+ /** Owning daemon's machine nickname. Defaults to this daemon's local
114
+ * config.machineNickname when omitted — a node is always added by (and on)
115
+ * the daemon that owns its workspace (self/base node or a local worktree
116
+ * clone), so the local config is the correct source. */
117
+ machineNickname?: string;
45
118
  }
46
119
  export declare function addNode(meshId: string, opts: AddNodeOptions): LocalMeshNodeEntry | undefined;
47
120
  export declare function removeNode(meshId: string, nodeId: string): boolean;
48
121
  export declare function updateNode(meshId: string, nodeId: string, opts: {
49
122
  userOverrides?: Partial<RepoMeshNodeCapabilities>;
50
123
  policy?: RepoMeshNodePolicy;
124
+ worktreeBootstrap?: LocalMeshNodeEntry['worktreeBootstrap'];
125
+ /** Per-node instruction surfaced in the coordinator prompt. Pass an
126
+ * empty string or undefined to clear it. */
127
+ systemPrompt?: string;
128
+ /** Live self-reported platform/arch from the owning daemon's git_status
129
+ * envelope. Persisted distinctly from userOverrides (auto-detected, not
130
+ * operator intent) so capability-tag os=/arch= self-heals across loads. */
131
+ reportedPlatform?: string;
132
+ reportedArch?: string;
133
+ /** Owning daemon's self-reported machine nickname, carried on the
134
+ * git_status envelope. Persisted so the friendly label survives across
135
+ * coordinator restarts (mirrors reportedPlatform/reportedArch). */
136
+ reportedMachineNickname?: string;
51
137
  }): LocalMeshNodeEntry | undefined;
138
+ /**
139
+ * Validate + normalize a panel config before persisting. Mirrors the node-config
140
+ * normalization style (mesh-config addNode/updateNode): trims strings, drops
141
+ * empties, requires a provider per member, clamps replica counts. Throws on
142
+ * structurally invalid input so the calling tool returns a clear error rather than
143
+ * writing a malformed panel.
144
+ */
145
+ export declare function normalizeMagiPanel(config: unknown): MagiPanel;
146
+ /** All configured MAGI panels (machine-local), keyed by name. Empty when none. */
147
+ export declare function listMagiPanels(): Record<string, MagiPanel>;
148
+ /** A single panel by name, or undefined when not configured. */
149
+ export declare function getMagiPanel(name: string): MagiPanel | undefined;
150
+ /**
151
+ * Upsert a named panel into meshes.json. Defaults to refusing to clobber an
152
+ * existing panel (overwrite=false) — mirrors the mesh_init write/overwrite
153
+ * precedent. Returns the normalized, persisted panel.
154
+ */
155
+ export declare function upsertMagiPanel(name: string, config: unknown, opts?: {
156
+ overwrite?: boolean;
157
+ }): MagiPanel;
158
+ /** Remove a named panel. Returns true when a panel was removed. */
159
+ export declare function removeMagiPanel(name: string): boolean;
160
+ /**
161
+ * Validate + normalize a kind-panel's slots. Mirrors normalizeMagiPanel's member
162
+ * normalization: provider required per slot, trims strings, drops empties, clamps
163
+ * replica counts, and additionally carries an optional per-slot `model`. Throws on
164
+ * structurally invalid input (empty list / no provider) so the write returns a clear
165
+ * error. Returns the normalized slot array.
166
+ */
167
+ export declare function normalizeMagiSlots(slots: unknown): MagiSlot[];
168
+ /** All configured kind-panels (machine-local), keyed by task_kind. Empty when none. */
169
+ export declare function listMagiKindPanels(): MagiKindPanelMap;
170
+ /** The slot list for one task_kind, or undefined when the kind is not configured. */
171
+ export declare function getMagiKindPanel(kind: string): MagiSlot[] | undefined;
172
+ /**
173
+ * Upsert the slot list for one task_kind. Unlike named panels this ALWAYS overwrites
174
+ * (a kind has exactly one binding) — the editor pushes the full desired slot set.
175
+ * Returns the normalized, persisted slots.
176
+ */
177
+ export declare function setMagiKindPanel(kind: string, slots: unknown): MagiSlot[];
178
+ /** Remove the binding for one task_kind. Returns true when a binding was removed. */
179
+ export declare function removeMagiKindPanel(kind: string): boolean;