@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
@@ -0,0 +1,383 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { S as parsePullRequestRef, d as getPullRequestState, f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead, x as mergePullRequestWithApp } from "./github-app-CQ1Lo6LA.js";
3
+ import { join } from "node:path";
4
+ import { Data, Effect } from "effect";
5
+ import { tmpdir } from "node:os";
6
+ import { unlink, writeFile } from "node:fs/promises";
7
+ import { exec } from "node:child_process";
8
+ import { promisify } from "node:util";
9
+ //#region ../../lib/forge.ts
10
+ /**
11
+ * Parse a review-artifact URL into its forge type and numeric identifier.
12
+ * Detection is by path pattern (not host) so self-hosted GitLab is supported.
13
+ * Returns `null` for unrecognised input.
14
+ */
15
+ function parseArtifactRef(url) {
16
+ if (!url) return null;
17
+ const gitlabMatch = url.match(/\/-\/merge_requests\/(\d+)(?:$|[/?#])/);
18
+ if (gitlabMatch) return {
19
+ forge: "gitlab",
20
+ number: Number.parseInt(gitlabMatch[1], 10)
21
+ };
22
+ const githubMatch = url.match(/\/pull\/(\d+)(?:$|[/?#])/);
23
+ if (githubMatch) return {
24
+ forge: "github",
25
+ number: Number.parseInt(githubMatch[1], 10)
26
+ };
27
+ return null;
28
+ }
29
+ async function withBodyFile(body, prefix, fn) {
30
+ if (!body) return fn(void 0);
31
+ const bodyFile = join(tmpdir(), `${prefix}-${Date.now()}.md`);
32
+ await writeFile(bodyFile, body, "utf-8");
33
+ try {
34
+ return await fn(bodyFile);
35
+ } finally {
36
+ await unlink(bodyFile).catch(() => {});
37
+ }
38
+ }
39
+ function buildRepositoryFlag(repository) {
40
+ return repository ? ` --repo ${repository}` : "";
41
+ }
42
+ function buildGitHubReviewTarget(input) {
43
+ return input.url || input.id || "";
44
+ }
45
+ function buildGitLabReviewTarget(input) {
46
+ return input.id || input.url || "";
47
+ }
48
+ function parseRepository(repository) {
49
+ const [owner, repo] = (repository ?? "").split("/");
50
+ return owner && repo ? {
51
+ owner,
52
+ repo
53
+ } : null;
54
+ }
55
+ async function getExistingGitHubArtifact(branchName, cwd, repository) {
56
+ const parsedRepo = parseRepository(repository);
57
+ if (isGitHubAppConfigured() && parsedRepo) {
58
+ const pr = (await Effect.runPromise(listPullRequestsForHead(parsedRepo.owner, parsedRepo.repo, branchName, "all")))[0];
59
+ if (!pr) return null;
60
+ return {
61
+ forge: "github",
62
+ created: false,
63
+ url: pr.url ?? `https://github.com/${parsedRepo.owner}/${parsedRepo.repo}/pull/${pr.number}`,
64
+ id: String(pr.number)
65
+ };
66
+ }
67
+ const { stdout } = await execAsync(`gh pr view ${branchName}${buildRepositoryFlag(repository)} --json url,number 2>/dev/null || true`, {
68
+ cwd,
69
+ encoding: "utf-8"
70
+ });
71
+ const trimmed = stdout.trim();
72
+ if (!trimmed) return null;
73
+ const parsed = JSON.parse(trimmed);
74
+ return {
75
+ forge: "github",
76
+ created: false,
77
+ url: parsed.url,
78
+ id: parsed.number ? String(parsed.number) : void 0
79
+ };
80
+ }
81
+ async function getExistingGitLabArtifact(branchName, cwd, repository) {
82
+ const { stdout } = await execAsync(`glab mr list --source-branch ${branchName}${buildRepositoryFlag(repository)} --output json 2>/dev/null || true`, {
83
+ cwd,
84
+ encoding: "utf-8"
85
+ });
86
+ const trimmed = stdout.trim();
87
+ if (!trimmed) return null;
88
+ const existing = JSON.parse(trimmed)[0];
89
+ if (!existing) return null;
90
+ return {
91
+ forge: "gitlab",
92
+ created: false,
93
+ url: existing.web_url,
94
+ id: existing.iid ? String(existing.iid) : void 0
95
+ };
96
+ }
97
+ function matchesCurrentArtifact(input, artifact) {
98
+ return artifact.sourceBranch === void 0 || artifact.sourceBranch === input.sourceBranch ? (input.targetBranch === void 0 || artifact.targetBranch === input.targetBranch) && (input.headSha === void 0 || artifact.headSha === input.headSha) : false;
99
+ }
100
+ async function findMergedGitHubArtifact(input) {
101
+ const parsedRepo = parseRepository(input.repository);
102
+ const parsedId = input.artifactId ? Number.parseInt(input.artifactId, 10) : NaN;
103
+ const parsedUrl = parseArtifactRef(input.artifactUrl);
104
+ const exactNumber = Number.isFinite(parsedId) ? parsedId : parsedUrl?.forge === "github" ? parsedUrl.number : void 0;
105
+ if (isGitHubAppConfigured() && parsedRepo) {
106
+ if (Number.isFinite(exactNumber)) {
107
+ const state = await Effect.runPromise(getPullRequestState(parsedRepo.owner, parsedRepo.repo, exactNumber));
108
+ if (!state.merged || !matchesCurrentArtifact(input, {
109
+ sourceBranch: input.sourceBranch,
110
+ targetBranch: state.baseBranch,
111
+ headSha: state.headSha
112
+ })) return null;
113
+ return {
114
+ forge: "github",
115
+ created: false,
116
+ url: state.url ?? input.artifactUrl,
117
+ id: String(state.number)
118
+ };
119
+ }
120
+ const prs = await Effect.runPromise(listPullRequestsForHead(parsedRepo.owner, parsedRepo.repo, input.sourceBranch, "all"));
121
+ for (const pr of prs.filter((candidate) => candidate.merged === true || candidate.mergedAt != null)) {
122
+ if (input.targetBranch === void 0 && input.headSha === void 0) return {
123
+ forge: "github",
124
+ created: false,
125
+ url: pr.url ?? `https://github.com/${parsedRepo.owner}/${parsedRepo.repo}/pull/${pr.number}`,
126
+ id: String(pr.number)
127
+ };
128
+ const state = await Effect.runPromise(getPullRequestState(parsedRepo.owner, parsedRepo.repo, pr.number));
129
+ if (state.merged && matchesCurrentArtifact(input, {
130
+ sourceBranch: input.sourceBranch,
131
+ targetBranch: state.baseBranch,
132
+ headSha: state.headSha
133
+ })) return {
134
+ forge: "github",
135
+ created: false,
136
+ url: state.url ?? pr.url,
137
+ id: String(pr.number)
138
+ };
139
+ }
140
+ return null;
141
+ }
142
+ if (Number.isFinite(exactNumber)) {
143
+ const { stdout } = await execAsync(`gh pr view ${input.artifactUrl || input.artifactId}${buildRepositoryFlag(input.repository)} --json url,number,state,mergedAt,headRefOid,baseRefName,headRefName`, {
144
+ cwd: input.cwd,
145
+ encoding: "utf-8",
146
+ timeout: FORGE_OBSERVATION_TIMEOUT_MS
147
+ });
148
+ const pr = JSON.parse(stdout.trim());
149
+ if (!pr.mergedAt || !matchesCurrentArtifact(input, {
150
+ sourceBranch: pr.headRefName,
151
+ targetBranch: pr.baseRefName,
152
+ headSha: pr.headRefOid
153
+ })) return null;
154
+ return {
155
+ forge: "github",
156
+ created: false,
157
+ url: pr.url,
158
+ id: pr.number ? String(pr.number) : input.artifactId
159
+ };
160
+ }
161
+ const { stdout } = await execAsync(`gh pr list --state merged --head ${input.sourceBranch}${buildRepositoryFlag(input.repository)} --json url,number,mergedAt,headRefOid,baseRefName,headRefName`, {
162
+ cwd: input.cwd,
163
+ encoding: "utf-8",
164
+ timeout: FORGE_OBSERVATION_TIMEOUT_MS
165
+ });
166
+ const merged = JSON.parse(stdout.trim() || "[]").find((pr) => pr.mergedAt && matchesCurrentArtifact(input, {
167
+ sourceBranch: pr.headRefName,
168
+ targetBranch: pr.baseRefName,
169
+ headSha: pr.headRefOid
170
+ }));
171
+ return merged ? {
172
+ forge: "github",
173
+ created: false,
174
+ url: merged.url,
175
+ id: merged.number ? String(merged.number) : void 0
176
+ } : null;
177
+ }
178
+ async function findMergedGitLabArtifact(input) {
179
+ const parsedId = input.artifactId ? Number.parseInt(input.artifactId, 10) : NaN;
180
+ const parsedUrl = parseArtifactRef(input.artifactUrl);
181
+ const target = Number.isFinite(parsedId) ? String(parsedId) : parsedUrl?.forge === "gitlab" ? String(parsedUrl.number) : void 0;
182
+ const { stdout } = await execAsync(target ? `glab mr view ${target}${buildRepositoryFlag(input.repository)} --output json` : `glab mr list --source-branch ${input.sourceBranch}${buildRepositoryFlag(input.repository)} --all --output json`, {
183
+ cwd: input.cwd,
184
+ encoding: "utf-8",
185
+ timeout: FORGE_OBSERVATION_TIMEOUT_MS
186
+ });
187
+ const merged = (target ? [JSON.parse(stdout.trim())] : JSON.parse(stdout.trim() || "[]")).find((artifact) => artifact.state === "merged" && matchesCurrentArtifact(input, {
188
+ sourceBranch: artifact.source_branch,
189
+ targetBranch: artifact.target_branch,
190
+ headSha: artifact.sha
191
+ }));
192
+ return merged ? {
193
+ forge: "gitlab",
194
+ created: false,
195
+ url: merged.web_url,
196
+ id: merged.iid ? String(merged.iid) : input.artifactId
197
+ } : null;
198
+ }
199
+ function delay(ms) {
200
+ return new Promise((resolve) => setTimeout(resolve, ms));
201
+ }
202
+ function isTransientGitHubMergeState(state) {
203
+ if (state.merged) return false;
204
+ if (state.draft) return false;
205
+ if (state.checksFailed) return false;
206
+ if (state.checksPending) return true;
207
+ if (state.mergeable === null) return true;
208
+ return [
209
+ "unknown",
210
+ "blocked",
211
+ "behind",
212
+ "unstable",
213
+ "has_hooks"
214
+ ].includes(state.mergeableState || "");
215
+ }
216
+ function getForgeAdapter(forge) {
217
+ return forge === "gitlab" ? gitlabForgeAdapter : githubForgeAdapter;
218
+ }
219
+ var execAsync, GITHUB_MERGE_POLL_INTERVAL_MS, FORGE_OBSERVATION_TIMEOUT_MS, GITHUB_MERGE_TIMEOUT_MS, githubForgeAdapter, gitlabForgeAdapter;
220
+ var init_forge = __esmMin((() => {
221
+ init_github_app();
222
+ Data.TaggedError("ForgeError");
223
+ execAsync = promisify(exec);
224
+ GITHUB_MERGE_POLL_INTERVAL_MS = 5e3;
225
+ FORGE_OBSERVATION_TIMEOUT_MS = 3e4;
226
+ GITHUB_MERGE_TIMEOUT_MS = 900 * 1e3;
227
+ githubForgeAdapter = {
228
+ forge: "github",
229
+ async createReviewArtifact(input) {
230
+ const existing = await getExistingGitHubArtifact(input.sourceBranch, input.cwd, input.repository);
231
+ if (existing) return existing;
232
+ return withBodyFile(input.body, "pan-gh-pr-body", async (bodyFile) => {
233
+ const bodyFlag = bodyFile ? ` --body-file "${bodyFile}"` : "";
234
+ const { stdout } = await execAsync(`gh pr create --head ${input.sourceBranch} --base ${input.targetBranch} --title "${input.title}"${bodyFlag}${buildRepositoryFlag(input.repository)}`, {
235
+ cwd: input.cwd,
236
+ encoding: "utf-8"
237
+ });
238
+ return {
239
+ forge: "github",
240
+ created: true,
241
+ url: stdout.trim().split("\n").pop()?.trim() || stdout.trim(),
242
+ id: (await getExistingGitHubArtifact(input.sourceBranch, input.cwd, input.repository))?.id
243
+ };
244
+ });
245
+ },
246
+ async mergeReviewArtifact(input) {
247
+ const target = buildGitHubReviewTarget(input);
248
+ const method = input.method || "squash";
249
+ console.log(`[forge] mergeReviewArtifact: ${input.forge} ${target} method=${method} repo=${input.repository ?? "default"}`);
250
+ if (!isGitHubAppConfigured()) try {
251
+ console.log(`[forge] gh pr merge: executing ${method} merge for ${target}`);
252
+ await execAsync(`gh pr merge ${target}${buildRepositoryFlag(input.repository)} --${method}`, {
253
+ cwd: input.cwd,
254
+ encoding: "utf-8"
255
+ });
256
+ console.log(`[forge] gh pr merge: completed successfully for ${target}`);
257
+ return;
258
+ } catch (err) {
259
+ console.error(`[forge] gh pr merge: failed for ${target}: exitCode=${err.code} message=${err.message}`);
260
+ throw err;
261
+ }
262
+ const ref = parsePullRequestRef(input);
263
+ const deadline = Date.now() + GITHUB_MERGE_TIMEOUT_MS;
264
+ console.log(`[forge] mergeReviewArtifact: GitHub App path for ${ref.owner}/${ref.repo}#${ref.number}, timeout=${GITHUB_MERGE_TIMEOUT_MS}ms`);
265
+ while (Date.now() < deadline) {
266
+ const state = await Effect.runPromise(getPullRequestState(ref.owner, ref.repo, ref.number));
267
+ console.log(`[forge] mergeReviewArtifact: PR #${ref.number} state=${state.state} merged=${state.merged} draft=${state.draft} checksFailed=${state.checksFailed}`);
268
+ if (state.merged) return;
269
+ if (state.state !== "OPEN") throw new Error(`GitHub PR #${ref.number} is closed but not merged`);
270
+ if (state.draft) throw new Error(`GitHub PR #${ref.number} is still marked as draft`);
271
+ if (state.checksFailed) throw new Error(`GitHub PR #${ref.number} has failing required checks`);
272
+ if (isTransientGitHubMergeState(state)) {
273
+ await delay(GITHUB_MERGE_POLL_INTERVAL_MS);
274
+ continue;
275
+ }
276
+ try {
277
+ const mergeResult = await Effect.runPromise(mergePullRequestWithApp(ref.owner, ref.repo, ref.number, method, state.headSha || void 0));
278
+ console.log(`[forge] mergePullRequestWithApp: result merged=${mergeResult.merged} for ${ref.owner}/${ref.repo}#${ref.number}`);
279
+ if (mergeResult.merged) return;
280
+ } catch (err) {
281
+ const message = String(err?.message || err);
282
+ console.error(`[forge] mergePullRequestWithApp: threw for ${ref.number}: ${message}`);
283
+ if (message.includes("405") || message.includes("409") || message.includes("422") || message.includes("not mergeable") || message.includes("Base branch was modified") || message.includes("required status check") || message.includes("Head branch was modified")) {
284
+ await delay(GITHUB_MERGE_POLL_INTERVAL_MS);
285
+ continue;
286
+ }
287
+ throw err;
288
+ }
289
+ }
290
+ throw new Error(`Timed out waiting for GitHub PR #${ref.number} to become mergeable`);
291
+ },
292
+ async commentOnArtifact(input) {
293
+ const target = buildGitHubReviewTarget(input);
294
+ await withBodyFile(input.body, "pan-gh-pr-comment", async (bodyFile) => {
295
+ const bodyFlag = bodyFile ? ` --body-file "${bodyFile}"` : ` --body "${input.body.replace(/"/g, "\\\"")}"`;
296
+ await execAsync(`gh pr comment ${target}${buildRepositoryFlag(input.repository)}${bodyFlag}`, {
297
+ cwd: input.cwd,
298
+ encoding: "utf-8"
299
+ });
300
+ });
301
+ },
302
+ async approveReviewArtifact(input) {
303
+ await execAsync(`gh pr review ${buildGitHubReviewTarget(input)} --approve${buildRepositoryFlag(input.repository)}`, {
304
+ cwd: input.cwd,
305
+ encoding: "utf-8"
306
+ });
307
+ },
308
+ async discoverArtifact(input) {
309
+ return getExistingGitHubArtifact(input.sourceBranch, input.cwd, input.repository);
310
+ },
311
+ async findMergedArtifact(input) {
312
+ return findMergedGitHubArtifact(input);
313
+ }
314
+ };
315
+ gitlabForgeAdapter = {
316
+ forge: "gitlab",
317
+ async createReviewArtifact(input) {
318
+ const existing = await getExistingGitLabArtifact(input.sourceBranch, input.cwd, input.repository);
319
+ if (existing) return existing;
320
+ const bodyEnv = input.body ? { PAN_MR_BODY: input.body } : {};
321
+ const bodyFlag = input.body ? " --description \"$PAN_MR_BODY\"" : "";
322
+ let stdout;
323
+ try {
324
+ ({stdout} = await execAsync(`glab mr create --source-branch ${input.sourceBranch} --target-branch ${input.targetBranch} --title "${input.title}"${bodyFlag}${buildRepositoryFlag(input.repository)}`, {
325
+ cwd: input.cwd,
326
+ encoding: "utf-8",
327
+ env: {
328
+ ...process.env,
329
+ ...bodyEnv
330
+ },
331
+ shell: "/bin/bash"
332
+ }));
333
+ } catch (error) {
334
+ const message = String(error?.message ?? error);
335
+ if (message.includes("409") && message.includes("open merge request already exists")) {
336
+ const existingAfterConflict = await getExistingGitLabArtifact(input.sourceBranch, input.cwd, input.repository);
337
+ if (existingAfterConflict) return existingAfterConflict;
338
+ }
339
+ throw error;
340
+ }
341
+ return {
342
+ forge: "gitlab",
343
+ created: true,
344
+ url: stdout.trim().split("\n").pop()?.trim() || stdout.trim(),
345
+ id: (await getExistingGitLabArtifact(input.sourceBranch, input.cwd, input.repository))?.id
346
+ };
347
+ },
348
+ async mergeReviewArtifact(input) {
349
+ const target = buildGitLabReviewTarget(input);
350
+ const squashFlag = input.method === "squash" || !input.method ? " --squash" : "";
351
+ await execAsync(`glab mr merge ${target}${buildRepositoryFlag(input.repository)}${squashFlag}`, {
352
+ cwd: input.cwd,
353
+ encoding: "utf-8"
354
+ });
355
+ },
356
+ async commentOnArtifact(input) {
357
+ const target = buildGitLabReviewTarget(input);
358
+ await withBodyFile(input.body, "pan-gl-mr-comment", async (bodyFile) => {
359
+ const bodyFlag = bodyFile ? ` --message-file "${bodyFile}"` : ` --message "${input.body.replace(/"/g, "\\\"")}"`;
360
+ await execAsync(`glab mr note ${target}${buildRepositoryFlag(input.repository)}${bodyFlag}`, {
361
+ cwd: input.cwd,
362
+ encoding: "utf-8"
363
+ });
364
+ });
365
+ },
366
+ async approveReviewArtifact(input) {
367
+ await execAsync(`glab mr approve ${buildGitLabReviewTarget(input)}${buildRepositoryFlag(input.repository)}`, {
368
+ cwd: input.cwd,
369
+ encoding: "utf-8"
370
+ });
371
+ },
372
+ async discoverArtifact(input) {
373
+ return getExistingGitLabArtifact(input.sourceBranch, input.cwd, input.repository);
374
+ },
375
+ async findMergedArtifact(input) {
376
+ return findMergedGitLabArtifact(input);
377
+ }
378
+ };
379
+ }));
380
+ //#endregion
381
+ export { parseArtifactRef as i, getForgeAdapter as n, init_forge as r, GITHUB_MERGE_TIMEOUT_MS as t };
382
+
383
+ //# sourceMappingURL=forge-CZbSg6Ds.js.map
@@ -0,0 +1,3 @@
1
+ import { n as getForgeAdapter, r as init_forge } from "./forge-CZbSg6Ds.js";
2
+ init_forge();
3
+ export { getForgeAdapter };
@@ -3841,4 +3841,4 @@ var init_from = __esmMin((() => {
3841
3841
  //#endregion
3842
3842
  export { File as a, init_esm_min as i, FormData as n, Blob as o, formDataToBlob as r, init_fetch_blob as s, init_from as t };
3843
3843
 
3844
- //# sourceMappingURL=from-CJ_aH5jD.js.map
3844
+ //# sourceMappingURL=from-D_4_dk7i.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-BrL_VTRr.js";
2
+ import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-BdewJ_g9.js";
3
3
  import { Worker } from "node:worker_threads";
4
4
  //#region ../../lib/memory/fts-db.ts
5
5
  async function getMemoryFtsDatabase(projectId) {
@@ -143,4 +143,4 @@ var init_fts_db = __esmMin((() => {
143
143
  //#endregion
144
144
  export { withMemoryFtsDatabase as a, runMemoryFtsTransaction as i, init_fts_db as n, runMemoryFtsStatement as r, closeMemoryFtsDatabases as t };
145
145
 
146
- //# sourceMappingURL=fts-db-CKgg0VKg.js.map
146
+ //# sourceMappingURL=fts-db-BeOomFa-.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
2
  import { n as openDatabase, t as init_driver } from "./driver-CKVGi51s.js";
3
- import { i as init_paths, o as resolveFtsDbPath } from "./paths-_zEts6wc.js";
3
+ import { i as init_paths, o as resolveFtsDbPath } from "./paths-cXmOwSbh.js";
4
4
  import { dirname } from "node:path";
5
5
  import { mkdirSync } from "node:fs";
6
6
  //#region ../../lib/memory/fts-operations.ts
@@ -131,4 +131,4 @@ var init_fts_operations = __esmMin((() => {
131
131
  //#endregion
132
132
  export { runMemoryFtsTransactionSync as a, runMemoryFtsStatementSync as i, getMemoryFtsDatabaseSync as n, init_fts_operations as r, closeMemoryFtsDatabasesInProcess as t };
133
133
 
134
- //# sourceMappingURL=fts-operations-BrL_VTRr.js.map
134
+ //# sourceMappingURL=fts-operations-BdewJ_g9.js.map
@@ -0,0 +1,3 @@
1
+ import { a as init_git_utils, c as rehydrateHeadAnchor, i as hasStaleLocks, l as renderWorkspaceGitShowPromise, n as formatAnchorShort, o as parseCompositeSnapshot, r as getWorkspaceGitInfo, s as parseWorkspaceHeadAnchor, t as cleanupStaleLocks, u as snapshotWorkspaceHeadsPromise } from "./git-utils-ameCgDdy.js";
2
+ init_git_utils();
3
+ export { cleanupStaleLocks, formatAnchorShort, getWorkspaceGitInfo, hasStaleLocks, parseCompositeSnapshot, parseWorkspaceHeadAnchor, rehydrateHeadAnchor, renderWorkspaceGitShowPromise, snapshotWorkspaceHeadsPromise };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ar as GitError, ir as FsError, mr as init_errors } from "./config-yaml-DvyMuOle.js";
2
+ import { Er as GitError, Fr as init_errors, Tr as FsError } from "./config-yaml-CmOPzmBb.js";
3
3
  import { Effect } from "effect";
4
4
  import { existsSync, readdirSync, unlinkSync } from "fs";
5
5
  import { join } from "path";
@@ -142,6 +142,43 @@ async function cleanupStaleLocksPromise(repoPath, options) {
142
142
  }
143
143
  return result;
144
144
  }
145
+ /**
146
+ * Parse a polyrepo head anchor such as `fe@<sha> api@<sha>`.
147
+ * Plain single-repo refs return null. Malformed composite anchors fail before
148
+ * any caller can accidentally pass the whitespace-containing value to git.
149
+ */
150
+ function parseWorkspaceHeadAnchor(anchor) {
151
+ const normalized = anchor.trim();
152
+ if (!normalized.includes("@")) {
153
+ if (/\s/.test(normalized)) throw new Error(`Invalid workspace head anchor: ${anchor}`);
154
+ return null;
155
+ }
156
+ return normalized.split(/\s+/).map((token) => {
157
+ const match = /^([^@\s]+)@([0-9a-fA-F]{40,64})$/.exec(token);
158
+ if (!match) throw new Error(`Invalid workspace head anchor token '${token}' in '${anchor}'`);
159
+ return {
160
+ repoKey: match[1],
161
+ sha: match[2]
162
+ };
163
+ });
164
+ }
165
+ /**
166
+ * Render `git show` for a single-repo ref or every entry in a polyrepo anchor.
167
+ * Composite entries are resolved to their nested worktree and labeled using
168
+ * the same repo-section convention as review and inspect diff summaries.
169
+ */
170
+ async function renderWorkspaceGitShowPromise(issueId, workspacePath, anchor, args, gitShow) {
171
+ const entries = parseWorkspaceHeadAnchor(anchor);
172
+ if (!entries) return gitShow(workspacePath, anchor.trim(), args);
173
+ if (!issueId) throw new Error(`Cannot resolve composite workspace head anchor '${anchor}' without an issue id`);
174
+ const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-CRE6Ykow.js");
175
+ const rootsByKey = new Map(resolveWorkspaceRepoRootsSync(issueId, workspacePath).map((root) => [root.repoKey, root]));
176
+ return (await Promise.all(entries.map(async ({ repoKey, sha }) => {
177
+ const root = rootsByKey.get(repoKey);
178
+ if (!root) throw new Error(`Composite workspace head anchor repo '${repoKey}' was not found in ${workspacePath}`);
179
+ return `── ${repoKey} ──\n${(await gitShow(root.dir, sha, args)).trimEnd()}`;
180
+ }))).join("\n");
181
+ }
145
182
  async function getWorkspaceGitInfoPromise(workspacePath) {
146
183
  try {
147
184
  const [headResult, branchResult] = await Promise.all([execAsync("git rev-parse HEAD", { cwd: workspacePath }), execAsync("git rev-parse --abbrev-ref HEAD", { cwd: workspacePath })]);
@@ -154,6 +191,59 @@ async function getWorkspaceGitInfoPromise(workspacePath) {
154
191
  throw new Error(`getWorkspaceGitInfo failed for ${workspacePath}: ${msg}`);
155
192
  }
156
193
  }
194
+ /** Rehydrate a persisted anchor after it crosses an unbranded storage boundary. */
195
+ function rehydrateHeadAnchor(anchor) {
196
+ return anchor;
197
+ }
198
+ function parseCompositeSnapshot(snapshot) {
199
+ const heads = /* @__PURE__ */ new Map();
200
+ if (!snapshot) return heads;
201
+ for (const token of snapshot.split(/\s+/)) {
202
+ const separator = token.lastIndexOf("@");
203
+ if (separator <= 0 || separator === token.length - 1) continue;
204
+ heads.set(token.slice(0, separator), token.slice(separator + 1));
205
+ }
206
+ return heads;
207
+ }
208
+ function formatAnchorShort(anchor) {
209
+ return anchor.split(/\s+/).map((token) => {
210
+ const separator = token.lastIndexOf("@");
211
+ if (separator <= 0 || separator === token.length - 1) return token.substring(0, 8);
212
+ return `${token.slice(0, separator)}@${token.slice(separator + 1, separator + 9)}`;
213
+ }).join(" ");
214
+ }
215
+ /**
216
+ * Snapshot the code HEAD(s) of a workspace for drift comparison (PAN-2948).
217
+ *
218
+ * Monorepo: returns the workspace HEAD SHA (unchanged behavior). Polyrepo:
219
+ * returns a composite `fe@<sha> api@<sha>` over the sub-repo worktrees —
220
+ * the wrapper repo at the workspace root is a one-commit artifacts repo whose
221
+ * SHA never changes, so snapshotting it makes every drift comparison
222
+ * (reviewedAtCommit vs lastVerifiedCommit, reviewer verdict anchors) report
223
+ * "no drift" forever. Composite snapshots compare equal iff every sub-repo
224
+ * head is unchanged; consumers that try to use the anchor as a git ref fail
225
+ * the ref lookup and fall back to their conservative full-rerun path.
226
+ *
227
+ * Its branded return value is the only legitimate source for reviewedAtCommit,
228
+ * lastVerifiedCommit, and roleRunHead. Persisted values regain that brand only
229
+ * through rehydrateHeadAnchor at an explicitly documented storage boundary.
230
+ */
231
+ async function snapshotWorkspaceHeadsPromise(issueId, workspacePath) {
232
+ const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-CRE6Ykow.js");
233
+ const roots = resolveWorkspaceRepoRootsSync(issueId, workspacePath);
234
+ const isPolyrepo = roots.some((root) => root.isPolyrepo);
235
+ const heads = [];
236
+ for (const root of roots) try {
237
+ const { stdout } = await execAsync("git rev-parse HEAD", {
238
+ cwd: root.dir,
239
+ encoding: "utf-8",
240
+ timeout: 1e4
241
+ });
242
+ const sha = stdout.trim();
243
+ if (sha) heads.push(isPolyrepo ? `${root.repoKey}@${sha}` : sha);
244
+ } catch {}
245
+ return heads.length > 0 ? heads.join(" ") : void 0;
246
+ }
157
247
  async function hasStaleLocksPromise(repoPath) {
158
248
  if (findGitLockFiles(repoPath).length === 0) return false;
159
249
  return (await hasRunningGitProcesses(repoPath, {})).status === "idle";
@@ -193,6 +283,6 @@ var init_git_utils = __esmMin((() => {
193
283
  hasStaleLocks = (repoPath) => Effect.promise(() => hasStaleLocksPromise(repoPath));
194
284
  }));
195
285
  //#endregion
196
- export { init_git_utils as i, getWorkspaceGitInfo as n, hasStaleLocks as r, cleanupStaleLocks as t };
286
+ export { init_git_utils as a, rehydrateHeadAnchor as c, hasStaleLocks as i, renderWorkspaceGitShowPromise as l, formatAnchorShort as n, parseCompositeSnapshot as o, getWorkspaceGitInfo as r, parseWorkspaceHeadAnchor as s, cleanupStaleLocks as t, snapshotWorkspaceHeadsPromise as u };
197
287
 
198
- //# sourceMappingURL=git-utils-BVa07a4a.js.map
288
+ //# sourceMappingURL=git-utils-ameCgDdy.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ir as FsError, mr as init_errors, or as GitHubApiError, rr as ConfigError } from "./config-yaml-DvyMuOle.js";
2
+ import { Dr as GitHubApiError, Fr as init_errors, Tr as FsError, wr as ConfigError } from "./config-yaml-CmOPzmBb.js";
3
3
  import { Effect } from "effect";
4
4
  import { existsSync, readFileSync } from "fs";
5
5
  import { join } from "path";
@@ -88,6 +88,16 @@ var init_concurrency = __esmMin((() => {
88
88
  withConcurrencyLimit = (tasks, max) => Effect.all(tasks, { concurrency: max });
89
89
  }));
90
90
  //#endregion
91
+ //#region ../../lib/advisory-checks.ts
92
+ function isAdvisoryCheckName(name) {
93
+ const normalized = name?.trim().toLowerCase().replace(/[^a-z0-9]/g, "");
94
+ return normalized != null && [...ADVISORY_CHECK_NAMES].some((advisory) => normalized.startsWith(advisory));
95
+ }
96
+ var ADVISORY_CHECK_NAMES;
97
+ var init_advisory_checks = __esmMin((() => {
98
+ ADVISORY_CHECK_NAMES = new Set(["coderabbit"]);
99
+ }));
100
+ //#endregion
91
101
  //#region ../../lib/github-app.ts
92
102
  /**
93
103
  * GitHub App Integration (PAN-536)
@@ -190,7 +200,7 @@ function generateJWT(appId, privateKey) {
190
200
  })).toString("base64url");
191
201
  const payload = Buffer.from(JSON.stringify({
192
202
  iat: now - 60,
193
- exp: now + 600,
203
+ exp: now + 540,
194
204
  iss: appId
195
205
  })).toString("base64url");
196
206
  const signer = createSign("SHA256");
@@ -309,7 +319,7 @@ function parsePullRequestRef(input) {
309
319
  throw new Error("GitHub PR reference requires either a PR URL or repository + numeric id");
310
320
  }
311
321
  function summarizeCiCheckRuns(runs) {
312
- const checkRuns = runs.map((run) => ({
322
+ const checkRuns = runs.filter((run) => !isAdvisoryCheckName(run.name)).map((run) => ({
313
323
  id: run.id,
314
324
  name: run.name || "GitHub check run",
315
325
  status: run.status || "unknown",
@@ -350,9 +360,9 @@ async function getCiCheckRunsStatePromise(owner, repo, sha) {
350
360
  }
351
361
  async function getCommitCheckState(owner, repo, sha) {
352
362
  const [combinedStatus, checkRuns] = await Promise.all([githubApi(`/repos/${owner}/${repo}/commits/${sha}/status`), githubApi(`/repos/${owner}/${repo}/commits/${sha}/check-runs`)]);
353
- const statusState = combinedStatus.state || "";
354
- const pendingStatus = statusState === "pending";
355
- const failedStatus = statusState === "failure" || statusState === "error";
363
+ const statuses = (combinedStatus.statuses ?? []).filter((status) => !isAdvisoryCheckName(status.context));
364
+ const pendingStatus = statuses.some((status) => status.state === "pending");
365
+ const failedStatus = statuses.some((status) => status.state === "failure" || status.state === "error");
356
366
  const ciState = summarizeCiCheckRuns(checkRuns.check_runs || []);
357
367
  return {
358
368
  pending: pendingStatus || ciState.pendingRuns.length > 0,
@@ -593,6 +603,7 @@ var execAsync, execFileAsync, APP_DIR, apiCatch, generateInstallationToken, getP
593
603
  var init_github_app = __esmMin((() => {
594
604
  init_errors();
595
605
  init_concurrency();
606
+ init_advisory_checks();
596
607
  execAsync = promisify(exec);
597
608
  execFileAsync = promisify(execFile);
598
609
  APP_DIR = join(homedir(), ".overdeck", "github-app");
@@ -651,6 +662,6 @@ var init_github_app = __esmMin((() => {
651
662
  });
652
663
  }));
653
664
  //#endregion
654
- export { withConcurrencyLimit as A, postOverdeckTestsStatus as C, createPromiseConcurrencyLimiter as D, verifyAppCanMerge as E, createSettledTtlPromiseCache as O, parsePullRequestRef as S, reportCommitStatus as T, listOpenIssuesWithLabelsPromise as _, getCiCheckRunsState as a, loadGitHubAppConfig as b, getIssueStatePromise as c, getPullRequestState as d, init_github_app as f, listOpenIssuesWithLabels as g, listIssuesWithAnyLabelPromise as h, getBotIdentity as i, withConcurrencyLimitPromise as j, init_concurrency as k, getMergeBackendStatus as l, isIntegrationPermissionError as m, generateInstallationToken as n, getCiCheckRunsStatePromise as o, isGitHubAppConfigured as p, getAppStatus as r, getIssueState as s, configureWorkspaceForBot as t, getPullRequestHeadState as u, listPullRequestsForHead as v, refreshWorkspaceToken as w, mergePullRequestWithApp as x, listPullRequestsForHeadPromise as y };
665
+ export { createSettledTtlPromiseCache as A, postOverdeckTestsStatus as C, init_advisory_checks as D, verifyAppCanMerge as E, withConcurrencyLimit as M, withConcurrencyLimitPromise as N, isAdvisoryCheckName as O, parsePullRequestRef as S, reportCommitStatus as T, listOpenIssuesWithLabelsPromise as _, getCiCheckRunsState as a, loadGitHubAppConfig as b, getIssueStatePromise as c, getPullRequestState as d, init_github_app as f, listOpenIssuesWithLabels as g, listIssuesWithAnyLabelPromise as h, getBotIdentity as i, init_concurrency as j, createPromiseConcurrencyLimiter as k, getMergeBackendStatus as l, isIntegrationPermissionError as m, generateInstallationToken as n, getCiCheckRunsStatePromise as o, isGitHubAppConfigured as p, getAppStatus as r, getIssueState as s, configureWorkspaceForBot as t, getPullRequestHeadState as u, listPullRequestsForHead as v, refreshWorkspaceToken as w, mergePullRequestWithApp as x, listPullRequestsForHeadPromise as y };
655
666
 
656
- //# sourceMappingURL=github-app-CMBdIFBQ.js.map
667
+ //# sourceMappingURL=github-app-CQ1Lo6LA.js.map
@@ -1,3 +1,3 @@
1
- import { C as postOverdeckTestsStatus, E as verifyAppCanMerge, S as parsePullRequestRef, T as reportCommitStatus, _ as listOpenIssuesWithLabelsPromise, a as getCiCheckRunsState, b as loadGitHubAppConfig, c as getIssueStatePromise, d as getPullRequestState, f as init_github_app, g as listOpenIssuesWithLabels, h as listIssuesWithAnyLabelPromise, i as getBotIdentity, l as getMergeBackendStatus, m as isIntegrationPermissionError, n as generateInstallationToken, o as getCiCheckRunsStatePromise, p as isGitHubAppConfigured, r as getAppStatus, s as getIssueState, t as configureWorkspaceForBot, u as getPullRequestHeadState, v as listPullRequestsForHead, w as refreshWorkspaceToken, x as mergePullRequestWithApp, y as listPullRequestsForHeadPromise } from "./github-app-CMBdIFBQ.js";
1
+ import { C as postOverdeckTestsStatus, E as verifyAppCanMerge, S as parsePullRequestRef, T as reportCommitStatus, _ as listOpenIssuesWithLabelsPromise, a as getCiCheckRunsState, b as loadGitHubAppConfig, c as getIssueStatePromise, d as getPullRequestState, f as init_github_app, g as listOpenIssuesWithLabels, h as listIssuesWithAnyLabelPromise, i as getBotIdentity, l as getMergeBackendStatus, m as isIntegrationPermissionError, n as generateInstallationToken, o as getCiCheckRunsStatePromise, p as isGitHubAppConfigured, r as getAppStatus, s as getIssueState, t as configureWorkspaceForBot, u as getPullRequestHeadState, v as listPullRequestsForHead, w as refreshWorkspaceToken, x as mergePullRequestWithApp, y as listPullRequestsForHeadPromise } from "./github-app-CQ1Lo6LA.js";
2
2
  init_github_app();
3
3
  export { configureWorkspaceForBot, generateInstallationToken, getAppStatus, getBotIdentity, getCiCheckRunsState, getCiCheckRunsStatePromise, getIssueState, getIssueStatePromise, getMergeBackendStatus, getPullRequestHeadState, getPullRequestState, isGitHubAppConfigured, isIntegrationPermissionError, listIssuesWithAnyLabelPromise, listOpenIssuesWithLabels, listOpenIssuesWithLabelsPromise, listPullRequestsForHead, listPullRequestsForHeadPromise, loadGitHubAppConfig, mergePullRequestWithApp, parsePullRequestRef, postOverdeckTestsStatus, refreshWorkspaceToken, reportCommitStatus, verifyAppCanMerge };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-B4itFzDo.js";
2
+ import { a as init_tracker_config, t as getGitHubConfig } 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, Effect, Layer } from "effect";
5
5
  //#region services/github-client.ts
@@ -241,4 +241,4 @@ var init_github_client = __esmMin((() => {
241
241
  //#endregion
242
242
  export { init_github_client as i, GitHubClientLive as n, GitHubClientOptionalLive as r, GitHubClient as t };
243
243
 
244
- //# sourceMappingURL=github-client--XVlDpwM.js.map
244
+ //# sourceMappingURL=github-client-BfyDxuRN.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_github_client, n as GitHubClientLive, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client--XVlDpwM.js";
1
+ import { i as init_github_client, n as GitHubClientLive, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-BfyDxuRN.js";
2
2
  init_github_client();
3
3
  export { GitHubClient, GitHubClientLive, GitHubClientOptionalLive };