@overdeck/desktop 0.45.6 → 0.45.8

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 (304) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +483 -0
  2. package/package.json +16 -4
  3. package/server/{acceptance-criteria-DYffaKI9.js → acceptance-criteria-l0DSvFFS.js} +2 -2
  4. package/server/{activity-logger-DO27GsPa.js → activity-logger-DvYvFhwZ.js} +1 -1
  5. package/server/{activity-logger-Dm95Ua07.js → activity-logger-pcbf-e30.js} +3 -2
  6. package/server/{advancing-selfheal-n8tAeFwE.js → advancing-selfheal-CMlGznKv.js} +11 -66
  7. package/server/{agent-gc-CIFaa2vJ.js → agent-gc-BtAzj8QN.js} +3 -3
  8. package/server/{agent-state-service-BqVDA9b8.js → agent-state-service-5ge9xxhx.js} +5 -5
  9. package/server/{agent-state-service-CLifyinO.js → agent-state-service-C1iUF9Ft.js} +1 -1
  10. package/server/agent-state-xk_G8t90.js +3 -0
  11. package/server/{agents-KaEsWZ8D.js → agents-BIggLvi_.js} +1 -1
  12. package/server/{agents-D_x5BSZM.js → agents-DHvsjsuP.js} +129 -61
  13. package/server/{archive-planning-CFxmeFKh.js → archive-planning-B4Qi02bk.js} +1 -1
  14. package/server/{archive-planning-DVUXlRBs.js → archive-planning-zTvWWHG_.js} +4 -4
  15. package/server/{artifact-index-jobs-ChUgzZah.js → artifact-index-jobs-BrByqVkB.js} +2 -2
  16. package/server/{auto-commit-2KiBFh-K.js → auto-commit-DoIPFoEs.js} +1 -1
  17. package/server/{backlog-auto-trigger-DoTEMZMl.js → backlog-auto-trigger-COm_R96V.js} +3 -3
  18. package/server/{bd-mutex-CE6P_MlD.js → bd-mutex-BItGvLQ8.js} +2 -2
  19. package/server/{bd-process-lock-Ch3WNHS9.js → bd-process-lock-CJkoG7hW.js} +2 -2
  20. package/server/{beads-B43pgBIy.js → beads-AmCXEv_E.js} +1 -1
  21. package/server/{beads-BugPvtWp.js → beads-DlZm-vrG.js} +5 -5
  22. package/server/{beads-query-CtqWakL6.js → beads-query-BrVNWoSL.js} +2 -2
  23. package/server/{beads-restore-BqTMSQi-.js → beads-restore-CMbDSB5R.js} +1 -1
  24. package/server/{behavior-vk1sixby.js → behavior-By-2Wipv.js} +3 -3
  25. package/server/{briefing-freshness-B3YxHQ-L.js → briefing-freshness-CXhZdnB8.js} +4 -4
  26. package/server/{checkpoint-manager-CdrwLsQh.js → checkpoint-manager-CPw51H2n.js} +1 -1
  27. package/server/{checkpoint-manager-Dg6cWZz3.js → checkpoint-manager-CfNpHOp4.js} +11 -2
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-DDd-0doa.js → checkpoints-BbfH1EIy.js} +2 -2
  30. package/server/{checkpoints-dBCJr0dC.js → checkpoints-BjlBWOA8.js} +1 -1
  31. package/server/{claude-permissions-BpwIcIR7.js → claude-permissions-DrRAs_0F.js} +3 -3
  32. package/server/{claude-settings-overlay-DnraWcz6.js → claude-settings-overlay-BSeS7Ki3.js} +2 -2
  33. package/server/{claude-settings-overlay-xD_Vu420.js → claude-settings-overlay-CEWlIFL-.js} +1 -1
  34. package/server/cli-CJDWXE_Y.js +3 -0
  35. package/server/{cli-BmzYZZKi.js → cli-CvK9xuSS.js} +9 -9
  36. package/server/{cliproxy-DYWdJKZ1.js → cliproxy-BOcmOK6l.js} +1 -1
  37. package/server/{cliproxy-CE2GDY7x.js → cliproxy-J-_1iIXe.js} +2 -2
  38. package/server/{close-issue-CpJd4SOL.js → close-issue-BnpErnD1.js} +5 -5
  39. package/server/{closed-issue-reaper-QpcvCDeE.js → closed-issue-reaper-BLCQwTpF.js} +1 -1
  40. package/server/{closed-issue-reaper-DubXY9Zg.js → closed-issue-reaper-DRqK5k39.js} +10 -10
  41. package/server/{codex-j8aVgRou.js → codex-BUZjrnqH.js} +1 -1
  42. package/server/{codex-B3J1TXo7.js → codex-DcInrhok.js} +5 -5
  43. package/server/{compact-beads-CqhLqG-k.js → compact-beads-RFwdZFPA.js} +4 -4
  44. package/server/{compact-beads-BeilHCdj.js → compact-beads-omhUgj5b.js} +1 -1
  45. package/server/{config-DHU0j_pS.js → config-CzcWQ24p.js} +1 -1
  46. package/server/{config-DkEhJM0h.js → config-oWoKf5jO.js} +4 -4
  47. package/server/{config-yaml-DbdN9Fuq.js → config-yaml-DPAieL_G.js} +3 -2
  48. package/server/{conflict-gate-CgOtMo8i.js → conflict-gate-BhKvrPxn.js} +4 -4
  49. package/server/{conflict-gate-D00zFjeu.js → conflict-gate-JdFuhKuF.js} +1 -1
  50. package/server/{context-layers-BHEjT8Cn.js → context-layers-CTjQwcEQ.js} +3 -3
  51. package/server/{context-layers-0Lgq-SE_.js → context-layers-DxKsseHI.js} +2 -2
  52. package/server/{control-settings-CYv732Gs.js → control-settings-BMqUkXmR.js} +4 -4
  53. package/server/{conversation-compaction-Dbw03b-X.js → conversation-compaction-Ba5aZdrb.js} +1 -1
  54. package/server/{conversation-compaction-DKXvmX50.js → conversation-compaction-C5o_eKEm.js} +8 -8
  55. package/server/{conversation-service-BwKUeEvn.js → conversation-service-DvG8vZSV.js} +5 -5
  56. package/server/{conversation-service-kYYeRp9B.js → conversation-service-WKl-sw58.js} +1 -1
  57. package/server/{conversations-Dwr1jHrO.js → conversations-DL_BAWVk.js} +4 -4
  58. package/server/{conversations-D-uOnA8T.js → conversations-Dcx6LeIh.js} +1 -1
  59. package/server/{cost-DiSDkYe7.js → cost-C2CuA66z.js} +2 -2
  60. package/server/{cost-DNIyZH1X.js → cost-DaOG8sUB.js} +3 -3
  61. package/server/{cost-sync-CfXu-3TF.js → cost-sync-8lkDeL9g.js} +3 -3
  62. package/server/{dag-DZBowTd2.js → dag-jH8ZkewR.js} +3 -3
  63. package/server/{dangerous-git-ops-Pongxg2d.js → dangerous-git-ops-Dcw7PbYo.js} +1 -1
  64. package/server/dashboard-db-worker.js +6 -6
  65. package/server/{deacon-DT0BsVyE.js → deacon-Cv2RMfHs.js} +3 -3
  66. package/server/{deacon-f0yvsG5S.js → deacon-j3qSZ7--.js} +222 -110
  67. package/server/{deacon-nudge-log-Cmcch2Av.js → deacon-nudge-log-CJGA6aSQ.js} +1 -1
  68. package/server/deacon-swarm-D1iAUX-P.js +2 -0
  69. package/server/{deacon-swarm-BBGnhvD2.js → deacon-swarm-DadWNi5J.js} +88 -43
  70. package/server/deacon.js +8 -8
  71. package/server/{devcontainer-renderer-Cpz7XBj0.js → devcontainer-renderer-DUJYYRQB.js} +3 -3
  72. package/server/{dist-DypOkJv9.js → dist-BIC8spJ0.js} +1 -1
  73. package/server/dist-BUplB3Od.js +3 -0
  74. package/server/{docker-DARVx0OZ.js → docker-Q4bphryk.js} +2 -2
  75. package/server/{ensure-devcontainer-Dmdw4BxF.js → ensure-devcontainer-BCB6fHp9.js} +1 -1
  76. package/server/{ensure-devcontainer-BJssuBG6.js → ensure-devcontainer-XLL0vtgV.js} +4 -4
  77. package/server/{esm-shims-Crmvo9Ln.js → esm-shims-DiV9jHa_.js} +1 -1
  78. package/server/{event-store-BeEE8pW5.js → event-store-DIk9wvnS.js} +1 -1
  79. package/server/{event-store-DrfTJZ1_.js → event-store-DTJXZjCl.js} +4 -4
  80. package/server/events-BlzVUyTx.js +3 -0
  81. package/server/{events-BbClwoM-.js → events-DGWZzye2.js} +4 -4
  82. package/server/{factory-DVv9cpG5.js → factory-rG4T40su.js} +4 -4
  83. package/server/{feature-registry-population-C6eVdq4J.js → feature-registry-population-Dwyj9gEM.js} +4 -4
  84. package/server/{feature-registry-storage-ByBosRId.js → feature-registry-storage-CnGyNgAq.js} +2 -2
  85. package/server/{features-EZfSwuqq.js → features-CYY2_Eeh.js} +2 -2
  86. package/server/{feedback-target-DENaINE6.js → feedback-target-C4DaDSZ8.js} +1 -1
  87. package/server/{feedback-target-Dv4VnbQl.js → feedback-target-oE4-Esxl.js} +48 -17
  88. package/server/{feedback-writer-Dxg8qM8i.js → feedback-writer-DMaO0XXa.js} +4 -4
  89. package/server/{feedback-writer-BvHE1I-3.js → feedback-writer-thrdxYpK.js} +1 -1
  90. package/server/{flywheel-Akbd9VNM.js → flywheel-BqDdGvrQ.js} +1 -1
  91. package/server/{flywheel-B4KN9BmW.js → flywheel-ClMjGW_u.js} +11 -11
  92. package/server/{flywheel-ByZyAv3P.js → flywheel-DefHRzY4.js} +13 -13
  93. package/server/{flywheel-merge-order-DPFZbt-w.js → flywheel-merge-order-B6YDSElh.js} +1 -1
  94. package/server/{flywheel-merge-order-BYUPxqgx.js → flywheel-merge-order-CuDcqTRJ.js} +7 -7
  95. package/server/forge-BfP7OJwK.js +2 -0
  96. package/server/{forge-BnTExkbK.js → forge-BixzckB0.js} +2 -2
  97. package/server/{from-B2i_NgIH.js → from-D4xmArTA.js} +1 -1
  98. package/server/{fts-db-dnCj-PD3.js → fts-db-DPtxOAjp.js} +2 -2
  99. package/server/{fts-operations-CAAofsTQ.js → fts-operations-VrGjsT0w.js} +2 -2
  100. package/server/{git-utils-CB3gDSM-.js → git-utils-D_cax3fD.js} +2 -2
  101. package/server/{git-utils-Bk7sJZru.js → git-utils-RAmTwjFB.js} +1 -1
  102. package/server/{github-app-CIhMNI4C.js → github-app-B5PDHMyn.js} +1 -1
  103. package/server/{github-app-BIU8a93o.js → github-app-FMXgo3vK.js} +2 -2
  104. package/server/{github-client-DmZgsnYP.js → github-client-VRiB6N-4.js} +1 -1
  105. package/server/{github-client-zREpj5HA.js → github-client-yjbXaqpR.js} +2 -2
  106. package/server/{github-pr-lookup-CPri6JR1.js → github-pr-lookup-t8X8R0c0.js} +2 -2
  107. package/server/{harness-resolve-TzYAiXzZ.js → harness-resolve-DKeSVsJL.js} +3 -3
  108. package/server/{health-events-CDWk8Oz4.js → health-events-CD6q47ub.js} +1 -1
  109. package/server/{health-events-Dd0FuKrE.js → health-events-DaLX4-0a.js} +2 -2
  110. package/server/{hooks-C6HBXlVm.js → hooks-CmHFSj_Z.js} +2 -2
  111. package/server/{hooks-DRLzoFof.js → hooks-D-cbMUzQ.js} +1 -1
  112. package/server/{hume-Bb91r_2I.js → hume-DkVOs1Qi.js} +2 -2
  113. package/server/hume-x9voULey.js +3 -0
  114. package/server/{idle-stack-reaper-BPHnItVj.js → idle-stack-reaper-DBKQ9SKu.js} +3 -3
  115. package/server/{idle-stack-reaper-D5bwmuwX.js → idle-stack-reaper-DdnERp3G.js} +1 -1
  116. package/server/{infra-CCTzpcuJ.js → infra-CpKlYZA9.js} +3 -3
  117. package/server/{injection-D6L7D_w0.js → injection-CszhePD2.js} +7 -7
  118. package/server/{injection-CBrN8UxB.js → injection-DKzL2Axk.js} +1 -1
  119. package/server/{inspect-agent-CSYyFWqP.js → inspect-agent-BKKc0XnB.js} +9 -9
  120. package/server/inspect-agent-vm88mLYr.js +2 -0
  121. package/server/{internal-token-DWhBqgIk.js → internal-token-CQUx9YLc.js} +2 -2
  122. package/server/{internal-token-DCrCAG_M.js → internal-token-DrGdpLFo.js} +1 -1
  123. package/server/{io-DtAQ_2hp.js → io-Wy8YpFeP.js} +2 -2
  124. package/server/{issue-closed-0Zx72zXf.js → issue-closed-BO84g03t.js} +4 -4
  125. package/server/{issue-lifecycle-ZTt6kP_K.js → issue-lifecycle-DnhQgddB.js} +22 -22
  126. package/server/{issue-lifecycle-CJ7-D4XX.js → issue-lifecycle-nY4esZn8.js} +1 -1
  127. package/server/{issue-service-singleton-DNh4RRI7.js → issue-service-singleton-Bnqv1uaa.js} +1 -1
  128. package/server/{issue-service-singleton-DRE7S-Zg.js → issue-service-singleton-_AquSBTl.js} +8 -8
  129. package/server/{issues-CGc8Aaxm.js → issues-ChNcfHta.js} +2 -2
  130. package/server/{label-cleanup-CNsPlXy6.js → label-cleanup-bVXCGWBM.js} +3 -3
  131. package/server/{layers-CO_VLcSv.js → layers-vdvlpFki.js} +2 -2
  132. package/server/{lifecycle-B_NFvTj9.js → lifecycle-CGKm7doE.js} +7 -7
  133. package/server/{lifecycle-io-D0FftBLy.js → lifecycle-io-CdqPkCyk.js} +1 -1
  134. package/server/{lifecycle-io-WDGwa1vV.js → lifecycle-io-DSrv9xGh.js} +4 -4
  135. package/server/{linear-client-MvjflCXs.js → linear-client-BxKvL6U8.js} +1 -1
  136. package/server/{linear-client-CSgH24Ym.js → linear-client-E0HdXtWs.js} +2 -2
  137. package/server/memory-fts-worker.js +1 -1
  138. package/server/{merge-DltB-RGV.js → merge-D3wEbmUJ.js} +1 -1
  139. package/server/{merge-Ce9DHBXM.js → merge-UlAwCk80.js} +4 -4
  140. package/server/{merge-agent-Rv0bNQNU.js → merge-agent-BcgAYStl.js} +27 -27
  141. package/server/{merge-agent-DRXwKxmb.js → merge-agent-Dh8Y9PDO.js} +1 -1
  142. package/server/{merge-batch-LLp_cXUR.js → merge-batch-BwhGdlh4.js} +1 -1
  143. package/server/{merge-blockers-BqYUtLBd.js → merge-blockers-DwdQNsYD.js} +2 -2
  144. package/server/merge-ops-QdBiQ8XB.js +2 -0
  145. package/server/{merge-rebase-AiSEs4QB.js → merge-rebase-CH12_ufi.js} +2 -2
  146. package/server/{merge-set-CUY9msG9.js → merge-set-TRxJwR-w.js} +3 -3
  147. package/server/{merge-set-CSJoIpKB.js → merge-set-rXK3ehnB.js} +1 -1
  148. package/server/{merge-sync-CAjbJeTp.js → merge-sync-BKLKu9kz.js} +1 -1
  149. package/server/{merge-sync-CuyWzzZK.js → merge-sync-CaLRt2cB.js} +2 -2
  150. package/server/{merge-train-DndZCAiv.js → merge-train-DmxlYbEo.js} +3 -3
  151. package/server/{merge-train-deps-Bsy90Q7t.js → merge-train-deps-DBHsOWt9.js} +4 -4
  152. package/server/{merge-verification-Kvh4WViS.js → merge-verification-DA9rvqsE.js} +4 -4
  153. package/server/{multipart-parser-BWnfyoyz.js → multipart-parser-DtIEUW2B.js} +2 -2
  154. package/server/{no-resume-mode-CKy2bwZL.js → no-resume-mode-yrPEQ_pC.js} +1 -1
  155. package/server/{orphan-proposed-reconciler-Cg5_uVy1.js → orphan-proposed-reconciler-Db8tUhce.js} +10 -10
  156. package/server/{orphan-proposed-reconciler-CjUuBs6J.js → orphan-proposed-reconciler-mXV--tcB.js} +1 -1
  157. package/server/{pan-dir-Cn3NUnxU.js → pan-dir-BgBeeZDX.js} +3 -3
  158. package/server/{paths-Bo-kA9ta.js → paths-TE1GOZDr.js} +2 -2
  159. package/server/{pickup-DRn-XNXS.js → pickup-KLRUhThD.js} +1 -1
  160. package/server/{pipeline-notifier-BbGQtvKM.js → pipeline-notifier-aX_5EqQO.js} +2 -2
  161. package/server/{pipeline-notifier-DQsOtdjZ.js → pipeline-notifier-lwMa--Gz.js} +1 -1
  162. package/server/{projects-CKTA6Klk.js → projects-BNmVxnNt.js} +1 -1
  163. package/server/{prompts-CVncQg4P.js → prompts-CelsUdrx.js} +2 -2
  164. package/server/{providers-uPI9uU7Q.js → providers-4-xOzHQu.js} +7 -7
  165. package/server/{providers-CapuDkKX.js → providers-BOnRq5XK.js} +1 -1
  166. package/server/public/assets/{chunk-BO2N2NFS-CaAvtgHW.js → chunk-BO2N2NFS-jJsbVwoD.js} +4 -4
  167. package/server/public/assets/{diagram-OG6HWLK6-C4flU2X9.js → diagram-OG6HWLK6-Cp1aNi3v.js} +1 -1
  168. package/server/public/assets/{dist-DXAnG2e9.js → dist-B2-Oc7J1.js} +1 -1
  169. package/server/public/assets/{dist-DygIHsen.js → dist-Dbb8vdyE.js} +3 -3
  170. package/server/public/assets/{ganttDiagram-6RSMTGT7-BJY25etK.js → ganttDiagram-6RSMTGT7-rujV2mSn.js} +1 -1
  171. package/server/public/assets/{highlighted-body-OFNGDK62-DIEQLSG_.js → highlighted-body-OFNGDK62-Df3Exbbt.js} +1 -1
  172. package/server/public/assets/{index-BsKNi2y5.js → index-rQPa7qlV.js} +88 -88
  173. package/server/public/assets/{linear-CRa2o9KP.js → linear-Ctp3LAJ5.js} +1 -1
  174. package/server/public/assets/mermaid-GHXKKRXX-BnC2HrDq.js +1 -0
  175. package/server/public/assets/{pieDiagram-4H26LBE5-Cb6OrK_c.js → pieDiagram-4H26LBE5-K-m6VCum.js} +1 -1
  176. package/server/public/assets/{prod-DWpuiL-y.js → prod-jqZ3zqVg.js} +4 -4
  177. package/server/public/assets/{quadrantDiagram-W4KKPZXB-DhZzzcAO.js → quadrantDiagram-W4KKPZXB-DXcFax_1.js} +1 -1
  178. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CVe6lE5A.js → sankeyDiagram-5OEKKPKP-DnD_J_rB.js} +1 -1
  179. package/server/public/assets/{xychartDiagram-2RQKCTM6-zukUz5pI.js → xychartDiagram-2RQKCTM6-Dx25iKVp.js} +1 -1
  180. package/server/public/index.html +1 -1
  181. package/server/{pull-requests-C3csHJsc.js → pull-requests-CH4iBFLl.js} +3 -3
  182. package/server/{pull-requests-MeAgb3Ax.js → pull-requests-DL_4klIb.js} +1 -1
  183. package/server/{rally-nalS21zz.js → rally-D0mKv2t8.js} +3 -3
  184. package/server/rally-DffLLIdl.js +3 -0
  185. package/server/{rally-api-DzQryQi8.js → rally-api-CcCdecF-.js} +1 -1
  186. package/server/{rally-api-DdY4ebu3.js → rally-api-DgAt6FbN.js} +2 -2
  187. package/server/{rally-client-9duSds1_.js → rally-client-DYjtgTOu.js} +4 -4
  188. package/server/{rally-client-B16-bZk9.js → rally-client-X0bEEN2B.js} +1 -1
  189. package/server/reap-terminal-sessions-BwJb2DLJ.js +3 -0
  190. package/server/{reap-terminal-sessions-C6rD1pDT.js → reap-terminal-sessions-CAmURC2h.js} +12 -62
  191. package/server/{rebuild-stack-D9qBmVcM.js → rebuild-stack-BLG3rlWa.js} +6 -6
  192. package/server/{rebuild-stack-DrWMHxoY.js → rebuild-stack-ByFCMqTK.js} +1 -1
  193. package/server/{reconstruct-cache--H2QBooC.js → reconstruct-cache-_tDZ2D72.js} +6 -6
  194. package/server/{record-fn7uPjsl.js → record-DjPikotp.js} +1 -1
  195. package/server/{remote-BEkHf2HO.js → remote-B1Trmr0N.js} +3 -3
  196. package/server/{remote-Dl6Hn0zz.js → remote-TN0cV8k-.js} +3 -3
  197. package/server/{remote-agents-DNdP4sew.js → remote-agents-CmbIKw7E.js} +5 -5
  198. package/server/{remote-agents-OB4zwVHz.js → remote-agents-DNuaAgU6.js} +1 -1
  199. package/server/{remote-completion-BINc1Y8c.js → remote-completion-Bklh6loJ.js} +12 -12
  200. package/server/resume-DnIsmIgC.js +3 -0
  201. package/server/review-agent-DgySDb-G.js +3 -0
  202. package/server/{review-agent-C-A6IgXc.js → review-agent-phzqNqIs.js} +599 -197
  203. package/server/{review-artifacts-DTTdAYsU.js → review-artifacts-BGc69epg.js} +7 -7
  204. package/server/{review-context-De14xPtc.js → review-context-CCq56O_Y.js} +7 -7
  205. package/server/{review-monitor-BNV3kjLq.js → review-monitor-BKG2ubt5.js} +2 -2
  206. package/server/{review-status-DWAsTqfJ.js → review-status-BQjqQXZG.js} +160 -52
  207. package/server/{review-status-mo3tyc8L.js → review-status-bBkqUj5i.js} +1 -1
  208. package/server/{review-status-enrichment-C6sr9wOI.js → review-status-enrichment-CGlcApSn.js} +3 -3
  209. package/server/{review-status-sync-D-p7TQit.js → review-status-sync-BWHnrq-k.js} +3 -3
  210. package/server/{review-status-sync-MvYGQLDD.js → review-status-sync-BxHBVH8s.js} +1 -1
  211. package/server/{review-verdict-feedback-BbIfN5Vg.js → review-verdict-feedback-cZh9Wi9G.js} +1 -1
  212. package/server/{review-verdict-feedback-Cfc-THvz.js → review-verdict-feedback-wqnikhMK.js} +16 -36
  213. package/server/{rollup-DgWlrSBc.js → rollup-BJE-Vc7H.js} +8 -8
  214. package/server/{rollup-CxR6GMTe.js → rollup-DBNy1yFB.js} +1 -1
  215. package/server/{scanner-6OmIn5XE.js → scanner-CUGpdp4i.js} +7 -7
  216. package/server/{sequence-io-CxiPMMKM.js → sequence-io-B2GmilSI.js} +4 -4
  217. package/server/{sequencer-agent--xPlSfR2.js → sequencer-agent-D8pW2aU_.js} +5 -5
  218. package/server/server.js +166 -162
  219. package/server/{service-CXje28KS.js → service-CILd-uOt.js} +46 -45
  220. package/server/session-fork-DDSDVoIK.js +99 -0
  221. package/server/{settings-ChvoXExM.js → settings-CBrei_kx.js} +2 -2
  222. package/server/{settings-DZq_bi-B.js → settings-D2wt4nku.js} +3 -3
  223. package/server/settings-vLoKyghx.js +2 -0
  224. package/server/{shadow-engineering-BHeyD5bL.js → shadow-engineering-Ba1D0QUN.js} +2 -2
  225. package/server/{shadow-state-p3YTxrJ5.js → shadow-state-BOaq8BrD.js} +1 -1
  226. package/server/{shadow-state-3L0eHQNE.js → shadow-state-DTC7AMHc.js} +2 -2
  227. package/server/{ship-log-B2EEH__n.js → ship-log-CMWH3H5-.js} +1 -1
  228. package/server/{smart-compaction-DRXK5_io.js → smart-compaction-Bgp_gwcA.js} +1 -1
  229. package/server/{smart-compaction-DMB4hv07.js → smart-compaction-CrP90OFE.js} +7 -7
  230. package/server/{spawn-planning-session-BZfVvIi3.js → spawn-planning-session-BmJWHSCu.js} +15 -15
  231. package/server/{spawn-planning-session-BBUzeHJQ.js → spawn-planning-session-D15KbPOy.js} +1 -1
  232. package/server/{specialist-completion-BAZHHbmp.js → specialist-completion-BiEXUHfD.js} +1 -1
  233. package/server/{specialist-context-DgdhI7rm.js → specialist-context-CwKkcXL9.js} +5 -5
  234. package/server/{specialist-handoff-logger-CH1nC8fq.js → specialist-handoff-logger-B_2VsWli.js} +2 -2
  235. package/server/{specialist-logs-DynFhFXg.js → specialist-logs-CvDxquV_.js} +3 -3
  236. package/server/{specialists-LJ9MZMCz.js → specialists-BCjcG4uE.js} +1 -1
  237. package/server/{specialists-BUKBHtmQ.js → specialists-BYi0k8CZ.js} +18 -18
  238. package/server/{specialists-e0Jmecc1.js → specialists-D07ybnam.js} +78 -85
  239. package/server/{specialists-CF02f9p2.js → specialists-F2uMO4QS.js} +1 -1
  240. package/server/specs-DeS98l_p.js +3 -0
  241. package/server/{src-CNLON0co.js → src-BswtmojL.js} +6 -6
  242. package/server/{src-DhJeCV1p.js → src-Dp0WHgDZ.js} +3 -3
  243. package/server/{src-AXK4mjue.js → src-fgbU-jJ-.js} +6 -3
  244. package/server/{stack-health-8jZH0Lgk.js → stack-health-BJVh1TCg.js} +3 -3
  245. package/server/{stack-health-CXYHwv5D.js → stack-health-Deel1mSW.js} +1 -1
  246. package/server/{state-home-XkLSsJCD.js → state-home-Bgj7i-C7.js} +8 -7
  247. package/server/{summary-fork-shfA2XOf.js → summary-fork-DedqguZb.js} +2 -2
  248. package/server/{summary-fork-BWa0ECGL.js → summary-fork-EjvOkEPl.js} +12 -91
  249. package/server/{supervisor-owMkHcx8.js → supervisor-0oXvLwyC.js} +3 -3
  250. package/server/supervisor-D1-XwmZ7.js +2 -0
  251. package/server/{swarm-readiness-BACUsKOx.js → swarm-readiness-OBgamRql.js} +3 -3
  252. package/server/{teardown-workspace-CYt_PBaq.js → teardown-workspace-5LCVbjfq.js} +14 -14
  253. package/server/{test-agent-queue-C1s6mB8C.js → test-agent-queue-qfsq6uaC.js} +6 -6
  254. package/server/{test-verdict-CmxX3KEf.js → test-verdict-BkubHtti.js} +1 -1
  255. package/server/{test-verdict-njEv9ZY2.js → test-verdict-D3Il7cBK.js} +1 -1
  256. package/server/{tldr-daemon-CEUflKr2.js → tldr-daemon-CJW_P4On.js} +2 -2
  257. package/server/{tldr-daemon-HIo0dwDB.js → tldr-daemon-CJqGsDFh.js} +1 -1
  258. package/server/tmux-CeDD14p1.js +3 -0
  259. package/server/{tmux-CBYZ5lKF.js → tmux-ePNhMIMU.js} +2 -2
  260. package/server/{token-CiS3w6Ma.js → token-_qujO3JZ.js} +1 -1
  261. package/server/{tracker-config-CVCoeaaL.js → tracker-config-C3hiPVAM.js} +2 -2
  262. package/server/{tracker-config-Bx50plWp.js → tracker-config-Drt_tx4D.js} +1 -1
  263. package/server/{tracker-utils-C2Lg4RoB.js → tracker-utils-D6B8scEw.js} +1 -1
  264. package/server/{tracker-utils-mI4d-vh8.js → tracker-utils-bpWs7Xyx.js} +2 -2
  265. package/server/{traefik-connect-D21-YEyX.js → traefik-connect-5EP1WS_Z.js} +1 -1
  266. package/server/{tunnel-BK4PVyb0.js → tunnel-3Ve8BS4H.js} +3 -3
  267. package/server/{tunnel-CcHkuRIS.js → tunnel-AporWhoi.js} +1 -1
  268. package/server/{types-DoPMvws2.js → types-B5u3NxMl.js} +1 -1
  269. package/server/{uat-train-BLFPxqLx.js → uat-train-C3hWXtip.js} +1 -1
  270. package/server/{uat-train-CQ_E-2ei.js → uat-train-CtNGgXxj.js} +27 -27
  271. package/server/{validation-Dab3bnSN.js → validation-BmUB-26g.js} +4 -4
  272. package/server/{validation-1QnjDMc0.js → validation-CbqP_dze.js} +1 -1
  273. package/server/{verification-runner-BO8TgZWA.js → verification-runner-BPAhPWR7.js} +11 -11
  274. package/server/{verification-runner-UhAAqOio.js → verification-runner-DuZRHjPU.js} +1 -1
  275. package/server/{vtt-parser-D-q5-8il.js → vtt-parser-CKc-smWM.js} +1 -1
  276. package/server/{work-agent-prompt-D_7T1xw5.js → work-agent-prompt-DCdHsm-V.js} +11 -11
  277. package/server/workflows-Cz8OtiB4.js +2 -0
  278. package/server/{workflows-CB5SWd0B.js → workflows-H-COJ84X.js} +14 -14
  279. package/server/{workspace-C4Avf_Tp.js → workspace-4ZufqeMe.js} +3 -3
  280. package/server/{workspace--XWYPbn1.js → workspace-DYv9kBg6.js} +1 -1
  281. package/server/{workspace-config-BwJB-bLH.js → workspace-config-DA8U97k9.js} +1 -1
  282. package/server/{workspace-manager-_6zbrhNF.js → workspace-manager-B3PqQQSM.js} +1 -1
  283. package/server/{workspace-manager-BE3OznLY.js → workspace-manager-CEWK-OXd.js} +12 -12
  284. package/server/{workspace-metadata-BCgODi1j.js → workspace-metadata-1eu1RvAT.js} +2 -2
  285. package/server/{workspace-metadata-wKPgY8PN.js → workspace-metadata-C0I-nIDL.js} +1 -1
  286. package/server/{workspaces-DpMiZ9BP.js → workspaces-CRU9_vRn.js} +154 -106
  287. package/server/agent-state-DTZCqWx5.js +0 -3
  288. package/server/cli-wyiCmp7b.js +0 -3
  289. package/server/deacon-swarm-jDiQ0kKk.js +0 -2
  290. package/server/dist-CnkaBMG-.js +0 -3
  291. package/server/forge-D2QLGWK9.js +0 -2
  292. package/server/hume-sCsuupWb.js +0 -3
  293. package/server/inspect-agent-DnspoIls.js +0 -2
  294. package/server/merge-ops-B6xc_Irj.js +0 -2
  295. package/server/public/assets/mermaid-GHXKKRXX-uIkd-n0c.js +0 -1
  296. package/server/rally-BJiyvz3w.js +0 -3
  297. package/server/reap-terminal-sessions-mW7SPDtP.js +0 -2
  298. package/server/resume-Pur3Z2e8.js +0 -3
  299. package/server/review-agent-BRSSFv7e.js +0 -3
  300. package/server/settings-D0XXIUQ0.js +0 -2
  301. package/server/specs-COn3zZ2Q.js +0 -3
  302. package/server/supervisor-DwGIhpXk.js +0 -2
  303. package/server/tmux-DNmHGMEv.js +0 -3
  304. package/server/workflows-Plo_VxeO.js +0 -2
@@ -0,0 +1,483 @@
1
+ CREATE TABLE `agents` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `issue_id` text NOT NULL,
4
+ `role` text NOT NULL,
5
+ `status` text NOT NULL,
6
+ `workspace` text NOT NULL,
7
+ `session_id` text,
8
+ `harness` text NOT NULL,
9
+ `model` text NOT NULL,
10
+ `host_override` text,
11
+ `delivery_method` text,
12
+ `started_at` integer,
13
+ `last_resume_at` integer,
14
+ `stopped_by_user` integer,
15
+ `stopped_by_pause` integer,
16
+ `kickoff_delivered` integer,
17
+ `paused` integer,
18
+ `paused_reason` text,
19
+ `yielded_by_scheduler` integer,
20
+ `yielded_at` integer,
21
+ `last_yield_resume_at` integer,
22
+ `troubled` integer,
23
+ `channels_enabled` integer,
24
+ `consecutive_failures` integer DEFAULT 0,
25
+ `first_failure_in_run_at` integer,
26
+ `last_failure_next_retry_at` integer,
27
+ `stopped_at` integer,
28
+ `paused_at` integer,
29
+ `troubled_at` integer,
30
+ `last_activity` integer,
31
+ `last_failure_reason` text,
32
+ `phase` text,
33
+ `role_run_head` text,
34
+ `flywheel_run_id` text,
35
+ `cost_so_far` real,
36
+ `review_sub_role` text,
37
+ `review_run_id` text,
38
+ `review_synthesis_agent_id` text,
39
+ `review_output_path` text,
40
+ `review_deadline_at` integer,
41
+ `review_monitor_signaled` text,
42
+ `review_retry_attempt` integer,
43
+ `updated_at` integer NOT NULL,
44
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
45
+ );
46
+ --> statement-breakpoint
47
+ CREATE INDEX `agents_issue_idx` ON `agents` (`issue_id`);--> statement-breakpoint
48
+ CREATE TABLE `app_settings` (
49
+ `key` text PRIMARY KEY NOT NULL,
50
+ `value` text,
51
+ `updated_at` integer
52
+ );
53
+ --> statement-breakpoint
54
+ CREATE TABLE `conversation_files` (
55
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
56
+ `conversation_id` text NOT NULL,
57
+ `harness` text NOT NULL,
58
+ `locator` text NOT NULL,
59
+ `created_at` integer NOT NULL,
60
+ FOREIGN KEY (`conversation_id`) REFERENCES `conversations`(`id`) ON UPDATE no action ON DELETE no action
61
+ );
62
+ --> statement-breakpoint
63
+ CREATE INDEX `conv_files_conv_idx` ON `conversation_files` (`conversation_id`);--> statement-breakpoint
64
+ CREATE TABLE `conversations` (
65
+ `id` text PRIMARY KEY NOT NULL,
66
+ `name` text NOT NULL,
67
+ `cwd` text NOT NULL,
68
+ `issue_id` text,
69
+ `harness` text,
70
+ `model` text,
71
+ `effort` text,
72
+ `title` text,
73
+ `title_source` text,
74
+ `created_at` integer NOT NULL,
75
+ `archived_at` integer,
76
+ `handoff_doc_path` text,
77
+ `handoff_target_conv_id` text,
78
+ `cleared_to_conv_id` text,
79
+ `tmux_session` text,
80
+ `status` text NOT NULL DEFAULT 'active',
81
+ `ended_at` integer,
82
+ `last_attached_at` integer,
83
+ `session_file` text,
84
+ `total_cost` real DEFAULT 0,
85
+ `total_tokens` integer DEFAULT 0,
86
+ `fork_status` text,
87
+ `fork_error` text,
88
+ `fork_retry_count` integer NOT NULL DEFAULT 0,
89
+ `fork_request` text,
90
+ `fork_fallback_reason` text,
91
+ `delivery_method` text,
92
+ `spawn_error` text,
93
+ FOREIGN KEY (`handoff_target_conv_id`) REFERENCES `conversations`(`id`) ON UPDATE no action ON DELETE no action,
94
+ FOREIGN KEY (`cleared_to_conv_id`) REFERENCES `conversations`(`id`) ON UPDATE no action ON DELETE no action
95
+ );
96
+ --> statement-breakpoint
97
+ CREATE UNIQUE INDEX `conversations_name_unique` ON `conversations` (`name`);--> statement-breakpoint
98
+ CREATE INDEX `conversations_issue_idx` ON `conversations` (`issue_id`);--> statement-breakpoint
99
+ CREATE TABLE `cost_events` (
100
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
101
+ `ts` integer NOT NULL,
102
+ `issue_id` text,
103
+ `agent_id` text,
104
+ `session_id` text,
105
+ `session_type` text,
106
+ `provider` text,
107
+ `model` text,
108
+ `input` integer,
109
+ `output` integer,
110
+ `cache_read` integer,
111
+ `cache_write` integer,
112
+ `cost` real,
113
+ `request_id` text,
114
+ `source_file` text
115
+ );
116
+ --> statement-breakpoint
117
+ CREATE INDEX `cost_issue_idx` ON `cost_events` (`issue_id`);--> statement-breakpoint
118
+ CREATE INDEX `cost_ts_idx` ON `cost_events` (`ts`);--> statement-breakpoint
119
+ CREATE INDEX `cost_session_id_idx` ON `cost_events` (`session_id`);--> statement-breakpoint
120
+ CREATE UNIQUE INDEX `cost_request_id_idx` ON `cost_events` (`request_id`) WHERE request_id IS NOT NULL;--> statement-breakpoint
121
+ CREATE TABLE `events` (
122
+ `sequence` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
123
+ `type` text NOT NULL,
124
+ `timestamp` integer NOT NULL,
125
+ `payload` text
126
+ );
127
+ --> statement-breakpoint
128
+ CREATE INDEX `events_type_ts_idx` ON `events` (`type`,`timestamp`);--> statement-breakpoint
129
+ CREATE TABLE `favorites` (
130
+ `type` text NOT NULL,
131
+ `item_id` text NOT NULL,
132
+ `created_at` integer NOT NULL,
133
+ PRIMARY KEY(`type`, `item_id`)
134
+ );
135
+ --> statement-breakpoint
136
+ CREATE TABLE `health_events` (
137
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
138
+ `agent_id` text,
139
+ `timestamp` integer NOT NULL,
140
+ `state` text NOT NULL,
141
+ `source` text,
142
+ `metadata` text
143
+ );
144
+ --> statement-breakpoint
145
+ CREATE INDEX `health_agent_ts_idx` ON `health_events` (`agent_id`,`timestamp`);--> statement-breakpoint
146
+ CREATE TABLE `issue_policy` (
147
+ `issue_id` text PRIMARY KEY NOT NULL,
148
+ `deacon_ignored` integer,
149
+ `deacon_ignored_reason` text,
150
+ `auto_merge` integer,
151
+ `updated_at` integer,
152
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
153
+ );
154
+ --> statement-breakpoint
155
+ CREATE TABLE `issues` (
156
+ `id` text PRIMARY KEY NOT NULL,
157
+ `stage` text NOT NULL,
158
+ `review_outcome` text,
159
+ `test_outcome` text,
160
+ `verification_outcome` text,
161
+ `verdict_commit` text,
162
+ `blockers` text,
163
+ `plan_ref` text,
164
+ `pr_url` text,
165
+ `pr_number` integer,
166
+ `pr_head_sha` text,
167
+ `updated_at` integer NOT NULL
168
+ );
169
+ --> statement-breakpoint
170
+ CREATE INDEX `issues_stage_idx` ON `issues` (`stage`);--> statement-breakpoint
171
+ CREATE TABLE `merge_queue` (
172
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
173
+ `project_key` text NOT NULL,
174
+ `issue_id` text NOT NULL,
175
+ `position` integer NOT NULL,
176
+ `status` text DEFAULT 'queued' NOT NULL,
177
+ `queued_at` integer NOT NULL,
178
+ `started_at` integer,
179
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
180
+ );
181
+ --> statement-breakpoint
182
+ CREATE UNIQUE INDEX `merge_queue_issue_id_unique` ON `merge_queue` (`issue_id`);--> statement-breakpoint
183
+ CREATE INDEX `merge_queue_project_idx` ON `merge_queue` (`project_key`,`position`);--> statement-breakpoint
184
+ CREATE TABLE `merge_set_repos` (
185
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
186
+ `issue_id` text NOT NULL,
187
+ `repo_key` text NOT NULL,
188
+ `repo_path` text NOT NULL,
189
+ `forge` text NOT NULL,
190
+ `source_branch` text NOT NULL,
191
+ `target_branch` text NOT NULL,
192
+ `artifact_url` text,
193
+ `artifact_id` text,
194
+ `review_status` text DEFAULT 'pending' NOT NULL,
195
+ `test_status` text DEFAULT 'pending' NOT NULL,
196
+ `rebase_status` text DEFAULT 'pending' NOT NULL,
197
+ `verification_status` text DEFAULT 'pending' NOT NULL,
198
+ `merge_status` text DEFAULT 'pending' NOT NULL,
199
+ `merge_order` integer DEFAULT 0 NOT NULL,
200
+ `required` integer DEFAULT true NOT NULL,
201
+ FOREIGN KEY (`issue_id`) REFERENCES `merge_sets`(`issue_id`) ON UPDATE no action ON DELETE no action
202
+ );
203
+ --> statement-breakpoint
204
+ CREATE INDEX `merge_set_repos_issue_idx` ON `merge_set_repos` (`issue_id`);--> statement-breakpoint
205
+ CREATE TABLE `merge_sets` (
206
+ `issue_id` text PRIMARY KEY NOT NULL,
207
+ `project_key` text NOT NULL,
208
+ `project_path` text NOT NULL,
209
+ `workspace_type` text NOT NULL,
210
+ `status` text DEFAULT 'draft' NOT NULL,
211
+ `created_at` integer NOT NULL,
212
+ `updated_at` integer NOT NULL,
213
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
214
+ );
215
+ --> statement-breakpoint
216
+ CREATE INDEX `merge_sets_project_idx` ON `merge_sets` (`project_key`,`updated_at`);--> statement-breakpoint
217
+ CREATE TABLE `pending_auto_merges` (
218
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
219
+ `issue_id` text NOT NULL,
220
+ `pr_url` text NOT NULL,
221
+ `project_key` text NOT NULL,
222
+ `forge` text DEFAULT 'github' NOT NULL,
223
+ `status` text NOT NULL,
224
+ `scheduled_merge_at` integer NOT NULL,
225
+ `scheduled_at` integer NOT NULL,
226
+ `merged_at` integer,
227
+ `failure_reason` text,
228
+ `cancelled_at` integer,
229
+ `cancelled_by` text,
230
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
231
+ );
232
+ --> statement-breakpoint
233
+ CREATE INDEX `pending_auto_merges_issue_idx` ON `pending_auto_merges` (`issue_id`);--> statement-breakpoint
234
+ CREATE UNIQUE INDEX `pending_auto_merges_active_issue_idx` ON `pending_auto_merges` (`issue_id`) WHERE status IN ('pending','merging');--> statement-breakpoint
235
+ CREATE TABLE `review_run_agents` (
236
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
237
+ `run_id` text NOT NULL,
238
+ `agent_id` text,
239
+ `sub_role` text,
240
+ `output_path` text,
241
+ `deadline_at` integer,
242
+ `monitor_signaled` text,
243
+ `retry_attempt` integer,
244
+ FOREIGN KEY (`run_id`) REFERENCES `review_runs`(`run_id`) ON UPDATE no action ON DELETE no action
245
+ );
246
+ --> statement-breakpoint
247
+ CREATE INDEX `review_run_agents_run_idx` ON `review_run_agents` (`run_id`);--> statement-breakpoint
248
+ CREATE TABLE `review_runs` (
249
+ `run_id` text PRIMARY KEY NOT NULL,
250
+ `issue_id` text NOT NULL,
251
+ `review_synthesis_agent_id` text,
252
+ `verification_cycle_count` integer DEFAULT 0,
253
+ `auto_requeue_count` integer DEFAULT 0,
254
+ `merge_retry_count` integer DEFAULT 0,
255
+ `test_retry_count` integer DEFAULT 0,
256
+ `review_retry_count` integer DEFAULT 0,
257
+ `stuck` integer DEFAULT false NOT NULL,
258
+ `stuck_reason` text,
259
+ `review_spawned_at` integer,
260
+ `conflict_resolution_dispatched_at` integer,
261
+ `recovery_started_at` integer,
262
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
263
+ );
264
+ --> statement-breakpoint
265
+ CREATE INDEX `review_runs_issue_idx` ON `review_runs` (`issue_id`);--> statement-breakpoint
266
+ CREATE TABLE `review_status` (
267
+ `issue_id` text PRIMARY KEY NOT NULL,
268
+ `review_status` text DEFAULT 'pending' NOT NULL,
269
+ `test_status` text DEFAULT 'pending' NOT NULL,
270
+ `merge_status` text,
271
+ `inspect_status` text,
272
+ `inspect_notes` text,
273
+ `inspect_started_at` integer,
274
+ `inspect_bead_id` text,
275
+ `verification_status` text,
276
+ `verification_notes` text,
277
+ `verification_cycle_count` integer DEFAULT 0,
278
+ `verification_max_cycles` integer,
279
+ `review_notes` text,
280
+ `test_notes` text,
281
+ `merge_notes` text,
282
+ `updated_at` integer NOT NULL,
283
+ `ready_for_merge` integer DEFAULT 0 NOT NULL,
284
+ `auto_requeue_count` integer DEFAULT 0,
285
+ `merge_retry_count` integer DEFAULT 0,
286
+ `pr_url` text,
287
+ `pr_head_sha` text,
288
+ `pr_number` integer,
289
+ `stuck` integer DEFAULT 0 NOT NULL,
290
+ `stuck_reason` text,
291
+ `stuck_at` integer,
292
+ `stuck_details` text,
293
+ `reviewed_at_commit` text,
294
+ `review_spawned_at` integer,
295
+ `conflict_resolution_dispatched_at` integer,
296
+ `test_retry_count` integer DEFAULT 0,
297
+ `review_retry_count` integer DEFAULT 0,
298
+ `recovery_started_at` integer,
299
+ `deacon_ignored` integer DEFAULT 0 NOT NULL,
300
+ `deacon_ignored_at` integer,
301
+ `deacon_ignored_reason` text,
302
+ `blocker_reasons` text,
303
+ `last_verified_commit` text,
304
+ `merge_step` text,
305
+ `auto_merge` integer
306
+ );
307
+ --> statement-breakpoint
308
+ CREATE INDEX `review_status_updated_idx` ON `review_status` (`updated_at`);--> statement-breakpoint
309
+ CREATE TABLE `status_history` (
310
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
311
+ `issue_id` text NOT NULL,
312
+ `type` text NOT NULL,
313
+ `status` text NOT NULL,
314
+ `timestamp` integer NOT NULL,
315
+ `notes` text,
316
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
317
+ );
318
+ --> statement-breakpoint
319
+ CREATE INDEX `status_history_issue_idx` ON `status_history` (`issue_id`,`timestamp`);--> statement-breakpoint
320
+ CREATE UNIQUE INDEX `status_history_unique_idx` ON `status_history` (`issue_id`,`type`,`status`,`timestamp`);--> statement-breakpoint
321
+ CREATE TABLE `transcript_checkpoints` (
322
+ `session_id` text PRIMARY KEY NOT NULL,
323
+ `transcript_path` text NOT NULL,
324
+ `last_offset` integer DEFAULT 0 NOT NULL,
325
+ `claim_owner` text,
326
+ `claim_from` integer,
327
+ `claim_to` integer,
328
+ `claim_expires_at` integer,
329
+ `mid_turn_count_in_current_turn` integer DEFAULT 0,
330
+ `last_mid_turn_at` integer,
331
+ `project_id` text,
332
+ `workspace_id` text,
333
+ `issue_id` text,
334
+ `updated_at` integer NOT NULL
335
+ );
336
+ --> statement-breakpoint
337
+ CREATE TABLE `transcripts` (
338
+ `backing_file_path` text PRIMARY KEY NOT NULL,
339
+ `session_id` text,
340
+ `harness` text,
341
+ `workspace_path` text,
342
+ `message_count` integer,
343
+ `models` text,
344
+ `token_input` integer,
345
+ `token_output` integer,
346
+ `first_ts` integer,
347
+ `last_ts` integer,
348
+ `pan_issue_id` text,
349
+ `pan_agent_id` text,
350
+ `file_mtime` integer,
351
+ `scanned_at` integer
352
+ );
353
+ --> statement-breakpoint
354
+ CREATE TABLE `uat_generation_members` (
355
+ `uat_name` text NOT NULL,
356
+ `issue_id` text NOT NULL,
357
+ `role` text DEFAULT 'member' NOT NULL,
358
+ `title` text,
359
+ `branch` text,
360
+ `head_sha` text,
361
+ `merge_order` integer,
362
+ `pr` integer,
363
+ `pr_url` text,
364
+ `reason` text,
365
+ PRIMARY KEY(`uat_name`, `issue_id`),
366
+ FOREIGN KEY (`uat_name`) REFERENCES `uat_generations`(`name`) ON UPDATE no action ON DELETE no action,
367
+ FOREIGN KEY (`issue_id`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action
368
+ );
369
+ --> statement-breakpoint
370
+ CREATE TABLE `uat_generation_resolutions` (
371
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
372
+ `uat_name` text NOT NULL,
373
+ `issue_ids` text NOT NULL,
374
+ `files` text NOT NULL,
375
+ `commit_sha` text NOT NULL,
376
+ FOREIGN KEY (`uat_name`) REFERENCES `uat_generations`(`name`) ON UPDATE no action ON DELETE no action
377
+ );
378
+ --> statement-breakpoint
379
+ CREATE INDEX `uat_resolutions_uat_idx` ON `uat_generation_resolutions` (`uat_name`);--> statement-breakpoint
380
+ CREATE TABLE `uat_generations` (
381
+ `name` text PRIMARY KEY NOT NULL,
382
+ `worktree_path` text NOT NULL,
383
+ `project_root` text NOT NULL,
384
+ `base_sha` text NOT NULL,
385
+ `status` text DEFAULT 'assembling' NOT NULL,
386
+ `stack_started_at` integer,
387
+ `cleaned_at` integer,
388
+ `created_at` integer NOT NULL,
389
+ `updated_at` integer NOT NULL
390
+ );
391
+ --> statement-breakpoint
392
+ CREATE INDEX `uat_status_idx` ON `uat_generations` (`status`);--> statement-breakpoint
393
+ CREATE TABLE `discovered_sessions` (
394
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
395
+ `jsonl_path` text NOT NULL UNIQUE,
396
+ `harness` text,
397
+ `session_id` text,
398
+ `workspace_path` text,
399
+ `workspace_hash` text,
400
+ `message_count` integer NOT NULL DEFAULT 0,
401
+ `first_ts` integer,
402
+ `last_ts` integer,
403
+ `models_used` text,
404
+ `primary_model` text,
405
+ `token_input` integer NOT NULL DEFAULT 0,
406
+ `token_output` integer NOT NULL DEFAULT 0,
407
+ `estimated_cost` real NOT NULL DEFAULT 0,
408
+ `tools_used` text,
409
+ `files_touched` text,
410
+ `tags` text,
411
+ `summary` text,
412
+ `summary_detailed` text,
413
+ `enrichment_level` integer NOT NULL DEFAULT 0,
414
+ `enrichment_model` text,
415
+ `enriched_at` integer,
416
+ `enrichment_failed` integer NOT NULL DEFAULT 0,
417
+ `overdeck_managed` integer NOT NULL DEFAULT 0,
418
+ `pan_issue_id` text,
419
+ `pan_agent_id` text,
420
+ `file_size` integer,
421
+ `file_mtime` integer,
422
+ `scanned_at` integer NOT NULL
423
+ );--> statement-breakpoint
424
+ CREATE INDEX `idx_discovered_workspace` ON `discovered_sessions` (`workspace_path`);--> statement-breakpoint
425
+ CREATE INDEX `idx_discovered_last_ts` ON `discovered_sessions` (`last_ts`);--> statement-breakpoint
426
+ CREATE INDEX `idx_discovered_enrichment` ON `discovered_sessions` (`enrichment_level`,`enriched_at`);--> statement-breakpoint
427
+ CREATE INDEX `idx_discovered_managed` ON `discovered_sessions` (`overdeck_managed`,`pan_issue_id`);--> statement-breakpoint
428
+ CREATE INDEX `idx_discovered_model` ON `discovered_sessions` (`primary_model`);--> statement-breakpoint
429
+ CREATE INDEX `idx_discovered_session_id` ON `discovered_sessions` (`session_id`) WHERE session_id IS NOT NULL;--> statement-breakpoint
430
+ CREATE TABLE `discovered_session_tags` (
431
+ `session_id` integer NOT NULL REFERENCES `discovered_sessions`(`id`) ON DELETE CASCADE,
432
+ `tag` text NOT NULL,
433
+ PRIMARY KEY (`session_id`, `tag`)
434
+ );--> statement-breakpoint
435
+ CREATE INDEX `idx_discovered_session_tags_tag` ON `discovered_session_tags` (`tag`,`session_id`);--> statement-breakpoint
436
+ CREATE TABLE `discovered_session_tools` (
437
+ `session_id` integer NOT NULL REFERENCES `discovered_sessions`(`id`) ON DELETE CASCADE,
438
+ `tool` text NOT NULL,
439
+ PRIMARY KEY (`session_id`, `tool`)
440
+ );--> statement-breakpoint
441
+ CREATE INDEX `idx_discovered_session_tools_tool` ON `discovered_session_tools` (`tool`,`session_id`);--> statement-breakpoint
442
+ CREATE TABLE `discovered_session_files` (
443
+ `session_id` integer NOT NULL REFERENCES `discovered_sessions`(`id`) ON DELETE CASCADE,
444
+ `file_path` text NOT NULL,
445
+ PRIMARY KEY (`session_id`, `file_path`)
446
+ );--> statement-breakpoint
447
+ CREATE INDEX `idx_discovered_session_files_file_path` ON `discovered_session_files` (`file_path`,`session_id`);--> statement-breakpoint
448
+ CREATE TABLE `session_embeddings` (
449
+ `session_id` integer NOT NULL REFERENCES `discovered_sessions`(`id`) ON DELETE CASCADE,
450
+ `model` text NOT NULL,
451
+ `dim` integer NOT NULL,
452
+ `embedding` blob NOT NULL,
453
+ `created_at` integer NOT NULL,
454
+ PRIMARY KEY (`session_id`, `model`)
455
+ );--> statement-breakpoint
456
+ CREATE TABLE `git_operations` (
457
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
458
+ `operation` text NOT NULL,
459
+ `branch` text,
460
+ `issue_id` text,
461
+ `before_sha` text,
462
+ `after_sha` text,
463
+ `remote_sha` text,
464
+ `status` text NOT NULL,
465
+ `error` text,
466
+ `ts` integer NOT NULL
467
+ );--> statement-breakpoint
468
+ CREATE INDEX `idx_git_ops_ts` ON `git_operations` (`ts`);--> statement-breakpoint
469
+ CREATE INDEX `idx_git_ops_issue` ON `git_operations` (`issue_id`,`ts`);--> statement-breakpoint
470
+ CREATE TABLE `flywheel_substrate_bugs` (
471
+ `issue_id` text PRIMARY KEY NOT NULL,
472
+ `filed_at` integer NOT NULL,
473
+ `run_id` text,
474
+ `filed_by` text NOT NULL,
475
+ `discovered_in_issue_id` text,
476
+ `severity` text NOT NULL DEFAULT 'P2',
477
+ `status` text NOT NULL DEFAULT 'open',
478
+ `fix_merged_at` integer,
479
+ `fix_commit_sha` text,
480
+ `updated_at` integer NOT NULL
481
+ );--> statement-breakpoint
482
+ CREATE INDEX `idx_fsb_filed_at` ON `flywheel_substrate_bugs` (`filed_at`);--> statement-breakpoint
483
+ CREATE INDEX `idx_fsb_status` ON `flywheel_substrate_bugs` (`status`);--> statement-breakpoint
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overdeck/desktop",
3
- "version": "0.45.6",
3
+ "version": "0.45.8",
4
4
  "description": "Overdeck Command Deck — AI agent monitoring desktop app",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -18,7 +18,8 @@
18
18
  "bin",
19
19
  "dist-electron",
20
20
  "server",
21
- "resources"
21
+ "resources",
22
+ "drizzle"
22
23
  ],
23
24
  "engines": {
24
25
  "node": ">=22.0.0"
@@ -44,6 +45,7 @@
44
45
  "electron": "40.6.0"
45
46
  },
46
47
  "devDependencies": {
48
+ "@electron/notarize": "^2.5.0",
47
49
  "@overdeck/contracts": "workspace:*",
48
50
  "@types/node": "^22.0.0",
49
51
  "electron-builder": "^25.1.8",
@@ -65,6 +67,10 @@
65
67
  "!dist-electron/**/*.map"
66
68
  ],
67
69
  "extraResources": [
70
+ {
71
+ "from": "drizzle",
72
+ "to": "drizzle"
73
+ },
68
74
  {
69
75
  "from": "server",
70
76
  "to": "server",
@@ -100,7 +106,12 @@
100
106
  }
101
107
  ],
102
108
  "icon": "resources/icon.png",
103
- "category": "public.app-category.developer-tools"
109
+ "category": "public.app-category.developer-tools",
110
+ "hardenedRuntime": true,
111
+ "gatekeeperAssess": false,
112
+ "entitlements": "build/entitlements.mac.plist",
113
+ "entitlementsInherit": "build/entitlements.mac.plist",
114
+ "notarize": false
104
115
  },
105
116
  "dmg": {
106
117
  "title": "Overdeck",
@@ -121,6 +132,7 @@
121
132
  "oneClick": false,
122
133
  "allowToChangeInstallationDirectory": true
123
134
  },
124
- "afterPack": "scripts/afterPack.cjs"
135
+ "afterPack": "scripts/afterPack.cjs",
136
+ "afterSign": "scripts/notarize.cjs"
125
137
  }
126
138
  }
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { b as init_types, o as init_io, x as subItemsOf } from "./io-DtAQ_2hp.js";
2
+ import { b as init_types, o as init_io, x as subItemsOf } from "./io-Wy8YpFeP.js";
3
3
  import "effect";
4
4
  //#region ../../lib/vbrief/acceptance-criteria.ts
5
5
  /**
@@ -30,4 +30,4 @@ var init_acceptance_criteria = __esmMin((() => {
30
30
  //#endregion
31
31
  export { init_acceptance_criteria as n, extractACFromDocument as t };
32
32
 
33
- //# sourceMappingURL=acceptance-criteria-DYffaKI9.js.map
33
+ //# sourceMappingURL=acceptance-criteria-l0DSvFFS.js.map
@@ -1,3 +1,3 @@
1
- import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-Dm95Ua07.js";
1
+ import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-pcbf-e30.js";
2
2
  init_activity_logger();
3
3
  export { emitActivityEntrySync, emitActivityTtsSync };
@@ -56,7 +56,8 @@ function emitActivityEntrySync(options) {
56
56
  message: options.message,
57
57
  details: options.details,
58
58
  issueId: options.issueId,
59
- link: options.link
59
+ link: options.link,
60
+ desktop: options.desktop
60
61
  }
61
62
  });
62
63
  }
@@ -186,4 +187,4 @@ var init_activity_logger = __esmMin((() => {
186
187
  //#endregion
187
188
  export { init_activity_logger as a, emitDashboardLifecycleSync as i, emitActivityEntrySync as n, setActivityEventStoreProvider as o, emitActivityTtsSync as r, emitActivityDetailedSync as t };
188
189
 
189
- //# sourceMappingURL=activity-logger-Dm95Ua07.js.map
190
+ //# sourceMappingURL=activity-logger-pcbf-e30.js.map
@@ -1,13 +1,14 @@
1
- import { O as listSessionNames, w as killSession, x as init_tmux } from "./tmux-CBYZ5lKF.js";
2
- import { c as init_review_status, s as getReviewStatusSync, u as loadReviewStatuses } from "./review-status-DWAsTqfJ.js";
3
- import { Jn as saveAgentStateSync, Pn as getAgentStateSync, Vn as markAgentStoppedState, er as init_persistent_logger, mr as getAgentRuntimeStateSync, nr as logDeaconEventSync, t as init_agents } from "./agents-D_x5BSZM.js";
4
- import { l as selectNonMergedTerminalAdvancingSessions, r as isIdlePastThreshold, s as selectMergedAdvancingSessions, u as selectTerminalAdvancingSessions } from "./reap-terminal-sessions-C6rD1pDT.js";
1
+ import { O as listSessionNames, w as killSession, x as init_tmux } from "./tmux-ePNhMIMU.js";
2
+ import { c as init_review_status, s as getReviewStatusSync, u as loadReviewStatuses } from "./review-status-BQjqQXZG.js";
3
+ import { Jn as saveAgentStateSync, Pn as getAgentStateSync, Vn as markAgentStoppedState, er as init_persistent_logger, nr as logDeaconEventSync, t as init_agents } from "./agents-DHvsjsuP.js";
4
+ import { o as selectMergedAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-CAmURC2h.js";
5
5
  import { Effect } from "effect";
6
6
  //#region ../../lib/cloister/advancing-selfheal.ts
7
7
  init_agents();
8
8
  init_persistent_logger();
9
9
  init_review_status();
10
10
  init_tmux();
11
+ init_reap_terminal_sessions();
11
12
  const JOURNAL_RECONCILE_STATES = new Set([
12
13
  "pending",
13
14
  "reviewing",
@@ -84,33 +85,11 @@ function markAdvancingSessionStopped(session, deps = defaultDeps) {
84
85
  return true;
85
86
  }
86
87
  /**
87
- * PAN-1716: Reap completed advancing-role sessions that have a recorded
88
- * terminal verdict but are still tmux-alive.
89
- */
90
- async function checkTerminalAdvancingSessions() {
91
- const actions = [];
92
- try {
93
- const toKill = selectTerminalAdvancingSessions(loadReviewStatuses(), [...await Effect.runPromise(listSessionNames())]);
94
- for (const session of toKill) try {
95
- await Effect.runPromise(killSession(session));
96
- actions.push(`Reaped terminal advancing session ${session} (verdict recorded, session idle)`);
97
- console.log(`[deacon] Reaped terminal advancing session ${session} (PAN-1716)`);
98
- logDeaconEventSync(`checkTerminalAdvancingSessions: reaped ${session} — phase verdict terminal but session alive (PAN-1716)`);
99
- } catch (err) {
100
- console.warn(`[deacon] Failed to reap terminal session ${session}: ${err instanceof Error ? err.message : String(err)}`);
101
- }
102
- } catch (error) {
103
- const msg = error instanceof Error ? error.message : String(error);
104
- console.error("[deacon] Error reaping terminal advancing sessions:", msg);
105
- }
106
- return actions;
107
- }
108
- /**
109
88
  * PAN-2341: Reap advancing-role sessions for already-merged issues.
110
89
  *
111
- * KEEP_SPECIALIST_SESSIONS_ALIVE can intentionally leave review/test/ship panes
112
- * visible, but once the issue is merged those sessions have no remaining role in
113
- * the pipeline and still occupy the advancing ceiling. Kill the tmux session and
90
+ * The warm-by-default lifecycle (PAN-2579) intentionally leaves review/test/ship
91
+ * panes alive, but once the issue is MERGED those sessions have no remaining role
92
+ * in the pipeline (close-out territory). Kill the tmux session and
114
93
  * mark the agents-table row stopped so countRunningAgents() frees the slot.
115
94
  */
116
95
  async function checkMergedAdvancingSessions() {
@@ -134,48 +113,14 @@ async function checkMergedAdvancingSessions() {
134
113
  }
135
114
  return actions;
136
115
  }
137
- /**
138
- * PAN-2341: Reap non-merged terminal advancing sessions after a short idle
139
- * window. This bypasses specialist keep-alive only after the pane has sat idle
140
- * long enough for operator inspection, then marks the agents row stopped so the
141
- * advancing ceiling frees in the same patrol.
142
- */
143
- async function checkIdleTerminalAdvancingSessions() {
144
- const actions = [];
145
- try {
146
- const candidates = selectNonMergedTerminalAdvancingSessions(loadReviewStatuses(), [...await Effect.runPromise(listSessionNames())]);
147
- const now = Date.now();
148
- for (const session of candidates) {
149
- if (!isIdlePastThreshold(getAgentRuntimeStateSync(session), 6e5, now)) continue;
150
- try {
151
- await Effect.runPromise(killSession(session));
152
- } catch (err) {
153
- console.warn(`[deacon] Failed to reap idle terminal advancing session ${session}: ${err instanceof Error ? err.message : String(err)}`);
154
- }
155
- const markedStopped = markAdvancingSessionStopped(session);
156
- actions.push(markedStopped ? `Reaped idle terminal advancing session ${session} (verdict recorded, idle >=10m, row stopped)` : `Reaped idle terminal advancing session ${session} (verdict recorded, idle >=10m)`);
157
- console.log(`[deacon] Reaped idle terminal advancing session ${session} (PAN-2341)`);
158
- logDeaconEventSync(`checkIdleTerminalAdvancingSessions: reaped ${session} — terminal verdict idle >=10m (PAN-2341)`);
159
- }
160
- } catch (error) {
161
- const msg = error instanceof Error ? error.message : String(error);
162
- console.error("[deacon] Error reaping idle terminal advancing sessions:", msg);
163
- }
164
- return actions;
165
- }
166
116
  const defaultBootAdvancingSelfHealDeps = {
167
117
  reconcileInFlightJournals,
168
118
  checkMergedAdvancingSessions,
169
- checkIdleTerminalAdvancingSessions,
170
119
  log: logDeaconEventSync
171
120
  };
172
121
  async function runBootAdvancingSelfHeal(deps = defaultBootAdvancingSelfHealDeps) {
173
122
  const actions = [];
174
- const steps = [
175
- ["reconcileInFlightJournals", deps.reconcileInFlightJournals],
176
- ["checkMergedAdvancingSessions", deps.checkMergedAdvancingSessions],
177
- ["checkIdleTerminalAdvancingSessions", deps.checkIdleTerminalAdvancingSessions]
178
- ];
123
+ const steps = [["reconcileInFlightJournals", deps.reconcileInFlightJournals], ["checkMergedAdvancingSessions", deps.checkMergedAdvancingSessions]];
179
124
  for (const [name, step] of steps) try {
180
125
  const stepActions = await step();
181
126
  actions.push(...stepActions);
@@ -187,6 +132,6 @@ async function runBootAdvancingSelfHeal(deps = defaultBootAdvancingSelfHealDeps)
187
132
  return actions;
188
133
  }
189
134
  //#endregion
190
- export { checkIdleTerminalAdvancingSessions, checkMergedAdvancingSessions, checkTerminalAdvancingSessions, reconcileInFlightJournals, runBootAdvancingSelfHeal };
135
+ export { checkMergedAdvancingSessions, markAdvancingSessionStopped, reconcileInFlightJournals, runBootAdvancingSelfHeal };
191
136
 
192
- //# sourceMappingURL=advancing-selfheal-n8tAeFwE.js.map
137
+ //# sourceMappingURL=advancing-selfheal-CMlGznKv.js.map