@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,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fi as init_paths, G as getIssueRecordPath, Ht as init_state_read_home, J as getProjectConfigFromWorkspacePath, Mt as init_state_plane, Pi as getOverdeckHome, Q as queueIssueRecordCommit, Tt as init_auto_commit, U as ensureIssueRecordSync, Vt as STATE_BRANCH, Wt as resolveStateReadHomeSync, Y as init_record, kt as STATE_BRANCH_PATHS, lt as writeIssueRecordSync, rt as resolveProjectForIssue, tt as readIssueRecordSync, wt as flushAutoCommits } from "./config-yaml-BwOEANMr.js";
3
- import { c as init_activity_logger, i as emitActivityEntryOncePortable } from "./activity-logger-BAVLrkR7.js";
4
- import { n as init_fs_lock, o as releaseRecordLock, s as withRecordFsLock, t as acquireRecordLock } from "./fs-lock-cw25uO_E.js";
2
+ import { G as getIssueRecordPath, Ht as init_state_read_home, J as getProjectConfigFromWorkspacePath, Mt as init_state_plane, Q as queueIssueRecordCommit, Ri as getOverdeckHome, Tt as init_auto_commit, U as ensureIssueRecordSync, Vt as STATE_BRANCH, Wt as resolveStateReadHomeSync, Y as init_record, kt as STATE_BRANCH_PATHS, lt as writeIssueRecordSync, rt as resolveProjectForIssue, tt as readIssueRecordSync, wt as flushAutoCommits, zi as init_paths } from "./config-yaml-D60AnTIu.js";
3
+ import { a as emitActivityEntryOncePortable, l as init_activity_logger } from "./activity-logger-SlTXYCVf.js";
4
+ import { n as init_fs_lock, o as releaseRecordLock, s as withRecordFsLock, t as acquireRecordLock } from "./fs-lock-DQ_gUxfq.js";
5
5
  import { basename, dirname, join, relative, resolve } from "node:path";
6
6
  import { Effect } from "effect";
7
7
  import { hostname } from "node:os";
@@ -245,22 +245,24 @@ function updateIssueRecordForWorkspace(workspacePath, issueId, mutator, options
245
245
  */
246
246
  function clearRecordPipelineClosedOutSync(project, issueId, reopenedAt = (/* @__PURE__ */ new Date()).toISOString()) {
247
247
  const record = ensureIssueRecordSync(project, issueId);
248
- if (!record.pipeline.closedOut && !record.pipeline.closedOutAt) return;
248
+ if (!record.pipeline.closedOut && !record.pipeline.closedOutAt && record.pipeline.mergeStatus !== "merged") return;
249
249
  record.pipeline.closedOut = void 0;
250
250
  record.pipeline.closedOutAt = void 0;
251
251
  record.pipeline.reopenedAt = reopenedAt;
252
252
  record.pipeline.updatedAt = reopenedAt;
253
+ if (record.pipeline.mergeStatus === "merged") record.pipeline.mergeStatus = void 0;
253
254
  queueIssueRecordCommit(project, issueId, writeIssueRecordSync(project, issueId, record));
254
255
  }
255
256
  async function clearRecordPipelineClosedOut(project, issueId, options = {}) {
256
257
  let changed = false;
257
258
  const reopenedAt = options.reopenedAt ?? (/* @__PURE__ */ new Date()).toISOString();
258
259
  await updateIssueRecord(project, issueId, (record) => {
259
- if (!record.pipeline.closedOut && !record.pipeline.closedOutAt) return;
260
+ if (!record.pipeline.closedOut && !record.pipeline.closedOutAt && record.pipeline.mergeStatus !== "merged") return;
260
261
  record.pipeline.closedOut = void 0;
261
262
  record.pipeline.closedOutAt = void 0;
262
263
  record.pipeline.reopenedAt = reopenedAt;
263
264
  record.pipeline.updatedAt = reopenedAt;
265
+ if (record.pipeline.mergeStatus === "merged") record.pipeline.mergeStatus = void 0;
264
266
  changed = true;
265
267
  }, { autoCommit: options.autoCommit });
266
268
  return changed;
@@ -622,6 +624,6 @@ var init_record_update = __esmMin((() => {
622
624
  };
623
625
  }));
624
626
  //#endregion
625
- export { updateIssueRecord as a, init_record_update as i, clearRecordPipelineClosedOut as n, updateIssueRecordForWorkspace as o, clearRecordPipelineClosedOutSync as r, RecordDurabilityTimeoutError as t };
627
+ export { updateIssueRecord as a, withStateGitLock as c, init_record_update as i, clearRecordPipelineClosedOut as n, updateIssueRecordForWorkspace as o, clearRecordPipelineClosedOutSync as r, init_state_git_lock as s, RecordDurabilityTimeoutError as t };
626
628
 
627
- //# sourceMappingURL=record-update-D23jPU6b.js.map
629
+ //# sourceMappingURL=record-update-BPqpBu3O.js.map
@@ -1,3 +1,3 @@
1
- import { a as updateIssueRecord, i as init_record_update } from "./record-update-D23jPU6b.js";
1
+ import { a as updateIssueRecord, i as init_record_update } from "./record-update-BPqpBu3O.js";
2
2
  init_record_update();
3
3
  export { updateIssueRecord };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $ as readIssueRecord, On as resolveProjectFromIssueSync, Y as init_record, fn as init_projects, on as getProjectSync } from "./config-yaml-BwOEANMr.js";
3
- import { i as init_record_update, o as updateIssueRecordForWorkspace } from "./record-update-D23jPU6b.js";
2
+ import { $ as readIssueRecord, On as resolveProjectFromIssueSync, Y as init_record, fn as init_projects, on as getProjectSync } from "./config-yaml-D60AnTIu.js";
3
+ import { i as init_record_update, o as updateIssueRecordForWorkspace } from "./record-update-BPqpBu3O.js";
4
4
  //#region ../../lib/cloister/recovery-trip.ts
5
5
  /**
6
6
  * PAN-3092: read an existing trip without taking the per-issue record lock.
@@ -59,12 +59,45 @@ async function recordRecoveryFailure(workspacePath, issue, recoveryPath, obligat
59
59
  });
60
60
  return outcome;
61
61
  }
62
- async function acknowledgeRecoveryTrip(workspacePath, issue, recoveryPath, obligationGeneration) {
63
- const normalized = issue.toUpperCase();
64
- await updateIssueRecordForWorkspace(workspacePath, normalized, (record) => ({
65
- ...record,
66
- recoveryTrips: (record.recoveryTrips ?? []).filter((trip) => !(trip.issue === normalized && trip.recoveryPath === recoveryPath && trip.obligationGeneration === obligationGeneration))
67
- }));
62
+ /**
63
+ * Acknowledge every open recovery trip on one issue via the record door.
64
+ * Returns the count acked; unresolvable/unreadable issues return 0.
65
+ *
66
+ * Removes every open trip in ONE `updateIssueRecordForWorkspace` mutation
67
+ * (one locked read/write/commit/push cycle) instead of one durable write per
68
+ * trip — N open trips on close-out or the residue patrol previously meant N
69
+ * serial git-backed writes for a single record (review finding, PAN-3727).
70
+ * The write is atomic per issue: if the mutation itself fails (e.g. record
71
+ * lock contention), the whole ack for that issue is warned and skipped
72
+ * rather than partially applied — the caller's per-issue isolation (see
73
+ * closeOut() and reconcileTerminalIssueResidue()) is what keeps one issue's
74
+ * failure from blocking the rest.
75
+ */
76
+ async function acknowledgeAllOpenRecoveryTrips(issueId) {
77
+ const normalized = issueId.toUpperCase();
78
+ const resolved = resolveProjectFromIssueSync(normalized);
79
+ if (!resolved) return 0;
80
+ const project = getProjectSync(resolved.projectKey);
81
+ if (!project) return 0;
82
+ const openTrips = ((await readIssueRecord(project, normalized))?.recoveryTrips ?? []).filter((trip) => trip.open === true);
83
+ if (openTrips.length === 0) return 0;
84
+ const isOpenTrip = (trip) => openTrips.some((open) => trip.issue === open.issue && trip.recoveryPath === open.recoveryPath && trip.obligationGeneration === open.obligationGeneration);
85
+ let acked = 0;
86
+ try {
87
+ await updateIssueRecordForWorkspace(resolved.projectPath, normalized, (current) => {
88
+ const before = current.recoveryTrips ?? [];
89
+ const remaining = before.filter((trip) => !isOpenTrip(trip));
90
+ acked = before.length - remaining.length;
91
+ return {
92
+ ...current,
93
+ recoveryTrips: remaining
94
+ };
95
+ });
96
+ } catch (error) {
97
+ console.warn(` ! failed to ack open trips for ${normalized}: ${error instanceof Error ? error.message : String(error)}`);
98
+ return 0;
99
+ }
100
+ return acked;
68
101
  }
69
102
  var init_recovery_trip = __esmMin((() => {
70
103
  init_record();
@@ -72,6 +105,6 @@ var init_recovery_trip = __esmMin((() => {
72
105
  init_projects();
73
106
  }));
74
107
  //#endregion
75
- export { recordRecoveryFailure as i, findRecoveryTrip as n, init_recovery_trip as r, acknowledgeRecoveryTrip as t };
108
+ export { recordRecoveryFailure as i, findRecoveryTrip as n, init_recovery_trip as r, acknowledgeAllOpenRecoveryTrips as t };
76
109
 
77
- //# sourceMappingURL=recovery-trip-C4dTl8DO.js.map
110
+ //# sourceMappingURL=recovery-trip-CpfW6LCJ.js.map
@@ -1,3 +1,3 @@
1
- import { i as recordRecoveryFailure, r as init_recovery_trip } from "./recovery-trip-C4dTl8DO.js";
1
+ import { i as recordRecoveryFailure, r as init_recovery_trip } from "./recovery-trip-CpfW6LCJ.js";
2
2
  init_recovery_trip();
3
3
  export { recordRecoveryFailure };
@@ -1,7 +1,7 @@
1
- import { $t as findProjectByPathSync, fn as init_projects, on as getProjectSync } from "./config-yaml-BwOEANMr.js";
2
- import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-eiE2nC6C.js";
3
- import { p as init_review_status, w as setReviewStatusSync } from "./review-status-DBnR5t4z.js";
4
- import { n as upsertReleaseSetSync, r as withComponentStateSync } from "./release-set-DDXwbIK7.js";
1
+ import { $t as findProjectByPathSync, fn as init_projects, on as getProjectSync } from "./config-yaml-D60AnTIu.js";
2
+ import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-CyW-xSn4.js";
3
+ import { p as init_review_status, w as setReviewStatusSync } from "./review-status-DpniqzPT.js";
4
+ import { n as upsertReleaseSetSync, r as withComponentStateSync } from "./release-set-DOIDz2vw.js";
5
5
  import { exec } from "node:child_process";
6
6
  import { promisify } from "node:util";
7
7
  //#region ../../lib/release/release-plan.ts
@@ -296,4 +296,4 @@ function appendNote(existing, note) {
296
296
  //#endregion
297
297
  export { runRelease };
298
298
 
299
- //# sourceMappingURL=release-engine-Crc0Tjx-.js.map
299
+ //# sourceMappingURL=release-engine-C_OOhCaK.js.map
@@ -1,5 +1,5 @@
1
- import { Gn as init_issue_id, Yn as resolveIssueIdSync } from "./config-yaml-BwOEANMr.js";
2
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-KTp9KV9u.js";
1
+ import { Zn as resolveIssueIdSync, qn as init_issue_id } from "./config-yaml-D60AnTIu.js";
2
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CJRi_5Wu.js";
3
3
  import "effect";
4
4
  //#region ../../lib/overdeck/release-sync.ts
5
5
  init_infra();
@@ -116,4 +116,4 @@ function withComponentStateSync(releaseSet, componentKey, patch) {
116
116
  //#endregion
117
117
  export { upsertReleaseSetSync as n, withComponentStateSync as r, getReleaseSetSync as t };
118
118
 
119
- //# sourceMappingURL=release-set-DDXwbIK7.js.map
119
+ //# sourceMappingURL=release-set-DOIDz2vw.js.map
@@ -1,4 +1,4 @@
1
- import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync, n as deleteWorkspaceMetadataSync, o as saveWorkspaceMetadataSync, r as findRemoteWorkspaceMetadataSync, t as WORKSPACES_DIR } from "./workspace-metadata-dJhXvZGQ.js";
2
- import { C as createFlyProvider, S as FlyProvider, d as killRemoteAgent, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, m as loadRemoteAgentState, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, u as isRemoteAgentRunning, v as sendToRemoteAgent, y as spawnRemoteAgent } from "./remote-agents-Bgtc2nOO.js";
3
- import { n as getRemoteProvider, r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-CBpLi4Yy.js";
1
+ import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync, n as deleteWorkspaceMetadataSync, o as saveWorkspaceMetadataSync, r as findRemoteWorkspaceMetadataSync, t as WORKSPACES_DIR } from "./workspace-metadata-Cu6yfxBS.js";
2
+ import { C as createFlyProvider, S as FlyProvider, d as killRemoteAgent, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, m as loadRemoteAgentState, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, u as isRemoteAgentRunning, v as sendToRemoteAgent, y as spawnRemoteAgent } from "./remote-agents-DbbN7vSm.js";
3
+ import { n as getRemoteProvider, r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-xY0B43Ho.js";
4
4
  export { FlyProvider, WORKSPACES_DIR, checkRemoteSpendCap, createFlyProvider, createFlyProviderFromConfig, deleteWorkspaceMetadataSync, findRemoteWorkspaceMetadataSync, getRemoteAgentOutput, getRemoteProvider, isRemoteAgentRunning, isRemoteAvailable, killRemoteAgent, listRemoteAgents, listWorkspaceMetadataSync, loadRemoteAgentState, loadWorkspaceMetadataSync, pollRemoteAgentStatus, refreshHostHeartbeatForEphemeralVms, saveWorkspaceMetadataSync, sendToRemoteAgent, spawnRemoteAgent };
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Qn as require_dist, Y as init_record, oi as init_errors, rt as resolveProjectForIssue } from "./config-yaml-BwOEANMr.js";
3
- import { S as init_tmux, _ as getManagedTmuxSocketName } from "./tmux-BqXzRuaH.js";
4
- import { C as generateLauncherScriptSync, _ as init_tmux_dedup, b as init_provenance, d as assertValidDedupKey, g as dedupTerminalOptionName, h as dedupTargetOptionName, i as init_auto_spawn_consent, l as KeyedMarkerVerificationError, m as dedupPoisonOptionName, p as dedupPendingOptionName, s as withAutoSpawnConsentClaim, u as KeyedSubmitTargetDeadError, w as init_launcher_generator, x as isOperatorStartedBy } from "./auto-spawn-consent-BDfe4qz0.js";
5
- import { a as init_claude_permissions, i as getClaudePermissionFlagsSync, n as buildClaudeUserSettingsSync, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-aHgDcZi5.js";
6
- import { a as init_state_home, c as isStateMigrated } from "./state-home-DhAZlk5k.js";
2
+ import { Y as init_record, er as require_dist, li as init_errors, rt as resolveProjectForIssue } from "./config-yaml-D60AnTIu.js";
3
+ import { C as init_tmux, v as getManagedTmuxSocketName } from "./tmux-wnT_hg-s.js";
4
+ import { C as generateLauncherScriptSync, _ as init_tmux_dedup, b as init_provenance, d as assertValidDedupKey, g as dedupTerminalOptionName, h as dedupTargetOptionName, i as init_auto_spawn_consent, l as KeyedMarkerVerificationError, m as dedupPoisonOptionName, p as dedupPendingOptionName, s as withAutoSpawnConsentClaim, u as KeyedSubmitTargetDeadError, w as init_launcher_generator, x as isOperatorStartedBy } from "./auto-spawn-consent-BesWchEi.js";
5
+ import { a as init_claude_permissions, i as getClaudePermissionFlagsSync, r as getClaudePermissionFlagsStringSync, t as buildClaudeUserSettingsSync } from "./claude-permissions-DLrb9ovz.js";
6
+ import { a as init_state_home, c as isStateMigrated } from "./state-home-DhsMqg8W.js";
7
7
  import { Data, Effect, Stream } from "effect";
8
8
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
9
9
  import { join } from "path";
@@ -1495,4 +1495,4 @@ var init_remote_agents = __esmMin((() => {
1495
1495
  //#endregion
1496
1496
  export { createFlyProvider as C, FlyProvider as S, saveRemoteAgentState as _, generatePushDaemonScript as a, writeRemoteFile as b, installEphemeralWatchdog as c, killRemoteAgent as d, listActiveRemoteAgentStates as f, refreshHostHeartbeatForEphemeralVms as g, pollRemoteAgentStatus as h, generateEphemeralWatchdogScript as i, installPushDaemon as l, loadRemoteAgentState as m, checkRemoteDurabilityPreflight as n, getRemoteAgentOutput as o, listRemoteAgents as p, checkRemoteSpendCap as r, init_remote_agents as s, assertFlyRemoteStateSupported as t, isRemoteAgentRunning as u, sendToRemoteAgent as v, init_fly_provider as w, sendToRemoteAgentKeyed as x, spawnRemoteAgent as y };
1497
1497
 
1498
- //# sourceMappingURL=remote-agents-Bgtc2nOO.js.map
1498
+ //# sourceMappingURL=remote-agents-DbbN7vSm.js.map
@@ -1,3 +1,3 @@
1
- import { _ as saveRemoteAgentState, a as generatePushDaemonScript, b as writeRemoteFile, c as installEphemeralWatchdog, d as killRemoteAgent, f as listActiveRemoteAgentStates, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, i as generateEphemeralWatchdogScript, l as installPushDaemon, m as loadRemoteAgentState, n as checkRemoteDurabilityPreflight, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, s as init_remote_agents, t as assertFlyRemoteStateSupported, u as isRemoteAgentRunning, v as sendToRemoteAgent, x as sendToRemoteAgentKeyed, y as spawnRemoteAgent } from "./remote-agents-Bgtc2nOO.js";
1
+ import { _ as saveRemoteAgentState, a as generatePushDaemonScript, b as writeRemoteFile, c as installEphemeralWatchdog, d as killRemoteAgent, f as listActiveRemoteAgentStates, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, i as generateEphemeralWatchdogScript, l as installPushDaemon, m as loadRemoteAgentState, n as checkRemoteDurabilityPreflight, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, s as init_remote_agents, t as assertFlyRemoteStateSupported, u as isRemoteAgentRunning, v as sendToRemoteAgent, x as sendToRemoteAgentKeyed, y as spawnRemoteAgent } from "./remote-agents-DbbN7vSm.js";
2
2
  init_remote_agents();
3
3
  export { assertFlyRemoteStateSupported, checkRemoteDurabilityPreflight, checkRemoteSpendCap, generateEphemeralWatchdogScript, generatePushDaemonScript, getRemoteAgentOutput, installEphemeralWatchdog, installPushDaemon, isRemoteAgentRunning, killRemoteAgent, listActiveRemoteAgentStates, listRemoteAgents, loadRemoteAgentState, pollRemoteAgentStatus, refreshHostHeartbeatForEphemeralVms, saveRemoteAgentState, sendToRemoteAgent, sendToRemoteAgentKeyed, spawnRemoteAgent, writeRemoteFile };
@@ -1,10 +1,10 @@
1
- import { On as resolveProjectFromIssueSync, Zt as extractTeamPrefix, fn as init_projects, tn as findProjectByTeamSync } from "./config-yaml-BwOEANMr.js";
2
- import { h as loadConfigSync, p as init_config } from "./config-tucKBCCc.js";
3
- import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME } from "./types-DbxY2QB6.js";
4
- import { t as init_pan_dir } from "./pan-dir-DDd91kMb.js";
5
- import { r as init_workspace_manager, t as createWorkspace } from "./workspace-manager-W1OnbvU5.js";
6
- import { _ as saveRemoteAgentState, f as listActiveRemoteAgentStates, m as loadRemoteAgentState, o as getRemoteAgentOutput, s as init_remote_agents, u as isRemoteAgentRunning, v as sendToRemoteAgent } from "./remote-agents-Bgtc2nOO.js";
7
- import { t as createFlyProviderFromConfig } from "./remote-CBpLi4Yy.js";
1
+ import { On as resolveProjectFromIssueSync, Zt as extractTeamPrefix, fn as init_projects, tn as findProjectByTeamSync } from "./config-yaml-D60AnTIu.js";
2
+ import { h as loadConfigSync, p as init_config } from "./config-NxI9Yl2f.js";
3
+ import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME } from "./types-pLpbsNto.js";
4
+ import { t as init_pan_dir } from "./pan-dir-B4NfzOf3.js";
5
+ import { r as init_workspace_manager, t as createWorkspace } from "./workspace-manager-CM8RCrSc.js";
6
+ import { _ as saveRemoteAgentState, f as listActiveRemoteAgentStates, m as loadRemoteAgentState, o as getRemoteAgentOutput, s as init_remote_agents, u as isRemoteAgentRunning, v as sendToRemoteAgent } from "./remote-agents-DbbN7vSm.js";
7
+ import { t as createFlyProviderFromConfig } from "./remote-xY0B43Ho.js";
8
8
  import { Effect } from "effect";
9
9
  import { existsSync, mkdirSync, statSync, unlinkSync, writeFileSync } from "fs";
10
10
  import { basename, join } from "path";
@@ -309,7 +309,7 @@ async function reapCompletedRemoteAgents(opts = {}) {
309
309
  } catch {
310
310
  details.push("No continue.json retrieved from VM (skipped)");
311
311
  }
312
- const { getAgentStateSync, saveAgentStateSync } = await import("./agents-megfmQHM.js");
312
+ const { getAgentStateSync, saveAgentStateSync } = await import("./agents-DixZjXWm.js");
313
313
  const existing = getAgentStateSync(agentId);
314
314
  if (existing) {
315
315
  existing.workspace = existing.workspace || workspacePath;
@@ -327,8 +327,8 @@ async function reapCompletedRemoteAgents(opts = {}) {
327
327
  startedAt: remoteState.startedAt,
328
328
  lastActivity: (/* @__PURE__ */ new Date()).toISOString()
329
329
  });
330
- const { createReviewArtifactsForIssue } = await import("./review-artifacts-BJeEfm2r.js");
331
- const { setReviewStatusSync } = await import("./review-status-CUnjjOUu.js");
330
+ const { createReviewArtifactsForIssue } = await import("./review-artifacts-DgaDlbO4.js");
331
+ const { setReviewStatusSync } = await import("./review-status-Bge_3XTR.js");
332
332
  const primaryArtifact = (await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath))).mergeSet?.repos.find((repo) => !!repo.artifactUrl);
333
333
  if (primaryArtifact?.artifactUrl) {
334
334
  setReviewStatusSync(issueId, { prUrl: primaryArtifact.artifactUrl });
@@ -349,7 +349,7 @@ async function reapCompletedRemoteAgents(opts = {}) {
349
349
  try {
350
350
  const fly = createFlyProviderFromConfig(loadConfigSync().remote);
351
351
  if (sessionAlive) {
352
- const { killRemoteAgent } = await import("./remote-agents-DQVGZVQ9.js");
352
+ const { killRemoteAgent } = await import("./remote-agents-MuXx2gWm.js");
353
353
  await killRemoteAgent(agentId, vmName).catch(() => void 0);
354
354
  }
355
355
  await Effect.runPromise(fly.deleteVm(vmName));
@@ -357,7 +357,7 @@ async function reapCompletedRemoteAgents(opts = {}) {
357
357
  } catch (err) {
358
358
  details.push(`Warning: could not destroy machine: ${err.message}`);
359
359
  }
360
- const { deleteWorkspaceMetadataSync } = await import("./workspace-metadata-tbbevEmP.js");
360
+ const { deleteWorkspaceMetadataSync } = await import("./workspace-metadata-BEOwJSdK.js");
361
361
  deleteWorkspaceMetadataSync(issueId);
362
362
  details.push("Removed remote workspace metadata (pipeline is local from here)");
363
363
  saveRemoteAgentState({
@@ -386,4 +386,4 @@ async function reapCompletedRemoteAgents(opts = {}) {
386
386
  //#endregion
387
387
  export { reapCompletedRemoteAgents, refreshClaudeCredentialsForActiveRemoteAgents };
388
388
 
389
- //# sourceMappingURL=remote-completion-DxUJ5HKR.js.map
389
+ //# sourceMappingURL=remote-completion-LcWCpAm2.js.map
@@ -1,5 +1,5 @@
1
- import "./workspace-metadata-dJhXvZGQ.js";
2
- import { C as createFlyProvider, s as init_remote_agents, w as init_fly_provider } from "./remote-agents-Bgtc2nOO.js";
1
+ import "./workspace-metadata-Cu6yfxBS.js";
2
+ import { C as createFlyProvider, s as init_remote_agents, w as init_fly_provider } from "./remote-agents-DbbN7vSm.js";
3
3
  import { Effect } from "effect";
4
4
  //#region ../../lib/remote/index.ts
5
5
  init_fly_provider();
@@ -52,4 +52,4 @@ function createFlyProviderFromConfig(remoteConfig, tierOverride) {
52
52
  //#endregion
53
53
  export { getRemoteProvider as n, isRemoteAvailable as r, createFlyProviderFromConfig as t };
54
54
 
55
- //# sourceMappingURL=remote-CBpLi4Yy.js.map
55
+ //# sourceMappingURL=remote-xY0B43Ho.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-KTp9KV9u.js";
2
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CJRi_5Wu.js";
3
3
  import { join, resolve } from "node:path";
4
4
  import { existsSync, realpathSync } from "node:fs";
5
5
  //#region ../../lib/workspaces/resolver.ts
@@ -240,4 +240,4 @@ var init_resolver = __esmMin((() => {
240
240
  //#endregion
241
241
  export { getWorkspaceForIssue as a, listProjectTargets as c, resolveIssueWorkspaceSyncTarget as d, resolveWorkspaceForCwd as f, getWorkspaceById as i, listProjects as l, getProjectByKey as n, init_resolver as o, resolveWorkspaceRef as p, getProjectByPath as r, listPinnedDocs as s, getMainWorkspace as t, listWorkspaces as u };
242
242
 
243
- //# sourceMappingURL=resolver-CuAULbLs.js.map
243
+ //# sourceMappingURL=resolver-C2QKOf09.js.map
@@ -1,9 +1,9 @@
1
- import { $ as readIssueRecord, Fi as init_paths, On as resolveProjectFromIssueSync, Pi as getOverdeckHome, Y as init_record, fn as init_projects, on as getProjectSync } from "./config-yaml-BwOEANMr.js";
2
- import { cn as listAgentStates, sn as init_queries, un as listRunningAgentsSync } from "./agent-state-Bb3UUxQm.js";
3
- import { h as loadReviewStatuses, p as init_review_status } from "./review-status-DBnR5t4z.js";
4
- import { i as shouldSkipReviewStatus } from "./stuck-remediation-Di5JYkoo.js";
5
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-dvEWKO7Q.js";
6
- import "./deacon-merge-BOGFEV8_.js";
1
+ import { $ as readIssueRecord, On as resolveProjectFromIssueSync, Ri as getOverdeckHome, Y as init_record, fn as init_projects, on as getProjectSync, zi as init_paths } from "./config-yaml-D60AnTIu.js";
2
+ import { _n as listAgentStates, gn as init_queries, yn as listRunningAgentsSync } from "./agent-state-FABw8neJ.js";
3
+ import { h as loadReviewStatuses, p as init_review_status } from "./review-status-DpniqzPT.js";
4
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-CiYAa6bX.js";
5
+ import { t as isRecordPipelineTerminal } from "./parked-residue-8WbU0y1z.js";
6
+ import { s as shouldSkipReviewStatus } from "./stuck-remediation-kta3KN7c.js";
7
7
  import { existsSync } from "fs";
8
8
  import { join } from "path";
9
9
  //#region ../../lib/parked/resolver.ts
@@ -255,6 +255,25 @@ function classifyParked(s) {
255
255
  }
256
256
  return rows;
257
257
  }
258
+ /**
259
+ * Record-level terminality via the shared isRecordPipelineTerminal predicate
260
+ * (also used by the terminal-issue residue patrol, PAN-3727) — closedOut, or
261
+ * mergeStatus='merged' with no reopenedAt. Any throw or missing record is
262
+ * "not terminal" so this check can only suppress, never invent, a park.
263
+ */
264
+ async function defaultReadRecordTerminal(issueId) {
265
+ try {
266
+ const resolved = resolveProjectFromIssueSync(issueId);
267
+ if (!resolved) return false;
268
+ const project = getProjectSync(resolved.projectKey);
269
+ if (!project) return false;
270
+ const record = await readIssueRecord(project, issueId);
271
+ if (!record) return false;
272
+ return isRecordPipelineTerminal(record);
273
+ } catch {
274
+ return false;
275
+ }
276
+ }
258
277
  async function defaultReadOpenTrips(issueId) {
259
278
  try {
260
279
  const resolved = resolveProjectFromIssueSync(issueId);
@@ -281,6 +300,7 @@ async function resolveParkedPopulation(options = {}) {
281
300
  const now = options.now ?? Date.now();
282
301
  const readTrips = options.readOpenTrips ?? defaultReadOpenTrips;
283
302
  const isClosed = options.isClosed ?? isIssueClosed;
303
+ const readRecordTerminal = options.readRecordTerminal ?? defaultReadRecordTerminal;
284
304
  const statuses = loadReviewStatuses();
285
305
  const allAgents = listAgentStates();
286
306
  const liveAgents = listRunningAgentsSync().filter((a) => a.tmuxActive && (a.status === "running" || a.status === "starting"));
@@ -310,7 +330,10 @@ async function resolveParkedPopulation(options = {}) {
310
330
  const reviewStatus = statuses[Object.keys(statuses).find((key) => key.toUpperCase() === issueId) ?? issueId] ?? null;
311
331
  const live = liveByIssue.get(issueId) ?? [];
312
332
  let issueClosed = closedByIssue.get(issueId) ?? null;
313
- if (issueClosed === null && live.length > 0 && reviewStatus?.mergeStatus !== "merged") try {
333
+ if (issueClosed === null && await readRecordTerminal(issueId)) {
334
+ issueClosed = true;
335
+ closedByIssue.set(issueId, true);
336
+ } else if (issueClosed === null && live.length > 0 && reviewStatus?.mergeStatus !== "merged") try {
314
337
  issueClosed = await isClosed(issueId);
315
338
  closedByIssue.set(issueId, issueClosed);
316
339
  } catch {
@@ -362,4 +385,4 @@ function summarizeParked(rows) {
362
385
  //#endregion
363
386
  export { resolveParkedPopulation as n, summarizeParked as r, PARKED_ORBIT_SEVERITY as t };
364
387
 
365
- //# sourceMappingURL=resolver-C8rooxoz.js.map
388
+ //# sourceMappingURL=resolver-D4nsxfGo.js.map
@@ -0,0 +1,3 @@
1
+ import { Ft as resumeAgent, Pt as init_resume } from "./agent-state-FABw8neJ.js";
2
+ init_resume();
3
+ export { resumeAgent };
@@ -1,20 +1,21 @@
1
- import { Er as resolveModel, Fi as init_paths, Pi as getOverdeckHome, Ri as packageRoot, Y as init_record, Yr as FsError, oi as init_errors, p as loadConfigSync, rt as resolveProjectForIssue, si as AGENTS_DIR, t as init_config_yaml, tt as readIssueRecordSync } from "./config-yaml-BwOEANMr.js";
2
- import { f as getDevrootPathSync, p as init_config } from "./config-tucKBCCc.js";
3
- import { a as emitActivityEntrySync, c as init_activity_logger } from "./activity-logger-BAVLrkR7.js";
4
- import { A as listSessionNames, S as init_tmux, T as killSession, w as isPaneDead } from "./tmux-BqXzRuaH.js";
5
- import { c as init_agents, d as removeAgentRecordSync, l as listAgentIdsByPrefixSync, s as ensureAgentTombstoneSync, u as listAllAgentsSync } from "./agents-CqQJW75N.js";
6
- import { _n as removeAgentStateDir, gn as markRetainedTranscripts, h as init_agent_state, m as getAgentStateSync, mn as init_state_dir_removal } from "./agent-state-Bb3UUxQm.js";
7
- import { a as PAN_DIRNAME, m as init_types } from "./types-DbxY2QB6.js";
8
- import { d as readPlan, i as findPlanSync, s as init_io } from "./io-DfvO2xyh.js";
9
- import { a as init_lifecycle_io, i as findXBriefByIssueSync } from "./lifecycle-io-CCBpRv5m.js";
10
- import { i as init_project_repos, u as resolveWorkspaceRepoRootsSync } from "./project-repos-B4MK48j4.js";
11
- import { E as init_review_verdict_guards, T as clearSupersededReviewInfrastructureFailure, d as getReviewStatusSync, p as init_review_status, w as setReviewStatusSync } from "./review-status-DBnR5t4z.js";
12
- import { i as convergeRowFromVerdictOfRecord, r as REVIEW_SUB_ROLES, t as evaluateReviewConvoyLiveness } from "./review-convoy-liveness-DfF9eXjI.js";
13
- import { n as shouldSkipDispatchAsMerged } from "./merge-verification-BRp08IzI.js";
14
- import "./review-verdict-feedback-C-dBon_-.js";
15
- import { n as createPromiseCoalescer } from "./in-flight-guard-pcwXKLGz.js";
16
- import { r as lookupPullRequestNumberForBranch } from "./github-pr-lookup-C9Vokb0W.js";
17
- import { o as resolveConflictGate, r as getCachedConflictGateMergeability, t as buildRealConflictGateDeps } from "./conflict-gate-D2L1kZeL.js";
1
+ import { Hi as packageRoot, Or as resolveModel, Qr as FsError, Ri as getOverdeckHome, Y as init_record, li as init_errors, p as loadConfigSync, rt as resolveProjectForIssue, t as init_config_yaml, tt as readIssueRecordSync, ui as AGENTS_DIR, zi as init_paths } from "./config-yaml-D60AnTIu.js";
2
+ import { f as getDevrootPathSync, p as init_config } from "./config-NxI9Yl2f.js";
3
+ import { l as init_activity_logger, o as emitActivityEntrySync } from "./activity-logger-SlTXYCVf.js";
4
+ import { C as init_tmux, E as killSession, T as isPaneDead, j as listSessionNames } from "./tmux-wnT_hg-s.js";
5
+ import { c as init_agents, d as removeAgentRecordSync, l as listAgentIdsByPrefixSync, s as ensureAgentTombstoneSync, u as listAllAgentsSync } from "./agents-DzpQidT8.js";
6
+ import { Cn as init_state_dir_removal, En as removeAgentStateDir, Tn as markRetainedTranscripts, _ as init_agent_state, g as getAgentStateSync } from "./agent-state-FABw8neJ.js";
7
+ import { a as PAN_DIRNAME, m as init_types } from "./types-pLpbsNto.js";
8
+ import { d as readPlan, i as findPlanSync, s as init_io } from "./io-BCtZoXHo.js";
9
+ import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos } from "./project-repos-CsfvLtmr.js";
10
+ import { a as init_lifecycle_io, i as findXBriefByIssueSync } from "./lifecycle-io-D7N0vQNj.js";
11
+ import { E as init_review_verdict_guards, T as clearSupersededReviewInfrastructureFailure, d as getReviewStatusSync, p as init_review_status, w as setReviewStatusSync } from "./review-status-DpniqzPT.js";
12
+ import { i as convergeRowFromVerdictOfRecord, r as REVIEW_SUB_ROLES, t as evaluateReviewConvoyLiveness } from "./review-convoy-liveness-BBvyuRLC.js";
13
+ import { d as isReviewSessionForIssue, l as init_specialists_registry } from "./specialists-registry-Bng0OFGH.js";
14
+ import { n as shouldSkipDispatchAsMerged } from "./merge-verification-BfJRNMiD.js";
15
+ import "./review-verdict-feedback-B2ojHFH5.js";
16
+ import { n as createPromiseCoalescer } from "./in-flight-guard-B7khcBdQ.js";
17
+ import { r as lookupPullRequestNumberForBranch } from "./github-pr-lookup-bGcsEvLE.js";
18
+ import { o as resolveConflictGate, r as getCachedConflictGateMergeability, t as buildRealConflictGateDeps } from "./conflict-gate-hAUCL-un.js";
18
19
  import { join } from "node:path";
19
20
  import { Effect } from "effect";
20
21
  import { existsSync } from "fs";
@@ -821,6 +822,7 @@ function reviewResumeDecision(params) {
821
822
  }
822
823
  //#endregion
823
824
  //#region ../../lib/cloister/review-convoy.ts
825
+ init_specialists_registry();
824
826
  /**
825
827
  * PAN-1862: the review CONVOY — sub-reviewer prompts and spawning, plus
826
828
  * missing-reviewer recovery.
@@ -920,7 +922,7 @@ async function buildConvoyPromptPromise(opts) {
920
922
  }
921
923
  async function spawnReviewSubRoleForIssuePromise(opts) {
922
924
  try {
923
- const { saveAgentState, spawnRun, getAgentStateSync, getLatestSessionIdSync, resumeAgent, stopAgent } = await import("./agents-megfmQHM.js");
925
+ const { saveAgentState, spawnRun, getAgentStateSync, getLatestSessionIdSync, resumeAgent, stopAgent } = await import("./agents-DixZjXWm.js");
924
926
  const cfg = loadConfigSync().config;
925
927
  const outputPath = opts.outputPath ?? reviewerAgentOutputPath(opts.workspace, opts.runId, opts.subRole);
926
928
  const synthesisAgentId = opts.synthesisAgentId ?? `agent-${opts.issueId.toLowerCase()}-review`;
@@ -1018,7 +1020,7 @@ async function spawnReviewSubRoleForIssuePromise(opts) {
1018
1020
  });
1019
1021
  }
1020
1022
  try {
1021
- const { notifyPipelineSync } = await import("./pipeline-notifier-C4fZ2ito.js");
1023
+ const { notifyPipelineSync } = await import("./pipeline-notifier-B5DPXvnr.js");
1022
1024
  notifyPipelineSync({
1023
1025
  type: "reviewer_started",
1024
1026
  issueId: opts.issueId,
@@ -1056,7 +1058,7 @@ async function launchConvoyReviewersPromise(params) {
1056
1058
  allowHost: params.allowHost ?? false
1057
1059
  }));
1058
1060
  if (!result.success) try {
1059
- const { messageAgent } = await import("./agents-megfmQHM.js");
1061
+ const { messageAgent } = await import("./agents-DixZjXWm.js");
1060
1062
  await messageAgent(params.synthesisAgentId, `REVIEWER_FAILED ${subRole} ${result.error ?? result.message}`);
1061
1063
  } catch (signalErr) {
1062
1064
  console.warn(`[review-agent] Failed to signal ${subRole} spawn failure to ${params.synthesisAgentId}:`, signalErr);
@@ -1086,7 +1088,7 @@ const spawnReviewSubRoleForIssue = (opts) => Effect.promise(() => spawnReviewSub
1086
1088
  async function recoverMissingConvoyReviewers(issueId, opts = {}) {
1087
1089
  const normalized = issueId.toUpperCase();
1088
1090
  const parentId = `agent-${normalized.toLowerCase()}-review`;
1089
- const { saveAgentState, getAgentStateSync } = await import("./agents-megfmQHM.js");
1091
+ const { saveAgentState, getAgentStateSync } = await import("./agents-DixZjXWm.js");
1090
1092
  const parentState = getAgentStateSync(parentId);
1091
1093
  if (!parentState) return {
1092
1094
  success: false,
@@ -1094,7 +1096,7 @@ async function recoverMissingConvoyReviewers(issueId, opts = {}) {
1094
1096
  };
1095
1097
  let parent;
1096
1098
  try {
1097
- const { resolveReviewParentRunState } = await import("./review-run-recovery-ZjuDTNhZ.js");
1099
+ const { resolveReviewParentRunState } = await import("./review-run-recovery-DCzWMMvE.js");
1098
1100
  parent = await resolveReviewParentRunState(parentState, { persistCurrent: true });
1099
1101
  } catch (error) {
1100
1102
  return {
@@ -1126,7 +1128,7 @@ async function recoverMissingConvoyReviewers(issueId, opts = {}) {
1126
1128
  if (stateClaimsLive) {
1127
1129
  if (!livenessProbeOk) continue;
1128
1130
  try {
1129
- const { markAgentStoppedState } = await import("./agent-state-DH_-Jkua.js");
1131
+ const { markAgentStoppedState } = await import("./agent-state-BrUPf_7Z.js");
1130
1132
  await Effect.runPromise(saveAgentState(markAgentStoppedState(reviewer, "system")));
1131
1133
  } catch {}
1132
1134
  }
@@ -1216,9 +1218,9 @@ const reviewSynthesisPath = (reviewDir) => join$1(reviewDir, "synthesis.md");
1216
1218
  const selfReviewReportPath = (reviewDir) => join$1(reviewDir, "review.md");
1217
1219
  async function deriveReviewRunHead8(issueId, workspace) {
1218
1220
  try {
1219
- const { resolvePrimaryWorkspaceRepoDirSync, resolveWorkspaceRepoRootsSync } = await import("./project-repos-BJiShUsN.js");
1221
+ const { resolvePrimaryWorkspaceRepoDirSync, resolveWorkspaceRepoRootsSync } = await import("./project-repos-BVdi9-ch.js");
1220
1222
  if (resolveWorkspaceRepoRootsSync(issueId, workspace).some((root) => root.isPolyrepo)) {
1221
- const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-Y0zG25ez.js");
1223
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-BAMwn9Nf.js");
1222
1224
  const anchor = await snapshotWorkspaceHeadsPromise(issueId, workspace);
1223
1225
  return anchor ? createHash("sha1").update(anchor).digest("hex").substring(0, 8) : "unknown";
1224
1226
  }
@@ -1354,6 +1356,7 @@ function buildSelfReviewPrompt(opts) {
1354
1356
  return prompt;
1355
1357
  }
1356
1358
  async function spawnReviewRoleForIssuePromise(opts) {
1359
+ const dispatchStartedAtMs = Date.now();
1357
1360
  if (!opts.model) {
1358
1361
  const project = resolveProjectForIssue(opts.issueId);
1359
1362
  const issueModel = project ? readIssueRecordSync(project, opts.issueId)?.reviewModel : void 0;
@@ -1494,7 +1497,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
1494
1497
  };
1495
1498
  }
1496
1499
  try {
1497
- const { archiveFeedbackFiles } = await import("./feedback-writer-DfuVjvH0.js");
1500
+ const { archiveFeedbackFiles } = await import("./feedback-writer-BzN4qvaP.js");
1498
1501
  await Effect.runPromise(archiveFeedbackFiles(opts.workspace));
1499
1502
  } catch {}
1500
1503
  if ((await convergeRowFromVerdictOfRecord(opts.issueId, {
@@ -1530,7 +1533,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
1530
1533
  };
1531
1534
  }
1532
1535
  try {
1533
- const { notifyPipelineSync } = await import("./pipeline-notifier-C4fZ2ito.js");
1536
+ const { notifyPipelineSync } = await import("./pipeline-notifier-B5DPXvnr.js");
1534
1537
  notifyPipelineSync({
1535
1538
  type: "task_queued",
1536
1539
  specialist: "review-agent",
@@ -1538,7 +1541,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
1538
1541
  });
1539
1542
  } catch {}
1540
1543
  try {
1541
- const { spawnRun, saveAgentState, getAgentState, getAgentStateSync, getLatestSessionIdSync, resumeAgent, wipeAgentStateDirs } = await import("./agents-megfmQHM.js");
1544
+ const { spawnRun, saveAgentState, getAgentState, getAgentStateSync, getLatestSessionIdSync, resumeAgent, wipeAgentStateDirs } = await import("./agents-DixZjXWm.js");
1542
1545
  const workAgentState = await Effect.runPromise(getAgentState(`agent-${opts.issueId.toLowerCase()}`));
1543
1546
  const allowHost = opts.allowHost === true || workAgentState?.hostOverride === true;
1544
1547
  const head8 = await deriveReviewRunHead8(opts.issueId, opts.workspace);
@@ -1676,6 +1679,16 @@ async function spawnReviewRoleForIssuePromise(opts) {
1676
1679
  };
1677
1680
  } catch (err) {
1678
1681
  console.error(`[review-agent] Failed to spawn review role for ${opts.issueId}:`, err);
1682
+ try {
1683
+ const orphan = getAgentStateSync(reviewSessionName);
1684
+ const orphanStartedMs = orphan?.startedAt ? Date.parse(orphan.startedAt) : NaN;
1685
+ if (orphan !== null && orphan !== void 0 && Number.isFinite(orphanStartedMs) && orphanStartedMs >= dispatchStartedAtMs - 5e3) {
1686
+ if ((await Effect.runPromise(listSessionNames()).catch(() => [])).includes(reviewSessionName)) await Effect.runPromise(killSession(reviewSessionName)).catch(() => {});
1687
+ orphan.status = "error";
1688
+ const { saveAgentState } = await import("./agents-DixZjXWm.js");
1689
+ await Effect.runPromise(saveAgentState(orphan)).catch(() => {});
1690
+ }
1691
+ } catch {}
1679
1692
  setReviewStatusSync(opts.issueId, {
1680
1693
  reviewStatus: "failed",
1681
1694
  reviewNotes: `Review role spawn failed: ${err instanceof Error ? err.message : String(err)}`
@@ -1687,31 +1700,6 @@ async function spawnReviewRoleForIssuePromise(opts) {
1687
1700
  };
1688
1701
  }
1689
1702
  }
1690
- /**
1691
- * Kill all canonical reviewer sessions for one issue.
1692
- *
1693
- * PAN-915: this is no longer called per-round. Canonical reviewer sessions
1694
- * persist across review rounds via PAN-830's `remain-on-exit on` so each
1695
- * round resumes the same Claude process via `sendKeysAsync` — preserving
1696
- * the reviewer's accumulated context (codebase patterns, prior findings,
1697
- * decisions made during earlier rounds). This function is now invoked from
1698
- * terminal lifecycle events: merge complete, reset, cancel, deep-wipe, and
1699
- * explicit `pan review abort`.
1700
- *
1701
- * Matches the parent review role, convoy children, and legacy coordinator
1702
- * sessions so callers do not need to know which review phase has started.
1703
- */
1704
- function isReviewSessionForIssue(sessionName, projectKey, issueId) {
1705
- const session = sessionName.toLowerCase();
1706
- const issue = issueId.toLowerCase();
1707
- const project = projectKey?.toLowerCase();
1708
- if (session.startsWith("conv-")) return false;
1709
- if (session === `agent-${issue}-review` || session.startsWith(`agent-${issue}-review-`)) return true;
1710
- if (session.startsWith(`review-${issue}-`) || session.startsWith(`review-coordinator-${issue}-`)) return true;
1711
- if (!project) return false;
1712
- if (session === `specialist-${project}-${issue}-review-agent`) return true;
1713
- return session.startsWith(`specialist-${project}-${issue}-review-`);
1714
- }
1715
1703
  async function killAllReviewerSessionsPromise(projectKey, issueId) {
1716
1704
  const killed = [];
1717
1705
  const failed = [];
@@ -1858,6 +1846,6 @@ async function purgeReviewAgentsForIssue(projectKey, issueId) {
1858
1846
  };
1859
1847
  }
1860
1848
  //#endregion
1861
- export { getDiffStat as _, isReviewStaleSync as a, purgeReviewAgentsForIssue as c, buildConvoyPrompt as d, recoverMissingConvoyReviewers as f, getDiffBase as g, getChangedFiles as h, isReviewSessionForIssue as i, resolveReviewMode as l, reviewResumeDecision as m, buildReviewRolePrompt as n, killAllReviewSessions as o, spawnReviewSubRoleForIssue as p, isExtendedReviewEnabled as r, killAllReviewerSessions as s, PARENT_REVIEW_TIMEOUT_MS as t, spawnReviewRoleForIssue as u };
1849
+ export { killAllReviewSessions as a, resolveReviewMode as c, recoverMissingConvoyReviewers as d, spawnReviewSubRoleForIssue as f, getDiffStat as g, getDiffBase as h, isReviewStaleSync as i, spawnReviewRoleForIssue as l, getChangedFiles as m, buildReviewRolePrompt as n, killAllReviewerSessions as o, reviewResumeDecision as p, isExtendedReviewEnabled as r, purgeReviewAgentsForIssue as s, PARENT_REVIEW_TIMEOUT_MS as t, buildConvoyPrompt as u };
1862
1850
 
1863
- //# sourceMappingURL=review-agent-7C2w5CzU.js.map
1851
+ //# sourceMappingURL=review-agent-BRBTm1qE.js.map
@@ -0,0 +1,3 @@
1
+ import { d as isReviewSessionForIssue } from "./specialists-registry-Bng0OFGH.js";
2
+ import { a as killAllReviewSessions, c as resolveReviewMode, d as recoverMissingConvoyReviewers, f as spawnReviewSubRoleForIssue, i as isReviewStaleSync, l as spawnReviewRoleForIssue, n as buildReviewRolePrompt, o as killAllReviewerSessions, p as reviewResumeDecision, r as isExtendedReviewEnabled, s as purgeReviewAgentsForIssue, t as PARENT_REVIEW_TIMEOUT_MS, u as buildConvoyPrompt } from "./review-agent-BRBTm1qE.js";
3
+ export { PARENT_REVIEW_TIMEOUT_MS, buildConvoyPrompt, buildReviewRolePrompt, isExtendedReviewEnabled, isReviewSessionForIssue, isReviewStaleSync, killAllReviewSessions, killAllReviewerSessions, purgeReviewAgentsForIssue, recoverMissingConvoyReviewers, resolveReviewMode, reviewResumeDecision, spawnReviewRoleForIssue, spawnReviewSubRoleForIssue };
@@ -1,8 +1,8 @@
1
- import { Gn as init_issue_id, Un as extractNumberSync } from "./config-yaml-BwOEANMr.js";
2
- import { a as emitActivityEntrySync, c as init_activity_logger } from "./activity-logger-BAVLrkR7.js";
3
- import { i as findPlanSync, s as init_io } from "./io-DfvO2xyh.js";
4
- import { c as withRepoArtifactUrlSync, i as init_merge_set, l as withRepoStateSync, n as ensureMergeSetForIssueSync, s as upsertMergeSetSync } from "./merge-set-eiE2nC6C.js";
5
- import { n as getForgeAdapter } from "./forge-DYX9sKzG.js";
1
+ import { Gn as extractNumberSync, qn as init_issue_id } from "./config-yaml-D60AnTIu.js";
2
+ import { l as init_activity_logger, o as emitActivityEntrySync } from "./activity-logger-SlTXYCVf.js";
3
+ import { i as findPlanSync, s as init_io } from "./io-BCtZoXHo.js";
4
+ import { c as withRepoArtifactUrlSync, i as init_merge_set, l as withRepoStateSync, n as ensureMergeSetForIssueSync, s as upsertMergeSetSync } from "./merge-set-CyW-xSn4.js";
5
+ import { n as getForgeAdapter } from "./forge-CHADjOFs.js";
6
6
  import { join } from "node:path";
7
7
  import { Data, Effect } from "effect";
8
8
  import { existsSync } from "node:fs";
@@ -153,4 +153,4 @@ const createReviewArtifactsForIssue = (issueId, workspacePath) => Effect.tryProm
153
153
  //#endregion
154
154
  export { createReviewArtifactsForIssue };
155
155
 
156
- //# sourceMappingURL=review-artifacts-BJeEfm2r.js.map
156
+ //# sourceMappingURL=review-artifacts-DgaDlbO4.js.map