@overdeck/desktop 0.49.1 → 0.50.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 (545) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-B_maCGZv.js} +2 -2
  4. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-CCqpFWiz.js} +2 -2
  5. package/server/activity-logger-B0X2JJwM.js +3 -0
  6. package/server/{activity-logger-BAVLrkR7.js → activity-logger-SlTXYCVf.js} +22 -4
  7. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-BJAfiY-C.js} +12 -7
  8. package/server/{agent-gc-5E0lgxI1.js → agent-gc-bhikjoJ_.js} +11 -11
  9. package/server/agent-idle-D-UQ7gDv.js +745 -0
  10. package/server/agent-state-BrUPf_7Z.js +3 -0
  11. package/server/{agent-state-Bb3UUxQm.js → agent-state-FABw8neJ.js} +682 -454
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-BAQApt97.js} +1 -1
  13. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-rDenYSlD.js} +5 -5
  14. package/server/agents-DixZjXWm.js +3 -0
  15. package/server/{agents-CqQJW75N.js → agents-DzpQidT8.js} +8 -8
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-BL1ABtW0.js} +20 -135
  17. package/server/archive-planning-D3gw32U9.js +2 -0
  18. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Cjdme0jS.js} +3 -3
  19. package/server/{assemble-DyTp2gSB.js → assemble-B_JgnCbG.js} +28 -9
  20. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-BesWchEi.js} +8 -7
  21. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-COLq639j.js} +3 -3
  22. package/server/{behavior-Bitko0mD.js → behavior-DCg8CIWC.js} +3 -3
  23. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-BDohuMRt.js} +2 -2
  24. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-ENa_hW_V.js} +2 -2
  25. package/server/build-info-Dx2qrVhb.js +2 -0
  26. package/server/{build-info-DTX8JwVP.js → build-info-WuZT6xyi.js} +3 -3
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-CSZ7aVQF.js} +26 -9
  28. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-DXhGRvg4.js} +1 -1
  29. package/server/checkpoint-worker.js +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-DUkUsPVS.js} +2 -2
  31. package/server/{checkpoints-DRALkfDS.js → checkpoints-tm_w6Y4V.js} +1 -1
  32. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-CTh9zxEi.js} +1 -1
  33. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-fRofvhTN.js} +2 -2
  34. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-DLrb9ovz.js} +18 -3
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-BYnXaTVc.js} +2 -2
  36. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-CMS5Jab5.js} +1 -1
  37. package/server/cli-BflmtEFM.js +2 -0
  38. package/server/{cli-Do8UpLoI.js → cli-CoQou1t_.js} +11 -11
  39. package/server/{cliproxy-CX6jHRDP.js → cliproxy-DXDQcR3I.js} +52 -17
  40. package/server/cliproxy-DdhFpcXU.js +3 -0
  41. package/server/{close-issue-J0_eWYT1.js → close-issue-CpQ0BWg-.js} +5 -5
  42. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-CdcJRvUx.js} +13 -12
  43. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-TymtZM37.js} +1 -1
  44. package/server/{codex-icapA4om.js → codex-BValsmtK.js} +1 -1
  45. package/server/{codex-OOea7lXs.js → codex-DYyZL8JD.js} +16 -10
  46. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-CVjbdGKt.js} +3 -3
  47. package/server/{config-Cjleh3_U.js → config-CvKH7r7W.js} +1 -1
  48. package/server/{config-tucKBCCc.js → config-NxI9Yl2f.js} +2 -2
  49. package/server/{config-DC75T4Mr.js → config-_qaa1UXH.js} +2 -2
  50. package/server/{config-yaml-BwOEANMr.js → config-yaml-D60AnTIu.js} +55 -15
  51. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-0dD1kxjN.js} +1 -1
  52. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-hAUCL-un.js} +5 -5
  53. package/server/{context-layers-CSPGc2Hb.js → context-layers-CdpabJj0.js} +3 -3
  54. package/server/context-layers-Ds1MnEFI.js +4 -0
  55. package/server/{continue-U3Af0jUq.js → continue-CnvrUfxw.js} +3 -3
  56. package/server/{control-settings-5k6ixdFW.js → control-settings-Db0uXgVM.js} +310 -7
  57. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-B-1KETG9.js} +8 -8
  58. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzMXGRiJ.js} +1 -1
  59. package/server/{conversation-service-BxrB5lUT.js → conversation-service-BL-asWPX.js} +1 -1
  60. package/server/{conversation-service-BteE4ELK.js → conversation-service-BxIOd5ay.js} +21 -7
  61. package/server/conversations-CEMfwMt-.js +3 -0
  62. package/server/{conversations-DhwxsOru.js → conversations-nS6QgYpD.js} +12 -7
  63. package/server/cost-3FyqKK56.js +838 -0
  64. package/server/{cost-Bnf9NUC5.js → cost-Cctc-Q9M.js} +3 -3
  65. package/server/{cost-CQKI6OCu.js → cost-DTuIRE4y.js} +2 -2
  66. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DfmvLT9L.js} +3 -3
  67. package/server/{dag-DI9LaK_q.js → dag-o-dUpw1L.js} +6 -19
  68. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
  69. package/server/dashboard-db-worker.js +61 -11
  70. package/server/{deacon-TPYssFYt.js → deacon-CsisLmPt.js} +1735 -172
  71. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-DkdkQS5p.js} +3 -3
  72. package/server/deacon-e6py3jkM.js +4 -0
  73. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BCjHiGAY.js} +1 -1
  74. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-CMQswEHX.js} +2 -2
  75. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
  76. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BzaE76Xo.js} +3 -3
  77. package/server/deacon.js +11 -11
  78. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-Bs3hxIn6.js} +3 -3
  79. package/server/dead-end-trip-DUbiRMtT.js +2 -0
  80. package/server/delivery-DhZGRShH.js +3 -0
  81. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-B8sKkA8h.js} +8 -8
  82. package/server/deploy-queue--smqHLhe.js +2 -0
  83. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-CCGWXFkp.js} +2 -2
  84. package/server/{deploy-window-CNT6fOff.js → deploy-window-YuJewzmC.js} +4 -4
  85. package/server/{deploy-window-BMk5_oX6.js → deploy-window-hgsvZ3UZ.js} +1 -1
  86. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-4SBloJHV.js} +2 -2
  87. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-BiJhwFNi.js} +3 -3
  88. package/server/{dist-CPTO_zMR.js → dist-CoR2sivG.js} +1 -1
  89. package/server/dist-FHv1s5ez.js +3 -0
  90. package/server/{docker-B7qUZptz.js → docker-CWO7dcIP.js} +3 -3
  91. package/server/{docker-KR3zSFKY.js → docker-DQzyMXkd.js} +1 -1
  92. package/server/{dod-gK835UMf.js → dod-BAk5arLF.js} +1 -1
  93. package/server/{done-preflight-CksRvh49.js → done-preflight-CGFA0M1b.js} +1 -1
  94. package/server/{done-preflight-Bk8aExAL.js → done-preflight-Cx9JGznT.js} +5 -5
  95. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  96. package/server/durable-review-pipeline-BOEZ0chh.js +3 -0
  97. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-Djx_lvFd.js} +11 -2
  98. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-Dk6ZMOUC.js} +1 -1
  99. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-DzYBBwnM.js} +4 -4
  100. package/server/{esm-shims-1htPASWs.js → esm-shims-deFq5Hhl.js} +1 -1
  101. package/server/{event-store-BgEjNsvk.js → event-store-C50Qt-f1.js} +1 -1
  102. package/server/{event-store-D7qcJXuZ.js → event-store-DTns2XZP.js} +5 -5
  103. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-Bu1Qrg6v.js} +1 -1
  104. package/server/{events-BIKGJZOT.js → events-B6xW8Cpm.js} +3 -3
  105. package/server/{dist-src-BM9eudEd.js → factory-CWVKwKFE.js} +714 -2
  106. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-vaxRN3WO.js} +3 -3
  107. package/server/{features-CGopJXdU.js → features-DXWwktJB.js} +2 -2
  108. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-CXAYe2rU.js} +2 -2
  109. package/server/{feedback-target-CkyLYohm.js → feedback-target-DSVpi0gT.js} +1 -1
  110. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-yPD_wclF.js} +10 -10
  111. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-BzN4qvaP.js} +1 -1
  112. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-Ds1Wjsz4.js} +5 -5
  113. package/server/{flywheel-DXI_WITn.js → flywheel-BCZS-FlW.js} +1 -1
  114. package/server/{flywheel-BwYPDlhK.js → flywheel-CC4gE_rx.js} +15 -15
  115. package/server/{flywheel-C7yek87O.js → flywheel-DWKd7bMc.js} +79 -29
  116. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-DDT3i57u.js} +1 -1
  117. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-DJwH2KpL.js} +17 -15
  118. package/server/forge-4VVCRcF7.js +2 -0
  119. package/server/{forge-DYX9sKzG.js → forge-CHADjOFs.js} +2 -2
  120. package/server/{from-DAdMxC29.js → from-C3dzmjSO.js} +1 -1
  121. package/server/{fs-lock-cw25uO_E.js → fs-lock-DQ_gUxfq.js} +2 -2
  122. package/server/{fts-operations-D_rzLxX5.js → fts-operations-asZo2fh1.js} +3 -3
  123. package/server/git-info-DMOSfJ9I.js +148 -0
  124. package/server/{git-utils-Y0zG25ez.js → git-utils-BAMwn9Nf.js} +1 -1
  125. package/server/{git-utils-DV4B9TRl.js → git-utils-BdHk8y7g.js} +4 -4
  126. package/server/{github-app-C33lDk9Z.js → github-app-BWziYCf3.js} +1 -1
  127. package/server/{github-app-4UX8VIr8.js → github-app-BlMSzSTw.js} +2 -2
  128. package/server/{github-client-nPj5ckZO.js → github-client-OK24qpol.js} +1 -1
  129. package/server/{github-client-DkJVR908.js → github-client-w6j5nVlz.js} +3 -3
  130. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-bGcsEvLE.js} +2 -2
  131. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-DChiynaB.js} +2 -2
  132. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-BplBEbwn.js} +4 -4
  133. package/server/{health-events-jMfxrElt.js → health-events-BTqsmunw.js} +1 -1
  134. package/server/{health-events-DlX_FVAB.js → health-events-Bk3LjaJ9.js} +2 -2
  135. package/server/{hooks-NQ19vvlB.js → hooks-DJR1yR9w.js} +2 -2
  136. package/server/{hooks-W3REcb3h.js → hooks-EndRNrx9.js} +1 -1
  137. package/server/{hume-BFkid2PO.js → hume-1FJmNDTq.js} +2 -2
  138. package/server/hume-gXLmRhmN.js +3 -0
  139. package/server/{identity-Bwh6VGeL.js → identity-C3s8lyp0.js} +3 -3
  140. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-CBelVOE3.js} +1 -1
  141. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-DtoI4al6.js} +4 -4
  142. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-B7khcBdQ.js} +1 -1
  143. package/server/{infra-KTp9KV9u.js → infra-CJRi_5Wu.js} +36 -7
  144. package/server/{injection-67YyU6SC.js → injection-ADWQ3D0s.js} +8 -8
  145. package/server/{injection-BxbZKPDh.js → injection-BWsgHvrL.js} +1 -1
  146. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-CCfNJjKr.js} +12 -12
  147. package/server/inspect-agent-Dhp3hCGp.js +2 -0
  148. package/server/{internal-token-B-z-sGBH.js → internal-token-BCTEqUCX.js} +1 -1
  149. package/server/{internal-token-zY75jrRJ.js → internal-token-BeIWG_kT.js} +2 -2
  150. package/server/{io-DfvO2xyh.js → io-BCtZoXHo.js} +5 -5
  151. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-CiYAa6bX.js} +7 -7
  152. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-BETNVVLq.js} +206 -29
  153. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DaKN57sx.js} +1 -1
  154. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-1Q0ER8Yc.js} +1 -1
  155. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-C_sZ0HjP.js} +124 -11
  156. package/server/issue-title-fallback-B91iD66g.js +120 -0
  157. package/server/{issues-CkvUoAnq.js → issues-RGHQUKhB.js} +2 -2
  158. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-Dfs1dlYE.js} +3 -3
  159. package/server/jsonl-resolver-bFtftCDd.js +324 -0
  160. package/server/{kimi-code-DoMoGqIu.js → kimi-code-BxkDgaj4.js} +1 -1
  161. package/server/{kimi-code-C26gmGxM.js → kimi-code-CNYRA8Dd.js} +14 -12
  162. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-OcWwmOqF.js} +2 -2
  163. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-CefxK9tL.js} +3 -3
  164. package/server/{lifecycle-B0rL38D3.js → lifecycle-DDZ7w-BY.js} +6 -6
  165. package/server/{lifecycle-Bg44O-9x.js → lifecycle-DVXyUil2.js} +2 -2
  166. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-D1oBiMce.js} +1 -1
  167. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-D7N0vQNj.js} +5 -5
  168. package/server/{linear-client-B0cIkTs4.js → linear-client-DUN7zCeb.js} +3 -3
  169. package/server/{linear-client-6V2E-DSa.js → linear-client-TL32snOy.js} +1 -1
  170. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-CtRKSHy5.js} +1 -1
  171. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-bB0CPyjh.js} +5 -5
  172. package/server/memory-fts-worker.js +1 -1
  173. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cvv_9K0M.js} +88 -22
  174. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-C6DJJQRA.js} +38 -14
  175. package/server/{merge-BGWcBxku.js → merge-DOCR6pHi.js} +1 -1
  176. package/server/{merge-vz80RvSE.js → merge-FTk4LsnM.js} +3 -3
  177. package/server/{merge-agent-GWhmnxFk.js → merge-agent-C-dsN9se.js} +37 -33
  178. package/server/{merge-agent-BRSz26Oh.js → merge-agent-D-4_iQgy.js} +2 -2
  179. package/server/{merge-batch-CFMEtTxv.js → merge-batch-BJjzUUL7.js} +1 -1
  180. package/server/{merge-completeness-CP347umA.js → merge-completeness-BOtBUwTU.js} +4 -4
  181. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-CoLJxfUY.js} +1 -1
  182. package/server/merge-eligibility-C4rTS97F.js +3 -0
  183. package/server/merge-eligibility-D7wRnJbj.js +51 -0
  184. package/server/merge-ops-Cf02szJ5.js +2 -0
  185. package/server/merge-rebase-Bj7eJAG4.js +2 -0
  186. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-KBw4rdh3.js} +2 -2
  187. package/server/{merge-set-DsGW8fmc.js → merge-set-CVfEM57p.js} +1 -1
  188. package/server/{merge-set-eiE2nC6C.js → merge-set-CyW-xSn4.js} +4 -4
  189. package/server/{merge-sync-CM2-myXu.js → merge-sync-CYGsJy0u.js} +1 -1
  190. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-YLvOPAry.js} +2 -2
  191. package/server/{merge-train-BOu3fN7O.js → merge-train-VxLn8Ms4.js} +4 -4
  192. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-D0y4hBB9.js} +4 -4
  193. package/server/{merge-verification-BRp08IzI.js → merge-verification-BfJRNMiD.js} +6 -6
  194. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-Bh5fKG_b.js} +4 -4
  195. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-Ci9oeFAe.js} +1 -1
  196. package/server/messaging-Dfbhgjd6.js +3 -0
  197. package/server/{multipart-parser-OAuW7824.js → multipart-parser-BYwfKOVU.js} +2 -2
  198. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-DjMQRkId.js} +1 -1
  199. package/server/node_modules/.package-lock.json +24 -24
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +31 -5
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  226. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  227. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  228. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  229. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  230. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  231. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +7 -7
  232. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  233. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
  234. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
  235. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  236. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  237. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  238. package/server/node_modules/@types/node/README.md +1 -1
  239. package/server/node_modules/@types/node/buffer.buffer.d.ts +5 -5
  240. package/server/node_modules/@types/node/crypto.d.ts +2 -2
  241. package/server/node_modules/@types/node/http.d.ts +16 -0
  242. package/server/node_modules/@types/node/http2.d.ts +10 -2
  243. package/server/node_modules/@types/node/package.json +2 -2
  244. package/server/node_modules/@types/node/process.d.ts +52 -0
  245. package/server/node_modules/@types/node/quic.d.ts +210 -28
  246. package/server/node_modules/@types/node/sqlite.d.ts +6 -2
  247. package/server/node_modules/@types/node/test.d.ts +36 -0
  248. package/server/node_modules/ansi-regex/index.js +3 -2
  249. package/server/node_modules/ansi-regex/package.json +1 -1
  250. package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
  251. package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
  252. package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
  253. package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
  254. package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
  255. package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
  256. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  257. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  258. package/server/node_modules/gaxios/package.json +3 -3
  259. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +11 -5
  260. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  261. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  262. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  263. package/server/node_modules/msgpackr/dist/index.js +11 -5
  264. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  265. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  266. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  267. package/server/node_modules/msgpackr/dist/node.cjs +11 -5
  268. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  269. package/server/node_modules/msgpackr/dist/test.js +11 -5
  270. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  271. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
  272. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  273. package/server/node_modules/msgpackr/package.json +1 -1
  274. package/server/node_modules/msgpackr/unpack.js +11 -5
  275. package/server/node_modules/picomatch/lib/parse.js +10 -1
  276. package/server/node_modules/picomatch/lib/scan.js +30 -18
  277. package/server/node_modules/picomatch/package.json +1 -1
  278. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-CnP0K2v3.js} +2 -2
  279. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-nFUlquZt.js} +24 -23
  280. package/server/package-lock.json +25 -25
  281. package/server/package.json +1 -1
  282. package/server/{pan-dir-DDd91kMb.js → pan-dir-B4NfzOf3.js} +5 -5
  283. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-8WbU0y1z.js} +188 -69
  284. package/server/{paths-CRLnDgcI.js → paths-rETQhTF2.js} +2 -2
  285. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-yAwDuGS4.js} +2 -2
  286. package/server/{pickup-BjJsSX12.js → pickup-Dle6k9Xt.js} +1 -1
  287. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-CeWhQzXC.js} +5 -5
  288. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-BV4hdkHm.js} +1 -1
  289. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-C9ykcjsn.js} +1 -1
  290. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-Ba0wJNCR.js} +17 -12
  291. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-C9E22B2W.js} +1 -1
  292. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-B5DPXvnr.js} +1 -1
  293. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-p190L97e.js} +2 -2
  294. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-OQoK8Ckg.js} +3 -3
  295. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DFaf7OI1.js} +4 -4
  296. package/server/prd-locations-F2oLSAhy.js +124 -0
  297. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-CUsa6U59.js} +2 -2
  298. package/server/project-repos-BVdi9-ch.js +3 -0
  299. package/server/{project-repos-B4MK48j4.js → project-repos-CsfvLtmr.js} +29 -3
  300. package/server/project-resource-refresh-queue-BehrH4Ai.js +865 -0
  301. package/server/project-resource-refresh-queue-D2110Guc.js +2 -0
  302. package/server/{projects-DvPEAP18.js → projects-BMuEf14J.js} +1 -1
  303. package/server/{prompts-BiS5I2tZ.js → prompts-CKpDt8Jn.js} +2 -2
  304. package/server/providers-Buv2wmFU.js +3 -0
  305. package/server/{providers-DrfK0Ip8.js → providers-CxPKmyif.js} +7 -7
  306. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-DZOQVqV1.js} +4 -4
  307. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-oKeXcbO1.js} +1 -1
  308. package/server/public/assets/{dist-CSmUXazd.js → dist-2qPmeRzT.js} +3 -3
  309. package/server/public/assets/{dist-D0ryefak.js → dist-ClBlE-Nm.js} +1 -1
  310. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-BwdG9fQv.js} +1 -1
  311. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-BzGNdskQ.js} +1 -1
  312. package/server/public/assets/index-CdPveU3M.css +1 -0
  313. package/server/public/assets/index-Cg6tdZoY.js +860 -0
  314. package/server/public/assets/{linear-BPE7oswm.js → linear-DpEt1TJb.js} +1 -1
  315. package/server/public/assets/mermaid-GHXKKRXX-6KBD_3T_.js +1 -0
  316. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-9BpM4oRJ.js} +1 -1
  317. package/server/public/assets/{prod-aKDYUrXQ.js → prod-CzJiNNEG.js} +4 -4
  318. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BXWVAoZx.js} +1 -1
  319. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-5oxodGEw.js} +1 -1
  320. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-BChDrHxZ.js} +1 -1
  321. package/server/public/index.html +2 -2
  322. package/server/pull-requests-CmlandI7.js +2 -0
  323. package/server/{pull-requests-BcHIsFJv.js → pull-requests-T0OV0Vn4.js} +3 -3
  324. package/server/{rally-B1OMtzch.js → rally-CUqj2oIN.js} +3 -3
  325. package/server/rally-DYIn9R2U.js +3 -0
  326. package/server/{rally-api-ShZ4kvn0.js → rally-api-BFPb2oSq.js} +2 -2
  327. package/server/{rally-api-u_vkr5c_.js → rally-api-BoucQG1u.js} +1 -1
  328. package/server/{rally-client-D6Feq1Ka.js → rally-client-16iObny7.js} +5 -5
  329. package/server/{rally-client-DgZvUZqX.js → rally-client-CsqLjLLa.js} +1 -1
  330. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  331. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  332. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-BcBVFJp3.js} +2 -2
  333. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-CyXMrj6K.js} +7 -7
  334. package/server/reconciler-caYiRnPy.js +657 -0
  335. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-3JzPOune.js} +7 -7
  336. package/server/{record-By-wp6pg.js → record-DYOg97Iv.js} +1 -1
  337. package/server/{record-update-D23jPU6b.js → record-update-BPqpBu3O.js} +9 -7
  338. package/server/{record-update-ByGtIlUK.js → record-update-CDPEX7BH.js} +1 -1
  339. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-CpfW6LCJ.js} +43 -10
  340. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-xqKC07Gy.js} +1 -1
  341. package/server/{release-engine-Crc0Tjx-.js → release-engine-C_OOhCaK.js} +5 -5
  342. package/server/{release-set-DDXwbIK7.js → release-set-DOIDz2vw.js} +3 -3
  343. package/server/{remote-oEMfXlwT.js → remote-BTh-sjpX.js} +3 -3
  344. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-DbbN7vSm.js} +6 -6
  345. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-MuXx2gWm.js} +1 -1
  346. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-LcWCpAm2.js} +13 -13
  347. package/server/{remote-CBpLi4Yy.js → remote-xY0B43Ho.js} +3 -3
  348. package/server/{resolver-CuAULbLs.js → resolver-C2QKOf09.js} +2 -2
  349. package/server/{resolver-C8rooxoz.js → resolver-D4nsxfGo.js} +31 -8
  350. package/server/resume-ByUrJUNX.js +3 -0
  351. package/server/{review-agent-7C2w5CzU.js → review-agent-BRBTm1qE.js} +43 -55
  352. package/server/review-agent-Caodi0PX.js +3 -0
  353. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DgaDlbO4.js} +6 -6
  354. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-BBvyuRLC.js} +20 -11
  355. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DCzWMMvE.js} +1 -1
  356. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-THHMKlXJ.js} +3 -3
  357. package/server/{review-status-CUnjjOUu.js → review-status-Bge_3XTR.js} +1 -1
  358. package/server/{review-status-DBnR5t4z.js → review-status-DpniqzPT.js} +113 -44
  359. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-D7sM720S.js} +3 -3
  360. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-PDI4-faj.js} +3 -3
  361. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  362. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  363. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-C6ZKTI8f.js} +11 -8
  364. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-CvpHWyvR.js} +1 -1
  365. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-B2ojHFH5.js} +8 -8
  366. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-tyMoLT2L.js} +1 -1
  367. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Cy_1pnIj.js} +7 -7
  368. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-DjrJ64eS.js} +1 -1
  369. package/server/{rollup-DZwH4CLs.js → rollup-Cp0KEoOu.js} +1 -1
  370. package/server/{rollup-QCwYcBdP.js → rollup-DU3xBQu2.js} +8 -8
  371. package/server/{scanner-2aHeLC3W.js → scanner-BFKG3Gxv.js} +8 -8
  372. package/server/{search-DwHYaj66.js → search-DhtKwbBC.js} +2 -2
  373. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  374. package/server/{sequence-io-POKWdusG.js → sequence-io-C-Q19Jez.js} +4 -4
  375. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-eN2P2lDz.js} +6 -6
  376. package/server/server.js +1499 -1350
  377. package/server/{service-BLb_CyPL.js → service-CThO0Sar.js} +80 -774
  378. package/server/{session-fork-DcTzVwex.js → session-fork-ZYTHtpBh.js} +2 -2
  379. package/server/settings-ByDRfuuE.js +2 -0
  380. package/server/{settings-Clw8UVNs.js → settings-CTywpFw5.js} +2 -2
  381. package/server/{settings-B9-H2K_E.js → settings-nAT-eK56.js} +3 -3
  382. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BHZKPJhq.js} +3 -3
  383. package/server/{shadow-state-CEGrrECe.js → shadow-state-BTLi4Axs.js} +2 -2
  384. package/server/{shadow-state-e7250VUx.js → shadow-state-CZ_LnPsi.js} +1 -1
  385. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-CPLlPHdn.js} +2 -2
  386. package/server/{ship-log-7BnQHuKU.js → ship-log-D-CphNZx.js} +1 -1
  387. package/server/{ship-record-CwUX6Afo.js → ship-record-BaBla0l_.js} +7 -7
  388. package/server/{ship-record-BgUPnpT0.js → ship-record-BlvX8-xv.js} +1 -1
  389. package/server/{ship-status-Ce3_3edi.js → ship-status-rQbPQBsF.js} +2 -2
  390. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-CUXn8mfX.js} +1 -1
  391. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D1CNGdZx.js} +7 -7
  392. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-DCmO6COk.js} +19 -19
  393. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-DfEWyrVV.js} +2 -2
  394. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-BMv3K54P.js} +1 -1
  395. package/server/{specialist-context-cHwpcXSh.js → specialist-context-C1-CfYQb.js} +5 -5
  396. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-BDKoz5Z9.js} +2 -2
  397. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-BJQFkpdG.js} +3 -3
  398. package/server/specialists-CYt1U3Zm.js +4 -0
  399. package/server/{specialists-8LcQi9Np.js → specialists-D6MUU31Q.js} +21 -272
  400. package/server/{specialists-DocAK-7A.js → specialists-DhS79T9v.js} +369 -691
  401. package/server/{specialists-xXcJHAyg.js → specialists-Dx0zRTxX.js} +1 -1
  402. package/server/specialists-registry-BRLCi61y.js +3 -0
  403. package/server/specialists-registry-Bng0OFGH.js +277 -0
  404. package/server/specs-oRGyfz6C.js +3 -0
  405. package/server/{src-C2TAxwki.js → src-C7gGe4KU.js} +6 -6
  406. package/server/{src-DudQNYVw.js → src-CdwN6WY6.js} +344 -7
  407. package/server/{src-DUVvEA8Q.js → src-DMosbuSJ.js} +3 -3
  408. package/server/{stack-health-DKT4ySnA.js → stack-health-BKfNaqMm.js} +3 -3
  409. package/server/{stack-health-CbyiYS9H.js → stack-health-Bz711z1Y.js} +1 -1
  410. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-DMRLb5R2.js} +5 -5
  411. package/server/{staleness-D8UTEXV5.js → staleness-CxZaIhrn.js} +1 -1
  412. package/server/{staleness-BjOAq9-d.js → staleness-r_dkMyMG.js} +1 -1
  413. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-CBWqSWV2.js} +8 -8
  414. package/server/{state-home-DhAZlk5k.js → state-home-DhsMqg8W.js} +2 -2
  415. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  416. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C2Ouyd6e.js} +6 -6
  417. package/server/{state-mirror-Do7pag7W.js → state-mirror-BPXciz84.js} +3 -3
  418. package/server/stuck-remediation-DALieAkx.js +2 -0
  419. package/server/stuck-remediation-kta3KN7c.js +774 -0
  420. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-D_ICP7TI.js} +3 -3
  421. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-CojrFKb6.js} +2 -2
  422. package/server/{summary-fork-CZ88rhVx.js → summary-fork-DhhaFhxZ.js} +113 -30
  423. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  424. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  425. package/server/supervisor/pty-supervisor.js +3 -3
  426. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  427. package/server/supervisor-DSSWo4M2.js +2 -0
  428. package/server/{supervisor-D4v0WfiQ.js → supervisor-DqH-laVL.js} +4 -4
  429. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-LF8ZF_hc.js} +3 -3
  430. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-CGFF8uQI.js} +2 -2
  431. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-DSoOFUIV.js} +1 -1
  432. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-Lsx0jUUV.js} +2 -2
  433. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-DMwomEG1.js} +16 -16
  434. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-Cu0D6BYe.js} +6 -6
  435. package/server/{test-verdict-BWm3hgDj.js → test-verdict-9mvl7pQn.js} +1 -1
  436. package/server/{test-verdict-BWtRmdiR.js → test-verdict-oNSv1rVr.js} +2 -2
  437. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-CRSAkhBx.js} +1 -1
  438. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-McqCk2X7.js} +2 -2
  439. package/server/tmux-CYucGrTl.js +4 -0
  440. package/server/{tmux-BqXzRuaH.js → tmux-wnT_hg-s.js} +91 -19
  441. package/server/{token-CO3INKbh.js → token-BdfZLRg1.js} +2 -2
  442. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  443. package/server/token-util-DfUS3Lpp.js +3 -0
  444. package/server/{tracker-config-DVzhaUxO.js → tracker-config-tfAOWgng.js} +2 -2
  445. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-Dbg_pVZg.js} +2 -2
  446. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-DoQvQ6oJ.js} +1 -1
  447. package/server/{tunnel-DauSR-rs.js → tunnel-B1MNIgkL.js} +1 -1
  448. package/server/{tunnel-CwOnS-PB.js → tunnel-skW68j9B.js} +3 -3
  449. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  450. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  451. package/server/{types-DjpLVpsj.js → types-PW4zkxCM.js} +1 -1
  452. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  453. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-ly8ZwtfC.js} +5 -5
  454. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-BBaMwfdc.js} +5 -5
  455. package/server/{uat-train-DVUNW03P.js → uat-train-BBEiYSep.js} +0 -0
  456. package/server/{uat-train-COSy-vEX.js → uat-train-D7Ran2FB.js} +1 -1
  457. package/server/{validate-Dvv83iBx.js → validate-BYcBcBwg.js} +3 -3
  458. package/server/{validation-DlHafKzu.js → validation-BfG2jW5C.js} +9 -6
  459. package/server/{validation-BdCjzWLN.js → validation-nSrYiYvA.js} +1 -1
  460. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-Cmhgq4b_.js} +1 -1
  461. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-DglwaHke.js} +1 -1
  462. package/server/{verification-runner-DwP2fUEF.js → verification-runner-BEq5ZF-h.js} +53 -27
  463. package/server/{verification-runner-C6wdZda2.js → verification-runner-CFjAuv9u.js} +1 -1
  464. package/server/{vtt-parser-luerJpYT.js → vtt-parser-Va--tv27.js} +1 -1
  465. package/server/work-agent-prompt-BnhKNAg7.js +3 -0
  466. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CaD2ue8m.js} +14 -14
  467. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-0nJ-6UeA.js} +2 -2
  468. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-D8NEN5KD.js} +1 -1
  469. package/server/workflows-BtHRlFIm.js +2 -0
  470. package/server/{workflows-BYwR2aIN.js → workflows-C7mxM1qc.js} +114 -41
  471. package/server/{workspace-iTnTycOB.js → workspace-BAhMgMaO.js} +3 -3
  472. package/server/{workspace-B-QJa3Ps.js → workspace-Dbqv9ehn.js} +1 -1
  473. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-B_3kyyxJ.js} +4 -4
  474. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-Bpa3xoni.js} +1 -1
  475. package/server/{workspace-config-D0CavVtz.js → workspace-config-D-bNq2CF.js} +1 -1
  476. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-BrbX90Rm.js} +1 -1
  477. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CM8RCrSc.js} +17 -17
  478. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BEOwJSdK.js} +1 -1
  479. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-Cu6yfxBS.js} +2 -2
  480. package/server/{workspaces-BlpbOPZ7.js → workspaces-C7LAuZfe.js} +140 -709
  481. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  482. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  483. package/sync-sources/rules/agent-message-delivery.md +21 -14
  484. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  485. package/sync-sources/rules/pan-handoff-focus-limit.md +14 -5
  486. package/sync-sources/rules/ste-writing.md +17 -0
  487. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  488. package/sync-sources/rules/writing-style.md +3 -2
  489. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  490. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  491. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  492. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +230 -0
  493. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  494. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  495. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  496. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  497. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  498. package/sync-sources/skills/pan-handoff/SKILL.md +24 -6
  499. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  500. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  501. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  502. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  503. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  504. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  505. package/server/activity-logger-BejO16Am.js +0 -3
  506. package/server/agent-state-DH_-Jkua.js +0 -3
  507. package/server/agents-megfmQHM.js +0 -3
  508. package/server/archive-planning-C-H9cM_J.js +0 -2
  509. package/server/build-info-PQlh_Rhb.js +0 -2
  510. package/server/cli-TaZspPHS.js +0 -2
  511. package/server/cliproxy-36ncAXlu.js +0 -3
  512. package/server/context-layers-CF6zHws4.js +0 -4
  513. package/server/conversations-AnGJ5rtX.js +0 -3
  514. package/server/deacon-BEH-IY0v.js +0 -5
  515. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  516. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  517. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  518. package/server/delivery-cJM6zRjJ.js +0 -3
  519. package/server/deploy-queue-CmVBZEja.js +0 -2
  520. package/server/dist-VKBfkdi7.js +0 -3
  521. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  522. package/server/factory-D4V2wd_V.js +0 -717
  523. package/server/forge-CrP1L3i6.js +0 -2
  524. package/server/hume-1ubD_6O7.js +0 -3
  525. package/server/inspect-agent-CfxERkNt.js +0 -2
  526. package/server/merge-ops-DtHx17Vd.js +0 -2
  527. package/server/merge-rebase-BvB4UuNS.js +0 -2
  528. package/server/project-repos-BJiShUsN.js +0 -3
  529. package/server/providers-CStNGwze.js +0 -3
  530. package/server/public/assets/index-BFEwfmqX.js +0 -860
  531. package/server/public/assets/index-_USwyTAT.css +0 -1
  532. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  533. package/server/pull-requests-C1Cqp2yo.js +0 -2
  534. package/server/rally-CjayjUIl.js +0 -3
  535. package/server/resume-D7JuMCRQ.js +0 -3
  536. package/server/review-agent-BUNTVJK2.js +0 -2
  537. package/server/settings-DBWB1gsG.js +0 -2
  538. package/server/specialists-D8gsOCwh.js +0 -3
  539. package/server/specs-BqkrRnU9.js +0 -3
  540. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  541. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  542. package/server/supervisor-DX8VsPnb.js +0 -2
  543. package/server/tmux-CqNapnrr.js +0 -4
  544. package/server/token-util-Bu8bPF9f.js +0 -3
  545. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -1,11 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fi as init_paths, Pi as getOverdeckHome, oi as init_errors, p as loadConfigSync, ri as TmuxError, t as init_config_yaml, ti as MessageDeliveryFailed } from "./config-yaml-BwOEANMr.js";
2
+ import { Ri as getOverdeckHome, ii as MessageDeliveryFailed, ji as getCanonicalOverdeckHome, li as init_errors, oi as TmuxError, p as loadConfigSync, t as init_config_yaml, zi as init_paths } from "./config-yaml-D60AnTIu.js";
3
3
  import { Effect } from "effect";
4
4
  import { appendFileSync, chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
5
- import { join } from "path";
6
- import { tmpdir } from "os";
5
+ import { join, resolve } from "path";
6
+ import { homedir, tmpdir } from "os";
7
7
  import { mkdir, readFile, unlink, writeFile } from "fs/promises";
8
- import { randomUUID } from "node:crypto";
8
+ import { createHash, randomUUID } from "node:crypto";
9
9
  import { execFile, execFileSync, execSync } from "child_process";
10
10
  import { promisify } from "util";
11
11
  //#region ../../lib/child-env.ts
@@ -338,6 +338,13 @@ function deliveryVerifyLine(content) {
338
338
  const lines = content.split("\n");
339
339
  return ([...lines].reverse().find((line) => line.trim().length >= 3) ?? lines[lines.length - 1])?.trim() ?? "";
340
340
  }
341
+ /**
342
+ * The cursor-anchored active-composer region of a pane: the rows between the
343
+ * composer's top border (if any) and the cursor row, ANSI-stripped. Returns
344
+ * null when the composer cannot be anchored (blank pane or unreadable cursor).
345
+ * Exported so delivery-verification callers can match against the composer
346
+ * only — never the transcript scrollback above it.
347
+ */
341
348
  function activeComposerRegion(viewport) {
342
349
  const lines = viewport.text.replace(PANE_ANSI_PATTERN, "").split("\n").map((line) => line.replace(/\s+$/g, ""));
343
350
  if (lines.every((line) => line.trim() === "")) return null;
@@ -384,8 +391,23 @@ function getTmuxDir() {
384
391
  function getManagedTmuxConfigPath() {
385
392
  return join(getTmuxDir(), "overdeck.tmux.conf");
386
393
  }
394
+ /**
395
+ * PAN-3673: a process whose OVERDECK_HOME is not the default home is a separate
396
+ * Overdeck instance (an isolated verification dashboard, a scratch home). If it
397
+ * drives the shared 'overdeck' socket, its PAN-1798 sanitizer pins race the real
398
+ * stack's pins in the server global env, and whichever pinned last at the instant
399
+ * of `new-session` wins — real sessions then capture the wrong OVERDECK_HOME
400
+ * (PAN-3668 incident, 2026-08-13: the review orchestrator's app-server wrote its
401
+ * socket under a /tmp home and the readiness check never saw it). Derive a
402
+ * deterministic per-home socket instead so a non-default stack can never touch
403
+ * the shared server. An explicit OVERDECK_TMUX_SOCKET_NAME still wins (per-test
404
+ * isolation, PAN-1808).
405
+ */
387
406
  function getManagedTmuxSocketName() {
388
- return process.env.OVERDECK_TMUX_SOCKET_NAME ?? "overdeck";
407
+ if (process.env.OVERDECK_TMUX_SOCKET_NAME) return process.env.OVERDECK_TMUX_SOCKET_NAME;
408
+ const home = resolve(getOverdeckHome());
409
+ if (home === resolve(join(homedir(), ".overdeck"))) return DEFAULT_MANAGED_TMUX_SOCKET;
410
+ return `${DEFAULT_MANAGED_TMUX_SOCKET}-${createHash("sha1").update(home).digest("hex").slice(0, 8)}`;
389
411
  }
390
412
  function ensureLogDir() {
391
413
  const logDir = join(getOverdeckHome(), "logs");
@@ -512,17 +534,27 @@ function warnIfServerCmdlineIsDirtySync() {
512
534
  * HOME and drop into the onboarding/login screen.
513
535
  *
514
536
  * Detecting this and only warning (the old behaviour) left the poison in place.
515
- * Since `ensureOverdeckTmuxServer*` runs before every `new-session`, overwrite the
516
- * critical vars in the server's global environment with the clean child env so new
517
- * sessions are always spawned with the correct HOME/OVERDECK_HOME — even on a
518
- * dirtily-founded server — and strip known test pollution. Non-destructive: existing
519
- * sessions keep their captured env; only future sessions change.
537
+ * Since `ensureOverdeckTmuxServer*` runs before every `new-session`, always pin
538
+ * canonical HOME/OVERDECK_HOME on the shared socket. Isolated sockets instead get
539
+ * the caller's resolved values. Non-destructive: existing sessions keep their
540
+ * captured env; only future sessions change.
520
541
  */
542
+ /** @internal Exported only for focused sanitizer tests. */
521
543
  function sanitizeManagedServerGlobalEnvSync(cleanEnv) {
522
544
  const sock = getManagedTmuxSocketName();
545
+ const canonicalOverdeckHome = getCanonicalOverdeckHome();
546
+ const sharedSocket = sock === DEFAULT_MANAGED_TMUX_SOCKET;
547
+ const callerOverdeckHome = getOverdeckHome();
548
+ const pinnedEnv = sharedSocket ? {
549
+ HOME: homedir(),
550
+ OVERDECK_HOME: canonicalOverdeckHome
551
+ } : {
552
+ HOME: cleanEnv.HOME ?? homedir(),
553
+ OVERDECK_HOME: callerOverdeckHome
554
+ };
555
+ if (sharedSocket && resolve(callerOverdeckHome) !== resolve(canonicalOverdeckHome)) console.warn(`[tmux] WARNING (PAN-3671): refusing to pin non-canonical OVERDECK_HOME '${callerOverdeckHome}' on shared socket '${sock}'. Set OVERDECK_TMUX_SOCKET_NAME to isolate this Overdeck instance.`);
523
556
  for (const key of ["HOME", "OVERDECK_HOME"]) {
524
- const value = cleanEnv[key];
525
- if (!value) continue;
557
+ const value = pinnedEnv[key];
526
558
  try {
527
559
  execFileSync("tmux", [
528
560
  "-L",
@@ -575,7 +607,8 @@ function ensureOverdeckTmuxServerSync(cleanEnv) {
575
607
  getManagedTmuxConfigPath(),
576
608
  "start-server"
577
609
  ];
578
- if (!(() => {
610
+ const useManagedUnit = getManagedTmuxSocketName() === DEFAULT_MANAGED_TMUX_SOCKET;
611
+ if (!(!useManagedUnit ? false : (() => {
579
612
  try {
580
613
  execFileSync("systemd-run", [
581
614
  "--user",
@@ -596,7 +629,7 @@ function ensureOverdeckTmuxServerSync(cleanEnv) {
596
629
  } catch {
597
630
  return false;
598
631
  }
599
- })()) {
632
+ })())) {
600
633
  let daemonized = false;
601
634
  try {
602
635
  execFileSync("setsid", ["tmux", ...args], {
@@ -609,7 +642,7 @@ function ensureOverdeckTmuxServerSync(cleanEnv) {
609
642
  stdio: "ignore",
610
643
  env: cleanEnv
611
644
  });
612
- console.warn(`[tmux] WARNING (PAN-1798): could not start '${MANAGED_TMUX_SERVER_UNIT}' via systemd-run. Shared tmux server is running without systemd scope isolation; killing the founding process tree may still destroy the server.`);
645
+ if (useManagedUnit) console.warn(`[tmux] WARNING (PAN-1798): could not start '${MANAGED_TMUX_SERVER_UNIT}' via systemd-run. Shared tmux server is running without systemd scope isolation; killing the founding process tree may still destroy the server.`);
613
646
  }
614
647
  const deadline = Date.now() + SERVER_ALIVE_TIMEOUT_MS;
615
648
  while (Date.now() < deadline) {
@@ -761,7 +794,12 @@ function buildNewSessionArgs(name, cwd, initialCommand, options) {
761
794
  "-y",
762
795
  String(height)
763
796
  ];
764
- if (options?.env) for (const [key, value] of Object.entries(options.env)) args.push("-e", `${key}=${value}`);
797
+ const env = {
798
+ HOME: process.env.HOME ?? homedir(),
799
+ OVERDECK_HOME: getOverdeckHome(),
800
+ ...options?.env
801
+ };
802
+ for (const [key, value] of Object.entries(env)) args.push("-e", `${key}=${value}`);
765
803
  if (initialCommand) args.push(initialCommand);
766
804
  return args;
767
805
  }
@@ -803,6 +841,9 @@ function listSessionsSync() {
803
841
  return [];
804
842
  }
805
843
  }
844
+ function listSessionNamesSync() {
845
+ return listSessionsSync().map((session) => session.name);
846
+ }
806
847
  /**
807
848
  * tmux target-session syntax: a bare name is matched as a *prefix* against
808
849
  * existing session names. That means `has-session -t agent-pan-977` returns
@@ -949,6 +990,36 @@ async function capturePaneText(sessionName, lines = 50, options) {
949
990
  return "";
950
991
  }
951
992
  }
993
+ /**
994
+ * Capture the visible pane plus its cursor row as a PaneViewport for
995
+ * cursor-anchored composer detection (pane-composer.ts). Returns null when
996
+ * the pane or cursor position is unreadable.
997
+ */
998
+ async function capturePaneViewport(sessionName) {
999
+ try {
1000
+ const target = exactPaneTarget(sessionName);
1001
+ const [pane, cursor] = await Promise.all([tmuxExecAsync([
1002
+ "capture-pane",
1003
+ "-t",
1004
+ target,
1005
+ "-p"
1006
+ ], { encoding: "utf-8" }), tmuxExecAsync([
1007
+ "display-message",
1008
+ "-p",
1009
+ "-t",
1010
+ target,
1011
+ "#{cursor_y}"
1012
+ ], { encoding: "utf-8" })]);
1013
+ const cursorY = Number.parseInt(String(cursor.stdout).trim(), 10);
1014
+ if (!Number.isInteger(cursorY)) return null;
1015
+ return {
1016
+ text: String(pane.stdout),
1017
+ cursorY
1018
+ };
1019
+ } catch {
1020
+ return null;
1021
+ }
1022
+ }
952
1023
  function listPaneValuesSync(target, format) {
953
1024
  try {
954
1025
  return tmuxExecSync([
@@ -1073,7 +1144,7 @@ async function sendEscapeKeyAsync(sessionName, times = 1) {
1073
1144
  if (i < times - 1) await new Promise((resolve) => setTimeout(resolve, 250));
1074
1145
  }
1075
1146
  }
1076
- var execFileAsync, VALID_SESSION_NAME_RE, DEFAULT_TMUX_WINDOW_COLS, DEFAULT_TMUX_WINDOW_ROWS, MANAGED_TMUX_SERVER_UNIT, SERVER_ALIVE_POLL_MS, SERVER_ALIVE_TIMEOUT_MS, MANAGED_TMUX_CONFIG_CONTENT, tmuxContextPrepared, warnedManagedServerTmuxSpawnScope, warnedManagedServerDirtyCmdline, TERMINAL_API_ERROR_PATTERNS, toTmuxError, ensureManagedTmuxContextOnce, listSessions, listSessionNames, listAllPaneRecords, getWindowDimensions, sessionExists, createSession, killSession, setOption, resizeWindow, sendRawKeystroke, sendKeys, capturePane, listPaneValues, isPaneDead, getAgentSessions;
1147
+ var execFileAsync, VALID_SESSION_NAME_RE, DEFAULT_TMUX_WINDOW_COLS, DEFAULT_TMUX_WINDOW_ROWS, MANAGED_TMUX_SERVER_UNIT, SERVER_ALIVE_POLL_MS, SERVER_ALIVE_TIMEOUT_MS, MANAGED_TMUX_CONFIG_CONTENT, tmuxContextPrepared, DEFAULT_MANAGED_TMUX_SOCKET, warnedManagedServerTmuxSpawnScope, warnedManagedServerDirtyCmdline, TERMINAL_API_ERROR_PATTERNS, toTmuxError, ensureManagedTmuxContextOnce, listSessions, listSessionNames, listAllPaneRecords, getWindowDimensions, sessionExists, createSession, killSession, setOption, resizeWindow, sendRawKeystroke, sendKeys, capturePane, listPaneValues, isPaneDead, getAgentSessions;
1077
1148
  var init_tmux = __esmMin((() => {
1078
1149
  init_paths();
1079
1150
  init_config_yaml();
@@ -1106,6 +1177,7 @@ var init_tmux = __esmMin((() => {
1106
1177
  ""
1107
1178
  ].join("\n");
1108
1179
  tmuxContextPrepared = false;
1180
+ DEFAULT_MANAGED_TMUX_SOCKET = "overdeck";
1109
1181
  warnedManagedServerTmuxSpawnScope = false;
1110
1182
  warnedManagedServerDirtyCmdline = false;
1111
1183
  TERMINAL_API_ERROR_PATTERNS = [
@@ -1446,6 +1518,6 @@ var init_tmux = __esmMin((() => {
1446
1518
  getAgentSessions = () => listSessions().pipe(Effect.map((sessions) => sessions.filter((s) => s.name.startsWith("agent-"))));
1447
1519
  }));
1448
1520
  //#endregion
1449
- export { paneTreeHasHarnessProcess as $, listSessionNames as A, sessionExists as B, isHarnessProcessAlive as C, listAllPaneRecords as D, killSessionSync as E, resizeWindow as F, activeComposerPayloadPresence as G, setOption as H, sendEscapeKeyAsync as I, buildChoiceKeystrokes as J, deliveryVerifyLine as K, sendKeys as L, listSessionsSync as M, parseTmuxPaneRecords as N, listPaneValues as O, querySessionSync as P, parsePaneChoiceMenu as Q, sendKeysAsync as R, init_tmux as S, killSession as T, tmuxExecAsync as U, sessionExistsSync as V, validateSessionName as W, paneChoiceMenuSignature as X, init_pane_choice_menu as Y, paneHasBlockingChoiceMenu as Z, getManagedTmuxSocketName as _, capturePaneText as a, buildChildEnvSync as at, getTmuxConfigMode as b, detectTerminalApiErrorSync as c, ensureOverdeckTmuxServerSync as d, colorFgBgForTheme as et, exactPaneTarget as f, getManagedTmuxConfigPath as g, getAgentSessions as h, capturePaneSync as i, BLANKED_PROVIDER_ENV as it, listSessions as j, listPaneValuesSync as k, ensureManagedTmuxContextOnce as l, findManagedServerPidSync as m, buildTmuxCommandString as n, init_ui_theme as nt, createSession as o, buildChildEnvWithoutTmuxSync as ot, exactSession as p, init_pane_composer as q, capturePane as r, setUiTheme as rt, createSessionSync as s, init_child_env as st, buildTmuxArgs as t, getUiThemeSync as tt, ensureOverdeckTmuxServerAsync as u, getTmuxBaseArgs as v, isPaneDead as w, getWindowDimensions as x, getTmuxCommand as y, sendRawKeystroke as z };
1521
+ export { init_pane_choice_menu as $, listPaneValuesSync as A, sendKeys as B, init_tmux as C, killSessionSync as D, killSession as E, parseTmuxPaneRecords as F, setOption as G, sendRawKeystroke as H, querySessionSync as I, activeComposerPayloadPresence as J, tmuxExecAsync as K, resizeWindow as L, listSessionNamesSync as M, listSessions as N, listAllPaneRecords as O, listSessionsSync as P, buildChoiceKeystrokes as Q, sanitizeManagedServerGlobalEnvSync as R, getWindowDimensions as S, isPaneDead as T, sessionExists as U, sendKeysAsync as V, sessionExistsSync as W, deliveryVerifyLine as X, activeComposerRegion as Y, init_pane_composer as Z, getManagedTmuxConfigPath as _, capturePaneText as a, getUiThemeSync as at, getTmuxCommand as b, createSessionSync as c, BLANKED_PROVIDER_ENV as ct, ensureOverdeckTmuxServerAsync as d, init_child_env as dt, paneChoiceMenuSignature as et, ensureOverdeckTmuxServerSync as f, getAgentSessions as g, findManagedServerPidSync as h, capturePaneSync as i, colorFgBgForTheme as it, listSessionNames as j, listPaneValues as k, detectTerminalApiErrorSync as l, buildChildEnvSync as lt, exactSession as m, buildTmuxCommandString as n, parsePaneChoiceMenu as nt, capturePaneViewport as o, init_ui_theme as ot, exactPaneTarget as p, validateSessionName as q, capturePane as r, paneTreeHasHarnessProcess as rt, createSession as s, setUiTheme as st, buildTmuxArgs as t, paneHasBlockingChoiceMenu as tt, ensureManagedTmuxContextOnce as u, buildChildEnvWithoutTmuxSync as ut, getManagedTmuxSocketName as v, isHarnessProcessAlive as w, getTmuxConfigMode as x, getTmuxBaseArgs as y, sendEscapeKeyAsync as z };
1450
1522
 
1451
- //# sourceMappingURL=tmux-BqXzRuaH.js.map
1523
+ //# sourceMappingURL=tmux-wnT_hg-s.js.map
@@ -1,5 +1,5 @@
1
1
  import { t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { r as require_token_error, t as require_token_util } from "./token-util-DyJJyX_B.js";
2
+ import { r as require_token_error, t as require_token_util } from "./token-util-Crcay9j_.js";
3
3
  //#region ../../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token.js
4
4
  var require_token = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5
5
  var __defProp = Object.defineProperty;
@@ -54,4 +54,4 @@ var require_token = /* @__PURE__ */ __commonJSMin(((exports, module) => {
54
54
  export default require_token();
55
55
  export {};
56
56
 
57
- //# sourceMappingURL=token-CO3INKbh.js.map
57
+ //# sourceMappingURL=token-BdfZLRg1.js.map
@@ -432,4 +432,4 @@ var require_token_util = /* @__PURE__ */ __commonJSMin(((exports, module) => {
432
432
  //#endregion
433
433
  export { require_auth_errors as n, require_token_error as r, require_token_util as t };
434
434
 
435
- //# sourceMappingURL=token-util-DyJJyX_B.js.map
435
+ //# sourceMappingURL=token-util-Crcay9j_.js.map
@@ -0,0 +1,3 @@
1
+ import { t as require_token_util } from "./token-util-Crcay9j_.js";
2
+ export default require_token_util();
3
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { bn as loadProjectsConfigSync, fn as init_projects, p as loadConfigSync, rn as getIssuePrefix, t as init_config_yaml } from "./config-yaml-BwOEANMr.js";
2
+ import { bn as loadProjectsConfigSync, fn as init_projects, p as loadConfigSync, rn as getIssuePrefix, t as init_config_yaml } from "./config-yaml-D60AnTIu.js";
3
3
  import { existsSync } from "fs";
4
4
  import { join } from "path";
5
5
  import { homedir } from "os";
@@ -142,4 +142,4 @@ var init_tracker_config = __esmMin((() => {
142
142
  //#endregion
143
143
  export { init_tracker_config as a, initTrackerConfigCache as i, getLinearApiKey as n, validateRallyConfig as o, getRallyConfig as r, getGitHubConfig as t };
144
144
 
145
- //# sourceMappingURL=tracker-config-DVzhaUxO.js.map
145
+ //# sourceMappingURL=tracker-config-tfAOWgng.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Gn as init_issue_id, Un as extractNumberSync, Wn as extractPrefixSync, bn as loadProjectsConfigSync, fn as init_projects, oi as init_errors, qn as parseIssueIdSync, rn as getIssuePrefix } from "./config-yaml-BwOEANMr.js";
2
+ import { Gn as extractNumberSync, Kn as extractPrefixSync, Yn as parseIssueIdSync, bn as loadProjectsConfigSync, fn as init_projects, li as init_errors, qn as init_issue_id, rn as getIssuePrefix } from "./config-yaml-D60AnTIu.js";
3
3
  import "effect";
4
4
  import { existsSync, readFileSync } from "fs";
5
5
  import { join } from "path";
@@ -120,4 +120,4 @@ var init_tracker_utils = __esmMin((() => {
120
120
  //#endregion
121
121
  export { resolveGitHubIssueSync as n, resolveTrackerTypeSync as r, init_tracker_utils as t };
122
122
 
123
- //# sourceMappingURL=tracker-utils-xnVJVrrO.js.map
123
+ //# sourceMappingURL=tracker-utils-Dbg_pVZg.js.map
@@ -69,4 +69,4 @@ var init_traefik_connect = __esmMin((() => {
69
69
  //#endregion
70
70
  export { reconcileTraefikNetworks as n, init_traefik_connect as t };
71
71
 
72
- //# sourceMappingURL=traefik-connect-A5k54mCv.js.map
72
+ //# sourceMappingURL=traefik-connect-DoQvQ6oJ.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_tunnel, r as removeTunnelIngress } from "./tunnel-CwOnS-PB.js";
1
+ import { n as init_tunnel, r as removeTunnelIngress } from "./tunnel-skW68j9B.js";
2
2
  init_tunnel();
3
3
  export { removeTunnelIngress };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ii as TrackerError, oi as init_errors } from "./config-yaml-BwOEANMr.js";
3
- import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-D0CavVtz.js";
2
+ import { li as init_errors, si as TrackerError } from "./config-yaml-D60AnTIu.js";
3
+ import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-D-bNq2CF.js";
4
4
  import { Effect } from "effect";
5
5
  import { readFileSync } from "fs";
6
6
  import { resolve } from "path";
@@ -217,4 +217,4 @@ var init_tunnel = __esmMin((() => {
217
217
  //#endregion
218
218
  export { init_tunnel as n, removeTunnelIngress as r, addTunnelIngress as t };
219
219
 
220
- //# sourceMappingURL=tunnel-CwOnS-PB.js.map
220
+ //# sourceMappingURL=tunnel-skW68j9B.js.map
@@ -1,2 +1,2 @@
1
- import { a as RateLimited, c as TrackerNotConfigured, i as PlanEmpty, l as WorkspaceCreateError, n as AgentStartError, o as TasksNotInitialized, r as IssueNotFound, s as TrackerApiError, t as AgentAlreadyRunning, u as WorkspaceNotFound } from "./typed-errors-DzC4zXbI.js";
1
+ import { a as RateLimited, c as TrackerNotConfigured, i as PlanEmpty, l as WorkspaceCreateError, n as AgentStartError, o as TasksNotInitialized, r as IssueNotFound, s as TrackerApiError, t as AgentAlreadyRunning, u as WorkspaceNotFound } from "./typed-errors-DXqf3RnP.js";
2
2
  export { AgentAlreadyRunning, AgentStartError, IssueNotFound, PlanEmpty, RateLimited, TasksNotInitialized, TrackerApiError, TrackerNotConfigured, WorkspaceCreateError, WorkspaceNotFound };
@@ -29,4 +29,4 @@ var AgentStartError = class extends Data.TaggedError("AgentStartError") {};
29
29
  //#endregion
30
30
  export { RateLimited as a, TrackerNotConfigured as c, PlanEmpty as i, WorkspaceCreateError as l, AgentStartError as n, TasksNotInitialized as o, IssueNotFound as r, TrackerApiError as s, AgentAlreadyRunning as t, WorkspaceNotFound as u };
31
31
 
32
- //# sourceMappingURL=typed-errors-DzC4zXbI.js.map
32
+ //# sourceMappingURL=typed-errors-DXqf3RnP.js.map
@@ -59,4 +59,4 @@ var init_types = __esmMin((() => {}));
59
59
  //#endregion
60
60
  export { stepSkipped as a, stepOk as i, init_types as n, stepFailed as r, getLinearApiKey as t };
61
61
 
62
- //# sourceMappingURL=types-DjpLVpsj.js.map
62
+ //# sourceMappingURL=types-PW4zkxCM.js.map
@@ -37,4 +37,4 @@ var init_types = __esmMin((() => {
37
37
  //#endregion
38
38
  export { PAN_DIRNAME as a, PAN_SESSIONS_FILENAME as c, PENDING_PROMOTION_FILENAME as d, WORKSPACE_RUNTIME_DIRNAME as f, isPanSpecStatus as h, PAN_CONTINUE_FILENAME as i, PAN_SPECS_DIRNAME as l, init_types as m, PAN_CONTEXT_FILENAME as n, PAN_DRAFTS_DIRNAME as o, asPanSpecDocument as p, PAN_CONTINUES_DIRNAME as r, PAN_FEEDBACK_DIRNAME as s, LEGACY_WORKSPACE_RUNTIME_DIRNAME as t, PAN_SPEC_FILENAME as u };
39
39
 
40
- //# sourceMappingURL=types-DbxY2QB6.js.map
40
+ //# sourceMappingURL=types-pLpbsNto.js.map
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { On as resolveProjectFromIssueSync, fn as init_projects } from "./config-yaml-BwOEANMr.js";
3
- import { Lt as init_messaging, Rt as messageAgent } from "./agent-state-Bb3UUxQm.js";
4
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-D4ULO4qG.js";
5
- import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-Ci6N5p4G.js";
2
+ import { On as resolveProjectFromIssueSync, fn as init_projects } from "./config-yaml-D60AnTIu.js";
3
+ import { Ht as init_messaging, Ut as messageAgent } from "./agent-state-FABw8neJ.js";
4
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-Ds1Wjsz4.js";
5
+ import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-yPD_wclF.js";
6
6
  import { join } from "node:path";
7
7
  import { Effect } from "effect";
8
8
  //#region ../../lib/cloister/uat-failure-feedback.ts
@@ -133,4 +133,4 @@ __esmMin((() => {
133
133
  }))();
134
134
  export { clearUatFailureFeedbackAnchor, relayUatFailureFeedbackPromise };
135
135
 
136
- //# sourceMappingURL=uat-failure-feedback-BVqsWlrr.js.map
136
+ //# sourceMappingURL=uat-failure-feedback-ly8ZwtfC.js.map
@@ -1,7 +1,7 @@
1
- import { On as resolveProjectFromIssueSync, fn as init_projects } from "./config-yaml-BwOEANMr.js";
2
- import { a as init_git_utils, c as rehydrateHeadAnchor } from "./git-utils-DV4B9TRl.js";
3
- import { c as init_merge_sync, j as listUatGenerationsSync } from "./merge-sync-Ct0-cxMX.js";
4
- import { d as getReviewStatusSync, p as init_review_status, w as setReviewStatusSync } from "./review-status-DBnR5t4z.js";
1
+ import { On as resolveProjectFromIssueSync, fn as init_projects } from "./config-yaml-D60AnTIu.js";
2
+ import { a as init_git_utils, c as rehydrateHeadAnchor } from "./git-utils-BdHk8y7g.js";
3
+ import { c as init_merge_sync, j as listUatGenerationsSync } from "./merge-sync-YLvOPAry.js";
4
+ import { d as getReviewStatusSync, p as init_review_status, w as setReviewStatusSync } from "./review-status-DpniqzPT.js";
5
5
  import { execFile } from "node:child_process";
6
6
  import { promisify } from "node:util";
7
7
  //#region ../../lib/cloister/uat-promote-verification.ts
@@ -89,4 +89,4 @@ async function healUatPromotionVerification(issueId, deps = DEFAULT_HEAL_DEPS) {
89
89
  //#endregion
90
90
  export { buildUatPromotionStamp, healUatPromotionVerification, recordUatPromotionVerdicts };
91
91
 
92
- //# sourceMappingURL=uat-promote-verification-DmG097QS.js.map
92
+ //# sourceMappingURL=uat-promote-verification-BBaMwfdc.js.map
@@ -1,2 +1,2 @@
1
- import { a as postUatGenerationStackPayload, c as runUatTrainReconcileAllProjects, i as postUatGenerationPromotePayload, l as startUatTrainReconciler, n as getUatCandidatePayload, o as resolveUatProjectRoot, r as getUatGenerationsPayload, s as runUatTrainReconcile, t as canStartUatTrainReconciler, u as stopUatTrainReconciler } from "./uat-train-DVUNW03P.js";
1
+ import { a as postUatGenerationStackPayload, c as runUatTrainReconcileAllProjects, i as postUatGenerationPromotePayload, l as startUatTrainReconciler, n as getUatCandidatePayload, o as resolveUatProjectRoot, r as getUatGenerationsPayload, s as runUatTrainReconcile, t as canStartUatTrainReconciler, u as stopUatTrainReconciler } from "./uat-train-BBEiYSep.js";
2
2
  export { canStartUatTrainReconciler, getUatCandidatePayload, getUatGenerationsPayload, postUatGenerationPromotePayload, postUatGenerationStackPayload, resolveUatProjectRoot, runUatTrainReconcile, runUatTrainReconcileAllProjects, startUatTrainReconciler, stopUatTrainReconciler };
@@ -1,5 +1,5 @@
1
- import { i as getAllReviewStatusesFromDb, l as init_review_status_sync } from "./review-status-sync-B7V_Gg51.js";
2
- import { G as liveOrderIssueLookup, K as orderIssueStoreStatus, W as listBooks } from "./flywheel-C7yek87O.js";
1
+ import { i as getAllReviewStatusesFromDb, l as init_review_status_sync } from "./review-status-sync-C6ZKTI8f.js";
2
+ import { G as liveOrderIssueLookup, W as listBooks, q as orderIssueStoreStatus } from "./flywheel-DWKd7bMc.js";
3
3
  import { join } from "node:path";
4
4
  import { existsSync, readdirSync, statSync } from "node:fs";
5
5
  //#region ../../lib/cloister/merge-blockers.ts
@@ -183,4 +183,4 @@ function validateBookForStart(stateRoot, book, options = {}) {
183
183
  //#endregion
184
184
  export { getMergeBlockersPayload as i, hasOrderIssuePrd as n, validateBookForStart as r, createOrderPrdLookup as t };
185
185
 
186
- //# sourceMappingURL=validate-Dvv83iBx.js.map
186
+ //# sourceMappingURL=validate-BYcBcBwg.js.map
@@ -1,6 +1,6 @@
1
- import { Fi as init_paths, Pi as getOverdeckHome, oi as init_errors } from "./config-yaml-BwOEANMr.js";
2
- import { h as loadConfigSync, p as init_config } from "./config-tucKBCCc.js";
3
- import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-D0CavVtz.js";
1
+ import { Ri as getOverdeckHome, li as init_errors, zi as init_paths } from "./config-yaml-D60AnTIu.js";
2
+ import { h as loadConfigSync, p as init_config } from "./config-NxI9Yl2f.js";
3
+ import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-D-bNq2CF.js";
4
4
  import { join } from "node:path";
5
5
  import { Effect } from "effect";
6
6
  import "fs";
@@ -237,9 +237,12 @@ function clipGateStream(stream, limit) {
237
237
  const tailLength = limit - headLength;
238
238
  return `${signal.slice(0, headLength)}\n…(${signal.length - limit} chars elided)…\n${signal.slice(-tailLength)}`;
239
239
  }
240
- function formatGateOutput(stdout, stderr) {
240
+ function formatGatePreview(stdout, stderr) {
241
241
  return [clipGateStream(stdout, 4e3), clipGateStream(stderr, 2e3)].filter(Boolean).join("\n--- stderr ---\n");
242
242
  }
243
+ function formatGateOutput(stdout, stderr) {
244
+ return [stdout, stderr].filter(Boolean).join("\n--- stderr ---\n");
245
+ }
243
246
  function buildQualityGateEnv(gateEnv) {
244
247
  const env = { ...process.env };
245
248
  for (const key of DASHBOARD_RUNTIME_ENV_KEYS) if (!Object.prototype.hasOwnProperty.call(gateEnv ?? {}, key)) delete env[key];
@@ -417,7 +420,7 @@ async function runQualityGatesPromise(gates, projectPath, phase = "pre_push", op
417
420
  }
418
421
  const { stdout, stderr } = await execPromise;
419
422
  passedGate = true;
420
- passOutput = formatGateOutput(stdout, stderr);
423
+ passOutput = formatGatePreview(stdout, stderr);
421
424
  } catch (error) {
422
425
  lastError = error;
423
426
  if (attempt < maxAttempts) {
@@ -524,4 +527,4 @@ const runQualityGates = (gates, projectPath, phase = "pre_push", opts = {}) => E
524
527
  //#endregion
525
528
  export { killAllGateProcessGroups as n, runQualityGates as r, DEFAULT_GATES as t };
526
529
 
527
- //# sourceMappingURL=validation-DlHafKzu.js.map
530
+ //# sourceMappingURL=validation-BfG2jW5C.js.map
@@ -1,2 +1,2 @@
1
- import { n as killAllGateProcessGroups, r as runQualityGates } from "./validation-DlHafKzu.js";
1
+ import { n as killAllGateProcessGroups, r as runQualityGates } from "./validation-BfG2jW5C.js";
2
2
  export { killAllGateProcessGroups, runQualityGates };
@@ -1,2 +1,2 @@
1
- import { t as readVerificationArtifact } from "./verification-artifact-0Zku8N-W.js";
1
+ import { t as readVerificationArtifact } from "./verification-artifact-DglwaHke.js";
2
2
  export { readVerificationArtifact };
@@ -53,4 +53,4 @@ function readVerificationArtifact(workspacePath) {
53
53
  //#endregion
54
54
  export { verificationArtifactPath as n, writeVerificationArtifact as r, readVerificationArtifact as t };
55
55
 
56
- //# sourceMappingURL=verification-artifact-0Zku8N-W.js.map
56
+ //# sourceMappingURL=verification-artifact-DglwaHke.js.map
@@ -1,16 +1,16 @@
1
- import { $t as findProjectByPathSync, Fi as init_paths, On as resolveProjectFromIssueSync, Pi as getOverdeckHome, Ri as packageRoot, fn as init_projects } from "./config-yaml-BwOEANMr.js";
2
- import { G as init_agents, Rt as messageAgent, in as stopAgent, k as setAgentPaused } from "./agent-state-Bb3UUxQm.js";
3
- import { i as readReviewStatusMap, n as init_review_status_source } from "./review-status-source-Ct912fv_.js";
4
- import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-Bg44O-9x.js";
5
- import { s as init_io, t as XBriefMergeConflictError } from "./io-DfvO2xyh.js";
6
- import { i as init_project_repos, u as resolveWorkspaceRepoRootsSync } from "./project-repos-B4MK48j4.js";
7
- import { H as init_review_status_reconcile, O as capturePipelineStageForIssue, V as MERGED_VERIFICATION_REASON, _ as markWorkspaceStuck, d as getReviewStatusSync, k as init_pipeline, p as init_review_status, w as setReviewStatusSync } from "./review-status-DBnR5t4z.js";
8
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-D4ULO4qG.js";
9
- import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-Ci6N5p4G.js";
10
- import { r as runQualityGates, t as DEFAULT_GATES } from "./validation-DlHafKzu.js";
11
- import { r as writeVerificationArtifact, t as readVerificationArtifact } from "./verification-artifact-0Zku8N-W.js";
12
- import { n as getXBriefACStatusSync } from "./acceptance-criteria-Crw-xSJ3.js";
13
- import { n as checkIncompletePlanItemsPromise } from "./done-preflight-Bk8aExAL.js";
1
+ import { $t as findProjectByPathSync, Hi as packageRoot, On as resolveProjectFromIssueSync, Ri as getOverdeckHome, fn as init_projects, zi as init_paths } from "./config-yaml-D60AnTIu.js";
2
+ import { Ut as messageAgent, j as setAgentPaused, pn as stopAgent, q as init_agents } from "./agent-state-FABw8neJ.js";
3
+ import { i as readReviewStatusMap, n as init_review_status_source } from "./review-status-source-Jq0BXmn3.js";
4
+ import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-DVXyUil2.js";
5
+ import { s as init_io, t as XBriefMergeConflictError } from "./io-BCtZoXHo.js";
6
+ import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos } from "./project-repos-CsfvLtmr.js";
7
+ import { H as init_review_status_reconcile, O as capturePipelineStageForIssue, V as MERGED_VERIFICATION_REASON, _ as markWorkspaceStuck, d as getReviewStatusSync, k as init_pipeline, p as init_review_status, w as setReviewStatusSync } from "./review-status-DpniqzPT.js";
8
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-Ds1Wjsz4.js";
9
+ import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-yPD_wclF.js";
10
+ import { r as runQualityGates, t as DEFAULT_GATES } from "./validation-BfG2jW5C.js";
11
+ import { n as verificationArtifactPath, r as writeVerificationArtifact, t as readVerificationArtifact } from "./verification-artifact-DglwaHke.js";
12
+ import { n as getXBriefACStatusSync } from "./acceptance-criteria-B_maCGZv.js";
13
+ import { n as checkIncompletePlanItemsPromise } from "./done-preflight-Cx9JGznT.js";
14
14
  import { join } from "node:path";
15
15
  import { Effect } from "effect";
16
16
  import { basename as basename$1, dirname as dirname$1, join as join$1 } from "path";
@@ -54,6 +54,25 @@ function isProcessAlive(pid) {
54
54
  return false;
55
55
  }
56
56
  }
57
+ /**
58
+ * Kill an expired worker and its gate children. The worker is spawned
59
+ * detached, so it leads its own process group — signal the group first so a
60
+ * mid-gate `npm`/`bun` child dies with it, falling back to the bare pid.
61
+ * Best-effort and async; callers never block on the outcome.
62
+ */
63
+ async function killWorkerProcessGroup(pid) {
64
+ for (const signal of ["SIGTERM", "SIGKILL"]) {
65
+ try {
66
+ process.kill(-pid, signal);
67
+ } catch {
68
+ try {
69
+ process.kill(pid, signal);
70
+ } catch {}
71
+ }
72
+ if (!isProcessAlive(pid)) return;
73
+ await new Promise((resolve) => setTimeout(resolve, 1e3));
74
+ }
75
+ }
57
76
  function readVerificationWorkerState(issueId) {
58
77
  try {
59
78
  const parsed = JSON.parse(readFileSync(statePath(issueId), "utf8"));
@@ -106,18 +125,26 @@ async function waitForResult(state) {
106
125
  message: `Verification worker ${state.pid} exited before writing a result`
107
126
  };
108
127
  const deadline = verificationWorkerDeadline(readVerificationWorkerState(state.issueId) ?? state);
109
- if (deadline !== null && Date.now() >= deadline) return {
110
- outcome: "error",
111
- message: `Verification worker ${state.pid} exceeded ${MAX_RUN_MS}ms after CPU admission`
112
- };
128
+ if (deadline !== null && Date.now() >= deadline) {
129
+ killWorkerProcessGroup(state.pid);
130
+ return {
131
+ outcome: "error",
132
+ message: `Verification worker ${state.pid} exceeded ${MAX_RUN_MS}ms after CPU admission`
133
+ };
134
+ }
113
135
  await new Promise((resolve) => setTimeout(resolve, POLL_MS));
114
136
  }
115
137
  }
116
138
  async function runSupervisedVerification(issueId, workspacePath, workspaceInfo, logPrefix, options = {}) {
117
139
  const existing = readVerificationWorkerState(issueId);
118
140
  if (existing && existing.workspacePath === workspacePath && isProcessAlive(existing.pid) && !existsSync(existing.resultPath)) {
119
- console.log(`[${logPrefix}] Joining live verification worker ${existing.pid} for ${issueId}`);
120
- return waitForResult(existing);
141
+ const existingDeadline = verificationWorkerDeadline(existing);
142
+ if (existingDeadline === null || Date.now() < existingDeadline) {
143
+ console.log(`[${logPrefix}] Joining live verification worker ${existing.pid} for ${issueId}`);
144
+ return waitForResult(existing);
145
+ }
146
+ console.warn(`[${logPrefix}] Verification worker ${existing.pid} for ${issueId} is past its deadline — killing it and starting fresh`);
147
+ await killWorkerProcessGroup(existing.pid);
121
148
  }
122
149
  const dir = workerDir(issueId);
123
150
  mkdirSync(dir, { recursive: true });
@@ -610,7 +637,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
610
637
  verificationNotes: `Verification deferred: ${failedGate.error}. Workspace stack rebuild triggered; verification re-runs on the next cycle.`
611
638
  });
612
639
  try {
613
- const { rebuildWorkspaceStack } = await import("./rebuild-stack-CCwKHZb6.js");
640
+ const { rebuildWorkspaceStack } = await import("./rebuild-stack-BcBVFJp3.js");
614
641
  const rebuildResult = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[${logPrefix}] ${issueId} stack rebuild: ${m}`) }));
615
642
  if (!rebuildResult.success) console.warn(`[${logPrefix}] Stack rebuild for ${issueId} failed: ${rebuildResult.error}`);
616
643
  } catch (err) {
@@ -631,9 +658,8 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
631
658
  if (failedGate) {
632
659
  const newCycleCount = currentCycles + 1;
633
660
  const failedCheck = failedGate.name;
634
- const rawOutput = failedGate.output || failedGate.error || "(no output)";
635
- const truncatedOutput = rawOutput.length > 3e3 ? rawOutput.slice(0, 3e3) + "\n...(truncated)" : rawOutput;
636
- const summary = `Verification FAILED at ${failedCheck} (${failedGate.durationMs}ms):\n\n${truncatedOutput}`;
661
+ const fullOutputPath = verificationArtifactPath(workspacePath);
662
+ const summary = `Verification FAILED at ${failedCheck} (${failedGate.durationMs}ms).\n\nFull gate output: ${fullOutputPath}`;
637
663
  setReviewStatusSync(issueId, {
638
664
  reviewStatus: "pending",
639
665
  verificationStatus: "failed",
@@ -643,7 +669,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
643
669
  });
644
670
  const shouldEscalate = shouldEscalateVerificationFailure(currentStatus, failedCheck, newCycleCount);
645
671
  if (shouldEscalate) await escalateVerificationStuck(issueId, failedCheck, newCycleCount, summary, logPrefix);
646
- const feedbackBody = shouldEscalate ? `VERIFICATION STUCK for ${issueId} (attempt ${newCycleCount}/3):\n\nFailed check: ${failedCheck}\n\n${summary}\n\n${buildFinalFailureInstructions(issueId)}` : `VERIFICATION FAILED for ${issueId} (attempt ${newCycleCount}/3):\n\nFailed check: ${failedCheck}\n\n${summary}\n\n## REQUIRED: Fix the failing check, push, and request a new review\n\n1. Read the error output above carefully\n2. Fix the code causing the failure\n3. Run the failing check locally to verify it passes\n4. Commit every change\n5. Invoke the /rebase-and-submit skill for ${issueId} — this is an atomic task. Because verification already ran once (a PR exists), the skill will push your branch and run \`pan review request ${issueId} -m "Fixed ${failedCheck}"\` for you. NEVER curl \`/api/review/...\` or any dashboard endpoint — \`pan review request\` is the only supported re-entry point.\n\nThe command can run for several minutes. A yielded exec result or background-terminal notice means it is still running, not that it succeeded. Poll the same terminal until it exits, inspect the real exit code, then confirm \`pan show ${issueId}\` or \`pan review pending\` shows the issue re-entered review. Do NOT stop between steps or after pushing; stop only after exit code 0 and the observed pipeline state change.`;
672
+ const feedbackBody = shouldEscalate ? `VERIFICATION STUCK for ${issueId} (attempt ${newCycleCount}/3):\n\nFailed check: ${failedCheck}\n\n${summary}\n\n${buildFinalFailureInstructions(issueId)}` : `VERIFICATION FAILED for ${issueId} (attempt ${newCycleCount}/3):\n\nFailed check: ${failedCheck}\n\n${summary}\n\n## REQUIRED: Fix the failing check, push, and request a new review\n\n1. Read the complete gate output at \`${fullOutputPath}\` carefully\n2. Fix the code causing the failure\n3. Run the failing check locally to verify it passes\n4. Commit every change\n5. Invoke the /rebase-and-submit skill for ${issueId} — this is an atomic task. Because verification already ran once (a PR exists), the skill will push your branch and run \`pan review request ${issueId} -m "Fixed ${failedCheck}"\` for you. NEVER curl \`/api/review/...\` or any dashboard endpoint — \`pan review request\` is the only supported re-entry point.\n\nThe command can run for several minutes. A yielded exec result or background-terminal notice means it is still running, not that it succeeded. Poll the same terminal until it exits, inspect the real exit code, then confirm \`pan show ${issueId}\` or \`pan review pending\` shows the issue re-entered review. Do NOT stop between steps or after pushing; stop only after exit code 0 and the observed pipeline state change.`;
647
673
  try {
648
674
  const fileResult = await Effect.runPromise(writeFeedbackFile({
649
675
  issueId,
@@ -806,7 +832,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
806
832
  if (changesetHasContent === void 0) console.warn(`[${logPrefix}] empty-changeset guard skipped (one or more repo diffs failed)`);
807
833
  let lastVerifiedCommit;
808
834
  try {
809
- const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-Y0zG25ez.js");
835
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-BAMwn9Nf.js");
810
836
  lastVerifiedCommit = await snapshotWorkspaceHeadsPromise(issueId, workspacePath);
811
837
  } catch {}
812
838
  const prePassMergedOutcome = skipMergedVerification(issueId, logPrefix);
@@ -823,7 +849,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
823
849
  const repo = findProjectByPathSync(workspacePath)?.github_repo;
824
850
  if (!repo || !repo.includes("/")) return;
825
851
  const [owner, name] = repo.split("/");
826
- const { postOverdeckTestsStatus } = await import("./github-app-C33lDk9Z.js");
852
+ const { postOverdeckTestsStatus } = await import("./github-app-BWziYCf3.js");
827
853
  await postOverdeckTestsStatus(workspacePath, owner, name, "success", "Verification gate passed");
828
854
  } catch (err) {
829
855
  console.warn(`[${logPrefix}] Failed to post overdeck/tests status: ${err.message}`);
@@ -861,4 +887,4 @@ function runVerificationForIssueInProcess(issueId, workspacePath, workspaceInfo,
861
887
  //#endregion
862
888
  export { workspaceChangesetHasContent as a, runVerificationForIssueInProcess as i, reconcileInterruptedVerifications as n, runVerificationForIssue as r, changesetHasNoContent as t };
863
889
 
864
- //# sourceMappingURL=verification-runner-DwP2fUEF.js.map
890
+ //# sourceMappingURL=verification-runner-BEq5ZF-h.js.map
@@ -1,2 +1,2 @@
1
- import { n as reconcileInterruptedVerifications, r as runVerificationForIssue } from "./verification-runner-DwP2fUEF.js";
1
+ import { n as reconcileInterruptedVerifications, r as runVerificationForIssue } from "./verification-runner-BEq5ZF-h.js";
2
2
  export { reconcileInterruptedVerifications, runVerificationForIssue };
@@ -107,4 +107,4 @@ function consolidateSpeakerCues(cues) {
107
107
  //#endregion
108
108
  export { vttToMarkdown };
109
109
 
110
- //# sourceMappingURL=vtt-parser-luerJpYT.js.map
110
+ //# sourceMappingURL=vtt-parser-Va--tv27.js.map
@@ -0,0 +1,3 @@
1
+ import { a as init_work_agent_prompt, c as writeStoryFeatureContext, i as getTrackerContext, n as buildWorkAgentPrompt, o as readFeatureContext, r as extractStitchDesigns, s as readPlanningContext, t as buildPolyrepoContext } from "./work-agent-prompt-CaD2ue8m.js";
2
+ init_work_agent_prompt();
3
+ export { buildPolyrepoContext, buildWorkAgentPrompt, extractStitchDesigns, getTrackerContext, readFeatureContext, readPlanningContext, writeStoryFeatureContext };