@overdeck/desktop 0.45.12 → 0.45.15

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 (355) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +33 -0
  2. package/package.json +7 -2
  3. package/server/{acceptance-criteria-1LHgD9vg.js → acceptance-criteria-DHZk2ceV.js} +2 -2
  4. package/server/{advancing-selfheal-BqsLWqEM.js → advancing-selfheal-CSuZ31bB.js} +5 -5
  5. package/server/{agent-gc-CUb52n7s.js → agent-gc-D_DxfBHR.js} +3 -3
  6. package/server/{agent-state-D-moNwhA.js → agent-state-EP2QFV9n.js} +1 -1
  7. package/server/{agent-state-service-BzESvLOf.js → agent-state-service-BZkvgQf4.js} +5 -5
  8. package/server/{agent-state-service-BaZH7sXJ.js → agent-state-service-C_2ZAQRP.js} +1 -1
  9. package/server/{agents-B5LfpLPv.js → agents-CsOzAmRg.js} +145 -78
  10. package/server/{agents-C4kZ8a2r.js → agents-DCvyTXNU.js} +1 -1
  11. package/server/{archive-planning-BbZe-8IK.js → archive-planning-CTILQRnV.js} +1 -1
  12. package/server/{archive-planning-oX1pj6nY.js → archive-planning-DkivCk1A.js} +4 -4
  13. package/server/{artifact-index-jobs-DGr6bxev.js → artifact-index-jobs-CmsvQ1ey.js} +2 -2
  14. package/server/auto-commit-QAfsu3Sb.js +3 -0
  15. package/server/{backlog-auto-trigger-BlJHikOm.js → backlog-auto-trigger-ueRaT8Dy.js} +2 -2
  16. package/server/{bd-process-lock-i3CYMS-B.js → bd-process-lock-D3S4T4o-.js} +32 -11
  17. package/server/{beads-DD7fYCl5.js → beads-BGGxrkZ5.js} +96 -196
  18. package/server/{beads-BNU-fb48.js → beads-CYsLiyIM.js} +1 -1
  19. package/server/{beads-query-e6oku4P5.js → beads-query-B1DlJVp9.js} +24 -99
  20. package/server/beads-restore-CyygSmmn.js +23 -0
  21. package/server/{behavior-CPf0pbOt.js → behavior-Cpj03N4v.js} +3 -3
  22. package/server/{briefing-freshness-B2FdLwIv.js → briefing-freshness-Kh5V8RTh.js} +4 -4
  23. package/server/{checkpoint-manager-eFgaMMu4.js → checkpoint-manager-CAFos8e1.js} +1 -1
  24. package/server/{checkpoint-manager-JryW6MpM.js → checkpoint-manager-fu9oVsR-.js} +2 -2
  25. package/server/checkpoint-worker.js +1 -1
  26. package/server/{checkpoints-qvOqvMuC.js → checkpoints-1BqOlS4q.js} +2 -2
  27. package/server/{checkpoints-BK17oicz.js → checkpoints-DvhGi8P_.js} +1 -1
  28. package/server/claude-hooks-provision-s_wdpeVj.js +360 -0
  29. package/server/{claude-permissions-B6bWGh9d.js → claude-permissions-CaWqysff.js} +2 -2
  30. package/server/{claude-settings-overlay-BPdhTPjo.js → claude-settings-overlay-BbA4FbVI.js} +1 -1
  31. package/server/{claude-settings-overlay-CRyyKKXQ.js → claude-settings-overlay-CcTf0xzG.js} +2 -2
  32. package/server/{cli-B75AieAM.js → cli-BwCvCUBK.js} +9 -9
  33. package/server/cli-ClIQwgMI.js +3 -0
  34. package/server/{cliproxy-CCzwuSNe.js → cliproxy-BsoNNDAj.js} +2 -2
  35. package/server/{cliproxy-DOQf66G9.js → cliproxy-C2xC-3vH.js} +1 -1
  36. package/server/{close-issue-_X3MXJyG.js → close-issue-BleIwP3f.js} +5 -5
  37. package/server/{closed-issue-reaper-CLR7ClsO.js → closed-issue-reaper-BwUUvjEW.js} +1 -1
  38. package/server/{closed-issue-reaper-BsUfBSjM.js → closed-issue-reaper-mC5pujeb.js} +102 -30
  39. package/server/{codex-CY-QRuU9.js → codex-B7DTpwEw.js} +1 -1
  40. package/server/{codex-B4KEpX5V.js → codex-DW60_5j2.js} +5 -5
  41. package/server/{compact-beads-cZds2MTr.js → compact-beads-CK_hHEnB.js} +1 -1
  42. package/server/{compact-beads-uEDccC76.js → compact-beads-DKL54y6j.js} +15 -8
  43. package/server/{config-DARrpYWA.js → config-BRNQJXhA.js} +1 -1
  44. package/server/{config-8sjaU6jZ.js → config-ZNnMpIlh.js} +2 -2
  45. package/server/{config-yaml-ClpGgrf6.js → config-yaml-Dcz-8uit.js} +29 -3
  46. package/server/{conflict-gate-Ds9_2yjd.js → conflict-gate-DGT8jCLp.js} +1 -1
  47. package/server/{conflict-gate-BtB_o-Vi.js → conflict-gate-DTje2Ll7.js} +3 -3
  48. package/server/{context-layers-r2ywnQYA.js → context-layers-BdUCQ-cl.js} +3 -3
  49. package/server/{context-layers-CRCk1QG7.js → context-layers-ByOWUjUg.js} +2 -2
  50. package/server/{control-settings-D1B3u6HP.js → control-settings-DwkAeooY.js} +4 -4
  51. package/server/{conversation-compaction-D86Zo2Ci.js → conversation-compaction-OTYgd6eg.js} +8 -8
  52. package/server/{conversation-compaction-CZRVk4hg.js → conversation-compaction-WYQZUVDm.js} +1 -1
  53. package/server/{conversation-service-CuTVU8dV.js → conversation-service-BR1OgvxO.js} +5 -5
  54. package/server/{conversation-service-CkL-6MuG.js → conversation-service-C_kNZPLx.js} +1 -1
  55. package/server/{conversations-DfJKBDwB.js → conversations-DG2M8WnT.js} +4 -4
  56. package/server/{conversations-BmWEluPL.js → conversations-izHvSoAR.js} +1 -1
  57. package/server/{cost-DAPYN6iA.js → cost-B2mj17iG.js} +3 -3
  58. package/server/{cost-CCnqa5xK.js → cost-DQ2ajr_m.js} +2 -2
  59. package/server/{cost-sync-BDL10Nwu.js → cost-sync-gTayEuWP.js} +3 -3
  60. package/server/{dag-Dv2r5bVD.js → dag-CqTehWpY.js} +3 -3
  61. package/server/{dangerous-git-ops-Dcw7PbYo.js → dangerous-git-ops-DDWQlPC3.js} +1 -1
  62. package/server/dashboard-db-worker.js +6 -6
  63. package/server/{deacon-DYnZH7kC.js → deacon-BqW9HMew.js} +3 -3
  64. package/server/{deacon-CM0MxbS8.js → deacon-DrKDBeJL.js} +161 -1594
  65. package/server/{deacon-nudge-log-B-naf89q.js → deacon-nudge-log-D1wEK6zF.js} +1 -1
  66. package/server/deacon-swarm-BY5hKNaU.js +2 -0
  67. package/server/{deacon-swarm-BstYoz8Q.js → deacon-swarm-CO_A7xyd.js} +12 -105
  68. package/server/deacon.js +7 -7
  69. package/server/{devcontainer-renderer-CaYOG9JN.js → devcontainer-renderer-BQolp_qZ.js} +3 -3
  70. package/server/{dist-BIC8spJ0.js → dist-Bc32rWJB.js} +1 -1
  71. package/server/dist-DGTwcZhI.js +3 -0
  72. package/server/{docker-DDI1shu3.js → docker-s-esqZ__.js} +67 -28
  73. package/server/{ensure-devcontainer-DCAg3ksz.js → ensure-devcontainer-DA4-jF6R.js} +4 -4
  74. package/server/{ensure-devcontainer-CbSXvN9W.js → ensure-devcontainer-pUVaT0h3.js} +1 -1
  75. package/server/{esm-shims-DiV9jHa_.js → esm-shims-CJHy8CZY.js} +1 -1
  76. package/server/{event-store-DU3HkZlN.js → event-store-CcJAhKCl.js} +1 -1
  77. package/server/{event-store-DCMqyI07.js → event-store-DRte2Rwt.js} +3 -3
  78. package/server/{events-BfiosVAn.js → events-Bej1w_k8.js} +3 -3
  79. package/server/{events-DLRxpSuV.js → events-CtsLScn8.js} +1 -1
  80. package/server/export-Dx_qJ3h8.js +87 -0
  81. package/server/{factory-BMtWV9iv.js → factory-FN727tWr.js} +4 -4
  82. package/server/{feature-registry-population-DA7bO6Zn.js → feature-registry-population-ie-yBcQC.js} +4 -4
  83. package/server/{feature-registry-storage-nAY1fbBt.js → feature-registry-storage-CkZTFSsn.js} +2 -2
  84. package/server/{features-DMu7eGmU.js → features-Dtm9ABuz.js} +2 -2
  85. package/server/{feedback-target-DHqcw3cN.js → feedback-target-BYtpyt1i.js} +6 -6
  86. package/server/{feedback-target-B2SEai8-.js → feedback-target-DVJQDiE4.js} +1 -1
  87. package/server/{feedback-writer-DMBdS_jL.js → feedback-writer-DOUhyIW2.js} +1 -1
  88. package/server/{feedback-writer-qvm7UON7.js → feedback-writer-fdE1BzeL.js} +4 -4
  89. package/server/{flywheel-k4FPtCQ_.js → flywheel-Bi82iiNl.js} +1 -1
  90. package/server/{flywheel-Dfpx4bIV.js → flywheel-Bv3wv2S6.js} +23 -15
  91. package/server/{flywheel-D2LdPSic.js → flywheel-CUErLAyN.js} +13 -13
  92. package/server/{flywheel-merge-order-CB4lbXeJ.js → flywheel-merge-order-BaEN3iyN.js} +7 -7
  93. package/server/{flywheel-merge-order-CttTazRY.js → flywheel-merge-order-DXjeBnJ1.js} +1 -1
  94. package/server/{forge-CoPFXFyl.js → forge-ButEdJ31.js} +2 -2
  95. package/server/forge-XlDgPQWs.js +2 -0
  96. package/server/{from-B0YoJl9-.js → from-CbtTxftl.js} +1 -1
  97. package/server/{fts-db-DAHW1yA_.js → fts-db-CBgBLZcL.js} +2 -2
  98. package/server/{fts-operations-DDXDBi0d.js → fts-operations-CI9Xuo_1.js} +2 -2
  99. package/server/{git-utils-DbfC0zls.js → git-utils-BCLRWQ-y.js} +1 -1
  100. package/server/{git-utils-B90Zjzfl.js → git-utils-ClfpP47N.js} +2 -2
  101. package/server/{github-app-C7lftMNj.js → github-app-DRD2woO0.js} +1 -1
  102. package/server/{github-app-BecAnXRX.js → github-app-DscZ0_B6.js} +2 -2
  103. package/server/{github-client-D21rCIXk.js → github-client-DpiZnxGH.js} +2 -2
  104. package/server/{github-client-BwtKZtM0.js → github-client-iFRw8f7e.js} +1 -1
  105. package/server/{github-pr-lookup-CzVWuysl.js → github-pr-lookup-D-EBexxC.js} +2 -2
  106. package/server/{harness-resolve-SkRJm4a7.js → harness-resolve-iMjyNUJ2.js} +3 -3
  107. package/server/{health-events-DA_JLpgZ.js → health-events-B_WsQyYm.js} +1 -1
  108. package/server/{health-events-BT0aAfeA.js → health-events-CRdxDFN2.js} +2 -2
  109. package/server/{hooks-BQxRXtRb.js → hooks-C1ScyVxP.js} +1 -1
  110. package/server/{hooks-DxEn2BoY.js → hooks-C9b7Vqpw.js} +2 -2
  111. package/server/hume-K1pi8jC4.js +3 -0
  112. package/server/{hume-DkVOs1Qi.js → hume-TQ5pvOZ_.js} +2 -2
  113. package/server/{idle-stack-reaper-DGy7tvC9.js → idle-stack-reaper-B1kG7B_X.js} +2 -2
  114. package/server/{idle-stack-reaper-C7fJL8jH.js → idle-stack-reaper-iFVOAoJy.js} +1 -1
  115. package/server/{infra-DE3C4PMr.js → infra-bpq1MHKU.js} +50 -3
  116. package/server/{injection-Dt22tGvS.js → injection-BLWfwTVZ.js} +1 -1
  117. package/server/{injection-Cc4Qt8LZ.js → injection-DJqWld1v.js} +7 -7
  118. package/server/inspect-agent-477VxQim.js +2 -0
  119. package/server/{inspect-agent-DOaCDkCF.js → inspect-agent-DytCsltn.js} +9 -9
  120. package/server/{internal-token-nobT6FhA.js → internal-token-CCaWaTwE.js} +1 -1
  121. package/server/{internal-token-B_1YLWLI.js → internal-token-CjlhdufS.js} +2 -2
  122. package/server/{io-A7ZuOBkz.js → io-BiQ2Cs3k.js} +2 -2
  123. package/server/{issue-closed-Da3DeomA.js → issue-closed-FApNiOOs.js} +4 -4
  124. package/server/{issue-lifecycle-Bd9XBJAQ.js → issue-lifecycle-BkFWNjlD.js} +1 -1
  125. package/server/{issue-lifecycle-543pQX9D.js → issue-lifecycle-C-K53ASY.js} +21 -21
  126. package/server/{issue-service-singleton-Brc3t0SV.js → issue-service-singleton-CuHGpJJP.js} +8 -8
  127. package/server/{issue-service-singleton-BC2JLZi7.js → issue-service-singleton-bG1WdSdQ.js} +1 -1
  128. package/server/{issues-D3kt9UWE.js → issues-CwQMphDH.js} +2 -2
  129. package/server/jsonl-parser-dNIjHgym.js +245 -0
  130. package/server/{label-cleanup-w9X_T3AQ.js → label-cleanup-DYvAZknd.js} +3 -3
  131. package/server/{layers-Cwe1J-9o.js → layers-CD6FysRU.js} +2 -2
  132. package/server/{lifecycle-f1GbDK33.js → lifecycle-C_73gi-C.js} +7 -7
  133. package/server/{lifecycle-io-D56q8zlO.js → lifecycle-io-C_Wu0_i-.js} +1 -1
  134. package/server/{lifecycle-io-Bqvj0m3i.js → lifecycle-io-CeYxP3cE.js} +4 -4
  135. package/server/{linear-client-Bh4T4S-c.js → linear-client-4qoKnuQu.js} +1 -1
  136. package/server/{linear-client-CfJMTAYd.js → linear-client-EtVyblVz.js} +2 -2
  137. package/server/memory-fts-worker.js +1 -1
  138. package/server/{merge-ZrXFM3jv.js → merge-7rqkTUm2.js} +3 -3
  139. package/server/merge-agent-36wfYm2u.js +3 -0
  140. package/server/{merge-agent-CHHs5S_0.js → merge-agent-4Zhlgvqp.js} +62 -27
  141. package/server/{merge-batch-BwhGdlh4.js → merge-batch-itfnwdsT.js} +1 -1
  142. package/server/{merge-blockers-BMhDpMl_.js → merge-blockers-Bto_Oe_o.js} +2 -2
  143. package/server/{merge-DRMPa8CQ.js → merge-brm721Es.js} +1 -1
  144. package/server/merge-ops-PzqsW69V.js +2 -0
  145. package/server/{merge-rebase-R7MfqpiE.js → merge-rebase-Czfqfe4q.js} +2 -2
  146. package/server/{merge-set-B3Breacq.js → merge-set-BIkGQL9j.js} +9 -5
  147. package/server/{merge-set-D-iXNP0I.js → merge-set-G1RHcu3D.js} +1 -1
  148. package/server/{merge-sync-DHWbGtjR.js → merge-sync-B43Dybea.js} +2 -2
  149. package/server/{merge-sync-bOOtfeXR.js → merge-sync-DIrmlZUr.js} +1 -1
  150. package/server/{merge-train-98ptZrPT.js → merge-train-DGqVuNZV.js} +3 -3
  151. package/server/{merge-train-deps-B5FWJTE2.js → merge-train-deps-q15XLnAS.js} +4 -4
  152. package/server/{merge-verification-BGiuiXAK.js → merge-verification-Cqfxx6bE.js} +4 -4
  153. package/server/{multipart-parser-D7mzNNDm.js → multipart-parser-CiPxxfUH.js} +2 -2
  154. package/server/node_modules/.package-lock.json +1 -1
  155. package/server/{orphan-proposed-reconciler-BSGCNJ6X.js → orphan-proposed-reconciler-BWWHn4Lr.js} +15 -39
  156. package/server/{orphan-proposed-reconciler-CSuxivr9.js → orphan-proposed-reconciler-DAD9FJtQ.js} +1 -1
  157. package/server/package-lock.json +2 -2
  158. package/server/package.json +1 -1
  159. package/server/{pan-dir-DoPtdHrp.js → pan-dir-Bj7Hy8iu.js} +3 -3
  160. package/server/{paths-CVDLPxXp.js → paths-C9DkhIOT.js} +2 -2
  161. package/server/{pickup-KLRUhThD.js → pickup-CKRuGDsB.js} +1 -1
  162. package/server/{pipeline-notifier-BtYHbBPl.js → pipeline-notifier-BkKbQ8ji.js} +1 -1
  163. package/server/{pipeline-notifier-WD2dnOsR.js → pipeline-notifier-CAurUste.js} +2 -2
  164. package/server/project-pipelines-BRWaGmI4.js +162 -0
  165. package/server/projects-KJ94e50I.js +3 -0
  166. package/server/{prompts-Cg7e9FPb.js → prompts-DfI5qbTW.js} +2 -2
  167. package/server/{providers-fLduChnX.js → providers-CWDXoaMA.js} +7 -7
  168. package/server/providers-D-5txBRc.js +3 -0
  169. package/server/public/assets/{chunk-BO2N2NFS-aNlsGDCu.js → chunk-BO2N2NFS-ClukPsZQ.js} +4 -4
  170. package/server/public/assets/{diagram-OG6HWLK6-CnjkrvT8.js → diagram-OG6HWLK6-Avtvq2qI.js} +1 -1
  171. package/server/public/assets/{dist-Bg3Sbsx4.js → dist-BEHQuasD.js} +3 -3
  172. package/server/public/assets/{dist-CGKBCieA.js → dist-BvmY-qb1.js} +1 -1
  173. package/server/public/assets/{ganttDiagram-6RSMTGT7-C8LLKj23.js → ganttDiagram-6RSMTGT7-7KhCd0fH.js} +1 -1
  174. package/server/public/assets/{highlighted-body-OFNGDK62-BSDEUvhW.js → highlighted-body-OFNGDK62-iQoBMTf0.js} +1 -1
  175. package/server/public/assets/index-DUFDmvmH.css +1 -0
  176. package/server/public/assets/index-DnTZ2QeN.js +796 -0
  177. package/server/public/assets/{linear-DEbYZoxg.js → linear-CiJHW9g5.js} +1 -1
  178. package/server/public/assets/mermaid-GHXKKRXX-DZJOwgBG.js +1 -0
  179. package/server/public/assets/{pieDiagram-4H26LBE5-BtZL5pXE.js → pieDiagram-4H26LBE5-BOhmvUhW.js} +1 -1
  180. package/server/public/assets/{prod-DYVvIyuh.js → prod-DmLBBqat.js} +4 -4
  181. package/server/public/assets/{quadrantDiagram-W4KKPZXB-a7vS8Jc8.js → quadrantDiagram-W4KKPZXB-Cjku660G.js} +1 -1
  182. package/server/public/assets/{sankeyDiagram-5OEKKPKP-Ckbq2SWH.js → sankeyDiagram-5OEKKPKP-D52w5oPh.js} +1 -1
  183. package/server/public/assets/{xychartDiagram-2RQKCTM6-DJyeNa99.js → xychartDiagram-2RQKCTM6-BTO07_Iv.js} +1 -1
  184. package/server/public/index.html +2 -2
  185. package/server/{pull-requests-1WXmTBlo.js → pull-requests-Bmre-Xlz.js} +3 -3
  186. package/server/{pull-requests-D2SjJIwY.js → pull-requests-CKZPWhjD.js} +1 -1
  187. package/server/{rally-8aQlLLVj.js → rally-BBd9tQ__.js} +3 -3
  188. package/server/rally-Dc2Wnxw2.js +3 -0
  189. package/server/{rally-api-BtvwdX6d.js → rally-api-DDc85HIz.js} +1 -1
  190. package/server/{rally-api-H5I2CBO0.js → rally-api-DxZFObI_.js} +2 -2
  191. package/server/{rally-client-Bt-qHiOh.js → rally-client-BADHn0m_.js} +1 -1
  192. package/server/{rally-client-33CYZYYu.js → rally-client-DvvLiAQP.js} +4 -4
  193. package/server/{reap-terminal-sessions-CAmURC2h.js → reap-terminal-sessions-D6JDJsqF.js} +1 -1
  194. package/server/{reap-terminal-sessions-BwJb2DLJ.js → reap-terminal-sessions-D_xvy-Mk.js} +1 -1
  195. package/server/{rebuild-stack-KHkkrGjx.js → rebuild-stack-D19i080j.js} +6 -6
  196. package/server/{rebuild-stack-CXSgAGPR.js → rebuild-stack-GOsWqXi3.js} +1 -1
  197. package/server/{reconstruct-cache-D_Ml65_6.js → reconstruct-cache-lQrG4xGg.js} +6 -6
  198. package/server/record-pyB6VA32.js +3 -0
  199. package/server/recovery-trip-Dfh1tNHn.js +98 -0
  200. package/server/release-engine-DxcMWRuK.js +306 -0
  201. package/server/release-set-BYsgX7o6.js +125 -0
  202. package/server/{remote-CGuognN3.js → remote-8W2Yhygw.js} +3 -3
  203. package/server/{remote-D0Old0Cv.js → remote-DmeL21dF.js} +3 -3
  204. package/server/{remote-agents-DfhMq6kQ.js → remote-agents-BfQBE6MN.js} +5 -5
  205. package/server/{remote-agents-UHoi4oGr.js → remote-agents-DlvbzO7m.js} +1 -1
  206. package/server/{remote-completion-RZYePR_0.js → remote-completion-BgkiSQmx.js} +12 -12
  207. package/server/resolver-dTpSSzaH.js +158 -0
  208. package/server/resume-DhcIqsTm.js +3 -0
  209. package/server/{review-agent-sZBCpEVv.js → review-agent-D025Wt7w.js} +22 -22
  210. package/server/{review-agent-uwVftH98.js → review-agent-Rub0OpZc.js} +1 -1
  211. package/server/{review-artifacts-C7a45b1_.js → review-artifacts-CX951jTU.js} +6 -6
  212. package/server/{review-context-CErbQpKL.js → review-context-DGGGR_w5.js} +7 -7
  213. package/server/{review-monitor-DHD9m_kh.js → review-monitor-0_qqMcnS.js} +2 -2
  214. package/server/{review-status-gPndPUBc.js → review-status-4qqLkRMu.js} +24 -17
  215. package/server/{review-status-JhQ3qlDS.js → review-status-Br6lAFGO.js} +1 -1
  216. package/server/{review-status-enrichment-qWvWckYN.js → review-status-enrichment-Cr8m3uVL.js} +3 -3
  217. package/server/{review-status-sync-B_GrEke8.js → review-status-sync-D3KUhsdA.js} +1 -1
  218. package/server/{review-status-sync-D3A9KX95.js → review-status-sync-OC-l1lNt.js} +9 -5
  219. package/server/{review-verdict-feedback-4WZ5ZdbC.js → review-verdict-feedback-DrWMuRaj.js} +6 -6
  220. package/server/{review-verdict-feedback-Zo0r_z4m.js → review-verdict-feedback-YOzmsq9G.js} +1 -1
  221. package/server/{rollup-BrUIKMv_.js → rollup-CnxbwaLH.js} +8 -8
  222. package/server/{rollup-Bmhn80tB.js → rollup-DmazRY0j.js} +1 -1
  223. package/server/{scanner-BIGumel_.js → scanner-DE1MqAaF.js} +7 -7
  224. package/server/{sequence-io-DA0akEQN.js → sequence-io-C0uoqfGx.js} +4 -4
  225. package/server/{sequencer-agent-DeflKafB.js → sequencer-agent-i-b2u4SJ.js} +10 -6
  226. package/server/server.js +1115 -297
  227. package/server/{service-V0sUK-OR.js → service-D0_gh2tl.js} +1668 -1408
  228. package/server/{session-fork-Yx3UcAQf.js → session-fork-DZ12vipL.js} +2 -2
  229. package/server/{settings-CFEeQRj2.js → settings-ByqjPtFO.js} +2 -2
  230. package/server/{settings-CxVate0h.js → settings-DCC4BAqj.js} +3 -3
  231. package/server/settings-yydgaqhv.js +2 -0
  232. package/server/{shadow-engineering-BRxnVSDk.js → shadow-engineering-BhnmtW5m.js} +2 -2
  233. package/server/{shadow-state-1aS8FijU.js → shadow-state-ByXZehsy.js} +1 -1
  234. package/server/{shadow-state-BiMwdyl1.js → shadow-state-CKm8xWX9.js} +2 -2
  235. package/server/{ship-log-CMWH3H5-.js → ship-log-DE_0Cv_i.js} +1 -1
  236. package/server/{smart-compaction-Bw1K_Sbl.js → smart-compaction-D5Zen3AA.js} +7 -7
  237. package/server/{smart-compaction-xblMyVpT.js → smart-compaction-h4_ca6Uk.js} +1 -1
  238. package/server/{spawn-planning-session-CzDFSKAQ.js → spawn-planning-session-Bgi7Ub02.js} +1 -1
  239. package/server/{spawn-planning-session-DxLxcM7m.js → spawn-planning-session-Dueit4WX.js} +15 -15
  240. package/server/{specialist-completion-BiEXUHfD.js → specialist-completion-BZ8M-WZ0.js} +1 -1
  241. package/server/{specialist-context-BfkTA81h.js → specialist-context-BMq83C58.js} +5 -5
  242. package/server/{specialist-handoff-logger-BiKuLtNm.js → specialist-handoff-logger-BxX1YefH.js} +2 -2
  243. package/server/{specialist-logs-CFJjGsLC.js → specialist-logs-BWZYcJ6P.js} +3 -3
  244. package/server/{specialists-DdvpFNt1.js → specialists-8ZAguXef.js} +1 -1
  245. package/server/{specialists-B4byf18k.js → specialists-BudKrjOu.js} +76 -76
  246. package/server/{specialists-DjHbwQ_p.js → specialists-DrPrC9Y9.js} +20 -256
  247. package/server/{specialists-BLIreoE7.js → specialists-ZkW4Mb7U.js} +1 -1
  248. package/server/specs-DwoAEGrW.js +3 -0
  249. package/server/{src-fgbU-jJ-.js → src-DHn4Rd2F.js} +25 -3
  250. package/server/{src-mK_M_ZIj.js → src-DNUUqkec.js} +6 -6
  251. package/server/{src-CALBEUMX.js → src-Dv6L03vW.js} +3 -3
  252. package/server/{stack-health-BFM8YlHw.js → stack-health-Dclm7_tu.js} +1 -1
  253. package/server/{stack-health-Qd7rPiVe.js → stack-health-DxsTx7II.js} +2 -2
  254. package/server/{state-home-C2Bicw9N.js → state-home-CRowbXqU.js} +6 -6
  255. package/server/stuck-remediation-CFWUP8_I.js +1491 -0
  256. package/server/stuck-remediation-CLHd-lrF.js +2 -0
  257. package/server/{summary-fork-EWWBvzgE.js → summary-fork-CKc01Our.js} +2 -2
  258. package/server/{summary-fork-DezPkJSm.js → summary-fork-CtCwBJ2Z.js} +8 -8
  259. package/server/{supervisor-D5GC5jUM.js → supervisor-BA5D72Qa.js} +2 -2
  260. package/server/supervisor-DHjumXlL.js +2 -0
  261. package/server/{swarm-readiness-Cf9mommA.js → swarm-readiness-CL5sM9B1.js} +3 -3
  262. package/server/{system-prerequisites-BsI9hxh9.js → system-prerequisites-DmFSXIE5.js} +13 -1
  263. package/server/{teardown-workspace-CWz1pbEK.js → teardown-workspace-DWmFJzTw.js} +37 -68
  264. package/server/{test-agent-queue-TiVXe3ZT.js → test-agent-queue-DjsQoV5X.js} +6 -6
  265. package/server/{test-verdict-CCDd25uN.js → test-verdict-BSqsQp3G.js} +1 -1
  266. package/server/{test-verdict-Bm4uv_AA.js → test-verdict-D1AmZ2c0.js} +1 -1
  267. package/server/{tldr-daemon-C_1frSDj.js → tldr-daemon-C-MGomL8.js} +2 -2
  268. package/server/{tldr-daemon-Big5IZ_M.js → tldr-daemon-DD9rI5gA.js} +1 -1
  269. package/server/{tmux-D57f-XNv.js → tmux-C_d-lSIq.js} +2 -2
  270. package/server/{tmux-DClqWwb8.js → tmux-x291Gjjb.js} +1 -1
  271. package/server/{token-_qujO3JZ.js → token-DfBf1bsd.js} +1 -1
  272. package/server/{tracker-config-BmdJU_w6.js → tracker-config-CNODpd11.js} +2 -2
  273. package/server/{tracker-config-B_Ubts1Z.js → tracker-config-DItsdelv.js} +1 -1
  274. package/server/{tracker-utils-Bg-Sevcv.js → tracker-utils-B9ZoVA9b.js} +1 -1
  275. package/server/{tracker-utils-CWFt6jjV.js → tracker-utils-Ch2_5GGf.js} +2 -2
  276. package/server/{traefik-connect-5EP1WS_Z.js → traefik-connect-BF4x_LUQ.js} +1 -1
  277. package/server/{tunnel-hOBNQbmF.js → tunnel-YD80_IHr.js} +1 -1
  278. package/server/{tunnel-UBf2vyAL.js → tunnel-r_5nHAI6.js} +3 -3
  279. package/server/{types-B5u3NxMl.js → types-33JEP4LZ.js} +1 -1
  280. package/server/{uat-train-DGkIkLxu.js → uat-train-DDI00aqD.js} +1 -1
  281. package/server/{uat-train-qNanv5hN.js → uat-train-DjkFWXge.js} +25 -25
  282. package/server/{validation-C4wegCvH.js → validation-DUTiJnyz.js} +4 -4
  283. package/server/{validation-B0QaLIHP.js → validation-ict8hnXk.js} +1 -1
  284. package/server/{verification-runner-DdleMNLq.js → verification-runner-ATaLbpr5.js} +1 -1
  285. package/server/{verification-runner-CntudBes.js → verification-runner-inLgeQux.js} +12 -12
  286. package/server/{vtt-parser-CKc-smWM.js → vtt-parser-QnRfcjiU.js} +1 -1
  287. package/server/{work-agent-prompt-CG5jFV9A.js → work-agent-prompt-fZljjA1_.js} +12 -12
  288. package/server/{workflows-BK2xs_a8.js → workflows-oBnJ7Tm0.js} +14 -14
  289. package/server/workflows-tU7KKxQi.js +2 -0
  290. package/server/{workspace-C9lC5o3E.js → workspace-B2WOW9Hw.js} +1 -1
  291. package/server/{workspace-CLrSIRCx.js → workspace-CNuW2j41.js} +3 -3
  292. package/server/{workspace-config-DA8U97k9.js → workspace-config-CBgMGhWs.js} +1 -1
  293. package/server/{workspace-manager-BJhW2sky.js → workspace-manager-CB-R07R3.js} +12 -12
  294. package/server/{workspace-manager-Cb2a7bg9.js → workspace-manager-DjUAJCSs.js} +1 -1
  295. package/server/{workspace-metadata-QQmo_Z0l.js → workspace-metadata-9Nn5kgRl.js} +2 -2
  296. package/server/{workspace-metadata-CTRnr323.js → workspace-metadata-Fd58uUQG.js} +1 -1
  297. package/server/{workspaces-Ca4zZs12.js → workspaces-BjWXntty.js} +106 -120
  298. package/server/writer-CQMGzEkw.js +3 -0
  299. package/server/writer-fe1-8iGc.js +251 -0
  300. package/sync-sources/hooks/ask-user-question-hook +87 -0
  301. package/sync-sources/hooks/auto-approve-hook +96 -0
  302. package/sync-sources/hooks/codex-notify-hook +62 -0
  303. package/sync-sources/hooks/gh-issue-trailer-hook +4 -0
  304. package/sync-sources/hooks/gh-issue-trailer-hook.d.ts +7 -0
  305. package/sync-sources/hooks/gh-issue-trailer-hook.d.ts.map +1 -0
  306. package/sync-sources/hooks/gh-issue-trailer-hook.js +239 -0
  307. package/sync-sources/hooks/gh-issue-trailer-hook.js.map +1 -0
  308. package/sync-sources/hooks/gh-issue-trailer-hook.ts +296 -0
  309. package/sync-sources/hooks/git-hooks/post-checkout +109 -0
  310. package/sync-sources/hooks/heartbeat-hook +113 -0
  311. package/sync-sources/hooks/notification-hook +70 -0
  312. package/sync-sources/hooks/notify-complete +79 -0
  313. package/sync-sources/hooks/pan-hook-lib.sh +153 -0
  314. package/sync-sources/hooks/permission-event-hook +24 -0
  315. package/sync-sources/hooks/post-compact-hook +25 -0
  316. package/sync-sources/hooks/pre-compact-hook +26 -0
  317. package/sync-sources/hooks/pre-tool-hook +35 -0
  318. package/sync-sources/hooks/record-cost-event.d.ts +1 -0
  319. package/sync-sources/hooks/record-cost-event.js +31859 -0
  320. package/sync-sources/hooks/record-cost-event.js.map +1 -0
  321. package/sync-sources/hooks/record-cost-event.ts +267 -0
  322. package/sync-sources/hooks/rtk-bash-filter +152 -0
  323. package/sync-sources/hooks/session-start-hook +80 -0
  324. package/sync-sources/hooks/specialist-stop-hook +106 -0
  325. package/sync-sources/hooks/statusline.sh +169 -0
  326. package/sync-sources/hooks/stop-hook +217 -0
  327. package/sync-sources/hooks/tldr-post-edit +72 -0
  328. package/sync-sources/hooks/tldr-read-enforcer +340 -0
  329. package/sync-sources/hooks/tmux-send-keys-guard +87 -0
  330. package/sync-sources/hooks/tsdown.config.ts +14 -0
  331. package/sync-sources/hooks/user-prompt-submit-hook +57 -0
  332. package/sync-sources/hooks/work-agent-stop-hook +424 -0
  333. package/server/auto-commit-CGQlb4rV.js +0 -3
  334. package/server/bd-mutex-BItGvLQ8.js +0 -35
  335. package/server/beads-restore-CMbDSB5R.js +0 -60
  336. package/server/cli-Ch_BWJB2.js +0 -3
  337. package/server/deacon-swarm-CSWGRfzr.js +0 -2
  338. package/server/dist-BUplB3Od.js +0 -3
  339. package/server/forge-IgLR0Ist.js +0 -2
  340. package/server/hume-x9voULey.js +0 -3
  341. package/server/inspect-agent-CYoWAeeB.js +0 -2
  342. package/server/merge-agent-CfohxFWM.js +0 -3
  343. package/server/merge-ops-Czke6UAp.js +0 -2
  344. package/server/projects-Bqfwuqet.js +0 -3
  345. package/server/providers-JjK6izqX.js +0 -3
  346. package/server/public/assets/index-CZiADHcL.css +0 -1
  347. package/server/public/assets/index-LQIfhmgI.js +0 -796
  348. package/server/public/assets/mermaid-GHXKKRXX-CZOsRYoT.js +0 -1
  349. package/server/rally-Ba9QoNYc.js +0 -3
  350. package/server/record-De2syxNB.js +0 -3
  351. package/server/resume-CmxF3Kjz.js +0 -3
  352. package/server/settings-DEhYpW0k.js +0 -2
  353. package/server/specs-CVH1kvz3.js +0 -3
  354. package/server/supervisor-DQMK2e3I.js +0 -2
  355. package/server/workflows-pKw9yRSV.js +0 -2
@@ -1,11 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Vr as init_paths } from "./config-yaml-ClpGgrf6.js";
3
- import { c as resolveMemoryRoot, i as init_paths$1, l as resolveObservationsFile, p as resolveSummariesDir, r as ensureParentDir } from "./paths-CVDLPxXp.js";
4
- import { t as init_agents } from "./agents-B5LfpLPv.js";
5
- import { i as init_settings } from "./settings-CxVate0h.js";
6
- import { r as init_health, t as init_providers } from "./providers-fLduChnX.js";
7
- import { a as withMemoryFtsDatabase, i as runMemoryFtsTransaction, n as init_fts_db } from "./fts-db-DAHW1yA_.js";
8
- import { r as init_rollup } from "./rollup-BrUIKMv_.js";
2
+ import { qr as init_paths } from "./config-yaml-Dcz-8uit.js";
3
+ import { c as resolveMemoryRoot, i as init_paths$1, l as resolveObservationsFile, p as resolveSummariesDir, r as ensureParentDir } from "./paths-C9DkhIOT.js";
4
+ import { t as init_agents } from "./agents-CsOzAmRg.js";
5
+ import { i as init_settings } from "./settings-DCC4BAqj.js";
6
+ import { r as init_health, t as init_providers } from "./providers-CWDXoaMA.js";
7
+ import { a as withMemoryFtsDatabase, i as runMemoryFtsTransaction, n as init_fts_db } from "./fts-db-CBgBLZcL.js";
8
+ import { r as init_rollup } from "./rollup-CnxbwaLH.js";
9
9
  import { dirname, join } from "path";
10
10
  import { randomUUID } from "crypto";
11
11
  import { readFile, rename, writeFile } from "fs/promises";
@@ -194,7 +194,7 @@ async function writeResetMarkerToFtsDb(projectId, marker) {
194
194
  });
195
195
  }
196
196
  async function emitResetMarkerCreated(marker, timestamp) {
197
- const { initEventStore } = await import("./event-store-DU3HkZlN.js");
197
+ const { initEventStore } = await import("./event-store-CcJAhKCl.js");
198
198
  await (await initEventStore()).appendAsync({
199
199
  type: "memory.reset_marker_created",
200
200
  timestamp,
@@ -221,4 +221,4 @@ var init_cli = __esmMin((() => {
221
221
  //#endregion
222
222
  export { generateDailySummary as n, init_cli as r, createResetMarker as t };
223
223
 
224
- //# sourceMappingURL=cli-B75AieAM.js.map
224
+ //# sourceMappingURL=cli-BwCvCUBK.js.map
@@ -0,0 +1,3 @@
1
+ import { r as init_cli, t as createResetMarker } from "./cli-BwCvCUBK.js";
2
+ init_cli();
3
+ export { createResetMarker };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Or as OVERDECK_HOME, Vr as init_paths, cr as FsError, mr as ProcessSpawnError, vr as init_errors, xr as BIN_DIR } from "./config-yaml-ClpGgrf6.js";
2
+ import { Ar as OVERDECK_HOME, Cr as BIN_DIR, br as init_errors, gr as ProcessSpawnError, qr as init_paths, ur as FsError } from "./config-yaml-Dcz-8uit.js";
3
3
  import { Data, Effect } from "effect";
4
4
  import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs";
5
5
  import { join } from "path";
@@ -496,4 +496,4 @@ var init_cliproxy = __esmMin((() => {
496
496
  //#endregion
497
497
  export { restartCliproxy as C, readPidFile as S, stopCliproxy as T, getCliproxyPidPath as _, CliproxyError as a, isCliproxyInstalled as b, bridgeGeminiAuthToCliproxy as c, getCliproxyAuthDir as d, getCliproxyBinary as f, getCliproxyLogPath as g, getCliproxyDir as h, CLIPROXY_PORT as i, decodeJwtPayload as l, getCliproxyConfigPath as m, CLIPROXY_BASE_URL as n, bridgeCodexAuthToCliproxy as o, getCliproxyClientEnv as p, CLIPROXY_HOST as r, bridgeCodexAuthToCliproxySync as s, CLIPROXY_AUTH_TOKEN as t, detectPlatformAsset as u, init_cliproxy as v, startCliproxy as w, isCliproxyRunning as x, installCliproxy as y };
498
498
 
499
- //# sourceMappingURL=cliproxy-CCzwuSNe.js.map
499
+ //# sourceMappingURL=cliproxy-BsoNNDAj.js.map
@@ -1,3 +1,3 @@
1
- import { v as init_cliproxy, x as isCliproxyRunning } from "./cliproxy-CCzwuSNe.js";
1
+ import { v as init_cliproxy, x as isCliproxyRunning } from "./cliproxy-BsoNNDAj.js";
2
2
  init_cliproxy();
3
3
  export { isCliproxyRunning };
@@ -1,6 +1,6 @@
1
- import { $n as extractPrefixSync, Qn as extractNumberSync, er as init_issue_id, tr as normalizeIssueIdSync } from "./config-yaml-ClpGgrf6.js";
2
- import { Mn as getAgentState, Vn as markAgentStoppedState, qn as saveAgentState, t as init_agents } from "./agents-B5LfpLPv.js";
3
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-B5u3NxMl.js";
1
+ import { $n as extractNumberSync, er as extractPrefixSync, nr as normalizeIssueIdSync, tr as init_issue_id } from "./config-yaml-Dcz-8uit.js";
2
+ import { Mn as getAgentState, Vn as markAgentStoppedState, qn as saveAgentState, t as init_agents } from "./agents-CsOzAmRg.js";
3
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-33JEP4LZ.js";
4
4
  import { Effect } from "effect";
5
5
  import { exec } from "child_process";
6
6
  import { promisify } from "util";
@@ -227,7 +227,7 @@ function closeRallyDirect(ctx) {
227
227
  async function closeRallyDirectImpl(ctx) {
228
228
  const step = "close-issue:transition";
229
229
  if (!ctx.rally) return stepFailed(step, "Rally config not provided");
230
- const { RallyTracker } = await import("./rally-Ba9QoNYc.js");
230
+ const { RallyTracker } = await import("./rally-Dc2Wnxw2.js");
231
231
  const tracker = new RallyTracker({
232
232
  apiKey: ctx.rally.apiKey,
233
233
  server: ctx.rally.server,
@@ -327,4 +327,4 @@ async function applyLabelLinearImpl(ctx, apiKey) {
327
327
  //#endregion
328
328
  export { closeIssue as t };
329
329
 
330
- //# sourceMappingURL=close-issue-_X3MXJyG.js.map
330
+ //# sourceMappingURL=close-issue-BleIwP3f.js.map
@@ -1,2 +1,2 @@
1
- import { t as handleIssueStatusChangedClosed } from "./closed-issue-reaper-BsUfBSjM.js";
1
+ import { t as handleIssueStatusChangedClosed } from "./closed-issue-reaper-mC5pujeb.js";
2
2
  export { handleIssueStatusChangedClosed };
@@ -1,12 +1,12 @@
1
- import { Ft as resolveProjectForIssue, Ln as listProjectsSync, Nn as init_projects, Ot as init_record, Vr as init_paths, er as init_issue_id, yr as AGENTS_DIR } from "./config-yaml-ClpGgrf6.js";
1
+ import { It as resolveProjectForIssue, Pn as init_projects, Rn as listProjectsSync, kt as init_record, qr as init_paths, tr as init_issue_id, xr as AGENTS_DIR } from "./config-yaml-Dcz-8uit.js";
2
2
  import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-pcbf-e30.js";
3
- import { O as listSessionNames, w as killSession, x as init_tmux } from "./tmux-D57f-XNv.js";
4
- import { c as init_review_status, u as loadReviewStatuses } from "./review-status-gPndPUBc.js";
5
- import { K as stopAgent, Z as listRunningAgents, t as init_agents } from "./agents-B5LfpLPv.js";
6
- import { i as teardownWorkspaceDockerByNamePromise, n as init_docker } from "./docker-DDI1shu3.js";
7
- import { l as init_prd_locations, o as init_archive_planning } from "./archive-planning-oX1pj6nY.js";
8
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-Da3DeomA.js";
9
- import "./close-issue-_X3MXJyG.js";
3
+ import { O as listSessionNames, w as killSession, x as init_tmux } from "./tmux-C_d-lSIq.js";
4
+ import { c as init_review_status, u as loadReviewStatuses } from "./review-status-4qqLkRMu.js";
5
+ import { K as stopAgent, Z as listRunningAgents, t as init_agents } from "./agents-CsOzAmRg.js";
6
+ import { i as teardownWorkspaceDockerByNamePromise, n as init_docker } from "./docker-s-esqZ__.js";
7
+ import { l as init_prd_locations, o as init_archive_planning } from "./archive-planning-DkivCk1A.js";
8
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-FApNiOOs.js";
9
+ import "./close-issue-BleIwP3f.js";
10
10
  import { join } from "node:path";
11
11
  import { Data, Effect } from "effect";
12
12
  import "fs";
@@ -29,7 +29,50 @@ init_review_status();
29
29
  init_archive_planning();
30
30
  init_docker();
31
31
  init_issue_id();
32
- const execAsync$1 = promisify$1(exec$1);
32
+ const execAsync$2 = promisify$1(exec$1);
33
+ const ARTIFACT_PATH_PREFIXES = [
34
+ ".pan/",
35
+ ".planning/",
36
+ "docs/prds/",
37
+ ".overdeck/"
38
+ ];
39
+ const ARTIFACT_EXCLUSIONS = ARTIFACT_PATH_PREFIXES.map((prefix) => `':!${prefix.slice(0, -1)}'`).join(" ");
40
+ /**
41
+ * Squash-merge detection via the forge. A squash-merged branch is never an
42
+ * ancestor of main and its three-dot diff never empties (the pre-squash
43
+ * commits stay visible against the merge-base), so pure-git checks report it
44
+ * unmerged forever. The merged PR is the authoritative record: if a merged PR
45
+ * has this branch as head, its merge commit landed on main, and the branch has
46
+ * no post-merge code commits, the branch is merged. Returns false on any
47
+ * failure (no gh, GitLab remote, no PR) so callers fall through conservatively.
48
+ */
49
+ async function isSquashMergedViaPr(branchName, tipRef, projectPath) {
50
+ try {
51
+ const { stdout } = await execAsync$2(`gh pr list --head "${branchName}" --state merged --json headRefOid,mergeCommit --limit 1`, {
52
+ cwd: projectPath,
53
+ encoding: "utf-8",
54
+ timeout: 15e3
55
+ });
56
+ const pr = JSON.parse(stdout)[0];
57
+ if (!pr?.headRefOid || !pr.mergeCommit?.oid) return false;
58
+ await execAsync$2(`git merge-base --is-ancestor ${pr.mergeCommit.oid} main`, {
59
+ cwd: projectPath,
60
+ encoding: "utf-8"
61
+ });
62
+ const { stdout: tipSha } = await execAsync$2(`git rev-parse "${tipRef}"`, {
63
+ cwd: projectPath,
64
+ encoding: "utf-8"
65
+ });
66
+ if (tipSha.trim() === pr.headRefOid) return true;
67
+ const { stdout: filesOut } = await execAsync$2(`git log ${pr.headRefOid}..${tipRef} --name-only --pretty=format:`, {
68
+ cwd: projectPath,
69
+ encoding: "utf-8"
70
+ });
71
+ return filesOut.split("\n").map((line) => line.trim()).filter(Boolean).every((file) => ARTIFACT_PATH_PREFIXES.some((prefix) => file.startsWith(prefix)));
72
+ } catch {
73
+ return false;
74
+ }
75
+ }
33
76
  /**
34
77
  * Check if a feature branch has been merged into main.
35
78
  *
@@ -42,7 +85,7 @@ async function isBranchMerged(branchName, projectPath) {
42
85
  try {
43
86
  const issueId = branchName.replace("feature/", "").toUpperCase();
44
87
  if (loadReviewStatuses()[issueId]?.mergeStatus === "merged") {
45
- const { stdout: aheadOfMain } = await execAsync$1(`git log main..${branchName} --oneline 2>/dev/null || true`, {
88
+ const { stdout: aheadOfMain } = await execAsync$2(`git log main..${branchName} --oneline 2>/dev/null || true`, {
46
89
  cwd: projectPath,
47
90
  encoding: "utf-8"
48
91
  });
@@ -52,12 +95,12 @@ async function isBranchMerged(branchName, projectPath) {
52
95
  };
53
96
  }
54
97
  } catch {}
55
- const { stdout: branchExists } = await execAsync$1(`git branch --list "${branchName}" 2>/dev/null || true`, {
98
+ const { stdout: branchExists } = await execAsync$2(`git branch --list "${branchName}" 2>/dev/null || true`, {
56
99
  cwd: projectPath,
57
100
  encoding: "utf-8"
58
101
  });
59
102
  if (branchExists.trim()) try {
60
- await execAsync$1(`git merge-base --is-ancestor ${branchName} main`, {
103
+ await execAsync$2(`git merge-base --is-ancestor ${branchName} main`, {
61
104
  cwd: projectPath,
62
105
  encoding: "utf-8"
63
106
  });
@@ -67,7 +110,7 @@ async function isBranchMerged(branchName, projectPath) {
67
110
  };
68
111
  } catch {
69
112
  try {
70
- const { stdout: codeDiff } = await execAsync$1(`git diff main...${branchName} -- ':!.planning' ':!docs/prds' ':!.overdeck/prompts' 2>/dev/null || true`, {
113
+ const { stdout: codeDiff } = await execAsync$2(`git diff main...${branchName} -- ${ARTIFACT_EXCLUSIONS} 2>/dev/null || true`, {
71
114
  cwd: projectPath,
72
115
  encoding: "utf-8"
73
116
  });
@@ -76,7 +119,11 @@ async function isBranchMerged(branchName, projectPath) {
76
119
  message: "Code changes squash-merged to main (only planning artifacts remain on branch)"
77
120
  };
78
121
  } catch {}
79
- const { stdout: unmerged } = await execAsync$1(`git log main..${branchName} --oneline 2>/dev/null || true`, {
122
+ if (await isSquashMergedViaPr(branchName, branchName, projectPath)) return {
123
+ status: "merged",
124
+ message: `Merged PR found for ${branchName} (squash merge)`
125
+ };
126
+ const { stdout: unmerged } = await execAsync$2(`git log main..${branchName} --oneline 2>/dev/null || true`, {
80
127
  cwd: projectPath,
81
128
  encoding: "utf-8"
82
129
  });
@@ -85,14 +132,14 @@ async function isBranchMerged(branchName, projectPath) {
85
132
  message: `${unmerged.trim() ? unmerged.trim().split("\n").length : 0} unmerged commit(s) on ${branchName}. Merge before closing out.`
86
133
  };
87
134
  }
88
- const { stdout: remoteBranch } = await execAsync$1(`git ls-remote --heads origin "${branchName}" 2>/dev/null || true`, {
135
+ const { stdout: remoteBranch } = await execAsync$2(`git ls-remote --heads origin "${branchName}" 2>/dev/null || true`, {
89
136
  cwd: projectPath,
90
137
  encoding: "utf-8"
91
138
  });
92
139
  if (remoteBranch.trim()) {
93
- await execAsync$1(`git fetch origin ${branchName}`, { cwd: projectPath }).catch(() => {});
140
+ await execAsync$2(`git fetch origin ${branchName}`, { cwd: projectPath }).catch(() => {});
94
141
  try {
95
- await execAsync$1(`git merge-base --is-ancestor origin/${branchName} main`, {
142
+ await execAsync$2(`git merge-base --is-ancestor origin/${branchName} main`, {
96
143
  cwd: projectPath,
97
144
  encoding: "utf-8"
98
145
  });
@@ -102,7 +149,7 @@ async function isBranchMerged(branchName, projectPath) {
102
149
  };
103
150
  } catch {
104
151
  try {
105
- const { stdout: codeDiff } = await execAsync$1(`git diff main...origin/${branchName} -- ':!.planning' ':!docs/prds' ':!.overdeck/prompts' 2>/dev/null || true`, {
152
+ const { stdout: codeDiff } = await execAsync$2(`git diff main...origin/${branchName} -- ${ARTIFACT_EXCLUSIONS} 2>/dev/null || true`, {
106
153
  cwd: projectPath,
107
154
  encoding: "utf-8"
108
155
  });
@@ -111,7 +158,11 @@ async function isBranchMerged(branchName, projectPath) {
111
158
  message: "Remote code changes squash-merged to main (only planning artifacts remain on branch)"
112
159
  };
113
160
  } catch {}
114
- const { stdout: remoteUnmerged } = await execAsync$1(`git log main..origin/${branchName} --oneline 2>/dev/null || true`, {
161
+ if (await isSquashMergedViaPr(branchName, `origin/${branchName}`, projectPath)) return {
162
+ status: "merged",
163
+ message: `Merged PR found for ${branchName} (squash merge)`
164
+ };
165
+ const { stdout: remoteUnmerged } = await execAsync$2(`git log main..origin/${branchName} --oneline 2>/dev/null || true`, {
115
166
  cwd: projectPath,
116
167
  encoding: "utf-8"
117
168
  });
@@ -132,7 +183,7 @@ Data.TaggedError("CloseOutError");
132
183
  init_paths();
133
184
  init_tmux();
134
185
  init_docker();
135
- const execAsync = promisify(exec);
186
+ const execAsync$1 = promisify(exec);
136
187
  function escapeRegex(value) {
137
188
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
138
189
  }
@@ -156,19 +207,19 @@ async function reapIssueResidue(projectPath, issueId) {
156
207
  } catch {}
157
208
  }
158
209
  } catch {}
159
- if ((await isBranchMerged(branchName, projectPath)).status === "unmerged") {
160
- actions.push(`skipped reap for ${issueId} — branch unmerged`);
161
- return actions;
162
- }
163
210
  try {
164
- if ((await teardownWorkspaceDockerByNamePromise(issueLower)).networkRemoved) actions.push(`removed Docker stack overdeck-feature-${issueLower}`);
165
- else actions.push(`Docker network overdeck-feature-${issueLower}_devnet still present`);
211
+ if ((await teardownWorkspaceDockerByNamePromise(issueLower)).networkRemoved) actions.push(`removed Docker stack for feature-${issueLower}`);
212
+ else actions.push(`Docker network for feature-${issueLower} still present`);
166
213
  } catch (err) {
167
214
  actions.push(`Docker teardown failed for ${issueId}: ${err.message}`);
168
215
  }
216
+ if ((await isBranchMerged(branchName, projectPath)).status === "unmerged") {
217
+ actions.push(`skipped disk reap for ${issueId} — branch unmerged`);
218
+ return actions;
219
+ }
169
220
  const workspacePath = join(projectPath, "workspaces", `feature-${issueLower}`);
170
221
  if (existsSync$1(workspacePath)) try {
171
- await execAsync(`git worktree remove "${workspacePath}" --force`, { cwd: projectPath });
222
+ await execAsync$1(`git worktree remove "${workspacePath}" --force`, { cwd: projectPath });
172
223
  actions.push(`removed workspace ${workspacePath}`);
173
224
  } catch {
174
225
  try {
@@ -180,11 +231,11 @@ async function reapIssueResidue(projectPath, issueId) {
180
231
  } catch {}
181
232
  }
182
233
  try {
183
- await execAsync(`git branch -D "${branchName}"`, { cwd: projectPath });
234
+ await execAsync$1(`git branch -D "${branchName}"`, { cwd: projectPath });
184
235
  actions.push(`deleted local branch ${branchName}`);
185
236
  } catch {}
186
237
  try {
187
- await execAsync(`git push origin --delete "${branchName}"`, { cwd: projectPath });
238
+ await execAsync$1(`git push origin --delete "${branchName}"`, { cwd: projectPath });
188
239
  actions.push(`deleted remote branch ${branchName}`);
189
240
  } catch {}
190
241
  for (const agentDirName of [`agent-${issueLower}`, `planning-${issueLower}`]) {
@@ -216,6 +267,23 @@ function issueIdFromAgentDir(entryName) {
216
267
  const match = entryName.match(/^agent-([a-z]+-\d+)$/i);
217
268
  return match ? match[1].toUpperCase() : null;
218
269
  }
270
+ const execAsync = promisify(exec);
271
+ async function listFeatureDevnetIssueIds() {
272
+ try {
273
+ const { stdout } = await execAsync(`docker network ls --format '{{.Name}}'`, {
274
+ encoding: "utf-8",
275
+ timeout: 3e4
276
+ });
277
+ const issueIds = /* @__PURE__ */ new Set();
278
+ for (const name of stdout.trim().split("\n")) {
279
+ const match = name.match(/-feature-([a-z]+-\d+)_devnet$/i);
280
+ if (match) issueIds.add(match[1].toUpperCase());
281
+ }
282
+ return [...issueIds];
283
+ } catch {
284
+ return [];
285
+ }
286
+ }
219
287
  async function isClosedIssue(issueId, closedChecks) {
220
288
  let promise = closedChecks.get(issueId);
221
289
  if (!promise) {
@@ -337,9 +405,13 @@ async function reconcileClosedIssueAgents() {
337
405
  if (!await isClosedIssue(issueId, closedChecks)) continue;
338
406
  await reapResolvedIssueResidue(issueId, actions, reapedIssueKeys);
339
407
  }
408
+ for (const issueId of await listFeatureDevnetIssueIds()) {
409
+ if (!await isClosedIssue(issueId, closedChecks)) continue;
410
+ await reapResolvedIssueResidue(issueId, actions, reapedIssueKeys);
411
+ }
340
412
  return actions;
341
413
  }
342
414
  //#endregion
343
415
  export { reconcileClosedIssueAgents as n, handleIssueStatusChangedClosed as t };
344
416
 
345
- //# sourceMappingURL=closed-issue-reaper-BsUfBSjM.js.map
417
+ //# sourceMappingURL=closed-issue-reaper-mC5pujeb.js.map
@@ -1,3 +1,3 @@
1
- import { a as extractThreadIdFromRollout, c as initCodexHome, d as waitForCodexRollout, f as writeThreadId, l as init_codex, o as findLatestRollout, s as findRolloutPath } from "./codex-B4KEpX5V.js";
1
+ import { a as extractThreadIdFromRollout, c as initCodexHome, d as waitForCodexRollout, f as writeThreadId, l as init_codex, o as findLatestRollout, s as findRolloutPath } from "./codex-DW60_5j2.js";
2
2
  init_codex();
3
3
  export { extractThreadIdFromRollout, findLatestRollout, findRolloutPath, initCodexHome, waitForCodexRollout, writeThreadId };
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { vr as init_errors } from "./config-yaml-ClpGgrf6.js";
3
- import { A as listSessionsSync, L as sessionExists, o as createSession, w as killSession, x as init_tmux } from "./tmux-D57f-XNv.js";
4
- import { r as CODEX_BEHAVIOR } from "./src-fgbU-jJ-.js";
5
- import { i as parseCodexSessionSync, n as init_codex_parser, t as init_behavior } from "./behavior-CPf0pbOt.js";
2
+ import { br as init_errors } from "./config-yaml-Dcz-8uit.js";
3
+ import { A as listSessionsSync, L as sessionExists, o as createSession, w as killSession, x as init_tmux } from "./tmux-C_d-lSIq.js";
4
+ import { r as CODEX_BEHAVIOR } from "./src-DHn4Rd2F.js";
5
+ import { i as parseCodexSessionSync, n as init_codex_parser, t as init_behavior } from "./behavior-Cpj03N4v.js";
6
6
  import { basename, join } from "node:path";
7
7
  import { Effect } from "effect";
8
8
  import { homedir } from "node:os";
@@ -498,4 +498,4 @@ var init_codex = __esmMin((() => {
498
498
  //#endregion
499
499
  export { extractThreadIdFromRollout as a, initCodexHome as c, waitForCodexRollout as d, writeThreadId as f, createCodexRuntimeSync as i, init_codex as l, CodexSpawnTimeout as n, findLatestRollout as o, codexHome as r, findRolloutPath as s, CodexRuntimeSync as t, toCodexSandboxValue as u };
500
500
 
501
- //# sourceMappingURL=codex-B4KEpX5V.js.map
501
+ //# sourceMappingURL=codex-DW60_5j2.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_compact_beads, t as compactBeads } from "./compact-beads-uEDccC76.js";
1
+ import { n as init_compact_beads, t as compactBeads } from "./compact-beads-DKL54y6j.js";
2
2
  init_compact_beads();
3
3
  export { compactBeads };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { fn as init_state_read_home, pn as resolveStateReadHomeSync } from "./config-yaml-ClpGgrf6.js";
3
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-B5u3NxMl.js";
2
+ import { mn as resolveStateReadHomeSync, pn as init_state_read_home } from "./config-yaml-Dcz-8uit.js";
3
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-33JEP4LZ.js";
4
4
  import { Effect } from "effect";
5
5
  import { existsSync } from "fs";
6
6
  import { join } from "path";
@@ -43,12 +43,19 @@ async function compactBeadsImpl(ctx, opts) {
43
43
  });
44
44
  const count = parseInt(countOutput.trim(), 10) || 0;
45
45
  if (count === 0) return stepSkipped(step, ["No closed beads older than " + days + " days"]);
46
- await execAsync(`bd admin compact --days ${days}`, {
47
- cwd: operationRoot,
48
- encoding: "utf-8"
49
- });
46
+ const { runMutationBatch } = await import("./writer-CQMGzEkw.js");
47
+ const compacted = await runMutationBatch({
48
+ project: { workspacePath: operationRoot },
49
+ reason: `compact beads older than ${days} days`
50
+ }, (bd) => bd.mutate([
51
+ "admin",
52
+ "compact",
53
+ "--days",
54
+ String(days)
55
+ ]));
56
+ if (!compacted.ok) return stepFailed(step, compacted.message);
50
57
  if (stateHome.migrated) {
51
- const { flushAutoCommits, queueBeadsAutoCommit } = await import("./auto-commit-CGQlb4rV.js");
58
+ const { flushAutoCommits, queueBeadsAutoCommit } = await import("./auto-commit-QAfsu3Sb.js");
52
59
  queueBeadsAutoCommit(ctx.projectPath);
53
60
  const result = await Effect.runPromise(flushAutoCommits(ctx.projectPath));
54
61
  return result.committed ? stepOk(step, [`Compacted ${count} closed beads and committed through overdeck-state`]) : stepFailed(step, `Compacted beads but state write door refused commit: ${result.reason ?? "unknown"}`);
@@ -84,4 +91,4 @@ var init_compact_beads = __esmMin((() => {
84
91
  //#endregion
85
92
  export { init_compact_beads as n, compactBeads as t };
86
93
 
87
- //# sourceMappingURL=compact-beads-uEDccC76.js.map
94
+ //# sourceMappingURL=compact-beads-DKL54y6j.js.map
@@ -1,3 +1,3 @@
1
- import { _ as saveConfigSync, a as getConversationsConfigSync, c as getDefaultConfig, d as getDevrootPathSync, f as init_config, g as saveConfig, h as normalizeRemoteConfig, i as getConversationsConfig, l as getDefaultConfigSync, m as loadConfigSync, n as findDevrootForProject, o as getDashboardApiUrl, p as loadConfig, r as findDevrootForProjectSync, s as getDashboardApiUrlSync, t as checkDevrootDeprecation, u as getDevrootPath } from "./config-8sjaU6jZ.js";
1
+ import { _ as saveConfigSync, a as getConversationsConfigSync, c as getDefaultConfig, d as getDevrootPathSync, f as init_config, g as saveConfig, h as normalizeRemoteConfig, i as getConversationsConfig, l as getDefaultConfigSync, m as loadConfigSync, n as findDevrootForProject, o as getDashboardApiUrl, p as loadConfig, r as findDevrootForProjectSync, s as getDashboardApiUrlSync, t as checkDevrootDeprecation, u as getDevrootPath } from "./config-ZNnMpIlh.js";
2
2
  init_config();
3
3
  export { checkDevrootDeprecation, findDevrootForProject, findDevrootForProjectSync, getConversationsConfig, getConversationsConfigSync, getDashboardApiUrl, getDashboardApiUrlSync, getDefaultConfig, getDefaultConfigSync, getDevrootPath, getDevrootPathSync, loadConfig, loadConfigSync, normalizeRemoteConfig, saveConfig, saveConfigSync };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Tr as CONFIG_FILE, Vr as init_paths, cr as FsError, f as loadConfigSync$1, t as init_config_yaml, vr as init_errors } from "./config-yaml-ClpGgrf6.js";
2
+ import { Dr as CONFIG_FILE, br as init_errors, f as loadConfigSync$1, qr as init_paths, t as init_config_yaml, ur as FsError } from "./config-yaml-Dcz-8uit.js";
3
3
  import { t as require_toml } from "./toml-CeLDATih.js";
4
4
  import { Effect } from "effect";
5
5
  import { existsSync, promises, readFileSync, writeFileSync } from "fs";
@@ -253,4 +253,4 @@ var init_config = __esmMin((() => {
253
253
  //#endregion
254
254
  export { saveConfigSync as _, getConversationsConfigSync as a, getDefaultConfig as c, getDevrootPathSync as d, init_config as f, saveConfig as g, normalizeRemoteConfig as h, getConversationsConfig as i, getDefaultConfigSync as l, loadConfigSync as m, findDevrootForProject as n, getDashboardApiUrl as o, loadConfig as p, findDevrootForProjectSync as r, getDashboardApiUrlSync as s, checkDevrootDeprecation as t, getDevrootPath as u };
255
255
 
256
- //# sourceMappingURL=config-8sjaU6jZ.js.map
256
+ //# sourceMappingURL=config-ZNnMpIlh.js.map
@@ -61,6 +61,28 @@ function resolveOhmypiExtensionPath() {
61
61
  for (const candidate of ohmypiExtensionCandidates()) if (existsSync(candidate)) return candidate;
62
62
  return null;
63
63
  }
64
+ function getDocsPaths(overrides = {}) {
65
+ const docsDir = overrides.docsDir ?? join$1(overrides.overdeckHome ?? getOverdeckHome(), "docs");
66
+ return {
67
+ docsDir,
68
+ indexPath: overrides.indexPath ?? join$1(docsDir, "index.sqlite"),
69
+ budgetStatePath: overrides.budgetStatePath ?? join$1(docsDir, "budget-state.json"),
70
+ disableStatePath: overrides.disableStatePath ?? join$1(docsDir, "disable-state.json"),
71
+ telemetryPath: overrides.telemetryPath ?? join$1(docsDir, "telemetry.jsonl")
72
+ };
73
+ }
74
+ function getDocsIndexPath(overrides = {}) {
75
+ return getDocsPaths(overrides).indexPath;
76
+ }
77
+ function getDocsBudgetStatePath(overrides = {}) {
78
+ return getDocsPaths(overrides).budgetStatePath;
79
+ }
80
+ function getDocsDisableStatePath(overrides = {}) {
81
+ return getDocsPaths(overrides).disableStatePath;
82
+ }
83
+ function getDocsTelemetryPath(overrides = {}) {
84
+ return getDocsPaths(overrides).telemetryPath;
85
+ }
64
86
  /**
65
87
  * Detect if running from a overdeck checkout (vs an installed package).
66
88
  *
@@ -10981,8 +11003,9 @@ var init_harness_policy = __esmMin((() => {
10981
11003
  ALLOWED = { allowed: true };
10982
11004
  OHMYPI_ANTHROPIC_SUBSCRIPTION_BLOCK = {
10983
11005
  allowed: false,
10984
- reason: "ohmypi cannot run Anthropic models when authenticated via Claude Code subscription. Switch the Anthropic provider to API-key auth, or pick a non-Anthropic model for ohmypi."
11006
+ reason: "Claude Code subscription Terms of Service restrict Anthropic models to the Claude Code harness — ohmypi cannot run Anthropic models under subscription auth. To proceed, switch the Anthropic provider to API-key auth, or pick a non-Anthropic model for ohmypi."
10985
11007
  };
11008
+ OHMYPI_ANTHROPIC_SUBSCRIPTION_BLOCK.reason;
10986
11009
  SUBSCRIPTION_ONLY_MODEL_BLOCK = {
10987
11010
  allowed: false,
10988
11011
  reason: "This OpenAI model needs a ChatGPT/Codex subscription sign-in — it is not served by the plain OpenAI API key. Run `codex login` on the host (workspace containers inherit the host sign-in), or pick a different model."
@@ -11605,6 +11628,9 @@ function mergeDocsConfig(result, config) {
11605
11628
  if (docs.classifier.timeout_ms !== void 0) result.classifier.timeoutMs = docs.classifier.timeout_ms;
11606
11629
  }
11607
11630
  }
11631
+ function getDefaultDocsConfig() {
11632
+ return cloneDocsConfig(DEFAULT_CONFIG.docs);
11633
+ }
11608
11634
  function mergeTtsConfig(result, config) {
11609
11635
  const tts = config?.tts;
11610
11636
  if (!tts) return;
@@ -14522,6 +14548,6 @@ var init_config_yaml = __esmMin((() => {
14522
14548
  init_load();
14523
14549
  }));
14524
14550
  //#endregion
14525
- export { getModelCapabilitySync as $, extractPrefixSync as $n, writeStatusOverridesSync as $t, KIMI_PLATFORM_BASE_URL as A, getSpecialistRetention as An, PROJECT_PRDS_ACTIVE_SUBDIR as Ar, queueIssueRecordCommit as At, qualifyPiModel as B, projects_exports as Bn, getOverdeckHome as Br, writeRecordBeadsMapping as Bt, resolveTieredExecutionEnabled as C, findProjectsByRallyProject as Cn, CACHE_RULES_DIR as Cr, getIssueRecordBasePath as Ct, canUseModelWithAuthSync as D, getProjectSync as Dn, LOGS_DIR as Dr, getProjectConfigFromWorkspacePath as Dt, canUseHarnessSync as E, getProjectSwarmHotspots as En, COSTS_DIR as Er, getIssueWorkspacePath as Et, getKimiAnthropicBaseUrl as F, initializeProjectsConfigSync as Fn, SYNC_SOURCES as Fr, resolveProjectForIssue as Ft, init_registry as G, resolveProjectFromIssueSync as Gn, sessionFilePath as Gr, writeRecordHazardsSync as Gt, ensureOpenAICompatibleProxyRunning as H, registerProjectSync as Hn, isDevMode as Hr, writeRecordDecisions as Ht, getProviderEnvSync as I, listProjects as In, TRAEFIK_DIR as Ir, writeAgentHarnessModel as It, computeModelOrigin as J, saveProjectsConfigSync as Jn, writeRecordScopeDriftSync as Jt, DEFAULT_ROLES as K, resolveProjectPath as Kn, writeRecordResumePoint as Kt, getProviderForModelSync as L, listProjectsSync as Ln, encodeClaudeProjectDir as Lr, writeAgentHarnessModelSync as Lt, UnknownModelError as M, hasProjectsSync as Mn, PROJECT_PRDS_PLANNED_SUBDIR as Mr, readIssueRecordForWorkspaceSync as Mt, clearCredentialFileAuthSync as N, init_projects as Nn, PROJECT_PRDS_SUBDIR as Nr, readIssueRecordSync as Nt, init_harness_policy as O, getSpecialistConfig as On, OVERDECK_HOME as Or, init_record as Ot, getBuiltInDefaultHarness as P, initializeProjectsConfig as Pn, SKILLS_DIR as Pr, readRecordContinueViewSync as Pt, MODEL_DEPRECATIONS as Q, extractNumberSync as Qn, writeStatusOverrideSync as Qt, init_providers as R, loadProjectsConfig as Rn, getHandoffsDir as Rr, writeIssueRecordForWorkspaceSync as Rt, init_tier_table as S, findProjectByTeamSync as Sn, CACHE_AGENTS_DIR as Sr, ensureIssueRecordSync as St, validateTieredExecutionConfig as T, getProject as Tn, CONFIG_FILE as Tr, getIssueRecordPathForWorkspace as Tt, init_openai_compatible_proxy as U, resolveInfraRepo as Un, packageRoot as Ur, writeRecordDecisionsSync as Ut, setupCredentialFileAuthSync as V, registerProject as Vn, init_paths as Vr, writeRecordBeadsMappingSync as Vt, defaultBackgroundAiFeatures as W, resolveProjectFromIssue as Wn, resolveOhmypiExtensionPath as Wr, writeRecordHazards as Wt, resolveModel as X, unregisterProject as Xn, writeRecordTieredExecutionOverrideSync as Xt, init_roles as Y, setProjectAutoMergeDefaultSync as Yn, writeRecordTieredExecutionOverride as Yt, MODEL_CAPABILITIES as Z, unregisterProjectSync as Zn, writeStatusOverride as Zt, getDefaultTtsDaemonConfig as _, createDefaultProjectsConfig as _n, VcsError as _r, buildOwnUri as _t, getConversationsConfigSync as a, queueBeadsAutoCommit as an, CheckpointError as ar, fmix32 as at, TIERED_EXECUTION_DIFFICULTIES as b, findProjectByPathSync as bn, ARCHIVES_DIR as br, clearRecordFeedbackSync as bt, isClaudeCodeChannelsEnabled as c, getMainDivergence as cn, FsError as cr, COMPLIANCE_MODES as ct, loadConfigNoMigration as d, isStatePlanePath as dn, InvalidAgentIdError as dr, RECORD_DIRNAME as dt, deriveProjectRoot as en, init_issue_id as er, getModelEffortLevelsSync as et, loadConfigSync as f, init_state_read_home as fn, LinearApiError as fr, RECORD_SCHEMA_VERSION as ft, mergeConfigs as g, PROJECTS_CONFIG_FILE as gn, TrackerError as gr, appendSessionEntrySync as gt, jsYaml as h, init_project_key as hn, TmuxError as hr, appendSessionEntry as ht, getConversationsConfig as i, queueAutoCommit as in, require_dist as ir, resolveModelIdSync as it, PROVIDERS as j, hasProjects as jn, PROJECT_PRDS_COMPLETED_SUBDIR as jr, readIssueRecord as jt, KIMI_CODING_BASE_URL as k, getSpecialistPromptOverride as kn, PROJECT_DOCS_SUBDIR as kr, markRecordPipelineClosedOutSync as kt, isClaudeCodeChannelsMcpEnabled as l, init_state_plane as ln, GitError as lr, PARENT_MODEL_REF as lt, init_js_yaml as m, shouldCommitLegacyWorkspaceArtifacts as mn, ProcessSpawnError as mr, appendFeedbackEntrySync as mt, clearConfigCache as n, flushAutoCommits as nn, parseIssueIdSync as nr, init_model_capabilities as nt, getGlobalConfigPath as o, STATE_BRANCH_PATHS as on, ClaudeCredentialParseError as or, fnv1a32 as ot, updateConversationsConfig as p, resolveStateReadHomeSync as pn, MergeConflictError as pr, appendFeedbackEntry as pt, DEFAULT_WORKHORSES as q, saveProjectsConfig as qn, writeRecordResumePointSync as qt, getConversationSearchConfigSync as r, init_auto_commit as rn, resolveBareNumericIdSync as rr, modelSupportsImagesSync as rt, init_load as s, STATE_PLANE_PATHS as sn, ConfigError as sr, init_percent as st, init_config_yaml as t, flushAllPendingAutoCommits as tn, normalizeIssueIdSync as tr, hasModelCapabilitySync as tt, isTldrEnabledSync as u, isStatePlaneOnlyStatus as un, GitHubApiError as ur, ROLE_EFFORTS as ut, mergeTtsDaemonConfigs as v, extractTeamPrefix as vn, init_errors as vr, claimIssueOwner as vt, resolveTieredExecutionEnabledForIssue as w, getIssuePrefix as wn, CLAUDE_DIR as wr, getIssueRecordPath as wt, TieredExecutionConfigError as x, findProjectByTeam as xn, BIN_DIR as xr, ensureIssueRecord as xt, DEFAULT_TIERED_EXECUTION_CONFIG as y, findProjectByPath as yn, AGENTS_DIR as yr, clearIssueOwner as yt, piProviderForModel as z, loadProjectsConfigSync as zn, getLegacyHome as zr, writeIssueRecordSync as zt };
14551
+ export { MODEL_DEPRECATIONS as $, extractNumberSync as $n, writeStatusOverrideSync as $t, KIMI_CODING_BASE_URL as A, getSpecialistPromptOverride as An, OVERDECK_HOME as Ar, markRecordPipelineClosedOutSync as At, piProviderForModel as B, loadProjectsConfigSync as Bn, getDocsBudgetStatePath as Br, writeIssueRecordSync as Bt, init_tier_table as C, findProjectByTeamSync as Cn, BIN_DIR as Cr, ensureIssueRecordSync as Ct, canUseHarnessSync as D, getProjectSwarmHotspots as Dn, CONFIG_FILE as Dr, getIssueWorkspacePath as Dt, validateTieredExecutionConfig as E, getProject as En, CLAUDE_DIR as Er, getIssueRecordPathForWorkspace as Et, getBuiltInDefaultHarness as F, initializeProjectsConfig as Fn, PROJECT_PRDS_SUBDIR as Fr, readRecordContinueViewSync as Ft, defaultBackgroundAiFeatures as G, resolveProjectFromIssue as Gn, getLegacyHome as Gr, writeRecordHazards as Gt, setupCredentialFileAuthSync as H, registerProject as Hn, getDocsIndexPath as Hr, writeRecordBeadsMappingSync as Ht, getKimiAnthropicBaseUrl as I, initializeProjectsConfigSync as In, SKILLS_DIR as Ir, resolveProjectForIssue as It, DEFAULT_WORKHORSES as J, saveProjectsConfig as Jn, isDevMode as Jr, writeRecordResumePointSync as Jt, init_registry as K, resolveProjectFromIssueSync as Kn, getOverdeckHome as Kr, writeRecordHazardsSync as Kt, getProviderEnvSync as L, listProjects as Ln, SYNC_SOURCES as Lr, writeAgentHarnessModel as Lt, PROVIDERS as M, hasProjects as Mn, PROJECT_PRDS_ACTIVE_SUBDIR as Mr, readIssueRecord as Mt, UnknownModelError as N, hasProjectsSync as Nn, PROJECT_PRDS_COMPLETED_SUBDIR as Nr, readIssueRecordForWorkspaceSync as Nt, canUseModelWithAuthSync as O, getProjectSync as On, COSTS_DIR as Or, getProjectConfigFromWorkspacePath as Ot, clearCredentialFileAuthSync as P, init_projects as Pn, PROJECT_PRDS_PLANNED_SUBDIR as Pr, readIssueRecordSync as Pt, MODEL_CAPABILITIES as Q, unregisterProjectSync as Qn, writeStatusOverride as Qt, getProviderForModelSync as R, listProjectsSync as Rn, TRAEFIK_DIR as Rr, writeAgentHarnessModelSync as Rt, TieredExecutionConfigError as S, findProjectByTeam as Sn, ARCHIVES_DIR as Sr, ensureIssueRecord as St, resolveTieredExecutionEnabledForIssue as T, getIssuePrefix as Tn, CACHE_RULES_DIR as Tr, getIssueRecordPath as Tt, ensureOpenAICompatibleProxyRunning as U, registerProjectSync as Un, getDocsTelemetryPath as Ur, writeRecordDecisions as Ut, qualifyPiModel as V, projects_exports as Vn, getDocsDisableStatePath as Vr, writeRecordBeadsMapping as Vt, init_openai_compatible_proxy as W, resolveInfraRepo as Wn, getHandoffsDir as Wr, writeRecordDecisionsSync as Wt, init_roles as X, setProjectAutoMergeDefaultSync as Xn, resolveOhmypiExtensionPath as Xr, writeRecordTieredExecutionOverride as Xt, computeModelOrigin as Y, saveProjectsConfigSync as Yn, packageRoot as Yr, writeRecordScopeDriftSync as Yt, resolveModel as Z, unregisterProject as Zn, sessionFilePath as Zr, writeRecordTieredExecutionOverrideSync as Zt, getDefaultDocsConfig as _, PROJECTS_CONFIG_FILE as _n, TmuxError as _r, appendSessionEntrySync as _t, getConversationsConfigSync as a, queueAutoCommit as an, resolveIssueIdSync as ar, resolveModelIdSync as at, DEFAULT_TIERED_EXECUTION_CONFIG as b, findProjectByPath as bn, init_errors as br, clearIssueOwner as bt, isClaudeCodeChannelsEnabled as c, STATE_PLANE_PATHS as cn, ClaudeCredentialParseError as cr, init_percent as ct, loadConfigNoMigration as d, isStatePlaneOnlyStatus as dn, GitError as dr, ROLE_EFFORTS as dt, writeStatusOverridesSync as en, extractPrefixSync as er, getModelCapabilitySync as et, loadConfigSync as f, isStatePlanePath as fn, GitHubApiError as fr, RECORD_DIRNAME as ft, mergeConfigs as g, init_project_key as gn, ProcessSpawnError as gr, appendSessionEntry as gt, jsYaml as h, shouldCommitLegacyWorkspaceArtifacts as hn, MergeConflictError as hr, appendFeedbackEntrySync as ht, getConversationsConfig as i, init_auto_commit as in, resolveBareNumericIdSync as ir, modelSupportsImagesSync as it, KIMI_PLATFORM_BASE_URL as j, getSpecialistRetention as jn, PROJECT_DOCS_SUBDIR as jr, queueIssueRecordCommit as jt, init_harness_policy as k, getSpecialistConfig as kn, LOGS_DIR as kr, init_record as kt, isClaudeCodeChannelsMcpEnabled as l, getMainDivergence as ln, ConfigError as lr, COMPLIANCE_MODES as lt, init_js_yaml as m, resolveStateReadHomeSync as mn, LinearApiError as mr, appendFeedbackEntry as mt, clearConfigCache as n, flushAllPendingAutoCommits as nn, normalizeIssueIdSync as nr, hasModelCapabilitySync as nt, getGlobalConfigPath as o, queueBeadsAutoCommit as on, require_dist as or, fmix32 as ot, updateConversationsConfig as p, init_state_read_home as pn, InvalidAgentIdError as pr, RECORD_SCHEMA_VERSION as pt, DEFAULT_ROLES as q, resolveProjectPath as qn, init_paths as qr, writeRecordResumePoint as qt, getConversationSearchConfigSync as r, flushAutoCommits as rn, parseIssueIdSync as rr, init_model_capabilities as rt, init_load as s, STATE_BRANCH_PATHS as sn, CheckpointError as sr, fnv1a32 as st, init_config_yaml as t, deriveProjectRoot as tn, init_issue_id as tr, getModelEffortLevelsSync as tt, isTldrEnabledSync as u, init_state_plane as un, FsError as ur, PARENT_MODEL_REF as ut, getDefaultTtsDaemonConfig as v, createDefaultProjectsConfig as vn, TrackerError as vr, buildOwnUri as vt, resolveTieredExecutionEnabled as w, findProjectsByRallyProject as wn, CACHE_AGENTS_DIR as wr, getIssueRecordBasePath as wt, TIERED_EXECUTION_DIFFICULTIES as x, findProjectByPathSync as xn, AGENTS_DIR as xr, clearRecordFeedbackSync as xt, mergeTtsDaemonConfigs as y, extractTeamPrefix as yn, VcsError as yr, claimIssueOwner as yt, init_providers as z, loadProjectsConfig as zn, encodeClaudeProjectDir as zr, writeIssueRecordForWorkspaceSync as zt };
14526
14552
 
14527
- //# sourceMappingURL=config-yaml-ClpGgrf6.js.map
14553
+ //# sourceMappingURL=config-yaml-Dcz-8uit.js.map
@@ -1,3 +1,3 @@
1
- import { a as resolveConflictGate, i as init_conflict_gate, t as buildRealConflictGateDeps } from "./conflict-gate-BtB_o-Vi.js";
1
+ import { a as resolveConflictGate, i as init_conflict_gate, t as buildRealConflictGateDeps } from "./conflict-gate-DTje2Ll7.js";
2
2
  init_conflict_gate();
3
3
  export { buildRealConflictGateDeps, resolveConflictGate };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
2
  import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-pcbf-e30.js";
3
- import { c as init_review_status, s as getReviewStatusSync, y as setReviewStatusSync } from "./review-status-gPndPUBc.js";
4
- import { W as spawnRun, j as messageAgent, t as init_agents } from "./agents-B5LfpLPv.js";
3
+ import { c as init_review_status, s as getReviewStatusSync, y as setReviewStatusSync } from "./review-status-4qqLkRMu.js";
4
+ import { W as spawnRun, j as messageAgent, t as init_agents } from "./agents-CsOzAmRg.js";
5
5
  import { exec } from "node:child_process";
6
6
  import { promisify } from "node:util";
7
7
  //#region ../../lib/cloister/conflict-gate.ts
@@ -230,4 +230,4 @@ var init_conflict_gate = __esmMin((() => {
230
230
  //#endregion
231
231
  export { resolveConflictGate as a, init_conflict_gate as i, checkBranchMergeability as n, getCachedConflictGateMergeability as r, buildRealConflictGateDeps as t };
232
232
 
233
- //# sourceMappingURL=conflict-gate-BtB_o-Vi.js.map
233
+ //# sourceMappingURL=conflict-gate-DTje2Ll7.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Vr as init_paths } from "./config-yaml-ClpGgrf6.js";
3
- import { o as init_layers } from "./layers-Cwe1J-9o.js";
2
+ import { qr as init_paths } from "./config-yaml-Dcz-8uit.js";
3
+ import { o as init_layers } from "./layers-CD6FysRU.js";
4
4
  import "fs";
5
5
  import "path";
6
6
  import "os";
@@ -148,4 +148,4 @@ var init_context_layers = __esmMin((() => {
148
148
  //#endregion
149
149
  export { init_render as a, KNOWN_HARNESS_MARKERS as c, validateTemplate as d, hasManagedRegion as i, init_harness as l, REGION_BEGIN as n, userContentOutsideRegion as o, REGION_END as r, HARNESS_MARKERS as s, init_context_layers as t, renderForHarness as u };
150
150
 
151
- //# sourceMappingURL=context-layers-r2ywnQYA.js.map
151
+ //# sourceMappingURL=context-layers-BdUCQ-cl.js.map
@@ -1,4 +1,4 @@
1
- import { l as piGlobalContextFile, n as codexGlobalContextFile } from "./layers-Cwe1J-9o.js";
2
- import { t as init_context_layers } from "./context-layers-r2ywnQYA.js";
1
+ import { l as piGlobalContextFile, n as codexGlobalContextFile } from "./layers-CD6FysRU.js";
2
+ import { t as init_context_layers } from "./context-layers-BdUCQ-cl.js";
3
3
  init_context_layers();
4
4
  export { codexGlobalContextFile, piGlobalContextFile };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Dn as getProjectSync, Nn as init_projects, zn as loadProjectsConfigSync } from "./config-yaml-ClpGgrf6.js";
3
- import { _ as integer, a as EventBus, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-DE3C4PMr.js";
4
- import { n as init_issues, t as IssueId } from "./issues-D3kt9UWE.js";
2
+ import { Bn as loadProjectsConfigSync, On as getProjectSync, Pn as init_projects } from "./config-yaml-Dcz-8uit.js";
3
+ import { _ as integer, a as EventBus, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-bpq1MHKU.js";
4
+ import { n as init_issues, t as IssueId } from "./issues-CwQMphDH.js";
5
5
  import { Context, Effect, Layer, Schema } from "effect";
6
6
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
7
7
  //#region ../../lib/overdeck/control-settings.ts
@@ -403,4 +403,4 @@ var init_control_settings = __esmMin((() => {
403
403
  //#endregion
404
404
  export { setMergeTrainEnabled as C, setFlywheelRequireUatBeforeMerge as S, stampBootReconciliation as T, setDeaconGloballyPaused as _, getFlywheelActiveRunIdSync as a, setFlywheelAutoPickupBacklog as b, isCloisterSpawnsPausedSync as c, isFlywheelAutoPickupBacklog as d, isFlywheelGloballyPaused as f, setCloisterSpawnsPausedSync as g, setBootReconciliationDecision as h, getFlywheelActiveRunId as i, isDeaconGloballyPaused as l, isMergeTrainEnabled as m, FLYWHEEL_GLOBAL_PAUSE_KEY as n, getSetting as o, isFlywheelRequireUatBeforeMerge as p, getBootReconciliationState as r, init_control_settings as s, FLYWHEEL_ACTIVE_RUN_ID_KEY as t, isDeaconGloballyPausedSync as u, setDeaconGloballyPausedSync as v, setSetting as w, setFlywheelGloballyPaused as x, setFlywheelActiveRunId as y };
405
405
 
406
- //# sourceMappingURL=control-settings-D1B3u6HP.js.map
406
+ //# sourceMappingURL=control-settings-DwkAeooY.js.map
@@ -1,11 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-ClpGgrf6.js";
3
- import { a as init_event_store, n as getEventStore } from "./event-store-DCMqyI07.js";
4
- import { Gt as getAgentRuntimeBaseCommand, t as init_agents, un as getProviderExportsForModel } from "./agents-B5LfpLPv.js";
5
- import { t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-CuTVU8dV.js";
6
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-DMu7eGmU.js";
7
- import { r as init_smart_compaction, t as generateSmartSummary } from "./smart-compaction-Bw1K_Sbl.js";
8
- import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-DezPkJSm.js";
2
+ import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-Dcz-8uit.js";
3
+ import { a as init_event_store, n as getEventStore } from "./event-store-DRte2Rwt.js";
4
+ import { Gt as getAgentRuntimeBaseCommand, t as init_agents, un as getProviderExportsForModel } from "./agents-CsOzAmRg.js";
5
+ import { t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-BR1OgvxO.js";
6
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-Dtm9ABuz.js";
7
+ import { r as init_smart_compaction, t as generateSmartSummary } from "./smart-compaction-D5Zen3AA.js";
8
+ import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-CtCwBJ2Z.js";
9
9
  import { dirname, join } from "node:path";
10
10
  import { Effect } from "effect";
11
11
  import { existsSync } from "node:fs";
@@ -179,4 +179,4 @@ var init_conversation_compaction = __esmMin((() => {
179
179
  //#endregion
180
180
  export { init_conversation_compaction as a, shouldInterceptManualCompact as c, getConversationCompactionSettings as i, compactConversationNative as n, isCompacting as o, estimateContextTokens as r, maybeCompactBeforeRespawn as s, buildCompactionRuntimeInfo as t };
181
181
 
182
- //# sourceMappingURL=conversation-compaction-D86Zo2Ci.js.map
182
+ //# sourceMappingURL=conversation-compaction-OTYgd6eg.js.map
@@ -1,3 +1,3 @@
1
- import { a as init_conversation_compaction, c as shouldInterceptManualCompact, i as getConversationCompactionSettings, n as compactConversationNative, o as isCompacting, r as estimateContextTokens, s as maybeCompactBeforeRespawn, t as buildCompactionRuntimeInfo } from "./conversation-compaction-D86Zo2Ci.js";
1
+ import { a as init_conversation_compaction, c as shouldInterceptManualCompact, i as getConversationCompactionSettings, n as compactConversationNative, o as isCompacting, r as estimateContextTokens, s as maybeCompactBeforeRespawn, t as buildCompactionRuntimeInfo } from "./conversation-compaction-OTYgd6eg.js";
2
2
  init_conversation_compaction();
3
3
  export { buildCompactionRuntimeInfo, compactConversationNative, estimateContextTokens, getConversationCompactionSettings, isCompacting, maybeCompactBeforeRespawn, shouldInterceptManualCompact };