@overdeck/desktop 0.45.22 → 0.45.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +2 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-BH7ac_1G.js → acceptance-criteria-DDCnXF58.js} +5 -5
  4. package/server/{advancing-selfheal-cSvXNZLZ.js → advancing-selfheal-BVwW4qRn.js} +6 -6
  5. package/server/{agent-gc-Dj2gncak.js → agent-gc-CHcnvonI.js} +4 -4
  6. package/server/agent-state-Bc3tzUC8.js +3 -0
  7. package/server/{agent-state-service-DistflNn.js → agent-state-service-BsgWxZuB.js} +5 -5
  8. package/server/{agent-state-service-CsQ07Pxe.js → agent-state-service-D5UGKIJL.js} +1 -1
  9. package/server/{agents-DXdHmRTC.js → agents-EbI0zCJl.js} +4 -4
  10. package/server/agents-wi9NWzs2.js +3 -0
  11. package/server/{archive-planning-Cp_DC1j-.js → archive-planning-BZDgzoEj.js} +1 -1
  12. package/server/{archive-planning-BvDuWNMo.js → archive-planning-Du25Jtst.js} +30 -6
  13. package/server/{artifact-index-jobs-CDBFL4OU.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
  14. package/server/assemble-J2ZZ2C15.js +339 -0
  15. package/server/{backlog-auto-trigger-DmA1IbYf.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
  16. package/server/{behavior-CGj16clS.js → behavior-B3exJ42O.js} +2 -2
  17. package/server/{briefing-freshness-C12WgkaB.js → briefing-freshness-D1wzUIWv.js} +2 -2
  18. package/server/{build-info-BRpqQvNd.js → build-info-CZk_TITh.js} +1 -1
  19. package/server/{build-info-NU3KbXYw.js → build-info-Ie_D0_BT.js} +3 -3
  20. package/server/{checkpoint-manager-CTPjAmtH.js → checkpoint-manager-BI1Wxoku.js} +2 -2
  21. package/server/{checkpoint-manager-rOgT98WY.js → checkpoint-manager-DwbQoqrC.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-B5jFNi2G.js → checkpoints-BJIs5QIA.js} +1 -1
  24. package/server/{checkpoints-BJum14fs.js → checkpoints-CQB1h765.js} +2 -2
  25. package/server/{claude-hooks-provision-BhwWK-TQ.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
  26. package/server/{claude-hooks-provision-D7p5WcKZ.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
  27. package/server/{claude-permissions-nSFKH78M.js → claude-permissions-DNWEVV6z.js} +2 -2
  28. package/server/{claude-settings-overlay-BI_UIke0.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
  29. package/server/{claude-settings-overlay-DHBwjS1X.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
  30. package/server/cli-B86rejVV.js +3 -0
  31. package/server/{cli-CbKNkFE5.js → cli-RoOx5DUf.js} +9 -9
  32. package/server/{cliproxy-Brf_5MuG.js → cliproxy-C8a1vtTU.js} +2 -2
  33. package/server/{cliproxy-bONZDBbC.js → cliproxy-fHfIeiGd.js} +1 -1
  34. package/server/{close-issue-CxReRxIc.js → close-issue-DoOifFIK.js} +5 -5
  35. package/server/{closed-issue-reaper-CQ3kqha7.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
  36. package/server/{closed-issue-reaper-DXP2Xyv3.js → closed-issue-reaper-CktPXo8m.js} +1 -1
  37. package/server/{codex-CbmztVcc.js → codex-BZXGhUVB.js} +27 -8
  38. package/server/codex-GcHuUF-k.js +3 -0
  39. package/server/{codex-parser-jl8AeAmB.js → codex-parser-CFZ1_1Jl.js} +2 -2
  40. package/server/{config-q4Gvd8dq.js → config-BZ0sHTju.js} +2 -2
  41. package/server/{config-DeTsoZdR.js → config-CKxYiCmX.js} +2 -2
  42. package/server/{config-BJKocXKd.js → config-DzV30TOm.js} +1 -1
  43. package/server/{config-yaml-ig8Nwtiw.js → config-yaml-DySPNmKN.js} +77 -194
  44. package/server/{conflict-gate-CFqPVxEg.js → conflict-gate-BaCVrH-N.js} +3 -3
  45. package/server/{conflict-gate-CHU9K1vU.js → conflict-gate-BhAY7TUd.js} +1 -1
  46. package/server/context-layers-BrPmE__h.js +4 -0
  47. package/server/context-layers-igZ4FI4_.js +37 -0
  48. package/server/{control-settings-D_odMIaC.js → control-settings-BQp7_4uD.js} +4 -4
  49. package/server/{conversation-compaction-B6YSRLda.js → conversation-compaction-CgrR8YYp.js} +8 -8
  50. package/server/{conversation-compaction-CN4-5YYt.js → conversation-compaction-eQB5CkOe.js} +1 -1
  51. package/server/{conversation-service-Dq33SYEj.js → conversation-service-BLd3MYsG.js} +1 -1
  52. package/server/{conversation-service-C3avRVEr.js → conversation-service-DPJ71F33.js} +329 -19
  53. package/server/{conversations-bYpM9-kZ.js → conversations-6AfUfbwc.js} +5 -5
  54. package/server/{conversations-H9if0bCQ.js → conversations-CAsJF9kh.js} +1 -1
  55. package/server/{cost-Codk1pc2.js → cost-B2ddP6wq.js} +18 -2
  56. package/server/{cost-wH46-WsJ.js → cost-R-m6Yi-W.js} +3 -3
  57. package/server/{cost-sync-D_cre6WM.js → cost-sync-BsN6ER0n.js} +3 -3
  58. package/server/{dag-CJpgf9A3.js → dag-B1ucnjDU.js} +9 -9
  59. package/server/{dangerous-git-ops-D6AF-Hg_.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
  60. package/server/dashboard-db-worker.js +7 -7
  61. package/server/{deacon-CkT_kznS.js → deacon-CU_cAYSR.js} +406 -607
  62. package/server/{deacon-B8HbQdqU.js → deacon-kiQrb4ZT.js} +3 -3
  63. package/server/{deacon-nudge-log-D6K9K-rE.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
  64. package/server/{deacon-swarm-BryRr6AO.js → deacon-swarm-BXZZ1Z2-.js} +17 -17
  65. package/server/deacon-swarm-C-GwfjJy.js +2 -0
  66. package/server/deacon.js +8 -8
  67. package/server/{deploy-patrol-1IrZxicY.js → deploy-patrol-AiFoP8dw.js} +136 -19
  68. package/server/{deploy-window-wDf4UgHt.js → deploy-window-C3F-tihF.js} +77 -10
  69. package/server/{deploy-window-7ZYHh7Zp.js → deploy-window-DkZraDyj.js} +1 -1
  70. package/server/{dev-supervisor-C7p9kEpc.js → dev-supervisor-bcOWqdQE.js} +2 -2
  71. package/server/{devcontainer-renderer-CNmQy0pL.js → devcontainer-renderer-_d6XhyND.js} +3 -3
  72. package/server/dist-Bzy0y69j.js +3 -0
  73. package/server/{dist-D-Ed5yVw.js → dist-Cb_0uvpS.js} +1 -1
  74. package/server/{docker-BCZ89M9X.js → docker-DcMTFTUC.js} +2 -2
  75. package/server/{dod-DbJLYcHv.js → dod-C6n9RV3G.js} +1 -1
  76. package/server/{ensure-devcontainer-Cs6W9Yzj.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
  77. package/server/{ensure-devcontainer-V5JWaAva.js → ensure-devcontainer-DNi-ono3.js} +4 -4
  78. package/server/{esm-shims-dTeNdq7X.js → esm-shims-OSHAYaS1.js} +1 -1
  79. package/server/{event-store-TnWdydfB.js → event-store-CQL6NeqB.js} +3 -3
  80. package/server/{event-store-CpBGsO6_.js → event-store-EV2cMiXj.js} +1 -1
  81. package/server/{events-Dsuv6qyB.js → events-BTdrdEq8.js} +1 -1
  82. package/server/{events-DSUdR-04.js → events-DTfAe4My.js} +3 -3
  83. package/server/{factory-BMrK4TrE.js → factory-CFibJuaw.js} +50 -13
  84. package/server/{feature-registry-population-B-CI9hgE.js → feature-registry-population-DKZFMbFt.js} +4 -4
  85. package/server/{feature-registry-storage-B972ph_A.js → feature-registry-storage-BdPuLcBX.js} +2 -2
  86. package/server/{features-Bc-Bmiye.js → features-ez2271oH.js} +2 -2
  87. package/server/{feedback-target-DZ-iAnAa.js → feedback-target-7mqqwrX6.js} +7 -7
  88. package/server/{feedback-target-DS6NUuSs.js → feedback-target-CoFDHiM8.js} +1 -1
  89. package/server/{feedback-writer-BXP6g75N.js → feedback-writer-CY5L1lB7.js} +6 -5
  90. package/server/{feedback-writer-Bx5z11mF.js → feedback-writer-D3a22RCd.js} +1 -1
  91. package/server/flywheel-DHrgCphM.js +1084 -0
  92. package/server/flywheel-DzGtWnJ1.js +477 -0
  93. package/server/flywheel-SVF02Jpq.js +2 -0
  94. package/server/{flywheel-merge-order-CTgHeg-W.js → flywheel-merge-order-UU0tiUld.js} +10 -9
  95. package/server/{flywheel-merge-order-CNKAY489.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
  96. package/server/{forge-B1S_KZv4.js → forge-CNFnyqps.js} +2 -2
  97. package/server/forge-DXnS_YFH.js +2 -0
  98. package/server/{from-DpwQ-sc3.js → from-kNxT0bZC.js} +1 -1
  99. package/server/{fts-db-DmAcuCkV.js → fts-db-CE46vDkZ.js} +2 -2
  100. package/server/{fts-operations-7d_RkmWp.js → fts-operations-CqY6zl-i.js} +2 -2
  101. package/server/{git-utils-Cc3FHDKd.js → git-utils-CRw2zLPC.js} +68 -3
  102. package/server/git-utils-D0_yhCgF.js +3 -0
  103. package/server/{github-app-CDPtGF7J.js → github-app-C3QrAUd0.js} +27 -8
  104. package/server/{github-app-CU14oYzP.js → github-app-ClZ2lk8D.js} +1 -1
  105. package/server/{github-client-XjTJbBm7.js → github-client-BnIsSrEN.js} +2 -2
  106. package/server/{github-client-CwBZZ3t7.js → github-client-DfQYVUaw.js} +1 -1
  107. package/server/{github-pr-lookup-CFGeVhqv.js → github-pr-lookup-D16NGsSO.js} +2 -2
  108. package/server/{harness-binary-B2CTcD84.js → harness-binary-DPUi-Pv8.js} +32 -6
  109. package/server/{harness-resolve-D5FVQTmy.js → harness-resolve-3lNZkyT4.js} +18 -9
  110. package/server/{health-events-DREeevle.js → health-events-BBcTYQKU.js} +2 -2
  111. package/server/{health-events-C1whmd58.js → health-events-BDOHby5Q.js} +1 -1
  112. package/server/{hooks-yxRsjk-z.js → hooks-CKZgXlJb.js} +2 -2
  113. package/server/{hooks-B-HItBiS.js → hooks-DPVX1rwQ.js} +1 -1
  114. package/server/{hume-Dz_OymXE.js → hume-Cz8igP9E.js} +2 -2
  115. package/server/hume-ccTf4wTX.js +3 -0
  116. package/server/{idle-stack-reaper-DrCv0OAG.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
  117. package/server/{idle-stack-reaper-Yf34xXxY.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
  118. package/server/{in-flight-guard-BoWm66Kh.js → in-flight-guard-CAAkqPLu.js} +2 -2
  119. package/server/{infra-D4iNWMA5.js → infra-BEqFxlJc.js} +14 -4
  120. package/server/{injection-D7T75Pye.js → injection-C8aiVJrF.js} +191 -183
  121. package/server/{injection-BVNa4MQW.js → injection-CPUIqNhI.js} +1 -1
  122. package/server/{inspect-agent-BXCgNeZ4.js → inspect-agent-BLuJ1AkT.js} +137 -81
  123. package/server/inspect-agent-Brtz0URj.js +2 -0
  124. package/server/{internal-token-C9DdEOKY.js → internal-token-BrcU6qfe.js} +1 -1
  125. package/server/{internal-token-CXsfxslp.js → internal-token-s0-oKybJ.js} +2 -2
  126. package/server/{io-DQR9PMgS.js → io-C9kF1wtJ.js} +160 -184
  127. package/server/{issue-closed-DtmJM0D0.js → issue-closed-CDJk4pIp.js} +7 -7
  128. package/server/{issue-lifecycle-8PSS9Anq.js → issue-lifecycle-B8sZHVHh.js} +1 -1
  129. package/server/{issue-lifecycle-CeyW_HoD.js → issue-lifecycle-ojZAzDBP.js} +22 -22
  130. package/server/{issue-service-singleton-DBZabEl7.js → issue-service-singleton-BvJ09SaR.js} +1 -1
  131. package/server/{issue-service-singleton-D_RVYBuL.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
  132. package/server/{issues-pDW9VUNz.js → issues-BMmP_77e.js} +2 -2
  133. package/server/{jsonl-parser-C3HVNR5d.js → jsonl-parser-BXSlHwEh.js} +3 -3
  134. package/server/{label-cleanup-DPwiZlWo.js → label-cleanup-B0UJwnv5.js} +3 -3
  135. package/server/{label-reconciler-Df1ZduPH.js → label-reconciler-B4iOAjlC.js} +4 -4
  136. package/server/{launcher-generator-COgR2By1.js → launcher-generator-BBWG_SiS.js} +105 -10
  137. package/server/{lifecycle-io-taIb0PoH.js → lifecycle-io-BREGpnLk.js} +37 -37
  138. package/server/lifecycle-io-DPo7x11I.js +3 -0
  139. package/server/{lifecycle-CtPDcZ9u.js → lifecycle-xmBfK2GJ.js} +6 -6
  140. package/server/lifecycle-yPd___5E.js +121 -0
  141. package/server/{linear-client-DsFkIxee.js → linear-client-BsuUvkdA.js} +2 -2
  142. package/server/{linear-client-YwZMDIwQ.js → linear-client-CTskEeT_.js} +1 -1
  143. package/server/memory-fts-worker.js +1 -1
  144. package/server/{merge-BwsyNRJV.js → merge-B1DiziGU.js} +1 -1
  145. package/server/{merge-C1t-bspg.js → merge-CefQNAnq.js} +3 -3
  146. package/server/{merge-agent-DDiIjzk-.js → merge-agent-4WOWlSYA.js} +28 -28
  147. package/server/{merge-agent-B-SnXOoc.js → merge-agent-CKkgIBPB.js} +1 -1
  148. package/server/{merge-batch-Byt-QnEl.js → merge-batch-ClFn2T-y.js} +1 -1
  149. package/server/merge-ops-CR44oU9-.js +2 -0
  150. package/server/{merge-rebase-Cm6fXaZN.js → merge-rebase-BfaTyXsw.js} +2 -2
  151. package/server/merge-set-DJ8-UErs.js +83 -0
  152. package/server/{merge-set-6LEglm6o.js → merge-set-bUqbm3yc.js} +1 -1
  153. package/server/{merge-sync-B95_4in_.js → merge-sync-BJYeOODr.js} +1 -1
  154. package/server/{merge-sync-Do8_q32h.js → merge-sync-VPV28g0g.js} +2 -2
  155. package/server/{merge-train-CKana8EH.js → merge-train-CHopycP0.js} +3 -3
  156. package/server/{merge-train-deps-BgmqwIfA.js → merge-train-deps-D1cOZzy2.js} +4 -4
  157. package/server/{merge-verification-CqnUzGEK.js → merge-verification-BkaOqPsw.js} +4 -4
  158. package/server/{multipart-parser-tdOQDJ3o.js → multipart-parser-duPAfSBw.js} +2 -2
  159. package/server/{no-resume-mode-BWOSZjWd.js → no-resume-mode-Nw29vaFb.js} +11 -8
  160. package/server/node_modules/.package-lock.json +8 -8
  161. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  162. package/server/node_modules/undici/README.md +5 -0
  163. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  164. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  165. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  166. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  167. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  168. package/server/node_modules/undici/docs/docs/index.md +5 -0
  169. package/server/node_modules/undici/lib/core/request.js +1 -1
  170. package/server/node_modules/undici/lib/core/util.js +6 -1
  171. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  172. package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
  173. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  174. package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
  175. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
  176. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  177. package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
  178. package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
  179. package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
  180. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  181. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  182. package/server/node_modules/undici/lib/util/cache.js +49 -7
  183. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  184. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  185. package/server/node_modules/undici/package.json +2 -2
  186. package/server/node_modules/undici/types/client.d.ts +2 -2
  187. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  188. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  189. package/server/{orphan-proposed-reconciler-xklgvNA7.js → orphan-proposed-reconciler-BvKkWMJQ.js} +15 -13
  190. package/server/{orphan-proposed-reconciler-DSvsJ5M7.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
  191. package/server/package-lock.json +9 -9
  192. package/server/package.json +1 -1
  193. package/server/{pan-dir-DOcf6ug3.js → pan-dir-B0c3w0Ya.js} +78 -58
  194. package/server/{paths-DooHpt9p.js → paths-D-xWGHdh.js} +2 -2
  195. package/server/{pickup-CaskQ7j6.js → pickup-DUCLWrJY.js} +17 -16
  196. package/server/{pipeline-membership-1LGRjo-k.js → pipeline-membership-mY3GprlK.js} +186 -67
  197. package/server/{pipeline-notifier-CZsrU_nj.js → pipeline-notifier-BJr8gQX6.js} +1 -1
  198. package/server/{pipeline-notifier-B6FVsYF9.js → pipeline-notifier-BXkJzDC4.js} +2 -2
  199. package/server/{project-pipelines-CtNG_rvs.js → project-pipelines-C0MWUeCU.js} +2 -2
  200. package/server/project-repos-B6GycDh9.js +94 -0
  201. package/server/project-repos-DXKQsc_m.js +3 -0
  202. package/server/projects-vjjcmiN8.js +3 -0
  203. package/server/{prompts-EvhMeeHG.js → prompts-DxzFXuLl.js} +2 -2
  204. package/server/{providers-BDDPULlp.js → providers-qQAwGQDW.js} +7 -7
  205. package/server/{providers-DNSQqy2V.js → providers-u4Ga0jOr.js} +1 -1
  206. package/server/public/assets/{chunk-BO2N2NFS-sym_ufXe.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
  207. package/server/public/assets/{diagram-OG6HWLK6-CQJPBNBu.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
  208. package/server/public/assets/{dist-DukGS2YZ.js → dist-ByIuzMQW.js} +3 -3
  209. package/server/public/assets/{dist-Bio7THQU.js → dist-D7zYSEA6.js} +1 -1
  210. package/server/public/assets/{ganttDiagram-6RSMTGT7-D4lWwte3.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
  211. package/server/public/assets/{highlighted-body-OFNGDK62-CaLboCt5.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
  212. package/server/public/assets/{index-Bwejq-5s.js → index-CWeMerGO.js} +147 -144
  213. package/server/public/assets/index-CenuJ3Cw.css +1 -0
  214. package/server/public/assets/{linear-qUWmMZ-c.js → linear-BBbArIcK.js} +1 -1
  215. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
  216. package/server/public/assets/{pieDiagram-4H26LBE5-C4zYulEm.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
  217. package/server/public/assets/{prod-C8VtLuWC.js → prod-B8vYiu52.js} +4 -4
  218. package/server/public/assets/{quadrantDiagram-W4KKPZXB-qP04zyZC.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
  219. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eMPTX_cG.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
  220. package/server/public/assets/{xychartDiagram-2RQKCTM6-Dme1PIt6.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
  221. package/server/public/index.html +2 -2
  222. package/server/{pull-requests-By_BteaL.js → pull-requests-7N8WKseP.js} +1 -1
  223. package/server/{pull-requests-8z2N1UOV.js → pull-requests-_lHueOHW.js} +13 -11
  224. package/server/{queries-ZABd5aXP.js → queries-CjNIf-Ub.js} +1200 -201
  225. package/server/{rally-i_goYmiA.js → rally-CyWT_lNO.js} +3 -3
  226. package/server/{rally-api-DqKqIMNR.js → rally-api-C8e_1JRi.js} +2 -2
  227. package/server/{rally-api-xHazRk0d.js → rally-api-ClOSd-Tt.js} +1 -1
  228. package/server/{rally-client-COYz1vYR.js → rally-client-lc-nokqr.js} +4 -4
  229. package/server/{rally-client-CGWEHaPd.js → rally-client-sgtVqzNU.js} +1 -1
  230. package/server/rally-zhhtXuDP.js +3 -0
  231. package/server/{reap-terminal-sessions-CaMkFOIH.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
  232. package/server/{reap-terminal-sessions-DG9eiMVz.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
  233. package/server/rebuild-stack-CFvcBHsS.js +4 -0
  234. package/server/{rebuild-stack-JUm0jqYP.js → rebuild-stack-lwtsW0GO.js} +26 -35
  235. package/server/{reconstruct-cache-wU79aCee.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
  236. package/server/record-CN0pj4_5.js +3 -0
  237. package/server/{record-update-D3N6WMFR.js → record-update-bLJxAXH4.js} +1 -1
  238. package/server/record-update-dE1Aw83j.js +310 -0
  239. package/server/{recovery-trip-DkzJSej9.js → recovery-trip-BvRWfUXM.js} +2 -2
  240. package/server/{release-engine-DMINVN8S.js → release-engine-Cx48W7z8.js} +5 -5
  241. package/server/{release-set-DeUSOEHy.js → release-set-CQfuN9-v.js} +3 -3
  242. package/server/{remote-b-c5bOce.js → remote-C_2hasl7.js} +3 -3
  243. package/server/{remote-Dr5kGYSZ.js → remote-ChgimyYa.js} +3 -3
  244. package/server/{remote-agents-Ct_WOyke.js → remote-agents-By1ige5O.js} +6 -6
  245. package/server/{remote-agents-D6O_zETW.js → remote-agents-CA3Ihlxj.js} +1 -1
  246. package/server/{remote-completion-Dca3hAaa.js → remote-completion-fVe9e_3u.js} +12 -12
  247. package/server/resume-BFv1PGpA.js +3 -0
  248. package/server/{review-agent-CThvgK2r.js → review-agent-CIGOQYBD.js} +29 -25
  249. package/server/{review-agent-CCum8sGe.js → review-agent-DNboMyW4.js} +1 -1
  250. package/server/{review-artifacts-CXywD0F2.js → review-artifacts-nRDPuMxd.js} +5 -5
  251. package/server/{review-context-OYfKUprb.js → review-context-2uj-YQ8J.js} +70 -26
  252. package/server/review-status-btEYlaxA.js +3 -0
  253. package/server/{review-status-enrichment-crNAtIpL.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
  254. package/server/{review-status-DFRjDFef.js → review-status-kZj_KyCk.js} +77 -28
  255. package/server/{review-status-sync-DpAMD_WO.js → review-status-sync-BTOpxtTC.js} +10 -5
  256. package/server/{review-status-sync-D60PJWNL.js → review-status-sync-DSDK3OMy.js} +1 -1
  257. package/server/{review-verdict-feedback-CpUZl5aE.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
  258. package/server/{review-verdict-feedback-JImjut0z.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
  259. package/server/{rollup-CZ02qgxk.js → rollup-BKQC7jp4.js} +1 -1
  260. package/server/{rollup-SyuF09e4.js → rollup-FGsKki9R.js} +8 -8
  261. package/server/{scanner-Br0Z5S6R.js → scanner-CnqEZeDy.js} +45 -14
  262. package/server/{sequence-io-fxU0DlwW.js → sequence-io-D909zgeH.js} +4 -4
  263. package/server/{sequencer-agent-B5YC5XVP.js → sequencer-agent-CzkcK6P5.js} +5 -5
  264. package/server/server.js +2961 -919
  265. package/server/{service-Bagb90KZ.js → service-CLeAoU6G.js} +55 -54
  266. package/server/{session-fork-BqQxd-V6.js → session-fork-CHI1XvL9.js} +2 -2
  267. package/server/{session-history-XdS0JKp3.js → session-history-BT3IvqhC.js} +4 -4
  268. package/server/settings-66A6uvIA.js +2 -0
  269. package/server/{settings-BNbocWOg.js → settings-BTMvpNFU.js} +3 -3
  270. package/server/{settings-uLc6DEYI.js → settings-C0zgxOGf.js} +2 -2
  271. package/server/{shadow-engineering-D4X_s3fA.js → shadow-engineering-BJfgm-hX.js} +2 -2
  272. package/server/{shadow-state-C_NkP-sa.js → shadow-state-7a-524T8.js} +2 -2
  273. package/server/{shadow-state-CbvsN3qG.js → shadow-state-DnDyjujH.js} +1 -1
  274. package/server/{shadow-utils-CYMRPeRT.js → shadow-utils-Db3oroFG.js} +2 -2
  275. package/server/{ship-log-__QtAFXG.js → ship-log-D9MlVzYU.js} +1 -1
  276. package/server/{smart-compaction-jdMkG1vo.js → smart-compaction-CV2ukKND.js} +1 -1
  277. package/server/{smart-compaction-CLZOWin1.js → smart-compaction-KCYScAU1.js} +7 -7
  278. package/server/{spawn-planning-session-D5OXo8pT.js → spawn-planning-session-DKpdFyOC.js} +35 -27
  279. package/server/{spawn-planning-session-8D6mE033.js → spawn-planning-session-qUC2VWu3.js} +1 -1
  280. package/server/{specialist-completion-CqmduO92.js → specialist-completion-Ky9wCDpb.js} +1 -1
  281. package/server/{specialist-context-CJ-QjFR-.js → specialist-context-Bn3dCGS2.js} +5 -5
  282. package/server/{specialist-handoff-logger-Dnjlwt7g.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
  283. package/server/{specialist-logs-CQnKzuZs.js → specialist-logs-C5p8G7tx.js} +3 -3
  284. package/server/{specialists-Bg9v4z3F.js → specialists-CC4r-c2s.js} +1015 -460
  285. package/server/{specialists-D0gGXMZx.js → specialists-CShuVGWT.js} +1 -1
  286. package/server/specialists-DM6bWjsi.js +3 -0
  287. package/server/{specialists-CwZHb5cb.js → specialists-jiuuyVkp.js} +66 -74
  288. package/server/specs-C8Wsn2XO.js +3 -0
  289. package/server/{src-BMMoA_ba.js → src-CXmtj0im.js} +6 -6
  290. package/server/{src-Bqdtd6po.js → src-CdmnTM2m.js} +5 -5
  291. package/server/{src-k039WVYY.js → src-DtcUOZCq.js} +112 -18
  292. package/server/stack-health-Bn3o8FBX.js +3 -0
  293. package/server/{stack-health-C-ifC7b0.js → stack-health-DxSdG9cW.js} +63 -9
  294. package/server/{stale-task-claims-L7pJkQFL.js → stale-task-claims-KJKxxiiQ.js} +4 -4
  295. package/server/{staleness-_Tr-GwdA.js → staleness-CT34nwr9.js} +1 -1
  296. package/server/{staleness-BID1BKdr.js → staleness-DPm7ClwA.js} +15 -3
  297. package/server/{state-home-CONQvZR0.js → state-home-Cn_Qu8IX.js} +96 -44
  298. package/server/{state-migrate-BeBW0KXA.js → state-migrate-BGg2ZaOt.js} +12 -3
  299. package/server/{stuck-remediation-CKnIryGT.js → stuck-remediation-DYuPRYYw.js} +307 -26
  300. package/server/{stuck-remediation-CsGD5Ksb.js → stuck-remediation-s9_2qfi6.js} +1 -1
  301. package/server/{substrate-bug-weights-service-CpIZILj9.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
  302. package/server/{summary-fork-bX6ax6X7.js → summary-fork-D1RAk9rJ.js} +78 -12
  303. package/server/{summary-fork-agEMsPSo.js → summary-fork-DpcxN9tf.js} +2 -2
  304. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
  305. package/server/supervisor/pty-supervisor.js +2 -1
  306. package/server/supervisor/pty-token-x-ea28Us.js +43 -0
  307. package/server/supervisor-FTJAIsAK.js +2 -0
  308. package/server/{supervisor-Ctt4eRYz.js → supervisor-wM4ooB5O.js} +3 -3
  309. package/server/{swarm-readiness-DdmJVX7y.js → swarm-readiness-DlP_UjHq.js} +4 -4
  310. package/server/{system-prerequisites-DSXBvffY.js → system-prerequisites-DUDj1YHf.js} +56 -29
  311. package/server/{teardown-workspace-DDCf5n-a.js → teardown-workspace-DeTTImn-.js} +15 -15
  312. package/server/{test-agent-queue-BJZ9Nfcc.js → test-agent-queue-MbxX5vqq.js} +7 -7
  313. package/server/{test-verdict-Cp5tljlJ.js → test-verdict-bWYBtqBg.js} +1 -1
  314. package/server/{test-verdict-D_-sXIz_.js → test-verdict-gscuksPv.js} +1 -1
  315. package/server/{tldr-daemon-B8_oT5gx.js → tldr-daemon-BYFkts95.js} +1 -1
  316. package/server/{tldr-daemon-BQFmmFp0.js → tldr-daemon-C-69c3OI.js} +2 -2
  317. package/server/tmux-B6z7h_vZ.js +3 -0
  318. package/server/{tmux-L5LgvGLp.js → tmux-R7N7y-Mh.js} +76 -44
  319. package/server/{token-BkQLy4yS.js → token-BK6t8BIT.js} +2 -2
  320. package/server/token-util-DuPuNriz.js +3 -0
  321. package/server/{token-util-DI8sGlmF.js → token-util-DxXu-vd1.js} +1 -1
  322. package/server/{tracker-config-DdT-nUAM.js → tracker-config-G6latr8C.js} +2 -2
  323. package/server/{tracker-utils-DV3h1FYG.js → tracker-utils-B4ylXZQK.js} +1 -1
  324. package/server/{tracker-utils-CawsPSS2.js → tracker-utils-DHv5pSDT.js} +2 -2
  325. package/server/{traefik-connect-C6mJckNs.js → traefik-connect-Df2uXPsQ.js} +1 -1
  326. package/server/{tunnel-IdK1iTHx.js → tunnel-CDVKJpRv.js} +3 -3
  327. package/server/{tunnel-BIFl98rc.js → tunnel-DGdUkGoZ.js} +1 -1
  328. package/server/{types-7-GnJn0t.js → types-5M0lupud.js} +1 -1
  329. package/server/{uat-train-0Ujk8GCv.js → uat-train-B05BWkp-.js} +1 -1
  330. package/server/{uat-train-j0cPeMSj.js → uat-train-DDSrSoV1.js} +28 -28
  331. package/server/validate-IfDGkaVR.js +177 -0
  332. package/server/{validation-DcAgXTQp.js → validation-CC9OPqJZ.js} +1 -1
  333. package/server/{validation-CabEISJT.js → validation-Dw1pzDzr.js} +259 -9
  334. package/server/{verification-artifact-Ck1tefmz.js → verification-artifact-B3itKTxu.js} +1 -1
  335. package/server/{verification-artifact-BuTA1QbL.js → verification-artifact-TVFSz_q1.js} +1 -1
  336. package/server/{verification-runner-DlJezzef.js → verification-runner-BW4HOKAz.js} +1 -1
  337. package/server/{verification-runner-FiuAZ-H2.js → verification-runner-CkgX6EtI.js} +174 -124
  338. package/server/{vtt-parser-BnRsYzcz.js → vtt-parser-DYPbKcIJ.js} +1 -1
  339. package/server/{work-agent-prompt-DLthEPAq.js → work-agent-prompt-Du8Vh2aJ.js} +13 -13
  340. package/server/workflows-BQu4RFQ-.js +2 -0
  341. package/server/{workflows-BZNNYkGC.js → workflows-mbQzh6mQ.js} +39 -77
  342. package/server/{workspace-3IC-UkAi.js → workspace--8tnhDI0.js} +1 -1
  343. package/server/{workspace-D9ppycdg.js → workspace-BPUws1-_.js} +3 -3
  344. package/server/{workspace-config-Bigl_-Lk.js → workspace-config-CIVWZOQr.js} +1 -1
  345. package/server/{workspace-manager-ClkCIWTe.js → workspace-manager-CBhNdzE4.js} +76 -18
  346. package/server/workspace-manager-CWT55qeI.js +3 -0
  347. package/server/{workspace-metadata-BE0efUv_.js → workspace-metadata-BzHnwwX4.js} +1 -1
  348. package/server/{workspace-metadata-tiSRIWJP.js → workspace-metadata-_WygnyoX.js} +2 -2
  349. package/server/{workspaces-CFPcL0vl.js → workspaces-Do_9J0LQ.js} +309 -124
  350. package/sync-sources/agents/pan-inspect-agent.md +1 -1
  351. package/sync-sources/agents/pan-merge-agent.md +1 -1
  352. package/sync-sources/agents/pan-planning-agent.md +4 -4
  353. package/sync-sources/agents/pan-work-agent.md +1 -1
  354. package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
  355. package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
  356. package/sync-sources/hooks/record-cost-event.js +369 -75
  357. package/sync-sources/hooks/session-start-hook +7 -0
  358. package/sync-sources/hooks/work-agent-stop-hook +1 -1
  359. package/sync-sources/rules/per-bead-durability.md +1 -1
  360. package/sync-sources/rules/prd-authoring.md +1 -1
  361. package/sync-sources/skills/feature-work/SKILL.md +1 -1
  362. package/sync-sources/skills/okf/README.md +11 -3
  363. package/sync-sources/skills/okf/SKILL.md +12 -1
  364. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  365. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  366. package/sync-sources/skills/pan/SKILL.md +2 -2
  367. package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
  368. package/sync-sources/skills/pan-approve/SKILL.md +1 -1
  369. package/sync-sources/skills/pan-close/SKILL.md +1 -1
  370. package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
  371. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  372. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  373. package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
  374. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  375. package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
  376. package/sync-sources/skills/pan-plan/SKILL.md +6 -6
  377. package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
  378. package/sync-sources/skills/pan-recap/SKILL.md +2 -2
  379. package/sync-sources/skills/pan-review/SKILL.md +1 -1
  380. package/sync-sources/skills/pan-start/SKILL.md +7 -3
  381. package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
  382. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  383. package/sync-sources/skills/pan-task/SKILL.md +2 -2
  384. package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
  385. package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
  386. package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
  387. package/sync-sources/skills/plan/SKILL.md +11 -11
  388. package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
  389. package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
  390. package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
  391. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  392. package/server/agent-state-Co5Sy2Fw.js +0 -3
  393. package/server/agents-DyHKlq1I.js +0 -3
  394. package/server/cli-BRORS9qY.js +0 -3
  395. package/server/codex-DNyiQDKW.js +0 -3
  396. package/server/context-layers-15gDOk20.js +0 -165
  397. package/server/context-layers-DlQKkHH2.js +0 -4
  398. package/server/deacon-swarm-CV54eNmU.js +0 -2
  399. package/server/dist-j64RzSrQ.js +0 -3
  400. package/server/flywheel-6WHU4O7A.js +0 -207
  401. package/server/flywheel-COR0mbRI.js +0 -522
  402. package/server/flywheel-Ctr5uuvo.js +0 -2
  403. package/server/forge-B0_opi-V.js +0 -2
  404. package/server/git-utils-CsKGnzFA.js +0 -3
  405. package/server/hume-BmhvfVbV.js +0 -3
  406. package/server/inspect-agent-Dq0z1k3H.js +0 -2
  407. package/server/layers-Cp1To4L8.js +0 -93
  408. package/server/lifecycle-io-DmY2qwCn.js +0 -3
  409. package/server/merge-blockers-BYjeXrVN.js +0 -41
  410. package/server/merge-ops-DwWCkSgo.js +0 -2
  411. package/server/merge-set-DiISXcC-.js +0 -139
  412. package/server/projects-BKkwpH6q.js +0 -3
  413. package/server/public/assets/index-Bdc4V9ba.css +0 -1
  414. package/server/public/assets/mermaid-GHXKKRXX-B5v_r7cI.js +0 -1
  415. package/server/rally-OSJXdiHK.js +0 -3
  416. package/server/rebuild-stack-CKjJAI8L.js +0 -3
  417. package/server/record-rwK-nKv_.js +0 -3
  418. package/server/record-update-Crz74r-6.js +0 -168
  419. package/server/resume-wZZsWtzz.js +0 -3
  420. package/server/review-status-Bnh-rdkY.js +0 -3
  421. package/server/settings-BlUsVaUc.js +0 -2
  422. package/server/specialists-Dqe6_HE5.js +0 -3
  423. package/server/specs-BhOKBzqk.js +0 -3
  424. package/server/stack-health-Bd06frFn.js +0 -3
  425. package/server/supervisor-COVHrBTg.js +0 -2
  426. package/server/tmux-BAvtac_u.js +0 -3
  427. package/server/token-util-BArZLN6w.js +0 -3
  428. package/server/workflows-C4mR0Reb.js +0 -2
  429. package/server/workspace-manager-B1WOfKvB.js +0 -3
@@ -349,6 +349,8 @@ CREATE TABLE `review_status` (
349
349
  `strike_ready_at` integer,
350
350
  `strike_landing_state` text,
351
351
  `strike_recovery_count` integer DEFAULT 0,
352
+ `strike_transport_retry_count` integer,
353
+ `strike_next_attempt_at` integer,
352
354
  `strike_landing_attempts` text
353
355
  );
354
356
  --> statement-breakpoint
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overdeck/desktop",
3
- "version": "0.45.22",
3
+ "version": "0.45.24",
4
4
  "description": "Overdeck Command Deck — AI agent monitoring desktop app",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,9 +1,9 @@
1
- import { m as readWorkspacePlanSync, o as init_io, v as init_types, y as subItemsOf } from "./io-DQR9PMgS.js";
1
+ import { m as readWorkspacePlanSync, o as init_io, v as init_types, y as subItemsOf } from "./io-C9kF1wtJ.js";
2
2
  import "effect";
3
- //#region ../../lib/vbrief/acceptance-criteria.ts
3
+ //#region ../../lib/xbrief/acceptance-criteria.ts
4
4
  init_io();
5
5
  init_types();
6
- function getVBriefACStatusSync(workspacePath) {
6
+ function getXBriefACStatusSync(workspacePath) {
7
7
  const doc = readWorkspacePlanSync(workspacePath);
8
8
  if (!doc) return null;
9
9
  const allCriteria = extractACFromDocument(doc);
@@ -57,6 +57,6 @@ function extractACFromDocument(doc) {
57
57
  return criteria;
58
58
  }
59
59
  //#endregion
60
- export { getVBriefACStatusSync as n, extractACFromDocument as t };
60
+ export { getXBriefACStatusSync as n, extractACFromDocument as t };
61
61
 
62
- //# sourceMappingURL=acceptance-criteria-BH7ac_1G.js.map
62
+ //# sourceMappingURL=acceptance-criteria-DDCnXF58.js.map
@@ -1,8 +1,8 @@
1
- import { D as killSession, j as listSessionNames, w as init_tmux } from "./tmux-L5LgvGLp.js";
2
- import { c as init_review_status, s as getReviewStatusSync, u as loadReviewStatuses } from "./review-status-DFRjDFef.js";
3
- import { Gn as saveAgentStateSync, Rn as markAgentStoppedState, jn as getAgentStateSync, s as init_agents } from "./queries-ZABd5aXP.js";
4
- import { c as logDeaconEventSync, o as init_persistent_logger } from "./session-history-XdS0JKp3.js";
5
- import { a as selectMergedAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-DG9eiMVz.js";
1
+ import { D as killSession, M as listSessionNames, w as init_tmux } from "./tmux-R7N7y-Mh.js";
2
+ import { c as getReviewStatusSync, d as loadReviewStatuses, l as init_review_status } from "./review-status-kZj_KyCk.js";
3
+ import { Yn as getAgentStateSync, b as init_agents, lr as saveAgentStateSync, nr as markAgentStoppedState } from "./queries-CjNIf-Ub.js";
4
+ import { c as logDeaconEventSync, o as init_persistent_logger } from "./session-history-BT3IvqhC.js";
5
+ import { a as selectMergedAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-BtHPo6Xc.js";
6
6
  import { Effect } from "effect";
7
7
  //#region ../../lib/cloister/advancing-selfheal.ts
8
8
  init_agents();
@@ -135,4 +135,4 @@ async function runBootAdvancingSelfHeal(deps = defaultBootAdvancingSelfHealDeps)
135
135
  //#endregion
136
136
  export { checkMergedAdvancingSessions, markAdvancingSessionStopped, reconcileInFlightJournals, runBootAdvancingSelfHeal };
137
137
 
138
- //# sourceMappingURL=advancing-selfheal-cSvXNZLZ.js.map
138
+ //# sourceMappingURL=advancing-selfheal-BVwW4qRn.js.map
@@ -1,6 +1,6 @@
1
- import { Lt as readIssueRecordForWorkspaceSync, Nt as init_record } from "./config-yaml-ig8Nwtiw.js";
2
- import { c as listAllAgentsSync, l as removeAgentSync, o as init_agents } from "./agents-DXdHmRTC.js";
3
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-CawsPSS2.js";
1
+ import { Mt as readIssueRecordForWorkspaceSync, Ot as init_record } from "./config-yaml-DySPNmKN.js";
2
+ import { c as listAllAgentsSync, l as removeAgentSync, o as init_agents } from "./agents-EbI0zCJl.js";
3
+ import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-DHv5pSDT.js";
4
4
  import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-BL_-3Yt8.js";
5
5
  import { readdir, readlink } from "fs/promises";
6
6
  import { execFile } from "child_process";
@@ -112,4 +112,4 @@ function pruneTerminalStoppedAgents() {
112
112
  //#endregion
113
113
  export { pidsWithCwdUnder as a, sweepAutoCloseOutCache as i, pruneTerminalStoppedAgents as n, getAutoCloseOutCanonicalState as r, pruneStoppedAgentsForIssue as t };
114
114
 
115
- //# sourceMappingURL=agent-gc-Dj2gncak.js.map
115
+ //# sourceMappingURL=agent-gc-CHcnvonI.js.map
@@ -0,0 +1,3 @@
1
+ import { Bn as clearAgentPausedSync, Hn as clearAgentTroubledSync, Xn as init_agent_state, Yn as getAgentStateSync, dr as setAgentPausedSync } from "./queries-CjNIf-Ub.js";
2
+ init_agent_state();
3
+ export { clearAgentPausedSync, clearAgentTroubledSync, getAgentStateSync, setAgentPausedSync };
@@ -1,6 +1,6 @@
1
- import { a as init_event_store, i as initEventStore } from "./event-store-TnWdydfB.js";
2
- import { d as applyEvent, t as init_src, u as INITIAL_READ_MODEL_STATE } from "./src-k039WVYY.js";
3
- import { f as markAgentStateServiceInProcess, l as getRuntimeSnapshot$1, p as setAgentRuntimeMirror, r as init_session_history, t as appendSessionIdToHistory, u as init_agent_runtime_mirror } from "./session-history-XdS0JKp3.js";
1
+ import { a as init_event_store, i as initEventStore } from "./event-store-CQL6NeqB.js";
2
+ import { m as applyEvent, p as INITIAL_READ_MODEL_STATE, t as init_src } from "./src-DtcUOZCq.js";
3
+ import { f as markAgentStateServiceInProcess, l as getRuntimeSnapshot$1, p as setAgentRuntimeMirror, r as init_session_history, t as appendSessionIdToHistory, u as init_agent_runtime_mirror } from "./session-history-BT3IvqhC.js";
4
4
  import { Context, Effect, Layer, SubscriptionRef } from "effect";
5
5
  //#region services/agent-state-service.ts
6
6
  /**
@@ -58,7 +58,7 @@ const AgentStateServiceLive = Layer.effect(AgentStateService, Effect.gen(functio
58
58
  const store = yield* Effect.promise(() => initEventStore());
59
59
  const ref = yield* SubscriptionRef.make({});
60
60
  const seedFromSources = Effect.gen(function* () {
61
- const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-wU79aCee.js"));
61
+ const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-C3Ui7ojV.js"));
62
62
  const seeded = (yield* Effect.promise(() => reconstructCacheAuto())).agentRuntimeById;
63
63
  if (Object.keys(seeded).length > 0) {
64
64
  yield* SubscriptionRef.update(ref, (current) => mergeRuntimeBySequence(current, seeded));
@@ -107,4 +107,4 @@ function applyEventToRef(ref, ev) {
107
107
  //#endregion
108
108
  export { AgentStateServiceLive as n, getRuntimeSnapshot as r, AgentStateService as t };
109
109
 
110
- //# sourceMappingURL=agent-state-service-DistflNn.js.map
110
+ //# sourceMappingURL=agent-state-service-BsgWxZuB.js.map
@@ -1,2 +1,2 @@
1
- import { n as AgentStateServiceLive, r as getRuntimeSnapshot, t as AgentStateService } from "./agent-state-service-DistflNn.js";
1
+ import { n as AgentStateServiceLive, r as getRuntimeSnapshot, t as AgentStateService } from "./agent-state-service-BsgWxZuB.js";
2
2
  export { AgentStateService, AgentStateServiceLive, getRuntimeSnapshot };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ii as init_paths, ri as getOverdeckHome } from "./config-yaml-ig8Nwtiw.js";
3
- import { _ as integer, a as EventBus, b as and, c as Records, d as getOverdeckDatabaseSync, f as init_infra, h as text, l as Tmux, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-D4iNWMA5.js";
4
- import { n as init_issues, t as IssueId } from "./issues-pDW9VUNz.js";
2
+ import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DySPNmKN.js";
3
+ import { _ as integer, a as EventBus, b as and, c as Records, d as getOverdeckDatabaseSync, f as init_infra, h as text, l as Tmux, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-BEqFxlJc.js";
4
+ import { n as init_issues, t as IssueId } from "./issues-BMmP_77e.js";
5
5
  import { join } from "node:path";
6
6
  import { Context, Effect, Layer, Schema } from "effect";
7
7
  import { readFileSync, readdirSync, rmSync, statSync } from "node:fs";
@@ -972,4 +972,4 @@ var init_agents = __esmMin((() => {
972
972
  //#endregion
973
973
  export { countAgentsByStatusRole as a, listAllAgentsSync as c, isTerminalIssueStage as d, countAgentsByStatus as i, removeAgentSync as l, AgentsResolverLive as n, init_agents as o, backfillAgentsSync as r, listAgentIdsByPrefixSync as s, AgentsResolver as t, getIssueStageSync as u };
974
974
 
975
- //# sourceMappingURL=agents-DXdHmRTC.js.map
975
+ //# sourceMappingURL=agents-EbI0zCJl.js.map
@@ -0,0 +1,3 @@
1
+ import { $ as appendActivity, $n as isRole, $t as OHMYPI_AGENT_READY_TIMEOUT_SECONDS, An as buildDefaultResumeContinueMessage, Ar as saveAgentRuntimeState, At as deliverAgentPermissionDecision, B as detectCrashedAgents, Bn as clearAgentPausedSync, Bt as assertWorkspaceStackHealthyForSpawn, C as replayCrashedStandingAgent, Cn as getProviderEnvForModel, Cr as normalizeAgentId, Dr as getAgentRuntimeState, Er as waitForReadySignal, Fn as writeChannelsBridgeMcpConfig, G as resumeAgent, Gn as getAgentDir, Gt as transitionIssueToInProgress, H as restartAgent, Hn as clearAgentTroubledSync, In as GOVERNOR_SLOT_PAUSE_REASON_PREFIX, Jn as getAgentStateFilePath, Kt as transitionIssueToInReview, Ln as SESSION_EXITED_BEFORE_KICKOFF, Mn as decideChannelsForWorkAgent, Mt as deliverResumeMessageWithTranscriptConfirmation, Nn as decideSupervisorForWorkAgent, Nt as setAgentDeliveryMethod, Or as getAgentRuntimeStateSync, Pn as dismissDevChannelsDialog, Qn as isAgentTroubled, Rn as __testInternals, S as contextWindowForModel, Sn as determineModel, Sr as isQualifiedAgentId, T as shouldReplayCompactAtTierRunBoundary, Tn as getProviderTmuxFlags, Tr as waitForAgentIdle, U as buildCompactRecoverySeed, Un as clearYieldForResumeSync, V as recoverAgent, Vn as clearAgentTroubled, Vt as buildAgentLaunchConfig, Wt as retrieveSpawnTimeMemoryContext, X as messageAgent, Yn as getAgentStateSync, Zn as isAgentPaused, a as listRunningAgentsSync, an as getProviderAuthMode, ar as recordAgentFailureSync, at as saveSessionId, b as init_agents, bn as buildCavemanExports, cn as injectPiConversationMemory, cr as saveAgentState, dn as waitForPromptReady, dr as setAgentPausedSync, en as describeOhmypiSpawnFailure, et as getActivity, fr as setAgentYieldedSync, ft as stopAgent, i as listRunningAgents, ir as recordAgentFailure, jn as buildResumeContinueMessage, jt as deliverInitialPromptWithRetry, kt as deliverAgentMessage, ln as roleAgentDefinitionPath, lr as saveAgentStateSync, lt as spawnAgent, mr as writeAgentStateJsonSync, nn as getAgentRuntimeBaseCommand, nr as markAgentStoppedState, nt as getLatestSessionIdSync, o as warnOnBareNumericIssueIds, on as getRoleRuntimeBaseCommand, pr as wipeAgentStateDirs, pt as stopAgentSync, qn as getAgentState, r as listAgentStates, rr as markAgentTroubled, rt as getSessionId, sr as resetAgentFailureCount, t as dropLegacyAgentStatesMissingRoleAsync, tr as markAgentRunningState, tt as getLatestSessionId, ur as setAgentPaused, ut as spawnRun, w as replayStandingAgent, wn as getProviderExportsForModel, wr as resolveAgentTargetSync, x as compactAtTierRunBoundary, xn as buildSpawnEnvForModel, xr as clearReadySignal, z as autoRecoverAgents, zn as clearAgentPaused } from "./queries-CjNIf-Ub.js";
2
+ init_agents();
3
+ export { GOVERNOR_SLOT_PAUSE_REASON_PREFIX, OHMYPI_AGENT_READY_TIMEOUT_SECONDS, SESSION_EXITED_BEFORE_KICKOFF, __testInternals, appendActivity, assertWorkspaceStackHealthyForSpawn, autoRecoverAgents, buildAgentLaunchConfig, buildCavemanExports, buildCompactRecoverySeed, buildDefaultResumeContinueMessage, buildResumeContinueMessage, buildSpawnEnvForModel, clearAgentPaused, clearAgentPausedSync, clearAgentTroubled, clearAgentTroubledSync, clearReadySignal, clearYieldForResumeSync, compactAtTierRunBoundary, contextWindowForModel, decideChannelsForWorkAgent, decideSupervisorForWorkAgent, deliverAgentMessage, deliverAgentPermissionDecision, deliverInitialPromptWithRetry, deliverResumeMessageWithTranscriptConfirmation, describeOhmypiSpawnFailure, detectCrashedAgents, determineModel, dismissDevChannelsDialog, dropLegacyAgentStatesMissingRoleAsync, getActivity, getAgentDir, getAgentRuntimeBaseCommand, getAgentRuntimeState, getAgentRuntimeStateSync, getAgentState, getAgentStateFilePath, getAgentStateSync, getLatestSessionId, getLatestSessionIdSync, getProviderAuthMode, getProviderEnvForModel, getProviderExportsForModel, getProviderTmuxFlags, getRoleRuntimeBaseCommand, getSessionId, injectPiConversationMemory, isAgentPaused, isAgentTroubled, isQualifiedAgentId, isRole, listAgentStates, listRunningAgents, listRunningAgentsSync, markAgentRunningState, markAgentStoppedState, markAgentTroubled, messageAgent, normalizeAgentId, recordAgentFailure, recordAgentFailureSync, recoverAgent, replayCrashedStandingAgent, replayStandingAgent, resetAgentFailureCount, resolveAgentTargetSync, restartAgent, resumeAgent, retrieveSpawnTimeMemoryContext, roleAgentDefinitionPath, saveAgentRuntimeState, saveAgentState, saveAgentStateSync, saveSessionId, setAgentDeliveryMethod, setAgentPaused, setAgentPausedSync, setAgentYieldedSync, shouldReplayCompactAtTierRunBoundary, spawnAgent, spawnRun, stopAgent, stopAgentSync, transitionIssueToInProgress, transitionIssueToInReview, waitForAgentIdle, waitForPromptReady, waitForReadySignal, warnOnBareNumericIssueIds, wipeAgentStateDirs, writeAgentStateJsonSync, writeChannelsBridgeMcpConfig };
@@ -1,3 +1,3 @@
1
- import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-BvDuWNMo.js";
1
+ import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-Du25Jtst.js";
2
2
  init_archive_planning();
3
3
  export { findWorkspacePath };
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Gr as PROJECT_PRDS_PLANNED_SUBDIR, Hr as PROJECT_DOCS_SUBDIR, Kr as PROJECT_PRDS_SUBDIR, Nr as ARCHIVES_DIR, Ur as PROJECT_PRDS_ACTIVE_SUBDIR, Wr as PROJECT_PRDS_COMPLETED_SUBDIR, ii as init_paths } from "./config-yaml-ig8Nwtiw.js";
2
+ import { Dr as PROJECT_PRDS_COMPLETED_SUBDIR, Er as PROJECT_PRDS_ACTIVE_SUBDIR, Or as PROJECT_PRDS_PLANNED_SUBDIR, Tr as PROJECT_DOCS_SUBDIR, Vr as init_paths, gr as ARCHIVES_DIR, kr as PROJECT_PRDS_SUBDIR } from "./config-yaml-DySPNmKN.js";
3
3
  import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, s as PAN_FEEDBACK_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-hraoaQIp.js";
4
- import { t as init_pan_dir } from "./pan-dir-DOcf6ug3.js";
5
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-7-GnJn0t.js";
4
+ import { a as getDraftPath, o as getIssueDraftPath, t as init_pan_dir } from "./pan-dir-B0c3w0Ya.js";
5
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-5M0lupud.js";
6
6
  import { Effect } from "effect";
7
7
  import { existsSync, readdirSync } from "fs";
8
8
  import { dirname, join } from "path";
@@ -66,6 +66,30 @@ function findPrdAtStatusSync(projectPath, issueId, status) {
66
66
  for (const c of candidates) if (existsSync(c.path)) return c;
67
67
  return null;
68
68
  }
69
+ function findDraftPrdSync(projectPath, issueId) {
70
+ const candidates = [getIssueDraftPath(projectPath, issueId), getDraftPath(projectPath, `${issueId.toLowerCase()}.md`)];
71
+ for (const path of candidates) if (existsSync(path)) return {
72
+ path,
73
+ format: "pan-draft",
74
+ status: "draft"
75
+ };
76
+ return null;
77
+ }
78
+ /**
79
+ * Find a PRD across all lifecycle statuses, in priority order:
80
+ * active → completed → planned → draft. Returns the first match or null.
81
+ */
82
+ function findPrdAnywhereSync(projectPath, issueId) {
83
+ for (const status of [
84
+ "active",
85
+ "completed",
86
+ "planned"
87
+ ]) {
88
+ const loc = findPrdAtStatusSync(projectPath, issueId, status);
89
+ if (loc) return loc;
90
+ }
91
+ return findDraftPrdSync(projectPath, issueId);
92
+ }
69
93
  var STATUS_DIRS;
70
94
  var init_prd_locations = __esmMin((() => {
71
95
  init_paths();
@@ -168,7 +192,7 @@ async function movePrdImpl(ctx, opts) {
168
192
  }
169
193
  await execAsync(`git commit -m "Move ${ctx.issueId} PRD to completed"`, { cwd: ctx.projectPath });
170
194
  if (pushToRemote) await execAsync("git push", { cwd: ctx.projectPath });
171
- return stepOk(step, [`Moved ${formatLabel} from active/ to completed/ via git mv${resolvedSidecarSource ? " (with vBRIEF sidecar)" : ""}`]);
195
+ return stepOk(step, [`Moved ${formatLabel} from active/ to completed/ via git mv${resolvedSidecarSource ? " (with xBRIEF sidecar)" : ""}`]);
172
196
  } catch {
173
197
  try {
174
198
  await cp(source.path, dest, { recursive: true });
@@ -264,6 +288,6 @@ var init_archive_planning = __esmMin((() => {
264
288
  execAsync = promisify(exec);
265
289
  }));
266
290
  //#endregion
267
- export { inferBranchFromWorkspace as a, findPrdAtStatusSync as c, findWorkspacePath as i, init_prd_locations as l, archiveWorkspaceArtifacts as n, init_archive_planning as o, findAllWorkspacePaths as r, movePrd as s, archivePlanning as t };
291
+ export { inferBranchFromWorkspace as a, findPrdAnywhereSync as c, findWorkspacePath as i, init_prd_locations as l, archiveWorkspaceArtifacts as n, init_archive_planning as o, findAllWorkspacePaths as r, movePrd as s, archivePlanning as t };
268
292
 
269
- //# sourceMappingURL=archive-planning-BvDuWNMo.js.map
293
+ //# sourceMappingURL=archive-planning-Du25Jtst.js.map
@@ -1,4 +1,4 @@
1
- import { ii as init_paths, ri as getOverdeckHome } from "./config-yaml-ig8Nwtiw.js";
1
+ import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DySPNmKN.js";
2
2
  import { n as openDatabase, t as init_driver } from "./driver-CKVGi51s.js";
3
3
  import { dirname, join } from "node:path";
4
4
  import { mkdirSync } from "node:fs";
@@ -208,4 +208,4 @@ function unshareArtifactBySlugJob(slug) {
208
208
  //#endregion
209
209
  export { getArtifactBySlugJob, listArtifactsForWorkspaceOrIssueJob, unshareArtifactBySlugJob };
210
210
 
211
- //# sourceMappingURL=artifact-index-jobs-CDBFL4OU.js.map
211
+ //# sourceMappingURL=artifact-index-jobs-CbEDfCDu.js.map
@@ -0,0 +1,339 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { Br as getOverdeckHome, Vr as init_paths, jr as SYNC_SOURCES } from "./config-yaml-DySPNmKN.js";
3
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
4
+ import { join } from "path";
5
+ //#region ../../lib/context-layers/layers.ts
6
+ /**
7
+ * Context layer model (PAN-1201).
8
+ *
9
+ * Three layers of context compose at sync time:
10
+ *
11
+ * global — ~/.overdeck/context/global.md (+ global/{skills,agents}/)
12
+ * Applies to every harness invocation, everywhere.
13
+ * project — <projectRoot>/.overdeck/context/project.md
14
+ * Applies when CWD is under a registered project. Committed.
15
+ * workspace — <workspace>/.overdeck/context/workspace.md
16
+ * Auto-assembled by Overdeck at spawn time. Gitignored.
17
+ *
18
+ * The global layer lives under ~/.overdeck (per-machine). Project and
19
+ * Project and workspace context live outside the permanent state plane under
20
+ * `.overdeck/`. Reads retain a `.pan/context/` compatibility fallback.
21
+ */
22
+ /** `~/.overdeck/context` — the global layer directory. */
23
+ function globalContextDir() {
24
+ return join(getOverdeckHome(), "context");
25
+ }
26
+ /** `~/.overdeck/context/global.md` — the global layer's canonical source. */
27
+ function globalContextFile() {
28
+ return join(globalContextDir(), "global.md");
29
+ }
30
+ /** `<projectRoot>/.overdeck/context` — a registered project's layer directory. */
31
+ function projectContextDir(projectRoot) {
32
+ return join(projectRoot, ".overdeck", "context");
33
+ }
34
+ /** `<projectRoot>/.overdeck/context/project.md` — a project's canonical source. */
35
+ function projectContextFile(projectRoot) {
36
+ return join(projectContextDir(projectRoot), "project.md");
37
+ }
38
+ function legacyProjectContextFile(projectRoot) {
39
+ return join(projectRoot, ".pan", "context", "project.md");
40
+ }
41
+ function resolveProjectContextFile(projectRoot) {
42
+ const canonical = projectContextFile(projectRoot);
43
+ return existsSync(canonical) ? canonical : legacyProjectContextFile(projectRoot);
44
+ }
45
+ /** `<workspace>/.overdeck/context` — a workspace's layer directory. */
46
+ function workspaceContextDir(workspacePath) {
47
+ return join(workspacePath, ".overdeck", "context");
48
+ }
49
+ /** `<workspace>/.pan/context/workspace.md` — the auto-assembled bundle. */
50
+ function workspaceContextFile(workspacePath) {
51
+ return join(workspaceContextDir(workspacePath), "workspace.md");
52
+ }
53
+ function legacyWorkspaceContextFile(workspacePath) {
54
+ return join(workspacePath, ".pan", "context", "workspace.md");
55
+ }
56
+ function resolveWorkspaceContextFile(workspacePath) {
57
+ const canonical = workspaceContextFile(workspacePath);
58
+ return existsSync(canonical) ? canonical : legacyWorkspaceContextFile(workspacePath);
59
+ }
60
+ /** `~/.overdeck/context/pi-global.md` — the rendered global layer for Pi. */
61
+ function piGlobalContextFile() {
62
+ return join(getOverdeckHome(), "context", "pi-global.md");
63
+ }
64
+ /** `~/.overdeck/context/codex-global.md` — the rendered global layer for Codex. */
65
+ function codexGlobalContextFile() {
66
+ return join(getOverdeckHome(), "context", "codex-global.md");
67
+ }
68
+ /**
69
+ * Ensure a project's layer dir exists with a stub `project.md`. Idempotent.
70
+ * Returns true when a file was created. Called by `pan projects add`.
71
+ */
72
+ function ensureProjectLayer(projectRoot) {
73
+ const file = projectContextFile(projectRoot);
74
+ if (existsSync(file)) return false;
75
+ mkdirSync(projectContextDir(projectRoot), { recursive: true });
76
+ writeFileSync(file, PROJECT_STARTER, "utf-8");
77
+ return true;
78
+ }
79
+ /** Read a layer's canonical markdown, or '' when the file does not exist. */
80
+ function readLayerContent(file) {
81
+ return existsSync(file) ? readFileSync(file, "utf-8") : "";
82
+ }
83
+ var PROJECT_STARTER;
84
+ var init_layers = __esmMin((() => {
85
+ init_paths();
86
+ PROJECT_STARTER = `# Project Context
87
+
88
+ Context for this project specifically. \`pan sync\` renders it into the
89
+ project's CLAUDE.md (and equivalents) when CWD is under this project.
90
+
91
+ This file is committed to the repo; \`workspace.md\` is not.
92
+ `;
93
+ }));
94
+ //#endregion
95
+ //#region ../../lib/context-layers/harness.ts
96
+ /**
97
+ * Render a canonical layer body for a single harness.
98
+ *
99
+ * Strips every `{{#harness:*}}` / `{{/harness:*}}` marker and drops the spans
100
+ * that are not covered by the target harness. Runs of 3+ blank lines left by
101
+ * removed spans collapse to a single blank line so output stays tidy.
102
+ */
103
+ function renderForHarness(content, harness) {
104
+ const target = HARNESS_MARKERS[harness];
105
+ const openCounts = /* @__PURE__ */ new Map();
106
+ let out = "";
107
+ let lastIndex = 0;
108
+ const emit = (text) => {
109
+ let covered = false;
110
+ let anyOpen = false;
111
+ for (const [name, count] of openCounts) if (count > 0) {
112
+ anyOpen = true;
113
+ if (name === target) covered = true;
114
+ }
115
+ if (!anyOpen || covered) out += text;
116
+ };
117
+ MARKER_RE.lastIndex = 0;
118
+ let m;
119
+ while ((m = MARKER_RE.exec(content)) !== null) {
120
+ emit(content.slice(lastIndex, m.index));
121
+ const [, kind, name] = m;
122
+ const delta = kind === "#" ? 1 : -1;
123
+ openCounts.set(name, (openCounts.get(name) ?? 0) + delta);
124
+ lastIndex = m.index + m[0].length;
125
+ }
126
+ emit(content.slice(lastIndex));
127
+ return out.replace(/\n{3,}/g, "\n\n");
128
+ }
129
+ /**
130
+ * Lint a context-layer template for malformed harness blocks.
131
+ *
132
+ * Errors: an unclosed `{{#harness:x}}` or a stray `{{/harness:x}}` with no
133
+ * matching open. Warnings: a marker naming a harness Overdeck has no
134
+ * adapter for (allowed for forward compatibility, surfaced so typos —
135
+ * `{{#harness:clade}}` — do not pass silently).
136
+ */
137
+ function validateTemplate(content) {
138
+ const issues = [];
139
+ const openCounts = /* @__PURE__ */ new Map();
140
+ const seen = /* @__PURE__ */ new Set();
141
+ MARKER_RE.lastIndex = 0;
142
+ let m;
143
+ while ((m = MARKER_RE.exec(content)) !== null) {
144
+ const [, kind, name] = m;
145
+ seen.add(name);
146
+ if (kind === "#") openCounts.set(name, (openCounts.get(name) ?? 0) + 1);
147
+ else {
148
+ const next = (openCounts.get(name) ?? 0) - 1;
149
+ openCounts.set(name, next);
150
+ if (next < 0) issues.push({
151
+ severity: "error",
152
+ message: `stray closing marker {{/harness:${name}}} with no matching {{#harness:${name}}}`
153
+ });
154
+ }
155
+ }
156
+ for (const [name, count] of openCounts) if (count > 0) issues.push({
157
+ severity: "error",
158
+ message: `unclosed block: {{#harness:${name}}} opened ${count} time(s) without a matching {{/harness:${name}}}`
159
+ });
160
+ for (const name of seen) if (!KNOWN_HARNESS_MARKERS.has(name)) issues.push({
161
+ severity: "warning",
162
+ message: `unknown harness "${name}" — Overdeck ships adapters for: ${[...KNOWN_HARNESS_MARKERS].join(", ")}`
163
+ });
164
+ return {
165
+ ok: !issues.some((i) => i.severity === "error"),
166
+ issues
167
+ };
168
+ }
169
+ var HARNESS_MARKERS, KNOWN_HARNESS_MARKERS, MARKER_RE;
170
+ var init_harness = __esmMin((() => {
171
+ HARNESS_MARKERS = {
172
+ "claude-code": "claude",
173
+ ohmypi: "ohmypi",
174
+ codex: "codex",
175
+ acp: "acp"
176
+ };
177
+ KNOWN_HARNESS_MARKERS = new Set([
178
+ "claude",
179
+ "pi",
180
+ "ohmypi",
181
+ "codex",
182
+ "acp"
183
+ ]);
184
+ MARKER_RE = /\{\{([#/])harness:([a-zA-Z0-9_-]+)\}\}/g;
185
+ }));
186
+ //#endregion
187
+ //#region ../../lib/context-layers/rules.ts
188
+ /**
189
+ * Bundled engineering rules (PAN-1201).
190
+ *
191
+ * Overdeck ships a small set of engineering rules under sync-sources/rules/.
192
+ * Each rule carries a `scope:` frontmatter key:
193
+ *
194
+ * universal — distributed everywhere (relevant to anyone running agents)
195
+ * dev — distributed only on a overdeck checkout (rules about
196
+ * developing Overdeck itself)
197
+ *
198
+ * `pan sync` folds the applicable rules into the rendered global CLAUDE.md.
199
+ * Their `paths:` frontmatter (Claude Code path-scoping) is dropped on fold —
200
+ * a folded rule is always-on.
201
+ */
202
+ /**
203
+ * Parse a rule file into `{ scope, body }`. Rules with no frontmatter, or
204
+ * frontmatter without a recognised `scope:`, default to `universal`.
205
+ */
206
+ function parseRule(name, raw) {
207
+ const m = FRONTMATTER_RE.exec(raw);
208
+ let scope = "universal";
209
+ let body = raw;
210
+ if (m) {
211
+ body = raw.slice(m[0].length);
212
+ const value = m[1].split(/\r?\n/).find((l) => /^\s*scope\s*:/.test(l))?.split(":")[1]?.trim().replace(/['"]/g, "");
213
+ if (value === "dev" || value === "universal") scope = value;
214
+ }
215
+ return {
216
+ name,
217
+ scope,
218
+ body: body.trim()
219
+ };
220
+ }
221
+ /** Read every bundled rule from sync-sources/rules/, sorted by name. */
222
+ function readBundledRules() {
223
+ const dir = SYNC_SOURCES.rules;
224
+ if (!existsSync(dir)) return [];
225
+ return readdirSync(dir).filter((f) => f.endsWith(".md")).sort().map((f) => parseRule(f.replace(/\.md$/, ""), readFileSync(join(dir, f), "utf-8")));
226
+ }
227
+ /**
228
+ * Render the applicable bundled rules into one CLAUDE.md section.
229
+ *
230
+ * `includeDev` admits `scope: dev` rules — set it from `isDevMode()` so they
231
+ * only fold in on a overdeck checkout. Each rule body is rendered for
232
+ * the target harness so any `{{#harness:*}}` blocks resolve. Returns '' when
233
+ * no rules apply.
234
+ */
235
+ function renderBundledRules(harness, includeDev) {
236
+ const sections = readBundledRules().filter((r) => includeDev || r.scope === "universal").map((r) => renderForHarness(r.body, harness).trim()).filter((s) => s.length > 0);
237
+ if (sections.length === 0) return "";
238
+ return `## Overdeck Engineering Rules\n\n${sections.join("\n\n")}`;
239
+ }
240
+ var FRONTMATTER_RE;
241
+ var init_rules = __esmMin((() => {
242
+ init_paths();
243
+ init_harness();
244
+ FRONTMATTER_RE = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;
245
+ }));
246
+ //#endregion
247
+ //#region ../../lib/context-layers/render.ts
248
+ /** True when `existing` already contains a Overdeck-managed region. */
249
+ function hasManagedRegion(existing) {
250
+ const beginIdx = existing.indexOf(REGION_BEGIN);
251
+ const endIdx = existing.indexOf(REGION_END);
252
+ return beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx;
253
+ }
254
+ /**
255
+ * Return `existing` with the Overdeck-managed region removed — i.e. only the
256
+ * hand-authored content the user owns, trimmed. When there is no region, the
257
+ * whole (trimmed) file is the user's. Used to decide whether a target file has
258
+ * pre-existing content worth preserving and backing up before first injection.
259
+ */
260
+ function userContentOutsideRegion(existing) {
261
+ const beginIdx = existing.indexOf(REGION_BEGIN);
262
+ const endIdx = existing.lastIndexOf(REGION_END);
263
+ if (beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx) return (existing.slice(0, beginIdx) + existing.slice(endIdx + 29)).trim();
264
+ return existing.trim();
265
+ }
266
+ /**
267
+ * Render the global layer for one harness: `global.md` rendered, with the
268
+ * applicable bundled engineering rules folded in below it.
269
+ *
270
+ * The result is the *managed content* — caller wraps it via
271
+ * {@link applyManagedRegion} when writing the harness's CLAUDE.md.
272
+ */
273
+ function renderGlobalLayer(harness, includeDevRules) {
274
+ return [renderForHarness(readLayerContent(globalContextFile()), harness).trim(), renderBundledRules(harness, includeDevRules)].filter((s) => s.length > 0).join("\n\n---\n\n");
275
+ }
276
+ /**
277
+ * Render a project layer for one harness. Returns '' when the project has no
278
+ * `project.md` — sync then leaves that project's CLAUDE.md alone.
279
+ */
280
+ function renderProjectLayer(projectRoot, harness) {
281
+ const raw = readLayerContent(resolveProjectContextFile(projectRoot));
282
+ if (raw.trim().length === 0) return "";
283
+ return renderForHarness(raw, harness).trim();
284
+ }
285
+ var REGION_BEGIN, REGION_END;
286
+ var init_render = __esmMin((() => {
287
+ init_harness();
288
+ init_rules();
289
+ init_layers();
290
+ REGION_BEGIN = "<!-- BEGIN OVERDECK CONTEXT — managed by `pan sync`; edit the layer source, not this region -->";
291
+ REGION_END = "<!-- END OVERDECK CONTEXT -->";
292
+ }));
293
+ //#endregion
294
+ //#region ../../lib/context-layers/assemble.ts
295
+ function removeMarkedProjectLayer(content) {
296
+ const start = content.indexOf(PROJECT_LAYER_START);
297
+ if (start < 0) return null;
298
+ const markerEnd = content.indexOf("-->", start + 33);
299
+ if (markerEnd < 0) return null;
300
+ const marker = content.slice(start, markerEnd + 3);
301
+ const lengthMatch = /\schars=(\d+)\s-->$/.exec(marker);
302
+ if (!lengthMatch) return null;
303
+ const projectEnd = markerEnd + 4 + Number(lengthMatch[1]);
304
+ if (content[markerEnd + 3] !== "\n") return null;
305
+ if (content.slice(projectEnd, projectEnd + 1 + 35) !== `\n<!-- overdeck:project-layer:end -->`) return null;
306
+ const end = projectEnd + 1;
307
+ let before = content.slice(0, start);
308
+ let after = content.slice(end + 35);
309
+ if (before.endsWith(SECTION_SEPARATOR) && after.startsWith(SECTION_SEPARATOR)) before = before.slice(0, -7);
310
+ else if (before.endsWith(SECTION_SEPARATOR)) before = before.slice(0, -7);
311
+ else if (after.startsWith(SECTION_SEPARATOR)) after = after.slice(7);
312
+ return `${before}${after}`.trim();
313
+ }
314
+ /**
315
+ * Remove the project layer embedded in a workspace bundle.
316
+ *
317
+ * New bundles carry reserved structural markers, so project Markdown can contain
318
+ * horizontal rules without becoming ambiguous. Legacy bundles predate those
319
+ * markers; their only safely identifiable workspace-owned section is the
320
+ * generated header before the first top-level separator. Keeping that header is
321
+ * preferable to forwarding an unknown amount of stale, harness-specific text.
322
+ */
323
+ function workspaceContextWithoutProjectLayer(content) {
324
+ const marked = removeMarkedProjectLayer(content);
325
+ if (marked !== null) return marked;
326
+ const firstSeparator = content.indexOf(SECTION_SEPARATOR);
327
+ return (firstSeparator < 0 ? content : content.slice(0, firstSeparator)).trim();
328
+ }
329
+ var SECTION_SEPARATOR, PROJECT_LAYER_START, PROJECT_LAYER_END;
330
+ var init_assemble = __esmMin((() => {
331
+ init_render();
332
+ SECTION_SEPARATOR = "\n\n---\n\n";
333
+ PROJECT_LAYER_START = "<!-- overdeck:project-layer:start";
334
+ PROJECT_LAYER_END = "<!-- overdeck:project-layer:end -->";
335
+ }));
336
+ //#endregion
337
+ export { projectContextDir as A, ensureProjectLayer as C, legacyProjectContextFile as D, init_layers as E, workspaceContextDir as F, workspaceContextFile as I, readLayerContent as M, resolveProjectContextFile as N, legacyWorkspaceContextFile as O, resolveWorkspaceContextFile as P, codexGlobalContextFile as S, globalContextFile as T, KNOWN_HARNESS_MARKERS as _, REGION_BEGIN as a, validateTemplate as b, init_render as c, userContentOutsideRegion as d, init_rules as f, HARNESS_MARKERS as g, renderBundledRules as h, workspaceContextWithoutProjectLayer as i, projectContextFile as j, piGlobalContextFile as k, renderGlobalLayer as l, readBundledRules as m, PROJECT_LAYER_START as n, REGION_END as o, parseRule as p, init_assemble as r, hasManagedRegion as s, PROJECT_LAYER_END as t, renderProjectLayer as u, init_harness as v, globalContextDir as w, PROJECT_STARTER as x, renderForHarness as y };
338
+
339
+ //# sourceMappingURL=assemble-J2ZZ2C15.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { r as isNoResumeValueEnabled, t as init_no_resume_mode } from "./no-resume-mode-BWOSZjWd.js";
3
- import { a as spawnSequencerAgent, i as init_sequencer_agent } from "./sequencer-agent-B5YC5XVP.js";
2
+ import { r as isNoResumeValueEnabled, t as init_no_resume_mode } from "./no-resume-mode-Nw29vaFb.js";
3
+ import { a as spawnSequencerAgent, i as init_sequencer_agent } from "./sequencer-agent-CzkcK6P5.js";
4
4
  //#region ../../lib/backlog/backlog-auto-trigger.ts
5
5
  /**
6
6
  * PAN-2396: --no-resume is the operator's full-quiescence escape hatch —
@@ -37,4 +37,4 @@ __esmMin((() => {
37
37
  }))();
38
38
  export { triggerDebouncedIncrementalPass };
39
39
 
40
- //# sourceMappingURL=backlog-auto-trigger-DmA1IbYf.js.map
40
+ //# sourceMappingURL=backlog-auto-trigger-2R2jog7n.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { t as init_src } from "./src-k039WVYY.js";
2
+ import { t as init_src } from "./src-DtcUOZCq.js";
3
3
  //#region ../../lib/runtimes/behavior.ts
4
4
  var init_behavior = __esmMin((() => {
5
5
  init_src();
@@ -7,4 +7,4 @@ var init_behavior = __esmMin((() => {
7
7
  //#endregion
8
8
  export { init_behavior as t };
9
9
 
10
- //# sourceMappingURL=behavior-CGj16clS.js.map
10
+ //# sourceMappingURL=behavior-B3exJ42O.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ii as init_paths, ri as getOverdeckHome } from "./config-yaml-ig8Nwtiw.js";
2
+ import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DySPNmKN.js";
3
3
  import { dirname, join } from "path";
4
4
  import { randomUUID } from "crypto";
5
5
  import { mkdir, readFile, rename, stat, writeFile } from "fs/promises";
@@ -128,4 +128,4 @@ var init_briefing_freshness = __esmMin((() => {
128
128
  //#endregion
129
129
  export { resolveSessionContextBriefingPath as a, recordBriefingSessionStart as i, ensureSessionContextBriefingFile as n, init_briefing_freshness as r, appendFreshBriefingUpdate as t };
130
130
 
131
- //# sourceMappingURL=briefing-freshness-C12WgkaB.js.map
131
+ //# sourceMappingURL=briefing-freshness-D1wzUIWv.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_build_info, t as getBuildInfo } from "./build-info-NU3KbXYw.js";
1
+ import { n as init_build_info, t as getBuildInfo } from "./build-info-Ie_D0_BT.js";
2
2
  init_build_info();
3
3
  export { getBuildInfo };
@@ -2,12 +2,12 @@ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
2
  //#region ../../lib/deploy/build-info.ts
3
3
  function getBuildInfo() {
4
4
  return {
5
- buildCommit: "d9c0fc9a18f6cb54de58bf2e78604d8831e27ffe",
6
- builtAt: "2026-07-18T04:05:04.430Z"
5
+ buildCommit: "470dfaba75ec7478787a15f9854f20df5c960c05",
6
+ builtAt: "2026-07-23T14:20:17.760Z"
7
7
  };
8
8
  }
9
9
  var init_build_info = __esmMin((() => {}));
10
10
  //#endregion
11
11
  export { init_build_info as n, getBuildInfo as t };
12
12
 
13
- //# sourceMappingURL=build-info-NU3KbXYw.js.map
13
+ //# sourceMappingURL=build-info-Ie_D0_BT.js.map