@overdeck/desktop 0.49.1 → 0.50.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 (545) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-B_maCGZv.js} +2 -2
  4. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-CCqpFWiz.js} +2 -2
  5. package/server/activity-logger-B0X2JJwM.js +3 -0
  6. package/server/{activity-logger-BAVLrkR7.js → activity-logger-SlTXYCVf.js} +22 -4
  7. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-BJAfiY-C.js} +12 -7
  8. package/server/{agent-gc-5E0lgxI1.js → agent-gc-bhikjoJ_.js} +11 -11
  9. package/server/agent-idle-D-UQ7gDv.js +745 -0
  10. package/server/agent-state-BrUPf_7Z.js +3 -0
  11. package/server/{agent-state-Bb3UUxQm.js → agent-state-FABw8neJ.js} +682 -454
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-BAQApt97.js} +1 -1
  13. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-rDenYSlD.js} +5 -5
  14. package/server/agents-DixZjXWm.js +3 -0
  15. package/server/{agents-CqQJW75N.js → agents-DzpQidT8.js} +8 -8
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-BL1ABtW0.js} +20 -135
  17. package/server/archive-planning-D3gw32U9.js +2 -0
  18. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Cjdme0jS.js} +3 -3
  19. package/server/{assemble-DyTp2gSB.js → assemble-B_JgnCbG.js} +28 -9
  20. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-BesWchEi.js} +8 -7
  21. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-COLq639j.js} +3 -3
  22. package/server/{behavior-Bitko0mD.js → behavior-DCg8CIWC.js} +3 -3
  23. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-BDohuMRt.js} +2 -2
  24. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-ENa_hW_V.js} +2 -2
  25. package/server/build-info-Dx2qrVhb.js +2 -0
  26. package/server/{build-info-DTX8JwVP.js → build-info-WuZT6xyi.js} +3 -3
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-CSZ7aVQF.js} +26 -9
  28. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-DXhGRvg4.js} +1 -1
  29. package/server/checkpoint-worker.js +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-DUkUsPVS.js} +2 -2
  31. package/server/{checkpoints-DRALkfDS.js → checkpoints-tm_w6Y4V.js} +1 -1
  32. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-CTh9zxEi.js} +1 -1
  33. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-fRofvhTN.js} +2 -2
  34. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-DLrb9ovz.js} +18 -3
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-BYnXaTVc.js} +2 -2
  36. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-CMS5Jab5.js} +1 -1
  37. package/server/cli-BflmtEFM.js +2 -0
  38. package/server/{cli-Do8UpLoI.js → cli-CoQou1t_.js} +11 -11
  39. package/server/{cliproxy-CX6jHRDP.js → cliproxy-DXDQcR3I.js} +52 -17
  40. package/server/cliproxy-DdhFpcXU.js +3 -0
  41. package/server/{close-issue-J0_eWYT1.js → close-issue-CpQ0BWg-.js} +5 -5
  42. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-CdcJRvUx.js} +13 -12
  43. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-TymtZM37.js} +1 -1
  44. package/server/{codex-icapA4om.js → codex-BValsmtK.js} +1 -1
  45. package/server/{codex-OOea7lXs.js → codex-DYyZL8JD.js} +16 -10
  46. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-CVjbdGKt.js} +3 -3
  47. package/server/{config-Cjleh3_U.js → config-CvKH7r7W.js} +1 -1
  48. package/server/{config-tucKBCCc.js → config-NxI9Yl2f.js} +2 -2
  49. package/server/{config-DC75T4Mr.js → config-_qaa1UXH.js} +2 -2
  50. package/server/{config-yaml-BwOEANMr.js → config-yaml-D60AnTIu.js} +55 -15
  51. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-0dD1kxjN.js} +1 -1
  52. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-hAUCL-un.js} +5 -5
  53. package/server/{context-layers-CSPGc2Hb.js → context-layers-CdpabJj0.js} +3 -3
  54. package/server/context-layers-Ds1MnEFI.js +4 -0
  55. package/server/{continue-U3Af0jUq.js → continue-CnvrUfxw.js} +3 -3
  56. package/server/{control-settings-5k6ixdFW.js → control-settings-Db0uXgVM.js} +310 -7
  57. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-B-1KETG9.js} +8 -8
  58. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzMXGRiJ.js} +1 -1
  59. package/server/{conversation-service-BxrB5lUT.js → conversation-service-BL-asWPX.js} +1 -1
  60. package/server/{conversation-service-BteE4ELK.js → conversation-service-BxIOd5ay.js} +21 -7
  61. package/server/conversations-CEMfwMt-.js +3 -0
  62. package/server/{conversations-DhwxsOru.js → conversations-nS6QgYpD.js} +12 -7
  63. package/server/cost-3FyqKK56.js +838 -0
  64. package/server/{cost-Bnf9NUC5.js → cost-Cctc-Q9M.js} +3 -3
  65. package/server/{cost-CQKI6OCu.js → cost-DTuIRE4y.js} +2 -2
  66. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DfmvLT9L.js} +3 -3
  67. package/server/{dag-DI9LaK_q.js → dag-o-dUpw1L.js} +6 -19
  68. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
  69. package/server/dashboard-db-worker.js +61 -11
  70. package/server/{deacon-TPYssFYt.js → deacon-CsisLmPt.js} +1735 -172
  71. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-DkdkQS5p.js} +3 -3
  72. package/server/deacon-e6py3jkM.js +4 -0
  73. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BCjHiGAY.js} +1 -1
  74. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-CMQswEHX.js} +2 -2
  75. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
  76. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BzaE76Xo.js} +3 -3
  77. package/server/deacon.js +11 -11
  78. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-Bs3hxIn6.js} +3 -3
  79. package/server/dead-end-trip-DUbiRMtT.js +2 -0
  80. package/server/delivery-DhZGRShH.js +3 -0
  81. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-B8sKkA8h.js} +8 -8
  82. package/server/deploy-queue--smqHLhe.js +2 -0
  83. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-CCGWXFkp.js} +2 -2
  84. package/server/{deploy-window-CNT6fOff.js → deploy-window-YuJewzmC.js} +4 -4
  85. package/server/{deploy-window-BMk5_oX6.js → deploy-window-hgsvZ3UZ.js} +1 -1
  86. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-4SBloJHV.js} +2 -2
  87. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-BiJhwFNi.js} +3 -3
  88. package/server/{dist-CPTO_zMR.js → dist-CoR2sivG.js} +1 -1
  89. package/server/dist-FHv1s5ez.js +3 -0
  90. package/server/{docker-B7qUZptz.js → docker-CWO7dcIP.js} +3 -3
  91. package/server/{docker-KR3zSFKY.js → docker-DQzyMXkd.js} +1 -1
  92. package/server/{dod-gK835UMf.js → dod-BAk5arLF.js} +1 -1
  93. package/server/{done-preflight-CksRvh49.js → done-preflight-CGFA0M1b.js} +1 -1
  94. package/server/{done-preflight-Bk8aExAL.js → done-preflight-Cx9JGznT.js} +5 -5
  95. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  96. package/server/durable-review-pipeline-BOEZ0chh.js +3 -0
  97. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-Djx_lvFd.js} +11 -2
  98. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-Dk6ZMOUC.js} +1 -1
  99. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-DzYBBwnM.js} +4 -4
  100. package/server/{esm-shims-1htPASWs.js → esm-shims-deFq5Hhl.js} +1 -1
  101. package/server/{event-store-BgEjNsvk.js → event-store-C50Qt-f1.js} +1 -1
  102. package/server/{event-store-D7qcJXuZ.js → event-store-DTns2XZP.js} +5 -5
  103. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-Bu1Qrg6v.js} +1 -1
  104. package/server/{events-BIKGJZOT.js → events-B6xW8Cpm.js} +3 -3
  105. package/server/{dist-src-BM9eudEd.js → factory-CWVKwKFE.js} +714 -2
  106. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-vaxRN3WO.js} +3 -3
  107. package/server/{features-CGopJXdU.js → features-DXWwktJB.js} +2 -2
  108. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-CXAYe2rU.js} +2 -2
  109. package/server/{feedback-target-CkyLYohm.js → feedback-target-DSVpi0gT.js} +1 -1
  110. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-yPD_wclF.js} +10 -10
  111. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-BzN4qvaP.js} +1 -1
  112. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-Ds1Wjsz4.js} +5 -5
  113. package/server/{flywheel-DXI_WITn.js → flywheel-BCZS-FlW.js} +1 -1
  114. package/server/{flywheel-BwYPDlhK.js → flywheel-CC4gE_rx.js} +15 -15
  115. package/server/{flywheel-C7yek87O.js → flywheel-DWKd7bMc.js} +79 -29
  116. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-DDT3i57u.js} +1 -1
  117. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-DJwH2KpL.js} +17 -15
  118. package/server/forge-4VVCRcF7.js +2 -0
  119. package/server/{forge-DYX9sKzG.js → forge-CHADjOFs.js} +2 -2
  120. package/server/{from-DAdMxC29.js → from-C3dzmjSO.js} +1 -1
  121. package/server/{fs-lock-cw25uO_E.js → fs-lock-DQ_gUxfq.js} +2 -2
  122. package/server/{fts-operations-D_rzLxX5.js → fts-operations-asZo2fh1.js} +3 -3
  123. package/server/git-info-DMOSfJ9I.js +148 -0
  124. package/server/{git-utils-Y0zG25ez.js → git-utils-BAMwn9Nf.js} +1 -1
  125. package/server/{git-utils-DV4B9TRl.js → git-utils-BdHk8y7g.js} +4 -4
  126. package/server/{github-app-C33lDk9Z.js → github-app-BWziYCf3.js} +1 -1
  127. package/server/{github-app-4UX8VIr8.js → github-app-BlMSzSTw.js} +2 -2
  128. package/server/{github-client-nPj5ckZO.js → github-client-OK24qpol.js} +1 -1
  129. package/server/{github-client-DkJVR908.js → github-client-w6j5nVlz.js} +3 -3
  130. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-bGcsEvLE.js} +2 -2
  131. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-DChiynaB.js} +2 -2
  132. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-BplBEbwn.js} +4 -4
  133. package/server/{health-events-jMfxrElt.js → health-events-BTqsmunw.js} +1 -1
  134. package/server/{health-events-DlX_FVAB.js → health-events-Bk3LjaJ9.js} +2 -2
  135. package/server/{hooks-NQ19vvlB.js → hooks-DJR1yR9w.js} +2 -2
  136. package/server/{hooks-W3REcb3h.js → hooks-EndRNrx9.js} +1 -1
  137. package/server/{hume-BFkid2PO.js → hume-1FJmNDTq.js} +2 -2
  138. package/server/hume-gXLmRhmN.js +3 -0
  139. package/server/{identity-Bwh6VGeL.js → identity-C3s8lyp0.js} +3 -3
  140. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-CBelVOE3.js} +1 -1
  141. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-DtoI4al6.js} +4 -4
  142. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-B7khcBdQ.js} +1 -1
  143. package/server/{infra-KTp9KV9u.js → infra-CJRi_5Wu.js} +36 -7
  144. package/server/{injection-67YyU6SC.js → injection-ADWQ3D0s.js} +8 -8
  145. package/server/{injection-BxbZKPDh.js → injection-BWsgHvrL.js} +1 -1
  146. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-CCfNJjKr.js} +12 -12
  147. package/server/inspect-agent-Dhp3hCGp.js +2 -0
  148. package/server/{internal-token-B-z-sGBH.js → internal-token-BCTEqUCX.js} +1 -1
  149. package/server/{internal-token-zY75jrRJ.js → internal-token-BeIWG_kT.js} +2 -2
  150. package/server/{io-DfvO2xyh.js → io-BCtZoXHo.js} +5 -5
  151. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-CiYAa6bX.js} +7 -7
  152. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-BETNVVLq.js} +206 -29
  153. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DaKN57sx.js} +1 -1
  154. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-1Q0ER8Yc.js} +1 -1
  155. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-C_sZ0HjP.js} +124 -11
  156. package/server/issue-title-fallback-B91iD66g.js +120 -0
  157. package/server/{issues-CkvUoAnq.js → issues-RGHQUKhB.js} +2 -2
  158. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-Dfs1dlYE.js} +3 -3
  159. package/server/jsonl-resolver-bFtftCDd.js +324 -0
  160. package/server/{kimi-code-DoMoGqIu.js → kimi-code-BxkDgaj4.js} +1 -1
  161. package/server/{kimi-code-C26gmGxM.js → kimi-code-CNYRA8Dd.js} +14 -12
  162. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-OcWwmOqF.js} +2 -2
  163. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-CefxK9tL.js} +3 -3
  164. package/server/{lifecycle-B0rL38D3.js → lifecycle-DDZ7w-BY.js} +6 -6
  165. package/server/{lifecycle-Bg44O-9x.js → lifecycle-DVXyUil2.js} +2 -2
  166. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-D1oBiMce.js} +1 -1
  167. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-D7N0vQNj.js} +5 -5
  168. package/server/{linear-client-B0cIkTs4.js → linear-client-DUN7zCeb.js} +3 -3
  169. package/server/{linear-client-6V2E-DSa.js → linear-client-TL32snOy.js} +1 -1
  170. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-CtRKSHy5.js} +1 -1
  171. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-bB0CPyjh.js} +5 -5
  172. package/server/memory-fts-worker.js +1 -1
  173. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cvv_9K0M.js} +88 -22
  174. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-C6DJJQRA.js} +38 -14
  175. package/server/{merge-BGWcBxku.js → merge-DOCR6pHi.js} +1 -1
  176. package/server/{merge-vz80RvSE.js → merge-FTk4LsnM.js} +3 -3
  177. package/server/{merge-agent-GWhmnxFk.js → merge-agent-C-dsN9se.js} +37 -33
  178. package/server/{merge-agent-BRSz26Oh.js → merge-agent-D-4_iQgy.js} +2 -2
  179. package/server/{merge-batch-CFMEtTxv.js → merge-batch-BJjzUUL7.js} +1 -1
  180. package/server/{merge-completeness-CP347umA.js → merge-completeness-BOtBUwTU.js} +4 -4
  181. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-CoLJxfUY.js} +1 -1
  182. package/server/merge-eligibility-C4rTS97F.js +3 -0
  183. package/server/merge-eligibility-D7wRnJbj.js +51 -0
  184. package/server/merge-ops-Cf02szJ5.js +2 -0
  185. package/server/merge-rebase-Bj7eJAG4.js +2 -0
  186. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-KBw4rdh3.js} +2 -2
  187. package/server/{merge-set-DsGW8fmc.js → merge-set-CVfEM57p.js} +1 -1
  188. package/server/{merge-set-eiE2nC6C.js → merge-set-CyW-xSn4.js} +4 -4
  189. package/server/{merge-sync-CM2-myXu.js → merge-sync-CYGsJy0u.js} +1 -1
  190. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-YLvOPAry.js} +2 -2
  191. package/server/{merge-train-BOu3fN7O.js → merge-train-VxLn8Ms4.js} +4 -4
  192. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-D0y4hBB9.js} +4 -4
  193. package/server/{merge-verification-BRp08IzI.js → merge-verification-BfJRNMiD.js} +6 -6
  194. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-Bh5fKG_b.js} +4 -4
  195. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-Ci9oeFAe.js} +1 -1
  196. package/server/messaging-Dfbhgjd6.js +3 -0
  197. package/server/{multipart-parser-OAuW7824.js → multipart-parser-BYwfKOVU.js} +2 -2
  198. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-DjMQRkId.js} +1 -1
  199. package/server/node_modules/.package-lock.json +24 -24
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +31 -5
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  226. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  227. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  228. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  229. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  230. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  231. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +7 -7
  232. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  233. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
  234. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
  235. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  236. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  237. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  238. package/server/node_modules/@types/node/README.md +1 -1
  239. package/server/node_modules/@types/node/buffer.buffer.d.ts +5 -5
  240. package/server/node_modules/@types/node/crypto.d.ts +2 -2
  241. package/server/node_modules/@types/node/http.d.ts +16 -0
  242. package/server/node_modules/@types/node/http2.d.ts +10 -2
  243. package/server/node_modules/@types/node/package.json +2 -2
  244. package/server/node_modules/@types/node/process.d.ts +52 -0
  245. package/server/node_modules/@types/node/quic.d.ts +210 -28
  246. package/server/node_modules/@types/node/sqlite.d.ts +6 -2
  247. package/server/node_modules/@types/node/test.d.ts +36 -0
  248. package/server/node_modules/ansi-regex/index.js +3 -2
  249. package/server/node_modules/ansi-regex/package.json +1 -1
  250. package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
  251. package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
  252. package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
  253. package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
  254. package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
  255. package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
  256. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  257. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  258. package/server/node_modules/gaxios/package.json +3 -3
  259. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +11 -5
  260. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  261. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  262. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  263. package/server/node_modules/msgpackr/dist/index.js +11 -5
  264. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  265. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  266. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  267. package/server/node_modules/msgpackr/dist/node.cjs +11 -5
  268. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  269. package/server/node_modules/msgpackr/dist/test.js +11 -5
  270. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  271. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
  272. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  273. package/server/node_modules/msgpackr/package.json +1 -1
  274. package/server/node_modules/msgpackr/unpack.js +11 -5
  275. package/server/node_modules/picomatch/lib/parse.js +10 -1
  276. package/server/node_modules/picomatch/lib/scan.js +30 -18
  277. package/server/node_modules/picomatch/package.json +1 -1
  278. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-CnP0K2v3.js} +2 -2
  279. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-nFUlquZt.js} +24 -23
  280. package/server/package-lock.json +25 -25
  281. package/server/package.json +1 -1
  282. package/server/{pan-dir-DDd91kMb.js → pan-dir-B4NfzOf3.js} +5 -5
  283. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-8WbU0y1z.js} +188 -69
  284. package/server/{paths-CRLnDgcI.js → paths-rETQhTF2.js} +2 -2
  285. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-yAwDuGS4.js} +2 -2
  286. package/server/{pickup-BjJsSX12.js → pickup-Dle6k9Xt.js} +1 -1
  287. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-CeWhQzXC.js} +5 -5
  288. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-BV4hdkHm.js} +1 -1
  289. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-C9ykcjsn.js} +1 -1
  290. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-Ba0wJNCR.js} +17 -12
  291. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-C9E22B2W.js} +1 -1
  292. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-B5DPXvnr.js} +1 -1
  293. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-p190L97e.js} +2 -2
  294. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-OQoK8Ckg.js} +3 -3
  295. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DFaf7OI1.js} +4 -4
  296. package/server/prd-locations-F2oLSAhy.js +124 -0
  297. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-CUsa6U59.js} +2 -2
  298. package/server/project-repos-BVdi9-ch.js +3 -0
  299. package/server/{project-repos-B4MK48j4.js → project-repos-CsfvLtmr.js} +29 -3
  300. package/server/project-resource-refresh-queue-BehrH4Ai.js +865 -0
  301. package/server/project-resource-refresh-queue-D2110Guc.js +2 -0
  302. package/server/{projects-DvPEAP18.js → projects-BMuEf14J.js} +1 -1
  303. package/server/{prompts-BiS5I2tZ.js → prompts-CKpDt8Jn.js} +2 -2
  304. package/server/providers-Buv2wmFU.js +3 -0
  305. package/server/{providers-DrfK0Ip8.js → providers-CxPKmyif.js} +7 -7
  306. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-DZOQVqV1.js} +4 -4
  307. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-oKeXcbO1.js} +1 -1
  308. package/server/public/assets/{dist-CSmUXazd.js → dist-2qPmeRzT.js} +3 -3
  309. package/server/public/assets/{dist-D0ryefak.js → dist-ClBlE-Nm.js} +1 -1
  310. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-BwdG9fQv.js} +1 -1
  311. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-BzGNdskQ.js} +1 -1
  312. package/server/public/assets/index-CdPveU3M.css +1 -0
  313. package/server/public/assets/index-Cg6tdZoY.js +860 -0
  314. package/server/public/assets/{linear-BPE7oswm.js → linear-DpEt1TJb.js} +1 -1
  315. package/server/public/assets/mermaid-GHXKKRXX-6KBD_3T_.js +1 -0
  316. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-9BpM4oRJ.js} +1 -1
  317. package/server/public/assets/{prod-aKDYUrXQ.js → prod-CzJiNNEG.js} +4 -4
  318. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BXWVAoZx.js} +1 -1
  319. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-5oxodGEw.js} +1 -1
  320. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-BChDrHxZ.js} +1 -1
  321. package/server/public/index.html +2 -2
  322. package/server/pull-requests-CmlandI7.js +2 -0
  323. package/server/{pull-requests-BcHIsFJv.js → pull-requests-T0OV0Vn4.js} +3 -3
  324. package/server/{rally-B1OMtzch.js → rally-CUqj2oIN.js} +3 -3
  325. package/server/rally-DYIn9R2U.js +3 -0
  326. package/server/{rally-api-ShZ4kvn0.js → rally-api-BFPb2oSq.js} +2 -2
  327. package/server/{rally-api-u_vkr5c_.js → rally-api-BoucQG1u.js} +1 -1
  328. package/server/{rally-client-D6Feq1Ka.js → rally-client-16iObny7.js} +5 -5
  329. package/server/{rally-client-DgZvUZqX.js → rally-client-CsqLjLLa.js} +1 -1
  330. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  331. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  332. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-BcBVFJp3.js} +2 -2
  333. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-CyXMrj6K.js} +7 -7
  334. package/server/reconciler-caYiRnPy.js +657 -0
  335. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-3JzPOune.js} +7 -7
  336. package/server/{record-By-wp6pg.js → record-DYOg97Iv.js} +1 -1
  337. package/server/{record-update-D23jPU6b.js → record-update-BPqpBu3O.js} +9 -7
  338. package/server/{record-update-ByGtIlUK.js → record-update-CDPEX7BH.js} +1 -1
  339. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-CpfW6LCJ.js} +43 -10
  340. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-xqKC07Gy.js} +1 -1
  341. package/server/{release-engine-Crc0Tjx-.js → release-engine-C_OOhCaK.js} +5 -5
  342. package/server/{release-set-DDXwbIK7.js → release-set-DOIDz2vw.js} +3 -3
  343. package/server/{remote-oEMfXlwT.js → remote-BTh-sjpX.js} +3 -3
  344. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-DbbN7vSm.js} +6 -6
  345. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-MuXx2gWm.js} +1 -1
  346. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-LcWCpAm2.js} +13 -13
  347. package/server/{remote-CBpLi4Yy.js → remote-xY0B43Ho.js} +3 -3
  348. package/server/{resolver-CuAULbLs.js → resolver-C2QKOf09.js} +2 -2
  349. package/server/{resolver-C8rooxoz.js → resolver-D4nsxfGo.js} +31 -8
  350. package/server/resume-ByUrJUNX.js +3 -0
  351. package/server/{review-agent-7C2w5CzU.js → review-agent-BRBTm1qE.js} +43 -55
  352. package/server/review-agent-Caodi0PX.js +3 -0
  353. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DgaDlbO4.js} +6 -6
  354. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-BBvyuRLC.js} +20 -11
  355. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DCzWMMvE.js} +1 -1
  356. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-THHMKlXJ.js} +3 -3
  357. package/server/{review-status-CUnjjOUu.js → review-status-Bge_3XTR.js} +1 -1
  358. package/server/{review-status-DBnR5t4z.js → review-status-DpniqzPT.js} +113 -44
  359. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-D7sM720S.js} +3 -3
  360. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-PDI4-faj.js} +3 -3
  361. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  362. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  363. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-C6ZKTI8f.js} +11 -8
  364. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-CvpHWyvR.js} +1 -1
  365. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-B2ojHFH5.js} +8 -8
  366. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-tyMoLT2L.js} +1 -1
  367. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Cy_1pnIj.js} +7 -7
  368. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-DjrJ64eS.js} +1 -1
  369. package/server/{rollup-DZwH4CLs.js → rollup-Cp0KEoOu.js} +1 -1
  370. package/server/{rollup-QCwYcBdP.js → rollup-DU3xBQu2.js} +8 -8
  371. package/server/{scanner-2aHeLC3W.js → scanner-BFKG3Gxv.js} +8 -8
  372. package/server/{search-DwHYaj66.js → search-DhtKwbBC.js} +2 -2
  373. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  374. package/server/{sequence-io-POKWdusG.js → sequence-io-C-Q19Jez.js} +4 -4
  375. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-eN2P2lDz.js} +6 -6
  376. package/server/server.js +1499 -1350
  377. package/server/{service-BLb_CyPL.js → service-CThO0Sar.js} +80 -774
  378. package/server/{session-fork-DcTzVwex.js → session-fork-ZYTHtpBh.js} +2 -2
  379. package/server/settings-ByDRfuuE.js +2 -0
  380. package/server/{settings-Clw8UVNs.js → settings-CTywpFw5.js} +2 -2
  381. package/server/{settings-B9-H2K_E.js → settings-nAT-eK56.js} +3 -3
  382. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BHZKPJhq.js} +3 -3
  383. package/server/{shadow-state-CEGrrECe.js → shadow-state-BTLi4Axs.js} +2 -2
  384. package/server/{shadow-state-e7250VUx.js → shadow-state-CZ_LnPsi.js} +1 -1
  385. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-CPLlPHdn.js} +2 -2
  386. package/server/{ship-log-7BnQHuKU.js → ship-log-D-CphNZx.js} +1 -1
  387. package/server/{ship-record-CwUX6Afo.js → ship-record-BaBla0l_.js} +7 -7
  388. package/server/{ship-record-BgUPnpT0.js → ship-record-BlvX8-xv.js} +1 -1
  389. package/server/{ship-status-Ce3_3edi.js → ship-status-rQbPQBsF.js} +2 -2
  390. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-CUXn8mfX.js} +1 -1
  391. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D1CNGdZx.js} +7 -7
  392. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-DCmO6COk.js} +19 -19
  393. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-DfEWyrVV.js} +2 -2
  394. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-BMv3K54P.js} +1 -1
  395. package/server/{specialist-context-cHwpcXSh.js → specialist-context-C1-CfYQb.js} +5 -5
  396. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-BDKoz5Z9.js} +2 -2
  397. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-BJQFkpdG.js} +3 -3
  398. package/server/specialists-CYt1U3Zm.js +4 -0
  399. package/server/{specialists-8LcQi9Np.js → specialists-D6MUU31Q.js} +21 -272
  400. package/server/{specialists-DocAK-7A.js → specialists-DhS79T9v.js} +369 -691
  401. package/server/{specialists-xXcJHAyg.js → specialists-Dx0zRTxX.js} +1 -1
  402. package/server/specialists-registry-BRLCi61y.js +3 -0
  403. package/server/specialists-registry-Bng0OFGH.js +277 -0
  404. package/server/specs-oRGyfz6C.js +3 -0
  405. package/server/{src-C2TAxwki.js → src-C7gGe4KU.js} +6 -6
  406. package/server/{src-DudQNYVw.js → src-CdwN6WY6.js} +344 -7
  407. package/server/{src-DUVvEA8Q.js → src-DMosbuSJ.js} +3 -3
  408. package/server/{stack-health-DKT4ySnA.js → stack-health-BKfNaqMm.js} +3 -3
  409. package/server/{stack-health-CbyiYS9H.js → stack-health-Bz711z1Y.js} +1 -1
  410. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-DMRLb5R2.js} +5 -5
  411. package/server/{staleness-D8UTEXV5.js → staleness-CxZaIhrn.js} +1 -1
  412. package/server/{staleness-BjOAq9-d.js → staleness-r_dkMyMG.js} +1 -1
  413. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-CBWqSWV2.js} +8 -8
  414. package/server/{state-home-DhAZlk5k.js → state-home-DhsMqg8W.js} +2 -2
  415. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  416. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C2Ouyd6e.js} +6 -6
  417. package/server/{state-mirror-Do7pag7W.js → state-mirror-BPXciz84.js} +3 -3
  418. package/server/stuck-remediation-DALieAkx.js +2 -0
  419. package/server/stuck-remediation-kta3KN7c.js +774 -0
  420. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-D_ICP7TI.js} +3 -3
  421. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-CojrFKb6.js} +2 -2
  422. package/server/{summary-fork-CZ88rhVx.js → summary-fork-DhhaFhxZ.js} +113 -30
  423. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  424. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  425. package/server/supervisor/pty-supervisor.js +3 -3
  426. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  427. package/server/supervisor-DSSWo4M2.js +2 -0
  428. package/server/{supervisor-D4v0WfiQ.js → supervisor-DqH-laVL.js} +4 -4
  429. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-LF8ZF_hc.js} +3 -3
  430. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-CGFF8uQI.js} +2 -2
  431. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-DSoOFUIV.js} +1 -1
  432. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-Lsx0jUUV.js} +2 -2
  433. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-DMwomEG1.js} +16 -16
  434. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-Cu0D6BYe.js} +6 -6
  435. package/server/{test-verdict-BWm3hgDj.js → test-verdict-9mvl7pQn.js} +1 -1
  436. package/server/{test-verdict-BWtRmdiR.js → test-verdict-oNSv1rVr.js} +2 -2
  437. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-CRSAkhBx.js} +1 -1
  438. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-McqCk2X7.js} +2 -2
  439. package/server/tmux-CYucGrTl.js +4 -0
  440. package/server/{tmux-BqXzRuaH.js → tmux-wnT_hg-s.js} +91 -19
  441. package/server/{token-CO3INKbh.js → token-BdfZLRg1.js} +2 -2
  442. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  443. package/server/token-util-DfUS3Lpp.js +3 -0
  444. package/server/{tracker-config-DVzhaUxO.js → tracker-config-tfAOWgng.js} +2 -2
  445. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-Dbg_pVZg.js} +2 -2
  446. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-DoQvQ6oJ.js} +1 -1
  447. package/server/{tunnel-DauSR-rs.js → tunnel-B1MNIgkL.js} +1 -1
  448. package/server/{tunnel-CwOnS-PB.js → tunnel-skW68j9B.js} +3 -3
  449. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  450. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  451. package/server/{types-DjpLVpsj.js → types-PW4zkxCM.js} +1 -1
  452. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  453. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-ly8ZwtfC.js} +5 -5
  454. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-BBaMwfdc.js} +5 -5
  455. package/server/{uat-train-DVUNW03P.js → uat-train-BBEiYSep.js} +0 -0
  456. package/server/{uat-train-COSy-vEX.js → uat-train-D7Ran2FB.js} +1 -1
  457. package/server/{validate-Dvv83iBx.js → validate-BYcBcBwg.js} +3 -3
  458. package/server/{validation-DlHafKzu.js → validation-BfG2jW5C.js} +9 -6
  459. package/server/{validation-BdCjzWLN.js → validation-nSrYiYvA.js} +1 -1
  460. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-Cmhgq4b_.js} +1 -1
  461. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-DglwaHke.js} +1 -1
  462. package/server/{verification-runner-DwP2fUEF.js → verification-runner-BEq5ZF-h.js} +53 -27
  463. package/server/{verification-runner-C6wdZda2.js → verification-runner-CFjAuv9u.js} +1 -1
  464. package/server/{vtt-parser-luerJpYT.js → vtt-parser-Va--tv27.js} +1 -1
  465. package/server/work-agent-prompt-BnhKNAg7.js +3 -0
  466. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CaD2ue8m.js} +14 -14
  467. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-0nJ-6UeA.js} +2 -2
  468. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-D8NEN5KD.js} +1 -1
  469. package/server/workflows-BtHRlFIm.js +2 -0
  470. package/server/{workflows-BYwR2aIN.js → workflows-C7mxM1qc.js} +114 -41
  471. package/server/{workspace-iTnTycOB.js → workspace-BAhMgMaO.js} +3 -3
  472. package/server/{workspace-B-QJa3Ps.js → workspace-Dbqv9ehn.js} +1 -1
  473. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-B_3kyyxJ.js} +4 -4
  474. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-Bpa3xoni.js} +1 -1
  475. package/server/{workspace-config-D0CavVtz.js → workspace-config-D-bNq2CF.js} +1 -1
  476. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-BrbX90Rm.js} +1 -1
  477. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CM8RCrSc.js} +17 -17
  478. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BEOwJSdK.js} +1 -1
  479. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-Cu6yfxBS.js} +2 -2
  480. package/server/{workspaces-BlpbOPZ7.js → workspaces-C7LAuZfe.js} +140 -709
  481. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  482. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  483. package/sync-sources/rules/agent-message-delivery.md +21 -14
  484. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  485. package/sync-sources/rules/pan-handoff-focus-limit.md +14 -5
  486. package/sync-sources/rules/ste-writing.md +17 -0
  487. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  488. package/sync-sources/rules/writing-style.md +3 -2
  489. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  490. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  491. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  492. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +230 -0
  493. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  494. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  495. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  496. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  497. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  498. package/sync-sources/skills/pan-handoff/SKILL.md +24 -6
  499. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  500. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  501. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  502. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  503. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  504. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  505. package/server/activity-logger-BejO16Am.js +0 -3
  506. package/server/agent-state-DH_-Jkua.js +0 -3
  507. package/server/agents-megfmQHM.js +0 -3
  508. package/server/archive-planning-C-H9cM_J.js +0 -2
  509. package/server/build-info-PQlh_Rhb.js +0 -2
  510. package/server/cli-TaZspPHS.js +0 -2
  511. package/server/cliproxy-36ncAXlu.js +0 -3
  512. package/server/context-layers-CF6zHws4.js +0 -4
  513. package/server/conversations-AnGJ5rtX.js +0 -3
  514. package/server/deacon-BEH-IY0v.js +0 -5
  515. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  516. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  517. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  518. package/server/delivery-cJM6zRjJ.js +0 -3
  519. package/server/deploy-queue-CmVBZEja.js +0 -2
  520. package/server/dist-VKBfkdi7.js +0 -3
  521. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  522. package/server/factory-D4V2wd_V.js +0 -717
  523. package/server/forge-CrP1L3i6.js +0 -2
  524. package/server/hume-1ubD_6O7.js +0 -3
  525. package/server/inspect-agent-CfxERkNt.js +0 -2
  526. package/server/merge-ops-DtHx17Vd.js +0 -2
  527. package/server/merge-rebase-BvB4UuNS.js +0 -2
  528. package/server/project-repos-BJiShUsN.js +0 -3
  529. package/server/providers-CStNGwze.js +0 -3
  530. package/server/public/assets/index-BFEwfmqX.js +0 -860
  531. package/server/public/assets/index-_USwyTAT.css +0 -1
  532. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  533. package/server/pull-requests-C1Cqp2yo.js +0 -2
  534. package/server/rally-CjayjUIl.js +0 -3
  535. package/server/resume-D7JuMCRQ.js +0 -3
  536. package/server/review-agent-BUNTVJK2.js +0 -2
  537. package/server/settings-DBWB1gsG.js +0 -2
  538. package/server/specialists-D8gsOCwh.js +0 -3
  539. package/server/specs-BqkrRnU9.js +0 -3
  540. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  541. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  542. package/server/supervisor-DX8VsPnb.js +0 -2
  543. package/server/tmux-CqNapnrr.js +0 -4
  544. package/server/token-util-Bu8bPF9f.js +0 -3
  545. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -1,9 +1,312 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { bn as loadProjectsConfigSync, fn as init_projects, on as getProjectSync } from "./config-yaml-BwOEANMr.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-KTp9KV9u.js";
4
- import { n as init_issues, t as IssueId } from "./issues-CkvUoAnq.js";
2
+ import { bn as loadProjectsConfigSync, fn as init_projects, li as init_errors, on as getProjectSync } from "./config-yaml-D60AnTIu.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-CJRi_5Wu.js";
4
+ import { n as init_issues, t as IssueId } from "./issues-RGHQUKhB.js";
5
+ import { o as getPricingSync, s as init_cost } from "./cost-DTuIRE4y.js";
5
6
  import { Context, Effect, Layer, Schema } from "effect";
7
+ import { existsSync, readFileSync } from "fs";
6
8
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
9
+ //#region ../../lib/cost-parsers/ohmypi-parser.ts
10
+ /**
11
+ * oh-my-pi (omp) JSONL parser (PAN-1989). Forked from pi-parser.ts (PAN-636).
12
+ *
13
+ * omp sessions live at:
14
+ * ~/.omp/agent/sessions/<encoded-cwd>/<timestamp>_<session-id>.jsonl
15
+ *
16
+ * Format (omp v3 — same as Pi v3):
17
+ * - First line: { type: "session", version: 3, id, timestamp, cwd }
18
+ * - Subsequent: every entry has an opaque `id` and a `parentId`. parentId
19
+ * is null for the first non-session entry.
20
+ * - The graph is a tree (omp supports forking/branching), not a list.
21
+ *
22
+ * To compute usage for the *active* branch we walk leaf -> root via parentId
23
+ * from the latest leaf (max timestamp among entries that have no children).
24
+ * omp assistant messages report per-call usage — input/output tokens are NOT
25
+ * cumulative across the conversation — so summing along the active branch is
26
+ * correct without subtracting pre-compaction input.
27
+ *
28
+ * SessionUsage shape comes from jsonl-parser.ts (the Claude Code parser); we
29
+ * map into it unchanged so all upstream consumers keep working.
30
+ */
31
+ function isMessage(entry) {
32
+ return entry.type === "message";
33
+ }
34
+ function isAssistantMessage(entry) {
35
+ return isMessage(entry) && entry.message?.role === "assistant";
36
+ }
37
+ function pricingProviderFor(provider, model) {
38
+ const lowerProvider = provider?.toLowerCase() ?? "";
39
+ const lowerModel = model.toLowerCase();
40
+ if (lowerProvider === "openai" || lowerProvider === "openai-codex" || lowerModel.includes("gpt")) return "openai";
41
+ if (lowerProvider === "google" || lowerModel.includes("gemini")) return "google";
42
+ if (lowerProvider === "anthropic" || lowerModel.includes("claude")) return "anthropic";
43
+ if (lowerProvider === "kimi" || lowerProvider === "minimax" || lowerProvider === "zai" || lowerProvider === "zhipu" || lowerProvider === "custom" || lowerModel.includes("kimi") || lowerModel.includes("minimax") || lowerModel.includes("glm")) return "custom";
44
+ return null;
45
+ }
46
+ function computeCostFromPricing(provider, model, usage) {
47
+ const pricingProvider = pricingProviderFor(provider, model);
48
+ if (!pricingProvider) return {
49
+ cost: 0,
50
+ reason: "unknown-provider"
51
+ };
52
+ const pricing = getPricingSync(pricingProvider, model);
53
+ if (!pricing) return {
54
+ cost: 0,
55
+ reason: "unpriced-model"
56
+ };
57
+ return { cost: usage.inputTokens / 1e3 * pricing.inputPer1k + usage.outputTokens / 1e3 * pricing.outputPer1k + (usage.cacheReadTokens ?? 0) / 1e3 * (pricing.cacheReadPer1k ?? 0) + (usage.cacheWriteTokens ?? 0) / 1e3 * (pricing.cacheWrite5mPer1k ?? 0) };
58
+ }
59
+ function tsMs(timestamp) {
60
+ if (!timestamp) return 0;
61
+ const t = Date.parse(timestamp);
62
+ return Number.isFinite(t) ? t : 0;
63
+ }
64
+ /**
65
+ * Parse a Pi session JSONL file into a SessionUsage record.
66
+ *
67
+ * Returns null if the file does not exist, is empty, or is unparseable. Errors
68
+ * during line parsing are tolerated (the line is skipped); we never throw.
69
+ */
70
+ function parseOhmypiSessionSync(filePath) {
71
+ if (!existsSync(filePath)) return null;
72
+ const result = parseOhmypiSessionContent(readFileSync(filePath, "utf8"), filePath);
73
+ return result.ok ? result.usage : null;
74
+ }
75
+ function parseOhmypiSessionCostResultSync(filePath) {
76
+ if (!existsSync(filePath)) return {
77
+ ok: false,
78
+ reason: "unreadable"
79
+ };
80
+ try {
81
+ return parseOhmypiSessionContent(readFileSync(filePath, "utf8"), filePath);
82
+ } catch {
83
+ return {
84
+ ok: false,
85
+ reason: "unreadable"
86
+ };
87
+ }
88
+ }
89
+ /**
90
+ * Parse Pi session JSONL content. Exposed for tests and callers that already
91
+ * have the file content in memory.
92
+ */
93
+ function parseOhmypiSessionContent(content, filePath = "<inline>") {
94
+ const lines = content.split("\n").filter((l) => l.trim().length > 0);
95
+ if (lines.length === 0) return {
96
+ ok: false,
97
+ reason: "empty"
98
+ };
99
+ let root = null;
100
+ const entriesById = /* @__PURE__ */ new Map();
101
+ const childrenOf = /* @__PURE__ */ new Map();
102
+ const unknownTypesSeen = /* @__PURE__ */ new Set();
103
+ for (const line of lines) {
104
+ let parsed;
105
+ try {
106
+ parsed = JSON.parse(line);
107
+ } catch {
108
+ continue;
109
+ }
110
+ if (!parsed || typeof parsed !== "object") continue;
111
+ const entry = parsed;
112
+ if (entry.type === "session") {
113
+ root = entry;
114
+ continue;
115
+ }
116
+ if (!entry.id) continue;
117
+ if (!KNOWN_TYPES.has(entry.type)) {
118
+ if (!unknownTypesSeen.has(entry.type)) {
119
+ unknownTypesSeen.add(entry.type);
120
+ console.debug(`[ohmypi-parser] unknown entry type "${entry.type}" in ${filePath} — ignoring`);
121
+ }
122
+ }
123
+ entriesById.set(entry.id, entry);
124
+ const list = childrenOf.get(entry.parentId ?? null);
125
+ if (list) list.push(entry.id);
126
+ else childrenOf.set(entry.parentId ?? null, [entry.id]);
127
+ }
128
+ if (!root) return {
129
+ ok: false,
130
+ reason: "missing-session-root"
131
+ };
132
+ if (entriesById.size === 0) return {
133
+ ok: true,
134
+ usage: emptyUsage(filePath, root)
135
+ };
136
+ const leaves = [];
137
+ for (const entry of entriesById.values()) {
138
+ const kids = childrenOf.get(entry.id);
139
+ if (!kids || kids.length === 0) leaves.push(entry);
140
+ }
141
+ if (leaves.length === 0) leaves.push(...entriesById.values());
142
+ let latestLeaf = leaves[0];
143
+ for (const leaf of leaves) if (tsMs(leaf.timestamp) > tsMs(latestLeaf.timestamp)) latestLeaf = leaf;
144
+ const branch = [];
145
+ const visited = /* @__PURE__ */ new Set();
146
+ let cursor = latestLeaf;
147
+ while (cursor) {
148
+ if (visited.has(cursor.id)) break;
149
+ visited.add(cursor.id);
150
+ branch.push(cursor);
151
+ if (!cursor.parentId) break;
152
+ cursor = entriesById.get(cursor.parentId);
153
+ }
154
+ branch.reverse();
155
+ const totals = {
156
+ inputTokens: 0,
157
+ outputTokens: 0,
158
+ cacheReadTokens: 0,
159
+ cacheWriteTokens: 0
160
+ };
161
+ let costV2 = 0;
162
+ let messageCount = 0;
163
+ let costRecomputedFromTokens = 0;
164
+ const modelBreakdown = {};
165
+ const usageEvents = [];
166
+ const unpricedModels = [];
167
+ const modelsInOrder = [];
168
+ let compactionCount = 0;
169
+ let firstTs = null;
170
+ let lastTs = null;
171
+ for (const entry of branch) {
172
+ if (entry.type === "compaction_start" || entry.type === "session_compact") compactionCount += 1;
173
+ if (!firstTs && entry.timestamp) firstTs = entry.timestamp;
174
+ if (entry.timestamp) lastTs = entry.timestamp;
175
+ if (!isAssistantMessage(entry)) continue;
176
+ const usage = entry.message.usage;
177
+ if (!usage) continue;
178
+ const model = entry.message.model || "unknown";
179
+ const provider = typeof entry.message.provider === "string" ? entry.message.provider : null;
180
+ const input = usage.input ?? 0;
181
+ const output = usage.output ?? 0;
182
+ const cacheRead = usage.cacheRead ?? 0;
183
+ const cacheWrite = usage.cacheWrite ?? 0;
184
+ const tokenUsage = {
185
+ inputTokens: input,
186
+ outputTokens: output,
187
+ cacheReadTokens: cacheRead,
188
+ cacheWriteTokens: cacheWrite
189
+ };
190
+ const hasInlineCost = usage.cost?.total !== void 0;
191
+ let cost = usage.cost?.total ?? 0;
192
+ let warning;
193
+ if (!hasInlineCost && input + output + cacheRead + cacheWrite > 0) {
194
+ const computed = computeCostFromPricing(provider, model, tokenUsage);
195
+ cost = computed.cost;
196
+ if (computed.reason) {
197
+ unpricedModels.push({
198
+ provider,
199
+ model,
200
+ reason: computed.reason
201
+ });
202
+ warning = [{
203
+ type: "unpriced-model",
204
+ provider,
205
+ model,
206
+ reason: computed.reason
207
+ }];
208
+ }
209
+ }
210
+ const localComputed = hasInlineCost ? (usage.cost?.input ?? 0) + (usage.cost?.output ?? 0) + (usage.cost?.cacheRead ?? 0) + (usage.cost?.cacheWrite ?? 0) : cost;
211
+ totals.inputTokens += input;
212
+ totals.outputTokens += output;
213
+ totals.cacheReadTokens = (totals.cacheReadTokens ?? 0) + cacheRead;
214
+ totals.cacheWriteTokens = (totals.cacheWriteTokens ?? 0) + cacheWrite;
215
+ costV2 += cost;
216
+ costRecomputedFromTokens += localComputed;
217
+ messageCount += 1;
218
+ if (!modelBreakdown[model]) {
219
+ modelBreakdown[model] = {
220
+ cost: 0,
221
+ inputTokens: 0,
222
+ outputTokens: 0,
223
+ messageCount: 0,
224
+ cacheReadTokens: 0,
225
+ cacheWriteTokens: 0
226
+ };
227
+ modelsInOrder.push(model);
228
+ }
229
+ const slot = modelBreakdown[model];
230
+ slot.cost += cost;
231
+ slot.inputTokens += input;
232
+ slot.outputTokens += output;
233
+ slot.messageCount += 1;
234
+ slot.cacheReadTokens = (slot.cacheReadTokens ?? 0) + cacheRead;
235
+ slot.cacheWriteTokens = (slot.cacheWriteTokens ?? 0) + cacheWrite;
236
+ usageEvents.push({
237
+ requestId: `ohmypi:${root.id}:${entry.id}`,
238
+ timestamp: entry.timestamp || root.timestamp,
239
+ sessionId: root.id,
240
+ sessionFile: filePath,
241
+ provider,
242
+ model,
243
+ input,
244
+ output,
245
+ cacheRead,
246
+ cacheWrite,
247
+ cost,
248
+ ...warning ? { warnings: warning } : {}
249
+ });
250
+ }
251
+ if (Math.abs(costV2 - costRecomputedFromTokens) > 1e-9) console.debug(`[ohmypi-parser] inline cost vs sum-of-line-items delta=${(costV2 - costRecomputedFromTokens).toFixed(6)} in ${filePath}`);
252
+ if (compactionCount > 0) console.debug(`[ohmypi-parser] active branch in ${filePath} has ${compactionCount} compaction event(s) — usage summed per-message (no double-count)`);
253
+ const display = modelsInOrder.length === 0 ? "unknown" : modelsInOrder.length === 1 ? modelsInOrder[0] : modelsInOrder.join(" → ");
254
+ return {
255
+ ok: true,
256
+ usage: {
257
+ sessionId: root.id,
258
+ sessionFile: filePath,
259
+ startTime: firstTs ?? root.timestamp,
260
+ endTime: lastTs ?? root.timestamp,
261
+ model: display,
262
+ usage: totals,
263
+ cost: costV2,
264
+ cost_v2: costV2,
265
+ messageCount,
266
+ modelBreakdown
267
+ },
268
+ usageEvents,
269
+ unpricedModels
270
+ };
271
+ }
272
+ function emptyUsage(filePath, root) {
273
+ return {
274
+ sessionId: root.id,
275
+ sessionFile: filePath,
276
+ startTime: root.timestamp,
277
+ endTime: root.timestamp,
278
+ model: "unknown",
279
+ usage: {
280
+ inputTokens: 0,
281
+ outputTokens: 0,
282
+ cacheReadTokens: 0,
283
+ cacheWriteTokens: 0
284
+ },
285
+ cost: 0,
286
+ cost_v2: 0,
287
+ messageCount: 0,
288
+ modelBreakdown: {}
289
+ };
290
+ }
291
+ var KNOWN_TYPES;
292
+ var init_ohmypi_parser = __esmMin((() => {
293
+ init_cost();
294
+ init_errors();
295
+ KNOWN_TYPES = new Set([
296
+ "session",
297
+ "message",
298
+ "model_change",
299
+ "thinking_level_change",
300
+ "compaction_start",
301
+ "compaction_end",
302
+ "session_before_compact",
303
+ "session_compact",
304
+ "session_before_switch",
305
+ "session_before_fork",
306
+ "session_start"
307
+ ]);
308
+ }));
309
+ //#endregion
7
310
  //#region ../../lib/overdeck/control-settings.ts
8
311
  function mapProjectConfig(raw, key) {
9
312
  return {
@@ -17,7 +320,7 @@ function overdeckDb() {
17
320
  }
18
321
  /** Read a raw app_settings value synchronously. Returns null if not set. */
19
322
  function getSetting(key) {
20
- const row = overdeckDb().prepare("SELECT value FROM app_settings WHERE key = ?").get(key);
323
+ const row = getOverdeckDatabaseSync(void 0, { readOnly: true }).prepare("SELECT value FROM app_settings WHERE key = ?").get(key);
21
324
  return row ? row.value : null;
22
325
  }
23
326
  /** Write a raw app_settings value synchronously. */
@@ -164,7 +467,7 @@ function setMergeTrainEnabled(enabled) {
164
467
  * Sync version of SettingsResolver.getFlywheelRuntime().activeRunId.
165
468
  */
166
469
  function getFlywheelActiveRunIdSync() {
167
- return getOverdeckDatabaseSync().prepare(`SELECT value FROM app_settings WHERE key = 'flywheel.active_run_id'`).get()?.value ?? null;
470
+ return getOverdeckDatabaseSync(void 0, { readOnly: true }).prepare(`SELECT value FROM app_settings WHERE key = 'flywheel.active_run_id'`).get()?.value ?? null;
168
471
  }
169
472
  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, DASHBOARD_LAST_CLEAN_SHUTDOWN_AT_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;
170
473
  var init_control_settings = __esmMin((() => {
@@ -438,6 +741,6 @@ var init_control_settings = __esmMin((() => {
438
741
  })).add(HttpApiEndpoint.get("listProjects", "/projects", { success: Schema.Array(ProjectConfig) }));
439
742
  }));
440
743
  //#endregion
441
- export { setFlywheelGloballyPaused as C, setSetting as D, setMergeTrainEnabled as E, stampBootReconciliation as O, setFlywheelAutoPickupBacklog as S, setLastCleanShutdownAt as T, setBootReconciliationGrace as _, getFlywheelActiveRunIdSync as a, setDeaconGloballyPausedSync as b, init_control_settings as c, isDeaconGloballyPausedSync as d, isFlywheelAutoPickupBacklog as f, setBootReconciliationDecision as g, isMergeTrainEnabled as h, getFlywheelActiveRunId as i, isCloisterSpawnsPausedSync as l, isFlywheelRequireUatBeforeMerge as m, FLYWHEEL_GLOBAL_PAUSE_KEY as n, getLastCleanShutdownAt as o, isFlywheelGloballyPaused as p, getBootReconciliationState as r, getSetting as s, FLYWHEEL_ACTIVE_RUN_ID_KEY as t, isDeaconGloballyPaused as u, setCloisterSpawnsPausedSync as v, setFlywheelRequireUatBeforeMerge as w, setFlywheelActiveRunId as x, setDeaconGloballyPaused as y };
744
+ export { parseOhmypiSessionCostResultSync as A, setFlywheelGloballyPaused as C, setSetting as D, setMergeTrainEnabled as E, stampBootReconciliation as O, setFlywheelAutoPickupBacklog as S, setLastCleanShutdownAt as T, setBootReconciliationGrace as _, getFlywheelActiveRunIdSync as a, setDeaconGloballyPausedSync as b, init_control_settings as c, isDeaconGloballyPausedSync as d, isFlywheelAutoPickupBacklog as f, setBootReconciliationDecision as g, isMergeTrainEnabled as h, getFlywheelActiveRunId as i, parseOhmypiSessionSync as j, init_ohmypi_parser as k, isCloisterSpawnsPausedSync as l, isFlywheelRequireUatBeforeMerge as m, FLYWHEEL_GLOBAL_PAUSE_KEY as n, getLastCleanShutdownAt as o, isFlywheelGloballyPaused as p, getBootReconciliationState as r, getSetting as s, FLYWHEEL_ACTIVE_RUN_ID_KEY as t, isDeaconGloballyPaused as u, setCloisterSpawnsPausedSync as v, setFlywheelRequireUatBeforeMerge as w, setFlywheelActiveRunId as x, setDeaconGloballyPaused as y };
442
745
 
443
- //# sourceMappingURL=control-settings-5k6ixdFW.js.map
746
+ //# sourceMappingURL=control-settings-Db0uXgVM.js.map
@@ -1,11 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { p as loadConfigSync, t as init_config_yaml } from "./config-yaml-BwOEANMr.js";
3
- import { a as init_event_store, n as getEventStore } from "./event-store-D7qcJXuZ.js";
4
- import { G as init_agents, jr as getAgentRuntimeBaseCommand, ti as getProviderExportsForModel } from "./agent-state-Bb3UUxQm.js";
5
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-CGopJXdU.js";
6
- import { t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-BteE4ELK.js";
7
- import { r as init_smart_compaction, t as generateSmartSummary } from "./smart-compaction-Dy0gw1VH.js";
8
- import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-CZ88rhVx.js";
2
+ import { p as loadConfigSync, t as init_config_yaml } from "./config-yaml-D60AnTIu.js";
3
+ import { a as init_event_store, n as getEventStore } from "./event-store-DTns2XZP.js";
4
+ import { Br as getAgentRuntimeBaseCommand, q as init_agents, ui as getProviderExportsForModel } from "./agent-state-FABw8neJ.js";
5
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-DXWwktJB.js";
6
+ import { t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-BxIOd5ay.js";
7
+ import { r as init_smart_compaction, t as generateSmartSummary } from "./smart-compaction-D1CNGdZx.js";
8
+ import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-DhhaFhxZ.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-CSpVpxN6.js.map
182
+ //# sourceMappingURL=conversation-compaction-B-1KETG9.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-CSpVpxN6.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-B-1KETG9.js";
2
2
  init_conversation_compaction();
3
3
  export { buildCompactionRuntimeInfo, compactConversationNative, estimateContextTokens, getConversationCompactionSettings, isCompacting, maybeCompactBeforeRespawn, shouldInterceptManualCompact };
@@ -1,3 +1,3 @@
1
- import { i as computeContextUsage, t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-BteE4ELK.js";
1
+ import { i as computeContextUsage, t as init_conversation_service, u as findLastCompactBoundary } from "./conversation-service-BxIOd5ay.js";
2
2
  init_conversation_service();
3
3
  export { computeContextUsage, findLastCompactBoundary };
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Dr as MODEL_CAPABILITIES, Fi as init_paths, Mr as init_model_capabilities, Pr as resolveModelIdSync } from "./config-yaml-BwOEANMr.js";
3
- import { s as getHarnessBehavior } from "./src-DudQNYVw.js";
4
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-CQKI6OCu.js";
5
- import { i as parseCodexSessionSync, n as init_codex_parser, t as init_behavior } from "./behavior-Bitko0mD.js";
6
- import { r as summarizeKimiEntries, t as init_kimi_parser } from "./kimi-parser-Dmhy3UlR.js";
2
+ import { Ir as resolveModelIdSync, Pr as init_model_capabilities, kr as MODEL_CAPABILITIES, zi as init_paths } from "./config-yaml-D60AnTIu.js";
3
+ import { s as getHarnessBehavior } from "./src-CdwN6WY6.js";
4
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DTuIRE4y.js";
5
+ import { i as parseCodexSessionSync, n as init_codex_parser, t as init_behavior } from "./behavior-DCg8CIWC.js";
6
+ import { r as summarizeKimiEntries, t as init_kimi_parser } from "./kimi-parser-OcWwmOqF.js";
7
7
  import "node:path";
8
8
  import "node:os";
9
9
  import { open, readFile, stat, watch } from "node:fs/promises";
@@ -367,6 +367,7 @@ async function parseCodexConversationMessages(sessionFile) {
367
367
  const toolCallsByCallId = /* @__PURE__ */ new Map();
368
368
  let totalTokens = 0;
369
369
  let sequence = 0;
370
+ let trailingAgentMessageAt;
370
371
  for (const line of lines) {
371
372
  let entry;
372
373
  try {
@@ -384,6 +385,7 @@ async function parseCodexConversationMessages(sessionFile) {
384
385
  const text = typeof payload.message === "string" ? payload.message.trim() : "";
385
386
  if (!text) continue;
386
387
  sequence += 1;
388
+ trailingAgentMessageAt = ptype === "agent_message" ? createdAt : void 0;
387
389
  messages.push({
388
390
  id: `codex-${ptype === "user_message" ? "user" : "agent"}-${sequence}`,
389
391
  role: ptype === "user_message" ? "user" : "assistant",
@@ -401,6 +403,7 @@ async function parseCodexConversationMessages(sessionFile) {
401
403
  }
402
404
  if (entry.type === "response_item") {
403
405
  if (ptype === "function_call" || ptype === "custom_tool_call") {
406
+ trailingAgentMessageAt = void 0;
404
407
  const callId = typeof payload.call_id === "string" ? payload.call_id : "";
405
408
  const name = typeof payload.name === "string" ? payload.name : "tool";
406
409
  const args = typeof payload.arguments === "string" ? payload.arguments : payload.input != null ? JSON.stringify(payload.input) : "";
@@ -445,6 +448,7 @@ async function parseCodexConversationMessages(sessionFile) {
445
448
  messages,
446
449
  workLog,
447
450
  byteOffset: fileStats.size,
451
+ lastTurnCompletedAt: trailingAgentMessageAt,
448
452
  streaming,
449
453
  totalCost,
450
454
  totalTokens,
@@ -1927,7 +1931,17 @@ async function summarizeConversationActivity(sessionFile, options = {}) {
1927
1931
  lastSequence: 0
1928
1932
  });
1929
1933
  const lastMsg = messages[messages.length - 1];
1930
- const isWorking = Date.now() - mtimeMs < WORKING_STALENESS_MS && !lastTurnCompletedAt && (streaming || pendingToolUse.size > 0 || messages.length === 0 || lastMsg?.role === "user" || lastMsg?.role === "assistant" && !lastMsg.completedAt);
1934
+ const workingFileRecent = Date.now() - mtimeMs < WORKING_STALENESS_MS;
1935
+ const lastWork = workLog[workLog.length - 1];
1936
+ let workGapWorking = false;
1937
+ if (lastWork) {
1938
+ const workTs = Date.parse(lastWork.createdAt || "");
1939
+ if (!Number.isNaN(workTs) && Date.now() - workTs < WORKING_STALENESS_MS) {
1940
+ const msgTs = Date.parse(lastMsg?.completedAt || lastMsg?.createdAt || "");
1941
+ workGapWorking = Number.isNaN(msgTs) || workTs >= msgTs;
1942
+ }
1943
+ }
1944
+ const isWorking = workingFileRecent && !lastTurnCompletedAt && (streaming || pendingToolUse.size > 0 || messages.length === 0 || lastMsg?.role === "user" || lastMsg?.role === "assistant" && !lastMsg.completedAt || workGapWorking);
1931
1945
  const fileRecent = Date.now() - mtimeMs < 3e4;
1932
1946
  let currentTool = null;
1933
1947
  if (fileRecent) {
@@ -2221,4 +2235,4 @@ var init_conversation_service = __esmMin((() => {
2221
2235
  //#endregion
2222
2236
  export { parseAcpConversationMessages as S, isOhmypiSessionFile as _, contextUsageFromParseResult as a, parseCodexConversationMessages as b, parseEntireConversation as c, init_kimi_conversation_parser as d, parseKimiConversationMessages as f, init_ohmypi_conversation_parser as g, parsePiConversationMessages as h, computeContextUsage as i, parseFromLastCompactBoundary as l, isPiSessionFile as m, gateSnapshotEmission as n, summarizeConversationActivity as o, init_pi_conversation_parser as p, watchConversation as r, parseConversationMessages as s, init_conversation_service as t, findLastCompactBoundary as u, parseOhmypiConversationMessages as v, init_acp_conversation_parser as x, init_codex_conversation_parser as y };
2223
2237
 
2224
- //# sourceMappingURL=conversation-service-BteE4ELK.js.map
2238
+ //# sourceMappingURL=conversation-service-BxIOd5ay.js.map
@@ -0,0 +1,3 @@
1
+ import { A as init_conversations, P as listConversations } from "./conversations-nS6QgYpD.js";
2
+ init_conversations();
3
+ export { listConversations };
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fi as init_paths, Pi as getOverdeckHome } from "./config-yaml-BwOEANMr.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-KTp9KV9u.js";
4
- import { f as resolveWorkspaceForCwd, o as init_resolver } from "./resolver-CuAULbLs.js";
5
- import { a as init_event_store, n as getEventStore } from "./event-store-D7qcJXuZ.js";
2
+ import { Ri as getOverdeckHome, zi as init_paths } from "./config-yaml-D60AnTIu.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-CJRi_5Wu.js";
4
+ import { f as resolveWorkspaceForCwd, o as init_resolver } from "./resolver-C2QKOf09.js";
5
+ import { a as init_event_store, n as getEventStore } from "./event-store-DTns2XZP.js";
6
6
  import { join } from "node:path";
7
7
  import { Context, Effect, Layer, Schema, Stream } from "effect";
8
8
  import { readFileSync } from "node:fs";
@@ -993,7 +993,9 @@ function markConversationEnded(name) {
993
993
  overdeckDb().prepare(`UPDATE conversations SET ended_at = ?, status = 'ended' WHERE name = ?`).run(Date.now(), name);
994
994
  }
995
995
  function markConversationRunning(name) {
996
- overdeckDb().prepare(`UPDATE conversations SET status = 'active', ended_at = NULL WHERE name = ? AND status != 'active'`).run(name);
996
+ overdeckDb().prepare(`UPDATE conversations SET status = 'active', ended_at = NULL, spawn_error = NULL,
997
+ fork_error = CASE WHEN fork_status = 'failed' THEN NULL ELSE fork_error END,
998
+ fork_status = CASE WHEN fork_status = 'failed' THEN NULL ELSE fork_status END WHERE name = ? AND status != 'active'`).run(name);
997
999
  }
998
1000
  function markConversationActive(name) {
999
1001
  overdeckDb().prepare(`UPDATE conversations SET archived_at = NULL WHERE name = ?`).run(name);
@@ -1073,6 +1075,9 @@ function backfillConversationModel(name, model) {
1073
1075
  function updateForkStatus(name, status, error) {
1074
1076
  overdeckDb().prepare(`UPDATE conversations SET fork_status = ?, fork_error = ? WHERE name = ?`).run(status, error ?? null, name);
1075
1077
  }
1078
+ function clearConversationFailureState(name) {
1079
+ overdeckDb().prepare(`UPDATE conversations SET fork_status = NULL, fork_error = NULL, spawn_error = NULL WHERE name = ?`).run(name);
1080
+ }
1076
1081
  function getStuckForks() {
1077
1082
  return overdeckDb().prepare(`${LEGACY_CONVERSATION_SELECT} WHERE c.fork_status IS NOT NULL AND c.fork_status != 'failed' ORDER BY c.created_at ASC`).all().map(rowToLegacyConversation);
1078
1083
  }
@@ -1621,6 +1626,6 @@ var init_conversations = __esmMin((() => {
1621
1626
  nullIfEmpty = (value) => value?.trim() || null;
1622
1627
  }));
1623
1628
  //#endregion
1624
- export { updateConversationCost as $, isAgentConversationName as A, recordConversationHandoff as B, getConversationByTmuxSession as C, loadEmbeddings as Ct, importLegacyConversation as D, updateEnrichment as Dt, hasOtherActiveConversationOnTmuxSession as E, topKCosine as Et, markConversationActive as F, setConversationEffort as G, resolveLiveSessionId as H, markConversationEnded as I, setConversationProjectKey as J, setConversationHarness as K, markConversationRunning as L, listArchivedConversationsWithEnrichment as M, listConversations as N, incrementForkRetryCount as O, upsertDiscoveredSession as Ot, listFavoritedIds as P, unarchiveConversation as Q, normalizeHarness as R, getConversationByName as S, insertEmbedding as St, getStuckForks as T, searchFtsSessions as Tt, setClearedToConvId as U, removeFavorite as V, setConversationClaudeSessionId as W, setForkRequest as X, setFavorite as Y, setImportedConversationLinks as Z, canRefineTitle as _, getDiscoveredSessionByJsonlPath as _t, ConversationName as a, updateSpawnError as at, getConversationByClaudeSessionId as b, getEmbedding as bt, ConversationsResolver as c, aggregateDiscoveredSessionCostBy as ct, TitleSource as d, countFtsSessions as dt, updateConversationDeliveryMethod as et, Transcript as f, ensureDiscoveredSessionsSchema as ft, backfillConversationModel as g, getDiscoveredSessionById as gt, archiveConversation as h, findEnrichedSessionIdsMissingEmbedding as ht, ConversationId as i, updateLastAttached as it, listArchivedConversations as j, init_conversations as k, Harness as l, buildFilterSql as lt, TranscriptsWriter as m, findDiscoveredSessions as mt, BackingFile as n, updateConversationTitle as nt, ConversationNotFound as o, findConversationForCostSessionSync as ot, TranscriptsResolver as p, findDiscoveredSessionIds as pt, setConversationModel as q, Conversation as r, updateForkStatus as rt, ConversationWriter as s, aggregateDiscoveredSessionCost as st, AlreadyArchived as t, updateConversationForkFallbackReason as tt, NotArchived as u, countDiscoveredSessions as ut, canReplaceTitle as v, getDiscoveredSessionBySessionId as vt, getConversationLedgerCosts as w, markEnrichmentFailed as wt, getConversationById as x, init_discovered_sessions as xt, createConversation as y, getDiscoveredStats as yt, reactivateConversationForSpawn as z };
1629
+ export { unarchiveConversation as $, init_conversations as A, reactivateConversationForSpawn as B, getConversationByName as C, insertEmbedding as Ct, hasOtherActiveConversationOnTmuxSession as D, topKCosine as Dt, getStuckForks as E, searchFtsSessions as Et, listFavoritedIds as F, setConversationClaudeSessionId as G, removeFavorite as H, markConversationActive as I, setConversationModel as J, setConversationEffort as K, markConversationEnded as L, listArchivedConversations as M, listArchivedConversationsWithEnrichment as N, importLegacyConversation as O, updateEnrichment as Ot, listConversations as P, setImportedConversationLinks as Q, markConversationRunning as R, getConversationById as S, init_discovered_sessions as St, getConversationLedgerCosts as T, markEnrichmentFailed as Tt, resolveLiveSessionId as U, recordConversationHandoff as V, setClearedToConvId as W, setFavorite as X, setConversationProjectKey as Y, setForkRequest as Z, canRefineTitle as _, getDiscoveredSessionById as _t, ConversationName as a, updateLastAttached as at, createConversation as b, getDiscoveredStats as bt, ConversationsResolver as c, aggregateDiscoveredSessionCost as ct, TitleSource as d, countDiscoveredSessions as dt, updateConversationCost as et, Transcript as f, countFtsSessions as ft, backfillConversationModel as g, findEnrichedSessionIdsMissingEmbedding as gt, archiveConversation as h, findDiscoveredSessions as ht, ConversationId as i, updateForkStatus as it, isAgentConversationName as j, incrementForkRetryCount as k, upsertDiscoveredSession as kt, Harness as l, aggregateDiscoveredSessionCostBy as lt, TranscriptsWriter as m, findDiscoveredSessionIds as mt, BackingFile as n, updateConversationForkFallbackReason as nt, ConversationNotFound as o, updateSpawnError as ot, TranscriptsResolver as p, ensureDiscoveredSessionsSchema as pt, setConversationHarness as q, Conversation as r, updateConversationTitle as rt, ConversationWriter as s, findConversationForCostSessionSync as st, AlreadyArchived as t, updateConversationDeliveryMethod as tt, NotArchived as u, buildFilterSql as ut, canReplaceTitle as v, getDiscoveredSessionByJsonlPath as vt, getConversationByTmuxSession as w, loadEmbeddings as wt, getConversationByClaudeSessionId as x, getEmbedding as xt, clearConversationFailureState as y, getDiscoveredSessionBySessionId as yt, normalizeHarness as z };
1625
1630
 
1626
- //# sourceMappingURL=conversations-DhwxsOru.js.map
1631
+ //# sourceMappingURL=conversations-nS6QgYpD.js.map