@overdeck/desktop 0.45.10 → 0.45.12

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 (603) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +6 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-l0DSvFFS.js → acceptance-criteria-1LHgD9vg.js} +2 -2
  4. package/server/{advancing-selfheal-CMlGznKv.js → advancing-selfheal-BqsLWqEM.js} +4 -4
  5. package/server/{agent-gc-BtAzj8QN.js → agent-gc-CUb52n7s.js} +3 -3
  6. package/server/{agent-state-xk_G8t90.js → agent-state-D-moNwhA.js} +1 -1
  7. package/server/{agent-state-service-C1iUF9Ft.js → agent-state-service-BaZH7sXJ.js} +1 -1
  8. package/server/{agent-state-service-5ge9xxhx.js → agent-state-service-BzESvLOf.js} +4 -4
  9. package/server/{agents-DHvsjsuP.js → agents-B5LfpLPv.js} +256 -185
  10. package/server/{agents-BIggLvi_.js → agents-C4kZ8a2r.js} +1 -1
  11. package/server/{archive-planning-B4Qi02bk.js → archive-planning-BbZe-8IK.js} +1 -1
  12. package/server/{archive-planning-zTvWWHG_.js → archive-planning-oX1pj6nY.js} +3 -3
  13. package/server/{artifact-index-jobs-BrByqVkB.js → artifact-index-jobs-DGr6bxev.js} +3 -3
  14. package/server/{auto-commit-DoIPFoEs.js → auto-commit-CGQlb4rV.js} +1 -1
  15. package/server/{backlog-auto-trigger-COm_R96V.js → backlog-auto-trigger-BlJHikOm.js} +2 -2
  16. package/server/{bd-process-lock-CJkoG7hW.js → bd-process-lock-i3CYMS-B.js} +3 -3
  17. package/server/{beads-AmCXEv_E.js → beads-BNU-fb48.js} +1 -1
  18. package/server/{beads-DlZm-vrG.js → beads-DD7fYCl5.js} +4 -4
  19. package/server/{beads-query-BrVNWoSL.js → beads-query-e6oku4P5.js} +2 -2
  20. package/server/{behavior-By-2Wipv.js → behavior-CPf0pbOt.js} +2 -2
  21. package/server/{briefing-freshness-CXhZdnB8.js → briefing-freshness-B2FdLwIv.js} +27 -15
  22. package/server/{checkpoint-manager-CfNpHOp4.js → checkpoint-manager-JryW6MpM.js} +2 -2
  23. package/server/{checkpoint-manager-CPw51H2n.js → checkpoint-manager-eFgaMMu4.js} +1 -1
  24. package/server/checkpoint-worker.js +1 -1
  25. package/server/{checkpoints-BjlBWOA8.js → checkpoints-BK17oicz.js} +1 -1
  26. package/server/{checkpoints-BbfH1EIy.js → checkpoints-qvOqvMuC.js} +2 -2
  27. package/server/{claude-permissions-DrRAs_0F.js → claude-permissions-B6bWGh9d.js} +3 -3
  28. package/server/{claude-settings-overlay-CEWlIFL-.js → claude-settings-overlay-BPdhTPjo.js} +1 -1
  29. package/server/{claude-settings-overlay-BSeS7Ki3.js → claude-settings-overlay-CRyyKKXQ.js} +2 -2
  30. package/server/{cli-CvK9xuSS.js → cli-B75AieAM.js} +9 -9
  31. package/server/cli-Ch_BWJB2.js +3 -0
  32. package/server/{cliproxy-J-_1iIXe.js → cliproxy-CCzwuSNe.js} +2 -2
  33. package/server/{cliproxy-BOcmOK6l.js → cliproxy-DOQf66G9.js} +1 -1
  34. package/server/{close-issue-BnpErnD1.js → close-issue-_X3MXJyG.js} +4 -4
  35. package/server/{closed-issue-reaper-DRqK5k39.js → closed-issue-reaper-BsUfBSjM.js} +13 -13
  36. package/server/{closed-issue-reaper-BLCQwTpF.js → closed-issue-reaper-CLR7ClsO.js} +1 -1
  37. package/server/{codex-DcInrhok.js → codex-B4KEpX5V.js} +5 -5
  38. package/server/{codex-BUZjrnqH.js → codex-CY-QRuU9.js} +1 -1
  39. package/server/{compact-beads-omhUgj5b.js → compact-beads-cZds2MTr.js} +1 -1
  40. package/server/{compact-beads-RFwdZFPA.js → compact-beads-uEDccC76.js} +3 -3
  41. package/server/{config-oWoKf5jO.js → config-8sjaU6jZ.js} +2 -2
  42. package/server/{config-CzcWQ24p.js → config-DARrpYWA.js} +1 -1
  43. package/server/{config-yaml-DPAieL_G.js → config-yaml-ClpGgrf6.js} +100 -99
  44. package/server/{conflict-gate-BhKvrPxn.js → conflict-gate-BtB_o-Vi.js} +3 -3
  45. package/server/{conflict-gate-JdFuhKuF.js → conflict-gate-Ds9_2yjd.js} +1 -1
  46. package/server/{context-layers-DxKsseHI.js → context-layers-CRCk1QG7.js} +2 -2
  47. package/server/{context-layers-CTjQwcEQ.js → context-layers-r2ywnQYA.js} +3 -3
  48. package/server/{control-settings-BMqUkXmR.js → control-settings-D1B3u6HP.js} +4 -4
  49. package/server/{conversation-compaction-Ba5aZdrb.js → conversation-compaction-CZRVk4hg.js} +1 -1
  50. package/server/{conversation-compaction-C5o_eKEm.js → conversation-compaction-D86Zo2Ci.js} +9 -9
  51. package/server/{conversation-service-WKl-sw58.js → conversation-service-CkL-6MuG.js} +1 -1
  52. package/server/{conversation-service-DvG8vZSV.js → conversation-service-CuTVU8dV.js} +5 -5
  53. package/server/{conversations-Dcx6LeIh.js → conversations-BmWEluPL.js} +1 -1
  54. package/server/{conversations-DL_BAWVk.js → conversations-DfJKBDwB.js} +5 -5
  55. package/server/{cost-C2CuA66z.js → cost-CCnqa5xK.js} +2 -2
  56. package/server/{cost-DaOG8sUB.js → cost-DAPYN6iA.js} +3 -3
  57. package/server/{cost-sync-8lkDeL9g.js → cost-sync-BDL10Nwu.js} +3 -3
  58. package/server/{dag-jH8ZkewR.js → dag-Dv2r5bVD.js} +3 -3
  59. package/server/dashboard-db-worker.js +6 -6
  60. package/server/{deacon-j3qSZ7--.js → deacon-CM0MxbS8.js} +235 -178
  61. package/server/{deacon-Cv2RMfHs.js → deacon-DYnZH7kC.js} +3 -3
  62. package/server/{deacon-nudge-log-CJGA6aSQ.js → deacon-nudge-log-B-naf89q.js} +2 -2
  63. package/server/{deacon-swarm-DadWNi5J.js → deacon-swarm-BstYoz8Q.js} +17 -17
  64. package/server/deacon-swarm-CSWGRfzr.js +2 -0
  65. package/server/deacon.js +7 -7
  66. package/server/{devcontainer-renderer-DUJYYRQB.js → devcontainer-renderer-CaYOG9JN.js} +2 -2
  67. package/server/{docker-Q4bphryk.js → docker-DDI1shu3.js} +2 -2
  68. package/server/{ensure-devcontainer-BCB6fHp9.js → ensure-devcontainer-CbSXvN9W.js} +1 -1
  69. package/server/{ensure-devcontainer-XLL0vtgV.js → ensure-devcontainer-DCAg3ksz.js} +3 -3
  70. package/server/{event-store-DTJXZjCl.js → event-store-DCMqyI07.js} +3 -3
  71. package/server/{event-store-DIk9wvnS.js → event-store-DU3HkZlN.js} +1 -1
  72. package/server/{events-DGWZzye2.js → events-BfiosVAn.js} +3 -3
  73. package/server/{events-BlzVUyTx.js → events-DLRxpSuV.js} +1 -1
  74. package/server/{factory-rG4T40su.js → factory-BMtWV9iv.js} +4 -4
  75. package/server/{feature-registry-population-Dwyj9gEM.js → feature-registry-population-DA7bO6Zn.js} +5 -5
  76. package/server/{feature-registry-storage-CnGyNgAq.js → feature-registry-storage-nAY1fbBt.js} +3 -3
  77. package/server/{features-CYY2_Eeh.js → features-DMu7eGmU.js} +2 -2
  78. package/server/{feedback-target-C4DaDSZ8.js → feedback-target-B2SEai8-.js} +1 -1
  79. package/server/{feedback-target-oE4-Esxl.js → feedback-target-DHqcw3cN.js} +6 -6
  80. package/server/{feedback-writer-thrdxYpK.js → feedback-writer-DMBdS_jL.js} +1 -1
  81. package/server/{feedback-writer-DMaO0XXa.js → feedback-writer-qvm7UON7.js} +4 -4
  82. package/server/{flywheel-DefHRzY4.js → flywheel-D2LdPSic.js} +13 -13
  83. package/server/{flywheel-ClMjGW_u.js → flywheel-Dfpx4bIV.js} +11 -11
  84. package/server/{flywheel-BqDdGvrQ.js → flywheel-k4FPtCQ_.js} +1 -1
  85. package/server/{flywheel-merge-order-CuDcqTRJ.js → flywheel-merge-order-CB4lbXeJ.js} +6 -6
  86. package/server/{flywheel-merge-order-B6YDSElh.js → flywheel-merge-order-CttTazRY.js} +1 -1
  87. package/server/{forge-BixzckB0.js → forge-CoPFXFyl.js} +3 -3
  88. package/server/forge-IgLR0Ist.js +2 -0
  89. package/server/{from-D4xmArTA.js → from-B0YoJl9-.js} +2 -2
  90. package/server/{fts-db-DPtxOAjp.js → fts-db-DAHW1yA_.js} +2 -2
  91. package/server/{fts-operations-VrGjsT0w.js → fts-operations-DDXDBi0d.js} +3 -3
  92. package/server/{git-utils-D_cax3fD.js → git-utils-B90Zjzfl.js} +2 -2
  93. package/server/{git-utils-RAmTwjFB.js → git-utils-DbfC0zls.js} +1 -1
  94. package/server/{github-app-FMXgo3vK.js → github-app-BecAnXRX.js} +2 -2
  95. package/server/{github-app-B5PDHMyn.js → github-app-C7lftMNj.js} +1 -1
  96. package/server/{github-client-VRiB6N-4.js → github-client-BwtKZtM0.js} +1 -1
  97. package/server/{github-client-yjbXaqpR.js → github-client-D21rCIXk.js} +2 -2
  98. package/server/{github-pr-lookup-t8X8R0c0.js → github-pr-lookup-CzVWuysl.js} +2 -2
  99. package/server/{harness-resolve-DKeSVsJL.js → harness-resolve-SkRJm4a7.js} +3 -3
  100. package/server/{health-events-DaLX4-0a.js → health-events-BT0aAfeA.js} +2 -2
  101. package/server/{health-events-CD6q47ub.js → health-events-DA_JLpgZ.js} +1 -1
  102. package/server/{hooks-D-cbMUzQ.js → hooks-BQxRXtRb.js} +1 -1
  103. package/server/{hooks-CmHFSj_Z.js → hooks-DxEn2BoY.js} +2 -2
  104. package/server/{idle-stack-reaper-DdnERp3G.js → idle-stack-reaper-C7fJL8jH.js} +1 -1
  105. package/server/{idle-stack-reaper-DBKQ9SKu.js → idle-stack-reaper-DGy7tvC9.js} +2 -2
  106. package/server/{infra-CpKlYZA9.js → infra-DE3C4PMr.js} +22 -4
  107. package/server/{injection-CszhePD2.js → injection-Cc4Qt8LZ.js} +7 -7
  108. package/server/{injection-DKzL2Axk.js → injection-Dt22tGvS.js} +1 -1
  109. package/server/inspect-agent-CYoWAeeB.js +2 -0
  110. package/server/{inspect-agent-BKKc0XnB.js → inspect-agent-DOaCDkCF.js} +9 -9
  111. package/server/{internal-token-CQUx9YLc.js → internal-token-B_1YLWLI.js} +3 -3
  112. package/server/{internal-token-DrGdpLFo.js → internal-token-nobT6FhA.js} +1 -1
  113. package/server/{io-Wy8YpFeP.js → io-A7ZuOBkz.js} +2 -2
  114. package/server/{issue-closed-BO84g03t.js → issue-closed-Da3DeomA.js} +4 -4
  115. package/server/{issue-lifecycle-DnhQgddB.js → issue-lifecycle-543pQX9D.js} +28 -28
  116. package/server/{issue-lifecycle-nY4esZn8.js → issue-lifecycle-Bd9XBJAQ.js} +1 -1
  117. package/server/{issue-service-singleton-Bnqv1uaa.js → issue-service-singleton-BC2JLZi7.js} +1 -1
  118. package/server/{issue-service-singleton-_AquSBTl.js → issue-service-singleton-Brc3t0SV.js} +8 -8
  119. package/server/{issues-ChNcfHta.js → issues-D3kt9UWE.js} +2 -2
  120. package/server/{label-cleanup-bVXCGWBM.js → label-cleanup-w9X_T3AQ.js} +2 -2
  121. package/server/{layers-vdvlpFki.js → layers-Cwe1J-9o.js} +2 -2
  122. package/server/{lifecycle-CGKm7doE.js → lifecycle-f1GbDK33.js} +6 -6
  123. package/server/{lifecycle-io-DSrv9xGh.js → lifecycle-io-Bqvj0m3i.js} +4 -4
  124. package/server/{lifecycle-io-CdqPkCyk.js → lifecycle-io-D56q8zlO.js} +1 -1
  125. package/server/{linear-client-BxKvL6U8.js → linear-client-Bh4T4S-c.js} +1 -1
  126. package/server/{linear-client-E0HdXtWs.js → linear-client-CfJMTAYd.js} +2 -2
  127. package/server/memory-fts-worker.js +1 -1
  128. package/server/{merge-D3wEbmUJ.js → merge-DRMPa8CQ.js} +1 -1
  129. package/server/{merge-UlAwCk80.js → merge-ZrXFM3jv.js} +3 -3
  130. package/server/{merge-agent-BcgAYStl.js → merge-agent-CHHs5S_0.js} +25 -25
  131. package/server/{merge-agent-Dh8Y9PDO.js → merge-agent-CfohxFWM.js} +1 -1
  132. package/server/{merge-blockers-DwdQNsYD.js → merge-blockers-BMhDpMl_.js} +2 -2
  133. package/server/merge-ops-Czke6UAp.js +2 -0
  134. package/server/{merge-rebase-CH12_ufi.js → merge-rebase-R7MfqpiE.js} +2 -2
  135. package/server/{merge-set-TRxJwR-w.js → merge-set-B3Breacq.js} +3 -3
  136. package/server/{merge-set-rXK3ehnB.js → merge-set-D-iXNP0I.js} +1 -1
  137. package/server/{merge-sync-CaLRt2cB.js → merge-sync-DHWbGtjR.js} +2 -2
  138. package/server/{merge-sync-BKLKu9kz.js → merge-sync-bOOtfeXR.js} +1 -1
  139. package/server/{merge-train-DmxlYbEo.js → merge-train-98ptZrPT.js} +3 -3
  140. package/server/{merge-train-deps-DBHsOWt9.js → merge-train-deps-B5FWJTE2.js} +4 -4
  141. package/server/{merge-verification-DA9rvqsE.js → merge-verification-BGiuiXAK.js} +4 -4
  142. package/server/{multipart-parser-DtIEUW2B.js → multipart-parser-D7mzNNDm.js} +2 -2
  143. package/server/node_modules/.package-lock.json +1 -0
  144. package/server/{orphan-proposed-reconciler-Db8tUhce.js → orphan-proposed-reconciler-BSGCNJ6X.js} +9 -9
  145. package/server/{orphan-proposed-reconciler-mXV--tcB.js → orphan-proposed-reconciler-CSuxivr9.js} +1 -1
  146. package/server/package-lock.json +2 -0
  147. package/server/package.json +1 -0
  148. package/server/{pan-dir-BgBeeZDX.js → pan-dir-DoPtdHrp.js} +3 -3
  149. package/server/{paths-TE1GOZDr.js → paths-CVDLPxXp.js} +2 -2
  150. package/server/{pipeline-notifier-lwMa--Gz.js → pipeline-notifier-BtYHbBPl.js} +1 -1
  151. package/server/{pipeline-notifier-aX_5EqQO.js → pipeline-notifier-WD2dnOsR.js} +2 -2
  152. package/server/{projects-BNmVxnNt.js → projects-Bqfwuqet.js} +1 -1
  153. package/server/{prompts-CelsUdrx.js → prompts-Cg7e9FPb.js} +2 -2
  154. package/server/{providers-BOnRq5XK.js → providers-JjK6izqX.js} +1 -1
  155. package/server/{providers-4-xOzHQu.js → providers-fLduChnX.js} +7 -7
  156. package/server/public/assets/{chunk-BO2N2NFS-BjULspib.js → chunk-BO2N2NFS-aNlsGDCu.js} +4 -4
  157. package/server/public/assets/{diagram-OG6HWLK6-4ER5ovy_.js → diagram-OG6HWLK6-CnjkrvT8.js} +1 -1
  158. package/server/public/assets/{dist-CBUe_1pC.js → dist-Bg3Sbsx4.js} +3 -3
  159. package/server/public/assets/{dist-DVM-OI65.js → dist-CGKBCieA.js} +1 -1
  160. package/server/public/assets/{ganttDiagram-6RSMTGT7-DQ3nocJU.js → ganttDiagram-6RSMTGT7-C8LLKj23.js} +1 -1
  161. package/server/public/assets/{highlighted-body-OFNGDK62-BcLOHe75.js → highlighted-body-OFNGDK62-BSDEUvhW.js} +1 -1
  162. package/server/public/assets/{index-B-m-cSFg.css → index-CZiADHcL.css} +1 -1
  163. package/server/public/assets/index-LQIfhmgI.js +796 -0
  164. package/server/public/assets/{linear-Acq5WFAt.js → linear-DEbYZoxg.js} +1 -1
  165. package/server/public/assets/mermaid-GHXKKRXX-CZOsRYoT.js +1 -0
  166. package/server/public/assets/{pieDiagram-4H26LBE5-BEmjmqLh.js → pieDiagram-4H26LBE5-BtZL5pXE.js} +1 -1
  167. package/server/public/assets/{prod-D-3YYika.js → prod-DYVvIyuh.js} +4 -4
  168. package/server/public/assets/{quadrantDiagram-W4KKPZXB-DyeZ0jBC.js → quadrantDiagram-W4KKPZXB-a7vS8Jc8.js} +1 -1
  169. package/server/public/assets/{sankeyDiagram-5OEKKPKP-DSD--Pbl.js → sankeyDiagram-5OEKKPKP-Ckbq2SWH.js} +1 -1
  170. package/server/public/assets/{xychartDiagram-2RQKCTM6-idS7x7Bb.js → xychartDiagram-2RQKCTM6-DJyeNa99.js} +1 -1
  171. package/server/public/index.html +2 -2
  172. package/server/{pull-requests-CH4iBFLl.js → pull-requests-1WXmTBlo.js} +3 -3
  173. package/server/{pull-requests-DL_4klIb.js → pull-requests-D2SjJIwY.js} +1 -1
  174. package/server/{rally-D0mKv2t8.js → rally-8aQlLLVj.js} +3 -3
  175. package/server/rally-Ba9QoNYc.js +3 -0
  176. package/server/{rally-api-CcCdecF-.js → rally-api-BtvwdX6d.js} +1 -1
  177. package/server/{rally-api-DgAt6FbN.js → rally-api-H5I2CBO0.js} +2 -2
  178. package/server/{rally-client-DYjtgTOu.js → rally-client-33CYZYYu.js} +4 -4
  179. package/server/{rally-client-X0bEEN2B.js → rally-client-Bt-qHiOh.js} +1 -1
  180. package/server/{rebuild-stack-ByFCMqTK.js → rebuild-stack-CXSgAGPR.js} +1 -1
  181. package/server/{rebuild-stack-BLG3rlWa.js → rebuild-stack-KHkkrGjx.js} +6 -6
  182. package/server/{reconstruct-cache-_tDZ2D72.js → reconstruct-cache-D_Ml65_6.js} +7 -7
  183. package/server/{record-DjPikotp.js → record-De2syxNB.js} +1 -1
  184. package/server/{remote-TN0cV8k-.js → remote-CGuognN3.js} +3 -3
  185. package/server/{remote-B1Trmr0N.js → remote-D0Old0Cv.js} +3 -3
  186. package/server/{remote-agents-CmbIKw7E.js → remote-agents-DfhMq6kQ.js} +5 -5
  187. package/server/{remote-agents-DNuaAgU6.js → remote-agents-UHoi4oGr.js} +1 -1
  188. package/server/{remote-completion-Bklh6loJ.js → remote-completion-RZYePR_0.js} +12 -12
  189. package/server/resume-CmxF3Kjz.js +3 -0
  190. package/server/{review-agent-phzqNqIs.js → review-agent-sZBCpEVv.js} +35 -26
  191. package/server/review-agent-uwVftH98.js +3 -0
  192. package/server/{review-artifacts-BGc69epg.js → review-artifacts-C7a45b1_.js} +7 -7
  193. package/server/{review-context-CCq56O_Y.js → review-context-CErbQpKL.js} +7 -7
  194. package/server/{review-monitor-BKG2ubt5.js → review-monitor-DHD9m_kh.js} +2 -2
  195. package/server/{review-status-bBkqUj5i.js → review-status-JhQ3qlDS.js} +1 -1
  196. package/server/{review-status-enrichment-CGlcApSn.js → review-status-enrichment-qWvWckYN.js} +3 -3
  197. package/server/{review-status-BQjqQXZG.js → review-status-gPndPUBc.js} +66 -30
  198. package/server/{review-status-sync-BxHBVH8s.js → review-status-sync-B_GrEke8.js} +1 -1
  199. package/server/{review-status-sync-BWHnrq-k.js → review-status-sync-D3A9KX95.js} +2 -2
  200. package/server/{review-verdict-feedback-wqnikhMK.js → review-verdict-feedback-4WZ5ZdbC.js} +7 -7
  201. package/server/{review-verdict-feedback-cZh9Wi9G.js → review-verdict-feedback-Zo0r_z4m.js} +1 -1
  202. package/server/{rollup-DBNy1yFB.js → rollup-Bmhn80tB.js} +1 -1
  203. package/server/{rollup-BJE-Vc7H.js → rollup-BrUIKMv_.js} +7 -7
  204. package/server/{scanner-CUGpdp4i.js → scanner-BIGumel_.js} +7 -7
  205. package/server/{sequence-io-B2GmilSI.js → sequence-io-DA0akEQN.js} +5 -5
  206. package/server/{sequencer-agent-D8pW2aU_.js → sequencer-agent-DeflKafB.js} +6 -6
  207. package/server/server.js +576 -552
  208. package/server/{service-CILd-uOt.js → service-V0sUK-OR.js} +64 -64
  209. package/server/{session-fork-DDSDVoIK.js → session-fork-Yx3UcAQf.js} +2 -2
  210. package/server/{settings-CBrei_kx.js → settings-CFEeQRj2.js} +2 -2
  211. package/server/{settings-D2wt4nku.js → settings-CxVate0h.js} +3 -3
  212. package/server/settings-DEhYpW0k.js +2 -0
  213. package/server/{shadow-engineering-Ba1D0QUN.js → shadow-engineering-BRxnVSDk.js} +2 -2
  214. package/server/{shadow-state-BOaq8BrD.js → shadow-state-1aS8FijU.js} +1 -1
  215. package/server/{shadow-state-DTC7AMHc.js → shadow-state-BiMwdyl1.js} +2 -2
  216. package/server/{smart-compaction-CrP90OFE.js → smart-compaction-Bw1K_Sbl.js} +7 -7
  217. package/server/{smart-compaction-Bgp_gwcA.js → smart-compaction-xblMyVpT.js} +1 -1
  218. package/server/{spawn-planning-session-D15KbPOy.js → spawn-planning-session-CzDFSKAQ.js} +1 -1
  219. package/server/{spawn-planning-session-BmJWHSCu.js → spawn-planning-session-DxLxcM7m.js} +15 -15
  220. package/server/{specialist-context-CwKkcXL9.js → specialist-context-BfkTA81h.js} +5 -5
  221. package/server/{specialist-handoff-logger-B_2VsWli.js → specialist-handoff-logger-BiKuLtNm.js} +2 -2
  222. package/server/{specialist-logs-CvDxquV_.js → specialist-logs-CFJjGsLC.js} +3 -3
  223. package/server/{specialists-D07ybnam.js → specialists-B4byf18k.js} +156 -156
  224. package/server/{specialists-BCjcG4uE.js → specialists-BLIreoE7.js} +1 -1
  225. package/server/{specialists-F2uMO4QS.js → specialists-DdvpFNt1.js} +1 -1
  226. package/server/{specialists-BYi0k8CZ.js → specialists-DjHbwQ_p.js} +18 -18
  227. package/server/specs-CVH1kvz3.js +3 -0
  228. package/server/{src-Dp0WHgDZ.js → src-CALBEUMX.js} +3 -3
  229. package/server/{src-BswtmojL.js → src-mK_M_ZIj.js} +3 -3
  230. package/server/{stack-health-Deel1mSW.js → stack-health-BFM8YlHw.js} +1 -1
  231. package/server/{stack-health-BJVh1TCg.js → stack-health-Qd7rPiVe.js} +3 -3
  232. package/server/{state-home-Bgj7i-C7.js → state-home-C2Bicw9N.js} +6 -6
  233. package/server/{summary-fork-EjvOkEPl.js → summary-fork-DezPkJSm.js} +16 -16
  234. package/server/{summary-fork-DedqguZb.js → summary-fork-EWWBvzgE.js} +2 -2
  235. package/server/supervisor/chunk-ruWRV7i3.js +30 -0
  236. package/server/supervisor/paths-3R6b989k.js +224 -0
  237. package/server/supervisor/pty-supervisor.js +391 -0
  238. package/server/supervisor/pty-token-CScQ32Rj.js +43 -0
  239. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/LICENSE +69 -0
  240. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/README.md +67 -0
  241. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/binding.gyp +123 -0
  242. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/.editorconfig +2 -0
  243. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/.drone.yml +17 -0
  244. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/.gitattributes +19 -0
  245. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/LICENSE +21 -0
  246. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/Makefile +166 -0
  247. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/README.md +151 -0
  248. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/RELEASES.md +280 -0
  249. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/VERSION.txt +1 -0
  250. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/configure +167 -0
  251. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/BufferResizeTests.cc +90 -0
  252. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ChangeScreenBuffer.cc +53 -0
  253. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ClearConsole.cc +72 -0
  254. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ConinMode.cc +117 -0
  255. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ConinMode.ps1 +116 -0
  256. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ConoutMode.cc +113 -0
  257. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/DebugClient.py +42 -0
  258. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/DebugServer.py +63 -0
  259. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/DumpLines.py +5 -0
  260. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/EnableExtendedFlags.txt +46 -0
  261. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +528 -0
  262. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +633 -0
  263. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/CP932.txt +630 -0
  264. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/CP936.txt +630 -0
  265. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/CP949.txt +630 -0
  266. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/CP950.txt +630 -0
  267. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +16 -0
  268. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/Results.txt +4 -0
  269. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +144 -0
  270. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/FontSurvey.cc +100 -0
  271. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/FormatChar.h +21 -0
  272. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/FreezePerfTest.cc +62 -0
  273. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/GetCh.cc +20 -0
  274. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/GetConsolePos.cc +41 -0
  275. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/GetFont.cc +261 -0
  276. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/IdentifyConsoleWindow.ps1 +51 -0
  277. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/IsNewConsole.cc +87 -0
  278. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/MouseInputNotes.txt +90 -0
  279. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/MoveConsoleWindow.cc +34 -0
  280. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Notes.txt +219 -0
  281. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/OSVersion.cc +27 -0
  282. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ScreenBufferFreezeInactive.cc +101 -0
  283. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ScreenBufferTest.cc +671 -0
  284. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ScreenBufferTest2.cc +151 -0
  285. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/SelectAllTest.cc +45 -0
  286. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/SetBufferSize.cc +32 -0
  287. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/SetCursorPos.cc +10 -0
  288. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/SetFont.cc +145 -0
  289. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/SetWindowRect.cc +36 -0
  290. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ShowArgv.cc +12 -0
  291. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/ShowConsoleInput.cc +40 -0
  292. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Spew.py +5 -0
  293. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/TestUtil.cc +172 -0
  294. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/UnicodeDoubleWidthTest.cc +102 -0
  295. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/UnicodeWideTest1.cc +246 -0
  296. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/UnicodeWideTest2.cc +130 -0
  297. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/UnixEcho.cc +89 -0
  298. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Utf16Echo.cc +46 -0
  299. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/VeryLargeRead.cc +122 -0
  300. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/VkEscapeTest.cc +56 -0
  301. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win10ResizeWhileFrozen.cc +52 -0
  302. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win10WrapTest1.cc +57 -0
  303. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win10WrapTest2.cc +30 -0
  304. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win32Echo1.cc +26 -0
  305. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win32Echo2.cc +19 -0
  306. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win32Test1.cc +46 -0
  307. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win32Test2.cc +70 -0
  308. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win32Test3.cc +78 -0
  309. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/Win32Write1.cc +44 -0
  310. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/WindowsBugCrashReader.cc +27 -0
  311. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/WriteConsole.cc +106 -0
  312. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/build32.sh +9 -0
  313. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/build64.sh +9 -0
  314. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/color-test.sh +212 -0
  315. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/font-notes.txt +300 -0
  316. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/misc/winbug-15048.cc +201 -0
  317. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/ship/build-pty4j-libpty.bat +36 -0
  318. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/ship/common_ship.py +53 -0
  319. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/ship/make_msvc_package.py +165 -0
  320. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/ship/ship.py +108 -0
  321. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Agent.cc +613 -0
  322. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Agent.h +103 -0
  323. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/AgentCreateDesktop.cc +84 -0
  324. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/AgentCreateDesktop.h +28 -0
  325. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleFont.cc +632 -0
  326. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleFont.h +28 -0
  327. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleInput.cc +852 -0
  328. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleInput.h +109 -0
  329. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleInputReencoding.cc +121 -0
  330. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleInputReencoding.h +36 -0
  331. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleLine.cc +152 -0
  332. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/ConsoleLine.h +41 -0
  333. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Coord.h +87 -0
  334. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/DebugShowInput.cc +239 -0
  335. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/DebugShowInput.h +32 -0
  336. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/DefaultInputMap.cc +422 -0
  337. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/DefaultInputMap.h +28 -0
  338. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/DsrSender.h +30 -0
  339. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/EventLoop.cc +99 -0
  340. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/EventLoop.h +47 -0
  341. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/InputMap.cc +246 -0
  342. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/InputMap.h +114 -0
  343. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/LargeConsoleRead.cc +71 -0
  344. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/LargeConsoleRead.h +68 -0
  345. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/NamedPipe.cc +378 -0
  346. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/NamedPipe.h +125 -0
  347. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Scraper.cc +699 -0
  348. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Scraper.h +103 -0
  349. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/SimplePool.h +75 -0
  350. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/SmallRect.h +143 -0
  351. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Terminal.cc +535 -0
  352. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Terminal.h +69 -0
  353. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/UnicodeEncoding.h +157 -0
  354. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/UnicodeEncodingTest.cc +189 -0
  355. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Win32Console.cc +107 -0
  356. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Win32Console.h +67 -0
  357. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Win32ConsoleBuffer.cc +193 -0
  358. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/Win32ConsoleBuffer.h +99 -0
  359. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/main.cc +114 -0
  360. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/agent/subdir.mk +61 -0
  361. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/configurations.gypi +60 -0
  362. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/debugserver/DebugServer.cc +117 -0
  363. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/debugserver/subdir.mk +41 -0
  364. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/include/winpty.h +242 -0
  365. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/include/winpty_constants.h +131 -0
  366. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/libwinpty/AgentLocation.cc +75 -0
  367. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/libwinpty/AgentLocation.h +28 -0
  368. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/libwinpty/LibWinptyException.h +54 -0
  369. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/libwinpty/WinptyInternal.h +72 -0
  370. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/libwinpty/subdir.mk +46 -0
  371. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/libwinpty/winpty.cc +970 -0
  372. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/AgentMsg.h +38 -0
  373. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/BackgroundDesktop.cc +122 -0
  374. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/BackgroundDesktop.h +73 -0
  375. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/Buffer.cc +103 -0
  376. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/Buffer.h +102 -0
  377. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/DebugClient.cc +187 -0
  378. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/DebugClient.h +38 -0
  379. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/GenRandom.cc +138 -0
  380. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/GenRandom.h +55 -0
  381. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/GetCommitHash.bat +13 -0
  382. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/Mutex.h +54 -0
  383. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/OsModule.h +63 -0
  384. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/OwnedHandle.cc +36 -0
  385. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/OwnedHandle.h +45 -0
  386. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/PrecompiledHeader.h +43 -0
  387. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/StringBuilder.h +227 -0
  388. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/StringBuilderTest.cc +114 -0
  389. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/StringUtil.cc +55 -0
  390. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/StringUtil.h +80 -0
  391. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/TimeMeasurement.h +63 -0
  392. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/UnixCtrlChars.h +45 -0
  393. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/UpdateGenVersion.bat +20 -0
  394. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WindowsSecurity.cc +460 -0
  395. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WindowsSecurity.h +104 -0
  396. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WindowsVersion.cc +252 -0
  397. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WindowsVersion.h +29 -0
  398. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WinptyAssert.cc +55 -0
  399. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WinptyAssert.h +64 -0
  400. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WinptyException.cc +57 -0
  401. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WinptyException.h +43 -0
  402. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WinptyVersion.cc +42 -0
  403. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/WinptyVersion.h +27 -0
  404. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/shared/winpty_snprintf.h +99 -0
  405. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/subdir.mk +5 -0
  406. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/tests/subdir.mk +28 -0
  407. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/tests/trivial_test.cc +158 -0
  408. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/InputHandler.cc +114 -0
  409. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/InputHandler.h +56 -0
  410. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/OutputHandler.cc +80 -0
  411. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/OutputHandler.h +53 -0
  412. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/Util.cc +86 -0
  413. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/Util.h +31 -0
  414. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/WakeupFd.cc +70 -0
  415. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/WakeupFd.h +42 -0
  416. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/main.cc +729 -0
  417. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/unix-adapter/subdir.mk +41 -0
  418. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/src/winpty.gyp +235 -0
  419. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/deps/winpty/vcbuild.bat +83 -0
  420. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/conpty_console_list_agent.js +20 -0
  421. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/conpty_console_list_agent.js.map +1 -0
  422. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/eventEmitter2.js +47 -0
  423. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/eventEmitter2.js.map +1 -0
  424. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/eventEmitter2.test.js +30 -0
  425. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/eventEmitter2.test.js.map +1 -0
  426. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/index.js +52 -0
  427. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/index.js.map +1 -0
  428. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/interfaces.js +7 -0
  429. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/interfaces.js.map +1 -0
  430. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/prebuild-file-path.js +18 -0
  431. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/prebuild-file-path.js.map +1 -0
  432. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/prebuild-loader.js +19 -0
  433. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/prebuild-loader.js.map +1 -0
  434. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/shared/conout.js +11 -0
  435. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/shared/conout.js.map +1 -0
  436. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/terminal.js +190 -0
  437. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/terminal.js.map +1 -0
  438. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/terminal.test.js +139 -0
  439. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/terminal.test.js.map +1 -0
  440. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/testUtils.test.js +28 -0
  441. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/testUtils.test.js.map +1 -0
  442. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/types.js +7 -0
  443. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/types.js.map +1 -0
  444. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/unixTerminal.js +290 -0
  445. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/unixTerminal.js.map +1 -0
  446. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/unixTerminal.test.js +352 -0
  447. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/unixTerminal.test.js.map +1 -0
  448. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/utils.js +17 -0
  449. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/utils.js.map +1 -0
  450. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsConoutConnection.js +125 -0
  451. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsConoutConnection.js.map +1 -0
  452. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsPtyAgent.js +345 -0
  453. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsPtyAgent.js.map +1 -0
  454. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsPtyAgent.test.js +90 -0
  455. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsPtyAgent.test.js.map +1 -0
  456. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsTerminal.js +201 -0
  457. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsTerminal.js.map +1 -0
  458. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsTerminal.test.js +217 -0
  459. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/windowsTerminal.test.js.map +1 -0
  460. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/worker/conoutSocketWorker.js +22 -0
  461. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/lib/worker/conoutSocketWorker.js.map +1 -0
  462. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/package.json +79 -0
  463. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi102.musl.node +0 -0
  464. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi102.node +0 -0
  465. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi108.musl.node +0 -0
  466. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi108.node +0 -0
  467. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi111.musl.node +0 -0
  468. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi111.node +0 -0
  469. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi115.musl.node +0 -0
  470. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi115.node +0 -0
  471. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi120.musl.node +0 -0
  472. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi120.node +0 -0
  473. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi127.musl.node +0 -0
  474. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi127.node +0 -0
  475. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi131.musl.node +0 -0
  476. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi131.node +0 -0
  477. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi137.musl.node +0 -0
  478. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm/node.abi137.node +0 -0
  479. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi102.musl.node +0 -0
  480. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi108.musl.node +0 -0
  481. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi108.node +0 -0
  482. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi111.musl.node +0 -0
  483. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi111.node +0 -0
  484. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi115.musl.node +0 -0
  485. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi115.node +0 -0
  486. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi120.musl.node +0 -0
  487. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi120.node +0 -0
  488. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi127.musl.node +0 -0
  489. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi127.node +0 -0
  490. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi131.musl.node +0 -0
  491. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi131.node +0 -0
  492. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi137.musl.node +0 -0
  493. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-arm64/node.abi137.node +0 -0
  494. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-ia32/node.abi108.node +0 -0
  495. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-ia32/node.abi111.node +0 -0
  496. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-ia32/node.abi115.node +0 -0
  497. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-ia32/node.abi120.node +0 -0
  498. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-ia32/node.abi127.node +0 -0
  499. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-ia32/node.abi131.node +0 -0
  500. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-ia32/node.abi137.node +0 -0
  501. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi102.musl.node +0 -0
  502. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi108.musl.node +0 -0
  503. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi108.node +0 -0
  504. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi111.musl.node +0 -0
  505. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi111.node +0 -0
  506. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi115.musl.node +0 -0
  507. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi115.node +0 -0
  508. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi120.musl.node +0 -0
  509. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi120.node +0 -0
  510. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi127.musl.node +0 -0
  511. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi127.node +0 -0
  512. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi131.musl.node +0 -0
  513. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi131.node +0 -0
  514. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi137.musl.node +0 -0
  515. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/prebuilds/linux-x64/node.abi137.node +0 -0
  516. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/scripts/check-prebuild.js +15 -0
  517. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/scripts/increment-version.js +54 -0
  518. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/scripts/install.js +18 -0
  519. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/scripts/post-install.js +83 -0
  520. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/conpty_console_list_agent.ts +19 -0
  521. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/eventEmitter2.test.ts +30 -0
  522. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/eventEmitter2.ts +48 -0
  523. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/index.ts +53 -0
  524. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/interfaces.ts +130 -0
  525. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/native.d.ts +54 -0
  526. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/prebuild-file-path.ts +21 -0
  527. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/prebuild-loader.ts +17 -0
  528. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/shared/conout.ts +15 -0
  529. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/terminal.test.ts +119 -0
  530. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/terminal.ts +211 -0
  531. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/testUtils.test.ts +23 -0
  532. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/tsconfig.json +22 -0
  533. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/types.ts +15 -0
  534. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/unix/pty.cc +796 -0
  535. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/unix/spawn-helper.cc +23 -0
  536. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/unixTerminal.test.ts +368 -0
  537. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/unixTerminal.ts +318 -0
  538. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/utils.ts +9 -0
  539. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/win/conpty.cc +583 -0
  540. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/win/conpty.h +41 -0
  541. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/win/conpty_console_list.cc +44 -0
  542. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/win/path_util.cc +95 -0
  543. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/win/path_util.h +26 -0
  544. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/win/winpty.cc +333 -0
  545. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/windowsConoutConnection.ts +82 -0
  546. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/windowsPtyAgent.test.ts +94 -0
  547. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/windowsPtyAgent.ts +342 -0
  548. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/windowsTerminal.test.ts +227 -0
  549. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/windowsTerminal.ts +208 -0
  550. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/src/worker/conoutSocketWorker.ts +22 -0
  551. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/third_party/conpty/1.22.250204002/win10-arm64/OpenConsole.exe +0 -0
  552. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/third_party/conpty/1.22.250204002/win10-arm64/conpty.dll +0 -0
  553. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/third_party/conpty/1.22.250204002/win10-x64/OpenConsole.exe +0 -0
  554. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/third_party/conpty/1.22.250204002/win10-x64/conpty.dll +0 -0
  555. package/server/supervisor/vendor/@homebridge/node-pty-prebuilt-multiarch/typings/node-pty.d.ts +230 -0
  556. package/server/{supervisor-0oXvLwyC.js → supervisor-D5GC5jUM.js} +8 -8
  557. package/server/supervisor-DQMK2e3I.js +2 -0
  558. package/server/{swarm-readiness-OBgamRql.js → swarm-readiness-Cf9mommA.js} +3 -3
  559. package/server/system-prerequisites-BsI9hxh9.js +166 -0
  560. package/server/{teardown-workspace-5LCVbjfq.js → teardown-workspace-CWz1pbEK.js} +12 -12
  561. package/server/{test-agent-queue-qfsq6uaC.js → test-agent-queue-TiVXe3ZT.js} +6 -6
  562. package/server/{test-verdict-D3Il7cBK.js → test-verdict-Bm4uv_AA.js} +2 -2
  563. package/server/{test-verdict-BkubHtti.js → test-verdict-CCDd25uN.js} +1 -1
  564. package/server/{tldr-daemon-CJqGsDFh.js → tldr-daemon-Big5IZ_M.js} +1 -1
  565. package/server/{tldr-daemon-CJW_P4On.js → tldr-daemon-C_1frSDj.js} +2 -2
  566. package/server/{tmux-ePNhMIMU.js → tmux-D57f-XNv.js} +2 -2
  567. package/server/{tmux-CeDD14p1.js → tmux-DClqWwb8.js} +1 -1
  568. package/server/{tracker-config-Drt_tx4D.js → tracker-config-B_Ubts1Z.js} +1 -1
  569. package/server/{tracker-config-C3hiPVAM.js → tracker-config-BmdJU_w6.js} +2 -2
  570. package/server/{tracker-utils-D6B8scEw.js → tracker-utils-Bg-Sevcv.js} +1 -1
  571. package/server/{tracker-utils-bpWs7Xyx.js → tracker-utils-CWFt6jjV.js} +2 -2
  572. package/server/{tunnel-3Ve8BS4H.js → tunnel-UBf2vyAL.js} +2 -2
  573. package/server/{tunnel-AporWhoi.js → tunnel-hOBNQbmF.js} +1 -1
  574. package/server/{uat-train-C3hWXtip.js → uat-train-DGkIkLxu.js} +1 -1
  575. package/server/{uat-train-CtNGgXxj.js → uat-train-qNanv5hN.js} +54 -54
  576. package/server/{validation-CbqP_dze.js → validation-B0QaLIHP.js} +1 -1
  577. package/server/{validation-BmUB-26g.js → validation-C4wegCvH.js} +3 -3
  578. package/server/{verification-runner-BPAhPWR7.js → verification-runner-CntudBes.js} +11 -11
  579. package/server/{verification-runner-DuZRHjPU.js → verification-runner-DdleMNLq.js} +1 -1
  580. package/server/{work-agent-prompt-DCdHsm-V.js → work-agent-prompt-CG5jFV9A.js} +11 -11
  581. package/server/{workflows-H-COJ84X.js → workflows-BK2xs_a8.js} +13 -13
  582. package/server/workflows-pKw9yRSV.js +2 -0
  583. package/server/{workspace-DYv9kBg6.js → workspace-C9lC5o3E.js} +1 -1
  584. package/server/{workspace-4ZufqeMe.js → workspace-CLrSIRCx.js} +3 -3
  585. package/server/{workspace-manager-CEWK-OXd.js → workspace-manager-BJhW2sky.js} +10 -10
  586. package/server/{workspace-manager-B3PqQQSM.js → workspace-manager-Cb2a7bg9.js} +1 -1
  587. package/server/{workspace-metadata-C0I-nIDL.js → workspace-metadata-CTRnr323.js} +1 -1
  588. package/server/{workspace-metadata-1eu1RvAT.js → workspace-metadata-QQmo_Z0l.js} +2 -2
  589. package/server/{workspaces-CRU9_vRn.js → workspaces-Ca4zZs12.js} +223 -223
  590. package/server/cli-CJDWXE_Y.js +0 -3
  591. package/server/deacon-swarm-D1iAUX-P.js +0 -2
  592. package/server/forge-BfP7OJwK.js +0 -2
  593. package/server/inspect-agent-vm88mLYr.js +0 -2
  594. package/server/merge-ops-QdBiQ8XB.js +0 -2
  595. package/server/public/assets/index-DdqPXf3T.js +0 -796
  596. package/server/public/assets/mermaid-GHXKKRXX-BTHbMU88.js +0 -1
  597. package/server/rally-DffLLIdl.js +0 -3
  598. package/server/resume-DnIsmIgC.js +0 -3
  599. package/server/review-agent-DgySDb-G.js +0 -3
  600. package/server/settings-vLoKyghx.js +0 -2
  601. package/server/specs-DeS98l_p.js +0 -3
  602. package/server/supervisor-D1-XwmZ7.js +0 -2
  603. package/server/workflows-Cz8OtiB4.js +0 -2
@@ -1,48 +1,48 @@
1
1
  import { i as __require, t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as extractPrefixSync, Br as getOverdeckHome, Dn as getProjectSync, Gn as resolveProjectFromIssueSync, Gr as sessionFilePath, Ln as listProjectsSync, Lr as encodeClaudeProjectDir, Mt as readIssueRecordForWorkspaceSync, Nn as init_projects, Nt as readIssueRecordSync, Or as OVERDECK_HOME, Ot as init_record, St as ensureIssueRecordSync, Vr as init_paths, an as queueBeadsAutoCommit, cn as getMainDivergence, cr as FsError, dn as isStatePlanePath, er as init_issue_id, f as loadConfigSync, hr as TmuxError, ln as init_state_plane, rn as init_auto_commit, s as init_load, sn as STATE_PLANE_PATHS, vr as init_errors, wn as getIssuePrefix, yr as AGENTS_DIR, zt as writeIssueRecordSync } from "./config-yaml-DPAieL_G.js";
2
+ import { $n as extractPrefixSync, Br as getOverdeckHome, Dn as getProjectSync, Gn as resolveProjectFromIssueSync, Gr as sessionFilePath, Ln as listProjectsSync, Lr as encodeClaudeProjectDir, Mt as readIssueRecordForWorkspaceSync, Nn as init_projects, Nt as readIssueRecordSync, Or as OVERDECK_HOME, Ot as init_record, St as ensureIssueRecordSync, Vr as init_paths, an as queueBeadsAutoCommit, cn as getMainDivergence, cr as FsError, dn as isStatePlanePath, er as init_issue_id, f as loadConfigSync, hr as TmuxError, ln as init_state_plane, rn as init_auto_commit, s as init_load, sn as STATE_PLANE_PATHS, vr as init_errors, wn as getIssuePrefix, yr as AGENTS_DIR, zt as writeIssueRecordSync } from "./config-yaml-ClpGgrf6.js";
3
3
  import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-pcbf-e30.js";
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
- import { a as init_event_store, i as initEventStore } from "./event-store-DTJXZjCl.js";
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-D57f-XNv.js";
5
+ import { a as init_event_store, i as initEventStore } from "./event-store-DCMqyI07.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";
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";
10
- import { t as init_behavior } from "./behavior-By-2Wipv.js";
11
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-C3hiPVAM.js";
12
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-bpWs7Xyx.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-gPndPUBc.js";
8
+ import { d as init_agents, g as isTerminalIssueStage, h as getIssueStageSync, p as listAllAgentsSync } from "./briefing-freshness-B2FdLwIv.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, _r as init_runtime_state, _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 getAgentRuntimeStateSync, hr as getAgentRuntimeState, ht as DEFAULT_CLOISTER_CONFIG, it as getConcurrencyLimits, j as messageAgent, k as isContextOverflowTail, lt as tryReserveAdvancingSlot, mt as setCachedMemoryVerdict, nr as logDeaconEventSync, nt as describeRunningAgents, ot as releaseAdvancingSlot, pt as init_memory_verdict_cache, qn as saveAgentState, t as init_agents$1, tr as logAgentLifecycleSync, vr as saveAgentRuntimeState, vt as loadCloisterConfig, wt as deliverInitialPromptWithRetry, yt as loadCloisterConfigSync } from "./agents-B5LfpLPv.js";
10
+ import { t as init_behavior } from "./behavior-CPf0pbOt.js";
11
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-BmdJU_w6.js";
12
+ import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-CWFt6jjV.js";
13
13
  import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-BvAgFK8n.js";
14
- import { c as init_review_status_sync, l as markWorkspaceStuck } from "./review-status-sync-BWHnrq-k.js";
15
- import { f as init_config$1, m as loadConfigSync$1, p as loadConfig$1 } from "./config-oWoKf5jO.js";
16
- import { a as init_launcher_generator, n as init_state_home, t as findRecreatedLegacyStatePaths } from "./state-home-Bgj7i-C7.js";
17
- import { i as createCodexRuntimeSync, l as init_codex } from "./codex-DcInrhok.js";
18
- import { T as stampBootReconciliation, f as isFlywheelGloballyPaused, h as setBootReconciliationDecision, i as getFlywheelActiveRunId, l as isDeaconGloballyPaused, r as getBootReconciliationState, s as init_control_settings } from "./control-settings-BMqUkXmR.js";
19
- import { c as init_docker_stats, s as DockerStatsCollector } from "./stack-health-BJVh1TCg.js";
20
- import { a as queryBeadsForIssue, o as queryReadyBeadsByIssueLabels, r as init_beads_query, s as resolveBeadsQueryRoot } from "./beads-query-BrVNWoSL.js";
14
+ import { c as init_review_status_sync, l as markWorkspaceStuck } from "./review-status-sync-D3A9KX95.js";
15
+ import { f as init_config$1, m as loadConfigSync$1, p as loadConfig$1 } from "./config-8sjaU6jZ.js";
16
+ import { a as init_launcher_generator, n as init_state_home, t as findRecreatedLegacyStatePaths } from "./state-home-C2Bicw9N.js";
17
+ import { i as createCodexRuntimeSync, l as init_codex } from "./codex-B4KEpX5V.js";
18
+ import { T as stampBootReconciliation, f as isFlywheelGloballyPaused, h as setBootReconciliationDecision, i as getFlywheelActiveRunId, l as isDeaconGloballyPaused, r as getBootReconciliationState, s as init_control_settings } from "./control-settings-D1B3u6HP.js";
19
+ import { c as init_docker_stats, s as DockerStatsCollector } from "./stack-health-Qd7rPiVe.js";
20
+ import { a as queryBeadsForIssue, o as queryReadyBeadsByIssueLabels, r as init_beads_query, s as resolveBeadsQueryRoot } from "./beads-query-e6oku4P5.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";
23
- import { t as recordDeaconNudge } from "./deacon-nudge-log-CJGA6aSQ.js";
24
- import { n as init_review_monitor, t as REVIEW_SUB_ROLES } from "./review-monitor-BKG2ubt5.js";
25
- import { a as inferBranchFromWorkspace, i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-zTvWWHG_.js";
26
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BO84g03t.js";
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";
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-DjHbwQ_p.js";
23
+ import { t as recordDeaconNudge } from "./deacon-nudge-log-B-naf89q.js";
24
+ import { n as init_review_monitor, t as REVIEW_SUB_ROLES } from "./review-monitor-DHD9m_kh.js";
25
+ import { a as inferBranchFromWorkspace, i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-oX1pj6nY.js";
26
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-Da3DeomA.js";
27
+ import { n as shouldSkipDispatchAsMerged, t as init_merge_verification } from "./merge-verification-BGiuiXAK.js";
28
+ import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-4WZ5ZdbC.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-BstYoz8Q.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-BsUfBSjM.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
- 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";
36
- import { n as reconcileIdleWorkspaceStacks } from "./idle-stack-reaper-DBKQ9SKu.js";
37
- import { i as readTestVerdictArtifact, n as decideUnsignaledTestAction, r as init_test_verdict } from "./test-verdict-D3Il7cBK.js";
34
+ import { n as pruneTerminalStoppedAgents } from "./agent-gc-CUb52n7s.js";
35
+ import { a as spawnWorkAgentThroughAgentsEndpoint, i as reconcileOrphanProposedSpecs, o as triggerRebuildAndStart } from "./orphan-proposed-reconciler-BSGCNJ6X.js";
36
+ import { n as reconcileIdleWorkspaceStacks } from "./idle-stack-reaper-DGy7tvC9.js";
37
+ import { i as readTestVerdictArtifact, n as decideUnsignaledTestAction, r as init_test_verdict } from "./test-verdict-Bm4uv_AA.js";
38
38
  import { createRequire } from "node:module";
39
+ import { join } from "node:path";
39
40
  import { Effect } from "effect";
40
41
  import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, unlinkSync, writeFileSync } from "fs";
41
- import { dirname, join } from "path";
42
+ import { dirname as dirname$1, join as join$1 } from "path";
42
43
  import { cpus, homedir, loadavg } from "os";
43
44
  import { cpus as cpus$1, freemem as freemem$1, homedir as homedir$1, loadavg as loadavg$1, platform as platform$1, totalmem as totalmem$1 } from "node:os";
44
45
  import { closeSync as closeSync$1, existsSync as existsSync$1, openSync as openSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, unlinkSync as unlinkSync$1, writeFileSync as writeFileSync$1 } from "node:fs";
45
- import { join as join$1 } from "node:path";
46
46
  import { access, readFile } from "node:fs/promises";
47
47
  import { readFile as readFile$1, readdir as readdir$1, stat as stat$2, writeFile as writeFile$1 } from "fs/promises";
48
48
  import { exec, execFile, spawn } from "node:child_process";
@@ -358,7 +358,7 @@ function isOwnActiveSpecialist(role) {
358
358
  return role === "review" || role === "test" || role === "ship";
359
359
  }
360
360
  function getClaudeProjectDir(workspacePath) {
361
- return join(homedir(), ".claude", "projects", encodeClaudeProjectDir(workspacePath));
361
+ return join$1(homedir(), ".claude", "projects", encodeClaudeProjectDir(workspacePath));
362
362
  }
363
363
  async function getActiveSessionPath(projectDir) {
364
364
  if (!existsSync(projectDir)) return null;
@@ -369,8 +369,8 @@ async function getActiveSessionPath(projectDir) {
369
369
  try {
370
370
  return {
371
371
  name: f,
372
- path: join(projectDir, f),
373
- mtime: (await stat$2(join(projectDir, f))).mtime.getTime()
372
+ path: join$1(projectDir, f),
373
+ mtime: (await stat$2(join$1(projectDir, f))).mtime.getTime()
374
374
  };
375
375
  } catch {
376
376
  return null;
@@ -390,14 +390,14 @@ function getProjectPathByPrefix(issuePrefix) {
390
390
  if (config) {
391
391
  for (const { owner, repo, prefix } of config.repos) if ((prefix || repo.toUpperCase().replace(/-CLI$/, "").replace(/-/g, "")).toUpperCase() === issuePrefix.toUpperCase()) {
392
392
  const possiblePaths = [
393
- join(homedir(), "Projects", repo),
394
- join(homedir(), "Projects", repo.replace(/-cli$/, "")),
395
- join(homedir(), "Projects", owner, repo)
393
+ join$1(homedir(), "Projects", repo),
394
+ join$1(homedir(), "Projects", repo.replace(/-cli$/, "")),
395
+ join$1(homedir(), "Projects", owner, repo)
396
396
  ];
397
397
  for (const path of possiblePaths) if (existsSync(path)) return path;
398
398
  }
399
399
  }
400
- return join(homedir(), "Projects");
400
+ return join$1(homedir(), "Projects");
401
401
  }
402
402
  async function getAgentWorkspacePromise(agentId) {
403
403
  const workspace = getAgentStateSync(agentId)?.workspace;
@@ -412,7 +412,7 @@ async function getAgentWorkspacePromise(agentId) {
412
412
  if (!prefix) return null;
413
413
  try {
414
414
  const projectPath = getProjectPathByPrefix(prefix);
415
- const workspacePath = join(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
415
+ const workspacePath = join$1(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
416
416
  if (existsSync(workspacePath)) return workspacePath;
417
417
  return projectPath;
418
418
  } catch {
@@ -445,7 +445,7 @@ async function countPendingAskUserQuestionsForAgentPromise(agentId) {
445
445
  }
446
446
  let total = 0;
447
447
  for (const f of files) try {
448
- const scan = await scanPendingInputsPromise(join(projectDir, f));
448
+ const scan = await scanPendingInputsPromise(join$1(projectDir, f));
449
449
  total += scan.askUserQuestions.length;
450
450
  } catch {}
451
451
  return total;
@@ -22287,9 +22287,9 @@ new ((/* @__PURE__ */ __commonJSMin(((exports, module) => {
22287
22287
  * isSmeeProcessRunning();
22288
22288
  */
22289
22289
  init_errors();
22290
- const SMEE_URL_PATH = join$1(homedir$1(), ".overdeck", "github-app", "smee-url");
22291
- const SMEE_PID_PATH = join$1(homedir$1(), ".overdeck", "github-app", "smee.pid");
22292
- const SMEE_LOG_PATH = join$1(homedir$1(), ".overdeck", "logs", "smee.log");
22290
+ const SMEE_URL_PATH = join(homedir$1(), ".overdeck", "github-app", "smee-url");
22291
+ const SMEE_PID_PATH = join(homedir$1(), ".overdeck", "github-app", "smee.pid");
22292
+ const SMEE_LOG_PATH = join(homedir$1(), ".overdeck", "logs", "smee.log");
22293
22293
  const require$1 = createRequire(import.meta.url);
22294
22294
  function getSmeeUrl() {
22295
22295
  try {
@@ -22464,7 +22464,7 @@ const DEFAULT_RESOURCE_CONFIG = {
22464
22464
  };
22465
22465
  const KB = 1024;
22466
22466
  const GIB$1 = 1024 ** 3;
22467
- const GLOBAL_CONFIG_PATH = join$1(homedir$1(), ".overdeck", "config.yaml");
22467
+ const GLOBAL_CONFIG_PATH = join(homedir$1(), ".overdeck", "config.yaml");
22468
22468
  let dockerStatsCollector$1 = null;
22469
22469
  let previousCpuSample = null;
22470
22470
  let previousCpuSampleAt = 0;
@@ -23124,7 +23124,7 @@ init_agents$1();
23124
23124
  init_tmux();
23125
23125
  init_jsonl_parser();
23126
23126
  init_errors();
23127
- const CLAUDE_PROJECTS_DIR = join(homedir(), ".claude", "projects");
23127
+ const CLAUDE_PROJECTS_DIR = join$1(homedir(), ".claude", "projects");
23128
23128
  /**
23129
23129
  * Claude Code Runtime implementation
23130
23130
  */
@@ -23143,7 +23143,7 @@ var ClaudeCodeRuntimeSync = class {
23143
23143
  if (!existsSync(CLAUDE_PROJECTS_DIR)) return null;
23144
23144
  const projectDirs = getProjectDirsSync();
23145
23145
  for (const projectDir of projectDirs) {
23146
- const indexPath = join(projectDir, "sessions-index.json");
23146
+ const indexPath = join$1(projectDir, "sessions-index.json");
23147
23147
  if (existsSync(indexPath)) try {
23148
23148
  if (readFileSync(indexPath, "utf-8").includes(workspace)) return projectDir;
23149
23149
  } catch {}
@@ -23154,7 +23154,7 @@ var ClaudeCodeRuntimeSync = class {
23154
23154
  * Get the active session ID for an agent from the sessions index
23155
23155
  */
23156
23156
  getActiveSessionId(projectDir) {
23157
- const indexPath = join(projectDir, "sessions-index.json");
23157
+ const indexPath = join$1(projectDir, "sessions-index.json");
23158
23158
  if (!existsSync(indexPath)) return null;
23159
23159
  try {
23160
23160
  const indexContent = readFileSync(indexPath, "utf-8");
@@ -23186,7 +23186,7 @@ var ClaudeCodeRuntimeSync = class {
23186
23186
  if (!projectDir) return null;
23187
23187
  const sessionId = this.getActiveSessionId(projectDir);
23188
23188
  if (sessionId) {
23189
- const sessionPath = join(projectDir, `${sessionId}.jsonl`);
23189
+ const sessionPath = join$1(projectDir, `${sessionId}.jsonl`);
23190
23190
  if (existsSync(sessionPath)) return sessionPath;
23191
23191
  }
23192
23192
  return this.getMostRecentJSONL(projectDir);
@@ -23209,7 +23209,7 @@ var ClaudeCodeRuntimeSync = class {
23209
23209
  * Read active heartbeat file if it exists
23210
23210
  */
23211
23211
  getActiveHeartbeat(agentId) {
23212
- const heartbeatPath = join(homedir(), ".overdeck", "heartbeats", `${agentId}.json`);
23212
+ const heartbeatPath = join$1(homedir(), ".overdeck", "heartbeats", `${agentId}.json`);
23213
23213
  if (!existsSync(heartbeatPath)) return null;
23214
23214
  try {
23215
23215
  const content = readFileSync(heartbeatPath, "utf-8");
@@ -23298,9 +23298,9 @@ var ClaudeCodeRuntimeSync = class {
23298
23298
  async sendMessage(agentId, message) {
23299
23299
  if (!sessionExistsSync(agentId)) throw new Error(`Agent ${agentId} is not running`);
23300
23300
  await Effect.runPromise(sendKeys(agentId, message));
23301
- const mailDir = join(getAgentDir(agentId), "mail");
23301
+ const mailDir = join$1(getAgentDir(agentId), "mail");
23302
23302
  mkdirSync(mailDir, { recursive: true });
23303
- writeFileSync(join(mailDir, `${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}.md`), `# Message\n\n${message}\n`);
23303
+ writeFileSync(join$1(mailDir, `${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}.md`), `# Message\n\n${message}\n`);
23304
23304
  }
23305
23305
  /**
23306
23306
  * Kill an agent
@@ -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-C4kZ8a2r.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);
@@ -23689,7 +23689,7 @@ async function maybeProactivelyCompactContext(sessionName, now) {
23689
23689
  if (!sessionName.startsWith("agent-")) return null;
23690
23690
  let lastAttempt = contextProactiveCompactState.get(sessionName)?.lastAttempt ?? 0;
23691
23691
  if (!lastAttempt) try {
23692
- const stamp = await readFile$1(join(getAgentDir(sessionName), PROACTIVE_COMPACT_STAMP_FILE), "utf-8");
23692
+ const stamp = await readFile$1(join$1(getAgentDir(sessionName), PROACTIVE_COMPACT_STAMP_FILE), "utf-8");
23693
23693
  const parsed = Date.parse(stamp.trim());
23694
23694
  if (!Number.isNaN(parsed)) lastAttempt = parsed;
23695
23695
  } catch {}
@@ -23701,7 +23701,7 @@ async function maybeProactivelyCompactContext(sessionName, now) {
23701
23701
  if (!agentState?.workspace || !sessionId || !agentState.model) return null;
23702
23702
  let usage = null;
23703
23703
  try {
23704
- const { computeContextUsage } = await import("./conversation-service-WKl-sw58.js");
23704
+ const { computeContextUsage } = await import("./conversation-service-CkL-6MuG.js");
23705
23705
  usage = await computeContextUsage(sessionFilePath(agentState.workspace, sessionId), agentState.model);
23706
23706
  } catch {
23707
23707
  return null;
@@ -23710,7 +23710,7 @@ async function maybeProactivelyCompactContext(sessionName, now) {
23710
23710
  await Effect.runPromise(sendKeys(sessionName, "/compact"));
23711
23711
  contextProactiveCompactState.set(sessionName, { lastAttempt: now });
23712
23712
  try {
23713
- await writeFile$1(join(getAgentDir(sessionName), PROACTIVE_COMPACT_STAMP_FILE), new Date(now).toISOString(), "utf-8");
23713
+ await writeFile$1(join$1(getAgentDir(sessionName), PROACTIVE_COMPACT_STAMP_FILE), new Date(now).toISOString(), "utf-8");
23714
23714
  } catch {}
23715
23715
  emitActivityEntrySync({
23716
23716
  source: "cloister",
@@ -23798,13 +23798,13 @@ async function checkApiErrorAgents() {
23798
23798
  const st = getAgentStateSync(sessionName);
23799
23799
  const sid = st?.sessionId ?? runtimeState?.claudeSessionId;
23800
23800
  if (st?.workspace && sid && st.model) {
23801
- const { computeContextUsage } = await import("./conversation-service-WKl-sw58.js");
23801
+ const { computeContextUsage } = await import("./conversation-service-CkL-6MuG.js");
23802
23802
  const usage = await computeContextUsage(sessionFilePath(st.workspace, sid), st.model);
23803
23803
  if (usage && usage.percentUsed < 85) recoveredPct = usage.percentUsed;
23804
23804
  }
23805
23805
  } catch {}
23806
23806
  if (recoveredPct !== null) {
23807
- const { clearWorkspaceStuck } = await import("./review-status-sync-BxHBVH8s.js");
23807
+ const { clearWorkspaceStuck } = await import("./review-status-sync-B_GrEke8.js");
23808
23808
  clearWorkspaceStuck(issueId);
23809
23809
  stuckOverflowNativeRecoveryState.delete(sessionName);
23810
23810
  actions.push(`Context overflow recovery: cleared stuck flag for ${sessionName} (context back to ${Math.round(recoveredPct)}%)`);
@@ -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-C4kZ8a2r.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-C4kZ8a2r.js");
23872
23872
  const resumeResult = await resumeAgent(sessionName, void 0, { compact: true });
23873
23873
  contextOverflowRecoveryState.set(sessionName, {
23874
23874
  lastAttempt: now,
@@ -24233,7 +24233,7 @@ function reviewConvoyLiveness(issueId) {
24233
24233
  */
24234
24234
  async function recoverUnhealthyTestStack(issueId, workspacePath) {
24235
24235
  const key = issueId.toUpperCase();
24236
- const { getWorkspaceStackHealth } = await import("./stack-health-Deel1mSW.js");
24236
+ const { getWorkspaceStackHealth } = await import("./stack-health-BFM8YlHw.js");
24237
24237
  const health = await Effect.runPromise(getWorkspaceStackHealth(issueId, { workspacePath }));
24238
24238
  if (health.healthy) {
24239
24239
  testStackRebuildState.delete(key);
@@ -24265,7 +24265,7 @@ async function recoverUnhealthyTestStack(issueId, workspacePath) {
24265
24265
  record.attempts += 1;
24266
24266
  testStackRebuildState.set(key, record);
24267
24267
  console.log(`[deacon] Test stack for ${key} unhealthy (${health.reasons.join("; ")}) — rebuilding (attempt ${record.attempts}/${TEST_STACK_REBUILD_MAX_ATTEMPTS})`);
24268
- const { rebuildWorkspaceStack } = await import("./rebuild-stack-ByFCMqTK.js");
24268
+ const { rebuildWorkspaceStack } = await import("./rebuild-stack-CXSgAGPR.js");
24269
24269
  const result = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[deacon] ${key} stack rebuild: ${m}`) }));
24270
24270
  if (!result.success) {
24271
24271
  console.warn(`[deacon] Test stack rebuild failed for ${key}: ${result.error}`);
@@ -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-uwVftH98.js");
24397
24397
  const dispatchResult = await Effect.runPromise(spawnReviewRoleForIssue({
24398
24398
  issueId,
24399
24399
  workspace,
@@ -24466,7 +24466,7 @@ async function reconcileReviewStatusOrphan(issueId, rawStatus) {
24466
24466
  try {
24467
24467
  const project = resolveProjectFromIssueSync(issueId);
24468
24468
  if (project) {
24469
- const workspacePath = join(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
24469
+ const workspacePath = join$1(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
24470
24470
  if (existsSync(workspacePath)) {
24471
24471
  const { stdout } = await execAsync$5("git rev-parse HEAD", { cwd: workspacePath });
24472
24472
  reviewUpdate["reviewedAtCommit"] = stdout.trim();
@@ -24516,14 +24516,14 @@ async function reconcileReviewStatusOrphan(issueId, rawStatus) {
24516
24516
  return actions;
24517
24517
  }
24518
24518
  const agentIdForCheck = `agent-${issueId.toLowerCase()}`;
24519
- if (!existsSync(join(AGENTS_DIR, agentIdForCheck, "completed.processed"))) return actions;
24519
+ if (!existsSync(join$1(AGENTS_DIR, agentIdForCheck, "completed.processed"))) return actions;
24520
24520
  const agentState = getAgentStateSync(agentIdForCheck);
24521
24521
  const resolved = resolveProjectFromIssueSync(issueId);
24522
24522
  const issueLower = issueId.toLowerCase();
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-uwVftH98.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-C4kZ8a2r.js");
24552
+ const { buildTestRolePrompt } = await import("./test-agent-queue-TiVXe3ZT.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-uwVftH98.js");
24691
24691
  try {
24692
24692
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
24693
24693
  issueId,
@@ -24727,8 +24727,8 @@ async function checkMissingReviewStatuses() {
24727
24727
  if (!agent.id.startsWith("agent-")) continue;
24728
24728
  const issueId = agent.id.replace("agent-", "").toUpperCase();
24729
24729
  if (statuses[issueId]) continue;
24730
- const completedFile = join(AGENTS_DIR, agent.id, "completed");
24731
- const processedFile = join(AGENTS_DIR, agent.id, "completed.processed");
24730
+ const completedFile = join$1(AGENTS_DIR, agent.id, "completed");
24731
+ const processedFile = join$1(AGENTS_DIR, agent.id, "completed.processed");
24732
24732
  if (!existsSync(completedFile) && !existsSync(processedFile)) continue;
24733
24733
  const rowCreated = await handleWorkCompleted(issueId);
24734
24734
  actions.push(...rowCreated);
@@ -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-uwVftH98.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-JhQ3qlDS.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-C4kZ8a2r.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;
@@ -24876,7 +24876,7 @@ function isSynthesisForActiveReviewRun(dirPath, status, synthesisMtimeMs) {
24876
24876
  const spawnedAtMs = Date.parse(status.reviewSpawnedAt);
24877
24877
  if (!Number.isFinite(spawnedAtMs)) return true;
24878
24878
  if (synthesisMtimeMs < spawnedAtMs) return false;
24879
- const contextPath = join(dirPath, "context.json");
24879
+ const contextPath = join$1(dirPath, "context.json");
24880
24880
  if (!existsSync(contextPath)) return false;
24881
24881
  let context;
24882
24882
  try {
@@ -24903,14 +24903,14 @@ async function checkCompletedButUnsignaledReviews() {
24903
24903
  if (!resolved) continue;
24904
24904
  const wsPath = findWorkspacePath(resolved.projectPath, issueId.toLowerCase());
24905
24905
  if (!wsPath) continue;
24906
- const reviewBaseDir = join(wsPath, ".pan", "review");
24906
+ const reviewBaseDir = join$1(wsPath, ".pan", "review");
24907
24907
  if (!existsSync(reviewBaseDir)) continue;
24908
24908
  let latestDir = null;
24909
24909
  let latestMtime = 0;
24910
24910
  for (const entry of readdirSync(reviewBaseDir)) {
24911
24911
  if (!entry.startsWith(`agent-${issueId.toLowerCase()}-review`)) continue;
24912
- const dirPath = join(reviewBaseDir, entry);
24913
- const synthPath = join(dirPath, "synthesis.md");
24912
+ const dirPath = join$1(reviewBaseDir, entry);
24913
+ const synthPath = join$1(dirPath, "synthesis.md");
24914
24914
  if (!existsSync(synthPath)) continue;
24915
24915
  const mtime = statSync(synthPath).mtimeMs;
24916
24916
  if (!isSynthesisForActiveReviewRun(dirPath, status, mtime)) continue;
@@ -24927,8 +24927,8 @@ async function checkCompletedButUnsignaledReviews() {
24927
24927
  const sessionAlive = sessionExistsSync(reviewSession);
24928
24928
  const paneDead = sessionAlive ? await Effect.runPromise(isPaneDead(reviewSession)).catch(() => true) : true;
24929
24929
  const activeReviewState = sessionAlive && !paneDead ? getAgentStateSync(reviewSession) : null;
24930
- if (activeReviewState?.reviewRunId && latestDir !== join(reviewBaseDir, activeReviewState.reviewRunId)) continue;
24931
- const synthesisPath = join(latestDir, "synthesis.md");
24930
+ if (activeReviewState?.reviewRunId && latestDir !== join$1(reviewBaseDir, activeReviewState.reviewRunId)) continue;
24931
+ const synthesisPath = join$1(latestDir, "synthesis.md");
24932
24932
  let verdict = null;
24933
24933
  let topBlocker = "";
24934
24934
  try {
@@ -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-C4kZ8a2r.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,8 +25079,8 @@ async function respawnIdleReviewer(state, agentId) {
25079
25079
  return false;
25080
25080
  }
25081
25081
  try {
25082
- const { spawnReviewSubRoleForIssue } = await import("./review-agent-DgySDb-G.js");
25083
- const contextManifestPath = join(dirname(outputPath), "context.json");
25082
+ const { spawnReviewSubRoleForIssue } = await import("./review-agent-uwVftH98.js");
25083
+ const contextManifestPath = join$1(dirname$1(outputPath), "context.json");
25084
25084
  const result = await Effect.runPromise(spawnReviewSubRoleForIssue({
25085
25085
  issueId: state.issueId,
25086
25086
  workspace: state.workspace,
@@ -25116,14 +25116,14 @@ async function nudgeSynthesisForCompleteReviewerReports(states) {
25116
25116
  for (const state of synthesisStates) {
25117
25117
  const status = getReviewStatusSync(state.issueId);
25118
25118
  if (!status || status.reviewStatus !== "reviewing") continue;
25119
- const reviewDir = join(state.workspace, ".pan", "review", state.reviewRunId);
25120
- if (existsSync(join(reviewDir, "synthesis.md"))) continue;
25119
+ const reviewDir = join$1(state.workspace, ".pan", "review", state.reviewRunId);
25120
+ if (existsSync(join$1(reviewDir, "synthesis.md"))) continue;
25121
25121
  const startedMs = Date.parse(state.startedAt);
25122
25122
  const readyLines = [];
25123
25123
  const reports = [];
25124
25124
  let allReportsPresent = true;
25125
25125
  for (const subRole of REVIEW_SUB_ROLES) {
25126
- const outputPath = join(reviewDir, `${subRole}.md`);
25126
+ const outputPath = join$1(reviewDir, `${subRole}.md`);
25127
25127
  if (!existsSync(outputPath)) {
25128
25128
  allReportsPresent = false;
25129
25129
  break;
@@ -25162,7 +25162,7 @@ async function nudgeSynthesisForCompleteReviewerReports(states) {
25162
25162
  reviewDir,
25163
25163
  reports
25164
25164
  });
25165
- writeFileSync(join(reviewDir, "synthesis.md"), synthesis.body);
25165
+ writeFileSync(join$1(reviewDir, "synthesis.md"), synthesis.body);
25166
25166
  let fallbackHead;
25167
25167
  try {
25168
25168
  const { execFile } = await import("node:child_process");
@@ -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-C4kZ8a2r.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`;
@@ -25239,7 +25239,7 @@ async function monitorReviewConvoySignals() {
25239
25239
  if (!state.reviewSubRole || !state.reviewSynthesisAgentId) continue;
25240
25240
  if (state.reviewMonitorSignaled) continue;
25241
25241
  const startedMs = Date.parse(state.startedAt);
25242
- const signalMarker = join(AGENTS_DIR, agentId, "reviewer-signaled");
25242
+ const signalMarker = join$1(AGENTS_DIR, agentId, "reviewer-signaled");
25243
25243
  if (existsSync(signalMarker)) try {
25244
25244
  if (Number.isFinite(startedMs) && statSync(signalMarker).mtimeMs >= startedMs) continue;
25245
25245
  } catch {}
@@ -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-C4kZ8a2r.js");
25291
25291
  await messageAgent(state.reviewSynthesisAgentId, message);
25292
25292
  state.reviewMonitorSignaled = signal;
25293
25293
  saveAgentStateSync(state);
@@ -25295,7 +25295,7 @@ async function monitorReviewConvoySignals() {
25295
25295
  actions.push(action);
25296
25296
  logDeaconEventSync(`monitorReviewConvoySignals: ${action}`);
25297
25297
  if (signal === "ready") try {
25298
- const { notifyPipelineSync } = await import("./pipeline-notifier-lwMa--Gz.js");
25298
+ const { notifyPipelineSync } = await import("./pipeline-notifier-BtYHbBPl.js");
25299
25299
  notifyPipelineSync({
25300
25300
  type: "reviewer_completed",
25301
25301
  issueId: state.issueId,
@@ -25303,7 +25303,7 @@ async function monitorReviewConvoySignals() {
25303
25303
  });
25304
25304
  } catch {}
25305
25305
  else if (signal === "timeout") try {
25306
- const { notifyPipelineSync } = await import("./pipeline-notifier-lwMa--Gz.js");
25306
+ const { notifyPipelineSync } = await import("./pipeline-notifier-BtYHbBPl.js");
25307
25307
  notifyPipelineSync({
25308
25308
  type: "reviewer_timed_out",
25309
25309
  issueId: state.issueId,
@@ -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-C4kZ8a2r.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-uwVftH98.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-C4kZ8a2r.js");
25439
+ const { PARENT_REVIEW_TIMEOUT_MS } = await import("./review-agent-uwVftH98.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,8 +25485,8 @@ async function checkStalledReviewDiscovery() {
25433
25485
  async function checkReviewForkCacheMisses() {
25434
25486
  const actions = [];
25435
25487
  try {
25436
- const { listAgentStates, saveAgentState } = await import("./agents-BIggLvi_.js");
25437
- const { readEventsSync } = await import("./events-BlzVUyTx.js");
25488
+ const { listAgentStates, saveAgentState } = await import("./agents-C4kZ8a2r.js");
25489
+ const { readEventsSync } = await import("./events-DLRxpSuV.js");
25438
25490
  const { emitActivityEntrySync } = await import("./activity-logger-DvYvFhwZ.js");
25439
25491
  const states = listAgentStates();
25440
25492
  const now = Date.now();
@@ -25581,7 +25633,7 @@ async function reconcileStaleMergeStatus() {
25581
25633
  if (!project) continue;
25582
25634
  let specStatus;
25583
25635
  try {
25584
- const { findSpecByIssue } = await import("./specs-DeS98l_p.js");
25636
+ const { findSpecByIssue } = await import("./specs-CVH1kvz3.js");
25585
25637
  const spec = await Effect.runPromise(findSpecByIssue(project.projectPath, issueId));
25586
25638
  specStatus = spec?.status;
25587
25639
  if (spec && (spec.status === "completed" || spec.status === "cancelled")) {
@@ -25596,7 +25648,7 @@ async function reconcileStaleMergeStatus() {
25596
25648
  if (branchTip.stdout.trim() === mainTip.stdout.trim()) console.log(`[deacon] ${issueId}: branch ${branch} points at main; not treating zero-commit branch as merged`);
25597
25649
  } catch {}
25598
25650
  if (!isMerged) {
25599
- const { resolveGitHubIssueSync: _resolveGitHubIssue } = await import("./tracker-utils-D6B8scEw.js");
25651
+ const { resolveGitHubIssueSync: _resolveGitHubIssue } = await import("./tracker-utils-Bg-Sevcv.js");
25600
25652
  const ghResolved = _resolveGitHubIssue(issueId);
25601
25653
  if (ghResolved.isGitHub) try {
25602
25654
  const { stdout } = await execFileAsync$4("gh", [
@@ -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-CfohxFWM.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}`);
@@ -25658,7 +25710,7 @@ const falseMergedReset = /* @__PURE__ */ new Set();
25658
25710
  async function reconcileFalseMerged() {
25659
25711
  const actions = [];
25660
25712
  try {
25661
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-B5PDHMyn.js");
25713
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-C7lftMNj.js");
25662
25714
  if (!isGitHubAppConfigured()) return actions;
25663
25715
  const statuses = loadReviewStatuses();
25664
25716
  for (const [issueId, status] of Object.entries(statuses)) {
@@ -25703,7 +25755,7 @@ const CLOSED_PR_RECONCILE_COOLDOWN_MS = 600 * 1e3;
25703
25755
  async function reconcileClosedPrReadyForMerge() {
25704
25756
  const actions = [];
25705
25757
  try {
25706
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-B5PDHMyn.js");
25758
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-C7lftMNj.js");
25707
25759
  if (!isGitHubAppConfigured()) return actions;
25708
25760
  const statuses = loadReviewStatuses();
25709
25761
  const now = Date.now();
@@ -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-Ds9_2yjd.js");
25779
25831
  const statuses = loadReviewStatuses();
25780
25832
  const now = Date.now();
25781
25833
  const deps = buildRealConflictGateDeps();
@@ -25787,7 +25839,7 @@ async function reconcileStaleMergeBlockers() {
25787
25839
  staleMergeBlockerCooldowns.set(issueId, now + STALE_MERGE_BLOCKER_COOLDOWN_MS);
25788
25840
  const resolved = resolveProjectFromIssueSync(issueId);
25789
25841
  if (!resolved) continue;
25790
- const workspacePath = join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
25842
+ const workspacePath = join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
25791
25843
  if (!existsSync(workspacePath)) continue;
25792
25844
  try {
25793
25845
  if ((await resolveConflictGate(issueId, workspacePath, "main", deps)).clearedStaleBlocker) {
@@ -25918,7 +25970,7 @@ async function checkFailedMergeRetry() {
25918
25970
  if (ciEntry.count === 5) {
25919
25971
  console.log(`[deacon] CI check failure for ${issueId} — retries exhausted, notifying work agent`);
25920
25972
  const ciNotes = status.mergeNotes || "CI checks are failing on the PR";
25921
- const { writeFeedbackFile } = await import("./feedback-writer-thrdxYpK.js");
25973
+ const { writeFeedbackFile } = await import("./feedback-writer-DMBdS_jL.js");
25922
25974
  const ciFileResult = await Effect.runPromise(writeFeedbackFile({
25923
25975
  issueId,
25924
25976
  specialist: "merge-agent",
@@ -25950,7 +26002,7 @@ async function checkFailedMergeRetry() {
25950
26002
  ciRetryMap.set(issueId, ciEntry);
25951
26003
  console.log(`[deacon] CI check failure for ${issueId} — notifying agent to re-submit (attempt ${ciEntry.count}/5)`);
25952
26004
  const ciNotes = status.mergeNotes || "CI checks are failing on the PR";
25953
- const { writeFeedbackFile } = await import("./feedback-writer-thrdxYpK.js");
26005
+ const { writeFeedbackFile } = await import("./feedback-writer-DMBdS_jL.js");
25954
26006
  const ciFileResult2 = await Effect.runPromise(writeFeedbackFile({
25955
26007
  issueId,
25956
26008
  specialist: "merge-agent",
@@ -25978,7 +26030,7 @@ async function checkFailedMergeRetry() {
25978
26030
  const lastNudge = timeoutNudgeCooldowns.get(issueIdForFb);
25979
26031
  if (!lastNudge || now - lastNudge >= TIMEOUT_NUDGE_COOLDOWN_MS) {
25980
26032
  const timeoutNotes = status.mergeNotes;
25981
- const { writeFeedbackFile } = await import("./feedback-writer-thrdxYpK.js");
26033
+ const { writeFeedbackFile } = await import("./feedback-writer-DMBdS_jL.js");
25982
26034
  await Effect.runPromise(writeFeedbackFile({
25983
26035
  issueId: issueIdForFb,
25984
26036
  specialist: "merge-agent",
@@ -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-pKw9yRSV.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);
@@ -26130,8 +26182,8 @@ async function checkFirstCompletionAgents() {
26130
26182
  const agentId = agent.id;
26131
26183
  if (!agentId || !agentId.startsWith("agent-") || !agent.tmuxActive) continue;
26132
26184
  if (agentId.startsWith("specialist-")) continue;
26133
- const completedFile = join(AGENTS_DIR, agent.id, "completed");
26134
- const processedMarker = join(AGENTS_DIR, agent.id, "completed.processed");
26185
+ const completedFile = join$1(AGENTS_DIR, agent.id, "completed");
26186
+ const processedMarker = join$1(AGENTS_DIR, agent.id, "completed.processed");
26135
26187
  if (existsSync(completedFile) || existsSync(processedMarker)) continue;
26136
26188
  if (!isAgentIdleForNudge(agent.id, FIRST_COMPLETION_IDLE_MS)) continue;
26137
26189
  const runtimeState = getAgentRuntimeStateSync(agent.id);
@@ -26151,7 +26203,7 @@ async function checkFirstCompletionAgents() {
26151
26203
  } catch {}
26152
26204
  const agentStateForGate = getAgentStateSync(agent.id);
26153
26205
  if (agentStateForGate?.workspace) {
26154
- const feedbackDir = join(agentStateForGate.workspace, ".pan", "feedback");
26206
+ const feedbackDir = join$1(agentStateForGate.workspace, ".pan", "feedback");
26155
26207
  if (existsSync(feedbackDir)) try {
26156
26208
  const feedbackFiles = readdirSync(feedbackDir);
26157
26209
  if (feedbackFiles.length > 0) {
@@ -26174,7 +26226,7 @@ async function checkFirstCompletionAgents() {
26174
26226
  try {
26175
26227
  const subdirs = readdirSync(agentState.workspace, { withFileTypes: true }).filter((d) => d.isDirectory() && !d.name.startsWith("."));
26176
26228
  for (const sub of subdirs) try {
26177
- const { stdout: subLog } = await execAsync$4("git log --oneline -3 2>/dev/null", { cwd: join(agentState.workspace, sub.name) });
26229
+ const { stdout: subLog } = await execAsync$4("git log --oneline -3 2>/dev/null", { cwd: join$1(agentState.workspace, sub.name) });
26178
26230
  if (subLog.trim().length > 0) {
26179
26231
  hasCommits = true;
26180
26232
  break;
@@ -26240,7 +26292,7 @@ function bootReconciliationSkipReason(agent) {
26240
26292
  if (!agent.workspace || !existsSync(agent.workspace)) return "workspace_missing";
26241
26293
  const review = getReviewStatusSync(agent.issueId);
26242
26294
  if (review?.mergeStatus === "merged" || agent.merged === true || review?.readyForMerge === true && review.reviewStatus === "passed" && review.testStatus === "passed") return "merged";
26243
- if ((existsSync(join$1(getAgentDir(agent.id), "completed")) || existsSync(join$1(getAgentDir(agent.id), "completed.processed"))) && review?.reviewStatus === "passed" && review.testStatus === "passed") return "completed";
26295
+ if ((existsSync(join(getAgentDir(agent.id), "completed")) || existsSync(join(getAgentDir(agent.id), "completed.processed"))) && review?.reviewStatus === "passed" && review.testStatus === "passed") return "completed";
26244
26296
  return null;
26245
26297
  }
26246
26298
  //#endregion
@@ -26251,7 +26303,7 @@ init_config();
26251
26303
  let graceTimer = null;
26252
26304
  function hasCompletionMarker(workspace) {
26253
26305
  if (!workspace) return false;
26254
- return existsSync$1(join$1(workspace, ".pan", "completed")) || existsSync$1(join$1(workspace, ".pan", "completed.processed"));
26306
+ return existsSync$1(join(workspace, ".pan", "completed")) || existsSync$1(join(workspace, ".pan", "completed.processed"));
26255
26307
  }
26256
26308
  function newestAgentTimestampMs(agent) {
26257
26309
  const timestamps = [
@@ -26417,7 +26469,7 @@ function hasCompletedReviewArtifact(state) {
26417
26469
  if (state.role !== "review") return false;
26418
26470
  if (state.reviewSubRole) return reviewArtifactExistsForRun(state.reviewOutputPath, state.startedAt);
26419
26471
  if (!state.workspace || !state.reviewRunId) return false;
26420
- return reviewArtifactExistsForRun(join(state.workspace, ".pan", "review", state.reviewRunId, "synthesis.md"), state.startedAt);
26472
+ return reviewArtifactExistsForRun(join$1(state.workspace, ".pan", "review", state.reviewRunId, "synthesis.md"), state.startedAt);
26421
26473
  }
26422
26474
  const RAPID_POST_RESUME_DEATH_MS = 12e4;
26423
26475
  function isRapidPostResumeDeath(state) {
@@ -26598,7 +26650,7 @@ function hasLandedUserRecordSinceResume(state, snapshot) {
26598
26650
  return lastUserAt >= resumeAt;
26599
26651
  }
26600
26652
  function cooldownActive(agentId, filename, cooldownMs) {
26601
- const cooldownFile = join(getAgentDir(agentId), filename);
26653
+ const cooldownFile = join$1(getAgentDir(agentId), filename);
26602
26654
  if (!existsSync(cooldownFile)) return false;
26603
26655
  try {
26604
26656
  const last = parseInt(readFileSync(cooldownFile, "utf-8").trim(), 10);
@@ -26608,11 +26660,11 @@ function cooldownActive(agentId, filename, cooldownMs) {
26608
26660
  }
26609
26661
  }
26610
26662
  function recordCooldown(agentId, filename) {
26611
- writeFileSync(join(getAgentDir(agentId), filename), String(Date.now()), "utf-8");
26663
+ writeFileSync(join$1(getAgentDir(agentId), filename), String(Date.now()), "utf-8");
26612
26664
  }
26613
26665
  function buildStalledResumePrompt(state) {
26614
26666
  if (state.kickoffDelivered === false) {
26615
- const promptPath = join(getAgentDir(state.id), "initial-prompt.md");
26667
+ const promptPath = join$1(getAgentDir(state.id), "initial-prompt.md");
26616
26668
  try {
26617
26669
  return readFileSync(promptPath, "utf-8");
26618
26670
  } catch (err) {
@@ -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-C4kZ8a2r.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})`;
@@ -26675,7 +26727,7 @@ async function redeliverUndeliveredKickoffs() {
26675
26727
  const startedMs = Date.parse(state.startedAt ?? "");
26676
26728
  if (!Number.isFinite(startedMs) || Date.now() - startedMs <= 18e4) continue;
26677
26729
  if (cooldownActive(agentId, ".last-kickoff-redelivery", KICKOFF_REDELIVERY_COOLDOWN_MS)) continue;
26678
- const promptPath = join(getAgentDir(agentId), "initial-prompt.md");
26730
+ const promptPath = join$1(getAgentDir(agentId), "initial-prompt.md");
26679
26731
  let prompt;
26680
26732
  try {
26681
26733
  prompt = readFileSync(promptPath, "utf-8");
@@ -26734,7 +26786,7 @@ async function nudgeIdleWorkAgentsWithOpenBeads() {
26734
26786
  }
26735
26787
  if (!await Effect.runPromise(sessionExists(agentId))) continue;
26736
26788
  if (!isAgentIdleForNudge(agentId)) continue;
26737
- const cooldownFile = join(getAgentDir(agentId), ".last-bead-nudge");
26789
+ const cooldownFile = join$1(getAgentDir(agentId), ".last-bead-nudge");
26738
26790
  if (existsSync(cooldownFile)) try {
26739
26791
  const last = parseInt(readFileSync(cooldownFile, "utf-8").trim(), 10);
26740
26792
  if (!Number.isNaN(last) && Date.now() - last < BEAD_NUDGE_COOLDOWN_MS) continue;
@@ -26752,7 +26804,7 @@ async function nudgeIdleWorkAgentsWithOpenBeads() {
26752
26804
  const openBeads = ready.byIssue[state.issueId.toLowerCase()] ?? [];
26753
26805
  if (openBeads.length === 0) continue;
26754
26806
  const firstBead = readyBeadLine(openBeads[0]).slice(0, 200);
26755
- const briefPath = join(getAgentDir(agentId), "initial-prompt.md");
26807
+ const briefPath = join$1(getAgentDir(agentId), "initial-prompt.md");
26756
26808
  const message = [
26757
26809
  `Deacon idle-nudge: your tmux is alive but Claude is idle and you have ${openBeads.length} open bead(s) remaining for ${state.issueId}.`,
26758
26810
  ``,
@@ -26763,9 +26815,9 @@ 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-C4kZ8a2r.js");
26767
26819
  await messageAgent(agentId, message);
26768
- writeFileSync(join(getAgentDir(agentId), ".last-bead-nudge"), String(Date.now()), "utf-8");
26820
+ writeFileSync(join$1(getAgentDir(agentId), ".last-bead-nudge"), String(Date.now()), "utf-8");
26769
26821
  const action = `Nudged idle ${agentId} (${state.issueId}) — ${openBeads.length} open bead(s)`;
26770
26822
  actions.push(action);
26771
26823
  logDeaconEventSync(`nudgeIdleWorkAgentsWithOpenBeads: ${action}`);
@@ -26861,8 +26913,8 @@ async function handleAgentStoppedEvent$1(agentId, opts = {}, deps) {
26861
26913
  return null;
26862
26914
  }
26863
26915
  }
26864
- const completedFile = join(getAgentDir(agentId), "completed");
26865
- const processedFile = join(getAgentDir(agentId), "completed.processed");
26916
+ const completedFile = join$1(getAgentDir(agentId), "completed");
26917
+ const processedFile = join$1(getAgentDir(agentId), "completed.processed");
26866
26918
  const handedOffViaDone = existsSync(completedFile) || existsSync(processedFile);
26867
26919
  let review = getReviewStatusSync(state.issueId);
26868
26920
  if (handedOffViaDone) if (review?.reviewStatus === "blocked" || review?.reviewStatus === "failed" || review?.testStatus === "failed") logDeaconEventSync(`handleAgentStoppedEvent: ${agentId} resuming despite completed marker — review/test needs fixing (review=${review?.reviewStatus}, test=${review?.testStatus})`);
@@ -27252,12 +27304,12 @@ async function recordMainDivergenceHealth(state, projects = listProjectsSync(),
27252
27304
  init_paths();
27253
27305
  init_tmux();
27254
27306
  function agentDir(agentId) {
27255
- return join(getOverdeckHome(), "agents", agentId);
27307
+ return join$1(getOverdeckHome(), "agents", agentId);
27256
27308
  }
27257
27309
  /** Read the launcher-recorded exit code + UTC timestamp, or null if absent. */
27258
27310
  function readAgentExitStatus(agentId) {
27259
27311
  try {
27260
- const p = join(agentDir(agentId), "exit-status");
27312
+ const p = join$1(agentDir(agentId), "exit-status");
27261
27313
  if (!existsSync(p)) return null;
27262
27314
  const raw = readFileSync(p, "utf-8").trim();
27263
27315
  if (!raw) return null;
@@ -27284,7 +27336,7 @@ function describeAgentDeath(agentId) {
27284
27336
  if (paneExit) parts.push(`pane_exit=${paneExit}`);
27285
27337
  }
27286
27338
  try {
27287
- const logPath = join(agentDir(agentId), "output.log");
27339
+ const logPath = join$1(agentDir(agentId), "output.log");
27288
27340
  if (existsSync(logPath)) {
27289
27341
  const tail = readFileSync(logPath, "utf-8").slice(-1500).trim().split("\n").slice(-6).join(" | ").trim();
27290
27342
  if (tail) parts.push(`output.log tail: ${tail}`);
@@ -27296,10 +27348,10 @@ function describeAgentDeath(agentId) {
27296
27348
  //#region ../../lib/cloister/stuck-remediation-state.ts
27297
27349
  init_paths();
27298
27350
  function agentStateDir(agentId) {
27299
- return join(getOverdeckHome(), "agents", agentId);
27351
+ return join$1(getOverdeckHome(), "agents", agentId);
27300
27352
  }
27301
27353
  function statePath(agentId) {
27302
- return join(agentStateDir(agentId), "stuck-remediation.json");
27354
+ return join$1(agentStateDir(agentId), "stuck-remediation.json");
27303
27355
  }
27304
27356
  function readStuckRemediationState(agentId) {
27305
27357
  const filePath = statePath(agentId);
@@ -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-k4FPtCQ_.js");
27542
27596
  const prev = readStuckRemediationState(agentId);
27543
27597
  const nowIso = new Date(now).toISOString();
27544
27598
  if (decision.kind === "escalate") {
@@ -28247,7 +28301,7 @@ async function cleanupOrphanedInspectSessions() {
28247
28301
  return actions;
28248
28302
  }
28249
28303
  for (const session of inspectSessions) {
28250
- const hasStateFile = existsSync(join(AGENTS_DIR, session, "state.json"));
28304
+ const hasStateFile = existsSync(join$1(AGENTS_DIR, session, "state.json"));
28251
28305
  const paneDead = await Effect.runPromise(isPaneDead(session)).catch(() => false);
28252
28306
  if (hasStateFile && !paneDead) continue;
28253
28307
  try {
@@ -28306,10 +28360,10 @@ const DEFAULT_CONFIG = {
28306
28360
  massDeathThreshold: 2,
28307
28361
  massDeathWindowMs: 6e4
28308
28362
  };
28309
- const DEACON_DIR = join(OVERDECK_HOME, "deacon");
28310
- const STATE_FILE = join(DEACON_DIR, "health-state.json");
28311
- const CONFIG_FILE = join(DEACON_DIR, "config.json");
28312
- const DEACON_LOG_FILE = join(OVERDECK_HOME, "logs", "deacon.log");
28363
+ const DEACON_DIR = join$1(OVERDECK_HOME, "deacon");
28364
+ const STATE_FILE = join$1(DEACON_DIR, "health-state.json");
28365
+ const CONFIG_FILE = join$1(DEACON_DIR, "config.json");
28366
+ const DEACON_LOG_FILE = join$1(OVERDECK_HOME, "logs", "deacon.log");
28313
28367
  let deaconInterval = null;
28314
28368
  const deaconPatrolGuard = createInFlightGuard();
28315
28369
  let config = { ...DEFAULT_CONFIG };
@@ -28502,7 +28556,7 @@ async function cleanupStaleAgentState() {
28502
28556
  try {
28503
28557
  const dirs = readdirSync(AGENTS_DIR, { withFileTypes: true }).filter((d) => d.isDirectory());
28504
28558
  for (const dir of dirs) {
28505
- const agentDir = join(AGENTS_DIR, dir.name);
28559
+ const agentDir = join$1(AGENTS_DIR, dir.name);
28506
28560
  const isReviewer = dir.name.startsWith("review-");
28507
28561
  const effectiveRetentionMs = isReviewer ? reviewerRetentionMs : retentionMs;
28508
28562
  try {
@@ -28515,7 +28569,7 @@ async function cleanupStaleAgentState() {
28515
28569
  const ageMs = now - statSync(agentDir).mtimeMs;
28516
28570
  if (ageMs < effectiveRetentionMs) continue;
28517
28571
  if (!isReviewer) {
28518
- const completedFile = join(agentDir, "completed");
28572
+ const completedFile = join$1(agentDir, "completed");
28519
28573
  if (existsSync(completedFile)) {
28520
28574
  if (now - statSync(completedFile).mtimeMs < 10080 * 60 * 1e3) continue;
28521
28575
  }
@@ -28554,10 +28608,10 @@ async function cleanupStaleAgentState() {
28554
28608
  */
28555
28609
  async function cleanupAbandonedFeedback() {
28556
28610
  const actions = [];
28557
- const { getReviewStatusSync } = await import("./review-status-bBkqUj5i.js");
28558
- const { clearFeedbackFiles } = await import("./feedback-writer-thrdxYpK.js");
28611
+ const { getReviewStatusSync } = await import("./review-status-JhQ3qlDS.js");
28612
+ const { clearFeedbackFiles } = await import("./feedback-writer-DMBdS_jL.js");
28559
28613
  for (const { issueId, workspacePath } of listFeatureWorkspaces()) {
28560
- const panFeedbackDir = join(workspacePath, ".pan", "feedback");
28614
+ const panFeedbackDir = join$1(workspacePath, ".pan", "feedback");
28561
28615
  if (!existsSync(panFeedbackDir)) continue;
28562
28616
  const issueLower = issueId.toLowerCase();
28563
28617
  const agentSession = `agent-${issueLower}`;
@@ -28586,7 +28640,7 @@ async function cleanupAbandonedFeedback() {
28586
28640
  const ORPHAN_REVIEWER_AGE_MS = 3600 * 1e3;
28587
28641
  async function loadTmuxSessionsWithCreationTimes() {
28588
28642
  try {
28589
- const { stdout } = await execAsync(`tmux -L overdeck -f ${join(OVERDECK_HOME, "tmux", "overdeck.tmux.conf")} list-sessions -F '#{session_name} #{session_created}'`, { encoding: "utf-8" });
28643
+ const { stdout } = await execAsync(`tmux -L overdeck -f ${join$1(OVERDECK_HOME, "tmux", "overdeck.tmux.conf")} list-sessions -F '#{session_name} #{session_created}'`, { encoding: "utf-8" });
28590
28644
  const lines = stdout.split("\n").filter((l) => l.trim());
28591
28645
  const sessions = [];
28592
28646
  const creationTimes = /* @__PURE__ */ new Map();
@@ -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-JhQ3qlDS.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-JhQ3qlDS.js");
28750
28804
  const statuses = loadReviewStatuses();
28751
28805
  const now = Date.now();
28752
28806
  for (const [issueId, status] of Object.entries(statuses)) {
@@ -28779,7 +28833,7 @@ async function checkPendingTestDispatch() {
28779
28833
  console.log(`[deacon] ${issueId}: skipping test re-dispatch — issue is closed`);
28780
28834
  continue;
28781
28835
  }
28782
- const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
28836
+ const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
28783
28837
  const resolved = resolveProjectFromIssueSync(issueId);
28784
28838
  if (!resolved) continue;
28785
28839
  const issueLower = issueId.toLowerCase();
@@ -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-C4kZ8a2r.js");
28852
+ const { buildTestRolePrompt } = await import("./test-agent-queue-TiVXe3ZT.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-C4kZ8a2r.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-C4kZ8a2r.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,15 +29009,15 @@ 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");
28959
- const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
29012
+ const { loadReviewStatuses, setReviewStatusSync } = await import("./review-status-JhQ3qlDS.js");
29013
+ const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.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") {
28962
29016
  let reviewedAtCommit;
28963
29017
  try {
28964
29018
  const project = resolveProjectFromIssueSync(issueId);
28965
29019
  if (project) {
28966
- const workspacePath = join(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
29020
+ const workspacePath = join$1(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
28967
29021
  if (existsSync(workspacePath)) {
28968
29022
  const { stdout } = await execAsync("git rev-parse HEAD", { cwd: workspacePath });
28969
29023
  reviewedAtCommit = stdout.trim();
@@ -29005,7 +29059,7 @@ async function checkPostReviewCommits() {
29005
29059
  const actions = [];
29006
29060
  try {
29007
29061
  const statuses = loadReviewStatuses();
29008
- const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
29062
+ const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
29009
29063
  for (const [issueId, status] of Object.entries(statuses)) {
29010
29064
  if (status.mergeStatus === "merged") continue;
29011
29065
  if (!status.reviewedAtCommit) continue;
@@ -29016,7 +29070,7 @@ async function checkPostReviewCommits() {
29016
29070
  }
29017
29071
  const project = resolveProjectFromIssueSync(issueId);
29018
29072
  if (!project) continue;
29019
- const workspacePath = join(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
29073
+ const workspacePath = join$1(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
29020
29074
  if (!existsSync(workspacePath)) continue;
29021
29075
  let currentHead;
29022
29076
  try {
@@ -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-uwVftH98.js");
29064
29118
  const branch = `feature/${issueId.toLowerCase()}`;
29065
29119
  const dispatchResult = await Effect.runPromise(spawnReviewRoleForIssue({
29066
29120
  issueId,
@@ -29160,7 +29214,7 @@ async function checkReadyForMergeStuck() {
29160
29214
  const testStatusGreenCiReconcileCooldowns = /* @__PURE__ */ new Map();
29161
29215
  const TEST_STATUS_GREEN_CI_RECONCILE_COOLDOWN_MS = 300 * 1e3;
29162
29216
  async function reconcileTestStatusFromGreenCi() {
29163
- const { getCiCheckRunsState, getPullRequestHeadState, isGitHubAppConfigured } = await import("./github-app-B5PDHMyn.js");
29217
+ const { getCiCheckRunsState, getPullRequestHeadState, isGitHubAppConfigured } = await import("./github-app-C7lftMNj.js");
29164
29218
  return reconcileTestStatusFromGreenCiWithDeps({
29165
29219
  isGitHubAppConfigured,
29166
29220
  loadReviewStatuses,
@@ -29181,17 +29235,17 @@ async function reconcileTestStatusFromGreenCi() {
29181
29235
  */
29182
29236
  async function clearStaleCiFeedback(issueId) {
29183
29237
  const { readdir, rm } = await import("fs/promises");
29184
- const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
29238
+ const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
29185
29239
  const projectConfig = resolveProjectFromIssueSync(issueId);
29186
29240
  if (!projectConfig) return;
29187
29241
  const repoDir = projectConfig.projectPath;
29188
29242
  if (!repoDir) return;
29189
- const feedbackDir = join(repoDir, "workspaces", `feature-${issueId.toLowerCase()}`, ".pan", "feedback");
29243
+ const feedbackDir = join$1(repoDir, "workspaces", `feature-${issueId.toLowerCase()}`, ".pan", "feedback");
29190
29244
  try {
29191
29245
  if (!existsSync(feedbackDir)) return;
29192
29246
  const files = await readdir(feedbackDir);
29193
29247
  for (const file of files) if (file.includes("merge-agent") && file.includes("ci-failure") && file.endsWith(".md")) {
29194
- await rm(join(feedbackDir, file));
29248
+ await rm(join$1(feedbackDir, file));
29195
29249
  console.log(`[deacon] Cleared stale CI feedback: ${file} for ${issueId}`);
29196
29250
  }
29197
29251
  } catch (err) {
@@ -29320,10 +29374,10 @@ async function checkDeadEndAgents() {
29320
29374
  if (resolved) {
29321
29375
  const wsPath = findWorkspacePath(resolved.projectPath, issueId.toLowerCase());
29322
29376
  if (wsPath) {
29323
- const feedbackDir = join(wsPath, ".pan", "feedback");
29377
+ const feedbackDir = join$1(wsPath, ".pan", "feedback");
29324
29378
  if (existsSync(feedbackDir)) {
29325
29379
  const files = (await readdir$1(feedbackDir)).filter((f) => f.endsWith(".md")).sort();
29326
- if (files.length > 0) latestFeedbackPath = join(feedbackDir, files[files.length - 1]);
29380
+ if (files.length > 0) latestFeedbackPath = join$1(feedbackDir, files[files.length - 1]);
29327
29381
  }
29328
29382
  }
29329
29383
  }
@@ -29481,7 +29535,7 @@ async function checkWorkspaceContainerHealth(sharedState) {
29481
29535
  }
29482
29536
  }
29483
29537
  try {
29484
- const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
29538
+ const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
29485
29539
  const resolved = resolveProjectFromIssueSync(issueLower.toUpperCase());
29486
29540
  if (resolved) await killOrphanedWorkspaceProcesses(`${resolved.projectPath}/workspaces/feature-${issueLower}`);
29487
29541
  } catch {}
@@ -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-C4kZ8a2r.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,19 +29681,19 @@ 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-BqsLWqEM.js");
29631
29685
  const reconciledJournalActions = await reconcileInFlightJournals();
29632
29686
  actions.push(...reconciledJournalActions);
29633
29687
  for (const a of reconciledJournalActions) addLog("action", a, state.patrolCycle);
29634
29688
  try {
29635
- const pendingFile = join(OVERDECK_HOME, "pending-post-merge.json");
29689
+ const pendingFile = join$1(OVERDECK_HOME, "pending-post-merge.json");
29636
29690
  if (existsSync(pendingFile)) {
29637
29691
  const content = readFileSync(pendingFile, "utf-8");
29638
29692
  const pending = JSON.parse(content);
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-CfohxFWM.js");
29643
29697
  const { unlinkSync } = await import("fs");
29644
29698
  unlinkSync(pendingFile);
29645
29699
  await postMergeLifecycle(pending.issueId, pending.projectPath, pending.sourceBranch, { skipDeploy: true });
@@ -29684,13 +29738,13 @@ async function runPatrol() {
29684
29738
  actions.push(...suspendActions);
29685
29739
  for (const a of suspendActions) addLog("action", a, state.patrolCycle);
29686
29740
  try {
29687
- const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
29741
+ const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
29688
29742
  const allStatuses = loadReviewStatuses();
29689
29743
  for (const [issueId, status] of Object.entries(allStatuses)) {
29690
29744
  if (!status.readyForMerge || status.mergeStatus === "merged") continue;
29691
29745
  const project = resolveProjectFromIssueSync(issueId);
29692
29746
  if (!project) continue;
29693
- if (!existsSync(join(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`))) {
29747
+ if (!existsSync(join$1(project.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`))) {
29694
29748
  setReviewStatusSync(issueId, {
29695
29749
  readyForMerge: false,
29696
29750
  mergeStatus: "failed",
@@ -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-BqsLWqEM.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-RZYePR_0.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);
@@ -29720,7 +29774,7 @@ async function runPatrol() {
29720
29774
  addLog("warn", `Remote credential refresh patrol failed: ${err.message}`, state.patrolCycle);
29721
29775
  }
29722
29776
  try {
29723
- const { refreshHostHeartbeatForEphemeralVms } = await import("./remote-agents-DNuaAgU6.js");
29777
+ const { refreshHostHeartbeatForEphemeralVms } = await import("./remote-agents-UHoi4oGr.js");
29724
29778
  const heartbeatActions = await refreshHostHeartbeatForEphemeralVms();
29725
29779
  actions.push(...heartbeatActions);
29726
29780
  for (const a of heartbeatActions) 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-RZYePR_0.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);
@@ -29903,7 +29960,7 @@ async function runPatrol() {
29903
29960
  const issueId = runtimeState.currentIssue;
29904
29961
  try {
29905
29962
  if (getReviewStatusSync(issueId)?.mergeStatus === "merging") {
29906
- const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
29963
+ const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
29907
29964
  const resolved = resolveProjectFromIssueSync(issueId);
29908
29965
  if (resolved) {
29909
29966
  const branch = `feature/${issueId.toLowerCase()}`;
@@ -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-CfohxFWM.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 {
@@ -30004,7 +30061,7 @@ function addLog(level, message, cycle) {
30004
30061
  };
30005
30062
  deaconLogs.push(entry);
30006
30063
  try {
30007
- mkdirSync(dirname(DEACON_LOG_FILE), { recursive: true });
30064
+ mkdirSync(dirname$1(DEACON_LOG_FILE), { recursive: true });
30008
30065
  appendFileSync(DEACON_LOG_FILE, JSON.stringify(entry) + "\n", "utf-8");
30009
30066
  } catch {}
30010
30067
  if (deaconLogs.length > MAX_LOG_ENTRIES) deaconLogs.splice(0, deaconLogs.length - MAX_LOG_ENTRIES);
@@ -30063,7 +30120,7 @@ async function checkThinkingSignatureCorruption() {
30063
30120
  try {
30064
30121
  await Effect.runPromise(killSession(agentId));
30065
30122
  } catch {}
30066
- const sessionFile = join(AGENTS_DIR, agentId, "session.id");
30123
+ const sessionFile = join$1(AGENTS_DIR, agentId, "session.id");
30067
30124
  if (existsSync(sessionFile)) try {
30068
30125
  rmSync(sessionFile);
30069
30126
  } catch {}
@@ -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-BqsLWqEM.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-CM0MxbS8.js.map