@overdeck/desktop 0.45.15 → 0.45.18

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 (372) hide show
  1. package/dist-electron/main.js +149 -158
  2. package/dist-electron/main.js.map +1 -1
  3. package/dist-electron/preload.js +17 -2
  4. package/dist-electron/preload.js.map +1 -1
  5. package/package.json +5 -4
  6. package/server/acceptance-criteria-aQFKQf-J.js +62 -0
  7. package/server/{advancing-selfheal-CSuZ31bB.js → advancing-selfheal-DgwQgm4D.js} +6 -5
  8. package/server/{agent-gc-D_DxfBHR.js → agent-gc-kpzxqT7P.js} +3 -3
  9. package/server/agent-state-C_6TG-Ad.js +3 -0
  10. package/server/{agent-state-service-C_2ZAQRP.js → agent-state-service-BUfovFfB.js} +1 -1
  11. package/server/{agent-state-service-BZkvgQf4.js → agent-state-service-nUD3qfob.js} +9 -52
  12. package/server/agents-BA15AQqo.js +3 -0
  13. package/server/{briefing-freshness-Kh5V8RTh.js → agents-BHBxr8c9.js} +5 -131
  14. package/server/{archive-planning-DkivCk1A.js → archive-planning-CzCW9Ifl.js} +5 -10
  15. package/server/{archive-planning-CTILQRnV.js → archive-planning-D-QsBufn.js} +1 -1
  16. package/server/{artifact-index-jobs-CmsvQ1ey.js → artifact-index-jobs-qqa51B2Z.js} +2 -2
  17. package/server/{backlog-auto-trigger-ueRaT8Dy.js → backlog-auto-trigger-B7Bi0bvY.js} +3 -3
  18. package/server/behavior-CWqNMqE5.js +10 -0
  19. package/server/briefing-freshness-DuxIE1yr.js +131 -0
  20. package/server/{checkpoint-manager-fu9oVsR-.js → checkpoint-manager-DF6hb9Jw.js} +3 -3
  21. package/server/{checkpoint-manager-CAFos8e1.js → checkpoint-manager-DixkLus7.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-DvhGi8P_.js → checkpoints-B1Z42tJE.js} +1 -1
  24. package/server/{checkpoints-1BqOlS4q.js → checkpoints-BiviJqei.js} +2 -2
  25. package/server/claude-hooks-provision-BeMGi4ty.js +3 -0
  26. package/server/{claude-hooks-provision-s_wdpeVj.js → claude-hooks-provision-Du_PkMsp.js} +132 -114
  27. package/server/{claude-permissions-CaWqysff.js → claude-permissions-BB6agcOZ.js} +2 -2
  28. package/server/{claude-settings-overlay-CcTf0xzG.js → claude-settings-overlay-CAq2oFSK.js} +2 -2
  29. package/server/{claude-settings-overlay-BbA4FbVI.js → claude-settings-overlay-DUWWLd6M.js} +1 -1
  30. package/server/cli-BFgrSWKV.js +3 -0
  31. package/server/{cli-BwCvCUBK.js → cli-C33xPZNm.js} +9 -9
  32. package/server/{cliproxy-C2xC-3vH.js → cliproxy-BQX1TL6N.js} +1 -1
  33. package/server/{cliproxy-BsoNNDAj.js → cliproxy-CGBA1GzA.js} +2 -2
  34. package/server/{close-issue-BleIwP3f.js → close-issue-DNv8npc1.js} +5 -5
  35. package/server/{closed-issue-reaper-BwUUvjEW.js → closed-issue-reaper-DrqgBJlr.js} +1 -1
  36. package/server/{closed-issue-reaper-mC5pujeb.js → closed-issue-reaper-LoMnnjtJ.js} +9 -9
  37. package/server/codex-DxLivxri.js +3 -0
  38. package/server/{behavior-Cpj03N4v.js → codex-parser-DboQnEXN.js} +3 -9
  39. package/server/{codex-DW60_5j2.js → codex-sgWVCGUd.js} +43 -17
  40. package/server/{config-BRNQJXhA.js → config-6MCHOZ2N.js} +1 -1
  41. package/server/{config-ZNnMpIlh.js → config-DfaUXr6r.js} +2 -2
  42. package/server/{config-yaml-Dcz-8uit.js → config-yaml-CqaAyn8y.js} +149 -80
  43. package/server/{conflict-gate-DTje2Ll7.js → conflict-gate-BF_zhcmb.js} +3 -3
  44. package/server/{conflict-gate-DGT8jCLp.js → conflict-gate-BubJprtD.js} +1 -1
  45. package/server/{context-layers-BdUCQ-cl.js → context-layers-BFrxfl0l.js} +17 -3
  46. package/server/{context-layers-ByOWUjUg.js → context-layers-DWL_8HhY.js} +2 -2
  47. package/server/{control-settings-DwkAeooY.js → control-settings-BguNQ1F_.js} +4 -4
  48. package/server/{conversation-compaction-WYQZUVDm.js → conversation-compaction-CRKAf2qP.js} +1 -1
  49. package/server/{conversation-compaction-OTYgd6eg.js → conversation-compaction-DxSXl0pT.js} +8 -8
  50. package/server/{conversation-service-C_kNZPLx.js → conversation-service-DzuY9qoH.js} +1 -1
  51. package/server/{conversation-service-BR1OgvxO.js → conversation-service-mFVFdDQK.js} +6 -5
  52. package/server/{conversations-DG2M8WnT.js → conversations-BX5aD-6F.js} +4 -4
  53. package/server/{conversations-izHvSoAR.js → conversations-BajHQ60c.js} +1 -1
  54. package/server/{cost-DQ2ajr_m.js → cost-BoqD1Pxz.js} +2 -2
  55. package/server/{cost-B2mj17iG.js → cost-DuZ5vlv-.js} +3 -3
  56. package/server/{cost-sync-gTayEuWP.js → cost-sync-BYnmnMkY.js} +3 -3
  57. package/server/{dag-CqTehWpY.js → dag-C6kYyF17.js} +7 -243
  58. package/server/{dangerous-git-ops-DDWQlPC3.js → dangerous-git-ops-q5OPtXMd.js} +1 -1
  59. package/server/dashboard-db-worker.js +6 -6
  60. package/server/{deacon-BqW9HMew.js → deacon-CwCiNuEZ.js} +3 -3
  61. package/server/{deacon-DrKDBeJL.js → deacon-Dru5onpk.js} +258 -167
  62. package/server/{deacon-nudge-log-D1wEK6zF.js → deacon-nudge-log-ilDfxrhK.js} +1 -1
  63. package/server/{deacon-swarm-CO_A7xyd.js → deacon-swarm-BPmBmSoU.js} +298 -72
  64. package/server/deacon-swarm-CKyGJng1.js +2 -0
  65. package/server/deacon.js +14 -7
  66. package/server/{devcontainer-renderer-BQolp_qZ.js → devcontainer-renderer-BqGNCzvN.js} +3 -3
  67. package/server/{dist-Bc32rWJB.js → dist-BwlEiLCU.js} +1 -1
  68. package/server/dist-Bx4KkgYL.js +3 -0
  69. package/server/{dist-src-Byxt1ifL.js → dist-src-BE0Denfs.js} +1 -1
  70. package/server/{docker-s-esqZ__.js → docker-CNjXS72x.js} +2 -2
  71. package/server/{ensure-devcontainer-DA4-jF6R.js → ensure-devcontainer-5e9xOve4.js} +4 -4
  72. package/server/{ensure-devcontainer-pUVaT0h3.js → ensure-devcontainer-C6gyUQdE.js} +1 -1
  73. package/server/{esm-shims-CJHy8CZY.js → esm-shims-Cso7IGBC.js} +1 -1
  74. package/server/{event-store-CcJAhKCl.js → event-store-D9UhQyMS.js} +1 -1
  75. package/server/{event-store-DRte2Rwt.js → event-store-KZnWUKWh.js} +3 -3
  76. package/server/{events-Bej1w_k8.js → events-2eFUPdqz.js} +3 -3
  77. package/server/{events-CtsLScn8.js → events-BYbvqZky.js} +1 -1
  78. package/server/{factory-FN727tWr.js → factory-BtaRsHFC.js} +20 -17
  79. package/server/{feature-registry-population-ie-yBcQC.js → feature-registry-population-Ca2UaV0U.js} +4 -4
  80. package/server/{feature-registry-storage-CkZTFSsn.js → feature-registry-storage-DaP-bQxO.js} +2 -2
  81. package/server/{features-Dtm9ABuz.js → features-DqvaoQoa.js} +2 -2
  82. package/server/{feedback-target-BYtpyt1i.js → feedback-target-BXWdOiYI.js} +9 -7
  83. package/server/{feedback-target-DVJQDiE4.js → feedback-target-BblmMe9P.js} +1 -1
  84. package/server/{feedback-writer-DOUhyIW2.js → feedback-writer-CULeOOY4.js} +1 -1
  85. package/server/{feedback-writer-fdE1BzeL.js → feedback-writer-Dn8o9ZyE.js} +4 -4
  86. package/server/{flywheel-Bi82iiNl.js → flywheel-BUWdcfhq.js} +1 -1
  87. package/server/{flywheel-Bv3wv2S6.js → flywheel-CqkO3cDj.js} +15 -28
  88. package/server/{flywheel-CUErLAyN.js → flywheel-D9r1mw2U.js} +13 -13
  89. package/server/{flywheel-merge-order-DXjeBnJ1.js → flywheel-merge-order-LDzQDwSg.js} +1 -1
  90. package/server/{flywheel-merge-order-BaEN3iyN.js → flywheel-merge-order-VtjUweEb.js} +7 -7
  91. package/server/forge-DJy3Zx4s.js +2 -0
  92. package/server/{forge-ButEdJ31.js → forge-wEollMCi.js} +22 -12
  93. package/server/{from-CbtTxftl.js → from-B2tOYhYV.js} +1 -1
  94. package/server/{fts-db-CBgBLZcL.js → fts-db-Bgzn2RO7.js} +2 -2
  95. package/server/{fts-operations-CI9Xuo_1.js → fts-operations-Bj8yutnR.js} +2 -2
  96. package/server/{git-utils-ClfpP47N.js → git-utils-GxlL0tmt.js} +2 -2
  97. package/server/{git-utils-BCLRWQ-y.js → git-utils-q8jNoBts.js} +1 -1
  98. package/server/{github-app-DRD2woO0.js → github-app-BrYwK_Gb.js} +1 -1
  99. package/server/{github-app-DscZ0_B6.js → github-app-tUbb8Ldr.js} +8 -3
  100. package/server/{github-client-DpiZnxGH.js → github-client-BwBU41jK.js} +3 -3
  101. package/server/{github-client-iFRw8f7e.js → github-client-D6CNsftm.js} +1 -1
  102. package/server/{github-pr-lookup-D-EBexxC.js → github-pr-lookup-BS5PqkJb.js} +2 -2
  103. package/server/{harness-resolve-iMjyNUJ2.js → harness-resolve-Dx8hUsvC.js} +3 -3
  104. package/server/{health-events-CRdxDFN2.js → health-events-2DLp-5Xp.js} +2 -2
  105. package/server/{health-events-B_WsQyYm.js → health-events-B0mj6Iae.js} +1 -1
  106. package/server/{hooks-C1ScyVxP.js → hooks-BDcQJDUe.js} +1 -1
  107. package/server/{hooks-C9b7Vqpw.js → hooks-BS_JrvYP.js} +3 -3
  108. package/server/hume-B4seN95Y.js +3 -0
  109. package/server/{hume-TQ5pvOZ_.js → hume-BRhNKyXQ.js} +2 -2
  110. package/server/{idle-stack-reaper-B1kG7B_X.js → idle-stack-reaper-BCITXNW5.js} +2 -2
  111. package/server/{idle-stack-reaper-iFVOAoJy.js → idle-stack-reaper-C1ymihno.js} +1 -1
  112. package/server/{infra-bpq1MHKU.js → infra-_Kx1m9pm.js} +9 -4
  113. package/server/{injection-BLWfwTVZ.js → injection-Bvhyg_MV.js} +1 -1
  114. package/server/{injection-DJqWld1v.js → injection-CCaYkofq.js} +7 -7
  115. package/server/{inspect-agent-DytCsltn.js → inspect-agent-BqyZ4pCo.js} +35 -67
  116. package/server/inspect-agent-DCJQm9Wu.js +2 -0
  117. package/server/{internal-token-CjlhdufS.js → internal-token-Cl-1IxaE.js} +2 -2
  118. package/server/{internal-token-CCaWaTwE.js → internal-token-D-t28de5.js} +1 -1
  119. package/server/{io-BiQ2Cs3k.js → io-DkC4sFSy.js} +42 -56
  120. package/server/{issue-closed-FApNiOOs.js → issue-closed-Cpl4VDUM.js} +41 -6
  121. package/server/{issue-lifecycle-C-K53ASY.js → issue-lifecycle-CFR8TJ22.js} +22 -37
  122. package/server/{issue-lifecycle-BkFWNjlD.js → issue-lifecycle-YNTy3OT3.js} +1 -1
  123. package/server/{issue-service-singleton-bG1WdSdQ.js → issue-service-singleton-D81mCts_.js} +1 -1
  124. package/server/{issue-service-singleton-CuHGpJJP.js → issue-service-singleton-ldvUUXi3.js} +29 -29
  125. package/server/{issues-CwQMphDH.js → issues-DIEHt9sq.js} +2 -2
  126. package/server/{jsonl-parser-dNIjHgym.js → jsonl-parser-Cd5jIqh7.js} +3 -3
  127. package/server/{label-cleanup-DYvAZknd.js → label-cleanup-Btny6Gyo.js} +3 -3
  128. package/server/{state-home-CRowbXqU.js → launcher-generator-BXLM9f4b.js} +7 -127
  129. package/server/{layers-CD6FysRU.js → layers-gCJlK62m.js} +2 -2
  130. package/server/lifecycle-D7aQUnTO.js +12 -0
  131. package/server/{lifecycle-io-C_Wu0_i-.js → lifecycle-io-DQBF-GHO.js} +1 -1
  132. package/server/{lifecycle-io-CeYxP3cE.js → lifecycle-io-FfPUtz-y.js} +36 -47
  133. package/server/{linear-client-EtVyblVz.js → linear-client-CDH2D6Qy.js} +3 -3
  134. package/server/{linear-client-4qoKnuQu.js → linear-client-WrYrUIAH.js} +1 -1
  135. package/server/memory-fts-worker.js +1 -1
  136. package/server/{merge-7rqkTUm2.js → merge-BsDgUxFz.js} +3 -3
  137. package/server/{merge-brm721Es.js → merge-Dervs4BF.js} +1 -1
  138. package/server/{merge-agent-4Zhlgvqp.js → merge-agent-D6DNhe9j.js} +64 -51
  139. package/server/{merge-agent-36wfYm2u.js → merge-agent-DMQTJMP0.js} +1 -1
  140. package/server/{merge-batch-itfnwdsT.js → merge-batch-Bv6Z5K2H.js} +1 -1
  141. package/server/{merge-blockers-Bto_Oe_o.js → merge-blockers-WWWi6Ur2.js} +2 -2
  142. package/server/merge-ops-h9OCnIVz.js +2 -0
  143. package/server/{merge-rebase-Czfqfe4q.js → merge-rebase-Czth9ggm.js} +2 -2
  144. package/server/{merge-set-BIkGQL9j.js → merge-set-DNc4zBqd.js} +3 -3
  145. package/server/{merge-set-G1RHcu3D.js → merge-set-vuE3MEVt.js} +1 -1
  146. package/server/{merge-sync-B43Dybea.js → merge-sync-B2KSk54U.js} +2 -2
  147. package/server/{merge-sync-DIrmlZUr.js → merge-sync-B9nHdUGx.js} +1 -1
  148. package/server/{merge-train-DGqVuNZV.js → merge-train-DJgr81tF.js} +3 -3
  149. package/server/{merge-train-deps-q15XLnAS.js → merge-train-deps-B2OWS0k9.js} +4 -4
  150. package/server/{merge-verification-Cqfxx6bE.js → merge-verification-BBIXUEqa.js} +4 -4
  151. package/server/{multipart-parser-CiPxxfUH.js → multipart-parser-9DhuAkPd.js} +2 -2
  152. package/server/{no-resume-mode-yrPEQ_pC.js → no-resume-mode-Gh5R_YLF.js} +1 -1
  153. package/server/node_modules/.package-lock.json +11 -11
  154. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  155. package/server/node_modules/toml/README.md +54 -0
  156. package/server/node_modules/toml/index.d.ts +42 -1
  157. package/server/node_modules/toml/index.js +3 -3
  158. package/server/node_modules/toml/lib/compiler.js +35 -3
  159. package/server/node_modules/toml/lib/parser.js +224 -143
  160. package/server/node_modules/toml/package.json +3 -1
  161. package/server/node_modules/ws/lib/receiver.js +15 -32
  162. package/server/node_modules/ws/lib/websocket-server.js +4 -4
  163. package/server/node_modules/ws/lib/websocket.js +4 -4
  164. package/server/node_modules/ws/package.json +5 -1
  165. package/server/{orphan-proposed-reconciler-BWWHn4Lr.js → orphan-proposed-reconciler-B8H41C4a.js} +14 -24
  166. package/server/{orphan-proposed-reconciler-DAD9FJtQ.js → orphan-proposed-reconciler-DbTmT7qy.js} +1 -1
  167. package/server/package-lock.json +12 -12
  168. package/server/package.json +1 -1
  169. package/server/{pan-dir-Bj7Hy8iu.js → pan-dir-BTw4MdSe.js} +4 -4
  170. package/server/{paths-C9DkhIOT.js → paths-Btkc8mzp.js} +2 -2
  171. package/server/{pickup-CKRuGDsB.js → pickup-BtvRBbvI.js} +1 -1
  172. package/server/{pipeline-notifier-BkKbQ8ji.js → pipeline-notifier-3frIvSi3.js} +1 -1
  173. package/server/{pipeline-notifier-CAurUste.js → pipeline-notifier-DTd19f18.js} +2 -2
  174. package/server/{project-pipelines-BRWaGmI4.js → project-pipelines-B95fcAek.js} +2 -2
  175. package/server/projects-Dc9aoVoG.js +3 -0
  176. package/server/{prompts-DfI5qbTW.js → prompts-CIVmjHxn.js} +2 -2
  177. package/server/{providers-D-5txBRc.js → providers-BLLk5IIb.js} +1 -1
  178. package/server/{providers-CWDXoaMA.js → providers-C-yWibCk.js} +7 -7
  179. package/server/public/assets/chunk-BO2N2NFS-DzKZyoKY.js +103 -0
  180. package/server/public/assets/{diagram-OG6HWLK6-Avtvq2qI.js → diagram-OG6HWLK6-Cx8mWUb8.js} +1 -1
  181. package/server/public/assets/{dist-BEHQuasD.js → dist-BqccLhaw.js} +3 -3
  182. package/server/public/assets/{dist-BvmY-qb1.js → dist-rC3nAs_O.js} +1 -1
  183. package/server/public/assets/{ganttDiagram-6RSMTGT7-7KhCd0fH.js → ganttDiagram-6RSMTGT7-DLYPLf5T.js} +1 -1
  184. package/server/public/assets/{highlighted-body-OFNGDK62-iQoBMTf0.js → highlighted-body-OFNGDK62-D4DqixbV.js} +1 -1
  185. package/server/public/assets/index-CPcysUHk.js +796 -0
  186. package/server/public/assets/index-H5M0yhM4.css +1 -0
  187. package/server/public/assets/{linear-CiJHW9g5.js → linear-yqcXkDfj.js} +1 -1
  188. package/server/public/assets/mermaid-GHXKKRXX-CWdZ_heB.js +1 -0
  189. package/server/public/assets/{pieDiagram-4H26LBE5-BOhmvUhW.js → pieDiagram-4H26LBE5-DhraIOaV.js} +1 -1
  190. package/server/public/assets/{prod-DmLBBqat.js → prod-DKUunUdN.js} +4 -4
  191. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Cjku660G.js → quadrantDiagram-W4KKPZXB-DPiRcToa.js} +1 -1
  192. package/server/public/assets/{sankeyDiagram-5OEKKPKP-D52w5oPh.js → sankeyDiagram-5OEKKPKP-3An5HNkZ.js} +1 -1
  193. package/server/public/assets/{xychartDiagram-2RQKCTM6-BTO07_Iv.js → xychartDiagram-2RQKCTM6-lbEOjfqQ.js} +1 -1
  194. package/server/public/index.html +2 -2
  195. package/server/{pull-requests-CKZPWhjD.js → pull-requests-D7AL5woD.js} +1 -1
  196. package/server/{pull-requests-Bmre-Xlz.js → pull-requests-NDDNtqNq.js} +3 -3
  197. package/server/{agents-CsOzAmRg.js → queries-C0LCGG21.js} +743 -399
  198. package/server/{rally-BBd9tQ__.js → rally-4oKvnxLG.js} +3 -3
  199. package/server/rally-DF5a3ioP.js +3 -0
  200. package/server/{rally-api-DxZFObI_.js → rally-api-41tT6ikZ.js} +2 -2
  201. package/server/{rally-api-DDc85HIz.js → rally-api-BsaQ8Vnz.js} +1 -1
  202. package/server/{rally-client-DvvLiAQP.js → rally-client-Bo4hNcCZ.js} +5 -5
  203. package/server/{rally-client-BADHn0m_.js → rally-client-b5PT1x5L.js} +1 -1
  204. package/server/{reap-terminal-sessions-D_xvy-Mk.js → reap-terminal-sessions-BR39qflC.js} +1 -1
  205. package/server/{reap-terminal-sessions-D6JDJsqF.js → reap-terminal-sessions-CFkuquQj.js} +1 -1
  206. package/server/{rebuild-stack-GOsWqXi3.js → rebuild-stack-C7JPUom6.js} +1 -1
  207. package/server/{rebuild-stack-D19i080j.js → rebuild-stack-Ddv6W017.js} +6 -6
  208. package/server/{reconstruct-cache-lQrG4xGg.js → reconstruct-cache-Gqhm---K.js} +6 -6
  209. package/server/record-DLOqfbkI.js +3 -0
  210. package/server/record-update-BltEmPge.js +168 -0
  211. package/server/record-update-CDp7aTaT.js +3 -0
  212. package/server/recovery-trip-Cn7KJVkS.js +44 -0
  213. package/server/{release-engine-DxcMWRuK.js → release-engine-BYzmIBf9.js} +5 -5
  214. package/server/{release-set-BYsgX7o6.js → release-set-7pnxFOWR.js} +3 -3
  215. package/server/{remote-DmeL21dF.js → remote-Cvu4CSDk.js} +3 -3
  216. package/server/{remote-agents-BfQBE6MN.js → remote-agents-C2C6z9tj.js} +6 -33
  217. package/server/{remote-agents-DlvbzO7m.js → remote-agents-DYY5fFpd.js} +1 -1
  218. package/server/{remote-completion-BgkiSQmx.js → remote-completion-2Kb4IDg_.js} +13 -13
  219. package/server/{remote-8W2Yhygw.js → remote-rN0ecjHE.js} +3 -3
  220. package/server/resume-BFLl-yLn.js +3 -0
  221. package/server/{review-agent-D025Wt7w.js → review-agent-BZvk0N5G.js} +31 -23
  222. package/server/{review-agent-Rub0OpZc.js → review-agent-CpSHLzed.js} +1 -1
  223. package/server/{review-artifacts-CX951jTU.js → review-artifacts-PCo53YMn.js} +5 -19
  224. package/server/{review-context-DGGGR_w5.js → review-context-M7QtJlJq.js} +8 -8
  225. package/server/{review-monitor-0_qqMcnS.js → review-monitor-BLC5mTTg.js} +2 -2
  226. package/server/{review-status-Br6lAFGO.js → review-status-77N3PoZr.js} +1 -1
  227. package/server/{review-status-4qqLkRMu.js → review-status-DANr0t-v.js} +33 -59
  228. package/server/{review-status-enrichment-Cr8m3uVL.js → review-status-enrichment-DwOg4UfL.js} +3 -3
  229. package/server/{review-status-sync-D3KUhsdA.js → review-status-sync-Bd08OOFA.js} +1 -1
  230. package/server/{review-status-sync-OC-l1lNt.js → review-status-sync-BjTUJ5fx.js} +2 -2
  231. package/server/{review-verdict-feedback-YOzmsq9G.js → review-verdict-feedback-BsFLjN_6.js} +1 -1
  232. package/server/{review-verdict-feedback-DrWMuRaj.js → review-verdict-feedback-CBf-J_wS.js} +8 -8
  233. package/server/{rollup-CnxbwaLH.js → rollup-Bu0f2EyN.js} +8 -8
  234. package/server/{rollup-DmazRY0j.js → rollup-DTCCdEy4.js} +1 -1
  235. package/server/{scanner-DE1MqAaF.js → scanner-BlZ2vB7j.js} +7 -7
  236. package/server/{sequence-io-C0uoqfGx.js → sequence-io-ylyDtz2J.js} +4 -4
  237. package/server/{sequencer-agent-i-b2u4SJ.js → sequencer-agent-DsWQ-87H.js} +6 -17
  238. package/server/server.js +5670 -6392
  239. package/server/{service-D0_gh2tl.js → service-CLVBC_1Y.js} +116 -90
  240. package/server/{session-fork-DZ12vipL.js → session-fork-DlEIAhRy.js} +2 -2
  241. package/server/session-history-bnOFKMwf.js +168 -0
  242. package/server/settings-CP3GGon2.js +2 -0
  243. package/server/{settings-ByqjPtFO.js → settings-Cqa-8nyj.js} +2 -2
  244. package/server/{settings-DCC4BAqj.js → settings-gJrdLZy2.js} +3 -3
  245. package/server/{shadow-engineering-BhnmtW5m.js → shadow-engineering-fq1YEKV3.js} +3 -3
  246. package/server/{shadow-state-ByXZehsy.js → shadow-state-BqeFAygK.js} +1 -1
  247. package/server/{shadow-state-CKm8xWX9.js → shadow-state-RptE9Cau.js} +2 -2
  248. package/server/shadow-utils-BMWr5tRT.js +39 -0
  249. package/server/{ship-log-DE_0Cv_i.js → ship-log-BRQQi2lU.js} +1 -1
  250. package/server/{smart-compaction-D5Zen3AA.js → smart-compaction-CmoXpjeU.js} +7 -7
  251. package/server/{smart-compaction-h4_ca6Uk.js → smart-compaction-DldUel4B.js} +1 -1
  252. package/server/{spawn-planning-session-Dueit4WX.js → spawn-planning-session-CoS6LTc6.js} +16 -16
  253. package/server/{spawn-planning-session-Bgi7Ub02.js → spawn-planning-session-DT2tSMxo.js} +1 -1
  254. package/server/{specialist-completion-BZ8M-WZ0.js → specialist-completion-pJtESo7m.js} +1 -1
  255. package/server/{specialist-context-BMq83C58.js → specialist-context-CspI4Eog.js} +5 -5
  256. package/server/{specialist-handoff-logger-BxX1YefH.js → specialist-handoff-logger-Duz9RGvk.js} +2 -2
  257. package/server/{specialist-logs-BWZYcJ6P.js → specialist-logs-DtSkPJZK.js} +3 -3
  258. package/server/{specialists-ZkW4Mb7U.js → specialists-CywEMwxk.js} +1 -1
  259. package/server/{specialists-8ZAguXef.js → specialists-D9-dMUtI.js} +1 -1
  260. package/server/{specialists-BudKrjOu.js → specialists-Dax7tqXC.js} +1817 -560
  261. package/server/{specialists-DrPrC9Y9.js → specialists-GF42OOqd.js} +18 -18
  262. package/server/specs-VwcFtEDi.js +3 -0
  263. package/server/{src-DHn4Rd2F.js → src-By3D85Ry.js} +77 -1
  264. package/server/{src-Dv6L03vW.js → src-CqyFg52C.js} +5 -5
  265. package/server/{src-DNUUqkec.js → src-DhxM-eCb.js} +6 -6
  266. package/server/{stack-health-Dclm7_tu.js → stack-health-BsEVrJZ6.js} +1 -1
  267. package/server/{stack-health-DxsTx7II.js → stack-health-C-SnpRHh.js} +2 -2
  268. package/server/stale-task-claims-vTxmRzLi.js +69 -0
  269. package/server/state-home-Bur1y4oH.js +213 -0
  270. package/server/{state-mapping-BvAgFK8n.js → state-mapping-Ci0pkac4.js} +1 -1
  271. package/server/state-migrate-D3VveYfO.js +362 -0
  272. package/server/{stuck-remediation-CFWUP8_I.js → stuck-remediation-B699-p8v.js} +63 -46
  273. package/server/{stuck-remediation-CLHd-lrF.js → stuck-remediation-CaFYYTQW.js} +1 -1
  274. package/server/{summary-fork-CKc01Our.js → summary-fork-BxnF8Xh0.js} +2 -2
  275. package/server/{summary-fork-CtCwBJ2Z.js → summary-fork-COqYpVa3.js} +8 -8
  276. package/server/supervisor/{paths-3R6b989k.js → paths-Bk6hJRH9.js} +4 -3
  277. package/server/supervisor/pty-supervisor.js +2 -2
  278. package/server/supervisor/{pty-token-CScQ32Rj.js → pty-token-BZS5GYdG.js} +2 -2
  279. package/server/supervisor-eWAAmXKu.js +2 -0
  280. package/server/{supervisor-BA5D72Qa.js → supervisor-liMgIPDF.js} +2 -2
  281. package/server/{swarm-readiness-CL5sM9B1.js → swarm-readiness-sXB1vhzo.js} +3 -3
  282. package/server/{system-prerequisites-DmFSXIE5.js → system-prerequisites-Bz6KdkFJ.js} +1 -13
  283. package/server/{teardown-workspace-DWmFJzTw.js → teardown-workspace-DvzqnmUF.js} +14 -71
  284. package/server/{test-agent-queue-DjsQoV5X.js → test-agent-queue-hAU1Ah08.js} +6 -6
  285. package/server/{test-verdict-BSqsQp3G.js → test-verdict-CRsPpByy.js} +1 -1
  286. package/server/{test-verdict-D1AmZ2c0.js → test-verdict-CXMLATGc.js} +1 -1
  287. package/server/{tldr-daemon-C-MGomL8.js → tldr-daemon-Bam7Xhoo.js} +2 -2
  288. package/server/{tldr-daemon-DD9rI5gA.js → tldr-daemon-DhGwd88s.js} +1 -1
  289. package/server/tmux-C-rgxRDA.js +3 -0
  290. package/server/{tmux-C_d-lSIq.js → tmux-U55cNGFG.js} +92 -4
  291. package/server/{token-DfBf1bsd.js → token-Dsa-i36o.js} +2 -2
  292. package/server/{token-util-CROoF5ic.js → token-util-BWNpH96m.js} +1 -1
  293. package/server/token-util-DRt0j2nQ.js +3 -0
  294. package/server/{tracker-config-CNODpd11.js → tracker-config-OkdbaUCm.js} +2 -2
  295. package/server/{tracker-utils-Ch2_5GGf.js → tracker-utils-CghXMF3q.js} +2 -2
  296. package/server/{tracker-utils-B9ZoVA9b.js → tracker-utils-DdzUiPNU.js} +1 -1
  297. package/server/{traefik-connect-BF4x_LUQ.js → traefik-connect-CZYB3dlm.js} +1 -1
  298. package/server/{tunnel-r_5nHAI6.js → tunnel-D1YxesBL.js} +3 -3
  299. package/server/{tunnel-YD80_IHr.js → tunnel-DjlzgTl3.js} +1 -1
  300. package/server/typed-errors-CH4roFIj.js +3 -0
  301. package/server/{typed-errors-BEJhbjJg.js → typed-errors-n_Tnb4Fh.js} +3 -4
  302. package/server/{types-CE1m_daD.js → types-DOjWNv3Z.js} +1 -1
  303. package/server/{types-33JEP4LZ.js → types-DXBMm4mX.js} +1 -1
  304. package/server/{uat-train-DDI00aqD.js → uat-train-CaaWs9Rp.js} +1 -1
  305. package/server/{uat-train-DjkFWXge.js → uat-train-CqN34zFx.js} +24 -25
  306. package/server/{validation-DUTiJnyz.js → validation-4-z2Cw4z.js} +70 -23
  307. package/server/validation-DpTNakM6.js +3 -0
  308. package/server/verification-artifact-DK1xb1zG.js +56 -0
  309. package/server/verification-artifact-JD_edpZ9.js +2 -0
  310. package/server/{verification-runner-inLgeQux.js → verification-runner-BjHN80pJ.js} +338 -58
  311. package/server/verification-runner-ShYu5Ph3.js +2 -0
  312. package/server/{work-agent-prompt-fZljjA1_.js → work-agent-prompt-BiJ43Der.js} +12 -88
  313. package/server/workflows-B4C3lY9E.js +2 -0
  314. package/server/{workflows-oBnJ7Tm0.js → workflows-DkTotz_m.js} +17 -24
  315. package/server/{workspace-CNuW2j41.js → workspace-CuN0ev4Z.js} +3 -3
  316. package/server/{workspace-B2WOW9Hw.js → workspace-DQ4vVivd.js} +1 -1
  317. package/server/{workspace-config-CBgMGhWs.js → workspace-config-C77NKnsV.js} +1 -1
  318. package/server/{workspace-manager-DjUAJCSs.js → workspace-manager-B1mYn0lN.js} +1 -1
  319. package/server/{workspace-manager-CB-R07R3.js → workspace-manager-Beeo2aKF.js} +23 -48
  320. package/server/{workspace-metadata-9Nn5kgRl.js → workspace-metadata-BZC5BmoP.js} +2 -2
  321. package/server/{workspace-metadata-Fd58uUQG.js → workspace-metadata-Cy7_ZACL.js} +1 -1
  322. package/server/{workspaces-BjWXntty.js → workspaces-CGuzW1Ia.js} +191 -153
  323. package/sync-sources/hooks/ask-user-question-hook +7 -1
  324. package/sync-sources/hooks/codex-notify-hook +64 -8
  325. package/sync-sources/hooks/record-cost-event.js +1109 -36
  326. package/sync-sources/hooks/record-cost-event.js.map +1 -1
  327. package/sync-sources/hooks/statusline.sh +2 -2
  328. package/sync-sources/hooks/work-agent-stop-hook +1 -2
  329. package/server/acceptance-criteria-DHZk2ceV.js +0 -33
  330. package/server/agent-runtime-mirror-DrWxopNA.js +0 -37
  331. package/server/agent-state-EP2QFV9n.js +0 -3
  332. package/server/agents-DCvyTXNU.js +0 -3
  333. package/server/auto-commit-QAfsu3Sb.js +0 -3
  334. package/server/bd-process-lock-D3S4T4o-.js +0 -390
  335. package/server/beads-BGGxrkZ5.js +0 -649
  336. package/server/beads-CYsLiyIM.js +0 -2
  337. package/server/beads-query-B1DlJVp9.js +0 -95
  338. package/server/beads-restore-CyygSmmn.js +0 -23
  339. package/server/cli-ClIQwgMI.js +0 -3
  340. package/server/codex-B7DTpwEw.js +0 -3
  341. package/server/compact-beads-CK_hHEnB.js +0 -3
  342. package/server/compact-beads-DKL54y6j.js +0 -94
  343. package/server/deacon-swarm-BY5hKNaU.js +0 -2
  344. package/server/dist-DGTwcZhI.js +0 -3
  345. package/server/export-Dx_qJ3h8.js +0 -87
  346. package/server/forge-XlDgPQWs.js +0 -2
  347. package/server/hume-K1pi8jC4.js +0 -3
  348. package/server/inspect-agent-477VxQim.js +0 -2
  349. package/server/lifecycle-C_73gi-C.js +0 -14
  350. package/server/merge-ops-PzqsW69V.js +0 -2
  351. package/server/projects-KJ94e50I.js +0 -3
  352. package/server/public/assets/chunk-BO2N2NFS-ClukPsZQ.js +0 -103
  353. package/server/public/assets/index-DUFDmvmH.css +0 -1
  354. package/server/public/assets/index-DnTZ2QeN.js +0 -796
  355. package/server/public/assets/mermaid-GHXKKRXX-DZJOwgBG.js +0 -1
  356. package/server/rally-Dc2Wnxw2.js +0 -3
  357. package/server/record-pyB6VA32.js +0 -3
  358. package/server/recovery-trip-Dfh1tNHn.js +0 -98
  359. package/server/resolver-dTpSSzaH.js +0 -158
  360. package/server/resume-DhcIqsTm.js +0 -3
  361. package/server/settings-yydgaqhv.js +0 -2
  362. package/server/specs-DwoAEGrW.js +0 -3
  363. package/server/supervisor-DHjumXlL.js +0 -2
  364. package/server/tmux-x291Gjjb.js +0 -3
  365. package/server/token-util-xNaV-00f.js +0 -3
  366. package/server/tracker-config-DItsdelv.js +0 -3
  367. package/server/typed-errors-DSPn_xWP.js +0 -3
  368. package/server/validation-ict8hnXk.js +0 -3
  369. package/server/verification-runner-ATaLbpr5.js +0 -2
  370. package/server/workflows-tU7KKxQi.js +0 -2
  371. package/server/writer-CQMGzEkw.js +0 -3
  372. package/server/writer-fe1-8iGc.js +0 -251
@@ -6,7 +6,7 @@ import { dirname as dirname$1, join as join$1, resolve as resolve$1, sep as sep$
6
6
  import { homedir, totalmem } from "os";
7
7
  import { fileURLToPath } from "url";
8
8
  import { hostname } from "node:os";
9
- import { closeSync as closeSync$1, existsSync as existsSync$1, mkdirSync as mkdirSync$1, openSync as openSync$1, promises as promises$1, readFileSync as readFileSync$1, renameSync as renameSync$1, rmSync as rmSync$1, writeFileSync as writeFileSync$1 } from "node:fs";
9
+ import { closeSync as closeSync$1, existsSync as existsSync$1, fsyncSync, mkdirSync as mkdirSync$1, openSync as openSync$1, promises as promises$1, readFileSync as readFileSync$1, renameSync as renameSync$1, rmSync as rmSync$1, writeFileSync as writeFileSync$1 } from "node:fs";
10
10
  import { ChildProcess } from "effect/unstable/process";
11
11
  import * as NodeChildProcessSpawner from "@effect/platform-node/NodeChildProcessSpawner";
12
12
  import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem";
@@ -145,6 +145,7 @@ var init_paths = __esmMin((() => {
145
145
  CONFIG_FILE = join$1(CONFIG_DIR, "config.toml");
146
146
  join$1(CONFIG_DIR, "settings.json");
147
147
  CLAUDE_DIR = join$1(homedir(), ".claude");
148
+ join$1(homedir(), ".agents", "skills");
148
149
  join$1(homedir(), ".codex"), join$1(homedir(), ".cursor"), join$1(homedir(), ".gemini"), join$1(homedir(), ".opencode");
149
150
  join$1(CLAUDE_DIR, "skills"), join$1(CLAUDE_DIR, "commands"), join$1(CLAUDE_DIR, "agents");
150
151
  TEMPLATES_DIR = join$1(OVERDECK_HOME, "templates");
@@ -6977,6 +6978,7 @@ var projects_exports = /* @__PURE__ */ __exportAll({
6977
6978
  saveProjectsConfig: () => saveProjectsConfig,
6978
6979
  saveProjectsConfigSync: () => saveProjectsConfigSync,
6979
6980
  setProjectAutoMergeDefaultSync: () => setProjectAutoMergeDefaultSync,
6981
+ setProjectSwarmPolicySync: () => setProjectSwarmPolicySync,
6980
6982
  unregisterProject: () => unregisterProject,
6981
6983
  unregisterProjectSync: () => unregisterProjectSync
6982
6984
  });
@@ -7043,6 +7045,18 @@ function setProjectAutoMergeDefaultSync(key, value) {
7043
7045
  else updated.auto_merge_default = value;
7044
7046
  registerProjectSync(key, updated);
7045
7047
  }
7048
+ function setProjectSwarmPolicySync(key, value) {
7049
+ const config = getProjectSync(key);
7050
+ if (!config) throw new Error(`Unknown project: ${key}`);
7051
+ const updated = { ...config };
7052
+ const hotspots = config.swarm?.hotspots;
7053
+ if (value === null && !hotspots?.length) delete updated.swarm;
7054
+ else updated.swarm = {
7055
+ ...hotspots?.length ? { hotspots } : {},
7056
+ ...value ?? {}
7057
+ };
7058
+ registerProjectSync(key, updated);
7059
+ }
7046
7060
  /**
7047
7061
  * Remove a project from the registry
7048
7062
  */
@@ -7444,7 +7458,7 @@ var init_projects = __esmMin((() => {
7444
7458
  function projectKey(project, explicit) {
7445
7459
  if (explicit) return explicit;
7446
7460
  const projectPath = resolve(project.path);
7447
- return listProjectsSync().find(({ config }) => resolve(config.path) === projectPath)?.key ?? basename(projectPath);
7461
+ return (listProjectsSync() ?? []).find(({ config }) => resolve(config.path) === projectPath)?.key ?? basename(projectPath);
7448
7462
  }
7449
7463
  var init_project_key = __esmMin((() => {
7450
7464
  init_projects();
@@ -7500,6 +7514,20 @@ function isStateMigrationLocked(projectKey) {
7500
7514
  return true;
7501
7515
  }
7502
7516
  }
7517
+ function acquireStateMigrationLock(projectKey) {
7518
+ const path = stateMigrationLockPath(projectKey);
7519
+ mkdirSync$1(dirname(path), { recursive: true });
7520
+ let fd;
7521
+ try {
7522
+ fd = openSync$1(path, "wx", 384);
7523
+ } catch {
7524
+ throw new Error(`State migration already running for ${projectKey}: ${path}`);
7525
+ }
7526
+ return () => {
7527
+ closeSync$1(fd);
7528
+ rmSync$1(path, { force: true });
7529
+ };
7530
+ }
7503
7531
  var init_state_migration_lock = __esmMin((() => {
7504
7532
  init_paths();
7505
7533
  }));
@@ -7631,15 +7659,13 @@ var init_state_plane = __esmMin((() => {
7631
7659
  "test/",
7632
7660
  "feedback/",
7633
7661
  "backlog/",
7634
- "notes/",
7635
- ".beads/"
7662
+ "notes/"
7636
7663
  ];
7637
7664
  STATE_PLANE_PATHS = [
7638
7665
  ".pan/records/",
7639
7666
  ".pan/continues/",
7640
7667
  ".pan/continue.json",
7641
7668
  ".pan/specs/",
7642
- ".beads/",
7643
7669
  ".pan/test/",
7644
7670
  ".pan/review/",
7645
7671
  ".pan/feedback/"
@@ -7656,23 +7682,17 @@ var init_state_plane = __esmMin((() => {
7656
7682
  * periodic manual "chore: sync workspace state" passes from the operator and
7657
7683
  * making the project repo stay perpetually dirty.
7658
7684
  *
7659
- * This module exposes a fire-and-forget commit primitive that the pan-dir
7685
+ * This module exposes a serialized write-through commit primitive that pan-dir
7660
7686
  * writers call after they update a file. Commits are:
7661
- * - fixed-window coalesced (default 10m) so a burst of writes becomes one commit
7687
+ * - scheduled on the next event-loop turn so every state update reaches git + origin
7662
7688
  * - serialized within a process so the git index is never contested
7663
- * - best-effort: failures are logged and never thrown back to the caller
7689
+ * - best-effort for synchronous callers: failures are logged and reported by flushes
7664
7690
  * - main-only: feature branches have their own commit cadence owned by agents
7665
7691
  *
7666
7692
  * Cross-machine concern: when an agent's state is canonical on `main`, moving
7667
7693
  * the agent between machines becomes "stop on A, pull on B, resume on B." The
7668
7694
  * sync-state-via-commit shape this helper produces is the substrate for that.
7669
7695
  */
7670
- function parseStateFlushWindowMs(value) {
7671
- if (!value) return DEFAULT_STATE_FLUSH_WINDOW_MS;
7672
- const parsed = Number(value);
7673
- if (!Number.isFinite(parsed) || parsed <= 0) return DEFAULT_STATE_FLUSH_WINDOW_MS;
7674
- return parsed;
7675
- }
7676
7696
  function parsePositiveInteger(value, fallback) {
7677
7697
  if (!value) return fallback;
7678
7698
  const parsed = Number(value);
@@ -7691,7 +7711,11 @@ function isAutoCommitExcludedPath(relativePath) {
7691
7711
  /** Run a git subcommand. Fails with GitError on non-zero exit. */
7692
7712
  function runGit(args, cwd) {
7693
7713
  return Effect.gen(function* () {
7694
- const handle = yield* ChildProcess.make("git", [...args], { cwd });
7714
+ const handle = yield* ChildProcess.make("git", [...args], {
7715
+ cwd,
7716
+ env: { HUSKY: "0" },
7717
+ extendEnv: true
7718
+ });
7695
7719
  const stdoutBuf = yield* Stream.runFold(handle.stdout, () => Buffer.alloc(0), (acc, chunk) => Buffer.concat([acc, Buffer.from(chunk)]));
7696
7720
  const stderrBuf = yield* Stream.runFold(handle.stderr, () => Buffer.alloc(0), (acc, chunk) => Buffer.concat([acc, Buffer.from(chunk)]));
7697
7721
  const exitCode = yield* handle.exitCode;
@@ -7724,9 +7748,9 @@ function isGitError(value) {
7724
7748
  return typeof value === "object" && value !== null && "_tag" in value && value._tag === "GitError";
7725
7749
  }
7726
7750
  /**
7727
- * Queue an auto-commit for one or more files. Returns immediately; the actual
7728
- * git commit happens at the end of the fixed flush window. Multiple calls for
7729
- * the same project root inside the window coalesce without extending it.
7751
+ * Queue an auto-commit for one or more files. Returns immediately; the
7752
+ * serialized commit-and-push starts on the next timer turn. Callers whose
7753
+ * success depends on remote durability must also await flushAutoCommits().
7730
7754
  *
7731
7755
  * PAN-1908: `repoRoot` allows committing files to a different git checkout
7732
7756
  * than the project root (e.g., a declared infra repo for per-issue permanent
@@ -7762,34 +7786,43 @@ function queueAutoCommit(opts) {
7762
7786
  pending.set(projectRoot, {
7763
7787
  paths: new Set(paths),
7764
7788
  subjects: [subject],
7765
- timer: setTimeout(() => void flushInner(projectRoot), STATE_FLUSH_WINDOW_MS),
7789
+ timer: setTimeout(() => void flushInner(projectRoot), 0),
7766
7790
  repoRoot,
7767
7791
  expectedBranch
7768
7792
  });
7769
7793
  }
7770
7794
  /**
7771
- * PAN-1441: queue an auto-commit of the host-main beads export files.
7772
- *
7773
- * Unlike the .pan/* writers, there is no single Overdeck write site for these:
7774
- * `.beads/issues.jsonl` and `.beads/export-state.json` drift on `main` as a
7775
- * side-effect of the `bd` binary re-exporting after dolt syncs (other machines /
7776
- * workspaces pushing to the shared dolt remote). So this is called from the
7777
- * deacon's periodic patrol as a drift sweep rather than wired to a write site.
7778
- *
7779
- * Only existing files are queued: a missing/deleted `issues.jsonl` is skipped so
7780
- * the janitor never stages — and propagates — a transient empty-DB deletion (the
7781
- * PAN-1158 hazard). queueAutoCommit is main-only, coalesced, and a no-op when
7782
- * nothing changed.
7795
+ * PAN-2516 belt-and-suspenders reconciliation for state writes that predate or
7796
+ * bypassed the canonical writer. Patrols commit only the owned spec/record
7797
+ * surfaces; unrelated source or operator changes are never staged.
7783
7798
  */
7784
- function queueBeadsAutoCommit(projectRoot) {
7799
+ function reconcileStatePlaneDrift(projectRoot) {
7785
7800
  const project = findProjectByPathSync(projectRoot);
7786
- const beadsRoot = project && resolveStateReadHomeSync(project).migrated ? resolveStateReadHomeSync(project).root : projectRoot;
7787
- const paths = [join$1(beadsRoot, ".beads", "issues.jsonl"), join$1(beadsRoot, ".beads", "export-state.json")].filter((p) => existsSync(p));
7788
- if (paths.length === 0) return;
7789
- queueAutoCommit({
7790
- projectRoot,
7791
- paths,
7792
- subject: "chore(beads): sync beads state on main"
7801
+ const stateHome = project ? resolveStateReadHomeSync(project) : null;
7802
+ const gitRoot = stateHome?.migrated ? stateHome.root : projectRoot;
7803
+ const ownedPaths = stateHome?.migrated ? ["specs", "records"] : [".pan/specs", ".pan/records"];
7804
+ return Effect.gen(function* () {
7805
+ const paths = (yield* runGit([
7806
+ "status",
7807
+ "--porcelain=v1",
7808
+ "--untracked-files=all",
7809
+ "--",
7810
+ ...ownedPaths
7811
+ ], gitRoot).pipe(Effect.match({
7812
+ onSuccess: (result) => result.stdout,
7813
+ onFailure: () => ""
7814
+ }))).split("\n").map((line) => line.trimEnd()).filter(Boolean).map((line) => line.slice(3)).map((path) => path.includes(" -> ") ? path.split(" -> ").at(-1) : path).map((path) => join$1(gitRoot, path));
7815
+ if (paths.length === 0) return {
7816
+ committed: false,
7817
+ reason: "no state-plane drift"
7818
+ };
7819
+ queueAutoCommit({
7820
+ projectRoot,
7821
+ repoRoot: gitRoot,
7822
+ paths,
7823
+ subject: `chore(state): reconcile ${paths.length} pending spec/record update(s)`
7824
+ });
7825
+ return yield* flushAutoCommits(projectRoot);
7793
7826
  });
7794
7827
  }
7795
7828
  /**
@@ -7854,6 +7887,7 @@ function doCommit(projectRoot, batch) {
7854
7887
  onSuccess: (r) => Effect.succeed(r.stdout.trim()),
7855
7888
  onFailure: (err) => Effect.succeed({
7856
7889
  committed: false,
7890
+ errored: true,
7857
7891
  reason: `branch check failed: ${err.stderr || err._tag}`
7858
7892
  })
7859
7893
  }));
@@ -7887,6 +7921,7 @@ function doCommit(projectRoot, batch) {
7887
7921
  console.warn(`[pan-dir/auto-commit] failed for ${branch}: ${err.stderr || err._tag}`);
7888
7922
  return Effect.succeed({
7889
7923
  committed: false,
7924
+ errored: true,
7890
7925
  reason: err.stderr || err._tag
7891
7926
  });
7892
7927
  }
@@ -7917,18 +7952,33 @@ function doCommit(projectRoot, batch) {
7917
7952
  console.warn(`[pan-dir/auto-commit] failed for ${branch}: ${err.stderr || err._tag}`);
7918
7953
  return Effect.succeed({
7919
7954
  committed: false,
7955
+ errored: true,
7920
7956
  reason: err.stderr || err._tag
7921
7957
  });
7922
7958
  }
7923
7959
  }));
7924
7960
  if (typeof commitOk !== "boolean") return commitOk;
7925
- yield* maybePushStateCommit(gitRoot, branch);
7926
- return { committed: true };
7961
+ const push = yield* maybePushStateCommit(gitRoot, branch);
7962
+ if (push && !push.pushed) return {
7963
+ committed: true,
7964
+ pushed: false,
7965
+ reason: push.reason
7966
+ };
7967
+ return {
7968
+ committed: true,
7969
+ pushed: push?.pushed
7970
+ };
7927
7971
  });
7928
7972
  }
7929
7973
  function maybePushStateCommit(gitRoot, branch) {
7930
- if (process.env.OVERDECK_STATE_AUTOPUSH === "0") return Effect.void;
7931
- return pushStateBranch(gitRoot, branch);
7974
+ return runGit([
7975
+ "remote",
7976
+ "get-url",
7977
+ "origin"
7978
+ ], gitRoot).pipe(Effect.matchEffect({
7979
+ onFailure: () => Effect.succeed(null),
7980
+ onSuccess: () => pushStateBranch(gitRoot, branch)
7981
+ }));
7932
7982
  }
7933
7983
  function pushStateBranch(gitRoot, branch) {
7934
7984
  if (branch === "main") return pushOriginMain(gitRoot, branch, false);
@@ -7938,10 +7988,14 @@ function pushStateBranch(gitRoot, branch) {
7938
7988
  "origin",
7939
7989
  branch
7940
7990
  ], gitRoot, timeoutMs).pipe(Effect.matchEffect({
7941
- onSuccess: () => Effect.void,
7991
+ onSuccess: () => Effect.succeed({ pushed: true }),
7942
7992
  onFailure: (err) => {
7943
- warnAutoPush(branch, `push failed: ${err.stderr || err._tag}`);
7944
- return Effect.void;
7993
+ const message = err.stderr || err._tag;
7994
+ warnAutoPush(branch, `push failed: ${message}`);
7995
+ return Effect.succeed({
7996
+ pushed: false,
7997
+ reason: `push failed: ${message}`
7998
+ });
7945
7999
  }
7946
8000
  }));
7947
8001
  }
@@ -7951,12 +8005,15 @@ function pushOriginMain(gitRoot, branch, retry) {
7951
8005
  "origin",
7952
8006
  "main"
7953
8007
  ], gitRoot, parsePositiveInteger(process.env.OVERDECK_STATE_PUSH_TIMEOUT_MS, DEFAULT_STATE_PUSH_TIMEOUT_MS)).pipe(Effect.matchEffect({
7954
- onSuccess: () => Effect.void,
8008
+ onSuccess: () => Effect.succeed({ pushed: true }),
7955
8009
  onFailure: (err) => {
7956
8010
  const message = err.stderr || err._tag;
7957
8011
  if (!retry && isNonFastForwardPushError(message)) return rebaseLegacyMainAndRetry(gitRoot, branch);
7958
8012
  warnAutoPush(branch, `push failed: ${message}`);
7959
- return Effect.void;
8013
+ return Effect.succeed({
8014
+ pushed: false,
8015
+ reason: `push failed: ${message}`
8016
+ });
7960
8017
  }
7961
8018
  }));
7962
8019
  }
@@ -7970,15 +8027,25 @@ function rebaseLegacyMainAndRetry(gitRoot, branch) {
7970
8027
  ], gitRoot, timeoutMs).pipe(Effect.match({
7971
8028
  onSuccess: () => true,
7972
8029
  onFailure: () => false
7973
- }))) || !(yield* isWorkingTreeClean(gitRoot, branch))) return;
8030
+ }))) || !(yield* isWorkingTreeClean(gitRoot, branch))) return {
8031
+ pushed: false,
8032
+ reason: "push rejected and reconciliation preconditions failed"
8033
+ };
7974
8034
  if (!(yield* areLocalAheadCommitsStatePlaneOnly(gitRoot, branch))) {
7975
8035
  warnAutoPush(branch, "non-fast-forward push rejected and at least one local-ahead commit is not state-plane-only; leaving local main ahead of origin/main");
7976
- return;
8036
+ return {
8037
+ pushed: false,
8038
+ reason: "push rejected with non-state local commits"
8039
+ };
7977
8040
  }
7978
8041
  if (yield* runGitWithTimeout(["rebase", "origin/main"], gitRoot, timeoutMs).pipe(Effect.match({
7979
8042
  onSuccess: () => true,
7980
8043
  onFailure: () => false
7981
- }))) yield* pushOriginMain(gitRoot, branch, true);
8044
+ }))) return yield* pushOriginMain(gitRoot, branch, true);
8045
+ return {
8046
+ pushed: false,
8047
+ reason: "push rejected and state rebase failed"
8048
+ };
7982
8049
  });
7983
8050
  }
7984
8051
  function areLocalAheadCommitsStatePlaneOnly(gitRoot, branch) {
@@ -8033,16 +8100,14 @@ function warnAutoPush(branch, message) {
8033
8100
  console.warn(`[pan-dir/auto-commit] auto-push warning for ${branch}: ${message}`);
8034
8101
  }
8035
8102
  /**
8036
- * Find the project root for a `.pan/` or `.beads/` file path. Returns null
8037
- * when the path is not under either marker.
8103
+ * Find the project root for a `.pan/` file path. Returns null otherwise.
8038
8104
  */
8039
8105
  function deriveProjectRoot(path) {
8040
- for (const marker of [`${sep$1}.pan${sep$1}`, `${sep$1}.beads${sep$1}`]) {
8041
- const idx = path.indexOf(marker);
8042
- if (idx !== -1) return path.slice(0, idx);
8043
- }
8106
+ const marker = `${sep$1}.pan${sep$1}`;
8107
+ const idx = path.indexOf(marker);
8108
+ if (idx !== -1) return path.slice(0, idx);
8044
8109
  const base = dirname$1(path);
8045
- if (base.endsWith(`${sep$1}.pan`) || base.endsWith(`${sep$1}.beads`)) return dirname$1(base);
8110
+ if (base.endsWith(`${sep$1}.pan`)) return dirname$1(base);
8046
8111
  return null;
8047
8112
  }
8048
8113
  function relativizeToRoot(absOrRel, projectRoot) {
@@ -8050,7 +8115,7 @@ function relativizeToRoot(absOrRel, projectRoot) {
8050
8115
  if (absOrRel.startsWith(rootPrefix)) return absOrRel.slice(rootPrefix.length);
8051
8116
  return absOrRel;
8052
8117
  }
8053
- var spawnerLayer, DEFAULT_STATE_FLUSH_WINDOW_MS, STATE_FLUSH_WINDOW_MS, DEFAULT_STATE_PUSH_TIMEOUT_MS, AUTO_COMMIT_EXCLUDED_PATHS, pending, serializer;
8118
+ var spawnerLayer, DEFAULT_STATE_PUSH_TIMEOUT_MS, AUTO_COMMIT_EXCLUDED_PATHS, pending, serializer;
8054
8119
  var init_auto_commit = __esmMin((() => {
8055
8120
  init_errors();
8056
8121
  init_projects();
@@ -8058,8 +8123,6 @@ var init_auto_commit = __esmMin((() => {
8058
8123
  init_state_migration_lock();
8059
8124
  init_state_plane();
8060
8125
  spawnerLayer = NodeChildProcessSpawner.layer.pipe(Layer.provide(Layer.mergeAll(NodeFileSystem.layer, NodePath.layer)));
8061
- DEFAULT_STATE_FLUSH_WINDOW_MS = 600 * 1e3;
8062
- STATE_FLUSH_WINDOW_MS = parseStateFlushWindowMs(process.env.OVERDECK_STATE_FLUSH_WINDOW_MS);
8063
8126
  DEFAULT_STATE_PUSH_TIMEOUT_MS = 3e4;
8064
8127
  AUTO_COMMIT_EXCLUDED_PATHS = [
8065
8128
  ".pan/kickoff.md",
@@ -8195,7 +8258,19 @@ function writeRecordFileAtomicSync(path, record) {
8195
8258
  preserveCorruptRecordSync(path);
8196
8259
  const tmp = `${path}.${process.pid}.${Date.now()}.tmp`;
8197
8260
  writeFileSync$1(tmp, JSON.stringify(record, null, 2), "utf-8");
8261
+ const tmpFd = openSync$1(tmp, "r");
8262
+ try {
8263
+ fsyncSync(tmpFd);
8264
+ } finally {
8265
+ closeSync$1(tmpFd);
8266
+ }
8198
8267
  renameSync$1(tmp, path);
8268
+ const dirFd = openSync$1(dirname(path), "r");
8269
+ try {
8270
+ fsyncSync(dirFd);
8271
+ } finally {
8272
+ closeSync$1(dirFd);
8273
+ }
8199
8274
  JSON.parse(readFileSync$1(path, "utf-8"));
8200
8275
  }
8201
8276
  function writeIssueRecordSync(project, issueId, record) {
@@ -8268,6 +8343,7 @@ function queueIssueRecordCommit(project, issueId, recordPath) {
8268
8343
  paths: [recordPath],
8269
8344
  subject: `chore(records): update ${issueId.toUpperCase()} per-issue record`
8270
8345
  });
8346
+ return basePath;
8271
8347
  }
8272
8348
  /** Build this node's owner URI: pan://host[:port]. */
8273
8349
  function buildOwnUri() {
@@ -8447,7 +8523,6 @@ function readRecordContinueViewSync(project, issueId) {
8447
8523
  decisions: record.decisions ?? [],
8448
8524
  hazards: record.hazards ?? [],
8449
8525
  resumePoint: record.resumePoint ?? null,
8450
- beadsMapping: record.beadsMapping ?? {},
8451
8526
  sessionHistory: record.sessionHistory ?? [],
8452
8527
  feedback: record.feedback ?? [],
8453
8528
  scopeDrift: record.scopeDrift
@@ -8545,20 +8620,6 @@ async function writeRecordResumePoint(project, issueId, resumePoint, opts = {})
8545
8620
  const recordPath = writeIssueRecordSync(project, issueId, record);
8546
8621
  if (opts.autoCommit !== false) queueIssueRecordCommit(project, issueId, recordPath);
8547
8622
  }
8548
- /** Write beadsMapping into the per-issue record (sync). */
8549
- function writeRecordBeadsMappingSync(project, issueId, beadsMapping, opts = {}) {
8550
- const record = ensureIssueRecordSync(project, issueId);
8551
- record.beadsMapping = beadsMapping;
8552
- const recordPath = writeIssueRecordSync(project, issueId, record);
8553
- if (opts.autoCommit !== false) queueIssueRecordCommit(project, issueId, recordPath);
8554
- }
8555
- /** Write beadsMapping into the per-issue record (async). */
8556
- async function writeRecordBeadsMapping(project, issueId, beadsMapping, opts = {}) {
8557
- const record = await ensureIssueRecord(project, issueId);
8558
- record.beadsMapping = beadsMapping;
8559
- const recordPath = writeIssueRecordSync(project, issueId, record);
8560
- if (opts.autoCommit !== false) queueIssueRecordCommit(project, issueId, recordPath);
8561
- }
8562
8623
  /** Infer a minimal ProjectConfig from a workspace path (tests / fallback).
8563
8624
  *
8564
8625
  * Returns a config whose `path` is the workspace directory itself so that
@@ -11328,12 +11389,15 @@ var init_defaults = __esmMin((() => {
11328
11389
  "workspace",
11329
11390
  "specialist",
11330
11391
  "harness",
11331
- "bd",
11332
- "beads",
11333
11392
  "vbrief",
11334
11393
  "workhorse"
11335
11394
  ];
11336
11395
  DEFAULT_CONFIG = {
11396
+ swarm: {
11397
+ mode: "off",
11398
+ maxSlots: 3,
11399
+ autoAdvance: true
11400
+ },
11337
11401
  tmux: { configMode: "managed" },
11338
11402
  enabledProviders: new Set(["anthropic"]),
11339
11403
  defaultConversationModel: "claude-sonnet-5",
@@ -11733,6 +11797,7 @@ function degradeInvalidTieredExecution(result, err) {
11733
11797
  function mergeConfigs(...configs) {
11734
11798
  const result = {
11735
11799
  ...DEFAULT_CONFIG,
11800
+ swarm: { ...DEFAULT_CONFIG.swarm },
11736
11801
  tmux: { ...DEFAULT_CONFIG.tmux },
11737
11802
  enabledProviders: new Set(DEFAULT_CONFIG.enabledProviders),
11738
11803
  providerHarnesses: { ...DEFAULT_CONFIG.providerHarnesses },
@@ -11817,6 +11882,10 @@ function mergeConfigs(...configs) {
11817
11882
  const explicitlyDisabled = /* @__PURE__ */ new Set();
11818
11883
  const validConfigs = configs.filter((c) => c !== null);
11819
11884
  for (const config of validConfigs.reverse()) {
11885
+ if (config.swarm) result.swarm = {
11886
+ ...result.swarm,
11887
+ ...config.swarm
11888
+ };
11820
11889
  if (config.models?.providers) {
11821
11890
  const providers = config.models.providers;
11822
11891
  const legacyKeys = config.api_keys || {};
@@ -14548,6 +14617,6 @@ var init_config_yaml = __esmMin((() => {
14548
14617
  init_load();
14549
14618
  }));
14550
14619
  //#endregion
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 };
14620
+ export { MODEL_DEPRECATIONS as $, unregisterProject as $n, sessionFilePath as $r, deriveProjectRoot as $t, KIMI_CODING_BASE_URL as A, getSpecialistConfig as An, COSTS_DIR as Ar, markRecordPipelineClosedOutSync as At, piProviderForModel as B, loadProjectsConfig as Bn, TRAEFIK_DIR as Br, writeIssueRecordSync as Bt, init_tier_table as C, findProjectByTeam as Cn, AGENTS_DIR as Cr, ensureIssueRecordSync as Ct, canUseHarnessSync as D, getProject as Dn, CACHE_RULES_DIR as Dr, getIssueWorkspacePath as Dt, validateTieredExecutionConfig as E, getIssuePrefix as En, CACHE_AGENTS_DIR as Er, getIssueRecordPathForWorkspace as Et, getBuiltInDefaultHarness as F, init_projects as Fn, PROJECT_PRDS_COMPLETED_SUBDIR as Fr, readRecordContinueViewSync as Ft, defaultBackgroundAiFeatures as G, resolveInfraRepo as Gn, getDocsTelemetryPath as Gr, writeRecordResumePoint as Gt, setupCredentialFileAuthSync as H, projects_exports as Hn, getDocsBudgetStatePath as Hr, writeRecordDecisionsSync as Ht, getKimiAnthropicBaseUrl as I, initializeProjectsConfig as In, PROJECT_PRDS_PLANNED_SUBDIR as Ir, resolveProjectForIssue as It, DEFAULT_WORKHORSES as J, resolveProjectPath as Jn, getOverdeckHome as Jr, writeRecordTieredExecutionOverride as Jt, init_registry as K, resolveProjectFromIssue as Kn, getHandoffsDir as Kr, writeRecordResumePointSync as Kt, getProviderEnvSync as L, initializeProjectsConfigSync as Ln, PROJECT_PRDS_SUBDIR as Lr, writeAgentHarnessModel as Lt, PROVIDERS as M, getSpecialistRetention as Mn, OVERDECK_HOME as Mr, readIssueRecord as Mt, UnknownModelError as N, hasProjects as Nn, PROJECT_DOCS_SUBDIR as Nr, readIssueRecordForWorkspaceSync as Nt, canUseModelWithAuthSync as O, getProjectSwarmHotspots as On, CLAUDE_DIR as Or, getProjectConfigFromWorkspacePath as Ot, clearCredentialFileAuthSync as P, hasProjectsSync as Pn, PROJECT_PRDS_ACTIVE_SUBDIR as Pr, readIssueRecordSync as Pt, MODEL_CAPABILITIES as Q, setProjectSwarmPolicySync as Qn, resolveOhmypiExtensionPath as Qr, writeStatusOverridesSync as Qt, getProviderForModelSync as R, listProjects as Rn, SKILLS_DIR as Rr, writeAgentHarnessModelSync as Rt, TieredExecutionConfigError as S, findProjectByPathSync as Sn, init_errors as Sr, ensureIssueRecord as St, resolveTieredExecutionEnabledForIssue as T, findProjectsByRallyProject as Tn, BIN_DIR as Tr, getIssueRecordPath as Tt, ensureOpenAICompatibleProxyRunning as U, registerProject as Un, getDocsDisableStatePath as Ur, writeRecordHazards as Ut, qualifyPiModel as V, loadProjectsConfigSync as Vn, encodeClaudeProjectDir as Vr, writeRecordDecisions as Vt, init_openai_compatible_proxy as W, registerProjectSync as Wn, getDocsIndexPath as Wr, writeRecordHazardsSync as Wt, init_roles as X, saveProjectsConfigSync as Xn, isDevMode as Xr, writeStatusOverride as Xt, computeModelOrigin as Y, saveProjectsConfig as Yn, init_paths as Yr, writeRecordTieredExecutionOverrideSync as Yt, resolveModel as Z, setProjectAutoMergeDefaultSync as Zn, packageRoot as Zr, writeStatusOverrideSync as Zt, getDefaultDocsConfig as _, projectKey as _n, MergeConflictError as _r, appendSessionEntrySync as _t, getConversationsConfigSync as a, STATE_BRANCH_PATHS as an, parseIssueIdSync as ar, resolveModelIdSync as at, DEFAULT_TIERED_EXECUTION_CONFIG as b, extractTeamPrefix as bn, TrackerError as br, clearIssueOwner as bt, isClaudeCodeChannelsEnabled as c, init_state_plane as cn, require_dist as cr, init_percent as ct, loadConfigNoMigration as d, acquireStateMigrationLock as dn, ConfigError as dr, ROLE_EFFORTS as dt, flushAllPendingAutoCommits as en, unregisterProjectSync as er, getModelCapabilitySync as et, loadConfigSync as f, init_state_migration_lock as fn, FsError as fr, RECORD_DIRNAME as ft, mergeConfigs as g, init_project_key as gn, LinearApiError as gr, appendSessionEntry as gt, jsYaml as h, shouldCommitLegacyWorkspaceArtifacts as hn, InvalidAgentIdError as hr, appendFeedbackEntrySync as ht, getConversationsConfig as i, reconcileStatePlaneDrift as in, normalizeIssueIdSync as ir, modelSupportsImagesSync as it, KIMI_PLATFORM_BASE_URL as j, getSpecialistPromptOverride as jn, LOGS_DIR as jr, queueIssueRecordCommit as jt, init_harness_policy as k, getProjectSync as kn, CONFIG_FILE as kr, init_record as kt, isClaudeCodeChannelsMcpEnabled as l, isStatePlaneOnlyStatus as ln, CheckpointError as lr, COMPLIANCE_MODES as lt, init_js_yaml as m, resolveStateReadHomeSync as mn, GitHubApiError as mr, appendFeedbackEntry as mt, clearConfigCache as n, init_auto_commit as nn, extractPrefixSync as nr, hasModelCapabilitySync as nt, getGlobalConfigPath as o, STATE_PLANE_PATHS as on, resolveBareNumericIdSync as or, fmix32 as ot, updateConversationsConfig as p, init_state_read_home as pn, GitError as pr, RECORD_SCHEMA_VERSION as pt, DEFAULT_ROLES as q, resolveProjectFromIssueSync as qn, getLegacyHome as qr, writeRecordScopeDriftSync as qt, getConversationSearchConfigSync as r, queueAutoCommit as rn, init_issue_id as rr, init_model_capabilities as rt, init_load as s, getMainDivergence as sn, resolveIssueIdSync as sr, fnv1a32 as st, init_config_yaml as t, flushAutoCommits as tn, extractNumberSync as tr, getModelEffortLevelsSync as tt, isTldrEnabledSync as u, isStatePlanePath as un, ClaudeCredentialParseError as ur, PARENT_MODEL_REF as ut, getDefaultTtsDaemonConfig as v, PROJECTS_CONFIG_FILE as vn, ProcessSpawnError as vr, buildOwnUri as vt, resolveTieredExecutionEnabled as w, findProjectByTeamSync as wn, ARCHIVES_DIR as wr, getIssueRecordBasePath as wt, TIERED_EXECUTION_DIFFICULTIES as x, findProjectByPath as xn, VcsError as xr, clearRecordFeedbackSync as xt, mergeTtsDaemonConfigs as y, createDefaultProjectsConfig as yn, TmuxError as yr, claimIssueOwner as yt, init_providers as z, listProjectsSync as zn, SYNC_SOURCES as zr, writeIssueRecordForWorkspaceSync as zt };
14552
14621
 
14553
- //# sourceMappingURL=config-yaml-Dcz-8uit.js.map
14622
+ //# sourceMappingURL=config-yaml-CqaAyn8y.js.map
@@ -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-4qqLkRMu.js";
4
- import { W as spawnRun, j as messageAgent, t as init_agents } from "./agents-CsOzAmRg.js";
3
+ import { c as init_review_status, s as getReviewStatusSync, y as setReviewStatusSync } from "./review-status-DANr0t-v.js";
4
+ import { L as messageAgent, X as spawnRun, s as init_agents } from "./queries-C0LCGG21.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-DTje2Ll7.js.map
233
+ //# sourceMappingURL=conflict-gate-BF_zhcmb.js.map
@@ -1,3 +1,3 @@
1
- import { a as resolveConflictGate, i as init_conflict_gate, t as buildRealConflictGateDeps } from "./conflict-gate-DTje2Ll7.js";
1
+ import { a as resolveConflictGate, i as init_conflict_gate, t as buildRealConflictGateDeps } from "./conflict-gate-BF_zhcmb.js";
2
2
  init_conflict_gate();
3
3
  export { buildRealConflictGateDeps, resolveConflictGate };
@@ -1,6 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { qr as init_paths } from "./config-yaml-Dcz-8uit.js";
3
- import { o as init_layers } from "./layers-CD6FysRU.js";
2
+ import { Sr as init_errors, Yr as init_paths } from "./config-yaml-CqaAyn8y.js";
3
+ import { o as init_layers } from "./layers-gCJlK62m.js";
4
+ import "effect";
4
5
  import "fs";
5
6
  import "path";
6
7
  import "os";
@@ -131,6 +132,18 @@ var init_assemble = __esmMin((() => {
131
132
  init_render();
132
133
  }));
133
134
  //#endregion
135
+ //#region ../../lib/backup.ts
136
+ var init_backup = __esmMin((() => {
137
+ init_paths();
138
+ init_errors();
139
+ }));
140
+ //#endregion
141
+ //#region ../../lib/context-layers/legacy-beads-cleanup.ts
142
+ var init_legacy_beads_cleanup = __esmMin((() => {
143
+ init_backup();
144
+ init_render();
145
+ }));
146
+ //#endregion
134
147
  //#region ../../lib/context-layers/migrate.ts
135
148
  var init_migrate = __esmMin((() => {
136
149
  init_layers();
@@ -143,9 +156,10 @@ var init_context_layers = __esmMin((() => {
143
156
  init_rules();
144
157
  init_render();
145
158
  init_assemble();
159
+ init_legacy_beads_cleanup();
146
160
  init_migrate();
147
161
  }));
148
162
  //#endregion
149
163
  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
164
 
151
- //# sourceMappingURL=context-layers-BdUCQ-cl.js.map
165
+ //# sourceMappingURL=context-layers-BFrxfl0l.js.map
@@ -1,4 +1,4 @@
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";
1
+ import { l as piGlobalContextFile, n as codexGlobalContextFile } from "./layers-gCJlK62m.js";
2
+ import { t as init_context_layers } from "./context-layers-BFrxfl0l.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 { 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";
2
+ import { Fn as init_projects, Vn as loadProjectsConfigSync, kn as getProjectSync } from "./config-yaml-CqaAyn8y.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-_Kx1m9pm.js";
4
+ import { n as init_issues, t as IssueId } from "./issues-DIEHt9sq.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-DwkAeooY.js.map
406
+ //# sourceMappingURL=control-settings-BguNQ1F_.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-OTYgd6eg.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-DxSXl0pT.js";
2
2
  init_conversation_compaction();
3
3
  export { buildCompactionRuntimeInfo, compactConversationNative, estimateContextTokens, getConversationCompactionSettings, isCompacting, maybeCompactBeforeRespawn, shouldInterceptManualCompact };
@@ -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-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";
2
+ import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-CqaAyn8y.js";
3
+ import { a as init_event_store, n as getEventStore } from "./event-store-KZnWUKWh.js";
4
+ import { Kt as getAgentRuntimeBaseCommand, dn as getProviderExportsForModel, s as init_agents } from "./queries-C0LCGG21.js";
5
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-DqvaoQoa.js";
6
+ import { t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-mFVFdDQK.js";
7
+ import { r as init_smart_compaction, t as generateSmartSummary } from "./smart-compaction-CmoXpjeU.js";
8
+ import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-COqYpVa3.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-OTYgd6eg.js.map
182
+ //# sourceMappingURL=conversation-compaction-DxSXl0pT.js.map
@@ -1,3 +1,3 @@
1
- import { i as computeContextUsage, t as init_conversation_service } from "./conversation-service-BR1OgvxO.js";
1
+ import { i as computeContextUsage, t as init_conversation_service } from "./conversation-service-mFVFdDQK.js";
2
2
  init_conversation_service();
3
3
  export { computeContextUsage };
@@ -1,8 +1,9 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Q as MODEL_CAPABILITIES, at as resolveModelIdSync, qr as init_paths, rt as init_model_capabilities } from "./config-yaml-Dcz-8uit.js";
3
- import { a as getHarnessBehavior } from "./src-DHn4Rd2F.js";
4
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DQ2ajr_m.js";
5
- import { i as parseCodexSessionSync, n as init_codex_parser, t as init_behavior } from "./behavior-Cpj03N4v.js";
2
+ import { Q as MODEL_CAPABILITIES, Yr as init_paths, at as resolveModelIdSync, rt as init_model_capabilities } from "./config-yaml-CqaAyn8y.js";
3
+ import { a as getHarnessBehavior } from "./src-By3D85Ry.js";
4
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-BoqD1Pxz.js";
5
+ import { r as parseCodexSessionSync, t as init_codex_parser } from "./codex-parser-DboQnEXN.js";
6
+ import { t as init_behavior } from "./behavior-CWqNMqE5.js";
6
7
  import "node:path";
7
8
  import "node:os";
8
9
  import { open, readFile, stat, watch } from "node:fs/promises";
@@ -1750,4 +1751,4 @@ var init_conversation_service = __esmMin((() => {
1750
1751
  //#endregion
1751
1752
  export { init_codex_conversation_parser as _, contextUsageFromParseResult as a, parseEntireConversation as c, init_pi_conversation_parser as d, isPiSessionFile as f, parseOhmypiConversationMessages as g, isOhmypiSessionFile as h, computeContextUsage as i, parseFromLastCompactBoundary as l, init_ohmypi_conversation_parser as m, gateSnapshotEmission as n, summarizeConversationActivity as o, parsePiConversationMessages as p, watchConversation as r, parseConversationMessages as s, init_conversation_service as t, findLastCompactBoundary as u, parseCodexConversationMessages as v };
1752
1753
 
1753
- //# sourceMappingURL=conversation-service-BR1OgvxO.js.map
1754
+ //# sourceMappingURL=conversation-service-mFVFdDQK.js.map