@overdeck/desktop 0.45.24 → 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 (511) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +32 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DDCnXF58.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-BVwW4qRn.js → advancing-selfheal-De1L-Sb4.js} +6 -6
  7. package/server/{agent-gc-CHcnvonI.js → agent-gc-CBULruzm.js} +5 -5
  8. package/server/agent-state-VQk8fY9F.js +3 -0
  9. package/server/{agent-state-service-BsgWxZuB.js → agent-state-service-BlnSkRFA.js} +5 -5
  10. package/server/{agent-state-service-D5UGKIJL.js → agent-state-service-hZpxIw1E.js} +1 -1
  11. package/server/agents-BKKkxKgK.js +3 -0
  12. package/server/{agents-EbI0zCJl.js → agents-C5rWYhb6.js} +4 -4
  13. package/server/archive-planning-0FJ6Xd3b.js +2 -0
  14. package/server/{archive-planning-Du25Jtst.js → archive-planning-C0lAbNB_.js} +16 -24
  15. package/server/{artifact-index-jobs-CbEDfCDu.js → artifact-index-jobs-ug6ZxIP5.js} +2 -2
  16. package/server/{assemble-J2ZZ2C15.js → assemble-DnffNpOo.js} +2 -2
  17. package/server/{backlog-auto-trigger-2R2jog7n.js → backlog-auto-trigger-Dh-i9PQf.js} +3 -3
  18. package/server/{behavior-B3exJ42O.js → behavior-CfIg6pKp.js} +2 -2
  19. package/server/bridge-pool-patrol-CUFmjVDN.js +136 -0
  20. package/server/{briefing-freshness-D1wzUIWv.js → briefing-freshness-DHmCSLar.js} +2 -2
  21. package/server/{build-info-CZk_TITh.js → build-info-BP160gU7.js} +1 -1
  22. package/server/{build-info-Ie_D0_BT.js → build-info-CuFfxZxp.js} +5 -3
  23. package/server/{checkpoint-manager-BI1Wxoku.js → checkpoint-manager-DEWD82qK.js} +2 -2
  24. package/server/{checkpoint-manager-DwbQoqrC.js → checkpoint-manager-Dxh0FYsv.js} +1 -1
  25. package/server/checkpoint-worker.js +1 -1
  26. package/server/{checkpoints-CQB1h765.js → checkpoints-CZvbtLnr.js} +2 -2
  27. package/server/{checkpoints-BJIs5QIA.js → checkpoints-DMTgXuLG.js} +1 -1
  28. package/server/{claude-hooks-provision-8Ngo8TpT.js → claude-hooks-provision-CN-xo-do.js} +1 -1
  29. package/server/{claude-hooks-provision-D8GXF3_s.js → claude-hooks-provision-fvy4RD2b.js} +13 -2
  30. package/server/{claude-permissions-DNWEVV6z.js → claude-permissions-CN0cSCPp.js} +2 -2
  31. package/server/{claude-settings-overlay-CEdaqpWI.js → claude-settings-overlay-CJn35FHQ.js} +2 -2
  32. package/server/{claude-settings-overlay-DWy-Bb4Y.js → claude-settings-overlay-Dabi9slj.js} +1 -1
  33. package/server/cli-DmXETsw-.js +3 -0
  34. package/server/{cli-RoOx5DUf.js → cli-oCWYA1pE.js} +9 -9
  35. package/server/{cliproxy-C8a1vtTU.js → cliproxy-C8mB3KuB.js} +2 -2
  36. package/server/{cliproxy-fHfIeiGd.js → cliproxy-PGwTX_o8.js} +1 -1
  37. package/server/{close-issue-DoOifFIK.js → close-issue-D5MF5GqF.js} +5 -5
  38. package/server/{closed-issue-reaper-CktPXo8m.js → closed-issue-reaper-CJ24u0Zt.js} +1 -1
  39. package/server/{closed-issue-reaper-Bk3SU4RC.js → closed-issue-reaper-Cltx86x5.js} +37 -16
  40. package/server/{codex-GcHuUF-k.js → codex-BdEsUFWh.js} +1 -1
  41. package/server/{codex-BZXGhUVB.js → codex-Drlf5Xhf.js} +36 -7
  42. package/server/{codex-parser-CFZ1_1Jl.js → codex-parser-DpB89Vqa.js} +2 -2
  43. package/server/compaction-continuation-K2AxQX4H.js +200 -0
  44. package/server/{config-CKxYiCmX.js → config-B2IMcBxx.js} +4 -3
  45. package/server/{config-DzV30TOm.js → config-DV-grfQc.js} +1 -1
  46. package/server/{config-BZ0sHTju.js → config-Dr3pW6w6.js} +2 -2
  47. package/server/{config-yaml-DySPNmKN.js → config-yaml-CmOPzmBb.js} +268 -14
  48. package/server/{conflict-gate-BaCVrH-N.js → conflict-gate-B9cN3SBi.js} +4 -4
  49. package/server/{conflict-gate-BhAY7TUd.js → conflict-gate-Dh754uyA.js} +1 -1
  50. package/server/{context-layers-BrPmE__h.js → context-layers-D6LZo3l1.js} +2 -2
  51. package/server/{context-layers-igZ4FI4_.js → context-layers-dR5YxHYB.js} +3 -3
  52. package/server/{control-settings-BQp7_4uD.js → control-settings-C7DUehE1.js} +49 -19
  53. package/server/{conversation-compaction-CgrR8YYp.js → conversation-compaction-BoqdDXWF.js} +8 -8
  54. package/server/{conversation-compaction-eQB5CkOe.js → conversation-compaction-Dj4FAKoZ.js} +1 -1
  55. package/server/{conversation-service-DPJ71F33.js → conversation-service-5aCnq1zR.js} +8 -7
  56. package/server/conversation-service-BCxl4f8Z.js +3 -0
  57. package/server/{conversations-6AfUfbwc.js → conversations-BUpYsOZg.js} +4 -4
  58. package/server/{conversations-CAsJF9kh.js → conversations-C34dyIb9.js} +1 -1
  59. package/server/{cost-B2ddP6wq.js → cost-Bgcub5kW.js} +12 -2
  60. package/server/{cost-R-m6Yi-W.js → cost-CvxRrucd.js} +3 -3
  61. package/server/{cost-sync-BsN6ER0n.js → cost-sync-Dv3LUaNW.js} +3 -3
  62. package/server/{dag-B1ucnjDU.js → dag-ombYYt4s.js} +2 -2
  63. package/server/{dangerous-git-ops-BXqeWVSf.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-CU_cAYSR.js → deacon-hi9KLPLT.js} +2933 -2704
  67. package/server/{deacon-nudge-log-6wVqAaqz.js → deacon-nudge-log-BNBebzeL.js} +3 -3
  68. package/server/deacon-pending-lifecycle-Cpk0k7Hi.js +33 -0
  69. package/server/{deacon-swarm-BXZZ1Z2-.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-AiFoP8dw.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-C3F-tihF.js → deploy-window-rpqpWqHA.js} +40 -16
  79. package/server/{dev-supervisor-bcOWqdQE.js → dev-supervisor-CC46Ig8q.js} +2 -2
  80. package/server/{devcontainer-renderer-_d6XhyND.js → devcontainer-renderer-68CSCRnu.js} +3 -3
  81. package/server/{dist-Cb_0uvpS.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-DcMTFTUC.js → docker-Dam7mbIB.js} +2 -2
  86. package/server/{dod-C6n9RV3G.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-DNi-ono3.js → ensure-devcontainer-B057YA81.js} +4 -4
  90. package/server/{ensure-devcontainer-BZgOhRo7.js → ensure-devcontainer-C98V8yW-.js} +1 -1
  91. package/server/{esm-shims-OSHAYaS1.js → esm-shims-Br9BPdkR.js} +1 -1
  92. package/server/{event-store-EV2cMiXj.js → event-store-ELqkVOn0.js} +1 -1
  93. package/server/{event-store-CQL6NeqB.js → event-store-zY5MJHgF.js} +23 -4
  94. package/server/{events-BTdrdEq8.js → events-D6pyqhzM.js} +1 -1
  95. package/server/{events-DTfAe4My.js → events-D9PR1IC0.js} +3 -3
  96. package/server/{factory-CFibJuaw.js → factory-CRoOpGsF.js} +5 -5
  97. package/server/{feature-registry-population-DKZFMbFt.js → feature-registry-population--YUXU999.js} +4 -4
  98. package/server/{feature-registry-storage-BdPuLcBX.js → feature-registry-storage-BORBTo0y.js} +2 -2
  99. package/server/{features-ez2271oH.js → features--nFkJY8v.js} +2 -2
  100. package/server/{feedback-target-CoFDHiM8.js → feedback-target-C0ZzyHvU.js} +1 -1
  101. package/server/{feedback-target-7mqqwrX6.js → feedback-target-Dt9BsapX.js} +8 -8
  102. package/server/{feedback-writer-CY5L1lB7.js → feedback-writer-BG0RUZiu.js} +5 -5
  103. package/server/{feedback-writer-D3a22RCd.js → feedback-writer-D1fm-5Z8.js} +1 -1
  104. package/server/{flywheel-SVF02Jpq.js → flywheel-BekukH4i.js} +1 -1
  105. package/server/{flywheel-DHrgCphM.js → flywheel-BiT3odRb.js} +23 -15
  106. package/server/{flywheel-DzGtWnJ1.js → flywheel-CLVB55Be.js} +16 -15
  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-kNxT0bZC.js → from-D_4_dk7i.js} +1 -1
  112. package/server/{fts-db-CE46vDkZ.js → fts-db-BeOomFa-.js} +2 -2
  113. package/server/{fts-operations-CqY6zl-i.js → fts-operations-BdewJ_g9.js} +2 -2
  114. package/server/git-utils-CI6cwyyC.js +3 -0
  115. package/server/{git-utils-CRw2zLPC.js → git-utils-ameCgDdy.js} +30 -5
  116. package/server/{github-app-C3QrAUd0.js → github-app-CQ1Lo6LA.js} +3 -3
  117. package/server/{github-app-ClZ2lk8D.js → github-app-DtAsvwzK.js} +1 -1
  118. package/server/{github-client-BnIsSrEN.js → github-client-BfyDxuRN.js} +2 -2
  119. package/server/{github-client-DfQYVUaw.js → github-client-Cj0yl_07.js} +1 -1
  120. package/server/github-pr-lookup-BDq6Wznz.js +58 -0
  121. package/server/{harness-binary-DPUi-Pv8.js → harness-binary-DqkftwTb.js} +2 -2
  122. package/server/{harness-resolve-3lNZkyT4.js → harness-resolve-CqMqM1Mb.js} +4 -4
  123. package/server/{health-events-BBcTYQKU.js → health-events-CazRxJUS.js} +2 -2
  124. package/server/{health-events-BDOHby5Q.js → health-events-_xfTaOUs.js} +1 -1
  125. package/server/{hooks-CKZgXlJb.js → hooks-BO3QT1sn.js} +2 -2
  126. package/server/{hooks-DPVX1rwQ.js → hooks-BnJsxlSq.js} +1 -1
  127. package/server/{hume-Cz8igP9E.js → hume-CDYJxqx-.js} +2 -2
  128. package/server/hume-Dq--7rOQ.js +3 -0
  129. package/server/{idle-stack-reaper-CuLF0j2H.js → idle-stack-reaper-BYqERdkE.js} +1 -1
  130. package/server/{idle-stack-reaper-DDIRwxUY.js → idle-stack-reaper-CnGx_PO_.js} +99 -6
  131. package/server/in-flight-guard-Bq3epG58.js +45 -0
  132. package/server/{infra-BEqFxlJc.js → infra-BjuxvjdS.js} +70 -5
  133. package/server/{injection-CPUIqNhI.js → injection-DZxlV2al.js} +1 -1
  134. package/server/{injection-C8aiVJrF.js → injection-UCf8EsjX.js} +7 -7
  135. package/server/{inspect-agent-BLuJ1AkT.js → inspect-agent-6kylZnrm.js} +26 -25
  136. package/server/inspect-agent-BVwDrVrz.js +2 -0
  137. package/server/{internal-token-s0-oKybJ.js → internal-token-DvMTQSOS.js} +2 -2
  138. package/server/{internal-token-BrcU6qfe.js → internal-token-M9omeXM1.js} +1 -1
  139. package/server/{io-C9kF1wtJ.js → io-VHvc0Ssp.js} +43 -26
  140. package/server/{issue-closed-CDJk4pIp.js → issue-closed-B6KJkmHZ.js} +7 -7
  141. package/server/{issue-lifecycle-B8sZHVHh.js → issue-lifecycle-9gk3fnXN.js} +1 -1
  142. package/server/{issue-lifecycle-ojZAzDBP.js → issue-lifecycle-C4Zj0WmE.js} +34 -28
  143. package/server/{issue-service-singleton-Yx5DdmVJ.js → issue-service-singleton-DmCh7EHj.js} +10 -10
  144. package/server/{issue-service-singleton-BvJ09SaR.js → issue-service-singleton-PMx8F1jr.js} +1 -1
  145. package/server/{issues-BMmP_77e.js → issues-CgnQ1OGQ.js} +2 -2
  146. package/server/{jsonl-parser-BXSlHwEh.js → jsonl-parser-DJOH_O-w.js} +5 -4
  147. package/server/{label-cleanup-B0UJwnv5.js → label-cleanup-Dv7AV_R1.js} +3 -3
  148. package/server/{label-reconciler-B4iOAjlC.js → label-reconciler--F85rufp.js} +4 -4
  149. package/server/{lifecycle-yPd___5E.js → lifecycle-CTdOWYMi.js} +2 -2
  150. package/server/{lifecycle-xmBfK2GJ.js → lifecycle-DDN8ApVY.js} +6 -7
  151. package/server/{lifecycle-io-BREGpnLk.js → lifecycle-io-D-lGdzK3.js} +5 -5
  152. package/server/{lifecycle-io-DPo7x11I.js → lifecycle-io-D_zTLvP1.js} +1 -1
  153. package/server/{linear-client-BsuUvkdA.js → linear-client-BQU36QqE.js} +2 -2
  154. package/server/{linear-client-CTskEeT_.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-CefQNAnq.js → merge-Bpx4jjht.js} +13 -11
  159. package/server/{merge-agent-4WOWlSYA.js → merge-agent-DdMVSV2Y.js} +233 -83
  160. package/server/{merge-agent-CKkgIBPB.js → merge-agent-DrXa1CpW.js} +1 -1
  161. package/server/{merge-batch-ClFn2T-y.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-B1DiziGU.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-BfaTyXsw.js → merge-rebase-xLnMlw5h.js} +3 -3
  168. package/server/{merge-set-DJ8-UErs.js → merge-set-DH7ot3yz.js} +11 -5
  169. package/server/merge-set-DzsOTBg5.js +3 -0
  170. package/server/{merge-sync-VPV28g0g.js → merge-sync-CQ-LgZ1_.js} +406 -153
  171. package/server/merge-sync-Ca7F5JnQ.js +3 -0
  172. package/server/{merge-train-CHopycP0.js → merge-train-DTEMyIu4.js} +18 -8
  173. package/server/{merge-train-deps-D1cOZzy2.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-duPAfSBw.js → multipart-parser-IMSBfePV.js} +2 -2
  178. package/server/{no-resume-mode-Nw29vaFb.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/lib/cache/memory-cache-store.js +54 -9
  270. package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  271. package/server/node_modules/undici/lib/core/request.js +12 -1
  272. package/server/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
  273. package/server/node_modules/undici/lib/global.js +36 -16
  274. package/server/node_modules/undici/lib/handler/cache-handler.js +236 -116
  275. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
  276. package/server/node_modules/undici/lib/handler/retry-handler.js +24 -0
  277. package/server/node_modules/undici/lib/interceptor/cache.js +152 -62
  278. package/server/node_modules/undici/lib/interceptor/decompress.js +5 -2
  279. package/server/node_modules/undici/lib/util/cache.js +328 -66
  280. package/server/node_modules/undici/lib/util/date.js +23 -6
  281. package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
  282. package/server/node_modules/undici/package.json +1 -1
  283. package/server/{orphan-proposed-reconciler-CTSGcK8p.js → orphan-proposed-reconciler-CWmOdM9-.js} +1 -1
  284. package/server/{orphan-proposed-reconciler-BvKkWMJQ.js → orphan-proposed-reconciler-Dg6U4ADZ.js} +24 -15
  285. package/server/package-lock.json +28 -28
  286. package/server/package.json +1 -1
  287. package/server/{pan-dir-B0c3w0Ya.js → pan-dir-ubraCiUg.js} +24 -10
  288. package/server/{paths-D-xWGHdh.js → paths-cXmOwSbh.js} +2 -2
  289. package/server/pending-lifecycle-claim-DEteYdS9.js +110 -0
  290. package/server/{pickup-DUCLWrJY.js → pickup-D8xtG1J2.js} +1 -1
  291. package/server/pipeline-membership-BGSvkT2M.js +3 -0
  292. package/server/pipeline-membership-CrAPLYtf.js +57 -0
  293. package/server/{pipeline-membership-mY3GprlK.js → pipeline-membership-gather-CET40frr.js} +177 -109
  294. package/server/pipeline-membership-gather-DTfcgxLl.js +3 -0
  295. package/server/{pipeline-notifier-BXkJzDC4.js → pipeline-notifier-BuQ0e4hF.js} +2 -2
  296. package/server/{pipeline-notifier-BJr8gQX6.js → pipeline-notifier-ImNXknf0.js} +1 -1
  297. package/server/post-merge-lifecycle-worker-DbO10pum.js +50 -0
  298. package/server/{project-pipelines-C0MWUeCU.js → project-pipelines-Bim6bThI.js} +2 -2
  299. package/server/{project-repos-B6GycDh9.js → project-repos-C0nuoBGv.js} +7 -3
  300. package/server/project-repos-CRE6Ykow.js +3 -0
  301. package/server/projects-B03Wr-xc.js +3 -0
  302. package/server/{prompts-DxzFXuLl.js → prompts-BEx08AIu.js} +2 -2
  303. package/server/{providers-u4Ga0jOr.js → providers-D7IluJe0.js} +1 -1
  304. package/server/{providers-qQAwGQDW.js → providers-evXhiQeg.js} +7 -7
  305. package/server/public/assets/{chunk-BO2N2NFS-BamJdinX.js → chunk-BO2N2NFS-D1s4-Sqp.js} +4 -4
  306. package/server/public/assets/{diagram-OG6HWLK6-DfOB8-w4.js → diagram-OG6HWLK6-1gdMoSF7.js} +1 -1
  307. package/server/public/assets/{dist-D7zYSEA6.js → dist-CxAOHbil.js} +1 -1
  308. package/server/public/assets/{dist-ByIuzMQW.js → dist-DqDRYW6P.js} +3 -3
  309. package/server/public/assets/{ganttDiagram-6RSMTGT7-EdmRyXL3.js → ganttDiagram-6RSMTGT7-BYex-Ec7.js} +1 -1
  310. package/server/public/assets/{highlighted-body-OFNGDK62-MerOfTX8.js → highlighted-body-OFNGDK62-DlVkiG0S.js} +1 -1
  311. package/server/public/assets/index-Cc7cnFC4.css +1 -0
  312. package/server/public/assets/index-K0hAYCgV.js +807 -0
  313. package/server/public/assets/{linear-BBbArIcK.js → linear-B4cuEFmO.js} +1 -1
  314. package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +1 -0
  315. package/server/public/assets/{pieDiagram-4H26LBE5-BKIddiJN.js → pieDiagram-4H26LBE5-CBHNBIJQ.js} +1 -1
  316. package/server/public/assets/{prod-B8vYiu52.js → prod-CN2nHBvX.js} +4 -4
  317. package/server/public/assets/{quadrantDiagram-W4KKPZXB-D6RtoULk.js → quadrantDiagram-W4KKPZXB-Bom87VOQ.js} +1 -1
  318. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CLrCedZX.js → sankeyDiagram-5OEKKPKP-UrBeyLxk.js} +1 -1
  319. package/server/public/assets/{xychartDiagram-2RQKCTM6-hznR8DYl.js → xychartDiagram-2RQKCTM6-DhkbrIxR.js} +1 -1
  320. package/server/public/index.html +2 -2
  321. package/server/{pull-requests-7N8WKseP.js → pull-requests-Cv7LxzUN.js} +1 -1
  322. package/server/{pull-requests-_lHueOHW.js → pull-requests-DHWiKxo7.js} +19 -10
  323. package/server/{queries-CjNIf-Ub.js → queries-DHJm7bTd.js} +631 -110
  324. package/server/{rally-CyWT_lNO.js → rally-B71M9f4o.js} +3 -3
  325. package/server/rally-YDjU513q.js +3 -0
  326. package/server/{rally-api-ClOSd-Tt.js → rally-api-D5uXN08-.js} +1 -1
  327. package/server/{rally-api-C8e_1JRi.js → rally-api-Dkqmok65.js} +2 -2
  328. package/server/{rally-client-lc-nokqr.js → rally-client-Bfqm6XI4.js} +4 -4
  329. package/server/{rally-client-sgtVqzNU.js → rally-client-CxsA6ExK.js} +1 -1
  330. package/server/{reap-terminal-sessions-7KeHv1R1.js → reap-terminal-sessions-BQ23nriz.js} +2 -2
  331. package/server/{reap-terminal-sessions-BtHPo6Xc.js → reap-terminal-sessions-CvmwaqKv.js} +2 -2
  332. package/server/{rebuild-stack-lwtsW0GO.js → rebuild-stack-0EEYReVZ.js} +16 -7
  333. package/server/{rebuild-stack-CFvcBHsS.js → rebuild-stack-qeRqHZxH.js} +2 -2
  334. package/server/{reconstruct-cache-C3Ui7ojV.js → reconstruct-cache-BbYFsqLa.js} +7 -6
  335. package/server/record-CtroO946.js +3 -0
  336. package/server/record-update-DH6dLJID.js +3 -0
  337. package/server/{record-update-dE1Aw83j.js → record-update-Z0QCxmMp.js} +124 -34
  338. package/server/{recovery-trip-BvRWfUXM.js → recovery-trip-eJe26h-f.js} +2 -2
  339. package/server/{release-engine-Cx48W7z8.js → release-engine-lPUp-MTd.js} +5 -5
  340. package/server/{release-set-CQfuN9-v.js → release-set-BwGeyZKX.js} +3 -3
  341. package/server/{remote-C_2hasl7.js → remote-BCd02Es1.js} +3 -3
  342. package/server/{remote-ChgimyYa.js → remote-CVGUhXMV.js} +3 -3
  343. package/server/{remote-agents-CA3Ihlxj.js → remote-agents-C1bssi41.js} +2 -2
  344. package/server/{remote-agents-By1ige5O.js → remote-agents-C_VxssLU.js} +300 -46
  345. package/server/{remote-completion-fVe9e_3u.js → remote-completion-DAB0P706.js} +12 -12
  346. package/server/resume-u9byntrq.js +3 -0
  347. package/server/{review-agent-DNboMyW4.js → review-agent-CD4RCI0Y.js} +1 -1
  348. package/server/{review-agent-CIGOQYBD.js → review-agent-CHhI66UP.js} +60 -47
  349. package/server/{review-artifacts-nRDPuMxd.js → review-artifacts-DSMRIfuJ.js} +7 -6
  350. package/server/{review-context-2uj-YQ8J.js → review-context-oFuBbiEE.js} +8 -8
  351. package/server/{in-flight-guard-CAAkqPLu.js → review-convoy-liveness-CpzrcJ5F.js} +3 -44
  352. package/server/review-status-BZH8h-6W.js +3 -0
  353. package/server/review-status-emit-CUExtHd5.js +50 -0
  354. package/server/{review-status-enrichment-Dci-ZwEt.js → review-status-enrichment-QV_hQkgS.js} +4 -4
  355. package/server/{review-status-source-CxuEjLGg.js → review-status-source-CpvJnvnQ.js} +24 -3
  356. package/server/review-status-source-ylw5QZUR.js +3 -0
  357. package/server/{review-status-sync-BTOpxtTC.js → review-status-sync-483sujRo.js} +2 -2
  358. package/server/{review-status-sync-DSDK3OMy.js → review-status-sync-NaWvI9Xf.js} +1 -1
  359. package/server/review-status-yljtTd-q.js +7521 -0
  360. package/server/{review-verdict-feedback-CTd4QMBu.js → review-verdict-feedback-BPDn4li_.js} +1 -1
  361. package/server/{review-verdict-feedback-CCjVA7Uk.js → review-verdict-feedback-CELeUinh.js} +48 -8
  362. package/server/{rollup-FGsKki9R.js → rollup-DTNvelz9.js} +8 -8
  363. package/server/{rollup-BKQC7jp4.js → rollup-DYZfq1c4.js} +1 -1
  364. package/server/{scanner-CnqEZeDy.js → scanner-CV35oSn4.js} +8 -7
  365. package/server/{sequence-io-D909zgeH.js → sequence-io-DF_8iuhV.js} +4 -4
  366. package/server/{sequencer-agent-CzkcK6P5.js → sequencer-agent-B2WeCtGi.js} +5 -5
  367. package/server/server.js +1952 -578
  368. package/server/{service-CLeAoU6G.js → service-Br9rpBNA.js} +81 -64
  369. package/server/{session-fork-CHI1XvL9.js → session-fork-D0LY152N.js} +2 -2
  370. package/server/{session-history-BT3IvqhC.js → session-history-BUyK29eq.js} +4 -4
  371. package/server/{settings-BTMvpNFU.js → settings-Bse1Pdcj.js} +3 -3
  372. package/server/settings-CdvIF84R.js +2 -0
  373. package/server/{settings-C0zgxOGf.js → settings-CvVGqNEs.js} +3 -2
  374. package/server/{shadow-engineering-BJfgm-hX.js → shadow-engineering-BWLa8ODz.js} +2 -2
  375. package/server/{shadow-state-7a-524T8.js → shadow-state-B4fpKxOO.js} +2 -2
  376. package/server/{shadow-state-DnDyjujH.js → shadow-state-FV6PHfEW.js} +1 -1
  377. package/server/{shadow-utils-Db3oroFG.js → shadow-utils-D7asqxOZ.js} +2 -2
  378. package/server/{ship-log-D9MlVzYU.js → ship-log-xplJ8t75.js} +1 -1
  379. package/server/{smart-compaction-CV2ukKND.js → smart-compaction-CPp2Ykf6.js} +1 -1
  380. package/server/{smart-compaction-KCYScAU1.js → smart-compaction-D3U_79f-.js} +8 -7
  381. package/server/{spawn-planning-session-qUC2VWu3.js → spawn-planning-session-1nFi3gfk.js} +1 -1
  382. package/server/{spawn-planning-session-DKpdFyOC.js → spawn-planning-session-DGfZ5B8D.js} +17 -17
  383. package/server/{specialist-completion-Ky9wCDpb.js → specialist-completion-Br48eiDP.js} +1 -1
  384. package/server/{specialist-context-Bn3dCGS2.js → specialist-context-cVbGnTa3.js} +5 -5
  385. package/server/{specialist-handoff-logger-CMEwYxa2.js → specialist-handoff-logger-DK-GTz4s.js} +2 -2
  386. package/server/{specialist-logs-C5p8G7tx.js → specialist-logs-Cl5-hqT8.js} +3 -3
  387. package/server/{specialists-CC4r-c2s.js → specialists-CNfYO3G2.js} +975 -227
  388. package/server/{specialists-jiuuyVkp.js → specialists-Cicieuzu.js} +18 -18
  389. package/server/{specialists-CShuVGWT.js → specialists-JHsdU3pA.js} +1 -1
  390. package/server/{specialists-DM6bWjsi.js → specialists-Tdezg_6N.js} +1 -1
  391. package/server/specs-Bt7WJDoC.js +3 -0
  392. package/server/src-CRmCHlma.js +11408 -0
  393. package/server/{src-CXmtj0im.js → src-Ck028hjO.js} +6 -6
  394. package/server/{src-CdmnTM2m.js → src-UWcGe0Ix.js} +3 -3
  395. package/server/{stack-health-Bn3o8FBX.js → stack-health-CJLMrLBl.js} +1 -1
  396. package/server/{stack-health-DxSdG9cW.js → stack-health-DqSqx0zv.js} +7 -5
  397. package/server/{stale-task-claims-KJKxxiiQ.js → stale-task-claims-CYFOUNlT.js} +4 -4
  398. package/server/{staleness-CT34nwr9.js → staleness-BQ-0gMYK.js} +1 -1
  399. package/server/{staleness-DPm7ClwA.js → staleness-D47CUJok.js} +1 -1
  400. package/server/{state-home-Cn_Qu8IX.js → state-home-BYV7qZTW.js} +2 -2
  401. package/server/{state-mapping-BL_-3Yt8.js → state-mapping-BVldLhBf.js} +1 -1
  402. package/server/{state-migrate-BGg2ZaOt.js → state-migrate-CvvBtS0Y.js} +4 -4
  403. package/server/{stuck-remediation-s9_2qfi6.js → stuck-remediation-Wt0UVvu1.js} +1 -1
  404. package/server/{stuck-remediation-DYuPRYYw.js → stuck-remediation-mkLC6G_t.js} +79 -22
  405. package/server/{substrate-bug-weights-service-B-FwCs5V.js → substrate-bug-weights-service-XfLAKnmK.js} +3 -3
  406. package/server/{summary-fork-DpcxN9tf.js → summary-fork-CD7GOts0.js} +2 -2
  407. package/server/{summary-fork-D1RAk9rJ.js → summary-fork-xiXBnWG9.js} +8 -8
  408. package/server/supervisor/{injection-budget-Csw5tqfJ.js → injection-budget-B5SbvDx2.js} +1 -1
  409. package/server/supervisor/{paths-DehGY2Fj.js → paths-K3noE4N_.js} +1 -1
  410. package/server/supervisor/pty-supervisor.js +49 -3
  411. package/server/supervisor/{pty-token-x-ea28Us.js → pty-token-B7lp0ElT.js} +2 -2
  412. package/server/{supervisor-wM4ooB5O.js → supervisor-DL788vos.js} +3 -3
  413. package/server/supervisor-UWiQNK-y.js +2 -0
  414. package/server/{swarm-readiness-DlP_UjHq.js → swarm-readiness-BV14DF5N.js} +3 -3
  415. package/server/{system-prerequisites-DUDj1YHf.js → system-prerequisites-pdWG6ZQs.js} +2 -2
  416. package/server/{teardown-workspace-DeTTImn-.js → teardown-workspace-l2F4_zim.js} +15 -16
  417. package/server/{test-agent-queue-MbxX5vqq.js → test-agent-queue-qakFIIGz.js} +6 -6
  418. package/server/{test-verdict-bWYBtqBg.js → test-verdict-BJYDggMm.js} +1 -1
  419. package/server/{test-verdict-gscuksPv.js → test-verdict-Gw-btEfb.js} +1 -1
  420. package/server/{tldr-daemon-BYFkts95.js → tldr-daemon-BKOYB616.js} +1 -1
  421. package/server/{tldr-daemon-C-69c3OI.js → tldr-daemon-CBaWkV9k.js} +2 -2
  422. package/server/{tmux-R7N7y-Mh.js → tmux-B1Wbxz5o.js} +3 -3
  423. package/server/{tmux-B6z7h_vZ.js → tmux-DQ6jB76i.js} +1 -1
  424. package/server/{launcher-generator-BBWG_SiS.js → tmux-dedup-DbN6MGzM.js} +428 -9
  425. package/server/{token-BK6t8BIT.js → token-Cxbk023d.js} +2 -2
  426. package/server/{token-util-DxXu-vd1.js → token-util-CLq2MmQt.js} +1 -1
  427. package/server/token-util-zlz9U0ki.js +3 -0
  428. package/server/{tracker-config-G6latr8C.js → tracker-config-DZ8Zn2nQ.js} +2 -2
  429. package/server/{tracker-utils-DHv5pSDT.js → tracker-utils-L0FKtjq2.js} +3 -3
  430. package/server/{traefik-connect-Df2uXPsQ.js → traefik-connect-bNX6jKkb.js} +1 -1
  431. package/server/{tunnel-CDVKJpRv.js → tunnel-BAm1XgjG.js} +3 -3
  432. package/server/{tunnel-DGdUkGoZ.js → tunnel-CjSnHdTc.js} +1 -1
  433. package/server/{types-5M0lupud.js → types-q67TYYg5.js} +1 -1
  434. package/server/uat-promote-verification-CKB9ZrKC.js +92 -0
  435. package/server/uat-train-Cu-4nvbf.js +2 -0
  436. package/server/uat-train-D5UjcyAa.js +0 -0
  437. package/server/{validate-IfDGkaVR.js → validate-Cxsx5Uz1.js} +8 -6
  438. package/server/{validation-CC9OPqJZ.js → validation-DEaTZafj.js} +1 -1
  439. package/server/{validation-Dw1pzDzr.js → validation-VZgJxmqc.js} +4 -4
  440. package/server/{verification-artifact-B3itKTxu.js → verification-artifact-C85cRTc_.js} +1 -1
  441. package/server/{verification-artifact-TVFSz_q1.js → verification-artifact-g3yuxQDL.js} +1 -1
  442. package/server/{verification-runner-BW4HOKAz.js → verification-runner-DlZI8yhw.js} +1 -1
  443. package/server/{verification-runner-CkgX6EtI.js → verification-runner-KDZIsBj4.js} +40 -18
  444. package/server/{vtt-parser-DYPbKcIJ.js → vtt-parser-Jr94BF3Y.js} +1 -1
  445. package/server/{work-agent-prompt-Du8Vh2aJ.js → work-agent-prompt-C-vuP3_J.js} +20 -9
  446. package/server/workflows-CHrx_hcW.js +2 -0
  447. package/server/{workflows-mbQzh6mQ.js → workflows-D0oip4eV.js} +161 -78
  448. package/server/{workspace--8tnhDI0.js → workspace-BqFg__wH.js} +1 -1
  449. package/server/{workspace-BPUws1-_.js → workspace-C0fH3aek.js} +3 -3
  450. package/server/workspace-anchor-drift-B4gMRHl4.js +3 -0
  451. package/server/workspace-anchor-drift-CZKofakh.js +224 -0
  452. package/server/{workspace-config-CIVWZOQr.js → workspace-config-B123aZl-.js} +1 -1
  453. package/server/workspace-manager-CDTKjjdU.js +3 -0
  454. package/server/{workspace-manager-CBhNdzE4.js → workspace-manager-CwO-Hek7.js} +156 -117
  455. package/server/{workspace-metadata-_WygnyoX.js → workspace-metadata-CQv00QwK.js} +2 -2
  456. package/server/{workspace-metadata-BzHnwwX4.js → workspace-metadata-D4M8BM4W.js} +1 -1
  457. package/server/{workspaces-Do_9J0LQ.js → workspaces-j1e_6aAT.js} +719 -292
  458. package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
  459. package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
  460. package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
  461. package/sync-sources/skills/pan-close/SKILL.md +5 -3
  462. package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
  463. package/sync-sources/skills/pan-reload/SKILL.md +3 -3
  464. package/sync-sources/skills/pan-restart/SKILL.md +5 -4
  465. package/sync-sources/skills/pan-review/SKILL.md +7 -1
  466. package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
  467. package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
  468. package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
  469. package/server/activity-logger-OEUBdfZ8.js +0 -3
  470. package/server/agent-state-Bc3tzUC8.js +0 -3
  471. package/server/agents-wi9NWzs2.js +0 -3
  472. package/server/archive-planning-BZDgzoEj.js +0 -3
  473. package/server/cli-B86rejVV.js +0 -3
  474. package/server/conversation-service-BLd3MYsG.js +0 -3
  475. package/server/deacon-kiQrb4ZT.js +0 -4
  476. package/server/deacon-swarm-C-GwfjJy.js +0 -2
  477. package/server/deploy-window-DkZraDyj.js +0 -3
  478. package/server/dist-Bzy0y69j.js +0 -3
  479. package/server/flywheel-merge-order-UU0tiUld.js +0 -245
  480. package/server/flywheel-merge-order-UUcsCDb6.js +0 -2
  481. package/server/forge-CNFnyqps.js +0 -270
  482. package/server/forge-DXnS_YFH.js +0 -2
  483. package/server/git-utils-D0_yhCgF.js +0 -3
  484. package/server/github-pr-lookup-D16NGsSO.js +0 -44
  485. package/server/hume-ccTf4wTX.js +0 -3
  486. package/server/inspect-agent-Brtz0URj.js +0 -2
  487. package/server/merge-ops-CR44oU9-.js +0 -2
  488. package/server/merge-set-bUqbm3yc.js +0 -3
  489. package/server/merge-sync-BJYeOODr.js +0 -3
  490. package/server/merge-verification-BkaOqPsw.js +0 -124
  491. package/server/project-repos-DXKQsc_m.js +0 -3
  492. package/server/projects-vjjcmiN8.js +0 -3
  493. package/server/public/assets/index-CWeMerGO.js +0 -804
  494. package/server/public/assets/index-CenuJ3Cw.css +0 -1
  495. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +0 -1
  496. package/server/rally-zhhtXuDP.js +0 -3
  497. package/server/record-CN0pj4_5.js +0 -3
  498. package/server/record-update-bLJxAXH4.js +0 -3
  499. package/server/resume-BFv1PGpA.js +0 -3
  500. package/server/review-status-btEYlaxA.js +0 -3
  501. package/server/review-status-kZj_KyCk.js +0 -1470
  502. package/server/settings-66A6uvIA.js +0 -2
  503. package/server/specs-C8Wsn2XO.js +0 -3
  504. package/server/src-DtcUOZCq.js +0 -4826
  505. package/server/supervisor-FTJAIsAK.js +0 -2
  506. package/server/token-util-DuPuNriz.js +0 -3
  507. package/server/tracker-utils-B4ylXZQK.js +0 -3
  508. package/server/uat-train-B05BWkp-.js +0 -2
  509. package/server/uat-train-DDSrSoV1.js +0 -2152
  510. package/server/workflows-BQu4RFQ-.js +0 -2
  511. package/server/workspace-manager-CWT55qeI.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-kNxT0bZC.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-CqY6zl-i.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-CE46vDkZ.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-D-xWGHdh.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-CqY6zl-i.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-DySPNmKN.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";
@@ -171,7 +171,7 @@ async function renderWorkspaceGitShowPromise(issueId, workspacePath, anchor, arg
171
171
  const entries = parseWorkspaceHeadAnchor(anchor);
172
172
  if (!entries) return gitShow(workspacePath, anchor.trim(), args);
173
173
  if (!issueId) throw new Error(`Cannot resolve composite workspace head anchor '${anchor}' without an issue id`);
174
- const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-DXKQsc_m.js");
174
+ const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-CRE6Ykow.js");
175
175
  const rootsByKey = new Map(resolveWorkspaceRepoRootsSync(issueId, workspacePath).map((root) => [root.repoKey, root]));
176
176
  return (await Promise.all(entries.map(async ({ repoKey, sha }) => {
177
177
  const root = rootsByKey.get(repoKey);
@@ -191,6 +191,27 @@ async function getWorkspaceGitInfoPromise(workspacePath) {
191
191
  throw new Error(`getWorkspaceGitInfo failed for ${workspacePath}: ${msg}`);
192
192
  }
193
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
+ }
194
215
  /**
195
216
  * Snapshot the code HEAD(s) of a workspace for drift comparison (PAN-2948).
196
217
  *
@@ -202,9 +223,13 @@ async function getWorkspaceGitInfoPromise(workspacePath) {
202
223
  * "no drift" forever. Composite snapshots compare equal iff every sub-repo
203
224
  * head is unchanged; consumers that try to use the anchor as a git ref fail
204
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.
205
230
  */
206
231
  async function snapshotWorkspaceHeadsPromise(issueId, workspacePath) {
207
- const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-DXKQsc_m.js");
232
+ const { resolveWorkspaceRepoRootsSync } = await import("./project-repos-CRE6Ykow.js");
208
233
  const roots = resolveWorkspaceRepoRootsSync(issueId, workspacePath);
209
234
  const isPolyrepo = roots.some((root) => root.isPolyrepo);
210
235
  const heads = [];
@@ -258,6 +283,6 @@ var init_git_utils = __esmMin((() => {
258
283
  hasStaleLocks = (repoPath) => Effect.promise(() => hasStaleLocksPromise(repoPath));
259
284
  }));
260
285
  //#endregion
261
- export { parseWorkspaceHeadAnchor as a, init_git_utils as i, getWorkspaceGitInfo as n, renderWorkspaceGitShowPromise as o, hasStaleLocks as r, snapshotWorkspaceHeadsPromise as s, 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 };
262
287
 
263
- //# sourceMappingURL=git-utils-CRw2zLPC.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-DySPNmKN.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";
@@ -200,7 +200,7 @@ function generateJWT(appId, privateKey) {
200
200
  })).toString("base64url");
201
201
  const payload = Buffer.from(JSON.stringify({
202
202
  iat: now - 60,
203
- exp: now + 600,
203
+ exp: now + 540,
204
204
  iss: appId
205
205
  })).toString("base64url");
206
206
  const signer = createSign("SHA256");
@@ -664,4 +664,4 @@ var init_github_app = __esmMin((() => {
664
664
  //#endregion
665
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 };
666
666
 
667
- //# sourceMappingURL=github-app-C3QrAUd0.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-C3QrAUd0.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-G6latr8C.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-BnIsSrEN.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-BnIsSrEN.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 };
@@ -0,0 +1,58 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CQ1Lo6LA.js";
3
+ import { Effect } from "effect";
4
+ import { execFile } from "node:child_process";
5
+ import { promisify } from "node:util";
6
+ //#region ../../lib/github-pr-lookup.ts
7
+ function githubPrLookupSource() {
8
+ return isGitHubAppConfigured() ? "GitHub App PR lookup" : "gh pr list";
9
+ }
10
+ async function lookupPullRequestForBranch(owner, repo, branchName) {
11
+ if (isGitHubAppConfigured()) {
12
+ const pr = (await Effect.runPromise(listPullRequestsForHead(owner, repo, branchName, "all")))[0];
13
+ if (!pr) return null;
14
+ return {
15
+ number: pr.number,
16
+ state: pr.merged ? "MERGED" : pr.state.toUpperCase(),
17
+ mergedAt: pr.mergedAt
18
+ };
19
+ }
20
+ const { stdout } = await execFileAsync("gh", [
21
+ "pr",
22
+ "list",
23
+ "--repo",
24
+ `${owner}/${repo}`,
25
+ "--head",
26
+ branchName,
27
+ "--state",
28
+ "all",
29
+ "--json",
30
+ "number,state,mergedAt",
31
+ "--limit",
32
+ "1"
33
+ ], {
34
+ encoding: "utf-8",
35
+ timeout: 15e3
36
+ });
37
+ const trimmed = stdout.trim();
38
+ if (!trimmed) return null;
39
+ const [pr] = JSON.parse(trimmed);
40
+ if (!pr || !Number.isFinite(pr.number)) return null;
41
+ return {
42
+ number: pr.number,
43
+ state: typeof pr.state === "string" ? pr.state.toUpperCase() : "CLOSED",
44
+ mergedAt: typeof pr.mergedAt === "string" ? pr.mergedAt : null
45
+ };
46
+ }
47
+ async function lookupPullRequestNumberForBranch(owner, repo, branchName) {
48
+ return (await lookupPullRequestForBranch(owner, repo, branchName))?.number ?? null;
49
+ }
50
+ var execFileAsync;
51
+ var init_github_pr_lookup = __esmMin((() => {
52
+ init_github_app();
53
+ execFileAsync = promisify(execFile);
54
+ }));
55
+ //#endregion
56
+ export { lookupPullRequestNumberForBranch as i, init_github_pr_lookup as n, lookupPullRequestForBranch as r, githubPrLookupSource as t };
57
+
58
+ //# sourceMappingURL=github-pr-lookup-BDq6Wznz.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-DySPNmKN.js";
2
+ import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-CmOPzmBb.js";
3
3
  import { delimiter, dirname, isAbsolute, join, resolve } from "node:path";
4
4
  import { homedir } from "node:os";
5
5
  import { constants } from "node:fs";
@@ -129,4 +129,4 @@ var init_harness_binary = __esmMin((() => {
129
129
  //#endregion
130
130
  export { resolveExecutable as a, prepareHarnessLaunch as i, harnessBinaryName as n, resolveHarnessBinary as o, init_harness_binary as r, configuredHarnessBinaryPath as t };
131
131
 
132
- //# sourceMappingURL=harness-binary-DPUi-Pv8.js.map
132
+ //# sourceMappingURL=harness-binary-DqkftwTb.js.map
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { A as canUseHarnessSync, H as init_providers, M as init_harness_policy, R as getBuiltInDefaultHarness, V as getProviderForModelSync, f as loadConfigSync, j as canUseModelWithAuthSync, t as init_config_yaml } from "./config-yaml-DySPNmKN.js";
3
- import { n as harnessBinaryName, o as resolveHarnessBinary, r as init_harness_binary, t as configuredHarnessBinaryPath } from "./harness-binary-DPUi-Pv8.js";
2
+ import { A as canUseHarnessSync, H as init_providers, M as init_harness_policy, R as getBuiltInDefaultHarness, V as getProviderForModelSync, f as loadConfigSync, j as canUseModelWithAuthSync, t as init_config_yaml } from "./config-yaml-CmOPzmBb.js";
3
+ import { n as harnessBinaryName, o as resolveHarnessBinary, r as init_harness_binary, t as configuredHarnessBinaryPath } from "./harness-binary-DqkftwTb.js";
4
4
  //#region ../../lib/harness-resolve.ts
5
5
  async function getProviderAuthModeForModel(model) {
6
- const { getProviderAuthMode } = await import("./agents-wi9NWzs2.js");
6
+ const { getProviderAuthMode } = await import("./agents-BKKkxKgK.js");
7
7
  return getProviderAuthMode(model);
8
8
  }
9
9
  function assertHarnessProviderSupported(harness, provider) {
@@ -72,4 +72,4 @@ var init_harness_resolve = __esmMin((() => {
72
72
  //#endregion
73
73
  export { resolveHarness as n, init_harness_resolve as t };
74
74
 
75
- //# sourceMappingURL=harness-resolve-3lNZkyT4.js.map
75
+ //# sourceMappingURL=harness-resolve-CqMqM1Mb.js.map
@@ -1,4 +1,4 @@
1
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BEqFxlJc.js";
1
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BjuxvjdS.js";
2
2
  //#region ../../lib/overdeck/health-events.ts
3
3
  init_infra();
4
4
  function parseMetadata(row) {
@@ -66,4 +66,4 @@ function getHealthHistory(agentId, startTime, endTime) {
66
66
  //#endregion
67
67
  export { getLatestHealthEvent as n, writeHealthEvent as r, getHealthHistory as t };
68
68
 
69
- //# sourceMappingURL=health-events-BBcTYQKU.js.map
69
+ //# sourceMappingURL=health-events-CazRxJUS.js.map
@@ -1,2 +1,2 @@
1
- import { n as getLatestHealthEvent, r as writeHealthEvent, t as getHealthHistory } from "./health-events-BBcTYQKU.js";
1
+ import { n as getLatestHealthEvent, r as writeHealthEvent, t as getHealthHistory } from "./health-events-CazRxJUS.js";
2
2
  export { getHealthHistory, getLatestHealthEvent, writeHealthEvent };