@overdeck/desktop 0.46.0 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +4 -1
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-CCwFGICj.js → acceptance-criteria-10Ur5Dne.js} +2 -2
  4. package/server/{advancing-selfheal-De1L-Sb4.js → advancing-selfheal-BNwqxseD.js} +6 -6
  5. package/server/{agent-gc-CBULruzm.js → agent-gc-C3h9Or3a.js} +5 -5
  6. package/server/{agent-state-VQk8fY9F.js → agent-state-CYXJVG72.js} +1 -1
  7. package/server/agent-state-service-C63p_ftq.js +2 -0
  8. package/server/{agent-state-service-BlnSkRFA.js → agent-state-service-Ds6OeFvo.js} +15 -9
  9. package/server/{agents-C5rWYhb6.js → agents-J5mEnekq.js} +23 -16
  10. package/server/{agents-BKKkxKgK.js → agents-ePFVoZbu.js} +1 -1
  11. package/server/archive-planning-B2XplFzT.js +2 -0
  12. package/server/{archive-planning-C0lAbNB_.js → archive-planning-BwhxeP7C.js} +10 -6
  13. package/server/{artifact-index-jobs-ug6ZxIP5.js → artifact-index-jobs-D1q_vR3V.js} +2 -2
  14. package/server/{assemble-DnffNpOo.js → assemble-Bgwqv-Ro.js} +2 -2
  15. package/server/{tmux-dedup-DbN6MGzM.js → auto-spawn-consent-CQ9Bi9q6.js} +262 -13
  16. package/server/{backlog-auto-trigger-Dh-i9PQf.js → backlog-auto-trigger-n1lzPgN4.js} +3 -3
  17. package/server/{behavior-CfIg6pKp.js → behavior-td6-xhQk.js} +2 -2
  18. package/server/boot-reconciled-stop-events-C7gGe3oB.js +44 -0
  19. package/server/{bridge-pool-patrol-CUFmjVDN.js → bridge-pool-patrol-CYH2OLb5.js} +1 -1
  20. package/server/{briefing-freshness-DHmCSLar.js → briefing-freshness-DRqZ8lAz.js} +2 -2
  21. package/server/{build-info-CuFfxZxp.js → build-info-7yiEpl6u.js} +3 -3
  22. package/server/{build-info-BP160gU7.js → build-info-CpG__c63.js} +1 -1
  23. package/server/{checkpoint-manager-Dxh0FYsv.js → checkpoint-manager-CkKmB0wZ.js} +1 -1
  24. package/server/{checkpoint-manager-DEWD82qK.js → checkpoint-manager-DBcyNR8w.js} +2 -2
  25. package/server/checkpoint-worker.js +1 -1
  26. package/server/{checkpoints-CZvbtLnr.js → checkpoints-D95apurL.js} +2 -2
  27. package/server/{checkpoints-DMTgXuLG.js → checkpoints-Wm963lm8.js} +1 -1
  28. package/server/{claude-hooks-provision-CN-xo-do.js → claude-hooks-provision-4RPxNkE8.js} +1 -1
  29. package/server/{claude-hooks-provision-fvy4RD2b.js → claude-hooks-provision-Bjitl9aI.js} +2 -2
  30. package/server/{claude-permissions-CN0cSCPp.js → claude-permissions-CpbpvUQ2.js} +2 -2
  31. package/server/{claude-settings-overlay-Dabi9slj.js → claude-settings-overlay-BzkHYDwR.js} +1 -1
  32. package/server/{claude-settings-overlay-CJn35FHQ.js → claude-settings-overlay-_H9Yrzab.js} +2 -2
  33. package/server/cli-CjOCSnfj.js +3 -0
  34. package/server/{cli-oCWYA1pE.js → cli-Cte9ZFGn.js} +9 -9
  35. package/server/{cliproxy-C8mB3KuB.js → cliproxy-C5fMJ7rY.js} +2 -2
  36. package/server/{cliproxy-PGwTX_o8.js → cliproxy-DaAbWMjC.js} +1 -1
  37. package/server/{close-issue-D5MF5GqF.js → close-issue-BPh1ARCF.js} +5 -5
  38. package/server/{closed-issue-reaper-CJ24u0Zt.js → closed-issue-reaper-DHRfRMrp.js} +1 -1
  39. package/server/{closed-issue-reaper-Cltx86x5.js → closed-issue-reaper-DoOZqGFK.js} +62 -12
  40. package/server/{codex-Drlf5Xhf.js → codex-BzGDW_d3.js} +6 -6
  41. package/server/{codex-BdEsUFWh.js → codex-o8FJwzmy.js} +1 -1
  42. package/server/{codex-parser-DpB89Vqa.js → codex-parser-Dt-ycU8L.js} +2 -2
  43. package/server/{compaction-continuation-K2AxQX4H.js → compaction-continuation-CvXpbZ4w.js} +3 -3
  44. package/server/{config-B2IMcBxx.js → config-Bi3u1VK7.js} +2 -2
  45. package/server/{config-Dr3pW6w6.js → config-BvLe652W.js} +2 -2
  46. package/server/{config-DV-grfQc.js → config-CL3Gyvja.js} +1 -1
  47. package/server/{config-yaml-CmOPzmBb.js → config-yaml-CxdwhAIA.js} +10 -2
  48. package/server/conflict-gate-CX80JYYS.js +3 -0
  49. package/server/{conflict-gate-B9cN3SBi.js → conflict-gate-E4nt7ZeS.js} +59 -13
  50. package/server/{context-layers-dR5YxHYB.js → context-layers-C_IIysnm.js} +3 -3
  51. package/server/{context-layers-D6LZo3l1.js → context-layers-DAG83UZt.js} +2 -2
  52. package/server/{control-settings-C7DUehE1.js → control-settings-CiqGxXnc.js} +13 -6
  53. package/server/{conversation-compaction-Dj4FAKoZ.js → conversation-compaction-BE3CNtHF.js} +1 -1
  54. package/server/{conversation-compaction-BoqdDXWF.js → conversation-compaction-D6-yLtqt.js} +8 -8
  55. package/server/{conversation-service-5aCnq1zR.js → conversation-service-DBxoYMDl.js} +8 -7
  56. package/server/{conversation-service-BCxl4f8Z.js → conversation-service-D_TS2b1r.js} +1 -1
  57. package/server/{conversations-C34dyIb9.js → conversations-BKDVpB-3.js} +1 -1
  58. package/server/{conversations-BUpYsOZg.js → conversations-D0UEdLtk.js} +4 -4
  59. package/server/{cost-CvxRrucd.js → cost-DS1s0DbG.js} +3 -3
  60. package/server/{cost-Bgcub5kW.js → cost-DpgYmYqR.js} +2 -2
  61. package/server/{cost-sync-Dv3LUaNW.js → cost-sync-tOCCGnEt.js} +3 -3
  62. package/server/{dag-ombYYt4s.js → dag-BtkgLeqY.js} +2 -2
  63. package/server/{dangerous-git-ops-BcJPC5Rr.js → dangerous-git-ops-CFLykHWt.js} +1 -1
  64. package/server/dashboard-db-worker.js +7 -7
  65. package/server/{deacon-DrXqT9LQ.js → deacon-BIblC-WX.js} +3 -3
  66. package/server/{deacon-nudge-log-BNBebzeL.js → deacon-nudge-log-B08gF0mh.js} +3 -3
  67. package/server/{deacon-hi9KLPLT.js → deacon-pLRLbPvR.js} +548 -176
  68. package/server/{deacon-pending-lifecycle-Cpk0k7Hi.js → deacon-pending-lifecycle-B-Io84AP.js} +3 -3
  69. package/server/deacon-swarm-B1XkIvfr.js +2 -0
  70. package/server/{deacon-swarm-DBxUaO-A.js → deacon-swarm-v5PMun-m.js} +15 -14
  71. package/server/deacon.js +8 -8
  72. package/server/{dead-end-trip-CQcP70ND.js → dead-end-trip-D8A3msX9.js} +3 -3
  73. package/server/{delivery-Da0zEMY4.js → delivery-BX9HR4wQ.js} +1 -1
  74. package/server/{deploy-patrol-Df-Tmaq0.js → deploy-patrol-sYgOxLeb.js} +8 -8
  75. package/server/{deploy-queue-UjKGYsDe.js → deploy-queue-VfohaPN_.js} +2 -2
  76. package/server/{deploy-queue-9SrhZR63.js → deploy-queue-gHJBycaF.js} +1 -1
  77. package/server/{deploy-window-jOiPRHL0.js → deploy-window-CFRZ0-kt.js} +1 -1
  78. package/server/{deploy-window-rpqpWqHA.js → deploy-window-D4DQb8VP.js} +6 -6
  79. package/server/{dev-supervisor-CC46Ig8q.js → dev-supervisor-DiOBDM1c.js} +2 -2
  80. package/server/{devcontainer-renderer-68CSCRnu.js → devcontainer-renderer-BUOIlfgD.js} +3 -3
  81. package/server/dist-B3YPQa5A.js +3 -0
  82. package/server/{dist-CJy72uEg.js → dist-C3A8B8wM.js} +1 -1
  83. package/server/{dist-src-Bik83hFi.js → dist-src-C0adpegX.js} +1 -1
  84. package/server/{docker-Dam7mbIB.js → docker-BJzlkqYB.js} +2 -2
  85. package/server/{docker-BMVTSFL5.js → docker-Y3PElJb0.js} +1 -1
  86. package/server/{dod-Dar-yheg.js → dod-DlNtcH6n.js} +26 -5
  87. package/server/{durable-review-pipeline-CGZ5QBxh.js → durable-review-pipeline-Cibps-Rg.js} +5 -2
  88. package/server/durable-review-pipeline-DP6bIcOY.js +3 -0
  89. package/server/{ensure-devcontainer-B057YA81.js → ensure-devcontainer-BAofzBPv.js} +4 -4
  90. package/server/{ensure-devcontainer-C98V8yW-.js → ensure-devcontainer-DMAbWqtQ.js} +1 -1
  91. package/server/{esm-shims-Br9BPdkR.js → esm-shims-BeObUkaw.js} +1 -1
  92. package/server/{event-store-ELqkVOn0.js → event-store-5UKzh9Jf.js} +1 -1
  93. package/server/{event-store-zY5MJHgF.js → event-store-CrHcVC5_.js} +3 -3
  94. package/server/{events-D9PR1IC0.js → events-BNrvchBg.js} +3 -3
  95. package/server/{events-D6pyqhzM.js → events-CF8QDbuV.js} +1 -1
  96. package/server/{factory-CRoOpGsF.js → factory-Cmm9Hsho.js} +5 -5
  97. package/server/{feature-registry-population--YUXU999.js → feature-registry-population-B6HpNWRy.js} +4 -4
  98. package/server/{feature-registry-storage-BORBTo0y.js → feature-registry-storage-DJEFx1Pf.js} +2 -2
  99. package/server/{features--nFkJY8v.js → features-D5km80UI.js} +2 -2
  100. package/server/{feedback-target-C0ZzyHvU.js → feedback-target-BJ5ZADsu.js} +1 -1
  101. package/server/{feedback-target-Dt9BsapX.js → feedback-target-DSxEL6lP.js} +7 -7
  102. package/server/{feedback-writer-BG0RUZiu.js → feedback-writer-C27Hak8a.js} +5 -5
  103. package/server/{feedback-writer-D1fm-5Z8.js → feedback-writer-CoB9Z6aU.js} +1 -1
  104. package/server/{flywheel-BiT3odRb.js → flywheel-BHx8XuMr.js} +38 -19
  105. package/server/{flywheel-BekukH4i.js → flywheel-DZZdtiOL.js} +1 -1
  106. package/server/{flywheel-CLVB55Be.js → flywheel-f662Q-y2.js} +14 -14
  107. package/server/{flywheel-merge-order-BJv1DZz1.js → flywheel-merge-order-D_xLMbJU.js} +7 -7
  108. package/server/{flywheel-merge-order-BKw9o6ku.js → flywheel-merge-order-Dil0LmdN.js} +1 -1
  109. package/server/forge-B5o319qI.js +3 -0
  110. package/server/{forge-CZbSg6Ds.js → forge-BaKGCya6.js} +2 -2
  111. package/server/{from-D_4_dk7i.js → from-B3tZbB55.js} +1 -1
  112. package/server/fs-lock-Bre3sGoz.js +130 -0
  113. package/server/{fts-db-BeOomFa-.js → fts-db-IVc4_M3f.js} +2 -2
  114. package/server/{fts-operations-BdewJ_g9.js → fts-operations-B9jG8wa3.js} +2 -2
  115. package/server/{git-utils-ameCgDdy.js → git-utils-CsvYfJU3.js} +4 -4
  116. package/server/{git-utils-CI6cwyyC.js → git-utils-Xg4PFN45.js} +1 -1
  117. package/server/{github-app-DtAsvwzK.js → github-app-Bmg4R9mv.js} +1 -1
  118. package/server/{github-app-CQ1Lo6LA.js → github-app-CmNk0zLU.js} +2 -2
  119. package/server/{github-client-Cj0yl_07.js → github-client-B6KM9_wA.js} +1 -1
  120. package/server/{github-client-BfyDxuRN.js → github-client-qazkPrg0.js} +3 -3
  121. package/server/{github-pr-lookup-BDq6Wznz.js → github-pr-lookup-DAcVeRLK.js} +2 -2
  122. package/server/{harness-binary-DqkftwTb.js → harness-binary-BSpiXaLw.js} +2 -2
  123. package/server/{harness-resolve-CqMqM1Mb.js → harness-resolve-BAJu5MX8.js} +4 -4
  124. package/server/{health-events-_xfTaOUs.js → health-events-2Z6Wa9SM.js} +1 -1
  125. package/server/{health-events-CazRxJUS.js → health-events-BwX32k8d.js} +2 -2
  126. package/server/{hooks-BnJsxlSq.js → hooks-D1g1jKLI.js} +1 -1
  127. package/server/{hooks-BO3QT1sn.js → hooks-DbtbimEf.js} +2 -2
  128. package/server/{hume-CDYJxqx-.js → hume-DXNiu6nQ.js} +2 -2
  129. package/server/hume-VUCNbTgn.js +3 -0
  130. package/server/{idle-stack-reaper-BYqERdkE.js → idle-stack-reaper-CRA1e0jr.js} +1 -1
  131. package/server/{idle-stack-reaper-CnGx_PO_.js → idle-stack-reaper-Cy-dQzW4.js} +2 -2
  132. package/server/{in-flight-guard-Bq3epG58.js → in-flight-guard-D-sSkADM.js} +1 -1
  133. package/server/{infra-BjuxvjdS.js → infra-BDQDRopn.js} +15 -4
  134. package/server/{injection-UCf8EsjX.js → injection-6AGnXxlj.js} +7 -7
  135. package/server/{injection-DZxlV2al.js → injection-Bl8d_jHZ.js} +1 -1
  136. package/server/inspect-agent-CUwVmr2h.js +2 -0
  137. package/server/{inspect-agent-6kylZnrm.js → inspect-agent-nXdIptyh.js} +12 -12
  138. package/server/{internal-token-DvMTQSOS.js → internal-token-DzK385vD.js} +2 -2
  139. package/server/{internal-token-M9omeXM1.js → internal-token-Ias7N8Kg.js} +1 -1
  140. package/server/{io-VHvc0Ssp.js → io-B00PBNku.js} +4 -4
  141. package/server/{issue-closed-B6KJkmHZ.js → issue-closed-BehTG1be.js} +8 -8
  142. package/server/{issue-lifecycle-C4Zj0WmE.js → issue-lifecycle-Birk-ifu.js} +29 -23
  143. package/server/{issue-lifecycle-9gk3fnXN.js → issue-lifecycle-BqSuQvbn.js} +1 -1
  144. package/server/{issue-service-singleton-PMx8F1jr.js → issue-service-singleton-B2wXiIlw.js} +1 -1
  145. package/server/{issue-service-singleton-DmCh7EHj.js → issue-service-singleton-C6ZduvuY.js} +10 -10
  146. package/server/{issues-CgnQ1OGQ.js → issues-DQ5-LatB.js} +2 -2
  147. package/server/{jsonl-parser-DJOH_O-w.js → jsonl-parser-BDpnGFCl.js} +3 -3
  148. package/server/{label-cleanup-Dv7AV_R1.js → label-cleanup-Dwnky8FG.js} +3 -3
  149. package/server/{lifecycle-DDN8ApVY.js → lifecycle-B3s4sM1G.js} +6 -6
  150. package/server/{lifecycle-CTdOWYMi.js → lifecycle-B4Xdb4cY.js} +2 -2
  151. package/server/{lifecycle-io-D_zTLvP1.js → lifecycle-io-CzTHEooc.js} +1 -1
  152. package/server/{lifecycle-io-D-lGdzK3.js → lifecycle-io-DCo6s6ks.js} +5 -5
  153. package/server/{linear-client-BQU36QqE.js → linear-client-9uq7fhiV.js} +3 -3
  154. package/server/{linear-client-CY4O_Tu3.js → linear-client-CnbtHiic.js} +1 -1
  155. package/server/{linear-mcp-auth-BnU4TYfY.js → linear-mcp-auth-BxUOzswy.js} +5 -5
  156. package/server/{linear-mcp-auth-NYBq_oHZ.js → linear-mcp-auth-D46fBCLf.js} +1 -1
  157. package/server/memory-fts-worker.js +1 -1
  158. package/server/{merge-Bpx4jjht.js → merge-DiW9RdSB.js} +3 -3
  159. package/server/{merge-agent-DdMVSV2Y.js → merge-agent-BLUgRsz3.js} +31 -31
  160. package/server/{merge-agent-DrXa1CpW.js → merge-agent-DQTXZk8z.js} +1 -1
  161. package/server/{merge-batch-C5q1c1GX.js → merge-batch-Cp_j9BGk.js} +1 -1
  162. package/server/{merge-completeness-BMm8tMyZ.js → merge-completeness-B46KqhtY.js} +4 -4
  163. package/server/{merge-completeness-D0ljXbk3.js → merge-completeness-BLbB5-6n.js} +1 -1
  164. package/server/merge-ops-1abz6O_P.js +2 -0
  165. package/server/merge-rebase-CJJVAJuz.js +2 -0
  166. package/server/{merge-rebase-xLnMlw5h.js → merge-rebase-DIkBjgwq.js} +2 -2
  167. package/server/{merge-set-DH7ot3yz.js → merge-set-CBgHfwM0.js} +4 -4
  168. package/server/{merge-set-DzsOTBg5.js → merge-set-DeUxFsC3.js} +1 -1
  169. package/server/{merge-idOG--29.js → merge-sr8Nrnmi.js} +1 -1
  170. package/server/merge-sync-CpGmk6Ch.js +3 -0
  171. package/server/{merge-sync-CQ-LgZ1_.js → merge-sync-kr4vqyjM.js} +7 -4
  172. package/server/{merge-train-DTEMyIu4.js → merge-train-Dmrcus12.js} +4 -4
  173. package/server/{merge-train-deps-CNPJzepw.js → merge-train-deps-D_uGX91G.js} +21 -15
  174. package/server/{merge-verification-x3JO8Dtz.js → merge-verification-NvaAd8CZ.js} +6 -6
  175. package/server/{merged-docker-cleanup-worker-Cdi9apm-.js → merged-docker-cleanup-worker-DH_hrGPI.js} +1 -1
  176. package/server/{merged-docker-cleanup-worker-CTpC27Bs.js → merged-docker-cleanup-worker-Y1R06TEl.js} +3 -3
  177. package/server/{multipart-parser-IMSBfePV.js → multipart-parser-R-oC8dQg.js} +2 -2
  178. package/server/{no-resume-mode-C5ULAXwO.js → no-resume-mode-BgD0JUmM.js} +1 -1
  179. package/server/node_modules/.package-lock.json +4 -4
  180. package/server/node_modules/@types/node/README.md +1 -1
  181. package/server/node_modules/@types/node/crypto.d.ts +1 -1
  182. package/server/node_modules/@types/node/package.json +2 -2
  183. package/server/{orphan-proposed-reconciler-Dg6U4ADZ.js → orphan-proposed-reconciler-B6vJHxtX.js} +230 -31
  184. package/server/{orphan-proposed-reconciler-CWmOdM9-.js → orphan-proposed-reconciler-DcgTPPFY.js} +1 -1
  185. package/server/package-lock.json +5 -5
  186. package/server/package.json +1 -1
  187. package/server/{pan-dir-ubraCiUg.js → pan-dir-DMzF5wne.js} +4 -4
  188. package/server/{paths-cXmOwSbh.js → paths-sJBSb7Ul.js} +2 -2
  189. package/server/{pending-lifecycle-claim-DEteYdS9.js → pending-lifecycle-claim-DilzGfgk.js} +2 -2
  190. package/server/persistent-logger-H_VjuOu7.js +57 -0
  191. package/server/{pickup-D8xtG1J2.js → pickup-DWhqzliO.js} +4 -3
  192. package/server/{pipeline-membership-BGSvkT2M.js → pipeline-membership-C88VBnhJ.js} +1 -1
  193. package/server/{pipeline-membership-CrAPLYtf.js → pipeline-membership-D9SBvItj.js} +1 -1
  194. package/server/{pipeline-membership-gather-DTfcgxLl.js → pipeline-membership-gather-4eR-7Tqy.js} +1 -1
  195. package/server/{pipeline-membership-gather-CET40frr.js → pipeline-membership-gather-CeVGnNJ2.js} +114 -9
  196. package/server/{pipeline-notifier-BuQ0e4hF.js → pipeline-notifier-D0ALV6Nw.js} +2 -2
  197. package/server/{pipeline-notifier-ImNXknf0.js → pipeline-notifier-DT6xLFao.js} +1 -1
  198. package/server/{post-merge-lifecycle-worker-DbO10pum.js → post-merge-lifecycle-worker-8HIeS_J6.js} +3 -3
  199. package/server/{project-pipelines-Bim6bThI.js → project-pipelines-9SKt2bEc.js} +2 -2
  200. package/server/{project-repos-C0nuoBGv.js → project-repos-B5pIphKg.js} +2 -2
  201. package/server/{project-repos-CRE6Ykow.js → project-repos-DPjOdfPa.js} +1 -1
  202. package/server/{projects-B03Wr-xc.js → projects-_n3Zui6K.js} +1 -1
  203. package/server/{prompts-BEx08AIu.js → prompts-CgzMBvQF.js} +2 -2
  204. package/server/{providers-D7IluJe0.js → providers-BI1mOBQ4.js} +1 -1
  205. package/server/{providers-evXhiQeg.js → providers-BJQSnAAp.js} +7 -7
  206. package/server/public/assets/{chunk-BO2N2NFS-D1s4-Sqp.js → chunk-BO2N2NFS-D_pGACYN.js} +4 -4
  207. package/server/public/assets/{diagram-OG6HWLK6-1gdMoSF7.js → diagram-OG6HWLK6-BO6fe3hH.js} +1 -1
  208. package/server/public/assets/{dist-DqDRYW6P.js → dist-5zingMiA.js} +3 -3
  209. package/server/public/assets/{dist-CxAOHbil.js → dist-CVxhbI2E.js} +1 -1
  210. package/server/public/assets/{ganttDiagram-6RSMTGT7-BYex-Ec7.js → ganttDiagram-6RSMTGT7-Bgj4A7kp.js} +1 -1
  211. package/server/public/assets/{highlighted-body-OFNGDK62-DlVkiG0S.js → highlighted-body-OFNGDK62-DNPK7_cm.js} +1 -1
  212. package/server/public/assets/{index-K0hAYCgV.js → index-DEpY-D1O.js} +148 -148
  213. package/server/public/assets/index-Ddkcz3WT.css +1 -0
  214. package/server/public/assets/{linear-B4cuEFmO.js → linear-BB0jQT16.js} +1 -1
  215. package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +1 -0
  216. package/server/public/assets/{pieDiagram-4H26LBE5-CBHNBIJQ.js → pieDiagram-4H26LBE5-DeGIzzpZ.js} +1 -1
  217. package/server/public/assets/{prod-CN2nHBvX.js → prod-XBLvikex.js} +4 -4
  218. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bom87VOQ.js → quadrantDiagram-W4KKPZXB-BV9SLeWz.js} +1 -1
  219. package/server/public/assets/{sankeyDiagram-5OEKKPKP-UrBeyLxk.js → sankeyDiagram-5OEKKPKP-Dwja0gj8.js} +1 -1
  220. package/server/public/assets/{xychartDiagram-2RQKCTM6-DhkbrIxR.js → xychartDiagram-2RQKCTM6-DCB4qvfw.js} +1 -1
  221. package/server/public/index.html +2 -2
  222. package/server/{pull-requests-DHWiKxo7.js → pull-requests-7BgLDsIo.js} +3 -3
  223. package/server/{pull-requests-Cv7LxzUN.js → pull-requests-Dq0y6IxE.js} +1 -1
  224. package/server/{queries-DHJm7bTd.js → queries-C-MUZaIy.js} +266 -155
  225. package/server/{rally-B71M9f4o.js → rally-CPysR4T_.js} +3 -3
  226. package/server/rally-D_VW4bJv.js +3 -0
  227. package/server/{rally-api-Dkqmok65.js → rally-api-8Ptlp2os.js} +2 -2
  228. package/server/{rally-api-D5uXN08-.js → rally-api-CgosKdKL.js} +1 -1
  229. package/server/{rally-client-CxsA6ExK.js → rally-client-CCX0hADj.js} +1 -1
  230. package/server/{rally-client-Bfqm6XI4.js → rally-client-iYMHWQD7.js} +5 -5
  231. package/server/{reap-terminal-sessions-BQ23nriz.js → reap-terminal-sessions-4Xg9NGA8.js} +2 -2
  232. package/server/{reap-terminal-sessions-CvmwaqKv.js → reap-terminal-sessions-Qf-9LVQc.js} +2 -2
  233. package/server/{rebuild-stack-0EEYReVZ.js → rebuild-stack-CMdgaylx.js} +7 -7
  234. package/server/{rebuild-stack-qeRqHZxH.js → rebuild-stack-DqcOVmJO.js} +2 -2
  235. package/server/{reconstruct-cache-BbYFsqLa.js → reconstruct-cache-CMZJ_Vjq.js} +9 -8
  236. package/server/{record-CtroO946.js → record-BTwWhtBb.js} +1 -1
  237. package/server/{record-update-Z0QCxmMp.js → record-update-DaOKS7Wb.js} +5 -128
  238. package/server/{record-update-DH6dLJID.js → record-update-DhI7eySG.js} +1 -1
  239. package/server/{recovery-trip-eJe26h-f.js → recovery-trip-DDH-02ng.js} +2 -2
  240. package/server/{release-engine-lPUp-MTd.js → release-engine-B2X9AfFC.js} +5 -5
  241. package/server/{release-set-BwGeyZKX.js → release-set-G4XKyQ8K.js} +3 -3
  242. package/server/{remote-BCd02Es1.js → remote-BXarMvqf.js} +3 -3
  243. package/server/{remote-CVGUhXMV.js → remote-CUhyqjXk.js} +3 -3
  244. package/server/{remote-agents-C_VxssLU.js → remote-agents-Bba-MgSA.js} +17 -8
  245. package/server/{remote-agents-C1bssi41.js → remote-agents-CLZB3Coc.js} +1 -1
  246. package/server/{remote-completion-DAB0P706.js → remote-completion-CwAp79EC.js} +13 -13
  247. package/server/resume-mOREjlYu.js +3 -0
  248. package/server/{review-agent-CHhI66UP.js → review-agent--pOptAEV.js} +31 -29
  249. package/server/{review-agent-CD4RCI0Y.js → review-agent-BTCNkq2h.js} +1 -1
  250. package/server/{review-artifacts-DSMRIfuJ.js → review-artifacts-BNmw8dWE.js} +5 -5
  251. package/server/{review-context-oFuBbiEE.js → review-context-DFxYOOJW.js} +9 -9
  252. package/server/{review-convoy-liveness-CpzrcJ5F.js → review-convoy-liveness-BgU_1jJf.js} +2 -2
  253. package/server/{review-status-yljtTd-q.js → review-status-CGvlA4o_.js} +326 -110
  254. package/server/review-status-Dma9SFaN.js +3 -0
  255. package/server/{review-status-emit-CUExtHd5.js → review-status-emit-DURrmGYX.js} +3 -3
  256. package/server/{review-status-enrichment-QV_hQkgS.js → review-status-enrichment-8NiNXi5W.js} +3 -3
  257. package/server/{review-status-source-ylw5QZUR.js → review-status-source-BLx_1siH.js} +1 -1
  258. package/server/{review-status-source-CpvJnvnQ.js → review-status-source-DIk1JSow.js} +1 -1
  259. package/server/{review-status-sync-483sujRo.js → review-status-sync-0GxOqeqF.js} +11 -6
  260. package/server/{review-status-sync-NaWvI9Xf.js → review-status-sync-muT-EBp2.js} +1 -1
  261. package/server/{review-verdict-feedback-BPDn4li_.js → review-verdict-feedback-HwF6ODFy.js} +1 -1
  262. package/server/{review-verdict-feedback-CELeUinh.js → review-verdict-feedback-xJNdqBnX.js} +23 -9
  263. package/server/{rollup-DTNvelz9.js → rollup-BQaol5TX.js} +8 -8
  264. package/server/{rollup-DYZfq1c4.js → rollup-BR4t_wck.js} +1 -1
  265. package/server/{scanner-CV35oSn4.js → scanner-C-D2cFdX.js} +7 -7
  266. package/server/{sequence-io-DF_8iuhV.js → sequence-io-Bmf1EZM5.js} +4 -4
  267. package/server/{sequencer-agent-B2WeCtGi.js → sequencer-agent-CigMyKh2.js} +7 -6
  268. package/server/server.js +435 -418
  269. package/server/{service-Br9rpBNA.js → service-CD0DvFvD.js} +88 -59
  270. package/server/{session-fork-D0LY152N.js → session-fork-B6cQ5eya.js} +2 -2
  271. package/server/{session-history-BUyK29eq.js → session-history-3ON_IJjm.js} +7 -55
  272. package/server/settings-CVmWiJ-r.js +2 -0
  273. package/server/{settings-CvVGqNEs.js → settings-PilbFZAM.js} +2 -2
  274. package/server/{settings-Bse1Pdcj.js → settings-VN0qOh4U.js} +3 -3
  275. package/server/{shadow-engineering-BWLa8ODz.js → shadow-engineering-DXvx77oE.js} +3 -3
  276. package/server/{shadow-state-B4fpKxOO.js → shadow-state-BBk_zacw.js} +2 -2
  277. package/server/{shadow-state-FV6PHfEW.js → shadow-state-CZBp7pwq.js} +1 -1
  278. package/server/{shadow-utils-D7asqxOZ.js → shadow-utils-DdZ05AJS.js} +2 -2
  279. package/server/{ship-log-xplJ8t75.js → ship-log-7kJfjUX2.js} +1 -1
  280. package/server/{smart-compaction-CPp2Ykf6.js → smart-compaction-8fA5k5XN.js} +1 -1
  281. package/server/{smart-compaction-D3U_79f-.js → smart-compaction-ByhL9cRS.js} +7 -7
  282. package/server/{spawn-planning-session-DGfZ5B8D.js → spawn-planning-session-pcF-YeFE.js} +38 -50
  283. package/server/spawn-planning-session-vLUJoFjy.js +3 -0
  284. package/server/{specialist-completion-Br48eiDP.js → specialist-completion-B07XjWD2.js} +1 -1
  285. package/server/{specialist-context-cVbGnTa3.js → specialist-context-DJ-zFyL3.js} +5 -5
  286. package/server/{specialist-handoff-logger-DK-GTz4s.js → specialist-handoff-logger-aKSxbIgD.js} +2 -2
  287. package/server/{specialist-logs-Cl5-hqT8.js → specialist-logs-Dae-n52_.js} +3 -3
  288. package/server/{specialists-CNfYO3G2.js → specialists-6PWdtWcg.js} +298 -180
  289. package/server/{specialists-Tdezg_6N.js → specialists-Bz-wFT7R.js} +1 -1
  290. package/server/{specialists-Cicieuzu.js → specialists-DUiExaxb.js} +18 -18
  291. package/server/{specialists-JHsdU3pA.js → specialists-KR3pKulN.js} +1 -1
  292. package/server/specs--enInima.js +3 -0
  293. package/server/{src-CRmCHlma.js → src-B948bGVR.js} +57 -13
  294. package/server/{src-Ck028hjO.js → src-rac0Mepv.js} +6 -6
  295. package/server/{src-UWcGe0Ix.js → src-vHy2-oCv.js} +3 -3
  296. package/server/{stack-health-CJLMrLBl.js → stack-health-BikqHSjn.js} +1 -1
  297. package/server/{stack-health-DqSqx0zv.js → stack-health-DqLTiEu4.js} +2 -2
  298. package/server/{stale-task-claims-CYFOUNlT.js → stale-task-claims-Cab_Fo_Z.js} +5 -4
  299. package/server/{staleness-D47CUJok.js → staleness-C-a5rBxF.js} +1 -1
  300. package/server/{staleness-BQ-0gMYK.js → staleness-CGTZyp6V.js} +1 -1
  301. package/server/{state-home-BYV7qZTW.js → state-home-722Dkx92.js} +2 -2
  302. package/server/{state-mapping-BVldLhBf.js → state-mapping-CybR81Uf.js} +1 -1
  303. package/server/{state-migrate-CvvBtS0Y.js → state-migrate-2u8wIpoL.js} +4 -4
  304. package/server/{stuck-remediation-mkLC6G_t.js → stuck-remediation-CC6q3eqQ.js} +24 -23
  305. package/server/{stuck-remediation-Wt0UVvu1.js → stuck-remediation-r1TJu68G.js} +1 -1
  306. package/server/{substrate-bug-weights-service-XfLAKnmK.js → substrate-bug-weights-service-CzIyyWFT.js} +3 -3
  307. package/server/{summary-fork-CD7GOts0.js → summary-fork-BqgmgPDt.js} +2 -2
  308. package/server/{summary-fork-xiXBnWG9.js → summary-fork-Df2WFijM.js} +8 -8
  309. package/server/supervisor/{injection-budget-B5SbvDx2.js → injection-budget-Cg_KIb3o.js} +1 -1
  310. package/server/supervisor/{paths-K3noE4N_.js → paths-BBOnCYlO.js} +10 -2
  311. package/server/supervisor/pty-supervisor.js +4 -4
  312. package/server/supervisor/{pty-token-B7lp0ElT.js → pty-token-BbjwEUUM.js} +3 -3
  313. package/server/supervisor-B4anCCSm.js +2 -0
  314. package/server/{supervisor-DL788vos.js → supervisor-BxqSpjcN.js} +3 -3
  315. package/server/{swarm-readiness-BV14DF5N.js → swarm-readiness-DfFxa9-n.js} +3 -3
  316. package/server/{system-prerequisites-pdWG6ZQs.js → system-prerequisites-ICLSkhhZ.js} +2 -2
  317. package/server/{teardown-workspace-l2F4_zim.js → teardown-workspace-DRdi_CPa.js} +15 -15
  318. package/server/{test-agent-queue-qakFIIGz.js → test-agent-queue-A_-p-i0I.js} +8 -7
  319. package/server/{test-verdict-Gw-btEfb.js → test-verdict-BHgTAwIG.js} +1 -1
  320. package/server/{test-verdict-BJYDggMm.js → test-verdict-C4i9aqEP.js} +1 -1
  321. package/server/{tldr-daemon-BKOYB616.js → tldr-daemon-CvWXBhX1.js} +1 -1
  322. package/server/{tldr-daemon-CBaWkV9k.js → tldr-daemon-wvsU6bKv.js} +2 -2
  323. package/server/{tmux-B1Wbxz5o.js → tmux-CfDHob9M.js} +174 -4
  324. package/server/{tmux-DQ6jB76i.js → tmux-Ctk6RV5l.js} +1 -1
  325. package/server/{token-Cxbk023d.js → token-DrxwytsZ.js} +2 -2
  326. package/server/{token-util-CLq2MmQt.js → token-util-B48BlCba.js} +1 -1
  327. package/server/token-util-D411CAq9.js +3 -0
  328. package/server/{tracker-config-DZ8Zn2nQ.js → tracker-config-BcPMElRB.js} +2 -2
  329. package/server/{tracker-utils-L0FKtjq2.js → tracker-utils-CJ6BHjcD.js} +2 -2
  330. package/server/{traefik-connect-bNX6jKkb.js → traefik-connect-DZ6nMYMj.js} +1 -1
  331. package/server/{tunnel-CjSnHdTc.js → tunnel-Bp-dRHZz.js} +1 -1
  332. package/server/{tunnel-BAm1XgjG.js → tunnel-DUbUPElU.js} +3 -3
  333. package/server/{typed-errors-BHhE85Ul.js → typed-errors-CKeoDdU3.js} +1 -1
  334. package/server/{typed-errors-2BTMxkZq.js → typed-errors-DyjseiB6.js} +1 -1
  335. package/server/{types-hraoaQIp.js → types-Cm5ASJbq.js} +1 -1
  336. package/server/{types-q67TYYg5.js → types-Di8wdakq.js} +1 -1
  337. package/server/{uat-promote-verification-CKB9ZrKC.js → uat-promote-verification-CoJuh7XO.js} +5 -5
  338. package/server/{uat-train-D5UjcyAa.js → uat-train-4Q0k06CQ.js} +0 -0
  339. package/server/{uat-train-Cu-4nvbf.js → uat-train-Dewoatps.js} +1 -1
  340. package/server/{validate-Cxsx5Uz1.js → validate-B0C8p66t.js} +3 -3
  341. package/server/{validation-VZgJxmqc.js → validation-B_kIRfNe.js} +4 -4
  342. package/server/{validation-DEaTZafj.js → validation-hVOwQk8T.js} +1 -1
  343. package/server/{verification-artifact-C85cRTc_.js → verification-artifact-BxlxTiYK.js} +1 -1
  344. package/server/{verification-artifact-g3yuxQDL.js → verification-artifact-D70AtckY.js} +1 -1
  345. package/server/{verification-runner-DlZI8yhw.js → verification-runner-Bc3cJvpC.js} +1 -1
  346. package/server/{verification-runner-KDZIsBj4.js → verification-runner-KZTz6u72.js} +19 -19
  347. package/server/{vtt-parser-Jr94BF3Y.js → vtt-parser-CE_i3Bcw.js} +1 -1
  348. package/server/{work-agent-prompt-C-vuP3_J.js → work-agent-prompt-ByrPAzOy.js} +9 -9
  349. package/server/{workflows-D0oip4eV.js → workflows-D0vP1WrK.js} +113 -43
  350. package/server/workflows-DtDX08ed.js +2 -0
  351. package/server/{workspace-BqFg__wH.js → workspace-COWvdibH.js} +1 -1
  352. package/server/{workspace-C0fH3aek.js → workspace-DQkRPLlQ.js} +3 -3
  353. package/server/{workspace-anchor-drift-CZKofakh.js → workspace-anchor-drift-DXYIAHzr.js} +4 -4
  354. package/server/{workspace-anchor-drift-B4gMRHl4.js → workspace-anchor-drift-pwz23TI1.js} +1 -1
  355. package/server/{workspace-config-B123aZl-.js → workspace-config-BdZM4PvZ.js} +1 -1
  356. package/server/{workspace-manager-CwO-Hek7.js → workspace-manager-BPgTrG66.js} +13 -13
  357. package/server/{workspace-manager-CDTKjjdU.js → workspace-manager-C1F3XsnS.js} +1 -1
  358. package/server/{workspace-metadata-D4M8BM4W.js → workspace-metadata-CdjzAP8x.js} +1 -1
  359. package/server/{workspace-metadata-CQv00QwK.js → workspace-metadata-DkO_iTLo.js} +2 -2
  360. package/server/{workspaces-j1e_6aAT.js → workspaces-CRBJikLp.js} +136 -113
  361. package/sync-sources/skills/pan-merge/SKILL.md +7 -5
  362. package/sync-sources/skills/pan-release/SKILL.md +57 -0
  363. package/server/agent-state-service-hZpxIw1E.js +0 -2
  364. package/server/archive-planning-0FJ6Xd3b.js +0 -2
  365. package/server/cli-DmXETsw-.js +0 -3
  366. package/server/conflict-gate-Dh754uyA.js +0 -3
  367. package/server/deacon-swarm-I2JfX5Tg.js +0 -2
  368. package/server/dist-DSlxIU1H.js +0 -3
  369. package/server/durable-review-pipeline-jpgCJZFp.js +0 -3
  370. package/server/forge-DK3blQb_.js +0 -3
  371. package/server/hume-Dq--7rOQ.js +0 -3
  372. package/server/inspect-agent-BVwDrVrz.js +0 -2
  373. package/server/label-reconciler--F85rufp.js +0 -113
  374. package/server/merge-ops-DdpTiEMt.js +0 -2
  375. package/server/merge-rebase-DGQpYJU3.js +0 -2
  376. package/server/merge-sync-Ca7F5JnQ.js +0 -3
  377. package/server/public/assets/index-Cc7cnFC4.css +0 -1
  378. package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +0 -1
  379. package/server/rally-YDjU513q.js +0 -3
  380. package/server/resume-u9byntrq.js +0 -3
  381. package/server/review-status-BZH8h-6W.js +0 -3
  382. package/server/settings-CdvIF84R.js +0 -2
  383. package/server/spawn-planning-session-1nFi3gfk.js +0 -2
  384. package/server/specs-Bt7WJDoC.js +0 -3
  385. package/server/supervisor-UWiQNK-y.js +0 -2
  386. package/server/token-util-zlz9U0ki.js +0 -3
  387. package/server/workflows-CHrx_hcW.js +0 -2
@@ -1,37 +1,193 @@
1
- import { Gn as init_projects, Jn as listProjects, ar as resolveProjectFromIssueSync } from "./config-yaml-CmOPzmBb.js";
1
+ import { a as __toCommonJS } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { Gn as init_projects, Jn as listProjects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
2
3
  import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
3
- import { M as listSessionNames, w as init_tmux } from "./tmux-B1Wbxz5o.js";
4
- import { f as init_review_status, u as getReviewStatusSync } from "./review-status-yljtTd-q.js";
5
- import { b as init_agents, tr as getAgentState } from "./queries-DHJm7bTd.js";
6
- import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-L0FKtjq2.js";
7
- import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DvMTQSOS.js";
8
- import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-CTdOWYMi.js";
9
- import { d as readPlanSync, i as findPlanSync, o as init_io } from "./io-VHvc0Ssp.js";
10
- import { i as loadCloisterConfig, r as init_config } from "./config-B2IMcBxx.js";
11
- import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CQ1Lo6LA.js";
12
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-B6KJkmHZ.js";
4
+ import { M as listSessionNames, w as init_tmux } from "./tmux-CfDHob9M.js";
5
+ import { d as getReviewStatusSync, p as init_review_status } from "./review-status-CGvlA4o_.js";
6
+ import { b as init_agents, tr as getAgentState } from "./queries-C-MUZaIy.js";
7
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
8
+ import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-C6ZduvuY.js";
9
+ import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DzK385vD.js";
10
+ import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-B4Xdb4cY.js";
11
+ import { S as init_specs, d as readPlanSync, i as findPlanSync, o as init_io, x as findSpecByIssue } from "./io-B00PBNku.js";
12
+ import { a as readAutoSpawnOnFinalizeFlagAsync } from "./auto-spawn-consent-CQ9Bi9q6.js";
13
+ import { c as init_control_settings, f as isFlywheelAutoPickupBacklog } from "./control-settings-CiqGxXnc.js";
14
+ import { i as loadCloisterConfig, r as init_config } from "./config-Bi3u1VK7.js";
15
+ import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CmNk0zLU.js";
16
+ import { h as init_pickup, r as LEGACY_PARKED_LABELS } from "./pickup-DWhqzliO.js";
17
+ import { r as activeOrderBookIssues } from "./flywheel-BHx8XuMr.js";
18
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BehTG1be.js";
19
+ import { t as recordDeadEndNeedsYou } from "./dead-end-trip-D8A3msX9.js";
20
+ import "./spawn-planning-session-pcF-YeFE.js";
13
21
  import { Effect } from "effect";
14
22
  import { existsSync, readdirSync } from "fs";
15
23
  import { join } from "path";
16
24
  import { readFile, readdir } from "fs/promises";
17
25
  import { exec } from "child_process";
18
26
  import { promisify } from "util";
19
- //#region ../../lib/cloister/orphan-proposed-reconciler.ts
20
- init_agents();
27
+ //#region ../../lib/cloister/autonomous-work-dispatch.ts
21
28
  init_activity_logger();
29
+ init_tmux();
30
+ init_tracker_utils();
22
31
  init_internal_token();
23
- init_projects();
32
+ init_lifecycle();
24
33
  init_review_status();
25
- init_tmux();
26
34
  init_io();
27
- init_lifecycle();
35
+ init_agents();
28
36
  init_github_app();
29
- init_tracker_utils();
37
+ init_pickup();
38
+ init_control_settings();
39
+ init_specs();
40
+ init_projects();
41
+ const RELEASE_CONTEXT_CACHE_MS = 5e3;
42
+ let autoPickupCache = null;
43
+ const activeBookCache = /* @__PURE__ */ new Map();
44
+ function getSharedIssues() {
45
+ const { getSharedIssueService } = (init_issue_service_singleton(), __toCommonJS(issue_service_singleton_exports));
46
+ return getSharedIssueService().getIssues();
47
+ }
48
+ async function defaultFindPlannedState(projectRoot, issueId) {
49
+ const entry = await Effect.runPromise(findSpecByIssue(projectRoot, issueId).pipe(Effect.catch(() => Effect.succeed(null))));
50
+ if (!entry) return null;
51
+ return {
52
+ status: entry.status,
53
+ itemCount: Array.isArray(entry.document.plan?.items) ? entry.document.plan.items.length : 0
54
+ };
55
+ }
56
+ function isPlannedState(state) {
57
+ return state !== null && (state.status === "proposed" || state.status === "active") && state.itemCount > 0;
58
+ }
59
+ async function cachedAutoPickup(deps, now) {
60
+ if (deps.isAutoPickupBacklog) return deps.isAutoPickupBacklog();
61
+ if (autoPickupCache && autoPickupCache.expiresAt > now) return autoPickupCache.value;
62
+ const value = isFlywheelAutoPickupBacklog();
63
+ autoPickupCache = {
64
+ value,
65
+ expiresAt: now + RELEASE_CONTEXT_CACHE_MS
66
+ };
67
+ return value;
68
+ }
69
+ async function cachedActiveBookIssues(projectRoot, deps, now) {
70
+ if (deps.activeBookIssues) return deps.activeBookIssues(projectRoot);
71
+ const cached = activeBookCache.get(projectRoot);
72
+ if (cached && cached.expiresAt > now) return cached.value;
73
+ const value = await activeOrderBookIssues(projectRoot);
74
+ activeBookCache.set(projectRoot, {
75
+ value,
76
+ expiresAt: now + RELEASE_CONTEXT_CACHE_MS
77
+ });
78
+ return value;
79
+ }
80
+ function emptyInput(labels, planned = false) {
81
+ return {
82
+ labels,
83
+ planned,
84
+ autoPickupBacklog: false,
85
+ activeBookMember: false,
86
+ autoSpawnOnFinalizeConsent: false
87
+ };
88
+ }
89
+ async function gatherAutonomousWorkDispatchInput(issueId, deps = {}) {
90
+ const normalizedIssueId = issueId.trim().toUpperCase();
91
+ let labels = null;
92
+ try {
93
+ const issue = (deps.getIssues ?? getSharedIssues)().find((candidate) => typeof candidate["identifier"] === "string" && candidate["identifier"].toUpperCase() === normalizedIssueId);
94
+ if (issue) labels = (Array.isArray(issue["labels"]) ? issue["labels"] : []).map((label) => typeof label === "string" ? label : label?.name ?? "").filter((label) => Boolean(label));
95
+ } catch {}
96
+ const labelDecision = decideAutonomousWorkDispatch({ ...emptyInput(labels, true) });
97
+ if (!labelDecision.allow && labelDecision.code !== "not-released") return emptyInput(labels);
98
+ let project = null;
99
+ let planned = deps.knownPlanned === true;
100
+ if (!planned) try {
101
+ project = (deps.resolveProject ?? resolveProjectFromIssueSync)(normalizedIssueId);
102
+ planned = Boolean(project && isPlannedState(await (deps.findPlannedState ?? defaultFindPlannedState)(project.projectPath, normalizedIssueId)));
103
+ } catch {
104
+ planned = false;
105
+ }
106
+ if (!planned) return emptyInput(labels);
107
+ if (new Set(labels?.map((label) => label.toLowerCase())).has("released")) return emptyInput(labels, true);
108
+ if (!project) try {
109
+ project = (deps.resolveProject ?? resolveProjectFromIssueSync)(normalizedIssueId);
110
+ } catch {
111
+ project = null;
112
+ }
113
+ const now = (deps.now ?? Date.now)();
114
+ const [autoPickupBacklog, activeIssues, autoSpawnOnFinalizeConsent] = await Promise.all([
115
+ cachedAutoPickup(deps, now).catch(() => false),
116
+ project ? cachedActiveBookIssues(project.projectPath, deps, now).catch(() => /* @__PURE__ */ new Set()) : /* @__PURE__ */ new Set(),
117
+ Promise.resolve((deps.readAutoSpawnConsent ?? readAutoSpawnOnFinalizeFlagAsync)(normalizedIssueId)).catch(() => false)
118
+ ]);
119
+ return {
120
+ labels,
121
+ planned: true,
122
+ autoPickupBacklog,
123
+ activeBookMember: activeIssues.has(normalizedIssueId),
124
+ autoSpawnOnFinalizeConsent
125
+ };
126
+ }
127
+ function decideAutonomousWorkDispatch(input) {
128
+ if (input.labels === null) return {
129
+ allow: false,
130
+ code: "labels-unavailable",
131
+ reason: "Autonomous work dispatch was refused because tracker labels are unavailable, so ready, released, parked, vetoed, objection, and epic state cannot be verified. Restore label access or run pan start manually."
132
+ };
133
+ const labels = new Set(input.labels.map((label) => label.toLowerCase()));
134
+ const hasLabel = (label) => labels.has(label);
135
+ if (hasLabel("parked") || LEGACY_PARKED_LABELS.some(hasLabel)) return {
136
+ allow: false,
137
+ code: "parked",
138
+ reason: "Autonomous work dispatch was refused because the issue is parked. Remove the parked label before allowing autonomous work, or run pan start manually."
139
+ };
140
+ if (hasLabel("vetoed")) return {
141
+ allow: false,
142
+ code: "vetoed",
143
+ reason: "Autonomous work dispatch was refused because the issue is vetoed. Remove the veto before allowing autonomous work, or run pan start manually."
144
+ };
145
+ if (hasLabel("objection")) return {
146
+ allow: false,
147
+ code: "objection",
148
+ reason: "Autonomous work dispatch was refused because the issue has an open objection. Resolve the objection before allowing autonomous work, or run pan start manually."
149
+ };
150
+ if (hasLabel("epic")) return {
151
+ allow: false,
152
+ code: "epic",
153
+ reason: "Autonomous work dispatch was refused because the issue is an epic container. Start one of its child issues instead."
154
+ };
155
+ if (!hasLabel("ready")) return {
156
+ allow: false,
157
+ code: "not-ready",
158
+ reason: "Autonomous work dispatch was refused because the issue is not ready. Add the ready label before allowing autonomous work, or run pan start manually."
159
+ };
160
+ if (!input.planned) return {
161
+ allow: false,
162
+ code: "not-planned",
163
+ reason: "Autonomous work dispatch was refused because no active implementation plan with work items is available. Complete planning or run pan start manually."
164
+ };
165
+ const releaseSource = hasLabel("released") ? "released-label" : input.autoPickupBacklog ? "auto-pickup" : input.activeBookMember ? "active-order-book" : input.autoSpawnOnFinalizeConsent ? "planning-consent" : null;
166
+ if (!releaseSource) return {
167
+ allow: false,
168
+ code: "not-released",
169
+ reason: "Autonomous work dispatch was refused because the issue is not released and no release override applies. Add the released label, enable auto-pickup, include the issue in the active order book, or launch planning with auto-start; alternatively, run pan start manually."
170
+ };
171
+ return {
172
+ allow: true,
173
+ releaseSource
174
+ };
175
+ }
176
+ //#endregion
177
+ //#region ../../lib/cloister/orphan-proposed-reconciler.ts
178
+ /**
179
+ * Reconciles proposed specs only after the shared autonomous-work pickup gate
180
+ * passes; explicit planning auto-start consent is a release source, not a bypass
181
+ * for readiness, tracker-label availability, or blocker labels.
182
+ */
183
+ init_projects();
30
184
  init_config();
31
185
  init_issue_closed();
32
186
  const DEFAULT_ATTEMPT_INTERVAL_MS = 300 * 1e3;
187
+ const MAX_PICKUP_REFUSAL_REASONS = 512;
33
188
  const execAsync = promisify(exec);
34
189
  const attemptCooldowns = /* @__PURE__ */ new Map();
190
+ const pickupRefusalReasons = /* @__PURE__ */ new Map();
35
191
  const terminalClosedIssueIds = /* @__PURE__ */ new Set();
36
192
  let scanInFlight = false;
37
193
  function hasReviewPipelinePresence(status) {
@@ -175,7 +331,7 @@ function classifySpawnSkip(status, body) {
175
331
  if (status === 422 && /already closed|closed issue|cannot start an agent for a closed issue/i.test(error)) return "closed-issue";
176
332
  return "spawn-failed";
177
333
  }
178
- async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = internalDashboardOrigin()) {
334
+ async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = internalDashboardOrigin(), autoSpawnConsentRequired = false) {
179
335
  const internalToken = getInternalTokenSync();
180
336
  const response = await fetch(new URL("/api/agents", dashboardOrigin), {
181
337
  method: "POST",
@@ -186,13 +342,16 @@ async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = in
186
342
  },
187
343
  body: JSON.stringify({
188
344
  issueId,
189
- role: "work"
345
+ role: "work",
346
+ startedBy: "orphan-proposed-reconciler",
347
+ autoSpawnConsentRequired
190
348
  })
191
349
  });
192
350
  const body = await response.json().catch(() => ({}));
193
351
  const agentId = typeof body["agentId"] === "string" ? body["agentId"] : `agent-${issueId.toLowerCase()}`;
194
352
  if (response.ok && body["success"] !== false) return {
195
353
  spawned: true,
354
+ ...body["startingContainers"] === true ? { queued: true } : {},
196
355
  agentId
197
356
  };
198
357
  return {
@@ -217,7 +376,8 @@ async function triggerRebuildAndStart(issueId, dashboardOrigin = internalDashboa
217
376
  "content-type": "application/json",
218
377
  origin: dashboardOrigin,
219
378
  ...internalToken ? { [INTERNAL_TOKEN_HEADER]: internalToken } : {}
220
- }
379
+ },
380
+ body: JSON.stringify({ startedBy: "workspace-rebuild-recovery" })
221
381
  });
222
382
  const body = await response.json().catch(() => ({}));
223
383
  if (response.ok && body["success"] !== false) return { triggered: true };
@@ -255,10 +415,30 @@ function emitReconcilerActivity(level, message, details = {}, issueId = "ALL") {
255
415
  function logReconcilerDiagnostic(kind, info = {}) {
256
416
  console.debug(`[orphan-proposed-reconciler] ${kind}`, info);
257
417
  }
418
+ async function recordPickupRefusal(issueId, now, decision) {
419
+ const reason = `pickup-gate:${decision.code}`;
420
+ logReconcilerDiagnostic("spawn-skipped", {
421
+ issueId,
422
+ reason
423
+ });
424
+ attemptCooldowns.set(issueId, now);
425
+ if (pickupRefusalReasons.get(issueId) !== decision.reason) {
426
+ if (!pickupRefusalReasons.has(issueId) && pickupRefusalReasons.size >= MAX_PICKUP_REFUSAL_REASONS) {
427
+ const oldestIssueId = pickupRefusalReasons.keys().next().value;
428
+ if (oldestIssueId) pickupRefusalReasons.delete(oldestIssueId);
429
+ }
430
+ pickupRefusalReasons.set(issueId, decision.reason);
431
+ await recordDeadEndNeedsYou(issueId, "orphan-proposed-pickup-gate", "proposed", decision.reason);
432
+ }
433
+ return [`Skipped orphan proposed spec ${issueId}: ${reason}`];
434
+ }
435
+ async function defaultEvaluatePickupGate(issueId) {
436
+ return decideAutonomousWorkDispatch(await gatherAutonomousWorkDispatchInput(issueId, { knownPlanned: true }));
437
+ }
258
438
  /**
259
- * PAN-1908: reactive orphan-proposed handler. When a spec reaches `proposed`
260
- * and no work agent is running/starting, spawn a work agent for that issue
261
- * without scanning all project specs.
439
+ * PAN-1908: reactive orphan-proposed handler. When a spec reaches `proposed`,
440
+ * the autonomous-work pickup gate allows it, and no work agent is
441
+ * running/starting, spawn a work agent without scanning all project specs.
262
442
  */
263
443
  async function handleOrphanProposedSpec(issueId, options = {}) {
264
444
  const upperIssueId = issueId.trim().toUpperCase();
@@ -324,8 +504,20 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
324
504
  });
325
505
  return [];
326
506
  }
507
+ let pickupGate;
508
+ try {
509
+ pickupGate = await (options.evaluatePickupGate ?? defaultEvaluatePickupGate)(upperIssueId);
510
+ } catch (error) {
511
+ pickupGate = {
512
+ allow: false,
513
+ code: "labels-unavailable",
514
+ reason: `Autonomous work dispatch was refused because pickup evaluation failed: ${error instanceof Error ? error.message : String(error)}`
515
+ };
516
+ }
517
+ if (!pickupGate.allow) return recordPickupRefusal(upperIssueId, now, pickupGate);
518
+ pickupRefusalReasons.delete(upperIssueId);
327
519
  const agentId = `agent-${issueLower}`;
328
- const agentState = await Effect.runPromise(getAgentState(agentId).pipe(Effect.catch(() => Effect.succeed(null))));
520
+ const agentState = options.getAgentStateForIssue ? await options.getAgentStateForIssue(agentId) : await Effect.runPromise(getAgentState(agentId).pipe(Effect.catch(() => Effect.succeed(null))));
329
521
  if (agentState?.status === "starting" || agentState?.status === "running") {
330
522
  logReconcilerDiagnostic("spawn-skipped", {
331
523
  issueId: upperIssueId,
@@ -340,7 +532,7 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
340
532
  });
341
533
  return [];
342
534
  }
343
- if (hasIssueScopedSession(await Effect.runPromise(listSessionNames().pipe(Effect.catch(() => Effect.succeed([])))), agentId)) {
535
+ if (hasIssueScopedSession(options.tmuxSessionNames ?? await Effect.runPromise(listSessionNames().pipe(Effect.catch(() => Effect.succeed([])))), agentId)) {
344
536
  logReconcilerDiagnostic("spawn-skipped", {
345
537
  issueId: upperIssueId,
346
538
  reason: "issue-scoped-session"
@@ -394,15 +586,17 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
394
586
  }
395
587
  attemptCooldowns.set(upperIssueId, now);
396
588
  try {
397
- const spawn = await (options.spawnWorkAgent ?? ((id) => spawnWorkAgentThroughAgentsEndpoint(id, options.dashboardOrigin)))(upperIssueId);
589
+ const autoSpawnConsentRequired = pickupGate.releaseSource === "planning-consent";
590
+ const spawn = await (options.spawnWorkAgent ?? ((id, required) => spawnWorkAgentThroughAgentsEndpoint(id, options.dashboardOrigin, required)))(upperIssueId, autoSpawnConsentRequired);
398
591
  if (spawn.spawned) {
399
- emitReconcilerActivity("success", `Started work agent for ${upperIssueId} — proposed spec had tasks but no running agent`, {
592
+ emitReconcilerActivity("success", spawn.queued ? `Queued container startup for ${upperIssueId} before work-agent spawn` : `Started work agent for ${upperIssueId} — proposed spec had tasks but no running agent`, {
400
593
  issueId: upperIssueId,
401
594
  agentId: spawn.agentId,
595
+ queued: spawn.queued === true,
402
596
  projectKey,
403
597
  projectPath
404
598
  }, upperIssueId);
405
- return [`Spawned work agent for orphan proposed spec ${upperIssueId}`];
599
+ return [spawn.queued ? `Queued container startup for orphan proposed spec ${upperIssueId}` : `Spawned work agent for orphan proposed spec ${upperIssueId}`];
406
600
  }
407
601
  const reason = spawn.skippedReason ?? "spawn-failed";
408
602
  if (reason === "closed-issue") {
@@ -453,6 +647,8 @@ async function reconcileOrphanProposedSpecs(options = {}) {
453
647
  try {
454
648
  const actions = [];
455
649
  const candidates = await findOrphanProposedSpecsForReconciler(options);
650
+ const liveCandidateIds = new Set(candidates.map((candidate) => candidate.issueId));
651
+ for (const issueId of pickupRefusalReasons.keys()) if (!liveCandidateIds.has(issueId)) pickupRefusalReasons.delete(issueId);
456
652
  for (const candidate of candidates) {
457
653
  let planDoc;
458
654
  try {
@@ -467,6 +663,7 @@ async function reconcileOrphanProposedSpecs(options = {}) {
467
663
  const result = await handleOrphanProposedSpec(candidate.issueId, {
468
664
  spawnWorkAgent: options.spawnWorkAgent,
469
665
  hasOpenPrForBranch: options.hasOpenPrForBranch,
666
+ evaluatePickupGate: options.evaluatePickupGate,
470
667
  dashboardOrigin: options.dashboardOrigin,
471
668
  config: {
472
669
  enabled: true,
@@ -479,7 +676,9 @@ async function reconcileOrphanProposedSpecs(options = {}) {
479
676
  spec: {
480
677
  path: candidate.specPath,
481
678
  doc: planDoc
482
- }
679
+ },
680
+ tmuxSessionNames: options.tmuxSessionNames,
681
+ getAgentStateForIssue: options.getAgentStateForIssue
483
682
  });
484
683
  actions.push(...result);
485
684
  }
@@ -489,6 +688,6 @@ async function reconcileOrphanProposedSpecs(options = {}) {
489
688
  }
490
689
  }
491
690
  //#endregion
492
- export { spawnWorkAgentThroughAgentsEndpoint as a, reconcileOrphanProposedSpecs as i, handleOrphanProposedSpec as n, triggerRebuildAndStart as o, hasReviewPipelinePresence as r, findOrphanProposedSpecsForReconciler as t };
691
+ export { spawnWorkAgentThroughAgentsEndpoint as a, gatherAutonomousWorkDispatchInput as c, reconcileOrphanProposedSpecs as i, handleOrphanProposedSpec as n, triggerRebuildAndStart as o, hasReviewPipelinePresence as r, decideAutonomousWorkDispatch as s, findOrphanProposedSpecsForReconciler as t };
493
692
 
494
- //# sourceMappingURL=orphan-proposed-reconciler-Dg6U4ADZ.js.map
693
+ //# sourceMappingURL=orphan-proposed-reconciler-B6vJHxtX.js.map
@@ -1,2 +1,2 @@
1
- import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-Dg6U4ADZ.js";
1
+ import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-B6vJHxtX.js";
2
2
  export { handleOrphanProposedSpec };
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@overdeck/desktop-server",
3
- "version": "0.46.0",
3
+ "version": "0.47.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@overdeck/desktop-server",
9
- "version": "0.46.0",
9
+ "version": "0.47.0",
10
10
  "dependencies": {
11
11
  "@effect/platform-node": "4.0.0-beta.73",
12
12
  "@google-cloud/speech": "7.3.1",
@@ -446,9 +446,9 @@
446
446
  }
447
447
  },
448
448
  "node_modules/@types/node": {
449
- "version": "26.1.1",
450
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz",
451
- "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==",
449
+ "version": "26.1.2",
450
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
451
+ "integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
452
452
  "license": "MIT",
453
453
  "dependencies": {
454
454
  "undici-types": "~8.3.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overdeck/desktop-server",
3
- "version": "0.46.0",
3
+ "version": "0.47.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors, Tr as FsError, cn as flushAutoCommits, ln as init_auto_commit, un as queueAutoCommit } from "./config-yaml-CmOPzmBb.js";
3
- import { p as init_types } from "./types-hraoaQIp.js";
4
- import { F as getReadableWorkspacePanPaths, I as getWorkspacePanPaths, L as init_continue, M as getProjectPanPaths, N as ensureWorkspacePanDir, P as getLegacyWorkspacePanPaths, S as init_specs, b as ensurePanDirs } from "./io-VHvc0Ssp.js";
2
+ import { Fr as init_errors, Tr as FsError, cn as flushAutoCommits, ln as init_auto_commit, un as queueAutoCommit } from "./config-yaml-CxdwhAIA.js";
3
+ import { p as init_types } from "./types-Cm5ASJbq.js";
4
+ import { F as getReadableWorkspacePanPaths, I as getWorkspacePanPaths, L as init_continue, M as getProjectPanPaths, N as ensureWorkspacePanDir, P as getLegacyWorkspacePanPaths, S as init_specs, b as ensurePanDirs } from "./io-B00PBNku.js";
5
5
  import { Effect, FileSystem } from "effect";
6
6
  import { join } from "path";
7
7
  import { existsSync, readFileSync, rmSync } from "node:fs";
@@ -291,4 +291,4 @@ var init_pan_dir = __esmMin((() => {
291
291
  //#endregion
292
292
  export { getDraftPath as a, clearFeedback as c, checkPrdGateSync as i, readFeedback as l, readWorkspaceContext as n, getIssueDraftPath as o, writeWorkspaceContext as r, promoteWorkspacePrdDraft as s, init_pan_dir as t, writeFeedback as u };
293
293
 
294
- //# sourceMappingURL=pan-dir-ubraCiUg.js.map
294
+ //# sourceMappingURL=pan-dir-DMzF5wne.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ci as init_paths$1, si as getOverdeckHome } from "./config-yaml-CmOPzmBb.js";
2
+ import { ci as getOverdeckHome, li as init_paths$1 } from "./config-yaml-CxdwhAIA.js";
3
3
  import { dirname, isAbsolute, join, relative, resolve } from "path";
4
4
  import { mkdir } from "fs/promises";
5
5
  //#region ../../lib/memory/paths.ts
@@ -62,4 +62,4 @@ var init_paths = __esmMin((() => {
62
62
  //#endregion
63
63
  export { resolveArchiveDir as a, resolveMemoryRoot as c, resolveRagRunsFile as d, resolveStatusFile as f, init_paths as i, resolveObservationsFile as l, ensureDir as n, resolveFtsDbPath as o, resolveSummariesDir as p, ensureParentDir as r, resolveIssueMemoryRoot as s, assertMemorySafeSegment as t, resolvePendingDir as u };
64
64
 
65
- //# sourceMappingURL=paths-cXmOwSbh.js.map
65
+ //# sourceMappingURL=paths-sJBSb7Ul.js.map
@@ -1,4 +1,4 @@
1
- import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-CpvJnvnQ.js";
1
+ import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-DIk1JSow.js";
2
2
  import { basename, dirname, join } from "node:path";
3
3
  import { readFile, readdir, rename, unlink } from "node:fs/promises";
4
4
  import { randomUUID } from "node:crypto";
@@ -107,4 +107,4 @@ async function settlePendingLifecycleClaim(claim, issueId, succeeded) {
107
107
  //#endregion
108
108
  export { settlePendingLifecycleClaim as n, claimPendingLifecycleFile as t };
109
109
 
110
- //# sourceMappingURL=pending-lifecycle-claim-DEteYdS9.js.map
110
+ //# sourceMappingURL=pending-lifecycle-claim-DilzGfgk.js.map
@@ -0,0 +1,57 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
3
+ import "effect";
4
+ import { appendFileSync, mkdirSync } from "fs";
5
+ import { join } from "path";
6
+ import "fs/promises";
7
+ //#region ../../lib/persistent-logger.ts
8
+ /**
9
+ * Append-only persistent logger for forensic audit trails.
10
+ *
11
+ * Complements the SQLite event store (activity-logger.ts) with flat-file logs
12
+ * that survive event-store resets and are greppable from the shell.
13
+ *
14
+ * Files:
15
+ * ~/.overdeck/logs/deacon.log — deacon startup recovery actions
16
+ * ~/.overdeck/agents/<id>/lifecycle.log — per-agent state transitions
17
+ */
18
+ function logsDir() {
19
+ return join(getOverdeckHome(), "logs");
20
+ }
21
+ function agentDir(agentId) {
22
+ return join(getOverdeckHome(), "agents", agentId);
23
+ }
24
+ function ensureLogsDir() {
25
+ try {
26
+ mkdirSync(logsDir(), { recursive: true });
27
+ } catch {}
28
+ }
29
+ function ensureAgentDir(agentId) {
30
+ try {
31
+ mkdirSync(agentDir(agentId), { recursive: true });
32
+ } catch {}
33
+ }
34
+ function timestamp() {
35
+ return (/* @__PURE__ */ new Date()).toISOString();
36
+ }
37
+ /** Append a line to ~/.overdeck/logs/deacon.log */
38
+ function logDeaconEventSync(message) {
39
+ ensureLogsDir();
40
+ try {
41
+ appendFileSync(join(logsDir(), "deacon.log"), `[${timestamp()}] ${message}\n`);
42
+ } catch {}
43
+ }
44
+ /** Append a line to ~/.overdeck/agents/<agentId>/lifecycle.log */
45
+ function logAgentLifecycleSync(agentId, message) {
46
+ ensureAgentDir(agentId);
47
+ try {
48
+ appendFileSync(join(agentDir(agentId), "lifecycle.log"), `[${timestamp()}] ${message}\n`);
49
+ } catch {}
50
+ }
51
+ var init_persistent_logger = __esmMin((() => {
52
+ init_paths();
53
+ }));
54
+ //#endregion
55
+ export { logAgentLifecycleSync as n, logDeaconEventSync as r, init_persistent_logger as t };
56
+
57
+ //# sourceMappingURL=persistent-logger-H_VjuOu7.js.map
@@ -166,10 +166,11 @@ function computeEpicGroups(nodes, edges, lk) {
166
166
  }))
167
167
  };
168
168
  }
169
- var READY_LABEL, PARKED_LABEL, VETOED_LABEL, BLOCKS_MAIN_LABEL, RELEASED_LABEL, OBJECTION_LABEL, LEGACY_PARKED_LABELS, EFFORT_UNITS;
169
+ var READY_LABEL, PARKED_LABEL, EPIC_LABEL, VETOED_LABEL, BLOCKS_MAIN_LABEL, RELEASED_LABEL, OBJECTION_LABEL, LEGACY_PARKED_LABELS, EFFORT_UNITS;
170
170
  var init_pickup = __esmMin((() => {
171
171
  READY_LABEL = "ready";
172
172
  PARKED_LABEL = "parked";
173
+ EPIC_LABEL = "epic";
173
174
  VETOED_LABEL = "vetoed";
174
175
  BLOCKS_MAIN_LABEL = "blocks-main";
175
176
  RELEASED_LABEL = "released";
@@ -184,6 +185,6 @@ var init_pickup = __esmMin((() => {
184
185
  };
185
186
  }));
186
187
  //#endregion
187
- export { selectNeedsPlanning as _, READY_LABEL as a, classifyIssue as c, computeLanes as d, computeStats as f, normalizeGate as g, isAutoPickable as h, PARKED_LABEL as i, computeCohort as l, init_pickup as m, LEGACY_PARKED_LABELS as n, RELEASED_LABEL as o, computeWaves as p, OBJECTION_LABEL as r, VETOED_LABEL as s, BLOCKS_MAIN_LABEL as t, computeEpicGroups as u };
188
+ export { normalizeGate as _, PARKED_LABEL as a, VETOED_LABEL as c, computeEpicGroups as d, computeLanes as f, isAutoPickable as g, init_pickup as h, OBJECTION_LABEL as i, classifyIssue as l, computeWaves as m, EPIC_LABEL as n, READY_LABEL as o, computeStats as p, LEGACY_PARKED_LABELS as r, RELEASED_LABEL as s, BLOCKS_MAIN_LABEL as t, computeCohort as u, selectNeedsPlanning as v };
188
189
 
189
- //# sourceMappingURL=pickup-D8xtG1J2.js.map
190
+ //# sourceMappingURL=pickup-DWhqzliO.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_pipeline_membership, r as resolvePipelineMembership, t as PLANNED_BACKLOG_SPEC_ONLY_REASON } from "./pipeline-membership-CrAPLYtf.js";
1
+ import { n as init_pipeline_membership, r as resolvePipelineMembership, t as PLANNED_BACKLOG_SPEC_ONLY_REASON } from "./pipeline-membership-D9SBvItj.js";
2
2
  init_pipeline_membership();
3
3
  export { PLANNED_BACKLOG_SPEC_ONLY_REASON, resolvePipelineMembership };
@@ -54,4 +54,4 @@ var init_pipeline_membership = __esmMin((() => {
54
54
  //#endregion
55
55
  export { init_pipeline_membership as n, resolvePipelineMembership as r, PLANNED_BACKLOG_SPEC_ONLY_REASON as t };
56
56
 
57
- //# sourceMappingURL=pipeline-membership-CrAPLYtf.js.map
57
+ //# sourceMappingURL=pipeline-membership-D9SBvItj.js.map
@@ -1,3 +1,3 @@
1
- import { a as gatherProjectLensSignals, c as listIssueStatesBatched, d as mapPipelineProjects, f as projectRepositories, i as gatherIssueBranchContainment, l as listMergedPullRequestHeadsBatched, m as snapshotBranchRefs, n as PipelineMembershipUnavailableError, o as gatherProjectLensSignalsForProjects, p as resolveRepositoryDefaultBranch, r as classifyBranchRefLine, s as init_pipeline_membership_gather, t as PIPELINE_PROJECT_CONCURRENCY, u as listOpenPullRequestsSnapshot } from "./pipeline-membership-gather-CET40frr.js";
1
+ import { a as gatherProjectLensSignals, c as listIssueStatesBatched, d as mapPipelineProjects, f as projectRepositories, i as gatherIssueBranchContainment, l as listMergedPullRequestHeadsBatched, m as snapshotBranchRefs, n as PipelineMembershipUnavailableError, o as gatherProjectLensSignalsForProjects, p as resolveRepositoryDefaultBranch, r as classifyBranchRefLine, s as init_pipeline_membership_gather, t as PIPELINE_PROJECT_CONCURRENCY, u as listOpenPullRequestsSnapshot } from "./pipeline-membership-gather-CeVGnNJ2.js";
2
2
  init_pipeline_membership_gather();
3
3
  export { PIPELINE_PROJECT_CONCURRENCY, PipelineMembershipUnavailableError, classifyBranchRefLine, gatherIssueBranchContainment, gatherProjectLensSignals, gatherProjectLensSignalsForProjects, listIssueStatesBatched, listMergedPullRequestHeadsBatched, listOpenPullRequestsSnapshot, mapPipelineProjects, projectRepositories, resolveRepositoryDefaultBranch, snapshotBranchRefs };