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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/dist/boot/daemon-lifecycle.d.ts +9 -0
  2. package/dist/boot/process-hardening.d.ts +50 -0
  3. package/dist/build-info.d.ts +37 -0
  4. package/dist/chat/source-machine.d.ts +166 -0
  5. package/dist/chat/source-resolver.d.ts +104 -0
  6. package/dist/chat/subscription-updates.d.ts +1 -0
  7. package/dist/cli-adapter-types.d.ts +68 -2
  8. package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
  9. package/dist/cli-adapters/cli-state-engine.d.ts +200 -0
  10. package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
  11. package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
  12. package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
  13. package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
  14. package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
  15. package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
  16. package/dist/cli-adapters/resolve-executable.d.ts +69 -0
  17. package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
  18. package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
  19. package/dist/cli-adapters/terminal-screen.d.ts +4 -11
  20. package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
  21. package/dist/commands/chat-commands-read.d.ts +7 -0
  22. package/dist/commands/chat-commands-scope.d.ts +39 -0
  23. package/dist/commands/chat-commands-shared.d.ts +33 -0
  24. package/dist/commands/chat-commands-write.d.ts +14 -0
  25. package/dist/commands/chat-commands.d.ts +10 -23
  26. package/dist/commands/cli-manager.d.ts +15 -1
  27. package/dist/commands/handler.d.ts +125 -0
  28. package/dist/commands/high-family/index.d.ts +3 -0
  29. package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
  30. package/dist/commands/high-family/mesh-events.d.ts +2 -0
  31. package/dist/commands/high-family/mesh-status.d.ts +2 -0
  32. package/dist/commands/high-family/types.d.ts +60 -0
  33. package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
  34. package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
  35. package/dist/commands/low-family/diagnostics.d.ts +2 -0
  36. package/dist/commands/low-family/index.d.ts +3 -0
  37. package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
  38. package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
  39. package/dist/commands/low-family/notification.d.ts +2 -0
  40. package/dist/commands/low-family/refine-config.d.ts +2 -0
  41. package/dist/commands/low-family/session-host.d.ts +2 -0
  42. package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
  43. package/dist/commands/low-family/status-meta.d.ts +2 -0
  44. package/dist/commands/low-family/types.d.ts +33 -0
  45. package/dist/commands/med-family/cli-agent.d.ts +2 -0
  46. package/dist/commands/med-family/fast-forward.d.ts +2 -0
  47. package/dist/commands/med-family/ide.d.ts +10 -0
  48. package/dist/commands/med-family/index.d.ts +3 -0
  49. package/dist/commands/med-family/mesh-crud.d.ts +29 -0
  50. package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
  51. package/dist/commands/med-family/mesh-queue.d.ts +2 -0
  52. package/dist/commands/med-family/mesh-restart.d.ts +2 -0
  53. package/dist/commands/med-family/types.d.ts +142 -0
  54. package/dist/commands/mesh-coordinator.d.ts +85 -1
  55. package/dist/commands/router.d.ts +276 -2
  56. package/dist/commands/upgrade-helper.d.ts +41 -1
  57. package/dist/config/chat-history.d.ts +9 -0
  58. package/dist/config/config.d.ts +5 -0
  59. package/dist/config/mesh-config.d.ts +120 -1
  60. package/dist/config/mesh-json-config.d.ts +199 -0
  61. package/dist/config/repo-settings.d.ts +77 -0
  62. package/dist/daemon/dev-server.d.ts +0 -2
  63. package/dist/detection/ide-detector.d.ts +13 -0
  64. package/dist/detection/win32-ide-version.d.ts +37 -0
  65. package/dist/git/change-impact-config.d.ts +159 -0
  66. package/dist/git/git-commands.d.ts +11 -1
  67. package/dist/git/git-diff.d.ts +6 -0
  68. package/dist/git/git-executor.d.ts +11 -0
  69. package/dist/git/git-status.d.ts +57 -0
  70. package/dist/git/git-types.d.ts +2 -50
  71. package/dist/git/git-worktree.d.ts +71 -1
  72. package/dist/git/index.d.ts +3 -1
  73. package/dist/index.d.ts +64 -14
  74. package/dist/index.js +50679 -20122
  75. package/dist/index.js.map +1 -1
  76. package/dist/index.mjs +47546 -17153
  77. package/dist/index.mjs.map +1 -1
  78. package/dist/installer.d.ts +1 -4
  79. package/dist/ipc/local-ipc-server.d.ts +91 -0
  80. package/dist/launch.d.ts +1 -1
  81. package/dist/logging/async-batch-writer.d.ts +10 -0
  82. package/dist/logging/log-redactor.d.ts +24 -0
  83. package/dist/logging/log-tail-reader.d.ts +81 -0
  84. package/dist/logging/logger.d.ts +1 -1
  85. package/dist/mesh/contracts.d.ts +164 -0
  86. package/dist/mesh/coordinator-prompt.d.ts +89 -0
  87. package/dist/mesh/coordinator-registry.d.ts +59 -0
  88. package/dist/mesh/mesh-active-work.d.ts +174 -0
  89. package/dist/mesh/mesh-clone-grace.d.ts +8 -0
  90. package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
  91. package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
  92. package/dist/mesh/mesh-event-classify.d.ts +5 -0
  93. package/dist/mesh/mesh-event-forwarding.d.ts +41 -0
  94. package/dist/mesh/mesh-event-trace.d.ts +21 -0
  95. package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
  96. package/dist/mesh/mesh-events-pending.d.ts +69 -0
  97. package/dist/mesh/mesh-events-stale.d.ts +61 -0
  98. package/dist/mesh/mesh-events-utils.d.ts +75 -0
  99. package/dist/mesh/mesh-events.d.ts +6 -49
  100. package/dist/mesh/mesh-fast-forward.d.ts +81 -0
  101. package/dist/mesh/mesh-host-ownership.d.ts +29 -0
  102. package/dist/mesh/mesh-init.d.ts +128 -0
  103. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
  104. package/dist/mesh/mesh-ledger.d.ts +77 -1
  105. package/dist/mesh/mesh-magi-status.d.ts +63 -0
  106. package/dist/mesh/mesh-missions.d.ts +189 -0
  107. package/dist/mesh/mesh-node-identity.d.ts +289 -0
  108. package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
  109. package/dist/mesh/mesh-reconcile-loop.d.ts +65 -0
  110. package/dist/mesh/mesh-refine-batch.d.ts +68 -0
  111. package/dist/mesh/mesh-refine-gates.d.ts +428 -0
  112. package/dist/mesh/mesh-refine-status.d.ts +62 -0
  113. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  114. package/dist/mesh/mesh-routing.d.ts +70 -0
  115. package/dist/mesh/mesh-runtime-store.d.ts +450 -0
  116. package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
  117. package/dist/mesh/mesh-task-inflight.d.ts +46 -0
  118. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  119. package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
  120. package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
  121. package/dist/mesh/mesh-work-queue.d.ts +300 -5
  122. package/dist/mesh/preview-freshness.d.ts +18 -0
  123. package/dist/mesh/refine-config.d.ts +216 -0
  124. package/dist/mesh/worktree-bootstrap-config.d.ts +145 -0
  125. package/dist/providers/acp-provider-instance.d.ts +5 -0
  126. package/dist/providers/approval-utils.d.ts +20 -0
  127. package/dist/providers/chat-message-normalization.d.ts +31 -1
  128. package/dist/providers/cli-provider-instance.d.ts +252 -3
  129. package/dist/providers/contracts.d.ts +149 -6
  130. package/dist/providers/external-sources.d.ts +71 -0
  131. package/dist/providers/manual-attendance.d.ts +63 -0
  132. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -0
  133. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  134. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  135. package/dist/providers/native-history/constants.d.ts +12 -0
  136. package/dist/providers/native-history/dispatcher.d.ts +27 -0
  137. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  138. package/dist/providers/native-history/index.d.ts +13 -0
  139. package/dist/providers/provider-instance-manager.d.ts +29 -0
  140. package/dist/providers/provider-instance.d.ts +23 -1
  141. package/dist/providers/provider-loader.d.ts +26 -4
  142. package/dist/providers/provider-trust.d.ts +31 -0
  143. package/dist/providers/read-chat-contract.d.ts +29 -0
  144. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  145. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
  146. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  147. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
  148. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  149. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  150. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  151. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  152. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  153. package/dist/providers/sdk/v1/index.d.ts +30 -0
  154. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  155. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  156. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  157. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  158. package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
  159. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  160. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  161. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  162. package/dist/providers/spec/adapter.d.ts +91 -0
  163. package/dist/providers/spec/cli-adapter.d.ts +223 -0
  164. package/dist/providers/spec/evaluator.d.ts +45 -0
  165. package/dist/providers/spec/fsm-driver.d.ts +422 -0
  166. package/dist/providers/spec/fsm-evaluator.d.ts +76 -0
  167. package/dist/providers/spec/fsm-loader.d.ts +14 -0
  168. package/dist/providers/spec/fsm-types.d.ts +174 -0
  169. package/dist/providers/spec/native-history-executor.d.ts +41 -0
  170. package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
  171. package/dist/providers/spec/route.d.ts +4 -0
  172. package/dist/providers/spec/types.d.ts +222 -0
  173. package/dist/providers/status-monitor.d.ts +7 -7
  174. package/dist/providers/transcript-v2.d.ts +176 -0
  175. package/dist/providers/types/interactive-prompt.d.ts +84 -0
  176. package/dist/providers/working-dir.d.ts +17 -0
  177. package/dist/repo-mesh-types.d.ts +509 -13
  178. package/dist/runtime-defaults.d.ts +2 -0
  179. package/dist/sessions/registry.d.ts +6 -0
  180. package/dist/shared-types-extra.d.ts +2 -4
  181. package/dist/shared-types.d.ts +59 -2
  182. package/dist/status/normalize.d.ts +1 -1
  183. package/dist/status/normalize.js +1 -0
  184. package/dist/status/normalize.js.map +1 -1
  185. package/dist/status/normalize.mjs +1 -0
  186. package/dist/status/normalize.mjs.map +1 -1
  187. package/dist/status/reporter.d.ts +2 -0
  188. package/dist/status/snapshot.d.ts +26 -0
  189. package/dist/system/hash.d.ts +8 -0
  190. package/dist/system/load-better-sqlite3.d.ts +21 -0
  191. package/dist/types.d.ts +5 -0
  192. package/package.json +7 -3
  193. package/src/agent-stream/poller.ts +2 -3
  194. package/src/agent-stream/provider-adapter.ts +1 -1
  195. package/src/boot/daemon-lifecycle.ts +63 -12
  196. package/src/boot/process-hardening.ts +89 -0
  197. package/src/build-info.ts +73 -0
  198. package/src/chat/source-machine.ts +534 -0
  199. package/src/chat/source-resolver.ts +0 -0
  200. package/src/chat/subscription-updates.ts +20 -1
  201. package/src/cli-adapter-types.d.ts +3 -1
  202. package/src/cli-adapter-types.ts +68 -2
  203. package/src/cli-adapters/cli-script-runner.ts +421 -0
  204. package/src/cli-adapters/cli-state-engine.ts +1246 -0
  205. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  206. package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
  207. package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
  208. package/src/cli-adapters/provider-cli-parse.ts +19 -0
  209. package/src/cli-adapters/provider-cli-runtime.ts +56 -7
  210. package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
  211. package/src/cli-adapters/provider-cli-shared.ts +121 -11
  212. package/src/cli-adapters/pty-transport.ts +2 -1
  213. package/src/cli-adapters/pty-write-chunking.ts +106 -0
  214. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  215. package/src/cli-adapters/resolve-executable.ts +204 -0
  216. package/src/cli-adapters/session-host-transport.ts +2 -1
  217. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
  218. package/src/cli-adapters/terminal-backends/types.ts +10 -3
  219. package/src/cli-adapters/terminal-screen.ts +16 -81
  220. package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
  221. package/src/commands/chat-commands-debug-bundle.ts +398 -0
  222. package/src/commands/chat-commands-read.ts +2327 -0
  223. package/src/commands/chat-commands-scope.ts +54 -0
  224. package/src/commands/chat-commands-shared.ts +114 -0
  225. package/src/commands/chat-commands-write.ts +891 -0
  226. package/src/commands/chat-commands.ts +19 -1841
  227. package/src/commands/cli-manager.ts +572 -27
  228. package/src/commands/handler.ts +841 -2
  229. package/src/commands/high-family/index.ts +28 -0
  230. package/src/commands/high-family/mesh-coordinator-launch.ts +678 -0
  231. package/src/commands/high-family/mesh-events.ts +80 -0
  232. package/src/commands/high-family/mesh-status.ts +714 -0
  233. package/src/commands/high-family/types.ts +76 -0
  234. package/src/commands/low-family/coordinator-prompt.ts +72 -0
  235. package/src/commands/low-family/daemon-lifecycle.ts +107 -0
  236. package/src/commands/low-family/diagnostics.ts +57 -0
  237. package/src/commands/low-family/index.ts +37 -0
  238. package/src/commands/low-family/mesh-ledger.ts +62 -0
  239. package/src/commands/low-family/mesh-node-logs.ts +87 -0
  240. package/src/commands/low-family/notification.ts +116 -0
  241. package/src/commands/low-family/refine-config.ts +106 -0
  242. package/src/commands/low-family/session-host.ts +274 -0
  243. package/src/commands/low-family/spec-providerdev.ts +217 -0
  244. package/src/commands/low-family/status-meta.ts +112 -0
  245. package/src/commands/low-family/types.ts +39 -0
  246. package/src/commands/med-family/cli-agent.ts +238 -0
  247. package/src/commands/med-family/fast-forward.ts +230 -0
  248. package/src/commands/med-family/ide.ts +163 -0
  249. package/src/commands/med-family/index.ts +37 -0
  250. package/src/commands/med-family/mesh-crud.ts +1242 -0
  251. package/src/commands/med-family/mesh-host-pairing.ts +234 -0
  252. package/src/commands/med-family/mesh-queue.ts +167 -0
  253. package/src/commands/med-family/mesh-restart.ts +92 -0
  254. package/src/commands/med-family/types.ts +143 -0
  255. package/src/commands/mesh-coordinator.ts +334 -124
  256. package/src/commands/router.ts +2846 -3484
  257. package/src/commands/stream-commands.ts +8 -0
  258. package/src/commands/upgrade-helper.ts +310 -45
  259. package/src/config/chat-history.ts +493 -24
  260. package/src/config/config.ts +12 -0
  261. package/src/config/mesh-config.ts +593 -22
  262. package/src/config/mesh-json-config.ts +376 -0
  263. package/src/config/recent-activity.ts +8 -2
  264. package/src/config/repo-settings.ts +111 -0
  265. package/src/daemon/dev-auto-implement.ts +3 -2
  266. package/src/daemon/dev-cli-debug.ts +10 -1
  267. package/src/daemon/dev-server.ts +0 -541
  268. package/src/detection/cli-detector.ts +28 -9
  269. package/src/detection/ide-detector.ts +55 -16
  270. package/src/detection/win32-ide-version.ts +106 -0
  271. package/src/git/change-impact-config.ts +354 -0
  272. package/src/git/git-commands.ts +59 -15
  273. package/src/git/git-diff.ts +81 -11
  274. package/src/git/git-executor.ts +12 -0
  275. package/src/git/git-status.ts +767 -48
  276. package/src/git/git-types.ts +14 -62
  277. package/src/git/git-worktree.ts +261 -4
  278. package/src/git/index.ts +17 -0
  279. package/src/index.ts +196 -12
  280. package/src/installer.d.ts +1 -1
  281. package/src/installer.ts +8 -6
  282. package/src/ipc/local-ipc-server.ts +278 -0
  283. package/src/launch.d.ts +1 -1
  284. package/src/launch.ts +37 -28
  285. package/src/logging/async-batch-writer.ts +55 -0
  286. package/src/logging/command-log.ts +7 -5
  287. package/src/logging/log-redactor.ts +100 -0
  288. package/src/logging/log-tail-reader.ts +341 -0
  289. package/src/logging/logger.ts +14 -7
  290. package/src/mesh/contracts.ts +338 -0
  291. package/src/mesh/coordinator-prompt.ts +415 -34
  292. package/src/mesh/coordinator-registry.ts +121 -0
  293. package/src/mesh/mesh-active-work.ts +645 -0
  294. package/src/mesh/mesh-clone-grace.ts +68 -0
  295. package/src/mesh/mesh-coordinator-config.ts +97 -0
  296. package/src/mesh/mesh-delivery-policy.ts +315 -0
  297. package/src/mesh/mesh-event-classify.ts +51 -0
  298. package/src/mesh/mesh-event-forwarding.ts +1897 -0
  299. package/src/mesh/mesh-event-trace.ts +67 -0
  300. package/src/mesh/mesh-events-coordinator.ts +32 -0
  301. package/src/mesh/mesh-events-pending.ts +656 -0
  302. package/src/mesh/mesh-events-stale.ts +389 -0
  303. package/src/mesh/mesh-events-utils.ts +443 -0
  304. package/src/mesh/mesh-events.ts +33 -1035
  305. package/src/mesh/mesh-fast-forward.ts +843 -0
  306. package/src/mesh/mesh-host-ownership.ts +111 -0
  307. package/src/mesh/mesh-init.ts +350 -0
  308. package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
  309. package/src/mesh/mesh-ledger.ts +656 -102
  310. package/src/mesh/mesh-magi-status.ts +223 -0
  311. package/src/mesh/mesh-missions.ts +449 -0
  312. package/src/mesh/mesh-node-identity.ts +1887 -0
  313. package/src/mesh/mesh-queue-assignment.ts +1924 -0
  314. package/src/mesh/mesh-reconcile-loop.ts +1997 -0
  315. package/src/mesh/mesh-refine-batch.ts +205 -0
  316. package/src/mesh/mesh-refine-gates.ts +1673 -0
  317. package/src/mesh/mesh-refine-status.ts +231 -0
  318. package/src/mesh/mesh-review-inbox.ts +307 -0
  319. package/src/mesh/mesh-routing.ts +291 -0
  320. package/src/mesh/mesh-runtime-store.ts +1853 -0
  321. package/src/mesh/mesh-scheduling-runtime.ts +198 -0
  322. package/src/mesh/mesh-task-inflight.ts +70 -0
  323. package/src/mesh/mesh-task-stats.ts +161 -0
  324. package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
  325. package/src/mesh/mesh-warmup-deadline.ts +152 -0
  326. package/src/mesh/mesh-work-queue.ts +1254 -141
  327. package/src/mesh/preview-freshness.ts +118 -0
  328. package/src/mesh/refine-config.ts +423 -0
  329. package/src/mesh/worktree-bootstrap-config.ts +450 -0
  330. package/src/providers/acp-provider-instance.ts +43 -10
  331. package/src/providers/approval-utils.d.ts +5 -0
  332. package/src/providers/approval-utils.ts +57 -5
  333. package/src/providers/chat-message-normalization.ts +92 -4
  334. package/src/providers/cli-provider-instance.ts +2001 -106
  335. package/src/providers/contracts.d.ts +55 -0
  336. package/src/providers/contracts.ts +160 -6
  337. package/src/providers/extension-provider-instance.ts +12 -7
  338. package/src/providers/external-sources.ts +218 -0
  339. package/src/providers/ide-provider-instance.ts +35 -12
  340. package/src/providers/manual-attendance.ts +85 -0
  341. package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
  342. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  343. package/src/providers/native-history/codex-cli-transcript.ts +479 -0
  344. package/src/providers/native-history/constants.ts +19 -0
  345. package/src/providers/native-history/dispatcher.ts +345 -0
  346. package/src/providers/native-history/hermes-cli-transcript.ts +260 -0
  347. package/src/providers/native-history/index.ts +30 -0
  348. package/src/providers/provider-instance-manager.ts +71 -0
  349. package/src/providers/provider-instance.ts +19 -1
  350. package/src/providers/provider-loader.ts +668 -50
  351. package/src/providers/provider-schema.ts +87 -14
  352. package/src/providers/provider-trust.ts +114 -0
  353. package/src/providers/read-chat-contract.ts +76 -16
  354. package/src/providers/sdk/README.md +49 -0
  355. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  356. package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
  357. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  358. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
  359. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  360. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  361. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  362. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  363. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  364. package/src/providers/sdk/v1/index.ts +152 -0
  365. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  366. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  367. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  368. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
  369. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  370. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  371. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  372. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  373. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  374. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  375. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  376. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  377. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  378. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  379. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  380. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  381. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  382. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  383. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  384. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  385. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  386. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  387. package/src/providers/sdk/v1/validators/index.ts +19 -0
  388. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  389. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  390. package/src/providers/spec/adapter.ts +235 -0
  391. package/src/providers/spec/cli-adapter.ts +1056 -0
  392. package/src/providers/spec/evaluator.ts +407 -0
  393. package/src/providers/spec/fsm-driver.ts +1410 -0
  394. package/src/providers/spec/fsm-evaluator.ts +272 -0
  395. package/src/providers/spec/fsm-loader.ts +120 -0
  396. package/src/providers/spec/fsm-types.ts +273 -0
  397. package/src/providers/spec/native-history-executor.ts +1143 -0
  398. package/src/providers/spec/pre-launch-trust.ts +104 -0
  399. package/src/providers/spec/route.ts +51 -0
  400. package/src/providers/spec/types.ts +262 -0
  401. package/src/providers/status-monitor.d.ts +7 -7
  402. package/src/providers/status-monitor.ts +37 -22
  403. package/src/providers/transcript-v2.ts +567 -0
  404. package/src/providers/types/interactive-prompt.ts +536 -0
  405. package/src/providers/version-archive.ts +64 -24
  406. package/src/providers/working-dir.ts +23 -0
  407. package/src/repo-mesh-types.ts +748 -14
  408. package/src/runtime-defaults.ts +39 -0
  409. package/src/sessions/registry.ts +6 -0
  410. package/src/shared-types-extra.ts +2 -4
  411. package/src/shared-types.d.ts +8 -0
  412. package/src/shared-types.ts +64 -1
  413. package/src/status/builders.ts +26 -6
  414. package/src/status/normalize.ts +2 -0
  415. package/src/status/reporter.ts +19 -1
  416. package/src/status/snapshot.ts +95 -26
  417. package/src/system/hash.ts +23 -0
  418. package/src/system/host-memory.ts +29 -12
  419. package/src/system/load-better-sqlite3.ts +68 -0
  420. package/src/types.ts +5 -0
  421. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  422. package/dist/mesh/mesh-sync.d.ts +0 -53
  423. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  424. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  425. package/src/mesh/mesh-sync.ts +0 -111
@@ -0,0 +1,174 @@
1
+ import type { MeshLedgerEntry } from './mesh-ledger.js';
2
+ import type { MeshWorkQueueEntry, DirectDispatchRecord } from './mesh-work-queue.js';
3
+ export type MeshActiveWorkSource = 'queue' | 'direct';
4
+ export type MeshActiveWorkStatus = 'pending' | 'assigned' | 'generating' | 'idle' | 'failed' | 'awaiting_approval';
5
+ export interface MeshActiveWorkRecord {
6
+ taskId: string;
7
+ source: MeshActiveWorkSource;
8
+ status: MeshActiveWorkStatus;
9
+ nodeId?: string;
10
+ sessionId?: string;
11
+ providerType?: string;
12
+ taskTitle: string;
13
+ taskSummary: string;
14
+ message?: string;
15
+ taskMode?: string;
16
+ createdAt: string;
17
+ updatedAt: string;
18
+ dispatchedAt?: string;
19
+ elapsedMs: number;
20
+ terminal?: boolean;
21
+ terminalKind?: string;
22
+ terminalAt?: string;
23
+ staleReason?: string;
24
+ /**
25
+ * When true, the session targeted by this direct dispatch still exists in the live mesh
26
+ * but did not transition to generating — the dispatch was not acknowledged by the provider.
27
+ * Distinct from historical/orphaned stale entries where the node/session is gone.
28
+ */
29
+ staleDispatchUnacknowledged?: boolean;
30
+ }
31
+ export interface MeshActiveWorkSummary {
32
+ totalActiveCount: number;
33
+ queueActiveCount: number;
34
+ directActiveCount: number;
35
+ awaitingApprovalCount: number;
36
+ generatingCount: number;
37
+ failedCount: number;
38
+ idleCount: number;
39
+ sourceCounts: Record<MeshActiveWorkSource, number>;
40
+ statusCounts: Record<MeshActiveWorkStatus, number>;
41
+ staleDirectCount: number;
42
+ /**
43
+ * Count of stale direct entries where the target session still exists in the live mesh
44
+ * but never transitioned to generating — these are fresh dispatch failures, not historical orphans.
45
+ * Requires immediate recovery: launch a fresh session and retry the task.
46
+ */
47
+ staleDirectUnacknowledgedCount?: number;
48
+ /**
49
+ * When staleDirectCount > 0, this note clarifies what kind of stale records exist.
50
+ * Fresh unacknowledged dispatches carry an actionable recovery note; orphaned historical
51
+ * entries carry the "historical evidence only" note. Both may coexist.
52
+ */
53
+ staleDirectNote?: string;
54
+ }
55
+ export interface MeshStaleDirectWorkSummary {
56
+ count: number;
57
+ sampleLimit: number;
58
+ sample: Array<Pick<MeshActiveWorkRecord, 'taskId' | 'status' | 'nodeId' | 'sessionId' | 'taskTitle' | 'createdAt' | 'staleReason'>>;
59
+ reasonCounts: Record<string, number>;
60
+ detailHint: string;
61
+ note?: string;
62
+ }
63
+ export interface BuildMeshActiveWorkOptions {
64
+ meshId: string;
65
+ queue?: MeshWorkQueueEntry[];
66
+ ledgerEntries?: MeshLedgerEntry[];
67
+ /**
68
+ * Active direct dispatches from MeshRuntimeStore. When provided, these are used instead of
69
+ * scanning ledger entries for direct dispatches — eliminates the O(n_ledger) scan.
70
+ * Falls back to ledger scanning when not provided.
71
+ */
72
+ directDispatches?: DirectDispatchRecord[];
73
+ nodes?: any[];
74
+ now?: number;
75
+ /** Include terminal direct rows (idle/failed) for handoff/recent-work surfaces. Defaults false. */
76
+ includeTerminalDirect?: boolean;
77
+ }
78
+ export declare function buildMeshActiveWorkSummary(activeWork: MeshActiveWorkRecord[]): MeshActiveWorkSummary;
79
+ export declare function buildMeshActiveWork(opts: BuildMeshActiveWorkOptions): {
80
+ activeWork: MeshActiveWorkRecord[];
81
+ staleDirectWork: MeshActiveWorkRecord[];
82
+ staleDirectWorkNote?: string;
83
+ terminalDirectWork: MeshActiveWorkRecord[];
84
+ summary: MeshActiveWorkSummary;
85
+ };
86
+ /**
87
+ * staleReason strings (produced by sessionStatusFromNodes above) that indicate the original
88
+ * node/session is GONE from the live mesh — i.e. the staleDirect record is an orphaned ledger
89
+ * artifact, not active or recoverable work. These are the only reasons safe to prune from the
90
+ * active staleDirect surface. The "no provider acknowledgement" reason is deliberately excluded:
91
+ * those entries have a still-live node/session (staleDispatchUnacknowledged) and represent
92
+ * recoverable dispatch failures, never orphans.
93
+ */
94
+ export declare const PRUNABLE_ORPHAN_STALE_REASONS: ReadonlySet<string>;
95
+ export type StaleDirectPruneClassification = 'prunable_orphan' | 'prunable_terminal' | 'preserve_unacknowledged' | 'preserve_active';
96
+ /**
97
+ * Classify a direct-work record for the staleDirect prune path. Pure function — the prune tool
98
+ * uses this so the safety rules (never touch active work or recoverable unacknowledged dispatches)
99
+ * live next to the staleReason producers and are independently testable.
100
+ */
101
+ export declare function classifyStaleDirectForPrune(record: Pick<MeshActiveWorkRecord, 'staleReason' | 'staleDispatchUnacknowledged' | 'terminal'>, opts?: {
102
+ includeTerminal?: boolean;
103
+ }): StaleDirectPruneClassification;
104
+ /**
105
+ * Outcome of one staleDirect prune pass. Pure data — callers (the MCP tool, the
106
+ * daemon reconcile loop) format/log this however they need. The MCP tool wraps it in
107
+ * its JSON response; the reconcile loop logs prunedCount when > 0.
108
+ */
109
+ export interface StaleDirectPruneResult {
110
+ mode: 'execute' | 'dry_run';
111
+ includeTerminal: boolean;
112
+ /** Total staleDirect (+terminal when included) candidates surfaced this pass. */
113
+ candidateCount: number;
114
+ /** Records classified prunable AND (when minAgeMs > 0) old enough to auto-prune. */
115
+ prunable: MeshActiveWorkRecord[];
116
+ prunedCount: number;
117
+ /** Prunable by classification but younger than the age gate — only populated when minAgeMs > 0. */
118
+ skippedTooYoung: MeshActiveWorkRecord[];
119
+ preservedUnacknowledged: MeshActiveWorkRecord[];
120
+ /** Prunable orphans/terminals with no store-backed row to delete (ledger-only audit). */
121
+ preservedLedgerOnly: MeshActiveWorkRecord[];
122
+ preservedNotOrphan: MeshActiveWorkRecord[];
123
+ }
124
+ export interface PruneStaleDirectDispatchesOptions {
125
+ meshId: string;
126
+ /** Active direct dispatches from MeshRuntimeStore (getActiveDirectDispatches). */
127
+ directDispatches: DirectDispatchRecord[];
128
+ /** Ledger tail used to attribute remote/terminal dispatches (readLedgerEntries). */
129
+ ledgerEntries?: MeshLedgerEntry[];
130
+ queue?: MeshWorkQueueEntry[];
131
+ /** Live mesh nodes (decorated with live session details) — drives orphan detection. */
132
+ nodes?: any[];
133
+ /** When true, actually delete + append the audit ledger entry. Default false (dry run). */
134
+ execute?: boolean;
135
+ /** Include terminal (idle/failed) direct rows as prune candidates. Default false. */
136
+ includeTerminal?: boolean;
137
+ /**
138
+ * Minimum age (ms, measured from createdAt/dispatchedAt) before a prunable orphan is
139
+ * eligible. 0 (default) prunes immediately regardless of age — the manual prune behavior.
140
+ * The daemon auto-prune passes a conservative threshold so a node/session that is only
141
+ * transiently invisible is never pruned on the spot.
142
+ */
143
+ minAgeMs?: number;
144
+ /** Audit source string written into the direct_dispatch_pruned ledger payload. */
145
+ source?: string;
146
+ now?: number;
147
+ }
148
+ /**
149
+ * Shared staleDirect prune core. Single source of truth for the prune decision + the
150
+ * mutation (store-row delete + audit-ledger append) used by BOTH the manual MCP tool
151
+ * (mesh_prune_stale_direct, minAgeMs=0) and the daemon reconcile loop's auto-prune
152
+ * PHASE (minAgeMs > 0). Pure decision logic via buildMeshActiveWork + classifyStaleDirectForPrune;
153
+ * the only side effects (on execute) are deleteDirectDispatchesByTaskId and a single
154
+ * direct_dispatch_pruned ledger entry — never touching the append-only audit history of the
155
+ * pruned dispatches themselves.
156
+ *
157
+ * Safety rules (identical for manual + auto):
158
+ * - Only records classified as staleDirectWork against the CURRENT live mesh are eligible.
159
+ * - Of those, only orphans (node/session gone) — and terminals when includeTerminal — are prunable.
160
+ * Fresh unacknowledged dispatch failures (node/session still live) are always preserved.
161
+ * - Only store-backed rows (taskId present in MeshRuntimeStore) are deleted; ledger-only remote
162
+ * entries are preserved.
163
+ * - When minAgeMs > 0, a prunable orphan younger than the gate is held back (skippedTooYoung).
164
+ * This applies ONLY to the auto path; the manual path passes minAgeMs=0 (immediate).
165
+ *
166
+ * Idempotent: a deleted row no longer appears in getActiveDirectDispatches, so a second pass
167
+ * over the same orphan finds nothing to prune.
168
+ */
169
+ export declare function pruneStaleDirectDispatches(opts: PruneStaleDirectDispatchesOptions): StaleDirectPruneResult;
170
+ export declare function buildCompactStaleDirectWorkSummary(staleDirectWork: MeshActiveWorkRecord[], opts?: {
171
+ sampleLimit?: number;
172
+ detailHint?: string;
173
+ note?: string;
174
+ }): MeshStaleDirectWorkSummary;
@@ -0,0 +1,8 @@
1
+ export declare const CLONE_BOOTSTRAP_GRACE_MS: number;
2
+ /** Record that a worktree node id was just cloned, opening its transient grace window. */
3
+ export declare function noteRecentlyClonedNode(nodeId: string | undefined | null, nowMs?: number): void;
4
+ /** True when nodeId was cloned within the grace window (and the entry has not expired). */
5
+ export declare function isWithinCloneBootstrapGrace(nodeId: string | undefined | null, nowMs?: number): boolean;
6
+ /** Drop a node's grace entry (e.g. once it has fully resolved into the mesh view). */
7
+ export declare function clearCloneBootstrapGrace(nodeId: string | undefined | null): void;
8
+ export declare function __resetCloneBootstrapGraceForTests(): void;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Hermes / MCP coordinator config helpers
3
+ *
4
+ * Extracted from commands/router.ts (behavior-preserving move). Contains the
5
+ * MCP-server config parse/serialize helpers and the Hermes coordinator base
6
+ * config loading / temp-override stripping / credential-copy helpers.
7
+ *
8
+ * router.ts re-exports every public symbol from here so existing import paths
9
+ * keep working.
10
+ */
11
+ import type { MeshCoordinatorConfigFormat } from './mesh-refine-gates.js';
12
+ export declare function getMcpServersKey(format: MeshCoordinatorConfigFormat): 'mcpServers' | 'mcp_servers';
13
+ export declare function parseMeshCoordinatorMcpConfig(text: string, format: MeshCoordinatorConfigFormat): Record<string, any>;
14
+ export declare function serializeMeshCoordinatorMcpConfig(config: Record<string, any>, format: MeshCoordinatorConfigFormat): string;
15
+ export declare function loadHermesCoordinatorBaseConfig(targetConfigPath: string): {
16
+ config: Record<string, any>;
17
+ sourceHome: string;
18
+ sourceConfigPath: string;
19
+ };
20
+ export declare function stripHermesCoordinatorTempModelProviderOverrides(config: Record<string, any>): Record<string, any>;
21
+ export declare function copyHermesCoordinatorCredentialFiles(sourceHome: string, targetHome: string): void;
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Possible delivery statuses for a session delivery record.
3
+ */
4
+ export type MeshSessionDeliveryStatus = 'queued' | 'delivering' | 'delivered' | 'acked' | 'completed' | 'failed' | 'expired' | 'cancelled';
5
+ /**
6
+ * Kind of delivery — controls priority and policy handling.
7
+ */
8
+ export type MeshSessionDeliveryKind = 'task' | 'followup' | 'approval' | 'recovery' | 'system_notice';
9
+ /**
10
+ * A session delivery decision — what to do when a task arrives for a session.
11
+ */
12
+ export type MeshDeliveryDecision = 'immediate' | 'queued' | 'rejected';
13
+ export interface MeshDeliveryPolicyResult {
14
+ decision: MeshDeliveryDecision;
15
+ reason: string;
16
+ /** When decision='queued', estimated deliver-after ISO timestamp if known. */
17
+ deliverAfter?: string;
18
+ /** Human-readable explanation for coordinator/operator. */
19
+ message: string;
20
+ }
21
+ /**
22
+ * Determine whether to deliver immediately, queue, or reject based on session status.
23
+ *
24
+ * This is a pure function — it does not write to any store.
25
+ */
26
+ export declare function resolveDeliveryDecision(sessionStatus: string | undefined, opts?: {
27
+ kind?: MeshSessionDeliveryKind;
28
+ /** When true, busy session immediate injection is allowed (provider-specific capability). */
29
+ allowBusyInjection?: boolean;
30
+ }): MeshDeliveryPolicyResult;
31
+ export interface SessionDeliveryRecord {
32
+ id: string;
33
+ meshId: string;
34
+ nodeId?: string;
35
+ sessionId?: string;
36
+ providerType?: string;
37
+ taskId?: string;
38
+ kind: MeshSessionDeliveryKind;
39
+ priority: number;
40
+ message: string;
41
+ status: MeshSessionDeliveryStatus;
42
+ deliverAfter?: string;
43
+ expiresAt?: string;
44
+ attemptCount: number;
45
+ sourceCoordinatorSessionId?: string;
46
+ sourceCoordinatorDaemonId?: string;
47
+ lastError?: string;
48
+ createdAt: string;
49
+ updatedAt: string;
50
+ }
51
+ /**
52
+ * Create a delivery record in the store.
53
+ */
54
+ export declare function createSessionDelivery(opts: {
55
+ meshId: string;
56
+ nodeId?: string;
57
+ sessionId?: string;
58
+ providerType?: string;
59
+ taskId?: string;
60
+ kind: MeshSessionDeliveryKind;
61
+ message: string;
62
+ status: MeshSessionDeliveryStatus;
63
+ priority?: number;
64
+ deliverAfter?: string;
65
+ expiresAt?: string;
66
+ sourceCoordinatorSessionId?: string;
67
+ sourceCoordinatorDaemonId?: string;
68
+ }): SessionDeliveryRecord;
69
+ /**
70
+ * Update the status of a delivery record.
71
+ */
72
+ export declare function updateSessionDeliveryStatus(id: string, status: MeshSessionDeliveryStatus, opts?: {
73
+ lastError?: string;
74
+ incrementAttempt?: boolean;
75
+ }): void;
76
+ /**
77
+ * Get active (non-terminal) deliveries for a mesh, optionally filtered by session.
78
+ */
79
+ export declare function getActiveSessionDeliveries(meshId: string, sessionId?: string): {
80
+ id: string;
81
+ meshId: string;
82
+ nodeId: string | null;
83
+ sessionId: string | null;
84
+ providerType: string | null;
85
+ taskId: string | null;
86
+ kind: string;
87
+ priority: number;
88
+ message: string;
89
+ status: string;
90
+ deliverAfter: string | null;
91
+ expiresAt: string | null;
92
+ attemptCount: number;
93
+ sourceCoordinatorSessionId: string | null;
94
+ sourceCoordinatorDaemonId: string | null;
95
+ lastError: string | null;
96
+ createdAt: string;
97
+ updatedAt: string;
98
+ }[];
99
+ /**
100
+ * Record a completion conflict diagnostic when a duplicate event points to
101
+ * different task/session than the already-seen event with the same fingerprint.
102
+ */
103
+ export declare function recordCompletionConflict(opts: {
104
+ meshId: string;
105
+ fingerprint: string;
106
+ conflictingTaskId?: string;
107
+ conflictingSessionId?: string;
108
+ originalTaskId?: string;
109
+ originalSessionId?: string;
110
+ event: string;
111
+ }): void;
112
+ /**
113
+ * Get recent completion conflicts for diagnostic inspection.
114
+ */
115
+ export declare function getRecentCompletionConflicts(meshId: string, limitMs?: number): {
116
+ id: string;
117
+ meshId: string;
118
+ fingerprint: string;
119
+ conflictingTaskId: string | null;
120
+ conflictingSessionId: string | null;
121
+ originalTaskId: string | null;
122
+ originalSessionId: string | null;
123
+ event: string;
124
+ createdAt: string;
125
+ }[];
126
+ export declare function __clearSessionDeliveriesForTests(meshId: string): void;
127
+ /**
128
+ * Mark all active (queued/delivering/delivered/acked) deliveries for a session as completed or failed.
129
+ * Called when a task's terminal status is confirmed so delivery records stay in sync.
130
+ */
131
+ export declare function markSessionDeliveriesTerminal(meshId: string, sessionId: string, terminalStatus: 'completed' | 'failed'): void;
@@ -0,0 +1,5 @@
1
+ import type { MeshLedgerKind } from './mesh-ledger.js';
2
+ export declare const EVENT_TO_LEDGER_KIND: Record<string, MeshLedgerKind>;
3
+ export declare function isMeshCoordinatorEvent(eventName: unknown): eventName is string;
4
+ export declare const MESH_FORCE_INJECT_EVENTS: ReadonlySet<string>;
5
+ export declare function shouldForceInjectMeshEvent(eventName: unknown): boolean;
@@ -0,0 +1,41 @@
1
+ import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
2
+ export declare function recoverMeshIdByCoordinatorAndNode(coordinatorDaemonId: string, nodeId: string): string;
3
+ export declare function resolveForwardEventMeshId(components: DaemonComponents, payload: Record<string, unknown>): string;
4
+ export declare function __resetMeshWorkspaceCacheForTests(): void;
5
+ export declare function buildRelayMetadataEvent(payload: Record<string, unknown>): Record<string, unknown>;
6
+ export declare function handleMeshForwardEvent(components: DaemonComponents, payload: Record<string, unknown>): {
7
+ [extra: string]: unknown;
8
+ success: true;
9
+ forwarded: 0;
10
+ suppressed: true;
11
+ } | {
12
+ success: boolean;
13
+ forwarded: number;
14
+ error?: undefined;
15
+ } | {
16
+ success: boolean;
17
+ error: string;
18
+ };
19
+ /**
20
+ * NOTIF-HELD-DRAIN (Fix 2): event-driven coordinator drain. The reconcile loop delivers a
21
+ * worker's queued completion to an IDLE local coordinator only on its periodic poll. When a
22
+ * coordinator is sitting idle awaiting exactly that completion, waiting up to a full poll
23
+ * interval is the avoidable delivery latency the RCA flags — and combined with the (now-fixed)
24
+ * modal-park false-positive it stretched into the multi-minute notification stall. So the
25
+ * MOMENT a worker delegate event is persisted for a mesh, attempt the same idle-coordinator
26
+ * drain immediately, mirroring the event-driven worker-claim path (agent:ready /
27
+ * agent:generating_completed → triggerMeshQueue).
28
+ *
29
+ * Safety:
30
+ * - drainPendingMeshCoordinatorEvents marks rows drained=1 atomically, so this races the
31
+ * reconcile poll and the coordinator's own idle auto-flush harmlessly — exactly one consumes
32
+ * each row.
33
+ * - Only IDLE, non-modal-parked coordinators are delivery targets (never a generating /
34
+ * consent-modal PTY).
35
+ * - Strict session routing is honoured: an event naming an originating coordinator session is
36
+ * delivered only to that live idle session; anything not currently deliverable here
37
+ * (wrong/absent session, or a message-less lifecycle event) is RE-QUEUED — never dropped —
38
+ * so the reconcile loop's strict hold/expire path remains the single authority for it.
39
+ */
40
+ export declare function flushPendingForMeshIdleCoordinators(components: DaemonComponents, meshId: string): void;
41
+ export declare function setupMeshEventForwarding(components: DaemonComponents): void;
@@ -0,0 +1,21 @@
1
+ export interface MeshEventTraceCtx {
2
+ /** Primary correlation anchor — the mesh task id (meshActiveTaskId / metadataEvent.taskId). */
3
+ taskId?: unknown;
4
+ /** Optional per-event id when the producer assigns one. */
5
+ eventId?: unknown;
6
+ /** Worker session id — the fallback anchor when no task is attached. */
7
+ sessionId?: unknown;
8
+ nodeId?: unknown;
9
+ meshId?: unknown;
10
+ event?: unknown;
11
+ }
12
+ /**
13
+ * Stable, greppable correlation key. `task=` and `sess=` are ALWAYS rendered (as `-`
14
+ * when absent) so the key shape is uniform across stages and a single grep alternation
15
+ * (`task=<id>\|sess=<id>`) follows the event end-to-end.
16
+ */
17
+ export declare function meshEventTraceKey(ctx: MeshEventTraceCtx): string;
18
+ /** Lifecycle progress (INFO). One line per stage the event clears. */
19
+ export declare function traceMeshEventStage(stage: string, ctx: MeshEventTraceCtx, detail?: string): void;
20
+ /** Event did not advance — rejected / held / skipped / deduped (WARN). */
21
+ export declare function traceMeshEventDrop(reason: string, ctx: MeshEventTraceCtx, detail?: string): void;
@@ -0,0 +1,4 @@
1
+ export { isMeshCoordinatorEvent, MESH_FORCE_INJECT_EVENTS, shouldForceInjectMeshEvent, } from './mesh-event-classify.js';
2
+ export { __orderEligibleNodesForTests, __resolveSchedulingStrategyForTests, __resetIdleAutoFastForwardForTests, activeReadonlyAssignedCount, activeWriteAssignedCount, isSessionActivelyGenerating, triggerMeshQueue, tryAssignQueueTask, } from './mesh-queue-assignment.js';
3
+ export type { MeshQueueTriggerResult } from './mesh-queue-assignment.js';
4
+ export { __resetMeshWorkspaceCacheForTests, buildRelayMetadataEvent, handleMeshForwardEvent, resolveForwardEventMeshId, setupMeshEventForwarding, } from './mesh-event-forwarding.js';
@@ -0,0 +1,69 @@
1
+ export interface PendingMeshCoordinatorEvent {
2
+ event: string;
3
+ meshId: string;
4
+ nodeLabel: string;
5
+ nodeId?: string;
6
+ workspace?: string;
7
+ metadataEvent: Record<string, unknown>;
8
+ coordinatorMessage?: string;
9
+ queuedAt: number;
10
+ /**
11
+ * When set, this event is intended for a specific coordinator daemon.
12
+ * Coordinators on other daemons should ignore it during drain.
13
+ * Absent on legacy events — treated as broadcast to any coordinator.
14
+ */
15
+ targetCoordinatorDaemonId?: string;
16
+ /**
17
+ * When set, this event is intended for a specific coordinator SESSION on the
18
+ * target daemon (the session that originally dispatched the work). PHASE 2 inject
19
+ * strict-matches the live coordinator by this session id so a sibling coordinator
20
+ * session on the same daemon does not receive another coordinator's completion.
21
+ * Absent on legacy / version-skewed events → daemon-level broadcast (no regression).
22
+ * Rides inside the event payload, so it survives the SQLite payload round-trip and
23
+ * the JSONL file without a dedicated column; it is NOT a drain-scoping key.
24
+ */
25
+ targetCoordinatorSessionId?: string;
26
+ }
27
+ export declare function readRefineJobId(event: {
28
+ metadataEvent?: Record<string, unknown>;
29
+ } | Record<string, unknown>): string;
30
+ export declare function buildPendingEventFingerprint(event: PendingMeshCoordinatorEvent): string;
31
+ export declare function hasPendingCoordinatorEventDuplicate(event: PendingMeshCoordinatorEvent): boolean;
32
+ export declare function queuePendingMeshCoordinatorEvent(event: PendingMeshCoordinatorEvent): boolean;
33
+ /**
34
+ * Drain and return pending coordinator events for meshId, removing the drained
35
+ * ones from both the SQLite inbox and the JSONL legacy file.
36
+ *
37
+ * When `opts.onlyEvents` is supplied, ONLY events whose name is in that set are
38
+ * drained; every other event stays queued (undrained in SQLite, rewritten back to
39
+ * the JSONL file). The reconcile loop uses this to force-drain terminal/force-inject
40
+ * events into a *generating* coordinator while leaving non-force progress events for
41
+ * the coordinator's next idle transition. The atomic SQLite drained=1 marking and the
42
+ * atomic JSONL rename keep force-drain and a concurrent full drain from double-consuming.
43
+ */
44
+ export declare function drainPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string | ReadonlyArray<string>, opts?: {
45
+ onlyEvents?: ReadonlySet<string>;
46
+ }): PendingMeshCoordinatorEvent[];
47
+ /**
48
+ * FALSE-BLOCKER-CLONE-QUEUE: retract any still-UNDELIVERED `mesh:dispatch_blocked`
49
+ * actionable-skip event for a task whose blocker has since resolved (the task was
50
+ * claimed, or its skip transitioned to a self-resolving transient reason). Without
51
+ * this, a `target_node_id_unmatched` blocker paged during the brief clone/bootstrap
52
+ * propagation window would linger in the coordinator's pending queue and surface as a
53
+ * false "actionable blocker — will NOT clear on its own" even after the task dispatched.
54
+ *
55
+ * Only removes events that have NOT yet been drained/delivered to the coordinator — an
56
+ * already-delivered message cannot be unsent, but de-dup re-arm (caller side) plus this
57
+ * retraction guarantee no NEW stale blocker accumulates. Best-effort across both the
58
+ * SQLite inbox and the JSONL legacy files (scoped + shared). Returns rows removed.
59
+ */
60
+ export declare function retractPendingDispatchBlockedEvent(meshId: string | undefined, taskId: string | undefined, coordinatorDaemonId?: string): number;
61
+ /** Peek at pending coordinator events without draining (non-destructive). */
62
+ export declare function getPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string | ReadonlyArray<string>): readonly PendingMeshCoordinatorEvent[];
63
+ /**
64
+ * Test helper: purge all pending-event state for a mesh — SQLite rows
65
+ * (including drained fingerprint history) and JSONL files.
66
+ */
67
+ export declare function __clearMeshPendingEventsForTests(meshId: string): void;
68
+ /** Explicitly clear all pending coordinator events for a mesh (and coordinator if scoped). */
69
+ export declare function clearPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): void;
@@ -0,0 +1,61 @@
1
+ import type { MeshLedgerKind } from './mesh-ledger.js';
2
+ export declare function findRecentTerminalLedgerEvidence(args: {
3
+ meshId: string;
4
+ sessionId?: string;
5
+ nodeId?: string;
6
+ }): {
7
+ id: string;
8
+ kind: MeshLedgerKind;
9
+ payload: Record<string, unknown>;
10
+ timestamp: string;
11
+ } | null;
12
+ export declare function hasDispatchAfterTerminal(meshId: string, sessionId: string, terminalId: string): boolean;
13
+ export declare function hasUnterminalDirectDispatchLedgerEntry(meshId: string, sessionId: string): boolean;
14
+ export declare function findTerminalLedgerEvidenceForTask(args: {
15
+ meshId: string;
16
+ taskId?: string;
17
+ sessionId?: string;
18
+ nodeId?: string;
19
+ tail?: number;
20
+ }): {
21
+ id: string;
22
+ kind: Extract<MeshLedgerKind, 'task_completed' | 'task_failed' | 'task_stalled'>;
23
+ payload: Record<string, unknown>;
24
+ timestamp: string;
25
+ } | null;
26
+ export declare function reconcileDirectDispatchCompletionFromTranscript(args: {
27
+ meshId: string;
28
+ nodeId?: string;
29
+ sessionId: string;
30
+ providerType?: string;
31
+ providerSessionId?: string;
32
+ taskId: string;
33
+ finalSummary: string;
34
+ transcriptMessageAt?: string;
35
+ completedAt?: string;
36
+ targetCoordinatorDaemonId?: string;
37
+ /**
38
+ * NOTIF-DROP-SYNTH-NO-MESSAGE: the originating coordinator SESSION that dispatched this
39
+ * task (the `coordinatorSessionId` stamped onto the task_dispatched ledger payload at
40
+ * dispatch). Stamped onto the synthesized completion's targetCoordinatorSessionId so PHASE 2
41
+ * STRICT routing matches the exact coordinator session — instead of relying on the
42
+ * daemon-keyed fallback. When the caller does not pass it, it is recovered from the dispatch
43
+ * ledger entry below; absent on legacy rows → daemon-level routing (unchanged).
44
+ */
45
+ targetCoordinatorSessionId?: string;
46
+ source?: string;
47
+ }): {
48
+ reconciled: boolean;
49
+ kind?: MeshLedgerKind;
50
+ alreadyTerminal?: boolean;
51
+ workerResult?: unknown;
52
+ ledgerEntryId?: string;
53
+ reason?: string;
54
+ };
55
+ export declare function buildNoProgressCompletionReconciliation(args: {
56
+ meshId: string;
57
+ nodeId?: string;
58
+ nodeLabel: string;
59
+ metadataEvent: Record<string, unknown>;
60
+ sourceInstanceId?: string;
61
+ }): Record<string, unknown> | null;
@@ -0,0 +1,75 @@
1
+ import type { SessionRecoveryContext } from './mesh-ledger.js';
2
+ export declare function readNonEmptyString(value: unknown): string;
3
+ export declare function readRecord(value: unknown): Record<string, unknown> | undefined;
4
+ /**
5
+ * The relay-safety metadata a worker session must carry so that its completion /
6
+ * generating events route back to the coordinator proactively (without waiting for
7
+ * a mesh_read_chat reconcile). meshCoordinatorDaemonId is the routing anchor the
8
+ * core forwarder (injectMeshSystemMessage) keys on to pick a remote coordinator
9
+ * target; meshNodeFor/meshNodeId identify the worker, and launchedByCoordinator is
10
+ * the delegation proof. See resolveWorkerDelegateRouting().
11
+ */
12
+ export interface MeshWorkerRelayStamp {
13
+ meshNodeFor?: string;
14
+ meshNodeId?: string;
15
+ meshCoordinatorDaemonId?: string;
16
+ meshCoordinatorSessionId?: string;
17
+ launchedByCoordinator?: boolean;
18
+ }
19
+ /**
20
+ * Build the relay-safety stamp from a dispatch's meshContext, only including fields
21
+ * the session does not already carry. Returns undefined when there is nothing new to
22
+ * stamp, so callers can skip a no-op updateSettings() write.
23
+ *
24
+ * This closes the remote-session relay gap: a worker session reached by a dispatch
25
+ * that carries coordinatorDaemonId (mesh_send_task / queue assignment over P2P) gets
26
+ * the coordinator anchor persisted onto its settings at dispatch time, even if it was
27
+ * not launched via mesh_launch_session. Without the stamp the forwarder cannot resolve
28
+ * a remote coordinator and the completion event sits in the pending queue until a
29
+ * read_chat-triggered reconcile drains it.
30
+ */
31
+ export declare function buildMeshWorkerRelayStamp(currentSettings: Record<string, unknown> | undefined, meshContext: {
32
+ meshId?: unknown;
33
+ nodeId?: unknown;
34
+ coordinatorDaemonId?: unknown;
35
+ coordinatorSessionId?: unknown;
36
+ } | undefined): MeshWorkerRelayStamp | undefined;
37
+ export declare function resolveEventSessionId(event: Record<string, unknown>, fallback?: unknown): string;
38
+ export declare function readRefineJobId(event: {
39
+ metadataEvent?: Record<string, unknown>;
40
+ } | Record<string, unknown>): string;
41
+ export declare function readWorkerResultMetadata(event: Record<string, unknown>): Record<string, unknown> | undefined;
42
+ /**
43
+ * The worker's final assistant text carried on a completion event — read from
44
+ * `finalSummary` (and the `workerResult.summary` / `result.summary` fallbacks some
45
+ * paths use). Returns '' when the event carries no assistant text (lifecycle events
46
+ * without a summary). Shared by the coordinator chat surface (buildMeshSystemMessage)
47
+ * and the held-event ledger audit record so both read the summary the same way.
48
+ */
49
+ export declare function readMeshCompletionSummary(metadataEvent: Record<string, unknown>): string;
50
+ export declare function resolveMeshSurfacedSessionPreview(metadataEvent: Record<string, unknown>): {
51
+ preview: string;
52
+ role: 'assistant';
53
+ receivedAt: number;
54
+ } | undefined;
55
+ export declare function isMissingFinalAssistantDiagnostic(record: Record<string, unknown> | undefined): boolean;
56
+ export declare function isFalseIdleCompletion(record: Record<string, unknown>): boolean;
57
+ export declare function isWeakCompletionEvidence(record: Record<string, unknown> | undefined): boolean;
58
+ export declare function isWeakCompletionMetadata(metadataEvent: Record<string, unknown>): boolean;
59
+ export declare function buildMeshSystemMessage(args: {
60
+ event: string;
61
+ nodeLabel: string;
62
+ metadataEvent: Record<string, unknown>;
63
+ recoveryContext?: SessionRecoveryContext | null;
64
+ /**
65
+ * BOOTSTRAP-MSG: true when a queued task targeting this freshly-bootstrapped
66
+ * worktree node is pending/assigned and will be (or has just been) auto-claimed
67
+ * by the post-bootstrap queue re-fire. When set, the worktree_bootstrap_complete
68
+ * message drops the misleading "use mesh_launch_session" advice (which would
69
+ * spawn a DUPLICATE session alongside the auto-claimed one) and tells the
70
+ * coordinator the queue will handle it. Absent/false → no targeted task → keep
71
+ * the manual-launch advice. The caller computes this from the work queue; the
72
+ * builder stays pure so both branches are unit-testable via this flag.
73
+ */
74
+ worktreeHasQueuedTask?: boolean;
75
+ }): string;