@overdeck/desktop 0.45.23 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +34 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DOA0KgXx.js → acceptance-criteria-CCwFGICj.js} +2 -2
  4. package/server/activity-logger-CMthG6Vd.js +3 -0
  5. package/server/{activity-logger-DDlOIAML.js → activity-logger-CyteR4JO.js} +24 -13
  6. package/server/{advancing-selfheal-BBu6DSNm.js → advancing-selfheal-De1L-Sb4.js} +6 -6
  7. package/server/{agent-gc-BV1q_2EV.js → agent-gc-CBULruzm.js} +5 -5
  8. package/server/agent-state-VQk8fY9F.js +3 -0
  9. package/server/{agent-state-service-HoK8U4jW.js → agent-state-service-BlnSkRFA.js} +5 -5
  10. package/server/{agent-state-service-CnzFKSAQ.js → agent-state-service-hZpxIw1E.js} +1 -1
  11. package/server/agents-BKKkxKgK.js +3 -0
  12. package/server/{agents-B4Bjbkfv.js → agents-C5rWYhb6.js} +4 -4
  13. package/server/archive-planning-0FJ6Xd3b.js +2 -0
  14. package/server/{archive-planning-DYrYojxl.js → archive-planning-C0lAbNB_.js} +16 -24
  15. package/server/{artifact-index-jobs-C-xy7Z5v.js → artifact-index-jobs-ug6ZxIP5.js} +2 -2
  16. package/server/assemble-DnffNpOo.js +339 -0
  17. package/server/{backlog-auto-trigger-GtG71X8H.js → backlog-auto-trigger-Dh-i9PQf.js} +3 -3
  18. package/server/{behavior-B_-4EKF3.js → behavior-CfIg6pKp.js} +2 -2
  19. package/server/bridge-pool-patrol-CUFmjVDN.js +136 -0
  20. package/server/{briefing-freshness-DWdW7vUm.js → briefing-freshness-DHmCSLar.js} +2 -2
  21. package/server/{build-info-DgTqZkL5.js → build-info-BP160gU7.js} +1 -1
  22. package/server/{build-info-BT096lEl.js → build-info-CuFfxZxp.js} +5 -3
  23. package/server/{checkpoint-manager-DDqcGyu8.js → checkpoint-manager-DEWD82qK.js} +2 -2
  24. package/server/{checkpoint-manager-B7Bt29J0.js → checkpoint-manager-Dxh0FYsv.js} +1 -1
  25. package/server/checkpoint-worker.js +1 -1
  26. package/server/{checkpoints-C-AXLfYT.js → checkpoints-CZvbtLnr.js} +2 -2
  27. package/server/{checkpoints-CpgCjAlN.js → checkpoints-DMTgXuLG.js} +1 -1
  28. package/server/{claude-hooks-provision-C8wdRnN1.js → claude-hooks-provision-CN-xo-do.js} +1 -1
  29. package/server/{claude-hooks-provision-but-_qGY.js → claude-hooks-provision-fvy4RD2b.js} +13 -2
  30. package/server/{claude-permissions-H_5wHQZQ.js → claude-permissions-CN0cSCPp.js} +2 -2
  31. package/server/{claude-settings-overlay-CbSz0Dvb.js → claude-settings-overlay-CJn35FHQ.js} +2 -2
  32. package/server/{claude-settings-overlay-BTENVmYf.js → claude-settings-overlay-Dabi9slj.js} +1 -1
  33. package/server/cli-DmXETsw-.js +3 -0
  34. package/server/{cli-vBeXbPrq.js → cli-oCWYA1pE.js} +9 -9
  35. package/server/{cliproxy-Bgb2XCqi.js → cliproxy-C8mB3KuB.js} +2 -2
  36. package/server/{cliproxy-DW0V86F8.js → cliproxy-PGwTX_o8.js} +1 -1
  37. package/server/{close-issue-Dn_4c4G8.js → close-issue-D5MF5GqF.js} +5 -5
  38. package/server/{closed-issue-reaper-CWpY2uBw.js → closed-issue-reaper-CJ24u0Zt.js} +1 -1
  39. package/server/{closed-issue-reaper-hANY_ehE.js → closed-issue-reaper-Cltx86x5.js} +37 -16
  40. package/server/{codex-Dg7Is5yb.js → codex-BdEsUFWh.js} +1 -1
  41. package/server/{codex-TmSi-yTv.js → codex-Drlf5Xhf.js} +37 -8
  42. package/server/{codex-parser-C4gSH-IR.js → codex-parser-DpB89Vqa.js} +2 -2
  43. package/server/compaction-continuation-K2AxQX4H.js +200 -0
  44. package/server/{config-DjLOdbgT.js → config-B2IMcBxx.js} +4 -3
  45. package/server/{config-DUIhMN_T.js → config-DV-grfQc.js} +1 -1
  46. package/server/{config-CCvjQf27.js → config-Dr3pW6w6.js} +2 -2
  47. package/server/{config-yaml-DvyMuOle.js → config-yaml-CmOPzmBb.js} +290 -22
  48. package/server/{conflict-gate-CmrYpa47.js → conflict-gate-B9cN3SBi.js} +4 -4
  49. package/server/{conflict-gate-BSJkNTdp.js → conflict-gate-Dh754uyA.js} +1 -1
  50. package/server/context-layers-D6LZo3l1.js +4 -0
  51. package/server/context-layers-dR5YxHYB.js +37 -0
  52. package/server/{control-settings-aP1ANIlI.js → control-settings-C7DUehE1.js} +49 -19
  53. package/server/{conversation-compaction-CNbTLB86.js → conversation-compaction-BoqdDXWF.js} +8 -8
  54. package/server/{conversation-compaction-DiG5zWQq.js → conversation-compaction-Dj4FAKoZ.js} +1 -1
  55. package/server/{conversation-service-Du-MTNpJ.js → conversation-service-5aCnq1zR.js} +331 -20
  56. package/server/conversation-service-BCxl4f8Z.js +3 -0
  57. package/server/{conversations-DbOs1e9Q.js → conversations-BUpYsOZg.js} +5 -5
  58. package/server/{conversations-6mPANqvL.js → conversations-C34dyIb9.js} +1 -1
  59. package/server/{cost-Ca0YTWDw.js → cost-Bgcub5kW.js} +12 -2
  60. package/server/{cost-CW4WSe72.js → cost-CvxRrucd.js} +3 -3
  61. package/server/{cost-sync-C0VdGme1.js → cost-sync-Dv3LUaNW.js} +3 -3
  62. package/server/{dag-CdOjJVDT.js → dag-ombYYt4s.js} +2 -2
  63. package/server/{dangerous-git-ops-CT-IypG3.js → dangerous-git-ops-BcJPC5Rr.js} +1 -1
  64. package/server/dashboard-db-worker.js +7 -7
  65. package/server/deacon-DrXqT9LQ.js +4 -0
  66. package/server/{deacon-pRnyD5w9.js → deacon-hi9KLPLT.js} +2998 -2659
  67. package/server/{deacon-nudge-log-Bjg8U4Y9.js → deacon-nudge-log-BNBebzeL.js} +3 -3
  68. package/server/deacon-pending-lifecycle-Cpk0k7Hi.js +33 -0
  69. package/server/{deacon-swarm-DftYRDo8.js → deacon-swarm-DBxUaO-A.js} +13 -13
  70. package/server/deacon-swarm-I2JfX5Tg.js +2 -0
  71. package/server/deacon.js +14 -19
  72. package/server/dead-end-trip-CQcP70ND.js +13 -0
  73. package/server/delivery-Da0zEMY4.js +3 -0
  74. package/server/{deploy-patrol-Bjsho_ha.js → deploy-patrol-Df-Tmaq0.js} +69 -18
  75. package/server/deploy-queue-9SrhZR63.js +3 -0
  76. package/server/deploy-queue-UjKGYsDe.js +169 -0
  77. package/server/deploy-window-jOiPRHL0.js +3 -0
  78. package/server/{deploy-window-DeP_OIRk.js → deploy-window-rpqpWqHA.js} +40 -16
  79. package/server/{dev-supervisor-BpMoHlkR.js → dev-supervisor-CC46Ig8q.js} +2 -2
  80. package/server/{devcontainer-renderer-CtUgrVKW.js → devcontainer-renderer-68CSCRnu.js} +3 -3
  81. package/server/{dist-DyRx4cI7.js → dist-CJy72uEg.js} +1 -1
  82. package/server/dist-DSlxIU1H.js +3 -0
  83. package/server/{dist-src-BSoS7mkd.js → dist-src-Bik83hFi.js} +1 -1
  84. package/server/docker-BMVTSFL5.js +3 -0
  85. package/server/{docker-BK7HIcBj.js → docker-Dam7mbIB.js} +2 -2
  86. package/server/{dod-BrSfUHm0.js → dod-Dar-yheg.js} +8 -4
  87. package/server/durable-review-pipeline-CGZ5QBxh.js +17 -0
  88. package/server/durable-review-pipeline-jpgCJZFp.js +3 -0
  89. package/server/{ensure-devcontainer-DseivYEy.js → ensure-devcontainer-B057YA81.js} +4 -4
  90. package/server/{ensure-devcontainer-DRqaAkBR.js → ensure-devcontainer-C98V8yW-.js} +1 -1
  91. package/server/{esm-shims-CbI3BVkl.js → esm-shims-Br9BPdkR.js} +1 -1
  92. package/server/{event-store-Cr5PQwFC.js → event-store-ELqkVOn0.js} +1 -1
  93. package/server/{event-store-tdiY5eDZ.js → event-store-zY5MJHgF.js} +23 -4
  94. package/server/{events-CvvGK6LT.js → events-D6pyqhzM.js} +1 -1
  95. package/server/{events-CC1dgUpx.js → events-D9PR1IC0.js} +3 -3
  96. package/server/{factory-CynerjXO.js → factory-CRoOpGsF.js} +5 -5
  97. package/server/{feature-registry-population-B0pmAz0a.js → feature-registry-population--YUXU999.js} +4 -4
  98. package/server/{feature-registry-storage-_wUBRD3J.js → feature-registry-storage-BORBTo0y.js} +2 -2
  99. package/server/{features-Dhxz-wLc.js → features--nFkJY8v.js} +2 -2
  100. package/server/{feedback-target-iygZwmMc.js → feedback-target-C0ZzyHvU.js} +1 -1
  101. package/server/{feedback-target-CPS15Vte.js → feedback-target-Dt9BsapX.js} +8 -8
  102. package/server/{feedback-writer-C9b6ccN1.js → feedback-writer-BG0RUZiu.js} +5 -5
  103. package/server/{feedback-writer-qmiMbqTZ.js → feedback-writer-D1fm-5Z8.js} +1 -1
  104. package/server/flywheel-BekukH4i.js +2 -0
  105. package/server/flywheel-BiT3odRb.js +1092 -0
  106. package/server/flywheel-CLVB55Be.js +478 -0
  107. package/server/flywheel-merge-order-BJv1DZz1.js +462 -0
  108. package/server/flywheel-merge-order-BKw9o6ku.js +2 -0
  109. package/server/forge-CZbSg6Ds.js +383 -0
  110. package/server/forge-DK3blQb_.js +3 -0
  111. package/server/{from-CJ_aH5jD.js → from-D_4_dk7i.js} +1 -1
  112. package/server/{fts-db-CKgg0VKg.js → fts-db-BeOomFa-.js} +2 -2
  113. package/server/{fts-operations-BrL_VTRr.js → fts-operations-BdewJ_g9.js} +2 -2
  114. package/server/git-utils-CI6cwyyC.js +3 -0
  115. package/server/{git-utils-BVa07a4a.js → git-utils-ameCgDdy.js} +93 -3
  116. package/server/{github-app-CMBdIFBQ.js → github-app-CQ1Lo6LA.js} +19 -8
  117. package/server/{github-app-CPfoFAdV.js → github-app-DtAsvwzK.js} +1 -1
  118. package/server/{github-client--XVlDpwM.js → github-client-BfyDxuRN.js} +2 -2
  119. package/server/{github-client-B4QsdE-X.js → github-client-Cj0yl_07.js} +1 -1
  120. package/server/github-pr-lookup-BDq6Wznz.js +58 -0
  121. package/server/{harness-binary-CVio2m-u.js → harness-binary-DqkftwTb.js} +32 -6
  122. package/server/{harness-resolve-qHJBhy3Z.js → harness-resolve-CqMqM1Mb.js} +18 -9
  123. package/server/{health-events-C9B8y1Hm.js → health-events-CazRxJUS.js} +2 -2
  124. package/server/{health-events-CpfvuVmm.js → health-events-_xfTaOUs.js} +1 -1
  125. package/server/{hooks-DUXw8A0-.js → hooks-BO3QT1sn.js} +2 -2
  126. package/server/{hooks-ltecuFqZ.js → hooks-BnJsxlSq.js} +1 -1
  127. package/server/{hume-BEq0bUDg.js → hume-CDYJxqx-.js} +2 -2
  128. package/server/hume-Dq--7rOQ.js +3 -0
  129. package/server/{idle-stack-reaper-D7w9t3fE.js → idle-stack-reaper-BYqERdkE.js} +1 -1
  130. package/server/{idle-stack-reaper-w1ISSlhs.js → idle-stack-reaper-CnGx_PO_.js} +99 -6
  131. package/server/in-flight-guard-Bq3epG58.js +45 -0
  132. package/server/{infra-CzaSOgul.js → infra-BjuxvjdS.js} +80 -5
  133. package/server/{injection-oNZeoDhL.js → injection-DZxlV2al.js} +1 -1
  134. package/server/{injection-DZ0PfYa4.js → injection-UCf8EsjX.js} +191 -183
  135. package/server/{inspect-agent-DJKLWcVT.js → inspect-agent-6kylZnrm.js} +139 -82
  136. package/server/inspect-agent-BVwDrVrz.js +2 -0
  137. package/server/{internal-token-Bb4XeV2x.js → internal-token-DvMTQSOS.js} +2 -2
  138. package/server/{internal-token-DXdfprGr.js → internal-token-M9omeXM1.js} +1 -1
  139. package/server/{io-B3_AHDfr.js → io-VHvc0Ssp.js} +43 -26
  140. package/server/{issue-closed-zhdvQicO.js → issue-closed-B6KJkmHZ.js} +7 -7
  141. package/server/{issue-lifecycle-Dy4vd0Oa.js → issue-lifecycle-9gk3fnXN.js} +1 -1
  142. package/server/{issue-lifecycle-CreaCkjW.js → issue-lifecycle-C4Zj0WmE.js} +34 -28
  143. package/server/{issue-service-singleton-B5ushCvE.js → issue-service-singleton-DmCh7EHj.js} +10 -10
  144. package/server/{issue-service-singleton-DabvBWUp.js → issue-service-singleton-PMx8F1jr.js} +1 -1
  145. package/server/{issues-B6ToV6x1.js → issues-CgnQ1OGQ.js} +2 -2
  146. package/server/{jsonl-parser-Dhflo1SH.js → jsonl-parser-DJOH_O-w.js} +5 -4
  147. package/server/{label-cleanup-BKPJm4Hv.js → label-cleanup-Dv7AV_R1.js} +3 -3
  148. package/server/{label-reconciler-DdWbHEBu.js → label-reconciler--F85rufp.js} +4 -4
  149. package/server/{lifecycle-DfeyBDwA.js → lifecycle-CTdOWYMi.js} +2 -2
  150. package/server/{lifecycle-sycO16hj.js → lifecycle-DDN8ApVY.js} +6 -7
  151. package/server/{lifecycle-io-D8iNBcux.js → lifecycle-io-D-lGdzK3.js} +5 -5
  152. package/server/{lifecycle-io-Bsnr2K4F.js → lifecycle-io-D_zTLvP1.js} +1 -1
  153. package/server/{linear-client-D4zqMnX7.js → linear-client-BQU36QqE.js} +2 -2
  154. package/server/{linear-client-DqhDQO9k.js → linear-client-CY4O_Tu3.js} +1 -1
  155. package/server/linear-mcp-auth-BnU4TYfY.js +280 -0
  156. package/server/linear-mcp-auth-NYBq_oHZ.js +2 -0
  157. package/server/memory-fts-worker.js +1 -1
  158. package/server/{merge-C_ZEhbqI.js → merge-Bpx4jjht.js} +13 -11
  159. package/server/{merge-agent-XrB80vfT.js → merge-agent-DdMVSV2Y.js} +233 -83
  160. package/server/{merge-agent-BQM3a8z5.js → merge-agent-DrXa1CpW.js} +1 -1
  161. package/server/{merge-batch-Bwoyr8Je.js → merge-batch-C5q1c1GX.js} +1 -1
  162. package/server/merge-completeness-BMm8tMyZ.js +277 -0
  163. package/server/merge-completeness-D0ljXbk3.js +3 -0
  164. package/server/{merge-DK23JEdS.js → merge-idOG--29.js} +1 -1
  165. package/server/merge-ops-DdpTiEMt.js +2 -0
  166. package/server/merge-rebase-DGQpYJU3.js +2 -0
  167. package/server/{merge-rebase-C1KIVr0s.js → merge-rebase-xLnMlw5h.js} +3 -3
  168. package/server/merge-set-DH7ot3yz.js +89 -0
  169. package/server/merge-set-DzsOTBg5.js +3 -0
  170. package/server/{merge-sync-DZ9dojJn.js → merge-sync-CQ-LgZ1_.js} +406 -153
  171. package/server/merge-sync-Ca7F5JnQ.js +3 -0
  172. package/server/{merge-train-DxDfBTjr.js → merge-train-DTEMyIu4.js} +18 -8
  173. package/server/{merge-train-deps-CyYQUksx.js → merge-train-deps-CNPJzepw.js} +4 -4
  174. package/server/merge-verification-x3JO8Dtz.js +220 -0
  175. package/server/merged-docker-cleanup-worker-CTpC27Bs.js +107 -0
  176. package/server/merged-docker-cleanup-worker-Cdi9apm-.js +3 -0
  177. package/server/{multipart-parser-Dt8YPN5S.js → multipart-parser-IMSBfePV.js} +2 -2
  178. package/server/{no-resume-mode-Cx3K0hHi.js → no-resume-mode-C5ULAXwO.js} +1 -1
  179. package/server/node_modules/.package-lock.json +27 -27
  180. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  181. package/server/node_modules/@google-cloud/common/package.json +2 -2
  182. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  183. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  184. package/server/node_modules/gaxios/package.json +1 -1
  185. package/server/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
  186. package/server/node_modules/google-auth-library/package.json +1 -1
  187. package/server/node_modules/google-gax/build/protos/google/api/auth.proto +2 -1
  188. package/server/node_modules/google-gax/build/protos/google/api/backend.proto +12 -1
  189. package/server/node_modules/google-gax/build/protos/google/api/billing.proto +1 -1
  190. package/server/node_modules/google-gax/build/protos/google/api/client.proto +165 -53
  191. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1/resources.proto +1 -1
  192. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/quota_adjuster_settings.proto +7 -3
  193. package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/resources.proto +1 -1
  194. package/server/node_modules/google-gax/build/protos/google/api/config_change.proto +1 -1
  195. package/server/node_modules/google-gax/build/protos/google/api/context.proto +1 -1
  196. package/server/node_modules/google-gax/build/protos/google/api/control.proto +3 -3
  197. package/server/node_modules/google-gax/build/protos/google/api/distribution.proto +1 -1
  198. package/server/node_modules/google-gax/build/protos/google/api/documentation.proto +1 -1
  199. package/server/node_modules/google-gax/build/protos/google/api/endpoint.proto +1 -1
  200. package/server/node_modules/google-gax/build/protos/google/api/error_reason.proto +186 -1
  201. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/checked.proto +31 -3
  202. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/eval.proto +8 -9
  203. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/explain.proto +1 -2
  204. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/syntax.proto +20 -22
  205. package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/value.proto +2 -3
  206. package/server/node_modules/google-gax/build/protos/google/api/field_behavior.proto +1 -1
  207. package/server/node_modules/google-gax/build/protos/google/api/field_info.proto +1 -1
  208. package/server/node_modules/google-gax/build/protos/google/api/http.proto +1 -1
  209. package/server/node_modules/google-gax/build/protos/google/api/httpbody.proto +1 -1
  210. package/server/node_modules/google-gax/build/protos/google/api/label.proto +1 -1
  211. package/server/node_modules/google-gax/build/protos/google/api/launch_stage.proto +1 -1
  212. package/server/node_modules/google-gax/build/protos/google/api/log.proto +1 -1
  213. package/server/node_modules/google-gax/build/protos/google/api/logging.proto +1 -1
  214. package/server/node_modules/google-gax/build/protos/google/api/metric.proto +1 -1
  215. package/server/node_modules/google-gax/build/protos/google/api/monitored_resource.proto +1 -1
  216. package/server/node_modules/google-gax/build/protos/google/api/monitoring.proto +1 -1
  217. package/server/node_modules/google-gax/build/protos/google/api/policy.proto +1 -1
  218. package/server/node_modules/google-gax/build/protos/google/api/quota.proto +1 -1
  219. package/server/node_modules/google-gax/build/protos/google/api/resource.proto +1 -1
  220. package/server/node_modules/google-gax/build/protos/google/api/routing.proto +8 -4
  221. package/server/node_modules/google-gax/build/protos/google/api/service.proto +2 -3
  222. package/server/node_modules/google-gax/build/protos/google/api/source_info.proto +1 -1
  223. package/server/node_modules/google-gax/build/protos/google/api/system_parameter.proto +1 -1
  224. package/server/node_modules/google-gax/build/protos/google/api/usage.proto +7 -27
  225. package/server/node_modules/google-gax/build/protos/google/api/visibility.proto +1 -1
  226. package/server/node_modules/google-gax/build/protos/google/longrunning/operations.proto +20 -1
  227. package/server/node_modules/google-gax/build/protos/google/protobuf/any.proto +52 -108
  228. package/server/node_modules/google-gax/build/protos/google/protobuf/compiler/ruby/ruby_generated_code.proto +2 -0
  229. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_features.proto +21 -1
  230. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_file_options.proto +24 -0
  231. package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_options.proto +15 -0
  232. package/server/node_modules/google-gax/build/protos/google/protobuf/descriptor.proto +118 -30
  233. package/server/node_modules/google-gax/build/protos/google/protobuf/field_mask.proto +16 -18
  234. package/server/node_modules/google-gax/build/protos/google/protobuf/internal_options.proto +8 -1
  235. package/server/node_modules/google-gax/build/protos/google/protobuf/json/json_enumval_custom_string.proto +26 -0
  236. package/server/node_modules/google-gax/build/protos/google/protobuf/json_enumvalue_options.proto +29 -0
  237. package/server/node_modules/google-gax/build/protos/google/protobuf/json_options.proto +14 -0
  238. package/server/node_modules/google-gax/build/protos/google/protobuf/struct.proto +38 -22
  239. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/forced_micro_string.proto +3 -0
  240. package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/repeated_field_proxy_import_message.proto +14 -0
  241. package/server/node_modules/google-gax/build/protos/google/protobuf/timestamp.proto +9 -8
  242. package/server/node_modules/google-gax/build/protos/google/protobuf/util/json_format_proto3.proto +18 -0
  243. package/server/node_modules/google-gax/build/protos/google/rpc/code.proto +1 -1
  244. package/server/node_modules/google-gax/build/protos/google/rpc/context/attribute_context.proto +7 -2
  245. package/server/node_modules/google-gax/build/protos/google/rpc/context/audit_context.proto +1 -1
  246. package/server/node_modules/google-gax/build/protos/google/rpc/error_details.proto +5 -5
  247. package/server/node_modules/google-gax/build/protos/google/rpc/http.proto +1 -1
  248. package/server/node_modules/google-gax/build/protos/google/rpc/status.proto +1 -2
  249. package/server/node_modules/google-gax/build/protos/google/type/calendar_period.proto +1 -1
  250. package/server/node_modules/google-gax/build/protos/google/type/color.proto +9 -10
  251. package/server/node_modules/google-gax/build/protos/google/type/date.proto +11 -9
  252. package/server/node_modules/google-gax/build/protos/google/type/datetime.proto +17 -17
  253. package/server/node_modules/google-gax/build/protos/google/type/dayofweek.proto +1 -1
  254. package/server/node_modules/google-gax/build/protos/google/type/decimal.proto +11 -13
  255. package/server/node_modules/google-gax/build/protos/google/type/expr.proto +1 -1
  256. package/server/node_modules/google-gax/build/protos/google/type/fraction.proto +1 -1
  257. package/server/node_modules/google-gax/build/protos/google/type/interval.proto +1 -2
  258. package/server/node_modules/google-gax/build/protos/google/type/latlng.proto +4 -5
  259. package/server/node_modules/google-gax/build/protos/google/type/localized_text.proto +3 -3
  260. package/server/node_modules/google-gax/build/protos/google/type/money.proto +1 -2
  261. package/server/node_modules/google-gax/build/protos/google/type/month.proto +1 -1
  262. package/server/node_modules/google-gax/build/protos/google/type/phone_number.proto +20 -15
  263. package/server/node_modules/google-gax/build/protos/google/type/postal_address.proto +39 -39
  264. package/server/node_modules/google-gax/build/protos/google/type/quaternion.proto +4 -4
  265. package/server/node_modules/google-gax/build/protos/google/type/timeofday.proto +11 -8
  266. package/server/node_modules/google-gax/package.json +5 -5
  267. package/server/node_modules/retry-request/package.json +4 -4
  268. package/server/node_modules/teeny-request/package.json +5 -5
  269. package/server/node_modules/undici/README.md +5 -0
  270. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  271. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  272. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  273. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  274. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  275. package/server/node_modules/undici/docs/docs/index.md +5 -0
  276. package/server/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  277. package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  278. package/server/node_modules/undici/lib/core/request.js +13 -2
  279. package/server/node_modules/undici/lib/core/util.js +6 -1
  280. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  281. package/server/node_modules/undici/lib/dispatcher/client-h1.js +42 -8
  282. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  283. package/server/node_modules/undici/lib/global.js +36 -16
  284. package/server/node_modules/undici/lib/handler/cache-handler.js +269 -61
  285. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +13 -3
  286. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  287. package/server/node_modules/undici/lib/handler/retry-handler.js +30 -4
  288. package/server/node_modules/undici/lib/interceptor/cache.js +159 -52
  289. package/server/node_modules/undici/lib/interceptor/decompress.js +9 -2
  290. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  291. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  292. package/server/node_modules/undici/lib/util/cache.js +372 -68
  293. package/server/node_modules/undici/lib/util/date.js +23 -6
  294. package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
  295. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  296. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  297. package/server/node_modules/undici/package.json +2 -2
  298. package/server/node_modules/undici/types/client.d.ts +2 -2
  299. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  300. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  301. package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CWmOdM9-.js} +1 -1
  302. package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-Dg6U4ADZ.js} +24 -15
  303. package/server/package-lock.json +28 -28
  304. package/server/package.json +1 -1
  305. package/server/{pan-dir-DeVUgwA7.js → pan-dir-ubraCiUg.js} +24 -10
  306. package/server/{paths-_zEts6wc.js → paths-cXmOwSbh.js} +2 -2
  307. package/server/pending-lifecycle-claim-DEteYdS9.js +110 -0
  308. package/server/{pickup-Dd0Znxxy.js → pickup-D8xtG1J2.js} +17 -16
  309. package/server/pipeline-membership-BGSvkT2M.js +3 -0
  310. package/server/pipeline-membership-CrAPLYtf.js +57 -0
  311. package/server/{pipeline-membership-0HaEGDlH.js → pipeline-membership-gather-CET40frr.js} +177 -109
  312. package/server/pipeline-membership-gather-DTfcgxLl.js +3 -0
  313. package/server/{pipeline-notifier-D0ykk59O.js → pipeline-notifier-BuQ0e4hF.js} +2 -2
  314. package/server/{pipeline-notifier-6iCJplFZ.js → pipeline-notifier-ImNXknf0.js} +1 -1
  315. package/server/post-merge-lifecycle-worker-DbO10pum.js +50 -0
  316. package/server/{project-pipelines-2sK1apsO.js → project-pipelines-Bim6bThI.js} +2 -2
  317. package/server/project-repos-C0nuoBGv.js +98 -0
  318. package/server/project-repos-CRE6Ykow.js +3 -0
  319. package/server/projects-B03Wr-xc.js +3 -0
  320. package/server/{prompts-Dp4Tpk39.js → prompts-BEx08AIu.js} +2 -2
  321. package/server/{providers-DKkBXhxU.js → providers-D7IluJe0.js} +1 -1
  322. package/server/{providers-DV7ec8l7.js → providers-evXhiQeg.js} +7 -7
  323. package/server/public/assets/{chunk-BO2N2NFS-CltymLRg.js → chunk-BO2N2NFS-D1s4-Sqp.js} +4 -4
  324. package/server/public/assets/{diagram-OG6HWLK6-D2f6pjgA.js → diagram-OG6HWLK6-1gdMoSF7.js} +1 -1
  325. package/server/public/assets/{dist-BWR4qFiV.js → dist-CxAOHbil.js} +1 -1
  326. package/server/public/assets/{dist-DEmlBBNQ.js → dist-DqDRYW6P.js} +3 -3
  327. package/server/public/assets/{ganttDiagram-6RSMTGT7-DnfiViPK.js → ganttDiagram-6RSMTGT7-BYex-Ec7.js} +1 -1
  328. package/server/public/assets/{highlighted-body-OFNGDK62-B8Wrmj9H.js → highlighted-body-OFNGDK62-DlVkiG0S.js} +1 -1
  329. package/server/public/assets/index-Cc7cnFC4.css +1 -0
  330. package/server/public/assets/index-K0hAYCgV.js +807 -0
  331. package/server/public/assets/{linear-C9zFQpkX.js → linear-B4cuEFmO.js} +1 -1
  332. package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +1 -0
  333. package/server/public/assets/{pieDiagram-4H26LBE5-lR8H7Yjd.js → pieDiagram-4H26LBE5-CBHNBIJQ.js} +1 -1
  334. package/server/public/assets/{prod-B1jCQihw.js → prod-CN2nHBvX.js} +4 -4
  335. package/server/public/assets/{quadrantDiagram-W4KKPZXB-CVQ2guem.js → quadrantDiagram-W4KKPZXB-Bom87VOQ.js} +1 -1
  336. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eD1RB4gm.js → sankeyDiagram-5OEKKPKP-UrBeyLxk.js} +1 -1
  337. package/server/public/assets/{xychartDiagram-2RQKCTM6-ChEC6dQn.js → xychartDiagram-2RQKCTM6-DhkbrIxR.js} +1 -1
  338. package/server/public/index.html +2 -2
  339. package/server/{pull-requests--Ib2jTgy.js → pull-requests-Cv7LxzUN.js} +1 -1
  340. package/server/{pull-requests-CXIhdCYD.js → pull-requests-DHWiKxo7.js} +19 -10
  341. package/server/{queries-6d7Cdtm7.js → queries-DHJm7bTd.js} +1134 -203
  342. package/server/{rally-B708-nZn.js → rally-B71M9f4o.js} +3 -3
  343. package/server/rally-YDjU513q.js +3 -0
  344. package/server/{rally-api-yjQ0TfHd.js → rally-api-D5uXN08-.js} +1 -1
  345. package/server/{rally-api-nY0ZANw3.js → rally-api-Dkqmok65.js} +2 -2
  346. package/server/{rally-client-B1EJhfV0.js → rally-client-Bfqm6XI4.js} +4 -4
  347. package/server/{rally-client-CULK2XAY.js → rally-client-CxsA6ExK.js} +1 -1
  348. package/server/{reap-terminal-sessions-MWnqdLCJ.js → reap-terminal-sessions-BQ23nriz.js} +2 -2
  349. package/server/{reap-terminal-sessions-N3BTkmX_.js → reap-terminal-sessions-CvmwaqKv.js} +2 -2
  350. package/server/{rebuild-stack-Dp4eLkt4.js → rebuild-stack-0EEYReVZ.js} +36 -36
  351. package/server/rebuild-stack-qeRqHZxH.js +4 -0
  352. package/server/{reconstruct-cache-uWbZfjms.js → reconstruct-cache-BbYFsqLa.js} +7 -6
  353. package/server/record-CtroO946.js +3 -0
  354. package/server/record-update-DH6dLJID.js +3 -0
  355. package/server/{record-update-Dq0t2uBG.js → record-update-Z0QCxmMp.js} +124 -34
  356. package/server/{recovery-trip-BJtIQuag.js → recovery-trip-eJe26h-f.js} +2 -2
  357. package/server/{release-engine-DZpmGGzb.js → release-engine-lPUp-MTd.js} +5 -5
  358. package/server/{release-set-hnXd_kga.js → release-set-BwGeyZKX.js} +3 -3
  359. package/server/{remote-Br-ZWVIP.js → remote-BCd02Es1.js} +3 -3
  360. package/server/{remote-4tiENDaI.js → remote-CVGUhXMV.js} +3 -3
  361. package/server/{remote-agents-CRCg1L4H.js → remote-agents-C1bssi41.js} +2 -2
  362. package/server/{remote-agents-nmty1mLu.js → remote-agents-C_VxssLU.js} +300 -46
  363. package/server/{remote-completion-BbWNd10K.js → remote-completion-DAB0P706.js} +12 -12
  364. package/server/resume-u9byntrq.js +3 -0
  365. package/server/{review-agent-DJRO8EG8.js → review-agent-CD4RCI0Y.js} +1 -1
  366. package/server/{review-agent-sKkE1FEL.js → review-agent-CHhI66UP.js} +61 -44
  367. package/server/{review-artifacts-BLbSC4ke.js → review-artifacts-DSMRIfuJ.js} +7 -6
  368. package/server/{review-context-BgX3lcCx.js → review-context-oFuBbiEE.js} +69 -25
  369. package/server/{in-flight-guard-aQ1IxeI3.js → review-convoy-liveness-CpzrcJ5F.js} +3 -44
  370. package/server/review-status-BZH8h-6W.js +3 -0
  371. package/server/review-status-emit-CUExtHd5.js +50 -0
  372. package/server/{review-status-enrichment-tbOn_A_u.js → review-status-enrichment-QV_hQkgS.js} +4 -4
  373. package/server/{review-status-source-CxuEjLGg.js → review-status-source-CpvJnvnQ.js} +24 -3
  374. package/server/review-status-source-ylw5QZUR.js +3 -0
  375. package/server/{review-status-sync-BhSQ0d0l.js → review-status-sync-483sujRo.js} +10 -5
  376. package/server/{review-status-sync-To3-iS-N.js → review-status-sync-NaWvI9Xf.js} +1 -1
  377. package/server/review-status-yljtTd-q.js +7521 -0
  378. package/server/{review-verdict-feedback-C1Kg8n7t.js → review-verdict-feedback-BPDn4li_.js} +1 -1
  379. package/server/{review-verdict-feedback-CTRNtzXO.js → review-verdict-feedback-CELeUinh.js} +48 -8
  380. package/server/{rollup-WA0VD-Rr.js → rollup-DTNvelz9.js} +8 -8
  381. package/server/{rollup-B53Y81xK.js → rollup-DYZfq1c4.js} +1 -1
  382. package/server/{scanner-D2743cp8.js → scanner-CV35oSn4.js} +42 -14
  383. package/server/{sequence-io-Cg0zYj_E.js → sequence-io-DF_8iuhV.js} +4 -4
  384. package/server/{sequencer-agent-BGY8gjg-.js → sequencer-agent-B2WeCtGi.js} +5 -5
  385. package/server/server.js +3899 -672
  386. package/server/{service-DCpB_SGd.js → service-Br9rpBNA.js} +83 -65
  387. package/server/{session-fork-BQ8_6H32.js → session-fork-D0LY152N.js} +2 -2
  388. package/server/{session-history-CVZDpS3c.js → session-history-BUyK29eq.js} +4 -4
  389. package/server/{settings-BZ5m1UCl.js → settings-Bse1Pdcj.js} +3 -3
  390. package/server/settings-CdvIF84R.js +2 -0
  391. package/server/{settings-ylxwqwQG.js → settings-CvVGqNEs.js} +3 -2
  392. package/server/{shadow-engineering-BlxG6Xye.js → shadow-engineering-BWLa8ODz.js} +2 -2
  393. package/server/{shadow-state-Dh-HzF2J.js → shadow-state-B4fpKxOO.js} +2 -2
  394. package/server/{shadow-state-C2_epgx2.js → shadow-state-FV6PHfEW.js} +1 -1
  395. package/server/{shadow-utils-4bvjn9b3.js → shadow-utils-D7asqxOZ.js} +2 -2
  396. package/server/{ship-log-ClSMIzZX.js → ship-log-xplJ8t75.js} +1 -1
  397. package/server/{smart-compaction-CHIxLr_d.js → smart-compaction-CPp2Ykf6.js} +1 -1
  398. package/server/{smart-compaction-r4pHQBIr.js → smart-compaction-D3U_79f-.js} +8 -7
  399. package/server/{spawn-planning-session-KC_UduxD.js → spawn-planning-session-1nFi3gfk.js} +1 -1
  400. package/server/{spawn-planning-session-DWAorh2B.js → spawn-planning-session-DGfZ5B8D.js} +30 -23
  401. package/server/{specialist-completion-BXhav38U.js → specialist-completion-Br48eiDP.js} +1 -1
  402. package/server/{specialist-context-DtrYvGJ-.js → specialist-context-cVbGnTa3.js} +5 -5
  403. package/server/{specialist-handoff-logger-C45ouoZ6.js → specialist-handoff-logger-DK-GTz4s.js} +2 -2
  404. package/server/{specialist-logs-DJ3RzKxW.js → specialist-logs-Cl5-hqT8.js} +3 -3
  405. package/server/{specialists-JVO00bs7.js → specialists-CNfYO3G2.js} +1634 -457
  406. package/server/{specialists-DyFeedjn.js → specialists-Cicieuzu.js} +21 -19
  407. package/server/{specialists-D5fRZXmN.js → specialists-JHsdU3pA.js} +1 -1
  408. package/server/{specialists-DVj0hvaL.js → specialists-Tdezg_6N.js} +1 -1
  409. package/server/specs-Bt7WJDoC.js +3 -0
  410. package/server/src-CRmCHlma.js +11408 -0
  411. package/server/{src-CG9mCkP6.js → src-Ck028hjO.js} +6 -6
  412. package/server/{src-CMTQGyCK.js → src-UWcGe0Ix.js} +5 -5
  413. package/server/stack-health-CJLMrLBl.js +3 -0
  414. package/server/{stack-health-puygdaMd.js → stack-health-DqSqx0zv.js} +68 -12
  415. package/server/{stale-task-claims-BbFwCTb0.js → stale-task-claims-CYFOUNlT.js} +4 -4
  416. package/server/{staleness-Cbl_w4Bw.js → staleness-BQ-0gMYK.js} +1 -1
  417. package/server/{staleness-Bpy41ngS.js → staleness-D47CUJok.js} +1 -1
  418. package/server/{state-home-CIGjwNfJ.js → state-home-BYV7qZTW.js} +2 -2
  419. package/server/{state-mapping-BL_-3Yt8.js → state-mapping-BVldLhBf.js} +1 -1
  420. package/server/{state-migrate-Dkzaxvny.js → state-migrate-CvvBtS0Y.js} +4 -4
  421. package/server/{stuck-remediation-sY_MHHgQ.js → stuck-remediation-Wt0UVvu1.js} +1 -1
  422. package/server/{stuck-remediation-CzEov_fq.js → stuck-remediation-mkLC6G_t.js} +360 -26
  423. package/server/{substrate-bug-weights-service-BH66lhm7.js → substrate-bug-weights-service-XfLAKnmK.js} +3 -3
  424. package/server/{summary-fork-D8bXjCr7.js → summary-fork-CD7GOts0.js} +2 -2
  425. package/server/{summary-fork-DHhJIsAL.js → summary-fork-xiXBnWG9.js} +78 -12
  426. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-B5SbvDx2.js} +2 -41
  427. package/server/supervisor/{paths-DehGY2Fj.js → paths-K3noE4N_.js} +1 -1
  428. package/server/supervisor/pty-supervisor.js +49 -2
  429. package/server/supervisor/pty-token-B7lp0ElT.js +43 -0
  430. package/server/{supervisor-BO-Zk_h-.js → supervisor-DL788vos.js} +3 -3
  431. package/server/supervisor-UWiQNK-y.js +2 -0
  432. package/server/{swarm-readiness-CQ_fwUWF.js → swarm-readiness-BV14DF5N.js} +3 -3
  433. package/server/{system-prerequisites-Bza0ffAh.js → system-prerequisites-pdWG6ZQs.js} +56 -29
  434. package/server/{teardown-workspace-CEgauF4U.js → teardown-workspace-l2F4_zim.js} +15 -16
  435. package/server/{test-agent-queue-DXDt0Xa-.js → test-agent-queue-qakFIIGz.js} +6 -6
  436. package/server/{test-verdict-CmUBK5cT.js → test-verdict-BJYDggMm.js} +1 -1
  437. package/server/{test-verdict-DFjjIHR5.js → test-verdict-Gw-btEfb.js} +1 -1
  438. package/server/{tldr-daemon-DL566HbH.js → tldr-daemon-BKOYB616.js} +1 -1
  439. package/server/{tldr-daemon-BDtLOIlO.js → tldr-daemon-CBaWkV9k.js} +2 -2
  440. package/server/{tmux-ftABRAmc.js → tmux-B1Wbxz5o.js} +3 -3
  441. package/server/{tmux-DoThH6aj.js → tmux-DQ6jB76i.js} +1 -1
  442. package/server/tmux-dedup-DbN6MGzM.js +892 -0
  443. package/server/{token-CsOhvw42.js → token-Cxbk023d.js} +2 -2
  444. package/server/{token-util-CTmczIfW.js → token-util-CLq2MmQt.js} +1 -1
  445. package/server/token-util-zlz9U0ki.js +3 -0
  446. package/server/{tracker-config-B4itFzDo.js → tracker-config-DZ8Zn2nQ.js} +2 -2
  447. package/server/{tracker-utils-tnxxqROg.js → tracker-utils-L0FKtjq2.js} +3 -3
  448. package/server/{traefik-connect-m73vGebA.js → traefik-connect-bNX6jKkb.js} +1 -1
  449. package/server/{tunnel-B2vxjx_b.js → tunnel-BAm1XgjG.js} +3 -3
  450. package/server/{tunnel-Cgj-IGIl.js → tunnel-CjSnHdTc.js} +1 -1
  451. package/server/{types-BBNjPcqU.js → types-q67TYYg5.js} +1 -1
  452. package/server/uat-promote-verification-CKB9ZrKC.js +92 -0
  453. package/server/uat-train-Cu-4nvbf.js +2 -0
  454. package/server/uat-train-D5UjcyAa.js +0 -0
  455. package/server/validate-Cxsx5Uz1.js +179 -0
  456. package/server/{validation-CIi6pnI2.js → validation-DEaTZafj.js} +1 -1
  457. package/server/{validation-B5JxoPUS.js → validation-VZgJxmqc.js} +4 -4
  458. package/server/{verification-artifact-C-lIHfUa.js → verification-artifact-C85cRTc_.js} +1 -1
  459. package/server/{verification-artifact-BcnIbigL.js → verification-artifact-g3yuxQDL.js} +1 -1
  460. package/server/{verification-runner-CDj4lD4t.js → verification-runner-DlZI8yhw.js} +1 -1
  461. package/server/{verification-runner-Br0S_Ous.js → verification-runner-KDZIsBj4.js} +114 -107
  462. package/server/{vtt-parser-DKpNNW5i.js → vtt-parser-Jr94BF3Y.js} +1 -1
  463. package/server/{work-agent-prompt-Yb2bd3Fq.js → work-agent-prompt-C-vuP3_J.js} +20 -9
  464. package/server/workflows-CHrx_hcW.js +2 -0
  465. package/server/{workflows-C9WmILql.js → workflows-D0oip4eV.js} +161 -78
  466. package/server/{workspace-DuUdndHe.js → workspace-BqFg__wH.js} +1 -1
  467. package/server/{workspace-BVl4rihN.js → workspace-C0fH3aek.js} +3 -3
  468. package/server/workspace-anchor-drift-B4gMRHl4.js +3 -0
  469. package/server/workspace-anchor-drift-CZKofakh.js +224 -0
  470. package/server/{workspace-config-cEGcO6UT.js → workspace-config-B123aZl-.js} +1 -1
  471. package/server/workspace-manager-CDTKjjdU.js +3 -0
  472. package/server/{workspace-manager-hLUv3ADC.js → workspace-manager-CwO-Hek7.js} +206 -116
  473. package/server/{workspace-metadata-CskwzzhL.js → workspace-metadata-CQv00QwK.js} +2 -2
  474. package/server/{workspace-metadata-DNpMixRq.js → workspace-metadata-D4M8BM4W.js} +1 -1
  475. package/server/{workspaces-hWvy9eKs.js → workspaces-j1e_6aAT.js} +736 -290
  476. package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
  477. package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
  478. package/sync-sources/hooks/record-cost-event.js +6 -4
  479. package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
  480. package/sync-sources/skills/okf/README.md +11 -3
  481. package/sync-sources/skills/okf/SKILL.md +12 -1
  482. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  483. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  484. package/sync-sources/skills/pan-close/SKILL.md +5 -3
  485. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  486. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  487. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  488. package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
  489. package/sync-sources/skills/pan-reload/SKILL.md +3 -3
  490. package/sync-sources/skills/pan-restart/SKILL.md +5 -4
  491. package/sync-sources/skills/pan-review/SKILL.md +7 -1
  492. package/sync-sources/skills/pan-start/SKILL.md +4 -0
  493. package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
  494. package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
  495. package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
  496. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  497. package/server/activity-logger-OEUBdfZ8.js +0 -3
  498. package/server/agent-state-Bg0lhqwj.js +0 -3
  499. package/server/agents-FlIgQ3ql.js +0 -3
  500. package/server/archive-planning-zkJb3BeM.js +0 -3
  501. package/server/cli-BsVIHwzC.js +0 -3
  502. package/server/context-layers-B3Nt58jl.js +0 -4
  503. package/server/context-layers-ZYFcWiyc.js +0 -165
  504. package/server/conversation-service-Up7FEzIC.js +0 -3
  505. package/server/deacon-DYSEJb48.js +0 -4
  506. package/server/deacon-swarm-9jRLS5Ke.js +0 -2
  507. package/server/deploy-window-CM6W1-c6.js +0 -3
  508. package/server/dist-Bd3vn0Hw.js +0 -3
  509. package/server/flywheel-DMCUzDWg.js +0 -2
  510. package/server/flywheel-DSSpWmqF.js +0 -522
  511. package/server/flywheel-DcBkQvgE.js +0 -207
  512. package/server/flywheel-merge-order-C-6zRLvM.js +0 -2
  513. package/server/flywheel-merge-order-DxbQKE1d.js +0 -244
  514. package/server/forge-B-ZWyTRm.js +0 -2
  515. package/server/forge-Ch9gCFod.js +0 -270
  516. package/server/git-utils-Dry_Ka_D.js +0 -3
  517. package/server/github-pr-lookup-BRbDW-qk.js +0 -44
  518. package/server/hume-B_DbflNM.js +0 -3
  519. package/server/inspect-agent-ch-F-5Ci.js +0 -2
  520. package/server/launcher-generator-CHVm7bGT.js +0 -379
  521. package/server/layers-DzxSTGNA.js +0 -93
  522. package/server/merge-blockers-BsFjGrQ8.js +0 -41
  523. package/server/merge-ops-DlB1IM0Y.js +0 -2
  524. package/server/merge-set-DLz0MkGT.js +0 -139
  525. package/server/merge-set-DnSYdBEp.js +0 -3
  526. package/server/merge-sync-SSv3E-pl.js +0 -3
  527. package/server/merge-verification-CSizH3HY.js +0 -124
  528. package/server/projects-9SkRpES9.js +0 -3
  529. package/server/public/assets/index-CUr1xv8w.css +0 -1
  530. package/server/public/assets/index-CsSuZQBI.js +0 -802
  531. package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +0 -1
  532. package/server/rally-njs_mJrt.js +0 -3
  533. package/server/rebuild-stack-kA7XngID.js +0 -3
  534. package/server/record-t6V-3Dcj.js +0 -3
  535. package/server/record-update-DACtKh6_.js +0 -3
  536. package/server/resume-CcKqnTvE.js +0 -3
  537. package/server/review-status-A7quS5KJ.js +0 -1454
  538. package/server/review-status-C6n6-9f_.js +0 -3
  539. package/server/settings-D0OSwos5.js +0 -2
  540. package/server/specs-nN45DG2X.js +0 -3
  541. package/server/src-U7_kTPEE.js +0 -4733
  542. package/server/stack-health-Df0YEZKa.js +0 -3
  543. package/server/supervisor-BPy-o1A8.js +0 -2
  544. package/server/token-util-DrHg8abn.js +0 -3
  545. package/server/tracker-utils-BePq_oj-.js +0 -3
  546. package/server/uat-train-CuEn0t9M.js +0 -2152
  547. package/server/uat-train-cKfM-_WW.js +0 -2
  548. package/server/workflows-D90rMOya.js +0 -2
  549. package/server/workspace-manager-ZTdJAy9M.js +0 -3
@@ -0,0 +1,37 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { Fr as init_errors, ci as init_paths } from "./config-yaml-CmOPzmBb.js";
3
+ import { E as init_layers, c as init_render, f as init_rules, r as init_assemble } from "./assemble-DnffNpOo.js";
4
+ import "effect";
5
+ import "fs";
6
+ import "path";
7
+ import "os";
8
+ //#region ../../lib/backup.ts
9
+ var init_backup = __esmMin((() => {
10
+ init_paths();
11
+ init_errors();
12
+ }));
13
+ //#endregion
14
+ //#region ../../lib/context-layers/legacy-beads-cleanup.ts
15
+ var init_legacy_beads_cleanup = __esmMin((() => {
16
+ init_backup();
17
+ init_render();
18
+ }));
19
+ //#endregion
20
+ //#region ../../lib/context-layers/migrate.ts
21
+ var init_migrate = __esmMin((() => {
22
+ init_layers();
23
+ }));
24
+ //#endregion
25
+ //#region ../../lib/context-layers/index.ts
26
+ var init_context_layers = __esmMin((() => {
27
+ init_layers();
28
+ init_rules();
29
+ init_render();
30
+ init_assemble();
31
+ init_legacy_beads_cleanup();
32
+ init_migrate();
33
+ }));
34
+ //#endregion
35
+ export { init_context_layers as t };
36
+
37
+ //# sourceMappingURL=context-layers-dR5YxHYB.js.map
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Tn as init_projects, jn as loadProjectsConfigSync, yn as getProjectSync } from "./config-yaml-DvyMuOle.js";
3
- import { _ as integer, a as EventBus, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-CzaSOgul.js";
4
- import { n as init_issues, t as IssueId } from "./issues-B6ToV6x1.js";
2
+ import { Gn as init_projects, Zn as loadProjectsConfigSync, zn as getProjectSync } from "./config-yaml-CmOPzmBb.js";
3
+ import { _ as integer, a as EventBus, d as getOverdeckDatabaseSync, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-BjuxvjdS.js";
4
+ import { n as init_issues, t as IssueId } from "./issues-CgnQ1OGQ.js";
5
5
  import { Context, Effect, Layer, Schema } from "effect";
6
6
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
7
7
  //#region ../../lib/overdeck/control-settings.ts
@@ -43,6 +43,10 @@ function parseBootReconciliationPerAgent(value) {
43
43
  return {};
44
44
  }
45
45
  }
46
+ function parseBootReconciliationGraceExtensions(value) {
47
+ const parsed = value == null ? NaN : Number.parseInt(value, 10);
48
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
49
+ }
46
50
  function getBootReconciliationState() {
47
51
  return {
48
52
  decision: parseBootReconciliationDecision(getSetting(BOOT_RECONCILIATION_DECISION_KEY)),
@@ -50,7 +54,8 @@ function getBootReconciliationState() {
50
54
  decidedAt: getSetting(BOOT_RECONCILIATION_DECIDED_AT_KEY),
51
55
  bootId: getSetting(BOOT_RECONCILIATION_BOOT_ID_KEY),
52
56
  bootStartedAt: getSetting(BOOT_RECONCILIATION_BOOT_STARTED_AT_KEY),
53
- graceDeadline: getSetting(BOOT_RECONCILIATION_GRACE_DEADLINE_KEY)
57
+ graceDeadline: getSetting(BOOT_RECONCILIATION_GRACE_DEADLINE_KEY),
58
+ graceExtensions: parseBootReconciliationGraceExtensions(getSetting(BOOT_RECONCILIATION_GRACE_EXTENSIONS_KEY))
54
59
  };
55
60
  }
56
61
  function setBootReconciliationDecision(decision, perAgent = {}) {
@@ -62,6 +67,15 @@ function stampBootReconciliation(bootId, graceDeadline, bootStartedAt) {
62
67
  setSetting(BOOT_RECONCILIATION_BOOT_ID_KEY, bootId);
63
68
  setSetting(BOOT_RECONCILIATION_BOOT_STARTED_AT_KEY, bootStartedAt);
64
69
  setSetting(BOOT_RECONCILIATION_GRACE_DEADLINE_KEY, graceDeadline);
70
+ setSetting(BOOT_RECONCILIATION_GRACE_EXTENSIONS_KEY, "0");
71
+ }
72
+ /**
73
+ * Push this boot's grace deadline out without touching the decision. Used only
74
+ * by the extend door, which owns the extension cap.
75
+ */
76
+ function setBootReconciliationGrace(graceDeadline, graceExtensions) {
77
+ setSetting(BOOT_RECONCILIATION_GRACE_DEADLINE_KEY, graceDeadline);
78
+ setSetting(BOOT_RECONCILIATION_GRACE_EXTENSIONS_KEY, String(graceExtensions));
65
79
  }
66
80
  /** Synchronous check of the global Deacon pause flag. */
67
81
  function isDeaconGloballyPausedSync() {
@@ -131,11 +145,13 @@ function setFlywheelRequireUatBeforeMerge(enabled) {
131
145
  }
132
146
  /** Drop-in for isMergeTrainEnabled() from app-settings.ts. */
133
147
  function isMergeTrainEnabled() {
148
+ const newKey = getSetting(MERGE_TRAIN_ENABLED_KEY);
149
+ if (newKey !== null) return newKey === "true";
134
150
  return getSetting(FLYWHEEL_MERGE_TRAIN_ENABLED_KEY) === "true";
135
151
  }
136
152
  /** Drop-in for setMergeTrainEnabled() from app-settings.ts. */
137
153
  function setMergeTrainEnabled(enabled) {
138
- setSetting(FLYWHEEL_MERGE_TRAIN_ENABLED_KEY, enabled ? "true" : "false");
154
+ setSetting(MERGE_TRAIN_ENABLED_KEY, enabled ? "true" : "false");
139
155
  }
140
156
  /**
141
157
  * Returns the currently-active flywheel run ID from overdeck.db, or null.
@@ -144,7 +160,7 @@ function setMergeTrainEnabled(enabled) {
144
160
  function getFlywheelActiveRunIdSync() {
145
161
  return getOverdeckDatabaseSync().prepare(`SELECT value FROM app_settings WHERE key = 'flywheel.active_run_id'`).get()?.value ?? null;
146
162
  }
147
- var appSettings, issuePolicy, FlywheelConfig, FlywheelConfigPatch, FlywheelRuntime, IssuePolicy, ProjectKey, ProjectConfig, ProjectNotFound, SettingsResolver, SettingsWriter, ConfigResolver, DEACON_GLOBAL_PAUSE_KEY, CLOISTER_SPAWNS_PAUSED_KEY, FLYWHEEL_GLOBAL_PAUSE_KEY, FLYWHEEL_ACTIVE_RUN_ID_KEY, FLYWHEEL_AUTO_PICKUP_BACKLOG_KEY, FLYWHEEL_REQUIRE_UAT_BEFORE_MERGE_KEY, FLYWHEEL_MERGE_TRAIN_ENABLED_KEY, BOOT_RECONCILIATION_DECISION_KEY, BOOT_RECONCILIATION_PER_AGENT_KEY, BOOT_RECONCILIATION_DECIDED_AT_KEY, BOOT_RECONCILIATION_BOOT_ID_KEY, BOOT_RECONCILIATION_BOOT_STARTED_AT_KEY, BOOT_RECONCILIATION_GRACE_DEADLINE_KEY, BOOT_RECONCILIATION_DECISIONS;
163
+ var appSettings, issuePolicy, FlywheelConfig, FlywheelConfigPatch, FlywheelRuntime, IssuePolicy, ProjectKey, ProjectConfig, ProjectNotFound, SettingsResolver, SettingsWriter, ConfigResolver, DEACON_GLOBAL_PAUSE_KEY, CLOISTER_SPAWNS_PAUSED_KEY, FLYWHEEL_GLOBAL_PAUSE_KEY, FLYWHEEL_ACTIVE_RUN_ID_KEY, FLYWHEEL_AUTO_PICKUP_BACKLOG_KEY, FLYWHEEL_REQUIRE_UAT_BEFORE_MERGE_KEY, FLYWHEEL_MERGE_TRAIN_ENABLED_KEY, MERGE_TRAIN_ENABLED_KEY, BOOT_RECONCILIATION_DECISION_KEY, BOOT_RECONCILIATION_PER_AGENT_KEY, BOOT_RECONCILIATION_DECIDED_AT_KEY, BOOT_RECONCILIATION_BOOT_ID_KEY, BOOT_RECONCILIATION_BOOT_STARTED_AT_KEY, BOOT_RECONCILIATION_GRACE_DEADLINE_KEY, BOOT_RECONCILIATION_GRACE_EXTENSIONS_KEY, BOOT_RECONCILIATION_DECISIONS;
148
164
  var init_control_settings = __esmMin((() => {
149
165
  init_drizzle_orm();
150
166
  init_sqlite_core();
@@ -198,11 +214,17 @@ var init_control_settings = __esmMin((() => {
198
214
  return row?.value === void 0 || row.value === null ? dflt : Boolean(row.value);
199
215
  };
200
216
  const isDeaconPaused = () => Effect.promise(() => readFlag("deacon.globally_paused", false));
201
- const getFlywheelConfig = () => Effect.promise(async () => ({
202
- autoPickupBacklog: await readFlag("flywheel.auto_pickup_backlog", false),
203
- requireUatBeforeMerge: await readFlag("flywheel.require_uat_before_merge", true),
204
- mergeTrainEnabled: await readFlag("flywheel.merge_train_enabled", false)
205
- }));
217
+ const getFlywheelConfig = () => Effect.promise(async () => {
218
+ const [newRow] = await q.select().from(appSettings).where(eq(appSettings.key, "merge_train.enabled"));
219
+ let mergeTrainEnabled;
220
+ if (newRow?.value !== void 0 && newRow.value !== null) mergeTrainEnabled = Boolean(newRow.value);
221
+ else mergeTrainEnabled = await readFlag("flywheel.merge_train_enabled", false);
222
+ return {
223
+ autoPickupBacklog: await readFlag("flywheel.auto_pickup_backlog", false),
224
+ requireUatBeforeMerge: await readFlag("flywheel.require_uat_before_merge", true),
225
+ mergeTrainEnabled
226
+ };
227
+ });
206
228
  const getFlywheelRuntime = () => Effect.promise(async () => {
207
229
  const paused = await readFlag("flywheel.globally_paused", false);
208
230
  const [row] = await q.select().from(appSettings).where(eq(appSettings.key, "flywheel.active_run_id"));
@@ -249,11 +271,17 @@ var init_control_settings = __esmMin((() => {
249
271
  const [row] = await q.select().from(appSettings).where(eq(appSettings.key, key));
250
272
  return row?.value === void 0 || row.value === null ? dflt : Boolean(row.value);
251
273
  };
252
- const readFlywheelConfig = async () => ({
253
- autoPickupBacklog: await readFlag("flywheel.auto_pickup_backlog", false),
254
- requireUatBeforeMerge: await readFlag("flywheel.require_uat_before_merge", true),
255
- mergeTrainEnabled: await readFlag("flywheel.merge_train_enabled", false)
256
- });
274
+ const readFlywheelConfig = async () => {
275
+ const [newRow] = await q.select().from(appSettings).where(eq(appSettings.key, "merge_train.enabled"));
276
+ let mergeTrainEnabled;
277
+ if (newRow?.value !== void 0 && newRow.value !== null) mergeTrainEnabled = Boolean(newRow.value);
278
+ else mergeTrainEnabled = await readFlag("flywheel.merge_train_enabled", false);
279
+ return {
280
+ autoPickupBacklog: await readFlag("flywheel.auto_pickup_backlog", false),
281
+ requireUatBeforeMerge: await readFlag("flywheel.require_uat_before_merge", true),
282
+ mergeTrainEnabled
283
+ };
284
+ };
257
285
  const readPolicy = async (id) => {
258
286
  const [row] = await q.select().from(issuePolicy).where(eq(issuePolicy.issueId, id));
259
287
  return {
@@ -274,7 +302,7 @@ var init_control_settings = __esmMin((() => {
274
302
  yield* Effect.promise(async () => {
275
303
  if (patch.autoPickupBacklog !== void 0) await setFlag("flywheel.auto_pickup_backlog", patch.autoPickupBacklog);
276
304
  if (patch.requireUatBeforeMerge !== void 0) await setFlag("flywheel.require_uat_before_merge", patch.requireUatBeforeMerge);
277
- if (patch.mergeTrainEnabled !== void 0) await setFlag("flywheel.merge_train_enabled", patch.mergeTrainEnabled);
305
+ if (patch.mergeTrainEnabled !== void 0) await setFlag("merge_train.enabled", patch.mergeTrainEnabled);
278
306
  });
279
307
  const next = yield* Effect.promise(readFlywheelConfig);
280
308
  yield* bus.emit({
@@ -382,12 +410,14 @@ var init_control_settings = __esmMin((() => {
382
410
  FLYWHEEL_AUTO_PICKUP_BACKLOG_KEY = "flywheel.auto_pickup_backlog";
383
411
  FLYWHEEL_REQUIRE_UAT_BEFORE_MERGE_KEY = "flywheel.require_uat_before_merge";
384
412
  FLYWHEEL_MERGE_TRAIN_ENABLED_KEY = "flywheel.merge_train_enabled";
413
+ MERGE_TRAIN_ENABLED_KEY = "merge_train.enabled";
385
414
  BOOT_RECONCILIATION_DECISION_KEY = "boot_reconciliation.decision";
386
415
  BOOT_RECONCILIATION_PER_AGENT_KEY = "boot_reconciliation.per_agent";
387
416
  BOOT_RECONCILIATION_DECIDED_AT_KEY = "boot_reconciliation.decided_at";
388
417
  BOOT_RECONCILIATION_BOOT_ID_KEY = "boot_reconciliation.boot_id";
389
418
  BOOT_RECONCILIATION_BOOT_STARTED_AT_KEY = "boot_reconciliation.boot_started_at";
390
419
  BOOT_RECONCILIATION_GRACE_DEADLINE_KEY = "boot_reconciliation.grace_deadline";
420
+ BOOT_RECONCILIATION_GRACE_EXTENSIONS_KEY = "boot_reconciliation.grace_extensions";
391
421
  BOOT_RECONCILIATION_DECISIONS = new Set([
392
422
  "pending",
393
423
  "resume_all",
@@ -401,6 +431,6 @@ var init_control_settings = __esmMin((() => {
401
431
  })).add(HttpApiEndpoint.get("listProjects", "/projects", { success: Schema.Array(ProjectConfig) }));
402
432
  }));
403
433
  //#endregion
404
- export { setMergeTrainEnabled as C, setFlywheelRequireUatBeforeMerge as S, stampBootReconciliation as T, setDeaconGloballyPaused as _, getFlywheelActiveRunIdSync as a, setFlywheelAutoPickupBacklog as b, isCloisterSpawnsPausedSync as c, isFlywheelAutoPickupBacklog as d, isFlywheelGloballyPaused as f, setCloisterSpawnsPausedSync as g, setBootReconciliationDecision as h, getFlywheelActiveRunId as i, isDeaconGloballyPaused as l, isMergeTrainEnabled as m, FLYWHEEL_GLOBAL_PAUSE_KEY as n, getSetting as o, isFlywheelRequireUatBeforeMerge as p, getBootReconciliationState as r, init_control_settings as s, FLYWHEEL_ACTIVE_RUN_ID_KEY as t, isDeaconGloballyPausedSync as u, setDeaconGloballyPausedSync as v, setSetting as w, setFlywheelGloballyPaused as x, setFlywheelActiveRunId as y };
434
+ export { setFlywheelRequireUatBeforeMerge as C, stampBootReconciliation as E, setFlywheelGloballyPaused as S, setSetting as T, setCloisterSpawnsPausedSync as _, getFlywheelActiveRunIdSync as a, setFlywheelActiveRunId as b, isCloisterSpawnsPausedSync as c, isFlywheelAutoPickupBacklog as d, isFlywheelGloballyPaused as f, setBootReconciliationGrace as g, setBootReconciliationDecision as h, getFlywheelActiveRunId as i, isDeaconGloballyPaused as l, isMergeTrainEnabled as m, FLYWHEEL_GLOBAL_PAUSE_KEY as n, getSetting as o, isFlywheelRequireUatBeforeMerge as p, getBootReconciliationState as r, init_control_settings as s, FLYWHEEL_ACTIVE_RUN_ID_KEY as t, isDeaconGloballyPausedSync as u, setDeaconGloballyPaused as v, setMergeTrainEnabled as w, setFlywheelAutoPickupBacklog as x, setDeaconGloballyPausedSync as y };
405
435
 
406
- //# sourceMappingURL=control-settings-aP1ANIlI.js.map
436
+ //# sourceMappingURL=control-settings-C7DUehE1.js.map
@@ -1,11 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-DvyMuOle.js";
3
- import { a as init_event_store, n as getEventStore } from "./event-store-tdiY5eDZ.js";
4
- import { b as init_agents, bn as getProviderExportsForModel, tn as getAgentRuntimeBaseCommand } from "./queries-6d7Cdtm7.js";
5
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-Dhxz-wLc.js";
6
- import { t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-Du-MTNpJ.js";
7
- import { r as init_smart_compaction, t as generateSmartSummary } from "./smart-compaction-r4pHQBIr.js";
8
- import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-DHhJIsAL.js";
2
+ import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-CmOPzmBb.js";
3
+ import { a as init_event_store, n as getEventStore } from "./event-store-zY5MJHgF.js";
4
+ import { An as getProviderExportsForModel, b as init_agents, cn as getAgentRuntimeBaseCommand } from "./queries-DHJm7bTd.js";
5
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features--nFkJY8v.js";
6
+ import { t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-5aCnq1zR.js";
7
+ import { r as init_smart_compaction, t as generateSmartSummary } from "./smart-compaction-D3U_79f-.js";
8
+ import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-xiXBnWG9.js";
9
9
  import { dirname, join } from "node:path";
10
10
  import { Effect } from "effect";
11
11
  import { existsSync } from "node:fs";
@@ -179,4 +179,4 @@ var init_conversation_compaction = __esmMin((() => {
179
179
  //#endregion
180
180
  export { init_conversation_compaction as a, shouldInterceptManualCompact as c, getConversationCompactionSettings as i, compactConversationNative as n, isCompacting as o, estimateContextTokens as r, maybeCompactBeforeRespawn as s, buildCompactionRuntimeInfo as t };
181
181
 
182
- //# sourceMappingURL=conversation-compaction-CNbTLB86.js.map
182
+ //# sourceMappingURL=conversation-compaction-BoqdDXWF.js.map
@@ -1,3 +1,3 @@
1
- import { a as init_conversation_compaction, c as shouldInterceptManualCompact, i as getConversationCompactionSettings, n as compactConversationNative, o as isCompacting, r as estimateContextTokens, s as maybeCompactBeforeRespawn, t as buildCompactionRuntimeInfo } from "./conversation-compaction-CNbTLB86.js";
1
+ import { a as init_conversation_compaction, c as shouldInterceptManualCompact, i as getConversationCompactionSettings, n as compactConversationNative, o as isCompacting, r as estimateContextTokens, s as maybeCompactBeforeRespawn, t as buildCompactionRuntimeInfo } from "./conversation-compaction-BoqdDXWF.js";
2
2
  init_conversation_compaction();
3
3
  export { buildCompactionRuntimeInfo, compactConversationNative, estimateContextTokens, getConversationCompactionSettings, isCompacting, maybeCompactBeforeRespawn, shouldInterceptManualCompact };
@@ -1,12 +1,304 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Vr as init_paths, lt as resolveModelIdSync, nt as MODEL_CAPABILITIES, st as init_model_capabilities } from "./config-yaml-DvyMuOle.js";
3
- import { o as getHarnessBehavior } from "./src-U7_kTPEE.js";
4
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Ca0YTWDw.js";
5
- import { r as parseCodexSessionSync, t as init_codex_parser } from "./codex-parser-C4gSH-IR.js";
6
- import { t as init_behavior } from "./behavior-B_-4EKF3.js";
2
+ import { ci as init_paths, lt as resolveModelIdSync, nt as MODEL_CAPABILITIES, st as init_model_capabilities } from "./config-yaml-CmOPzmBb.js";
3
+ import { s as getHarnessBehavior } from "./src-CRmCHlma.js";
4
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Bgcub5kW.js";
5
+ import { r as parseCodexSessionSync, t as init_codex_parser } from "./codex-parser-DpB89Vqa.js";
6
+ import { t as init_behavior } from "./behavior-CfIg6pKp.js";
7
7
  import "node:path";
8
8
  import "node:os";
9
9
  import { open, readFile, stat, watch } from "node:fs/promises";
10
+ //#region services/acp-conversation-parser.ts
11
+ function touchParserCache(sessionFile, cache) {
12
+ parserCache.delete(sessionFile);
13
+ parserCache.set(sessionFile, cache);
14
+ while (parserCache.size > 16) {
15
+ const oldest = parserCache.keys().next().value;
16
+ if (!oldest) break;
17
+ parserCache.delete(oldest);
18
+ }
19
+ }
20
+ function truncateToolMetadata(value) {
21
+ if (!value) return void 0;
22
+ return value.length > TOOL_METADATA_MAX_CHARS ? `${value.slice(0, TOOL_METADATA_MAX_CHARS)}…` : value;
23
+ }
24
+ function isTranscriptEntry(value) {
25
+ if (!value || typeof value !== "object") return false;
26
+ const entry = value;
27
+ return typeof entry["timestamp"] === "string" && typeof entry["content"] === "string" && (entry["role"] === "user" || entry["role"] === "assistant" || entry["role"] === "tool" || entry["role"] === "system");
28
+ }
29
+ function isToolCall(value) {
30
+ return Boolean(value) && typeof value === "object" && typeof value["toolCallId"] === "string";
31
+ }
32
+ function toToolEntry(toolCall, content, createdAt, sequence) {
33
+ const label = truncateToolMetadata(toolCall.title) ?? truncateToolMetadata(toolCall.kind) ?? "Tool";
34
+ const detail = truncateToolMetadata(toolCall.detail) ?? truncateToolMetadata(content);
35
+ const command = truncateToolMetadata(toolCall.command);
36
+ const terminal = toolCall.status === "completed" || toolCall.status === "failed";
37
+ return {
38
+ id: toolCall.toolCallId,
39
+ createdAt,
40
+ label,
41
+ toolTitle: label,
42
+ tone: toolCall.status === "failed" ? "error" : "tool",
43
+ sequence,
44
+ ...command ? { command } : {},
45
+ ...detail && !terminal ? { detail } : {},
46
+ ...detail && terminal ? { result: detail } : {}
47
+ };
48
+ }
49
+ function createParserState() {
50
+ return {
51
+ messages: [],
52
+ workLog: [],
53
+ toolIndex: /* @__PURE__ */ new Map(),
54
+ pendingToolUse: /* @__PURE__ */ new Map(),
55
+ sequence: 0,
56
+ lastRole: null,
57
+ currentTurnAssistantIndex: void 0,
58
+ lastTurnCompletedAt: void 0
59
+ };
60
+ }
61
+ function processTranscriptEntry(state, entry) {
62
+ const createdAt = entry.timestamp;
63
+ if (entry.event === "prompt_queued") return;
64
+ if (entry.event === "turn_completed" || entry.event === "prompt_failed") {
65
+ state.lastTurnCompletedAt = createdAt;
66
+ if (state.currentTurnAssistantIndex !== void 0) {
67
+ const assistant = state.messages[state.currentTurnAssistantIndex];
68
+ if (assistant?.role === "assistant") state.messages[state.currentTurnAssistantIndex] = {
69
+ ...assistant,
70
+ completedAt: createdAt,
71
+ streaming: false
72
+ };
73
+ }
74
+ state.pendingToolUse.clear();
75
+ if (entry.event === "turn_completed") return;
76
+ }
77
+ if (entry.role === "assistant") {
78
+ if (!entry.content) return;
79
+ const previousIndex = state.messages.length - 1;
80
+ const previous = state.lastRole === "assistant" ? state.messages[previousIndex] : void 0;
81
+ if (previous?.role === "assistant") state.messages[previousIndex] = {
82
+ ...previous,
83
+ text: previous.text + entry.content
84
+ };
85
+ else {
86
+ state.sequence += 1;
87
+ state.messages.push({
88
+ id: `acp-assistant-${state.sequence}`,
89
+ role: "assistant",
90
+ text: entry.content,
91
+ createdAt,
92
+ streaming: false,
93
+ sequence: state.sequence
94
+ });
95
+ }
96
+ state.currentTurnAssistantIndex = state.messages.length - 1;
97
+ state.lastRole = entry.role;
98
+ return;
99
+ }
100
+ if (entry.role === "user" || entry.role === "system") {
101
+ if (entry.role === "user") {
102
+ state.currentTurnAssistantIndex = void 0;
103
+ state.lastTurnCompletedAt = void 0;
104
+ }
105
+ const text = entry.content.trim();
106
+ if (!text) return;
107
+ state.sequence += 1;
108
+ state.messages.push({
109
+ id: `acp-${entry.role}-${state.sequence}`,
110
+ role: entry.role,
111
+ text,
112
+ createdAt,
113
+ completedAt: createdAt,
114
+ streaming: false,
115
+ sequence: state.sequence
116
+ });
117
+ state.lastRole = entry.role;
118
+ return;
119
+ }
120
+ const toolCalls = Array.isArray(entry.toolCalls) ? entry.toolCalls.filter(isToolCall) : [];
121
+ for (const toolCall of toolCalls) {
122
+ const existingIndex = state.toolIndex.get(toolCall.toolCallId);
123
+ if (existingIndex === void 0) {
124
+ state.sequence += 1;
125
+ const workEntry = toToolEntry(toolCall, entry.content, createdAt, state.sequence);
126
+ state.toolIndex.set(toolCall.toolCallId, state.workLog.length);
127
+ state.workLog.push(workEntry);
128
+ } else {
129
+ const existing = state.workLog[existingIndex];
130
+ state.workLog[existingIndex] = {
131
+ ...toToolEntry(toolCall, entry.content, existing.createdAt, existing.sequence ?? 0),
132
+ id: existing.id
133
+ };
134
+ }
135
+ const current = state.workLog[state.toolIndex.get(toolCall.toolCallId)];
136
+ if (toolCall.status === "pending" || toolCall.status === "inProgress") state.pendingToolUse.set(toolCall.toolCallId, current);
137
+ else state.pendingToolUse.delete(toolCall.toolCallId);
138
+ }
139
+ state.lastRole = entry.role;
140
+ }
141
+ function processAppendedBytes(cache, appended) {
142
+ const combined = cache.pendingTail.length > 0 ? Buffer.concat([cache.pendingTail, appended]) : appended;
143
+ let lineStart = 0;
144
+ for (let index = 0; index < combined.length; index += 1) {
145
+ if (combined[index] !== 10) continue;
146
+ const line = combined.subarray(lineStart, index).toString("utf-8").trim();
147
+ lineStart = index + 1;
148
+ if (!line) continue;
149
+ try {
150
+ const parsed = JSON.parse(line);
151
+ if (isTranscriptEntry(parsed)) processTranscriptEntry(cache.state, parsed);
152
+ } catch {}
153
+ }
154
+ cache.pendingTail = Buffer.from(combined.subarray(lineStart));
155
+ }
156
+ async function readRange(path, start, length) {
157
+ if (length <= 0) return Buffer.alloc(0);
158
+ const handle = await open(path, "r");
159
+ try {
160
+ const buffer = Buffer.allocUnsafe(length);
161
+ let offset = 0;
162
+ while (offset < length) {
163
+ const result = await handle.read(buffer, offset, length - offset, start + offset);
164
+ if (result.bytesRead === 0) break;
165
+ offset += result.bytesRead;
166
+ }
167
+ return offset === length ? buffer : buffer.subarray(0, offset);
168
+ } finally {
169
+ await handle.close();
170
+ }
171
+ }
172
+ function stateIsStreaming(state, mtimeMs) {
173
+ const lastMessage = state.messages[state.messages.length - 1];
174
+ return state.lastTurnCompletedAt === void 0 && state.lastRole === "assistant" && lastMessage?.role === "assistant" && Date.now() - mtimeMs < STREAMING_RECENCY_MS;
175
+ }
176
+ function snapshotResult(cache, fileSize, mtimeMs) {
177
+ const { state } = cache;
178
+ const messages = state.messages.map((message) => ({ ...message }));
179
+ const workLog = state.workLog.map((entry) => ({ ...entry }));
180
+ cache.snapshotEntriesProjected += messages.length + workLog.length;
181
+ const workLogById = new Map(workLog.map((entry) => [entry.id, entry]));
182
+ const lastMessage = messages[messages.length - 1];
183
+ const streaming = stateIsStreaming(state, mtimeMs);
184
+ if (lastMessage?.role === "assistant" && state.lastTurnCompletedAt === void 0) messages[messages.length - 1] = streaming ? {
185
+ ...lastMessage,
186
+ streaming: true
187
+ } : {
188
+ ...lastMessage,
189
+ completedAt: lastMessage.createdAt
190
+ };
191
+ return {
192
+ messages,
193
+ workLog,
194
+ byteOffset: fileSize,
195
+ streaming,
196
+ ...state.lastTurnCompletedAt ? { lastTurnCompletedAt: state.lastTurnCompletedAt } : {},
197
+ totalCost: 0,
198
+ totalTokens: 0,
199
+ latestAssistantUsage: null,
200
+ contextBoundaryOffset: 0,
201
+ contextActiveBytes: fileSize,
202
+ pendingToolUse: new Map([...state.pendingToolUse].map(([id, entry]) => [id, workLogById.get(id) ?? { ...entry }])),
203
+ unresolvedResults: /* @__PURE__ */ new Map(),
204
+ lastSequence: state.sequence,
205
+ mtimeMs,
206
+ planToolUseIds: /* @__PURE__ */ new Set(),
207
+ compactBoundaries: [],
208
+ fileEditsByAssistantId: /* @__PURE__ */ new Map()
209
+ };
210
+ }
211
+ async function updateAcpParserCache(sessionFile) {
212
+ const fileStats = await stat(sessionFile);
213
+ const identity = `${fileStats.dev}:${fileStats.ino}`;
214
+ let cache = parserCache.get(sessionFile);
215
+ const rewrittenAtSameSize = cache && fileStats.size === cache.byteOffset && fileStats.mtimeMs !== cache.mtimeMs;
216
+ if (!cache || cache.identity !== identity || fileStats.size < cache.byteOffset || rewrittenAtSameSize) {
217
+ cache = {
218
+ state: createParserState(),
219
+ identity,
220
+ byteOffset: 0,
221
+ pendingTail: Buffer.alloc(0),
222
+ mtimeMs: fileStats.mtimeMs,
223
+ bytesRead: 0,
224
+ snapshotEntriesProjected: 0,
225
+ activityProjections: 0
226
+ };
227
+ touchParserCache(sessionFile, cache);
228
+ }
229
+ if (fileStats.size > cache.byteOffset) {
230
+ const appended = await readRange(sessionFile, cache.byteOffset, fileStats.size - cache.byteOffset);
231
+ processAppendedBytes(cache, appended);
232
+ cache.byteOffset += appended.length;
233
+ cache.bytesRead += appended.length;
234
+ }
235
+ cache.mtimeMs = fileStats.mtimeMs;
236
+ touchParserCache(sessionFile, cache);
237
+ return {
238
+ cache,
239
+ fileSize: fileStats.size,
240
+ mtimeMs: fileStats.mtimeMs
241
+ };
242
+ }
243
+ async function withParserQueue(sessionFile, operation) {
244
+ const previous = parserQueue.get(sessionFile) ?? Promise.resolve();
245
+ let result;
246
+ const queued = previous.then(async () => {
247
+ result = await operation();
248
+ });
249
+ const settled = queued.then(() => void 0, () => void 0);
250
+ parserQueue.set(sessionFile, settled);
251
+ try {
252
+ await queued;
253
+ return result;
254
+ } finally {
255
+ if (parserQueue.get(sessionFile) === settled) parserQueue.delete(sessionFile);
256
+ }
257
+ }
258
+ /**
259
+ * Incrementally parse the append-only ACP transcript into the full snapshot
260
+ * requested by the stopped-agent conversation endpoint. Parser state is shared
261
+ * by file path, so callers read and decode each appended byte only once.
262
+ */
263
+ async function parseAcpConversationMessages(sessionFile) {
264
+ return withParserQueue(sessionFile, async () => {
265
+ const { cache, fileSize, mtimeMs } = await updateAcpParserCache(sessionFile);
266
+ return snapshotResult(cache, fileSize, mtimeMs);
267
+ });
268
+ }
269
+ /**
270
+ * Project only the tail state needed by live activity enrichment. This avoids
271
+ * rebuilding a full message/work-log snapshot on every transcript append.
272
+ */
273
+ async function projectAcpConversationActivity(sessionFile) {
274
+ return withParserQueue(sessionFile, async () => {
275
+ const { cache, mtimeMs } = await updateAcpParserCache(sessionFile);
276
+ const { state } = cache;
277
+ cache.activityProjections += 1;
278
+ let currentTool = null;
279
+ let maxSequence = -1;
280
+ for (const entry of state.pendingToolUse.values()) if (entry.toolTitle && (entry.sequence ?? -1) > maxSequence) {
281
+ maxSequence = entry.sequence ?? -1;
282
+ currentTool = entry.toolTitle;
283
+ }
284
+ return {
285
+ messages: state.messages,
286
+ streaming: stateIsStreaming(state, mtimeMs),
287
+ lastTurnCompletedAt: state.lastTurnCompletedAt,
288
+ pendingToolCount: state.pendingToolUse.size,
289
+ currentTool,
290
+ mtimeMs
291
+ };
292
+ });
293
+ }
294
+ var TOOL_METADATA_MAX_CHARS, STREAMING_RECENCY_MS, parserCache, parserQueue;
295
+ var init_acp_conversation_parser = __esmMin((() => {
296
+ TOOL_METADATA_MAX_CHARS = 500;
297
+ STREAMING_RECENCY_MS = 3e4;
298
+ parserCache = /* @__PURE__ */ new Map();
299
+ parserQueue = /* @__PURE__ */ new Map();
300
+ }));
301
+ //#endregion
10
302
  //#region services/codex-conversation-parser.ts
11
303
  /**
12
304
  * OpenAI Codex → chat panel adapter (PAN-1520).
@@ -1439,19 +1731,45 @@ var init_parser = __esmMin((() => {
1439
1731
  }));
1440
1732
  //#endregion
1441
1733
  //#region services/conversation/activity-summary.ts
1734
+ function cacheActivitySummary(cacheKey, mtimeMs, size, summary) {
1735
+ activitySummaryCache.set(cacheKey, {
1736
+ mtimeMs,
1737
+ size,
1738
+ summary
1739
+ });
1740
+ if (activitySummaryCache.size > ACTIVITY_SUMMARY_CACHE_MAX) {
1741
+ const firstKey = activitySummaryCache.keys().next().value;
1742
+ if (firstKey !== void 0) activitySummaryCache.delete(firstKey);
1743
+ }
1744
+ return summary;
1745
+ }
1442
1746
  async function summarizeConversationActivity(sessionFile, options = {}) {
1443
1747
  const fileStats = await stat(sessionFile);
1444
1748
  const cacheKey = `${options.harness ?? "claude-code"}:${sessionFile}`;
1445
1749
  const behavior = getHarnessBehavior(options.harness);
1446
1750
  const cached = activitySummaryCache.get(cacheKey);
1447
1751
  if (cached && cached.mtimeMs === fileStats.mtimeMs && cached.size === fileStats.size) return cached.summary;
1448
- const { messages, streaming, pendingToolUse, workLog, mtimeMs } = behavior.transcriptKind === "codex-rollout-jsonl" ? await parseCodexConversationMessages(sessionFile) : behavior.transcriptKind === "ohmypi-jsonl" || isOhmypiSessionFile(sessionFile) ? await parseOhmypiConversationMessages(sessionFile) : isPiSessionFile(sessionFile) ? await parsePiConversationMessages(sessionFile) : await parseFromLastCompactBoundary(sessionFile, {
1752
+ if (behavior.transcriptKind === "acp-jsonl") {
1753
+ const projected = await projectAcpConversationActivity(sessionFile);
1754
+ const workingFileRecent = Date.now() - projected.mtimeMs < WORKING_STALENESS_MS;
1755
+ const lastMsg = projected.messages[projected.messages.length - 1];
1756
+ const isWorking = workingFileRecent && !projected.lastTurnCompletedAt && (projected.streaming || projected.pendingToolCount > 0 || projected.messages.length === 0 || lastMsg?.role === "user" || lastMsg?.role === "assistant" && !lastMsg.completedAt);
1757
+ const fileRecent = Date.now() - projected.mtimeMs < 3e4;
1758
+ const summary = {
1759
+ messages: projected.messages,
1760
+ streaming: projected.streaming,
1761
+ isWorking,
1762
+ currentTool: fileRecent ? projected.currentTool : null
1763
+ };
1764
+ return cacheActivitySummary(cacheKey, fileStats.mtimeMs, fileStats.size, summary);
1765
+ }
1766
+ const { messages, streaming, lastTurnCompletedAt, pendingToolUse, workLog, mtimeMs } = behavior.transcriptKind === "codex-rollout-jsonl" ? await parseCodexConversationMessages(sessionFile) : behavior.transcriptKind === "ohmypi-jsonl" || isOhmypiSessionFile(sessionFile) ? await parseOhmypiConversationMessages(sessionFile) : isPiSessionFile(sessionFile) ? await parsePiConversationMessages(sessionFile) : await parseFromLastCompactBoundary(sessionFile, {
1449
1767
  pendingToolUse: /* @__PURE__ */ new Map(),
1450
1768
  unresolvedResults: /* @__PURE__ */ new Map(),
1451
1769
  lastSequence: 0
1452
1770
  });
1453
1771
  const lastMsg = messages[messages.length - 1];
1454
- const isWorking = Date.now() - mtimeMs < WORKING_STALENESS_MS && (messages.length === 0 || lastMsg?.role === "user" || lastMsg?.role === "assistant" && !lastMsg.completedAt);
1772
+ const isWorking = Date.now() - mtimeMs < WORKING_STALENESS_MS && !lastTurnCompletedAt && (streaming || pendingToolUse.size > 0 || messages.length === 0 || lastMsg?.role === "user" || lastMsg?.role === "assistant" && !lastMsg.completedAt);
1455
1773
  const fileRecent = Date.now() - mtimeMs < 3e4;
1456
1774
  let currentTool = null;
1457
1775
  if (fileRecent) {
@@ -1473,20 +1791,12 @@ async function summarizeConversationActivity(sessionFile, options = {}) {
1473
1791
  isWorking,
1474
1792
  currentTool
1475
1793
  };
1476
- activitySummaryCache.set(cacheKey, {
1477
- mtimeMs,
1478
- size: fileStats.size,
1479
- summary
1480
- });
1481
- if (activitySummaryCache.size > ACTIVITY_SUMMARY_CACHE_MAX) {
1482
- const firstKey = activitySummaryCache.keys().next().value;
1483
- if (firstKey !== void 0) activitySummaryCache.delete(firstKey);
1484
- }
1485
- return summary;
1794
+ return cacheActivitySummary(cacheKey, mtimeMs, fileStats.size, summary);
1486
1795
  }
1487
1796
  var WORKING_STALENESS_MS, ACTIVITY_SUMMARY_CACHE_MAX, activitySummaryCache;
1488
1797
  var init_activity_summary = __esmMin((() => {
1489
1798
  init_behavior();
1799
+ init_acp_conversation_parser();
1490
1800
  init_codex_conversation_parser();
1491
1801
  init_ohmypi_conversation_parser();
1492
1802
  init_pi_conversation_parser();
@@ -1534,7 +1844,8 @@ function buildContextUsage(capability, activeBytes, usageSummary) {
1534
1844
  percentUsed: 0
1535
1845
  };
1536
1846
  const liveContextTokens = usageSummary.lastInputTokens + usageSummary.lastCacheReadTokens + usageSummary.lastCacheCreationTokens;
1537
- const effectiveContextWindow = Math.max(usageSummary.maxObservedInputTokens, liveContextTokens) > capability.contextWindow ? Math.max(1e6, capability.contextWindow) : capability.contextWindow;
1847
+ const observedCeiling = Math.max(usageSummary.maxObservedInputTokens, liveContextTokens);
1848
+ const effectiveContextWindow = capability.provider === "anthropic" && observedCeiling > capability.contextWindow ? Math.max(1e6, capability.contextWindow) : capability.contextWindow;
1538
1849
  return {
1539
1850
  activeBytes,
1540
1851
  estimatedTokens: liveContextTokens,
@@ -1749,6 +2060,6 @@ var init_conversation_service = __esmMin((() => {
1749
2060
  init_watch();
1750
2061
  }));
1751
2062
  //#endregion
1752
- export { init_codex_conversation_parser as _, contextUsageFromParseResult as a, parseEntireConversation as c, init_pi_conversation_parser as d, isPiSessionFile as f, parseOhmypiConversationMessages as g, isOhmypiSessionFile as h, computeContextUsage as i, parseFromLastCompactBoundary as l, init_ohmypi_conversation_parser as m, gateSnapshotEmission as n, summarizeConversationActivity as o, parsePiConversationMessages as p, watchConversation as r, parseConversationMessages as s, init_conversation_service as t, findLastCompactBoundary as u, parseCodexConversationMessages as v };
2063
+ export { init_codex_conversation_parser as _, contextUsageFromParseResult as a, parseAcpConversationMessages as b, parseEntireConversation as c, init_pi_conversation_parser as d, isPiSessionFile as f, parseOhmypiConversationMessages as g, isOhmypiSessionFile as h, computeContextUsage as i, parseFromLastCompactBoundary as l, init_ohmypi_conversation_parser as m, gateSnapshotEmission as n, summarizeConversationActivity as o, parsePiConversationMessages as p, watchConversation as r, parseConversationMessages as s, init_conversation_service as t, findLastCompactBoundary as u, parseCodexConversationMessages as v, init_acp_conversation_parser as y };
1753
2064
 
1754
- //# sourceMappingURL=conversation-service-Du-MTNpJ.js.map
2065
+ //# sourceMappingURL=conversation-service-5aCnq1zR.js.map
@@ -0,0 +1,3 @@
1
+ import { i as computeContextUsage, t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-5aCnq1zR.js";
2
+ init_conversation_service();
3
+ export { computeContextUsage, findLastCompactBoundary };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DvyMuOle.js";
3
- import { T as isNull, _ as integer, a as EventBus, b as and, d as getOverdeckDatabaseSync, f as init_infra, g as real, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, w as isNotNull, x as eq } from "./infra-CzaSOgul.js";
4
- import { a as init_event_store, n as getEventStore } from "./event-store-tdiY5eDZ.js";
2
+ import { ci as init_paths, si as getOverdeckHome } from "./config-yaml-CmOPzmBb.js";
3
+ import { T as isNull, _ as integer, a as EventBus, b as and, d as getOverdeckDatabaseSync, f as init_infra, g as real, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, w as isNotNull, x as eq } from "./infra-BjuxvjdS.js";
4
+ import { a as init_event_store, n as getEventStore } from "./event-store-zY5MJHgF.js";
5
5
  import { join } from "node:path";
6
6
  import { Context, Effect, Layer, Schema, Stream } from "effect";
7
7
  import { readFileSync } from "node:fs";
@@ -672,7 +672,7 @@ function toMillis(value = /* @__PURE__ */ new Date()) {
672
672
  /** Map a raw DB harness string to a canonical RuntimeName, normalizing legacy 'pi' to 'ohmypi' on read. */
673
673
  function normalizeHarness(harness) {
674
674
  if (harness === "pi" || harness === "ohmypi") return "ohmypi";
675
- if (harness === "claude-code" || harness === "codex") return harness;
675
+ if (harness === "claude-code" || harness === "codex" || harness === "acp") return harness;
676
676
  return null;
677
677
  }
678
678
  function legacyRowIdForConversationId(id) {
@@ -1585,4 +1585,4 @@ var init_conversations = __esmMin((() => {
1585
1585
  //#endregion
1586
1586
  export { updateConversationForkFallbackReason as $, isAgentConversationName as A, removeFavorite as B, getConversationByTmuxSession as C, searchFtsSessions as Ct, importLegacyConversation as D, hasOtherActiveConversationOnTmuxSession as E, upsertDiscoveredSession as Et, markConversationEnded as F, setConversationHarness as G, setClearedToConvId as H, markConversationRunning as I, setForkRequest as J, setConversationModel as K, normalizeHarness as L, listConversations as M, listFavoritedIds as N, incrementForkRetryCount as O, markConversationActive as P, updateConversationDeliveryMethod as Q, reactivateConversationForSpawn as R, getConversationByName as S, markEnrichmentFailed as St, getStuckForks as T, updateEnrichment as Tt, setConversationClaudeSessionId as U, resolveLiveSessionId as V, setConversationEffort as W, unarchiveConversation as X, setImportedConversationLinks as Y, updateConversationCost as Z, canRefineTitle as _, getDiscoveredStats as _t, ConversationName as a, aggregateDiscoveredSessionCost as at, getConversationByClaudeSessionId as b, insertEmbedding as bt, ConversationsResolver as c, countDiscoveredSessions as ct, TitleSource as d, findDiscoveredSessionIds as dt, updateConversationTitle as et, Transcript as f, findDiscoveredSessions as ft, backfillConversationModel as g, getDiscoveredSessionBySessionId as gt, archiveConversation as h, getDiscoveredSessionByJsonlPath as ht, ConversationId as i, findConversationForCostSessionSync as it, listArchivedConversationsWithEnrichment as j, init_conversations as k, Harness as l, countFtsSessions as lt, TranscriptsWriter as m, getDiscoveredSessionById as mt, BackingFile as n, updateLastAttached as nt, ConversationNotFound as o, aggregateDiscoveredSessionCostBy as ot, TranscriptsResolver as p, findEnrichedSessionIdsMissingEmbedding as pt, setFavorite as q, Conversation as r, updateSpawnError as rt, ConversationWriter as s, buildFilterSql as st, AlreadyArchived as t, updateForkStatus as tt, NotArchived as u, ensureDiscoveredSessionsSchema as ut, canReplaceTitle as v, getEmbedding as vt, getConversationLedgerCosts as w, topKCosine as wt, getConversationById as x, loadEmbeddings as xt, createConversation as y, init_discovered_sessions as yt, recordConversationHandoff as z };
1587
1587
 
1588
- //# sourceMappingURL=conversations-DbOs1e9Q.js.map
1588
+ //# sourceMappingURL=conversations-BUpYsOZg.js.map