@overdeck/desktop 0.45.23 → 0.46.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 (549) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +34 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DOA0KgXx.js → acceptance-criteria-CCwFGICj.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-BBu6DSNm.js → advancing-selfheal-De1L-Sb4.js} +6 -6
  7. package/server/{agent-gc-BV1q_2EV.js → agent-gc-CBULruzm.js} +5 -5
  8. package/server/agent-state-VQk8fY9F.js +3 -0
  9. package/server/{agent-state-service-HoK8U4jW.js → agent-state-service-BlnSkRFA.js} +5 -5
  10. package/server/{agent-state-service-CnzFKSAQ.js → agent-state-service-hZpxIw1E.js} +1 -1
  11. package/server/agents-BKKkxKgK.js +3 -0
  12. package/server/{agents-B4Bjbkfv.js → agents-C5rWYhb6.js} +4 -4
  13. package/server/archive-planning-0FJ6Xd3b.js +2 -0
  14. package/server/{archive-planning-DYrYojxl.js → archive-planning-C0lAbNB_.js} +16 -24
  15. package/server/{artifact-index-jobs-C-xy7Z5v.js → artifact-index-jobs-ug6ZxIP5.js} +2 -2
  16. package/server/assemble-DnffNpOo.js +339 -0
  17. package/server/{backlog-auto-trigger-GtG71X8H.js → backlog-auto-trigger-Dh-i9PQf.js} +3 -3
  18. package/server/{behavior-B_-4EKF3.js → behavior-CfIg6pKp.js} +2 -2
  19. package/server/bridge-pool-patrol-CUFmjVDN.js +136 -0
  20. package/server/{briefing-freshness-DWdW7vUm.js → briefing-freshness-DHmCSLar.js} +2 -2
  21. package/server/{build-info-DgTqZkL5.js → build-info-BP160gU7.js} +1 -1
  22. package/server/{build-info-BT096lEl.js → build-info-CuFfxZxp.js} +5 -3
  23. package/server/{checkpoint-manager-DDqcGyu8.js → checkpoint-manager-DEWD82qK.js} +2 -2
  24. package/server/{checkpoint-manager-B7Bt29J0.js → checkpoint-manager-Dxh0FYsv.js} +1 -1
  25. package/server/checkpoint-worker.js +1 -1
  26. package/server/{checkpoints-C-AXLfYT.js → checkpoints-CZvbtLnr.js} +2 -2
  27. package/server/{checkpoints-CpgCjAlN.js → checkpoints-DMTgXuLG.js} +1 -1
  28. package/server/{claude-hooks-provision-C8wdRnN1.js → claude-hooks-provision-CN-xo-do.js} +1 -1
  29. package/server/{claude-hooks-provision-but-_qGY.js → claude-hooks-provision-fvy4RD2b.js} +13 -2
  30. package/server/{claude-permissions-H_5wHQZQ.js → claude-permissions-CN0cSCPp.js} +2 -2
  31. package/server/{claude-settings-overlay-CbSz0Dvb.js → claude-settings-overlay-CJn35FHQ.js} +2 -2
  32. package/server/{claude-settings-overlay-BTENVmYf.js → claude-settings-overlay-Dabi9slj.js} +1 -1
  33. package/server/cli-DmXETsw-.js +3 -0
  34. package/server/{cli-vBeXbPrq.js → cli-oCWYA1pE.js} +9 -9
  35. package/server/{cliproxy-Bgb2XCqi.js → cliproxy-C8mB3KuB.js} +2 -2
  36. package/server/{cliproxy-DW0V86F8.js → cliproxy-PGwTX_o8.js} +1 -1
  37. package/server/{close-issue-Dn_4c4G8.js → close-issue-D5MF5GqF.js} +5 -5
  38. package/server/{closed-issue-reaper-CWpY2uBw.js → closed-issue-reaper-CJ24u0Zt.js} +1 -1
  39. package/server/{closed-issue-reaper-hANY_ehE.js → closed-issue-reaper-Cltx86x5.js} +37 -16
  40. package/server/{codex-Dg7Is5yb.js → codex-BdEsUFWh.js} +1 -1
  41. package/server/{codex-TmSi-yTv.js → codex-Drlf5Xhf.js} +37 -8
  42. package/server/{codex-parser-C4gSH-IR.js → codex-parser-DpB89Vqa.js} +2 -2
  43. package/server/compaction-continuation-K2AxQX4H.js +200 -0
  44. package/server/{config-DjLOdbgT.js → config-B2IMcBxx.js} +4 -3
  45. package/server/{config-DUIhMN_T.js → config-DV-grfQc.js} +1 -1
  46. package/server/{config-CCvjQf27.js → config-Dr3pW6w6.js} +2 -2
  47. package/server/{config-yaml-DvyMuOle.js → config-yaml-CmOPzmBb.js} +290 -22
  48. package/server/{conflict-gate-CmrYpa47.js → conflict-gate-B9cN3SBi.js} +4 -4
  49. package/server/{conflict-gate-BSJkNTdp.js → conflict-gate-Dh754uyA.js} +1 -1
  50. package/server/context-layers-D6LZo3l1.js +4 -0
  51. package/server/context-layers-dR5YxHYB.js +37 -0
  52. package/server/{control-settings-aP1ANIlI.js → control-settings-C7DUehE1.js} +49 -19
  53. package/server/{conversation-compaction-CNbTLB86.js → conversation-compaction-BoqdDXWF.js} +8 -8
  54. package/server/{conversation-compaction-DiG5zWQq.js → conversation-compaction-Dj4FAKoZ.js} +1 -1
  55. package/server/{conversation-service-Du-MTNpJ.js → conversation-service-5aCnq1zR.js} +331 -20
  56. package/server/conversation-service-BCxl4f8Z.js +3 -0
  57. package/server/{conversations-DbOs1e9Q.js → conversations-BUpYsOZg.js} +5 -5
  58. package/server/{conversations-6mPANqvL.js → conversations-C34dyIb9.js} +1 -1
  59. package/server/{cost-Ca0YTWDw.js → cost-Bgcub5kW.js} +12 -2
  60. package/server/{cost-CW4WSe72.js → cost-CvxRrucd.js} +3 -3
  61. package/server/{cost-sync-C0VdGme1.js → cost-sync-Dv3LUaNW.js} +3 -3
  62. package/server/{dag-CdOjJVDT.js → dag-ombYYt4s.js} +2 -2
  63. package/server/{dangerous-git-ops-CT-IypG3.js → dangerous-git-ops-BcJPC5Rr.js} +1 -1
  64. package/server/dashboard-db-worker.js +7 -7
  65. package/server/deacon-DrXqT9LQ.js +4 -0
  66. package/server/{deacon-pRnyD5w9.js → deacon-hi9KLPLT.js} +2998 -2659
  67. package/server/{deacon-nudge-log-Bjg8U4Y9.js → deacon-nudge-log-BNBebzeL.js} +3 -3
  68. package/server/deacon-pending-lifecycle-Cpk0k7Hi.js +33 -0
  69. package/server/{deacon-swarm-DftYRDo8.js → deacon-swarm-DBxUaO-A.js} +13 -13
  70. package/server/deacon-swarm-I2JfX5Tg.js +2 -0
  71. package/server/deacon.js +14 -19
  72. package/server/dead-end-trip-CQcP70ND.js +13 -0
  73. package/server/delivery-Da0zEMY4.js +3 -0
  74. package/server/{deploy-patrol-Bjsho_ha.js → deploy-patrol-Df-Tmaq0.js} +69 -18
  75. package/server/deploy-queue-9SrhZR63.js +3 -0
  76. package/server/deploy-queue-UjKGYsDe.js +169 -0
  77. package/server/deploy-window-jOiPRHL0.js +3 -0
  78. package/server/{deploy-window-DeP_OIRk.js → deploy-window-rpqpWqHA.js} +40 -16
  79. package/server/{dev-supervisor-BpMoHlkR.js → dev-supervisor-CC46Ig8q.js} +2 -2
  80. package/server/{devcontainer-renderer-CtUgrVKW.js → devcontainer-renderer-68CSCRnu.js} +3 -3
  81. package/server/{dist-DyRx4cI7.js → dist-CJy72uEg.js} +1 -1
  82. package/server/dist-DSlxIU1H.js +3 -0
  83. package/server/{dist-src-BSoS7mkd.js → dist-src-Bik83hFi.js} +1 -1
  84. package/server/docker-BMVTSFL5.js +3 -0
  85. package/server/{docker-BK7HIcBj.js → docker-Dam7mbIB.js} +2 -2
  86. package/server/{dod-BrSfUHm0.js → dod-Dar-yheg.js} +8 -4
  87. package/server/durable-review-pipeline-CGZ5QBxh.js +17 -0
  88. package/server/durable-review-pipeline-jpgCJZFp.js +3 -0
  89. package/server/{ensure-devcontainer-DseivYEy.js → ensure-devcontainer-B057YA81.js} +4 -4
  90. package/server/{ensure-devcontainer-DRqaAkBR.js → ensure-devcontainer-C98V8yW-.js} +1 -1
  91. package/server/{esm-shims-CbI3BVkl.js → esm-shims-Br9BPdkR.js} +1 -1
  92. package/server/{event-store-Cr5PQwFC.js → event-store-ELqkVOn0.js} +1 -1
  93. package/server/{event-store-tdiY5eDZ.js → event-store-zY5MJHgF.js} +23 -4
  94. package/server/{events-CvvGK6LT.js → events-D6pyqhzM.js} +1 -1
  95. package/server/{events-CC1dgUpx.js → events-D9PR1IC0.js} +3 -3
  96. package/server/{factory-CynerjXO.js → factory-CRoOpGsF.js} +5 -5
  97. package/server/{feature-registry-population-B0pmAz0a.js → feature-registry-population--YUXU999.js} +4 -4
  98. package/server/{feature-registry-storage-_wUBRD3J.js → feature-registry-storage-BORBTo0y.js} +2 -2
  99. package/server/{features-Dhxz-wLc.js → features--nFkJY8v.js} +2 -2
  100. package/server/{feedback-target-iygZwmMc.js → feedback-target-C0ZzyHvU.js} +1 -1
  101. package/server/{feedback-target-CPS15Vte.js → feedback-target-Dt9BsapX.js} +8 -8
  102. package/server/{feedback-writer-C9b6ccN1.js → feedback-writer-BG0RUZiu.js} +5 -5
  103. package/server/{feedback-writer-qmiMbqTZ.js → feedback-writer-D1fm-5Z8.js} +1 -1
  104. package/server/flywheel-BekukH4i.js +2 -0
  105. package/server/flywheel-BiT3odRb.js +1092 -0
  106. package/server/flywheel-CLVB55Be.js +478 -0
  107. package/server/flywheel-merge-order-BJv1DZz1.js +462 -0
  108. package/server/flywheel-merge-order-BKw9o6ku.js +2 -0
  109. package/server/forge-CZbSg6Ds.js +383 -0
  110. package/server/forge-DK3blQb_.js +3 -0
  111. package/server/{from-CJ_aH5jD.js → from-D_4_dk7i.js} +1 -1
  112. package/server/{fts-db-CKgg0VKg.js → fts-db-BeOomFa-.js} +2 -2
  113. package/server/{fts-operations-BrL_VTRr.js → fts-operations-BdewJ_g9.js} +2 -2
  114. package/server/git-utils-CI6cwyyC.js +3 -0
  115. package/server/{git-utils-BVa07a4a.js → git-utils-ameCgDdy.js} +93 -3
  116. package/server/{github-app-CMBdIFBQ.js → github-app-CQ1Lo6LA.js} +19 -8
  117. package/server/{github-app-CPfoFAdV.js → github-app-DtAsvwzK.js} +1 -1
  118. package/server/{github-client--XVlDpwM.js → github-client-BfyDxuRN.js} +2 -2
  119. package/server/{github-client-B4QsdE-X.js → github-client-Cj0yl_07.js} +1 -1
  120. package/server/github-pr-lookup-BDq6Wznz.js +58 -0
  121. package/server/{harness-binary-CVio2m-u.js → harness-binary-DqkftwTb.js} +32 -6
  122. package/server/{harness-resolve-qHJBhy3Z.js → harness-resolve-CqMqM1Mb.js} +18 -9
  123. package/server/{health-events-C9B8y1Hm.js → health-events-CazRxJUS.js} +2 -2
  124. package/server/{health-events-CpfvuVmm.js → health-events-_xfTaOUs.js} +1 -1
  125. package/server/{hooks-DUXw8A0-.js → hooks-BO3QT1sn.js} +2 -2
  126. package/server/{hooks-ltecuFqZ.js → hooks-BnJsxlSq.js} +1 -1
  127. package/server/{hume-BEq0bUDg.js → hume-CDYJxqx-.js} +2 -2
  128. package/server/hume-Dq--7rOQ.js +3 -0
  129. package/server/{idle-stack-reaper-D7w9t3fE.js → idle-stack-reaper-BYqERdkE.js} +1 -1
  130. package/server/{idle-stack-reaper-w1ISSlhs.js → idle-stack-reaper-CnGx_PO_.js} +99 -6
  131. package/server/in-flight-guard-Bq3epG58.js +45 -0
  132. package/server/{infra-CzaSOgul.js → infra-BjuxvjdS.js} +80 -5
  133. package/server/{injection-oNZeoDhL.js → injection-DZxlV2al.js} +1 -1
  134. package/server/{injection-DZ0PfYa4.js → injection-UCf8EsjX.js} +191 -183
  135. package/server/{inspect-agent-DJKLWcVT.js → inspect-agent-6kylZnrm.js} +139 -82
  136. package/server/inspect-agent-BVwDrVrz.js +2 -0
  137. package/server/{internal-token-Bb4XeV2x.js → internal-token-DvMTQSOS.js} +2 -2
  138. package/server/{internal-token-DXdfprGr.js → internal-token-M9omeXM1.js} +1 -1
  139. package/server/{io-B3_AHDfr.js → io-VHvc0Ssp.js} +43 -26
  140. package/server/{issue-closed-zhdvQicO.js → issue-closed-B6KJkmHZ.js} +7 -7
  141. package/server/{issue-lifecycle-Dy4vd0Oa.js → issue-lifecycle-9gk3fnXN.js} +1 -1
  142. package/server/{issue-lifecycle-CreaCkjW.js → issue-lifecycle-C4Zj0WmE.js} +34 -28
  143. package/server/{issue-service-singleton-B5ushCvE.js → issue-service-singleton-DmCh7EHj.js} +10 -10
  144. package/server/{issue-service-singleton-DabvBWUp.js → issue-service-singleton-PMx8F1jr.js} +1 -1
  145. package/server/{issues-B6ToV6x1.js → issues-CgnQ1OGQ.js} +2 -2
  146. package/server/{jsonl-parser-Dhflo1SH.js → jsonl-parser-DJOH_O-w.js} +5 -4
  147. package/server/{label-cleanup-BKPJm4Hv.js → label-cleanup-Dv7AV_R1.js} +3 -3
  148. package/server/{label-reconciler-DdWbHEBu.js → label-reconciler--F85rufp.js} +4 -4
  149. package/server/{lifecycle-DfeyBDwA.js → lifecycle-CTdOWYMi.js} +2 -2
  150. package/server/{lifecycle-sycO16hj.js → lifecycle-DDN8ApVY.js} +6 -7
  151. package/server/{lifecycle-io-D8iNBcux.js → lifecycle-io-D-lGdzK3.js} +5 -5
  152. package/server/{lifecycle-io-Bsnr2K4F.js → lifecycle-io-D_zTLvP1.js} +1 -1
  153. package/server/{linear-client-D4zqMnX7.js → linear-client-BQU36QqE.js} +2 -2
  154. package/server/{linear-client-DqhDQO9k.js → linear-client-CY4O_Tu3.js} +1 -1
  155. package/server/linear-mcp-auth-BnU4TYfY.js +280 -0
  156. package/server/linear-mcp-auth-NYBq_oHZ.js +2 -0
  157. package/server/memory-fts-worker.js +1 -1
  158. package/server/{merge-C_ZEhbqI.js → merge-Bpx4jjht.js} +13 -11
  159. package/server/{merge-agent-XrB80vfT.js → merge-agent-DdMVSV2Y.js} +233 -83
  160. package/server/{merge-agent-BQM3a8z5.js → merge-agent-DrXa1CpW.js} +1 -1
  161. package/server/{merge-batch-Bwoyr8Je.js → merge-batch-C5q1c1GX.js} +1 -1
  162. package/server/merge-completeness-BMm8tMyZ.js +277 -0
  163. package/server/merge-completeness-D0ljXbk3.js +3 -0
  164. package/server/{merge-DK23JEdS.js → merge-idOG--29.js} +1 -1
  165. package/server/merge-ops-DdpTiEMt.js +2 -0
  166. package/server/merge-rebase-DGQpYJU3.js +2 -0
  167. package/server/{merge-rebase-C1KIVr0s.js → merge-rebase-xLnMlw5h.js} +3 -3
  168. package/server/merge-set-DH7ot3yz.js +89 -0
  169. package/server/merge-set-DzsOTBg5.js +3 -0
  170. package/server/{merge-sync-DZ9dojJn.js → merge-sync-CQ-LgZ1_.js} +406 -153
  171. package/server/merge-sync-Ca7F5JnQ.js +3 -0
  172. package/server/{merge-train-DxDfBTjr.js → merge-train-DTEMyIu4.js} +18 -8
  173. package/server/{merge-train-deps-CyYQUksx.js → merge-train-deps-CNPJzepw.js} +4 -4
  174. package/server/merge-verification-x3JO8Dtz.js +220 -0
  175. package/server/merged-docker-cleanup-worker-CTpC27Bs.js +107 -0
  176. package/server/merged-docker-cleanup-worker-Cdi9apm-.js +3 -0
  177. package/server/{multipart-parser-Dt8YPN5S.js → multipart-parser-IMSBfePV.js} +2 -2
  178. package/server/{no-resume-mode-Cx3K0hHi.js → no-resume-mode-C5ULAXwO.js} +1 -1
  179. package/server/node_modules/.package-lock.json +27 -27
  180. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  181. package/server/node_modules/@google-cloud/common/package.json +2 -2
  182. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  183. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  184. package/server/node_modules/gaxios/package.json +1 -1
  185. package/server/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
  186. package/server/node_modules/google-auth-library/package.json +1 -1
  187. package/server/node_modules/google-gax/build/protos/google/api/auth.proto +2 -1
  188. package/server/node_modules/google-gax/build/protos/google/api/backend.proto +12 -1
  189. package/server/node_modules/google-gax/build/protos/google/api/billing.proto +1 -1
  190. package/server/node_modules/google-gax/build/protos/google/api/client.proto +165 -53
  191. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1/resources.proto +1 -1
  192. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/quota_adjuster_settings.proto +7 -3
  193. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/resources.proto +1 -1
  194. package/server/node_modules/google-gax/build/protos/google/api/config_change.proto +1 -1
  195. package/server/node_modules/google-gax/build/protos/google/api/context.proto +1 -1
  196. package/server/node_modules/google-gax/build/protos/google/api/control.proto +3 -3
  197. package/server/node_modules/google-gax/build/protos/google/api/distribution.proto +1 -1
  198. package/server/node_modules/google-gax/build/protos/google/api/documentation.proto +1 -1
  199. package/server/node_modules/google-gax/build/protos/google/api/endpoint.proto +1 -1
  200. package/server/node_modules/google-gax/build/protos/google/api/error_reason.proto +186 -1
  201. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/checked.proto +31 -3
  202. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/eval.proto +8 -9
  203. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/explain.proto +1 -2
  204. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/syntax.proto +20 -22
  205. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/value.proto +2 -3
  206. package/server/node_modules/google-gax/build/protos/google/api/field_behavior.proto +1 -1
  207. package/server/node_modules/google-gax/build/protos/google/api/field_info.proto +1 -1
  208. package/server/node_modules/google-gax/build/protos/google/api/http.proto +1 -1
  209. package/server/node_modules/google-gax/build/protos/google/api/httpbody.proto +1 -1
  210. package/server/node_modules/google-gax/build/protos/google/api/label.proto +1 -1
  211. package/server/node_modules/google-gax/build/protos/google/api/launch_stage.proto +1 -1
  212. package/server/node_modules/google-gax/build/protos/google/api/log.proto +1 -1
  213. package/server/node_modules/google-gax/build/protos/google/api/logging.proto +1 -1
  214. package/server/node_modules/google-gax/build/protos/google/api/metric.proto +1 -1
  215. package/server/node_modules/google-gax/build/protos/google/api/monitored_resource.proto +1 -1
  216. package/server/node_modules/google-gax/build/protos/google/api/monitoring.proto +1 -1
  217. package/server/node_modules/google-gax/build/protos/google/api/policy.proto +1 -1
  218. package/server/node_modules/google-gax/build/protos/google/api/quota.proto +1 -1
  219. package/server/node_modules/google-gax/build/protos/google/api/resource.proto +1 -1
  220. package/server/node_modules/google-gax/build/protos/google/api/routing.proto +8 -4
  221. package/server/node_modules/google-gax/build/protos/google/api/service.proto +2 -3
  222. package/server/node_modules/google-gax/build/protos/google/api/source_info.proto +1 -1
  223. package/server/node_modules/google-gax/build/protos/google/api/system_parameter.proto +1 -1
  224. package/server/node_modules/google-gax/build/protos/google/api/usage.proto +7 -27
  225. package/server/node_modules/google-gax/build/protos/google/api/visibility.proto +1 -1
  226. package/server/node_modules/google-gax/build/protos/google/longrunning/operations.proto +20 -1
  227. package/server/node_modules/google-gax/build/protos/google/protobuf/any.proto +52 -108
  228. package/server/node_modules/google-gax/build/protos/google/protobuf/compiler/ruby/ruby_generated_code.proto +2 -0
  229. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_features.proto +21 -1
  230. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_file_options.proto +24 -0
  231. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_options.proto +15 -0
  232. package/server/node_modules/google-gax/build/protos/google/protobuf/descriptor.proto +118 -30
  233. package/server/node_modules/google-gax/build/protos/google/protobuf/field_mask.proto +16 -18
  234. package/server/node_modules/google-gax/build/protos/google/protobuf/internal_options.proto +8 -1
  235. package/server/node_modules/google-gax/build/protos/google/protobuf/json/json_enumval_custom_string.proto +26 -0
  236. package/server/node_modules/google-gax/build/protos/google/protobuf/json_enumvalue_options.proto +29 -0
  237. package/server/node_modules/google-gax/build/protos/google/protobuf/json_options.proto +14 -0
  238. package/server/node_modules/google-gax/build/protos/google/protobuf/struct.proto +38 -22
  239. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/forced_micro_string.proto +3 -0
  240. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/repeated_field_proxy_import_message.proto +14 -0
  241. package/server/node_modules/google-gax/build/protos/google/protobuf/timestamp.proto +9 -8
  242. package/server/node_modules/google-gax/build/protos/google/protobuf/util/json_format_proto3.proto +18 -0
  243. package/server/node_modules/google-gax/build/protos/google/rpc/code.proto +1 -1
  244. package/server/node_modules/google-gax/build/protos/google/rpc/context/attribute_context.proto +7 -2
  245. package/server/node_modules/google-gax/build/protos/google/rpc/context/audit_context.proto +1 -1
  246. package/server/node_modules/google-gax/build/protos/google/rpc/error_details.proto +5 -5
  247. package/server/node_modules/google-gax/build/protos/google/rpc/http.proto +1 -1
  248. package/server/node_modules/google-gax/build/protos/google/rpc/status.proto +1 -2
  249. package/server/node_modules/google-gax/build/protos/google/type/calendar_period.proto +1 -1
  250. package/server/node_modules/google-gax/build/protos/google/type/color.proto +9 -10
  251. package/server/node_modules/google-gax/build/protos/google/type/date.proto +11 -9
  252. package/server/node_modules/google-gax/build/protos/google/type/datetime.proto +17 -17
  253. package/server/node_modules/google-gax/build/protos/google/type/dayofweek.proto +1 -1
  254. package/server/node_modules/google-gax/build/protos/google/type/decimal.proto +11 -13
  255. package/server/node_modules/google-gax/build/protos/google/type/expr.proto +1 -1
  256. package/server/node_modules/google-gax/build/protos/google/type/fraction.proto +1 -1
  257. package/server/node_modules/google-gax/build/protos/google/type/interval.proto +1 -2
  258. package/server/node_modules/google-gax/build/protos/google/type/latlng.proto +4 -5
  259. package/server/node_modules/google-gax/build/protos/google/type/localized_text.proto +3 -3
  260. package/server/node_modules/google-gax/build/protos/google/type/money.proto +1 -2
  261. package/server/node_modules/google-gax/build/protos/google/type/month.proto +1 -1
  262. package/server/node_modules/google-gax/build/protos/google/type/phone_number.proto +20 -15
  263. package/server/node_modules/google-gax/build/protos/google/type/postal_address.proto +39 -39
  264. package/server/node_modules/google-gax/build/protos/google/type/quaternion.proto +4 -4
  265. package/server/node_modules/google-gax/build/protos/google/type/timeofday.proto +11 -8
  266. package/server/node_modules/google-gax/package.json +5 -5
  267. package/server/node_modules/retry-request/package.json +4 -4
  268. package/server/node_modules/teeny-request/package.json +5 -5
  269. package/server/node_modules/undici/README.md +5 -0
  270. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  271. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  272. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  273. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  274. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  275. package/server/node_modules/undici/docs/docs/index.md +5 -0
  276. package/server/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  277. package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  278. package/server/node_modules/undici/lib/core/request.js +13 -2
  279. package/server/node_modules/undici/lib/core/util.js +6 -1
  280. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  281. package/server/node_modules/undici/lib/dispatcher/client-h1.js +42 -8
  282. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  283. package/server/node_modules/undici/lib/global.js +36 -16
  284. package/server/node_modules/undici/lib/handler/cache-handler.js +269 -61
  285. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +13 -3
  286. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  287. package/server/node_modules/undici/lib/handler/retry-handler.js +30 -4
  288. package/server/node_modules/undici/lib/interceptor/cache.js +159 -52
  289. package/server/node_modules/undici/lib/interceptor/decompress.js +9 -2
  290. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  291. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  292. package/server/node_modules/undici/lib/util/cache.js +372 -68
  293. package/server/node_modules/undici/lib/util/date.js +23 -6
  294. package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
  295. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  296. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  297. package/server/node_modules/undici/package.json +2 -2
  298. package/server/node_modules/undici/types/client.d.ts +2 -2
  299. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  300. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  301. package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CWmOdM9-.js} +1 -1
  302. package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-Dg6U4ADZ.js} +24 -15
  303. package/server/package-lock.json +28 -28
  304. package/server/package.json +1 -1
  305. package/server/{pan-dir-DeVUgwA7.js → pan-dir-ubraCiUg.js} +24 -10
  306. package/server/{paths-_zEts6wc.js → paths-cXmOwSbh.js} +2 -2
  307. package/server/pending-lifecycle-claim-DEteYdS9.js +110 -0
  308. package/server/{pickup-Dd0Znxxy.js → pickup-D8xtG1J2.js} +17 -16
  309. package/server/pipeline-membership-BGSvkT2M.js +3 -0
  310. package/server/pipeline-membership-CrAPLYtf.js +57 -0
  311. package/server/{pipeline-membership-0HaEGDlH.js → pipeline-membership-gather-CET40frr.js} +177 -109
  312. package/server/pipeline-membership-gather-DTfcgxLl.js +3 -0
  313. package/server/{pipeline-notifier-D0ykk59O.js → pipeline-notifier-BuQ0e4hF.js} +2 -2
  314. package/server/{pipeline-notifier-6iCJplFZ.js → pipeline-notifier-ImNXknf0.js} +1 -1
  315. package/server/post-merge-lifecycle-worker-DbO10pum.js +50 -0
  316. package/server/{project-pipelines-2sK1apsO.js → project-pipelines-Bim6bThI.js} +2 -2
  317. package/server/project-repos-C0nuoBGv.js +98 -0
  318. package/server/project-repos-CRE6Ykow.js +3 -0
  319. package/server/projects-B03Wr-xc.js +3 -0
  320. package/server/{prompts-Dp4Tpk39.js → prompts-BEx08AIu.js} +2 -2
  321. package/server/{providers-DKkBXhxU.js → providers-D7IluJe0.js} +1 -1
  322. package/server/{providers-DV7ec8l7.js → providers-evXhiQeg.js} +7 -7
  323. package/server/public/assets/{chunk-BO2N2NFS-CltymLRg.js → chunk-BO2N2NFS-D1s4-Sqp.js} +4 -4
  324. package/server/public/assets/{diagram-OG6HWLK6-D2f6pjgA.js → diagram-OG6HWLK6-1gdMoSF7.js} +1 -1
  325. package/server/public/assets/{dist-BWR4qFiV.js → dist-CxAOHbil.js} +1 -1
  326. package/server/public/assets/{dist-DEmlBBNQ.js → dist-DqDRYW6P.js} +3 -3
  327. package/server/public/assets/{ganttDiagram-6RSMTGT7-DnfiViPK.js → ganttDiagram-6RSMTGT7-BYex-Ec7.js} +1 -1
  328. package/server/public/assets/{highlighted-body-OFNGDK62-B8Wrmj9H.js → highlighted-body-OFNGDK62-DlVkiG0S.js} +1 -1
  329. package/server/public/assets/index-Cc7cnFC4.css +1 -0
  330. package/server/public/assets/index-K0hAYCgV.js +807 -0
  331. package/server/public/assets/{linear-C9zFQpkX.js → linear-B4cuEFmO.js} +1 -1
  332. package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +1 -0
  333. package/server/public/assets/{pieDiagram-4H26LBE5-lR8H7Yjd.js → pieDiagram-4H26LBE5-CBHNBIJQ.js} +1 -1
  334. package/server/public/assets/{prod-B1jCQihw.js → prod-CN2nHBvX.js} +4 -4
  335. package/server/public/assets/{quadrantDiagram-W4KKPZXB-CVQ2guem.js → quadrantDiagram-W4KKPZXB-Bom87VOQ.js} +1 -1
  336. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eD1RB4gm.js → sankeyDiagram-5OEKKPKP-UrBeyLxk.js} +1 -1
  337. package/server/public/assets/{xychartDiagram-2RQKCTM6-ChEC6dQn.js → xychartDiagram-2RQKCTM6-DhkbrIxR.js} +1 -1
  338. package/server/public/index.html +2 -2
  339. package/server/{pull-requests--Ib2jTgy.js → pull-requests-Cv7LxzUN.js} +1 -1
  340. package/server/{pull-requests-CXIhdCYD.js → pull-requests-DHWiKxo7.js} +19 -10
  341. package/server/{queries-6d7Cdtm7.js → queries-DHJm7bTd.js} +1134 -203
  342. package/server/{rally-B708-nZn.js → rally-B71M9f4o.js} +3 -3
  343. package/server/rally-YDjU513q.js +3 -0
  344. package/server/{rally-api-yjQ0TfHd.js → rally-api-D5uXN08-.js} +1 -1
  345. package/server/{rally-api-nY0ZANw3.js → rally-api-Dkqmok65.js} +2 -2
  346. package/server/{rally-client-B1EJhfV0.js → rally-client-Bfqm6XI4.js} +4 -4
  347. package/server/{rally-client-CULK2XAY.js → rally-client-CxsA6ExK.js} +1 -1
  348. package/server/{reap-terminal-sessions-MWnqdLCJ.js → reap-terminal-sessions-BQ23nriz.js} +2 -2
  349. package/server/{reap-terminal-sessions-N3BTkmX_.js → reap-terminal-sessions-CvmwaqKv.js} +2 -2
  350. package/server/{rebuild-stack-Dp4eLkt4.js → rebuild-stack-0EEYReVZ.js} +36 -36
  351. package/server/rebuild-stack-qeRqHZxH.js +4 -0
  352. package/server/{reconstruct-cache-uWbZfjms.js → reconstruct-cache-BbYFsqLa.js} +7 -6
  353. package/server/record-CtroO946.js +3 -0
  354. package/server/record-update-DH6dLJID.js +3 -0
  355. package/server/{record-update-Dq0t2uBG.js → record-update-Z0QCxmMp.js} +124 -34
  356. package/server/{recovery-trip-BJtIQuag.js → recovery-trip-eJe26h-f.js} +2 -2
  357. package/server/{release-engine-DZpmGGzb.js → release-engine-lPUp-MTd.js} +5 -5
  358. package/server/{release-set-hnXd_kga.js → release-set-BwGeyZKX.js} +3 -3
  359. package/server/{remote-Br-ZWVIP.js → remote-BCd02Es1.js} +3 -3
  360. package/server/{remote-4tiENDaI.js → remote-CVGUhXMV.js} +3 -3
  361. package/server/{remote-agents-CRCg1L4H.js → remote-agents-C1bssi41.js} +2 -2
  362. package/server/{remote-agents-nmty1mLu.js → remote-agents-C_VxssLU.js} +300 -46
  363. package/server/{remote-completion-BbWNd10K.js → remote-completion-DAB0P706.js} +12 -12
  364. package/server/resume-u9byntrq.js +3 -0
  365. package/server/{review-agent-DJRO8EG8.js → review-agent-CD4RCI0Y.js} +1 -1
  366. package/server/{review-agent-sKkE1FEL.js → review-agent-CHhI66UP.js} +61 -44
  367. package/server/{review-artifacts-BLbSC4ke.js → review-artifacts-DSMRIfuJ.js} +7 -6
  368. package/server/{review-context-BgX3lcCx.js → review-context-oFuBbiEE.js} +69 -25
  369. package/server/{in-flight-guard-aQ1IxeI3.js → review-convoy-liveness-CpzrcJ5F.js} +3 -44
  370. package/server/review-status-BZH8h-6W.js +3 -0
  371. package/server/review-status-emit-CUExtHd5.js +50 -0
  372. package/server/{review-status-enrichment-tbOn_A_u.js → review-status-enrichment-QV_hQkgS.js} +4 -4
  373. package/server/{review-status-source-CxuEjLGg.js → review-status-source-CpvJnvnQ.js} +24 -3
  374. package/server/review-status-source-ylw5QZUR.js +3 -0
  375. package/server/{review-status-sync-BhSQ0d0l.js → review-status-sync-483sujRo.js} +10 -5
  376. package/server/{review-status-sync-To3-iS-N.js → review-status-sync-NaWvI9Xf.js} +1 -1
  377. package/server/review-status-yljtTd-q.js +7521 -0
  378. package/server/{review-verdict-feedback-C1Kg8n7t.js → review-verdict-feedback-BPDn4li_.js} +1 -1
  379. package/server/{review-verdict-feedback-CTRNtzXO.js → review-verdict-feedback-CELeUinh.js} +48 -8
  380. package/server/{rollup-WA0VD-Rr.js → rollup-DTNvelz9.js} +8 -8
  381. package/server/{rollup-B53Y81xK.js → rollup-DYZfq1c4.js} +1 -1
  382. package/server/{scanner-D2743cp8.js → scanner-CV35oSn4.js} +42 -14
  383. package/server/{sequence-io-Cg0zYj_E.js → sequence-io-DF_8iuhV.js} +4 -4
  384. package/server/{sequencer-agent-BGY8gjg-.js → sequencer-agent-B2WeCtGi.js} +5 -5
  385. package/server/server.js +3899 -672
  386. package/server/{service-DCpB_SGd.js → service-Br9rpBNA.js} +83 -65
  387. package/server/{session-fork-BQ8_6H32.js → session-fork-D0LY152N.js} +2 -2
  388. package/server/{session-history-CVZDpS3c.js → session-history-BUyK29eq.js} +4 -4
  389. package/server/{settings-BZ5m1UCl.js → settings-Bse1Pdcj.js} +3 -3
  390. package/server/settings-CdvIF84R.js +2 -0
  391. package/server/{settings-ylxwqwQG.js → settings-CvVGqNEs.js} +3 -2
  392. package/server/{shadow-engineering-BlxG6Xye.js → shadow-engineering-BWLa8ODz.js} +2 -2
  393. package/server/{shadow-state-Dh-HzF2J.js → shadow-state-B4fpKxOO.js} +2 -2
  394. package/server/{shadow-state-C2_epgx2.js → shadow-state-FV6PHfEW.js} +1 -1
  395. package/server/{shadow-utils-4bvjn9b3.js → shadow-utils-D7asqxOZ.js} +2 -2
  396. package/server/{ship-log-ClSMIzZX.js → ship-log-xplJ8t75.js} +1 -1
  397. package/server/{smart-compaction-CHIxLr_d.js → smart-compaction-CPp2Ykf6.js} +1 -1
  398. package/server/{smart-compaction-r4pHQBIr.js → smart-compaction-D3U_79f-.js} +8 -7
  399. package/server/{spawn-planning-session-KC_UduxD.js → spawn-planning-session-1nFi3gfk.js} +1 -1
  400. package/server/{spawn-planning-session-DWAorh2B.js → spawn-planning-session-DGfZ5B8D.js} +30 -23
  401. package/server/{specialist-completion-BXhav38U.js → specialist-completion-Br48eiDP.js} +1 -1
  402. package/server/{specialist-context-DtrYvGJ-.js → specialist-context-cVbGnTa3.js} +5 -5
  403. package/server/{specialist-handoff-logger-C45ouoZ6.js → specialist-handoff-logger-DK-GTz4s.js} +2 -2
  404. package/server/{specialist-logs-DJ3RzKxW.js → specialist-logs-Cl5-hqT8.js} +3 -3
  405. package/server/{specialists-JVO00bs7.js → specialists-CNfYO3G2.js} +1634 -457
  406. package/server/{specialists-DyFeedjn.js → specialists-Cicieuzu.js} +21 -19
  407. package/server/{specialists-D5fRZXmN.js → specialists-JHsdU3pA.js} +1 -1
  408. package/server/{specialists-DVj0hvaL.js → specialists-Tdezg_6N.js} +1 -1
  409. package/server/specs-Bt7WJDoC.js +3 -0
  410. package/server/src-CRmCHlma.js +11408 -0
  411. package/server/{src-CG9mCkP6.js → src-Ck028hjO.js} +6 -6
  412. package/server/{src-CMTQGyCK.js → src-UWcGe0Ix.js} +5 -5
  413. package/server/stack-health-CJLMrLBl.js +3 -0
  414. package/server/{stack-health-puygdaMd.js → stack-health-DqSqx0zv.js} +68 -12
  415. package/server/{stale-task-claims-BbFwCTb0.js → stale-task-claims-CYFOUNlT.js} +4 -4
  416. package/server/{staleness-Cbl_w4Bw.js → staleness-BQ-0gMYK.js} +1 -1
  417. package/server/{staleness-Bpy41ngS.js → staleness-D47CUJok.js} +1 -1
  418. package/server/{state-home-CIGjwNfJ.js → state-home-BYV7qZTW.js} +2 -2
  419. package/server/{state-mapping-BL_-3Yt8.js → state-mapping-BVldLhBf.js} +1 -1
  420. package/server/{state-migrate-Dkzaxvny.js → state-migrate-CvvBtS0Y.js} +4 -4
  421. package/server/{stuck-remediation-sY_MHHgQ.js → stuck-remediation-Wt0UVvu1.js} +1 -1
  422. package/server/{stuck-remediation-CzEov_fq.js → stuck-remediation-mkLC6G_t.js} +360 -26
  423. package/server/{substrate-bug-weights-service-BH66lhm7.js → substrate-bug-weights-service-XfLAKnmK.js} +3 -3
  424. package/server/{summary-fork-D8bXjCr7.js → summary-fork-CD7GOts0.js} +2 -2
  425. package/server/{summary-fork-DHhJIsAL.js → summary-fork-xiXBnWG9.js} +78 -12
  426. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-B5SbvDx2.js} +2 -41
  427. package/server/supervisor/{paths-DehGY2Fj.js → paths-K3noE4N_.js} +1 -1
  428. package/server/supervisor/pty-supervisor.js +49 -2
  429. package/server/supervisor/pty-token-B7lp0ElT.js +43 -0
  430. package/server/{supervisor-BO-Zk_h-.js → supervisor-DL788vos.js} +3 -3
  431. package/server/supervisor-UWiQNK-y.js +2 -0
  432. package/server/{swarm-readiness-CQ_fwUWF.js → swarm-readiness-BV14DF5N.js} +3 -3
  433. package/server/{system-prerequisites-Bza0ffAh.js → system-prerequisites-pdWG6ZQs.js} +56 -29
  434. package/server/{teardown-workspace-CEgauF4U.js → teardown-workspace-l2F4_zim.js} +15 -16
  435. package/server/{test-agent-queue-DXDt0Xa-.js → test-agent-queue-qakFIIGz.js} +6 -6
  436. package/server/{test-verdict-CmUBK5cT.js → test-verdict-BJYDggMm.js} +1 -1
  437. package/server/{test-verdict-DFjjIHR5.js → test-verdict-Gw-btEfb.js} +1 -1
  438. package/server/{tldr-daemon-DL566HbH.js → tldr-daemon-BKOYB616.js} +1 -1
  439. package/server/{tldr-daemon-BDtLOIlO.js → tldr-daemon-CBaWkV9k.js} +2 -2
  440. package/server/{tmux-ftABRAmc.js → tmux-B1Wbxz5o.js} +3 -3
  441. package/server/{tmux-DoThH6aj.js → tmux-DQ6jB76i.js} +1 -1
  442. package/server/tmux-dedup-DbN6MGzM.js +892 -0
  443. package/server/{token-CsOhvw42.js → token-Cxbk023d.js} +2 -2
  444. package/server/{token-util-CTmczIfW.js → token-util-CLq2MmQt.js} +1 -1
  445. package/server/token-util-zlz9U0ki.js +3 -0
  446. package/server/{tracker-config-B4itFzDo.js → tracker-config-DZ8Zn2nQ.js} +2 -2
  447. package/server/{tracker-utils-tnxxqROg.js → tracker-utils-L0FKtjq2.js} +3 -3
  448. package/server/{traefik-connect-m73vGebA.js → traefik-connect-bNX6jKkb.js} +1 -1
  449. package/server/{tunnel-B2vxjx_b.js → tunnel-BAm1XgjG.js} +3 -3
  450. package/server/{tunnel-Cgj-IGIl.js → tunnel-CjSnHdTc.js} +1 -1
  451. package/server/{types-BBNjPcqU.js → types-q67TYYg5.js} +1 -1
  452. package/server/uat-promote-verification-CKB9ZrKC.js +92 -0
  453. package/server/uat-train-Cu-4nvbf.js +2 -0
  454. package/server/uat-train-D5UjcyAa.js +0 -0
  455. package/server/validate-Cxsx5Uz1.js +179 -0
  456. package/server/{validation-CIi6pnI2.js → validation-DEaTZafj.js} +1 -1
  457. package/server/{validation-B5JxoPUS.js → validation-VZgJxmqc.js} +4 -4
  458. package/server/{verification-artifact-C-lIHfUa.js → verification-artifact-C85cRTc_.js} +1 -1
  459. package/server/{verification-artifact-BcnIbigL.js → verification-artifact-g3yuxQDL.js} +1 -1
  460. package/server/{verification-runner-CDj4lD4t.js → verification-runner-DlZI8yhw.js} +1 -1
  461. package/server/{verification-runner-Br0S_Ous.js → verification-runner-KDZIsBj4.js} +114 -107
  462. package/server/{vtt-parser-DKpNNW5i.js → vtt-parser-Jr94BF3Y.js} +1 -1
  463. package/server/{work-agent-prompt-Yb2bd3Fq.js → work-agent-prompt-C-vuP3_J.js} +20 -9
  464. package/server/workflows-CHrx_hcW.js +2 -0
  465. package/server/{workflows-C9WmILql.js → workflows-D0oip4eV.js} +161 -78
  466. package/server/{workspace-DuUdndHe.js → workspace-BqFg__wH.js} +1 -1
  467. package/server/{workspace-BVl4rihN.js → workspace-C0fH3aek.js} +3 -3
  468. package/server/workspace-anchor-drift-B4gMRHl4.js +3 -0
  469. package/server/workspace-anchor-drift-CZKofakh.js +224 -0
  470. package/server/{workspace-config-cEGcO6UT.js → workspace-config-B123aZl-.js} +1 -1
  471. package/server/workspace-manager-CDTKjjdU.js +3 -0
  472. package/server/{workspace-manager-hLUv3ADC.js → workspace-manager-CwO-Hek7.js} +206 -116
  473. package/server/{workspace-metadata-CskwzzhL.js → workspace-metadata-CQv00QwK.js} +2 -2
  474. package/server/{workspace-metadata-DNpMixRq.js → workspace-metadata-D4M8BM4W.js} +1 -1
  475. package/server/{workspaces-hWvy9eKs.js → workspaces-j1e_6aAT.js} +736 -290
  476. package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
  477. package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
  478. package/sync-sources/hooks/record-cost-event.js +6 -4
  479. package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
  480. package/sync-sources/skills/okf/README.md +11 -3
  481. package/sync-sources/skills/okf/SKILL.md +12 -1
  482. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  483. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  484. package/sync-sources/skills/pan-close/SKILL.md +5 -3
  485. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  486. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  487. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  488. package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
  489. package/sync-sources/skills/pan-reload/SKILL.md +3 -3
  490. package/sync-sources/skills/pan-restart/SKILL.md +5 -4
  491. package/sync-sources/skills/pan-review/SKILL.md +7 -1
  492. package/sync-sources/skills/pan-start/SKILL.md +4 -0
  493. package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
  494. package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
  495. package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
  496. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  497. package/server/activity-logger-OEUBdfZ8.js +0 -3
  498. package/server/agent-state-Bg0lhqwj.js +0 -3
  499. package/server/agents-FlIgQ3ql.js +0 -3
  500. package/server/archive-planning-zkJb3BeM.js +0 -3
  501. package/server/cli-BsVIHwzC.js +0 -3
  502. package/server/context-layers-B3Nt58jl.js +0 -4
  503. package/server/context-layers-ZYFcWiyc.js +0 -165
  504. package/server/conversation-service-Up7FEzIC.js +0 -3
  505. package/server/deacon-DYSEJb48.js +0 -4
  506. package/server/deacon-swarm-9jRLS5Ke.js +0 -2
  507. package/server/deploy-window-CM6W1-c6.js +0 -3
  508. package/server/dist-Bd3vn0Hw.js +0 -3
  509. package/server/flywheel-DMCUzDWg.js +0 -2
  510. package/server/flywheel-DSSpWmqF.js +0 -522
  511. package/server/flywheel-DcBkQvgE.js +0 -207
  512. package/server/flywheel-merge-order-C-6zRLvM.js +0 -2
  513. package/server/flywheel-merge-order-DxbQKE1d.js +0 -244
  514. package/server/forge-B-ZWyTRm.js +0 -2
  515. package/server/forge-Ch9gCFod.js +0 -270
  516. package/server/git-utils-Dry_Ka_D.js +0 -3
  517. package/server/github-pr-lookup-BRbDW-qk.js +0 -44
  518. package/server/hume-B_DbflNM.js +0 -3
  519. package/server/inspect-agent-ch-F-5Ci.js +0 -2
  520. package/server/launcher-generator-CHVm7bGT.js +0 -379
  521. package/server/layers-DzxSTGNA.js +0 -93
  522. package/server/merge-blockers-BsFjGrQ8.js +0 -41
  523. package/server/merge-ops-DlB1IM0Y.js +0 -2
  524. package/server/merge-set-DLz0MkGT.js +0 -139
  525. package/server/merge-set-DnSYdBEp.js +0 -3
  526. package/server/merge-sync-SSv3E-pl.js +0 -3
  527. package/server/merge-verification-CSizH3HY.js +0 -124
  528. package/server/projects-9SkRpES9.js +0 -3
  529. package/server/public/assets/index-CUr1xv8w.css +0 -1
  530. package/server/public/assets/index-CsSuZQBI.js +0 -802
  531. package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +0 -1
  532. package/server/rally-njs_mJrt.js +0 -3
  533. package/server/rebuild-stack-kA7XngID.js +0 -3
  534. package/server/record-t6V-3Dcj.js +0 -3
  535. package/server/record-update-DACtKh6_.js +0 -3
  536. package/server/resume-CcKqnTvE.js +0 -3
  537. package/server/review-status-A7quS5KJ.js +0 -1454
  538. package/server/review-status-C6n6-9f_.js +0 -3
  539. package/server/settings-D0OSwos5.js +0 -2
  540. package/server/specs-nN45DG2X.js +0 -3
  541. package/server/src-U7_kTPEE.js +0 -4733
  542. package/server/stack-health-Df0YEZKa.js +0 -3
  543. package/server/supervisor-BPy-o1A8.js +0 -2
  544. package/server/token-util-DrHg8abn.js +0 -3
  545. package/server/tracker-utils-BePq_oj-.js +0 -3
  546. package/server/uat-train-CuEn0t9M.js +0 -2152
  547. package/server/uat-train-cKfM-_WW.js +0 -2
  548. package/server/workflows-D90rMOya.js +0 -2
  549. package/server/workspace-manager-ZTdJAy9M.js +0 -3
@@ -1,6 +1,16 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
3
- //#region ../../lib/overdeck/merge-sync.ts
2
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BjuxvjdS.js";
3
+ //#region ../../lib/overdeck/merge-sync-time.ts
4
+ /**
5
+ * merge-sync-time.ts — timestamp conversion shared by the merge-domain sync
6
+ * accessors.
7
+ *
8
+ * overdeck.db stores INTEGER milliseconds; the domain types these modules
9
+ * return predate that and use ISO strings. Both merge-sync.ts and
10
+ * merge-sync-uat.ts need the conversion, and merge-sync.ts re-exports
11
+ * merge-sync-uat.ts — so the helpers live here rather than in either module,
12
+ * where the import would close a cycle.
13
+ */
4
14
  function isoFromMillis(value) {
5
15
  return value == null ? void 0 : new Date(value).toISOString();
6
16
  }
@@ -15,153 +25,69 @@ function millisFromIso(value) {
15
25
  function nowMillis() {
16
26
  return Date.now();
17
27
  }
18
- function readFlag(key) {
19
- return getOverdeckDatabaseSync().prepare("SELECT value FROM app_settings WHERE key = ?").get(key)?.value === "true";
20
- }
21
- /** Drop-in for isFlywheelGloballyPaused() from app-settings.ts. */
22
- function isFlywheelGloballyPaused() {
23
- return readFlag("flywheel.globally_paused");
24
- }
28
+ var init_merge_sync_time = __esmMin((() => {}));
29
+ //#endregion
30
+ //#region ../../lib/overdeck/merge-sync-uat.ts
25
31
  /**
26
- * Drop-in for isMergeTrainEnabled() from app-settings.ts.
32
+ * The repo list for a generation that stored no per-repo rows — every monorepo
33
+ * generation, plus any row written before PAN-3093 added the child tables. The
34
+ * single entry mirrors the generation's own branch/base/worktree so consumers
35
+ * can loop `repos` uniformly instead of branching on project type.
27
36
  *
28
- * Reads 'flywheel.merge_train_enabled' — the single canonical key shared by the
29
- * control-settings.ts door and the merge-train engine (unified in PAN-1979).
37
+ * `repoKey` is the project-root basename: a stable, non-empty display label for
38
+ * the one repo involved, not an authoritative config key. Code that needs the
39
+ * configured key resolves it through src/lib/project-repos.ts.
30
40
  */
31
- function isMergeTrainEnabled() {
32
- return readFlag("flywheel.merge_train_enabled");
33
- }
34
- function rowToPendingAutoMerge(row) {
41
+ function synthesizeSingleRepo(row) {
42
+ const trimmed = row.project_root.replace(/\/+$/, "");
35
43
  return {
36
- id: row.id,
37
- issueId: row.issue_id,
38
- prUrl: row.pr_url,
39
- prNumber: void 0,
40
- projectKey: row.project_key,
41
- forge: row.forge ?? "github",
42
- status: row.status,
43
- scheduledMergeAt: isoFromMillisRequired(row.scheduled_merge_at),
44
- scheduledAt: isoFromMillisRequired(row.scheduled_at),
45
- mergedAt: isoFromMillis(row.merged_at),
46
- failureReason: row.failure_reason ?? void 0,
47
- cancelledAt: isoFromMillis(row.cancelled_at),
48
- cancelledBy: row.cancelled_by ?? void 0
44
+ repoKey: trimmed.slice(trimmed.lastIndexOf("/") + 1) || row.project_root,
45
+ repoPath: row.project_root,
46
+ branch: row.name,
47
+ baseSha: row.base_sha,
48
+ targetBranch: "main",
49
+ worktreePath: row.worktree_path,
50
+ mergeOrder: 0,
51
+ promotedAt: null,
52
+ mergeSha: null
49
53
  };
50
54
  }
51
- function truncateReason(reason) {
52
- return reason.length > 1024 ? reason.slice(0, 1024) : reason;
53
- }
54
- /** Drop-in for listDuePendingAutoMerges() from pending-auto-merges-db.ts. */
55
- function listDuePendingAutoMerges(nowIso) {
56
- const db = getOverdeckDatabaseSync();
57
- const nowMs = millisFromIso(nowIso) ?? Date.now();
58
- return db.prepare("SELECT * FROM pending_auto_merges WHERE status = 'pending' AND scheduled_merge_at <= ? ORDER BY scheduled_merge_at ASC, id ASC").all(nowMs).map(rowToPendingAutoMerge);
59
- }
60
- /** Drop-in for transitionToMerging() from pending-auto-merges-db.ts. */
61
- function transitionToMerging(id) {
62
- return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'merging' WHERE id = ? AND status = 'pending'").run(id).changes === 1;
63
- }
64
- /** Drop-in for markFailed() from pending-auto-merges-db.ts. */
65
- function markFailed(id, reason) {
66
- return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'failed', failure_reason = ? WHERE id = ? AND status = 'merging'").run(truncateReason(reason), id).changes === 1;
67
- }
68
- /** Drop-in for requeueToPending() from pending-auto-merges-db.ts. */
69
- function requeueToPending(id, nextScheduledMergeAt) {
70
- const db = getOverdeckDatabaseSync();
71
- const nextMs = millisFromIso(nextScheduledMergeAt);
72
- if (nextMs == null) return false;
73
- return db.prepare("UPDATE pending_auto_merges SET status = 'pending', scheduled_merge_at = ? WHERE id = ? AND status = 'merging'").run(nextMs, id).changes === 1;
74
- }
75
- /** Drop-in for markBlocked() from pending-auto-merges-db.ts. */
76
- function markBlocked(id, reason) {
77
- return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'blocked', failure_reason = ? WHERE id = ? AND status = 'pending'").run(truncateReason(reason), id).changes === 1;
78
- }
79
- /** Drop-in for markMerged() from pending-auto-merges-db.ts. */
80
- function markMerged(id) {
81
- return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'merged', merged_at = ? WHERE id = ? AND status = 'merging'").run(nowMillis(), id).changes === 1;
82
- }
83
- /** Drop-in for cancelPending() from pending-auto-merges-db.ts. */
84
- function cancelPending(id, cancelledBy) {
85
- return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'cancelled', cancelled_at = ?, cancelled_by = ? WHERE id = ? AND status IN ('pending','blocked','failed')").run(nowMillis(), cancelledBy, id).changes === 1;
86
- }
87
- /** Drop-in for getActionableAutoMerge() from pending-auto-merges-db.ts. */
88
- function getActionableAutoMerge(issueId) {
89
- const row = getOverdeckDatabaseSync().prepare("SELECT * FROM pending_auto_merges WHERE issue_id = ? AND status IN ('pending','merging','blocked','failed') ORDER BY id DESC LIMIT 1").get(issueId);
90
- return row ? rowToPendingAutoMerge(row) : null;
91
- }
92
- /** Drop-in for listActiveAutoMerges() from pending-auto-merges-db.ts. */
93
- function listActiveAutoMerges(limit = 100) {
94
- return getOverdeckDatabaseSync().prepare("SELECT * FROM pending_auto_merges WHERE status IN ('pending','merging') ORDER BY scheduled_merge_at ASC, id ASC LIMIT ?").all(limit).map(rowToPendingAutoMerge);
95
- }
96
- /** Drop-in for listProblemAutoMerges() from pending-auto-merges-db.ts. */
97
- function listProblemAutoMerges(limit = 100) {
98
- return getOverdeckDatabaseSync().prepare("SELECT * FROM pending_auto_merges WHERE status IN ('blocked','failed') ORDER BY scheduled_merge_at ASC, id ASC LIMIT ?").all(limit).map(rowToPendingAutoMerge);
99
- }
100
- /** Drop-in for scheduleAutoMergeWithResult() from pending-auto-merges-db.ts. */
101
- function scheduleAutoMergeWithResult(input) {
102
- const db = getOverdeckDatabaseSync();
103
- const existing = db.prepare("SELECT * FROM pending_auto_merges WHERE issue_id = ? AND status IN ('pending','merging') ORDER BY id DESC LIMIT 1").get(input.issueId);
104
- if (existing) return {
105
- entry: rowToPendingAutoMerge(existing),
106
- created: false
107
- };
108
- const scheduledAtMs = millisFromIso(input.scheduledAt ?? (/* @__PURE__ */ new Date()).toISOString()) ?? nowMillis();
109
- const scheduledMergeAtMs = millisFromIso(input.scheduledMergeAt) ?? nowMillis();
110
- try {
111
- const result = db.prepare(`
112
- INSERT INTO pending_auto_merges (issue_id, pr_url, project_key, forge, status, scheduled_merge_at, scheduled_at)
113
- VALUES (?, ?, ?, ?, 'pending', ?, ?)
114
- `).run(input.issueId, input.prUrl, input.projectKey, input.forge ?? "github", scheduledMergeAtMs, scheduledAtMs);
55
+ function rowToUatGeneration(row, memberRows, resolutionRows, repoRows = [], memberRepoRows = []) {
56
+ const memberReposByIssue = /* @__PURE__ */ new Map();
57
+ for (const mr of [...memberRepoRows].sort((a, b) => a.merge_order_in_repo - b.merge_order_in_repo)) {
58
+ const list = memberReposByIssue.get(mr.issue_id) ?? [];
59
+ list.push({
60
+ repoKey: mr.repo_key,
61
+ branch: mr.branch,
62
+ headSha: mr.head_sha,
63
+ mergeOrderInRepo: mr.merge_order_in_repo
64
+ });
65
+ memberReposByIssue.set(mr.issue_id, list);
66
+ }
67
+ const members = memberRows.filter((m) => m.role === "member").map((m) => {
68
+ const repos = memberReposByIssue.get(m.issue_id);
115
69
  return {
116
- entry: rowToPendingAutoMerge(db.prepare("SELECT * FROM pending_auto_merges WHERE id = ?").get(Number(result.lastInsertRowid))),
117
- created: true
118
- };
119
- } catch {
120
- const raced = db.prepare("SELECT * FROM pending_auto_merges WHERE issue_id = ? AND status IN ('pending','merging') ORDER BY id DESC LIMIT 1").get(input.issueId);
121
- if (raced) return {
122
- entry: rowToPendingAutoMerge(raced),
123
- created: false
70
+ issueId: m.issue_id,
71
+ title: m.title ?? "",
72
+ branch: m.branch ?? "",
73
+ headSha: m.head_sha ?? "",
74
+ mergeOrder: m.merge_order ?? 0,
75
+ pr: m.pr ?? void 0,
76
+ prUrl: m.pr_url ?? void 0,
77
+ ...repos && repos.length > 0 ? { repos } : {}
124
78
  };
125
- throw new Error(`[merge-sync] scheduleAutoMergeWithResult failed for ${input.issueId}`);
126
- }
127
- }
128
- /** Drop-in for getAllActiveQueues() from merge-queue-db.ts. */
129
- function getAllActiveQueues() {
130
- const rows = getOverdeckDatabaseSync().prepare("SELECT project_key, issue_id, status FROM merge_queue WHERE status IN ('queued', 'processing') ORDER BY project_key, position ASC").all();
131
- const byProject = /* @__PURE__ */ new Map();
132
- for (const row of rows) {
133
- let entry = byProject.get(row.project_key);
134
- if (!entry) {
135
- entry = {
136
- current: null,
137
- queue: []
138
- };
139
- byProject.set(row.project_key, entry);
140
- }
141
- if (row.status === "processing") entry.current = row.issue_id;
142
- else entry.queue.push(row.issue_id);
143
- }
144
- return [...byProject.entries()].map(([projectKey, data]) => ({
145
- projectKey,
146
- current: data.current,
147
- queue: data.queue,
148
- queueLength: data.queue.length
149
- }));
150
- }
151
- /** Drop-in for resetProcessingToQueued() from merge-queue-db.ts. */
152
- function resetProcessingToQueued() {
153
- return getOverdeckDatabaseSync().prepare("UPDATE merge_queue SET status = 'queued', started_at = NULL WHERE status = 'processing'").run().changes;
154
- }
155
- function rowToUatGeneration(row, memberRows, resolutionRows) {
156
- const members = memberRows.filter((m) => m.role === "member").map((m) => ({
157
- issueId: m.issue_id,
158
- title: m.title ?? "",
159
- branch: m.branch ?? "",
160
- headSha: m.head_sha ?? "",
161
- mergeOrder: m.merge_order ?? 0,
162
- pr: m.pr ?? void 0,
163
- prUrl: m.pr_url ?? void 0
164
- }));
79
+ });
80
+ const repos = repoRows.length > 0 ? [...repoRows].sort((a, b) => a.merge_order - b.merge_order || a.repo_key.localeCompare(b.repo_key)).map((r) => ({
81
+ repoKey: r.repo_key,
82
+ repoPath: r.repo_path,
83
+ branch: r.branch,
84
+ baseSha: r.base_sha,
85
+ targetBranch: r.target_branch ?? "main",
86
+ worktreePath: r.worktree_path,
87
+ mergeOrder: r.merge_order,
88
+ promotedAt: isoFromMillis(r.promoted_at) ?? null,
89
+ mergeSha: r.merge_sha ?? null
90
+ })) : [synthesizeSingleRepo(row)];
165
91
  const heldOut = memberRows.filter((m) => m.role === "held_out").map((m) => ({
166
92
  issueId: m.issue_id,
167
93
  branch: m.branch ?? void 0,
@@ -171,7 +97,9 @@ function rowToUatGeneration(row, memberRows, resolutionRows) {
171
97
  const resolutions = resolutionRows.map((r) => ({
172
98
  issueIds: JSON.parse(r.issue_ids),
173
99
  files: JSON.parse(r.files),
174
- commitSha: r.commit_sha
100
+ commitSha: r.commit_sha,
101
+ kind: r.kind ?? "conflict",
102
+ ...r.note ? { note: r.note } : {}
175
103
  }));
176
104
  return {
177
105
  name: row.name,
@@ -179,6 +107,7 @@ function rowToUatGeneration(row, memberRows, resolutionRows) {
179
107
  projectRoot: row.project_root,
180
108
  baseSha: row.base_sha,
181
109
  status: row.status,
110
+ repos,
182
111
  members,
183
112
  heldOut,
184
113
  resolutions,
@@ -194,6 +123,75 @@ function loadMembersForUat(db, uatName) {
194
123
  function loadResolutionsForUat(db, uatName) {
195
124
  return db.prepare("SELECT * FROM uat_generation_resolutions WHERE uat_name = ?").all(uatName);
196
125
  }
126
+ function loadReposForUat(db, uatName) {
127
+ return db.prepare("SELECT * FROM uat_generation_repos WHERE uat_name = ?").all(uatName);
128
+ }
129
+ function loadMemberReposForUat(db, uatName) {
130
+ return db.prepare("SELECT * FROM uat_generation_member_repos WHERE uat_name = ?").all(uatName);
131
+ }
132
+ /**
133
+ * Load many generations with a FIXED number of statements: one per child table
134
+ * with an `IN (…)` filter, grouped in memory.
135
+ *
136
+ * The per-generation loader below costs four synchronous SQLite round-trips
137
+ * each, so listing G generations cost 1 + 4G statements on the Node event loop
138
+ * — and these lists are read by the generations HTTP route, the minute
139
+ * reconciler, and cleanup, which walks the full retained history.
140
+ */
141
+ function loadUatGenerations(db, rows) {
142
+ if (rows.length === 0) return [];
143
+ const names = rows.map((r) => r.name);
144
+ const placeholders = names.map(() => "?").join(", ");
145
+ const childRows = (table) => db.prepare(`SELECT * FROM ${table} WHERE uat_name IN (${placeholders})`).all(...names);
146
+ const groupBy = (all) => {
147
+ const byName = /* @__PURE__ */ new Map();
148
+ for (const row of all) {
149
+ const list = byName.get(row.uat_name);
150
+ if (list) list.push(row);
151
+ else byName.set(row.uat_name, [row]);
152
+ }
153
+ return byName;
154
+ };
155
+ const members = groupBy(childRows("uat_generation_members"));
156
+ const resolutions = groupBy(childRows("uat_generation_resolutions"));
157
+ const repos = groupBy(childRows("uat_generation_repos"));
158
+ const memberRepos = groupBy(childRows("uat_generation_member_repos"));
159
+ return rows.map((row) => rowToUatGeneration(row, members.get(row.name) ?? [], resolutions.get(row.name) ?? [], repos.get(row.name) ?? [], memberRepos.get(row.name) ?? []));
160
+ }
161
+ /** Load one generation with every child table it owns. */
162
+ function loadUatGeneration(db, row) {
163
+ return rowToUatGeneration(row, loadMembersForUat(db, row.name), loadResolutionsForUat(db, row.name), loadReposForUat(db, row.name), loadMemberReposForUat(db, row.name));
164
+ }
165
+ /**
166
+ * Rewrite `uat_generation_repos` for a generation. Callers run this inside the
167
+ * generation's write transaction, after the parent row exists, so a partial
168
+ * write can never leave repo rows pointing at a missing generation.
169
+ */
170
+ function writeUatGenerationRepoRows(db, name, repos) {
171
+ db.prepare("DELETE FROM uat_generation_repos WHERE uat_name = ?").run(name);
172
+ if (!repos || repos.length === 0) return;
173
+ const insertRepo = db.prepare(`
174
+ INSERT INTO uat_generation_repos
175
+ (uat_name, repo_key, repo_path, branch, base_sha, target_branch, worktree_path, merge_order, promoted_at, merge_sha)
176
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
177
+ `);
178
+ for (const r of repos) insertRepo.run(name, r.repoKey, r.repoPath, r.branch, r.baseSha, r.targetBranch ?? "main", r.worktreePath, r.mergeOrder, r.promotedAt ? millisFromIso(r.promotedAt) : null, r.mergeSha ?? null);
179
+ }
180
+ /**
181
+ * Rewrite `uat_generation_member_repos` from an explicit member list. Only call
182
+ * this when the caller supplied real members: the update path reconstructs
183
+ * members from `uat_generation_members`, which carries no per-repo data, so
184
+ * rebuilding from a reconstructed list would silently drop every contribution.
185
+ */
186
+ function writeUatMemberRepoRows(db, name, members) {
187
+ db.prepare("DELETE FROM uat_generation_member_repos WHERE uat_name = ?").run(name);
188
+ const insertMemberRepo = db.prepare(`
189
+ INSERT INTO uat_generation_member_repos
190
+ (uat_name, issue_id, repo_key, branch, head_sha, merge_order_in_repo)
191
+ VALUES (?, ?, ?, ?, ?, ?)
192
+ `);
193
+ for (const m of members) for (const mr of m.repos ?? []) insertMemberRepo.run(name, m.issueId, mr.repoKey, mr.branch, mr.headSha, mr.mergeOrderInRepo);
194
+ }
197
195
  /** Drop-in for insertUatGenerationSync() from uat-generations-db.ts. */
198
196
  function insertUatGenerationSync(gen) {
199
197
  const db = getOverdeckDatabaseSync();
@@ -201,6 +199,8 @@ function insertUatGenerationSync(gen) {
201
199
  const createdAt = gen.createdAt ?? new Date(nowMs).toISOString();
202
200
  const createdAtMs = millisFromIso(createdAt) ?? nowMs;
203
201
  db.transaction(() => {
202
+ db.prepare("DELETE FROM uat_generation_member_repos WHERE uat_name = ?").run(gen.name);
203
+ db.prepare("DELETE FROM uat_generation_repos WHERE uat_name = ?").run(gen.name);
204
204
  db.prepare("DELETE FROM uat_generation_members WHERE uat_name = ?").run(gen.name);
205
205
  db.prepare("DELETE FROM uat_generation_resolutions WHERE uat_name = ?").run(gen.name);
206
206
  db.prepare(`
@@ -216,10 +216,12 @@ function insertUatGenerationSync(gen) {
216
216
  for (const m of gen.members) insertMember.run(gen.name, m.issueId, "member", m.title, m.branch, m.headSha, m.mergeOrder, m.pr ?? null, m.prUrl ?? null, null);
217
217
  for (const h of gen.heldOut) insertMember.run(gen.name, h.issueId, "held_out", null, h.branch ?? null, h.headSha ?? null, null, null, null, h.reason);
218
218
  const insertResolution = db.prepare(`
219
- INSERT INTO uat_generation_resolutions (uat_name, issue_ids, files, commit_sha)
220
- VALUES (?, ?, ?, ?)
219
+ INSERT INTO uat_generation_resolutions (uat_name, issue_ids, files, commit_sha, kind, note)
220
+ VALUES (?, ?, ?, ?, ?, ?)
221
221
  `);
222
- for (const r of gen.resolutions) insertResolution.run(gen.name, JSON.stringify(r.issueIds), JSON.stringify(r.files), r.commitSha);
222
+ for (const r of gen.resolutions) insertResolution.run(gen.name, JSON.stringify(r.issueIds), JSON.stringify(r.files), r.commitSha, r.kind ?? "conflict", r.note ?? null);
223
+ writeUatGenerationRepoRows(db, gen.name, gen.repos);
224
+ writeUatMemberRepoRows(db, gen.name, gen.members);
223
225
  })();
224
226
  return {
225
227
  ...gen,
@@ -232,7 +234,7 @@ function getUatGenerationSync(name) {
232
234
  const db = getOverdeckDatabaseSync();
233
235
  const row = db.prepare("SELECT * FROM uat_generations WHERE name = ?").get(name);
234
236
  if (!row) return null;
235
- return rowToUatGeneration(row, loadMembersForUat(db, name), loadResolutionsForUat(db, name));
237
+ return loadUatGeneration(db, row);
236
238
  }
237
239
  /** Drop-in for listUatGenerationsSync() from uat-generations-db.ts. */
238
240
  function listUatGenerationsSync(options = {}) {
@@ -249,12 +251,16 @@ function listUatGenerationsSync(options = {}) {
249
251
  }
250
252
  const whereSql = where.length > 0 ? `WHERE ${where.join(" AND ")}` : "";
251
253
  const limitSql = options.limit ? `LIMIT ${Math.max(1, Math.floor(options.limit))}` : "";
252
- return db.prepare(`SELECT * FROM uat_generations ${whereSql} ORDER BY created_at DESC, name DESC ${limitSql}`).all(...params).map((row) => rowToUatGeneration(row, loadMembersForUat(db, row.name), loadResolutionsForUat(db, row.name)));
254
+ return loadUatGenerations(db, db.prepare(`SELECT * FROM uat_generations ${whereSql} ORDER BY created_at DESC, name DESC ${limitSql}`).all(...params));
253
255
  }
254
256
  /** Drop-in for listUatGenerationNamesSync() from uat-generations-db.ts. */
255
257
  function listUatGenerationNamesSync() {
256
258
  return getOverdeckDatabaseSync().prepare("SELECT name FROM uat_generations").all().map((r) => r.name);
257
259
  }
260
+ /** Drop-in for updateUatGenerationStatusSync() from uat-generations-db.ts. */
261
+ function updateUatGenerationStatusSync(name, status) {
262
+ if (getOverdeckDatabaseSync().prepare("UPDATE uat_generations SET status = ?, updated_at = ? WHERE name = ?").run(status, nowMillis(), name).changes === 0) throw new Error(`[merge-sync] uat generation not found: ${name}`);
263
+ }
258
264
  /** Drop-in for updateUatGenerationSync() from uat-generations-db.ts. */
259
265
  function updateUatGenerationSync(name, patch) {
260
266
  const db = getOverdeckDatabaseSync();
@@ -302,17 +308,45 @@ function updateUatGenerationSync(name, patch) {
302
308
  }));
303
309
  for (const m of members) insertMember.run(name, m.issueId, "member", m.title, m.branch, m.headSha, m.mergeOrder, m.pr ?? null, m.prUrl ?? null, null);
304
310
  for (const h of heldOut) insertMember.run(name, h.issueId, "held_out", null, h.branch ?? null, h.headSha ?? null, null, null, null, h.reason);
311
+ if (patch.members !== void 0) writeUatMemberRepoRows(db, name, patch.members);
305
312
  }
313
+ if (patch.repos !== void 0) writeUatGenerationRepoRows(db, name, patch.repos);
306
314
  if (patch.resolutions !== void 0) {
307
315
  db.prepare("DELETE FROM uat_generation_resolutions WHERE uat_name = ?").run(name);
308
316
  const insertRes = db.prepare(`
309
- INSERT INTO uat_generation_resolutions (uat_name, issue_ids, files, commit_sha)
310
- VALUES (?, ?, ?, ?)
317
+ INSERT INTO uat_generation_resolutions (uat_name, issue_ids, files, commit_sha, kind, note)
318
+ VALUES (?, ?, ?, ?, ?, ?)
311
319
  `);
312
- for (const r of patch.resolutions) insertRes.run(name, JSON.stringify(r.issueIds), JSON.stringify(r.files), r.commitSha);
320
+ for (const r of patch.resolutions) insertRes.run(name, JSON.stringify(r.issueIds), JSON.stringify(r.files), r.commitSha, r.kind ?? "conflict", r.note ?? null);
313
321
  }
314
322
  })();
315
323
  }
324
+ /**
325
+ * Record that one member repo's merge landed on its target branch (PAN-3093).
326
+ * Promote publishes repos one at a time, so this per-repo stamp is what makes a
327
+ * partially-published generation resumable: a retry skips every repo that
328
+ * already carries a `promoted_at`.
329
+ */
330
+ function markUatGenerationRepoPromotedSync(name, repoKey, promotedAt, mergeSha) {
331
+ const db = getOverdeckDatabaseSync();
332
+ if (db.prepare("UPDATE uat_generation_repos SET promoted_at = ?, merge_sha = COALESCE(?, merge_sha) WHERE uat_name = ? AND repo_key = ?").run(millisFromIso(promotedAt), mergeSha ?? null, name, repoKey).changes === 0) throw new Error(`[merge-sync] uat generation repo not found: ${name} / ${repoKey}`);
333
+ db.prepare("UPDATE uat_generations SET updated_at = ? WHERE name = ?").run(nowMillis(), name);
334
+ }
335
+ /**
336
+ * Does this project have a terminal generation that still owns artifacts?
337
+ *
338
+ * The idle reconciler tick asks only this, and generation rows are retained as
339
+ * an audit trail — hydrating every promoted/failed/invalidated row plus its four
340
+ * child tables to answer a yes/no question means the cost of an idle minute
341
+ * grows with history forever, on the event loop.
342
+ */
343
+ function hasUncleanedTerminalUatGenerationSync(projectRoot) {
344
+ return getOverdeckDatabaseSync().prepare(`SELECT 1 FROM uat_generations
345
+ WHERE project_root = ?
346
+ AND status IN ('promoted', 'failed', 'invalidated')
347
+ AND cleaned_at IS NULL
348
+ LIMIT 1`).get(projectRoot) !== void 0;
349
+ }
316
350
  /** Drop-in for setUatGenerationStackStartedAtSync() from uat-generations-db.ts. */
317
351
  function setUatGenerationStackStartedAtSync(name, startedAt) {
318
352
  if (getOverdeckDatabaseSync().prepare("UPDATE uat_generations SET stack_started_at = ?, updated_at = ? WHERE name = ?").run(startedAt ? millisFromIso(startedAt) : null, nowMillis(), name).changes === 0) throw new Error(`[merge-sync] uat generation not found: ${name}`);
@@ -320,7 +354,169 @@ function setUatGenerationStackStartedAtSync(name, startedAt) {
320
354
  /** Drop-in for listUatGenerationsWithStacksSync() from uat-generations-db.ts. */
321
355
  function listUatGenerationsWithStacksSync() {
322
356
  const db = getOverdeckDatabaseSync();
323
- return db.prepare("SELECT * FROM uat_generations WHERE stack_started_at IS NOT NULL ORDER BY stack_started_at ASC").all().map((row) => rowToUatGeneration(row, loadMembersForUat(db, row.name), loadResolutionsForUat(db, row.name)));
357
+ return loadUatGenerations(db, db.prepare("SELECT * FROM uat_generations WHERE stack_started_at IS NOT NULL ORDER BY stack_started_at ASC").all());
358
+ }
359
+ var init_merge_sync_uat = __esmMin((() => {
360
+ init_infra();
361
+ init_merge_sync_time();
362
+ }));
363
+ //#endregion
364
+ //#region ../../lib/overdeck/merge-sync.ts
365
+ function readFlag(key) {
366
+ return getOverdeckDatabaseSync().prepare("SELECT value FROM app_settings WHERE key = ?").get(key)?.value === "true";
367
+ }
368
+ /** Drop-in for isFlywheelGloballyPaused() from app-settings.ts. */
369
+ function isFlywheelGloballyPaused() {
370
+ return readFlag("flywheel.globally_paused");
371
+ }
372
+ /**
373
+ * Drop-in for isMergeTrainEnabled() from app-settings.ts (PAN-1696).
374
+ *
375
+ * Reads 'merge_train.enabled' (new key), falling back to
376
+ * 'flywheel.merge_train_enabled' (legacy) when the new key is absent.
377
+ */
378
+ function isMergeTrainEnabled() {
379
+ const newRow = getOverdeckDatabaseSync().prepare("SELECT value FROM app_settings WHERE key = ?").get("merge_train.enabled");
380
+ if (newRow?.value === "true" || newRow?.value === "false") return newRow.value === "true";
381
+ return readFlag("flywheel.merge_train_enabled");
382
+ }
383
+ /**
384
+ * PAN-1696: Check if merge train is enabled for a project, respecting the
385
+ * per-project override in projects.yaml if set, otherwise falling back to
386
+ * the global merge_train.enabled flag.
387
+ *
388
+ * @param project - ProjectConfig from projects.yaml with merge_train field. If not set, uses global.
389
+ * @returns true if merge train is enabled for this project, false otherwise.
390
+ */
391
+ function isMergeTrainEnabledForProject(project) {
392
+ if (project?.merge_train === "enabled") return true;
393
+ if (project?.merge_train === "disabled") return false;
394
+ return isMergeTrainEnabled();
395
+ }
396
+ function rowToPendingAutoMerge(row) {
397
+ return {
398
+ id: row.id,
399
+ issueId: row.issue_id,
400
+ prUrl: row.pr_url,
401
+ prNumber: void 0,
402
+ projectKey: row.project_key,
403
+ forge: row.forge ?? "github",
404
+ status: row.status,
405
+ scheduledMergeAt: isoFromMillisRequired(row.scheduled_merge_at),
406
+ scheduledAt: isoFromMillisRequired(row.scheduled_at),
407
+ mergedAt: isoFromMillis(row.merged_at),
408
+ failureReason: row.failure_reason ?? void 0,
409
+ cancelledAt: isoFromMillis(row.cancelled_at),
410
+ cancelledBy: row.cancelled_by ?? void 0
411
+ };
412
+ }
413
+ function truncateReason(reason) {
414
+ return reason.length > 1024 ? reason.slice(0, 1024) : reason;
415
+ }
416
+ /** Drop-in for listDuePendingAutoMerges() from pending-auto-merges-db.ts. */
417
+ function listDuePendingAutoMerges(nowIso) {
418
+ const db = getOverdeckDatabaseSync();
419
+ const nowMs = millisFromIso(nowIso) ?? Date.now();
420
+ return db.prepare("SELECT * FROM pending_auto_merges WHERE status = 'pending' AND scheduled_merge_at <= ? ORDER BY scheduled_merge_at ASC, id ASC").all(nowMs).map(rowToPendingAutoMerge);
421
+ }
422
+ /** Drop-in for transitionToMerging() from pending-auto-merges-db.ts. */
423
+ function transitionToMerging(id) {
424
+ return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'merging' WHERE id = ? AND status = 'pending'").run(id).changes === 1;
425
+ }
426
+ /** Drop-in for markFailed() from pending-auto-merges-db.ts. */
427
+ function markFailed(id, reason) {
428
+ return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'failed', failure_reason = ? WHERE id = ? AND status = 'merging'").run(truncateReason(reason), id).changes === 1;
429
+ }
430
+ /** Drop-in for requeueToPending() from pending-auto-merges-db.ts. */
431
+ function requeueToPending(id, nextScheduledMergeAt) {
432
+ const db = getOverdeckDatabaseSync();
433
+ const nextMs = millisFromIso(nextScheduledMergeAt);
434
+ if (nextMs == null) return false;
435
+ return db.prepare("UPDATE pending_auto_merges SET status = 'pending', scheduled_merge_at = ? WHERE id = ? AND status = 'merging'").run(nextMs, id).changes === 1;
436
+ }
437
+ /** Drop-in for markBlocked() from pending-auto-merges-db.ts. */
438
+ function markBlocked(id, reason) {
439
+ return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'blocked', failure_reason = ? WHERE id = ? AND status = 'pending'").run(truncateReason(reason), id).changes === 1;
440
+ }
441
+ /** Atomically stop an in-progress auto-merge after its retry circuit breaker opens. */
442
+ function markMergingBlocked(id, reason) {
443
+ return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'blocked', failure_reason = ? WHERE id = ? AND status = 'merging'").run(truncateReason(reason), id).changes === 1;
444
+ }
445
+ /** Drop-in for markMerged() from pending-auto-merges-db.ts. */
446
+ function markMerged(id) {
447
+ return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'merged', merged_at = ? WHERE id = ? AND status = 'merging'").run(nowMillis(), id).changes === 1;
448
+ }
449
+ /** Drop-in for cancelPending() from pending-auto-merges-db.ts. */
450
+ function cancelPending(id, cancelledBy) {
451
+ return getOverdeckDatabaseSync().prepare("UPDATE pending_auto_merges SET status = 'cancelled', cancelled_at = ?, cancelled_by = ? WHERE id = ? AND status IN ('pending','blocked','failed')").run(nowMillis(), cancelledBy, id).changes === 1;
452
+ }
453
+ /** Drop-in for getActionableAutoMerge() from pending-auto-merges-db.ts. */
454
+ function getActionableAutoMerge(issueId) {
455
+ const row = getOverdeckDatabaseSync().prepare("SELECT * FROM pending_auto_merges WHERE issue_id = ? AND status IN ('pending','merging','blocked','failed') ORDER BY id DESC LIMIT 1").get(issueId);
456
+ return row ? rowToPendingAutoMerge(row) : null;
457
+ }
458
+ /** Drop-in for listActiveAutoMerges() from pending-auto-merges-db.ts. */
459
+ function listActiveAutoMerges(limit = 100) {
460
+ return getOverdeckDatabaseSync().prepare("SELECT * FROM pending_auto_merges WHERE status IN ('pending','merging') ORDER BY scheduled_merge_at ASC, id ASC LIMIT ?").all(limit).map(rowToPendingAutoMerge);
461
+ }
462
+ /** Drop-in for listProblemAutoMerges() from pending-auto-merges-db.ts. */
463
+ function listProblemAutoMerges(limit = 100) {
464
+ return getOverdeckDatabaseSync().prepare("SELECT * FROM pending_auto_merges WHERE status IN ('blocked','failed') ORDER BY scheduled_merge_at ASC, id ASC LIMIT ?").all(limit).map(rowToPendingAutoMerge);
465
+ }
466
+ /** Drop-in for scheduleAutoMergeWithResult() from pending-auto-merges-db.ts. */
467
+ function scheduleAutoMergeWithResult(input) {
468
+ const db = getOverdeckDatabaseSync();
469
+ const existing = db.prepare("SELECT * FROM pending_auto_merges WHERE issue_id = ? AND status IN ('pending','merging') ORDER BY id DESC LIMIT 1").get(input.issueId);
470
+ if (existing) return {
471
+ entry: rowToPendingAutoMerge(existing),
472
+ created: false
473
+ };
474
+ const scheduledAtMs = millisFromIso(input.scheduledAt ?? (/* @__PURE__ */ new Date()).toISOString()) ?? nowMillis();
475
+ const scheduledMergeAtMs = millisFromIso(input.scheduledMergeAt) ?? nowMillis();
476
+ try {
477
+ const result = db.prepare(`
478
+ INSERT INTO pending_auto_merges (issue_id, pr_url, project_key, forge, status, scheduled_merge_at, scheduled_at)
479
+ VALUES (?, ?, ?, ?, 'pending', ?, ?)
480
+ `).run(input.issueId, input.prUrl, input.projectKey, input.forge ?? "github", scheduledMergeAtMs, scheduledAtMs);
481
+ return {
482
+ entry: rowToPendingAutoMerge(db.prepare("SELECT * FROM pending_auto_merges WHERE id = ?").get(Number(result.lastInsertRowid))),
483
+ created: true
484
+ };
485
+ } catch {
486
+ const raced = db.prepare("SELECT * FROM pending_auto_merges WHERE issue_id = ? AND status IN ('pending','merging') ORDER BY id DESC LIMIT 1").get(input.issueId);
487
+ if (raced) return {
488
+ entry: rowToPendingAutoMerge(raced),
489
+ created: false
490
+ };
491
+ throw new Error(`[merge-sync] scheduleAutoMergeWithResult failed for ${input.issueId}`);
492
+ }
493
+ }
494
+ /** Drop-in for getAllActiveQueues() from merge-queue-db.ts. */
495
+ function getAllActiveQueues() {
496
+ const rows = getOverdeckDatabaseSync().prepare("SELECT project_key, issue_id, status FROM merge_queue WHERE status IN ('queued', 'processing') ORDER BY project_key, position ASC").all();
497
+ const byProject = /* @__PURE__ */ new Map();
498
+ for (const row of rows) {
499
+ let entry = byProject.get(row.project_key);
500
+ if (!entry) {
501
+ entry = {
502
+ current: null,
503
+ queue: []
504
+ };
505
+ byProject.set(row.project_key, entry);
506
+ }
507
+ if (row.status === "processing") entry.current = row.issue_id;
508
+ else entry.queue.push(row.issue_id);
509
+ }
510
+ return [...byProject.entries()].map(([projectKey, data]) => ({
511
+ projectKey,
512
+ current: data.current,
513
+ queue: data.queue,
514
+ queueLength: data.queue.length
515
+ }));
516
+ }
517
+ /** Drop-in for resetProcessingToQueued() from merge-queue-db.ts. */
518
+ function resetProcessingToQueued() {
519
+ return getOverdeckDatabaseSync().prepare("UPDATE merge_queue SET status = 'queued', started_at = NULL WHERE status = 'processing'").run().changes;
324
520
  }
325
521
  function rowToMergeSetRepos(rows) {
326
522
  return rows.map((r) => ({
@@ -388,6 +584,48 @@ function upsertMergeSet(mergeSet) {
388
584
  for (const repo of set.repos) insertRepo.run(set.issueId, repo.repoKey, repo.repoPath, repo.forge, repo.sourceBranch, repo.targetBranch, repo.artifactUrl ?? null, repo.artifactId ?? null, repo.reviewStatus, repo.testStatus, repo.rebaseStatus, repo.verificationStatus, repo.mergeStatus, repo.mergeOrder, repo.required ? 1 : 0);
389
585
  })(mergeSet);
390
586
  }
587
+ function patchMergeSetRepos(issueId, patches) {
588
+ const db = getOverdeckDatabaseSync();
589
+ const effective = patches.filter(({ patch }) => Object.values(patch).some((value) => value !== void 0));
590
+ if (effective.length === 0) return true;
591
+ try {
592
+ db.transaction(() => {
593
+ for (const { repoKey, expected, patch } of effective) {
594
+ const assignments = [];
595
+ const values = [];
596
+ if (patch.artifactUrl !== void 0) {
597
+ assignments.push("artifact_url = ?");
598
+ values.push(patch.artifactUrl);
599
+ }
600
+ if (patch.artifactId !== void 0) {
601
+ assignments.push("artifact_id = ?");
602
+ values.push(patch.artifactId);
603
+ }
604
+ if (patch.mergeStatus !== void 0) {
605
+ assignments.push("merge_status = ?");
606
+ values.push(patch.mergeStatus);
607
+ }
608
+ if (db.prepare(`
609
+ UPDATE merge_set_repos SET ${assignments.join(", ")}
610
+ WHERE issue_id = ? AND repo_key = ? AND source_branch = ? AND target_branch = ?
611
+ AND artifact_url IS ? AND artifact_id IS ?
612
+ `).run(...values, issueId, repoKey, expected.sourceBranch, expected.targetBranch, expected.artifactUrl ?? null, expected.artifactId ?? null).changes !== 1) throw MERGE_SET_REPO_CAS_FAILED;
613
+ }
614
+ db.prepare("UPDATE merge_sets SET updated_at = ? WHERE issue_id = ?").run(nowMillis(), issueId);
615
+ })();
616
+ return true;
617
+ } catch (error) {
618
+ if (error === MERGE_SET_REPO_CAS_FAILED) return false;
619
+ throw error;
620
+ }
621
+ }
622
+ function patchMergeSetRepo(issueId, repoKey, expected, patch) {
623
+ return patchMergeSetRepos(issueId, [{
624
+ repoKey,
625
+ expected,
626
+ patch
627
+ }]);
628
+ }
391
629
  /** Drop-in for getMergeSetFromDb() from merge-set-db.ts. */
392
630
  function getMergeSetFromDb(issueId) {
393
631
  const db = getOverdeckDatabaseSync();
@@ -395,10 +633,25 @@ function getMergeSetFromDb(issueId) {
395
633
  if (!row) return null;
396
634
  return rowToMergeSet(row, loadReposForMergeSet(db, issueId));
397
635
  }
636
+ /** Drop-in for getAllMergeSetsFromDb() from merge-set-db.ts. */
637
+ function getAllMergeSetsFromDb(projectKey) {
638
+ const db = getOverdeckDatabaseSync();
639
+ return (projectKey ? db.prepare("SELECT issue_id, project_key, project_path, workspace_type, status, created_at, updated_at FROM merge_sets WHERE project_key = ? ORDER BY updated_at DESC").all(projectKey) : db.prepare("SELECT issue_id, project_key, project_path, workspace_type, status, created_at, updated_at FROM merge_sets ORDER BY updated_at DESC").all()).map((row) => rowToMergeSet(row, loadReposForMergeSet(db, row.issue_id)));
640
+ }
641
+ /** Drop-in for deleteMergeSet() from merge-set-db.ts. */
642
+ function deleteMergeSet(issueId) {
643
+ const db = getOverdeckDatabaseSync();
644
+ db.prepare("DELETE FROM merge_set_repos WHERE issue_id = ?").run(issueId);
645
+ db.prepare("DELETE FROM merge_sets WHERE issue_id = ?").run(issueId);
646
+ }
647
+ var MERGE_SET_REPO_CAS_FAILED;
398
648
  var init_merge_sync = __esmMin((() => {
399
649
  init_infra();
650
+ init_merge_sync_time();
651
+ init_merge_sync_uat();
652
+ MERGE_SET_REPO_CAS_FAILED = /* @__PURE__ */ new Error("merge-set-repo-cas-failed");
400
653
  }));
401
654
  //#endregion
402
- export { transitionToMerging as C, setUatGenerationStackStartedAtSync as S, upsertMergeSet as T, markFailed as _, getUatGenerationSync as a, resetProcessingToQueued as b, isFlywheelGloballyPaused as c, listDuePendingAutoMerges as d, listProblemAutoMerges as f, markBlocked as g, listUatGenerationsWithStacksSync as h, getMergeSetFromDb as i, isMergeTrainEnabled as l, listUatGenerationsSync as m, getActionableAutoMerge as n, init_merge_sync as o, listUatGenerationNamesSync as p, getAllActiveQueues as r, insertUatGenerationSync as s, cancelPending as t, listActiveAutoMerges as u, markMerged as v, updateUatGenerationSync as w, scheduleAutoMergeWithResult as x, requeueToPending as y };
655
+ export { listUatGenerationsWithStacksSync as A, transitionToMerging as C, insertUatGenerationSync as D, hasUncleanedTerminalUatGenerationSync as E, setUatGenerationStackStartedAtSync as M, updateUatGenerationStatusSync as N, listUatGenerationNamesSync as O, updateUatGenerationSync as P, scheduleAutoMergeWithResult as S, getUatGenerationSync as T, markMergingBlocked as _, getAllMergeSetsFromDb as a, requeueToPending as b, isFlywheelGloballyPaused as c, listActiveAutoMerges as d, listDuePendingAutoMerges as f, markMerged as g, markFailed as h, getAllActiveQueues as i, markUatGenerationRepoPromotedSync as j, listUatGenerationsSync as k, isMergeTrainEnabled as l, markBlocked as m, deleteMergeSet as n, getMergeSetFromDb as o, listProblemAutoMerges as p, getActionableAutoMerge as r, init_merge_sync as s, cancelPending as t, isMergeTrainEnabledForProject as u, patchMergeSetRepo as v, upsertMergeSet as w, resetProcessingToQueued as x, patchMergeSetRepos as y };
403
656
 
404
- //# sourceMappingURL=merge-sync-DZ9dojJn.js.map
657
+ //# sourceMappingURL=merge-sync-CQ-LgZ1_.js.map