@overdeck/desktop 0.45.16 → 0.45.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/dist-electron/main.js +149 -158
  2. package/dist-electron/main.js.map +1 -1
  3. package/dist-electron/preload.js +17 -2
  4. package/dist-electron/preload.js.map +1 -1
  5. package/package.json +5 -4
  6. package/server/acceptance-criteria-aQFKQf-J.js +62 -0
  7. package/server/{advancing-selfheal-DJYAvGv-.js → advancing-selfheal-DgwQgm4D.js} +6 -6
  8. package/server/{agent-gc-D0wDIeV1.js → agent-gc-kpzxqT7P.js} +3 -3
  9. package/server/agent-state-C_6TG-Ad.js +3 -0
  10. package/server/{agent-state-service-CZrayD_G.js → agent-state-service-BUfovFfB.js} +1 -1
  11. package/server/{agent-state-service-DFslS5go.js → agent-state-service-nUD3qfob.js} +5 -5
  12. package/server/agents-BA15AQqo.js +3 -0
  13. package/server/{briefing-freshness-DESTCWo-.js → agents-BHBxr8c9.js} +5 -131
  14. package/server/{archive-planning-CbghE9-o.js → archive-planning-CzCW9Ifl.js} +5 -10
  15. package/server/{archive-planning-CoyIbgGK.js → archive-planning-D-QsBufn.js} +1 -1
  16. package/server/{artifact-index-jobs-CcSrUoSE.js → artifact-index-jobs-qqa51B2Z.js} +2 -2
  17. package/server/{backlog-auto-trigger-BfgDsII0.js → backlog-auto-trigger-B7Bi0bvY.js} +2 -2
  18. package/server/{behavior-BTpYbAv4.js → behavior-CWqNMqE5.js} +2 -2
  19. package/server/briefing-freshness-DuxIE1yr.js +131 -0
  20. package/server/{checkpoint-manager-BwFdegJF.js → checkpoint-manager-DF6hb9Jw.js} +3 -3
  21. package/server/{checkpoint-manager-DWSXooZV.js → checkpoint-manager-DixkLus7.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-fjadfOKF.js → checkpoints-B1Z42tJE.js} +1 -1
  24. package/server/{checkpoints-BtUonbs3.js → checkpoints-BiviJqei.js} +2 -2
  25. package/server/{claude-hooks-provision-DiK62u0k.js → claude-hooks-provision-BeMGi4ty.js} +1 -1
  26. package/server/{claude-hooks-provision-DAtxutOs.js → claude-hooks-provision-Du_PkMsp.js} +2 -2
  27. package/server/{claude-permissions-CThLgf8d.js → claude-permissions-BB6agcOZ.js} +2 -2
  28. package/server/{claude-settings-overlay-BF9MPIwx.js → claude-settings-overlay-CAq2oFSK.js} +2 -2
  29. package/server/{claude-settings-overlay-Dx_Uqcmv.js → claude-settings-overlay-DUWWLd6M.js} +1 -1
  30. package/server/cli-BFgrSWKV.js +3 -0
  31. package/server/{cli-ByKIIMfT.js → cli-C33xPZNm.js} +9 -9
  32. package/server/{cliproxy-C_GuT5DU.js → cliproxy-BQX1TL6N.js} +1 -1
  33. package/server/{cliproxy-B4c1BUvs.js → cliproxy-CGBA1GzA.js} +2 -2
  34. package/server/{close-issue-BOuLKr6e.js → close-issue-DNv8npc1.js} +5 -5
  35. package/server/{closed-issue-reaper-CksfuiFD.js → closed-issue-reaper-DrqgBJlr.js} +1 -1
  36. package/server/{closed-issue-reaper-DCAYzNXW.js → closed-issue-reaper-LoMnnjtJ.js} +9 -9
  37. package/server/codex-DxLivxri.js +3 -0
  38. package/server/{codex-parser-mFYZh8vR.js → codex-parser-DboQnEXN.js} +2 -2
  39. package/server/{codex-BbqIRZjd.js → codex-sgWVCGUd.js} +43 -18
  40. package/server/{config-Dj6N8EP9.js → config-6MCHOZ2N.js} +1 -1
  41. package/server/{config-DVLdmnMJ.js → config-DfaUXr6r.js} +2 -2
  42. package/server/{config-yaml-cNOZcEww.js → config-yaml-CqaAyn8y.js} +74 -74
  43. package/server/{conflict-gate-BMKm_5DV.js → conflict-gate-BF_zhcmb.js} +3 -3
  44. package/server/{conflict-gate-CuXUv-bP.js → conflict-gate-BubJprtD.js} +1 -1
  45. package/server/{context-layers-c0JqYHcS.js → context-layers-BFrxfl0l.js} +17 -3
  46. package/server/{context-layers-CeAwSYNt.js → context-layers-DWL_8HhY.js} +2 -2
  47. package/server/{control-settings-D4EFsRBd.js → control-settings-BguNQ1F_.js} +4 -4
  48. package/server/{conversation-compaction-kHVfVRg3.js → conversation-compaction-CRKAf2qP.js} +1 -1
  49. package/server/{conversation-compaction-BCggyih4.js → conversation-compaction-DxSXl0pT.js} +8 -8
  50. package/server/{conversation-service-BTzObqGi.js → conversation-service-DzuY9qoH.js} +1 -1
  51. package/server/{conversation-service-B8LFQQm1.js → conversation-service-mFVFdDQK.js} +6 -6
  52. package/server/{conversations-B-lcHv-5.js → conversations-BX5aD-6F.js} +4 -4
  53. package/server/{conversations-BM7zlXjr.js → conversations-BajHQ60c.js} +1 -1
  54. package/server/{cost-D9kPIY_5.js → cost-BoqD1Pxz.js} +2 -2
  55. package/server/{cost-BcpRQ-7o.js → cost-DuZ5vlv-.js} +3 -3
  56. package/server/{cost-sync-DF6odxK9.js → cost-sync-BYnmnMkY.js} +3 -3
  57. package/server/{dag-DKI3sOmX.js → dag-C6kYyF17.js} +7 -243
  58. package/server/{dangerous-git-ops-Bn18PEcN.js → dangerous-git-ops-q5OPtXMd.js} +1 -1
  59. package/server/dashboard-db-worker.js +6 -6
  60. package/server/{deacon-DONuopff.js → deacon-CwCiNuEZ.js} +3 -3
  61. package/server/{deacon-DdARMjZq.js → deacon-Dru5onpk.js} +233 -162
  62. package/server/{deacon-nudge-log-B-naf89q.js → deacon-nudge-log-ilDfxrhK.js} +1 -1
  63. package/server/{deacon-swarm-BNGkmYR_.js → deacon-swarm-BPmBmSoU.js} +298 -72
  64. package/server/deacon-swarm-CKyGJng1.js +2 -0
  65. package/server/deacon.js +14 -7
  66. package/server/{devcontainer-renderer-C-34Sxyz.js → devcontainer-renderer-BqGNCzvN.js} +3 -3
  67. package/server/{dist-BMXvKiZP.js → dist-BwlEiLCU.js} +1 -1
  68. package/server/dist-Bx4KkgYL.js +3 -0
  69. package/server/{dist-src-BgGUblXg.js → dist-src-BE0Denfs.js} +1 -1
  70. package/server/{docker-apZ9pBYw.js → docker-CNjXS72x.js} +2 -2
  71. package/server/{ensure-devcontainer-Bqi1EF1P.js → ensure-devcontainer-5e9xOve4.js} +4 -4
  72. package/server/{ensure-devcontainer-Dq3KoOIl.js → ensure-devcontainer-C6gyUQdE.js} +1 -1
  73. package/server/{esm-shims-BEjvINX3.js → esm-shims-Cso7IGBC.js} +1 -1
  74. package/server/{event-store-CqDgfbAs.js → event-store-D9UhQyMS.js} +1 -1
  75. package/server/{event-store-D89fMfXS.js → event-store-KZnWUKWh.js} +3 -3
  76. package/server/{events-S_C0pvl6.js → events-2eFUPdqz.js} +3 -3
  77. package/server/{events-rIGncmP1.js → events-BYbvqZky.js} +1 -1
  78. package/server/{factory-DV18m0rc.js → factory-BtaRsHFC.js} +20 -17
  79. package/server/{feature-registry-population-CqZSnqQi.js → feature-registry-population-Ca2UaV0U.js} +4 -4
  80. package/server/{feature-registry-storage-BeXmNBwK.js → feature-registry-storage-DaP-bQxO.js} +2 -2
  81. package/server/{features-u5XeMaOK.js → features-DqvaoQoa.js} +2 -2
  82. package/server/{feedback-target-CwyWf0Dg.js → feedback-target-BXWdOiYI.js} +9 -7
  83. package/server/{feedback-target-DDG1PWl3.js → feedback-target-BblmMe9P.js} +1 -1
  84. package/server/{feedback-writer-BsJiw5aT.js → feedback-writer-CULeOOY4.js} +1 -1
  85. package/server/{feedback-writer-D20HSXre.js → feedback-writer-Dn8o9ZyE.js} +4 -4
  86. package/server/{flywheel-RCnHAgc4.js → flywheel-BUWdcfhq.js} +1 -1
  87. package/server/{flywheel-Dczmgchd.js → flywheel-CqkO3cDj.js} +15 -28
  88. package/server/{flywheel-9Y1X7IM-.js → flywheel-D9r1mw2U.js} +13 -13
  89. package/server/{flywheel-merge-order-DEtEd3aK.js → flywheel-merge-order-LDzQDwSg.js} +1 -1
  90. package/server/{flywheel-merge-order-CtCYsFJP.js → flywheel-merge-order-VtjUweEb.js} +6 -6
  91. package/server/forge-DJy3Zx4s.js +2 -0
  92. package/server/{forge-DFDThFil.js → forge-wEollMCi.js} +22 -12
  93. package/server/{from-NSJypkI8.js → from-B2tOYhYV.js} +1 -1
  94. package/server/{fts-db-C5A_TTOM.js → fts-db-Bgzn2RO7.js} +2 -2
  95. package/server/{fts-operations-DvCSimfU.js → fts-operations-Bj8yutnR.js} +2 -2
  96. package/server/{git-utils-Dr0L7mFk.js → git-utils-GxlL0tmt.js} +2 -2
  97. package/server/{git-utils-C0neHvQx.js → git-utils-q8jNoBts.js} +1 -1
  98. package/server/{github-app-Bwt9lK4A.js → github-app-BrYwK_Gb.js} +1 -1
  99. package/server/{github-app-u9-SX7Gc.js → github-app-tUbb8Ldr.js} +8 -3
  100. package/server/{github-client-Btyy3uan.js → github-client-BwBU41jK.js} +3 -3
  101. package/server/{github-client-Do3k-N1W.js → github-client-D6CNsftm.js} +1 -1
  102. package/server/{github-pr-lookup-DOF1U2WW.js → github-pr-lookup-BS5PqkJb.js} +2 -2
  103. package/server/{harness-resolve-C6g2R0Cd.js → harness-resolve-Dx8hUsvC.js} +3 -3
  104. package/server/{health-events-B4u-2a9m.js → health-events-2DLp-5Xp.js} +2 -2
  105. package/server/{health-events-Bos3sk5g.js → health-events-B0mj6Iae.js} +1 -1
  106. package/server/{hooks-uEr8WTx_.js → hooks-BDcQJDUe.js} +1 -1
  107. package/server/{hooks-BCoOjL_R.js → hooks-BS_JrvYP.js} +3 -3
  108. package/server/hume-B4seN95Y.js +3 -0
  109. package/server/{hume-BqxYKbUf.js → hume-BRhNKyXQ.js} +2 -2
  110. package/server/{idle-stack-reaper-DbZ8ukMd.js → idle-stack-reaper-BCITXNW5.js} +2 -2
  111. package/server/{idle-stack-reaper-H0W6XtHh.js → idle-stack-reaper-C1ymihno.js} +1 -1
  112. package/server/{infra-Ba9mS6e6.js → infra-_Kx1m9pm.js} +9 -4
  113. package/server/{injection-C1DKXeIZ.js → injection-Bvhyg_MV.js} +1 -1
  114. package/server/{injection-yrMBxzVq.js → injection-CCaYkofq.js} +7 -7
  115. package/server/{inspect-agent-B-mnb4uh.js → inspect-agent-BqyZ4pCo.js} +35 -67
  116. package/server/inspect-agent-DCJQm9Wu.js +2 -0
  117. package/server/{internal-token-BtqSbKTx.js → internal-token-Cl-1IxaE.js} +2 -2
  118. package/server/{internal-token-BPYEaXFh.js → internal-token-D-t28de5.js} +1 -1
  119. package/server/{io-VEGSAqsd.js → io-DkC4sFSy.js} +36 -43
  120. package/server/{issue-closed-BxcePXL-.js → issue-closed-Cpl4VDUM.js} +41 -6
  121. package/server/{issue-lifecycle--8MRxrG1.js → issue-lifecycle-CFR8TJ22.js} +22 -37
  122. package/server/{issue-lifecycle-CdMUauyb.js → issue-lifecycle-YNTy3OT3.js} +1 -1
  123. package/server/{issue-service-singleton-MZsDhAob.js → issue-service-singleton-D81mCts_.js} +1 -1
  124. package/server/{issue-service-singleton-CkTUI-eu.js → issue-service-singleton-ldvUUXi3.js} +29 -29
  125. package/server/{issues-CBAsuoAO.js → issues-DIEHt9sq.js} +2 -2
  126. package/server/{jsonl-parser-BUW5_sSK.js → jsonl-parser-Cd5jIqh7.js} +3 -3
  127. package/server/{label-cleanup-htK6fBRU.js → label-cleanup-Btny6Gyo.js} +3 -3
  128. package/server/{state-home-CEvD_v5F.js → launcher-generator-BXLM9f4b.js} +7 -127
  129. package/server/{layers-jjL16At6.js → layers-gCJlK62m.js} +2 -2
  130. package/server/lifecycle-D7aQUnTO.js +12 -0
  131. package/server/{lifecycle-io-DXv8Utct.js → lifecycle-io-DQBF-GHO.js} +1 -1
  132. package/server/{lifecycle-io-IehcRt2v.js → lifecycle-io-FfPUtz-y.js} +4 -4
  133. package/server/{linear-client-D9cSQfvD.js → linear-client-CDH2D6Qy.js} +3 -3
  134. package/server/{linear-client-By7hjwuN.js → linear-client-WrYrUIAH.js} +1 -1
  135. package/server/memory-fts-worker.js +1 -1
  136. package/server/{merge-BN8FGJ2q.js → merge-BsDgUxFz.js} +3 -3
  137. package/server/{merge-BLcEZNXz.js → merge-Dervs4BF.js} +1 -1
  138. package/server/{merge-agent-B3u2szOL.js → merge-agent-D6DNhe9j.js} +64 -51
  139. package/server/{merge-agent-ejC7Wos8.js → merge-agent-DMQTJMP0.js} +1 -1
  140. package/server/{merge-batch-DyqlgYGp.js → merge-batch-Bv6Z5K2H.js} +1 -1
  141. package/server/{merge-blockers-cq-aS2KG.js → merge-blockers-WWWi6Ur2.js} +2 -2
  142. package/server/merge-ops-h9OCnIVz.js +2 -0
  143. package/server/{merge-rebase-Dl7yIxtV.js → merge-rebase-Czth9ggm.js} +2 -2
  144. package/server/{merge-set-CZ9Nbay0.js → merge-set-DNc4zBqd.js} +3 -3
  145. package/server/{merge-set-Dy0D0r3i.js → merge-set-vuE3MEVt.js} +1 -1
  146. package/server/{merge-sync-D7jWLgCC.js → merge-sync-B2KSk54U.js} +2 -2
  147. package/server/{merge-sync-CG9kDCdT.js → merge-sync-B9nHdUGx.js} +1 -1
  148. package/server/{merge-train-CH33XJOH.js → merge-train-DJgr81tF.js} +3 -3
  149. package/server/{merge-train-deps-JoVdGnOg.js → merge-train-deps-B2OWS0k9.js} +4 -4
  150. package/server/{merge-verification-D4wTChdX.js → merge-verification-BBIXUEqa.js} +4 -4
  151. package/server/{multipart-parser-Csn8U-K9.js → multipart-parser-9DhuAkPd.js} +2 -2
  152. package/server/node_modules/.package-lock.json +11 -11
  153. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  154. package/server/node_modules/toml/README.md +54 -0
  155. package/server/node_modules/toml/index.d.ts +42 -1
  156. package/server/node_modules/toml/index.js +3 -3
  157. package/server/node_modules/toml/lib/compiler.js +35 -3
  158. package/server/node_modules/toml/lib/parser.js +224 -143
  159. package/server/node_modules/toml/package.json +3 -1
  160. package/server/node_modules/ws/lib/receiver.js +15 -32
  161. package/server/node_modules/ws/lib/websocket-server.js +4 -4
  162. package/server/node_modules/ws/lib/websocket.js +4 -4
  163. package/server/node_modules/ws/package.json +5 -1
  164. package/server/{orphan-proposed-reconciler-DI_IS1p_.js → orphan-proposed-reconciler-B8H41C4a.js} +14 -24
  165. package/server/{orphan-proposed-reconciler-BIcNu4tl.js → orphan-proposed-reconciler-DbTmT7qy.js} +1 -1
  166. package/server/package-lock.json +12 -12
  167. package/server/package.json +1 -1
  168. package/server/{pan-dir-CQIfKG8c.js → pan-dir-BTw4MdSe.js} +4 -4
  169. package/server/{paths-Blj6A9AJ.js → paths-Btkc8mzp.js} +2 -2
  170. package/server/{pipeline-notifier-BH4PAi-w.js → pipeline-notifier-3frIvSi3.js} +1 -1
  171. package/server/{pipeline-notifier-D_WYtEwl.js → pipeline-notifier-DTd19f18.js} +2 -2
  172. package/server/{project-pipelines-jMTitpeO.js → project-pipelines-B95fcAek.js} +2 -2
  173. package/server/projects-Dc9aoVoG.js +3 -0
  174. package/server/{prompts-B3njaImU.js → prompts-CIVmjHxn.js} +2 -2
  175. package/server/{providers-DnPxkHoG.js → providers-BLLk5IIb.js} +1 -1
  176. package/server/{providers-BbEyFhPX.js → providers-C-yWibCk.js} +7 -7
  177. package/server/public/assets/{chunk-BO2N2NFS-3qh9TUJi.js → chunk-BO2N2NFS-DzKZyoKY.js} +4 -4
  178. package/server/public/assets/{diagram-OG6HWLK6-D8UVTPj7.js → diagram-OG6HWLK6-Cx8mWUb8.js} +1 -1
  179. package/server/public/assets/{dist-BvLLn1YC.js → dist-BqccLhaw.js} +3 -3
  180. package/server/public/assets/{dist-CyubL7Wj.js → dist-rC3nAs_O.js} +1 -1
  181. package/server/public/assets/{ganttDiagram-6RSMTGT7-BI4E1LbQ.js → ganttDiagram-6RSMTGT7-DLYPLf5T.js} +1 -1
  182. package/server/public/assets/{highlighted-body-OFNGDK62-D_bapWkF.js → highlighted-body-OFNGDK62-D4DqixbV.js} +1 -1
  183. package/server/public/assets/index-CPcysUHk.js +796 -0
  184. package/server/public/assets/index-H5M0yhM4.css +1 -0
  185. package/server/public/assets/{linear-CEdobObr.js → linear-yqcXkDfj.js} +1 -1
  186. package/server/public/assets/mermaid-GHXKKRXX-CWdZ_heB.js +1 -0
  187. package/server/public/assets/{pieDiagram-4H26LBE5-DT79L01f.js → pieDiagram-4H26LBE5-DhraIOaV.js} +1 -1
  188. package/server/public/assets/{prod-CR_K2DFV.js → prod-DKUunUdN.js} +4 -4
  189. package/server/public/assets/{quadrantDiagram-W4KKPZXB-BEkKXXrL.js → quadrantDiagram-W4KKPZXB-DPiRcToa.js} +1 -1
  190. package/server/public/assets/{sankeyDiagram-5OEKKPKP-BxSCqn-j.js → sankeyDiagram-5OEKKPKP-3An5HNkZ.js} +1 -1
  191. package/server/public/assets/{xychartDiagram-2RQKCTM6-DicwJGG_.js → xychartDiagram-2RQKCTM6-lbEOjfqQ.js} +1 -1
  192. package/server/public/index.html +2 -2
  193. package/server/{pull-requests-43LPDfM8.js → pull-requests-D7AL5woD.js} +1 -1
  194. package/server/{pull-requests-DyUkQl4W.js → pull-requests-NDDNtqNq.js} +3 -3
  195. package/server/{agents-B9GwfCyp.js → queries-C0LCGG21.js} +710 -325
  196. package/server/{rally-BtWjybOa.js → rally-4oKvnxLG.js} +3 -3
  197. package/server/rally-DF5a3ioP.js +3 -0
  198. package/server/{rally-api-B-osULNL.js → rally-api-41tT6ikZ.js} +2 -2
  199. package/server/{rally-api-B-YA_oXx.js → rally-api-BsaQ8Vnz.js} +1 -1
  200. package/server/{rally-client-sErNQBO0.js → rally-client-Bo4hNcCZ.js} +5 -5
  201. package/server/{rally-client-CzFymP7P.js → rally-client-b5PT1x5L.js} +1 -1
  202. package/server/{reap-terminal-sessions-DnDQ7pf9.js → reap-terminal-sessions-BR39qflC.js} +1 -1
  203. package/server/{reap-terminal-sessions-2s-fvilz.js → reap-terminal-sessions-CFkuquQj.js} +1 -1
  204. package/server/{rebuild-stack-nGD_nPZo.js → rebuild-stack-C7JPUom6.js} +1 -1
  205. package/server/{rebuild-stack-CoU-HqZj.js → rebuild-stack-Ddv6W017.js} +5 -5
  206. package/server/{reconstruct-cache-Wj8GrYB0.js → reconstruct-cache-Gqhm---K.js} +6 -6
  207. package/server/record-DLOqfbkI.js +3 -0
  208. package/server/record-update-BltEmPge.js +168 -0
  209. package/server/record-update-CDp7aTaT.js +3 -0
  210. package/server/recovery-trip-Cn7KJVkS.js +44 -0
  211. package/server/{release-engine-CBLQXDlH.js → release-engine-BYzmIBf9.js} +5 -5
  212. package/server/{release-set-BNiqi7hy.js → release-set-7pnxFOWR.js} +3 -3
  213. package/server/{remote-DW_TWQnr.js → remote-Cvu4CSDk.js} +3 -3
  214. package/server/{remote-agents-C4cyxHQS.js → remote-agents-C2C6z9tj.js} +6 -33
  215. package/server/{remote-agents-Cv-U-_V8.js → remote-agents-DYY5fFpd.js} +1 -1
  216. package/server/{remote-completion-PhXGGFQy.js → remote-completion-2Kb4IDg_.js} +13 -13
  217. package/server/{remote-DcO9An_f.js → remote-rN0ecjHE.js} +3 -3
  218. package/server/resume-BFLl-yLn.js +3 -0
  219. package/server/{review-agent-Dn-yn7Zj.js → review-agent-BZvk0N5G.js} +31 -23
  220. package/server/{review-agent-u5q3ip7H.js → review-agent-CpSHLzed.js} +1 -1
  221. package/server/{review-artifacts-D4T04aYI.js → review-artifacts-PCo53YMn.js} +5 -19
  222. package/server/{review-context-Rc0VDLG_.js → review-context-M7QtJlJq.js} +8 -8
  223. package/server/{review-monitor-BC--miCO.js → review-monitor-BLC5mTTg.js} +2 -2
  224. package/server/{review-status-CG0iDuWa.js → review-status-77N3PoZr.js} +1 -1
  225. package/server/{review-status-Dc1l4dVz.js → review-status-DANr0t-v.js} +32 -58
  226. package/server/{review-status-enrichment-C1a1OG_1.js → review-status-enrichment-DwOg4UfL.js} +3 -3
  227. package/server/{review-status-sync-CfSixhhX.js → review-status-sync-Bd08OOFA.js} +1 -1
  228. package/server/{review-status-sync-CAr-hfnJ.js → review-status-sync-BjTUJ5fx.js} +2 -2
  229. package/server/{review-verdict-feedback-D2Q960wX.js → review-verdict-feedback-BsFLjN_6.js} +1 -1
  230. package/server/{review-verdict-feedback-CVDbIDBe.js → review-verdict-feedback-CBf-J_wS.js} +8 -8
  231. package/server/{rollup-DctoIu-A.js → rollup-Bu0f2EyN.js} +8 -8
  232. package/server/{rollup-CakjztPl.js → rollup-DTCCdEy4.js} +1 -1
  233. package/server/{scanner-BTM1jc_u.js → scanner-BlZ2vB7j.js} +7 -7
  234. package/server/{sequence-io-pnoIDGv4.js → sequence-io-ylyDtz2J.js} +4 -4
  235. package/server/{sequencer-agent-9Soi-WL-.js → sequencer-agent-DsWQ-87H.js} +6 -17
  236. package/server/server.js +4695 -4093
  237. package/server/{service-DfTVoqJg.js → service-CLVBC_1Y.js} +116 -90
  238. package/server/{session-fork-C4jAFHj8.js → session-fork-DlEIAhRy.js} +2 -2
  239. package/server/{session-history-DanhhiCw.js → session-history-bnOFKMwf.js} +4 -4
  240. package/server/settings-CP3GGon2.js +2 -0
  241. package/server/{settings-Cuc12oP_.js → settings-Cqa-8nyj.js} +2 -2
  242. package/server/{settings-DfT3f86D.js → settings-gJrdLZy2.js} +3 -3
  243. package/server/{shadow-engineering-bKuKTCn-.js → shadow-engineering-fq1YEKV3.js} +3 -3
  244. package/server/{shadow-state-CVHpRWlb.js → shadow-state-BqeFAygK.js} +1 -1
  245. package/server/{shadow-state-DJz6_pb_.js → shadow-state-RptE9Cau.js} +2 -2
  246. package/server/shadow-utils-BMWr5tRT.js +39 -0
  247. package/server/{ship-log-CwqPFfqx.js → ship-log-BRQQi2lU.js} +1 -1
  248. package/server/{smart-compaction-CiWfGfRZ.js → smart-compaction-CmoXpjeU.js} +7 -7
  249. package/server/{smart-compaction-B4KlpZGN.js → smart-compaction-DldUel4B.js} +1 -1
  250. package/server/{spawn-planning-session-CU-DwyDl.js → spawn-planning-session-CoS6LTc6.js} +16 -16
  251. package/server/{spawn-planning-session-D5N3RuLG.js → spawn-planning-session-DT2tSMxo.js} +1 -1
  252. package/server/{specialist-completion-CJcv-NXH.js → specialist-completion-pJtESo7m.js} +1 -1
  253. package/server/{specialist-context-B2HlbNxS.js → specialist-context-CspI4Eog.js} +5 -5
  254. package/server/{specialist-handoff-logger-CQyF1ygu.js → specialist-handoff-logger-Duz9RGvk.js} +2 -2
  255. package/server/{specialist-logs-CdcUpfjj.js → specialist-logs-DtSkPJZK.js} +3 -3
  256. package/server/{specialists-D7AcFi1u.js → specialists-CywEMwxk.js} +1 -1
  257. package/server/{specialists-k22_Btaq.js → specialists-D9-dMUtI.js} +1 -1
  258. package/server/{specialists-CFgw_0Q6.js → specialists-Dax7tqXC.js} +161 -448
  259. package/server/{specialists-CwzFdapR.js → specialists-GF42OOqd.js} +18 -18
  260. package/server/specs-VwcFtEDi.js +3 -0
  261. package/server/{src-B4TTzNSr.js → src-By3D85Ry.js} +6 -1
  262. package/server/{src-BvpMg4EB.js → src-CqyFg52C.js} +5 -5
  263. package/server/{src-D4YUZrwR.js → src-DhxM-eCb.js} +6 -6
  264. package/server/{stack-health-DVN7zRnL.js → stack-health-BsEVrJZ6.js} +1 -1
  265. package/server/{stack-health-CSgcYcr8.js → stack-health-C-SnpRHh.js} +2 -2
  266. package/server/stale-task-claims-vTxmRzLi.js +69 -0
  267. package/server/state-home-Bur1y4oH.js +213 -0
  268. package/server/{state-mapping-C13UaCL7.js → state-mapping-Ci0pkac4.js} +1 -1
  269. package/server/state-migrate-D3VveYfO.js +362 -0
  270. package/server/{stuck-remediation-CxsyxwFO.js → stuck-remediation-B699-p8v.js} +36 -41
  271. package/server/{stuck-remediation-nTIvhGOR.js → stuck-remediation-CaFYYTQW.js} +1 -1
  272. package/server/{summary-fork-CnRMPCYd.js → summary-fork-BxnF8Xh0.js} +2 -2
  273. package/server/{summary-fork-gKSoFAnK.js → summary-fork-COqYpVa3.js} +8 -8
  274. package/server/supervisor/{paths-3R6b989k.js → paths-Bk6hJRH9.js} +4 -3
  275. package/server/supervisor/pty-supervisor.js +2 -2
  276. package/server/supervisor/{pty-token-CScQ32Rj.js → pty-token-BZS5GYdG.js} +2 -2
  277. package/server/supervisor-eWAAmXKu.js +2 -0
  278. package/server/{supervisor-CZMs8s0M.js → supervisor-liMgIPDF.js} +2 -2
  279. package/server/{swarm-readiness-h6-pwY8w.js → swarm-readiness-sXB1vhzo.js} +3 -3
  280. package/server/{system-prerequisites-DZZTi2G6.js → system-prerequisites-Bz6KdkFJ.js} +1 -13
  281. package/server/{teardown-workspace-B4D-oCVg.js → teardown-workspace-DvzqnmUF.js} +14 -71
  282. package/server/{test-agent-queue-CnuYku4B.js → test-agent-queue-hAU1Ah08.js} +5 -5
  283. package/server/{tldr-daemon-CuA8hz21.js → tldr-daemon-Bam7Xhoo.js} +2 -2
  284. package/server/{tldr-daemon-CgZQ3jmZ.js → tldr-daemon-DhGwd88s.js} +1 -1
  285. package/server/tmux-C-rgxRDA.js +3 -0
  286. package/server/{tmux-C3g9VFcg.js → tmux-U55cNGFG.js} +92 -4
  287. package/server/{token-g_sJ19g3.js → token-Dsa-i36o.js} +2 -2
  288. package/server/{token-util-DiwnnbJo.js → token-util-BWNpH96m.js} +1 -1
  289. package/server/token-util-DRt0j2nQ.js +3 -0
  290. package/server/{tracker-config-dQxC15vH.js → tracker-config-OkdbaUCm.js} +2 -2
  291. package/server/{tracker-utils--z8FLSWn.js → tracker-utils-CghXMF3q.js} +2 -2
  292. package/server/{tracker-utils-DkKyRT0H.js → tracker-utils-DdzUiPNU.js} +1 -1
  293. package/server/{tunnel-BpWZs0Jy.js → tunnel-D1YxesBL.js} +3 -3
  294. package/server/{tunnel-CN2px87h.js → tunnel-DjlzgTl3.js} +1 -1
  295. package/server/typed-errors-CH4roFIj.js +3 -0
  296. package/server/{typed-errors-sLpGfegz.js → typed-errors-n_Tnb4Fh.js} +3 -4
  297. package/server/{types-BLS_Zbmd.js → types-DOjWNv3Z.js} +1 -1
  298. package/server/{types-tlXf80x3.js → types-DXBMm4mX.js} +1 -1
  299. package/server/{uat-train-utGVmqdm.js → uat-train-CaaWs9Rp.js} +1 -1
  300. package/server/{uat-train-BRo6DM7p.js → uat-train-CqN34zFx.js} +24 -25
  301. package/server/{validation-CsPVsoA0.js → validation-4-z2Cw4z.js} +70 -23
  302. package/server/validation-DpTNakM6.js +3 -0
  303. package/server/verification-artifact-DK1xb1zG.js +56 -0
  304. package/server/verification-artifact-JD_edpZ9.js +2 -0
  305. package/server/{verification-runner-CMT5WRMS.js → verification-runner-BjHN80pJ.js} +338 -58
  306. package/server/verification-runner-ShYu5Ph3.js +2 -0
  307. package/server/{vtt-parser-C_XPlifj.js → vtt-parser-QnRfcjiU.js} +1 -1
  308. package/server/{work-agent-prompt-ZTAb2Hyf.js → work-agent-prompt-BiJ43Der.js} +12 -88
  309. package/server/workflows-B4C3lY9E.js +2 -0
  310. package/server/{workflows-CXRwhw_o.js → workflows-DkTotz_m.js} +17 -24
  311. package/server/{workspace-CNfuj1-5.js → workspace-CuN0ev4Z.js} +3 -3
  312. package/server/{workspace-9UEsKuiP.js → workspace-DQ4vVivd.js} +1 -1
  313. package/server/{workspace-config-ChWOECy0.js → workspace-config-C77NKnsV.js} +1 -1
  314. package/server/{workspace-manager-BO-6k3sP.js → workspace-manager-B1mYn0lN.js} +1 -1
  315. package/server/{workspace-manager-D8AByFIT.js → workspace-manager-Beeo2aKF.js} +23 -48
  316. package/server/{workspace-metadata-CvC268MN.js → workspace-metadata-BZC5BmoP.js} +2 -2
  317. package/server/{workspace-metadata-DZiJtnuF.js → workspace-metadata-Cy7_ZACL.js} +1 -1
  318. package/server/{workspaces-D-uIoqbg.js → workspaces-CGuzW1Ia.js} +182 -152
  319. package/sync-sources/hooks/codex-notify-hook +64 -8
  320. package/sync-sources/hooks/record-cost-event.js +1109 -36
  321. package/sync-sources/hooks/record-cost-event.js.map +1 -1
  322. package/sync-sources/hooks/statusline.sh +2 -2
  323. package/sync-sources/hooks/work-agent-stop-hook +1 -2
  324. package/server/acceptance-criteria-BZ_nQS1f.js +0 -33
  325. package/server/agent-state-lGvgPP4m.js +0 -3
  326. package/server/agents-CEcaxSkR.js +0 -3
  327. package/server/auto-commit-IW-eik_b.js +0 -3
  328. package/server/bd-process-lock-XAXAet9O.js +0 -390
  329. package/server/beads-B1u04n3o.js +0 -2
  330. package/server/beads-BeSMEjGT.js +0 -649
  331. package/server/beads-query-Dl4FhT8J.js +0 -95
  332. package/server/beads-restore-BUItPOjI.js +0 -23
  333. package/server/cli-D9cUTbBr.js +0 -3
  334. package/server/codex-BYPz6ZdF.js +0 -3
  335. package/server/compact-beads-CyJtoXJi.js +0 -94
  336. package/server/compact-beads-N00E4EVa.js +0 -3
  337. package/server/deacon-swarm-CvdFekIO.js +0 -2
  338. package/server/dist-BNwrgsUO.js +0 -3
  339. package/server/export-BJHSVwKP.js +0 -87
  340. package/server/forge-8y6aEPTB.js +0 -2
  341. package/server/hume-CerGi2RH.js +0 -3
  342. package/server/inspect-agent-CWkeAB7J.js +0 -2
  343. package/server/lifecycle-Ck2UR27D.js +0 -14
  344. package/server/merge-ops-CFkQtXEj.js +0 -2
  345. package/server/projects-CrBE6IhN.js +0 -3
  346. package/server/public/assets/index-BAZxZ-8I.js +0 -796
  347. package/server/public/assets/index-FBG3JBfq.css +0 -1
  348. package/server/public/assets/mermaid-GHXKKRXX-BYP8MI37.js +0 -1
  349. package/server/rally-oggyp4cs.js +0 -3
  350. package/server/record-lEYK__LD.js +0 -3
  351. package/server/recovery-trip-BT7nb9OV.js +0 -98
  352. package/server/resolver-C7dLn8OK.js +0 -158
  353. package/server/resume-BYZBIab-.js +0 -3
  354. package/server/settings-Cy7SCFO9.js +0 -2
  355. package/server/specs-RzcDgozr.js +0 -3
  356. package/server/supervisor-CfX192ma.js +0 -2
  357. package/server/tmux-By8E_Yv_.js +0 -3
  358. package/server/token-util-C9u4An3K.js +0 -3
  359. package/server/tracker-config-BzfVj41Z.js +0 -3
  360. package/server/typed-errors-CrN1AByg.js +0 -3
  361. package/server/validation-Dq_wwcw3.js +0 -3
  362. package/server/verification-runner-D0Uh-9jc.js +0 -2
  363. package/server/workflows-BLwxUMP7.js +0 -2
  364. package/server/writer-BUweuRPx.js +0 -3
  365. package/server/writer-CrP2xuBn.js +0 -251
@@ -1,17 +1,17 @@
1
- import { Fn as init_projects, Jr as init_paths, Or as CONFIG_FILE, Sn as findProjectByPathSync, Z as resolveModel, d as loadConfigNoMigration, t as init_config_yaml } from "./config-yaml-cNOZcEww.js";
1
+ import { Fn as init_projects, Sn as findProjectByPathSync, Yr as init_paths, Z as resolveModel, d as loadConfigNoMigration, kr as CONFIG_FILE, t as init_config_yaml } from "./config-yaml-CqaAyn8y.js";
2
2
  import { t as require_toml } from "./toml-CeLDATih.js";
3
- import { C as isPaneDead, L as sessionExists, w as killSession, x as init_tmux } from "./tmux-C3g9VFcg.js";
4
- import { j as messageAgent, t as init_agents } from "./agents-B9GwfCyp.js";
5
- import { S as setUatGenerationStackStartedAtSync, a as getUatGenerationSync, h as listUatGenerationsWithStacksSync, l as isMergeTrainEnabled, m as listUatGenerationsSync, o as init_merge_sync, p as listUatGenerationNamesSync, s as insertUatGenerationSync, w as updateUatGenerationSync } from "./merge-sync-D7jWLgCC.js";
6
- import { A as init_vbrief_index, M as readVBriefDocument, k as findVBriefByIssue } from "./io-VEGSAqsd.js";
7
- import { S as getConversationByName, _t as getDiscoveredStats, at as aggregateDiscoveredSessionCost, ct as countDiscoveredSessions, ft as findDiscoveredSessions, k as init_conversations, mt as getDiscoveredSessionById, ot as aggregateDiscoveredSessionCostBy, yt as init_discovered_sessions } from "./conversations-B-lcHv-5.js";
8
- import { f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, n as FLYWHEEL_GLOBAL_PAUSE_KEY, o as getSetting, s as init_control_settings, t as FLYWHEEL_ACTIVE_RUN_ID_KEY, w as setSetting } from "./control-settings-D4EFsRBd.js";
9
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-C6g2R0Cd.js";
10
- import { a as enrichSessions, c as searchSessions, i as CostThresholdError, n as getSessionsFeedFacets, o as embedSessions, r as listSessionsFeed, t as scan } from "./scanner-BTM1jc_u.js";
11
- import { S as writeLatestFlywheelStatus, c as spawnFlywheelAgent, f as getFlywheelRunDetail, g as nextFlywheelRunId, h as listFlywheelRuns, i as loadResumeSessionId, r as isFlywheelDevcontainerRuntime, s as saveResumeSessionId, t as FLYWHEEL_ORCHESTRATOR_AGENT_ID, u as abortFlywheelRun, v as readFlywheelLaunchMetadata, x as writeFlywheelLaunchMetadata, y as resolveLiveFlywheelRunId } from "./flywheel-Dczmgchd.js";
12
- import { t as recordDeaconNudge } from "./deacon-nudge-log-B-naf89q.js";
13
- import { n as init_acceptance_criteria, t as extractACFromDocument } from "./acceptance-criteria-BZ_nQS1f.js";
14
- import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-Bqi1EF1P.js";
3
+ import { R as sessionExists, S as init_tmux, T as killSession, w as isPaneDead } from "./tmux-U55cNGFG.js";
4
+ import { L as messageAgent, s as init_agents } from "./queries-C0LCGG21.js";
5
+ import { S as setUatGenerationStackStartedAtSync, a as getUatGenerationSync, h as listUatGenerationsWithStacksSync, l as isMergeTrainEnabled, m as listUatGenerationsSync, o as init_merge_sync, p as listUatGenerationNamesSync, s as insertUatGenerationSync, w as updateUatGenerationSync } from "./merge-sync-B2KSk54U.js";
6
+ import { O as findVBriefByIssue, j as readVBriefDocument, k as init_vbrief_index } from "./io-DkC4sFSy.js";
7
+ import { S as getConversationByName, _t as getDiscoveredStats, at as aggregateDiscoveredSessionCost, ct as countDiscoveredSessions, ft as findDiscoveredSessions, k as init_conversations, mt as getDiscoveredSessionById, ot as aggregateDiscoveredSessionCostBy, yt as init_discovered_sessions } from "./conversations-BX5aD-6F.js";
8
+ import { f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, n as FLYWHEEL_GLOBAL_PAUSE_KEY, o as getSetting, s as init_control_settings, t as FLYWHEEL_ACTIVE_RUN_ID_KEY, w as setSetting } from "./control-settings-BguNQ1F_.js";
9
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-Dx8hUsvC.js";
10
+ import { a as enrichSessions, c as searchSessions, i as CostThresholdError, n as getSessionsFeedFacets, o as embedSessions, r as listSessionsFeed, t as scan } from "./scanner-BlZ2vB7j.js";
11
+ import { S as writeLatestFlywheelStatus, c as spawnFlywheelAgent, f as getFlywheelRunDetail, g as nextFlywheelRunId, h as listFlywheelRuns, i as loadResumeSessionId, r as isFlywheelDevcontainerRuntime, s as saveResumeSessionId, t as FLYWHEEL_ORCHESTRATOR_AGENT_ID, u as abortFlywheelRun, v as readFlywheelLaunchMetadata, x as writeFlywheelLaunchMetadata, y as resolveLiveFlywheelRunId } from "./flywheel-CqkO3cDj.js";
12
+ import { t as recordDeaconNudge } from "./deacon-nudge-log-ilDfxrhK.js";
13
+ import { t as extractACFromDocument } from "./acceptance-criteria-aQFKQf-J.js";
14
+ import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-5e9xOve4.js";
15
15
  import { isAbsolute, relative, resolve, sep } from "node:path";
16
16
  import { Effect } from "effect";
17
17
  import { existsSync } from "fs";
@@ -206,15 +206,15 @@ async function runInline(operation, payload, onProgress) {
206
206
  return null;
207
207
  }
208
208
  case "getArtifactBySlug": {
209
- const { getArtifactBySlugJob } = await import("./artifact-index-jobs-CcSrUoSE.js");
209
+ const { getArtifactBySlugJob } = await import("./artifact-index-jobs-qqa51B2Z.js");
210
210
  return getArtifactBySlugJob(payload);
211
211
  }
212
212
  case "listArtifactsForWorkspaceOrIssue": {
213
- const { listArtifactsForWorkspaceOrIssueJob } = await import("./artifact-index-jobs-CcSrUoSE.js");
213
+ const { listArtifactsForWorkspaceOrIssueJob } = await import("./artifact-index-jobs-qqa51B2Z.js");
214
214
  return listArtifactsForWorkspaceOrIssueJob(payload);
215
215
  }
216
216
  case "unshareArtifactBySlug": {
217
- const { unshareArtifactBySlugJob } = await import("./artifact-index-jobs-CcSrUoSE.js");
217
+ const { unshareArtifactBySlugJob } = await import("./artifact-index-jobs-qqa51B2Z.js");
218
218
  return unshareArtifactBySlugJob(payload);
219
219
  }
220
220
  }
@@ -273,7 +273,6 @@ function runDashboardDbJob(operation, payload, onProgress) {
273
273
  }
274
274
  //#endregion
275
275
  //#region services/flywheel-actions.ts
276
- init_acceptance_criteria();
277
276
  init_ensure_devcontainer();
278
277
  init_control_settings();
279
278
  const DEFAULT_BRIEF_PATH = "docs/flywheel-brief.md";
@@ -455,12 +454,12 @@ async function pauseFlywheelRunForDashboard() {
455
454
  if (before.activeRunId) try {
456
455
  const { readFile } = await import("node:fs/promises");
457
456
  const { join } = await import("node:path");
458
- const { getAgentDir } = await import("./agents-CEcaxSkR.js");
457
+ const { getAgentDir } = await import("./agents-BA15AQqo.js");
459
458
  const sessionId = (await readFile(join(getAgentDir(FLYWHEEL_ORCHESTRATOR_AGENT_ID), "session.id"), "utf-8")).trim();
460
459
  if (sessionId) await saveResumeSessionId(before.activeRunId, sessionId);
461
460
  } catch {}
462
461
  await setPaused(true);
463
- await import("./agents-CEcaxSkR.js").then(({ stopAgent }) => Effect.runPromise(stopAgent(FLYWHEEL_ORCHESTRATOR_AGENT_ID)));
462
+ await import("./agents-BA15AQqo.js").then(({ stopAgent }) => Effect.runPromise(stopAgent(FLYWHEEL_ORCHESTRATOR_AGENT_ID)));
464
463
  return {
465
464
  before,
466
465
  after: await readGateSnapshot(),
@@ -470,7 +469,7 @@ async function pauseFlywheelRunForDashboard() {
470
469
  async function abortFlywheelRunForDashboard() {
471
470
  const candidate = await getActiveRunId();
472
471
  if (!candidate) return { aborted: await resolveLiveFlywheelRunId() ?? null };
473
- const { stopAgent } = await import("./agents-CEcaxSkR.js");
472
+ const { stopAgent } = await import("./agents-BA15AQqo.js");
474
473
  await Effect.runPromise(stopAgent(FLYWHEEL_ORCHESTRATOR_AGENT_ID));
475
474
  await abortFlywheelRun(candidate);
476
475
  return { aborted: candidate };
@@ -1901,7 +1900,7 @@ function canStartUatTrainReconciler() {
1901
1900
  async function getReadySet() {
1902
1901
  const status = await readCurrentFlywheelStatusForDashboard();
1903
1902
  if (!status) return null;
1904
- const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-DEtEd3aK.js");
1903
+ const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-LDzQDwSg.js");
1905
1904
  const fromVerbs = (await Effect.runPromise(computeMergeQueue(status.activePipeline, projectRoot(), {
1906
1905
  getPrUrl: resolveMergeQueuePrUrl,
1907
1906
  onIneligible: (issueId, reason) => console.log(`[uat-train] ${issueId} has a merge verb but is not merge-eligible (${reason}) — excluded from the ready set`)
@@ -1927,8 +1926,8 @@ async function getReadySet() {
1927
1926
  */
1928
1927
  async function sweepEligibleFeatures(alreadyIncluded) {
1929
1928
  try {
1930
- const { loadReviewStatuses, mergeGateEligibility } = await import("./review-status-CG0iDuWa.js");
1931
- const { resolveProjectFromIssueSync } = await import("./projects-CrBE6IhN.js");
1929
+ const { loadReviewStatuses, mergeGateEligibility } = await import("./review-status-77N3PoZr.js");
1930
+ const { resolveProjectFromIssueSync } = await import("./projects-Dc9aoVoG.js");
1932
1931
  const { execFile } = await import("node:child_process");
1933
1932
  const { promisify } = await import("node:util");
1934
1933
  const execFileAsync = promisify(execFile);
@@ -2162,7 +2161,7 @@ async function postUatGenerationStackPayload(name) {
2162
2161
  }
2163
2162
  async function postUatGenerationPromotePayload(name, firePostMerge) {
2164
2163
  const root = projectRoot();
2165
- const { reviewRecordEligibility } = await import("./flywheel-merge-order-DEtEd3aK.js");
2164
+ const { reviewRecordEligibility } = await import("./flywheel-merge-order-LDzQDwSg.js");
2166
2165
  const result = await promoteUatGeneration(name, root, {
2167
2166
  git: buildUatPromoteGitDeps(root),
2168
2167
  store: {
@@ -2180,4 +2179,4 @@ async function postUatGenerationPromotePayload(name, firePostMerge) {
2180
2179
  //#endregion
2181
2180
  export { getDashboardIdentity as _, postUatGenerationStackPayload as a, shouldRefuseHostDashboardPort as b, startUatTrainReconciler as c, openFlywheelRunReportForDashboard as d, pauseFlywheelRunForDashboard as f, runDashboardDbJob as g, startFlywheelRunForDashboard as h, postUatGenerationPromotePayload as i, stopUatTrainReconciler as l, resumeFlywheelRunForDashboard as m, getUatCandidatePayload as n, resolveUatProjectRoot as o, readCurrentFlywheelStatusForDashboard as p, getUatGenerationsPayload as r, runUatTrainReconcile as s, canStartUatTrainReconciler as t, abortFlywheelRunForDashboard as u, isWorkspaceRepoRoot as v, readHostDashboardApiPort as y };
2182
2181
 
2183
- //# sourceMappingURL=uat-train-BRo6DM7p.js.map
2182
+ //# sourceMappingURL=uat-train-CqN34zFx.js.map
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { xr as init_errors } from "./config-yaml-cNOZcEww.js";
3
- import { f as init_config, m as loadConfigSync } from "./config-DVLdmnMJ.js";
4
- import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-ChWOECy0.js";
2
+ import { Sr as init_errors } from "./config-yaml-CqaAyn8y.js";
3
+ import { f as init_config, m as loadConfigSync } from "./config-DfaUXr6r.js";
4
+ import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-C77NKnsV.js";
5
5
  import { Effect } from "effect";
6
6
  import "fs";
7
7
  import { join } from "path";
@@ -25,6 +25,32 @@ function buildQualityGateEnv(gateEnv) {
25
25
  ...gateEnv
26
26
  };
27
27
  }
28
+ function registerGateProcessGroup(pid) {
29
+ if (!pid || process.platform === "win32") return void 0;
30
+ const watchdog = setTimeout(() => {
31
+ console.warn(`[quality-gate] process group ${pid} exceeded timeout+grace — killing group (PAN-2669)`);
32
+ killGateProcessGroup(pid);
33
+ }, GATE_TIMEOUT_MS + GATE_WATCHDOG_GRACE_MS);
34
+ watchdog.unref();
35
+ activeGateProcessGroups.set(pid, watchdog);
36
+ return pid;
37
+ }
38
+ function killGateProcessGroup(pgid) {
39
+ if (!pgid) return;
40
+ const watchdog = activeGateProcessGroups.get(pgid);
41
+ if (watchdog) clearTimeout(watchdog);
42
+ activeGateProcessGroups.delete(pgid);
43
+ try {
44
+ process.kill(-pgid, "SIGKILL");
45
+ } catch {}
46
+ }
47
+ /** PAN-2669: reap every live gate process group — called on server shutdown so
48
+ * restarts never orphan vitest/build trees. */
49
+ function killAllGateProcessGroups() {
50
+ const count = activeGateProcessGroups.size;
51
+ for (const pgid of [...activeGateProcessGroups.keys()]) killGateProcessGroup(pgid);
52
+ return count;
53
+ }
28
54
  async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", opts = {}) {
29
55
  if (opts.isRemote && !opts.vmName) throw new Error("Remote workspace requires vmName");
30
56
  if (opts.isRemote && opts.vmName) {
@@ -38,10 +64,12 @@ async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", op
38
64
  const cwd = gate.path ? join(projectPath, gate.path) : projectPath;
39
65
  console.log(`[quality-gate] Running "${name}" (${required ? "required" : "optional"}) in ${cwd}`);
40
66
  opts.onLog?.(`Running gate "${name}"${required ? "" : " (optional)"}…`);
67
+ opts.onGateStart?.(name);
41
68
  const startTime = Date.now();
42
69
  if (gate.type === "http_health") {
43
70
  const result = await runHttpHealthGate(name, gate, required);
44
71
  results.push(result);
72
+ opts.onGateResult?.(result);
45
73
  if (!result.passed && required) {
46
74
  console.log(`[quality-gate] ✗ Required gate "${name}" failed — stopping`);
47
75
  break;
@@ -71,6 +99,7 @@ async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", op
71
99
  error: `container ${containerName} is not running`,
72
100
  infraUnavailable: true
73
101
  });
102
+ opts.onGateResult?.(results[results.length - 1]);
74
103
  if (required) break;
75
104
  continue;
76
105
  }
@@ -84,6 +113,7 @@ async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", op
84
113
  error: "docker daemon unreachable",
85
114
  infraUnavailable: true
86
115
  });
116
+ opts.onGateResult?.(results[results.length - 1]);
87
117
  if (required) break;
88
118
  continue;
89
119
  }
@@ -96,23 +126,35 @@ async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", op
96
126
  let lastError = null;
97
127
  let passedGate = false;
98
128
  let passOutput = "";
99
- for (let attempt = 1; attempt <= maxAttempts; attempt++) try {
100
- const useHostCwd = !isRemote && !(gate.container && gate.container_name);
101
- const env = buildQualityGateEnv(gate.env);
102
- const { stdout, stderr } = await execAsync(resolvedCommand, {
103
- cwd: useHostCwd ? cwd : void 0,
104
- env,
105
- maxBuffer: 10 * 1024 * 1024,
106
- timeout: 1200 * 1e3
107
- });
108
- passedGate = true;
109
- passOutput = (stdout + stderr).slice(-2e3);
110
- break;
111
- } catch (error) {
112
- lastError = error;
113
- if (attempt < maxAttempts) {
114
- console.log(`[quality-gate] ✗ "${name}" failed attempt ${attempt}/${maxAttempts} — retrying (gate declares retry: ${gate.retry})`);
115
- opts.onLog?.(`↻ ${name} failed attempt ${attempt}/${maxAttempts} — retrying`);
129
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
130
+ let gatePgid;
131
+ try {
132
+ const useHostCwd = !isRemote && !(gate.container && gate.container_name);
133
+ const env = buildQualityGateEnv(gate.env);
134
+ const execPromise = execAsync(resolvedCommand, {
135
+ cwd: useHostCwd ? cwd : void 0,
136
+ env,
137
+ maxBuffer: 10 * 1024 * 1024,
138
+ timeout: GATE_TIMEOUT_MS,
139
+ ...process.platform !== "win32" ? { detached: true } : {}
140
+ });
141
+ gatePgid = registerGateProcessGroup(execPromise.child.pid);
142
+ if (opts.onGateOutput) {
143
+ execPromise.child.stdout?.on("data", (chunk) => opts.onGateOutput(name, String(chunk)));
144
+ execPromise.child.stderr?.on("data", (chunk) => opts.onGateOutput(name, String(chunk)));
145
+ }
146
+ const { stdout, stderr } = await execPromise;
147
+ killGateProcessGroup(gatePgid);
148
+ passedGate = true;
149
+ passOutput = (stdout + stderr).slice(-2e3);
150
+ break;
151
+ } catch (error) {
152
+ killGateProcessGroup(gatePgid);
153
+ lastError = error;
154
+ if (attempt < maxAttempts) {
155
+ console.log(`[quality-gate] ✗ "${name}" failed attempt ${attempt}/${maxAttempts} — retrying (gate declares retry: ${gate.retry})`);
156
+ opts.onLog?.(`↻ ${name} failed attempt ${attempt}/${maxAttempts} — retrying`);
157
+ }
116
158
  }
117
159
  }
118
160
  if (passedGate) {
@@ -126,6 +168,7 @@ async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", op
126
168
  output: passOutput,
127
169
  durationMs
128
170
  });
171
+ opts.onGateResult?.(results[results.length - 1]);
129
172
  } else {
130
173
  const error = lastError;
131
174
  const durationMs = Date.now() - startTime;
@@ -140,6 +183,7 @@ async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", op
140
183
  durationMs,
141
184
  error: error.message?.slice(0, 500)
142
185
  });
186
+ opts.onGateResult?.(results[results.length - 1]);
143
187
  if (required) {
144
188
  console.log(`[quality-gate] ✗ Required gate "${name}" failed — stopping`);
145
189
  break;
@@ -194,7 +238,7 @@ async function runHttpHealthGate(name, gate, required) {
194
238
  };
195
239
  }
196
240
  }
197
- var execAsync, DASHBOARD_RUNTIME_ENV_KEYS, DEFAULT_GATES, runQualityGates;
241
+ var execAsync, DASHBOARD_RUNTIME_ENV_KEYS, GATE_TIMEOUT_MS, GATE_WATCHDOG_GRACE_MS, activeGateProcessGroups, DEFAULT_GATES, runQualityGates;
198
242
  var init_validation = __esmMin((() => {
199
243
  init_workspace_config();
200
244
  init_config();
@@ -205,6 +249,9 @@ var init_validation = __esmMin((() => {
205
249
  "PORT",
206
250
  "DASHBOARD_URL"
207
251
  ];
252
+ GATE_TIMEOUT_MS = 1200 * 1e3;
253
+ GATE_WATCHDOG_GRACE_MS = 3e4;
254
+ activeGateProcessGroups = /* @__PURE__ */ new Map();
208
255
  DEFAULT_GATES = {
209
256
  typecheck: { command: "npm run typecheck 2>&1" },
210
257
  lint: { command: "npm run lint 2>&1" },
@@ -213,6 +260,6 @@ var init_validation = __esmMin((() => {
213
260
  runQualityGates = (gates, projectPath, phase = "pre_push", opts = {}) => Effect.promise(() => runQualityGatesPromise(gates, projectPath, phase, opts));
214
261
  }));
215
262
  //#endregion
216
- export { init_validation as n, runQualityGates as r, DEFAULT_GATES as t };
263
+ export { runQualityGates as i, init_validation as n, killAllGateProcessGroups as r, DEFAULT_GATES as t };
217
264
 
218
- //# sourceMappingURL=validation-CsPVsoA0.js.map
265
+ //# sourceMappingURL=validation-4-z2Cw4z.js.map
@@ -0,0 +1,3 @@
1
+ import { i as runQualityGates, n as init_validation, r as killAllGateProcessGroups } from "./validation-4-z2Cw4z.js";
2
+ init_validation();
3
+ export { killAllGateProcessGroups, runQualityGates };
@@ -0,0 +1,56 @@
1
+ import { join } from "node:path";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ //#region ../../lib/cloister/verification-artifact.ts
4
+ /**
5
+ * Verification gate artifact — the durable record of the most recent
6
+ * quality-gate run for a workspace, written by the verification runner and
7
+ * served to the dashboard's issue-tree Lint node.
8
+ *
9
+ * Lives at `<workspace>/.overdeck/verification-latest.json` (workspace runtime
10
+ * plane, gitignored alongside continue.json). Each run overwrites the previous
11
+ * artifact; history is not kept here — review-status history remains the
12
+ * canonical timeline.
13
+ */
14
+ const ARTIFACT_RELATIVE_PATH = join(".overdeck", "verification-latest.json");
15
+ function verificationArtifactPath(workspacePath) {
16
+ return join(workspacePath, ARTIFACT_RELATIVE_PATH);
17
+ }
18
+ function writeVerificationArtifact(workspacePath, issueId, gateResults, progress) {
19
+ const failed = gateResults.find((r) => !r.passed && r.required !== false);
20
+ const running = progress !== void 0;
21
+ const artifact = {
22
+ issueId,
23
+ ranAt: (/* @__PURE__ */ new Date()).toISOString(),
24
+ outcome: running ? "running" : failed ? "failed" : "passed",
25
+ ...running && progress.currentGate ? { currentGate: progress.currentGate } : {},
26
+ ...running && progress.currentGateOutput ? { currentGateOutput: progress.currentGateOutput } : {},
27
+ ...!running && failed ? { failedCheck: failed.name } : {},
28
+ gates: gateResults.map((r) => ({
29
+ name: r.name,
30
+ passed: r.passed,
31
+ required: r.required !== false,
32
+ durationMs: r.durationMs,
33
+ ...r.passed ? {} : { output: r.output },
34
+ ...r.error ? { error: r.error } : {}
35
+ }))
36
+ };
37
+ const path = verificationArtifactPath(workspacePath);
38
+ mkdirSync(join(workspacePath, ".overdeck"), { recursive: true });
39
+ writeFileSync(path, JSON.stringify(artifact, null, 2));
40
+ return artifact;
41
+ }
42
+ function readVerificationArtifact(workspacePath) {
43
+ const path = verificationArtifactPath(workspacePath);
44
+ if (!existsSync(path)) return null;
45
+ try {
46
+ const parsed = JSON.parse(readFileSync(path, "utf-8"));
47
+ if (!parsed || !Array.isArray(parsed.gates)) return null;
48
+ return parsed;
49
+ } catch {
50
+ return null;
51
+ }
52
+ }
53
+ //#endregion
54
+ export { verificationArtifactPath as n, writeVerificationArtifact as r, readVerificationArtifact as t };
55
+
56
+ //# sourceMappingURL=verification-artifact-DK1xb1zG.js.map
@@ -0,0 +1,2 @@
1
+ import { t as readVerificationArtifact } from "./verification-artifact-DK1xb1zG.js";
2
+ export { readVerificationArtifact };