@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,5 +1,7 @@
1
- import { l as isMergeTrainEnabled, o as init_merge_sync } from "./merge-sync-VPV28g0g.js";
1
+ import { Gn as init_projects, ar as resolveProjectFromIssueSync, zn as getProjectSync } from "./config-yaml-CxdwhAIA.js";
2
+ import { c as init_merge_sync, d as isMergeTrainEnabledForProject } from "./merge-sync-kr4vqyjM.js";
2
3
  //#region ../../lib/cloister/merge-train-reconciler.ts
4
+ init_projects();
3
5
  init_merge_sync();
4
6
  /**
5
7
  * Reconcile every ready sibling after `mergedIssueId` landed on main. Processes
@@ -46,11 +48,12 @@ async function reconcileStaleSiblings(mergedIssueId, deps) {
46
48
  //#endregion
47
49
  //#region ../../lib/cloister/merge-train.ts
48
50
  /**
49
- * Merge-train entry point (PAN-1691).
51
+ * Merge-train entry point (PAN-1691, PAN-1696).
50
52
  *
51
53
  * Called from the post-merge path after a feature lands on main. Gated by the
52
- * default-off `flywheel.merge_train_enabled` flag — when off this is a no-op, so
53
- * nothing git-mutating runs until an operator deliberately enables it.
54
+ * default-off `merge_train.enabled` flag (or per-project override in projects.yaml)
55
+ * — when off this is a no-op, so nothing git-mutating runs until an operator
56
+ * deliberately enables it.
54
57
  *
55
58
  * The real git/spawn deps are lazy-loaded only when the flag is on, so importing
56
59
  * this module (and unit-testing the gating) stays light and never pulls in the
@@ -58,13 +61,20 @@ async function reconcileStaleSiblings(mergedIssueId, deps) {
58
61
  */
59
62
  /**
60
63
  * Run the merge-train reconciler for the issue that just merged. No-op (returns
61
- * `[]`) when the merge-train flag is off — the safe default.
64
+ * `[]`) when the merge-train flag is off — the safe default. Respects per-project
65
+ * overrides in projects.yaml.
62
66
  */
63
67
  async function runMergeTrainReconcile(mergedIssueId, opts = {}) {
64
- if (!(opts.enabled ?? isMergeTrainEnabled)()) return [];
65
- return reconcileStaleSiblings(mergedIssueId, opts.deps ?? (await import("./merge-train-deps-D1cOZzy2.js")).buildRealReconcileDeps());
68
+ if (!(opts.enabled ?? (() => {
69
+ const resolved = resolveProjectFromIssueSync(mergedIssueId);
70
+ if (!resolved) return false;
71
+ const config = getProjectSync(resolved.projectKey);
72
+ if (!config) return false;
73
+ return isMergeTrainEnabledForProject(config);
74
+ }))()) return [];
75
+ return reconcileStaleSiblings(mergedIssueId, opts.deps ?? (await import("./merge-train-deps-D_uGX91G.js")).buildRealReconcileDeps());
66
76
  }
67
77
  //#endregion
68
78
  export { runMergeTrainReconcile };
69
79
 
70
- //# sourceMappingURL=merge-train-CHopycP0.js.map
80
+ //# sourceMappingURL=merge-train-Dmrcus12.js.map
@@ -1,6 +1,6 @@
1
- import { Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
2
- import { b as init_agents, ut as spawnRun } from "./queries-CjNIf-Ub.js";
3
- import { c as init_review_status_sync, r as getAllReviewStatusesFromDb } from "./review-status-sync-BTOpxtTC.js";
1
+ import { Gn as init_projects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
2
+ import { b as init_agents, dt as spawnRun } from "./queries-C-MUZaIy.js";
3
+ import { c as init_review_status_sync, r as getAllReviewStatusesFromDb } from "./review-status-sync-0GxOqeqF.js";
4
4
  import { join } from "path";
5
5
  import { exec } from "child_process";
6
6
  import { promisify } from "util";
@@ -47,23 +47,29 @@ function buildRealReconcileDeps() {
47
47
  }
48
48
  },
49
49
  reDispatchVerification: async (issueId) => {
50
- await spawnRun(issueId, "review", { prompt: "Your branch was automatically rebased onto the latest main after another feature merged. Re-review on the new HEAD and confirm the issue is still correct and ready to merge." });
50
+ await spawnRun(issueId, "review", {
51
+ prompt: "Your branch was automatically rebased onto the latest main after another feature merged. Re-review on the new HEAD and confirm the issue is still correct and ready to merge.",
52
+ startedBy: "merge-train:verification"
53
+ });
51
54
  },
52
55
  dispatchConflictResolver: async (issueId, mergedIssueId) => {
53
- await spawnRun(issueId, "work", { prompt: [
54
- `Your feature branch could not be cleanly rebased onto the latest main because ${mergedIssueId} just merged and conflicts with your changes.`,
55
- "",
56
- `Resolve the rebase conflict WITHOUT degrading either feature:`,
57
- `1. Read what ${mergedIssueId} changed (git log/diff on origin/main) AND what your issue (${issueId}) intended.`,
58
- `2. Rebase your branch onto origin/main and resolve each conflict so BOTH features' intent is preserved.`,
59
- `3. Build, run tests, commit, and push, then re-request review.`,
60
- "",
61
- `Do not blindly accept one side of a conflict — understand both changesets first.`
62
- ].join("\n") });
56
+ await spawnRun(issueId, "work", {
57
+ prompt: [
58
+ `Your feature branch could not be cleanly rebased onto the latest main because ${mergedIssueId} just merged and conflicts with your changes.`,
59
+ "",
60
+ `Resolve the rebase conflict WITHOUT degrading either feature:`,
61
+ `1. Read what ${mergedIssueId} changed (git log/diff on origin/main) AND what your issue (${issueId}) intended.`,
62
+ `2. Rebase your branch onto origin/main and resolve each conflict so BOTH features' intent is preserved.`,
63
+ `3. Build, run tests, commit, and push, then re-request review.`,
64
+ "",
65
+ `Do not blindly accept one side of a conflict — understand both changesets first.`
66
+ ].join("\n"),
67
+ startedBy: "merge-train:conflict-resolver"
68
+ });
63
69
  }
64
70
  };
65
71
  }
66
72
  //#endregion
67
73
  export { buildRealReconcileDeps };
68
74
 
69
- //# sourceMappingURL=merge-train-deps-D1cOZzy2.js.map
75
+ //# sourceMappingURL=merge-train-deps-D_uGX91G.js.map
@@ -0,0 +1,220 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { Gn as init_projects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
3
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
4
+ import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-CBgHfwM0.js";
5
+ import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CmNk0zLU.js";
6
+ import { i as init_merge_completeness, r as hasPositiveMergedEvidence, t as assessMergeCompleteness } from "./merge-completeness-B46KqhtY.js";
7
+ import { Effect } from "effect";
8
+ import { exec } from "node:child_process";
9
+ import { promisify } from "node:util";
10
+ //#region ../../lib/cloister/merge-verification.ts
11
+ function handlePostRebaseVerificationDeferral(issueId, outcome, _previous, deps) {
12
+ if (outcome.outcome !== "deferred") return null;
13
+ const message = `Post-rebase verification deferred: ${outcome.reason} — merge retries after the deploy.`;
14
+ deps.appendShipLog(issueId, message, "verifying");
15
+ deps.setReviewStatus(issueId, {
16
+ mergeStatus: "queued",
17
+ mergeStep: "queued",
18
+ mergeNotes: message
19
+ });
20
+ deps.completePendingOperation(issueId, message);
21
+ return {
22
+ success: false,
23
+ statusCode: 409,
24
+ error: message,
25
+ deferred: true,
26
+ mergeStatus: "queued"
27
+ };
28
+ }
29
+ function shellQuote(value) {
30
+ return `'${value.replace(/'/g, `'"'"'`)}'`;
31
+ }
32
+ async function mergeIsAncestorOfTarget(evidence) {
33
+ const key = `${evidence.repoPath}|${evidence.mergeSha}|${evidence.targetBranch}`;
34
+ if (provenAncestry.has(key)) return true;
35
+ const running = inFlightAncestry.get(key);
36
+ if (running) return running;
37
+ const check = (async () => {
38
+ try {
39
+ await execAsync(`git merge-base --is-ancestor ${shellQuote(evidence.mergeSha)} ${shellQuote(`origin/${evidence.targetBranch}`)}`, { cwd: evidence.repoPath });
40
+ } catch {
41
+ return false;
42
+ }
43
+ if (provenAncestry.size >= PROVEN_ANCESTRY_LIMIT) provenAncestry.clear();
44
+ provenAncestry.add(key);
45
+ return true;
46
+ })();
47
+ inFlightAncestry.set(key, check);
48
+ try {
49
+ return await check;
50
+ } finally {
51
+ inFlightAncestry.delete(key);
52
+ }
53
+ }
54
+ async function requireCompletePolyrepoMerge(issueId, mergedResult) {
55
+ try {
56
+ const mergeSet = getMergeSetSync(issueId);
57
+ if (!mergeSet || mergeSet.repos.length <= 1) return mergedResult;
58
+ const completeness = await assessMergeCompleteness(issueId);
59
+ if (!completeness.complete) return {
60
+ merged: false,
61
+ reason: `sibling repo(s) unmerged: ${completeness.summary}`
62
+ };
63
+ return mergedResult;
64
+ } catch (error) {
65
+ return {
66
+ merged: false,
67
+ reason: `sibling repo merge state is unverifiable: ${error instanceof Error ? error.message : String(error)}`
68
+ };
69
+ }
70
+ }
71
+ async function verifyMergedBeforeLifecycle(issueId, projectPath, sourceBranch, options) {
72
+ const branchName = sourceBranch?.trim() || `feature/${issueId.toLowerCase()}`;
73
+ const quotedBranch = shellQuote(branchName);
74
+ const verifiedRepos = options?.verifiedMergedRepos ?? [];
75
+ if (verifiedRepos.length > 0) {
76
+ const unproven = [];
77
+ for (const evidence of verifiedRepos) {
78
+ if (!/^[0-9a-f]{7,40}$/i.test(evidence.mergeSha)) {
79
+ unproven.push(`${evidence.repoKey} (no merge sha recorded)`);
80
+ continue;
81
+ }
82
+ if (!await mergeIsAncestorOfTarget(evidence)) unproven.push(`${evidence.repoKey}@${evidence.mergeSha.slice(0, 9)} not on origin/${evidence.targetBranch}`);
83
+ }
84
+ if (unproven.length === 0) return {
85
+ merged: true,
86
+ reason: `batch promotion verified in ${verifiedRepos.length} repo(s): ${verifiedRepos.map((r) => r.repoKey).join(", ")}`
87
+ };
88
+ return {
89
+ merged: false,
90
+ reason: `batch promotion unverified: ${unproven.join("; ")}`
91
+ };
92
+ }
93
+ const ghResolved = resolveGitHubIssueSync(issueId);
94
+ if (!ghResolved.isGitHub) try {
95
+ const completeness = await assessMergeCompleteness(issueId);
96
+ const mergedRepos = completeness.repos.filter((repo) => repo.state === "merged");
97
+ if (completeness.complete && hasPositiveMergedEvidence(completeness.repos)) return {
98
+ merged: true,
99
+ reason: `Forge confirms merge complete for ${mergedRepos.map((repo) => repo.repoKey).join(", ")}`
100
+ };
101
+ return {
102
+ merged: false,
103
+ reason: completeness.summary
104
+ };
105
+ } catch (error) {
106
+ return {
107
+ merged: false,
108
+ reason: `Non-GitHub merge state is unverifiable: ${error instanceof Error ? error.message : String(error)}`
109
+ };
110
+ }
111
+ const { owner, repo } = ghResolved;
112
+ try {
113
+ if (isGitHubAppConfigured()) {
114
+ const prs = await Effect.runPromise(listPullRequestsForHead(owner, repo, branchName, "all"));
115
+ const mergedPr = prs.find((pr) => pr.merged === true || pr.mergedAt != null);
116
+ if (mergedPr) return requireCompletePolyrepoMerge(issueId, {
117
+ merged: true,
118
+ reason: `GitHub PR #${mergedPr.number} is merged`
119
+ });
120
+ const verifiedMergedRef = options?.verifiedMergedRef?.trim();
121
+ if (verifiedMergedRef) try {
122
+ await execAsync(`git merge-base --is-ancestor ${shellQuote(verifiedMergedRef)} origin/main`, { cwd: projectPath });
123
+ return {
124
+ merged: true,
125
+ reason: `${verifiedMergedRef} is an ancestor of origin/main`
126
+ };
127
+ } catch {}
128
+ if (prs.length === 0) {
129
+ if (options?.allowVerifiedNoPrMerge) return {
130
+ merged: true,
131
+ reason: `No PR found for ${branchName}; accepting caller-verified non-PR merge`
132
+ };
133
+ return {
134
+ merged: false,
135
+ reason: `No PR found for ${branchName}; refusing to infer merge from branch state alone`
136
+ };
137
+ }
138
+ return {
139
+ merged: false,
140
+ reason: `GitHub PR for ${branchName} is open and not merged`
141
+ };
142
+ }
143
+ const { stdout } = await execAsync(`gh pr list --repo ${shellQuote(`${owner}/${repo}`)} --state all --head ${quotedBranch} --json number,state,mergedAt --limit 5`, { cwd: projectPath });
144
+ const prs = JSON.parse(stdout || "[]");
145
+ const mergedPr = prs.find((pr) => (pr.state === "closed" || pr.state === "MERGED") && pr.mergedAt != null);
146
+ if (mergedPr) return requireCompletePolyrepoMerge(issueId, {
147
+ merged: true,
148
+ reason: `GitHub PR #${mergedPr.number} is merged`
149
+ });
150
+ const verifiedMergedRef = options?.verifiedMergedRef?.trim();
151
+ if (verifiedMergedRef) try {
152
+ await execAsync(`git merge-base --is-ancestor ${shellQuote(verifiedMergedRef)} origin/main`, { cwd: projectPath });
153
+ return {
154
+ merged: true,
155
+ reason: `${verifiedMergedRef} is an ancestor of origin/main`
156
+ };
157
+ } catch {}
158
+ if (prs.length === 0) {
159
+ if (options?.allowVerifiedNoPrMerge) return {
160
+ merged: true,
161
+ reason: `No PR found for ${branchName}; accepting caller-verified non-PR merge`
162
+ };
163
+ return {
164
+ merged: false,
165
+ reason: `No PR found for ${branchName}; refusing to infer merge from branch state alone`
166
+ };
167
+ }
168
+ return {
169
+ merged: false,
170
+ reason: `GitHub PR for ${branchName} is open and not merged`
171
+ };
172
+ } catch (err) {
173
+ return {
174
+ merged: false,
175
+ reason: `Unable to verify merge state for ${branchName} via GitHub PR API: ${err instanceof Error ? err.message.slice(0, 200) : "unknown"}`
176
+ };
177
+ }
178
+ }
179
+ /**
180
+ * GitHub-authoritative pre-dispatch guard. Returns `skip: true` only when we can
181
+ * positively confirm the PR is already merged. Any failure to resolve the project
182
+ * or read PR state fails open (`skip: false`) so a transient GitHub hiccup never
183
+ * blocks a legitimate dispatch.
184
+ */
185
+ async function shouldSkipDispatchAsMerged(issueId, deps = {}) {
186
+ try {
187
+ const project = (deps.resolveProject ?? resolveProjectFromIssueSync)(issueId);
188
+ if (!project) return {
189
+ skip: false,
190
+ reason: `Project unresolved for ${issueId}`
191
+ };
192
+ const branch = `feature/${issueId.toLowerCase()}`;
193
+ const result = await (deps.verifyMerged ?? verifyMergedBeforeLifecycle)(issueId, project.projectPath, branch);
194
+ return {
195
+ skip: result.merged,
196
+ reason: result.reason
197
+ };
198
+ } catch (err) {
199
+ return {
200
+ skip: false,
201
+ reason: `Merged-PR guard error: ${err instanceof Error ? err.message : String(err)}`
202
+ };
203
+ }
204
+ }
205
+ var execAsync, provenAncestry, PROVEN_ANCESTRY_LIMIT, inFlightAncestry;
206
+ var init_merge_verification = __esmMin((() => {
207
+ init_projects();
208
+ init_github_app();
209
+ init_merge_set();
210
+ init_tracker_utils();
211
+ init_merge_completeness();
212
+ execAsync = promisify(exec);
213
+ provenAncestry = /* @__PURE__ */ new Set();
214
+ PROVEN_ANCESTRY_LIMIT = 512;
215
+ inFlightAncestry = /* @__PURE__ */ new Map();
216
+ }));
217
+ //#endregion
218
+ export { verifyMergedBeforeLifecycle as i, init_merge_verification as n, shouldSkipDispatchAsMerged as r, handlePostRebaseVerificationDeferral as t };
219
+
220
+ //# sourceMappingURL=merge-verification-NvaAd8CZ.js.map
@@ -0,0 +1,3 @@
1
+ import { n as init_merged_docker_cleanup_worker, r as reconcileMergedDockerCleanupQueue } from "./merged-docker-cleanup-worker-Y1R06TEl.js";
2
+ init_merged_docker_cleanup_worker();
3
+ export { reconcileMergedDockerCleanupQueue };
@@ -0,0 +1,107 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
3
+ import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-DIk1JSow.js";
4
+ //#region ../../lib/cloister/merged-docker-cleanup-worker.ts
5
+ function retryDelayMs(attempts) {
6
+ return Math.min(RETRY_BASE_MS * 2 ** Math.max(0, attempts - 1), RETRY_MAX_MS);
7
+ }
8
+ function nextEligibleEntry() {
9
+ const now = Date.now();
10
+ return [...queue.values()].find((entry) => !entry.running && entry.nextAttemptAt <= now) ?? null;
11
+ }
12
+ function recordSuccess(issueId, steps) {
13
+ const message = `Removed merged-issue Docker stack/network for ${issueId}: ${steps.join("; ")}`;
14
+ console.log(`[deacon] ${message}`);
15
+ try {
16
+ emitActivityEntrySync({
17
+ source: "cloister",
18
+ level: "info",
19
+ issueId,
20
+ message: `[deacon] ${message}`
21
+ });
22
+ } catch (error) {
23
+ console.warn(`[deacon] Could not record merged Docker cleanup activity for ${issueId}: ${error}`);
24
+ }
25
+ }
26
+ function recordFailure(entry, reason) {
27
+ entry.attempts += 1;
28
+ entry.nextAttemptAt = Date.now() + retryDelayMs(entry.attempts);
29
+ entry.running = false;
30
+ console.warn(`[deacon] Merged-issue Docker cleanup failed for ${entry.issueId}; retry ${entry.attempts} after ${new Date(entry.nextAttemptAt).toISOString()}: ${reason}`);
31
+ }
32
+ async function drainQueue() {
33
+ const { teardownWorkspaceDockerByNamePromise } = await import("./docker-Y3PElJb0.js");
34
+ for (let entry = nextEligibleEntry(); entry; entry = nextEligibleEntry()) {
35
+ entry.running = true;
36
+ const eligibility = resolveCanonicalReviewStatus(entry.issueId);
37
+ if (eligibility.status?.mergeStatus === "merged") entry.mergeVerified = false;
38
+ else if (entry.mergeVerified) entry.mergeVerified = false;
39
+ else if (!eligibility.available) {
40
+ recordFailure(entry, "canonical merge status unavailable");
41
+ continue;
42
+ } else {
43
+ queue.delete(entry.issueId);
44
+ console.log(`[deacon] Cancelled merged Docker cleanup for ${entry.issueId} — issue is no longer merged`);
45
+ continue;
46
+ }
47
+ try {
48
+ const result = await teardownWorkspaceDockerByNamePromise(entry.issueId.toLowerCase());
49
+ if (result.networkRemoved) {
50
+ queue.delete(entry.issueId);
51
+ recordSuccess(entry.issueId, result.steps);
52
+ } else recordFailure(entry, result.steps.join("; "));
53
+ } catch (error) {
54
+ recordFailure(entry, error instanceof Error ? error.message : String(error));
55
+ }
56
+ }
57
+ }
58
+ function startWorker() {
59
+ if (workerPromise || !nextEligibleEntry()) return;
60
+ workerPromise = drainQueue().catch((error) => {
61
+ const reason = error instanceof Error ? error.message : String(error);
62
+ for (const entry of queue.values()) if (!entry.running && entry.nextAttemptAt <= Date.now()) recordFailure(entry, reason);
63
+ }).finally(() => {
64
+ workerPromise = null;
65
+ if (nextEligibleEntry()) startWorker();
66
+ });
67
+ }
68
+ function reconcileMergedDockerCleanupQueue(eligibleIssueIds) {
69
+ const eligible = new Set(eligibleIssueIds.map((issueId) => issueId.trim().toUpperCase()).filter(Boolean));
70
+ for (const [issueId, entry] of queue) if (!entry.running && !eligible.has(issueId)) queue.delete(issueId);
71
+ return [...eligible].flatMap((issueId) => {
72
+ const action = enqueueMergedDockerCleanup(issueId);
73
+ return action ? [action] : [];
74
+ });
75
+ }
76
+ function enqueueMergedDockerCleanup(issueId, options) {
77
+ const normalizedIssueId = issueId.trim().toUpperCase();
78
+ if (!normalizedIssueId) return null;
79
+ const existing = queue.get(normalizedIssueId);
80
+ if (!existing) {
81
+ queue.set(normalizedIssueId, {
82
+ issueId: normalizedIssueId,
83
+ attempts: 0,
84
+ nextAttemptAt: 0,
85
+ running: false,
86
+ mergeVerified: options?.mergeVerified === true
87
+ });
88
+ startWorker();
89
+ return `Queued merged-issue Docker cleanup for ${normalizedIssueId}`;
90
+ }
91
+ if (options?.mergeVerified) existing.mergeVerified = true;
92
+ startWorker();
93
+ return null;
94
+ }
95
+ var RETRY_BASE_MS, RETRY_MAX_MS, queue, workerPromise;
96
+ var init_merged_docker_cleanup_worker = __esmMin((() => {
97
+ init_activity_logger();
98
+ init_review_status_source();
99
+ RETRY_BASE_MS = 6e4;
100
+ RETRY_MAX_MS = 15 * 6e4;
101
+ queue = /* @__PURE__ */ new Map();
102
+ workerPromise = null;
103
+ }));
104
+ //#endregion
105
+ export { init_merged_docker_cleanup_worker as n, reconcileMergedDockerCleanupQueue as r, enqueueMergedDockerCleanup as t };
106
+
107
+ //# sourceMappingURL=merged-docker-cleanup-worker-Y1R06TEl.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as File, i as init_esm_min, n as FormData, t as init_from } from "./from-kNxT0bZC.js";
2
+ import { a as File, i as init_esm_min, n as FormData, t as init_from } from "./from-B3tZbB55.js";
3
3
  //#region ../../../node_modules/.bun/node-fetch@3.3.2/node_modules/node-fetch/src/utils/multipart-parser.js
4
4
  function _fileName(headerValue) {
5
5
  const m = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
@@ -293,4 +293,4 @@ __esmMin((() => {
293
293
  }))();
294
294
  export { toFormData };
295
295
 
296
- //# sourceMappingURL=multipart-parser-duPAfSBw.js.map
296
+ //# sourceMappingURL=multipart-parser-R-oC8dQg.js.map
@@ -89,4 +89,4 @@ var init_no_resume_mode = __esmMin((() => {
89
89
  //#endregion
90
90
  export { init_boot_gates as a, formatBootGateState as i, isExplicitNoResumeRequest as n, resolveBootGates as o, isNoResumeValueEnabled as r, init_no_resume_mode as t };
91
91
 
92
- //# sourceMappingURL=no-resume-mode-Nw29vaFb.js.map
92
+ //# sourceMappingURL=no-resume-mode-BgD0JUmM.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overdeck/desktop-server",
3
- "version": "0.45.24",
3
+ "version": "0.47.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
@@ -23,9 +23,9 @@
23
23
  }
24
24
  },
25
25
  "node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared": {
26
- "version": "4.0.0-beta.101",
27
- "resolved": "https://registry.npmjs.org/@effect/platform-node-shared/-/platform-node-shared-4.0.0-beta.101.tgz",
28
- "integrity": "sha512-g4L7XiyJSNJLJVhlslyg2zBCQsoKQf1y1gd+Yfd+3wD9ymC+m7ymbd/5FGqnT1aXV6E2AwRr4D/R1eyRUikvWQ==",
26
+ "version": "4.0.0-beta.102",
27
+ "resolved": "https://registry.npmjs.org/@effect/platform-node-shared/-/platform-node-shared-4.0.0-beta.102.tgz",
28
+ "integrity": "sha512-gVd793I72MrkX4dXo7eYtRKfNj0RW4eMRfVEKEJI16h2+mBDCzQ+gqMrog2hSTHQnaIbvbYShNQ4TVGuRCYZeQ==",
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
31
  "@types/ws": "^8.18.1",
@@ -35,13 +35,13 @@
35
35
  "node": ">=18.0.0"
36
36
  },
37
37
  "peerDependencies": {
38
- "effect": "^4.0.0-beta.101"
38
+ "effect": "^4.0.0-beta.102"
39
39
  }
40
40
  },
41
41
  "node_modules/@google-cloud/common": {
42
- "version": "6.0.1",
43
- "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.0.1.tgz",
44
- "integrity": "sha512-1uvKzbmAWUdchIYRsg0f4rUmezOamWuVBSWAPAhnYoUE5OiPEx6v6JOxFIdr3MsrqV+6fyLV3EI1vMPlHoeRvw==",
42
+ "version": "6.1.0",
43
+ "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.1.0.tgz",
44
+ "integrity": "sha512-Ohjxjvusr65+SiEVBrilpyn1ir9CM8ZqWjcf7bA8ph1GCunxI6bbwtcl7iGl67A7Lr4Nz7WpNzITNETwggc7pw==",
45
45
  "license": "Apache-2.0",
46
46
  "dependencies": {
47
47
  "@google-cloud/projectify": "^4.0.0",
@@ -49,7 +49,7 @@
49
49
  "arrify": "^2.0.0",
50
50
  "duplexify": "^4.1.3",
51
51
  "extend": "^3.0.2",
52
- "google-auth-library": "^10.0.0-rc.1",
52
+ "google-auth-library": "^10.6.2",
53
53
  "html-entities": "^2.5.2",
54
54
  "retry-request": "^8.0.0",
55
55
  "teeny-request": "^10.0.0"
@@ -302,9 +302,9 @@
302
302
  }
303
303
  },
304
304
  "node_modules/@types/node": {
305
- "version": "26.1.1",
306
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz",
307
- "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==",
305
+ "version": "26.1.2",
306
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
307
+ "integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
308
308
  "license": "MIT",
309
309
  "dependencies": {
310
310
  "undici-types": "~8.3.0"
@@ -889,9 +889,9 @@
889
889
  }
890
890
  },
891
891
  "node_modules/gaxios": {
892
- "version": "7.2.0",
893
- "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.2.0.tgz",
894
- "integrity": "sha512-CUVb4wcYe+771XevyH6HtGmXFAGGKkIC3kswAP8Z1JCe0j80JMaTPZH930DWFrvo0atjh18Arc0pEyUCWa5bfg==",
892
+ "version": "7.3.0",
893
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.0.tgz",
894
+ "integrity": "sha512-RB5vLV+vvQeoFPCX4QMK6/hjVkbIamPp1QSUD0CiZcnj12qbpiL+pLbYtgD+oZkWl0tl9z+o2Utp+MpM3QRhBA==",
895
895
  "license": "Apache-2.0",
896
896
  "dependencies": {
897
897
  "extend": "^3.0.2",
@@ -947,9 +947,9 @@
947
947
  }
948
948
  },
949
949
  "node_modules/google-auth-library": {
950
- "version": "10.9.0",
951
- "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.0.tgz",
952
- "integrity": "sha512-xtvUqvINPhTaBm7nXqlYPcrMHJPm1lCNdSovxnKKhTm+4JsvQ+KGVYJViLoH9Yxu8w+T0Qv5HubzYT9BLrppJg==",
950
+ "version": "10.9.1",
951
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.1.tgz",
952
+ "integrity": "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==",
953
953
  "license": "Apache-2.0",
954
954
  "dependencies": {
955
955
  "base64-js": "^1.3.0",
@@ -964,9 +964,9 @@
964
964
  }
965
965
  },
966
966
  "node_modules/google-gax": {
967
- "version": "5.0.7",
968
- "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.7.tgz",
969
- "integrity": "sha512-EhiqaWWJ+9h7sCcKJTsoo6tMcjokVHhWsbSuWCnZJT4vIBP3y4mAoFLnt9SzgkVZeq24ZsFaArr06nnYYku2yA==",
967
+ "version": "5.0.8",
968
+ "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.8.tgz",
969
+ "integrity": "sha512-M4vpZcXQIC1gqIVGQ7eaU3jXQA6zecStyTXu514TYfThlgSurYJOxHZo9fzU6hAgwPWvuEynAVHWyaIk80VeEA==",
970
970
  "license": "Apache-2.0",
971
971
  "dependencies": {
972
972
  "@grpc/grpc-js": "^1.12.6",
@@ -1502,9 +1502,9 @@
1502
1502
  }
1503
1503
  },
1504
1504
  "node_modules/retry-request": {
1505
- "version": "8.0.3",
1506
- "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.3.tgz",
1507
- "integrity": "sha512-qqoc4kkGgP9cmQDWELlOpAmfgJOg0Yi7MT82ZjiPWu451ayju4itwomjM4/dBEliify8C1b3tSaeCOldugtwPQ==",
1505
+ "version": "8.0.4",
1506
+ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.4.tgz",
1507
+ "integrity": "sha512-pI6/7eabUYkZxamkOq0g0uMxKLLGnjzhefY+vL8bVXag5rto4OU2YBTPytWLuHH7aEKD6fn7kJycQfid0Mwnkw==",
1508
1508
  "license": "MIT",
1509
1509
  "dependencies": {
1510
1510
  "extend": "^3.0.2",
@@ -1742,9 +1742,9 @@
1742
1742
  "license": "MIT"
1743
1743
  },
1744
1744
  "node_modules/teeny-request": {
1745
- "version": "10.1.3",
1746
- "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.3.tgz",
1747
- "integrity": "sha512-5yDliI1uWkYPo7W+Zvrxg6YmoWuj5iC5EydewqrRTvc68nyMTZhlPPlLg6cptUGfbQAb+N9XDPDPzF6N081lug==",
1745
+ "version": "10.1.4",
1746
+ "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.4.tgz",
1747
+ "integrity": "sha512-R1Cg4Vu0UULeDfHL/kjABLaTW++9yD/B6n2g48y5dJ04hsEaxcfmAqbNDzNsbqAYJyIpZafjklLG9YxRu9uzOg==",
1748
1748
  "license": "Apache-2.0",
1749
1749
  "dependencies": {
1750
1750
  "http-proxy-agent": "^7.0.0",
@@ -1766,9 +1766,9 @@
1766
1766
  }
1767
1767
  },
1768
1768
  "node_modules/undici": {
1769
- "version": "8.8.0",
1770
- "resolved": "https://registry.npmjs.org/undici/-/undici-8.8.0.tgz",
1771
- "integrity": "sha512-ubshXMXwF3MQIMF1y/WxZdNBnjEKeSg2wF5mcGUtU55YTw34tnVVpKRlLf7ruDXZ5344KokPVX4RBx1wJm64Bw==",
1769
+ "version": "8.9.0",
1770
+ "resolved": "https://registry.npmjs.org/undici/-/undici-8.9.0.tgz",
1771
+ "integrity": "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==",
1772
1772
  "license": "MIT",
1773
1773
  "engines": {
1774
1774
  "node": ">=22.19.0"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effect/platform-node-shared",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.101",
4
+ "version": "4.0.0-beta.102",
5
5
  "license": "MIT",
6
6
  "description": "Unified interfaces for common platform-specific services",
7
7
  "homepage": "https://effect.website",
@@ -46,12 +46,12 @@
46
46
  "provenance": true
47
47
  },
48
48
  "peerDependencies": {
49
- "effect": "^4.0.0-beta.101"
49
+ "effect": "^4.0.0-beta.102"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "^26.1.1",
53
53
  "tar": "^7.5.19",
54
- "effect": "^4.0.0-beta.101"
54
+ "effect": "^4.0.0-beta.102"
55
55
  },
56
56
  "dependencies": {
57
57
  "@types/ws": "^8.18.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@google-cloud/common",
3
3
  "description": "Common components for Cloud APIs Node.js Client Libraries",
4
- "version": "6.0.1",
4
+ "version": "6.1.0",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Google Inc.",
7
7
  "engines": {
@@ -39,7 +39,7 @@
39
39
  "arrify": "^2.0.0",
40
40
  "duplexify": "^4.1.3",
41
41
  "extend": "^3.0.2",
42
- "google-auth-library": "^10.0.0-rc.1",
42
+ "google-auth-library": "^10.6.2",
43
43
  "html-entities": "^2.5.2",
44
44
  "retry-request": "^8.0.0",
45
45
  "teeny-request": "^10.0.0"
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Wed, 08 Jul 2026 06:47:45 GMT
11
+ * Last updated: Mon, 27 Jul 2026 17:32:10 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
@@ -1185,7 +1185,7 @@ declare module "node:crypto" {
1185
1185
  * and it will be impossible to extract the private key from the returned object.
1186
1186
  * @since v11.6.0
1187
1187
  */
1188
- function createPublicKey(key: PublicKeyInput | RawPublicKeyInput | JsonWebKeyInput | BinaryLike): KeyObject;
1188
+ function createPublicKey(key: PublicKeyInput | RawPublicKeyInput | JsonWebKeyInput | KeyLike): KeyObject;
1189
1189
  /**
1190
1190
  * Creates and returns a new key object containing a secret key for symmetric
1191
1191
  * encryption or `Hmac`.