@adhdev/daemon-core 0.9.82-rc.46 → 0.9.82-rc.461

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 (440) 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 +48 -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-refine.d.ts +137 -0
  56. package/dist/commands/router-worktree-cleanup.d.ts +133 -0
  57. package/dist/commands/router.d.ts +241 -12
  58. package/dist/commands/upgrade-helper.d.ts +41 -1
  59. package/dist/config/chat-history.d.ts +9 -0
  60. package/dist/config/config.d.ts +19 -0
  61. package/dist/config/mesh-config.d.ts +136 -1
  62. package/dist/config/mesh-json-config.d.ts +199 -0
  63. package/dist/config/registry-resolver.d.ts +54 -0
  64. package/dist/config/repo-settings.d.ts +77 -0
  65. package/dist/daemon/dev-server.d.ts +0 -2
  66. package/dist/detection/cli-detector.d.ts +17 -0
  67. package/dist/detection/ide-detector.d.ts +13 -0
  68. package/dist/detection/win32-ide-version.d.ts +37 -0
  69. package/dist/git/change-impact-config.d.ts +159 -0
  70. package/dist/git/git-commands.d.ts +26 -2
  71. package/dist/git/git-diff.d.ts +6 -0
  72. package/dist/git/git-executor.d.ts +11 -0
  73. package/dist/git/git-status.d.ts +57 -0
  74. package/dist/git/git-types.d.ts +2 -50
  75. package/dist/git/git-worktree.d.ts +71 -1
  76. package/dist/git/index.d.ts +3 -1
  77. package/dist/index.d.ts +67 -15
  78. package/dist/index.js +58583 -25541
  79. package/dist/index.js.map +1 -1
  80. package/dist/index.mjs +58207 -25332
  81. package/dist/index.mjs.map +1 -1
  82. package/dist/installer.d.ts +1 -4
  83. package/dist/ipc/local-ipc-server.d.ts +91 -0
  84. package/dist/launch.d.ts +1 -1
  85. package/dist/logging/async-batch-writer.d.ts +10 -0
  86. package/dist/logging/debug-config.d.ts +16 -0
  87. package/dist/logging/log-redactor.d.ts +24 -0
  88. package/dist/logging/log-tail-reader.d.ts +81 -0
  89. package/dist/logging/logger.d.ts +1 -1
  90. package/dist/mesh/contracts.d.ts +230 -0
  91. package/dist/mesh/coordinator-prompt.d.ts +76 -0
  92. package/dist/mesh/coordinator-registry.d.ts +59 -0
  93. package/dist/mesh/mesh-active-work.d.ts +174 -0
  94. package/dist/mesh/mesh-clone-grace.d.ts +8 -0
  95. package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
  96. package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
  97. package/dist/mesh/mesh-event-classify.d.ts +7 -0
  98. package/dist/mesh/mesh-event-forwarding.d.ts +41 -0
  99. package/dist/mesh/mesh-event-trace.d.ts +21 -0
  100. package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
  101. package/dist/mesh/mesh-events-pending.d.ts +155 -0
  102. package/dist/mesh/mesh-events-stale.d.ts +61 -0
  103. package/dist/mesh/mesh-events-utils.d.ts +75 -0
  104. package/dist/mesh/mesh-events.d.ts +6 -49
  105. package/dist/mesh/mesh-fast-forward.d.ts +81 -0
  106. package/dist/mesh/mesh-host-ownership.d.ts +29 -0
  107. package/dist/mesh/mesh-init.d.ts +128 -0
  108. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
  109. package/dist/mesh/mesh-ledger.d.ts +133 -1
  110. package/dist/mesh/mesh-magi-status.d.ts +63 -0
  111. package/dist/mesh/mesh-missions.d.ts +189 -0
  112. package/dist/mesh/mesh-node-identity.d.ts +310 -0
  113. package/dist/mesh/mesh-queue-assignment.d.ts +158 -0
  114. package/dist/mesh/mesh-reconcile-loop.d.ts +80 -0
  115. package/dist/mesh/mesh-refine-batch.d.ts +68 -0
  116. package/dist/mesh/mesh-refine-gates.d.ts +428 -0
  117. package/dist/mesh/mesh-refine-status.d.ts +62 -0
  118. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  119. package/dist/mesh/mesh-routing.d.ts +70 -0
  120. package/dist/mesh/mesh-runtime-store.d.ts +493 -0
  121. package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
  122. package/dist/mesh/mesh-task-inflight.d.ts +46 -0
  123. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  124. package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
  125. package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
  126. package/dist/mesh/mesh-work-queue.d.ts +318 -5
  127. package/dist/mesh/preview-freshness.d.ts +28 -0
  128. package/dist/mesh/refine-config.d.ts +216 -0
  129. package/dist/mesh/worktree-bootstrap-config.d.ts +219 -0
  130. package/dist/providers/acp-provider-instance.d.ts +5 -0
  131. package/dist/providers/approval-utils.d.ts +45 -0
  132. package/dist/providers/chat-message-normalization.d.ts +58 -1
  133. package/dist/providers/cli-provider-instance.d.ts +290 -3
  134. package/dist/providers/contracts.d.ts +149 -6
  135. package/dist/providers/external-sources.d.ts +71 -0
  136. package/dist/providers/manual-attendance.d.ts +79 -0
  137. package/dist/providers/native-history/antigravity-claim-registry.d.ts +28 -0
  138. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +137 -0
  139. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  140. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  141. package/dist/providers/native-history/constants.d.ts +12 -0
  142. package/dist/providers/native-history/dispatcher.d.ts +31 -0
  143. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  144. package/dist/providers/native-history/index.d.ts +13 -0
  145. package/dist/providers/provider-instance-manager.d.ts +29 -0
  146. package/dist/providers/provider-instance.d.ts +30 -1
  147. package/dist/providers/provider-loader.d.ts +42 -5
  148. package/dist/providers/provider-trust.d.ts +31 -0
  149. package/dist/providers/read-chat-contract.d.ts +29 -0
  150. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  151. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
  152. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  153. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
  154. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  155. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  156. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  157. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  158. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  159. package/dist/providers/sdk/v1/index.d.ts +30 -0
  160. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  161. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  162. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  163. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  164. package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
  165. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  166. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  167. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  168. package/dist/providers/spec/adapter.d.ts +98 -0
  169. package/dist/providers/spec/cli-adapter.d.ts +223 -0
  170. package/dist/providers/spec/evaluator.d.ts +45 -0
  171. package/dist/providers/spec/fsm-driver.d.ts +449 -0
  172. package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
  173. package/dist/providers/spec/fsm-loader.d.ts +14 -0
  174. package/dist/providers/spec/fsm-types.d.ts +202 -0
  175. package/dist/providers/spec/native-history-executor.d.ts +41 -0
  176. package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
  177. package/dist/providers/spec/route.d.ts +4 -0
  178. package/dist/providers/spec/types.d.ts +222 -0
  179. package/dist/providers/status-monitor.d.ts +7 -7
  180. package/dist/providers/transcript-v2.d.ts +176 -0
  181. package/dist/providers/types/interactive-prompt.d.ts +84 -0
  182. package/dist/providers/working-dir.d.ts +17 -0
  183. package/dist/repo-mesh-types.d.ts +598 -12
  184. package/dist/runtime-defaults.d.ts +2 -0
  185. package/dist/session-host/managed-host.d.ts +64 -0
  186. package/dist/session-host/runtime-surface.d.ts +10 -16
  187. package/dist/sessions/registry.d.ts +6 -0
  188. package/dist/shared-types-extra.d.ts +2 -4
  189. package/dist/shared-types.d.ts +86 -55
  190. package/dist/status/normalize.d.ts +1 -1
  191. package/dist/status/normalize.js +1 -0
  192. package/dist/status/normalize.js.map +1 -1
  193. package/dist/status/normalize.mjs +1 -0
  194. package/dist/status/normalize.mjs.map +1 -1
  195. package/dist/status/reporter.d.ts +2 -0
  196. package/dist/status/snapshot.d.ts +26 -0
  197. package/dist/system/hash.d.ts +8 -0
  198. package/dist/system/load-better-sqlite3.d.ts +21 -0
  199. package/dist/types.d.ts +5 -0
  200. package/package.json +11 -4
  201. package/src/agent-stream/poller.ts +2 -3
  202. package/src/agent-stream/provider-adapter.ts +1 -1
  203. package/src/boot/daemon-lifecycle.ts +80 -14
  204. package/src/boot/process-hardening.ts +89 -0
  205. package/src/build-info.ts +73 -0
  206. package/src/chat/source-machine.ts +534 -0
  207. package/src/chat/source-resolver.ts +0 -0
  208. package/src/chat/subscription-updates.ts +20 -1
  209. package/src/cli-adapter-types.d.ts +3 -1
  210. package/src/cli-adapter-types.ts +68 -2
  211. package/src/cli-adapters/cli-script-runner.ts +421 -0
  212. package/src/cli-adapters/cli-state-engine.ts +1246 -0
  213. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  214. package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
  215. package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
  216. package/src/cli-adapters/provider-cli-parse.ts +19 -0
  217. package/src/cli-adapters/provider-cli-runtime.ts +56 -7
  218. package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
  219. package/src/cli-adapters/provider-cli-shared.ts +121 -11
  220. package/src/cli-adapters/pty-transport.ts +2 -1
  221. package/src/cli-adapters/pty-write-chunking.ts +106 -0
  222. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  223. package/src/cli-adapters/resolve-executable.ts +204 -0
  224. package/src/cli-adapters/session-host-transport.ts +2 -1
  225. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
  226. package/src/cli-adapters/terminal-backends/types.ts +10 -3
  227. package/src/cli-adapters/terminal-screen.ts +16 -81
  228. package/src/commands/chat-commands-debug-bundle.ts +398 -0
  229. package/src/commands/chat-commands-read.ts +2488 -0
  230. package/src/commands/chat-commands-scope.ts +54 -0
  231. package/src/commands/chat-commands-shared.ts +114 -0
  232. package/src/commands/chat-commands-write.ts +891 -0
  233. package/src/commands/chat-commands.ts +19 -1841
  234. package/src/commands/cli-manager.ts +596 -27
  235. package/src/commands/handler.ts +845 -2
  236. package/src/commands/high-family/index.ts +28 -0
  237. package/src/commands/high-family/mesh-coordinator-launch.ts +680 -0
  238. package/src/commands/high-family/mesh-events.ts +89 -0
  239. package/src/commands/high-family/mesh-status.ts +832 -0
  240. package/src/commands/high-family/types.ts +80 -0
  241. package/src/commands/low-family/coordinator-prompt.ts +72 -0
  242. package/src/commands/low-family/daemon-lifecycle.ts +120 -0
  243. package/src/commands/low-family/diagnostics.ts +57 -0
  244. package/src/commands/low-family/index.ts +37 -0
  245. package/src/commands/low-family/mesh-ledger.ts +62 -0
  246. package/src/commands/low-family/mesh-node-logs.ts +87 -0
  247. package/src/commands/low-family/notification.ts +116 -0
  248. package/src/commands/low-family/refine-config.ts +106 -0
  249. package/src/commands/low-family/session-host.ts +274 -0
  250. package/src/commands/low-family/spec-providerdev.ts +217 -0
  251. package/src/commands/low-family/status-meta.ts +112 -0
  252. package/src/commands/low-family/types.ts +39 -0
  253. package/src/commands/med-family/cli-agent.ts +241 -0
  254. package/src/commands/med-family/fast-forward.ts +230 -0
  255. package/src/commands/med-family/ide.ts +163 -0
  256. package/src/commands/med-family/index.ts +37 -0
  257. package/src/commands/med-family/mesh-crud.ts +1287 -0
  258. package/src/commands/med-family/mesh-host-pairing.ts +234 -0
  259. package/src/commands/med-family/mesh-queue.ts +167 -0
  260. package/src/commands/med-family/mesh-restart.ts +92 -0
  261. package/src/commands/med-family/types.ts +153 -0
  262. package/src/commands/mesh-coordinator.ts +334 -124
  263. package/src/commands/router-refine.ts +1711 -0
  264. package/src/commands/router-worktree-cleanup.ts +870 -0
  265. package/src/commands/router.ts +1025 -4070
  266. package/src/commands/stream-commands.ts +8 -0
  267. package/src/commands/upgrade-helper.ts +310 -45
  268. package/src/config/chat-history.ts +493 -24
  269. package/src/config/config.ts +30 -0
  270. package/src/config/mesh-config.ts +632 -23
  271. package/src/config/mesh-json-config.ts +376 -0
  272. package/src/config/recent-activity.ts +8 -2
  273. package/src/config/registry-resolver.ts +100 -0
  274. package/src/config/repo-settings.ts +111 -0
  275. package/src/daemon/dev-auto-implement.ts +3 -2
  276. package/src/daemon/dev-cli-debug.ts +10 -1
  277. package/src/daemon/dev-server.ts +0 -541
  278. package/src/detection/cli-detector.ts +94 -9
  279. package/src/detection/ide-detector.ts +55 -16
  280. package/src/detection/win32-ide-version.ts +106 -0
  281. package/src/git/change-impact-config.ts +354 -0
  282. package/src/git/git-commands.ts +112 -16
  283. package/src/git/git-diff.ts +81 -11
  284. package/src/git/git-executor.ts +12 -0
  285. package/src/git/git-status.ts +767 -48
  286. package/src/git/git-types.ts +14 -62
  287. package/src/git/git-worktree.ts +261 -4
  288. package/src/git/index.ts +17 -0
  289. package/src/index.ts +200 -12
  290. package/src/installer.d.ts +1 -1
  291. package/src/installer.ts +8 -6
  292. package/src/ipc/local-ipc-server.ts +278 -0
  293. package/src/launch.d.ts +1 -1
  294. package/src/launch.ts +37 -28
  295. package/src/logging/async-batch-writer.ts +55 -0
  296. package/src/logging/command-log.ts +7 -5
  297. package/src/logging/debug-config.ts +25 -0
  298. package/src/logging/debug-trace.ts +7 -2
  299. package/src/logging/log-redactor.ts +100 -0
  300. package/src/logging/log-tail-reader.ts +341 -0
  301. package/src/logging/logger.ts +14 -7
  302. package/src/mesh/contracts.ts +469 -0
  303. package/src/mesh/coordinator-prompt.ts +554 -34
  304. package/src/mesh/coordinator-registry.ts +121 -0
  305. package/src/mesh/mesh-active-work.ts +656 -0
  306. package/src/mesh/mesh-clone-grace.ts +68 -0
  307. package/src/mesh/mesh-coordinator-config.ts +97 -0
  308. package/src/mesh/mesh-delivery-policy.ts +315 -0
  309. package/src/mesh/mesh-event-classify.ts +73 -0
  310. package/src/mesh/mesh-event-forwarding.ts +1950 -0
  311. package/src/mesh/mesh-event-trace.ts +67 -0
  312. package/src/mesh/mesh-events-coordinator.ts +32 -0
  313. package/src/mesh/mesh-events-pending.ts +1132 -0
  314. package/src/mesh/mesh-events-stale.ts +440 -0
  315. package/src/mesh/mesh-events-utils.ts +443 -0
  316. package/src/mesh/mesh-events.ts +35 -1035
  317. package/src/mesh/mesh-fast-forward.ts +856 -0
  318. package/src/mesh/mesh-host-ownership.ts +111 -0
  319. package/src/mesh/mesh-init.ts +350 -0
  320. package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
  321. package/src/mesh/mesh-ledger.ts +873 -102
  322. package/src/mesh/mesh-magi-status.ts +223 -0
  323. package/src/mesh/mesh-missions.ts +449 -0
  324. package/src/mesh/mesh-node-identity.ts +2065 -0
  325. package/src/mesh/mesh-queue-assignment.ts +2233 -0
  326. package/src/mesh/mesh-reconcile-loop.ts +2397 -0
  327. package/src/mesh/mesh-refine-batch.ts +205 -0
  328. package/src/mesh/mesh-refine-gates.ts +1686 -0
  329. package/src/mesh/mesh-refine-status.ts +231 -0
  330. package/src/mesh/mesh-review-inbox.ts +308 -0
  331. package/src/mesh/mesh-routing.ts +291 -0
  332. package/src/mesh/mesh-runtime-store.ts +2056 -0
  333. package/src/mesh/mesh-scheduling-runtime.ts +198 -0
  334. package/src/mesh/mesh-task-inflight.ts +70 -0
  335. package/src/mesh/mesh-task-stats.ts +161 -0
  336. package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
  337. package/src/mesh/mesh-warmup-deadline.ts +152 -0
  338. package/src/mesh/mesh-work-queue.ts +1281 -141
  339. package/src/mesh/preview-freshness.ts +163 -0
  340. package/src/mesh/refine-config.ts +423 -0
  341. package/src/mesh/worktree-bootstrap-config.ts +599 -0
  342. package/src/providers/acp-provider-instance.ts +43 -10
  343. package/src/providers/approval-utils.d.ts +5 -0
  344. package/src/providers/approval-utils.ts +99 -5
  345. package/src/providers/chat-message-normalization.ts +126 -4
  346. package/src/providers/cli-provider-instance.ts +2456 -107
  347. package/src/providers/contracts.d.ts +55 -0
  348. package/src/providers/contracts.ts +160 -6
  349. package/src/providers/extension-provider-instance.ts +12 -7
  350. package/src/providers/external-sources.ts +218 -0
  351. package/src/providers/ide-provider-instance.ts +35 -12
  352. package/src/providers/manual-attendance.ts +105 -0
  353. package/src/providers/native-history/antigravity-claim-registry.ts +131 -0
  354. package/src/providers/native-history/antigravity-cli-transcript.ts +1193 -0
  355. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  356. package/src/providers/native-history/codex-cli-transcript.ts +479 -0
  357. package/src/providers/native-history/constants.ts +19 -0
  358. package/src/providers/native-history/dispatcher.ts +503 -0
  359. package/src/providers/native-history/hermes-cli-transcript.ts +260 -0
  360. package/src/providers/native-history/index.ts +30 -0
  361. package/src/providers/provider-instance-manager.ts +71 -0
  362. package/src/providers/provider-instance.ts +24 -1
  363. package/src/providers/provider-loader.ts +700 -55
  364. package/src/providers/provider-schema.ts +87 -14
  365. package/src/providers/provider-trust.ts +114 -0
  366. package/src/providers/read-chat-contract.ts +76 -16
  367. package/src/providers/sdk/README.md +49 -0
  368. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  369. package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
  370. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  371. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +261 -0
  372. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  373. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  374. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  375. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  376. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  377. package/src/providers/sdk/v1/index.ts +152 -0
  378. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  379. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  380. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  381. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
  382. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  383. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  384. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  385. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  386. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  387. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  388. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  389. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  390. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  391. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  392. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  393. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  394. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  395. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  396. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  397. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  398. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  399. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  400. package/src/providers/sdk/v1/validators/index.ts +19 -0
  401. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  402. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  403. package/src/providers/spec/adapter.ts +246 -0
  404. package/src/providers/spec/cli-adapter.ts +1064 -0
  405. package/src/providers/spec/evaluator.ts +407 -0
  406. package/src/providers/spec/fsm-driver.ts +1528 -0
  407. package/src/providers/spec/fsm-evaluator.ts +290 -0
  408. package/src/providers/spec/fsm-loader.ts +128 -0
  409. package/src/providers/spec/fsm-types.ts +301 -0
  410. package/src/providers/spec/native-history-executor.ts +1174 -0
  411. package/src/providers/spec/pre-launch-trust.ts +104 -0
  412. package/src/providers/spec/route.ts +51 -0
  413. package/src/providers/spec/types.ts +262 -0
  414. package/src/providers/status-monitor.d.ts +7 -7
  415. package/src/providers/status-monitor.ts +37 -22
  416. package/src/providers/transcript-v2.ts +567 -0
  417. package/src/providers/types/interactive-prompt.ts +536 -0
  418. package/src/providers/version-archive.ts +64 -24
  419. package/src/providers/working-dir.ts +23 -0
  420. package/src/repo-mesh-types.ts +836 -13
  421. package/src/runtime-defaults.ts +39 -0
  422. package/src/session-host/managed-host.ts +218 -0
  423. package/src/session-host/runtime-surface.ts +20 -80
  424. package/src/sessions/registry.ts +6 -0
  425. package/src/shared-types-extra.ts +2 -4
  426. package/src/shared-types.d.ts +8 -0
  427. package/src/shared-types.ts +124 -55
  428. package/src/status/builders.ts +26 -6
  429. package/src/status/normalize.ts +2 -0
  430. package/src/status/reporter.ts +19 -1
  431. package/src/status/snapshot.ts +95 -26
  432. package/src/system/hash.ts +23 -0
  433. package/src/system/host-memory.ts +29 -12
  434. package/src/system/load-better-sqlite3.ts +68 -0
  435. package/src/types.ts +5 -0
  436. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  437. package/dist/mesh/mesh-sync.d.ts +0 -53
  438. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  439. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  440. package/src/mesh/mesh-sync.ts +0 -111
@@ -0,0 +1,133 @@
1
+ import type { DaemonCommandRouter } from './router.js';
2
+ import type { RepoMeshSessionCleanupMode } from '../repo-mesh-types.js';
3
+ export declare function sessionMatchesMeshNode(self: DaemonCommandRouter, record: any, node: any, nodeId: string, sessionIds?: Set<string>): boolean;
4
+ /**
5
+ * Best-effort recursive removal of a managed worktree directory.
6
+ *
7
+ * The git-registry de-registration is the safety-critical step of worktree
8
+ * teardown; a leftover directory must never gate dropping the node from the
9
+ * mesh. On Windows, `fs.rmSync` can throw EINVAL/EPERM/EBUSY on submodule
10
+ * gitlink (`.git`) files, long paths, junctions, or while a just-stopped
11
+ * delegate session is still releasing a handle/cwd on the directory. This
12
+ * helper absorbs those errors (never throws), with bounded retries + backoff
13
+ * to give handles time to release, and reports whether residue remains.
14
+ */
15
+ export declare function bestEffortRemoveWorktreeDir(self: DaemonCommandRouter, dir: string): Promise<{
16
+ removed: boolean;
17
+ residue: boolean;
18
+ error?: string;
19
+ }>;
20
+ /**
21
+ * Non-destructive precheck mirroring every REFUSAL condition in
22
+ * {@link cleanupLocalWorktreeNode} — missing workspace / source-repo / branch
23
+ * metadata, unexpected (non-managed) path, branch mismatch — PLUS the
24
+ * dirty-worktree guard that `removeWorktree(requireClean)` enforces
25
+ * (`git status --porcelain`). It performs ZERO destructive actions: no
26
+ * `git worktree remove`, no `git worktree prune`, no directory deletion.
27
+ *
28
+ * remove_mesh_node calls this BEFORE any session cleanup so that a refusal
29
+ * (the common one being a dirty worktree) does not first stop/delete the
30
+ * delegated session and orphan it — the original ordering bug. Success/skip
31
+ * cases that the real cleanup handles idempotently (worktree path already
32
+ * gone, git-de-registered residue) are NOT refusals and return `{ ok: true }`.
33
+ *
34
+ * `force:true` skips the dirty guard, preserving `removeWorktree`'s
35
+ * `requireClean: !force` semantics. This is a read-only superset check; the
36
+ * authoritative `requireClean` guard inside `removeWorktree` is intentionally
37
+ * kept as a second line of defense against a precheck→execute race.
38
+ */
39
+ export declare function precheckLocalWorktreeRemovable(self: DaemonCommandRouter, args: {
40
+ mesh: any;
41
+ node: any;
42
+ nodeId: string;
43
+ force?: boolean;
44
+ }): Promise<{
45
+ ok: true;
46
+ } | {
47
+ ok: false;
48
+ code: string;
49
+ error: string;
50
+ recoveryHint: string;
51
+ }>;
52
+ export declare function cleanupLocalWorktreeNode(self: DaemonCommandRouter, args: {
53
+ mesh: any;
54
+ node: any;
55
+ nodeId: string;
56
+ force?: boolean;
57
+ }): Promise<{
58
+ success: true;
59
+ skipped?: boolean;
60
+ removedPath?: string;
61
+ repoRoot?: string;
62
+ reason?: string;
63
+ fallback?: string;
64
+ forced?: boolean;
65
+ convergence?: Record<string, unknown>;
66
+ recovered?: boolean;
67
+ residue?: boolean;
68
+ residueWarning?: string;
69
+ residueError?: string;
70
+ branchRefDeleted?: boolean;
71
+ branchRefReason?: string;
72
+ branchRefForced?: boolean;
73
+ branchRefWarning?: string;
74
+ } | {
75
+ success: false;
76
+ code: string;
77
+ error: string;
78
+ recoveryHint: string;
79
+ convergence?: Record<string, unknown>;
80
+ }>;
81
+ export declare function getWorktreeForceCleanupConvergence(self: DaemonCommandRouter, args: {
82
+ repoRoot: string;
83
+ workspace: string;
84
+ node: any;
85
+ }): Promise<{
86
+ allow: boolean;
87
+ status?: string;
88
+ source?: string;
89
+ ref?: string;
90
+ error?: string;
91
+ }>;
92
+ export declare function isCompletedHostedSession(self: DaemonCommandRouter, record: any): boolean;
93
+ export declare function recordIntentionalMeshSessionStop(self: DaemonCommandRouter, args: {
94
+ meshId: string;
95
+ nodeId: string;
96
+ node: any;
97
+ sessionId: string;
98
+ mode: RepoMeshSessionCleanupMode;
99
+ source: 'mesh_cleanup_sessions' | 'mesh_remove_node' | 'magi_session_cleanup';
100
+ action: 'stop_session' | 'delete_session_force';
101
+ }): Promise<void>;
102
+ export declare function cleanupMeshSessions(self: DaemonCommandRouter, args: {
103
+ meshId: string;
104
+ nodeId: string;
105
+ node: any;
106
+ mode: RepoMeshSessionCleanupMode;
107
+ sessionIds?: string[];
108
+ dryRun?: boolean;
109
+ source?: 'mesh_cleanup_sessions' | 'mesh_remove_node' | 'magi_session_cleanup';
110
+ /**
111
+ * MAGI auto-cleanup safety gate: a map of sessionId → the queue task id that
112
+ * session must have been AUTO-LAUNCHED for (record meta autoLaunchedForQueueTaskId).
113
+ * When set, a matched explicit session is only acted on if its record carries that
114
+ * exact marker. A reused idle session (no marker), the coordinator session, a
115
+ * re-assigned session, or any session whose marker points at a DIFFERENT task is
116
+ * skipped (reason 'auto_launch_marker_mismatch') — so MAGI never kills a session it
117
+ * didn't itself spawn for this fan-out. Only consulted alongside explicit sessionIds.
118
+ */
119
+ requireAutoLaunchedForTaskIds?: Record<string, string>;
120
+ /**
121
+ * Opt-in orphan reclaim (default false). See SESSION-ACCUMULATION-LEAK.
122
+ * When true, a workspace-only live_runtime session (no node binding) OR a
123
+ * live_runtime session bound to a node absent from `liveMeshNodeIds` is
124
+ * stopped instead of skipped by the conservative shared-daemon guard. A
125
+ * session whose meshNodeId is STILL in `liveMeshNodeIds` (active sibling)
126
+ * is never reclaimed — that is the shared-daemon safety this preserves.
127
+ */
128
+ reclaimOrphans?: boolean;
129
+ liveMeshNodeIds?: string[];
130
+ }): Promise<{
131
+ success: boolean;
132
+ [key: string]: unknown;
133
+ }>;
@@ -14,6 +14,11 @@ 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
+ import type { RepoMeshSessionCleanupMode } from '../repo-mesh-types.js';
18
+ import { MeshRefineBatchJobHandle, MeshRefineBatchTerminalJob, MeshRefineJobHandle, MeshRefineTerminalJob } from '../mesh/mesh-refine-gates.js';
19
+ export * from '../mesh/mesh-node-identity.js';
20
+ export * from '../mesh/mesh-refine-gates.js';
21
+ export * from '../mesh/mesh-coordinator-config.js';
17
22
  export interface SessionHostControlPlane {
18
23
  getDiagnostics(payload?: {
19
24
  includeSessions?: boolean;
@@ -55,12 +60,14 @@ export interface CommandRouterDeps {
55
60
  value: any[];
56
61
  };
57
62
  sessionRegistry: SessionRegistry;
58
- /** Callback for CDP manager creation after launch_ide */
63
+ /** Callback after CDP manager created (transport-specific extras) */
59
64
  onCdpManagerCreated?: (ideType: string, manager: DaemonCdpManager) => void;
60
65
  /** Callback after IDE connected (e.g., startAgentStreamPolling) */
61
66
  onIdeConnected?: () => void;
62
67
  /** Callback after status change (stop_ide, restart) */
63
68
  onStatusChange?: () => void;
69
+ /** Callback when a mesh state is invalidated */
70
+ onMeshStateChange?: (meshId: string) => void;
64
71
  /** Callback after chat-related commands */
65
72
  onPostChatCommand?: () => void;
66
73
  /** Get a connected CDP manager (for agent stream reset check) */
@@ -81,33 +88,251 @@ export interface CommandRouterResult {
81
88
  success: boolean;
82
89
  [key: string]: unknown;
83
90
  }
91
+ /**
92
+ * Confine a spec path to ~/.adhdev/providers, defeating both prefix-bypass
93
+ * (e.g. ".../providers-evil") and symlink escape. Resolves the real path of
94
+ * the *parent* directory (the file may not exist yet for writes), requires the
95
+ * basename to be a literal `*.json`, and re-joins under the verified parent so
96
+ * the returned path can't point outside the tree. Used by get/write_spec_source.
97
+ */
98
+ export declare function normalizeStandaloneHostCommandUrl(hostAddress: string): string;
99
+ export declare function buildMemberJoinNode(mesh: any, args: any, fallbackDaemonId?: string): Record<string, unknown> | null;
84
100
  export declare class DaemonCommandRouter {
85
- private deps;
101
+ /** Public (not private) so the extracted ./router-refine.ts orchestration can reach it via `self`. */
102
+ deps: CommandRouterDeps;
86
103
  /** In-memory cache for cloud-originating meshes passed via inlineMesh.
87
104
  * Allows the MCP server to query mesh data via get_mesh even when
88
105
  * the mesh doesn't exist in the local meshes.json file. */
89
106
  private inlineMeshCache;
107
+ /** Tombstones for inline mesh nodes removed via remove_mesh_node, keyed by
108
+ * meshId → set of removed nodeIds. The dashboard keeps echoing the removed
109
+ * node in the inlineMesh it attaches to every command; without a tombstone,
110
+ * reconcileInlineMeshCache MERGEs it straight back (resurrection). A
111
+ * tombstoned node is skipped during reconcile only while its workspace is
112
+ * absent from disk — a genuine re-registration (same nodeId, workspace back
113
+ * on disk) clears the tombstone and merges normally, preserving clone
114
+ * worktree visibility and legitimate node re-creation. */
115
+ private removedInlineMeshNodeIds;
90
116
  /** Coordinator-owned whole-mesh aggregate status snapshots. Browser callers read this by default. */
91
117
  private aggregateMeshStatusCache;
118
+ /** Shared per-peer git_status probe dedup + recently-probed reuse gate.
119
+ * Spans separate mesh_status/get_mesh calls so the dashboard auto-retry
120
+ * loop cannot storm a slow peer with back-to-back refreshUpstream probes. */
121
+ private meshGitProbeCache;
122
+ /** Meshes with a background SWR freshen (async mesh_status refresh) already in
123
+ * flight — so a burst of interactive detail-opens serves the cached snapshot
124
+ * and coalesces onto ONE background refresh instead of storming the peers. */
125
+ private swrRefreshInFlight;
126
+ /** In-memory async Refinery jobs keyed by meshId:nodeId to reject/return duplicate in-flight requests.
127
+ * Public (not private) so the extracted ./router-refine.ts orchestration can reach it via `self`. */
128
+ runningRefineJobs: Map<string, MeshRefineJobHandle>;
129
+ /** Terminal async Refinery jobs preserve a clear answer after the worktree node has been removed. */
130
+ terminalRefineJobs: Map<string, MeshRefineTerminalJob>;
131
+ /** In-memory async batch Refinery jobs keyed by meshId (one batch convergence per mesh at a time). */
132
+ runningRefineBatchJobs: Map<string, MeshRefineBatchJobHandle>;
133
+ /** Terminal async batch Refinery jobs preserve the last batch outcome for late readers. */
134
+ terminalRefineBatchJobs: Map<string, MeshRefineBatchTerminalJob>;
92
135
  constructor(deps: CommandRouterDeps);
93
136
  private cloneJsonValue;
94
137
  private hydrateCachedAggregateMeshStatusFromInline;
95
138
  private getCachedAggregateMeshStatus;
96
139
  private rememberAggregateMeshStatus;
140
+ getCachedInlineMeshNodes(): any[];
141
+ /**
142
+ * Resolve the REMOTE worker daemonId that owns a given session, when the session
143
+ * belongs to a mesh node hosted on a DIFFERENT daemon than this coordinator.
144
+ *
145
+ * The coordinator does not host remote-worker session instances in its own
146
+ * instanceManager/sessionRegistry — only their cached mesh-node metadata. A
147
+ * dashboard-issued session-scoped command (invoke_provider_script / resolve_action /
148
+ * set_mode / …) lands on the coordinator with a targetSessionId the coordinator can't
149
+ * find locally, and without forwarding it dies as "Live session not found". send_chat
150
+ * happens to survive (its target resolves to the worker by another route), but the
151
+ * controlbar commands do not — so the controlbar buttons appear to do nothing.
152
+ *
153
+ * Mirror the existing node-level remote-forward pattern (fast_forward_mesh_node etc.):
154
+ * scan the candidate mesh nodes for the one hosting the targetSessionId, and return its
155
+ * daemonId when that daemonId is a remote daemon (i.e. not this coordinator's own
156
+ * statusInstanceId). Returns undefined for a locally-hosted session (no forward — execute
157
+ * locally as before) or when ownership can't be resolved.
158
+ *
159
+ * The candidate set spans BOTH the cached inline-mesh nodes and the live aggregate
160
+ * mesh-status snapshots. The inline cache reliably carries only each node's single primary
161
+ * session (cachedStatus.activeSession), so a worker hosting more than one session exposes its
162
+ * non-primary sessions only on the aggregate snapshot nodes (status.activeSessions /
163
+ * activeSessionDetails, built from live session records). collectMeshNodeHostedSessionIds does
164
+ * the wider plural-shape scan so a controlbar/modal command targeting a non-primary remote
165
+ * session still resolves its owner — the singular readCachedInlineMeshActiveSessions semantics
166
+ * other consumers depend on stay untouched.
167
+ *
168
+ * CANCEL-STOP-RELAY: the session-id cache scan above only matches when the coordinator's
169
+ * cached status snapshot already lists the worker's session id in a recognized active-sessions
170
+ * shape. A worktree-clone worker session whose id form/timing differs from the cached snapshot
171
+ * (or is simply not yet reflected) misses the scan, so a stop that carries the authoritative
172
+ * owning nodeId (mesh_queue_cancel knows assignedNodeId) used to silently fail to forward.
173
+ * `ownerNodeIdHint` adds a deterministic fallback: when the session-id scan misses, resolve the
174
+ * owner daemonId by matching the node by id (meshNodeIdMatches — same form-tolerant compare the
175
+ * rest of the router uses, no new raw compare). The same self-loopback guard applies to both
176
+ * paths, so a coordinator-hosted node is still never force-forwarded to a remote form of itself.
177
+ */
178
+ resolveRemoteMeshSessionOwnerDaemonId(sessionId: string, ownerNodeIdHint?: string): string | undefined;
179
+ /**
180
+ * Candidate nodes for remote-session owner resolution: the cached inline-mesh nodes (which
181
+ * carry each node's primary session) plus the nodes from every cached aggregate mesh-status
182
+ * snapshot (which carry each node's full live session list). getCachedInlineMeshNodes()
183
+ * returns a fresh array, so appending the aggregate nodes never mutates cached state.
184
+ */
185
+ private collectMeshSessionOwnerCandidateNodes;
97
186
  getCachedInlineMesh(meshId: string, inlineMesh?: unknown): any | undefined;
98
187
  private warmInlineMeshCache;
99
- private getMeshForCommand;
100
- private invalidateAggregateMeshStatus;
188
+ getMeshForCommand(meshId: string, inlineMesh?: unknown, options?: {
189
+ preferInline?: boolean;
190
+ }): Promise<{
191
+ mesh: any;
192
+ inline: boolean;
193
+ source: 'inline_cache' | 'inline_bootstrap' | 'local_config';
194
+ } | null>;
195
+ invalidateAggregateMeshStatus(meshId: string): void;
196
+ /**
197
+ * Build the MedFamilyContext handed to RF-ROUTER MED family handlers. Binds the
198
+ * router-private collaborators those handlers need (mesh resolution, owner
199
+ * gating, inline-cache mutation, worktree / session cleanup, refine job
200
+ * starters, IDE stop/launch) plus the inline-mesh and git-probe caches. The
201
+ * `launchIde` field closes over the freshly-built context so restart_session /
202
+ * restart_ide invoke the IDE launch directly instead of recursing through
203
+ * executeDaemonCommand('launch_ide').
204
+ */
205
+ private buildMedFamilyContext;
206
+ /**
207
+ * Build the HighFamilyContext handed to RF-ROUTER HIGH family handlers. Binds
208
+ * the router-private collaborators those handlers need (mesh resolution, the
209
+ * aggregate-status memory cache + its bound read/write helpers, the
210
+ * running-refine-job table, inline-mesh + git-probe caches, and the router's
211
+ * own `execute` for the get_mesh_review_inbox mesh_status re-entry). HIGH
212
+ * handlers reach more router-owned state than MED, but the binding shape is
213
+ * the same: bound methods + direct field references, none reachable from
214
+ * `deps`.
215
+ */
216
+ private buildHighFamilyContext;
217
+ private requireMeshHostMutationOwner;
101
218
  private updateInlineMeshNode;
102
219
  private removeInlineMeshNode;
103
- private normalizeMeshSessionCleanupMode;
104
- private sessionMatchesMeshNode;
105
- private cleanupLocalWorktreeNode;
106
- private getWorktreeForceCleanupConvergence;
107
- private isCompletedHostedSession;
108
- private recordIntentionalMeshSessionStop;
109
- private cleanupMeshSessions;
110
- private traceSessionHostAction;
220
+ /**
221
+ * WORKTREE-BOOTSTRAP-COORD-STATE: mark a worktree node's bootstrap as reaching a
222
+ * terminal state (complete / failed) in THIS daemon's mesh view.
223
+ *
224
+ * Root cause this fixes: clone_mesh_node forwards the clone+bootstrap to the
225
+ * source node's daemon (the worktree's machine). persistWorktreeSetupState
226
+ * therefore flips worktreeBootstrap.status to 'complete' on the WORKER daemon's
227
+ * mesh object — never on the coordinator's. The coordinator only ever holds the
228
+ * 'running' state it stamped from the forwarded clone reply. The claim path's
229
+ * bootstrap gate (mesh-event-forwarding agent:ready / mesh-queue-assignment)
230
+ * reads the coordinator's mesh via getMeshWithCache, sees status==='running'
231
+ * forever, and DEFERS every claim — so the worktree_bootstrap_complete re-fire
232
+ * (triggerMeshQueue) loops against a gate that never opens: claim never lands,
233
+ * the idle session is re-registered each tick, and auto-launch keeps spawning
234
+ * fresh sessions (runaway worktree-session multiplication).
235
+ *
236
+ * Called from the worktree_bootstrap_complete/_failed event handler BEFORE the
237
+ * queue re-fire so the gate sees the terminal state and the deferred claim can
238
+ * finally land. Updates the inline cache (clone worktree nodes are inline-only)
239
+ * and, when the node also exists in local config, persists there too; both paths
240
+ * invalidate the aggregate status cache. Best-effort and idempotent.
241
+ */
242
+ markWorktreeBootstrapTerminalState(meshId: string, nodeId: string, status: 'complete' | 'failed', opts?: {
243
+ workspace?: string;
244
+ }): void;
245
+ private tombstoneRemovedInlineMeshNode;
246
+ /** Filter an incoming inline mesh against this mesh's tombstones before it is
247
+ * reconciled into the cache. A tombstoned node is dropped only while its
248
+ * workspace is still absent from disk; if the workspace is back (genuine
249
+ * re-registration), the tombstone is cleared and the node merges normally. */
250
+ private applyInlineMeshNodeTombstones;
251
+ normalizeMeshSessionCleanupMode(value: unknown): RepoMeshSessionCleanupMode;
252
+ sessionMatchesMeshNode(record: any, node: any, nodeId: string, sessionIds?: Set<string>): boolean;
253
+ bestEffortRemoveWorktreeDir(dir: string): Promise<{
254
+ removed: boolean;
255
+ residue: boolean;
256
+ error?: string;
257
+ }>;
258
+ precheckLocalWorktreeRemovable(args: {
259
+ mesh: any;
260
+ node: any;
261
+ nodeId: string;
262
+ force?: boolean;
263
+ }): Promise<{
264
+ ok: true;
265
+ } | {
266
+ ok: false;
267
+ code: string;
268
+ error: string;
269
+ recoveryHint: string;
270
+ }>;
271
+ cleanupLocalWorktreeNode(args: {
272
+ mesh: any;
273
+ node: any;
274
+ nodeId: string;
275
+ force?: boolean;
276
+ }): Promise<{
277
+ success: true;
278
+ skipped?: boolean;
279
+ removedPath?: string;
280
+ repoRoot?: string;
281
+ reason?: string;
282
+ fallback?: string;
283
+ forced?: boolean;
284
+ convergence?: Record<string, unknown>;
285
+ recovered?: boolean;
286
+ residue?: boolean;
287
+ residueWarning?: string;
288
+ residueError?: string;
289
+ branchRefDeleted?: boolean;
290
+ branchRefReason?: string;
291
+ branchRefForced?: boolean;
292
+ branchRefWarning?: string;
293
+ } | {
294
+ success: false;
295
+ code: string;
296
+ error: string;
297
+ recoveryHint: string;
298
+ convergence?: Record<string, unknown>;
299
+ }>;
300
+ getWorktreeForceCleanupConvergence(args: {
301
+ repoRoot: string;
302
+ workspace: string;
303
+ node: any;
304
+ }): Promise<{
305
+ allow: boolean;
306
+ status?: string;
307
+ source?: string;
308
+ ref?: string;
309
+ error?: string;
310
+ }>;
311
+ isCompletedHostedSession(record: any): boolean;
312
+ recordIntentionalMeshSessionStop(args: {
313
+ meshId: string;
314
+ nodeId: string;
315
+ node: any;
316
+ sessionId: string;
317
+ mode: RepoMeshSessionCleanupMode;
318
+ source: 'mesh_cleanup_sessions' | 'mesh_remove_node' | 'magi_session_cleanup';
319
+ action: 'stop_session' | 'delete_session_force';
320
+ }): Promise<void>;
321
+ cleanupMeshSessions(args: {
322
+ meshId: string;
323
+ nodeId: string;
324
+ node: any;
325
+ mode: RepoMeshSessionCleanupMode;
326
+ sessionIds?: string[];
327
+ dryRun?: boolean;
328
+ source?: 'mesh_cleanup_sessions' | 'mesh_remove_node' | 'magi_session_cleanup';
329
+ requireAutoLaunchedForTaskIds?: Record<string, string>;
330
+ reclaimOrphans?: boolean;
331
+ liveMeshNodeIds?: string[];
332
+ }): Promise<{
333
+ success: boolean;
334
+ [key: string]: unknown;
335
+ }>;
111
336
  /**
112
337
  * Unified command routing.
113
338
  * Returns result for all commands:
@@ -120,6 +345,10 @@ export declare class DaemonCommandRouter {
120
345
  * @param source Log source ('ws' | 'p2p' | 'standalone' | etc.)
121
346
  */
122
347
  execute(cmd: string, args: any, source?: string): Promise<CommandRouterResult>;
348
+ resumePendingRefineJobsOnStartup(): Promise<void>;
349
+ private batchRefineMeshNodes;
350
+ private startMeshRefineBatchJob;
351
+ private startMeshRefineJob;
123
352
  /**
124
353
  * Daemon-level command execution (IDE start/stop/restart, CLI, detect, logs).
125
354
  * 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;
@@ -71,6 +71,20 @@ export interface ADHDevConfig {
71
71
  disableUpstream?: boolean;
72
72
  providerSourceMode?: ProviderSourceMode;
73
73
  providerDir?: string;
74
+ /**
75
+ * Optional provider registry base URL override (for example a self-hosted
76
+ * registry). Highest-priority source in the registry resolver, ahead of the
77
+ * `ADHDEV_REGISTRY_URL` env var and the vendor default. See
78
+ * `config/registry-resolver.ts`.
79
+ */
80
+ registryUrl?: string;
81
+ /**
82
+ * Optional provider tarball (archive) URL override so self-hosters can point
83
+ * the daemon at their own provider mirror instead of the vendor GitHub repo.
84
+ * Highest-priority source, ahead of `ADHDEV_PROVIDER_TARBALL_URL` and the
85
+ * vendor default. See `config/registry-resolver.ts`.
86
+ */
87
+ providerTarballUrl?: string;
74
88
  /** Preferred daemon update channel. Defaults to stable/latest. */
75
89
  updateChannel?: ReleaseChannel;
76
90
  /**
@@ -86,6 +100,11 @@ export declare function isStableMachineId(machineId?: string | null): boolean;
86
100
  * Get the config directory path
87
101
  */
88
102
  export declare function getConfigDir(): string;
103
+ /**
104
+ * Get the daemon runtime data directory (~/.adhdev/daemon/).
105
+ * Distinct from the user-config dir so runtime state can be cleared independently.
106
+ */
107
+ export declare function getDaemonDataDir(): string;
89
108
  /**
90
109
  * Load configuration from disk
91
110
  */