@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
@@ -32,6 +32,7 @@ CREATE TABLE `agents` (
32
32
  `phase` text,
33
33
  `role_run_head` text,
34
34
  `flywheel_run_id` text,
35
+ `started_by` text,
35
36
  `cost_so_far` real,
36
37
  `review_sub_role` text,
37
38
  `review_run_id` text,
@@ -351,7 +352,9 @@ CREATE TABLE `review_status` (
351
352
  `strike_recovery_count` integer DEFAULT 0,
352
353
  `strike_transport_retry_count` integer,
353
354
  `strike_next_attempt_at` integer,
354
- `strike_landing_attempts` text
355
+ `strike_landing_attempts` text,
356
+ `review_cycle_history` text,
357
+ `conflicts_since` text
355
358
  );
356
359
  --> statement-breakpoint
357
360
  CREATE INDEX `review_status_updated_idx` ON `review_status` (`updated_at`);--> statement-breakpoint
@@ -422,6 +425,8 @@ CREATE TABLE `uat_generation_resolutions` (
422
425
  `issue_ids` text NOT NULL,
423
426
  `files` text NOT NULL,
424
427
  `commit_sha` text NOT NULL,
428
+ `kind` text,
429
+ `note` text,
425
430
  FOREIGN KEY (`uat_name`) REFERENCES `uat_generations`(`name`) ON UPDATE no action ON DELETE no action
426
431
  );
427
432
  --> statement-breakpoint
@@ -439,6 +444,36 @@ CREATE TABLE `uat_generations` (
439
444
  );
440
445
  --> statement-breakpoint
441
446
  CREATE INDEX `uat_status_idx` ON `uat_generations` (`status`);--> statement-breakpoint
447
+ CREATE INDEX `uat_generations_uncleaned_terminal_idx` ON `uat_generations` (`project_root`,`status`) WHERE `cleaned_at` IS NULL;--> statement-breakpoint
448
+ CREATE TABLE `uat_generation_repos` (
449
+ `uat_name` text NOT NULL,
450
+ `repo_key` text NOT NULL,
451
+ `repo_path` text NOT NULL,
452
+ `branch` text NOT NULL,
453
+ `base_sha` text NOT NULL,
454
+ `target_branch` text DEFAULT 'main' NOT NULL,
455
+ `worktree_path` text NOT NULL,
456
+ `merge_order` integer DEFAULT 0 NOT NULL,
457
+ `promoted_at` integer,
458
+ `merge_sha` text,
459
+ PRIMARY KEY(`uat_name`, `repo_key`),
460
+ FOREIGN KEY (`uat_name`) REFERENCES `uat_generations`(`name`) ON UPDATE no action ON DELETE no action
461
+ );
462
+ --> statement-breakpoint
463
+ CREATE INDEX `uat_generation_repos_uat_order_idx` ON `uat_generation_repos` (`uat_name`,`merge_order`);--> statement-breakpoint
464
+ CREATE TABLE `uat_generation_member_repos` (
465
+ `uat_name` text NOT NULL,
466
+ `issue_id` text NOT NULL,
467
+ `repo_key` text NOT NULL,
468
+ `branch` text NOT NULL,
469
+ `head_sha` text NOT NULL,
470
+ `merge_order_in_repo` integer DEFAULT 0 NOT NULL,
471
+ PRIMARY KEY(`uat_name`, `issue_id`, `repo_key`),
472
+ FOREIGN KEY (`uat_name`) REFERENCES `uat_generations`(`name`) ON UPDATE no action ON DELETE no action,
473
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
474
+ );
475
+ --> statement-breakpoint
476
+ CREATE INDEX `uat_generation_member_repos_uat_idx` ON `uat_generation_member_repos` (`uat_name`,`issue_id`);--> statement-breakpoint
442
477
  CREATE TABLE `discovered_sessions` (
443
478
  `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
444
479
  `jsonl_path` text NOT NULL UNIQUE,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overdeck/desktop",
3
- "version": "0.45.24",
3
+ "version": "0.47.0",
4
4
  "description": "Overdeck Command Deck — AI agent monitoring desktop app",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,4 +1,4 @@
1
- import { m as readWorkspacePlanSync, o as init_io, v as init_types, y as subItemsOf } from "./io-C9kF1wtJ.js";
1
+ import { m as readWorkspacePlanSync, o as init_io, v as init_types, y as subItemsOf } from "./io-B00PBNku.js";
2
2
  import "effect";
3
3
  //#region ../../lib/xbrief/acceptance-criteria.ts
4
4
  init_io();
@@ -59,4 +59,4 @@ function extractACFromDocument(doc) {
59
59
  //#endregion
60
60
  export { getXBriefACStatusSync as n, extractACFromDocument as t };
61
61
 
62
- //# sourceMappingURL=acceptance-criteria-DDCnXF58.js.map
62
+ //# sourceMappingURL=acceptance-criteria-10Ur5Dne.js.map
@@ -0,0 +1,3 @@
1
+ import { i as emitActivityTtsSync, o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
2
+ init_activity_logger();
3
+ export { emitActivityEntrySync, emitActivityTtsSync };
@@ -26,10 +26,13 @@ function getActivityEventStore() {
26
26
  return null;
27
27
  }
28
28
  }
29
- function appendActivityEventAsync(event) {
29
+ async function persistActivityEvent(event) {
30
30
  const store = getActivityEventStore();
31
- if (!store) return;
32
- store.appendAsync(event).catch(() => void 0);
31
+ if (!store) throw new Error("Activity event store is not initialized.");
32
+ await store.appendAsync(event);
33
+ }
34
+ function appendActivityEventAsync(event) {
35
+ persistActivityEvent(event).catch(() => void 0);
33
36
  }
34
37
  function appendActivityEvent(event) {
35
38
  const store = getActivityEventStore();
@@ -39,22 +42,23 @@ function appendActivityEvent(event) {
39
42
  } catch {}
40
43
  }
41
44
  /**
42
- * Emit an activity.entry domain event to the SQLite event store.
43
- * Non-blocking — throws silently if event store is not yet initialized.
44
- *
45
- * The event is persisted to SQLite immediately and PubSub notifies all
46
- * WebSocket subscribers so the ActivityPanel updates in real-time.
45
+ * Emit an activity.entry domain event to the SQLite event store and wait until
46
+ * it is durable. Reusing an id records a newer state transition for the same
47
+ * logical activity.
47
48
  */
48
- function emitActivityEntrySync(options) {
49
- appendActivityEventAsync({
49
+ async function emitActivityEntryDurable(options) {
50
+ await persistActivityEvent({
50
51
  type: "activity.entry",
51
52
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
52
53
  payload: {
53
- id: randomUUID(),
54
+ id: options.id ?? randomUUID(),
54
55
  source: options.source,
55
56
  level: options.level,
57
+ status: options.status,
58
+ command: options.command,
56
59
  message: options.message,
57
60
  details: options.details,
61
+ output: options.output,
58
62
  issueId: options.issueId,
59
63
  link: options.link,
60
64
  desktop: options.desktop
@@ -62,6 +66,13 @@ function emitActivityEntrySync(options) {
62
66
  });
63
67
  }
64
68
  /**
69
+ * Emit an activity.entry domain event without blocking the caller. Failures are
70
+ * non-fatal because this path is also used during early dashboard boot.
71
+ */
72
+ function emitActivityEntrySync(options) {
73
+ emitActivityEntryDurable(options).catch(() => void 0);
74
+ }
75
+ /**
65
76
  * Emit a detailed activity log entry — auto-generated from domain state changes.
66
77
  * Use for fine-grained visibility into agent lifecycle, plan changes, pipeline transitions.
67
78
  */
@@ -185,6 +196,6 @@ var init_activity_logger = __esmMin((() => {
185
196
  activityEventStoreProvider = null;
186
197
  }));
187
198
  //#endregion
188
- export { init_activity_logger as a, emitDashboardLifecycleSync as i, emitActivityEntrySync as n, setActivityEventStoreProvider as o, emitActivityTtsSync as r, emitActivityDetailedSync as t };
199
+ export { emitDashboardLifecycleSync as a, emitActivityTtsSync as i, emitActivityEntryDurable as n, init_activity_logger as o, emitActivityEntrySync as r, setActivityEventStoreProvider as s, emitActivityDetailedSync as t };
189
200
 
190
- //# sourceMappingURL=activity-logger-DDlOIAML.js.map
201
+ //# sourceMappingURL=activity-logger-CyteR4JO.js.map
@@ -1,8 +1,8 @@
1
- import { D as killSession, M as listSessionNames, w as init_tmux } from "./tmux-R7N7y-Mh.js";
2
- import { c as getReviewStatusSync, d as loadReviewStatuses, l as init_review_status } from "./review-status-kZj_KyCk.js";
3
- import { Yn as getAgentStateSync, b as init_agents, lr as saveAgentStateSync, nr as markAgentStoppedState } from "./queries-CjNIf-Ub.js";
4
- import { c as logDeaconEventSync, o as init_persistent_logger } from "./session-history-BT3IvqhC.js";
5
- import { a as selectMergedAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-BtHPo6Xc.js";
1
+ import { D as killSession, M as listSessionNames, w as init_tmux } from "./tmux-CfDHob9M.js";
2
+ import { d as getReviewStatusSync, h as loadReviewStatuses, p as init_review_status } from "./review-status-CGvlA4o_.js";
3
+ import { r as logDeaconEventSync, t as init_persistent_logger } from "./persistent-logger-H_VjuOu7.js";
4
+ import { _r as saveAgentStateSync, b as init_agents, rr as getAgentStateSync, ur as markAgentStoppedState } from "./queries-C-MUZaIy.js";
5
+ import { a as selectMergedAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-Qf-9LVQc.js";
6
6
  import { Effect } from "effect";
7
7
  //#region ../../lib/cloister/advancing-selfheal.ts
8
8
  init_agents();
@@ -135,4 +135,4 @@ async function runBootAdvancingSelfHeal(deps = defaultBootAdvancingSelfHealDeps)
135
135
  //#endregion
136
136
  export { checkMergedAdvancingSessions, markAdvancingSessionStopped, reconcileInFlightJournals, runBootAdvancingSelfHeal };
137
137
 
138
- //# sourceMappingURL=advancing-selfheal-BVwW4qRn.js.map
138
+ //# sourceMappingURL=advancing-selfheal-BNwqxseD.js.map
@@ -1,7 +1,7 @@
1
- import { Mt as readIssueRecordForWorkspaceSync, Ot as init_record } from "./config-yaml-DySPNmKN.js";
2
- import { c as listAllAgentsSync, l as removeAgentSync, o as init_agents } from "./agents-EbI0zCJl.js";
3
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-DHv5pSDT.js";
4
- import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-BL_-3Yt8.js";
1
+ import { Pt as init_record, Rt as readIssueRecordForWorkspaceSync } from "./config-yaml-CxdwhAIA.js";
2
+ import { c as listAllAgentsSync, l as removeAgentSync, o as init_agents } from "./agents-J5mEnekq.js";
3
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
4
+ import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-CybR81Uf.js";
5
5
  import { readdir, readlink } from "fs/promises";
6
6
  import { execFile } from "child_process";
7
7
  import { promisify } from "util";
@@ -112,4 +112,4 @@ function pruneTerminalStoppedAgents() {
112
112
  //#endregion
113
113
  export { pidsWithCwdUnder as a, sweepAutoCloseOutCache as i, pruneTerminalStoppedAgents as n, getAutoCloseOutCanonicalState as r, pruneStoppedAgentsForIssue as t };
114
114
 
115
- //# sourceMappingURL=agent-gc-CHcnvonI.js.map
115
+ //# sourceMappingURL=agent-gc-C3h9Or3a.js.map
@@ -0,0 +1,3 @@
1
+ import { Jn as clearAgentPausedSync, Xn as clearAgentTroubledSync, ir as init_agent_state, rr as getAgentStateSync, yr as setAgentPausedSync } from "./queries-C-MUZaIy.js";
2
+ init_agent_state();
3
+ export { clearAgentPausedSync, clearAgentTroubledSync, getAgentStateSync, setAgentPausedSync };
@@ -0,0 +1,2 @@
1
+ import { i as mergeRuntimeBySequence, n as AgentStateServiceLive, r as getRuntimeSnapshot, t as AgentStateService } from "./agent-state-service-Ds6OeFvo.js";
2
+ export { AgentStateService, AgentStateServiceLive, getRuntimeSnapshot, mergeRuntimeBySequence };
@@ -1,6 +1,7 @@
1
- import { a as init_event_store, i as initEventStore } from "./event-store-CQL6NeqB.js";
2
- import { m as applyEvent, p as INITIAL_READ_MODEL_STATE, t as init_src } from "./src-DtcUOZCq.js";
3
- import { f as markAgentStateServiceInProcess, l as getRuntimeSnapshot$1, p as setAgentRuntimeMirror, r as init_session_history, t as appendSessionIdToHistory, u as init_agent_runtime_mirror } from "./session-history-BT3IvqhC.js";
1
+ import { a as init_event_store, i as initEventStore } from "./event-store-CrHcVC5_.js";
2
+ import { h as applyEvent, m as INITIAL_READ_MODEL_STATE, t as init_src } from "./src-B948bGVR.js";
3
+ import { n as init_boot_reconciled_stop_events, t as emitBootReconciledStopEvents } from "./boot-reconciled-stop-events-C7gGe3oB.js";
4
+ import { l as markAgentStateServiceInProcess, o as getRuntimeSnapshot$1, r as init_session_history, s as init_agent_runtime_mirror, t as appendSessionIdToHistory, u as setAgentRuntimeMirror } from "./session-history-3ON_IJjm.js";
4
5
  import { Context, Effect, Layer, SubscriptionRef } from "effect";
5
6
  //#region services/agent-state-service.ts
6
7
  /**
@@ -29,6 +30,7 @@ init_src();
29
30
  init_event_store();
30
31
  init_agent_runtime_mirror();
31
32
  init_session_history();
33
+ init_boot_reconciled_stop_events();
32
34
  /**
33
35
  * Event types that affect AgentRuntimeSnapshot. Keep in sync with
34
36
  * `packages/contracts/src/event-reducers.ts` — every case that writes
@@ -58,10 +60,12 @@ const AgentStateServiceLive = Layer.effect(AgentStateService, Effect.gen(functio
58
60
  const store = yield* Effect.promise(() => initEventStore());
59
61
  const ref = yield* SubscriptionRef.make({});
60
62
  const seedFromSources = Effect.gen(function* () {
61
- const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-C3Ui7ojV.js"));
62
- const seeded = (yield* Effect.promise(() => reconstructCacheAuto())).agentRuntimeById;
63
+ const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-CMZJ_Vjq.js"));
64
+ const result = yield* Effect.promise(() => reconstructCacheAuto());
65
+ const seeded = result.agentRuntimeById;
66
+ yield* Effect.promise(() => emitBootReconciledStopEvents(store, result.markedStoppedIds, seeded, "[AgentStateService] Failed to emit boot-reconciled stop event:"));
63
67
  if (Object.keys(seeded).length > 0) {
64
- yield* SubscriptionRef.update(ref, (current) => mergeRuntimeBySequence(current, seeded));
68
+ yield* SubscriptionRef.update(ref, (current) => mergeRuntimeBySequence(current, seeded, result.agentsById));
65
69
  yield* setAgentRuntimeMirror(yield* SubscriptionRef.get(ref));
66
70
  console.log(`[AgentStateService] Bootstrapped ${Object.keys(seeded).length} runtime snapshot(s) from sources`);
67
71
  }
@@ -82,7 +86,7 @@ const AgentStateServiceLive = Layer.effect(AgentStateService, Effect.gen(functio
82
86
  emit: (event) => Effect.promise(() => store.appendAsync(event)).pipe(Effect.asVoid)
83
87
  };
84
88
  }));
85
- function mergeRuntimeBySequence(current, reconstructed) {
89
+ function mergeRuntimeBySequence(current, reconstructed, reconstructedAgents) {
86
90
  const merged = { ...reconstructed };
87
91
  for (const [id, snap] of Object.entries(current)) {
88
92
  const recon = reconstructed[id];
@@ -90,6 +94,8 @@ function mergeRuntimeBySequence(current, reconstructed) {
90
94
  merged[id] = snap;
91
95
  continue;
92
96
  }
97
+ const sourceAgent = reconstructedAgents[id];
98
+ if (recon.activity === "stopped" && sourceAgent?.hasLiveTmuxSession === false) continue;
93
99
  if ((snap.updatedAtSequence ?? -1) >= (recon.updatedAtSequence ?? 0)) merged[id] = snap;
94
100
  }
95
101
  return merged;
@@ -105,6 +111,6 @@ function applyEventToRef(ref, ev) {
105
111
  });
106
112
  }
107
113
  //#endregion
108
- export { AgentStateServiceLive as n, getRuntimeSnapshot as r, AgentStateService as t };
114
+ export { mergeRuntimeBySequence as i, AgentStateServiceLive as n, getRuntimeSnapshot as r, AgentStateService as t };
109
115
 
110
- //# sourceMappingURL=agent-state-service-BsgWxZuB.js.map
116
+ //# sourceMappingURL=agent-state-service-Ds6OeFvo.js.map
@@ -1,7 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DySPNmKN.js";
3
- import { _ as integer, a as EventBus, b as and, c as Records, d as getOverdeckDatabaseSync, f as init_infra, h as text, l as Tmux, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-BEqFxlJc.js";
4
- import { n as init_issues, t as IssueId } from "./issues-BMmP_77e.js";
2
+ import { ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
3
+ import { _ as integer, a as EventBus, b as and, c as Records, d as getOverdeckDatabaseSync, f as init_infra, h as text, l as Tmux, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-BDQDRopn.js";
4
+ import { n as init_issues, t as IssueId } from "./issues-DQ5-LatB.js";
5
+ import { n as logAgentLifecycleSync, t as init_persistent_logger } from "./persistent-logger-H_VjuOu7.js";
5
6
  import { join } from "node:path";
6
7
  import { Context, Effect, Layer, Schema } from "effect";
7
8
  import { readFileSync, readdirSync, rmSync, statSync } from "node:fs";
@@ -71,6 +72,7 @@ function agentStateToOverdeckRow(state) {
71
72
  state.phase ?? null,
72
73
  state.roleRunHead ?? null,
73
74
  state.flywheelRunId ?? null,
75
+ state.startedBy ?? null,
74
76
  state.costSoFar ?? null,
75
77
  state.reviewSubRole ?? null,
76
78
  state.reviewRunId ?? null,
@@ -124,13 +126,7 @@ function parseAgentStateJsonSync(content, fallbackId) {
124
126
  if (!parsed.status) parsed.status = "stopped";
125
127
  return parsed;
126
128
  }
127
- /**
128
- * Read each agent's state.json from ~/.overdeck/agents/ and upsert rows into
129
- * the overdeck agents table. Reconciles running/starting agents against live
130
- * tmux sessions.
131
- *
132
- * Replaces database/agent-backfill.ts backfillAgentsAutoSync for the overdeck layer.
133
- */
129
+ /** Rebuild the agents table from state.json and reconcile statuses against live tmux. */
134
130
  /**
135
131
  * All agent ids matching a prefix — unions the overdeck.db rows and the on-disk state
136
132
  * dirs, so it catches both row-only and dir-only orphans (the two can drift apart).
@@ -174,7 +170,7 @@ function backfillAgentsSync(options) {
174
170
  const liveSessions = options?.listLiveSessions?.() ?? listLiveTmuxSessionNamesSync();
175
171
  let processed = 0;
176
172
  let skipped = 0;
177
- let markedStopped = 0;
173
+ const markedStoppedIds = [];
178
174
  let entries = [];
179
175
  try {
180
176
  entries = readdirSync(agentsDir);
@@ -182,7 +178,8 @@ function backfillAgentsSync(options) {
182
178
  return {
183
179
  processed,
184
180
  skipped,
185
- markedStopped
181
+ markedStopped: 0,
182
+ markedStoppedIds
186
183
  };
187
184
  }
188
185
  const cols = OVERDECK_AGENT_COLUMNS.join(", ");
@@ -212,15 +209,20 @@ function backfillAgentsSync(options) {
212
209
  skipped++;
213
210
  continue;
214
211
  }
212
+ let reconciledStop;
215
213
  if ((state.status === "running" || state.status === "starting") && !liveSessions.has(state.id)) {
214
+ reconciledStop = {
215
+ id: state.id,
216
+ previousStatus: state.status
217
+ };
216
218
  state.status = "stopped";
217
219
  state.stoppedAt = state.stoppedAt ?? (/* @__PURE__ */ new Date()).toISOString();
218
- markedStopped++;
219
220
  }
220
221
  try {
221
222
  const row = agentStateToOverdeckRow(state);
222
223
  ensureIssue.run(row[issueIdIdx], Date.now());
223
224
  upsert.run(...row);
225
+ if (reconciledStop) markedStoppedIds.push(reconciledStop);
224
226
  processed++;
225
227
  if (options?.verbose) console.log(`[backfill] ${state.id} -> ${state.status}`);
226
228
  } catch (err) {
@@ -229,10 +231,12 @@ function backfillAgentsSync(options) {
229
231
  }
230
232
  }
231
233
  })();
234
+ for (const { id, previousStatus } of markedStoppedIds) logAgentLifecycleSync(id, `status changed: ${previousStatus} → stopped (boot backfill reconcile: no live tmux session)`);
232
235
  return {
233
236
  processed,
234
237
  skipped,
235
- markedStopped
238
+ markedStopped: markedStoppedIds.length,
239
+ markedStoppedIds
236
240
  };
237
241
  }
238
242
  /**
@@ -264,7 +268,7 @@ function listAllAgentsSync() {
264
268
  channels_enabled, consecutive_failures, first_failure_in_run_at,
265
269
  last_failure_next_retry_at, stopped_at, paused_at, troubled_at,
266
270
  last_activity, last_failure_reason, phase, role_run_head,
267
- flywheel_run_id, cost_so_far, review_sub_role, review_run_id,
271
+ flywheel_run_id, started_by, cost_so_far, review_sub_role, review_run_id,
268
272
  updated_at
269
273
  FROM agents
270
274
  `).all();
@@ -307,6 +311,7 @@ function listAllAgentsSync() {
307
311
  lastFailureReason: row["last_failure_reason"] ?? null,
308
312
  lastFailureNextRetryAt: fromMs(row["last_failure_next_retry_at"]),
309
313
  flywheelRunId: row["flywheel_run_id"] ?? null,
314
+ startedBy: row["started_by"] ?? null,
310
315
  roleRunHead: row["role_run_head"] ?? null,
311
316
  reviewSubRole: row["review_sub_role"] ?? null,
312
317
  reviewRunId: row["review_run_id"] ?? null,
@@ -329,6 +334,7 @@ var init_agents = __esmMin((() => {
329
334
  init_infra();
330
335
  init_issues();
331
336
  init_paths();
337
+ init_persistent_logger();
332
338
  init_issue_stage_sync();
333
339
  overdeckAgents = sqliteTable("agents", {
334
340
  id: text("id").primaryKey(),
@@ -941,6 +947,7 @@ var init_agents = __esmMin((() => {
941
947
  "phase",
942
948
  "role_run_head",
943
949
  "flywheel_run_id",
950
+ "started_by",
944
951
  "cost_so_far",
945
952
  "review_sub_role",
946
953
  "review_run_id",
@@ -972,4 +979,4 @@ var init_agents = __esmMin((() => {
972
979
  //#endregion
973
980
  export { countAgentsByStatusRole as a, listAllAgentsSync as c, isTerminalIssueStage as d, countAgentsByStatus as i, removeAgentSync as l, AgentsResolverLive as n, init_agents as o, backfillAgentsSync as r, listAgentIdsByPrefixSync as s, AgentsResolver as t, getIssueStageSync as u };
974
981
 
975
- //# sourceMappingURL=agents-EbI0zCJl.js.map
982
+ //# sourceMappingURL=agents-J5mEnekq.js.map
@@ -0,0 +1,3 @@
1
+ import { $n as getAgentDir, An as getProviderExportsForModel, B as detectCrashedAgents, Bn as dismissDevChannelsDialog, Br as saveAgentRuntimeState, C as replayCrashedStandingAgent, Dn as buildSpawnEnvForModel, En as buildCavemanExports, Fr as waitForAgentIdle, Ft as deliverResumeMessageWithTranscriptConfirmation, G as resumeAgent, Gn as SESSION_EXITED_BEFORE_KICKOFF, Gt as assertWorkspaceStackHealthyForSpawn, H as restartAgent, In as buildDefaultResumeContinueMessage, Ir as waitForReadySignal, Jn as clearAgentPausedSync, Kn as __testInternals, Kt as buildAgentLaunchConfig, Ln as buildResumeContinueMessage, Lr as getAgentRuntimeState, Mr as isQualifiedAgentId, Mt as deliverAgentMessage, Nr as normalizeAgentId, Nt as deliverAgentPermissionDecision, On as determineModel, Pr as resolveAgentTargetSync, Pt as deliverInitialPromptWithRetry, Rn as decideChannelsForWorkAgent, Rr as getAgentRuntimeStateSync, Rt as setAgentDeliveryMethod, S as contextWindowForModel, Sr as writeAgentStateJsonSync, T as shouldReplayCompactAtTierRunBoundary, U as buildCompactRecoverySeed, Un as writeChannelsBridgeMcpConfig, V as recoverAgent, Wn as GOVERNOR_SLOT_PAUSE_REASON_PREFIX, X as messageAgent, Xn as clearAgentTroubledSync, Xt as transitionIssueToInProgress, Yn as clearAgentTroubled, Yt as retrieveSpawnTimeMemoryContext, Zn as clearYieldForResumeSync, Zt as transitionIssueToInReview, _n as waitForPromptReady, _r as saveAgentStateSync, a as listRunningAgentsSync, an as OHMYPI_AGENT_READY_TIMEOUT_SECONDS, ar as isAgentPaused, b as init_agents, br as setAgentYieldedSync, cn as getAgentRuntimeBaseCommand, dn as getProviderAuthMode, dr as markAgentTroubled, dt as spawnRun, et as appendActivity, fn as getRoleRuntimeBaseCommand, fr as recordAgentFailure, gr as saveAgentState, hn as roleAgentDefinitionPath, hr as resetAgentFailureCount, i as listRunningAgents, it as getSessionId, jn as getProviderTmuxFlags, jr as clearReadySignal, kn as getProviderEnvForModel, lr as markAgentRunningState, mn as injectPiConversationMemory, mt as stopAgentSync, nr as getAgentStateFilePath, nt as getLatestSessionId, o as warnOnBareNumericIssueIds, on as describeOhmypiSpawnFailure, or as isAgentTroubled, ot as saveSessionId, pr as recordAgentFailureSync, pt as stopAgent, qn as clearAgentPaused, r as listAgentStates, rr as getAgentStateSync, rt as getLatestSessionIdSync, sr as isRole, t as dropLegacyAgentStatesMissingRoleAsync, tr as getAgentState, tt as getActivity, ur as markAgentStoppedState, ut as spawnAgent, vr as setAgentPaused, w as replayStandingAgent, x as compactAtTierRunBoundary, xr as wipeAgentStateDirs, yr as setAgentPausedSync, z as autoRecoverAgents, zn as decideSupervisorForWorkAgent } from "./queries-C-MUZaIy.js";
2
+ init_agents();
3
+ export { GOVERNOR_SLOT_PAUSE_REASON_PREFIX, OHMYPI_AGENT_READY_TIMEOUT_SECONDS, SESSION_EXITED_BEFORE_KICKOFF, __testInternals, appendActivity, assertWorkspaceStackHealthyForSpawn, autoRecoverAgents, buildAgentLaunchConfig, buildCavemanExports, buildCompactRecoverySeed, buildDefaultResumeContinueMessage, buildResumeContinueMessage, buildSpawnEnvForModel, clearAgentPaused, clearAgentPausedSync, clearAgentTroubled, clearAgentTroubledSync, clearReadySignal, clearYieldForResumeSync, compactAtTierRunBoundary, contextWindowForModel, decideChannelsForWorkAgent, decideSupervisorForWorkAgent, deliverAgentMessage, deliverAgentPermissionDecision, deliverInitialPromptWithRetry, deliverResumeMessageWithTranscriptConfirmation, describeOhmypiSpawnFailure, detectCrashedAgents, determineModel, dismissDevChannelsDialog, dropLegacyAgentStatesMissingRoleAsync, getActivity, getAgentDir, getAgentRuntimeBaseCommand, getAgentRuntimeState, getAgentRuntimeStateSync, getAgentState, getAgentStateFilePath, getAgentStateSync, getLatestSessionId, getLatestSessionIdSync, getProviderAuthMode, getProviderEnvForModel, getProviderExportsForModel, getProviderTmuxFlags, getRoleRuntimeBaseCommand, getSessionId, injectPiConversationMemory, isAgentPaused, isAgentTroubled, isQualifiedAgentId, isRole, listAgentStates, listRunningAgents, listRunningAgentsSync, markAgentRunningState, markAgentStoppedState, markAgentTroubled, messageAgent, normalizeAgentId, recordAgentFailure, recordAgentFailureSync, recoverAgent, replayCrashedStandingAgent, replayStandingAgent, resetAgentFailureCount, resolveAgentTargetSync, restartAgent, resumeAgent, retrieveSpawnTimeMemoryContext, roleAgentDefinitionPath, saveAgentRuntimeState, saveAgentState, saveAgentStateSync, saveSessionId, setAgentDeliveryMethod, setAgentPaused, setAgentPausedSync, setAgentYieldedSync, shouldReplayCompactAtTierRunBoundary, spawnAgent, spawnRun, stopAgent, stopAgentSync, transitionIssueToInProgress, transitionIssueToInReview, waitForAgentIdle, waitForPromptReady, waitForReadySignal, warnOnBareNumericIssueIds, wipeAgentStateDirs, writeAgentStateJsonSync, writeChannelsBridgeMcpConfig };
@@ -0,0 +1,2 @@
1
+ import { i as findWorkspacePath } from "./archive-planning-BwhxeP7C.js";
2
+ export { findWorkspacePath };
@@ -1,8 +1,7 @@
1
- import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Dr as PROJECT_PRDS_COMPLETED_SUBDIR, Er as PROJECT_PRDS_ACTIVE_SUBDIR, Or as PROJECT_PRDS_PLANNED_SUBDIR, Tr as PROJECT_DOCS_SUBDIR, Vr as init_paths, gr as ARCHIVES_DIR, kr as PROJECT_PRDS_SUBDIR } from "./config-yaml-DySPNmKN.js";
3
- import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, s as PAN_FEEDBACK_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-hraoaQIp.js";
4
- import { a as getDraftPath, o as getIssueDraftPath, t as init_pan_dir } from "./pan-dir-B0c3w0Ya.js";
5
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-5M0lupud.js";
1
+ import { Jr as PROJECT_PRDS_COMPLETED_SUBDIR, Kr as PROJECT_DOCS_SUBDIR, Lr as ARCHIVES_DIR, Xr as PROJECT_PRDS_SUBDIR, Yr as PROJECT_PRDS_PLANNED_SUBDIR, li as init_paths, qr as PROJECT_PRDS_ACTIVE_SUBDIR } from "./config-yaml-CxdwhAIA.js";
2
+ import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, s as PAN_FEEDBACK_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-Cm5ASJbq.js";
3
+ import { a as getDraftPath, o as getIssueDraftPath, t as init_pan_dir } from "./pan-dir-DMzF5wne.js";
4
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-Di8wdakq.js";
6
5
  import { Effect } from "effect";
7
6
  import { existsSync, readdirSync } from "fs";
8
7
  import { dirname, join } from "path";
@@ -23,6 +22,13 @@ import { promisify } from "util";
23
22
  * every variant. All writers MUST use canonicalPrdSubdir so new artifacts only
24
23
  * land in the canonical lowercase subdirectory format.
25
24
  */
25
+ init_paths();
26
+ init_pan_dir();
27
+ const STATUS_DIRS = {
28
+ active: PROJECT_PRDS_ACTIVE_SUBDIR,
29
+ planned: PROJECT_PRDS_PLANNED_SUBDIR,
30
+ completed: PROJECT_PRDS_COMPLETED_SUBDIR
31
+ };
26
32
  function statusRoot(projectPath, status) {
27
33
  return join(projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR, STATUS_DIRS[status]);
28
34
  }
@@ -90,16 +96,6 @@ function findPrdAnywhereSync(projectPath, issueId) {
90
96
  }
91
97
  return findDraftPrdSync(projectPath, issueId);
92
98
  }
93
- var STATUS_DIRS;
94
- var init_prd_locations = __esmMin((() => {
95
- init_paths();
96
- init_pan_dir();
97
- STATUS_DIRS = {
98
- active: PROJECT_PRDS_ACTIVE_SUBDIR,
99
- planned: PROJECT_PRDS_PLANNED_SUBDIR,
100
- completed: PROJECT_PRDS_COMPLETED_SUBDIR
101
- };
102
- }));
103
99
  //#endregion
104
100
  //#region ../../lib/lifecycle/archive-planning.ts
105
101
  /**
@@ -113,6 +109,10 @@ var init_prd_locations = __esmMin((() => {
113
109
  * 2. Archive workspace .pan/ artifacts to ~/.overdeck/archives/<issue>/
114
110
  * 3. Rotate previous archives to prevent overwrite
115
111
  */
112
+ init_paths();
113
+ init_pan_dir();
114
+ init_types();
115
+ const execAsync = promisify(exec);
116
116
  /**
117
117
  * Find ALL workspace paths matching an issue across canonical and legacy
118
118
  * naming conventions. Returns every candidate that exists on disk, so callers
@@ -190,10 +190,14 @@ async function movePrdImpl(ctx, opts) {
190
190
  await cp(resolvedSidecarSource, sidecarDest);
191
191
  } catch {}
192
192
  }
193
- await execAsync(`git commit -m "Move ${ctx.issueId} PRD to completed"`, { cwd: ctx.projectPath });
193
+ await execAsync(`git commit -m "chore: move ${ctx.issueId} PRD to completed"`, { cwd: ctx.projectPath });
194
194
  if (pushToRemote) await execAsync("git push", { cwd: ctx.projectPath });
195
195
  return stepOk(step, [`Moved ${formatLabel} from active/ to completed/ via git mv${resolvedSidecarSource ? " (with xBRIEF sidecar)" : ""}`]);
196
196
  } catch {
197
+ if (!existsSync(source.path)) {
198
+ if (existsSync(dest)) return stepFailed(step, "PRD moved to completed/ but the follow-up git commit failed; the rename is staged — commit it and re-run close-out");
199
+ return stepFailed(step, `PRD source ${source.path} is missing — nothing to preserve`);
200
+ }
197
201
  try {
198
202
  await cp(source.path, dest, { recursive: true });
199
203
  if (!existsSync(dest)) return stepFailed(step, "PRD copy appeared to succeed but destination not found");
@@ -279,15 +283,7 @@ function archivePlanning(ctx, opts = {}) {
279
283
  return results;
280
284
  });
281
285
  }
282
- var execAsync;
283
- var init_archive_planning = __esmMin((() => {
284
- init_paths();
285
- init_pan_dir();
286
- init_prd_locations();
287
- init_types();
288
- execAsync = promisify(exec);
289
- }));
290
286
  //#endregion
291
- export { inferBranchFromWorkspace as a, findPrdAnywhereSync as c, findWorkspacePath as i, init_prd_locations as l, archiveWorkspaceArtifacts as n, init_archive_planning as o, findAllWorkspacePaths as r, movePrd as s, archivePlanning as t };
287
+ export { inferBranchFromWorkspace as a, findWorkspacePath as i, archiveWorkspaceArtifacts as n, movePrd as o, findAllWorkspacePaths as r, findPrdAnywhereSync as s, archivePlanning as t };
292
288
 
293
- //# sourceMappingURL=archive-planning-Du25Jtst.js.map
289
+ //# sourceMappingURL=archive-planning-BwhxeP7C.js.map
@@ -1,4 +1,4 @@
1
- import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DySPNmKN.js";
1
+ import { ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
2
2
  import { n as openDatabase, t as init_driver } from "./driver-CKVGi51s.js";
3
3
  import { dirname, join } from "node:path";
4
4
  import { mkdirSync } from "node:fs";
@@ -208,4 +208,4 @@ function unshareArtifactBySlugJob(slug) {
208
208
  //#endregion
209
209
  export { getArtifactBySlugJob, listArtifactsForWorkspaceOrIssueJob, unshareArtifactBySlugJob };
210
210
 
211
- //# sourceMappingURL=artifact-index-jobs-CbEDfCDu.js.map
211
+ //# sourceMappingURL=artifact-index-jobs-D1q_vR3V.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, jr as SYNC_SOURCES } from "./config-yaml-DySPNmKN.js";
2
+ import { Qr as SYNC_SOURCES, ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
3
3
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
4
4
  import { join } from "path";
5
5
  //#region ../../lib/context-layers/layers.ts
@@ -336,4 +336,4 @@ var init_assemble = __esmMin((() => {
336
336
  //#endregion
337
337
  export { projectContextDir as A, ensureProjectLayer as C, legacyProjectContextFile as D, init_layers as E, workspaceContextDir as F, workspaceContextFile as I, readLayerContent as M, resolveProjectContextFile as N, legacyWorkspaceContextFile as O, resolveWorkspaceContextFile as P, codexGlobalContextFile as S, globalContextFile as T, KNOWN_HARNESS_MARKERS as _, REGION_BEGIN as a, validateTemplate as b, init_render as c, userContentOutsideRegion as d, init_rules as f, HARNESS_MARKERS as g, renderBundledRules as h, workspaceContextWithoutProjectLayer as i, projectContextFile as j, piGlobalContextFile as k, renderGlobalLayer as l, readBundledRules as m, PROJECT_LAYER_START as n, REGION_END as o, parseRule as p, init_assemble as r, hasManagedRegion as s, PROJECT_LAYER_END as t, renderProjectLayer as u, init_harness as v, globalContextDir as w, PROJECT_STARTER as x, renderForHarness as y };
338
338
 
339
- //# sourceMappingURL=assemble-J2ZZ2C15.js.map
339
+ //# sourceMappingURL=assemble-Bgwqv-Ro.js.map