@adhdev/daemon-core 0.9.82-rc.49 → 0.9.82-rc.490

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 (473) 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 +220 -0
  10. package/dist/cli-adapters/provider-cli-adapter.d.ts +137 -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 +23 -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 +71 -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-aggregate-status.d.ts +24 -0
  56. package/dist/commands/router-mesh-session-owner.d.ts +59 -0
  57. package/dist/commands/router-refine.d.ts +151 -0
  58. package/dist/commands/router-worktree-cleanup.d.ts +133 -0
  59. package/dist/commands/router.d.ts +203 -15
  60. package/dist/commands/upgrade-helper.d.ts +41 -1
  61. package/dist/config/chat-history.d.ts +11 -0
  62. package/dist/config/config.d.ts +19 -0
  63. package/dist/config/mesh-config.d.ts +65 -0
  64. package/dist/config/mesh-json-config.d.ts +199 -0
  65. package/dist/config/registry-resolver.d.ts +54 -0
  66. package/dist/config/repo-settings.d.ts +77 -0
  67. package/dist/config/state-store.d.ts +30 -0
  68. package/dist/daemon/dev-server.d.ts +0 -2
  69. package/dist/detection/cli-detector.d.ts +17 -0
  70. package/dist/detection/ide-detector.d.ts +13 -0
  71. package/dist/detection/win32-ide-version.d.ts +37 -0
  72. package/dist/git/change-impact-config.d.ts +159 -0
  73. package/dist/git/git-commands.d.ts +26 -2
  74. package/dist/git/git-diff.d.ts +6 -0
  75. package/dist/git/git-executor.d.ts +11 -0
  76. package/dist/git/git-status.d.ts +80 -0
  77. package/dist/git/git-types.d.ts +2 -50
  78. package/dist/git/git-worktree.d.ts +71 -1
  79. package/dist/git/index.d.ts +3 -1
  80. package/dist/index.d.ts +70 -17
  81. package/dist/index.js +53532 -19073
  82. package/dist/index.js.map +1 -1
  83. package/dist/index.mjs +53283 -18989
  84. package/dist/index.mjs.map +1 -1
  85. package/dist/installer.d.ts +1 -4
  86. package/dist/ipc/local-ipc-server.d.ts +91 -0
  87. package/dist/launch.d.ts +1 -1
  88. package/dist/logging/async-batch-writer.d.ts +10 -0
  89. package/dist/logging/debug-config.d.ts +16 -0
  90. package/dist/logging/log-redactor.d.ts +24 -0
  91. package/dist/logging/log-tail-reader.d.ts +81 -0
  92. package/dist/logging/logger.d.ts +1 -1
  93. package/dist/mesh/contracts.d.ts +256 -0
  94. package/dist/mesh/coordinator-prompt.d.ts +76 -0
  95. package/dist/mesh/coordinator-registry.d.ts +59 -0
  96. package/dist/mesh/mesh-active-work.d.ts +203 -0
  97. package/dist/mesh/mesh-clone-grace.d.ts +8 -0
  98. package/dist/mesh/mesh-completion-synthesis.d.ts +4 -0
  99. package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
  100. package/dist/mesh/mesh-delivery-policy.d.ts +104 -0
  101. package/dist/mesh/mesh-event-classify.d.ts +7 -0
  102. package/dist/mesh/mesh-event-forwarding.d.ts +58 -0
  103. package/dist/mesh/mesh-event-trace.d.ts +21 -0
  104. package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
  105. package/dist/mesh/mesh-events-pending.d.ts +258 -0
  106. package/dist/mesh/mesh-events-stale.d.ts +61 -0
  107. package/dist/mesh/mesh-events-utils.d.ts +75 -0
  108. package/dist/mesh/mesh-events.d.ts +6 -49
  109. package/dist/mesh/mesh-fast-forward.d.ts +81 -0
  110. package/dist/mesh/mesh-host-ownership.d.ts +21 -1
  111. package/dist/mesh/mesh-init.d.ts +128 -0
  112. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
  113. package/dist/mesh/mesh-ledger.d.ts +139 -1
  114. package/dist/mesh/mesh-magi-status.d.ts +63 -0
  115. package/dist/mesh/mesh-missions.d.ts +281 -0
  116. package/dist/mesh/mesh-node-identity.d.ts +310 -0
  117. package/dist/mesh/mesh-queue-assignment.d.ts +162 -0
  118. package/dist/mesh/mesh-reconcile-acked-hold.d.ts +17 -0
  119. package/dist/mesh/mesh-reconcile-config.d.ts +6 -0
  120. package/dist/mesh/mesh-reconcile-identity.d.ts +6 -0
  121. package/dist/mesh/mesh-reconcile-loop.d.ts +84 -0
  122. package/dist/mesh/mesh-reconcile-v2-backstop.d.ts +16 -0
  123. package/dist/mesh/mesh-refine-batch.d.ts +68 -0
  124. package/dist/mesh/mesh-refine-gates.d.ts +457 -0
  125. package/dist/mesh/mesh-refine-status.d.ts +62 -0
  126. package/dist/mesh/mesh-remote-event-pull.d.ts +15 -0
  127. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  128. package/dist/mesh/mesh-routing.d.ts +70 -0
  129. package/dist/mesh/mesh-runtime-store.d.ts +567 -0
  130. package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
  131. package/dist/mesh/mesh-task-inflight.d.ts +46 -0
  132. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  133. package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +34 -0
  134. package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
  135. package/dist/mesh/mesh-work-queue.d.ts +392 -1
  136. package/dist/mesh/preview-freshness.d.ts +28 -0
  137. package/dist/mesh/refine-config.d.ts +97 -0
  138. package/dist/mesh/worktree-bootstrap-config.d.ts +219 -0
  139. package/dist/providers/acp-provider-instance.d.ts +5 -0
  140. package/dist/providers/approval-utils.d.ts +46 -0
  141. package/dist/providers/chat-message-normalization.d.ts +58 -1
  142. package/dist/providers/cli-provider-effect-format.d.ts +30 -0
  143. package/dist/providers/cli-provider-history-dedup.d.ts +17 -0
  144. package/dist/providers/cli-provider-input-prompt.d.ts +12 -0
  145. package/dist/providers/cli-provider-instance-types.d.ts +45 -0
  146. package/dist/providers/cli-provider-instance.d.ts +426 -30
  147. package/dist/providers/cli-provider-status-helpers.d.ts +46 -0
  148. package/dist/providers/cli-provider-transcript-merge.d.ts +7 -0
  149. package/dist/providers/contracts.d.ts +196 -6
  150. package/dist/providers/external-sources.d.ts +71 -0
  151. package/dist/providers/manual-attendance.d.ts +79 -0
  152. package/dist/providers/native-history/antigravity-claim-registry.d.ts +39 -0
  153. package/dist/providers/native-history/antigravity-cli-transcript.d.ts +137 -0
  154. package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
  155. package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
  156. package/dist/providers/native-history/constants.d.ts +12 -0
  157. package/dist/providers/native-history/dispatcher.d.ts +44 -0
  158. package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
  159. package/dist/providers/native-history/index.d.ts +13 -0
  160. package/dist/providers/provider-instance-manager.d.ts +30 -0
  161. package/dist/providers/provider-instance.d.ts +31 -1
  162. package/dist/providers/provider-loader.d.ts +42 -5
  163. package/dist/providers/provider-trust.d.ts +31 -0
  164. package/dist/providers/read-chat-contract.d.ts +29 -0
  165. package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
  166. package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
  167. package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
  168. package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
  169. package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
  170. package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
  171. package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
  172. package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
  173. package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
  174. package/dist/providers/sdk/v1/index.d.ts +30 -0
  175. package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
  176. package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
  177. package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
  178. package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
  179. package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
  180. package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
  181. package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
  182. package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
  183. package/dist/providers/spec/adapter.d.ts +98 -0
  184. package/dist/providers/spec/cli-adapter.d.ts +223 -0
  185. package/dist/providers/spec/evaluator.d.ts +45 -0
  186. package/dist/providers/spec/fsm-driver.d.ts +449 -0
  187. package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
  188. package/dist/providers/spec/fsm-loader.d.ts +14 -0
  189. package/dist/providers/spec/fsm-types.d.ts +202 -0
  190. package/dist/providers/spec/native-history-executor.d.ts +41 -0
  191. package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
  192. package/dist/providers/spec/route.d.ts +4 -0
  193. package/dist/providers/spec/types.d.ts +244 -0
  194. package/dist/providers/status-monitor.d.ts +7 -7
  195. package/dist/providers/transcript-v2.d.ts +176 -0
  196. package/dist/providers/types/interactive-prompt.d.ts +84 -0
  197. package/dist/providers/working-dir.d.ts +17 -0
  198. package/dist/repo-mesh-types.d.ts +616 -12
  199. package/dist/runtime-defaults.d.ts +2 -0
  200. package/dist/session-host/managed-host.d.ts +64 -0
  201. package/dist/session-host/runtime-surface.d.ts +10 -16
  202. package/dist/sessions/registry.d.ts +26 -0
  203. package/dist/shared-types-extra.d.ts +2 -4
  204. package/dist/shared-types.d.ts +110 -55
  205. package/dist/status/chat-tail-hot-sessions.d.ts +40 -0
  206. package/dist/status/normalize.d.ts +1 -1
  207. package/dist/status/normalize.js +1 -0
  208. package/dist/status/normalize.js.map +1 -1
  209. package/dist/status/normalize.mjs +1 -0
  210. package/dist/status/normalize.mjs.map +1 -1
  211. package/dist/status/reporter.d.ts +2 -0
  212. package/dist/status/snapshot.d.ts +27 -0
  213. package/dist/system/hash.d.ts +8 -0
  214. package/dist/system/load-better-sqlite3.d.ts +21 -0
  215. package/dist/types.d.ts +20 -6
  216. package/package.json +11 -4
  217. package/src/agent-stream/poller.ts +2 -3
  218. package/src/agent-stream/provider-adapter.ts +1 -1
  219. package/src/boot/daemon-lifecycle.ts +80 -14
  220. package/src/boot/process-hardening.ts +89 -0
  221. package/src/build-info.ts +73 -0
  222. package/src/chat/source-machine.ts +534 -0
  223. package/src/chat/source-resolver.ts +0 -0
  224. package/src/chat/subscription-updates.ts +20 -1
  225. package/src/cli-adapter-types.d.ts +3 -1
  226. package/src/cli-adapter-types.ts +68 -2
  227. package/src/cli-adapters/cli-script-runner.ts +421 -0
  228. package/src/cli-adapters/cli-state-engine.ts +1282 -0
  229. package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
  230. package/src/cli-adapters/provider-cli-adapter.ts +1048 -1143
  231. package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
  232. package/src/cli-adapters/provider-cli-parse.ts +19 -0
  233. package/src/cli-adapters/provider-cli-runtime.ts +56 -7
  234. package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
  235. package/src/cli-adapters/provider-cli-shared.ts +121 -11
  236. package/src/cli-adapters/pty-transport.ts +2 -1
  237. package/src/cli-adapters/pty-write-chunking.ts +106 -0
  238. package/src/cli-adapters/raw-terminal-io.ts +252 -0
  239. package/src/cli-adapters/resolve-executable.ts +204 -0
  240. package/src/cli-adapters/session-host-transport.ts +2 -1
  241. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
  242. package/src/cli-adapters/terminal-backends/types.ts +10 -3
  243. package/src/cli-adapters/terminal-screen.ts +16 -81
  244. package/src/commands/chat-commands-debug-bundle.ts +398 -0
  245. package/src/commands/chat-commands-read.ts +2788 -0
  246. package/src/commands/chat-commands-scope.ts +54 -0
  247. package/src/commands/chat-commands-shared.ts +114 -0
  248. package/src/commands/chat-commands-write.ts +891 -0
  249. package/src/commands/chat-commands.ts +19 -1841
  250. package/src/commands/cli-manager.d.ts +2 -0
  251. package/src/commands/cli-manager.ts +724 -27
  252. package/src/commands/handler.ts +865 -2
  253. package/src/commands/high-family/index.ts +28 -0
  254. package/src/commands/high-family/mesh-coordinator-launch.ts +696 -0
  255. package/src/commands/high-family/mesh-events.ts +102 -0
  256. package/src/commands/high-family/mesh-status.ts +857 -0
  257. package/src/commands/high-family/types.ts +80 -0
  258. package/src/commands/low-family/coordinator-prompt.ts +125 -0
  259. package/src/commands/low-family/daemon-lifecycle.ts +120 -0
  260. package/src/commands/low-family/diagnostics.ts +57 -0
  261. package/src/commands/low-family/index.ts +37 -0
  262. package/src/commands/low-family/mesh-ledger.ts +62 -0
  263. package/src/commands/low-family/mesh-node-logs.ts +87 -0
  264. package/src/commands/low-family/notification.ts +116 -0
  265. package/src/commands/low-family/refine-config.ts +106 -0
  266. package/src/commands/low-family/session-host.ts +282 -0
  267. package/src/commands/low-family/spec-providerdev.ts +217 -0
  268. package/src/commands/low-family/status-meta.ts +112 -0
  269. package/src/commands/low-family/types.ts +39 -0
  270. package/src/commands/med-family/cli-agent.ts +270 -0
  271. package/src/commands/med-family/fast-forward.ts +230 -0
  272. package/src/commands/med-family/ide.ts +163 -0
  273. package/src/commands/med-family/index.ts +37 -0
  274. package/src/commands/med-family/mesh-crud.ts +1268 -0
  275. package/src/commands/med-family/mesh-host-pairing.ts +234 -0
  276. package/src/commands/med-family/mesh-queue.ts +167 -0
  277. package/src/commands/med-family/mesh-restart.ts +92 -0
  278. package/src/commands/med-family/types.ts +153 -0
  279. package/src/commands/mesh-coordinator.ts +334 -124
  280. package/src/commands/router-aggregate-status.ts +209 -0
  281. package/src/commands/router-mesh-session-owner.ts +114 -0
  282. package/src/commands/router-refine.ts +1794 -0
  283. package/src/commands/router-worktree-cleanup.ts +870 -0
  284. package/src/commands/router.ts +567 -4149
  285. package/src/commands/stream-commands.ts +8 -0
  286. package/src/commands/upgrade-helper.ts +310 -45
  287. package/src/config/chat-history.ts +517 -24
  288. package/src/config/config.ts +30 -0
  289. package/src/config/mesh-config.ts +300 -24
  290. package/src/config/mesh-json-config.ts +376 -0
  291. package/src/config/recent-activity.ts +8 -2
  292. package/src/config/registry-resolver.ts +100 -0
  293. package/src/config/repo-settings.ts +111 -0
  294. package/src/config/state-store.ts +55 -0
  295. package/src/daemon/dev-auto-implement.ts +3 -2
  296. package/src/daemon/dev-cli-debug.ts +10 -1
  297. package/src/daemon/dev-server.ts +0 -541
  298. package/src/detection/cli-detector.ts +94 -9
  299. package/src/detection/ide-detector.ts +55 -16
  300. package/src/detection/win32-ide-version.ts +106 -0
  301. package/src/git/change-impact-config.ts +354 -0
  302. package/src/git/git-commands.ts +112 -16
  303. package/src/git/git-diff.ts +81 -11
  304. package/src/git/git-executor.ts +12 -0
  305. package/src/git/git-status.ts +822 -48
  306. package/src/git/git-types.ts +14 -62
  307. package/src/git/git-worktree.ts +261 -4
  308. package/src/git/index.ts +17 -0
  309. package/src/index.ts +190 -13
  310. package/src/installer.d.ts +1 -1
  311. package/src/installer.ts +8 -6
  312. package/src/ipc/local-ipc-server.ts +278 -0
  313. package/src/launch.d.ts +1 -1
  314. package/src/launch.ts +37 -28
  315. package/src/logging/async-batch-writer.ts +55 -0
  316. package/src/logging/command-log.ts +7 -5
  317. package/src/logging/debug-config.ts +25 -0
  318. package/src/logging/debug-trace.ts +7 -2
  319. package/src/logging/log-redactor.ts +100 -0
  320. package/src/logging/log-tail-reader.ts +341 -0
  321. package/src/logging/logger.ts +14 -7
  322. package/src/mesh/contracts.ts +510 -0
  323. package/src/mesh/coordinator-prompt.ts +627 -34
  324. package/src/mesh/coordinator-registry.ts +121 -0
  325. package/src/mesh/mesh-active-work.ts +706 -0
  326. package/src/mesh/mesh-clone-grace.ts +68 -0
  327. package/src/mesh/mesh-completion-synthesis.ts +416 -0
  328. package/src/mesh/mesh-coordinator-config.ts +97 -0
  329. package/src/mesh/mesh-delivery-policy.ts +284 -0
  330. package/src/mesh/mesh-event-classify.ts +78 -0
  331. package/src/mesh/mesh-event-forwarding.ts +2030 -0
  332. package/src/mesh/mesh-event-trace.ts +67 -0
  333. package/src/mesh/mesh-events-coordinator.ts +32 -0
  334. package/src/mesh/mesh-events-pending.ts +1548 -0
  335. package/src/mesh/mesh-events-stale.ts +452 -0
  336. package/src/mesh/mesh-events-utils.ts +443 -0
  337. package/src/mesh/mesh-events.ts +43 -1035
  338. package/src/mesh/mesh-fast-forward.ts +856 -0
  339. package/src/mesh/mesh-host-ownership.ts +41 -3
  340. package/src/mesh/mesh-init.ts +350 -0
  341. package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
  342. package/src/mesh/mesh-ledger.ts +897 -102
  343. package/src/mesh/mesh-magi-status.ts +223 -0
  344. package/src/mesh/mesh-missions.ts +695 -0
  345. package/src/mesh/mesh-node-identity.ts +2065 -0
  346. package/src/mesh/mesh-queue-assignment.ts +2498 -0
  347. package/src/mesh/mesh-reconcile-acked-hold.ts +230 -0
  348. package/src/mesh/mesh-reconcile-config.ts +66 -0
  349. package/src/mesh/mesh-reconcile-identity.ts +103 -0
  350. package/src/mesh/mesh-reconcile-loop.ts +1696 -0
  351. package/src/mesh/mesh-reconcile-v2-backstop.ts +62 -0
  352. package/src/mesh/mesh-refine-batch.ts +205 -0
  353. package/src/mesh/mesh-refine-gates.ts +1792 -0
  354. package/src/mesh/mesh-refine-status.ts +231 -0
  355. package/src/mesh/mesh-remote-event-pull.ts +279 -0
  356. package/src/mesh/mesh-review-inbox.ts +308 -0
  357. package/src/mesh/mesh-routing.ts +291 -0
  358. package/src/mesh/mesh-runtime-store.ts +2292 -0
  359. package/src/mesh/mesh-scheduling-runtime.ts +198 -0
  360. package/src/mesh/mesh-task-inflight.ts +70 -0
  361. package/src/mesh/mesh-task-stats.ts +161 -0
  362. package/src/mesh/mesh-unresolved-forward-outbox.ts +215 -0
  363. package/src/mesh/mesh-warmup-deadline.ts +152 -0
  364. package/src/mesh/mesh-work-queue.ts +1489 -145
  365. package/src/mesh/preview-freshness.ts +163 -0
  366. package/src/mesh/refine-config.ts +129 -12
  367. package/src/mesh/worktree-bootstrap-config.ts +599 -0
  368. package/src/providers/acp-provider-instance.ts +43 -10
  369. package/src/providers/approval-utils.d.ts +5 -0
  370. package/src/providers/approval-utils.ts +100 -6
  371. package/src/providers/chat-message-normalization.ts +126 -4
  372. package/src/providers/cli-provider-effect-format.ts +53 -0
  373. package/src/providers/cli-provider-history-dedup.ts +75 -0
  374. package/src/providers/cli-provider-input-prompt.ts +133 -0
  375. package/src/providers/cli-provider-instance-types.ts +131 -0
  376. package/src/providers/cli-provider-instance.ts +2771 -499
  377. package/src/providers/cli-provider-status-helpers.ts +123 -0
  378. package/src/providers/cli-provider-transcript-merge.ts +114 -0
  379. package/src/providers/contracts.d.ts +55 -0
  380. package/src/providers/contracts.ts +207 -6
  381. package/src/providers/extension-provider-instance.ts +12 -7
  382. package/src/providers/external-sources.ts +218 -0
  383. package/src/providers/ide-provider-instance.ts +35 -12
  384. package/src/providers/manual-attendance.ts +105 -0
  385. package/src/providers/native-history/antigravity-claim-registry.ts +138 -0
  386. package/src/providers/native-history/antigravity-cli-transcript.ts +1275 -0
  387. package/src/providers/native-history/claude-cli-transcript.ts +396 -0
  388. package/src/providers/native-history/codex-cli-transcript.ts +479 -0
  389. package/src/providers/native-history/constants.ts +19 -0
  390. package/src/providers/native-history/dispatcher.ts +617 -0
  391. package/src/providers/native-history/hermes-cli-transcript.ts +312 -0
  392. package/src/providers/native-history/index.ts +30 -0
  393. package/src/providers/provider-instance-manager.ts +71 -0
  394. package/src/providers/provider-instance.ts +24 -1
  395. package/src/providers/provider-loader.ts +700 -55
  396. package/src/providers/provider-schema.ts +93 -14
  397. package/src/providers/provider-trust.ts +114 -0
  398. package/src/providers/read-chat-contract.ts +76 -16
  399. package/src/providers/sdk/README.md +49 -0
  400. package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
  401. package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
  402. package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
  403. package/src/providers/sdk/v1/builders/cli/parse-approval.ts +261 -0
  404. package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
  405. package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
  406. package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
  407. package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
  408. package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
  409. package/src/providers/sdk/v1/index.ts +152 -0
  410. package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
  411. package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
  412. package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
  413. package/src/providers/sdk/v1/schemas/cli/provider.schema.json +538 -0
  414. package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
  415. package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
  416. package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
  417. package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
  418. package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
  419. package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
  420. package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
  421. package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
  422. package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
  423. package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
  424. package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
  425. package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
  426. package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
  427. package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
  428. package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
  429. package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
  430. package/src/providers/sdk/v1/types/cli/index.ts +365 -0
  431. package/src/providers/sdk/v1/types/common/index.ts +229 -0
  432. package/src/providers/sdk/v1/validators/index.ts +19 -0
  433. package/src/providers/sdk/v1/validators/manifest.ts +110 -0
  434. package/src/providers/sdk/v1/validators/taint.ts +309 -0
  435. package/src/providers/spec/adapter.ts +246 -0
  436. package/src/providers/spec/cli-adapter.ts +1064 -0
  437. package/src/providers/spec/evaluator.ts +407 -0
  438. package/src/providers/spec/fsm-driver.ts +1528 -0
  439. package/src/providers/spec/fsm-evaluator.ts +290 -0
  440. package/src/providers/spec/fsm-loader.ts +128 -0
  441. package/src/providers/spec/fsm-types.ts +301 -0
  442. package/src/providers/spec/native-history-executor.ts +1241 -0
  443. package/src/providers/spec/pre-launch-trust.ts +104 -0
  444. package/src/providers/spec/route.ts +51 -0
  445. package/src/providers/spec/types.ts +284 -0
  446. package/src/providers/status-monitor.d.ts +7 -7
  447. package/src/providers/status-monitor.ts +37 -22
  448. package/src/providers/transcript-v2.ts +567 -0
  449. package/src/providers/types/interactive-prompt.ts +536 -0
  450. package/src/providers/version-archive.ts +64 -24
  451. package/src/providers/working-dir.ts +23 -0
  452. package/src/repo-mesh-types.ts +861 -14
  453. package/src/runtime-defaults.ts +39 -0
  454. package/src/session-host/managed-host.ts +218 -0
  455. package/src/session-host/runtime-surface.ts +20 -80
  456. package/src/sessions/registry.ts +44 -0
  457. package/src/shared-types-extra.ts +2 -4
  458. package/src/shared-types.d.ts +8 -0
  459. package/src/shared-types.ts +148 -55
  460. package/src/status/builders.ts +69 -6
  461. package/src/status/chat-tail-hot-sessions.ts +117 -2
  462. package/src/status/normalize.ts +2 -0
  463. package/src/status/reporter.ts +19 -1
  464. package/src/status/snapshot.ts +100 -27
  465. package/src/system/hash.ts +23 -0
  466. package/src/system/host-memory.ts +29 -12
  467. package/src/system/load-better-sqlite3.ts +68 -0
  468. package/src/types.ts +26 -6
  469. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
  470. package/dist/mesh/mesh-sync.d.ts +0 -53
  471. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
  472. package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
  473. package/src/mesh/mesh-sync.ts +0 -111
@@ -0,0 +1,258 @@
1
+ import { MESH_PROTOCOL_VERSION_V2, type CoordinatorIdentity, type MeshEventScope } from './contracts.js';
2
+ export interface PendingMeshCoordinatorEvent {
3
+ event: string;
4
+ meshId: string;
5
+ nodeLabel: string;
6
+ nodeId?: string;
7
+ workspace?: string;
8
+ metadataEvent: Record<string, unknown>;
9
+ coordinatorMessage?: string;
10
+ queuedAt: number;
11
+ /**
12
+ * When set, this event is intended for a specific coordinator daemon.
13
+ * Coordinators on other daemons should ignore it during drain.
14
+ * Absent on legacy events — treated as broadcast to any coordinator.
15
+ */
16
+ targetCoordinatorDaemonId?: string;
17
+ /**
18
+ * When set, this event is intended for a specific coordinator SESSION on the
19
+ * target daemon (the session that originally dispatched the work). PHASE 2 inject
20
+ * strict-matches the live coordinator by this session id so a sibling coordinator
21
+ * session on the same daemon does not receive another coordinator's completion.
22
+ * Absent on legacy / version-skewed events → daemon-level broadcast (no regression).
23
+ * Rides inside the event payload, so it survives the SQLite payload round-trip and
24
+ * the JSONL file without a dedicated column; it is NOT a drain-scoping key.
25
+ */
26
+ targetCoordinatorSessionId?: string;
27
+ /** '2.0' once stamped. Absent on v1 events. */
28
+ protocolVersion?: typeof MESH_PROTOCOL_VERSION_V2;
29
+ /** Idempotency key (UUID). The receiver's authoritative dedup key (B3). */
30
+ eventId?: string;
31
+ /** Routing scope. Defaulted from the event name unless the emit hint overrides. */
32
+ scope?: MeshEventScope;
33
+ /** Identity of the coordinator that dispatched the work this event reports. */
34
+ dispatchedBy?: CoordinatorIdentity;
35
+ /** Present only for unicast scope: the coordinator this event is addressed to. */
36
+ intendedFor?: CoordinatorIdentity;
37
+ /**
38
+ * True when this event was stamped as a broadcast SOLELY because no owning
39
+ * coordinator identity was resolvable at emit time (self-fallback: dispatchedBy
40
+ * is THIS daemon's own machineId, not a real coordinator). Such a broadcast has
41
+ * no owner, so the MAGI-REPLICA-COMPLETION-EVENT-LEAK guard — which only exists
42
+ * to stop a NON-owner coordinator from consuming an OWNED terminal event — must
43
+ * not apply: an ownerless terminal broadcast is a genuine "deliver to any
44
+ * coordinator that drains on this machine" event and identity-matching its
45
+ * self-id dispatchedBy against the drainer would wrongly route it away.
46
+ * Absent (undefined/false) on a normally-owned event → the leak guard applies.
47
+ */
48
+ dispatchedBySelfFallback?: boolean;
49
+ }
50
+ /**
51
+ * Optional emit-time hint passed to queuePendingMeshCoordinatorEvent so a call
52
+ * site can override the name-defaulted scope or supply richer coordinator
53
+ * identity (e.g. a coordinatorRunId the base event fields don't carry). Every
54
+ * field is optional; when omitted the stamp is derived entirely from the
55
+ * event's own targetCoordinatorDaemonId / targetCoordinatorSessionId. Kept
56
+ * separate from the event so existing single-arg callers are untouched.
57
+ */
58
+ export interface PendingEventEmitHint {
59
+ scope?: MeshEventScope;
60
+ /** Overrides the coordinator identity derived from the event's target fields. */
61
+ dispatchedBy?: CoordinatorIdentity;
62
+ /** Overrides the unicast target derived from the event's target fields. */
63
+ intendedFor?: CoordinatorIdentity;
64
+ /** coordinatorRunId to fold into the derived identity when the event lacks one. */
65
+ coordinatorRunId?: string;
66
+ }
67
+ /**
68
+ * T6 (B3c) enforce switch. When ON, the drain path stops passing an unversioned
69
+ * (v1) or a validation-failing v2 event through to the coordinator — it QUARANTINES
70
+ * it instead (excluded from the delivered batch + WARN + counter), and unicast
71
+ * routing is the only delivery path (there is no v1 broadcast fallback). On by
72
+ * default; set MESH_PROTOCOL_V2_ENFORCE=0/false/off/no to disable and restore the
73
+ * accept-and-warn rollout behaviour exactly.
74
+ *
75
+ * Per the rollout plan (§1 decision 4): enforce is `MESH_PROTOCOL_V2_ENFORCE` (env).
76
+ * Now that every node emits v2 (§배포 게이트 1 / risk §4), the code default is ON —
77
+ * a manual env injection is no longer required to get enforce behaviour. Rollback to
78
+ * accept mode is a pure-env step: set `MESH_PROTOCOL_V2_ENFORCE=0` (or `false`/`off`/
79
+ * `no`) — no code change, no data migration (the schema is additive). Read at call
80
+ * time so a test / operator can toggle it without a restart.
81
+ *
82
+ * Quarantine (not drop) keeps the loss-free invariant. The DESTRUCTIVE drain has
83
+ * already consumed the event from its store by the time routing runs, so "held
84
+ * back" here means: excluded from the delivered batch AND mirrored into the mesh
85
+ * ledger as a recoverable `event_held` entry (the same recovery channel the
86
+ * pending-trim path uses). It is observable via the counters + the ledger, so an
87
+ * operator can requeue it after fixing the producer. The non-destructive PEEK path
88
+ * (countMetrics=false) merely omits the event from the returned list — it never
89
+ * consumed it and must not ledger-record on every status poll.
90
+ */
91
+ export declare function isMeshProtocolV2EnforceEnabled(): boolean;
92
+ /** Observability counters for the v2 drain path. Read by tests and surfaced in
93
+ * mesh_status (B4/T6). Process-lifetime totals — never reset in production. */
94
+ declare const meshV2DrainCounters: {
95
+ /** v2 events that passed validation and unicast/broadcast routing → delivered. */
96
+ v2Delivered: number;
97
+ /** v2 unicast events skipped because intendedFor addressed another coordinator. */
98
+ v2RoutedAway: number;
99
+ /** v2 events skipped because their eventId was already drained (idempotency). */
100
+ v2DedupSkipped: number;
101
+ /** v2 events that failed assertPendingMeshCoordinatorEventV2 but were PASSED
102
+ * THROUGH (accept mode). Non-zero here is the rollout signal that a producer
103
+ * emits a malformed envelope. */
104
+ v2ValidationFailedAccepted: number;
105
+ /** unicast events re-attributed to the drainer via daemon-core match (a
106
+ * coordinatorRunId change orphaned them). */
107
+ v2ReattributedToDrainer: number;
108
+ /** v1 (unversioned) events passed through as broadcast (rollout baseline). */
109
+ v1BroadcastAccepted: number;
110
+ /** T6 enforce: v2 events that FAILED validation and were QUARANTINED (held back
111
+ * from delivery, not dropped). Non-zero here means a producer is still emitting a
112
+ * malformed envelope after enforce was turned on. */
113
+ v2ValidationFailedQuarantined: number;
114
+ /** T6 enforce: v1 (unversioned) events QUARANTINED because no v2 envelope could be
115
+ * derived at emit time. Non-zero here means a producer path still emits v1 after
116
+ * enforce — it should reach 0 once every node is on a v2-stamping build. */
117
+ v1UnversionedQuarantined: number;
118
+ };
119
+ /** Test/observability accessor for the v2 drain counters (snapshot copy). */
120
+ export declare function getMeshV2DrainCounters(): Readonly<typeof meshV2DrainCounters>;
121
+ /** Test helper: zero the v2 drain counters so a test starts from a clean slate. */
122
+ export declare function __resetMeshV2DrainCountersForTests(): void;
123
+ /** Test helper: clear the one-shot WARN dedup set. */
124
+ export declare function __resetMeshV2WarnDedupForTests(): void;
125
+ export declare function readRefineJobId(event: {
126
+ metadataEvent?: Record<string, unknown>;
127
+ } | Record<string, unknown>): string;
128
+ export declare function buildPendingEventFingerprint(event: PendingMeshCoordinatorEvent): string;
129
+ export declare function hasPendingCoordinatorEventDuplicate(event: PendingMeshCoordinatorEvent): boolean;
130
+ /**
131
+ * Retention sweep for the SQLite mesh_pending_events inbox. Deletes long-drained
132
+ * rows (past the idempotency-useful window) and long-orphaned undrained rows (a
133
+ * coordinator identity that never returned). Best-effort and idempotent: a store
134
+ * failure or an empty table is a cheap no-op. Called from the periodic mesh-event
135
+ * maintenance sweep. Returns the number of rows pruned (0 when nothing to do).
136
+ */
137
+ export declare function prunePendingMeshCoordinatorEventsRetention(): number;
138
+ /**
139
+ * Stamp the v2 protocol envelope onto a pending event at emit time (B2a).
140
+ *
141
+ * Non-breaking: returns a NEW event object with protocolVersion/eventId/scope/
142
+ * dispatchedBy/intendedFor added when a coordinator identity can be derived,
143
+ * otherwise returns the input unchanged (a v1 event, broadcast-treated during
144
+ * rollout). Identity and the unicast target are derived from the event's own
145
+ * targetCoordinatorDaemonId / targetCoordinatorSessionId (already carried by
146
+ * every producer), so most call sites need no change; the optional `hint`
147
+ * overrides scope/identity where a site knows better.
148
+ *
149
+ * The eventId is generated here (randomUUID) exactly once, so re-queues that
150
+ * pass an already-stamped event keep their original eventId — the idempotency
151
+ * key is stable across re-delivery. An already-stamped event is returned as-is.
152
+ */
153
+ export declare function stampPendingEventV2(event: PendingMeshCoordinatorEvent, hint?: PendingEventEmitHint): PendingMeshCoordinatorEvent;
154
+ /**
155
+ * Copy the v2 envelope fields that are present on `event` onto a flat wire
156
+ * payload. Only sets a field when it is present, so a v1 event contributes
157
+ * nothing (the payload stays v1-shaped and version-skew safe).
158
+ */
159
+ export declare function serializeV2EnvelopeToWire(event: PendingMeshCoordinatorEvent): Record<string, unknown>;
160
+ /**
161
+ * Restore the v2 envelope fields from a flat wire payload for a re-queue. Only
162
+ * returns fields that survive validation; a payload missing/malforming a field
163
+ * yields a partial (or empty) object so the re-queue path stays v1-safe. The
164
+ * eventId is returned verbatim — its preservation is the idempotency guarantee.
165
+ */
166
+ export declare function readV2EnvelopeFromWire(payload: Record<string, unknown>): Partial<Pick<PendingMeshCoordinatorEvent, 'protocolVersion' | 'eventId' | 'scope' | 'dispatchedBy' | 'intendedFor'>>;
167
+ export declare function queuePendingMeshCoordinatorEvent(rawEvent: PendingMeshCoordinatorEvent, hint?: PendingEventEmitHint): boolean;
168
+ /**
169
+ * Drain and return pending coordinator events for meshId, removing the drained
170
+ * ones from both the SQLite inbox and the JSONL legacy file.
171
+ *
172
+ * When `opts.onlyEvents` is supplied, ONLY events whose name is in that set are
173
+ * drained; every other event stays queued (undrained in SQLite, rewritten back to
174
+ * the JSONL file). The reconcile loop uses this to force-drain terminal/force-inject
175
+ * events into a *generating* coordinator while leaving non-force progress events for
176
+ * the coordinator's next idle transition. The atomic SQLite drained=1 marking and the
177
+ * atomic JSONL rename keep force-drain and a concurrent full drain from double-consuming.
178
+ */
179
+ export declare function drainPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string | ReadonlyArray<string>, opts?: {
180
+ onlyEvents?: ReadonlySet<string>;
181
+ drainerIdentity?: CoordinatorIdentity;
182
+ }): PendingMeshCoordinatorEvent[];
183
+ /**
184
+ * FALSE-BLOCKER-CLONE-QUEUE: retract any still-UNDELIVERED `mesh:dispatch_blocked`
185
+ * actionable-skip event for a task whose blocker has since resolved (the task was
186
+ * claimed, or its skip transitioned to a self-resolving transient reason). Without
187
+ * this, a `target_node_id_unmatched` blocker paged during the brief clone/bootstrap
188
+ * propagation window would linger in the coordinator's pending queue and surface as a
189
+ * false "actionable blocker — will NOT clear on its own" even after the task dispatched.
190
+ *
191
+ * Only removes events that have NOT yet been drained/delivered to the coordinator — an
192
+ * already-delivered message cannot be unsent, but de-dup re-arm (caller side) plus this
193
+ * retraction guarantee no NEW stale blocker accumulates. Best-effort across both the
194
+ * SQLite inbox and the JSONL legacy files (scoped + shared). Returns rows removed.
195
+ */
196
+ export declare function retractPendingDispatchBlockedEvent(meshId: string | undefined, taskId: string | undefined, coordinatorDaemonId?: string): number;
197
+ /** Peek at pending coordinator events without draining (non-destructive). */
198
+ export declare function getPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string | ReadonlyArray<string>, opts?: {
199
+ drainerIdentity?: CoordinatorIdentity;
200
+ }): readonly PendingMeshCoordinatorEvent[];
201
+ /**
202
+ * Test helper: purge all pending-event state for a mesh — SQLite rows
203
+ * (including drained fingerprint history) and JSONL files.
204
+ */
205
+ export declare function __clearMeshPendingEventsForTests(meshId: string): void;
206
+ /**
207
+ * Test helper: persist a pending event VERBATIM, skipping the emit-time v2 stamp.
208
+ * The local emit path (queuePendingMeshCoordinatorEvent → stampPendingEventV2) now
209
+ * always mints a v2 envelope (self-daemon broadcast fallback when no coordinator
210
+ * identity is present), so a genuinely-unversioned (v1) row can no longer be produced
211
+ * through the normal queue. The drain-side v1 handling (accept-broadcast / enforce-
212
+ * quarantine) still matters for durable v1 rows written by a pre-v2 daemon and for
213
+ * version-skewed remote relays, so tests inject those rows directly through this.
214
+ */
215
+ export declare function __persistUnstampedPendingEventForTests(event: PendingMeshCoordinatorEvent): boolean;
216
+ /** Narrowing filter for {@link requeueHeldMeshCoordinatorEvents}, scoped within one mesh. */
217
+ export interface MeshHeldEventRequeueFilter {
218
+ /** Restore only held events whose worker task id matches (from the held event's metadata/taskId). */
219
+ taskId?: string;
220
+ /** Restore only held events originating from this node. */
221
+ nodeId?: string;
222
+ /** Restore only held events of this event name (e.g. 'session:completed'). */
223
+ event?: string;
224
+ /** Restore only held entries recorded at/after this ISO timestamp. */
225
+ since?: string;
226
+ /** Restore only held entries with this hold reason (e.g. 'pending_trim_dropped'). */
227
+ reason?: string;
228
+ }
229
+ export interface MeshHeldEventRequeueResult {
230
+ meshId: string;
231
+ /** event_held entries considered after the filter. */
232
+ matched: number;
233
+ /** entries skipped because a prior requeue already recovered them. */
234
+ alreadyRequeued: number;
235
+ /** entries skipped because they carried no restorable original event / were not recoverable. */
236
+ unrecoverable: number;
237
+ /** entries handed to the pending queue (some may have been dedup-suppressed downstream). */
238
+ requeued: number;
239
+ /** of `requeued`, how many the pending-queue dedup collapsed onto a live event. */
240
+ dedupSuppressed: number;
241
+ entries: Array<{
242
+ heldEntryId: string;
243
+ event: string;
244
+ nodeId?: string;
245
+ taskId?: string;
246
+ reason?: string;
247
+ outcome: 'requeued' | 'already_requeued' | 'unrecoverable';
248
+ }>;
249
+ }
250
+ /**
251
+ * Restore recoverable `event_held` ledger entries back to the pending coordinator
252
+ * queue for `meshId`. See the block comment above for the no-loss / no-double-requeue
253
+ * invariants. Returns per-entry outcomes for the caller to surface.
254
+ */
255
+ export declare function requeueHeldMeshCoordinatorEvents(meshId: string, filter?: MeshHeldEventRequeueFilter): MeshHeldEventRequeueResult;
256
+ /** Explicitly clear all pending coordinator events for a mesh (and coordinator if scoped). */
257
+ export declare function clearPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): void;
258
+ export {};
@@ -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;
@@ -1,49 +1,6 @@
1
- import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
2
- export interface PendingMeshCoordinatorEvent {
3
- event: string;
4
- meshId: string;
5
- nodeLabel: string;
6
- nodeId?: string;
7
- workspace?: string;
8
- metadataEvent: Record<string, unknown>;
9
- queuedAt: number;
10
- }
11
- export declare function queuePendingMeshCoordinatorEvent(event: PendingMeshCoordinatorEvent): boolean;
12
- /** Drain and return all pending coordinator events for meshId, removing them from disk. */
13
- export declare function drainPendingMeshCoordinatorEvents(meshId?: string): PendingMeshCoordinatorEvent[];
14
- /** Peek at pending coordinator events without draining (non-destructive). */
15
- export declare function getPendingMeshCoordinatorEvents(meshId?: string): readonly PendingMeshCoordinatorEvent[];
16
- /** Explicitly clear all pending coordinator events for a mesh. */
17
- export declare function clearPendingMeshCoordinatorEvents(meshId?: string): void;
18
- export declare function tryAssignQueueTask(components: DaemonComponents, meshId: string, nodeId: string, sessionId: string, providerType: string): boolean;
19
- /**
20
- * Triggers a queue check for all nodes in the mesh.
21
- * Called when a new task is enqueued, in case nodes are already idle.
22
- */
23
- export declare function triggerMeshQueue(components: DaemonComponents, meshId: string): Promise<void>;
24
- export declare function handleMeshForwardEvent(components: DaemonComponents, payload: Record<string, unknown>): {
25
- success: boolean;
26
- forwarded: number;
27
- suppressed: boolean;
28
- intentionalCleanupStop: boolean;
29
- duplicateCompletion?: undefined;
30
- error?: undefined;
31
- } | {
32
- success: boolean;
33
- forwarded: number;
34
- suppressed: boolean;
35
- duplicateCompletion: boolean;
36
- intentionalCleanupStop?: undefined;
37
- error?: undefined;
38
- } | {
39
- success: boolean;
40
- forwarded: number;
41
- suppressed?: undefined;
42
- intentionalCleanupStop?: undefined;
43
- duplicateCompletion?: undefined;
44
- error?: undefined;
45
- } | {
46
- success: boolean;
47
- error: string;
48
- };
49
- export declare function setupMeshEventForwarding(components: DaemonComponents): void;
1
+ export type { PendingMeshCoordinatorEvent, MeshHeldEventRequeueFilter, MeshHeldEventRequeueResult, } from './mesh-events-pending.js';
2
+ export { queuePendingMeshCoordinatorEvent, drainPendingMeshCoordinatorEvents, getPendingMeshCoordinatorEvents, clearPendingMeshCoordinatorEvents, requeueHeldMeshCoordinatorEvents, serializeV2EnvelopeToWire, readV2EnvelopeFromWire, getMeshV2DrainCounters, isMeshProtocolV2EnforceEnabled, } from './mesh-events-pending.js';
3
+ export { reconcileDirectDispatchCompletionFromTranscript, } from './mesh-events-stale.js';
4
+ export { setupMeshReconcileLoop, runMeshReconcileTick, resolveCoordinatorDrainDeliverability, shouldHoldPendingDrainForBusyLocalCoordinator, getMeshV2BackstopCounters, } from './mesh-reconcile-loop.js';
5
+ export type { MeshQueueTriggerResult } from './mesh-events-coordinator.js';
6
+ export { tryAssignQueueTask, isSessionActivelyGenerating, triggerMeshQueue, handleMeshForwardEvent, setupMeshEventForwarding, isMeshCoordinatorEvent, __resetIdleAutoFastForwardForTests, __resetMeshWorkspaceCacheForTests, } from './mesh-events-coordinator.js';
@@ -0,0 +1,81 @@
1
+ import type { GitRepoStatus } from '../git/git-types.js';
2
+ export interface MeshFastForwardNodeArgs {
3
+ nodeId?: string;
4
+ meshId?: string;
5
+ workspace: string;
6
+ branch?: string;
7
+ execute?: boolean;
8
+ dryRun?: boolean;
9
+ updateSubmodules?: boolean;
10
+ submoduleIgnorePaths?: string[];
11
+ timeoutMs?: number;
12
+ trigger?: 'manual' | 'idle_auto' | string;
13
+ /**
14
+ * Operation mode. 'merge' (default) absorbs upstream commits into the local
15
+ * branch via git merge --ff-only (requires ahead=0, behind>0). 'push' publishes
16
+ * local commits to origin via a strict ff-only push (requires HEAD to be a
17
+ * descendant of origin/<branch>); it never force-pushes, resets, or rebases.
18
+ */
19
+ mode?: 'merge' | 'push';
20
+ /**
21
+ * When mode='push', also fast-forward push submodule (e.g. oss) HEADs to their
22
+ * origin main branch. Gated by allowAutoPublishSubmoduleMainCommits — skipped
23
+ * unless that policy is true. Each submodule must still pass the descendant gate.
24
+ * Defaults false (root push only).
25
+ */
26
+ pushSubmodules?: boolean;
27
+ /**
28
+ * Mesh policy flag mirrored from RepoMeshPolicy.allowAutoPublishSubmoduleMainCommits.
29
+ * Submodule pushes are refused unless this is true.
30
+ */
31
+ allowAutoPublishSubmoduleMainCommits?: boolean;
32
+ }
33
+ export interface MeshFastForwardPlannedStep {
34
+ operation: 'refresh_upstream' | 'verify_clean_worktree' | 'verify_fast_forward' | 'merge_ff_only' | 'submodule_update' | 'verify_post_status' | 'verify_push_descendant' | 'push_ff_only' | 'push_submodules_ff_only';
35
+ description: string;
36
+ safe: true;
37
+ willMutateWorktree: boolean;
38
+ }
39
+ export interface MeshFastForwardSubmodulePushResult {
40
+ path: string;
41
+ commit?: string;
42
+ remote: string;
43
+ remoteBranch: string;
44
+ pushed: boolean;
45
+ skipped: boolean;
46
+ code: string;
47
+ refspec?: string;
48
+ error?: string;
49
+ }
50
+ export interface MeshFastForwardResult {
51
+ success: boolean;
52
+ code: string;
53
+ nodeId?: string;
54
+ meshId?: string;
55
+ workspace: string;
56
+ mode: 'merge' | 'push';
57
+ allowed: boolean;
58
+ dryRun: boolean;
59
+ willRun: boolean;
60
+ executed: boolean;
61
+ updateSubmodules: boolean;
62
+ blockingReasons: string[];
63
+ plannedSteps: MeshFastForwardPlannedStep[];
64
+ current?: GitRepoStatus;
65
+ preStatus?: GitRepoStatus;
66
+ postStatus?: GitRepoStatus;
67
+ /** Push target derived from the tracked upstream (mode='push'). */
68
+ pushTarget?: {
69
+ remote: string;
70
+ remoteBranch: string;
71
+ refspec: string;
72
+ };
73
+ /** Submodule ff-only push outcomes (mode='push' with pushSubmodules). */
74
+ submodulePushes?: MeshFastForwardSubmodulePushResult[];
75
+ finalBranchConvergenceState?: Record<string, unknown>;
76
+ operationError?: string;
77
+ ledgerError?: string;
78
+ nextStep?: string;
79
+ trigger?: string;
80
+ }
81
+ export declare function fastForwardMeshNode(args: MeshFastForwardNodeArgs): Promise<MeshFastForwardResult>;
@@ -1,6 +1,26 @@
1
1
  import type { RepoMeshDaemonRole, RepoMeshHostMetadata, RepoMeshHostStatus } from '../repo-mesh-types.js';
2
2
  export declare function normalizeMeshDaemonRole(value: unknown): RepoMeshDaemonRole | undefined;
3
- export declare function resolveMeshHostStatus(mesh: unknown): RepoMeshHostStatus;
3
+ /**
4
+ * Options for resolveMeshHostStatus's read-side host-pin default.
5
+ *
6
+ * `localDaemonId` is the id of the daemon evaluating the mesh (typically
7
+ * `deps.statusInstanceId`). When the persisted `meshHost` declares `role:'host'`
8
+ * but carries NO `hostDaemonId` (the first-setup miss — a host mesh whose pin was
9
+ * never written to config), the host daemon IS this local daemon by definition, so
10
+ * we synthesize `hostDaemonId = localDaemonId` (and, when the mesh has a node
11
+ * representing this daemon, `hostNodeId`). This is the read-side default — the SSOT
12
+ * is computed from the role + the evaluating daemon's identity rather than requiring
13
+ * a config migration to backfill every already-created mesh.
14
+ *
15
+ * HARD guard: the synthesis fires ONLY for `role:'host'`. A `role:'member'` daemon
16
+ * must NEVER fill itself in as host — that would make a member falsely claim
17
+ * coordinator/queue ownership.
18
+ */
19
+ export interface ResolveMeshHostOptions {
20
+ /** Id of the daemon evaluating this mesh (e.g. deps.statusInstanceId). */
21
+ localDaemonId?: string;
22
+ }
23
+ export declare function resolveMeshHostStatus(mesh: unknown, opts?: ResolveMeshHostOptions): RepoMeshHostStatus;
4
24
  export declare function isMeshHostOwner(mesh: unknown): boolean;
5
25
  export declare function buildMeshHostRequiredFailure(mesh: unknown, operation: string): Record<string, unknown>;
6
26
  export declare function requireMeshHostQueueOwner(opts?: {