@overdeck/desktop 0.45.16 → 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 (365) 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-DJYAvGv-.js → advancing-selfheal-DgwQgm4D.js} +6 -6
  8. package/server/{agent-gc-D0wDIeV1.js → agent-gc-kpzxqT7P.js} +3 -3
  9. package/server/agent-state-C_6TG-Ad.js +3 -0
  10. package/server/{agent-state-service-CZrayD_G.js → agent-state-service-BUfovFfB.js} +1 -1
  11. package/server/{agent-state-service-DFslS5go.js → agent-state-service-nUD3qfob.js} +5 -5
  12. package/server/agents-BA15AQqo.js +3 -0
  13. package/server/{briefing-freshness-DESTCWo-.js → agents-BHBxr8c9.js} +5 -131
  14. package/server/{archive-planning-CbghE9-o.js → archive-planning-CzCW9Ifl.js} +5 -10
  15. package/server/{archive-planning-CoyIbgGK.js → archive-planning-D-QsBufn.js} +1 -1
  16. package/server/{artifact-index-jobs-CcSrUoSE.js → artifact-index-jobs-qqa51B2Z.js} +2 -2
  17. package/server/{backlog-auto-trigger-BfgDsII0.js → backlog-auto-trigger-B7Bi0bvY.js} +2 -2
  18. package/server/{behavior-BTpYbAv4.js → behavior-CWqNMqE5.js} +2 -2
  19. package/server/briefing-freshness-DuxIE1yr.js +131 -0
  20. package/server/{checkpoint-manager-BwFdegJF.js → checkpoint-manager-DF6hb9Jw.js} +3 -3
  21. package/server/{checkpoint-manager-DWSXooZV.js → checkpoint-manager-DixkLus7.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-fjadfOKF.js → checkpoints-B1Z42tJE.js} +1 -1
  24. package/server/{checkpoints-BtUonbs3.js → checkpoints-BiviJqei.js} +2 -2
  25. package/server/{claude-hooks-provision-DiK62u0k.js → claude-hooks-provision-BeMGi4ty.js} +1 -1
  26. package/server/{claude-hooks-provision-DAtxutOs.js → claude-hooks-provision-Du_PkMsp.js} +2 -2
  27. package/server/{claude-permissions-CThLgf8d.js → claude-permissions-BB6agcOZ.js} +2 -2
  28. package/server/{claude-settings-overlay-BF9MPIwx.js → claude-settings-overlay-CAq2oFSK.js} +2 -2
  29. package/server/{claude-settings-overlay-Dx_Uqcmv.js → claude-settings-overlay-DUWWLd6M.js} +1 -1
  30. package/server/cli-BFgrSWKV.js +3 -0
  31. package/server/{cli-ByKIIMfT.js → cli-C33xPZNm.js} +9 -9
  32. package/server/{cliproxy-C_GuT5DU.js → cliproxy-BQX1TL6N.js} +1 -1
  33. package/server/{cliproxy-B4c1BUvs.js → cliproxy-CGBA1GzA.js} +2 -2
  34. package/server/{close-issue-BOuLKr6e.js → close-issue-DNv8npc1.js} +5 -5
  35. package/server/{closed-issue-reaper-CksfuiFD.js → closed-issue-reaper-DrqgBJlr.js} +1 -1
  36. package/server/{closed-issue-reaper-DCAYzNXW.js → closed-issue-reaper-LoMnnjtJ.js} +9 -9
  37. package/server/codex-DxLivxri.js +3 -0
  38. package/server/{codex-parser-mFYZh8vR.js → codex-parser-DboQnEXN.js} +2 -2
  39. package/server/{codex-BbqIRZjd.js → codex-sgWVCGUd.js} +43 -18
  40. package/server/{config-Dj6N8EP9.js → config-6MCHOZ2N.js} +1 -1
  41. package/server/{config-DVLdmnMJ.js → config-DfaUXr6r.js} +2 -2
  42. package/server/{config-yaml-cNOZcEww.js → config-yaml-CqaAyn8y.js} +74 -74
  43. package/server/{conflict-gate-BMKm_5DV.js → conflict-gate-BF_zhcmb.js} +3 -3
  44. package/server/{conflict-gate-CuXUv-bP.js → conflict-gate-BubJprtD.js} +1 -1
  45. package/server/{context-layers-c0JqYHcS.js → context-layers-BFrxfl0l.js} +17 -3
  46. package/server/{context-layers-CeAwSYNt.js → context-layers-DWL_8HhY.js} +2 -2
  47. package/server/{control-settings-D4EFsRBd.js → control-settings-BguNQ1F_.js} +4 -4
  48. package/server/{conversation-compaction-kHVfVRg3.js → conversation-compaction-CRKAf2qP.js} +1 -1
  49. package/server/{conversation-compaction-BCggyih4.js → conversation-compaction-DxSXl0pT.js} +8 -8
  50. package/server/{conversation-service-BTzObqGi.js → conversation-service-DzuY9qoH.js} +1 -1
  51. package/server/{conversation-service-B8LFQQm1.js → conversation-service-mFVFdDQK.js} +6 -6
  52. package/server/{conversations-B-lcHv-5.js → conversations-BX5aD-6F.js} +4 -4
  53. package/server/{conversations-BM7zlXjr.js → conversations-BajHQ60c.js} +1 -1
  54. package/server/{cost-D9kPIY_5.js → cost-BoqD1Pxz.js} +2 -2
  55. package/server/{cost-BcpRQ-7o.js → cost-DuZ5vlv-.js} +3 -3
  56. package/server/{cost-sync-DF6odxK9.js → cost-sync-BYnmnMkY.js} +3 -3
  57. package/server/{dag-DKI3sOmX.js → dag-C6kYyF17.js} +7 -243
  58. package/server/{dangerous-git-ops-Bn18PEcN.js → dangerous-git-ops-q5OPtXMd.js} +1 -1
  59. package/server/dashboard-db-worker.js +6 -6
  60. package/server/{deacon-DONuopff.js → deacon-CwCiNuEZ.js} +3 -3
  61. package/server/{deacon-DdARMjZq.js → deacon-Dru5onpk.js} +233 -162
  62. package/server/{deacon-nudge-log-B-naf89q.js → deacon-nudge-log-ilDfxrhK.js} +1 -1
  63. package/server/{deacon-swarm-BNGkmYR_.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-C-34Sxyz.js → devcontainer-renderer-BqGNCzvN.js} +3 -3
  67. package/server/{dist-BMXvKiZP.js → dist-BwlEiLCU.js} +1 -1
  68. package/server/dist-Bx4KkgYL.js +3 -0
  69. package/server/{dist-src-BgGUblXg.js → dist-src-BE0Denfs.js} +1 -1
  70. package/server/{docker-apZ9pBYw.js → docker-CNjXS72x.js} +2 -2
  71. package/server/{ensure-devcontainer-Bqi1EF1P.js → ensure-devcontainer-5e9xOve4.js} +4 -4
  72. package/server/{ensure-devcontainer-Dq3KoOIl.js → ensure-devcontainer-C6gyUQdE.js} +1 -1
  73. package/server/{esm-shims-BEjvINX3.js → esm-shims-Cso7IGBC.js} +1 -1
  74. package/server/{event-store-CqDgfbAs.js → event-store-D9UhQyMS.js} +1 -1
  75. package/server/{event-store-D89fMfXS.js → event-store-KZnWUKWh.js} +3 -3
  76. package/server/{events-S_C0pvl6.js → events-2eFUPdqz.js} +3 -3
  77. package/server/{events-rIGncmP1.js → events-BYbvqZky.js} +1 -1
  78. package/server/{factory-DV18m0rc.js → factory-BtaRsHFC.js} +20 -17
  79. package/server/{feature-registry-population-CqZSnqQi.js → feature-registry-population-Ca2UaV0U.js} +4 -4
  80. package/server/{feature-registry-storage-BeXmNBwK.js → feature-registry-storage-DaP-bQxO.js} +2 -2
  81. package/server/{features-u5XeMaOK.js → features-DqvaoQoa.js} +2 -2
  82. package/server/{feedback-target-CwyWf0Dg.js → feedback-target-BXWdOiYI.js} +9 -7
  83. package/server/{feedback-target-DDG1PWl3.js → feedback-target-BblmMe9P.js} +1 -1
  84. package/server/{feedback-writer-BsJiw5aT.js → feedback-writer-CULeOOY4.js} +1 -1
  85. package/server/{feedback-writer-D20HSXre.js → feedback-writer-Dn8o9ZyE.js} +4 -4
  86. package/server/{flywheel-RCnHAgc4.js → flywheel-BUWdcfhq.js} +1 -1
  87. package/server/{flywheel-Dczmgchd.js → flywheel-CqkO3cDj.js} +15 -28
  88. package/server/{flywheel-9Y1X7IM-.js → flywheel-D9r1mw2U.js} +13 -13
  89. package/server/{flywheel-merge-order-DEtEd3aK.js → flywheel-merge-order-LDzQDwSg.js} +1 -1
  90. package/server/{flywheel-merge-order-CtCYsFJP.js → flywheel-merge-order-VtjUweEb.js} +6 -6
  91. package/server/forge-DJy3Zx4s.js +2 -0
  92. package/server/{forge-DFDThFil.js → forge-wEollMCi.js} +22 -12
  93. package/server/{from-NSJypkI8.js → from-B2tOYhYV.js} +1 -1
  94. package/server/{fts-db-C5A_TTOM.js → fts-db-Bgzn2RO7.js} +2 -2
  95. package/server/{fts-operations-DvCSimfU.js → fts-operations-Bj8yutnR.js} +2 -2
  96. package/server/{git-utils-Dr0L7mFk.js → git-utils-GxlL0tmt.js} +2 -2
  97. package/server/{git-utils-C0neHvQx.js → git-utils-q8jNoBts.js} +1 -1
  98. package/server/{github-app-Bwt9lK4A.js → github-app-BrYwK_Gb.js} +1 -1
  99. package/server/{github-app-u9-SX7Gc.js → github-app-tUbb8Ldr.js} +8 -3
  100. package/server/{github-client-Btyy3uan.js → github-client-BwBU41jK.js} +3 -3
  101. package/server/{github-client-Do3k-N1W.js → github-client-D6CNsftm.js} +1 -1
  102. package/server/{github-pr-lookup-DOF1U2WW.js → github-pr-lookup-BS5PqkJb.js} +2 -2
  103. package/server/{harness-resolve-C6g2R0Cd.js → harness-resolve-Dx8hUsvC.js} +3 -3
  104. package/server/{health-events-B4u-2a9m.js → health-events-2DLp-5Xp.js} +2 -2
  105. package/server/{health-events-Bos3sk5g.js → health-events-B0mj6Iae.js} +1 -1
  106. package/server/{hooks-uEr8WTx_.js → hooks-BDcQJDUe.js} +1 -1
  107. package/server/{hooks-BCoOjL_R.js → hooks-BS_JrvYP.js} +3 -3
  108. package/server/hume-B4seN95Y.js +3 -0
  109. package/server/{hume-BqxYKbUf.js → hume-BRhNKyXQ.js} +2 -2
  110. package/server/{idle-stack-reaper-DbZ8ukMd.js → idle-stack-reaper-BCITXNW5.js} +2 -2
  111. package/server/{idle-stack-reaper-H0W6XtHh.js → idle-stack-reaper-C1ymihno.js} +1 -1
  112. package/server/{infra-Ba9mS6e6.js → infra-_Kx1m9pm.js} +9 -4
  113. package/server/{injection-C1DKXeIZ.js → injection-Bvhyg_MV.js} +1 -1
  114. package/server/{injection-yrMBxzVq.js → injection-CCaYkofq.js} +7 -7
  115. package/server/{inspect-agent-B-mnb4uh.js → inspect-agent-BqyZ4pCo.js} +35 -67
  116. package/server/inspect-agent-DCJQm9Wu.js +2 -0
  117. package/server/{internal-token-BtqSbKTx.js → internal-token-Cl-1IxaE.js} +2 -2
  118. package/server/{internal-token-BPYEaXFh.js → internal-token-D-t28de5.js} +1 -1
  119. package/server/{io-VEGSAqsd.js → io-DkC4sFSy.js} +36 -43
  120. package/server/{issue-closed-BxcePXL-.js → issue-closed-Cpl4VDUM.js} +41 -6
  121. package/server/{issue-lifecycle--8MRxrG1.js → issue-lifecycle-CFR8TJ22.js} +22 -37
  122. package/server/{issue-lifecycle-CdMUauyb.js → issue-lifecycle-YNTy3OT3.js} +1 -1
  123. package/server/{issue-service-singleton-MZsDhAob.js → issue-service-singleton-D81mCts_.js} +1 -1
  124. package/server/{issue-service-singleton-CkTUI-eu.js → issue-service-singleton-ldvUUXi3.js} +29 -29
  125. package/server/{issues-CBAsuoAO.js → issues-DIEHt9sq.js} +2 -2
  126. package/server/{jsonl-parser-BUW5_sSK.js → jsonl-parser-Cd5jIqh7.js} +3 -3
  127. package/server/{label-cleanup-htK6fBRU.js → label-cleanup-Btny6Gyo.js} +3 -3
  128. package/server/{state-home-CEvD_v5F.js → launcher-generator-BXLM9f4b.js} +7 -127
  129. package/server/{layers-jjL16At6.js → layers-gCJlK62m.js} +2 -2
  130. package/server/lifecycle-D7aQUnTO.js +12 -0
  131. package/server/{lifecycle-io-DXv8Utct.js → lifecycle-io-DQBF-GHO.js} +1 -1
  132. package/server/{lifecycle-io-IehcRt2v.js → lifecycle-io-FfPUtz-y.js} +4 -4
  133. package/server/{linear-client-D9cSQfvD.js → linear-client-CDH2D6Qy.js} +3 -3
  134. package/server/{linear-client-By7hjwuN.js → linear-client-WrYrUIAH.js} +1 -1
  135. package/server/memory-fts-worker.js +1 -1
  136. package/server/{merge-BN8FGJ2q.js → merge-BsDgUxFz.js} +3 -3
  137. package/server/{merge-BLcEZNXz.js → merge-Dervs4BF.js} +1 -1
  138. package/server/{merge-agent-B3u2szOL.js → merge-agent-D6DNhe9j.js} +64 -51
  139. package/server/{merge-agent-ejC7Wos8.js → merge-agent-DMQTJMP0.js} +1 -1
  140. package/server/{merge-batch-DyqlgYGp.js → merge-batch-Bv6Z5K2H.js} +1 -1
  141. package/server/{merge-blockers-cq-aS2KG.js → merge-blockers-WWWi6Ur2.js} +2 -2
  142. package/server/merge-ops-h9OCnIVz.js +2 -0
  143. package/server/{merge-rebase-Dl7yIxtV.js → merge-rebase-Czth9ggm.js} +2 -2
  144. package/server/{merge-set-CZ9Nbay0.js → merge-set-DNc4zBqd.js} +3 -3
  145. package/server/{merge-set-Dy0D0r3i.js → merge-set-vuE3MEVt.js} +1 -1
  146. package/server/{merge-sync-D7jWLgCC.js → merge-sync-B2KSk54U.js} +2 -2
  147. package/server/{merge-sync-CG9kDCdT.js → merge-sync-B9nHdUGx.js} +1 -1
  148. package/server/{merge-train-CH33XJOH.js → merge-train-DJgr81tF.js} +3 -3
  149. package/server/{merge-train-deps-JoVdGnOg.js → merge-train-deps-B2OWS0k9.js} +4 -4
  150. package/server/{merge-verification-D4wTChdX.js → merge-verification-BBIXUEqa.js} +4 -4
  151. package/server/{multipart-parser-Csn8U-K9.js → multipart-parser-9DhuAkPd.js} +2 -2
  152. package/server/node_modules/.package-lock.json +11 -11
  153. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  154. package/server/node_modules/toml/README.md +54 -0
  155. package/server/node_modules/toml/index.d.ts +42 -1
  156. package/server/node_modules/toml/index.js +3 -3
  157. package/server/node_modules/toml/lib/compiler.js +35 -3
  158. package/server/node_modules/toml/lib/parser.js +224 -143
  159. package/server/node_modules/toml/package.json +3 -1
  160. package/server/node_modules/ws/lib/receiver.js +15 -32
  161. package/server/node_modules/ws/lib/websocket-server.js +4 -4
  162. package/server/node_modules/ws/lib/websocket.js +4 -4
  163. package/server/node_modules/ws/package.json +5 -1
  164. package/server/{orphan-proposed-reconciler-DI_IS1p_.js → orphan-proposed-reconciler-B8H41C4a.js} +14 -24
  165. package/server/{orphan-proposed-reconciler-BIcNu4tl.js → orphan-proposed-reconciler-DbTmT7qy.js} +1 -1
  166. package/server/package-lock.json +12 -12
  167. package/server/package.json +1 -1
  168. package/server/{pan-dir-CQIfKG8c.js → pan-dir-BTw4MdSe.js} +4 -4
  169. package/server/{paths-Blj6A9AJ.js → paths-Btkc8mzp.js} +2 -2
  170. package/server/{pipeline-notifier-BH4PAi-w.js → pipeline-notifier-3frIvSi3.js} +1 -1
  171. package/server/{pipeline-notifier-D_WYtEwl.js → pipeline-notifier-DTd19f18.js} +2 -2
  172. package/server/{project-pipelines-jMTitpeO.js → project-pipelines-B95fcAek.js} +2 -2
  173. package/server/projects-Dc9aoVoG.js +3 -0
  174. package/server/{prompts-B3njaImU.js → prompts-CIVmjHxn.js} +2 -2
  175. package/server/{providers-DnPxkHoG.js → providers-BLLk5IIb.js} +1 -1
  176. package/server/{providers-BbEyFhPX.js → providers-C-yWibCk.js} +7 -7
  177. package/server/public/assets/{chunk-BO2N2NFS-3qh9TUJi.js → chunk-BO2N2NFS-DzKZyoKY.js} +4 -4
  178. package/server/public/assets/{diagram-OG6HWLK6-D8UVTPj7.js → diagram-OG6HWLK6-Cx8mWUb8.js} +1 -1
  179. package/server/public/assets/{dist-BvLLn1YC.js → dist-BqccLhaw.js} +3 -3
  180. package/server/public/assets/{dist-CyubL7Wj.js → dist-rC3nAs_O.js} +1 -1
  181. package/server/public/assets/{ganttDiagram-6RSMTGT7-BI4E1LbQ.js → ganttDiagram-6RSMTGT7-DLYPLf5T.js} +1 -1
  182. package/server/public/assets/{highlighted-body-OFNGDK62-D_bapWkF.js → highlighted-body-OFNGDK62-D4DqixbV.js} +1 -1
  183. package/server/public/assets/index-CPcysUHk.js +796 -0
  184. package/server/public/assets/index-H5M0yhM4.css +1 -0
  185. package/server/public/assets/{linear-CEdobObr.js → linear-yqcXkDfj.js} +1 -1
  186. package/server/public/assets/mermaid-GHXKKRXX-CWdZ_heB.js +1 -0
  187. package/server/public/assets/{pieDiagram-4H26LBE5-DT79L01f.js → pieDiagram-4H26LBE5-DhraIOaV.js} +1 -1
  188. package/server/public/assets/{prod-CR_K2DFV.js → prod-DKUunUdN.js} +4 -4
  189. package/server/public/assets/{quadrantDiagram-W4KKPZXB-BEkKXXrL.js → quadrantDiagram-W4KKPZXB-DPiRcToa.js} +1 -1
  190. package/server/public/assets/{sankeyDiagram-5OEKKPKP-BxSCqn-j.js → sankeyDiagram-5OEKKPKP-3An5HNkZ.js} +1 -1
  191. package/server/public/assets/{xychartDiagram-2RQKCTM6-DicwJGG_.js → xychartDiagram-2RQKCTM6-lbEOjfqQ.js} +1 -1
  192. package/server/public/index.html +2 -2
  193. package/server/{pull-requests-43LPDfM8.js → pull-requests-D7AL5woD.js} +1 -1
  194. package/server/{pull-requests-DyUkQl4W.js → pull-requests-NDDNtqNq.js} +3 -3
  195. package/server/{agents-B9GwfCyp.js → queries-C0LCGG21.js} +710 -325
  196. package/server/{rally-BtWjybOa.js → rally-4oKvnxLG.js} +3 -3
  197. package/server/rally-DF5a3ioP.js +3 -0
  198. package/server/{rally-api-B-osULNL.js → rally-api-41tT6ikZ.js} +2 -2
  199. package/server/{rally-api-B-YA_oXx.js → rally-api-BsaQ8Vnz.js} +1 -1
  200. package/server/{rally-client-sErNQBO0.js → rally-client-Bo4hNcCZ.js} +5 -5
  201. package/server/{rally-client-CzFymP7P.js → rally-client-b5PT1x5L.js} +1 -1
  202. package/server/{reap-terminal-sessions-DnDQ7pf9.js → reap-terminal-sessions-BR39qflC.js} +1 -1
  203. package/server/{reap-terminal-sessions-2s-fvilz.js → reap-terminal-sessions-CFkuquQj.js} +1 -1
  204. package/server/{rebuild-stack-nGD_nPZo.js → rebuild-stack-C7JPUom6.js} +1 -1
  205. package/server/{rebuild-stack-CoU-HqZj.js → rebuild-stack-Ddv6W017.js} +5 -5
  206. package/server/{reconstruct-cache-Wj8GrYB0.js → reconstruct-cache-Gqhm---K.js} +6 -6
  207. package/server/record-DLOqfbkI.js +3 -0
  208. package/server/record-update-BltEmPge.js +168 -0
  209. package/server/record-update-CDp7aTaT.js +3 -0
  210. package/server/recovery-trip-Cn7KJVkS.js +44 -0
  211. package/server/{release-engine-CBLQXDlH.js → release-engine-BYzmIBf9.js} +5 -5
  212. package/server/{release-set-BNiqi7hy.js → release-set-7pnxFOWR.js} +3 -3
  213. package/server/{remote-DW_TWQnr.js → remote-Cvu4CSDk.js} +3 -3
  214. package/server/{remote-agents-C4cyxHQS.js → remote-agents-C2C6z9tj.js} +6 -33
  215. package/server/{remote-agents-Cv-U-_V8.js → remote-agents-DYY5fFpd.js} +1 -1
  216. package/server/{remote-completion-PhXGGFQy.js → remote-completion-2Kb4IDg_.js} +13 -13
  217. package/server/{remote-DcO9An_f.js → remote-rN0ecjHE.js} +3 -3
  218. package/server/resume-BFLl-yLn.js +3 -0
  219. package/server/{review-agent-Dn-yn7Zj.js → review-agent-BZvk0N5G.js} +31 -23
  220. package/server/{review-agent-u5q3ip7H.js → review-agent-CpSHLzed.js} +1 -1
  221. package/server/{review-artifacts-D4T04aYI.js → review-artifacts-PCo53YMn.js} +5 -19
  222. package/server/{review-context-Rc0VDLG_.js → review-context-M7QtJlJq.js} +8 -8
  223. package/server/{review-monitor-BC--miCO.js → review-monitor-BLC5mTTg.js} +2 -2
  224. package/server/{review-status-CG0iDuWa.js → review-status-77N3PoZr.js} +1 -1
  225. package/server/{review-status-Dc1l4dVz.js → review-status-DANr0t-v.js} +32 -58
  226. package/server/{review-status-enrichment-C1a1OG_1.js → review-status-enrichment-DwOg4UfL.js} +3 -3
  227. package/server/{review-status-sync-CfSixhhX.js → review-status-sync-Bd08OOFA.js} +1 -1
  228. package/server/{review-status-sync-CAr-hfnJ.js → review-status-sync-BjTUJ5fx.js} +2 -2
  229. package/server/{review-verdict-feedback-D2Q960wX.js → review-verdict-feedback-BsFLjN_6.js} +1 -1
  230. package/server/{review-verdict-feedback-CVDbIDBe.js → review-verdict-feedback-CBf-J_wS.js} +8 -8
  231. package/server/{rollup-DctoIu-A.js → rollup-Bu0f2EyN.js} +8 -8
  232. package/server/{rollup-CakjztPl.js → rollup-DTCCdEy4.js} +1 -1
  233. package/server/{scanner-BTM1jc_u.js → scanner-BlZ2vB7j.js} +7 -7
  234. package/server/{sequence-io-pnoIDGv4.js → sequence-io-ylyDtz2J.js} +4 -4
  235. package/server/{sequencer-agent-9Soi-WL-.js → sequencer-agent-DsWQ-87H.js} +6 -17
  236. package/server/server.js +4695 -4093
  237. package/server/{service-DfTVoqJg.js → service-CLVBC_1Y.js} +116 -90
  238. package/server/{session-fork-C4jAFHj8.js → session-fork-DlEIAhRy.js} +2 -2
  239. package/server/{session-history-DanhhiCw.js → session-history-bnOFKMwf.js} +4 -4
  240. package/server/settings-CP3GGon2.js +2 -0
  241. package/server/{settings-Cuc12oP_.js → settings-Cqa-8nyj.js} +2 -2
  242. package/server/{settings-DfT3f86D.js → settings-gJrdLZy2.js} +3 -3
  243. package/server/{shadow-engineering-bKuKTCn-.js → shadow-engineering-fq1YEKV3.js} +3 -3
  244. package/server/{shadow-state-CVHpRWlb.js → shadow-state-BqeFAygK.js} +1 -1
  245. package/server/{shadow-state-DJz6_pb_.js → shadow-state-RptE9Cau.js} +2 -2
  246. package/server/shadow-utils-BMWr5tRT.js +39 -0
  247. package/server/{ship-log-CwqPFfqx.js → ship-log-BRQQi2lU.js} +1 -1
  248. package/server/{smart-compaction-CiWfGfRZ.js → smart-compaction-CmoXpjeU.js} +7 -7
  249. package/server/{smart-compaction-B4KlpZGN.js → smart-compaction-DldUel4B.js} +1 -1
  250. package/server/{spawn-planning-session-CU-DwyDl.js → spawn-planning-session-CoS6LTc6.js} +16 -16
  251. package/server/{spawn-planning-session-D5N3RuLG.js → spawn-planning-session-DT2tSMxo.js} +1 -1
  252. package/server/{specialist-completion-CJcv-NXH.js → specialist-completion-pJtESo7m.js} +1 -1
  253. package/server/{specialist-context-B2HlbNxS.js → specialist-context-CspI4Eog.js} +5 -5
  254. package/server/{specialist-handoff-logger-CQyF1ygu.js → specialist-handoff-logger-Duz9RGvk.js} +2 -2
  255. package/server/{specialist-logs-CdcUpfjj.js → specialist-logs-DtSkPJZK.js} +3 -3
  256. package/server/{specialists-D7AcFi1u.js → specialists-CywEMwxk.js} +1 -1
  257. package/server/{specialists-k22_Btaq.js → specialists-D9-dMUtI.js} +1 -1
  258. package/server/{specialists-CFgw_0Q6.js → specialists-Dax7tqXC.js} +161 -448
  259. package/server/{specialists-CwzFdapR.js → specialists-GF42OOqd.js} +18 -18
  260. package/server/specs-VwcFtEDi.js +3 -0
  261. package/server/{src-B4TTzNSr.js → src-By3D85Ry.js} +6 -1
  262. package/server/{src-BvpMg4EB.js → src-CqyFg52C.js} +5 -5
  263. package/server/{src-D4YUZrwR.js → src-DhxM-eCb.js} +6 -6
  264. package/server/{stack-health-DVN7zRnL.js → stack-health-BsEVrJZ6.js} +1 -1
  265. package/server/{stack-health-CSgcYcr8.js → stack-health-C-SnpRHh.js} +2 -2
  266. package/server/stale-task-claims-vTxmRzLi.js +69 -0
  267. package/server/state-home-Bur1y4oH.js +213 -0
  268. package/server/{state-mapping-C13UaCL7.js → state-mapping-Ci0pkac4.js} +1 -1
  269. package/server/state-migrate-D3VveYfO.js +362 -0
  270. package/server/{stuck-remediation-CxsyxwFO.js → stuck-remediation-B699-p8v.js} +36 -41
  271. package/server/{stuck-remediation-nTIvhGOR.js → stuck-remediation-CaFYYTQW.js} +1 -1
  272. package/server/{summary-fork-CnRMPCYd.js → summary-fork-BxnF8Xh0.js} +2 -2
  273. package/server/{summary-fork-gKSoFAnK.js → summary-fork-COqYpVa3.js} +8 -8
  274. package/server/supervisor/{paths-3R6b989k.js → paths-Bk6hJRH9.js} +4 -3
  275. package/server/supervisor/pty-supervisor.js +2 -2
  276. package/server/supervisor/{pty-token-CScQ32Rj.js → pty-token-BZS5GYdG.js} +2 -2
  277. package/server/supervisor-eWAAmXKu.js +2 -0
  278. package/server/{supervisor-CZMs8s0M.js → supervisor-liMgIPDF.js} +2 -2
  279. package/server/{swarm-readiness-h6-pwY8w.js → swarm-readiness-sXB1vhzo.js} +3 -3
  280. package/server/{system-prerequisites-DZZTi2G6.js → system-prerequisites-Bz6KdkFJ.js} +1 -13
  281. package/server/{teardown-workspace-B4D-oCVg.js → teardown-workspace-DvzqnmUF.js} +14 -71
  282. package/server/{test-agent-queue-CnuYku4B.js → test-agent-queue-hAU1Ah08.js} +5 -5
  283. package/server/{tldr-daemon-CuA8hz21.js → tldr-daemon-Bam7Xhoo.js} +2 -2
  284. package/server/{tldr-daemon-CgZQ3jmZ.js → tldr-daemon-DhGwd88s.js} +1 -1
  285. package/server/tmux-C-rgxRDA.js +3 -0
  286. package/server/{tmux-C3g9VFcg.js → tmux-U55cNGFG.js} +92 -4
  287. package/server/{token-g_sJ19g3.js → token-Dsa-i36o.js} +2 -2
  288. package/server/{token-util-DiwnnbJo.js → token-util-BWNpH96m.js} +1 -1
  289. package/server/token-util-DRt0j2nQ.js +3 -0
  290. package/server/{tracker-config-dQxC15vH.js → tracker-config-OkdbaUCm.js} +2 -2
  291. package/server/{tracker-utils--z8FLSWn.js → tracker-utils-CghXMF3q.js} +2 -2
  292. package/server/{tracker-utils-DkKyRT0H.js → tracker-utils-DdzUiPNU.js} +1 -1
  293. package/server/{tunnel-BpWZs0Jy.js → tunnel-D1YxesBL.js} +3 -3
  294. package/server/{tunnel-CN2px87h.js → tunnel-DjlzgTl3.js} +1 -1
  295. package/server/typed-errors-CH4roFIj.js +3 -0
  296. package/server/{typed-errors-sLpGfegz.js → typed-errors-n_Tnb4Fh.js} +3 -4
  297. package/server/{types-BLS_Zbmd.js → types-DOjWNv3Z.js} +1 -1
  298. package/server/{types-tlXf80x3.js → types-DXBMm4mX.js} +1 -1
  299. package/server/{uat-train-utGVmqdm.js → uat-train-CaaWs9Rp.js} +1 -1
  300. package/server/{uat-train-BRo6DM7p.js → uat-train-CqN34zFx.js} +24 -25
  301. package/server/{validation-CsPVsoA0.js → validation-4-z2Cw4z.js} +70 -23
  302. package/server/validation-DpTNakM6.js +3 -0
  303. package/server/verification-artifact-DK1xb1zG.js +56 -0
  304. package/server/verification-artifact-JD_edpZ9.js +2 -0
  305. package/server/{verification-runner-CMT5WRMS.js → verification-runner-BjHN80pJ.js} +338 -58
  306. package/server/verification-runner-ShYu5Ph3.js +2 -0
  307. package/server/{vtt-parser-C_XPlifj.js → vtt-parser-QnRfcjiU.js} +1 -1
  308. package/server/{work-agent-prompt-ZTAb2Hyf.js → work-agent-prompt-BiJ43Der.js} +12 -88
  309. package/server/workflows-B4C3lY9E.js +2 -0
  310. package/server/{workflows-CXRwhw_o.js → workflows-DkTotz_m.js} +17 -24
  311. package/server/{workspace-CNfuj1-5.js → workspace-CuN0ev4Z.js} +3 -3
  312. package/server/{workspace-9UEsKuiP.js → workspace-DQ4vVivd.js} +1 -1
  313. package/server/{workspace-config-ChWOECy0.js → workspace-config-C77NKnsV.js} +1 -1
  314. package/server/{workspace-manager-BO-6k3sP.js → workspace-manager-B1mYn0lN.js} +1 -1
  315. package/server/{workspace-manager-D8AByFIT.js → workspace-manager-Beeo2aKF.js} +23 -48
  316. package/server/{workspace-metadata-CvC268MN.js → workspace-metadata-BZC5BmoP.js} +2 -2
  317. package/server/{workspace-metadata-DZiJtnuF.js → workspace-metadata-Cy7_ZACL.js} +1 -1
  318. package/server/{workspaces-D-uIoqbg.js → workspaces-CGuzW1Ia.js} +182 -152
  319. package/sync-sources/hooks/codex-notify-hook +64 -8
  320. package/sync-sources/hooks/record-cost-event.js +1109 -36
  321. package/sync-sources/hooks/record-cost-event.js.map +1 -1
  322. package/sync-sources/hooks/statusline.sh +2 -2
  323. package/sync-sources/hooks/work-agent-stop-hook +1 -2
  324. package/server/acceptance-criteria-BZ_nQS1f.js +0 -33
  325. package/server/agent-state-lGvgPP4m.js +0 -3
  326. package/server/agents-CEcaxSkR.js +0 -3
  327. package/server/auto-commit-IW-eik_b.js +0 -3
  328. package/server/bd-process-lock-XAXAet9O.js +0 -390
  329. package/server/beads-B1u04n3o.js +0 -2
  330. package/server/beads-BeSMEjGT.js +0 -649
  331. package/server/beads-query-Dl4FhT8J.js +0 -95
  332. package/server/beads-restore-BUItPOjI.js +0 -23
  333. package/server/cli-D9cUTbBr.js +0 -3
  334. package/server/codex-BYPz6ZdF.js +0 -3
  335. package/server/compact-beads-CyJtoXJi.js +0 -94
  336. package/server/compact-beads-N00E4EVa.js +0 -3
  337. package/server/deacon-swarm-CvdFekIO.js +0 -2
  338. package/server/dist-BNwrgsUO.js +0 -3
  339. package/server/export-BJHSVwKP.js +0 -87
  340. package/server/forge-8y6aEPTB.js +0 -2
  341. package/server/hume-CerGi2RH.js +0 -3
  342. package/server/inspect-agent-CWkeAB7J.js +0 -2
  343. package/server/lifecycle-Ck2UR27D.js +0 -14
  344. package/server/merge-ops-CFkQtXEj.js +0 -2
  345. package/server/projects-CrBE6IhN.js +0 -3
  346. package/server/public/assets/index-BAZxZ-8I.js +0 -796
  347. package/server/public/assets/index-FBG3JBfq.css +0 -1
  348. package/server/public/assets/mermaid-GHXKKRXX-BYP8MI37.js +0 -1
  349. package/server/rally-oggyp4cs.js +0 -3
  350. package/server/record-lEYK__LD.js +0 -3
  351. package/server/recovery-trip-BT7nb9OV.js +0 -98
  352. package/server/resolver-C7dLn8OK.js +0 -158
  353. package/server/resume-BYZBIab-.js +0 -3
  354. package/server/settings-Cy7SCFO9.js +0 -2
  355. package/server/specs-RzcDgozr.js +0 -3
  356. package/server/supervisor-CfX192ma.js +0 -2
  357. package/server/tmux-By8E_Yv_.js +0 -3
  358. package/server/token-util-C9u4An3K.js +0 -3
  359. package/server/tracker-config-BzfVj41Z.js +0 -3
  360. package/server/typed-errors-CrN1AByg.js +0 -3
  361. package/server/validation-Dq_wwcw3.js +0 -3
  362. package/server/verification-runner-D0Uh-9jc.js +0 -2
  363. package/server/workflows-BLwxUMP7.js +0 -2
  364. package/server/writer-BUweuRPx.js +0 -3
  365. package/server/writer-CrP2xuBn.js +0 -251
@@ -0,0 +1,362 @@
1
+ import { Fn as init_projects, Gn as resolveInfraRepo, an as STATE_BRANCH_PATHS, cn as init_state_plane, dn as acquireStateMigrationLock, fn as init_state_migration_lock, kn as getProjectSync, nn as init_auto_commit, tn as flushAutoCommits } from "./config-yaml-CqaAyn8y.js";
2
+ import { l as stateWorktreePath, n as STATE_BRANCH, o as init_state_home, r as clearStateMigrationCache, t as MIGRATION_COMPLETE_MARKER } from "./state-home-Bur1y4oH.js";
3
+ import { dirname, join } from "node:path";
4
+ import { Effect } from "effect";
5
+ import { tmpdir } from "node:os";
6
+ import { copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
7
+ import { execFile } from "node:child_process";
8
+ import { promisify } from "node:util";
9
+ import { createHash } from "node:crypto";
10
+ //#region ../../lib/state-migration-manifest.ts
11
+ init_projects();
12
+ init_state_migration_lock();
13
+ init_state_plane();
14
+ init_auto_commit();
15
+ init_state_home();
16
+ function manifestEntry(source, destination) {
17
+ const stat = lstatSync(source);
18
+ const bytes = readFileSync(source);
19
+ return {
20
+ source,
21
+ destination,
22
+ mode: stat.mode & 511,
23
+ size: stat.size,
24
+ sha256: createHash("sha256").update(bytes).digest("hex")
25
+ };
26
+ }
27
+ function verifyStateMigrationManifest(entries) {
28
+ for (const expected of entries) {
29
+ const actual = manifestEntry(expected.destination, expected.destination);
30
+ if ((actual.mode & 64) !== (expected.mode & 64) || actual.size !== expected.size || actual.sha256 !== expected.sha256) throw new Error(`State migration no-loss mismatch: ${expected.source} -> ${expected.destination}`);
31
+ }
32
+ }
33
+ //#endregion
34
+ //#region ../../cli/commands/admin/state-migrate.ts
35
+ const execFileAsync = promisify(execFile);
36
+ async function git(cwd, args, env) {
37
+ const { stdout } = await execFileAsync("git", args, {
38
+ cwd,
39
+ env: {
40
+ ...process.env,
41
+ ...env
42
+ },
43
+ encoding: "utf8",
44
+ maxBuffer: 32 * 1024 * 1024
45
+ });
46
+ return stdout.trim();
47
+ }
48
+ function destinationForTracked(path) {
49
+ if (!path.startsWith(".pan/")) return null;
50
+ const flat = path.slice(5);
51
+ return STATE_BRANCH_PATHS.some((prefix) => flat.startsWith(prefix)) ? flat : null;
52
+ }
53
+ async function trackedManifest(repo, sourceSha, stateRoot) {
54
+ return (await git(repo, [
55
+ "ls-tree",
56
+ "-r",
57
+ "--name-only",
58
+ sourceSha,
59
+ "--",
60
+ ".pan"
61
+ ])).split("\n").filter(Boolean).flatMap((path) => {
62
+ const destination = destinationForTracked(path);
63
+ if (!destination) return [];
64
+ const source = join(repo, path);
65
+ const target = join(stateRoot, destination);
66
+ if (!existsSync(target)) {
67
+ mkdirSync(dirname(target), { recursive: true });
68
+ copyFileSync(source, target);
69
+ }
70
+ return [manifestEntry(source, target)];
71
+ });
72
+ }
73
+ async function createOrphanStateCommit(repo, sourceSha) {
74
+ const index = join(tmpdir(), `overdeck-state-index-${process.pid}-${Date.now()}`);
75
+ const env = { GIT_INDEX_FILE: index };
76
+ try {
77
+ await git(repo, ["read-tree", "--empty"], env);
78
+ const rows = (await git(repo, [
79
+ "ls-tree",
80
+ "-r",
81
+ sourceSha,
82
+ "--",
83
+ ".pan"
84
+ ])).split("\n").filter(Boolean);
85
+ for (const row of rows) {
86
+ const match = row.match(/^(\d+)\s+\w+\s+([0-9a-f]+)\t(.+)$/);
87
+ if (!match) continue;
88
+ const destination = destinationForTracked(match[3]);
89
+ if (destination) await git(repo, [
90
+ "update-index",
91
+ "--add",
92
+ "--cacheinfo",
93
+ `${match[1]},${match[2]},${destination}`
94
+ ], env);
95
+ }
96
+ return await git(repo, [
97
+ "commit-tree",
98
+ await git(repo, ["write-tree"], env),
99
+ "-m",
100
+ "chore(state): seed overdeck-state"
101
+ ]);
102
+ } finally {
103
+ rmSync(index, { force: true });
104
+ }
105
+ }
106
+ function copyLegacyState(sourceRoot, stateRoot) {
107
+ const manifest = [];
108
+ for (const sourcePath of STATE_BRANCH_PATHS) {
109
+ const source = join(sourceRoot, ".pan", sourcePath);
110
+ if (!existsSync(source)) continue;
111
+ const destination = join(stateRoot, sourcePath);
112
+ cpSync(source, destination, {
113
+ recursive: true,
114
+ preserveTimestamps: true
115
+ });
116
+ const visit = (sourceDir, destinationDir) => {
117
+ for (const entry of readdirSync(sourceDir, { withFileTypes: true })) {
118
+ const sourceEntry = join(sourceDir, entry.name);
119
+ const destinationEntry = join(destinationDir, entry.name);
120
+ if (entry.isDirectory()) visit(sourceEntry, destinationEntry);
121
+ else if (entry.isFile()) manifest.push(manifestEntry(sourceEntry, destinationEntry));
122
+ }
123
+ };
124
+ visit(source, destination);
125
+ }
126
+ return manifest;
127
+ }
128
+ function hasNonStateDirtyState(porcelain) {
129
+ return porcelain.split("\n").filter(Boolean).some((line) => {
130
+ const path = line.slice(3).split(" -> ").at(-1) ?? "";
131
+ if (path === ".pan" || path.startsWith(".pan/")) return false;
132
+ return true;
133
+ });
134
+ }
135
+ function dedupeManifest(entries) {
136
+ return [...new Map(entries.map((entry) => [entry.destination, entry])).values()];
137
+ }
138
+ const GITIGNORE_MANAGED_LINES = [
139
+ "# PAN-2541: permanent state is on overdeck-state; workspace runtime stays local.",
140
+ ".pan/",
141
+ ".overdeck/continue.json",
142
+ ".overdeck/spec.vbrief.json",
143
+ ".overdeck/sessions.jsonl",
144
+ ".overdeck/feedback/",
145
+ ".overdeck/review/",
146
+ ".overdeck/test/",
147
+ ".overdeck/kickoff.md",
148
+ ".overdeck/agent-mcp.json"
149
+ ];
150
+ function rewriteGitignore(repo) {
151
+ const path = join(repo, ".gitignore");
152
+ const prior = existsSync(path) ? readFileSync(path, "utf8") : "";
153
+ const managed = new Set([...GITIGNORE_MANAGED_LINES, ".overdeck/"]);
154
+ const kept = prior.split("\n").filter((line) => !managed.has(line.trim()));
155
+ while (kept.length > 0 && kept[kept.length - 1]?.trim() === "") kept.pop();
156
+ writeFileSync(path, [
157
+ ...kept,
158
+ "",
159
+ ...GITIGNORE_MANAGED_LINES,
160
+ ""
161
+ ].join("\n"));
162
+ }
163
+ async function migrateProjectState(projectKey, options = {}, projectOverride) {
164
+ const project = projectOverride ?? getProjectSync(projectKey);
165
+ if (!project) throw new Error(`Unknown project: ${projectKey}`);
166
+ const { repoPath: repo } = resolveInfraRepo(project);
167
+ const legacyStateSource = project.path;
168
+ const sourceIsHostRepo = legacyStateSource === repo;
169
+ const stateRoot = stateWorktreePath(project, { projectKey });
170
+ console.log(`PAN-2541 state migration plan for ${projectKey}:`);
171
+ console.log(` ${legacyStateSource}/.pan/{${STATE_BRANCH_PATHS.map((p) => p.slice(0, -1)).join(",")}} -> ${stateRoot}/`);
172
+ console.log(` ${legacyStateSource}/.pan/context -> ${legacyStateSource}/.overdeck/context`);
173
+ if (options.dryRun) return;
174
+ const release = acquireStateMigrationLock(projectKey);
175
+ try {
176
+ await Effect.runPromise(flushAutoCommits(repo));
177
+ if (hasNonStateDirtyState(await git(repo, ["status", "--porcelain"]))) throw new Error("Primary checkout is dirty outside legacy state paths; migration refused before mutation");
178
+ await git(repo, [
179
+ "fetch",
180
+ "--prune",
181
+ "origin"
182
+ ]);
183
+ const sourceMainSha = await git(repo, ["rev-parse", "main"]);
184
+ if (sourceMainSha !== await git(repo, ["rev-parse", "origin/main"])) throw new Error("main is not exactly at origin/main; migration refused");
185
+ if (await git(repo, ["show", `origin/overdeck-state:migration-complete.json`]).catch(() => "")) {
186
+ console.log("State migration already complete on origin; nothing to do.");
187
+ return;
188
+ }
189
+ let stateSha = await git(repo, ["rev-parse", STATE_BRANCH]).catch(() => "");
190
+ const remoteStateSha = await git(repo, ["rev-parse", `origin/${STATE_BRANCH}`]).catch(() => "");
191
+ if (stateSha && remoteStateSha && stateSha !== remoteStateSha) throw new Error("Local and remote overdeck-state diverged; refusing non-fast-forward migration");
192
+ if (!stateSha) {
193
+ stateSha = remoteStateSha || await createOrphanStateCommit(repo, sourceMainSha);
194
+ await git(repo, [
195
+ "update-ref",
196
+ `refs/heads/${STATE_BRANCH}`,
197
+ stateSha
198
+ ]);
199
+ }
200
+ if (!remoteStateSha) await git(repo, [
201
+ "push",
202
+ "origin",
203
+ STATE_BRANCH
204
+ ]);
205
+ if (!existsSync(stateRoot)) {
206
+ mkdirSync(dirname(stateRoot), { recursive: true });
207
+ await git(repo, [
208
+ "worktree",
209
+ "add",
210
+ stateRoot,
211
+ STATE_BRANCH
212
+ ]);
213
+ }
214
+ const manifest = sourceIsHostRepo ? dedupeManifest([...await trackedManifest(repo, sourceMainSha, stateRoot), ...copyLegacyState(legacyStateSource, stateRoot)]) : copyLegacyState(legacyStateSource, stateRoot);
215
+ if (manifest.length > 0) {
216
+ await git(stateRoot, ["add", "--all"]);
217
+ if (await git(stateRoot, [
218
+ "diff",
219
+ "--cached",
220
+ "--name-only"
221
+ ])) await git(stateRoot, [
222
+ "commit",
223
+ "-m",
224
+ "chore(state): seed legacy project state"
225
+ ]);
226
+ await git(stateRoot, [
227
+ "push",
228
+ "origin",
229
+ STATE_BRANCH
230
+ ]);
231
+ }
232
+ const untracked = sourceIsHostRepo ? (await git(repo, [
233
+ "ls-files",
234
+ "--others",
235
+ "--",
236
+ ".pan"
237
+ ])).split("\n").filter((path) => path.split("/").length === 2 && existsSync(join(repo, path)) && lstatSync(join(repo, path)).isFile()) : existsSync(join(legacyStateSource, ".pan")) ? readdirSync(join(legacyStateSource, ".pan"), { withFileTypes: true }).filter((entry) => entry.isFile()).map((entry) => `.pan/${entry.name}`) : [];
238
+ for (const path of untracked) {
239
+ if (!existsSync(join(legacyStateSource, path))) continue;
240
+ const destination = join(stateRoot, "notes", path.slice(5));
241
+ if (existsSync(destination)) {
242
+ if (!readFileSync(join(legacyStateSource, path)).equals(readFileSync(destination))) throw new Error(`Untracked-note destination collision: ${destination}`);
243
+ manifest.push(manifestEntry(join(legacyStateSource, path), destination));
244
+ continue;
245
+ }
246
+ mkdirSync(dirname(destination), { recursive: true });
247
+ copyFileSync(join(legacyStateSource, path), destination);
248
+ manifest.push(manifestEntry(join(legacyStateSource, path), destination));
249
+ }
250
+ if (untracked.length > 0) {
251
+ await git(stateRoot, ["add", "notes"]);
252
+ if (await git(stateRoot, [
253
+ "diff",
254
+ "--cached",
255
+ "--name-only"
256
+ ])) await git(stateRoot, [
257
+ "commit",
258
+ "-m",
259
+ "chore(state): preserve untracked operator notes"
260
+ ]);
261
+ await git(stateRoot, [
262
+ "push",
263
+ "origin",
264
+ STATE_BRANCH
265
+ ]);
266
+ }
267
+ if (await git(repo, ["rev-parse", "main"]) !== sourceMainSha) throw new Error("main advanced during migration; refusing cleanup");
268
+ if (sourceIsHostRepo) await git(repo, [
269
+ "rm",
270
+ "-r",
271
+ "--cached",
272
+ "--ignore-unmatch",
273
+ ".pan/records",
274
+ ".pan/continues",
275
+ ".pan/specs",
276
+ ".pan/drafts",
277
+ ".pan/review",
278
+ ".pan/test",
279
+ ".pan/feedback",
280
+ ".pan/backlog",
281
+ ".pan/notes"
282
+ ]);
283
+ const oldContext = join(legacyStateSource, ".pan", "context");
284
+ const newContext = join(legacyStateSource, ".overdeck", "context");
285
+ let movedContext = false;
286
+ if (existsSync(oldContext) && !existsSync(newContext)) {
287
+ mkdirSync(dirname(newContext), { recursive: true });
288
+ renameSync(oldContext, newContext);
289
+ movedContext = true;
290
+ }
291
+ rewriteGitignore(legacyStateSource);
292
+ if (sourceIsHostRepo) {
293
+ if (await git(repo, [
294
+ "ls-files",
295
+ "--",
296
+ ".pan/context"
297
+ ])) await git(repo, [
298
+ "add",
299
+ "-u",
300
+ "--",
301
+ ".pan/context"
302
+ ]);
303
+ const addPaths = [".gitignore"];
304
+ if (movedContext || existsSync(newContext)) addPaths.push(".overdeck/context");
305
+ await git(repo, [
306
+ "add",
307
+ "--",
308
+ ...addPaths
309
+ ]);
310
+ if (await git(repo, [
311
+ "diff",
312
+ "--cached",
313
+ "--name-only"
314
+ ])) await git(repo, [
315
+ "commit",
316
+ "-m",
317
+ "chore(state): move permanent state to overdeck-state"
318
+ ]);
319
+ }
320
+ verifyStateMigrationManifest(manifest);
321
+ for (const entry of manifest) rmSync(entry.source, { force: true });
322
+ if (!sourceIsHostRepo) rmSync(join(legacyStateSource, ".pan"), {
323
+ recursive: true,
324
+ force: true
325
+ });
326
+ stateSha = await git(stateRoot, ["rev-parse", "HEAD"]);
327
+ writeFileSync(join(stateRoot, MIGRATION_COMPLETE_MARKER), `${JSON.stringify({
328
+ sourceMainSha,
329
+ stateBranchSha: stateSha,
330
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
331
+ version: 1
332
+ }, null, 2)}\n`);
333
+ await git(stateRoot, ["add", MIGRATION_COMPLETE_MARKER]);
334
+ await git(stateRoot, [
335
+ "commit",
336
+ "-m",
337
+ "chore(state): complete state migration"
338
+ ]);
339
+ await git(repo, [
340
+ "push",
341
+ "--atomic",
342
+ "--dry-run",
343
+ "origin",
344
+ "main",
345
+ STATE_BRANCH
346
+ ]);
347
+ await git(repo, [
348
+ "push",
349
+ "--atomic",
350
+ "origin",
351
+ "main",
352
+ STATE_BRANCH
353
+ ]);
354
+ clearStateMigrationCache();
355
+ } finally {
356
+ release();
357
+ }
358
+ }
359
+ //#endregion
360
+ export { migrateProjectState };
361
+
362
+ //# sourceMappingURL=state-migrate-D3VveYfO.js.map
@@ -1,17 +1,18 @@
1
- import { Br as encodeClaudeProjectDir, Fn as init_projects, Jr as init_paths, dr as FsError, nr as init_issue_id, qn as resolveProjectFromIssueSync, qr as getOverdeckHome, tr as extractPrefixSync, vr as TmuxError, xr as init_errors } from "./config-yaml-cNOZcEww.js";
2
- import { D as listPaneValuesSync, P as sendKeys, R as sessionExistsSync, T as killSessionSync, i as capturePane, x as init_tmux } from "./tmux-C3g9VFcg.js";
3
- import { n as CLAUDE_CODE_BEHAVIOR } from "./src-B4TTzNSr.js";
4
- import { c as init_review_status, s as getReviewStatusSync } from "./review-status-Dc1l4dVz.js";
5
- import { An as getAgentDir, B as createOhmypiRuntimeSync, E as resumeAgent, Hn as markAgentTroubled, Jn as saveAgentStateSync, Pn as getAgentStateSync, Q as listRunningAgentsSync, U as spawnAgent, V as init_ohmypi, _t as init_config, cn as determineModel, en as init_pi_fifo, fr as getAgentRuntimeState, hr as saveAgentRuntimeState, ht as DEFAULT_CLOISTER_CONFIG, j as messageAgent, pr as getAgentRuntimeStateSync, t as init_agents, yt as loadCloisterConfigSync } from "./agents-B9GwfCyp.js";
6
- import { c as logDeaconEventSync, o as init_persistent_logger } from "./session-history-DanhhiCw.js";
7
- import { t as init_behavior } from "./behavior-BTpYbAv4.js";
8
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-dQxC15vH.js";
9
- import { a as init_launcher_generator } from "./state-home-CEvD_v5F.js";
10
- import { i as createCodexRuntimeSync, l as init_codex } from "./codex-BbqIRZjd.js";
11
- import { f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, s as init_control_settings } from "./control-settings-D4EFsRBd.js";
12
- import { o as queryReadyBeadsByIssueLabels, r as init_beads_query, s as resolveBeadsQueryRoot } from "./beads-query-Dl4FhT8J.js";
13
- import { a as init_jsonl_parser, i as getSessionFilesSync, r as getProjectDirsSync, s as parseClaudeSessionSync } from "./jsonl-parser-BUW5_sSK.js";
14
- import { t as recordRecoveryFailure } from "./recovery-trip-BT7nb9OV.js";
1
+ import { Fn as init_projects, Jr as getOverdeckHome, Sr as init_errors, Vr as encodeClaudeProjectDir, Yr as init_paths, fr as FsError, nr as extractPrefixSync, qn as resolveProjectFromIssueSync, rr as init_issue_id, yr as TmuxError } from "./config-yaml-CqaAyn8y.js";
2
+ import { E as killSessionSync, F as sendKeys, O as listPaneValuesSync, S as init_tmux, a as capturePaneSync, c as detectTerminalApiErrorSync, i as capturePane, z as sessionExistsSync } from "./tmux-U55cNGFG.js";
3
+ import { n as CLAUDE_CODE_BEHAVIOR } from "./src-By3D85Ry.js";
4
+ import { c as init_review_status, s as getReviewStatusSync } from "./review-status-DANr0t-v.js";
5
+ import { Fn as getAgentStateSync, K as createOhmypiRuntimeSync, L as messageAgent, M as resumeAgent, Un as markAgentTroubled, Y as spawnAgent, Yn as saveAgentStateSync, _t as init_config, a as listRunningAgentsSync, gr as saveAgentRuntimeState, ht as DEFAULT_CLOISTER_CONFIG, jn as getAgentDir, ln as determineModel, mr as getAgentRuntimeStateSync, pr as getAgentRuntimeState, q as init_ohmypi, s as init_agents, tn as init_pi_fifo, yt as loadCloisterConfigSync } from "./queries-C0LCGG21.js";
6
+ import { c as logDeaconEventSync, o as init_persistent_logger } from "./session-history-bnOFKMwf.js";
7
+ import { t as init_behavior } from "./behavior-CWqNMqE5.js";
8
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-OkdbaUCm.js";
9
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-DkC4sFSy.js";
10
+ import { n as init_launcher_generator } from "./launcher-generator-BXLM9f4b.js";
11
+ import { i as createCodexRuntimeSync, l as init_codex } from "./codex-sgWVCGUd.js";
12
+ import { f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, s as init_control_settings } from "./control-settings-BguNQ1F_.js";
13
+ import { l as init_dag, o as getDispatchableItems } from "./dag-C6kYyF17.js";
14
+ import { a as init_jsonl_parser, i as getSessionFilesSync, r as getProjectDirsSync, s as parseClaudeSessionSync } from "./jsonl-parser-Cd5jIqh7.js";
15
+ import { t as recordRecoveryFailure } from "./recovery-trip-Cn7KJVkS.js";
15
16
  import "node:path";
16
17
  import { Effect } from "effect";
17
18
  import { existsSync, mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "fs";
@@ -32,9 +33,10 @@ init_projects();
32
33
  init_behavior();
33
34
  init_persistent_logger();
34
35
  init_review_status();
36
+ init_io();
35
37
  init_codex();
36
38
  init_launcher_generator();
37
- init_beads_query();
39
+ init_dag();
38
40
  init_agents();
39
41
  init_tmux();
40
42
  init_errors();
@@ -1220,7 +1222,7 @@ async function evaluateWedgedReworkAgent(agent, config, now, actions) {
1220
1222
  markAgentTroubled(agentId);
1221
1223
  writeStuckRemediationState(agentId, stageState(3, now, firstStuck));
1222
1224
  logAction(actions, transitionAction(3, issueId, idleMinutes, "rework-wedge-troubled"));
1223
- surfaceStuckNeedsYou(agent, issueId, firstStuck, actions);
1225
+ await surfaceStuckNeedsYou(agent, issueId, firstStuck, actions);
1224
1226
  return true;
1225
1227
  }
1226
1228
  killSessionSync(agentId);
@@ -1228,9 +1230,6 @@ async function evaluateWedgedReworkAgent(agent, config, now, actions) {
1228
1230
  logAction(actions, transitionAction(3, issueId, idleMinutes, "killed-for-respawn"));
1229
1231
  return true;
1230
1232
  }
1231
- function hasReadyBeads(readyByQueryRoot, agent, issueLabel) {
1232
- return (readyByQueryRoot.get(resolveBeadsQueryRoot(agent.workspace))?.[issueLabel] ?? []).length > 0;
1233
- }
1234
1233
  function shouldCheckReadyBeadsForAgent(agent, now) {
1235
1234
  const agentId = agent.id;
1236
1235
  if (!agentId) return false;
@@ -1263,11 +1262,11 @@ function logAction(actions, action) {
1263
1262
  console.log(action);
1264
1263
  logDeaconEventSync(action);
1265
1264
  }
1266
- function surfaceStuckNeedsYou(agent, issueId, generation, actions) {
1265
+ async function surfaceStuckNeedsYou(agent, issueId, generation, actions) {
1267
1266
  if (!agent.workspace) return;
1268
- if (recordRecoveryFailure(agent.workspace, issueId, "stuck-remediation", generation, 1).emitNeedsYou) logAction(actions, `[deacon] needs-you ${issueId}: stuck remediation exhausted`);
1267
+ if ((await recordRecoveryFailure(agent.workspace, issueId, "stuck-remediation", generation, 1)).emitNeedsYou) logAction(actions, `[deacon] needs-you ${issueId}: stuck remediation exhausted`);
1269
1268
  }
1270
- async function evaluateAgent(agent, config, now, actions, readyByQueryRoot) {
1269
+ async function evaluateAgent(agent, config, now, actions) {
1271
1270
  const agentId = agent.id;
1272
1271
  if (!agentId) return;
1273
1272
  if (agent.status !== "running") return;
@@ -1286,7 +1285,9 @@ async function evaluateAgent(agent, config, now, actions, readyByQueryRoot) {
1286
1285
  if (!shouldCheckReadyBeadsForAgent(agent, now)) return;
1287
1286
  if (!agent.workspace) return;
1288
1287
  const issueId = issueIdForAgent(agent);
1289
- if (hasReadyBeads(readyByQueryRoot, agent, issueId.toLowerCase())) return;
1288
+ const plan = readWorkspacePlanSync(agent.workspace);
1289
+ if (!plan) return;
1290
+ if (getDispatchableItems(plan, /* @__PURE__ */ new Set()).length > 0) return;
1290
1291
  const lastActivityMs = getAgentEffectiveLastActivityMs(agentId);
1291
1292
  if (lastActivityMs === null) return;
1292
1293
  if (!Number.isFinite(lastActivityMs)) return;
@@ -1302,11 +1303,19 @@ async function evaluateAgent(agent, config, now, actions, readyByQueryRoot) {
1302
1303
  const idleMinutes = Math.floor((now - lastActivityMs) / 6e4);
1303
1304
  const lastStage = stuckState?.lastStage ?? 0;
1304
1305
  const firstStuck = firstStuckAt(lastActivity, stuckState);
1306
+ const terminalProviderError = detectTerminalApiErrorSync(capturePaneSync(agentId, 80));
1307
+ if (terminalProviderError) {
1308
+ markAgentTroubled(agentId);
1309
+ writeStuckRemediationState(agentId, stageState(3, now, firstStuck));
1310
+ logAction(actions, `${agentId} provider-terminal: ${terminalProviderError.summary}`);
1311
+ await surfaceStuckNeedsYou(agent, issueId, firstStuck, actions);
1312
+ return;
1313
+ }
1305
1314
  if (idleMinutes >= config.stage3_minutes && lastStage < 3) {
1306
1315
  markAgentTroubled(agentId);
1307
1316
  writeStuckRemediationState(agentId, stageState(3, now, firstStuck));
1308
1317
  logAction(actions, transitionAction(3, issueId, idleMinutes, "marked-troubled"));
1309
- surfaceStuckNeedsYou(agent, issueId, firstStuck, actions);
1318
+ await surfaceStuckNeedsYou(agent, issueId, firstStuck, actions);
1310
1319
  return;
1311
1320
  }
1312
1321
  if (idleMinutes >= config.stage2_minutes && lastStage < 2) {
@@ -1390,7 +1399,7 @@ async function remediateFlywheelOrchestrator(agentId, now, actions, reason) {
1390
1399
  now
1391
1400
  });
1392
1401
  if (decision.kind === "noop") return;
1393
- const { resumeFlywheel, pauseFlywheel } = await import("./flywheel-RCnHAgc4.js");
1402
+ const { resumeFlywheel, pauseFlywheel } = await import("./flywheel-BUWdcfhq.js");
1394
1403
  const prev = readStuckRemediationState(agentId);
1395
1404
  const nowIso = new Date(now).toISOString();
1396
1405
  if (decision.kind === "escalate") {
@@ -1473,25 +1482,11 @@ async function checkStuckAgentRemediation(opts = {}) {
1473
1482
  const actions = [];
1474
1483
  const now = opts.now ?? Date.now();
1475
1484
  const runningAgents = listRunningAgentsSync();
1476
- const readyByQueryRoot = /* @__PURE__ */ new Map();
1477
- const workAgentsByQueryRoot = /* @__PURE__ */ new Map();
1478
1485
  let sawFlywheelOrchestrator = false;
1479
- for (const agent of runningAgents) {
1480
- if (!shouldCheckReadyBeadsForAgent(agent, now)) continue;
1481
- const queryRoot = resolveBeadsQueryRoot(agent.workspace);
1482
- const workspaceAgents = workAgentsByQueryRoot.get(queryRoot) ?? [];
1483
- workspaceAgents.push(agent);
1484
- workAgentsByQueryRoot.set(queryRoot, workspaceAgents);
1485
- }
1486
- for (const [queryRoot, workspaceAgents] of workAgentsByQueryRoot) {
1487
- const issueIds = workspaceAgents.map(issueIdForAgent);
1488
- const ready = await Effect.runPromise(queryReadyBeadsByIssueLabels(queryRoot, issueIds, { acquisitionTimeoutMs: 500 }));
1489
- readyByQueryRoot.set(queryRoot, ready.byIssue);
1490
- }
1491
1486
  for (const agent of runningAgents) {
1492
1487
  if (agent.id === FLYWHEEL_ORCHESTRATOR_AGENT_ID || agent.role === "flywheel") sawFlywheelOrchestrator = true;
1493
1488
  try {
1494
- await evaluateAgent(agent, config, now, actions, readyByQueryRoot);
1489
+ await evaluateAgent(agent, config, now, actions);
1495
1490
  } catch (error) {
1496
1491
  const message = `[deacon] stuck-remediation agent=${agent.id || "(unknown)"} error=${error instanceof Error ? error.message : String(error)}`;
1497
1492
  console.error(message, error);
@@ -1510,4 +1505,4 @@ async function checkStuckAgentRemediation(opts = {}) {
1510
1505
  //#endregion
1511
1506
  export { parseCodexApprovalPrompt as _, isAgentIdleForNudge as a, countPendingAskUserQuestionsForAgent as c, getAgentPendingQuestions as d, getAgentWorkspace as f, normalizeAwaitingInputPrompt as g, detectAwaitingInputFromPaneSync as h, shouldSkipReviewStatus as i, getAgentJsonlMtime as l, detectAwaitingInputForAgent as m, decideFlywheelRemediation as n, getRuntimeForAgent as o, scanPendingInputsPromise as p, shouldSkipIdlePokeForAgent as r, computeAgentEnrichment as s, checkStuckAgentRemediation as t, getAgentJsonlPath as u };
1512
1507
 
1513
- //# sourceMappingURL=stuck-remediation-CxsyxwFO.js.map
1508
+ //# sourceMappingURL=stuck-remediation-B699-p8v.js.map
@@ -1,2 +1,2 @@
1
- import { r as shouldSkipIdlePokeForAgent } from "./stuck-remediation-CxsyxwFO.js";
1
+ import { r as shouldSkipIdlePokeForAgent } from "./stuck-remediation-B699-p8v.js";
2
2
  export { shouldSkipIdlePokeForAgent };
@@ -1,4 +1,4 @@
1
- import "./smart-compaction-CiWfGfRZ.js";
2
- import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-gKSoFAnK.js";
1
+ import "./smart-compaction-CmoXpjeU.js";
2
+ import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-COqYpVa3.js";
3
3
  init_summary_fork();
4
4
  export { generateFallbackSummary };
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Gr as getHandoffsDir, Jr as init_paths, Qr as sessionFilePath, Xr as packageRoot, dr as FsError, f as loadConfigSync, t as init_config_yaml, xr as init_errors } from "./config-yaml-cNOZcEww.js";
3
- import { St as deliverAgentMessage, t as init_agents } from "./agents-B9GwfCyp.js";
4
- import { k as init_conversations } from "./conversations-B-lcHv-5.js";
5
- import { a as init_stack_health, i as getWorkspaceStackHealth } from "./stack-health-CSgcYcr8.js";
6
- import { a as runModelSummary, i as parseEntries, o as serializeConversation, r as init_smart_compaction, s as summarizeSerializedText, t as generateSmartSummary } from "./smart-compaction-CiWfGfRZ.js";
2
+ import { $r as sessionFilePath, Kr as getHandoffsDir, Sr as init_errors, Yr as init_paths, Zr as packageRoot, f as loadConfigSync, fr as FsError, t as init_config_yaml } from "./config-yaml-CqaAyn8y.js";
3
+ import { St as deliverAgentMessage, s as init_agents } from "./queries-C0LCGG21.js";
4
+ import { k as init_conversations } from "./conversations-BX5aD-6F.js";
5
+ import { a as init_stack_health, i as getWorkspaceStackHealth } from "./stack-health-C-SnpRHh.js";
6
+ import { a as runModelSummary, i as parseEntries, o as serializeConversation, r as init_smart_compaction, s as summarizeSerializedText, t as generateSmartSummary } from "./smart-compaction-CmoXpjeU.js";
7
7
  import { join } from "node:path";
8
8
  import { Effect } from "effect";
9
9
  import { join as join$1 } from "path";
@@ -442,11 +442,11 @@ async function generateSummaryForFork(jsonlPath, summaryModel, includeThinkingIn
442
442
  }
443
443
  }
444
444
  async function reserveSummaryForkSessionPromise(cwd) {
445
- const { reserveForkSession } = await import("./session-fork-C4jAFHj8.js");
445
+ const { reserveForkSession } = await import("./session-fork-DlEIAhRy.js");
446
446
  return reserveForkSession(cwd);
447
447
  }
448
448
  async function copySessionFromCompactBoundaryPromise(sourcePath, destPath) {
449
- const { copySessionForFork } = await import("./session-fork-C4jAFHj8.js");
449
+ const { copySessionForFork } = await import("./session-fork-DlEIAhRy.js");
450
450
  return copySessionForFork(sourcePath, destPath, { fullHistory: false });
451
451
  }
452
452
  /** Effect variant of generateFallbackSummary. */
@@ -521,4 +521,4 @@ var init_summary_fork = __esmMin((() => {
521
521
  //#endregion
522
522
  export { init_transcript_adapter as _, generateFallbackSummary as a, handoffPreconditionFallbackReason as c, prependFallbackFocus as d, requestHandoffFromAgent as f, getTranscriptAdapter as g, validateHandoffDoc as h, copySessionFromCompactBoundary as i, init_summary_fork as l, sanitizeHandoffDoc as m, HandoffValidationError as n, generateSummaryForFork as o, reserveSummaryForkSession as p, authorHandoffExternal as r, handoffFailureReason as s, HandoffStallError as t, logHandoffFallback as u };
523
523
 
524
- //# sourceMappingURL=summary-fork-gKSoFAnK.js.map
524
+ //# sourceMappingURL=summary-fork-COqYpVa3.js.map
@@ -129,7 +129,7 @@ function sessionIdFromFile(sessionFile) {
129
129
  if (!sessionFile) return void 0;
130
130
  return sessionFile.split("/").pop()?.replace(".jsonl", "") ?? void 0;
131
131
  }
132
- var OVERDECK_HOME, CONFIG_DIR, SKILLS_DIR, COMMANDS_DIR, AGENTS_DIR, BIN_DIR, BACKUPS_DIR, COSTS_DIR, HEARTBEATS_DIR, ARCHIVES_DIR, LOGS_DIR, HANDOFFS_DIR, TRAEFIK_DIR, TRAEFIK_DYNAMIC_DIR, TRAEFIK_CERTS_DIR, CERTS_DIR, CONFIG_FILE, SETTINGS_FILE, CLAUDE_DIR, LEGACY_RUNTIME_DIRS, SYNC_TARGET, TEMPLATES_DIR, CLAUDE_MD_TEMPLATES, currentDir, packageRoot, SYNC_SOURCES_ROOT, SYNC_SOURCES, CACHE_SKILLS_DIR, CACHE_AGENTS_DIR, CACHE_RULES_DIR, CACHE_MANIFEST, DOCS_DIR, PRDS_DIR, PRD_DRAFTS_DIR, PRD_PUBLISHED_DIR, DOCS_INDEX_FILE, DOCS_BUDGET_STATE_FILE, DOCS_DISABLE_STATE_FILE, DOCS_TELEMETRY_FILE, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR, PROJECT_PRDS_ACTIVE_SUBDIR, PROJECT_PRDS_PLANNED_SUBDIR, PROJECT_PRDS_COMPLETED_SUBDIR, INIT_DIRS;
132
+ var OVERDECK_HOME, CONFIG_DIR, SKILLS_DIR, COMMANDS_DIR, AGENTS_DIR, BIN_DIR, BACKUPS_DIR, COSTS_DIR, HEARTBEATS_DIR, ARCHIVES_DIR, LOGS_DIR, HANDOFFS_DIR, TRAEFIK_DIR, TRAEFIK_DYNAMIC_DIR, TRAEFIK_CERTS_DIR, CERTS_DIR, CONFIG_FILE, SETTINGS_FILE, CLAUDE_DIR, AGENT_SKILLS_DIR, LEGACY_RUNTIME_DIRS, SYNC_TARGET, TEMPLATES_DIR, CLAUDE_MD_TEMPLATES, currentDir, packageRoot, SYNC_SOURCES_ROOT, SYNC_SOURCES, CACHE_SKILLS_DIR, CACHE_AGENTS_DIR, CACHE_RULES_DIR, CACHE_MANIFEST, DOCS_DIR, PRDS_DIR, PRD_DRAFTS_DIR, PRD_PUBLISHED_DIR, DOCS_INDEX_FILE, DOCS_BUDGET_STATE_FILE, DOCS_DISABLE_STATE_FILE, DOCS_TELEMETRY_FILE, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR, PROJECT_PRDS_ACTIVE_SUBDIR, PROJECT_PRDS_PLANNED_SUBDIR, PROJECT_PRDS_COMPLETED_SUBDIR, INIT_DIRS;
133
133
  var init_paths = __esmMin((() => {
134
134
  OVERDECK_HOME = process.env.OVERDECK_HOME || join(homedir(), ".overdeck");
135
135
  CONFIG_DIR = OVERDECK_HOME;
@@ -150,6 +150,7 @@ var init_paths = __esmMin((() => {
150
150
  CONFIG_FILE = join(CONFIG_DIR, "config.toml");
151
151
  SETTINGS_FILE = join(CONFIG_DIR, "settings.json");
152
152
  CLAUDE_DIR = join(homedir(), ".claude");
153
+ AGENT_SKILLS_DIR = join(homedir(), ".agents", "skills");
153
154
  LEGACY_RUNTIME_DIRS = {
154
155
  codex: join(homedir(), ".codex"),
155
156
  cursor: join(homedir(), ".cursor"),
@@ -219,6 +220,6 @@ var init_paths = __esmMin((() => {
219
220
  ];
220
221
  }));
221
222
  //#endregion
222
- export { getOverdeckHome as $, PROJECT_DOCS_SUBDIR as A, TEMPLATES_DIR as B, INIT_DIRS as C, PRDS_DIR as D, OVERDECK_HOME as E, SETTINGS_FILE as F, getDocsBudgetStatePath as G, TRAEFIK_DIR as H, SKILLS_DIR as I, getDocsIndexPath as J, getDocsDir as K, SYNC_SOURCES as L, PROJECT_PRDS_COMPLETED_SUBDIR as M, PROJECT_PRDS_PLANNED_SUBDIR as N, PRD_DRAFTS_DIR as O, PROJECT_PRDS_SUBDIR as P, getLegacyHome as Q, SYNC_SOURCES_ROOT as R, HEARTBEATS_DIR as S, LOGS_DIR as T, TRAEFIK_DYNAMIC_DIR as U, TRAEFIK_CERTS_DIR as V, encodeClaudeProjectDir as W, getDocsTelemetryPath as X, getDocsPaths as Y, getHandoffsDir as Z, DOCS_DIR as _, CACHE_AGENTS_DIR as a, resolveOhmypiExtensionPath as at, DOCS_TELEMETRY_FILE as b, CACHE_SKILLS_DIR as c, sessionFilePath as ct, CLAUDE_MD_TEMPLATES as d, init_paths as et, COMMANDS_DIR as f, DOCS_BUDGET_STATE_FILE as g, COSTS_DIR as h, BIN_DIR as i, piExtensionCandidates as it, PROJECT_PRDS_ACTIVE_SUBDIR as j, PRD_PUBLISHED_DIR as k, CERTS_DIR as l, sessionIdFromFile as lt, CONFIG_FILE as m, ARCHIVES_DIR as n, ohmypiExtensionCandidates as nt, CACHE_MANIFEST as o, resolvePackageRootForDir as ot, CONFIG_DIR as p, getDocsDisableStatePath as q, BACKUPS_DIR as r, packageRoot as rt, CACHE_RULES_DIR as s, resolvePiExtensionPath as st, AGENTS_DIR as t, isDevMode as tt, CLAUDE_DIR as u, DOCS_DISABLE_STATE_FILE as v, LEGACY_RUNTIME_DIRS as w, HANDOFFS_DIR as x, DOCS_INDEX_FILE as y, SYNC_TARGET as z };
223
+ export { getLegacyHome as $, PRD_PUBLISHED_DIR as A, SYNC_TARGET as B, HEARTBEATS_DIR as C, OVERDECK_HOME as D, LOGS_DIR as E, PROJECT_PRDS_SUBDIR as F, encodeClaudeProjectDir as G, TRAEFIK_CERTS_DIR as H, SETTINGS_FILE as I, getDocsDisableStatePath as J, getDocsBudgetStatePath as K, SKILLS_DIR as L, PROJECT_PRDS_ACTIVE_SUBDIR as M, PROJECT_PRDS_COMPLETED_SUBDIR as N, PRDS_DIR as O, PROJECT_PRDS_PLANNED_SUBDIR as P, getHandoffsDir as Q, SYNC_SOURCES as R, HANDOFFS_DIR as S, LEGACY_RUNTIME_DIRS as T, TRAEFIK_DIR as U, TEMPLATES_DIR as V, TRAEFIK_DYNAMIC_DIR as W, getDocsPaths as X, getDocsIndexPath as Y, getDocsTelemetryPath as Z, DOCS_BUDGET_STATE_FILE as _, BIN_DIR as a, piExtensionCandidates as at, DOCS_INDEX_FILE as b, CACHE_RULES_DIR as c, resolvePiExtensionPath as ct, CLAUDE_DIR as d, getOverdeckHome as et, CLAUDE_MD_TEMPLATES as f, COSTS_DIR as g, CONFIG_FILE as h, BACKUPS_DIR as i, packageRoot as it, PROJECT_DOCS_SUBDIR as j, PRD_DRAFTS_DIR as k, CACHE_SKILLS_DIR as l, sessionFilePath as lt, CONFIG_DIR as m, AGENT_SKILLS_DIR as n, isDevMode as nt, CACHE_AGENTS_DIR as o, resolveOhmypiExtensionPath as ot, COMMANDS_DIR as p, getDocsDir as q, ARCHIVES_DIR as r, ohmypiExtensionCandidates as rt, CACHE_MANIFEST as s, resolvePackageRootForDir as st, AGENTS_DIR as t, init_paths as tt, CERTS_DIR as u, sessionIdFromFile as ut, DOCS_DIR as v, INIT_DIRS as w, DOCS_TELEMETRY_FILE as x, DOCS_DISABLE_STATE_FILE as y, SYNC_SOURCES_ROOT as z };
223
224
 
224
- //# sourceMappingURL=paths-3R6b989k.js.map
225
+ //# sourceMappingURL=paths-Bk6hJRH9.js.map
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { $ as getOverdeckHome, et as init_paths } from "./paths-3R6b989k.js";
3
- import { n as init_pty_token, r as readPtyToken, t as PTY_TOKEN_HEADER } from "./pty-token-CScQ32Rj.js";
2
+ import { et as getOverdeckHome, tt as init_paths } from "./paths-Bk6hJRH9.js";
3
+ import { n as init_pty_token, r as readPtyToken, t as PTY_TOKEN_HEADER } from "./pty-token-BZS5GYdG.js";
4
4
  import { existsSync } from "node:fs";
5
5
  import { join } from "node:path";
6
6
  import { appendFile, chmod, mkdir, unlink } from "node:fs/promises";
@@ -1,5 +1,5 @@
1
1
  import { t as __esmMin } from "./chunk-ruWRV7i3.js";
2
- import { $ as getOverdeckHome, et as init_paths } from "./paths-3R6b989k.js";
2
+ import { et as getOverdeckHome, tt as init_paths } from "./paths-Bk6hJRH9.js";
3
3
  import "node:fs";
4
4
  import { join } from "node:path";
5
5
  import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
@@ -40,4 +40,4 @@ var init_pty_token = __esmMin((() => {
40
40
  //#endregion
41
41
  export { writePtyToken as i, init_pty_token as n, readPtyToken as r, PTY_TOKEN_HEADER as t };
42
42
 
43
- //# sourceMappingURL=pty-token-CScQ32Rj.js.map
43
+ //# sourceMappingURL=pty-token-BZS5GYdG.js.map
@@ -0,0 +1,2 @@
1
+ import { n as getSupervisorUrlSync } from "./supervisor-liMgIPDF.js";
2
+ export { getSupervisorUrlSync };
@@ -1,4 +1,4 @@
1
- import { Ar as LOGS_DIR, Jr as init_paths, Or as CONFIG_FILE, jr as OVERDECK_HOME, xr as init_errors, zr as TRAEFIK_DIR } from "./config-yaml-cNOZcEww.js";
1
+ import { Br as TRAEFIK_DIR, Mr as OVERDECK_HOME, Sr as init_errors, Yr as init_paths, jr as LOGS_DIR, kr as CONFIG_FILE } from "./config-yaml-CqaAyn8y.js";
2
2
  import { t as require_toml } from "./toml-CeLDATih.js";
3
3
  import { join } from "node:path";
4
4
  import "effect";
@@ -73,4 +73,4 @@ function getSupervisorUrlSync() {
73
73
  //#endregion
74
74
  export { getSupervisorUrlSync as n, getSupervisorPortSync as t };
75
75
 
76
- //# sourceMappingURL=supervisor-CZMs8s0M.js.map
76
+ //# sourceMappingURL=supervisor-liMgIPDF.js.map