@overdeck/desktop 0.49.1 → 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 (545) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-B_maCGZv.js} +2 -2
  4. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-CCqpFWiz.js} +2 -2
  5. package/server/activity-logger-B0X2JJwM.js +3 -0
  6. package/server/{activity-logger-BAVLrkR7.js → activity-logger-SlTXYCVf.js} +22 -4
  7. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-BJAfiY-C.js} +12 -7
  8. package/server/{agent-gc-5E0lgxI1.js → agent-gc-bhikjoJ_.js} +11 -11
  9. package/server/agent-idle-D-UQ7gDv.js +745 -0
  10. package/server/agent-state-BrUPf_7Z.js +3 -0
  11. package/server/{agent-state-Bb3UUxQm.js → agent-state-FABw8neJ.js} +682 -454
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-BAQApt97.js} +1 -1
  13. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-rDenYSlD.js} +5 -5
  14. package/server/agents-DixZjXWm.js +3 -0
  15. package/server/{agents-CqQJW75N.js → agents-DzpQidT8.js} +8 -8
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-BL1ABtW0.js} +20 -135
  17. package/server/archive-planning-D3gw32U9.js +2 -0
  18. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Cjdme0jS.js} +3 -3
  19. package/server/{assemble-DyTp2gSB.js → assemble-B_JgnCbG.js} +28 -9
  20. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-BesWchEi.js} +8 -7
  21. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-COLq639j.js} +3 -3
  22. package/server/{behavior-Bitko0mD.js → behavior-DCg8CIWC.js} +3 -3
  23. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-BDohuMRt.js} +2 -2
  24. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-ENa_hW_V.js} +2 -2
  25. package/server/build-info-Dx2qrVhb.js +2 -0
  26. package/server/{build-info-DTX8JwVP.js → build-info-WuZT6xyi.js} +3 -3
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-CSZ7aVQF.js} +26 -9
  28. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-DXhGRvg4.js} +1 -1
  29. package/server/checkpoint-worker.js +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-DUkUsPVS.js} +2 -2
  31. package/server/{checkpoints-DRALkfDS.js → checkpoints-tm_w6Y4V.js} +1 -1
  32. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-CTh9zxEi.js} +1 -1
  33. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-fRofvhTN.js} +2 -2
  34. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-DLrb9ovz.js} +18 -3
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-BYnXaTVc.js} +2 -2
  36. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-CMS5Jab5.js} +1 -1
  37. package/server/cli-BflmtEFM.js +2 -0
  38. package/server/{cli-Do8UpLoI.js → cli-CoQou1t_.js} +11 -11
  39. package/server/{cliproxy-CX6jHRDP.js → cliproxy-DXDQcR3I.js} +52 -17
  40. package/server/cliproxy-DdhFpcXU.js +3 -0
  41. package/server/{close-issue-J0_eWYT1.js → close-issue-CpQ0BWg-.js} +5 -5
  42. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-CdcJRvUx.js} +13 -12
  43. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-TymtZM37.js} +1 -1
  44. package/server/{codex-icapA4om.js → codex-BValsmtK.js} +1 -1
  45. package/server/{codex-OOea7lXs.js → codex-DYyZL8JD.js} +16 -10
  46. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-CVjbdGKt.js} +3 -3
  47. package/server/{config-Cjleh3_U.js → config-CvKH7r7W.js} +1 -1
  48. package/server/{config-tucKBCCc.js → config-NxI9Yl2f.js} +2 -2
  49. package/server/{config-DC75T4Mr.js → config-_qaa1UXH.js} +2 -2
  50. package/server/{config-yaml-BwOEANMr.js → config-yaml-D60AnTIu.js} +55 -15
  51. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-0dD1kxjN.js} +1 -1
  52. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-hAUCL-un.js} +5 -5
  53. package/server/{context-layers-CSPGc2Hb.js → context-layers-CdpabJj0.js} +3 -3
  54. package/server/context-layers-Ds1MnEFI.js +4 -0
  55. package/server/{continue-U3Af0jUq.js → continue-CnvrUfxw.js} +3 -3
  56. package/server/{control-settings-5k6ixdFW.js → control-settings-Db0uXgVM.js} +310 -7
  57. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-B-1KETG9.js} +8 -8
  58. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzMXGRiJ.js} +1 -1
  59. package/server/{conversation-service-BxrB5lUT.js → conversation-service-BL-asWPX.js} +1 -1
  60. package/server/{conversation-service-BteE4ELK.js → conversation-service-BxIOd5ay.js} +21 -7
  61. package/server/conversations-CEMfwMt-.js +3 -0
  62. package/server/{conversations-DhwxsOru.js → conversations-nS6QgYpD.js} +12 -7
  63. package/server/cost-3FyqKK56.js +838 -0
  64. package/server/{cost-Bnf9NUC5.js → cost-Cctc-Q9M.js} +3 -3
  65. package/server/{cost-CQKI6OCu.js → cost-DTuIRE4y.js} +2 -2
  66. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DfmvLT9L.js} +3 -3
  67. package/server/{dag-DI9LaK_q.js → dag-o-dUpw1L.js} +6 -19
  68. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
  69. package/server/dashboard-db-worker.js +61 -11
  70. package/server/{deacon-TPYssFYt.js → deacon-CsisLmPt.js} +1735 -172
  71. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-DkdkQS5p.js} +3 -3
  72. package/server/deacon-e6py3jkM.js +4 -0
  73. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BCjHiGAY.js} +1 -1
  74. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-CMQswEHX.js} +2 -2
  75. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
  76. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BzaE76Xo.js} +3 -3
  77. package/server/deacon.js +11 -11
  78. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-Bs3hxIn6.js} +3 -3
  79. package/server/dead-end-trip-DUbiRMtT.js +2 -0
  80. package/server/delivery-DhZGRShH.js +3 -0
  81. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-B8sKkA8h.js} +8 -8
  82. package/server/deploy-queue--smqHLhe.js +2 -0
  83. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-CCGWXFkp.js} +2 -2
  84. package/server/{deploy-window-CNT6fOff.js → deploy-window-YuJewzmC.js} +4 -4
  85. package/server/{deploy-window-BMk5_oX6.js → deploy-window-hgsvZ3UZ.js} +1 -1
  86. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-4SBloJHV.js} +2 -2
  87. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-BiJhwFNi.js} +3 -3
  88. package/server/{dist-CPTO_zMR.js → dist-CoR2sivG.js} +1 -1
  89. package/server/dist-FHv1s5ez.js +3 -0
  90. package/server/{docker-B7qUZptz.js → docker-CWO7dcIP.js} +3 -3
  91. package/server/{docker-KR3zSFKY.js → docker-DQzyMXkd.js} +1 -1
  92. package/server/{dod-gK835UMf.js → dod-BAk5arLF.js} +1 -1
  93. package/server/{done-preflight-CksRvh49.js → done-preflight-CGFA0M1b.js} +1 -1
  94. package/server/{done-preflight-Bk8aExAL.js → done-preflight-Cx9JGznT.js} +5 -5
  95. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  96. package/server/durable-review-pipeline-BOEZ0chh.js +3 -0
  97. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-Djx_lvFd.js} +11 -2
  98. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-Dk6ZMOUC.js} +1 -1
  99. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-DzYBBwnM.js} +4 -4
  100. package/server/{esm-shims-1htPASWs.js → esm-shims-deFq5Hhl.js} +1 -1
  101. package/server/{event-store-BgEjNsvk.js → event-store-C50Qt-f1.js} +1 -1
  102. package/server/{event-store-D7qcJXuZ.js → event-store-DTns2XZP.js} +5 -5
  103. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-Bu1Qrg6v.js} +1 -1
  104. package/server/{events-BIKGJZOT.js → events-B6xW8Cpm.js} +3 -3
  105. package/server/{dist-src-BM9eudEd.js → factory-CWVKwKFE.js} +714 -2
  106. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-vaxRN3WO.js} +3 -3
  107. package/server/{features-CGopJXdU.js → features-DXWwktJB.js} +2 -2
  108. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-CXAYe2rU.js} +2 -2
  109. package/server/{feedback-target-CkyLYohm.js → feedback-target-DSVpi0gT.js} +1 -1
  110. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-yPD_wclF.js} +10 -10
  111. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-BzN4qvaP.js} +1 -1
  112. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-Ds1Wjsz4.js} +5 -5
  113. package/server/{flywheel-DXI_WITn.js → flywheel-BCZS-FlW.js} +1 -1
  114. package/server/{flywheel-BwYPDlhK.js → flywheel-CC4gE_rx.js} +15 -15
  115. package/server/{flywheel-C7yek87O.js → flywheel-DWKd7bMc.js} +79 -29
  116. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-DDT3i57u.js} +1 -1
  117. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-DJwH2KpL.js} +17 -15
  118. package/server/forge-4VVCRcF7.js +2 -0
  119. package/server/{forge-DYX9sKzG.js → forge-CHADjOFs.js} +2 -2
  120. package/server/{from-DAdMxC29.js → from-C3dzmjSO.js} +1 -1
  121. package/server/{fs-lock-cw25uO_E.js → fs-lock-DQ_gUxfq.js} +2 -2
  122. package/server/{fts-operations-D_rzLxX5.js → fts-operations-asZo2fh1.js} +3 -3
  123. package/server/git-info-DMOSfJ9I.js +148 -0
  124. package/server/{git-utils-Y0zG25ez.js → git-utils-BAMwn9Nf.js} +1 -1
  125. package/server/{git-utils-DV4B9TRl.js → git-utils-BdHk8y7g.js} +4 -4
  126. package/server/{github-app-C33lDk9Z.js → github-app-BWziYCf3.js} +1 -1
  127. package/server/{github-app-4UX8VIr8.js → github-app-BlMSzSTw.js} +2 -2
  128. package/server/{github-client-nPj5ckZO.js → github-client-OK24qpol.js} +1 -1
  129. package/server/{github-client-DkJVR908.js → github-client-w6j5nVlz.js} +3 -3
  130. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-bGcsEvLE.js} +2 -2
  131. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-DChiynaB.js} +2 -2
  132. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-BplBEbwn.js} +4 -4
  133. package/server/{health-events-jMfxrElt.js → health-events-BTqsmunw.js} +1 -1
  134. package/server/{health-events-DlX_FVAB.js → health-events-Bk3LjaJ9.js} +2 -2
  135. package/server/{hooks-NQ19vvlB.js → hooks-DJR1yR9w.js} +2 -2
  136. package/server/{hooks-W3REcb3h.js → hooks-EndRNrx9.js} +1 -1
  137. package/server/{hume-BFkid2PO.js → hume-1FJmNDTq.js} +2 -2
  138. package/server/hume-gXLmRhmN.js +3 -0
  139. package/server/{identity-Bwh6VGeL.js → identity-C3s8lyp0.js} +3 -3
  140. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-CBelVOE3.js} +1 -1
  141. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-DtoI4al6.js} +4 -4
  142. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-B7khcBdQ.js} +1 -1
  143. package/server/{infra-KTp9KV9u.js → infra-CJRi_5Wu.js} +36 -7
  144. package/server/{injection-67YyU6SC.js → injection-ADWQ3D0s.js} +8 -8
  145. package/server/{injection-BxbZKPDh.js → injection-BWsgHvrL.js} +1 -1
  146. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-CCfNJjKr.js} +12 -12
  147. package/server/inspect-agent-Dhp3hCGp.js +2 -0
  148. package/server/{internal-token-B-z-sGBH.js → internal-token-BCTEqUCX.js} +1 -1
  149. package/server/{internal-token-zY75jrRJ.js → internal-token-BeIWG_kT.js} +2 -2
  150. package/server/{io-DfvO2xyh.js → io-BCtZoXHo.js} +5 -5
  151. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-CiYAa6bX.js} +7 -7
  152. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-BETNVVLq.js} +206 -29
  153. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DaKN57sx.js} +1 -1
  154. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-1Q0ER8Yc.js} +1 -1
  155. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-C_sZ0HjP.js} +124 -11
  156. package/server/issue-title-fallback-B91iD66g.js +120 -0
  157. package/server/{issues-CkvUoAnq.js → issues-RGHQUKhB.js} +2 -2
  158. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-Dfs1dlYE.js} +3 -3
  159. package/server/jsonl-resolver-bFtftCDd.js +324 -0
  160. package/server/{kimi-code-DoMoGqIu.js → kimi-code-BxkDgaj4.js} +1 -1
  161. package/server/{kimi-code-C26gmGxM.js → kimi-code-CNYRA8Dd.js} +14 -12
  162. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-OcWwmOqF.js} +2 -2
  163. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-CefxK9tL.js} +3 -3
  164. package/server/{lifecycle-B0rL38D3.js → lifecycle-DDZ7w-BY.js} +6 -6
  165. package/server/{lifecycle-Bg44O-9x.js → lifecycle-DVXyUil2.js} +2 -2
  166. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-D1oBiMce.js} +1 -1
  167. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-D7N0vQNj.js} +5 -5
  168. package/server/{linear-client-B0cIkTs4.js → linear-client-DUN7zCeb.js} +3 -3
  169. package/server/{linear-client-6V2E-DSa.js → linear-client-TL32snOy.js} +1 -1
  170. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-CtRKSHy5.js} +1 -1
  171. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-bB0CPyjh.js} +5 -5
  172. package/server/memory-fts-worker.js +1 -1
  173. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cvv_9K0M.js} +88 -22
  174. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-C6DJJQRA.js} +38 -14
  175. package/server/{merge-BGWcBxku.js → merge-DOCR6pHi.js} +1 -1
  176. package/server/{merge-vz80RvSE.js → merge-FTk4LsnM.js} +3 -3
  177. package/server/{merge-agent-GWhmnxFk.js → merge-agent-C-dsN9se.js} +37 -33
  178. package/server/{merge-agent-BRSz26Oh.js → merge-agent-D-4_iQgy.js} +2 -2
  179. package/server/{merge-batch-CFMEtTxv.js → merge-batch-BJjzUUL7.js} +1 -1
  180. package/server/{merge-completeness-CP347umA.js → merge-completeness-BOtBUwTU.js} +4 -4
  181. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-CoLJxfUY.js} +1 -1
  182. package/server/merge-eligibility-C4rTS97F.js +3 -0
  183. package/server/merge-eligibility-D7wRnJbj.js +51 -0
  184. package/server/merge-ops-Cf02szJ5.js +2 -0
  185. package/server/merge-rebase-Bj7eJAG4.js +2 -0
  186. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-KBw4rdh3.js} +2 -2
  187. package/server/{merge-set-DsGW8fmc.js → merge-set-CVfEM57p.js} +1 -1
  188. package/server/{merge-set-eiE2nC6C.js → merge-set-CyW-xSn4.js} +4 -4
  189. package/server/{merge-sync-CM2-myXu.js → merge-sync-CYGsJy0u.js} +1 -1
  190. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-YLvOPAry.js} +2 -2
  191. package/server/{merge-train-BOu3fN7O.js → merge-train-VxLn8Ms4.js} +4 -4
  192. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-D0y4hBB9.js} +4 -4
  193. package/server/{merge-verification-BRp08IzI.js → merge-verification-BfJRNMiD.js} +6 -6
  194. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-Bh5fKG_b.js} +4 -4
  195. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-Ci9oeFAe.js} +1 -1
  196. package/server/messaging-Dfbhgjd6.js +3 -0
  197. package/server/{multipart-parser-OAuW7824.js → multipart-parser-BYwfKOVU.js} +2 -2
  198. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-DjMQRkId.js} +1 -1
  199. package/server/node_modules/.package-lock.json +24 -24
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +31 -5
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  226. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  227. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  228. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  229. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  230. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  231. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +7 -7
  232. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  233. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
  234. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
  235. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  236. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  237. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  238. package/server/node_modules/@types/node/README.md +1 -1
  239. package/server/node_modules/@types/node/buffer.buffer.d.ts +5 -5
  240. package/server/node_modules/@types/node/crypto.d.ts +2 -2
  241. package/server/node_modules/@types/node/http.d.ts +16 -0
  242. package/server/node_modules/@types/node/http2.d.ts +10 -2
  243. package/server/node_modules/@types/node/package.json +2 -2
  244. package/server/node_modules/@types/node/process.d.ts +52 -0
  245. package/server/node_modules/@types/node/quic.d.ts +210 -28
  246. package/server/node_modules/@types/node/sqlite.d.ts +6 -2
  247. package/server/node_modules/@types/node/test.d.ts +36 -0
  248. package/server/node_modules/ansi-regex/index.js +3 -2
  249. package/server/node_modules/ansi-regex/package.json +1 -1
  250. package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
  251. package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
  252. package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
  253. package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
  254. package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
  255. package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
  256. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  257. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  258. package/server/node_modules/gaxios/package.json +3 -3
  259. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +11 -5
  260. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  261. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  262. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  263. package/server/node_modules/msgpackr/dist/index.js +11 -5
  264. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  265. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  266. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  267. package/server/node_modules/msgpackr/dist/node.cjs +11 -5
  268. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  269. package/server/node_modules/msgpackr/dist/test.js +11 -5
  270. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  271. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
  272. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  273. package/server/node_modules/msgpackr/package.json +1 -1
  274. package/server/node_modules/msgpackr/unpack.js +11 -5
  275. package/server/node_modules/picomatch/lib/parse.js +10 -1
  276. package/server/node_modules/picomatch/lib/scan.js +30 -18
  277. package/server/node_modules/picomatch/package.json +1 -1
  278. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-CnP0K2v3.js} +2 -2
  279. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-nFUlquZt.js} +24 -23
  280. package/server/package-lock.json +25 -25
  281. package/server/package.json +1 -1
  282. package/server/{pan-dir-DDd91kMb.js → pan-dir-B4NfzOf3.js} +5 -5
  283. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-8WbU0y1z.js} +188 -69
  284. package/server/{paths-CRLnDgcI.js → paths-rETQhTF2.js} +2 -2
  285. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-yAwDuGS4.js} +2 -2
  286. package/server/{pickup-BjJsSX12.js → pickup-Dle6k9Xt.js} +1 -1
  287. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-CeWhQzXC.js} +5 -5
  288. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-BV4hdkHm.js} +1 -1
  289. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-C9ykcjsn.js} +1 -1
  290. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-Ba0wJNCR.js} +17 -12
  291. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-C9E22B2W.js} +1 -1
  292. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-B5DPXvnr.js} +1 -1
  293. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-p190L97e.js} +2 -2
  294. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-OQoK8Ckg.js} +3 -3
  295. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DFaf7OI1.js} +4 -4
  296. package/server/prd-locations-F2oLSAhy.js +124 -0
  297. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-CUsa6U59.js} +2 -2
  298. package/server/project-repos-BVdi9-ch.js +3 -0
  299. package/server/{project-repos-B4MK48j4.js → project-repos-CsfvLtmr.js} +29 -3
  300. package/server/project-resource-refresh-queue-BehrH4Ai.js +865 -0
  301. package/server/project-resource-refresh-queue-D2110Guc.js +2 -0
  302. package/server/{projects-DvPEAP18.js → projects-BMuEf14J.js} +1 -1
  303. package/server/{prompts-BiS5I2tZ.js → prompts-CKpDt8Jn.js} +2 -2
  304. package/server/providers-Buv2wmFU.js +3 -0
  305. package/server/{providers-DrfK0Ip8.js → providers-CxPKmyif.js} +7 -7
  306. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-DZOQVqV1.js} +4 -4
  307. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-oKeXcbO1.js} +1 -1
  308. package/server/public/assets/{dist-CSmUXazd.js → dist-2qPmeRzT.js} +3 -3
  309. package/server/public/assets/{dist-D0ryefak.js → dist-ClBlE-Nm.js} +1 -1
  310. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-BwdG9fQv.js} +1 -1
  311. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-BzGNdskQ.js} +1 -1
  312. package/server/public/assets/index-CdPveU3M.css +1 -0
  313. package/server/public/assets/index-Cg6tdZoY.js +860 -0
  314. package/server/public/assets/{linear-BPE7oswm.js → linear-DpEt1TJb.js} +1 -1
  315. package/server/public/assets/mermaid-GHXKKRXX-6KBD_3T_.js +1 -0
  316. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-9BpM4oRJ.js} +1 -1
  317. package/server/public/assets/{prod-aKDYUrXQ.js → prod-CzJiNNEG.js} +4 -4
  318. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BXWVAoZx.js} +1 -1
  319. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-5oxodGEw.js} +1 -1
  320. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-BChDrHxZ.js} +1 -1
  321. package/server/public/index.html +2 -2
  322. package/server/pull-requests-CmlandI7.js +2 -0
  323. package/server/{pull-requests-BcHIsFJv.js → pull-requests-T0OV0Vn4.js} +3 -3
  324. package/server/{rally-B1OMtzch.js → rally-CUqj2oIN.js} +3 -3
  325. package/server/rally-DYIn9R2U.js +3 -0
  326. package/server/{rally-api-ShZ4kvn0.js → rally-api-BFPb2oSq.js} +2 -2
  327. package/server/{rally-api-u_vkr5c_.js → rally-api-BoucQG1u.js} +1 -1
  328. package/server/{rally-client-D6Feq1Ka.js → rally-client-16iObny7.js} +5 -5
  329. package/server/{rally-client-DgZvUZqX.js → rally-client-CsqLjLLa.js} +1 -1
  330. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  331. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  332. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-BcBVFJp3.js} +2 -2
  333. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-CyXMrj6K.js} +7 -7
  334. package/server/reconciler-caYiRnPy.js +657 -0
  335. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-3JzPOune.js} +7 -7
  336. package/server/{record-By-wp6pg.js → record-DYOg97Iv.js} +1 -1
  337. package/server/{record-update-D23jPU6b.js → record-update-BPqpBu3O.js} +9 -7
  338. package/server/{record-update-ByGtIlUK.js → record-update-CDPEX7BH.js} +1 -1
  339. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-CpfW6LCJ.js} +43 -10
  340. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-xqKC07Gy.js} +1 -1
  341. package/server/{release-engine-Crc0Tjx-.js → release-engine-C_OOhCaK.js} +5 -5
  342. package/server/{release-set-DDXwbIK7.js → release-set-DOIDz2vw.js} +3 -3
  343. package/server/{remote-oEMfXlwT.js → remote-BTh-sjpX.js} +3 -3
  344. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-DbbN7vSm.js} +6 -6
  345. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-MuXx2gWm.js} +1 -1
  346. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-LcWCpAm2.js} +13 -13
  347. package/server/{remote-CBpLi4Yy.js → remote-xY0B43Ho.js} +3 -3
  348. package/server/{resolver-CuAULbLs.js → resolver-C2QKOf09.js} +2 -2
  349. package/server/{resolver-C8rooxoz.js → resolver-D4nsxfGo.js} +31 -8
  350. package/server/resume-ByUrJUNX.js +3 -0
  351. package/server/{review-agent-7C2w5CzU.js → review-agent-BRBTm1qE.js} +43 -55
  352. package/server/review-agent-Caodi0PX.js +3 -0
  353. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DgaDlbO4.js} +6 -6
  354. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-BBvyuRLC.js} +20 -11
  355. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DCzWMMvE.js} +1 -1
  356. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-THHMKlXJ.js} +3 -3
  357. package/server/{review-status-CUnjjOUu.js → review-status-Bge_3XTR.js} +1 -1
  358. package/server/{review-status-DBnR5t4z.js → review-status-DpniqzPT.js} +113 -44
  359. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-D7sM720S.js} +3 -3
  360. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-PDI4-faj.js} +3 -3
  361. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  362. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  363. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-C6ZKTI8f.js} +11 -8
  364. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-CvpHWyvR.js} +1 -1
  365. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-B2ojHFH5.js} +8 -8
  366. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-tyMoLT2L.js} +1 -1
  367. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Cy_1pnIj.js} +7 -7
  368. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-DjrJ64eS.js} +1 -1
  369. package/server/{rollup-DZwH4CLs.js → rollup-Cp0KEoOu.js} +1 -1
  370. package/server/{rollup-QCwYcBdP.js → rollup-DU3xBQu2.js} +8 -8
  371. package/server/{scanner-2aHeLC3W.js → scanner-BFKG3Gxv.js} +8 -8
  372. package/server/{search-DwHYaj66.js → search-DhtKwbBC.js} +2 -2
  373. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  374. package/server/{sequence-io-POKWdusG.js → sequence-io-C-Q19Jez.js} +4 -4
  375. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-eN2P2lDz.js} +6 -6
  376. package/server/server.js +1499 -1350
  377. package/server/{service-BLb_CyPL.js → service-CThO0Sar.js} +80 -774
  378. package/server/{session-fork-DcTzVwex.js → session-fork-ZYTHtpBh.js} +2 -2
  379. package/server/settings-ByDRfuuE.js +2 -0
  380. package/server/{settings-Clw8UVNs.js → settings-CTywpFw5.js} +2 -2
  381. package/server/{settings-B9-H2K_E.js → settings-nAT-eK56.js} +3 -3
  382. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BHZKPJhq.js} +3 -3
  383. package/server/{shadow-state-CEGrrECe.js → shadow-state-BTLi4Axs.js} +2 -2
  384. package/server/{shadow-state-e7250VUx.js → shadow-state-CZ_LnPsi.js} +1 -1
  385. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-CPLlPHdn.js} +2 -2
  386. package/server/{ship-log-7BnQHuKU.js → ship-log-D-CphNZx.js} +1 -1
  387. package/server/{ship-record-CwUX6Afo.js → ship-record-BaBla0l_.js} +7 -7
  388. package/server/{ship-record-BgUPnpT0.js → ship-record-BlvX8-xv.js} +1 -1
  389. package/server/{ship-status-Ce3_3edi.js → ship-status-rQbPQBsF.js} +2 -2
  390. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-CUXn8mfX.js} +1 -1
  391. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D1CNGdZx.js} +7 -7
  392. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-DCmO6COk.js} +19 -19
  393. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-DfEWyrVV.js} +2 -2
  394. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-BMv3K54P.js} +1 -1
  395. package/server/{specialist-context-cHwpcXSh.js → specialist-context-C1-CfYQb.js} +5 -5
  396. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-BDKoz5Z9.js} +2 -2
  397. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-BJQFkpdG.js} +3 -3
  398. package/server/specialists-CYt1U3Zm.js +4 -0
  399. package/server/{specialists-8LcQi9Np.js → specialists-D6MUU31Q.js} +21 -272
  400. package/server/{specialists-DocAK-7A.js → specialists-DhS79T9v.js} +369 -691
  401. package/server/{specialists-xXcJHAyg.js → specialists-Dx0zRTxX.js} +1 -1
  402. package/server/specialists-registry-BRLCi61y.js +3 -0
  403. package/server/specialists-registry-Bng0OFGH.js +277 -0
  404. package/server/specs-oRGyfz6C.js +3 -0
  405. package/server/{src-C2TAxwki.js → src-C7gGe4KU.js} +6 -6
  406. package/server/{src-DudQNYVw.js → src-CdwN6WY6.js} +344 -7
  407. package/server/{src-DUVvEA8Q.js → src-DMosbuSJ.js} +3 -3
  408. package/server/{stack-health-DKT4ySnA.js → stack-health-BKfNaqMm.js} +3 -3
  409. package/server/{stack-health-CbyiYS9H.js → stack-health-Bz711z1Y.js} +1 -1
  410. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-DMRLb5R2.js} +5 -5
  411. package/server/{staleness-D8UTEXV5.js → staleness-CxZaIhrn.js} +1 -1
  412. package/server/{staleness-BjOAq9-d.js → staleness-r_dkMyMG.js} +1 -1
  413. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-CBWqSWV2.js} +8 -8
  414. package/server/{state-home-DhAZlk5k.js → state-home-DhsMqg8W.js} +2 -2
  415. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  416. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C2Ouyd6e.js} +6 -6
  417. package/server/{state-mirror-Do7pag7W.js → state-mirror-BPXciz84.js} +3 -3
  418. package/server/stuck-remediation-DALieAkx.js +2 -0
  419. package/server/stuck-remediation-kta3KN7c.js +774 -0
  420. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-D_ICP7TI.js} +3 -3
  421. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-CojrFKb6.js} +2 -2
  422. package/server/{summary-fork-CZ88rhVx.js → summary-fork-DhhaFhxZ.js} +113 -30
  423. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  424. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  425. package/server/supervisor/pty-supervisor.js +3 -3
  426. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  427. package/server/supervisor-DSSWo4M2.js +2 -0
  428. package/server/{supervisor-D4v0WfiQ.js → supervisor-DqH-laVL.js} +4 -4
  429. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-LF8ZF_hc.js} +3 -3
  430. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-CGFF8uQI.js} +2 -2
  431. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-DSoOFUIV.js} +1 -1
  432. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-Lsx0jUUV.js} +2 -2
  433. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-DMwomEG1.js} +16 -16
  434. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-Cu0D6BYe.js} +6 -6
  435. package/server/{test-verdict-BWm3hgDj.js → test-verdict-9mvl7pQn.js} +1 -1
  436. package/server/{test-verdict-BWtRmdiR.js → test-verdict-oNSv1rVr.js} +2 -2
  437. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-CRSAkhBx.js} +1 -1
  438. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-McqCk2X7.js} +2 -2
  439. package/server/tmux-CYucGrTl.js +4 -0
  440. package/server/{tmux-BqXzRuaH.js → tmux-wnT_hg-s.js} +91 -19
  441. package/server/{token-CO3INKbh.js → token-BdfZLRg1.js} +2 -2
  442. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  443. package/server/token-util-DfUS3Lpp.js +3 -0
  444. package/server/{tracker-config-DVzhaUxO.js → tracker-config-tfAOWgng.js} +2 -2
  445. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-Dbg_pVZg.js} +2 -2
  446. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-DoQvQ6oJ.js} +1 -1
  447. package/server/{tunnel-DauSR-rs.js → tunnel-B1MNIgkL.js} +1 -1
  448. package/server/{tunnel-CwOnS-PB.js → tunnel-skW68j9B.js} +3 -3
  449. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  450. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  451. package/server/{types-DjpLVpsj.js → types-PW4zkxCM.js} +1 -1
  452. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  453. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-ly8ZwtfC.js} +5 -5
  454. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-BBaMwfdc.js} +5 -5
  455. package/server/{uat-train-DVUNW03P.js → uat-train-BBEiYSep.js} +0 -0
  456. package/server/{uat-train-COSy-vEX.js → uat-train-D7Ran2FB.js} +1 -1
  457. package/server/{validate-Dvv83iBx.js → validate-BYcBcBwg.js} +3 -3
  458. package/server/{validation-DlHafKzu.js → validation-BfG2jW5C.js} +9 -6
  459. package/server/{validation-BdCjzWLN.js → validation-nSrYiYvA.js} +1 -1
  460. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-Cmhgq4b_.js} +1 -1
  461. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-DglwaHke.js} +1 -1
  462. package/server/{verification-runner-DwP2fUEF.js → verification-runner-BEq5ZF-h.js} +53 -27
  463. package/server/{verification-runner-C6wdZda2.js → verification-runner-CFjAuv9u.js} +1 -1
  464. package/server/{vtt-parser-luerJpYT.js → vtt-parser-Va--tv27.js} +1 -1
  465. package/server/work-agent-prompt-BnhKNAg7.js +3 -0
  466. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CaD2ue8m.js} +14 -14
  467. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-0nJ-6UeA.js} +2 -2
  468. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-D8NEN5KD.js} +1 -1
  469. package/server/workflows-BtHRlFIm.js +2 -0
  470. package/server/{workflows-BYwR2aIN.js → workflows-C7mxM1qc.js} +114 -41
  471. package/server/{workspace-iTnTycOB.js → workspace-BAhMgMaO.js} +3 -3
  472. package/server/{workspace-B-QJa3Ps.js → workspace-Dbqv9ehn.js} +1 -1
  473. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-B_3kyyxJ.js} +4 -4
  474. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-Bpa3xoni.js} +1 -1
  475. package/server/{workspace-config-D0CavVtz.js → workspace-config-D-bNq2CF.js} +1 -1
  476. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-BrbX90Rm.js} +1 -1
  477. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CM8RCrSc.js} +17 -17
  478. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BEOwJSdK.js} +1 -1
  479. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-Cu6yfxBS.js} +2 -2
  480. package/server/{workspaces-BlpbOPZ7.js → workspaces-C7LAuZfe.js} +140 -709
  481. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  482. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  483. package/sync-sources/rules/agent-message-delivery.md +21 -14
  484. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  485. package/sync-sources/rules/pan-handoff-focus-limit.md +14 -5
  486. package/sync-sources/rules/ste-writing.md +17 -0
  487. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  488. package/sync-sources/rules/writing-style.md +3 -2
  489. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  490. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  491. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  492. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +230 -0
  493. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  494. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  495. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  496. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  497. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  498. package/sync-sources/skills/pan-handoff/SKILL.md +24 -6
  499. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  500. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  501. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  502. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  503. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  504. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  505. package/server/activity-logger-BejO16Am.js +0 -3
  506. package/server/agent-state-DH_-Jkua.js +0 -3
  507. package/server/agents-megfmQHM.js +0 -3
  508. package/server/archive-planning-C-H9cM_J.js +0 -2
  509. package/server/build-info-PQlh_Rhb.js +0 -2
  510. package/server/cli-TaZspPHS.js +0 -2
  511. package/server/cliproxy-36ncAXlu.js +0 -3
  512. package/server/context-layers-CF6zHws4.js +0 -4
  513. package/server/conversations-AnGJ5rtX.js +0 -3
  514. package/server/deacon-BEH-IY0v.js +0 -5
  515. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  516. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  517. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  518. package/server/delivery-cJM6zRjJ.js +0 -3
  519. package/server/deploy-queue-CmVBZEja.js +0 -2
  520. package/server/dist-VKBfkdi7.js +0 -3
  521. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  522. package/server/factory-D4V2wd_V.js +0 -717
  523. package/server/forge-CrP1L3i6.js +0 -2
  524. package/server/hume-1ubD_6O7.js +0 -3
  525. package/server/inspect-agent-CfxERkNt.js +0 -2
  526. package/server/merge-ops-DtHx17Vd.js +0 -2
  527. package/server/merge-rebase-BvB4UuNS.js +0 -2
  528. package/server/project-repos-BJiShUsN.js +0 -3
  529. package/server/providers-CStNGwze.js +0 -3
  530. package/server/public/assets/index-BFEwfmqX.js +0 -860
  531. package/server/public/assets/index-_USwyTAT.css +0 -1
  532. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  533. package/server/pull-requests-C1Cqp2yo.js +0 -2
  534. package/server/rally-CjayjUIl.js +0 -3
  535. package/server/resume-D7JuMCRQ.js +0 -3
  536. package/server/review-agent-BUNTVJK2.js +0 -2
  537. package/server/settings-DBWB1gsG.js +0 -2
  538. package/server/specialists-D8gsOCwh.js +0 -3
  539. package/server/specs-BqkrRnU9.js +0 -3
  540. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  541. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  542. package/server/supervisor-DX8VsPnb.js +0 -2
  543. package/server/tmux-CqNapnrr.js +0 -4
  544. package/server/token-util-Bu8bPF9f.js +0 -3
  545. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -1,7 +1,7 @@
1
- import { a as init_event_store, i as initEventStore } from "./event-store-D7qcJXuZ.js";
2
- import { Jn as AmbiguousKeyedDeliveryError, Lt as init_messaging, er as init_delivery, h as init_agent_state, u as getAgentDir, zt as messageAgentWithOutcome } from "./agent-state-Bb3UUxQm.js";
3
- import { _ as init_tmux_dedup, l as KeyedMarkerVerificationError, u as KeyedSubmitTargetDeadError, v as isKeyedSubmitBlockedMenuError } from "./auto-spawn-consent-BDfe4qz0.js";
4
- import { n as createPromiseCoalescer } from "./in-flight-guard-pcwXKLGz.js";
1
+ import { a as init_event_store, i as initEventStore } from "./event-store-DTns2XZP.js";
2
+ import { Ht as init_messaging, Wt as messageAgentWithOutcome, _ as init_agent_state, f as getAgentDir, lr as init_delivery, rr as AmbiguousKeyedDeliveryError } from "./agent-state-FABw8neJ.js";
3
+ import { _ as init_tmux_dedup, l as KeyedMarkerVerificationError, u as KeyedSubmitTargetDeadError, v as isKeyedSubmitBlockedMenuError } from "./auto-spawn-consent-BesWchEi.js";
4
+ import { n as createPromiseCoalescer } from "./in-flight-guard-B7khcBdQ.js";
5
5
  import { join } from "node:path";
6
6
  import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
7
7
  //#region ../../lib/linear-mcp-auth.ts
@@ -276,4 +276,4 @@ function processLinearMcpAuthWake() {
276
276
  //#endregion
277
277
  export { appendLinearMcpAuthHealthyEvent as a, linearMcpAuthEvent as c, appendLinearMcpAuthEvent as i, processLinearMcpAuthWake as l, LINEAR_MCP_AUTH_WAKE_COPY as n, appendLinearMcpAuthNotifiedEvent as o, appendLinearMcpAuthCallbackRelayedEvent as r, computeLinearMcpAuthWakeSet as s, LINEAR_MCP_AUTH_URL_TTL_MS as t, resolveLinearMcpAuthIntervention as u };
278
278
 
279
- //# sourceMappingURL=linear-mcp-auth-Dsu9Io9r.js.map
279
+ //# sourceMappingURL=linear-mcp-auth-bB0CPyjh.js.map
@@ -1,4 +1,4 @@
1
- import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-D_rzLxX5.js";
1
+ import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-asZo2fh1.js";
2
2
  import { parentPort } from "node:worker_threads";
3
3
  //#region ../../lib/memory/fts-worker.ts
4
4
  init_fts_operations();
@@ -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, fn as init_projects, oi as init_errors, p as loadConfigSync, x as DEFAULT_CONFIG } from "./config-yaml-BwOEANMr.js";
3
- import { t as getBuildInfo } from "./build-info-DTX8JwVP.js";
4
- import { t as getDashboardIdentity } from "./identity-Bwh6VGeL.js";
5
- import { h as loadConfigSync$1, p as init_config } from "./config-tucKBCCc.js";
6
- import { a as init_event_store, i as initEventStore } from "./event-store-D7qcJXuZ.js";
7
- import { D as projectLegacySystemHealthSummary, t as init_src } from "./src-DudQNYVw.js";
8
- import { Ai as init_agent_runtime_mirror, An as init_darwin, Dn as LINUX_MEMORY_PRESSURE_DEFAULTS, En as init_collector, G as init_agents, Kn as init_memory_verdict_cache, On as init_linux, Tn as createHostHealthCollector, U as init_runtime_state, V as getAgentRuntimeState, h as init_agent_state, ki as getRuntimeSnapshot, kn as DARWIN_MEMORY_PRESSURE_DEFAULTS, ln as listRunningAgents, qn as setCachedMemoryVerdict, rn as init_termination, sn as init_queries, vn as descendantPidsForSession, xn as init_runtime_census, yn as getRuntimeCensus } from "./agent-state-Bb3UUxQm.js";
9
- import { f as DockerStatsCollector, p as init_docker_stats } from "./stack-health-DKT4ySnA.js";
10
- import { i as readReviewStatusMap, n as init_review_status_source, t as classifyAdvancingSessionLifecycle } from "./review-status-source-Ct912fv_.js";
11
- import { r as init_config$1 } from "./config-DC75T4Mr.js";
12
- import { d as getReviewStatusSync, p as init_review_status } from "./review-status-DBnR5t4z.js";
13
- import { n as __filename, r as init_esm_shims } from "./esm-shims-1htPASWs.js";
14
- import { r as computeBuildStaleness } from "./staleness-D8UTEXV5.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
+ 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-_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-A4O6vI9d.js.map
23176
+ //# sourceMappingURL=memory-governor-Cvv_9K0M.js.map
@@ -1,7 +1,7 @@
1
- import { a as emitActivityEntrySync, c as init_activity_logger } from "./activity-logger-BAVLrkR7.js";
2
- import { _ as logDeaconEventSync, h as init_persistent_logger } from "./agents-CqQJW75N.js";
3
- import { xn as init_runtime_census, yn as getRuntimeCensus } from "./agent-state-Bb3UUxQm.js";
4
- import { i as readGovernorWatchReserveBytes, r as readGovernorReserves, t as assessMemoryPressure } from "./memory-governor-A4O6vI9d.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-BWlWywmA.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-vz80RvSE.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-KTp9KV9u.js";
2
- import { n as init_issues, t as IssueId } from "./issues-CkvUoAnq.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-vz80RvSE.js.map
705
+ //# sourceMappingURL=merge-FTk4LsnM.js.map
@@ -1,15 +1,15 @@
1
- import { Fi as init_paths, Gn as init_issue_id, Xr as GitError, ai as VcsError, bn as loadProjectsConfigSync, fn as init_projects, gi as OVERDECK_HOME, oi as init_errors, p as loadConfigSync, qn as parseIssueIdSync, t as init_config_yaml } from "./config-yaml-BwOEANMr.js";
2
- import { a as emitActivityEntrySync, c as init_activity_logger, o as emitActivityTtsSync } from "./activity-logger-BAVLrkR7.js";
3
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-KTp9KV9u.js";
4
- import { A as listSessionNames, B as sessionExists, L as sendKeys, S as init_tmux, T as killSession, r as capturePane } from "./tmux-BqXzRuaH.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-_Lj3LDLh.js";
6
- import { a as init_git_utils, t as cleanupStaleLocks } from "./git-utils-DV4B9TRl.js";
7
- import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-xnVJVrrO.js";
8
- import { i as init_project_repos, u as resolveWorkspaceRepoRootsSync } from "./project-repos-B4MK48j4.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-DBnR5t4z.js";
10
- import { r as verifyMergedBeforeLifecycle } from "./merge-verification-BRp08IzI.js";
11
- import { t as enqueueMergedDockerCleanup } from "./merged-docker-cleanup-worker-CwldDjHV.js";
12
- import { r as runQualityGates } from "./validation-DlHafKzu.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-PQlh_Rhb.js"), import("./staleness-BjOAq9-d.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-BMk5_oX6.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-CmVBZEja.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-CneJ24eL.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-BqkrRnU9.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-KR3zSFKY.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-X2lWfghH.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,11 +924,15 @@ 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-megfmQHM.js");
928
- const { killSession, sessionExists } = await import("./tmux-CqNapnrr.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
- for (const agentId of [`agent-${issueLower}`, `planning-${issueLower}`]) {
931
+ for (const agentId of [
932
+ `agent-${issueLower}`,
933
+ `planning-${issueLower}`,
934
+ `strike-${issueLower}`
935
+ ]) {
932
936
  if (await Effect.runPromise(setAgentPaused(agentId, reason, true)) === null) continue;
933
937
  let verify = await Effect.runPromise(getAgentState(agentId));
934
938
  if (verify?.paused !== true) {
@@ -950,8 +954,8 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
950
954
  console.warn(`[merge-agent] Could not pause or kill agent sessions: ${err}`);
951
955
  }
952
956
  try {
953
- const { killAllReviewerSessions } = await import("./review-agent-BUNTVJK2.js");
954
- const { resolveProjectFromIssueSync } = await import("./projects-DvPEAP18.js");
957
+ const { killAllReviewerSessions } = await import("./review-agent-Caodi0PX.js");
958
+ const { resolveProjectFromIssueSync } = await import("./projects-BMuEf14J.js");
955
959
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
956
960
  if (projectKey) {
957
961
  const { killed } = await Effect.runPromise(killAllReviewerSessions(projectKey, issueId));
@@ -965,7 +969,7 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
965
969
  }
966
970
  await killPostMergeRoleSessions(issueId);
967
971
  try {
968
- const { createResetMarker } = await import("./cli-TaZspPHS.js");
972
+ const { createResetMarker } = await import("./cli-BflmtEFM.js");
969
973
  const timestamp = (/* @__PURE__ */ new Date()).toISOString();
970
974
  const marker = await createResetMarker({
971
975
  projectId: basename$1(projectPath),
@@ -1003,7 +1007,7 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
1003
1007
  console.log(`[merge-agent] Release already started or completed for ${issueId} (${currentStatus}), skipping`);
1004
1008
  return;
1005
1009
  }
1006
- const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-DvPEAP18.js");
1010
+ const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-BMuEf14J.js");
1007
1011
  const resolved = resolveProjectFromIssueSync(issueId);
1008
1012
  if (!(resolved ? getProjectSync(resolved.projectKey) : null)?.release) {
1009
1013
  setReviewStatusSync(issueId, {
@@ -1013,7 +1017,7 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
1013
1017
  console.log(`[merge-agent] No release config for ${issueId}; marked release skipped`);
1014
1018
  return;
1015
1019
  }
1016
- const { runRelease } = await import("./release-engine-Crc0Tjx-.js");
1020
+ const { runRelease } = await import("./release-engine-C_OOhCaK.js");
1017
1021
  try {
1018
1022
  await runRelease(issueId, projectPath);
1019
1023
  } catch (err) {
@@ -1032,11 +1036,11 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
1032
1036
  async function transitionIssueToVerifyingOnMain(issueId, projectPath) {
1033
1037
  const [effectModule, issueLifecycleModule, githubModule, linearModule, rallyModule, errorsModule] = await Promise.all([
1034
1038
  import("effect"),
1035
- import("./issue-lifecycle-BI6jAfp8.js"),
1036
- import("./github-client-nPj5ckZO.js"),
1037
- import("./linear-client-6V2E-DSa.js"),
1038
- import("./rally-client-DgZvUZqX.js"),
1039
- import("./typed-errors-B-gfU2RB.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
+ import("./typed-errors-CZ3GFBvo.js")
1040
1044
  ]);
1041
1045
  const { Effect, Layer } = effectModule;
1042
1046
  const { IssueLifecycle, IssueLifecycleLive } = issueLifecycleModule;
@@ -1724,4 +1728,4 @@ async function runProjectQualityGates(projectPath, phase) {
1724
1728
  //#endregion
1725
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 };
1726
1730
 
1727
- //# sourceMappingURL=merge-agent-GWhmnxFk.js.map
1731
+ //# sourceMappingURL=merge-agent-C-dsN9se.js.map
@@ -1,3 +1,3 @@
1
- import { i as resetPostMergeState } from "./post-merge-state-_Lj3LDLh.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-GWhmnxFk.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-CFMEtTxv.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-B4MK48j4.js";
2
- import { a as patchMergeSetRepoSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as patchMergeSetReposSync, r as getMergeSetSync } from "./merge-set-eiE2nC6C.js";
3
- import { n as getForgeAdapter } from "./forge-DYX9sKzG.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-CP347umA.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-CP347umA.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 };