@rudderjs/ai 1.17.2 → 1.18.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 (377) hide show
  1. package/README.md +19 -1274
  2. package/dist/budget-orm/index.d.ts +1 -95
  3. package/dist/budget-orm/index.d.ts.map +1 -1
  4. package/dist/budget-orm/index.js +4 -176
  5. package/dist/budget-orm/index.js.map +1 -1
  6. package/dist/chat-mentions.d.ts +1 -58
  7. package/dist/chat-mentions.d.ts.map +1 -1
  8. package/dist/chat-mentions.js +4 -80
  9. package/dist/chat-mentions.js.map +1 -1
  10. package/dist/commands/ai-eval.d.ts +1 -92
  11. package/dist/commands/ai-eval.d.ts.map +1 -1
  12. package/dist/commands/ai-eval.js +4 -377
  13. package/dist/commands/ai-eval.js.map +1 -1
  14. package/dist/commands/make-agent.d.ts +1 -2
  15. package/dist/commands/make-agent.d.ts.map +1 -1
  16. package/dist/commands/make-agent.js +4 -22
  17. package/dist/commands/make-agent.js.map +1 -1
  18. package/dist/computer-use/index.d.ts +1 -52
  19. package/dist/computer-use/index.d.ts.map +1 -1
  20. package/dist/computer-use/index.js +4 -50
  21. package/dist/computer-use/index.js.map +1 -1
  22. package/dist/conversation-orm/index.d.ts +1 -108
  23. package/dist/conversation-orm/index.d.ts.map +1 -1
  24. package/dist/conversation-orm/index.js +4 -214
  25. package/dist/conversation-orm/index.js.map +1 -1
  26. package/dist/doctor.d.ts +1 -1
  27. package/dist/doctor.d.ts.map +1 -1
  28. package/dist/doctor.js +4 -65
  29. package/dist/doctor.js.map +1 -1
  30. package/dist/eval/index.d.ts +1 -270
  31. package/dist/eval/index.d.ts.map +1 -1
  32. package/dist/eval/index.js +4 -509
  33. package/dist/eval/index.js.map +1 -1
  34. package/dist/gateway/index.d.ts +1 -10
  35. package/dist/gateway/index.d.ts.map +1 -1
  36. package/dist/gateway/index.js +4 -10
  37. package/dist/gateway/index.js.map +1 -1
  38. package/dist/index.d.ts +1 -66
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -78
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp/index.d.ts +1 -15
  43. package/dist/mcp/index.d.ts.map +1 -1
  44. package/dist/mcp/index.js +4 -14
  45. package/dist/mcp/index.js.map +1 -1
  46. package/dist/memory-embedding/index.d.ts +1 -120
  47. package/dist/memory-embedding/index.d.ts.map +1 -1
  48. package/dist/memory-embedding/index.js +4 -228
  49. package/dist/memory-embedding/index.js.map +1 -1
  50. package/dist/memory-orm/index.d.ts +1 -117
  51. package/dist/memory-orm/index.d.ts.map +1 -1
  52. package/dist/memory-orm/index.js +4 -186
  53. package/dist/memory-orm/index.js.map +1 -1
  54. package/dist/node/index.d.ts +1 -2
  55. package/dist/node/index.d.ts.map +1 -1
  56. package/dist/node/index.js +4 -2
  57. package/dist/node/index.js.map +1 -1
  58. package/dist/observers.d.ts +1 -129
  59. package/dist/observers.d.ts.map +1 -1
  60. package/dist/observers.js +4 -39
  61. package/dist/observers.js.map +1 -1
  62. package/dist/react/index.d.ts +1 -15
  63. package/dist/react/index.d.ts.map +1 -1
  64. package/dist/react/index.js +4 -15
  65. package/dist/react/index.js.map +1 -1
  66. package/dist/server/index.d.ts +1 -1
  67. package/dist/server/index.d.ts.map +1 -1
  68. package/dist/server/index.js +4 -1
  69. package/dist/server/index.js.map +1 -1
  70. package/package.json +9 -13
  71. package/boost/guidelines.md +0 -260
  72. package/boost/skills/ai-agents/SKILL.md +0 -240
  73. package/boost/skills/ai-tools/SKILL.md +0 -260
  74. package/dist/agent-run-store.d.ts +0 -161
  75. package/dist/agent-run-store.d.ts.map +0 -1
  76. package/dist/agent-run-store.js +0 -98
  77. package/dist/agent-run-store.js.map +0 -1
  78. package/dist/agent-sse.d.ts +0 -153
  79. package/dist/agent-sse.d.ts.map +0 -1
  80. package/dist/agent-sse.js +0 -282
  81. package/dist/agent-sse.js.map +0 -1
  82. package/dist/agent.d.ts +0 -508
  83. package/dist/agent.d.ts.map +0 -1
  84. package/dist/agent.js +0 -1538
  85. package/dist/agent.js.map +0 -1
  86. package/dist/attachment.d.ts +0 -31
  87. package/dist/attachment.d.ts.map +0 -1
  88. package/dist/attachment.js +0 -89
  89. package/dist/attachment.js.map +0 -1
  90. package/dist/audio.d.ts +0 -45
  91. package/dist/audio.d.ts.map +0 -1
  92. package/dist/audio.js +0 -93
  93. package/dist/audio.js.map +0 -1
  94. package/dist/base64.d.ts +0 -7
  95. package/dist/base64.d.ts.map +0 -1
  96. package/dist/base64.js +0 -39
  97. package/dist/base64.js.map +0 -1
  98. package/dist/budget/pricing.d.ts +0 -124
  99. package/dist/budget/pricing.d.ts.map +0 -1
  100. package/dist/budget/pricing.js +0 -175
  101. package/dist/budget/pricing.js.map +0 -1
  102. package/dist/budget/storage.d.ts +0 -104
  103. package/dist/budget/storage.d.ts.map +0 -1
  104. package/dist/budget/storage.js +0 -0
  105. package/dist/budget/storage.js.map +0 -1
  106. package/dist/budget/with-budget.d.ts +0 -119
  107. package/dist/budget/with-budget.d.ts.map +0 -1
  108. package/dist/budget/with-budget.js +0 -175
  109. package/dist/budget/with-budget.js.map +0 -1
  110. package/dist/cached-embedding.d.ts +0 -14
  111. package/dist/cached-embedding.d.ts.map +0 -1
  112. package/dist/cached-embedding.js +0 -44
  113. package/dist/cached-embedding.js.map +0 -1
  114. package/dist/computer-use/actions.d.ts +0 -214
  115. package/dist/computer-use/actions.d.ts.map +0 -1
  116. package/dist/computer-use/actions.js +0 -48
  117. package/dist/computer-use/actions.js.map +0 -1
  118. package/dist/computer-use/errors.d.ts +0 -57
  119. package/dist/computer-use/errors.d.ts.map +0 -1
  120. package/dist/computer-use/errors.js +0 -76
  121. package/dist/computer-use/errors.js.map +0 -1
  122. package/dist/computer-use/playwright.d.ts +0 -76
  123. package/dist/computer-use/playwright.d.ts.map +0 -1
  124. package/dist/computer-use/playwright.js +0 -270
  125. package/dist/computer-use/playwright.js.map +0 -1
  126. package/dist/computer-use/tool.d.ts +0 -154
  127. package/dist/computer-use/tool.d.ts.map +0 -1
  128. package/dist/computer-use/tool.js +0 -210
  129. package/dist/computer-use/tool.js.map +0 -1
  130. package/dist/continuation-validation.d.ts +0 -85
  131. package/dist/continuation-validation.d.ts.map +0 -1
  132. package/dist/continuation-validation.js +0 -166
  133. package/dist/continuation-validation.js.map +0 -1
  134. package/dist/conversation-persistence.d.ts +0 -46
  135. package/dist/conversation-persistence.d.ts.map +0 -1
  136. package/dist/conversation-persistence.js +0 -176
  137. package/dist/conversation-persistence.js.map +0 -1
  138. package/dist/conversation.d.ts +0 -11
  139. package/dist/conversation.d.ts.map +0 -1
  140. package/dist/conversation.js +0 -55
  141. package/dist/conversation.js.map +0 -1
  142. package/dist/eval/fixtures.d.ts +0 -65
  143. package/dist/eval/fixtures.d.ts.map +0 -1
  144. package/dist/eval/fixtures.js +0 -110
  145. package/dist/eval/fixtures.js.map +0 -1
  146. package/dist/eval/html-reporter.d.ts +0 -25
  147. package/dist/eval/html-reporter.d.ts.map +0 -1
  148. package/dist/eval/html-reporter.js +0 -209
  149. package/dist/eval/html-reporter.js.map +0 -1
  150. package/dist/eval/json-reporter.d.ts +0 -43
  151. package/dist/eval/json-reporter.d.ts.map +0 -1
  152. package/dist/eval/json-reporter.js +0 -40
  153. package/dist/eval/json-reporter.js.map +0 -1
  154. package/dist/facade.d.ts +0 -96
  155. package/dist/facade.d.ts.map +0 -1
  156. package/dist/facade.js +0 -146
  157. package/dist/facade.js.map +0 -1
  158. package/dist/fake.d.ts +0 -201
  159. package/dist/fake.d.ts.map +0 -1
  160. package/dist/fake.js +0 -428
  161. package/dist/fake.js.map +0 -1
  162. package/dist/file-search.d.ts +0 -168
  163. package/dist/file-search.d.ts.map +0 -1
  164. package/dist/file-search.js +0 -158
  165. package/dist/file-search.js.map +0 -1
  166. package/dist/files.d.ts +0 -27
  167. package/dist/files.d.ts.map +0 -1
  168. package/dist/files.js +0 -44
  169. package/dist/files.js.map +0 -1
  170. package/dist/gateway/http-gateway-adapter.d.ts +0 -94
  171. package/dist/gateway/http-gateway-adapter.d.ts.map +0 -1
  172. package/dist/gateway/http-gateway-adapter.js +0 -106
  173. package/dist/gateway/http-gateway-adapter.js.map +0 -1
  174. package/dist/gateway/sse.d.ts +0 -28
  175. package/dist/gateway/sse.d.ts.map +0 -1
  176. package/dist/gateway/sse.js +0 -78
  177. package/dist/gateway/sse.js.map +0 -1
  178. package/dist/handoff.d.ts +0 -95
  179. package/dist/handoff.d.ts.map +0 -1
  180. package/dist/handoff.js +0 -78
  181. package/dist/handoff.js.map +0 -1
  182. package/dist/handoffs-driver.d.ts +0 -58
  183. package/dist/handoffs-driver.d.ts.map +0 -1
  184. package/dist/handoffs-driver.js +0 -103
  185. package/dist/handoffs-driver.js.map +0 -1
  186. package/dist/image.d.ts +0 -40
  187. package/dist/image.d.ts.map +0 -1
  188. package/dist/image.js +0 -109
  189. package/dist/image.js.map +0 -1
  190. package/dist/mcp/client-tools.d.ts +0 -39
  191. package/dist/mcp/client-tools.d.ts.map +0 -1
  192. package/dist/mcp/client-tools.js +0 -147
  193. package/dist/mcp/client-tools.js.map +0 -1
  194. package/dist/mcp/server-from-agent.d.ts +0 -24
  195. package/dist/mcp/server-from-agent.d.ts.map +0 -1
  196. package/dist/mcp/server-from-agent.js +0 -113
  197. package/dist/mcp/server-from-agent.js.map +0 -1
  198. package/dist/mcp/types.d.ts +0 -64
  199. package/dist/mcp/types.d.ts.map +0 -1
  200. package/dist/mcp/types.js +0 -6
  201. package/dist/mcp/types.js.map +0 -1
  202. package/dist/memory-extract.d.ts +0 -60
  203. package/dist/memory-extract.d.ts.map +0 -1
  204. package/dist/memory-extract.js +0 -163
  205. package/dist/memory-extract.js.map +0 -1
  206. package/dist/memory-inject.d.ts +0 -39
  207. package/dist/memory-inject.d.ts.map +0 -1
  208. package/dist/memory-inject.js +0 -135
  209. package/dist/memory-inject.js.map +0 -1
  210. package/dist/memory.d.ts +0 -55
  211. package/dist/memory.d.ts.map +0 -1
  212. package/dist/memory.js +0 -132
  213. package/dist/memory.js.map +0 -1
  214. package/dist/middleware.d.ts +0 -18
  215. package/dist/middleware.d.ts.map +0 -1
  216. package/dist/middleware.js +0 -72
  217. package/dist/middleware.js.map +0 -1
  218. package/dist/node/attachment.d.ts +0 -6
  219. package/dist/node/attachment.d.ts.map +0 -1
  220. package/dist/node/attachment.js +0 -35
  221. package/dist/node/attachment.js.map +0 -1
  222. package/dist/node/transcription.d.ts +0 -4
  223. package/dist/node/transcription.d.ts.map +0 -1
  224. package/dist/node/transcription.js +0 -8
  225. package/dist/node/transcription.js.map +0 -1
  226. package/dist/output.d.ts +0 -22
  227. package/dist/output.d.ts.map +0 -1
  228. package/dist/output.js +0 -60
  229. package/dist/output.js.map +0 -1
  230. package/dist/provider-tools.d.ts +0 -87
  231. package/dist/provider-tools.d.ts.map +0 -1
  232. package/dist/provider-tools.js +0 -189
  233. package/dist/provider-tools.js.map +0 -1
  234. package/dist/providers/anthropic.d.ts +0 -24
  235. package/dist/providers/anthropic.d.ts.map +0 -1
  236. package/dist/providers/anthropic.js +0 -405
  237. package/dist/providers/anthropic.js.map +0 -1
  238. package/dist/providers/azure.d.ts +0 -13
  239. package/dist/providers/azure.d.ts.map +0 -1
  240. package/dist/providers/azure.js +0 -15
  241. package/dist/providers/azure.js.map +0 -1
  242. package/dist/providers/bedrock.d.ts +0 -75
  243. package/dist/providers/bedrock.d.ts.map +0 -1
  244. package/dist/providers/bedrock.js +0 -181
  245. package/dist/providers/bedrock.js.map +0 -1
  246. package/dist/providers/cohere.d.ts +0 -13
  247. package/dist/providers/cohere.d.ts.map +0 -1
  248. package/dist/providers/cohere.js +0 -87
  249. package/dist/providers/cohere.js.map +0 -1
  250. package/dist/providers/deepseek.d.ts +0 -12
  251. package/dist/providers/deepseek.d.ts.map +0 -1
  252. package/dist/providers/deepseek.js +0 -15
  253. package/dist/providers/deepseek.js.map +0 -1
  254. package/dist/providers/elevenlabs.d.ts +0 -98
  255. package/dist/providers/elevenlabs.d.ts.map +0 -1
  256. package/dist/providers/elevenlabs.js +0 -229
  257. package/dist/providers/elevenlabs.js.map +0 -1
  258. package/dist/providers/google-cache-registry.d.ts +0 -132
  259. package/dist/providers/google-cache-registry.d.ts.map +0 -1
  260. package/dist/providers/google-cache-registry.js +0 -209
  261. package/dist/providers/google-cache-registry.js.map +0 -1
  262. package/dist/providers/google.d.ts +0 -38
  263. package/dist/providers/google.d.ts.map +0 -1
  264. package/dist/providers/google.js +0 -903
  265. package/dist/providers/google.js.map +0 -1
  266. package/dist/providers/groq.d.ts +0 -12
  267. package/dist/providers/groq.d.ts.map +0 -1
  268. package/dist/providers/groq.js +0 -15
  269. package/dist/providers/groq.js.map +0 -1
  270. package/dist/providers/jina.d.ts +0 -13
  271. package/dist/providers/jina.d.ts.map +0 -1
  272. package/dist/providers/jina.js +0 -90
  273. package/dist/providers/jina.js.map +0 -1
  274. package/dist/providers/mistral.d.ts +0 -13
  275. package/dist/providers/mistral.d.ts.map +0 -1
  276. package/dist/providers/mistral.js +0 -46
  277. package/dist/providers/mistral.js.map +0 -1
  278. package/dist/providers/ollama.d.ts +0 -11
  279. package/dist/providers/ollama.d.ts.map +0 -1
  280. package/dist/providers/ollama.js +0 -15
  281. package/dist/providers/ollama.js.map +0 -1
  282. package/dist/providers/openai.d.ts +0 -79
  283. package/dist/providers/openai.d.ts.map +0 -1
  284. package/dist/providers/openai.js +0 -792
  285. package/dist/providers/openai.js.map +0 -1
  286. package/dist/providers/openrouter.d.ts +0 -43
  287. package/dist/providers/openrouter.d.ts.map +0 -1
  288. package/dist/providers/openrouter.js +0 -21
  289. package/dist/providers/openrouter.js.map +0 -1
  290. package/dist/providers/voyage.d.ts +0 -91
  291. package/dist/providers/voyage.d.ts.map +0 -1
  292. package/dist/providers/voyage.js +0 -166
  293. package/dist/providers/voyage.js.map +0 -1
  294. package/dist/providers/xai.d.ts +0 -12
  295. package/dist/providers/xai.d.ts.map +0 -1
  296. package/dist/providers/xai.js +0 -15
  297. package/dist/providers/xai.js.map +0 -1
  298. package/dist/queue-job.d.ts +0 -100
  299. package/dist/queue-job.d.ts.map +0 -1
  300. package/dist/queue-job.js +0 -185
  301. package/dist/queue-job.js.map +0 -1
  302. package/dist/react/agent-run.d.ts +0 -111
  303. package/dist/react/agent-run.d.ts.map +0 -1
  304. package/dist/react/agent-run.js +0 -107
  305. package/dist/react/agent-run.js.map +0 -1
  306. package/dist/react/useAgentRun.d.ts +0 -68
  307. package/dist/react/useAgentRun.d.ts.map +0 -1
  308. package/dist/react/useAgentRun.js +0 -125
  309. package/dist/react/useAgentRun.js.map +0 -1
  310. package/dist/registry.d.ts +0 -45
  311. package/dist/registry.d.ts.map +0 -1
  312. package/dist/registry.js +0 -131
  313. package/dist/registry.js.map +0 -1
  314. package/dist/rerank.d.ts +0 -20
  315. package/dist/rerank.d.ts.map +0 -1
  316. package/dist/rerank.js +0 -40
  317. package/dist/rerank.js.map +0 -1
  318. package/dist/resume-approval.d.ts +0 -30
  319. package/dist/resume-approval.d.ts.map +0 -1
  320. package/dist/resume-approval.js +0 -147
  321. package/dist/resume-approval.js.map +0 -1
  322. package/dist/sanitize-conversation.d.ts +0 -43
  323. package/dist/sanitize-conversation.d.ts.map +0 -1
  324. package/dist/sanitize-conversation.js +0 -85
  325. package/dist/sanitize-conversation.js.map +0 -1
  326. package/dist/scoped-tool.d.ts +0 -98
  327. package/dist/scoped-tool.d.ts.map +0 -1
  328. package/dist/scoped-tool.js +0 -174
  329. package/dist/scoped-tool.js.map +0 -1
  330. package/dist/server/provider.d.ts +0 -22
  331. package/dist/server/provider.d.ts.map +0 -1
  332. package/dist/server/provider.js +0 -194
  333. package/dist/server/provider.js.map +0 -1
  334. package/dist/similarity-search.d.ts +0 -163
  335. package/dist/similarity-search.d.ts.map +0 -1
  336. package/dist/similarity-search.js +0 -147
  337. package/dist/similarity-search.js.map +0 -1
  338. package/dist/sub-agent-run-store.d.ts +0 -157
  339. package/dist/sub-agent-run-store.d.ts.map +0 -1
  340. package/dist/sub-agent-run-store.js +0 -87
  341. package/dist/sub-agent-run-store.js.map +0 -1
  342. package/dist/tool-execution.d.ts +0 -16
  343. package/dist/tool-execution.d.ts.map +0 -1
  344. package/dist/tool-execution.js +0 -498
  345. package/dist/tool-execution.js.map +0 -1
  346. package/dist/tool-helpers.d.ts +0 -77
  347. package/dist/tool-helpers.d.ts.map +0 -1
  348. package/dist/tool-helpers.js +0 -117
  349. package/dist/tool-helpers.js.map +0 -1
  350. package/dist/tool.d.ts +0 -216
  351. package/dist/tool.d.ts.map +0 -1
  352. package/dist/tool.js +0 -175
  353. package/dist/tool.js.map +0 -1
  354. package/dist/transcription.d.ts +0 -42
  355. package/dist/transcription.d.ts.map +0 -1
  356. package/dist/transcription.js +0 -77
  357. package/dist/transcription.js.map +0 -1
  358. package/dist/types.d.ts +0 -1020
  359. package/dist/types.d.ts.map +0 -1
  360. package/dist/types.js +0 -2
  361. package/dist/types.js.map +0 -1
  362. package/dist/util/hash.d.ts +0 -11
  363. package/dist/util/hash.d.ts.map +0 -1
  364. package/dist/util/hash.js +0 -23
  365. package/dist/util/hash.js.map +0 -1
  366. package/dist/vector-stores/index.d.ts +0 -96
  367. package/dist/vector-stores/index.d.ts.map +0 -1
  368. package/dist/vector-stores/index.js +0 -153
  369. package/dist/vector-stores/index.js.map +0 -1
  370. package/dist/vercel-protocol.d.ts +0 -18
  371. package/dist/vercel-protocol.d.ts.map +0 -1
  372. package/dist/vercel-protocol.js +0 -75
  373. package/dist/vercel-protocol.js.map +0 -1
  374. package/dist/zod-to-json-schema.d.ts +0 -16
  375. package/dist/zod-to-json-schema.d.ts.map +0 -1
  376. package/dist/zod-to-json-schema.js +0 -17
  377. package/dist/zod-to-json-schema.js.map +0 -1
@@ -1,109 +1,2 @@
1
- /**
2
- * `@rudderjs/ai/conversation-orm` - ORM-backed {@link ConversationStore}.
3
- *
4
- * Production-grade replacement for `MemoryConversationStore` (which is
5
- * single-process, in-memory, and loses every thread on restart). Persists
6
- * conversation threads and their messages via the registered `@rudderjs/orm`
7
- * adapter - works across web processes, queue workers, and horizontally
8
- * scaled deployments. Mirrors the `@rudderjs/ai/memory-orm` /
9
- * `@rudderjs/ai/budget-orm` pattern.
10
- *
11
- * Wire it as the conversation store:
12
- *
13
- * ```ts
14
- * import { setConversationStore } from '@rudderjs/ai'
15
- * import { OrmConversationStore } from '@rudderjs/ai/conversation-orm'
16
- *
17
- * setConversationStore(new OrmConversationStore())
18
- * ```
19
- *
20
- * The schema lives at {@link conversationOrmPrismaSchema} - copy it into your
21
- * Prisma schema (or a new `prisma/schema/<file>.prisma` if you use the
22
- * multi-file setup). On the native engine, add an equivalent migration; on
23
- * Drizzle, define matching tables and register them via `tables: { ... }`.
24
- *
25
- * # Adapter coverage
26
- *
27
- * - Prisma - works out of the box; copy {@link conversationOrmPrismaSchema}.
28
- * - Native - add a migration with the same columns.
29
- * - Drizzle - define the two tables and register them on the `drizzle()`
30
- * config.
31
- *
32
- * # Ordering & concurrency
33
- *
34
- * Messages carry a monotonic per-thread `position` so `load()` returns them
35
- * in append order regardless of timestamp granularity. `append()` reads the
36
- * current max position and assigns the next slots; like
37
- * `OrmBudgetStorage.checkAndDebit`, the read-then-write is not isolated, so
38
- * two concurrent appends to the SAME thread could collide on a position.
39
- * Conversation threads are single-writer in practice (one user, one turn at
40
- * a time), so this is a non-issue for typical apps. File an issue if you hit
41
- * it; strict ordering needs a serializable transaction or a DB sequence.
42
- */
43
- import { Model } from '@rudderjs/orm';
44
- import type { AiMessage, ConversationStore, ConversationStoreListEntry, ConversationStoreMeta } from '../types.js';
45
- /**
46
- * The thread row backing {@link OrmConversationStore}. Exposed so apps that
47
- * want their own queries (admin views, analytics) can use
48
- * `AiConversationRecord.where(...).get()` directly.
49
- *
50
- * `userId` / `agent` mirror {@link ConversationStoreMeta} - `userId` scopes
51
- * `list()`, `agent` carries the thread-segregation key the auto-persist
52
- * machinery uses to keep one user's threads per agent class apart.
53
- */
54
- export declare class AiConversationRecord extends Model {
55
- static table: string;
56
- static fillable: string[];
57
- id: string;
58
- title: string;
59
- userId: string | null;
60
- agent: string | null;
61
- createdAt: Date;
62
- updatedAt: Date | null;
63
- }
64
- /**
65
- * One message row in a thread. `content` and `toolCalls` are JSON-encoded
66
- * strings (so a `string` content and a `ContentPart[]` content both
67
- * round-trip through a portable `text` column); `position` orders them.
68
- */
69
- export declare class AiConversationMessageRecord extends Model {
70
- static table: string;
71
- static fillable: string[];
72
- id: string;
73
- conversationId: string;
74
- position: number;
75
- role: string;
76
- /** JSON-encoded `string | ContentPart[]`. */
77
- content: string;
78
- toolCallId: string | null;
79
- /** JSON-encoded `ToolCall[]` or null. */
80
- toolCalls: string | null;
81
- createdAt: Date;
82
- }
83
- /**
84
- * {@link ConversationStore} implementation that persists rows to the
85
- * registered ORM adapter. Designed for production use - the in-process
86
- * `MemoryConversationStore` is for tests and dev.
87
- */
88
- export declare class OrmConversationStore implements ConversationStore {
89
- create(title?: string, meta?: ConversationStoreMeta): Promise<string>;
90
- load(conversationId: string): Promise<AiMessage[]>;
91
- append(conversationId: string, messages: AiMessage[]): Promise<void>;
92
- setTitle(conversationId: string, title: string): Promise<void>;
93
- list(userId?: string): Promise<ConversationStoreListEntry[]>;
94
- delete(conversationId: string): Promise<void>;
95
- /** Throw the same not-found error shape as `MemoryConversationStore`. */
96
- private requireThread;
97
- /** Next monotonic position for the thread (0 when empty). */
98
- private nextPosition;
99
- }
100
- /** Convenience factory mirroring `ormBudgetStorage()` / `OrmUserMemory`. */
101
- export declare function ormConversationStore(): OrmConversationStore;
102
- /**
103
- * Reference Prisma schema for `OrmConversationStore`. Copy into your
104
- * `prisma/schema/<file>.prisma`. SQLite stores the `text` content as TEXT;
105
- * Postgres as `text`. The `@@index` keeps `list()` (by user) and `load()`
106
- * (by thread, ordered) cheap.
107
- */
108
- export declare const conversationOrmPrismaSchema = "model AiConversation {\n id String @id @default(cuid())\n title String\n userId String?\n /// Thread-segregation key - the agent class name by default\n agent String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n}\n\nmodel AiConversationMessage {\n id String @id @default(cuid())\n conversationId String\n /// Monotonic per-thread ordering\n position Int\n role String\n /// JSON-encoded `string | ContentPart[]`\n content String\n toolCallId String?\n /// JSON-encoded `ToolCall[]` or null\n toolCalls String?\n createdAt DateTime @default(now())\n\n @@index([conversationId, position])\n}\n";
1
+ export * from '@gemstack/ai-sdk/conversation-orm';
109
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation-orm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EAEtB,MAAM,aAAa,CAAA;AAIpB;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,OAAgB,KAAK,SAAsB;IAC3C,OAAgB,QAAQ,WAA4C;IAE5D,EAAE,EAAS,MAAM,CAAA;IACjB,KAAK,EAAM,MAAM,CAAA;IACjB,MAAM,EAAK,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAM,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;CAC/B;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,OAAgB,KAAK,SAA6B;IAClD,OAAgB,QAAQ,WAA+E;IAE/F,EAAE,EAAc,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAQ,MAAM,CAAA;IACtB,IAAI,EAAY,MAAM,CAAA;IAC9B,6CAA6C;IACrC,OAAO,EAAS,MAAM,CAAA;IACtB,UAAU,EAAM,MAAM,GAAG,IAAI,CAAA;IACrC,yCAAyC;IACjC,SAAS,EAAO,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,EAAO,IAAI,CAAA;CAC7B;AAID;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IACtD,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IASrE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAYlD,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAO5D,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,yEAAyE;YAC3D,aAAa;IAK3B,6DAA6D;YAC/C,YAAY;CAO3B;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,IAAI,oBAAoB,CAE3D;AAID;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+tBA2BvC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation-orm/index.ts"],"names":[],"mappings":"AAGA,cAAc,mCAAmC,CAAA"}
@@ -1,215 +1,5 @@
1
- /**
2
- * `@rudderjs/ai/conversation-orm` - ORM-backed {@link ConversationStore}.
3
- *
4
- * Production-grade replacement for `MemoryConversationStore` (which is
5
- * single-process, in-memory, and loses every thread on restart). Persists
6
- * conversation threads and their messages via the registered `@rudderjs/orm`
7
- * adapter - works across web processes, queue workers, and horizontally
8
- * scaled deployments. Mirrors the `@rudderjs/ai/memory-orm` /
9
- * `@rudderjs/ai/budget-orm` pattern.
10
- *
11
- * Wire it as the conversation store:
12
- *
13
- * ```ts
14
- * import { setConversationStore } from '@rudderjs/ai'
15
- * import { OrmConversationStore } from '@rudderjs/ai/conversation-orm'
16
- *
17
- * setConversationStore(new OrmConversationStore())
18
- * ```
19
- *
20
- * The schema lives at {@link conversationOrmPrismaSchema} - copy it into your
21
- * Prisma schema (or a new `prisma/schema/<file>.prisma` if you use the
22
- * multi-file setup). On the native engine, add an equivalent migration; on
23
- * Drizzle, define matching tables and register them via `tables: { ... }`.
24
- *
25
- * # Adapter coverage
26
- *
27
- * - Prisma - works out of the box; copy {@link conversationOrmPrismaSchema}.
28
- * - Native - add a migration with the same columns.
29
- * - Drizzle - define the two tables and register them on the `drizzle()`
30
- * config.
31
- *
32
- * # Ordering & concurrency
33
- *
34
- * Messages carry a monotonic per-thread `position` so `load()` returns them
35
- * in append order regardless of timestamp granularity. `append()` reads the
36
- * current max position and assigns the next slots; like
37
- * `OrmBudgetStorage.checkAndDebit`, the read-then-write is not isolated, so
38
- * two concurrent appends to the SAME thread could collide on a position.
39
- * Conversation threads are single-writer in practice (one user, one turn at
40
- * a time), so this is a non-issue for typical apps. File an issue if you hit
41
- * it; strict ordering needs a serializable transaction or a DB sequence.
42
- */
43
- import { Model } from '@rudderjs/orm';
44
- import { sanitizeConversation } from '../sanitize-conversation.js';
45
- // ─── ORM Models ───────────────────────────────────────────
46
- /**
47
- * The thread row backing {@link OrmConversationStore}. Exposed so apps that
48
- * want their own queries (admin views, analytics) can use
49
- * `AiConversationRecord.where(...).get()` directly.
50
- *
51
- * `userId` / `agent` mirror {@link ConversationStoreMeta} - `userId` scopes
52
- * `list()`, `agent` carries the thread-segregation key the auto-persist
53
- * machinery uses to keep one user's threads per agent class apart.
54
- */
55
- export class AiConversationRecord extends Model {
56
- static table = 'aiConversation';
57
- static fillable = ['title', 'userId', 'agent', 'updatedAt'];
58
- }
59
- /**
60
- * One message row in a thread. `content` and `toolCalls` are JSON-encoded
61
- * strings (so a `string` content and a `ContentPart[]` content both
62
- * round-trip through a portable `text` column); `position` orders them.
63
- */
64
- export class AiConversationMessageRecord extends Model {
65
- static table = 'aiConversationMessage';
66
- static fillable = ['conversationId', 'position', 'role', 'content', 'toolCallId', 'toolCalls'];
67
- }
68
- // ─── ConversationStore adapter ────────────────────────────
69
- /**
70
- * {@link ConversationStore} implementation that persists rows to the
71
- * registered ORM adapter. Designed for production use - the in-process
72
- * `MemoryConversationStore` is for tests and dev.
73
- */
74
- export class OrmConversationStore {
75
- async create(title, meta) {
76
- const data = { title: title ?? 'New conversation' };
77
- if (meta?.userId !== undefined)
78
- data['userId'] = meta.userId;
79
- if (meta?.agent !== undefined)
80
- data['agent'] = meta.agent;
81
- const created = await AiConversationRecord.create(data);
82
- return created.id;
83
- }
84
- async load(conversationId) {
85
- await this.requireThread(conversationId);
86
- const rows = await AiConversationMessageRecord
87
- .where('conversationId', conversationId)
88
- .orderBy('position', 'ASC')
89
- .get();
90
- // A thread persisted mid-turn (crash between the assistant row and its
91
- // tool-result rows) would otherwise replay into a provider 400. Drop the
92
- // incomplete turns at the load boundary so the history is replay-safe.
93
- return sanitizeConversation(rows.map(rowToMessage));
94
- }
95
- async append(conversationId, messages) {
96
- await this.requireThread(conversationId);
97
- if (messages.length === 0)
98
- return;
99
- let position = await this.nextPosition(conversationId);
100
- for (const message of messages) {
101
- await AiConversationMessageRecord.create(messageToRow(conversationId, position, message));
102
- position++;
103
- }
104
- await AiConversationRecord.where('id', conversationId).updateAll({ updatedAt: new Date() });
105
- }
106
- async setTitle(conversationId, title) {
107
- const updated = await AiConversationRecord
108
- .where('id', conversationId)
109
- .updateAll({ title, updatedAt: new Date() });
110
- if (!updated)
111
- throw notFound(conversationId);
112
- }
113
- async list(userId) {
114
- let q = AiConversationRecord.query();
115
- if (userId != null)
116
- q = q.where('userId', userId);
117
- const rows = await q.orderBy('updatedAt', 'DESC').get();
118
- return rows.map(rowToListEntry);
119
- }
120
- async delete(conversationId) {
121
- await AiConversationMessageRecord.where('conversationId', conversationId).deleteAll();
122
- await AiConversationRecord.where('id', conversationId).deleteAll();
123
- }
124
- /** Throw the same not-found error shape as `MemoryConversationStore`. */
125
- async requireThread(conversationId) {
126
- const thread = await AiConversationRecord.where('id', conversationId).first();
127
- if (!thread)
128
- throw notFound(conversationId);
129
- }
130
- /** Next monotonic position for the thread (0 when empty). */
131
- async nextPosition(conversationId) {
132
- const last = await AiConversationMessageRecord
133
- .where('conversationId', conversationId)
134
- .orderBy('position', 'DESC')
135
- .first();
136
- return last ? last.position + 1 : 0;
137
- }
138
- }
139
- /** Convenience factory mirroring `ormBudgetStorage()` / `OrmUserMemory`. */
140
- export function ormConversationStore() {
141
- return new OrmConversationStore();
142
- }
143
- // ─── Schema reference ─────────────────────────────────────
144
- /**
145
- * Reference Prisma schema for `OrmConversationStore`. Copy into your
146
- * `prisma/schema/<file>.prisma`. SQLite stores the `text` content as TEXT;
147
- * Postgres as `text`. The `@@index` keeps `list()` (by user) and `load()`
148
- * (by thread, ordered) cheap.
149
- */
150
- export const conversationOrmPrismaSchema = `model AiConversation {
151
- id String @id @default(cuid())
152
- title String
153
- userId String?
154
- /// Thread-segregation key - the agent class name by default
155
- agent String?
156
- createdAt DateTime @default(now())
157
- updatedAt DateTime @updatedAt
158
-
159
- @@index([userId])
160
- }
161
-
162
- model AiConversationMessage {
163
- id String @id @default(cuid())
164
- conversationId String
165
- /// Monotonic per-thread ordering
166
- position Int
167
- role String
168
- /// JSON-encoded \`string | ContentPart[]\`
169
- content String
170
- toolCallId String?
171
- /// JSON-encoded \`ToolCall[]\` or null
172
- toolCalls String?
173
- createdAt DateTime @default(now())
174
-
175
- @@index([conversationId, position])
176
- }
177
- `;
178
- // ─── Helpers ──────────────────────────────────────────────
179
- function notFound(conversationId) {
180
- return new Error(`[Rudder AI] Conversation "${conversationId}" not found.`);
181
- }
182
- function messageToRow(conversationId, position, m) {
183
- return {
184
- conversationId,
185
- position,
186
- role: m.role,
187
- content: JSON.stringify(m.content),
188
- toolCallId: m.toolCallId ?? null,
189
- toolCalls: m.toolCalls ? JSON.stringify(m.toolCalls) : null,
190
- };
191
- }
192
- function rowToMessage(row) {
193
- const out = {
194
- role: row.role,
195
- content: JSON.parse(row.content),
196
- };
197
- if (row.toolCallId != null)
198
- out.toolCallId = row.toolCallId;
199
- if (row.toolCalls != null)
200
- out.toolCalls = JSON.parse(row.toolCalls);
201
- return out;
202
- }
203
- function rowToListEntry(row) {
204
- const out = {
205
- id: row.id,
206
- title: row.title,
207
- createdAt: row.createdAt,
208
- };
209
- if (row.updatedAt != null)
210
- out.updatedAt = row.updatedAt;
211
- if (row.agent != null)
212
- out.agent = row.agent;
213
- return out;
214
- }
1
+ // @rudderjs/ai is deprecated. The AI engine now lives in @gemstack/ai-sdk.
2
+ // This module re-exports it for backwards compatibility; import from
3
+ // '@gemstack/ai-sdk/conversation-orm' directly in new code.
4
+ export * from '@gemstack/ai-sdk/conversation-orm';
215
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation-orm/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation-orm/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,qEAAqE;AACrE,4DAA4D;AAC5D,cAAc,mCAAmC,CAAA"}
package/dist/doctor.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export {};
1
+ export * from '@gemstack/ai-sdk/doctor';
2
2
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAA"}
package/dist/doctor.js CHANGED
@@ -1,66 +1,5 @@
1
- // Doctor checks contributed by @rudderjs/ai.
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- import { registerDoctorCheck } from '@rudderjs/console';
5
- function readFileSafe(rel) {
6
- try {
7
- return fs.readFileSync(path.join(process.cwd(), rel), 'utf-8');
8
- }
9
- catch {
10
- return null;
11
- }
12
- }
13
- // Maps provider driver name → env var the user must set. Mirrors the
14
- // driver names listed in @rudderjs/ai's provider implementations.
15
- const PROVIDER_ENV = {
16
- anthropic: 'ANTHROPIC_API_KEY',
17
- openai: 'OPENAI_API_KEY',
18
- google: 'GOOGLE_AI_API_KEY',
19
- bedrock: 'AWS_ACCESS_KEY_ID',
20
- groq: 'GROQ_API_KEY',
21
- openrouter: 'OPENROUTER_API_KEY',
22
- // ollama, lmstudio: local — no key needed.
23
- };
24
- // Extracts driver names referenced by config/ai.ts WITHOUT importing the
25
- // module. We grep for `driver: '<name>'` literals — covers the scaffolded
26
- // shape.
27
- function declaredProviders() {
28
- const text = readFileSafe('config/ai.ts') ??
29
- readFileSafe('config/ai.js') ??
30
- readFileSafe('config/ai.mjs') ?? '';
31
- const matches = [...text.matchAll(/driver\s*:\s*['"]([^'"]+)['"]/g)];
32
- return [...new Set(matches.map(m => m[1]).filter(Boolean))];
33
- }
34
- registerDoctorCheck({
35
- id: 'ai:provider-keys',
36
- category: 'ai',
37
- title: 'AI provider API keys',
38
- run() {
39
- const providers = declaredProviders();
40
- if (providers.length === 0) {
41
- return { status: 'ok', message: 'no config/ai.ts or no providers declared — skip' };
42
- }
43
- const needsKey = providers.filter(p => p in PROVIDER_ENV);
44
- if (needsKey.length === 0) {
45
- return { status: 'ok', message: `${providers.length} provider(s) — all local (no keys required)` };
46
- }
47
- const missing = needsKey.filter(p => !process.env[PROVIDER_ENV[p]]);
48
- if (missing.length === needsKey.length) {
49
- return {
50
- status: 'warn',
51
- message: `none of ${needsKey.length} cloud provider(s) have an API key set`,
52
- fix: `Set at least one of: ${needsKey.map(p => PROVIDER_ENV[p]).join(', ')} (or remove the providers from config/ai.ts if unused)`,
53
- detail: `Declared providers: ${needsKey.join(', ')}`,
54
- };
55
- }
56
- if (missing.length > 0) {
57
- return {
58
- status: 'warn',
59
- message: `${needsKey.length - missing.length}/${needsKey.length} cloud provider(s) have keys`,
60
- fix: `Set missing keys: ${missing.map(p => PROVIDER_ENV[p]).join(', ')} (or remove the providers from config/ai.ts if unused)`,
61
- };
62
- }
63
- return { status: 'ok', message: `${needsKey.length} cloud provider(s), all keys present` };
64
- },
65
- });
1
+ // @rudderjs/ai is deprecated. The AI engine now lives in @gemstack/ai-sdk.
2
+ // This module re-exports it for backwards compatibility; import from
3
+ // '@gemstack/ai-sdk/doctor' directly in new code.
4
+ export * from '@gemstack/ai-sdk/doctor';
66
5
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,qEAAqE;AACrE,kDAAkD;AAClD,cAAc,yBAAyB,CAAA"}