@overdeck/desktop 0.45.22 → 0.45.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +2 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-BH7ac_1G.js → acceptance-criteria-DDCnXF58.js} +5 -5
  4. package/server/{advancing-selfheal-cSvXNZLZ.js → advancing-selfheal-BVwW4qRn.js} +6 -6
  5. package/server/{agent-gc-Dj2gncak.js → agent-gc-CHcnvonI.js} +4 -4
  6. package/server/agent-state-Bc3tzUC8.js +3 -0
  7. package/server/{agent-state-service-DistflNn.js → agent-state-service-BsgWxZuB.js} +5 -5
  8. package/server/{agent-state-service-CsQ07Pxe.js → agent-state-service-D5UGKIJL.js} +1 -1
  9. package/server/{agents-DXdHmRTC.js → agents-EbI0zCJl.js} +4 -4
  10. package/server/agents-wi9NWzs2.js +3 -0
  11. package/server/{archive-planning-Cp_DC1j-.js → archive-planning-BZDgzoEj.js} +1 -1
  12. package/server/{archive-planning-BvDuWNMo.js → archive-planning-Du25Jtst.js} +30 -6
  13. package/server/{artifact-index-jobs-CDBFL4OU.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
  14. package/server/assemble-J2ZZ2C15.js +339 -0
  15. package/server/{backlog-auto-trigger-DmA1IbYf.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
  16. package/server/{behavior-CGj16clS.js → behavior-B3exJ42O.js} +2 -2
  17. package/server/{briefing-freshness-C12WgkaB.js → briefing-freshness-D1wzUIWv.js} +2 -2
  18. package/server/{build-info-BRpqQvNd.js → build-info-CZk_TITh.js} +1 -1
  19. package/server/{build-info-NU3KbXYw.js → build-info-Ie_D0_BT.js} +3 -3
  20. package/server/{checkpoint-manager-CTPjAmtH.js → checkpoint-manager-BI1Wxoku.js} +2 -2
  21. package/server/{checkpoint-manager-rOgT98WY.js → checkpoint-manager-DwbQoqrC.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-B5jFNi2G.js → checkpoints-BJIs5QIA.js} +1 -1
  24. package/server/{checkpoints-BJum14fs.js → checkpoints-CQB1h765.js} +2 -2
  25. package/server/{claude-hooks-provision-BhwWK-TQ.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
  26. package/server/{claude-hooks-provision-D7p5WcKZ.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
  27. package/server/{claude-permissions-nSFKH78M.js → claude-permissions-DNWEVV6z.js} +2 -2
  28. package/server/{claude-settings-overlay-BI_UIke0.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
  29. package/server/{claude-settings-overlay-DHBwjS1X.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
  30. package/server/cli-B86rejVV.js +3 -0
  31. package/server/{cli-CbKNkFE5.js → cli-RoOx5DUf.js} +9 -9
  32. package/server/{cliproxy-Brf_5MuG.js → cliproxy-C8a1vtTU.js} +2 -2
  33. package/server/{cliproxy-bONZDBbC.js → cliproxy-fHfIeiGd.js} +1 -1
  34. package/server/{close-issue-CxReRxIc.js → close-issue-DoOifFIK.js} +5 -5
  35. package/server/{closed-issue-reaper-CQ3kqha7.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
  36. package/server/{closed-issue-reaper-DXP2Xyv3.js → closed-issue-reaper-CktPXo8m.js} +1 -1
  37. package/server/{codex-CbmztVcc.js → codex-BZXGhUVB.js} +27 -8
  38. package/server/codex-GcHuUF-k.js +3 -0
  39. package/server/{codex-parser-jl8AeAmB.js → codex-parser-CFZ1_1Jl.js} +2 -2
  40. package/server/{config-q4Gvd8dq.js → config-BZ0sHTju.js} +2 -2
  41. package/server/{config-DeTsoZdR.js → config-CKxYiCmX.js} +2 -2
  42. package/server/{config-BJKocXKd.js → config-DzV30TOm.js} +1 -1
  43. package/server/{config-yaml-ig8Nwtiw.js → config-yaml-DySPNmKN.js} +77 -194
  44. package/server/{conflict-gate-CFqPVxEg.js → conflict-gate-BaCVrH-N.js} +3 -3
  45. package/server/{conflict-gate-CHU9K1vU.js → conflict-gate-BhAY7TUd.js} +1 -1
  46. package/server/context-layers-BrPmE__h.js +4 -0
  47. package/server/context-layers-igZ4FI4_.js +37 -0
  48. package/server/{control-settings-D_odMIaC.js → control-settings-BQp7_4uD.js} +4 -4
  49. package/server/{conversation-compaction-B6YSRLda.js → conversation-compaction-CgrR8YYp.js} +8 -8
  50. package/server/{conversation-compaction-CN4-5YYt.js → conversation-compaction-eQB5CkOe.js} +1 -1
  51. package/server/{conversation-service-Dq33SYEj.js → conversation-service-BLd3MYsG.js} +1 -1
  52. package/server/{conversation-service-C3avRVEr.js → conversation-service-DPJ71F33.js} +329 -19
  53. package/server/{conversations-bYpM9-kZ.js → conversations-6AfUfbwc.js} +5 -5
  54. package/server/{conversations-H9if0bCQ.js → conversations-CAsJF9kh.js} +1 -1
  55. package/server/{cost-Codk1pc2.js → cost-B2ddP6wq.js} +18 -2
  56. package/server/{cost-wH46-WsJ.js → cost-R-m6Yi-W.js} +3 -3
  57. package/server/{cost-sync-D_cre6WM.js → cost-sync-BsN6ER0n.js} +3 -3
  58. package/server/{dag-CJpgf9A3.js → dag-B1ucnjDU.js} +9 -9
  59. package/server/{dangerous-git-ops-D6AF-Hg_.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
  60. package/server/dashboard-db-worker.js +7 -7
  61. package/server/{deacon-CkT_kznS.js → deacon-CU_cAYSR.js} +406 -607
  62. package/server/{deacon-B8HbQdqU.js → deacon-kiQrb4ZT.js} +3 -3
  63. package/server/{deacon-nudge-log-D6K9K-rE.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
  64. package/server/{deacon-swarm-BryRr6AO.js → deacon-swarm-BXZZ1Z2-.js} +17 -17
  65. package/server/deacon-swarm-C-GwfjJy.js +2 -0
  66. package/server/deacon.js +8 -8
  67. package/server/{deploy-patrol-1IrZxicY.js → deploy-patrol-AiFoP8dw.js} +136 -19
  68. package/server/{deploy-window-wDf4UgHt.js → deploy-window-C3F-tihF.js} +77 -10
  69. package/server/{deploy-window-7ZYHh7Zp.js → deploy-window-DkZraDyj.js} +1 -1
  70. package/server/{dev-supervisor-C7p9kEpc.js → dev-supervisor-bcOWqdQE.js} +2 -2
  71. package/server/{devcontainer-renderer-CNmQy0pL.js → devcontainer-renderer-_d6XhyND.js} +3 -3
  72. package/server/dist-Bzy0y69j.js +3 -0
  73. package/server/{dist-D-Ed5yVw.js → dist-Cb_0uvpS.js} +1 -1
  74. package/server/{docker-BCZ89M9X.js → docker-DcMTFTUC.js} +2 -2
  75. package/server/{dod-DbJLYcHv.js → dod-C6n9RV3G.js} +1 -1
  76. package/server/{ensure-devcontainer-Cs6W9Yzj.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
  77. package/server/{ensure-devcontainer-V5JWaAva.js → ensure-devcontainer-DNi-ono3.js} +4 -4
  78. package/server/{esm-shims-dTeNdq7X.js → esm-shims-OSHAYaS1.js} +1 -1
  79. package/server/{event-store-TnWdydfB.js → event-store-CQL6NeqB.js} +3 -3
  80. package/server/{event-store-CpBGsO6_.js → event-store-EV2cMiXj.js} +1 -1
  81. package/server/{events-Dsuv6qyB.js → events-BTdrdEq8.js} +1 -1
  82. package/server/{events-DSUdR-04.js → events-DTfAe4My.js} +3 -3
  83. package/server/{factory-BMrK4TrE.js → factory-CFibJuaw.js} +50 -13
  84. package/server/{feature-registry-population-B-CI9hgE.js → feature-registry-population-DKZFMbFt.js} +4 -4
  85. package/server/{feature-registry-storage-B972ph_A.js → feature-registry-storage-BdPuLcBX.js} +2 -2
  86. package/server/{features-Bc-Bmiye.js → features-ez2271oH.js} +2 -2
  87. package/server/{feedback-target-DZ-iAnAa.js → feedback-target-7mqqwrX6.js} +7 -7
  88. package/server/{feedback-target-DS6NUuSs.js → feedback-target-CoFDHiM8.js} +1 -1
  89. package/server/{feedback-writer-BXP6g75N.js → feedback-writer-CY5L1lB7.js} +6 -5
  90. package/server/{feedback-writer-Bx5z11mF.js → feedback-writer-D3a22RCd.js} +1 -1
  91. package/server/flywheel-DHrgCphM.js +1084 -0
  92. package/server/flywheel-DzGtWnJ1.js +477 -0
  93. package/server/flywheel-SVF02Jpq.js +2 -0
  94. package/server/{flywheel-merge-order-CTgHeg-W.js → flywheel-merge-order-UU0tiUld.js} +10 -9
  95. package/server/{flywheel-merge-order-CNKAY489.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
  96. package/server/{forge-B1S_KZv4.js → forge-CNFnyqps.js} +2 -2
  97. package/server/forge-DXnS_YFH.js +2 -0
  98. package/server/{from-DpwQ-sc3.js → from-kNxT0bZC.js} +1 -1
  99. package/server/{fts-db-DmAcuCkV.js → fts-db-CE46vDkZ.js} +2 -2
  100. package/server/{fts-operations-7d_RkmWp.js → fts-operations-CqY6zl-i.js} +2 -2
  101. package/server/{git-utils-Cc3FHDKd.js → git-utils-CRw2zLPC.js} +68 -3
  102. package/server/git-utils-D0_yhCgF.js +3 -0
  103. package/server/{github-app-CDPtGF7J.js → github-app-C3QrAUd0.js} +27 -8
  104. package/server/{github-app-CU14oYzP.js → github-app-ClZ2lk8D.js} +1 -1
  105. package/server/{github-client-XjTJbBm7.js → github-client-BnIsSrEN.js} +2 -2
  106. package/server/{github-client-CwBZZ3t7.js → github-client-DfQYVUaw.js} +1 -1
  107. package/server/{github-pr-lookup-CFGeVhqv.js → github-pr-lookup-D16NGsSO.js} +2 -2
  108. package/server/{harness-binary-B2CTcD84.js → harness-binary-DPUi-Pv8.js} +32 -6
  109. package/server/{harness-resolve-D5FVQTmy.js → harness-resolve-3lNZkyT4.js} +18 -9
  110. package/server/{health-events-DREeevle.js → health-events-BBcTYQKU.js} +2 -2
  111. package/server/{health-events-C1whmd58.js → health-events-BDOHby5Q.js} +1 -1
  112. package/server/{hooks-yxRsjk-z.js → hooks-CKZgXlJb.js} +2 -2
  113. package/server/{hooks-B-HItBiS.js → hooks-DPVX1rwQ.js} +1 -1
  114. package/server/{hume-Dz_OymXE.js → hume-Cz8igP9E.js} +2 -2
  115. package/server/hume-ccTf4wTX.js +3 -0
  116. package/server/{idle-stack-reaper-DrCv0OAG.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
  117. package/server/{idle-stack-reaper-Yf34xXxY.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
  118. package/server/{in-flight-guard-BoWm66Kh.js → in-flight-guard-CAAkqPLu.js} +2 -2
  119. package/server/{infra-D4iNWMA5.js → infra-BEqFxlJc.js} +14 -4
  120. package/server/{injection-D7T75Pye.js → injection-C8aiVJrF.js} +191 -183
  121. package/server/{injection-BVNa4MQW.js → injection-CPUIqNhI.js} +1 -1
  122. package/server/{inspect-agent-BXCgNeZ4.js → inspect-agent-BLuJ1AkT.js} +137 -81
  123. package/server/inspect-agent-Brtz0URj.js +2 -0
  124. package/server/{internal-token-C9DdEOKY.js → internal-token-BrcU6qfe.js} +1 -1
  125. package/server/{internal-token-CXsfxslp.js → internal-token-s0-oKybJ.js} +2 -2
  126. package/server/{io-DQR9PMgS.js → io-C9kF1wtJ.js} +160 -184
  127. package/server/{issue-closed-DtmJM0D0.js → issue-closed-CDJk4pIp.js} +7 -7
  128. package/server/{issue-lifecycle-8PSS9Anq.js → issue-lifecycle-B8sZHVHh.js} +1 -1
  129. package/server/{issue-lifecycle-CeyW_HoD.js → issue-lifecycle-ojZAzDBP.js} +22 -22
  130. package/server/{issue-service-singleton-DBZabEl7.js → issue-service-singleton-BvJ09SaR.js} +1 -1
  131. package/server/{issue-service-singleton-D_RVYBuL.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
  132. package/server/{issues-pDW9VUNz.js → issues-BMmP_77e.js} +2 -2
  133. package/server/{jsonl-parser-C3HVNR5d.js → jsonl-parser-BXSlHwEh.js} +3 -3
  134. package/server/{label-cleanup-DPwiZlWo.js → label-cleanup-B0UJwnv5.js} +3 -3
  135. package/server/{label-reconciler-Df1ZduPH.js → label-reconciler-B4iOAjlC.js} +4 -4
  136. package/server/{launcher-generator-COgR2By1.js → launcher-generator-BBWG_SiS.js} +105 -10
  137. package/server/{lifecycle-io-taIb0PoH.js → lifecycle-io-BREGpnLk.js} +37 -37
  138. package/server/lifecycle-io-DPo7x11I.js +3 -0
  139. package/server/{lifecycle-CtPDcZ9u.js → lifecycle-xmBfK2GJ.js} +6 -6
  140. package/server/lifecycle-yPd___5E.js +121 -0
  141. package/server/{linear-client-DsFkIxee.js → linear-client-BsuUvkdA.js} +2 -2
  142. package/server/{linear-client-YwZMDIwQ.js → linear-client-CTskEeT_.js} +1 -1
  143. package/server/memory-fts-worker.js +1 -1
  144. package/server/{merge-BwsyNRJV.js → merge-B1DiziGU.js} +1 -1
  145. package/server/{merge-C1t-bspg.js → merge-CefQNAnq.js} +3 -3
  146. package/server/{merge-agent-DDiIjzk-.js → merge-agent-4WOWlSYA.js} +28 -28
  147. package/server/{merge-agent-B-SnXOoc.js → merge-agent-CKkgIBPB.js} +1 -1
  148. package/server/{merge-batch-Byt-QnEl.js → merge-batch-ClFn2T-y.js} +1 -1
  149. package/server/merge-ops-CR44oU9-.js +2 -0
  150. package/server/{merge-rebase-Cm6fXaZN.js → merge-rebase-BfaTyXsw.js} +2 -2
  151. package/server/merge-set-DJ8-UErs.js +83 -0
  152. package/server/{merge-set-6LEglm6o.js → merge-set-bUqbm3yc.js} +1 -1
  153. package/server/{merge-sync-B95_4in_.js → merge-sync-BJYeOODr.js} +1 -1
  154. package/server/{merge-sync-Do8_q32h.js → merge-sync-VPV28g0g.js} +2 -2
  155. package/server/{merge-train-CKana8EH.js → merge-train-CHopycP0.js} +3 -3
  156. package/server/{merge-train-deps-BgmqwIfA.js → merge-train-deps-D1cOZzy2.js} +4 -4
  157. package/server/{merge-verification-CqnUzGEK.js → merge-verification-BkaOqPsw.js} +4 -4
  158. package/server/{multipart-parser-tdOQDJ3o.js → multipart-parser-duPAfSBw.js} +2 -2
  159. package/server/{no-resume-mode-BWOSZjWd.js → no-resume-mode-Nw29vaFb.js} +11 -8
  160. package/server/node_modules/.package-lock.json +8 -8
  161. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  162. package/server/node_modules/undici/README.md +5 -0
  163. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  164. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  165. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  166. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  167. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  168. package/server/node_modules/undici/docs/docs/index.md +5 -0
  169. package/server/node_modules/undici/lib/core/request.js +1 -1
  170. package/server/node_modules/undici/lib/core/util.js +6 -1
  171. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  172. package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
  173. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  174. package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
  175. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
  176. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  177. package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
  178. package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
  179. package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
  180. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  181. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  182. package/server/node_modules/undici/lib/util/cache.js +49 -7
  183. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  184. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  185. package/server/node_modules/undici/package.json +2 -2
  186. package/server/node_modules/undici/types/client.d.ts +2 -2
  187. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  188. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  189. package/server/{orphan-proposed-reconciler-xklgvNA7.js → orphan-proposed-reconciler-BvKkWMJQ.js} +15 -13
  190. package/server/{orphan-proposed-reconciler-DSvsJ5M7.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
  191. package/server/package-lock.json +9 -9
  192. package/server/package.json +1 -1
  193. package/server/{pan-dir-DOcf6ug3.js → pan-dir-B0c3w0Ya.js} +78 -58
  194. package/server/{paths-DooHpt9p.js → paths-D-xWGHdh.js} +2 -2
  195. package/server/{pickup-CaskQ7j6.js → pickup-DUCLWrJY.js} +17 -16
  196. package/server/{pipeline-membership-1LGRjo-k.js → pipeline-membership-mY3GprlK.js} +186 -67
  197. package/server/{pipeline-notifier-CZsrU_nj.js → pipeline-notifier-BJr8gQX6.js} +1 -1
  198. package/server/{pipeline-notifier-B6FVsYF9.js → pipeline-notifier-BXkJzDC4.js} +2 -2
  199. package/server/{project-pipelines-CtNG_rvs.js → project-pipelines-C0MWUeCU.js} +2 -2
  200. package/server/project-repos-B6GycDh9.js +94 -0
  201. package/server/project-repos-DXKQsc_m.js +3 -0
  202. package/server/projects-vjjcmiN8.js +3 -0
  203. package/server/{prompts-EvhMeeHG.js → prompts-DxzFXuLl.js} +2 -2
  204. package/server/{providers-BDDPULlp.js → providers-qQAwGQDW.js} +7 -7
  205. package/server/{providers-DNSQqy2V.js → providers-u4Ga0jOr.js} +1 -1
  206. package/server/public/assets/{chunk-BO2N2NFS-sym_ufXe.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
  207. package/server/public/assets/{diagram-OG6HWLK6-CQJPBNBu.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
  208. package/server/public/assets/{dist-DukGS2YZ.js → dist-ByIuzMQW.js} +3 -3
  209. package/server/public/assets/{dist-Bio7THQU.js → dist-D7zYSEA6.js} +1 -1
  210. package/server/public/assets/{ganttDiagram-6RSMTGT7-D4lWwte3.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
  211. package/server/public/assets/{highlighted-body-OFNGDK62-CaLboCt5.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
  212. package/server/public/assets/{index-Bwejq-5s.js → index-CWeMerGO.js} +147 -144
  213. package/server/public/assets/index-CenuJ3Cw.css +1 -0
  214. package/server/public/assets/{linear-qUWmMZ-c.js → linear-BBbArIcK.js} +1 -1
  215. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
  216. package/server/public/assets/{pieDiagram-4H26LBE5-C4zYulEm.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
  217. package/server/public/assets/{prod-C8VtLuWC.js → prod-B8vYiu52.js} +4 -4
  218. package/server/public/assets/{quadrantDiagram-W4KKPZXB-qP04zyZC.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
  219. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eMPTX_cG.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
  220. package/server/public/assets/{xychartDiagram-2RQKCTM6-Dme1PIt6.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
  221. package/server/public/index.html +2 -2
  222. package/server/{pull-requests-By_BteaL.js → pull-requests-7N8WKseP.js} +1 -1
  223. package/server/{pull-requests-8z2N1UOV.js → pull-requests-_lHueOHW.js} +13 -11
  224. package/server/{queries-ZABd5aXP.js → queries-CjNIf-Ub.js} +1200 -201
  225. package/server/{rally-i_goYmiA.js → rally-CyWT_lNO.js} +3 -3
  226. package/server/{rally-api-DqKqIMNR.js → rally-api-C8e_1JRi.js} +2 -2
  227. package/server/{rally-api-xHazRk0d.js → rally-api-ClOSd-Tt.js} +1 -1
  228. package/server/{rally-client-COYz1vYR.js → rally-client-lc-nokqr.js} +4 -4
  229. package/server/{rally-client-CGWEHaPd.js → rally-client-sgtVqzNU.js} +1 -1
  230. package/server/rally-zhhtXuDP.js +3 -0
  231. package/server/{reap-terminal-sessions-CaMkFOIH.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
  232. package/server/{reap-terminal-sessions-DG9eiMVz.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
  233. package/server/rebuild-stack-CFvcBHsS.js +4 -0
  234. package/server/{rebuild-stack-JUm0jqYP.js → rebuild-stack-lwtsW0GO.js} +26 -35
  235. package/server/{reconstruct-cache-wU79aCee.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
  236. package/server/record-CN0pj4_5.js +3 -0
  237. package/server/{record-update-D3N6WMFR.js → record-update-bLJxAXH4.js} +1 -1
  238. package/server/record-update-dE1Aw83j.js +310 -0
  239. package/server/{recovery-trip-DkzJSej9.js → recovery-trip-BvRWfUXM.js} +2 -2
  240. package/server/{release-engine-DMINVN8S.js → release-engine-Cx48W7z8.js} +5 -5
  241. package/server/{release-set-DeUSOEHy.js → release-set-CQfuN9-v.js} +3 -3
  242. package/server/{remote-b-c5bOce.js → remote-C_2hasl7.js} +3 -3
  243. package/server/{remote-Dr5kGYSZ.js → remote-ChgimyYa.js} +3 -3
  244. package/server/{remote-agents-Ct_WOyke.js → remote-agents-By1ige5O.js} +6 -6
  245. package/server/{remote-agents-D6O_zETW.js → remote-agents-CA3Ihlxj.js} +1 -1
  246. package/server/{remote-completion-Dca3hAaa.js → remote-completion-fVe9e_3u.js} +12 -12
  247. package/server/resume-BFv1PGpA.js +3 -0
  248. package/server/{review-agent-CThvgK2r.js → review-agent-CIGOQYBD.js} +29 -25
  249. package/server/{review-agent-CCum8sGe.js → review-agent-DNboMyW4.js} +1 -1
  250. package/server/{review-artifacts-CXywD0F2.js → review-artifacts-nRDPuMxd.js} +5 -5
  251. package/server/{review-context-OYfKUprb.js → review-context-2uj-YQ8J.js} +70 -26
  252. package/server/review-status-btEYlaxA.js +3 -0
  253. package/server/{review-status-enrichment-crNAtIpL.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
  254. package/server/{review-status-DFRjDFef.js → review-status-kZj_KyCk.js} +77 -28
  255. package/server/{review-status-sync-DpAMD_WO.js → review-status-sync-BTOpxtTC.js} +10 -5
  256. package/server/{review-status-sync-D60PJWNL.js → review-status-sync-DSDK3OMy.js} +1 -1
  257. package/server/{review-verdict-feedback-CpUZl5aE.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
  258. package/server/{review-verdict-feedback-JImjut0z.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
  259. package/server/{rollup-CZ02qgxk.js → rollup-BKQC7jp4.js} +1 -1
  260. package/server/{rollup-SyuF09e4.js → rollup-FGsKki9R.js} +8 -8
  261. package/server/{scanner-Br0Z5S6R.js → scanner-CnqEZeDy.js} +45 -14
  262. package/server/{sequence-io-fxU0DlwW.js → sequence-io-D909zgeH.js} +4 -4
  263. package/server/{sequencer-agent-B5YC5XVP.js → sequencer-agent-CzkcK6P5.js} +5 -5
  264. package/server/server.js +2961 -919
  265. package/server/{service-Bagb90KZ.js → service-CLeAoU6G.js} +55 -54
  266. package/server/{session-fork-BqQxd-V6.js → session-fork-CHI1XvL9.js} +2 -2
  267. package/server/{session-history-XdS0JKp3.js → session-history-BT3IvqhC.js} +4 -4
  268. package/server/settings-66A6uvIA.js +2 -0
  269. package/server/{settings-BNbocWOg.js → settings-BTMvpNFU.js} +3 -3
  270. package/server/{settings-uLc6DEYI.js → settings-C0zgxOGf.js} +2 -2
  271. package/server/{shadow-engineering-D4X_s3fA.js → shadow-engineering-BJfgm-hX.js} +2 -2
  272. package/server/{shadow-state-C_NkP-sa.js → shadow-state-7a-524T8.js} +2 -2
  273. package/server/{shadow-state-CbvsN3qG.js → shadow-state-DnDyjujH.js} +1 -1
  274. package/server/{shadow-utils-CYMRPeRT.js → shadow-utils-Db3oroFG.js} +2 -2
  275. package/server/{ship-log-__QtAFXG.js → ship-log-D9MlVzYU.js} +1 -1
  276. package/server/{smart-compaction-jdMkG1vo.js → smart-compaction-CV2ukKND.js} +1 -1
  277. package/server/{smart-compaction-CLZOWin1.js → smart-compaction-KCYScAU1.js} +7 -7
  278. package/server/{spawn-planning-session-D5OXo8pT.js → spawn-planning-session-DKpdFyOC.js} +35 -27
  279. package/server/{spawn-planning-session-8D6mE033.js → spawn-planning-session-qUC2VWu3.js} +1 -1
  280. package/server/{specialist-completion-CqmduO92.js → specialist-completion-Ky9wCDpb.js} +1 -1
  281. package/server/{specialist-context-CJ-QjFR-.js → specialist-context-Bn3dCGS2.js} +5 -5
  282. package/server/{specialist-handoff-logger-Dnjlwt7g.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
  283. package/server/{specialist-logs-CQnKzuZs.js → specialist-logs-C5p8G7tx.js} +3 -3
  284. package/server/{specialists-Bg9v4z3F.js → specialists-CC4r-c2s.js} +1015 -460
  285. package/server/{specialists-D0gGXMZx.js → specialists-CShuVGWT.js} +1 -1
  286. package/server/specialists-DM6bWjsi.js +3 -0
  287. package/server/{specialists-CwZHb5cb.js → specialists-jiuuyVkp.js} +66 -74
  288. package/server/specs-C8Wsn2XO.js +3 -0
  289. package/server/{src-BMMoA_ba.js → src-CXmtj0im.js} +6 -6
  290. package/server/{src-Bqdtd6po.js → src-CdmnTM2m.js} +5 -5
  291. package/server/{src-k039WVYY.js → src-DtcUOZCq.js} +112 -18
  292. package/server/stack-health-Bn3o8FBX.js +3 -0
  293. package/server/{stack-health-C-ifC7b0.js → stack-health-DxSdG9cW.js} +63 -9
  294. package/server/{stale-task-claims-L7pJkQFL.js → stale-task-claims-KJKxxiiQ.js} +4 -4
  295. package/server/{staleness-_Tr-GwdA.js → staleness-CT34nwr9.js} +1 -1
  296. package/server/{staleness-BID1BKdr.js → staleness-DPm7ClwA.js} +15 -3
  297. package/server/{state-home-CONQvZR0.js → state-home-Cn_Qu8IX.js} +96 -44
  298. package/server/{state-migrate-BeBW0KXA.js → state-migrate-BGg2ZaOt.js} +12 -3
  299. package/server/{stuck-remediation-CKnIryGT.js → stuck-remediation-DYuPRYYw.js} +307 -26
  300. package/server/{stuck-remediation-CsGD5Ksb.js → stuck-remediation-s9_2qfi6.js} +1 -1
  301. package/server/{substrate-bug-weights-service-CpIZILj9.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
  302. package/server/{summary-fork-bX6ax6X7.js → summary-fork-D1RAk9rJ.js} +78 -12
  303. package/server/{summary-fork-agEMsPSo.js → summary-fork-DpcxN9tf.js} +2 -2
  304. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
  305. package/server/supervisor/pty-supervisor.js +2 -1
  306. package/server/supervisor/pty-token-x-ea28Us.js +43 -0
  307. package/server/supervisor-FTJAIsAK.js +2 -0
  308. package/server/{supervisor-Ctt4eRYz.js → supervisor-wM4ooB5O.js} +3 -3
  309. package/server/{swarm-readiness-DdmJVX7y.js → swarm-readiness-DlP_UjHq.js} +4 -4
  310. package/server/{system-prerequisites-DSXBvffY.js → system-prerequisites-DUDj1YHf.js} +56 -29
  311. package/server/{teardown-workspace-DDCf5n-a.js → teardown-workspace-DeTTImn-.js} +15 -15
  312. package/server/{test-agent-queue-BJZ9Nfcc.js → test-agent-queue-MbxX5vqq.js} +7 -7
  313. package/server/{test-verdict-Cp5tljlJ.js → test-verdict-bWYBtqBg.js} +1 -1
  314. package/server/{test-verdict-D_-sXIz_.js → test-verdict-gscuksPv.js} +1 -1
  315. package/server/{tldr-daemon-B8_oT5gx.js → tldr-daemon-BYFkts95.js} +1 -1
  316. package/server/{tldr-daemon-BQFmmFp0.js → tldr-daemon-C-69c3OI.js} +2 -2
  317. package/server/tmux-B6z7h_vZ.js +3 -0
  318. package/server/{tmux-L5LgvGLp.js → tmux-R7N7y-Mh.js} +76 -44
  319. package/server/{token-BkQLy4yS.js → token-BK6t8BIT.js} +2 -2
  320. package/server/token-util-DuPuNriz.js +3 -0
  321. package/server/{token-util-DI8sGlmF.js → token-util-DxXu-vd1.js} +1 -1
  322. package/server/{tracker-config-DdT-nUAM.js → tracker-config-G6latr8C.js} +2 -2
  323. package/server/{tracker-utils-DV3h1FYG.js → tracker-utils-B4ylXZQK.js} +1 -1
  324. package/server/{tracker-utils-CawsPSS2.js → tracker-utils-DHv5pSDT.js} +2 -2
  325. package/server/{traefik-connect-C6mJckNs.js → traefik-connect-Df2uXPsQ.js} +1 -1
  326. package/server/{tunnel-IdK1iTHx.js → tunnel-CDVKJpRv.js} +3 -3
  327. package/server/{tunnel-BIFl98rc.js → tunnel-DGdUkGoZ.js} +1 -1
  328. package/server/{types-7-GnJn0t.js → types-5M0lupud.js} +1 -1
  329. package/server/{uat-train-0Ujk8GCv.js → uat-train-B05BWkp-.js} +1 -1
  330. package/server/{uat-train-j0cPeMSj.js → uat-train-DDSrSoV1.js} +28 -28
  331. package/server/validate-IfDGkaVR.js +177 -0
  332. package/server/{validation-DcAgXTQp.js → validation-CC9OPqJZ.js} +1 -1
  333. package/server/{validation-CabEISJT.js → validation-Dw1pzDzr.js} +259 -9
  334. package/server/{verification-artifact-Ck1tefmz.js → verification-artifact-B3itKTxu.js} +1 -1
  335. package/server/{verification-artifact-BuTA1QbL.js → verification-artifact-TVFSz_q1.js} +1 -1
  336. package/server/{verification-runner-DlJezzef.js → verification-runner-BW4HOKAz.js} +1 -1
  337. package/server/{verification-runner-FiuAZ-H2.js → verification-runner-CkgX6EtI.js} +174 -124
  338. package/server/{vtt-parser-BnRsYzcz.js → vtt-parser-DYPbKcIJ.js} +1 -1
  339. package/server/{work-agent-prompt-DLthEPAq.js → work-agent-prompt-Du8Vh2aJ.js} +13 -13
  340. package/server/workflows-BQu4RFQ-.js +2 -0
  341. package/server/{workflows-BZNNYkGC.js → workflows-mbQzh6mQ.js} +39 -77
  342. package/server/{workspace-3IC-UkAi.js → workspace--8tnhDI0.js} +1 -1
  343. package/server/{workspace-D9ppycdg.js → workspace-BPUws1-_.js} +3 -3
  344. package/server/{workspace-config-Bigl_-Lk.js → workspace-config-CIVWZOQr.js} +1 -1
  345. package/server/{workspace-manager-ClkCIWTe.js → workspace-manager-CBhNdzE4.js} +76 -18
  346. package/server/workspace-manager-CWT55qeI.js +3 -0
  347. package/server/{workspace-metadata-BE0efUv_.js → workspace-metadata-BzHnwwX4.js} +1 -1
  348. package/server/{workspace-metadata-tiSRIWJP.js → workspace-metadata-_WygnyoX.js} +2 -2
  349. package/server/{workspaces-CFPcL0vl.js → workspaces-Do_9J0LQ.js} +309 -124
  350. package/sync-sources/agents/pan-inspect-agent.md +1 -1
  351. package/sync-sources/agents/pan-merge-agent.md +1 -1
  352. package/sync-sources/agents/pan-planning-agent.md +4 -4
  353. package/sync-sources/agents/pan-work-agent.md +1 -1
  354. package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
  355. package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
  356. package/sync-sources/hooks/record-cost-event.js +369 -75
  357. package/sync-sources/hooks/session-start-hook +7 -0
  358. package/sync-sources/hooks/work-agent-stop-hook +1 -1
  359. package/sync-sources/rules/per-bead-durability.md +1 -1
  360. package/sync-sources/rules/prd-authoring.md +1 -1
  361. package/sync-sources/skills/feature-work/SKILL.md +1 -1
  362. package/sync-sources/skills/okf/README.md +11 -3
  363. package/sync-sources/skills/okf/SKILL.md +12 -1
  364. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  365. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  366. package/sync-sources/skills/pan/SKILL.md +2 -2
  367. package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
  368. package/sync-sources/skills/pan-approve/SKILL.md +1 -1
  369. package/sync-sources/skills/pan-close/SKILL.md +1 -1
  370. package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
  371. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  372. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  373. package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
  374. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  375. package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
  376. package/sync-sources/skills/pan-plan/SKILL.md +6 -6
  377. package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
  378. package/sync-sources/skills/pan-recap/SKILL.md +2 -2
  379. package/sync-sources/skills/pan-review/SKILL.md +1 -1
  380. package/sync-sources/skills/pan-start/SKILL.md +7 -3
  381. package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
  382. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  383. package/sync-sources/skills/pan-task/SKILL.md +2 -2
  384. package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
  385. package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
  386. package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
  387. package/sync-sources/skills/plan/SKILL.md +11 -11
  388. package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
  389. package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
  390. package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
  391. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  392. package/server/agent-state-Co5Sy2Fw.js +0 -3
  393. package/server/agents-DyHKlq1I.js +0 -3
  394. package/server/cli-BRORS9qY.js +0 -3
  395. package/server/codex-DNyiQDKW.js +0 -3
  396. package/server/context-layers-15gDOk20.js +0 -165
  397. package/server/context-layers-DlQKkHH2.js +0 -4
  398. package/server/deacon-swarm-CV54eNmU.js +0 -2
  399. package/server/dist-j64RzSrQ.js +0 -3
  400. package/server/flywheel-6WHU4O7A.js +0 -207
  401. package/server/flywheel-COR0mbRI.js +0 -522
  402. package/server/flywheel-Ctr5uuvo.js +0 -2
  403. package/server/forge-B0_opi-V.js +0 -2
  404. package/server/git-utils-CsKGnzFA.js +0 -3
  405. package/server/hume-BmhvfVbV.js +0 -3
  406. package/server/inspect-agent-Dq0z1k3H.js +0 -2
  407. package/server/layers-Cp1To4L8.js +0 -93
  408. package/server/lifecycle-io-DmY2qwCn.js +0 -3
  409. package/server/merge-blockers-BYjeXrVN.js +0 -41
  410. package/server/merge-ops-DwWCkSgo.js +0 -2
  411. package/server/merge-set-DiISXcC-.js +0 -139
  412. package/server/projects-BKkwpH6q.js +0 -3
  413. package/server/public/assets/index-Bdc4V9ba.css +0 -1
  414. package/server/public/assets/mermaid-GHXKKRXX-B5v_r7cI.js +0 -1
  415. package/server/rally-OSJXdiHK.js +0 -3
  416. package/server/rebuild-stack-CKjJAI8L.js +0 -3
  417. package/server/record-rwK-nKv_.js +0 -3
  418. package/server/record-update-Crz74r-6.js +0 -168
  419. package/server/resume-wZZsWtzz.js +0 -3
  420. package/server/review-status-Bnh-rdkY.js +0 -3
  421. package/server/settings-BlUsVaUc.js +0 -2
  422. package/server/specialists-Dqe6_HE5.js +0 -3
  423. package/server/specs-BhOKBzqk.js +0 -3
  424. package/server/stack-health-Bd06frFn.js +0 -3
  425. package/server/supervisor-COVHrBTg.js +0 -2
  426. package/server/tmux-BAvtac_u.js +0 -3
  427. package/server/token-util-BArZLN6w.js +0 -3
  428. package/server/workflows-C4mR0Reb.js +0 -2
  429. package/server/workspace-manager-B1WOfKvB.js +0 -3
@@ -1,14 +1,15 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Hn as init_projects, In as getProjectSync, It as readIssueRecord, Nt as init_record, Rt as readIssueRecordSync, jt as getIssueWorkspacePath, nr as resolveProjectFromIssueSync } from "./config-yaml-ig8Nwtiw.js";
2
+ import { Et as getIssueWorkspacePath, Nt as readIssueRecordSync, Ot as init_record, Tn as init_projects, fn as findProjectByPathSync, jt as readIssueRecord, nn as init_state_read_home, rn as resolveStateReadHomeSync, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
3
3
  import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-DDlOIAML.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-D4iNWMA5.js";
5
- import { n as updateIssueRecord, t as init_record_update } from "./record-update-Crz74r-6.js";
6
- import { d as init_cost_sync, i as getCostBreakdownByStageAndModelSync, o as getCostForIssueSync } from "./cost-sync-D_cre6WM.js";
7
- import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-B6FVsYF9.js";
8
- import { c as init_review_status_sync, d as init_review_status_normalize, f as normalizeReviewStatusSync, l as markWorkspaceStuck$1, n as deleteReviewStatus, o as getReviewStatusFromDbSync, r as getAllReviewStatusesFromDb, s as getReviewStatusesFromDb, u as upsertReviewStatusSync } from "./review-status-sync-DpAMD_WO.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BEqFxlJc.js";
5
+ import { n as updateIssueRecord, t as init_record_update } from "./record-update-dE1Aw83j.js";
6
+ import { d as init_cost_sync, i as getCostBreakdownByStageAndModelSync, o as getCostForIssueSync } from "./cost-sync-BsN6ER0n.js";
7
+ import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-BXkJzDC4.js";
8
+ import { c as init_review_status_sync, d as init_review_status_normalize, f as normalizeReviewStatusSync, l as markWorkspaceStuck$1, n as deleteReviewStatus, o as getReviewStatusFromDbSync, r as getAllReviewStatusesFromDb, s as getReviewStatusesFromDb, t as clearWorkspaceStuck$1, u as upsertReviewStatusSync } from "./review-status-sync-BTOpxtTC.js";
9
9
  import { a as registerReviewStatusMapReader, n as init_review_status_source } from "./review-status-source-CxuEjLGg.js";
10
10
  import { a as PAN_DIRNAME, p as init_types, r as PAN_CONTINUES_DIRNAME } from "./types-hraoaQIp.js";
11
- import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DiISXcC-.js";
11
+ import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DJ8-UErs.js";
12
+ import { o as init_lifecycle, r as XBRIEF_FILENAME_SUFFIX, t as LEGACY_VBRIEF_FILENAME_SUFFIX } from "./lifecycle-yPd___5E.js";
12
13
  import { dirname, join } from "node:path";
13
14
  import { Data, Effect } from "effect";
14
15
  import { join as join$1 } from "path";
@@ -270,6 +271,8 @@ function projectPipeline(issueId, status, existing) {
270
271
  strikeReadyAt: status.strikeReadyAt,
271
272
  strikeLandingState: status.strikeLandingState,
272
273
  strikeRecoveryCount: status.strikeRecoveryCount,
274
+ strikeTransportRetryCount: status.strikeTransportRetryCount,
275
+ strikeNextAttemptAt: status.strikeNextAttemptAt,
273
276
  strikeLandingAttempts: status.strikeLandingAttempts
274
277
  };
275
278
  }
@@ -289,10 +292,21 @@ function projectMerges(issueId) {
289
292
  if (!mergeSet) return [];
290
293
  return mergeSet.repos.map((r) => r.artifactUrl).filter((url) => typeof url === "string" && url.length > 0);
291
294
  }
295
+ function resolveContinuePath(projectRoot, issueId) {
296
+ const stateHome = resolveStateReadHomeSync(findProjectByPathSync(projectRoot) ?? {
297
+ name: projectRoot,
298
+ path: projectRoot
299
+ });
300
+ const basePath = join(stateHome.migrated ? join(stateHome.root, PAN_CONTINUES_DIRNAME) : join(stateHome.root, PAN_DIRNAME, PAN_CONTINUES_DIRNAME), issueId.toLowerCase());
301
+ const canonicalPath = `${basePath}${XBRIEF_FILENAME_SUFFIX}`;
302
+ const legacyPath = `${basePath}${LEGACY_VBRIEF_FILENAME_SUFFIX}`;
303
+ if (existsSync(canonicalPath)) return canonicalPath;
304
+ if (existsSync(legacyPath)) return legacyPath;
305
+ return canonicalPath;
306
+ }
292
307
  async function readLegacyContinueText(projectRoot, issueId) {
293
- const path = join(projectRoot, PAN_DIRNAME, PAN_CONTINUES_DIRNAME, `${issueId.toLowerCase()}.vbrief.json`);
294
308
  try {
295
- return await promises.readFile(path, "utf-8");
309
+ return await promises.readFile(resolveContinuePath(projectRoot, issueId), "utf-8");
296
310
  } catch {
297
311
  return null;
298
312
  }
@@ -407,6 +421,8 @@ var init_records = __esmMin((() => {
407
421
  init_cost_sync();
408
422
  init_merge_set();
409
423
  init_projects();
424
+ init_state_read_home();
425
+ init_lifecycle();
410
426
  init_agent_state_sync();
411
427
  init_record();
412
428
  init_record_update();
@@ -487,6 +503,8 @@ function durableSubset(p) {
487
503
  strikeReadyAt: p.strikeReadyAt,
488
504
  strikeLandingState: p.strikeLandingState,
489
505
  strikeRecoveryCount: p.strikeRecoveryCount,
506
+ strikeTransportRetryCount: p.strikeTransportRetryCount,
507
+ strikeNextAttemptAt: p.strikeNextAttemptAt,
490
508
  strikeLandingAttempts: p.strikeLandingAttempts,
491
509
  closedOut: p.closedOut,
492
510
  closedOutAt: p.closedOutAt
@@ -509,10 +527,12 @@ function writeWorkspaceVerdictFallbackSync(issueId, status) {
509
527
  return;
510
528
  }
511
529
  mkdirSync(dirname(path), { recursive: true });
530
+ const clearedFields = FALLBACK_CLEARABLE_FIELDS.filter((field) => status[field] === void 0);
512
531
  const payload = {
513
532
  issueId: issueId.toUpperCase(),
514
533
  updatedAt: status.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
515
- pipeline: durableSubset(status)
534
+ pipeline: durableSubset(status),
535
+ ...clearedFields.length > 0 ? { clearedFields } : {}
516
536
  };
517
537
  writeFileSync(path, JSON.stringify(payload, null, 2));
518
538
  console.warn(`[review-status] journal write failed for ${issueId} — durable verdict written to workspace fallback ${path}; the host sweeps it on the next status read (PAN-2583)`);
@@ -526,7 +546,11 @@ function readWorkspaceVerdictFallbackSync(issueId) {
526
546
  if (!path || !existsSync(path)) return null;
527
547
  const parsed = JSON.parse(readFileSync(path, "utf-8"));
528
548
  if (!parsed?.updatedAt || !parsed.pipeline) return null;
529
- return parsed;
549
+ const clearedFields = Array.isArray(parsed.clearedFields) ? parsed.clearedFields.filter((field) => typeof field === "string" && FALLBACK_CLEARABLE_FIELDS.includes(field)) : [];
550
+ return {
551
+ ...parsed,
552
+ clearedFields
553
+ };
530
554
  } catch {
531
555
  return null;
532
556
  }
@@ -554,12 +578,15 @@ function readJournalStatusSync(issueId) {
554
578
  if (fallback && fallbackNewer) {
555
579
  const base = p ? durableSubset(p) : {};
556
580
  const overlay = Object.fromEntries(Object.entries(fallback.pipeline).filter(([, value]) => value !== void 0));
581
+ const durable = {
582
+ ...base,
583
+ ...overlay
584
+ };
585
+ for (const field of fallback.clearedFields ?? []) delete durable[field];
557
586
  return {
558
587
  updatedAt: fallback.updatedAt,
559
- durable: {
560
- ...base,
561
- ...overlay
562
- }
588
+ durable,
589
+ ...fallback.clearedFields?.length ? { clearedFields: fallback.clearedFields } : {}
563
590
  };
564
591
  }
565
592
  if (!p) return null;
@@ -568,12 +595,13 @@ function readJournalStatusSync(issueId) {
568
595
  durable: durableSubset(p)
569
596
  };
570
597
  }
571
- var pendingJournalWrites;
598
+ var pendingJournalWrites, FALLBACK_CLEARABLE_FIELDS;
572
599
  var init_review_status_record_sync = __esmMin((() => {
573
600
  init_records();
574
601
  init_record();
575
602
  init_projects();
576
603
  pendingJournalWrites = /* @__PURE__ */ new Set();
604
+ FALLBACK_CLEARABLE_FIELDS = ["strikeTransportRetryCount", "strikeNextAttemptAt"];
577
605
  }));
578
606
  //#endregion
579
607
  //#region ../../lib/review-dispatch-decision.ts
@@ -686,6 +714,7 @@ function loadReadyForMergeFlags(issueIds) {
686
714
  readyForMerge: false
687
715
  } };
688
716
  for (const [key, value] of Object.entries(journal.durable)) if (value !== void 0) merged[key] = value;
717
+ for (const key of journal.clearedFields ?? []) delete merged[key];
689
718
  merged.issueId = issueId;
690
719
  merged.updatedAt = journal.updatedAt;
691
720
  merged.readyForMerge = (merged.blockerReasons?.length ?? 0) > 0 ? false : reviewGatesPassedSync(merged);
@@ -788,7 +817,7 @@ function setReviewStatusSync(issueId, update, existing) {
788
817
  });
789
818
  if (readyForMerge && !status.readyForMerge && updated.prUrl) (async () => {
790
819
  try {
791
- const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CU14oYzP.js");
820
+ const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-ClZ2lk8D.js");
792
821
  if (!isGitHubAppConfigured()) return;
793
822
  const prMatch = updated.prUrl.match(/github\.com\/([^/]+)\/([^/]+)\/pull/);
794
823
  if (!prMatch) return;
@@ -1071,7 +1100,7 @@ function resetPipelineVerdictsForWorkStartSync(issueId, options = {}) {
1071
1100
  */
1072
1101
  async function deliverReviewVerdictFeedbackHostSide(issueId, status) {
1073
1102
  try {
1074
- const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-JImjut0z.js");
1103
+ const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-CTd4QMBu.js");
1075
1104
  if ((await Effect.runPromise(deliverReviewVerdictFeedback({
1076
1105
  issueId,
1077
1106
  verdict: status.reviewStatus === "failed" ? "failed" : "blocked",
@@ -1104,7 +1133,7 @@ function maybeAutoDispatchReviewHostSide(issueId, status) {
1104
1133
  }
1105
1134
  async function dispatchReviewHostSide(issueId, prUrl) {
1106
1135
  try {
1107
- const { resolveProjectFromIssueSync } = await import("./projects-BKkwpH6q.js");
1136
+ const { resolveProjectFromIssueSync } = await import("./projects-vjjcmiN8.js");
1108
1137
  const resolved = resolveProjectFromIssueSync(issueId);
1109
1138
  if (!resolved) return;
1110
1139
  const { existsSync } = await import("fs");
@@ -1120,7 +1149,7 @@ async function dispatchReviewHostSide(issueId, prUrl) {
1120
1149
  });
1121
1150
  branch = stdout.trim() || branch;
1122
1151
  } catch {}
1123
- const { spawnReviewRoleForIssue } = await import("./review-agent-CCum8sGe.js");
1152
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DNboMyW4.js");
1124
1153
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
1125
1154
  issueId,
1126
1155
  workspace,
@@ -1144,13 +1173,13 @@ function maybeRecoverTestVerdictHostSide(issueId, status) {
1144
1173
  }
1145
1174
  async function recoverTestVerdictHostSide(issueId) {
1146
1175
  try {
1147
- const { resolveProjectFromIssueSync } = await import("./projects-BKkwpH6q.js");
1176
+ const { resolveProjectFromIssueSync } = await import("./projects-vjjcmiN8.js");
1148
1177
  const resolved = resolveProjectFromIssueSync(issueId);
1149
1178
  if (!resolved) return;
1150
1179
  const { existsSync } = await import("fs");
1151
1180
  const workspace = join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
1152
1181
  if (!existsSync(workspace)) return;
1153
- const { readTestVerdictArtifact } = await import("./test-verdict-D_-sXIz_.js");
1182
+ const { readTestVerdictArtifact } = await import("./test-verdict-gscuksPv.js");
1154
1183
  const artifact = readTestVerdictArtifact(workspace);
1155
1184
  if (!artifact) return;
1156
1185
  setReviewStatusSync(issueId, {
@@ -1164,13 +1193,13 @@ async function recoverTestVerdictHostSide(issueId) {
1164
1193
  }
1165
1194
  async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
1166
1195
  try {
1167
- const { resolveProjectFromIssueSync } = await import("./projects-BKkwpH6q.js");
1196
+ const { resolveProjectFromIssueSync } = await import("./projects-vjjcmiN8.js");
1168
1197
  const resolved = resolveProjectFromIssueSync(issueId);
1169
1198
  const workspace = resolved ? join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`) : void 0;
1170
1199
  const notes = status.testNotes;
1171
1200
  let feedbackPath;
1172
1201
  try {
1173
- const { writeFeedbackFile } = await import("./feedback-writer-Bx5z11mF.js");
1202
+ const { writeFeedbackFile } = await import("./feedback-writer-D3a22RCd.js");
1174
1203
  const r = await Effect.runPromise(writeFeedbackFile({
1175
1204
  issueId,
1176
1205
  workspacePath: workspace,
@@ -1182,10 +1211,10 @@ async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
1182
1211
  if (r.success) feedbackPath = r.filePath;
1183
1212
  } catch {}
1184
1213
  const message = `SPECIALIST FEEDBACK: test-agent reported FAILED for ${issueId}.\n\n${feedbackPath ? `MUST READ: ${feedbackPath}\n\n` : ""}${notes ? `${notes.slice(0, 400)}\n\n` : ""}Fix the failing tests, commit and push, then re-run pan done ${issueId}. Do NOT stop at the prompt.`;
1185
- const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-DS6NUuSs.js");
1214
+ const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-CoFDHiM8.js");
1186
1215
  const target = await resolveIssueFeedbackTarget(issueId);
1187
1216
  if ("agentId" in target) {
1188
- const { messageAgent } = await import("./agents-DyHKlq1I.js");
1217
+ const { messageAgent } = await import("./agents-wi9NWzs2.js");
1189
1218
  await messageAgent(target.agentId, message, "internal", { owesRework: true });
1190
1219
  console.log(`[review-status] delivered test failure to ${target.agentId} for ${issueId} (host-side)`);
1191
1220
  } else await surfaceIssueFeedbackNeedsYou(issueId, target.reason, {
@@ -1215,6 +1244,7 @@ function getReviewStatusSync(issueId) {
1215
1244
  readyForMerge: false
1216
1245
  } };
1217
1246
  for (const [key, value] of Object.entries(journal.durable)) if (value !== void 0) merged[key] = value;
1247
+ for (const key of journal.clearedFields ?? []) delete merged[key];
1218
1248
  merged.issueId = issueId;
1219
1249
  merged.updatedAt = journal.updatedAt;
1220
1250
  merged.readyForMerge = (merged.blockerReasons?.length ?? 0) > 0 ? false : reviewGatesPassedSync(merged);
@@ -1343,6 +1373,25 @@ function markWorkspaceStuck(issueId, reason, details) {
1343
1373
  }
1344
1374
  }
1345
1375
  /**
1376
+ * Clear the stuck flag for a workspace.
1377
+ * Called when the human clicks "Unstick" in the dashboard.
1378
+ * Re-enables Deacon patrol for this workspace.
1379
+ */
1380
+ function clearWorkspaceStuck(issueId) {
1381
+ try {
1382
+ clearWorkspaceStuck$1(issueId);
1383
+ console.log(`[review-status] Cleared stuck state for ${issueId}`);
1384
+ const updated = getReviewStatusSync(issueId);
1385
+ if (updated) notifyPipelineSync({
1386
+ type: "status_changed",
1387
+ issueId,
1388
+ status: updated
1389
+ });
1390
+ } catch (err) {
1391
+ console.error(`[review-status] Failed to clear stuck state for ${issueId}:`, err);
1392
+ }
1393
+ }
1394
+ /**
1346
1395
  * Set or clear the operator-requested deacon-ignore flag. When set, Deacon
1347
1396
  * patrol skips the issue entirely on every cycle. Distinct from `stuck`, which
1348
1397
  * is a system-set failure marker that also suppresses patrol.
@@ -1416,6 +1465,6 @@ var init_review_status = __esmMin((() => {
1416
1465
  });
1417
1466
  }));
1418
1467
  //#endregion
1419
- export { AGENT_COLUMNS_FOR_DB as C, saveOverdeckAgentStateSync as D, listOverdeckAgentStatesSync as E, stateToOverdeckParamsForDb as O, needsReviewDispatch as S, init_agent_state_sync as T, setDeaconIgnored as _, fixStuckReadyForMerge as a, verificationSatisfied as b, init_review_status as c, loadReviewStatusesForIssues as d, markWorkspaceStuck as f, setAutoMerge as g, reviewGatesPassedSync as h, fixStuckCommentedReviews as i, loadReadyForMergeFlags as l, resetPipelineVerdictsForWorkStartSync as m, clearReviewStatus as n, getReviewStatus as o, mergeGateEligibility as p, clearStuckMergeStatuses as r, getReviewStatusSync as s, ReviewStatusError as t, loadReviewStatuses as u, setReviewStatus as v, getOverdeckAgentStateSync as w, init_review_dispatch_decision as x, setReviewStatusSync as y };
1468
+ export { needsReviewDispatch as C, listOverdeckAgentStatesSync as D, init_agent_state_sync as E, saveOverdeckAgentStateSync as O, init_review_dispatch_decision as S, getOverdeckAgentStateSync as T, setAutoMerge as _, fixStuckCommentedReviews as a, setReviewStatusSync as b, getReviewStatusSync as c, loadReviewStatuses as d, loadReviewStatusesForIssues as f, reviewGatesPassedSync as g, resetPipelineVerdictsForWorkStartSync as h, clearWorkspaceStuck as i, stateToOverdeckParamsForDb as k, init_review_status as l, mergeGateEligibility as m, clearReviewStatus as n, fixStuckReadyForMerge as o, markWorkspaceStuck as p, clearStuckMergeStatuses as r, getReviewStatus as s, ReviewStatusError as t, loadReadyForMergeFlags as u, setDeaconIgnored as v, AGENT_COLUMNS_FOR_DB as w, verificationSatisfied as x, setReviewStatus as y };
1420
1469
 
1421
- //# sourceMappingURL=review-status-DFRjDFef.js.map
1470
+ //# sourceMappingURL=review-status-kZj_KyCk.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-D4iNWMA5.js";
2
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BEqFxlJc.js";
3
3
  import { Effect } from "effect";
4
4
  //#region ../../lib/review-status-normalize.ts
5
5
  function normalizeReviewStatusSync(status) {
@@ -81,6 +81,8 @@ function rowToReviewStatus(row, history) {
81
81
  strikeReadyAt: msToIso(row.strike_ready_at),
82
82
  strikeLandingState: row.strike_landing_state ?? void 0,
83
83
  strikeRecoveryCount: row.strike_recovery_count ?? void 0,
84
+ strikeTransportRetryCount: row.strike_transport_retry_count ?? void 0,
85
+ strikeNextAttemptAt: msToIso(row.strike_next_attempt_at),
84
86
  strikeLandingAttempts: row.strike_landing_attempts ? JSON.parse(row.strike_landing_attempts) : void 0,
85
87
  history: history.length > 0 ? history : void 0
86
88
  });
@@ -117,9 +119,10 @@ function upsertReviewStatusSync(status) {
117
119
  deacon_ignored, deacon_ignored_at, deacon_ignored_reason,
118
120
  blocker_reasons, last_verified_commit, merge_step, auto_merge,
119
121
  strike_ready_head, strike_ready_at, strike_landing_state,
120
- strike_recovery_count, strike_landing_attempts
122
+ strike_recovery_count, strike_transport_retry_count,
123
+ strike_next_attempt_at, strike_landing_attempts
121
124
  ) VALUES (
122
- ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
125
+ ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
123
126
  )
124
127
  ON CONFLICT(issue_id) DO UPDATE SET
125
128
  review_status = excluded.review_status,
@@ -167,8 +170,10 @@ function upsertReviewStatusSync(status) {
167
170
  strike_ready_at = excluded.strike_ready_at,
168
171
  strike_landing_state = excluded.strike_landing_state,
169
172
  strike_recovery_count = excluded.strike_recovery_count,
173
+ strike_transport_retry_count = excluded.strike_transport_retry_count,
174
+ strike_next_attempt_at = excluded.strike_next_attempt_at,
170
175
  strike_landing_attempts = excluded.strike_landing_attempts
171
- `).run(s.issueId, s.reviewStatus, s.testStatus, s.mergeStatus ?? null, s.inspectStatus ?? null, null, isoToMs(s.inspectStartedAt), s.inspectBeadId ?? null, s.inspectOwnerSession ?? null, s.verificationStatus ?? null, null, s.verificationCycleCount ?? null, s.verificationMaxCycles ?? null, null, null, null, s.releaseStatus ?? null, s.releaseNotes ?? null, isoToMs(s.updatedAt) ?? Date.now(), s.readyForMerge ? 1 : 0, s.autoRequeueCount ?? null, s.mergeRetryCount ?? null, s.prUrl ?? null, s.prHeadSha ?? null, s.prNumber ?? null, s.stuck ? 1 : 0, s.stuckReason ?? null, isoToMs(s.stuckAt), s.stuckDetails ?? null, s.reviewedAtCommit ?? null, isoToMs(s.reviewSpawnedAt), isoToMs(s.conflictResolutionDispatchedAt), s.testRetryCount ?? null, s.reviewRetryCount ?? null, isoToMs(s.recoveryStartedAt), s.deaconIgnored ? 1 : 0, isoToMs(s.deaconIgnoredAt), s.deaconIgnoredReason ?? null, s.blockerReasons ? JSON.stringify(s.blockerReasons) : null, s.lastVerifiedCommit ?? null, s.mergeStep ?? null, s.autoMerge === void 0 ? null : s.autoMerge ? 1 : 0, s.strikeReadyHead ?? null, isoToMs(s.strikeReadyAt), s.strikeLandingState ?? null, s.strikeRecoveryCount ?? null, s.strikeLandingAttempts ? JSON.stringify(s.strikeLandingAttempts) : null);
176
+ `).run(s.issueId, s.reviewStatus, s.testStatus, s.mergeStatus ?? null, s.inspectStatus ?? null, null, isoToMs(s.inspectStartedAt), s.inspectBeadId ?? null, s.inspectOwnerSession ?? null, s.verificationStatus ?? null, null, s.verificationCycleCount ?? null, s.verificationMaxCycles ?? null, null, null, null, s.releaseStatus ?? null, s.releaseNotes ?? null, isoToMs(s.updatedAt) ?? Date.now(), s.readyForMerge ? 1 : 0, s.autoRequeueCount ?? null, s.mergeRetryCount ?? null, s.prUrl ?? null, s.prHeadSha ?? null, s.prNumber ?? null, s.stuck ? 1 : 0, s.stuckReason ?? null, isoToMs(s.stuckAt), s.stuckDetails ?? null, s.reviewedAtCommit ?? null, isoToMs(s.reviewSpawnedAt), isoToMs(s.conflictResolutionDispatchedAt), s.testRetryCount ?? null, s.reviewRetryCount ?? null, isoToMs(s.recoveryStartedAt), s.deaconIgnored ? 1 : 0, isoToMs(s.deaconIgnoredAt), s.deaconIgnoredReason ?? null, s.blockerReasons ? JSON.stringify(s.blockerReasons) : null, s.lastVerifiedCommit ?? null, s.mergeStep ?? null, s.autoMerge === void 0 ? null : s.autoMerge ? 1 : 0, s.strikeReadyHead ?? null, isoToMs(s.strikeReadyAt), s.strikeLandingState ?? null, s.strikeRecoveryCount ?? null, s.strikeTransportRetryCount ?? null, isoToMs(s.strikeNextAttemptAt), s.strikeLandingAttempts ? JSON.stringify(s.strikeLandingAttempts) : null);
172
177
  if (s.history && s.history.length > 0) {
173
178
  const insertHistory = db.prepare(`INSERT OR IGNORE INTO status_history (issue_id, type, status, timestamp, notes)
174
179
  VALUES (?, ?, ?, ?, ?)`);
@@ -291,4 +296,4 @@ var init_review_status_sync = __esmMin((() => {
291
296
  //#endregion
292
297
  export { getMergeBlockerReconcileCandidatesSync as a, init_review_status_sync as c, init_review_status_normalize as d, normalizeReviewStatusSync as f, getMergeBlockerReconcileCandidates as i, markWorkspaceStuck as l, deleteReviewStatus as n, getReviewStatusFromDbSync as o, getAllReviewStatusesFromDb as r, getReviewStatusesFromDb as s, clearWorkspaceStuck as t, upsertReviewStatusSync as u };
293
298
 
294
- //# sourceMappingURL=review-status-sync-DpAMD_WO.js.map
299
+ //# sourceMappingURL=review-status-sync-BTOpxtTC.js.map
@@ -1,3 +1,3 @@
1
- import { c as init_review_status_sync, t as clearWorkspaceStuck } from "./review-status-sync-DpAMD_WO.js";
1
+ import { c as init_review_status_sync, t as clearWorkspaceStuck } from "./review-status-sync-BTOpxtTC.js";
2
2
  init_review_status_sync();
3
3
  export { clearWorkspaceStuck };
@@ -1,10 +1,10 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Hn as init_projects, nr as resolveProjectFromIssueSync } from "./config-yaml-ig8Nwtiw.js";
3
- import { c as init_review_status, s as getReviewStatusSync } from "./review-status-DFRjDFef.js";
4
- import { L as messageAgent, s as init_agents } from "./queries-ZABd5aXP.js";
2
+ import { Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
3
+ import { c as getReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
4
+ import { X as messageAgent, b as init_agents } from "./queries-CjNIf-Ub.js";
5
5
  import { a as PAN_DIRNAME, p as init_types } from "./types-hraoaQIp.js";
6
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-BXP6g75N.js";
7
- import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-DZ-iAnAa.js";
6
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-CY5L1lB7.js";
7
+ import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-7mqqwrX6.js";
8
8
  import { join } from "node:path";
9
9
  import { Effect } from "effect";
10
10
  import { existsSync } from "node:fs";
@@ -144,4 +144,4 @@ var init_review_verdict_feedback = __esmMin((() => {
144
144
  //#endregion
145
145
  export { init_review_verdict_feedback as n, postPrComment as r, deliverReviewVerdictFeedback as t };
146
146
 
147
- //# sourceMappingURL=review-verdict-feedback-CpUZl5aE.js.map
147
+ //# sourceMappingURL=review-verdict-feedback-CCjVA7Uk.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-CpUZl5aE.js";
1
+ import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-CCjVA7Uk.js";
2
2
  init_review_verdict_feedback();
3
3
  export { deliverReviewVerdictFeedback };
@@ -1,3 +1,3 @@
1
- import { n as commitStatusRollup, r as init_rollup, s as synthesizeStatusRollup } from "./rollup-SyuF09e4.js";
1
+ import { n as commitStatusRollup, r as init_rollup, s as synthesizeStatusRollup } from "./rollup-FGsKki9R.js";
2
2
  init_rollup();
3
3
  export { commitStatusRollup, synthesizeStatusRollup };
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { T as MemoryStatus, t as init_src } from "./src-k039WVYY.js";
3
- import { a as resolveArchiveDir, f as resolveStatusFile, i as init_paths, l as resolveObservationsFile, n as ensureDir, r as ensureParentDir, u as resolvePendingDir } from "./paths-DooHpt9p.js";
4
- import { i as init_settings, n as getMemoryRollupPendingThreshold } from "./settings-BNbocWOg.js";
5
- import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers } from "./providers-BDDPULlp.js";
2
+ import { O as MemoryStatus, t as init_src } from "./src-DtcUOZCq.js";
3
+ import { a as resolveArchiveDir, f as resolveStatusFile, i as init_paths, l as resolveObservationsFile, n as ensureDir, r as ensureParentDir, u as resolvePendingDir } from "./paths-D-xWGHdh.js";
4
+ import { i as init_settings, n as getMemoryRollupPendingThreshold } from "./settings-BTMvpNFU.js";
5
+ import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers } from "./providers-qQAwGQDW.js";
6
6
  import { Result, Schema } from "effect";
7
7
  import { dirname } from "path";
8
8
  import { randomUUID } from "crypto";
@@ -98,8 +98,8 @@ async function enqueueStatusRollupEvent(job) {
98
98
  await configuredStatusRollupProcessor(job);
99
99
  return;
100
100
  }
101
- const { initEventStore } = await import("./event-store-CpBGsO6_.js");
102
- const { synthesizeStatusRollup, commitStatusRollup } = await import("./rollup-CZ02qgxk.js");
101
+ const { initEventStore } = await import("./event-store-EV2cMiXj.js");
102
+ const { synthesizeStatusRollup, commitStatusRollup } = await import("./rollup-BKQC7jp4.js");
103
103
  await (await initEventStore()).appendAsync({
104
104
  type: "memory.rollup_triggered",
105
105
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -295,7 +295,7 @@ async function clearPendingTurns(projectId, issueId, pendingTurns) {
295
295
  return cleared;
296
296
  }
297
297
  async function emitStatusUpdatedEvent(event) {
298
- const { initEventStore } = await import("./event-store-CpBGsO6_.js");
298
+ const { initEventStore } = await import("./event-store-EV2cMiXj.js");
299
299
  await (await initEventStore()).appendAsync({
300
300
  type: "memory.status_updated",
301
301
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -446,4 +446,4 @@ var init_rollup = __esmMin((() => {
446
446
  //#endregion
447
447
  export { readCurrentStatus as a, init_pending as c, readArchivedStatuses as i, maybeTriggerStatusRollup as l, commitStatusRollup as n, readRecentObservations as o, init_rollup as r, synthesizeStatusRollup as s, buildStatusRollupPrompt as t, writePendingTurn as u };
448
448
 
449
- //# sourceMappingURL=rollup-SyuF09e4.js.map
449
+ //# sourceMappingURL=rollup-FGsKki9R.js.map
@@ -1,9 +1,9 @@
1
- import { B as getProviderEnvSync, H as init_providers, Hn as init_projects, Kn as listProjectsSync, V as getProviderForModelSync, Xr as encodeClaudeProjectDir, a as getConversationsConfigSync, br as ConfigError, ci as sessionFilePath, f as loadConfigSync, ii as init_paths, it as getModelCapabilitySync, jr as init_errors, lt as resolveModelIdSync, st as init_model_capabilities, t as init_config_yaml, xr as FsError } from "./config-yaml-ig8Nwtiw.js";
2
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-D4iNWMA5.js";
3
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Codk1pc2.js";
4
- import { Ct as searchFtsSessions, Et as upsertDiscoveredSession, St as markEnrichmentFailed, Tt as updateEnrichment, bt as insertEmbedding, ct as countDiscoveredSessions, dt as findDiscoveredSessionIds, ft as findDiscoveredSessions, ht as getDiscoveredSessionByJsonlPath, lt as countFtsSessions, mt as getDiscoveredSessionById, pt as findEnrichedSessionIdsMissingEmbedding, st as buildFilterSql, ut as ensureDiscoveredSessionsSchema, vt as getEmbedding, wt as topKCosine, xt as loadEmbeddings, yt as init_discovered_sessions } from "./conversations-bYpM9-kZ.js";
5
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-Bc-Bmiye.js";
6
- import { n as recordBackgroundAiCost, t as init_cost$1 } from "./cost-wH46-WsJ.js";
1
+ import { B as getProviderEnvSync, Gr as sessionFilePath, H as init_providers, Nr as encodeClaudeProjectDir, Tn as init_projects, V as getProviderForModelSync, Vr as init_paths, a as getConversationsConfigSync, f as loadConfigSync, ir as FsError, it as getModelCapabilitySync, kn as listProjectsSync, lt as resolveModelIdSync, mr as init_errors, rr as ConfigError, st as init_model_capabilities, t as init_config_yaml } from "./config-yaml-DySPNmKN.js";
2
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BEqFxlJc.js";
3
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-B2ddP6wq.js";
4
+ import { Ct as searchFtsSessions, Et as upsertDiscoveredSession, St as markEnrichmentFailed, Tt as updateEnrichment, bt as insertEmbedding, ct as countDiscoveredSessions, dt as findDiscoveredSessionIds, ft as findDiscoveredSessions, ht as getDiscoveredSessionByJsonlPath, lt as countFtsSessions, mt as getDiscoveredSessionById, pt as findEnrichedSessionIdsMissingEmbedding, st as buildFilterSql, ut as ensureDiscoveredSessionsSchema, vt as getEmbedding, wt as topKCosine, xt as loadEmbeddings, yt as init_discovered_sessions } from "./conversations-6AfUfbwc.js";
5
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-ez2271oH.js";
6
+ import { n as recordBackgroundAiCost, t as init_cost$1 } from "./cost-R-m6Yi-W.js";
7
7
  import { Data, Duration, Effect, FileSystem } from "effect";
8
8
  import { createReadStream, promises } from "fs";
9
9
  import { basename, join, relative, resolve } from "path";
@@ -500,6 +500,8 @@ const MODEL_PROVIDERS = {
500
500
  "gemini-3-pro-preview": "google",
501
501
  "gemini-2.5-pro": "google",
502
502
  "gemini-2.5-flash": "google",
503
+ "k3": "kimi",
504
+ "k3[1m]": "kimi",
503
505
  "kimi-k2.7-code": "kimi",
504
506
  "kimi-k2.6": "kimi",
505
507
  "kimi-k2.5": "kimi",
@@ -555,6 +557,8 @@ const FALLBACK_MAP = {
555
557
  "gemini-3-pro-preview": "claude-sonnet-5",
556
558
  "gemini-2.5-pro": "claude-sonnet-5",
557
559
  "gemini-2.5-flash": "claude-haiku-4-5",
560
+ "k3": "claude-sonnet-5",
561
+ "k3[1m]": "claude-sonnet-5",
558
562
  "kimi-k2.7-code": "claude-sonnet-5",
559
563
  "kimi-k2.6": "claude-sonnet-5",
560
564
  "kimi-k2.5": "claude-sonnet-5",
@@ -2454,12 +2458,12 @@ async function collectAgentDirFiles(root, warnings = []) {
2454
2458
  const agentHarness = await readAgentHarness(agentDir);
2455
2459
  const piHarness = agentHarness === "pi" || agentHarness === "ohmypi" ? agentHarness : "ohmypi";
2456
2460
  result.push(...await collectPiFamilyRoot(join(agentDir, "sessions"), piHarness, warnings));
2457
- await collectAgentRootPiFiles(agentDir, piHarness, warnings, result);
2461
+ await collectAgentRootFiles(agentDir, piHarness, warnings, result);
2458
2462
  await collectJsonlFiles(join(agentDir, "codex-home", "sessions"), join(agentDir, "codex-home", "sessions"), "codex", warnings, result);
2459
2463
  }
2460
2464
  return result;
2461
2465
  }
2462
- async function collectAgentRootPiFiles(agentDir, harness, warnings, result) {
2466
+ async function collectAgentRootFiles(agentDir, piHarness, warnings, result) {
2463
2467
  let entries;
2464
2468
  try {
2465
2469
  entries = await promises.readdir(agentDir, { withFileTypes: true });
@@ -2469,10 +2473,16 @@ async function collectAgentRootPiFiles(agentDir, harness, warnings, result) {
2469
2473
  }
2470
2474
  for (const entry of entries) {
2471
2475
  const name = String(entry.name);
2472
- if (entry.isFile() && isPiWorkAgentJsonl(name)) result.push({
2476
+ if (!entry.isFile()) continue;
2477
+ if (name === "acp-session.jsonl") result.push({
2473
2478
  projectDir: agentDir,
2474
2479
  jsonlPath: join(agentDir, name),
2475
- harness
2480
+ harness: "acp"
2481
+ });
2482
+ else if (isPiWorkAgentJsonl(name)) result.push({
2483
+ projectDir: agentDir,
2484
+ jsonlPath: join(agentDir, name),
2485
+ harness: piHarness
2476
2486
  });
2477
2487
  }
2478
2488
  }
@@ -2611,6 +2621,23 @@ async function parsePiSessionMetadata(filePath) {
2611
2621
  result.filesTouched = [...filesSet];
2612
2622
  return result;
2613
2623
  }
2624
+ async function parseAcpSessionMetadata(filePath) {
2625
+ const result = emptySessionMetadata();
2626
+ const toolsSet = /* @__PURE__ */ new Set();
2627
+ await readJsonl(filePath, (entry) => {
2628
+ const acpEntry = entry;
2629
+ if (typeof acpEntry.timestamp !== "string" || typeof acpEntry.content !== "string" || !isAcpTranscriptRole(acpEntry.role)) return;
2630
+ result.messageCount++;
2631
+ recordTimestamp(result, acpEntry.timestamp);
2632
+ if (!result.sessionId && typeof acpEntry.sessionId === "string" && acpEntry.sessionId.length > 0) result.sessionId = acpEntry.sessionId;
2633
+ if (Array.isArray(acpEntry.toolCalls)) for (const toolCall of acpEntry.toolCalls) {
2634
+ const name = toolCall.title?.trim() || toolCall.kind?.trim();
2635
+ if (name) toolsSet.add(name);
2636
+ }
2637
+ });
2638
+ result.toolsUsed = [...toolsSet];
2639
+ return result;
2640
+ }
2614
2641
  async function parseCodexSessionMetadata(filePath) {
2615
2642
  const result = emptySessionMetadata();
2616
2643
  const modelCounts = {};
@@ -2713,6 +2740,9 @@ function recordTimestamp(result, ts) {
2713
2740
  if (result.firstTs === null) result.firstTs = ts;
2714
2741
  result.lastTs = ts;
2715
2742
  }
2743
+ function isAcpTranscriptRole(role) {
2744
+ return role === "user" || role === "assistant" || role === "tool" || role === "system";
2745
+ }
2716
2746
  function normalizeModel(provider, model) {
2717
2747
  if (typeof model !== "string" || model.length === 0) return null;
2718
2748
  if (typeof provider === "string" && provider.length > 0 && !model.includes("/")) return `${provider}/${model}`;
@@ -2764,6 +2794,7 @@ async function scan(opts) {
2764
2794
  const parseMetadata = (file) => {
2765
2795
  if (file.harness === "pi" || file.harness === "ohmypi") return parsePiSessionMetadata(file.jsonlPath);
2766
2796
  if (file.harness === "codex") return parseCodexSessionMetadata(file.jsonlPath);
2797
+ if (file.harness === "acp") return parseAcpSessionMetadata(file.jsonlPath);
2767
2798
  return parseJsonl(file.jsonlPath);
2768
2799
  };
2769
2800
  const resolveWorkspace = async (file, cwdFromFirstMessage) => {
@@ -2773,8 +2804,8 @@ async function scan(opts) {
2773
2804
  workspaceHash: null,
2774
2805
  warning: null
2775
2806
  };
2776
- if (file.harness === "codex") return {
2777
- workspacePath: resolveCodexAgentWorkspace(file.jsonlPath),
2807
+ if (file.harness === "codex" || file.harness === "acp") return {
2808
+ workspacePath: resolveAgentWorkspace(file.jsonlPath),
2778
2809
  workspaceHash: null,
2779
2810
  warning: null
2780
2811
  };
@@ -2947,7 +2978,7 @@ function combineCorrelation(base, sessionId, locatorCorrelationMap) {
2947
2978
  const byLocator = locatorCorrelationMap.get(sessionId);
2948
2979
  return byLocator ? mergeCorrelation(fallback, byLocator) : fallback;
2949
2980
  }
2950
- function resolveCodexAgentWorkspace(jsonlPath) {
2981
+ function resolveAgentWorkspace(jsonlPath) {
2951
2982
  const agentId = jsonlPath.replace(/\\/g, "/").match(/\/\.overdeck\/agents\/([^/]+)\//)?.[1];
2952
2983
  if (!agentId) return null;
2953
2984
  return getOverdeckDatabaseSync().prepare(`SELECT workspace FROM agents WHERE id = ?`).get(agentId)?.workspace ?? null;
@@ -2997,4 +3028,4 @@ function normalizeDir(dir) {
2997
3028
  //#endregion
2998
3029
  export { enrichSessions as a, searchSessions as c, CostThresholdError as i, embed as l, getSessionsFeedFacets as n, embedSessions as o, listSessionsFeed as r, parseRelativeTime as s, scan as t };
2999
3030
 
3000
- //# sourceMappingURL=scanner-Br0Z5S6R.js.map
3031
+ //# sourceMappingURL=scanner-CnqEZeDy.js.map
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { cn as init_auto_commit, ln as queueAutoCommit } from "./config-yaml-ig8Nwtiw.js";
3
- import { c as init_review_status, s as getReviewStatusSync } from "./review-status-DFRjDFef.js";
4
- import { C as init_specs, S as getProjectPanPaths } from "./io-DQR9PMgS.js";
2
+ import { Ut as init_auto_commit, Wt as queueAutoCommit } from "./config-yaml-DySPNmKN.js";
3
+ import { c as getReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
4
+ import { C as init_specs, S as getProjectPanPaths } from "./io-C9kF1wtJ.js";
5
5
  import { dirname, join } from "node:path";
6
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
7
7
  //#region ../../lib/backlog/types.ts
@@ -275,4 +275,4 @@ var init_sequence_io = __esmMin((() => {
275
275
  //#endregion
276
276
  export { parseSequenceMd as n, writeSequenceMd as r, init_sequence_io as t };
277
277
 
278
- //# sourceMappingURL=sequence-io-fxU0DlwW.js.map
278
+ //# sourceMappingURL=sequence-io-D909zgeH.js.map
@@ -1,8 +1,8 @@
1
1
  import { a as __toCommonJS, n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { c as init_review_status, s as getReviewStatusSync } from "./review-status-DFRjDFef.js";
3
- import { $ as stopAgent, Z as spawnRun, a as listRunningAgentsSync, an as determineModel, jn as getAgentStateSync, s as init_agents, ur as getAgentRuntimeStateSync } from "./queries-ZABd5aXP.js";
4
- import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-D_RVYBuL.js";
5
- import { n as parseSequenceMd, t as init_sequence_io } from "./sequence-io-fxU0DlwW.js";
2
+ import { c as getReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
3
+ import { Or as getAgentRuntimeStateSync, Sn as determineModel, Yn as getAgentStateSync, a as listRunningAgentsSync, b as init_agents, ft as stopAgent, ut as spawnRun } from "./queries-CjNIf-Ub.js";
4
+ import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-Yx5DdmVJ.js";
5
+ import { n as parseSequenceMd, t as init_sequence_io } from "./sequence-io-D909zgeH.js";
6
6
  import { dirname, join } from "node:path";
7
7
  import { Effect } from "effect";
8
8
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
@@ -324,4 +324,4 @@ var init_sequencer_agent = __esmMin((() => {
324
324
  //#endregion
325
325
  export { spawnSequencerAgent as a, init_sequencer_agent as i, clearFinishedSequencerRun as n, getSequencerRunStatus as r, SEQUENCER_AGENT_ID as t };
326
326
 
327
- //# sourceMappingURL=sequencer-agent-B5YC5XVP.js.map
327
+ //# sourceMappingURL=sequencer-agent-CzkcK6P5.js.map