@overdeck/desktop 0.65.0 → 0.66.0

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 (344) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-BgED6Izb.js → acceptance-criteria-CNfqZWHE.js} +1 -1
  3. package/server/activity-CElPNdhJ.js +2 -0
  4. package/server/{activity-CVRFYPg-.js → activity-h2Q-pMa7.js} +4 -4
  5. package/server/{agent-pane-io-8U_dsHCf.js → agent-pane-io-CXPX0Kq3.js} +43 -5
  6. package/server/agent-pane-io-H-50g3Ze.js +2 -0
  7. package/server/{agent-state-service-CZjmcB3_.js → agent-state-service-CJB8_8Bp.js} +2 -2
  8. package/server/{agent-state-service-hbWznp6M.js → agent-state-service-Cs_Z_oHX.js} +1 -1
  9. package/server/{agent-status-events-HU33uOJc.js → agent-status-events-DfYAcfpo.js} +1 -1
  10. package/server/{agents-DfEYd_I0.js → agents-C9oho7kE.js} +3 -3
  11. package/server/{agents-CKFhKqJp.js → agents-DebP6rx9.js} +56 -46
  12. package/server/{agents-DNkpVGda.js → agents-dwMmsEQT.js} +2 -2
  13. package/server/archive-planning-DflA6GM1.js +2 -0
  14. package/server/{archive-planning-BvwP8nTs.js → archive-planning-vbycG6oX.js} +2 -2
  15. package/server/{artifact-index-jobs-CFe2p3St.js → artifact-index-jobs-C73RHIUN.js} +1 -1
  16. package/server/{auto-merge-eligibility-De2WgmQS.js → auto-merge-eligibility-f1D8TwAj.js} +1 -1
  17. package/server/{auto-merge-eligibility-DmUQEAws.js → auto-merge-eligibility-is6bTkrA.js} +1 -1
  18. package/server/{auto-spawn-consent-DRgQbl8k.js → auto-spawn-consent-BxXl-3y7.js} +2 -2
  19. package/server/{backend-inventory-CjCALqY9.js → backend-inventory-DsbeKiYY.js} +2 -2
  20. package/server/{backend-inventory-HZnm8K3m.js → backend-inventory-tUXKfgL_.js} +1 -1
  21. package/server/{backlog-auto-trigger-BZ9HqOh5.js → backlog-auto-trigger-EIBVGK3_.js} +2 -2
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-BiGSCyKD.js → checkpoints-C-xh-Mv0.js} +1 -1
  24. package/server/{checkpoints-DEk_xKPI.js → checkpoints-SNuYbtl9.js} +1 -1
  25. package/server/{claude-hooks-provision-DOMp0nce.js → claude-hooks-provision-BGL61BFy.js} +1 -1
  26. package/server/{claude-hooks-provision-Cx-iNW3h.js → claude-hooks-provision-D60ldmh3.js} +1 -1
  27. package/server/{claude-settings-overlay-DX8SS3mU.js → claude-settings-overlay-BKk6aPyn.js} +1 -1
  28. package/server/{claude-settings-overlay-tccrSYWh.js → claude-settings-overlay-Z1wvGWrM.js} +1 -1
  29. package/server/{cli-BOQWA-ux.js → cli-CfYEyYsr.js} +3 -3
  30. package/server/cli-DHZ5Ecrt.js +2 -0
  31. package/server/{closed-issue-reaper-g1xev2lv.js → closed-issue-reaper-DkGIkI3v.js} +1 -1
  32. package/server/{closed-issue-reaper-DnaFCYJk.js → closed-issue-reaper-tjnA5V8Z.js} +3 -3
  33. package/server/{codex-BE1w7ARL.js → codex-BrY7aOvP.js} +2 -2
  34. package/server/{codex-CVOd_JEs.js → codex-vuXHqT53.js} +1 -1
  35. package/server/{conflict-gate-Domf8Fvr.js → conflict-gate-CPbG8VXI.js} +2 -2
  36. package/server/{constants-ZsF6FhcR.js → constants-DEItMRn6.js} +1 -1
  37. package/server/{conversation-compaction-Dm4_bCqZ.js → conversation-compaction-BLDpoKfB.js} +5 -5
  38. package/server/{conversation-compaction-sKyT07L1.js → conversation-compaction-D1aR4ytx.js} +1 -1
  39. package/server/{conversation-delivery-Dn6b4mUU.js → conversation-delivery-C0Q7Ew-t.js} +17 -17
  40. package/server/{conversation-liveness-DJzPiGPO.js → conversation-liveness-DO3e-N73.js} +1 -1
  41. package/server/{conversation-liveness-Cq4TNxqa.js → conversation-liveness-g3nFofTZ.js} +2 -2
  42. package/server/{conversation-pull-requests-Bu30dOQv.js → conversation-pull-requests-VQwME1F1.js} +1 -1
  43. package/server/{conversation-reads-CGepvSWx.js → conversation-reads-0fCsCPQe.js} +8 -8
  44. package/server/{conversation-reads-D-UfsYqf.js → conversation-reads-lMO8cWqw.js} +1 -1
  45. package/server/{conversation-runtime-DA_Famk_.js → conversation-runtime-Bh4Wj05k.js} +1 -1
  46. package/server/{conversations-search-CDvHCyYe.js → conversations-search-CS0COdna.js} +1 -1
  47. package/server/{cpu-psi-BN99YdGz.js → cpu-psi-DvzVl1bx.js} +1 -1
  48. package/server/{daemon-BX8hAPTC.js → daemon-DMVuHx-i.js} +2 -2
  49. package/server/daemon-d62dV_pO.js +2 -0
  50. package/server/{dag-DC0niH7i.js → dag-PPL-MAx0.js} +1 -1
  51. package/server/{dangerous-git-ops-GKdOQbOe.js → dangerous-git-ops-BcSMn_cv.js} +1 -1
  52. package/server/dashboard-db-worker.js +4 -4
  53. package/server/{deacon-swarm-record-4FGgybnL.js → deacon-swarm-record-BenMf1-5.js} +1 -1
  54. package/server/deacon.js +4 -4
  55. package/server/{derived-issue-state-BtoFumna.js → derived-issue-state-BaGJkxQq.js} +2 -2
  56. package/server/{derived-issue-state-DnKs1TXS.js → derived-issue-state-BqhN4lOl.js} +1 -1
  57. package/server/{derived-issue-state-CCHbqKjW.js → derived-issue-state-CmvMPi-R.js} +4 -4
  58. package/server/{derived-issue-state-QLhfZgf5.js → derived-issue-state-Dz7ti1og.js} +2 -2
  59. package/server/{dist-B5cmD5rC.js → dist-B-6_eqmp.js} +1 -1
  60. package/server/dist-rCsp8VVx.js +3 -0
  61. package/server/{dod-C6qNQ8O3.js → dod-BJP9kMFG.js} +1 -1
  62. package/server/{done-preflight-Bu3KGCAV.js → done-preflight-ZQMI79O0.js} +1 -1
  63. package/server/{done-preflight-BvmOQ64R.js → done-preflight-oy6Tja5C.js} +1 -1
  64. package/server/{ensure-devcontainer-HQ3fQD5V.js → ensure-devcontainer-CollbMTo.js} +2 -2
  65. package/server/ensure-devcontainer-bvZTPcBb.js +2 -0
  66. package/server/evict-LT5Wbo6F.js +2 -0
  67. package/server/{evict-Dhzce_bB.js → evict-l0JJZ11s.js} +2 -2
  68. package/server/{feedback-target-C6lpafxM.js → feedback-target-B0XBJvkz.js} +1 -1
  69. package/server/{feedback-target-DmQ249DE.js → feedback-target-BYLtF8vX.js} +3 -3
  70. package/server/{feedback-writer-pF7pA9Ei.js → feedback-writer-XmR1ZtVC.js} +1 -1
  71. package/server/{feedback-writer-DSEPHMwz.js → feedback-writer-g9cmlhQU.js} +1 -1
  72. package/server/{flywheel-Ib4Qp5x6.js → flywheel-C-t-XYUt.js} +3 -3
  73. package/server/{flywheel-merge-order-BjbLhtpF.js → flywheel-merge-order-qRslbYK3.js} +2 -2
  74. package/server/{format-QXO0qqJo.js → format-3trt48Iz.js} +1 -1
  75. package/server/{from-ufsGrQUf.js → from-Cdjxc_Sy.js} +1 -1
  76. package/server/{generation-ship-a14Tkc5B.js → generation-ship-BTyy05vO.js} +1 -1
  77. package/server/{harness-binary-DtPw6bEJ.js → harness-binary-BaN9N-sG.js} +2 -2
  78. package/server/harness-binary-DFBkr1Wg.js +2 -0
  79. package/server/{harness-resolve-BfOivkUY.js → harness-resolve-CimEYcpG.js} +4 -4
  80. package/server/{harness-resolve-PDc4GGnM.js → harness-resolve-DclBRYRh.js} +1 -1
  81. package/server/{herdr-agent-terminals-ffj8Zg3X.js → herdr-agent-terminals-Dm4HnKF7.js} +1 -1
  82. package/server/infer-tracker-BJR_ATzw.js +2 -0
  83. package/server/infer-tracker-CwOO7_gU.js +237 -0
  84. package/server/{issue-lifecycle-BlE7L0r7.js → issue-lifecycle-CmbQlAqW.js} +8 -8
  85. package/server/{issue-lifecycle-Y8IGkADf.js → issue-lifecycle-Dt9AFW70.js} +1 -1
  86. package/server/{issue-pause-9vXZZkOc.js → issue-pause-kvPBItCx.js} +5 -5
  87. package/server/{issue-service-singleton-DxTRf-RV.js → issue-service-singleton-BbERjqoV.js} +1 -1
  88. package/server/{issue-service-singleton-QPDr49TB.js → issue-service-singleton-DwYi9Oie.js} +3 -3
  89. package/server/{kimi-code-AcOc8X0U.js → kimi-code-DNNwP6FT.js} +1 -1
  90. package/server/{label-cleanup-CIoPmmbd.js → label-cleanup-C7weaJlZ.js} +2 -2
  91. package/server/{launch-DSEY_mt2.js → launch-DF_WD2-a.js} +10 -7
  92. package/server/{launch-DCAI36Nq.js → launch-DlClnoCc.js} +1 -1
  93. package/server/{launcher-generator-BofB3FX_.js → launcher-generator-COHAIhyH.js} +2 -2
  94. package/server/{legacy-tldr-cleanup-DJX9V9s4.js → legacy-tldr-cleanup-RqGuveuz.js} +1 -1
  95. package/server/{lifecycle-BT3aegwk.js → lifecycle-BHcU1hPs.js} +4 -4
  96. package/server/{linear-mcp-auth-ChV8Aqu4.js → linear-mcp-auth-C0qzNK0H.js} +1 -1
  97. package/server/{linear-mcp-auth-COqdLkXb.js → linear-mcp-auth-JIDCfEz0.js} +3 -3
  98. package/server/{memory-governor-BQg4GOEF.js → memory-governor-C3T769G6.js} +6 -6
  99. package/server/{merge-BS-9EAg0.js → merge-DaJul9Xt.js} +1 -1
  100. package/server/{merge-agent-CVjeg02H.js → merge-agent-C2UtoeTe.js} +1 -1
  101. package/server/{merge-agent-CkEA7spe.js → merge-agent-CCs-JQhC.js} +10 -10
  102. package/server/{merge-batch-CSWibuAl.js → merge-batch-BBxSLbaz.js} +1 -1
  103. package/server/merge-gate-3O9zdlWW.js +2 -0
  104. package/server/{merge-gate-LOtvWv5K.js → merge-gate-D5zTeaC0.js} +2 -2
  105. package/server/merge-ops-BP9-OIjU.js +2 -0
  106. package/server/{merge-ready-set-C0enElWu.js → merge-ready-set-C5TMtdGy.js} +1 -1
  107. package/server/{merge-ready-set-8yRGoXfN.js → merge-ready-set-DlKHumrb.js} +2 -2
  108. package/server/{merge-train-ClvHbVeP.js → merge-train-BOKRD6nt.js} +1 -1
  109. package/server/{merge-train-CfvTn1fw.js → merge-train-Cx7vXfxi.js} +2 -2
  110. package/server/{merge-train-Cee9LY5p.js → merge-train-Dg5cr8mS.js} +19 -19
  111. package/server/{merge-train-deps-BCvx9OJh.js → merge-train-deps-D1MTGotL.js} +3 -3
  112. package/server/messaging-Cbhf7pAu.js +2 -0
  113. package/server/{multipart-parser-Divdcrf4.js → multipart-parser-fgcPeL-R.js} +2 -2
  114. package/server/node_modules/.package-lock.json +1 -1
  115. package/server/package-lock.json +2 -2
  116. package/server/package.json +1 -1
  117. package/server/{pipeline-BxDHIXwk.js → pipeline-CZPx_h0w.js} +1 -1
  118. package/server/pipeline-membership-BbdiZQ2g.js +171 -0
  119. package/server/pipeline-membership-LZVPTNzz.js +2 -0
  120. package/server/{policy-context-De_w57FT.js → policy-context-CYqNhQra.js} +1 -1
  121. package/server/{policy-context-DlF2pBlT.js → policy-context-CebkQTkr.js} +2 -2
  122. package/server/{preemption-BseBG1Lx.js → preemption-D15-OfS-.js} +3 -3
  123. package/server/{prerequisites-report-D4DsEecP.js → prerequisites-report-BpRfGeIQ.js} +3 -3
  124. package/server/{project-pipelines-BV_6EeMm.js → project-pipelines-C0eawMQd.js} +1 -1
  125. package/server/{project-resource-refresh-queue-Dsha4mgg.js → project-resource-refresh-queue-DmNcMWIW.js} +1 -1
  126. package/server/{project-resource-refresh-queue-BD7xaiwB.js → project-resource-refresh-queue-Dx1QPkGs.js} +13 -173
  127. package/server/public/assets/{abnfDiagram-VCTEODGH-a5JXGj2O.js → abnfDiagram-VCTEODGH-Bkh8Qhhf.js} +1 -1
  128. package/server/public/assets/{ar-SA-G6X2FPQ2-DfwESDRS.js → ar-SA-G6X2FPQ2-Duv-fSqg.js} +1 -1
  129. package/server/public/assets/{architectureDiagram-5GKGNRK7-CNqDlS6j.js → architectureDiagram-5GKGNRK7-vm7gsvBp.js} +1 -1
  130. package/server/public/assets/{az-AZ-76LH7QW2-DcXSBniP.js → az-AZ-76LH7QW2-CqalVsAI.js} +1 -1
  131. package/server/public/assets/{bg-BG-XCXSNQG7-C9L0gaeE.js → bg-BG-XCXSNQG7-KojQTSIf.js} +1 -1
  132. package/server/public/assets/{bn-BD-2XOGV67Q-B53MN52O.js → bn-BD-2XOGV67Q-CGLJg39W.js} +1 -1
  133. package/server/public/assets/{ca-ES-6MX7JW3Y-BTZPNvIz.js → ca-ES-6MX7JW3Y-BG9DUCtc.js} +1 -1
  134. package/server/public/assets/{chunk-EIO257PC-S1ZezR1y.js → chunk-EIO257PC-vUssjuTB.js} +1 -1
  135. package/server/public/assets/{chunk-IMKFNOWR-CFhbID1F.js → chunk-IMKFNOWR-Dy5lrR0k.js} +1 -1
  136. package/server/public/assets/{chunk-SHT3W25Y-vRJiIXR_.js → chunk-SHT3W25Y-B1Ej75VE.js} +1 -1
  137. package/server/public/assets/{chunk-SVP7TREG-D-Pw_X2t.js → chunk-SVP7TREG-BBLmHGKS.js} +1 -1
  138. package/server/public/assets/{chunk-TICWLB2K-DzeVkrx_.js → chunk-TICWLB2K-BYF1_eFX.js} +1 -1
  139. package/server/public/assets/{classDiagram-ZZMXUADV-BYD5DQer.js → classDiagram-ZZMXUADV-BFooIsVI.js} +1 -1
  140. package/server/public/assets/{classDiagram-v2-VYDZK3BY-BYD5DQer.js → classDiagram-v2-VYDZK3BY-BFooIsVI.js} +1 -1
  141. package/server/public/assets/{cs-CZ-2BRQDIVT-CNtIRKDO.js → cs-CZ-2BRQDIVT-B7KdIXZX.js} +1 -1
  142. package/server/public/assets/{cynefinDiagram-5FMLGOSQ-BdxptoBH.js → cynefinDiagram-5FMLGOSQ-B74BPf3L.js} +1 -1
  143. package/server/public/assets/{da-DK-5WZEPLOC-CFH9B_XA.js → da-DK-5WZEPLOC-D4z-FQo3.js} +1 -1
  144. package/server/public/assets/{dagre-GXQ25YYZ-8A4ks-g0.js → dagre-GXQ25YYZ-CzGQ9RBh.js} +1 -1
  145. package/server/public/assets/{de-DE-XR44H4JA-SSAwqM2T.js → de-DE-XR44H4JA-BLHcSSpk.js} +1 -1
  146. package/server/public/assets/{diagram-S7CK7UJ4-BiEABFvq.js → diagram-S7CK7UJ4-BLVIehtN.js} +1 -1
  147. package/server/public/assets/{diagram-UQ7AKVKN-CbAQm8rt.js → diagram-UQ7AKVKN-CWBxQLwX.js} +1 -1
  148. package/server/public/assets/{diagram-VX7I27RA-CX6cTJ6m.js → diagram-VX7I27RA-D-nhHjqI.js} +1 -1
  149. package/server/public/assets/{diagram-Z3DM3KII-CUJMn-73.js → diagram-Z3DM3KII-t-PkDqPd.js} +1 -1
  150. package/server/public/assets/{dist-DB46JHIp.js → dist-7NqkUyWp.js} +4 -4
  151. package/server/public/assets/{ebnfDiagram-PWID7BFC-vIgmpIpC.js → ebnfDiagram-PWID7BFC-BqLhIpq3.js} +1 -1
  152. package/server/public/assets/{el-GR-BZB4AONW-CEWaQ14U.js → el-GR-BZB4AONW-CpB4PJtL.js} +1 -1
  153. package/server/public/assets/{en-B4ZKOASM-DPbmc81o.js → en-B4ZKOASM-BokeIfhD.js} +1 -1
  154. package/server/public/assets/{erDiagram-RLTQ6QDP-Bx76fbpv.js → erDiagram-RLTQ6QDP-CwsmK2oF.js} +1 -1
  155. package/server/public/assets/{es-ES-U4NZUMDT-D98PwSTw.js → es-ES-U4NZUMDT-7pdvQy8R.js} +1 -1
  156. package/server/public/assets/{eu-ES-A7QVB2H4-Covb8Ol-.js → eu-ES-A7QVB2H4-BvMoCige.js} +1 -1
  157. package/server/public/assets/{fa-IR-HGAKTJCU-Dtd-fEqq.js → fa-IR-HGAKTJCU-oqb9ngcA.js} +1 -1
  158. package/server/public/assets/{fi-FI-Z5N7JZ37-hfxveRFy.js → fi-FI-Z5N7JZ37-BWCKhxHc.js} +1 -1
  159. package/server/public/assets/{flowDiagram-HODETNUW-DfUL9mV5.js → flowDiagram-HODETNUW-BFLMpZi8.js} +1 -1
  160. package/server/public/assets/{fr-FR-RHASNOE6-SFarC5-9.js → fr-FR-RHASNOE6-lIqYd1Kh.js} +1 -1
  161. package/server/public/assets/{ganttDiagram-EL5Y4UJY-BWhqn10r.js → ganttDiagram-EL5Y4UJY-_hCoOnvJ.js} +1 -1
  162. package/server/public/assets/{gl-ES-HMX3MZ6V-B5E2hTiL.js → gl-ES-HMX3MZ6V-BuMMBxGa.js} +1 -1
  163. package/server/public/assets/{he-IL-6SHJWFNN-CtPUdyTg.js → he-IL-6SHJWFNN-CASskgj6.js} +1 -1
  164. package/server/public/assets/{hi-IN-IWLTKZ5I-Dno5smSQ.js → hi-IN-IWLTKZ5I-V8xvo9N_.js} +1 -1
  165. package/server/public/assets/{hu-HU-A5ZG7DT2-6fM9o4Vm.js → hu-HU-A5ZG7DT2-Dwz2tW9D.js} +1 -1
  166. package/server/public/assets/{id-ID-SAP4L64H-DqHxJ0od.js → id-ID-SAP4L64H-CsAKnonA.js} +1 -1
  167. package/server/public/assets/image-GAAHSSAO-DlRrB5ro.js +1 -0
  168. package/server/public/assets/{index-BAHYSdai.js → index-uxuGUUZm.js} +9 -9
  169. package/server/public/assets/{infoDiagram-27XIBGKW-B6REiikV.js → infoDiagram-27XIBGKW-Bq35vHxL.js} +1 -1
  170. package/server/public/assets/{ishikawaDiagram-5VMMS53U-CJ4FcDTi.js → ishikawaDiagram-5VMMS53U-BP8VkFPc.js} +1 -1
  171. package/server/public/assets/{it-IT-JPQ66NNP-COf0Mlpu.js → it-IT-JPQ66NNP-yPqYjuhl.js} +1 -1
  172. package/server/public/assets/{ja-JP-DBVTYXUO-CnmSZoYJ.js → ja-JP-DBVTYXUO-SIGkDKhH.js} +1 -1
  173. package/server/public/assets/{kaa-6HZHGXH3-psdaC7_Y.js → kaa-6HZHGXH3-DxnCb5Kc.js} +1 -1
  174. package/server/public/assets/{kab-KAB-ZGHBKWFO-DHcsec5D.js → kab-KAB-ZGHBKWFO-CVCxey_p.js} +1 -1
  175. package/server/public/assets/{kanban-definition-UXKFOSKX-CWOzrzwB.js → kanban-definition-UXKFOSKX-Cj2TVfn0.js} +1 -1
  176. package/server/public/assets/{kk-KZ-P5N5QNE5-ChxI9E6E.js → kk-KZ-P5N5QNE5-M9YAeME3.js} +1 -1
  177. package/server/public/assets/{km-KH-HSX4SM5Z-B75b52bE.js → km-KH-HSX4SM5Z-D3AhWnhV.js} +1 -1
  178. package/server/public/assets/{ko-KR-MTYHY66A-DS6CvLDO.js → ko-KR-MTYHY66A-Or_gIXhD.js} +1 -1
  179. package/server/public/assets/{ku-TR-6OUDTVRD-BS6Z0LpR.js → ku-TR-6OUDTVRD-DzxrabDk.js} +1 -1
  180. package/server/public/assets/{linear-DI0By7Db.js → linear-gEGsxSj1.js} +1 -1
  181. package/server/public/assets/{lt-LT-XHIRWOB4-DB6tYnhK.js → lt-LT-XHIRWOB4-_nyDG8BQ.js} +1 -1
  182. package/server/public/assets/{lv-LV-5QDEKY6T-Gz9wx9bk.js → lv-LV-5QDEKY6T-BuFYWU7T.js} +1 -1
  183. package/server/public/assets/{mindmap-definition-YA3MSWOX-CoXi3FPw.js → mindmap-definition-YA3MSWOX-D1eSwBX7.js} +1 -1
  184. package/server/public/assets/{mr-IN-CRQNXWMA-DmdIEQlN.js → mr-IN-CRQNXWMA-DYDxiULS.js} +1 -1
  185. package/server/public/assets/{my-MM-5M5IBNSE-CEZvJNBx.js → my-MM-5M5IBNSE-CESrtCUE.js} +1 -1
  186. package/server/public/assets/{nb-NO-T6EIAALU-CE-qhpnk.js → nb-NO-T6EIAALU-D89JFLrD.js} +1 -1
  187. package/server/public/assets/{nl-NL-IS3SIHDZ-CKhfMYRs.js → nl-NL-IS3SIHDZ-B5fTIJ0f.js} +1 -1
  188. package/server/public/assets/{nn-NO-6E72VCQL-_Q0hO_YM.js → nn-NO-6E72VCQL-BlZxpLDl.js} +1 -1
  189. package/server/public/assets/{oc-FR-POXYY2M6-BP_GWpdw.js → oc-FR-POXYY2M6-c2a5nnpF.js} +1 -1
  190. package/server/public/assets/{pa-IN-N4M65BXN-ImDjqKw6.js → pa-IN-N4M65BXN-DV1xiyB6.js} +1 -1
  191. package/server/public/assets/{pegDiagram-XKGWAZYB-D1tXITHn.js → pegDiagram-XKGWAZYB-BVNV8u8v.js} +1 -1
  192. package/server/public/assets/percentages-BXMCSKIN-CCSzzLCW.js +1 -0
  193. package/server/public/assets/{pieDiagram-E7YTZNPT-DNCuFpai.js → pieDiagram-E7YTZNPT-DgQFaD11.js} +1 -1
  194. package/server/public/assets/{pl-PL-T2D74RX3-yCxLpvKz.js → pl-PL-T2D74RX3-BYEPnwpR.js} +1 -1
  195. package/server/public/assets/{prod-DsNBMWxO.js → prod-DWloE-Tf.js} +7 -7
  196. package/server/public/assets/{pt-BR-5N22H2LF-CqNEOY9w.js → pt-BR-5N22H2LF-VzuifI42.js} +1 -1
  197. package/server/public/assets/{pt-PT-UZXXM6DQ-DBw4f0lS.js → pt-PT-UZXXM6DQ-Grmv30e9.js} +1 -1
  198. package/server/public/assets/{quadrantDiagram-AXDQQJYC-Bci1oSYb.js → quadrantDiagram-AXDQQJYC-431IKFV-.js} +1 -1
  199. package/server/public/assets/{railroadDiagram-O6MQD6OU-ikFAVJUY.js → railroadDiagram-O6MQD6OU-Borx2fG3.js} +1 -1
  200. package/server/public/assets/{requirementDiagram-BXWQKSXE-DKTszgVJ.js → requirementDiagram-BXWQKSXE-B_ifxbXC.js} +1 -1
  201. package/server/public/assets/{ro-RO-JPDTUUEW-BqgARQks.js → ro-RO-JPDTUUEW-BCcW97bo.js} +1 -1
  202. package/server/public/assets/{ru-RU-B4JR7IUQ-Q6Ic_n8I.js → ru-RU-B4JR7IUQ-jud8t1VI.js} +1 -1
  203. package/server/public/assets/{sankeyDiagram-P5KCCOFB-DWatmen5.js → sankeyDiagram-P5KCCOFB-BLpv-ZD0.js} +1 -1
  204. package/server/public/assets/{sequenceDiagram-WJ2MYXX4-J7gSm17h.js → sequenceDiagram-WJ2MYXX4-DAtQj3zB.js} +1 -1
  205. package/server/public/assets/{si-LK-N5RQ5JYF-ZVr3vkVm.js → si-LK-N5RQ5JYF-CslAaa-5.js} +1 -1
  206. package/server/public/assets/{sk-SK-C5VTKIMK-BSQsNJSS.js → sk-SK-C5VTKIMK-C9NvC7DU.js} +1 -1
  207. package/server/public/assets/{sl-SI-NN7IZMDC-CP8Z1otw.js → sl-SI-NN7IZMDC-Cy3n7hfM.js} +1 -1
  208. package/server/public/assets/{stateDiagram-D77RDMKH-yMPWEYtq.js → stateDiagram-D77RDMKH-oH2hEoN4.js} +1 -1
  209. package/server/public/assets/{stateDiagram-v2-MP3YSRHH-F5EGnPR_.js → stateDiagram-v2-MP3YSRHH-CIbAgOVy.js} +1 -1
  210. package/server/public/assets/subset-shared.chunk-Dba6DKdi.js +1 -0
  211. package/server/public/assets/{subset-worker.chunk-LpMaC50m.js → subset-worker.chunk-D5tg61BR.js} +1 -1
  212. package/server/public/assets/{sv-SE-XGPEYMSR-D8mOTDra.js → sv-SE-XGPEYMSR-DYf-SlR7.js} +1 -1
  213. package/server/public/assets/{swimlanes-42K2YHIH-JPQx_4qn.js → swimlanes-42K2YHIH-Do3SoYnq.js} +1 -1
  214. package/server/public/assets/{swimlanesDiagram-VR7AAH4N-CtNlg2el.js → swimlanesDiagram-VR7AAH4N-BYc814ml.js} +1 -1
  215. package/server/public/assets/{ta-IN-2NMHFXQM-ih9dhd8j.js → ta-IN-2NMHFXQM-iGF2eo5t.js} +1 -1
  216. package/server/public/assets/{th-TH-HPSO5L25-BhmRG3ne.js → th-TH-HPSO5L25-CGfN7mnR.js} +1 -1
  217. package/server/public/assets/{timeline-definition-24CTP7MA-lLCs5kg1.js → timeline-definition-24CTP7MA-DUI_xi15.js} +1 -1
  218. package/server/public/assets/{tr-TR-DEFEU3FU-B5teU_eL.js → tr-TR-DEFEU3FU-C1btuwU_.js} +1 -1
  219. package/server/public/assets/{uk-UA-QMV73CPH-CsUaR7s6.js → uk-UA-QMV73CPH-DLoTLQOx.js} +1 -1
  220. package/server/public/assets/{vennDiagram-4TSXK5OY-CsO1kQiW.js → vennDiagram-4TSXK5OY-DioINyLf.js} +1 -1
  221. package/server/public/assets/{vi-VN-M7AON7JQ-qfVnGZto.js → vi-VN-M7AON7JQ-CBwbwrm4.js} +1 -1
  222. package/server/public/assets/{wardleyDiagram-VM6X3IG4-C2ajkJrW.js → wardleyDiagram-VM6X3IG4-gd0gikXq.js} +1 -1
  223. package/server/public/assets/{xychartDiagram-S5SC5T6Z-oJOShKfW.js → xychartDiagram-S5SC5T6Z-Bx86zaAl.js} +1 -1
  224. package/server/public/assets/{zh-CN-LNUGB5OW-vDDEdkjv.js → zh-CN-LNUGB5OW-BcRNKoOf.js} +1 -1
  225. package/server/public/assets/{zh-HK-E62DVLB3-Fcvngm0F.js → zh-HK-E62DVLB3-Cu_ESPq6.js} +1 -1
  226. package/server/public/assets/{zh-TW-RAJ6MFWO-BCuionzc.js → zh-TW-RAJ6MFWO-CHnOC09j.js} +1 -1
  227. package/server/public/index.html +1 -1
  228. package/server/queries-qqOXiaNr.js +2 -0
  229. package/server/{ready-timeout-failure-C45bsjI2.js → ready-timeout-failure-BwzL5OKo.js} +2 -2
  230. package/server/{rebuild-stack-uaOTI93a.js → rebuild-stack-BtpTM6VR.js} +3 -3
  231. package/server/rebuild-stack-FjChJ9yi.js +3 -0
  232. package/server/{release-engine-C5d610mi.js → release-engine-Y29fEWE7.js} +2 -2
  233. package/server/{release-set-BFsZCA0J.js → release-set-BacZ1N_f.js} +1 -1
  234. package/server/{remote-xutkDygz.js → remote-BUaz6B3t.js} +2 -2
  235. package/server/{remote-qoNG2iir.js → remote-Day75qqe.js} +2 -2
  236. package/server/{remote-agents-CJYoW12q.js → remote-agents-BlqgB9dc.js} +1 -1
  237. package/server/{remote-agents-9UKtOTeT.js → remote-agents-D6G8Z0T_.js} +3 -3
  238. package/server/{requirements-tNHrKKgl.js → requirements-DM6TvCsN.js} +1 -1
  239. package/server/{requirements-COv0qjkH.js → requirements-GXRVCopE.js} +1 -1
  240. package/server/{resolver-Did8ZX_j.js → resolver-D6SskqKx.js} +1 -1
  241. package/server/{resolver-CAP4HecA.js → resolver-TNBoD1Lh.js} +2 -2
  242. package/server/resume-BvqNBf96.js +2 -0
  243. package/server/{review-agent-C6_zRhE-.js → review-agent-BS5R2OP1.js} +17 -17
  244. package/server/{review-agent-CTNzg6ag.js → review-agent-D7b3qt2U.js} +2 -2
  245. package/server/{review-artifacts-DFXkCDKn.js → review-artifacts-CwnJeObv.js} +2 -2
  246. package/server/{review-context-2LAh97tE.js → review-context-BXW1m3vK.js} +1 -1
  247. package/server/{review-convoy-BE7hwRKU.js → review-convoy-7EL6lofH.js} +9 -9
  248. package/server/{review-convoy-D4ddjcsE.js → review-convoy-BNYVD3y4.js} +1 -1
  249. package/server/{review-monitor-BRSWLITW.js → review-monitor-BoxMGLwm.js} +1 -1
  250. package/server/{review-request-route-fgWQMyrT.js → review-request-route-CMR7xtJK.js} +2 -2
  251. package/server/{review-rounds-wYEYRB2e.js → review-rounds-BrPtQK9g.js} +1 -1
  252. package/server/{review-rounds-C8S_nYSs.js → review-rounds-CcXAeFDu.js} +1 -1
  253. package/server/{review-synthesis-recovery-DKnQIwwI.js → review-synthesis-recovery-BVuPGjZM.js} +7 -7
  254. package/server/{review-verdict-feedback-CGHG6ZkU.js → review-verdict-feedback-Blt-Rdbt.js} +5 -5
  255. package/server/{rollup-Bm6X7jIb.js → rollup-8hDNviZE.js} +2 -2
  256. package/server/{rollup-C9m7LkEy.js → rollup-Cf7vF55-.js} +1 -1
  257. package/server/{runtime-command-D0JVmWKZ.js → runtime-command-0C3oTZGN.js} +5 -5
  258. package/server/runtime-command-D91mhWSL.js +2 -0
  259. package/server/runtimes-B7zJfZXo.js +6 -0
  260. package/server/{runtimes-DUvSjnkK.js → runtimes-CiPufB1e.js} +9 -9
  261. package/server/{sequencer-agent-BGwo_hJY.js → sequencer-agent-C_RaZl3z.js} +4 -4
  262. package/server/server.js +164 -249
  263. package/server/{service-DKHnfIwb.js → service-Bn8Zn0WW.js} +36 -36
  264. package/server/{session-fork-CaUxe-sI.js → session-fork-CKpcJBY3.js} +1 -1
  265. package/server/{settings-5VVqbwVL.js → settings-DNxbkedU.js} +1 -1
  266. package/server/settings-DeJQpBJZ.js +2 -0
  267. package/server/{ship-log-CfuRUZaI.js → ship-log-DhPEIcrG.js} +1 -1
  268. package/server/{ship-log-CRk1pL0V.js → ship-log-Di-_dljC.js} +1 -1
  269. package/server/{smart-compaction-BA2YGYS7.js → smart-compaction-CVIjvKaC.js} +2 -2
  270. package/server/{smart-compaction-ni-rHctf.js → smart-compaction-mz6E9fph.js} +1 -1
  271. package/server/{spawn-planning-session-Dp2FsjWk.js → spawn-planning-session-D9vDkQVz.js} +2 -2
  272. package/server/{spawn-planning-session-38jno6va.js → spawn-planning-session-DEr2g-vN.js} +9 -9
  273. package/server/{specialist-completion-DfoJQPHz.js → specialist-completion-ThQ5mCYp.js} +1 -1
  274. package/server/{specialists-DCUqID3m.js → specialists--u4Nwkwy.js} +1 -1
  275. package/server/{specialists-DPjE2JBt.js → specialists-BsiHHXL7.js} +51 -51
  276. package/server/{specialists-Dhqnld3A.js → specialists-C5WxILVV.js} +9 -9
  277. package/server/{specialists-BOMH7wlq.js → specialists-ChpiIuS7.js} +1 -1
  278. package/server/{src-DEWY9s_G.js → src-Bjf3_TJI.js} +7 -7
  279. package/server/{src-CUtp-SJF.js → src-Dc_h_m1_.js} +3 -3
  280. package/server/{strike-completion-OPcaVqFd.js → strike-completion-CIQA9E-C.js} +2 -2
  281. package/server/strike-completion-PiFiEtoo.js +2 -0
  282. package/server/{subagents-DNw4YyMa.js → subagents-P7wfucdb.js} +2 -2
  283. package/server/{substrate-stats-DuuksQHp.js → substrate-stats-0PCKLsMv.js} +18 -18
  284. package/server/summary-fork--LXvyQuT.js +3 -0
  285. package/server/{summary-fork-BfuGi-S2.js → summary-fork-DQGtPP_x.js} +5 -5
  286. package/server/supervisor-DRm9uLsZ.js +2 -0
  287. package/server/{supervisor-CWskvoz3.js → supervisor-De-GYL91.js} +1 -1
  288. package/server/{sync-startup-gate-Cz-taE5H.js → sync-startup-gate-BfacT-bh.js} +1 -1
  289. package/server/{system-health-service-7C9fafx7.js → system-health-service-CjdWgKic.js} +3 -3
  290. package/server/{system-health-service-SB_Kjxqf.js → system-health-service-Cqpct_Qo.js} +1 -1
  291. package/server/{system-prerequisites-N5usDkOl.js → system-prerequisites-Caf37eBm.js} +2 -2
  292. package/server/{system-prerequisites-CJzu1FQH.js → system-prerequisites-G9se0Lms.js} +1 -1
  293. package/server/{teardown-workspace-BOnPHDQi.js → teardown-workspace-Dvwa4r5M.js} +7 -7
  294. package/server/termination-DYiDx_bB.js +2 -0
  295. package/server/{test-agent-queue-D3koTErW.js → test-agent-queue-BZ57BL-z.js} +3 -3
  296. package/server/{test-verdict-DcQHIB36.js → test-verdict-DoCOnudE.js} +1 -1
  297. package/server/{test-verdict-D5MJ__S5.js → test-verdict-XI4egwYk.js} +1 -1
  298. package/server/{token-BXOsGOq0.js → token-BVSQ0ZbH.js} +1 -1
  299. package/server/{transcript-turn-DxkkFudJ.js → transcript-turn-yL1_qVmT.js} +1 -1
  300. package/server/{types-D4H9A_IK.js → types-8Bdo_m9Z.js} +1 -1
  301. package/server/{uat-train-qJFsN-X4.js → uat-train-BI6lNv6X.js} +11 -11
  302. package/server/{uat-train-C3g4eTwu.js → uat-train-BqMuW417.js} +1 -1
  303. package/server/{validation-BX4n3p5b.js → validation-B0CMIi5c.js} +2 -2
  304. package/server/{validation-C1j7--xs.js → validation-UgpT2GVW.js} +1 -1
  305. package/server/{verification-escalation-BOuG6ixX.js → verification-escalation-8_JfF7-z.js} +3 -3
  306. package/server/{verification-escalation-C76ZbMod.js → verification-escalation-DAjaXHwo.js} +1 -1
  307. package/server/{verification-runner-BMtIaVjU.js → verification-runner-D0DG7ixm.js} +10 -10
  308. package/server/{verification-runner-C-sxcxTO.js → verification-runner-D8-ijYmm.js} +2 -2
  309. package/server/{vtt-parser-DSX4wASE.js → vtt-parser-uNggfu87.js} +1 -1
  310. package/server/{work-agent-prompt-p9ir8Hid.js → work-agent-prompt-BNUi27LZ.js} +2 -2
  311. package/server/workflows-Dr-Yo76E.js +2 -0
  312. package/server/{workflows-DzA62y5W.js → workflows-kIv_z7zJ.js} +8 -8
  313. package/server/{workspace-manager-Nljndsty.js → workspace-manager-D0auAuId.js} +2 -2
  314. package/server/{workspace-manager-yEOe-AK7.js → workspace-manager-t2ylzCn0.js} +2 -2
  315. package/server/{workspaces-DVWUbrua.js → workspaces-C7sOgLNZ.js} +42 -42
  316. package/server/{worktree-ops-BvwkJJ--.js → worktree-ops-Cenxxhk2.js} +1 -1
  317. package/server/{worktree-ops-DzDaxzI6.js → worktree-ops-D_IXGBtP.js} +8 -8
  318. package/server/activity-H6Jf6jYF.js +0 -2
  319. package/server/agent-pane-io-BmNbvGUo.js +0 -2
  320. package/server/archive-planning-BJck5ngN.js +0 -2
  321. package/server/cli-DVDU4QF2.js +0 -2
  322. package/server/daemon-CWmWlc4E.js +0 -2
  323. package/server/dist-BGSAS-U9.js +0 -3
  324. package/server/ensure-devcontainer-C_OTsIz6.js +0 -2
  325. package/server/evict-CgFggY65.js +0 -2
  326. package/server/harness-binary-CF3OHJwR.js +0 -2
  327. package/server/merge-gate-Bq6XDCW9.js +0 -2
  328. package/server/merge-ops-C2DJ5UJh.js +0 -2
  329. package/server/messaging-CKpa4quh.js +0 -2
  330. package/server/public/assets/image-GAAHSSAO-CFdI_QVJ.js +0 -1
  331. package/server/public/assets/percentages-BXMCSKIN-BzJ4SOUv.js +0 -1
  332. package/server/public/assets/subset-shared.chunk-Crnl6u-o.js +0 -1
  333. package/server/queries-XNzQnDjP.js +0 -2
  334. package/server/rebuild-stack-CJBh6Pa6.js +0 -3
  335. package/server/resume-BRxpAyj3.js +0 -2
  336. package/server/runtime-command-BkQQs0N2.js +0 -2
  337. package/server/runtimes-D68npgJJ.js +0 -6
  338. package/server/settings-CFLNK2bY.js +0 -2
  339. package/server/strike-completion-DyPF_uhD.js +0 -2
  340. package/server/summary-fork-Dm46AXqo.js +0 -3
  341. package/server/supervisor-daYV0xlI.js +0 -2
  342. package/server/termination-DTOwIt3S.js +0 -2
  343. package/server/workflows-Dp8qhcha.js +0 -2
  344. /package/server/{merge-rebase-Cf3Dr76u.js → merge-rebase-D1nUZmH_.js} +0 -0
package/server/server.js CHANGED
@@ -2,7 +2,7 @@ import { a as __toCommonJS, o as __toESM, t as __commonJSMin } from "./rolldown-
2
2
  import { $n as getHarnessBehavior, $t as resolveModel, An as init_src, Ar as PIPELINE_MEMBERSHIP_LOADING_CODE, B as getDefaultTtsDaemonConfig, Bn as isAgentRole, Bt as init_openai_compatible_proxy, Cr as SystemHealthSnapshot, Dn as PARENT_MODEL_REF, Dr as resolveEffectivePullRequest, En as COMPLIANCE_MODES, Et as UnknownModelError, F as yaml, Fn as parsePullRequestRef, Gn as ACP_BEHAVIOR, Gr as OVERDECK_HOME, Gt as DEFAULT_ROLES, Hn as bucketQuotaPoints, Ht as init_registry, I as init_merge, In as repoFromRemoteUrl, Ir as indexPanesByAgentKey, Jn as KIMI_CODE_BEHAVIOR, Kn as CLAUDE_CODE_BEHAVIOR, Kt as DEFAULT_WORKHORSES, L as mergeConfigs, Ln as COMPANION_TERMINAL_CLOSE_BODY_KEYS, Lr as paneAgentKey, M as init_errors, Mr as GITHUB_QUOTA_BUCKETS, Mt as init_providers, N as require_dist$1, Nn as laneActivityOf, Nr as GITHUB_QUOTA_CALLERS, O as ProcessSpawnError, Or as AgentRuntimeSnapshot, Ot as getBuiltInDefaultHarness, P as init_js_yaml, Pn as isConfiguredPullRequestRepo, Pr as GITHUB_QUOTA_POOLS, Qn as PRIME_AGENT_BEHAVIOR, Qr as SYNC_SOURCES, Rn as COMPANION_TERMINAL_OPEN_BODY_KEYS, Rr as AGENTS_DIR, Sr as DomainEvent, St as init_model_floors, Tr as MemoryObservation, Un as bucketQuotaRemaining, Vn as COMPOSER_COMMAND_MANIFEST, Vt as defaultBackgroundAiFeatures, Wn as compareIssueIds, Wr as LOGS_DIR, X as mergeTtsDaemonConfigs, Xn as OHMYPI_BEHAVIOR, Xt as derefWorkhorse, Yn as MUSE_BEHAVIOR, Yt as computeModelOrigin, Z as DEFAULT_CONFIG$1, Zn as OPENCODE_BEHAVIOR, Zt as init_roles, _r as EFFORT_LEVELS, _t as canUseHarness, a as getGlobalConfigPath, ai as getDocsTelemetryPath, an as MODEL_CAPABILITIES, br as isEffortLevel, bt as CODEX_CLI_INSTALL_COMMAND, ci as init_paths, cn as init_model_capabilities, di as packageRoot, dn as resolveModelId, dt as TieredExecutionConfigError, ei as activeDeploymentRepoRoot, ft as init_tier_table, g as updateConversationsConfig, gt as validateTieredExecutionConfig, hr as WS_METHODS, i as getConversationsConfig, ii as getDocsIndexPath, in as init_effort_support, jn as EnvironmentDescriptor, jt as getProviderForModel, kr as AgentSnapshot, kt as getKimiAnthropicBaseUrl, li as isDeploymentGenerationRoot, ln as modelSupportsImages, m as loadConfigSync, mr as PanRpcGroup, n as clearConfigCache, ni as getDocsBudgetStatePath, nr as ContextLayerSaveRequest, nt as DEFAULT_JEV_TIMEOUT_MS, o as getOpenInEditorCommand, p as loadConfigNoMigration, pr as PanRpcError, pt as resolveTieredExecutionBlock, qn as CODEX_BEHAVIOR, qt as RETIRED_SUB_ROLES, r as getConversationSearchConfig, ri as getDocsDisableStatePath, rn as effortConfigErrors, rr as ContextPreviewRequest, rt as init_jev, si as getOverdeckHome, sn as hasModelCapability, t as init_config_yaml, tr as isAgentSessionName, tt as DEFAULT_JEV_API_KEY_REF, u as init_load, ui as isDevMode, un as modelSupportsSamplingParams, vn as MODEL_DEPRECATIONS, x as FsError, xr as EDITORS, yt as init_harness_policy, z as getDefaultDocsConfig, zt as getDashScopeUpstreamBaseUrl } from "./config-yaml-IYiKufOR.js";
3
3
  import { t as require_toml } from "./toml-CeLDATih.js";
4
4
  import { A as init_boot_gates, D as getOverdeckDatabasePath, E as OVERDECK_MIGRATION_PATH, M as resolveBootGates, O as init_paths$1, d as dropPipelineStateMirrorTables, f as getOverdeckDatabase, i as DbLive, j as isPeerDashboardProcess, k as formatBootGateState, l as TmuxLive, p as init_infra, u as dropDeadIssuesForeignKeys } from "./infra-BIeUUG_A.js";
5
- import { d as getDashboardIdentity, f as isNonPrimaryCheckoutRoot, l as startUatTrainReconciler, m as shouldRefuseHostDashboardPort, p as readHostDashboardApiPort, u as stopUatTrainReconciler } from "./uat-train-qJFsN-X4.js";
5
+ import { d as getDashboardIdentity, f as isNonPrimaryCheckoutRoot, l as startUatTrainReconciler, m as shouldRefuseHostDashboardPort, p as readHostDashboardApiPort, u as stopUatTrainReconciler } from "./uat-train-BI6lNv6X.js";
6
6
  import { _ as jsonResponse, a as validateOrigin$1, c as isLoopbackOrigin$1, d as parseAccessTokenScopes, f as refreshAccessTokens, h as startAccessTokenRefresh, l as createAccessToken, m as scopeSatisfies, n as getTrustedOrigins, o as validateOriginHeaders, p as revokeAccessToken, r as invalidateTrustedOriginsCache, s as addSavedTrustedOrigin, t as getHeaderFromMap, u as listAccessTokens, v as jsonStringResponse } from "./origin-validation-FA-4ExJV.js";
7
7
  import { c as loadConfigSync$1, n as getDashboardApiUrl, o as init_config } from "./config-ChcpWpGd.js";
8
8
  import { a as emitActivityTts, o as emitDashboardLifecycle, r as emitActivityEntry, s as init_activity_logger, t as appendDomainEventAsync } from "./activity-logger-64dEonKB.js";
@@ -26,18 +26,18 @@ import { $ as updateConversationTitle, A as listFavoritedIds, B as resolveEffect
26
26
  import { O as saveAgentStateSync, m as init_agent_state, p as getIssuePause } from "./agent-state-e9n26qYW.js";
27
27
  import { a as sessionFilePath, i as encodeClaudeProjectDir, n as claudeProjectsRoot, t as claudeProjectDir } from "./claude-code-D1t9sdHM.js";
28
28
  import { a as codexHomeDir, l as findRolloutPath, o as codexSessionsRoot, t as codexAgentHome } from "./codex-CVdzfsKh.js";
29
- import { i as recordCodexRolloutSession } from "./codex-BE1w7ARL.js";
30
- import { a as prepareHarnessLaunch, c as resolveHarnessBinary } from "./harness-binary-DtPw6bEJ.js";
29
+ import { i as recordCodexRolloutSession } from "./codex-BrY7aOvP.js";
30
+ import { a as prepareHarnessLaunch, c as resolveHarnessBinary } from "./harness-binary-BaN9N-sG.js";
31
31
  import { o as resolveMuseSessionPath } from "./muse-DxPGs9oz.js";
32
32
  import { n as shellQuote, r as shellQuoteArg, t as init_shell_quote } from "./shell-quote-DhKDnhqg.js";
33
- import { n as generateLauncherScript } from "./launcher-generator-BofB3FX_.js";
33
+ import { n as generateLauncherScript } from "./launcher-generator-COHAIhyH.js";
34
34
  import { i as requireModelOverride, n as MODEL_ID_PATTERN } from "./kimi-claude-routing-C53_lRiN.js";
35
35
  import { a as init_ledger, i as getGitHubQuotaDir, n as appendLedgerEntry, r as computeOwnUsageLow, s as readLedgerWindow, t as aggregateLedger } from "./ledger-DBTb1duE.js";
36
36
  import { A as setProjectSwarmPolicy, B as init_projects_config_write, C as resolveProjectFromIssue, E as resolveProjectPath, F as canonicalPathAsync, I as findContainingProject, L as init_path_containment, M as updateProjectsConfigAsync, N as validateGauntletConfig, O as setProjectAutoMergeDefault, P as validateVersionSyncConfig, R as init_projects_cache_events, S as resolveInfraRepo, T as resolveProjectKeyForCwdAsync, V as updateProjectsConfigText, _ as listProjectsSync, a as findProjectByPath, b as registerProject, c as getIssuePrefix, d as getProjectSync, g as listProjectsAsync, h as invalidateProjectsConfigCache, i as extractTeamPrefix, k as setProjectMergeTrain, n as PROJECTS_CONFIG_FILE, o as findProjectByTeam, p as init_projects, r as ProjectRenameError, w as resolveProjectFromIssueSync, x as renameProject, y as loadProjectsConfigSync, z as subscribeProjectsConfigInvalidation } from "./projects-CvLJPQjr.js";
37
37
  import { n as resolveEffort } from "./resolve-effort-CJ9JcWwm.js";
38
- import { o as resolveLatestSessionId } from "./activity-CVRFYPg-.js";
39
- import { n as AgentsResolverLive } from "./agents-DNkpVGda.js";
40
- import { a as EventStoreServiceLive, c as ReadModelServiceLive, d as toAgentStatus, f as toRole, i as EventStoreService, l as activityEntriesFromStoredEvents, n as IssueLifecycleLive, o as startProjectCiRefillAfterProjectionReady, s as ReadModelService, t as IssueLifecycle, u as toAgentResolution } from "./issue-lifecycle-BlE7L0r7.js";
38
+ import { o as resolveLatestSessionId } from "./activity-h2Q-pMa7.js";
39
+ import { n as AgentsResolverLive } from "./agents-dwMmsEQT.js";
40
+ import { a as EventStoreServiceLive, c as ReadModelServiceLive, d as toAgentStatus, f as toRole, i as EventStoreService, l as activityEntriesFromStoredEvents, n as IssueLifecycleLive, o as startProjectCiRefillAfterProjectionReady, s as ReadModelService, t as IssueLifecycle, u as toAgentResolution } from "./issue-lifecycle-CmbQlAqW.js";
41
41
  import { n as ensureSessionContextBriefingFile, r as recordBriefingSessionStart, t as appendFreshBriefingUpdate } from "./briefing-freshness-DGGAxLgu.js";
42
42
  import { a as init_pause_gate, c as reconcileGitHubPauseWithSample, m as withGitHubCaller, o as onGitHubRefusal, p as init_caller_context, r as activeGitHubPause, s as readActivePause } from "./pause-gate-D_9Vdcz5.js";
43
43
  import { n as runGh, t as init_run_gh } from "./run-gh-pNdoe2og.js";
@@ -54,11 +54,11 @@ import { i as getRepoTargetBranch, l as resolveDefaultBranchForRepo, o as init_p
54
54
  import { r as setPipelineHandler, t as init_pipeline_notifier } from "./pipeline-notifier-DbQqFmJ6.js";
55
55
  import { n as init_pipeline_journal, o as readPipelineJournal, t as appendPipelineEntry } from "./pipeline-journal-BXAwr-6f.js";
56
56
  import { i as init_operator_decision, s as readOpenOperatorDecision } from "./operator-decision-BijGjqPE.js";
57
- import { C as toChecksState, T as toReviewState, a as forgeForProject, s as init_derived_issue_state, x as readRepoPullRequests } from "./derived-issue-state-QLhfZgf5.js";
58
- import { f as init_backend_inventory, l as getBackendPanes, p as isBackendInventoryDegraded, u as getBackendPanesForIssue } from "./backend-inventory-CjCALqY9.js";
59
- import { n as AgentStateServiceLive } from "./agent-state-service-CZjmcB3_.js";
57
+ import { C as toChecksState, T as toReviewState, a as forgeForProject, s as init_derived_issue_state, x as readRepoPullRequests } from "./derived-issue-state-Dz7ti1og.js";
58
+ import { f as init_backend_inventory, l as getBackendPanes, p as isBackendInventoryDegraded, u as getBackendPanesForIssue } from "./backend-inventory-DsbeKiYY.js";
59
+ import { n as AgentStateServiceLive } from "./agent-state-service-CJB8_8Bp.js";
60
60
  import { S as observeTerminal, b as controlTerminal, o as init_herdr, r as findHerdrAgent, s as listHerdrAgents, x as init_herdr_stream } from "./herdr-JDVS0aDm.js";
61
- import { d as resolveLaunchBackend, l as launchAgentPane, n as closeAgentPane, r as closeAgentPaneDetailed, s as init_launch, t as agentPaneExists } from "./launch-DSEY_mt2.js";
61
+ import { d as resolveLaunchBackend, l as launchAgentPane, n as closeAgentPane, r as closeAgentPaneDetailed, s as init_launch, t as agentPaneExists } from "./launch-DF_WD2-a.js";
62
62
  import { i as isAlive, o as isConfirmedDead, r as init_liveness } from "./liveness-tAwIFT67.js";
63
63
  import { a as init_tracker_config, i as initTrackerConfigCache, n as getLinearApiKey, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-CSqqOWAc.js";
64
64
  import { i as PlanEmpty, l as WorkspaceCreateError, n as AgentStartError, s as TrackerApiError, t as AgentAlreadyRunning, u as WorkspaceNotFound } from "./typed-errors-C_Gz6KlC.js";
@@ -66,13 +66,13 @@ import { r as LinearClientOptionalLive, t as LinearClient } from "./linear-clien
66
66
  import { r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-Cal2eOrK.js";
67
67
  import { r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-CPk3PfRQ.js";
68
68
  import { i as resolveTrackerType, r as resolveGitHubIssue, t as init_tracker_utils } from "./tracker-utils-vzr-2-12.js";
69
- import { a as startSharedIssueService, i as issue_service_singleton_exports, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-QPDr49TB.js";
70
- import { a as createWorkspace, c as setWorkspaceRunCommand, d as updateWorkspaceLayout, f as upsertProjectFromConfig, h as detectPlatform, i as archiveWorkspace, l as touchWorkspaceAccessed, m as writeWorkspaceIdentity, n as installGitHooksInDir, o as relocateWorkspace, p as readWorkspaceIdentity, s as setWorkspaceFavorite, u as unarchiveWorkspace, y as workspaceNeedsSetup } from "./workspace-manager-yEOe-AK7.js";
71
- import { $ as deliverMandatoryKimiResumeContext, A as handleConversationSwitchModel, B as tmuxSessionExists, Ct as isValidConversationEffort, D as handleConversationDelete, Dt as sessionOwners, E as handleConversationCreate, Et as isSupersededConversation, G as waitForTmuxSession$1, H as waitForPiTuiReady, I as spawnConversationSession, J as isCoreSkill, L as startConversationModelBackfill, Mt as getDefaultCwd, N as resolveAllowedHarness, O as handleConversationResume, Ot as isRespawnPending, P as shouldReportUnresolvedLiveSession, Q as resolveSkillStates, R as startConversationRuntime, T as handleConversationClearForkState, V as waitForConversationRuntimeReady, X as resolvePackSkill, Y as isPackSkillId, Z as resolvePackToggle, _ as SAFE_EFFORT_PATTERN, _t as validateCwdContainment, a as handleConversationCodexApproval, at as ensureConversationAttachmentDir, c as handleConversationDeliveryMethod, ct as hasConversationAttachment, d as handleConversationThinkingLevel, dt as resolveConversationImageAttachment, et as closeCompanionTerminalForOwner, f as isPiControlChannelHarness, ft as runInBatches, g as validateConversationControlAckOrigin, gt as vaultIdFromBrowseName, h as resolveConversationDeliveryMethod, ht as vaultBrowseConversationName, i as handleConversationAbort, it as cleanupUnreferencedConversationAttachments, j as isInsideGitWorkTree, jt as waitForSessionRespawn, k as handleConversationStop, kt as markRespawnPending, l as handleConversationPiAskAnswer, lt as isManagedConversationAttachmentPath, m as postCodexAppServerOp, mt as upsertVaultBrowseRow, n as deliverConversationViaControlChannel, nt as cleanupConversationAttachments, o as handleConversationCompact, ot as extractConversationAttachmentPaths, p as pickDeliverAs, pt as removeVaultBrowseRow, q as resolveRegisteredProject, rt as cleanupOrphanedConversationAttachments, s as handleConversationControlAck, st as getConversationAttachmentsRoot, t as codexConversationPendingInput, tt as getCompanionTerminalLifecycle, u as handleConversationPlanAction, ut as removeConversationAttachment, vt as writeConversationPaneRole, w as generateConversationName, wt as resolveConversationEffort, x as conversationSessionAliveFromState, y as conversationNeedsRunningRepair, z as stopConversationRuntime } from "./conversation-delivery-Dn6b4mUU.js";
72
- import { i as import_websocket_server, r as import_websocket } from "./policy-context-DlF2pBlT.js";
69
+ import { a as startSharedIssueService, i as issue_service_singleton_exports, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-DwYi9Oie.js";
70
+ import { a as createWorkspace, c as setWorkspaceRunCommand, d as updateWorkspaceLayout, f as upsertProjectFromConfig, h as detectPlatform, i as archiveWorkspace, l as touchWorkspaceAccessed, m as writeWorkspaceIdentity, n as installGitHooksInDir, o as relocateWorkspace, p as readWorkspaceIdentity, s as setWorkspaceFavorite, u as unarchiveWorkspace, y as workspaceNeedsSetup } from "./workspace-manager-t2ylzCn0.js";
71
+ import { $ as deliverMandatoryKimiResumeContext, A as handleConversationSwitchModel, B as tmuxSessionExists, Ct as isValidConversationEffort, D as handleConversationDelete, Dt as sessionOwners, E as handleConversationCreate, Et as isSupersededConversation, G as waitForTmuxSession$1, H as waitForPiTuiReady, I as spawnConversationSession, J as isCoreSkill, L as startConversationModelBackfill, Mt as getDefaultCwd, N as resolveAllowedHarness, O as handleConversationResume, Ot as isRespawnPending, P as shouldReportUnresolvedLiveSession, Q as resolveSkillStates, R as startConversationRuntime, T as handleConversationClearForkState, V as waitForConversationRuntimeReady, X as resolvePackSkill, Y as isPackSkillId, Z as resolvePackToggle, _ as SAFE_EFFORT_PATTERN, _t as validateCwdContainment, a as handleConversationCodexApproval, at as ensureConversationAttachmentDir, c as handleConversationDeliveryMethod, ct as hasConversationAttachment, d as handleConversationThinkingLevel, dt as resolveConversationImageAttachment, et as closeCompanionTerminalForOwner, f as isPiControlChannelHarness, ft as runInBatches, g as validateConversationControlAckOrigin, gt as vaultIdFromBrowseName, h as resolveConversationDeliveryMethod, ht as vaultBrowseConversationName, i as handleConversationAbort, it as cleanupUnreferencedConversationAttachments, j as isInsideGitWorkTree, jt as waitForSessionRespawn, k as handleConversationStop, kt as markRespawnPending, l as handleConversationPiAskAnswer, lt as isManagedConversationAttachmentPath, m as postCodexAppServerOp, mt as upsertVaultBrowseRow, n as deliverConversationViaControlChannel, nt as cleanupConversationAttachments, o as handleConversationCompact, ot as extractConversationAttachmentPaths, p as pickDeliverAs, pt as removeVaultBrowseRow, q as resolveRegisteredProject, rt as cleanupOrphanedConversationAttachments, s as handleConversationControlAck, st as getConversationAttachmentsRoot, t as codexConversationPendingInput, tt as getCompanionTerminalLifecycle, u as handleConversationPlanAction, ut as removeConversationAttachment, vt as writeConversationPaneRole, w as generateConversationName, wt as resolveConversationEffort, x as conversationSessionAliveFromState, y as conversationNeedsRunningRepair, z as stopConversationRuntime } from "./conversation-delivery-C0Q7Ew-t.js";
72
+ import { i as import_websocket_server, r as import_websocket } from "./policy-context-CebkQTkr.js";
73
73
  import { _ as requiredScopeFor, a as dashboardSessionCookieHeader, c as isLoopbackPeer, d as rejectUnsafeDashboardMutationRequest, f as resolveDashboardCredential, g as gatePathname, h as WS_TERMINAL_SCOPE, i as dashboardDeviceTokenFromHeaders, l as rejectUnauthorizedDashboardRequest, m as readRemoteAccessConfig, n as dashboardCsrfToken, o as hasDashboardInternalToken, p as invalidateRemoteAccessConfig, r as dashboardDeviceCookieHeader, s as hasProxyForwardingHeader, t as credentialScopes, u as rejectUnauthorizedDashboardSessionMintRequest, v as httpHandler } from "./dashboard-auth-DmNykD8y.js";
74
- import { $t as CodexAuthCheckError, E as messageAgent, Gt as probeTranscriptSince, Jt as captureLiveAgentPaneText, K as assessCpuPressure, M as operatorInterventionEvent, Ot as resolveImplicitStaffing, Wt as captureTranscriptUserRecordSnapshot, Xt as listLiveAgentIds, Yt as isListedOrRunning, Zt as listLiveAgentPanes, c as countPendingAskUserQuestionsForAgent, dt as saveCloisterConfigSync, en as checkCodexAuthStatus, f as getAgentWorkspace, ft as shouldAutoStart, g as detectAwaitingInputFromPane, h as detectAwaitingInputForAgent, it as listRunningAgentsSync, k as ensureMainInputTarget, l as getAgentJsonlMtime, m as scanPendingInputs, mt as deliverAgentMessage, nt as listAgentStates, ot as emergencyBrake, qt as subagentsDirFor, rt as listRunningAgents, s as computeAgentEnrichment, st as DEFAULT_CLOISTER_CONFIG, ut as loadCloisterConfigSync, yt as waitForManagedKimiSessionId } from "./agents-CKFhKqJp.js";
75
- import { i as listLiveConversationSessions$1, n as conversationHarnessAlive, r as conversationSessionAlive, t as closeConversationPane } from "./conversation-liveness-Cq4TNxqa.js";
74
+ import { $t as CodexAuthCheckError, E as messageAgent, Gt as probeTranscriptSince, Jt as captureLiveAgentPaneText, K as assessCpuPressure, M as operatorInterventionEvent, Ot as resolveImplicitStaffing, Wt as captureTranscriptUserRecordSnapshot, Xt as listLiveAgentIds, Yt as isListedOrRunning, Zt as listLiveAgentPanes, c as countPendingAskUserQuestionsForAgent, dt as saveCloisterConfigSync, en as checkCodexAuthStatus, f as getAgentWorkspace, ft as shouldAutoStart, g as detectAwaitingInputFromPane, h as detectAwaitingInputForAgent, it as listRunningAgentsSync, k as ensureMainInputTarget, l as getAgentJsonlMtime, m as scanPendingInputs, mt as deliverAgentMessage, nt as listAgentStates, ot as emergencyBrake, qt as subagentsDirFor, rt as listRunningAgents, s as computeAgentEnrichment, st as DEFAULT_CLOISTER_CONFIG, tn as getNativeCodexAuthPath, ut as loadCloisterConfigSync, yt as waitForManagedKimiSessionId } from "./agents-DebP6rx9.js";
75
+ import { i as listLiveConversationSessions$1, n as conversationHarnessAlive, r as conversationSessionAlive, t as closeConversationPane } from "./conversation-liveness-g3nFofTZ.js";
76
76
  import { i as clearQueryExpansionCache, n as injectPromptTimeMemory, r as resolveKnowledgeBundleRoot } from "./injection-DYeP27Hj.js";
77
77
  import { a as runMemoryFtsStatement, i as closeMemoryFtsDatabases, o as runMemoryFtsTransaction, t as buildMatchQuery } from "./search-KiZEDKkO.js";
78
78
  import { t as spawnModuleWorker } from "./module-worker-FeMSTv6L.js";
@@ -84,82 +84,84 @@ import { a as refreshRuntimeCensus, i as panePidsForSession, n as getRuntimeCens
84
84
  import { a as scan, c as CostThresholdError, d as parseRelativeTime, i as reclassifyUnknownCostEvents, n as reconcile, p as embed, r as recordCostEventsThroughOverdeck } from "./reconciler-1FAEr8GF.js";
85
85
  import { c as readEventsSince, l as tailEvents, o as readEvents, r as deduplicateEvents, t as recordBackgroundAiCost } from "./cost-Bd4NL5Rf.js";
86
86
  import { c as isCloisterSpawnsPaused, d as isFlywheelAutoPickupBacklog, f as isFlywheelRequireUatBeforeMerge, h as setDeaconGloballyPaused, l as isConversationsAutoArchiveOnMerge, m as setCloisterSpawnsPaused, p as isMergeTrainEnabled, s as getSetting, u as isDeaconGloballyPaused, x as setSetting, y as setLastCleanShutdownAt } from "./control-settings-RLL3FPGD.js";
87
- import { A as recordExternalTranscript, B as validateAgentRuntimeEventAuth, C as cachedTranscriptTurnComplete, D as listExternalRegistrations, E as hasRecordedTranscript, F as AUTOMATIC_SPAWN_GUARDRAIL_ACKNOWLEDGEMENT, G as sharedTranscriptParser, I as evaluateSpawnGuardrails, K as runDashboardDbJob, L as invalidateAgentsCache, M as checkRegularFileUnder, N as checkTranscriptPath, O as readExternalRegistration, P as readRegularFile, R as isInternalAgentRequest, S as RESERVED_EXTERNAL_SOURCES, T as externalLiveness, V as panCliInvocation, W as parseStateFromSnapshot, _ as listTranscriptSubagents, b as EXTERNAL_SOURCE_RE, c as saveAgentStateAndEmitEventProgram, d as resolvePolicy, f as ComposerCommandParseError, g as listAgentSubagents, i as readJsonBody$26, j as registerExternalAgent, k as readPidStartTime, l as composerCommandResultHttpStatus, m as composerCommandConfirmationFromBody, o as agentsRouteLayer, p as ComposerCommandConfirmationError, s as saveAgentStateAndEmitEvent, t as specialistsRouteLayer, u as handleComposerCommandMessage, v as EXTERNAL_AGENT_PREFIX, w as externalAgentId, x as ExternalPathError, y as EXTERNAL_FIELD_ID_RE, z as resolveRequestedStartedBy } from "./specialists-DPjE2JBt.js";
88
- import { _ as processPendingFeedbackDeliveries, b as getWorkspacePathForIssue, d as listGitOperations, f as syncWalFromAllProjects, g as syncCache, h as rebuildCache, m as getCostsForIssue, p as migrateAllSessions, t as workspacesRouteLayer, u as resumeQueuedMerges, v as getCachedRunningAgents, y as resolveIssueHeadlineCost } from "./workspaces-DVWUbrua.js";
89
- import { a as listCodexSubagents, n as startSubagentListPolling, o as resolveCodexSubagentTranscript, r as subagentTranscriptPath } from "./subagents-DNw4YyMa.js";
87
+ import { A as recordExternalTranscript, B as validateAgentRuntimeEventAuth, C as cachedTranscriptTurnComplete, D as listExternalRegistrations, E as hasRecordedTranscript, F as AUTOMATIC_SPAWN_GUARDRAIL_ACKNOWLEDGEMENT, G as sharedTranscriptParser, I as evaluateSpawnGuardrails, K as runDashboardDbJob, L as invalidateAgentsCache, M as checkRegularFileUnder, N as checkTranscriptPath, O as readExternalRegistration, P as readRegularFile, R as isInternalAgentRequest, S as RESERVED_EXTERNAL_SOURCES, T as externalLiveness, V as panCliInvocation, W as parseStateFromSnapshot, _ as listTranscriptSubagents, b as EXTERNAL_SOURCE_RE, c as saveAgentStateAndEmitEventProgram, d as resolvePolicy, f as ComposerCommandParseError, g as listAgentSubagents, i as readJsonBody$26, j as registerExternalAgent, k as readPidStartTime, l as composerCommandResultHttpStatus, m as composerCommandConfirmationFromBody, o as agentsRouteLayer, p as ComposerCommandConfirmationError, s as saveAgentStateAndEmitEvent, t as specialistsRouteLayer, u as handleComposerCommandMessage, v as EXTERNAL_AGENT_PREFIX, w as externalAgentId, x as ExternalPathError, y as EXTERNAL_FIELD_ID_RE, z as resolveRequestedStartedBy } from "./specialists-BsiHHXL7.js";
88
+ import { _ as processPendingFeedbackDeliveries, b as getWorkspacePathForIssue, d as listGitOperations, f as syncWalFromAllProjects, g as syncCache, h as rebuildCache, m as getCostsForIssue, p as migrateAllSessions, t as workspacesRouteLayer, u as resumeQueuedMerges, v as getCachedRunningAgents, y as resolveIssueHeadlineCost } from "./workspaces-C7sOgLNZ.js";
89
+ import { a as listCodexSubagents, n as startSubagentListPolling, o as resolveCodexSubagentTranscript, r as subagentTranscriptPath } from "./subagents-P7wfucdb.js";
90
90
  import { t as readActiveDashboardBundle } from "./active-dashboard-bundle-uChaT_M9.js";
91
91
  import { n as getOpenAIAuthStatus, t as getCodexAuthPath } from "./openai-auth-BypG5FGt.js";
92
92
  import { i as getClaudePermissionFlagsString, l as getProviderEnvForModel } from "./claude-permissions-BT90X1o5.js";
93
93
  import { t as getClaudeAuthStatus } from "./claude-auth-DawrVBwQ.js";
94
- import { A as configDisabledRuleNames, F as workspaceContextWithoutProjectLayer, N as renderForHarness, P as validateTemplate, f as injectPiConversationMemory, l as getProviderAuthMode } from "./runtime-command-D0JVmWKZ.js";
94
+ import { A as configDisabledRuleNames, F as workspaceContextWithoutProjectLayer, N as renderForHarness, P as validateTemplate, f as injectPiConversationMemory, l as getProviderAuthMode } from "./runtime-command-0C3oTZGN.js";
95
95
  import { a as piGlobalContextFile, c as resolveWorkspaceContextFile, i as globalContextFile$1, l as workspaceContextFile, n as codexGlobalContextFile, r as ensureProjectLayer, s as resolveProjectContextFile, t as claudeGlobalContextFile } from "./layers-DKHBGSsn.js";
96
96
  import { D as isAdvisoryCheckName, E as verifyAppCanMerge, a as getAppRateLimit, f as isGitHubAppConfigured, u as getMergeBackendStatus } from "./github-app-B2_6crSm.js";
97
97
  import { r as lookupPullRequestNumberForBranch, t as githubPrLookupSource } from "./github-pr-lookup-Dcm7imyp.js";
98
98
  import { a as fetchIssuePullRequestDiff, c as getCachedIssuePrTabResponse, i as fetchIssuePullRequestDetails, l as getIssuePrTabCacheGeneration, n as fetchIssueCheckRuns, r as fetchIssuePullRequest, s as bumpIssuePrTabCacheGeneration, u as setCachedIssuePrTabResponse } from "./pull-requests-CRXySAoR.js";
99
99
  import { a as getPrFacts } from "./pr-facts-C9jNdDiz.js";
100
100
  import { i as resolveVerificationTestsMode, n as isCiTestCheckName, t as TEST_GATE_NAME } from "./verification-tests-mode-CCTmNT_N.js";
101
- import { m as planningHandoffStartedBy } from "./auto-spawn-consent-DRgQbl8k.js";
102
- import { t as readCpuPsi } from "./cpu-psi-BN99YdGz.js";
101
+ import { m as planningHandoffStartedBy } from "./auto-spawn-consent-BxXl-3y7.js";
102
+ import { t as readCpuPsi } from "./cpu-psi-DvzVl1bx.js";
103
103
  import { t as appendContinueSessionEntryForIssue } from "./lifecycle-io-D4t1Xhjj.js";
104
104
  import { n as resolveConversationGitInfo } from "./git-info-CMizfKid.js";
105
- import { r as loadIssueStatesForProject, t as getDerivedIssueState } from "./derived-issue-state-CCHbqKjW.js";
106
- import { _ as classifyAgentHealth, g as startSmeeProcess, h as isSmeeConfigured, l as getSystemHealthEvidenceSnapshot, o as getAcceptedSystemHealthSnapshot, s as getDeployStaleness } from "./system-health-service-7C9fafx7.js";
107
- import { c as formatUptime, l as getContainerHistory, o as buildResourceStacks, s as loadStackIssueStates, u as getCurrentDockerStats } from "./memory-governor-BQg4GOEF.js";
108
- import { a as init_worktree_ops, p as validateFeatureName, s as isPreWorktreeMetadataOnlyDir } from "./worktree-ops-DzDaxzI6.js";
105
+ import { r as loadIssueStatesForProject, t as getDerivedIssueState } from "./derived-issue-state-CmvMPi-R.js";
106
+ import { _ as classifyAgentHealth, g as startSmeeProcess, h as isSmeeConfigured, l as getSystemHealthEvidenceSnapshot, o as getAcceptedSystemHealthSnapshot, s as getDeployStaleness } from "./system-health-service-CjdWgKic.js";
107
+ import { c as formatUptime, l as getContainerHistory, o as buildResourceStacks, s as loadStackIssueStates, u as getCurrentDockerStats } from "./memory-governor-C3T769G6.js";
108
+ import { a as init_worktree_ops, p as validateFeatureName, s as isPreWorktreeMetadataOnlyDir } from "./worktree-ops-D_IXGBtP.js";
109
109
  import { n as init_workspace_config, t as getDefaultWorkspaceConfig } from "./workspace-config-C47auFin.js";
110
110
  import { o as promoteWorkspacePrdDraft, r as checkPrdGate } from "./pan-dir-Dhqz-1n-.js";
111
111
  import { t as createInFlightGuard } from "./in-flight-guard-CxK3Tq0I.js";
112
112
  import { n as getGuardedReviewRequester } from "./request-review-pipeline-BsiltUUm.js";
113
- import { _ as getAgentHealth, a as cleanupClosedIssueAgentDirectories, c as setAgentStoppedNotifier, d as getWorkspaceGitState, f as pullWorkspaceFastForward, g as generateHealthSummary, i as analyzeSwarmReadiness, n as readCloisterStateFile, o as DEACON_LITE_INTERVAL_MS, t as getCloisterService, u as recordHandoffDeferred, v as getAgentsNeedingAttention } from "./service-DKHnfIwb.js";
113
+ import { _ as getAgentHealth, a as cleanupClosedIssueAgentDirectories, c as setAgentStoppedNotifier, d as getWorkspaceGitState, f as pullWorkspaceFastForward, g as generateHealthSummary, i as analyzeSwarmReadiness, n as readCloisterStateFile, o as DEACON_LITE_INTERVAL_MS, t as getCloisterService, u as recordHandoffDeferred, v as getAgentsNeedingAttention } from "./service-Bn8Zn0WW.js";
114
114
  import { t as getIssueWorkspacePath } from "./issue-projects-CWtGfhcl.js";
115
115
  import { i as init_git_utils, r as formatAnchorShort, s as snapshotWorkspaceHeads } from "./git-utils-BxC6cp8c.js";
116
116
  import { n as isIssueClosed, r as isTrackerIssueClosed, t as clearIssueClosedCache } from "./issue-closed-EPXrH2QX.js";
117
- import { i as isBranchMerged } from "./closed-issue-reaper-DnaFCYJk.js";
117
+ import { i as isBranchMerged } from "./closed-issue-reaper-tjnA5V8Z.js";
118
118
  import { a as writeVerificationArtifact, r as readVerificationArtifact } from "./verification-artifact-Cj3hHxpA.js";
119
- import { C as computeWaves, S as computeStats, T as selectNeedsPlanning, _ as VETOED_LABEL, a as liveOrderIssueLookup, b as computeEpicGroups, c as orderIssueStoreStatus, g as RELEASED_LABEL, h as READY_LABEL, i as listBooks, l as writeOrderBookState, m as PARKED_LABEL, n as computeBookProgress, o as membership, p as OBJECTION_LABEL, r as getBookAsync, s as normalizeOrderIssueId, t as backlogCandidates, u as BLOCKS_MAIN_LABEL, v as classifyIssue, w as normalizeGate, x as computeLanes, y as computeCohort } from "./resolver-CAP4HecA.js";
120
- import { a as spawnPlanningSession, r as resolveAutoSpawnOnFinalize } from "./spawn-planning-session-38jno6va.js";
119
+ import { C as computeWaves, S as computeStats, T as selectNeedsPlanning, _ as VETOED_LABEL, a as liveOrderIssueLookup, b as computeEpicGroups, c as orderIssueStoreStatus, g as RELEASED_LABEL, h as READY_LABEL, i as listBooks, l as writeOrderBookState, m as PARKED_LABEL, n as computeBookProgress, o as membership, p as OBJECTION_LABEL, r as getBookAsync, s as normalizeOrderIssueId, t as backlogCandidates, u as BLOCKS_MAIN_LABEL, v as classifyIssue, w as normalizeGate, x as computeLanes, y as computeCohort } from "./resolver-TNBoD1Lh.js";
120
+ import { a as spawnPlanningSession, r as resolveAutoSpawnOnFinalize } from "./spawn-planning-session-DEr2g-vN.js";
121
121
  import { n as writeSequenceMd, t as parseSequenceMd } from "./sequence-io-TLazzrgD.js";
122
122
  import { D as listUatGenerations, d as listDuePendingAutoMerges, g as markMerged, h as markMergeRetriesExhausted, m as markFailed, p as markBlocked, v as requeueToPending, x as transitionToMerging } from "./merge-sync-B0eZ0QwC.js";
123
123
  import "./forge-Dda6MokF.js";
124
- import { r as getRuntimeForAgent } from "./runtimes-DUvSjnkK.js";
125
- import "./specialists-Dhqnld3A.js";
124
+ import { r as getRuntimeForAgent } from "./runtimes-CiPufB1e.js";
125
+ import "./specialists-C5WxILVV.js";
126
126
  import { a as getReviewerSessionName } from "./specialists-registry-DMdyaBq4.js";
127
127
  import { a as loadWorkspaceMetadata } from "./workspace-metadata-Bw3zviR6.js";
128
- import { c as readTestSkipWaiver, d as planFinalizedHash, f as stableStringify, l as waiverCoversHead, o as buildFinalFailureInstructions, p as stripAllowedFields, s as grantTestSkipWaiver, u as formatPlanFinalizedTrailer } from "./verification-runner-BMtIaVjU.js";
128
+ import { c as readTestSkipWaiver, d as planFinalizedHash, f as stableStringify, l as waiverCoversHead, o as buildFinalFailureInstructions, p as stripAllowedFields, s as grantTestSkipWaiver, u as formatPlanFinalizedTrailer } from "./verification-runner-D0DG7ixm.js";
129
129
  import { i as pushPlanArtifacts, n as commitPlanArtifacts, r as planArtifactCommitMessage } from "./merge-rebase-CfIE1tcQ.js";
130
- import { _ as spawnRemoteAgent, a as getRemoteAgentOutput, f as loadRemoteAgentState, g as sendToRemoteAgent, l as killRemoteAgent, n as checkRemoteSpendCap } from "./remote-agents-9UKtOTeT.js";
131
- import { S as unavailablePipelineMembership, _ as isDiscoverableAgentSession, b as refreshMembershipSnapshotsForProjects, c as enqueueProjectsResourceRefreshStaggered, d as startProjectResourceConvergence, f as stopProjectResourceRefreshQueue, g as groupResourceAllocatedIssuesByProject, h as getResourceDetailIdentifiers, l as getProjectResourceRefreshQueueState, m as getCachedResourceAllocatedIssues, p as whenProjectResourceRefreshIdle, s as enqueueProjectsResourceRefresh, t as PROJECT_RESOURCE_BOOT_STAGGER_WINDOW_MS, v as sanitizeResourceAllocatedIssues, x as summarizePipelineMembership, y as readPipelineMembershipSnapshotsForProjects } from "./project-resource-refresh-queue-BD7xaiwB.js";
130
+ import { _ as spawnRemoteAgent, a as getRemoteAgentOutput, f as loadRemoteAgentState, g as sendToRemoteAgent, l as killRemoteAgent, n as checkRemoteSpendCap } from "./remote-agents-D6G8Z0T_.js";
131
+ import { _ as isDiscoverableAgentSession, c as enqueueProjectsResourceRefreshStaggered, d as startProjectResourceConvergence, f as stopProjectResourceRefreshQueue, g as groupResourceAllocatedIssuesByProject, h as getResourceDetailIdentifiers, l as getProjectResourceRefreshQueueState, m as getCachedResourceAllocatedIssues, p as whenProjectResourceRefreshIdle, s as enqueueProjectsResourceRefresh, t as PROJECT_RESOURCE_BOOT_STAGGER_WINDOW_MS, v as sanitizeResourceAllocatedIssues } from "./project-resource-refresh-queue-Dx1QPkGs.js";
132
132
  import { a as readPrdContent, r as findPrdAnywhere } from "./prd-locations-C_I2h6ui.js";
133
133
  import { h as parseIssueIdFromText } from "./pipeline-membership-gather-STT4bndD.js";
134
- import { n as DOD_ROWS } from "./dod-C6qNQ8O3.js";
135
- import { a as generateFallbackSummary, c as handoffPreconditionFallbackReason, f as requestHandoffFromAgent, h as getTranscriptAdapter, i as copySessionFromCompactBoundary, l as logHandoffFallback, o as generateSummaryForFork, p as reserveSummaryForkSession, r as authorHandoffExternal, s as handoffFailureReason, t as HandoffAuthorModelNotConfiguredError, u as prependFallbackFocus } from "./summary-fork-BfuGi-S2.js";
136
- import { a as isCompacting, n as compactConversationNative, s as shouldInterceptManualCompact } from "./conversation-compaction-Dm4_bCqZ.js";
137
- import { C as derivePromptTitle, D as readConversationInputTarget, E as resolveDiscoveredSessionFile, S as handleConversationPaneChoiceAnswer, T as summarizeTranscriptTitle, _ as conversationPendingPermission, a as generateAiTitle, b as listPermissionRequests, c as getConversationMessageLocator, d as getConversationsPendingInputFeed, f as handleConversationMove, g as refreshBrowseCache, h as retitleConversation, i as conversationTranscriptMissing, l as getConversationMessagesRead, m as resolveSessionFile, n as configuredTitleModel, o as getCachedMessages, p as patchConversationTitle, r as conversationNeedsTerminal, s as getConversationAbout, t as askUserQuestionSnapshotFromScan, u as getConversationRead, v as handleConversationPermissionAnswer, w as serializeConversationTranscript, x as recordPermissionRequest, y as clearPermissionRequest } from "./conversation-reads-CGepvSWx.js";
138
- import { a as listConversationPullRequests, c as listPullRequestLinksForConversations, d as upsertBranchPullRequestLink, i as listAllPullRequestLinks, l as setPullRequestLinkSnapshot, n as linkConversationPullRequest, o as listConversationsForPullRequestSync, s as listConversationsLinkedToPullRequest, t as emitConversationPullRequestsChanged, u as unlinkConversationPullRequest } from "./conversation-pull-requests-Bu30dOQv.js";
139
- import { A as vaultDir, D as withFileLock, E as setOwnedTail, O as VAULT_OFF_MESSAGE, S as listOwned, T as replaceListCache, a as decryptRef, b as tailOf, c as encryptRef, d as parseKeyRing, f as readMachineRecord, h as refName, i as decodeWipParts, j as writeVaultConfig, k as readVaultConfig, l as isTombstone, m as readVaultHeader, n as VaultAuthenticationError, p as readSessionRecord, t as HEADER_REF_NAME, u as newVaultHeader, w as readLocalIndex } from "./format-QXO0qqJo.js";
140
- import { n as pidsWithCwdUnder } from "./teardown-workspace-BOnPHDQi.js";
141
- import { n as writeFeedbackFile } from "./feedback-writer-DSEPHMwz.js";
142
- import { c as isFinalVerificationAttempt, d as readVerificationCycleState, f as shouldEscalateVerificationFailure, l as readCiTestFailureStreak, u as readLatestCiTestResult } from "./verification-escalation-BOuG6ixX.js";
143
- import { a as getAnalyticsService, c as ensureOperatorHash, d as resolveTelemetryEnabled, f as telemetryEnvironmentForcesOff, i as getAnalyticsClientTypeForProcess, l as getOperatorHashIfEnabled, o as synchronizeAnalyticsServices, s as trackAnalyticsTask, u as getOrCreateInstallId } from "./pipeline-BxDHIXwk.js";
144
- import { a as readCurrentStatus, l as maybeTriggerStatusRollup, s as readRecentObservations, u as writePendingTurn } from "./rollup-Bm6X7jIb.js";
145
- import { r as probeBranchConflictPaths } from "./conflict-gate-Domf8Fvr.js";
146
- import { o as isAutoMergeEligible } from "./auto-merge-eligibility-De2WgmQS.js";
147
- import { n as evaluateConflictRepairGate, r as evaluateIssueMergeGate } from "./merge-gate-LOtvWv5K.js";
148
- import { n as surfaceIssueFeedbackNeedsYou, t as resolveIssueFeedbackTarget } from "./feedback-target-DmQ249DE.js";
149
- import { t as getAgentCommand } from "./settings-5VVqbwVL.js";
150
- import { n as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-qoNG2iir.js";
151
- import { A as assertRefName, C as writeMaterialization, D as VaultOfflineError, E as VAULT_FORMAT_MARKER_FILE, M as objectRelativePath, N as ensureEnvironmentIdentity, O as assertDistinctRefNames, S as planMaterialization, T as VAULT_FORMAT_MARKER, _ as isPathUnder$1, a as confirmEviction, b as nativeFileContent, c as readEvictionBatch, f as settle$1, g as runWipGit, h as latestWipEntry, i as clearBatch, j as assertSlotName, k as assertNotSlotName, l as reofferEntry, m as buildWipCommit, n as batchFingerprint, o as declineEntry, p as WipGitError, u as scanEligible, v as compareCwdState, w as KEYWRAP_OBJECT_NAME, x as planCodexMaterialization, y as readCwdState } from "./evict-Dhzce_bB.js";
152
- import { t as detectProviderEnvConflicts } from "./claude-settings-overlay-DX8SS3mU.js";
153
- import { a as projectIdFromPath, i as parentSessionIdFromPath, n as dimensionsForModel, o as sessionIdFromPath, r as openEmbeddingsDb } from "./conversations-search-CDvHCyYe.js";
154
- import { r as getShipLog } from "./ship-log-CRk1pL0V.js";
155
- import { l as mergeTrainRouteLayer } from "./merge-train-Cee9LY5p.js";
156
- import { a as resumeFlywheel, c as readFlywheelReportFile, d as FlywheelNotRunning, f as FlywheelOrphanSession, g as resolveFlywheelProjectRoot, h as readFlywheelRun, i as requestFlywheelReport, l as readFlywheelStateFile, m as deriveFlywheelStatus, n as abortFlywheel, o as startFlywheel, p as FlywheelPausedExists, r as pauseFlywheel, s as stopFlywheel, t as computeSubstrateStats, u as FlywheelAlreadyRunning } from "./substrate-stats-DuuksQHp.js";
157
- import { a as listConfiguredModels, c as detectClaudeInstall, l as listClaudeBinariesOnPath, r as evaluateClaudeCodeRequirements, s as claudeCodeUpgradePlan, u as readClaudeCodeVersion } from "./requirements-COv0qjkH.js";
158
- import { i as appendLinearMcpAuthHealthyEvent, r as appendLinearMcpAuthCallbackRelayedEvent, s as resolveLinearMcpAuthIntervention } from "./linear-mcp-auth-COqdLkXb.js";
159
- import { n as getSequencerRunStatus, r as spawnSequencerAgent, t as SEQUENCER_AGENT_ID } from "./sequencer-agent-BGwo_hJY.js";
160
- import "./supervisor-CWskvoz3.js";
161
- import { t as buildConfirmedDeadAgentEvents } from "./agent-status-events-HU33uOJc.js";
162
- import { i as listTranscriptCheckpoints, r as getTranscriptCheckpoint$1 } from "./checkpoints-BiGSCyKD.js";
134
+ import { a as refreshMembershipSnapshotsForProjects, i as readPipelineMembershipSnapshotsForProjects, o as summarizePipelineMembership, s as unavailablePipelineMembership } from "./pipeline-membership-BbdiZQ2g.js";
135
+ import { n as DOD_ROWS } from "./dod-BJP9kMFG.js";
136
+ import { a as generateFallbackSummary, c as handoffPreconditionFallbackReason, f as requestHandoffFromAgent, h as getTranscriptAdapter, i as copySessionFromCompactBoundary, l as logHandoffFallback, o as generateSummaryForFork, p as reserveSummaryForkSession, r as authorHandoffExternal, s as handoffFailureReason, t as HandoffAuthorModelNotConfiguredError, u as prependFallbackFocus } from "./summary-fork-DQGtPP_x.js";
137
+ import { a as isCompacting, n as compactConversationNative, s as shouldInterceptManualCompact } from "./conversation-compaction-BLDpoKfB.js";
138
+ import { C as derivePromptTitle, D as readConversationInputTarget, E as resolveDiscoveredSessionFile, S as handleConversationPaneChoiceAnswer, T as summarizeTranscriptTitle, _ as conversationPendingPermission, a as generateAiTitle, b as listPermissionRequests, c as getConversationMessageLocator, d as getConversationsPendingInputFeed, f as handleConversationMove, g as refreshBrowseCache, h as retitleConversation, i as conversationTranscriptMissing, l as getConversationMessagesRead, m as resolveSessionFile, n as configuredTitleModel, o as getCachedMessages, p as patchConversationTitle, r as conversationNeedsTerminal, s as getConversationAbout, t as askUserQuestionSnapshotFromScan, u as getConversationRead, v as handleConversationPermissionAnswer, w as serializeConversationTranscript, x as recordPermissionRequest, y as clearPermissionRequest } from "./conversation-reads-0fCsCPQe.js";
139
+ import { a as listConversationPullRequests, c as listPullRequestLinksForConversations, d as upsertBranchPullRequestLink, i as listAllPullRequestLinks, l as setPullRequestLinkSnapshot, n as linkConversationPullRequest, o as listConversationsForPullRequestSync, s as listConversationsLinkedToPullRequest, t as emitConversationPullRequestsChanged, u as unlinkConversationPullRequest } from "./conversation-pull-requests-VQwME1F1.js";
140
+ import { A as vaultDir, D as withFileLock, E as setOwnedTail, O as VAULT_OFF_MESSAGE, S as listOwned, T as replaceListCache, a as decryptRef, b as tailOf, c as encryptRef, d as parseKeyRing, f as readMachineRecord, h as refName, i as decodeWipParts, j as writeVaultConfig, k as readVaultConfig, l as isTombstone, m as readVaultHeader, n as VaultAuthenticationError, p as readSessionRecord, t as HEADER_REF_NAME, u as newVaultHeader, w as readLocalIndex } from "./format-3trt48Iz.js";
141
+ import { n as pidsWithCwdUnder } from "./teardown-workspace-Dvwa4r5M.js";
142
+ import { n as writeFeedbackFile } from "./feedback-writer-g9cmlhQU.js";
143
+ import { c as isFinalVerificationAttempt, d as readVerificationCycleState, f as shouldEscalateVerificationFailure, l as readCiTestFailureStreak, u as readLatestCiTestResult } from "./verification-escalation-8_JfF7-z.js";
144
+ import { a as getAnalyticsService, c as ensureOperatorHash, d as resolveTelemetryEnabled, f as telemetryEnvironmentForcesOff, i as getAnalyticsClientTypeForProcess, l as getOperatorHashIfEnabled, o as synchronizeAnalyticsServices, s as trackAnalyticsTask, u as getOrCreateInstallId } from "./pipeline-CZPx_h0w.js";
145
+ import { a as readCurrentStatus, l as maybeTriggerStatusRollup, s as readRecentObservations, u as writePendingTurn } from "./rollup-8hDNviZE.js";
146
+ import { r as probeBranchConflictPaths } from "./conflict-gate-CPbG8VXI.js";
147
+ import { o as isAutoMergeEligible } from "./auto-merge-eligibility-f1D8TwAj.js";
148
+ import { n as evaluateConflictRepairGate, r as evaluateIssueMergeGate } from "./merge-gate-D5zTeaC0.js";
149
+ import { n as surfaceIssueFeedbackNeedsYou, t as resolveIssueFeedbackTarget } from "./feedback-target-BYLtF8vX.js";
150
+ import { t as getAgentCommand } from "./settings-DNxbkedU.js";
151
+ import { n as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-Day75qqe.js";
152
+ import { A as assertRefName, C as writeMaterialization, D as VaultOfflineError, E as VAULT_FORMAT_MARKER_FILE, M as objectRelativePath, N as ensureEnvironmentIdentity, O as assertDistinctRefNames, S as planMaterialization, T as VAULT_FORMAT_MARKER, _ as isPathUnder$1, a as confirmEviction, b as nativeFileContent, c as readEvictionBatch, f as settle$1, g as runWipGit, h as latestWipEntry, i as clearBatch, j as assertSlotName, k as assertNotSlotName, l as reofferEntry, m as buildWipCommit, n as batchFingerprint, o as declineEntry, p as WipGitError, u as scanEligible, v as compareCwdState, w as KEYWRAP_OBJECT_NAME, x as planCodexMaterialization, y as readCwdState } from "./evict-l0JJZ11s.js";
153
+ import { t as detectProviderEnvConflicts } from "./claude-settings-overlay-BKk6aPyn.js";
154
+ import { a as projectIdFromPath, i as parentSessionIdFromPath, n as dimensionsForModel, o as sessionIdFromPath, r as openEmbeddingsDb } from "./conversations-search-CS0COdna.js";
155
+ import { a as parseRepoUrl, i as inferProjectGithubRepo } from "./infer-tracker-CwOO7_gU.js";
156
+ import { r as getShipLog } from "./ship-log-Di-_dljC.js";
157
+ import { l as mergeTrainRouteLayer } from "./merge-train-Dg5cr8mS.js";
158
+ import { a as resumeFlywheel, c as readFlywheelReportFile, d as FlywheelNotRunning, f as FlywheelOrphanSession, g as resolveFlywheelProjectRoot, h as readFlywheelRun, i as requestFlywheelReport, l as readFlywheelStateFile, m as deriveFlywheelStatus, n as abortFlywheel, o as startFlywheel, p as FlywheelPausedExists, r as pauseFlywheel, s as stopFlywheel, t as computeSubstrateStats, u as FlywheelAlreadyRunning } from "./substrate-stats-0PCKLsMv.js";
159
+ import { a as listConfiguredModels, c as detectClaudeInstall, l as listClaudeBinariesOnPath, r as evaluateClaudeCodeRequirements, s as claudeCodeUpgradePlan, u as readClaudeCodeVersion } from "./requirements-GXRVCopE.js";
160
+ import { i as appendLinearMcpAuthHealthyEvent, r as appendLinearMcpAuthCallbackRelayedEvent, s as resolveLinearMcpAuthIntervention } from "./linear-mcp-auth-JIDCfEz0.js";
161
+ import { n as getSequencerRunStatus, r as spawnSequencerAgent, t as SEQUENCER_AGENT_ID } from "./sequencer-agent-C_RaZl3z.js";
162
+ import "./supervisor-De-GYL91.js";
163
+ import { t as buildConfirmedDeadAgentEvents } from "./agent-status-events-DfYAcfpo.js";
164
+ import { i as listTranscriptCheckpoints, r as getTranscriptCheckpoint$1 } from "./checkpoints-C-xh-Mv0.js";
163
165
  import { basename, delimiter, dirname, extname, isAbsolute, join, normalize, posix, relative, resolve, sep, win32 } from "node:path";
164
166
  import { Cause, Context, Data, Deferred, Duration, Effect, FileSystem, Layer, Option, Path, Queue, Result, Schedule, Schema, Stream } from "effect";
165
167
  import { createReadStream, createWriteStream, existsSync, fstatSync, mkdirSync, readFileSync, readdirSync, statSync } from "fs";
@@ -895,7 +897,7 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
895
897
  if (!existsSync$1(workspacePath)) throw new WorkspaceNotFound({ id: issueId });
896
898
  const plan = readWorkspacePlanSync(workspacePath);
897
899
  if (!plan || plan.plan.items.length === 0) throw new PlanEmpty({ id: issueId });
898
- const { getAgentState, spawnAgent, normalizeAgentId } = await import("./agents-DfEYd_I0.js");
900
+ const { getAgentState, spawnAgent, normalizeAgentId } = await import("./agents-C9oho7kE.js");
899
901
  const normalizedId = normalizeAgentId(issueId);
900
902
  if (getAgentState(normalizedId)?.status === "running") throw new AgentAlreadyRunning({ id: issueId });
901
903
  return {
@@ -927,7 +929,7 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
927
929
  const { workspacePath, projectPath, issue } = opts;
928
930
  if (!existsSync$1(workspacePath)) throw new WorkspaceNotFound({ id: issueId });
929
931
  const sessionName = opts.sessionName ?? `planning-${issueId.toLowerCase()}`;
930
- const { spawnPlanningSession } = await import("./spawn-planning-session-Dp2FsjWk.js");
932
+ const { spawnPlanningSession } = await import("./spawn-planning-session-D9vDkQVz.js");
931
933
  const result = await spawnPlanningSession({
932
934
  issue: {
933
935
  id: issue.id,
@@ -961,14 +963,14 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
961
963
  }),
962
964
  kill: (agentId) => Effect.tryPromise({
963
965
  try: async () => {
964
- const { stopAgent } = await import("./agents-DfEYd_I0.js");
966
+ const { stopAgent } = await import("./agents-C9oho7kE.js");
965
967
  await Effect.runPromise(stopAgent(agentId));
966
968
  },
967
969
  catch: () => void 0
968
970
  }).pipe(Effect.ignore),
969
971
  message: (agentId, msg) => Effect.tryPromise({
970
972
  try: async () => {
971
- const { messageAgent } = await import("./agents-DfEYd_I0.js");
973
+ const { messageAgent } = await import("./agents-C9oho7kE.js");
972
974
  await messageAgent(agentId, msg);
973
975
  },
974
976
  catch: (err) => new AgentStartError({
@@ -979,7 +981,7 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
979
981
  }),
980
982
  deepWipe: (issueId, opts) => Effect.tryPromise({
981
983
  try: async () => {
982
- const { deepWipe } = await import("./workflows-Dp8qhcha.js");
984
+ const { deepWipe } = await import("./workflows-Dr-Yo76E.js");
983
985
  const { resolveProjectFromIssueSync } = await import("./projects-CjRKDa9o.js");
984
986
  const project = resolveProjectFromIssueSync(issueId);
985
987
  const projectPath = project?.projectPath ?? process.cwd();
@@ -1045,7 +1047,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
1045
1047
  const { workspacePath, branch } = getWorkspacePath(issueId);
1046
1048
  const issueLower = issueId.toLowerCase();
1047
1049
  if (!workspaceNeedsSetup(workspacePath)) return workspacePath;
1048
- const { createWorkspace } = await import("./workspace-manager-Nljndsty.js");
1050
+ const { createWorkspace } = await import("./workspace-manager-D0auAuId.js");
1049
1051
  const { loadProjectsConfigSync } = await import("./projects-CjRKDa9o.js");
1050
1052
  const { projects } = loadProjectsConfigSync();
1051
1053
  const project = resolveProjectFromIssueSync(issueId);
@@ -1080,7 +1082,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
1080
1082
  const { workspacePath } = getWorkspacePath(issueId);
1081
1083
  const issueLower = issueId.toLowerCase();
1082
1084
  if (!existsSync$1(workspacePath)) throw new WorkspaceNotFound({ id: issueId });
1083
- const { removeWorkspace } = await import("./workspace-manager-Nljndsty.js");
1085
+ const { removeWorkspace } = await import("./workspace-manager-D0auAuId.js");
1084
1086
  const project = resolveProjectFromIssueSync(issueId);
1085
1087
  if (!project) throw new WorkspaceCreateError({
1086
1088
  id: issueId,
@@ -1111,7 +1113,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
1111
1113
  try: async () => {
1112
1114
  const { workspacePath } = getWorkspacePath(issueId);
1113
1115
  const issueLower = issueId.toLowerCase();
1114
- const { stopWorkspaceDocker } = await import("./workspace-manager-Nljndsty.js");
1116
+ const { stopWorkspaceDocker } = await import("./workspace-manager-D0auAuId.js");
1115
1117
  await stopWorkspaceDocker(workspacePath, issueLower);
1116
1118
  },
1117
1119
  catch: () => void 0
@@ -1180,7 +1182,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
1180
1182
  join(workspacePath, ".devcontainer", "docker-compose.devcontainer.yml")
1181
1183
  ];
1182
1184
  if (!composePaths.find((p) => existsSync$1(p))) {
1183
- const { ensureDevcontainer } = await import("./ensure-devcontainer-C_OTsIz6.js");
1185
+ const { ensureDevcontainer } = await import("./ensure-devcontainer-bvZTPcBb.js");
1184
1186
  const ensure = ensureDevcontainer({
1185
1187
  workspacePath,
1186
1188
  issueId
@@ -1605,6 +1607,28 @@ async function readBridgedCodexCredential() {
1605
1607
  };
1606
1608
  }
1607
1609
  }
1610
+ async function mtimeMsOrNull(path) {
1611
+ try {
1612
+ return (await stat(path)).mtimeMs;
1613
+ } catch {
1614
+ return null;
1615
+ }
1616
+ }
1617
+ /**
1618
+ * Re-bridge ~/.codex/auth.json into CLIProxy's codex-primary.json when the native
1619
+ * store was written after the bridged copy (or the copy is missing). A `codex
1620
+ * login` run in the operator's own terminal heals only the native store; without
1621
+ * this the stale bridged copy keeps the banner red until a dashboard restart.
1622
+ * Two stats per poll; best effort, never fails the status read.
1623
+ */
1624
+ async function rebridgeCodexAuthIfNativeNewer() {
1625
+ const [nativeMtimeMs, bridgedMtimeMs] = await Promise.all([mtimeMsOrNull(getNativeCodexAuthPath()), mtimeMsOrNull(join(getCliproxyAuthDir(), "codex-primary.json"))]);
1626
+ if (nativeMtimeMs === null) return;
1627
+ if (bridgedMtimeMs !== null && bridgedMtimeMs >= nativeMtimeMs) return;
1628
+ try {
1629
+ await bridgeCodexAuthToCliproxy();
1630
+ } catch {}
1631
+ }
1608
1632
  /** Bridge checkCodexAuthStatus into a route, keeping its message in a 500 body. */
1609
1633
  const checkCodexAuth = (options) => Effect.tryPromise({
1610
1634
  try: () => checkCodexAuthStatus(options),
@@ -1614,6 +1638,7 @@ const checkCodexAuth = (options) => Effect.tryPromise({
1614
1638
  })
1615
1639
  });
1616
1640
  const getCodexAuthRoute = HttpRouter.add("GET", "/api/settings/codex-auth", httpHandler(Effect.gen(function* () {
1641
+ yield* Effect.promise(() => rebridgeCodexAuthIfNativeNewer());
1617
1642
  return jsonResponse(yield* checkCodexAuth({}));
1618
1643
  })));
1619
1644
  async function getExistingLiveReauthSession() {
@@ -15767,7 +15792,7 @@ var require_get_vercel_oidc_token = /* @__PURE__ */ __commonJSMin(((exports, mod
15767
15792
  err = error;
15768
15793
  }
15769
15794
  try {
15770
- const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([await import("./token-util-DSDGsD95.js").then((m) => /* @__PURE__ */ __toESM(m.default)), await import("./token-BXOsGOq0.js").then((m) => /* @__PURE__ */ __toESM(m.default))]);
15795
+ const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([await import("./token-util-DSDGsD95.js").then((m) => /* @__PURE__ */ __toESM(m.default)), await import("./token-BVSQ0ZbH.js").then((m) => /* @__PURE__ */ __toESM(m.default))]);
15771
15796
  if (!token || isExpired(getTokenPayload(token), options?.expirationBufferMs)) {
15772
15797
  await refreshToken(options);
15773
15798
  token = getVercelOidcTokenSync();
@@ -30254,7 +30279,7 @@ var GoogleCloudTranscription = class {
30254
30279
  }
30255
30280
  async start(apiKey, model) {
30256
30281
  try {
30257
- const { SpeechClient } = await import("./src-DEWY9s_G.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1)).then((module) => module.v1p1beta1 ?? module.v1);
30282
+ const { SpeechClient } = await import("./src-Bjf3_TJI.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1)).then((module) => module.v1p1beta1 ?? module.v1);
30258
30283
  if (this.closed) return;
30259
30284
  const stream = new SpeechClient({ apiKey }).streamingRecognize({
30260
30285
  config: {
@@ -30950,7 +30975,7 @@ async function captureInterestedAgent(state, agentId, pane) {
30950
30975
  try {
30951
30976
  const remoteState = await readFile(join(homedir$1(), ".overdeck", "agents", agentId, "remote-state.json"), "utf-8").then((text) => JSON.parse(text)).catch(() => null);
30952
30977
  if (remoteState?.location === "remote" && remoteState?.vmName) {
30953
- const { getRemoteAgentOutput } = await import("./remote-agents-CJYoW12q.js");
30978
+ const { getRemoteAgentOutput } = await import("./remote-agents-BlqgB9dc.js");
30954
30979
  stdout = await getRemoteAgentOutput(agentId, remoteState.vmName, 50);
30955
30980
  } else stdout = await captureAgentPane(agentId, pane);
30956
30981
  } catch {
@@ -32271,7 +32296,7 @@ const PanRpcLayer = PanRpcGroup.toLayer(Effect.gen(function* () {
32271
32296
  },
32272
32297
  [WS_METHODS.subscribeIssueEvents]: (input) => {
32273
32298
  console.log(`[ws-rpc] subscribeIssueEvents invoked issueId=${input.issueId}`);
32274
- import("./issue-service-singleton-DxTRf-RV.js").then(({ getSharedIssueService }) => getSharedIssueService().backfillIssue(input.issueId)).catch(() => {});
32299
+ import("./issue-service-singleton-BbERjqoV.js").then(({ getSharedIssueService }) => getSharedIssueService().backfillIssue(input.issueId)).catch(() => {});
32275
32300
  return eventStore.streamEvents.pipe(Stream.filter(shouldBroadcastDashboardEvent), Stream.map(storedToDomainEvent), Stream.filter(passesDomainEventSchema), Stream.mapEffect((event) => getCachedAgentIssueLookup(readModel).pipe(Effect.map((lookup) => filterDomainEventForIssue(event, input.issueId, lookup)))), Stream.filter((event) => event !== null));
32276
32301
  },
32277
32302
  [WS_METHODS.subscribeTerminal]: (input) => terminalService.streamSession(input.sessionName, input.cols, input.rows),
@@ -32695,7 +32720,7 @@ const defaultExecFile = async (file, args, options) => {
32695
32720
  return { stdout };
32696
32721
  };
32697
32722
  async function defaultGetLabels(issueId) {
32698
- const { defaultGetIssueLabels } = await import("./auto-merge-eligibility-DmUQEAws.js");
32723
+ const { defaultGetIssueLabels } = await import("./auto-merge-eligibility-is6bTkrA.js");
32699
32724
  return defaultGetIssueLabels(issueId);
32700
32725
  }
32701
32726
  /** The workspace PRD: `.pan/drafts/<ISSUE-UPPER>.md`, then `<issue-lower>.md`. */
@@ -34248,7 +34273,7 @@ async function runDestructiveIssueLifecycle(id, mode, opts = {}) {
34248
34273
  cancelPlanHome = resolveIssueWorkspacePlanHome(ctx.projectPath, id);
34249
34274
  }
34250
34275
  cleanupLog.push(...await closeIssuePullRequest(id, mode === "cancel" ? "Canceled via Overdeck" : "Reset to Todo via Overdeck"));
34251
- const { resetToTodo, cancelIssueWorkflow } = await import("./lifecycle-BT3aegwk.js");
34276
+ const { resetToTodo, cancelIssueWorkflow } = await import("./lifecycle-BHcU1hPs.js");
34252
34277
  const workflow = mode === "cancel" ? cancelIssueWorkflow : resetToTodo;
34253
34278
  const result = await Effect.runPromise(workflow(ctx, {
34254
34279
  deleteWorkspace,
@@ -34264,7 +34289,7 @@ async function runDestructiveIssueLifecycle(id, mode, opts = {}) {
34264
34289
  cleanupLog.push(...result.steps.flatMap((step) => step.details || [step.error].filter(Boolean)));
34265
34290
  if (mode === "cancel") cleanupLog.push(await transitionCancelledSpec(id, cancelPlanHome));
34266
34291
  try {
34267
- const { killAllReviewerSessions } = await import("./review-agent-CTNzg6ag.js");
34292
+ const { killAllReviewerSessions } = await import("./review-agent-D7b3qt2U.js");
34268
34293
  const { resolveProjectFromIssueSync } = await import("./projects-CjRKDa9o.js");
34269
34294
  const projectKey = resolveProjectFromIssueSync(id)?.projectKey;
34270
34295
  if (projectKey) {
@@ -34275,7 +34300,7 @@ async function runDestructiveIssueLifecycle(id, mode, opts = {}) {
34275
34300
  cleanupLog.push(`Reviewer session cleanup failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
34276
34301
  }
34277
34302
  try {
34278
- const { resetPostMergeState } = await import("./merge-agent-CVjeg02H.js");
34303
+ const { resetPostMergeState } = await import("./merge-agent-C2UtoeTe.js");
34279
34304
  resetPostMergeState(id);
34280
34305
  resetPostMergeState(id.toUpperCase());
34281
34306
  cleanupLog.push("Cleared merge state");
@@ -34295,7 +34320,7 @@ function closeIssueTransition(options) {
34295
34320
  const { issueId, body, eventStore } = options;
34296
34321
  const { reason } = body;
34297
34322
  const projectPath = getProjectPath$3(void 0, extractPrefix(issueId) ?? issueId.split("-")[0]);
34298
- const { close: closeWorkflow } = yield* Effect.promise(() => import("./lifecycle-BT3aegwk.js"));
34323
+ const { close: closeWorkflow } = yield* Effect.promise(() => import("./lifecycle-BHcU1hPs.js"));
34299
34324
  const githubCheck = isGitHubIssue$4(issueId);
34300
34325
  const issueDataService = getIssueDataService$8();
34301
34326
  const issueSource = issueDataService.getIssueSource(issueId);
@@ -34566,7 +34591,7 @@ function reopenIssueTransition(options) {
34566
34591
  if (workspacePath) await reopenWorkspaceState(id.toUpperCase(), workspacePath, { reason: body?.reason });
34567
34592
  } catch {}
34568
34593
  try {
34569
- const { resetPostMergeState } = await import("./merge-agent-CVjeg02H.js");
34594
+ const { resetPostMergeState } = await import("./merge-agent-C2UtoeTe.js");
34570
34595
  resetPostMergeState(id);
34571
34596
  resetPostMergeState(id.toUpperCase());
34572
34597
  } catch {}
@@ -34873,7 +34898,7 @@ async function copySettingsToWorkspace(id) {
34873
34898
  success: false,
34874
34899
  error: "Workspace not found"
34875
34900
  }, { status: 404 });
34876
- const { copyOverdeckSettingsToWorkspace } = await import("./workspace-manager-Nljndsty.js");
34901
+ const { copyOverdeckSettingsToWorkspace } = await import("./workspace-manager-D0auAuId.js");
34877
34902
  const result = copyOverdeckSettingsToWorkspace(workspacePath);
34878
34903
  return jsonResponse({
34879
34904
  success: result.errors.length === 0 || result.copied.length > 0,
@@ -35364,7 +35389,7 @@ function restartFromPlan(options) {
35364
35389
  });
35365
35390
  const resetResult = yield* Effect.promise(async () => {
35366
35391
  try {
35367
- const { runGitResetHard } = await import("./dangerous-git-ops-GKdOQbOe.js");
35392
+ const { runGitResetHard } = await import("./dangerous-git-ops-BcSMn_cv.js");
35368
35393
  async function findPlanningCommit(grep, label) {
35369
35394
  try {
35370
35395
  const { stdout } = await execAsync$6(`git log --grep="${grep.replace(/"/g, "\\\"")}" --format=%H -1`, {
@@ -35797,7 +35822,7 @@ function closeOutIssue(id, opts = {}) {
35797
35822
  }
35798
35823
  const closeOutResult = yield* Effect.promise(async () => {
35799
35824
  try {
35800
- const { closeOut } = await import("./lifecycle-BT3aegwk.js");
35825
+ const { closeOut } = await import("./lifecycle-BHcU1hPs.js");
35801
35826
  return {
35802
35827
  ok: true,
35803
35828
  result: await Effect.runPromise(closeOut(ctx, {
@@ -35886,7 +35911,7 @@ function bulkCloseOut(body) {
35886
35911
  const invalidIds = issueIds.filter((id) => !isValidIssueId(id));
35887
35912
  if (invalidIds.length > 0) return jsonResponse({ error: `Invalid issue ID format: ${invalidIds.join(", ")}` }, { status: 400 });
35888
35913
  const eventStore = yield* EventStoreService;
35889
- const { closeOut } = yield* Effect.promise(() => import("./lifecycle-BT3aegwk.js"));
35914
+ const { closeOut } = yield* Effect.promise(() => import("./lifecycle-BHcU1hPs.js"));
35890
35915
  const issueDataService = getIssueDataService$5();
35891
35916
  const tasks = [];
35892
35917
  const agentChecks = yield* Effect.all(issueIds.map((id) => Effect.promise(async () => {
@@ -39224,7 +39249,7 @@ async function defaultReadRemoteState(agentId) {
39224
39249
  */
39225
39250
  async function defaultIssueTitles() {
39226
39251
  try {
39227
- const { getSharedIssueService } = await import("./issue-service-singleton-DxTRf-RV.js");
39252
+ const { getSharedIssueService } = await import("./issue-service-singleton-BbERjqoV.js");
39228
39253
  const titles = /* @__PURE__ */ new Map();
39229
39254
  for (const issue of getSharedIssueService().getIssues({ includeCompleted: true })) {
39230
39255
  if (typeof issue !== "object" || issue === null) continue;
@@ -39239,7 +39264,7 @@ async function defaultIssueTitles() {
39239
39264
  /** Derived pipeline states from the shared issue service's cache; empty on any error. */
39240
39265
  async function defaultDerivedIssueStates() {
39241
39266
  try {
39242
- const { getSharedIssueService } = await import("./issue-service-singleton-DxTRf-RV.js");
39267
+ const { getSharedIssueService } = await import("./issue-service-singleton-BbERjqoV.js");
39243
39268
  return new Map(getSharedIssueService().listDerivedStates().map((derived) => [derived.issueId.toUpperCase(), derived]));
39244
39269
  } catch {
39245
39270
  return /* @__PURE__ */ new Map();
@@ -42463,7 +42488,7 @@ async function surfaceNeedsYou(issueId, reason, details, deps) {
42463
42488
  await deps.surfaceNeedsYou(issueId, reason, details);
42464
42489
  return;
42465
42490
  }
42466
- const { surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-C6lpafxM.js");
42491
+ const { surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-B0XBJvkz.js");
42467
42492
  await surfaceIssueFeedbackNeedsYou(issueId, reason, details);
42468
42493
  } catch (err) {
42469
42494
  console.warn(`[ci-failure-feedback] Could not surface needs-you for ${issueId}: ${err instanceof Error ? err.message : String(err)}`);
@@ -42506,7 +42531,7 @@ async function recordCiTestGatePassInQueue(opts, deps = {}) {
42506
42531
  return false;
42507
42532
  }
42508
42533
  try {
42509
- const { liftVerificationStuckPause } = await import("./verification-escalation-C76ZbMod.js");
42534
+ const { liftVerificationStuckPause } = await import("./verification-escalation-DAjaXHwo.js");
42510
42535
  await liftVerificationStuckPause(issueId, "ci-failure-feedback");
42511
42536
  } catch (err) {
42512
42537
  console.warn(`[ci-failure-feedback] Could not lift the verification-stuck pause for ${issueId}: ${err instanceof Error ? err.message : String(err)}`);
@@ -42618,7 +42643,7 @@ function buildFeedbackBody(opts) {
42618
42643
  * needs-you when nothing can be reached).
42619
42644
  */
42620
42645
  async function deliverCiTestGateFeedback(issueId, opts, feedbackPath, counted, deps) {
42621
- const { announceVerificationFailure, deliverVerificationFeedback, escalateVerificationStuck } = await import("./verification-escalation-C76ZbMod.js");
42646
+ const { announceVerificationFailure, deliverVerificationFeedback, escalateVerificationStuck } = await import("./verification-escalation-DAjaXHwo.js");
42622
42647
  const head8 = opts.headSha.slice(0, 8);
42623
42648
  const { cycleCount } = counted;
42624
42649
  const summary = `CI test job failed on PR head ${head8} (attempt ${cycleCount}/3).\n\nFeedback: ${feedbackPath}`;
@@ -43013,7 +43038,7 @@ async function handlePullRequest(payload) {
43013
43038
  const resolved = resolveProjectFromIssueSync(issueId);
43014
43039
  const project = resolved ? listProjectsSync().find((entry) => entry.key === resolved.projectKey)?.config : void 0;
43015
43040
  if (project) {
43016
- const { enqueueProjectResourceRefresh } = await import("./project-resource-refresh-queue-Dsha4mgg.js");
43041
+ const { enqueueProjectResourceRefresh } = await import("./project-resource-refresh-queue-DmNcMWIW.js");
43017
43042
  enqueueProjectResourceRefresh(project, `pull_request:${payload.action}`);
43018
43043
  }
43019
43044
  } catch (err) {
@@ -43034,14 +43059,14 @@ async function handlePullRequest(payload) {
43034
43059
  console.warn(`[webhook] Failed to start the review pipeline for ${issueId}: ${err?.message ?? err}`);
43035
43060
  }
43036
43061
  if (payload.action === "closed" && pr.merged === true) try {
43037
- const { postMergeLifecycle } = await import("./merge-agent-CVjeg02H.js");
43062
+ const { postMergeLifecycle } = await import("./merge-agent-C2UtoeTe.js");
43038
43063
  const { resolveProjectFromIssueSync } = await import("./projects-CjRKDa9o.js");
43039
43064
  const project = resolveProjectFromIssueSync(issueId);
43040
43065
  if (project) {
43041
43066
  const branchName = pr.head.ref;
43042
43067
  postMergeLifecycle(issueId, project.projectPath, branchName).catch((err) => console.warn(`[webhook] postMergeLifecycle failed for ${issueId} (${branchName}): ${err?.message ?? err}`));
43043
43068
  if (branchName.toLowerCase().startsWith("strike/")) {
43044
- const { finishStrike } = await import("./strike-completion-DyPF_uhD.js");
43069
+ const { finishStrike } = await import("./strike-completion-PiFiEtoo.js");
43045
43070
  finishStrike(issueId, project.projectPath, {
43046
43071
  source: "webhook",
43047
43072
  ...pr.number != null ? { prRef: prUrlFor(repo, pr.number) } : {}
@@ -51668,7 +51693,7 @@ const postMissionControlUploadRoute = HttpRouter.add("POST", "/api/command-deck/
51668
51693
  let safeName = filename.replace(/[^a-zA-Z0-9._-]/g, "-");
51669
51694
  let processedContent = content;
51670
51695
  if (safeName.endsWith(".vtt")) {
51671
- const { vttToMarkdown } = yield* Effect.promise(() => import("./vtt-parser-DSX4wASE.js"));
51696
+ const { vttToMarkdown } = yield* Effect.promise(() => import("./vtt-parser-uNggfu87.js"));
51672
51697
  processedContent = vttToMarkdown(content);
51673
51698
  safeName = safeName.replace(/\.vtt$/, ".md");
51674
51699
  }
@@ -57325,15 +57350,15 @@ const defaultPresetPlanDeps = {
57325
57350
  readConfigText: readGlobalConfigText,
57326
57351
  hasCredentials: providerHasCredentials,
57327
57352
  async resolveHarnessBinary(harness) {
57328
- const { resolveHarnessBinary } = await import("./harness-binary-CF3OHJwR.js");
57353
+ const { resolveHarnessBinary } = await import("./harness-binary-DFBkr1Wg.js");
57329
57354
  return resolveHarnessBinary(harness);
57330
57355
  },
57331
57356
  async getAuthMode(model) {
57332
- const { getProviderAuthMode } = await import("./runtime-command-BkQQs0N2.js");
57357
+ const { getProviderAuthMode } = await import("./runtime-command-D91mhWSL.js");
57333
57358
  return getProviderAuthMode(model);
57334
57359
  },
57335
57360
  async resolveCodexContext(harness, model, authMode) {
57336
- const { resolveCodexPolicyContext } = await import("./policy-context-De_w57FT.js");
57361
+ const { resolveCodexPolicyContext } = await import("./policy-context-CYqNhQra.js");
57337
57362
  return resolveCodexPolicyContext(harness, model, authMode);
57338
57363
  }
57339
57364
  };
@@ -58543,7 +58568,7 @@ async function syncOnce(options) {
58543
58568
  }
58544
58569
  if (options.afterSettle) await options.afterSettle(report);
58545
58570
  else if (config.evict) {
58546
- const { scanEligible } = await import("./evict-CgFggY65.js");
58571
+ const { scanEligible } = await import("./evict-LT5Wbo6F.js");
58547
58572
  await scanEligible({
58548
58573
  store,
58549
58574
  keys,
@@ -59565,131 +59590,6 @@ async function launchVaultContinuedConversation(conv, note) {
59565
59590
  })());
59566
59591
  }
59567
59592
  //#endregion
59568
- //#region ../../lib/projects/repo-url.ts
59569
- /** Schemes we are willing to hand to `git clone` from a dashboard request. */
59570
- const SUPPORTED_SCHEMES = new Set([
59571
- "https:",
59572
- "http:",
59573
- "ssh:"
59574
- ]);
59575
- /** Control characters and NUL, which have no business in a URL we spawn with. */
59576
- const CONTROL_CHARS = /[\u0000-\u001f\u007f]/;
59577
- /**
59578
- * `user@host:path/repo.git` — SCP syntax, not a URL.
59579
- *
59580
- * The host group excludes `:` and `/` so a scheme URL can never reach here, and
59581
- * the path must be non-empty. Any user is accepted, not just `git`: deploy keys
59582
- * routinely use another account.
59583
- */
59584
- const SCP_SOURCE = /^([^\s@/:]+)@([^\s@/:]+):(.+)$/;
59585
- /** Bare `owner/repo`, the only form we are allowed to invent a URL for. */
59586
- const GITHUB_SHORTHAND = /^([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+)$/;
59587
- /** Detect provider by host name. */
59588
- function providerForHostname(hostname) {
59589
- const host = hostname.toLowerCase();
59590
- if (host === "github.com" || host === "www.github.com") return "github";
59591
- if (host === "gitlab.com" || host === "www.gitlab.com") return "gitlab";
59592
- return null;
59593
- }
59594
- /**
59595
- * Strip the decoration that is metadata-only: surrounding slashes and one
59596
- * trailing `.git`. Exactly one, so `repo.git.git` keeps its odd-but-real name.
59597
- */
59598
- function normalizeRepoPath(rawPath) {
59599
- return rawPath.replace(/^\/+/, "").replace(/\/+$/, "").replace(/\.git$/, "");
59600
- }
59601
- /**
59602
- * The last path segment, decoded, or null when it cannot safely name a folder.
59603
- *
59604
- * Decoding matters because `%2F` and `%2E%2E` survive the segment split and
59605
- * would otherwise become a path separator or a traversal in a directory name.
59606
- */
59607
- function folderNameFor(repoPath) {
59608
- const segments = repoPath.split("/").filter(Boolean);
59609
- const last = segments[segments.length - 1];
59610
- if (!last) return null;
59611
- let decoded;
59612
- try {
59613
- decoded = decodeURIComponent(last);
59614
- } catch {
59615
- return null;
59616
- }
59617
- if (!decoded || decoded === "." || decoded === "..") return null;
59618
- if (decoded.includes("/") || decoded.includes("\\")) return null;
59619
- if (CONTROL_CHARS.test(decoded)) return null;
59620
- return decoded;
59621
- }
59622
- /** A repo path is usable when it names at least one non-empty, non-dot segment. */
59623
- function isUsableRepoPath(repoPath) {
59624
- const segments = repoPath.split("/").filter(Boolean);
59625
- if (segments.length === 0) return false;
59626
- const last = segments[segments.length - 1];
59627
- return last !== "." && last !== "..";
59628
- }
59629
- /** Parse an explicit scheme URL (`https://…`, `ssh://…`). */
59630
- function parseSchemeSource(source) {
59631
- let url;
59632
- try {
59633
- url = new URL(source);
59634
- } catch {
59635
- return null;
59636
- }
59637
- if (!SUPPORTED_SCHEMES.has(url.protocol)) return null;
59638
- if (!url.hostname) return null;
59639
- const repoPath = normalizeRepoPath(url.pathname);
59640
- if (!isUsableRepoPath(repoPath)) return null;
59641
- return {
59642
- hostname: url.hostname,
59643
- repoPath
59644
- };
59645
- }
59646
- /** Parse SCP syntax (`git@github.com:acme/private.git`). */
59647
- function parseScpSource(source) {
59648
- const match = SCP_SOURCE.exec(source);
59649
- if (!match) return null;
59650
- const hostname = match[2];
59651
- const repoPath = normalizeRepoPath(match[3]);
59652
- if (!isUsableRepoPath(repoPath)) return null;
59653
- return {
59654
- hostname,
59655
- repoPath
59656
- };
59657
- }
59658
- /**
59659
- * Parse a repository source into a transport URL plus best-effort metadata.
59660
- *
59661
- * Returns null when the input cannot become a clone source at all, which the
59662
- * caller renders as a `url-invalid` finding against the field.
59663
- */
59664
- function parseRepoUrl(raw) {
59665
- const source = raw.trim();
59666
- if (!source) return null;
59667
- if (CONTROL_CHARS.test(source)) return null;
59668
- if (source.startsWith("-")) return null;
59669
- const shorthand = GITHUB_SHORTHAND.exec(source);
59670
- if (shorthand) {
59671
- const owner = shorthand[1];
59672
- const repo = normalizeRepoPath(shorthand[2]);
59673
- if (!repo || repo === "." || repo === "..") return null;
59674
- return {
59675
- provider: "github",
59676
- slug: `${owner}/${repo}`,
59677
- folderName: repo,
59678
- cloneUrl: `https://github.com/${owner}/${repo}.git`
59679
- };
59680
- }
59681
- const parts = parseSchemeSource(source) ?? parseScpSource(source);
59682
- if (!parts) return null;
59683
- const provider = providerForHostname(parts.hostname);
59684
- if (provider && parts.repoPath.split("/").filter(Boolean).length < 2) return null;
59685
- return {
59686
- provider,
59687
- slug: provider ? parts.repoPath : null,
59688
- folderName: folderNameFor(parts.repoPath),
59689
- cloneUrl: source
59690
- };
59691
- }
59692
- //#endregion
59693
59593
  //#region ../../lib/projects/origin-match.ts
59694
59594
  function findProjectForGitOrigin(gitOrigin, projects) {
59695
59595
  const parsed = gitOrigin ? parseRepoUrl(gitOrigin) : null;
@@ -61751,7 +61651,7 @@ Continue the PLANNING session. Do NOT implement anything.
61751
61651
  const agentCwd = workspacePath;
61752
61652
  const harnessLaunch = await prepareHarnessLaunch("claude-code", { model: msgPlanningModel });
61753
61653
  if (existsSync$1(outputFile)) await rename(outputFile, join(planningDir, `output-${Date.now()}.jsonl`));
61754
- const { getAgentCommand } = await import("./settings-CFLNK2bY.js");
61654
+ const { getAgentCommand } = await import("./settings-DeJQpBJZ.js");
61755
61655
  const msgAgentCmd = getAgentCommand(msgPlanningModel);
61756
61656
  const msgPermissionFlags = getClaudePermissionFlagsString();
61757
61657
  const msgCmdWithArgs = msgAgentCmd.args.length > 0 ? `${msgAgentCmd.command} ${msgAgentCmd.args.join(" ")} ${msgPermissionFlags}` : `${msgAgentCmd.command} ${msgPermissionFlags}`;
@@ -62195,7 +62095,7 @@ const BANNER_STATES = new Set([
62195
62095
  ]);
62196
62096
  const defaultDeps$1 = {
62197
62097
  readStatus: async () => {
62198
- const { readSyncInputStatus } = await import("./sync-startup-gate-Cz-taE5H.js");
62098
+ const { readSyncInputStatus } = await import("./sync-startup-gate-BfacT-bh.js");
62199
62099
  return readSyncInputStatus();
62200
62100
  },
62201
62101
  runPanSync: async (args) => {
@@ -62415,7 +62315,7 @@ const getVersionRoute = HttpRouter.add("GET", "/api/version", Effect.promise(asy
62415
62315
  const version = await getOverdeckVersion();
62416
62316
  let supervisorUrl = null;
62417
62317
  try {
62418
- const { getSupervisorUrl } = await import("./supervisor-daYV0xlI.js");
62318
+ const { getSupervisorUrl } = await import("./supervisor-DRm9uLsZ.js");
62419
62319
  supervisorUrl = getSupervisorUrl();
62420
62320
  } catch {}
62421
62321
  return jsonResponse({
@@ -62427,11 +62327,11 @@ const getVersionRoute = HttpRouter.add("GET", "/api/version", Effect.promise(asy
62427
62327
  const getPrerequisitesRoute = HttpRouter.add("GET", "/api/prerequisites", Effect.gen(function* () {
62428
62328
  const request = yield* HttpServerRequest.HttpServerRequest;
62429
62329
  const refresh = new URL(request.url, "http://localhost").searchParams.get("refresh") === "1";
62430
- const { buildPrerequisitesReport } = yield* Effect.promise(() => import("./prerequisites-report-D4DsEecP.js"));
62330
+ const { buildPrerequisitesReport } = yield* Effect.promise(() => import("./prerequisites-report-BpRfGeIQ.js"));
62431
62331
  return jsonResponse(yield* Effect.promise(() => buildPrerequisitesReport({ refresh })));
62432
62332
  }));
62433
62333
  const getSetupDiagnosticsRoute = HttpRouter.add("GET", "/api/diagnostics/setup", Effect.promise(async () => {
62434
- const { collectSetupDiagnostics } = await import("./system-prerequisites-CJzu1FQH.js");
62334
+ const { collectSetupDiagnostics } = await import("./system-prerequisites-G9se0Lms.js");
62435
62335
  return jsonResponse(await collectSetupDiagnostics(await getOverdeckVersion()));
62436
62336
  }));
62437
62337
  const getSyncStatusRoute = HttpRouter.add("GET", "/api/sync-status", Effect.sync(() => jsonResponse(getSyncStatus())));
@@ -67336,7 +67236,7 @@ async function registerProjectFromPath(opts) {
67336
67236
  registerProject(key, projectConfig);
67337
67237
  const seededContextLayer = ensureProjectLayer(fullPath);
67338
67238
  try {
67339
- const { preTrustDirectory } = await import("./workspace-manager-Nljndsty.js");
67239
+ const { preTrustDirectory } = await import("./workspace-manager-D0auAuId.js");
67340
67240
  await preTrustDirectory(fullPath);
67341
67241
  } catch {}
67342
67242
  let hooksInstalled = 0;
@@ -67550,7 +67450,7 @@ async function finishProjectSetup(args) {
67550
67450
  });
67551
67451
  const seededContextLayer = ensureProjectLayer(canonicalRegistered);
67552
67452
  try {
67553
- const { preTrustDirectory } = await import("./workspace-manager-Nljndsty.js");
67453
+ const { preTrustDirectory } = await import("./workspace-manager-D0auAuId.js");
67554
67454
  await preTrustDirectory(canonicalRegistered);
67555
67455
  } catch {}
67556
67456
  let hooksInstalled = 0;
@@ -67566,6 +67466,9 @@ async function finishProjectSetup(args) {
67566
67466
  } catch {}
67567
67467
  }
67568
67468
  await excludeWorkspacesDir(canonicalRegistered, config.workspace?.workspaces_dir || "workspaces");
67469
+ try {
67470
+ await inferProjectGithubRepo(args.key, config);
67471
+ } catch {}
67569
67472
  const existingMain = getMainWorkspace(args.key);
67570
67473
  if (existingMain) {
67571
67474
  const canonicalMain = await canonicalizePath(existingMain.path);
@@ -68348,7 +68251,7 @@ init_io();
68348
68251
  init_specs();
68349
68252
  init_paths();
68350
68253
  async function getIssueDataService() {
68351
- const { getSharedIssueService } = await import("./issue-service-singleton-DxTRf-RV.js");
68254
+ const { getSharedIssueService } = await import("./issue-service-singleton-BbERjqoV.js");
68352
68255
  return getSharedIssueService();
68353
68256
  }
68354
68257
  /** Returns true if the path exists (any type). */
@@ -68741,7 +68644,7 @@ const getProjectReleaseStatusRoute = HttpRouter.add("GET", "/api/projects/:proje
68741
68644
  const projectKey = (yield* HttpRouter.params)["projectKey"] ?? "";
68742
68645
  return jsonResponse(yield* Effect.tryPromise({
68743
68646
  try: async () => {
68744
- const { fetchProjectReleaseStatus } = await import("./project-pipelines-BV_6EeMm.js");
68647
+ const { fetchProjectReleaseStatus } = await import("./project-pipelines-C0eawMQd.js");
68745
68648
  return fetchProjectReleaseStatus(projectKey);
68746
68649
  },
68747
68650
  catch: (err) => new Error(err instanceof Error ? err.message : String(err))
@@ -70973,7 +70876,7 @@ function checkpointWorkerUrl(moduleUrl = import.meta.url) {
70973
70876
  return new URL("./checkpoint-worker.js", moduleUrl);
70974
70877
  }
70975
70878
  async function runInline(operation, payload) {
70976
- const { claimTranscriptRange, commitTranscriptRange, releaseTranscriptRange, getTranscriptCheckpoint, listTranscriptCheckpoints } = await import("./checkpoints-DEk_xKPI.js");
70879
+ const { claimTranscriptRange, commitTranscriptRange, releaseTranscriptRange, getTranscriptCheckpoint, listTranscriptCheckpoints } = await import("./checkpoints-SNuYbtl9.js");
70977
70880
  switch (operation) {
70978
70881
  case "claimTranscriptRange": return claimTranscriptRange(payload);
70979
70882
  case "commitTranscriptRange": return commitTranscriptRange(payload);
@@ -75839,7 +75742,7 @@ function previewBrief(book) {
75839
75742
  return `${lines.join("\n")}\n`;
75840
75743
  }
75841
75744
  async function defaultStartOrderBook(book, project) {
75842
- const { startFlywheelRun } = await import("./flywheel-Ib4Qp5x6.js");
75745
+ const { startFlywheelRun } = await import("./flywheel-C-t-XYUt.js");
75843
75746
  return startFlywheelRun({
75844
75747
  cwd: resolveProjectPath(project),
75845
75748
  orders: book.id
@@ -78952,7 +78855,7 @@ function issueIdFromGateBranch(branch) {
78952
78855
  * without branch protection. The merge gate reads the verdict marker comments.
78953
78856
  */
78954
78857
  async function listScheduleCandidates(projectPath, deps = {}) {
78955
- const { listRepoPullRequests: listPrs, toChecksState } = await import("./derived-issue-state-BtoFumna.js");
78858
+ const { listRepoPullRequests: listPrs, toChecksState } = await import("./derived-issue-state-BaGJkxQq.js");
78956
78859
  const rows = await (deps.listPullRequests ?? listPrs)(projectPath);
78957
78860
  const candidates = /* @__PURE__ */ new Set();
78958
78861
  for (const row of rows) {
@@ -78966,7 +78869,7 @@ async function listScheduleCandidates(projectPath, deps = {}) {
78966
78869
  return [...candidates];
78967
78870
  }
78968
78871
  async function defaultForgeOf() {
78969
- const { forgeForProject } = await import("./derived-issue-state-BtoFumna.js");
78872
+ const { forgeForProject } = await import("./derived-issue-state-BaGJkxQq.js");
78970
78873
  return forgeForProject;
78971
78874
  }
78972
78875
  /** True when two SHAs (full or abbreviated) name the same commit. */
@@ -79001,15 +78904,15 @@ function latestAutoMergeAllowsSchedule(latest, pr) {
79001
78904
  return latest.status === "blocked";
79002
78905
  }
79003
78906
  async function defaultMergeGate(issueId) {
79004
- const { evaluateIssueMergeGate } = await import("./merge-gate-Bq6XDCW9.js");
78907
+ const { evaluateIssueMergeGate } = await import("./merge-gate-3O9zdlWW.js");
79005
78908
  return evaluateIssueMergeGate(issueId);
79006
78909
  }
79007
78910
  async function defaultPolicyRefusal() {
79008
- const { autoMergePolicyRefusal } = await import("./merge-train-ClvHbVeP.js");
78911
+ const { autoMergePolicyRefusal } = await import("./merge-train-BOKRD6nt.js");
79009
78912
  return (issueId) => autoMergePolicyRefusal(issueId);
79010
78913
  }
79011
78914
  async function defaultSchedule(issueId, canSchedule) {
79012
- const [{ postAutoMergeSchedulePayload }, { scheduleAutoMergeWithResult }] = await Promise.all([import("./merge-train-ClvHbVeP.js"), import("./merge-sync-BlUTLyjT.js")]);
78915
+ const [{ postAutoMergeSchedulePayload }, { scheduleAutoMergeWithResult }] = await Promise.all([import("./merge-train-BOKRD6nt.js"), import("./merge-sync-BlUTLyjT.js")]);
79013
78916
  return postAutoMergeSchedulePayload({ issueId }, { schedule: (input) => scheduleAutoMergeWithResult({
79014
78917
  ...input,
79015
78918
  canSchedule
@@ -79355,7 +79258,7 @@ const RESTART_MARKER = join$1(homedir(), ".overdeck", "dashboard-restarting.json
79355
79258
  * loads new content-hashed chunk filenames (no ERR_MODULE_NOT_FOUND after rebuild).
79356
79259
  */
79357
79260
  async function defaultLifecycleRunner(pending) {
79358
- const { postMergeLifecycle } = await import("./merge-agent-CVjeg02H.js");
79261
+ const { postMergeLifecycle } = await import("./merge-agent-C2UtoeTe.js");
79359
79262
  await postMergeLifecycle(pending.issueId, pending.projectPath, pending.sourceBranch);
79360
79263
  }
79361
79264
  async function runClaimedPendingLifecycle(claim, pending, runner, lifecycleDelayMs, startTime) {
@@ -79823,12 +79726,12 @@ function sameCommit(a, b) {
79823
79726
  return x.startsWith(y) || y.startsWith(x);
79824
79727
  }
79825
79728
  async function defaultReadTrackerIssue(issueId) {
79826
- const { readIssueFromTracker } = await import("./derived-issue-state-BtoFumna.js");
79729
+ const { readIssueFromTracker } = await import("./derived-issue-state-BaGJkxQq.js");
79827
79730
  return readIssueFromTracker(issueId);
79828
79731
  }
79829
79732
  async function defaultCachedTrackerIssue(issueId) {
79830
79733
  try {
79831
- const { getSharedIssueService } = await import("./issue-service-singleton-DxTRf-RV.js");
79734
+ const { getSharedIssueService } = await import("./issue-service-singleton-BbERjqoV.js");
79832
79735
  return getSharedIssueService().getTrackerIssue(issueId);
79833
79736
  } catch {
79834
79737
  return null;
@@ -79853,7 +79756,7 @@ function failureReason(result) {
79853
79756
  return result.error ?? result.message ?? `merge returned status ${result.statusCode ?? "unknown"}`;
79854
79757
  }
79855
79758
  async function defaultMergeIssue(issueId, headSha) {
79856
- const { triggerMerge } = await import("./merge-ops-C2DJ5UJh.js");
79759
+ const { triggerMerge } = await import("./merge-ops-BP9-OIjU.js");
79857
79760
  return triggerMerge(issueId, {
79858
79761
  kind: "normal",
79859
79762
  expectedHeadSha: headSha
@@ -81586,7 +81489,7 @@ startAgentOutputService();
81586
81489
  console.log("[overdeck] AgentOutputService started");
81587
81490
  if (process.env.OVERDECK_MODE === "desktop") (async () => {
81588
81491
  try {
81589
- const { provisionClaudeHooks } = await import("./claude-hooks-provision-DOMp0nce.js");
81492
+ const { provisionClaudeHooks } = await import("./claude-hooks-provision-BGL61BFy.js");
81590
81493
  const result = await provisionClaudeHooks();
81591
81494
  if (!result.ok) console.warn(`[overdeck] Claude hook provisioning skipped: ${result.reason}`);
81592
81495
  else if (result.changed) console.log(`[overdeck] Claude hooks provisioned: ${result.binariesSynced} scripts, registered ${result.registered.length} hook(s)${result.pruned.length ? `, pruned ${result.pruned.length} stale` : ""}`);
@@ -81787,10 +81690,22 @@ const stopGitHubRateLimitedTelemetry = registerGitHubRateLimitedTelemetry();
81787
81690
  ensureOperatorHash();
81788
81691
  let stopResourceRefreshServices = () => void 0;
81789
81692
  whenDashboardListening().then(async () => {
81790
- const { stopLegacyTldrDaemons } = await import("./legacy-tldr-cleanup-DJX9V9s4.js");
81693
+ const { stopLegacyTldrDaemons } = await import("./legacy-tldr-cleanup-RqGuveuz.js");
81791
81694
  const pids = await stopLegacyTldrDaemons();
81792
81695
  if (pids.length) console.log(`[overdeck] Stopped ${pids.length} legacy TLDR daemon(s) (PAN-4429)`);
81793
81696
  }).catch((err) => console.warn("[overdeck] Legacy TLDR daemon stop failed (non-fatal):", err));
81697
+ if (!isPeerDashboard) whenDashboardListening().then(async () => {
81698
+ const { inferMissingProjectTrackers } = await import("./infer-tracker-BJR_ATzw.js");
81699
+ const configured = await inferMissingProjectTrackers();
81700
+ if (configured.length === 0) return;
81701
+ await initTrackerConfigCache();
81702
+ const { getProjectPipelineMembership } = await import("./pipeline-membership-LZVPTNzz.js");
81703
+ for (const project of configured) {
81704
+ console.log(`[overdeck] Configured ${project.name}: github_repo ${project.githubRepo} (from its origin remote)`);
81705
+ getProjectPipelineMembership.invalidate(project.path);
81706
+ }
81707
+ await getSharedIssueService().invalidateTracker("github");
81708
+ }).catch((err) => console.warn("[overdeck] Tracker auto-detection failed (non-fatal):", err));
81794
81709
  (async () => {
81795
81710
  const store = await initEventStore();
81796
81711
  whenDashboardListening().then(async () => {
@@ -81896,7 +81811,7 @@ const handleShutdownSignal = async (signal) => {
81896
81811
  await stopAllKnowledgeViewers().catch((err) => console.warn("[knowledge-viewer] shutdown failed:", err?.message ?? err));
81897
81812
  await stopDeaconChild().catch((err) => console.warn("[deacon-supervisor] child shutdown failed:", err?.message ?? err));
81898
81813
  try {
81899
- const { killAllGateProcessGroups } = await import("./validation-C1j7--xs.js");
81814
+ const { killAllGateProcessGroups } = await import("./validation-UgpT2GVW.js");
81900
81815
  const reaped = killAllGateProcessGroups();
81901
81816
  if (reaped > 0) console.log(`[overdeck] reaped ${reaped} in-flight gate process group(s)`);
81902
81817
  } catch (err) {