@rudderhq/server 0.5.2-canary.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
  2. package/dist/bootstrap/register-api-routes.js +15 -0
  3. package/dist/bootstrap/register-api-routes.js.map +1 -1
  4. package/dist/bootstrap/types.d.ts +11 -0
  5. package/dist/bootstrap/types.d.ts.map +1 -1
  6. package/dist/bundled-plugins/plugin-linear/dist/worker.js +741 -7
  7. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +3 -3
  8. package/dist/config.d.ts +2 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +3 -0
  11. package/dist/config.js.map +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +28 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/local-runtime.d.ts +7 -0
  16. package/dist/local-runtime.d.ts.map +1 -1
  17. package/dist/local-runtime.js +15 -1
  18. package/dist/local-runtime.js.map +1 -1
  19. package/dist/middleware/auth.js +2 -2
  20. package/dist/middleware/auth.js.map +1 -1
  21. package/dist/middleware/error-handler.d.ts.map +1 -1
  22. package/dist/middleware/error-handler.js +3 -2
  23. package/dist/middleware/error-handler.js.map +1 -1
  24. package/dist/middleware/logger.d.ts +4 -0
  25. package/dist/middleware/logger.d.ts.map +1 -1
  26. package/dist/middleware/logger.js +82 -7
  27. package/dist/middleware/logger.js.map +1 -1
  28. package/dist/middleware/logger.test.js +94 -1
  29. package/dist/middleware/logger.test.js.map +1 -1
  30. package/dist/routes/chats.annotation-routes.d.ts +47 -0
  31. package/dist/routes/chats.annotation-routes.d.ts.map +1 -0
  32. package/dist/routes/chats.annotation-routes.js +164 -0
  33. package/dist/routes/chats.annotation-routes.js.map +1 -0
  34. package/dist/routes/chats.d.ts.map +1 -1
  35. package/dist/routes/chats.js +467 -165
  36. package/dist/routes/chats.js.map +1 -1
  37. package/dist/routes/chats.stream-routes.d.ts +1 -10
  38. package/dist/routes/chats.stream-routes.d.ts.map +1 -1
  39. package/dist/routes/chats.stream-routes.js +168 -110
  40. package/dist/routes/chats.stream-routes.js.map +1 -1
  41. package/dist/routes/chats.stream-support.d.ts +79 -0
  42. package/dist/routes/chats.stream-support.d.ts.map +1 -0
  43. package/dist/routes/chats.stream-support.js +121 -0
  44. package/dist/routes/chats.stream-support.js.map +1 -0
  45. package/dist/routes/issues.comments-attachments.d.ts.map +1 -1
  46. package/dist/routes/issues.comments-attachments.js +16 -2
  47. package/dist/routes/issues.comments-attachments.js.map +1 -1
  48. package/dist/routes/issues.d.ts.map +1 -1
  49. package/dist/routes/issues.js +21 -4
  50. package/dist/routes/issues.js.map +1 -1
  51. package/dist/routes/issues.mutations.d.ts.map +1 -1
  52. package/dist/routes/issues.mutations.js +20 -33
  53. package/dist/routes/issues.mutations.js.map +1 -1
  54. package/dist/routes/managed-mcp-agent-bindings.d.ts +15 -0
  55. package/dist/routes/managed-mcp-agent-bindings.d.ts.map +1 -0
  56. package/dist/routes/managed-mcp-agent-bindings.js +66 -0
  57. package/dist/routes/managed-mcp-agent-bindings.js.map +1 -0
  58. package/dist/routes/managed-mcp-connections.d.ts +8 -0
  59. package/dist/routes/managed-mcp-connections.d.ts.map +1 -0
  60. package/dist/routes/managed-mcp-connections.js +189 -0
  61. package/dist/routes/managed-mcp-connections.js.map +1 -0
  62. package/dist/routes/managed-mcp-runtime.d.ts +5 -0
  63. package/dist/routes/managed-mcp-runtime.d.ts.map +1 -0
  64. package/dist/routes/managed-mcp-runtime.js +148 -0
  65. package/dist/routes/managed-mcp-runtime.js.map +1 -0
  66. package/dist/routes/messenger.d.ts.map +1 -1
  67. package/dist/routes/messenger.js +1 -1
  68. package/dist/routes/messenger.js.map +1 -1
  69. package/dist/services/access.d.ts.map +1 -1
  70. package/dist/services/access.js +91 -12
  71. package/dist/services/access.js.map +1 -1
  72. package/dist/services/agent-run-context.d.ts +1 -0
  73. package/dist/services/agent-run-context.d.ts.map +1 -1
  74. package/dist/services/agent-run-context.js +5 -1
  75. package/dist/services/agent-run-context.js.map +1 -1
  76. package/dist/services/board-auth.d.ts +2 -2
  77. package/dist/services/chat-annotation-copy-lineage.d.ts +32 -0
  78. package/dist/services/chat-annotation-copy-lineage.d.ts.map +1 -0
  79. package/dist/services/chat-annotation-copy-lineage.js +110 -0
  80. package/dist/services/chat-annotation-copy-lineage.js.map +1 -0
  81. package/dist/services/chat-assistant.annotations.d.ts +16 -0
  82. package/dist/services/chat-assistant.annotations.d.ts.map +1 -0
  83. package/dist/services/chat-assistant.annotations.js +108 -0
  84. package/dist/services/chat-assistant.annotations.js.map +1 -0
  85. package/dist/services/chat-assistant.annotations.test.d.ts +2 -0
  86. package/dist/services/chat-assistant.annotations.test.d.ts.map +1 -0
  87. package/dist/services/chat-assistant.annotations.test.js +257 -0
  88. package/dist/services/chat-assistant.annotations.test.js.map +1 -0
  89. package/dist/services/chat-assistant.d.ts.map +1 -1
  90. package/dist/services/chat-assistant.helpers.d.ts +2 -3
  91. package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
  92. package/dist/services/chat-assistant.helpers.js +37 -53
  93. package/dist/services/chat-assistant.helpers.js.map +1 -1
  94. package/dist/services/chat-assistant.js +61 -5
  95. package/dist/services/chat-assistant.js.map +1 -1
  96. package/dist/services/chat-generation-protocol.d.ts +8 -15
  97. package/dist/services/chat-generation-protocol.d.ts.map +1 -1
  98. package/dist/services/chat-generation-protocol.js +19 -59
  99. package/dist/services/chat-generation-protocol.js.map +1 -1
  100. package/dist/services/chat-generation-protocol.test.js +168 -6
  101. package/dist/services/chat-generation-protocol.test.js.map +1 -1
  102. package/dist/services/chat-generation-provenance.d.ts +14 -0
  103. package/dist/services/chat-generation-provenance.d.ts.map +1 -0
  104. package/dist/services/chat-generation-provenance.js +71 -0
  105. package/dist/services/chat-generation-provenance.js.map +1 -0
  106. package/dist/services/chat-inline-annotation-rendering.d.ts +2 -0
  107. package/dist/services/chat-inline-annotation-rendering.d.ts.map +1 -0
  108. package/dist/services/chat-inline-annotation-rendering.js +265 -0
  109. package/dist/services/chat-inline-annotation-rendering.js.map +1 -0
  110. package/dist/services/chat-inline-annotation-resolved-labels.d.ts +11 -0
  111. package/dist/services/chat-inline-annotation-resolved-labels.d.ts.map +1 -0
  112. package/dist/services/chat-inline-annotation-resolved-labels.js +490 -0
  113. package/dist/services/chat-inline-annotation-resolved-labels.js.map +1 -0
  114. package/dist/services/chat-inline-annotation-validation.d.ts +15 -0
  115. package/dist/services/chat-inline-annotation-validation.d.ts.map +1 -0
  116. package/dist/services/chat-inline-annotation-validation.js +430 -0
  117. package/dist/services/chat-inline-annotation-validation.js.map +1 -0
  118. package/dist/services/chat-inline-annotations.d.ts +18 -0
  119. package/dist/services/chat-inline-annotations.d.ts.map +1 -0
  120. package/dist/services/chat-inline-annotations.js +52 -0
  121. package/dist/services/chat-inline-annotations.js.map +1 -0
  122. package/dist/services/chat-inline-annotations.test.d.ts +2 -0
  123. package/dist/services/chat-inline-annotations.test.d.ts.map +1 -0
  124. package/dist/services/chat-inline-annotations.test.js +1306 -0
  125. package/dist/services/chat-inline-annotations.test.js.map +1 -0
  126. package/dist/services/chat-queued-message-materialization.d.ts +126 -0
  127. package/dist/services/chat-queued-message-materialization.d.ts.map +1 -0
  128. package/dist/services/chat-queued-message-materialization.js +327 -0
  129. package/dist/services/chat-queued-message-materialization.js.map +1 -0
  130. package/dist/services/chat-steer-messages.d.ts +3 -3
  131. package/dist/services/chat-steer-messages.d.ts.map +1 -1
  132. package/dist/services/chat-steer-messages.js +50 -80
  133. package/dist/services/chat-steer-messages.js.map +1 -1
  134. package/dist/services/chat-work-manifest.d.ts.map +1 -1
  135. package/dist/services/chat-work-manifest.js +5 -1
  136. package/dist/services/chat-work-manifest.js.map +1 -1
  137. package/dist/services/chats.annotation-persistence.d.ts +20 -0
  138. package/dist/services/chats.annotation-persistence.d.ts.map +1 -0
  139. package/dist/services/chats.annotation-persistence.js +206 -0
  140. package/dist/services/chats.annotation-persistence.js.map +1 -0
  141. package/dist/services/chats.d.ts +129 -96
  142. package/dist/services/chats.d.ts.map +1 -1
  143. package/dist/services/chats.helpers.d.ts +2 -2
  144. package/dist/services/chats.inline-visual-persistence.d.ts +3 -3
  145. package/dist/services/chats.inline-visual-persistence.d.ts.map +1 -1
  146. package/dist/services/chats.inline-visual-persistence.js +114 -54
  147. package/dist/services/chats.inline-visual-persistence.js.map +1 -1
  148. package/dist/services/chats.js +743 -252
  149. package/dist/services/chats.js.map +1 -1
  150. package/dist/services/finance.d.ts +1 -1
  151. package/dist/services/index.d.ts +8 -0
  152. package/dist/services/index.d.ts.map +1 -1
  153. package/dist/services/index.js +8 -0
  154. package/dist/services/index.js.map +1 -1
  155. package/dist/services/integrations/agent-integrations.d.ts +2 -2
  156. package/dist/services/integrations/custom-integrations.d.ts +3 -1
  157. package/dist/services/integrations/custom-integrations.d.ts.map +1 -1
  158. package/dist/services/integrations/custom-integrations.js +13 -2
  159. package/dist/services/integrations/custom-integrations.js.map +1 -1
  160. package/dist/services/issues.comments-attachments.d.ts +7 -1
  161. package/dist/services/issues.comments-attachments.d.ts.map +1 -1
  162. package/dist/services/issues.comments-attachments.js +13 -1
  163. package/dist/services/issues.comments-attachments.js.map +1 -1
  164. package/dist/services/issues.d.ts +6 -0
  165. package/dist/services/issues.d.ts.map +1 -1
  166. package/dist/services/issues.js +22 -3
  167. package/dist/services/issues.js.map +1 -1
  168. package/dist/services/knowledge-portability/organization-portability.core.d.ts +4 -1
  169. package/dist/services/knowledge-portability/organization-portability.core.d.ts.map +1 -1
  170. package/dist/services/knowledge-portability/organization-portability.core.js +17 -3
  171. package/dist/services/knowledge-portability/organization-portability.core.js.map +1 -1
  172. package/dist/services/knowledge-portability/organization-portability.export.d.ts.map +1 -1
  173. package/dist/services/knowledge-portability/organization-portability.export.js +2 -2
  174. package/dist/services/knowledge-portability/organization-portability.export.js.map +1 -1
  175. package/dist/services/knowledge-portability/organization-portability.import.d.ts.map +1 -1
  176. package/dist/services/knowledge-portability/organization-portability.import.js +13 -3
  177. package/dist/services/knowledge-portability/organization-portability.import.js.map +1 -1
  178. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts +3 -0
  179. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts.map +1 -1
  180. package/dist/services/knowledge-portability/organization-skills.catalog.js +54 -23
  181. package/dist/services/knowledge-portability/organization-skills.catalog.js.map +1 -1
  182. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
  183. package/dist/services/knowledge-portability/organization-skills.js +627 -124
  184. package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
  185. package/dist/services/knowledge-portability/organization-skills.sources.d.ts +1 -0
  186. package/dist/services/knowledge-portability/organization-skills.sources.d.ts.map +1 -1
  187. package/dist/services/knowledge-portability/organization-skills.sources.js +53 -10
  188. package/dist/services/knowledge-portability/organization-skills.sources.js.map +1 -1
  189. package/dist/services/mcp/authorizer-lock.d.ts +9 -0
  190. package/dist/services/mcp/authorizer-lock.d.ts.map +1 -0
  191. package/dist/services/mcp/authorizer-lock.js +15 -0
  192. package/dist/services/mcp/authorizer-lock.js.map +1 -0
  193. package/dist/services/mcp/managed-bindings.d.ts +17 -0
  194. package/dist/services/mcp/managed-bindings.d.ts.map +1 -0
  195. package/dist/services/mcp/managed-bindings.js +332 -0
  196. package/dist/services/mcp/managed-bindings.js.map +1 -0
  197. package/dist/services/mcp/managed-client.d.ts +64 -0
  198. package/dist/services/mcp/managed-client.d.ts.map +1 -0
  199. package/dist/services/mcp/managed-client.js +238 -0
  200. package/dist/services/mcp/managed-client.js.map +1 -0
  201. package/dist/services/mcp/managed-client.test.d.ts +2 -0
  202. package/dist/services/mcp/managed-client.test.d.ts.map +1 -0
  203. package/dist/services/mcp/managed-client.test.js +398 -0
  204. package/dist/services/mcp/managed-client.test.js.map +1 -0
  205. package/dist/services/mcp/managed-connections.d.ts +81 -0
  206. package/dist/services/mcp/managed-connections.d.ts.map +1 -0
  207. package/dist/services/mcp/managed-connections.js +920 -0
  208. package/dist/services/mcp/managed-connections.js.map +1 -0
  209. package/dist/services/mcp/managed-runtime.d.ts +134 -0
  210. package/dist/services/mcp/managed-runtime.d.ts.map +1 -0
  211. package/dist/services/mcp/managed-runtime.js +282 -0
  212. package/dist/services/mcp/managed-runtime.js.map +1 -0
  213. package/dist/services/mcp/oauth-provider.d.ts +48 -0
  214. package/dist/services/mcp/oauth-provider.d.ts.map +1 -0
  215. package/dist/services/mcp/oauth-provider.js +120 -0
  216. package/dist/services/mcp/oauth-provider.js.map +1 -0
  217. package/dist/services/mcp/oauth-scope.test.d.ts +2 -0
  218. package/dist/services/mcp/oauth-scope.test.d.ts.map +1 -0
  219. package/dist/services/mcp/oauth-scope.test.js +69 -0
  220. package/dist/services/mcp/oauth-scope.test.js.map +1 -0
  221. package/dist/services/mcp/oauth-session-gc.d.ts +14 -0
  222. package/dist/services/mcp/oauth-session-gc.d.ts.map +1 -0
  223. package/dist/services/mcp/oauth-session-gc.js +34 -0
  224. package/dist/services/mcp/oauth-session-gc.js.map +1 -0
  225. package/dist/services/mcp/oauth-session-gc.test.d.ts +2 -0
  226. package/dist/services/mcp/oauth-session-gc.test.d.ts.map +1 -0
  227. package/dist/services/mcp/oauth-session-gc.test.js +66 -0
  228. package/dist/services/mcp/oauth-session-gc.test.js.map +1 -0
  229. package/dist/services/mcp/oauth.d.ts +61 -0
  230. package/dist/services/mcp/oauth.d.ts.map +1 -0
  231. package/dist/services/mcp/oauth.js +1690 -0
  232. package/dist/services/mcp/oauth.js.map +1 -0
  233. package/dist/services/mcp/pinned-fetch.d.ts +15 -0
  234. package/dist/services/mcp/pinned-fetch.d.ts.map +1 -0
  235. package/dist/services/mcp/pinned-fetch.js +400 -0
  236. package/dist/services/mcp/pinned-fetch.js.map +1 -0
  237. package/dist/services/mcp/pinned-fetch.test.d.ts +2 -0
  238. package/dist/services/mcp/pinned-fetch.test.d.ts.map +1 -0
  239. package/dist/services/mcp/pinned-fetch.test.js +190 -0
  240. package/dist/services/mcp/pinned-fetch.test.js.map +1 -0
  241. package/dist/services/mcp/provider-registry.d.ts +77 -0
  242. package/dist/services/mcp/provider-registry.d.ts.map +1 -0
  243. package/dist/services/mcp/provider-registry.js +80 -0
  244. package/dist/services/mcp/provider-registry.js.map +1 -0
  245. package/dist/services/mcp/provider-registry.test.d.ts +2 -0
  246. package/dist/services/mcp/provider-registry.test.d.ts.map +1 -0
  247. package/dist/services/mcp/provider-registry.test.js +80 -0
  248. package/dist/services/mcp/provider-registry.test.js.map +1 -0
  249. package/dist/services/mcp/security-policy.d.ts +48 -0
  250. package/dist/services/mcp/security-policy.d.ts.map +1 -0
  251. package/dist/services/mcp/security-policy.js +344 -0
  252. package/dist/services/mcp/security-policy.js.map +1 -0
  253. package/dist/services/mcp/security-policy.test.d.ts +2 -0
  254. package/dist/services/mcp/security-policy.test.d.ts.map +1 -0
  255. package/dist/services/mcp/security-policy.test.js +226 -0
  256. package/dist/services/mcp/security-policy.test.js.map +1 -0
  257. package/dist/services/mcp/tool-discovery.d.ts +49 -0
  258. package/dist/services/mcp/tool-discovery.d.ts.map +1 -0
  259. package/dist/services/mcp/tool-discovery.js +198 -0
  260. package/dist/services/mcp/tool-discovery.js.map +1 -0
  261. package/dist/services/mcp/tool-discovery.test.d.ts +2 -0
  262. package/dist/services/mcp/tool-discovery.test.d.ts.map +1 -0
  263. package/dist/services/mcp/tool-discovery.test.js +168 -0
  264. package/dist/services/mcp/tool-discovery.test.js.map +1 -0
  265. package/dist/services/messenger.d.ts +1 -1
  266. package/dist/services/messenger.d.ts.map +1 -1
  267. package/dist/services/messenger.js +21 -3
  268. package/dist/services/messenger.js.map +1 -1
  269. package/dist/services/plugin-registry.d.ts +3 -3
  270. package/dist/services/runtime-kernel/heartbeat.core.d.ts +1 -1
  271. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  272. package/dist/services/runtime-kernel/heartbeat.core.js +30 -4
  273. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  274. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -1
  275. package/dist/services/runtime-kernel/heartbeat.wakeup.js +38 -23
  276. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
  277. package/dist/services/secrets.d.ts +64 -6
  278. package/dist/services/secrets.d.ts.map +1 -1
  279. package/dist/services/secrets.js +38 -15
  280. package/dist/services/secrets.js.map +1 -1
  281. package/dist/services/side-chats.d.ts +1 -1
  282. package/dist/services/side-chats.d.ts.map +1 -1
  283. package/dist/services/side-chats.js +56 -14
  284. package/dist/services/side-chats.js.map +1 -1
  285. package/dist/services/workspace-runtime.services.d.ts +2 -2
  286. package/dist/services/workspace-web-preview.js +1 -1
  287. package/package.json +16 -13
  288. package/resources/bundled-skills/rudder-docs/references/operating-practices.md +12 -5
  289. package/skills/rudder-docs/references/operating-practices.md +12 -5
  290. package/ui-dist/assets/LibraryLiveSurface-CKOthw54.js +1 -0
  291. package/ui-dist/assets/{abnfDiagram-VRR7QNED-KGtP7zoC.js → abnfDiagram-VRR7QNED-C6a_wMho.js} +1 -1
  292. package/ui-dist/assets/{arc-JjnKyiOb.js → arc-CP0En6KA.js} +1 -1
  293. package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-AHfOdcaZ.js +36 -0
  294. package/ui-dist/assets/{blockDiagram-677ZJIJ3-D7YzMYrz.js → blockDiagram-677ZJIJ3-Bkl9lp63.js} +1 -1
  295. package/ui-dist/assets/{c4Diagram-LMCZKHZV-Dpf7UQxl.js → c4Diagram-LMCZKHZV-BpZareVt.js} +1 -1
  296. package/ui-dist/assets/channel-DqxL_Zcy.js +1 -0
  297. package/ui-dist/assets/{chunk-2Q5K7J3B-UJ3gsGlQ.js → chunk-2Q5K7J3B-BQAwVuXc.js} +1 -1
  298. package/ui-dist/assets/{chunk-32BRIVSS-BeHl2j2l.js → chunk-32BRIVSS-YkmfA08F.js} +1 -1
  299. package/ui-dist/assets/{chunk-5VM5RSS4-STE9fJd0.js → chunk-5VM5RSS4-DvvjwTnG.js} +1 -1
  300. package/ui-dist/assets/{chunk-EX3LRPZG-Bj8g8j4B.js → chunk-EX3LRPZG-TXD_Yhg5.js} +1 -1
  301. package/ui-dist/assets/{chunk-JWPE2WC7-0V4Pwta-.js → chunk-JWPE2WC7-CgMlj6XI.js} +1 -1
  302. package/ui-dist/assets/{chunk-MOJQB5TN-DNPn50gm.js → chunk-MOJQB5TN-BnJjU8Rc.js} +1 -1
  303. package/ui-dist/assets/{chunk-RYQCIY6F-Befmnv8r.js → chunk-RYQCIY6F-D9B64JKM.js} +1 -1
  304. package/ui-dist/assets/{chunk-V7JOEXUC-Boh8TjHj.js → chunk-V7JOEXUC-PS09QVpl.js} +1 -1
  305. package/ui-dist/assets/{chunk-VR4S4FIN-B_yEQSo3.js → chunk-VR4S4FIN-DQXb7pRS.js} +1 -1
  306. package/ui-dist/assets/{chunk-XXDRQBXY-Cf1GnUFx.js → chunk-XXDRQBXY-B1UdLiF2.js} +1 -1
  307. package/ui-dist/assets/classDiagram-OUVF2IWQ-DMwjzuJE.js +1 -0
  308. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-DMwjzuJE.js +1 -0
  309. package/ui-dist/assets/cose-bilkent-JH36ORCC-lqqmMB3m.js +1 -0
  310. package/ui-dist/assets/{cynefin-VYW2F7L2-Dv1yELYC.js → cynefin-VYW2F7L2-C9hu0XqZ.js} +1 -1
  311. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-CeFwjFoZ.js → cynefinDiagram-TSTJHNR4-Uuhz4c-1.js} +1 -1
  312. package/ui-dist/assets/{dagre-VKFMJZFB-8idd_4sX.js → dagre-VKFMJZFB-ChDrQYse.js} +1 -1
  313. package/ui-dist/assets/{diagram-FQU43EPY-BBVua6hM.js → diagram-FQU43EPY-DLtjkVSN.js} +1 -1
  314. package/ui-dist/assets/{diagram-G47NLZAW-D1zLQZlp.js → diagram-G47NLZAW-DCvEm4D0.js} +1 -1
  315. package/ui-dist/assets/{diagram-NH7WQ7WH-DE_FTSNv.js → diagram-NH7WQ7WH-Dz5jlsPG.js} +1 -1
  316. package/ui-dist/assets/{diagram-OA4YK3LP-61VSKBEn.js → diagram-OA4YK3LP-BXmQLO-Q.js} +1 -1
  317. package/ui-dist/assets/{diagram-WEI45ONY-C-tED6BJ.js → diagram-WEI45ONY-JnMU3xrx.js} +1 -1
  318. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-BEB8WGt0.js → ebnfDiagram-CCIWWBDH-Kryuqj4r.js} +1 -1
  319. package/ui-dist/assets/{erDiagram-Q63AITRT-AN_jm1TZ.js → erDiagram-Q63AITRT-Bn7g2mSW.js} +1 -1
  320. package/ui-dist/assets/{flowDiagram-23GEKE2U-BwLC6tI7.js → flowDiagram-23GEKE2U-DcjqTK91.js} +4 -4
  321. package/ui-dist/assets/ganttDiagram-NO4QXBWP-BRkw9-GE.js +292 -0
  322. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-D9HCL9rY.js → gitGraphDiagram-IHSO6WYX-Cexcp6kR.js} +1 -1
  323. package/ui-dist/assets/graph-Cu7OV4Oi.js +1 -0
  324. package/ui-dist/assets/{index-BQXnpwke.js → index-ASZMPBYm.js} +5 -5
  325. package/ui-dist/assets/{index-5OM32_rf.js → index-B17BqCTj.js} +1 -1
  326. package/ui-dist/assets/{index-Cf0gLy6a.js → index-B9MccU1g.js} +1 -1
  327. package/ui-dist/assets/{index-BoSJ4Rx1.js → index-BPqbtW_X.js} +1 -1
  328. package/ui-dist/assets/{index-CpIdZ4-7.js → index-C2HjDa98.js} +1 -1
  329. package/ui-dist/assets/index-CMPtpj0A.js +1 -0
  330. package/ui-dist/assets/{index-p0ZGU1_7.js → index-CZXgOYtk.js} +1 -1
  331. package/ui-dist/assets/{index-74cx3ESJ.js → index-CknAauOP.js} +1 -1
  332. package/ui-dist/assets/index-Cu1GuH0a.js +1 -0
  333. package/ui-dist/assets/index-D8PdEImm.css +1 -0
  334. package/ui-dist/assets/{index-DrVDiJhe.js → index-DB1YX9-p.js} +1 -1
  335. package/ui-dist/assets/{index-vHMnAQSb.js → index-DBxLZXK7.js} +624 -610
  336. package/ui-dist/assets/{index-CpEfk5zb.js → index-DOCVOD97.js} +1 -1
  337. package/ui-dist/assets/{index-DMuWG0YN.js → index-DUbakRAC.js} +1 -1
  338. package/ui-dist/assets/{index-AT8juaIi.js → index-Dbg1ZwO2.js} +1 -1
  339. package/ui-dist/assets/index-DwbLsoLt.js +1 -0
  340. package/ui-dist/assets/index-hCLSotmS.js +1 -0
  341. package/ui-dist/assets/index-jrhEFc-j.js +1 -0
  342. package/ui-dist/assets/index-kz8ueXgo.js +1 -0
  343. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-CyO3CAA1.js → infoDiagram-FWYZ7A6U-DugVGI3K.js} +1 -1
  344. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-BLLZuF1_.js → ishikawaDiagram-FXEZZL3T-CHy06Oev.js} +1 -1
  345. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-CWzQocvE.js → journeyDiagram-5HDEW3XC-BI0w53rb.js} +1 -1
  346. package/ui-dist/assets/{kanban-definition-HUTT4EX6-Dz4SFU-I.js → kanban-definition-HUTT4EX6-v_bLwx7B.js} +1 -1
  347. package/ui-dist/assets/layout-Dwp1s_bo.js +1 -0
  348. package/ui-dist/assets/{linear-BlzDlAaL.js → linear-DAV4STLZ.js} +1 -1
  349. package/ui-dist/assets/map-Bs6QpaaQ.js +1 -0
  350. package/ui-dist/assets/{mermaid.core-BtCydd-w.js → mermaid.core-fVmaL47V.js} +4 -4
  351. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-BeIkKRBx.js → mindmap-definition-LN4V7U3C-5dWD4dxm.js} +1 -1
  352. package/ui-dist/assets/{pegDiagram-2B236MQR-BZgpT4TN.js → pegDiagram-2B236MQR-DB2XsDPN.js} +1 -1
  353. package/ui-dist/assets/{pieDiagram-ENE6RG2P-BRFggcg2.js → pieDiagram-ENE6RG2P-Bc5teLCS.js} +1 -1
  354. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-CibUo3gT.js → quadrantDiagram-ABIIQ3AL-BlfNdETt.js} +1 -1
  355. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-DINJqhgn.js → railroadDiagram-RFXS5EU6-BbXywkq3.js} +1 -1
  356. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-NegluQIe.js → requirementDiagram-TGXJPOKE-DU-CapdF.js} +1 -1
  357. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-Kq41yHAd.js → sankeyDiagram-HTMAVEWB-Ftvh3MqA.js} +1 -1
  358. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-CngfEI4f.js → sequenceDiagram-DBY2YBRQ-CCtHt9V4.js} +1 -1
  359. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-DUWRNlme.js → sizeCapture-X5ZJPWSS-x0jnIKHx.js} +1 -1
  360. package/ui-dist/assets/{stateDiagram-2N3HPSRC-BwHC_Fz4.js → stateDiagram-2N3HPSRC-2qCrydE7.js} +1 -1
  361. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-CvGRUgRf.js +1 -0
  362. package/ui-dist/assets/{swimlanes-5IMT3BWC-Cqp2rT1K.js → swimlanes-5IMT3BWC-6kqJq5Xf.js} +2 -2
  363. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-EBa7-qSc.js +8 -0
  364. package/ui-dist/assets/{timeline-definition-FHXFAJF6-BG3GYPCu.js → timeline-definition-FHXFAJF6-BuRz8KHZ.js} +1 -1
  365. package/ui-dist/assets/{vennDiagram-L72KCM5P-D1IFU27N.js → vennDiagram-L72KCM5P-BKzMZ_Rv.js} +1 -1
  366. package/ui-dist/assets/{wardleyDiagram-EHGQE667-DboO2kYu.js → wardleyDiagram-EHGQE667-8uXlFtBV.js} +1 -1
  367. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-vI2BGrXP.js → xychartDiagram-FW5EYKEG-CWKGlpF9.js} +1 -1
  368. package/ui-dist/index.html +2 -2
  369. package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-DHyfFgK0.js +0 -36
  370. package/ui-dist/assets/channel-TMGI9Qt9.js +0 -1
  371. package/ui-dist/assets/classDiagram-OUVF2IWQ-r5zIpY6G.js +0 -1
  372. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-r5zIpY6G.js +0 -1
  373. package/ui-dist/assets/cose-bilkent-JH36ORCC-fSNs9447.js +0 -1
  374. package/ui-dist/assets/ganttDiagram-NO4QXBWP-CJYhBF1C.js +0 -292
  375. package/ui-dist/assets/graph-DdBT9W3J.js +0 -1
  376. package/ui-dist/assets/index-6UIO-gg7.js +0 -1
  377. package/ui-dist/assets/index-BVkQVMFn.js +0 -1
  378. package/ui-dist/assets/index-BaAPxkqh.css +0 -1
  379. package/ui-dist/assets/index-CmCERTmS.js +0 -1
  380. package/ui-dist/assets/index-Cr4lUIaJ.js +0 -1
  381. package/ui-dist/assets/index-D0fAqlES.js +0 -1
  382. package/ui-dist/assets/index-DfNcAyZq.js +0 -1
  383. package/ui-dist/assets/layout-D3tY9q4Q.js +0 -1
  384. package/ui-dist/assets/map-Ctg1-a9N.js +0 -1
  385. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-C6P3NY96.js +0 -1
  386. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-BNdDt62J.js +0 -8
@@ -5209,9 +5209,71 @@ var RUDDER_CORE_MCP_TOOL_NAMES = RUDDER_AGENT_V1_MCP_TOOL_NAMES.filter((name) =>
5209
5209
  var CUSTOM_INTEGRATION_KINDS = ["custom_api", "mcp_server"];
5210
5210
  var CUSTOM_INTEGRATION_SCOPES = ["organization", "agent"];
5211
5211
  var CUSTOM_INTEGRATION_STATUSES = ["active", "disabled", "error", "revoked"];
5212
- var CUSTOM_INTEGRATION_TOOL_STATUSES = ["active", "disabled", "error"];
5212
+ var CUSTOM_INTEGRATION_TOOL_STATUSES = ["active", "disabled", "error", "removed"];
5213
5213
  var CUSTOM_INTEGRATION_BINDING_STATUSES = ["active", "revoked"];
5214
5214
  var CUSTOM_INTEGRATION_TOOL_CALL_STATUSES = ["success", "error", "blocked"];
5215
+ var MCP_CONNECTION_PROVIDERS = ["supabase", "linear", "notion", "custom"];
5216
+ var MCP_CONNECTION_TRANSPORTS = ["stdio", "streamable_http", "legacy_manual"];
5217
+ var MCP_CONNECTION_ACCESS_MODES = ["provider_default", "read_only", "read_write"];
5218
+ var MCP_CONNECTION_STATUSES = [
5219
+ "draft",
5220
+ "authorizing",
5221
+ "selecting_scope",
5222
+ "active",
5223
+ "needs_reauth",
5224
+ "disabled",
5225
+ "revoked",
5226
+ "error"
5227
+ ];
5228
+ var MCP_OAUTH_GRANT_STATUSES = ["active", "needs_reauth", "revoked", "error"];
5229
+ var MCP_AGENT_BINDING_STATUSES = ["active", "disabled", "revoked"];
5230
+ var MCP_OAUTH_SESSION_TTL_MS = 10 * 60 * 1e3;
5231
+ var MCP_PROVIDER_CATALOG = [
5232
+ {
5233
+ id: "supabase",
5234
+ label: "Supabase",
5235
+ curated: true,
5236
+ requiresOAuth: true,
5237
+ requiresScopeSelection: true,
5238
+ scopeLabel: "Project",
5239
+ transports: ["streamable_http"],
5240
+ accessModes: ["read_only", "read_write"],
5241
+ defaultAccessMode: "read_only"
5242
+ },
5243
+ {
5244
+ id: "linear",
5245
+ label: "Linear",
5246
+ curated: true,
5247
+ requiresOAuth: true,
5248
+ requiresScopeSelection: false,
5249
+ scopeLabel: "Workspace",
5250
+ transports: ["streamable_http"],
5251
+ accessModes: ["read_only", "read_write"],
5252
+ defaultAccessMode: "read_write"
5253
+ },
5254
+ {
5255
+ id: "notion",
5256
+ label: "Notion",
5257
+ curated: true,
5258
+ requiresOAuth: true,
5259
+ requiresScopeSelection: false,
5260
+ scopeLabel: "Workspace",
5261
+ transports: ["streamable_http"],
5262
+ accessModes: ["provider_default"],
5263
+ defaultAccessMode: "provider_default"
5264
+ },
5265
+ {
5266
+ id: "custom",
5267
+ label: "Custom MCP",
5268
+ curated: false,
5269
+ requiresOAuth: false,
5270
+ requiresScopeSelection: false,
5271
+ scopeLabel: "Server",
5272
+ transports: ["stdio", "streamable_http"],
5273
+ accessModes: ["provider_default", "read_only", "read_write"],
5274
+ defaultAccessMode: "provider_default"
5275
+ }
5276
+ ];
5215
5277
  var CALENDAR_SOURCE_TYPES = ["rudder_local", "google_calendar", "agent_work", "system"];
5216
5278
  var CALENDAR_OWNER_TYPES = ["user", "agent", "system"];
5217
5279
  var CALENDAR_VISIBILITIES = ["full", "busy_only", "private"];
@@ -5645,6 +5707,464 @@ var createCustomIntegrationToolCallSchema = external_exports.object({
5645
5707
  issueId: external_exports.string().uuid().optional().nullable()
5646
5708
  });
5647
5709
 
5710
+ // ../../../shared/src/validators/mcp.ts
5711
+ var uuidSchema = external_exports.string().uuid();
5712
+ var timestampSchema = external_exports.string().datetime({ offset: true });
5713
+ var connectionNameSchema = external_exports.string().min(1).max(80).regex(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/, "Use lowercase letters, numbers, underscores, and hyphens");
5714
+ var reservedMcpConnectionNames = /* @__PURE__ */ new Set(["rudder-tools", "rudder-browser"]);
5715
+ var environmentNameSchema = external_exports.string().min(1).max(160).regex(/^[A-Za-z_][A-Za-z0-9_]*$/, "Use a valid environment variable name");
5716
+ var externalMcpToolNameSchema = external_exports.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/, "Use an exact MCP tool name");
5717
+ var externalMcpToolFilterSchema = external_exports.array(externalMcpToolNameSchema).max(500);
5718
+ var mcpConnectionProviderSchema = external_exports.enum(MCP_CONNECTION_PROVIDERS);
5719
+ var mcpConnectionTransportSchema = external_exports.enum(MCP_CONNECTION_TRANSPORTS);
5720
+ var mcpConnectionAccessModeSchema = external_exports.enum(MCP_CONNECTION_ACCESS_MODES);
5721
+ var mcpConnectionStatusSchema = external_exports.enum(MCP_CONNECTION_STATUSES);
5722
+ var mcpOAuthGrantStatusSchema = external_exports.enum(MCP_OAUTH_GRANT_STATUSES);
5723
+ var mcpAgentBindingStatusSchema = external_exports.enum(MCP_AGENT_BINDING_STATUSES);
5724
+ var stringMapSchema = external_exports.record(external_exports.string().max(8192));
5725
+ var environmentValueMapSchema = stringMapSchema.superRefine((values, ctx) => {
5726
+ for (const name of Object.keys(values)) {
5727
+ if (!environmentNameSchema.safeParse(name).success) {
5728
+ ctx.addIssue({
5729
+ code: external_exports.ZodIssueCode.custom,
5730
+ path: [name],
5731
+ message: `${name} must be a valid environment variable name`
5732
+ });
5733
+ }
5734
+ }
5735
+ });
5736
+ var safeHeaderSchema = stringMapSchema.superRefine((headers, ctx) => {
5737
+ const forbidden = /* @__PURE__ */ new Set(["authorization", "cookie", "proxy-authorization", "x-api-key"]);
5738
+ for (const name of Object.keys(headers)) {
5739
+ if (forbidden.has(name.toLowerCase())) {
5740
+ ctx.addIssue({
5741
+ code: external_exports.ZodIssueCode.custom,
5742
+ path: [name],
5743
+ message: `${name} must be stored as encrypted credential material`
5744
+ });
5745
+ }
5746
+ }
5747
+ });
5748
+ var mcpStdioSafeConfigSchema = external_exports.object({
5749
+ command: external_exports.string().min(1).max(2048),
5750
+ args: external_exports.array(external_exports.string().max(8192)).max(200).optional(),
5751
+ cwd: external_exports.string().min(1).max(4096).optional(),
5752
+ staticEnv: environmentValueMapSchema.optional(),
5753
+ forwardedEnv: external_exports.array(environmentNameSchema).max(100).optional(),
5754
+ secretEnvNames: external_exports.array(environmentNameSchema).max(100).optional(),
5755
+ toolAllowlist: externalMcpToolFilterSchema.optional(),
5756
+ toolDenylist: externalMcpToolFilterSchema.optional()
5757
+ }).strict().superRefine((value, ctx) => {
5758
+ const staticNames = new Set(Object.keys(value.staticEnv ?? {}));
5759
+ for (const name of value.secretEnvNames ?? []) {
5760
+ if (staticNames.has(name)) {
5761
+ ctx.addIssue({
5762
+ code: external_exports.ZodIssueCode.custom,
5763
+ path: ["staticEnv", name],
5764
+ message: `${name} is marked secret and cannot remain in safe config`
5765
+ });
5766
+ }
5767
+ }
5768
+ });
5769
+ var mcpStreamableHttpSafeConfigSchema = external_exports.object({
5770
+ url: external_exports.string().url().max(8192).optional(),
5771
+ staticHeaders: safeHeaderSchema.optional(),
5772
+ headersFromEnv: external_exports.record(environmentNameSchema).optional(),
5773
+ bearerTokenEnvVar: environmentNameSchema.optional(),
5774
+ secretHeaderNames: external_exports.array(external_exports.string().min(1).max(256)).max(100).optional(),
5775
+ hasBearerToken: external_exports.boolean().optional(),
5776
+ toolAllowlist: externalMcpToolFilterSchema.optional(),
5777
+ toolDenylist: externalMcpToolFilterSchema.optional()
5778
+ }).strict().superRefine((value, ctx) => {
5779
+ const staticNames = new Set(Object.keys(value.staticHeaders ?? {}).map((name) => name.toLowerCase()));
5780
+ const mappedNames = new Set(Object.keys(value.headersFromEnv ?? {}).map((name) => name.toLowerCase()));
5781
+ for (const name of value.secretHeaderNames ?? []) {
5782
+ if (staticNames.has(name.toLowerCase())) {
5783
+ ctx.addIssue({
5784
+ code: external_exports.ZodIssueCode.custom,
5785
+ path: ["staticHeaders", name],
5786
+ message: `${name} is marked secret and cannot remain in safe config`
5787
+ });
5788
+ }
5789
+ }
5790
+ for (const name of mappedNames) {
5791
+ if (staticNames.has(name)) {
5792
+ ctx.addIssue({
5793
+ code: external_exports.ZodIssueCode.custom,
5794
+ path: ["headersFromEnv", name],
5795
+ message: `${name} cannot have both a static value and an environment mapping`
5796
+ });
5797
+ }
5798
+ }
5799
+ });
5800
+ var mcpConnectionSecretsMutationSchema = external_exports.object({
5801
+ env: environmentValueMapSchema.optional(),
5802
+ headers: stringMapSchema.optional(),
5803
+ bearerToken: external_exports.string().min(1).max(1e6).optional()
5804
+ }).strict().refine((value) => Object.keys(value.env ?? {}).length > 0 || Object.keys(value.headers ?? {}).length > 0 || Boolean(value.bearerToken), {
5805
+ message: "At least one secret value is required"
5806
+ });
5807
+ var mcpLegacyManualSafeConfigSchema = external_exports.object({
5808
+ legacyConfigRetained: external_exports.literal(true)
5809
+ }).strict();
5810
+ var mcpCuratedSafeConfigSchema = external_exports.object({
5811
+ featureGroups: external_exports.object({
5812
+ mode: external_exports.literal("provider_default"),
5813
+ excluded: external_exports.array(external_exports.string().min(1).max(120)).max(100)
5814
+ }).strict()
5815
+ }).strict();
5816
+ var mcpConnectionSafeConfigSchema = external_exports.union([
5817
+ mcpStdioSafeConfigSchema,
5818
+ mcpStreamableHttpSafeConfigSchema,
5819
+ mcpLegacyManualSafeConfigSchema,
5820
+ mcpCuratedSafeConfigSchema
5821
+ ]);
5822
+ var mcpConnectionInputFields = {
5823
+ name: connectionNameSchema,
5824
+ displayName: external_exports.string().trim().min(1).max(120),
5825
+ provider: mcpConnectionProviderSchema,
5826
+ transport: mcpConnectionTransportSchema,
5827
+ externalScope: external_exports.string().trim().min(1).max(512).optional().nullable(),
5828
+ accessMode: mcpConnectionAccessModeSchema.optional(),
5829
+ safeConfig: mcpConnectionSafeConfigSchema.default({}),
5830
+ startupTimeoutMs: external_exports.number().int().min(100).max(3e5).default(1e4),
5831
+ toolTimeoutMs: external_exports.number().int().min(100).max(9e5).default(6e4),
5832
+ enabled: external_exports.boolean().default(true),
5833
+ required: external_exports.boolean().default(false),
5834
+ secrets: mcpConnectionSecretsMutationSchema.optional()
5835
+ };
5836
+ var providerAccessModes = {
5837
+ supabase: ["read_only", "read_write"],
5838
+ linear: ["read_only", "read_write"],
5839
+ notion: ["provider_default"],
5840
+ custom: ["provider_default", "read_only", "read_write"]
5841
+ };
5842
+ function defaultAccessMode(provider) {
5843
+ if (provider === "supabase") return "read_only";
5844
+ if (provider === "linear") return "read_write";
5845
+ return "provider_default";
5846
+ }
5847
+ function sameNames(left, right, caseInsensitive = false) {
5848
+ const normalize = (name) => caseInsensitive ? name.toLowerCase() : name;
5849
+ const leftNames = new Set(left.map(normalize));
5850
+ const rightNames = new Set(right.map(normalize));
5851
+ return leftNames.size === rightNames.size && [...leftNames].every((name) => rightNames.has(name));
5852
+ }
5853
+ function validateSafeConnectionConfig(value, ctx, options = {}) {
5854
+ const accessMode = value.accessMode ?? defaultAccessMode(value.provider);
5855
+ const allowedAccessModes = value.provider ? providerAccessModes[value.provider] : void 0;
5856
+ if (!allowedAccessModes?.some((allowed) => allowed === accessMode)) {
5857
+ ctx.addIssue({
5858
+ code: external_exports.ZodIssueCode.custom,
5859
+ path: ["accessMode"],
5860
+ message: `${value.provider ?? "Unknown"} does not support ${accessMode}`
5861
+ });
5862
+ }
5863
+ if (value.provider !== "custom") {
5864
+ if (value.transport !== "streamable_http") {
5865
+ ctx.addIssue({
5866
+ code: external_exports.ZodIssueCode.custom,
5867
+ path: ["transport"],
5868
+ message: "Curated providers use Rudder-managed Streamable HTTP"
5869
+ });
5870
+ }
5871
+ const hasManagedCuratedConfig = options.allowManagedCuratedSafeConfig === true && mcpCuratedSafeConfigSchema.safeParse(value.safeConfig).success;
5872
+ if (typeof value.safeConfig !== "object" || value.safeConfig === null || Array.isArray(value.safeConfig) || Object.keys(value.safeConfig).length > 0 && !hasManagedCuratedConfig) {
5873
+ ctx.addIssue({
5874
+ code: external_exports.ZodIssueCode.custom,
5875
+ path: ["safeConfig"],
5876
+ message: "Curated provider URL, headers, and transport config are Rudder-managed"
5877
+ });
5878
+ }
5879
+ if (value.secrets) {
5880
+ ctx.addIssue({
5881
+ code: external_exports.ZodIssueCode.custom,
5882
+ path: ["secrets"],
5883
+ message: "Curated provider credentials must come from its OAuth grant"
5884
+ });
5885
+ }
5886
+ return;
5887
+ }
5888
+ if (value.transport === "stdio") {
5889
+ const parsed = mcpStdioSafeConfigSchema.safeParse(value.safeConfig);
5890
+ if (!parsed.success) {
5891
+ ctx.addIssue({
5892
+ code: external_exports.ZodIssueCode.custom,
5893
+ path: ["safeConfig"],
5894
+ message: "STDIO connections require command-based safe config"
5895
+ });
5896
+ }
5897
+ }
5898
+ if (value.transport === "streamable_http") {
5899
+ const parsed = mcpStreamableHttpSafeConfigSchema.safeParse(value.safeConfig);
5900
+ if (!parsed.success || value.provider === "custom" && !parsed.data.url) {
5901
+ ctx.addIssue({
5902
+ code: external_exports.ZodIssueCode.custom,
5903
+ path: ["safeConfig", "url"],
5904
+ message: "Custom Streamable HTTP connections require a URL"
5905
+ });
5906
+ }
5907
+ }
5908
+ if (value.transport === "legacy_manual") {
5909
+ if (!mcpLegacyManualSafeConfigSchema.safeParse(value.safeConfig).success) {
5910
+ ctx.addIssue({
5911
+ code: external_exports.ZodIssueCode.custom,
5912
+ path: ["safeConfig"],
5913
+ message: "Legacy manual connections require compatibility config"
5914
+ });
5915
+ }
5916
+ if (value.enabled !== false) {
5917
+ ctx.addIssue({
5918
+ code: external_exports.ZodIssueCode.custom,
5919
+ path: ["enabled"],
5920
+ message: "Legacy manual connections cannot be executable"
5921
+ });
5922
+ }
5923
+ }
5924
+ if (value.transport === "streamable_http") {
5925
+ const parsed = mcpStreamableHttpSafeConfigSchema.safeParse(value.safeConfig);
5926
+ if (parsed.success) {
5927
+ const declaredHeaderNames = parsed.data.secretHeaderNames ?? [];
5928
+ const suppliedHeaderNames = Object.keys(value.secrets?.headers ?? {});
5929
+ const declaredBearer = parsed.data.hasBearerToken === true;
5930
+ const suppliedBearer = Boolean(value.secrets?.bearerToken);
5931
+ const authorizationFromEnv = Object.keys(parsed.data.headersFromEnv ?? {}).some((name) => name.toLowerCase() === "authorization");
5932
+ const encryptedAuthorizationHeader = declaredHeaderNames.some((name) => name.toLowerCase() === "authorization") || suppliedHeaderNames.some((name) => name.toLowerCase() === "authorization");
5933
+ const bearerEnvironment = Boolean(parsed.data.bearerTokenEnvVar);
5934
+ const directBearer = declaredBearer || suppliedBearer;
5935
+ if ([
5936
+ authorizationFromEnv,
5937
+ encryptedAuthorizationHeader,
5938
+ bearerEnvironment,
5939
+ directBearer
5940
+ ].filter(Boolean).length > 1) {
5941
+ ctx.addIssue({
5942
+ code: external_exports.ZodIssueCode.custom,
5943
+ path: ["safeConfig"],
5944
+ message: "Configure only one manual Authorization or Bearer source"
5945
+ });
5946
+ }
5947
+ }
5948
+ }
5949
+ }
5950
+ function validateConnectionSecretMutation(value, ctx) {
5951
+ if (value.provider !== "custom") return;
5952
+ if (value.transport === "stdio") {
5953
+ const parsed = mcpStdioSafeConfigSchema.safeParse(value.safeConfig);
5954
+ if (parsed.success) {
5955
+ const declaredEnvNames = parsed.data.secretEnvNames ?? [];
5956
+ const suppliedEnvNames = Object.keys(value.secrets?.env ?? {});
5957
+ if (!sameNames(declaredEnvNames, suppliedEnvNames) || Object.keys(value.secrets?.headers ?? {}).length > 0 || Boolean(value.secrets?.bearerToken)) {
5958
+ ctx.addIssue({
5959
+ code: external_exports.ZodIssueCode.custom,
5960
+ path: ["secrets"],
5961
+ message: "STDIO secret values must exactly match declared secret environment names"
5962
+ });
5963
+ }
5964
+ }
5965
+ }
5966
+ if (value.transport === "legacy_manual" && value.secrets) {
5967
+ ctx.addIssue({
5968
+ code: external_exports.ZodIssueCode.custom,
5969
+ path: ["secrets"],
5970
+ message: "Legacy manual connections cannot accept new secret values"
5971
+ });
5972
+ }
5973
+ if (value.transport === "streamable_http") {
5974
+ const parsed = mcpStreamableHttpSafeConfigSchema.safeParse(value.safeConfig);
5975
+ if (parsed.success) {
5976
+ const suppliedEnvNames = Object.keys(value.secrets?.env ?? {});
5977
+ const declaredHeaderNames = parsed.data.secretHeaderNames ?? [];
5978
+ const suppliedHeaderNames = Object.keys(value.secrets?.headers ?? {});
5979
+ const declaredBearer = parsed.data.hasBearerToken === true;
5980
+ const suppliedBearer = Boolean(value.secrets?.bearerToken);
5981
+ if (suppliedEnvNames.length > 0 || !sameNames(declaredHeaderNames, suppliedHeaderNames, true) || declaredBearer !== suppliedBearer) {
5982
+ ctx.addIssue({
5983
+ code: external_exports.ZodIssueCode.custom,
5984
+ path: ["secrets"],
5985
+ message: "HTTP mutations accept only exactly declared encrypted headers and direct Bearer values"
5986
+ });
5987
+ }
5988
+ }
5989
+ }
5990
+ }
5991
+ var createMcpConnectionSchema = external_exports.object(mcpConnectionInputFields).strict().superRefine((value, ctx) => {
5992
+ if (reservedMcpConnectionNames.has(value.name)) {
5993
+ ctx.addIssue({
5994
+ code: external_exports.ZodIssueCode.custom,
5995
+ path: ["name"],
5996
+ message: `${value.name} is reserved for an internal Rudder runtime`
5997
+ });
5998
+ }
5999
+ }).superRefine(validateSafeConnectionConfig).superRefine(validateConnectionSecretMutation).transform((value) => ({
6000
+ ...value,
6001
+ accessMode: value.accessMode ?? defaultAccessMode(value.provider)
6002
+ }));
6003
+ var updateMcpConnectionSchema = external_exports.object({
6004
+ displayName: mcpConnectionInputFields.displayName.optional(),
6005
+ externalScope: mcpConnectionInputFields.externalScope.optional(),
6006
+ accessMode: mcpConnectionAccessModeSchema.optional(),
6007
+ safeConfig: mcpConnectionSafeConfigSchema.optional(),
6008
+ startupTimeoutMs: external_exports.number().int().min(100).max(3e5).optional(),
6009
+ toolTimeoutMs: external_exports.number().int().min(100).max(9e5).optional(),
6010
+ enabled: external_exports.boolean().optional(),
6011
+ required: external_exports.boolean().optional(),
6012
+ secrets: mcpConnectionSecretsMutationSchema.optional()
6013
+ }).strict().refine((value) => Object.keys(value).length > 0, {
6014
+ message: "At least one connection field is required"
6015
+ });
6016
+ var mcpConnectionMergedConfigFields = {
6017
+ provider: mcpConnectionProviderSchema,
6018
+ transport: mcpConnectionTransportSchema,
6019
+ accessMode: mcpConnectionAccessModeSchema,
6020
+ safeConfig: mcpConnectionSafeConfigSchema,
6021
+ enabled: external_exports.boolean()
6022
+ };
6023
+ var mcpConnectionMergedConfigSchema = external_exports.object(
6024
+ mcpConnectionMergedConfigFields
6025
+ ).strict().superRefine((value, ctx) => {
6026
+ validateSafeConnectionConfig(value, ctx, { allowManagedCuratedSafeConfig: true });
6027
+ });
6028
+ var mcpConnectionMutationConfigSchema = external_exports.object({
6029
+ ...mcpConnectionMergedConfigFields,
6030
+ secrets: mcpConnectionSecretsMutationSchema.optional()
6031
+ }).strict().superRefine((value, ctx) => {
6032
+ validateSafeConnectionConfig(value, ctx, { allowManagedCuratedSafeConfig: true });
6033
+ }).superRefine(validateConnectionSecretMutation);
6034
+ var mcpConnectionSummarySchema = external_exports.object({
6035
+ id: uuidSchema,
6036
+ orgId: uuidSchema,
6037
+ name: connectionNameSchema,
6038
+ displayName: external_exports.string().min(1).max(120),
6039
+ provider: mcpConnectionProviderSchema,
6040
+ transport: mcpConnectionTransportSchema,
6041
+ externalScope: external_exports.string().max(512).nullable(),
6042
+ accessMode: mcpConnectionAccessModeSchema,
6043
+ status: mcpConnectionStatusSchema,
6044
+ safeConfig: mcpConnectionSafeConfigSchema,
6045
+ startupTimeoutMs: external_exports.number().int().positive(),
6046
+ toolTimeoutMs: external_exports.number().int().positive(),
6047
+ enabled: external_exports.boolean(),
6048
+ required: external_exports.boolean(),
6049
+ hasCredentials: external_exports.boolean(),
6050
+ lastDiscoveredAt: timestampSchema.nullable(),
6051
+ activatedAt: timestampSchema.nullable(),
6052
+ disabledAt: timestampSchema.nullable(),
6053
+ revokedAt: timestampSchema.nullable(),
6054
+ createdAt: timestampSchema,
6055
+ updatedAt: timestampSchema
6056
+ }).strict();
6057
+ var mcpProviderCatalogEntrySchema = external_exports.object({
6058
+ id: mcpConnectionProviderSchema,
6059
+ label: external_exports.string().min(1),
6060
+ curated: external_exports.boolean(),
6061
+ requiresOAuth: external_exports.boolean(),
6062
+ requiresScopeSelection: external_exports.boolean(),
6063
+ scopeLabel: external_exports.string().min(1),
6064
+ transports: external_exports.array(mcpConnectionTransportSchema).min(1),
6065
+ accessModes: external_exports.array(mcpConnectionAccessModeSchema).min(1),
6066
+ defaultAccessMode: mcpConnectionAccessModeSchema
6067
+ }).strict().superRefine((value, ctx) => {
6068
+ if (!value.accessModes.includes(value.defaultAccessMode)) {
6069
+ ctx.addIssue({
6070
+ code: external_exports.ZodIssueCode.custom,
6071
+ path: ["defaultAccessMode"],
6072
+ message: "Default access mode must be included in accessModes"
6073
+ });
6074
+ }
6075
+ });
6076
+ var mcpProviderCatalogSchema = external_exports.array(mcpProviderCatalogEntrySchema);
6077
+ mcpProviderCatalogSchema.parse(MCP_PROVIDER_CATALOG);
6078
+ var mcpOAuthStartSchema = external_exports.object({}).strict();
6079
+ var mcpOAuthStartResponseSchema = external_exports.object({
6080
+ connectionId: uuidSchema,
6081
+ authorizationUrl: external_exports.string().url().max(16384),
6082
+ expiresAt: timestampSchema
6083
+ }).strict();
6084
+ var mcpOAuthCallbackSchema = external_exports.object({
6085
+ state: external_exports.string().min(16).max(8192),
6086
+ code: external_exports.string().min(1).max(16384).optional(),
6087
+ error: external_exports.string().min(1).max(512).optional(),
6088
+ errorDescription: external_exports.string().max(4096).optional(),
6089
+ iss: external_exports.string().url().max(8192).optional()
6090
+ }).strict().superRefine((value, ctx) => {
6091
+ if (Boolean(value.code) === Boolean(value.error)) {
6092
+ ctx.addIssue({
6093
+ code: external_exports.ZodIssueCode.custom,
6094
+ message: "OAuth callback must include exactly one of code or error"
6095
+ });
6096
+ }
6097
+ });
6098
+ var mcpScopeSelectionSchema = external_exports.object({
6099
+ connectionId: uuidSchema,
6100
+ externalScope: external_exports.string().trim().min(1).max(512),
6101
+ accessMode: mcpConnectionAccessModeSchema
6102
+ }).strict();
6103
+ var mcpExternalScopeOptionSchema = external_exports.object({
6104
+ id: external_exports.string().min(1).max(512),
6105
+ displayName: external_exports.string().min(1).max(240),
6106
+ metadata: external_exports.record(external_exports.unknown()).default({})
6107
+ }).strict();
6108
+ var mcpOAuthGrantSummarySchema = external_exports.object({
6109
+ id: uuidSchema,
6110
+ connectionId: uuidSchema,
6111
+ providerSubject: external_exports.string().max(1024).nullable(),
6112
+ providerScopes: external_exports.array(external_exports.string().max(512)),
6113
+ externalScopeMetadata: external_exports.record(external_exports.unknown()),
6114
+ status: mcpOAuthGrantStatusSchema,
6115
+ hasCredentials: external_exports.boolean(),
6116
+ expiresAt: timestampSchema.nullable(),
6117
+ lastRefreshedAt: timestampSchema.nullable(),
6118
+ revokedAt: timestampSchema.nullable(),
6119
+ createdAt: timestampSchema,
6120
+ updatedAt: timestampSchema
6121
+ }).strict();
6122
+ var mcpDiscoveredToolSchema = external_exports.object({
6123
+ id: uuidSchema,
6124
+ connectionId: uuidSchema,
6125
+ externalToolName: external_exports.string().min(1).max(240),
6126
+ rudderToolName: external_exports.string().min(1).max(320),
6127
+ description: external_exports.string().max(4e3).nullable(),
6128
+ inputSchema: external_exports.record(external_exports.unknown()),
6129
+ outputSchema: external_exports.record(external_exports.unknown()).nullable(),
6130
+ enabled: external_exports.boolean(),
6131
+ removedAt: timestampSchema.nullable()
6132
+ }).strict();
6133
+ var mcpAgentBindingSchema = external_exports.object({
6134
+ id: uuidSchema,
6135
+ connectionId: uuidSchema,
6136
+ agentId: uuidSchema,
6137
+ status: mcpAgentBindingStatusSchema,
6138
+ enabledToolIds: external_exports.array(uuidSchema).max(500)
6139
+ }).strict();
6140
+ var mcpAgentConnectionSummarySchema = external_exports.object({
6141
+ connection: mcpConnectionSummarySchema,
6142
+ binding: mcpAgentBindingSchema.nullable(),
6143
+ tools: external_exports.array(mcpDiscoveredToolSchema).max(500)
6144
+ }).strict();
6145
+ var upsertMcpAgentBindingSchema = external_exports.object({
6146
+ status: mcpAgentBindingStatusSchema.optional(),
6147
+ enabledToolIds: external_exports.array(uuidSchema).max(500).optional()
6148
+ }).strict();
6149
+ var updateMcpAgentBindingSchema = external_exports.object({
6150
+ status: mcpAgentBindingStatusSchema.optional(),
6151
+ enabledToolIds: external_exports.array(uuidSchema).max(500).optional()
6152
+ }).strict().refine((value) => Object.keys(value).length > 0, {
6153
+ message: "At least one binding field is required"
6154
+ });
6155
+ var managedExternalMcpBindingSchema = external_exports.object({
6156
+ bindingId: uuidSchema,
6157
+ serverName: connectionNameSchema,
6158
+ toolPolicy: external_exports.object({
6159
+ mode: external_exports.literal("allowlist"),
6160
+ allowedToolNames: external_exports.array(external_exports.string().min(1).max(320)).max(500)
6161
+ }).strict(),
6162
+ required: external_exports.boolean(),
6163
+ startupTimeoutMs: external_exports.number().int().positive(),
6164
+ toolTimeoutMs: external_exports.number().int().positive()
6165
+ }).strict();
6166
+ var managedExternalMcpBindingsSchema = external_exports.array(managedExternalMcpBindingSchema).max(100);
6167
+
5648
6168
  // ../../../shared/src/validators/chat.ts
5649
6169
  var chatConversationStatusSchema = external_exports.enum(CHAT_CONVERSATION_STATUSES);
5650
6170
  var chatIssueCreationModeSchema = external_exports.enum(CHAT_ISSUE_CREATION_MODES);
@@ -5747,6 +6267,174 @@ var chatQueuedMessageStatusSchema = external_exports.enum([
5747
6267
  ]);
5748
6268
  var chatControlActionIdSchema = external_exports.string().uuid();
5749
6269
  var chatBodyHashSchema = external_exports.string().regex(/^[a-f0-9]{64}$/i, "Expected a SHA-256 body hash");
6270
+ var MAX_CHAT_INLINE_ANNOTATIONS = 10;
6271
+ var MAX_CHAT_INLINE_ANNOTATION_SELECTED_TEXT_LENGTH = 4e3;
6272
+ var MAX_CHAT_INLINE_ANNOTATION_COMMENT_LENGTH = 2e3;
6273
+ var MAX_CHAT_INLINE_ANNOTATION_TOTAL_TEXT_LENGTH = 16e3;
6274
+ var MAX_CHAT_INLINE_ANNOTATION_CONTEXT_LENGTH = 160;
6275
+ var MAX_CHAT_INLINE_ANNOTATION_ATTACHMENTS = 10;
6276
+ var chatInlineAnnotationCommentSchema = external_exports.preprocess(
6277
+ (value) => {
6278
+ if (typeof value !== "string") return value;
6279
+ const trimmed = value.trim();
6280
+ return trimmed.length > 0 ? trimmed : null;
6281
+ },
6282
+ external_exports.string().max(MAX_CHAT_INLINE_ANNOTATION_COMMENT_LENGTH).nullable().optional()
6283
+ );
6284
+ var chatInlineAnnotationSelectedTextSchema = external_exports.string().min(1).max(MAX_CHAT_INLINE_ANNOTATION_SELECTED_TEXT_LENGTH).refine((value) => value.trim().length > 0, "Selected text must not be blank");
6285
+ var chatInlineAnnotationSourceHashSchema = external_exports.string().regex(/^[a-f0-9]{64}$/, "Expected a lowercase SHA-256 source hash");
6286
+ var chatInlineAnnotationShape = {
6287
+ id: external_exports.string().uuid(),
6288
+ selectedText: chatInlineAnnotationSelectedTextSchema,
6289
+ comment: chatInlineAnnotationCommentSchema,
6290
+ sourceConversationId: external_exports.string().uuid(),
6291
+ sourceMessageId: external_exports.string().uuid(),
6292
+ sourceHash: chatInlineAnnotationSourceHashSchema,
6293
+ start: external_exports.number().int().nonnegative(),
6294
+ end: external_exports.number().int().nonnegative(),
6295
+ prefix: external_exports.string().max(MAX_CHAT_INLINE_ANNOTATION_CONTEXT_LENGTH),
6296
+ suffix: external_exports.string().max(MAX_CHAT_INLINE_ANNOTATION_CONTEXT_LENGTH),
6297
+ attachmentIds: external_exports.array(external_exports.string().uuid()).default([])
6298
+ };
6299
+ function refineChatInlineAnnotation(annotation, ctx) {
6300
+ if (annotation.end <= annotation.start) {
6301
+ ctx.addIssue({
6302
+ code: external_exports.ZodIssueCode.custom,
6303
+ message: "Annotation end must be greater than start",
6304
+ path: ["end"]
6305
+ });
6306
+ }
6307
+ const attachmentIds = /* @__PURE__ */ new Set();
6308
+ annotation.attachmentIds.forEach((attachmentId, index) => {
6309
+ if (attachmentIds.has(attachmentId)) {
6310
+ ctx.addIssue({
6311
+ code: external_exports.ZodIssueCode.custom,
6312
+ message: "Annotation attachment ids must be unique",
6313
+ path: ["attachmentIds", index]
6314
+ });
6315
+ }
6316
+ attachmentIds.add(attachmentId);
6317
+ });
6318
+ const attachmentFileIndexes = /* @__PURE__ */ new Set();
6319
+ annotation.attachmentFileIndexes?.forEach((fileIndex, index) => {
6320
+ if (attachmentFileIndexes.has(fileIndex)) {
6321
+ ctx.addIssue({
6322
+ code: external_exports.ZodIssueCode.custom,
6323
+ message: "Annotation attachment file indexes must be unique",
6324
+ path: ["attachmentFileIndexes", index]
6325
+ });
6326
+ }
6327
+ attachmentFileIndexes.add(fileIndex);
6328
+ });
6329
+ if (annotation.surface === "process_transcript" && annotation.generationSeqStart !== void 0 && annotation.generationSeqEnd !== void 0 && annotation.generationSeqEnd < annotation.generationSeqStart) {
6330
+ ctx.addIssue({
6331
+ code: external_exports.ZodIssueCode.custom,
6332
+ message: "Generation sequence end must be greater than or equal to start",
6333
+ path: ["generationSeqEnd"]
6334
+ });
6335
+ }
6336
+ }
6337
+ var chatAssistantInlineAnnotationSchema = external_exports.object({
6338
+ ...chatInlineAnnotationShape,
6339
+ surface: external_exports.literal("assistant_body")
6340
+ }).strict();
6341
+ var chatProcessInlineAnnotationSchema = external_exports.object({
6342
+ ...chatInlineAnnotationShape,
6343
+ surface: external_exports.literal("process_transcript"),
6344
+ transcriptKind: external_exports.enum(["thinking", "assistant"]),
6345
+ generationId: external_exports.string().uuid(),
6346
+ generationSeqStart: external_exports.number().int().nonnegative(),
6347
+ generationSeqEnd: external_exports.number().int().nonnegative()
6348
+ }).strict();
6349
+ var chatInlineAnnotationSchema = external_exports.discriminatedUnion("surface", [
6350
+ chatAssistantInlineAnnotationSchema,
6351
+ chatProcessInlineAnnotationSchema
6352
+ ]).superRefine(refineChatInlineAnnotation);
6353
+ var chatAssistantInlineAnnotationInputSchema = chatAssistantInlineAnnotationSchema.extend({
6354
+ attachmentFileIndexes: external_exports.array(external_exports.number().int().nonnegative()).optional()
6355
+ }).strict();
6356
+ var chatProcessInlineAnnotationInputSchema = chatProcessInlineAnnotationSchema.extend({
6357
+ attachmentFileIndexes: external_exports.array(external_exports.number().int().nonnegative()).optional()
6358
+ }).strict();
6359
+ var chatInlineAnnotationInputSchema = external_exports.discriminatedUnion("surface", [
6360
+ chatAssistantInlineAnnotationInputSchema,
6361
+ chatProcessInlineAnnotationInputSchema
6362
+ ]).superRefine(refineChatInlineAnnotation);
6363
+ function createChatInlineAnnotationsSchema(annotationSchema) {
6364
+ return external_exports.array(annotationSchema).max(MAX_CHAT_INLINE_ANNOTATIONS).superRefine((annotations, ctx) => {
6365
+ let totalTextLength = 0;
6366
+ let attachmentReferenceCount = 0;
6367
+ const annotationIds = /* @__PURE__ */ new Set();
6368
+ const sourceRanges = /* @__PURE__ */ new Set();
6369
+ const attachmentIds = /* @__PURE__ */ new Set();
6370
+ const attachmentFileIndexes = /* @__PURE__ */ new Set();
6371
+ annotations.forEach((annotation, annotationIndex) => {
6372
+ totalTextLength += annotation.selectedText.length + (annotation.comment?.length ?? 0);
6373
+ attachmentReferenceCount += annotation.attachmentIds.length + (annotation.attachmentFileIndexes?.length ?? 0);
6374
+ if (annotationIds.has(annotation.id)) {
6375
+ ctx.addIssue({
6376
+ code: external_exports.ZodIssueCode.custom,
6377
+ message: "Annotation ids must be unique across the message",
6378
+ path: [annotationIndex, "id"]
6379
+ });
6380
+ }
6381
+ annotationIds.add(annotation.id);
6382
+ const sourceRangeKey = JSON.stringify([
6383
+ annotation.sourceConversationId,
6384
+ annotation.sourceMessageId,
6385
+ annotation.surface,
6386
+ annotation.surface === "process_transcript" ? annotation.transcriptKind : null,
6387
+ annotation.surface === "process_transcript" ? annotation.generationId : null,
6388
+ annotation.surface === "process_transcript" ? annotation.generationSeqStart : null,
6389
+ annotation.surface === "process_transcript" ? annotation.generationSeqEnd : null,
6390
+ annotation.start,
6391
+ annotation.end
6392
+ ]);
6393
+ if (sourceRanges.has(sourceRangeKey)) {
6394
+ ctx.addIssue({
6395
+ code: external_exports.ZodIssueCode.custom,
6396
+ message: "Annotation source ranges must be unique across the message",
6397
+ path: [annotationIndex, "start"]
6398
+ });
6399
+ }
6400
+ sourceRanges.add(sourceRangeKey);
6401
+ annotation.attachmentIds.forEach((attachmentId, attachmentIndex) => {
6402
+ if (attachmentIds.has(attachmentId)) {
6403
+ ctx.addIssue({
6404
+ code: external_exports.ZodIssueCode.custom,
6405
+ message: "Annotation attachment ids must be unique across the message",
6406
+ path: [annotationIndex, "attachmentIds", attachmentIndex]
6407
+ });
6408
+ }
6409
+ attachmentIds.add(attachmentId);
6410
+ });
6411
+ annotation.attachmentFileIndexes?.forEach((fileIndex, attachmentIndex) => {
6412
+ if (attachmentFileIndexes.has(fileIndex)) {
6413
+ ctx.addIssue({
6414
+ code: external_exports.ZodIssueCode.custom,
6415
+ message: "Annotation attachment file indexes must be unique across the message",
6416
+ path: [annotationIndex, "attachmentFileIndexes", attachmentIndex]
6417
+ });
6418
+ }
6419
+ attachmentFileIndexes.add(fileIndex);
6420
+ });
6421
+ });
6422
+ if (totalTextLength > MAX_CHAT_INLINE_ANNOTATION_TOTAL_TEXT_LENGTH) {
6423
+ ctx.addIssue({
6424
+ code: external_exports.ZodIssueCode.custom,
6425
+ message: `Annotation selected text and comments must not exceed ${MAX_CHAT_INLINE_ANNOTATION_TOTAL_TEXT_LENGTH} characters`
6426
+ });
6427
+ }
6428
+ if (attachmentReferenceCount > MAX_CHAT_INLINE_ANNOTATION_ATTACHMENTS) {
6429
+ ctx.addIssue({
6430
+ code: external_exports.ZodIssueCode.custom,
6431
+ message: `Annotations must not reference more than ${MAX_CHAT_INLINE_ANNOTATION_ATTACHMENTS} attachments`
6432
+ });
6433
+ }
6434
+ });
6435
+ }
6436
+ var chatInlineAnnotationsSchema = createChatInlineAnnotationsSchema(chatInlineAnnotationSchema);
6437
+ var chatInlineAnnotationsInputSchema = createChatInlineAnnotationsSchema(chatInlineAnnotationInputSchema);
5750
6438
  var createChatContextLinkSchema = external_exports.object({
5751
6439
  entityType: chatContextEntityTypeSchema,
5752
6440
  entityId: external_exports.string().min(1),
@@ -5786,28 +6474,65 @@ var createSideChatSchema = external_exports.object({
5786
6474
  clientMutationId: external_exports.string().trim().min(1).max(120)
5787
6475
  });
5788
6476
  var addChatMessageSchema = external_exports.object({
5789
- body: external_exports.string().trim().min(1).max(2e4),
6477
+ body: external_exports.string().trim().max(2e4).default(""),
6478
+ inlineAnnotations: chatInlineAnnotationsInputSchema.optional(),
5790
6479
  editUserMessageId: external_exports.string().uuid().optional().nullable(),
5791
6480
  queuedMessageId: external_exports.string().uuid().optional().nullable()
6481
+ }).superRefine((value, ctx) => {
6482
+ if (value.body.length === 0 && (value.inlineAnnotations?.length ?? 0) === 0) {
6483
+ ctx.addIssue({
6484
+ code: external_exports.ZodIssueCode.custom,
6485
+ message: "Chat message body or at least one inline annotation is required",
6486
+ path: ["body"]
6487
+ });
6488
+ }
5792
6489
  });
5793
6490
  var chatQueuedMessagePayloadSchema = external_exports.object({
5794
- body: external_exports.string().trim().min(1).max(2e4),
6491
+ body: external_exports.string().trim().max(2e4).default(""),
5795
6492
  attachmentIds: external_exports.array(external_exports.string().uuid()).optional().default([]),
6493
+ inlineAnnotations: chatInlineAnnotationsInputSchema.optional().default([]),
5796
6494
  projectId: external_exports.string().uuid().optional().nullable(),
5797
6495
  skillRefs: external_exports.array(external_exports.string().trim().min(1).max(240)).optional().default([]),
5798
6496
  accessMode: external_exports.string().trim().min(1).max(120).optional().nullable(),
5799
6497
  model: external_exports.string().trim().min(1).max(120).optional().nullable(),
5800
6498
  effort: external_exports.string().trim().min(1).max(120).optional().nullable(),
5801
6499
  metadata: external_exports.record(external_exports.unknown()).optional().nullable()
6500
+ }).superRefine((value, ctx) => {
6501
+ if (value.body.length === 0 && value.inlineAnnotations.length === 0) {
6502
+ ctx.addIssue({
6503
+ code: external_exports.ZodIssueCode.custom,
6504
+ message: "Queued message body or at least one inline annotation is required",
6505
+ path: ["body"]
6506
+ });
6507
+ }
5802
6508
  });
5803
6509
  var createChatQueuedMessageSchema = external_exports.object({
5804
6510
  clientMutationId: external_exports.string().trim().min(1).max(120),
5805
6511
  expectedGenerationId: external_exports.string().uuid().optional().nullable(),
5806
6512
  payload: chatQueuedMessagePayloadSchema
5807
6513
  });
6514
+ var chatQueuedMessageUpdatePayloadSchema = external_exports.object({
6515
+ body: external_exports.string().trim().max(2e4).default(""),
6516
+ attachmentIds: external_exports.array(external_exports.string().uuid()).optional().default([]),
6517
+ inlineAnnotations: chatInlineAnnotationsInputSchema.optional(),
6518
+ projectId: external_exports.string().uuid().optional().nullable(),
6519
+ skillRefs: external_exports.array(external_exports.string().trim().min(1).max(240)).optional().default([]),
6520
+ accessMode: external_exports.string().trim().min(1).max(120).optional().nullable(),
6521
+ model: external_exports.string().trim().min(1).max(120).optional().nullable(),
6522
+ effort: external_exports.string().trim().min(1).max(120).optional().nullable(),
6523
+ metadata: external_exports.record(external_exports.unknown()).optional().nullable()
6524
+ }).superRefine((value, ctx) => {
6525
+ if (value.body.length === 0 && value.inlineAnnotations !== void 0 && value.inlineAnnotations.length === 0) {
6526
+ ctx.addIssue({
6527
+ code: external_exports.ZodIssueCode.custom,
6528
+ message: "Queued message body or at least one inline annotation is required",
6529
+ path: ["body"]
6530
+ });
6531
+ }
6532
+ });
5808
6533
  var updateChatQueuedMessageSchema = external_exports.object({
5809
6534
  version: external_exports.number().int().positive(),
5810
- payload: chatQueuedMessagePayloadSchema
6535
+ payload: chatQueuedMessageUpdatePayloadSchema
5811
6536
  });
5812
6537
  var cancelChatQueuedMessageSchema = external_exports.object({
5813
6538
  version: external_exports.number().int().positive().optional()
@@ -6040,6 +6765,7 @@ var messengerItemKeysSchema = external_exports.array(messengerItemKeySchema).min
6040
6765
  var createMessengerCustomGroupWithEntriesSchema = createMessengerCustomGroupSchema.extend({
6041
6766
  itemKeys: messengerItemKeysSchema.optional(),
6042
6767
  threadKeys: messengerItemKeysSchema.optional(),
6768
+ anchorItemKey: messengerItemKeySchema.optional(),
6043
6769
  autoGenerateName: external_exports.boolean().optional()
6044
6770
  }).superRefine((value, ctx) => {
6045
6771
  if (!value.itemKeys && !value.threadKeys) {
@@ -6047,6 +6773,14 @@ var createMessengerCustomGroupWithEntriesSchema = createMessengerCustomGroupSche
6047
6773
  } else if (value.itemKeys && value.threadKeys && JSON.stringify(value.itemKeys) !== JSON.stringify(value.threadKeys)) {
6048
6774
  ctx.addIssue({ code: "custom", message: "itemKeys and threadKeys must match", path: ["itemKeys"] });
6049
6775
  }
6776
+ const itemKeys = value.itemKeys ?? value.threadKeys;
6777
+ if (value.anchorItemKey && itemKeys && !itemKeys.includes(value.anchorItemKey)) {
6778
+ ctx.addIssue({
6779
+ code: "custom",
6780
+ message: "anchorItemKey must be included in itemKeys",
6781
+ path: ["anchorItemKey"]
6782
+ });
6783
+ }
6050
6784
  }).transform((value) => ({ ...value, itemKeys: value.itemKeys ?? value.threadKeys }));
6051
6785
  var updateMessengerCustomGroupSchema = external_exports.object({
6052
6786
  name: external_exports.string().trim().min(1).max(80).optional(),
@@ -6364,16 +7098,16 @@ var createSecretSchema = external_exports.object({
6364
7098
  value: external_exports.string().min(1),
6365
7099
  description: external_exports.string().optional().nullable(),
6366
7100
  externalRef: external_exports.string().optional().nullable()
6367
- });
7101
+ }).strict();
6368
7102
  var rotateSecretSchema = external_exports.object({
6369
7103
  value: external_exports.string().min(1),
6370
7104
  externalRef: external_exports.string().optional().nullable()
6371
- });
7105
+ }).strict();
6372
7106
  var updateSecretSchema = external_exports.object({
6373
7107
  name: external_exports.string().min(1).optional(),
6374
7108
  description: external_exports.string().optional().nullable(),
6375
7109
  externalRef: external_exports.string().optional().nullable()
6376
- });
7110
+ }).strict();
6377
7111
 
6378
7112
  // ../../../shared/src/validators/model-fallbacks.ts
6379
7113
  var agentRuntimeTypes = new Set(AGENT_RUNTIME_TYPES);