@overdeck/desktop 0.45.22 → 0.45.24

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 (429) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +2 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-BH7ac_1G.js → acceptance-criteria-DDCnXF58.js} +5 -5
  4. package/server/{advancing-selfheal-cSvXNZLZ.js → advancing-selfheal-BVwW4qRn.js} +6 -6
  5. package/server/{agent-gc-Dj2gncak.js → agent-gc-CHcnvonI.js} +4 -4
  6. package/server/agent-state-Bc3tzUC8.js +3 -0
  7. package/server/{agent-state-service-DistflNn.js → agent-state-service-BsgWxZuB.js} +5 -5
  8. package/server/{agent-state-service-CsQ07Pxe.js → agent-state-service-D5UGKIJL.js} +1 -1
  9. package/server/{agents-DXdHmRTC.js → agents-EbI0zCJl.js} +4 -4
  10. package/server/agents-wi9NWzs2.js +3 -0
  11. package/server/{archive-planning-Cp_DC1j-.js → archive-planning-BZDgzoEj.js} +1 -1
  12. package/server/{archive-planning-BvDuWNMo.js → archive-planning-Du25Jtst.js} +30 -6
  13. package/server/{artifact-index-jobs-CDBFL4OU.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
  14. package/server/assemble-J2ZZ2C15.js +339 -0
  15. package/server/{backlog-auto-trigger-DmA1IbYf.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
  16. package/server/{behavior-CGj16clS.js → behavior-B3exJ42O.js} +2 -2
  17. package/server/{briefing-freshness-C12WgkaB.js → briefing-freshness-D1wzUIWv.js} +2 -2
  18. package/server/{build-info-BRpqQvNd.js → build-info-CZk_TITh.js} +1 -1
  19. package/server/{build-info-NU3KbXYw.js → build-info-Ie_D0_BT.js} +3 -3
  20. package/server/{checkpoint-manager-CTPjAmtH.js → checkpoint-manager-BI1Wxoku.js} +2 -2
  21. package/server/{checkpoint-manager-rOgT98WY.js → checkpoint-manager-DwbQoqrC.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-B5jFNi2G.js → checkpoints-BJIs5QIA.js} +1 -1
  24. package/server/{checkpoints-BJum14fs.js → checkpoints-CQB1h765.js} +2 -2
  25. package/server/{claude-hooks-provision-BhwWK-TQ.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
  26. package/server/{claude-hooks-provision-D7p5WcKZ.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
  27. package/server/{claude-permissions-nSFKH78M.js → claude-permissions-DNWEVV6z.js} +2 -2
  28. package/server/{claude-settings-overlay-BI_UIke0.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
  29. package/server/{claude-settings-overlay-DHBwjS1X.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
  30. package/server/cli-B86rejVV.js +3 -0
  31. package/server/{cli-CbKNkFE5.js → cli-RoOx5DUf.js} +9 -9
  32. package/server/{cliproxy-Brf_5MuG.js → cliproxy-C8a1vtTU.js} +2 -2
  33. package/server/{cliproxy-bONZDBbC.js → cliproxy-fHfIeiGd.js} +1 -1
  34. package/server/{close-issue-CxReRxIc.js → close-issue-DoOifFIK.js} +5 -5
  35. package/server/{closed-issue-reaper-CQ3kqha7.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
  36. package/server/{closed-issue-reaper-DXP2Xyv3.js → closed-issue-reaper-CktPXo8m.js} +1 -1
  37. package/server/{codex-CbmztVcc.js → codex-BZXGhUVB.js} +27 -8
  38. package/server/codex-GcHuUF-k.js +3 -0
  39. package/server/{codex-parser-jl8AeAmB.js → codex-parser-CFZ1_1Jl.js} +2 -2
  40. package/server/{config-q4Gvd8dq.js → config-BZ0sHTju.js} +2 -2
  41. package/server/{config-DeTsoZdR.js → config-CKxYiCmX.js} +2 -2
  42. package/server/{config-BJKocXKd.js → config-DzV30TOm.js} +1 -1
  43. package/server/{config-yaml-ig8Nwtiw.js → config-yaml-DySPNmKN.js} +77 -194
  44. package/server/{conflict-gate-CFqPVxEg.js → conflict-gate-BaCVrH-N.js} +3 -3
  45. package/server/{conflict-gate-CHU9K1vU.js → conflict-gate-BhAY7TUd.js} +1 -1
  46. package/server/context-layers-BrPmE__h.js +4 -0
  47. package/server/context-layers-igZ4FI4_.js +37 -0
  48. package/server/{control-settings-D_odMIaC.js → control-settings-BQp7_4uD.js} +4 -4
  49. package/server/{conversation-compaction-B6YSRLda.js → conversation-compaction-CgrR8YYp.js} +8 -8
  50. package/server/{conversation-compaction-CN4-5YYt.js → conversation-compaction-eQB5CkOe.js} +1 -1
  51. package/server/{conversation-service-Dq33SYEj.js → conversation-service-BLd3MYsG.js} +1 -1
  52. package/server/{conversation-service-C3avRVEr.js → conversation-service-DPJ71F33.js} +329 -19
  53. package/server/{conversations-bYpM9-kZ.js → conversations-6AfUfbwc.js} +5 -5
  54. package/server/{conversations-H9if0bCQ.js → conversations-CAsJF9kh.js} +1 -1
  55. package/server/{cost-Codk1pc2.js → cost-B2ddP6wq.js} +18 -2
  56. package/server/{cost-wH46-WsJ.js → cost-R-m6Yi-W.js} +3 -3
  57. package/server/{cost-sync-D_cre6WM.js → cost-sync-BsN6ER0n.js} +3 -3
  58. package/server/{dag-CJpgf9A3.js → dag-B1ucnjDU.js} +9 -9
  59. package/server/{dangerous-git-ops-D6AF-Hg_.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
  60. package/server/dashboard-db-worker.js +7 -7
  61. package/server/{deacon-CkT_kznS.js → deacon-CU_cAYSR.js} +406 -607
  62. package/server/{deacon-B8HbQdqU.js → deacon-kiQrb4ZT.js} +3 -3
  63. package/server/{deacon-nudge-log-D6K9K-rE.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
  64. package/server/{deacon-swarm-BryRr6AO.js → deacon-swarm-BXZZ1Z2-.js} +17 -17
  65. package/server/deacon-swarm-C-GwfjJy.js +2 -0
  66. package/server/deacon.js +8 -8
  67. package/server/{deploy-patrol-1IrZxicY.js → deploy-patrol-AiFoP8dw.js} +136 -19
  68. package/server/{deploy-window-wDf4UgHt.js → deploy-window-C3F-tihF.js} +77 -10
  69. package/server/{deploy-window-7ZYHh7Zp.js → deploy-window-DkZraDyj.js} +1 -1
  70. package/server/{dev-supervisor-C7p9kEpc.js → dev-supervisor-bcOWqdQE.js} +2 -2
  71. package/server/{devcontainer-renderer-CNmQy0pL.js → devcontainer-renderer-_d6XhyND.js} +3 -3
  72. package/server/dist-Bzy0y69j.js +3 -0
  73. package/server/{dist-D-Ed5yVw.js → dist-Cb_0uvpS.js} +1 -1
  74. package/server/{docker-BCZ89M9X.js → docker-DcMTFTUC.js} +2 -2
  75. package/server/{dod-DbJLYcHv.js → dod-C6n9RV3G.js} +1 -1
  76. package/server/{ensure-devcontainer-Cs6W9Yzj.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
  77. package/server/{ensure-devcontainer-V5JWaAva.js → ensure-devcontainer-DNi-ono3.js} +4 -4
  78. package/server/{esm-shims-dTeNdq7X.js → esm-shims-OSHAYaS1.js} +1 -1
  79. package/server/{event-store-TnWdydfB.js → event-store-CQL6NeqB.js} +3 -3
  80. package/server/{event-store-CpBGsO6_.js → event-store-EV2cMiXj.js} +1 -1
  81. package/server/{events-Dsuv6qyB.js → events-BTdrdEq8.js} +1 -1
  82. package/server/{events-DSUdR-04.js → events-DTfAe4My.js} +3 -3
  83. package/server/{factory-BMrK4TrE.js → factory-CFibJuaw.js} +50 -13
  84. package/server/{feature-registry-population-B-CI9hgE.js → feature-registry-population-DKZFMbFt.js} +4 -4
  85. package/server/{feature-registry-storage-B972ph_A.js → feature-registry-storage-BdPuLcBX.js} +2 -2
  86. package/server/{features-Bc-Bmiye.js → features-ez2271oH.js} +2 -2
  87. package/server/{feedback-target-DZ-iAnAa.js → feedback-target-7mqqwrX6.js} +7 -7
  88. package/server/{feedback-target-DS6NUuSs.js → feedback-target-CoFDHiM8.js} +1 -1
  89. package/server/{feedback-writer-BXP6g75N.js → feedback-writer-CY5L1lB7.js} +6 -5
  90. package/server/{feedback-writer-Bx5z11mF.js → feedback-writer-D3a22RCd.js} +1 -1
  91. package/server/flywheel-DHrgCphM.js +1084 -0
  92. package/server/flywheel-DzGtWnJ1.js +477 -0
  93. package/server/flywheel-SVF02Jpq.js +2 -0
  94. package/server/{flywheel-merge-order-CTgHeg-W.js → flywheel-merge-order-UU0tiUld.js} +10 -9
  95. package/server/{flywheel-merge-order-CNKAY489.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
  96. package/server/{forge-B1S_KZv4.js → forge-CNFnyqps.js} +2 -2
  97. package/server/forge-DXnS_YFH.js +2 -0
  98. package/server/{from-DpwQ-sc3.js → from-kNxT0bZC.js} +1 -1
  99. package/server/{fts-db-DmAcuCkV.js → fts-db-CE46vDkZ.js} +2 -2
  100. package/server/{fts-operations-7d_RkmWp.js → fts-operations-CqY6zl-i.js} +2 -2
  101. package/server/{git-utils-Cc3FHDKd.js → git-utils-CRw2zLPC.js} +68 -3
  102. package/server/git-utils-D0_yhCgF.js +3 -0
  103. package/server/{github-app-CDPtGF7J.js → github-app-C3QrAUd0.js} +27 -8
  104. package/server/{github-app-CU14oYzP.js → github-app-ClZ2lk8D.js} +1 -1
  105. package/server/{github-client-XjTJbBm7.js → github-client-BnIsSrEN.js} +2 -2
  106. package/server/{github-client-CwBZZ3t7.js → github-client-DfQYVUaw.js} +1 -1
  107. package/server/{github-pr-lookup-CFGeVhqv.js → github-pr-lookup-D16NGsSO.js} +2 -2
  108. package/server/{harness-binary-B2CTcD84.js → harness-binary-DPUi-Pv8.js} +32 -6
  109. package/server/{harness-resolve-D5FVQTmy.js → harness-resolve-3lNZkyT4.js} +18 -9
  110. package/server/{health-events-DREeevle.js → health-events-BBcTYQKU.js} +2 -2
  111. package/server/{health-events-C1whmd58.js → health-events-BDOHby5Q.js} +1 -1
  112. package/server/{hooks-yxRsjk-z.js → hooks-CKZgXlJb.js} +2 -2
  113. package/server/{hooks-B-HItBiS.js → hooks-DPVX1rwQ.js} +1 -1
  114. package/server/{hume-Dz_OymXE.js → hume-Cz8igP9E.js} +2 -2
  115. package/server/hume-ccTf4wTX.js +3 -0
  116. package/server/{idle-stack-reaper-DrCv0OAG.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
  117. package/server/{idle-stack-reaper-Yf34xXxY.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
  118. package/server/{in-flight-guard-BoWm66Kh.js → in-flight-guard-CAAkqPLu.js} +2 -2
  119. package/server/{infra-D4iNWMA5.js → infra-BEqFxlJc.js} +14 -4
  120. package/server/{injection-D7T75Pye.js → injection-C8aiVJrF.js} +191 -183
  121. package/server/{injection-BVNa4MQW.js → injection-CPUIqNhI.js} +1 -1
  122. package/server/{inspect-agent-BXCgNeZ4.js → inspect-agent-BLuJ1AkT.js} +137 -81
  123. package/server/inspect-agent-Brtz0URj.js +2 -0
  124. package/server/{internal-token-C9DdEOKY.js → internal-token-BrcU6qfe.js} +1 -1
  125. package/server/{internal-token-CXsfxslp.js → internal-token-s0-oKybJ.js} +2 -2
  126. package/server/{io-DQR9PMgS.js → io-C9kF1wtJ.js} +160 -184
  127. package/server/{issue-closed-DtmJM0D0.js → issue-closed-CDJk4pIp.js} +7 -7
  128. package/server/{issue-lifecycle-8PSS9Anq.js → issue-lifecycle-B8sZHVHh.js} +1 -1
  129. package/server/{issue-lifecycle-CeyW_HoD.js → issue-lifecycle-ojZAzDBP.js} +22 -22
  130. package/server/{issue-service-singleton-DBZabEl7.js → issue-service-singleton-BvJ09SaR.js} +1 -1
  131. package/server/{issue-service-singleton-D_RVYBuL.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
  132. package/server/{issues-pDW9VUNz.js → issues-BMmP_77e.js} +2 -2
  133. package/server/{jsonl-parser-C3HVNR5d.js → jsonl-parser-BXSlHwEh.js} +3 -3
  134. package/server/{label-cleanup-DPwiZlWo.js → label-cleanup-B0UJwnv5.js} +3 -3
  135. package/server/{label-reconciler-Df1ZduPH.js → label-reconciler-B4iOAjlC.js} +4 -4
  136. package/server/{launcher-generator-COgR2By1.js → launcher-generator-BBWG_SiS.js} +105 -10
  137. package/server/{lifecycle-io-taIb0PoH.js → lifecycle-io-BREGpnLk.js} +37 -37
  138. package/server/lifecycle-io-DPo7x11I.js +3 -0
  139. package/server/{lifecycle-CtPDcZ9u.js → lifecycle-xmBfK2GJ.js} +6 -6
  140. package/server/lifecycle-yPd___5E.js +121 -0
  141. package/server/{linear-client-DsFkIxee.js → linear-client-BsuUvkdA.js} +2 -2
  142. package/server/{linear-client-YwZMDIwQ.js → linear-client-CTskEeT_.js} +1 -1
  143. package/server/memory-fts-worker.js +1 -1
  144. package/server/{merge-BwsyNRJV.js → merge-B1DiziGU.js} +1 -1
  145. package/server/{merge-C1t-bspg.js → merge-CefQNAnq.js} +3 -3
  146. package/server/{merge-agent-DDiIjzk-.js → merge-agent-4WOWlSYA.js} +28 -28
  147. package/server/{merge-agent-B-SnXOoc.js → merge-agent-CKkgIBPB.js} +1 -1
  148. package/server/{merge-batch-Byt-QnEl.js → merge-batch-ClFn2T-y.js} +1 -1
  149. package/server/merge-ops-CR44oU9-.js +2 -0
  150. package/server/{merge-rebase-Cm6fXaZN.js → merge-rebase-BfaTyXsw.js} +2 -2
  151. package/server/merge-set-DJ8-UErs.js +83 -0
  152. package/server/{merge-set-6LEglm6o.js → merge-set-bUqbm3yc.js} +1 -1
  153. package/server/{merge-sync-B95_4in_.js → merge-sync-BJYeOODr.js} +1 -1
  154. package/server/{merge-sync-Do8_q32h.js → merge-sync-VPV28g0g.js} +2 -2
  155. package/server/{merge-train-CKana8EH.js → merge-train-CHopycP0.js} +3 -3
  156. package/server/{merge-train-deps-BgmqwIfA.js → merge-train-deps-D1cOZzy2.js} +4 -4
  157. package/server/{merge-verification-CqnUzGEK.js → merge-verification-BkaOqPsw.js} +4 -4
  158. package/server/{multipart-parser-tdOQDJ3o.js → multipart-parser-duPAfSBw.js} +2 -2
  159. package/server/{no-resume-mode-BWOSZjWd.js → no-resume-mode-Nw29vaFb.js} +11 -8
  160. package/server/node_modules/.package-lock.json +8 -8
  161. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  162. package/server/node_modules/undici/README.md +5 -0
  163. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  164. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  165. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  166. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  167. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  168. package/server/node_modules/undici/docs/docs/index.md +5 -0
  169. package/server/node_modules/undici/lib/core/request.js +1 -1
  170. package/server/node_modules/undici/lib/core/util.js +6 -1
  171. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  172. package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
  173. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  174. package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
  175. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
  176. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  177. package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
  178. package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
  179. package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
  180. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  181. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  182. package/server/node_modules/undici/lib/util/cache.js +49 -7
  183. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  184. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  185. package/server/node_modules/undici/package.json +2 -2
  186. package/server/node_modules/undici/types/client.d.ts +2 -2
  187. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  188. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  189. package/server/{orphan-proposed-reconciler-xklgvNA7.js → orphan-proposed-reconciler-BvKkWMJQ.js} +15 -13
  190. package/server/{orphan-proposed-reconciler-DSvsJ5M7.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
  191. package/server/package-lock.json +9 -9
  192. package/server/package.json +1 -1
  193. package/server/{pan-dir-DOcf6ug3.js → pan-dir-B0c3w0Ya.js} +78 -58
  194. package/server/{paths-DooHpt9p.js → paths-D-xWGHdh.js} +2 -2
  195. package/server/{pickup-CaskQ7j6.js → pickup-DUCLWrJY.js} +17 -16
  196. package/server/{pipeline-membership-1LGRjo-k.js → pipeline-membership-mY3GprlK.js} +186 -67
  197. package/server/{pipeline-notifier-CZsrU_nj.js → pipeline-notifier-BJr8gQX6.js} +1 -1
  198. package/server/{pipeline-notifier-B6FVsYF9.js → pipeline-notifier-BXkJzDC4.js} +2 -2
  199. package/server/{project-pipelines-CtNG_rvs.js → project-pipelines-C0MWUeCU.js} +2 -2
  200. package/server/project-repos-B6GycDh9.js +94 -0
  201. package/server/project-repos-DXKQsc_m.js +3 -0
  202. package/server/projects-vjjcmiN8.js +3 -0
  203. package/server/{prompts-EvhMeeHG.js → prompts-DxzFXuLl.js} +2 -2
  204. package/server/{providers-BDDPULlp.js → providers-qQAwGQDW.js} +7 -7
  205. package/server/{providers-DNSQqy2V.js → providers-u4Ga0jOr.js} +1 -1
  206. package/server/public/assets/{chunk-BO2N2NFS-sym_ufXe.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
  207. package/server/public/assets/{diagram-OG6HWLK6-CQJPBNBu.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
  208. package/server/public/assets/{dist-DukGS2YZ.js → dist-ByIuzMQW.js} +3 -3
  209. package/server/public/assets/{dist-Bio7THQU.js → dist-D7zYSEA6.js} +1 -1
  210. package/server/public/assets/{ganttDiagram-6RSMTGT7-D4lWwte3.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
  211. package/server/public/assets/{highlighted-body-OFNGDK62-CaLboCt5.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
  212. package/server/public/assets/{index-Bwejq-5s.js → index-CWeMerGO.js} +147 -144
  213. package/server/public/assets/index-CenuJ3Cw.css +1 -0
  214. package/server/public/assets/{linear-qUWmMZ-c.js → linear-BBbArIcK.js} +1 -1
  215. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
  216. package/server/public/assets/{pieDiagram-4H26LBE5-C4zYulEm.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
  217. package/server/public/assets/{prod-C8VtLuWC.js → prod-B8vYiu52.js} +4 -4
  218. package/server/public/assets/{quadrantDiagram-W4KKPZXB-qP04zyZC.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
  219. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eMPTX_cG.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
  220. package/server/public/assets/{xychartDiagram-2RQKCTM6-Dme1PIt6.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
  221. package/server/public/index.html +2 -2
  222. package/server/{pull-requests-By_BteaL.js → pull-requests-7N8WKseP.js} +1 -1
  223. package/server/{pull-requests-8z2N1UOV.js → pull-requests-_lHueOHW.js} +13 -11
  224. package/server/{queries-ZABd5aXP.js → queries-CjNIf-Ub.js} +1200 -201
  225. package/server/{rally-i_goYmiA.js → rally-CyWT_lNO.js} +3 -3
  226. package/server/{rally-api-DqKqIMNR.js → rally-api-C8e_1JRi.js} +2 -2
  227. package/server/{rally-api-xHazRk0d.js → rally-api-ClOSd-Tt.js} +1 -1
  228. package/server/{rally-client-COYz1vYR.js → rally-client-lc-nokqr.js} +4 -4
  229. package/server/{rally-client-CGWEHaPd.js → rally-client-sgtVqzNU.js} +1 -1
  230. package/server/rally-zhhtXuDP.js +3 -0
  231. package/server/{reap-terminal-sessions-CaMkFOIH.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
  232. package/server/{reap-terminal-sessions-DG9eiMVz.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
  233. package/server/rebuild-stack-CFvcBHsS.js +4 -0
  234. package/server/{rebuild-stack-JUm0jqYP.js → rebuild-stack-lwtsW0GO.js} +26 -35
  235. package/server/{reconstruct-cache-wU79aCee.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
  236. package/server/record-CN0pj4_5.js +3 -0
  237. package/server/{record-update-D3N6WMFR.js → record-update-bLJxAXH4.js} +1 -1
  238. package/server/record-update-dE1Aw83j.js +310 -0
  239. package/server/{recovery-trip-DkzJSej9.js → recovery-trip-BvRWfUXM.js} +2 -2
  240. package/server/{release-engine-DMINVN8S.js → release-engine-Cx48W7z8.js} +5 -5
  241. package/server/{release-set-DeUSOEHy.js → release-set-CQfuN9-v.js} +3 -3
  242. package/server/{remote-b-c5bOce.js → remote-C_2hasl7.js} +3 -3
  243. package/server/{remote-Dr5kGYSZ.js → remote-ChgimyYa.js} +3 -3
  244. package/server/{remote-agents-Ct_WOyke.js → remote-agents-By1ige5O.js} +6 -6
  245. package/server/{remote-agents-D6O_zETW.js → remote-agents-CA3Ihlxj.js} +1 -1
  246. package/server/{remote-completion-Dca3hAaa.js → remote-completion-fVe9e_3u.js} +12 -12
  247. package/server/resume-BFv1PGpA.js +3 -0
  248. package/server/{review-agent-CThvgK2r.js → review-agent-CIGOQYBD.js} +29 -25
  249. package/server/{review-agent-CCum8sGe.js → review-agent-DNboMyW4.js} +1 -1
  250. package/server/{review-artifacts-CXywD0F2.js → review-artifacts-nRDPuMxd.js} +5 -5
  251. package/server/{review-context-OYfKUprb.js → review-context-2uj-YQ8J.js} +70 -26
  252. package/server/review-status-btEYlaxA.js +3 -0
  253. package/server/{review-status-enrichment-crNAtIpL.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
  254. package/server/{review-status-DFRjDFef.js → review-status-kZj_KyCk.js} +77 -28
  255. package/server/{review-status-sync-DpAMD_WO.js → review-status-sync-BTOpxtTC.js} +10 -5
  256. package/server/{review-status-sync-D60PJWNL.js → review-status-sync-DSDK3OMy.js} +1 -1
  257. package/server/{review-verdict-feedback-CpUZl5aE.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
  258. package/server/{review-verdict-feedback-JImjut0z.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
  259. package/server/{rollup-CZ02qgxk.js → rollup-BKQC7jp4.js} +1 -1
  260. package/server/{rollup-SyuF09e4.js → rollup-FGsKki9R.js} +8 -8
  261. package/server/{scanner-Br0Z5S6R.js → scanner-CnqEZeDy.js} +45 -14
  262. package/server/{sequence-io-fxU0DlwW.js → sequence-io-D909zgeH.js} +4 -4
  263. package/server/{sequencer-agent-B5YC5XVP.js → sequencer-agent-CzkcK6P5.js} +5 -5
  264. package/server/server.js +2961 -919
  265. package/server/{service-Bagb90KZ.js → service-CLeAoU6G.js} +55 -54
  266. package/server/{session-fork-BqQxd-V6.js → session-fork-CHI1XvL9.js} +2 -2
  267. package/server/{session-history-XdS0JKp3.js → session-history-BT3IvqhC.js} +4 -4
  268. package/server/settings-66A6uvIA.js +2 -0
  269. package/server/{settings-BNbocWOg.js → settings-BTMvpNFU.js} +3 -3
  270. package/server/{settings-uLc6DEYI.js → settings-C0zgxOGf.js} +2 -2
  271. package/server/{shadow-engineering-D4X_s3fA.js → shadow-engineering-BJfgm-hX.js} +2 -2
  272. package/server/{shadow-state-C_NkP-sa.js → shadow-state-7a-524T8.js} +2 -2
  273. package/server/{shadow-state-CbvsN3qG.js → shadow-state-DnDyjujH.js} +1 -1
  274. package/server/{shadow-utils-CYMRPeRT.js → shadow-utils-Db3oroFG.js} +2 -2
  275. package/server/{ship-log-__QtAFXG.js → ship-log-D9MlVzYU.js} +1 -1
  276. package/server/{smart-compaction-jdMkG1vo.js → smart-compaction-CV2ukKND.js} +1 -1
  277. package/server/{smart-compaction-CLZOWin1.js → smart-compaction-KCYScAU1.js} +7 -7
  278. package/server/{spawn-planning-session-D5OXo8pT.js → spawn-planning-session-DKpdFyOC.js} +35 -27
  279. package/server/{spawn-planning-session-8D6mE033.js → spawn-planning-session-qUC2VWu3.js} +1 -1
  280. package/server/{specialist-completion-CqmduO92.js → specialist-completion-Ky9wCDpb.js} +1 -1
  281. package/server/{specialist-context-CJ-QjFR-.js → specialist-context-Bn3dCGS2.js} +5 -5
  282. package/server/{specialist-handoff-logger-Dnjlwt7g.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
  283. package/server/{specialist-logs-CQnKzuZs.js → specialist-logs-C5p8G7tx.js} +3 -3
  284. package/server/{specialists-Bg9v4z3F.js → specialists-CC4r-c2s.js} +1015 -460
  285. package/server/{specialists-D0gGXMZx.js → specialists-CShuVGWT.js} +1 -1
  286. package/server/specialists-DM6bWjsi.js +3 -0
  287. package/server/{specialists-CwZHb5cb.js → specialists-jiuuyVkp.js} +66 -74
  288. package/server/specs-C8Wsn2XO.js +3 -0
  289. package/server/{src-BMMoA_ba.js → src-CXmtj0im.js} +6 -6
  290. package/server/{src-Bqdtd6po.js → src-CdmnTM2m.js} +5 -5
  291. package/server/{src-k039WVYY.js → src-DtcUOZCq.js} +112 -18
  292. package/server/stack-health-Bn3o8FBX.js +3 -0
  293. package/server/{stack-health-C-ifC7b0.js → stack-health-DxSdG9cW.js} +63 -9
  294. package/server/{stale-task-claims-L7pJkQFL.js → stale-task-claims-KJKxxiiQ.js} +4 -4
  295. package/server/{staleness-_Tr-GwdA.js → staleness-CT34nwr9.js} +1 -1
  296. package/server/{staleness-BID1BKdr.js → staleness-DPm7ClwA.js} +15 -3
  297. package/server/{state-home-CONQvZR0.js → state-home-Cn_Qu8IX.js} +96 -44
  298. package/server/{state-migrate-BeBW0KXA.js → state-migrate-BGg2ZaOt.js} +12 -3
  299. package/server/{stuck-remediation-CKnIryGT.js → stuck-remediation-DYuPRYYw.js} +307 -26
  300. package/server/{stuck-remediation-CsGD5Ksb.js → stuck-remediation-s9_2qfi6.js} +1 -1
  301. package/server/{substrate-bug-weights-service-CpIZILj9.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
  302. package/server/{summary-fork-bX6ax6X7.js → summary-fork-D1RAk9rJ.js} +78 -12
  303. package/server/{summary-fork-agEMsPSo.js → summary-fork-DpcxN9tf.js} +2 -2
  304. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
  305. package/server/supervisor/pty-supervisor.js +2 -1
  306. package/server/supervisor/pty-token-x-ea28Us.js +43 -0
  307. package/server/supervisor-FTJAIsAK.js +2 -0
  308. package/server/{supervisor-Ctt4eRYz.js → supervisor-wM4ooB5O.js} +3 -3
  309. package/server/{swarm-readiness-DdmJVX7y.js → swarm-readiness-DlP_UjHq.js} +4 -4
  310. package/server/{system-prerequisites-DSXBvffY.js → system-prerequisites-DUDj1YHf.js} +56 -29
  311. package/server/{teardown-workspace-DDCf5n-a.js → teardown-workspace-DeTTImn-.js} +15 -15
  312. package/server/{test-agent-queue-BJZ9Nfcc.js → test-agent-queue-MbxX5vqq.js} +7 -7
  313. package/server/{test-verdict-Cp5tljlJ.js → test-verdict-bWYBtqBg.js} +1 -1
  314. package/server/{test-verdict-D_-sXIz_.js → test-verdict-gscuksPv.js} +1 -1
  315. package/server/{tldr-daemon-B8_oT5gx.js → tldr-daemon-BYFkts95.js} +1 -1
  316. package/server/{tldr-daemon-BQFmmFp0.js → tldr-daemon-C-69c3OI.js} +2 -2
  317. package/server/tmux-B6z7h_vZ.js +3 -0
  318. package/server/{tmux-L5LgvGLp.js → tmux-R7N7y-Mh.js} +76 -44
  319. package/server/{token-BkQLy4yS.js → token-BK6t8BIT.js} +2 -2
  320. package/server/token-util-DuPuNriz.js +3 -0
  321. package/server/{token-util-DI8sGlmF.js → token-util-DxXu-vd1.js} +1 -1
  322. package/server/{tracker-config-DdT-nUAM.js → tracker-config-G6latr8C.js} +2 -2
  323. package/server/{tracker-utils-DV3h1FYG.js → tracker-utils-B4ylXZQK.js} +1 -1
  324. package/server/{tracker-utils-CawsPSS2.js → tracker-utils-DHv5pSDT.js} +2 -2
  325. package/server/{traefik-connect-C6mJckNs.js → traefik-connect-Df2uXPsQ.js} +1 -1
  326. package/server/{tunnel-IdK1iTHx.js → tunnel-CDVKJpRv.js} +3 -3
  327. package/server/{tunnel-BIFl98rc.js → tunnel-DGdUkGoZ.js} +1 -1
  328. package/server/{types-7-GnJn0t.js → types-5M0lupud.js} +1 -1
  329. package/server/{uat-train-0Ujk8GCv.js → uat-train-B05BWkp-.js} +1 -1
  330. package/server/{uat-train-j0cPeMSj.js → uat-train-DDSrSoV1.js} +28 -28
  331. package/server/validate-IfDGkaVR.js +177 -0
  332. package/server/{validation-DcAgXTQp.js → validation-CC9OPqJZ.js} +1 -1
  333. package/server/{validation-CabEISJT.js → validation-Dw1pzDzr.js} +259 -9
  334. package/server/{verification-artifact-Ck1tefmz.js → verification-artifact-B3itKTxu.js} +1 -1
  335. package/server/{verification-artifact-BuTA1QbL.js → verification-artifact-TVFSz_q1.js} +1 -1
  336. package/server/{verification-runner-DlJezzef.js → verification-runner-BW4HOKAz.js} +1 -1
  337. package/server/{verification-runner-FiuAZ-H2.js → verification-runner-CkgX6EtI.js} +174 -124
  338. package/server/{vtt-parser-BnRsYzcz.js → vtt-parser-DYPbKcIJ.js} +1 -1
  339. package/server/{work-agent-prompt-DLthEPAq.js → work-agent-prompt-Du8Vh2aJ.js} +13 -13
  340. package/server/workflows-BQu4RFQ-.js +2 -0
  341. package/server/{workflows-BZNNYkGC.js → workflows-mbQzh6mQ.js} +39 -77
  342. package/server/{workspace-3IC-UkAi.js → workspace--8tnhDI0.js} +1 -1
  343. package/server/{workspace-D9ppycdg.js → workspace-BPUws1-_.js} +3 -3
  344. package/server/{workspace-config-Bigl_-Lk.js → workspace-config-CIVWZOQr.js} +1 -1
  345. package/server/{workspace-manager-ClkCIWTe.js → workspace-manager-CBhNdzE4.js} +76 -18
  346. package/server/workspace-manager-CWT55qeI.js +3 -0
  347. package/server/{workspace-metadata-BE0efUv_.js → workspace-metadata-BzHnwwX4.js} +1 -1
  348. package/server/{workspace-metadata-tiSRIWJP.js → workspace-metadata-_WygnyoX.js} +2 -2
  349. package/server/{workspaces-CFPcL0vl.js → workspaces-Do_9J0LQ.js} +309 -124
  350. package/sync-sources/agents/pan-inspect-agent.md +1 -1
  351. package/sync-sources/agents/pan-merge-agent.md +1 -1
  352. package/sync-sources/agents/pan-planning-agent.md +4 -4
  353. package/sync-sources/agents/pan-work-agent.md +1 -1
  354. package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
  355. package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
  356. package/sync-sources/hooks/record-cost-event.js +369 -75
  357. package/sync-sources/hooks/session-start-hook +7 -0
  358. package/sync-sources/hooks/work-agent-stop-hook +1 -1
  359. package/sync-sources/rules/per-bead-durability.md +1 -1
  360. package/sync-sources/rules/prd-authoring.md +1 -1
  361. package/sync-sources/skills/feature-work/SKILL.md +1 -1
  362. package/sync-sources/skills/okf/README.md +11 -3
  363. package/sync-sources/skills/okf/SKILL.md +12 -1
  364. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  365. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  366. package/sync-sources/skills/pan/SKILL.md +2 -2
  367. package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
  368. package/sync-sources/skills/pan-approve/SKILL.md +1 -1
  369. package/sync-sources/skills/pan-close/SKILL.md +1 -1
  370. package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
  371. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  372. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  373. package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
  374. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  375. package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
  376. package/sync-sources/skills/pan-plan/SKILL.md +6 -6
  377. package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
  378. package/sync-sources/skills/pan-recap/SKILL.md +2 -2
  379. package/sync-sources/skills/pan-review/SKILL.md +1 -1
  380. package/sync-sources/skills/pan-start/SKILL.md +7 -3
  381. package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
  382. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  383. package/sync-sources/skills/pan-task/SKILL.md +2 -2
  384. package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
  385. package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
  386. package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
  387. package/sync-sources/skills/plan/SKILL.md +11 -11
  388. package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
  389. package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
  390. package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
  391. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  392. package/server/agent-state-Co5Sy2Fw.js +0 -3
  393. package/server/agents-DyHKlq1I.js +0 -3
  394. package/server/cli-BRORS9qY.js +0 -3
  395. package/server/codex-DNyiQDKW.js +0 -3
  396. package/server/context-layers-15gDOk20.js +0 -165
  397. package/server/context-layers-DlQKkHH2.js +0 -4
  398. package/server/deacon-swarm-CV54eNmU.js +0 -2
  399. package/server/dist-j64RzSrQ.js +0 -3
  400. package/server/flywheel-6WHU4O7A.js +0 -207
  401. package/server/flywheel-COR0mbRI.js +0 -522
  402. package/server/flywheel-Ctr5uuvo.js +0 -2
  403. package/server/forge-B0_opi-V.js +0 -2
  404. package/server/git-utils-CsKGnzFA.js +0 -3
  405. package/server/hume-BmhvfVbV.js +0 -3
  406. package/server/inspect-agent-Dq0z1k3H.js +0 -2
  407. package/server/layers-Cp1To4L8.js +0 -93
  408. package/server/lifecycle-io-DmY2qwCn.js +0 -3
  409. package/server/merge-blockers-BYjeXrVN.js +0 -41
  410. package/server/merge-ops-DwWCkSgo.js +0 -2
  411. package/server/merge-set-DiISXcC-.js +0 -139
  412. package/server/projects-BKkwpH6q.js +0 -3
  413. package/server/public/assets/index-Bdc4V9ba.css +0 -1
  414. package/server/public/assets/mermaid-GHXKKRXX-B5v_r7cI.js +0 -1
  415. package/server/rally-OSJXdiHK.js +0 -3
  416. package/server/rebuild-stack-CKjJAI8L.js +0 -3
  417. package/server/record-rwK-nKv_.js +0 -3
  418. package/server/record-update-Crz74r-6.js +0 -168
  419. package/server/resume-wZZsWtzz.js +0 -3
  420. package/server/review-status-Bnh-rdkY.js +0 -3
  421. package/server/settings-BlUsVaUc.js +0 -2
  422. package/server/specialists-Dqe6_HE5.js +0 -3
  423. package/server/specs-BhOKBzqk.js +0 -3
  424. package/server/stack-health-Bd06frFn.js +0 -3
  425. package/server/supervisor-COVHrBTg.js +0 -2
  426. package/server/tmux-BAvtac_u.js +0 -3
  427. package/server/token-util-BArZLN6w.js +0 -3
  428. package/server/workflows-C4mR0Reb.js +0 -2
  429. package/server/workspace-manager-B1WOfKvB.js +0 -3
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { jr as init_errors, kr as TrackerError } from "./config-yaml-ig8Nwtiw.js";
3
- import { a as TrackerAuthError, n as init_rally_api, o as init_interface, r as IssueNotFoundError, t as RallyRestApi } from "./rally-api-DqKqIMNR.js";
2
+ import { fr as TrackerError, mr as init_errors } from "./config-yaml-DySPNmKN.js";
3
+ import { a as TrackerAuthError, n as init_rally_api, o as init_interface, r as IssueNotFoundError, t as RallyRestApi } from "./rally-api-C8e_1JRi.js";
4
4
  import { Effect } from "effect";
5
5
  //#region ../../lib/tracker/rally.ts
6
6
  /**
@@ -504,4 +504,4 @@ var init_rally = __esmMin((() => {
504
504
  //#endregion
505
505
  export { init_rally as n, RallyTracker as t };
506
506
 
507
- //# sourceMappingURL=rally-i_goYmiA.js.map
507
+ //# sourceMappingURL=rally-CyWT_lNO.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { jr as init_errors, kr as TrackerError } from "./config-yaml-ig8Nwtiw.js";
2
+ import { fr as TrackerError, mr as init_errors } from "./config-yaml-DySPNmKN.js";
3
3
  import { Data, Effect } from "effect";
4
4
  //#region ../../lib/tracker/interface.ts
5
5
  /**
@@ -162,4 +162,4 @@ var init_rally_api = __esmMin((() => {
162
162
  //#endregion
163
163
  export { TrackerAuthError as a, NotImplementedError as i, init_rally_api as n, init_interface as o, IssueNotFoundError as r, RallyRestApi as t };
164
164
 
165
- //# sourceMappingURL=rally-api-DqKqIMNR.js.map
165
+ //# sourceMappingURL=rally-api-C8e_1JRi.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_rally_api, t as RallyRestApi } from "./rally-api-DqKqIMNR.js";
1
+ import { n as init_rally_api, t as RallyRestApi } from "./rally-api-C8e_1JRi.js";
2
2
  init_rally_api();
3
3
  export { RallyRestApi };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as init_tracker_config, r as getRallyConfig } from "./tracker-config-DdT-nUAM.js";
2
+ import { a as init_tracker_config, r as getRallyConfig } from "./tracker-config-G6latr8C.js";
3
3
  import { a as RateLimited, c as TrackerNotConfigured, d as init_typed_errors, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-2BTMxkZq.js";
4
4
  import { Context, Effect, Layer } from "effect";
5
5
  //#region services/rally-client.ts
@@ -46,7 +46,7 @@ function makeRallyClientImpl(config) {
46
46
  let tracker = null;
47
47
  async function getTracker() {
48
48
  if (!tracker) {
49
- const { RallyTracker } = await import("./rally-OSJXdiHK.js");
49
+ const { RallyTracker } = await import("./rally-zhhtXuDP.js");
50
50
  tracker = new RallyTracker({
51
51
  apiKey: config.apiKey,
52
52
  server: config.server,
@@ -106,7 +106,7 @@ var init_rally_client = __esmMin((() => {
106
106
  RallyClientLive = Layer.effect(RallyClient, Effect.gen(function* () {
107
107
  const config = getRallyConfig();
108
108
  if (!config) return yield* Effect.fail(new TrackerNotConfigured({ tracker: "rally" }));
109
- const { RallyTracker } = yield* Effect.promise(() => import("./rally-OSJXdiHK.js"));
109
+ const { RallyTracker } = yield* Effect.promise(() => import("./rally-zhhtXuDP.js"));
110
110
  const tracker = new RallyTracker({
111
111
  apiKey: config.apiKey,
112
112
  server: config.server,
@@ -158,4 +158,4 @@ var init_rally_client = __esmMin((() => {
158
158
  //#endregion
159
159
  export { init_rally_client as i, RallyClientLive as n, RallyClientOptionalLive as r, RallyClient as t };
160
160
 
161
- //# sourceMappingURL=rally-client-COYz1vYR.js.map
161
+ //# sourceMappingURL=rally-client-lc-nokqr.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_rally_client, n as RallyClientLive, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-COYz1vYR.js";
1
+ import { i as init_rally_client, n as RallyClientLive, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-lc-nokqr.js";
2
2
  init_rally_client();
3
3
  export { RallyClient, RallyClientLive, RallyClientOptionalLive };
@@ -0,0 +1,3 @@
1
+ import { n as init_rally, t as RallyTracker } from "./rally-CyWT_lNO.js";
2
+ init_rally();
3
+ export { RallyTracker };
@@ -1,4 +1,4 @@
1
1
  import { r as isRoleTerminal } from "./review-status-source-CxuEjLGg.js";
2
- import { i as selectAwaitingTestWorkSessions, o as selectMergedWorkSessions, s as selectNonMergedTerminalAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-DG9eiMVz.js";
2
+ import { i as selectAwaitingTestWorkSessions, o as selectMergedWorkSessions, s as selectNonMergedTerminalAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-BtHPo6Xc.js";
3
3
  init_reap_terminal_sessions();
4
4
  export { isRoleTerminal, selectAwaitingTestWorkSessions, selectMergedWorkSessions, selectNonMergedTerminalAdvancingSessions };
@@ -128,4 +128,4 @@ var init_reap_terminal_sessions = __esmMin((() => {
128
128
  //#endregion
129
129
  export { selectMergedAdvancingSessions as a, sessionsToReapForRole as c, selectAwaitingTestWorkSessions as i, isAwaitingTestReapable as n, selectMergedWorkSessions as o, isWorkReapable as r, selectNonMergedTerminalAdvancingSessions as s, init_reap_terminal_sessions as t };
130
130
 
131
- //# sourceMappingURL=reap-terminal-sessions-DG9eiMVz.js.map
131
+ //# sourceMappingURL=reap-terminal-sessions-BtHPo6Xc.js.map
@@ -0,0 +1,4 @@
1
+ import "./stack-health-DxSdG9cW.js";
2
+ import { n as rebuildWorkspaceStack, t as init_rebuild_stack } from "./rebuild-stack-lwtsW0GO.js";
3
+ init_rebuild_stack();
4
+ export { rebuildWorkspaceStack };
@@ -1,12 +1,12 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Hn as init_projects, In as getProjectSync, nr as resolveProjectFromIssueSync } from "./config-yaml-ig8Nwtiw.js";
3
- import { a as init_stack_health, c as init_docker_stats, l as recordDockerContainerLifecycleSnapshot, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-C-ifC7b0.js";
4
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-DtmJM0D0.js";
5
- import { n as reconcileTraefikNetworks, t as init_traefik_connect } from "./traefik-connect-C6mJckNs.js";
6
- import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-V5JWaAva.js";
2
+ import { Tn as init_projects, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
3
+ import { d as init_docker_stats, f as recordDockerContainerLifecycleSnapshot, n as collectDockerContainerLifecycleSnapshot, o as hasIssueToken, r as composeProjectNameForWorkspace, s as init_stack_health } from "./stack-health-DxSdG9cW.js";
4
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-CDJk4pIp.js";
5
+ import { n as reconcileTraefikNetworks, t as init_traefik_connect } from "./traefik-connect-Df2uXPsQ.js";
6
+ import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-DNi-ono3.js";
7
7
  import { dirname, join } from "node:path";
8
8
  import { Effect } from "effect";
9
- import { existsSync, readFileSync, rmSync } from "node:fs";
9
+ import { existsSync, rmSync } from "node:fs";
10
10
  import { execFile } from "node:child_process";
11
11
  import { promisify } from "node:util";
12
12
  //#region ../../lib/workspace/rebuild-stack.ts
@@ -27,32 +27,6 @@ import { promisify } from "node:util";
27
27
  * the result, not the error channel, to preserve the existing API contract
28
28
  * where callers branch on `success`).
29
29
  */
30
- function declaredComposeProjectName(content, featureFolder) {
31
- const templatedMatch = content.match(/COMPOSE_PROJECT_NAME="([^$"]*)\$\{FEATURE_FOLDER\}"/);
32
- if (templatedMatch) return `${templatedMatch[1]}${featureFolder}`;
33
- return content.match(/COMPOSE_PROJECT_NAME="([^"]+)"/)?.[1] ?? null;
34
- }
35
- /**
36
- * Derive the canonical `COMPOSE_PROJECT_NAME` for a workspace, refusing the
37
- * rebuild if the workspace declares a name that does not match — a mismatch
38
- * means `docker compose down` would target the wrong stack.
39
- */
40
- function composeProjectNameForWorkspace(workspacePath, issueId) {
41
- const featureFolder = `feature-${issueId.toLowerCase()}`;
42
- const fallback = `overdeck-${featureFolder}`;
43
- for (const devPath of [join(workspacePath, ".devcontainer", "dev"), join(workspacePath, "dev")]) {
44
- if (!existsSync(devPath)) continue;
45
- try {
46
- const declared = declaredComposeProjectName(readFileSync(devPath, "utf-8"), featureFolder);
47
- if (!declared) continue;
48
- if (!declared.endsWith(featureFolder)) throw new Error(`Refusing workspace rebuild: ${devPath} declares COMPOSE_PROJECT_NAME=${declared}, expected a name ending in ${featureFolder}`);
49
- return declared;
50
- } catch (err) {
51
- if (err?.message?.startsWith("Refusing workspace rebuild:")) throw err;
52
- }
53
- }
54
- return fallback;
55
- }
56
30
  function findDevcontainerComposeFile(workspacePath) {
57
31
  const devcontainerDir = join(workspacePath, ".devcontainer");
58
32
  for (const file of COMPOSE_FILES) {
@@ -61,7 +35,7 @@ function findDevcontainerComposeFile(workspacePath) {
61
35
  }
62
36
  return null;
63
37
  }
64
- var execFileAsync, COMPOSE_FILES, dockerCompose, EXTERNAL_WORKSPACE_NETWORK, ensureExternalNetwork, rebuildWorkspaceStack;
38
+ var execFileAsync, COMPOSE_FILES, dockerCompose, EXTERNAL_WORKSPACE_NETWORK, ensureExternalNetwork, removeStaleIssueContainers, rebuildWorkspaceStack;
65
39
  var init_rebuild_stack = __esmMin((() => {
66
40
  init_docker_stats();
67
41
  init_projects();
@@ -92,6 +66,21 @@ var init_rebuild_stack = __esmMin((() => {
92
66
  "create",
93
67
  EXTERNAL_WORKSPACE_NETWORK
94
68
  ], { timeout: 3e4 }).then(() => void 0).catch(() => void 0));
69
+ removeStaleIssueContainers = (issueId, composeProjectName) => Effect.promise(async () => {
70
+ const containers = await Effect.runPromise(collectDockerContainerLifecycleSnapshot());
71
+ let removed = 0;
72
+ for (const container of containers) {
73
+ if (container.composeProject === composeProjectName) continue;
74
+ if (!hasIssueToken(container.name, issueId)) continue;
75
+ if (container.state?.toLowerCase() === "running" || /^up\b/i.test(container.status)) continue;
76
+ if (await execFileAsync("docker", [
77
+ "rm",
78
+ "-f",
79
+ container.id
80
+ ], { timeout: 3e4 }).then(() => true).catch(() => false)) removed += 1;
81
+ }
82
+ return removed;
83
+ });
95
84
  rebuildWorkspaceStack = (issueId, options = {}) => {
96
85
  const progress = options.onProgress ?? (() => {});
97
86
  const normalizedIssueId = issueId.toLowerCase();
@@ -163,6 +152,8 @@ var init_rebuild_stack = __esmMin((() => {
163
152
  "--build"
164
153
  ], dirname(composeFile));
165
154
  recordDockerContainerLifecycleSnapshot(yield* collectDockerContainerLifecycleSnapshot());
155
+ progress("Removing stale containers from previous stack projects...");
156
+ yield* removeStaleIssueContainers(normalizedIssueId, composeProjectName);
166
157
  progress("Connecting traefik to workspace network...");
167
158
  yield* Effect.promise(() => reconcileTraefikNetworks());
168
159
  return {
@@ -182,6 +173,6 @@ var init_rebuild_stack = __esmMin((() => {
182
173
  };
183
174
  }));
184
175
  //#endregion
185
- export { init_rebuild_stack as n, rebuildWorkspaceStack as r, composeProjectNameForWorkspace as t };
176
+ export { rebuildWorkspaceStack as n, removeStaleIssueContainers as r, init_rebuild_stack as t };
186
177
 
187
- //# sourceMappingURL=rebuild-stack-JUm0jqYP.js.map
178
+ //# sourceMappingURL=rebuild-stack-lwtsW0GO.js.map
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Bt as resolveProjectForIssue, Hn as init_projects, It as readIssueRecord, Kn as listProjectsSync, Nt as init_record } from "./config-yaml-ig8Nwtiw.js";
3
- import { c as listAllAgentsSync, o as init_agents, r as backfillAgentsSync } from "./agents-DXdHmRTC.js";
4
- import { i as listRunningAgents, s as init_agents$1 } from "./queries-ZABd5aXP.js";
5
- import { a as gatherProjectLensSignalsForProjects, i as gatherProjectLensSignals, n as init_pipeline_membership, o as init_pipeline_membership_gather, r as resolvePipelineMembership } from "./pipeline-membership-1LGRjo-k.js";
2
+ import { Ft as resolveProjectForIssue, Ot as init_record, Tn as init_projects, jt as readIssueRecord, kn as listProjectsSync } from "./config-yaml-DySPNmKN.js";
3
+ import { c as listAllAgentsSync, o as init_agents, r as backfillAgentsSync } from "./agents-EbI0zCJl.js";
4
+ import { b as init_agents$1, i as listRunningAgents } from "./queries-CjNIf-Ub.js";
5
+ import { a as gatherProjectLensSignalsForProjects, i as gatherProjectLensSignals, n as init_pipeline_membership, o as init_pipeline_membership_gather, r as resolvePipelineMembership } from "./pipeline-membership-mY3GprlK.js";
6
6
  import { Effect } from "effect";
7
7
  //#region ../../lib/reconstruct/enumerate-in-flight.ts
8
8
  async function enumerateInFlightIssuesFromSources(projects, gather = gatherProjectLensSignals) {
@@ -138,7 +138,7 @@ async function loadInFlightIssueIds(projects) {
138
138
  return enumerateInFlightIssuesFromSources(projects);
139
139
  }
140
140
  async function fetchPrState(issueId) {
141
- const { fetchIssuePullRequest } = await import("./pull-requests-By_BteaL.js");
141
+ const { fetchIssuePullRequest } = await import("./pull-requests-7N8WKseP.js");
142
142
  const result = await fetchIssuePullRequest(issueId);
143
143
  if (!result.pr) return {
144
144
  hasPr: false,
@@ -269,4 +269,4 @@ __esmMin((() => {
269
269
  }))();
270
270
  export { reconstructCache, reconstructCacheAuto };
271
271
 
272
- //# sourceMappingURL=reconstruct-cache-wU79aCee.js.map
272
+ //# sourceMappingURL=reconstruct-cache-C3Ui7ojV.js.map
@@ -0,0 +1,3 @@
1
+ import { Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Nt as readIssueRecordSync, Ot as init_record, Pt as readRecordContinueViewSync, vt as appendSessionEntry, zt as writeRecordTieredExecutionOverride } from "./config-yaml-DySPNmKN.js";
2
+ init_record();
3
+ export { appendSessionEntry, getProjectConfigFromWorkspacePath, readIssueRecordSync, readRecordContinueViewSync, resolveProjectForIssue, writeRecordTieredExecutionOverride };
@@ -1,3 +1,3 @@
1
- import { n as updateIssueRecord, t as init_record_update } from "./record-update-Crz74r-6.js";
1
+ import { n as updateIssueRecord, t as init_record_update } from "./record-update-dE1Aw83j.js";
2
2
  init_record_update();
3
3
  export { updateIssueRecord };
@@ -0,0 +1,310 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { At as queueIssueRecordCommit, Br as getOverdeckHome, Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Ht as flushAutoCommits, Nt as readIssueRecordSync, Ot as init_record, Rt as writeIssueRecordSync, St as ensureIssueRecordSync, Tn as init_projects, Ut as init_auto_commit, Vr as init_paths, kn as listProjectsSync, nn as init_state_read_home, rn as resolveStateReadHomeSync, tn as STATE_BRANCH, wt as getIssueRecordPath } from "./config-yaml-DySPNmKN.js";
3
+ import { dirname, join, relative } from "node:path";
4
+ import { Effect } from "effect";
5
+ import { hostname } from "node:os";
6
+ import { mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
7
+ import { execFile } from "node:child_process";
8
+ import { promisify } from "node:util";
9
+ //#region ../../lib/pan-dir/fs-lock.ts
10
+ /** Cross-process per-issue record locking (PAN-2648 CD-2). */
11
+ function safeSegment(value) {
12
+ return value.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, "-");
13
+ }
14
+ function recordLockPath(project, issueId) {
15
+ const configuredKey = listProjectsSync().find(({ config }) => config.path === project.path)?.key;
16
+ const projectKey = safeSegment(configuredKey ?? project.name ?? project.path) || "unknown-project";
17
+ return join(getOverdeckHome(), "locks", "records", projectKey, `${issueId.toUpperCase()}.lock`);
18
+ }
19
+ function isPidDead(pid) {
20
+ if (!pid || pid <= 0 || pid === process.pid) return false;
21
+ try {
22
+ process.kill(pid, 0);
23
+ return false;
24
+ } catch (error) {
25
+ return error.code === "ESRCH";
26
+ }
27
+ }
28
+ async function sweepRecordTmpFiles(recordPath) {
29
+ try {
30
+ const dir = dirname(recordPath);
31
+ const base = recordPath.slice(dir.length + 1);
32
+ const entries = await readdir(dir);
33
+ await Promise.all(entries.filter((entry) => entry.startsWith(`${base}.`) && entry.endsWith(".tmp")).map((entry) => rm(join(dir, entry), { force: true })));
34
+ } catch {}
35
+ }
36
+ async function readOwner(lockPath) {
37
+ try {
38
+ const owner = JSON.parse(await readFile(join(lockPath, "owner.json"), "utf8"));
39
+ return {
40
+ description: `${owner.writerId ?? "unknown writer"} pid=${owner.pid ?? "unknown"} acquiredAt=${owner.acquiredAt ?? "unknown"}`,
41
+ pid: owner.pid
42
+ };
43
+ } catch {
44
+ return { description: "unknown writer" };
45
+ }
46
+ }
47
+ async function acquireRecordLock(lockPath, options) {
48
+ await mkdir(dirname(lockPath), {
49
+ recursive: true,
50
+ mode: 448
51
+ });
52
+ const delays = options.retryDelaysMs ?? RECORD_LOCK_RETRY_DELAYS_MS;
53
+ let lastOwner = "unknown writer";
54
+ for (let attempt = 0; attempt <= delays.length; attempt += 1) {
55
+ try {
56
+ await mkdir(lockPath, { mode: 448 });
57
+ const owner = {
58
+ writerId: options.writerId,
59
+ pid: process.pid,
60
+ acquiredAt: (/* @__PURE__ */ new Date()).toISOString()
61
+ };
62
+ try {
63
+ await writeFile(join(lockPath, "owner.json"), JSON.stringify(owner, null, 2), "utf8");
64
+ } catch (error) {
65
+ try {
66
+ await rm(lockPath, {
67
+ recursive: true,
68
+ force: true
69
+ });
70
+ } catch {}
71
+ throw error;
72
+ }
73
+ await sweepRecordTmpFiles(options.recordPath);
74
+ return owner;
75
+ } catch (error) {
76
+ if (error.code !== "EEXIST") throw error;
77
+ const owner = await readOwner(lockPath);
78
+ lastOwner = owner.description;
79
+ if (isPidDead(owner.pid)) {
80
+ await rm(lockPath, {
81
+ recursive: true,
82
+ force: true
83
+ });
84
+ continue;
85
+ }
86
+ }
87
+ const delay = delays[attempt];
88
+ if (delay === void 0) break;
89
+ await new Promise((resolve) => setTimeout(resolve, delay));
90
+ }
91
+ throw new RecordLockError(lockPath, lastOwner);
92
+ }
93
+ async function releaseRecordLock(lockPath) {
94
+ await rm(lockPath, {
95
+ recursive: true,
96
+ force: true
97
+ });
98
+ }
99
+ async function withRecordFsLock(project, issueId, options, operation) {
100
+ const lockPath = recordLockPath(project, issueId);
101
+ await acquireRecordLock(lockPath, options);
102
+ try {
103
+ return await operation();
104
+ } finally {
105
+ await releaseRecordLock(lockPath);
106
+ }
107
+ }
108
+ var RECORD_LOCK_RETRY_DELAYS_MS, RecordLockError;
109
+ var init_fs_lock = __esmMin((() => {
110
+ init_paths();
111
+ init_projects();
112
+ RECORD_LOCK_RETRY_DELAYS_MS = [
113
+ 5,
114
+ 10,
115
+ 20,
116
+ 40,
117
+ 80,
118
+ 160,
119
+ 320,
120
+ 360
121
+ ];
122
+ RecordLockError = class extends Error {
123
+ constructor(lockPath, owner) {
124
+ super(`The per-issue record lock at ${lockPath} is held by ${owner}. Retry the command after that writer finishes.`);
125
+ this.lockPath = lockPath;
126
+ this.owner = owner;
127
+ this.name = "RecordLockError";
128
+ }
129
+ };
130
+ }));
131
+ //#endregion
132
+ //#region ../../lib/pan-dir/record-update.ts
133
+ /** The single locked read-modify-write door for per-issue records. */
134
+ function updateIssueRecordForWorkspace(workspacePath, issueId, mutator, options = {}) {
135
+ return updateIssueRecord(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId, mutator, options);
136
+ }
137
+ async function git(gitRoot, args) {
138
+ return (await execFileAsync("git", args, {
139
+ cwd: gitRoot,
140
+ encoding: "utf8",
141
+ timeout: 3e4,
142
+ maxBuffer: 16 * 1024 * 1024,
143
+ env: {
144
+ ...process.env,
145
+ HUSKY: "0"
146
+ }
147
+ })).stdout.trim();
148
+ }
149
+ function gitFailureMessage(error) {
150
+ if (error && typeof error === "object") {
151
+ const failure = error;
152
+ return failure.stderr?.trim() || failure.stdout?.trim() || failure.message;
153
+ }
154
+ return String(error);
155
+ }
156
+ function isRemoteRefRaceError(message) {
157
+ return /non-fast-forward|fetch first|stale info|cannot lock ref.*expected|failed to update ref/i.test(message);
158
+ }
159
+ async function abortRebase(gitRoot) {
160
+ try {
161
+ await git(gitRoot, ["rebase", "--abort"]);
162
+ } catch {}
163
+ }
164
+ async function replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath) {
165
+ const relativeRecordPath = relative(gitRoot, recordPath).replace(/\\/g, "/");
166
+ const conflicts = (await git(gitRoot, [
167
+ "diff",
168
+ "--name-only",
169
+ "--diff-filter=U"
170
+ ])).split("\n").map((path) => path.trim()).filter(Boolean);
171
+ if (conflicts.length !== 1 || conflicts[0] !== relativeRecordPath) throw new Error(`state rebase conflicted outside ${relativeRecordPath}: ${conflicts.join(", ") || "unknown conflict"}`);
172
+ await git(gitRoot, [
173
+ "restore",
174
+ `--source=origin/${STATE_BRANCH}`,
175
+ "--worktree",
176
+ "--",
177
+ relativeRecordPath
178
+ ]);
179
+ const remoteRecord = readIssueRecordSync(project, issueId);
180
+ if (!remoteRecord) throw new Error(`Remote ${issueId} state record is unreadable`);
181
+ writeIssueRecordSync(project, issueId, await mutator(remoteRecord) ?? remoteRecord);
182
+ await git(gitRoot, [
183
+ "add",
184
+ "--",
185
+ relativeRecordPath
186
+ ]);
187
+ await git(gitRoot, [
188
+ "-c",
189
+ "core.editor=true",
190
+ "rebase",
191
+ "--continue"
192
+ ]);
193
+ }
194
+ async function restoreRetryableRecord(project, issueId, original, recordPath) {
195
+ const stateHome = resolveStateReadHomeSync(project);
196
+ const gitRoot = stateHome.root;
197
+ const relativeRecordPath = relative(gitRoot, recordPath).replace(/\\/g, "/");
198
+ await abortRebase(gitRoot);
199
+ let restored = structuredClone(original);
200
+ const branch = stateHome.migrated ? STATE_BRANCH : await git(gitRoot, ["branch", "--show-current"]);
201
+ try {
202
+ await git(gitRoot, [
203
+ "fetch",
204
+ "origin",
205
+ branch
206
+ ]);
207
+ restored = JSON.parse(await git(gitRoot, ["show", `origin/${branch}:${relativeRecordPath}`]));
208
+ } catch {}
209
+ writeIssueRecordSync(project, issueId, restored);
210
+ await git(gitRoot, [
211
+ "add",
212
+ "--",
213
+ relativeRecordPath
214
+ ]);
215
+ try {
216
+ await git(gitRoot, [
217
+ "diff",
218
+ "--cached",
219
+ "--quiet",
220
+ "--",
221
+ relativeRecordPath
222
+ ]);
223
+ return;
224
+ } catch {}
225
+ await git(gitRoot, [
226
+ "commit",
227
+ "-m",
228
+ `chore(records): restore ${issueId} after failed state push`,
229
+ "--",
230
+ relativeRecordPath
231
+ ]);
232
+ }
233
+ async function reconcileStatePush(project, issueId, mutator, recordPath) {
234
+ const gitRoot = resolveStateReadHomeSync(project).root;
235
+ for (let attempt = 0; attempt < MAX_STATE_PUSH_RECONCILIATIONS; attempt += 1) {
236
+ await git(gitRoot, [
237
+ "fetch",
238
+ "origin",
239
+ STATE_BRANCH
240
+ ]);
241
+ try {
242
+ await git(gitRoot, ["rebase", `origin/${STATE_BRANCH}`]);
243
+ } catch (error) {
244
+ try {
245
+ await replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath);
246
+ } catch (replayError) {
247
+ await abortRebase(gitRoot);
248
+ throw new Error(`Failed to reconcile ${issueId} state after push race: ${gitFailureMessage(replayError)}`, { cause: error });
249
+ }
250
+ }
251
+ try {
252
+ await git(gitRoot, [
253
+ "push",
254
+ "origin",
255
+ STATE_BRANCH
256
+ ]);
257
+ const record = readIssueRecordSync(project, issueId);
258
+ if (!record) throw new Error(`Reconciled ${issueId} state record is unreadable`);
259
+ return record;
260
+ } catch (error) {
261
+ const message = gitFailureMessage(error);
262
+ if (!isRemoteRefRaceError(message)) throw new Error(`Failed to push reconciled ${issueId} state: ${message}`, { cause: error });
263
+ }
264
+ }
265
+ throw new Error(`Failed to push ${issueId} state after ${MAX_STATE_PUSH_RECONCILIATIONS} reconciliation attempts`);
266
+ }
267
+ async function updateIssueRecord(project, issueId, mutator, options = {}) {
268
+ const normalizedIssueId = issueId.toUpperCase();
269
+ const recordPath = getIssueRecordPath(project, normalizedIssueId);
270
+ return withRecordFsLock(project, normalizedIssueId, {
271
+ writerId: options.writerId ?? process.env.OVERDECK_AGENT_ID ?? `process-${process.pid}@${hostname()}`,
272
+ recordPath
273
+ }, async () => {
274
+ const current = readIssueRecordSync(project, normalizedIssueId) ?? ensureIssueRecordSync(project, normalizedIssueId);
275
+ const original = structuredClone(current);
276
+ const next = await mutator(current) ?? current;
277
+ const path = writeIssueRecordSync(project, normalizedIssueId, next);
278
+ if (options.autoCommit === false) return readIssueRecordSync(project, normalizedIssueId) ?? next;
279
+ try {
280
+ const commitRoot = queueIssueRecordCommit(project, normalizedIssueId, path);
281
+ const flushed = await Effect.runPromise(flushAutoCommits(commitRoot));
282
+ if (flushed.pushed === false) {
283
+ if (resolveStateReadHomeSync(project).migrated && isRemoteRefRaceError(flushed.reason ?? "")) return await reconcileStatePush(project, normalizedIssueId, mutator, path);
284
+ throw new Error(`Failed to push ${normalizedIssueId} state: ${flushed.reason ?? "unknown push failure"}`);
285
+ }
286
+ if (!flushed.committed && !["no diff", "no pending"].includes(flushed.reason ?? "")) throw new Error(`Failed to commit ${normalizedIssueId} state: ${flushed.reason ?? "unknown commit failure"}`);
287
+ return readIssueRecordSync(project, normalizedIssueId) ?? next;
288
+ } catch (error) {
289
+ try {
290
+ await restoreRetryableRecord(project, normalizedIssueId, original, path);
291
+ } catch (restoreError) {
292
+ throw new Error(`Failed to persist ${normalizedIssueId} state and restore retryability: ${gitFailureMessage(restoreError)}`, { cause: error });
293
+ }
294
+ throw error;
295
+ }
296
+ });
297
+ }
298
+ var execFileAsync, MAX_STATE_PUSH_RECONCILIATIONS;
299
+ var init_record_update = __esmMin((() => {
300
+ init_state_read_home();
301
+ init_auto_commit();
302
+ init_fs_lock();
303
+ init_record();
304
+ execFileAsync = promisify(execFile);
305
+ MAX_STATE_PUSH_RECONCILIATIONS = 3;
306
+ }));
307
+ //#endregion
308
+ export { isPidDead as a, init_fs_lock as i, updateIssueRecord as n, updateIssueRecordForWorkspace as r, init_record_update as t };
309
+
310
+ //# sourceMappingURL=record-update-dE1Aw83j.js.map
@@ -1,4 +1,4 @@
1
- import { r as updateIssueRecordForWorkspace, t as init_record_update } from "./record-update-Crz74r-6.js";
1
+ import { r as updateIssueRecordForWorkspace, t as init_record_update } from "./record-update-dE1Aw83j.js";
2
2
  //#region ../../lib/cloister/recovery-trip.ts
3
3
  init_record_update();
4
4
  async function recordRecoveryFailure(workspacePath, issue, recoveryPath, obligationGeneration, threshold = 25, now = /* @__PURE__ */ new Date()) {
@@ -41,4 +41,4 @@ async function recordRecoveryFailure(workspacePath, issue, recoveryPath, obligat
41
41
  //#endregion
42
42
  export { recordRecoveryFailure as t };
43
43
 
44
- //# sourceMappingURL=recovery-trip-DkzJSej9.js.map
44
+ //# sourceMappingURL=recovery-trip-BvRWfUXM.js.map
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Hn as init_projects, In as getProjectSync, kn as findProjectByPathSync } from "./config-yaml-ig8Nwtiw.js";
3
- import { c as init_review_status, y as setReviewStatusSync } from "./review-status-DFRjDFef.js";
4
- import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DiISXcC-.js";
5
- import { i as withComponentStateSync, n as init_release_set, r as upsertReleaseSetSync } from "./release-set-DeUSOEHy.js";
2
+ import { Tn as init_projects, fn as findProjectByPathSync, yn as getProjectSync } from "./config-yaml-DySPNmKN.js";
3
+ import { b as setReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
4
+ import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DJ8-UErs.js";
5
+ import { i as withComponentStateSync, n as init_release_set, r as upsertReleaseSetSync } from "./release-set-CQfuN9-v.js";
6
6
  import { exec } from "node:child_process";
7
7
  import { promisify } from "node:util";
8
8
  //#region ../../lib/release/release-plan.ts
@@ -303,4 +303,4 @@ __esmMin((() => {
303
303
  }))();
304
304
  export { runRelease };
305
305
 
306
- //# sourceMappingURL=release-engine-DMINVN8S.js.map
306
+ //# sourceMappingURL=release-engine-Cx48W7z8.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { fr as init_issue_id, gr as resolveIssueIdSync } from "./config-yaml-ig8Nwtiw.js";
3
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-D4iNWMA5.js";
2
+ import { $n as resolveIssueIdSync, Yn as init_issue_id } from "./config-yaml-DySPNmKN.js";
3
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BEqFxlJc.js";
4
4
  import "effect";
5
5
  //#region ../../lib/overdeck/release-sync.ts
6
6
  function isoFromMillis(value) {
@@ -122,4 +122,4 @@ var init_release_set = __esmMin((() => {
122
122
  //#endregion
123
123
  export { withComponentStateSync as i, init_release_set as n, upsertReleaseSetSync as r, getReleaseSetSync as t };
124
124
 
125
- //# sourceMappingURL=release-set-DeUSOEHy.js.map
125
+ //# sourceMappingURL=release-set-CQfuN9-v.js.map
@@ -1,5 +1,5 @@
1
- import "./workspace-metadata-tiSRIWJP.js";
2
- import { C as init_fly_provider, S as createFlyProvider, s as init_remote_agents } from "./remote-agents-Ct_WOyke.js";
1
+ import "./workspace-metadata-_WygnyoX.js";
2
+ import { C as init_fly_provider, S as createFlyProvider, s as init_remote_agents } from "./remote-agents-By1ige5O.js";
3
3
  import { Effect } from "effect";
4
4
  //#region ../../lib/remote/index.ts
5
5
  init_fly_provider();
@@ -52,4 +52,4 @@ function createFlyProviderFromConfig(remoteConfig, tierOverride) {
52
52
  //#endregion
53
53
  export { getRemoteProvider as n, isRemoteAvailable as r, createFlyProviderFromConfig as t };
54
54
 
55
- //# sourceMappingURL=remote-b-c5bOce.js.map
55
+ //# sourceMappingURL=remote-C_2hasl7.js.map
@@ -1,4 +1,4 @@
1
- import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync, n as deleteWorkspaceMetadataSync, o as saveWorkspaceMetadataSync, r as findRemoteWorkspaceMetadataSync, t as WORKSPACES_DIR } from "./workspace-metadata-tiSRIWJP.js";
2
- import { S as createFlyProvider, d as killRemoteAgent, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, m as loadRemoteAgentState, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, u as isRemoteAgentRunning, v as sendToRemoteAgent, x as FlyProvider, y as spawnRemoteAgent } from "./remote-agents-Ct_WOyke.js";
3
- import { n as getRemoteProvider, r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-b-c5bOce.js";
1
+ import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync, n as deleteWorkspaceMetadataSync, o as saveWorkspaceMetadataSync, r as findRemoteWorkspaceMetadataSync, t as WORKSPACES_DIR } from "./workspace-metadata-_WygnyoX.js";
2
+ import { S as createFlyProvider, d as killRemoteAgent, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, m as loadRemoteAgentState, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, u as isRemoteAgentRunning, v as sendToRemoteAgent, x as FlyProvider, y as spawnRemoteAgent } from "./remote-agents-By1ige5O.js";
3
+ import { n as getRemoteProvider, r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-C_2hasl7.js";
4
4
  export { FlyProvider, WORKSPACES_DIR, checkRemoteSpendCap, createFlyProvider, createFlyProviderFromConfig, deleteWorkspaceMetadataSync, findRemoteWorkspaceMetadataSync, getRemoteAgentOutput, getRemoteProvider, isRemoteAgentRunning, isRemoteAvailable, killRemoteAgent, listRemoteAgents, listWorkspaceMetadataSync, loadRemoteAgentState, loadWorkspaceMetadataSync, pollRemoteAgentStatus, refreshHostHeartbeatForEphemeralVms, saveWorkspaceMetadataSync, sendToRemoteAgent, spawnRemoteAgent };
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Bt as resolveProjectForIssue, Nt as init_record, _r as require_dist, jr as init_errors } from "./config-yaml-ig8Nwtiw.js";
3
- import { w as init_tmux, y as getManagedTmuxSocketName } from "./tmux-L5LgvGLp.js";
4
- import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-COgR2By1.js";
5
- import { a as init_claude_permissions, i as getClaudePermissionFlagsSync, n as buildClaudeUserSettingsSync, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-nSFKH78M.js";
6
- import { c as isStateMigrated, o as init_state_home } from "./state-home-CONQvZR0.js";
2
+ import { Ft as resolveProjectForIssue, Ot as init_record, er as require_dist, mr as init_errors } from "./config-yaml-DySPNmKN.js";
3
+ import { w as init_tmux, y as getManagedTmuxSocketName } from "./tmux-R7N7y-Mh.js";
4
+ import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-BBWG_SiS.js";
5
+ import { a as init_claude_permissions, i as getClaudePermissionFlagsSync, n as buildClaudeUserSettingsSync, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-DNWEVV6z.js";
6
+ import { c as isStateMigrated, o as init_state_home } from "./state-home-Cn_Qu8IX.js";
7
7
  import { Data, Effect, Stream } from "effect";
8
8
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
9
9
  import { join } from "path";
@@ -1232,4 +1232,4 @@ var init_remote_agents = __esmMin((() => {
1232
1232
  //#endregion
1233
1233
  export { init_fly_provider as C, createFlyProvider as S, saveRemoteAgentState as _, generatePushDaemonScript as a, writeRemoteFile as b, installEphemeralWatchdog as c, killRemoteAgent as d, listActiveRemoteAgentStates as f, refreshHostHeartbeatForEphemeralVms as g, pollRemoteAgentStatus as h, generateEphemeralWatchdogScript as i, installPushDaemon as l, loadRemoteAgentState as m, checkRemoteDurabilityPreflight as n, getRemoteAgentOutput as o, listRemoteAgents as p, checkRemoteSpendCap as r, init_remote_agents as s, assertFlyRemoteStateSupported as t, isRemoteAgentRunning as u, sendToRemoteAgent as v, FlyProvider as x, spawnRemoteAgent as y };
1234
1234
 
1235
- //# sourceMappingURL=remote-agents-Ct_WOyke.js.map
1235
+ //# sourceMappingURL=remote-agents-By1ige5O.js.map