@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,44 +1,45 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { B as getProviderEnvSync, C as TIERED_EXECUTION_DIFFICULTIES, Cr as ClaudeCredentialParseError, D as resolveTieredExecutionEnabled, Fr as init_errors, G as setupCredentialFileAuthSync, Gn as init_projects, H as init_providers, In as getIssuePrefix, Ir as AGENTS_DIR, K as ensureOpenAICompatibleProxyRunning, L as clearCredentialFileAuthSync, Mn as findProjectByPathSync, O as resolveTieredExecutionEnabledForIssue, Pt as init_record, R as getBuiltInDefaultHarness, Rn as getProjectSwarmHotspots, Rt as readIssueRecordForWorkspaceSync, S as DEFAULT_TIERED_EXECUTION_CONFIG, Sn as init_state_read_home, T as init_tier_table, Tr as FsError, Ut as writeAgentHarnessModelSync, V as getProviderForModelSync, Vt as resolveProjectForIssue, ar as resolveProjectFromIssueSync, ci as init_paths, di as resolveOhmypiExtensionPath, dt as fmix32, ei as encodeClaudeProjectDir, et as init_roles, f as loadConfigSync, fi as sessionFilePath, ft as fnv1a32, gr as init_issue_id, it as getModelCapabilitySync, l as isClaudeCodeChannelsMcpEnabled, li as isDevMode, lt as resolveModelIdSync, ot as hasModelCapabilitySync, pt as init_percent, q as init_openai_compatible_proxy, si as getOverdeckHome, st as init_model_capabilities, t as init_config_yaml, tt as resolveModel, u as isTldrEnabledSync, ui as packageRoot, ut as CLIPROXY_GPT56_CONTEXT_WINDOW, wn as shouldCommitLegacyWorkspaceArtifacts, xr as require_dist, yr as resolveBareNumericIdSync, zn as getProjectSync, zt as readIssueRecordSync } from "./config-yaml-CmOPzmBb.js";
2
+ import { B as getProviderEnvSync, C as TIERED_EXECUTION_DIFFICULTIES, Cr as ClaudeCredentialParseError, D as resolveTieredExecutionEnabled, Fr as init_errors, G as setupCredentialFileAuthSync, Gn as init_projects, H as init_providers, In as getIssuePrefix, Ir as AGENTS_DIR, K as ensureOpenAICompatibleProxyRunning, L as clearCredentialFileAuthSync, Mn as findProjectByPathSync, O as resolveTieredExecutionEnabledForIssue, Pt as init_record, R as getBuiltInDefaultHarness, Rn as getProjectSwarmHotspots, Rt as readIssueRecordForWorkspaceSync, S as DEFAULT_TIERED_EXECUTION_CONFIG, Sn as init_state_read_home, T as init_tier_table, Tr as FsError, Ut as writeAgentHarnessModelSync, V as getProviderForModelSync, Vt as resolveProjectForIssue, ar as resolveProjectFromIssueSync, ci as getOverdeckHome, di as packageRoot, dt as fmix32, ei as claudeSessionTranscriptExists, et as init_roles, f as loadConfigSync, fi as resolveOhmypiExtensionPath, ft as fnv1a32, gr as init_issue_id, it as getModelCapabilitySync, l as isClaudeCodeChannelsMcpEnabled, li as init_paths, lt as resolveModelIdSync, ot as hasModelCapabilitySync, pi as sessionFilePath, pt as init_percent, q as init_openai_compatible_proxy, st as init_model_capabilities, t as init_config_yaml, ti as encodeClaudeProjectDir, tt as resolveModel, u as isTldrEnabledSync, ui as isDevMode, ut as CLIPROXY_GPT56_CONTEXT_WINDOW, wn as shouldCommitLegacyWorkspaceArtifacts, xr as require_dist, yr as resolveBareNumericIdSync, zn as getProjectSync, zt as readIssueRecordSync } from "./config-yaml-CxdwhAIA.js";
3
3
  import { i as emitActivityTtsSync, o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BjuxvjdS.js";
5
- import { A as listPaneValues, D as killSession, E as isPaneDead, H as sessionExists, O as killSessionSync, P as listSessionsSync, Q as BLANKED_PROVIDER_ENV, R as sendEscapeKeyAsync, U as sessionExistsSync, V as sendRawKeystroke, W as setOption, a as capturePaneSync, c as createSessionSync, i as capturePane, m as exactPaneTarget, s as createSession, tt as init_child_env, w as init_tmux, z as sendKeys } from "./tmux-B1Wbxz5o.js";
6
- import { a as init_event_store, i as initEventStore } from "./event-store-zY5MJHgF.js";
7
- import { o as OHMYPI_BEHAVIOR, s as getHarnessBehavior } from "./src-CRmCHlma.js";
8
- import { F as init_pipeline_agent_reader, G as saveOverdeckAgentStateSync, H as getOverdeckAgentStateSync, I as registerPipelineTelemetryAgentReader, S as setReviewStatusSync, U as init_agent_state_sync, W as listOverdeckAgentStatesSync, f as init_review_status, u as getReviewStatusSync, v as resetPipelineVerdictsForWorkStartSync } from "./review-status-yljtTd-q.js";
9
- import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-C5rWYhb6.js";
10
- import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-DHmCSLar.js";
11
- import { o as getPricingSync, s as init_cost } from "./cost-Bgcub5kW.js";
12
- import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-Dv3LUaNW.js";
13
- import { a as persistCurrentSessionId, d as isAgentStateServiceInProcess, i as logLauncherSessionPinned, l as getRuntimeSnapshot, n as createFreshSessionIdentity, o as init_persistent_logger, r as init_session_history, s as logAgentLifecycleSync, u as init_agent_runtime_mirror } from "./session-history-BUyK29eq.js";
14
- import { t as init_behavior } from "./behavior-CfIg6pKp.js";
15
- import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DvMTQSOS.js";
16
- import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal } from "./review-status-source-CpvJnvnQ.js";
17
- import { m as readWorkspacePlanSync, o as init_io } from "./io-VHvc0Ssp.js";
18
- import { c as bridgeGeminiAuthToCliproxy, d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload$1, p as getCliproxyClientEnv, s as bridgeCodexAuthToCliproxySync, v as init_cliproxy } from "./cliproxy-C8mB3KuB.js";
19
- import { L as normalizeHarness, R as reactivateConversationForSpawn, S as getConversationByName, k as init_conversations, y as createConversation } from "./conversations-BUpYsOZg.js";
20
- import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population--YUXU999.js";
21
- import { a as readCavemanVariant, n as init_workspace } from "./workspace-C0fH3aek.js";
22
- import { _ as shellQuoteModelIdSync, d as generateLauncherScriptSync, f as init_launcher_generator, g as requireModelOverrideSync, h as normalizeModelOverrideSync, i as completeKeyedSubmit, l as init_tmux_dedup, m as init_model_validation, u as sendKeysDedup } from "./tmux-dedup-DbN6MGzM.js";
23
- import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-CN0cSCPp.js";
24
- import { E as init_layers, I as workspaceContextFile, P as resolveWorkspaceContextFile, c as init_render, i as workspaceContextWithoutProjectLayer, l as renderGlobalLayer, r as init_assemble, u as renderProjectLayer, v as init_harness, y as renderForHarness } from "./assemble-DnffNpOo.js";
25
- import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-Drlf5Xhf.js";
26
- import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-DqkftwTb.js";
27
- import { f as init_config, m as loadConfigSync$1 } from "./config-Dr3pW6w6.js";
28
- import { a as getFlywheelActiveRunIdSync, s as init_control_settings } from "./control-settings-C7DUehE1.js";
29
- import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-CRoOpGsF.js";
30
- import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-DqSqx0zv.js";
31
- import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-ombYYt4s.js";
32
- import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-BO3QT1sn.js";
33
- import { a as init_git_utils, c as rehydrateHeadAnchor, l as renderWorkspaceGitShowPromise } from "./git-utils-ameCgDdy.js";
34
- import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-CZKofakh.js";
35
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-CqMqM1Mb.js";
36
- import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-B2IMcBxx.js";
37
- import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-CvmwaqKv.js";
38
- import { c as isStateMigrated, o as init_state_home } from "./state-home-BYV7qZTW.js";
39
- import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-fvy4RD2b.js";
40
- import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-D-lGdzK3.js";
41
- import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-BV14DF5N.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BDQDRopn.js";
5
+ import { A as listPaneValues, D as killSession, E as isPaneDead, H as sessionExists, O as killSessionSync, P as listSessionsSync, R as sendEscapeKeyAsync, U as sessionExistsSync, V as sendRawKeystroke, W as setOption, a as capturePaneSync, c as createSessionSync, i as capturePane, m as exactPaneTarget, ot as init_child_env, rt as BLANKED_PROVIDER_ENV, s as createSession, w as init_tmux, z as sendKeys } from "./tmux-CfDHob9M.js";
6
+ import { a as init_event_store, i as initEventStore } from "./event-store-CrHcVC5_.js";
7
+ import { o as OHMYPI_BEHAVIOR, s as getHarnessBehavior } from "./src-B948bGVR.js";
8
+ import { C as setReviewStatusSync, I as init_pipeline_agent_reader, J as getOverdeckAgentStateSync, L as registerPipelineTelemetryAgentReader, X as listOverdeckAgentStatesSync, Y as init_agent_state_sync, Z as saveOverdeckAgentStateSync, d as getReviewStatusSync, p as init_review_status, y as resetPipelineVerdictsForWorkStartSync } from "./review-status-CGvlA4o_.js";
9
+ import { n as logAgentLifecycleSync, t as init_persistent_logger } from "./persistent-logger-H_VjuOu7.js";
10
+ import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-J5mEnekq.js";
11
+ import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-DRqZ8lAz.js";
12
+ import { o as getPricingSync, s as init_cost } from "./cost-DpgYmYqR.js";
13
+ import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-tOCCGnEt.js";
14
+ import { a as persistCurrentSessionId, c as isAgentStateServiceInProcess, i as logLauncherSessionPinned, n as createFreshSessionIdentity, o as getRuntimeSnapshot, r as init_session_history, s as init_agent_runtime_mirror } from "./session-history-3ON_IJjm.js";
15
+ import { t as init_behavior } from "./behavior-td6-xhQk.js";
16
+ import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DzK385vD.js";
17
+ import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal } from "./review-status-source-DIk1JSow.js";
18
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-B00PBNku.js";
19
+ import { c as bridgeGeminiAuthToCliproxy, d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload$1, p as getCliproxyClientEnv, s as bridgeCodexAuthToCliproxySync, v as init_cliproxy } from "./cliproxy-C5fMJ7rY.js";
20
+ import { L as normalizeHarness, R as reactivateConversationForSpawn, S as getConversationByName, k as init_conversations, y as createConversation } from "./conversations-D0UEdLtk.js";
21
+ import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-B6HpNWRy.js";
22
+ import { a as readCavemanVariant, n as init_workspace } from "./workspace-DQkRPLlQ.js";
23
+ import { C as init_launcher_generator, D as requireModelOverrideSync, E as normalizeModelOverrideSync, O as shellQuoteModelIdSync, S as generateLauncherScriptSync, T as init_model_validation, _ as init_tmux_dedup, b as isOperatorStartedBy, f as completeKeyedSubmit, i as init_auto_spawn_consent, s as withAutoSpawnConsentClaim, v as sendKeysDedup, x as normalizeFlywheelRunId, y as init_provenance } from "./auto-spawn-consent-CQ9Bi9q6.js";
24
+ import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-CpbpvUQ2.js";
25
+ import { E as init_layers, I as workspaceContextFile, P as resolveWorkspaceContextFile, c as init_render, i as workspaceContextWithoutProjectLayer, l as renderGlobalLayer, r as init_assemble, u as renderProjectLayer, v as init_harness, y as renderForHarness } from "./assemble-Bgwqv-Ro.js";
26
+ import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-BzGDW_d3.js";
27
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BSpiXaLw.js";
28
+ import { f as init_config, m as loadConfigSync$1 } from "./config-BvLe652W.js";
29
+ import { a as getFlywheelActiveRunIdSync, c as init_control_settings } from "./control-settings-CiqGxXnc.js";
30
+ import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-Cmm9Hsho.js";
31
+ import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-DqLTiEu4.js";
32
+ import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-BtkgLeqY.js";
33
+ import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-DbtbimEf.js";
34
+ import { a as init_git_utils, c as rehydrateHeadAnchor, l as renderWorkspaceGitShowPromise } from "./git-utils-CsvYfJU3.js";
35
+ import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-DXYIAHzr.js";
36
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-BAJu5MX8.js";
37
+ import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-Bi3u1VK7.js";
38
+ import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-Qf-9LVQc.js";
39
+ import { c as isStateMigrated, o as init_state_home } from "./state-home-722Dkx92.js";
40
+ import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-Bjitl9aI.js";
41
+ import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-DCo6s6ks.js";
42
+ import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-DfFxa9-n.js";
42
43
  import { createRequire } from "node:module";
43
44
  import { dirname, join, relative } from "node:path";
44
45
  import { Data, Duration, Effect, FileSystem } from "effect";
@@ -1310,6 +1311,12 @@ var init_pty_token = __esmMin((() => {
1310
1311
  PTY_TOKEN_HEADER = "x-overdeck-pty-token";
1311
1312
  }));
1312
1313
  //#endregion
1314
+ //#region ../../lib/resume-contract.ts
1315
+ function buildResumeContract(cause) {
1316
+ return `${cause === "operator" ? "The operator resumed this session after stopping or pausing it." : cause === "message" ? "This session was resumed because a new message arrived while it was stopped." : "This session was restored after its prior process ended unexpectedly, such as during a crash or reboot."} The conversation transcript was restored, but process-local machinery was not. Re-establish any timers or wakeups, monitors, background processes, loops, or cron work you still need before continuing. If this session runs a recurring tick loop, explicitly arm its next wakeup now.`;
1317
+ }
1318
+ var init_resume_contract = __esmMin((() => {}));
1319
+ //#endregion
1313
1320
  //#region ../../lib/cloister/auto-resume-config.ts
1314
1321
  function positiveNumber(value) {
1315
1322
  return typeof value === "number" && Number.isFinite(value) && value > 0;
@@ -1459,6 +1466,8 @@ function cleanAgentState(raw) {
1459
1466
  costSoFar: raw.costSoFar,
1460
1467
  sessionId: raw.sessionId,
1461
1468
  roleRunHead: raw.roleRunHead,
1469
+ flywheelRunId: raw.flywheelRunId,
1470
+ startedBy: raw.startedBy,
1462
1471
  channelsEnabled: raw.channelsEnabled,
1463
1472
  supervisorEnabled: raw.supervisorEnabled,
1464
1473
  deliveryMethod: raw.deliveryMethod,
@@ -1962,15 +1971,16 @@ function buildResumeContinueMessage(state) {
1962
1971
  ].join(" ");
1963
1972
  return buildDefaultResumeContinueMessage(issueId);
1964
1973
  }
1965
- async function buildResumeMessageForAgent(state, fallbackMessage, callerMessage) {
1974
+ async function buildResumeMessageForAgent(state, fallbackMessage, callerMessage, cause = state.stoppedByUser === true ? "operator" : callerMessage ? "message" : "system") {
1975
+ const contract = buildResumeContract(cause);
1966
1976
  if (state.role !== "work" || state.kickoffDelivered !== false) return {
1967
- message: callerMessage ?? fallbackMessage,
1977
+ message: `${callerMessage ?? fallbackMessage}\n\n${contract}`,
1968
1978
  redeliveringKickoff: false
1969
1979
  };
1970
1980
  const promptPath = join$1(getAgentDir(state.id), "initial-prompt.md");
1971
1981
  try {
1972
1982
  return {
1973
- message: `${await readFile$1(promptPath, "utf-8")}${callerMessage ? `\n\n---\n\nAdditional message delivered during resume:\n\n${callerMessage}` : ""}`,
1983
+ message: `${await readFile$1(promptPath, "utf-8")}${callerMessage ? `\n\n---\n\nAdditional message delivered during resume:\n\n${callerMessage}` : ""}\n\n${contract}`,
1974
1984
  redeliveringKickoff: true
1975
1985
  };
1976
1986
  } catch (err) {
@@ -2207,6 +2217,7 @@ var init_supervisor_channels = __esmMin((() => {
2207
2217
  init_pty_supervisor_locate();
2208
2218
  init_providers();
2209
2219
  init_pty_token();
2220
+ init_resume_contract();
2210
2221
  init_tmux();
2211
2222
  init_agent_state();
2212
2223
  }));
@@ -2863,7 +2874,7 @@ async function createOhmypiFifoPromise(agentId, home) {
2863
2874
  mode: 448
2864
2875
  });
2865
2876
  if (existsSync$1(paths.fifoPath)) unlinkSync$1(paths.fifoPath);
2866
- await execAsync$6(`mkfifo -m 600 ${shellQuote$1(paths.fifoPath)}`);
2877
+ await execAsync$7(`mkfifo -m 600 ${shellQuote$1(paths.fifoPath)}`);
2867
2878
  return paths.fifoPath;
2868
2879
  }
2869
2880
  /**
@@ -2905,10 +2916,10 @@ function shellQuote$1(s) {
2905
2916
  if (/^[A-Za-z0-9._/-]+$/.test(s)) return s;
2906
2917
  return `'${s.replace(/'/g, `'\\''`)}'`;
2907
2918
  }
2908
- var execAsync$6, OhmypiNotReady, OhmypiFifoError, createOhmypiFifo;
2919
+ var execAsync$7, OhmypiNotReady, OhmypiFifoError, createOhmypiFifo;
2909
2920
  var init_ohmypi_fifo = __esmMin((() => {
2910
2921
  init_paths();
2911
- execAsync$6 = promisify(exec);
2922
+ execAsync$7 = promisify(exec);
2912
2923
  OhmypiNotReady = class extends Error {
2913
2924
  code = "OHMYPI_NOT_READY";
2914
2925
  constructor(message) {
@@ -2990,12 +3001,12 @@ async function claudeSystemPromptFiles(workspace, harness) {
2990
3001
  }
2991
3002
  files.push(await ensureSessionContextBriefingFile());
2992
3003
  if (behavior.contextLayerKind === "pi") {
2993
- const { piGlobalContextFile } = await import("./context-layers-D6LZo3l1.js");
3004
+ const { piGlobalContextFile } = await import("./context-layers-DAG83UZt.js");
2994
3005
  const globalFile = piGlobalContextFile();
2995
3006
  if (existsSync(globalFile)) files.unshift(globalFile);
2996
3007
  }
2997
3008
  if (behavior.contextLayerKind === "codex") {
2998
- const { codexGlobalContextFile } = await import("./context-layers-D6LZo3l1.js");
3009
+ const { codexGlobalContextFile } = await import("./context-layers-DAG83UZt.js");
2999
3010
  const globalFile = codexGlobalContextFile();
3000
3011
  if (existsSync(globalFile)) files.unshift(globalFile);
3001
3012
  }
@@ -3022,14 +3033,14 @@ async function hasAgentRuntimeInSubtree(rootPid, harness = "claude-code") {
3022
3033
  if (seen.has(pid) || !/^\d+$/.test(pid)) continue;
3023
3034
  seen.add(pid);
3024
3035
  try {
3025
- const { stdout: comm } = await execAsync$4(`ps -p ${pid} -o comm=`);
3036
+ const { stdout: comm } = await execAsync$5(`ps -p ${pid} -o comm=`);
3026
3037
  const name = comm.trim();
3027
3038
  if (expectedProcessNames.has(name)) return true;
3028
3039
  } catch {
3029
3040
  continue;
3030
3041
  }
3031
3042
  try {
3032
- const { stdout: kids } = await execAsync$4(`pgrep -P ${pid}`);
3043
+ const { stdout: kids } = await execAsync$5(`pgrep -P ${pid}`);
3033
3044
  for (const kid of kids.trim().split("\n").filter(Boolean)) queue.push(kid);
3034
3045
  } catch {}
3035
3046
  }
@@ -3290,7 +3301,7 @@ async function injectPiPromptTimeMemory(agentId, prompt) {
3290
3301
  agentRole: agentState.role ?? "work",
3291
3302
  agentHarness: agentState.harness ?? "claude-code"
3292
3303
  };
3293
- const { injectPromptTimeMemory } = await import("./injection-DZxlV2al.js");
3304
+ const { injectPromptTimeMemory } = await import("./injection-Bl8d_jHZ.js");
3294
3305
  const result = await injectPromptTimeMemory({
3295
3306
  prompt,
3296
3307
  identity,
@@ -3324,7 +3335,7 @@ async function injectPiConversationMemory(opts, prompt) {
3324
3335
  agentRole: "work",
3325
3336
  agentHarness: "ohmypi"
3326
3337
  };
3327
- const { injectPromptTimeMemory } = await import("./injection-DZxlV2al.js");
3338
+ const { injectPromptTimeMemory } = await import("./injection-Bl8d_jHZ.js");
3328
3339
  const result = await injectPromptTimeMemory({
3329
3340
  prompt,
3330
3341
  identity,
@@ -3500,7 +3511,7 @@ async function getRoleRuntimeBaseCommand(model, agentName, role, harness = "clau
3500
3511
  if (provider.name === "openai" && await getProviderAuthMode(validatedModel) === "subscription") return `claude${printFlag}${roleInject}${permissionFlags} --model ${shellQuoteModelIdSync(CLI_PROXY_MODEL_ALIASES[validatedModel] ?? validatedModel)}${effortFlag}${nameFlag}`;
3501
3512
  return `claude${printFlag}${roleInject}${permissionFlags} --model ${quotedModel}${effortFlag}${nameFlag}`;
3502
3513
  }
3503
- var import_dist, execAsync$4, missingRoleDefinitionWarnings, OHMYPI_AGENT_READY_TIMEOUT_SECONDS;
3514
+ var import_dist, execAsync$5, missingRoleDefinitionWarnings, OHMYPI_AGENT_READY_TIMEOUT_SECONDS;
3504
3515
  var init_runtime_command = __esmMin((() => {
3505
3516
  import_dist = /* @__PURE__ */ __toESM(require_dist(), 1);
3506
3517
  init_claude_permissions();
@@ -3521,7 +3532,7 @@ var init_runtime_command = __esmMin((() => {
3521
3532
  init_agent_state();
3522
3533
  init_identity();
3523
3534
  init_provider_env();
3524
- execAsync$4 = promisify$1(exec$1);
3535
+ execAsync$5 = promisify$1(exec$1);
3525
3536
  missingRoleDefinitionWarnings = /* @__PURE__ */ new Set();
3526
3537
  OHMYPI_AGENT_READY_TIMEOUT_SECONDS = 120;
3527
3538
  }));
@@ -3671,11 +3682,6 @@ var init_staffing = __esmMin((() => {
3671
3682
  }));
3672
3683
  //#endregion
3673
3684
  //#region ../../lib/agents/spawn-prep.ts
3674
- function normalizeFlywheelRunId(runId) {
3675
- if (!runId) return void 0;
3676
- const trimmed = runId.trim();
3677
- return /^RUN-\d+$/.test(trimmed) ? trimmed : void 0;
3678
- }
3679
3685
  function resolveFlywheelSpawnEnv(role, runIdOverride) {
3680
3686
  const runId = normalizeFlywheelRunId(runIdOverride ?? getFlywheelActiveRunIdSync());
3681
3687
  return runId ? {
@@ -3683,6 +3689,11 @@ function resolveFlywheelSpawnEnv(role, runIdOverride) {
3683
3689
  OVERDECK_FLYWHEEL_AGENT_ROLE: role
3684
3690
  } : {};
3685
3691
  }
3692
+ function resolveAgentStartedBy(explicit, flywheelRunId, environmentToken = process.env["OVERDECK_AGENT_STARTED_BY"]) {
3693
+ const resolved = explicit?.trim() || environmentToken?.trim() || (flywheelRunId ? `flywheel:${flywheelRunId}` : "");
3694
+ if (!resolved) throw new Error("Agent spawn provenance is required: pass startedBy at the launch entry point.");
3695
+ return resolved;
3696
+ }
3686
3697
  function flywheelEnvExports(env) {
3687
3698
  return [env.OVERDECK_FLYWHEEL_RUN_ID ? `export OVERDECK_FLYWHEEL_RUN_ID=${env.OVERDECK_FLYWHEEL_RUN_ID}` : void 0, env.OVERDECK_FLYWHEEL_AGENT_ROLE ? `export OVERDECK_FLYWHEEL_AGENT_ROLE=${env.OVERDECK_FLYWHEEL_AGENT_ROLE}` : void 0].filter((value) => value !== void 0);
3688
3699
  }
@@ -3851,7 +3862,7 @@ async function transitionIssueToInReview(issueId, workspacePath) {
3851
3862
  async function buildAgentLaunchConfig(opts) {
3852
3863
  const model = requireModelOverrideSync(opts.model);
3853
3864
  try {
3854
- const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-Dabi9slj.js");
3865
+ const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-BzkHYDwR.js");
3855
3866
  await Effect.runPromise(injectOverdeckInfraDeny(opts.workspace));
3856
3867
  } catch (err) {
3857
3868
  console.warn(`[agents] injectOverdeckInfraDeny failed for ${opts.agentId} (non-fatal): ${err instanceof Error ? err.message : err}`);
@@ -3880,6 +3891,7 @@ async function buildAgentLaunchConfig(opts) {
3880
3891
  providerExports,
3881
3892
  baseCommand: behavior.launchCommandKind !== "claude-code" ? await getAgentRuntimeBaseCommand(model, opts.agentId, launchRole, opts.harness) : `claude ${getClaudePermissionFlagsStringSync()}${roleSystemPromptInjectionSync(roleAgentDefinitionPath(launchRole))}`,
3882
3893
  resumeSessionId: opts.resumeSessionId,
3894
+ overdeckEnv: { agentId: opts.agentId },
3883
3895
  model: behavior.launchCommandKind !== "claude-code" || providerExports?.includes("ANTHROPIC_BASE_URL") ? model : void 0,
3884
3896
  extraArgs: behavior.launchCommandKind !== "claude-code" ? void 0 : `--name ${opts.agentId}`,
3885
3897
  appendSystemPromptFiles: await claudeSystemPromptFiles(opts.workspace, opts.harness),
@@ -3905,6 +3917,7 @@ async function buildAgentLaunchConfig(opts) {
3905
3917
  providerExports,
3906
3918
  cavemanExports,
3907
3919
  baseCommand: await getAgentRuntimeBaseCommand(model, opts.agentId, agentDefinition, opts.harness ?? "claude-code", opts.effort),
3920
+ overdeckEnv: { agentId: opts.agentId },
3908
3921
  sessionId: behavior.sessionIdSource === "launcher-session-id" ? opts.sessionId : void 0,
3909
3922
  appendSystemPromptFiles: await claudeSystemPromptFiles(opts.workspace, opts.harness),
3910
3923
  extraEnvExports: opts.extraEnvExports,
@@ -3939,7 +3952,7 @@ async function retrieveSpawnTimeMemoryContext(input) {
3939
3952
  agentRole: input.role,
3940
3953
  agentHarness: input.harness
3941
3954
  };
3942
- const { injectPromptTimeMemory } = await import("./injection-DZxlV2al.js");
3955
+ const { injectPromptTimeMemory } = await import("./injection-Bl8d_jHZ.js");
3943
3956
  return (await injectPromptTimeMemory({
3944
3957
  prompt: input.prompt,
3945
3958
  identity,
@@ -4030,7 +4043,7 @@ async function assertWorkspaceStackHealthyForSpawn(issueId, role, allowHost = fa
4030
4043
  record.attempts += 1;
4031
4044
  spawnStackRebuildState.set(normalizedIssue, record);
4032
4045
  console.log(`[agents] Workspace stack for ${normalizedIssue} unhealthy (${details}) — rebuilding before spawn (attempt ${record.attempts}/${SPAWN_STACK_REBUILD_MAX_ATTEMPTS})`);
4033
- const { rebuildWorkspaceStack } = await import("./rebuild-stack-qeRqHZxH.js");
4046
+ const { rebuildWorkspaceStack } = await import("./rebuild-stack-DqcOVmJO.js");
4034
4047
  const result = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[agents] ${normalizedIssue} stack rebuild: ${m}`) })).catch((err) => ({
4035
4048
  success: false,
4036
4049
  error: err instanceof Error ? err.message : String(err)
@@ -4063,6 +4076,7 @@ var init_spawn_prep = __esmMin((() => {
4063
4076
  init_behavior();
4064
4077
  init_io();
4065
4078
  init_dag();
4079
+ init_provenance();
4066
4080
  init_staffing();
4067
4081
  init_tier_table();
4068
4082
  init_provider_env();
@@ -5298,7 +5312,7 @@ async function killLauncherProcessAsync(agentId) {
5298
5312
  const launcherPath = join$1(AGENTS_DIR, agentId, "launcher.sh");
5299
5313
  let pidsOut;
5300
5314
  try {
5301
- const { stdout } = await execAsync$3(`pgrep -f ${JSON.stringify(launcherPath)}`);
5315
+ const { stdout } = await execAsync$4(`pgrep -f ${JSON.stringify(launcherPath)}`);
5302
5316
  pidsOut = stdout.trim();
5303
5317
  } catch {
5304
5318
  return;
@@ -5348,14 +5362,14 @@ function stopAgentSync(agentId) {
5348
5362
  lastActivity: (/* @__PURE__ */ new Date()).toISOString()
5349
5363
  });
5350
5364
  }
5351
- var execAsync$3, stopAgent;
5365
+ var execAsync$4, stopAgent;
5352
5366
  var init_termination = __esmMin((() => {
5353
5367
  init_agents();
5354
5368
  init_agent_runtime();
5355
5369
  init_paths();
5356
5370
  init_tmux();
5357
5371
  init_errors();
5358
- execAsync$3 = promisify$1(exec$1);
5372
+ execAsync$4 = promisify$1(exec$1);
5359
5373
  stopAgent = (agentId) => {
5360
5374
  const normalizedId = normalizeAgentId(agentId);
5361
5375
  return Effect.gen(function* () {
@@ -5435,8 +5449,68 @@ var init_hook_readiness = __esmMin((() => {
5435
5449
  init_persistent_logger();
5436
5450
  }));
5437
5451
  //#endregion
5452
+ //#region ../../lib/agents/registered-slot-spawn.ts
5453
+ function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
5454
+ const doc = readWorkspacePlanSync(baseWorkspace);
5455
+ if (!doc) throw new Error(`Registered slot spawn for ${issueId} requires a readable xBRIEF plan in ${baseWorkspace}.`);
5456
+ const slice = createActiveSlice(doc, {
5457
+ issueId: issueId.toUpperCase(),
5458
+ itemId: slot.slotItemId,
5459
+ currentItemIds: [slot.slotItemId]
5460
+ });
5461
+ const lines = [
5462
+ `# Registered Slot Assignment: ${slot.slotItemId}`,
5463
+ "",
5464
+ `Issue: ${issueId}`,
5465
+ `Slot: ${slot.slotIndex}`,
5466
+ `Agent: ${slot.agentId}`,
5467
+ `Branch: ${slot.branch}`,
5468
+ `Workspace: ${slot.workspace}`,
5469
+ "",
5470
+ "You are a registered slot work agent. Implement only the target xBRIEF item below, keep changes scoped to that item, and do not merge this slot branch yourself.",
5471
+ "",
5472
+ slice.prompt
5473
+ ];
5474
+ const trimmedExtra = extraPrompt?.trim();
5475
+ if (trimmedExtra) lines.push("", "## Additional Foreman Instructions", trimmedExtra);
5476
+ return lines.join("\n");
5477
+ }
5478
+ async function ensureRegisteredSlotWorktree(baseWorkspace, slot) {
5479
+ if (existsSync$1(slot.workspace)) return;
5480
+ await mkdir(dirname(slot.workspace), { recursive: true });
5481
+ const branchExists = await gitBranchExists(baseWorkspace, slot.branch);
5482
+ const target = JSON.stringify(slot.workspace);
5483
+ const branch = JSON.stringify(slot.branch);
5484
+ await execAsync$3(branchExists ? `git worktree add ${target} ${branch}` : `git worktree add -b ${branch} ${target} HEAD`, { cwd: baseWorkspace });
5485
+ }
5486
+ async function gitBranchExists(workspace, branch) {
5487
+ try {
5488
+ await execAsync$3(`git show-ref --verify --quiet ${JSON.stringify(`refs/heads/${branch}`)}`, { cwd: workspace });
5489
+ return true;
5490
+ } catch {
5491
+ return false;
5492
+ }
5493
+ }
5494
+ var execAsync$3;
5495
+ var init_registered_slot_spawn = __esmMin((() => {
5496
+ init_dag();
5497
+ init_io();
5498
+ execAsync$3 = promisify(exec);
5499
+ }));
5500
+ //#endregion
5438
5501
  //#region ../../lib/agents/spawn.ts
5439
- async function spawnRun(issueId, role, options = {}) {
5502
+ async function spawnRun(issueId, role, options) {
5503
+ if (role !== "work") return spawnRunWithoutConsentClaim(issueId, role, options);
5504
+ const flywheelRunId = resolveFlywheelSpawnEnv(role, options.flywheelRunId).OVERDECK_FLYWHEEL_RUN_ID;
5505
+ const startedBy = resolveAgentStartedBy(options.startedBy, flywheelRunId);
5506
+ const resolvedOptions = {
5507
+ ...options,
5508
+ startedBy
5509
+ };
5510
+ if (isOperatorStartedBy(startedBy) || options.autoSpawnConsentRequired !== true) return spawnRunWithoutConsentClaim(issueId, role, resolvedOptions);
5511
+ return withAutoSpawnConsentClaim(issueId, (acceptConsent) => spawnRunWithoutConsentClaim(issueId, role, resolvedOptions, acceptConsent), { isAccepted: (state) => state.status === "running" && state.kickoffDelivered !== false });
5512
+ }
5513
+ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent) {
5440
5514
  const workspace = options.workspace ?? defaultRunWorkspace(issueId);
5441
5515
  const modelSpawnKey = `${role}:${issueId}`;
5442
5516
  const selectedModel = determineModel({
@@ -5462,7 +5536,7 @@ async function spawnRun(issueId, role, options = {}) {
5462
5536
  await ensureRegisteredSlotWorktree(workspace, slot);
5463
5537
  }
5464
5538
  const prompt = slot ? buildRegisteredSlotPrompt(issueId, workspace, slot, options.prompt) : options.prompt;
5465
- return spawnAgent({
5539
+ return spawnAgentWithoutConsentClaim({
5466
5540
  issueId,
5467
5541
  workspace: slot?.workspace ?? workspace,
5468
5542
  agentId: slot?.agentId,
@@ -5472,29 +5546,32 @@ async function spawnRun(issueId, role, options = {}) {
5472
5546
  role: "work",
5473
5547
  allowHost: options.allowHost,
5474
5548
  flywheelRunId: options.flywheelRunId,
5549
+ startedBy: options.startedBy,
5550
+ autoSpawnConsentRequired: options.autoSpawnConsentRequired,
5475
5551
  effort: options.effort,
5476
5552
  slotIndex: slot?.slotIndex,
5477
5553
  slotItemId: slot?.slotItemId
5478
- });
5554
+ }, acceptConsent);
5479
5555
  }
5480
5556
  const flywheelEnv = resolveFlywheelSpawnEnv(role, options.flywheelRunId);
5557
+ const startedBy = resolveAgentStartedBy(options.startedBy, flywheelEnv.OVERDECK_FLYWHEEL_RUN_ID);
5481
5558
  const agentId = options.agentId ?? runAgentId(issueId, role, options.subRole);
5482
5559
  if (await Effect.runPromise(sessionExists(agentId))) {
5483
5560
  let reapWarmIdle = false;
5484
5561
  const advancing = role === "review" || role === "test" || role === "ship";
5485
5562
  try {
5486
- const { isPaneDead } = await import("./tmux-DQ6jB76i.js");
5563
+ const { isPaneDead } = await import("./tmux-Ctk6RV5l.js");
5487
5564
  if (await Effect.runPromise(isPaneDead(agentId))) reapWarmIdle = true;
5488
5565
  else if (advancing) {
5489
- const { getReviewStatusSync } = await import("./review-status-BZH8h-6W.js");
5490
- const { isRoleTerminal } = await import("./reap-terminal-sessions-BQ23nriz.js");
5566
+ const { getReviewStatusSync } = await import("./review-status-Dma9SFaN.js");
5567
+ const { isRoleTerminal } = await import("./reap-terminal-sessions-4Xg9NGA8.js");
5491
5568
  const status = getReviewStatusSync(issueId);
5492
5569
  reapWarmIdle = !!status && isRoleTerminal(role, status);
5493
5570
  }
5494
5571
  } catch {}
5495
5572
  if (!reapWarmIdle) throw new Error(`Role run ${agentId} already running. Use 'pan tell' to message it.`);
5496
5573
  console.log(`[spawn] ${agentId} is warm-idle from the previous cycle — reaping it for the new ${role} dispatch (PAN-2579)`);
5497
- const { killSession } = await import("./tmux-DQ6jB76i.js");
5574
+ const { killSession } = await import("./tmux-Ctk6RV5l.js");
5498
5575
  await Effect.runPromise(killSession(agentId)).catch(() => {});
5499
5576
  }
5500
5577
  await assertWorkspaceStackHealthyForSpawn(issueId, role, options.allowHost, workspace);
@@ -5509,7 +5586,7 @@ async function spawnRun(issueId, role, options = {}) {
5509
5586
  assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
5510
5587
  await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
5511
5588
  if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
5512
- const { isCliproxyRunning } = await import("./cliproxy-PGwTX_o8.js");
5589
+ const { isCliproxyRunning } = await import("./cliproxy-DaAbWMjC.js");
5513
5590
  if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription role runs route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT role run.");
5514
5591
  }
5515
5592
  const state = {
@@ -5525,7 +5602,9 @@ async function spawnRun(issueId, role, options = {}) {
5525
5602
  ...resolvedHarness === "codex" ? {} : { costSoFar: 0 },
5526
5603
  hostOverride: options.allowHost || void 0,
5527
5604
  slotIndex: options.slotIndex,
5528
- slotItemId: options.slotItemId
5605
+ slotItemId: options.slotItemId,
5606
+ flywheelRunId: flywheelEnv.OVERDECK_FLYWHEEL_RUN_ID,
5607
+ startedBy
5529
5608
  };
5530
5609
  await Effect.runPromise(saveAgentState(state));
5531
5610
  const shouldRegisterConversation = role === "review" || role === "test" || role === "ship" || role === "knowledge" || options.registerConversation === true;
@@ -5626,7 +5705,7 @@ async function spawnRun(issueId, role, options = {}) {
5626
5705
  const claudeCmd = `bash ${launcherScript}`;
5627
5706
  console.log(`[claude-invoke] purpose=role-run | role=${role} | model=${state.model} | source=agents.ts:spawnRun | session=${agentId} | command="${claudeCmd}"`);
5628
5707
  try {
5629
- const { preTrustDirectory } = await import("./workspace-manager-CDTKjjdU.js");
5708
+ const { preTrustDirectory } = await import("./workspace-manager-C1F3XsnS.js");
5630
5709
  preTrustDirectory(workspace);
5631
5710
  } catch {}
5632
5711
  clearReadySignal(agentId);
@@ -5636,6 +5715,7 @@ async function spawnRun(issueId, role, options = {}) {
5636
5715
  OVERDECK_AGENT_ID: agentId,
5637
5716
  OVERDECK_ISSUE_ID: issueId,
5638
5717
  OVERDECK_SESSION_TYPE: role,
5718
+ OVERDECK_AGENT_STARTED_BY: startedBy,
5639
5719
  CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION: "false",
5640
5720
  GIT_SEQUENCE_EDITOR: "false",
5641
5721
  ...flywheelEnv,
@@ -5691,7 +5771,7 @@ async function spawnRun(issueId, role, options = {}) {
5691
5771
  }
5692
5772
  markAgentRunning(state);
5693
5773
  try {
5694
- const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-CI6cwyyC.js");
5774
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-Xg4PFN45.js");
5695
5775
  const headAnchor = await snapshotWorkspaceHeadsPromise(issueId, workspace);
5696
5776
  if (headAnchor) state.roleRunHead = headAnchor;
5697
5777
  } catch {}
@@ -5705,6 +5785,18 @@ async function spawnRun(issueId, role, options = {}) {
5705
5785
  return state;
5706
5786
  }
5707
5787
  async function spawnAgent(options) {
5788
+ const role = options.role ?? "work";
5789
+ if (role !== "work") return spawnAgentWithoutConsentClaim(options);
5790
+ const flywheelRunId = resolveFlywheelSpawnEnv(role, options.flywheelRunId).OVERDECK_FLYWHEEL_RUN_ID;
5791
+ const startedBy = resolveAgentStartedBy(options.startedBy, flywheelRunId);
5792
+ const resolvedOptions = {
5793
+ ...options,
5794
+ startedBy
5795
+ };
5796
+ if (isOperatorStartedBy(startedBy) || options.autoSpawnConsentRequired !== true) return spawnAgentWithoutConsentClaim(resolvedOptions);
5797
+ return withAutoSpawnConsentClaim(options.issueId, (acceptConsent) => spawnAgentWithoutConsentClaim(resolvedOptions, acceptConsent), { isAccepted: (state) => state.status === "running" && state.kickoffDelivered !== false });
5798
+ }
5799
+ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
5708
5800
  const role = options.role ?? "work";
5709
5801
  const sessionPrefix = role === "strike" ? "strike" : "agent";
5710
5802
  const agentId = options.agentId ?? `${sessionPrefix}-${options.issueId.toLowerCase()}`;
@@ -5721,7 +5813,7 @@ async function spawnAgent(options) {
5721
5813
  });
5722
5814
  console.log(`[DEBUG] Selected model: ${selectedModel}`);
5723
5815
  if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
5724
- const { isCliproxyRunning } = await import("./cliproxy-PGwTX_o8.js");
5816
+ const { isCliproxyRunning } = await import("./cliproxy-DaAbWMjC.js");
5725
5817
  if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription agents route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT agent.");
5726
5818
  }
5727
5819
  const resolvedHarness = await resolveHarness({
@@ -5733,6 +5825,8 @@ async function spawnAgent(options) {
5733
5825
  const harnessLaunch = await prepareHarnessLaunch(resolvedHarness);
5734
5826
  assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
5735
5827
  await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
5828
+ const flywheelEnv = resolveFlywheelSpawnEnv(role, options.flywheelRunId);
5829
+ const startedBy = resolveAgentStartedBy(options.startedBy, flywheelEnv.OVERDECK_FLYWHEEL_RUN_ID);
5736
5830
  const state = {
5737
5831
  id: agentId,
5738
5832
  issueId: options.issueId,
@@ -5745,7 +5839,9 @@ async function spawnAgent(options) {
5745
5839
  startedAt: (/* @__PURE__ */ new Date()).toISOString(),
5746
5840
  ...resolvedHarness === "codex" ? {} : { costSoFar: 0 },
5747
5841
  hostOverride: options.allowHost || void 0,
5748
- sessionId: createFreshSessionIdentity(agentId, resolvedHarness)
5842
+ sessionId: createFreshSessionIdentity(agentId, resolvedHarness),
5843
+ flywheelRunId: flywheelEnv.OVERDECK_FLYWHEEL_RUN_ID,
5844
+ startedBy
5749
5845
  };
5750
5846
  const supervisorLaunch = await prepareSupervisorForFreshLaunch(agentId, options, state);
5751
5847
  saveAgentStateSync(state);
@@ -5755,7 +5851,7 @@ async function spawnAgent(options) {
5755
5851
  if (preservation.preserve) {
5756
5852
  if (preservation.refreshedAnchor) setReviewStatusSync(options.issueId, { reviewedAtCommit: preservation.refreshedAnchor });
5757
5853
  console.log(`[spawn] Preserved pipeline verdicts for ${options.issueId} — ${preservation.reason}`);
5758
- } else if (resetPipelineVerdictsForWorkStartSync(options.issueId)) (await import("./merge-agent-DrXa1CpW.js")).resetPostMergeState(options.issueId);
5854
+ } else if (resetPipelineVerdictsForWorkStartSync(options.issueId)) (await import("./merge-agent-DQTXZk8z.js")).resetPostMergeState(options.issueId);
5759
5855
  } catch (err) {
5760
5856
  console.warn(`[agents] Could not reset stale pipeline verdicts for ${options.issueId}: ${err instanceof Error ? err.message : String(err)}`);
5761
5857
  }
@@ -5764,7 +5860,7 @@ async function spawnAgent(options) {
5764
5860
  });
5765
5861
  }
5766
5862
  if (role === "work") try {
5767
- const { writeStoryFeatureContext } = await import("./work-agent-prompt-C-vuP3_J.js");
5863
+ const { writeStoryFeatureContext } = await import("./work-agent-prompt-ByrPAzOy.js");
5768
5864
  await writeStoryFeatureContext(options.workspace, options.issueId);
5769
5865
  } catch (ctxErr) {
5770
5866
  console.warn(`[agents] Could not write story feature context for ${options.issueId}: ${ctxErr.message}`);
@@ -5811,7 +5907,7 @@ async function spawnAgent(options) {
5811
5907
  try {
5812
5908
  const venvPath = join$1(options.workspace, ".venv");
5813
5909
  if (isTldrEnabledSync() && existsSync(venvPath)) {
5814
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BKOYB616.js");
5910
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-CvWXBhX1.js");
5815
5911
  const tldrService = getTldrDaemonServiceSync(options.workspace, venvPath);
5816
5912
  if (!(await tldrService.getStatus()).running) {
5817
5913
  await tldrService.start(true);
@@ -5830,7 +5926,6 @@ async function spawnAgent(options) {
5830
5926
  state.channelsEnabled = true;
5831
5927
  saveAgentStateSync(state);
5832
5928
  }
5833
- const flywheelEnv = resolveFlywheelSpawnEnv(role, options.flywheelRunId);
5834
5929
  const { launcherContent, providerEnv } = await buildAgentLaunchConfig({
5835
5930
  agentId,
5836
5931
  model: selectedModel,
@@ -5852,13 +5947,13 @@ async function spawnAgent(options) {
5852
5947
  const claudeCmd = `bash ${launcherScript}`;
5853
5948
  console.log(`[claude-invoke] purpose=work-agent | model=${state.model} | source=agents.ts:spawnAgent | session=${agentId} | command="${claudeCmd}"`);
5854
5949
  try {
5855
- const { preTrustDirectory } = await import("./workspace-manager-CDTKjjdU.js");
5950
+ const { preTrustDirectory } = await import("./workspace-manager-C1F3XsnS.js");
5856
5951
  preTrustDirectory(options.workspace);
5857
5952
  } catch {}
5858
5953
  try {
5859
- const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-DtAsvwzK.js");
5954
+ const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-Bmg4R9mv.js");
5860
5955
  if (isGitHubAppConfigured()) {
5861
- const { findProjectByPathSync } = await import("./projects-B03Wr-xc.js");
5956
+ const { findProjectByPathSync } = await import("./projects-_n3Zui6K.js");
5862
5957
  const ghRepo = findProjectByPathSync(resolve$1(options.workspace, "..", ".."))?.github_repo;
5863
5958
  if (ghRepo) {
5864
5959
  const [owner, repo] = ghRepo.split("/");
@@ -5877,11 +5972,13 @@ async function spawnAgent(options) {
5877
5972
  OVERDECK_AGENT_ID: agentId,
5878
5973
  OVERDECK_ISSUE_ID: options.issueId,
5879
5974
  OVERDECK_SESSION_TYPE: role,
5975
+ OVERDECK_AGENT_STARTED_BY: startedBy,
5880
5976
  CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION: "false",
5881
5977
  GIT_SEQUENCE_EDITOR: "false",
5882
5978
  ...flywheelEnv,
5883
5979
  ...providerEnv
5884
5980
  } }));
5981
+ await acceptConsent?.();
5885
5982
  await saveAgentRuntimeState(agentId, {
5886
5983
  claudeSessionId: state.sessionId,
5887
5984
  sessionModel: selectedModel,
@@ -5936,7 +6033,7 @@ async function spawnAgent(options) {
5936
6033
  const codexHomeForAgent = join$1(homedir(), ".overdeck", "agents", agentId, "codex-home");
5937
6034
  (async () => {
5938
6035
  try {
5939
- const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-BdEsUFWh.js");
6036
+ const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-o8FJwzmy.js");
5940
6037
  const rollout = await waitForCodexRollout(codexHomeForAgent, 12e4);
5941
6038
  if (rollout) {
5942
6039
  const threadId = extractThreadIdFromRollout(rollout);
@@ -5971,47 +6068,6 @@ function assertRegisteredSlotCap(issueId, configuredCap) {
5971
6068
  const activeSlots = listAgentStates({ role: "work" }).filter((agent) => slotAgentPattern.test(agent.id) && (agent.status === "starting" || agent.status === "running"));
5972
6069
  if (activeSlots.length >= cap) throw new Error(`Registered slot cap reached for ${issueId}: ${activeSlots.length}/${cap} active slot agents.`);
5973
6070
  }
5974
- function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
5975
- const doc = readWorkspacePlanSync(baseWorkspace);
5976
- if (!doc) throw new Error(`Registered slot spawn for ${issueId} requires a readable xBRIEF plan in ${baseWorkspace}.`);
5977
- const slice = createActiveSlice(doc, {
5978
- issueId: issueId.toUpperCase(),
5979
- itemId: slot.slotItemId,
5980
- currentItemIds: [slot.slotItemId]
5981
- });
5982
- const lines = [
5983
- `# Registered Slot Assignment: ${slot.slotItemId}`,
5984
- "",
5985
- `Issue: ${issueId}`,
5986
- `Slot: ${slot.slotIndex}`,
5987
- `Agent: ${slot.agentId}`,
5988
- `Branch: ${slot.branch}`,
5989
- `Workspace: ${slot.workspace}`,
5990
- "",
5991
- "You are a registered slot work agent. Implement only the target xBRIEF item below, keep changes scoped to that item, and do not merge this slot branch yourself.",
5992
- "",
5993
- slice.prompt
5994
- ];
5995
- const trimmedExtra = extraPrompt?.trim();
5996
- if (trimmedExtra) lines.push("", "## Additional Foreman Instructions", trimmedExtra);
5997
- return lines.join("\n");
5998
- }
5999
- async function ensureRegisteredSlotWorktree(baseWorkspace, slot) {
6000
- if (existsSync(slot.workspace)) return;
6001
- await mkdir$1(dirname$1(slot.workspace), { recursive: true });
6002
- const branchExists = await gitBranchExists(baseWorkspace, slot.branch);
6003
- const target = JSON.stringify(slot.workspace);
6004
- const branch = JSON.stringify(slot.branch);
6005
- await execAsync$2(branchExists ? `git worktree add ${target} ${branch}` : `git worktree add -b ${branch} ${target} HEAD`, { cwd: baseWorkspace });
6006
- }
6007
- async function gitBranchExists(workspace, branch) {
6008
- try {
6009
- await execAsync$2(`git show-ref --verify --quiet ${JSON.stringify(`refs/heads/${branch}`)}`, { cwd: workspace });
6010
- return true;
6011
- } catch {
6012
- return false;
6013
- }
6014
- }
6015
6071
  function escapeRegExp$1(value) {
6016
6072
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
6017
6073
  }
@@ -6045,7 +6101,6 @@ var init_spawn = __esmMin((() => {
6045
6101
  init_behavior();
6046
6102
  init_bridge_token();
6047
6103
  init_tmux();
6048
- init_dag();
6049
6104
  init_io();
6050
6105
  init_agent_state();
6051
6106
  init_runtime_state();
@@ -6063,6 +6118,9 @@ var init_spawn = __esmMin((() => {
6063
6118
  init_termination();
6064
6119
  init_session_history();
6065
6120
  init_hook_readiness();
6121
+ init_auto_spawn_consent();
6122
+ init_provenance();
6123
+ init_registered_slot_spawn();
6066
6124
  execAsync$2 = promisify$1(exec$1);
6067
6125
  }));
6068
6126
  //#endregion
@@ -6779,7 +6837,7 @@ function deliverWithOptionalKey(normalizedId, message, caller, deliveryMethod, d
6779
6837
  * at-most-once across the whole replay window.
6780
6838
  */
6781
6839
  async function resumeThenDeliverKeyed(normalizedId, message, caller, agentState, dedupKey) {
6782
- const { resumeAgent } = await import("./agents-BKKkxKgK.js");
6840
+ const { resumeAgent } = await import("./agents-ePFVoZbu.js");
6783
6841
  const result = await resumeAgent(normalizedId);
6784
6842
  if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
6785
6843
  const delivery = await deliverAgentMessage(normalizedId, message, `messageAgent:${caller}`, resolveAgentDeliveryMethod(agentState), { dedupKey });
@@ -6834,7 +6892,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6834
6892
  }
6835
6893
  console.log(`[agents] Auto-resuming suspended agent ${normalizedId} to deliver message`);
6836
6894
  if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
6837
- const { resumeAgent } = await import("./agents-BKKkxKgK.js");
6895
+ const { resumeAgent } = await import("./agents-ePFVoZbu.js");
6838
6896
  const result = await resumeAgent(normalizedId, message);
6839
6897
  if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
6840
6898
  if (result.messageDelivered === false) throw new Error(`Agent resumed but ready signal did not fire — message not delivered. Feedback is in the mail queue.`);
@@ -6859,7 +6917,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6859
6917
  }
6860
6918
  console.log(`[agents] Auto-resuming stopped agent ${normalizedId} to deliver feedback (session exists: ${await Effect.runPromise(sessionExists(normalizedId))})`);
6861
6919
  if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
6862
- const { resumeAgent } = await import("./agents-BKKkxKgK.js");
6920
+ const { resumeAgent } = await import("./agents-ePFVoZbu.js");
6863
6921
  const resumeResult = await resumeAgent(normalizedId, message);
6864
6922
  queueAgentMail(normalizedId, message, false);
6865
6923
  if (resumeResult.success && resumeResult.messageDelivered !== false) {
@@ -6903,7 +6961,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6903
6961
  const resumeModel = agentState.model || "claude-sonnet-4-6";
6904
6962
  const fallbackHarness = agentState.harness ?? "claude-code";
6905
6963
  const harnessLaunch = await prepareHarnessLaunch(fallbackHarness);
6906
- const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-BKKkxKgK.js");
6964
+ const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-ePFVoZbu.js");
6907
6965
  await assertWorkspaceStackHealthyForSpawn(agentState.issueId || normalizedId.replace(/^agent-/, "").toUpperCase(), resumeRole, agentState.hostOverride === true, agentState.workspace);
6908
6966
  const fallbackPiFields = fallbackHarness === "ohmypi" ? await getOhmypiLauncherFields(normalizedId, resumeModel) : {};
6909
6967
  const fallbackCodexFields = fallbackHarness === "codex" ? getCodexLauncherFields(normalizedId, resumeModel, agentState.workspace, resumeRole) : {};
@@ -6986,12 +7044,12 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6986
7044
  ...reason ? { reason } : {}
6987
7045
  };
6988
7046
  }
6989
- const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-C1bssi41.js");
7047
+ const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-CLZB3Coc.js");
6990
7048
  const remoteState = loadRemoteAgentState(normalizedId);
6991
7049
  if (remoteState && remoteState.vmName) {
6992
7050
  console.log(`[agents] Sending message to remote agent ${normalizedId} on ${remoteState.vmName}`);
6993
7051
  if (opts.dedupKey !== void 0) {
6994
- const { sendToRemoteAgentKeyed } = await import("./remote-agents-C1bssi41.js");
7052
+ const { sendToRemoteAgentKeyed } = await import("./remote-agents-CLZB3Coc.js");
6995
7053
  const remoteOutcome = await sendToRemoteAgentKeyed(normalizedId, remoteState.vmName, message, opts.dedupKey);
6996
7054
  queueAgentMail(normalizedId, message, false, opts.dedupKey);
6997
7055
  await appendTellInterventionForUserSource(normalizedId, caller);
@@ -7055,7 +7113,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7055
7113
  if (panePids.length > 0 && !await hasAgentRuntimeInSubtree(panePids[0], expectedHarness)) {
7056
7114
  console.warn(`[agents] ${normalizedId} tmux session is a zombie (no ${expectedHarness} runtime) — attempting resume`);
7057
7115
  if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
7058
- const { resumeAgent } = await import("./agents-BKKkxKgK.js");
7116
+ const { resumeAgent } = await import("./agents-ePFVoZbu.js");
7059
7117
  const resumeResult = await resumeAgent(normalizedId, message);
7060
7118
  if (resumeResult.success) {
7061
7119
  const delivered = resumeResult.messageDelivered !== false;
@@ -7197,6 +7255,47 @@ var init_session_pointers = __esmMin((() => {
7197
7255
  init_agent_state();
7198
7256
  }));
7199
7257
  //#endregion
7258
+ //#region ../../lib/agents/resume-spawn-plan.ts
7259
+ function decideResumeSpawnPlan(input) {
7260
+ const rotationRefused = sessionRotationRefused({
7261
+ compactSeed: input.compactSeed,
7262
+ driftReasons: input.driftReasons,
7263
+ allowExplicitRecovery: input.allowExplicitRecovery
7264
+ });
7265
+ if (input.compactSeed) return {
7266
+ mode: "fresh",
7267
+ freshReason: "compact",
7268
+ clearSessionPointers: false,
7269
+ rotationRefused
7270
+ };
7271
+ if (input.driftReasons.length > 0) return {
7272
+ mode: "fresh",
7273
+ freshReason: "drift",
7274
+ clearSessionPointers: false,
7275
+ rotationRefused
7276
+ };
7277
+ if (input.harness === "ohmypi" && !input.piProcessWasAlive) return {
7278
+ mode: "fresh",
7279
+ freshReason: "pi-dead-recovery",
7280
+ clearSessionPointers: false,
7281
+ rotationRefused: false
7282
+ };
7283
+ if (input.harness === "claude-code" && !input.transcriptExists) return {
7284
+ mode: "fresh",
7285
+ freshReason: "claude-jsonl-missing",
7286
+ clearSessionPointers: true,
7287
+ rotationRefused: false
7288
+ };
7289
+ return {
7290
+ mode: "resume-saved",
7291
+ clearSessionPointers: false,
7292
+ rotationRefused: false
7293
+ };
7294
+ }
7295
+ var init_resume_spawn_plan = __esmMin((() => {
7296
+ init_session_rotation();
7297
+ }));
7298
+ //#endregion
7200
7299
  //#region ../../lib/agents/resume.ts
7201
7300
  /**
7202
7301
  * Resume a suspended agent (PAN-80)
@@ -7229,7 +7328,7 @@ async function buildCompactRecoverySeed(agentId) {
7229
7328
  if (agentState?.workspace && sessionId) {
7230
7329
  const sessionFile = sessionFilePath(agentState.workspace, sessionId);
7231
7330
  try {
7232
- const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-Dj4FAKoZ.js"), import("./smart-compaction-CPp2Ykf6.js")]);
7331
+ const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-BE3CNtHF.js"), import("./smart-compaction-8fA5k5XN.js")]);
7233
7332
  const settings = getConversationCompactionSettings();
7234
7333
  summary = (await Effect.runPromise(generateSmartSummary({
7235
7334
  jsonlPath: sessionFile,
@@ -7240,7 +7339,7 @@ async function buildCompactRecoverySeed(agentId) {
7240
7339
  } catch (err) {
7241
7340
  logAgentLifecycleSync(normalizedId, `compact-recovery smart summary failed (${err instanceof Error ? err.message : String(err)}); trying heuristic fallback`);
7242
7341
  try {
7243
- const { generateFallbackSummary } = await import("./summary-fork-CD7GOts0.js");
7342
+ const { generateFallbackSummary } = await import("./summary-fork-BqgmgPDt.js");
7244
7343
  summary = await Effect.runPromise(generateFallbackSummary(sessionFile));
7245
7344
  } catch (fallbackErr) {
7246
7345
  logAgentLifecycleSync(normalizedId, `compact-recovery fallback summary failed (${fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr)}); seeding with reseed instructions only`);
@@ -7343,6 +7442,8 @@ async function resumeAgent(agentId, message, opts) {
7343
7442
  }
7344
7443
  try {
7345
7444
  const resumeStartedAt = (/* @__PURE__ */ new Date()).toISOString();
7445
+ const startedBy = opts?.startedBy?.trim() || agentState.startedBy?.trim() || "resume-agent";
7446
+ agentState.startedBy = startedBy;
7346
7447
  clearReadySignal(normalizedId);
7347
7448
  const model = requestedModel || requireModelOverrideSync(agentState.model || "claude-sonnet-4-6");
7348
7449
  if (requestedModel && requestedModel !== agentState.model) {
@@ -7363,20 +7464,24 @@ async function resumeAgent(agentId, message, opts) {
7363
7464
  saveAgentStateSync(agentState);
7364
7465
  const resumeDriftReasons = sessionResumeDriftReasons(runtimeState, model, effectiveHarness);
7365
7466
  if (legacyHarnessMigrated) resumeDriftReasons.push(`legacy harness ${priorHarness}→${effectiveHarness} (PAN-1797 re-default)`);
7366
- const piDeadRecovery = effectiveHarness === "ohmypi" && !piProcessWasAlive && !compactSeed && resumeDriftReasons.length === 0;
7367
- if (piDeadRecovery) logAgentLifecycleSync(normalizedId, "resumeAgent: dead ohmypi process — fresh-launching for recovery instead of omp --resume (PAN-2009)");
7368
7467
  const expectedClaudeJsonl = sessionFilePath(agentState.workspace, sessionId);
7369
- const claudeJsonlMissingRecovery = effectiveHarness === "claude-code" && !compactSeed && resumeDriftReasons.length === 0 && !existsSync(expectedClaudeJsonl);
7370
- if (claudeJsonlMissingRecovery) {
7371
- logAgentLifecycleSync(normalizedId, `resumeAgent: saved Claude transcript is missing at ${expectedClaudeJsonl} — clearing stale pointers and fresh-launching (PAN-2895)`);
7372
- await clearAgentSessionPointers(normalizedId);
7373
- }
7374
- const shouldResumeSavedSession = !compactSeed && resumeDriftReasons.length === 0 && !piDeadRecovery && !claudeJsonlMissingRecovery;
7375
- if (sessionRotationRefused({
7468
+ const spawnPlan = decideResumeSpawnPlan({
7469
+ harness: effectiveHarness,
7376
7470
  compactSeed: Boolean(compactSeed),
7377
7471
  driftReasons: resumeDriftReasons,
7472
+ piProcessWasAlive,
7473
+ transcriptExists: effectiveHarness !== "claude-code" || claudeSessionTranscriptExists(agentState.workspace, sessionId),
7378
7474
  allowExplicitRecovery: opts?.compact === true && opts.recoverGated === true
7379
- })) {
7475
+ });
7476
+ const piDeadRecovery = spawnPlan.freshReason === "pi-dead-recovery";
7477
+ if (piDeadRecovery) logAgentLifecycleSync(normalizedId, "resumeAgent: dead ohmypi process — fresh-launching for recovery instead of omp --resume (PAN-2009)");
7478
+ const claudeJsonlMissingRecovery = spawnPlan.freshReason === "claude-jsonl-missing";
7479
+ if (spawnPlan.clearSessionPointers) {
7480
+ logAgentLifecycleSync(normalizedId, `resumeAgent: saved Claude transcript is missing at ${expectedClaudeJsonl} — clearing stale pointers and fresh-launching (PAN-2895)`);
7481
+ await clearAgentSessionPointers(normalizedId);
7482
+ }
7483
+ const shouldResumeSavedSession = spawnPlan.mode === "resume-saved";
7484
+ if (spawnPlan.rotationRefused) {
7380
7485
  const errMsg = `Refusing to rotate ${normalizedId} to a new session — ${compactSeed ? "context-overflow compaction would respawn a fresh session" : `session drift (${resumeDriftReasons.join(", ")})`}; session rotation is disabled (PAN-1980). Agent left stopped.`;
7381
7486
  logAgentLifecycleSync(normalizedId, `resumeAgent: ${errMsg}`);
7382
7487
  emitActivityEntrySync({
@@ -7399,14 +7504,15 @@ async function resumeAgent(agentId, message, opts) {
7399
7504
  unlinkSync(join$1(getAgentDir(normalizedId), "session.id"));
7400
7505
  } catch {}
7401
7506
  const issueId = agentState.issueId || normalizedId.replace(/^agent-/, "").toUpperCase();
7507
+ const resumeCause = opts?.resumeCause ?? (agentState.stoppedByUser === true ? "operator" : message ? "message" : "system");
7402
7508
  const defaultResumeMessage = buildResumeContinueMessage(agentState);
7403
7509
  const resumeMessage = compactSeed ? {
7404
- message: message ? `${compactSeed}\n\n${message}` : compactSeed,
7510
+ message: `${message ? `${compactSeed}\n\n${message}` : compactSeed}\n\n${buildResumeContract(resumeCause)}`,
7405
7511
  redeliveringKickoff: false
7406
7512
  } : resumeDriftReasons.length > 0 ? {
7407
- message: message ?? defaultResumeMessage,
7513
+ message: `${message ?? defaultResumeMessage}\n\n${buildResumeContract(resumeCause)}`,
7408
7514
  redeliveringKickoff: false
7409
- } : await buildResumeMessageForAgent(agentState, defaultResumeMessage, message);
7515
+ } : await buildResumeMessageForAgent(agentState, defaultResumeMessage, message, resumeCause);
7410
7516
  if (resumeMessage.error) {
7411
7517
  console.error(`[resumeAgent] ${resumeMessage.error}`);
7412
7518
  emitActivityEntrySync({
@@ -7446,6 +7552,7 @@ async function resumeAgent(agentId, message, opts) {
7446
7552
  OVERDECK_AGENT_ID: normalizedId,
7447
7553
  OVERDECK_ISSUE_ID: agentState.issueId || "",
7448
7554
  OVERDECK_SESSION_TYPE: agentState.role,
7555
+ OVERDECK_AGENT_STARTED_BY: startedBy,
7449
7556
  CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION: "false",
7450
7557
  ...providerEnv
7451
7558
  } }));
@@ -7583,7 +7690,6 @@ var init_resume = __esmMin((() => {
7583
7690
  init_persistent_logger();
7584
7691
  init_projects();
7585
7692
  init_behavior();
7586
- init_session_rotation();
7587
7693
  init_lifecycle_io();
7588
7694
  init_tmux();
7589
7695
  init_agent_state();
@@ -7592,9 +7698,11 @@ var init_resume = __esmMin((() => {
7592
7698
  init_delivery();
7593
7699
  init_identity();
7594
7700
  init_runtime_state();
7701
+ init_resume_spawn_plan();
7595
7702
  init_runtime_command();
7596
7703
  init_supervisor_channels();
7597
7704
  init_spawn_prep();
7705
+ init_resume_contract();
7598
7706
  }));
7599
7707
  //#endregion
7600
7708
  //#region ../../lib/graceful-restart.ts
@@ -8449,7 +8557,8 @@ async function spawnTierSupervisor(issueId, supervisor, options = {}) {
8449
8557
  model: supervisor.model,
8450
8558
  harness: supervisor.harness,
8451
8559
  workspace: options.workspace,
8452
- prompt: options.prompt ?? buildSupervisorPrompt(issueId, supervisor.subscribe)
8560
+ prompt: options.prompt ?? buildSupervisorPrompt(issueId, supervisor.subscribe),
8561
+ startedBy: "tier-supervisor"
8453
8562
  });
8454
8563
  }
8455
8564
  function buildSupervisorPrompt(issueId, subscribe) {
@@ -8687,13 +8796,15 @@ async function spawnReplayTarget(target, deps) {
8687
8796
  model: target.supervisor.model,
8688
8797
  harness: target.supervisor.harness,
8689
8798
  workspace: target.workspace,
8690
- prompt: target.prompt
8799
+ prompt: target.prompt,
8800
+ startedBy: "tier-replay"
8691
8801
  });
8692
8802
  const slot = resolveReplaySlot(target, deps);
8693
8803
  const spawnOptions = {
8694
8804
  slotIndex: slot.slotIndex,
8695
8805
  slotItemId: slot.slotItemId,
8696
8806
  prompt: target.prompt,
8807
+ startedBy: "tier-replay",
8697
8808
  ...currentTierSpawnOverride(target)
8698
8809
  };
8699
8810
  return deps.spawn(target.issueId, "work", spawnOptions);
@@ -9575,7 +9686,7 @@ var init_runtime_census = __esmMin((() => {
9575
9686
  ]);
9576
9687
  runtimeCensusService = createRuntimeCensusService({
9577
9688
  listPanes: async () => {
9578
- const { listAllPaneRecords } = await import("./tmux-DQ6jB76i.js");
9689
+ const { listAllPaneRecords } = await import("./tmux-Ctk6RV5l.js");
9579
9690
  return Effect.runPromise(listAllPaneRecords());
9580
9691
  },
9581
9692
  readProcesses: readRuntimeProcessTable
@@ -9729,6 +9840,6 @@ var init_queries = __esmMin((() => {
9729
9840
  });
9730
9841
  }));
9731
9842
  //#endregion
9732
- export { operatorInterventionEvent as $, getAgentDir as $n, providerDefaultHarnessSync as $t, spawnTierSupervisor as A, getProviderExportsForModel as An, isQualifiedAgentId as Ar, AmbiguousKeyedDeliveryError as At, detectCrashedAgents as B, dismissDevChannelsDialog as Bn, init_agent_runtime as Br, init_transcript_landing as Bt, replayCrashedStandingAgent as C, materializeAcpContextFile as Cn, init_agent_record_sync as Cr, resetPatrolDispatchBudget as Ct, init_tier_supervisor as D, buildSpawnEnvForModel as Dn, init_pty_supervisor_locate as Dr, getCachedMemoryVerdict as Dt, deliverCommitForReview as E, buildCavemanExports as En, writePtyToken as Er, workResumeSlotsAvailable as Et, init_tier_escalation as F, init_openai_auth as Fn, getAgentRuntimeState as Fr, deliverResumeMessageWithTranscriptConfirmation as Ft, resumeAgent as G, SESSION_EXITED_BEFORE_KICKOFF as Gn, init_ohmypi_parser as Gr, assertWorkspaceStackHealthyForSpawn as Gt, restartAgent as H, init_supervisor_channels as Hn, checkCodexAuthStatus as Hr, BRIDGE_TOKEN_HEADER as Ht, init_slot_reconcile as I, buildDefaultResumeContinueMessage as In, getAgentRuntimeStateSync as Ir, init_delivery as It, isContextOverflowTail as J, clearAgentPausedSync as Jn, init_spawn_prep as Jt, init_context_overflow as K, __testInternals as Kn, parseOhmypiSessionCostResultSync as Kr, buildAgentLaunchConfig as Kt, listSlotAssignments as L, buildResumeContinueMessage as Ln, init_runtime_state as Lr, resilientDeliveryMethod as Lt, broadcastCommit as M, init_provider_health as Mn, resolveAgentTargetSync as Mr, deliverAgentMessage as Mt, init_tier_feed as N, validateProviderHealth as Nn, waitForAgentIdle as Nr, deliverAgentPermissionDecision as Nt, loadPrdDraft as O, determineModel as On, resolvePtySupervisorScriptPath as Or, init_memory_verdict_cache as Ot, decideEscalation as P, getOpenAIAuthStatus as Pn, waitForReadySignal as Pr, deliverInitialPromptWithRetry as Pt, init_operator_interventions as Q, decideResumeGate as Qn, init_staffing as Qt, reconcileSlotState as R, decideChannelsForWorkAgent as Rn, saveAgentRuntimeState as Rr, setAgentDeliveryMethod as Rt, contextWindowForModel as S, init_context as Sn, writeAgentStateJsonSync as Sr, releaseSwarmSlot as St, shouldReplayCompactAtTierRunBoundary as T, init_claude_auth as Tn, init_pty_token as Tr, tryReserveSwarmSlot as Tt, buildCompactRecoverySeed as U, writeChannelsBridgeMcpConfig as Un, init_codex_auth as Ur, init_bridge_token as Ut, recoverAgent as V, hasCompletionMarkerForAgent as Vn, applyCodexAuthBurnFlag as Vr, probeTranscriptSince as Vt, init_resume as W, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as Wn, paneShowsCodexAuthBurn as Wr, writeBridgeTokenSync as Wt, messageAgent as X, clearAgentTroubledSync as Xn, transitionIssueToInProgress as Xt, init_messaging as Y, clearAgentTroubled as Yn, retrieveSpawnTimeMemoryContext as Yt, messageAgentWithOutcome as Z, clearYieldForResumeSync as Zn, transitionIssueToInReview as Zt, init_linux as _, waitForPromptReady as _n, saveAgentStateSync as _r, describeRunningAgents as _t, listRunningAgentsSync as a, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as an, isAgentPaused as ar, init_activity as at, init_agents as b, init_ohmypi_fifo as bn, setAgentYieldedSync as br, init_concurrency as bt, getRuntimeCensus as c, getAgentRuntimeBaseCommand as cn, markAgentRunning as cr, init_ohmypi as ct, panePidsForSession as d, getProviderAuthMode as dn, markAgentTroubled as dr, spawnRun as dt, resolveImplicitStaffing as en, getAgentResumeGateBlockReason as er, appendActivity as et, refreshRuntimeCensus as f, getRoleRuntimeBaseCommand as fn, recordAgentFailure as fr, init_termination as ft, LINUX_MEMORY_PRESSURE_DEFAULTS as g, waitForAcpHostReady as gn, saveAgentState as gr, countRunningSwarmSlotsForIssue as gt, init_collector as h, roleAgentDefinitionPath as hn, resetAgentFailureCount as hr, countRunningAgents as ht, listRunningAgents as i, resolveTier as in, init_agent_state as ir, getSessionId as it, supervisorAgentId as j, getProviderTmuxFlags as jn, normalizeAgentId as jr, SocketPostStatusError as jt, shouldSupervise as k, getProviderEnvForModel as kn, clearReadySignal as kr, setCachedMemoryVerdict as kt, getRuntimeCensusSnapshot as l, getCodexLauncherFields as ln, markAgentRunningState as lr, init_spawn as lt, createHostHealthCollector as m, injectPiConversationMemory as mn, recordStartupSessionExit as mr, stopAgentSync as mt, init_queries as n, resolveStaffing as nn, getAgentStateFilePath as nr, getLatestSessionId as nt, warnOnBareNumericIssueIds as o, describeOhmypiSpawnFailure as on, isAgentTroubled as or, saveSessionId as ot, runtimeCensusHasHarnessProcess as p, init_runtime_command as pn, recordAgentFailureSync as pr, stopAgent as pt, isContextOverflowError as q, clearAgentPaused as qn, defaultRunWorkspace as qt, listAgentStates as r, init_resolve_tier as rn, getAgentStateSync as rr, getLatestSessionIdSync as rt, descendantPidsForSession as s, getAcpLauncherFields as sn, isRole as sr, createOhmypiRuntimeSync as st, dropLegacyAgentStatesMissingRoleAsync as t, resolveIssueWorkModel as tn, getAgentState as tr, getActivity as tt, init_runtime_census as u, getOhmypiLauncherFields as un, markAgentStoppedState as ur, spawnAgent as ut, DARWIN_MEMORY_PRESSURE_DEFAULTS as v, init_pi_fifo as vn, setAgentPaused as vr, emergencyBrake as vt, replayStandingAgent as w, getClaudeAuthStatus as wn, readAgentHarnessModelRecordSync as wr, tryReserveAdvancingSlot as wt, compactAtTierRunBoundary as x, ohmypiFifoPaths as xn, wipeAgentStateDirs as xr, releaseAdvancingSlot as xt, init_darwin as y, piFifoPaths as yn, setAgentPausedSync as yr, getConcurrencyLimits as yt, autoRecoverAgents as z, decideSupervisorForWorkAgent as zn, getAgentRuntimeSnapshot as zr, captureTranscriptUserRecordSnapshot as zt };
9843
+ export { operatorInterventionEvent as $, getAgentDir as $n, providerDefaultHarnessSync as $t, spawnTierSupervisor as A, getProviderExportsForModel as An, resolvePtySupervisorScriptPath as Ar, AmbiguousKeyedDeliveryError as At, detectCrashedAgents as B, dismissDevChannelsDialog as Bn, saveAgentRuntimeState as Br, init_transcript_landing as Bt, replayCrashedStandingAgent as C, materializeAcpContextFile as Cn, init_agent_record_sync as Cr, resetPatrolDispatchBudget as Ct, init_tier_supervisor as D, buildSpawnEnvForModel as Dn, init_pty_token as Dr, getCachedMemoryVerdict as Dt, deliverCommitForReview as E, buildCavemanExports as En, init_resume_contract as Er, workResumeSlotsAvailable as Et, init_tier_escalation as F, init_openai_auth as Fn, waitForAgentIdle as Fr, deliverResumeMessageWithTranscriptConfirmation as Ft, resumeAgent as G, SESSION_EXITED_BEFORE_KICKOFF as Gn, init_codex_auth as Gr, assertWorkspaceStackHealthyForSpawn as Gt, restartAgent as H, init_supervisor_channels as Hn, init_agent_runtime as Hr, BRIDGE_TOKEN_HEADER as Ht, init_slot_reconcile as I, buildDefaultResumeContinueMessage as In, waitForReadySignal as Ir, init_delivery as It, isContextOverflowTail as J, clearAgentPausedSync as Jn, parseOhmypiSessionCostResultSync as Jr, init_spawn_prep as Jt, init_context_overflow as K, __testInternals as Kn, paneShowsCodexAuthBurn as Kr, buildAgentLaunchConfig as Kt, listSlotAssignments as L, buildResumeContinueMessage as Ln, getAgentRuntimeState as Lr, resilientDeliveryMethod as Lt, broadcastCommit as M, init_provider_health as Mn, isQualifiedAgentId as Mr, deliverAgentMessage as Mt, init_tier_feed as N, validateProviderHealth as Nn, normalizeAgentId as Nr, deliverAgentPermissionDecision as Nt, loadPrdDraft as O, determineModel as On, writePtyToken as Or, init_memory_verdict_cache as Ot, decideEscalation as P, getOpenAIAuthStatus as Pn, resolveAgentTargetSync as Pr, deliverInitialPromptWithRetry as Pt, init_operator_interventions as Q, decideResumeGate as Qn, init_staffing as Qt, reconcileSlotState as R, decideChannelsForWorkAgent as Rn, getAgentRuntimeStateSync as Rr, setAgentDeliveryMethod as Rt, contextWindowForModel as S, init_context as Sn, writeAgentStateJsonSync as Sr, releaseSwarmSlot as St, shouldReplayCompactAtTierRunBoundary as T, init_claude_auth as Tn, buildResumeContract as Tr, tryReserveSwarmSlot as Tt, buildCompactRecoverySeed as U, writeChannelsBridgeMcpConfig as Un, applyCodexAuthBurnFlag as Ur, init_bridge_token as Ut, recoverAgent as V, hasCompletionMarkerForAgent as Vn, getAgentRuntimeSnapshot as Vr, probeTranscriptSince as Vt, init_resume as W, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as Wn, checkCodexAuthStatus as Wr, writeBridgeTokenSync as Wt, messageAgent as X, clearAgentTroubledSync as Xn, transitionIssueToInProgress as Xt, init_messaging as Y, clearAgentTroubled as Yn, retrieveSpawnTimeMemoryContext as Yt, messageAgentWithOutcome as Z, clearYieldForResumeSync as Zn, transitionIssueToInReview as Zt, init_linux as _, waitForPromptReady as _n, saveAgentStateSync as _r, describeRunningAgents as _t, listRunningAgentsSync as a, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as an, isAgentPaused as ar, init_activity as at, init_agents as b, init_ohmypi_fifo as bn, setAgentYieldedSync as br, init_concurrency as bt, getRuntimeCensus as c, getAgentRuntimeBaseCommand as cn, markAgentRunning as cr, init_ohmypi as ct, panePidsForSession as d, getProviderAuthMode as dn, markAgentTroubled as dr, spawnRun as dt, resolveImplicitStaffing as en, getAgentResumeGateBlockReason as er, appendActivity as et, refreshRuntimeCensus as f, getRoleRuntimeBaseCommand as fn, recordAgentFailure as fr, init_termination as ft, LINUX_MEMORY_PRESSURE_DEFAULTS as g, waitForAcpHostReady as gn, saveAgentState as gr, countRunningSwarmSlotsForIssue as gt, init_collector as h, roleAgentDefinitionPath as hn, resetAgentFailureCount as hr, countRunningAgents as ht, listRunningAgents as i, resolveTier as in, init_agent_state as ir, getSessionId as it, supervisorAgentId as j, getProviderTmuxFlags as jn, clearReadySignal as jr, SocketPostStatusError as jt, shouldSupervise as k, getProviderEnvForModel as kn, init_pty_supervisor_locate as kr, setCachedMemoryVerdict as kt, getRuntimeCensusSnapshot as l, getCodexLauncherFields as ln, markAgentRunningState as lr, init_spawn as lt, createHostHealthCollector as m, injectPiConversationMemory as mn, recordStartupSessionExit as mr, stopAgentSync as mt, init_queries as n, resolveStaffing as nn, getAgentStateFilePath as nr, getLatestSessionId as nt, warnOnBareNumericIssueIds as o, describeOhmypiSpawnFailure as on, isAgentTroubled as or, saveSessionId as ot, runtimeCensusHasHarnessProcess as p, init_runtime_command as pn, recordAgentFailureSync as pr, stopAgent as pt, isContextOverflowError as q, clearAgentPaused as qn, init_ohmypi_parser as qr, defaultRunWorkspace as qt, listAgentStates as r, init_resolve_tier as rn, getAgentStateSync as rr, getLatestSessionIdSync as rt, descendantPidsForSession as s, getAcpLauncherFields as sn, isRole as sr, createOhmypiRuntimeSync as st, dropLegacyAgentStatesMissingRoleAsync as t, resolveIssueWorkModel as tn, getAgentState as tr, getActivity as tt, init_runtime_census as u, getOhmypiLauncherFields as un, markAgentStoppedState as ur, spawnAgent as ut, DARWIN_MEMORY_PRESSURE_DEFAULTS as v, init_pi_fifo as vn, setAgentPaused as vr, emergencyBrake as vt, replayStandingAgent as w, getClaudeAuthStatus as wn, readAgentHarnessModelRecordSync as wr, tryReserveAdvancingSlot as wt, compactAtTierRunBoundary as x, ohmypiFifoPaths as xn, wipeAgentStateDirs as xr, releaseAdvancingSlot as xt, init_darwin as y, piFifoPaths as yn, setAgentPausedSync as yr, getConcurrencyLimits as yt, autoRecoverAgents as z, decideSupervisorForWorkAgent as zn, init_runtime_state as zr, captureTranscriptUserRecordSnapshot as zt };
9733
9844
 
9734
- //# sourceMappingURL=queries-DHJm7bTd.js.map
9845
+ //# sourceMappingURL=queries-C-MUZaIy.js.map