@overdeck/desktop 0.45.23 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +34 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DOA0KgXx.js → acceptance-criteria-CCwFGICj.js} +2 -2
  4. package/server/activity-logger-CMthG6Vd.js +3 -0
  5. package/server/{activity-logger-DDlOIAML.js → activity-logger-CyteR4JO.js} +24 -13
  6. package/server/{advancing-selfheal-BBu6DSNm.js → advancing-selfheal-De1L-Sb4.js} +6 -6
  7. package/server/{agent-gc-BV1q_2EV.js → agent-gc-CBULruzm.js} +5 -5
  8. package/server/agent-state-VQk8fY9F.js +3 -0
  9. package/server/{agent-state-service-HoK8U4jW.js → agent-state-service-BlnSkRFA.js} +5 -5
  10. package/server/{agent-state-service-CnzFKSAQ.js → agent-state-service-hZpxIw1E.js} +1 -1
  11. package/server/agents-BKKkxKgK.js +3 -0
  12. package/server/{agents-B4Bjbkfv.js → agents-C5rWYhb6.js} +4 -4
  13. package/server/archive-planning-0FJ6Xd3b.js +2 -0
  14. package/server/{archive-planning-DYrYojxl.js → archive-planning-C0lAbNB_.js} +16 -24
  15. package/server/{artifact-index-jobs-C-xy7Z5v.js → artifact-index-jobs-ug6ZxIP5.js} +2 -2
  16. package/server/assemble-DnffNpOo.js +339 -0
  17. package/server/{backlog-auto-trigger-GtG71X8H.js → backlog-auto-trigger-Dh-i9PQf.js} +3 -3
  18. package/server/{behavior-B_-4EKF3.js → behavior-CfIg6pKp.js} +2 -2
  19. package/server/bridge-pool-patrol-CUFmjVDN.js +136 -0
  20. package/server/{briefing-freshness-DWdW7vUm.js → briefing-freshness-DHmCSLar.js} +2 -2
  21. package/server/{build-info-DgTqZkL5.js → build-info-BP160gU7.js} +1 -1
  22. package/server/{build-info-BT096lEl.js → build-info-CuFfxZxp.js} +5 -3
  23. package/server/{checkpoint-manager-DDqcGyu8.js → checkpoint-manager-DEWD82qK.js} +2 -2
  24. package/server/{checkpoint-manager-B7Bt29J0.js → checkpoint-manager-Dxh0FYsv.js} +1 -1
  25. package/server/checkpoint-worker.js +1 -1
  26. package/server/{checkpoints-C-AXLfYT.js → checkpoints-CZvbtLnr.js} +2 -2
  27. package/server/{checkpoints-CpgCjAlN.js → checkpoints-DMTgXuLG.js} +1 -1
  28. package/server/{claude-hooks-provision-C8wdRnN1.js → claude-hooks-provision-CN-xo-do.js} +1 -1
  29. package/server/{claude-hooks-provision-but-_qGY.js → claude-hooks-provision-fvy4RD2b.js} +13 -2
  30. package/server/{claude-permissions-H_5wHQZQ.js → claude-permissions-CN0cSCPp.js} +2 -2
  31. package/server/{claude-settings-overlay-CbSz0Dvb.js → claude-settings-overlay-CJn35FHQ.js} +2 -2
  32. package/server/{claude-settings-overlay-BTENVmYf.js → claude-settings-overlay-Dabi9slj.js} +1 -1
  33. package/server/cli-DmXETsw-.js +3 -0
  34. package/server/{cli-vBeXbPrq.js → cli-oCWYA1pE.js} +9 -9
  35. package/server/{cliproxy-Bgb2XCqi.js → cliproxy-C8mB3KuB.js} +2 -2
  36. package/server/{cliproxy-DW0V86F8.js → cliproxy-PGwTX_o8.js} +1 -1
  37. package/server/{close-issue-Dn_4c4G8.js → close-issue-D5MF5GqF.js} +5 -5
  38. package/server/{closed-issue-reaper-CWpY2uBw.js → closed-issue-reaper-CJ24u0Zt.js} +1 -1
  39. package/server/{closed-issue-reaper-hANY_ehE.js → closed-issue-reaper-Cltx86x5.js} +37 -16
  40. package/server/{codex-Dg7Is5yb.js → codex-BdEsUFWh.js} +1 -1
  41. package/server/{codex-TmSi-yTv.js → codex-Drlf5Xhf.js} +37 -8
  42. package/server/{codex-parser-C4gSH-IR.js → codex-parser-DpB89Vqa.js} +2 -2
  43. package/server/compaction-continuation-K2AxQX4H.js +200 -0
  44. package/server/{config-DjLOdbgT.js → config-B2IMcBxx.js} +4 -3
  45. package/server/{config-DUIhMN_T.js → config-DV-grfQc.js} +1 -1
  46. package/server/{config-CCvjQf27.js → config-Dr3pW6w6.js} +2 -2
  47. package/server/{config-yaml-DvyMuOle.js → config-yaml-CmOPzmBb.js} +290 -22
  48. package/server/{conflict-gate-CmrYpa47.js → conflict-gate-B9cN3SBi.js} +4 -4
  49. package/server/{conflict-gate-BSJkNTdp.js → conflict-gate-Dh754uyA.js} +1 -1
  50. package/server/context-layers-D6LZo3l1.js +4 -0
  51. package/server/context-layers-dR5YxHYB.js +37 -0
  52. package/server/{control-settings-aP1ANIlI.js → control-settings-C7DUehE1.js} +49 -19
  53. package/server/{conversation-compaction-CNbTLB86.js → conversation-compaction-BoqdDXWF.js} +8 -8
  54. package/server/{conversation-compaction-DiG5zWQq.js → conversation-compaction-Dj4FAKoZ.js} +1 -1
  55. package/server/{conversation-service-Du-MTNpJ.js → conversation-service-5aCnq1zR.js} +331 -20
  56. package/server/conversation-service-BCxl4f8Z.js +3 -0
  57. package/server/{conversations-DbOs1e9Q.js → conversations-BUpYsOZg.js} +5 -5
  58. package/server/{conversations-6mPANqvL.js → conversations-C34dyIb9.js} +1 -1
  59. package/server/{cost-Ca0YTWDw.js → cost-Bgcub5kW.js} +12 -2
  60. package/server/{cost-CW4WSe72.js → cost-CvxRrucd.js} +3 -3
  61. package/server/{cost-sync-C0VdGme1.js → cost-sync-Dv3LUaNW.js} +3 -3
  62. package/server/{dag-CdOjJVDT.js → dag-ombYYt4s.js} +2 -2
  63. package/server/{dangerous-git-ops-CT-IypG3.js → dangerous-git-ops-BcJPC5Rr.js} +1 -1
  64. package/server/dashboard-db-worker.js +7 -7
  65. package/server/deacon-DrXqT9LQ.js +4 -0
  66. package/server/{deacon-pRnyD5w9.js → deacon-hi9KLPLT.js} +2998 -2659
  67. package/server/{deacon-nudge-log-Bjg8U4Y9.js → deacon-nudge-log-BNBebzeL.js} +3 -3
  68. package/server/deacon-pending-lifecycle-Cpk0k7Hi.js +33 -0
  69. package/server/{deacon-swarm-DftYRDo8.js → deacon-swarm-DBxUaO-A.js} +13 -13
  70. package/server/deacon-swarm-I2JfX5Tg.js +2 -0
  71. package/server/deacon.js +14 -19
  72. package/server/dead-end-trip-CQcP70ND.js +13 -0
  73. package/server/delivery-Da0zEMY4.js +3 -0
  74. package/server/{deploy-patrol-Bjsho_ha.js → deploy-patrol-Df-Tmaq0.js} +69 -18
  75. package/server/deploy-queue-9SrhZR63.js +3 -0
  76. package/server/deploy-queue-UjKGYsDe.js +169 -0
  77. package/server/deploy-window-jOiPRHL0.js +3 -0
  78. package/server/{deploy-window-DeP_OIRk.js → deploy-window-rpqpWqHA.js} +40 -16
  79. package/server/{dev-supervisor-BpMoHlkR.js → dev-supervisor-CC46Ig8q.js} +2 -2
  80. package/server/{devcontainer-renderer-CtUgrVKW.js → devcontainer-renderer-68CSCRnu.js} +3 -3
  81. package/server/{dist-DyRx4cI7.js → dist-CJy72uEg.js} +1 -1
  82. package/server/dist-DSlxIU1H.js +3 -0
  83. package/server/{dist-src-BSoS7mkd.js → dist-src-Bik83hFi.js} +1 -1
  84. package/server/docker-BMVTSFL5.js +3 -0
  85. package/server/{docker-BK7HIcBj.js → docker-Dam7mbIB.js} +2 -2
  86. package/server/{dod-BrSfUHm0.js → dod-Dar-yheg.js} +8 -4
  87. package/server/durable-review-pipeline-CGZ5QBxh.js +17 -0
  88. package/server/durable-review-pipeline-jpgCJZFp.js +3 -0
  89. package/server/{ensure-devcontainer-DseivYEy.js → ensure-devcontainer-B057YA81.js} +4 -4
  90. package/server/{ensure-devcontainer-DRqaAkBR.js → ensure-devcontainer-C98V8yW-.js} +1 -1
  91. package/server/{esm-shims-CbI3BVkl.js → esm-shims-Br9BPdkR.js} +1 -1
  92. package/server/{event-store-Cr5PQwFC.js → event-store-ELqkVOn0.js} +1 -1
  93. package/server/{event-store-tdiY5eDZ.js → event-store-zY5MJHgF.js} +23 -4
  94. package/server/{events-CvvGK6LT.js → events-D6pyqhzM.js} +1 -1
  95. package/server/{events-CC1dgUpx.js → events-D9PR1IC0.js} +3 -3
  96. package/server/{factory-CynerjXO.js → factory-CRoOpGsF.js} +5 -5
  97. package/server/{feature-registry-population-B0pmAz0a.js → feature-registry-population--YUXU999.js} +4 -4
  98. package/server/{feature-registry-storage-_wUBRD3J.js → feature-registry-storage-BORBTo0y.js} +2 -2
  99. package/server/{features-Dhxz-wLc.js → features--nFkJY8v.js} +2 -2
  100. package/server/{feedback-target-iygZwmMc.js → feedback-target-C0ZzyHvU.js} +1 -1
  101. package/server/{feedback-target-CPS15Vte.js → feedback-target-Dt9BsapX.js} +8 -8
  102. package/server/{feedback-writer-C9b6ccN1.js → feedback-writer-BG0RUZiu.js} +5 -5
  103. package/server/{feedback-writer-qmiMbqTZ.js → feedback-writer-D1fm-5Z8.js} +1 -1
  104. package/server/flywheel-BekukH4i.js +2 -0
  105. package/server/flywheel-BiT3odRb.js +1092 -0
  106. package/server/flywheel-CLVB55Be.js +478 -0
  107. package/server/flywheel-merge-order-BJv1DZz1.js +462 -0
  108. package/server/flywheel-merge-order-BKw9o6ku.js +2 -0
  109. package/server/forge-CZbSg6Ds.js +383 -0
  110. package/server/forge-DK3blQb_.js +3 -0
  111. package/server/{from-CJ_aH5jD.js → from-D_4_dk7i.js} +1 -1
  112. package/server/{fts-db-CKgg0VKg.js → fts-db-BeOomFa-.js} +2 -2
  113. package/server/{fts-operations-BrL_VTRr.js → fts-operations-BdewJ_g9.js} +2 -2
  114. package/server/git-utils-CI6cwyyC.js +3 -0
  115. package/server/{git-utils-BVa07a4a.js → git-utils-ameCgDdy.js} +93 -3
  116. package/server/{github-app-CMBdIFBQ.js → github-app-CQ1Lo6LA.js} +19 -8
  117. package/server/{github-app-CPfoFAdV.js → github-app-DtAsvwzK.js} +1 -1
  118. package/server/{github-client--XVlDpwM.js → github-client-BfyDxuRN.js} +2 -2
  119. package/server/{github-client-B4QsdE-X.js → github-client-Cj0yl_07.js} +1 -1
  120. package/server/github-pr-lookup-BDq6Wznz.js +58 -0
  121. package/server/{harness-binary-CVio2m-u.js → harness-binary-DqkftwTb.js} +32 -6
  122. package/server/{harness-resolve-qHJBhy3Z.js → harness-resolve-CqMqM1Mb.js} +18 -9
  123. package/server/{health-events-C9B8y1Hm.js → health-events-CazRxJUS.js} +2 -2
  124. package/server/{health-events-CpfvuVmm.js → health-events-_xfTaOUs.js} +1 -1
  125. package/server/{hooks-DUXw8A0-.js → hooks-BO3QT1sn.js} +2 -2
  126. package/server/{hooks-ltecuFqZ.js → hooks-BnJsxlSq.js} +1 -1
  127. package/server/{hume-BEq0bUDg.js → hume-CDYJxqx-.js} +2 -2
  128. package/server/hume-Dq--7rOQ.js +3 -0
  129. package/server/{idle-stack-reaper-D7w9t3fE.js → idle-stack-reaper-BYqERdkE.js} +1 -1
  130. package/server/{idle-stack-reaper-w1ISSlhs.js → idle-stack-reaper-CnGx_PO_.js} +99 -6
  131. package/server/in-flight-guard-Bq3epG58.js +45 -0
  132. package/server/{infra-CzaSOgul.js → infra-BjuxvjdS.js} +80 -5
  133. package/server/{injection-oNZeoDhL.js → injection-DZxlV2al.js} +1 -1
  134. package/server/{injection-DZ0PfYa4.js → injection-UCf8EsjX.js} +191 -183
  135. package/server/{inspect-agent-DJKLWcVT.js → inspect-agent-6kylZnrm.js} +139 -82
  136. package/server/inspect-agent-BVwDrVrz.js +2 -0
  137. package/server/{internal-token-Bb4XeV2x.js → internal-token-DvMTQSOS.js} +2 -2
  138. package/server/{internal-token-DXdfprGr.js → internal-token-M9omeXM1.js} +1 -1
  139. package/server/{io-B3_AHDfr.js → io-VHvc0Ssp.js} +43 -26
  140. package/server/{issue-closed-zhdvQicO.js → issue-closed-B6KJkmHZ.js} +7 -7
  141. package/server/{issue-lifecycle-Dy4vd0Oa.js → issue-lifecycle-9gk3fnXN.js} +1 -1
  142. package/server/{issue-lifecycle-CreaCkjW.js → issue-lifecycle-C4Zj0WmE.js} +34 -28
  143. package/server/{issue-service-singleton-B5ushCvE.js → issue-service-singleton-DmCh7EHj.js} +10 -10
  144. package/server/{issue-service-singleton-DabvBWUp.js → issue-service-singleton-PMx8F1jr.js} +1 -1
  145. package/server/{issues-B6ToV6x1.js → issues-CgnQ1OGQ.js} +2 -2
  146. package/server/{jsonl-parser-Dhflo1SH.js → jsonl-parser-DJOH_O-w.js} +5 -4
  147. package/server/{label-cleanup-BKPJm4Hv.js → label-cleanup-Dv7AV_R1.js} +3 -3
  148. package/server/{label-reconciler-DdWbHEBu.js → label-reconciler--F85rufp.js} +4 -4
  149. package/server/{lifecycle-DfeyBDwA.js → lifecycle-CTdOWYMi.js} +2 -2
  150. package/server/{lifecycle-sycO16hj.js → lifecycle-DDN8ApVY.js} +6 -7
  151. package/server/{lifecycle-io-D8iNBcux.js → lifecycle-io-D-lGdzK3.js} +5 -5
  152. package/server/{lifecycle-io-Bsnr2K4F.js → lifecycle-io-D_zTLvP1.js} +1 -1
  153. package/server/{linear-client-D4zqMnX7.js → linear-client-BQU36QqE.js} +2 -2
  154. package/server/{linear-client-DqhDQO9k.js → linear-client-CY4O_Tu3.js} +1 -1
  155. package/server/linear-mcp-auth-BnU4TYfY.js +280 -0
  156. package/server/linear-mcp-auth-NYBq_oHZ.js +2 -0
  157. package/server/memory-fts-worker.js +1 -1
  158. package/server/{merge-C_ZEhbqI.js → merge-Bpx4jjht.js} +13 -11
  159. package/server/{merge-agent-XrB80vfT.js → merge-agent-DdMVSV2Y.js} +233 -83
  160. package/server/{merge-agent-BQM3a8z5.js → merge-agent-DrXa1CpW.js} +1 -1
  161. package/server/{merge-batch-Bwoyr8Je.js → merge-batch-C5q1c1GX.js} +1 -1
  162. package/server/merge-completeness-BMm8tMyZ.js +277 -0
  163. package/server/merge-completeness-D0ljXbk3.js +3 -0
  164. package/server/{merge-DK23JEdS.js → merge-idOG--29.js} +1 -1
  165. package/server/merge-ops-DdpTiEMt.js +2 -0
  166. package/server/merge-rebase-DGQpYJU3.js +2 -0
  167. package/server/{merge-rebase-C1KIVr0s.js → merge-rebase-xLnMlw5h.js} +3 -3
  168. package/server/merge-set-DH7ot3yz.js +89 -0
  169. package/server/merge-set-DzsOTBg5.js +3 -0
  170. package/server/{merge-sync-DZ9dojJn.js → merge-sync-CQ-LgZ1_.js} +406 -153
  171. package/server/merge-sync-Ca7F5JnQ.js +3 -0
  172. package/server/{merge-train-DxDfBTjr.js → merge-train-DTEMyIu4.js} +18 -8
  173. package/server/{merge-train-deps-CyYQUksx.js → merge-train-deps-CNPJzepw.js} +4 -4
  174. package/server/merge-verification-x3JO8Dtz.js +220 -0
  175. package/server/merged-docker-cleanup-worker-CTpC27Bs.js +107 -0
  176. package/server/merged-docker-cleanup-worker-Cdi9apm-.js +3 -0
  177. package/server/{multipart-parser-Dt8YPN5S.js → multipart-parser-IMSBfePV.js} +2 -2
  178. package/server/{no-resume-mode-Cx3K0hHi.js → no-resume-mode-C5ULAXwO.js} +1 -1
  179. package/server/node_modules/.package-lock.json +27 -27
  180. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  181. package/server/node_modules/@google-cloud/common/package.json +2 -2
  182. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  183. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  184. package/server/node_modules/gaxios/package.json +1 -1
  185. package/server/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
  186. package/server/node_modules/google-auth-library/package.json +1 -1
  187. package/server/node_modules/google-gax/build/protos/google/api/auth.proto +2 -1
  188. package/server/node_modules/google-gax/build/protos/google/api/backend.proto +12 -1
  189. package/server/node_modules/google-gax/build/protos/google/api/billing.proto +1 -1
  190. package/server/node_modules/google-gax/build/protos/google/api/client.proto +165 -53
  191. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1/resources.proto +1 -1
  192. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/quota_adjuster_settings.proto +7 -3
  193. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/resources.proto +1 -1
  194. package/server/node_modules/google-gax/build/protos/google/api/config_change.proto +1 -1
  195. package/server/node_modules/google-gax/build/protos/google/api/context.proto +1 -1
  196. package/server/node_modules/google-gax/build/protos/google/api/control.proto +3 -3
  197. package/server/node_modules/google-gax/build/protos/google/api/distribution.proto +1 -1
  198. package/server/node_modules/google-gax/build/protos/google/api/documentation.proto +1 -1
  199. package/server/node_modules/google-gax/build/protos/google/api/endpoint.proto +1 -1
  200. package/server/node_modules/google-gax/build/protos/google/api/error_reason.proto +186 -1
  201. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/checked.proto +31 -3
  202. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/eval.proto +8 -9
  203. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/explain.proto +1 -2
  204. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/syntax.proto +20 -22
  205. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/value.proto +2 -3
  206. package/server/node_modules/google-gax/build/protos/google/api/field_behavior.proto +1 -1
  207. package/server/node_modules/google-gax/build/protos/google/api/field_info.proto +1 -1
  208. package/server/node_modules/google-gax/build/protos/google/api/http.proto +1 -1
  209. package/server/node_modules/google-gax/build/protos/google/api/httpbody.proto +1 -1
  210. package/server/node_modules/google-gax/build/protos/google/api/label.proto +1 -1
  211. package/server/node_modules/google-gax/build/protos/google/api/launch_stage.proto +1 -1
  212. package/server/node_modules/google-gax/build/protos/google/api/log.proto +1 -1
  213. package/server/node_modules/google-gax/build/protos/google/api/logging.proto +1 -1
  214. package/server/node_modules/google-gax/build/protos/google/api/metric.proto +1 -1
  215. package/server/node_modules/google-gax/build/protos/google/api/monitored_resource.proto +1 -1
  216. package/server/node_modules/google-gax/build/protos/google/api/monitoring.proto +1 -1
  217. package/server/node_modules/google-gax/build/protos/google/api/policy.proto +1 -1
  218. package/server/node_modules/google-gax/build/protos/google/api/quota.proto +1 -1
  219. package/server/node_modules/google-gax/build/protos/google/api/resource.proto +1 -1
  220. package/server/node_modules/google-gax/build/protos/google/api/routing.proto +8 -4
  221. package/server/node_modules/google-gax/build/protos/google/api/service.proto +2 -3
  222. package/server/node_modules/google-gax/build/protos/google/api/source_info.proto +1 -1
  223. package/server/node_modules/google-gax/build/protos/google/api/system_parameter.proto +1 -1
  224. package/server/node_modules/google-gax/build/protos/google/api/usage.proto +7 -27
  225. package/server/node_modules/google-gax/build/protos/google/api/visibility.proto +1 -1
  226. package/server/node_modules/google-gax/build/protos/google/longrunning/operations.proto +20 -1
  227. package/server/node_modules/google-gax/build/protos/google/protobuf/any.proto +52 -108
  228. package/server/node_modules/google-gax/build/protos/google/protobuf/compiler/ruby/ruby_generated_code.proto +2 -0
  229. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_features.proto +21 -1
  230. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_file_options.proto +24 -0
  231. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_options.proto +15 -0
  232. package/server/node_modules/google-gax/build/protos/google/protobuf/descriptor.proto +118 -30
  233. package/server/node_modules/google-gax/build/protos/google/protobuf/field_mask.proto +16 -18
  234. package/server/node_modules/google-gax/build/protos/google/protobuf/internal_options.proto +8 -1
  235. package/server/node_modules/google-gax/build/protos/google/protobuf/json/json_enumval_custom_string.proto +26 -0
  236. package/server/node_modules/google-gax/build/protos/google/protobuf/json_enumvalue_options.proto +29 -0
  237. package/server/node_modules/google-gax/build/protos/google/protobuf/json_options.proto +14 -0
  238. package/server/node_modules/google-gax/build/protos/google/protobuf/struct.proto +38 -22
  239. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/forced_micro_string.proto +3 -0
  240. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/repeated_field_proxy_import_message.proto +14 -0
  241. package/server/node_modules/google-gax/build/protos/google/protobuf/timestamp.proto +9 -8
  242. package/server/node_modules/google-gax/build/protos/google/protobuf/util/json_format_proto3.proto +18 -0
  243. package/server/node_modules/google-gax/build/protos/google/rpc/code.proto +1 -1
  244. package/server/node_modules/google-gax/build/protos/google/rpc/context/attribute_context.proto +7 -2
  245. package/server/node_modules/google-gax/build/protos/google/rpc/context/audit_context.proto +1 -1
  246. package/server/node_modules/google-gax/build/protos/google/rpc/error_details.proto +5 -5
  247. package/server/node_modules/google-gax/build/protos/google/rpc/http.proto +1 -1
  248. package/server/node_modules/google-gax/build/protos/google/rpc/status.proto +1 -2
  249. package/server/node_modules/google-gax/build/protos/google/type/calendar_period.proto +1 -1
  250. package/server/node_modules/google-gax/build/protos/google/type/color.proto +9 -10
  251. package/server/node_modules/google-gax/build/protos/google/type/date.proto +11 -9
  252. package/server/node_modules/google-gax/build/protos/google/type/datetime.proto +17 -17
  253. package/server/node_modules/google-gax/build/protos/google/type/dayofweek.proto +1 -1
  254. package/server/node_modules/google-gax/build/protos/google/type/decimal.proto +11 -13
  255. package/server/node_modules/google-gax/build/protos/google/type/expr.proto +1 -1
  256. package/server/node_modules/google-gax/build/protos/google/type/fraction.proto +1 -1
  257. package/server/node_modules/google-gax/build/protos/google/type/interval.proto +1 -2
  258. package/server/node_modules/google-gax/build/protos/google/type/latlng.proto +4 -5
  259. package/server/node_modules/google-gax/build/protos/google/type/localized_text.proto +3 -3
  260. package/server/node_modules/google-gax/build/protos/google/type/money.proto +1 -2
  261. package/server/node_modules/google-gax/build/protos/google/type/month.proto +1 -1
  262. package/server/node_modules/google-gax/build/protos/google/type/phone_number.proto +20 -15
  263. package/server/node_modules/google-gax/build/protos/google/type/postal_address.proto +39 -39
  264. package/server/node_modules/google-gax/build/protos/google/type/quaternion.proto +4 -4
  265. package/server/node_modules/google-gax/build/protos/google/type/timeofday.proto +11 -8
  266. package/server/node_modules/google-gax/package.json +5 -5
  267. package/server/node_modules/retry-request/package.json +4 -4
  268. package/server/node_modules/teeny-request/package.json +5 -5
  269. package/server/node_modules/undici/README.md +5 -0
  270. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  271. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  272. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  273. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  274. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  275. package/server/node_modules/undici/docs/docs/index.md +5 -0
  276. package/server/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  277. package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  278. package/server/node_modules/undici/lib/core/request.js +13 -2
  279. package/server/node_modules/undici/lib/core/util.js +6 -1
  280. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  281. package/server/node_modules/undici/lib/dispatcher/client-h1.js +42 -8
  282. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  283. package/server/node_modules/undici/lib/global.js +36 -16
  284. package/server/node_modules/undici/lib/handler/cache-handler.js +269 -61
  285. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +13 -3
  286. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  287. package/server/node_modules/undici/lib/handler/retry-handler.js +30 -4
  288. package/server/node_modules/undici/lib/interceptor/cache.js +159 -52
  289. package/server/node_modules/undici/lib/interceptor/decompress.js +9 -2
  290. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  291. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  292. package/server/node_modules/undici/lib/util/cache.js +372 -68
  293. package/server/node_modules/undici/lib/util/date.js +23 -6
  294. package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
  295. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  296. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  297. package/server/node_modules/undici/package.json +2 -2
  298. package/server/node_modules/undici/types/client.d.ts +2 -2
  299. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  300. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  301. package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CWmOdM9-.js} +1 -1
  302. package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-Dg6U4ADZ.js} +24 -15
  303. package/server/package-lock.json +28 -28
  304. package/server/package.json +1 -1
  305. package/server/{pan-dir-DeVUgwA7.js → pan-dir-ubraCiUg.js} +24 -10
  306. package/server/{paths-_zEts6wc.js → paths-cXmOwSbh.js} +2 -2
  307. package/server/pending-lifecycle-claim-DEteYdS9.js +110 -0
  308. package/server/{pickup-Dd0Znxxy.js → pickup-D8xtG1J2.js} +17 -16
  309. package/server/pipeline-membership-BGSvkT2M.js +3 -0
  310. package/server/pipeline-membership-CrAPLYtf.js +57 -0
  311. package/server/{pipeline-membership-0HaEGDlH.js → pipeline-membership-gather-CET40frr.js} +177 -109
  312. package/server/pipeline-membership-gather-DTfcgxLl.js +3 -0
  313. package/server/{pipeline-notifier-D0ykk59O.js → pipeline-notifier-BuQ0e4hF.js} +2 -2
  314. package/server/{pipeline-notifier-6iCJplFZ.js → pipeline-notifier-ImNXknf0.js} +1 -1
  315. package/server/post-merge-lifecycle-worker-DbO10pum.js +50 -0
  316. package/server/{project-pipelines-2sK1apsO.js → project-pipelines-Bim6bThI.js} +2 -2
  317. package/server/project-repos-C0nuoBGv.js +98 -0
  318. package/server/project-repos-CRE6Ykow.js +3 -0
  319. package/server/projects-B03Wr-xc.js +3 -0
  320. package/server/{prompts-Dp4Tpk39.js → prompts-BEx08AIu.js} +2 -2
  321. package/server/{providers-DKkBXhxU.js → providers-D7IluJe0.js} +1 -1
  322. package/server/{providers-DV7ec8l7.js → providers-evXhiQeg.js} +7 -7
  323. package/server/public/assets/{chunk-BO2N2NFS-CltymLRg.js → chunk-BO2N2NFS-D1s4-Sqp.js} +4 -4
  324. package/server/public/assets/{diagram-OG6HWLK6-D2f6pjgA.js → diagram-OG6HWLK6-1gdMoSF7.js} +1 -1
  325. package/server/public/assets/{dist-BWR4qFiV.js → dist-CxAOHbil.js} +1 -1
  326. package/server/public/assets/{dist-DEmlBBNQ.js → dist-DqDRYW6P.js} +3 -3
  327. package/server/public/assets/{ganttDiagram-6RSMTGT7-DnfiViPK.js → ganttDiagram-6RSMTGT7-BYex-Ec7.js} +1 -1
  328. package/server/public/assets/{highlighted-body-OFNGDK62-B8Wrmj9H.js → highlighted-body-OFNGDK62-DlVkiG0S.js} +1 -1
  329. package/server/public/assets/index-Cc7cnFC4.css +1 -0
  330. package/server/public/assets/index-K0hAYCgV.js +807 -0
  331. package/server/public/assets/{linear-C9zFQpkX.js → linear-B4cuEFmO.js} +1 -1
  332. package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +1 -0
  333. package/server/public/assets/{pieDiagram-4H26LBE5-lR8H7Yjd.js → pieDiagram-4H26LBE5-CBHNBIJQ.js} +1 -1
  334. package/server/public/assets/{prod-B1jCQihw.js → prod-CN2nHBvX.js} +4 -4
  335. package/server/public/assets/{quadrantDiagram-W4KKPZXB-CVQ2guem.js → quadrantDiagram-W4KKPZXB-Bom87VOQ.js} +1 -1
  336. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eD1RB4gm.js → sankeyDiagram-5OEKKPKP-UrBeyLxk.js} +1 -1
  337. package/server/public/assets/{xychartDiagram-2RQKCTM6-ChEC6dQn.js → xychartDiagram-2RQKCTM6-DhkbrIxR.js} +1 -1
  338. package/server/public/index.html +2 -2
  339. package/server/{pull-requests--Ib2jTgy.js → pull-requests-Cv7LxzUN.js} +1 -1
  340. package/server/{pull-requests-CXIhdCYD.js → pull-requests-DHWiKxo7.js} +19 -10
  341. package/server/{queries-6d7Cdtm7.js → queries-DHJm7bTd.js} +1134 -203
  342. package/server/{rally-B708-nZn.js → rally-B71M9f4o.js} +3 -3
  343. package/server/rally-YDjU513q.js +3 -0
  344. package/server/{rally-api-yjQ0TfHd.js → rally-api-D5uXN08-.js} +1 -1
  345. package/server/{rally-api-nY0ZANw3.js → rally-api-Dkqmok65.js} +2 -2
  346. package/server/{rally-client-B1EJhfV0.js → rally-client-Bfqm6XI4.js} +4 -4
  347. package/server/{rally-client-CULK2XAY.js → rally-client-CxsA6ExK.js} +1 -1
  348. package/server/{reap-terminal-sessions-MWnqdLCJ.js → reap-terminal-sessions-BQ23nriz.js} +2 -2
  349. package/server/{reap-terminal-sessions-N3BTkmX_.js → reap-terminal-sessions-CvmwaqKv.js} +2 -2
  350. package/server/{rebuild-stack-Dp4eLkt4.js → rebuild-stack-0EEYReVZ.js} +36 -36
  351. package/server/rebuild-stack-qeRqHZxH.js +4 -0
  352. package/server/{reconstruct-cache-uWbZfjms.js → reconstruct-cache-BbYFsqLa.js} +7 -6
  353. package/server/record-CtroO946.js +3 -0
  354. package/server/record-update-DH6dLJID.js +3 -0
  355. package/server/{record-update-Dq0t2uBG.js → record-update-Z0QCxmMp.js} +124 -34
  356. package/server/{recovery-trip-BJtIQuag.js → recovery-trip-eJe26h-f.js} +2 -2
  357. package/server/{release-engine-DZpmGGzb.js → release-engine-lPUp-MTd.js} +5 -5
  358. package/server/{release-set-hnXd_kga.js → release-set-BwGeyZKX.js} +3 -3
  359. package/server/{remote-Br-ZWVIP.js → remote-BCd02Es1.js} +3 -3
  360. package/server/{remote-4tiENDaI.js → remote-CVGUhXMV.js} +3 -3
  361. package/server/{remote-agents-CRCg1L4H.js → remote-agents-C1bssi41.js} +2 -2
  362. package/server/{remote-agents-nmty1mLu.js → remote-agents-C_VxssLU.js} +300 -46
  363. package/server/{remote-completion-BbWNd10K.js → remote-completion-DAB0P706.js} +12 -12
  364. package/server/resume-u9byntrq.js +3 -0
  365. package/server/{review-agent-DJRO8EG8.js → review-agent-CD4RCI0Y.js} +1 -1
  366. package/server/{review-agent-sKkE1FEL.js → review-agent-CHhI66UP.js} +61 -44
  367. package/server/{review-artifacts-BLbSC4ke.js → review-artifacts-DSMRIfuJ.js} +7 -6
  368. package/server/{review-context-BgX3lcCx.js → review-context-oFuBbiEE.js} +69 -25
  369. package/server/{in-flight-guard-aQ1IxeI3.js → review-convoy-liveness-CpzrcJ5F.js} +3 -44
  370. package/server/review-status-BZH8h-6W.js +3 -0
  371. package/server/review-status-emit-CUExtHd5.js +50 -0
  372. package/server/{review-status-enrichment-tbOn_A_u.js → review-status-enrichment-QV_hQkgS.js} +4 -4
  373. package/server/{review-status-source-CxuEjLGg.js → review-status-source-CpvJnvnQ.js} +24 -3
  374. package/server/review-status-source-ylw5QZUR.js +3 -0
  375. package/server/{review-status-sync-BhSQ0d0l.js → review-status-sync-483sujRo.js} +10 -5
  376. package/server/{review-status-sync-To3-iS-N.js → review-status-sync-NaWvI9Xf.js} +1 -1
  377. package/server/review-status-yljtTd-q.js +7521 -0
  378. package/server/{review-verdict-feedback-C1Kg8n7t.js → review-verdict-feedback-BPDn4li_.js} +1 -1
  379. package/server/{review-verdict-feedback-CTRNtzXO.js → review-verdict-feedback-CELeUinh.js} +48 -8
  380. package/server/{rollup-WA0VD-Rr.js → rollup-DTNvelz9.js} +8 -8
  381. package/server/{rollup-B53Y81xK.js → rollup-DYZfq1c4.js} +1 -1
  382. package/server/{scanner-D2743cp8.js → scanner-CV35oSn4.js} +42 -14
  383. package/server/{sequence-io-Cg0zYj_E.js → sequence-io-DF_8iuhV.js} +4 -4
  384. package/server/{sequencer-agent-BGY8gjg-.js → sequencer-agent-B2WeCtGi.js} +5 -5
  385. package/server/server.js +3899 -672
  386. package/server/{service-DCpB_SGd.js → service-Br9rpBNA.js} +83 -65
  387. package/server/{session-fork-BQ8_6H32.js → session-fork-D0LY152N.js} +2 -2
  388. package/server/{session-history-CVZDpS3c.js → session-history-BUyK29eq.js} +4 -4
  389. package/server/{settings-BZ5m1UCl.js → settings-Bse1Pdcj.js} +3 -3
  390. package/server/settings-CdvIF84R.js +2 -0
  391. package/server/{settings-ylxwqwQG.js → settings-CvVGqNEs.js} +3 -2
  392. package/server/{shadow-engineering-BlxG6Xye.js → shadow-engineering-BWLa8ODz.js} +2 -2
  393. package/server/{shadow-state-Dh-HzF2J.js → shadow-state-B4fpKxOO.js} +2 -2
  394. package/server/{shadow-state-C2_epgx2.js → shadow-state-FV6PHfEW.js} +1 -1
  395. package/server/{shadow-utils-4bvjn9b3.js → shadow-utils-D7asqxOZ.js} +2 -2
  396. package/server/{ship-log-ClSMIzZX.js → ship-log-xplJ8t75.js} +1 -1
  397. package/server/{smart-compaction-CHIxLr_d.js → smart-compaction-CPp2Ykf6.js} +1 -1
  398. package/server/{smart-compaction-r4pHQBIr.js → smart-compaction-D3U_79f-.js} +8 -7
  399. package/server/{spawn-planning-session-KC_UduxD.js → spawn-planning-session-1nFi3gfk.js} +1 -1
  400. package/server/{spawn-planning-session-DWAorh2B.js → spawn-planning-session-DGfZ5B8D.js} +30 -23
  401. package/server/{specialist-completion-BXhav38U.js → specialist-completion-Br48eiDP.js} +1 -1
  402. package/server/{specialist-context-DtrYvGJ-.js → specialist-context-cVbGnTa3.js} +5 -5
  403. package/server/{specialist-handoff-logger-C45ouoZ6.js → specialist-handoff-logger-DK-GTz4s.js} +2 -2
  404. package/server/{specialist-logs-DJ3RzKxW.js → specialist-logs-Cl5-hqT8.js} +3 -3
  405. package/server/{specialists-JVO00bs7.js → specialists-CNfYO3G2.js} +1634 -457
  406. package/server/{specialists-DyFeedjn.js → specialists-Cicieuzu.js} +21 -19
  407. package/server/{specialists-D5fRZXmN.js → specialists-JHsdU3pA.js} +1 -1
  408. package/server/{specialists-DVj0hvaL.js → specialists-Tdezg_6N.js} +1 -1
  409. package/server/specs-Bt7WJDoC.js +3 -0
  410. package/server/src-CRmCHlma.js +11408 -0
  411. package/server/{src-CG9mCkP6.js → src-Ck028hjO.js} +6 -6
  412. package/server/{src-CMTQGyCK.js → src-UWcGe0Ix.js} +5 -5
  413. package/server/stack-health-CJLMrLBl.js +3 -0
  414. package/server/{stack-health-puygdaMd.js → stack-health-DqSqx0zv.js} +68 -12
  415. package/server/{stale-task-claims-BbFwCTb0.js → stale-task-claims-CYFOUNlT.js} +4 -4
  416. package/server/{staleness-Cbl_w4Bw.js → staleness-BQ-0gMYK.js} +1 -1
  417. package/server/{staleness-Bpy41ngS.js → staleness-D47CUJok.js} +1 -1
  418. package/server/{state-home-CIGjwNfJ.js → state-home-BYV7qZTW.js} +2 -2
  419. package/server/{state-mapping-BL_-3Yt8.js → state-mapping-BVldLhBf.js} +1 -1
  420. package/server/{state-migrate-Dkzaxvny.js → state-migrate-CvvBtS0Y.js} +4 -4
  421. package/server/{stuck-remediation-sY_MHHgQ.js → stuck-remediation-Wt0UVvu1.js} +1 -1
  422. package/server/{stuck-remediation-CzEov_fq.js → stuck-remediation-mkLC6G_t.js} +360 -26
  423. package/server/{substrate-bug-weights-service-BH66lhm7.js → substrate-bug-weights-service-XfLAKnmK.js} +3 -3
  424. package/server/{summary-fork-D8bXjCr7.js → summary-fork-CD7GOts0.js} +2 -2
  425. package/server/{summary-fork-DHhJIsAL.js → summary-fork-xiXBnWG9.js} +78 -12
  426. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-B5SbvDx2.js} +2 -41
  427. package/server/supervisor/{paths-DehGY2Fj.js → paths-K3noE4N_.js} +1 -1
  428. package/server/supervisor/pty-supervisor.js +49 -2
  429. package/server/supervisor/pty-token-B7lp0ElT.js +43 -0
  430. package/server/{supervisor-BO-Zk_h-.js → supervisor-DL788vos.js} +3 -3
  431. package/server/supervisor-UWiQNK-y.js +2 -0
  432. package/server/{swarm-readiness-CQ_fwUWF.js → swarm-readiness-BV14DF5N.js} +3 -3
  433. package/server/{system-prerequisites-Bza0ffAh.js → system-prerequisites-pdWG6ZQs.js} +56 -29
  434. package/server/{teardown-workspace-CEgauF4U.js → teardown-workspace-l2F4_zim.js} +15 -16
  435. package/server/{test-agent-queue-DXDt0Xa-.js → test-agent-queue-qakFIIGz.js} +6 -6
  436. package/server/{test-verdict-CmUBK5cT.js → test-verdict-BJYDggMm.js} +1 -1
  437. package/server/{test-verdict-DFjjIHR5.js → test-verdict-Gw-btEfb.js} +1 -1
  438. package/server/{tldr-daemon-DL566HbH.js → tldr-daemon-BKOYB616.js} +1 -1
  439. package/server/{tldr-daemon-BDtLOIlO.js → tldr-daemon-CBaWkV9k.js} +2 -2
  440. package/server/{tmux-ftABRAmc.js → tmux-B1Wbxz5o.js} +3 -3
  441. package/server/{tmux-DoThH6aj.js → tmux-DQ6jB76i.js} +1 -1
  442. package/server/tmux-dedup-DbN6MGzM.js +892 -0
  443. package/server/{token-CsOhvw42.js → token-Cxbk023d.js} +2 -2
  444. package/server/{token-util-CTmczIfW.js → token-util-CLq2MmQt.js} +1 -1
  445. package/server/token-util-zlz9U0ki.js +3 -0
  446. package/server/{tracker-config-B4itFzDo.js → tracker-config-DZ8Zn2nQ.js} +2 -2
  447. package/server/{tracker-utils-tnxxqROg.js → tracker-utils-L0FKtjq2.js} +3 -3
  448. package/server/{traefik-connect-m73vGebA.js → traefik-connect-bNX6jKkb.js} +1 -1
  449. package/server/{tunnel-B2vxjx_b.js → tunnel-BAm1XgjG.js} +3 -3
  450. package/server/{tunnel-Cgj-IGIl.js → tunnel-CjSnHdTc.js} +1 -1
  451. package/server/{types-BBNjPcqU.js → types-q67TYYg5.js} +1 -1
  452. package/server/uat-promote-verification-CKB9ZrKC.js +92 -0
  453. package/server/uat-train-Cu-4nvbf.js +2 -0
  454. package/server/uat-train-D5UjcyAa.js +0 -0
  455. package/server/validate-Cxsx5Uz1.js +179 -0
  456. package/server/{validation-CIi6pnI2.js → validation-DEaTZafj.js} +1 -1
  457. package/server/{validation-B5JxoPUS.js → validation-VZgJxmqc.js} +4 -4
  458. package/server/{verification-artifact-C-lIHfUa.js → verification-artifact-C85cRTc_.js} +1 -1
  459. package/server/{verification-artifact-BcnIbigL.js → verification-artifact-g3yuxQDL.js} +1 -1
  460. package/server/{verification-runner-CDj4lD4t.js → verification-runner-DlZI8yhw.js} +1 -1
  461. package/server/{verification-runner-Br0S_Ous.js → verification-runner-KDZIsBj4.js} +114 -107
  462. package/server/{vtt-parser-DKpNNW5i.js → vtt-parser-Jr94BF3Y.js} +1 -1
  463. package/server/{work-agent-prompt-Yb2bd3Fq.js → work-agent-prompt-C-vuP3_J.js} +20 -9
  464. package/server/workflows-CHrx_hcW.js +2 -0
  465. package/server/{workflows-C9WmILql.js → workflows-D0oip4eV.js} +161 -78
  466. package/server/{workspace-DuUdndHe.js → workspace-BqFg__wH.js} +1 -1
  467. package/server/{workspace-BVl4rihN.js → workspace-C0fH3aek.js} +3 -3
  468. package/server/workspace-anchor-drift-B4gMRHl4.js +3 -0
  469. package/server/workspace-anchor-drift-CZKofakh.js +224 -0
  470. package/server/{workspace-config-cEGcO6UT.js → workspace-config-B123aZl-.js} +1 -1
  471. package/server/workspace-manager-CDTKjjdU.js +3 -0
  472. package/server/{workspace-manager-hLUv3ADC.js → workspace-manager-CwO-Hek7.js} +206 -116
  473. package/server/{workspace-metadata-CskwzzhL.js → workspace-metadata-CQv00QwK.js} +2 -2
  474. package/server/{workspace-metadata-DNpMixRq.js → workspace-metadata-D4M8BM4W.js} +1 -1
  475. package/server/{workspaces-hWvy9eKs.js → workspaces-j1e_6aAT.js} +736 -290
  476. package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
  477. package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
  478. package/sync-sources/hooks/record-cost-event.js +6 -4
  479. package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
  480. package/sync-sources/skills/okf/README.md +11 -3
  481. package/sync-sources/skills/okf/SKILL.md +12 -1
  482. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  483. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  484. package/sync-sources/skills/pan-close/SKILL.md +5 -3
  485. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  486. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  487. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  488. package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
  489. package/sync-sources/skills/pan-reload/SKILL.md +3 -3
  490. package/sync-sources/skills/pan-restart/SKILL.md +5 -4
  491. package/sync-sources/skills/pan-review/SKILL.md +7 -1
  492. package/sync-sources/skills/pan-start/SKILL.md +4 -0
  493. package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
  494. package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
  495. package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
  496. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  497. package/server/activity-logger-OEUBdfZ8.js +0 -3
  498. package/server/agent-state-Bg0lhqwj.js +0 -3
  499. package/server/agents-FlIgQ3ql.js +0 -3
  500. package/server/archive-planning-zkJb3BeM.js +0 -3
  501. package/server/cli-BsVIHwzC.js +0 -3
  502. package/server/context-layers-B3Nt58jl.js +0 -4
  503. package/server/context-layers-ZYFcWiyc.js +0 -165
  504. package/server/conversation-service-Up7FEzIC.js +0 -3
  505. package/server/deacon-DYSEJb48.js +0 -4
  506. package/server/deacon-swarm-9jRLS5Ke.js +0 -2
  507. package/server/deploy-window-CM6W1-c6.js +0 -3
  508. package/server/dist-Bd3vn0Hw.js +0 -3
  509. package/server/flywheel-DMCUzDWg.js +0 -2
  510. package/server/flywheel-DSSpWmqF.js +0 -522
  511. package/server/flywheel-DcBkQvgE.js +0 -207
  512. package/server/flywheel-merge-order-C-6zRLvM.js +0 -2
  513. package/server/flywheel-merge-order-DxbQKE1d.js +0 -244
  514. package/server/forge-B-ZWyTRm.js +0 -2
  515. package/server/forge-Ch9gCFod.js +0 -270
  516. package/server/git-utils-Dry_Ka_D.js +0 -3
  517. package/server/github-pr-lookup-BRbDW-qk.js +0 -44
  518. package/server/hume-B_DbflNM.js +0 -3
  519. package/server/inspect-agent-ch-F-5Ci.js +0 -2
  520. package/server/launcher-generator-CHVm7bGT.js +0 -379
  521. package/server/layers-DzxSTGNA.js +0 -93
  522. package/server/merge-blockers-BsFjGrQ8.js +0 -41
  523. package/server/merge-ops-DlB1IM0Y.js +0 -2
  524. package/server/merge-set-DLz0MkGT.js +0 -139
  525. package/server/merge-set-DnSYdBEp.js +0 -3
  526. package/server/merge-sync-SSv3E-pl.js +0 -3
  527. package/server/merge-verification-CSizH3HY.js +0 -124
  528. package/server/projects-9SkRpES9.js +0 -3
  529. package/server/public/assets/index-CUr1xv8w.css +0 -1
  530. package/server/public/assets/index-CsSuZQBI.js +0 -802
  531. package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +0 -1
  532. package/server/rally-njs_mJrt.js +0 -3
  533. package/server/rebuild-stack-kA7XngID.js +0 -3
  534. package/server/record-t6V-3Dcj.js +0 -3
  535. package/server/record-update-DACtKh6_.js +0 -3
  536. package/server/resume-CcKqnTvE.js +0 -3
  537. package/server/review-status-A7quS5KJ.js +0 -1454
  538. package/server/review-status-C6n6-9f_.js +0 -3
  539. package/server/settings-D0OSwos5.js +0 -2
  540. package/server/specs-nN45DG2X.js +0 -3
  541. package/server/src-U7_kTPEE.js +0 -4733
  542. package/server/stack-health-Df0YEZKa.js +0 -3
  543. package/server/supervisor-BPy-o1A8.js +0 -2
  544. package/server/token-util-DrHg8abn.js +0 -3
  545. package/server/tracker-utils-BePq_oj-.js +0 -3
  546. package/server/uat-train-CuEn0t9M.js +0 -2152
  547. package/server/uat-train-cKfM-_WW.js +0 -2
  548. package/server/workflows-D90rMOya.js +0 -2
  549. package/server/workspace-manager-ZTdJAy9M.js +0 -3
@@ -1,21 +1,23 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Ft as resolveProjectForIssue, Gr as sessionFilePath, Nt as readIssueRecordSync, Ot as init_record, Ur as packageRoot, Vr as init_paths, f as loadConfigSync, hr as AGENTS_DIR, t as init_config_yaml, tt as resolveModel } from "./config-yaml-DvyMuOle.js";
3
- import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
4
- import { D as killSession, E as isPaneDead, M as listSessionNames, w as init_tmux } from "./tmux-ftABRAmc.js";
5
- import { b as setReviewStatusSync, c as getReviewStatusSync, l as init_review_status } from "./review-status-A7quS5KJ.js";
6
- import { l as removeAgentSync, o as init_agents, s as listAgentIdsByPrefixSync } from "./agents-B4Bjbkfv.js";
7
- import { Gn as init_agent_state, Jt as providerDefaultHarnessSync, Wn as getAgentStateSync, b as init_agents$1, qt as init_staffing } from "./queries-6d7Cdtm7.js";
2
+ import { Ir as AGENTS_DIR, Pt as init_record, Vt as resolveProjectForIssue, ci as init_paths, f as loadConfigSync, fi as sessionFilePath, t as init_config_yaml, tt as resolveModel, ui as packageRoot, zt as readIssueRecordSync } from "./config-yaml-CmOPzmBb.js";
3
+ import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
4
+ import { D as killSession, E as isPaneDead, M as listSessionNames, w as init_tmux } from "./tmux-B1Wbxz5o.js";
5
+ import { S as setReviewStatusSync, f as init_review_status, u as getReviewStatusSync } from "./review-status-yljtTd-q.js";
6
+ import { l as removeAgentSync, o as init_agents, s as listAgentIdsByPrefixSync } from "./agents-C5rWYhb6.js";
7
+ import { $t as providerDefaultHarnessSync, Qt as init_staffing, b as init_agents$1, ir as init_agent_state, rr as getAgentStateSync } from "./queries-DHJm7bTd.js";
8
8
  import { a as PAN_DIRNAME, p as init_types } from "./types-hraoaQIp.js";
9
- import { a as init_review_convoy_liveness, c as init_review_monitor, i as evaluateReviewConvoyLiveness, n as createPromiseCoalescer, r as init_in_flight_guard, s as REVIEW_SUB_ROLES } from "./in-flight-guard-aQ1IxeI3.js";
10
- import { n as shouldSkipDispatchAsMerged, t as init_merge_verification } from "./merge-verification-CSizH3HY.js";
11
- import { n as formatTier1Summary, o as init_review_context, t as buildReviewContext } from "./review-context-BgX3lcCx.js";
12
- import { a as resolveConflictGate, i as init_conflict_gate, r as getCachedConflictGateMergeability, t as buildRealConflictGateDeps } from "./conflict-gate-CmrYpa47.js";
9
+ import { a as init_review_monitor, i as REVIEW_SUB_ROLES, n as init_review_convoy_liveness, t as evaluateReviewConvoyLiveness } from "./review-convoy-liveness-CpzrcJ5F.js";
10
+ import { n as init_merge_verification, r as shouldSkipDispatchAsMerged } from "./merge-verification-x3JO8Dtz.js";
11
+ import { n as createPromiseCoalescer, r as init_in_flight_guard } from "./in-flight-guard-Bq3epG58.js";
12
+ import { n as formatTier1Summary, o as init_review_context, t as buildReviewContext } from "./review-context-oFuBbiEE.js";
13
+ import { a as resolveConflictGate, i as init_conflict_gate, r as getCachedConflictGateMergeability, t as buildRealConflictGateDeps } from "./conflict-gate-B9cN3SBi.js";
13
14
  import { Effect } from "effect";
14
15
  import { existsSync } from "fs";
15
16
  import { dirname, join } from "path";
16
17
  import { mkdir, readFile, rm, writeFile } from "fs/promises";
17
18
  import { exec } from "child_process";
18
19
  import { promisify } from "util";
20
+ import { createHash } from "node:crypto";
19
21
  //#region ../../lib/cloister/review-resume-decision.ts
20
22
  /**
21
23
  * PAN-1862 — the resume-vs-fresh decision for a review agent, as a PURE function so it is locked
@@ -151,7 +153,7 @@ async function buildConvoyPromptPromise(opts) {
151
153
  }
152
154
  async function spawnReviewSubRoleForIssuePromise(opts) {
153
155
  try {
154
- const { saveAgentState, spawnRun, getAgentStateSync, getLatestSessionIdSync, resumeAgent, stopAgent } = await import("./agents-FlIgQ3ql.js");
156
+ const { saveAgentState, spawnRun, getAgentStateSync, getLatestSessionIdSync, resumeAgent, stopAgent } = await import("./agents-BKKkxKgK.js");
155
157
  const cfg = loadConfigSync().config;
156
158
  const outputPath = opts.outputPath ?? reviewerAgentOutputPath(opts.workspace, opts.runId, opts.subRole);
157
159
  const synthesisAgentId = opts.synthesisAgentId ?? `agent-${opts.issueId.toLowerCase()}-review`;
@@ -239,7 +241,7 @@ async function spawnReviewSubRoleForIssuePromise(opts) {
239
241
  if (opts.forkedSessionId) run.reviewForkedFromParent = true;
240
242
  await Effect.runPromise(saveAgentState(run));
241
243
  try {
242
- const { notifyPipelineSync } = await import("./pipeline-notifier-6iCJplFZ.js");
244
+ const { notifyPipelineSync } = await import("./pipeline-notifier-ImNXknf0.js");
243
245
  notifyPipelineSync({
244
246
  type: "reviewer_started",
245
247
  issueId: opts.issueId,
@@ -270,14 +272,16 @@ async function computeConvoyScope(issueId, workspace) {
270
272
  let carried = [];
271
273
  let scope = "changed";
272
274
  try {
273
- const { getReviewStatusSync } = await import("./review-status-C6n6-9f_.js");
275
+ const { getReviewStatusSync } = await import("./review-status-BZH8h-6W.js");
274
276
  scope = resolveReReviewScope(issueId);
275
277
  const priorVerdicts = getReviewStatusSync(issueId)?.reviewerVerdicts;
276
278
  let changedFiles;
277
279
  const anchors = new Set(Object.values(priorVerdicts ?? {}).map((v) => v?.atCommit).filter((c) => !!c));
278
280
  if (anchors.size === 1) try {
281
+ const { resolvePrimaryWorkspaceRepoDirSync } = await import("./project-repos-CRE6Ykow.js");
282
+ const primaryRepoDir = resolvePrimaryWorkspaceRepoDirSync(issueId, workspace);
279
283
  const { stdout } = await execAsync$1(`git diff --name-only ${[...anchors][0]}..HEAD`, {
280
- cwd: workspace,
284
+ cwd: primaryRepoDir,
281
285
  encoding: "utf-8",
282
286
  timeout: 15e3
283
287
  });
@@ -313,13 +317,13 @@ async function computeConvoyScope(issueId, workspace) {
313
317
  */
314
318
  async function forkParentSessionForReviewer(parentAgentId, workspace) {
315
319
  try {
316
- const { getLatestSessionIdSync } = await import("./agents-FlIgQ3ql.js");
320
+ const { getLatestSessionIdSync } = await import("./agents-BKKkxKgK.js");
317
321
  const parentSessionId = getLatestSessionIdSync(parentAgentId);
318
322
  if (!parentSessionId) return null;
319
323
  const src = sessionFilePath(workspace, parentSessionId);
320
324
  const { existsSync } = await import("fs");
321
325
  if (!existsSync(src)) return null;
322
- const { reserveForkSession, copySessionForFork } = await import("./session-fork-BQ8_6H32.js");
326
+ const { reserveForkSession, copySessionForFork } = await import("./session-fork-D0LY152N.js");
323
327
  const reserved = await reserveForkSession(workspace);
324
328
  await copySessionForFork(src, reserved.sessionFile, { fullHistory: true });
325
329
  return reserved.sessionId;
@@ -357,13 +361,13 @@ async function launchConvoyReviewersPromise(params) {
357
361
  }
358
362
  }
359
363
  const cfg = loadConfigSync().config;
360
- const { getAgentStateSync } = await import("./agents-FlIgQ3ql.js");
364
+ const { getAgentStateSync } = await import("./agents-BKKkxKgK.js");
361
365
  const parentState = getAgentStateSync(params.synthesisAgentId);
362
366
  const reviewerResults = await Promise.all(params.inScope.map(async (subRole) => {
363
367
  const outputPath = reviewerAgentOutputPath(params.workspace, params.runId, subRole);
364
368
  let forkedSessionId;
365
369
  if (params.forkFromParent && parentState?.harness === "claude-code" && !params.harness) try {
366
- const { getLatestSessionIdSync } = await import("./agents-FlIgQ3ql.js");
370
+ const { getLatestSessionIdSync } = await import("./agents-BKKkxKgK.js");
367
371
  const reviewerModel = params.model ?? resolveModel("review", subRole, cfg);
368
372
  if (!!!getLatestSessionIdSync(reviewerAgentId(params.issueId, subRole)) && reviewerModel === parentState.model) {
369
373
  forkedSessionId = await forkParentSessionForReviewer(params.synthesisAgentId, params.workspace) ?? void 0;
@@ -384,7 +388,7 @@ async function launchConvoyReviewersPromise(params) {
384
388
  allowHost: params.allowHost ?? false
385
389
  }));
386
390
  if (!result.success) try {
387
- const { messageAgent } = await import("./agents-FlIgQ3ql.js");
391
+ const { messageAgent } = await import("./agents-BKKkxKgK.js");
388
392
  await messageAgent(params.synthesisAgentId, `REVIEWER_FAILED ${subRole} ${result.error ?? result.message}`);
389
393
  } catch (signalErr) {
390
394
  console.warn(`[review-agent] Failed to signal ${subRole} spawn failure to ${params.synthesisAgentId}:`, signalErr);
@@ -411,7 +415,7 @@ async function launchConvoyReviewersPromise(params) {
411
415
  async function handleReviewDiscoveryReady(issueId, opts = {}) {
412
416
  const normalized = issueId.toUpperCase();
413
417
  const parentId = `agent-${normalized.toLowerCase()}-review`;
414
- const { saveAgentState, getAgentStateSync } = await import("./agents-FlIgQ3ql.js");
418
+ const { saveAgentState, getAgentStateSync } = await import("./agents-BKKkxKgK.js");
415
419
  const parent = getAgentStateSync(parentId);
416
420
  if (!parent) return {
417
421
  success: false,
@@ -551,6 +555,30 @@ var init_review_convoy = __esmMin((() => {
551
555
  * - killAllReviewSessions — kill ALL review sessions on shutdown
552
556
  * (pan down)
553
557
  */
558
+ async function deriveReviewRunHead8(issueId, workspace) {
559
+ try {
560
+ const { resolvePrimaryWorkspaceRepoDirSync, resolveWorkspaceRepoRootsSync } = await import("./project-repos-CRE6Ykow.js");
561
+ if (resolveWorkspaceRepoRootsSync(issueId, workspace).some((root) => root.isPolyrepo)) {
562
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-CI6cwyyC.js");
563
+ const anchor = await snapshotWorkspaceHeadsPromise(issueId, workspace);
564
+ return anchor ? createHash("sha1").update(anchor).digest("hex").substring(0, 8) : "unknown";
565
+ }
566
+ const probeDir = resolvePrimaryWorkspaceRepoDirSync(issueId, workspace);
567
+ const { stdout } = await execAsync([
568
+ "git",
569
+ "rev-parse",
570
+ "--short=8",
571
+ "HEAD"
572
+ ].join(" "), {
573
+ cwd: probeDir,
574
+ encoding: "utf-8",
575
+ timeout: 1e4
576
+ });
577
+ return stdout.trim() || "unknown";
578
+ } catch {
579
+ return "unknown";
580
+ }
581
+ }
554
582
  function buildReviewRolePrompt(opts) {
555
583
  const inScope = opts.inScopeSubRoles && opts.inScopeSubRoles.length > 0 ? opts.inScopeSubRoles : [...REVIEW_SUB_ROLES];
556
584
  const carried = opts.carriedSubRoles ?? [];
@@ -639,8 +667,8 @@ function buildReviewRolePrompt(opts) {
639
667
  "including a per-reviewer verdict for each sub-role that RAN this cycle",
640
668
  "(PAN-1862 — this is what lets the next re-review skip provably-clean reviewers;",
641
669
  "do NOT list carried-forward sub-roles, their verdicts are already recorded):",
642
- ` pan admin specialists done review ${opts.issueId} --status passed --notes "<one-line summary>" --reviewers "${inScope.map((r) => `${r}=passed`).join(",")}"`,
643
- ` pan admin specialists done review ${opts.issueId} --status blocked --notes "<one-line top blocker>" --reviewers "<subRole>=passed|blocked for each of: ${inScope.join(", ")}>"`,
670
+ ` pan admin specialists done review ${opts.issueId} --status passed --notes "<one-line summary>" --run-id "${opts.runId}" --reviewers "${inScope.map((r) => `${r}=passed`).join(",")}"`,
671
+ ` pan admin specialists done review ${opts.issueId} --status blocked --notes "<one-line top blocker>" --run-id "${opts.runId}" --reviewers "<subRole>=passed|blocked for each of: ${inScope.join(", ")}>"`,
644
672
  "",
645
673
  "After running the signal command above, STOP and wait — do not exit, do not run",
646
674
  "any further commands. The session stays open for the next review cycle.",
@@ -687,8 +715,8 @@ function buildSelfReviewPrompt(opts) {
687
715
  `3. Write your findings to ${reviewReportPath}.`,
688
716
  "",
689
717
  "Then signal the verdict with the Overdeck CLI (exactly one):",
690
- ` pan admin specialists done review ${opts.issueId} --status passed --notes "<one-line summary>"`,
691
- ` pan admin specialists done review ${opts.issueId} --status blocked --notes "<one-line top blocker>"`,
718
+ ` pan admin specialists done review ${opts.issueId} --status passed --notes "<one-line summary>" --run-id "${opts.runId}"`,
719
+ ` pan admin specialists done review ${opts.issueId} --status blocked --notes "<one-line top blocker>" --run-id "${opts.runId}"`,
692
720
  "",
693
721
  "After running the signal command above, STOP and wait — do not exit, do not run",
694
722
  "any further commands. The session stays open for the next review cycle.",
@@ -749,12 +777,9 @@ async function spawnReviewRoleForIssuePromise(opts) {
749
777
  let staleRunId = false;
750
778
  let currentRunId;
751
779
  if (!paneDead && !opts.force) try {
752
- const { stdout } = await execAsync("git rev-parse --short=8 HEAD", {
753
- cwd: opts.workspace,
754
- encoding: "utf-8",
755
- timeout: 1e4
756
- });
757
- currentRunId = `agent-${opts.issueId.toLowerCase()}-review-${stdout.trim()}`;
780
+ const head8 = await deriveReviewRunHead8(opts.issueId, opts.workspace);
781
+ if (head8 === "unknown") throw new Error("workspace HEAD unavailable");
782
+ currentRunId = `agent-${opts.issueId.toLowerCase()}-review-${head8}`;
758
783
  const synthReviewRunId = getAgentStateSync(reviewSessionName)?.reviewRunId;
759
784
  if (!synthReviewRunId || synthReviewRunId !== currentRunId) {
760
785
  staleRunId = true;
@@ -826,7 +851,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
826
851
  };
827
852
  }
828
853
  try {
829
- const { archiveFeedbackFiles } = await import("./feedback-writer-qmiMbqTZ.js");
854
+ const { archiveFeedbackFiles } = await import("./feedback-writer-D1fm-5Z8.js");
830
855
  await Effect.runPromise(archiveFeedbackFiles(opts.workspace));
831
856
  } catch {}
832
857
  try {
@@ -843,7 +868,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
843
868
  };
844
869
  }
845
870
  try {
846
- const { notifyPipelineSync } = await import("./pipeline-notifier-6iCJplFZ.js");
871
+ const { notifyPipelineSync } = await import("./pipeline-notifier-ImNXknf0.js");
847
872
  notifyPipelineSync({
848
873
  type: "task_queued",
849
874
  specialist: "review-agent",
@@ -851,19 +876,11 @@ async function spawnReviewRoleForIssuePromise(opts) {
851
876
  });
852
877
  } catch {}
853
878
  try {
854
- const { spawnRun, saveAgentState, getAgentState, getAgentStateSync, getLatestSessionIdSync, resumeAgent, wipeAgentStateDirs } = await import("./agents-FlIgQ3ql.js");
879
+ const { spawnRun, saveAgentState, getAgentState, getAgentStateSync, getLatestSessionIdSync, resumeAgent, wipeAgentStateDirs } = await import("./agents-BKKkxKgK.js");
855
880
  const workAgentState = await Effect.runPromise(getAgentState(`agent-${opts.issueId.toLowerCase()}`));
856
881
  const allowHost = opts.allowHost === true || workAgentState?.hostOverride === true;
857
- let headSha = "unknown";
858
- try {
859
- const { stdout } = await execAsync("git rev-parse --short=8 HEAD", {
860
- cwd: opts.workspace,
861
- encoding: "utf-8",
862
- timeout: 1e4
863
- });
864
- headSha = stdout.trim();
865
- } catch {}
866
- const runId = headSha !== "unknown" ? `agent-${opts.issueId.toLowerCase()}-review-${headSha}` : `agent-${opts.issueId.toLowerCase()}-review`;
882
+ const head8 = await deriveReviewRunHead8(opts.issueId, opts.workspace);
883
+ const runId = head8 !== "unknown" ? `agent-${opts.issueId.toLowerCase()}-review-${head8}` : `agent-${opts.issueId.toLowerCase()}-review`;
867
884
  const reviewDir = join(opts.workspace, PAN_DIRNAME, "review", runId);
868
885
  let contextManifestPath;
869
886
  let tier1Summary;
@@ -1225,4 +1242,4 @@ var init_review_agent = __esmMin((() => {
1225
1242
  //#endregion
1226
1243
  export { isReviewStaleSync as a, purgeReviewAgentsForIssue as c, buildConvoyPrompt as d, handleReviewDiscoveryReady as f, reviewResumeDecision as h, isReviewSessionForIssue as i, resolveReviewMode as l, spawnReviewSubRoleForIssue as m, init_review_agent as n, killAllReviewSessions as o, resolveReReviewScope as p, isExtendedReviewEnabled as r, killAllReviewerSessions as s, PARENT_REVIEW_TIMEOUT_MS as t, spawnReviewRoleForIssue as u };
1227
1244
 
1228
- //# sourceMappingURL=review-agent-sKkE1FEL.js.map
1245
+ //# sourceMappingURL=review-agent-CHhI66UP.js.map
@@ -1,8 +1,8 @@
1
- import { Yn as init_issue_id, qn as extractNumberSync } from "./config-yaml-DvyMuOle.js";
2
- import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
3
- import { a as upsertMergeSetSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as withRepoArtifactUrlSync, s as withRepoStateSync } from "./merge-set-DLz0MkGT.js";
4
- import { i as findPlanSync, o as init_io } from "./io-B3_AHDfr.js";
5
- import { n as getForgeAdapter } from "./forge-Ch9gCFod.js";
1
+ import { gr as init_issue_id, mr as extractNumberSync } from "./config-yaml-CmOPzmBb.js";
2
+ import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
3
+ import { c as withRepoArtifactUrlSync, i as init_merge_set, l as withRepoStateSync, n as ensureMergeSetForIssueSync, s as upsertMergeSetSync } from "./merge-set-DH7ot3yz.js";
4
+ import { i as findPlanSync, o as init_io } from "./io-VHvc0Ssp.js";
5
+ import { n as getForgeAdapter, r as init_forge } from "./forge-CZbSg6Ds.js";
6
6
  import { join } from "node:path";
7
7
  import { Data, Effect } from "effect";
8
8
  import { existsSync } from "node:fs";
@@ -11,6 +11,7 @@ import { exec } from "node:child_process";
11
11
  import { promisify } from "node:util";
12
12
  //#region ../../lib/review-artifacts.ts
13
13
  init_io();
14
+ init_forge();
14
15
  init_issue_id();
15
16
  init_merge_set();
16
17
  init_activity_logger();
@@ -153,4 +154,4 @@ const createReviewArtifactsForIssue = (issueId, workspacePath) => Effect.tryProm
153
154
  //#endregion
154
155
  export { createReviewArtifactsForIssue };
155
156
 
156
- //# sourceMappingURL=review-artifacts-BLbSC4ke.js.map
157
+ //# sourceMappingURL=review-artifacts-DSMRIfuJ.js.map
@@ -1,11 +1,12 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ir as FsError, mr as init_errors } from "./config-yaml-DvyMuOle.js";
2
+ import { Fr as init_errors, Tr as FsError } from "./config-yaml-CmOPzmBb.js";
3
3
  import { a as PAN_DIRNAME, p as init_types } from "./types-hraoaQIp.js";
4
- import { i as findPlanSync, o as init_io, u as readPlan } from "./io-B3_AHDfr.js";
5
- import { d as getDevrootPathSync, f as init_config } from "./config-CCvjQf27.js";
6
- import { a as init_lifecycle_io, i as findXBriefByIssueSync } from "./lifecycle-io-D8iNBcux.js";
7
- import { n as init_review_verdict_feedback } from "./review-verdict-feedback-CTRNtzXO.js";
8
- import { n as init_github_pr_lookup, r as lookupPullRequestNumberForBranch } from "./github-pr-lookup-BRbDW-qk.js";
4
+ import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-C0nuoBGv.js";
5
+ import { i as findPlanSync, o as init_io, u as readPlan } from "./io-VHvc0Ssp.js";
6
+ import { d as getDevrootPathSync, f as init_config } from "./config-Dr3pW6w6.js";
7
+ import { a as init_lifecycle_io, i as findXBriefByIssueSync } from "./lifecycle-io-D-lGdzK3.js";
8
+ import { n as init_review_verdict_feedback } from "./review-verdict-feedback-CELeUinh.js";
9
+ import { i as lookupPullRequestNumberForBranch, n as init_github_pr_lookup } from "./github-pr-lookup-BDq6Wznz.js";
9
10
  import { Effect } from "effect";
10
11
  import { existsSync } from "fs";
11
12
  import { join } from "path";
@@ -339,26 +340,26 @@ async function getCurrentBranch(cwd) {
339
340
  return "unknown";
340
341
  }
341
342
  }
342
- async function getDiffBase(cwd) {
343
+ async function getDiffBase(cwd, targetBranch = "main") {
343
344
  try {
344
- const { stdout } = await execAsync("git merge-base origin/main HEAD", {
345
+ const { stdout } = await execAsync(`git merge-base origin/${targetBranch} HEAD`, {
345
346
  cwd,
346
347
  encoding: "utf-8"
347
348
  });
348
349
  return stdout.trim();
349
350
  } catch {
350
351
  try {
351
- const { stdout } = await execAsync("git merge-base main HEAD", {
352
+ const { stdout } = await execAsync(`git merge-base ${targetBranch} HEAD`, {
352
353
  cwd,
353
354
  encoding: "utf-8"
354
355
  });
355
356
  return stdout.trim();
356
357
  } catch {
357
- return "main";
358
+ return targetBranch;
358
359
  }
359
360
  }
360
361
  }
361
- async function getChangedFiles(cwd, base) {
362
+ async function getChangedFiles(cwd, base, pathPrefix = "") {
362
363
  let nameStatus = "";
363
364
  try {
364
365
  const { stdout } = await execAsync(`git diff --name-status "${base}"...HEAD`, {
@@ -400,12 +401,13 @@ async function getChangedFiles(cwd, base) {
400
401
  additions: 0,
401
402
  deletions: 0
402
403
  };
404
+ const prefixedPath = `${pathPrefix}${path}`;
403
405
  files.push({
404
- path,
406
+ path: prefixedPath,
405
407
  status: statusLetter,
406
408
  additions: counts.additions,
407
409
  deletions: counts.deletions,
408
- riskScore: riskScore(path)
410
+ riskScore: riskScore(prefixedPath)
409
411
  });
410
412
  }
411
413
  return files.sort((a, b) => b.riskScore - a.riskScore);
@@ -515,6 +517,10 @@ function formatTier1Summary(manifest) {
515
517
  lines.push(`Issue: ${manifest.issueId}`);
516
518
  lines.push(`Branch: ${manifest.branch}`);
517
519
  lines.push(`Head: ${manifest.headSha}`);
520
+ if (manifest.repos && manifest.repos.length > 1) {
521
+ lines.push("Polyrepo workspace — changed-file paths are prefixed with the sub-repo name:");
522
+ for (const repo of manifest.repos) lines.push(` ${repo.repoKey}: ${repo.branch} @ ${repo.headSha.slice(0, 8)} (${repo.fileCount} files changed)`);
523
+ }
518
524
  const highRisk = manifest.changedFiles.filter((f) => f.riskScore >= 5);
519
525
  const medRisk = manifest.changedFiles.filter((f) => f.riskScore >= 3 && f.riskScore < 5);
520
526
  const lowRisk = manifest.changedFiles.filter((f) => f.riskScore < 3);
@@ -582,19 +588,55 @@ function formatTier1Summary(manifest) {
582
588
  async function buildReviewContextPromise(opts) {
583
589
  const { runId, issueId, workspace } = opts;
584
590
  if (!existsSync(workspace)) throw new Error(`Workspace directory does not exist: ${workspace}`);
585
- const [headSha, currentBranch, diffBase] = await Promise.all([
586
- getHeadSha(workspace),
587
- opts.branch ? Promise.resolve(opts.branch) : getCurrentBranch(workspace),
588
- getDiffBase(workspace)
589
- ]);
590
- const [changedFiles, diff] = await Promise.all([getChangedFiles(workspace, diffBase), getDiffStat(workspace, diffBase)]);
591
- const [planRequirements, policyNotes, stubUiFindings, codeRabbitFindings] = await Promise.all([
591
+ const roots = resolveWorkspaceRepoRootsSync(issueId, workspace);
592
+ const isPolyrepo = roots.some((root) => root.isPolyrepo);
593
+ const perRepo = await Promise.all(roots.map(async (root) => {
594
+ const prefix = isPolyrepo ? `${root.repoKey}/` : "";
595
+ const [headSha, branch, diffBase] = await Promise.all([
596
+ getHeadSha(root.dir),
597
+ getCurrentBranch(root.dir),
598
+ getDiffBase(root.dir, root.targetBranch)
599
+ ]);
600
+ const [changedFiles, diffStat, stubUiFindings] = await Promise.all([
601
+ getChangedFiles(root.dir, diffBase, prefix),
602
+ getDiffStat(root.dir, diffBase),
603
+ scanStubUi(root.dir, diffBase).catch((err) => {
604
+ console.warn(`[buildReviewContext] scanStubUi failed for ${root.repoKey}: ${err instanceof Error ? err.message : String(err)}`);
605
+ return [];
606
+ })
607
+ ]);
608
+ return {
609
+ root,
610
+ headSha,
611
+ branch,
612
+ diffBase,
613
+ changedFiles,
614
+ diffStat,
615
+ stubUiFindings: prefix ? stubUiFindings.map((finding) => ({
616
+ ...finding,
617
+ filePath: `${prefix}${finding.filePath}`
618
+ })) : stubUiFindings
619
+ };
620
+ }));
621
+ const primary = perRepo.find((repo) => repo.changedFiles.length > 0) ?? perRepo[0];
622
+ const headSha = primary.headSha;
623
+ const currentBranch = isPolyrepo ? primary.branch : opts.branch ?? primary.branch;
624
+ const changedFiles = perRepo.flatMap((repo) => repo.changedFiles).sort((a, b) => b.riskScore - a.riskScore);
625
+ const diff = isPolyrepo ? {
626
+ stat: perRepo.filter((repo) => repo.changedFiles.length > 0).map((repo) => `── ${repo.root.repoKey} ──\n${repo.diffStat.stat}`).join("\n") || "No changes",
627
+ truncated: true
628
+ } : primary.diffStat;
629
+ const stubUiFindings = perRepo.flatMap((repo) => repo.stubUiFindings);
630
+ const repoContexts = perRepo.map((repo) => ({
631
+ repoKey: repo.root.repoKey,
632
+ branch: repo.branch,
633
+ headSha: repo.headSha,
634
+ diffBase: repo.diffBase,
635
+ fileCount: repo.changedFiles.length
636
+ }));
637
+ const [planRequirements, policyNotes, codeRabbitFindings] = await Promise.all([
592
638
  extractPlanReviewRequirements(workspace, issueId),
593
639
  readPolicyNotes(workspace),
594
- scanStubUi(workspace, diffBase).catch((err) => {
595
- console.warn(`[buildReviewContext] scanStubUi failed: ${err instanceof Error ? err.message : String(err)}`);
596
- return [];
597
- }),
598
640
  fetchCodeRabbitFindings({
599
641
  workspace,
600
642
  branch: currentBranch
@@ -619,6 +661,7 @@ async function buildReviewContextPromise(opts) {
619
661
  generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
620
662
  branch: currentBranch,
621
663
  headSha,
664
+ ...isPolyrepo ? { repos: repoContexts } : {},
622
665
  diff,
623
666
  changedFiles,
624
667
  largeChangeset,
@@ -642,6 +685,7 @@ var init_review_context = __esmMin((() => {
642
685
  init_lifecycle_io();
643
686
  init_config();
644
687
  init_errors();
688
+ init_project_repos();
645
689
  execAsync = promisify$1(exec$1);
646
690
  RISK_HIGH = 5;
647
691
  RISK_MED = 3;
@@ -700,4 +744,4 @@ var init_review_context = __esmMin((() => {
700
744
  //#endregion
701
745
  export { getDiffStat as a, getDiffBase as i, formatTier1Summary as n, init_review_context as o, getChangedFiles as r, buildReviewContext as t };
702
746
 
703
- //# sourceMappingURL=review-context-BgX3lcCx.js.map
747
+ //# sourceMappingURL=review-context-oFuBbiEE.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { w as init_tmux } from "./tmux-ftABRAmc.js";
2
+ import { w as init_tmux } from "./tmux-B1Wbxz5o.js";
3
3
  import "effect";
4
4
  import "fs";
5
5
  import "path";
@@ -52,47 +52,6 @@ function evaluateReviewConvoyLiveness(issueId, status, agents, now = Date.now())
52
52
  }
53
53
  var init_review_convoy_liveness = __esmMin((() => {}));
54
54
  //#endregion
55
- //#region ../../lib/cloister/in-flight-guard.ts
56
- function createPromiseCoalescer() {
57
- const inFlight = /* @__PURE__ */ new Map();
58
- return {
59
- run(key, task) {
60
- const existing = inFlight.get(key);
61
- if (existing) return existing;
62
- const p = task();
63
- inFlight.set(key, p);
64
- p.catch(() => {}).finally(() => inFlight.delete(key));
65
- return p;
66
- },
67
- isInFlight(key) {
68
- return inFlight.has(key);
69
- }
70
- };
71
- }
72
- function createInFlightGuard() {
73
- const inFlight = /* @__PURE__ */ new Set();
74
- return {
75
- run(key, task, onError) {
76
- if (inFlight.has(key)) return false;
77
- inFlight.add(key);
78
- (async () => {
79
- try {
80
- await task();
81
- } catch (err) {
82
- onError?.(err);
83
- } finally {
84
- inFlight.delete(key);
85
- }
86
- })();
87
- return true;
88
- },
89
- isInFlight(key) {
90
- return inFlight.has(key);
91
- }
92
- };
93
- }
94
- var init_in_flight_guard = __esmMin((() => {}));
95
- //#endregion
96
- export { init_review_convoy_liveness as a, init_review_monitor as c, evaluateReviewConvoyLiveness as i, createPromiseCoalescer as n, reviewTimestampMs as o, init_in_flight_guard as r, REVIEW_SUB_ROLES as s, createInFlightGuard as t };
55
+ export { init_review_monitor as a, REVIEW_SUB_ROLES as i, init_review_convoy_liveness as n, reviewTimestampMs as r, evaluateReviewConvoyLiveness as t };
97
56
 
98
- //# sourceMappingURL=in-flight-guard-aQ1IxeI3.js.map
57
+ //# sourceMappingURL=review-convoy-liveness-CpzrcJ5F.js.map
@@ -0,0 +1,3 @@
1
+ import { S as setReviewStatusSync, d as getReviewStatusesSync, f as init_review_status, g as markWorkspaceStuck, i as clearReviewStatus, m as loadReviewStatuses, t as FEEDBACK_DELIVERY_STUCK_REASON, u as getReviewStatusSync } from "./review-status-yljtTd-q.js";
2
+ init_review_status();
3
+ export { FEEDBACK_DELIVERY_STUCK_REASON, clearReviewStatus, getReviewStatusSync, getReviewStatusesSync, loadReviewStatuses, markWorkspaceStuck, setReviewStatusSync };
@@ -0,0 +1,50 @@
1
+ import { f as init_review_status, u as getReviewStatusSync } from "./review-status-yljtTd-q.js";
2
+ import { t as enrichReviewStatus } from "./review-status-enrichment-QV_hQkgS.js";
3
+ import { Effect } from "effect";
4
+ import { isDeepStrictEqual } from "node:util";
5
+ //#region review-status-emit.ts
6
+ init_review_status();
7
+ function canonicalStatus(status) {
8
+ const canonical = { ...status };
9
+ delete canonical.reviewCoordinatorSessionName;
10
+ delete canonical.reviewSessionNames;
11
+ delete canonical.reviewSubStatuses;
12
+ return JSON.parse(JSON.stringify(canonical));
13
+ }
14
+ function sameCanonicalReviewStatus(left, right) {
15
+ return isDeepStrictEqual(canonicalStatus(left), canonicalStatus(right));
16
+ }
17
+ function emitReviewStatusChanged(append, issueId, status) {
18
+ append({
19
+ type: "review.status_changed",
20
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
21
+ payload: {
22
+ issueId,
23
+ status
24
+ }
25
+ });
26
+ (async () => {
27
+ const enriched = await Effect.runPromise(enrichReviewStatus(issueId, status).pipe(Effect.timeout("5 seconds"), Effect.catch(() => Effect.succeed(null))));
28
+ if (!enriched) {
29
+ console.warn(`[pipeline] review-status enrichment timed out or failed for ${issueId}; unenriched event already appended`);
30
+ return;
31
+ }
32
+ if (!((enriched.reviewSessionNames?.length ?? 0) > 0 || !!enriched.reviewCoordinatorSessionName || !!enriched.reviewSubStatuses)) return;
33
+ const current = getReviewStatusSync(issueId);
34
+ if (!current || !sameCanonicalReviewStatus(current, status)) return;
35
+ append({
36
+ type: "review.status_changed",
37
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
38
+ payload: {
39
+ issueId,
40
+ status: enriched
41
+ }
42
+ });
43
+ })().catch((err) => {
44
+ console.warn(`[pipeline] review-status enrichment patch failed for ${issueId}:`, err);
45
+ });
46
+ }
47
+ //#endregion
48
+ export { sameCanonicalReviewStatus as n, emitReviewStatusChanged as t };
49
+
50
+ //# sourceMappingURL=review-status-emit-CUExtHd5.js.map
@@ -1,5 +1,5 @@
1
- import { Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
2
- import { M as listSessionNames, w as init_tmux } from "./tmux-ftABRAmc.js";
1
+ import { Gn as init_projects, ar as resolveProjectFromIssueSync } from "./config-yaml-CmOPzmBb.js";
2
+ import { M as listSessionNames, w as init_tmux } from "./tmux-B1Wbxz5o.js";
3
3
  import { Data, Effect } from "effect";
4
4
  import { existsSync } from "fs";
5
5
  import { join } from "path";
@@ -34,7 +34,7 @@ function mostRecentByTimestamp(sessionNames, parseTimestamp) {
34
34
  async function enrichReviewStatusPromise(issueId, status) {
35
35
  let allSessions = [];
36
36
  try {
37
- allSessions = [...await Effect.runPromise(listSessionNames())];
37
+ allSessions = [...await Effect.runPromise(listSessionNames().pipe(Effect.timeout("5 seconds")))];
38
38
  } catch {
39
39
  return status;
40
40
  }
@@ -124,4 +124,4 @@ const enrichReviewStatus = (issueId, status) => Effect.tryPromise({
124
124
  //#endregion
125
125
  export { enrichReviewStatusFromSessions as n, enrichReviewStatus as t };
126
126
 
127
- //# sourceMappingURL=review-status-enrichment-tbOn_A_u.js.map
127
+ //# sourceMappingURL=review-status-enrichment-QV_hQkgS.js.map
@@ -23,7 +23,27 @@ function readReviewStatusMap() {
23
23
  return null;
24
24
  }
25
25
  }
26
- var TERMINAL_REVIEW, TERMINAL_TEST, reader;
26
+ function registerCanonicalReviewStatusResolver(fn) {
27
+ canonicalResolver = fn;
28
+ }
29
+ function resolveCanonicalReviewStatus(issueId) {
30
+ if (!canonicalResolver) return {
31
+ available: false,
32
+ status: null
33
+ };
34
+ try {
35
+ return {
36
+ available: true,
37
+ status: canonicalResolver(issueId)
38
+ };
39
+ } catch {
40
+ return {
41
+ available: false,
42
+ status: null
43
+ };
44
+ }
45
+ }
46
+ var TERMINAL_REVIEW, TERMINAL_TEST, reader, canonicalResolver;
27
47
  var init_review_status_source = __esmMin((() => {
28
48
  TERMINAL_REVIEW = new Set([
29
49
  "passed",
@@ -32,8 +52,9 @@ var init_review_status_source = __esmMin((() => {
32
52
  ]);
33
53
  TERMINAL_TEST = new Set(["passed", "failed"]);
34
54
  reader = null;
55
+ canonicalResolver = null;
35
56
  }));
36
57
  //#endregion
37
- export { registerReviewStatusMapReader as a, readReviewStatusMap as i, init_review_status_source as n, isRoleTerminal as r, classifyAdvancingSessionLifecycle as t };
58
+ export { registerCanonicalReviewStatusResolver as a, readReviewStatusMap as i, init_review_status_source as n, registerReviewStatusMapReader as o, isRoleTerminal as r, resolveCanonicalReviewStatus as s, classifyAdvancingSessionLifecycle as t };
38
59
 
39
- //# sourceMappingURL=review-status-source-CxuEjLGg.js.map
60
+ //# sourceMappingURL=review-status-source-CpvJnvnQ.js.map
@@ -0,0 +1,3 @@
1
+ import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-CpvJnvnQ.js";
2
+ init_review_status_source();
3
+ export { resolveCanonicalReviewStatus };