@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,54 @@
1
+ /**
2
+ * Registry / provider-distribution URL resolver.
3
+ *
4
+ * Single source of truth for the ADHDev provider *registry* base URL and the
5
+ * provider *tarball* (GitHub) URL. Self-hosters can repoint both away from the
6
+ * vendor defaults so the daemon never phones home to `api.adhf.dev` /
7
+ * `github.com/vilmire/adhdev-providers`.
8
+ *
9
+ * Resolution priority (highest first):
10
+ * 1. Explicit config field — `config.registryUrl` / `config.providerTarballUrl`
11
+ * 2. Environment variable — `ADHDEV_REGISTRY_URL` / `ADHDEV_PROVIDER_TARBALL_URL`
12
+ * 3. Vendor default — existing URLs (unchanged for default users)
13
+ *
14
+ * Default users get byte-identical behavior: the vendor defaults equal the
15
+ * literals these functions replaced.
16
+ */
17
+ /** Vendor default registry base URL (no trailing slash). */
18
+ export declare const DEFAULT_REGISTRY_BASE_URL = "https://api.adhf.dev/api/v1/registry";
19
+ /** Vendor default provider tarball URL (GitHub main branch archive). */
20
+ export declare const DEFAULT_PROVIDER_TARBALL_URL = "https://github.com/vilmire/adhdev-providers/archive/refs/heads/main.tar.gz";
21
+ /** Env var that overrides the registry base URL. */
22
+ export declare const REGISTRY_URL_ENV_VAR = "ADHDEV_REGISTRY_URL";
23
+ /** Env var that overrides the provider tarball URL. */
24
+ export declare const PROVIDER_TARBALL_URL_ENV_VAR = "ADHDEV_PROVIDER_TARBALL_URL";
25
+ /**
26
+ * Resolve the provider registry base URL.
27
+ *
28
+ * @param configuredUrl explicit config value (config.registryUrl); highest priority.
29
+ * @param env process env source (defaults to process.env; injectable for tests).
30
+ * @returns the resolved base URL with any trailing slash stripped, so callers
31
+ * can safely append `/providers`, `/providers/<type>`, etc.
32
+ */
33
+ export declare function resolveRegistryBaseUrl(configuredUrl?: string | null, env?: NodeJS.ProcessEnv): string;
34
+ /**
35
+ * Resolve the provider tarball (archive) URL.
36
+ *
37
+ * @param configuredUrl explicit config value (config.providerTarballUrl); highest priority.
38
+ * @param env process env source (defaults to process.env; injectable for tests).
39
+ */
40
+ export declare function resolveProviderTarballUrl(configuredUrl?: string | null, env?: NodeJS.ProcessEnv): string;
41
+ /** Parsed tarball request target for callers that issue raw hostname/path requests. */
42
+ export interface TarballRequestTarget {
43
+ /** Full resolved tarball URL. */
44
+ url: string;
45
+ /** Hostname component (e.g. `github.com`). */
46
+ hostname: string;
47
+ /** Path component including any query string (e.g. `/vilmire/...tar.gz`). */
48
+ path: string;
49
+ }
50
+ /**
51
+ * Resolve the provider tarball URL and split it into `{ url, hostname, path }`
52
+ * for callers that build raw `https.request` options (e.g. HEAD ETag probes).
53
+ */
54
+ export declare function resolveProviderTarballTarget(configuredUrl?: string | null, env?: NodeJS.ProcessEnv): TarballRequestTarget;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Repo Settings — one unified loader over the repo-committed `.adhdev/*` config
3
+ * files (the "single source" assembly point).
4
+ *
5
+ * DESIGN (option B — file separation preserved): the repo keeps its declarative
6
+ * config in SEPARATE files, each with its own dedicated loader:
7
+ *
8
+ * .adhdev/mesh.json → loadRepoMeshJsonConfig (coordinator + operatingNotes)
9
+ * .adhdev/refine.json → loadMeshRefineConfig (Refinery validation)
10
+ * .adhdev/worktree_bootstrap.json → loadMeshWorktreeBootstrapConfig
11
+ * .adhdev/change-impact.json → loadChangeImpactConfig
12
+ *
13
+ * Nothing is inlined into mesh.json. `loadRepoSettings` simply CALLS each
14
+ * dedicated loader and assembles the results into one `RepoSettings` object so a
15
+ * consumer can read every repo-shared setting through a single call instead of
16
+ * threading four loaders. The per-file loaders remain the source of truth (and
17
+ * stay independently usable); this is a convenience aggregator, not a new schema.
18
+ *
19
+ * IMPORTANT — policy is NOT here. RepoMeshPolicy (the 15 scheduling/approval
20
+ * fields) is MACHINE-LOCAL only: it lives in meshes.json and is never sourced
21
+ * from or merged with a repo file. mesh.json carries only coordinator prompt
22
+ * config + operating notes (+ advisory limits).
23
+ *
24
+ * The refine/worktree-bootstrap loaders also honor a machine-local INLINE seam
25
+ * (mesh.refineConfig / mesh.policy.worktreeBootstrap, etc.) — that seam is for
26
+ * machine-local config and is unchanged here; mesh.json gains no such zone.
27
+ */
28
+ import { type RepoMeshDeclarativeCoordinatorConfig, type RepoMeshDeclarativeLimits, type RepoMeshJsonConfigLoadResult } from './mesh-json-config.js';
29
+ import { type MeshRefineConfigLoadResult } from '../mesh/refine-config.js';
30
+ import { type WorktreeBootstrapConfigLoadResult } from '../mesh/worktree-bootstrap-config.js';
31
+ import { type ChangeImpactConfigLoadResult } from '../git/change-impact-config.js';
32
+ import type { CoordinatorOperatingNote } from '../mesh/coordinator-prompt.js';
33
+ export interface LoadRepoSettingsOptions {
34
+ /** Workspace path whose `.adhdev/*` files are resolved (mesh.json / refine / bootstrap). */
35
+ workspace: string;
36
+ /**
37
+ * Machine-local mesh entry, consulted ONLY for the INLINE seam of the
38
+ * refine / worktree-bootstrap loaders (mesh.refineConfig etc.). Optional —
39
+ * omit it and only the repo files are considered. NEVER used to source policy.
40
+ */
41
+ mesh?: any;
42
+ /**
43
+ * Repo root for change-impact resolution. Defaults to `workspace` when omitted
44
+ * (change-impact compares the daemon build commit against the workspace HEAD).
45
+ */
46
+ repoRoot?: string;
47
+ }
48
+ /**
49
+ * The assembled repo-shared settings. Each sub-config carries its own load
50
+ * result (source / sourceType / error) so a consumer can tell "absent" from
51
+ * "invalid" per file. `coordinator` / `operatingNotes` / `limits` are lifted out
52
+ * of the mesh.json load result for convenience; `meshJson` keeps the full result
53
+ * (e.g. for the `sourceType === 'invalid'` warning on coordinator launch).
54
+ */
55
+ export interface RepoSettings {
56
+ /** Repo-shared coordinator prompt config (override/append) from `.adhdev/mesh.json`. */
57
+ coordinator?: RepoMeshDeclarativeCoordinatorConfig;
58
+ /** Repo-declared baseline operating notes from `.adhdev/mesh.json`. */
59
+ operatingNotes?: CoordinatorOperatingNote[];
60
+ /** Advisory-only limits from `.adhdev/mesh.json` (recorded, not enforced in v1). */
61
+ limits?: RepoMeshDeclarativeLimits;
62
+ /** Full `.adhdev/mesh.json` declarative load result (coordinator/operatingNotes source). */
63
+ meshJson: RepoMeshJsonConfigLoadResult;
64
+ /** `.adhdev/refine.json` Refinery validation config load result. */
65
+ refine: MeshRefineConfigLoadResult;
66
+ /** `.adhdev/worktree_bootstrap.json` bootstrap config load result. */
67
+ worktreeBootstrap: WorktreeBootstrapConfigLoadResult;
68
+ /** `.adhdev/change-impact.json` change-impact config load result. */
69
+ changeImpact: ChangeImpactConfigLoadResult;
70
+ }
71
+ /**
72
+ * Load every repo-committed `.adhdev/*` setting for a workspace and assemble them
73
+ * into one object. Each dedicated loader degrades to an `unavailable`/`invalid`
74
+ * load result rather than throwing, so this never throws on a missing or broken
75
+ * file — a consumer inspects the per-sub-config `sourceType`.
76
+ */
77
+ export declare function loadRepoSettings(opts: LoadRepoSettingsOptions): RepoSettings;
@@ -21,6 +21,17 @@ export interface DaemonState {
21
21
  sessionNotificationDismissals: Record<string, string>;
22
22
  /** Current notification unread override ids keyed by stable session target */
23
23
  sessionNotificationUnreadOverrides: Record<string, string>;
24
+ /**
25
+ * Resolved provider-native conversation id for a live session, keyed by the
26
+ * ADHDev/mesh session id. Persisted so it survives a daemon restart: a
27
+ * provider whose on-disk store is keyed by an internally-generated id it
28
+ * never exposes on the CLI (antigravity — no --session-id) can then exact-bind
29
+ * its conversation .db after restart instead of re-running the mtime/recency
30
+ * heuristic, which drops the store once idle and collapses read_chat to the
31
+ * PTY parse (user echo only, assistant tail lost). Mirrors the in-memory read
32
+ * pin (chat-commands-read lastBoundProviderSessionIdByMeshSession).
33
+ */
34
+ sessionProviderSessionPins: Record<string, string>;
24
35
  }
25
36
  /**
26
37
  * Load runtime state from disk
@@ -34,3 +45,22 @@ export declare function saveState(state: DaemonState): void;
34
45
  * Reset runtime state
35
46
  */
36
47
  export declare function resetState(): void;
48
+ /**
49
+ * Load the full persisted session→provider-conversation pin map (sessionId →
50
+ * provider-native conversation id). Survives daemon restart. Empty object when
51
+ * none recorded or the state file is unreadable.
52
+ */
53
+ export declare function loadPersistedProviderSessionPins(): Record<string, string>;
54
+ /**
55
+ * Persist one session→provider-conversation pin. Load-mutate-save against the
56
+ * on-disk state so it survives a daemon restart; a no-op when the value already
57
+ * matches (avoids rewriting state.json on every read). Never clears a pin with an
58
+ * empty value.
59
+ */
60
+ export declare function recordPersistedProviderSessionPin(sessionId: string, providerSessionId: string): void;
61
+ /**
62
+ * Test-only: drop all persisted session→provider-conversation pins from disk.
63
+ * Used by tests that assert a clean "no pin" state so a sibling test's write to
64
+ * the shared per-process ADHDEV_CONFIG_DIR does not leak in.
65
+ */
66
+ export declare function clearPersistedProviderSessionPins(): void;
@@ -103,8 +103,6 @@ export declare class DevServer implements DevServerContext {
103
103
  getLatestScriptVersionDir(scriptsDir: string): string | null;
104
104
  private resolveAutoImplWritableProviderDir;
105
105
  private handleAutoImplement;
106
- private buildAutoImplPrompt;
107
- private buildCliAutoImplPrompt;
108
106
  private handleAutoImplSSE;
109
107
  private handleAutoImplCancel;
110
108
  sendAutoImplSSE(msg: {
@@ -29,3 +29,20 @@ export declare function detectCLIs(providerLoader?: ProviderLoader, options?: {
29
29
  export declare function detectCLI(cliId: string, providerLoader?: ProviderLoader, options?: {
30
30
  includeVersion?: boolean;
31
31
  }): Promise<CLIInfo | null>;
32
+ /**
33
+ * Fold a detected CLIInfo[] into the `{ providerId: version }` map surfaced as a
34
+ * node's providerVersions (see RepoMeshNodeCapabilities.providerVersions). Only
35
+ * installed providers that produced a parseable version string are included, so a
36
+ * missing entry means "not installed or version unknown" — never a fabricated value.
37
+ * Pure/deterministic: the same detection input always yields the same map, which is
38
+ * what the git_status envelope carries and the mesh_status skew check compares.
39
+ */
40
+ export declare function buildProviderVersions(detected: CLIInfo[]): Record<string, string>;
41
+ /**
42
+ * Return the current cached provider-versions map for this daemon, triggering a
43
+ * lazy background refresh when the snapshot is stale/cold. Never blocks: returns
44
+ * whatever is currently cached (an empty object before the first refresh lands).
45
+ * This is the source the git_status envelope reads to self-report a node's
46
+ * provider versions to the mesh coordinator.
47
+ */
48
+ export declare function getCachedProviderVersions(providerLoader?: ProviderLoader): Record<string, string>;
@@ -32,4 +32,17 @@ export interface IDEDefinition {
32
32
  };
33
33
  }
34
34
  export declare function registerIDEDefinition(def: IDEDefinition): void;
35
+ /**
36
+ * Resolve an IDE version on demand (NOT at boot).
37
+ *
38
+ * Order of preference, all spawn-free where possible:
39
+ * 1. win32: read the bundled product.json/package.json next to the exe.
40
+ * 2. Otherwise spawn `<cli> --version` — but ONLY when the binary is not a
41
+ * known GUI executable (the #4 guard), so we never boot an IDE window.
42
+ *
43
+ * `win32ProcessNames` is provider.json `processNames.win32` (type → exe names),
44
+ * used to recognise GUI executables. Callers that have a ProviderLoader can
45
+ * pass `providerLoader.getWinProcessNames()`.
46
+ */
47
+ export declare function getIdeVersion(cliCommand: string, win32ProcessNames?: Record<string, string[]>): Promise<string | null>;
35
48
  export declare function detectIDEs(providerLoader?: ProviderLoader): Promise<IDEInfo[]>;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ADHDev — Windows IDE version detection (execution-free)
3
+ *
4
+ * On Windows the resolved "CLI" for a VS Code fork (Cursor, Antigravity, …)
5
+ * frequently resolves to the GUI Electron executable itself, because the
6
+ * case-insensitive filesystem matches `...\cursor\cursor.exe` against the
7
+ * real `Cursor.exe`. Running `<that exe> --version` boots the GUI instead of
8
+ * printing a version (Electron ignores the unknown flag and opens a window).
9
+ *
10
+ * To learn the version WITHOUT spawning anything, we read the bundled
11
+ * `product.json` / `package.json` that ship next to the executable. VS Code
12
+ * forks embed their version there. This is a pure filesystem read.
13
+ *
14
+ * It also exposes a guard so any remaining `--version` exec path can refuse to
15
+ * spawn a binary that is a known GUI executable for an IDE provider.
16
+ */
17
+ /**
18
+ * Read an IDE version from disk (no process spawn).
19
+ *
20
+ * @param exePath Absolute path to the GUI executable (or any path inside the
21
+ * IDE install dir — we read the manifest relative to its directory).
22
+ * @returns The version string, or null if it could not be determined.
23
+ */
24
+ export declare function readWin32IdeVersionFromDisk(exePath: string): string | null;
25
+ /**
26
+ * True when `binPath` resolves to a known GUI executable for some IDE.
27
+ *
28
+ * Used as a safety net: any code path about to run `<bin> --version` must skip
29
+ * the spawn when the binary is actually the GUI Electron exe, since that would
30
+ * launch the IDE window. Comparison is case-insensitive on the basename
31
+ * (Windows filesystem semantics) against every provider's `processNames.win32`.
32
+ *
33
+ * @param binPath Resolved binary path that would be exec'd.
34
+ * @param win32ProcessNames Map of provider type → list of GUI exe names
35
+ * (from provider.json `processNames.win32`, e.g. `["Cursor.exe"]`).
36
+ */
37
+ export declare function isKnownWin32GuiExe(binPath: string | null | undefined, win32ProcessNames: Record<string, string[]>): boolean;
@@ -0,0 +1,159 @@
1
+ /**
2
+ * "Change Impact" — config-driven classification of which git changes between the
3
+ * live daemon's build commit and the workspace HEAD actually require a daemon
4
+ * rebuild/restart (vs. a web-only redeploy, vs. nothing).
5
+ *
6
+ * The daemon-core git surface only knows the FACTS (which files / packages changed
7
+ * between buildCommit..HEAD). The POLICY — which packages are daemon-runtime, which
8
+ * are web-only, which root files are non-runtime, and what command to recommend —
9
+ * is declarative config injected from outside. This keeps git-status.ts repo-agnostic
10
+ * while preserving ADHDev's exact built-in behavior when no config is present.
11
+ *
12
+ * SECURITY: config is declarative only. JSON/YAML are parsed; arbitrary JS config
13
+ * (.js) is intentionally NOT supported, so loading a config can never execute code.
14
+ */
15
+ /** A change-impact classification bucket. */
16
+ export type ChangeImpactKind = 'daemon' | 'web' | 'none';
17
+ /**
18
+ * Recommended action for a given impact classification. `recommendedAction` is the
19
+ * stable classification key (always one of daemon|web|none, NOT config-overridable);
20
+ * config customizes only the human-facing `recommendedCommand` recipe.
21
+ */
22
+ export interface ChangeImpactTarget {
23
+ /** Human-facing command/recipe to act on the impact (e.g. deploy + restart). */
24
+ recommendedCommand: string;
25
+ }
26
+ export interface ChangeImpactConfig {
27
+ /**
28
+ * Package names (the `<name>` in `packages/<name>/`) whose change means the
29
+ * daemon runtime is stale and must be rebuilt/redeployed + restarted. When
30
+ * provided, this REPLACES the built-in daemon-runtime set.
31
+ */
32
+ daemonRuntimePackages?: string[];
33
+ /**
34
+ * Package names that are web-only — a change to one does not require a daemon
35
+ * restart, only a web redeploy. When provided, this REPLACES the built-in
36
+ * web-only set.
37
+ */
38
+ webOnlyPackages?: string[];
39
+ /**
40
+ * Glob patterns for root-level (non-package) files that demonstrably cannot
41
+ * change what the daemon runtime executes (markers, docs, license text). These
42
+ * are added on top of the built-in non-runtime root-file detection.
43
+ */
44
+ nonRuntimeRootFilePatterns?: string[];
45
+ /** Recommended action/command per impact classification. Missing keys fall back to built-in defaults. */
46
+ impactTargets?: Partial<Record<ChangeImpactKind, ChangeImpactTarget>>;
47
+ }
48
+ export interface ChangeImpactConfigLoadResult {
49
+ config?: ChangeImpactConfig;
50
+ source: string;
51
+ sourceType: 'repo_file' | 'unavailable' | 'invalid';
52
+ path?: string;
53
+ error?: string;
54
+ /**
55
+ * Stable identity of the config SOURCE, used as part of a cache key so a config
56
+ * edit invalidates any cached impact evaluation. Combines the resolved path and
57
+ * its mtime (or the path for the unavailable/invalid case).
58
+ */
59
+ sourceKey: string;
60
+ }
61
+ export declare const CHANGE_IMPACT_CONFIG_LOCATIONS: string[];
62
+ export declare const CHANGE_IMPACT_CONFIG_SCHEMA: {
63
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
64
+ readonly title: "ADHDev Change Impact Config";
65
+ readonly type: "object";
66
+ readonly additionalProperties: false;
67
+ readonly properties: {
68
+ readonly daemonRuntimePackages: {
69
+ readonly type: "array";
70
+ readonly items: {
71
+ readonly type: "string";
72
+ readonly minLength: 1;
73
+ };
74
+ };
75
+ readonly webOnlyPackages: {
76
+ readonly type: "array";
77
+ readonly items: {
78
+ readonly type: "string";
79
+ readonly minLength: 1;
80
+ };
81
+ };
82
+ readonly nonRuntimeRootFilePatterns: {
83
+ readonly type: "array";
84
+ readonly items: {
85
+ readonly type: "string";
86
+ readonly minLength: 1;
87
+ };
88
+ };
89
+ readonly impactTargets: {
90
+ readonly type: "object";
91
+ readonly additionalProperties: false;
92
+ readonly properties: {
93
+ readonly daemon: {
94
+ readonly $ref: "#/$defs/target";
95
+ };
96
+ readonly web: {
97
+ readonly $ref: "#/$defs/target";
98
+ };
99
+ readonly none: {
100
+ readonly $ref: "#/$defs/target";
101
+ };
102
+ };
103
+ };
104
+ };
105
+ readonly $defs: {
106
+ readonly target: {
107
+ readonly type: "object";
108
+ readonly additionalProperties: false;
109
+ readonly required: readonly ["recommendedCommand"];
110
+ readonly properties: {
111
+ readonly recommendedCommand: {
112
+ readonly type: "string";
113
+ readonly minLength: 1;
114
+ };
115
+ };
116
+ };
117
+ };
118
+ };
119
+ export declare function validateChangeImpactConfig(raw: unknown, source?: string): {
120
+ valid: boolean;
121
+ errors: string[];
122
+ config?: ChangeImpactConfig;
123
+ };
124
+ /**
125
+ * Locate and load the Change Impact config for a repo root. Declarative only —
126
+ * never executes config. Returns a sourceKey suitable for cache invalidation:
127
+ * config path + mtime, or the sentinel for the missing/invalid case.
128
+ */
129
+ export declare function loadChangeImpactConfig(repoRoot: string): ChangeImpactConfigLoadResult;
130
+ /**
131
+ * Translate a config glob pattern into a RegExp matched against a forward-slash
132
+ * file path. Supports `**` (any path segments), `*` (any chars except `/`), and
133
+ * `?` (single non-slash char). No brace/character-class expansion — declarative,
134
+ * minimal, predictable. All other characters are matched literally.
135
+ */
136
+ export declare function globToRegExp(pattern: string): RegExp;
137
+ export interface ChangeImpactConfigSuggestion {
138
+ /** A non-executable, declarative config draft a human can save verbatim. */
139
+ suggestedConfig: ChangeImpactConfig;
140
+ /** Per-field human-facing rationale for the proposed classification. */
141
+ notes: string[];
142
+ /** Package directories discovered under `packages/` (and `oss/packages/`). */
143
+ discoveredPackages: {
144
+ daemon: string[];
145
+ web: string[];
146
+ unclassified: string[];
147
+ };
148
+ }
149
+ /**
150
+ * Inspect a repo's package layout and propose a reasonable, declarative Change
151
+ * Impact config draft. This is heuristic scaffold ONLY — it never executes
152
+ * anything and the draft must be reviewed/saved by a human before it takes
153
+ * effect. The heuristic mirrors ADHDev's own conventions:
154
+ * - `web-*` / `*-web` packages → web-only (web redeploy, no daemon restart)
155
+ * - everything else under packages/ → daemon-runtime (rebuild + restart)
156
+ * - docs/license/marker root files → non-runtime
157
+ * Callers are expected to prune the draft to their actual runtime topology.
158
+ */
159
+ export declare function suggestChangeImpactConfig(repoRoot: string): ChangeImpactConfigSuggestion;
@@ -23,8 +23,12 @@ export interface GitLogResult extends GitRepoIdentity {
23
23
  lastCheckedAt: number;
24
24
  }
25
25
  export interface GitCheckpointResult extends GitRepoIdentity {
26
- commit: string;
26
+ commit?: string;
27
27
  message: string;
28
+ status?: 'created' | 'skipped';
29
+ skipped?: boolean;
30
+ noop?: boolean;
31
+ reason?: 'nothing_to_commit';
28
32
  lastCheckedAt: number;
29
33
  }
30
34
  export interface GitStashPushResult extends GitRepoIdentity {
@@ -43,15 +47,19 @@ export interface GitCommandServices {
43
47
  getStatus?: (params: {
44
48
  workspace: string;
45
49
  refreshUpstream?: boolean;
50
+ includeSubmodules?: boolean;
51
+ submoduleIgnorePaths?: string[];
46
52
  }) => Promise<GitRepoStatus> | GitRepoStatus;
47
53
  getDiffSummary?: (params: {
48
54
  workspace: string;
49
55
  staged?: boolean;
56
+ base?: string;
50
57
  }) => Promise<GitDiffSummary> | GitDiffSummary;
51
58
  getDiffFile?: (params: {
52
59
  workspace: string;
53
60
  path: string;
54
61
  staged?: boolean;
62
+ base?: string;
55
63
  }) => Promise<GitFileDiff> | GitFileDiff;
56
64
  createSnapshot?: (params: {
57
65
  workspace: string;
@@ -104,6 +112,17 @@ export interface GitCommandServices {
104
112
  branch?: string;
105
113
  setUpstream?: boolean;
106
114
  }) => Promise<GitPushResult>;
115
+ /**
116
+ * Best-effort, non-blocking source of this daemon's detected provider CLI/ACP
117
+ * versions (keyed by provider id) + its build version, folded onto the git_status
118
+ * envelope so a mesh coordinator can self-heal each node's providerVersions the
119
+ * same way it does platform/arch. Wired at daemon boot from the cached CLI
120
+ * detection snapshot; omitted (⇒ versions not reported) when unavailable.
121
+ */
122
+ getReporterProviderVersions?: () => {
123
+ providerVersions?: Record<string, string>;
124
+ daemonBuildVersion?: string;
125
+ };
107
126
  }
108
127
  type GitCommandFailure = {
109
128
  success: false;
@@ -113,6 +132,11 @@ type GitCommandFailure = {
113
132
  type GitCommandSuccess = {
114
133
  success: true;
115
134
  status: GitRepoStatus;
135
+ reporterPlatform?: string;
136
+ reporterArch?: string;
137
+ reporterMachineNickname?: string;
138
+ reporterProviderVersions?: Record<string, string>;
139
+ reporterDaemonBuildVersion?: string;
116
140
  } | {
117
141
  success: true;
118
142
  diffSummary: GitDiffSummary;
@@ -149,7 +173,7 @@ type GitCommandSuccess = {
149
173
  push: GitPushResult;
150
174
  };
151
175
  export type GitCommandResult = GitCommandSuccess | GitCommandFailure;
152
- export declare function createDefaultGitCommandServices(): GitCommandServices;
176
+ export declare function createDefaultGitCommandServices(overrides?: Pick<GitCommandServices, 'getReporterProviderVersions'>): GitCommandServices;
153
177
  export declare function isGitCommandName(command: string): command is GitCommandName;
154
178
  export declare function handleGitCommand(command: GitCommandName, args: any, services?: GitCommandServices): Promise<GitCommandResult>;
155
179
  export declare function handleGitCommand(command: string, args: any, services?: GitCommandServices): Promise<GitCommandResult>;
@@ -3,6 +3,12 @@ export interface GitDiffOptions {
3
3
  timeoutMs?: number;
4
4
  maxFiles?: number;
5
5
  maxBytes?: number;
6
+ /**
7
+ * When set, diff `<baseRef>...HEAD` (merge-base range — "what this branch
8
+ * adds on top of base") instead of the working tree. Staged/untracked
9
+ * sections do not apply in this mode.
10
+ */
11
+ baseRef?: string;
6
12
  }
7
13
  export interface GitFileDiffResult {
8
14
  workspace: string;
@@ -1,4 +1,15 @@
1
1
  import type { GitFailureReason, GitRepoIdentity } from './git-types.js';
2
+ /**
3
+ * Timeout for status-collection git commands (status/log/submodule/stash/fetch).
4
+ * The default 5s is fine for porcelain status, but on Windows the `git` subprocess
5
+ * spawn itself is pathologically slow (measured: `submodule status` ~3.5s, cold
6
+ * `log -1` ~4.2s) and overlaps with refreshUpstream fetches — a single command
7
+ * routinely exceeds 5s, which previously collapsed the whole status to all-null and
8
+ * dropped the node from the mesh graph. Give the collection path a much larger
9
+ * budget so a slow-but-healthy repo never reads as "not a git repo". Windows gets a
10
+ * larger budget than POSIX because the spawn cost is OS-specific, not repo-specific.
11
+ */
12
+ export declare const GIT_STATUS_TIMEOUT_MS: number;
2
13
  export interface GitExecutorOptions {
3
14
  timeoutMs?: number;
4
15
  maxBuffer?: number;
@@ -1,4 +1,21 @@
1
1
  import type { GitRepoStatus } from './git-types.js';
2
+ import { type DaemonBuildInfo } from '../build-info.js';
3
+ import { type ChangeImpactConfig } from './change-impact-config.js';
4
+ /**
5
+ * TTL for the happy-path result cache (C1). reconcile fires every 4s and mesh_status
6
+ * is polled; a single getGitRepoStatus on a 1-submodule repo spawns ~13-15 git
7
+ * processes (+ optional network fetch) which on Windows is ~10-15s. Within this short
8
+ * window, repeat callers that share the same option shape are served the already
9
+ * collected status instead of re-shelling. Kept well under the 4s reconcile cadence so
10
+ * a genuinely fresh probe still happens at least roughly once per reconcile tick.
11
+ */
12
+ export declare const GIT_STATUS_CACHE_TTL_MS = 1500;
13
+ /** Test seam: clear the last-known-good status cache between cases. */
14
+ export declare function __resetGitStatusCacheForTests(): void;
15
+ /** Alias matching the task's requested name. */
16
+ export declare const __resetGitStatusCache: typeof __resetGitStatusCacheForTests;
17
+ /** Test-only introspection: number of memoized Change Impact evaluations. */
18
+ export declare function __changeImpactEvalCacheSizeForTests(): number;
2
19
  export interface GitStatusOptions {
3
20
  timeoutMs?: number;
4
21
  /** When true, include submodule status in the result. Defaults to true. */
@@ -10,10 +27,73 @@ export interface GitStatusOptions {
10
27
  * Callers should opt into this only for convergence-critical surfaces.
11
28
  */
12
29
  refreshUpstream?: boolean;
30
+ /**
31
+ * When true, bypass the C1 TTL result cache: always re-collect a fresh status
32
+ * (ignoring any cached entry younger than GIT_STATUS_CACHE_TTL_MS). The freshly
33
+ * collected result still UPDATES the cache so subsequent normal callers benefit.
34
+ *
35
+ * Mutating / decision callers (mesh_fast_forward preflight + post-merge re-read,
36
+ * refine submodule alignment pre/post status) MUST set this — acting on a stale
37
+ * ahead/behind or submodule sync verdict is the primary correctness hazard of the
38
+ * cache. Read-only/observe callers (mesh_status, git-monitor, reconcile) leave it
39
+ * unset and enjoy the dedup.
40
+ */
41
+ forceFresh?: boolean;
42
+ /**
43
+ * Test/override seam for the daemon build stamp used by the stale-build
44
+ * detector. Production callers omit this so the real baked-in build commit
45
+ * (getDaemonBuildInfo) is used.
46
+ */
47
+ daemonBuildInfo?: DaemonBuildInfo;
48
+ /**
49
+ * Change Impact policy override. When provided, the daemonBuildBehind
50
+ * classifier uses this declarative config instead of auto-loading the repo's
51
+ * `.adhdev/change-impact.*` file. When omitted, getGitRepoStatus auto-loads the
52
+ * repo config (cached); when neither is present the built-in ADHDev default
53
+ * policy applies, preserving the legacy behavior exactly.
54
+ *
55
+ * Pass `null` to force the built-in default policy and skip auto-loading (used
56
+ * to assert legacy parity in tests).
57
+ */
58
+ changeImpactConfig?: ChangeImpactConfig | null;
13
59
  }
60
+ /**
61
+ * C2: minimum interval between actual `git fetch` network calls per workspace. A
62
+ * refreshUpstream caller within this window does NOT re-fetch; it serves ahead/behind
63
+ * from the locally-re-read porcelain (which is always fresh every call). So
64
+ * refreshUpstream becomes "fetch if the local remote-tracking ref is stale" rather than
65
+ * "always pay a network round trip". Only the upstream ahead/behind can age up to this
66
+ * throttle; local working-tree status never does.
67
+ */
68
+ export declare const GIT_FETCH_THROTTLE_MS = 30000;
14
69
  export declare function getGitRepoStatus(workspace: string, options?: GitStatusOptions): Promise<GitRepoStatus>;
70
+ /** Coarse change-impact verdict produced from a changed-file list. */
71
+ export interface ChangedPackageClassification {
72
+ isDaemonAffecting: boolean;
73
+ affectedPackages: string[];
74
+ }
75
+ /**
76
+ * Ref-parameterized change-impact classification for a repo/worktree, reusing the
77
+ * exact daemon-vs-web bucketing that the stale-build detector uses — but over an
78
+ * arbitrary `fromRef..toRef` range (e.g. a refine base head → branch head) instead
79
+ * of the live daemon's build commit → HEAD, and WITHOUT any daemonBuildInfo caching.
80
+ *
81
+ * Policy is resolved the same way as getGitRepoStatus: an explicit
82
+ * `options.changeImpactConfig` wins; otherwise the repo's `.adhdev/change-impact.*`
83
+ * is auto-loaded; otherwise the built-in ADHDev default policy applies. The
84
+ * classification uses `git diff --name-only fromRef..toRef`.
85
+ *
86
+ * FAIL-OPEN on error: if the diff can't be collected (bad ref, not a repo), the
87
+ * caller should treat "no verdict" as "run everything" — so we throw rather than
88
+ * returning a misleading benign verdict. Callers wrap this in try/catch and leave
89
+ * changeImpact undefined on failure. Unclassified/new packages still default to
90
+ * isDaemonAffecting:true (never silently skipped).
91
+ */
92
+ export declare function classifyChangedPackages(repoPath: string, fromRef: string, toRef: string, options?: GitStatusOptions): Promise<ChangedPackageClassification>;
15
93
  interface ParsedPorcelainStatus {
16
94
  branch: string | null;
95
+ /** Full HEAD object id from `# branch.oid`, or null when detached/unborn. */
96
+ headOid: string | null;
17
97
  upstream: string | null;
18
98
  ahead: number;
19
99
  behind: number;