@overdeck/desktop 0.45.24 → 0.47.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 (528) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +36 -1
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DDCnXF58.js → acceptance-criteria-10Ur5Dne.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-BNwqxseD.js} +6 -6
  7. package/server/{agent-gc-CHcnvonI.js → agent-gc-C3h9Or3a.js} +5 -5
  8. package/server/agent-state-CYXJVG72.js +3 -0
  9. package/server/agent-state-service-C63p_ftq.js +2 -0
  10. package/server/{agent-state-service-BsgWxZuB.js → agent-state-service-Ds6OeFvo.js} +15 -9
  11. package/server/{agents-EbI0zCJl.js → agents-J5mEnekq.js} +23 -16
  12. package/server/agents-ePFVoZbu.js +3 -0
  13. package/server/archive-planning-B2XplFzT.js +2 -0
  14. package/server/{archive-planning-Du25Jtst.js → archive-planning-BwhxeP7C.js} +22 -26
  15. package/server/{artifact-index-jobs-CbEDfCDu.js → artifact-index-jobs-D1q_vR3V.js} +2 -2
  16. package/server/{assemble-J2ZZ2C15.js → assemble-Bgwqv-Ro.js} +2 -2
  17. package/server/auto-spawn-consent-CQ9Bi9q6.js +1141 -0
  18. package/server/{backlog-auto-trigger-2R2jog7n.js → backlog-auto-trigger-n1lzPgN4.js} +3 -3
  19. package/server/{behavior-B3exJ42O.js → behavior-td6-xhQk.js} +2 -2
  20. package/server/boot-reconciled-stop-events-C7gGe3oB.js +44 -0
  21. package/server/bridge-pool-patrol-CYH2OLb5.js +136 -0
  22. package/server/{briefing-freshness-D1wzUIWv.js → briefing-freshness-DRqZ8lAz.js} +2 -2
  23. package/server/{build-info-Ie_D0_BT.js → build-info-7yiEpl6u.js} +5 -3
  24. package/server/{build-info-CZk_TITh.js → build-info-CpG__c63.js} +1 -1
  25. package/server/{checkpoint-manager-DwbQoqrC.js → checkpoint-manager-CkKmB0wZ.js} +1 -1
  26. package/server/{checkpoint-manager-BI1Wxoku.js → checkpoint-manager-DBcyNR8w.js} +2 -2
  27. package/server/checkpoint-worker.js +1 -1
  28. package/server/{checkpoints-CQB1h765.js → checkpoints-D95apurL.js} +2 -2
  29. package/server/{checkpoints-BJIs5QIA.js → checkpoints-Wm963lm8.js} +1 -1
  30. package/server/{claude-hooks-provision-8Ngo8TpT.js → claude-hooks-provision-4RPxNkE8.js} +1 -1
  31. package/server/{claude-hooks-provision-D8GXF3_s.js → claude-hooks-provision-Bjitl9aI.js} +13 -2
  32. package/server/{claude-permissions-DNWEVV6z.js → claude-permissions-CpbpvUQ2.js} +2 -2
  33. package/server/{claude-settings-overlay-DWy-Bb4Y.js → claude-settings-overlay-BzkHYDwR.js} +1 -1
  34. package/server/{claude-settings-overlay-CEdaqpWI.js → claude-settings-overlay-_H9Yrzab.js} +2 -2
  35. package/server/cli-CjOCSnfj.js +3 -0
  36. package/server/{cli-RoOx5DUf.js → cli-Cte9ZFGn.js} +9 -9
  37. package/server/{cliproxy-C8a1vtTU.js → cliproxy-C5fMJ7rY.js} +2 -2
  38. package/server/{cliproxy-fHfIeiGd.js → cliproxy-DaAbWMjC.js} +1 -1
  39. package/server/{close-issue-DoOifFIK.js → close-issue-BPh1ARCF.js} +5 -5
  40. package/server/{closed-issue-reaper-CktPXo8m.js → closed-issue-reaper-DHRfRMrp.js} +1 -1
  41. package/server/{closed-issue-reaper-Bk3SU4RC.js → closed-issue-reaper-DoOZqGFK.js} +88 -17
  42. package/server/{codex-BZXGhUVB.js → codex-BzGDW_d3.js} +36 -7
  43. package/server/{codex-GcHuUF-k.js → codex-o8FJwzmy.js} +1 -1
  44. package/server/{codex-parser-CFZ1_1Jl.js → codex-parser-Dt-ycU8L.js} +2 -2
  45. package/server/compaction-continuation-CvXpbZ4w.js +200 -0
  46. package/server/{config-CKxYiCmX.js → config-Bi3u1VK7.js} +4 -3
  47. package/server/{config-BZ0sHTju.js → config-BvLe652W.js} +2 -2
  48. package/server/{config-DzV30TOm.js → config-CL3Gyvja.js} +1 -1
  49. package/server/{config-yaml-DySPNmKN.js → config-yaml-CxdwhAIA.js} +276 -14
  50. package/server/conflict-gate-CX80JYYS.js +3 -0
  51. package/server/{conflict-gate-BaCVrH-N.js → conflict-gate-E4nt7ZeS.js} +60 -14
  52. package/server/{context-layers-igZ4FI4_.js → context-layers-C_IIysnm.js} +3 -3
  53. package/server/{context-layers-BrPmE__h.js → context-layers-DAG83UZt.js} +2 -2
  54. package/server/{control-settings-BQp7_4uD.js → control-settings-CiqGxXnc.js} +56 -19
  55. package/server/{conversation-compaction-eQB5CkOe.js → conversation-compaction-BE3CNtHF.js} +1 -1
  56. package/server/{conversation-compaction-CgrR8YYp.js → conversation-compaction-D6-yLtqt.js} +8 -8
  57. package/server/{conversation-service-DPJ71F33.js → conversation-service-DBxoYMDl.js} +10 -8
  58. package/server/conversation-service-D_TS2b1r.js +3 -0
  59. package/server/{conversations-CAsJF9kh.js → conversations-BKDVpB-3.js} +1 -1
  60. package/server/{conversations-6AfUfbwc.js → conversations-D0UEdLtk.js} +4 -4
  61. package/server/{cost-R-m6Yi-W.js → cost-DS1s0DbG.js} +3 -3
  62. package/server/{cost-B2ddP6wq.js → cost-DpgYmYqR.js} +12 -2
  63. package/server/{cost-sync-BsN6ER0n.js → cost-sync-tOCCGnEt.js} +3 -3
  64. package/server/{dag-B1ucnjDU.js → dag-BtkgLeqY.js} +2 -2
  65. package/server/{dangerous-git-ops-BXqeWVSf.js → dangerous-git-ops-CFLykHWt.js} +1 -1
  66. package/server/dashboard-db-worker.js +7 -7
  67. package/server/deacon-BIblC-WX.js +4 -0
  68. package/server/{deacon-nudge-log-6wVqAaqz.js → deacon-nudge-log-B08gF0mh.js} +3 -3
  69. package/server/{deacon-CU_cAYSR.js → deacon-pLRLbPvR.js} +3308 -2707
  70. package/server/deacon-pending-lifecycle-B-Io84AP.js +33 -0
  71. package/server/deacon-swarm-B1XkIvfr.js +2 -0
  72. package/server/{deacon-swarm-BXZZ1Z2-.js → deacon-swarm-v5PMun-m.js} +15 -14
  73. package/server/deacon.js +14 -19
  74. package/server/dead-end-trip-D8A3msX9.js +13 -0
  75. package/server/delivery-BX9HR4wQ.js +3 -0
  76. package/server/{deploy-patrol-AiFoP8dw.js → deploy-patrol-sYgOxLeb.js} +69 -18
  77. package/server/deploy-queue-VfohaPN_.js +169 -0
  78. package/server/deploy-queue-gHJBycaF.js +3 -0
  79. package/server/deploy-window-CFRZ0-kt.js +3 -0
  80. package/server/{deploy-window-C3F-tihF.js → deploy-window-D4DQb8VP.js} +40 -16
  81. package/server/{dev-supervisor-bcOWqdQE.js → dev-supervisor-DiOBDM1c.js} +2 -2
  82. package/server/{devcontainer-renderer-_d6XhyND.js → devcontainer-renderer-BUOIlfgD.js} +3 -3
  83. package/server/dist-B3YPQa5A.js +3 -0
  84. package/server/{dist-Cb_0uvpS.js → dist-C3A8B8wM.js} +1 -1
  85. package/server/{dist-src-BSoS7mkd.js → dist-src-C0adpegX.js} +1 -1
  86. package/server/{docker-DcMTFTUC.js → docker-BJzlkqYB.js} +2 -2
  87. package/server/docker-Y3PElJb0.js +3 -0
  88. package/server/dod-DlNtcH6n.js +91 -0
  89. package/server/durable-review-pipeline-Cibps-Rg.js +20 -0
  90. package/server/durable-review-pipeline-DP6bIcOY.js +3 -0
  91. package/server/{ensure-devcontainer-DNi-ono3.js → ensure-devcontainer-BAofzBPv.js} +4 -4
  92. package/server/{ensure-devcontainer-BZgOhRo7.js → ensure-devcontainer-DMAbWqtQ.js} +1 -1
  93. package/server/{esm-shims-OSHAYaS1.js → esm-shims-BeObUkaw.js} +1 -1
  94. package/server/{event-store-EV2cMiXj.js → event-store-5UKzh9Jf.js} +1 -1
  95. package/server/{event-store-CQL6NeqB.js → event-store-CrHcVC5_.js} +23 -4
  96. package/server/{events-DTfAe4My.js → events-BNrvchBg.js} +3 -3
  97. package/server/{events-BTdrdEq8.js → events-CF8QDbuV.js} +1 -1
  98. package/server/{factory-CFibJuaw.js → factory-Cmm9Hsho.js} +5 -5
  99. package/server/{feature-registry-population-DKZFMbFt.js → feature-registry-population-B6HpNWRy.js} +4 -4
  100. package/server/{feature-registry-storage-BdPuLcBX.js → feature-registry-storage-DJEFx1Pf.js} +2 -2
  101. package/server/{features-ez2271oH.js → features-D5km80UI.js} +2 -2
  102. package/server/{feedback-target-CoFDHiM8.js → feedback-target-BJ5ZADsu.js} +1 -1
  103. package/server/{feedback-target-7mqqwrX6.js → feedback-target-DSxEL6lP.js} +8 -8
  104. package/server/{feedback-writer-CY5L1lB7.js → feedback-writer-C27Hak8a.js} +5 -5
  105. package/server/{feedback-writer-D3a22RCd.js → feedback-writer-CoB9Z6aU.js} +1 -1
  106. package/server/{flywheel-DHrgCphM.js → flywheel-BHx8XuMr.js} +47 -20
  107. package/server/{flywheel-SVF02Jpq.js → flywheel-DZZdtiOL.js} +1 -1
  108. package/server/{flywheel-DzGtWnJ1.js → flywheel-f662Q-y2.js} +16 -15
  109. package/server/flywheel-merge-order-D_xLMbJU.js +462 -0
  110. package/server/flywheel-merge-order-Dil0LmdN.js +2 -0
  111. package/server/forge-B5o319qI.js +3 -0
  112. package/server/forge-BaKGCya6.js +383 -0
  113. package/server/{from-kNxT0bZC.js → from-B3tZbB55.js} +1 -1
  114. package/server/fs-lock-Bre3sGoz.js +130 -0
  115. package/server/{fts-db-CE46vDkZ.js → fts-db-IVc4_M3f.js} +2 -2
  116. package/server/{fts-operations-CqY6zl-i.js → fts-operations-B9jG8wa3.js} +2 -2
  117. package/server/{git-utils-CRw2zLPC.js → git-utils-CsvYfJU3.js} +30 -5
  118. package/server/git-utils-Xg4PFN45.js +3 -0
  119. package/server/{github-app-ClZ2lk8D.js → github-app-Bmg4R9mv.js} +1 -1
  120. package/server/{github-app-C3QrAUd0.js → github-app-CmNk0zLU.js} +3 -3
  121. package/server/{github-client-DfQYVUaw.js → github-client-B6KM9_wA.js} +1 -1
  122. package/server/{github-client-BnIsSrEN.js → github-client-qazkPrg0.js} +3 -3
  123. package/server/github-pr-lookup-DAcVeRLK.js +58 -0
  124. package/server/{harness-binary-DPUi-Pv8.js → harness-binary-BSpiXaLw.js} +2 -2
  125. package/server/{harness-resolve-3lNZkyT4.js → harness-resolve-BAJu5MX8.js} +4 -4
  126. package/server/{health-events-BDOHby5Q.js → health-events-2Z6Wa9SM.js} +1 -1
  127. package/server/{health-events-BBcTYQKU.js → health-events-BwX32k8d.js} +2 -2
  128. package/server/{hooks-DPVX1rwQ.js → hooks-D1g1jKLI.js} +1 -1
  129. package/server/{hooks-CKZgXlJb.js → hooks-DbtbimEf.js} +2 -2
  130. package/server/{hume-Cz8igP9E.js → hume-DXNiu6nQ.js} +2 -2
  131. package/server/hume-VUCNbTgn.js +3 -0
  132. package/server/{idle-stack-reaper-CuLF0j2H.js → idle-stack-reaper-CRA1e0jr.js} +1 -1
  133. package/server/{idle-stack-reaper-DDIRwxUY.js → idle-stack-reaper-Cy-dQzW4.js} +99 -6
  134. package/server/in-flight-guard-D-sSkADM.js +45 -0
  135. package/server/{infra-BEqFxlJc.js → infra-BDQDRopn.js} +81 -5
  136. package/server/{injection-C8aiVJrF.js → injection-6AGnXxlj.js} +7 -7
  137. package/server/{injection-CPUIqNhI.js → injection-Bl8d_jHZ.js} +1 -1
  138. package/server/inspect-agent-CUwVmr2h.js +2 -0
  139. package/server/{inspect-agent-BLuJ1AkT.js → inspect-agent-nXdIptyh.js} +26 -25
  140. package/server/{internal-token-s0-oKybJ.js → internal-token-DzK385vD.js} +2 -2
  141. package/server/{internal-token-BrcU6qfe.js → internal-token-Ias7N8Kg.js} +1 -1
  142. package/server/{io-C9kF1wtJ.js → io-B00PBNku.js} +44 -27
  143. package/server/{issue-closed-CDJk4pIp.js → issue-closed-BehTG1be.js} +8 -8
  144. package/server/{issue-lifecycle-ojZAzDBP.js → issue-lifecycle-Birk-ifu.js} +42 -30
  145. package/server/{issue-lifecycle-B8sZHVHh.js → issue-lifecycle-BqSuQvbn.js} +1 -1
  146. package/server/{issue-service-singleton-BvJ09SaR.js → issue-service-singleton-B2wXiIlw.js} +1 -1
  147. package/server/{issue-service-singleton-Yx5DdmVJ.js → issue-service-singleton-C6ZduvuY.js} +10 -10
  148. package/server/{issues-BMmP_77e.js → issues-DQ5-LatB.js} +2 -2
  149. package/server/{jsonl-parser-BXSlHwEh.js → jsonl-parser-BDpnGFCl.js} +5 -4
  150. package/server/{label-cleanup-B0UJwnv5.js → label-cleanup-Dwnky8FG.js} +3 -3
  151. package/server/{lifecycle-xmBfK2GJ.js → lifecycle-B3s4sM1G.js} +6 -7
  152. package/server/{lifecycle-yPd___5E.js → lifecycle-B4Xdb4cY.js} +2 -2
  153. package/server/{lifecycle-io-DPo7x11I.js → lifecycle-io-CzTHEooc.js} +1 -1
  154. package/server/{lifecycle-io-BREGpnLk.js → lifecycle-io-DCo6s6ks.js} +5 -5
  155. package/server/{linear-client-BsuUvkdA.js → linear-client-9uq7fhiV.js} +3 -3
  156. package/server/{linear-client-CTskEeT_.js → linear-client-CnbtHiic.js} +1 -1
  157. package/server/linear-mcp-auth-BxUOzswy.js +280 -0
  158. package/server/linear-mcp-auth-D46fBCLf.js +2 -0
  159. package/server/memory-fts-worker.js +1 -1
  160. package/server/{merge-CefQNAnq.js → merge-DiW9RdSB.js} +13 -11
  161. package/server/{merge-agent-4WOWlSYA.js → merge-agent-BLUgRsz3.js} +234 -84
  162. package/server/{merge-agent-CKkgIBPB.js → merge-agent-DQTXZk8z.js} +1 -1
  163. package/server/{merge-batch-ClFn2T-y.js → merge-batch-Cp_j9BGk.js} +1 -1
  164. package/server/merge-completeness-B46KqhtY.js +277 -0
  165. package/server/merge-completeness-BLbB5-6n.js +3 -0
  166. package/server/merge-ops-1abz6O_P.js +2 -0
  167. package/server/merge-rebase-CJJVAJuz.js +2 -0
  168. package/server/{merge-rebase-BfaTyXsw.js → merge-rebase-DIkBjgwq.js} +3 -3
  169. package/server/{merge-set-DJ8-UErs.js → merge-set-CBgHfwM0.js} +11 -5
  170. package/server/merge-set-DeUxFsC3.js +3 -0
  171. package/server/{merge-B1DiziGU.js → merge-sr8Nrnmi.js} +1 -1
  172. package/server/merge-sync-CpGmk6Ch.js +3 -0
  173. package/server/{merge-sync-VPV28g0g.js → merge-sync-kr4vqyjM.js} +409 -153
  174. package/server/{merge-train-CHopycP0.js → merge-train-Dmrcus12.js} +18 -8
  175. package/server/{merge-train-deps-D1cOZzy2.js → merge-train-deps-D_uGX91G.js} +21 -15
  176. package/server/merge-verification-NvaAd8CZ.js +220 -0
  177. package/server/merged-docker-cleanup-worker-DH_hrGPI.js +3 -0
  178. package/server/merged-docker-cleanup-worker-Y1R06TEl.js +107 -0
  179. package/server/{multipart-parser-duPAfSBw.js → multipart-parser-R-oC8dQg.js} +2 -2
  180. package/server/{no-resume-mode-Nw29vaFb.js → no-resume-mode-BgD0JUmM.js} +1 -1
  181. package/server/node_modules/.package-lock.json +30 -30
  182. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  183. package/server/node_modules/@google-cloud/common/package.json +2 -2
  184. package/server/node_modules/@types/node/README.md +1 -1
  185. package/server/node_modules/@types/node/crypto.d.ts +1 -1
  186. package/server/node_modules/@types/node/package.json +2 -2
  187. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  188. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  189. package/server/node_modules/gaxios/package.json +1 -1
  190. package/server/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
  191. package/server/node_modules/google-auth-library/package.json +1 -1
  192. package/server/node_modules/google-gax/build/protos/google/api/auth.proto +2 -1
  193. package/server/node_modules/google-gax/build/protos/google/api/backend.proto +12 -1
  194. package/server/node_modules/google-gax/build/protos/google/api/billing.proto +1 -1
  195. package/server/node_modules/google-gax/build/protos/google/api/client.proto +165 -53
  196. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1/resources.proto +1 -1
  197. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/quota_adjuster_settings.proto +7 -3
  198. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/resources.proto +1 -1
  199. package/server/node_modules/google-gax/build/protos/google/api/config_change.proto +1 -1
  200. package/server/node_modules/google-gax/build/protos/google/api/context.proto +1 -1
  201. package/server/node_modules/google-gax/build/protos/google/api/control.proto +3 -3
  202. package/server/node_modules/google-gax/build/protos/google/api/distribution.proto +1 -1
  203. package/server/node_modules/google-gax/build/protos/google/api/documentation.proto +1 -1
  204. package/server/node_modules/google-gax/build/protos/google/api/endpoint.proto +1 -1
  205. package/server/node_modules/google-gax/build/protos/google/api/error_reason.proto +186 -1
  206. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/checked.proto +31 -3
  207. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/eval.proto +8 -9
  208. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/explain.proto +1 -2
  209. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/syntax.proto +20 -22
  210. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/value.proto +2 -3
  211. package/server/node_modules/google-gax/build/protos/google/api/field_behavior.proto +1 -1
  212. package/server/node_modules/google-gax/build/protos/google/api/field_info.proto +1 -1
  213. package/server/node_modules/google-gax/build/protos/google/api/http.proto +1 -1
  214. package/server/node_modules/google-gax/build/protos/google/api/httpbody.proto +1 -1
  215. package/server/node_modules/google-gax/build/protos/google/api/label.proto +1 -1
  216. package/server/node_modules/google-gax/build/protos/google/api/launch_stage.proto +1 -1
  217. package/server/node_modules/google-gax/build/protos/google/api/log.proto +1 -1
  218. package/server/node_modules/google-gax/build/protos/google/api/logging.proto +1 -1
  219. package/server/node_modules/google-gax/build/protos/google/api/metric.proto +1 -1
  220. package/server/node_modules/google-gax/build/protos/google/api/monitored_resource.proto +1 -1
  221. package/server/node_modules/google-gax/build/protos/google/api/monitoring.proto +1 -1
  222. package/server/node_modules/google-gax/build/protos/google/api/policy.proto +1 -1
  223. package/server/node_modules/google-gax/build/protos/google/api/quota.proto +1 -1
  224. package/server/node_modules/google-gax/build/protos/google/api/resource.proto +1 -1
  225. package/server/node_modules/google-gax/build/protos/google/api/routing.proto +8 -4
  226. package/server/node_modules/google-gax/build/protos/google/api/service.proto +2 -3
  227. package/server/node_modules/google-gax/build/protos/google/api/source_info.proto +1 -1
  228. package/server/node_modules/google-gax/build/protos/google/api/system_parameter.proto +1 -1
  229. package/server/node_modules/google-gax/build/protos/google/api/usage.proto +7 -27
  230. package/server/node_modules/google-gax/build/protos/google/api/visibility.proto +1 -1
  231. package/server/node_modules/google-gax/build/protos/google/longrunning/operations.proto +20 -1
  232. package/server/node_modules/google-gax/build/protos/google/protobuf/any.proto +52 -108
  233. package/server/node_modules/google-gax/build/protos/google/protobuf/compiler/ruby/ruby_generated_code.proto +2 -0
  234. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_features.proto +21 -1
  235. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_file_options.proto +24 -0
  236. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_options.proto +15 -0
  237. package/server/node_modules/google-gax/build/protos/google/protobuf/descriptor.proto +118 -30
  238. package/server/node_modules/google-gax/build/protos/google/protobuf/field_mask.proto +16 -18
  239. package/server/node_modules/google-gax/build/protos/google/protobuf/internal_options.proto +8 -1
  240. package/server/node_modules/google-gax/build/protos/google/protobuf/json/json_enumval_custom_string.proto +26 -0
  241. package/server/node_modules/google-gax/build/protos/google/protobuf/json_enumvalue_options.proto +29 -0
  242. package/server/node_modules/google-gax/build/protos/google/protobuf/json_options.proto +14 -0
  243. package/server/node_modules/google-gax/build/protos/google/protobuf/struct.proto +38 -22
  244. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/forced_micro_string.proto +3 -0
  245. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/repeated_field_proxy_import_message.proto +14 -0
  246. package/server/node_modules/google-gax/build/protos/google/protobuf/timestamp.proto +9 -8
  247. package/server/node_modules/google-gax/build/protos/google/protobuf/util/json_format_proto3.proto +18 -0
  248. package/server/node_modules/google-gax/build/protos/google/rpc/code.proto +1 -1
  249. package/server/node_modules/google-gax/build/protos/google/rpc/context/attribute_context.proto +7 -2
  250. package/server/node_modules/google-gax/build/protos/google/rpc/context/audit_context.proto +1 -1
  251. package/server/node_modules/google-gax/build/protos/google/rpc/error_details.proto +5 -5
  252. package/server/node_modules/google-gax/build/protos/google/rpc/http.proto +1 -1
  253. package/server/node_modules/google-gax/build/protos/google/rpc/status.proto +1 -2
  254. package/server/node_modules/google-gax/build/protos/google/type/calendar_period.proto +1 -1
  255. package/server/node_modules/google-gax/build/protos/google/type/color.proto +9 -10
  256. package/server/node_modules/google-gax/build/protos/google/type/date.proto +11 -9
  257. package/server/node_modules/google-gax/build/protos/google/type/datetime.proto +17 -17
  258. package/server/node_modules/google-gax/build/protos/google/type/dayofweek.proto +1 -1
  259. package/server/node_modules/google-gax/build/protos/google/type/decimal.proto +11 -13
  260. package/server/node_modules/google-gax/build/protos/google/type/expr.proto +1 -1
  261. package/server/node_modules/google-gax/build/protos/google/type/fraction.proto +1 -1
  262. package/server/node_modules/google-gax/build/protos/google/type/interval.proto +1 -2
  263. package/server/node_modules/google-gax/build/protos/google/type/latlng.proto +4 -5
  264. package/server/node_modules/google-gax/build/protos/google/type/localized_text.proto +3 -3
  265. package/server/node_modules/google-gax/build/protos/google/type/money.proto +1 -2
  266. package/server/node_modules/google-gax/build/protos/google/type/month.proto +1 -1
  267. package/server/node_modules/google-gax/build/protos/google/type/phone_number.proto +20 -15
  268. package/server/node_modules/google-gax/build/protos/google/type/postal_address.proto +39 -39
  269. package/server/node_modules/google-gax/build/protos/google/type/quaternion.proto +4 -4
  270. package/server/node_modules/google-gax/build/protos/google/type/timeofday.proto +11 -8
  271. package/server/node_modules/google-gax/package.json +5 -5
  272. package/server/node_modules/retry-request/package.json +4 -4
  273. package/server/node_modules/teeny-request/package.json +5 -5
  274. package/server/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  275. package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  276. package/server/node_modules/undici/lib/core/request.js +12 -1
  277. package/server/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
  278. package/server/node_modules/undici/lib/global.js +36 -16
  279. package/server/node_modules/undici/lib/handler/cache-handler.js +236 -116
  280. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
  281. package/server/node_modules/undici/lib/handler/retry-handler.js +24 -0
  282. package/server/node_modules/undici/lib/interceptor/cache.js +152 -62
  283. package/server/node_modules/undici/lib/interceptor/decompress.js +5 -2
  284. package/server/node_modules/undici/lib/util/cache.js +328 -66
  285. package/server/node_modules/undici/lib/util/date.js +23 -6
  286. package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
  287. package/server/node_modules/undici/package.json +1 -1
  288. package/server/{orphan-proposed-reconciler-BvKkWMJQ.js → orphan-proposed-reconciler-B6vJHxtX.js} +242 -34
  289. package/server/{orphan-proposed-reconciler-CTSGcK8p.js → orphan-proposed-reconciler-DcgTPPFY.js} +1 -1
  290. package/server/package-lock.json +31 -31
  291. package/server/package.json +1 -1
  292. package/server/{pan-dir-B0c3w0Ya.js → pan-dir-DMzF5wne.js} +25 -11
  293. package/server/{paths-D-xWGHdh.js → paths-sJBSb7Ul.js} +2 -2
  294. package/server/pending-lifecycle-claim-DilzGfgk.js +110 -0
  295. package/server/persistent-logger-H_VjuOu7.js +57 -0
  296. package/server/{pickup-DUCLWrJY.js → pickup-DWhqzliO.js} +4 -3
  297. package/server/pipeline-membership-C88VBnhJ.js +3 -0
  298. package/server/pipeline-membership-D9SBvItj.js +57 -0
  299. package/server/pipeline-membership-gather-4eR-7Tqy.js +3 -0
  300. package/server/pipeline-membership-gather-CeVGnNJ2.js +593 -0
  301. package/server/{pipeline-notifier-BXkJzDC4.js → pipeline-notifier-D0ALV6Nw.js} +2 -2
  302. package/server/{pipeline-notifier-BJr8gQX6.js → pipeline-notifier-DT6xLFao.js} +1 -1
  303. package/server/post-merge-lifecycle-worker-8HIeS_J6.js +50 -0
  304. package/server/{project-pipelines-C0MWUeCU.js → project-pipelines-9SKt2bEc.js} +2 -2
  305. package/server/{project-repos-B6GycDh9.js → project-repos-B5pIphKg.js} +7 -3
  306. package/server/project-repos-DPjOdfPa.js +3 -0
  307. package/server/projects-_n3Zui6K.js +3 -0
  308. package/server/{prompts-DxzFXuLl.js → prompts-CgzMBvQF.js} +2 -2
  309. package/server/{providers-u4Ga0jOr.js → providers-BI1mOBQ4.js} +1 -1
  310. package/server/{providers-qQAwGQDW.js → providers-BJQSnAAp.js} +7 -7
  311. package/server/public/assets/{chunk-BO2N2NFS-BamJdinX.js → chunk-BO2N2NFS-D_pGACYN.js} +4 -4
  312. package/server/public/assets/{diagram-OG6HWLK6-DfOB8-w4.js → diagram-OG6HWLK6-BO6fe3hH.js} +1 -1
  313. package/server/public/assets/{dist-ByIuzMQW.js → dist-5zingMiA.js} +3 -3
  314. package/server/public/assets/{dist-D7zYSEA6.js → dist-CVxhbI2E.js} +1 -1
  315. package/server/public/assets/{ganttDiagram-6RSMTGT7-EdmRyXL3.js → ganttDiagram-6RSMTGT7-Bgj4A7kp.js} +1 -1
  316. package/server/public/assets/{highlighted-body-OFNGDK62-MerOfTX8.js → highlighted-body-OFNGDK62-DNPK7_cm.js} +1 -1
  317. package/server/public/assets/index-DEpY-D1O.js +807 -0
  318. package/server/public/assets/index-Ddkcz3WT.css +1 -0
  319. package/server/public/assets/{linear-BBbArIcK.js → linear-BB0jQT16.js} +1 -1
  320. package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +1 -0
  321. package/server/public/assets/{pieDiagram-4H26LBE5-BKIddiJN.js → pieDiagram-4H26LBE5-DeGIzzpZ.js} +1 -1
  322. package/server/public/assets/{prod-B8vYiu52.js → prod-XBLvikex.js} +4 -4
  323. package/server/public/assets/{quadrantDiagram-W4KKPZXB-D6RtoULk.js → quadrantDiagram-W4KKPZXB-BV9SLeWz.js} +1 -1
  324. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CLrCedZX.js → sankeyDiagram-5OEKKPKP-Dwja0gj8.js} +1 -1
  325. package/server/public/assets/{xychartDiagram-2RQKCTM6-hznR8DYl.js → xychartDiagram-2RQKCTM6-DCB4qvfw.js} +1 -1
  326. package/server/public/index.html +2 -2
  327. package/server/{pull-requests-_lHueOHW.js → pull-requests-7BgLDsIo.js} +19 -10
  328. package/server/{pull-requests-7N8WKseP.js → pull-requests-Dq0y6IxE.js} +1 -1
  329. package/server/{queries-CjNIf-Ub.js → queries-C-MUZaIy.js} +824 -192
  330. package/server/{rally-CyWT_lNO.js → rally-CPysR4T_.js} +3 -3
  331. package/server/rally-D_VW4bJv.js +3 -0
  332. package/server/{rally-api-C8e_1JRi.js → rally-api-8Ptlp2os.js} +2 -2
  333. package/server/{rally-api-ClOSd-Tt.js → rally-api-CgosKdKL.js} +1 -1
  334. package/server/{rally-client-sgtVqzNU.js → rally-client-CCX0hADj.js} +1 -1
  335. package/server/{rally-client-lc-nokqr.js → rally-client-iYMHWQD7.js} +5 -5
  336. package/server/{reap-terminal-sessions-7KeHv1R1.js → reap-terminal-sessions-4Xg9NGA8.js} +2 -2
  337. package/server/{reap-terminal-sessions-BtHPo6Xc.js → reap-terminal-sessions-Qf-9LVQc.js} +2 -2
  338. package/server/{rebuild-stack-lwtsW0GO.js → rebuild-stack-CMdgaylx.js} +16 -7
  339. package/server/{rebuild-stack-CFvcBHsS.js → rebuild-stack-DqcOVmJO.js} +2 -2
  340. package/server/{reconstruct-cache-C3Ui7ojV.js → reconstruct-cache-CMZJ_Vjq.js} +9 -7
  341. package/server/record-BTwWhtBb.js +3 -0
  342. package/server/{record-update-dE1Aw83j.js → record-update-DaOKS7Wb.js} +124 -157
  343. package/server/record-update-DhI7eySG.js +3 -0
  344. package/server/{recovery-trip-BvRWfUXM.js → recovery-trip-DDH-02ng.js} +2 -2
  345. package/server/{release-engine-Cx48W7z8.js → release-engine-B2X9AfFC.js} +5 -5
  346. package/server/{release-set-CQfuN9-v.js → release-set-G4XKyQ8K.js} +3 -3
  347. package/server/{remote-C_2hasl7.js → remote-BXarMvqf.js} +3 -3
  348. package/server/{remote-ChgimyYa.js → remote-CUhyqjXk.js} +3 -3
  349. package/server/{remote-agents-By1ige5O.js → remote-agents-Bba-MgSA.js} +311 -48
  350. package/server/{remote-agents-CA3Ihlxj.js → remote-agents-CLZB3Coc.js} +2 -2
  351. package/server/{remote-completion-fVe9e_3u.js → remote-completion-CwAp79EC.js} +13 -13
  352. package/server/resume-mOREjlYu.js +3 -0
  353. package/server/{review-agent-CIGOQYBD.js → review-agent--pOptAEV.js} +65 -50
  354. package/server/{review-agent-DNboMyW4.js → review-agent-BTCNkq2h.js} +1 -1
  355. package/server/{review-artifacts-nRDPuMxd.js → review-artifacts-BNmw8dWE.js} +7 -6
  356. package/server/{review-context-2uj-YQ8J.js → review-context-DFxYOOJW.js} +9 -9
  357. package/server/{in-flight-guard-CAAkqPLu.js → review-convoy-liveness-BgU_1jJf.js} +3 -44
  358. package/server/review-status-CGvlA4o_.js +7737 -0
  359. package/server/review-status-Dma9SFaN.js +3 -0
  360. package/server/review-status-emit-DURrmGYX.js +50 -0
  361. package/server/{review-status-enrichment-Dci-ZwEt.js → review-status-enrichment-8NiNXi5W.js} +4 -4
  362. package/server/review-status-source-BLx_1siH.js +3 -0
  363. package/server/{review-status-source-CxuEjLGg.js → review-status-source-DIk1JSow.js} +24 -3
  364. package/server/{review-status-sync-BTOpxtTC.js → review-status-sync-0GxOqeqF.js} +11 -6
  365. package/server/{review-status-sync-DSDK3OMy.js → review-status-sync-muT-EBp2.js} +1 -1
  366. package/server/{review-verdict-feedback-CTd4QMBu.js → review-verdict-feedback-HwF6ODFy.js} +1 -1
  367. package/server/{review-verdict-feedback-CCjVA7Uk.js → review-verdict-feedback-xJNdqBnX.js} +65 -11
  368. package/server/{rollup-FGsKki9R.js → rollup-BQaol5TX.js} +8 -8
  369. package/server/{rollup-BKQC7jp4.js → rollup-BR4t_wck.js} +1 -1
  370. package/server/{scanner-CnqEZeDy.js → scanner-C-D2cFdX.js} +8 -7
  371. package/server/{sequence-io-D909zgeH.js → sequence-io-Bmf1EZM5.js} +4 -4
  372. package/server/{sequencer-agent-CzkcK6P5.js → sequencer-agent-CigMyKh2.js} +7 -6
  373. package/server/server.js +2005 -614
  374. package/server/{service-CLeAoU6G.js → service-CD0DvFvD.js} +114 -68
  375. package/server/{session-fork-CHI1XvL9.js → session-fork-B6cQ5eya.js} +2 -2
  376. package/server/{session-history-BT3IvqhC.js → session-history-3ON_IJjm.js} +7 -55
  377. package/server/settings-CVmWiJ-r.js +2 -0
  378. package/server/{settings-C0zgxOGf.js → settings-PilbFZAM.js} +3 -2
  379. package/server/{settings-BTMvpNFU.js → settings-VN0qOh4U.js} +3 -3
  380. package/server/{shadow-engineering-BJfgm-hX.js → shadow-engineering-DXvx77oE.js} +3 -3
  381. package/server/{shadow-state-7a-524T8.js → shadow-state-BBk_zacw.js} +2 -2
  382. package/server/{shadow-state-DnDyjujH.js → shadow-state-CZBp7pwq.js} +1 -1
  383. package/server/{shadow-utils-Db3oroFG.js → shadow-utils-DdZ05AJS.js} +2 -2
  384. package/server/{ship-log-D9MlVzYU.js → ship-log-7kJfjUX2.js} +1 -1
  385. package/server/{smart-compaction-CV2ukKND.js → smart-compaction-8fA5k5XN.js} +1 -1
  386. package/server/{smart-compaction-KCYScAU1.js → smart-compaction-ByhL9cRS.js} +8 -7
  387. package/server/{spawn-planning-session-DKpdFyOC.js → spawn-planning-session-pcF-YeFE.js} +38 -50
  388. package/server/spawn-planning-session-vLUJoFjy.js +3 -0
  389. package/server/{specialist-completion-Ky9wCDpb.js → specialist-completion-B07XjWD2.js} +1 -1
  390. package/server/{specialist-context-Bn3dCGS2.js → specialist-context-DJ-zFyL3.js} +5 -5
  391. package/server/{specialist-handoff-logger-CMEwYxa2.js → specialist-handoff-logger-aKSxbIgD.js} +2 -2
  392. package/server/{specialist-logs-C5p8G7tx.js → specialist-logs-Dae-n52_.js} +3 -3
  393. package/server/{specialists-CC4r-c2s.js → specialists-6PWdtWcg.js} +1177 -311
  394. package/server/{specialists-DM6bWjsi.js → specialists-Bz-wFT7R.js} +1 -1
  395. package/server/{specialists-jiuuyVkp.js → specialists-DUiExaxb.js} +18 -18
  396. package/server/{specialists-CShuVGWT.js → specialists-KR3pKulN.js} +1 -1
  397. package/server/specs--enInima.js +3 -0
  398. package/server/src-B948bGVR.js +11452 -0
  399. package/server/{src-CXmtj0im.js → src-rac0Mepv.js} +6 -6
  400. package/server/{src-CdmnTM2m.js → src-vHy2-oCv.js} +3 -3
  401. package/server/{stack-health-Bn3o8FBX.js → stack-health-BikqHSjn.js} +1 -1
  402. package/server/{stack-health-DxSdG9cW.js → stack-health-DqLTiEu4.js} +7 -5
  403. package/server/{stale-task-claims-KJKxxiiQ.js → stale-task-claims-Cab_Fo_Z.js} +5 -4
  404. package/server/{staleness-DPm7ClwA.js → staleness-C-a5rBxF.js} +1 -1
  405. package/server/{staleness-CT34nwr9.js → staleness-CGTZyp6V.js} +1 -1
  406. package/server/{state-home-Cn_Qu8IX.js → state-home-722Dkx92.js} +2 -2
  407. package/server/{state-mapping-BL_-3Yt8.js → state-mapping-CybR81Uf.js} +1 -1
  408. package/server/{state-migrate-BGg2ZaOt.js → state-migrate-2u8wIpoL.js} +4 -4
  409. package/server/{stuck-remediation-DYuPRYYw.js → stuck-remediation-CC6q3eqQ.js} +84 -26
  410. package/server/{stuck-remediation-s9_2qfi6.js → stuck-remediation-r1TJu68G.js} +1 -1
  411. package/server/{substrate-bug-weights-service-B-FwCs5V.js → substrate-bug-weights-service-CzIyyWFT.js} +3 -3
  412. package/server/{summary-fork-DpcxN9tf.js → summary-fork-BqgmgPDt.js} +2 -2
  413. package/server/{summary-fork-D1RAk9rJ.js → summary-fork-Df2WFijM.js} +8 -8
  414. package/server/supervisor/{injection-budget-Csw5tqfJ.js → injection-budget-Cg_KIb3o.js} +1 -1
  415. package/server/supervisor/{paths-DehGY2Fj.js → paths-BBOnCYlO.js} +10 -2
  416. package/server/supervisor/pty-supervisor.js +50 -4
  417. package/server/supervisor/{pty-token-x-ea28Us.js → pty-token-BbjwEUUM.js} +3 -3
  418. package/server/supervisor-B4anCCSm.js +2 -0
  419. package/server/{supervisor-wM4ooB5O.js → supervisor-BxqSpjcN.js} +3 -3
  420. package/server/{swarm-readiness-DlP_UjHq.js → swarm-readiness-DfFxa9-n.js} +3 -3
  421. package/server/{system-prerequisites-DUDj1YHf.js → system-prerequisites-ICLSkhhZ.js} +2 -2
  422. package/server/{teardown-workspace-DeTTImn-.js → teardown-workspace-DRdi_CPa.js} +15 -16
  423. package/server/{test-agent-queue-MbxX5vqq.js → test-agent-queue-A_-p-i0I.js} +8 -7
  424. package/server/{test-verdict-gscuksPv.js → test-verdict-BHgTAwIG.js} +1 -1
  425. package/server/{test-verdict-bWYBtqBg.js → test-verdict-C4i9aqEP.js} +1 -1
  426. package/server/{tldr-daemon-BYFkts95.js → tldr-daemon-CvWXBhX1.js} +1 -1
  427. package/server/{tldr-daemon-C-69c3OI.js → tldr-daemon-wvsU6bKv.js} +2 -2
  428. package/server/{tmux-R7N7y-Mh.js → tmux-CfDHob9M.js} +174 -4
  429. package/server/{tmux-B6z7h_vZ.js → tmux-Ctk6RV5l.js} +1 -1
  430. package/server/{token-BK6t8BIT.js → token-DrxwytsZ.js} +2 -2
  431. package/server/{token-util-DxXu-vd1.js → token-util-B48BlCba.js} +1 -1
  432. package/server/token-util-D411CAq9.js +3 -0
  433. package/server/{tracker-config-G6latr8C.js → tracker-config-BcPMElRB.js} +2 -2
  434. package/server/{tracker-utils-DHv5pSDT.js → tracker-utils-CJ6BHjcD.js} +3 -3
  435. package/server/{traefik-connect-Df2uXPsQ.js → traefik-connect-DZ6nMYMj.js} +1 -1
  436. package/server/{tunnel-DGdUkGoZ.js → tunnel-Bp-dRHZz.js} +1 -1
  437. package/server/{tunnel-CDVKJpRv.js → tunnel-DUbUPElU.js} +3 -3
  438. package/server/{typed-errors-BHhE85Ul.js → typed-errors-CKeoDdU3.js} +1 -1
  439. package/server/{typed-errors-2BTMxkZq.js → typed-errors-DyjseiB6.js} +1 -1
  440. package/server/{types-hraoaQIp.js → types-Cm5ASJbq.js} +1 -1
  441. package/server/{types-5M0lupud.js → types-Di8wdakq.js} +1 -1
  442. package/server/uat-promote-verification-CoJuh7XO.js +92 -0
  443. package/server/uat-train-4Q0k06CQ.js +0 -0
  444. package/server/uat-train-Dewoatps.js +2 -0
  445. package/server/{validate-IfDGkaVR.js → validate-B0C8p66t.js} +8 -6
  446. package/server/{validation-Dw1pzDzr.js → validation-B_kIRfNe.js} +4 -4
  447. package/server/{validation-CC9OPqJZ.js → validation-hVOwQk8T.js} +1 -1
  448. package/server/{verification-artifact-B3itKTxu.js → verification-artifact-BxlxTiYK.js} +1 -1
  449. package/server/{verification-artifact-TVFSz_q1.js → verification-artifact-D70AtckY.js} +1 -1
  450. package/server/{verification-runner-BW4HOKAz.js → verification-runner-Bc3cJvpC.js} +1 -1
  451. package/server/{verification-runner-CkgX6EtI.js → verification-runner-KZTz6u72.js} +40 -18
  452. package/server/{vtt-parser-DYPbKcIJ.js → vtt-parser-CE_i3Bcw.js} +1 -1
  453. package/server/{work-agent-prompt-Du8Vh2aJ.js → work-agent-prompt-ByrPAzOy.js} +20 -9
  454. package/server/{workflows-mbQzh6mQ.js → workflows-D0vP1WrK.js} +252 -99
  455. package/server/workflows-DtDX08ed.js +2 -0
  456. package/server/{workspace--8tnhDI0.js → workspace-COWvdibH.js} +1 -1
  457. package/server/{workspace-BPUws1-_.js → workspace-DQkRPLlQ.js} +3 -3
  458. package/server/workspace-anchor-drift-DXYIAHzr.js +224 -0
  459. package/server/workspace-anchor-drift-pwz23TI1.js +3 -0
  460. package/server/{workspace-config-CIVWZOQr.js → workspace-config-BdZM4PvZ.js} +1 -1
  461. package/server/{workspace-manager-CBhNdzE4.js → workspace-manager-BPgTrG66.js} +157 -118
  462. package/server/workspace-manager-C1F3XsnS.js +3 -0
  463. package/server/{workspace-metadata-BzHnwwX4.js → workspace-metadata-CdjzAP8x.js} +1 -1
  464. package/server/{workspace-metadata-_WygnyoX.js → workspace-metadata-DkO_iTLo.js} +2 -2
  465. package/server/{workspaces-Do_9J0LQ.js → workspaces-CRBJikLp.js} +749 -299
  466. package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
  467. package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
  468. package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
  469. package/sync-sources/skills/pan-close/SKILL.md +5 -3
  470. package/sync-sources/skills/pan-merge/SKILL.md +7 -5
  471. package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
  472. package/sync-sources/skills/pan-release/SKILL.md +57 -0
  473. package/sync-sources/skills/pan-reload/SKILL.md +3 -3
  474. package/sync-sources/skills/pan-restart/SKILL.md +5 -4
  475. package/sync-sources/skills/pan-review/SKILL.md +7 -1
  476. package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
  477. package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
  478. package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
  479. package/server/activity-logger-OEUBdfZ8.js +0 -3
  480. package/server/agent-state-Bc3tzUC8.js +0 -3
  481. package/server/agent-state-service-D5UGKIJL.js +0 -2
  482. package/server/agents-wi9NWzs2.js +0 -3
  483. package/server/archive-planning-BZDgzoEj.js +0 -3
  484. package/server/cli-B86rejVV.js +0 -3
  485. package/server/conflict-gate-BhAY7TUd.js +0 -3
  486. package/server/conversation-service-BLd3MYsG.js +0 -3
  487. package/server/deacon-kiQrb4ZT.js +0 -4
  488. package/server/deacon-swarm-C-GwfjJy.js +0 -2
  489. package/server/deploy-window-DkZraDyj.js +0 -3
  490. package/server/dist-Bzy0y69j.js +0 -3
  491. package/server/dod-C6n9RV3G.js +0 -66
  492. package/server/flywheel-merge-order-UU0tiUld.js +0 -245
  493. package/server/flywheel-merge-order-UUcsCDb6.js +0 -2
  494. package/server/forge-CNFnyqps.js +0 -270
  495. package/server/forge-DXnS_YFH.js +0 -2
  496. package/server/git-utils-D0_yhCgF.js +0 -3
  497. package/server/github-pr-lookup-D16NGsSO.js +0 -44
  498. package/server/hume-ccTf4wTX.js +0 -3
  499. package/server/inspect-agent-Brtz0URj.js +0 -2
  500. package/server/label-reconciler-B4iOAjlC.js +0 -113
  501. package/server/launcher-generator-BBWG_SiS.js +0 -473
  502. package/server/merge-ops-CR44oU9-.js +0 -2
  503. package/server/merge-set-bUqbm3yc.js +0 -3
  504. package/server/merge-sync-BJYeOODr.js +0 -3
  505. package/server/merge-verification-BkaOqPsw.js +0 -124
  506. package/server/pipeline-membership-mY3GprlK.js +0 -420
  507. package/server/project-repos-DXKQsc_m.js +0 -3
  508. package/server/projects-vjjcmiN8.js +0 -3
  509. package/server/public/assets/index-CWeMerGO.js +0 -804
  510. package/server/public/assets/index-CenuJ3Cw.css +0 -1
  511. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +0 -1
  512. package/server/rally-zhhtXuDP.js +0 -3
  513. package/server/record-CN0pj4_5.js +0 -3
  514. package/server/record-update-bLJxAXH4.js +0 -3
  515. package/server/resume-BFv1PGpA.js +0 -3
  516. package/server/review-status-btEYlaxA.js +0 -3
  517. package/server/review-status-kZj_KyCk.js +0 -1470
  518. package/server/settings-66A6uvIA.js +0 -2
  519. package/server/spawn-planning-session-qUC2VWu3.js +0 -2
  520. package/server/specs-C8Wsn2XO.js +0 -3
  521. package/server/src-DtcUOZCq.js +0 -4826
  522. package/server/supervisor-FTJAIsAK.js +0 -2
  523. package/server/token-util-DuPuNriz.js +0 -3
  524. package/server/tracker-utils-B4ylXZQK.js +0 -3
  525. package/server/uat-train-B05BWkp-.js +0 -2
  526. package/server/uat-train-DDSrSoV1.js +0 -2152
  527. package/server/workflows-BQu4RFQ-.js +0 -2
  528. package/server/workspace-manager-CWT55qeI.js +0 -3
@@ -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-CmNk0zLU.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-DAcVeRLK.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-CxdwhAIA.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-BSpiXaLw.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-CxdwhAIA.js";
3
+ import { n as harnessBinaryName, o as resolveHarnessBinary, r as init_harness_binary, t as configuredHarnessBinaryPath } from "./harness-binary-BSpiXaLw.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-ePFVoZbu.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-BAJu5MX8.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-BwX32k8d.js";
2
2
  export { getHealthHistory, getLatestHealthEvent, writeHealthEvent };
@@ -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-BDQDRopn.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-BwX32k8d.js.map
@@ -1,3 +1,3 @@
1
- import { _ as pushToHookSync, a as collectMail, b as sendMail, c as generateFixedPointPromptSync, d as initHook, f as initHookSync, g as pushToHook, h as popFromHookSync, i as clearHookSync, l as getHook, m as popFromHook, n as checkHookSync, o as collectMailSync, p as init_hooks, r as clearHook, s as generateFixedPointPrompt, t as checkHook, u as getHookSync, v as reorderHookItems, x as sendMailSync, y as reorderHookItemsSync } from "./hooks-CKZgXlJb.js";
1
+ import { _ as pushToHookSync, a as collectMail, b as sendMail, c as generateFixedPointPromptSync, d as initHook, f as initHookSync, g as pushToHook, h as popFromHookSync, i as clearHookSync, l as getHook, m as popFromHook, n as checkHookSync, o as collectMailSync, p as init_hooks, r as clearHook, s as generateFixedPointPrompt, t as checkHook, u as getHookSync, v as reorderHookItems, x as sendMailSync, y as reorderHookItemsSync } from "./hooks-DbtbimEf.js";
2
2
  init_hooks();
3
3
  export { checkHook, checkHookSync, clearHook, clearHookSync, collectMail, collectMailSync, generateFixedPointPrompt, generateFixedPointPromptSync, getHook, getHookSync, initHook, initHookSync, popFromHook, popFromHookSync, pushToHook, pushToHookSync, reorderHookItems, reorderHookItemsSync, sendMail, sendMailSync };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Vr as init_paths, hr as AGENTS_DIR, ir as FsError, mr as init_errors } from "./config-yaml-DySPNmKN.js";
2
+ import { Fr as init_errors, Ir as AGENTS_DIR, Tr as FsError, li as init_paths } from "./config-yaml-CxdwhAIA.js";
3
3
  import { Effect } from "effect";
4
4
  import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "fs";
5
5
  import { join } from "path";
@@ -294,4 +294,4 @@ var init_hooks = __esmMin((() => {
294
294
  //#endregion
295
295
  export { pushToHookSync as _, collectMail as a, sendMail as b, generateFixedPointPromptSync as c, initHook as d, initHookSync as f, pushToHook as g, popFromHookSync as h, clearHookSync as i, getHook as l, popFromHook as m, checkHookSync as n, collectMailSync as o, init_hooks as p, clearHook as r, generateFixedPointPrompt as s, checkHook as t, getHookSync as u, reorderHookItems as v, sendMailSync as x, reorderHookItemsSync as y };
296
296
 
297
- //# sourceMappingURL=hooks-CKZgXlJb.js.map
297
+ //# sourceMappingURL=hooks-DbtbimEf.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-CIVWZOQr.js";
2
+ import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-BdZM4PvZ.js";
3
3
  import { Data, Effect } from "effect";
4
4
  //#region ../../lib/hume.ts
5
5
  /**
@@ -189,4 +189,4 @@ var init_hume = __esmMin((() => {
189
189
  //#endregion
190
190
  export { init_hume as i, createHumeConfig as n, deleteHumeConfig as r, HumeApiError as t };
191
191
 
192
- //# sourceMappingURL=hume-Cz8igP9E.js.map
192
+ //# sourceMappingURL=hume-DXNiu6nQ.js.map
@@ -0,0 +1,3 @@
1
+ import { i as init_hume, r as deleteHumeConfig } from "./hume-DXNiu6nQ.js";
2
+ init_hume();
3
+ export { deleteHumeConfig };
@@ -1,2 +1,2 @@
1
- import { t as handleAgentLifecycleEventForIdleStack } from "./idle-stack-reaper-DDIRwxUY.js";
1
+ import { t as handleAgentLifecycleEventForIdleStack } from "./idle-stack-reaper-Cy-dQzW4.js";
2
2
  export { handleAgentLifecycleEventForIdleStack };
@@ -1,5 +1,5 @@
1
- import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
2
- import { M as listSessionNames, w as init_tmux } from "./tmux-R7N7y-Mh.js";
1
+ import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
2
+ import { M as listSessionNames, w as init_tmux } from "./tmux-CfDHob9M.js";
3
3
  import { Effect } from "effect";
4
4
  import { exec } from "child_process";
5
5
  import { promisify } from "util";
@@ -36,8 +36,21 @@ const execAsync = promisify(exec);
36
36
  */
37
37
  /** Idle duration before a workspace's UI stack is reaped. */
38
38
  const GRACE_MS = 600 * 1e3;
39
+ /**
40
+ * Idle duration before a workspace's FULL stack is reaped (all services except
41
+ * the dev attach target). The 10-minute UI tier only matches the overdeck
42
+ * project's own server/frontend naming, so other projects' stacks (postgres,
43
+ * redis, api/JVM, vite) lived forever — 35 myn-feature containers were resident
44
+ * for agents stopped 17h+, and that idle RSS feeds the memory-governor pressure
45
+ * that forces scheduler yields (MIN-858/MIN-891 yielded under it, 2026-07-25).
46
+ */
47
+ const FULL_STACK_GRACE_MS = 7200 * 1e3;
39
48
  /** `overdeck-feature-<issue>-server-1` / `-frontend-1`. */
40
49
  const UI_CONTAINER_RE = /^overdeck-feature-([a-z0-9]+-\d+)-(server|frontend)-1$/i;
50
+ /** Compose project names end in `feature-<issue>` by construction (stack-health). */
51
+ const FEATURE_PROJECT_RE = /(?:^|[-_])feature-([a-z0-9]+-\d+)$/i;
52
+ /** Never stop the `dev` container — it is the operator's VS Code attach target. */
53
+ const DEV_CONTAINER_RE = /-dev-1$/i;
41
54
  /**
42
55
  * issueLower -> epoch ms first observed idle. Module-level so the grace clock
43
56
  * survives across patrol cycles within the deacon process. Tolerates transient
@@ -63,13 +76,34 @@ function defaultDeps() {
63
76
  const { stdout } = await execAsync(`docker ps --format '{{.Names}}'`, { timeout: 15e3 });
64
77
  return stdout.split("\n").map((s) => s.trim()).filter(Boolean);
65
78
  },
79
+ listComposeContainers: async () => {
80
+ const { stdout } = await execAsync(`docker ps --format '{{.Names}}\t{{json .Labels}}'`, { timeout: 15e3 });
81
+ const out = [];
82
+ for (const line of stdout.split("\n")) {
83
+ const tab = line.indexOf(" ");
84
+ if (tab <= 0) continue;
85
+ const name = line.slice(0, tab).trim();
86
+ if (!name) continue;
87
+ try {
88
+ const labels = JSON.parse(line.slice(tab + 1));
89
+ out.push({
90
+ name,
91
+ composeProject: labels["com.docker.compose.project"]
92
+ });
93
+ } catch {
94
+ out.push({ name });
95
+ }
96
+ }
97
+ return out;
98
+ },
66
99
  listSessions: () => Effect.runPromise(listSessionNames()),
67
100
  stopContainers: async (names) => {
68
101
  if (names.length === 0) return;
69
102
  await execAsync(`docker stop ${names.map((n) => `"${n}"`).join(" ")}`, { timeout: 6e4 });
70
103
  },
71
104
  now: () => Date.now(),
72
- graceMs: GRACE_MS
105
+ graceMs: GRACE_MS,
106
+ fullStackGraceMs: FULL_STACK_GRACE_MS
73
107
  };
74
108
  }
75
109
  async function reconcileIdleWorkspaceStacks(deps = {}) {
@@ -94,8 +128,10 @@ async function reconcileIdleWorkspaceStacks(deps = {}) {
94
128
  arr.push(name);
95
129
  byIssue.set(issueLower, arr);
96
130
  }
97
- for (const issue of [...firstIdleAt.keys()]) if (!byIssue.has(issue)) firstIdleAt.delete(issue);
98
- if (byIssue.size === 0) return actions;
131
+ for (const issue of [...firstIdleAt.keys()]) {
132
+ if (issue.startsWith("full:")) continue;
133
+ if (!byIssue.has(issue)) firstIdleAt.delete(issue);
134
+ }
99
135
  const sessionBlob = (await d.listSessions().catch(() => [])).join("\n").toLowerCase();
100
136
  const nowMs = d.now();
101
137
  for (const [issueLower, names] of byIssue) {
@@ -127,9 +163,66 @@ async function reconcileIdleWorkspaceStacks(deps = {}) {
127
163
  console.warn(`[deacon] idle-stack reaper: failed to stop ${issueLower} UI containers: ${err?.message ?? err}`);
128
164
  }
129
165
  }
166
+ let composeContainers = [];
167
+ try {
168
+ composeContainers = await d.listComposeContainers();
169
+ } catch {
170
+ composeContainers = [];
171
+ }
172
+ const byProject = /* @__PURE__ */ new Map();
173
+ for (const c of composeContainers) {
174
+ if (!c.composeProject) continue;
175
+ const m = c.composeProject.match(FEATURE_PROJECT_RE);
176
+ if (!m) continue;
177
+ const entry = byProject.get(c.composeProject) ?? {
178
+ issueLower: m[1].toLowerCase(),
179
+ names: []
180
+ };
181
+ entry.names.push(c.name);
182
+ byProject.set(c.composeProject, entry);
183
+ }
184
+ for (const key of [...firstIdleAt.keys()]) {
185
+ if (!key.startsWith("full:")) continue;
186
+ if (!byProject.has(key.slice(5))) firstIdleAt.delete(key);
187
+ }
188
+ for (const [project, { issueLower, names }] of byProject) {
189
+ const clockKey = `full:${project}`;
190
+ if (sessionBlob.includes(issueLower)) {
191
+ firstIdleAt.delete(clockKey);
192
+ continue;
193
+ }
194
+ const since = firstIdleAt.get(clockKey);
195
+ if (since === void 0) {
196
+ firstIdleAt.set(clockKey, nowMs);
197
+ continue;
198
+ }
199
+ if (nowMs - since < d.fullStackGraceMs) continue;
200
+ const targets = names.filter((n) => !DEV_CONTAINER_RE.test(n));
201
+ if (targets.length === 0) {
202
+ firstIdleAt.delete(clockKey);
203
+ continue;
204
+ }
205
+ try {
206
+ await d.stopContainers(targets);
207
+ firstIdleAt.delete(clockKey);
208
+ const issueId = issueLower.toUpperCase();
209
+ const idleMin = Math.round((nowMs - since) / 6e4);
210
+ const action = `Reaped idle workspace stack for ${issueId} — stopped ${targets.length}/${names.length} container(s) in ${project} after ${idleMin}m idle (no agent, no tmux)`;
211
+ actions.push(action);
212
+ console.log(`[deacon] ${action}`);
213
+ emitActivityEntrySync({
214
+ source: "cloister",
215
+ level: "info",
216
+ issueId,
217
+ message: `[deacon] reaped idle workspace stack for ${issueId} — ${targets.length} container(s) stopped, dev attach target preserved`
218
+ });
219
+ } catch (err) {
220
+ console.warn(`[deacon] idle-stack reaper: failed to stop ${project} containers: ${err?.message ?? err}`);
221
+ }
222
+ }
130
223
  return actions;
131
224
  }
132
225
  //#endregion
133
226
  export { reconcileIdleWorkspaceStacks as n, handleAgentLifecycleEventForIdleStack as t };
134
227
 
135
- //# sourceMappingURL=idle-stack-reaper-DDIRwxUY.js.map
228
+ //# sourceMappingURL=idle-stack-reaper-Cy-dQzW4.js.map
@@ -0,0 +1,45 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ //#region ../../lib/cloister/in-flight-guard.ts
3
+ function createPromiseCoalescer() {
4
+ const inFlight = /* @__PURE__ */ new Map();
5
+ return {
6
+ run(key, task) {
7
+ const existing = inFlight.get(key);
8
+ if (existing) return existing;
9
+ const p = task();
10
+ inFlight.set(key, p);
11
+ p.catch(() => {}).finally(() => inFlight.delete(key));
12
+ return p;
13
+ },
14
+ isInFlight(key) {
15
+ return inFlight.has(key);
16
+ }
17
+ };
18
+ }
19
+ function createInFlightGuard() {
20
+ const inFlight = /* @__PURE__ */ new Set();
21
+ return {
22
+ run(key, task, onError) {
23
+ if (inFlight.has(key)) return false;
24
+ inFlight.add(key);
25
+ (async () => {
26
+ try {
27
+ await task();
28
+ } catch (err) {
29
+ onError?.(err);
30
+ } finally {
31
+ inFlight.delete(key);
32
+ }
33
+ })();
34
+ return true;
35
+ },
36
+ isInFlight(key) {
37
+ return inFlight.has(key);
38
+ }
39
+ };
40
+ }
41
+ var init_in_flight_guard = __esmMin((() => {}));
42
+ //#endregion
43
+ export { createPromiseCoalescer as n, init_in_flight_guard as r, createInFlightGuard as t };
44
+
45
+ //# sourceMappingURL=in-flight-guard-D-sSkADM.js.map
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as getOverdeckHome, Nt as readIssueRecordSync, Ot as init_record, Ur as packageRoot, Vr as init_paths$1, wt as getIssueRecordPath } from "./config-yaml-DySPNmKN.js";
2
+ import { At as getIssueRecordPath, Pt as init_record, ci as getOverdeckHome, di as packageRoot, li as init_paths$1, zt as readIssueRecordSync } from "./config-yaml-CxdwhAIA.js";
3
3
  import { n as openDatabase, t as init_driver$1 } from "./driver-CKVGi51s.js";
4
- import { n as updateIssueRecord, t as init_record_update } from "./record-update-dE1Aw83j.js";
5
- import { D as killSession, H as sessionExists, _ as getAgentSessions, w as init_tmux } from "./tmux-R7N7y-Mh.js";
4
+ import { i as updateIssueRecord, r as init_record_update } from "./record-update-DaOKS7Wb.js";
5
+ import { D as killSession, H as sessionExists, _ as getAgentSessions, w as init_tmux } from "./tmux-CfDHob9M.js";
6
6
  import { dirname, isAbsolute, join } from "node:path";
7
7
  import { Context, Effect, Layer, Queue, Stream } from "effect";
8
8
  import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -4723,7 +4723,10 @@ function ensureRuntimeIndexesSync(db) {
4723
4723
  runSchemaTopUp(db, "ALTER TABLE `review_status` ADD COLUMN `strike_transport_retry_count` integer");
4724
4724
  runSchemaTopUp(db, "ALTER TABLE `review_status` ADD COLUMN `strike_next_attempt_at` integer");
4725
4725
  runSchemaTopUp(db, "ALTER TABLE `review_status` ADD COLUMN `strike_landing_attempts` text");
4726
+ runSchemaTopUp(db, "ALTER TABLE `review_status` ADD COLUMN `review_cycle_history` text");
4727
+ runSchemaTopUp(db, "ALTER TABLE `review_status` ADD COLUMN `conflicts_since` text");
4726
4728
  ensureReleaseSetTablesSync(db);
4729
+ ensureUatGenerationRepoTablesSync(db);
4727
4730
  runSchemaTopUp(db, "ALTER TABLE `flywheel_substrate_bugs` ADD COLUMN `affected_criteria` text");
4728
4731
  runSchemaTopUp(db, "CREATE INDEX IF NOT EXISTS `cost_session_id_idx` ON `cost_events` (`session_id`)");
4729
4732
  runSchemaTopUp(db, "CREATE INDEX IF NOT EXISTS `idx_cost_agent_id` ON `cost_events` (`agent_id`, `ts`)");
@@ -4737,6 +4740,7 @@ function ensureRuntimeIndexesSync(db) {
4737
4740
  runSchemaTopUp(db, "ALTER TABLE `agents` ADD COLUMN `review_forked_from_parent` integer");
4738
4741
  runSchemaTopUp(db, "ALTER TABLE `agents` ADD COLUMN `yielded_at` integer");
4739
4742
  runSchemaTopUp(db, "ALTER TABLE `agents` ADD COLUMN `last_yield_resume_at` integer");
4743
+ runSchemaTopUp(db, "ALTER TABLE `agents` ADD COLUMN `started_by` text");
4740
4744
  }
4741
4745
  /**
4742
4746
  * Idempotent schema top-up for release set tables (PAN-399). Existing overdeck.db
@@ -4778,6 +4782,51 @@ function ensureReleaseSetTablesSync(db) {
4778
4782
  db.exec("CREATE UNIQUE INDEX IF NOT EXISTS `release_set_components_issue_component_idx` ON `release_set_components` (`issue_id`,`component_key`)");
4779
4783
  db.exec("CREATE INDEX IF NOT EXISTS `release_set_components_issue_order_idx` ON `release_set_components` (`issue_id`,`release_order`,`component_key`)");
4780
4784
  }
4785
+ /**
4786
+ * Idempotent schema top-up for per-repo UAT generation tables (PAN-3093).
4787
+ * A polyrepo generation spans N member repos, so its per-repo branch, base SHA,
4788
+ * worktree, and publish state cannot live in the single-valued `uat_generations`
4789
+ * columns. Existing overdeck.db files predate these tables and need them added
4790
+ * without a migration reset — same shape as ensureReleaseSetTablesSync above.
4791
+ */
4792
+ function ensureUatGenerationRepoTablesSync(db) {
4793
+ db.exec(`
4794
+ CREATE TABLE IF NOT EXISTS \`uat_generation_repos\` (
4795
+ \`uat_name\` text NOT NULL,
4796
+ \`repo_key\` text NOT NULL,
4797
+ \`repo_path\` text NOT NULL,
4798
+ \`branch\` text NOT NULL,
4799
+ \`base_sha\` text NOT NULL,
4800
+ \`target_branch\` text DEFAULT 'main' NOT NULL,
4801
+ \`worktree_path\` text NOT NULL,
4802
+ \`merge_order\` integer DEFAULT 0 NOT NULL,
4803
+ \`promoted_at\` integer,
4804
+ \`merge_sha\` text,
4805
+ PRIMARY KEY(\`uat_name\`, \`repo_key\`),
4806
+ FOREIGN KEY (\`uat_name\`) REFERENCES \`uat_generations\`(\`name\`) ON UPDATE no action ON DELETE no action
4807
+ )
4808
+ `);
4809
+ db.exec("CREATE INDEX IF NOT EXISTS `uat_generation_repos_uat_order_idx` ON `uat_generation_repos` (`uat_name`,`merge_order`)");
4810
+ db.exec(`
4811
+ CREATE TABLE IF NOT EXISTS \`uat_generation_member_repos\` (
4812
+ \`uat_name\` text NOT NULL,
4813
+ \`issue_id\` text NOT NULL,
4814
+ \`repo_key\` text NOT NULL,
4815
+ \`branch\` text NOT NULL,
4816
+ \`head_sha\` text NOT NULL,
4817
+ \`merge_order_in_repo\` integer DEFAULT 0 NOT NULL,
4818
+ PRIMARY KEY(\`uat_name\`, \`issue_id\`, \`repo_key\`),
4819
+ FOREIGN KEY (\`uat_name\`) REFERENCES \`uat_generations\`(\`name\`) ON UPDATE no action ON DELETE no action,
4820
+ FOREIGN KEY (\`issue_id\`) REFERENCES \`issues\`(\`id\`) ON UPDATE no action ON DELETE no action
4821
+ )
4822
+ `);
4823
+ db.exec("CREATE INDEX IF NOT EXISTS `uat_generation_member_repos_uat_idx` ON `uat_generation_member_repos` (`uat_name`,`issue_id`)");
4824
+ runSchemaTopUp(db, "CREATE INDEX IF NOT EXISTS `uat_generations_uncleaned_terminal_idx` ON `uat_generations` (`project_root`,`status`) WHERE `cleaned_at` IS NULL");
4825
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_repos` ADD COLUMN `target_branch` text DEFAULT 'main' NOT NULL");
4826
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_repos` ADD COLUMN `merge_sha` text");
4827
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_resolutions` ADD COLUMN `kind` text");
4828
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_resolutions` ADD COLUMN `note` text");
4829
+ }
4781
4830
  function warnSchemaDriftSync(db) {
4782
4831
  try {
4783
4832
  const report = auditOverdeckSchemaSync(db, OVERDECK_SCHEMA_TOP_UP_EXPECTATIONS);
@@ -4941,6 +4990,10 @@ var init_infra = __esmMin((() => {
4941
4990
  table: "review_status",
4942
4991
  column: "strike_landing_attempts"
4943
4992
  },
4993
+ {
4994
+ table: "review_status",
4995
+ column: "conflicts_since"
4996
+ },
4944
4997
  {
4945
4998
  table: "agents",
4946
4999
  column: "yielded_by_scheduler"
@@ -4976,6 +5029,26 @@ var init_infra = __esmMin((() => {
4976
5029
  {
4977
5030
  table: "agents",
4978
5031
  column: "last_yield_resume_at"
5032
+ },
5033
+ {
5034
+ table: "agents",
5035
+ column: "started_by"
5036
+ },
5037
+ {
5038
+ table: "uat_generation_repos",
5039
+ column: "target_branch"
5040
+ },
5041
+ {
5042
+ table: "uat_generation_repos",
5043
+ column: "merge_sha"
5044
+ },
5045
+ {
5046
+ table: "uat_generation_resolutions",
5047
+ column: "kind"
5048
+ },
5049
+ {
5050
+ table: "uat_generation_resolutions",
5051
+ column: "note"
4979
5052
  }
4980
5053
  ],
4981
5054
  indexes: [
@@ -4984,7 +5057,10 @@ var init_infra = __esmMin((() => {
4984
5057
  "idx_cost_issue_upper",
4985
5058
  "release_sets_project_idx",
4986
5059
  "release_set_components_issue_component_idx",
4987
- "release_set_components_issue_order_idx"
5060
+ "release_set_components_issue_order_idx",
5061
+ "uat_generation_repos_uat_order_idx",
5062
+ "uat_generation_member_repos_uat_idx",
5063
+ "uat_generations_uncleaned_terminal_idx"
4988
5064
  ]
4989
5065
  };
4990
5066
  overdeckEvents = sqliteTable("events", {
@@ -5103,4 +5179,4 @@ var init_infra = __esmMin((() => {
5103
5179
  //#endregion
5104
5180
  export { init_paths as A, inArray as C, sql as D, like as E, OVERDECK_MIGRATION_PATH as O, gte as S, isNull as T, integer as _, EventBus as a, and as b, Records as c, getOverdeckDatabaseSync as d, init_infra as f, real as g, text as h, DbLive as i, getOverdeckDatabasePath as k, Tmux as l, sqliteTable as m, CostArchiveLive as n, EventBusLive as o, init_sqlite_core as p, Db as r, Forge as s, CostArchive as t, TmuxLive as u, init_drizzle_orm as v, isNotNull as w, eq as x, desc as y };
5105
5181
 
5106
- //# sourceMappingURL=infra-BEqFxlJc.js.map
5182
+ //# sourceMappingURL=infra-BDQDRopn.js.map
@@ -1,10 +1,10 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Tn as init_projects, er as require_dist, fn as findProjectByPathSync, jn as loadProjectsConfigSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
3
- import { d as resolveRagRunsFile, f as resolveStatusFile, i as init_paths, r as ensureParentDir } from "./paths-D-xWGHdh.js";
4
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-ez2271oH.js";
5
- import { a as isMemoryKnowledgeIndexEnabled, i as init_settings, o as isMemoryPromptTimeInjectionEnabled } from "./settings-BTMvpNFU.js";
6
- import { n as extractWithProviderPolicy, t as init_providers } from "./providers-qQAwGQDW.js";
7
- import { n as init_fts_db, r as runMemoryFtsStatement } from "./fts-db-CE46vDkZ.js";
2
+ import { Gn as init_projects, Mn as findProjectByPathSync, Zn as loadProjectsConfigSync, ar as resolveProjectFromIssueSync, xr as require_dist } from "./config-yaml-CxdwhAIA.js";
3
+ import { d as resolveRagRunsFile, f as resolveStatusFile, i as init_paths, r as ensureParentDir } from "./paths-sJBSb7Ul.js";
4
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-D5km80UI.js";
5
+ import { a as isMemoryKnowledgeIndexEnabled, i as init_settings, o as isMemoryPromptTimeInjectionEnabled } from "./settings-VN0qOh4U.js";
6
+ import { n as extractWithProviderPolicy, t as init_providers } from "./providers-BJQSnAAp.js";
7
+ import { n as init_fts_db, r as runMemoryFtsStatement } from "./fts-db-IVc4_M3f.js";
8
8
  import { Result, Schema } from "effect";
9
9
  import { extname, isAbsolute, join, relative, resolve } from "path";
10
10
  import { createHash, randomUUID } from "crypto";
@@ -823,4 +823,4 @@ var init_injection = __esmMin((() => {
823
823
  //#endregion
824
824
  export { buildMatchQuery as a, init_query_expansion as c, resolveKnowledgeBundleRoot as i, init_injection as n, init_search as o, injectPromptTimeMemory as r, clearQueryExpansionCache as s, PROMPT_TIME_MEMORY_BUDGETS as t };
825
825
 
826
- //# sourceMappingURL=injection-C8aiVJrF.js.map
826
+ //# sourceMappingURL=injection-6AGnXxlj.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_injection, r as injectPromptTimeMemory } from "./injection-C8aiVJrF.js";
1
+ import { n as init_injection, r as injectPromptTimeMemory } from "./injection-6AGnXxlj.js";
2
2
  init_injection();
3
3
  export { injectPromptTimeMemory };
@@ -0,0 +1,2 @@
1
+ import { n as onInspectComplete } from "./inspect-agent-nXdIptyh.js";
2
+ export { onInspectComplete };
@@ -1,14 +1,14 @@
1
- import { D as resolveTieredExecutionEnabled, G as setupCredentialFileAuthSync, H as init_providers, L as clearCredentialFileAuthSync, T as init_tier_table, V as getProviderForModelSync, f as loadConfigSync, mr as init_errors, t as init_config_yaml, tt as resolveModel, ur as ProcessSpawnError } from "./config-yaml-DySPNmKN.js";
2
- import { D as killSession, H as sessionExists, s as createSession, w as init_tmux } from "./tmux-R7N7y-Mh.js";
3
- import { b as setReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
4
- import { A as spawnTierSupervisor, Ar as saveAgentRuntimeState, Cn as getProviderEnvForModel, D as init_tier_supervisor, E as deliverCommitForReview, O as loadPrdDraft, b as init_agents, cr as saveAgentState, j as supervisorAgentId } from "./queries-CjNIf-Ub.js";
5
- import { c as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-B6GycDh9.js";
6
- import { m as readWorkspacePlanSync, o as init_io } from "./io-C9kF1wtJ.js";
7
- import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-BBWG_SiS.js";
8
- import { a as init_claude_permissions, i as getClaudePermissionFlagsSync } from "./claude-permissions-DNWEVV6z.js";
9
- import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-DPUi-Pv8.js";
10
- import { i as init_git_utils, s as snapshotWorkspaceHeadsPromise } from "./git-utils-CRw2zLPC.js";
11
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-CDJk4pIp.js";
1
+ import { D as resolveTieredExecutionEnabled, Fr as init_errors, G as setupCredentialFileAuthSync, H as init_providers, L as clearCredentialFileAuthSync, T as init_tier_table, V as getProviderForModelSync, f as loadConfigSync, jr as ProcessSpawnError, t as init_config_yaml, tt as resolveModel } from "./config-yaml-CxdwhAIA.js";
2
+ import { D as killSession, H as sessionExists, s as createSession, w as init_tmux } from "./tmux-CfDHob9M.js";
3
+ import { C as setReviewStatusSync, p as init_review_status } from "./review-status-CGvlA4o_.js";
4
+ import { A as spawnTierSupervisor, Br as saveAgentRuntimeState, D as init_tier_supervisor, E as deliverCommitForReview, It as init_delivery, Mt as deliverAgentMessage, O as loadPrdDraft, b as init_agents, gr as saveAgentState, j as supervisorAgentId, kn as getProviderEnvForModel } from "./queries-C-MUZaIy.js";
5
+ import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-B5pIphKg.js";
6
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-B00PBNku.js";
7
+ import { C as init_launcher_generator, S as generateLauncherScriptSync } from "./auto-spawn-consent-CQ9Bi9q6.js";
8
+ import { a as init_claude_permissions, i as getClaudePermissionFlagsSync } from "./claude-permissions-CpbpvUQ2.js";
9
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BSpiXaLw.js";
10
+ import { a as init_git_utils, o as parseCompositeSnapshot, u as snapshotWorkspaceHeadsPromise } from "./git-utils-CsvYfJU3.js";
11
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BehTG1be.js";
12
12
  import { Effect } from "effect";
13
13
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
14
14
  import { dirname, join } from "path";
@@ -84,16 +84,6 @@ function saveCheckpoint(projectKey, issueId, itemId, commitSha) {
84
84
  function shellQuote(value) {
85
85
  return `'${value.replace(/'/g, `'"'"'`)}'`;
86
86
  }
87
- function parseCompositeSnapshot(snapshot) {
88
- const heads = /* @__PURE__ */ new Map();
89
- if (!snapshot) return heads;
90
- for (const token of snapshot.split(/\s+/)) {
91
- const separator = token.lastIndexOf("@");
92
- if (separator <= 0 || separator === token.length - 1) continue;
93
- heads.set(token.slice(0, separator), token.slice(separator + 1));
94
- }
95
- return heads;
96
- }
97
87
  async function readHead(root) {
98
88
  try {
99
89
  const { stdout } = await execAsync("git rev-parse HEAD", {
@@ -215,6 +205,7 @@ init_issue_closed();
215
205
  init_io();
216
206
  init_tier_table();
217
207
  init_tier_supervisor();
208
+ init_delivery();
218
209
  promisify(exec);
219
210
  const __dirname = dirname(fileURLToPath(import.meta.url));
220
211
  async function buildInspectPromptPromise(context) {
@@ -290,6 +281,7 @@ async function spawnInspectAgentPromise(context, opts = {}) {
290
281
  });
291
282
  const { config } = loadConfigSync();
292
283
  const model = resolveModel("work", subRole, config);
284
+ const effort = config.roles?.work?.effort ?? "high";
293
285
  const providerEnv = await getProviderEnvForModel(model);
294
286
  const provider = getProviderForModelSync(model);
295
287
  if (provider.authType === "credential-file") setupCredentialFileAuthSync(provider, context.workspace);
@@ -316,6 +308,7 @@ async function spawnInspectAgentPromise(context, opts = {}) {
316
308
  baseCommand: "claude",
317
309
  sessionId,
318
310
  model,
311
+ extraArgs: `--effort ${effort}`,
319
312
  permissionFlags: getClaudePermissionFlagsSync()
320
313
  }), { mode: 493 });
321
314
  const envForTmux = {
@@ -357,12 +350,20 @@ async function spawnInspectAgentPromise(context, opts = {}) {
357
350
  };
358
351
  }
359
352
  }
360
- async function onInspectCompletePromise(projectKey, issueId, itemId, status, workspacePath) {
353
+ async function onInspectCompletePromise(projectKey, issueId, itemId, status, workspacePath, notes, deps = {}) {
361
354
  if (status === "passed") {
362
355
  const commitSha = await Effect.runPromise(getCurrentHead(issueId, workspacePath));
363
356
  saveCheckpoint(projectKey, issueId, itemId, commitSha);
364
357
  console.log(`[inspect] Checkpoint saved for ${issueId} item ${itemId} at ${commitSha.substring(0, 8)}`);
365
358
  } else console.log(`[inspect] Item ${itemId} blocked for ${issueId} — no checkpoint saved`);
359
+ const workAgentId = `agent-${issueId.toLowerCase()}`;
360
+ const message = status === "passed" ? `Inspection verdict for xBRIEF item ${itemId}: PASSED. The checkpoint is saved — continue to your next item.` : `Inspection verdict for xBRIEF item ${itemId}: BLOCKED. Do not build on this item's changes until the finding is addressed.${notes ? ` Finding: ${notes}` : ""}`;
361
+ try {
362
+ const result = await (deps.deliver ?? deliverAgentMessage)(workAgentId, message, "inspect-verdict");
363
+ if (!result.ok) console.error(`[inspect] FAILED to deliver ${status} verdict for ${issueId} item ${itemId} to ${workAgentId}: ${result.failure ?? "unknown"}`);
364
+ } catch (err) {
365
+ console.error(`[inspect] FAILED to deliver ${status} verdict for ${issueId} item ${itemId} to ${workAgentId}: ${err instanceof Error ? err.message : String(err)}`);
366
+ }
366
367
  }
367
368
  /**
368
369
  * Effect-typed variant of {@link buildInspectPrompt}.
@@ -391,10 +392,10 @@ function spawnInspectAgent(context, opts = {}) {
391
392
  /**
392
393
  * Effect-typed variant of {@link onInspectComplete}. Never fails.
393
394
  */
394
- function onInspectComplete(projectKey, issueId, itemId, status, workspacePath) {
395
- return Effect.promise(() => onInspectCompletePromise(projectKey, issueId, itemId, status, workspacePath));
395
+ function onInspectComplete(projectKey, issueId, itemId, status, workspacePath, notes, deps = {}) {
396
+ return Effect.promise(() => onInspectCompletePromise(projectKey, issueId, itemId, status, workspacePath, notes, deps));
396
397
  }
397
398
  //#endregion
398
399
  export { onInspectComplete as n, spawnInspectAgent as r, buildInspectPrompt as t };
399
400
 
400
- //# sourceMappingURL=inspect-agent-BLuJ1AkT.js.map
401
+ //# sourceMappingURL=inspect-agent-nXdIptyh.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as getOverdeckHome, Vr as init_paths, ir as FsError, mr as init_errors } from "./config-yaml-DySPNmKN.js";
2
+ import { Fr as init_errors, Tr as FsError, ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
3
3
  import { join } from "node:path";
4
4
  import { Effect } from "effect";
5
5
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -101,4 +101,4 @@ var init_internal_token = __esmMin((() => {
101
101
  //#endregion
102
102
  export { getInternalToken as a, ensureInternalTokenSync as i, _resetInternalTokenCacheForTests as n, getInternalTokenSync as o, ensureInternalToken as r, init_internal_token as s, INTERNAL_TOKEN_HEADER as t };
103
103
 
104
- //# sourceMappingURL=internal-token-s0-oKybJ.js.map
104
+ //# sourceMappingURL=internal-token-DzK385vD.js.map
@@ -1,3 +1,3 @@
1
- import { a as getInternalToken, i as ensureInternalTokenSync, n as _resetInternalTokenCacheForTests, o as getInternalTokenSync, r as ensureInternalToken, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-s0-oKybJ.js";
1
+ import { a as getInternalToken, i as ensureInternalTokenSync, n as _resetInternalTokenCacheForTests, o as getInternalTokenSync, r as ensureInternalToken, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DzK385vD.js";
2
2
  init_internal_token();
3
3
  export { INTERNAL_TOKEN_HEADER, _resetInternalTokenCacheForTests, ensureInternalToken, ensureInternalTokenSync, getInternalToken, getInternalTokenSync };