@rudderhq/server 0.4.6-canary.9 → 0.5.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 (350) hide show
  1. package/dist/agent-runtimes/http/execute.d.ts.map +1 -1
  2. package/dist/agent-runtimes/http/execute.js +8 -2
  3. package/dist/agent-runtimes/http/execute.js.map +1 -1
  4. package/dist/agent-runtimes/process/execute.d.ts.map +1 -1
  5. package/dist/agent-runtimes/process/execute.js +3 -1
  6. package/dist/agent-runtimes/process/execute.js.map +1 -1
  7. package/dist/agent-runtimes/utils.d.ts +6 -1
  8. package/dist/agent-runtimes/utils.d.ts.map +1 -1
  9. package/dist/agent-runtimes/utils.js +1 -1
  10. package/dist/agent-runtimes/utils.js.map +1 -1
  11. package/dist/app.d.ts +3 -3
  12. package/dist/app.d.ts.map +1 -1
  13. package/dist/app.js +17 -8
  14. package/dist/app.js.map +1 -1
  15. package/dist/bootstrap/create-http-app.d.ts +6 -1
  16. package/dist/bootstrap/create-http-app.d.ts.map +1 -1
  17. package/dist/bootstrap/create-http-app.js +122 -46
  18. package/dist/bootstrap/create-http-app.js.map +1 -1
  19. package/dist/bootstrap/plugin-host-runtime.d.ts.map +1 -1
  20. package/dist/bootstrap/plugin-host-runtime.js +89 -31
  21. package/dist/bootstrap/plugin-host-runtime.js.map +1 -1
  22. package/dist/bootstrap/register-api-routes.d.ts +3 -1
  23. package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
  24. package/dist/bootstrap/register-api-routes.js +3 -3
  25. package/dist/bootstrap/register-api-routes.js.map +1 -1
  26. package/dist/bootstrap/types.d.ts +1 -0
  27. package/dist/bootstrap/types.d.ts.map +1 -1
  28. package/dist/bundled-plugins/plugin-linear/dist/worker.js +348 -172
  29. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +3 -3
  30. package/dist/config.d.ts +2 -0
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +23 -0
  33. package/dist/config.js.map +1 -1
  34. package/dist/home-paths.d.ts.map +1 -1
  35. package/dist/home-paths.js +79 -7
  36. package/dist/home-paths.js.map +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +31 -54
  39. package/dist/index.js.map +1 -1
  40. package/dist/routes/access-onboarding.helpers.js +3 -3
  41. package/dist/routes/access-onboarding.helpers.js.map +1 -1
  42. package/dist/routes/access.helpers.d.ts.map +1 -1
  43. package/dist/routes/access.helpers.js +3 -2
  44. package/dist/routes/access.helpers.js.map +1 -1
  45. package/dist/routes/access.js +1 -1
  46. package/dist/routes/access.js.map +1 -1
  47. package/dist/routes/activity.d.ts.map +1 -1
  48. package/dist/routes/activity.js +5 -1
  49. package/dist/routes/activity.js.map +1 -1
  50. package/dist/routes/agents.management-routes.d.ts.map +1 -1
  51. package/dist/routes/agents.management-routes.js +13 -13
  52. package/dist/routes/agents.management-routes.js.map +1 -1
  53. package/dist/routes/assets.d.ts.map +1 -1
  54. package/dist/routes/assets.js +9 -2
  55. package/dist/routes/assets.js.map +1 -1
  56. package/dist/routes/chat-background-runtime.d.ts +19 -0
  57. package/dist/routes/chat-background-runtime.d.ts.map +1 -0
  58. package/dist/routes/chat-background-runtime.js +129 -0
  59. package/dist/routes/chat-background-runtime.js.map +1 -0
  60. package/dist/routes/chats.d.ts +2 -1
  61. package/dist/routes/chats.d.ts.map +1 -1
  62. package/dist/routes/chats.js +944 -24
  63. package/dist/routes/chats.js.map +1 -1
  64. package/dist/routes/chats.stream-routes.d.ts.map +1 -1
  65. package/dist/routes/chats.stream-routes.js +552 -76
  66. package/dist/routes/chats.stream-routes.js.map +1 -1
  67. package/dist/routes/issues.comments-attachments.d.ts.map +1 -1
  68. package/dist/routes/issues.comments-attachments.js +14 -31
  69. package/dist/routes/issues.comments-attachments.js.map +1 -1
  70. package/dist/routes/onboarding.js +1 -1
  71. package/dist/routes/onboarding.js.map +1 -1
  72. package/dist/routes/orgs.d.ts +2 -1
  73. package/dist/routes/orgs.d.ts.map +1 -1
  74. package/dist/routes/orgs.js +31 -2
  75. package/dist/routes/orgs.js.map +1 -1
  76. package/dist/routes/run-intelligence.d.ts.map +1 -1
  77. package/dist/routes/run-intelligence.js +76 -16
  78. package/dist/routes/run-intelligence.js.map +1 -1
  79. package/dist/services/activity-log.d.ts +4 -1
  80. package/dist/services/activity-log.d.ts.map +1 -1
  81. package/dist/services/activity-log.js +12 -4
  82. package/dist/services/activity-log.js.map +1 -1
  83. package/dist/services/activity.d.ts +11 -394
  84. package/dist/services/activity.d.ts.map +1 -1
  85. package/dist/services/activity.js +24 -18
  86. package/dist/services/activity.js.map +1 -1
  87. package/dist/services/agents.d.ts +741 -118
  88. package/dist/services/agents.d.ts.map +1 -1
  89. package/dist/services/approvals.d.ts +3 -3
  90. package/dist/services/automation-chat-output.d.ts.map +1 -1
  91. package/dist/services/automation-chat-output.js +115 -94
  92. package/dist/services/automation-chat-output.js.map +1 -1
  93. package/dist/services/budgets.d.ts.map +1 -1
  94. package/dist/services/budgets.js +38 -36
  95. package/dist/services/budgets.js.map +1 -1
  96. package/dist/services/chat-agent-runs.d.ts +3 -1
  97. package/dist/services/chat-agent-runs.d.ts.map +1 -1
  98. package/dist/services/chat-agent-runs.js +95 -34
  99. package/dist/services/chat-agent-runs.js.map +1 -1
  100. package/dist/services/chat-assistant.d.ts.map +1 -1
  101. package/dist/services/chat-assistant.helpers.d.ts +27 -4
  102. package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
  103. package/dist/services/chat-assistant.helpers.js +66 -2
  104. package/dist/services/chat-assistant.helpers.js.map +1 -1
  105. package/dist/services/chat-assistant.inline-visuals.test.d.ts +2 -0
  106. package/dist/services/chat-assistant.inline-visuals.test.d.ts.map +1 -0
  107. package/dist/services/chat-assistant.inline-visuals.test.js +86 -0
  108. package/dist/services/chat-assistant.inline-visuals.test.js.map +1 -0
  109. package/dist/services/chat-assistant.js +115 -22
  110. package/dist/services/chat-assistant.js.map +1 -1
  111. package/dist/services/chat-generation-locks.d.ts +85 -0
  112. package/dist/services/chat-generation-locks.d.ts.map +1 -1
  113. package/dist/services/chat-generation-locks.js +371 -9
  114. package/dist/services/chat-generation-locks.js.map +1 -1
  115. package/dist/services/chat-generation-locks.test.d.ts +2 -0
  116. package/dist/services/chat-generation-locks.test.d.ts.map +1 -0
  117. package/dist/services/chat-generation-locks.test.js +324 -0
  118. package/dist/services/chat-generation-locks.test.js.map +1 -0
  119. package/dist/services/chat-generation-protocol.d.ts +674 -0
  120. package/dist/services/chat-generation-protocol.d.ts.map +1 -0
  121. package/dist/services/chat-generation-protocol.js +1571 -0
  122. package/dist/services/chat-generation-protocol.js.map +1 -0
  123. package/dist/services/chat-generation-protocol.test.d.ts +2 -0
  124. package/dist/services/chat-generation-protocol.test.d.ts.map +1 -0
  125. package/dist/services/chat-generation-protocol.test.js +1156 -0
  126. package/dist/services/chat-generation-protocol.test.js.map +1 -0
  127. package/dist/services/chat-title-generation.d.ts +0 -3
  128. package/dist/services/chat-title-generation.d.ts.map +1 -1
  129. package/dist/services/chat-title-generation.js +2 -32
  130. package/dist/services/chat-title-generation.js.map +1 -1
  131. package/dist/services/chat-work-manifest.d.ts.map +1 -1
  132. package/dist/services/chat-work-manifest.js +5 -1
  133. package/dist/services/chat-work-manifest.js.map +1 -1
  134. package/dist/services/chats.d.ts +1451 -272
  135. package/dist/services/chats.d.ts.map +1 -1
  136. package/dist/services/chats.js +1372 -35
  137. package/dist/services/chats.js.map +1 -1
  138. package/dist/services/costs.d.ts +34 -7
  139. package/dist/services/costs.d.ts.map +1 -1
  140. package/dist/services/costs.js +129 -61
  141. package/dist/services/costs.js.map +1 -1
  142. package/dist/services/finance.d.ts +3 -3
  143. package/dist/services/goals.d.ts +2 -2
  144. package/dist/services/heartbeat.d.ts +1 -1
  145. package/dist/services/heartbeat.d.ts.map +1 -1
  146. package/dist/services/heartbeat.js +1 -1
  147. package/dist/services/heartbeat.js.map +1 -1
  148. package/dist/services/index.d.ts +1 -0
  149. package/dist/services/index.d.ts.map +1 -1
  150. package/dist/services/index.js +1 -0
  151. package/dist/services/index.js.map +1 -1
  152. package/dist/services/integrations/agent-integrations.d.ts +1 -1
  153. package/dist/services/integrations/custom-integrations.d.ts +1 -1
  154. package/dist/services/integrations/feishu/runtime.d.ts.map +1 -1
  155. package/dist/services/integrations/feishu/runtime.js +16 -0
  156. package/dist/services/integrations/feishu/runtime.js.map +1 -1
  157. package/dist/services/issues.comments-attachments.d.ts +111 -0
  158. package/dist/services/issues.comments-attachments.d.ts.map +1 -1
  159. package/dist/services/issues.comments-attachments.js +138 -66
  160. package/dist/services/issues.comments-attachments.js.map +1 -1
  161. package/dist/services/issues.d.ts +56 -0
  162. package/dist/services/issues.d.ts.map +1 -1
  163. package/dist/services/issues.helpers.d.ts.map +1 -1
  164. package/dist/services/issues.helpers.js +2 -2
  165. package/dist/services/issues.helpers.js.map +1 -1
  166. package/dist/services/issues.js +5 -2
  167. package/dist/services/issues.js.map +1 -1
  168. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts.map +1 -1
  169. package/dist/services/knowledge-portability/organization-skills.catalog.js +7 -1
  170. package/dist/services/knowledge-portability/organization-skills.catalog.js.map +1 -1
  171. package/dist/services/messenger.d.ts.map +1 -1
  172. package/dist/services/messenger.js +11 -9
  173. package/dist/services/messenger.js.map +1 -1
  174. package/dist/services/organization-workspace-browser.d.ts.map +1 -1
  175. package/dist/services/organization-workspace-browser.js +19 -3
  176. package/dist/services/organization-workspace-browser.js.map +1 -1
  177. package/dist/services/orgs.d.ts.map +1 -1
  178. package/dist/services/orgs.js +36 -12
  179. package/dist/services/orgs.js.map +1 -1
  180. package/dist/services/plugin-dev-watcher.d.ts +19 -2
  181. package/dist/services/plugin-dev-watcher.d.ts.map +1 -1
  182. package/dist/services/plugin-dev-watcher.js +45 -11
  183. package/dist/services/plugin-dev-watcher.js.map +1 -1
  184. package/dist/services/plugin-registry.d.ts +28 -28
  185. package/dist/services/projects.d.ts +1 -1
  186. package/dist/services/run-events.d.ts +20 -0
  187. package/dist/services/run-events.d.ts.map +1 -0
  188. package/dist/services/run-events.js +34 -0
  189. package/dist/services/run-events.js.map +1 -0
  190. package/dist/services/run-intelligence.d.ts +16 -4
  191. package/dist/services/run-intelligence.d.ts.map +1 -1
  192. package/dist/services/run-intelligence.js +90 -15
  193. package/dist/services/run-intelligence.js.map +1 -1
  194. package/dist/services/runtime-kernel/heartbeat.core.d.ts +23 -0
  195. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  196. package/dist/services/runtime-kernel/heartbeat.core.js +1 -0
  197. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  198. package/dist/services/runtime-kernel/heartbeat.d.ts +95 -37
  199. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  200. package/dist/services/runtime-kernel/heartbeat.execute.d.ts +3 -1
  201. package/dist/services/runtime-kernel/heartbeat.execute.d.ts.map +1 -1
  202. package/dist/services/runtime-kernel/heartbeat.execute.js +389 -219
  203. package/dist/services/runtime-kernel/heartbeat.execute.js.map +1 -1
  204. package/dist/services/runtime-kernel/heartbeat.js +594 -204
  205. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  206. package/dist/services/runtime-kernel/heartbeat.misc.d.ts.map +1 -1
  207. package/dist/services/runtime-kernel/heartbeat.misc.js +34 -24
  208. package/dist/services/runtime-kernel/heartbeat.misc.js.map +1 -1
  209. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -1
  210. package/dist/services/runtime-kernel/heartbeat.recovery.js +56 -6
  211. package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
  212. package/dist/services/runtime-kernel/heartbeat.release.d.ts +3 -1
  213. package/dist/services/runtime-kernel/heartbeat.release.d.ts.map +1 -1
  214. package/dist/services/runtime-kernel/heartbeat.release.js +276 -44
  215. package/dist/services/runtime-kernel/heartbeat.release.js.map +1 -1
  216. package/dist/services/runtime-kernel/heartbeat.sessions.d.ts +42 -1
  217. package/dist/services/runtime-kernel/heartbeat.sessions.d.ts.map +1 -1
  218. package/dist/services/runtime-kernel/heartbeat.sessions.js +110 -8
  219. package/dist/services/runtime-kernel/heartbeat.sessions.js.map +1 -1
  220. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts +575 -0
  221. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts.map +1 -0
  222. package/dist/services/runtime-kernel/heartbeat.terminal.js +589 -0
  223. package/dist/services/runtime-kernel/heartbeat.terminal.js.map +1 -0
  224. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -1
  225. package/dist/services/runtime-kernel/heartbeat.wakeup.js +238 -92
  226. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
  227. package/dist/services/runtime-kernel/model-fallback.d.ts.map +1 -1
  228. package/dist/services/runtime-kernel/model-fallback.js +11 -0
  229. package/dist/services/runtime-kernel/model-fallback.js.map +1 -1
  230. package/dist/services/side-chats.d.ts +212 -0
  231. package/dist/services/side-chats.d.ts.map +1 -0
  232. package/dist/services/side-chats.js +379 -0
  233. package/dist/services/side-chats.js.map +1 -0
  234. package/dist/services/workspace-runtime.services.d.ts +1 -1
  235. package/dist/services/workspace-web-preview.d.ts +36 -0
  236. package/dist/services/workspace-web-preview.d.ts.map +1 -0
  237. package/dist/services/workspace-web-preview.js +566 -0
  238. package/dist/services/workspace-web-preview.js.map +1 -0
  239. package/package.json +13 -13
  240. package/resources/bundled-skills/rudder-docs/SKILL.md +161 -0
  241. package/resources/bundled-skills/rudder-docs/evals/trigger-evals.json +82 -0
  242. package/{skills/rudder → resources/bundled-skills/rudder-docs}/references/api-reference.md +17 -1
  243. package/{skills/rudder → resources/bundled-skills/rudder-docs}/references/cli-reference.md +49 -94
  244. package/resources/bundled-skills/rudder-docs/references/control-plane-practices.md +231 -0
  245. package/{skills/rudder → resources/bundled-skills/rudder-docs}/references/organization-skills.md +15 -1
  246. package/resources/bundled-skills/rudder-docs/references/source-map.md +138 -0
  247. package/resources/bundled-skills/visualize/SKILL.md +132 -0
  248. package/resources/bundled-skills/visualize/agents/openai.yaml +7 -0
  249. package/resources/bundled-skills/visualize/assets/example-chart.html +89 -0
  250. package/resources/bundled-skills/visualize/references/runtime-contract.md +114 -0
  251. package/skills/rudder-docs/SKILL.md +161 -0
  252. package/skills/rudder-docs/evals/trigger-evals.json +82 -0
  253. package/{resources/bundled-skills/rudder → skills/rudder-docs}/references/api-reference.md +17 -1
  254. package/{resources/bundled-skills/rudder → skills/rudder-docs}/references/cli-reference.md +49 -94
  255. package/skills/rudder-docs/references/control-plane-practices.md +231 -0
  256. package/{resources/bundled-skills/rudder → skills/rudder-docs}/references/organization-skills.md +15 -1
  257. package/skills/rudder-docs/references/source-map.md +138 -0
  258. package/skills/visualize/SKILL.md +132 -0
  259. package/skills/visualize/agents/openai.yaml +7 -0
  260. package/skills/visualize/assets/example-chart.html +89 -0
  261. package/skills/visualize/references/runtime-contract.md +114 -0
  262. package/ui-dist/assets/{abnfDiagram-VRR7QNED-CKLAbEpH.js → abnfDiagram-VRR7QNED-Dpnx79fp.js} +1 -1
  263. package/ui-dist/assets/{arc-CS20WjB1.js → arc-Cpvh_rCf.js} +1 -1
  264. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-BY4lounK.js → architectureDiagram-ZJ3FMSHR-sDD_mBAI.js} +1 -1
  265. package/ui-dist/assets/{blockDiagram-677ZJIJ3-BHtHl-hm.js → blockDiagram-677ZJIJ3-4O4wWti1.js} +1 -1
  266. package/ui-dist/assets/{c4Diagram-LMCZKHZV-DgOJp7yn.js → c4Diagram-LMCZKHZV-BkGODE4P.js} +1 -1
  267. package/ui-dist/assets/channel-CM4Myg_6.js +1 -0
  268. package/ui-dist/assets/{chunk-2Q5K7J3B-Uin6HTPH.js → chunk-2Q5K7J3B-DsDQQpID.js} +1 -1
  269. package/ui-dist/assets/{chunk-32BRIVSS-BxAI7yMx.js → chunk-32BRIVSS-Bzx_VnIw.js} +1 -1
  270. package/ui-dist/assets/{chunk-5VM5RSS4-Ce6AR6Sg.js → chunk-5VM5RSS4-D4LoPCni.js} +1 -1
  271. package/ui-dist/assets/{chunk-EX3LRPZG-DgxPO59e.js → chunk-EX3LRPZG-BO0R-mS4.js} +3 -3
  272. package/ui-dist/assets/{chunk-JWPE2WC7-Bn3BYmxA.js → chunk-JWPE2WC7-B4Nr8KRL.js} +1 -1
  273. package/ui-dist/assets/{chunk-MOJQB5TN-BlTdGU58.js → chunk-MOJQB5TN--uaDDrYM.js} +1 -1
  274. package/ui-dist/assets/{chunk-RYQCIY6F-C0V6evNH.js → chunk-RYQCIY6F-CyBY2w_j.js} +1 -1
  275. package/ui-dist/assets/{chunk-V7JOEXUC-DjvZ40fp.js → chunk-V7JOEXUC-BMid_x8S.js} +3 -3
  276. package/ui-dist/assets/{chunk-VR4S4FIN-CejmQVxi.js → chunk-VR4S4FIN-DVqdPKuG.js} +1 -1
  277. package/ui-dist/assets/{chunk-XXDRQBXY-tj-vHLHN.js → chunk-XXDRQBXY-vy03lLSS.js} +1 -1
  278. package/ui-dist/assets/classDiagram-OUVF2IWQ-CtlIEzTt.js +1 -0
  279. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CtlIEzTt.js +1 -0
  280. package/ui-dist/assets/{cose-bilkent-JH36ORCC-Ci7DAkTj.js → cose-bilkent-JH36ORCC-jQDZmrG3.js} +1 -1
  281. package/ui-dist/assets/{cynefin-VYW2F7L2-CHU2plsQ.js → cynefin-VYW2F7L2-BxBj6aea.js} +1 -1
  282. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-pqqNoczb.js → cynefinDiagram-TSTJHNR4-BuUubF5I.js} +1 -1
  283. package/ui-dist/assets/{dagre-VKFMJZFB-Bk8Y_kGf.js → dagre-VKFMJZFB-B8HipJ3a.js} +1 -1
  284. package/ui-dist/assets/{diagram-FQU43EPY-CiSxIS2M.js → diagram-FQU43EPY-r7gkbKSt.js} +2 -2
  285. package/ui-dist/assets/{diagram-G47NLZAW-qpVsOLnz.js → diagram-G47NLZAW-CxClRsxD.js} +1 -1
  286. package/ui-dist/assets/{diagram-NH7WQ7WH-Cda5JA3K.js → diagram-NH7WQ7WH-C8HYTLlq.js} +1 -1
  287. package/ui-dist/assets/{diagram-OA4YK3LP-Dh_DdE2d.js → diagram-OA4YK3LP-CjwqqLKz.js} +1 -1
  288. package/ui-dist/assets/{diagram-WEI45ONY-r5ouUhNZ.js → diagram-WEI45ONY-2IWfCqZb.js} +1 -1
  289. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-C6lDAmmi.js → ebnfDiagram-CCIWWBDH-DVGZkgjy.js} +1 -1
  290. package/ui-dist/assets/{erDiagram-Q63AITRT-BznPfnRu.js → erDiagram-Q63AITRT-C_-u3Gmw.js} +1 -1
  291. package/ui-dist/assets/{flowDiagram-23GEKE2U-bCaogpDj.js → flowDiagram-23GEKE2U-BvGg0NCq.js} +4 -4
  292. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-Bn-e5kP6.js → ganttDiagram-NO4QXBWP-U3CZUUUR.js} +1 -1
  293. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-D7E-RLhl.js → gitGraphDiagram-IHSO6WYX-CIWuEBIo.js} +1 -1
  294. package/ui-dist/assets/{graph-3haZvvEy.js → graph-D3P5q-7m.js} +1 -1
  295. package/ui-dist/assets/index-B1rLBtZ1.js +1875 -0
  296. package/ui-dist/assets/{index-BUneV0z1.js → index-BAMXpiI5.js} +1 -1
  297. package/ui-dist/assets/{index-CheuLaX8.js → index-BAgtKYR1.js} +1 -1
  298. package/ui-dist/assets/{index-BDji4WI2.js → index-CBOr9F6w.js} +1 -1
  299. package/ui-dist/assets/{index-DlcNrNku.js → index-CbHqnWUe.js} +1 -1
  300. package/ui-dist/assets/{index-C1NcizE3.js → index-CjztBLJi.js} +1 -1
  301. package/ui-dist/assets/{index-JqztCnnf.js → index-Cu1iMhjl.js} +1 -1
  302. package/ui-dist/assets/{index-BFnwTV9t.js → index-D7ycf1qU.js} +1 -1
  303. package/ui-dist/assets/{index-JLGi6sfB.js → index-DAYlwxsg.js} +1 -1
  304. package/ui-dist/assets/{index-Bje1DqHh.js → index-DCFf9dps.js} +4 -4
  305. package/ui-dist/assets/{index-zyCQr__a.js → index-DOPIV8vd.js} +1 -1
  306. package/ui-dist/assets/{index-JEy5ZJbE.js → index-DRxLJD40.js} +1 -1
  307. package/ui-dist/assets/{index-Doc88zxN.js → index-DYMtCDKT.js} +1 -1
  308. package/ui-dist/assets/index-DekHKOsL.css +1 -0
  309. package/ui-dist/assets/{index-BN3GMGqN.js → index-DidCCw78.js} +1 -1
  310. package/ui-dist/assets/{index-DKRH0hjR.js → index-Ds_qma4-.js} +1 -1
  311. package/ui-dist/assets/{index-B2bHoMTu.js → index-HkQRx1D6.js} +1 -1
  312. package/ui-dist/assets/{index-DLxzQvPB.js → index-ikpL--zj.js} +1 -1
  313. package/ui-dist/assets/{index-mE0kmjy0.js → index-mnl55Stn.js} +1 -1
  314. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-NSQ6saR1.js → infoDiagram-FWYZ7A6U-Cx8Fa-I4.js} +1 -1
  315. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-XhGk3DMM.js → ishikawaDiagram-FXEZZL3T-Cmuz1QUN.js} +1 -1
  316. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-CUyh1IKu.js → journeyDiagram-5HDEW3XC-CJgkiVXG.js} +1 -1
  317. package/ui-dist/assets/{kanban-definition-HUTT4EX6-P_0zllUc.js → kanban-definition-HUTT4EX6-RAWpefOB.js} +1 -1
  318. package/ui-dist/assets/layout-DyWQv0Rr.js +1 -0
  319. package/ui-dist/assets/{linear-DWu-hp7y.js → linear-D5pdgIf9.js} +1 -1
  320. package/ui-dist/assets/{map-B2IiHu-a.js → map-bVSzNLl2.js} +1 -1
  321. package/ui-dist/assets/mermaid.core-CeaXGD6B.js +312 -0
  322. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-DpKo7DKc.js → mindmap-definition-LN4V7U3C-B8B8AX5C.js} +1 -1
  323. package/ui-dist/assets/{pegDiagram-2B236MQR-DzDDMRRX.js → pegDiagram-2B236MQR-C4Sv-ua6.js} +1 -1
  324. package/ui-dist/assets/{pieDiagram-ENE6RG2P-Dr7ZCi_a.js → pieDiagram-ENE6RG2P-CLARlOHx.js} +1 -1
  325. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-BB_gv9s9.js → quadrantDiagram-ABIIQ3AL-DPCXQmeT.js} +1 -1
  326. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-C2ji_jMN.js → railroadDiagram-RFXS5EU6-BpqRuKUQ.js} +1 -1
  327. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-BJg8vYwc.js → requirementDiagram-TGXJPOKE-Dd-h62HZ.js} +1 -1
  328. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-msvrlvO_.js → sankeyDiagram-HTMAVEWB-DylT_pqq.js} +1 -1
  329. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-B_B68qK5.js → sequenceDiagram-DBY2YBRQ-RiCF1REj.js} +1 -1
  330. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-D0VdKiQi.js → sizeCapture-X5ZJPWSS-DXW4JQz2.js} +1 -1
  331. package/ui-dist/assets/{stateDiagram-2N3HPSRC-B4V-owEQ.js → stateDiagram-2N3HPSRC-6U3ESIGT.js} +1 -1
  332. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-KQTrcZvp.js +1 -0
  333. package/ui-dist/assets/{swimlanes-5IMT3BWC-B1JTwGb7.js → swimlanes-5IMT3BWC-CeNHVNCi.js} +2 -2
  334. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-CcxS1c6r.js +8 -0
  335. package/ui-dist/assets/{timeline-definition-FHXFAJF6-C-8YlQA9.js → timeline-definition-FHXFAJF6-Vlwoe_1b.js} +1 -1
  336. package/ui-dist/assets/{vennDiagram-L72KCM5P-DP13xuPX.js → vennDiagram-L72KCM5P-DBP7D3HE.js} +6 -6
  337. package/ui-dist/assets/{wardleyDiagram-EHGQE667-D6BNPJwb.js → wardleyDiagram-EHGQE667-DG-wzqpy.js} +1 -1
  338. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-my7CwP2H.js → xychartDiagram-FW5EYKEG-BAq3mbha.js} +1 -1
  339. package/ui-dist/index.html +2 -2
  340. package/resources/bundled-skills/rudder/SKILL.md +0 -314
  341. package/skills/rudder/SKILL.md +0 -314
  342. package/ui-dist/assets/channel-D-nDuwao.js +0 -1
  343. package/ui-dist/assets/classDiagram-OUVF2IWQ-Ds2nJ2Kt.js +0 -1
  344. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-Ds2nJ2Kt.js +0 -1
  345. package/ui-dist/assets/index-BA7XbHmf.css +0 -1
  346. package/ui-dist/assets/index-hE0ZX3Ud.js +0 -1820
  347. package/ui-dist/assets/layout-C-tMX-j8.js +0 -1
  348. package/ui-dist/assets/mermaid.core-WA5rvr0F.js +0 -314
  349. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-DAB9Vdyb.js +0 -1
  350. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-DRt36f68.js +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"model-fallback.d.ts","sourceRoot":"","sources":["../../../src/services/runtime-kernel/model-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAG3B,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAMvC,UAAU,6BAA6B;IACrC,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,wBAAwB,GAAG,IAAI,CAAC;IAC/E,eAAe,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACnE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACzG;AAwID,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AA2FD,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,wBAAwB,EACjC,GAAG,EAAE,4BAA4B,EACjC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,2BAA2B,CAAC,CAwEtC"}
1
+ {"version":3,"file":"model-fallback.d.ts","sourceRoot":"","sources":["../../../src/services/runtime-kernel/model-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAG3B,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAMvC,UAAU,6BAA6B;IACrC,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,wBAAwB,GAAG,IAAI,CAAC;IAC/E,eAAe,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACnE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACzG;AAwID,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AA2FD,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,wBAAwB,EACjC,GAAG,EAAE,4BAA4B,EACjC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,2BAA2B,CAAC,CAkFtC"}
@@ -201,8 +201,15 @@ export async function executeAdapterWithModelFallbacks(adapter, ctx, options = {
201
201
  if (attempt.isFallback) {
202
202
  await ctx.onLog("stdout", `[rudder] ${describeFailure(previousFailure)}; retrying with fallback model ${attempt.fallbackIndex}/${attempt.totalFallbacks}: ${attemptRuntimeType}/${attempt.model}\n`);
203
203
  }
204
+ let controlAttempt = null;
204
205
  try {
205
206
  const attemptConfig = buildAttemptConfig(ctx.config, attempt, ctx.agent.agentRuntimeType ?? adapter.type, attemptRuntimeType, browserCapabilitySource);
207
+ controlAttempt = await ctx.controlCoordinator?.beginAttempt({
208
+ attemptIndex: attempt.index,
209
+ runtimeType: attemptRuntimeType,
210
+ model: attempt.model,
211
+ isFallback: attempt.isFallback,
212
+ }) ?? null;
206
213
  await options.onAttemptStart?.(attempt, attemptAdapter);
207
214
  const result = await attemptAdapter.execute({
208
215
  ...ctx,
@@ -215,6 +222,7 @@ export async function executeAdapterWithModelFallbacks(adapter, ctx, options = {
215
222
  context: buildAttemptContext(ctx.context, attempt),
216
223
  runtime: attempt.isFallback ? clearRuntimeSession(ctx.runtime) : ctx.runtime,
217
224
  authToken: options.createAuthToken?.(attemptRuntimeType) ?? ctx.authToken,
225
+ controlAttempt: controlAttempt ?? undefined,
218
226
  onMeta: ctx.onMeta
219
227
  ? async (meta) => {
220
228
  await ctx.onMeta?.(wrapMeta(meta, attempt, previousFailure));
@@ -233,6 +241,9 @@ export async function executeAdapterWithModelFallbacks(adapter, ctx, options = {
233
241
  }
234
242
  previousFailure = err;
235
243
  }
244
+ finally {
245
+ await controlAttempt?.complete();
246
+ }
236
247
  }
237
248
  if (previousFailure instanceof Error)
238
249
  throw previousFailure;
@@ -1 +1 @@
1
- {"version":3,"file":"model-fallback.js","sourceRoot":"","sources":["../../../src/services/runtime-kernel/model-fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-fallback.js","sourceRoot":"","sources":["../../../src/services/runtime-kernel/model-fallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import type { Db } from "@rudderhq/db";
2
+ import type { ChatConversation } from "@rudderhq/shared";
3
+ export declare const SIDE_CHAT_TTL_MS: number;
4
+ export declare function sideChatService(db: Db): {
5
+ create: (input: {
6
+ sourceConversationId: string;
7
+ sourceMessageId: string;
8
+ clientMutationId: string;
9
+ orgId: string;
10
+ userId: string;
11
+ }) => Promise<{
12
+ status: ChatConversation["status"];
13
+ conversationKind: ChatConversation["conversationKind"];
14
+ sideChatState: ChatConversation["sideChatState"];
15
+ issueCreationMode: ChatConversation["issueCreationMode"];
16
+ latestReplyPreview: null;
17
+ latestUserMessagePreview: null;
18
+ userMessageCount: number;
19
+ primaryIssue: null;
20
+ contextLinks: never[];
21
+ sourceMetadata: null;
22
+ mutability: "native_chat";
23
+ lastReadAt: null;
24
+ isPinned: false;
25
+ unreadCount: number;
26
+ isUnread: false;
27
+ needsAttention: false;
28
+ chatRuntime: {
29
+ sourceType: "unconfigured";
30
+ sourceLabel: string;
31
+ runtimeAgentId: null;
32
+ agentRuntimeType: null;
33
+ model: null;
34
+ available: false;
35
+ error: null;
36
+ };
37
+ id: string;
38
+ orgId: string;
39
+ messengerVisible: boolean;
40
+ sideChatExpiresAt: Date | null;
41
+ sideChatCompletedAt: Date | null;
42
+ sideChatKeptAt: Date | null;
43
+ sideChatClientMutationId: string | null;
44
+ title: string;
45
+ summary: string | null;
46
+ preferredAgentId: string | null;
47
+ routedAgentId: string | null;
48
+ primaryIssueId: string | null;
49
+ forkedFromConversationId: string | null;
50
+ forkedFromMessageId: string | null;
51
+ forkRootConversationId: string | null;
52
+ planMode: boolean;
53
+ createdByUserId: string | null;
54
+ lastMessageAt: Date | null;
55
+ resolvedAt: Date | null;
56
+ createdAt: Date;
57
+ updatedAt: Date;
58
+ }>;
59
+ complete: (input: {
60
+ conversationId: string;
61
+ userId: string;
62
+ }) => Promise<{
63
+ status: ChatConversation["status"];
64
+ conversationKind: ChatConversation["conversationKind"];
65
+ sideChatState: ChatConversation["sideChatState"];
66
+ issueCreationMode: ChatConversation["issueCreationMode"];
67
+ latestReplyPreview: null;
68
+ latestUserMessagePreview: null;
69
+ userMessageCount: number;
70
+ primaryIssue: null;
71
+ contextLinks: never[];
72
+ sourceMetadata: null;
73
+ mutability: "native_chat";
74
+ lastReadAt: null;
75
+ isPinned: false;
76
+ unreadCount: number;
77
+ isUnread: false;
78
+ needsAttention: false;
79
+ chatRuntime: {
80
+ sourceType: "unconfigured";
81
+ sourceLabel: string;
82
+ runtimeAgentId: null;
83
+ agentRuntimeType: null;
84
+ model: null;
85
+ available: false;
86
+ error: null;
87
+ };
88
+ id: string;
89
+ orgId: string;
90
+ messengerVisible: boolean;
91
+ sideChatExpiresAt: Date | null;
92
+ sideChatCompletedAt: Date | null;
93
+ sideChatKeptAt: Date | null;
94
+ sideChatClientMutationId: string | null;
95
+ title: string;
96
+ summary: string | null;
97
+ preferredAgentId: string | null;
98
+ routedAgentId: string | null;
99
+ primaryIssueId: string | null;
100
+ forkedFromConversationId: string | null;
101
+ forkedFromMessageId: string | null;
102
+ forkRootConversationId: string | null;
103
+ planMode: boolean;
104
+ createdByUserId: string | null;
105
+ lastMessageAt: Date | null;
106
+ resolvedAt: Date | null;
107
+ createdAt: Date;
108
+ updatedAt: Date;
109
+ }>;
110
+ keepInMessenger: (input: {
111
+ conversationId: string;
112
+ userId: string;
113
+ }) => Promise<{
114
+ status: ChatConversation["status"];
115
+ conversationKind: ChatConversation["conversationKind"];
116
+ sideChatState: ChatConversation["sideChatState"];
117
+ issueCreationMode: ChatConversation["issueCreationMode"];
118
+ latestReplyPreview: null;
119
+ latestUserMessagePreview: null;
120
+ userMessageCount: number;
121
+ primaryIssue: null;
122
+ contextLinks: never[];
123
+ sourceMetadata: null;
124
+ mutability: "native_chat";
125
+ lastReadAt: null;
126
+ isPinned: false;
127
+ unreadCount: number;
128
+ isUnread: false;
129
+ needsAttention: false;
130
+ chatRuntime: {
131
+ sourceType: "unconfigured";
132
+ sourceLabel: string;
133
+ runtimeAgentId: null;
134
+ agentRuntimeType: null;
135
+ model: null;
136
+ available: false;
137
+ error: null;
138
+ };
139
+ id: string;
140
+ orgId: string;
141
+ messengerVisible: boolean;
142
+ sideChatExpiresAt: Date | null;
143
+ sideChatCompletedAt: Date | null;
144
+ sideChatKeptAt: Date | null;
145
+ sideChatClientMutationId: string | null;
146
+ title: string;
147
+ summary: string | null;
148
+ preferredAgentId: string | null;
149
+ routedAgentId: string | null;
150
+ primaryIssueId: string | null;
151
+ forkedFromConversationId: string | null;
152
+ forkedFromMessageId: string | null;
153
+ forkRootConversationId: string | null;
154
+ planMode: boolean;
155
+ createdByUserId: string | null;
156
+ lastMessageAt: Date | null;
157
+ resolvedAt: Date | null;
158
+ createdAt: Date;
159
+ updatedAt: Date;
160
+ }>;
161
+ assertAccessible: (conversation: ChatConversation, userId: string | null) => Promise<ChatConversation>;
162
+ assertMutable: (conversation: ChatConversation, userId: string | null, now?: Date) => Promise<ChatConversation>;
163
+ touch: (conversation: ChatConversation, userId: string | null, at?: Date) => Promise<ChatConversation | {
164
+ status: ChatConversation["status"];
165
+ conversationKind: ChatConversation["conversationKind"];
166
+ sideChatState: ChatConversation["sideChatState"];
167
+ issueCreationMode: ChatConversation["issueCreationMode"];
168
+ latestReplyPreview: null;
169
+ latestUserMessagePreview: null;
170
+ userMessageCount: number;
171
+ primaryIssue: null;
172
+ contextLinks: never[];
173
+ sourceMetadata: null;
174
+ mutability: "native_chat";
175
+ lastReadAt: null;
176
+ isPinned: false;
177
+ unreadCount: number;
178
+ isUnread: false;
179
+ needsAttention: false;
180
+ chatRuntime: {
181
+ sourceType: "unconfigured";
182
+ sourceLabel: string;
183
+ runtimeAgentId: null;
184
+ agentRuntimeType: null;
185
+ model: null;
186
+ available: false;
187
+ error: null;
188
+ };
189
+ id: string;
190
+ orgId: string;
191
+ messengerVisible: boolean;
192
+ sideChatExpiresAt: Date | null;
193
+ sideChatCompletedAt: Date | null;
194
+ sideChatKeptAt: Date | null;
195
+ sideChatClientMutationId: string | null;
196
+ title: string;
197
+ summary: string | null;
198
+ preferredAgentId: string | null;
199
+ routedAgentId: string | null;
200
+ primaryIssueId: string | null;
201
+ forkedFromConversationId: string | null;
202
+ forkedFromMessageId: string | null;
203
+ forkRootConversationId: string | null;
204
+ planMode: boolean;
205
+ createdByUserId: string | null;
206
+ lastMessageAt: Date | null;
207
+ resolvedAt: Date | null;
208
+ createdAt: Date;
209
+ updatedAt: Date;
210
+ }>;
211
+ };
212
+ //# sourceMappingURL=side-chats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-chats.d.ts","sourceRoot":"","sources":["../../src/services/side-chats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAUvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,eAAO,MAAM,gBAAgB,QAAqB,CAAC;AAUnD,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE;oBAgHP;QAC3B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;gBAvFkC,gBAAgB,CAAC,QAAQ,CAAC;0BACN,gBAAgB,CAAC,kBAAkB,CAAC;uBAC1C,gBAAgB,CAAC,eAAe,CAAC;2BACzB,gBAAgB,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA6Q/D;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;gBAhRtC,gBAAgB,CAAC,QAAQ,CAAC;0BACN,gBAAgB,CAAC,kBAAkB,CAAC;uBAC1C,gBAAgB,CAAC,eAAe,CAAC;2BACzB,gBAAgB,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAkTxD;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;gBArT7C,gBAAgB,CAAC,QAAQ,CAAC;0BACN,gBAAgB,CAAC,kBAAkB,CAAC;uBAC1C,gBAAgB,CAAC,eAAe,CAAC;2BACzB,gBAAgB,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAyBhD,gBAAgB,UAAU,MAAM,GAAG,IAAI;kCAoB1C,gBAAgB,UAAU,MAAM,GAAG,IAAI;0BAe/C,gBAAgB,UAAU,MAAM,GAAG,IAAI;gBA/DvC,gBAAgB,CAAC,QAAQ,CAAC;0BACN,gBAAgB,CAAC,kBAAkB,CAAC;uBAC1C,gBAAgB,CAAC,eAAe,CAAC;2BACzB,gBAAgB,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6Y/F"}
@@ -0,0 +1,379 @@
1
+ import { chatAttachments, chatContextLinks, chatConversations, chatGenerations, chatMessages, messengerCustomGroupEntries, messengerCustomGroups, } from "@rudderhq/db";
2
+ import { and, asc, desc, eq, inArray, isNull } from "drizzle-orm";
3
+ import { randomUUID } from "node:crypto";
4
+ import { conflict, notFound, unprocessable } from "../errors.js";
5
+ export const SIDE_CHAT_TTL_MS = 2 * 60 * 60 * 1000;
6
+ const ACTIVE_GENERATION_STATUSES = ["active", "starting", "running", "tool_busy", "closing"];
7
+ function expiresAtFrom(at) {
8
+ return new Date(at.getTime() + SIDE_CHAT_TTL_MS);
9
+ }
10
+ export function sideChatService(db) {
11
+ function assertOwner(conversation, userId) {
12
+ if (conversation.conversationKind !== "side_chat")
13
+ return;
14
+ if (!userId || conversation.createdByUserId !== userId) {
15
+ throw notFound("Chat conversation not found");
16
+ }
17
+ }
18
+ async function getRaw(conversationId) {
19
+ return db
20
+ .select()
21
+ .from(chatConversations)
22
+ .where(eq(chatConversations.id, conversationId))
23
+ .then((rows) => rows[0] ?? null);
24
+ }
25
+ async function getOwnedSideChat(conversationId, userId) {
26
+ const conversation = await getRaw(conversationId);
27
+ if (!conversation || conversation.conversationKind !== "side_chat") {
28
+ throw notFound("Side Chat not found");
29
+ }
30
+ assertOwner(conversation, userId);
31
+ return conversation;
32
+ }
33
+ async function hydrated(conversationId, userId) {
34
+ const conversation = await getRaw(conversationId);
35
+ if (!conversation)
36
+ throw notFound("Side Chat not found");
37
+ assertOwner(conversation, userId);
38
+ return {
39
+ ...conversation,
40
+ status: conversation.status,
41
+ conversationKind: conversation.conversationKind,
42
+ sideChatState: conversation.sideChatState,
43
+ issueCreationMode: conversation.issueCreationMode,
44
+ latestReplyPreview: null,
45
+ latestUserMessagePreview: null,
46
+ userMessageCount: 0,
47
+ primaryIssue: null,
48
+ contextLinks: [],
49
+ sourceMetadata: null,
50
+ mutability: "native_chat",
51
+ lastReadAt: null,
52
+ isPinned: false,
53
+ unreadCount: 0,
54
+ isUnread: false,
55
+ needsAttention: false,
56
+ chatRuntime: {
57
+ sourceType: "unconfigured",
58
+ sourceLabel: "Unconfigured",
59
+ runtimeAgentId: null,
60
+ agentRuntimeType: null,
61
+ model: null,
62
+ available: false,
63
+ error: null,
64
+ },
65
+ };
66
+ }
67
+ async function assertAccessible(conversation, userId) {
68
+ assertOwner(conversation, userId);
69
+ return conversation;
70
+ }
71
+ async function markExpired(conversationId, now) {
72
+ await db
73
+ .update(chatConversations)
74
+ .set({
75
+ sideChatState: "expired",
76
+ sideChatExpiresAt: null,
77
+ updatedAt: now,
78
+ })
79
+ .where(and(eq(chatConversations.id, conversationId), eq(chatConversations.conversationKind, "side_chat"), eq(chatConversations.sideChatState, "active")));
80
+ }
81
+ async function assertMutable(conversation, userId, now = new Date()) {
82
+ if (conversation.conversationKind !== "side_chat")
83
+ return conversation;
84
+ assertOwner(conversation, userId);
85
+ if (conversation.sideChatState === "kept")
86
+ return conversation;
87
+ if (conversation.sideChatState !== "active") {
88
+ throw conflict("Side Chat is read-only");
89
+ }
90
+ const expiresAt = conversation.sideChatExpiresAt ? new Date(conversation.sideChatExpiresAt) : null;
91
+ if (!expiresAt || expiresAt.getTime() <= now.getTime()) {
92
+ await markExpired(conversation.id, now);
93
+ throw conflict("Side Chat expired");
94
+ }
95
+ return conversation;
96
+ }
97
+ async function touch(conversation, userId, at = new Date()) {
98
+ if (conversation.conversationKind !== "side_chat" || conversation.sideChatState !== "active") {
99
+ return conversation;
100
+ }
101
+ assertOwner(conversation, userId);
102
+ await db
103
+ .update(chatConversations)
104
+ .set({
105
+ sideChatExpiresAt: expiresAtFrom(at),
106
+ updatedAt: at,
107
+ })
108
+ .where(and(eq(chatConversations.id, conversation.id), eq(chatConversations.sideChatState, "active")));
109
+ return hydrated(conversation.id, userId);
110
+ }
111
+ async function create(input) {
112
+ const createdId = await db.transaction(async (tx) => {
113
+ const existing = await tx
114
+ .select()
115
+ .from(chatConversations)
116
+ .where(and(eq(chatConversations.orgId, input.orgId), eq(chatConversations.createdByUserId, input.userId), eq(chatConversations.sideChatClientMutationId, input.clientMutationId)))
117
+ .then((rows) => rows[0] ?? null);
118
+ if (existing) {
119
+ if (existing.conversationKind !== "side_chat"
120
+ || existing.forkedFromConversationId !== input.sourceConversationId
121
+ || existing.forkedFromMessageId !== input.sourceMessageId) {
122
+ throw conflict("Side Chat creation id was already used for different source context");
123
+ }
124
+ return existing.id;
125
+ }
126
+ const source = await tx
127
+ .select()
128
+ .from(chatConversations)
129
+ .where(and(eq(chatConversations.id, input.sourceConversationId), eq(chatConversations.orgId, input.orgId)))
130
+ .then((rows) => rows[0] ?? null);
131
+ if (!source)
132
+ throw notFound("Chat conversation not found");
133
+ const sourceMessages = await tx
134
+ .select()
135
+ .from(chatMessages)
136
+ .where(and(eq(chatMessages.orgId, input.orgId), eq(chatMessages.conversationId, source.id), isNull(chatMessages.supersededAt)))
137
+ .orderBy(asc(chatMessages.createdAt), asc(chatMessages.id));
138
+ const anchorIndex = sourceMessages.findIndex((message) => message.id === input.sourceMessageId);
139
+ const anchor = anchorIndex >= 0 ? sourceMessages[anchorIndex] : null;
140
+ if (!anchor || anchor.role !== "assistant" || anchor.kind !== "message" || anchor.status !== "completed") {
141
+ throw unprocessable("Side Chat source must be a completed assistant response");
142
+ }
143
+ const now = new Date();
144
+ const rootConversationId = source.forkRootConversationId ?? source.id;
145
+ const [child] = await tx
146
+ .insert(chatConversations)
147
+ .values({
148
+ orgId: input.orgId,
149
+ status: "active",
150
+ conversationKind: "side_chat",
151
+ messengerVisible: false,
152
+ sideChatState: "active",
153
+ sideChatExpiresAt: expiresAtFrom(now),
154
+ sideChatClientMutationId: input.clientMutationId,
155
+ title: "Side Chat",
156
+ summary: source.summary,
157
+ preferredAgentId: source.preferredAgentId,
158
+ routedAgentId: source.routedAgentId,
159
+ primaryIssueId: source.primaryIssueId,
160
+ forkedFromConversationId: source.id,
161
+ forkedFromMessageId: anchor.id,
162
+ forkRootConversationId: rootConversationId,
163
+ issueCreationMode: source.issueCreationMode,
164
+ planMode: source.planMode,
165
+ createdByUserId: input.userId,
166
+ createdAt: now,
167
+ updatedAt: now,
168
+ })
169
+ .onConflictDoNothing()
170
+ .returning();
171
+ if (!child) {
172
+ const raced = await tx
173
+ .select()
174
+ .from(chatConversations)
175
+ .where(and(eq(chatConversations.orgId, input.orgId), eq(chatConversations.createdByUserId, input.userId), eq(chatConversations.sideChatClientMutationId, input.clientMutationId)))
176
+ .then((rows) => rows[0] ?? null);
177
+ if (!raced)
178
+ throw new Error("Failed to create Side Chat");
179
+ if (raced.conversationKind !== "side_chat"
180
+ || raced.forkedFromConversationId !== input.sourceConversationId
181
+ || raced.forkedFromMessageId !== input.sourceMessageId) {
182
+ throw conflict("Side Chat creation id was already used for different source context");
183
+ }
184
+ return raced.id;
185
+ }
186
+ const contextLinks = await tx
187
+ .select()
188
+ .from(chatContextLinks)
189
+ .where(eq(chatContextLinks.conversationId, source.id))
190
+ .orderBy(asc(chatContextLinks.createdAt));
191
+ if (contextLinks.length > 0) {
192
+ await tx
193
+ .insert(chatContextLinks)
194
+ .values(contextLinks.map((link) => ({
195
+ orgId: input.orgId,
196
+ conversationId: child.id,
197
+ entityType: link.entityType,
198
+ entityId: link.entityId,
199
+ metadata: link.metadata,
200
+ })))
201
+ .onConflictDoNothing();
202
+ }
203
+ const copiedMessageIds = new Map();
204
+ for (const message of sourceMessages.slice(0, anchorIndex + 1)) {
205
+ const copiedMessageId = randomUUID();
206
+ copiedMessageIds.set(message.id, copiedMessageId);
207
+ await tx.insert(chatMessages).values({
208
+ id: copiedMessageId,
209
+ orgId: input.orgId,
210
+ conversationId: child.id,
211
+ role: message.role,
212
+ kind: message.kind,
213
+ status: message.status === "streaming" ? "interrupted" : message.status,
214
+ body: message.body,
215
+ structuredPayload: null,
216
+ approvalId: null,
217
+ runId: null,
218
+ replyingAgentId: message.replyingAgentId,
219
+ chatTurnId: null,
220
+ turnVariant: 0,
221
+ createdAt: message.createdAt,
222
+ updatedAt: message.updatedAt,
223
+ });
224
+ }
225
+ const sourceAttachments = copiedMessageIds.size > 0
226
+ ? await tx
227
+ .select()
228
+ .from(chatAttachments)
229
+ .where(inArray(chatAttachments.messageId, [...copiedMessageIds.keys()]))
230
+ .orderBy(asc(chatAttachments.createdAt))
231
+ : [];
232
+ if (sourceAttachments.length > 0) {
233
+ await tx.insert(chatAttachments).values(sourceAttachments.flatMap((attachment) => {
234
+ const copiedMessageId = copiedMessageIds.get(attachment.messageId);
235
+ return copiedMessageId ? [{
236
+ orgId: input.orgId,
237
+ conversationId: child.id,
238
+ messageId: copiedMessageId,
239
+ assetId: attachment.assetId,
240
+ }] : [];
241
+ }));
242
+ }
243
+ const [systemEvent] = await tx
244
+ .insert(chatMessages)
245
+ .values({
246
+ orgId: input.orgId,
247
+ conversationId: child.id,
248
+ role: "system",
249
+ kind: "system_event",
250
+ status: "completed",
251
+ body: `Side Chat started from [${source.title}](chat://${source.id}).`,
252
+ structuredPayload: {
253
+ eventType: "side_chat_started",
254
+ sourceConversationId: source.id,
255
+ sourceConversationTitle: source.title,
256
+ sourceMessageId: anchor.id,
257
+ },
258
+ createdAt: now,
259
+ updatedAt: now,
260
+ })
261
+ .returning();
262
+ await tx
263
+ .update(chatConversations)
264
+ .set({ lastMessageAt: systemEvent?.createdAt ?? now, updatedAt: now })
265
+ .where(eq(chatConversations.id, child.id));
266
+ return child.id;
267
+ });
268
+ return hydrated(createdId, input.userId);
269
+ }
270
+ async function complete(input) {
271
+ const conversation = await getOwnedSideChat(input.conversationId, input.userId);
272
+ if (conversation.sideChatState === "completed")
273
+ return hydrated(conversation.id, input.userId);
274
+ if (conversation.sideChatState !== "active")
275
+ throw conflict("Side Chat is already read-only");
276
+ const activeGeneration = await db
277
+ .select({ id: chatGenerations.id })
278
+ .from(chatGenerations)
279
+ .where(and(eq(chatGenerations.conversationId, conversation.id), inArray(chatGenerations.status, [...ACTIVE_GENERATION_STATUSES])))
280
+ .limit(1)
281
+ .then((rows) => rows[0] ?? null);
282
+ if (activeGeneration)
283
+ throw conflict("Wait for the Side Chat reply to finish");
284
+ const now = new Date();
285
+ const transitioned = await db
286
+ .update(chatConversations)
287
+ .set({
288
+ sideChatState: "completed",
289
+ sideChatExpiresAt: null,
290
+ sideChatCompletedAt: now,
291
+ updatedAt: now,
292
+ })
293
+ .where(and(eq(chatConversations.id, conversation.id), eq(chatConversations.sideChatState, "active")))
294
+ .returning({ id: chatConversations.id });
295
+ if (transitioned.length === 0) {
296
+ const latest = await getOwnedSideChat(conversation.id, input.userId);
297
+ if (latest.sideChatState === "completed")
298
+ return hydrated(conversation.id, input.userId);
299
+ throw conflict("Side Chat is already read-only");
300
+ }
301
+ return hydrated(conversation.id, input.userId);
302
+ }
303
+ async function keepInMessenger(input) {
304
+ const conversation = await getOwnedSideChat(input.conversationId, input.userId);
305
+ if (conversation.sideChatState === "kept" && conversation.messengerVisible) {
306
+ return hydrated(conversation.id, input.userId);
307
+ }
308
+ if (conversation.sideChatState !== "active")
309
+ throw conflict("Only an active Side Chat can be kept in Messenger");
310
+ await db.transaction(async (tx) => {
311
+ const now = new Date();
312
+ const transitioned = await tx
313
+ .update(chatConversations)
314
+ .set({
315
+ status: "active",
316
+ messengerVisible: true,
317
+ sideChatState: "kept",
318
+ sideChatExpiresAt: null,
319
+ sideChatKeptAt: now,
320
+ resolvedAt: null,
321
+ updatedAt: now,
322
+ })
323
+ .where(and(eq(chatConversations.id, conversation.id), eq(chatConversations.sideChatState, "active"), eq(chatConversations.messengerVisible, false)))
324
+ .returning({ id: chatConversations.id });
325
+ if (transitioned.length === 0) {
326
+ const latest = await tx
327
+ .select({ sideChatState: chatConversations.sideChatState, messengerVisible: chatConversations.messengerVisible })
328
+ .from(chatConversations)
329
+ .where(eq(chatConversations.id, conversation.id))
330
+ .then((rows) => rows[0] ?? null);
331
+ if (latest?.sideChatState === "kept" && latest.messengerVisible)
332
+ return;
333
+ throw conflict("Only an active Side Chat can be kept in Messenger");
334
+ }
335
+ const sourceConversationId = conversation.forkedFromConversationId;
336
+ if (!sourceConversationId)
337
+ return;
338
+ const sourceThreadKey = `chat:${sourceConversationId}`;
339
+ const existingGroup = await tx
340
+ .select({ id: messengerCustomGroups.id })
341
+ .from(messengerCustomGroups)
342
+ .innerJoin(messengerCustomGroupEntries, eq(messengerCustomGroupEntries.groupId, messengerCustomGroups.id))
343
+ .where(and(eq(messengerCustomGroups.orgId, conversation.orgId), eq(messengerCustomGroups.userId, input.userId), eq(messengerCustomGroupEntries.threadKey, sourceThreadKey)))
344
+ .orderBy(asc(messengerCustomGroups.sortOrder), asc(messengerCustomGroups.createdAt))
345
+ .limit(1)
346
+ .then((rows) => rows[0] ?? null);
347
+ if (!existingGroup)
348
+ return;
349
+ const lastEntry = await tx
350
+ .select({ sortOrder: messengerCustomGroupEntries.sortOrder })
351
+ .from(messengerCustomGroupEntries)
352
+ .where(and(eq(messengerCustomGroupEntries.orgId, conversation.orgId), eq(messengerCustomGroupEntries.userId, input.userId), eq(messengerCustomGroupEntries.groupId, existingGroup.id)))
353
+ .orderBy(desc(messengerCustomGroupEntries.sortOrder))
354
+ .limit(1)
355
+ .then((rows) => rows[0] ?? null);
356
+ await tx
357
+ .insert(messengerCustomGroupEntries)
358
+ .values({
359
+ orgId: conversation.orgId,
360
+ userId: input.userId,
361
+ groupId: existingGroup.id,
362
+ threadKey: `chat:${conversation.id}`,
363
+ sortOrder: (lastEntry?.sortOrder ?? -1) + 1,
364
+ updatedAt: now,
365
+ })
366
+ .onConflictDoNothing();
367
+ });
368
+ return hydrated(conversation.id, input.userId);
369
+ }
370
+ return {
371
+ create,
372
+ complete,
373
+ keepInMessenger,
374
+ assertAccessible,
375
+ assertMutable,
376
+ touch,
377
+ };
378
+ }
379
+ //# sourceMappingURL=side-chats.js.map