@overdeck/desktop 0.49.2 → 0.50.0

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 (455) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-CHtDkHEL.js → acceptance-criteria-B_maCGZv.js} +2 -2
  4. package/server/{active-dashboard-bundle-Byh6sP-q.js → active-dashboard-bundle-CCqpFWiz.js} +2 -2
  5. package/server/{activity-logger-Ck8qoluj.js → activity-logger-B0X2JJwM.js} +1 -1
  6. package/server/{activity-logger-BWZhVphb.js → activity-logger-SlTXYCVf.js} +3 -3
  7. package/server/{advancing-selfheal-65W4yUQi.js → advancing-selfheal-BJAfiY-C.js} +11 -6
  8. package/server/{agent-gc-BNUudFnt.js → agent-gc-bhikjoJ_.js} +11 -11
  9. package/server/{agent-idle-ONBssBN_.js → agent-idle-D-UQ7gDv.js} +11 -11
  10. package/server/{agent-state-CM8iVw5B.js → agent-state-BrUPf_7Z.js} +1 -1
  11. package/server/{agent-state-BJhGIJZe.js → agent-state-FABw8neJ.js} +344 -402
  12. package/server/{agent-state-service-CzHfoqKQ.js → agent-state-service-BAQApt97.js} +1 -1
  13. package/server/{agent-state-service-CiIuwzIs.js → agent-state-service-rDenYSlD.js} +5 -5
  14. package/server/{agents-DpCuoF65.js → agents-DixZjXWm.js} +1 -1
  15. package/server/{agents-jXgqpHca.js → agents-DzpQidT8.js} +4 -4
  16. package/server/{archive-planning-CGkU6UeL.js → archive-planning-BL1ABtW0.js} +5 -5
  17. package/server/archive-planning-D3gw32U9.js +2 -0
  18. package/server/{artifact-index-jobs-Ck4NRRkY.js → artifact-index-jobs-Cjdme0jS.js} +2 -2
  19. package/server/{assemble-CyvEBmmq.js → assemble-B_JgnCbG.js} +2 -2
  20. package/server/{auto-spawn-consent-Dc4mtM-B.js → auto-spawn-consent-BesWchEi.js} +7 -7
  21. package/server/{backlog-auto-trigger-CCEpr4YT.js → backlog-auto-trigger-COLq639j.js} +3 -3
  22. package/server/{behavior-BiCQzqyT.js → behavior-DCg8CIWC.js} +3 -3
  23. package/server/{bridge-pool-patrol-Ce8rNPym.js → bridge-pool-patrol-BDohuMRt.js} +2 -2
  24. package/server/{briefing-freshness-e_OEYZEe.js → briefing-freshness-ENa_hW_V.js} +2 -2
  25. package/server/build-info-Dx2qrVhb.js +2 -0
  26. package/server/{build-info-BRw4QlYO.js → build-info-WuZT6xyi.js} +3 -3
  27. package/server/{checkpoint-manager-DOwRGFff.js → checkpoint-manager-CSZ7aVQF.js} +2 -2
  28. package/server/{checkpoint-manager-CKr42Usw.js → checkpoint-manager-DXhGRvg4.js} +1 -1
  29. package/server/checkpoint-worker.js +1 -1
  30. package/server/{checkpoints-Cszp_0Np.js → checkpoints-DUkUsPVS.js} +2 -2
  31. package/server/{checkpoints-Cb6CWT4S.js → checkpoints-tm_w6Y4V.js} +1 -1
  32. package/server/{claude-hooks-provision-C5JHpxTS.js → claude-hooks-provision-CTh9zxEi.js} +1 -1
  33. package/server/{claude-hooks-provision-Cer2eFfj.js → claude-hooks-provision-fRofvhTN.js} +2 -2
  34. package/server/{claude-permissions-Bc5kjX1q.js → claude-permissions-DLrb9ovz.js} +18 -3
  35. package/server/{claude-settings-overlay-m-VVZej1.js → claude-settings-overlay-BYnXaTVc.js} +2 -2
  36. package/server/{claude-settings-overlay-C7rWsnya.js → claude-settings-overlay-CMS5Jab5.js} +1 -1
  37. package/server/cli-BflmtEFM.js +2 -0
  38. package/server/{cli-BmczsfD6.js → cli-CoQou1t_.js} +11 -11
  39. package/server/{cliproxy-BpYpkogS.js → cliproxy-DXDQcR3I.js} +2 -2
  40. package/server/{cliproxy-_yUU0HRY.js → cliproxy-DdhFpcXU.js} +1 -1
  41. package/server/{close-issue-CxvRD0UI.js → close-issue-CpQ0BWg-.js} +5 -5
  42. package/server/{closed-issue-reaper-nMLRi5de.js → closed-issue-reaper-CdcJRvUx.js} +13 -13
  43. package/server/{closed-issue-reaper-omOcUDBl.js → closed-issue-reaper-TymtZM37.js} +1 -1
  44. package/server/{codex-DZhFfcWu.js → codex-BValsmtK.js} +1 -1
  45. package/server/{codex-KaSKE-R3.js → codex-DYyZL8JD.js} +6 -6
  46. package/server/{compaction-continuation-Bjfi70G-.js → compaction-continuation-CVjbdGKt.js} +3 -3
  47. package/server/{config-CH1AqqIQ.js → config-CvKH7r7W.js} +1 -1
  48. package/server/{config-ZGjvuR6J.js → config-NxI9Yl2f.js} +2 -2
  49. package/server/{config-Doq_tF-f.js → config-_qaa1UXH.js} +2 -2
  50. package/server/{config-yaml-D9nfpEx1.js → config-yaml-D60AnTIu.js} +24 -9
  51. package/server/{conflict-gate-D4XCtrm2.js → conflict-gate-0dD1kxjN.js} +1 -1
  52. package/server/{conflict-gate-DcUTY4Gb.js → conflict-gate-hAUCL-un.js} +5 -5
  53. package/server/{context-layers-BBTKP-Y4.js → context-layers-CdpabJj0.js} +3 -3
  54. package/server/{context-layers-BGj2Y9l3.js → context-layers-Ds1MnEFI.js} +2 -2
  55. package/server/{continue-i7Revg8D.js → continue-CnvrUfxw.js} +2 -2
  56. package/server/{control-settings-BMoDHY1G.js → control-settings-Db0uXgVM.js} +308 -5
  57. package/server/{conversation-compaction-D4VOmF7p.js → conversation-compaction-B-1KETG9.js} +8 -8
  58. package/server/{conversation-compaction-DzIjYMfg.js → conversation-compaction-DzMXGRiJ.js} +1 -1
  59. package/server/{conversation-service-CzZUJFEx.js → conversation-service-BL-asWPX.js} +1 -1
  60. package/server/{conversation-service-tQCIbBVZ.js → conversation-service-BxIOd5ay.js} +21 -7
  61. package/server/{conversations-bFDaD5YN.js → conversations-CEMfwMt-.js} +1 -1
  62. package/server/{conversations-C75EFFjf.js → conversations-nS6QgYpD.js} +5 -5
  63. package/server/cost-3FyqKK56.js +838 -0
  64. package/server/{cost-BCWEkvro.js → cost-Cctc-Q9M.js} +3 -3
  65. package/server/{cost-CiIwxH1D.js → cost-DTuIRE4y.js} +2 -2
  66. package/server/{cost-sync-DOkdE_yB.js → cost-sync-DfmvLT9L.js} +3 -3
  67. package/server/{dag-BPc74hwj.js → dag-o-dUpw1L.js} +2 -2
  68. package/server/{dangerous-git-ops-By9iguTP.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
  69. package/server/dashboard-db-worker.js +61 -11
  70. package/server/{deacon-B24dNzr8.js → deacon-CsisLmPt.js} +125 -165
  71. package/server/{deacon-canonical-state-CkvxRPck.js → deacon-canonical-state-DkdkQS5p.js} +2 -2
  72. package/server/{deacon-CzSZMtb-.js → deacon-e6py3jkM.js} +3 -3
  73. package/server/{deacon-event-client-BYIQBu0T.js → deacon-event-client-BCjHiGAY.js} +1 -1
  74. package/server/{deacon-event-client-Do6Z2gKl.js → deacon-event-client-CMQswEHX.js} +2 -2
  75. package/server/{deacon-nudge-log-CzM9JA9t.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
  76. package/server/{deacon-pending-lifecycle-BObEdT-L.js → deacon-pending-lifecycle-BzaE76Xo.js} +3 -3
  77. package/server/deacon.js +11 -11
  78. package/server/{dead-end-trip-CnVmjnya.js → dead-end-trip-Bs3hxIn6.js} +3 -3
  79. package/server/dead-end-trip-DUbiRMtT.js +2 -0
  80. package/server/{delivery-gyce0vQ7.js → delivery-DhZGRShH.js} +1 -1
  81. package/server/{deploy-patrol-CEwwEYDM.js → deploy-patrol-B8sKkA8h.js} +8 -8
  82. package/server/deploy-queue--smqHLhe.js +2 -0
  83. package/server/{deploy-queue-r96ojDI3.js → deploy-queue-CCGWXFkp.js} +2 -2
  84. package/server/{deploy-window-D_3hhfxt.js → deploy-window-YuJewzmC.js} +4 -4
  85. package/server/{deploy-window-DeJK8mTK.js → deploy-window-hgsvZ3UZ.js} +1 -1
  86. package/server/{dev-supervisor-DZWwpENk.js → dev-supervisor-4SBloJHV.js} +2 -2
  87. package/server/{devcontainer-renderer-d-9dCV_2.js → devcontainer-renderer-BiJhwFNi.js} +3 -3
  88. package/server/{dist-DsLAsFSh.js → dist-CoR2sivG.js} +1 -1
  89. package/server/dist-FHv1s5ez.js +3 -0
  90. package/server/{docker-B2mUBzGk.js → docker-CWO7dcIP.js} +3 -3
  91. package/server/{docker-CRPHBylA.js → docker-DQzyMXkd.js} +1 -1
  92. package/server/{dod-DWtilRLx.js → dod-BAk5arLF.js} +1 -1
  93. package/server/{done-preflight-BDVdWed5.js → done-preflight-CGFA0M1b.js} +1 -1
  94. package/server/{done-preflight-D4ukUf-S.js → done-preflight-Cx9JGznT.js} +5 -5
  95. package/server/{durable-review-pipeline-CaCbEJSt.js → durable-review-pipeline-BOEZ0chh.js} +1 -1
  96. package/server/{durable-review-pipeline-B3OS2_He.js → durable-review-pipeline-Djx_lvFd.js} +1 -1
  97. package/server/{ensure-devcontainer-rGSh0JHK.js → ensure-devcontainer-Dk6ZMOUC.js} +1 -1
  98. package/server/{ensure-devcontainer-BUeBRjmm.js → ensure-devcontainer-DzYBBwnM.js} +4 -4
  99. package/server/{esm-shims-oAaKIa-a.js → esm-shims-deFq5Hhl.js} +1 -1
  100. package/server/{event-store-Db4w4YIY.js → event-store-C50Qt-f1.js} +1 -1
  101. package/server/{event-store-BCSgMubf.js → event-store-DTns2XZP.js} +5 -5
  102. package/server/{event-store-provider-DlSQND3V.js → event-store-provider-Bu1Qrg6v.js} +1 -1
  103. package/server/{events-B6zioJA_.js → events-B6xW8Cpm.js} +3 -3
  104. package/server/{factory-BrdqXBeK.js → factory-CWVKwKFE.js} +4 -4
  105. package/server/{feature-registry-storage-zh3ZXW6f.js → feature-registry-storage-vaxRN3WO.js} +2 -2
  106. package/server/{features-BGntOWdy.js → features-DXWwktJB.js} +2 -2
  107. package/server/{feedback-stuck-retirement-DpA5u1kt.js → feedback-stuck-retirement-CXAYe2rU.js} +2 -2
  108. package/server/{feedback-target-Ddqk93NF.js → feedback-target-DSVpi0gT.js} +1 -1
  109. package/server/{feedback-target-D7GxdUYG.js → feedback-target-yPD_wclF.js} +10 -10
  110. package/server/{feedback-writer-CH2846DP.js → feedback-writer-BzN4qvaP.js} +1 -1
  111. package/server/{feedback-writer-C1gCLFmp.js → feedback-writer-Ds1Wjsz4.js} +5 -5
  112. package/server/{flywheel-HJt7QdWP.js → flywheel-BCZS-FlW.js} +1 -1
  113. package/server/{flywheel-v1cCOBx-.js → flywheel-CC4gE_rx.js} +15 -15
  114. package/server/{flywheel-CjW2L7BS.js → flywheel-DWKd7bMc.js} +16 -16
  115. package/server/{flywheel-merge-order-4fNRN2F2.js → flywheel-merge-order-DDT3i57u.js} +1 -1
  116. package/server/{flywheel-merge-order-D_yyAlND.js → flywheel-merge-order-DJwH2KpL.js} +17 -15
  117. package/server/forge-4VVCRcF7.js +2 -0
  118. package/server/{forge-RVTCK_5X.js → forge-CHADjOFs.js} +2 -2
  119. package/server/{from-BnLgKYvw.js → from-C3dzmjSO.js} +1 -1
  120. package/server/{fs-lock-C7J-ugIf.js → fs-lock-DQ_gUxfq.js} +2 -2
  121. package/server/{fts-operations-CU0B5WUx.js → fts-operations-asZo2fh1.js} +2 -2
  122. package/server/{git-info-BSrI9owC.js → git-info-DMOSfJ9I.js} +1 -1
  123. package/server/{git-utils-CsKV0Dis.js → git-utils-BAMwn9Nf.js} +1 -1
  124. package/server/{git-utils-DW8-jIUJ.js → git-utils-BdHk8y7g.js} +4 -4
  125. package/server/{github-app-Oi5hdn1n.js → github-app-BWziYCf3.js} +1 -1
  126. package/server/{github-app-7ywLhuZO.js → github-app-BlMSzSTw.js} +2 -2
  127. package/server/{github-client-Cy0fSj1a.js → github-client-OK24qpol.js} +1 -1
  128. package/server/{github-client-DAbuXLuk.js → github-client-w6j5nVlz.js} +2 -2
  129. package/server/{github-pr-lookup-Dhh3ec1V.js → github-pr-lookup-bGcsEvLE.js} +2 -2
  130. package/server/{harness-binary-tMmgJfC1.js → harness-binary-DChiynaB.js} +2 -2
  131. package/server/{harness-resolve-DusNpVEe.js → harness-resolve-BplBEbwn.js} +4 -4
  132. package/server/{health-events-BYDZ9n2i.js → health-events-BTqsmunw.js} +1 -1
  133. package/server/{health-events-DNw9Mzw9.js → health-events-Bk3LjaJ9.js} +2 -2
  134. package/server/{hooks-BjBjxqNh.js → hooks-DJR1yR9w.js} +2 -2
  135. package/server/{hooks-B4wj32l2.js → hooks-EndRNrx9.js} +1 -1
  136. package/server/{hume-BP9YbxaE.js → hume-1FJmNDTq.js} +2 -2
  137. package/server/hume-gXLmRhmN.js +3 -0
  138. package/server/{identity-C23uY8dZ.js → identity-C3s8lyp0.js} +3 -3
  139. package/server/{idle-stack-reaper-Bw0rU9GC.js → idle-stack-reaper-CBelVOE3.js} +1 -1
  140. package/server/{idle-stack-reaper-BSxb1bln.js → idle-stack-reaper-DtoI4al6.js} +4 -4
  141. package/server/{in-flight-guard-DuxabAHT.js → in-flight-guard-B7khcBdQ.js} +1 -1
  142. package/server/{infra-CHIvOb9q.js → infra-CJRi_5Wu.js} +10 -4
  143. package/server/{injection-BYUt8ml1.js → injection-ADWQ3D0s.js} +8 -8
  144. package/server/{injection-BviePcm3.js → injection-BWsgHvrL.js} +1 -1
  145. package/server/{inspect-agent-sV_19NxZ.js → inspect-agent-CCfNJjKr.js} +12 -12
  146. package/server/inspect-agent-Dhp3hCGp.js +2 -0
  147. package/server/{internal-token-BOtIRJU7.js → internal-token-BCTEqUCX.js} +1 -1
  148. package/server/{internal-token-DoVzb4b7.js → internal-token-BeIWG_kT.js} +2 -2
  149. package/server/{io-DKrWd3gX.js → io-BCtZoXHo.js} +4 -4
  150. package/server/{issue-closed-6RQsAjDX.js → issue-closed-CiYAa6bX.js} +7 -7
  151. package/server/{issue-lifecycle-D9nLErvS.js → issue-lifecycle-BETNVVLq.js} +25 -25
  152. package/server/{issue-lifecycle-DOPVv7xz.js → issue-lifecycle-DaKN57sx.js} +1 -1
  153. package/server/{issue-service-singleton-CvgNAWqK.js → issue-service-singleton-1Q0ER8Yc.js} +1 -1
  154. package/server/{issue-service-singleton-B2xy-IS9.js → issue-service-singleton-C_sZ0HjP.js} +10 -10
  155. package/server/{issue-title-fallback-DTSCQVu0.js → issue-title-fallback-B91iD66g.js} +3 -3
  156. package/server/{issues-e_Ck1Ln2.js → issues-RGHQUKhB.js} +2 -2
  157. package/server/{jsonl-parser-DqxVCZ1k.js → jsonl-parser-Dfs1dlYE.js} +3 -3
  158. package/server/{jsonl-resolver-07OS3qOr.js → jsonl-resolver-bFtftCDd.js} +8 -8
  159. package/server/{kimi-code-vtXl2DR5.js → kimi-code-BxkDgaj4.js} +1 -1
  160. package/server/{kimi-code-BjtAHIz1.js → kimi-code-CNYRA8Dd.js} +11 -11
  161. package/server/{kimi-parser-B1lgy2Vt.js → kimi-parser-OcWwmOqF.js} +2 -2
  162. package/server/{label-cleanup-D2zUMasf.js → label-cleanup-CefxK9tL.js} +3 -3
  163. package/server/{lifecycle-DaCovZwn.js → lifecycle-DDZ7w-BY.js} +6 -6
  164. package/server/{lifecycle-0NOEzomy.js → lifecycle-DVXyUil2.js} +2 -2
  165. package/server/{lifecycle-io-BBMTaP7S.js → lifecycle-io-D1oBiMce.js} +1 -1
  166. package/server/{lifecycle-io-6WL46dsB.js → lifecycle-io-D7N0vQNj.js} +5 -5
  167. package/server/{linear-client-7fQThJTc.js → linear-client-DUN7zCeb.js} +2 -2
  168. package/server/{linear-client-BTGApNLo.js → linear-client-TL32snOy.js} +1 -1
  169. package/server/{linear-mcp-auth-B8pYRsiU.js → linear-mcp-auth-CtRKSHy5.js} +1 -1
  170. package/server/{linear-mcp-auth-Nk5s3L9M.js → linear-mcp-auth-bB0CPyjh.js} +5 -5
  171. package/server/memory-fts-worker.js +1 -1
  172. package/server/{memory-governor-Cqvbusr4.js → memory-governor-Cvv_9K0M.js} +87 -21
  173. package/server/{memory-pressure-patrol-DPb8foam.js → memory-pressure-patrol-C6DJJQRA.js} +38 -14
  174. package/server/{merge-BB_bjJ9a.js → merge-DOCR6pHi.js} +1 -1
  175. package/server/{merge-FZ78_cEz.js → merge-FTk4LsnM.js} +3 -3
  176. package/server/{merge-agent-B3jRrlS1.js → merge-agent-C-dsN9se.js} +31 -31
  177. package/server/{merge-agent-BuoC_PRZ.js → merge-agent-D-4_iQgy.js} +2 -2
  178. package/server/{merge-batch-B8bVjFWS.js → merge-batch-BJjzUUL7.js} +1 -1
  179. package/server/{merge-completeness-DQt7Qa7i.js → merge-completeness-BOtBUwTU.js} +4 -4
  180. package/server/{merge-completeness-DkdabVch.js → merge-completeness-CoLJxfUY.js} +1 -1
  181. package/server/merge-eligibility-C4rTS97F.js +3 -0
  182. package/server/merge-eligibility-D7wRnJbj.js +51 -0
  183. package/server/merge-ops-Cf02szJ5.js +2 -0
  184. package/server/merge-rebase-Bj7eJAG4.js +2 -0
  185. package/server/{merge-rebase-qq40s91P.js → merge-rebase-KBw4rdh3.js} +2 -2
  186. package/server/{merge-set-BTNYvxM3.js → merge-set-CVfEM57p.js} +1 -1
  187. package/server/{merge-set-BmRRflt0.js → merge-set-CyW-xSn4.js} +4 -4
  188. package/server/{merge-sync-0m2Q087q.js → merge-sync-CYGsJy0u.js} +1 -1
  189. package/server/{merge-sync-CJpOa0cZ.js → merge-sync-YLvOPAry.js} +2 -2
  190. package/server/{merge-train-iwKqjtCF.js → merge-train-VxLn8Ms4.js} +4 -4
  191. package/server/{merge-train-deps-CH5Mr3vN.js → merge-train-deps-D0y4hBB9.js} +4 -4
  192. package/server/{merge-verification-JJc5GC2t.js → merge-verification-BfJRNMiD.js} +6 -6
  193. package/server/{merged-docker-cleanup-worker-BOqWA373.js → merged-docker-cleanup-worker-Bh5fKG_b.js} +3 -3
  194. package/server/{merged-docker-cleanup-worker-CrhTdxZV.js → merged-docker-cleanup-worker-Ci9oeFAe.js} +1 -1
  195. package/server/{messaging-nuwStbdQ.js → messaging-Dfbhgjd6.js} +1 -1
  196. package/server/{multipart-parser-DxuW_rZV.js → multipart-parser-BYwfKOVU.js} +2 -2
  197. package/server/{no-resume-mode-xuYLFhLw.js → no-resume-mode-DjMQRkId.js} +1 -1
  198. package/server/node_modules/.package-lock.json +18 -18
  199. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +4 -2
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +6 -6
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
  209. package/server/node_modules/@types/node/README.md +1 -1
  210. package/server/node_modules/@types/node/buffer.buffer.d.ts +5 -5
  211. package/server/node_modules/@types/node/crypto.d.ts +2 -2
  212. package/server/node_modules/@types/node/http.d.ts +16 -0
  213. package/server/node_modules/@types/node/http2.d.ts +10 -2
  214. package/server/node_modules/@types/node/package.json +2 -2
  215. package/server/node_modules/@types/node/process.d.ts +52 -0
  216. package/server/node_modules/@types/node/quic.d.ts +210 -28
  217. package/server/node_modules/@types/node/sqlite.d.ts +6 -2
  218. package/server/node_modules/@types/node/test.d.ts +36 -0
  219. package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
  220. package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
  221. package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
  222. package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
  223. package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
  224. package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
  225. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +11 -5
  226. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  227. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  228. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  229. package/server/node_modules/msgpackr/dist/index.js +11 -5
  230. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  231. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  232. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  233. package/server/node_modules/msgpackr/dist/node.cjs +11 -5
  234. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  235. package/server/node_modules/msgpackr/dist/test.js +11 -5
  236. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  237. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
  238. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  239. package/server/node_modules/msgpackr/package.json +1 -1
  240. package/server/node_modules/msgpackr/unpack.js +11 -5
  241. package/server/node_modules/picomatch/lib/parse.js +10 -1
  242. package/server/node_modules/picomatch/lib/scan.js +30 -18
  243. package/server/node_modules/picomatch/package.json +1 -1
  244. package/server/{orphan-proposed-reconciler-gf4TxfZb.js → orphan-proposed-reconciler-CnP0K2v3.js} +2 -2
  245. package/server/{orphan-proposed-reconciler-Dmk0kO_p.js → orphan-proposed-reconciler-nFUlquZt.js} +21 -21
  246. package/server/package-lock.json +19 -19
  247. package/server/package.json +1 -1
  248. package/server/{pan-dir-BMda7tQj.js → pan-dir-B4NfzOf3.js} +4 -4
  249. package/server/{parked-residue-BiHb8cD7.js → parked-residue-8WbU0y1z.js} +68 -64
  250. package/server/{paths-DEe9j-kw.js → paths-rETQhTF2.js} +2 -2
  251. package/server/{pending-lifecycle-claim-J5uIIJPu.js → pending-lifecycle-claim-yAwDuGS4.js} +1 -1
  252. package/server/{pickup-D1UbSDPd.js → pickup-Dle6k9Xt.js} +1 -1
  253. package/server/{pipeline-agent-reader-D-6okryb.js → pipeline-agent-reader-CeWhQzXC.js} +3 -3
  254. package/server/{pipeline-membership-PGX3Pe8V.js → pipeline-membership-BV4hdkHm.js} +1 -1
  255. package/server/{pipeline-membership-CCbgBzNC.js → pipeline-membership-C9ykcjsn.js} +1 -1
  256. package/server/{pipeline-membership-gather-BK4dzh0X.js → pipeline-membership-gather-Ba0wJNCR.js} +10 -10
  257. package/server/{pipeline-membership-gather-BRhU7XPx.js → pipeline-membership-gather-C9E22B2W.js} +1 -1
  258. package/server/{pipeline-notifier-DvHLaXKb.js → pipeline-notifier-B5DPXvnr.js} +1 -1
  259. package/server/{pipeline-notifier-BNAV9kpa.js → pipeline-notifier-p190L97e.js} +2 -2
  260. package/server/{post-merge-lifecycle-worker-DAWgzXQA.js → post-merge-lifecycle-worker-OQoK8Ckg.js} +2 -2
  261. package/server/{post-merge-state-DC2_0t12.js → post-merge-state-DFaf7OI1.js} +4 -4
  262. package/server/{prd-locations-BbAvqQmT.js → prd-locations-F2oLSAhy.js} +3 -3
  263. package/server/{project-pipelines-By_5WcT4.js → project-pipelines-CUsa6U59.js} +2 -2
  264. package/server/{project-repos-3bI6t4fO.js → project-repos-BVdi9-ch.js} +1 -1
  265. package/server/{project-repos--QeCg7yQ.js → project-repos-CsfvLtmr.js} +2 -2
  266. package/server/{project-resource-refresh-queue-x-K9mvpP.js → project-resource-refresh-queue-BehrH4Ai.js} +17 -17
  267. package/server/{project-resource-refresh-queue-BaZC79S3.js → project-resource-refresh-queue-D2110Guc.js} +1 -1
  268. package/server/{projects-LftaVK99.js → projects-BMuEf14J.js} +1 -1
  269. package/server/{prompts-BotGu-6W.js → prompts-CKpDt8Jn.js} +2 -2
  270. package/server/{providers-Dqgz3MY5.js → providers-Buv2wmFU.js} +1 -1
  271. package/server/{providers-BL1I66sM.js → providers-CxPKmyif.js} +7 -7
  272. package/server/public/assets/{chunk-BO2N2NFS-D5Fz5jND.js → chunk-BO2N2NFS-DZOQVqV1.js} +4 -4
  273. package/server/public/assets/{diagram-OG6HWLK6-Eux0gWFq.js → diagram-OG6HWLK6-oKeXcbO1.js} +1 -1
  274. package/server/public/assets/{dist-D-JX_u7m.js → dist-2qPmeRzT.js} +3 -3
  275. package/server/public/assets/{dist-C3zShwhA.js → dist-ClBlE-Nm.js} +1 -1
  276. package/server/public/assets/{ganttDiagram-6RSMTGT7-UH3aweia.js → ganttDiagram-6RSMTGT7-BwdG9fQv.js} +1 -1
  277. package/server/public/assets/{highlighted-body-OFNGDK62-ccIQ-WXS.js → highlighted-body-OFNGDK62-BzGNdskQ.js} +1 -1
  278. package/server/public/assets/index-CdPveU3M.css +1 -0
  279. package/server/public/assets/{index-BTVcdPve.js → index-Cg6tdZoY.js} +149 -149
  280. package/server/public/assets/{linear-Cnnu4YQy.js → linear-DpEt1TJb.js} +1 -1
  281. package/server/public/assets/mermaid-GHXKKRXX-6KBD_3T_.js +1 -0
  282. package/server/public/assets/{pieDiagram-4H26LBE5-BD8-Tye6.js → pieDiagram-4H26LBE5-9BpM4oRJ.js} +1 -1
  283. package/server/public/assets/{prod-Ca6aKMts.js → prod-CzJiNNEG.js} +4 -4
  284. package/server/public/assets/{quadrantDiagram-W4KKPZXB-BmSrVyFD.js → quadrantDiagram-W4KKPZXB-BXWVAoZx.js} +1 -1
  285. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CEGy8Das.js → sankeyDiagram-5OEKKPKP-5oxodGEw.js} +1 -1
  286. package/server/public/assets/{xychartDiagram-2RQKCTM6-VnQ8iY8s.js → xychartDiagram-2RQKCTM6-BChDrHxZ.js} +1 -1
  287. package/server/public/index.html +2 -2
  288. package/server/pull-requests-CmlandI7.js +2 -0
  289. package/server/{pull-requests-Cp_FDT8-.js → pull-requests-T0OV0Vn4.js} +3 -3
  290. package/server/{rally-bQpBzUNf.js → rally-CUqj2oIN.js} +3 -3
  291. package/server/rally-DYIn9R2U.js +3 -0
  292. package/server/{rally-api-CqAIJ8RX.js → rally-api-BFPb2oSq.js} +2 -2
  293. package/server/{rally-api-Ij1Zt0NI.js → rally-api-BoucQG1u.js} +1 -1
  294. package/server/{rally-client-qKbCNRVW.js → rally-client-16iObny7.js} +4 -4
  295. package/server/{rally-client-CN5vh4Ac.js → rally-client-CsqLjLLa.js} +1 -1
  296. package/server/{rebuild-stack-DrMyA_mA.js → rebuild-stack-BcBVFJp3.js} +2 -2
  297. package/server/{rebuild-stack-BNOMVh7C.js → rebuild-stack-CyXMrj6K.js} +6 -6
  298. package/server/reconciler-caYiRnPy.js +657 -0
  299. package/server/{reconstruct-cache-mxIYCnqs.js → reconstruct-cache-3JzPOune.js} +7 -7
  300. package/server/{record-Ug18Cp4V.js → record-DYOg97Iv.js} +1 -1
  301. package/server/{record-update-dBGxL9OC.js → record-update-BPqpBu3O.js} +5 -5
  302. package/server/{record-update-WyhsREoH.js → record-update-CDPEX7BH.js} +1 -1
  303. package/server/{recovery-trip-BKLrL6NX.js → recovery-trip-CpfW6LCJ.js} +3 -3
  304. package/server/{recovery-trip-wFAixKsg.js → recovery-trip-xqKC07Gy.js} +1 -1
  305. package/server/{release-engine-D9gaCBn9.js → release-engine-C_OOhCaK.js} +5 -5
  306. package/server/{release-set-DPHHzEGx.js → release-set-DOIDz2vw.js} +3 -3
  307. package/server/{remote-BUEeUic6.js → remote-BTh-sjpX.js} +3 -3
  308. package/server/{remote-agents-CSaTLi3u.js → remote-agents-DbbN7vSm.js} +6 -6
  309. package/server/{remote-agents-BVtASiOF.js → remote-agents-MuXx2gWm.js} +1 -1
  310. package/server/{remote-completion-CBV3b9TI.js → remote-completion-LcWCpAm2.js} +12 -12
  311. package/server/{remote-BU6ONLpv.js → remote-xY0B43Ho.js} +3 -3
  312. package/server/{resolver-gxv97jsQ.js → resolver-C2QKOf09.js} +2 -2
  313. package/server/{resolver-DvSMXty7.js → resolver-D4nsxfGo.js} +7 -7
  314. package/server/{resume-DvHuF-bm.js → resume-ByUrJUNX.js} +1 -1
  315. package/server/{review-agent-esZ0QXdY.js → review-agent-BRBTm1qE.js} +30 -30
  316. package/server/{review-agent-DgkUPRx0.js → review-agent-Caodi0PX.js} +2 -2
  317. package/server/{review-artifacts-DGGEobLp.js → review-artifacts-DgaDlbO4.js} +6 -6
  318. package/server/{review-convoy-liveness-DmO8dIBH.js → review-convoy-liveness-BBvyuRLC.js} +8 -8
  319. package/server/{review-run-recovery-DHiiw7d8.js → review-run-recovery-DCzWMMvE.js} +1 -1
  320. package/server/{review-run-recovery-Ct0q7FkE.js → review-run-recovery-THHMKlXJ.js} +2 -2
  321. package/server/{review-status-C_kQeeX0.js → review-status-Bge_3XTR.js} +1 -1
  322. package/server/{review-status-yOGD2MuK.js → review-status-DpniqzPT.js} +55 -45
  323. package/server/{review-status-emit-BZz1Y_22.js → review-status-emit-D7sM720S.js} +3 -3
  324. package/server/{review-status-enrichment-BWH0XW_m.js → review-status-enrichment-PDI4-faj.js} +3 -3
  325. package/server/{review-status-sync-2C9lk85r.js → review-status-sync-C6ZKTI8f.js} +11 -8
  326. package/server/{review-status-sync-Bq00Loey.js → review-status-sync-CvpHWyvR.js} +1 -1
  327. package/server/{review-verdict-feedback-CE_tr2iQ.js → review-verdict-feedback-B2ojHFH5.js} +7 -7
  328. package/server/{review-verdict-feedback-Brjaxoda.js → review-verdict-feedback-tyMoLT2L.js} +1 -1
  329. package/server/{review-verdict-writer-Ca2V7QSY.js → review-verdict-writer-Cy_1pnIj.js} +7 -7
  330. package/server/{review-verdict-writer-CD-4kDVx.js → review-verdict-writer-DjrJ64eS.js} +1 -1
  331. package/server/{rollup--g9ik1XQ.js → rollup-Cp0KEoOu.js} +1 -1
  332. package/server/{rollup-B6g9Nr6L.js → rollup-DU3xBQu2.js} +8 -8
  333. package/server/{scanner-YxIv-fG1.js → scanner-BFKG3Gxv.js} +7 -7
  334. package/server/{search-DqMN4__-.js → search-DhtKwbBC.js} +2 -2
  335. package/server/{sequence-io--b3_PsWq.js → sequence-io-C-Q19Jez.js} +4 -4
  336. package/server/{sequencer-agent-CqouKVZG.js → sequencer-agent-eN2P2lDz.js} +6 -6
  337. package/server/server.js +585 -282
  338. package/server/{service-CEp-3iow.js → service-CThO0Sar.js} +77 -772
  339. package/server/{session-fork-GtoeCh2H.js → session-fork-ZYTHtpBh.js} +2 -2
  340. package/server/settings-ByDRfuuE.js +2 -0
  341. package/server/{settings-CLQcdkoD.js → settings-CTywpFw5.js} +2 -2
  342. package/server/{settings-Ch2pCVtt.js → settings-nAT-eK56.js} +3 -3
  343. package/server/{shadow-engineering-BxiFrIKv.js → shadow-engineering-BHZKPJhq.js} +2 -2
  344. package/server/{shadow-state-CSA1vtxr.js → shadow-state-BTLi4Axs.js} +2 -2
  345. package/server/{shadow-state-nGhCNXT2.js → shadow-state-CZ_LnPsi.js} +1 -1
  346. package/server/{shadow-utils-7q5QDmMj.js → shadow-utils-CPLlPHdn.js} +2 -2
  347. package/server/{ship-log-ie0A_SqV.js → ship-log-D-CphNZx.js} +1 -1
  348. package/server/{ship-record-BM3oVvnL.js → ship-record-BaBla0l_.js} +5 -5
  349. package/server/{ship-record-DHWH1hLz.js → ship-record-BlvX8-xv.js} +1 -1
  350. package/server/{ship-status-BEkddXMT.js → ship-status-rQbPQBsF.js} +2 -2
  351. package/server/{smart-compaction-BkzjVpWL.js → smart-compaction-CUXn8mfX.js} +1 -1
  352. package/server/{smart-compaction-D0TE1lBD.js → smart-compaction-D1CNGdZx.js} +7 -7
  353. package/server/{spawn-planning-session-CkGweSCC.js → spawn-planning-session-DCmO6COk.js} +17 -17
  354. package/server/{spawn-planning-session-s406rw1N.js → spawn-planning-session-DfEWyrVV.js} +2 -2
  355. package/server/{specialist-completion-CTAjwH5j.js → specialist-completion-BMv3K54P.js} +1 -1
  356. package/server/{specialist-context-CKasRfYu.js → specialist-context-C1-CfYQb.js} +5 -5
  357. package/server/{specialist-handoff-logger-DrjrOmmn.js → specialist-handoff-logger-BDKoz5Z9.js} +2 -2
  358. package/server/{specialist-logs-Du6quZ0_.js → specialist-logs-BJQFkpdG.js} +3 -3
  359. package/server/{specialists-x-kPMhrL.js → specialists-CYt1U3Zm.js} +2 -2
  360. package/server/{specialists-CuDWiNdB.js → specialists-D6MUU31Q.js} +19 -19
  361. package/server/{specialists-b0dMMjWq.js → specialists-DhS79T9v.js} +333 -118
  362. package/server/{specialists-B-4zyE4Y.js → specialists-Dx0zRTxX.js} +1 -1
  363. package/server/{specialists-registry-1y6Rt_F1.js → specialists-registry-BRLCi61y.js} +1 -1
  364. package/server/{specialists-registry-BYjs04iK.js → specialists-registry-Bng0OFGH.js} +2 -2
  365. package/server/specs-oRGyfz6C.js +3 -0
  366. package/server/{src-CZsPs61V.js → src-C7gGe4KU.js} +6 -6
  367. package/server/{src-CY2Wl8IX.js → src-CdwN6WY6.js} +8 -2
  368. package/server/{src-DeQwpuh6.js → src-DMosbuSJ.js} +3 -3
  369. package/server/{stack-health-BQFSJc0l.js → stack-health-BKfNaqMm.js} +3 -3
  370. package/server/{stack-health-ypIKtkbE.js → stack-health-Bz711z1Y.js} +1 -1
  371. package/server/{stale-task-claims-C2e1zdMT.js → stale-task-claims-DMRLb5R2.js} +5 -5
  372. package/server/{staleness-Fzx_3_Hr.js → staleness-CxZaIhrn.js} +1 -1
  373. package/server/{staleness-CRDK6LFG.js → staleness-r_dkMyMG.js} +1 -1
  374. package/server/{stall-sweeper-QNk4h9m6.js → stall-sweeper-CBWqSWV2.js} +8 -8
  375. package/server/{state-home-DdG8erBI.js → state-home-DhsMqg8W.js} +2 -2
  376. package/server/{state-migrate-C6H3jfHE.js → state-migrate-C2Ouyd6e.js} +6 -6
  377. package/server/{state-mirror-DF4Lfxm0.js → state-mirror-BPXciz84.js} +3 -3
  378. package/server/{stuck-remediation-BVNd9txd.js → stuck-remediation-DALieAkx.js} +1 -1
  379. package/server/{stuck-remediation-BDa_tXgB.js → stuck-remediation-kta3KN7c.js} +13 -13
  380. package/server/{substrate-bug-weights-service-BbbCZEtJ.js → substrate-bug-weights-service-D_ICP7TI.js} +3 -3
  381. package/server/{summary-fork-DIQmtOuV.js → summary-fork-CojrFKb6.js} +2 -2
  382. package/server/{summary-fork-BvcW6bq0.js → summary-fork-DhhaFhxZ.js} +10 -10
  383. package/server/supervisor-DSSWo4M2.js +2 -0
  384. package/server/{supervisor-D3jC2c7A.js → supervisor-DqH-laVL.js} +4 -4
  385. package/server/{swarm-readiness-CMWAQuWM.js → swarm-readiness-LF8ZF_hc.js} +3 -3
  386. package/server/{synthesis-verdict-DVlrLF9A.js → synthesis-verdict-CGFF8uQI.js} +2 -2
  387. package/server/{synthesis-verdict-C-pJOPsn.js → synthesis-verdict-DSoOFUIV.js} +1 -1
  388. package/server/{system-prerequisites-QKtIYXI2.js → system-prerequisites-Lsx0jUUV.js} +2 -2
  389. package/server/{teardown-workspace-cJea1OLo.js → teardown-workspace-DMwomEG1.js} +16 -16
  390. package/server/{test-agent-queue-C5DI_gWX.js → test-agent-queue-Cu0D6BYe.js} +6 -6
  391. package/server/{test-verdict-C7kmd2_Y.js → test-verdict-9mvl7pQn.js} +1 -1
  392. package/server/{test-verdict-DUbDHqeD.js → test-verdict-oNSv1rVr.js} +2 -2
  393. package/server/{tldr-daemon-BNQHwblU.js → tldr-daemon-CRSAkhBx.js} +1 -1
  394. package/server/{tldr-daemon-CO08YlfQ.js → tldr-daemon-McqCk2X7.js} +2 -2
  395. package/server/{tmux-B8zsqD_6.js → tmux-CYucGrTl.js} +2 -2
  396. package/server/{tmux-DWEc4Ld9.js → tmux-wnT_hg-s.js} +2 -2
  397. package/server/{token-Bez-qCB2.js → token-BdfZLRg1.js} +1 -1
  398. package/server/{tracker-config-CJzPhSHv.js → tracker-config-tfAOWgng.js} +2 -2
  399. package/server/{tracker-utils-DJAOAuMN.js → tracker-utils-Dbg_pVZg.js} +2 -2
  400. package/server/{traefik-connect-D3H5I6b9.js → traefik-connect-DoQvQ6oJ.js} +1 -1
  401. package/server/{tunnel-BSdKnW0U.js → tunnel-B1MNIgkL.js} +1 -1
  402. package/server/{tunnel-Cr3ctqxp.js → tunnel-skW68j9B.js} +3 -3
  403. package/server/{types-fzBp9cYi.js → types-PW4zkxCM.js} +1 -1
  404. package/server/{uat-failure-feedback-IZQ-J8jt.js → uat-failure-feedback-ly8ZwtfC.js} +5 -5
  405. package/server/{uat-promote-verification-DXApKcc2.js → uat-promote-verification-BBaMwfdc.js} +5 -5
  406. package/server/{uat-train-IIZlz7r3.js → uat-train-BBEiYSep.js} +0 -0
  407. package/server/{uat-train-CycEzpbE.js → uat-train-D7Ran2FB.js} +1 -1
  408. package/server/{validate-Ur4xH5bN.js → validate-BYcBcBwg.js} +3 -3
  409. package/server/{validation-Dr6V4PXx.js → validation-BfG2jW5C.js} +4 -4
  410. package/server/{validation-CHovCoTT.js → validation-nSrYiYvA.js} +1 -1
  411. package/server/{verification-artifact-D3viYe_t.js → verification-artifact-Cmhgq4b_.js} +1 -1
  412. package/server/{verification-artifact-k5Ftpg0c.js → verification-artifact-DglwaHke.js} +1 -1
  413. package/server/{verification-runner-Dl13mmsI.js → verification-runner-BEq5ZF-h.js} +16 -16
  414. package/server/{verification-runner-BuqGwm2t.js → verification-runner-CFjAuv9u.js} +1 -1
  415. package/server/{vtt-parser-BSnAB-Og.js → vtt-parser-Va--tv27.js} +1 -1
  416. package/server/{work-agent-prompt-CJJ4tXci.js → work-agent-prompt-BnhKNAg7.js} +1 -1
  417. package/server/{work-agent-prompt-CioeOuM4.js → work-agent-prompt-CaD2ue8m.js} +10 -10
  418. package/server/{work-agent-start-B65Gqn9N.js → work-agent-start-0nJ-6UeA.js} +2 -2
  419. package/server/{work-agent-start-Ct1HVh6z.js → work-agent-start-D8NEN5KD.js} +1 -1
  420. package/server/workflows-BtHRlFIm.js +2 -0
  421. package/server/{workflows-AgFul1xc.js → workflows-C7mxM1qc.js} +28 -28
  422. package/server/{workspace-Cy4sDd3q.js → workspace-BAhMgMaO.js} +3 -3
  423. package/server/{workspace-Cu3XlMXt.js → workspace-Dbqv9ehn.js} +1 -1
  424. package/server/{workspace-anchor-drift-CMaqvizr.js → workspace-anchor-drift-B_3kyyxJ.js} +4 -4
  425. package/server/{workspace-anchor-drift-BI0Hz6zI.js → workspace-anchor-drift-Bpa3xoni.js} +1 -1
  426. package/server/{workspace-config-DRYDO7Zr.js → workspace-config-D-bNq2CF.js} +1 -1
  427. package/server/{workspace-manager-jfkKAEuO.js → workspace-manager-BrbX90Rm.js} +1 -1
  428. package/server/{workspace-manager-CgovxDrO.js → workspace-manager-CM8RCrSc.js} +16 -16
  429. package/server/{workspace-metadata-BDqXzGGK.js → workspace-metadata-BEOwJSdK.js} +1 -1
  430. package/server/{workspace-metadata-BNzODIv6.js → workspace-metadata-Cu6yfxBS.js} +2 -2
  431. package/server/{workspaces-BJdPqx_J.js → workspaces-C7LAuZfe.js} +123 -696
  432. package/sync-sources/rules/agent-message-delivery.md +21 -14
  433. package/sync-sources/rules/pan-handoff-focus-limit.md +3 -1
  434. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +94 -46
  435. package/sync-sources/skills/pan-handoff/SKILL.md +13 -2
  436. package/server/archive-planning-BW4MKNI7.js +0 -2
  437. package/server/build-info-Bj2vQEMh.js +0 -2
  438. package/server/cli-BRuzUT_I.js +0 -2
  439. package/server/dead-end-trip-6V_CwveT.js +0 -2
  440. package/server/deploy-queue-CjLErpgw.js +0 -2
  441. package/server/dist-fCA6y2bH.js +0 -3
  442. package/server/forge-bvak6vXJ.js +0 -2
  443. package/server/hume-TYTb6fDU.js +0 -3
  444. package/server/inspect-agent-JFEaYTRa.js +0 -2
  445. package/server/merge-ops-DabXHp2i.js +0 -2
  446. package/server/merge-rebase-CXq0qsgR.js +0 -2
  447. package/server/public/assets/index-2wV4ipy_.css +0 -1
  448. package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +0 -1
  449. package/server/pull-requests-jVGcVq5G.js +0 -2
  450. package/server/rally-CxhVgIQ6.js +0 -3
  451. package/server/settings-DhtPDmmI.js +0 -2
  452. package/server/specs-IYsFlM-L.js +0 -3
  453. package/server/supervisor-v0cYN2Vp.js +0 -2
  454. package/server/workflows-CfHm8lVd.js +0 -2
  455. package/sync-sources/skills/pan-gauntlet-loop/references/lessons.md +0 -60
@@ -1,17 +1,17 @@
1
1
  import { i as __require, t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { On as resolveProjectFromIssueSync, S as init_defaults, c as init_load, ci as init_errors, fn as init_projects, p as loadConfigSync, x as DEFAULT_CONFIG } from "./config-yaml-D9nfpEx1.js";
3
- import { t as getBuildInfo } from "./build-info-BRw4QlYO.js";
4
- import { t as getDashboardIdentity } from "./identity-C23uY8dZ.js";
5
- import { h as loadConfigSync$1, p as init_config } from "./config-ZGjvuR6J.js";
6
- import { a as init_event_store, i as initEventStore } from "./event-store-BCSgMubf.js";
7
- import { D as projectLegacySystemHealthSummary, t as init_src } from "./src-CY2Wl8IX.js";
8
- import { An as init_runtime_census, Dn as descendantPidsForSession, Fn as init_collector, G as init_runtime_state, In as LINUX_MEMORY_PRESSURE_DEFAULTS, Ln as init_linux, On as getRuntimeCensus, Pn as createHostHealthCollector, Ri as getRuntimeSnapshot, Rn as DARWIN_MEMORY_PRESSURE_DEFAULTS, U as getAgentRuntimeState, _ as init_agent_state, fn as init_termination, gn as init_queries, nr as setCachedMemoryVerdict, q as init_agents, tr as init_memory_verdict_cache, vn as listRunningAgents, zi as init_agent_runtime_mirror, zn as init_darwin } from "./agent-state-BJhGIJZe.js";
9
- import { f as DockerStatsCollector, p as init_docker_stats } from "./stack-health-BQFSJc0l.js";
2
+ import { On as resolveProjectFromIssueSync, S as init_defaults, c as init_load, fn as init_projects, li as init_errors, p as loadConfigSync, x as DEFAULT_CONFIG } from "./config-yaml-D60AnTIu.js";
3
+ import { t as getBuildInfo } from "./build-info-WuZT6xyi.js";
4
+ import { t as getDashboardIdentity } from "./identity-C3s8lyp0.js";
5
+ import { h as loadConfigSync$1, p as init_config } from "./config-NxI9Yl2f.js";
6
+ import { a as init_event_store, i as initEventStore } from "./event-store-DTns2XZP.js";
7
+ import { D as projectLegacySystemHealthSummary, t as init_src } from "./src-CdwN6WY6.js";
8
+ import { An as init_runtime_census, Dn as descendantPidsForSession, Fn as init_collector, G as init_runtime_state, In as LINUX_MEMORY_PRESSURE_DEFAULTS, Ln as init_linux, On as getRuntimeCensus, Pn as createHostHealthCollector, Ri as getRuntimeSnapshot, Rn as DARWIN_MEMORY_PRESSURE_DEFAULTS, U as getAgentRuntimeState, _ as init_agent_state, fn as init_termination, gn as init_queries, nr as setCachedMemoryVerdict, q as init_agents, tr as init_memory_verdict_cache, vn as listRunningAgents, zi as init_agent_runtime_mirror, zn as init_darwin } from "./agent-state-FABw8neJ.js";
9
+ import { f as DockerStatsCollector, p as init_docker_stats } from "./stack-health-BKfNaqMm.js";
10
10
  import { i as readReviewStatusMap, n as init_review_status_source, t as classifyAdvancingSessionLifecycle } from "./review-status-source-Jq0BXmn3.js";
11
- import { r as init_config$1 } from "./config-Doq_tF-f.js";
12
- import { d as getReviewStatusSync, p as init_review_status } from "./review-status-yOGD2MuK.js";
13
- import { n as __filename, r as init_esm_shims } from "./esm-shims-oAaKIa-a.js";
14
- import { r as computeBuildStaleness } from "./staleness-Fzx_3_Hr.js";
11
+ import { r as init_config$1 } from "./config-_qaa1UXH.js";
12
+ import { d as getReviewStatusSync, p as init_review_status } from "./review-status-DpniqzPT.js";
13
+ import { n as __filename, r as init_esm_shims } from "./esm-shims-deFq5Hhl.js";
14
+ import { r as computeBuildStaleness } from "./staleness-CxZaIhrn.js";
15
15
  import { createRequire } from "node:module";
16
16
  import { join } from "node:path";
17
17
  import { Effect } from "effect";
@@ -23025,6 +23025,8 @@ function classifyMemoryPressure(availableBytes, thresholds) {
23025
23025
  return "ok";
23026
23026
  }
23027
23027
  let governorMode = "admitting";
23028
+ let governorTrigger = null;
23029
+ let psiCalmSinceMs = null;
23028
23030
  function readGovernorReserves() {
23029
23031
  const resources = loadConfigSync().config.resources;
23030
23032
  return {
@@ -23045,6 +23047,13 @@ function readGovernorRunwayThresholds() {
23045
23047
  psiFullShedAvg10: resources.governorPsiFullShedAvg10
23046
23048
  };
23047
23049
  }
23050
+ function readGovernorPsiCalmConfig() {
23051
+ const resources = loadConfigSync().config.resources;
23052
+ return {
23053
+ readmitAvg10: resources.governorPsiCalmReadmitAvg10,
23054
+ windowMs: resources.governorPsiCalmWindowMs
23055
+ };
23056
+ }
23048
23057
  /**
23049
23058
  * Pure hysteresis transition: given the current MemAvailable, the governor's
23050
23059
  * three reserves, and the previous mode, decide the next mode. RECOVERY only
@@ -23060,14 +23069,48 @@ function nextGovernorMode(availableBytes, reserves, previousMode) {
23060
23069
  }
23061
23070
  function nextGovernorModeWithRunway(availableBytes, reserves, runway, runwayThresholds, previousMode) {
23062
23071
  const memoryMode = nextGovernorMode(availableBytes, reserves, previousMode);
23063
- if (runway.swapTotalBytes <= 0) return memoryMode;
23072
+ const memoryTrigger = availableBytes < reserves.hardBytes ? {
23073
+ kind: "hard",
23074
+ readingBytes: availableBytes,
23075
+ thresholdBytes: reserves.hardBytes
23076
+ } : previousMode === "admitting" && memoryMode === "holding" ? {
23077
+ kind: "soft-dip",
23078
+ readingBytes: availableBytes,
23079
+ thresholdBytes: reserves.softBytes
23080
+ } : null;
23081
+ if (runway.swapTotalBytes <= 0) return {
23082
+ mode: memoryMode,
23083
+ trigger: memoryTrigger
23084
+ };
23064
23085
  const swapSoftBytes = runway.swapTotalBytes * runwayThresholds.swapSoftFreePercent / 100;
23065
23086
  const swapRecoveryBytes = runway.swapTotalBytes * runwayThresholds.swapRecoveryFreePercent / 100;
23066
- const swapLow = previousMode === "admitting" ? runway.swapFreeBytes < swapSoftBytes : runway.swapFreeBytes < swapRecoveryBytes;
23087
+ const activeSwapThresholdBytes = previousMode === "admitting" ? swapSoftBytes : swapRecoveryBytes;
23088
+ const swapLow = runway.swapFreeBytes < activeSwapThresholdBytes;
23067
23089
  const psiShed = swapLow && runway.psiFullAvg10 != null && runway.psiFullAvg10 >= runwayThresholds.psiFullShedAvg10;
23068
- if (memoryMode === "shedding" || psiShed) return "shedding";
23069
- if (swapLow && runway.psiFullAvg10 == null) return "holding";
23070
- return memoryMode;
23090
+ if (memoryMode === "shedding") return {
23091
+ mode: "shedding",
23092
+ trigger: memoryTrigger
23093
+ };
23094
+ if (psiShed) return {
23095
+ mode: "shedding",
23096
+ trigger: {
23097
+ kind: "swap-psi",
23098
+ readingBytes: runway.swapFreeBytes,
23099
+ thresholdBytes: activeSwapThresholdBytes
23100
+ }
23101
+ };
23102
+ if (swapLow && runway.psiFullAvg10 == null) return {
23103
+ mode: "holding",
23104
+ trigger: {
23105
+ kind: "psi-unavailable",
23106
+ readingBytes: runway.swapFreeBytes,
23107
+ thresholdBytes: activeSwapThresholdBytes
23108
+ }
23109
+ };
23110
+ return {
23111
+ mode: memoryMode,
23112
+ trigger: memoryTrigger
23113
+ };
23071
23114
  }
23072
23115
  function bandForGovernorMode(mode) {
23073
23116
  if (mode === "shedding") return "hard";
@@ -23084,12 +23127,33 @@ function bandForGovernorMode(mode) {
23084
23127
  async function assessMemoryPressure() {
23085
23128
  const reserves = readGovernorReserves();
23086
23129
  const runwayThresholds = readGovernorRunwayThresholds();
23130
+ const psiCalmConfig = readGovernorPsiCalmConfig();
23087
23131
  const snapshot = await readProcMemory();
23088
- governorMode = nextGovernorModeWithRunway(snapshot.memAvailable, reserves, {
23132
+ const now = Date.now();
23133
+ const psiIsCalm = snapshot.psiFullAvg10 != null && snapshot.psiFullAvg10 < psiCalmConfig.readmitAvg10;
23134
+ const previousMode = governorMode;
23135
+ const transition = nextGovernorModeWithRunway(snapshot.memAvailable, reserves, {
23089
23136
  swapTotalBytes: snapshot.swapTotal,
23090
23137
  swapFreeBytes: snapshot.swapFree,
23091
23138
  psiFullAvg10: snapshot.psiFullAvg10
23092
23139
  }, runwayThresholds, governorMode);
23140
+ governorMode = transition.mode;
23141
+ const triggerKindChanged = transition.trigger != null && transition.trigger.kind !== governorTrigger?.kind;
23142
+ const pressureStateChanged = governorMode !== "admitting" && (previousMode !== governorMode || triggerKindChanged);
23143
+ if (governorMode === "admitting") governorTrigger = null;
23144
+ else if (transition.trigger && (previousMode === "admitting" || transition.trigger.kind !== governorTrigger?.kind)) governorTrigger = {
23145
+ ...transition.trigger,
23146
+ at: now
23147
+ };
23148
+ if (governorMode === "admitting") psiCalmSinceMs = null;
23149
+ else if (pressureStateChanged) psiCalmSinceMs = psiIsCalm ? now : null;
23150
+ else if (psiIsCalm) psiCalmSinceMs ??= now;
23151
+ else psiCalmSinceMs = null;
23152
+ if (governorMode === "holding" && psiCalmSinceMs != null && now - psiCalmSinceMs >= psiCalmConfig.windowMs && snapshot.memAvailable >= reserves.softBytes) {
23153
+ governorMode = "admitting";
23154
+ governorTrigger = null;
23155
+ psiCalmSinceMs = null;
23156
+ }
23093
23157
  const verdict = {
23094
23158
  band: bandForGovernorMode(governorMode),
23095
23159
  availableBytes: snapshot.memAvailable,
@@ -23099,12 +23163,14 @@ async function assessMemoryPressure() {
23099
23163
  },
23100
23164
  swapTotalBytes: snapshot.swapTotal,
23101
23165
  swapFreeBytes: snapshot.swapFree,
23102
- psiFullAvg10: snapshot.psiFullAvg10
23166
+ psiSomeAvg10: snapshot.psiSomeAvg10,
23167
+ psiFullAvg10: snapshot.psiFullAvg10,
23168
+ trigger: governorTrigger
23103
23169
  };
23104
23170
  setCachedMemoryVerdict(verdict);
23105
23171
  return verdict;
23106
23172
  }
23107
23173
  //#endregion
23108
- export { getResourceStacks as a, getCurrentDockerStats as c, getResourceConfig as d, getSystemHealthEvidenceSnapshot as f, classifyAgentHealth as g, startSmeeProcessSync as h, readGovernorWatchReserveBytes as i, getAcceptedSystemHealthSnapshot as l, isSmeeConfiguredSync as m, classifyMemoryPressure as n, formatUptime as o, getSystemHealthSnapshot as p, readGovernorReserves as r, getContainerHistory as s, assessMemoryPressure as t, getDeployStaleness as u };
23174
+ export { classifyAgentHealth as _, readGovernorWatchReserveBytes as a, getContainerHistory as c, getDeployStaleness as d, getResourceConfig as f, startSmeeProcessSync as g, isSmeeConfiguredSync as h, readGovernorReserves as i, getCurrentDockerStats as l, getSystemHealthSnapshot as m, classifyMemoryPressure as n, getResourceStacks as o, getSystemHealthEvidenceSnapshot as p, readGovernorPsiCalmConfig as r, formatUptime as s, assessMemoryPressure as t, getAcceptedSystemHealthSnapshot as u };
23109
23175
 
23110
- //# sourceMappingURL=memory-governor-Cqvbusr4.js.map
23176
+ //# sourceMappingURL=memory-governor-Cvv_9K0M.js.map
@@ -1,7 +1,7 @@
1
- import { l as init_activity_logger, o as emitActivityEntrySync } from "./activity-logger-BWZhVphb.js";
2
- import { _ as logDeaconEventSync, h as init_persistent_logger } from "./agents-jXgqpHca.js";
3
- import { An as init_runtime_census, On as getRuntimeCensus } from "./agent-state-BJhGIJZe.js";
4
- import { i as readGovernorWatchReserveBytes, r as readGovernorReserves, t as assessMemoryPressure } from "./memory-governor-Cqvbusr4.js";
1
+ import { l as init_activity_logger, o as emitActivityEntrySync } from "./activity-logger-SlTXYCVf.js";
2
+ import { _ as logDeaconEventSync, h as init_persistent_logger } from "./agents-DzpQidT8.js";
3
+ import { An as init_runtime_census, On as getRuntimeCensus } from "./agent-state-FABw8neJ.js";
4
+ import { a as readGovernorWatchReserveBytes, i as readGovernorReserves, r as readGovernorPsiCalmConfig, t as assessMemoryPressure } from "./memory-governor-Cvv_9K0M.js";
5
5
  import { resolve } from "path";
6
6
  import { homedir } from "os";
7
7
  import { execFile } from "child_process";
@@ -34,14 +34,36 @@ function memoryFeedLevel(band, availableBytes, watchBytes) {
34
34
  function formatGib(bytes) {
35
35
  return `${(bytes / 1024 ** 3).toFixed(1)} GiB`;
36
36
  }
37
+ function formatPsi(value) {
38
+ return value == null ? "unavailable (pressure stall data not readable)" : value.toFixed(2);
39
+ }
40
+ function formatTrigger(verdict) {
41
+ const trigger = verdict.trigger;
42
+ if (!trigger) return verdict.band === "hard" ? "Memory critical: the governor entered shedding before trigger details were available." : "Overdeck stopped admitting work before trigger details were available.";
43
+ const since = new Date(trigger.at).toISOString().slice(11, 16);
44
+ if (trigger.kind === "soft-dip") return `Overdeck stopped admitting work at ${since} UTC when available memory dipped to ${formatGib(trigger.readingBytes)}, under the ${formatGib(trigger.thresholdBytes)} soft reserve.`;
45
+ if (trigger.kind === "hard") return `Overdeck entered critical memory shedding at ${since} UTC when available memory fell to ${formatGib(trigger.readingBytes)}, under the ${formatGib(trigger.thresholdBytes)} hard reserve.`;
46
+ if (trigger.kind === "swap-psi") return `Overdeck entered critical memory shedding at ${since} UTC when swap free fell to ${formatGib(trigger.readingBytes)}, under the ${formatGib(trigger.thresholdBytes)} swap runway threshold, while memory pressure stalls were active.`;
47
+ return `Overdeck stopped admitting work at ${since} UTC when swap free fell to ${formatGib(trigger.readingBytes)}, under the ${formatGib(trigger.thresholdBytes)} swap runway threshold, and memory pressure stall data was unavailable.`;
48
+ }
49
+ function formatCalmWindow(windowMs) {
50
+ const minutes = windowMs / 6e4;
51
+ return Number.isInteger(minutes) ? `${minutes} minutes` : `${windowMs} ms`;
52
+ }
53
+ function formatSheddingExit(verdict, hardBytes, recoveryBytes) {
54
+ if (verdict.trigger?.kind === "swap-psi") return `Shedding ends when live memory stalls clear or swap runway recovers. Admissions resume at the ${formatGib(recoveryBytes)} recovery reserve or through the PSI-calm condition.`;
55
+ return `Shedding ends when available memory reaches the ${formatGib(hardBytes)} hard reserve. Admissions resume at the ${formatGib(recoveryBytes)} recovery reserve or through the PSI-calm condition.`;
56
+ }
37
57
  /**
38
58
  * Format a multi-line memory details string for activity entry.
39
59
  */
40
- function buildMemoryDetails(availableBytes, watchBytes, softBytes, hardBytes, recoveryBytes) {
60
+ function buildMemoryDetails(verdict, watchBytes, softBytes, hardBytes, recoveryBytes) {
61
+ const swap = verdict.swapFreeBytes == null || verdict.swapTotalBytes == null ? "Swap: unavailable" : `Swap: ${formatGib(verdict.swapFreeBytes)} free of ${formatGib(verdict.swapTotalBytes)}`;
41
62
  return [
42
- `MemAvailable: ${formatGib(availableBytes)}`,
63
+ `MemAvailable: ${formatGib(verdict.availableBytes)}`,
43
64
  `Watch reserve: ${formatGib(watchBytes)} | Soft: ${formatGib(softBytes)} | Hard: ${formatGib(hardBytes)} | Recovery: ${formatGib(recoveryBytes)}`,
44
- `Swap free: unavailable | PSI full avg10: unavailable`
65
+ swap,
66
+ `PSI some avg10: ${formatPsi(verdict.psiSomeAvg10)} | full avg10: ${formatPsi(verdict.psiFullAvg10)}`
45
67
  ].join("\n");
46
68
  }
47
69
  let lastLevel = null;
@@ -89,6 +111,7 @@ async function patrolMemoryPressure(deps = {}) {
89
111
  readSoftReserveBytes: deps.readSoftReserveBytes || (() => readGovernorReserves().softBytes),
90
112
  readHardReserveBytes: deps.readHardReserveBytes || (() => readGovernorReserves().hardBytes),
91
113
  readRecoveryReserveBytes: deps.readRecoveryReserveBytes || (() => readGovernorReserves().recoveryBytes),
114
+ readPsiCalmConfig: deps.readPsiCalmConfig || (() => readGovernorPsiCalmConfig()),
92
115
  census: deps.census || (() => getRuntimeCensus()),
93
116
  readNewKernelJournal: deps.readNewKernelJournal || readNewKernelJournal,
94
117
  emit: deps.emit || emitActivityEntrySync
@@ -98,6 +121,7 @@ async function patrolMemoryPressure(deps = {}) {
98
121
  const softBytes = d.readSoftReserveBytes();
99
122
  const hardBytes = d.readHardReserveBytes();
100
123
  const recoveryBytes = d.readRecoveryReserveBytes();
124
+ const psiCalmConfig = d.readPsiCalmConfig();
101
125
  const actions = [];
102
126
  const oomKills = parseOomKills(await d.readNewKernelJournal());
103
127
  if (oomKills.length > 0) {
@@ -112,7 +136,7 @@ async function patrolMemoryPressure(deps = {}) {
112
136
  source: "cloister",
113
137
  link: "/resources",
114
138
  message,
115
- details: `OOM kills in Overdeck tree:\n${details}\n\n${buildMemoryDetails(verdict.availableBytes, watchBytes, softBytes, hardBytes, recoveryBytes)}`,
139
+ details: `OOM kills in Overdeck tree:\n${details}\n\n${buildMemoryDetails(verdict, watchBytes, softBytes, hardBytes, recoveryBytes)}`,
116
140
  desktop: true
117
141
  });
118
142
  const action = `memory-pressure-patrol: oom-kills (${overdeckKills.length} in Overdeck tree)`;
@@ -128,7 +152,7 @@ async function patrolMemoryPressure(deps = {}) {
128
152
  source: "cloister",
129
153
  link: "/resources",
130
154
  message,
131
- details: `OOM kills outside Overdeck:\n${details}\n\n${buildMemoryDetails(verdict.availableBytes, watchBytes, softBytes, hardBytes, recoveryBytes)}`,
155
+ details: `OOM kills outside Overdeck:\n${details}\n\n${buildMemoryDetails(verdict, watchBytes, softBytes, hardBytes, recoveryBytes)}`,
132
156
  desktop: false
133
157
  });
134
158
  const action = `memory-pressure-patrol: oom-kills (${hostKills.length} outside Overdeck)`;
@@ -140,7 +164,7 @@ async function patrolMemoryPressure(deps = {}) {
140
164
  if (level === lastLevel) return oomKills.length > 0 ? actions : [];
141
165
  lastLevel = level;
142
166
  const census = await d.census();
143
- let details = buildMemoryDetails(verdict.availableBytes, watchBytes, softBytes, hardBytes, recoveryBytes);
167
+ let details = buildMemoryDetails(verdict, watchBytes, softBytes, hardBytes, recoveryBytes);
144
168
  if (!census.processAvailable) details += "\n\nTop memory consumers: unavailable (process census could not be read)";
145
169
  else {
146
170
  const topConsumers = topMemoryConsumers(census, 5);
@@ -163,7 +187,7 @@ async function patrolMemoryPressure(deps = {}) {
163
187
  actions.push(action);
164
188
  logDeaconEventSync(`[deacon] ${action}`);
165
189
  } else if (level === "holding") {
166
- const message = `Memory pressure: Overdeck has stopped admitting work — ${formatGib(verdict.availableBytes)} available is under the ${formatGib(softBytes)} soft reserve. Queued agent resumes and review/test dispatches will wait until available memory climbs back above the ${formatGib(recoveryBytes)} recovery reserve. Nothing has been stopped or killed.`;
190
+ const message = `${formatTrigger(verdict)} ${formatGib(verdict.availableBytes)} is available now. Admissions resume at the ${formatGib(recoveryBytes)} recovery reserve, or at the ${formatGib(softBytes)} soft reserve once memory pressure stalls (PSI full avg10) stay below ${psiCalmConfig.readmitAvg10} for ${formatCalmWindow(psiCalmConfig.windowMs)}. Nothing has been stopped or killed.`;
167
191
  d.emit({
168
192
  level: "warn",
169
193
  source: "cloister",
@@ -176,7 +200,7 @@ async function patrolMemoryPressure(deps = {}) {
176
200
  actions.push(action);
177
201
  logDeaconEventSync(`[deacon] ${action}`);
178
202
  } else if (level === "shedding") {
179
- const message = `Memory critical — ${formatGib(verdict.availableBytes)} available is under the ${formatGib(hardBytes)} hard reserve. Overdeck admits nothing and the kernel may start killing processes. Free memory on this host now; automatic shedding is not wired, so Overdeck will not reclaim anything on its own.`;
203
+ const message = `${formatTrigger(verdict)} ${formatGib(verdict.availableBytes)} is available now. Overdeck admits nothing while shedding is active. ${formatSheddingExit(verdict, hardBytes, recoveryBytes)} Free memory on this host now; automatic shedding is not wired, so Overdeck will not reclaim anything on its own.`;
180
204
  d.emit({
181
205
  level: "error",
182
206
  source: "cloister",
@@ -189,7 +213,7 @@ async function patrolMemoryPressure(deps = {}) {
189
213
  actions.push(action);
190
214
  logDeaconEventSync(`[deacon] ${action}`);
191
215
  } else if (level === "ok") {
192
- const message = `Memory pressure cleared — ${formatGib(verdict.availableBytes)} available, above the ${formatGib(watchBytes)} watch reserve. Overdeck is admitting work again.`;
216
+ const message = `Memory pressure cleared — ${formatGib(verdict.availableBytes)} available, at or above the ${formatGib(watchBytes)} watch reserve. Overdeck is admitting work again.`;
193
217
  d.emit({
194
218
  level: "info",
195
219
  source: "cloister",
@@ -271,4 +295,4 @@ function parseOomKills(journalText) {
271
295
  //#endregion
272
296
  export { patrolMemoryPressure };
273
297
 
274
- //# sourceMappingURL=memory-pressure-patrol-DPb8foam.js.map
298
+ //# sourceMappingURL=memory-pressure-patrol-C6DJJQRA.js.map
@@ -1,2 +1,2 @@
1
- import { A as UatNotPromotable, B as readyForMerge, C as RepoMergeStatus, D as UatMember, E as UatGenerationNotFound, F as enqueueMerge, I as getAllActiveQueues, L as getCurrentMerge, M as UatStatus, N as WorkspaceType, O as UatMemberRole, P as dequeueMerge, R as getQueueForProject, S as RepoKey, T as UatGenerationFilter, _ as NotReadyForMerge, a as ForgeMergeFailed, b as QueueView, c as MergeInProgress, d as MergeSet, f as MergeSetNotFound, g as MergeWriterLive, h as MergeWriter, i as AutoMergeStatus, j as UatResolution, k as UatName, l as MergeResolver, m as MergeSetStatus, n as AutoMergeFilter, o as GateStatus, p as MergeSetRepo, r as AutoMergeNotFound, s as MergeApi, t as AutoMerge, u as MergeResolverLive, v as ProjectKey, w as UatGeneration, x as RebaseStatus, y as QueueEntryStatus, z as markMergeProcessing } from "./merge-FZ78_cEz.js";
1
+ import { A as UatNotPromotable, B as readyForMerge, C as RepoMergeStatus, D as UatMember, E as UatGenerationNotFound, F as enqueueMerge, I as getAllActiveQueues, L as getCurrentMerge, M as UatStatus, N as WorkspaceType, O as UatMemberRole, P as dequeueMerge, R as getQueueForProject, S as RepoKey, T as UatGenerationFilter, _ as NotReadyForMerge, a as ForgeMergeFailed, b as QueueView, c as MergeInProgress, d as MergeSet, f as MergeSetNotFound, g as MergeWriterLive, h as MergeWriter, i as AutoMergeStatus, j as UatResolution, k as UatName, l as MergeResolver, m as MergeSetStatus, n as AutoMergeFilter, o as GateStatus, p as MergeSetRepo, r as AutoMergeNotFound, s as MergeApi, t as AutoMerge, u as MergeResolverLive, v as ProjectKey, w as UatGeneration, x as RebaseStatus, y as QueueEntryStatus, z as markMergeProcessing } from "./merge-FTk4LsnM.js";
2
2
  export { AutoMerge, AutoMergeFilter, AutoMergeNotFound, AutoMergeStatus, ForgeMergeFailed, GateStatus, MergeApi, MergeInProgress, MergeResolver, MergeResolverLive, MergeSet, MergeSetNotFound, MergeSetRepo, MergeSetStatus, MergeWriter, MergeWriterLive, NotReadyForMerge, ProjectKey, QueueEntryStatus, QueueView, RebaseStatus, RepoKey, RepoMergeStatus, UatGeneration, UatGenerationFilter, UatGenerationNotFound, UatMember, UatMemberRole, UatName, UatNotPromotable, UatResolution, UatStatus, WorkspaceType, dequeueMerge, enqueueMerge, getAllActiveQueues, getCurrentMerge, getQueueForProject, markMergeProcessing, readyForMerge };
@@ -1,5 +1,5 @@
1
- import { C as inArray, _ as integer, a as EventBus, b as and, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, s as Forge, v as init_drizzle_orm, x as eq } from "./infra-CHIvOb9q.js";
2
- import { n as init_issues, t as IssueId } from "./issues-e_Ck1Ln2.js";
1
+ import { C as inArray, _ as integer, a as EventBus, b as and, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, s as Forge, v as init_drizzle_orm, x as eq } from "./infra-CJRi_5Wu.js";
2
+ import { n as init_issues, t as IssueId } from "./issues-RGHQUKhB.js";
3
3
  import { Context, Effect, Layer, Schema } from "effect";
4
4
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
5
5
  //#region ../../lib/overdeck/merge.ts
@@ -702,4 +702,4 @@ function getAllActiveQueues() {
702
702
  //#endregion
703
703
  export { UatNotPromotable as A, readyForMerge as B, RepoMergeStatus as C, UatMember as D, UatGenerationNotFound as E, enqueueMerge as F, getAllActiveQueues as I, getCurrentMerge as L, UatStatus as M, WorkspaceType as N, UatMemberRole as O, dequeueMerge as P, getQueueForProject as R, RepoKey as S, UatGenerationFilter as T, NotReadyForMerge as _, ForgeMergeFailed as a, QueueView as b, MergeInProgress as c, MergeSet as d, MergeSetNotFound as f, MergeWriterLive as g, MergeWriter as h, AutoMergeStatus as i, UatResolution as j, UatName as k, MergeResolver as l, MergeSetStatus as m, AutoMergeFilter as n, GateStatus as o, MergeSetRepo as p, AutoMergeNotFound as r, MergeApi as s, AutoMerge as t, MergeResolverLive as u, ProjectKey as v, UatGeneration as w, RebaseStatus as x, QueueEntryStatus as y, markMergeProcessing as z };
704
704
 
705
- //# sourceMappingURL=merge-FZ78_cEz.js.map
705
+ //# sourceMappingURL=merge-FTk4LsnM.js.map
@@ -1,15 +1,15 @@
1
- import { Qr as GitError, Ri as init_paths, Yn as parseIssueIdSync, bn as loadProjectsConfigSync, ci as init_errors, fn as init_projects, p as loadConfigSync, qn as init_issue_id, si as VcsError, t as init_config_yaml, vi as OVERDECK_HOME } from "./config-yaml-D9nfpEx1.js";
2
- import { l as init_activity_logger, o as emitActivityEntrySync, s as emitActivityTtsSync } from "./activity-logger-BWZhVphb.js";
3
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CHIvOb9q.js";
4
- import { B as sendKeys, C as init_tmux, E as killSession, U as sessionExists, j as listSessionNames, r as capturePane } from "./tmux-DWEc4Ld9.js";
5
- import { a as init_feature_registry_population, n as init_post_merge_state, o as recordFeatureRegistryLifecycle, r as postMergeInFlight, t as completedPostMerge } from "./post-merge-state-DC2_0t12.js";
6
- import { a as init_git_utils, t as cleanupStaleLocks } from "./git-utils-DW8-jIUJ.js";
7
- import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos } from "./project-repos--QeCg7yQ.js";
8
- import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-DJAOAuMN.js";
9
- import { O as capturePipelineStageForIssue, _ as markWorkspaceStuck, d as getReviewStatusSync, k as init_pipeline, p as init_review_status, w as setReviewStatusSync } from "./review-status-yOGD2MuK.js";
10
- import { r as verifyMergedBeforeLifecycle } from "./merge-verification-JJc5GC2t.js";
11
- import { t as enqueueMergedDockerCleanup } from "./merged-docker-cleanup-worker-BOqWA373.js";
12
- import { r as runQualityGates } from "./validation-Dr6V4PXx.js";
1
+ import { $r as GitError, Yn as parseIssueIdSync, bn as loadProjectsConfigSync, ci as VcsError, fn as init_projects, li as init_errors, p as loadConfigSync, qn as init_issue_id, t as init_config_yaml, yi as OVERDECK_HOME, zi as init_paths } from "./config-yaml-D60AnTIu.js";
2
+ import { l as init_activity_logger, o as emitActivityEntrySync, s as emitActivityTtsSync } from "./activity-logger-SlTXYCVf.js";
3
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CJRi_5Wu.js";
4
+ import { B as sendKeys, C as init_tmux, E as killSession, U as sessionExists, j as listSessionNames, r as capturePane } from "./tmux-wnT_hg-s.js";
5
+ import { a as init_feature_registry_population, n as init_post_merge_state, o as recordFeatureRegistryLifecycle, r as postMergeInFlight, t as completedPostMerge } from "./post-merge-state-DFaf7OI1.js";
6
+ import { a as init_git_utils, t as cleanupStaleLocks } from "./git-utils-BdHk8y7g.js";
7
+ import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos } from "./project-repos-CsfvLtmr.js";
8
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-Dbg_pVZg.js";
9
+ import { O as capturePipelineStageForIssue, _ as markWorkspaceStuck, d as getReviewStatusSync, k as init_pipeline, p as init_review_status, w as setReviewStatusSync } from "./review-status-DpniqzPT.js";
10
+ import { r as verifyMergedBeforeLifecycle } from "./merge-verification-BfJRNMiD.js";
11
+ import { t as enqueueMergedDockerCleanup } from "./merged-docker-cleanup-worker-Bh5fKG_b.js";
12
+ import { r as runQualityGates } from "./validation-BfG2jW5C.js";
13
13
  import { dirname, resolve } from "node:path";
14
14
  import { Data, Effect } from "effect";
15
15
  import { appendFileSync, existsSync, mkdirSync } from "fs";
@@ -27,7 +27,7 @@ init_activity_logger();
27
27
  init_tmux();
28
28
  async function shouldRestartForPostMerge(repoRoot, dependencies = {}) {
29
29
  if ((await (dependencies.computeStaleness ?? (async () => {
30
- const [{ getBuildInfo }, { computeBuildStaleness }] = await Promise.all([import("./build-info-Bj2vQEMh.js"), import("./staleness-CRDK6LFG.js")]);
30
+ const [{ getBuildInfo }, { computeBuildStaleness }] = await Promise.all([import("./build-info-Dx2qrVhb.js"), import("./staleness-r_dkMyMG.js")]);
31
31
  return computeBuildStaleness({
32
32
  repoRoot,
33
33
  buildCommit: getBuildInfo().buildCommit
@@ -36,9 +36,9 @@ async function shouldRestartForPostMerge(repoRoot, dependencies = {}) {
36
36
  (dependencies.log ?? console.log)("Running build already contains origin/main build inputs — skipping deploy restart");
37
37
  return false;
38
38
  }
39
- const assessment = await (dependencies.getWindowAssessment ?? (async () => (await import("./deploy-window-DeJK8mTK.js")).getDeployWindowAssessment()))();
39
+ const assessment = await (dependencies.getWindowAssessment ?? (async () => (await import("./deploy-window-hgsvZ3UZ.js")).getDeployWindowAssessment()))();
40
40
  if (assessment.reason) {
41
- await (dependencies.recordIntent ?? (await import("./deploy-queue-CjLErpgw.js")).recordDeployIntent)({
41
+ await (dependencies.recordIntent ?? (await import("./deploy-queue--smqHLhe.js")).recordDeployIntent)({
42
42
  requestedBy: "merge-step0",
43
43
  reason: assessment.reason,
44
44
  blockedBy: []
@@ -750,7 +750,7 @@ async function notifyTldrDaemon(projectPath, _sourceBranch) {
750
750
  return;
751
751
  }
752
752
  console.log(`[merge-agent] Found ${changedFiles.length} changed source files to reindex`);
753
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BNQHwblU.js");
753
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-CRSAkhBx.js");
754
754
  const tldrService = getTldrDaemonServiceSync(projectPath, venvPath);
755
755
  if (!(await tldrService.getStatus()).running) {
756
756
  console.log(`[merge-agent] TLDR daemon not running, skipping notification`);
@@ -796,7 +796,7 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
796
796
  return;
797
797
  }
798
798
  try {
799
- const { findSpecByIssue } = await import("./specs-IYsFlM-L.js");
799
+ const { findSpecByIssue } = await import("./specs-oRGyfz6C.js");
800
800
  const spec = await Effect.runPromise(findSpecByIssue(projectPath, issueId));
801
801
  if (spec && (spec.status === "completed" || spec.status === "cancelled")) {
802
802
  console.log(`[merge-agent] ${issueId} is closed out (spec ${spec.status}) — skipping post-merge lifecycle`);
@@ -823,7 +823,7 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
823
823
  }
824
824
  let dockerRetryReason = null;
825
825
  try {
826
- const { teardownWorkspaceDockerByNamePromise } = await import("./docker-CRPHBylA.js");
826
+ const { teardownWorkspaceDockerByNamePromise } = await import("./docker-DQzyMXkd.js");
827
827
  const teardown = await teardownWorkspaceDockerByNamePromise(issueId.toLowerCase());
828
828
  if (teardown.networkRemoved) {
829
829
  console.log(`[merge-agent] ✓ Removed Docker stack/network: ${teardown.steps.join("; ")}`);
@@ -874,7 +874,7 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
874
874
  }
875
875
  console.log(`[merge-agent] Running post-merge verify handoff for ${issueId}`);
876
876
  try {
877
- const { cleanupMergedLabels } = await import("./label-cleanup-D2zUMasf.js");
877
+ const { cleanupMergedLabels } = await import("./label-cleanup-CefxK9tL.js");
878
878
  const ghResolved = resolveGitHubIssueSync(issueId);
879
879
  const labelCtx = ghResolved.isGitHub ? {
880
880
  issueId,
@@ -924,8 +924,8 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
924
924
  console.warn(`[merge-agent] Async post-merge release trigger failed for ${issueId}: ${err instanceof Error ? err.message : String(err)}`);
925
925
  });
926
926
  try {
927
- const { setAgentPaused, getAgentState } = await import("./agents-DpCuoF65.js");
928
- const { killSession, sessionExists } = await import("./tmux-B8zsqD_6.js");
927
+ const { setAgentPaused, getAgentState } = await import("./agents-DixZjXWm.js");
928
+ const { killSession, sessionExists } = await import("./tmux-CYucGrTl.js");
929
929
  const issueLower = issueId.toLowerCase();
930
930
  const reason = "awaiting close-out (verify on main)";
931
931
  for (const agentId of [
@@ -954,8 +954,8 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
954
954
  console.warn(`[merge-agent] Could not pause or kill agent sessions: ${err}`);
955
955
  }
956
956
  try {
957
- const { killAllReviewerSessions } = await import("./review-agent-DgkUPRx0.js");
958
- const { resolveProjectFromIssueSync } = await import("./projects-LftaVK99.js");
957
+ const { killAllReviewerSessions } = await import("./review-agent-Caodi0PX.js");
958
+ const { resolveProjectFromIssueSync } = await import("./projects-BMuEf14J.js");
959
959
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
960
960
  if (projectKey) {
961
961
  const { killed } = await Effect.runPromise(killAllReviewerSessions(projectKey, issueId));
@@ -969,7 +969,7 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
969
969
  }
970
970
  await killPostMergeRoleSessions(issueId);
971
971
  try {
972
- const { createResetMarker } = await import("./cli-BRuzUT_I.js");
972
+ const { createResetMarker } = await import("./cli-BflmtEFM.js");
973
973
  const timestamp = (/* @__PURE__ */ new Date()).toISOString();
974
974
  const marker = await createResetMarker({
975
975
  projectId: basename$1(projectPath),
@@ -1007,7 +1007,7 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
1007
1007
  console.log(`[merge-agent] Release already started or completed for ${issueId} (${currentStatus}), skipping`);
1008
1008
  return;
1009
1009
  }
1010
- const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-LftaVK99.js");
1010
+ const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-BMuEf14J.js");
1011
1011
  const resolved = resolveProjectFromIssueSync(issueId);
1012
1012
  if (!(resolved ? getProjectSync(resolved.projectKey) : null)?.release) {
1013
1013
  setReviewStatusSync(issueId, {
@@ -1017,7 +1017,7 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
1017
1017
  console.log(`[merge-agent] No release config for ${issueId}; marked release skipped`);
1018
1018
  return;
1019
1019
  }
1020
- const { runRelease } = await import("./release-engine-D9gaCBn9.js");
1020
+ const { runRelease } = await import("./release-engine-C_OOhCaK.js");
1021
1021
  try {
1022
1022
  await runRelease(issueId, projectPath);
1023
1023
  } catch (err) {
@@ -1036,10 +1036,10 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
1036
1036
  async function transitionIssueToVerifyingOnMain(issueId, projectPath) {
1037
1037
  const [effectModule, issueLifecycleModule, githubModule, linearModule, rallyModule, errorsModule] = await Promise.all([
1038
1038
  import("effect"),
1039
- import("./issue-lifecycle-DOPVv7xz.js"),
1040
- import("./github-client-Cy0fSj1a.js"),
1041
- import("./linear-client-BTGApNLo.js"),
1042
- import("./rally-client-CN5vh4Ac.js"),
1039
+ import("./issue-lifecycle-DaKN57sx.js"),
1040
+ import("./github-client-OK24qpol.js"),
1041
+ import("./linear-client-TL32snOy.js"),
1042
+ import("./rally-client-CsqLjLLa.js"),
1043
1043
  import("./typed-errors-CZ3GFBvo.js")
1044
1044
  ]);
1045
1045
  const { Effect, Layer } = effectModule;
@@ -1728,4 +1728,4 @@ async function runProjectQualityGates(projectPath, phase) {
1728
1728
  //#endregion
1729
1729
  export { ensureSyncGitQuiescent as S, syncMainIntoWorkspace as _, isAutoCommitExcludedPath as a, gitPush as b, logMergeHistory as c, postMergeLifecycle as d, runProjectQualityGates as f, sendMessageToAgent as g, scanGitPatterns as h, captureTmuxOutput as i, notifyTldrDaemon as l, scanForConflictMarkers as m, GIT_PATTERNS as n, isMergeAgentRunning as o, salvageStrandedMerge as p, autoCommitWorkspaceChangesBeforeSync as r, isSyncMainMainPreferredPath as s, AUTO_COMMIT_EXCLUDED_PATHS as t, parseAgentOutput as u, triggerPostMergeReleaseIfConfigured as v, listGitOperationsSync as x, MainDivergedError as y };
1730
1730
 
1731
- //# sourceMappingURL=merge-agent-B3jRrlS1.js.map
1731
+ //# sourceMappingURL=merge-agent-C-dsN9se.js.map
@@ -1,3 +1,3 @@
1
- import { i as resetPostMergeState } from "./post-merge-state-DC2_0t12.js";
2
- import { _ as syncMainIntoWorkspace, a as isAutoCommitExcludedPath, c as logMergeHistory, d as postMergeLifecycle, f as runProjectQualityGates, g as sendMessageToAgent, h as scanGitPatterns, i as captureTmuxOutput, l as notifyTldrDaemon, m as scanForConflictMarkers, n as GIT_PATTERNS, o as isMergeAgentRunning, p as salvageStrandedMerge, r as autoCommitWorkspaceChangesBeforeSync, s as isSyncMainMainPreferredPath, t as AUTO_COMMIT_EXCLUDED_PATHS, u as parseAgentOutput, v as triggerPostMergeReleaseIfConfigured } from "./merge-agent-B3jRrlS1.js";
1
+ import { i as resetPostMergeState } from "./post-merge-state-DFaf7OI1.js";
2
+ import { _ as syncMainIntoWorkspace, a as isAutoCommitExcludedPath, c as logMergeHistory, d as postMergeLifecycle, f as runProjectQualityGates, g as sendMessageToAgent, h as scanGitPatterns, i as captureTmuxOutput, l as notifyTldrDaemon, m as scanForConflictMarkers, n as GIT_PATTERNS, o as isMergeAgentRunning, p as salvageStrandedMerge, r as autoCommitWorkspaceChangesBeforeSync, s as isSyncMainMainPreferredPath, t as AUTO_COMMIT_EXCLUDED_PATHS, u as parseAgentOutput, v as triggerPostMergeReleaseIfConfigured } from "./merge-agent-C-dsN9se.js";
3
3
  export { AUTO_COMMIT_EXCLUDED_PATHS, GIT_PATTERNS, autoCommitWorkspaceChangesBeforeSync, captureTmuxOutput, isAutoCommitExcludedPath, isMergeAgentRunning, isSyncMainMainPreferredPath, logMergeHistory, notifyTldrDaemon, parseAgentOutput, postMergeLifecycle, resetPostMergeState, runProjectQualityGates, salvageStrandedMerge, scanForConflictMarkers, scanGitPatterns, sendMessageToAgent, syncMainIntoWorkspace, triggerPostMergeReleaseIfConfigured };
@@ -44,4 +44,4 @@ async function shipMergeBatch(issueIds, deps) {
44
44
  //#endregion
45
45
  export { shipMergeBatch };
46
46
 
47
- //# sourceMappingURL=merge-batch-B8bVjFWS.js.map
47
+ //# sourceMappingURL=merge-batch-BJjzUUL7.js.map
@@ -1,6 +1,6 @@
1
- import { c as resolveProjectReposForIssueSync, i as init_project_repos } from "./project-repos--QeCg7yQ.js";
2
- import { a as patchMergeSetRepoSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as patchMergeSetReposSync, r as getMergeSetSync } from "./merge-set-BmRRflt0.js";
3
- import { n as getForgeAdapter } from "./forge-RVTCK_5X.js";
1
+ import { c as resolveProjectReposForIssueSync, i as init_project_repos } from "./project-repos-CsfvLtmr.js";
2
+ import { a as patchMergeSetRepoSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as patchMergeSetReposSync, r as getMergeSetSync } from "./merge-set-CyW-xSn4.js";
3
+ import { n as getForgeAdapter } from "./forge-CHADjOFs.js";
4
4
  import { exec } from "node:child_process";
5
5
  import { promisify } from "node:util";
6
6
  //#region ../../lib/cloister/merge-completeness.ts
@@ -269,4 +269,4 @@ async function reconcileStrandedRepos(initialMergeSet) {
269
269
  //#endregion
270
270
  export { reconcileStrandedRepos as a, observeForgeMergeState as i, assessRepoMergeCompleteness as n, hasPositiveMergedEvidence as r, assessMergeCompleteness as t };
271
271
 
272
- //# sourceMappingURL=merge-completeness-DQt7Qa7i.js.map
272
+ //# sourceMappingURL=merge-completeness-BOtBUwTU.js.map
@@ -1,2 +1,2 @@
1
- import { a as reconcileStrandedRepos, i as observeForgeMergeState, n as assessRepoMergeCompleteness } from "./merge-completeness-DQt7Qa7i.js";
1
+ import { a as reconcileStrandedRepos, i as observeForgeMergeState, n as assessRepoMergeCompleteness } from "./merge-completeness-BOtBUwTU.js";
2
2
  export { assessRepoMergeCompleteness, observeForgeMergeState, reconcileStrandedRepos };
@@ -0,0 +1,3 @@
1
+ import { n as init_merge_eligibility, r as isMergeEligible, t as gatherMergeEligibility } from "./merge-eligibility-D7wRnJbj.js";
2
+ init_merge_eligibility();
3
+ export { gatherMergeEligibility, isMergeEligible };
@@ -0,0 +1,51 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { On as resolveProjectFromIssueSync, fn as init_projects, on as getProjectSync } from "./config-yaml-D60AnTIu.js";
3
+ import { a as gatherProjectLensSignals, s as init_pipeline_membership_gather } from "./pipeline-membership-gather-Ba0wJNCR.js";
4
+ import { n as init_pipeline_membership, r as resolvePipelineMembership } from "./pipeline-membership-BV4hdkHm.js";
5
+ //#region ../../lib/cloister/merge-eligibility.ts
6
+ function isMergeEligible(membership) {
7
+ return membership.bucket === "in_flight";
8
+ }
9
+ /** Classify candidates through one durable-lens gather per represented project. */
10
+ async function gatherMergeEligibility(issueIds, deps = defaultDeps) {
11
+ const candidatesByProject = /* @__PURE__ */ new Map();
12
+ for (const issueId of issueIds) {
13
+ const resolved = deps.resolveProject(issueId);
14
+ if (!resolved) continue;
15
+ const configured = deps.getProject(resolved.projectKey);
16
+ if (!configured) continue;
17
+ const existing = candidatesByProject.get(resolved.projectKey);
18
+ if (existing) existing.issueIds.add(issueId.toUpperCase());
19
+ else candidatesByProject.set(resolved.projectKey, {
20
+ project: {
21
+ ...configured,
22
+ path: resolved.projectPath
23
+ },
24
+ issueIds: new Set([issueId.toUpperCase()])
25
+ });
26
+ }
27
+ const memberships = /* @__PURE__ */ new Map();
28
+ await Promise.all([...candidatesByProject.values()].map(async ({ project, issueIds: candidates }) => {
29
+ const signals = await deps.gather(project);
30
+ for (const signal of signals) {
31
+ const issueId = signal.issueId.toUpperCase();
32
+ if (candidates.has(issueId)) memberships.set(issueId, resolvePipelineMembership(signal));
33
+ }
34
+ }));
35
+ return memberships;
36
+ }
37
+ var defaultDeps;
38
+ var init_merge_eligibility = __esmMin((() => {
39
+ init_pipeline_membership_gather();
40
+ init_pipeline_membership();
41
+ init_projects();
42
+ defaultDeps = {
43
+ resolveProject: resolveProjectFromIssueSync,
44
+ getProject: getProjectSync,
45
+ gather: gatherProjectLensSignals
46
+ };
47
+ }));
48
+ //#endregion
49
+ export { init_merge_eligibility as n, isMergeEligible as r, gatherMergeEligibility as t };
50
+
51
+ //# sourceMappingURL=merge-eligibility-D7wRnJbj.js.map
@@ -0,0 +1,2 @@
1
+ import { l as triggerMerge } from "./workspaces-C7LAuZfe.js";
2
+ export { triggerMerge };
@@ -0,0 +1,2 @@
1
+ import { t as rebaseFeatureBranch } from "./merge-rebase-KBw4rdh3.js";
2
+ export { rebaseFeatureBranch };
@@ -1,4 +1,4 @@
1
- import { Qr as GitError, ci as init_errors, ni as MergeConflictError } from "./config-yaml-D9nfpEx1.js";
1
+ import { $r as GitError, li as init_errors, ri as MergeConflictError } from "./config-yaml-D60AnTIu.js";
2
2
  import { Effect } from "effect";
3
3
  import { existsSync } from "fs";
4
4
  import { join } from "path";
@@ -131,4 +131,4 @@ function rebaseFeatureBranch(workspacePath, featureBranch, baseBranch, issueId)
131
131
  //#endregion
132
132
  export { rebaseFeatureBranch as t };
133
133
 
134
- //# sourceMappingURL=merge-rebase-qq40s91P.js.map
134
+ //# sourceMappingURL=merge-rebase-KBw4rdh3.js.map
@@ -1,3 +1,3 @@
1
- import { c as withRepoArtifactUrlSync, i as init_merge_set, l as withRepoStateSync, n as ensureMergeSetForIssueSync, r as getMergeSetSync, s as upsertMergeSetSync } from "./merge-set-BmRRflt0.js";
1
+ import { c as withRepoArtifactUrlSync, i as init_merge_set, l as withRepoStateSync, n as ensureMergeSetForIssueSync, r as getMergeSetSync, s as upsertMergeSetSync } from "./merge-set-CyW-xSn4.js";
2
2
  init_merge_set();
3
3
  export { ensureMergeSetForIssueSync, getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { On as resolveProjectFromIssueSync, Zn as resolveIssueIdSync, fn as init_projects, qn as init_issue_id } from "./config-yaml-D9nfpEx1.js";
3
- import { i as init_project_repos, l as resolveProjectReposFromResolvedIssueSync } from "./project-repos--QeCg7yQ.js";
4
- import { E as upsertMergeSet, b as patchMergeSetRepos, c as init_merge_sync, s as getMergeSetFromDb, y as patchMergeSetRepo } from "./merge-sync-CJpOa0cZ.js";
2
+ import { On as resolveProjectFromIssueSync, Zn as resolveIssueIdSync, fn as init_projects, qn as init_issue_id } from "./config-yaml-D60AnTIu.js";
3
+ import { i as init_project_repos, l as resolveProjectReposFromResolvedIssueSync } from "./project-repos-CsfvLtmr.js";
4
+ import { E as upsertMergeSet, b as patchMergeSetRepos, c as init_merge_sync, s as getMergeSetFromDb, y as patchMergeSetRepo } from "./merge-sync-YLvOPAry.js";
5
5
  import "effect";
6
6
  //#region ../../lib/merge-set.ts
7
7
  function upsertMergeSetSync(mergeSet) {
@@ -86,4 +86,4 @@ var init_merge_set = __esmMin((() => {
86
86
  //#endregion
87
87
  export { patchMergeSetRepoSync as a, withRepoArtifactUrlSync as c, init_merge_set as i, withRepoStateSync as l, ensureMergeSetForIssueSync as n, patchMergeSetReposSync as o, getMergeSetSync as r, upsertMergeSetSync as s, buildMergeSetForIssueSync as t };
88
88
 
89
- //# sourceMappingURL=merge-set-BmRRflt0.js.map
89
+ //# sourceMappingURL=merge-set-CyW-xSn4.js.map
@@ -1,3 +1,3 @@
1
- import { A as listUatGenerationNamesSync, C as resetProcessingToQueued, D as getUatGenerationSync, E as upsertMergeSet, F as updateUatGenerationStatusSync, I as updateUatGenerationSync, M as listUatGenerationsWithStacksSync, N as markUatGenerationRepoPromotedSync, O as hasUncleanedTerminalUatGenerationSync, P as setUatGenerationStackStartedAtSync, S as requeueToPending, T as transitionToMerging, _ as markMerged, a as getAllActiveQueues, b as patchMergeSetRepos, c as init_merge_sync, d as isMergeTrainEnabledForProject, f as listActiveAutoMerges, g as markFailed, h as markBlocked, i as getActionableAutoMerge, j as listUatGenerationsSync, k as insertUatGenerationSync, l as isFlywheelGloballyPaused, m as listProblemAutoMerges, n as countActionableAutoMerges, o as getAllMergeSetsFromDb, p as listDuePendingAutoMerges, r as deleteMergeSet, s as getMergeSetFromDb, t as cancelPending, u as isMergeTrainEnabled, v as markMergingBlocked, w as scheduleAutoMergeWithResult, x as requeueOrphanedMergingAutoMerges, y as patchMergeSetRepo } from "./merge-sync-CJpOa0cZ.js";
1
+ import { A as listUatGenerationNamesSync, C as resetProcessingToQueued, D as getUatGenerationSync, E as upsertMergeSet, F as updateUatGenerationStatusSync, I as updateUatGenerationSync, M as listUatGenerationsWithStacksSync, N as markUatGenerationRepoPromotedSync, O as hasUncleanedTerminalUatGenerationSync, P as setUatGenerationStackStartedAtSync, S as requeueToPending, T as transitionToMerging, _ as markMerged, a as getAllActiveQueues, b as patchMergeSetRepos, c as init_merge_sync, d as isMergeTrainEnabledForProject, f as listActiveAutoMerges, g as markFailed, h as markBlocked, i as getActionableAutoMerge, j as listUatGenerationsSync, k as insertUatGenerationSync, l as isFlywheelGloballyPaused, m as listProblemAutoMerges, n as countActionableAutoMerges, o as getAllMergeSetsFromDb, p as listDuePendingAutoMerges, r as deleteMergeSet, s as getMergeSetFromDb, t as cancelPending, u as isMergeTrainEnabled, v as markMergingBlocked, w as scheduleAutoMergeWithResult, x as requeueOrphanedMergingAutoMerges, y as patchMergeSetRepo } from "./merge-sync-YLvOPAry.js";
2
2
  init_merge_sync();
3
3
  export { cancelPending, countActionableAutoMerges, deleteMergeSet, getActionableAutoMerge, getAllActiveQueues, getAllMergeSetsFromDb, getMergeSetFromDb, getUatGenerationSync, hasUncleanedTerminalUatGenerationSync, insertUatGenerationSync, isFlywheelGloballyPaused, isMergeTrainEnabled, isMergeTrainEnabledForProject, listActiveAutoMerges, listDuePendingAutoMerges, listProblemAutoMerges, listUatGenerationNamesSync, listUatGenerationsSync, listUatGenerationsWithStacksSync, markBlocked, markFailed, markMerged, markMergingBlocked, markUatGenerationRepoPromotedSync, patchMergeSetRepo, patchMergeSetRepos, requeueOrphanedMergingAutoMerges, requeueToPending, resetProcessingToQueued, scheduleAutoMergeWithResult, setUatGenerationStackStartedAtSync, transitionToMerging, updateUatGenerationStatusSync, updateUatGenerationSync, upsertMergeSet };