@overdeck/desktop 0.45.24 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +36 -1
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DDCnXF58.js → acceptance-criteria-10Ur5Dne.js} +2 -2
  4. package/server/activity-logger-CMthG6Vd.js +3 -0
  5. package/server/{activity-logger-DDlOIAML.js → activity-logger-CyteR4JO.js} +24 -13
  6. package/server/{advancing-selfheal-BVwW4qRn.js → advancing-selfheal-BNwqxseD.js} +6 -6
  7. package/server/{agent-gc-CHcnvonI.js → agent-gc-C3h9Or3a.js} +5 -5
  8. package/server/agent-state-CYXJVG72.js +3 -0
  9. package/server/agent-state-service-C63p_ftq.js +2 -0
  10. package/server/{agent-state-service-BsgWxZuB.js → agent-state-service-Ds6OeFvo.js} +15 -9
  11. package/server/{agents-EbI0zCJl.js → agents-J5mEnekq.js} +23 -16
  12. package/server/agents-ePFVoZbu.js +3 -0
  13. package/server/archive-planning-B2XplFzT.js +2 -0
  14. package/server/{archive-planning-Du25Jtst.js → archive-planning-BwhxeP7C.js} +22 -26
  15. package/server/{artifact-index-jobs-CbEDfCDu.js → artifact-index-jobs-D1q_vR3V.js} +2 -2
  16. package/server/{assemble-J2ZZ2C15.js → assemble-Bgwqv-Ro.js} +2 -2
  17. package/server/auto-spawn-consent-CQ9Bi9q6.js +1141 -0
  18. package/server/{backlog-auto-trigger-2R2jog7n.js → backlog-auto-trigger-n1lzPgN4.js} +3 -3
  19. package/server/{behavior-B3exJ42O.js → behavior-td6-xhQk.js} +2 -2
  20. package/server/boot-reconciled-stop-events-C7gGe3oB.js +44 -0
  21. package/server/bridge-pool-patrol-CYH2OLb5.js +136 -0
  22. package/server/{briefing-freshness-D1wzUIWv.js → briefing-freshness-DRqZ8lAz.js} +2 -2
  23. package/server/{build-info-Ie_D0_BT.js → build-info-7yiEpl6u.js} +5 -3
  24. package/server/{build-info-CZk_TITh.js → build-info-CpG__c63.js} +1 -1
  25. package/server/{checkpoint-manager-DwbQoqrC.js → checkpoint-manager-CkKmB0wZ.js} +1 -1
  26. package/server/{checkpoint-manager-BI1Wxoku.js → checkpoint-manager-DBcyNR8w.js} +2 -2
  27. package/server/checkpoint-worker.js +1 -1
  28. package/server/{checkpoints-CQB1h765.js → checkpoints-D95apurL.js} +2 -2
  29. package/server/{checkpoints-BJIs5QIA.js → checkpoints-Wm963lm8.js} +1 -1
  30. package/server/{claude-hooks-provision-8Ngo8TpT.js → claude-hooks-provision-4RPxNkE8.js} +1 -1
  31. package/server/{claude-hooks-provision-D8GXF3_s.js → claude-hooks-provision-Bjitl9aI.js} +13 -2
  32. package/server/{claude-permissions-DNWEVV6z.js → claude-permissions-CpbpvUQ2.js} +2 -2
  33. package/server/{claude-settings-overlay-DWy-Bb4Y.js → claude-settings-overlay-BzkHYDwR.js} +1 -1
  34. package/server/{claude-settings-overlay-CEdaqpWI.js → claude-settings-overlay-_H9Yrzab.js} +2 -2
  35. package/server/cli-CjOCSnfj.js +3 -0
  36. package/server/{cli-RoOx5DUf.js → cli-Cte9ZFGn.js} +9 -9
  37. package/server/{cliproxy-C8a1vtTU.js → cliproxy-C5fMJ7rY.js} +2 -2
  38. package/server/{cliproxy-fHfIeiGd.js → cliproxy-DaAbWMjC.js} +1 -1
  39. package/server/{close-issue-DoOifFIK.js → close-issue-BPh1ARCF.js} +5 -5
  40. package/server/{closed-issue-reaper-CktPXo8m.js → closed-issue-reaper-DHRfRMrp.js} +1 -1
  41. package/server/{closed-issue-reaper-Bk3SU4RC.js → closed-issue-reaper-DoOZqGFK.js} +88 -17
  42. package/server/{codex-BZXGhUVB.js → codex-BzGDW_d3.js} +36 -7
  43. package/server/{codex-GcHuUF-k.js → codex-o8FJwzmy.js} +1 -1
  44. package/server/{codex-parser-CFZ1_1Jl.js → codex-parser-Dt-ycU8L.js} +2 -2
  45. package/server/compaction-continuation-CvXpbZ4w.js +200 -0
  46. package/server/{config-CKxYiCmX.js → config-Bi3u1VK7.js} +4 -3
  47. package/server/{config-BZ0sHTju.js → config-BvLe652W.js} +2 -2
  48. package/server/{config-DzV30TOm.js → config-CL3Gyvja.js} +1 -1
  49. package/server/{config-yaml-DySPNmKN.js → config-yaml-CxdwhAIA.js} +276 -14
  50. package/server/conflict-gate-CX80JYYS.js +3 -0
  51. package/server/{conflict-gate-BaCVrH-N.js → conflict-gate-E4nt7ZeS.js} +60 -14
  52. package/server/{context-layers-igZ4FI4_.js → context-layers-C_IIysnm.js} +3 -3
  53. package/server/{context-layers-BrPmE__h.js → context-layers-DAG83UZt.js} +2 -2
  54. package/server/{control-settings-BQp7_4uD.js → control-settings-CiqGxXnc.js} +56 -19
  55. package/server/{conversation-compaction-eQB5CkOe.js → conversation-compaction-BE3CNtHF.js} +1 -1
  56. package/server/{conversation-compaction-CgrR8YYp.js → conversation-compaction-D6-yLtqt.js} +8 -8
  57. package/server/{conversation-service-DPJ71F33.js → conversation-service-DBxoYMDl.js} +10 -8
  58. package/server/conversation-service-D_TS2b1r.js +3 -0
  59. package/server/{conversations-CAsJF9kh.js → conversations-BKDVpB-3.js} +1 -1
  60. package/server/{conversations-6AfUfbwc.js → conversations-D0UEdLtk.js} +4 -4
  61. package/server/{cost-R-m6Yi-W.js → cost-DS1s0DbG.js} +3 -3
  62. package/server/{cost-B2ddP6wq.js → cost-DpgYmYqR.js} +12 -2
  63. package/server/{cost-sync-BsN6ER0n.js → cost-sync-tOCCGnEt.js} +3 -3
  64. package/server/{dag-B1ucnjDU.js → dag-BtkgLeqY.js} +2 -2
  65. package/server/{dangerous-git-ops-BXqeWVSf.js → dangerous-git-ops-CFLykHWt.js} +1 -1
  66. package/server/dashboard-db-worker.js +7 -7
  67. package/server/deacon-BIblC-WX.js +4 -0
  68. package/server/{deacon-nudge-log-6wVqAaqz.js → deacon-nudge-log-B08gF0mh.js} +3 -3
  69. package/server/{deacon-CU_cAYSR.js → deacon-pLRLbPvR.js} +3308 -2707
  70. package/server/deacon-pending-lifecycle-B-Io84AP.js +33 -0
  71. package/server/deacon-swarm-B1XkIvfr.js +2 -0
  72. package/server/{deacon-swarm-BXZZ1Z2-.js → deacon-swarm-v5PMun-m.js} +15 -14
  73. package/server/deacon.js +14 -19
  74. package/server/dead-end-trip-D8A3msX9.js +13 -0
  75. package/server/delivery-BX9HR4wQ.js +3 -0
  76. package/server/{deploy-patrol-AiFoP8dw.js → deploy-patrol-sYgOxLeb.js} +69 -18
  77. package/server/deploy-queue-VfohaPN_.js +169 -0
  78. package/server/deploy-queue-gHJBycaF.js +3 -0
  79. package/server/deploy-window-CFRZ0-kt.js +3 -0
  80. package/server/{deploy-window-C3F-tihF.js → deploy-window-D4DQb8VP.js} +40 -16
  81. package/server/{dev-supervisor-bcOWqdQE.js → dev-supervisor-DiOBDM1c.js} +2 -2
  82. package/server/{devcontainer-renderer-_d6XhyND.js → devcontainer-renderer-BUOIlfgD.js} +3 -3
  83. package/server/dist-B3YPQa5A.js +3 -0
  84. package/server/{dist-Cb_0uvpS.js → dist-C3A8B8wM.js} +1 -1
  85. package/server/{dist-src-BSoS7mkd.js → dist-src-C0adpegX.js} +1 -1
  86. package/server/{docker-DcMTFTUC.js → docker-BJzlkqYB.js} +2 -2
  87. package/server/docker-Y3PElJb0.js +3 -0
  88. package/server/dod-DlNtcH6n.js +91 -0
  89. package/server/durable-review-pipeline-Cibps-Rg.js +20 -0
  90. package/server/durable-review-pipeline-DP6bIcOY.js +3 -0
  91. package/server/{ensure-devcontainer-DNi-ono3.js → ensure-devcontainer-BAofzBPv.js} +4 -4
  92. package/server/{ensure-devcontainer-BZgOhRo7.js → ensure-devcontainer-DMAbWqtQ.js} +1 -1
  93. package/server/{esm-shims-OSHAYaS1.js → esm-shims-BeObUkaw.js} +1 -1
  94. package/server/{event-store-EV2cMiXj.js → event-store-5UKzh9Jf.js} +1 -1
  95. package/server/{event-store-CQL6NeqB.js → event-store-CrHcVC5_.js} +23 -4
  96. package/server/{events-DTfAe4My.js → events-BNrvchBg.js} +3 -3
  97. package/server/{events-BTdrdEq8.js → events-CF8QDbuV.js} +1 -1
  98. package/server/{factory-CFibJuaw.js → factory-Cmm9Hsho.js} +5 -5
  99. package/server/{feature-registry-population-DKZFMbFt.js → feature-registry-population-B6HpNWRy.js} +4 -4
  100. package/server/{feature-registry-storage-BdPuLcBX.js → feature-registry-storage-DJEFx1Pf.js} +2 -2
  101. package/server/{features-ez2271oH.js → features-D5km80UI.js} +2 -2
  102. package/server/{feedback-target-CoFDHiM8.js → feedback-target-BJ5ZADsu.js} +1 -1
  103. package/server/{feedback-target-7mqqwrX6.js → feedback-target-DSxEL6lP.js} +8 -8
  104. package/server/{feedback-writer-CY5L1lB7.js → feedback-writer-C27Hak8a.js} +5 -5
  105. package/server/{feedback-writer-D3a22RCd.js → feedback-writer-CoB9Z6aU.js} +1 -1
  106. package/server/{flywheel-DHrgCphM.js → flywheel-BHx8XuMr.js} +47 -20
  107. package/server/{flywheel-SVF02Jpq.js → flywheel-DZZdtiOL.js} +1 -1
  108. package/server/{flywheel-DzGtWnJ1.js → flywheel-f662Q-y2.js} +16 -15
  109. package/server/flywheel-merge-order-D_xLMbJU.js +462 -0
  110. package/server/flywheel-merge-order-Dil0LmdN.js +2 -0
  111. package/server/forge-B5o319qI.js +3 -0
  112. package/server/forge-BaKGCya6.js +383 -0
  113. package/server/{from-kNxT0bZC.js → from-B3tZbB55.js} +1 -1
  114. package/server/fs-lock-Bre3sGoz.js +130 -0
  115. package/server/{fts-db-CE46vDkZ.js → fts-db-IVc4_M3f.js} +2 -2
  116. package/server/{fts-operations-CqY6zl-i.js → fts-operations-B9jG8wa3.js} +2 -2
  117. package/server/{git-utils-CRw2zLPC.js → git-utils-CsvYfJU3.js} +30 -5
  118. package/server/git-utils-Xg4PFN45.js +3 -0
  119. package/server/{github-app-ClZ2lk8D.js → github-app-Bmg4R9mv.js} +1 -1
  120. package/server/{github-app-C3QrAUd0.js → github-app-CmNk0zLU.js} +3 -3
  121. package/server/{github-client-DfQYVUaw.js → github-client-B6KM9_wA.js} +1 -1
  122. package/server/{github-client-BnIsSrEN.js → github-client-qazkPrg0.js} +3 -3
  123. package/server/github-pr-lookup-DAcVeRLK.js +58 -0
  124. package/server/{harness-binary-DPUi-Pv8.js → harness-binary-BSpiXaLw.js} +2 -2
  125. package/server/{harness-resolve-3lNZkyT4.js → harness-resolve-BAJu5MX8.js} +4 -4
  126. package/server/{health-events-BDOHby5Q.js → health-events-2Z6Wa9SM.js} +1 -1
  127. package/server/{health-events-BBcTYQKU.js → health-events-BwX32k8d.js} +2 -2
  128. package/server/{hooks-DPVX1rwQ.js → hooks-D1g1jKLI.js} +1 -1
  129. package/server/{hooks-CKZgXlJb.js → hooks-DbtbimEf.js} +2 -2
  130. package/server/{hume-Cz8igP9E.js → hume-DXNiu6nQ.js} +2 -2
  131. package/server/hume-VUCNbTgn.js +3 -0
  132. package/server/{idle-stack-reaper-CuLF0j2H.js → idle-stack-reaper-CRA1e0jr.js} +1 -1
  133. package/server/{idle-stack-reaper-DDIRwxUY.js → idle-stack-reaper-Cy-dQzW4.js} +99 -6
  134. package/server/in-flight-guard-D-sSkADM.js +45 -0
  135. package/server/{infra-BEqFxlJc.js → infra-BDQDRopn.js} +81 -5
  136. package/server/{injection-C8aiVJrF.js → injection-6AGnXxlj.js} +7 -7
  137. package/server/{injection-CPUIqNhI.js → injection-Bl8d_jHZ.js} +1 -1
  138. package/server/inspect-agent-CUwVmr2h.js +2 -0
  139. package/server/{inspect-agent-BLuJ1AkT.js → inspect-agent-nXdIptyh.js} +26 -25
  140. package/server/{internal-token-s0-oKybJ.js → internal-token-DzK385vD.js} +2 -2
  141. package/server/{internal-token-BrcU6qfe.js → internal-token-Ias7N8Kg.js} +1 -1
  142. package/server/{io-C9kF1wtJ.js → io-B00PBNku.js} +44 -27
  143. package/server/{issue-closed-CDJk4pIp.js → issue-closed-BehTG1be.js} +8 -8
  144. package/server/{issue-lifecycle-ojZAzDBP.js → issue-lifecycle-Birk-ifu.js} +42 -30
  145. package/server/{issue-lifecycle-B8sZHVHh.js → issue-lifecycle-BqSuQvbn.js} +1 -1
  146. package/server/{issue-service-singleton-BvJ09SaR.js → issue-service-singleton-B2wXiIlw.js} +1 -1
  147. package/server/{issue-service-singleton-Yx5DdmVJ.js → issue-service-singleton-C6ZduvuY.js} +10 -10
  148. package/server/{issues-BMmP_77e.js → issues-DQ5-LatB.js} +2 -2
  149. package/server/{jsonl-parser-BXSlHwEh.js → jsonl-parser-BDpnGFCl.js} +5 -4
  150. package/server/{label-cleanup-B0UJwnv5.js → label-cleanup-Dwnky8FG.js} +3 -3
  151. package/server/{lifecycle-xmBfK2GJ.js → lifecycle-B3s4sM1G.js} +6 -7
  152. package/server/{lifecycle-yPd___5E.js → lifecycle-B4Xdb4cY.js} +2 -2
  153. package/server/{lifecycle-io-DPo7x11I.js → lifecycle-io-CzTHEooc.js} +1 -1
  154. package/server/{lifecycle-io-BREGpnLk.js → lifecycle-io-DCo6s6ks.js} +5 -5
  155. package/server/{linear-client-BsuUvkdA.js → linear-client-9uq7fhiV.js} +3 -3
  156. package/server/{linear-client-CTskEeT_.js → linear-client-CnbtHiic.js} +1 -1
  157. package/server/linear-mcp-auth-BxUOzswy.js +280 -0
  158. package/server/linear-mcp-auth-D46fBCLf.js +2 -0
  159. package/server/memory-fts-worker.js +1 -1
  160. package/server/{merge-CefQNAnq.js → merge-DiW9RdSB.js} +13 -11
  161. package/server/{merge-agent-4WOWlSYA.js → merge-agent-BLUgRsz3.js} +234 -84
  162. package/server/{merge-agent-CKkgIBPB.js → merge-agent-DQTXZk8z.js} +1 -1
  163. package/server/{merge-batch-ClFn2T-y.js → merge-batch-Cp_j9BGk.js} +1 -1
  164. package/server/merge-completeness-B46KqhtY.js +277 -0
  165. package/server/merge-completeness-BLbB5-6n.js +3 -0
  166. package/server/merge-ops-1abz6O_P.js +2 -0
  167. package/server/merge-rebase-CJJVAJuz.js +2 -0
  168. package/server/{merge-rebase-BfaTyXsw.js → merge-rebase-DIkBjgwq.js} +3 -3
  169. package/server/{merge-set-DJ8-UErs.js → merge-set-CBgHfwM0.js} +11 -5
  170. package/server/merge-set-DeUxFsC3.js +3 -0
  171. package/server/{merge-B1DiziGU.js → merge-sr8Nrnmi.js} +1 -1
  172. package/server/merge-sync-CpGmk6Ch.js +3 -0
  173. package/server/{merge-sync-VPV28g0g.js → merge-sync-kr4vqyjM.js} +409 -153
  174. package/server/{merge-train-CHopycP0.js → merge-train-Dmrcus12.js} +18 -8
  175. package/server/{merge-train-deps-D1cOZzy2.js → merge-train-deps-D_uGX91G.js} +21 -15
  176. package/server/merge-verification-NvaAd8CZ.js +220 -0
  177. package/server/merged-docker-cleanup-worker-DH_hrGPI.js +3 -0
  178. package/server/merged-docker-cleanup-worker-Y1R06TEl.js +107 -0
  179. package/server/{multipart-parser-duPAfSBw.js → multipart-parser-R-oC8dQg.js} +2 -2
  180. package/server/{no-resume-mode-Nw29vaFb.js → no-resume-mode-BgD0JUmM.js} +1 -1
  181. package/server/node_modules/.package-lock.json +30 -30
  182. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  183. package/server/node_modules/@google-cloud/common/package.json +2 -2
  184. package/server/node_modules/@types/node/README.md +1 -1
  185. package/server/node_modules/@types/node/crypto.d.ts +1 -1
  186. package/server/node_modules/@types/node/package.json +2 -2
  187. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  188. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  189. package/server/node_modules/gaxios/package.json +1 -1
  190. package/server/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
  191. package/server/node_modules/google-auth-library/package.json +1 -1
  192. package/server/node_modules/google-gax/build/protos/google/api/auth.proto +2 -1
  193. package/server/node_modules/google-gax/build/protos/google/api/backend.proto +12 -1
  194. package/server/node_modules/google-gax/build/protos/google/api/billing.proto +1 -1
  195. package/server/node_modules/google-gax/build/protos/google/api/client.proto +165 -53
  196. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1/resources.proto +1 -1
  197. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/quota_adjuster_settings.proto +7 -3
  198. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/resources.proto +1 -1
  199. package/server/node_modules/google-gax/build/protos/google/api/config_change.proto +1 -1
  200. package/server/node_modules/google-gax/build/protos/google/api/context.proto +1 -1
  201. package/server/node_modules/google-gax/build/protos/google/api/control.proto +3 -3
  202. package/server/node_modules/google-gax/build/protos/google/api/distribution.proto +1 -1
  203. package/server/node_modules/google-gax/build/protos/google/api/documentation.proto +1 -1
  204. package/server/node_modules/google-gax/build/protos/google/api/endpoint.proto +1 -1
  205. package/server/node_modules/google-gax/build/protos/google/api/error_reason.proto +186 -1
  206. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/checked.proto +31 -3
  207. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/eval.proto +8 -9
  208. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/explain.proto +1 -2
  209. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/syntax.proto +20 -22
  210. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/value.proto +2 -3
  211. package/server/node_modules/google-gax/build/protos/google/api/field_behavior.proto +1 -1
  212. package/server/node_modules/google-gax/build/protos/google/api/field_info.proto +1 -1
  213. package/server/node_modules/google-gax/build/protos/google/api/http.proto +1 -1
  214. package/server/node_modules/google-gax/build/protos/google/api/httpbody.proto +1 -1
  215. package/server/node_modules/google-gax/build/protos/google/api/label.proto +1 -1
  216. package/server/node_modules/google-gax/build/protos/google/api/launch_stage.proto +1 -1
  217. package/server/node_modules/google-gax/build/protos/google/api/log.proto +1 -1
  218. package/server/node_modules/google-gax/build/protos/google/api/logging.proto +1 -1
  219. package/server/node_modules/google-gax/build/protos/google/api/metric.proto +1 -1
  220. package/server/node_modules/google-gax/build/protos/google/api/monitored_resource.proto +1 -1
  221. package/server/node_modules/google-gax/build/protos/google/api/monitoring.proto +1 -1
  222. package/server/node_modules/google-gax/build/protos/google/api/policy.proto +1 -1
  223. package/server/node_modules/google-gax/build/protos/google/api/quota.proto +1 -1
  224. package/server/node_modules/google-gax/build/protos/google/api/resource.proto +1 -1
  225. package/server/node_modules/google-gax/build/protos/google/api/routing.proto +8 -4
  226. package/server/node_modules/google-gax/build/protos/google/api/service.proto +2 -3
  227. package/server/node_modules/google-gax/build/protos/google/api/source_info.proto +1 -1
  228. package/server/node_modules/google-gax/build/protos/google/api/system_parameter.proto +1 -1
  229. package/server/node_modules/google-gax/build/protos/google/api/usage.proto +7 -27
  230. package/server/node_modules/google-gax/build/protos/google/api/visibility.proto +1 -1
  231. package/server/node_modules/google-gax/build/protos/google/longrunning/operations.proto +20 -1
  232. package/server/node_modules/google-gax/build/protos/google/protobuf/any.proto +52 -108
  233. package/server/node_modules/google-gax/build/protos/google/protobuf/compiler/ruby/ruby_generated_code.proto +2 -0
  234. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_features.proto +21 -1
  235. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_file_options.proto +24 -0
  236. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_options.proto +15 -0
  237. package/server/node_modules/google-gax/build/protos/google/protobuf/descriptor.proto +118 -30
  238. package/server/node_modules/google-gax/build/protos/google/protobuf/field_mask.proto +16 -18
  239. package/server/node_modules/google-gax/build/protos/google/protobuf/internal_options.proto +8 -1
  240. package/server/node_modules/google-gax/build/protos/google/protobuf/json/json_enumval_custom_string.proto +26 -0
  241. package/server/node_modules/google-gax/build/protos/google/protobuf/json_enumvalue_options.proto +29 -0
  242. package/server/node_modules/google-gax/build/protos/google/protobuf/json_options.proto +14 -0
  243. package/server/node_modules/google-gax/build/protos/google/protobuf/struct.proto +38 -22
  244. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/forced_micro_string.proto +3 -0
  245. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/repeated_field_proxy_import_message.proto +14 -0
  246. package/server/node_modules/google-gax/build/protos/google/protobuf/timestamp.proto +9 -8
  247. package/server/node_modules/google-gax/build/protos/google/protobuf/util/json_format_proto3.proto +18 -0
  248. package/server/node_modules/google-gax/build/protos/google/rpc/code.proto +1 -1
  249. package/server/node_modules/google-gax/build/protos/google/rpc/context/attribute_context.proto +7 -2
  250. package/server/node_modules/google-gax/build/protos/google/rpc/context/audit_context.proto +1 -1
  251. package/server/node_modules/google-gax/build/protos/google/rpc/error_details.proto +5 -5
  252. package/server/node_modules/google-gax/build/protos/google/rpc/http.proto +1 -1
  253. package/server/node_modules/google-gax/build/protos/google/rpc/status.proto +1 -2
  254. package/server/node_modules/google-gax/build/protos/google/type/calendar_period.proto +1 -1
  255. package/server/node_modules/google-gax/build/protos/google/type/color.proto +9 -10
  256. package/server/node_modules/google-gax/build/protos/google/type/date.proto +11 -9
  257. package/server/node_modules/google-gax/build/protos/google/type/datetime.proto +17 -17
  258. package/server/node_modules/google-gax/build/protos/google/type/dayofweek.proto +1 -1
  259. package/server/node_modules/google-gax/build/protos/google/type/decimal.proto +11 -13
  260. package/server/node_modules/google-gax/build/protos/google/type/expr.proto +1 -1
  261. package/server/node_modules/google-gax/build/protos/google/type/fraction.proto +1 -1
  262. package/server/node_modules/google-gax/build/protos/google/type/interval.proto +1 -2
  263. package/server/node_modules/google-gax/build/protos/google/type/latlng.proto +4 -5
  264. package/server/node_modules/google-gax/build/protos/google/type/localized_text.proto +3 -3
  265. package/server/node_modules/google-gax/build/protos/google/type/money.proto +1 -2
  266. package/server/node_modules/google-gax/build/protos/google/type/month.proto +1 -1
  267. package/server/node_modules/google-gax/build/protos/google/type/phone_number.proto +20 -15
  268. package/server/node_modules/google-gax/build/protos/google/type/postal_address.proto +39 -39
  269. package/server/node_modules/google-gax/build/protos/google/type/quaternion.proto +4 -4
  270. package/server/node_modules/google-gax/build/protos/google/type/timeofday.proto +11 -8
  271. package/server/node_modules/google-gax/package.json +5 -5
  272. package/server/node_modules/retry-request/package.json +4 -4
  273. package/server/node_modules/teeny-request/package.json +5 -5
  274. package/server/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  275. package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  276. package/server/node_modules/undici/lib/core/request.js +12 -1
  277. package/server/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
  278. package/server/node_modules/undici/lib/global.js +36 -16
  279. package/server/node_modules/undici/lib/handler/cache-handler.js +236 -116
  280. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
  281. package/server/node_modules/undici/lib/handler/retry-handler.js +24 -0
  282. package/server/node_modules/undici/lib/interceptor/cache.js +152 -62
  283. package/server/node_modules/undici/lib/interceptor/decompress.js +5 -2
  284. package/server/node_modules/undici/lib/util/cache.js +328 -66
  285. package/server/node_modules/undici/lib/util/date.js +23 -6
  286. package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
  287. package/server/node_modules/undici/package.json +1 -1
  288. package/server/{orphan-proposed-reconciler-BvKkWMJQ.js → orphan-proposed-reconciler-B6vJHxtX.js} +242 -34
  289. package/server/{orphan-proposed-reconciler-CTSGcK8p.js → orphan-proposed-reconciler-DcgTPPFY.js} +1 -1
  290. package/server/package-lock.json +31 -31
  291. package/server/package.json +1 -1
  292. package/server/{pan-dir-B0c3w0Ya.js → pan-dir-DMzF5wne.js} +25 -11
  293. package/server/{paths-D-xWGHdh.js → paths-sJBSb7Ul.js} +2 -2
  294. package/server/pending-lifecycle-claim-DilzGfgk.js +110 -0
  295. package/server/persistent-logger-H_VjuOu7.js +57 -0
  296. package/server/{pickup-DUCLWrJY.js → pickup-DWhqzliO.js} +4 -3
  297. package/server/pipeline-membership-C88VBnhJ.js +3 -0
  298. package/server/pipeline-membership-D9SBvItj.js +57 -0
  299. package/server/pipeline-membership-gather-4eR-7Tqy.js +3 -0
  300. package/server/pipeline-membership-gather-CeVGnNJ2.js +593 -0
  301. package/server/{pipeline-notifier-BXkJzDC4.js → pipeline-notifier-D0ALV6Nw.js} +2 -2
  302. package/server/{pipeline-notifier-BJr8gQX6.js → pipeline-notifier-DT6xLFao.js} +1 -1
  303. package/server/post-merge-lifecycle-worker-8HIeS_J6.js +50 -0
  304. package/server/{project-pipelines-C0MWUeCU.js → project-pipelines-9SKt2bEc.js} +2 -2
  305. package/server/{project-repos-B6GycDh9.js → project-repos-B5pIphKg.js} +7 -3
  306. package/server/project-repos-DPjOdfPa.js +3 -0
  307. package/server/projects-_n3Zui6K.js +3 -0
  308. package/server/{prompts-DxzFXuLl.js → prompts-CgzMBvQF.js} +2 -2
  309. package/server/{providers-u4Ga0jOr.js → providers-BI1mOBQ4.js} +1 -1
  310. package/server/{providers-qQAwGQDW.js → providers-BJQSnAAp.js} +7 -7
  311. package/server/public/assets/{chunk-BO2N2NFS-BamJdinX.js → chunk-BO2N2NFS-D_pGACYN.js} +4 -4
  312. package/server/public/assets/{diagram-OG6HWLK6-DfOB8-w4.js → diagram-OG6HWLK6-BO6fe3hH.js} +1 -1
  313. package/server/public/assets/{dist-ByIuzMQW.js → dist-5zingMiA.js} +3 -3
  314. package/server/public/assets/{dist-D7zYSEA6.js → dist-CVxhbI2E.js} +1 -1
  315. package/server/public/assets/{ganttDiagram-6RSMTGT7-EdmRyXL3.js → ganttDiagram-6RSMTGT7-Bgj4A7kp.js} +1 -1
  316. package/server/public/assets/{highlighted-body-OFNGDK62-MerOfTX8.js → highlighted-body-OFNGDK62-DNPK7_cm.js} +1 -1
  317. package/server/public/assets/index-DEpY-D1O.js +807 -0
  318. package/server/public/assets/index-Ddkcz3WT.css +1 -0
  319. package/server/public/assets/{linear-BBbArIcK.js → linear-BB0jQT16.js} +1 -1
  320. package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +1 -0
  321. package/server/public/assets/{pieDiagram-4H26LBE5-BKIddiJN.js → pieDiagram-4H26LBE5-DeGIzzpZ.js} +1 -1
  322. package/server/public/assets/{prod-B8vYiu52.js → prod-XBLvikex.js} +4 -4
  323. package/server/public/assets/{quadrantDiagram-W4KKPZXB-D6RtoULk.js → quadrantDiagram-W4KKPZXB-BV9SLeWz.js} +1 -1
  324. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CLrCedZX.js → sankeyDiagram-5OEKKPKP-Dwja0gj8.js} +1 -1
  325. package/server/public/assets/{xychartDiagram-2RQKCTM6-hznR8DYl.js → xychartDiagram-2RQKCTM6-DCB4qvfw.js} +1 -1
  326. package/server/public/index.html +2 -2
  327. package/server/{pull-requests-_lHueOHW.js → pull-requests-7BgLDsIo.js} +19 -10
  328. package/server/{pull-requests-7N8WKseP.js → pull-requests-Dq0y6IxE.js} +1 -1
  329. package/server/{queries-CjNIf-Ub.js → queries-C-MUZaIy.js} +824 -192
  330. package/server/{rally-CyWT_lNO.js → rally-CPysR4T_.js} +3 -3
  331. package/server/rally-D_VW4bJv.js +3 -0
  332. package/server/{rally-api-C8e_1JRi.js → rally-api-8Ptlp2os.js} +2 -2
  333. package/server/{rally-api-ClOSd-Tt.js → rally-api-CgosKdKL.js} +1 -1
  334. package/server/{rally-client-sgtVqzNU.js → rally-client-CCX0hADj.js} +1 -1
  335. package/server/{rally-client-lc-nokqr.js → rally-client-iYMHWQD7.js} +5 -5
  336. package/server/{reap-terminal-sessions-7KeHv1R1.js → reap-terminal-sessions-4Xg9NGA8.js} +2 -2
  337. package/server/{reap-terminal-sessions-BtHPo6Xc.js → reap-terminal-sessions-Qf-9LVQc.js} +2 -2
  338. package/server/{rebuild-stack-lwtsW0GO.js → rebuild-stack-CMdgaylx.js} +16 -7
  339. package/server/{rebuild-stack-CFvcBHsS.js → rebuild-stack-DqcOVmJO.js} +2 -2
  340. package/server/{reconstruct-cache-C3Ui7ojV.js → reconstruct-cache-CMZJ_Vjq.js} +9 -7
  341. package/server/record-BTwWhtBb.js +3 -0
  342. package/server/{record-update-dE1Aw83j.js → record-update-DaOKS7Wb.js} +124 -157
  343. package/server/record-update-DhI7eySG.js +3 -0
  344. package/server/{recovery-trip-BvRWfUXM.js → recovery-trip-DDH-02ng.js} +2 -2
  345. package/server/{release-engine-Cx48W7z8.js → release-engine-B2X9AfFC.js} +5 -5
  346. package/server/{release-set-CQfuN9-v.js → release-set-G4XKyQ8K.js} +3 -3
  347. package/server/{remote-C_2hasl7.js → remote-BXarMvqf.js} +3 -3
  348. package/server/{remote-ChgimyYa.js → remote-CUhyqjXk.js} +3 -3
  349. package/server/{remote-agents-By1ige5O.js → remote-agents-Bba-MgSA.js} +311 -48
  350. package/server/{remote-agents-CA3Ihlxj.js → remote-agents-CLZB3Coc.js} +2 -2
  351. package/server/{remote-completion-fVe9e_3u.js → remote-completion-CwAp79EC.js} +13 -13
  352. package/server/resume-mOREjlYu.js +3 -0
  353. package/server/{review-agent-CIGOQYBD.js → review-agent--pOptAEV.js} +65 -50
  354. package/server/{review-agent-DNboMyW4.js → review-agent-BTCNkq2h.js} +1 -1
  355. package/server/{review-artifacts-nRDPuMxd.js → review-artifacts-BNmw8dWE.js} +7 -6
  356. package/server/{review-context-2uj-YQ8J.js → review-context-DFxYOOJW.js} +9 -9
  357. package/server/{in-flight-guard-CAAkqPLu.js → review-convoy-liveness-BgU_1jJf.js} +3 -44
  358. package/server/review-status-CGvlA4o_.js +7737 -0
  359. package/server/review-status-Dma9SFaN.js +3 -0
  360. package/server/review-status-emit-DURrmGYX.js +50 -0
  361. package/server/{review-status-enrichment-Dci-ZwEt.js → review-status-enrichment-8NiNXi5W.js} +4 -4
  362. package/server/review-status-source-BLx_1siH.js +3 -0
  363. package/server/{review-status-source-CxuEjLGg.js → review-status-source-DIk1JSow.js} +24 -3
  364. package/server/{review-status-sync-BTOpxtTC.js → review-status-sync-0GxOqeqF.js} +11 -6
  365. package/server/{review-status-sync-DSDK3OMy.js → review-status-sync-muT-EBp2.js} +1 -1
  366. package/server/{review-verdict-feedback-CTd4QMBu.js → review-verdict-feedback-HwF6ODFy.js} +1 -1
  367. package/server/{review-verdict-feedback-CCjVA7Uk.js → review-verdict-feedback-xJNdqBnX.js} +65 -11
  368. package/server/{rollup-FGsKki9R.js → rollup-BQaol5TX.js} +8 -8
  369. package/server/{rollup-BKQC7jp4.js → rollup-BR4t_wck.js} +1 -1
  370. package/server/{scanner-CnqEZeDy.js → scanner-C-D2cFdX.js} +8 -7
  371. package/server/{sequence-io-D909zgeH.js → sequence-io-Bmf1EZM5.js} +4 -4
  372. package/server/{sequencer-agent-CzkcK6P5.js → sequencer-agent-CigMyKh2.js} +7 -6
  373. package/server/server.js +2005 -614
  374. package/server/{service-CLeAoU6G.js → service-CD0DvFvD.js} +114 -68
  375. package/server/{session-fork-CHI1XvL9.js → session-fork-B6cQ5eya.js} +2 -2
  376. package/server/{session-history-BT3IvqhC.js → session-history-3ON_IJjm.js} +7 -55
  377. package/server/settings-CVmWiJ-r.js +2 -0
  378. package/server/{settings-C0zgxOGf.js → settings-PilbFZAM.js} +3 -2
  379. package/server/{settings-BTMvpNFU.js → settings-VN0qOh4U.js} +3 -3
  380. package/server/{shadow-engineering-BJfgm-hX.js → shadow-engineering-DXvx77oE.js} +3 -3
  381. package/server/{shadow-state-7a-524T8.js → shadow-state-BBk_zacw.js} +2 -2
  382. package/server/{shadow-state-DnDyjujH.js → shadow-state-CZBp7pwq.js} +1 -1
  383. package/server/{shadow-utils-Db3oroFG.js → shadow-utils-DdZ05AJS.js} +2 -2
  384. package/server/{ship-log-D9MlVzYU.js → ship-log-7kJfjUX2.js} +1 -1
  385. package/server/{smart-compaction-CV2ukKND.js → smart-compaction-8fA5k5XN.js} +1 -1
  386. package/server/{smart-compaction-KCYScAU1.js → smart-compaction-ByhL9cRS.js} +8 -7
  387. package/server/{spawn-planning-session-DKpdFyOC.js → spawn-planning-session-pcF-YeFE.js} +38 -50
  388. package/server/spawn-planning-session-vLUJoFjy.js +3 -0
  389. package/server/{specialist-completion-Ky9wCDpb.js → specialist-completion-B07XjWD2.js} +1 -1
  390. package/server/{specialist-context-Bn3dCGS2.js → specialist-context-DJ-zFyL3.js} +5 -5
  391. package/server/{specialist-handoff-logger-CMEwYxa2.js → specialist-handoff-logger-aKSxbIgD.js} +2 -2
  392. package/server/{specialist-logs-C5p8G7tx.js → specialist-logs-Dae-n52_.js} +3 -3
  393. package/server/{specialists-CC4r-c2s.js → specialists-6PWdtWcg.js} +1177 -311
  394. package/server/{specialists-DM6bWjsi.js → specialists-Bz-wFT7R.js} +1 -1
  395. package/server/{specialists-jiuuyVkp.js → specialists-DUiExaxb.js} +18 -18
  396. package/server/{specialists-CShuVGWT.js → specialists-KR3pKulN.js} +1 -1
  397. package/server/specs--enInima.js +3 -0
  398. package/server/src-B948bGVR.js +11452 -0
  399. package/server/{src-CXmtj0im.js → src-rac0Mepv.js} +6 -6
  400. package/server/{src-CdmnTM2m.js → src-vHy2-oCv.js} +3 -3
  401. package/server/{stack-health-Bn3o8FBX.js → stack-health-BikqHSjn.js} +1 -1
  402. package/server/{stack-health-DxSdG9cW.js → stack-health-DqLTiEu4.js} +7 -5
  403. package/server/{stale-task-claims-KJKxxiiQ.js → stale-task-claims-Cab_Fo_Z.js} +5 -4
  404. package/server/{staleness-DPm7ClwA.js → staleness-C-a5rBxF.js} +1 -1
  405. package/server/{staleness-CT34nwr9.js → staleness-CGTZyp6V.js} +1 -1
  406. package/server/{state-home-Cn_Qu8IX.js → state-home-722Dkx92.js} +2 -2
  407. package/server/{state-mapping-BL_-3Yt8.js → state-mapping-CybR81Uf.js} +1 -1
  408. package/server/{state-migrate-BGg2ZaOt.js → state-migrate-2u8wIpoL.js} +4 -4
  409. package/server/{stuck-remediation-DYuPRYYw.js → stuck-remediation-CC6q3eqQ.js} +84 -26
  410. package/server/{stuck-remediation-s9_2qfi6.js → stuck-remediation-r1TJu68G.js} +1 -1
  411. package/server/{substrate-bug-weights-service-B-FwCs5V.js → substrate-bug-weights-service-CzIyyWFT.js} +3 -3
  412. package/server/{summary-fork-DpcxN9tf.js → summary-fork-BqgmgPDt.js} +2 -2
  413. package/server/{summary-fork-D1RAk9rJ.js → summary-fork-Df2WFijM.js} +8 -8
  414. package/server/supervisor/{injection-budget-Csw5tqfJ.js → injection-budget-Cg_KIb3o.js} +1 -1
  415. package/server/supervisor/{paths-DehGY2Fj.js → paths-BBOnCYlO.js} +10 -2
  416. package/server/supervisor/pty-supervisor.js +50 -4
  417. package/server/supervisor/{pty-token-x-ea28Us.js → pty-token-BbjwEUUM.js} +3 -3
  418. package/server/supervisor-B4anCCSm.js +2 -0
  419. package/server/{supervisor-wM4ooB5O.js → supervisor-BxqSpjcN.js} +3 -3
  420. package/server/{swarm-readiness-DlP_UjHq.js → swarm-readiness-DfFxa9-n.js} +3 -3
  421. package/server/{system-prerequisites-DUDj1YHf.js → system-prerequisites-ICLSkhhZ.js} +2 -2
  422. package/server/{teardown-workspace-DeTTImn-.js → teardown-workspace-DRdi_CPa.js} +15 -16
  423. package/server/{test-agent-queue-MbxX5vqq.js → test-agent-queue-A_-p-i0I.js} +8 -7
  424. package/server/{test-verdict-gscuksPv.js → test-verdict-BHgTAwIG.js} +1 -1
  425. package/server/{test-verdict-bWYBtqBg.js → test-verdict-C4i9aqEP.js} +1 -1
  426. package/server/{tldr-daemon-BYFkts95.js → tldr-daemon-CvWXBhX1.js} +1 -1
  427. package/server/{tldr-daemon-C-69c3OI.js → tldr-daemon-wvsU6bKv.js} +2 -2
  428. package/server/{tmux-R7N7y-Mh.js → tmux-CfDHob9M.js} +174 -4
  429. package/server/{tmux-B6z7h_vZ.js → tmux-Ctk6RV5l.js} +1 -1
  430. package/server/{token-BK6t8BIT.js → token-DrxwytsZ.js} +2 -2
  431. package/server/{token-util-DxXu-vd1.js → token-util-B48BlCba.js} +1 -1
  432. package/server/token-util-D411CAq9.js +3 -0
  433. package/server/{tracker-config-G6latr8C.js → tracker-config-BcPMElRB.js} +2 -2
  434. package/server/{tracker-utils-DHv5pSDT.js → tracker-utils-CJ6BHjcD.js} +3 -3
  435. package/server/{traefik-connect-Df2uXPsQ.js → traefik-connect-DZ6nMYMj.js} +1 -1
  436. package/server/{tunnel-DGdUkGoZ.js → tunnel-Bp-dRHZz.js} +1 -1
  437. package/server/{tunnel-CDVKJpRv.js → tunnel-DUbUPElU.js} +3 -3
  438. package/server/{typed-errors-BHhE85Ul.js → typed-errors-CKeoDdU3.js} +1 -1
  439. package/server/{typed-errors-2BTMxkZq.js → typed-errors-DyjseiB6.js} +1 -1
  440. package/server/{types-hraoaQIp.js → types-Cm5ASJbq.js} +1 -1
  441. package/server/{types-5M0lupud.js → types-Di8wdakq.js} +1 -1
  442. package/server/uat-promote-verification-CoJuh7XO.js +92 -0
  443. package/server/uat-train-4Q0k06CQ.js +0 -0
  444. package/server/uat-train-Dewoatps.js +2 -0
  445. package/server/{validate-IfDGkaVR.js → validate-B0C8p66t.js} +8 -6
  446. package/server/{validation-Dw1pzDzr.js → validation-B_kIRfNe.js} +4 -4
  447. package/server/{validation-CC9OPqJZ.js → validation-hVOwQk8T.js} +1 -1
  448. package/server/{verification-artifact-B3itKTxu.js → verification-artifact-BxlxTiYK.js} +1 -1
  449. package/server/{verification-artifact-TVFSz_q1.js → verification-artifact-D70AtckY.js} +1 -1
  450. package/server/{verification-runner-BW4HOKAz.js → verification-runner-Bc3cJvpC.js} +1 -1
  451. package/server/{verification-runner-CkgX6EtI.js → verification-runner-KZTz6u72.js} +40 -18
  452. package/server/{vtt-parser-DYPbKcIJ.js → vtt-parser-CE_i3Bcw.js} +1 -1
  453. package/server/{work-agent-prompt-Du8Vh2aJ.js → work-agent-prompt-ByrPAzOy.js} +20 -9
  454. package/server/{workflows-mbQzh6mQ.js → workflows-D0vP1WrK.js} +252 -99
  455. package/server/workflows-DtDX08ed.js +2 -0
  456. package/server/{workspace--8tnhDI0.js → workspace-COWvdibH.js} +1 -1
  457. package/server/{workspace-BPUws1-_.js → workspace-DQkRPLlQ.js} +3 -3
  458. package/server/workspace-anchor-drift-DXYIAHzr.js +224 -0
  459. package/server/workspace-anchor-drift-pwz23TI1.js +3 -0
  460. package/server/{workspace-config-CIVWZOQr.js → workspace-config-BdZM4PvZ.js} +1 -1
  461. package/server/{workspace-manager-CBhNdzE4.js → workspace-manager-BPgTrG66.js} +157 -118
  462. package/server/workspace-manager-C1F3XsnS.js +3 -0
  463. package/server/{workspace-metadata-BzHnwwX4.js → workspace-metadata-CdjzAP8x.js} +1 -1
  464. package/server/{workspace-metadata-_WygnyoX.js → workspace-metadata-DkO_iTLo.js} +2 -2
  465. package/server/{workspaces-Do_9J0LQ.js → workspaces-CRBJikLp.js} +749 -299
  466. package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
  467. package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
  468. package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
  469. package/sync-sources/skills/pan-close/SKILL.md +5 -3
  470. package/sync-sources/skills/pan-merge/SKILL.md +7 -5
  471. package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
  472. package/sync-sources/skills/pan-release/SKILL.md +57 -0
  473. package/sync-sources/skills/pan-reload/SKILL.md +3 -3
  474. package/sync-sources/skills/pan-restart/SKILL.md +5 -4
  475. package/sync-sources/skills/pan-review/SKILL.md +7 -1
  476. package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
  477. package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
  478. package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
  479. package/server/activity-logger-OEUBdfZ8.js +0 -3
  480. package/server/agent-state-Bc3tzUC8.js +0 -3
  481. package/server/agent-state-service-D5UGKIJL.js +0 -2
  482. package/server/agents-wi9NWzs2.js +0 -3
  483. package/server/archive-planning-BZDgzoEj.js +0 -3
  484. package/server/cli-B86rejVV.js +0 -3
  485. package/server/conflict-gate-BhAY7TUd.js +0 -3
  486. package/server/conversation-service-BLd3MYsG.js +0 -3
  487. package/server/deacon-kiQrb4ZT.js +0 -4
  488. package/server/deacon-swarm-C-GwfjJy.js +0 -2
  489. package/server/deploy-window-DkZraDyj.js +0 -3
  490. package/server/dist-Bzy0y69j.js +0 -3
  491. package/server/dod-C6n9RV3G.js +0 -66
  492. package/server/flywheel-merge-order-UU0tiUld.js +0 -245
  493. package/server/flywheel-merge-order-UUcsCDb6.js +0 -2
  494. package/server/forge-CNFnyqps.js +0 -270
  495. package/server/forge-DXnS_YFH.js +0 -2
  496. package/server/git-utils-D0_yhCgF.js +0 -3
  497. package/server/github-pr-lookup-D16NGsSO.js +0 -44
  498. package/server/hume-ccTf4wTX.js +0 -3
  499. package/server/inspect-agent-Brtz0URj.js +0 -2
  500. package/server/label-reconciler-B4iOAjlC.js +0 -113
  501. package/server/launcher-generator-BBWG_SiS.js +0 -473
  502. package/server/merge-ops-CR44oU9-.js +0 -2
  503. package/server/merge-set-bUqbm3yc.js +0 -3
  504. package/server/merge-sync-BJYeOODr.js +0 -3
  505. package/server/merge-verification-BkaOqPsw.js +0 -124
  506. package/server/pipeline-membership-mY3GprlK.js +0 -420
  507. package/server/project-repos-DXKQsc_m.js +0 -3
  508. package/server/projects-vjjcmiN8.js +0 -3
  509. package/server/public/assets/index-CWeMerGO.js +0 -804
  510. package/server/public/assets/index-CenuJ3Cw.css +0 -1
  511. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +0 -1
  512. package/server/rally-zhhtXuDP.js +0 -3
  513. package/server/record-CN0pj4_5.js +0 -3
  514. package/server/record-update-bLJxAXH4.js +0 -3
  515. package/server/resume-BFv1PGpA.js +0 -3
  516. package/server/review-status-btEYlaxA.js +0 -3
  517. package/server/review-status-kZj_KyCk.js +0 -1470
  518. package/server/settings-66A6uvIA.js +0 -2
  519. package/server/spawn-planning-session-qUC2VWu3.js +0 -2
  520. package/server/specs-C8Wsn2XO.js +0 -3
  521. package/server/src-DtcUOZCq.js +0 -4826
  522. package/server/supervisor-FTJAIsAK.js +0 -2
  523. package/server/token-util-DuPuNriz.js +0 -3
  524. package/server/tracker-utils-B4ylXZQK.js +0 -3
  525. package/server/uat-train-B05BWkp-.js +0 -2
  526. package/server/uat-train-DDSrSoV1.js +0 -2152
  527. package/server/workflows-BQu4RFQ-.js +0 -2
  528. package/server/workspace-manager-CWT55qeI.js +0 -3
@@ -1,6 +1,6 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { r as init_esm_shims, t as __dirname } from "./esm-shims-OSHAYaS1.js";
3
- import { n as require_dist$1, r as require_src$14, t as require_dist$2 } from "./dist-Cb_0uvpS.js";
2
+ import { r as init_esm_shims, t as __dirname } from "./esm-shims-BeObUkaw.js";
3
+ import { n as require_dist$1, r as require_src$14, t as require_dist$2 } from "./dist-C3A8B8wM.js";
4
4
  //#region ../../../node_modules/.bun/@google-cloud+promisify@4.1.0/node_modules/@google-cloud/promisify/build/src/index.js
5
5
  var require_src$13 = /* @__PURE__ */ __commonJSMin(((exports) => {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1198,12 +1198,12 @@ var require_gaxios = /* @__PURE__ */ __commonJSMin(((exports) => {
1198
1198
  * @returns A proxy agent
1199
1199
  */
1200
1200
  static async #getProxyAgent() {
1201
- this.#proxyAgent ||= (await import("./dist-Bzy0y69j.js").then((m) => /* @__PURE__ */ __toESM(m.default))).HttpsProxyAgent;
1201
+ this.#proxyAgent ||= (await import("./dist-B3YPQa5A.js").then((m) => /* @__PURE__ */ __toESM(m.default))).HttpsProxyAgent;
1202
1202
  return this.#proxyAgent;
1203
1203
  }
1204
1204
  static async #getFetch() {
1205
1205
  const hasWindow = typeof window !== "undefined" && !!window;
1206
- this.#fetch ||= hasWindow ? window.fetch : (await import("./src-CdmnTM2m.js")).default;
1206
+ this.#fetch ||= hasWindow ? window.fetch : (await import("./src-vHy2-oCv.js")).default;
1207
1207
  return this.#fetch;
1208
1208
  }
1209
1209
  /**
@@ -10601,7 +10601,7 @@ var require_src$7 = /* @__PURE__ */ __commonJSMin(((exports) => {
10601
10601
  const TeenyStatistics_1 = require_TeenyStatistics();
10602
10602
  const crypto_1 = __require("crypto");
10603
10603
  const streamEvents = require_stream_events();
10604
- const fetch = (...args) => import("./src-CdmnTM2m.js").then(({ default: fetch }) => fetch(...args));
10604
+ const fetch = (...args) => import("./src-vHy2-oCv.js").then(({ default: fetch }) => fetch(...args));
10605
10605
  var RequestError = class extends Error {
10606
10606
  code;
10607
10607
  };
@@ -133656,4 +133656,4 @@ var require_src = /* @__PURE__ */ __commonJSMin(((exports) => {
133656
133656
  export default require_src();
133657
133657
  export {};
133658
133658
 
133659
- //# sourceMappingURL=src-CXmtj0im.js.map
133659
+ //# sourceMappingURL=src-rac0Mepv.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { i as init_esm_min, n as FormData, o as Blob, r as formDataToBlob, s as init_fetch_blob, t as init_from } from "./from-kNxT0bZC.js";
2
+ import { i as init_esm_min, n as FormData, o as Blob, r as formDataToBlob, s as init_fetch_blob, t as init_from } from "./from-B3tZbB55.js";
3
3
  import { deprecate, promisify, types } from "node:util";
4
4
  import { format } from "node:url";
5
5
  import http from "node:http";
@@ -209,7 +209,7 @@ var init_body = __esmMin((() => {
209
209
  for (const [name, value] of parameters) formData.append(name, value);
210
210
  return formData;
211
211
  }
212
- const { toFormData } = await import("./multipart-parser-duPAfSBw.js");
212
+ const { toFormData } = await import("./multipart-parser-R-oC8dQg.js");
213
213
  return toFormData(this.body, ct);
214
214
  }
215
215
  /**
@@ -1176,4 +1176,4 @@ __esmMin((() => {
1176
1176
  }))();
1177
1177
  export { fetch as default };
1178
1178
 
1179
- //# sourceMappingURL=src-CdmnTM2m.js.map
1179
+ //# sourceMappingURL=src-vHy2-oCv.js.map
@@ -1,3 +1,3 @@
1
- import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-DxSdG9cW.js";
1
+ import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-DqLTiEu4.js";
2
2
  init_stack_health();
3
3
  export { getWorkspaceStackHealth };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Tn as init_projects, Yn as init_issue_id, Zn as parseIssueIdSync, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
3
- import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
2
+ import { Gn as init_projects, ar as resolveProjectFromIssueSync, gr as init_issue_id, vr as parseIssueIdSync, zn as getProjectSync } from "./config-yaml-CxdwhAIA.js";
3
+ import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
4
4
  import { join } from "node:path";
5
5
  import { Duration, Effect, Schedule, Stream } from "effect";
6
6
  import { existsSync, readFileSync } from "node:fs";
@@ -288,8 +288,9 @@ function evaluateWorkspaceStackHealth(issueId, projectConfig, containers, option
288
288
  };
289
289
  const thresholdMs = options.stuckCreatedThresholdMs ?? 12e4;
290
290
  const stackContainers = containers.filter((container) => isStackContainer(container, issueId, options.composeProjectName));
291
+ const stackExpected = options.stackExpected !== false;
291
292
  const reasons = [];
292
- if (stackContainers.length === 0 && options.stackExpected !== false) reasons.push(`No Docker containers found for workspace stack ${normalizeIssue(issueId)}`);
293
+ if (stackContainers.length === 0 && stackExpected) reasons.push(`No Docker containers found for workspace stack ${normalizeIssue(issueId)}`);
293
294
  for (const container of stackContainers) {
294
295
  const exitCode = parseExitCode(container.status);
295
296
  if (isExited(container)) {
@@ -312,7 +313,8 @@ function evaluateWorkspaceStackHealth(issueId, projectConfig, containers, option
312
313
  return {
313
314
  healthy: reasons.length === 0,
314
315
  reasons,
315
- lastObserved
316
+ lastObserved,
317
+ stackExpected
316
318
  };
317
319
  }
318
320
  function recordWorkspaceStackHealthTransition(issueId, health) {
@@ -406,4 +408,4 @@ var init_stack_health = __esmMin((() => {
406
408
  //#endregion
407
409
  export { getWorkspaceStackHealth as a, recordWorkspaceStackHealthTransition as c, init_docker_stats as d, recordDockerContainerLifecycleSnapshot as f, evaluateWorkspaceStackHealth as i, tryComposeProjectNameForWorkspace as l, collectDockerContainerLifecycleSnapshot as n, hasIssueToken as o, composeProjectNameForWorkspace as r, init_stack_health as s, DEFAULT_STUCK_CREATED_THRESHOLD_MS as t, DockerStatsCollector as u };
408
410
 
409
- //# sourceMappingURL=stack-health-DxSdG9cW.js.map
411
+ //# sourceMappingURL=stack-health-DqLTiEu4.js.map
@@ -1,6 +1,7 @@
1
- import { Nt as readIssueRecordSync, Ot as init_record, Tn as init_projects, kn as listProjectsSync, wt as getIssueRecordPath } from "./config-yaml-DySPNmKN.js";
2
- import { a as isPidDead, i as init_fs_lock, n as updateIssueRecord, t as init_record_update } from "./record-update-dE1Aw83j.js";
3
- import { c as listAllAgentsSync, o as init_agents } from "./agents-EbI0zCJl.js";
1
+ import { At as getIssueRecordPath, Gn as init_projects, Pt as init_record, Yn as listProjectsSync, zt as readIssueRecordSync } from "./config-yaml-CxdwhAIA.js";
2
+ import { n as init_fs_lock, r as isPidDead } from "./fs-lock-Bre3sGoz.js";
3
+ import { i as updateIssueRecord, r as init_record_update } from "./record-update-DaOKS7Wb.js";
4
+ import { c as listAllAgentsSync, o as init_agents } from "./agents-J5mEnekq.js";
4
5
  import { dirname } from "node:path";
5
6
  import { hostname } from "node:os";
6
7
  import { readdirSync } from "node:fs";
@@ -66,4 +67,4 @@ async function patrolStaleTaskClaims() {
66
67
  //#endregion
67
68
  export { patrolStaleTaskClaims };
68
69
 
69
- //# sourceMappingURL=stale-task-claims-KJKxxiiQ.js.map
70
+ //# sourceMappingURL=stale-task-claims-Cab_Fo_Z.js.map
@@ -141,4 +141,4 @@ var init_staleness = __esmMin((() => {
141
141
  //#endregion
142
142
  export { init_staleness as i, _resetForTests as n, computeBuildStaleness as r, BUILD_INPUT_PATHS as t };
143
143
 
144
- //# sourceMappingURL=staleness-DPm7ClwA.js.map
144
+ //# sourceMappingURL=staleness-C-a5rBxF.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_staleness, n as _resetForTests, r as computeBuildStaleness, t as BUILD_INPUT_PATHS } from "./staleness-DPm7ClwA.js";
1
+ import { i as init_staleness, n as _resetForTests, r as computeBuildStaleness, t as BUILD_INPUT_PATHS } from "./staleness-C-a5rBxF.js";
2
2
  init_staleness();
3
3
  export { BUILD_INPUT_PATHS, _resetForTests, computeBuildStaleness };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as getOverdeckHome, Kt as STATE_BRANCH_PATHS, Ln as resolveInfraRepo, Tn as init_projects, Vr as init_paths, Yt as init_state_plane, an as init_project_key, on as projectKey } from "./config-yaml-DySPNmKN.js";
2
+ import { En as projectKey, Gn as init_projects, Tn as init_project_key, ci as getOverdeckHome, fn as STATE_BRANCH_PATHS, hn as init_state_plane, li as init_paths, rr as resolveInfraRepo } from "./config-yaml-CxdwhAIA.js";
3
3
  import { dirname, join } from "node:path";
4
4
  import { existsSync, readFileSync } from "node:fs";
5
5
  import { mkdir, rm } from "node:fs/promises";
@@ -273,4 +273,4 @@ var init_state_home = __esmMin((() => {
273
273
  //#endregion
274
274
  export { findRecreatedLegacyStatePaths as a, isStateMigrated as c, ensureStateWorktree as i, stateWorktreePath as l, STATE_BRANCH as n, init_state_home as o, clearStateMigrationCache as r, inspectStateMigration as s, MIGRATION_COMPLETE_MARKER as t };
275
275
 
276
- //# sourceMappingURL=state-home-Cn_Qu8IX.js.map
276
+ //# sourceMappingURL=state-home-722Dkx92.js.map
@@ -29,4 +29,4 @@ var init_state_mapping = __esmMin((() => {}));
29
29
  //#endregion
30
30
  export { mapGitHubStateToCanonical as n, init_state_mapping as t };
31
31
 
32
- //# sourceMappingURL=state-mapping-BL_-3Yt8.js.map
32
+ //# sourceMappingURL=state-mapping-CybR81Uf.js.map
@@ -1,6 +1,6 @@
1
- import { $t as acquireStateMigrationLock, Ht as flushAutoCommits, Kt as STATE_BRANCH_PATHS, Ln as resolveInfraRepo, Tn as init_projects, Ut as init_auto_commit, Yt as init_state_plane, en as init_state_migration_lock, yn as getProjectSync } from "./config-yaml-DySPNmKN.js";
2
- import { o as init_lifecycle } from "./lifecycle-yPd___5E.js";
3
- import { l as stateWorktreePath, n as STATE_BRANCH, o as init_state_home, r as clearStateMigrationCache, t as MIGRATION_COMPLETE_MARKER } from "./state-home-Cn_Qu8IX.js";
1
+ import { Gn as init_projects, bn as init_state_migration_lock, cn as flushAutoCommits, fn as STATE_BRANCH_PATHS, hn as init_state_plane, ln as init_auto_commit, rr as resolveInfraRepo, yn as acquireStateMigrationLock, zn as getProjectSync } from "./config-yaml-CxdwhAIA.js";
2
+ import { o as init_lifecycle } from "./lifecycle-B4Xdb4cY.js";
3
+ import { l as stateWorktreePath, n as STATE_BRANCH, o as init_state_home, r as clearStateMigrationCache, t as MIGRATION_COMPLETE_MARKER } from "./state-home-722Dkx92.js";
4
4
  import { dirname, join } from "node:path";
5
5
  import { Effect } from "effect";
6
6
  import { tmpdir } from "node:os";
@@ -484,4 +484,4 @@ async function migrateProjectState(projectKey, options = {}, projectOverride) {
484
484
  //#endregion
485
485
  export { migrateProjectState };
486
486
 
487
- //# sourceMappingURL=state-migrate-BGg2ZaOt.js.map
487
+ //# sourceMappingURL=state-migrate-2u8wIpoL.js.map
@@ -1,20 +1,20 @@
1
- import { Br as getOverdeckHome, Jn as extractPrefixSync, Nr as encodeClaudeProjectDir, Tn as init_projects, Ur as packageRoot, Vr as init_paths, Yn as init_issue_id, dr as TmuxError, ir as FsError, mr as init_errors, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
2
- import { O as killSessionSync, U as sessionExistsSync, a as capturePaneSync, i as capturePane, j as listPaneValuesSync, u as detectTerminalApiErrorSync, w as init_tmux, z as sendKeys } from "./tmux-R7N7y-Mh.js";
3
- import { r as CLAUDE_CODE_BEHAVIOR, s as getRuntimeBehavior } from "./src-DtcUOZCq.js";
4
- import { c as getReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
5
- import { Ar as saveAgentRuntimeState, Dr as getAgentRuntimeState, G as resumeAgent, Gn as getAgentDir, Lt as BRIDGE_TOKEN_HEADER, Or as getAgentRuntimeStateSync, Rt as init_bridge_token, Sn as determineModel, X as messageAgent, Yn as getAgentStateSync, _n as materializeAcpContextFile, a as listRunningAgentsSync, b as init_agents, fn as init_pi_fifo, gn as init_context, it as init_activity, lr as saveAgentStateSync, lt as spawnAgent, n as init_queries, nt as getLatestSessionIdSync, ot as createOhmypiRuntimeSync, r as listAgentStates, rr as markAgentTroubled, st as init_ohmypi } from "./queries-CjNIf-Ub.js";
6
- import { c as logDeaconEventSync, o as init_persistent_logger } from "./session-history-BT3IvqhC.js";
7
- import { t as init_behavior } from "./behavior-B3exJ42O.js";
8
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-G6latr8C.js";
9
- import { m as readWorkspacePlanSync, o as init_io } from "./io-C9kF1wtJ.js";
10
- import { n as init_launcher_generator } from "./launcher-generator-BBWG_SiS.js";
11
- import { _ as tmuxKillSession, g as tmuxCreateSession, h as init_tmux_cli, i as createCodexRuntimeSync, l as init_codex, v as tmuxSessionExists } from "./codex-BZXGhUVB.js";
12
- import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-DPUi-Pv8.js";
13
- import { f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, s as init_control_settings } from "./control-settings-BQp7_4uD.js";
14
- import { l as init_dag, o as getDispatchableItems } from "./dag-B1ucnjDU.js";
15
- import { a as loadCloisterConfigSync, r as init_config, t as DEFAULT_CLOISTER_CONFIG } from "./config-CKxYiCmX.js";
16
- import { a as init_jsonl_parser, i as getSessionFilesSync, r as getProjectDirsSync, s as parseClaudeSessionSync } from "./jsonl-parser-BXSlHwEh.js";
17
- import { t as recordRecoveryFailure } from "./recovery-trip-BvRWfUXM.js";
1
+ import { Fr as init_errors, Gn as init_projects, Mr as TmuxError, Tr as FsError, ar as resolveProjectFromIssueSync, ci as getOverdeckHome, di as packageRoot, gr as init_issue_id, hr as extractPrefixSync, li as init_paths, ti as encodeClaudeProjectDir } from "./config-yaml-CxdwhAIA.js";
2
+ import { O as killSessionSync, U as sessionExistsSync, a as capturePaneSync, i as capturePane, j as listPaneValuesSync, u as detectTerminalApiErrorSync, w as init_tmux, z as sendKeys } from "./tmux-CfDHob9M.js";
3
+ import { c as getRuntimeBehavior, i as CLAUDE_CODE_BEHAVIOR } from "./src-B948bGVR.js";
4
+ import { d as getReviewStatusSync, p as init_review_status } from "./review-status-CGvlA4o_.js";
5
+ import { r as logDeaconEventSync, t as init_persistent_logger } from "./persistent-logger-H_VjuOu7.js";
6
+ import { $n as getAgentDir, Br as saveAgentRuntimeState, Cn as materializeAcpContextFile, G as resumeAgent, Ht as BRIDGE_TOKEN_HEADER, Lr as getAgentRuntimeState, On as determineModel, Rr as getAgentRuntimeStateSync, Sn as init_context, Ut as init_bridge_token, X as messageAgent, _r as saveAgentStateSync, a as listRunningAgentsSync, at as init_activity, b as init_agents, ct as init_ohmypi, dr as markAgentTroubled, n as init_queries, r as listAgentStates, rr as getAgentStateSync, rt as getLatestSessionIdSync, st as createOhmypiRuntimeSync, ut as spawnAgent, vn as init_pi_fifo } from "./queries-C-MUZaIy.js";
7
+ import { t as init_behavior } from "./behavior-td6-xhQk.js";
8
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-BcPMElRB.js";
9
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-B00PBNku.js";
10
+ import { C as init_launcher_generator } from "./auto-spawn-consent-CQ9Bi9q6.js";
11
+ import { _ as tmuxKillSession, g as tmuxCreateSession, h as init_tmux_cli, i as createCodexRuntimeSync, l as init_codex, v as tmuxSessionExists } from "./codex-BzGDW_d3.js";
12
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BSpiXaLw.js";
13
+ import { c as init_control_settings, i as getFlywheelActiveRunId, p as isFlywheelGloballyPaused } from "./control-settings-CiqGxXnc.js";
14
+ import { l as init_dag, o as getDispatchableItems } from "./dag-BtkgLeqY.js";
15
+ import { a as loadCloisterConfigSync, r as init_config, t as DEFAULT_CLOISTER_CONFIG } from "./config-Bi3u1VK7.js";
16
+ import { a as init_jsonl_parser, i as getSessionFilesSync, r as getProjectDirsSync, s as parseClaudeSessionSync } from "./jsonl-parser-BDpnGFCl.js";
17
+ import { t as recordRecoveryFailure } from "./recovery-trip-DDH-02ng.js";
18
18
  import { join } from "node:path";
19
19
  import { Effect } from "effect";
20
20
  import { existsSync, mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "fs";
@@ -33,15 +33,14 @@ import { request } from "node:http";
33
33
  init_paths();
34
34
  init_issue_id();
35
35
  init_projects();
36
- init_behavior();
37
36
  init_persistent_logger();
37
+ init_behavior();
38
38
  init_review_status();
39
39
  init_io();
40
40
  init_tmux_cli();
41
41
  init_harness_binary();
42
42
  init_codex();
43
43
  init_launcher_generator();
44
- init_dag();
45
44
  init_bridge_token();
46
45
  init_ohmypi();
47
46
  init_activity();
@@ -54,6 +53,7 @@ const MAX_PROMPT_CHARS = 2e3;
54
53
  const PANE_DETECTION_CACHE_TTL_MS = 1e4;
55
54
  const MAX_PANE_DETECTION_CACHE_ENTRIES = 256;
56
55
  const MAX_CONCURRENT_PANE_DETECTIONS = 4;
56
+ const MAX_MENU_FOOTER_LINES = 4;
57
57
  const paneDetectionCache = /* @__PURE__ */ new Map();
58
58
  const paneDetectionInFlight = /* @__PURE__ */ new Map();
59
59
  const paneDetectionWaiters = [];
@@ -107,6 +107,32 @@ function isCurrentPromptIndex(lines, index, maxTrailingLines = 0) {
107
107
  if (index < 0) return false;
108
108
  return lines.length - index <= maxTrailingLines + 1;
109
109
  }
110
+ /**
111
+ * PAN-3068 — a harness footer hint line: key/action pairs separated by "·",
112
+ * e.g. "Esc to cancel · Tab to amend · ctrl+e to explain". Every segment must
113
+ * open with a key name, so real post-answer output ("● Bash(git status)") never
114
+ * qualifies.
115
+ */
116
+ function looksLikeHarnessFooterHint(line) {
117
+ const segments = line.split("·").map((segment) => segment.trim()).filter(Boolean);
118
+ if (segments.length === 0) return false;
119
+ return segments.every((segment) => /^(?:esc(?:ape)?|tab|enter|return|space|backspace|shift\+\S+|ctrl\+\S+|alt\+\S+|\?)\b/i.test(segment) || /^press\s+\S+/i.test(segment));
120
+ }
121
+ /**
122
+ * PAN-3068 — the permission menu is still on screen when nothing but harness
123
+ * footer chrome follows its final option. Claude Code renders "Esc to cancel ·
124
+ * Tab to amend · ctrl+e to explain" below "3. No", so the old rule (the option
125
+ * must be the literal last pane line) meant Claude permission prompts were
126
+ * *never* detected — agents froze on a permission gate while the dashboard
127
+ * reported them healthy and working. Real output below the menu means the
128
+ * prompt was answered and scrolled, so it still clears.
129
+ */
130
+ function isPermissionMenuStillOnScreen(lines, menuEndIndex) {
131
+ if (menuEndIndex < 0) return false;
132
+ const trailing = lines.slice(menuEndIndex + 1);
133
+ if (trailing.length > MAX_MENU_FOOTER_LINES) return false;
134
+ return trailing.every(looksLikeHarnessFooterHint);
135
+ }
110
136
  function findPermissionMenuEndIndex(lines, menuStartIndex) {
111
137
  if (menuStartIndex < 0) return -1;
112
138
  const end = Math.min(lines.length, menuStartIndex + 8);
@@ -166,7 +192,7 @@ function detectAwaitingInputFromPaneSync(pane, options = {}) {
166
192
  if (looksLikeClaudePermissionMenu(recentText) && looksLikePermissionText(recentText)) {
167
193
  const menuIndex = lastIndexMatching(lines, (line) => /❯?\s*1\.\s*Yes\b/i.test(line));
168
194
  const menuEndIndex = findPermissionMenuEndIndex(lines, menuIndex);
169
- if (isRecentPromptIndex(lines, menuIndex) && isCurrentPromptIndex(lines, menuEndIndex)) return {
195
+ if (isRecentPromptIndex(lines, menuIndex) && isPermissionMenuStillOnScreen(lines, menuEndIndex)) return {
170
196
  reason: "tool_permission",
171
197
  prompt: snippetAround(lines, menuIndex, 10, 3)
172
198
  };
@@ -311,6 +337,33 @@ const execAsync$2 = promisify$1(exec$1);
311
337
  function appendPaneDetectionKind(detection, kinds) {
312
338
  if (detection?.reason === "session_resume" && !kinds.includes("sessionResume")) kinds.push("sessionResume");
313
339
  if (detection?.reason === "rate_limit" && !kinds.includes("rateLimit")) kinds.push("rateLimit");
340
+ if (detection?.reason === "tool_permission" && !kinds.includes("permissionRequest")) kinds.push("permissionRequest");
341
+ }
342
+ /**
343
+ * PAN-3070 — the reasons that mean the agent is parked and cannot advance a
344
+ * single tool call until a human answers. An agent in this state must never be
345
+ * reported as `resolution: working` / `status: healthy`.
346
+ *
347
+ * `other` is deliberately excluded. PAN-1591 showed it is set by the generic
348
+ * pane/runtime/fallback detections that carry no answerable prompt — trusting it
349
+ * here would report agents as blocked while they are working normally.
350
+ */
351
+ const BLOCKING_AWAITING_INPUT_REASONS = new Set([
352
+ "tool_permission",
353
+ "user_question",
354
+ "disambiguation",
355
+ "confirmation",
356
+ "planning_done",
357
+ "session_resume",
358
+ "rate_limit"
359
+ ]);
360
+ /**
361
+ * PAN-3070 — the single predicate every "is this agent stuck?" surface consults.
362
+ * Takes the detection fields rather than a whole enrichment so the REST listing,
363
+ * the enrichment itself, and tests all judge from the same two values.
364
+ */
365
+ function isBlockedOnPendingInput(agent) {
366
+ return agent.hasPendingQuestion === true && BLOCKING_AWAITING_INPUT_REASONS.has(agent.pendingQuestionReason ?? "");
314
367
  }
315
368
  function isOwnActiveSpecialist(role) {
316
369
  return role === "review" || role === "test" || role === "ship";
@@ -659,7 +712,10 @@ async function computeAgentEnrichmentPromise(agentId, startedAt, hasActiveSpecia
659
712
  pendingInputKinds,
660
713
  pendingAskUserQuestion,
661
714
  pendingProposedPlan: shouldSuppressPendingInput ? void 0 : scan.pendingProposedPlan,
662
- resolution: runtimeState?.resolution || "working",
715
+ resolution: isBlockedOnPendingInput({
716
+ hasPendingQuestion,
717
+ pendingQuestionReason: detection?.reason
718
+ }) ? "needs_input" : runtimeState?.resolution || "working",
663
719
  resolutionCount: runtimeState?.resolutionCount || 0,
664
720
  jsonlScan: scan
665
721
  };
@@ -909,7 +965,8 @@ var ClaudeCodeRuntimeSync = class {
909
965
  spawnKey: `work:${config.agentId.replace(/^agent-/, "")}`
910
966
  }),
911
967
  role: "work",
912
- prompt: config.prompt
968
+ prompt: config.prompt,
969
+ startedBy: config.env?.["OVERDECK_AGENT_STARTED_BY"] ?? "runtime:claude-code"
913
970
  });
914
971
  const projectDir = this.getProjectDirForWorkspace(config.workspace);
915
972
  const sessionId = projectDir ? this.getActiveSessionId(projectDir) : void 0;
@@ -1459,6 +1516,7 @@ function clearStuckRemediationState(agentId) {
1459
1516
  //#region ../../lib/cloister/stuck-remediation.ts
1460
1517
  init_agents();
1461
1518
  init_tmux();
1519
+ init_dag();
1462
1520
  function issueIdForAgent(agent) {
1463
1521
  return agent.issueId || agent.id.replace(/^agent-/, "").toUpperCase();
1464
1522
  }
@@ -1698,7 +1756,7 @@ async function remediateFlywheelOrchestrator(agentId, now, actions, reason) {
1698
1756
  now
1699
1757
  });
1700
1758
  if (decision.kind === "noop") return;
1701
- const { resumeFlywheel, pauseFlywheel } = await import("./flywheel-SVF02Jpq.js");
1759
+ const { resumeFlywheel, pauseFlywheel } = await import("./flywheel-DZZdtiOL.js");
1702
1760
  const prev = readStuckRemediationState(agentId);
1703
1761
  const nowIso = new Date(now).toISOString();
1704
1762
  if (decision.kind === "escalate") {
@@ -1718,7 +1776,7 @@ async function remediateFlywheelOrchestrator(agentId, now, actions, reason) {
1718
1776
  killSessionSync(agentId);
1719
1777
  } catch {}
1720
1778
  try {
1721
- await resumeFlywheel();
1779
+ await resumeFlywheel({ resumeCause: "system" });
1722
1780
  writeStuckRemediationState(agentId, {
1723
1781
  lastStage: 0,
1724
1782
  lastStageAt: nowIso,
@@ -1802,6 +1860,6 @@ async function checkStuckAgentRemediation(opts = {}) {
1802
1860
  return actions;
1803
1861
  }
1804
1862
  //#endregion
1805
- export { parseCodexApprovalPrompt as _, isAgentIdleForNudge as a, countPendingAskUserQuestionsForAgent as c, getAgentPendingQuestions as d, getAgentWorkspace as f, normalizeAwaitingInputPrompt as g, detectAwaitingInputFromPaneSync as h, shouldSkipReviewStatus as i, getAgentJsonlMtime as l, detectAwaitingInputForAgent as m, decideFlywheelRemediation as n, getRuntimeForAgent as o, scanPendingInputsPromise as p, shouldSkipIdlePokeForAgent as r, computeAgentEnrichment as s, checkStuckAgentRemediation as t, getAgentJsonlPath as u };
1863
+ export { normalizeAwaitingInputPrompt as _, isAgentIdleForNudge as a, countPendingAskUserQuestionsForAgent as c, getAgentPendingQuestions as d, getAgentWorkspace as f, detectAwaitingInputFromPaneSync as g, detectAwaitingInputForAgent as h, shouldSkipReviewStatus as i, getAgentJsonlMtime as l, scanPendingInputsPromise as m, decideFlywheelRemediation as n, getRuntimeForAgent as o, isBlockedOnPendingInput as p, shouldSkipIdlePokeForAgent as r, computeAgentEnrichment as s, checkStuckAgentRemediation as t, getAgentJsonlPath as u, parseCodexApprovalPrompt as v };
1806
1864
 
1807
- //# sourceMappingURL=stuck-remediation-DYuPRYYw.js.map
1865
+ //# sourceMappingURL=stuck-remediation-CC6q3eqQ.js.map
@@ -1,2 +1,2 @@
1
- import { r as shouldSkipIdlePokeForAgent } from "./stuck-remediation-DYuPRYYw.js";
1
+ import { r as shouldSkipIdlePokeForAgent } from "./stuck-remediation-CC6q3eqQ.js";
2
2
  export { shouldSkipIdlePokeForAgent };
@@ -1,5 +1,5 @@
1
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BEqFxlJc.js";
2
- import { a as init_event_store, i as initEventStore, r as getSharedDb } from "./event-store-CQL6NeqB.js";
1
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BDQDRopn.js";
2
+ import { a as init_event_store, i as initEventStore, r as getSharedDb } from "./event-store-CrHcVC5_.js";
3
3
  //#region ../../lib/overdeck/flywheel-substrate-bugs.ts
4
4
  init_infra();
5
5
  function parseAffectedCriteriaColumn(value) {
@@ -871,4 +871,4 @@ async function listSubstrateBugWeights(window = "30d", deps = {}) {
871
871
  //#endregion
872
872
  export { getByIssueId as a, parseFlywheelStatsWindow as i, derivePipelineRunStatsInputs as n, markFixed as o, computeFlywheelStats as r, upsert as s, listSubstrateBugWeights as t };
873
873
 
874
- //# sourceMappingURL=substrate-bug-weights-service-B-FwCs5V.js.map
874
+ //# sourceMappingURL=substrate-bug-weights-service-CzIyyWFT.js.map
@@ -1,4 +1,4 @@
1
- import "./smart-compaction-KCYScAU1.js";
2
- import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-D1RAk9rJ.js";
1
+ import "./smart-compaction-ByhL9cRS.js";
2
+ import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-Df2WFijM.js";
3
3
  init_summary_fork();
4
4
  export { generateFallbackSummary };
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as getOverdeckHome, Gr as sessionFilePath, Rr as getHandoffsDir, Ur as packageRoot, Vr as init_paths, f as loadConfigSync, ir as FsError, mr as init_errors, t as init_config_yaml } from "./config-yaml-DySPNmKN.js";
3
- import { b as init_agents, kt as deliverAgentMessage } from "./queries-CjNIf-Ub.js";
4
- import { k as init_conversations } from "./conversations-6AfUfbwc.js";
5
- import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-DxSdG9cW.js";
6
- import { a as runModelSummary, i as parseEntries, o as serializeConversation, r as init_smart_compaction, s as summarizeSerializedText, t as generateSmartSummary } from "./smart-compaction-KCYScAU1.js";
2
+ import { Fr as init_errors, Tr as FsError, ci as getOverdeckHome, di as packageRoot, f as loadConfigSync, li as init_paths, oi as getHandoffsDir, pi as sessionFilePath, t as init_config_yaml } from "./config-yaml-CxdwhAIA.js";
3
+ import { Mt as deliverAgentMessage, b as init_agents } from "./queries-C-MUZaIy.js";
4
+ import { k as init_conversations } from "./conversations-D0UEdLtk.js";
5
+ import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-DqLTiEu4.js";
6
+ import { a as runModelSummary, i as parseEntries, o as serializeConversation, r as init_smart_compaction, s as summarizeSerializedText, t as generateSmartSummary } from "./smart-compaction-ByhL9cRS.js";
7
7
  import { join } from "node:path";
8
8
  import { Effect } from "effect";
9
9
  import { join as join$1 } from "path";
@@ -508,11 +508,11 @@ async function generateSummaryForFork(jsonlPath, summaryModel, includeThinkingIn
508
508
  }
509
509
  }
510
510
  async function reserveSummaryForkSessionPromise(cwd) {
511
- const { reserveForkSession } = await import("./session-fork-CHI1XvL9.js");
511
+ const { reserveForkSession } = await import("./session-fork-B6cQ5eya.js");
512
512
  return reserveForkSession(cwd);
513
513
  }
514
514
  async function copySessionFromCompactBoundaryPromise(sourcePath, destPath) {
515
- const { copySessionForFork } = await import("./session-fork-CHI1XvL9.js");
515
+ const { copySessionForFork } = await import("./session-fork-B6cQ5eya.js");
516
516
  return copySessionForFork(sourcePath, destPath, { fullHistory: false });
517
517
  }
518
518
  /** Effect variant of generateFallbackSummary. */
@@ -587,4 +587,4 @@ var init_summary_fork = __esmMin((() => {
587
587
  //#endregion
588
588
  export { init_transcript_adapter as _, generateFallbackSummary as a, handoffPreconditionFallbackReason as c, prependFallbackFocus as d, requestHandoffFromAgent as f, getTranscriptAdapter as g, validateHandoffDoc as h, copySessionFromCompactBoundary as i, init_summary_fork as l, sanitizeHandoffDoc as m, HandoffValidationError as n, generateSummaryForFork as o, reserveSummaryForkSession as p, authorHandoffExternal as r, handoffFailureReason as s, HandoffStallError as t, logHandoffFallback as u };
589
589
 
590
- //# sourceMappingURL=summary-fork-D1RAk9rJ.js.map
590
+ //# sourceMappingURL=summary-fork-Df2WFijM.js.map
@@ -26,4 +26,4 @@ var init_injection_budget = __esmMin((() => {
26
26
  //#endregion
27
27
  export { inputSettleMs as a, init_injection_budget as i, SUPERVISOR_CLIENT_MARGIN_MS as n, purgeSettleMs as o, echoConfirmTimeoutMs as r, supervisorInjectionBudgetMs as s, INPUT_PURGE_MAX_CHARS as t };
28
28
 
29
- //# sourceMappingURL=injection-budget-Csw5tqfJ.js.map
29
+ //# sourceMappingURL=injection-budget-Cg_KIb3o.js.map
@@ -124,6 +124,14 @@ function sessionFilePath(cwd, sessionId) {
124
124
  const encodedCwd = encodeClaudeProjectDir(cwd);
125
125
  return join(homedir(), ".claude", "projects", encodedCwd, `${sessionId}.jsonl`);
126
126
  }
127
+ /**
128
+ * Single existence check every Claude resume probe must use. Mirrors the
129
+ * JSONL resolver's `jsonl-missing` detection so stale session IDs are never
130
+ * treated as resumable (PAN-3194).
131
+ */
132
+ function claudeSessionTranscriptExists(cwd, sessionId) {
133
+ return existsSync(sessionFilePath(cwd, sessionId));
134
+ }
127
135
  /** Extract the session UUID from a full JSONL file path. */
128
136
  function sessionIdFromFile(sessionFile) {
129
137
  if (!sessionFile) return void 0;
@@ -221,6 +229,6 @@ var init_paths = __esmMin((() => {
221
229
  ];
222
230
  }));
223
231
  //#endregion
224
- export { getLegacyHome as $, PRD_PUBLISHED_DIR as A, SYNC_TARGET as B, HEARTBEATS_DIR as C, OVERDECK_HOME as D, LOGS_DIR as E, PROJECT_PRDS_SUBDIR as F, encodeClaudeProjectDir as G, TRAEFIK_CERTS_DIR as H, SETTINGS_FILE as I, getDocsDisableStatePath as J, getDocsBudgetStatePath as K, SKILLS_DIR as L, PROJECT_PRDS_ACTIVE_SUBDIR as M, PROJECT_PRDS_COMPLETED_SUBDIR as N, PRDS_DIR as O, PROJECT_PRDS_PLANNED_SUBDIR as P, getHandoffsDir as Q, SYNC_SOURCES as R, HANDOFFS_DIR as S, LEGACY_RUNTIME_DIRS as T, TRAEFIK_DIR as U, TEMPLATES_DIR as V, TRAEFIK_DYNAMIC_DIR as W, getDocsPaths as X, getDocsIndexPath as Y, getDocsTelemetryPath as Z, DOCS_BUDGET_STATE_FILE as _, BIN_DIR as a, piExtensionCandidates as at, DOCS_INDEX_FILE as b, CACHE_RULES_DIR as c, resolvePiExtensionPath as ct, CLAUDE_DIR as d, getOverdeckHome as et, CLAUDE_MD_TEMPLATES as f, COSTS_DIR as g, CONFIG_FILE as h, BACKUPS_DIR as i, packageRoot as it, PROJECT_DOCS_SUBDIR as j, PRD_DRAFTS_DIR as k, CACHE_SKILLS_DIR as l, sessionFilePath as lt, CONFIG_DIR as m, AGENT_SKILLS_DIR as n, isDevMode as nt, CACHE_AGENTS_DIR as o, resolveOhmypiExtensionPath as ot, COMMANDS_DIR as p, getDocsDir as q, ARCHIVES_DIR as r, ohmypiExtensionCandidates as rt, CACHE_MANIFEST as s, resolvePackageRootForDir as st, AGENTS_DIR as t, init_paths as tt, CERTS_DIR as u, sessionIdFromFile as ut, DOCS_DIR as v, INIT_DIRS as w, DOCS_TELEMETRY_FILE as x, DOCS_DISABLE_STATE_FILE as y, SYNC_SOURCES_ROOT as z };
232
+ export { getHandoffsDir as $, PRD_PUBLISHED_DIR as A, SYNC_TARGET as B, HEARTBEATS_DIR as C, OVERDECK_HOME as D, LOGS_DIR as E, PROJECT_PRDS_SUBDIR as F, claudeSessionTranscriptExists as G, TRAEFIK_CERTS_DIR as H, SETTINGS_FILE as I, getDocsDir as J, encodeClaudeProjectDir as K, SKILLS_DIR as L, PROJECT_PRDS_ACTIVE_SUBDIR as M, PROJECT_PRDS_COMPLETED_SUBDIR as N, PRDS_DIR as O, PROJECT_PRDS_PLANNED_SUBDIR as P, getDocsTelemetryPath as Q, SYNC_SOURCES as R, HANDOFFS_DIR as S, LEGACY_RUNTIME_DIRS as T, TRAEFIK_DIR as U, TEMPLATES_DIR as V, TRAEFIK_DYNAMIC_DIR as W, getDocsIndexPath as X, getDocsDisableStatePath as Y, getDocsPaths as Z, DOCS_BUDGET_STATE_FILE as _, BIN_DIR as a, packageRoot as at, DOCS_INDEX_FILE as b, CACHE_RULES_DIR as c, resolvePackageRootForDir as ct, CLAUDE_DIR as d, sessionIdFromFile as dt, getLegacyHome as et, CLAUDE_MD_TEMPLATES as f, COSTS_DIR as g, CONFIG_FILE as h, BACKUPS_DIR as i, ohmypiExtensionCandidates as it, PROJECT_DOCS_SUBDIR as j, PRD_DRAFTS_DIR as k, CACHE_SKILLS_DIR as l, resolvePiExtensionPath as lt, CONFIG_DIR as m, AGENT_SKILLS_DIR as n, init_paths as nt, CACHE_AGENTS_DIR as o, piExtensionCandidates as ot, COMMANDS_DIR as p, getDocsBudgetStatePath as q, ARCHIVES_DIR as r, isDevMode as rt, CACHE_MANIFEST as s, resolveOhmypiExtensionPath as st, AGENTS_DIR as t, getOverdeckHome as tt, CERTS_DIR as u, sessionFilePath as ut, DOCS_DIR as v, INIT_DIRS as w, DOCS_TELEMETRY_FILE as x, DOCS_DISABLE_STATE_FILE as y, SYNC_SOURCES_ROOT as z };
225
233
 
226
- //# sourceMappingURL=paths-DehGY2Fj.js.map
234
+ //# sourceMappingURL=paths-BBOnCYlO.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { et as getOverdeckHome, tt as init_paths } from "./paths-DehGY2Fj.js";
3
- import { n as init_pty_token, r as readPtyToken, t as PTY_TOKEN_HEADER } from "./pty-token-x-ea28Us.js";
4
- import { a as inputSettleMs, i as init_injection_budget, o as purgeSettleMs, r as echoConfirmTimeoutMs, t as INPUT_PURGE_MAX_CHARS } from "./injection-budget-Csw5tqfJ.js";
2
+ import { nt as init_paths, tt as getOverdeckHome } from "./paths-BBOnCYlO.js";
3
+ import { n as init_pty_token, r as readPtyToken, t as PTY_TOKEN_HEADER } from "./pty-token-BbjwEUUM.js";
4
+ import { a as inputSettleMs, i as init_injection_budget, o as purgeSettleMs, r as echoConfirmTimeoutMs, t as INPUT_PURGE_MAX_CHARS } from "./injection-budget-Cg_KIb3o.js";
5
5
  import { existsSync } from "node:fs";
6
- import { join } from "node:path";
7
6
  import { appendFile, chmod, mkdir, unlink } from "node:fs/promises";
7
+ import { join } from "node:path";
8
8
  import { timingSafeEqual } from "node:crypto";
9
9
  import { pathToFileURL } from "node:url";
10
10
  import { createServer } from "node:http";
@@ -37,6 +37,8 @@ const DEFAULT_COLS = 80;
37
37
  const DEFAULT_ROWS = 24;
38
38
  const SHUTDOWN_GRACE_MS = 2e3;
39
39
  const MAX_REQUEST_BYTES = 1024 * 1024;
40
+ /** Max accepted dedup key length; keys are free-form caller namespaces. */
41
+ const DEDUP_KEY_MAX_CHARS = 200;
40
42
  function getPtySupervisorSocketPath(agentId) {
41
43
  return join(getOverdeckHome(), "sockets", `pty-${agentId}.sock`);
42
44
  }
@@ -94,6 +96,7 @@ function parsePayload(value) {
94
96
  if (payload.content.length > 262144) return null;
95
97
  if (payload.echo !== void 0 && typeof payload.echo !== "boolean") return null;
96
98
  if (payload.caller !== void 0 && typeof payload.caller !== "string") return null;
99
+ if (payload.dedupKey !== void 0 && (typeof payload.dedupKey !== "string" || payload.dedupKey.length === 0 || payload.dedupKey.length > DEDUP_KEY_MAX_CHARS)) return null;
97
100
  if (payload.meta !== void 0) {
98
101
  if (payload.meta === null || typeof payload.meta !== "object" || Array.isArray(payload.meta)) return null;
99
102
  for (const [key, metaValue] of Object.entries(payload.meta)) if (typeof key !== "string" || typeof metaValue !== "string") return null;
@@ -269,6 +272,8 @@ async function injectPtyMessage(child, agentId, payload) {
269
272
  }
270
273
  }
271
274
  function createPtySupervisorServer(agentId, child) {
275
+ const deliveredDedupKeys = /* @__PURE__ */ new Set();
276
+ const inFlightDedupKeys = /* @__PURE__ */ new Map();
272
277
  return createServer(async (req, res) => {
273
278
  if (req.method !== "POST") {
274
279
  writeJson(res, 405, { error: "method not allowed" });
@@ -290,6 +295,47 @@ function createPtySupervisorServer(agentId, child) {
290
295
  writeJson(res, 400, { error: "content is required and must be a non-empty string" });
291
296
  return;
292
297
  }
298
+ if (payload.dedupKey !== void 0) {
299
+ const key = payload.dedupKey;
300
+ for (;;) {
301
+ if (deliveredDedupKeys.has(key)) {
302
+ writeJson(res, 200, {
303
+ ok: true,
304
+ deduplicated: true
305
+ });
306
+ return;
307
+ }
308
+ const inFlight = inFlightDedupKeys.get(key);
309
+ if (inFlight === void 0) break;
310
+ try {
311
+ await inFlight.promise;
312
+ } catch {}
313
+ }
314
+ let settle;
315
+ const promise = new Promise((resolve, reject) => {
316
+ settle = (error) => {
317
+ if (error === void 0) resolve();
318
+ else reject(error);
319
+ };
320
+ });
321
+ promise.catch(() => {});
322
+ inFlightDedupKeys.set(key, {
323
+ promise,
324
+ settle
325
+ });
326
+ try {
327
+ await injectPtyMessage(child, agentId, payload);
328
+ deliveredDedupKeys.add(key);
329
+ inFlightDedupKeys.delete(key);
330
+ settle();
331
+ writeJson(res, 200, "ok");
332
+ } catch (error) {
333
+ inFlightDedupKeys.delete(key);
334
+ settle(error);
335
+ writeJson(res, 502, { error: error instanceof Error ? error.message : String(error) });
336
+ }
337
+ return;
338
+ }
293
339
  try {
294
340
  await injectPtyMessage(child, agentId, payload);
295
341
  writeJson(res, 200, "ok");
@@ -1,8 +1,8 @@
1
1
  import { t as __esmMin } from "./chunk-ruWRV7i3.js";
2
- import { et as getOverdeckHome, tt as init_paths } from "./paths-DehGY2Fj.js";
2
+ import { nt as init_paths, tt as getOverdeckHome } from "./paths-BBOnCYlO.js";
3
3
  import "node:fs";
4
- import { join } from "node:path";
5
4
  import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
5
+ import { join } from "node:path";
6
6
  import { randomBytes } from "node:crypto";
7
7
  //#region src/lib/pty-token.ts
8
8
  function ptyTokenDir(agentId) {
@@ -40,4 +40,4 @@ var init_pty_token = __esmMin((() => {
40
40
  //#endregion
41
41
  export { writePtyToken as i, init_pty_token as n, readPtyToken as r, PTY_TOKEN_HEADER as t };
42
42
 
43
- //# sourceMappingURL=pty-token-x-ea28Us.js.map
43
+ //# sourceMappingURL=pty-token-BbjwEUUM.js.map
@@ -0,0 +1,2 @@
1
+ import { n as getSupervisorUrlSync } from "./supervisor-BxqSpjcN.js";
2
+ export { getSupervisorUrlSync };
@@ -1,6 +1,6 @@
1
- import { Cr as LOGS_DIR, Mr as TRAEFIK_DIR, Vr as init_paths, mr as init_errors, wr as OVERDECK_HOME, xr as CONFIG_FILE } from "./config-yaml-DySPNmKN.js";
1
+ import { $r as TRAEFIK_DIR, Fr as init_errors, Gr as OVERDECK_HOME, Hr as CONFIG_FILE, Wr as LOGS_DIR, li as init_paths } from "./config-yaml-CxdwhAIA.js";
2
2
  import { t as require_toml } from "./toml-CeLDATih.js";
3
- import { t as init_dev_supervisor } from "./dev-supervisor-bcOWqdQE.js";
3
+ import { t as init_dev_supervisor } from "./dev-supervisor-DiOBDM1c.js";
4
4
  import { join } from "node:path";
5
5
  import "effect";
6
6
  import { existsSync, readFileSync } from "fs";
@@ -72,4 +72,4 @@ function getSupervisorUrlSync() {
72
72
  //#endregion
73
73
  export { getSupervisorUrlSync as n, getSupervisorPortSync as t };
74
74
 
75
- //# sourceMappingURL=supervisor-wM4ooB5O.js.map
75
+ //# sourceMappingURL=supervisor-BxqSpjcN.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { C as init_specs } from "./io-C9kF1wtJ.js";
3
- import { c as hasFileOverlap, l as init_dag, o as getDispatchableItems, r as compileGlob, s as groupItemsByWave } from "./dag-B1ucnjDU.js";
2
+ import { S as init_specs } from "./io-B00PBNku.js";
3
+ import { c as hasFileOverlap, l as init_dag, o as getDispatchableItems, r as compileGlob, s as groupItemsByWave } from "./dag-BtkgLeqY.js";
4
4
  import "effect";
5
5
  //#region ../../lib/xbrief/swarm-readiness.ts
6
6
  function computeIssueFootprint(doc) {
@@ -112,4 +112,4 @@ var init_swarm_readiness = __esmMin((() => {
112
112
  //#endregion
113
113
  export { computeIssueFootprint as n, init_swarm_readiness as r, analyzeSwarmReadiness as t };
114
114
 
115
- //# sourceMappingURL=swarm-readiness-DlP_UjHq.js.map
115
+ //# sourceMappingURL=swarm-readiness-DfFxa9-n.js.map