agor-live 0.12.3 → 0.14.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 (308) hide show
  1. package/dist/cli/commands/init.d.ts +7 -0
  2. package/dist/cli/commands/init.js +48 -0
  3. package/dist/cli/commands/session/list.js +2 -0
  4. package/dist/core/api/index.d.cts +8 -8
  5. package/dist/core/api/index.d.ts +8 -8
  6. package/dist/core/{board-CZuyMRpr.d.ts → board-C3IqrR0G.d.ts} +1 -1
  7. package/dist/core/{board-ByCag4EG.d.cts → board-CBJRmIH9.d.cts} +1 -1
  8. package/dist/core/claude/index.cjs +193 -27
  9. package/dist/core/claude/index.d.cts +2 -2
  10. package/dist/core/claude/index.d.ts +2 -2
  11. package/dist/core/claude/index.js +194 -40
  12. package/dist/core/{client-gnSCmSyL.d.cts → client-DU3U-9d2.d.cts} +308 -20
  13. package/dist/core/{client-BoLj-jqT.d.ts → client-vHj7wDuz.d.ts} +308 -20
  14. package/dist/core/config/browser.d.cts +2 -2
  15. package/dist/core/config/browser.d.ts +2 -2
  16. package/dist/core/config/index.cjs +1025 -925
  17. package/dist/core/config/index.d.cts +8 -8
  18. package/dist/core/config/index.d.ts +8 -8
  19. package/dist/core/config/index.js +906 -818
  20. package/dist/core/{config-manager-CsBk-Rh2.d.cts → config-manager-B645KbNQ.d.cts} +1 -1
  21. package/dist/core/{config-manager-BLDGbZHT.d.ts → config-manager-Cf0tdDeW.d.ts} +1 -1
  22. package/dist/core/db/index.cjs +574 -225
  23. package/dist/core/db/index.d.cts +372 -250
  24. package/dist/core/db/index.d.ts +372 -250
  25. package/dist/core/db/index.js +564 -229
  26. package/dist/core/db/session-guard.cjs +44 -0
  27. package/dist/core/db/session-guard.d.cts +13 -0
  28. package/dist/core/db/session-guard.d.ts +13 -0
  29. package/dist/core/db/session-guard.js +18 -0
  30. package/dist/core/drizzle/postgres/0017_mean_korg.sql +21 -0
  31. package/dist/core/drizzle/postgres/meta/0017_snapshot.json +2367 -0
  32. package/dist/core/drizzle/postgres/meta/_journal.json +7 -0
  33. package/dist/core/drizzle/sqlite/0027_jittery_trauma.sql +15 -0
  34. package/dist/core/drizzle/sqlite/meta/0027_snapshot.json +1850 -0
  35. package/dist/core/drizzle/sqlite/meta/_journal.json +7 -0
  36. package/dist/core/environment/variable-resolver.d.cts +1 -1
  37. package/dist/core/environment/variable-resolver.d.ts +1 -1
  38. package/dist/core/{feathers-CYMJeMWB.d.ts → feathers-BZVQALvz.d.ts} +2 -2
  39. package/dist/core/{feathers-Cyk1lpAM.d.cts → feathers-Cr8h2DC8.d.cts} +2 -2
  40. package/dist/core/gateway/index.cjs +89 -12
  41. package/dist/core/gateway/index.d.cts +18 -3
  42. package/dist/core/gateway/index.d.ts +18 -3
  43. package/dist/core/gateway/index.js +89 -12
  44. package/dist/core/{gateway-B4CaePYV.d.ts → gateway-9xUZ_ukZ.d.ts} +2 -2
  45. package/dist/core/{gateway-C2NOdrxu.d.cts → gateway-rrcuwCX_.d.cts} +2 -2
  46. package/dist/core/git/index.d.cts +2 -2
  47. package/dist/core/git/index.d.ts +2 -2
  48. package/dist/core/index.cjs +439 -96
  49. package/dist/core/index.d.cts +14 -13
  50. package/dist/core/index.d.ts +14 -13
  51. package/dist/core/index.js +433 -107
  52. package/dist/core/lib/feathers-validation.cjs +4 -0
  53. package/dist/core/lib/feathers-validation.d.cts +3 -3
  54. package/dist/core/lib/feathers-validation.d.ts +3 -3
  55. package/dist/core/lib/feathers-validation.js +4 -0
  56. package/dist/core/mcp/index.cjs +156 -2
  57. package/dist/core/mcp/index.d.cts +1 -1
  58. package/dist/core/mcp/index.d.ts +1 -1
  59. package/dist/core/mcp/index.js +156 -2
  60. package/dist/core/{mcp-Bm9HwvDf.d.ts → mcp-Db0cL7Xc.d.ts} +1 -0
  61. package/dist/core/{mcp-DqadENYY.d.cts → mcp-DhSSHDnR.d.cts} +1 -0
  62. package/dist/core/{message-CrqsdxNE.d.ts → message-D_46gozx.d.ts} +16 -2
  63. package/dist/core/{message-DZitapX9.d.cts → message-Zwy5DQg7.d.cts} +16 -2
  64. package/dist/core/permissions/index.d.cts +1 -1
  65. package/dist/core/permissions/index.d.ts +1 -1
  66. package/dist/core/seed/index.cjs +184 -59
  67. package/dist/core/seed/index.js +178 -64
  68. package/dist/core/{session-BJbTzw3y.d.cts → session-D61RHorI.d.cts} +1 -0
  69. package/dist/core/{session-DLVkt-jY.d.ts → session-Ua5af1cd.d.ts} +1 -0
  70. package/dist/core/session-guard-CgNpPMq_.d.ts +231 -0
  71. package/dist/core/session-guard-D6LpRSce.d.cts +231 -0
  72. package/dist/core/{task-D5cWUcAY.d.cts → task-BGBFPSP-.d.cts} +1 -0
  73. package/dist/core/{task-D0i_mU9u.d.ts → task-DJMv0_cr.d.ts} +1 -0
  74. package/dist/core/templates/session-context.d.cts +2 -2
  75. package/dist/core/templates/session-context.d.ts +2 -2
  76. package/dist/core/templates/session-context.js +1 -1
  77. package/dist/core/tools/mcp/jwt-auth.d.cts +1 -1
  78. package/dist/core/tools/mcp/jwt-auth.d.ts +1 -1
  79. package/dist/core/tools/mcp/oauth-mcp-transport.cjs +140 -8
  80. package/dist/core/tools/mcp/oauth-mcp-transport.d.cts +60 -2
  81. package/dist/core/tools/mcp/oauth-mcp-transport.d.ts +60 -2
  82. package/dist/core/tools/mcp/oauth-mcp-transport.js +136 -7
  83. package/dist/core/types/index.cjs +26 -0
  84. package/dist/core/types/index.d.cts +10 -10
  85. package/dist/core/types/index.d.ts +10 -10
  86. package/dist/core/types/index.js +22 -0
  87. package/dist/core/{types-Ddri21rw.d.cts → types-V0JZnwaB.d.cts} +17 -2
  88. package/dist/core/{types-Ddri21rw.d.ts → types-V0JZnwaB.d.ts} +17 -2
  89. package/dist/core/unix/index.cjs +146 -54
  90. package/dist/core/unix/index.d.cts +6 -6
  91. package/dist/core/unix/index.d.ts +6 -6
  92. package/dist/core/unix/index.js +140 -59
  93. package/dist/core/{user-B77oCF14.d.ts → user-BYduwrfW.d.ts} +16 -2
  94. package/dist/core/{user-LBRon9n1.d.cts → user-BnKtzDIz.d.cts} +16 -2
  95. package/dist/core/utils/permission-mode-mapper.d.cts +1 -1
  96. package/dist/core/utils/permission-mode-mapper.d.ts +1 -1
  97. package/dist/core/{worktree-hZImhblR.d.cts → worktree-BtbF8dBz.d.cts} +41 -2
  98. package/dist/core/{worktree-BR7Inm0-.d.ts → worktree-ROqoN5PV.d.ts} +41 -2
  99. package/dist/daemon/declarations.d.ts +5 -24
  100. package/dist/daemon/hooks/gateway-route.d.ts +6 -3
  101. package/dist/daemon/hooks/gateway-route.js +24 -2
  102. package/dist/daemon/index.js +1433 -662
  103. package/dist/daemon/mcp/routes.d.ts +2 -1
  104. package/dist/daemon/mcp/routes.js +415 -30
  105. package/dist/daemon/services/config.js +14 -0
  106. package/dist/daemon/services/gateway.d.ts +1 -0
  107. package/dist/daemon/services/gateway.js +91 -10
  108. package/dist/daemon/services/leaderboard.d.ts +2 -0
  109. package/dist/daemon/services/leaderboard.js +29 -15
  110. package/dist/daemon/services/mcp-servers.js +6 -0
  111. package/dist/daemon/services/messages.js +1 -1
  112. package/dist/daemon/services/oauth-disconnect.d.ts +38 -0
  113. package/dist/daemon/services/oauth-disconnect.js +60 -0
  114. package/dist/daemon/services/repos.js +10 -2
  115. package/dist/daemon/services/scheduler.d.ts +2 -0
  116. package/dist/daemon/services/sessions.d.ts +14 -31
  117. package/dist/daemon/services/sessions.js +0 -17
  118. package/dist/daemon/services/tasks.js +17 -12
  119. package/dist/daemon/services/worktrees.js +4 -0
  120. package/dist/executor/cli.js +1 -0
  121. package/dist/executor/commands/unix.d.ts.map +1 -1
  122. package/dist/executor/commands/unix.js +3 -1
  123. package/dist/executor/db/feathers-repositories.d.ts +2 -1
  124. package/dist/executor/db/feathers-repositories.d.ts.map +1 -1
  125. package/dist/executor/db/feathers-repositories.js +13 -1
  126. package/dist/executor/handlers/sdk/base-executor.d.ts +3 -2
  127. package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
  128. package/dist/executor/handlers/sdk/base-executor.js +5 -19
  129. package/dist/executor/handlers/sdk/claude.d.ts +2 -1
  130. package/dist/executor/handlers/sdk/claude.d.ts.map +1 -1
  131. package/dist/executor/handlers/sdk/claude.js +7 -2
  132. package/dist/executor/handlers/sdk/codex.d.ts +2 -1
  133. package/dist/executor/handlers/sdk/codex.d.ts.map +1 -1
  134. package/dist/executor/handlers/sdk/codex.js +2 -1
  135. package/dist/executor/handlers/sdk/gemini.d.ts +2 -1
  136. package/dist/executor/handlers/sdk/gemini.d.ts.map +1 -1
  137. package/dist/executor/handlers/sdk/opencode.d.ts.map +1 -1
  138. package/dist/executor/handlers/sdk/opencode.js +31 -6
  139. package/dist/executor/handlers/sdk/tool-registry.d.ts +3 -1
  140. package/dist/executor/handlers/sdk/tool-registry.d.ts.map +1 -1
  141. package/dist/executor/index.d.ts +6 -1
  142. package/dist/executor/index.d.ts.map +1 -1
  143. package/dist/executor/index.js +5 -26
  144. package/dist/executor/payload-types.d.ts +8 -0
  145. package/dist/executor/payload-types.d.ts.map +1 -1
  146. package/dist/executor/payload-types.js +1 -0
  147. package/dist/executor/permissions/permission-service.d.ts +11 -1
  148. package/dist/executor/permissions/permission-service.d.ts.map +1 -1
  149. package/dist/executor/permissions/permission-service.js +27 -7
  150. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts +5 -0
  151. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
  152. package/dist/executor/sdk-handlers/base/mcp-scoping.js +4 -1
  153. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +5 -4
  154. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
  155. package/dist/executor/sdk-handlers/claude/claude-tool.js +8 -6
  156. package/dist/executor/sdk-handlers/claude/message-builder.d.ts +2 -2
  157. package/dist/executor/sdk-handlers/claude/message-builder.d.ts.map +1 -1
  158. package/dist/executor/sdk-handlers/claude/message-builder.js +2 -1
  159. package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts.map +1 -1
  160. package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.js +30 -4
  161. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +2 -1
  162. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +1 -1
  163. package/dist/executor/sdk-handlers/claude/prompt-service.js +34 -3
  164. package/dist/executor/sdk-handlers/claude/query-builder.d.ts +6 -0
  165. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
  166. package/dist/executor/sdk-handlers/claude/query-builder.js +21 -3
  167. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +6 -5
  168. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
  169. package/dist/executor/sdk-handlers/codex/codex-tool.js +85 -25
  170. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +11 -2
  171. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
  172. package/dist/executor/sdk-handlers/codex/prompt-service.js +117 -42
  173. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +3 -3
  174. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
  175. package/dist/executor/sdk-handlers/gemini/gemini-tool.js +6 -5
  176. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts +35 -4
  177. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +1 -1
  178. package/dist/executor/sdk-handlers/opencode/opencode-tool.js +179 -20
  179. package/dist/executor/types.d.ts +1 -1
  180. package/dist/executor/types.d.ts.map +1 -1
  181. package/dist/ui/assets/{_basePickBy-DM-YlwQP.js → _basePickBy-i9EQYZiv.js} +1 -1
  182. package/dist/ui/assets/_basePickBy-i9EQYZiv.js.gz +0 -0
  183. package/dist/ui/assets/{_baseUniq-w9wJK0j5.js → _baseUniq-XCGcOFFF.js} +1 -1
  184. package/dist/ui/assets/_baseUniq-XCGcOFFF.js.gz +0 -0
  185. package/dist/ui/assets/{arc-CVXkw1SJ.js → arc-It97XH_n.js} +1 -1
  186. package/dist/ui/assets/arc-It97XH_n.js.gz +0 -0
  187. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-CevjfWlW.js → architectureDiagram-VXUJARFQ-Cs38GShn.js} +1 -1
  188. package/dist/ui/assets/architectureDiagram-VXUJARFQ-Cs38GShn.js.gz +0 -0
  189. package/dist/ui/assets/{blockDiagram-VD42YOAC-b9JU-Vzx.js → blockDiagram-VD42YOAC-LCn3Anbl.js} +1 -1
  190. package/dist/ui/assets/blockDiagram-VD42YOAC-LCn3Anbl.js.gz +0 -0
  191. package/dist/ui/assets/{c4Diagram-YG6GDRKO-j7VSccDF.js → c4Diagram-YG6GDRKO-D_YERYZz.js} +1 -1
  192. package/dist/ui/assets/c4Diagram-YG6GDRKO-D_YERYZz.js.gz +0 -0
  193. package/dist/ui/assets/channel-0jT3BTdL.js +1 -0
  194. package/dist/ui/assets/{chunk-4BX2VUAB-D_codqcR.js → chunk-4BX2VUAB-MSzbq_UU.js} +1 -1
  195. package/dist/ui/assets/{chunk-55IACEB6-nQq1kviw.js → chunk-55IACEB6-LdeWxMBS.js} +1 -1
  196. package/dist/ui/assets/{chunk-B4BG7PRW-DlVxaJL9.js → chunk-B4BG7PRW-DGTBdJv9.js} +1 -1
  197. package/dist/ui/assets/chunk-B4BG7PRW-DGTBdJv9.js.gz +0 -0
  198. package/dist/ui/assets/{chunk-DI55MBZ5-Dw95m49m.js → chunk-DI55MBZ5-CZ2_DVEZ.js} +1 -1
  199. package/dist/ui/assets/chunk-DI55MBZ5-CZ2_DVEZ.js.gz +0 -0
  200. package/dist/ui/assets/{chunk-FMBD7UC4-Bnk79OV8.js → chunk-FMBD7UC4-DwIx-GeH.js} +1 -1
  201. package/dist/ui/assets/{chunk-QN33PNHL-sqjI-sXo.js → chunk-QN33PNHL-Dn__hFdW.js} +1 -1
  202. package/dist/ui/assets/{chunk-QZHKN3VN-T7CEGHh9.js → chunk-QZHKN3VN-DiZ7cord.js} +1 -1
  203. package/dist/ui/assets/{chunk-TZMSLE5B-ok9YQuUI.js → chunk-TZMSLE5B-D3b9hRl1.js} +1 -1
  204. package/dist/ui/assets/chunk-TZMSLE5B-D3b9hRl1.js.gz +0 -0
  205. package/dist/ui/assets/classDiagram-2ON5EDUG-BBD3mgDd.js +1 -0
  206. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BBD3mgDd.js +1 -0
  207. package/dist/ui/assets/clone-BNZiDltD.js +1 -0
  208. package/dist/ui/assets/{cose-bilkent-S5V4N54A-BtanJFqC.js → cose-bilkent-S5V4N54A-BmyMVBfD.js} +1 -1
  209. package/dist/ui/assets/{cose-bilkent-S5V4N54A-BtanJFqC.js.gz → cose-bilkent-S5V4N54A-BmyMVBfD.js.gz} +0 -0
  210. package/dist/ui/assets/{dagre-6UL2VRFP-CIJlfoaz.js → dagre-6UL2VRFP-B03RBsfN.js} +1 -1
  211. package/dist/ui/assets/dagre-6UL2VRFP-B03RBsfN.js.gz +0 -0
  212. package/dist/ui/assets/{diagram-PSM6KHXK-DhKlHuZN.js → diagram-PSM6KHXK-SNVumld0.js} +1 -1
  213. package/dist/ui/assets/diagram-PSM6KHXK-SNVumld0.js.gz +0 -0
  214. package/dist/ui/assets/{diagram-QEK2KX5R-BbwaTbd7.js → diagram-QEK2KX5R-CK6a59a2.js} +1 -1
  215. package/dist/ui/assets/diagram-QEK2KX5R-CK6a59a2.js.gz +0 -0
  216. package/dist/ui/assets/{diagram-S2PKOQOG-Dx1rRlHZ.js → diagram-S2PKOQOG-DbQLsmpI.js} +1 -1
  217. package/dist/ui/assets/diagram-S2PKOQOG-DbQLsmpI.js.gz +0 -0
  218. package/dist/ui/assets/{erDiagram-Q2GNP2WA-w60Up3Mg.js → erDiagram-Q2GNP2WA-D1EgLnQb.js} +1 -1
  219. package/dist/ui/assets/erDiagram-Q2GNP2WA-D1EgLnQb.js.gz +0 -0
  220. package/dist/ui/assets/{flowDiagram-NV44I4VS-yvyTqNEi.js → flowDiagram-NV44I4VS-mgwmvx5l.js} +1 -1
  221. package/dist/ui/assets/flowDiagram-NV44I4VS-mgwmvx5l.js.gz +0 -0
  222. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-NBBWMpCB.js → ganttDiagram-LVOFAZNH-D8jfhSSb.js} +1 -1
  223. package/dist/ui/assets/ganttDiagram-LVOFAZNH-D8jfhSSb.js.gz +0 -0
  224. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-Dc0qrZJi.js → gitGraphDiagram-NY62KEGX-DJQ95xHM.js} +1 -1
  225. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-DJQ95xHM.js.gz +0 -0
  226. package/dist/ui/assets/{graph-RIZM2qth.js → graph-CaLX9KUu.js} +1 -1
  227. package/dist/ui/assets/graph-CaLX9KUu.js.gz +0 -0
  228. package/dist/ui/assets/index-i5nR0oLW.js +1362 -0
  229. package/dist/ui/assets/index-i5nR0oLW.js.gz +0 -0
  230. package/dist/ui/assets/{infoDiagram-ER5ION4S-Co1qQ3-G.js → infoDiagram-ER5ION4S-C_SfeODp.js} +1 -1
  231. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-QaBi_wAx.js → journeyDiagram-XKPGCS4Q-CLK7H6kW.js} +1 -1
  232. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CLK7H6kW.js.gz +0 -0
  233. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-B3k5rpP3.js → kanban-definition-3W4ZIXB7-CJIpy7LL.js} +1 -1
  234. package/dist/ui/assets/kanban-definition-3W4ZIXB7-CJIpy7LL.js.gz +0 -0
  235. package/dist/ui/assets/{katex-Br2y_YL1.css → katex-DGRguze2.css} +1 -1
  236. package/dist/ui/assets/katex-DGRguze2.css.gz +0 -0
  237. package/dist/ui/assets/{layout-YqNNovOM.js → layout-CCTNtLPr.js} +1 -1
  238. package/dist/ui/assets/layout-CCTNtLPr.js.gz +0 -0
  239. package/dist/ui/assets/{linear-DpjTIW7z.js → linear-C-d8nAtO.js} +1 -1
  240. package/dist/ui/assets/linear-C-d8nAtO.js.gz +0 -0
  241. package/dist/ui/assets/{mermaid.core-D-fYaKXC.js → mermaid.core-eger3qsJ.js} +5 -5
  242. package/dist/ui/assets/mermaid.core-eger3qsJ.js.gz +0 -0
  243. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-CddQalgD.js → mindmap-definition-VGOIOE7T-Dd2Q_jXj.js} +1 -1
  244. package/dist/ui/assets/mindmap-definition-VGOIOE7T-Dd2Q_jXj.js.gz +0 -0
  245. package/dist/ui/assets/{pieDiagram-ADFJNKIX-BCPzhaBq.js → pieDiagram-ADFJNKIX-Bu2d4aGa.js} +1 -1
  246. package/dist/ui/assets/pieDiagram-ADFJNKIX-Bu2d4aGa.js.gz +0 -0
  247. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-DrdJW-2E.js → quadrantDiagram-AYHSOK5B-BuSnLV6r.js} +1 -1
  248. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-BuSnLV6r.js.gz +0 -0
  249. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-dV0cdx6D.js → requirementDiagram-UZGBJVZJ-BkNCNXua.js} +1 -1
  250. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-BkNCNXua.js.gz +0 -0
  251. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-SLmqiy7a.js → sankeyDiagram-TZEHDZUN-D1kkl8F_.js} +1 -1
  252. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-D1kkl8F_.js.gz +0 -0
  253. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-CyH5EbRm.js → sequenceDiagram-WL72ISMW-BK21DozY.js} +1 -1
  254. package/dist/ui/assets/sequenceDiagram-WL72ISMW-BK21DozY.js.gz +0 -0
  255. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-DbtBIYM6.js → stateDiagram-FKZM4ZOC-C2QD3_Em.js} +1 -1
  256. package/dist/ui/assets/stateDiagram-FKZM4ZOC-C2QD3_Em.js.gz +0 -0
  257. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-dPuPQqlz.js +1 -0
  258. package/dist/ui/assets/{timeline-definition-IT6M3QCI-CzdpjKni.js → timeline-definition-IT6M3QCI-C71TUQAw.js} +1 -1
  259. package/dist/ui/assets/timeline-definition-IT6M3QCI-C71TUQAw.js.gz +0 -0
  260. package/dist/ui/assets/{treemap-KMMF4GRG-D_MXp3HZ.js → treemap-KMMF4GRG-DfUDBaQu.js} +1 -1
  261. package/dist/ui/assets/treemap-KMMF4GRG-DfUDBaQu.js.gz +0 -0
  262. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-BMwyKz4M.js → xychartDiagram-PRI3JC2R-jf9lp7b3.js} +1 -1
  263. package/dist/ui/assets/xychartDiagram-PRI3JC2R-jf9lp7b3.js.gz +0 -0
  264. package/dist/ui/index.html +1 -1
  265. package/package.json +34 -34
  266. package/dist/daemon/services/sessions/hooks/handle-stop.d.ts +0 -48
  267. package/dist/daemon/services/sessions/hooks/handle-stop.js +0 -169
  268. package/dist/ui/assets/_basePickBy-DM-YlwQP.js.gz +0 -0
  269. package/dist/ui/assets/_baseUniq-w9wJK0j5.js.gz +0 -0
  270. package/dist/ui/assets/arc-CVXkw1SJ.js.gz +0 -0
  271. package/dist/ui/assets/architectureDiagram-VXUJARFQ-CevjfWlW.js.gz +0 -0
  272. package/dist/ui/assets/blockDiagram-VD42YOAC-b9JU-Vzx.js.gz +0 -0
  273. package/dist/ui/assets/c4Diagram-YG6GDRKO-j7VSccDF.js.gz +0 -0
  274. package/dist/ui/assets/channel-BNIBtjaQ.js +0 -1
  275. package/dist/ui/assets/chunk-B4BG7PRW-DlVxaJL9.js.gz +0 -0
  276. package/dist/ui/assets/chunk-DI55MBZ5-Dw95m49m.js.gz +0 -0
  277. package/dist/ui/assets/chunk-TZMSLE5B-ok9YQuUI.js.gz +0 -0
  278. package/dist/ui/assets/classDiagram-2ON5EDUG-DeHTLUto.js +0 -1
  279. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-DeHTLUto.js +0 -1
  280. package/dist/ui/assets/clone-BObtDhw7.js +0 -1
  281. package/dist/ui/assets/dagre-6UL2VRFP-CIJlfoaz.js.gz +0 -0
  282. package/dist/ui/assets/diagram-PSM6KHXK-DhKlHuZN.js.gz +0 -0
  283. package/dist/ui/assets/diagram-QEK2KX5R-BbwaTbd7.js.gz +0 -0
  284. package/dist/ui/assets/diagram-S2PKOQOG-Dx1rRlHZ.js.gz +0 -0
  285. package/dist/ui/assets/erDiagram-Q2GNP2WA-w60Up3Mg.js.gz +0 -0
  286. package/dist/ui/assets/flowDiagram-NV44I4VS-yvyTqNEi.js.gz +0 -0
  287. package/dist/ui/assets/ganttDiagram-LVOFAZNH-NBBWMpCB.js.gz +0 -0
  288. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Dc0qrZJi.js.gz +0 -0
  289. package/dist/ui/assets/graph-RIZM2qth.js.gz +0 -0
  290. package/dist/ui/assets/index-BcHc8U_m.js +0 -1374
  291. package/dist/ui/assets/index-BcHc8U_m.js.gz +0 -0
  292. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-QaBi_wAx.js.gz +0 -0
  293. package/dist/ui/assets/kanban-definition-3W4ZIXB7-B3k5rpP3.js.gz +0 -0
  294. package/dist/ui/assets/katex-Br2y_YL1.css.gz +0 -0
  295. package/dist/ui/assets/layout-YqNNovOM.js.gz +0 -0
  296. package/dist/ui/assets/linear-DpjTIW7z.js.gz +0 -0
  297. package/dist/ui/assets/mermaid.core-D-fYaKXC.js.gz +0 -0
  298. package/dist/ui/assets/mindmap-definition-VGOIOE7T-CddQalgD.js.gz +0 -0
  299. package/dist/ui/assets/pieDiagram-ADFJNKIX-BCPzhaBq.js.gz +0 -0
  300. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DrdJW-2E.js.gz +0 -0
  301. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-dV0cdx6D.js.gz +0 -0
  302. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-SLmqiy7a.js.gz +0 -0
  303. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CyH5EbRm.js.gz +0 -0
  304. package/dist/ui/assets/stateDiagram-FKZM4ZOC-DbtBIYM6.js.gz +0 -0
  305. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-DOAHUeXQ.js +0 -1
  306. package/dist/ui/assets/timeline-definition-IT6M3QCI-CzdpjKni.js.gz +0 -0
  307. package/dist/ui/assets/treemap-KMMF4GRG-D_MXp3HZ.js.gz +0 -0
  308. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BMwyKz4M.js.gz +0 -0
@@ -47,6 +47,13 @@ declare class Init extends Command {
47
47
  * Prompt user for auth/multiplayer setup
48
48
  */
49
49
  private promptAuthSetup;
50
+ /**
51
+ * Prompt user for assistant setup
52
+ *
53
+ * Stores intent in config.yaml for the UI wizard to pick up.
54
+ * The framework repo is public, so HTTPS always works.
55
+ */
56
+ private promptAssistantSetup;
50
57
  /**
51
58
  * Prompt user for API key setup
52
59
  */
@@ -284,6 +284,9 @@ var Init = class _Init extends Command {
284
284
  }
285
285
  }
286
286
  }
287
+ if (!skipPrompts) {
288
+ await this.promptAssistantSetup();
289
+ }
287
290
  this.log("");
288
291
  this.log(chalk.green.bold("\u2705 Agor initialized successfully!"));
289
292
  this.log("");
@@ -413,6 +416,51 @@ var Init = class _Init extends Command {
413
416
  });
414
417
  this.log(`${chalk.green(" \u2713")} Admin user created (${chalk.gray(email)})`);
415
418
  }
419
+ /**
420
+ * Prompt user for assistant setup
421
+ *
422
+ * Stores intent in config.yaml for the UI wizard to pick up.
423
+ * The framework repo is public, so HTTPS always works.
424
+ */
425
+ async promptAssistantSetup() {
426
+ this.log("");
427
+ this.log(chalk.bold("\u{1F916} Assistant"));
428
+ this.log("");
429
+ this.log(
430
+ chalk.gray("An assistant is a persistent AI companion that manages your Agor instance.")
431
+ );
432
+ this.log(
433
+ chalk.gray(
434
+ "It maintains memory across sessions, orchestrates work, and learns your preferences."
435
+ )
436
+ );
437
+ this.log("");
438
+ const { setupAssistant } = await inquirer.prompt([
439
+ {
440
+ type: "confirm",
441
+ name: "setupAssistant",
442
+ message: "Set up your assistant?",
443
+ default: true
444
+ }
445
+ ]);
446
+ if (setupAssistant) {
447
+ const frameworkRepoUrl = "https://github.com/preset-io/agor-assistant.git";
448
+ await setConfigValue("onboarding.assistantPending", true);
449
+ await setConfigValue("onboarding.frameworkRepoUrl", frameworkRepoUrl);
450
+ this.log(`${chalk.green(" \u2713")} Assistant setup queued for the UI wizard`);
451
+ if (!process.env.ANTHROPIC_API_KEY) {
452
+ this.log("");
453
+ this.log(
454
+ chalk.yellow(
455
+ " \u{1F4A1} Tip: Set ANTHROPIC_API_KEY in your environment for Claude Code sessions"
456
+ )
457
+ );
458
+ this.log(chalk.gray(" You can also configure API keys in the UI after setup"));
459
+ }
460
+ } else {
461
+ this.log(chalk.gray(" Skipped. You can set this up later from the UI."));
462
+ }
463
+ }
416
464
  /**
417
465
  * Prompt user for API key setup
418
466
  */
@@ -198,6 +198,7 @@ var SessionList = class _SessionList extends BaseCommand {
198
198
  running: chalk2.blue("\u25CF"),
199
199
  stopping: chalk2.yellow("\u25D0"),
200
200
  awaiting_permission: chalk2.yellow("\u23F8"),
201
+ timed_out: chalk2.yellow("\u23F0"),
201
202
  completed: chalk2.green("\u2713"),
202
203
  failed: chalk2.red("\u2717"),
203
204
  idle: chalk2.gray("\u25CB")
@@ -206,6 +207,7 @@ var SessionList = class _SessionList extends BaseCommand {
206
207
  running: chalk2.blue("Running"),
207
208
  stopping: chalk2.yellow("Stopping"),
208
209
  awaiting_permission: chalk2.yellow("Awaiting Permission"),
210
+ timed_out: chalk2.yellow("Timed Out"),
209
211
  completed: chalk2.green("Done"),
210
212
  failed: chalk2.red("Failed"),
211
213
  idle: chalk2.gray("Idle")
@@ -1,12 +1,12 @@
1
- import { e as Message } from '../message-DZitapX9.cjs';
2
- import { e as Board, f as BoardExportBlob } from '../board-ByCag4EG.cjs';
1
+ import { f as Message } from '../message-Zwy5DQg7.cjs';
2
+ import { e as Board, f as BoardExportBlob } from '../board-CBJRmIH9.cjs';
3
3
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.cjs';
4
- import { b as AuthenticationResult } from '../feathers-Cyk1lpAM.cjs';
5
- import { f as Session } from '../session-BJbTzw3y.cjs';
6
- import { d as User } from '../user-LBRon9n1.cjs';
7
- import { i as MCPServer } from '../mcp-DqadENYY.cjs';
8
- import { b as Repo, d as Worktree } from '../worktree-hZImhblR.cjs';
9
- import { c as Task } from '../task-D5cWUcAY.cjs';
4
+ import { b as AuthenticationResult } from '../feathers-Cr8h2DC8.cjs';
5
+ import { f as Session } from '../session-D61RHorI.cjs';
6
+ import { d as User } from '../user-BnKtzDIz.cjs';
7
+ import { i as MCPServer } from '../mcp-DhSSHDnR.cjs';
8
+ import { b as Repo, d as Worktree } from '../worktree-BtbF8dBz.cjs';
9
+ import { c as Task } from '../task-BGBFPSP-.cjs';
10
10
  import { Params, Paginated, Application } from '@feathersjs/feathers';
11
11
  import { Socket } from 'socket.io-client';
12
12
  export { default as authenticationClient } from '@feathersjs/authentication-client';
@@ -1,12 +1,12 @@
1
- import { e as Message } from '../message-CrqsdxNE.js';
2
- import { e as Board, f as BoardExportBlob } from '../board-CZuyMRpr.js';
1
+ import { f as Message } from '../message-D_46gozx.js';
2
+ import { e as Board, f as BoardExportBlob } from '../board-C3IqrR0G.js';
3
3
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.js';
4
- import { b as AuthenticationResult } from '../feathers-CYMJeMWB.js';
5
- import { f as Session } from '../session-DLVkt-jY.js';
6
- import { d as User } from '../user-B77oCF14.js';
7
- import { i as MCPServer } from '../mcp-Bm9HwvDf.js';
8
- import { b as Repo, d as Worktree } from '../worktree-BR7Inm0-.js';
9
- import { c as Task } from '../task-D0i_mU9u.js';
4
+ import { b as AuthenticationResult } from '../feathers-BZVQALvz.js';
5
+ import { f as Session } from '../session-Ua5af1cd.js';
6
+ import { d as User } from '../user-BYduwrfW.js';
7
+ import { i as MCPServer } from '../mcp-Db0cL7Xc.js';
8
+ import { b as Repo, d as Worktree } from '../worktree-ROqoN5PV.js';
9
+ import { c as Task } from '../task-DJMv0_cr.js';
10
10
  import { Params, Paginated, Application } from '@feathersjs/feathers';
11
11
  import { Socket } from 'socket.io-client';
12
12
  export { default as authenticationClient } from '@feathersjs/authentication-client';
@@ -1,4 +1,4 @@
1
- import { A as AgenticToolName } from './session-DLVkt-jY.js';
1
+ import { A as AgenticToolName } from './session-Ua5af1cd.js';
2
2
  import { B as BoardID, W as WorktreeID } from './id-BwPJtWxW.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { A as AgenticToolName } from './session-BJbTzw3y.cjs';
1
+ import { A as AgenticToolName } from './session-D61RHorI.cjs';
2
2
  import { B as BoardID, W as WorktreeID } from './id-BwPJtWxW.cjs';
3
3
 
4
4
  /**
@@ -30,9 +30,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  ));
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
- // ../../node_modules/.pnpm/tsup@8.5.0_jiti@2.6.1_postcss@8.5.6_tsx@4.20.6_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js
33
+ // ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js
34
34
  var init_cjs_shims = __esm({
35
- "../../node_modules/.pnpm/tsup@8.5.0_jiti@2.6.1_postcss@8.5.6_tsx@4.20.6_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js"() {
35
+ "../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js"() {
36
36
  "use strict";
37
37
  }
38
38
  });
@@ -50,6 +50,99 @@ var init_ids = __esm({
50
50
  }
51
51
  });
52
52
 
53
+ // src/config/constants.ts
54
+ var DAEMON;
55
+ var init_constants = __esm({
56
+ "src/config/constants.ts"() {
57
+ "use strict";
58
+ init_cjs_shims();
59
+ DAEMON = {
60
+ /**
61
+ * Default daemon port
62
+ */
63
+ DEFAULT_PORT: 3030,
64
+ /**
65
+ * Default daemon host
66
+ */
67
+ DEFAULT_HOST: "localhost"
68
+ };
69
+ }
70
+ });
71
+
72
+ // src/config/config-manager.ts
73
+ function getAgorHome() {
74
+ return import_node_path2.default.join(import_node_os.default.homedir(), ".agor");
75
+ }
76
+ function getConfigPath() {
77
+ return import_node_path2.default.join(getAgorHome(), "config.yaml");
78
+ }
79
+ function getDefaultConfig() {
80
+ return {
81
+ defaults: {
82
+ board: "main",
83
+ agent: "claude-code"
84
+ },
85
+ display: {
86
+ tableStyle: "unicode",
87
+ colorOutput: true,
88
+ shortIdLength: 8
89
+ },
90
+ daemon: {
91
+ port: DAEMON.DEFAULT_PORT,
92
+ host: DAEMON.DEFAULT_HOST,
93
+ allowAnonymous: true,
94
+ // Default: Allow anonymous access (local mode)
95
+ requireAuth: false,
96
+ // Default: Do not require authentication
97
+ mcpEnabled: true
98
+ // Default: Enable built-in MCP server
99
+ },
100
+ ui: {
101
+ port: 5173,
102
+ host: "localhost"
103
+ },
104
+ codex: {
105
+ home: "~/.agor/codex"
106
+ },
107
+ execution: {
108
+ session_token_expiration_ms: 864e5,
109
+ // 24 hours
110
+ session_token_max_uses: 1,
111
+ // Single-use tokens
112
+ sync_unix_passwords: true
113
+ // Default: sync passwords to Unix
114
+ }
115
+ };
116
+ }
117
+ function loadConfigSync() {
118
+ const configPath = getConfigPath();
119
+ try {
120
+ const content = (0, import_node_fs2.readFileSync)(configPath, "utf-8");
121
+ const config = import_js_yaml.default.load(content);
122
+ return config || {};
123
+ } catch (error) {
124
+ if (error.code === "ENOENT") {
125
+ return getDefaultConfig();
126
+ }
127
+ throw new Error(
128
+ `Failed to load config: ${error instanceof Error ? error.message : String(error)}`
129
+ );
130
+ }
131
+ }
132
+ var import_node_fs2, import_promises, import_node_os, import_node_path2, import_js_yaml;
133
+ var init_config_manager = __esm({
134
+ "src/config/config-manager.ts"() {
135
+ "use strict";
136
+ init_cjs_shims();
137
+ import_node_fs2 = require("fs");
138
+ import_promises = __toESM(require("fs/promises"), 1);
139
+ import_node_os = __toESM(require("os"), 1);
140
+ import_node_path2 = __toESM(require("path"), 1);
141
+ import_js_yaml = __toESM(require("js-yaml"), 1);
142
+ init_constants();
143
+ }
144
+ });
145
+
53
146
  // src/db/schema.postgres.ts
54
147
  var schema_postgres_exports = {};
55
148
  __export(schema_postgres_exports, {
@@ -65,12 +158,13 @@ __export(schema_postgres_exports, {
65
158
  sessionsRelations: () => sessionsRelations,
66
159
  tasks: () => tasks,
67
160
  threadSessionMap: () => threadSessionMap,
161
+ userMcpOauthTokens: () => userMcpOauthTokens,
68
162
  users: () => users,
69
163
  worktreeOwners: () => worktreeOwners,
70
164
  worktrees: () => worktrees,
71
165
  worktreesRelations: () => worktreesRelations
72
166
  });
73
- var import_drizzle_orm, import_pg_core, t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, boardComments, gatewayChannels, threadSessionMap, sessionsRelations, worktreesRelations;
167
+ var import_drizzle_orm, import_pg_core, t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, userMcpOauthTokens, boardComments, gatewayChannels, threadSessionMap, sessionsRelations, worktreesRelations;
74
168
  var init_schema_postgres = __esm({
75
169
  "src/db/schema.postgres.ts"() {
76
170
  "use strict";
@@ -98,7 +192,15 @@ var init_schema_postgres = __esm({
98
192
  unix_username: (0, import_pg_core.text)("unix_username"),
99
193
  // Materialized for filtering/joins (cross-DB compatible)
100
194
  status: (0, import_pg_core.text)("status", {
101
- enum: ["idle", "running", "stopping", "awaiting_permission", "completed", "failed"]
195
+ enum: [
196
+ "idle",
197
+ "running",
198
+ "stopping",
199
+ "awaiting_permission",
200
+ "timed_out",
201
+ "completed",
202
+ "failed"
203
+ ]
102
204
  }).notNull(),
103
205
  agentic_tool: (0, import_pg_core.text)("agentic_tool", {
104
206
  enum: ["claude-code", "codex", "gemini", "opencode"]
@@ -155,6 +257,7 @@ var init_schema_postgres = __esm({
155
257
  "running",
156
258
  "stopping",
157
259
  "awaiting_permission",
260
+ "timed_out",
158
261
  "completed",
159
262
  "failed",
160
263
  "stopped"
@@ -447,6 +550,26 @@ var init_schema_postgres = __esm({
447
550
  enabledIdx: (0, import_pg_core.index)("session_mcp_servers_enabled_idx").on(table.session_id, table.enabled)
448
551
  })
449
552
  );
553
+ userMcpOauthTokens = (0, import_pg_core.pgTable)(
554
+ "user_mcp_oauth_tokens",
555
+ {
556
+ user_id: (0, import_pg_core.varchar)("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
557
+ mcp_server_id: (0, import_pg_core.varchar)("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers.mcp_server_id, { onDelete: "cascade" }),
558
+ oauth_access_token: (0, import_pg_core.text)("oauth_access_token").notNull(),
559
+ oauth_token_expires_at: t.timestamp("oauth_token_expires_at"),
560
+ // Unix timestamp in milliseconds
561
+ oauth_refresh_token: (0, import_pg_core.text)("oauth_refresh_token"),
562
+ created_at: t.timestamp("created_at").notNull(),
563
+ updated_at: t.timestamp("updated_at")
564
+ },
565
+ (table) => ({
566
+ // Composite primary key via unique index
567
+ pk: (0, import_pg_core.index)("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
568
+ // Indexes for queries
569
+ userIdx: (0, import_pg_core.index)("user_mcp_oauth_tokens_user_idx").on(table.user_id),
570
+ serverIdx: (0, import_pg_core.index)("user_mcp_oauth_tokens_server_idx").on(table.mcp_server_id)
571
+ })
572
+ );
450
573
  boardComments = (0, import_pg_core.pgTable)(
451
574
  "board_comments",
452
575
  {
@@ -556,6 +679,7 @@ var init_schema_postgres = __esm({
556
679
  table.thread_id
557
680
  ),
558
681
  sessionIdx: (0, import_pg_core.index)("idx_thread_map_session_id").on(table.session_id),
682
+ threadIdx: (0, import_pg_core.index)("idx_thread_map_thread_id").on(table.thread_id),
559
683
  channelStatusIdx: (0, import_pg_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
560
684
  })
561
685
  );
@@ -586,12 +710,13 @@ __export(schema_sqlite_exports, {
586
710
  sessionsRelations: () => sessionsRelations2,
587
711
  tasks: () => tasks2,
588
712
  threadSessionMap: () => threadSessionMap2,
713
+ userMcpOauthTokens: () => userMcpOauthTokens2,
589
714
  users: () => users2,
590
715
  worktreeOwners: () => worktreeOwners2,
591
716
  worktrees: () => worktrees2,
592
717
  worktreesRelations: () => worktreesRelations2
593
718
  });
594
- var import_drizzle_orm2, import_sqlite_core, t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, boardComments2, gatewayChannels2, threadSessionMap2, sessionsRelations2, worktreesRelations2;
719
+ var import_drizzle_orm2, import_sqlite_core, t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, userMcpOauthTokens2, boardComments2, gatewayChannels2, threadSessionMap2, sessionsRelations2, worktreesRelations2;
595
720
  var init_schema_sqlite = __esm({
596
721
  "src/db/schema.sqlite.ts"() {
597
722
  "use strict";
@@ -619,7 +744,15 @@ var init_schema_sqlite = __esm({
619
744
  unix_username: (0, import_sqlite_core.text)("unix_username"),
620
745
  // Materialized for filtering/joins (cross-DB compatible)
621
746
  status: (0, import_sqlite_core.text)("status", {
622
- enum: ["idle", "running", "stopping", "awaiting_permission", "completed", "failed"]
747
+ enum: [
748
+ "idle",
749
+ "running",
750
+ "stopping",
751
+ "awaiting_permission",
752
+ "timed_out",
753
+ "completed",
754
+ "failed"
755
+ ]
623
756
  }).notNull(),
624
757
  agentic_tool: (0, import_sqlite_core.text)("agentic_tool", {
625
758
  enum: ["claude-code", "codex", "gemini", "opencode"]
@@ -676,6 +809,7 @@ var init_schema_sqlite = __esm({
676
809
  "running",
677
810
  "stopping",
678
811
  "awaiting_permission",
812
+ "timed_out",
679
813
  "completed",
680
814
  "failed",
681
815
  "stopped"
@@ -969,6 +1103,26 @@ var init_schema_sqlite = __esm({
969
1103
  enabledIdx: (0, import_sqlite_core.index)("session_mcp_servers_enabled_idx").on(table.session_id, table.enabled)
970
1104
  })
971
1105
  );
1106
+ userMcpOauthTokens2 = (0, import_sqlite_core.sqliteTable)(
1107
+ "user_mcp_oauth_tokens",
1108
+ {
1109
+ user_id: (0, import_sqlite_core.text)("user_id", { length: 36 }).notNull().references(() => users2.user_id, { onDelete: "cascade" }),
1110
+ mcp_server_id: (0, import_sqlite_core.text)("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers2.mcp_server_id, { onDelete: "cascade" }),
1111
+ oauth_access_token: (0, import_sqlite_core.text)("oauth_access_token").notNull(),
1112
+ oauth_token_expires_at: t2.timestamp("oauth_token_expires_at"),
1113
+ // Unix timestamp in milliseconds
1114
+ oauth_refresh_token: (0, import_sqlite_core.text)("oauth_refresh_token"),
1115
+ created_at: t2.timestamp("created_at").notNull(),
1116
+ updated_at: t2.timestamp("updated_at")
1117
+ },
1118
+ (table) => ({
1119
+ // Composite primary key via unique index
1120
+ pk: (0, import_sqlite_core.index)("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
1121
+ // Indexes for queries
1122
+ userIdx: (0, import_sqlite_core.index)("user_mcp_oauth_tokens_user_idx").on(table.user_id),
1123
+ serverIdx: (0, import_sqlite_core.index)("user_mcp_oauth_tokens_server_idx").on(table.mcp_server_id)
1124
+ })
1125
+ );
972
1126
  boardComments2 = (0, import_sqlite_core.sqliteTable)(
973
1127
  "board_comments",
974
1128
  {
@@ -1078,6 +1232,7 @@ var init_schema_sqlite = __esm({
1078
1232
  table.thread_id
1079
1233
  ),
1080
1234
  sessionIdx: (0, import_sqlite_core.index)("idx_thread_map_session_id").on(table.session_id),
1235
+ threadIdx: (0, import_sqlite_core.index)("idx_thread_map_thread_id").on(table.thread_id),
1081
1236
  channelStatusIdx: (0, import_sqlite_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
1082
1237
  })
1083
1238
  );
@@ -1117,12 +1272,24 @@ function getDatabaseDialect() {
1117
1272
  return detected;
1118
1273
  }
1119
1274
  }
1275
+ try {
1276
+ const config = loadConfigSync();
1277
+ if (config.database?.dialect === "postgresql" || config.database?.dialect === "sqlite") {
1278
+ return config.database.dialect;
1279
+ }
1280
+ if (config.database?.postgresql?.url) {
1281
+ const detected = detectDialectFromUrl(config.database.postgresql.url);
1282
+ if (detected) return detected;
1283
+ }
1284
+ } catch {
1285
+ }
1120
1286
  return "sqlite";
1121
1287
  }
1122
1288
  var init_schema_factory = __esm({
1123
1289
  "src/db/schema-factory.ts"() {
1124
1290
  "use strict";
1125
1291
  init_cjs_shims();
1292
+ init_config_manager();
1126
1293
  }
1127
1294
  });
1128
1295
 
@@ -1137,7 +1304,7 @@ var init_database_wrapper = __esm({
1137
1304
  });
1138
1305
 
1139
1306
  // src/db/schema.ts
1140
- var dialect, schema, sessions3, tasks3, messages3, boards3, repos3, worktrees3, worktreeOwners3, users3, mcpServers3, boardObjects3, sessionMcpServers3, boardComments3, gatewayChannels3, threadSessionMap3;
1307
+ var dialect, schema, sessions3, tasks3, messages3, boards3, repos3, worktrees3, worktreeOwners3, users3, mcpServers3, boardObjects3, sessionMcpServers3, userMcpOauthTokens3, boardComments3, gatewayChannels3, threadSessionMap3;
1141
1308
  var init_schema = __esm({
1142
1309
  "src/db/schema.ts"() {
1143
1310
  "use strict";
@@ -1158,6 +1325,7 @@ var init_schema = __esm({
1158
1325
  mcpServers3 = schema.mcpServers;
1159
1326
  boardObjects3 = schema.boardObjects;
1160
1327
  sessionMcpServers3 = schema.sessionMcpServers;
1328
+ userMcpOauthTokens3 = schema.userMcpOauthTokens;
1161
1329
  boardComments3 = schema.boardComments;
1162
1330
  gatewayChannels3 = schema.gatewayChannels;
1163
1331
  threadSessionMap3 = schema.threadSessionMap;
@@ -1294,7 +1462,7 @@ init_cjs_shims();
1294
1462
 
1295
1463
  // src/db/index.ts
1296
1464
  init_cjs_shims();
1297
- var import_drizzle_orm19 = require("drizzle-orm");
1465
+ var import_drizzle_orm20 = require("drizzle-orm");
1298
1466
  var import_bcryptjs2 = __toESM(require("bcryptjs"), 1);
1299
1467
  init_ids();
1300
1468
 
@@ -1307,14 +1475,15 @@ var import_client = require("@libsql/client");
1307
1475
  var import_libsql = require("drizzle-orm/libsql");
1308
1476
  var import_postgres_js = require("drizzle-orm/postgres-js");
1309
1477
  var import_postgres = __toESM(require("postgres"), 1);
1478
+ init_config_manager();
1310
1479
  init_schema_postgres();
1311
1480
  init_schema_sqlite();
1312
1481
  init_schema_factory();
1313
1482
 
1314
1483
  // src/utils/path.ts
1315
1484
  init_cjs_shims();
1316
- var import_node_os = require("os");
1317
- var import_node_path2 = require("path");
1485
+ var import_node_os2 = require("os");
1486
+ var import_node_path3 = require("path");
1318
1487
 
1319
1488
  // src/db/index.ts
1320
1489
  init_database_wrapper();
@@ -1325,7 +1494,7 @@ var import_node_crypto = require("crypto");
1325
1494
 
1326
1495
  // src/db/migrate.ts
1327
1496
  init_cjs_shims();
1328
- var import_node_path3 = require("path");
1497
+ var import_node_path4 = require("path");
1329
1498
  var import_node_url = require("url");
1330
1499
  var import_drizzle_orm4 = require("drizzle-orm");
1331
1500
  var import_migrator = require("drizzle-orm/libsql/migrator");
@@ -1357,19 +1526,7 @@ init_schema();
1357
1526
  init_cjs_shims();
1358
1527
  var import_drizzle_orm7 = require("drizzle-orm");
1359
1528
  var yaml2 = __toESM(require("js-yaml"), 1);
1360
-
1361
- // src/config/config-manager.ts
1362
- init_cjs_shims();
1363
- var import_node_fs2 = require("fs");
1364
- var import_promises = __toESM(require("fs/promises"), 1);
1365
- var import_node_os2 = __toESM(require("os"), 1);
1366
- var import_node_path4 = __toESM(require("path"), 1);
1367
- var import_js_yaml = __toESM(require("js-yaml"), 1);
1368
-
1369
- // src/config/constants.ts
1370
- init_cjs_shims();
1371
-
1372
- // src/db/repositories/boards.ts
1529
+ init_config_manager();
1373
1530
  init_ids();
1374
1531
 
1375
1532
  // src/utils/url.ts
@@ -1472,6 +1629,8 @@ var TaskStatus = {
1472
1629
  STOPPING: "stopping",
1473
1630
  // Stop requested, waiting for SDK to halt
1474
1631
  AWAITING_PERMISSION: "awaiting_permission",
1632
+ TIMED_OUT: "timed_out",
1633
+ // Permission request timed out, executor exited — user must re-prompt
1475
1634
  COMPLETED: "completed",
1476
1635
  FAILED: "failed",
1477
1636
  STOPPED: "stopped"
@@ -1492,6 +1651,7 @@ init_cjs_shims();
1492
1651
 
1493
1652
  // src/db/repositories/sessions.ts
1494
1653
  var import_drizzle_orm12 = require("drizzle-orm");
1654
+ init_config_manager();
1495
1655
  init_ids();
1496
1656
  init_database_wrapper();
1497
1657
  init_schema();
@@ -1510,16 +1670,22 @@ init_ids();
1510
1670
  init_database_wrapper();
1511
1671
  init_schema();
1512
1672
 
1513
- // src/db/repositories/users.ts
1673
+ // src/db/repositories/user-mcp-oauth-tokens.ts
1514
1674
  init_cjs_shims();
1515
1675
  var import_drizzle_orm16 = require("drizzle-orm");
1676
+ init_database_wrapper();
1677
+ init_schema();
1678
+
1679
+ // src/db/repositories/users.ts
1680
+ init_cjs_shims();
1681
+ var import_drizzle_orm17 = require("drizzle-orm");
1516
1682
  init_ids();
1517
1683
  init_database_wrapper();
1518
1684
  init_schema();
1519
1685
 
1520
1686
  // src/db/repositories/worktrees.ts
1521
1687
  init_cjs_shims();
1522
- var import_drizzle_orm17 = require("drizzle-orm");
1688
+ var import_drizzle_orm18 = require("drizzle-orm");
1523
1689
  init_ids();
1524
1690
  init_database_wrapper();
1525
1691
  init_schema();
@@ -1533,7 +1699,7 @@ init_cjs_shims();
1533
1699
  // src/db/user-utils.ts
1534
1700
  init_cjs_shims();
1535
1701
  var import_bcryptjs = __toESM(require("bcryptjs"), 1);
1536
- var import_drizzle_orm18 = require("drizzle-orm");
1702
+ var import_drizzle_orm19 = require("drizzle-orm");
1537
1703
  init_ids();
1538
1704
  init_database_wrapper();
1539
1705
  init_schema();
@@ -1,6 +1,6 @@
1
- import { e as Message } from '../message-DZitapX9.cjs';
1
+ import { f as Message } from '../message-Zwy5DQg7.cjs';
2
2
  import { a as SessionID } from '../id-BwPJtWxW.cjs';
3
- import { T as TaskStatus, c as Task } from '../task-D5cWUcAY.cjs';
3
+ import { T as TaskStatus, c as Task } from '../task-BGBFPSP-.cjs';
4
4
  import '../context-ByxGjp5l.cjs';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { e as Message } from '../message-CrqsdxNE.js';
1
+ import { f as Message } from '../message-D_46gozx.js';
2
2
  import { a as SessionID } from '../id-BwPJtWxW.js';
3
- import { T as TaskStatus, c as Task } from '../task-D0i_mU9u.js';
3
+ import { T as TaskStatus, c as Task } from '../task-DJMv0_cr.js';
4
4
  import '../context-ByxGjp5l.js';
5
5
 
6
6
  /**