agor-live 0.17.2 → 0.17.3

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 (316) hide show
  1. package/dist/cli/lib/banner.d.ts +1 -1
  2. package/dist/cli/lib/banner.js +1 -1
  3. package/dist/cli/lib/check-migrations.test.js +9627 -9112
  4. package/dist/cli/lib/daemon-manager.test.js +9632 -9117
  5. package/dist/cli/lib/help.js +1 -1
  6. package/dist/core/api/index.d.cts +3 -3
  7. package/dist/core/api/index.d.ts +3 -3
  8. package/dist/core/{board-comment-DIdOJrSF.d.cts → board-comment-CCFVVN7K.d.cts} +0 -2
  9. package/dist/core/{board-comment-3N-jSgsk.d.ts → board-comment-iT3DgZb4.d.ts} +0 -2
  10. package/dist/core/claude/index.cjs +29 -19
  11. package/dist/core/claude/index.d.cts +2 -2
  12. package/dist/core/claude/index.d.ts +2 -2
  13. package/dist/core/claude/index.js +32 -33
  14. package/dist/core/client/index.cjs +49 -0
  15. package/dist/core/client/index.d.cts +7 -7
  16. package/dist/core/client/index.d.ts +7 -7
  17. package/dist/core/client/index.js +46 -0
  18. package/dist/core/{client-B5PyIvNc.d.cts → client-CemqXk0v.d.cts} +116 -100
  19. package/dist/core/{client-C1CsRi19.d.ts → client-uYEOha6g.d.ts} +116 -100
  20. package/dist/core/config/browser.d.cts +3 -3
  21. package/dist/core/config/browser.d.ts +3 -3
  22. package/dist/core/config/index.cjs +84 -41
  23. package/dist/core/config/index.d.cts +59 -17
  24. package/dist/core/config/index.d.ts +59 -17
  25. package/dist/core/config/index.js +86 -55
  26. package/dist/core/{config-manager-TxxjFMRd.d.cts → config-manager-B8TP9Kz0.d.cts} +12 -3
  27. package/dist/core/{config-manager-DTrsj6G3.d.ts → config-manager-CDEB0FY4.d.ts} +12 -3
  28. package/dist/core/{config-services-YEZ4DwCD.d.cts → config-services-CXyQKEK5.d.cts} +1 -1
  29. package/dist/core/{config-services-DcO2GRgh.d.ts → config-services-DhM7_yWn.d.ts} +1 -1
  30. package/dist/core/db/index.cjs +235 -175
  31. package/dist/core/db/index.d.cts +190 -147
  32. package/dist/core/db/index.d.ts +190 -147
  33. package/dist/core/db/index.js +239 -190
  34. package/dist/core/db/session-guard.d.cts +4 -4
  35. package/dist/core/db/session-guard.d.ts +4 -4
  36. package/dist/core/drizzle/postgres/0028_queued_tasks.sql +8 -0
  37. package/dist/core/drizzle/postgres/0030_migrate_queued_messages.sql +24 -0
  38. package/dist/core/drizzle/postgres/0031_restructure_agentic_tool_config.sql +201 -0
  39. package/dist/core/drizzle/postgres/meta/_journal.json +21 -0
  40. package/dist/core/drizzle/sqlite/0039_queued_tasks.sql +13 -0
  41. package/dist/core/drizzle/sqlite/0040_migrate_queued_messages.sql +61 -0
  42. package/dist/core/drizzle/sqlite/0041_restructure_agentic_tool_config.sql +204 -0
  43. package/dist/core/drizzle/sqlite/meta/_journal.json +21 -0
  44. package/dist/core/gateway/index.d.cts +2 -2
  45. package/dist/core/gateway/index.d.ts +2 -2
  46. package/dist/core/{gateway-BnOlAelY.d.cts → gateway-BWq4j_Ll.d.cts} +1 -1
  47. package/dist/core/{gateway-B_4X-v07.d.ts → gateway-C3Jm_akw.d.ts} +1 -1
  48. package/dist/core/git/index.d.cts +4 -4
  49. package/dist/core/git/index.d.ts +4 -4
  50. package/dist/core/index.cjs +474 -201
  51. package/dist/core/index.d.cts +12 -10
  52. package/dist/core/index.d.ts +12 -10
  53. package/dist/core/index.js +473 -216
  54. package/dist/core/lib/feathers-validation.cjs +2 -1
  55. package/dist/core/lib/feathers-validation.d.cts +1 -1
  56. package/dist/core/lib/feathers-validation.d.ts +1 -1
  57. package/dist/core/lib/feathers-validation.js +2 -1
  58. package/dist/core/mcp/index.cjs +26 -16
  59. package/dist/core/mcp/index.js +26 -16
  60. package/dist/core/{message-DinITA7a.d.cts → message-CSWOsdcZ.d.cts} +1 -9
  61. package/dist/core/{message-CHUUP6OS.d.ts → message-DZa8g0s0.d.ts} +1 -9
  62. package/dist/core/models/index.d.cts +3 -73
  63. package/dist/core/models/index.d.ts +3 -73
  64. package/dist/core/package.json +5 -0
  65. package/dist/core/permissions/index.d.cts +1 -1
  66. package/dist/core/permissions/index.d.ts +1 -1
  67. package/dist/core/resolve-config-BcL-Hv8k.d.ts +74 -0
  68. package/dist/core/resolve-config-DTCxuSBx.d.cts +74 -0
  69. package/dist/core/seed/index.cjs +145 -98
  70. package/dist/core/seed/index.js +148 -112
  71. package/dist/core/{session-guard-C0LkDEN7.d.ts → session-guard-BFqVtBoS.d.ts} +1 -1
  72. package/dist/core/{session-guard-kvAx_8Fb.d.cts → session-guard-KHh0cnET.d.cts} +1 -1
  73. package/dist/core/sessions/index.cjs +184 -0
  74. package/dist/core/sessions/index.d.cts +79 -0
  75. package/dist/core/sessions/index.d.ts +79 -0
  76. package/dist/core/sessions/index.js +157 -0
  77. package/dist/core/{task-BLPFCORT.d.ts → task-BHV-YHg1.d.ts} +41 -3
  78. package/dist/core/{task-wht1RJEL.d.cts → task-C2Hy7H6u.d.cts} +41 -3
  79. package/dist/core/templates/session-context.d.cts +1 -1
  80. package/dist/core/templates/session-context.d.ts +1 -1
  81. package/dist/core/tools/mcp/oauth-mcp-transport.cjs +168 -66
  82. package/dist/core/tools/mcp/oauth-mcp-transport.d.cts +92 -16
  83. package/dist/core/tools/mcp/oauth-mcp-transport.d.ts +92 -16
  84. package/dist/core/tools/mcp/oauth-mcp-transport.js +165 -66
  85. package/dist/core/tools/mcp/oauth-refresh.cjs +43 -53
  86. package/dist/core/tools/mcp/oauth-refresh.d.cts +3 -3
  87. package/dist/core/tools/mcp/oauth-refresh.d.ts +3 -3
  88. package/dist/core/tools/mcp/oauth-refresh.js +58 -78
  89. package/dist/core/types/index.cjs +49 -0
  90. package/dist/core/types/index.d.cts +7 -7
  91. package/dist/core/types/index.d.ts +7 -7
  92. package/dist/core/types/index.js +46 -0
  93. package/dist/core/{types-DNqfdt1z.d.cts → types-D4Rl6ZKN.d.cts} +18 -2
  94. package/dist/core/{types-DqPMmTad.d.ts → types-n61iaXub.d.ts} +18 -2
  95. package/dist/core/unix/index.cjs +164 -110
  96. package/dist/core/unix/index.d.cts +7 -8
  97. package/dist/core/unix/index.d.ts +7 -8
  98. package/dist/core/unix/index.js +167 -124
  99. package/dist/core/{user-DkNdeFoz.d.cts → user-CpfkcV2C.d.cts} +139 -13
  100. package/dist/core/{user-BfVWBmXA.d.ts → user-DP-XZMIM.d.ts} +139 -13
  101. package/dist/core/utils/permission-mode-mapper.d.cts +0 -2
  102. package/dist/core/utils/permission-mode-mapper.d.ts +0 -2
  103. package/dist/daemon/index.js +2976 -2791
  104. package/dist/daemon/main.js +2976 -2791
  105. package/dist/daemon/mcp/server.js +177 -134
  106. package/dist/daemon/mcp/tools/analytics.js +19 -5
  107. package/dist/daemon/mcp/tools/artifacts.js +19 -5
  108. package/dist/daemon/mcp/tools/boards.js +19 -5
  109. package/dist/daemon/mcp/tools/card-types.js +19 -5
  110. package/dist/daemon/mcp/tools/cards.js +19 -5
  111. package/dist/daemon/mcp/tools/environment.js +19 -5
  112. package/dist/daemon/mcp/tools/mcp-servers.d.ts +29 -2
  113. package/dist/daemon/mcp/tools/mcp-servers.js +64 -54
  114. package/dist/daemon/mcp/tools/messages.js +19 -5
  115. package/dist/daemon/mcp/tools/repos.js +19 -5
  116. package/dist/daemon/mcp/tools/search.js +19 -5
  117. package/dist/daemon/mcp/tools/sessions.js +175 -53
  118. package/dist/daemon/mcp/tools/tasks.js +19 -5
  119. package/dist/daemon/mcp/tools/users.js +19 -5
  120. package/dist/daemon/mcp/tools/worktrees.js +37 -38
  121. package/dist/daemon/register-hooks.js +52 -1
  122. package/dist/daemon/register-routes.js +436 -424
  123. package/dist/daemon/register-services.js +255 -140
  124. package/dist/daemon/services/config.d.ts +7 -1
  125. package/dist/daemon/services/config.js +3 -2
  126. package/dist/daemon/services/gateway.js +28 -15
  127. package/dist/daemon/services/mcp-servers.d.ts +7 -2
  128. package/dist/daemon/services/repos.js +2 -0
  129. package/dist/daemon/services/sessions.d.ts +1 -1
  130. package/dist/daemon/services/sessions.js +8 -16
  131. package/dist/daemon/services/tasks.js +16 -10
  132. package/dist/daemon/services/terminals.js +2 -0
  133. package/dist/daemon/services/users.d.ts +27 -11
  134. package/dist/daemon/services/users.js +89 -43
  135. package/dist/daemon/services/worktree-owners.js +2 -0
  136. package/dist/daemon/services/worktrees.js +2 -0
  137. package/dist/daemon/setup/index.js +5 -2
  138. package/dist/daemon/setup/socketio.d.ts +10 -1
  139. package/dist/daemon/setup/socketio.js +7 -3
  140. package/dist/daemon/startup.js +13 -1
  141. package/dist/daemon/utils/apply-session-config-defaults.d.ts +54 -0
  142. package/dist/daemon/utils/apply-session-config-defaults.js +46 -0
  143. package/dist/daemon/utils/spawn-executor.js +2 -0
  144. package/dist/daemon/utils/worktree-authorization.d.ts +2 -4
  145. package/dist/executor/commands/zellij.d.ts.map +1 -1
  146. package/dist/executor/commands/zellij.js +2 -2
  147. package/dist/executor/handlers/sdk/base-executor.d.ts +4 -3
  148. package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
  149. package/dist/executor/handlers/sdk/base-executor.js +11 -5
  150. package/dist/executor/payload-types.d.ts +14 -14
  151. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
  152. package/dist/executor/sdk-handlers/claude/claude-tool.js +9 -4
  153. package/dist/executor/sdk-handlers/claude/import/task-extractor.d.ts.map +1 -1
  154. package/dist/executor/sdk-handlers/claude/import/task-extractor.js +0 -5
  155. package/dist/executor/sdk-handlers/claude/message-builder.d.ts +23 -2
  156. package/dist/executor/sdk-handlers/claude/message-builder.d.ts.map +1 -1
  157. package/dist/executor/sdk-handlers/claude/message-builder.js +33 -2
  158. package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts +9 -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 +12 -0
  161. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
  162. package/dist/executor/sdk-handlers/claude/query-builder.js +11 -6
  163. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +0 -5
  164. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
  165. package/dist/executor/sdk-handlers/codex/codex-tool.js +9 -24
  166. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +15 -2
  167. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
  168. package/dist/executor/sdk-handlers/codex/prompt-service.js +39 -10
  169. package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts +0 -5
  170. package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts.map +1 -1
  171. package/dist/executor/sdk-handlers/copilot/copilot-tool.js +5 -22
  172. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +0 -5
  173. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
  174. package/dist/executor/sdk-handlers/gemini/gemini-tool.js +9 -24
  175. package/dist/ui/assets/{CodeEditor.inner-CO-5PAnZ.js → CodeEditor.inner-CVLqZBtM.js} +1 -1
  176. package/dist/ui/assets/{CodeEditor.inner-CO-5PAnZ.js.gz → CodeEditor.inner-CVLqZBtM.js.gz} +0 -0
  177. package/dist/ui/assets/{_basePickBy-DfxojsEt.js → _basePickBy-CFq5ES2J.js} +1 -1
  178. package/dist/ui/assets/_basePickBy-CFq5ES2J.js.gz +0 -0
  179. package/dist/ui/assets/{_baseUniq-DWFPJOTC.js → _baseUniq-C4uKBvNt.js} +1 -1
  180. package/dist/ui/assets/_baseUniq-C4uKBvNt.js.gz +0 -0
  181. package/dist/ui/assets/{arc-vMZ_XGSI.js → arc-BnrcXDJJ.js} +1 -1
  182. package/dist/ui/assets/arc-BnrcXDJJ.js.gz +0 -0
  183. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-DGpk_uOD.js → architectureDiagram-VXUJARFQ-DD9HD-WR.js} +1 -1
  184. package/dist/ui/assets/architectureDiagram-VXUJARFQ-DD9HD-WR.js.gz +0 -0
  185. package/dist/ui/assets/{base-80a1f760-BsVlOKqO.js → base-80a1f760-BK1VmxWU.js} +1 -1
  186. package/dist/ui/assets/{blockDiagram-VD42YOAC-BkRnxc94.js → blockDiagram-VD42YOAC-LBAckZZe.js} +1 -1
  187. package/dist/ui/assets/blockDiagram-VD42YOAC-LBAckZZe.js.gz +0 -0
  188. package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dcf-anJy.js → c4Diagram-YG6GDRKO-yEdylcYP.js} +1 -1
  189. package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dcf-anJy.js.gz → c4Diagram-YG6GDRKO-yEdylcYP.js.gz} +0 -0
  190. package/dist/ui/assets/channel-CMN-iY3Q.js +1 -0
  191. package/dist/ui/assets/{chunk-4BX2VUAB-C4oVWDo8.js → chunk-4BX2VUAB-IHtzKbmQ.js} +1 -1
  192. package/dist/ui/assets/{chunk-55IACEB6-CsBbTu57.js → chunk-55IACEB6-C4o5tv_F.js} +1 -1
  193. package/dist/ui/assets/{chunk-B4BG7PRW-DtkeCZab.js → chunk-B4BG7PRW-EPkzLvlB.js} +1 -1
  194. package/dist/ui/assets/chunk-B4BG7PRW-EPkzLvlB.js.gz +0 -0
  195. package/dist/ui/assets/{chunk-DI55MBZ5-BQ_asW-1.js → chunk-DI55MBZ5-CW-Bzkzj.js} +1 -1
  196. package/dist/ui/assets/chunk-DI55MBZ5-CW-Bzkzj.js.gz +0 -0
  197. package/dist/ui/assets/{chunk-FMBD7UC4-DAdcLNG-.js → chunk-FMBD7UC4-DvGU02Io.js} +1 -1
  198. package/dist/ui/assets/{chunk-QN33PNHL-Do2zad3m.js → chunk-QN33PNHL-C-PIlz9n.js} +1 -1
  199. package/dist/ui/assets/{chunk-QZHKN3VN-CyhMmSdC.js → chunk-QZHKN3VN-BhpJFm6h.js} +1 -1
  200. package/dist/ui/assets/{chunk-TZMSLE5B-DlPypnIq.js → chunk-TZMSLE5B-Biake8IU.js} +1 -1
  201. package/dist/ui/assets/chunk-TZMSLE5B-Biake8IU.js.gz +0 -0
  202. package/dist/ui/assets/classDiagram-2ON5EDUG-Bz1et8oA.js +1 -0
  203. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-Bz1et8oA.js +1 -0
  204. package/dist/ui/assets/clone-Dxo5sEAf.js +1 -0
  205. package/dist/ui/assets/{consoleHook-59e792cb-DHYIclEd.js → consoleHook-59e792cb-BzEkHWE8.js} +1 -1
  206. package/dist/ui/assets/consoleHook-59e792cb-BzEkHWE8.js.gz +0 -0
  207. package/dist/ui/assets/{cose-bilkent-S5V4N54A-DotJH9qH.js → cose-bilkent-S5V4N54A-vAiVi74s.js} +1 -1
  208. package/dist/ui/assets/cose-bilkent-S5V4N54A-vAiVi74s.js.gz +0 -0
  209. package/dist/ui/assets/{dagre-6UL2VRFP-Btssr8QF.js → dagre-6UL2VRFP-C8w7TshD.js} +1 -1
  210. package/dist/ui/assets/dagre-6UL2VRFP-C8w7TshD.js.gz +0 -0
  211. package/dist/ui/assets/{diagram-PSM6KHXK-D5_Jkog3.js → diagram-PSM6KHXK-CvnjEmtQ.js} +1 -1
  212. package/dist/ui/assets/diagram-PSM6KHXK-CvnjEmtQ.js.gz +0 -0
  213. package/dist/ui/assets/{diagram-QEK2KX5R-DlPEVSL5.js → diagram-QEK2KX5R-D245unng.js} +1 -1
  214. package/dist/ui/assets/diagram-QEK2KX5R-D245unng.js.gz +0 -0
  215. package/dist/ui/assets/{diagram-S2PKOQOG-CjO1k8aG.js → diagram-S2PKOQOG-DgGUHL8Z.js} +1 -1
  216. package/dist/ui/assets/diagram-S2PKOQOG-DgGUHL8Z.js.gz +0 -0
  217. package/dist/ui/assets/{erDiagram-Q2GNP2WA-3cO02-K3.js → erDiagram-Q2GNP2WA-Cf5paK9b.js} +1 -1
  218. package/dist/ui/assets/erDiagram-Q2GNP2WA-Cf5paK9b.js.gz +0 -0
  219. package/dist/ui/assets/{flowDiagram-NV44I4VS-CajTpSxI.js → flowDiagram-NV44I4VS-BJpHmEXV.js} +1 -1
  220. package/dist/ui/assets/flowDiagram-NV44I4VS-BJpHmEXV.js.gz +0 -0
  221. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-CnY_bV3o.js → ganttDiagram-LVOFAZNH-zOyTZcXC.js} +1 -1
  222. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-CnY_bV3o.js.gz → ganttDiagram-LVOFAZNH-zOyTZcXC.js.gz} +0 -0
  223. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-CH16bg-j.js → gitGraphDiagram-NY62KEGX-B0uxwqMv.js} +1 -1
  224. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-B0uxwqMv.js.gz +0 -0
  225. package/dist/ui/assets/{graph-IQoZvE3o.js → graph-NWXc73TO.js} +1 -1
  226. package/dist/ui/assets/graph-NWXc73TO.js.gz +0 -0
  227. package/dist/ui/assets/{index-599aeaf7-RUCkgwsg.js → index-599aeaf7-BKmNqoNF.js} +1 -1
  228. package/dist/ui/assets/index-599aeaf7-BKmNqoNF.js.gz +0 -0
  229. package/dist/ui/assets/{index-B3AvIgqP.js → index-BRYNiHLB.js} +345 -349
  230. package/dist/ui/assets/index-BRYNiHLB.js.gz +0 -0
  231. package/dist/ui/assets/{index-QV5-5yA2.js → index-BX6Xmhes.js} +1 -1
  232. package/dist/ui/assets/index-BX6Xmhes.js.gz +0 -0
  233. package/dist/ui/assets/{index-ChmRuj_T.js → index-W1hIq1uU.js} +1 -1
  234. package/dist/ui/assets/index-W1hIq1uU.js.gz +0 -0
  235. package/dist/ui/assets/{index-C-quzPWC.js → index-ctuok0zf.js} +1 -1
  236. package/dist/ui/assets/index-ctuok0zf.js.gz +0 -0
  237. package/dist/ui/assets/{infoDiagram-ER5ION4S-2e4gZVGT.js → infoDiagram-ER5ION4S-CquCuoTH.js} +1 -1
  238. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-B5bgV3GH.js → journeyDiagram-XKPGCS4Q-B_XkufZ8.js} +1 -1
  239. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-B_XkufZ8.js.gz +0 -0
  240. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-Bp-aWRSc.js → kanban-definition-3W4ZIXB7-C2Bo9HkB.js} +1 -1
  241. package/dist/ui/assets/kanban-definition-3W4ZIXB7-C2Bo9HkB.js.gz +0 -0
  242. package/dist/ui/assets/katex-C6wkUDai.css +1 -0
  243. package/dist/ui/assets/{katex-DGRguze2.css.gz → katex-C6wkUDai.css.gz} +0 -0
  244. package/dist/ui/assets/{layout-BH-2XJZq.js → layout-D9A7Uaku.js} +1 -1
  245. package/dist/ui/assets/layout-D9A7Uaku.js.gz +0 -0
  246. package/dist/ui/assets/{linear-DCYXhl_f.js → linear-BJUwJsxE.js} +1 -1
  247. package/dist/ui/assets/linear-BJUwJsxE.js.gz +0 -0
  248. package/dist/ui/assets/{mermaid.core-BAuL6kgQ.js → mermaid.core-DcOEcjcA.js} +5 -5
  249. package/dist/ui/assets/mermaid.core-DcOEcjcA.js.gz +0 -0
  250. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-DpH5N-N0.js → mindmap-definition-VGOIOE7T-BFT1m7BG.js} +1 -1
  251. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BFT1m7BG.js.gz +0 -0
  252. package/dist/ui/assets/{pieDiagram-ADFJNKIX-BB8fBxj1.js → pieDiagram-ADFJNKIX-BFaX1oBV.js} +1 -1
  253. package/dist/ui/assets/pieDiagram-ADFJNKIX-BFaX1oBV.js.gz +0 -0
  254. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-D6oZLdUD.js → quadrantDiagram-AYHSOK5B-DQps5392.js} +1 -1
  255. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DQps5392.js.gz +0 -0
  256. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-B4uGPp8w.js → requirementDiagram-UZGBJVZJ-3EZ5KWEi.js} +1 -1
  257. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-3EZ5KWEi.js.gz +0 -0
  258. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-MXhIjhme.js → sankeyDiagram-TZEHDZUN-D0qcydqq.js} +1 -1
  259. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-D0qcydqq.js.gz +0 -0
  260. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-Cm53TYug.js → sequenceDiagram-WL72ISMW-BCR5gaaN.js} +1 -1
  261. package/dist/ui/assets/sequenceDiagram-WL72ISMW-BCR5gaaN.js.gz +0 -0
  262. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BVuxUkj5.js → stateDiagram-FKZM4ZOC-BvX4FLQ9.js} +1 -1
  263. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BvX4FLQ9.js.gz +0 -0
  264. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CxLDvgTF.js +1 -0
  265. package/dist/ui/assets/{timeline-definition-IT6M3QCI-CMypNiEP.js → timeline-definition-IT6M3QCI-_AWp5LJn.js} +1 -1
  266. package/dist/ui/assets/timeline-definition-IT6M3QCI-_AWp5LJn.js.gz +0 -0
  267. package/dist/ui/assets/{treemap-KMMF4GRG-BEtnV3BT.js → treemap-KMMF4GRG-BZ9FBl5-.js} +1 -1
  268. package/dist/ui/assets/treemap-KMMF4GRG-BZ9FBl5-.js.gz +0 -0
  269. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-BnioEYUM.js → xychartDiagram-PRI3JC2R-_wB7yuVd.js} +1 -1
  270. package/dist/ui/assets/xychartDiagram-PRI3JC2R-_wB7yuVd.js.gz +0 -0
  271. package/dist/ui/index.html +1 -1
  272. package/package.json +8 -8
  273. package/dist/ui/assets/_basePickBy-DfxojsEt.js.gz +0 -0
  274. package/dist/ui/assets/_baseUniq-DWFPJOTC.js.gz +0 -0
  275. package/dist/ui/assets/arc-vMZ_XGSI.js.gz +0 -0
  276. package/dist/ui/assets/architectureDiagram-VXUJARFQ-DGpk_uOD.js.gz +0 -0
  277. package/dist/ui/assets/blockDiagram-VD42YOAC-BkRnxc94.js.gz +0 -0
  278. package/dist/ui/assets/channel-B9aI4bYN.js +0 -1
  279. package/dist/ui/assets/chunk-B4BG7PRW-DtkeCZab.js.gz +0 -0
  280. package/dist/ui/assets/chunk-DI55MBZ5-BQ_asW-1.js.gz +0 -0
  281. package/dist/ui/assets/chunk-TZMSLE5B-DlPypnIq.js.gz +0 -0
  282. package/dist/ui/assets/classDiagram-2ON5EDUG-p-68WO4Z.js +0 -1
  283. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-p-68WO4Z.js +0 -1
  284. package/dist/ui/assets/clone-DzK5ogfn.js +0 -1
  285. package/dist/ui/assets/consoleHook-59e792cb-DHYIclEd.js.gz +0 -0
  286. package/dist/ui/assets/cose-bilkent-S5V4N54A-DotJH9qH.js.gz +0 -0
  287. package/dist/ui/assets/dagre-6UL2VRFP-Btssr8QF.js.gz +0 -0
  288. package/dist/ui/assets/diagram-PSM6KHXK-D5_Jkog3.js.gz +0 -0
  289. package/dist/ui/assets/diagram-QEK2KX5R-DlPEVSL5.js.gz +0 -0
  290. package/dist/ui/assets/diagram-S2PKOQOG-CjO1k8aG.js.gz +0 -0
  291. package/dist/ui/assets/erDiagram-Q2GNP2WA-3cO02-K3.js.gz +0 -0
  292. package/dist/ui/assets/flowDiagram-NV44I4VS-CajTpSxI.js.gz +0 -0
  293. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CH16bg-j.js.gz +0 -0
  294. package/dist/ui/assets/graph-IQoZvE3o.js.gz +0 -0
  295. package/dist/ui/assets/index-599aeaf7-RUCkgwsg.js.gz +0 -0
  296. package/dist/ui/assets/index-B3AvIgqP.js.gz +0 -0
  297. package/dist/ui/assets/index-C-quzPWC.js.gz +0 -0
  298. package/dist/ui/assets/index-ChmRuj_T.js.gz +0 -0
  299. package/dist/ui/assets/index-QV5-5yA2.js.gz +0 -0
  300. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-B5bgV3GH.js.gz +0 -0
  301. package/dist/ui/assets/kanban-definition-3W4ZIXB7-Bp-aWRSc.js.gz +0 -0
  302. package/dist/ui/assets/katex-DGRguze2.css +0 -1
  303. package/dist/ui/assets/layout-BH-2XJZq.js.gz +0 -0
  304. package/dist/ui/assets/linear-DCYXhl_f.js.gz +0 -0
  305. package/dist/ui/assets/mermaid.core-BAuL6kgQ.js.gz +0 -0
  306. package/dist/ui/assets/mindmap-definition-VGOIOE7T-DpH5N-N0.js.gz +0 -0
  307. package/dist/ui/assets/pieDiagram-ADFJNKIX-BB8fBxj1.js.gz +0 -0
  308. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-D6oZLdUD.js.gz +0 -0
  309. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-B4uGPp8w.js.gz +0 -0
  310. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-MXhIjhme.js.gz +0 -0
  311. package/dist/ui/assets/sequenceDiagram-WL72ISMW-Cm53TYug.js.gz +0 -0
  312. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BVuxUkj5.js.gz +0 -0
  313. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-8Jeww6Dc.js +0 -1
  314. package/dist/ui/assets/timeline-definition-IT6M3QCI-CMypNiEP.js.gz +0 -0
  315. package/dist/ui/assets/treemap-KMMF4GRG-BEtnV3BT.js.gz +0 -0
  316. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BnioEYUM.js.gz +0 -0
@@ -13823,20 +13823,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
13823
13823
 
13824
13824
  // src/mcp/tools/sessions.ts
13825
13825
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13826
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13826
+ import {
13827
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13828
+ CODEX_MODEL_METADATA,
13829
+ DEFAULT_CLAUDE_MODEL,
13830
+ DEFAULT_CODEX_MODEL,
13831
+ DEFAULT_GEMINI_MODEL,
13832
+ GEMINI_MODELS
13833
+ } from "@agor/core/models";
13834
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13827
13835
  import {
13828
13836
  AGENTIC_TOOL_CAPABILITIES,
13829
13837
  getSessionType
13830
13838
  } from "@agor/core/types";
13831
- var modelConfigInputSchema = external_exports.object({
13839
+ var modelConfigObjectSchema = external_exports.object({
13832
13840
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13833
13841
  // .min(1): reject empty-string model explicitly so callers don't silently
13834
13842
  // fall through to user defaults when they meant to pin a specific model.
13835
13843
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13836
13844
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13837
13845
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13838
- }).optional().describe(
13839
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13846
+ });
13847
+ var modelConfigInputSchema = external_exports.union([
13848
+ external_exports.string().min(1).describe(
13849
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13850
+ ),
13851
+ modelConfigObjectSchema
13852
+ ]).optional().describe(
13853
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13840
13854
  );
13841
13855
 
13842
13856
  // src/mcp/tools/users.ts
@@ -13845,7 +13859,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13845
13859
  // src/mcp/tools/worktrees.ts
13846
13860
  import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
13847
13861
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13848
- import { resolveModelConfig } from "@agor/core/models";
13862
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13849
13863
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13850
13864
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13851
13865
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
@@ -13823,20 +13823,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
13823
13823
 
13824
13824
  // src/mcp/tools/sessions.ts
13825
13825
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13826
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13826
+ import {
13827
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13828
+ CODEX_MODEL_METADATA,
13829
+ DEFAULT_CLAUDE_MODEL,
13830
+ DEFAULT_CODEX_MODEL,
13831
+ DEFAULT_GEMINI_MODEL,
13832
+ GEMINI_MODELS
13833
+ } from "@agor/core/models";
13834
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13827
13835
  import {
13828
13836
  AGENTIC_TOOL_CAPABILITIES,
13829
13837
  getSessionType
13830
13838
  } from "@agor/core/types";
13831
- var modelConfigInputSchema = external_exports.object({
13839
+ var modelConfigObjectSchema = external_exports.object({
13832
13840
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13833
13841
  // .min(1): reject empty-string model explicitly so callers don't silently
13834
13842
  // fall through to user defaults when they meant to pin a specific model.
13835
13843
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13836
13844
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13837
13845
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13838
- }).optional().describe(
13839
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13846
+ });
13847
+ var modelConfigInputSchema = external_exports.union([
13848
+ external_exports.string().min(1).describe(
13849
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13850
+ ),
13851
+ modelConfigObjectSchema
13852
+ ]).optional().describe(
13853
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13840
13854
  );
13841
13855
 
13842
13856
  // src/mcp/tools/users.ts
@@ -13845,7 +13859,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13845
13859
  // src/mcp/tools/worktrees.ts
13846
13860
  import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
13847
13861
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13848
- import { resolveModelConfig } from "@agor/core/models";
13862
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13849
13863
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13850
13864
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13851
13865
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
@@ -13833,20 +13833,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
13833
13833
 
13834
13834
  // src/mcp/tools/sessions.ts
13835
13835
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13836
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13836
+ import {
13837
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13838
+ CODEX_MODEL_METADATA,
13839
+ DEFAULT_CLAUDE_MODEL,
13840
+ DEFAULT_CODEX_MODEL,
13841
+ DEFAULT_GEMINI_MODEL,
13842
+ GEMINI_MODELS
13843
+ } from "@agor/core/models";
13844
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13837
13845
  import {
13838
13846
  AGENTIC_TOOL_CAPABILITIES,
13839
13847
  getSessionType
13840
13848
  } from "@agor/core/types";
13841
- var modelConfigInputSchema = external_exports.object({
13849
+ var modelConfigObjectSchema = external_exports.object({
13842
13850
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13843
13851
  // .min(1): reject empty-string model explicitly so callers don't silently
13844
13852
  // fall through to user defaults when they meant to pin a specific model.
13845
13853
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13846
13854
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13847
13855
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13848
- }).optional().describe(
13849
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13856
+ });
13857
+ var modelConfigInputSchema = external_exports.union([
13858
+ external_exports.string().min(1).describe(
13859
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13860
+ ),
13861
+ modelConfigObjectSchema
13862
+ ]).optional().describe(
13863
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13850
13864
  );
13851
13865
 
13852
13866
  // src/mcp/tools/users.ts
@@ -13855,7 +13869,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13855
13869
  // src/mcp/tools/worktrees.ts
13856
13870
  import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
13857
13871
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13858
- import { resolveModelConfig } from "@agor/core/models";
13872
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13859
13873
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13860
13874
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13861
13875
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
@@ -13823,20 +13823,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
13823
13823
 
13824
13824
  // src/mcp/tools/sessions.ts
13825
13825
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13826
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13826
+ import {
13827
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13828
+ CODEX_MODEL_METADATA,
13829
+ DEFAULT_CLAUDE_MODEL,
13830
+ DEFAULT_CODEX_MODEL,
13831
+ DEFAULT_GEMINI_MODEL,
13832
+ GEMINI_MODELS
13833
+ } from "@agor/core/models";
13834
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13827
13835
  import {
13828
13836
  AGENTIC_TOOL_CAPABILITIES,
13829
13837
  getSessionType
13830
13838
  } from "@agor/core/types";
13831
- var modelConfigInputSchema = external_exports.object({
13839
+ var modelConfigObjectSchema = external_exports.object({
13832
13840
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13833
13841
  // .min(1): reject empty-string model explicitly so callers don't silently
13834
13842
  // fall through to user defaults when they meant to pin a specific model.
13835
13843
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13836
13844
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13837
13845
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13838
- }).optional().describe(
13839
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13846
+ });
13847
+ var modelConfigInputSchema = external_exports.union([
13848
+ external_exports.string().min(1).describe(
13849
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13850
+ ),
13851
+ modelConfigObjectSchema
13852
+ ]).optional().describe(
13853
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13840
13854
  );
13841
13855
 
13842
13856
  // src/mcp/tools/users.ts
@@ -13845,7 +13859,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13845
13859
  // src/mcp/tools/worktrees.ts
13846
13860
  import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
13847
13861
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13848
- import { resolveModelConfig } from "@agor/core/models";
13862
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13849
13863
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13850
13864
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13851
13865
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
@@ -1,12 +1,39 @@
1
+ import { MCPServer } from '@agor/core/types';
1
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
3
  import { McpContext } from '../server.js';
3
4
  import '@agor/core/db';
4
5
  import '@agor/core/feathers';
5
- import '@agor/core/types';
6
6
  import '../../declarations.js';
7
7
  import '../../services/sessions.js';
8
8
  import '../../adapters/drizzle.js';
9
9
 
10
+ /**
11
+ * Standard MCP-server payload returned by the MCP tools. Shared by the catalog
12
+ * lister (`agor_mcp_servers_list`) and the per-session attachment view that
13
+ * `agor_sessions_get_current` / `agor_sessions_get` embeds as
14
+ * `attached_mcp_servers` — keeping one shape so agents can treat them
15
+ * identically.
16
+ */
17
+ interface McpServerSummary {
18
+ mcp_server_id: string;
19
+ name: string;
20
+ display_name?: string;
21
+ transport: string;
22
+ auth_type: string;
23
+ oauth_mode?: string;
24
+ oauth_authenticated: boolean;
25
+ enabled: boolean;
26
+ }
27
+ /** Build the standard MCP-server summary, resolving OAuth status inline. */
28
+ declare function summarizeMcpServer(ctx: McpContext, mcpServer: MCPServer): Promise<McpServerSummary>;
29
+ /**
30
+ * List MCP servers attached to a session (via the `session-mcp-servers`
31
+ * junction), enriched with OAuth status. Used by `agor_sessions_get_current`
32
+ * and `agor_sessions_get` to expose `attached_mcp_servers` in their payload.
33
+ */
34
+ declare function listAttachedMcpServers(ctx: McpContext, sessionId: string, opts?: {
35
+ includeDisabled?: boolean;
36
+ }): Promise<McpServerSummary[]>;
10
37
  declare function registerMcpServerTools(server: McpServer, ctx: McpContext): void;
11
38
 
12
- export { registerMcpServerTools };
39
+ export { type McpServerSummary, listAttachedMcpServers, registerMcpServerTools, summarizeMcpServer };
@@ -13823,20 +13823,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
13823
13823
 
13824
13824
  // src/mcp/tools/sessions.ts
13825
13825
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13826
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13826
+ import {
13827
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13828
+ CODEX_MODEL_METADATA,
13829
+ DEFAULT_CLAUDE_MODEL,
13830
+ DEFAULT_CODEX_MODEL,
13831
+ DEFAULT_GEMINI_MODEL,
13832
+ GEMINI_MODELS
13833
+ } from "@agor/core/models";
13834
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13827
13835
  import {
13828
13836
  AGENTIC_TOOL_CAPABILITIES,
13829
13837
  getSessionType
13830
13838
  } from "@agor/core/types";
13831
- var modelConfigInputSchema = external_exports.object({
13839
+ var modelConfigObjectSchema = external_exports.object({
13832
13840
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13833
13841
  // .min(1): reject empty-string model explicitly so callers don't silently
13834
13842
  // fall through to user defaults when they meant to pin a specific model.
13835
13843
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13836
13844
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13837
13845
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13838
- }).optional().describe(
13839
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13846
+ });
13847
+ var modelConfigInputSchema = external_exports.union([
13848
+ external_exports.string().min(1).describe(
13849
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13850
+ ),
13851
+ modelConfigObjectSchema
13852
+ ]).optional().describe(
13853
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13840
13854
  );
13841
13855
 
13842
13856
  // src/mcp/tools/users.ts
@@ -13845,7 +13859,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13845
13859
  // src/mcp/tools/worktrees.ts
13846
13860
  import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
13847
13861
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13848
- import { resolveModelConfig } from "@agor/core/models";
13862
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13849
13863
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13850
13864
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13851
13865
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
@@ -13878,11 +13892,47 @@ async function getOAuthStatus(ctx, mcpServer) {
13878
13892
  }
13879
13893
  return { authenticated: false };
13880
13894
  }
13895
+ async function summarizeMcpServer(ctx, mcpServer) {
13896
+ const authType = mcpServer.auth?.type || "none";
13897
+ const oauthMode = mcpServer.auth?.oauth_mode || "per_user";
13898
+ const { authenticated } = await getOAuthStatus(ctx, mcpServer);
13899
+ return {
13900
+ mcp_server_id: mcpServer.mcp_server_id,
13901
+ name: mcpServer.name,
13902
+ display_name: mcpServer.display_name,
13903
+ transport: mcpServer.transport,
13904
+ auth_type: authType,
13905
+ oauth_mode: oauthMode,
13906
+ oauth_authenticated: authenticated,
13907
+ enabled: mcpServer.enabled
13908
+ };
13909
+ }
13910
+ async function listAttachedMcpServers(ctx, sessionId, opts = {}) {
13911
+ const sessionMCPServers = await ctx.app.service("session-mcp-servers").find({
13912
+ ...ctx.baseServiceParams,
13913
+ query: {
13914
+ session_id: sessionId,
13915
+ ...opts.includeDisabled ? {} : { enabled: true },
13916
+ $limit: 100
13917
+ }
13918
+ });
13919
+ const data = Array.isArray(sessionMCPServers) ? sessionMCPServers : sessionMCPServers.data;
13920
+ const summaries = [];
13921
+ for (const sms of data) {
13922
+ try {
13923
+ const mcpServer = await ctx.app.service("mcp-servers").get(sms.mcp_server_id, ctx.baseServiceParams);
13924
+ summaries.push(await summarizeMcpServer(ctx, mcpServer));
13925
+ } catch (error48) {
13926
+ console.warn(`Failed to fetch MCP server ${sms.mcp_server_id}:`, error48);
13927
+ }
13928
+ }
13929
+ return summaries;
13930
+ }
13881
13931
  function registerMcpServerTools(server, ctx) {
13882
13932
  server.registerTool(
13883
13933
  "agor_mcp_servers_list",
13884
13934
  {
13885
- description: "List MCP servers available to the current session. Shows each server's name, transport type, authentication type, and OAuth connection status. Use this to see which external tools/services are configured and whether they need authentication.",
13935
+ description: "List the MCP-server catalog the current user can access (i.e. servers eligible to attach to a session). Each entry includes name, transport, auth type, and OAuth status. Use this to discover IDs to pass to `agor_sessions_create({ mcpServerIds })`. To see which servers are currently ATTACHED to a session, read `attached_mcp_servers` from `agor_sessions_get_current` or `agor_sessions_get`.",
13886
13936
  annotations: { readOnlyHint: true },
13887
13937
  inputSchema: external_exports.object({
13888
13938
  includeDisabled: external_exports.boolean().optional().describe("Include disabled MCP servers (default: false)")
@@ -13890,62 +13940,20 @@ function registerMcpServerTools(server, ctx) {
13890
13940
  },
13891
13941
  async (args) => {
13892
13942
  const includeDisabled = args.includeDisabled === true;
13893
- const sessionMCPServers = await ctx.app.service("session-mcp-servers").find({
13943
+ const result = await ctx.app.service("mcp-servers").find({
13894
13944
  ...ctx.baseServiceParams,
13895
13945
  query: {
13896
- session_id: ctx.sessionId,
13946
+ scope: "global",
13897
13947
  ...includeDisabled ? {} : { enabled: true },
13898
13948
  $limit: 100
13899
13949
  }
13900
13950
  });
13951
+ const data = Array.isArray(result) ? result : result.data;
13901
13952
  const servers = [];
13902
- const sessionMCPData = Array.isArray(sessionMCPServers) ? sessionMCPServers : sessionMCPServers.data;
13903
- const mcpServerIds = sessionMCPData.map(
13904
- (sms) => sms.mcp_server_id
13905
- );
13906
- for (const serverId of mcpServerIds) {
13907
- try {
13908
- const mcpServer = await ctx.app.service("mcp-servers").get(serverId, ctx.baseServiceParams);
13909
- const authType = mcpServer.auth?.type || "none";
13910
- const oauthMode = mcpServer.auth?.oauth_mode || "per_user";
13911
- const { authenticated } = await getOAuthStatus(ctx, mcpServer);
13912
- servers.push({
13913
- mcp_server_id: mcpServer.mcp_server_id,
13914
- name: mcpServer.name,
13915
- display_name: mcpServer.display_name,
13916
- transport: mcpServer.transport,
13917
- auth_type: authType,
13918
- oauth_mode: oauthMode,
13919
- oauth_authenticated: authenticated,
13920
- enabled: mcpServer.enabled
13921
- });
13922
- } catch (error48) {
13923
- console.warn(`Failed to fetch MCP server ${serverId}:`, error48);
13924
- }
13925
- }
13926
- const globalServers = await ctx.app.service("mcp-servers").find({
13927
- ...ctx.baseServiceParams,
13928
- query: { scope: "global", ...includeDisabled ? {} : { enabled: true }, $limit: 100 }
13929
- });
13930
- for (const mcpServer of Array.isArray(globalServers) ? globalServers : globalServers.data) {
13931
- if (!mcpServerIds.includes(mcpServer.mcp_server_id)) {
13932
- const authType = mcpServer.auth?.type || "none";
13933
- const oauthMode = mcpServer.auth?.oauth_mode || "per_user";
13934
- const { authenticated } = await getOAuthStatus(ctx, mcpServer);
13935
- servers.push({
13936
- mcp_server_id: mcpServer.mcp_server_id,
13937
- name: mcpServer.name,
13938
- display_name: mcpServer.display_name,
13939
- transport: mcpServer.transport,
13940
- auth_type: authType,
13941
- oauth_mode: oauthMode,
13942
- oauth_authenticated: authenticated,
13943
- enabled: mcpServer.enabled
13944
- });
13945
- }
13953
+ for (const mcpServer of data) {
13954
+ servers.push(await summarizeMcpServer(ctx, mcpServer));
13946
13955
  }
13947
13956
  return textResult({
13948
- session_id: ctx.sessionId,
13949
13957
  mcp_servers: servers,
13950
13958
  summary: {
13951
13959
  total: servers.length,
@@ -13984,5 +13992,7 @@ function registerMcpServerTools(server, ctx) {
13984
13992
  );
13985
13993
  }
13986
13994
  export {
13987
- registerMcpServerTools
13995
+ listAttachedMcpServers,
13996
+ registerMcpServerTools,
13997
+ summarizeMcpServer
13988
13998
  };
@@ -13837,20 +13837,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
13837
13837
 
13838
13838
  // src/mcp/tools/sessions.ts
13839
13839
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13840
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13840
+ import {
13841
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13842
+ CODEX_MODEL_METADATA,
13843
+ DEFAULT_CLAUDE_MODEL,
13844
+ DEFAULT_CODEX_MODEL,
13845
+ DEFAULT_GEMINI_MODEL,
13846
+ GEMINI_MODELS
13847
+ } from "@agor/core/models";
13848
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13841
13849
  import {
13842
13850
  AGENTIC_TOOL_CAPABILITIES,
13843
13851
  getSessionType
13844
13852
  } from "@agor/core/types";
13845
- var modelConfigInputSchema = external_exports.object({
13853
+ var modelConfigObjectSchema = external_exports.object({
13846
13854
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13847
13855
  // .min(1): reject empty-string model explicitly so callers don't silently
13848
13856
  // fall through to user defaults when they meant to pin a specific model.
13849
13857
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13850
13858
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13851
13859
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13852
- }).optional().describe(
13853
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13860
+ });
13861
+ var modelConfigInputSchema = external_exports.union([
13862
+ external_exports.string().min(1).describe(
13863
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13864
+ ),
13865
+ modelConfigObjectSchema
13866
+ ]).optional().describe(
13867
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13854
13868
  );
13855
13869
 
13856
13870
  // src/mcp/tools/users.ts
@@ -13859,7 +13873,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13859
13873
  // src/mcp/tools/worktrees.ts
13860
13874
  import { isWorktreeRbacEnabled } from "@agor/core/config";
13861
13875
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13862
- import { resolveModelConfig } from "@agor/core/models";
13876
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13863
13877
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13864
13878
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13865
13879
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
@@ -13823,20 +13823,34 @@ import {
13823
13823
 
13824
13824
  // src/mcp/tools/sessions.ts
13825
13825
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13826
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13826
+ import {
13827
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13828
+ CODEX_MODEL_METADATA,
13829
+ DEFAULT_CLAUDE_MODEL,
13830
+ DEFAULT_CODEX_MODEL,
13831
+ DEFAULT_GEMINI_MODEL,
13832
+ GEMINI_MODELS
13833
+ } from "@agor/core/models";
13834
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13827
13835
  import {
13828
13836
  AGENTIC_TOOL_CAPABILITIES,
13829
13837
  getSessionType
13830
13838
  } from "@agor/core/types";
13831
- var modelConfigInputSchema = external_exports.object({
13839
+ var modelConfigObjectSchema = external_exports.object({
13832
13840
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13833
13841
  // .min(1): reject empty-string model explicitly so callers don't silently
13834
13842
  // fall through to user defaults when they meant to pin a specific model.
13835
13843
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13836
13844
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13837
13845
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13838
- }).optional().describe(
13839
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13846
+ });
13847
+ var modelConfigInputSchema = external_exports.union([
13848
+ external_exports.string().min(1).describe(
13849
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13850
+ ),
13851
+ modelConfigObjectSchema
13852
+ ]).optional().describe(
13853
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13840
13854
  );
13841
13855
 
13842
13856
  // src/mcp/tools/users.ts
@@ -13845,7 +13859,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13845
13859
  // src/mcp/tools/worktrees.ts
13846
13860
  import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
13847
13861
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13848
- import { resolveModelConfig } from "@agor/core/models";
13862
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13849
13863
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13850
13864
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13851
13865
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
@@ -13918,20 +13918,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
13918
13918
 
13919
13919
  // src/mcp/tools/sessions.ts
13920
13920
  import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
13921
- import { resolveModelConfigPrecedence } from "@agor/core/models";
13921
+ import {
13922
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
13923
+ CODEX_MODEL_METADATA,
13924
+ DEFAULT_CLAUDE_MODEL,
13925
+ DEFAULT_CODEX_MODEL,
13926
+ DEFAULT_GEMINI_MODEL,
13927
+ GEMINI_MODELS
13928
+ } from "@agor/core/models";
13929
+ import { resolveSessionDefaults } from "@agor/core/sessions";
13922
13930
  import {
13923
13931
  AGENTIC_TOOL_CAPABILITIES,
13924
13932
  getSessionType
13925
13933
  } from "@agor/core/types";
13926
- var modelConfigInputSchema = external_exports.object({
13934
+ var modelConfigObjectSchema = external_exports.object({
13927
13935
  mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
13928
13936
  // .min(1): reject empty-string model explicitly so callers don't silently
13929
13937
  // fall through to user defaults when they meant to pin a specific model.
13930
13938
  model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
13931
13939
  effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
13932
13940
  provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
13933
- }).optional().describe(
13934
- "Model override for this session. When set, overrides the user default model_config. Threaded through to the spawned agent process so it actually runs on the requested model."
13941
+ });
13942
+ var modelConfigInputSchema = external_exports.union([
13943
+ external_exports.string().min(1).describe(
13944
+ "Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
13945
+ ),
13946
+ modelConfigObjectSchema
13947
+ ]).optional().describe(
13948
+ "Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
13935
13949
  );
13936
13950
 
13937
13951
  // src/mcp/tools/users.ts
@@ -13940,7 +13954,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
13940
13954
  // src/mcp/tools/worktrees.ts
13941
13955
  import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
13942
13956
  import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
13943
- import { resolveModelConfig } from "@agor/core/models";
13957
+ import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
13944
13958
  import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
13945
13959
  import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
13946
13960
  import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";