@overdeck/desktop 0.49.1 → 0.49.2

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 (497) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-CHtDkHEL.js} +2 -2
  3. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-Byh6sP-q.js} +2 -2
  4. package/server/{activity-logger-BAVLrkR7.js → activity-logger-BWZhVphb.js} +22 -4
  5. package/server/activity-logger-Ck8qoluj.js +3 -0
  6. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-65W4yUQi.js} +6 -6
  7. package/server/{agent-gc-5E0lgxI1.js → agent-gc-BNUudFnt.js} +10 -10
  8. package/server/agent-idle-ONBssBN_.js +745 -0
  9. package/server/{agent-state-Bb3UUxQm.js → agent-state-BJhGIJZe.js} +421 -135
  10. package/server/agent-state-CM8iVw5B.js +3 -0
  11. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-CiIuwzIs.js} +5 -5
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-CzHfoqKQ.js} +1 -1
  13. package/server/agents-DpCuoF65.js +3 -0
  14. package/server/{agents-CqQJW75N.js → agents-jXgqpHca.js} +8 -8
  15. package/server/archive-planning-BW4MKNI7.js +2 -0
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-CGkU6UeL.js} +20 -135
  17. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Ck4NRRkY.js} +3 -3
  18. package/server/{assemble-DyTp2gSB.js → assemble-CyvEBmmq.js} +28 -9
  19. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-Dc4mtM-B.js} +8 -7
  20. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-CCEpr4YT.js} +3 -3
  21. package/server/{behavior-Bitko0mD.js → behavior-BiCQzqyT.js} +3 -3
  22. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-Ce8rNPym.js} +2 -2
  23. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-e_OEYZEe.js} +2 -2
  24. package/server/{build-info-DTX8JwVP.js → build-info-BRw4QlYO.js} +3 -3
  25. package/server/build-info-Bj2vQEMh.js +2 -0
  26. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-CKr42Usw.js} +1 -1
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-DOwRGFff.js} +26 -9
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-DRALkfDS.js → checkpoints-Cb6CWT4S.js} +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-Cszp_0Np.js} +2 -2
  31. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-C5JHpxTS.js} +1 -1
  32. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-Cer2eFfj.js} +2 -2
  33. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-Bc5kjX1q.js} +2 -2
  34. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-C7rWsnya.js} +1 -1
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-m-VVZej1.js} +2 -2
  36. package/server/cli-BRuzUT_I.js +2 -0
  37. package/server/{cli-Do8UpLoI.js → cli-BmczsfD6.js} +11 -11
  38. package/server/{cliproxy-CX6jHRDP.js → cliproxy-BpYpkogS.js} +52 -17
  39. package/server/cliproxy-_yUU0HRY.js +3 -0
  40. package/server/{close-issue-J0_eWYT1.js → close-issue-CxvRD0UI.js} +5 -5
  41. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-nMLRi5de.js} +13 -12
  42. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-omOcUDBl.js} +1 -1
  43. package/server/{codex-icapA4om.js → codex-DZhFfcWu.js} +1 -1
  44. package/server/{codex-OOea7lXs.js → codex-KaSKE-R3.js} +16 -10
  45. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-Bjfi70G-.js} +3 -3
  46. package/server/{config-Cjleh3_U.js → config-CH1AqqIQ.js} +1 -1
  47. package/server/{config-DC75T4Mr.js → config-Doq_tF-f.js} +2 -2
  48. package/server/{config-tucKBCCc.js → config-ZGjvuR6J.js} +2 -2
  49. package/server/{config-yaml-BwOEANMr.js → config-yaml-D9nfpEx1.js} +33 -8
  50. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-D4XCtrm2.js} +1 -1
  51. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-DcUTY4Gb.js} +4 -4
  52. package/server/{context-layers-CSPGc2Hb.js → context-layers-BBTKP-Y4.js} +3 -3
  53. package/server/context-layers-BGj2Y9l3.js +4 -0
  54. package/server/{continue-U3Af0jUq.js → continue-i7Revg8D.js} +3 -3
  55. package/server/{control-settings-5k6ixdFW.js → control-settings-BMoDHY1G.js} +6 -6
  56. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-D4VOmF7p.js} +8 -8
  57. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzIjYMfg.js} +1 -1
  58. package/server/{conversation-service-BxrB5lUT.js → conversation-service-CzZUJFEx.js} +1 -1
  59. package/server/{conversation-service-BteE4ELK.js → conversation-service-tQCIbBVZ.js} +6 -6
  60. package/server/{conversations-DhwxsOru.js → conversations-C75EFFjf.js} +12 -7
  61. package/server/conversations-bFDaD5YN.js +3 -0
  62. package/server/{cost-Bnf9NUC5.js → cost-BCWEkvro.js} +3 -3
  63. package/server/{cost-CQKI6OCu.js → cost-CiIwxH1D.js} +2 -2
  64. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DOkdE_yB.js} +3 -3
  65. package/server/{dag-DI9LaK_q.js → dag-BPc74hwj.js} +6 -19
  66. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-By9iguTP.js} +1 -1
  67. package/server/dashboard-db-worker.js +7 -7
  68. package/server/{deacon-TPYssFYt.js → deacon-B24dNzr8.js} +1774 -171
  69. package/server/deacon-CzSZMtb-.js +4 -0
  70. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-CkvxRPck.js} +3 -3
  71. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BYIQBu0T.js} +1 -1
  72. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-Do6Z2gKl.js} +2 -2
  73. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-CzM9JA9t.js} +1 -1
  74. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BObEdT-L.js} +3 -3
  75. package/server/deacon.js +11 -11
  76. package/server/dead-end-trip-6V_CwveT.js +2 -0
  77. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-CnVmjnya.js} +3 -3
  78. package/server/delivery-gyce0vQ7.js +3 -0
  79. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-CEwwEYDM.js} +8 -8
  80. package/server/deploy-queue-CjLErpgw.js +2 -0
  81. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-r96ojDI3.js} +2 -2
  82. package/server/{deploy-window-CNT6fOff.js → deploy-window-D_3hhfxt.js} +4 -4
  83. package/server/{deploy-window-BMk5_oX6.js → deploy-window-DeJK8mTK.js} +1 -1
  84. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-DZWwpENk.js} +2 -2
  85. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-d-9dCV_2.js} +3 -3
  86. package/server/{dist-CPTO_zMR.js → dist-DsLAsFSh.js} +1 -1
  87. package/server/dist-fCA6y2bH.js +3 -0
  88. package/server/{docker-B7qUZptz.js → docker-B2mUBzGk.js} +3 -3
  89. package/server/{docker-KR3zSFKY.js → docker-CRPHBylA.js} +1 -1
  90. package/server/{dod-gK835UMf.js → dod-DWtilRLx.js} +1 -1
  91. package/server/{done-preflight-CksRvh49.js → done-preflight-BDVdWed5.js} +1 -1
  92. package/server/{done-preflight-Bk8aExAL.js → done-preflight-D4ukUf-S.js} +5 -5
  93. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  94. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-B3OS2_He.js} +11 -2
  95. package/server/durable-review-pipeline-CaCbEJSt.js +3 -0
  96. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-BUeBRjmm.js} +4 -4
  97. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-rGSh0JHK.js} +1 -1
  98. package/server/{esm-shims-1htPASWs.js → esm-shims-oAaKIa-a.js} +1 -1
  99. package/server/{event-store-D7qcJXuZ.js → event-store-BCSgMubf.js} +5 -5
  100. package/server/{event-store-BgEjNsvk.js → event-store-Db4w4YIY.js} +1 -1
  101. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-DlSQND3V.js} +1 -1
  102. package/server/{events-BIKGJZOT.js → events-B6zioJA_.js} +3 -3
  103. package/server/{dist-src-BM9eudEd.js → factory-BrdqXBeK.js} +714 -2
  104. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-zh3ZXW6f.js} +3 -3
  105. package/server/{features-CGopJXdU.js → features-BGntOWdy.js} +2 -2
  106. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-DpA5u1kt.js} +2 -2
  107. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-D7GxdUYG.js} +10 -10
  108. package/server/{feedback-target-CkyLYohm.js → feedback-target-Ddqk93NF.js} +1 -1
  109. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-C1gCLFmp.js} +5 -5
  110. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-CH2846DP.js} +1 -1
  111. package/server/{flywheel-C7yek87O.js → flywheel-CjW2L7BS.js} +79 -29
  112. package/server/{flywheel-DXI_WITn.js → flywheel-HJt7QdWP.js} +1 -1
  113. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-4fNRN2F2.js} +1 -1
  114. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-D_yyAlND.js} +7 -7
  115. package/server/{flywheel-BwYPDlhK.js → flywheel-v1cCOBx-.js} +14 -14
  116. package/server/{forge-DYX9sKzG.js → forge-RVTCK_5X.js} +2 -2
  117. package/server/forge-bvak6vXJ.js +2 -0
  118. package/server/{from-DAdMxC29.js → from-BnLgKYvw.js} +1 -1
  119. package/server/{fs-lock-cw25uO_E.js → fs-lock-C7J-ugIf.js} +2 -2
  120. package/server/{fts-operations-D_rzLxX5.js → fts-operations-CU0B5WUx.js} +3 -3
  121. package/server/git-info-BSrI9owC.js +148 -0
  122. package/server/{git-utils-Y0zG25ez.js → git-utils-CsKV0Dis.js} +1 -1
  123. package/server/{git-utils-DV4B9TRl.js → git-utils-DW8-jIUJ.js} +4 -4
  124. package/server/{github-app-4UX8VIr8.js → github-app-7ywLhuZO.js} +2 -2
  125. package/server/{github-app-C33lDk9Z.js → github-app-Oi5hdn1n.js} +1 -1
  126. package/server/{github-client-nPj5ckZO.js → github-client-Cy0fSj1a.js} +1 -1
  127. package/server/{github-client-DkJVR908.js → github-client-DAbuXLuk.js} +3 -3
  128. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-Dhh3ec1V.js} +2 -2
  129. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-tMmgJfC1.js} +2 -2
  130. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-DusNpVEe.js} +4 -4
  131. package/server/{health-events-jMfxrElt.js → health-events-BYDZ9n2i.js} +1 -1
  132. package/server/{health-events-DlX_FVAB.js → health-events-DNw9Mzw9.js} +2 -2
  133. package/server/{hooks-W3REcb3h.js → hooks-B4wj32l2.js} +1 -1
  134. package/server/{hooks-NQ19vvlB.js → hooks-BjBjxqNh.js} +2 -2
  135. package/server/{hume-BFkid2PO.js → hume-BP9YbxaE.js} +2 -2
  136. package/server/hume-TYTb6fDU.js +3 -0
  137. package/server/{identity-Bwh6VGeL.js → identity-C23uY8dZ.js} +3 -3
  138. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-BSxb1bln.js} +4 -4
  139. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-Bw0rU9GC.js} +1 -1
  140. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-DuxabAHT.js} +1 -1
  141. package/server/{infra-KTp9KV9u.js → infra-CHIvOb9q.js} +30 -7
  142. package/server/{injection-67YyU6SC.js → injection-BYUt8ml1.js} +8 -8
  143. package/server/{injection-BxbZKPDh.js → injection-BviePcm3.js} +1 -1
  144. package/server/inspect-agent-JFEaYTRa.js +2 -0
  145. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-sV_19NxZ.js} +12 -12
  146. package/server/{internal-token-B-z-sGBH.js → internal-token-BOtIRJU7.js} +1 -1
  147. package/server/{internal-token-zY75jrRJ.js → internal-token-DoVzb4b7.js} +2 -2
  148. package/server/{io-DfvO2xyh.js → io-DKrWd3gX.js} +5 -5
  149. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-6RQsAjDX.js} +7 -7
  150. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-D9nLErvS.js} +206 -29
  151. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DOPVv7xz.js} +1 -1
  152. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-B2xy-IS9.js} +124 -11
  153. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-CvgNAWqK.js} +1 -1
  154. package/server/issue-title-fallback-DTSCQVu0.js +120 -0
  155. package/server/{issues-CkvUoAnq.js → issues-e_Ck1Ln2.js} +2 -2
  156. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-DqxVCZ1k.js} +3 -3
  157. package/server/jsonl-resolver-07OS3qOr.js +324 -0
  158. package/server/{kimi-code-C26gmGxM.js → kimi-code-BjtAHIz1.js} +14 -12
  159. package/server/{kimi-code-DoMoGqIu.js → kimi-code-vtXl2DR5.js} +1 -1
  160. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-B1lgy2Vt.js} +2 -2
  161. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-D2zUMasf.js} +3 -3
  162. package/server/{lifecycle-Bg44O-9x.js → lifecycle-0NOEzomy.js} +2 -2
  163. package/server/{lifecycle-B0rL38D3.js → lifecycle-DaCovZwn.js} +6 -6
  164. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-6WL46dsB.js} +5 -5
  165. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-BBMTaP7S.js} +1 -1
  166. package/server/{linear-client-B0cIkTs4.js → linear-client-7fQThJTc.js} +3 -3
  167. package/server/{linear-client-6V2E-DSa.js → linear-client-BTGApNLo.js} +1 -1
  168. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-B8pYRsiU.js} +1 -1
  169. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-Nk5s3L9M.js} +5 -5
  170. package/server/memory-fts-worker.js +1 -1
  171. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cqvbusr4.js} +14 -14
  172. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-DPb8foam.js} +5 -5
  173. package/server/{merge-BGWcBxku.js → merge-BB_bjJ9a.js} +1 -1
  174. package/server/{merge-vz80RvSE.js → merge-FZ78_cEz.js} +3 -3
  175. package/server/{merge-agent-GWhmnxFk.js → merge-agent-B3jRrlS1.js} +37 -33
  176. package/server/{merge-agent-BRSz26Oh.js → merge-agent-BuoC_PRZ.js} +2 -2
  177. package/server/{merge-batch-CFMEtTxv.js → merge-batch-B8bVjFWS.js} +1 -1
  178. package/server/{merge-completeness-CP347umA.js → merge-completeness-DQt7Qa7i.js} +4 -4
  179. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-DkdabVch.js} +1 -1
  180. package/server/merge-ops-DabXHp2i.js +2 -0
  181. package/server/merge-rebase-CXq0qsgR.js +2 -0
  182. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-qq40s91P.js} +2 -2
  183. package/server/{merge-set-DsGW8fmc.js → merge-set-BTNYvxM3.js} +1 -1
  184. package/server/{merge-set-eiE2nC6C.js → merge-set-BmRRflt0.js} +4 -4
  185. package/server/{merge-sync-CM2-myXu.js → merge-sync-0m2Q087q.js} +1 -1
  186. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-CJpOa0cZ.js} +2 -2
  187. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-CH5Mr3vN.js} +4 -4
  188. package/server/{merge-train-BOu3fN7O.js → merge-train-iwKqjtCF.js} +4 -4
  189. package/server/{merge-verification-BRp08IzI.js → merge-verification-JJc5GC2t.js} +6 -6
  190. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-BOqWA373.js} +4 -4
  191. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-CrhTdxZV.js} +1 -1
  192. package/server/messaging-nuwStbdQ.js +3 -0
  193. package/server/{multipart-parser-OAuW7824.js → multipart-parser-DxuW_rZV.js} +2 -2
  194. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-xuYLFhLw.js} +1 -1
  195. package/server/node_modules/.package-lock.json +11 -11
  196. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  197. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  198. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  199. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +27 -3
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +4 -4
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  226. package/server/node_modules/ansi-regex/index.js +3 -2
  227. package/server/node_modules/ansi-regex/package.json +1 -1
  228. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  229. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  230. package/server/node_modules/gaxios/package.json +3 -3
  231. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-Dmk0kO_p.js} +24 -23
  232. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-gf4TxfZb.js} +2 -2
  233. package/server/package-lock.json +12 -12
  234. package/server/package.json +1 -1
  235. package/server/{pan-dir-DDd91kMb.js → pan-dir-BMda7tQj.js} +5 -5
  236. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-BiHb8cD7.js} +150 -35
  237. package/server/{paths-CRLnDgcI.js → paths-DEe9j-kw.js} +2 -2
  238. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-J5uIIJPu.js} +2 -2
  239. package/server/{pickup-BjJsSX12.js → pickup-D1UbSDPd.js} +1 -1
  240. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-D-6okryb.js} +5 -5
  241. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-CCbgBzNC.js} +1 -1
  242. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-PGX3Pe8V.js} +1 -1
  243. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-BK4dzh0X.js} +17 -12
  244. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-BRhU7XPx.js} +1 -1
  245. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-BNAV9kpa.js} +2 -2
  246. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-DvHLaXKb.js} +1 -1
  247. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-DAWgzXQA.js} +3 -3
  248. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DC2_0t12.js} +4 -4
  249. package/server/prd-locations-BbAvqQmT.js +124 -0
  250. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-By_5WcT4.js} +2 -2
  251. package/server/{project-repos-B4MK48j4.js → project-repos--QeCg7yQ.js} +29 -3
  252. package/server/project-repos-3bI6t4fO.js +3 -0
  253. package/server/project-resource-refresh-queue-BaZC79S3.js +2 -0
  254. package/server/project-resource-refresh-queue-x-K9mvpP.js +865 -0
  255. package/server/{projects-DvPEAP18.js → projects-LftaVK99.js} +1 -1
  256. package/server/{prompts-BiS5I2tZ.js → prompts-BotGu-6W.js} +2 -2
  257. package/server/{providers-DrfK0Ip8.js → providers-BL1I66sM.js} +7 -7
  258. package/server/providers-Dqgz3MY5.js +3 -0
  259. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-D5Fz5jND.js} +4 -4
  260. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-Eux0gWFq.js} +1 -1
  261. package/server/public/assets/{dist-D0ryefak.js → dist-C3zShwhA.js} +1 -1
  262. package/server/public/assets/{dist-CSmUXazd.js → dist-D-JX_u7m.js} +3 -3
  263. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-UH3aweia.js} +1 -1
  264. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-ccIQ-WXS.js} +1 -1
  265. package/server/public/assets/index-2wV4ipy_.css +1 -0
  266. package/server/public/assets/index-BTVcdPve.js +860 -0
  267. package/server/public/assets/{linear-BPE7oswm.js → linear-Cnnu4YQy.js} +1 -1
  268. package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +1 -0
  269. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-BD8-Tye6.js} +1 -1
  270. package/server/public/assets/{prod-aKDYUrXQ.js → prod-Ca6aKMts.js} +4 -4
  271. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BmSrVyFD.js} +1 -1
  272. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-CEGy8Das.js} +1 -1
  273. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-VnQ8iY8s.js} +1 -1
  274. package/server/public/index.html +2 -2
  275. package/server/{pull-requests-BcHIsFJv.js → pull-requests-Cp_FDT8-.js} +3 -3
  276. package/server/pull-requests-jVGcVq5G.js +2 -0
  277. package/server/rally-CxhVgIQ6.js +3 -0
  278. package/server/{rally-api-ShZ4kvn0.js → rally-api-CqAIJ8RX.js} +2 -2
  279. package/server/{rally-api-u_vkr5c_.js → rally-api-Ij1Zt0NI.js} +1 -1
  280. package/server/{rally-B1OMtzch.js → rally-bQpBzUNf.js} +3 -3
  281. package/server/{rally-client-DgZvUZqX.js → rally-client-CN5vh4Ac.js} +1 -1
  282. package/server/{rally-client-D6Feq1Ka.js → rally-client-qKbCNRVW.js} +5 -5
  283. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  284. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  285. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-BNOMVh7C.js} +7 -7
  286. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-DrMyA_mA.js} +2 -2
  287. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-mxIYCnqs.js} +7 -7
  288. package/server/{record-By-wp6pg.js → record-Ug18Cp4V.js} +1 -1
  289. package/server/{record-update-ByGtIlUK.js → record-update-WyhsREoH.js} +1 -1
  290. package/server/{record-update-D23jPU6b.js → record-update-dBGxL9OC.js} +8 -6
  291. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-BKLrL6NX.js} +43 -10
  292. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-wFAixKsg.js} +1 -1
  293. package/server/{release-engine-Crc0Tjx-.js → release-engine-D9gaCBn9.js} +5 -5
  294. package/server/{release-set-DDXwbIK7.js → release-set-DPHHzEGx.js} +3 -3
  295. package/server/{remote-CBpLi4Yy.js → remote-BU6ONLpv.js} +3 -3
  296. package/server/{remote-oEMfXlwT.js → remote-BUEeUic6.js} +3 -3
  297. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-BVtASiOF.js} +1 -1
  298. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-CSaTLi3u.js} +6 -6
  299. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-CBV3b9TI.js} +13 -13
  300. package/server/{resolver-C8rooxoz.js → resolver-DvSMXty7.js} +31 -8
  301. package/server/{resolver-CuAULbLs.js → resolver-gxv97jsQ.js} +2 -2
  302. package/server/resume-DvHuF-bm.js +3 -0
  303. package/server/review-agent-DgkUPRx0.js +3 -0
  304. package/server/{review-agent-7C2w5CzU.js → review-agent-esZ0QXdY.js} +43 -55
  305. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DGGEobLp.js} +6 -6
  306. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-DmO8dIBH.js} +20 -11
  307. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-Ct0q7FkE.js} +3 -3
  308. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DHiiw7d8.js} +1 -1
  309. package/server/{review-status-CUnjjOUu.js → review-status-C_kQeeX0.js} +1 -1
  310. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-BZz1Y_22.js} +3 -3
  311. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-BWH0XW_m.js} +3 -3
  312. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  313. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  314. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-2C9lk85r.js} +2 -2
  315. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-Bq00Loey.js} +1 -1
  316. package/server/{review-status-DBnR5t4z.js → review-status-yOGD2MuK.js} +86 -27
  317. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-Brjaxoda.js} +1 -1
  318. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-CE_tr2iQ.js} +8 -8
  319. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-CD-4kDVx.js} +1 -1
  320. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Ca2V7QSY.js} +7 -7
  321. package/server/{rollup-DZwH4CLs.js → rollup--g9ik1XQ.js} +1 -1
  322. package/server/{rollup-QCwYcBdP.js → rollup-B6g9Nr6L.js} +8 -8
  323. package/server/{scanner-2aHeLC3W.js → scanner-YxIv-fG1.js} +8 -8
  324. package/server/{search-DwHYaj66.js → search-DqMN4__-.js} +2 -2
  325. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  326. package/server/{sequence-io-POKWdusG.js → sequence-io--b3_PsWq.js} +4 -4
  327. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-CqouKVZG.js} +6 -6
  328. package/server/server.js +1115 -1269
  329. package/server/{service-BLb_CyPL.js → service-CEp-3iow.js} +64 -63
  330. package/server/{session-fork-DcTzVwex.js → session-fork-GtoeCh2H.js} +2 -2
  331. package/server/{settings-Clw8UVNs.js → settings-CLQcdkoD.js} +2 -2
  332. package/server/{settings-B9-H2K_E.js → settings-Ch2pCVtt.js} +3 -3
  333. package/server/settings-DhtPDmmI.js +2 -0
  334. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BxiFrIKv.js} +3 -3
  335. package/server/{shadow-state-CEGrrECe.js → shadow-state-CSA1vtxr.js} +2 -2
  336. package/server/{shadow-state-e7250VUx.js → shadow-state-nGhCNXT2.js} +1 -1
  337. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-7q5QDmMj.js} +2 -2
  338. package/server/{ship-log-7BnQHuKU.js → ship-log-ie0A_SqV.js} +1 -1
  339. package/server/{ship-record-CwUX6Afo.js → ship-record-BM3oVvnL.js} +7 -7
  340. package/server/{ship-record-BgUPnpT0.js → ship-record-DHWH1hLz.js} +1 -1
  341. package/server/{ship-status-Ce3_3edi.js → ship-status-BEkddXMT.js} +2 -2
  342. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-BkzjVpWL.js} +1 -1
  343. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D0TE1lBD.js} +7 -7
  344. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-CkGweSCC.js} +19 -19
  345. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-s406rw1N.js} +2 -2
  346. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-CTAjwH5j.js} +1 -1
  347. package/server/{specialist-context-cHwpcXSh.js → specialist-context-CKasRfYu.js} +5 -5
  348. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-DrjrOmmn.js} +2 -2
  349. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-Du6quZ0_.js} +3 -3
  350. package/server/{specialists-xXcJHAyg.js → specialists-B-4zyE4Y.js} +1 -1
  351. package/server/{specialists-8LcQi9Np.js → specialists-CuDWiNdB.js} +21 -272
  352. package/server/{specialists-DocAK-7A.js → specialists-b0dMMjWq.js} +148 -685
  353. package/server/specialists-registry-1y6Rt_F1.js +3 -0
  354. package/server/specialists-registry-BYjs04iK.js +277 -0
  355. package/server/specialists-x-kPMhrL.js +4 -0
  356. package/server/specs-IYsFlM-L.js +3 -0
  357. package/server/{src-DudQNYVw.js → src-CY2Wl8IX.js} +337 -6
  358. package/server/{src-C2TAxwki.js → src-CZsPs61V.js} +6 -6
  359. package/server/{src-DUVvEA8Q.js → src-DeQwpuh6.js} +3 -3
  360. package/server/{stack-health-DKT4ySnA.js → stack-health-BQFSJc0l.js} +3 -3
  361. package/server/{stack-health-CbyiYS9H.js → stack-health-ypIKtkbE.js} +1 -1
  362. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-C2e1zdMT.js} +5 -5
  363. package/server/{staleness-BjOAq9-d.js → staleness-CRDK6LFG.js} +1 -1
  364. package/server/{staleness-D8UTEXV5.js → staleness-Fzx_3_Hr.js} +1 -1
  365. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-QNk4h9m6.js} +8 -8
  366. package/server/{state-home-DhAZlk5k.js → state-home-DdG8erBI.js} +2 -2
  367. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  368. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C6H3jfHE.js} +6 -6
  369. package/server/{state-mirror-Do7pag7W.js → state-mirror-DF4Lfxm0.js} +3 -3
  370. package/server/stuck-remediation-BDa_tXgB.js +774 -0
  371. package/server/stuck-remediation-BVNd9txd.js +2 -0
  372. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-BbbCZEtJ.js} +3 -3
  373. package/server/{summary-fork-CZ88rhVx.js → summary-fork-BvcW6bq0.js} +113 -30
  374. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-DIQmtOuV.js} +2 -2
  375. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  376. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  377. package/server/supervisor/pty-supervisor.js +3 -3
  378. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  379. package/server/{supervisor-D4v0WfiQ.js → supervisor-D3jC2c7A.js} +4 -4
  380. package/server/supervisor-v0cYN2Vp.js +2 -0
  381. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-CMWAQuWM.js} +3 -3
  382. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-C-pJOPsn.js} +1 -1
  383. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-DVlrLF9A.js} +2 -2
  384. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-QKtIYXI2.js} +2 -2
  385. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-cJea1OLo.js} +16 -16
  386. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-C5DI_gWX.js} +6 -6
  387. package/server/{test-verdict-BWm3hgDj.js → test-verdict-C7kmd2_Y.js} +1 -1
  388. package/server/{test-verdict-BWtRmdiR.js → test-verdict-DUbDHqeD.js} +2 -2
  389. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-BNQHwblU.js} +1 -1
  390. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-CO08YlfQ.js} +2 -2
  391. package/server/tmux-B8zsqD_6.js +4 -0
  392. package/server/{tmux-BqXzRuaH.js → tmux-DWEc4Ld9.js} +91 -19
  393. package/server/{token-CO3INKbh.js → token-Bez-qCB2.js} +2 -2
  394. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  395. package/server/token-util-DfUS3Lpp.js +3 -0
  396. package/server/{tracker-config-DVzhaUxO.js → tracker-config-CJzPhSHv.js} +2 -2
  397. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-DJAOAuMN.js} +2 -2
  398. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-D3H5I6b9.js} +1 -1
  399. package/server/{tunnel-DauSR-rs.js → tunnel-BSdKnW0U.js} +1 -1
  400. package/server/{tunnel-CwOnS-PB.js → tunnel-Cr3ctqxp.js} +3 -3
  401. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  402. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  403. package/server/{types-DjpLVpsj.js → types-fzBp9cYi.js} +1 -1
  404. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  405. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-IZQ-J8jt.js} +5 -5
  406. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-DXApKcc2.js} +5 -5
  407. package/server/{uat-train-COSy-vEX.js → uat-train-CycEzpbE.js} +1 -1
  408. package/server/{uat-train-DVUNW03P.js → uat-train-IIZlz7r3.js} +0 -0
  409. package/server/{validate-Dvv83iBx.js → validate-Ur4xH5bN.js} +3 -3
  410. package/server/{validation-BdCjzWLN.js → validation-CHovCoTT.js} +1 -1
  411. package/server/{validation-DlHafKzu.js → validation-Dr6V4PXx.js} +9 -6
  412. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-D3viYe_t.js} +1 -1
  413. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-k5Ftpg0c.js} +1 -1
  414. package/server/{verification-runner-C6wdZda2.js → verification-runner-BuqGwm2t.js} +1 -1
  415. package/server/{verification-runner-DwP2fUEF.js → verification-runner-Dl13mmsI.js} +53 -27
  416. package/server/{vtt-parser-luerJpYT.js → vtt-parser-BSnAB-Og.js} +1 -1
  417. package/server/work-agent-prompt-CJJ4tXci.js +3 -0
  418. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CioeOuM4.js} +14 -14
  419. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-B65Gqn9N.js} +2 -2
  420. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-Ct1HVh6z.js} +1 -1
  421. package/server/{workflows-BYwR2aIN.js → workflows-AgFul1xc.js} +114 -41
  422. package/server/workflows-CfHm8lVd.js +2 -0
  423. package/server/{workspace-B-QJa3Ps.js → workspace-Cu3XlMXt.js} +1 -1
  424. package/server/{workspace-iTnTycOB.js → workspace-Cy4sDd3q.js} +3 -3
  425. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-BI0Hz6zI.js} +1 -1
  426. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-CMaqvizr.js} +4 -4
  427. package/server/{workspace-config-D0CavVtz.js → workspace-config-DRYDO7Zr.js} +1 -1
  428. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CgovxDrO.js} +17 -17
  429. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-jfkKAEuO.js} +1 -1
  430. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BDqXzGGK.js} +1 -1
  431. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-BNzODIv6.js} +2 -2
  432. package/server/{workspaces-BlpbOPZ7.js → workspaces-BJdPqx_J.js} +131 -127
  433. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  434. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  435. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  436. package/sync-sources/rules/pan-handoff-focus-limit.md +12 -5
  437. package/sync-sources/rules/ste-writing.md +17 -0
  438. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  439. package/sync-sources/rules/writing-style.md +3 -2
  440. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  441. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  442. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  443. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +182 -0
  444. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  445. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  446. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  447. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  448. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  449. package/sync-sources/skills/pan-gauntlet-loop/references/lessons.md +60 -0
  450. package/sync-sources/skills/pan-handoff/SKILL.md +13 -6
  451. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  452. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  453. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  454. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  455. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  456. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  457. package/server/activity-logger-BejO16Am.js +0 -3
  458. package/server/agent-state-DH_-Jkua.js +0 -3
  459. package/server/agents-megfmQHM.js +0 -3
  460. package/server/archive-planning-C-H9cM_J.js +0 -2
  461. package/server/build-info-PQlh_Rhb.js +0 -2
  462. package/server/cli-TaZspPHS.js +0 -2
  463. package/server/cliproxy-36ncAXlu.js +0 -3
  464. package/server/context-layers-CF6zHws4.js +0 -4
  465. package/server/conversations-AnGJ5rtX.js +0 -3
  466. package/server/deacon-BEH-IY0v.js +0 -5
  467. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  468. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  469. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  470. package/server/delivery-cJM6zRjJ.js +0 -3
  471. package/server/deploy-queue-CmVBZEja.js +0 -2
  472. package/server/dist-VKBfkdi7.js +0 -3
  473. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  474. package/server/factory-D4V2wd_V.js +0 -717
  475. package/server/forge-CrP1L3i6.js +0 -2
  476. package/server/hume-1ubD_6O7.js +0 -3
  477. package/server/inspect-agent-CfxERkNt.js +0 -2
  478. package/server/merge-ops-DtHx17Vd.js +0 -2
  479. package/server/merge-rebase-BvB4UuNS.js +0 -2
  480. package/server/project-repos-BJiShUsN.js +0 -3
  481. package/server/providers-CStNGwze.js +0 -3
  482. package/server/public/assets/index-BFEwfmqX.js +0 -860
  483. package/server/public/assets/index-_USwyTAT.css +0 -1
  484. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  485. package/server/pull-requests-C1Cqp2yo.js +0 -2
  486. package/server/rally-CjayjUIl.js +0 -3
  487. package/server/resume-D7JuMCRQ.js +0 -3
  488. package/server/review-agent-BUNTVJK2.js +0 -2
  489. package/server/settings-DBWB1gsG.js +0 -2
  490. package/server/specialists-D8gsOCwh.js +0 -3
  491. package/server/specs-BqkrRnU9.js +0 -3
  492. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  493. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  494. package/server/supervisor-DX8VsPnb.js +0 -2
  495. package/server/tmux-CqNapnrr.js +0 -4
  496. package/server/token-util-Bu8bPF9f.js +0 -3
  497. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -1,48 +1,49 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $t as findProjectByPathSync, Bi as sessionFilePath, Br as fmix32, C as DEFAULT_TIERED_EXECUTION_CONFIG, Di as encodeClaudeProjectDir, Dt as queueAutoCommit, E as init_tier_table, Ei as claudeSessionTranscriptExists, Er as resolveModel, Et as pushPendingStateCommits, Fi as init_paths, Fr as CLIPROXY_GPT56_CONTEXT_WINDOW, Gn as init_issue_id, Gt as shouldCommitLegacyWorkspaceArtifacts, Hr as init_percent, Ht as init_state_read_home, Ir as CLIPROXY_GPT56_LONG_CONTEXT_WINDOW, Jn as resolveBareNumericIdSync, Li as isDevMode, Lr as GPT56_LONG_CONTEXT_VARIANTS, Mr as init_model_capabilities, O as resolveTieredExecutionEnabled, On as resolveProjectFromIssueSync, Ot as reconcileStatePlaneDrift, Pi as getOverdeckHome, Pr as resolveModelIdSync, Qn as require_dist, Ri as packageRoot, Tr as init_roles, Tt as init_auto_commit, Vr as fnv1a32, Wn as extractPrefixSync, Wt as resolveStateReadHomeSync, Y as init_record, Yr as FsError, an as getProjectSwarmHotspots, at as writeAgentHarnessModelSync, d as isTldrEnabledSync, dr as init_providers, et as readIssueRecordForWorkspaceSync, fn as init_projects, gr as ensureOpenAICompatibleProxyRunning, hr as setupCredentialFileAuthSync, jr as hasModelCapabilitySync, k as resolveTieredExecutionEnabledForIssue, kr as getModelCapabilitySync, lr as getProviderEnvSync, mr as resolveKimiCodeModelAlias, oi as init_errors, on as getProjectSync, or as clearCredentialFileAuthSync, p as loadConfigSync, qr as ClaudeCredentialParseError, ri as TmuxError, rn as getIssuePrefix, rt as resolveProjectForIssue, si as AGENTS_DIR, sr as getBuiltInDefaultHarness, t as init_config_yaml, tt as readIssueRecordSync, u as isClaudeCodeChannelsMcpEnabled, ur as getProviderForModelSync, vr as init_openai_compatible_proxy, w as TIERED_EXECUTION_DIFFICULTIES, wt as flushAutoCommits, zi as resolveOhmypiExtensionPath } from "./config-yaml-BwOEANMr.js";
3
- import { h as loadConfigSync$1, p as init_config } from "./config-tucKBCCc.js";
4
- import { a as emitActivityEntrySync, c as init_activity_logger, o as emitActivityTtsSync } from "./activity-logger-BAVLrkR7.js";
5
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-KTp9KV9u.js";
6
- import { n as init_fs_lock, s as withRecordFsLock } from "./fs-lock-cw25uO_E.js";
7
- import { i as init_record_update, n as clearRecordPipelineClosedOut } from "./record-update-D23jPU6b.js";
8
- import { B as sessionExists, E as killSessionSync, H as setOption, I as sendEscapeKeyAsync, L as sendKeys, M as listSessionsSync, O as listPaneValues, S as init_tmux, T as killSession, V as sessionExistsSync, f as exactPaneTarget, i as capturePaneSync, it as BLANKED_PROVIDER_ENV, o as createSession, r as capturePane, s as createSessionSync, st as init_child_env, w as isPaneDead, z as sendRawKeystroke } from "./tmux-BqXzRuaH.js";
9
- import { a as getWorkspaceForIssue, o as init_resolver } from "./resolver-CuAULbLs.js";
10
- import { a as init_event_store, i as initEventStore } from "./event-store-D7qcJXuZ.js";
11
- import { o as OHMYPI_BEHAVIOR, s as getHarnessBehavior } from "./src-DudQNYVw.js";
12
- import { a as readVerdictPreservationStatus, d as getOverdeckAgentStateSync, f as init_agent_state_sync, i as init_work_start_verdicts, l as resetWorkStartPipelineVerdicts, m as saveOverdeckAgentStateSync, o as refreshWorkStartReviewedAnchor, p as listOverdeckAgentStatesSync, r as registerPipelineTelemetryAgentReader, t as init_pipeline_agent_reader } from "./pipeline-agent-reader-BLc43dVJ.js";
13
- import { a as countAgentsByStatus, c as init_agents$2, g as logAgentLifecycleSync, h as init_persistent_logger } from "./agents-CqQJW75N.js";
14
- import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-CDJcmHHZ.js";
15
- import { o as getPricingSync, s as init_cost } from "./cost-CQKI6OCu.js";
16
- import { t as init_behavior } from "./behavior-Bitko0mD.js";
17
- import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-B-ADeXKY.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-CX6jHRDP.js";
19
- import { a as init_feature_registry_population, i as resetPostMergeState, n as init_post_merge_state, o as recordFeatureRegistryLifecycle } from "./post-merge-state-_Lj3LDLh.js";
20
- import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-zY75jrRJ.js";
21
- import { R as normalizeHarness, S as getConversationByName, k as init_conversations, y as createConversation, z as reactivateConversationForSpawn } from "./conversations-DhwxsOru.js";
22
- import { n as readActiveDashboardBundleSync, t as init_active_dashboard_bundle } from "./active-dashboard-bundle-CLwfD-Om.js";
23
- import { a as readCavemanVariant, n as init_workspace } from "./workspace-iTnTycOB.js";
24
- import { C as generateLauncherScriptSync, D as normalizeModelOverrideSync, E as init_model_validation, O as requireModelOverrideSync, S as normalizeFlywheelRunId, _ as init_tmux_dedup, b as init_provenance, f as completeKeyedSubmit, i as init_auto_spawn_consent, k as shellQuoteModelIdSync, s as withAutoSpawnConsentClaim, w as init_launcher_generator, x as isOperatorStartedBy, y as sendKeysDedup } from "./auto-spawn-consent-BDfe4qz0.js";
25
- import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-aHgDcZi5.js";
26
- 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-DyTp2gSB.js";
27
- import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-OOea7lXs.js";
28
- import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BgXYDo2Z.js";
29
- import { a as getFlywheelActiveRunIdSync, c as init_control_settings } from "./control-settings-5k6ixdFW.js";
30
- import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-D4V2wd_V.js";
31
- import { c as init_stack_health, o as getWorkspaceStackHealth } from "./stack-health-DKT4ySnA.js";
32
- import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal, s as resolveCanonicalReviewStatus } from "./review-status-source-Ct912fv_.js";
33
- import { N as getProjectPanPaths, P as init_paths$1, h as readWorkspacePlanSync, s as init_io } from "./io-DfvO2xyh.js";
34
- import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-DI9LaK_q.js";
35
- import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-NQ19vvlB.js";
36
- import { a as init_git_utils, l as renderWorkspaceGitShowPromise } from "./git-utils-DV4B9TRl.js";
37
- import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-CHiGg8iu.js";
38
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-1NZcVx7n.js";
39
- import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-DC75T4Mr.js";
40
- import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-CRfiXLY0.js";
41
- import { a as init_state_home, c as isStateMigrated } from "./state-home-DhAZlk5k.js";
42
- import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-BlGv6twJ.js";
43
- import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-CCBpRv5m.js";
44
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-DVzhaUxO.js";
45
- import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-D8R-LWX5.js";
2
+ import { $t as findProjectByPathSync, Bi as isDevMode, C as DEFAULT_TIERED_EXECUTION_CONFIG, Dr as init_roles, Dt as queueAutoCommit, E as init_tier_table, Et as pushPendingStateCommits, Gt as shouldCommitLegacyWorkspaceArtifacts, Hi as resolveOhmypiExtensionPath, Hr as fmix32, Ht as init_state_read_home, Ir as resolveModelIdSync, Kn as extractPrefixSync, Li as getOverdeckHome, Lr as CLIPROXY_GPT56_CONTEXT_WINDOW, Nr as hasModelCapabilitySync, O as resolveTieredExecutionEnabled, Oi as claudeSessionTranscriptExists, On as resolveProjectFromIssueSync, Or as resolveModel, Ot as reconcileStatePlaneDrift, Pr as init_model_capabilities, Ri as init_paths, Rr as CLIPROXY_GPT56_LONG_CONTEXT_WINDOW, Tt as init_auto_commit, Ui as sessionFilePath, Ur as fnv1a32, Vi as packageRoot, Wr as init_percent, Wt as resolveStateReadHomeSync, Xn as resolveBareNumericIdSync, Y as init_record, Yr as ClaudeCredentialParseError, Zr as FsError, _r as setupCredentialFileAuthSync, ai as TmuxError, an as getProjectSwarmHotspots, at as writeAgentHarnessModelSync, br as init_openai_compatible_proxy, ci as init_errors, cr as clearCredentialFileAuthSync, d as isTldrEnabledSync, dr as getProviderEnvSync, er as require_dist, et as readIssueRecordForWorkspaceSync, fn as init_projects, fr as getProviderForModelSync, gr as resolveKimiCodeModelAlias, jr as getModelCapabilitySync, k as resolveTieredExecutionEnabledForIssue, ki as encodeClaudeProjectDir, li as AGENTS_DIR, lr as getBuiltInDefaultHarness, on as getProjectSync, p as loadConfigSync, pr as init_providers, qn as init_issue_id, rn as getIssuePrefix, rt as resolveProjectForIssue, t as init_config_yaml, tt as readIssueRecordSync, u as isClaudeCodeChannelsMcpEnabled, vr as ensureOpenAICompatibleProxyRunning, w as TIERED_EXECUTION_DIFFICULTIES, wt as flushAutoCommits, zr as GPT56_LONG_CONTEXT_VARIANTS } from "./config-yaml-D9nfpEx1.js";
3
+ import { h as loadConfigSync$1, p as init_config } from "./config-ZGjvuR6J.js";
4
+ import { l as init_activity_logger, o as emitActivityEntrySync, s as emitActivityTtsSync } from "./activity-logger-BWZhVphb.js";
5
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CHIvOb9q.js";
6
+ import { n as init_fs_lock, s as withRecordFsLock } from "./fs-lock-C7J-ugIf.js";
7
+ import { i as init_record_update, n as clearRecordPipelineClosedOut } from "./record-update-dBGxL9OC.js";
8
+ import { $ as init_pane_choice_menu, B as sendKeys, C as init_tmux, D as killSessionSync, E as killSession, G as setOption, H as sendRawKeystroke, P as listSessionsSync, Q as buildChoiceKeystrokes, T as isPaneDead, U as sessionExists, W as sessionExistsSync, a as capturePaneText, c as createSessionSync, ct as BLANKED_PROVIDER_ENV, dt as init_child_env, et as paneChoiceMenuSignature, i as capturePaneSync, k as listPaneValues, nt as parsePaneChoiceMenu, p as exactPaneTarget, r as capturePane, s as createSession, v as getManagedTmuxSocketName, z as sendEscapeKeyAsync } from "./tmux-DWEc4Ld9.js";
9
+ import { a as getWorkspaceForIssue, o as init_resolver } from "./resolver-gxv97jsQ.js";
10
+ import { a as init_event_store, i as initEventStore } from "./event-store-BCSgMubf.js";
11
+ import { o as OHMYPI_BEHAVIOR, s as getHarnessBehavior } from "./src-CY2Wl8IX.js";
12
+ import { a as readVerdictPreservationStatus, d as getOverdeckAgentStateSync, f as init_agent_state_sync, i as init_work_start_verdicts, l as resetWorkStartPipelineVerdicts, m as saveOverdeckAgentStateSync, o as refreshWorkStartReviewedAnchor, p as listOverdeckAgentStatesSync, r as registerPipelineTelemetryAgentReader, t as init_pipeline_agent_reader } from "./pipeline-agent-reader-D-6okryb.js";
13
+ import { a as countAgentsByStatus, c as init_agents$2, g as logAgentLifecycleSync, h as init_persistent_logger } from "./agents-jXgqpHca.js";
14
+ import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-e_OEYZEe.js";
15
+ import { o as getPricingSync, s as init_cost } from "./cost-CiIwxH1D.js";
16
+ import { t as init_behavior } from "./behavior-BiCQzqyT.js";
17
+ import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-DOkdE_yB.js";
18
+ import { b as init_cliproxy, c as bridgeGeminiAuthToCliproxy, h as getCliproxyClientEnv, l as decodeJwtPayload$1, p as getCliproxyAuthDir, s as bridgeCodexAuthToCliproxySync, v as getCliproxyLogPath } from "./cliproxy-BpYpkogS.js";
19
+ import { a as init_feature_registry_population, i as resetPostMergeState, n as init_post_merge_state, o as recordFeatureRegistryLifecycle } from "./post-merge-state-DC2_0t12.js";
20
+ import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DoVzb4b7.js";
21
+ import { A as init_conversations, B as reactivateConversationForSpawn, C as getConversationByName, b as createConversation, z as normalizeHarness } from "./conversations-C75EFFjf.js";
22
+ import { n as readActiveDashboardBundleSync, t as init_active_dashboard_bundle } from "./active-dashboard-bundle-Byh6sP-q.js";
23
+ import { a as readCavemanVariant, n as init_workspace } from "./workspace-Cy4sDd3q.js";
24
+ import { C as generateLauncherScriptSync, D as normalizeModelOverrideSync, E as init_model_validation, O as requireModelOverrideSync, S as normalizeFlywheelRunId, _ as init_tmux_dedup, b as init_provenance, f as completeKeyedSubmit, i as init_auto_spawn_consent, k as shellQuoteModelIdSync, s as withAutoSpawnConsentClaim, w as init_launcher_generator, x as isOperatorStartedBy, y as sendKeysDedup } from "./auto-spawn-consent-Dc4mtM-B.js";
25
+ import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-Bc5kjX1q.js";
26
+ import { D as init_layers, F as resolveWorkspaceContextFile, L as workspaceContextFile, b as renderForHarness, d as renderProjectLayer, i as workspaceContextWithoutProjectLayer, l as init_render, r as init_assemble, u as renderGlobalLayer, y as init_harness } from "./assemble-CyvEBmmq.js";
27
+ import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-KaSKE-R3.js";
28
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-tMmgJfC1.js";
29
+ import { a as getFlywheelActiveRunIdSync, c as init_control_settings } from "./control-settings-BMoDHY1G.js";
30
+ import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-BrdqXBeK.js";
31
+ import { c as init_stack_health, o as getWorkspaceStackHealth } from "./stack-health-BQFSJc0l.js";
32
+ import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal, s as resolveCanonicalReviewStatus } from "./review-status-source-Jq0BXmn3.js";
33
+ import { N as getProjectPanPaths, P as init_paths$1, h as readWorkspacePlanSync, s as init_io } from "./io-DKrWd3gX.js";
34
+ import { a as getDispatchableItems, c as init_dag, o as groupItemsByWave, r as createActiveSlice } from "./dag-BPc74hwj.js";
35
+ import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-BjBjxqNh.js";
36
+ import { a as init_git_utils, l as renderWorkspaceGitShowPromise } from "./git-utils-DW8-jIUJ.js";
37
+ import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-CMaqvizr.js";
38
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-DusNpVEe.js";
39
+ import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-Doq_tF-f.js";
40
+ import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-BaDSNR-k.js";
41
+ import { a as init_state_home, c as isStateMigrated } from "./state-home-DdG8erBI.js";
42
+ import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-Cer2eFfj.js";
43
+ import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos } from "./project-repos--QeCg7yQ.js";
44
+ import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-6WL46dsB.js";
45
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-CJzPhSHv.js";
46
+ import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-CMWAQuWM.js";
46
47
  import { createRequire } from "node:module";
47
48
  import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
48
49
  import { Data, Duration, Effect, FileSystem } from "effect";
@@ -2049,12 +2050,12 @@ async function claudeSystemPromptFiles(workspace, harness) {
2049
2050
  }
2050
2051
  files.push(await ensureSessionContextBriefingFile());
2051
2052
  if (behavior.contextLayerKind === "pi") {
2052
- const { piGlobalContextFile } = await import("./context-layers-CF6zHws4.js");
2053
+ const { piGlobalContextFile } = await import("./context-layers-BGj2Y9l3.js");
2053
2054
  const globalFile = piGlobalContextFile();
2054
2055
  if (existsSync(globalFile)) files.unshift(globalFile);
2055
2056
  }
2056
2057
  if (behavior.contextLayerKind === "codex") {
2057
- const { codexGlobalContextFile } = await import("./context-layers-CF6zHws4.js");
2058
+ const { codexGlobalContextFile } = await import("./context-layers-BGj2Y9l3.js");
2058
2059
  const globalFile = codexGlobalContextFile();
2059
2060
  if (existsSync(globalFile)) files.unshift(globalFile);
2060
2061
  }
@@ -2383,7 +2384,7 @@ async function injectPiPromptTimeMemory(agentId, prompt) {
2383
2384
  agentRole: agentState.role ?? "work",
2384
2385
  agentHarness: agentState.harness ?? "claude-code"
2385
2386
  };
2386
- const { injectPromptTimeMemory } = await import("./injection-BxbZKPDh.js");
2387
+ const { injectPromptTimeMemory } = await import("./injection-BviePcm3.js");
2387
2388
  const result = await injectPromptTimeMemory({
2388
2389
  prompt,
2389
2390
  identity,
@@ -2417,7 +2418,7 @@ async function injectPiConversationMemory(opts, prompt) {
2417
2418
  agentRole: "work",
2418
2419
  agentHarness: "ohmypi"
2419
2420
  };
2420
- const { injectPromptTimeMemory } = await import("./injection-BxbZKPDh.js");
2421
+ const { injectPromptTimeMemory } = await import("./injection-BviePcm3.js");
2421
2422
  const result = await injectPromptTimeMemory({
2422
2423
  prompt,
2423
2424
  identity,
@@ -2828,7 +2829,7 @@ function resolveRegisteredSlotSpawn(issueId, baseWorkspace, options) {
2828
2829
  const issueLower = issueId.toLowerCase();
2829
2830
  return {
2830
2831
  agentId: `agent-${issueLower}-slot-${slotIndex}`,
2831
- branch: `feature/${issueLower}-slot-${slotIndex}`,
2832
+ branch: options.slotBranch ?? `feature/${issueLower}-slot-${slotIndex}`,
2832
2833
  workspace: `${baseWorkspace}-slot-${slotIndex}`,
2833
2834
  slotIndex,
2834
2835
  slotItemId
@@ -2983,7 +2984,7 @@ async function transitionIssueToInReview(issueId, workspacePath) {
2983
2984
  async function buildAgentLaunchConfig(opts) {
2984
2985
  const model = requireModelOverrideSync(opts.model);
2985
2986
  try {
2986
- const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-CYOvFE3A.js");
2987
+ const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-C7rWsnya.js");
2987
2988
  await Effect.runPromise(injectOverdeckInfraDeny(opts.workspace));
2988
2989
  } catch (err) {
2989
2990
  console.warn(`[agents] injectOverdeckInfraDeny failed for ${opts.agentId} (non-fatal): ${err instanceof Error ? err.message : err}`);
@@ -3076,7 +3077,7 @@ async function retrieveSpawnTimeMemoryContext(input) {
3076
3077
  agentRole: input.role,
3077
3078
  agentHarness: input.harness
3078
3079
  };
3079
- const { injectPromptTimeMemory } = await import("./injection-BxbZKPDh.js");
3080
+ const { injectPromptTimeMemory } = await import("./injection-BviePcm3.js");
3080
3081
  return (await injectPromptTimeMemory({
3081
3082
  prompt: input.prompt,
3082
3083
  identity,
@@ -3176,7 +3177,7 @@ async function assertWorkspaceStackHealthyForSpawn(issueId, role, allowHost = fa
3176
3177
  record.attempts += 1;
3177
3178
  spawnStackRebuildState.set(normalizedIssue, record);
3178
3179
  console.log(`[agents] Workspace stack for ${normalizedIssue} unhealthy (${details}) — rebuilding before spawn (attempt ${record.attempts}/${SPAWN_STACK_REBUILD_MAX_ATTEMPTS})`);
3179
- const { rebuildWorkspaceStack } = await import("./rebuild-stack-CCwKHZb6.js");
3180
+ const { rebuildWorkspaceStack } = await import("./rebuild-stack-DrMyA_mA.js");
3180
3181
  const result = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[agents] ${normalizedIssue} stack rebuild: ${m}`) })).catch((err) => ({
3181
3182
  success: false,
3182
3183
  error: err instanceof Error ? err.message : String(err)
@@ -4615,9 +4616,12 @@ function isTerminalSwarmSlotAgent(agent, readPlan = readWorkspacePlanSync, readR
4615
4616
  const slotIndex = agent.slotIndex ?? (idMatch ? Number(idMatch[1]) : void 0);
4616
4617
  if (!slotIndex) return false;
4617
4618
  const baseWorkspace = agent.workspace.replace(/-slot-\d+$/, "");
4618
- const assignment = readRecord(baseWorkspace, agent.issueId)?.swarm?.slotAssignments?.find((candidate) => candidate.slotIndex === slotIndex);
4619
+ const record = readRecord(baseWorkspace, agent.issueId);
4620
+ const assignment = record?.swarm?.slotAssignments?.find((candidate) => candidate.slotIndex === slotIndex);
4619
4621
  const itemId = agent.slotItemId ?? assignment?.itemId;
4620
4622
  if (!itemId) return false;
4623
+ const canonicalStatus = record?.statusOverrides?.[itemId];
4624
+ if (canonicalStatus === "completed" || canonicalStatus === "cancelled") return true;
4621
4625
  const item = (readPlan(baseWorkspace) ?? readPlan(agent.workspace))?.plan.items.find((candidate) => candidate.id === itemId);
4622
4626
  return item?.status === "completed" || item?.status === "cancelled";
4623
4627
  }
@@ -5548,7 +5552,7 @@ var init_runtime_census = __esmMin((() => {
5548
5552
  ]);
5549
5553
  runtimeCensusService = createRuntimeCensusService({
5550
5554
  listPanes: async () => {
5551
- const { listAllPaneRecords } = await import("./tmux-CqNapnrr.js");
5555
+ const { listAllPaneRecords } = await import("./tmux-B8zsqD_6.js");
5552
5556
  return Effect.runPromise(listAllPaneRecords());
5553
5557
  },
5554
5558
  readProcesses: readRuntimeProcessTable
@@ -6150,13 +6154,48 @@ function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
6150
6154
  if (trimmedExtra) lines.push("", "## Additional Foreman Instructions", trimmedExtra);
6151
6155
  return lines.join("\n");
6152
6156
  }
6153
- async function ensureRegisteredSlotWorktree(baseWorkspace, slot) {
6154
- if (existsSync$1(slot.workspace)) return;
6157
+ async function ensureRegisteredSlotWorktree(issueId, baseWorkspace, slot) {
6158
+ const repoRoots = resolveWorkspaceRepoRootsSync(issueId, baseWorkspace);
6159
+ const polyrepoRoots = repoRoots.filter((root) => root.isPolyrepo);
6160
+ if (polyrepoRoots.length > 0) {
6161
+ const expected = polyrepoRoots.map((root) => ({
6162
+ ...root,
6163
+ target: `${slot.workspace}/${root.dir.slice(baseWorkspace.length + 1).split("/")[0]}`
6164
+ }));
6165
+ if (existsSync$1(slot.workspace)) {
6166
+ if (expected.filter((root) => !existsSync$1(`${root.target}/.git`)).length === 0) {
6167
+ if ((await Promise.all(expected.map(async (root) => {
6168
+ try {
6169
+ return (await execAsync$4("git branch --show-current", { cwd: root.target })).stdout.trim();
6170
+ } catch {
6171
+ return "";
6172
+ }
6173
+ }))).every((branch) => branch === slot.branch)) return;
6174
+ }
6175
+ throw new Error(`Registered polyrepo slot workspace is incomplete at ${slot.workspace}; run pan swarm reset before dispatching it.`);
6176
+ }
6177
+ await mkdir(slot.workspace, { recursive: true });
6178
+ try {
6179
+ for (const root of expected) await execAsync$4(await gitBranchExists(root.dir, slot.branch) ? `git worktree add ${JSON.stringify(root.target)} ${JSON.stringify(slot.branch)}` : `git worktree add -b ${JSON.stringify(slot.branch)} ${JSON.stringify(root.target)} ${JSON.stringify(root.sourceBranch)}`, { cwd: root.dir });
6180
+ } catch (error) {
6181
+ throw new Error(`Could not create isolated polyrepo slot workspace ${slot.workspace}: ${error instanceof Error ? error.message : String(error)}`);
6182
+ }
6183
+ return;
6184
+ }
6185
+ if (existsSync$1(slot.workspace)) {
6186
+ let branch = "";
6187
+ try {
6188
+ branch = (await execAsync$4("git branch --show-current", { cwd: slot.workspace })).stdout.trim();
6189
+ } catch {}
6190
+ if (branch === slot.branch) return;
6191
+ throw new Error(`Registered slot workspace is incomplete at ${slot.workspace}; run pan swarm reset before dispatching it.`);
6192
+ }
6155
6193
  await mkdir(dirname(slot.workspace), { recursive: true });
6156
6194
  const branchExists = await gitBranchExists(baseWorkspace, slot.branch);
6195
+ if (branchExists && !await gitRefsEqual(baseWorkspace, slot.branch, repoRoots[0].sourceBranch)) throw new Error(`Registered slot branch ${slot.branch} is not at ${repoRoots[0].sourceBranch}; refusing to reuse stale work.`);
6157
6196
  const target = JSON.stringify(slot.workspace);
6158
6197
  const branch = JSON.stringify(slot.branch);
6159
- await execAsync$4(branchExists ? `git worktree add ${target} ${branch}` : `git worktree add -b ${branch} ${target} HEAD`, { cwd: baseWorkspace });
6198
+ await execAsync$4(branchExists ? `git worktree add ${target} ${branch}` : `git worktree add -b ${branch} ${target} ${JSON.stringify(repoRoots[0].sourceBranch)}`, { cwd: baseWorkspace });
6160
6199
  }
6161
6200
  async function gitBranchExists(workspace, branch) {
6162
6201
  try {
@@ -6166,10 +6205,19 @@ async function gitBranchExists(workspace, branch) {
6166
6205
  return false;
6167
6206
  }
6168
6207
  }
6208
+ async function gitRefsEqual(workspace, left, right) {
6209
+ try {
6210
+ const [leftResult, rightResult] = await Promise.all([execAsync$4(`git rev-parse ${JSON.stringify(left)}`, { cwd: workspace }), execAsync$4(`git rev-parse ${JSON.stringify(right)}`, { cwd: workspace })]);
6211
+ return leftResult.stdout.trim() === rightResult.stdout.trim();
6212
+ } catch {
6213
+ return false;
6214
+ }
6215
+ }
6169
6216
  var execAsync$4;
6170
6217
  var init_registered_slot_spawn = __esmMin((() => {
6171
6218
  init_dag();
6172
6219
  init_io();
6220
+ init_project_repos();
6173
6221
  execAsync$4 = promisify(exec);
6174
6222
  }));
6175
6223
  //#endregion
@@ -6208,7 +6256,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6208
6256
  });
6209
6257
  slotHarness = tierParams.harness ?? options.harness;
6210
6258
  }
6211
- await ensureRegisteredSlotWorktree(workspace, slot);
6259
+ await ensureRegisteredSlotWorktree(issueId, workspace, slot);
6212
6260
  }
6213
6261
  const prompt = slot ? buildRegisteredSlotPrompt(issueId, workspace, slot, options.prompt) : options.prompt;
6214
6262
  return spawnAgentWithoutConsentClaim({
@@ -6225,7 +6273,8 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6225
6273
  autoSpawnConsentRequired: options.autoSpawnConsentRequired,
6226
6274
  effort: options.effort,
6227
6275
  slotIndex: slot?.slotIndex,
6228
- slotItemId: slot?.slotItemId
6276
+ slotItemId: slot?.slotItemId,
6277
+ foreman: options.foreman
6229
6278
  }, acceptConsent);
6230
6279
  }
6231
6280
  const flywheelEnv = resolveFlywheelSpawnEnv(role, options.flywheelRunId);
@@ -6235,7 +6284,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6235
6284
  let reapWarmIdle = false;
6236
6285
  const advancing = role === "review" || role === "test" || role === "ship";
6237
6286
  try {
6238
- const { isPaneDead } = await import("./tmux-CqNapnrr.js");
6287
+ const { isPaneDead } = await import("./tmux-B8zsqD_6.js");
6239
6288
  if (await Effect.runPromise(isPaneDead(agentId))) reapWarmIdle = true;
6240
6289
  else if (advancing) {
6241
6290
  const { status } = resolveCanonicalReviewStatus(issueId);
@@ -6244,7 +6293,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6244
6293
  } catch {}
6245
6294
  if (!reapWarmIdle) throw new Error(`Role run ${agentId} already running. Use 'pan tell' to message it.`);
6246
6295
  console.log(`[spawn] ${agentId} is warm-idle from the previous cycle — reaping it for the new ${role} dispatch (PAN-2579)`);
6247
- const { killSession } = await import("./tmux-CqNapnrr.js");
6296
+ const { killSession } = await import("./tmux-B8zsqD_6.js");
6248
6297
  await Effect.runPromise(killSession(agentId)).catch(() => {});
6249
6298
  }
6250
6299
  await prepareWorkspaceForAgentSpawn(issueId, role, options.allowHost, workspace);
@@ -6259,7 +6308,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6259
6308
  assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
6260
6309
  await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
6261
6310
  if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
6262
- const { isCliproxyRunning } = await import("./cliproxy-36ncAXlu.js");
6311
+ const { isCliproxyRunning } = await import("./cliproxy-_yUU0HRY.js");
6263
6312
  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.");
6264
6313
  }
6265
6314
  const state = {
@@ -6268,6 +6317,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6268
6317
  workspace,
6269
6318
  harness: resolvedHarness,
6270
6319
  role,
6320
+ foreman: options.foreman || void 0,
6271
6321
  model: selectedModel,
6272
6322
  modelSpawnKey,
6273
6323
  status: "starting",
@@ -6385,7 +6435,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6385
6435
  const claudeCmd = `bash ${launcherScript}`;
6386
6436
  console.log(`[claude-invoke] purpose=role-run | role=${role} | model=${state.model} | source=agents.ts:spawnRun | session=${agentId} | command="${claudeCmd}"`);
6387
6437
  try {
6388
- const { preTrustDirectory } = await import("./workspace-manager-5BKPV6SY.js");
6438
+ const { preTrustDirectory } = await import("./workspace-manager-jfkKAEuO.js");
6389
6439
  preTrustDirectory(workspace);
6390
6440
  } catch {}
6391
6441
  clearReadySignal(agentId);
@@ -6451,7 +6501,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
6451
6501
  }
6452
6502
  markAgentRunning(state);
6453
6503
  try {
6454
- const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-Y0zG25ez.js");
6504
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-CsKV0Dis.js");
6455
6505
  const headAnchor = await snapshotWorkspaceHeadsPromise(issueId, workspace);
6456
6506
  if (headAnchor) state.roleRunHead = headAnchor;
6457
6507
  } catch {}
@@ -6493,7 +6543,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6493
6543
  });
6494
6544
  console.log(`[DEBUG] Selected model: ${selectedModel}`);
6495
6545
  if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
6496
- const { isCliproxyRunning } = await import("./cliproxy-36ncAXlu.js");
6546
+ const { isCliproxyRunning } = await import("./cliproxy-_yUU0HRY.js");
6497
6547
  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.");
6498
6548
  }
6499
6549
  const resolvedHarness = await resolveHarness({
@@ -6513,6 +6563,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6513
6563
  workspace: options.workspace,
6514
6564
  harness: resolvedHarness,
6515
6565
  role,
6566
+ foreman: options.foreman || void 0,
6516
6567
  model: selectedModel,
6517
6568
  modelSpawnKey,
6518
6569
  status: "starting",
@@ -6542,7 +6593,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6542
6593
  });
6543
6594
  }
6544
6595
  if (role === "work") try {
6545
- const { writeStoryFeatureContext } = await import("./work-agent-prompt--9AWNYwZ.js");
6596
+ const { writeStoryFeatureContext } = await import("./work-agent-prompt-CJJ4tXci.js");
6546
6597
  await writeStoryFeatureContext(options.workspace, options.issueId);
6547
6598
  } catch (ctxErr) {
6548
6599
  console.warn(`[agents] Could not write story feature context for ${options.issueId}: ${ctxErr.message}`);
@@ -6589,7 +6640,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6589
6640
  try {
6590
6641
  const venvPath = join$1(options.workspace, ".venv");
6591
6642
  if (isTldrEnabledSync() && existsSync(venvPath)) {
6592
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-CneJ24eL.js");
6643
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BNQHwblU.js");
6593
6644
  const tldrService = getTldrDaemonServiceSync(options.workspace, venvPath);
6594
6645
  if (!(await tldrService.getStatus()).running) {
6595
6646
  await tldrService.start(true);
@@ -6629,13 +6680,13 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6629
6680
  const claudeCmd = `bash ${launcherScript}`;
6630
6681
  console.log(`[claude-invoke] purpose=work-agent | model=${state.model} | source=agents.ts:spawnAgent | session=${agentId} | command="${claudeCmd}"`);
6631
6682
  try {
6632
- const { preTrustDirectory } = await import("./workspace-manager-5BKPV6SY.js");
6683
+ const { preTrustDirectory } = await import("./workspace-manager-jfkKAEuO.js");
6633
6684
  preTrustDirectory(options.workspace);
6634
6685
  } catch {}
6635
6686
  try {
6636
- const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-C33lDk9Z.js");
6687
+ const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-Oi5hdn1n.js");
6637
6688
  if (isGitHubAppConfigured()) {
6638
- const { findProjectByPathSync } = await import("./projects-DvPEAP18.js");
6689
+ const { findProjectByPathSync } = await import("./projects-LftaVK99.js");
6639
6690
  const ghRepo = findProjectByPathSync(resolve$1(options.workspace, "..", ".."))?.github_repo;
6640
6691
  if (ghRepo) {
6641
6692
  const [owner, repo] = ghRepo.split("/");
@@ -6651,7 +6702,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6651
6702
  const launchAndCaptureKimiSession = async () => {
6652
6703
  let kimiExistingSessionsBefore;
6653
6704
  if (resolvedHarness === "kimi-code") try {
6654
- const { kimiSessionsRoot } = await import("./kimi-code-DoMoGqIu.js");
6705
+ const { kimiSessionsRoot } = await import("./kimi-code-vtXl2DR5.js");
6655
6706
  kimiExistingSessionsBefore = new Set(await readdir$1(kimiSessionsRoot(join$1(homedir(), ".kimi-code"), options.workspace)));
6656
6707
  } catch {
6657
6708
  kimiExistingSessionsBefore = /* @__PURE__ */ new Set();
@@ -6669,14 +6720,14 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6669
6720
  ...providerEnv
6670
6721
  } }));
6671
6722
  if (kimiExistingSessionsBefore) {
6672
- const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-DoMoGqIu.js");
6723
+ const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-vtXl2DR5.js");
6673
6724
  const sessionId = await waitForNewKimiSessionAsync(join$1(homedir(), ".kimi-code"), options.workspace, kimiExistingSessionsBefore);
6674
6725
  if (sessionId) writeKimiSessionId(agentId, sessionId);
6675
6726
  else throw new Error(`kimi-code session capture timed out for ${agentId} — no new session directory appeared under the workspace bucket`);
6676
6727
  }
6677
6728
  };
6678
6729
  if (resolvedHarness === "kimi-code") {
6679
- const { withKimiSessionCaptureLock } = await import("./kimi-code-DoMoGqIu.js");
6730
+ const { withKimiSessionCaptureLock } = await import("./kimi-code-vtXl2DR5.js");
6680
6731
  try {
6681
6732
  await withKimiSessionCaptureLock(join$1(homedir(), ".kimi-code"), options.workspace, launchAndCaptureKimiSession);
6682
6733
  } catch (err) {
@@ -6739,7 +6790,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
6739
6790
  const codexHomeForAgent = join$1(homedir(), ".overdeck", "agents", agentId, "codex-home");
6740
6791
  (async () => {
6741
6792
  try {
6742
- const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-icapA4om.js");
6793
+ const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-DZhFfcWu.js");
6743
6794
  const rollout = await waitForCodexRollout(codexHomeForAgent, 12e4);
6744
6795
  if (rollout) {
6745
6796
  const threadId = extractThreadIdFromRollout(rollout);
@@ -7136,10 +7187,10 @@ var init_ohmypi = __esmMin((() => {
7136
7187
  return;
7137
7188
  }
7138
7189
  try {
7139
- await execAsync$2(`tmux -L overdeck send-keys -t ${agentId} C-c 2>/dev/null || true`);
7190
+ await execAsync$2(`tmux -L ${shellQuote(getManagedTmuxSocketName())} send-keys -t ${agentId} C-c 2>/dev/null || true`);
7140
7191
  } catch {}
7141
7192
  try {
7142
- const { stdout } = await execAsync$2(`tmux -L overdeck list-panes -t ${shellQuote(agentId)} -F '#{pane_pid}' 2>/dev/null`);
7193
+ const { stdout } = await execAsync$2(`tmux -L ${shellQuote(getManagedTmuxSocketName())} list-panes -t ${shellQuote(agentId)} -F '#{pane_pid}' 2>/dev/null`);
7143
7194
  const pid = stdout.trim();
7144
7195
  if (pid) await execAsync$2(`kill -TERM -- -${pid} 2>/dev/null || kill -TERM ${pid} 2>/dev/null || true`);
7145
7196
  } catch {}
@@ -7677,13 +7728,27 @@ var init_monitor_transport = __esmMin((() => {
7677
7728
  }));
7678
7729
  //#endregion
7679
7730
  //#region ../../lib/agents/messaging.ts
7680
- function queueAgentMail(agentId, message, pendingTurnEndDelivery = false, dedupKey, source) {
7731
+ /** PAN-3736 — the one phrase for "the message went to the mail file because the
7732
+ * agent was busy". It states that the agent is alive, and names the file, so a
7733
+ * reader never mistakes a mid-turn agent for a dead one. Turn-end delivery is
7734
+ * real for `.pending.md` mail: the codex notify hook replays the oldest pending
7735
+ * file at every turn boundary. The phrase still stops short of promising it,
7736
+ * because the hook only runs for codex sessions. */
7737
+ function busyAgentQueuedReason(mailPath) {
7738
+ return `agent is alive and mid-turn; message queued to its mail file (${mailPath})`;
7739
+ }
7740
+ /** Writes the message to the agent's durable mail dir and returns the file path
7741
+ * it wrote, so callers can name it in operator-facing output (PAN-3736). */
7742
+ function queueAgentMail(agentId, message, kind = "queued", dedupKey, source) {
7681
7743
  const mailDir = join$1(getAgentDir(agentId), "mail");
7682
7744
  mkdirSync(mailDir, { recursive: true });
7683
7745
  const now = /* @__PURE__ */ new Date();
7684
- const filename = dedupKey !== void 0 ? `dedup-${createHash("sha256").update(dedupKey).digest("hex").slice(0, 24)}.md` : `${now.toISOString().replace(/[:.]/g, "-")}${pendingTurnEndDelivery ? ".pending" : ""}.md`;
7746
+ const suffix = MAIL_FILENAME_SUFFIX[kind];
7747
+ const filename = dedupKey !== void 0 ? `dedup-${createHash("sha256").update(dedupKey).digest("hex").slice(0, 24)}${suffix}` : `${now.toISOString().replace(/[:.]/g, "-")}${suffix}`;
7685
7748
  const content = source ? formatMailFileContent(message, source, now) : `# Message\n\n${message}\n`;
7686
- writeFileSync(join$1(mailDir, filename), content);
7749
+ const mailPath = join$1(mailDir, filename);
7750
+ writeFileSync(mailPath, content);
7751
+ return mailPath;
7687
7752
  }
7688
7753
  function resolveAgentDeliveryMethod(state) {
7689
7754
  if (state?.harness === "acp") return "auto";
@@ -7727,7 +7792,7 @@ function deliverWithOptionalKey(normalizedId, message, caller, deliveryMethod, d
7727
7792
  * at-most-once across the whole replay window.
7728
7793
  */
7729
7794
  async function resumeThenDeliverKeyed(normalizedId, message, caller, agentState, dedupKey) {
7730
- const { resumeAgent } = await import("./agents-megfmQHM.js");
7795
+ const { resumeAgent } = await import("./agents-DpCuoF65.js");
7731
7796
  const result = await resumeAgent(normalizedId);
7732
7797
  if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
7733
7798
  const delivery = await deliverAgentMessage(normalizedId, message, `messageAgent:${caller}`, resolveAgentDeliveryMethod(agentState), { dedupKey });
@@ -7758,7 +7823,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7758
7823
  };
7759
7824
  if (agentState?.paused === true) {
7760
7825
  const gateBlockReason = getAgentResumeGateBlockReason(agentState)?.reason ?? "agent is paused";
7761
- queueAgentMail(normalizedId, message, false, opts.dedupKey);
7826
+ queueAgentMail(normalizedId, message, "queued", opts.dedupKey);
7762
7827
  logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
7763
7828
  console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
7764
7829
  return {
@@ -7771,7 +7836,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7771
7836
  const suspendedGate = decideMessageGate();
7772
7837
  if (suspendedGate.decision !== "proceed") {
7773
7838
  const gateBlockReason = suspendedGate.reason ?? "agent is gated";
7774
- queueAgentMail(normalizedId, message, false, opts.dedupKey);
7839
+ queueAgentMail(normalizedId, message, "queued", opts.dedupKey);
7775
7840
  logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
7776
7841
  console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
7777
7842
  return {
@@ -7782,7 +7847,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7782
7847
  }
7783
7848
  console.log(`[agents] Auto-resuming suspended agent ${normalizedId} to deliver message`);
7784
7849
  if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
7785
- const { resumeAgent } = await import("./agents-megfmQHM.js");
7850
+ const { resumeAgent } = await import("./agents-DpCuoF65.js");
7786
7851
  const result = await resumeAgent(normalizedId, message);
7787
7852
  if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
7788
7853
  if (result.messageDelivered === false) throw new Error(`Agent resumed but ready signal did not fire — message not delivered. Feedback is in the mail queue.`);
@@ -7796,7 +7861,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7796
7861
  const stoppedGate = decideMessageGate();
7797
7862
  if (stoppedGate.decision !== "proceed") {
7798
7863
  const gateBlockReason = stoppedGate.reason ?? "agent is gated";
7799
- queueAgentMail(normalizedId, message, false, opts.dedupKey);
7864
+ queueAgentMail(normalizedId, message, "queued", opts.dedupKey);
7800
7865
  logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
7801
7866
  console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
7802
7867
  return {
@@ -7807,9 +7872,9 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7807
7872
  }
7808
7873
  console.log(`[agents] Auto-resuming stopped agent ${normalizedId} to deliver feedback (session exists: ${await Effect.runPromise(sessionExists(normalizedId))})`);
7809
7874
  if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
7810
- const { resumeAgent } = await import("./agents-megfmQHM.js");
7875
+ const { resumeAgent } = await import("./agents-DpCuoF65.js");
7811
7876
  const resumeResult = await resumeAgent(normalizedId, message);
7812
- queueAgentMail(normalizedId, message, false);
7877
+ queueAgentMail(normalizedId, message);
7813
7878
  if (resumeResult.success && resumeResult.messageDelivered !== false) {
7814
7879
  await appendTellInterventionForUserSource(normalizedId, caller);
7815
7880
  console.log(`[agents] Resumed ${normalizedId} and delivered feedback`);
@@ -7851,7 +7916,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7851
7916
  const resumeModel = agentState.model || "claude-sonnet-4-6";
7852
7917
  const fallbackHarness = agentState.harness ?? "claude-code";
7853
7918
  const harnessLaunch = await prepareHarnessLaunch(fallbackHarness);
7854
- const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-megfmQHM.js");
7919
+ const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-DpCuoF65.js");
7855
7920
  await assertWorkspaceStackHealthyForSpawn(agentState.issueId || normalizedId.replace(/^agent-/, "").toUpperCase(), resumeRole, agentState.hostOverride === true, agentState.workspace);
7856
7921
  const fallbackPiFields = fallbackHarness === "ohmypi" ? await getOhmypiLauncherFields(normalizedId, resumeModel) : {};
7857
7922
  const fallbackCodexFields = fallbackHarness === "codex" ? getCodexLauncherFields(normalizedId, resumeModel, agentState.workspace, resumeRole) : {};
@@ -7934,14 +7999,14 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7934
7999
  ...reason ? { reason } : {}
7935
8000
  };
7936
8001
  }
7937
- const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-DQVGZVQ9.js");
8002
+ const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-BVtASiOF.js");
7938
8003
  const remoteState = loadRemoteAgentState(normalizedId);
7939
8004
  if (remoteState && remoteState.vmName) {
7940
8005
  console.log(`[agents] Sending message to remote agent ${normalizedId} on ${remoteState.vmName}`);
7941
8006
  if (opts.dedupKey !== void 0) {
7942
- const { sendToRemoteAgentKeyed } = await import("./remote-agents-DQVGZVQ9.js");
8007
+ const { sendToRemoteAgentKeyed } = await import("./remote-agents-BVtASiOF.js");
7943
8008
  const remoteOutcome = await sendToRemoteAgentKeyed(normalizedId, remoteState.vmName, message, opts.dedupKey);
7944
- queueAgentMail(normalizedId, message, false, opts.dedupKey);
8009
+ queueAgentMail(normalizedId, message, "delivered", opts.dedupKey);
7945
8010
  await appendTellInterventionForUserSource(normalizedId, caller);
7946
8011
  return {
7947
8012
  delivered: true,
@@ -7953,7 +8018,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7953
8018
  };
7954
8019
  }
7955
8020
  await sendToRemoteAgent(normalizedId, remoteState.vmName, message);
7956
- queueAgentMail(normalizedId, message, false);
8021
+ queueAgentMail(normalizedId, message, "delivered");
7957
8022
  await appendTellInterventionForUserSource(normalizedId, caller);
7958
8023
  return {
7959
8024
  delivered: true,
@@ -7962,7 +8027,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7962
8027
  }
7963
8028
  const expectedHarness = agentState?.harness ?? "claude-code";
7964
8029
  if (expectedHarness === "claude-code" && opts.dedupKey === void 0 && isMonitorLive(normalizedId)) {
7965
- queueAgentMail(normalizedId, message, false, opts.dedupKey, caller);
8030
+ queueAgentMail(normalizedId, message, "queued", opts.dedupKey, caller);
7966
8031
  logAgentLifecycleSync(normalizedId, `messageAgent delivered via monitor mail (caller: ${caller})`);
7967
8032
  console.log(`[agents] Delivered message to ${normalizedId} via monitor inbox`);
7968
8033
  await appendTellInterventionForUserSource(normalizedId, caller);
@@ -7978,19 +8043,19 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
7978
8043
  } catch {}
7979
8044
  if (appServerState && appServerState !== "closed" && appServerState !== "error") {
7980
8045
  if (!claimCodexIdleTurn(normalizedId)) {
7981
- queueAgentMail(normalizedId, message, true, opts.dedupKey);
7982
- logAgentLifecycleSync(normalizedId, "messageAgent queued mail for codex turn-end delivery: agent busy");
7983
- console.log(`[agents] Queued message for ${normalizedId}; codex agent is mid-turn`);
8046
+ const busyReason = busyAgentQueuedReason(queueAgentMail(normalizedId, message, "pending", opts.dedupKey));
8047
+ logAgentLifecycleSync(normalizedId, `messageAgent: ${busyReason}`);
8048
+ console.log(`[agents] ${normalizedId}: ${busyReason}`);
7984
8049
  await appendTellInterventionForUserSource(normalizedId, caller);
7985
8050
  return {
7986
8051
  delivered: true,
7987
8052
  queuedToMail: true,
7988
- reason: "queued for turn-end delivery"
8053
+ reason: busyReason
7989
8054
  };
7990
8055
  }
7991
8056
  const deliveryMethod = resolveAgentDeliveryMethod(agentState);
7992
8057
  const delivery = await deliverWithOptionalKey(normalizedId, message, `messageAgent:${caller}`, deliveryMethod, opts.dedupKey);
7993
- queueAgentMail(normalizedId, message, false, opts.dedupKey);
8058
+ queueAgentMail(normalizedId, message, "delivered", opts.dedupKey);
7994
8059
  await appendTellInterventionForUserSource(normalizedId, caller);
7995
8060
  return {
7996
8061
  delivered: delivery.ok,
@@ -8003,7 +8068,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
8003
8068
  if (panePids.length > 0 && !await hasAgentRuntimeInSubtree(panePids[0], expectedHarness)) {
8004
8069
  console.warn(`[agents] ${normalizedId} tmux session is a zombie (no ${expectedHarness} runtime) — attempting resume`);
8005
8070
  if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
8006
- const { resumeAgent } = await import("./agents-megfmQHM.js");
8071
+ const { resumeAgent } = await import("./agents-DpCuoF65.js");
8007
8072
  const resumeResult = await resumeAgent(normalizedId, message);
8008
8073
  if (resumeResult.success) {
8009
8074
  const delivered = resumeResult.messageDelivered !== false;
@@ -8028,7 +8093,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
8028
8093
  };
8029
8094
  }
8030
8095
  const delivery = await deliverWithOptionalKey(normalizedId, message, deliveryCaller, deliveryMethod, opts.dedupKey);
8031
- if (opts.dedupKey === void 0) queueAgentMail(normalizedId, message, false);
8096
+ if (opts.dedupKey === void 0) queueAgentMail(normalizedId, message, "delivered");
8032
8097
  await appendTellInterventionForUserSource(normalizedId, caller);
8033
8098
  if (delivery.ok && transcriptWatch && agentState?.workspace) watchForEatenAgentMessage({
8034
8099
  agentId: normalizedId,
@@ -8053,7 +8118,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
8053
8118
  async function messageAgentWithOutcome(agentId, message, caller = "internal", opts = {}) {
8054
8119
  return (await messageAgent(agentId, message, caller, opts)).delivered ? "delivered" : "queued";
8055
8120
  }
8056
- var USER_MESSAGE_INTERVENTION_SOURCES;
8121
+ var MAIL_FILENAME_SUFFIX, USER_MESSAGE_INTERVENTION_SOURCES;
8057
8122
  var init_messaging = __esmMin((() => {
8058
8123
  init_activity_logger();
8059
8124
  init_child_env();
@@ -8076,6 +8141,11 @@ var init_messaging = __esmMin((() => {
8076
8141
  init_runtime_command();
8077
8142
  init_supervisor_channels();
8078
8143
  init_provider_env();
8144
+ MAIL_FILENAME_SUFFIX = {
8145
+ queued: ".md",
8146
+ pending: ".pending.md",
8147
+ delivered: ".delivered.md"
8148
+ };
8079
8149
  USER_MESSAGE_INTERVENTION_SOURCES = new Set(["pan-tell", "dashboard:user-message"]);
8080
8150
  }));
8081
8151
  //#endregion
@@ -8217,6 +8287,155 @@ var init_resume_spawn_plan = __esmMin((() => {
8217
8287
  init_session_rotation();
8218
8288
  }));
8219
8289
  //#endregion
8290
+ //#region ../../lib/session-pane-choice.ts
8291
+ async function captureSessionPaneChoice(sessionName, capture = capturePaneText) {
8292
+ let pane;
8293
+ try {
8294
+ pane = await capture(sessionName, PANE_CAPTURE_LINES);
8295
+ } catch {
8296
+ return null;
8297
+ }
8298
+ const menu = parsePaneChoiceMenu(pane);
8299
+ if (!menu) return null;
8300
+ return {
8301
+ signature: paneChoiceMenuSignature(menu),
8302
+ title: menu.title,
8303
+ contextLines: menu.contextLines,
8304
+ options: menu.options.map((option) => ({
8305
+ number: option.number,
8306
+ label: option.label,
8307
+ recommended: option.recommended
8308
+ })),
8309
+ selectedIndex: menu.selectedIndex,
8310
+ footerHint: menu.footerHint,
8311
+ confidence: menu.confidence
8312
+ };
8313
+ }
8314
+ async function answerSessionPaneChoice(sessionName, body, deps = {}) {
8315
+ try {
8316
+ const selectedIndex = Number(body.selectedIndex);
8317
+ const signature = typeof body.signature === "string" ? body.signature : "";
8318
+ if (!Number.isInteger(selectedIndex) || selectedIndex < 0 || selectedIndex > 8) return {
8319
+ body: { error: "selectedIndex must be an integer 0-8" },
8320
+ status: 400
8321
+ };
8322
+ if (!signature) return {
8323
+ body: { error: "signature is required" },
8324
+ status: 400
8325
+ };
8326
+ if (!await (deps.sessionExists ?? ((name) => Effect.runPromise(sessionExists(name))))(sessionName)) return {
8327
+ body: { error: "Conversation session is not running" },
8328
+ status: 409
8329
+ };
8330
+ const capture = deps.capture ?? capturePaneText;
8331
+ const sendKey = deps.sendKey ?? ((name, key) => Effect.runPromise(sendRawKeystroke(name, key, "pane-choice")));
8332
+ const sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
8333
+ const menu = parsePaneChoiceMenu(await capture(sessionName, PANE_CAPTURE_LINES));
8334
+ if (!menu) return {
8335
+ body: {
8336
+ error: "The choice menu is no longer on screen",
8337
+ code: "menu-gone"
8338
+ },
8339
+ status: 409
8340
+ };
8341
+ if (paneChoiceMenuSignature(menu) !== signature) return {
8342
+ body: {
8343
+ error: "The choice menu changed since the card was rendered — refresh and re-answer",
8344
+ code: "menu-changed"
8345
+ },
8346
+ status: 409
8347
+ };
8348
+ if (selectedIndex >= menu.options.length) return {
8349
+ body: { error: `selectedIndex out of range (0-${menu.options.length - 1})` },
8350
+ status: 400
8351
+ };
8352
+ const keys = buildChoiceKeystrokes(menu, selectedIndex);
8353
+ for (const key of keys) {
8354
+ await sendKey(sessionName, key);
8355
+ await sleep(KEYSTROKE_GAP_MS);
8356
+ }
8357
+ await sleep(DELIVERY_CONFIRM_WAIT_MS);
8358
+ const after = parsePaneChoiceMenu(await capture(sessionName, PANE_CAPTURE_LINES));
8359
+ if (after && paneChoiceMenuSignature(after) === signature) return {
8360
+ body: {
8361
+ error: "Keystrokes were sent but the menu is still on screen — answer it from the terminal",
8362
+ code: "delivery-unconfirmed"
8363
+ },
8364
+ status: 409
8365
+ };
8366
+ return { body: {
8367
+ ok: true,
8368
+ answeredLabel: menu.options[selectedIndex].label
8369
+ } };
8370
+ } catch (error) {
8371
+ const message = error instanceof Error ? error.message : String(error);
8372
+ console.error("[sessions] pane-choice answer failed:", message);
8373
+ return {
8374
+ body: { error: "Internal server error" },
8375
+ status: 500
8376
+ };
8377
+ }
8378
+ }
8379
+ var PANE_CAPTURE_LINES, KEYSTROKE_GAP_MS, DELIVERY_CONFIRM_WAIT_MS;
8380
+ var init_session_pane_choice = __esmMin((() => {
8381
+ init_pane_choice_menu();
8382
+ init_tmux();
8383
+ PANE_CAPTURE_LINES = 90;
8384
+ KEYSTROKE_GAP_MS = 60;
8385
+ DELIVERY_CONFIRM_WAIT_MS = 700;
8386
+ }));
8387
+ //#endregion
8388
+ //#region ../../lib/agents/resume-pane-choice.ts
8389
+ /**
8390
+ * Cross only Claude Code's known resume-summary gate before autonomous agent
8391
+ * continuation delivery. Every other pane choice remains untouched.
8392
+ */
8393
+ async function prepareAutonomousAgentResumePane(agentId, role, deps = {}) {
8394
+ const choice = deps.capture ? await captureSessionPaneChoice(agentId, deps.capture) : await captureSessionPaneChoice(agentId);
8395
+ if (!choice) return {
8396
+ ready: true,
8397
+ action: "clear"
8398
+ };
8399
+ if (!AUTONOMOUS_RESUME_ROLES.has(role)) return {
8400
+ ready: false,
8401
+ reason: `pane is blocked on a choice menu that role=${role} may not answer automatically`
8402
+ };
8403
+ const labels = choice.options.map((option) => option.label);
8404
+ const summaryIndex = choice.options.findIndex((option) => option.label === RESUME_SUMMARY_LABEL && option.recommended);
8405
+ if (!(choice.options.length === RESUME_GATE_LABELS.length && RESUME_GATE_LABELS.every((label) => labels.includes(label)) && summaryIndex >= 0)) return {
8406
+ ready: false,
8407
+ reason: "pane is blocked on a choice menu other than the Claude resume-summary gate"
8408
+ };
8409
+ const result = await answerSessionPaneChoice(agentId, {
8410
+ selectedIndex: summaryIndex,
8411
+ signature: choice.signature
8412
+ }, deps);
8413
+ if (result.body.ok === true) return {
8414
+ ready: true,
8415
+ action: "resumed-from-summary"
8416
+ };
8417
+ return {
8418
+ ready: false,
8419
+ reason: `could not select Resume from summary: ${typeof result.body.error === "string" ? result.body.error : "unknown pane-choice failure"}`
8420
+ };
8421
+ }
8422
+ var AUTONOMOUS_RESUME_ROLES, RESUME_SUMMARY_LABEL, RESUME_GATE_LABELS;
8423
+ var init_resume_pane_choice = __esmMin((() => {
8424
+ init_session_pane_choice();
8425
+ AUTONOMOUS_RESUME_ROLES = new Set([
8426
+ "work",
8427
+ "review",
8428
+ "test",
8429
+ "strike"
8430
+ ]);
8431
+ RESUME_SUMMARY_LABEL = "Resume from summary";
8432
+ RESUME_GATE_LABELS = [
8433
+ RESUME_SUMMARY_LABEL,
8434
+ "Resume full session as-is",
8435
+ "Don't ask me again"
8436
+ ];
8437
+ }));
8438
+ //#endregion
8220
8439
  //#region ../../lib/agents/resume.ts
8221
8440
  /**
8222
8441
  * Resume a suspended agent (PAN-80)
@@ -8249,7 +8468,7 @@ async function buildCompactRecoverySeed(agentId) {
8249
8468
  if (agentState?.workspace && sessionId) {
8250
8469
  const sessionFile = sessionFilePath(agentState.workspace, sessionId);
8251
8470
  try {
8252
- const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-Ciit9O6k.js"), import("./smart-compaction-BmfIi3oL.js")]);
8471
+ const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-DzIjYMfg.js"), import("./smart-compaction-BkzjVpWL.js")]);
8253
8472
  const settings = getConversationCompactionSettings();
8254
8473
  summary = (await Effect.runPromise(generateSmartSummary({
8255
8474
  jsonlPath: sessionFile,
@@ -8260,7 +8479,7 @@ async function buildCompactRecoverySeed(agentId) {
8260
8479
  } catch (err) {
8261
8480
  logAgentLifecycleSync(normalizedId, `compact-recovery smart summary failed (${err instanceof Error ? err.message : String(err)}); trying heuristic fallback`);
8262
8481
  try {
8263
- const { generateFallbackSummary } = await import("./summary-fork-CvB7Oyq9.js");
8482
+ const { generateFallbackSummary } = await import("./summary-fork-DIQmtOuV.js");
8264
8483
  summary = await Effect.runPromise(generateFallbackSummary(sessionFile));
8265
8484
  } catch (fallbackErr) {
8266
8485
  logAgentLifecycleSync(normalizedId, `compact-recovery fallback summary failed (${fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr)}); seeding with reseed instructions only`);
@@ -8527,23 +8746,29 @@ async function resumeAgent(agentId, message, opts) {
8527
8746
  const delivery = await deliverInitialPromptWithRetry(normalizedId, effectiveMessage, "resumeAgent:compact-seed", resilientDeliveryMethod(agentState.deliveryMethod));
8528
8747
  messageDelivered = delivery.ok;
8529
8748
  if (!delivery.ok) console.error(`[resumeAgent] Fresh-session continue prompt did not land: ${delivery.failure ?? "unknown failure"}`);
8530
- } else if (await waitForReadySignal(normalizedId, 30)) try {
8531
- const delivery = await deliverResumeMessageWithTranscriptConfirmation({
8532
- agentId: normalizedId,
8533
- workspace: agentState.workspace,
8534
- sessionId,
8535
- message: effectiveMessage,
8536
- caller: "resumeAgent:auto-continue",
8537
- deliveryMethod: supervisorLaunch.useSupervisor ? "supervisor" : resilientDeliveryMethod(agentState.deliveryMethod)
8538
- });
8539
- messageDelivered = delivery.delivered;
8540
- if (delivery.delivered && resumeMessage.redeliveringKickoff) markKickoffRedelivered(agentState);
8541
- if (!delivery.delivered) console.error(`[resumeAgent] Auto-continue prompt did not land after ${delivery.attempts} delivery attempts`);
8542
- } catch (deliveryError) {
8543
- messageDelivered = false;
8544
- console.error(`[resumeAgent] Auto-continue delivery threw: ${deliveryError instanceof Error ? deliveryError.message : String(deliveryError)}`);
8545
- }
8546
- else console.error("Claude SessionStart hook did not fire during resume, continue prompt not sent");
8749
+ } else if (await waitForReadySignal(normalizedId, 30)) {
8750
+ const panePreparation = await prepareAutonomousAgentResumePane(normalizedId, agentState.role);
8751
+ if (!panePreparation.ready) console.error(`[resumeAgent] Auto-continue prompt not sent: ${panePreparation.reason}`);
8752
+ else {
8753
+ if (panePreparation.action === "resumed-from-summary") logAgentLifecycleSync(normalizedId, "resumeAgent: selected Claude Resume from summary before continuation delivery");
8754
+ try {
8755
+ const delivery = await deliverResumeMessageWithTranscriptConfirmation({
8756
+ agentId: normalizedId,
8757
+ workspace: agentState.workspace,
8758
+ sessionId,
8759
+ message: effectiveMessage,
8760
+ caller: "resumeAgent:auto-continue",
8761
+ deliveryMethod: supervisorLaunch.useSupervisor ? "supervisor" : resilientDeliveryMethod(agentState.deliveryMethod)
8762
+ });
8763
+ messageDelivered = delivery.delivered;
8764
+ if (delivery.delivered && resumeMessage.redeliveringKickoff) markKickoffRedelivered(agentState);
8765
+ if (!delivery.delivered) console.error(`[resumeAgent] Auto-continue prompt did not land after ${delivery.attempts} delivery attempts`);
8766
+ } catch (deliveryError) {
8767
+ messageDelivered = false;
8768
+ console.error(`[resumeAgent] Auto-continue delivery threw: ${deliveryError instanceof Error ? deliveryError.message : String(deliveryError)}`);
8769
+ }
8770
+ }
8771
+ } else console.error("Claude SessionStart hook did not fire during resume, continue prompt not sent");
8547
8772
  if (!messageDelivered) {
8548
8773
  await Effect.runPromise(killSession(normalizedId)).catch(() => void 0);
8549
8774
  const error = `Resume continue prompt did not become a confirmed turn for ${normalizedId}`;
@@ -8650,6 +8875,7 @@ var init_resume = __esmMin((() => {
8650
8875
  init_identity();
8651
8876
  init_runtime_state();
8652
8877
  init_resume_spawn_plan();
8878
+ init_resume_pane_choice();
8653
8879
  init_runtime_command();
8654
8880
  init_supervisor_channels();
8655
8881
  init_spawn_prep();
@@ -9561,7 +9787,7 @@ async function restartAgent(agentId, opts = {}, deps = {}) {
9561
9787
  unlinkSync(join$1(getAgentDir(normalizedId), "kimi-session-id"));
9562
9788
  } catch {}
9563
9789
  try {
9564
- const { kimiSessionsRoot } = await import("./kimi-code-DoMoGqIu.js");
9790
+ const { kimiSessionsRoot } = await import("./kimi-code-vtXl2DR5.js");
9565
9791
  kimiExistingSessionsBefore = new Set(await readdir$1(kimiSessionsRoot(join$1(homedir(), ".kimi-code"), agentState.workspace)));
9566
9792
  } catch {
9567
9793
  kimiExistingSessionsBefore = /* @__PURE__ */ new Set();
@@ -9578,14 +9804,14 @@ async function restartAgent(agentId, opts = {}, deps = {}) {
9578
9804
  ...providerEnv
9579
9805
  } }));
9580
9806
  if (kimiExistingSessionsBefore) {
9581
- const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-DoMoGqIu.js");
9807
+ const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-vtXl2DR5.js");
9582
9808
  const sessionId = await waitForNewKimiSessionAsync(join$1(homedir(), ".kimi-code"), agentState.workspace, kimiExistingSessionsBefore);
9583
9809
  if (!sessionId) throw new Error(`kimi-code session capture timed out after fresh relaunch for ${normalizedId} — no new session directory appeared under the workspace bucket`);
9584
9810
  writeKimiSessionId(normalizedId, sessionId);
9585
9811
  }
9586
9812
  };
9587
9813
  if (effectiveHarness === "kimi-code") {
9588
- const { withKimiSessionCaptureLock } = await import("./kimi-code-DoMoGqIu.js");
9814
+ const { withKimiSessionCaptureLock } = await import("./kimi-code-vtXl2DR5.js");
9589
9815
  await withKimiSessionCaptureLock(join$1(homedir(), ".kimi-code"), agentState.workspace, launchAndCaptureKimiSession);
9590
9816
  } else await launchAndCaptureKimiSession();
9591
9817
  const prompt = message || buildResumeContinueMessage(agentState);
@@ -9815,7 +10041,7 @@ async function recoverAgent(agentId, opts = {}) {
9815
10041
  const launchAndCaptureKimiSession = async () => {
9816
10042
  let kimiExistingSessionsBefore;
9817
10043
  if (!resumeSessionId) try {
9818
- const { kimiSessionsRoot } = await import("./kimi-code-DoMoGqIu.js");
10044
+ const { kimiSessionsRoot } = await import("./kimi-code-vtXl2DR5.js");
9819
10045
  kimiExistingSessionsBefore = new Set(await readdir$1(kimiSessionsRoot(join$1(homedir(), ".kimi-code"), state.workspace)));
9820
10046
  } catch {
9821
10047
  kimiExistingSessionsBefore = /* @__PURE__ */ new Set();
@@ -9829,13 +10055,13 @@ async function recoverAgent(agentId, opts = {}) {
9829
10055
  ...kimiProviderEnv
9830
10056
  } }));
9831
10057
  if (kimiExistingSessionsBefore) {
9832
- const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-DoMoGqIu.js");
10058
+ const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-vtXl2DR5.js");
9833
10059
  const sessionId = await waitForNewKimiSessionAsync(join$1(homedir(), ".kimi-code"), state.workspace, kimiExistingSessionsBefore);
9834
10060
  if (sessionId) writeKimiSessionId(normalizedId, sessionId);
9835
10061
  else throw new Error(`kimi-code session capture timed out after fresh relaunch for ${normalizedId} — no new session directory appeared under the workspace bucket`);
9836
10062
  }
9837
10063
  };
9838
- const { withKimiSessionCaptureLock } = await import("./kimi-code-DoMoGqIu.js");
10064
+ const { withKimiSessionCaptureLock } = await import("./kimi-code-vtXl2DR5.js");
9839
10065
  try {
9840
10066
  await withKimiSessionCaptureLock(join$1(homedir(), ".kimi-code"), state.workspace, launchAndCaptureKimiSession);
9841
10067
  } catch (err) {
@@ -9980,17 +10206,20 @@ async function reconcileSlotState(issueId, workspace, doc, options = {}) {
9980
10206
  listBranches: listSlotBranches,
9981
10207
  listAgents: listSlotAgents,
9982
10208
  listSlotAssignments,
10209
+ listSlotCompletions,
9983
10210
  ...options.deps
9984
10211
  };
9985
10212
  const branches = await deps.listBranches(issueId, workspace);
9986
10213
  const agents = deps.listAgents(issueId);
9987
10214
  const assignments = deps.listSlotAssignments(issueId, workspace);
10215
+ const completions = deps.listSlotCompletions(issueId, workspace);
10216
+ const releasedSlotIndexes = new Set(Object.keys(readIssueRecordForWorkspaceSync(workspace, issueId.toUpperCase())?.swarm?.releasedBlockedSlots ?? {}).map(Number));
9988
10217
  const branchesBySlot = new Map(branches.map((branch) => [branch.slotIndex, branch]));
9989
10218
  const agentsBySlot = new Map(agents.map((agent) => [agent.slotIndex, agent]));
9990
10219
  const hotspots = getProjectSwarmHotspots(findProjectByPathSync(workspace));
9991
10220
  const slotEligibleItemIds = new Set(analyzeSwarmReadiness(doc, { hotspots }).items.filter((item) => item.slotEligible).map((item) => item.id));
9992
10221
  const itemStatuses = new Map(doc.plan.items.map((item) => [item.id, item.status]));
9993
- const slotItems = resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents);
10222
+ const slotItems = resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents, releasedSlotIndexes);
9994
10223
  const result = {
9995
10224
  issueId,
9996
10225
  merged: [],
@@ -10004,13 +10233,14 @@ async function reconcileSlotState(issueId, workspace, doc, options = {}) {
10004
10233
  const branch = branchesBySlot.get(slotItem.slotIndex);
10005
10234
  const agent = agentsBySlot.get(slotItem.slotIndex);
10006
10235
  const completed = options.statusOverrides?.[slotItem.itemId] === "completed" || itemStatuses.get(slotItem.itemId) === "completed";
10007
- const merged = completed || branch?.merged === true;
10236
+ const awaitingMerge = completions[String(slotItem.slotIndex)]?.itemId === slotItem.itemId;
10237
+ const merged = completed && !awaitingMerge;
10008
10238
  const entry = {
10009
10239
  ...slotItem,
10010
10240
  status: merged ? "merged" : agent || branch ? "in_flight" : "pending",
10011
10241
  branch: branch?.branch,
10012
10242
  agentId: agent?.agentId,
10013
- ...merged ? { mergedVia: completed ? "completed-status" : "branch-ancestry" } : {}
10243
+ ...merged ? { mergedVia: "completed-status" } : {}
10014
10244
  };
10015
10245
  if (entry.status === "merged") result.merged.push(entry);
10016
10246
  else if (entry.status === "in_flight") result.inFlight.push(entry);
@@ -10053,6 +10283,9 @@ function listSlotAssignments(issueId, workspace) {
10053
10283
  branch: assignment.branch
10054
10284
  })).sort((a, b) => a.slotIndex - b.slotIndex);
10055
10285
  }
10286
+ function listSlotCompletions(issueId, workspace) {
10287
+ return readIssueRecordForWorkspaceSync(workspace, issueId.toUpperCase())?.swarm?.slotCompletions ?? {};
10288
+ }
10056
10289
  function listSlotOwnership(issueId, workspace) {
10057
10290
  const byItemId = /* @__PURE__ */ new Map();
10058
10291
  for (const assignment of listSlotAssignments(issueId, workspace)) byItemId.set(assignment.itemId, assignment);
@@ -10070,13 +10303,14 @@ async function gitBranchNames(workspace, pattern, merged) {
10070
10303
  const { stdout } = await execAsync(`git branch ${merged ? "--merged HEAD " : ""}--list ${JSON.stringify(pattern)}`, { cwd: workspace });
10071
10304
  return stdout.split("\n").map((line) => line.replace(/^[*+\s]+/, "").trim()).filter(Boolean);
10072
10305
  }
10073
- function resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents) {
10306
+ function resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents, releasedSlotIndexes) {
10074
10307
  const ownership = /* @__PURE__ */ new Map();
10075
10308
  for (const assignment of assignments) {
10076
10309
  if (!slotEligibleItemIds.has(assignment.itemId)) continue;
10077
10310
  ownership.set(assignment.itemId, assignment.slotIndex);
10078
10311
  }
10079
10312
  for (const agent of agents) {
10313
+ if (agent.status === "stopped" && releasedSlotIndexes.has(agent.slotIndex)) continue;
10080
10314
  if (!agent.slotItemId || !slotEligibleItemIds.has(agent.slotItemId) || ownership.has(agent.slotItemId)) continue;
10081
10315
  ownership.set(agent.slotItemId, agent.slotIndex);
10082
10316
  }
@@ -10086,7 +10320,7 @@ function resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents) {
10086
10320
  })).sort((a, b) => a.slotIndex - b.slotIndex);
10087
10321
  }
10088
10322
  function slotIndexFromBranch(issueLower, branch) {
10089
- const match = new RegExp(`^feature/${escapeRegExp(issueLower)}-slot-(\\d+)$`).exec(branch);
10323
+ const match = new RegExp(`^feature/${escapeRegExp(issueLower)}-slot-(\\d+)(?:-attempt-\\d+)?$`).exec(branch);
10090
10324
  if (!match) return null;
10091
10325
  return Number(match[1]);
10092
10326
  }
@@ -10432,8 +10666,8 @@ async function spawnTierSupervisor(issueId, supervisor, options = {}) {
10432
10666
  function buildSupervisorPrompt(issueId, subscribe) {
10433
10667
  const policyLine = {
10434
10668
  all: "You are subscribed to EVERY commit in this issue.",
10435
- flagged: "You are subscribed only to commits for beads flagged requiresInspection=true.",
10436
- sampled: "You are subscribed to a deterministic sample of the beads in this issue."
10669
+ flagged: "You are subscribed only to commits for items flagged requiresInspection=true.",
10670
+ sampled: "You are subscribed to a deterministic sample of the items in this issue."
10437
10671
  }[subscribe];
10438
10672
  return [
10439
10673
  `# Standing Supervisor: ${issueId}`,
@@ -11283,7 +11517,11 @@ function recordAgentActivitySync(agentId, activity) {
11283
11517
  if (!state) return false;
11284
11518
  state.lastActivity = activity.at ?? (/* @__PURE__ */ new Date()).toISOString();
11285
11519
  if (activity.costSoFar !== void 0 && Number.isFinite(activity.costSoFar)) state.costSoFar = activity.costSoFar;
11286
- saveOverdeckAgentStateSync(state);
11520
+ try {
11521
+ saveOverdeckAgentStateSync(state);
11522
+ } catch (err) {
11523
+ console.warn(`[agents] activity DB write failed for ${agentId} (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
11524
+ }
11287
11525
  writeAgentStateJsonSync(state);
11288
11526
  return true;
11289
11527
  }
@@ -11404,6 +11642,54 @@ function clearAgentTroubledSync(agentId) {
11404
11642
  saveAgentStateSync(state);
11405
11643
  return true;
11406
11644
  }
11645
+ /**
11646
+ * Clear operator-gate residue (stoppedByUser, paused, troubled) on STOPPED
11647
+ * agent rows whose issueId is in `issueIds` — used by close-out and the
11648
+ * terminal-issue residue patrol so a terminal issue's preserved agent rows
11649
+ * stop reappearing in the operator-gate parked orbit (PAN-3727). Running/
11650
+ * starting agents and scheduler yields are never touched: a yield is a live
11651
+ * scheduling decision, not operator residue, and a live agent's gates are not
11652
+ * this issue's to clear.
11653
+ *
11654
+ * Batched (one `listOverdeckAgentStatesSync()` scan for every issueId in the
11655
+ * set) so the recurring residue patrol does not perform one full agent-table
11656
+ * scan per terminal issue (review finding, PAN-3727) — cost scales with the
11657
+ * agent table once per patrol run, not with the number of terminal issues.
11658
+ */
11659
+ function clearAgentOperatorGatesForIssuesSync(issueIds) {
11660
+ const mutated = /* @__PURE__ */ new Map();
11661
+ if (issueIds.size === 0) return mutated;
11662
+ for (const state of listOverdeckAgentStatesSync()) {
11663
+ if (state.status !== "stopped") continue;
11664
+ const normalized = state.issueId?.toUpperCase();
11665
+ if (!normalized || !issueIds.has(normalized)) continue;
11666
+ let changed = false;
11667
+ if (state.stoppedByUser) {
11668
+ delete state.stoppedByUser;
11669
+ changed = true;
11670
+ }
11671
+ if (state.paused === true && state.yieldedByScheduler !== true) {
11672
+ applyAgentUnpaused(state);
11673
+ changed = true;
11674
+ }
11675
+ if (state.troubled === true) {
11676
+ applyAgentUntroubled(state);
11677
+ changed = true;
11678
+ }
11679
+ if (changed) {
11680
+ saveAgentStateSync(state);
11681
+ const ids = mutated.get(normalized) ?? [];
11682
+ ids.push(state.id);
11683
+ mutated.set(normalized, ids);
11684
+ }
11685
+ }
11686
+ return mutated;
11687
+ }
11688
+ /** Single-issue convenience wrapper over {@link clearAgentOperatorGatesForIssuesSync}. */
11689
+ function clearAgentOperatorGatesForIssueSync(issueId) {
11690
+ const normalized = issueId.toUpperCase();
11691
+ return clearAgentOperatorGatesForIssuesSync(new Set([normalized])).get(normalized) ?? [];
11692
+ }
11407
11693
  function applyAgentFailure(state, reason) {
11408
11694
  const config = resolveAutoResumeConfigForIssue(state.issueId);
11409
11695
  const nowMs = Date.now();
@@ -11699,6 +11985,6 @@ var init_agent_state = __esmMin((() => {
11699
11985
  };
11700
11986
  }));
11701
11987
  //#endregion
11702
- export { loadPrdDraft as $, deliverResumeMessageWithTranscriptConfirmation as $n, determineModel as $r, spawnAgent as $t, setAgentPausedSync as A, init_agent_runtime_mirror as Ai, init_darwin as An, getAcpLauncherFields as Ar, parseCodexApprovalPrompt as At, waitForReadySignal as B, tryReserveAdvancingSlot as Bn, roleAgentDefinitionPath as Br, init_operator_interventions as Bt, recordAgentFailure as C, appendAgentPlaneLifecycle as Ci, refreshRuntimeCensus as Cn, resolveImplicitStaffing as Cr, isBlockedOnPendingInput as Ct, saveAgentState as D, init_agent_record_sync as Di, LINUX_MEMORY_PRESSURE_DEFAULTS as Dn, resolveTier as Dr, detectAwaitingInputFromPaneSync as Dt, resetAgentFailureCount as E, init_agents$1 as Ei, init_collector as En, init_resolve_tier as Er, detectAwaitingInputForAgent as Et, clearReadySignal as F, getConcurrencyLimits as Fn, getProviderAuthMode as Fr, isContextOverflowError as Ft, init_agents as G, getCachedMemoryVerdict as Gn, init_ohmypi_fifo as Gr, getLatestSessionIdSync as Gt, getAgentRuntimeStateSync as H, workResumeSlotsAvailable as Hn, waitForPromptReady as Hr, appendActivity as Ht, isQualifiedAgentId as I, init_concurrency as In, getRoleRuntimeBaseCommand as Ir, isContextOverflowTail as It, replayCrashedStandingAgent as J, AmbiguousKeyedDeliveryError as Jn, materializeAcpContextFile as Jr, saveSessionId as Jt, compactAtTierRunBoundary as K, init_memory_verdict_cache as Kn, ohmypiFifoPaths as Kr, getSessionId as Kt, normalizeAgentId as L, releaseAdvancingSlot as Ln, hasAgentRuntimeInSubtree as Lr, init_messaging as Lt, wipeAgentStateDirs as M, setAgentRuntimeMirror as Mi, countRunningSwarmSlotsForIssue as Mn, getCodexLauncherFields as Mr, init_resume as Mt, writeAgentStateJsonSync as N, init_ohmypi_parser as Ni, describeRunningAgents as Nn, getKimiCodeLauncherFields as Nr, resumeAgent as Nt, saveAgentStateSync as O, readAgentHarnessModelRecordSync as Oi, init_linux as On, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as Or, init_agent_input_detection as Ot, isRole as P, parseOhmypiSessionCostResultSync as Pi, emergencyBrake as Pn, getOhmypiLauncherFields as Pr, init_context_overflow as Pt, init_tier_supervisor as Q, deliverInitialPromptWithRetry as Qn, buildSpawnEnvForModel as Qr, init_spawn as Qt, resolveAgentTargetSync as R, releaseSwarmSlot as Rn, init_runtime_command as Rr, messageAgent as Rt, recordAgentActivitySync as S, init_agent_runtime as Si, panePidsForSession as Sn, init_staffing as Sr, init_agent_enrichment as St, recordStartupSessionExit as T, flushAgentPlaneWrites as Ti, createHostHealthCollector as Tn, resolveStaffing as Tr, scanPendingInputsPromise as Tt, init_runtime_state as U, init_swarm_slot_lifecycle as Un, init_pi_fifo as Ur, getActivity as Ut, getAgentRuntimeState as V, tryReserveSwarmSlot as Vn, waitForAcpHostReady as Vr, operatorInterventionEvent as Vt, saveAgentRuntimeState as W, isTerminalSwarmSlotAgent as Wn, piFifoPaths as Wr, getLatestSessionId as Wt, shouldReplayCompactAtTierRunBoundary as X, deliverAgentMessage as Xn, init_claude_auth as Xr, createOhmypiRuntimeSync as Xt, replayStandingAgent as Y, SocketPostStatusError as Yn, getClaudeAuthStatus as Yr, init_event_reads as Yt, deliverCommitForReview as Z, deliverAgentPermissionDecision as Zn, buildCavemanExports as Zr, init_ohmypi as Zt, isAgentTroubled as _, init_pty_token as _i, removeAgentStateDir as _n, defaultRunWorkspace as _r, countPendingAskUserQuestionsForAgent as _t, clearAgentPausedSync as a, getOpenAIAuthStatus as ai, stopAgentSync as an, init_transcript_landing as ar, decideEscalation as at, markAgentStoppedState as b, resolvePtySupervisorScriptPath as bi, getRuntimeCensusSnapshot as bn, transitionIssueToInProgress as br, getAgentPendingQuestions as bt, clearYieldForResumeSync as c, buildResumeContinueMessage as ci, listAgentStates as cn, init_bridge_token as cr, listSlotAssignments as ct, getAgentResumeGateBlockReason as d, dismissDevChannelsDialog as di, warnOnBareNumericIssueIds as dn, checkCodexAuthStatus as dr, detectCrashedAgents as dt, getProviderEnvForModel as ei, spawnRun as en, init_delivery as er, shouldSupervise as et, getAgentState as f, hasCompletionMarkerForAgent as fi, RETAINED_TRANSCRIPTS_MARKER as fn, init_codex_auth as fr, recoverAgent as ft, isAgentPaused as g, init_resume_contract as gi, markRetainedTranscripts as gn, buildAgentLaunchConfig as gr, computeAgentEnrichment as gt, init_agent_state as h, buildResumeContract as hi, listAgentStateFilesForRemoval as hn, assertWorkspaceStackHealthyForSpawn as hr, init_pending_decision_gate as ht, clearAgentPaused as i, validateProviderHealth as ii, stopAgent as in, captureTranscriptUserRecordSnapshot as ir, init_tier_feed as it, setAgentYieldedSync as j, markAgentStateServiceInProcess as ji, countRunningAgents as jn, getAgentRuntimeBaseCommand as jr, buildCompactRecoverySeed as jt, setAgentPaused as k, getRuntimeSnapshot as ki, DARWIN_MEMORY_PRESSURE_DEFAULTS as kn, describeOhmypiSpawnFailure as kr, normalizeAwaitingInputPrompt as kt, decideResumeGate as l, decideChannelsForWorkAgent as li, listRunningAgents as ln, writeBridgeTokenSync as lr, reconcileSlotState as lt, getAgentStateSync as m, writeChannelsBridgeMcpConfig as mi, init_state_dir_removal as mn, paneShowsCodexAuthBurn as mr, detectPendingOperatorDecision as mt, SESSION_EXITED_BEFORE_KICKOFF as n, getProviderTmuxFlags as ni, init_session_history as nn, resilientDeliveryMethod as nr, supervisorAgentId as nt, clearAgentTroubled as o, init_openai_auth as oi, dropLegacyAgentStatesMissingRoleAsync as on, probeTranscriptSince as or, init_tier_escalation as ot, getAgentStateFilePath as p, init_supervisor_channels as pi, hasRetainedTranscriptsMarker as pn, isCodexAuthRouted as pr, restartAgent as pt, contextWindowForModel as q, setCachedMemoryVerdict as qn, init_context as qr, init_activity as qt, __testInternals as r, init_provider_health as ri, init_termination as rn, setAgentDeliveryMethod as rr, broadcastCommit as rt, clearAgentTroubledSync as s, buildDefaultResumeContinueMessage as si, init_queries as sn, BRIDGE_TOKEN_HEADER as sr, init_slot_reconcile as st, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as t, getProviderExportsForModel as ti, appendSessionIdToHistory as tn, keyedSupervisorFailureKind as tr, spawnTierSupervisor as tt, getAgentDir as u, decideSupervisorForWorkAgent as ui, listRunningAgentsSync as un, applyCodexAuthBurnFlag as ur, autoRecoverAgents as ut, markAgentRunning as v, writePtyToken as vi, descendantPidsForSession as vn, init_spawn_prep as vr, getAgentJsonlMtime as vt, recordAgentFailureSync as w, appendAgentPlaneSession as wi, runtimeCensusHasHarnessProcess as wn, resolveIssueWorkModel as wr, isInteractiveRoleAgent as wt, markAgentTroubled as x, getAgentRuntimeSnapshot as xi, init_runtime_census as xn, transitionIssueToInReview as xr, getAgentWorkspace as xt, markAgentRunningState as y, init_pty_supervisor_locate as yi, getRuntimeCensus as yn, retrieveSpawnTimeMemoryContext as yr, getAgentJsonlPath as yt, waitForAgentIdle as z, resetPatrolDispatchBudget as zn, injectPiConversationMemory as zr, messageAgentWithOutcome as zt };
11988
+ export { deliverCommitForReview as $, isTerminalSwarmSlotAgent as $n, piFifoPaths as $r, init_activity as $t, saveAgentStateSync as A, getAgentRuntimeSnapshot as Ai, init_runtime_census as An, transitionIssueToInReview as Ar, init_agent_input_detection as At, resolveAgentTargetSync as B, markAgentStateServiceInProcess as Bi, countRunningAgents as Bn, getAgentRuntimeBaseCommand as Br, isContextOverflowError as Bt, markAgentTroubled as C, writeChannelsBridgeMcpConfig as Ci, init_state_dir_removal as Cn, paneShowsCodexAuthBurn as Cr, getAgentWorkspace as Ct, recordStartupSessionExit as D, writePtyToken as Di, descendantPidsForSession as Dn, init_spawn_prep as Dr, scanPendingInputsPromise as Dt, recordAgentFailureSync as E, init_pty_token as Ei, removeAgentStateDir as En, defaultRunWorkspace as Er, isInteractiveRoleAgent as Et, writeAgentStateJsonSync as F, init_agents$1 as Fi, init_collector as Fn, init_resolve_tier as Fr, resumeAgent as Ft, init_runtime_state as G, init_concurrency as Gn, getRoleRuntimeBaseCommand as Gr, resolveAgentDeliveryMethod as Gt, waitForReadySignal as H, init_ohmypi_parser as Hi, describeRunningAgents as Hn, getKimiCodeLauncherFields as Hr, init_messaging as Ht, isRole as I, init_agent_record_sync as Ii, LINUX_MEMORY_PRESSURE_DEFAULTS as In, resolveTier as Ir, answerSessionPaneChoice as It, compactAtTierRunBoundary as J, resetPatrolDispatchBudget as Jn, injectPiConversationMemory as Jr, appendActivity as Jt, saveAgentRuntimeState as K, releaseAdvancingSlot as Kn, hasAgentRuntimeInSubtree as Kr, init_operator_interventions as Kt, clearReadySignal as L, readAgentHarnessModelRecordSync as Li, init_linux as Ln, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as Lr, captureSessionPaneChoice as Lt, setAgentPausedSync as M, appendAgentPlaneLifecycle as Mi, refreshRuntimeCensus as Mn, resolveImplicitStaffing as Mr, parseCodexApprovalPrompt as Mt, setAgentYieldedSync as N, appendAgentPlaneSession as Ni, runtimeCensusHasHarnessProcess as Nn, resolveIssueWorkModel as Nr, buildCompactRecoverySeed as Nt, resetAgentFailureCount as O, init_pty_supervisor_locate as Oi, getRuntimeCensus as On, retrieveSpawnTimeMemoryContext as Or, detectAwaitingInputForAgent as Ot, wipeAgentStateDirs as P, flushAgentPlaneWrites as Pi, createHostHealthCollector as Pn, resolveStaffing as Pr, init_resume as Pt, shouldReplayCompactAtTierRunBoundary as Q, init_swarm_slot_lifecycle as Qn, init_pi_fifo as Qr, getSessionId as Qt, isQualifiedAgentId as R, getRuntimeSnapshot as Ri, DARWIN_MEMORY_PRESSURE_DEFAULTS as Rn, describeOhmypiSpawnFailure as Rr, init_session_pane_choice as Rt, markAgentStoppedState as S, init_supervisor_channels as Si, hasRetainedTranscriptsMarker as Sn, isCodexAuthRouted as Sr, getAgentPendingQuestions as St, recordAgentFailure as T, init_resume_contract as Ti, markRetainedTranscripts as Tn, buildAgentLaunchConfig as Tr, isBlockedOnPendingInput as Tt, getAgentRuntimeState as U, parseOhmypiSessionCostResultSync as Ui, emergencyBrake as Un, getOhmypiLauncherFields as Ur, messageAgent as Ut, waitForAgentIdle as V, setAgentRuntimeMirror as Vi, countRunningSwarmSlotsForIssue as Vn, getCodexLauncherFields as Vr, isContextOverflowTail as Vt, getAgentRuntimeStateSync as W, getConcurrencyLimits as Wn, getProviderAuthMode as Wr, messageAgentWithOutcome as Wt, replayCrashedStandingAgent as X, tryReserveSwarmSlot as Xn, waitForAcpHostReady as Xr, getLatestSessionId as Xt, contextWindowForModel as Y, tryReserveAdvancingSlot as Yn, roleAgentDefinitionPath as Yr, getActivity as Yt, replayStandingAgent as Z, workResumeSlotsAvailable as Zn, waitForPromptReady as Zr, getLatestSessionIdSync as Zt, init_agent_state as _, buildResumeContinueMessage as _i, listAgentStates as _n, init_bridge_token as _r, init_pending_decision_gate as _t, clearAgentOperatorGatesForIssuesSync as a, init_claude_auth as ai, init_spawn as an, deliverAgentMessage as ar, broadcastCommit as at, markAgentRunning as b, dismissDevChannelsDialog as bi, warnOnBareNumericIssueIds as bn, checkCodexAuthStatus as br, getAgentJsonlMtime as bt, clearAgentTroubled as c, determineModel as ci, ensureRegisteredSlotWorktree as cn, deliverResumeMessageWithTranscriptConfirmation as cr, init_tier_escalation as ct, decideResumeGate as d, getProviderTmuxFlags as di, init_session_history as dn, resilientDeliveryMethod as dr, reconcileSlotState as dt, init_ohmypi_fifo as ei, resolveLatestSessionIdSync as en, getCachedMemoryVerdict as er, init_tier_supervisor as et, getAgentDir as f, init_provider_health as fi, init_termination as fn, setAgentDeliveryMethod as fr, autoRecoverAgents as ft, getAgentStateSync as g, buildDefaultResumeContinueMessage as gi, init_queries as gn, BRIDGE_TOKEN_HEADER as gr, detectPendingOperatorDecision as gt, getAgentStateFilePath as h, init_openai_auth as hi, dropLegacyAgentStatesMissingRoleAsync as hn, probeTranscriptSince as hr, restartAgent as ht, clearAgentOperatorGatesForIssueSync as i, getClaudeAuthStatus as ii, init_ohmypi as in, SocketPostStatusError as ir, supervisorAgentId as it, setAgentPaused as j, init_agent_runtime as ji, panePidsForSession as jn, init_staffing as jr, normalizeAwaitingInputPrompt as jt, saveAgentState as k, resolvePtySupervisorScriptPath as ki, getRuntimeCensusSnapshot as kn, transitionIssueToInProgress as kr, detectAwaitingInputFromPaneSync as kt, clearAgentTroubledSync as l, getProviderEnvForModel as li, init_registered_slot_spawn as ln, init_delivery as lr, init_slot_reconcile as lt, getAgentState as m, getOpenAIAuthStatus as mi, stopAgentSync as mn, init_transcript_landing as mr, recoverAgent as mt, SESSION_EXITED_BEFORE_KICKOFF as n, init_context as ni, init_event_reads as nn, setCachedMemoryVerdict as nr, shouldSupervise as nt, clearAgentPaused as o, buildCavemanExports as oi, spawnAgent as on, deliverAgentPermissionDecision as or, init_tier_feed as ot, getAgentResumeGateBlockReason as p, validateProviderHealth as pi, stopAgent as pn, captureTranscriptUserRecordSnapshot as pr, detectCrashedAgents as pt, init_agents as q, releaseSwarmSlot as qn, init_runtime_command as qr, operatorInterventionEvent as qt, __testInternals as r, materializeAcpContextFile as ri, createOhmypiRuntimeSync as rn, AmbiguousKeyedDeliveryError as rr, spawnTierSupervisor as rt, clearAgentPausedSync as s, buildSpawnEnvForModel as si, spawnRun as sn, deliverInitialPromptWithRetry as sr, decideEscalation as st, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as t, ohmypiFifoPaths as ti, saveSessionId as tn, init_memory_verdict_cache as tr, loadPrdDraft as tt, clearYieldForResumeSync as u, getProviderExportsForModel as ui, appendSessionIdToHistory as un, keyedSupervisorFailureKind as ur, listSlotAssignments as ut, isAgentPaused as v, decideChannelsForWorkAgent as vi, listRunningAgents as vn, writeBridgeTokenSync as vr, computeAgentEnrichment as vt, recordAgentActivitySync as w, buildResumeContract as wi, listAgentStateFilesForRemoval as wn, assertWorkspaceStackHealthyForSpawn as wr, init_agent_enrichment as wt, markAgentRunningState as x, hasCompletionMarkerForAgent as xi, RETAINED_TRANSCRIPTS_MARKER as xn, init_codex_auth as xr, getAgentJsonlPath as xt, isAgentTroubled as y, decideSupervisorForWorkAgent as yi, listRunningAgentsSync as yn, applyCodexAuthBurnFlag as yr, countPendingAskUserQuestionsForAgent as yt, normalizeAgentId as z, init_agent_runtime_mirror as zi, init_darwin as zn, getAcpLauncherFields as zr, init_context_overflow as zt };
11703
11989
 
11704
- //# sourceMappingURL=agent-state-Bb3UUxQm.js.map
11990
+ //# sourceMappingURL=agent-state-BJhGIJZe.js.map