@overdeck/desktop 0.45.24 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +32 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DDCnXF58.js → acceptance-criteria-CCwFGICj.js} +2 -2
  4. package/server/activity-logger-CMthG6Vd.js +3 -0
  5. package/server/{activity-logger-DDlOIAML.js → activity-logger-CyteR4JO.js} +24 -13
  6. package/server/{advancing-selfheal-BVwW4qRn.js → advancing-selfheal-De1L-Sb4.js} +6 -6
  7. package/server/{agent-gc-CHcnvonI.js → agent-gc-CBULruzm.js} +5 -5
  8. package/server/agent-state-VQk8fY9F.js +3 -0
  9. package/server/{agent-state-service-BsgWxZuB.js → agent-state-service-BlnSkRFA.js} +5 -5
  10. package/server/{agent-state-service-D5UGKIJL.js → agent-state-service-hZpxIw1E.js} +1 -1
  11. package/server/agents-BKKkxKgK.js +3 -0
  12. package/server/{agents-EbI0zCJl.js → agents-C5rWYhb6.js} +4 -4
  13. package/server/archive-planning-0FJ6Xd3b.js +2 -0
  14. package/server/{archive-planning-Du25Jtst.js → archive-planning-C0lAbNB_.js} +16 -24
  15. package/server/{artifact-index-jobs-CbEDfCDu.js → artifact-index-jobs-ug6ZxIP5.js} +2 -2
  16. package/server/{assemble-J2ZZ2C15.js → assemble-DnffNpOo.js} +2 -2
  17. package/server/{backlog-auto-trigger-2R2jog7n.js → backlog-auto-trigger-Dh-i9PQf.js} +3 -3
  18. package/server/{behavior-B3exJ42O.js → behavior-CfIg6pKp.js} +2 -2
  19. package/server/bridge-pool-patrol-CUFmjVDN.js +136 -0
  20. package/server/{briefing-freshness-D1wzUIWv.js → briefing-freshness-DHmCSLar.js} +2 -2
  21. package/server/{build-info-CZk_TITh.js → build-info-BP160gU7.js} +1 -1
  22. package/server/{build-info-Ie_D0_BT.js → build-info-CuFfxZxp.js} +5 -3
  23. package/server/{checkpoint-manager-BI1Wxoku.js → checkpoint-manager-DEWD82qK.js} +2 -2
  24. package/server/{checkpoint-manager-DwbQoqrC.js → checkpoint-manager-Dxh0FYsv.js} +1 -1
  25. package/server/checkpoint-worker.js +1 -1
  26. package/server/{checkpoints-CQB1h765.js → checkpoints-CZvbtLnr.js} +2 -2
  27. package/server/{checkpoints-BJIs5QIA.js → checkpoints-DMTgXuLG.js} +1 -1
  28. package/server/{claude-hooks-provision-8Ngo8TpT.js → claude-hooks-provision-CN-xo-do.js} +1 -1
  29. package/server/{claude-hooks-provision-D8GXF3_s.js → claude-hooks-provision-fvy4RD2b.js} +13 -2
  30. package/server/{claude-permissions-DNWEVV6z.js → claude-permissions-CN0cSCPp.js} +2 -2
  31. package/server/{claude-settings-overlay-CEdaqpWI.js → claude-settings-overlay-CJn35FHQ.js} +2 -2
  32. package/server/{claude-settings-overlay-DWy-Bb4Y.js → claude-settings-overlay-Dabi9slj.js} +1 -1
  33. package/server/cli-DmXETsw-.js +3 -0
  34. package/server/{cli-RoOx5DUf.js → cli-oCWYA1pE.js} +9 -9
  35. package/server/{cliproxy-C8a1vtTU.js → cliproxy-C8mB3KuB.js} +2 -2
  36. package/server/{cliproxy-fHfIeiGd.js → cliproxy-PGwTX_o8.js} +1 -1
  37. package/server/{close-issue-DoOifFIK.js → close-issue-D5MF5GqF.js} +5 -5
  38. package/server/{closed-issue-reaper-CktPXo8m.js → closed-issue-reaper-CJ24u0Zt.js} +1 -1
  39. package/server/{closed-issue-reaper-Bk3SU4RC.js → closed-issue-reaper-Cltx86x5.js} +37 -16
  40. package/server/{codex-GcHuUF-k.js → codex-BdEsUFWh.js} +1 -1
  41. package/server/{codex-BZXGhUVB.js → codex-Drlf5Xhf.js} +36 -7
  42. package/server/{codex-parser-CFZ1_1Jl.js → codex-parser-DpB89Vqa.js} +2 -2
  43. package/server/compaction-continuation-K2AxQX4H.js +200 -0
  44. package/server/{config-CKxYiCmX.js → config-B2IMcBxx.js} +4 -3
  45. package/server/{config-DzV30TOm.js → config-DV-grfQc.js} +1 -1
  46. package/server/{config-BZ0sHTju.js → config-Dr3pW6w6.js} +2 -2
  47. package/server/{config-yaml-DySPNmKN.js → config-yaml-CmOPzmBb.js} +268 -14
  48. package/server/{conflict-gate-BaCVrH-N.js → conflict-gate-B9cN3SBi.js} +4 -4
  49. package/server/{conflict-gate-BhAY7TUd.js → conflict-gate-Dh754uyA.js} +1 -1
  50. package/server/{context-layers-BrPmE__h.js → context-layers-D6LZo3l1.js} +2 -2
  51. package/server/{context-layers-igZ4FI4_.js → context-layers-dR5YxHYB.js} +3 -3
  52. package/server/{control-settings-BQp7_4uD.js → control-settings-C7DUehE1.js} +49 -19
  53. package/server/{conversation-compaction-CgrR8YYp.js → conversation-compaction-BoqdDXWF.js} +8 -8
  54. package/server/{conversation-compaction-eQB5CkOe.js → conversation-compaction-Dj4FAKoZ.js} +1 -1
  55. package/server/{conversation-service-DPJ71F33.js → conversation-service-5aCnq1zR.js} +8 -7
  56. package/server/conversation-service-BCxl4f8Z.js +3 -0
  57. package/server/{conversations-6AfUfbwc.js → conversations-BUpYsOZg.js} +4 -4
  58. package/server/{conversations-CAsJF9kh.js → conversations-C34dyIb9.js} +1 -1
  59. package/server/{cost-B2ddP6wq.js → cost-Bgcub5kW.js} +12 -2
  60. package/server/{cost-R-m6Yi-W.js → cost-CvxRrucd.js} +3 -3
  61. package/server/{cost-sync-BsN6ER0n.js → cost-sync-Dv3LUaNW.js} +3 -3
  62. package/server/{dag-B1ucnjDU.js → dag-ombYYt4s.js} +2 -2
  63. package/server/{dangerous-git-ops-BXqeWVSf.js → dangerous-git-ops-BcJPC5Rr.js} +1 -1
  64. package/server/dashboard-db-worker.js +7 -7
  65. package/server/deacon-DrXqT9LQ.js +4 -0
  66. package/server/{deacon-CU_cAYSR.js → deacon-hi9KLPLT.js} +2933 -2704
  67. package/server/{deacon-nudge-log-6wVqAaqz.js → deacon-nudge-log-BNBebzeL.js} +3 -3
  68. package/server/deacon-pending-lifecycle-Cpk0k7Hi.js +33 -0
  69. package/server/{deacon-swarm-BXZZ1Z2-.js → deacon-swarm-DBxUaO-A.js} +13 -13
  70. package/server/deacon-swarm-I2JfX5Tg.js +2 -0
  71. package/server/deacon.js +14 -19
  72. package/server/dead-end-trip-CQcP70ND.js +13 -0
  73. package/server/delivery-Da0zEMY4.js +3 -0
  74. package/server/{deploy-patrol-AiFoP8dw.js → deploy-patrol-Df-Tmaq0.js} +69 -18
  75. package/server/deploy-queue-9SrhZR63.js +3 -0
  76. package/server/deploy-queue-UjKGYsDe.js +169 -0
  77. package/server/deploy-window-jOiPRHL0.js +3 -0
  78. package/server/{deploy-window-C3F-tihF.js → deploy-window-rpqpWqHA.js} +40 -16
  79. package/server/{dev-supervisor-bcOWqdQE.js → dev-supervisor-CC46Ig8q.js} +2 -2
  80. package/server/{devcontainer-renderer-_d6XhyND.js → devcontainer-renderer-68CSCRnu.js} +3 -3
  81. package/server/{dist-Cb_0uvpS.js → dist-CJy72uEg.js} +1 -1
  82. package/server/dist-DSlxIU1H.js +3 -0
  83. package/server/{dist-src-BSoS7mkd.js → dist-src-Bik83hFi.js} +1 -1
  84. package/server/docker-BMVTSFL5.js +3 -0
  85. package/server/{docker-DcMTFTUC.js → docker-Dam7mbIB.js} +2 -2
  86. package/server/{dod-C6n9RV3G.js → dod-Dar-yheg.js} +8 -4
  87. package/server/durable-review-pipeline-CGZ5QBxh.js +17 -0
  88. package/server/durable-review-pipeline-jpgCJZFp.js +3 -0
  89. package/server/{ensure-devcontainer-DNi-ono3.js → ensure-devcontainer-B057YA81.js} +4 -4
  90. package/server/{ensure-devcontainer-BZgOhRo7.js → ensure-devcontainer-C98V8yW-.js} +1 -1
  91. package/server/{esm-shims-OSHAYaS1.js → esm-shims-Br9BPdkR.js} +1 -1
  92. package/server/{event-store-EV2cMiXj.js → event-store-ELqkVOn0.js} +1 -1
  93. package/server/{event-store-CQL6NeqB.js → event-store-zY5MJHgF.js} +23 -4
  94. package/server/{events-BTdrdEq8.js → events-D6pyqhzM.js} +1 -1
  95. package/server/{events-DTfAe4My.js → events-D9PR1IC0.js} +3 -3
  96. package/server/{factory-CFibJuaw.js → factory-CRoOpGsF.js} +5 -5
  97. package/server/{feature-registry-population-DKZFMbFt.js → feature-registry-population--YUXU999.js} +4 -4
  98. package/server/{feature-registry-storage-BdPuLcBX.js → feature-registry-storage-BORBTo0y.js} +2 -2
  99. package/server/{features-ez2271oH.js → features--nFkJY8v.js} +2 -2
  100. package/server/{feedback-target-CoFDHiM8.js → feedback-target-C0ZzyHvU.js} +1 -1
  101. package/server/{feedback-target-7mqqwrX6.js → feedback-target-Dt9BsapX.js} +8 -8
  102. package/server/{feedback-writer-CY5L1lB7.js → feedback-writer-BG0RUZiu.js} +5 -5
  103. package/server/{feedback-writer-D3a22RCd.js → feedback-writer-D1fm-5Z8.js} +1 -1
  104. package/server/{flywheel-SVF02Jpq.js → flywheel-BekukH4i.js} +1 -1
  105. package/server/{flywheel-DHrgCphM.js → flywheel-BiT3odRb.js} +23 -15
  106. package/server/{flywheel-DzGtWnJ1.js → flywheel-CLVB55Be.js} +16 -15
  107. package/server/flywheel-merge-order-BJv1DZz1.js +462 -0
  108. package/server/flywheel-merge-order-BKw9o6ku.js +2 -0
  109. package/server/forge-CZbSg6Ds.js +383 -0
  110. package/server/forge-DK3blQb_.js +3 -0
  111. package/server/{from-kNxT0bZC.js → from-D_4_dk7i.js} +1 -1
  112. package/server/{fts-db-CE46vDkZ.js → fts-db-BeOomFa-.js} +2 -2
  113. package/server/{fts-operations-CqY6zl-i.js → fts-operations-BdewJ_g9.js} +2 -2
  114. package/server/git-utils-CI6cwyyC.js +3 -0
  115. package/server/{git-utils-CRw2zLPC.js → git-utils-ameCgDdy.js} +30 -5
  116. package/server/{github-app-C3QrAUd0.js → github-app-CQ1Lo6LA.js} +3 -3
  117. package/server/{github-app-ClZ2lk8D.js → github-app-DtAsvwzK.js} +1 -1
  118. package/server/{github-client-BnIsSrEN.js → github-client-BfyDxuRN.js} +2 -2
  119. package/server/{github-client-DfQYVUaw.js → github-client-Cj0yl_07.js} +1 -1
  120. package/server/github-pr-lookup-BDq6Wznz.js +58 -0
  121. package/server/{harness-binary-DPUi-Pv8.js → harness-binary-DqkftwTb.js} +2 -2
  122. package/server/{harness-resolve-3lNZkyT4.js → harness-resolve-CqMqM1Mb.js} +4 -4
  123. package/server/{health-events-BBcTYQKU.js → health-events-CazRxJUS.js} +2 -2
  124. package/server/{health-events-BDOHby5Q.js → health-events-_xfTaOUs.js} +1 -1
  125. package/server/{hooks-CKZgXlJb.js → hooks-BO3QT1sn.js} +2 -2
  126. package/server/{hooks-DPVX1rwQ.js → hooks-BnJsxlSq.js} +1 -1
  127. package/server/{hume-Cz8igP9E.js → hume-CDYJxqx-.js} +2 -2
  128. package/server/hume-Dq--7rOQ.js +3 -0
  129. package/server/{idle-stack-reaper-CuLF0j2H.js → idle-stack-reaper-BYqERdkE.js} +1 -1
  130. package/server/{idle-stack-reaper-DDIRwxUY.js → idle-stack-reaper-CnGx_PO_.js} +99 -6
  131. package/server/in-flight-guard-Bq3epG58.js +45 -0
  132. package/server/{infra-BEqFxlJc.js → infra-BjuxvjdS.js} +70 -5
  133. package/server/{injection-CPUIqNhI.js → injection-DZxlV2al.js} +1 -1
  134. package/server/{injection-C8aiVJrF.js → injection-UCf8EsjX.js} +7 -7
  135. package/server/{inspect-agent-BLuJ1AkT.js → inspect-agent-6kylZnrm.js} +26 -25
  136. package/server/inspect-agent-BVwDrVrz.js +2 -0
  137. package/server/{internal-token-s0-oKybJ.js → internal-token-DvMTQSOS.js} +2 -2
  138. package/server/{internal-token-BrcU6qfe.js → internal-token-M9omeXM1.js} +1 -1
  139. package/server/{io-C9kF1wtJ.js → io-VHvc0Ssp.js} +43 -26
  140. package/server/{issue-closed-CDJk4pIp.js → issue-closed-B6KJkmHZ.js} +7 -7
  141. package/server/{issue-lifecycle-B8sZHVHh.js → issue-lifecycle-9gk3fnXN.js} +1 -1
  142. package/server/{issue-lifecycle-ojZAzDBP.js → issue-lifecycle-C4Zj0WmE.js} +34 -28
  143. package/server/{issue-service-singleton-Yx5DdmVJ.js → issue-service-singleton-DmCh7EHj.js} +10 -10
  144. package/server/{issue-service-singleton-BvJ09SaR.js → issue-service-singleton-PMx8F1jr.js} +1 -1
  145. package/server/{issues-BMmP_77e.js → issues-CgnQ1OGQ.js} +2 -2
  146. package/server/{jsonl-parser-BXSlHwEh.js → jsonl-parser-DJOH_O-w.js} +5 -4
  147. package/server/{label-cleanup-B0UJwnv5.js → label-cleanup-Dv7AV_R1.js} +3 -3
  148. package/server/{label-reconciler-B4iOAjlC.js → label-reconciler--F85rufp.js} +4 -4
  149. package/server/{lifecycle-yPd___5E.js → lifecycle-CTdOWYMi.js} +2 -2
  150. package/server/{lifecycle-xmBfK2GJ.js → lifecycle-DDN8ApVY.js} +6 -7
  151. package/server/{lifecycle-io-BREGpnLk.js → lifecycle-io-D-lGdzK3.js} +5 -5
  152. package/server/{lifecycle-io-DPo7x11I.js → lifecycle-io-D_zTLvP1.js} +1 -1
  153. package/server/{linear-client-BsuUvkdA.js → linear-client-BQU36QqE.js} +2 -2
  154. package/server/{linear-client-CTskEeT_.js → linear-client-CY4O_Tu3.js} +1 -1
  155. package/server/linear-mcp-auth-BnU4TYfY.js +280 -0
  156. package/server/linear-mcp-auth-NYBq_oHZ.js +2 -0
  157. package/server/memory-fts-worker.js +1 -1
  158. package/server/{merge-CefQNAnq.js → merge-Bpx4jjht.js} +13 -11
  159. package/server/{merge-agent-4WOWlSYA.js → merge-agent-DdMVSV2Y.js} +233 -83
  160. package/server/{merge-agent-CKkgIBPB.js → merge-agent-DrXa1CpW.js} +1 -1
  161. package/server/{merge-batch-ClFn2T-y.js → merge-batch-C5q1c1GX.js} +1 -1
  162. package/server/merge-completeness-BMm8tMyZ.js +277 -0
  163. package/server/merge-completeness-D0ljXbk3.js +3 -0
  164. package/server/{merge-B1DiziGU.js → merge-idOG--29.js} +1 -1
  165. package/server/merge-ops-DdpTiEMt.js +2 -0
  166. package/server/merge-rebase-DGQpYJU3.js +2 -0
  167. package/server/{merge-rebase-BfaTyXsw.js → merge-rebase-xLnMlw5h.js} +3 -3
  168. package/server/{merge-set-DJ8-UErs.js → merge-set-DH7ot3yz.js} +11 -5
  169. package/server/merge-set-DzsOTBg5.js +3 -0
  170. package/server/{merge-sync-VPV28g0g.js → merge-sync-CQ-LgZ1_.js} +406 -153
  171. package/server/merge-sync-Ca7F5JnQ.js +3 -0
  172. package/server/{merge-train-CHopycP0.js → merge-train-DTEMyIu4.js} +18 -8
  173. package/server/{merge-train-deps-D1cOZzy2.js → merge-train-deps-CNPJzepw.js} +4 -4
  174. package/server/merge-verification-x3JO8Dtz.js +220 -0
  175. package/server/merged-docker-cleanup-worker-CTpC27Bs.js +107 -0
  176. package/server/merged-docker-cleanup-worker-Cdi9apm-.js +3 -0
  177. package/server/{multipart-parser-duPAfSBw.js → multipart-parser-IMSBfePV.js} +2 -2
  178. package/server/{no-resume-mode-Nw29vaFb.js → no-resume-mode-C5ULAXwO.js} +1 -1
  179. package/server/node_modules/.package-lock.json +27 -27
  180. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  181. package/server/node_modules/@google-cloud/common/package.json +2 -2
  182. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  183. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  184. package/server/node_modules/gaxios/package.json +1 -1
  185. package/server/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
  186. package/server/node_modules/google-auth-library/package.json +1 -1
  187. package/server/node_modules/google-gax/build/protos/google/api/auth.proto +2 -1
  188. package/server/node_modules/google-gax/build/protos/google/api/backend.proto +12 -1
  189. package/server/node_modules/google-gax/build/protos/google/api/billing.proto +1 -1
  190. package/server/node_modules/google-gax/build/protos/google/api/client.proto +165 -53
  191. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1/resources.proto +1 -1
  192. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/quota_adjuster_settings.proto +7 -3
  193. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/resources.proto +1 -1
  194. package/server/node_modules/google-gax/build/protos/google/api/config_change.proto +1 -1
  195. package/server/node_modules/google-gax/build/protos/google/api/context.proto +1 -1
  196. package/server/node_modules/google-gax/build/protos/google/api/control.proto +3 -3
  197. package/server/node_modules/google-gax/build/protos/google/api/distribution.proto +1 -1
  198. package/server/node_modules/google-gax/build/protos/google/api/documentation.proto +1 -1
  199. package/server/node_modules/google-gax/build/protos/google/api/endpoint.proto +1 -1
  200. package/server/node_modules/google-gax/build/protos/google/api/error_reason.proto +186 -1
  201. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/checked.proto +31 -3
  202. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/eval.proto +8 -9
  203. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/explain.proto +1 -2
  204. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/syntax.proto +20 -22
  205. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/value.proto +2 -3
  206. package/server/node_modules/google-gax/build/protos/google/api/field_behavior.proto +1 -1
  207. package/server/node_modules/google-gax/build/protos/google/api/field_info.proto +1 -1
  208. package/server/node_modules/google-gax/build/protos/google/api/http.proto +1 -1
  209. package/server/node_modules/google-gax/build/protos/google/api/httpbody.proto +1 -1
  210. package/server/node_modules/google-gax/build/protos/google/api/label.proto +1 -1
  211. package/server/node_modules/google-gax/build/protos/google/api/launch_stage.proto +1 -1
  212. package/server/node_modules/google-gax/build/protos/google/api/log.proto +1 -1
  213. package/server/node_modules/google-gax/build/protos/google/api/logging.proto +1 -1
  214. package/server/node_modules/google-gax/build/protos/google/api/metric.proto +1 -1
  215. package/server/node_modules/google-gax/build/protos/google/api/monitored_resource.proto +1 -1
  216. package/server/node_modules/google-gax/build/protos/google/api/monitoring.proto +1 -1
  217. package/server/node_modules/google-gax/build/protos/google/api/policy.proto +1 -1
  218. package/server/node_modules/google-gax/build/protos/google/api/quota.proto +1 -1
  219. package/server/node_modules/google-gax/build/protos/google/api/resource.proto +1 -1
  220. package/server/node_modules/google-gax/build/protos/google/api/routing.proto +8 -4
  221. package/server/node_modules/google-gax/build/protos/google/api/service.proto +2 -3
  222. package/server/node_modules/google-gax/build/protos/google/api/source_info.proto +1 -1
  223. package/server/node_modules/google-gax/build/protos/google/api/system_parameter.proto +1 -1
  224. package/server/node_modules/google-gax/build/protos/google/api/usage.proto +7 -27
  225. package/server/node_modules/google-gax/build/protos/google/api/visibility.proto +1 -1
  226. package/server/node_modules/google-gax/build/protos/google/longrunning/operations.proto +20 -1
  227. package/server/node_modules/google-gax/build/protos/google/protobuf/any.proto +52 -108
  228. package/server/node_modules/google-gax/build/protos/google/protobuf/compiler/ruby/ruby_generated_code.proto +2 -0
  229. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_features.proto +21 -1
  230. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_file_options.proto +24 -0
  231. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_options.proto +15 -0
  232. package/server/node_modules/google-gax/build/protos/google/protobuf/descriptor.proto +118 -30
  233. package/server/node_modules/google-gax/build/protos/google/protobuf/field_mask.proto +16 -18
  234. package/server/node_modules/google-gax/build/protos/google/protobuf/internal_options.proto +8 -1
  235. package/server/node_modules/google-gax/build/protos/google/protobuf/json/json_enumval_custom_string.proto +26 -0
  236. package/server/node_modules/google-gax/build/protos/google/protobuf/json_enumvalue_options.proto +29 -0
  237. package/server/node_modules/google-gax/build/protos/google/protobuf/json_options.proto +14 -0
  238. package/server/node_modules/google-gax/build/protos/google/protobuf/struct.proto +38 -22
  239. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/forced_micro_string.proto +3 -0
  240. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/repeated_field_proxy_import_message.proto +14 -0
  241. package/server/node_modules/google-gax/build/protos/google/protobuf/timestamp.proto +9 -8
  242. package/server/node_modules/google-gax/build/protos/google/protobuf/util/json_format_proto3.proto +18 -0
  243. package/server/node_modules/google-gax/build/protos/google/rpc/code.proto +1 -1
  244. package/server/node_modules/google-gax/build/protos/google/rpc/context/attribute_context.proto +7 -2
  245. package/server/node_modules/google-gax/build/protos/google/rpc/context/audit_context.proto +1 -1
  246. package/server/node_modules/google-gax/build/protos/google/rpc/error_details.proto +5 -5
  247. package/server/node_modules/google-gax/build/protos/google/rpc/http.proto +1 -1
  248. package/server/node_modules/google-gax/build/protos/google/rpc/status.proto +1 -2
  249. package/server/node_modules/google-gax/build/protos/google/type/calendar_period.proto +1 -1
  250. package/server/node_modules/google-gax/build/protos/google/type/color.proto +9 -10
  251. package/server/node_modules/google-gax/build/protos/google/type/date.proto +11 -9
  252. package/server/node_modules/google-gax/build/protos/google/type/datetime.proto +17 -17
  253. package/server/node_modules/google-gax/build/protos/google/type/dayofweek.proto +1 -1
  254. package/server/node_modules/google-gax/build/protos/google/type/decimal.proto +11 -13
  255. package/server/node_modules/google-gax/build/protos/google/type/expr.proto +1 -1
  256. package/server/node_modules/google-gax/build/protos/google/type/fraction.proto +1 -1
  257. package/server/node_modules/google-gax/build/protos/google/type/interval.proto +1 -2
  258. package/server/node_modules/google-gax/build/protos/google/type/latlng.proto +4 -5
  259. package/server/node_modules/google-gax/build/protos/google/type/localized_text.proto +3 -3
  260. package/server/node_modules/google-gax/build/protos/google/type/money.proto +1 -2
  261. package/server/node_modules/google-gax/build/protos/google/type/month.proto +1 -1
  262. package/server/node_modules/google-gax/build/protos/google/type/phone_number.proto +20 -15
  263. package/server/node_modules/google-gax/build/protos/google/type/postal_address.proto +39 -39
  264. package/server/node_modules/google-gax/build/protos/google/type/quaternion.proto +4 -4
  265. package/server/node_modules/google-gax/build/protos/google/type/timeofday.proto +11 -8
  266. package/server/node_modules/google-gax/package.json +5 -5
  267. package/server/node_modules/retry-request/package.json +4 -4
  268. package/server/node_modules/teeny-request/package.json +5 -5
  269. package/server/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  270. package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  271. package/server/node_modules/undici/lib/core/request.js +12 -1
  272. package/server/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
  273. package/server/node_modules/undici/lib/global.js +36 -16
  274. package/server/node_modules/undici/lib/handler/cache-handler.js +236 -116
  275. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
  276. package/server/node_modules/undici/lib/handler/retry-handler.js +24 -0
  277. package/server/node_modules/undici/lib/interceptor/cache.js +152 -62
  278. package/server/node_modules/undici/lib/interceptor/decompress.js +5 -2
  279. package/server/node_modules/undici/lib/util/cache.js +328 -66
  280. package/server/node_modules/undici/lib/util/date.js +23 -6
  281. package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
  282. package/server/node_modules/undici/package.json +1 -1
  283. package/server/{orphan-proposed-reconciler-CTSGcK8p.js → orphan-proposed-reconciler-CWmOdM9-.js} +1 -1
  284. package/server/{orphan-proposed-reconciler-BvKkWMJQ.js → orphan-proposed-reconciler-Dg6U4ADZ.js} +24 -15
  285. package/server/package-lock.json +28 -28
  286. package/server/package.json +1 -1
  287. package/server/{pan-dir-B0c3w0Ya.js → pan-dir-ubraCiUg.js} +24 -10
  288. package/server/{paths-D-xWGHdh.js → paths-cXmOwSbh.js} +2 -2
  289. package/server/pending-lifecycle-claim-DEteYdS9.js +110 -0
  290. package/server/{pickup-DUCLWrJY.js → pickup-D8xtG1J2.js} +1 -1
  291. package/server/pipeline-membership-BGSvkT2M.js +3 -0
  292. package/server/pipeline-membership-CrAPLYtf.js +57 -0
  293. package/server/{pipeline-membership-mY3GprlK.js → pipeline-membership-gather-CET40frr.js} +177 -109
  294. package/server/pipeline-membership-gather-DTfcgxLl.js +3 -0
  295. package/server/{pipeline-notifier-BXkJzDC4.js → pipeline-notifier-BuQ0e4hF.js} +2 -2
  296. package/server/{pipeline-notifier-BJr8gQX6.js → pipeline-notifier-ImNXknf0.js} +1 -1
  297. package/server/post-merge-lifecycle-worker-DbO10pum.js +50 -0
  298. package/server/{project-pipelines-C0MWUeCU.js → project-pipelines-Bim6bThI.js} +2 -2
  299. package/server/{project-repos-B6GycDh9.js → project-repos-C0nuoBGv.js} +7 -3
  300. package/server/project-repos-CRE6Ykow.js +3 -0
  301. package/server/projects-B03Wr-xc.js +3 -0
  302. package/server/{prompts-DxzFXuLl.js → prompts-BEx08AIu.js} +2 -2
  303. package/server/{providers-u4Ga0jOr.js → providers-D7IluJe0.js} +1 -1
  304. package/server/{providers-qQAwGQDW.js → providers-evXhiQeg.js} +7 -7
  305. package/server/public/assets/{chunk-BO2N2NFS-BamJdinX.js → chunk-BO2N2NFS-D1s4-Sqp.js} +4 -4
  306. package/server/public/assets/{diagram-OG6HWLK6-DfOB8-w4.js → diagram-OG6HWLK6-1gdMoSF7.js} +1 -1
  307. package/server/public/assets/{dist-D7zYSEA6.js → dist-CxAOHbil.js} +1 -1
  308. package/server/public/assets/{dist-ByIuzMQW.js → dist-DqDRYW6P.js} +3 -3
  309. package/server/public/assets/{ganttDiagram-6RSMTGT7-EdmRyXL3.js → ganttDiagram-6RSMTGT7-BYex-Ec7.js} +1 -1
  310. package/server/public/assets/{highlighted-body-OFNGDK62-MerOfTX8.js → highlighted-body-OFNGDK62-DlVkiG0S.js} +1 -1
  311. package/server/public/assets/index-Cc7cnFC4.css +1 -0
  312. package/server/public/assets/index-K0hAYCgV.js +807 -0
  313. package/server/public/assets/{linear-BBbArIcK.js → linear-B4cuEFmO.js} +1 -1
  314. package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +1 -0
  315. package/server/public/assets/{pieDiagram-4H26LBE5-BKIddiJN.js → pieDiagram-4H26LBE5-CBHNBIJQ.js} +1 -1
  316. package/server/public/assets/{prod-B8vYiu52.js → prod-CN2nHBvX.js} +4 -4
  317. package/server/public/assets/{quadrantDiagram-W4KKPZXB-D6RtoULk.js → quadrantDiagram-W4KKPZXB-Bom87VOQ.js} +1 -1
  318. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CLrCedZX.js → sankeyDiagram-5OEKKPKP-UrBeyLxk.js} +1 -1
  319. package/server/public/assets/{xychartDiagram-2RQKCTM6-hznR8DYl.js → xychartDiagram-2RQKCTM6-DhkbrIxR.js} +1 -1
  320. package/server/public/index.html +2 -2
  321. package/server/{pull-requests-7N8WKseP.js → pull-requests-Cv7LxzUN.js} +1 -1
  322. package/server/{pull-requests-_lHueOHW.js → pull-requests-DHWiKxo7.js} +19 -10
  323. package/server/{queries-CjNIf-Ub.js → queries-DHJm7bTd.js} +631 -110
  324. package/server/{rally-CyWT_lNO.js → rally-B71M9f4o.js} +3 -3
  325. package/server/rally-YDjU513q.js +3 -0
  326. package/server/{rally-api-ClOSd-Tt.js → rally-api-D5uXN08-.js} +1 -1
  327. package/server/{rally-api-C8e_1JRi.js → rally-api-Dkqmok65.js} +2 -2
  328. package/server/{rally-client-lc-nokqr.js → rally-client-Bfqm6XI4.js} +4 -4
  329. package/server/{rally-client-sgtVqzNU.js → rally-client-CxsA6ExK.js} +1 -1
  330. package/server/{reap-terminal-sessions-7KeHv1R1.js → reap-terminal-sessions-BQ23nriz.js} +2 -2
  331. package/server/{reap-terminal-sessions-BtHPo6Xc.js → reap-terminal-sessions-CvmwaqKv.js} +2 -2
  332. package/server/{rebuild-stack-lwtsW0GO.js → rebuild-stack-0EEYReVZ.js} +16 -7
  333. package/server/{rebuild-stack-CFvcBHsS.js → rebuild-stack-qeRqHZxH.js} +2 -2
  334. package/server/{reconstruct-cache-C3Ui7ojV.js → reconstruct-cache-BbYFsqLa.js} +7 -6
  335. package/server/record-CtroO946.js +3 -0
  336. package/server/record-update-DH6dLJID.js +3 -0
  337. package/server/{record-update-dE1Aw83j.js → record-update-Z0QCxmMp.js} +124 -34
  338. package/server/{recovery-trip-BvRWfUXM.js → recovery-trip-eJe26h-f.js} +2 -2
  339. package/server/{release-engine-Cx48W7z8.js → release-engine-lPUp-MTd.js} +5 -5
  340. package/server/{release-set-CQfuN9-v.js → release-set-BwGeyZKX.js} +3 -3
  341. package/server/{remote-C_2hasl7.js → remote-BCd02Es1.js} +3 -3
  342. package/server/{remote-ChgimyYa.js → remote-CVGUhXMV.js} +3 -3
  343. package/server/{remote-agents-CA3Ihlxj.js → remote-agents-C1bssi41.js} +2 -2
  344. package/server/{remote-agents-By1ige5O.js → remote-agents-C_VxssLU.js} +300 -46
  345. package/server/{remote-completion-fVe9e_3u.js → remote-completion-DAB0P706.js} +12 -12
  346. package/server/resume-u9byntrq.js +3 -0
  347. package/server/{review-agent-DNboMyW4.js → review-agent-CD4RCI0Y.js} +1 -1
  348. package/server/{review-agent-CIGOQYBD.js → review-agent-CHhI66UP.js} +60 -47
  349. package/server/{review-artifacts-nRDPuMxd.js → review-artifacts-DSMRIfuJ.js} +7 -6
  350. package/server/{review-context-2uj-YQ8J.js → review-context-oFuBbiEE.js} +8 -8
  351. package/server/{in-flight-guard-CAAkqPLu.js → review-convoy-liveness-CpzrcJ5F.js} +3 -44
  352. package/server/review-status-BZH8h-6W.js +3 -0
  353. package/server/review-status-emit-CUExtHd5.js +50 -0
  354. package/server/{review-status-enrichment-Dci-ZwEt.js → review-status-enrichment-QV_hQkgS.js} +4 -4
  355. package/server/{review-status-source-CxuEjLGg.js → review-status-source-CpvJnvnQ.js} +24 -3
  356. package/server/review-status-source-ylw5QZUR.js +3 -0
  357. package/server/{review-status-sync-BTOpxtTC.js → review-status-sync-483sujRo.js} +2 -2
  358. package/server/{review-status-sync-DSDK3OMy.js → review-status-sync-NaWvI9Xf.js} +1 -1
  359. package/server/review-status-yljtTd-q.js +7521 -0
  360. package/server/{review-verdict-feedback-CTd4QMBu.js → review-verdict-feedback-BPDn4li_.js} +1 -1
  361. package/server/{review-verdict-feedback-CCjVA7Uk.js → review-verdict-feedback-CELeUinh.js} +48 -8
  362. package/server/{rollup-FGsKki9R.js → rollup-DTNvelz9.js} +8 -8
  363. package/server/{rollup-BKQC7jp4.js → rollup-DYZfq1c4.js} +1 -1
  364. package/server/{scanner-CnqEZeDy.js → scanner-CV35oSn4.js} +8 -7
  365. package/server/{sequence-io-D909zgeH.js → sequence-io-DF_8iuhV.js} +4 -4
  366. package/server/{sequencer-agent-CzkcK6P5.js → sequencer-agent-B2WeCtGi.js} +5 -5
  367. package/server/server.js +1952 -578
  368. package/server/{service-CLeAoU6G.js → service-Br9rpBNA.js} +81 -64
  369. package/server/{session-fork-CHI1XvL9.js → session-fork-D0LY152N.js} +2 -2
  370. package/server/{session-history-BT3IvqhC.js → session-history-BUyK29eq.js} +4 -4
  371. package/server/{settings-BTMvpNFU.js → settings-Bse1Pdcj.js} +3 -3
  372. package/server/settings-CdvIF84R.js +2 -0
  373. package/server/{settings-C0zgxOGf.js → settings-CvVGqNEs.js} +3 -2
  374. package/server/{shadow-engineering-BJfgm-hX.js → shadow-engineering-BWLa8ODz.js} +2 -2
  375. package/server/{shadow-state-7a-524T8.js → shadow-state-B4fpKxOO.js} +2 -2
  376. package/server/{shadow-state-DnDyjujH.js → shadow-state-FV6PHfEW.js} +1 -1
  377. package/server/{shadow-utils-Db3oroFG.js → shadow-utils-D7asqxOZ.js} +2 -2
  378. package/server/{ship-log-D9MlVzYU.js → ship-log-xplJ8t75.js} +1 -1
  379. package/server/{smart-compaction-CV2ukKND.js → smart-compaction-CPp2Ykf6.js} +1 -1
  380. package/server/{smart-compaction-KCYScAU1.js → smart-compaction-D3U_79f-.js} +8 -7
  381. package/server/{spawn-planning-session-qUC2VWu3.js → spawn-planning-session-1nFi3gfk.js} +1 -1
  382. package/server/{spawn-planning-session-DKpdFyOC.js → spawn-planning-session-DGfZ5B8D.js} +17 -17
  383. package/server/{specialist-completion-Ky9wCDpb.js → specialist-completion-Br48eiDP.js} +1 -1
  384. package/server/{specialist-context-Bn3dCGS2.js → specialist-context-cVbGnTa3.js} +5 -5
  385. package/server/{specialist-handoff-logger-CMEwYxa2.js → specialist-handoff-logger-DK-GTz4s.js} +2 -2
  386. package/server/{specialist-logs-C5p8G7tx.js → specialist-logs-Cl5-hqT8.js} +3 -3
  387. package/server/{specialists-CC4r-c2s.js → specialists-CNfYO3G2.js} +975 -227
  388. package/server/{specialists-jiuuyVkp.js → specialists-Cicieuzu.js} +18 -18
  389. package/server/{specialists-CShuVGWT.js → specialists-JHsdU3pA.js} +1 -1
  390. package/server/{specialists-DM6bWjsi.js → specialists-Tdezg_6N.js} +1 -1
  391. package/server/specs-Bt7WJDoC.js +3 -0
  392. package/server/src-CRmCHlma.js +11408 -0
  393. package/server/{src-CXmtj0im.js → src-Ck028hjO.js} +6 -6
  394. package/server/{src-CdmnTM2m.js → src-UWcGe0Ix.js} +3 -3
  395. package/server/{stack-health-Bn3o8FBX.js → stack-health-CJLMrLBl.js} +1 -1
  396. package/server/{stack-health-DxSdG9cW.js → stack-health-DqSqx0zv.js} +7 -5
  397. package/server/{stale-task-claims-KJKxxiiQ.js → stale-task-claims-CYFOUNlT.js} +4 -4
  398. package/server/{staleness-CT34nwr9.js → staleness-BQ-0gMYK.js} +1 -1
  399. package/server/{staleness-DPm7ClwA.js → staleness-D47CUJok.js} +1 -1
  400. package/server/{state-home-Cn_Qu8IX.js → state-home-BYV7qZTW.js} +2 -2
  401. package/server/{state-mapping-BL_-3Yt8.js → state-mapping-BVldLhBf.js} +1 -1
  402. package/server/{state-migrate-BGg2ZaOt.js → state-migrate-CvvBtS0Y.js} +4 -4
  403. package/server/{stuck-remediation-s9_2qfi6.js → stuck-remediation-Wt0UVvu1.js} +1 -1
  404. package/server/{stuck-remediation-DYuPRYYw.js → stuck-remediation-mkLC6G_t.js} +79 -22
  405. package/server/{substrate-bug-weights-service-B-FwCs5V.js → substrate-bug-weights-service-XfLAKnmK.js} +3 -3
  406. package/server/{summary-fork-DpcxN9tf.js → summary-fork-CD7GOts0.js} +2 -2
  407. package/server/{summary-fork-D1RAk9rJ.js → summary-fork-xiXBnWG9.js} +8 -8
  408. package/server/supervisor/{injection-budget-Csw5tqfJ.js → injection-budget-B5SbvDx2.js} +1 -1
  409. package/server/supervisor/{paths-DehGY2Fj.js → paths-K3noE4N_.js} +1 -1
  410. package/server/supervisor/pty-supervisor.js +49 -3
  411. package/server/supervisor/{pty-token-x-ea28Us.js → pty-token-B7lp0ElT.js} +2 -2
  412. package/server/{supervisor-wM4ooB5O.js → supervisor-DL788vos.js} +3 -3
  413. package/server/supervisor-UWiQNK-y.js +2 -0
  414. package/server/{swarm-readiness-DlP_UjHq.js → swarm-readiness-BV14DF5N.js} +3 -3
  415. package/server/{system-prerequisites-DUDj1YHf.js → system-prerequisites-pdWG6ZQs.js} +2 -2
  416. package/server/{teardown-workspace-DeTTImn-.js → teardown-workspace-l2F4_zim.js} +15 -16
  417. package/server/{test-agent-queue-MbxX5vqq.js → test-agent-queue-qakFIIGz.js} +6 -6
  418. package/server/{test-verdict-bWYBtqBg.js → test-verdict-BJYDggMm.js} +1 -1
  419. package/server/{test-verdict-gscuksPv.js → test-verdict-Gw-btEfb.js} +1 -1
  420. package/server/{tldr-daemon-BYFkts95.js → tldr-daemon-BKOYB616.js} +1 -1
  421. package/server/{tldr-daemon-C-69c3OI.js → tldr-daemon-CBaWkV9k.js} +2 -2
  422. package/server/{tmux-R7N7y-Mh.js → tmux-B1Wbxz5o.js} +3 -3
  423. package/server/{tmux-B6z7h_vZ.js → tmux-DQ6jB76i.js} +1 -1
  424. package/server/{launcher-generator-BBWG_SiS.js → tmux-dedup-DbN6MGzM.js} +428 -9
  425. package/server/{token-BK6t8BIT.js → token-Cxbk023d.js} +2 -2
  426. package/server/{token-util-DxXu-vd1.js → token-util-CLq2MmQt.js} +1 -1
  427. package/server/token-util-zlz9U0ki.js +3 -0
  428. package/server/{tracker-config-G6latr8C.js → tracker-config-DZ8Zn2nQ.js} +2 -2
  429. package/server/{tracker-utils-DHv5pSDT.js → tracker-utils-L0FKtjq2.js} +3 -3
  430. package/server/{traefik-connect-Df2uXPsQ.js → traefik-connect-bNX6jKkb.js} +1 -1
  431. package/server/{tunnel-CDVKJpRv.js → tunnel-BAm1XgjG.js} +3 -3
  432. package/server/{tunnel-DGdUkGoZ.js → tunnel-CjSnHdTc.js} +1 -1
  433. package/server/{types-5M0lupud.js → types-q67TYYg5.js} +1 -1
  434. package/server/uat-promote-verification-CKB9ZrKC.js +92 -0
  435. package/server/uat-train-Cu-4nvbf.js +2 -0
  436. package/server/uat-train-D5UjcyAa.js +0 -0
  437. package/server/{validate-IfDGkaVR.js → validate-Cxsx5Uz1.js} +8 -6
  438. package/server/{validation-CC9OPqJZ.js → validation-DEaTZafj.js} +1 -1
  439. package/server/{validation-Dw1pzDzr.js → validation-VZgJxmqc.js} +4 -4
  440. package/server/{verification-artifact-B3itKTxu.js → verification-artifact-C85cRTc_.js} +1 -1
  441. package/server/{verification-artifact-TVFSz_q1.js → verification-artifact-g3yuxQDL.js} +1 -1
  442. package/server/{verification-runner-BW4HOKAz.js → verification-runner-DlZI8yhw.js} +1 -1
  443. package/server/{verification-runner-CkgX6EtI.js → verification-runner-KDZIsBj4.js} +40 -18
  444. package/server/{vtt-parser-DYPbKcIJ.js → vtt-parser-Jr94BF3Y.js} +1 -1
  445. package/server/{work-agent-prompt-Du8Vh2aJ.js → work-agent-prompt-C-vuP3_J.js} +20 -9
  446. package/server/workflows-CHrx_hcW.js +2 -0
  447. package/server/{workflows-mbQzh6mQ.js → workflows-D0oip4eV.js} +161 -78
  448. package/server/{workspace--8tnhDI0.js → workspace-BqFg__wH.js} +1 -1
  449. package/server/{workspace-BPUws1-_.js → workspace-C0fH3aek.js} +3 -3
  450. package/server/workspace-anchor-drift-B4gMRHl4.js +3 -0
  451. package/server/workspace-anchor-drift-CZKofakh.js +224 -0
  452. package/server/{workspace-config-CIVWZOQr.js → workspace-config-B123aZl-.js} +1 -1
  453. package/server/workspace-manager-CDTKjjdU.js +3 -0
  454. package/server/{workspace-manager-CBhNdzE4.js → workspace-manager-CwO-Hek7.js} +156 -117
  455. package/server/{workspace-metadata-_WygnyoX.js → workspace-metadata-CQv00QwK.js} +2 -2
  456. package/server/{workspace-metadata-BzHnwwX4.js → workspace-metadata-D4M8BM4W.js} +1 -1
  457. package/server/{workspaces-Do_9J0LQ.js → workspaces-j1e_6aAT.js} +719 -292
  458. package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
  459. package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
  460. package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
  461. package/sync-sources/skills/pan-close/SKILL.md +5 -3
  462. package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
  463. package/sync-sources/skills/pan-reload/SKILL.md +3 -3
  464. package/sync-sources/skills/pan-restart/SKILL.md +5 -4
  465. package/sync-sources/skills/pan-review/SKILL.md +7 -1
  466. package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
  467. package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
  468. package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
  469. package/server/activity-logger-OEUBdfZ8.js +0 -3
  470. package/server/agent-state-Bc3tzUC8.js +0 -3
  471. package/server/agents-wi9NWzs2.js +0 -3
  472. package/server/archive-planning-BZDgzoEj.js +0 -3
  473. package/server/cli-B86rejVV.js +0 -3
  474. package/server/conversation-service-BLd3MYsG.js +0 -3
  475. package/server/deacon-kiQrb4ZT.js +0 -4
  476. package/server/deacon-swarm-C-GwfjJy.js +0 -2
  477. package/server/deploy-window-DkZraDyj.js +0 -3
  478. package/server/dist-Bzy0y69j.js +0 -3
  479. package/server/flywheel-merge-order-UU0tiUld.js +0 -245
  480. package/server/flywheel-merge-order-UUcsCDb6.js +0 -2
  481. package/server/forge-CNFnyqps.js +0 -270
  482. package/server/forge-DXnS_YFH.js +0 -2
  483. package/server/git-utils-D0_yhCgF.js +0 -3
  484. package/server/github-pr-lookup-D16NGsSO.js +0 -44
  485. package/server/hume-ccTf4wTX.js +0 -3
  486. package/server/inspect-agent-Brtz0URj.js +0 -2
  487. package/server/merge-ops-CR44oU9-.js +0 -2
  488. package/server/merge-set-bUqbm3yc.js +0 -3
  489. package/server/merge-sync-BJYeOODr.js +0 -3
  490. package/server/merge-verification-BkaOqPsw.js +0 -124
  491. package/server/project-repos-DXKQsc_m.js +0 -3
  492. package/server/projects-vjjcmiN8.js +0 -3
  493. package/server/public/assets/index-CWeMerGO.js +0 -804
  494. package/server/public/assets/index-CenuJ3Cw.css +0 -1
  495. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +0 -1
  496. package/server/rally-zhhtXuDP.js +0 -3
  497. package/server/record-CN0pj4_5.js +0 -3
  498. package/server/record-update-bLJxAXH4.js +0 -3
  499. package/server/resume-BFv1PGpA.js +0 -3
  500. package/server/review-status-btEYlaxA.js +0 -3
  501. package/server/review-status-kZj_KyCk.js +0 -1470
  502. package/server/settings-66A6uvIA.js +0 -2
  503. package/server/specs-C8Wsn2XO.js +0 -3
  504. package/server/src-DtcUOZCq.js +0 -4826
  505. package/server/supervisor-FTJAIsAK.js +0 -2
  506. package/server/token-util-DuPuNriz.js +0 -3
  507. package/server/tracker-utils-B4ylXZQK.js +0 -3
  508. package/server/uat-train-B05BWkp-.js +0 -2
  509. package/server/uat-train-DDSrSoV1.js +0 -2152
  510. package/server/workflows-BQu4RFQ-.js +0 -2
  511. package/server/workspace-manager-CWT55qeI.js +0 -3
@@ -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, ci as init_paths } from "./config-yaml-CmOPzmBb.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-BO3QT1sn.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-BO3QT1sn.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 { 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-B123aZl-.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-CDYJxqx-.js.map
@@ -0,0 +1,3 @@
1
+ import { i as init_hume, r as deleteHumeConfig } from "./hume-CDYJxqx-.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-CnGx_PO_.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-B1Wbxz5o.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-CnGx_PO_.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-Bq3epG58.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 init_paths$1, si as getOverdeckHome, ui as packageRoot, zt as readIssueRecordSync } from "./config-yaml-CmOPzmBb.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-Z0QCxmMp.js";
5
+ import { D as killSession, H as sessionExists, _ as getAgentSessions, w as init_tmux } from "./tmux-B1Wbxz5o.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";
@@ -4724,6 +4724,7 @@ function ensureRuntimeIndexesSync(db) {
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
4726
  ensureReleaseSetTablesSync(db);
4727
+ ensureUatGenerationRepoTablesSync(db);
4727
4728
  runSchemaTopUp(db, "ALTER TABLE `flywheel_substrate_bugs` ADD COLUMN `affected_criteria` text");
4728
4729
  runSchemaTopUp(db, "CREATE INDEX IF NOT EXISTS `cost_session_id_idx` ON `cost_events` (`session_id`)");
4729
4730
  runSchemaTopUp(db, "CREATE INDEX IF NOT EXISTS `idx_cost_agent_id` ON `cost_events` (`agent_id`, `ts`)");
@@ -4778,6 +4779,51 @@ function ensureReleaseSetTablesSync(db) {
4778
4779
  db.exec("CREATE UNIQUE INDEX IF NOT EXISTS `release_set_components_issue_component_idx` ON `release_set_components` (`issue_id`,`component_key`)");
4779
4780
  db.exec("CREATE INDEX IF NOT EXISTS `release_set_components_issue_order_idx` ON `release_set_components` (`issue_id`,`release_order`,`component_key`)");
4780
4781
  }
4782
+ /**
4783
+ * Idempotent schema top-up for per-repo UAT generation tables (PAN-3093).
4784
+ * A polyrepo generation spans N member repos, so its per-repo branch, base SHA,
4785
+ * worktree, and publish state cannot live in the single-valued `uat_generations`
4786
+ * columns. Existing overdeck.db files predate these tables and need them added
4787
+ * without a migration reset — same shape as ensureReleaseSetTablesSync above.
4788
+ */
4789
+ function ensureUatGenerationRepoTablesSync(db) {
4790
+ db.exec(`
4791
+ CREATE TABLE IF NOT EXISTS \`uat_generation_repos\` (
4792
+ \`uat_name\` text NOT NULL,
4793
+ \`repo_key\` text NOT NULL,
4794
+ \`repo_path\` text NOT NULL,
4795
+ \`branch\` text NOT NULL,
4796
+ \`base_sha\` text NOT NULL,
4797
+ \`target_branch\` text DEFAULT 'main' NOT NULL,
4798
+ \`worktree_path\` text NOT NULL,
4799
+ \`merge_order\` integer DEFAULT 0 NOT NULL,
4800
+ \`promoted_at\` integer,
4801
+ \`merge_sha\` text,
4802
+ PRIMARY KEY(\`uat_name\`, \`repo_key\`),
4803
+ FOREIGN KEY (\`uat_name\`) REFERENCES \`uat_generations\`(\`name\`) ON UPDATE no action ON DELETE no action
4804
+ )
4805
+ `);
4806
+ db.exec("CREATE INDEX IF NOT EXISTS `uat_generation_repos_uat_order_idx` ON `uat_generation_repos` (`uat_name`,`merge_order`)");
4807
+ db.exec(`
4808
+ CREATE TABLE IF NOT EXISTS \`uat_generation_member_repos\` (
4809
+ \`uat_name\` text NOT NULL,
4810
+ \`issue_id\` text NOT NULL,
4811
+ \`repo_key\` text NOT NULL,
4812
+ \`branch\` text NOT NULL,
4813
+ \`head_sha\` text NOT NULL,
4814
+ \`merge_order_in_repo\` integer DEFAULT 0 NOT NULL,
4815
+ PRIMARY KEY(\`uat_name\`, \`issue_id\`, \`repo_key\`),
4816
+ FOREIGN KEY (\`uat_name\`) REFERENCES \`uat_generations\`(\`name\`) ON UPDATE no action ON DELETE no action,
4817
+ FOREIGN KEY (\`issue_id\`) REFERENCES \`issues\`(\`id\`) ON UPDATE no action ON DELETE no action
4818
+ )
4819
+ `);
4820
+ db.exec("CREATE INDEX IF NOT EXISTS `uat_generation_member_repos_uat_idx` ON `uat_generation_member_repos` (`uat_name`,`issue_id`)");
4821
+ runSchemaTopUp(db, "CREATE INDEX IF NOT EXISTS `uat_generations_uncleaned_terminal_idx` ON `uat_generations` (`project_root`,`status`) WHERE `cleaned_at` IS NULL");
4822
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_repos` ADD COLUMN `target_branch` text DEFAULT 'main' NOT NULL");
4823
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_repos` ADD COLUMN `merge_sha` text");
4824
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_resolutions` ADD COLUMN `kind` text");
4825
+ runSchemaTopUp(db, "ALTER TABLE `uat_generation_resolutions` ADD COLUMN `note` text");
4826
+ }
4781
4827
  function warnSchemaDriftSync(db) {
4782
4828
  try {
4783
4829
  const report = auditOverdeckSchemaSync(db, OVERDECK_SCHEMA_TOP_UP_EXPECTATIONS);
@@ -4976,6 +5022,22 @@ var init_infra = __esmMin((() => {
4976
5022
  {
4977
5023
  table: "agents",
4978
5024
  column: "last_yield_resume_at"
5025
+ },
5026
+ {
5027
+ table: "uat_generation_repos",
5028
+ column: "target_branch"
5029
+ },
5030
+ {
5031
+ table: "uat_generation_repos",
5032
+ column: "merge_sha"
5033
+ },
5034
+ {
5035
+ table: "uat_generation_resolutions",
5036
+ column: "kind"
5037
+ },
5038
+ {
5039
+ table: "uat_generation_resolutions",
5040
+ column: "note"
4979
5041
  }
4980
5042
  ],
4981
5043
  indexes: [
@@ -4984,7 +5046,10 @@ var init_infra = __esmMin((() => {
4984
5046
  "idx_cost_issue_upper",
4985
5047
  "release_sets_project_idx",
4986
5048
  "release_set_components_issue_component_idx",
4987
- "release_set_components_issue_order_idx"
5049
+ "release_set_components_issue_order_idx",
5050
+ "uat_generation_repos_uat_order_idx",
5051
+ "uat_generation_member_repos_uat_idx",
5052
+ "uat_generations_uncleaned_terminal_idx"
4988
5053
  ]
4989
5054
  };
4990
5055
  overdeckEvents = sqliteTable("events", {
@@ -5103,4 +5168,4 @@ var init_infra = __esmMin((() => {
5103
5168
  //#endregion
5104
5169
  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
5170
 
5106
- //# sourceMappingURL=infra-BEqFxlJc.js.map
5171
+ //# sourceMappingURL=infra-BjuxvjdS.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-UCf8EsjX.js";
2
2
  init_injection();
3
3
  export { injectPromptTimeMemory };
@@ -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-CmOPzmBb.js";
3
+ import { d as resolveRagRunsFile, f as resolveStatusFile, i as init_paths, r as ensureParentDir } from "./paths-cXmOwSbh.js";
4
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features--nFkJY8v.js";
5
+ import { a as isMemoryKnowledgeIndexEnabled, i as init_settings, o as isMemoryPromptTimeInjectionEnabled } from "./settings-Bse1Pdcj.js";
6
+ import { n as extractWithProviderPolicy, t as init_providers } from "./providers-evXhiQeg.js";
7
+ import { n as init_fts_db, r as runMemoryFtsStatement } from "./fts-db-BeOomFa-.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-UCf8EsjX.js.map
@@ -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-CmOPzmBb.js";
2
+ import { D as killSession, H as sessionExists, s as createSession, w as init_tmux } from "./tmux-B1Wbxz5o.js";
3
+ import { S as setReviewStatusSync, f as init_review_status } from "./review-status-yljtTd-q.js";
4
+ import { A as spawnTierSupervisor, D as init_tier_supervisor, E as deliverCommitForReview, It as init_delivery, Mt as deliverAgentMessage, O as loadPrdDraft, Rr as saveAgentRuntimeState, b as init_agents, gr as saveAgentState, j as supervisorAgentId, kn as getProviderEnvForModel } from "./queries-DHJm7bTd.js";
5
+ import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-C0nuoBGv.js";
6
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-VHvc0Ssp.js";
7
+ import { d as generateLauncherScriptSync, f as init_launcher_generator } from "./tmux-dedup-DbN6MGzM.js";
8
+ import { a as init_claude_permissions, i as getClaudePermissionFlagsSync } from "./claude-permissions-CN0cSCPp.js";
9
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-DqkftwTb.js";
10
+ import { a as init_git_utils, o as parseCompositeSnapshot, u as snapshotWorkspaceHeadsPromise } from "./git-utils-ameCgDdy.js";
11
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-B6KJkmHZ.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-6kylZnrm.js.map
@@ -0,0 +1,2 @@
1
+ import { n as onInspectComplete } from "./inspect-agent-6kylZnrm.js";
2
+ export { onInspectComplete };
@@ -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 init_paths, si as getOverdeckHome } from "./config-yaml-CmOPzmBb.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-DvMTQSOS.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-DvMTQSOS.js";
2
2
  init_internal_token();
3
3
  export { INTERNAL_TOKEN_HEADER, _resetInternalTokenCacheForTests, ensureInternalToken, ensureInternalTokenSync, getInternalToken, getInternalTokenSync };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Bt as deriveProjectRoot, Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Ht as flushAutoCommits, Nt as readIssueRecordSync, Ot as init_record, Tn as init_projects, Ut as init_auto_commit, Wt as queueAutoCommit, fn as findProjectByPathSync, ir as FsError, jt as readIssueRecord, mr as init_errors, nn as init_state_read_home, rn as resolveStateReadHomeSync } from "./config-yaml-DySPNmKN.js";
2
+ import { Cn as resolveStateReadHomeSync, Fr as init_errors, Gn as init_projects, Lt as readIssueRecord, Mn as findProjectByPathSync, Nt as getProjectConfigFromWorkspacePath, Pt as init_record, Sn as init_state_read_home, Tr as FsError, Vt as resolveProjectForIssue, cn as flushAutoCommits, ln as init_auto_commit, on as deriveProjectRoot, un as queueAutoCommit, zt as readIssueRecordSync } from "./config-yaml-CmOPzmBb.js";
3
3
  import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, d as WORKSPACE_RUNTIME_DIRNAME, f as asPanSpecDocument, i as PAN_CONTINUE_FILENAME, l as PAN_SPECS_DIRNAME, m as isPanSpecStatus, n as PAN_CONTEXT_FILENAME, o as PAN_DRAFTS_DIRNAME, p as init_types$1, r as PAN_CONTINUES_DIRNAME, s as PAN_FEEDBACK_DIRNAME, t as LEGACY_WORKSPACE_RUNTIME_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-hraoaQIp.js";
4
- import { a as generateXBriefFilename, c as parseXBriefFilename, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-yPd___5E.js";
4
+ import { a as generateXBriefFilename, c as parseXBriefFilename, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-CTdOWYMi.js";
5
5
  import { Data, Effect, FileSystem } from "effect";
6
6
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
7
7
  import { basename, join, resolve } from "path";
@@ -61,16 +61,47 @@ var init_continue = __esmMin((() => {
61
61
  init_types$1();
62
62
  }));
63
63
  //#endregion
64
+ //#region ../../lib/pan-dir/paths.ts
65
+ /**
66
+ * Project state-plane path authority.
67
+ *
68
+ * PAN-3165: the specs/drafts/continues directories had two derivations — this
69
+ * one (state-branch aware) and a hardcoded `<projectRoot>/.pan/specs` inside
70
+ * `xbrief/xbrief-index.ts`, which resolved to the pre-cutover in-repo location
71
+ * and returned null for every spec written since PAN-2541. The resolution lives
72
+ * here, in a leaf module, so both the sync and async spec resolvers can import
73
+ * it without a cycle through `pan-dir/specs.ts`.
74
+ */
75
+ function getProjectPanPaths(projectRoot) {
76
+ const stateHome = resolveStateReadHomeSync(findProjectByPathSync(projectRoot) ?? {
77
+ name: projectRoot,
78
+ path: projectRoot
79
+ });
80
+ const panDir = stateHome.migrated ? stateHome.root : join(stateHome.root, PAN_DIRNAME);
81
+ return {
82
+ panDir,
83
+ specsDir: join(panDir, PAN_SPECS_DIRNAME),
84
+ draftsDir: join(panDir, PAN_DRAFTS_DIRNAME),
85
+ continuesDir: join(panDir, PAN_CONTINUES_DIRNAME)
86
+ };
87
+ }
88
+ var init_paths = __esmMin((() => {
89
+ init_projects();
90
+ init_state_read_home();
91
+ init_types$1();
92
+ }));
93
+ //#endregion
64
94
  //#region ../../lib/xbrief/xbrief-index.ts
65
95
  /**
66
96
  * xBRIEF Index — async, cached issue→xBRIEF lookups for server hot paths.
67
97
  *
68
- * PAN-967 Phase 2 makes `.pan/specs/` the canonical spec store. During the
69
- * migration window, legacy `vbrief/<lifecycle>/` directories remain as fallback
70
- * reads when no `.pan/specs` entry exists for an issue.
98
+ * The canonical spec store is the `specs/` directory resolved by
99
+ * `getProjectPanPaths()` — `overdeck-state` for a migrated project, legacy
100
+ * `<projectRoot>/.pan/specs` otherwise. Legacy `vbrief/<lifecycle>/`
101
+ * directories remain as fallback reads when no spec entry exists for an issue.
71
102
  */
72
103
  async function scanPanSpecs(projectRoot) {
73
- const specsDir = join(projectRoot, PAN_DIRNAME, PAN_SPECS_DIRNAME);
104
+ const { specsDir } = getProjectPanPaths(projectRoot);
74
105
  if (!existsSync(specsDir)) return [];
75
106
  let names;
76
107
  try {
@@ -153,6 +184,7 @@ var init_xbrief_index = __esmMin((() => {
153
184
  init_io();
154
185
  init_errors();
155
186
  init_types$1();
187
+ init_paths();
156
188
  CACHE_TTL_MS = 5e3;
157
189
  projectIndexCache = /* @__PURE__ */ new Map();
158
190
  findXBriefByIssue = (projectRoot, issueId) => Effect.tryPromise({
@@ -195,22 +227,6 @@ var init_xbrief_index = __esmMin((() => {
195
227
  }));
196
228
  //#endregion
197
229
  //#region ../../lib/pan-dir/specs.ts
198
- function projectPanPaths(projectRoot) {
199
- const stateHome = resolveStateReadHomeSync(findProjectByPathSync(projectRoot) ?? {
200
- name: projectRoot,
201
- path: projectRoot
202
- });
203
- const panDir = stateHome.migrated ? stateHome.root : join(stateHome.root, PAN_DIRNAME);
204
- return {
205
- panDir,
206
- specsDir: join(panDir, PAN_SPECS_DIRNAME),
207
- draftsDir: join(panDir, PAN_DRAFTS_DIRNAME),
208
- continuesDir: join(panDir, PAN_CONTINUES_DIRNAME)
209
- };
210
- }
211
- function getProjectPanPaths(projectRoot) {
212
- return projectPanPaths(projectRoot);
213
- }
214
230
  function ensurePanDirs(projectRoot) {
215
231
  return Effect.gen(function* () {
216
232
  const fs = yield* FileSystem.FileSystem;
@@ -428,15 +444,16 @@ function writeSpecDocument(projectRoot, path, doc) {
428
444
  invalidateXBriefIndex(projectRoot);
429
445
  });
430
446
  }
447
+ var projectPanPaths;
431
448
  var init_specs = __esmMin((() => {
432
449
  init_errors();
433
- init_projects();
434
- init_state_read_home();
435
450
  init_io();
436
451
  init_lifecycle();
437
452
  init_xbrief_index();
438
453
  init_auto_commit();
454
+ init_paths();
439
455
  init_types$1();
456
+ projectPanPaths = getProjectPanPaths;
440
457
  }));
441
458
  //#endregion
442
459
  //#region ../../lib/xbrief/types.ts
@@ -827,6 +844,6 @@ var init_io = __esmMin((() => {
827
844
  });
828
845
  }));
829
846
  //#endregion
830
- export { init_xbrief_index as A, init_specs as C, writeSpecDocument as D, writeSpec as E, getReadableWorkspacePanPaths as F, getWorkspacePanPaths as I, init_continue as L, readXBriefDocument as M, ensureWorkspacePanDir as N, writeSpecForIssue as O, getLegacyWorkspacePanPaths as P, getProjectPanPaths as S, readSpec as T, XBRIEF_INSPECTION_POLICIES as _, findWorkspaceDraftPlan as a, ensurePanDirs as b, mergeRecordStatusOverrides as c, readPlanSync as d, readTierOverrides as f, serializeXBriefDocument as g, recordTierPromotion as h, findPlanSync as i, invalidateXBriefIndex as j, findXBriefByIssue as k, normalizeXBriefEnvelope as l, readWorkspacePlanSync as m, applyStatusOverrides as n, init_io as o, readWorkspacePlan as p, findPlan as r, isPlanningComplete as s, XBriefMergeConflictError as t, readPlan as u, init_types as v, listSpecs as w, findSpecByIssue as x, subItemsOf as y };
847
+ export { invalidateXBriefIndex as A, listSpecs as C, writeSpecForIssue as D, writeSpecDocument as E, getReadableWorkspacePanPaths as F, getWorkspacePanPaths as I, init_continue as L, getProjectPanPaths as M, ensureWorkspacePanDir as N, findXBriefByIssue as O, getLegacyWorkspacePanPaths as P, init_specs as S, writeSpec as T, XBRIEF_INSPECTION_POLICIES as _, findWorkspaceDraftPlan as a, ensurePanDirs as b, mergeRecordStatusOverrides as c, readPlanSync as d, readTierOverrides as f, serializeXBriefDocument as g, recordTierPromotion as h, findPlanSync as i, readXBriefDocument as j, init_xbrief_index as k, normalizeXBriefEnvelope as l, readWorkspacePlanSync as m, applyStatusOverrides as n, init_io as o, readWorkspacePlan as p, findPlan as r, isPlanningComplete as s, XBriefMergeConflictError as t, readPlan as u, init_types as v, readSpec as w, findSpecByIssue as x, subItemsOf as y };
831
848
 
832
- //# sourceMappingURL=io-C9kF1wtJ.js.map
849
+ //# sourceMappingURL=io-VHvc0Ssp.js.map