@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,25 +1,29 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Tn as init_projects, Vr as init_paths, ar as GitError, f as loadConfigSync, jn as loadProjectsConfigSync, mr as init_errors, pr as VcsError, t as init_config_yaml, wr as OVERDECK_HOME } from "./config-yaml-DvyMuOle.js";
3
- import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-DDlOIAML.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
5
- import { D as killSession, H as sessionExists, M as listSessionNames, i as capturePane, w as init_tmux, z as sendKeys } from "./tmux-ftABRAmc.js";
6
- import { b as setReviewStatusSync, c as getReviewStatusSync, l as init_review_status, p as markWorkspaceStuck } from "./review-status-A7quS5KJ.js";
7
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
8
- import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-B0pmAz0a.js";
9
- import { r as verifyMergedBeforeLifecycle, t as init_merge_verification } from "./merge-verification-CSizH3HY.js";
10
- import { i as init_git_utils, t as cleanupStaleLocks } from "./git-utils-BVa07a4a.js";
11
- import { i as runQualityGates, n as init_validation } from "./validation-B5JxoPUS.js";
2
+ import { Er as GitError, Fr as init_errors, Gn as init_projects, Gr as OVERDECK_HOME, Pr as VcsError, Zn as loadProjectsConfigSync, ci as init_paths, f as loadConfigSync, gr as init_issue_id, t as init_config_yaml, vr as parseIssueIdSync } from "./config-yaml-CmOPzmBb.js";
3
+ import { i as emitActivityTtsSync, o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BjuxvjdS.js";
5
+ import { D as killSession, H as sessionExists, M as listSessionNames, i as capturePane, w as init_tmux, z as sendKeys } from "./tmux-B1Wbxz5o.js";
6
+ import { S as setReviewStatusSync, T as init_pipeline, f as init_review_status, g as markWorkspaceStuck, u as getReviewStatusSync, w as capturePipelineStageForIssue } from "./review-status-yljtTd-q.js";
7
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-L0FKtjq2.js";
8
+ import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-C0nuoBGv.js";
9
+ import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population--YUXU999.js";
10
+ import { a as init_git_utils, t as cleanupStaleLocks } from "./git-utils-ameCgDdy.js";
11
+ import { i as verifyMergedBeforeLifecycle, n as init_merge_verification } from "./merge-verification-x3JO8Dtz.js";
12
+ import { n as init_merged_docker_cleanup_worker, t as enqueueMergedDockerCleanup } from "./merged-docker-cleanup-worker-CTpC27Bs.js";
13
+ import { i as runQualityGates, n as init_validation } from "./validation-VZgJxmqc.js";
14
+ import { dirname, resolve } from "node:path";
12
15
  import { Data, Effect } from "effect";
13
16
  import { appendFileSync, existsSync, mkdirSync } from "fs";
14
- import { basename, dirname, join, relative } from "path";
17
+ import { basename as basename$1, dirname as dirname$1, join as join$1, relative as relative$1 } from "path";
15
18
  import { fileURLToPath } from "url";
16
- import { writeFile } from "fs/promises";
19
+ import { mkdir, readFile, unlink, writeFile } from "node:fs/promises";
20
+ import { writeFile as writeFile$1 } from "fs/promises";
17
21
  import { exec, execFile, spawn } from "child_process";
18
22
  import { promisify } from "util";
19
23
  //#region ../../lib/cloister/merge-agent-step0.ts
20
24
  async function shouldRestartForPostMerge(repoRoot, dependencies = {}) {
21
25
  if ((await (dependencies.computeStaleness ?? (async () => {
22
- const [{ getBuildInfo }, { computeBuildStaleness }] = await Promise.all([import("./build-info-DgTqZkL5.js"), import("./staleness-Cbl_w4Bw.js")]);
26
+ const [{ getBuildInfo }, { computeBuildStaleness }] = await Promise.all([import("./build-info-BP160gU7.js"), import("./staleness-BQ-0gMYK.js")]);
23
27
  return computeBuildStaleness({
24
28
  repoRoot,
25
29
  buildCommit: getBuildInfo().buildCommit
@@ -28,15 +32,89 @@ async function shouldRestartForPostMerge(repoRoot, dependencies = {}) {
28
32
  (dependencies.log ?? console.log)("Running build already contains origin/main build inputs — skipping deploy restart");
29
33
  return false;
30
34
  }
31
- const reason = await (dependencies.getBlockReason ?? (async () => (await import("./deploy-window-CM6W1-c6.js")).getDeployBlockReason()))();
32
- if (reason) {
33
- (dependencies.log ?? console.log)(`Deploy window unsafe (${reason}) — deferring deploy to the staleness patrol`);
35
+ const assessment = await (dependencies.getWindowAssessment ?? (async () => (await import("./deploy-window-jOiPRHL0.js")).getDeployWindowAssessment()))();
36
+ if (assessment.reason) {
37
+ await (dependencies.recordIntent ?? (await import("./deploy-queue-9SrhZR63.js")).recordDeployIntent)({
38
+ requestedBy: "merge-step0",
39
+ reason: assessment.reason,
40
+ blockedBy: assessment.verifyingIssues
41
+ });
42
+ (dependencies.log ?? console.log)(`Deploy window unsafe (${assessment.reason}) — deferring deploy to the staleness patrol`);
34
43
  return false;
35
44
  }
36
45
  return true;
37
46
  }
38
47
  var init_merge_agent_step0 = __esmMin((() => {}));
39
48
  //#endregion
49
+ //#region ../../lib/cloister/post-merge-lifecycle-lock.ts
50
+ function isProcessAlive(pid) {
51
+ try {
52
+ process.kill(pid, 0);
53
+ return true;
54
+ } catch {
55
+ return false;
56
+ }
57
+ }
58
+ function isMissing(error) {
59
+ return error?.code === "ENOENT";
60
+ }
61
+ function isAlreadyExists(error) {
62
+ return error?.code === "EEXIST";
63
+ }
64
+ async function acquirePostMergeLifecycleLock(issueId) {
65
+ const parsedIssueId = parseIssueIdSync(issueId.trim());
66
+ if (!parsedIssueId) throw new Error(`Invalid issue ID for post-merge lifecycle lock: ${issueId}`);
67
+ const lockDir = resolve(OVERDECK_HOME, "locks", "post-merge-lifecycle");
68
+ const lockPath = resolve(lockDir, `${parsedIssueId.normalized.toUpperCase()}.lock`);
69
+ if (dirname(lockPath) !== lockDir) throw new Error(`Post-merge lifecycle lock escaped its lock directory: ${issueId}`);
70
+ await mkdir(lockDir, { recursive: true });
71
+ for (let attempt = 0; attempt < 2; attempt += 1) try {
72
+ await writeFile(lockPath, String(process.pid), {
73
+ flag: "wx",
74
+ mode: 384
75
+ });
76
+ let released = false;
77
+ return async () => {
78
+ if (released) return;
79
+ released = true;
80
+ try {
81
+ await unlink(lockPath);
82
+ } catch (error) {
83
+ if (!isMissing(error)) throw error;
84
+ }
85
+ };
86
+ } catch (error) {
87
+ if (!isAlreadyExists(error)) throw error;
88
+ let ownerPid;
89
+ try {
90
+ ownerPid = Number.parseInt((await readFile(lockPath, "utf-8")).trim(), 10);
91
+ } catch (readError) {
92
+ if (isMissing(readError)) continue;
93
+ return null;
94
+ }
95
+ if (!Number.isInteger(ownerPid) || ownerPid <= 0 || isProcessAlive(ownerPid)) return null;
96
+ try {
97
+ await unlink(lockPath);
98
+ } catch (unlinkError) {
99
+ if (!isMissing(unlinkError)) return null;
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+ async function withPostMergeLifecycleLock(issueId, run) {
105
+ const release = await acquirePostMergeLifecycleLock(issueId);
106
+ if (!release) throw new Error(`postMergeLifecycle already running in another process for ${issueId}`);
107
+ try {
108
+ return await run();
109
+ } finally {
110
+ await release();
111
+ }
112
+ }
113
+ var init_post_merge_lifecycle_lock = __esmMin((() => {
114
+ init_issue_id();
115
+ init_paths();
116
+ }));
117
+ //#endregion
40
118
  //#region ../../lib/cloister/sync-main-git.ts
41
119
  function killCommandTree(child) {
42
120
  if (!child?.pid) return;
@@ -206,6 +284,59 @@ var init_sync_main_git = __esmMin((() => {
206
284
  execDetached = exec;
207
285
  }));
208
286
  //#endregion
287
+ //#region ../../lib/cloister/sync-main-workspace.ts
288
+ async function syncMainAcrossWorkspaceRepos(projectPath, issueId, signal, syncRepo, logActivity) {
289
+ console.log(`[sync-main] Starting sync of main into workspace for ${issueId}`);
290
+ logActivity("sync_main_start", `Starting sync for ${issueId}`);
291
+ const roots = resolveWorkspaceRepoRootsSync(issueId, projectPath);
292
+ const repos = [];
293
+ let failedRepoKey;
294
+ for (const root of roots) {
295
+ if (failedRepoKey) {
296
+ repos.push({
297
+ repoKey: root.repoKey,
298
+ success: false,
299
+ skipped: true,
300
+ reason: `[${root.repoKey}] Skipped because sync failed in ${failedRepoKey}`
301
+ });
302
+ continue;
303
+ }
304
+ if (root.isPolyrepo) {
305
+ console.log(`[sync-main] [${root.repoKey}] Syncing origin/${root.targetBranch}`);
306
+ logActivity("sync_main_repo_start", `[${root.repoKey}] Syncing origin/${root.targetBranch}`);
307
+ }
308
+ const result = await syncRepo(root.dir, issueId, root.targetBranch, signal);
309
+ const prefixPaths = (paths) => root.isPolyrepo && paths ? paths.map((path) => `${root.repoKey}/${path}`) : paths;
310
+ const repoResult = {
311
+ ...result,
312
+ repoKey: root.repoKey
313
+ };
314
+ if (result.changedFiles !== void 0) repoResult.changedFiles = prefixPaths(result.changedFiles);
315
+ if (result.conflictFiles !== void 0) repoResult.conflictFiles = prefixPaths(result.conflictFiles);
316
+ if (result.reason && root.isPolyrepo) repoResult.reason = `[${root.repoKey}] ${result.reason}`;
317
+ repos.push(repoResult);
318
+ if (!result.success) failedRepoKey = root.repoKey;
319
+ }
320
+ const completedRepos = repos.filter((repo) => !repo.skipped);
321
+ const changedFiles = completedRepos.flatMap((repo) => repo.changedFiles ?? []);
322
+ const conflictFiles = completedRepos.flatMap((repo) => repo.conflictFiles ?? []);
323
+ const countedRepos = completedRepos.filter((repo) => repo.commitCount !== void 0);
324
+ const failedRepo = completedRepos.find((repo) => !repo.success);
325
+ const aggregate = {
326
+ success: !failedRepo,
327
+ repos
328
+ };
329
+ if (completedRepos.length > 0 && completedRepos.every((repo) => repo.alreadyUpToDate === true)) aggregate.alreadyUpToDate = true;
330
+ if (countedRepos.length > 0) aggregate.commitCount = countedRepos.reduce((sum, repo) => sum + (repo.commitCount ?? 0), 0);
331
+ if (completedRepos.some((repo) => repo.changedFiles !== void 0)) aggregate.changedFiles = changedFiles;
332
+ if (completedRepos.some((repo) => repo.conflictFiles !== void 0)) aggregate.conflictFiles = conflictFiles;
333
+ if (failedRepo?.reason) aggregate.reason = failedRepo.reason;
334
+ return aggregate;
335
+ }
336
+ var init_sync_main_workspace = __esmMin((() => {
337
+ init_project_repos();
338
+ }));
339
+ //#endregion
209
340
  //#region ../../lib/overdeck/git-activity.ts
210
341
  function overdeckDb() {
211
342
  return getOverdeckDatabaseSync();
@@ -569,7 +700,7 @@ async function autoCommitWorkspaceChangesBeforeSync(projectPath, issueId, signal
569
700
  async function notifyTldrDaemon(projectPath, _sourceBranch) {
570
701
  try {
571
702
  console.log(`[merge-agent] Notifying TLDR daemon to reindex changed files...`);
572
- const venvPath = join(projectPath, ".venv");
703
+ const venvPath = join$1(projectPath, ".venv");
573
704
  if (!existsSync(venvPath)) {
574
705
  console.log(`[merge-agent] No .venv found, skipping TLDR notification`);
575
706
  return;
@@ -599,7 +730,7 @@ async function notifyTldrDaemon(projectPath, _sourceBranch) {
599
730
  return;
600
731
  }
601
732
  console.log(`[merge-agent] Found ${changedFiles.length} changed source files to reindex`);
602
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-DL566HbH.js");
733
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BKOYB616.js");
603
734
  const tldrService = getTldrDaemonServiceSync(projectPath, venvPath);
604
735
  if (!(await tldrService.getStatus()).running) {
605
736
  console.log(`[merge-agent] TLDR daemon not running, skipping notification`);
@@ -618,7 +749,8 @@ function shellQuote(value) {
618
749
  return `'${value.replace(/'/g, `'"'"'`)}'`;
619
750
  }
620
751
  async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
621
- if (_completedPostMerge.has(issueId)) {
752
+ if (_completedPostMerge.has(issueId) || getReviewStatusSync(issueId)?.mergeStep === "merged") {
753
+ _completedPostMerge.add(issueId);
622
754
  console.log(`[merge-agent] postMergeLifecycle already completed for ${issueId}, skipping`);
623
755
  return;
624
756
  }
@@ -627,9 +759,14 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
627
759
  console.log(`[merge-agent] postMergeLifecycle already running for ${issueId}, joining in-flight run`);
628
760
  return inFlight;
629
761
  }
630
- const run = (async () => {
762
+ const run = withPostMergeLifecycleLock(issueId, async () => {
763
+ if (_completedPostMerge.has(issueId) || getReviewStatusSync(issueId)?.mergeStep === "merged") {
764
+ _completedPostMerge.add(issueId);
765
+ console.log(`[merge-agent] postMergeLifecycle completed while waiting for ${issueId}, skipping`);
766
+ return;
767
+ }
631
768
  try {
632
- const { findSpecByIssue } = await import("./specs-nN45DG2X.js");
769
+ const { findSpecByIssue } = await import("./specs-Bt7WJDoC.js");
633
770
  const spec = await Effect.runPromise(findSpecByIssue(projectPath, issueId));
634
771
  if (spec && (spec.status === "completed" || spec.status === "cancelled")) {
635
772
  console.log(`[merge-agent] ${issueId} is closed out (spec ${spec.status}) — skipping post-merge lifecycle`);
@@ -646,6 +783,7 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
646
783
  try {
647
784
  setReviewStatusSync(issueId, {
648
785
  mergeStatus: "merged",
786
+ mergeStep: "post-merge-cleanup",
649
787
  readyForMerge: false,
650
788
  ...options?.markReviewPassed ? { reviewStatus: "passed" } : {}
651
789
  });
@@ -653,17 +791,32 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
653
791
  } catch (err) {
654
792
  console.warn(`[merge-agent] Could not set mergeStatus: ${err.message}`);
655
793
  }
794
+ let dockerRetryReason = null;
795
+ try {
796
+ const { teardownWorkspaceDockerByNamePromise } = await import("./docker-BMVTSFL5.js");
797
+ const teardown = await teardownWorkspaceDockerByNamePromise(issueId.toLowerCase());
798
+ if (teardown.networkRemoved) {
799
+ console.log(`[merge-agent] ✓ Removed Docker stack/network: ${teardown.steps.join("; ")}`);
800
+ logActivity("docker_cleanup", `Removed Docker stack/network for ${issueId}: ${teardown.steps.join("; ")}`);
801
+ } else dockerRetryReason = teardown.steps.join("; ") || "network remained after teardown";
802
+ } catch (err) {
803
+ dockerRetryReason = err instanceof Error ? err.message : String(err);
804
+ }
805
+ if (dockerRetryReason) {
806
+ enqueueMergedDockerCleanup(issueId, { mergeVerified: true });
807
+ console.warn(`[merge-agent] Docker cleanup queued for retry (non-fatal): ${dockerRetryReason}`);
808
+ }
656
809
  if (!options?.skipDeploy) {
657
- const pendingFile = join(OVERDECK_HOME, "pending-post-merge.json");
810
+ const pendingFile = join$1(OVERDECK_HOME, "pending-post-merge.json");
658
811
  let repoRoot = __dirname.includes("/src/") ? __dirname.replace(/\/src\/.*$/, "") : __dirname.replace(/\/dist\/.*$/, "").replace(/\/lib\/.*$/, "");
659
812
  const wsMatch = repoRoot.match(/^(.+)\/workspaces\/feature-[^/]+$/);
660
813
  if (wsMatch) {
661
814
  repoRoot = wsMatch[1];
662
815
  console.log(`[merge-agent] Resolved workspace repoRoot to main repo: ${repoRoot}`);
663
816
  }
664
- const deployScript = join(repoRoot, "scripts", "post-merge-deploy.sh");
817
+ const deployScript = join$1(repoRoot, "scripts", "post-merge-deploy.sh");
665
818
  if (await shouldRestartForPostMerge(repoRoot)) try {
666
- await writeFile(pendingFile, JSON.stringify({
819
+ await writeFile$1(pendingFile, JSON.stringify({
667
820
  issueId,
668
821
  projectPath,
669
822
  sourceBranch: sourceBranch ?? "",
@@ -691,7 +844,7 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
691
844
  }
692
845
  console.log(`[merge-agent] Running post-merge verify handoff for ${issueId}`);
693
846
  try {
694
- const { cleanupMergedLabels } = await import("./label-cleanup-BKPJm4Hv.js");
847
+ const { cleanupMergedLabels } = await import("./label-cleanup-Dv7AV_R1.js");
695
848
  const ghResolved = resolveGitHubIssueSync(issueId);
696
849
  const labelCtx = ghResolved.isGitHub ? {
697
850
  issueId,
@@ -725,7 +878,8 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
725
878
  console.warn(`[merge-agent] Could not transition issue to verifying_on_main: ${message}`);
726
879
  try {
727
880
  setReviewStatusSync(issueId, {
728
- mergeStatus: "failed",
881
+ mergeStatus: "merged",
882
+ mergeStep: "post-merge-cleanup",
729
883
  readyForMerge: false,
730
884
  mergeNotes: `Post-merge verifying_on_main transition failed: ${message}`
731
885
  });
@@ -740,8 +894,8 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
740
894
  console.warn(`[merge-agent] Async post-merge release trigger failed for ${issueId}: ${err instanceof Error ? err.message : String(err)}`);
741
895
  });
742
896
  try {
743
- const { setAgentPaused, getAgentState } = await import("./agents-FlIgQ3ql.js");
744
- const { killSession, sessionExists } = await import("./tmux-DoThH6aj.js");
897
+ const { setAgentPaused, getAgentState } = await import("./agents-BKKkxKgK.js");
898
+ const { killSession, sessionExists } = await import("./tmux-DQ6jB76i.js");
745
899
  const issueLower = issueId.toLowerCase();
746
900
  const reason = "awaiting close-out (verify on main)";
747
901
  for (const agentId of [`agent-${issueLower}`, `planning-${issueLower}`]) {
@@ -766,8 +920,8 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
766
920
  console.warn(`[merge-agent] Could not pause or kill agent sessions: ${err}`);
767
921
  }
768
922
  try {
769
- const { killAllReviewerSessions } = await import("./review-agent-DJRO8EG8.js");
770
- const { resolveProjectFromIssueSync } = await import("./projects-9SkRpES9.js");
923
+ const { killAllReviewerSessions } = await import("./review-agent-CD4RCI0Y.js");
924
+ const { resolveProjectFromIssueSync } = await import("./projects-B03Wr-xc.js");
771
925
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
772
926
  if (projectKey) {
773
927
  const { killed } = await Effect.runPromise(killAllReviewerSessions(projectKey, issueId));
@@ -781,10 +935,10 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
781
935
  }
782
936
  await killPostMergeRoleSessions(issueId);
783
937
  try {
784
- const { createResetMarker } = await import("./cli-BsVIHwzC.js");
938
+ const { createResetMarker } = await import("./cli-DmXETsw-.js");
785
939
  const timestamp = (/* @__PURE__ */ new Date()).toISOString();
786
940
  const marker = await createResetMarker({
787
- projectId: basename(projectPath),
941
+ projectId: basename$1(projectPath),
788
942
  scope: "workspace",
789
943
  scopeId: `feature-${issueId.toLowerCase()}`,
790
944
  reason: "post-merge cleanup",
@@ -795,28 +949,19 @@ async function postMergeLifecycle(issueId, projectPath, sourceBranch, options) {
795
949
  } catch (err) {
796
950
  console.warn(`[merge-agent] Memory reset marker creation failed (non-fatal): ${err}`);
797
951
  }
798
- try {
799
- const { findWorkspacePath } = await import("./archive-planning-zkJb3BeM.js");
800
- const { stopWorkspaceDocker } = await import("./workspace-manager-ZTdJAy9M.js");
801
- const issueLower = issueId.toLowerCase();
802
- const workspacePath = findWorkspacePath(projectPath, issueLower);
803
- if (workspacePath) {
804
- const dockerResult = await Effect.runPromise(stopWorkspaceDocker(workspacePath, issueLower));
805
- if (dockerResult.containersFound) {
806
- console.log(`[merge-agent] ✓ Stopped Docker containers: ${dockerResult.steps.join("; ")}`);
807
- logActivity("docker_cleanup", `Stopped Docker for ${issueId}: ${dockerResult.steps.join("; ")}`);
808
- }
809
- }
810
- } catch (err) {
811
- console.warn(`[merge-agent] Docker cleanup failed (non-fatal): ${err}`);
812
- }
813
952
  await notifyTldrDaemon(projectPath, sourceBranch ?? "");
814
953
  await maybeSpawnPostMergeKnowledgeRetro(issueId, projectPath);
954
+ setReviewStatusSync(issueId, {
955
+ mergeStatus: "merged",
956
+ mergeStep: "merged",
957
+ readyForMerge: false
958
+ });
815
959
  _completedPostMerge.add(issueId);
960
+ capturePipelineStageForIssue(issueId, "merged");
816
961
  console.log(`[merge-agent] Post-merge handoff completed for ${issueId}. Awaiting close-out (verify on main).`);
817
962
  announceMerge("completed", issueId);
818
963
  logActivity("merge_complete", `Merged ${issueId}. Awaiting close-out (verify on main).`);
819
- })().finally(() => {
964
+ }).finally(() => {
820
965
  _postMergeInFlight.delete(issueId);
821
966
  });
822
967
  _postMergeInFlight.set(issueId, run);
@@ -828,7 +973,7 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
828
973
  console.log(`[merge-agent] Release already started or completed for ${issueId} (${currentStatus}), skipping`);
829
974
  return;
830
975
  }
831
- const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-9SkRpES9.js");
976
+ const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-B03Wr-xc.js");
832
977
  const resolved = resolveProjectFromIssueSync(issueId);
833
978
  if (!(resolved ? getProjectSync(resolved.projectKey) : null)?.release) {
834
979
  setReviewStatusSync(issueId, {
@@ -838,7 +983,7 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
838
983
  console.log(`[merge-agent] No release config for ${issueId}; marked release skipped`);
839
984
  return;
840
985
  }
841
- const { runRelease } = await import("./release-engine-DZpmGGzb.js");
986
+ const { runRelease } = await import("./release-engine-lPUp-MTd.js");
842
987
  try {
843
988
  await runRelease(issueId, projectPath);
844
989
  } catch (err) {
@@ -857,10 +1002,10 @@ async function triggerPostMergeReleaseIfConfigured(issueId, projectPath) {
857
1002
  async function transitionIssueToVerifyingOnMain(issueId, projectPath) {
858
1003
  const [effectModule, issueLifecycleModule, githubModule, linearModule, rallyModule, errorsModule] = await Promise.all([
859
1004
  import("effect"),
860
- import("./issue-lifecycle-Dy4vd0Oa.js"),
861
- import("./github-client-B4QsdE-X.js"),
862
- import("./linear-client-DqhDQO9k.js"),
863
- import("./rally-client-CULK2XAY.js"),
1005
+ import("./issue-lifecycle-9gk3fnXN.js"),
1006
+ import("./github-client-Cj0yl_07.js"),
1007
+ import("./linear-client-CY4O_Tu3.js"),
1008
+ import("./rally-client-CxsA6ExK.js"),
864
1009
  import("./typed-errors-BHhE85Ul.js")
865
1010
  ]);
866
1011
  const { Effect, Layer } = effectModule;
@@ -1091,7 +1236,7 @@ async function getConflictFiles(projectPath, signal) {
1091
1236
  return [];
1092
1237
  }
1093
1238
  }
1094
- async function resolveMainPreferredSyncConflicts(projectPath, conflictFiles, signal) {
1239
+ async function resolveMainPreferredSyncConflicts(projectPath, conflictFiles, targetBranch, signal) {
1095
1240
  if (conflictFiles.length === 0 || !conflictFiles.every(isSyncMainMainPreferredPath)) return {
1096
1241
  success: false,
1097
1242
  reason: "conflicts include non-pipeline-owned files"
@@ -1104,10 +1249,10 @@ async function resolveMainPreferredSyncConflicts(projectPath, conflictFiles, sig
1104
1249
  try {
1105
1250
  for (const path of SYNC_MAIN_MAIN_PREFERRED_PATHS) {
1106
1251
  await run(`git rm -r --quiet --ignore-unmatch -- ${path}`);
1107
- await run(`git checkout origin/main -- ${path}`).catch((error) => {
1252
+ await run(`git checkout origin/${targetBranch} -- ${path}`).catch((error) => {
1108
1253
  if (isSyncGitTermination(error)) throw error;
1109
1254
  });
1110
- await run(`git add -A -- ${path}`);
1255
+ if ((await run(`git ls-files -- ${path}`)).stdout.trim()) await run(`git add -A -- ${path}`);
1111
1256
  }
1112
1257
  const remainingConflicts = await getConflictFiles(projectPath, signal);
1113
1258
  if (remainingConflicts.length > 0) return {
@@ -1344,11 +1489,9 @@ async function collectSyncMergeStats(projectPath, signal) {
1344
1489
  *
1345
1490
  * Auto-commits any uncommitted changes before merging (with safety verification).
1346
1491
  */
1347
- async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1348
- console.log(`[sync-main] Starting sync of main into workspace for ${issueId}`);
1349
- logActivity("sync_main_start", `Starting sync for ${issueId}`);
1492
+ async function syncMainIntoRepo(repoDir, issueId, targetBranch, signal) {
1350
1493
  const run = (command, timeout = SYNC_GIT_STATUS_TIMEOUT_MS) => runSyncGitCommand(command, {
1351
- cwd: projectPath,
1494
+ cwd: repoDir,
1352
1495
  timeout,
1353
1496
  signal
1354
1497
  });
@@ -1356,7 +1499,7 @@ async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1356
1499
  try {
1357
1500
  console.log(`[sync-main] Checking for uncommitted changes...`);
1358
1501
  logActivity("sync_main_auto_commit", `Auto-committing uncommitted changes before sync`);
1359
- const autoCommit = await autoCommitWorkspaceChangesBeforeSync(projectPath, issueId, signal);
1502
+ const autoCommit = await autoCommitWorkspaceChangesBeforeSync(repoDir, issueId, signal);
1360
1503
  if (!autoCommit.success) {
1361
1504
  const message = autoCommit.reason || "Failed to auto-commit uncommitted changes";
1362
1505
  console.error(`[sync-main] ${message}`);
@@ -1380,7 +1523,7 @@ async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1380
1523
  }
1381
1524
  }
1382
1525
  try {
1383
- const lockCleanup = await Effect.runPromise(cleanupStaleLocks(projectPath, {
1526
+ const lockCleanup = await Effect.runPromise(cleanupStaleLocks(repoDir, {
1384
1527
  signal,
1385
1528
  processProbeTimeoutMs: SYNC_GIT_STATUS_TIMEOUT_MS
1386
1529
  }));
@@ -1407,21 +1550,21 @@ async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1407
1550
  reason: message
1408
1551
  };
1409
1552
  }
1410
- console.log(`[sync-main] Fetching origin/main...`);
1553
+ console.log(`[sync-main] Fetching origin/${targetBranch}...`);
1411
1554
  try {
1412
- await run("git fetch origin main", SYNC_GIT_FETCH_TIMEOUT_MS);
1555
+ await run(`git fetch origin ${targetBranch}`, SYNC_GIT_FETCH_TIMEOUT_MS);
1413
1556
  } catch (error) {
1414
1557
  if (isSyncGitTermination(error)) throw error;
1415
1558
  return {
1416
1559
  success: false,
1417
- reason: `Failed to fetch origin/main: ${error.message}`
1560
+ reason: `Failed to fetch origin/${targetBranch}: ${error.message}`
1418
1561
  };
1419
1562
  }
1420
1563
  let mergeOutput = "";
1421
1564
  let hasConflicts = false;
1422
1565
  try {
1423
1566
  mergeStarted = true;
1424
- const result = await run("git merge origin/main", SYNC_GIT_MERGE_TIMEOUT_MS);
1567
+ const result = await run(`git merge origin/${targetBranch}`, SYNC_GIT_MERGE_TIMEOUT_MS);
1425
1568
  mergeStarted = false;
1426
1569
  mergeOutput = (result.stdout || "") + (result.stderr || "");
1427
1570
  } catch (error) {
@@ -1431,7 +1574,7 @@ async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1431
1574
  }
1432
1575
  if (mergeOutput.includes("Already up to date") || mergeOutput.includes("Already up-to-date")) {
1433
1576
  console.log(`[sync-main] Already up to date`);
1434
- logActivity("sync_main_noop", `${issueId} already up to date with main`);
1577
+ logActivity("sync_main_noop", `${issueId} already up to date with ${targetBranch}`);
1435
1578
  return {
1436
1579
  success: true,
1437
1580
  alreadyUpToDate: true
@@ -1439,25 +1582,25 @@ async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1439
1582
  }
1440
1583
  if (!hasConflicts) {
1441
1584
  console.log(`[sync-main] Clean merge completed`);
1442
- logActivity("sync_main_success", `Clean merge of main into ${issueId}`);
1585
+ logActivity("sync_main_success", `Clean merge of ${targetBranch} into ${issueId}`);
1443
1586
  return {
1444
1587
  success: true,
1445
- ...await collectSyncMergeStats(projectPath, signal)
1588
+ ...await collectSyncMergeStats(repoDir, signal)
1446
1589
  };
1447
1590
  }
1448
- const conflictFiles = await getConflictFiles(projectPath, signal);
1449
- if ((await resolveMainPreferredSyncConflicts(projectPath, conflictFiles, signal)).success) {
1591
+ const conflictFiles = await getConflictFiles(repoDir, signal);
1592
+ if ((await resolveMainPreferredSyncConflicts(repoDir, conflictFiles, targetBranch, signal)).success) {
1450
1593
  mergeStarted = false;
1451
- console.log(`[sync-main] Auto-resolved ${conflictFiles.length} pipeline-owned conflict(s) with origin/main`);
1452
- logActivity("sync_main_auto_resolved_conflicts", `Auto-resolved ${conflictFiles.length} pipeline-owned conflict(s) in ${issueId} with origin/main`);
1594
+ console.log(`[sync-main] Auto-resolved ${conflictFiles.length} pipeline-owned conflict(s) with origin/${targetBranch}`);
1595
+ logActivity("sync_main_auto_resolved_conflicts", `Auto-resolved ${conflictFiles.length} pipeline-owned conflict(s) in ${issueId} with origin/${targetBranch}`);
1453
1596
  return {
1454
1597
  success: true,
1455
- ...await collectSyncMergeStats(projectPath, signal)
1598
+ ...await collectSyncMergeStats(repoDir, signal)
1456
1599
  };
1457
1600
  }
1458
1601
  console.log(`[sync-main] ${conflictFiles.length} conflict(s); aborting merge for manual resolution`);
1459
1602
  logActivity("sync_main_conflicts", `${conflictFiles.length} conflict(s) in ${issueId}: ${conflictFiles.join(", ")}`);
1460
- await ensureSyncGitQuiescent(projectPath, true);
1603
+ await ensureSyncGitQuiescent(repoDir, true);
1461
1604
  mergeStarted = false;
1462
1605
  return {
1463
1606
  success: false,
@@ -1466,13 +1609,16 @@ async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1466
1609
  };
1467
1610
  } catch (error) {
1468
1611
  if (!isSyncGitTermination(error)) throw error;
1469
- await ensureSyncGitQuiescent(projectPath, mergeStarted);
1612
+ await ensureSyncGitQuiescent(repoDir, mergeStarted);
1470
1613
  return {
1471
1614
  success: false,
1472
1615
  reason: error instanceof SyncGitCommandTimeoutError ? error.message : "Sync-main cancelled after reaching its preparation deadline"
1473
1616
  };
1474
1617
  }
1475
1618
  }
1619
+ async function syncMainIntoWorkspace(projectPath, issueId, signal) {
1620
+ return syncMainAcrossWorkspaceRepos(projectPath, issueId, signal, syncMainIntoRepo, logActivity);
1621
+ }
1476
1622
  /**
1477
1623
  * Look up and run quality gates for the project at projectPath.
1478
1624
  * Returns empty array if no quality gates are configured.
@@ -1489,8 +1635,8 @@ async function runProjectQualityGates(projectPath, phase) {
1489
1635
  console.log(`[merge-agent] No quality gates configured for ${projectPath}`);
1490
1636
  return [];
1491
1637
  }
1492
- const repoRelPath = relative(project.path, projectPath);
1493
- const matchedRepo = project.workspace?.repos?.find((repo) => repoRelPath === repo.path || projectPath === join(project.path, repo.path));
1638
+ const repoRelPath = relative$1(project.path, projectPath);
1639
+ const matchedRepo = project.workspace?.repos?.find((repo) => repoRelPath === repo.path || projectPath === join$1(project.path, repo.path));
1494
1640
  const repoIdentifiers = matchedRepo ? new Set([matchedRepo.path, matchedRepo.name]) : new Set(repoRelPath && !repoRelPath.startsWith("..") ? [repoRelPath] : []);
1495
1641
  let gatesToRun = project.quality_gates;
1496
1642
  if (repoRelPath && !repoRelPath.startsWith("..")) {
@@ -1515,7 +1661,11 @@ var init_merge_agent = __esmMin((() => {
1515
1661
  init_activity_logger();
1516
1662
  init_config_yaml();
1517
1663
  init_merge_agent_step0();
1664
+ init_pipeline();
1665
+ init_merged_docker_cleanup_worker();
1666
+ init_post_merge_lifecycle_lock();
1518
1667
  init_sync_main_git();
1668
+ init_sync_main_workspace();
1519
1669
  init_paths();
1520
1670
  init_tracker_utils();
1521
1671
  init_validation();
@@ -1541,9 +1691,9 @@ var init_merge_agent = __esmMin((() => {
1541
1691
  ".overdeck/"
1542
1692
  ];
1543
1693
  SYNC_MAIN_MAIN_PREFERRED_PATHS = [".pan/continues", ".pan/specs"];
1544
- __dirname = dirname(fileURLToPath(import.meta.url));
1545
- MERGE_HISTORY_DIR = join(join(OVERDECK_HOME, "specialists"), "merge-agent");
1546
- MERGE_HISTORY_FILE = join(MERGE_HISTORY_DIR, "history.jsonl");
1694
+ __dirname = dirname$1(fileURLToPath(import.meta.url));
1695
+ MERGE_HISTORY_DIR = join$1(join$1(OVERDECK_HOME, "specialists"), "merge-agent");
1696
+ MERGE_HISTORY_FILE = join$1(MERGE_HISTORY_DIR, "history.jsonl");
1547
1697
  _completedPostMerge = /* @__PURE__ */ new Set();
1548
1698
  _postMergeInFlight = /* @__PURE__ */ new Map();
1549
1699
  GIT_PATTERNS = [
@@ -1592,4 +1742,4 @@ var init_merge_agent = __esmMin((() => {
1592
1742
  //#endregion
1593
1743
  export { init_operations as C, gitPush as S, listGitOperationsSync as T, scanGitPatterns as _, init_merge_agent as a, triggerPostMergeReleaseIfConfigured as b, isSyncMainMainPreferredPath as c, parseAgentOutput as d, postMergeLifecycle as f, scanForConflictMarkers as g, salvageStrandedMerge as h, captureTmuxOutput as i, logMergeHistory as l, runProjectQualityGates as m, GIT_PATTERNS as n, isAutoCommitExcludedPath as o, resetPostMergeState as p, autoCommitWorkspaceChangesBeforeSync as r, isMergeAgentRunning as s, AUTO_COMMIT_EXCLUDED_PATHS as t, notifyTldrDaemon as u, sendMessageToAgent as v, init_git_activity as w, MainDivergedError as x, syncMainIntoWorkspace as y };
1594
1744
 
1595
- //# sourceMappingURL=merge-agent-XrB80vfT.js.map
1745
+ //# sourceMappingURL=merge-agent-DdMVSV2Y.js.map
@@ -1,3 +1,3 @@
1
- import { _ as scanGitPatterns, a as init_merge_agent, b as triggerPostMergeReleaseIfConfigured, c as isSyncMainMainPreferredPath, d as parseAgentOutput, f as postMergeLifecycle, g as scanForConflictMarkers, h as salvageStrandedMerge, i as captureTmuxOutput, l as logMergeHistory, m as runProjectQualityGates, n as GIT_PATTERNS, o as isAutoCommitExcludedPath, p as resetPostMergeState, r as autoCommitWorkspaceChangesBeforeSync, s as isMergeAgentRunning, t as AUTO_COMMIT_EXCLUDED_PATHS, u as notifyTldrDaemon, v as sendMessageToAgent, y as syncMainIntoWorkspace } from "./merge-agent-XrB80vfT.js";
1
+ import { _ as scanGitPatterns, a as init_merge_agent, b as triggerPostMergeReleaseIfConfigured, c as isSyncMainMainPreferredPath, d as parseAgentOutput, f as postMergeLifecycle, g as scanForConflictMarkers, h as salvageStrandedMerge, i as captureTmuxOutput, l as logMergeHistory, m as runProjectQualityGates, n as GIT_PATTERNS, o as isAutoCommitExcludedPath, p as resetPostMergeState, r as autoCommitWorkspaceChangesBeforeSync, s as isMergeAgentRunning, t as AUTO_COMMIT_EXCLUDED_PATHS, u as notifyTldrDaemon, v as sendMessageToAgent, y as syncMainIntoWorkspace } from "./merge-agent-DdMVSV2Y.js";
2
2
  init_merge_agent();
3
3
  export { AUTO_COMMIT_EXCLUDED_PATHS, GIT_PATTERNS, autoCommitWorkspaceChangesBeforeSync, captureTmuxOutput, isAutoCommitExcludedPath, isMergeAgentRunning, isSyncMainMainPreferredPath, logMergeHistory, notifyTldrDaemon, parseAgentOutput, postMergeLifecycle, resetPostMergeState, runProjectQualityGates, salvageStrandedMerge, scanForConflictMarkers, scanGitPatterns, sendMessageToAgent, syncMainIntoWorkspace, triggerPostMergeReleaseIfConfigured };
@@ -44,4 +44,4 @@ async function shipMergeBatch(issueIds, deps) {
44
44
  //#endregion
45
45
  export { shipMergeBatch };
46
46
 
47
- //# sourceMappingURL=merge-batch-Bwoyr8Je.js.map
47
+ //# sourceMappingURL=merge-batch-C5q1c1GX.js.map