@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,11 +1,11 @@
1
1
  import { n as __esmMin, r as __exportAll } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Tn as init_projects, f as loadConfigSync, t as init_config_yaml, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
2
+ import { Gn as init_projects, ar as resolveProjectFromIssueSync, f as loadConfigSync, t as init_config_yaml } from "./config-yaml-CmOPzmBb.js";
3
3
  import { n as openDatabase, t as init_driver } from "./driver-CKVGi51s.js";
4
- import { f as loadReviewStatusesForIssues, l as init_review_status } from "./review-status-A7quS5KJ.js";
5
- import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-B4itFzDo.js";
6
- import { n as init_dist_src, t as Octokit } from "./dist-src-BSoS7mkd.js";
7
- import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-BL_-3Yt8.js";
8
- import { o as init_io, p as readWorkspacePlan, r as findPlan } from "./io-B3_AHDfr.js";
4
+ import { f as init_review_status, h as loadReviewStatusesForIssues } from "./review-status-yljtTd-q.js";
5
+ import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-DZ8Zn2nQ.js";
6
+ import { n as init_dist_src, t as Octokit } from "./dist-src-Bik83hFi.js";
7
+ import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-BVldLhBf.js";
8
+ import { o as init_io, p as readWorkspacePlan, r as findPlan } from "./io-VHvc0Ssp.js";
9
9
  import { Effect } from "effect";
10
10
  import { existsSync } from "fs";
11
11
  import { join } from "path";
@@ -865,7 +865,7 @@ var init_issue_data_service = __esmMin((() => {
865
865
  async ensureShadowStateLoaded() {
866
866
  if (this.shadowStateModule) return;
867
867
  try {
868
- this.shadowStateModule = await import("./shadow-state-C2_epgx2.js");
868
+ this.shadowStateModule = await import("./shadow-state-FV6PHfEW.js");
869
869
  await this.refreshShadowStatesCache();
870
870
  } catch {}
871
871
  }
@@ -1408,8 +1408,8 @@ var init_issue_data_service = __esmMin((() => {
1408
1408
  }
1409
1409
  if (!this.cache.isStale("rally", "issues") && this.trackers.rally.lastFetchedIssues.length > 0) return;
1410
1410
  try {
1411
- const { RallyTracker } = await import("./rally-njs_mJrt.js");
1412
- const { findProjectsByRallyProject } = await import("./projects-9SkRpES9.js");
1411
+ const { RallyTracker } = await import("./rally-YDjU513q.js");
1412
+ const { findProjectsByRallyProject } = await import("./projects-B03Wr-xc.js");
1413
1413
  const rallyProjects = findProjectsByRallyProject();
1414
1414
  let allFormatted = [];
1415
1415
  if (rallyProjects.length > 0) {
@@ -1504,4 +1504,4 @@ var init_issue_service_singleton = __esmMin((() => {
1504
1504
  //#endregion
1505
1505
  export { CacheService as a, startSharedIssueService as i, init_issue_service_singleton as n, init_cache_service as o, issue_service_singleton_exports as r, parseIntegerHeader as s, getSharedIssueService as t };
1506
1506
 
1507
- //# sourceMappingURL=issue-service-singleton-B5ushCvE.js.map
1507
+ //# sourceMappingURL=issue-service-singleton-DmCh7EHj.js.map
@@ -1,3 +1,3 @@
1
- import { i as startSharedIssueService, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-B5ushCvE.js";
1
+ import { i as startSharedIssueService, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-DmCh7EHj.js";
2
2
  init_issue_service_singleton();
3
3
  export { getSharedIssueService, startSharedIssueService };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-CzaSOgul.js";
2
+ import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-BjuxvjdS.js";
3
3
  import { Context, Effect, Layer, Schema } from "effect";
4
4
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
5
5
  //#region ../../lib/overdeck/issues.ts
@@ -350,4 +350,4 @@ var init_issues = __esmMin((() => {
350
350
  //#endregion
351
351
  export { init_issues as n, IssueId as t };
352
352
 
353
- //# sourceMappingURL=issues-B6ToV6x1.js.map
353
+ //# sourceMappingURL=issues-CgnQ1OGQ.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Nr as encodeClaudeProjectDir, Vr as init_paths, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Ca0YTWDw.js";
2
+ import { Fr as init_errors, ci as init_paths, ei as encodeClaudeProjectDir } from "./config-yaml-CmOPzmBb.js";
3
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Bgcub5kW.js";
4
4
  import "effect";
5
5
  import { existsSync, readFileSync, readdirSync, statSync } from "fs";
6
6
  import { basename, join } from "path";
@@ -63,7 +63,8 @@ function normalizeModelName(model) {
63
63
  if (model.includes("claude")) {
64
64
  let normalizedModel = model;
65
65
  if (model.includes("fable-5") || model.includes("fable.5") || model.includes("fable")) normalizedModel = "claude-fable-5";
66
- if (model.includes("opus-4-8") || model.includes("opus-4.8")) normalizedModel = "claude-opus-4-8";
66
+ if (model.includes("opus-5") || model.includes("opus.5")) normalizedModel = "claude-opus-5";
67
+ else if (model.includes("opus-4-8") || model.includes("opus-4.8")) normalizedModel = "claude-opus-4-8";
67
68
  else if (model.includes("opus-4-7") || model.includes("opus-4.7")) normalizedModel = "claude-opus-4-7";
68
69
  else if (model.includes("opus-4-6") || model.includes("opus-4.6")) normalizedModel = "claude-opus-4-6";
69
70
  else if (model.includes("opus-4-1") || model.includes("opus-4.1")) normalizedModel = "claude-opus-4-1";
@@ -242,4 +243,4 @@ var init_jsonl_parser = __esmMin((() => {
242
243
  //#endregion
243
244
  export { init_jsonl_parser as a, getSessionFilesSync as i, getAllSessionFilesSync as n, normalizeModelName as o, getProjectDirsSync as r, parseClaudeSessionSync as s, getActiveSessionModelSync as t };
244
245
 
245
- //# sourceMappingURL=jsonl-parser-Dhflo1SH.js.map
246
+ //# sourceMappingURL=jsonl-parser-DJOH_O-w.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Jn as extractPrefixSync, Yn as init_issue_id, qn as extractNumberSync } from "./config-yaml-DvyMuOle.js";
3
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-BBNjPcqU.js";
2
+ import { gr as init_issue_id, hr as extractPrefixSync, mr as extractNumberSync } from "./config-yaml-CmOPzmBb.js";
3
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-q67TYYg5.js";
4
4
  import { Effect } from "effect";
5
5
  import { exec } from "child_process";
6
6
  import { promisify } from "util";
@@ -106,4 +106,4 @@ __esmMin((() => {
106
106
  }))();
107
107
  export { cleanupMergedLabels };
108
108
 
109
- //# sourceMappingURL=label-cleanup-BKPJm4Hv.js.map
109
+ //# sourceMappingURL=label-cleanup-Dv7AV_R1.js.map
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Mt as readIssueRecordForWorkspaceSync, Ot as init_record, Tn as init_projects, gn as getIssuePrefix, kn as listProjectsSync } from "./config-yaml-DvyMuOle.js";
3
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
4
- import { a as READY_LABEL, i as PARKED_LABEL, m as init_pickup, o as RELEASED_LABEL, r as OBJECTION_LABEL, s as VETOED_LABEL, t as BLOCKS_MAIN_LABEL } from "./pickup-Dd0Znxxy.js";
2
+ import { Gn as init_projects, In as getIssuePrefix, Pt as init_record, Rt as readIssueRecordForWorkspaceSync, Yn as listProjectsSync } from "./config-yaml-CmOPzmBb.js";
3
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-L0FKtjq2.js";
4
+ import { a as READY_LABEL, i as PARKED_LABEL, m as init_pickup, o as RELEASED_LABEL, r as OBJECTION_LABEL, s as VETOED_LABEL, t as BLOCKS_MAIN_LABEL } from "./pickup-D8xtG1J2.js";
5
5
  import { exec } from "node:child_process";
6
6
  import { promisify } from "node:util";
7
7
  //#region ../../lib/backlog/label-ops.ts
@@ -110,4 +110,4 @@ var init_label_reconciler = __esmMin((() => {
110
110
  //#endregion
111
111
  export { applyIssueObjectionLabel as a, applyIssueReleasedLabel as c, removeIssueBlocksMainLabel as d, removeIssueObjectionLabel as f, removeIssueVetoedLabel as g, removeIssueReleasedLabel as h, applyIssueBlocksMainLabel as i, applyIssueVetoedLabel as l, removeIssueReadyLabel as m, init_label_reconciler as n, applyIssueParkedLabel as o, removeIssueParkedLabel as p, reconcilePipelineLabelsPatrol as r, applyIssueReadyLabel as s, STALE_PIPELINE_LABELS as t, init_label_ops as u };
112
112
 
113
- //# sourceMappingURL=label-reconciler-DdWbHEBu.js.map
113
+ //# sourceMappingURL=label-reconciler--F85rufp.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { mr as init_errors } from "./config-yaml-DvyMuOle.js";
2
+ import { Fr as init_errors } from "./config-yaml-CmOPzmBb.js";
3
3
  import "effect";
4
4
  import { mkdirSync } from "fs";
5
5
  import { join } from "path";
@@ -118,4 +118,4 @@ var init_lifecycle = __esmMin((() => {
118
118
  //#endregion
119
119
  export { generateXBriefFilename as a, parseXBriefFilename as c, ensureXBriefDirsSync as i, resolveXBriefDir as l, LEGACY_VBRIEF_LIFECYCLE_DIRS as n, init_lifecycle as o, XBRIEF_FILENAME_SUFFIX as r, isXBriefFilename as s, LEGACY_VBRIEF_FILENAME_SUFFIX as t, slugify as u };
120
120
 
121
- //# sourceMappingURL=lifecycle-DfeyBDwA.js.map
121
+ //# sourceMappingURL=lifecycle-CTdOWYMi.js.map
@@ -1,12 +1,11 @@
1
- import { o as init_archive_planning, t as archivePlanning } from "./archive-planning-DYrYojxl.js";
2
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-BBNjPcqU.js";
3
- import { t as closeIssue } from "./close-issue-Dn_4c4G8.js";
4
- import { t as teardownWorkspace } from "./teardown-workspace-CEgauF4U.js";
5
- import { a as deepWipe, i as closeOut, n as cancelIssueWorkflow, o as resetToTodo, r as close, t as approve } from "./workflows-C9WmILql.js";
1
+ import { t as archivePlanning } from "./archive-planning-C0lAbNB_.js";
2
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-q67TYYg5.js";
3
+ import { t as closeIssue } from "./close-issue-D5MF5GqF.js";
4
+ import { t as teardownWorkspace } from "./teardown-workspace-l2F4_zim.js";
5
+ import { a as deepWipe, i as closeOut, n as cancelIssueWorkflow, o as resetToTodo, r as close, t as approve } from "./workflows-D0oip4eV.js";
6
6
  //#region ../../lib/lifecycle/index.ts
7
7
  init_types();
8
- init_archive_planning();
9
8
  //#endregion
10
9
  export { approve, archivePlanning, cancelIssueWorkflow, close, closeIssue, closeOut, deepWipe, resetToTodo, stepFailed, stepOk, stepSkipped, teardownWorkspace };
11
10
 
12
- //# sourceMappingURL=lifecycle-sycO16hj.js.map
11
+ //# sourceMappingURL=lifecycle-DDN8ApVY.js.map
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Ht as flushAutoCommits, Ot as init_record, Pt as readRecordContinueViewSync, Ut as init_auto_commit, Wt as queueAutoCommit, _t as appendFeedbackEntrySync, bt as clearRecordFeedbackSync, ir as FsError, mr as init_errors, yt as appendSessionEntrySync } from "./config-yaml-DvyMuOle.js";
3
- import { a as generateXBriefFilename, c as parseXBriefFilename, i as ensureXBriefDirsSync, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-DfeyBDwA.js";
4
- import { A as init_xbrief_index, C as init_specs, S as getProjectPanPaths, d as readPlanSync, g as serializeXBriefDocument, j as invalidateXBriefIndex, l as normalizeXBriefEnvelope, o as init_io } from "./io-B3_AHDfr.js";
5
- import { t as init_pan_dir } from "./pan-dir-DeVUgwA7.js";
2
+ import { Bt as readRecordContinueViewSync, Et as clearRecordFeedbackSync, Fr as init_errors, Pt as init_record, St as appendSessionEntrySync, Tr as FsError, bt as appendFeedbackEntrySync, cn as flushAutoCommits, ln as init_auto_commit, un as queueAutoCommit } from "./config-yaml-CmOPzmBb.js";
3
+ import { a as generateXBriefFilename, c as parseXBriefFilename, i as ensureXBriefDirsSync, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-CTdOWYMi.js";
4
+ import { A as invalidateXBriefIndex, M as getProjectPanPaths, S as init_specs, d as readPlanSync, g as serializeXBriefDocument, k as init_xbrief_index, l as normalizeXBriefEnvelope, o as init_io } from "./io-VHvc0Ssp.js";
5
+ import { t as init_pan_dir } from "./pan-dir-ubraCiUg.js";
6
6
  import { Effect } from "effect";
7
7
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from "fs";
8
8
  import { basename, join } from "path";
@@ -264,4 +264,4 @@ var init_lifecycle_io = __esmMin((() => {
264
264
  //#endregion
265
265
  export { init_lifecycle_io as a, updatePlanStatus as c, findXBriefByIssueSync as i, appendFeedbackEntryForIssue as n, readContinueStateForIssue as o, clearFeedbackForIssue as r, transitionXBriefOnMain as s, appendContinueSessionEntryForIssue as t };
266
266
 
267
- //# sourceMappingURL=lifecycle-io-D8iNBcux.js.map
267
+ //# sourceMappingURL=lifecycle-io-D-lGdzK3.js.map
@@ -1,3 +1,3 @@
1
- import { a as init_lifecycle_io, s as transitionXBriefOnMain } from "./lifecycle-io-D8iNBcux.js";
1
+ import { a as init_lifecycle_io, s as transitionXBriefOnMain } from "./lifecycle-io-D-lGdzK3.js";
2
2
  init_lifecycle_io();
3
3
  export { transitionXBriefOnMain };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as init_tracker_config, n as getLinearApiKey } from "./tracker-config-B4itFzDo.js";
2
+ import { a as init_tracker_config, n as getLinearApiKey } from "./tracker-config-DZ8Zn2nQ.js";
3
3
  import { a as RateLimited, c as TrackerNotConfigured, d as init_typed_errors, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-2BTMxkZq.js";
4
4
  import { Context, Duration, Effect, Layer, Schedule } from "effect";
5
5
  import { LinearClient } from "@linear/sdk";
@@ -192,4 +192,4 @@ var init_linear_client = __esmMin((() => {
192
192
  //#endregion
193
193
  export { init_linear_client as i, LinearClientLive as n, LinearClientOptionalLive as r, LinearClient$1 as t };
194
194
 
195
- //# sourceMappingURL=linear-client-D4zqMnX7.js.map
195
+ //# sourceMappingURL=linear-client-BQU36QqE.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_linear_client, n as LinearClientLive, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-D4zqMnX7.js";
1
+ import { i as init_linear_client, n as LinearClientLive, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-BQU36QqE.js";
2
2
  init_linear_client();
3
3
  export { LinearClient, LinearClientLive, LinearClientOptionalLive };
@@ -0,0 +1,280 @@
1
+ import { a as init_event_store, i as initEventStore } from "./event-store-zY5MJHgF.js";
2
+ import { $n as getAgentDir, At as AmbiguousKeyedDeliveryError, It as init_delivery, Y as init_messaging, Z as messageAgentWithOutcome, ir as init_agent_state } from "./queries-DHJm7bTd.js";
3
+ import { l as init_tmux_dedup, n as KeyedSubmitTargetDeadError, t as KeyedMarkerVerificationError } from "./tmux-dedup-DbN6MGzM.js";
4
+ import { n as createPromiseCoalescer, r as init_in_flight_guard } from "./in-flight-guard-Bq3epG58.js";
5
+ import { join } from "node:path";
6
+ import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
7
+ //#region ../../lib/linear-mcp-auth.ts
8
+ init_event_store();
9
+ init_agent_state();
10
+ init_delivery();
11
+ init_messaging();
12
+ init_tmux_dedup();
13
+ init_in_flight_guard();
14
+ const LINEAR_MCP_AUTH_URL_TTL_MS = 1800 * 1e3;
15
+ const LINEAR_MCP_AUTH_WAKE_COPY = "Linear MCP authentication has been restored — the operator completed OAuth. Re-check access now with one lightweight read (e.g. mcp__linear__list_issues). If it succeeds, resume your canonical task. If it still returns an authentication error, call mcp__linear__authenticate once and wait; do not retry in a loop.";
16
+ const linearMcpAuthWakeCoalescer = createPromiseCoalescer();
17
+ const LINEAR_MCP_AUTH_EVENT_TYPES = [
18
+ "linear_mcp_auth.required",
19
+ "linear_mcp_auth.healthy",
20
+ "linear_mcp_auth.notified",
21
+ "linear_mcp_auth.callback_relayed"
22
+ ];
23
+ function defaultExpiresAt(declaredAt) {
24
+ return new Date(Date.parse(declaredAt) + LINEAR_MCP_AUTH_URL_TTL_MS).toISOString();
25
+ }
26
+ function foldLinearMcpAuthEvents(events, initial = {
27
+ open: null,
28
+ lastCompleted: null
29
+ }) {
30
+ let open = initial.open;
31
+ let lastCompleted = initial.lastCompleted;
32
+ for (const event of events) switch (event.type) {
33
+ case "linear_mcp_auth.required": {
34
+ const payload = event.payload;
35
+ open ??= {
36
+ id: `seq-${event.sequence}`,
37
+ declaredAt: event.timestamp,
38
+ authUrl: null,
39
+ authUrlAgentId: null,
40
+ authUrlExpiresAt: null,
41
+ agents: /* @__PURE__ */ new Map()
42
+ };
43
+ const expiresAt = payload.expiresAt ?? defaultExpiresAt(event.timestamp);
44
+ open.agents.set(payload.agentId, {
45
+ agentId: payload.agentId,
46
+ issueId: payload.issueId,
47
+ declaredAt: event.timestamp,
48
+ expiresAt,
49
+ notifiedAt: null
50
+ });
51
+ if (payload.authUrl !== null) {
52
+ open.authUrl = payload.authUrl;
53
+ open.authUrlAgentId = payload.agentId;
54
+ open.authUrlExpiresAt = expiresAt;
55
+ }
56
+ break;
57
+ }
58
+ case "linear_mcp_auth.healthy":
59
+ if (open !== null) {
60
+ lastCompleted = open;
61
+ open = null;
62
+ }
63
+ break;
64
+ case "linear_mcp_auth.notified": {
65
+ const payload = event.payload;
66
+ const lifecycle = payload.lifecycleId !== void 0 ? open?.id === payload.lifecycleId ? open : lastCompleted?.id === payload.lifecycleId ? lastCompleted : null : open ?? lastCompleted;
67
+ const agent = lifecycle?.agents.get(payload.agentId);
68
+ if (agent !== void 0 && payload.outcome !== "delivering") lifecycle?.agents.set(payload.agentId, {
69
+ ...agent,
70
+ notifiedAt: event.timestamp
71
+ });
72
+ break;
73
+ }
74
+ case "linear_mcp_auth.callback_relayed": break;
75
+ }
76
+ return {
77
+ open,
78
+ lastCompleted
79
+ };
80
+ }
81
+ let projectionCache = null;
82
+ /**
83
+ * Read the lifecycle fold from a maintained projection rather than rebuilding
84
+ * it per poll. The projection advances incrementally: each read fetches only
85
+ * auth-typed events newer than the covered sequence via an indexed SQL query
86
+ * (`queryByTypesSince`), so unrelated retained history is never materialized
87
+ * — a full `readFrom(0)` on the seven-day event table has blown the heap in
88
+ * smoke testing, and the banner calls this path every 5–30 seconds per
89
+ * connected client.
90
+ */
91
+ async function readLinearMcpAuthFold() {
92
+ const store = await initEventStore();
93
+ if (projectionCache !== null && store.getLatestSequence() < projectionCache.coveredSequence) projectionCache = null;
94
+ const afterSequence = projectionCache?.coveredSequence ?? 0;
95
+ const delta = store.queryByTypesSince([...LINEAR_MCP_AUTH_EVENT_TYPES], afterSequence);
96
+ if (delta.length === 0 && projectionCache !== null) return projectionCache.fold;
97
+ const fold = foldLinearMcpAuthEvents(delta, projectionCache?.fold);
98
+ const lastEvent = delta[delta.length - 1];
99
+ projectionCache = {
100
+ fold,
101
+ coveredSequence: lastEvent !== void 0 ? lastEvent.sequence : afterSequence
102
+ };
103
+ return fold;
104
+ }
105
+ function projectLifecycle(lifecycle, nowIso) {
106
+ if (lifecycle === null) return {
107
+ status: "none",
108
+ authUrl: null,
109
+ authUrlAgentId: null,
110
+ authUrlExpiresAt: null,
111
+ declaredAt: null,
112
+ blockedAgents: []
113
+ };
114
+ return {
115
+ status: lifecycle.authUrlExpiresAt !== null && lifecycle.authUrlExpiresAt < nowIso ? "expired" : "active",
116
+ authUrl: lifecycle.authUrl,
117
+ authUrlAgentId: lifecycle.authUrlAgentId,
118
+ authUrlExpiresAt: lifecycle.authUrlExpiresAt,
119
+ declaredAt: lifecycle.declaredAt,
120
+ blockedAgents: [...lifecycle.agents.values()]
121
+ };
122
+ }
123
+ function linearMcpAuthEvent(input) {
124
+ return {
125
+ type: input.type,
126
+ timestamp: input.timestamp ?? (/* @__PURE__ */ new Date()).toISOString(),
127
+ payload: input.payload
128
+ };
129
+ }
130
+ async function appendLinearMcpAuthEvent(input) {
131
+ return (await initEventStore()).appendAsync(linearMcpAuthEvent(input));
132
+ }
133
+ function appendLinearMcpAuthHealthyEvent(payload, timestamp) {
134
+ return appendLinearMcpAuthEvent({
135
+ type: "linear_mcp_auth.healthy",
136
+ payload,
137
+ timestamp
138
+ });
139
+ }
140
+ function appendLinearMcpAuthNotifiedEvent(payload, timestamp) {
141
+ return appendLinearMcpAuthEvent({
142
+ type: "linear_mcp_auth.notified",
143
+ payload,
144
+ timestamp
145
+ });
146
+ }
147
+ function appendLinearMcpAuthCallbackRelayedEvent(payload, timestamp) {
148
+ return appendLinearMcpAuthEvent({
149
+ type: "linear_mcp_auth.callback_relayed",
150
+ payload,
151
+ timestamp
152
+ });
153
+ }
154
+ async function resolveLinearMcpAuthIntervention(nowIso = (/* @__PURE__ */ new Date()).toISOString()) {
155
+ const { open } = await readLinearMcpAuthFold();
156
+ return projectLifecycle(open, nowIso);
157
+ }
158
+ async function computeLinearMcpAuthWakeSet() {
159
+ const { lastCompleted } = await readLinearMcpAuthFold();
160
+ if (lastCompleted === null) return null;
161
+ const agents = [...lastCompleted.agents.values()].filter((agent) => agent.notifiedAt === null);
162
+ return {
163
+ lifecycleId: lastCompleted.id,
164
+ agents
165
+ };
166
+ }
167
+ const MAX_WAKE_PASSES = 10;
168
+ const WAKE_FOLLOW_UP_MIN_DELAY_MS = 1e3;
169
+ const WAKE_FOLLOW_UP_MAX_DELAY_MS = 6e4;
170
+ let wakeFollowUpDelayMs = WAKE_FOLLOW_UP_MIN_DELAY_MS;
171
+ function wakeOutboxPath(agentId, lifecycleId) {
172
+ return join(getAgentDir(agentId), "linear-mcp-wake", `${lifecycleId}.json`);
173
+ }
174
+ async function readWakeOutbox(agentId, lifecycleId) {
175
+ try {
176
+ const raw = await readFile(wakeOutboxPath(agentId, lifecycleId), "utf-8");
177
+ return JSON.parse(raw);
178
+ } catch {
179
+ return null;
180
+ }
181
+ }
182
+ async function writeWakeOutbox(entry) {
183
+ const path = wakeOutboxPath(entry.agentId, entry.lifecycleId);
184
+ await mkdir(join(getAgentDir(entry.agentId), "linear-mcp-wake"), { recursive: true });
185
+ const tmpPath = `${path}.${process.pid}.tmp`;
186
+ await writeFile(tmpPath, JSON.stringify(entry, null, 2), "utf-8");
187
+ await rename(tmpPath, path);
188
+ }
189
+ /**
190
+ * Deliver one lifecycle's wake through the keyed outbox. An acknowledged
191
+ * entry suppresses the replay and replays only its recorded outcome — a
192
+ * crash after the ack write never produces a second send, and the recorded
193
+ * outcome stays faithful ('queued' is never upgraded to 'delivered'). A
194
+ * pending or missing entry is (re)driven: a crash before the ack write
195
+ * replays the send, which is correct because that send was never
196
+ * acknowledged.
197
+ */
198
+ async function deliverWakeWithOutbox(agentId, lifecycleId) {
199
+ const existing = await readWakeOutbox(agentId, lifecycleId);
200
+ if (existing?.state === "acknowledged" && existing.outcome !== void 0) return {
201
+ sent: false,
202
+ outcome: existing.outcome
203
+ };
204
+ if (existing === null) await writeWakeOutbox({
205
+ lifecycleId,
206
+ agentId,
207
+ message: LINEAR_MCP_AUTH_WAKE_COPY,
208
+ state: "pending",
209
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
210
+ });
211
+ let outcome;
212
+ try {
213
+ outcome = await messageAgentWithOutcome(agentId, LINEAR_MCP_AUTH_WAKE_COPY, "linear-mcp-auth-wake", { dedupKey: `linear-mcp-auth-wake:${lifecycleId}` });
214
+ } catch (error) {
215
+ if (error instanceof AmbiguousKeyedDeliveryError || error instanceof KeyedSubmitTargetDeadError || error instanceof KeyedMarkerVerificationError) throw error;
216
+ outcome = "failed";
217
+ }
218
+ await writeWakeOutbox({
219
+ lifecycleId,
220
+ agentId,
221
+ message: LINEAR_MCP_AUTH_WAKE_COPY,
222
+ state: "acknowledged",
223
+ outcome,
224
+ createdAt: existing?.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
225
+ acknowledgedAt: (/* @__PURE__ */ new Date()).toISOString()
226
+ });
227
+ return {
228
+ sent: true,
229
+ outcome
230
+ };
231
+ }
232
+ /**
233
+ * Record the completion of a delivery attempt in the lifecycle event log —
234
+ * this, not the outbox receipt, is what removes the agent from the wake set.
235
+ * If the append fails, the agent stays in the wake set but the acknowledged
236
+ * outbox entry suppresses any replay: the next pass only retries this
237
+ * completion record.
238
+ */
239
+ async function recordWakeCompletion(blockedAgent, lifecycleId, outcome) {
240
+ try {
241
+ await appendLinearMcpAuthNotifiedEvent({
242
+ agentId: blockedAgent.agentId,
243
+ issueId: blockedAgent.issueId,
244
+ outcome,
245
+ lifecycleId
246
+ });
247
+ } catch (completionError) {
248
+ console.error(`[linear-mcp-auth] failed to record wake outcome for ${blockedAgent.agentId}:`, completionError);
249
+ }
250
+ }
251
+ function processLinearMcpAuthWake() {
252
+ return linearMcpAuthWakeCoalescer.run("global", async () => {
253
+ let stabilized = false;
254
+ for (let pass = 0; pass < MAX_WAKE_PASSES; pass++) {
255
+ const wakeSet = await computeLinearMcpAuthWakeSet();
256
+ if (wakeSet === null || wakeSet.agents.length === 0) {
257
+ stabilized = true;
258
+ wakeFollowUpDelayMs = WAKE_FOLLOW_UP_MIN_DELAY_MS;
259
+ break;
260
+ }
261
+ for (const blockedAgent of wakeSet.agents) try {
262
+ const delivery = await deliverWakeWithOutbox(blockedAgent.agentId, wakeSet.lifecycleId);
263
+ await recordWakeCompletion(blockedAgent, wakeSet.lifecycleId, delivery.outcome);
264
+ } catch (deliveryError) {
265
+ console.error(`[linear-mcp-auth] wake outbox failure for ${blockedAgent.agentId}; skipping this pass:`, deliveryError);
266
+ }
267
+ }
268
+ if (!stabilized) {
269
+ console.error(`[linear-mcp-auth] wake pass did not stabilize after ${MAX_WAKE_PASSES} passes — scheduling a follow-up run in ${wakeFollowUpDelayMs}ms`);
270
+ setTimeout(() => {
271
+ processLinearMcpAuthWake();
272
+ }, wakeFollowUpDelayMs).unref();
273
+ wakeFollowUpDelayMs = Math.min(wakeFollowUpDelayMs * 2, WAKE_FOLLOW_UP_MAX_DELAY_MS);
274
+ }
275
+ });
276
+ }
277
+ //#endregion
278
+ export { appendLinearMcpAuthHealthyEvent as a, linearMcpAuthEvent as c, appendLinearMcpAuthEvent as i, processLinearMcpAuthWake as l, LINEAR_MCP_AUTH_WAKE_COPY as n, appendLinearMcpAuthNotifiedEvent as o, appendLinearMcpAuthCallbackRelayedEvent as r, computeLinearMcpAuthWakeSet as s, LINEAR_MCP_AUTH_URL_TTL_MS as t, resolveLinearMcpAuthIntervention as u };
279
+
280
+ //# sourceMappingURL=linear-mcp-auth-BnU4TYfY.js.map
@@ -0,0 +1,2 @@
1
+ import { l as processLinearMcpAuthWake } from "./linear-mcp-auth-BnU4TYfY.js";
2
+ export { processLinearMcpAuthWake };
@@ -1,4 +1,4 @@
1
- import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-BrL_VTRr.js";
1
+ import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-BdewJ_g9.js";
2
2
  import { parentPort } from "node:worker_threads";
3
3
  //#region ../../lib/memory/fts-worker.ts
4
4
  init_fts_operations();
@@ -1,5 +1,5 @@
1
- import { C as inArray, _ as integer, a as EventBus, b as and, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, s as Forge, v as init_drizzle_orm, x as eq } from "./infra-CzaSOgul.js";
2
- import { n as init_issues, t as IssueId } from "./issues-B6ToV6x1.js";
1
+ import { C as inArray, _ as integer, a as EventBus, b as and, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, s as Forge, v as init_drizzle_orm, x as eq } from "./infra-BjuxvjdS.js";
2
+ import { n as init_issues, t as IssueId } from "./issues-CgnQ1OGQ.js";
3
3
  import { Context, Effect, Layer, Schema } from "effect";
4
4
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
5
5
  //#region ../../lib/overdeck/merge.ts
@@ -87,7 +87,9 @@ const uatGenerationResolutions = sqliteTable("uat_generation_resolutions", {
87
87
  uatName: text("uat_name").notNull(),
88
88
  issueIds: text("issue_ids", { mode: "json" }).notNull(),
89
89
  files: text("files", { mode: "json" }).notNull(),
90
- commitSha: text("commit_sha").notNull()
90
+ commitSha: text("commit_sha").notNull(),
91
+ kind: text("kind"),
92
+ note: text("note")
91
93
  });
92
94
  const ProjectKey = Schema.String.pipe(Schema.brand("ProjectKey"));
93
95
  const RepoKey = Schema.String.pipe(Schema.brand("RepoKey"));
@@ -573,7 +575,7 @@ const MergeApi = HttpApiGroup.make("merge").add(HttpApiEndpoint.get("getMergeSet
573
575
  })).add(HttpApiEndpoint.get("listQueues", "/merge-queue", { success: Schema.Array(QueueView) })).add(HttpApiEndpoint.get("listAutoMerges", "/flywheel/auto-merge", {
574
576
  query: AutoMergeFilter,
575
577
  success: Schema.Array(AutoMerge)
576
- })).add(HttpApiEndpoint.get("listBlockers", "/flywheel/merge-blockers", { success: Schema.Array(AutoMerge) })).add(HttpApiEndpoint.get("listUatGenerations", "/flywheel/uat-generations", {
578
+ })).add(HttpApiEndpoint.get("listBlockers", "/flywheel/merge-blockers", { success: Schema.Array(AutoMerge) })).add(HttpApiEndpoint.get("listUatGenerations", "/merge-train/generations", {
577
579
  query: UatGenerationFilter,
578
580
  success: Schema.Array(UatGeneration)
579
581
  })).add(HttpApiEndpoint.post("merge", "/issues/:id/merge", {
@@ -593,7 +595,7 @@ const MergeApi = HttpApiGroup.make("merge").add(HttpApiEndpoint.get("getMergeSet
593
595
  params: { id: IssueId },
594
596
  success: MergeSet,
595
597
  error: MergeSetNotFound
596
- })).add(HttpApiEndpoint.post("mergeNext", "/flywheel/merge-next", {
598
+ })).add(HttpApiEndpoint.post("mergeNext", "/merge-train/merge-next", {
597
599
  payload: Schema.Struct({ projectKey: ProjectKey }),
598
600
  success: Schema.NullOr(MergeSet),
599
601
  error: Schema.Union([
@@ -617,11 +619,11 @@ const MergeApi = HttpApiGroup.make("merge").add(HttpApiEndpoint.get("getMergeSet
617
619
  payload: Schema.Struct({ cancelledBy: Schema.String }),
618
620
  success: AutoMerge,
619
621
  error: AutoMergeNotFound
620
- })).add(HttpApiEndpoint.post("assembleUat", "/flywheel/assemble-uat", { success: Schema.Array(UatGeneration) })).add(HttpApiEndpoint.post("startUatStack", "/flywheel/uat-generations/:name/stack", {
622
+ })).add(HttpApiEndpoint.post("assembleUat", "/merge-train/assemble", { success: Schema.Array(UatGeneration) })).add(HttpApiEndpoint.post("startUatStack", "/merge-train/generations/:name/stack", {
621
623
  params: { name: UatName },
622
624
  success: UatGeneration,
623
625
  error: Schema.Union([UatGenerationNotFound, UatNotPromotable])
624
- })).add(HttpApiEndpoint.post("promoteUat", "/flywheel/uat-generations/:name/promote", {
626
+ })).add(HttpApiEndpoint.post("promoteUat", "/merge-train/generations/:name/promote", {
625
627
  params: { name: UatName },
626
628
  success: UatGeneration,
627
629
  error: Schema.Union([UatGenerationNotFound, UatNotPromotable])
@@ -642,9 +644,9 @@ function enqueueMerge(projectKey, issueId) {
642
644
  db.prepare(`INSERT INTO merge_queue (project_key, issue_id, position, queued_at, status) VALUES (?, ?, ?, ?, 'queued')`).run(projectKey, normalized, position, nowIso());
643
645
  return position;
644
646
  }
645
- /** Mark a queued merge as processing (currently being merged). */
646
- function markMergeProcessing(projectKey, issueId) {
647
- overdeckDb().prepare(`UPDATE merge_queue SET status = 'processing', started_at = ? WHERE issue_id = ? AND status = 'queued'`).run(nowIso(), issueId.toUpperCase());
647
+ /** Toggle whether a queued merge is the project's current processing entry. */
648
+ function markMergeProcessing(projectKey, issueId, processing = true) {
649
+ overdeckDb().prepare(`UPDATE merge_queue SET status = ?, started_at = ? WHERE project_key = ? AND issue_id = ? AND status = ?`).run(processing ? "processing" : "queued", processing ? nowIso() : null, projectKey, issueId.toUpperCase(), processing ? "queued" : "processing");
648
650
  }
649
651
  /** Get the currently processing merge for a project, or null. */
650
652
  function getCurrentMerge(projectKey) {
@@ -700,4 +702,4 @@ function getAllActiveQueues() {
700
702
  //#endregion
701
703
  export { UatNotPromotable as A, readyForMerge as B, RepoMergeStatus as C, UatMember as D, UatGenerationNotFound as E, enqueueMerge as F, getAllActiveQueues as I, getCurrentMerge as L, UatStatus as M, WorkspaceType as N, UatMemberRole as O, dequeueMerge as P, getQueueForProject as R, RepoKey as S, UatGenerationFilter as T, NotReadyForMerge as _, ForgeMergeFailed as a, QueueView as b, MergeInProgress as c, MergeSet as d, MergeSetNotFound as f, MergeWriterLive as g, MergeWriter as h, AutoMergeStatus as i, UatResolution as j, UatName as k, MergeResolver as l, MergeSetStatus as m, AutoMergeFilter as n, GateStatus as o, MergeSetRepo as p, AutoMergeNotFound as r, MergeApi as s, AutoMerge as t, MergeResolverLive as u, ProjectKey as v, UatGeneration as w, RebaseStatus as x, QueueEntryStatus as y, markMergeProcessing as z };
702
704
 
703
- //# sourceMappingURL=merge-C_ZEhbqI.js.map
705
+ //# sourceMappingURL=merge-Bpx4jjht.js.map