@overdeck/core 0.45.10 → 0.45.11

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 (219) hide show
  1. package/dist/{agent-state-KVbJEG5f.js → agent-state-RLhS7ckO.js} +1 -1
  2. package/dist/{agents-pp8FO7Uj.js → agents-By3u_fQ8.js} +1 -1
  3. package/dist/{agents-CQHK0CSA.js → agents-CgVr77Qq.js} +12 -12
  4. package/dist/{agents-CQHK0CSA.js.map → agents-CgVr77Qq.js.map} +1 -1
  5. package/dist/{backlog-auto-trigger-CyuoS0nl.js → backlog-auto-trigger-B_-1tk4e.js} +5 -5
  6. package/dist/{backlog-auto-trigger-CyuoS0nl.js.map → backlog-auto-trigger-B_-1tk4e.js.map} +1 -1
  7. package/dist/cli/index.js +45 -45
  8. package/dist/{cli-Cewlu3yU.js → cli-DGeSW85B.js} +2 -2
  9. package/dist/{cli-Cewlu3yU.js.map → cli-DGeSW85B.js.map} +1 -1
  10. package/dist/cli-MTB9IOoR.js +3 -0
  11. package/dist/{close-issue-BJGX9_z7.js → close-issue-Djajb6Sv.js} +2 -2
  12. package/dist/{close-issue-BJGX9_z7.js.map → close-issue-Djajb6Sv.js.map} +1 -1
  13. package/dist/{concurrency-Ca-fC7tA.js → concurrency-4rzjHAQA.js} +1 -1
  14. package/dist/{conversation-compaction-B_6s9EvM.js → conversation-compaction-BQvZh09I.js} +4 -4
  15. package/dist/{conversation-compaction-B_6s9EvM.js.map → conversation-compaction-BQvZh09I.js.map} +1 -1
  16. package/dist/dashboard/{advancing-selfheal-CMlGznKv.js → advancing-selfheal-BezNfM3P.js} +3 -3
  17. package/dist/dashboard/{advancing-selfheal-CMlGznKv.js.map → advancing-selfheal-BezNfM3P.js.map} +1 -1
  18. package/dist/dashboard/{agent-state-xk_G8t90.js → agent-state-BUANcaA7.js} +1 -1
  19. package/dist/dashboard/{agent-state-service-C1iUF9Ft.js → agent-state-service-DmFpIMbP.js} +1 -1
  20. package/dist/dashboard/{agent-state-service-5ge9xxhx.js → agent-state-service-tXUdp6UF.js} +2 -2
  21. package/dist/dashboard/{agent-state-service-5ge9xxhx.js.map → agent-state-service-tXUdp6UF.js.map} +1 -1
  22. package/dist/dashboard/{agents-BIggLvi_.js → agents-C-vqmKDi.js} +1 -1
  23. package/dist/dashboard/{agents-DHvsjsuP.js → agents-C7V4odQ6.js} +11 -11
  24. package/dist/dashboard/{agents-DHvsjsuP.js.map → agents-C7V4odQ6.js.map} +1 -1
  25. package/dist/dashboard/{backlog-auto-trigger-COm_R96V.js → backlog-auto-trigger-Cb8PR-5w.js} +2 -2
  26. package/dist/dashboard/{backlog-auto-trigger-COm_R96V.js.map → backlog-auto-trigger-Cb8PR-5w.js.map} +1 -1
  27. package/dist/dashboard/{cli-CvK9xuSS.js → cli-BgzbB6h3.js} +2 -2
  28. package/dist/dashboard/{cli-CvK9xuSS.js.map → cli-BgzbB6h3.js.map} +1 -1
  29. package/dist/dashboard/cli-DCqy_wFa.js +3 -0
  30. package/dist/dashboard/{close-issue-BnpErnD1.js → close-issue-BWf3pxn4.js} +2 -2
  31. package/dist/dashboard/{close-issue-BnpErnD1.js.map → close-issue-BWf3pxn4.js.map} +1 -1
  32. package/dist/dashboard/{closed-issue-reaper-DRqK5k39.js → closed-issue-reaper-D7XPq5pY.js} +4 -4
  33. package/dist/dashboard/{closed-issue-reaper-DRqK5k39.js.map → closed-issue-reaper-D7XPq5pY.js.map} +1 -1
  34. package/dist/dashboard/{closed-issue-reaper-BLCQwTpF.js → closed-issue-reaper-VSTSTROK.js} +1 -1
  35. package/dist/dashboard/{conflict-gate-JdFuhKuF.js → conflict-gate-DwOslTij.js} +1 -1
  36. package/dist/dashboard/{conflict-gate-BhKvrPxn.js → conflict-gate-FFEvTDVA.js} +3 -3
  37. package/dist/dashboard/{conflict-gate-BhKvrPxn.js.map → conflict-gate-FFEvTDVA.js.map} +1 -1
  38. package/dist/dashboard/{conversation-compaction-C5o_eKEm.js → conversation-compaction-CCqN4hWk.js} +4 -4
  39. package/dist/dashboard/{conversation-compaction-C5o_eKEm.js.map → conversation-compaction-CCqN4hWk.js.map} +1 -1
  40. package/dist/dashboard/{conversation-compaction-Ba5aZdrb.js → conversation-compaction-CL5Ti4j4.js} +1 -1
  41. package/dist/dashboard/{deacon-j3qSZ7--.js → deacon-CGHl90eC.js} +107 -50
  42. package/dist/dashboard/{deacon-j3qSZ7--.js.map → deacon-CGHl90eC.js.map} +1 -1
  43. package/dist/dashboard/{deacon-Cv2RMfHs.js → deacon-DMPh40Im.js} +2 -2
  44. package/dist/dashboard/deacon-swarm-CVTiNL0N.js +2 -0
  45. package/dist/dashboard/{deacon-swarm-DadWNi5J.js → deacon-swarm-aMMJTq6t.js} +4 -4
  46. package/dist/dashboard/{deacon-swarm-DadWNi5J.js.map → deacon-swarm-aMMJTq6t.js.map} +1 -1
  47. package/dist/dashboard/deacon.js +4 -4
  48. package/dist/dashboard/{feedback-target-oE4-Esxl.js → feedback-target-dJjFfITP.js} +4 -4
  49. package/dist/dashboard/{feedback-target-oE4-Esxl.js.map → feedback-target-dJjFfITP.js.map} +1 -1
  50. package/dist/dashboard/{feedback-target-C4DaDSZ8.js → feedback-target-nQSM6ygL.js} +1 -1
  51. package/dist/dashboard/{flywheel-ClMjGW_u.js → flywheel-BLoVNtJV.js} +6 -6
  52. package/dist/dashboard/{flywheel-ClMjGW_u.js.map → flywheel-BLoVNtJV.js.map} +1 -1
  53. package/dist/dashboard/{flywheel-DefHRzY4.js → flywheel-Cqf8vu7N.js} +6 -6
  54. package/dist/dashboard/{flywheel-DefHRzY4.js.map → flywheel-Cqf8vu7N.js.map} +1 -1
  55. package/dist/dashboard/{flywheel-BqDdGvrQ.js → flywheel-PJsbrXNY.js} +1 -1
  56. package/dist/dashboard/{flywheel-merge-order-CuDcqTRJ.js → flywheel-merge-order-B7BH8mZ3.js} +2 -2
  57. package/dist/dashboard/{flywheel-merge-order-CuDcqTRJ.js.map → flywheel-merge-order-B7BH8mZ3.js.map} +1 -1
  58. package/dist/dashboard/{flywheel-merge-order-B6YDSElh.js → flywheel-merge-order-CCwF60b-.js} +1 -1
  59. package/dist/dashboard/{harness-resolve-DKeSVsJL.js → harness-resolve-B3f9G1Kp.js} +2 -2
  60. package/dist/dashboard/{harness-resolve-DKeSVsJL.js.map → harness-resolve-B3f9G1Kp.js.map} +1 -1
  61. package/dist/dashboard/{inspect-agent-BKKc0XnB.js → inspect-agent-CKF5-SJr.js} +3 -3
  62. package/dist/dashboard/{inspect-agent-BKKc0XnB.js.map → inspect-agent-CKF5-SJr.js.map} +1 -1
  63. package/dist/dashboard/inspect-agent-CqpEWGWy.js +2 -0
  64. package/dist/dashboard/{issue-lifecycle-DnhQgddB.js → issue-lifecycle-5LbOcATP.js} +7 -7
  65. package/dist/dashboard/{issue-lifecycle-DnhQgddB.js.map → issue-lifecycle-5LbOcATP.js.map} +1 -1
  66. package/dist/dashboard/{issue-lifecycle-nY4esZn8.js → issue-lifecycle-CjYqQ669.js} +1 -1
  67. package/dist/dashboard/{issue-service-singleton-Bnqv1uaa.js → issue-service-singleton-B8iu_TKV.js} +1 -1
  68. package/dist/dashboard/{issue-service-singleton-_AquSBTl.js → issue-service-singleton-CDGt__oQ.js} +2 -2
  69. package/dist/dashboard/{issue-service-singleton-_AquSBTl.js.map → issue-service-singleton-CDGt__oQ.js.map} +1 -1
  70. package/dist/dashboard/{lifecycle-CGKm7doE.js → lifecycle-CEg4sHZH.js} +4 -4
  71. package/dist/dashboard/{lifecycle-CGKm7doE.js.map → lifecycle-CEg4sHZH.js.map} +1 -1
  72. package/dist/dashboard/{merge-agent-Dh8Y9PDO.js → merge-agent-7nBiCytp.js} +1 -1
  73. package/dist/dashboard/{merge-agent-BcgAYStl.js → merge-agent-C81xPIGd.js} +6 -6
  74. package/dist/dashboard/{merge-agent-BcgAYStl.js.map → merge-agent-C81xPIGd.js.map} +1 -1
  75. package/dist/dashboard/merge-ops-DE_6CnmZ.js +2 -0
  76. package/dist/dashboard/{merge-train-DmxlYbEo.js → merge-train-D3qzRccL.js} +2 -2
  77. package/dist/dashboard/{merge-train-DmxlYbEo.js.map → merge-train-D3qzRccL.js.map} +1 -1
  78. package/dist/dashboard/{merge-train-deps-DBHsOWt9.js → merge-train-deps-Be5ElC_P.js} +2 -2
  79. package/dist/dashboard/{merge-train-deps-DBHsOWt9.js.map → merge-train-deps-Be5ElC_P.js.map} +1 -1
  80. package/dist/dashboard/{orphan-proposed-reconciler-Db8tUhce.js → orphan-proposed-reconciler-Boq_XaRe.js} +3 -3
  81. package/dist/dashboard/{orphan-proposed-reconciler-Db8tUhce.js.map → orphan-proposed-reconciler-Boq_XaRe.js.map} +1 -1
  82. package/dist/dashboard/{orphan-proposed-reconciler-mXV--tcB.js → orphan-proposed-reconciler-C0sPnDq_.js} +1 -1
  83. package/dist/dashboard/{reconstruct-cache-_tDZ2D72.js → reconstruct-cache-C2pCltOq.js} +3 -3
  84. package/dist/dashboard/{reconstruct-cache-_tDZ2D72.js.map → reconstruct-cache-C2pCltOq.js.map} +1 -1
  85. package/dist/dashboard/{remote-completion-Bklh6loJ.js → remote-completion-BmxD5UMQ.js} +3 -3
  86. package/dist/dashboard/{remote-completion-Bklh6loJ.js.map → remote-completion-BmxD5UMQ.js.map} +1 -1
  87. package/dist/dashboard/resume-C-nxu9Y4.js +3 -0
  88. package/dist/dashboard/{review-agent-phzqNqIs.js → review-agent-D6P6d3pz.js} +26 -17
  89. package/dist/dashboard/review-agent-D6P6d3pz.js.map +1 -0
  90. package/dist/dashboard/review-agent-DTINEffB.js +3 -0
  91. package/dist/dashboard/{review-context-CCq56O_Y.js → review-context-Dyo0tsBa.js} +2 -2
  92. package/dist/dashboard/{review-context-CCq56O_Y.js.map → review-context-Dyo0tsBa.js.map} +1 -1
  93. package/dist/dashboard/{review-status-BQjqQXZG.js → review-status-B5ZASOo4.js} +18 -5
  94. package/dist/dashboard/review-status-B5ZASOo4.js.map +1 -0
  95. package/dist/dashboard/{review-status-bBkqUj5i.js → review-status-h7BXIA4z.js} +1 -1
  96. package/dist/dashboard/{review-verdict-feedback-wqnikhMK.js → review-verdict-feedback-B70VbfRL.js} +4 -4
  97. package/dist/dashboard/{review-verdict-feedback-wqnikhMK.js.map → review-verdict-feedback-B70VbfRL.js.map} +1 -1
  98. package/dist/dashboard/{review-verdict-feedback-cZh9Wi9G.js → review-verdict-feedback-CorgH49f.js} +1 -1
  99. package/dist/dashboard/{sequence-io-B2GmilSI.js → sequence-io-6YP8fVpH.js} +2 -2
  100. package/dist/dashboard/{sequence-io-B2GmilSI.js.map → sequence-io-6YP8fVpH.js.map} +1 -1
  101. package/dist/dashboard/{sequencer-agent-D8pW2aU_.js → sequencer-agent-ja-nkEc1.js} +5 -5
  102. package/dist/dashboard/{sequencer-agent-D8pW2aU_.js.map → sequencer-agent-ja-nkEc1.js.map} +1 -1
  103. package/dist/dashboard/server.js +66 -55
  104. package/dist/dashboard/server.js.map +1 -1
  105. package/dist/dashboard/{service-CILd-uOt.js → service-HKDrIy0h.js} +24 -24
  106. package/dist/dashboard/{service-CILd-uOt.js.map → service-HKDrIy0h.js.map} +1 -1
  107. package/dist/dashboard/{smart-compaction-Bgp_gwcA.js → smart-compaction-L0LSnF0_.js} +1 -1
  108. package/dist/dashboard/{smart-compaction-CrP90OFE.js → smart-compaction-uke1npUz.js} +2 -2
  109. package/dist/dashboard/{smart-compaction-CrP90OFE.js.map → smart-compaction-uke1npUz.js.map} +1 -1
  110. package/dist/dashboard/{spawn-planning-session-D15KbPOy.js → spawn-planning-session-CSMWco8B.js} +1 -1
  111. package/dist/dashboard/{spawn-planning-session-BmJWHSCu.js → spawn-planning-session-CXc0NkwV.js} +3 -3
  112. package/dist/dashboard/{spawn-planning-session-BmJWHSCu.js.map → spawn-planning-session-CXc0NkwV.js.map} +1 -1
  113. package/dist/dashboard/{specialist-context-CwKkcXL9.js → specialist-context-BGCJ24LH.js} +3 -3
  114. package/dist/dashboard/{specialist-context-CwKkcXL9.js.map → specialist-context-BGCJ24LH.js.map} +1 -1
  115. package/dist/dashboard/{specialist-logs-CvDxquV_.js → specialist-logs--Uz-r8ia.js} +2 -2
  116. package/dist/dashboard/{specialist-logs-CvDxquV_.js.map → specialist-logs--Uz-r8ia.js.map} +1 -1
  117. package/dist/dashboard/{specialists-BCjcG4uE.js → specialists-Ca9XSBCS.js} +1 -1
  118. package/dist/dashboard/{specialists-D07ybnam.js → specialists-DEfrAbWs.js} +36 -36
  119. package/dist/dashboard/{specialists-D07ybnam.js.map → specialists-DEfrAbWs.js.map} +1 -1
  120. package/dist/dashboard/{specialists-F2uMO4QS.js → specialists-DeZx9xom.js} +1 -1
  121. package/dist/dashboard/{specialists-BYi0k8CZ.js → specialists-nZ0mRwpZ.js} +12 -12
  122. package/dist/dashboard/{specialists-BYi0k8CZ.js.map → specialists-nZ0mRwpZ.js.map} +1 -1
  123. package/dist/dashboard/{summary-fork-DedqguZb.js → summary-fork-2a1L2DIU.js} +2 -2
  124. package/dist/dashboard/{summary-fork-EjvOkEPl.js → summary-fork-Xn0QUNmb.js} +3 -3
  125. package/dist/dashboard/{summary-fork-EjvOkEPl.js.map → summary-fork-Xn0QUNmb.js.map} +1 -1
  126. package/dist/dashboard/{teardown-workspace-5LCVbjfq.js → teardown-workspace-DhA6oAIK.js} +2 -2
  127. package/dist/dashboard/{teardown-workspace-5LCVbjfq.js.map → teardown-workspace-DhA6oAIK.js.map} +1 -1
  128. package/dist/dashboard/{test-agent-queue-qfsq6uaC.js → test-agent-queue-B_ukPyIK.js} +3 -3
  129. package/dist/dashboard/{test-agent-queue-qfsq6uaC.js.map → test-agent-queue-B_ukPyIK.js.map} +1 -1
  130. package/dist/dashboard/{uat-train-CtNGgXxj.js → uat-train-BLBAbJ8Y.js} +10 -10
  131. package/dist/dashboard/{uat-train-CtNGgXxj.js.map → uat-train-BLBAbJ8Y.js.map} +1 -1
  132. package/dist/dashboard/{uat-train-C3hWXtip.js → uat-train-DPfGR9_I.js} +1 -1
  133. package/dist/dashboard/{verification-runner-DuZRHjPU.js → verification-runner-KTGTNugM.js} +1 -1
  134. package/dist/dashboard/{verification-runner-BPAhPWR7.js → verification-runner-R2-4XgMO.js} +4 -4
  135. package/dist/dashboard/{verification-runner-BPAhPWR7.js.map → verification-runner-R2-4XgMO.js.map} +1 -1
  136. package/dist/dashboard/{workflows-H-COJ84X.js → workflows-CSKX5MhC.js} +7 -7
  137. package/dist/dashboard/{workflows-H-COJ84X.js.map → workflows-CSKX5MhC.js.map} +1 -1
  138. package/dist/dashboard/workflows-DVwXauef.js +2 -0
  139. package/dist/dashboard/{workspaces-CRU9_vRn.js → workspaces-DXLDgXo2.js} +32 -32
  140. package/dist/dashboard/{workspaces-CRU9_vRn.js.map → workspaces-DXLDgXo2.js.map} +1 -1
  141. package/dist/docs-index.sqlite +0 -0
  142. package/dist/{feedback-target-DTGAhFkM.js → feedback-target-BsKN4Tr_.js} +4 -4
  143. package/dist/{feedback-target-DTGAhFkM.js.map → feedback-target-BsKN4Tr_.js.map} +1 -1
  144. package/dist/{feedback-target-DutF088V.js → feedback-target-DM1WzOKy.js} +1 -1
  145. package/dist/{harness-resolve-Bz1prk6B.js → harness-resolve-B-YDNwNW.js} +2 -2
  146. package/dist/{harness-resolve-Bz1prk6B.js.map → harness-resolve-B-YDNwNW.js.map} +1 -1
  147. package/dist/{issue-lifecycle-fVqvCdKM.js → issue-lifecycle-Bc1l3U9f.js} +7 -7
  148. package/dist/{issue-lifecycle-fVqvCdKM.js.map → issue-lifecycle-Bc1l3U9f.js.map} +1 -1
  149. package/dist/{issue-service-singleton-CZm8p6Rj.js → issue-service-singleton-D-8Q6tdT.js} +1 -1
  150. package/dist/{issue-service-singleton-Cr73JAaR.js → issue-service-singleton-D1433I7n.js} +2 -2
  151. package/dist/{issue-service-singleton-Cr73JAaR.js.map → issue-service-singleton-D1433I7n.js.map} +1 -1
  152. package/dist/{lifecycle-CR6tZfl1.js → lifecycle-SmrqysDf.js} +7 -7
  153. package/dist/{lifecycle-CR6tZfl1.js.map → lifecycle-SmrqysDf.js.map} +1 -1
  154. package/dist/{lifecycle-D_EWiUjk.js → lifecycle-mRMyiIXs.js} +2 -2
  155. package/dist/{merge-agent-LM4avOtA.js → merge-agent-B9hIZ6Z0.js} +6 -6
  156. package/dist/{merge-agent-LM4avOtA.js.map → merge-agent-B9hIZ6Z0.js.map} +1 -1
  157. package/dist/{merge-agent-Bj046HE1.js → merge-agent-DUj22cXL.js} +1 -1
  158. package/dist/{merge-fulfillment-DrnC1Kmg.js → merge-fulfillment-__P4WE-T.js} +3 -3
  159. package/dist/{merge-fulfillment-DrnC1Kmg.js.map → merge-fulfillment-__P4WE-T.js.map} +1 -1
  160. package/dist/{reconstruct-cache-NPqoAUg-.js → reconstruct-cache-9SWp82SQ.js} +3 -3
  161. package/dist/{reconstruct-cache-NPqoAUg-.js.map → reconstruct-cache-9SWp82SQ.js.map} +1 -1
  162. package/dist/{records-BIkN1LQ4.js → records-CTmvuRzz.js} +14 -1
  163. package/dist/{records-BIkN1LQ4.js.map → records-CTmvuRzz.js.map} +1 -1
  164. package/dist/records-backfill-BQcmTmwF.js +2 -0
  165. package/dist/{records-backfill-HM0Pln6N.js → records-backfill-BrNsv_zT.js} +2 -2
  166. package/dist/{records-backfill-HM0Pln6N.js.map → records-backfill-BrNsv_zT.js.map} +1 -1
  167. package/dist/resume-Bn4kDk9x.js +3 -0
  168. package/dist/{review-agent-DFosQzCG.js → review-agent-PhqOhpx3.js} +24 -16
  169. package/dist/{review-agent-DFosQzCG.js.map → review-agent-PhqOhpx3.js.map} +1 -1
  170. package/dist/review-agent-hLbRRxZF.js +3 -0
  171. package/dist/{review-status-iJwfEoNX.js → review-status-B_XXomV0.js} +6 -6
  172. package/dist/{review-status-iJwfEoNX.js.map → review-status-B_XXomV0.js.map} +1 -1
  173. package/dist/{review-status-BbNVlXh1.js → review-status-Bo-EFVKh.js} +1 -1
  174. package/dist/{review-verdict-feedback-BGPw3z1X.js → review-verdict-feedback-CXHkoiKZ.js} +1 -1
  175. package/dist/{review-verdict-feedback-CCZ05atV.js → review-verdict-feedback-DGV13LDb.js} +4 -4
  176. package/dist/{review-verdict-feedback-CCZ05atV.js.map → review-verdict-feedback-DGV13LDb.js.map} +1 -1
  177. package/dist/{sequence-io-CcxZNHcD.js → sequence-io-Cg4NHAco.js} +1 -1
  178. package/dist/{sequence-io-Cx1usxG3.js → sequence-io-CyxvNHfA.js} +2 -2
  179. package/dist/{sequence-io-Cx1usxG3.js.map → sequence-io-CyxvNHfA.js.map} +1 -1
  180. package/dist/{smart-compaction-ByUEgQkF.js → smart-compaction-ByKXTQNy.js} +2 -2
  181. package/dist/{smart-compaction-ByUEgQkF.js.map → smart-compaction-ByKXTQNy.js.map} +1 -1
  182. package/dist/{smart-compaction-DfLe_CtH.js → smart-compaction-U6e_uB1E.js} +1 -1
  183. package/dist/{specialist-context-McuGkaeR.js → specialist-context-BUTadO-U.js} +3 -3
  184. package/dist/{specialist-context-McuGkaeR.js.map → specialist-context-BUTadO-U.js.map} +1 -1
  185. package/dist/{specialist-logs-CUUJ4eiB.js → specialist-logs-pEMCTtGZ.js} +2 -2
  186. package/dist/{specialist-logs-CUUJ4eiB.js.map → specialist-logs-pEMCTtGZ.js.map} +1 -1
  187. package/dist/{specialists-BSrylD1S.js → specialists-BGFnrQ8n.js} +1 -1
  188. package/dist/{specialists-B0elgInc.js → specialists-DeTkkp8b.js} +12 -12
  189. package/dist/{specialists-B0elgInc.js.map → specialists-DeTkkp8b.js.map} +1 -1
  190. package/dist/{summary-fork-DskMRnyb.js → summary-fork-CgzThE2-.js} +2 -2
  191. package/dist/{summary-fork-CPUTKcAT.js → summary-fork-Dx1RMuvU.js} +3 -3
  192. package/dist/{summary-fork-CPUTKcAT.js.map → summary-fork-Dx1RMuvU.js.map} +1 -1
  193. package/dist/{sync-BiNVQHBf.js → sync-Bsww9tuj.js} +2 -2
  194. package/dist/{sync-BiNVQHBf.js.map → sync-Bsww9tuj.js.map} +1 -1
  195. package/dist/sync-CylE_SjB.js +2 -0
  196. package/dist/{verdict-restore-DQiV7_fe.js → verdict-restore-DGpX0ZOJ.js} +5 -5
  197. package/dist/{verdict-restore-DQiV7_fe.js.map → verdict-restore-DGpX0ZOJ.js.map} +1 -1
  198. package/dist/{webhook-handlers-DHBSEDEm.js → webhook-handlers-BjsfIL7u.js} +3 -3
  199. package/dist/{webhook-handlers-DHBSEDEm.js.map → webhook-handlers-BjsfIL7u.js.map} +1 -1
  200. package/dist/{workspace-migrate-duUsWNpd.js → workspace-migrate-BBQ8nAnP.js} +2 -2
  201. package/dist/{workspace-migrate-duUsWNpd.js.map → workspace-migrate-BBQ8nAnP.js.map} +1 -1
  202. package/dist/{workspace-reap-DLCIoJmn.js → workspace-reap-12O9354k.js} +2 -2
  203. package/dist/{workspace-reap-DLCIoJmn.js.map → workspace-reap-12O9354k.js.map} +1 -1
  204. package/package.json +1 -1
  205. package/scripts/file-size-baseline.txt +1 -1
  206. package/dist/cli-DBWG12XK.js +0 -3
  207. package/dist/dashboard/cli-CJDWXE_Y.js +0 -3
  208. package/dist/dashboard/deacon-swarm-D1iAUX-P.js +0 -2
  209. package/dist/dashboard/inspect-agent-vm88mLYr.js +0 -2
  210. package/dist/dashboard/merge-ops-QdBiQ8XB.js +0 -2
  211. package/dist/dashboard/resume-DnIsmIgC.js +0 -3
  212. package/dist/dashboard/review-agent-DgySDb-G.js +0 -3
  213. package/dist/dashboard/review-agent-phzqNqIs.js.map +0 -1
  214. package/dist/dashboard/review-status-BQjqQXZG.js.map +0 -1
  215. package/dist/dashboard/workflows-Cz8OtiB4.js +0 -2
  216. package/dist/records-backfill-DEgtRyKL.js +0 -2
  217. package/dist/resume-DGymuXZM.js +0 -3
  218. package/dist/review-agent-DjVadURa.js +0 -3
  219. package/dist/sync-4jqukkxz.js +0 -2
@@ -4,9 +4,9 @@ import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivit
4
4
  import { C as isPaneDead, D as listPaneValuesSync, E as listPaneValues, F as sendKeysAsync, L as sessionExists, O as listSessionNames, P as sendKeys, R as sessionExistsSync, T as killSessionSync, i as capturePane, k as listSessions, w as killSession, x as init_tmux } from "./tmux-ePNhMIMU.js";
5
5
  import { a as init_event_store, i as initEventStore } from "./event-store-DTJXZjCl.js";
6
6
  import { n as CLAUDE_CODE_BEHAVIOR } from "./src-fgbU-jJ-.js";
7
- import { C as init_record_lock, S as needsReviewDispatch, c as init_review_status, h as reviewGatesPassedSync, s as getReviewStatusSync, u as loadReviewStatuses, w as withIssueRecordLock, x as init_review_dispatch_decision, y as setReviewStatusSync } from "./review-status-BQjqQXZG.js";
7
+ import { C as init_record_lock, S as needsReviewDispatch, c as init_review_status, h as reviewGatesPassedSync, s as getReviewStatusSync, u as loadReviewStatuses, w as withIssueRecordLock, x as init_review_dispatch_decision, y as setReviewStatusSync } from "./review-status-B5ZASOo4.js";
8
8
  import { d as init_agents, g as isTerminalIssueStage, h as getIssueStageSync, p as listAllAgentsSync } from "./briefing-freshness-CXhZdnB8.js";
9
- import { An as getAgentDir, B as createOhmypiRuntimeSync, Bn as markAgentRunningState, D as init_context_overflow, Dn as clearAgentTroubledSync, Dt as captureTranscriptUserRecordSnapshot, E as resumeAgent, Fn as init_agent_state, G as init_termination, Hn as markAgentTroubled, Jn as saveAgentStateSync, K as stopAgent, Kn as resetAgentFailureCount, Mn as getAgentState, On as clearYieldForResumeSync, Ot as init_transcript_landing, Pn as getAgentStateSync, Q as listRunningAgentsSync, U as spawnAgent, Un as recordAgentFailure, V as init_ohmypi, X as listAgentStates, Xn as setAgentPausedSync, Y as init_queries, Z as listRunningAgents, Zn as setAgentYieldedSync, _t as init_config, at as init_concurrency, cn as determineModel, ct as resetPatrolDispatchBudget, dt as workResumeSlotsAvailable, en as init_pi_fifo, er as init_persistent_logger, et as countRunningAgents, gn as buildDefaultResumeContinueMessage, gr as saveAgentRuntimeState, hr as init_runtime_state, ht as DEFAULT_CLOISTER_CONFIG, it as getConcurrencyLimits, j as messageAgent, k as isContextOverflowTail, lt as tryReserveAdvancingSlot, mr as getAgentRuntimeStateSync, mt as setCachedMemoryVerdict, nr as logDeaconEventSync, nt as describeRunningAgents, ot as releaseAdvancingSlot, pr as getAgentRuntimeState, pt as init_memory_verdict_cache, qn as saveAgentState, t as init_agents$1, tr as logAgentLifecycleSync, vt as loadCloisterConfig, wt as deliverInitialPromptWithRetry, yt as loadCloisterConfigSync } from "./agents-DHvsjsuP.js";
9
+ import { An as getAgentDir, B as createOhmypiRuntimeSync, Bn as markAgentRunningState, D as init_context_overflow, Dn as clearAgentTroubledSync, Dt as captureTranscriptUserRecordSnapshot, E as resumeAgent, Fn as init_agent_state, G as init_termination, Hn as markAgentTroubled, Jn as saveAgentStateSync, K as stopAgent, Kn as resetAgentFailureCount, Mn as getAgentState, On as clearYieldForResumeSync, Ot as init_transcript_landing, Pn as getAgentStateSync, Q as listRunningAgentsSync, U as spawnAgent, Un as recordAgentFailure, V as init_ohmypi, X as listAgentStates, Xn as setAgentPausedSync, Y as init_queries, Z as listRunningAgents, Zn as setAgentYieldedSync, _t as init_config, at as init_concurrency, cn as determineModel, ct as resetPatrolDispatchBudget, dt as workResumeSlotsAvailable, en as init_pi_fifo, er as init_persistent_logger, et as countRunningAgents, gn as buildDefaultResumeContinueMessage, gr as saveAgentRuntimeState, hr as init_runtime_state, ht as DEFAULT_CLOISTER_CONFIG, it as getConcurrencyLimits, j as messageAgent, k as isContextOverflowTail, lt as tryReserveAdvancingSlot, mr as getAgentRuntimeStateSync, mt as setCachedMemoryVerdict, nr as logDeaconEventSync, nt as describeRunningAgents, ot as releaseAdvancingSlot, pr as getAgentRuntimeState, pt as init_memory_verdict_cache, qn as saveAgentState, t as init_agents$1, tr as logAgentLifecycleSync, vt as loadCloisterConfig, wt as deliverInitialPromptWithRetry, yt as loadCloisterConfigSync } from "./agents-C7V4odQ6.js";
10
10
  import { t as init_behavior } from "./behavior-By-2Wipv.js";
11
11
  import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-C3hiPVAM.js";
12
12
  import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-bpWs7Xyx.js";
@@ -19,20 +19,20 @@ import { T as stampBootReconciliation, f as isFlywheelGloballyPaused, h as setBo
19
19
  import { c as init_docker_stats, s as DockerStatsCollector } from "./stack-health-BJVh1TCg.js";
20
20
  import { a as queryBeadsForIssue, o as queryReadyBeadsByIssueLabels, r as init_beads_query, s as resolveBeadsQueryRoot } from "./beads-query-BrVNWoSL.js";
21
21
  import { n as __filename, r as init_esm_shims } from "./esm-shims-DiV9jHa_.js";
22
- import { O as init_specialists, R as parseReviewerSessionName, T as getTmuxSessionName, at as init_jsonl_parser, d as getAllProjectSpecialistStatuses, it as getSessionFilesSync, rt as getProjectDirsSync, st as parseClaudeSessionSync } from "./specialists-BYi0k8CZ.js";
22
+ import { O as init_specialists, R as parseReviewerSessionName, T as getTmuxSessionName, at as init_jsonl_parser, d as getAllProjectSpecialistStatuses, it as getSessionFilesSync, rt as getProjectDirsSync, st as parseClaudeSessionSync } from "./specialists-nZ0mRwpZ.js";
23
23
  import { t as recordDeaconNudge } from "./deacon-nudge-log-CJGA6aSQ.js";
24
24
  import { n as init_review_monitor, t as REVIEW_SUB_ROLES } from "./review-monitor-BKG2ubt5.js";
25
25
  import { a as inferBranchFromWorkspace, i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-zTvWWHG_.js";
26
26
  import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BO84g03t.js";
27
27
  import { n as shouldSkipDispatchAsMerged, t as init_merge_verification } from "./merge-verification-DA9rvqsE.js";
28
- import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-wqnikhMK.js";
28
+ import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-B70VbfRL.js";
29
29
  import { n as reconcileTraefikNetworks, t as init_traefik_connect } from "./traefik-connect-5EP1WS_Z.js";
30
- import { _ as recordRecoveryFailure, b as listFeatureWorkspaces, g as decideAgentAutonomousRedrive, r as coordinateSwarmSlots } from "./deacon-swarm-DadWNi5J.js";
30
+ import { _ as recordRecoveryFailure, b as listFeatureWorkspaces, g as decideAgentAutonomousRedrive, r as coordinateSwarmSlots } from "./deacon-swarm-aMMJTq6t.js";
31
31
  import { n as isExplicitNoResumeRequest, t as init_no_resume_mode } from "./no-resume-mode-yrPEQ_pC.js";
32
- import { n as reconcileClosedIssueAgents } from "./closed-issue-reaper-DRqK5k39.js";
32
+ import { n as reconcileClosedIssueAgents } from "./closed-issue-reaper-D7XPq5pY.js";
33
33
  import { a as RELEASED_LABEL, i as READY_LABEL, n as OBJECTION_LABEL, o as VETOED_LABEL, r as PARKED_LABEL, t as BLOCKS_MAIN_LABEL } from "./pickup-KLRUhThD.js";
34
34
  import { n as pruneTerminalStoppedAgents } from "./agent-gc-BtAzj8QN.js";
35
- import { a as spawnWorkAgentThroughAgentsEndpoint, i as reconcileOrphanProposedSpecs, o as triggerRebuildAndStart } from "./orphan-proposed-reconciler-Db8tUhce.js";
35
+ import { a as spawnWorkAgentThroughAgentsEndpoint, i as reconcileOrphanProposedSpecs, o as triggerRebuildAndStart } from "./orphan-proposed-reconciler-Boq_XaRe.js";
36
36
  import { n as reconcileIdleWorkspaceStacks } from "./idle-stack-reaper-DBKQ9SKu.js";
37
37
  import { i as readTestVerdictArtifact, n as decideUnsignaledTestAction, r as init_test_verdict } from "./test-verdict-D3Il7cBK.js";
38
38
  import { createRequire } from "node:module";
@@ -23526,7 +23526,7 @@ async function checkInspectAgentTimeouts(now = /* @__PURE__ */ new Date()) {
23526
23526
  console.warn(`[deacon] Failed to kill inspect session ${sessionName}: ${msg}`);
23527
23527
  });
23528
23528
  try {
23529
- const { messageAgent } = await import("./agents-BIggLvi_.js");
23529
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
23530
23530
  await messageAgent(`agent-${issueId.toLowerCase()}`, verdict, "deacon:inspect-watchdog");
23531
23531
  } catch (err) {
23532
23532
  const msg = err instanceof Error ? err.message : String(err);
@@ -23820,7 +23820,7 @@ async function checkApiErrorAgents() {
23820
23820
  rec.attempts += 1;
23821
23821
  rec.lastAttempt = now;
23822
23822
  stuckOverflowNativeRecoveryState.set(sessionName, rec);
23823
- const { resumeAgent } = await import("./agents-BIggLvi_.js");
23823
+ const { resumeAgent } = await import("./agents-C-vqmKDi.js");
23824
23824
  const recovered = await resumeAgent(sessionName, void 0, { compact: true });
23825
23825
  if (recovered.success) {
23826
23826
  stuckOverflowNativeRecoveryState.delete(sessionName);
@@ -23868,7 +23868,7 @@ async function checkApiErrorAgents() {
23868
23868
  }
23869
23869
  const compactAttempts = (ov?.compactAttempts ?? 0) + 1;
23870
23870
  if (issueId !== null) {
23871
- const { resumeAgent } = await import("./agents-BIggLvi_.js");
23871
+ const { resumeAgent } = await import("./agents-C-vqmKDi.js");
23872
23872
  const resumeResult = await resumeAgent(sessionName, void 0, { compact: true });
23873
23873
  contextOverflowRecoveryState.set(sessionName, {
23874
23874
  lastAttempt: now,
@@ -24393,7 +24393,7 @@ async function handleReviewCoordinatorDied(issueId, _sessionName, _reason) {
24393
24393
  return actions;
24394
24394
  }
24395
24395
  try {
24396
- const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
24396
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DTINEffB.js");
24397
24397
  const dispatchResult = await Effect.runPromise(spawnReviewRoleForIssue({
24398
24398
  issueId,
24399
24399
  workspace,
@@ -24523,7 +24523,7 @@ async function reconcileReviewStatusOrphan(issueId, rawStatus) {
24523
24523
  const workspace = agentState?.workspace || (resolved ? findWorkspacePath(resolved.projectPath, issueLower) : null);
24524
24524
  if (workspace && resolved && !tryReserveAdvancingSlot() && !await tryYieldForAdvancingDispatch("review", issueId)) actions.push(`Deferred review re-dispatch for ${issueId} — advancing-role concurrency ceiling reached`);
24525
24525
  else if (workspace && resolved) try {
24526
- const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
24526
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DTINEffB.js");
24527
24527
  const dispatchResult = await Effect.runPromise(spawnReviewRoleForIssue({
24528
24528
  issueId,
24529
24529
  workspace,
@@ -24548,8 +24548,8 @@ async function reconcileReviewStatusOrphan(issueId, rawStatus) {
24548
24548
  const workspace = agentState?.workspace || (resolved ? findWorkspacePath(resolved.projectPath, issueLower) : null);
24549
24549
  if (workspace && resolved) {
24550
24550
  const branch = `feature/${issueLower}`;
24551
- const { spawnRun } = await import("./agents-BIggLvi_.js");
24552
- const { buildTestRolePrompt } = await import("./test-agent-queue-qfsq6uaC.js");
24551
+ const { spawnRun } = await import("./agents-C-vqmKDi.js");
24552
+ const { buildTestRolePrompt } = await import("./test-agent-queue-B_ukPyIK.js");
24553
24553
  const stackRecovery = await recoverUnhealthyTestStack(issueId, workspace);
24554
24554
  if (stackRecovery === "cooldown" || stackRecovery === "exhausted") {
24555
24555
  setReviewStatusSync(issueId, { testStatus: "dispatch_failed" });
@@ -24687,7 +24687,7 @@ async function recoverStalledReviewConvoys(getCanonicalState = getAutoCloseOutCa
24687
24687
  record.lastAttempt = now;
24688
24688
  record.attempts += 1;
24689
24689
  stalledReviewConvoyRecoveryState.set(key, record);
24690
- const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
24690
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DTINEffB.js");
24691
24691
  try {
24692
24692
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
24693
24693
  issueId,
@@ -24758,7 +24758,7 @@ async function checkMissingReviewStatuses() {
24758
24758
  continue;
24759
24759
  }
24760
24760
  try {
24761
- const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
24761
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DTINEffB.js");
24762
24762
  await Effect.runPromise(spawnReviewRoleForIssue({
24763
24763
  issueId,
24764
24764
  workspace,
@@ -24809,7 +24809,7 @@ async function checkStuckReviewing() {
24809
24809
  const actions = [];
24810
24810
  const REVIEW_STUCK_THRESHOLD_MS = 1800 * 1e3;
24811
24811
  try {
24812
- const { loadReviewStatuses, setReviewStatusSync } = await import("./review-status-bBkqUj5i.js");
24812
+ const { loadReviewStatuses, setReviewStatusSync } = await import("./review-status-h7BXIA4z.js");
24813
24813
  const statuses = loadReviewStatuses();
24814
24814
  const now = Date.now();
24815
24815
  const activeReviewIssues = /* @__PURE__ */ new Set();
@@ -24825,7 +24825,7 @@ async function checkStuckReviewing() {
24825
24825
  if (rState?.state === "active" && rState.currentIssue) activeReviewIssues.add(rState.currentIssue.toUpperCase());
24826
24826
  }
24827
24827
  try {
24828
- const { listRunningAgents } = await import("./agents-BIggLvi_.js");
24828
+ const { listRunningAgents } = await import("./agents-C-vqmKDi.js");
24829
24829
  const agents = await Effect.runPromise(listRunningAgents());
24830
24830
  for (const agent of agents) {
24831
24831
  if (agent.status === "stopped" || agent.status === "error") continue;
@@ -24958,7 +24958,7 @@ async function checkCompletedButUnsignaledReviews() {
24958
24958
  }
24959
24959
  const nudge = `Your review synthesis is already written and saved. Your ONLY remaining task is to execute this Bash command immediately — do not analyze, do not summarize, do not ask questions, just run it:\n\n${`pan admin specialists done review ${issueId} --status ${verdict}${verdict === "blocked" || verdict === "failed" ? ` --notes "${topBlocker || "See synthesis.md"}"` : ""}`}\n\nRun this command NOW. Do not write any other response before executing it.`;
24960
24960
  try {
24961
- const { messageAgent } = await import("./agents-BIggLvi_.js");
24961
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
24962
24962
  await messageAgent(reviewSession, nudge);
24963
24963
  unsignaledReviewNudges.set(latestDir, now);
24964
24964
  actions.push(`Nudged ${reviewSession} to signal ${verdict} (synthesis written ${Math.round((now - latestMtime) / 6e4)}min ago)`);
@@ -25079,7 +25079,7 @@ async function respawnIdleReviewer(state, agentId) {
25079
25079
  return false;
25080
25080
  }
25081
25081
  try {
25082
- const { spawnReviewSubRoleForIssue } = await import("./review-agent-DgySDb-G.js");
25082
+ const { spawnReviewSubRoleForIssue } = await import("./review-agent-DTINEffB.js");
25083
25083
  const contextManifestPath = join(dirname(outputPath), "context.json");
25084
25084
  const result = await Effect.runPromise(spawnReviewSubRoleForIssue({
25085
25085
  issueId: state.issueId,
@@ -25208,7 +25208,7 @@ async function nudgeSynthesisForCompleteReviewerReports(states) {
25208
25208
  "Read the four reports, write synthesis.md, then signal review status exactly as roles/review.md instructs."
25209
25209
  ].join("\n");
25210
25210
  try {
25211
- const { messageAgent } = await import("./agents-BIggLvi_.js");
25211
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
25212
25212
  await messageAgent(state.id, message);
25213
25213
  reviewReportsPresentNudges.set(nudgeKey, now);
25214
25214
  const action = `Nudged ${state.id} to synthesize from ${REVIEW_SUB_ROLES.length} reviewer reports`;
@@ -25287,7 +25287,7 @@ async function monitorReviewConvoySignals() {
25287
25287
  if (!signal) continue;
25288
25288
  const message = signal === "ready" ? `REVIEWER_READY ${state.reviewSubRole} ${outputPath}` : signal === "timeout" ? `REVIEWER_TIMEOUT ${state.reviewSubRole} ${reason}` : `REVIEWER_FAILED ${state.reviewSubRole} ${reason}`;
25289
25289
  try {
25290
- const { messageAgent } = await import("./agents-BIggLvi_.js");
25290
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
25291
25291
  await messageAgent(state.reviewSynthesisAgentId, message);
25292
25292
  state.reviewMonitorSignaled = signal;
25293
25293
  saveAgentStateSync(state);
@@ -25403,7 +25403,7 @@ const FORK_CACHE_CHECK_DELAY_MS = 180 * 1e3;
25403
25403
  async function checkStalledReviewDiscovery() {
25404
25404
  const actions = [];
25405
25405
  try {
25406
- const { listAgentStates } = await import("./agents-BIggLvi_.js");
25406
+ const { listAgentStates } = await import("./agents-C-vqmKDi.js");
25407
25407
  const states = listAgentStates();
25408
25408
  const now = Date.now();
25409
25409
  for (const state of states) {
@@ -25412,7 +25412,7 @@ async function checkStalledReviewDiscovery() {
25412
25412
  const aged = Number.isFinite(startedMs) && now - startedMs > 48e4;
25413
25413
  const dead = !await Effect.runPromise(sessionExists(state.id)).catch(() => false) || await Effect.runPromise(isPaneDead(state.id)).catch(() => true);
25414
25414
  if (!aged && !dead) continue;
25415
- const { handleReviewDiscoveryReady } = await import("./review-agent-DgySDb-G.js");
25415
+ const { handleReviewDiscoveryReady } = await import("./review-agent-DTINEffB.js");
25416
25416
  const result = await handleReviewDiscoveryReady(state.issueId, { source: dead ? "deacon-backstop (parent dead)" : "deacon-backstop (discovery timeout)" });
25417
25417
  actions.push(result.message);
25418
25418
  logDeaconEventSync(`checkStalledReviewDiscovery: ${result.message}`);
@@ -25423,6 +25423,58 @@ async function checkStalledReviewDiscovery() {
25423
25423
  return actions;
25424
25424
  }
25425
25425
  /**
25426
+ * PAN-2584: liveness for the review PARENT (synthesis/self-review). Deadlines
25427
+ * were armed only on convoy sub-reviewers, so a wedged or dead parent blocked
25428
+ * re-dispatch behind the idempotency guard forever (the PAN-399 wedge). A
25429
+ * running parent past its deadline whose issue has no terminal review verdict
25430
+ * is killed and its row marked stopped; the durable review-request intent then
25431
+ * respawns it (warm resume keeps its context). The deadline is explicit
25432
+ * (`reviewDeadlineAt`, armed at spawn/resume) with an implicit fallback from
25433
+ * the last (re)start for parents predating the arming code.
25434
+ */
25435
+ async function checkStalledReviewParents() {
25436
+ const actions = [];
25437
+ try {
25438
+ const { listAgentStates, markAgentStoppedState } = await import("./agents-C-vqmKDi.js");
25439
+ const { PARENT_REVIEW_TIMEOUT_MS } = await import("./review-agent-DTINEffB.js");
25440
+ const states = listAgentStates();
25441
+ const now = Date.now();
25442
+ for (const state of states) {
25443
+ if (state.role !== "review" || state.reviewSubRole || !state.issueId) continue;
25444
+ if (state.status !== "running") continue;
25445
+ const armedMs = state.reviewDeadlineAt ? Date.parse(state.reviewDeadlineAt) : NaN;
25446
+ const startedMs = Date.parse(state.lastResumeAt ?? state.startedAt);
25447
+ const deadlineMs = Number.isFinite(armedMs) ? armedMs : Number.isFinite(startedMs) ? startedMs + PARENT_REVIEW_TIMEOUT_MS : NaN;
25448
+ if (!Number.isFinite(deadlineMs) || now < deadlineMs) continue;
25449
+ const reviewStatus = getReviewStatusSync(state.issueId)?.reviewStatus;
25450
+ if (reviewStatus === "passed" || reviewStatus === "blocked" || reviewStatus === "failed") continue;
25451
+ try {
25452
+ await Effect.runPromise(killSession(state.id));
25453
+ } catch {}
25454
+ try {
25455
+ saveAgentStateSync(markAgentStoppedState(state));
25456
+ } catch (stopErr) {
25457
+ console.warn(`[deacon] checkStalledReviewParents: could not mark ${state.id} stopped:`, stopErr);
25458
+ }
25459
+ const message = `checkStalledReviewParents: killed ${state.id} — past review deadline with no terminal verdict for ${state.issueId}; redispatch will respawn it warm (PAN-2584)`;
25460
+ actions.push(message);
25461
+ logDeaconEventSync(message);
25462
+ try {
25463
+ const { emitActivityEntrySync } = await import("./activity-logger-DvYvFhwZ.js");
25464
+ emitActivityEntrySync({
25465
+ source: "review",
25466
+ level: "warn",
25467
+ message: `Review parent for ${state.issueId} exceeded its deadline with no verdict — killed for warm respawn`,
25468
+ issueId: state.issueId
25469
+ });
25470
+ } catch {}
25471
+ }
25472
+ } catch (error) {
25473
+ console.error("[deacon] Error checking stalled review parents:", error instanceof Error ? error.message : String(error));
25474
+ }
25475
+ return actions;
25476
+ }
25477
+ /**
25426
25478
  * PAN-1862 (FR-11/FR-12): detect a fork cache MISS — a forked reviewer's first
25427
25479
  * request reporting cacheRead == 0 when a warm hit was expected (TTL expired,
25428
25480
  * model mismatch, prefix drift). Purely observability: reviews are already
@@ -25433,7 +25485,7 @@ async function checkStalledReviewDiscovery() {
25433
25485
  async function checkReviewForkCacheMisses() {
25434
25486
  const actions = [];
25435
25487
  try {
25436
- const { listAgentStates, saveAgentState } = await import("./agents-BIggLvi_.js");
25488
+ const { listAgentStates, saveAgentState } = await import("./agents-C-vqmKDi.js");
25437
25489
  const { readEventsSync } = await import("./events-BlzVUyTx.js");
25438
25490
  const { emitActivityEntrySync } = await import("./activity-logger-DvYvFhwZ.js");
25439
25491
  const states = listAgentStates();
@@ -25633,7 +25685,7 @@ async function reconcileStaleMergeStatus() {
25633
25685
  actions.push(msg);
25634
25686
  console.log(`[deacon] ${msg}`);
25635
25687
  try {
25636
- const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
25688
+ const { postMergeLifecycle } = await import("./merge-agent-7nBiCytp.js");
25637
25689
  postMergeLifecycle(issueId, project.projectPath, branch, { skipDeploy: true }).catch((err) => console.warn(`[deacon] postMergeLifecycle (reconcile) failed for ${issueId}: ${err}`));
25638
25690
  } catch (err) {
25639
25691
  console.warn(`[deacon] Could not import postMergeLifecycle: ${err}`);
@@ -25775,7 +25827,7 @@ const STALE_MERGE_BLOCKER_COOLDOWN_MS = 120 * 1e3;
25775
25827
  async function reconcileStaleMergeBlockers() {
25776
25828
  const actions = [];
25777
25829
  try {
25778
- const { resolveConflictGate, buildRealConflictGateDeps } = await import("./conflict-gate-JdFuhKuF.js");
25830
+ const { resolveConflictGate, buildRealConflictGateDeps } = await import("./conflict-gate-DwOslTij.js");
25779
25831
  const statuses = loadReviewStatuses();
25780
25832
  const now = Date.now();
25781
25833
  const deps = buildRealConflictGateDeps();
@@ -26083,7 +26135,7 @@ async function autoCloseOut(now = /* @__PURE__ */ new Date()) {
26083
26135
  } } : {}
26084
26136
  };
26085
26137
  try {
26086
- const { closeOut } = await import("./workflows-Cz8OtiB4.js");
26138
+ const { closeOut } = await import("./workflows-DVwXauef.js");
26087
26139
  const result = await Effect.runPromise(closeOut(ctx));
26088
26140
  if (!result.success) {
26089
26141
  const failed = result.steps.find((step) => !step.success && !step.skipped);
@@ -26645,7 +26697,7 @@ async function nudgeStalledResumeWorkAgents() {
26645
26697
  const message = buildStalledResumePrompt(state);
26646
26698
  if (!message) continue;
26647
26699
  try {
26648
- const { messageAgent } = await import("./agents-BIggLvi_.js");
26700
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
26649
26701
  await messageAgent(agentId, message);
26650
26702
  recordCooldown(agentId, ".last-stalled-resume-nudge");
26651
26703
  const action = `Re-sent stalled resume prompt to ${agentId} (${state.issueId})`;
@@ -26763,7 +26815,7 @@ async function nudgeIdleWorkAgentsWithOpenBeads() {
26763
26815
  "Continue the per-bead workflow without asking — claim it (`bd update <bead-id> --claim`), implement, commit, close. Inspection is conditional on metadata.requiresInspection (default false; check the plan item before deciding to call `pan inspect`). Do NOT end your turn with a multi-paragraph summary; just advance to the next bead."
26764
26816
  ].join("\n");
26765
26817
  try {
26766
- const { messageAgent } = await import("./agents-BIggLvi_.js");
26818
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
26767
26819
  await messageAgent(agentId, message);
26768
26820
  writeFileSync(join(getAgentDir(agentId), ".last-bead-nudge"), String(Date.now()), "utf-8");
26769
26821
  const action = `Nudged idle ${agentId} (${state.issueId}) — ${openBeads.length} open bead(s)`;
@@ -27336,7 +27388,9 @@ function shouldSkipReviewStatus(status) {
27336
27388
  if (!status) return false;
27337
27389
  if (status.stuck || status.deaconIgnored || status.mergeStatus === "merged" || status.readyForMerge) return true;
27338
27390
  if (status.reviewStatus === "blocked" || status.reviewStatus === "failed") return true;
27339
- return status.verificationStatus === "failed" || status.testStatus === "failed";
27391
+ if (status.verificationStatus === "failed" || status.testStatus === "failed") return true;
27392
+ if (status.reviewStatus === "reviewing" || status.reviewStatus === "passed") return true;
27393
+ return status.reviewStatus === "pending" && !!status.reviewRequestedAt;
27340
27394
  }
27341
27395
  function hasPendingRework(status) {
27342
27396
  if (!status) return false;
@@ -27538,7 +27592,7 @@ async function remediateFlywheelOrchestrator(agentId, now, actions, reason) {
27538
27592
  now
27539
27593
  });
27540
27594
  if (decision.kind === "noop") return;
27541
- const { resumeFlywheel, pauseFlywheel } = await import("./flywheel-BqDdGvrQ.js");
27595
+ const { resumeFlywheel, pauseFlywheel } = await import("./flywheel-PJsbrXNY.js");
27542
27596
  const prev = readStuckRemediationState(agentId);
27543
27597
  const nowIso = new Date(now).toISOString();
27544
27598
  if (decision.kind === "escalate") {
@@ -28554,7 +28608,7 @@ async function cleanupStaleAgentState() {
28554
28608
  */
28555
28609
  async function cleanupAbandonedFeedback() {
28556
28610
  const actions = [];
28557
- const { getReviewStatusSync } = await import("./review-status-bBkqUj5i.js");
28611
+ const { getReviewStatusSync } = await import("./review-status-h7BXIA4z.js");
28558
28612
  const { clearFeedbackFiles } = await import("./feedback-writer-thrdxYpK.js");
28559
28613
  for (const { issueId, workspacePath } of listFeatureWorkspaces()) {
28560
28614
  const panFeedbackDir = join(workspacePath, ".pan", "feedback");
@@ -28626,7 +28680,7 @@ async function handleOrphanReviewerSession(sessionName, sessions, creationTimes,
28626
28680
  if (!issueId) return null;
28627
28681
  const agentSession = `agent-${issueId.toLowerCase()}`;
28628
28682
  if (sessions.includes(agentSession)) return null;
28629
- const { getReviewStatusSync } = await import("./review-status-bBkqUj5i.js");
28683
+ const { getReviewStatusSync } = await import("./review-status-h7BXIA4z.js");
28630
28684
  try {
28631
28685
  if (getReviewStatusSync(issueId)?.reviewStatus === "reviewing") return null;
28632
28686
  } catch {}
@@ -28746,7 +28800,7 @@ async function checkOrphanedCompletions() {
28746
28800
  async function checkPendingTestDispatch() {
28747
28801
  const actions = [];
28748
28802
  try {
28749
- const { loadReviewStatuses, setReviewStatusSync } = await import("./review-status-bBkqUj5i.js");
28803
+ const { loadReviewStatuses, setReviewStatusSync } = await import("./review-status-h7BXIA4z.js");
28750
28804
  const statuses = loadReviewStatuses();
28751
28805
  const now = Date.now();
28752
28806
  for (const [issueId, status] of Object.entries(statuses)) {
@@ -28794,8 +28848,8 @@ async function checkPendingTestDispatch() {
28794
28848
  logDeaconEventSync(`checkPendingTestDispatch: deferred test for ${issueId} — advancing ceiling reached (PAN-1665) — ${describeRunningAgents()}`);
28795
28849
  continue;
28796
28850
  }
28797
- const { spawnRun } = await import("./agents-BIggLvi_.js");
28798
- const { buildTestRolePrompt } = await import("./test-agent-queue-qfsq6uaC.js");
28851
+ const { spawnRun } = await import("./agents-C-vqmKDi.js");
28852
+ const { buildTestRolePrompt } = await import("./test-agent-queue-B_ukPyIK.js");
28799
28853
  try {
28800
28854
  const run = await spawnRun(issueId, "test", {
28801
28855
  workspace,
@@ -28918,7 +28972,7 @@ async function checkCompletedButUnsignaledTests() {
28918
28972
  const cmd = `pan admin specialists done test ${issueId} --status ${decision.status}${noteArg}`;
28919
28973
  const nudge = `Your test verdict (${decision.status}) is already written to .pan/test/result.json. Your ONLY remaining task is to execute this Bash command immediately — do not analyze, do not summarize, do not ask questions, just run it:\n\n${cmd}\n\nRun this command NOW. Do not write any other response before executing it.`;
28920
28974
  try {
28921
- const { messageAgent } = await import("./agents-BIggLvi_.js");
28975
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
28922
28976
  await messageAgent(testSession, nudge);
28923
28977
  unsignaledTestNudges.set(testSession, now);
28924
28978
  const msg = `Nudged ${testSession} to signal ${decision.status} (verdict artifact present)`;
@@ -28932,7 +28986,7 @@ async function checkCompletedButUnsignaledTests() {
28932
28986
  case "nudge-write": {
28933
28987
  const nudge = `Your test run for ${issueId} looks finished but no verdict was recorded. Decide the verdict from the gates/UAT you ran, then do BOTH of these now: (1) write the workspace file .pan/test/result.json as {"status":"passed"|"failed","notes":"<evidence>"}, and (2) run: pan admin specialists done test ${issueId} --status passed|failed. Do this immediately — do not summarize or ask questions, just write the file and run the command.`;
28934
28988
  try {
28935
- const { messageAgent } = await import("./agents-BIggLvi_.js");
28989
+ const { messageAgent } = await import("./agents-C-vqmKDi.js");
28936
28990
  await messageAgent(testSession, nudge);
28937
28991
  unsignaledTestNudges.set(testSession, now);
28938
28992
  const msg = `Nudged ${testSession} to write+signal a test verdict (no artifact yet)`;
@@ -28955,7 +29009,7 @@ async function checkCompletedButUnsignaledTests() {
28955
29009
  async function checkVerificationReviewContradiction() {
28956
29010
  const actions = [];
28957
29011
  try {
28958
- const { loadReviewStatuses, setReviewStatusSync } = await import("./review-status-bBkqUj5i.js");
29012
+ const { loadReviewStatuses, setReviewStatusSync } = await import("./review-status-h7BXIA4z.js");
28959
29013
  const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
28960
29014
  const statuses = loadReviewStatuses();
28961
29015
  for (const [issueId, status] of Object.entries(statuses)) if (status.verificationStatus === "passed" && status.reviewStatus === "reviewing" && status.stuckReason === "review_infrastructure_failure") {
@@ -29060,7 +29114,7 @@ async function checkPostReviewCommits() {
29060
29114
  actions.push(`Deferred post-review re-dispatch for ${issueId} — advancing-role concurrency ceiling reached`);
29061
29115
  logDeaconEventSync(`checkPostReviewCommits: deferred review for ${issueId} — advancing ceiling reached (PAN-1665) — ${describeRunningAgents()}`);
29062
29116
  } else if (freshStatus?.reviewStatus === "pending") {
29063
- const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
29117
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DTINEffB.js");
29064
29118
  const branch = `feature/${issueId.toLowerCase()}`;
29065
29119
  const dispatchResult = await Effect.runPromise(spawnReviewRoleForIssue({
29066
29120
  issueId,
@@ -29531,7 +29585,7 @@ async function checkMergedWorkSessions() {
29531
29585
  const actions = [];
29532
29586
  try {
29533
29587
  const { selectMergedWorkSessions } = await import("./reap-terminal-sessions-BwJb2DLJ.js");
29534
- const { setAgentPaused } = await import("./agents-BIggLvi_.js");
29588
+ const { setAgentPaused } = await import("./agents-C-vqmKDi.js");
29535
29589
  const toKill = selectMergedWorkSessions(loadReviewStatuses(), [...await Effect.runPromise(listSessionNames())]);
29536
29590
  for (const session of toKill) try {
29537
29591
  await Effect.runPromise(setAgentPaused(session, "merged — awaiting close-out (verify on main)", true));
@@ -29627,7 +29681,7 @@ async function runPatrol() {
29627
29681
  const stuckRemediationActions = await checkStuckAgentRemediation();
29628
29682
  actions.push(...stuckRemediationActions);
29629
29683
  for (const a of stuckRemediationActions) addLog("action", a, state.patrolCycle);
29630
- const { reconcileInFlightJournals } = await import("./advancing-selfheal-CMlGznKv.js");
29684
+ const { reconcileInFlightJournals } = await import("./advancing-selfheal-BezNfM3P.js");
29631
29685
  const reconciledJournalActions = await reconcileInFlightJournals();
29632
29686
  actions.push(...reconciledJournalActions);
29633
29687
  for (const a of reconciledJournalActions) addLog("action", a, state.patrolCycle);
@@ -29639,7 +29693,7 @@ async function runPatrol() {
29639
29693
  const age = Date.now() - (pending.timestamp ?? 0);
29640
29694
  if (age < 3600 * 1e3) {
29641
29695
  console.log(`[deacon] Processing pending post-merge lifecycle for ${pending.issueId} (age: ${Math.round(age / 1e3)}s)`);
29642
- const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
29696
+ const { postMergeLifecycle } = await import("./merge-agent-7nBiCytp.js");
29643
29697
  const { unlinkSync } = await import("fs");
29644
29698
  unlinkSync(pendingFile);
29645
29699
  await postMergeLifecycle(pending.issueId, pending.projectPath, pending.sourceBranch, { skipDeploy: true });
@@ -29704,7 +29758,7 @@ async function runPatrol() {
29704
29758
  } catch (err) {
29705
29759
  console.warn(`[deacon] Failed to check workspace existence: ${err.message}`);
29706
29760
  }
29707
- const { checkMergedAdvancingSessions } = await import("./advancing-selfheal-CMlGznKv.js");
29761
+ const { checkMergedAdvancingSessions } = await import("./advancing-selfheal-BezNfM3P.js");
29708
29762
  const reapedWorkActions = await checkMergedWorkSessions();
29709
29763
  actions.push(...reapedWorkActions);
29710
29764
  for (const a of reapedWorkActions) addLog("action", a, state.patrolCycle);
@@ -29712,7 +29766,7 @@ async function runPatrol() {
29712
29766
  actions.push(...reapedMergedAdvancingActions);
29713
29767
  for (const a of reapedMergedAdvancingActions) addLog("action", a, state.patrolCycle);
29714
29768
  try {
29715
- const { refreshClaudeCredentialsForActiveRemoteAgents } = await import("./remote-completion-Bklh6loJ.js");
29769
+ const { refreshClaudeCredentialsForActiveRemoteAgents } = await import("./remote-completion-BmxD5UMQ.js");
29716
29770
  const remoteCredentialActions = await refreshClaudeCredentialsForActiveRemoteAgents();
29717
29771
  actions.push(...remoteCredentialActions);
29718
29772
  for (const a of remoteCredentialActions) addLog(a.includes("failed") ? "warn" : "action", a, state.patrolCycle);
@@ -29728,7 +29782,7 @@ async function runPatrol() {
29728
29782
  addLog("warn", `Remote heartbeat refresh patrol failed: ${err.message}`, state.patrolCycle);
29729
29783
  }
29730
29784
  try {
29731
- const { reapCompletedRemoteAgents } = await import("./remote-completion-Bklh6loJ.js");
29785
+ const { reapCompletedRemoteAgents } = await import("./remote-completion-BmxD5UMQ.js");
29732
29786
  const remoteReap = await reapCompletedRemoteAgents();
29733
29787
  for (const r of remoteReap) if (r.status === "handed-off" || r.status === "error") {
29734
29788
  const msg = `Remote reap ${r.issueId}: ${r.status} (${r.details.join("; ")})`;
@@ -29786,6 +29840,9 @@ async function runPatrol() {
29786
29840
  const stalledDiscoveryActions = await checkStalledReviewDiscovery();
29787
29841
  actions.push(...stalledDiscoveryActions);
29788
29842
  for (const a of stalledDiscoveryActions) addLog("action", a, state.patrolCycle);
29843
+ const stalledParentActions = await checkStalledReviewParents();
29844
+ actions.push(...stalledParentActions);
29845
+ for (const a of stalledParentActions) addLog("action", a, state.patrolCycle);
29789
29846
  const forkCacheActions = await checkReviewForkCacheMisses();
29790
29847
  actions.push(...forkCacheActions);
29791
29848
  for (const a of forkCacheActions) addLog("action", a, state.patrolCycle);
@@ -29917,7 +29974,7 @@ async function runPatrol() {
29917
29974
  mergeStatus: "merged",
29918
29975
  readyForMerge: false
29919
29976
  });
29920
- const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
29977
+ const { postMergeLifecycle } = await import("./merge-agent-7nBiCytp.js");
29921
29978
  postMergeLifecycle(issueId, resolved.projectPath).catch((err) => console.warn(`[deacon] postMergeLifecycle failed for ${issueId}: ${err}`));
29922
29979
  actions.push(`Auto-completed stale merge for ${issueId}`);
29923
29980
  } else {
@@ -30097,7 +30154,7 @@ function startDeacon() {
30097
30154
  logDeaconEventSync(`startDeacon: health monitor starting (patrol every ${config.patrolIntervalMs / 1e3}s)`);
30098
30155
  (async () => {
30099
30156
  await reconcileAgentLiveness();
30100
- const { runBootAdvancingSelfHeal } = await import("./advancing-selfheal-CMlGznKv.js");
30157
+ const { runBootAdvancingSelfHeal } = await import("./advancing-selfheal-BezNfM3P.js");
30101
30158
  await runBootAdvancingSelfHeal();
30102
30159
  runScheduledPatrol("startup");
30103
30160
  })().catch((err) => {
@@ -30169,4 +30226,4 @@ function assessDeaconPatrolFreshness(params) {
30169
30226
  //#endregion
30170
30227
  export { isPreKickoffLaunchDeath as $, scanPendingInputsPromise as $t, reconcileAgentLiveness as A, stalledReviewConvoyRecoveryState as At, applyIssueBlocksMainLabel as B, formatUptime as Bt, getLastPatrolResult as C, isSynthesisForActiveReviewRun as Ct, isDeaconRunning as D, handleWorkCompleted as Dt, handleAgentStoppedForOrphanReviewerSessions as E, handleReviewCoordinatorDied as Et, setAgentStatusChangedNotifier as F, INSPECT_TIMEOUT_MS as Ft, applyIssueVetoedLabel as G, isSmeeConfiguredSync as Gt, applyIssueParkedLabel as H, getCurrentDockerStats as Ht, setAgentStoppedNotifier as I, checkInspectAgentTimeouts as It, removeIssueParkedLabel as J, countPendingAskUserQuestionsForAgent as Jt, removeIssueBlocksMainLabel as K, startSmeeProcessSync as Kt, setMergeReadyNotifier as L, getRuntimeForAgent as Lt, resetPatrolHeartbeatForStartup as M, contextOverflowRecoveryState as Mt, runPatrol as N, contextProactiveCompactState as Nt, loadConfig as O, recoverStalledReviewConvoys as Ot, saveState as P, stuckOverflowNativeRecoveryState as Pt, createInFlightGuard as Q, getAgentWorkspace as Qt, startDeacon as R, classifyMemoryPressure as Rt, getDeaconStatus as S, checkStuckReviewing as St, handleAgentStoppedEvent as T, checkOrphanedReviewStatuses as Tt, applyIssueReadyLabel as U, getResourceConfig as Ut, applyIssueObjectionLabel as V, getContainerHistory as Vt, applyIssueReleasedLabel as W, getSystemHealthSnapshot as Wt, removeIssueReleasedLabel as X, getAgentJsonlPath as Xt, removeIssueReadyLabel as Y, getAgentJsonlMtime as Yt, removeIssueVetoedLabel as Z, getAgentPendingQuestions as Zt, cleanupOrphanReviewerSessions as _, withConcurrencyLimit as _t, checkCompletedButUnsignaledTests as a, listBootReconciliationCandidates as at, containerRestartBackoffMs as b, synthesizeReviewFromReports as bt, checkMergedWorkSessions as c, checkFailedMergeRetry as ct, checkPostReviewCommits as d, reconcileClosedPrReadyForMerge as dt, detectAwaitingInputForAgent as en, isRapidPostResumeDeath as et, checkReadyForMergeStuck as f, reconcileFalseMerged as ft, cleanupAbandonedFeedback as g, reconcileStuckReadyForMerge as gt, checkWorkspaceContainerHealth as h, reconcileStaleMergeStatus as ht, checkAwaitingTestWorkSessions as i, isBootReconciliationCandidate as it, reconcileTestStatusFromGreenCi as j, checkApiErrorAgents as jt, loadState as k, reviewConvoyLiveness as kt, checkOrphanedCompletions as l, checkFirstCompletionAgents as lt, checkVerificationReviewContradiction as m, reconcileStaleMergeBlockers as mt, assessDeaconPatrolFreshness as n, normalizeAwaitingInputPrompt as nn, nudgeStalledResumeWorkAgents as nt, checkDeadEndAgents as o, startBootReconciliation as ot, checkStuckWorkAgents as p, reconcileMergedButReviewing as pt, removeIssueObjectionLabel as q, computeAgentEnrichment as qt, checkAndSuspendIdleAgents as r, parseCodexApprovalPrompt as rn, redeliverUndeliveredKickoffs as rt, checkMassDeath as s, autoCloseOut as st, applyBootReconciliationDecision as t, detectAwaitingInputFromPaneSync as tn, nudgeIdleWorkAgentsWithOpenBeads as tt, checkPendingTestDispatch as u, ciRetryMap as ut, cleanupOrphanedPlanningSessions as v, cleanupOrphanedReviewSessions as vt, handleAgentHeartbeatDeadEvent as w, checkMissingReviewStatuses as wt, getDeaconLogs as x, checkCompletedButUnsignaledReviews as xt, cleanupStaleAgentState as y, monitorReviewConvoySignals as yt, stopDeacon as z, getResourceStacks as zt };
30171
30228
 
30172
- //# sourceMappingURL=deacon-j3qSZ7--.js.map
30229
+ //# sourceMappingURL=deacon-CGHl90eC.js.map