@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
@@ -0,0 +1,430 @@
1
+ import { chatAttachments, chatConversations, chatGenerationEvents, chatGenerations, chatMessages, } from "@rudderhq/db";
2
+ import { chatInlineAnnotationsFromStructuredPayload, isInternalChatTranscriptLifecycleEntry, } from "@rudderhq/shared";
3
+ import { withChatTranscriptGenerationProvenance } from "@rudderhq/shared/chat-transcript-provenance";
4
+ import { and, asc, eq, gte, inArray, lte } from "drizzle-orm";
5
+ import { createHash } from "node:crypto";
6
+ import { unprocessable } from "../errors.js";
7
+ import { renderedMarkdownSelectionText } from "./chat-inline-annotation-rendering.js";
8
+ import { renderedMarkdownSelectionTextWithResolvedLabels } from "./chat-inline-annotation-resolved-labels.js";
9
+ import { chatTranscriptFromPayload } from "./chats.helpers.js";
10
+ const STABLE_ANNOTATION_MESSAGE_STATUSES = new Set(["completed", "stopped", "failed"]);
11
+ const STABLE_ANNOTATION_GENERATION_STATUSES = new Set(["completed", "stopped", "failed"]);
12
+ const MAX_PROCESS_ANNOTATION_EVENT_SPAN = 1_000;
13
+ const INTERNAL_RESULT_MARKER_PATTERN = /RUDDER_RESULT_(?:BEGIN|END)|__RUDDER_RESULT_[a-f0-9-]+__/i;
14
+ export function hashChatAnnotationSource(value) {
15
+ return createHash("sha256").update(value, "utf8").digest("hex");
16
+ }
17
+ function assertSourceAnchor(annotation, source) {
18
+ if (annotation.sourceHash !== hashChatAnnotationSource(source)) {
19
+ throw unprocessable("Annotation source hash does not match persisted source");
20
+ }
21
+ if (annotation.start < 0
22
+ || annotation.end <= annotation.start
23
+ || annotation.end > source.length) {
24
+ throw unprocessable("Annotation source range is outside persisted source bounds");
25
+ }
26
+ const actualPrefix = source.slice(Math.max(0, annotation.start - annotation.prefix.length), annotation.start);
27
+ if (actualPrefix !== annotation.prefix) {
28
+ throw unprocessable("Annotation prefix no longer matches persisted source");
29
+ }
30
+ const actualSuffix = source.slice(annotation.end, annotation.end + annotation.suffix.length);
31
+ if (actualSuffix !== annotation.suffix) {
32
+ throw unprocessable("Annotation suffix no longer matches persisted source");
33
+ }
34
+ }
35
+ function processAnnotationSource(entries) {
36
+ let source = "";
37
+ let previous = null;
38
+ for (const entry of entries) {
39
+ if (!previous) {
40
+ source = entry.text;
41
+ }
42
+ else {
43
+ const continuesDelta = previous.delta === true && entry.delta === true;
44
+ source += continuesDelta || source.endsWith("\n") || entry.text.startsWith("\n")
45
+ ? entry.text
46
+ : `\n${entry.text}`;
47
+ }
48
+ previous = entry;
49
+ }
50
+ return source;
51
+ }
52
+ function isExplicitlyHiddenTranscriptEvidence(eventPayload, entry) {
53
+ const visibility = typeof eventPayload.visibility === "string"
54
+ ? eventPayload.visibility.toLowerCase()
55
+ : typeof entry.visibility === "string"
56
+ ? entry.visibility.toLowerCase()
57
+ : "";
58
+ return eventPayload.internal === true
59
+ || eventPayload.hidden === true
60
+ || eventPayload.visible === false
61
+ || entry.internal === true
62
+ || entry.hidden === true
63
+ || entry.visible === false
64
+ || visibility === "internal"
65
+ || visibility === "hidden"
66
+ || visibility === "private";
67
+ }
68
+ async function assertSelectedTextExactlyMatchesRange(query, orgId, annotation, source) {
69
+ const resolvedLabelProjection = await renderedMarkdownSelectionTextWithResolvedLabels(query, {
70
+ orgId,
71
+ source,
72
+ start: annotation.start,
73
+ end: annotation.end,
74
+ });
75
+ const visibleResolvedSelections = resolvedLabelProjection.selections.filter((selection) => /[^\p{White_Space}\u200b\ufeff]/u.test(selection));
76
+ if (visibleResolvedSelections.includes(annotation.selectedText))
77
+ return;
78
+ if (resolvedLabelProjection.overlapsResolvableDynamicLabel) {
79
+ throw unprocessable("Annotation selected text does not exactly match its rendered Markdown source range");
80
+ }
81
+ const expectedSelectedText = renderedMarkdownSelectionText(source, annotation.start, annotation.end);
82
+ const rawRangeContainsVisibleText = expectedSelectedText !== null
83
+ && /[^\p{White_Space}\u200b\ufeff]/u.test(expectedSelectedText);
84
+ if (rawRangeContainsVisibleText
85
+ && annotation.selectedText === expectedSelectedText)
86
+ return;
87
+ if (!rawRangeContainsVisibleText && visibleResolvedSelections.length === 0) {
88
+ throw unprocessable("Annotation source range must contain visible text");
89
+ }
90
+ throw unprocessable("Annotation selected text does not exactly match its rendered Markdown source range");
91
+ }
92
+ function trimTrailingWhitespace(value) {
93
+ return value.replace(/\s+$/g, "");
94
+ }
95
+ function redactAssistantSuffixFromVisibleProjection(entries, hiddenAssistantMessageText) {
96
+ let remaining = trimTrailingWhitespace(hiddenAssistantMessageText);
97
+ if (!remaining)
98
+ return entries;
99
+ const nextEntries = [];
100
+ for (let index = entries.length - 1; index >= 0; index -= 1) {
101
+ const entry = entries[index];
102
+ if (entry.kind !== "assistant" || !remaining) {
103
+ nextEntries.push(entry);
104
+ continue;
105
+ }
106
+ const entryText = trimTrailingWhitespace(entry.text);
107
+ remaining = trimTrailingWhitespace(remaining);
108
+ if (!entryText) {
109
+ nextEntries.push(entry);
110
+ continue;
111
+ }
112
+ if (remaining.endsWith(entryText)) {
113
+ remaining = trimTrailingWhitespace(remaining.slice(0, remaining.length - entryText.length));
114
+ continue;
115
+ }
116
+ if (entryText.endsWith(remaining)) {
117
+ const visibleText = trimTrailingWhitespace(entryText.slice(0, entryText.length - remaining.length));
118
+ remaining = "";
119
+ if (visibleText)
120
+ nextEntries.push({ ...entry, text: visibleText });
121
+ continue;
122
+ }
123
+ nextEntries.push(entry);
124
+ }
125
+ return remaining ? entries : nextEntries.reverse();
126
+ }
127
+ function transcriptEntriesBeforeAssistantTextIndex(entries, endIndex) {
128
+ const visible = [];
129
+ let offset = 0;
130
+ for (const entry of entries) {
131
+ if (entry.kind !== "assistant") {
132
+ visible.push(entry);
133
+ continue;
134
+ }
135
+ const entryEnd = offset + entry.text.length;
136
+ if (entryEnd <= endIndex) {
137
+ visible.push(entry);
138
+ }
139
+ else if (offset < endIndex) {
140
+ const text = trimTrailingWhitespace(entry.text.slice(0, endIndex - offset));
141
+ if (text)
142
+ visible.push({ ...entry, text });
143
+ break;
144
+ }
145
+ else {
146
+ break;
147
+ }
148
+ offset = entryEnd;
149
+ }
150
+ return visible;
151
+ }
152
+ function stripInternalResultProtocolFromVisibleProjection(entries) {
153
+ const filtered = [];
154
+ let assistantGroup = [];
155
+ const flushAssistantGroup = () => {
156
+ if (assistantGroup.length === 0)
157
+ return;
158
+ const markerIndex = assistantGroup
159
+ .filter((entry) => entry.kind === "assistant")
160
+ .map((entry) => entry.text)
161
+ .join("")
162
+ .search(INTERNAL_RESULT_MARKER_PATTERN);
163
+ filtered.push(...(markerIndex < 0
164
+ ? assistantGroup
165
+ : transcriptEntriesBeforeAssistantTextIndex(assistantGroup, markerIndex)));
166
+ assistantGroup = [];
167
+ };
168
+ for (const entry of entries) {
169
+ if (entry.kind === "assistant") {
170
+ assistantGroup.push(entry);
171
+ continue;
172
+ }
173
+ if (assistantGroup.length > 0
174
+ && entry.kind === "system"
175
+ && isInternalChatTranscriptLifecycleEntry(entry)) {
176
+ assistantGroup.push(entry);
177
+ continue;
178
+ }
179
+ flushAssistantGroup();
180
+ filtered.push(entry);
181
+ }
182
+ flushAssistantGroup();
183
+ return filtered;
184
+ }
185
+ function visibleChatTranscriptProjection(entries, hiddenAssistantMessageText) {
186
+ return stripInternalResultProtocolFromVisibleProjection(redactAssistantSuffixFromVisibleProjection(entries, hiddenAssistantMessageText));
187
+ }
188
+ function annotationSnapshotsAreSemanticallyIdentical(incoming, persisted) {
189
+ if (incoming.length !== persisted.length)
190
+ return false;
191
+ return incoming.every((annotation, index) => {
192
+ const expected = persisted[index];
193
+ if (!expected)
194
+ return false;
195
+ if (annotation.id !== expected.id
196
+ || annotation.surface !== expected.surface
197
+ || annotation.selectedText !== expected.selectedText
198
+ || (annotation.comment ?? null) !== (expected.comment ?? null)
199
+ || annotation.sourceConversationId !== expected.sourceConversationId
200
+ || annotation.sourceMessageId !== expected.sourceMessageId
201
+ || annotation.sourceHash !== expected.sourceHash
202
+ || annotation.start !== expected.start
203
+ || annotation.end !== expected.end
204
+ || annotation.prefix !== expected.prefix
205
+ || annotation.suffix !== expected.suffix
206
+ || annotation.attachmentIds.length !== expected.attachmentIds.length
207
+ || annotation.attachmentIds.some((attachmentId, attachmentIndex) => attachmentId !== expected.attachmentIds[attachmentIndex])) {
208
+ return false;
209
+ }
210
+ if (annotation.surface === "assistant_body") {
211
+ return expected.surface === "assistant_body";
212
+ }
213
+ return expected.surface === "process_transcript"
214
+ && annotation.transcriptKind === expected.transcriptKind
215
+ && annotation.generationId === expected.generationId
216
+ && annotation.generationSeqStart === expected.generationSeqStart
217
+ && annotation.generationSeqEnd === expected.generationSeqEnd;
218
+ });
219
+ }
220
+ async function validateHistoricalAnnotationSnapshot(query, input) {
221
+ if (!input.editUserMessageId)
222
+ return null;
223
+ const target = await query
224
+ .select()
225
+ .from(chatMessages)
226
+ .where(eq(chatMessages.id, input.editUserMessageId))
227
+ .limit(1)
228
+ .for("share")
229
+ .then((rows) => rows[0] ?? null);
230
+ if (!target
231
+ || target.orgId !== input.orgId
232
+ || target.conversationId !== input.conversationId
233
+ || target.role !== "user"
234
+ || target.kind !== "message"
235
+ || target.supersededAt) {
236
+ throw unprocessable("Edited annotation message must be a visible user message in this conversation");
237
+ }
238
+ const targetAnnotations = chatInlineAnnotationsFromStructuredPayload(target.structuredPayload);
239
+ if (!annotationSnapshotsAreSemanticallyIdentical(input.annotations, targetAnnotations)) {
240
+ throw unprocessable("Sent annotation snapshots are immutable across historical edits and retries");
241
+ }
242
+ const addsAnnotationFiles = [...(input.attachmentFileIndexesByAnnotationId?.values() ?? [])]
243
+ .some((indexes) => indexes.length > 0);
244
+ if (addsAnnotationFiles) {
245
+ throw unprocessable("Sent annotation snapshots are immutable and cannot accept new annotation files");
246
+ }
247
+ return target;
248
+ }
249
+ async function validateExistingAttachmentOwnership(query, input, target) {
250
+ const attachmentIds = input.annotations.flatMap((annotation) => annotation.attachmentIds);
251
+ if (attachmentIds.length === 0)
252
+ return;
253
+ if (!target) {
254
+ throw unprocessable("Existing annotation attachments require an edited user message");
255
+ }
256
+ const ownedIds = await query
257
+ .select({ id: chatAttachments.id })
258
+ .from(chatAttachments)
259
+ .where(and(eq(chatAttachments.orgId, input.orgId), eq(chatAttachments.conversationId, input.conversationId), eq(chatAttachments.messageId, target.id), inArray(chatAttachments.id, attachmentIds)))
260
+ .for("share");
261
+ if (ownedIds.length !== attachmentIds.length) {
262
+ throw unprocessable("Annotation attachments must belong to the edited user message");
263
+ }
264
+ }
265
+ async function validateSourceMessage(query, input) {
266
+ const sameConversation = input.annotation.sourceConversationId === input.conversationId;
267
+ const exactSideChatParentAnchor = input.targetConversation.conversationKind === "side_chat"
268
+ && input.targetConversation.forkedFromConversationId
269
+ === input.annotation.sourceConversationId
270
+ && input.targetConversation.forkedFromMessageId === input.annotation.sourceMessageId;
271
+ if (!sameConversation && !exactSideChatParentAnchor) {
272
+ throw unprocessable("Annotation source must match the target conversation or its exact Side Chat parent anchor");
273
+ }
274
+ const source = await query
275
+ .select()
276
+ .from(chatMessages)
277
+ .where(eq(chatMessages.id, input.annotation.sourceMessageId))
278
+ .limit(1)
279
+ .for("share")
280
+ .then((rows) => rows[0] ?? null);
281
+ if (!source
282
+ || source.orgId !== input.orgId
283
+ || source.conversationId !== input.annotation.sourceConversationId) {
284
+ throw unprocessable("Annotation source message must belong to the conversation and organization");
285
+ }
286
+ if (source.role !== "assistant" || source.kind !== "message") {
287
+ throw unprocessable("Annotation source must be an assistant response");
288
+ }
289
+ if (exactSideChatParentAnchor
290
+ ? source.status !== "completed"
291
+ : !STABLE_ANNOTATION_MESSAGE_STATUSES.has(source.status)) {
292
+ if (exactSideChatParentAnchor) {
293
+ throw unprocessable("Side Chat annotation source must be its completed parent assistant anchor");
294
+ }
295
+ throw unprocessable("Annotation source must have a stable completed, stopped, or failed status");
296
+ }
297
+ if (source.supersededAt) {
298
+ throw unprocessable("Annotation source must remain visible in the active conversation branch");
299
+ }
300
+ return source;
301
+ }
302
+ async function validateProcessAnnotation(query, input) {
303
+ const generation = await query
304
+ .select()
305
+ .from(chatGenerations)
306
+ .where(eq(chatGenerations.id, input.annotation.generationId))
307
+ .limit(1)
308
+ .for("share")
309
+ .then((rows) => rows[0] ?? null);
310
+ if (!generation
311
+ || generation.orgId !== input.orgId
312
+ || generation.conversationId !== input.conversationId) {
313
+ throw unprocessable("Annotation generation must belong to the source conversation and organization");
314
+ }
315
+ if (!STABLE_ANNOTATION_GENERATION_STATUSES.has(generation.status)) {
316
+ throw unprocessable("Process annotation generation must be terminal");
317
+ }
318
+ const eventSpan = input.annotation.generationSeqEnd - input.annotation.generationSeqStart + 1;
319
+ if (eventSpan <= 0 || eventSpan > MAX_PROCESS_ANNOTATION_EVENT_SPAN) {
320
+ throw unprocessable("Process annotation evidence range is invalid or too large");
321
+ }
322
+ const events = await query
323
+ .select()
324
+ .from(chatGenerationEvents)
325
+ .where(and(eq(chatGenerationEvents.orgId, input.orgId), eq(chatGenerationEvents.generationId, generation.id), gte(chatGenerationEvents.generationSeq, input.annotation.generationSeqStart), lte(chatGenerationEvents.generationSeq, input.annotation.generationSeqEnd)))
326
+ .orderBy(asc(chatGenerationEvents.generationSeq))
327
+ .for("share");
328
+ if (events.length !== eventSpan
329
+ || events[0]?.generationSeq !== input.annotation.generationSeqStart
330
+ || events.at(-1)?.generationSeq !== input.annotation.generationSeqEnd) {
331
+ throw unprocessable("Process annotation evidence is missing from the declared generation range");
332
+ }
333
+ const textEntries = [];
334
+ for (const event of events) {
335
+ const rawEntry = event.payload.entry;
336
+ if (event.eventKind !== "transcript"
337
+ || event.assistantMessageId !== input.sourceMessage.id
338
+ || !rawEntry
339
+ || typeof rawEntry !== "object"
340
+ || Array.isArray(rawEntry)) {
341
+ throw unprocessable("Process annotation range must contain only visible transcript evidence");
342
+ }
343
+ const entry = rawEntry;
344
+ if (isExplicitlyHiddenTranscriptEvidence(event.payload, entry)
345
+ || entry.kind !== input.annotation.transcriptKind
346
+ || (entry.kind !== "assistant" && entry.kind !== "thinking")
347
+ || typeof entry.text !== "string"
348
+ || entry.text.trim().length === 0) {
349
+ throw unprocessable("Process annotation range must contain only visible assistant or thinking prose");
350
+ }
351
+ textEntries.push(withChatTranscriptGenerationProvenance({
352
+ kind: entry.kind,
353
+ ts: typeof entry.ts === "string" ? entry.ts : event.recordedAt.toISOString(),
354
+ text: entry.text,
355
+ ...(entry.delta === true ? { delta: true } : {}),
356
+ }, { generationId: generation.id, generationSeq: event.generationSeq }));
357
+ }
358
+ const source = processAnnotationSource(textEntries);
359
+ const projectedEntries = chatTranscriptFromPayload(input.sourceMessage.structuredPayload);
360
+ const projectedEntry = projectedEntries
361
+ .find((entry) => entry.kind === input.annotation.transcriptKind
362
+ && entry.generationId === generation.id
363
+ && entry.generationSeqStart === input.annotation.generationSeqStart
364
+ && entry.generationSeqEnd === input.annotation.generationSeqEnd
365
+ && entry.text === source);
366
+ if (!projectedEntry) {
367
+ throw unprocessable("Process annotation evidence is not present in the visible message projection");
368
+ }
369
+ const visibleEntry = visibleChatTranscriptProjection(projectedEntries, input.sourceMessage.body).find((entry) => (entry.kind === "assistant" || entry.kind === "thinking")
370
+ && entry.kind === input.annotation.transcriptKind
371
+ && entry.generationId === generation.id
372
+ && entry.generationSeqStart === input.annotation.generationSeqStart
373
+ && entry.generationSeqEnd === input.annotation.generationSeqEnd);
374
+ if (!visibleEntry
375
+ || annotationRangeFallsOutsideVisibleProjection(input.annotation, visibleEntry.text)) {
376
+ throw unprocessable("Process annotation evidence is not present in the visible message projection");
377
+ }
378
+ return visibleEntry.text;
379
+ }
380
+ function annotationRangeFallsOutsideVisibleProjection(annotation, source) {
381
+ return annotation.start < 0
382
+ || annotation.end <= annotation.start
383
+ || annotation.end > source.length;
384
+ }
385
+ export async function validateCanonicalChatInlineAnnotations(query, input) {
386
+ const targetConversation = await query
387
+ .select()
388
+ .from(chatConversations)
389
+ .where(and(eq(chatConversations.id, input.conversationId), eq(chatConversations.orgId, input.orgId)))
390
+ .limit(1)
391
+ .for("share")
392
+ .then((rows) => rows[0] ?? null);
393
+ if (!targetConversation) {
394
+ throw unprocessable("Annotation target conversation must belong to the organization");
395
+ }
396
+ for (const annotation of input.annotations) {
397
+ const indexes = input.attachmentFileIndexesByAnnotationId?.get(annotation.id) ?? [];
398
+ for (const fileIndex of indexes) {
399
+ if (fileIndex < 0 || fileIndex >= input.uploadedFileCount) {
400
+ throw unprocessable("Annotation file index does not match an uploaded file");
401
+ }
402
+ }
403
+ }
404
+ const editTarget = await validateHistoricalAnnotationSnapshot(query, input);
405
+ await validateExistingAttachmentOwnership(query, input, editTarget);
406
+ if (editTarget)
407
+ return;
408
+ for (const annotation of input.annotations) {
409
+ const source = await validateSourceMessage(query, {
410
+ orgId: input.orgId,
411
+ conversationId: input.conversationId,
412
+ targetConversation,
413
+ annotation,
414
+ });
415
+ const anchorSource = annotation.surface === "assistant_body"
416
+ ? source.body
417
+ : await validateProcessAnnotation(query, {
418
+ orgId: input.orgId,
419
+ conversationId: annotation.sourceConversationId,
420
+ annotation,
421
+ sourceMessage: source,
422
+ });
423
+ assertSourceAnchor(annotation, anchorSource);
424
+ await assertSelectedTextExactlyMatchesRange(query, input.orgId, annotation, anchorSource);
425
+ }
426
+ }
427
+ export function asChatInlineAnnotationValidationQuery(db) {
428
+ return db;
429
+ }
430
+ //# sourceMappingURL=chat-inline-annotation-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-inline-annotation-validation.js","sourceRoot":"","sources":["../../src/services/chat-inline-annotation-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Db } from "@rudderhq/db";
2
+ import { type ChatInlineAnnotation, type ChatInlineAnnotationInput } from "@rudderhq/shared";
3
+ export { hashChatAnnotationSource } from "./chat-inline-annotation-validation.js";
4
+ export type PreparedChatInlineAnnotations = {
5
+ annotations: ChatInlineAnnotation[];
6
+ attachmentFileIndexesByAnnotationId: Map<string, number[]>;
7
+ };
8
+ export declare function bindPreparedChatInlineAnnotationFiles(prepared: PreparedChatInlineAnnotations, reboundAnnotations: readonly ChatInlineAnnotation[], uploadedAttachmentIds: readonly string[]): ChatInlineAnnotation[];
9
+ export declare function chatInlineAnnotationService(db: Db): {
10
+ prepare: (input: {
11
+ orgId: string;
12
+ conversationId: string;
13
+ annotations: readonly ChatInlineAnnotationInput[];
14
+ uploadedFileCount: number;
15
+ editUserMessageId?: string | null;
16
+ }) => Promise<PreparedChatInlineAnnotations>;
17
+ };
18
+ //# sourceMappingURL=chat-inline-annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-inline-annotations.d.ts","sourceRoot":"","sources":["../../src/services/chat-inline-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,mCAAmC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5D,CAAC;AAEF,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,6BAA6B,EACvC,kBAAkB,EAAE,SAAS,oBAAoB,EAAE,EACnD,qBAAqB,EAAE,SAAS,MAAM,EAAE,GACvC,oBAAoB,EAAE,CAqBxB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,EAAE;qBAClB;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;QAClD,iBAAiB,EAAE,MAAM,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC,KAAG,OAAO,CAAC,6BAA6B,CAAC;EA2B3C"}
@@ -0,0 +1,52 @@
1
+ import { chatInlineAnnotationsSchema, normalizeChatInlineAnnotations, } from "@rudderhq/shared";
2
+ import { unprocessable } from "../errors.js";
3
+ import { asChatInlineAnnotationValidationQuery, validateCanonicalChatInlineAnnotations, } from "./chat-inline-annotation-validation.js";
4
+ export { hashChatAnnotationSource } from "./chat-inline-annotation-validation.js";
5
+ export function bindPreparedChatInlineAnnotationFiles(prepared, reboundAnnotations, uploadedAttachmentIds) {
6
+ const reboundById = new Map(reboundAnnotations.map((annotation) => [annotation.id, annotation]));
7
+ const bound = prepared.annotations.map((preparedAnnotation) => {
8
+ const rebound = reboundById.get(preparedAnnotation.id);
9
+ if (!rebound) {
10
+ throw unprocessable("Prepared annotation identity no longer matches the persisted message");
11
+ }
12
+ const fileIndexes = prepared.attachmentFileIndexesByAnnotationId.get(preparedAnnotation.id) ?? [];
13
+ const fileAttachmentIds = fileIndexes.map((fileIndex) => {
14
+ const attachmentId = uploadedAttachmentIds[fileIndex];
15
+ if (!attachmentId) {
16
+ throw unprocessable("Annotation file index could not be bound to an uploaded attachment");
17
+ }
18
+ return attachmentId;
19
+ });
20
+ return {
21
+ ...rebound,
22
+ attachmentIds: [...rebound.attachmentIds, ...fileAttachmentIds],
23
+ };
24
+ });
25
+ return chatInlineAnnotationsSchema.parse(bound);
26
+ }
27
+ export function chatInlineAnnotationService(db) {
28
+ async function prepare(input) {
29
+ const annotations = normalizeChatInlineAnnotations(input.annotations);
30
+ const attachmentFileIndexesByAnnotationId = new Map();
31
+ input.annotations.forEach((annotation) => {
32
+ const indexes = annotation.attachmentFileIndexes ?? [];
33
+ for (const fileIndex of indexes) {
34
+ if (fileIndex < 0 || fileIndex >= input.uploadedFileCount) {
35
+ throw unprocessable("Annotation file index does not match an uploaded file");
36
+ }
37
+ }
38
+ attachmentFileIndexesByAnnotationId.set(annotation.id, [...indexes]);
39
+ });
40
+ await validateCanonicalChatInlineAnnotations(asChatInlineAnnotationValidationQuery(db), {
41
+ orgId: input.orgId,
42
+ conversationId: input.conversationId,
43
+ editUserMessageId: input.editUserMessageId,
44
+ annotations,
45
+ uploadedFileCount: input.uploadedFileCount,
46
+ attachmentFileIndexesByAnnotationId,
47
+ });
48
+ return { annotations, attachmentFileIndexesByAnnotationId };
49
+ }
50
+ return { prepare };
51
+ }
52
+ //# sourceMappingURL=chat-inline-annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-inline-annotations.js","sourceRoot":"","sources":["../../src/services/chat-inline-annotations.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAG/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,qCAAqC,EACrC,sCAAsC,GACvC,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAOlF,MAAM,UAAU,qCAAqC,CACnD,QAAuC,EACvC,kBAAmD,EACnD,qBAAwC;IAExC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,aAAa,CAAC,sEAAsE,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,mCAAmC,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAClG,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACtD,MAAM,YAAY,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,aAAa,CAAC,oEAAoE,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO;YACL,GAAG,OAAO;YACV,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,GAAG,iBAAiB,CAAC;SAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAAM;IAChD,KAAK,UAAU,OAAO,CAAC,KAMtB;QACC,MAAM,WAAW,GAAG,8BAA8B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,mCAAmC,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,IAAI,EAAE,CAAC;YACvD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;gBAChC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC1D,MAAM,aAAa,CAAC,uDAAuD,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;YACD,mCAAmC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,MAAM,sCAAsC,CAC1C,qCAAqC,CAAC,EAAE,CAAC,EACzC;YACE,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,WAAW;YACX,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,mCAAmC;SACpC,CACF,CAAC;QACF,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAC9D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-inline-annotations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-inline-annotations.test.d.ts","sourceRoot":"","sources":["../../src/services/chat-inline-annotations.test.ts"],"names":[],"mappings":""}