@rudderhq/server 0.5.0 → 0.5.1

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 (352) hide show
  1. package/dist/agent-runtimes/http/execute.d.ts.map +1 -1
  2. package/dist/agent-runtimes/http/execute.js +56 -1
  3. package/dist/agent-runtimes/http/execute.js.map +1 -1
  4. package/dist/agent-runtimes/http/index.d.ts.map +1 -1
  5. package/dist/agent-runtimes/http/index.js +10 -0
  6. package/dist/agent-runtimes/http/index.js.map +1 -1
  7. package/dist/agent-runtimes/process/execute.d.ts.map +1 -1
  8. package/dist/agent-runtimes/process/execute.js +9 -1
  9. package/dist/agent-runtimes/process/execute.js.map +1 -1
  10. package/dist/agent-runtimes/process/index.d.ts.map +1 -1
  11. package/dist/agent-runtimes/process/index.js +7 -0
  12. package/dist/agent-runtimes/process/index.js.map +1 -1
  13. package/dist/agent-runtimes/registry.d.ts.map +1 -1
  14. package/dist/agent-runtimes/registry.js +21 -1
  15. package/dist/agent-runtimes/registry.js.map +1 -1
  16. package/dist/agent-runtimes/utils.d.ts +1 -0
  17. package/dist/agent-runtimes/utils.d.ts.map +1 -1
  18. package/dist/agent-runtimes/utils.js.map +1 -1
  19. package/dist/bundled-plugins/plugin-linear/dist/worker.js +183 -10
  20. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +3 -3
  21. package/dist/home-paths.d.ts +7 -0
  22. package/dist/home-paths.d.ts.map +1 -1
  23. package/dist/home-paths.js +46 -2
  24. package/dist/home-paths.js.map +1 -1
  25. package/dist/index.js +23 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/routes/access.d.ts.map +1 -1
  28. package/dist/routes/access.helpers.d.ts +1 -1
  29. package/dist/routes/access.helpers.d.ts.map +1 -1
  30. package/dist/routes/access.helpers.js +0 -3
  31. package/dist/routes/access.helpers.js.map +1 -1
  32. package/dist/routes/access.js +0 -4
  33. package/dist/routes/access.js.map +1 -1
  34. package/dist/routes/agents.js +2 -2
  35. package/dist/routes/agents.js.map +1 -1
  36. package/dist/routes/chats.d.ts.map +1 -1
  37. package/dist/routes/chats.generated-attachments.d.ts +16 -0
  38. package/dist/routes/chats.generated-attachments.d.ts.map +1 -0
  39. package/dist/routes/chats.generated-attachments.js +157 -0
  40. package/dist/routes/chats.generated-attachments.js.map +1 -0
  41. package/dist/routes/chats.helpers.d.ts +27 -0
  42. package/dist/routes/chats.helpers.d.ts.map +1 -0
  43. package/dist/routes/chats.helpers.js +52 -0
  44. package/dist/routes/chats.helpers.js.map +1 -0
  45. package/dist/routes/chats.js +126 -188
  46. package/dist/routes/chats.js.map +1 -1
  47. package/dist/routes/chats.stream-routes.d.ts.map +1 -1
  48. package/dist/routes/chats.stream-routes.js +185 -16
  49. package/dist/routes/chats.stream-routes.js.map +1 -1
  50. package/dist/routes/llms.js +3 -3
  51. package/dist/routes/llms.js.map +1 -1
  52. package/dist/routes/messenger.d.ts.map +1 -1
  53. package/dist/routes/messenger.js +48 -6
  54. package/dist/routes/messenger.js.map +1 -1
  55. package/dist/services/activity.d.ts.map +1 -1
  56. package/dist/services/activity.js +7 -2
  57. package/dist/services/activity.js.map +1 -1
  58. package/dist/services/agents.d.ts +65 -65
  59. package/dist/services/agents.d.ts.map +1 -1
  60. package/dist/services/agents.js +5 -4
  61. package/dist/services/agents.js.map +1 -1
  62. package/dist/services/approvals.d.ts +1 -1
  63. package/dist/services/assets.d.ts +2 -2
  64. package/dist/services/automation-chat-output.d.ts +1 -1
  65. package/dist/services/automation-chat-output.d.ts.map +1 -1
  66. package/dist/services/automation-chat-output.js +38 -23
  67. package/dist/services/automation-chat-output.js.map +1 -1
  68. package/dist/services/automations.d.ts.map +1 -1
  69. package/dist/services/automations.js +39 -41
  70. package/dist/services/automations.js.map +1 -1
  71. package/dist/services/budgets.d.ts +1 -1
  72. package/dist/services/chat-assistant.d.ts +23 -1
  73. package/dist/services/chat-assistant.d.ts.map +1 -1
  74. package/dist/services/chat-assistant.helpers.d.ts +21 -0
  75. package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
  76. package/dist/services/chat-assistant.helpers.js +29 -10
  77. package/dist/services/chat-assistant.helpers.js.map +1 -1
  78. package/dist/services/chat-assistant.inline-visuals.d.ts +23 -0
  79. package/dist/services/chat-assistant.inline-visuals.d.ts.map +1 -0
  80. package/dist/services/chat-assistant.inline-visuals.js +129 -0
  81. package/dist/services/chat-assistant.inline-visuals.js.map +1 -0
  82. package/dist/services/chat-assistant.inline-visuals.test.js +85 -1
  83. package/dist/services/chat-assistant.inline-visuals.test.js.map +1 -1
  84. package/dist/services/chat-assistant.js +262 -38
  85. package/dist/services/chat-assistant.js.map +1 -1
  86. package/dist/services/chat-family-groups.d.ts +14 -0
  87. package/dist/services/chat-family-groups.d.ts.map +1 -0
  88. package/dist/services/chat-family-groups.js +96 -0
  89. package/dist/services/chat-family-groups.js.map +1 -0
  90. package/dist/services/chat-generation-protocol.d.ts +17 -31
  91. package/dist/services/chat-generation-protocol.d.ts.map +1 -1
  92. package/dist/services/chat-generation-protocol.helpers.d.ts +36 -0
  93. package/dist/services/chat-generation-protocol.helpers.d.ts.map +1 -0
  94. package/dist/services/chat-generation-protocol.helpers.js +53 -0
  95. package/dist/services/chat-generation-protocol.helpers.js.map +1 -0
  96. package/dist/services/chat-generation-protocol.js +86 -55
  97. package/dist/services/chat-generation-protocol.js.map +1 -1
  98. package/dist/services/chat-generation-protocol.test.js +31 -3
  99. package/dist/services/chat-generation-protocol.test.js.map +1 -1
  100. package/dist/services/chat-steer-messages.d.ts +117 -0
  101. package/dist/services/chat-steer-messages.d.ts.map +1 -0
  102. package/dist/services/chat-steer-messages.js +410 -0
  103. package/dist/services/chat-steer-messages.js.map +1 -0
  104. package/dist/services/chat-title-generation.d.ts +1 -0
  105. package/dist/services/chat-title-generation.d.ts.map +1 -1
  106. package/dist/services/chat-title-generation.js +12 -9
  107. package/dist/services/chat-title-generation.js.map +1 -1
  108. package/dist/services/chat-work-manifest.d.ts.map +1 -1
  109. package/dist/services/chat-work-manifest.js +39 -2
  110. package/dist/services/chat-work-manifest.js.map +1 -1
  111. package/dist/services/chats.constants.d.ts +5 -0
  112. package/dist/services/chats.constants.d.ts.map +1 -0
  113. package/dist/services/chats.constants.js +13 -0
  114. package/dist/services/chats.constants.js.map +1 -0
  115. package/dist/services/chats.create.d.ts +75 -0
  116. package/dist/services/chats.create.d.ts.map +1 -0
  117. package/dist/services/chats.create.js +159 -0
  118. package/dist/services/chats.create.js.map +1 -0
  119. package/dist/services/chats.d.ts +85 -76
  120. package/dist/services/chats.d.ts.map +1 -1
  121. package/dist/services/chats.fork-helpers.d.ts +8 -0
  122. package/dist/services/chats.fork-helpers.d.ts.map +1 -0
  123. package/dist/services/chats.fork-helpers.js +45 -0
  124. package/dist/services/chats.fork-helpers.js.map +1 -0
  125. package/dist/services/chats.inline-visual-persistence.d.ts +30 -0
  126. package/dist/services/chats.inline-visual-persistence.d.ts.map +1 -0
  127. package/dist/services/chats.inline-visual-persistence.js +209 -0
  128. package/dist/services/chats.inline-visual-persistence.js.map +1 -0
  129. package/dist/services/chats.js +288 -273
  130. package/dist/services/chats.js.map +1 -1
  131. package/dist/services/chats.types.d.ts +31 -0
  132. package/dist/services/chats.types.d.ts.map +1 -0
  133. package/dist/services/chats.types.js +2 -0
  134. package/dist/services/chats.types.js.map +1 -0
  135. package/dist/services/integrations/feishu/inbound-dispatcher-db.d.ts.map +1 -1
  136. package/dist/services/integrations/feishu/inbound-dispatcher-db.js +81 -53
  137. package/dist/services/integrations/feishu/inbound-dispatcher-db.js.map +1 -1
  138. package/dist/services/integrations/feishu/inbound-dispatcher.d.ts +1 -0
  139. package/dist/services/integrations/feishu/inbound-dispatcher.d.ts.map +1 -1
  140. package/dist/services/integrations/feishu/inbound-dispatcher.js.map +1 -1
  141. package/dist/services/issues.comments-attachments.d.ts.map +1 -1
  142. package/dist/services/issues.comments-attachments.js +11 -2
  143. package/dist/services/issues.comments-attachments.js.map +1 -1
  144. package/dist/services/issues.d.ts.map +1 -1
  145. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts.map +1 -1
  146. package/dist/services/knowledge-portability/organization-skills.catalog.js +7 -1
  147. package/dist/services/knowledge-portability/organization-skills.catalog.js.map +1 -1
  148. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
  149. package/dist/services/knowledge-portability/organization-skills.js +13 -1
  150. package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
  151. package/dist/services/messenger-run-origin.d.ts +18 -0
  152. package/dist/services/messenger-run-origin.d.ts.map +1 -0
  153. package/dist/services/messenger-run-origin.js +248 -0
  154. package/dist/services/messenger-run-origin.js.map +1 -0
  155. package/dist/services/messenger-run-summary.d.ts +4 -0
  156. package/dist/services/messenger-run-summary.d.ts.map +1 -0
  157. package/dist/services/messenger-run-summary.js +6 -0
  158. package/dist/services/messenger-run-summary.js.map +1 -0
  159. package/dist/services/messenger-saved-views.d.ts +133 -0
  160. package/dist/services/messenger-saved-views.d.ts.map +1 -0
  161. package/dist/services/messenger-saved-views.js +275 -0
  162. package/dist/services/messenger-saved-views.js.map +1 -0
  163. package/dist/services/messenger.d.ts +17 -3
  164. package/dist/services/messenger.d.ts.map +1 -1
  165. package/dist/services/messenger.js +276 -56
  166. package/dist/services/messenger.js.map +1 -1
  167. package/dist/services/operator-event-visibility.d.ts +3 -0
  168. package/dist/services/operator-event-visibility.d.ts.map +1 -0
  169. package/dist/services/operator-event-visibility.js +5 -0
  170. package/dist/services/operator-event-visibility.js.map +1 -0
  171. package/dist/services/orgs.d.ts +5 -5
  172. package/dist/services/plugin-registry.d.ts +4 -4
  173. package/dist/services/projects.d.ts +2 -2
  174. package/dist/services/run-intelligence.d.ts.map +1 -1
  175. package/dist/services/run-intelligence.js +7 -3
  176. package/dist/services/run-intelligence.js.map +1 -1
  177. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  178. package/dist/services/runtime-kernel/heartbeat.core.js +9 -8
  179. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  180. package/dist/services/runtime-kernel/heartbeat.d.ts +2 -2
  181. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  182. package/dist/services/runtime-kernel/heartbeat.js +3 -2
  183. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  184. package/dist/services/runtime-kernel/heartbeat.misc.js +1 -1
  185. package/dist/services/runtime-kernel/heartbeat.misc.js.map +1 -1
  186. package/dist/services/runtime-kernel/heartbeat.recovery.js +1 -1
  187. package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
  188. package/dist/services/side-chats.d.ts +1 -46
  189. package/dist/services/side-chats.d.ts.map +1 -1
  190. package/dist/services/side-chats.js +58 -65
  191. package/dist/services/side-chats.js.map +1 -1
  192. package/dist/services/title-generation.d.ts +3 -0
  193. package/dist/services/title-generation.d.ts.map +1 -1
  194. package/dist/services/title-generation.js +178 -6
  195. package/dist/services/title-generation.js.map +1 -1
  196. package/dist/services/workspace-backups.d.ts +19 -8
  197. package/dist/services/workspace-backups.d.ts.map +1 -1
  198. package/dist/services/workspace-backups.js +335 -127
  199. package/dist/services/workspace-backups.js.map +1 -1
  200. package/package.json +14 -13
  201. package/resources/bundled-skills/browser/references/tool-contract.md +2 -2
  202. package/resources/bundled-skills/rudder-docs/SKILL.md +20 -4
  203. package/resources/bundled-skills/rudder-docs/evals/retrieval-authority-evals.json +262 -0
  204. package/resources/bundled-skills/rudder-docs/evals/trigger-evals.json +11 -11
  205. package/resources/bundled-skills/rudder-docs/references/agent-creation.md +153 -0
  206. package/resources/bundled-skills/rudder-docs/references/api-reference.md +9 -2
  207. package/resources/bundled-skills/rudder-docs/references/cli-reference.md +12 -12
  208. package/{skills/rudder-docs/references/control-plane-practices.md → resources/bundled-skills/rudder-docs/references/operating-practices.md} +4 -4
  209. package/resources/bundled-skills/rudder-docs/references/organization-skills.md +3 -3
  210. package/resources/bundled-skills/rudder-docs/references/plugin-authoring.md +116 -0
  211. package/resources/bundled-skills/rudder-docs/references/source-map.md +26 -2
  212. package/resources/bundled-skills/visualize/SKILL.md +29 -27
  213. package/resources/bundled-skills/visualize/references/runtime-contract.md +18 -8
  214. package/skills/browser/references/tool-contract.md +2 -2
  215. package/skills/rudder-docs/SKILL.md +20 -4
  216. package/skills/rudder-docs/evals/retrieval-authority-evals.json +262 -0
  217. package/skills/rudder-docs/evals/trigger-evals.json +11 -11
  218. package/skills/rudder-docs/references/agent-creation.md +153 -0
  219. package/skills/rudder-docs/references/api-reference.md +9 -2
  220. package/skills/rudder-docs/references/cli-reference.md +12 -12
  221. package/{resources/bundled-skills/rudder-docs/references/control-plane-practices.md → skills/rudder-docs/references/operating-practices.md} +4 -4
  222. package/skills/rudder-docs/references/organization-skills.md +3 -3
  223. package/skills/rudder-docs/references/plugin-authoring.md +116 -0
  224. package/skills/rudder-docs/references/source-map.md +26 -2
  225. package/skills/visualize/SKILL.md +29 -27
  226. package/skills/visualize/references/runtime-contract.md +18 -8
  227. package/ui-dist/assets/{abnfDiagram-VRR7QNED-Dpnx79fp.js → abnfDiagram-VRR7QNED-CAAPm9Nj.js} +1 -1
  228. package/ui-dist/assets/{arc-Cpvh_rCf.js → arc-DOFoNr3M.js} +1 -1
  229. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-sDD_mBAI.js → architectureDiagram-ZJ3FMSHR-DRg6yhG8.js} +1 -1
  230. package/ui-dist/assets/{blockDiagram-677ZJIJ3-4O4wWti1.js → blockDiagram-677ZJIJ3-e3ShzsXT.js} +1 -1
  231. package/ui-dist/assets/{c4Diagram-LMCZKHZV-BkGODE4P.js → c4Diagram-LMCZKHZV-Csd_18O2.js} +1 -1
  232. package/ui-dist/assets/channel-BFLsBJOK.js +1 -0
  233. package/ui-dist/assets/{chunk-2Q5K7J3B-DsDQQpID.js → chunk-2Q5K7J3B-eF77FV1C.js} +1 -1
  234. package/ui-dist/assets/{chunk-32BRIVSS-Bzx_VnIw.js → chunk-32BRIVSS-CpMx72B5.js} +1 -1
  235. package/ui-dist/assets/{chunk-5VM5RSS4-D4LoPCni.js → chunk-5VM5RSS4-Be6WylCu.js} +1 -1
  236. package/ui-dist/assets/{chunk-EX3LRPZG-BO0R-mS4.js → chunk-EX3LRPZG-D-A_TfL-.js} +1 -1
  237. package/ui-dist/assets/{chunk-JWPE2WC7-B4Nr8KRL.js → chunk-JWPE2WC7-CdBLDqvo.js} +1 -1
  238. package/ui-dist/assets/{chunk-MOJQB5TN--uaDDrYM.js → chunk-MOJQB5TN-DkLjRENV.js} +1 -1
  239. package/ui-dist/assets/{chunk-RYQCIY6F-CyBY2w_j.js → chunk-RYQCIY6F-57VqTsE9.js} +1 -1
  240. package/ui-dist/assets/{chunk-V7JOEXUC-BMid_x8S.js → chunk-V7JOEXUC-DI_m8pt6.js} +1 -1
  241. package/ui-dist/assets/{chunk-VR4S4FIN-DVqdPKuG.js → chunk-VR4S4FIN-CM_944j4.js} +1 -1
  242. package/ui-dist/assets/{chunk-XXDRQBXY-vy03lLSS.js → chunk-XXDRQBXY--WTAlt82.js} +1 -1
  243. package/ui-dist/assets/classDiagram-OUVF2IWQ-Dah6C4Dl.js +1 -0
  244. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-Dah6C4Dl.js +1 -0
  245. package/ui-dist/assets/{cose-bilkent-JH36ORCC-jQDZmrG3.js → cose-bilkent-JH36ORCC-CR0qu31s.js} +1 -1
  246. package/ui-dist/assets/{cynefin-VYW2F7L2-BxBj6aea.js → cynefin-VYW2F7L2-f41lF5RD.js} +1 -1
  247. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-BuUubF5I.js → cynefinDiagram-TSTJHNR4-88wJ2LA8.js} +1 -1
  248. package/ui-dist/assets/{dagre-VKFMJZFB-B8HipJ3a.js → dagre-VKFMJZFB-B1yJCIRh.js} +1 -1
  249. package/ui-dist/assets/{diagram-FQU43EPY-r7gkbKSt.js → diagram-FQU43EPY-C0iYYFUe.js} +1 -1
  250. package/ui-dist/assets/{diagram-G47NLZAW-CxClRsxD.js → diagram-G47NLZAW-Cp6S0siK.js} +1 -1
  251. package/ui-dist/assets/{diagram-NH7WQ7WH-C8HYTLlq.js → diagram-NH7WQ7WH-CmZb5OSk.js} +1 -1
  252. package/ui-dist/assets/{diagram-OA4YK3LP-CjwqqLKz.js → diagram-OA4YK3LP-9rFYGY7H.js} +1 -1
  253. package/ui-dist/assets/{diagram-WEI45ONY-2IWfCqZb.js → diagram-WEI45ONY-Og8vyDQh.js} +1 -1
  254. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-DVGZkgjy.js → ebnfDiagram-CCIWWBDH--5sMape2.js} +1 -1
  255. package/ui-dist/assets/{erDiagram-Q63AITRT-C_-u3Gmw.js → erDiagram-Q63AITRT-DG10Bza-.js} +1 -1
  256. package/ui-dist/assets/{flowDiagram-23GEKE2U-BvGg0NCq.js → flowDiagram-23GEKE2U-BW-aZfEk.js} +1 -1
  257. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-U3CZUUUR.js → ganttDiagram-NO4QXBWP-DcA7on8t.js} +1 -1
  258. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-CIWuEBIo.js → gitGraphDiagram-IHSO6WYX-ygGufg32.js} +1 -1
  259. package/ui-dist/assets/{graph-D3P5q-7m.js → graph-BXl6uBoM.js} +1 -1
  260. package/ui-dist/assets/{index-DOPIV8vd.js → index-9bXlV2sq.js} +1 -1
  261. package/ui-dist/assets/{index-CjztBLJi.js → index-B58ems-F.js} +1 -1
  262. package/ui-dist/assets/{index-mnl55Stn.js → index-BM-SJNCx.js} +1 -1
  263. package/ui-dist/assets/index-BcdA9dZc.css +1 -0
  264. package/ui-dist/assets/{index-BAgtKYR1.js → index-BmTNDbzy.js} +1 -1
  265. package/ui-dist/assets/{index-DidCCw78.js → index-CCDynlok.js} +1 -1
  266. package/ui-dist/assets/{index-CbHqnWUe.js → index-CRLl2Ck7.js} +1 -1
  267. package/ui-dist/assets/{index-D7ycf1qU.js → index-CqmU1PxY.js} +1 -1
  268. package/ui-dist/assets/{index-B1rLBtZ1.js → index-CssgLJwf.js} +605 -493
  269. package/ui-dist/assets/{index-DRxLJD40.js → index-DOVMMhyj.js} +1 -1
  270. package/ui-dist/assets/{index-Ds_qma4-.js → index-DTlR8bJV.js} +1 -1
  271. package/ui-dist/assets/{index-DCFf9dps.js → index-Dl6nXXNc.js} +1 -1
  272. package/ui-dist/assets/{index-DAYlwxsg.js → index-DoiNhQrY.js} +1 -1
  273. package/ui-dist/assets/{index-CBOr9F6w.js → index-Dug5GX1J.js} +1 -1
  274. package/ui-dist/assets/{index-HkQRx1D6.js → index-DxXOCTVe.js} +1 -1
  275. package/ui-dist/assets/{index-BAMXpiI5.js → index-GdN-7KLt.js} +1 -1
  276. package/ui-dist/assets/{index-ikpL--zj.js → index-ZA8lPH2n.js} +1 -1
  277. package/ui-dist/assets/{index-Cu1iMhjl.js → index-fkDP349f.js} +1 -1
  278. package/ui-dist/assets/{index-DYMtCDKT.js → index-uKIvv9n9.js} +1 -1
  279. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-Cx8Fa-I4.js → infoDiagram-FWYZ7A6U-27INMkBm.js} +1 -1
  280. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-Cmuz1QUN.js → ishikawaDiagram-FXEZZL3T-Bp6XQ1_r.js} +1 -1
  281. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-CJgkiVXG.js → journeyDiagram-5HDEW3XC-9vaIwdZ3.js} +1 -1
  282. package/ui-dist/assets/{kanban-definition-HUTT4EX6-RAWpefOB.js → kanban-definition-HUTT4EX6-DjsMaR6l.js} +1 -1
  283. package/ui-dist/assets/{layout-DyWQv0Rr.js → layout-C0oWcIiC.js} +1 -1
  284. package/ui-dist/assets/{linear-D5pdgIf9.js → linear-DNbmenmQ.js} +1 -1
  285. package/ui-dist/assets/{map-bVSzNLl2.js → map-B1s9kpcR.js} +1 -1
  286. package/ui-dist/assets/{mermaid.core-CeaXGD6B.js → mermaid.core-DsYT9DxL.js} +4 -4
  287. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-B8B8AX5C.js → mindmap-definition-LN4V7U3C-vVHeRI83.js} +1 -1
  288. package/ui-dist/assets/{pegDiagram-2B236MQR-C4Sv-ua6.js → pegDiagram-2B236MQR-ohrgWLo_.js} +1 -1
  289. package/ui-dist/assets/{pieDiagram-ENE6RG2P-CLARlOHx.js → pieDiagram-ENE6RG2P-B0EqPrjn.js} +1 -1
  290. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-DPCXQmeT.js → quadrantDiagram-ABIIQ3AL-D44iYm0o.js} +1 -1
  291. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-BpqRuKUQ.js → railroadDiagram-RFXS5EU6-BQU5bpbU.js} +1 -1
  292. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-Dd-h62HZ.js → requirementDiagram-TGXJPOKE-DGJciRxB.js} +1 -1
  293. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-DylT_pqq.js → sankeyDiagram-HTMAVEWB-NMXZW_Qb.js} +1 -1
  294. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-RiCF1REj.js → sequenceDiagram-DBY2YBRQ-8uWY67Bb.js} +1 -1
  295. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-DXW4JQz2.js → sizeCapture-X5ZJPWSS-BnUUR-On.js} +1 -1
  296. package/ui-dist/assets/{stateDiagram-2N3HPSRC-6U3ESIGT.js → stateDiagram-2N3HPSRC-B37bcKMy.js} +1 -1
  297. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-p6H0vL7N.js +1 -0
  298. package/ui-dist/assets/{swimlanes-5IMT3BWC-CeNHVNCi.js → swimlanes-5IMT3BWC-Bi2ZzUMi.js} +2 -2
  299. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-BX6FiLF9.js +8 -0
  300. package/ui-dist/assets/{timeline-definition-FHXFAJF6-Vlwoe_1b.js → timeline-definition-FHXFAJF6-CkWauU5D.js} +1 -1
  301. package/ui-dist/assets/{vennDiagram-L72KCM5P-DBP7D3HE.js → vennDiagram-L72KCM5P-BrmBXmnk.js} +1 -1
  302. package/ui-dist/assets/{wardleyDiagram-EHGQE667-DG-wzqpy.js → wardleyDiagram-EHGQE667-kO5cojc6.js} +1 -1
  303. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-BAq3mbha.js → xychartDiagram-FW5EYKEG-CUBDaCDm.js} +1 -1
  304. package/ui-dist/index.html +5 -4
  305. package/resources/bundled-skills/rudder-create-agent/SKILL.md +0 -185
  306. package/resources/bundled-skills/rudder-create-agent/references/api-reference.md +0 -179
  307. package/resources/bundled-skills/rudder-create-agent/references/cli-reference.md +0 -132
  308. package/resources/bundled-skills/rudder-create-plugin/SKILL.md +0 -103
  309. package/resources/bundled-skills/skill-optimizer/CHANGELOG.md +0 -29
  310. package/resources/bundled-skills/skill-optimizer/SKILL.md +0 -205
  311. package/resources/bundled-skills/skill-optimizer/references/adapters/creative-brand-content.md +0 -30
  312. package/resources/bundled-skills/skill-optimizer/references/adapters/customer-support-sales.md +0 -30
  313. package/resources/bundled-skills/skill-optimizer/references/adapters/document-data-processing.md +0 -31
  314. package/resources/bundled-skills/skill-optimizer/references/adapters/education-training.md +0 -31
  315. package/resources/bundled-skills/skill-optimizer/references/adapters/finance-accounting.md +0 -31
  316. package/resources/bundled-skills/skill-optimizer/references/adapters/healthcare-operations.md +0 -30
  317. package/resources/bundled-skills/skill-optimizer/references/adapters/hr-people-ops.md +0 -31
  318. package/resources/bundled-skills/skill-optimizer/references/adapters/legal-compliance.md +0 -31
  319. package/resources/bundled-skills/skill-optimizer/references/adapters/operations-supply-chain.md +0 -31
  320. package/resources/bundled-skills/skill-optimizer/references/adapters/personal-productivity.md +0 -29
  321. package/resources/bundled-skills/skill-optimizer/references/adapters/research-knowledge.md +0 -31
  322. package/resources/bundled-skills/skill-optimizer/references/adapters/software-ai.md +0 -31
  323. package/resources/bundled-skills/skill-optimizer/references/domain-adapter-patterns.md +0 -66
  324. package/resources/bundled-skills/skill-optimizer/references/eval-method.md +0 -17
  325. package/resources/bundled-skills/skill-optimizer/references/universal-optimization-lens.md +0 -73
  326. package/skills/rudder-create-agent/SKILL.md +0 -185
  327. package/skills/rudder-create-agent/references/api-reference.md +0 -179
  328. package/skills/rudder-create-agent/references/cli-reference.md +0 -132
  329. package/skills/rudder-create-plugin/SKILL.md +0 -103
  330. package/skills/skill-optimizer/CHANGELOG.md +0 -29
  331. package/skills/skill-optimizer/SKILL.md +0 -205
  332. package/skills/skill-optimizer/references/adapters/creative-brand-content.md +0 -30
  333. package/skills/skill-optimizer/references/adapters/customer-support-sales.md +0 -30
  334. package/skills/skill-optimizer/references/adapters/document-data-processing.md +0 -31
  335. package/skills/skill-optimizer/references/adapters/education-training.md +0 -31
  336. package/skills/skill-optimizer/references/adapters/finance-accounting.md +0 -31
  337. package/skills/skill-optimizer/references/adapters/healthcare-operations.md +0 -30
  338. package/skills/skill-optimizer/references/adapters/hr-people-ops.md +0 -31
  339. package/skills/skill-optimizer/references/adapters/legal-compliance.md +0 -31
  340. package/skills/skill-optimizer/references/adapters/operations-supply-chain.md +0 -31
  341. package/skills/skill-optimizer/references/adapters/personal-productivity.md +0 -29
  342. package/skills/skill-optimizer/references/adapters/research-knowledge.md +0 -31
  343. package/skills/skill-optimizer/references/adapters/software-ai.md +0 -31
  344. package/skills/skill-optimizer/references/domain-adapter-patterns.md +0 -66
  345. package/skills/skill-optimizer/references/eval-method.md +0 -17
  346. package/skills/skill-optimizer/references/universal-optimization-lens.md +0 -73
  347. package/ui-dist/assets/channel-CM4Myg_6.js +0 -1
  348. package/ui-dist/assets/classDiagram-OUVF2IWQ-CtlIEzTt.js +0 -1
  349. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CtlIEzTt.js +0 -1
  350. package/ui-dist/assets/index-DekHKOsL.css +0 -1
  351. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-KQTrcZvp.js +0 -1
  352. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-CcxS1c6r.js +0 -8
@@ -0,0 +1,96 @@
1
+ import { chatConversations, messengerCustomGroupEntries, messengerCustomGroups, } from "@rudderhq/db";
2
+ import { MESSENGER_FORK_GROUP_DEFAULT_ICON } from "@rudderhq/shared";
3
+ import { and, asc, desc, eq, sql } from "drizzle-orm";
4
+ async function findChatFamilyGroup(client, orgId, userId, rootConversationId) {
5
+ const rootThreadKey = `chat:${rootConversationId}`;
6
+ return client
7
+ .select({ id: messengerCustomGroups.id })
8
+ .from(messengerCustomGroups)
9
+ .innerJoin(messengerCustomGroupEntries, eq(messengerCustomGroupEntries.groupId, messengerCustomGroups.id))
10
+ .where(and(eq(messengerCustomGroups.orgId, orgId), eq(messengerCustomGroups.userId, userId), eq(messengerCustomGroupEntries.orgId, orgId), eq(messengerCustomGroupEntries.userId, userId), eq(messengerCustomGroupEntries.threadKey, rootThreadKey)))
11
+ .orderBy(asc(messengerCustomGroups.sortOrder), asc(messengerCustomGroups.createdAt))
12
+ .limit(1)
13
+ .then((rows) => rows[0] ?? null);
14
+ }
15
+ async function createChatFamilyGroup(client, orgId, userId, name) {
16
+ const [lastGroup] = await client
17
+ .select({ sortOrder: messengerCustomGroups.sortOrder })
18
+ .from(messengerCustomGroups)
19
+ .where(and(eq(messengerCustomGroups.orgId, orgId), eq(messengerCustomGroups.userId, userId)))
20
+ .orderBy(desc(messengerCustomGroups.sortOrder))
21
+ .limit(1);
22
+ const now = new Date();
23
+ const [group] = await client
24
+ .insert(messengerCustomGroups)
25
+ .values({
26
+ orgId,
27
+ userId,
28
+ name: name.trim() || "Forked conversation",
29
+ icon: MESSENGER_FORK_GROUP_DEFAULT_ICON,
30
+ sortOrder: (lastGroup?.sortOrder ?? -1) + 1,
31
+ updatedAt: now,
32
+ })
33
+ .returning();
34
+ if (!group)
35
+ throw new Error("Failed to create Messenger conversation family group");
36
+ return group;
37
+ }
38
+ async function assignChatToFamilyGroup(client, orgId, userId, groupId, conversationId) {
39
+ const [lastEntry] = await client
40
+ .select({ sortOrder: messengerCustomGroupEntries.sortOrder })
41
+ .from(messengerCustomGroupEntries)
42
+ .where(and(eq(messengerCustomGroupEntries.orgId, orgId), eq(messengerCustomGroupEntries.userId, userId), eq(messengerCustomGroupEntries.groupId, groupId)))
43
+ .orderBy(desc(messengerCustomGroupEntries.sortOrder))
44
+ .limit(1);
45
+ const nextSortOrder = (lastEntry?.sortOrder ?? -1) + 1;
46
+ const now = new Date();
47
+ await client
48
+ .insert(messengerCustomGroupEntries)
49
+ .values({
50
+ orgId,
51
+ userId,
52
+ groupId,
53
+ threadKey: `chat:${conversationId}`,
54
+ sortOrder: nextSortOrder,
55
+ updatedAt: now,
56
+ })
57
+ .onConflictDoUpdate({
58
+ target: [
59
+ messengerCustomGroupEntries.orgId,
60
+ messengerCustomGroupEntries.userId,
61
+ messengerCustomGroupEntries.threadKey,
62
+ ],
63
+ set: {
64
+ groupId,
65
+ sortOrder: sql `CASE
66
+ WHEN ${messengerCustomGroupEntries.groupId} = ${groupId}
67
+ THEN ${messengerCustomGroupEntries.sortOrder}
68
+ ELSE ${nextSortOrder}
69
+ END`,
70
+ updatedAt: now,
71
+ },
72
+ });
73
+ }
74
+ export async function ensureChatFamilyGroup(client, input) {
75
+ // Family membership is user-scoped, but the root row is the stable lock shared
76
+ // by concurrent Fork and Side Chat promotions in the same conversation family.
77
+ await client.execute(sql `
78
+ SELECT ${chatConversations.id}
79
+ FROM ${chatConversations}
80
+ WHERE ${chatConversations.id} = ${input.rootConversationId}
81
+ AND ${chatConversations.orgId} = ${input.orgId}
82
+ FOR UPDATE
83
+ `);
84
+ const existing = await findChatFamilyGroup(client, input.orgId, input.userId, input.rootConversationId);
85
+ const group = existing ?? await createChatFamilyGroup(client, input.orgId, input.userId, input.groupName);
86
+ const familyConversationIds = new Set([
87
+ input.rootConversationId,
88
+ input.sourceConversationId,
89
+ input.childConversationId,
90
+ ]);
91
+ for (const conversationId of familyConversationIds) {
92
+ await assignChatToFamilyGroup(client, input.orgId, input.userId, group.id, conversationId);
93
+ }
94
+ return group;
95
+ }
96
+ //# sourceMappingURL=chat-family-groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-family-groups.js","sourceRoot":"","sources":["../../src/services/chat-family-groups.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,12 @@
1
1
  import type { Db } from "@rudderhq/db";
2
2
  import { chatControlActions, chatGenerationEvents, chatGenerations, chatGenerationTerminalOutbox, chatQueuedMessages } from "@rudderhq/db";
3
- import type { ChatControlDisposition, ChatGenerationEventKind, ChatGenerationStatus, ChatStreamTranscriptEntry } from "@rudderhq/shared";
3
+ import type { ChatControlDisposition, ChatGenerationStatus, ChatStreamTranscriptEntry } from "@rudderhq/shared";
4
+ import { type AppendEventFields, type ChatGenerationProtocolTransaction } from "./chat-generation-protocol.helpers.js";
5
+ export { hashChatGenerationBody } from "./chat-generation-protocol.helpers.js";
4
6
  type GenerationRow = typeof chatGenerations.$inferSelect;
5
7
  type GenerationEventRow = typeof chatGenerationEvents.$inferSelect;
6
8
  type ControlActionRow = typeof chatControlActions.$inferSelect;
7
9
  type TerminalOutboxRow = typeof chatGenerationTerminalOutbox.$inferSelect;
8
- export type ChatGenerationProtocolTransaction = Parameters<Parameters<Db["transaction"]>[0]>[0];
9
- export declare function hashChatGenerationBody(body: string): string;
10
- type AppendEventFields = {
11
- orgId: string;
12
- generationId: string;
13
- attemptEpoch: number;
14
- eventKind: ChatGenerationEventKind;
15
- payload?: Record<string, unknown>;
16
- bodyOffset?: number | null;
17
- bodyLength?: number | null;
18
- assistantMessageId?: string | null;
19
- runId?: string | null;
20
- controlActionId?: string | null;
21
- queueItemId?: string | null;
22
- emittedAt?: Date | null;
23
- };
24
10
  type VisibleGenerationProjection = {
25
11
  body: string;
26
12
  transcript: ChatStreamTranscriptEntry[];
@@ -81,7 +67,7 @@ export declare function chatGenerationProtocolService(db: Db): {
81
67
  generationId: string;
82
68
  attemptEpoch: number;
83
69
  generationSeq: number;
84
- eventKind: ChatGenerationEventKind;
70
+ eventKind: import("@rudderhq/shared").ChatGenerationEventKind;
85
71
  bodyOffset: number | null;
86
72
  bodyLength: number | null;
87
73
  queueItemId: string | null;
@@ -158,22 +144,22 @@ export declare function chatGenerationProtocolService(db: Db): {
158
144
  lateBytes: number;
159
145
  };
160
146
  message: {
161
- status: string;
162
- conversationId: string;
163
147
  id: string;
164
148
  orgId: string;
149
+ conversationId: string;
150
+ role: string;
165
151
  kind: string;
166
- createdAt: Date;
167
- updatedAt: Date;
168
- runId: string | null;
152
+ status: string;
169
153
  body: string;
170
- role: string;
171
- approvalId: string | null;
172
154
  structuredPayload: Record<string, unknown> | null;
155
+ approvalId: string | null;
156
+ runId: string | null;
173
157
  replyingAgentId: string | null;
174
158
  chatTurnId: string | null;
175
159
  turnVariant: number;
176
160
  supersededAt: Date | null;
161
+ createdAt: Date;
162
+ updatedAt: Date;
177
163
  };
178
164
  event: {
179
165
  assistantMessageId: string | null;
@@ -185,7 +171,7 @@ export declare function chatGenerationProtocolService(db: Db): {
185
171
  generationId: string;
186
172
  attemptEpoch: number;
187
173
  generationSeq: number;
188
- eventKind: ChatGenerationEventKind;
174
+ eventKind: import("@rudderhq/shared").ChatGenerationEventKind;
189
175
  bodyOffset: number | null;
190
176
  bodyLength: number | null;
191
177
  queueItemId: string | null;
@@ -308,7 +294,7 @@ export declare function chatGenerationProtocolService(db: Db): {
308
294
  generationId: string;
309
295
  attemptEpoch: number;
310
296
  generationSeq: number;
311
- eventKind: ChatGenerationEventKind;
297
+ eventKind: import("@rudderhq/shared").ChatGenerationEventKind;
312
298
  bodyOffset: number | null;
313
299
  bodyLength: number | null;
314
300
  queueItemId: string | null;
@@ -324,6 +310,7 @@ export declare function chatGenerationProtocolService(db: Db): {
324
310
  expectedGenerationId: string;
325
311
  expectedAttemptEpoch: number;
326
312
  expectedControlVersion: number;
313
+ admissionControlVersion?: number;
327
314
  requestedRenderSeq: number;
328
315
  requestedBodyHash: string;
329
316
  now?: Date;
@@ -332,7 +319,7 @@ export declare function chatGenerationProtocolService(db: Db): {
332
319
  generation: GenerationRow;
333
320
  stopRequestedEvent: GenerationEventRow | null;
334
321
  outputCutoffEvent: GenerationEventRow | null;
335
- outcome: "stop_applied" | "completion_committed";
322
+ outcome: "stop_applied" | "stop_in_progress" | "completion_committed" | "already_terminal";
336
323
  idempotent: boolean;
337
324
  }>;
338
325
  beginSteerFallbackCutoff: (input: {
@@ -456,7 +443,7 @@ export declare function chatGenerationProtocolService(db: Db): {
456
443
  generationId: string;
457
444
  attemptEpoch: number;
458
445
  generationSeq: number;
459
- eventKind: ChatGenerationEventKind;
446
+ eventKind: import("@rudderhq/shared").ChatGenerationEventKind;
460
447
  bodyOffset: number | null;
461
448
  bodyLength: number | null;
462
449
  queueItemId: string | null;
@@ -620,7 +607,7 @@ export declare function chatGenerationProtocolService(db: Db): {
620
607
  generationId: string;
621
608
  attemptEpoch: number;
622
609
  generationSeq: number;
623
- eventKind: ChatGenerationEventKind;
610
+ eventKind: import("@rudderhq/shared").ChatGenerationEventKind;
624
611
  bodyOffset: number | null;
625
612
  bodyLength: number | null;
626
613
  queueItemId: string | null;
@@ -670,5 +657,4 @@ export declare function chatGenerationProtocolService(db: Db): {
670
657
  outbox: TerminalOutboxRow;
671
658
  }[]>;
672
659
  };
673
- export {};
674
660
  //# sourceMappingURL=chat-generation-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-generation-protocol.d.ts","sourceRoot":"","sources":["../../src/services/chat-generation-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-generation-protocol.d.ts","sourceRoot":"","sources":["../../src/services/chat-generation-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Db } from "@rudderhq/db";
2
+ import { chatGenerations } from "@rudderhq/db";
3
+ import type { ChatGenerationEventKind } from "@rudderhq/shared";
4
+ type GenerationRow = typeof chatGenerations.$inferSelect;
5
+ export type ChatGenerationProtocolTransaction = Parameters<Parameters<Db["transaction"]>[0]>[0];
6
+ export type AppendEventFields = {
7
+ orgId: string;
8
+ generationId: string;
9
+ attemptEpoch: number;
10
+ eventKind: ChatGenerationEventKind;
11
+ payload?: Record<string, unknown>;
12
+ bodyOffset?: number | null;
13
+ bodyLength?: number | null;
14
+ assistantMessageId?: string | null;
15
+ runId?: string | null;
16
+ controlActionId?: string | null;
17
+ queueItemId?: string | null;
18
+ emittedAt?: Date | null;
19
+ };
20
+ export declare const EMPTY_BODY_SHA256: string;
21
+ export declare const SHA256_PATTERN: RegExp;
22
+ export declare function hashChatGenerationBody(body: string): string;
23
+ export declare function normalizeBodyHash(value: string): string;
24
+ export declare function assertGenerationFence(generation: GenerationRow, input: {
25
+ conversationId?: string;
26
+ expectedAttemptEpoch: number;
27
+ expectedOwnerToken?: string | null;
28
+ }): void;
29
+ export declare function lockGeneration(tx: ChatGenerationProtocolTransaction, input: {
30
+ orgId: string;
31
+ generationId: string;
32
+ conversationId?: string;
33
+ }): Promise<GenerationRow>;
34
+ export declare function nextGenerationSeq(tx: ChatGenerationProtocolTransaction, generationId: string): Promise<number>;
35
+ export {};
36
+ //# sourceMappingURL=chat-generation-protocol.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-generation-protocol.helpers.d.ts","sourceRoot":"","sources":["../../src/services/chat-generation-protocol.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAwB,eAAe,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAKhE,KAAK,aAAa,GAAG,OAAO,eAAe,CAAC,YAAY,CAAC;AAEzD,MAAM,MAAM,iCAAiC,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,uBAAuB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAgD,CAAC;AAC/E,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE;IACL,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,QAWF;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,iCAAiC,EACrC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE,OAAO,CAAC,aAAa,CAAC,CAkBxB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,iCAAiC,EACrC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -0,0 +1,53 @@
1
+ import { chatGenerationEvents, chatGenerations } from "@rudderhq/db";
2
+ import { and, eq, sql } from "drizzle-orm";
3
+ import { createHash } from "node:crypto";
4
+ import { conflict, notFound, unprocessable } from "../errors.js";
5
+ export const EMPTY_BODY_SHA256 = createHash("sha256").update("").digest("hex");
6
+ export const SHA256_PATTERN = /^[a-f0-9]{64}$/i;
7
+ export function hashChatGenerationBody(body) {
8
+ return createHash("sha256").update(body).digest("hex");
9
+ }
10
+ export function normalizeBodyHash(value) {
11
+ if (!SHA256_PATTERN.test(value)) {
12
+ throw unprocessable("Chat generation body hash must be a SHA-256 hex digest");
13
+ }
14
+ return value.toLowerCase();
15
+ }
16
+ export function assertGenerationFence(generation, input) {
17
+ if (input.conversationId && generation.conversationId !== input.conversationId) {
18
+ throw notFound("Chat generation not found");
19
+ }
20
+ if (generation.attemptEpoch !== input.expectedAttemptEpoch) {
21
+ throw conflict("Chat generation runtime attempt changed");
22
+ }
23
+ if (input.expectedOwnerToken !== undefined && generation.controlOwnerToken !== input.expectedOwnerToken) {
24
+ throw conflict("Chat generation control owner changed");
25
+ }
26
+ }
27
+ export async function lockGeneration(tx, input) {
28
+ await tx.execute(sql `
29
+ select ${chatGenerations.id}
30
+ from ${chatGenerations}
31
+ where ${chatGenerations.id} = ${input.generationId}
32
+ and ${chatGenerations.orgId} = ${input.orgId}
33
+ for update
34
+ `);
35
+ const generation = await tx
36
+ .select()
37
+ .from(chatGenerations)
38
+ .where(and(eq(chatGenerations.id, input.generationId), eq(chatGenerations.orgId, input.orgId)))
39
+ .limit(1)
40
+ .then((rows) => rows[0] ?? null);
41
+ if (!generation || (input.conversationId && generation.conversationId !== input.conversationId)) {
42
+ throw notFound("Chat generation not found");
43
+ }
44
+ return generation;
45
+ }
46
+ export async function nextGenerationSeq(tx, generationId) {
47
+ return tx
48
+ .select({ value: sql `coalesce(max(${chatGenerationEvents.generationSeq}), 0) + 1` })
49
+ .from(chatGenerationEvents)
50
+ .where(eq(chatGenerationEvents.generationId, generationId))
51
+ .then((rows) => Number(rows[0]?.value ?? 1));
52
+ }
53
+ //# sourceMappingURL=chat-generation-protocol.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-generation-protocol.helpers.js","sourceRoot":"","sources":["../../src/services/chat-generation-protocol.helpers.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { chatControlActions, chatGenerationEvents, chatGenerations, chatGenerationTerminalOutbox, chatMessages, chatQueuedMessages, } from "@rudderhq/db";
2
2
  import { and, asc, desc, eq, inArray, isNotNull, isNull, lte, or, sql } from "drizzle-orm";
3
- import { createHash, randomUUID } from "node:crypto";
3
+ import { randomUUID } from "node:crypto";
4
4
  import { conflict, notFound, unprocessable } from "../errors.js";
5
+ import { assertGenerationFence, EMPTY_BODY_SHA256, lockGeneration, nextGenerationSeq, normalizeBodyHash, SHA256_PATTERN, } from "./chat-generation-protocol.helpers.js";
5
6
  import { withPersistedTranscript } from "./chats.helpers.js";
6
7
  import { normalizeLocalLibraryPathMarkdown } from "./library-path-markdown.js";
8
+ export { hashChatGenerationBody } from "./chat-generation-protocol.helpers.js";
7
9
  const OUTPUT_ADMITTING_GENERATION_STATUSES = [
8
10
  "starting",
9
11
  "active",
@@ -27,55 +29,6 @@ const PROJECTABLE_TERMINAL_STATUSES = [
27
29
  "interrupted_unverified",
28
30
  "control_lost",
29
31
  ];
30
- const EMPTY_BODY_SHA256 = createHash("sha256").update("").digest("hex");
31
- const SHA256_PATTERN = /^[a-f0-9]{64}$/i;
32
- export function hashChatGenerationBody(body) {
33
- return createHash("sha256").update(body).digest("hex");
34
- }
35
- function normalizeBodyHash(value) {
36
- if (!SHA256_PATTERN.test(value)) {
37
- throw unprocessable("Chat generation body hash must be a SHA-256 hex digest");
38
- }
39
- return value.toLowerCase();
40
- }
41
- function assertGenerationFence(generation, input) {
42
- if (input.conversationId && generation.conversationId !== input.conversationId) {
43
- throw notFound("Chat generation not found");
44
- }
45
- if (generation.attemptEpoch !== input.expectedAttemptEpoch) {
46
- throw conflict("Chat generation runtime attempt changed");
47
- }
48
- if (input.expectedOwnerToken !== undefined
49
- && generation.controlOwnerToken !== input.expectedOwnerToken) {
50
- throw conflict("Chat generation control owner changed");
51
- }
52
- }
53
- async function lockGeneration(tx, input) {
54
- await tx.execute(sql `
55
- select ${chatGenerations.id}
56
- from ${chatGenerations}
57
- where ${chatGenerations.id} = ${input.generationId}
58
- and ${chatGenerations.orgId} = ${input.orgId}
59
- for update
60
- `);
61
- const generation = await tx
62
- .select()
63
- .from(chatGenerations)
64
- .where(and(eq(chatGenerations.id, input.generationId), eq(chatGenerations.orgId, input.orgId)))
65
- .limit(1)
66
- .then((rows) => rows[0] ?? null);
67
- if (!generation || (input.conversationId && generation.conversationId !== input.conversationId)) {
68
- throw notFound("Chat generation not found");
69
- }
70
- return generation;
71
- }
72
- async function nextGenerationSeq(tx, generationId) {
73
- return tx
74
- .select({ value: sql `coalesce(max(${chatGenerationEvents.generationSeq}), 0) + 1` })
75
- .from(chatGenerationEvents)
76
- .where(eq(chatGenerationEvents.generationId, generationId))
77
- .then((rows) => Number(rows[0]?.value ?? 1));
78
- }
79
32
  async function appendEventLocked(tx, input) {
80
33
  const generationSeq = await nextGenerationSeq(tx, input.generationId);
81
34
  const [event] = await tx
@@ -422,6 +375,7 @@ export function chatGenerationProtocolService(db) {
422
375
  }
423
376
  async function beginStopAction(input) {
424
377
  const requestedBodyHash = normalizeBodyHash(input.requestedBodyHash);
378
+ const admissionControlVersion = input.admissionControlVersion ?? input.expectedControlVersion;
425
379
  return db.transaction(async (tx) => {
426
380
  const generation = await lockGeneration(tx, {
427
381
  orgId: input.orgId,
@@ -439,6 +393,7 @@ export function chatGenerationProtocolService(db) {
439
393
  || existingAction.actionKind !== "stop"
440
394
  || existingAction.expectedGenerationId !== input.expectedGenerationId
441
395
  || existingAction.expectedAttemptEpoch !== input.expectedAttemptEpoch
396
+ || existingAction.expectedControlVersion !== input.expectedControlVersion
442
397
  || existingAction.requestedRenderSeq !== input.requestedRenderSeq
443
398
  || existingAction.requestedBodyHash !== requestedBodyHash) {
444
399
  throw conflict("Control action id was already used for a different Stop request");
@@ -450,7 +405,11 @@ export function chatGenerationProtocolService(db) {
450
405
  outputCutoffEvent: null,
451
406
  outcome: existingAction.lastError === "generation_result_already_committed"
452
407
  ? "completion_committed"
453
- : "stop_applied",
408
+ : existingAction.lastError === "generation_runtime_already_terminal"
409
+ ? "already_terminal"
410
+ : existingAction.lastError === "generation_stop_already_in_progress"
411
+ ? "stop_in_progress"
412
+ : "stop_applied",
454
413
  idempotent: true,
455
414
  };
456
415
  }
@@ -498,12 +457,84 @@ export function chatGenerationProtocolService(db) {
498
457
  };
499
458
  }
500
459
  if (generation.runtimeTerminalAt) {
501
- throw conflict("Chat generation runtime is already terminal");
460
+ const now = input.now ?? new Date();
461
+ const generationWasStopped = generation.status === "stopped";
462
+ const [action] = await tx
463
+ .insert(chatControlActions)
464
+ .values({
465
+ id: input.controlActionId,
466
+ orgId: input.orgId,
467
+ expectedGenerationId: generation.id,
468
+ expectedAttemptEpoch: input.expectedAttemptEpoch,
469
+ expectedControlVersion: input.expectedControlVersion,
470
+ actionKind: "stop",
471
+ localDisposition: generationWasStopped ? "stopped" : "cancelled",
472
+ providerDisposition: "not_sent",
473
+ controlOwnerToken: generation.controlOwnerToken,
474
+ requestedRenderSeq: input.requestedRenderSeq,
475
+ requestedBodyHash,
476
+ acceptedThroughSeq: generation.acceptedThroughSeq ?? input.requestedRenderSeq,
477
+ frozenBodyHash: generation.frozenBodyHash ?? requestedBodyHash,
478
+ lastError: "generation_runtime_already_terminal",
479
+ requestedAt: now,
480
+ resolvedAt: now,
481
+ createdAt: now,
482
+ updatedAt: now,
483
+ })
484
+ .returning();
485
+ if (!action)
486
+ throw new Error("Failed to persist already-terminal Stop outcome");
487
+ return {
488
+ action,
489
+ generation,
490
+ stopRequestedEvent: null,
491
+ outputCutoffEvent: null,
492
+ outcome: "already_terminal",
493
+ idempotent: false,
494
+ };
495
+ }
496
+ if (generation.status === "stop_requested" || generation.status === "stopping") {
497
+ if (generation.controlVersion !== admissionControlVersion) {
498
+ throw conflict("Chat generation control version changed");
499
+ }
500
+ const now = input.now ?? new Date();
501
+ const [action] = await tx
502
+ .insert(chatControlActions)
503
+ .values({
504
+ id: input.controlActionId,
505
+ orgId: input.orgId,
506
+ expectedGenerationId: generation.id,
507
+ expectedAttemptEpoch: input.expectedAttemptEpoch,
508
+ expectedControlVersion: input.expectedControlVersion,
509
+ actionKind: "stop",
510
+ localDisposition: "stopping",
511
+ providerDisposition: "not_sent",
512
+ controlOwnerToken: generation.controlOwnerToken,
513
+ requestedRenderSeq: input.requestedRenderSeq,
514
+ requestedBodyHash,
515
+ acceptedThroughSeq: generation.acceptedThroughSeq ?? input.requestedRenderSeq,
516
+ frozenBodyHash: generation.frozenBodyHash ?? requestedBodyHash,
517
+ lastError: "generation_stop_already_in_progress",
518
+ requestedAt: now,
519
+ createdAt: now,
520
+ updatedAt: now,
521
+ })
522
+ .returning();
523
+ if (!action)
524
+ throw new Error("Failed to persist in-progress Stop outcome");
525
+ return {
526
+ action,
527
+ generation,
528
+ stopRequestedEvent: null,
529
+ outputCutoffEvent: null,
530
+ outcome: "stop_in_progress",
531
+ idempotent: false,
532
+ };
502
533
  }
503
534
  if (!CONTROL_ACTIVE_GENERATION_STATUSES.includes(generation.status)) {
504
535
  throw conflict("Chat generation is no longer stoppable");
505
536
  }
506
- if (generation.controlVersion !== input.expectedControlVersion) {
537
+ if (generation.controlVersion !== admissionControlVersion) {
507
538
  throw conflict("Chat generation control version changed");
508
539
  }
509
540
  const durableCheckpointIsNewer = generation.lastClientCheckpointSeq !== null
@@ -534,7 +565,7 @@ export function chatGenerationProtocolService(db) {
534
565
  throw conflict("Stop could not establish a durable rendered checkpoint");
535
566
  }
536
567
  const now = input.now ?? new Date();
537
- const appliedControlVersion = generation.controlVersion + 1;
568
+ const appliedControlVersion = admissionControlVersion + 1;
538
569
  const [action] = await tx
539
570
  .insert(chatControlActions)
540
571
  .values({
@@ -599,7 +630,7 @@ export function chatGenerationProtocolService(db) {
599
630
  stopRequestedAt: now,
600
631
  updatedAt: now,
601
632
  })
602
- .where(and(eq(chatGenerations.id, generation.id), eq(chatGenerations.attemptEpoch, input.expectedAttemptEpoch), eq(chatGenerations.controlVersion, input.expectedControlVersion)))
633
+ .where(and(eq(chatGenerations.id, generation.id), eq(chatGenerations.attemptEpoch, input.expectedAttemptEpoch), eq(chatGenerations.controlVersion, admissionControlVersion)))
603
634
  .returning();
604
635
  if (!updatedGeneration)
605
636
  throw conflict("Chat generation changed while applying Stop");