agor-live 0.23.1 → 0.23.2

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 (469) hide show
  1. package/dist/core/claude/index.cjs +51 -27
  2. package/dist/core/claude/index.js +51 -27
  3. package/dist/core/claude-cli/index.cjs +13 -0
  4. package/dist/core/claude-cli/index.js +13 -0
  5. package/dist/core/claude-cli/pricing.d.ts.map +1 -1
  6. package/dist/core/client/index.cjs +17 -0
  7. package/dist/core/client/index.js +16 -0
  8. package/dist/core/db/index.cjs +618 -421
  9. package/dist/core/db/index.js +550 -353
  10. package/dist/core/db/repositories/boards.d.ts +27 -0
  11. package/dist/core/db/repositories/boards.d.ts.map +1 -1
  12. package/dist/core/db/repositories/branches.d.ts +11 -1
  13. package/dist/core/db/repositories/branches.d.ts.map +1 -1
  14. package/dist/core/db/repositories/gateway-channels.d.ts +9 -0
  15. package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
  16. package/dist/core/db/repositories/sessions.d.ts +7 -0
  17. package/dist/core/db/repositories/sessions.d.ts.map +1 -1
  18. package/dist/core/environment/render-snapshot.cjs +6 -2
  19. package/dist/core/environment/render-snapshot.d.ts +2 -0
  20. package/dist/core/environment/render-snapshot.d.ts.map +1 -1
  21. package/dist/core/environment/render-snapshot.js +6 -2
  22. package/dist/core/environment/variable-resolver.cjs +3 -1
  23. package/dist/core/environment/variable-resolver.js +3 -1
  24. package/dist/core/index.cjs +684 -486
  25. package/dist/core/index.js +684 -486
  26. package/dist/core/lib/feathers-validation.cjs +3 -0
  27. package/dist/core/lib/feathers-validation.d.ts +1 -0
  28. package/dist/core/lib/feathers-validation.d.ts.map +1 -1
  29. package/dist/core/lib/feathers-validation.js +3 -0
  30. package/dist/core/local-actions/index.cjs +123 -56
  31. package/dist/core/local-actions/index.js +121 -54
  32. package/dist/core/mcp/index.cjs +21 -3
  33. package/dist/core/mcp/index.d.ts +1 -1
  34. package/dist/core/mcp/index.d.ts.map +1 -1
  35. package/dist/core/mcp/index.js +18 -3
  36. package/dist/core/mcp/template-patterns.d.ts +15 -0
  37. package/dist/core/mcp/template-patterns.d.ts.map +1 -0
  38. package/dist/core/mcp/template-resolver.d.ts +13 -0
  39. package/dist/core/mcp/template-resolver.d.ts.map +1 -1
  40. package/dist/core/models/browser.cjs +6 -0
  41. package/dist/core/models/browser.js +6 -0
  42. package/dist/core/models/claude.d.ts.map +1 -1
  43. package/dist/core/models/index.cjs +6 -0
  44. package/dist/core/models/index.js +6 -0
  45. package/dist/core/seed/index.cjs +360 -216
  46. package/dist/core/seed/index.js +329 -185
  47. package/dist/core/templates/handlebars-helpers.cjs +3 -1
  48. package/dist/core/templates/handlebars-helpers.d.ts +5 -0
  49. package/dist/core/templates/handlebars-helpers.d.ts.map +1 -1
  50. package/dist/core/templates/handlebars-helpers.js +3 -1
  51. package/dist/core/tools/mcp/auth-secrets.cjs +3460 -3
  52. package/dist/core/tools/mcp/auth-secrets.d.ts.map +1 -1
  53. package/dist/core/tools/mcp/auth-secrets.js +3477 -3
  54. package/dist/core/tools/mcp/http-headers.cjs +17 -1
  55. package/dist/core/tools/mcp/http-headers.d.ts.map +1 -1
  56. package/dist/core/tools/mcp/http-headers.js +15 -1
  57. package/dist/core/tools/mcp/oauth-refresh.cjs +67 -43
  58. package/dist/core/tools/mcp/oauth-refresh.js +65 -41
  59. package/dist/core/types/board.d.ts +12 -0
  60. package/dist/core/types/board.d.ts.map +1 -1
  61. package/dist/core/types/gateway.d.ts +14 -0
  62. package/dist/core/types/gateway.d.ts.map +1 -1
  63. package/dist/core/types/index.cjs +17 -0
  64. package/dist/core/types/index.js +16 -0
  65. package/dist/core/unix/index.cjs +67 -0
  66. package/dist/core/unix/index.js +67 -0
  67. package/dist/daemon/auth/executor-runtime-scope.d.ts.map +1 -1
  68. package/dist/daemon/auth/executor-runtime-scope.js +19 -5
  69. package/dist/daemon/auth/executor-session-token.d.ts +15 -0
  70. package/dist/daemon/auth/executor-session-token.d.ts.map +1 -0
  71. package/dist/daemon/auth/executor-session-token.js +17 -0
  72. package/dist/daemon/auth/issue-browser-tokens-hook.d.ts +24 -0
  73. package/dist/daemon/auth/issue-browser-tokens-hook.d.ts.map +1 -0
  74. package/dist/daemon/auth/issue-browser-tokens-hook.js +95 -0
  75. package/dist/daemon/auth/service-jwt-strategy.d.ts.map +1 -1
  76. package/dist/daemon/auth/service-jwt-strategy.js +14 -2
  77. package/dist/daemon/declarations.d.ts +1 -0
  78. package/dist/daemon/declarations.d.ts.map +1 -1
  79. package/dist/daemon/index.js +1365 -418
  80. package/dist/daemon/main.js +1365 -418
  81. package/dist/daemon/mcp/server.js +294 -31
  82. package/dist/daemon/mcp/tools/analytics.js +73 -24
  83. package/dist/daemon/mcp/tools/artifacts.js +73 -24
  84. package/dist/daemon/mcp/tools/boards.js +73 -24
  85. package/dist/daemon/mcp/tools/branches.js +73 -24
  86. package/dist/daemon/mcp/tools/card-types.js +73 -24
  87. package/dist/daemon/mcp/tools/cards.js +73 -24
  88. package/dist/daemon/mcp/tools/environment.js +73 -24
  89. package/dist/daemon/mcp/tools/gateway-channels.d.ts.map +1 -1
  90. package/dist/daemon/mcp/tools/gateway-channels.js +190 -38
  91. package/dist/daemon/mcp/tools/knowledge.js +73 -24
  92. package/dist/daemon/mcp/tools/mcp-servers.js +73 -24
  93. package/dist/daemon/mcp/tools/messages.js +73 -24
  94. package/dist/daemon/mcp/tools/proxies.js +73 -24
  95. package/dist/daemon/mcp/tools/repos.js +73 -24
  96. package/dist/daemon/mcp/tools/schedules.js +73 -24
  97. package/dist/daemon/mcp/tools/search.js +73 -24
  98. package/dist/daemon/mcp/tools/sessions.js +73 -24
  99. package/dist/daemon/mcp/tools/tasks.js +73 -24
  100. package/dist/daemon/mcp/tools/users.js +76 -27
  101. package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
  102. package/dist/daemon/mcp/tools/widgets.js +257 -99
  103. package/dist/daemon/oauth-auth-helpers.d.ts +35 -0
  104. package/dist/daemon/oauth-auth-helpers.d.ts.map +1 -0
  105. package/dist/daemon/oauth-auth-helpers.js +14 -0
  106. package/dist/daemon/register-hooks.d.ts +1 -0
  107. package/dist/daemon/register-hooks.d.ts.map +1 -1
  108. package/dist/daemon/register-hooks.js +304 -53
  109. package/dist/daemon/register-routes.d.ts.map +1 -1
  110. package/dist/daemon/register-routes.js +738 -288
  111. package/dist/daemon/register-services.d.ts.map +1 -1
  112. package/dist/daemon/register-services.js +386 -155
  113. package/dist/daemon/services/boards.d.ts +5 -0
  114. package/dist/daemon/services/boards.d.ts.map +1 -1
  115. package/dist/daemon/services/boards.js +7 -0
  116. package/dist/daemon/services/branches.d.ts.map +1 -1
  117. package/dist/daemon/services/branches.js +31 -2
  118. package/dist/daemon/services/claude-models.d.ts.map +1 -1
  119. package/dist/daemon/services/claude-models.js +4 -1
  120. package/dist/daemon/services/gateway.d.ts +15 -0
  121. package/dist/daemon/services/gateway.d.ts.map +1 -1
  122. package/dist/daemon/services/gateway.js +34 -0
  123. package/dist/daemon/services/health-monitor.d.ts.map +1 -1
  124. package/dist/daemon/services/health-monitor.js +10 -7
  125. package/dist/daemon/services/session-streams.d.ts +29 -0
  126. package/dist/daemon/services/session-streams.d.ts.map +1 -0
  127. package/dist/daemon/services/session-streams.js +84 -0
  128. package/dist/daemon/services/session-token-service.d.ts.map +1 -1
  129. package/dist/daemon/services/session-token-service.js +8 -4
  130. package/dist/daemon/setup/index.js +43 -11
  131. package/dist/daemon/setup/socketio.d.ts.map +1 -1
  132. package/dist/daemon/setup/socketio.js +43 -11
  133. package/dist/daemon/startup.d.ts.map +1 -1
  134. package/dist/daemon/startup.js +37 -16
  135. package/dist/daemon/utils/authorization.js +19 -5
  136. package/dist/daemon/utils/emit-service-event.d.ts +56 -0
  137. package/dist/daemon/utils/emit-service-event.d.ts.map +1 -0
  138. package/dist/daemon/utils/emit-service-event.js +23 -0
  139. package/dist/daemon/utils/mcp-header-secrets.d.ts +3 -5
  140. package/dist/daemon/utils/mcp-header-secrets.d.ts.map +1 -1
  141. package/dist/daemon/utils/mcp-header-secrets.js +31 -2
  142. package/dist/daemon/utils/realtime-access-cache.d.ts +9 -0
  143. package/dist/daemon/utils/realtime-access-cache.d.ts.map +1 -1
  144. package/dist/daemon/utils/realtime-access-cache.js +24 -0
  145. package/dist/daemon/utils/realtime-publish.d.ts +24 -0
  146. package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
  147. package/dist/daemon/utils/realtime-publish.js +120 -2
  148. package/dist/daemon/utils/session-queue-tenant-scope.d.ts +24 -0
  149. package/dist/daemon/utils/session-queue-tenant-scope.d.ts.map +1 -0
  150. package/dist/daemon/utils/session-queue-tenant-scope.js +133 -0
  151. package/dist/daemon/widgets/gateway-token/index.d.ts +114 -0
  152. package/dist/daemon/widgets/gateway-token/index.d.ts.map +1 -0
  153. package/dist/daemon/widgets/gateway-token/index.js +14711 -0
  154. package/dist/daemon/widgets/index.d.ts.map +1 -1
  155. package/dist/daemon/widgets/index.js +190 -16
  156. package/dist/daemon/widgets/registry.d.ts +7 -0
  157. package/dist/daemon/widgets/registry.d.ts.map +1 -1
  158. package/dist/daemon/widgets/submissions.js +12 -9
  159. package/dist/executor/commands/git.d.ts.map +1 -1
  160. package/dist/executor/commands/git.js +2 -0
  161. package/dist/executor/db/feathers-repositories.d.ts +19 -1
  162. package/dist/executor/db/feathers-repositories.d.ts.map +1 -1
  163. package/dist/executor/db/feathers-repositories.js +31 -1
  164. package/dist/executor/handlers/sdk/claude.d.ts.map +1 -1
  165. package/dist/executor/handlers/sdk/claude.js +1 -1
  166. package/dist/executor/handlers/sdk/codex.d.ts.map +1 -1
  167. package/dist/executor/handlers/sdk/codex.js +1 -1
  168. package/dist/executor/handlers/sdk/copilot.d.ts.map +1 -1
  169. package/dist/executor/handlers/sdk/copilot.js +1 -1
  170. package/dist/executor/handlers/sdk/cursor.d.ts.map +1 -1
  171. package/dist/executor/handlers/sdk/cursor.js +1 -0
  172. package/dist/executor/handlers/sdk/gemini.d.ts.map +1 -1
  173. package/dist/executor/handlers/sdk/gemini.js +1 -1
  174. package/dist/executor/handlers/sdk/opencode.d.ts.map +1 -1
  175. package/dist/executor/handlers/sdk/opencode.js +1 -1
  176. package/dist/executor/payload-types.d.ts +5 -5
  177. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts +8 -1
  178. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
  179. package/dist/executor/sdk-handlers/base/mcp-scoping.js +58 -6
  180. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +2 -2
  181. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
  182. package/dist/executor/sdk-handlers/claude/claude-tool.js +2 -2
  183. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +13 -3
  184. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +1 -1
  185. package/dist/executor/sdk-handlers/claude/prompt-service.js +16 -3
  186. package/dist/executor/sdk-handlers/claude/query-builder.d.ts +2 -1
  187. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
  188. package/dist/executor/sdk-handlers/claude/query-builder.js +2 -1
  189. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +2 -2
  190. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
  191. package/dist/executor/sdk-handlers/codex/codex-tool.js +2 -2
  192. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +3 -2
  193. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
  194. package/dist/executor/sdk-handlers/codex/prompt-service.js +70 -6
  195. package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts +2 -2
  196. package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts.map +1 -1
  197. package/dist/executor/sdk-handlers/copilot/copilot-tool.js +2 -2
  198. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts +3 -2
  199. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts.map +1 -1
  200. package/dist/executor/sdk-handlers/copilot/prompt-service.js +4 -1
  201. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +2 -2
  202. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
  203. package/dist/executor/sdk-handlers/gemini/gemini-tool.js +2 -2
  204. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +3 -2
  205. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +1 -1
  206. package/dist/executor/sdk-handlers/gemini/prompt-service.js +4 -1
  207. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts +3 -2
  208. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +1 -1
  209. package/dist/executor/sdk-handlers/opencode/opencode-tool.js +4 -1
  210. package/dist/executor/services/feathers-client.d.ts.map +1 -1
  211. package/dist/executor/services/feathers-client.js +119 -20
  212. package/dist/ui/assets/AgorEmojiPickerInner-leeNywMc.js +1 -0
  213. package/dist/ui/assets/App-Dpl4Cc0U.js +4 -0
  214. package/dist/ui/assets/App-Dpl4Cc0U.js.gz +0 -0
  215. package/dist/ui/assets/AppNode-wN3UZlFK.js +1 -0
  216. package/dist/ui/assets/AppNode-wN3UZlFK.js.gz +0 -0
  217. package/dist/ui/assets/{ArtifactConsentModal-oMMzRn8L.js → ArtifactConsentModal-DjzXcP_L.js} +1 -1
  218. package/dist/ui/assets/ArtifactConsentModal-DjzXcP_L.js.gz +0 -0
  219. package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js +9 -0
  220. package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js.gz +0 -0
  221. package/dist/ui/assets/ArtifactNode-DISy2T-6.js +9 -0
  222. package/dist/ui/assets/ArtifactNode-DISy2T-6.js.gz +0 -0
  223. package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js +19 -0
  224. package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js.gz +0 -0
  225. package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js +34 -0
  226. package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js.gz +0 -0
  227. package/dist/ui/assets/{CodeEditor.inner-Cuj6RuLL.js → CodeEditor.inner-HmSdTLW5.js} +1 -1
  228. package/dist/ui/assets/CodeEditor.inner-HmSdTLW5.js.gz +0 -0
  229. package/dist/ui/assets/ConversationView-mWaA-B1f.js +1 -0
  230. package/dist/ui/assets/ConversationView-mWaA-B1f.js.gz +0 -0
  231. package/dist/ui/assets/{EmbeddedTerminal-Lx5I9EOJ.js → EmbeddedTerminal-NNoyPA81.js} +1 -1
  232. package/dist/ui/assets/EmbeddedTerminal-NNoyPA81.js.gz +0 -0
  233. package/dist/ui/assets/KnowledgePage-CkxVnRvz.js +24 -0
  234. package/dist/ui/assets/KnowledgePage-CkxVnRvz.js.gz +0 -0
  235. package/dist/ui/assets/{MarketingScreenshotPage-CmDPBHOl.js → MarketingScreenshotPage-B86Gs8jx.js} +2 -2
  236. package/dist/ui/assets/MarketingScreenshotPage-B86Gs8jx.js.gz +0 -0
  237. package/dist/ui/assets/MobileApp-BPs-SXvz.js +1 -0
  238. package/dist/ui/assets/MobileApp-BPs-SXvz.js.gz +0 -0
  239. package/dist/ui/assets/SessionCanvas-xVfDoEtz.js +13 -0
  240. package/dist/ui/assets/SessionCanvas-xVfDoEtz.js.gz +0 -0
  241. package/dist/ui/assets/{StreamdownDemoPage-okKKR2QH.js → StreamdownDemoPage-CvWLzVsv.js} +2 -2
  242. package/dist/ui/assets/StreamdownDemoPage-CvWLzVsv.js.gz +0 -0
  243. package/dist/ui/assets/{TerminalModal-D9jMGZXv.js → TerminalModal-ExOgsuOP.js} +2 -2
  244. package/dist/ui/assets/TerminalModal-ExOgsuOP.js.gz +0 -0
  245. package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js +1 -0
  246. package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js.gz +0 -0
  247. package/dist/ui/assets/{ThemedSyntaxHighlighter.inner-C1FdIHn0.js → ThemedSyntaxHighlighter.inner-rpCN9S6K.js} +1 -1
  248. package/dist/ui/assets/{antd-DT5ackd0.js → antd-BCqimh1J.js} +5 -5
  249. package/dist/ui/assets/{antd-DT5ackd0.js.gz → antd-BCqimh1J.js.gz} +0 -0
  250. package/dist/ui/assets/architecture-U656AL7Q-BxSQIjrE.js +1 -0
  251. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-DwTJGGoj.js → architectureDiagram-VXUJARFQ-pDpGHSqT.js} +1 -1
  252. package/dist/ui/assets/architectureDiagram-VXUJARFQ-pDpGHSqT.js.gz +0 -0
  253. package/dist/ui/assets/{blockDiagram-VD42YOAC-Dh1_TVW2.js → blockDiagram-VD42YOAC-uP8JTJpK.js} +1 -1
  254. package/dist/ui/assets/blockDiagram-VD42YOAC-uP8JTJpK.js.gz +0 -0
  255. package/dist/ui/assets/{c4Diagram-YG6GDRKO-B1e96AcB.js → c4Diagram-YG6GDRKO-qQe72Mm7.js} +1 -1
  256. package/dist/ui/assets/c4Diagram-YG6GDRKO-qQe72Mm7.js.gz +0 -0
  257. package/dist/ui/assets/channel-CoUBs6Zn.js +1 -0
  258. package/dist/ui/assets/{chunk-4BX2VUAB-BODpCjJx.js → chunk-4BX2VUAB-sz-YE8Nt.js} +1 -1
  259. package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js +3 -0
  260. package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js.gz +0 -0
  261. package/dist/ui/assets/chunk-55IACEB6-BS04dgKF.js +1 -0
  262. package/dist/ui/assets/{chunk-ABZYJK2D-DCTXWSzV.js → chunk-ABZYJK2D-t3Gkphds.js} +3 -3
  263. package/dist/ui/assets/chunk-ABZYJK2D-t3Gkphds.js.gz +0 -0
  264. package/dist/ui/assets/{chunk-AGHRB4JF-CbNphBjE.js → chunk-AGHRB4JF-D_QmWxbY.js} +1 -1
  265. package/dist/ui/assets/chunk-AGHRB4JF-D_QmWxbY.js.gz +0 -0
  266. package/dist/ui/assets/{chunk-ATLVNIR6-rWg3qxof.js → chunk-ATLVNIR6-Bmg7-Ufz.js} +1 -1
  267. package/dist/ui/assets/chunk-ATLVNIR6-Bmg7-Ufz.js.gz +0 -0
  268. package/dist/ui/assets/{chunk-B4BG7PRW-CgtLCbpE.js → chunk-B4BG7PRW-dnSEE1u-.js} +1 -1
  269. package/dist/ui/assets/chunk-B4BG7PRW-dnSEE1u-.js.gz +0 -0
  270. package/dist/ui/assets/{chunk-CVBHYZKI-DTL6Zgr0.js → chunk-CVBHYZKI-BStaYnF0.js} +1 -1
  271. package/dist/ui/assets/{chunk-DI55MBZ5-Dwvx2Kva.js → chunk-DI55MBZ5-28dvx6o3.js} +1 -1
  272. package/dist/ui/assets/chunk-DI55MBZ5-28dvx6o3.js.gz +0 -0
  273. package/dist/ui/assets/chunk-EXTU4WIE-X-FURkEh.js +1 -0
  274. package/dist/ui/assets/{chunk-FMBD7UC4-BogA_9CV.js → chunk-FMBD7UC4-C_63gC9S.js} +1 -1
  275. package/dist/ui/assets/{chunk-HN2XXSSU-2blQO3Gb.js → chunk-HN2XXSSU-UFD374KI.js} +1 -1
  276. package/dist/ui/assets/chunk-HN2XXSSU-UFD374KI.js.gz +0 -0
  277. package/dist/ui/assets/{chunk-JA3XYJ7Z-Cr1rmOui.js → chunk-JA3XYJ7Z-B60hLNeR.js} +1 -1
  278. package/dist/ui/assets/chunk-JA3XYJ7Z-B60hLNeR.js.gz +0 -0
  279. package/dist/ui/assets/{chunk-JZLCHNYA-BsgZ79Fa.js → chunk-JZLCHNYA-ButC6pwN.js} +1 -1
  280. package/dist/ui/assets/chunk-JZLCHNYA-ButC6pwN.js.gz +0 -0
  281. package/dist/ui/assets/{chunk-MI3HLSF2-dwYeUy5S.js → chunk-MI3HLSF2-BivYzoSV.js} +1 -1
  282. package/dist/ui/assets/chunk-MI3HLSF2-BivYzoSV.js.gz +0 -0
  283. package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js +2 -0
  284. package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js.gz +0 -0
  285. package/dist/ui/assets/{chunk-QN33PNHL-DxdIDCAa.js → chunk-QN33PNHL-tXtHZpaG.js} +1 -1
  286. package/dist/ui/assets/{chunk-QXUST7PY-BCK2V0i-.js → chunk-QXUST7PY-DATib_Vv.js} +1 -1
  287. package/dist/ui/assets/chunk-QXUST7PY-DATib_Vv.js.gz +0 -0
  288. package/dist/ui/assets/chunk-QZHKN3VN-y6l249e5.js +1 -0
  289. package/dist/ui/assets/{chunk-S3R3BYOJ-GP3zIxrB.js → chunk-S3R3BYOJ-BEtfmflI.js} +1 -1
  290. package/dist/ui/assets/chunk-S3R3BYOJ-BEtfmflI.js.gz +0 -0
  291. package/dist/ui/assets/{chunk-TZMSLE5B-dX5RaM6g.js → chunk-TZMSLE5B-BY1ZtogK.js} +1 -1
  292. package/dist/ui/assets/chunk-TZMSLE5B-BY1ZtogK.js.gz +0 -0
  293. package/dist/ui/assets/classDiagram-2ON5EDUG-BYvq-uPY.js +1 -0
  294. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BYvq-uPY.js +1 -0
  295. package/dist/ui/assets/constants-CYzQKfD1.js +1 -0
  296. package/dist/ui/assets/{cose-bilkent-S5V4N54A-Dx0BJVDl.js → cose-bilkent-S5V4N54A-DPvYrqGG.js} +1 -1
  297. package/dist/ui/assets/cose-bilkent-S5V4N54A-DPvYrqGG.js.gz +0 -0
  298. package/dist/ui/assets/{dagre-6UL2VRFP-DiQSUxqN.js → dagre-6UL2VRFP-D800J6qb.js} +1 -1
  299. package/dist/ui/assets/dagre-6UL2VRFP-D800J6qb.js.gz +0 -0
  300. package/dist/ui/assets/{dagre-Bekd9Vdj.js → dagre-TNc4wezg.js} +1 -1
  301. package/dist/ui/assets/dagre-TNc4wezg.js.gz +0 -0
  302. package/dist/ui/assets/{diagram-PSM6KHXK-DtJnDQjc.js → diagram-PSM6KHXK-CGdP9F-X.js} +1 -1
  303. package/dist/ui/assets/diagram-PSM6KHXK-CGdP9F-X.js.gz +0 -0
  304. package/dist/ui/assets/{diagram-QEK2KX5R-CobkCRdj.js → diagram-QEK2KX5R-BD5lOCe5.js} +1 -1
  305. package/dist/ui/assets/diagram-QEK2KX5R-BD5lOCe5.js.gz +0 -0
  306. package/dist/ui/assets/{diagram-S2PKOQOG-DHEZYivc.js → diagram-S2PKOQOG-cp3l22vN.js} +1 -1
  307. package/dist/ui/assets/diagram-S2PKOQOG-cp3l22vN.js.gz +0 -0
  308. package/dist/ui/assets/editor-Cr0W5BQI.js +39 -0
  309. package/dist/ui/assets/editor-Cr0W5BQI.js.gz +0 -0
  310. package/dist/ui/assets/{emoji-B0hLmSLZ.js → emoji-Bv3m24sO.js} +1 -1
  311. package/dist/ui/assets/emoji-Bv3m24sO.js.gz +0 -0
  312. package/dist/ui/assets/{erDiagram-Q2GNP2WA-BVNeTZPQ.js → erDiagram-Q2GNP2WA-CQSXRgqr.js} +1 -1
  313. package/dist/ui/assets/erDiagram-Q2GNP2WA-CQSXRgqr.js.gz +0 -0
  314. package/dist/ui/assets/{flowDiagram-NV44I4VS-C73VFdyk.js → flowDiagram-NV44I4VS-CKcKpkph.js} +1 -1
  315. package/dist/ui/assets/flowDiagram-NV44I4VS-CKcKpkph.js.gz +0 -0
  316. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-B_RosuD1.js → ganttDiagram-LVOFAZNH-DlAHzXO5.js} +1 -1
  317. package/dist/ui/assets/ganttDiagram-LVOFAZNH-DlAHzXO5.js.gz +0 -0
  318. package/dist/ui/assets/{gitGraph-F6HP7TQM-DMFIqn4h.js → gitGraph-F6HP7TQM-DeuXy4B1.js} +1 -1
  319. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-hxbgwNA1.js → gitGraphDiagram-NY62KEGX-aB-AI4Vq.js} +1 -1
  320. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-aB-AI4Vq.js.gz +0 -0
  321. package/dist/ui/assets/index-B-qHc0o5.js +63 -0
  322. package/dist/ui/assets/index-B-qHc0o5.js.gz +0 -0
  323. package/dist/ui/assets/{info-NVLQJR56-DZ3K-w48.js → info-NVLQJR56-B9PG7xsc.js} +1 -1
  324. package/dist/ui/assets/{infoDiagram-ER5ION4S-CxnBJQu6.js → infoDiagram-ER5ION4S-C5Wpoqim.js} +1 -1
  325. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CHYNj-f8.js → journeyDiagram-XKPGCS4Q-CHLziqfS.js} +1 -1
  326. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHLziqfS.js.gz +0 -0
  327. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-DQPCCsj2.js → kanban-definition-3W4ZIXB7-Dq7GzQE_.js} +1 -1
  328. package/dist/ui/assets/kanban-definition-3W4ZIXB7-Dq7GzQE_.js.gz +0 -0
  329. package/dist/ui/assets/{line-DBRjKmfa.js → line-DHKNg83I.js} +1 -1
  330. package/dist/ui/assets/{linear-DFao5Wyp.js → linear-BvUfn0I8.js} +1 -1
  331. package/dist/ui/assets/linear-BvUfn0I8.js.gz +0 -0
  332. package/dist/ui/assets/{mermaid-parser.core-DYCfacHj.js → mermaid-parser.core-C6d9tKoo.js} +2 -2
  333. package/dist/ui/assets/mermaid-parser.core-C6d9tKoo.js.gz +0 -0
  334. package/dist/ui/assets/{mermaid.core-C6xGFSdE.js → mermaid.core-CxE5KezR.js} +3 -3
  335. package/dist/ui/assets/mermaid.core-CxE5KezR.js.gz +0 -0
  336. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-L3Pw-YM7.js → mindmap-definition-VGOIOE7T-DmPoQ48w.js} +1 -1
  337. package/dist/ui/assets/mindmap-definition-VGOIOE7T-DmPoQ48w.js.gz +0 -0
  338. package/dist/ui/assets/{packet-BFZMPI3H-CpL6iNoa.js → packet-BFZMPI3H-JZEkVZxU.js} +1 -1
  339. package/dist/ui/assets/{particles-CT8hcJOA.js → particles-CxMmUw86.js} +1 -1
  340. package/dist/ui/assets/particles-CxMmUw86.js.gz +0 -0
  341. package/dist/ui/assets/{pie-7BOR55EZ-hTqChbTo.js → pie-7BOR55EZ-_1II5pYQ.js} +1 -1
  342. package/dist/ui/assets/{pieDiagram-ADFJNKIX-Bf4Nou75.js → pieDiagram-ADFJNKIX-DrNkH33i.js} +1 -1
  343. package/dist/ui/assets/pieDiagram-ADFJNKIX-DrNkH33i.js.gz +0 -0
  344. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-DpjUTLB1.js → quadrantDiagram-AYHSOK5B-DOpC-HEF.js} +1 -1
  345. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DOpC-HEF.js.gz +0 -0
  346. package/dist/ui/assets/{radar-NHE76QYJ-myy7OENC.js → radar-NHE76QYJ-DDmqhzEZ.js} +1 -1
  347. package/dist/ui/assets/{reactflow-Cubtnk8i.js → reactflow-D98uPOMq.js} +1 -1
  348. package/dist/ui/assets/reactflow-D98uPOMq.js.gz +0 -0
  349. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-Bfrfh-0-.js → requirementDiagram-UZGBJVZJ-Bzx0iEPP.js} +1 -1
  350. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bzx0iEPP.js.gz +0 -0
  351. package/dist/ui/assets/{sandpack-C58bwfIS.js → sandpack-059Z4UWP.js} +1 -1
  352. package/dist/ui/assets/sandpack-059Z4UWP.js.gz +0 -0
  353. package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js +1 -0
  354. package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js.gz +0 -0
  355. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-ClZAZ6va.js → sankeyDiagram-TZEHDZUN-Do9pvfDv.js} +1 -1
  356. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-Do9pvfDv.js.gz +0 -0
  357. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-CNgly63p.js → sequenceDiagram-WL72ISMW-CN8neUTA.js} +1 -1
  358. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CN8neUTA.js.gz +0 -0
  359. package/dist/ui/assets/{src-DAeyG22O.js → src-DEbsv3pp.js} +2 -2
  360. package/dist/ui/assets/src-DEbsv3pp.js.gz +0 -0
  361. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BrEAoDpE.js → stateDiagram-FKZM4ZOC-BluWJi8n.js} +1 -1
  362. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BluWJi8n.js.gz +0 -0
  363. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-DeyqBMDR.js +1 -0
  364. package/dist/ui/assets/{streamdown-BdAVfkeF.js → streamdown-BT1twtFc.js} +5 -5
  365. package/dist/ui/assets/streamdown-BT1twtFc.js.gz +0 -0
  366. package/dist/ui/assets/{syntax-BOfTnQiy.js → syntax-CBu6nLfm.js} +1 -1
  367. package/dist/ui/assets/syntax-CBu6nLfm.js.gz +0 -0
  368. package/dist/ui/assets/{timeline-definition-IT6M3QCI-CaRH3k4l.js → timeline-definition-IT6M3QCI-WdUNkiRj.js} +1 -1
  369. package/dist/ui/assets/timeline-definition-IT6M3QCI-WdUNkiRj.js.gz +0 -0
  370. package/dist/ui/assets/{treemap-KMMF4GRG-CUaLOV_B.js → treemap-KMMF4GRG-CoriU4Jl.js} +1 -1
  371. package/dist/ui/assets/{useUserLocalStorage-C8sgXgXR.js → useUserLocalStorage-GidNiOPC.js} +1 -1
  372. package/dist/ui/assets/useUserLocalStorage-GidNiOPC.js.gz +0 -0
  373. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-BlhkI9T_.js → xychartDiagram-PRI3JC2R-CgBAKNt2.js} +1 -1
  374. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CgBAKNt2.js.gz +0 -0
  375. package/dist/ui/index.html +9 -8
  376. package/dist/ui/index.html.gz +0 -0
  377. package/package.json +2 -2
  378. package/dist/ui/assets/AgorEmojiPickerInner-DQjr8M3_.js +0 -1
  379. package/dist/ui/assets/App-hJtcOxHv.js +0 -5
  380. package/dist/ui/assets/App-hJtcOxHv.js.gz +0 -0
  381. package/dist/ui/assets/AppNode-BhuMpn8O.js +0 -1
  382. package/dist/ui/assets/AppNode-BhuMpn8O.js.gz +0 -0
  383. package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js.gz +0 -0
  384. package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js +0 -9
  385. package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js.gz +0 -0
  386. package/dist/ui/assets/ArtifactNode-BzQcrwFS.js +0 -9
  387. package/dist/ui/assets/ArtifactNode-BzQcrwFS.js.gz +0 -0
  388. package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js +0 -19
  389. package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js.gz +0 -0
  390. package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js +0 -34
  391. package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js.gz +0 -0
  392. package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js.gz +0 -0
  393. package/dist/ui/assets/ConversationView-9-3ma1u-.js +0 -1
  394. package/dist/ui/assets/ConversationView-9-3ma1u-.js.gz +0 -0
  395. package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js.gz +0 -0
  396. package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js +0 -24
  397. package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js.gz +0 -0
  398. package/dist/ui/assets/MarketingScreenshotPage-CmDPBHOl.js.gz +0 -0
  399. package/dist/ui/assets/MobileApp-BpgSG_gz.js +0 -1
  400. package/dist/ui/assets/MobileApp-BpgSG_gz.js.gz +0 -0
  401. package/dist/ui/assets/SessionCanvas-B6_mtlxK.js +0 -13
  402. package/dist/ui/assets/SessionCanvas-B6_mtlxK.js.gz +0 -0
  403. package/dist/ui/assets/StreamdownDemoPage-okKKR2QH.js.gz +0 -0
  404. package/dist/ui/assets/TerminalModal-D9jMGZXv.js.gz +0 -0
  405. package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js +0 -1
  406. package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js.gz +0 -0
  407. package/dist/ui/assets/architecture-U656AL7Q-DMnxkQRZ.js +0 -1
  408. package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js.gz +0 -0
  409. package/dist/ui/assets/blockDiagram-VD42YOAC-Dh1_TVW2.js.gz +0 -0
  410. package/dist/ui/assets/c4Diagram-YG6GDRKO-B1e96AcB.js.gz +0 -0
  411. package/dist/ui/assets/channel-Jv4dT4S5.js +0 -1
  412. package/dist/ui/assets/chunk-55IACEB6-lJXvUquf.js +0 -1
  413. package/dist/ui/assets/chunk-ABZYJK2D-DCTXWSzV.js.gz +0 -0
  414. package/dist/ui/assets/chunk-AGHRB4JF-CbNphBjE.js.gz +0 -0
  415. package/dist/ui/assets/chunk-ATLVNIR6-rWg3qxof.js.gz +0 -0
  416. package/dist/ui/assets/chunk-B4BG7PRW-CgtLCbpE.js.gz +0 -0
  417. package/dist/ui/assets/chunk-DI55MBZ5-Dwvx2Kva.js.gz +0 -0
  418. package/dist/ui/assets/chunk-EXTU4WIE-DHyaqTsP.js +0 -1
  419. package/dist/ui/assets/chunk-HN2XXSSU-2blQO3Gb.js.gz +0 -0
  420. package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js.gz +0 -0
  421. package/dist/ui/assets/chunk-JZLCHNYA-BsgZ79Fa.js.gz +0 -0
  422. package/dist/ui/assets/chunk-MI3HLSF2-dwYeUy5S.js.gz +0 -0
  423. package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js +0 -2
  424. package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js.gz +0 -0
  425. package/dist/ui/assets/chunk-QXUST7PY-BCK2V0i-.js.gz +0 -0
  426. package/dist/ui/assets/chunk-QZHKN3VN-CALjGrEE.js +0 -1
  427. package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js.gz +0 -0
  428. package/dist/ui/assets/chunk-TZMSLE5B-dX5RaM6g.js.gz +0 -0
  429. package/dist/ui/assets/classDiagram-2ON5EDUG-C3_RVP70.js +0 -1
  430. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-C3_RVP70.js +0 -1
  431. package/dist/ui/assets/constants-GjIDNVyt.js +0 -1
  432. package/dist/ui/assets/cose-bilkent-S5V4N54A-Dx0BJVDl.js.gz +0 -0
  433. package/dist/ui/assets/dagre-6UL2VRFP-DiQSUxqN.js.gz +0 -0
  434. package/dist/ui/assets/dagre-Bekd9Vdj.js.gz +0 -0
  435. package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js.gz +0 -0
  436. package/dist/ui/assets/diagram-QEK2KX5R-CobkCRdj.js.gz +0 -0
  437. package/dist/ui/assets/diagram-S2PKOQOG-DHEZYivc.js.gz +0 -0
  438. package/dist/ui/assets/editor-DQIG-JYZ.js +0 -43
  439. package/dist/ui/assets/editor-DQIG-JYZ.js.gz +0 -0
  440. package/dist/ui/assets/emoji-B0hLmSLZ.js.gz +0 -0
  441. package/dist/ui/assets/erDiagram-Q2GNP2WA-BVNeTZPQ.js.gz +0 -0
  442. package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js.gz +0 -0
  443. package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js.gz +0 -0
  444. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js.gz +0 -0
  445. package/dist/ui/assets/index-DTz1Dif6.js +0 -64
  446. package/dist/ui/assets/index-DTz1Dif6.js.gz +0 -0
  447. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHYNj-f8.js.gz +0 -0
  448. package/dist/ui/assets/kanban-definition-3W4ZIXB7-DQPCCsj2.js.gz +0 -0
  449. package/dist/ui/assets/linear-DFao5Wyp.js.gz +0 -0
  450. package/dist/ui/assets/mermaid-parser.core-DYCfacHj.js.gz +0 -0
  451. package/dist/ui/assets/mermaid.core-C6xGFSdE.js.gz +0 -0
  452. package/dist/ui/assets/mindmap-definition-VGOIOE7T-L3Pw-YM7.js.gz +0 -0
  453. package/dist/ui/assets/particles-CT8hcJOA.js.gz +0 -0
  454. package/dist/ui/assets/pieDiagram-ADFJNKIX-Bf4Nou75.js.gz +0 -0
  455. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DpjUTLB1.js.gz +0 -0
  456. package/dist/ui/assets/reactflow-Cubtnk8i.js.gz +0 -0
  457. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bfrfh-0-.js.gz +0 -0
  458. package/dist/ui/assets/sandpack-C58bwfIS.js.gz +0 -0
  459. package/dist/ui/assets/sandpackDefaults-Bkga8XAE.js +0 -1
  460. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js.gz +0 -0
  461. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CNgly63p.js.gz +0 -0
  462. package/dist/ui/assets/src-DAeyG22O.js.gz +0 -0
  463. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js.gz +0 -0
  464. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BNL52_oN.js +0 -1
  465. package/dist/ui/assets/streamdown-BdAVfkeF.js.gz +0 -0
  466. package/dist/ui/assets/syntax-BOfTnQiy.js.gz +0 -0
  467. package/dist/ui/assets/timeline-definition-IT6M3QCI-CaRH3k4l.js.gz +0 -0
  468. package/dist/ui/assets/useUserLocalStorage-C8sgXgXR.js.gz +0 -0
  469. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BlhkI9T_.js.gz +0 -0
@@ -4302,7 +4302,7 @@ import {
4302
4302
  asc as asc3,
4303
4303
  count,
4304
4304
  desc as desc6,
4305
- eq as eq32,
4305
+ eq as eq33,
4306
4306
  gt,
4307
4307
  gte,
4308
4308
  inArray as inArray11,
@@ -5772,6 +5772,63 @@ var BranchRepository = class {
5772
5772
  }
5773
5773
  return Array.from(userIds);
5774
5774
  }
5775
+ /**
5776
+ * Find non-archived branches whose explicit filesystem access set can change
5777
+ * when membership in the given group changes.
5778
+ *
5779
+ * Keep this inverse lookup in lockstep with findExplicitFsAccessUserIds():
5780
+ * both encode which group grants materialize into branch-folder access.
5781
+ * App-only grants (`fs_access = 'none'`) are intentionally excluded because
5782
+ * membership changes for those grants do not require branch-folder mutation.
5783
+ */
5784
+ async findExplicitFsAccessBranchIdsForGroup(groupId) {
5785
+ const directRows = await select(this.db, { branch_id: branchGroupGrants3.branch_id }).from(branchGroupGrants3).innerJoin(branches3, eq11(branches3.branch_id, branchGroupGrants3.branch_id)).innerJoin(
5786
+ groups3,
5787
+ and11(eq11(groups3.group_id, branchGroupGrants3.group_id), eq11(groups3.archived, false))
5788
+ ).where(
5789
+ and11(
5790
+ eq11(branchGroupGrants3.group_id, groupId),
5791
+ eq11(branches3.archived, false),
5792
+ inArray4(
5793
+ sql9`coalesce(${branchGroupGrants3.fs_access}, 'read')`,
5794
+ FS_ACCESS_BRANCH_PERMISSIONS
5795
+ )
5796
+ )
5797
+ ).all();
5798
+ const boardRows = await select(this.db, { branch_id: branches3.branch_id }).from(boardGroupGrants3).innerJoin(
5799
+ groups3,
5800
+ and11(eq11(groups3.group_id, boardGroupGrants3.group_id), eq11(groups3.archived, false))
5801
+ ).innerJoin(
5802
+ boards3,
5803
+ and11(
5804
+ eq11(boards3.board_id, boardGroupGrants3.board_id),
5805
+ eq11(sql9`coalesce(${jsonExtract(this.db, boards3.data, "access_mode")}, 'shared')`, "shared")
5806
+ )
5807
+ ).innerJoin(
5808
+ branches3,
5809
+ and11(
5810
+ eq11(branches3.board_id, boardGroupGrants3.board_id),
5811
+ eq11(branches3.permission_source, "board"),
5812
+ eq11(branches3.archived, false)
5813
+ )
5814
+ ).where(
5815
+ and11(
5816
+ eq11(boardGroupGrants3.group_id, groupId),
5817
+ inArray4(
5818
+ sql9`coalesce(${boardGroupGrants3.fs_access}, 'read')`,
5819
+ FS_ACCESS_BRANCH_PERMISSIONS
5820
+ )
5821
+ )
5822
+ ).all();
5823
+ const branchIds = /* @__PURE__ */ new Set();
5824
+ for (const row of directRows) {
5825
+ branchIds.add(row.branch_id);
5826
+ }
5827
+ for (const row of boardRows) {
5828
+ branchIds.add(row.branch_id);
5829
+ }
5830
+ return Array.from(branchIds);
5831
+ }
5775
5832
  async findBoardAlignedBranches(boardId) {
5776
5833
  const rows = await select(this.db).from(branches3).where(
5777
5834
  and11(
@@ -6160,11 +6217,48 @@ init_schema();
6160
6217
  // src/db/repositories/mcp-servers.ts
6161
6218
  init_esm_shims();
6162
6219
  init_ids();
6163
- import { and as and16, eq as eq18, like as like10 } from "drizzle-orm";
6220
+ import { and as and17, eq as eq20, like as like10 } from "drizzle-orm";
6164
6221
 
6165
6222
  // src/tools/mcp/auth-secrets.ts
6166
6223
  init_esm_shims();
6167
6224
 
6225
+ // src/mcp/template-resolver.ts
6226
+ init_esm_shims();
6227
+
6228
+ // src/config/env-resolver.ts
6229
+ init_esm_shims();
6230
+ init_database_wrapper();
6231
+ import { eq as eq19 } from "drizzle-orm";
6232
+
6233
+ // src/db/repositories/session-env-selections.ts
6234
+ init_esm_shims();
6235
+ init_database_wrapper();
6236
+ init_schema();
6237
+ import { and as and16, eq as eq18 } from "drizzle-orm";
6238
+
6239
+ // src/config/env-resolver.ts
6240
+ init_schema();
6241
+
6242
+ // src/config/env-blocklist.ts
6243
+ init_esm_shims();
6244
+ var BLOCKED_ENV_PATTERNS = Object.freeze([
6245
+ /^LD_/i,
6246
+ /^DYLD_/i,
6247
+ /^PYTHON(?!_AGOR_)/i
6248
+ ]);
6249
+
6250
+ // src/config/env-vars.ts
6251
+ init_esm_shims();
6252
+ var V05_SCOPES = ["global", "session"];
6253
+ var V05_SCOPE_SET = new Set(V05_SCOPES);
6254
+
6255
+ // src/templates/handlebars-helpers.ts
6256
+ init_esm_shims();
6257
+ import Handlebars from "handlebars";
6258
+
6259
+ // src/mcp/template-patterns.ts
6260
+ init_esm_shims();
6261
+
6168
6262
  // src/tools/mcp/http-headers.ts
6169
6263
  init_esm_shims();
6170
6264
 
@@ -6176,11 +6270,11 @@ init_schema();
6176
6270
  init_esm_shims();
6177
6271
  init_database_wrapper();
6178
6272
  init_schema();
6179
- import { and as and17, eq as eq19, inArray as inArray7 } from "drizzle-orm";
6273
+ import { and as and18, eq as eq21, inArray as inArray7 } from "drizzle-orm";
6180
6274
 
6181
6275
  // src/db/repositories/repos.ts
6182
6276
  init_esm_shims();
6183
- import { eq as eq20, like as like11, sql as sql11 } from "drizzle-orm";
6277
+ import { eq as eq22, like as like11, sql as sql11 } from "drizzle-orm";
6184
6278
 
6185
6279
  // src/config/variant-resolver.ts
6186
6280
  init_esm_shims();
@@ -6341,7 +6435,7 @@ var RepoRepository = class {
6341
6435
  try {
6342
6436
  const insertData = this.repoToInsert(data);
6343
6437
  await insert(this.db, repos3).values(insertData).run();
6344
- const row = await select(this.db).from(repos3).where(eq20(repos3.repo_id, insertData.repo_id)).one();
6438
+ const row = await select(this.db).from(repos3).where(eq22(repos3.repo_id, insertData.repo_id)).one();
6345
6439
  if (!row) {
6346
6440
  throw new RepositoryError("Failed to retrieve created repo");
6347
6441
  }
@@ -6360,7 +6454,7 @@ var RepoRepository = class {
6360
6454
  async findById(id) {
6361
6455
  try {
6362
6456
  const fullId = await this.resolveId(id);
6363
- const row = await select(this.db).from(repos3).where(eq20(repos3.repo_id, fullId)).one();
6457
+ const row = await select(this.db).from(repos3).where(eq22(repos3.repo_id, fullId)).one();
6364
6458
  return row ? this.rowToRepo(row) : null;
6365
6459
  } catch (error) {
6366
6460
  if (error instanceof EntityNotFoundError) return null;
@@ -6376,7 +6470,7 @@ var RepoRepository = class {
6376
6470
  */
6377
6471
  async findBySlug(slug) {
6378
6472
  try {
6379
- const row = await select(this.db).from(repos3).where(eq20(repos3.slug, slug)).one();
6473
+ const row = await select(this.db).from(repos3).where(eq22(repos3.slug, slug)).one();
6380
6474
  return row ? this.rowToRepo(row) : null;
6381
6475
  } catch (error) {
6382
6476
  throw new RepositoryError(
@@ -6444,8 +6538,8 @@ var RepoRepository = class {
6444
6538
  let changed = 0;
6445
6539
  for (const finding of scan.findings) {
6446
6540
  await this.db.transaction(async (tx) => {
6447
- await lockRowForUpdate(txAsDb(tx), this.db, repos3, eq20(repos3.repo_id, finding.repo_id));
6448
- const currentRow = await select(txAsDb(tx)).from(repos3).where(eq20(repos3.repo_id, finding.repo_id)).one();
6541
+ await lockRowForUpdate(txAsDb(tx), this.db, repos3, eq22(repos3.repo_id, finding.repo_id));
6542
+ const currentRow = await select(txAsDb(tx)).from(repos3).where(eq22(repos3.repo_id, finding.repo_id)).one();
6449
6543
  if (!currentRow) return;
6450
6544
  const data = currentRow.data;
6451
6545
  if (typeof data.remote_url !== "string" || !httpUrlHasUserinfo(data.remote_url)) {
@@ -6457,7 +6551,7 @@ var RepoRepository = class {
6457
6551
  ...data,
6458
6552
  remote_url: stripHttpUrlUserinfo(data.remote_url)
6459
6553
  }
6460
- }).where(eq20(repos3.repo_id, finding.repo_id)).run();
6554
+ }).where(eq22(repos3.repo_id, finding.repo_id)).run();
6461
6555
  changed += 1;
6462
6556
  });
6463
6557
  }
@@ -6479,8 +6573,8 @@ var RepoRepository = class {
6479
6573
  try {
6480
6574
  const fullId = await this.resolveId(id);
6481
6575
  return await this.db.transaction(async (tx) => {
6482
- await lockRowForUpdate(txAsDb(tx), this.db, repos3, eq20(repos3.repo_id, fullId));
6483
- const currentRow = await select(txAsDb(tx)).from(repos3).where(eq20(repos3.repo_id, fullId)).one();
6576
+ await lockRowForUpdate(txAsDb(tx), this.db, repos3, eq22(repos3.repo_id, fullId));
6577
+ const currentRow = await select(txAsDb(tx)).from(repos3).where(eq22(repos3.repo_id, fullId)).one();
6484
6578
  if (!currentRow) {
6485
6579
  throw new EntityNotFoundError("Repo", id);
6486
6580
  }
@@ -6494,7 +6588,7 @@ var RepoRepository = class {
6494
6588
  repo_type: insertData.repo_type,
6495
6589
  unix_group: merged.unix_group ?? null,
6496
6590
  data: insertData.data
6497
- }).where(eq20(repos3.repo_id, fullId)).run();
6591
+ }).where(eq22(repos3.repo_id, fullId)).run();
6498
6592
  merged.clone_error = insertData.data.clone_error;
6499
6593
  merged.remote_url = insertData.data.remote_url;
6500
6594
  merged.last_updated = newUpdatedAt.toISOString();
@@ -6528,8 +6622,8 @@ var RepoRepository = class {
6528
6622
  try {
6529
6623
  const fullId = await this.resolveId(id);
6530
6624
  return await this.db.transaction(async (tx) => {
6531
- await lockRowForUpdate(txAsDb(tx), this.db, repos3, eq20(repos3.repo_id, fullId));
6532
- const currentRow = await select(txAsDb(tx)).from(repos3).where(eq20(repos3.repo_id, fullId)).one();
6625
+ await lockRowForUpdate(txAsDb(tx), this.db, repos3, eq22(repos3.repo_id, fullId));
6626
+ const currentRow = await select(txAsDb(tx)).from(repos3).where(eq22(repos3.repo_id, fullId)).one();
6533
6627
  if (!currentRow) {
6534
6628
  throw new EntityNotFoundError("Repo", id);
6535
6629
  }
@@ -6543,7 +6637,7 @@ var RepoRepository = class {
6543
6637
  repo_type: insertData.repo_type,
6544
6638
  unix_group: next.unix_group ?? null,
6545
6639
  data: insertData.data
6546
- }).where(eq20(repos3.repo_id, fullId)).run();
6640
+ }).where(eq22(repos3.repo_id, fullId)).run();
6547
6641
  next.environment = insertData.data.environment;
6548
6642
  next.environment_config = insertData.data.environment_config;
6549
6643
  next.remote_url = insertData.data.remote_url;
@@ -6583,7 +6677,7 @@ var RepoRepository = class {
6583
6677
  async delete(id) {
6584
6678
  try {
6585
6679
  const fullId = await this.resolveId(id);
6586
- const result = await deleteFrom(this.db, repos3).where(eq20(repos3.repo_id, fullId)).run();
6680
+ const result = await deleteFrom(this.db, repos3).where(eq22(repos3.repo_id, fullId)).run();
6587
6681
  if (result.rowsAffected === 0) {
6588
6682
  throw new EntityNotFoundError("Repo", id);
6589
6683
  }
@@ -6630,33 +6724,27 @@ init_esm_shims();
6630
6724
  init_ids();
6631
6725
  init_database_wrapper();
6632
6726
  init_schema();
6633
- import { and as and18, asc as asc2, desc as desc3, eq as eq21, isNull as isNull6, like as like12, lte, or as or7, sql as sql12 } from "drizzle-orm";
6727
+ import { and as and19, asc as asc2, desc as desc3, eq as eq23, isNull as isNull6, like as like12, lte, or as or7, sql as sql12 } from "drizzle-orm";
6634
6728
 
6635
6729
  // src/db/repositories/serialized-sessions.ts
6636
6730
  init_esm_shims();
6637
6731
  init_ids();
6638
6732
  init_database_wrapper();
6639
6733
  init_schema();
6640
- import { and as and19, desc as desc4, eq as eq22, lt } from "drizzle-orm";
6641
-
6642
- // src/db/repositories/session-env-selections.ts
6643
- init_esm_shims();
6644
- init_database_wrapper();
6645
- init_schema();
6646
- import { and as and20, eq as eq23 } from "drizzle-orm";
6734
+ import { and as and20, desc as desc4, eq as eq24, lt } from "drizzle-orm";
6647
6735
 
6648
6736
  // src/db/repositories/session-mcp-servers.ts
6649
6737
  init_esm_shims();
6650
6738
  init_database_wrapper();
6651
6739
  init_schema();
6652
- import { and as and22, eq as eq25 } from "drizzle-orm";
6740
+ import { and as and22, eq as eq26 } from "drizzle-orm";
6653
6741
 
6654
6742
  // src/db/repositories/sessions.ts
6655
6743
  init_esm_shims();
6656
6744
  init_types2();
6657
6745
  init_config_manager();
6658
6746
  init_ids();
6659
- import { and as and21, desc as desc5, eq as eq24, inArray as inArray8, like as like13, or as or8, sql as sql13 } from "drizzle-orm";
6747
+ import { and as and21, desc as desc5, eq as eq25, inArray as inArray8, like as like13, or as or8, sql as sql13 } from "drizzle-orm";
6660
6748
  init_database_wrapper();
6661
6749
  init_schema();
6662
6750
 
@@ -6665,7 +6753,7 @@ init_esm_shims();
6665
6753
  init_ids();
6666
6754
  init_database_wrapper();
6667
6755
  init_schema();
6668
- import { and as and23, eq as eq26, inArray as inArray9, or as or9 } from "drizzle-orm";
6756
+ import { and as and23, eq as eq27, inArray as inArray9, or as or9 } from "drizzle-orm";
6669
6757
 
6670
6758
  // src/db/repositories/tasks.ts
6671
6759
  init_esm_shims();
@@ -6673,7 +6761,7 @@ init_types2();
6673
6761
  init_ids();
6674
6762
  init_database_wrapper();
6675
6763
  init_schema();
6676
- import { and as and24, eq as eq27, inArray as inArray10, like as like14, sql as sql14 } from "drizzle-orm";
6764
+ import { and as and24, eq as eq28, inArray as inArray10, like as like14, sql as sql14 } from "drizzle-orm";
6677
6765
 
6678
6766
  // src/db/repositories/thread-session-map.ts
6679
6767
  init_esm_shims();
@@ -6681,7 +6769,7 @@ init_types2();
6681
6769
  init_ids();
6682
6770
  init_database_wrapper();
6683
6771
  init_schema();
6684
- import { and as and25, eq as eq28, like as like15, lt as lt2 } from "drizzle-orm";
6772
+ import { and as and25, eq as eq29, like as like15, lt as lt2 } from "drizzle-orm";
6685
6773
 
6686
6774
  // src/db/repositories/user-api-keys.ts
6687
6775
  init_esm_shims();
@@ -6691,25 +6779,18 @@ init_schema();
6691
6779
  init_tenant_context();
6692
6780
  import { randomBytes as randomBytes3 } from "crypto";
6693
6781
  import bcrypt2 from "bcryptjs";
6694
- import { and as and26, eq as eq29 } from "drizzle-orm";
6782
+ import { and as and26, eq as eq30 } from "drizzle-orm";
6695
6783
 
6696
6784
  // src/db/repositories/user-mcp-oauth-tokens.ts
6697
6785
  init_esm_shims();
6698
6786
  init_database_wrapper();
6699
6787
  init_schema();
6700
- import { and as and27, eq as eq30, isNull as isNull7 } from "drizzle-orm";
6788
+ import { and as and27, eq as eq31, isNull as isNull7 } from "drizzle-orm";
6701
6789
 
6702
6790
  // src/db/repositories/users.ts
6703
6791
  init_esm_shims();
6704
6792
  init_types2();
6705
- import { eq as eq31, like as like16, sql as sql15 } from "drizzle-orm";
6706
-
6707
- // src/config/env-vars.ts
6708
- init_esm_shims();
6709
- var V05_SCOPES = ["global", "session"];
6710
- var V05_SCOPE_SET = new Set(V05_SCOPES);
6711
-
6712
- // src/db/repositories/users.ts
6793
+ import { eq as eq32, like as like16, sql as sql15 } from "drizzle-orm";
6713
6794
  init_ids();
6714
6795
  init_database_wrapper();
6715
6796
  init_schema();
@@ -7103,23 +7184,9 @@ import fs2 from "fs";
7103
7184
  init_config_manager();
7104
7185
  init_constants();
7105
7186
 
7106
- // src/config/env-blocklist.ts
7107
- init_esm_shims();
7108
- var BLOCKED_ENV_PATTERNS = Object.freeze([
7109
- /^LD_/i,
7110
- /^DYLD_/i,
7111
- /^PYTHON(?!_AGOR_)/i
7112
- ]);
7113
-
7114
7187
  // src/config/env-locking.ts
7115
7188
  init_esm_shims();
7116
7189
 
7117
- // src/config/env-resolver.ts
7118
- init_esm_shims();
7119
- init_database_wrapper();
7120
- import { eq as eq33 } from "drizzle-orm";
7121
- init_schema();
7122
-
7123
7190
  // src/config/env-validation.ts
7124
7191
  init_esm_shims();
7125
7192
  var ENV_VAR_CONSTRAINTS = {
@@ -30,7 +30,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/mcp/index.ts
31
31
  var mcp_exports = {};
32
32
  __export(mcp_exports, {
33
+ TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS: () => TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS,
33
34
  buildMCPTemplateContextFromEnv: () => buildMCPTemplateContextFromEnv,
35
+ containsTemplate: () => containsTemplate,
36
+ isUserEnvPlaceholder: () => isUserEnvPlaceholder,
34
37
  resolveMcpServerEnv: () => resolveMcpServerEnv,
35
38
  resolveMcpServerTemplates: () => resolveMcpServerTemplates,
36
39
  resolveMcpServersTemplates: () => resolveMcpServersTemplates
@@ -3580,6 +3583,15 @@ function renderTemplate(templateString, context, options = {}) {
3580
3583
  }
3581
3584
  }
3582
3585
 
3586
+ // src/mcp/template-patterns.ts
3587
+ function containsTemplate(value) {
3588
+ return value.includes("{{") && value.includes("}}");
3589
+ }
3590
+ var USER_ENV_PLACEHOLDER_RE = /^\{\{\s*user\.env\.[A-Za-z_][A-Za-z0-9_]*\s*\}\}$/;
3591
+ function isUserEnvPlaceholder(value) {
3592
+ return USER_ENV_PLACEHOLDER_RE.test(value.trim());
3593
+ }
3594
+
3583
3595
  // src/mcp/template-resolver.ts
3584
3596
  function buildMCPTemplateContextFromEnv(env) {
3585
3597
  const userEnvKeysStr = env[AGOR_USER_ENV_KEYS_VAR];
@@ -3597,9 +3609,6 @@ function buildMCPTemplateContextFromEnv(env) {
3597
3609
  }
3598
3610
  };
3599
3611
  }
3600
- function containsTemplate(value) {
3601
- return value.includes("{{") && value.includes("}}");
3602
- }
3603
3612
  function resolveStringValue(fieldName, templateValue, context) {
3604
3613
  if (!containsTemplate(templateValue)) {
3605
3614
  return templateValue;
@@ -3632,6 +3641,12 @@ function resolveMcpServerEnv(envTemplate, context) {
3632
3641
  }
3633
3642
  return Object.keys(result).length > 0 ? result : void 0;
3634
3643
  }
3644
+ var TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS = [
3645
+ "token",
3646
+ "api_token",
3647
+ "api_secret",
3648
+ "oauth_client_secret"
3649
+ ];
3635
3650
  function resolveMcpServerTemplates(server, context) {
3636
3651
  const resolved = { ...server };
3637
3652
  const unresolvedFields = [];
@@ -3774,7 +3789,10 @@ function resolveMcpServersTemplates(servers, context) {
3774
3789
  }
3775
3790
  // Annotate the CommonJS export names for ESM import in node:
3776
3791
  0 && (module.exports = {
3792
+ TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS,
3777
3793
  buildMCPTemplateContextFromEnv,
3794
+ containsTemplate,
3795
+ isUserEnvPlaceholder,
3778
3796
  resolveMcpServerEnv,
3779
3797
  resolveMcpServerTemplates,
3780
3798
  resolveMcpServersTemplates
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * MCP (Model Context Protocol) utilities
3
3
  */
4
- export { buildMCPTemplateContextFromEnv, type MCPTemplateContext, type MCPTemplateResolutionResult, resolveMcpServerEnv, resolveMcpServersTemplates, resolveMcpServerTemplates, } from './template-resolver';
4
+ export { buildMCPTemplateContextFromEnv, containsTemplate, isUserEnvPlaceholder, type MCPTemplateContext, type MCPTemplateResolutionResult, resolveMcpServerEnv, resolveMcpServersTemplates, resolveMcpServerTemplates, TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS, } from './template-resolver';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,8BAA8B,EAC9B,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,0CAA0C,GAC3C,MAAM,qBAAqB,CAAC"}
@@ -3568,6 +3568,15 @@ function renderTemplate(templateString, context, options = {}) {
3568
3568
  }
3569
3569
  }
3570
3570
 
3571
+ // src/mcp/template-patterns.ts
3572
+ function containsTemplate(value) {
3573
+ return value.includes("{{") && value.includes("}}");
3574
+ }
3575
+ var USER_ENV_PLACEHOLDER_RE = /^\{\{\s*user\.env\.[A-Za-z_][A-Za-z0-9_]*\s*\}\}$/;
3576
+ function isUserEnvPlaceholder(value) {
3577
+ return USER_ENV_PLACEHOLDER_RE.test(value.trim());
3578
+ }
3579
+
3571
3580
  // src/mcp/template-resolver.ts
3572
3581
  function buildMCPTemplateContextFromEnv(env) {
3573
3582
  const userEnvKeysStr = env[AGOR_USER_ENV_KEYS_VAR];
@@ -3585,9 +3594,6 @@ function buildMCPTemplateContextFromEnv(env) {
3585
3594
  }
3586
3595
  };
3587
3596
  }
3588
- function containsTemplate(value) {
3589
- return value.includes("{{") && value.includes("}}");
3590
- }
3591
3597
  function resolveStringValue(fieldName, templateValue, context) {
3592
3598
  if (!containsTemplate(templateValue)) {
3593
3599
  return templateValue;
@@ -3620,6 +3626,12 @@ function resolveMcpServerEnv(envTemplate, context) {
3620
3626
  }
3621
3627
  return Object.keys(result).length > 0 ? result : void 0;
3622
3628
  }
3629
+ var TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS = [
3630
+ "token",
3631
+ "api_token",
3632
+ "api_secret",
3633
+ "oauth_client_secret"
3634
+ ];
3623
3635
  function resolveMcpServerTemplates(server, context) {
3624
3636
  const resolved = { ...server };
3625
3637
  const unresolvedFields = [];
@@ -3761,7 +3773,10 @@ function resolveMcpServersTemplates(servers, context) {
3761
3773
  return servers.map((server) => resolveMcpServerTemplates(server, context));
3762
3774
  }
3763
3775
  export {
3776
+ TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS,
3764
3777
  buildMCPTemplateContextFromEnv,
3778
+ containsTemplate,
3779
+ isUserEnvPlaceholder,
3765
3780
  resolveMcpServerEnv,
3766
3781
  resolveMcpServerTemplates,
3767
3782
  resolveMcpServersTemplates
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Browser-safe MCP template pattern helpers.
3
+ *
4
+ * Keep this module free of Handlebars, env resolution, and DB imports; UI
5
+ * validation/redaction helpers import it through browser bundles.
6
+ */
7
+ /**
8
+ * Check if a string contains Handlebars template syntax.
9
+ */
10
+ export declare function containsTemplate(value: string): boolean;
11
+ /**
12
+ * Check if a string is a single bare `{{ user.env.NAME }}` placeholder.
13
+ */
14
+ export declare function isUserEnvPlaceholder(value: string): boolean;
15
+ //# sourceMappingURL=template-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-patterns.d.ts","sourceRoot":"","sources":["../../src/mcp/template-patterns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAWD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D"}
@@ -49,6 +49,8 @@
49
49
  * It will automatically filter to only user-defined variables.
50
50
  */
51
51
  import type { MCPServer } from '../types';
52
+ import { containsTemplate, isUserEnvPlaceholder } from './template-patterns';
53
+ export { containsTemplate, isUserEnvPlaceholder };
52
54
  /**
53
55
  * Template context available for MCP configuration resolution.
54
56
  * Intentionally minimal - only user environment variables are exposed.
@@ -119,6 +121,17 @@ export declare function resolveMcpServerEnv(envTemplate: Record<string, string>
119
121
  * @param context - Template context
120
122
  * @returns Resolution result with server, validation status, and any errors
121
123
  */
124
+ /**
125
+ * Auth-secret fields that `resolveMcpServerTemplates` substitutes from the
126
+ * template context. Redaction consults this set to leave `{{ }}` templates in
127
+ * these fields intact so resolution can run.
128
+ *
129
+ * MUST stay in sync with the auth-secret fields `resolveMcpServerTemplates`
130
+ * actually resolves below. Notably `oauth_access_token` / `oauth_refresh_token`
131
+ * are OAuth-flow runtime secrets the resolver never touches, so they are
132
+ * excluded here and always redacted.
133
+ */
134
+ export declare const TEMPLATE_RESOLVABLE_MCP_AUTH_SECRET_FIELDS: readonly ["token", "api_token", "api_secret", "oauth_client_secret"];
122
135
  export declare function resolveMcpServerTemplates(server: MCPServer, context: MCPTemplateContext): MCPTemplateResolutionResult;
123
136
  /**
124
137
  * Resolve templates in multiple MCP server configurations.
@@ -1 +1 @@
1
- {"version":3,"file":"template-resolver.d.ts","sourceRoot":"","sources":["../../src/mcp/template-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,UAAU,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,oFAAoF;IACpF,MAAM,EAAE,SAAS,CAAC;IAClB,wEAAwE;IACxE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAC1D,kBAAkB,CAmBpB;AAiDD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,OAAO,EAAE,kBAAkB,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAepC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,kBAAkB,GAC1B,2BAA2B,CA2K7B;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,EAAE,EACpB,OAAO,EAAE,kBAAkB,GAC1B,2BAA2B,EAAE,CAE/B"}
1
+ {"version":3,"file":"template-resolver.d.ts","sourceRoot":"","sources":["../../src/mcp/template-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,oFAAoF;IACpF,MAAM,EAAE,SAAS,CAAC;IAClB,wEAAwE;IACxE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAC1D,kBAAkB,CAmBpB;AA0CD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,OAAO,EAAE,kBAAkB,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAepC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;;;;;;;;;GASG;AACH,eAAO,MAAM,0CAA0C,sEAK7C,CAAC;AAEX,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,kBAAkB,GAC1B,2BAA2B,CA2K7B;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,EAAE,EACpB,OAAO,EAAE,kBAAkB,GAC1B,2BAA2B,EAAE,CAE/B"}
@@ -52,6 +52,12 @@ module.exports = __toCommonJS(browser_exports);
52
52
 
53
53
  // src/models/claude.ts
54
54
  var AVAILABLE_CLAUDE_MODEL_ALIASES = [
55
+ {
56
+ id: "claude-fable-5",
57
+ displayName: "Claude Fable 5",
58
+ family: "claude-5",
59
+ description: "Frontier model for complex reasoning, creative work, and agentic coding"
60
+ },
55
61
  {
56
62
  id: "claude-opus-4-8",
57
63
  displayName: "Claude Opus 4.8",
@@ -1,5 +1,11 @@
1
1
  // src/models/claude.ts
2
2
  var AVAILABLE_CLAUDE_MODEL_ALIASES = [
3
+ {
4
+ id: "claude-fable-5",
5
+ displayName: "Claude Fable 5",
6
+ family: "claude-5",
7
+ description: "Frontier model for complex reasoning, creative work, and agentic coding"
8
+ },
3
9
  {
4
10
  id: "claude-opus-4-8",
5
11
  displayName: "Claude Opus 4.8",
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/models/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B,EAAE,WAAW,EAsFvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/models/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B,EAAE,WAAW,EA4FvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
@@ -57,6 +57,12 @@ module.exports = __toCommonJS(models_exports);
57
57
 
58
58
  // src/models/claude.ts
59
59
  var AVAILABLE_CLAUDE_MODEL_ALIASES = [
60
+ {
61
+ id: "claude-fable-5",
62
+ displayName: "Claude Fable 5",
63
+ family: "claude-5",
64
+ description: "Frontier model for complex reasoning, creative work, and agentic coding"
65
+ },
60
66
  {
61
67
  id: "claude-opus-4-8",
62
68
  displayName: "Claude Opus 4.8",
@@ -1,5 +1,11 @@
1
1
  // src/models/claude.ts
2
2
  var AVAILABLE_CLAUDE_MODEL_ALIASES = [
3
+ {
4
+ id: "claude-fable-5",
5
+ displayName: "Claude Fable 5",
6
+ family: "claude-5",
7
+ description: "Frontier model for complex reasoning, creative work, and agentic coding"
8
+ },
3
9
  {
4
10
  id: "claude-opus-4-8",
5
11
  displayName: "Claude Opus 4.8",