@molroo-io/sdk 0.5.2

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 (293) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +251 -0
  3. package/dist/cjs/api-client.d.ts +23 -0
  4. package/dist/cjs/api-client.d.ts.map +1 -0
  5. package/dist/cjs/api-client.js +55 -0
  6. package/dist/cjs/defaults/index.d.ts +8 -0
  7. package/dist/cjs/defaults/index.d.ts.map +1 -0
  8. package/dist/cjs/defaults/index.js +30 -0
  9. package/dist/cjs/defaults/persona.json +17 -0
  10. package/dist/cjs/embedding/cloudflare.d.ts +15 -0
  11. package/dist/cjs/embedding/cloudflare.d.ts.map +1 -0
  12. package/dist/cjs/embedding/cloudflare.js +16 -0
  13. package/dist/cjs/embedding/cohere.d.ts +8 -0
  14. package/dist/cjs/embedding/cohere.d.ts.map +1 -0
  15. package/dist/cjs/embedding/cohere.js +31 -0
  16. package/dist/cjs/embedding/index.d.ts +9 -0
  17. package/dist/cjs/embedding/index.d.ts.map +1 -0
  18. package/dist/cjs/embedding/index.js +11 -0
  19. package/dist/cjs/embedding/local.d.ts +6 -0
  20. package/dist/cjs/embedding/local.d.ts.map +1 -0
  21. package/dist/cjs/embedding/local.js +28 -0
  22. package/dist/cjs/embedding/openai.d.ts +9 -0
  23. package/dist/cjs/embedding/openai.d.ts.map +1 -0
  24. package/dist/cjs/embedding/openai.js +26 -0
  25. package/dist/cjs/errors.d.ts +17 -0
  26. package/dist/cjs/errors.d.ts.map +1 -0
  27. package/dist/cjs/errors.js +21 -0
  28. package/dist/cjs/events/console.d.ts +25 -0
  29. package/dist/cjs/events/console.d.ts.map +1 -0
  30. package/dist/cjs/events/console.js +41 -0
  31. package/dist/cjs/events/types.d.ts +28 -0
  32. package/dist/cjs/events/types.d.ts.map +1 -0
  33. package/dist/cjs/events/types.js +13 -0
  34. package/dist/cjs/events/webhook.d.ts +30 -0
  35. package/dist/cjs/events/webhook.d.ts.map +1 -0
  36. package/dist/cjs/events/webhook.js +79 -0
  37. package/dist/cjs/generate/persona.d.ts +16 -0
  38. package/dist/cjs/generate/persona.d.ts.map +1 -0
  39. package/dist/cjs/generate/persona.js +42 -0
  40. package/dist/cjs/generate/prompt.d.ts +7 -0
  41. package/dist/cjs/generate/prompt.d.ts.map +1 -0
  42. package/dist/cjs/generate/prompt.js +41 -0
  43. package/dist/cjs/generate/schema.d.ts +32 -0
  44. package/dist/cjs/generate/schema.d.ts.map +1 -0
  45. package/dist/cjs/generate/schema.js +54 -0
  46. package/dist/cjs/generated/index.d.ts +2 -0
  47. package/dist/cjs/generated/index.d.ts.map +1 -0
  48. package/dist/cjs/generated/index.js +2 -0
  49. package/dist/cjs/index.d.ts +66 -0
  50. package/dist/cjs/index.d.ts.map +1 -0
  51. package/dist/cjs/index.js +69 -0
  52. package/dist/cjs/llm/adapter.d.ts +61 -0
  53. package/dist/cjs/llm/adapter.d.ts.map +1 -0
  54. package/dist/cjs/llm/adapter.js +2 -0
  55. package/dist/cjs/llm/resolve.d.ts +28 -0
  56. package/dist/cjs/llm/resolve.d.ts.map +1 -0
  57. package/dist/cjs/llm/resolve.js +20 -0
  58. package/dist/cjs/llm/schema.d.ts +60 -0
  59. package/dist/cjs/llm/schema.d.ts.map +1 -0
  60. package/dist/cjs/llm/schema.js +72 -0
  61. package/dist/cjs/llm/types.d.ts +24 -0
  62. package/dist/cjs/llm/types.d.ts.map +1 -0
  63. package/dist/cjs/llm/types.js +2 -0
  64. package/dist/cjs/llm/vercel-ai/adapter.d.ts +29 -0
  65. package/dist/cjs/llm/vercel-ai/adapter.d.ts.map +1 -0
  66. package/dist/cjs/llm/vercel-ai/adapter.js +234 -0
  67. package/dist/cjs/llm/vercel-ai/config.d.ts +9 -0
  68. package/dist/cjs/llm/vercel-ai/config.d.ts.map +1 -0
  69. package/dist/cjs/llm/vercel-ai/config.js +2 -0
  70. package/dist/cjs/llm/vercel-ai/index.d.ts +9 -0
  71. package/dist/cjs/llm/vercel-ai/index.d.ts.map +1 -0
  72. package/dist/cjs/llm/vercel-ai/index.js +13 -0
  73. package/dist/cjs/memory/cloudflare/index.d.ts +3 -0
  74. package/dist/cjs/memory/cloudflare/index.d.ts.map +1 -0
  75. package/dist/cjs/memory/cloudflare/index.js +5 -0
  76. package/dist/cjs/memory/cloudflare/vectorize.d.ts +62 -0
  77. package/dist/cjs/memory/cloudflare/vectorize.d.ts.map +1 -0
  78. package/dist/cjs/memory/cloudflare/vectorize.js +55 -0
  79. package/dist/cjs/memory/in-memory-semantic.d.ts +16 -0
  80. package/dist/cjs/memory/in-memory-semantic.d.ts.map +1 -0
  81. package/dist/cjs/memory/in-memory-semantic.js +57 -0
  82. package/dist/cjs/memory/in-memory.d.ts +46 -0
  83. package/dist/cjs/memory/in-memory.d.ts.map +1 -0
  84. package/dist/cjs/memory/in-memory.js +115 -0
  85. package/dist/cjs/memory/pinecone/index.d.ts +7 -0
  86. package/dist/cjs/memory/pinecone/index.d.ts.map +1 -0
  87. package/dist/cjs/memory/pinecone/index.js +8 -0
  88. package/dist/cjs/memory/pinecone/memory-adapter.d.ts +62 -0
  89. package/dist/cjs/memory/pinecone/memory-adapter.d.ts.map +1 -0
  90. package/dist/cjs/memory/pinecone/memory-adapter.js +220 -0
  91. package/dist/cjs/memory/pinecone/semantic.d.ts +44 -0
  92. package/dist/cjs/memory/pinecone/semantic.d.ts.map +1 -0
  93. package/dist/cjs/memory/pinecone/semantic.js +90 -0
  94. package/dist/cjs/memory/recall.d.ts +58 -0
  95. package/dist/cjs/memory/recall.d.ts.map +1 -0
  96. package/dist/cjs/memory/recall.js +220 -0
  97. package/dist/cjs/memory/semantic.d.ts +24 -0
  98. package/dist/cjs/memory/semantic.d.ts.map +1 -0
  99. package/dist/cjs/memory/semantic.js +2 -0
  100. package/dist/cjs/memory/sqlite/index.d.ts +3 -0
  101. package/dist/cjs/memory/sqlite/index.d.ts.map +1 -0
  102. package/dist/cjs/memory/sqlite/index.js +5 -0
  103. package/dist/cjs/memory/sqlite/memory-adapter.d.ts +58 -0
  104. package/dist/cjs/memory/sqlite/memory-adapter.d.ts.map +1 -0
  105. package/dist/cjs/memory/sqlite/memory-adapter.js +336 -0
  106. package/dist/cjs/memory/sqlite/schema.d.ts +4 -0
  107. package/dist/cjs/memory/sqlite/schema.d.ts.map +1 -0
  108. package/dist/cjs/memory/sqlite/schema.js +91 -0
  109. package/dist/cjs/memory/supabase/index.d.ts +7 -0
  110. package/dist/cjs/memory/supabase/index.d.ts.map +1 -0
  111. package/dist/cjs/memory/supabase/index.js +8 -0
  112. package/dist/cjs/memory/supabase/memory-adapter.d.ts +67 -0
  113. package/dist/cjs/memory/supabase/memory-adapter.d.ts.map +1 -0
  114. package/dist/cjs/memory/supabase/memory-adapter.js +335 -0
  115. package/dist/cjs/memory/supabase/semantic.d.ts +44 -0
  116. package/dist/cjs/memory/supabase/semantic.d.ts.map +1 -0
  117. package/dist/cjs/memory/supabase/semantic.js +72 -0
  118. package/dist/cjs/memory/types.d.ts +231 -0
  119. package/dist/cjs/memory/types.d.ts.map +1 -0
  120. package/dist/cjs/memory/types.js +12 -0
  121. package/dist/cjs/persona.d.ts +326 -0
  122. package/dist/cjs/persona.d.ts.map +1 -0
  123. package/dist/cjs/persona.js +824 -0
  124. package/dist/cjs/types.d.ts +263 -0
  125. package/dist/cjs/types.d.ts.map +1 -0
  126. package/dist/cjs/types.js +15 -0
  127. package/dist/cjs/world/client.d.ts +36 -0
  128. package/dist/cjs/world/client.d.ts.map +1 -0
  129. package/dist/cjs/world/client.js +59 -0
  130. package/dist/cjs/world/errors.d.ts +9 -0
  131. package/dist/cjs/world/errors.d.ts.map +1 -0
  132. package/dist/cjs/world/errors.js +15 -0
  133. package/dist/cjs/world/index.d.ts +10 -0
  134. package/dist/cjs/world/index.d.ts.map +1 -0
  135. package/dist/cjs/world/index.js +16 -0
  136. package/dist/cjs/world/types.d.ts +101 -0
  137. package/dist/cjs/world/types.d.ts.map +1 -0
  138. package/dist/cjs/world/types.js +8 -0
  139. package/dist/cjs/world/village.d.ts +75 -0
  140. package/dist/cjs/world/village.d.ts.map +1 -0
  141. package/dist/cjs/world/village.js +278 -0
  142. package/dist/cjs/world/world-persona.d.ts +182 -0
  143. package/dist/cjs/world/world-persona.d.ts.map +1 -0
  144. package/dist/cjs/world/world-persona.js +192 -0
  145. package/dist/cjs/world/world.d.ts +41 -0
  146. package/dist/cjs/world/world.d.ts.map +1 -0
  147. package/dist/cjs/world/world.js +91 -0
  148. package/dist/esm/api-client.d.ts +23 -0
  149. package/dist/esm/api-client.d.ts.map +1 -0
  150. package/dist/esm/api-client.js +48 -0
  151. package/dist/esm/defaults/index.d.ts +8 -0
  152. package/dist/esm/defaults/index.d.ts.map +1 -0
  153. package/dist/esm/defaults/index.js +23 -0
  154. package/dist/esm/defaults/persona.json +17 -0
  155. package/dist/esm/embedding/cloudflare.d.ts +15 -0
  156. package/dist/esm/embedding/cloudflare.d.ts.map +1 -0
  157. package/dist/esm/embedding/cloudflare.js +13 -0
  158. package/dist/esm/embedding/cohere.d.ts +8 -0
  159. package/dist/esm/embedding/cohere.d.ts.map +1 -0
  160. package/dist/esm/embedding/cohere.js +28 -0
  161. package/dist/esm/embedding/index.d.ts +9 -0
  162. package/dist/esm/embedding/index.d.ts.map +1 -0
  163. package/dist/esm/embedding/index.js +4 -0
  164. package/dist/esm/embedding/local.d.ts +6 -0
  165. package/dist/esm/embedding/local.d.ts.map +1 -0
  166. package/dist/esm/embedding/local.js +25 -0
  167. package/dist/esm/embedding/openai.d.ts +9 -0
  168. package/dist/esm/embedding/openai.d.ts.map +1 -0
  169. package/dist/esm/embedding/openai.js +23 -0
  170. package/dist/esm/errors.d.ts +17 -0
  171. package/dist/esm/errors.d.ts.map +1 -0
  172. package/dist/esm/errors.js +17 -0
  173. package/dist/esm/events/console.d.ts +25 -0
  174. package/dist/esm/events/console.d.ts.map +1 -0
  175. package/dist/esm/events/console.js +37 -0
  176. package/dist/esm/events/types.d.ts +28 -0
  177. package/dist/esm/events/types.d.ts.map +1 -0
  178. package/dist/esm/events/types.js +12 -0
  179. package/dist/esm/events/webhook.d.ts +30 -0
  180. package/dist/esm/events/webhook.d.ts.map +1 -0
  181. package/dist/esm/events/webhook.js +75 -0
  182. package/dist/esm/generate/persona.d.ts +16 -0
  183. package/dist/esm/generate/persona.d.ts.map +1 -0
  184. package/dist/esm/generate/persona.js +39 -0
  185. package/dist/esm/generate/prompt.d.ts +7 -0
  186. package/dist/esm/generate/prompt.d.ts.map +1 -0
  187. package/dist/esm/generate/prompt.js +38 -0
  188. package/dist/esm/generate/schema.d.ts +32 -0
  189. package/dist/esm/generate/schema.d.ts.map +1 -0
  190. package/dist/esm/generate/schema.js +51 -0
  191. package/dist/esm/generated/index.d.ts +2 -0
  192. package/dist/esm/generated/index.d.ts.map +1 -0
  193. package/dist/esm/generated/index.js +1 -0
  194. package/dist/esm/index.d.ts +66 -0
  195. package/dist/esm/index.d.ts.map +1 -0
  196. package/dist/esm/index.js +49 -0
  197. package/dist/esm/llm/adapter.d.ts +61 -0
  198. package/dist/esm/llm/adapter.d.ts.map +1 -0
  199. package/dist/esm/llm/adapter.js +1 -0
  200. package/dist/esm/llm/resolve.d.ts +28 -0
  201. package/dist/esm/llm/resolve.d.ts.map +1 -0
  202. package/dist/esm/llm/resolve.js +17 -0
  203. package/dist/esm/llm/schema.d.ts +60 -0
  204. package/dist/esm/llm/schema.d.ts.map +1 -0
  205. package/dist/esm/llm/schema.js +69 -0
  206. package/dist/esm/llm/types.d.ts +24 -0
  207. package/dist/esm/llm/types.d.ts.map +1 -0
  208. package/dist/esm/llm/types.js +1 -0
  209. package/dist/esm/llm/vercel-ai/adapter.d.ts +29 -0
  210. package/dist/esm/llm/vercel-ai/adapter.d.ts.map +1 -0
  211. package/dist/esm/llm/vercel-ai/adapter.js +196 -0
  212. package/dist/esm/llm/vercel-ai/config.d.ts +9 -0
  213. package/dist/esm/llm/vercel-ai/config.d.ts.map +1 -0
  214. package/dist/esm/llm/vercel-ai/config.js +1 -0
  215. package/dist/esm/llm/vercel-ai/index.d.ts +9 -0
  216. package/dist/esm/llm/vercel-ai/index.d.ts.map +1 -0
  217. package/dist/esm/llm/vercel-ai/index.js +8 -0
  218. package/dist/esm/memory/cloudflare/index.d.ts +3 -0
  219. package/dist/esm/memory/cloudflare/index.d.ts.map +1 -0
  220. package/dist/esm/memory/cloudflare/index.js +1 -0
  221. package/dist/esm/memory/cloudflare/vectorize.d.ts +62 -0
  222. package/dist/esm/memory/cloudflare/vectorize.d.ts.map +1 -0
  223. package/dist/esm/memory/cloudflare/vectorize.js +51 -0
  224. package/dist/esm/memory/in-memory-semantic.d.ts +16 -0
  225. package/dist/esm/memory/in-memory-semantic.d.ts.map +1 -0
  226. package/dist/esm/memory/in-memory-semantic.js +53 -0
  227. package/dist/esm/memory/in-memory.d.ts +46 -0
  228. package/dist/esm/memory/in-memory.d.ts.map +1 -0
  229. package/dist/esm/memory/in-memory.js +111 -0
  230. package/dist/esm/memory/pinecone/index.d.ts +7 -0
  231. package/dist/esm/memory/pinecone/index.d.ts.map +1 -0
  232. package/dist/esm/memory/pinecone/index.js +3 -0
  233. package/dist/esm/memory/pinecone/memory-adapter.d.ts +62 -0
  234. package/dist/esm/memory/pinecone/memory-adapter.d.ts.map +1 -0
  235. package/dist/esm/memory/pinecone/memory-adapter.js +216 -0
  236. package/dist/esm/memory/pinecone/semantic.d.ts +44 -0
  237. package/dist/esm/memory/pinecone/semantic.d.ts.map +1 -0
  238. package/dist/esm/memory/pinecone/semantic.js +86 -0
  239. package/dist/esm/memory/recall.d.ts +58 -0
  240. package/dist/esm/memory/recall.d.ts.map +1 -0
  241. package/dist/esm/memory/recall.js +215 -0
  242. package/dist/esm/memory/semantic.d.ts +24 -0
  243. package/dist/esm/memory/semantic.d.ts.map +1 -0
  244. package/dist/esm/memory/semantic.js +1 -0
  245. package/dist/esm/memory/sqlite/index.d.ts +3 -0
  246. package/dist/esm/memory/sqlite/index.d.ts.map +1 -0
  247. package/dist/esm/memory/sqlite/index.js +1 -0
  248. package/dist/esm/memory/sqlite/memory-adapter.d.ts +58 -0
  249. package/dist/esm/memory/sqlite/memory-adapter.d.ts.map +1 -0
  250. package/dist/esm/memory/sqlite/memory-adapter.js +296 -0
  251. package/dist/esm/memory/sqlite/schema.d.ts +4 -0
  252. package/dist/esm/memory/sqlite/schema.d.ts.map +1 -0
  253. package/dist/esm/memory/sqlite/schema.js +86 -0
  254. package/dist/esm/memory/supabase/index.d.ts +7 -0
  255. package/dist/esm/memory/supabase/index.d.ts.map +1 -0
  256. package/dist/esm/memory/supabase/index.js +3 -0
  257. package/dist/esm/memory/supabase/memory-adapter.d.ts +67 -0
  258. package/dist/esm/memory/supabase/memory-adapter.d.ts.map +1 -0
  259. package/dist/esm/memory/supabase/memory-adapter.js +331 -0
  260. package/dist/esm/memory/supabase/semantic.d.ts +44 -0
  261. package/dist/esm/memory/supabase/semantic.d.ts.map +1 -0
  262. package/dist/esm/memory/supabase/semantic.js +68 -0
  263. package/dist/esm/memory/types.d.ts +231 -0
  264. package/dist/esm/memory/types.d.ts.map +1 -0
  265. package/dist/esm/memory/types.js +9 -0
  266. package/dist/esm/persona.d.ts +326 -0
  267. package/dist/esm/persona.d.ts.map +1 -0
  268. package/dist/esm/persona.js +787 -0
  269. package/dist/esm/types.d.ts +263 -0
  270. package/dist/esm/types.d.ts.map +1 -0
  271. package/dist/esm/types.js +11 -0
  272. package/dist/esm/world/client.d.ts +36 -0
  273. package/dist/esm/world/client.d.ts.map +1 -0
  274. package/dist/esm/world/client.js +52 -0
  275. package/dist/esm/world/errors.d.ts +9 -0
  276. package/dist/esm/world/errors.d.ts.map +1 -0
  277. package/dist/esm/world/errors.js +11 -0
  278. package/dist/esm/world/index.d.ts +10 -0
  279. package/dist/esm/world/index.d.ts.map +1 -0
  280. package/dist/esm/world/index.js +8 -0
  281. package/dist/esm/world/types.d.ts +101 -0
  282. package/dist/esm/world/types.d.ts.map +1 -0
  283. package/dist/esm/world/types.js +7 -0
  284. package/dist/esm/world/village.d.ts +75 -0
  285. package/dist/esm/world/village.d.ts.map +1 -0
  286. package/dist/esm/world/village.js +274 -0
  287. package/dist/esm/world/world-persona.d.ts +182 -0
  288. package/dist/esm/world/world-persona.d.ts.map +1 -0
  289. package/dist/esm/world/world-persona.js +188 -0
  290. package/dist/esm/world/world.d.ts +41 -0
  291. package/dist/esm/world/world.d.ts.map +1 -0
  292. package/dist/esm/world/world.js +87 -0
  293. package/package.json +207 -0
@@ -0,0 +1,61 @@
1
+ import type { ZodSchema } from 'zod';
2
+ /**
3
+ * Message format for LLM conversations.
4
+ * Compatible with Vercel AI SDK message format.
5
+ */
6
+ export interface Message {
7
+ role: 'user' | 'assistant' | 'system';
8
+ content: string;
9
+ }
10
+ /**
11
+ * Base options for text generation.
12
+ */
13
+ export interface GenerateTextOptions {
14
+ model?: string;
15
+ system?: string;
16
+ messages: Message[];
17
+ temperature?: number;
18
+ maxTokens?: number;
19
+ }
20
+ /**
21
+ * Base options for object generation.
22
+ */
23
+ export interface GenerateObjectOptions<T> {
24
+ model?: string;
25
+ system?: string;
26
+ messages: Message[];
27
+ schema: ZodSchema<T>;
28
+ temperature?: number;
29
+ }
30
+ /**
31
+ * LLM Adapter interface for molroo SDK.
32
+ *
33
+ * Abstracts LLM interactions so consumers can:
34
+ * - Use the built-in adapter (Vercel AI SDK: OpenAI/Anthropic/Vertex)
35
+ * - Bring their own LLM integration (Ollama, vLLM, custom pipeline)
36
+ * - Skip LLM entirely (emotion-only usage)
37
+ *
38
+ * Interface follows Vercel AI SDK conventions for familiarity.
39
+ */
40
+ export interface LLMAdapter {
41
+ /**
42
+ * Generate plain text from messages.
43
+ *
44
+ * @param options - Generation options including messages and optional system prompt
45
+ * @returns Object containing generated text
46
+ */
47
+ generateText(options: GenerateTextOptions): Promise<{
48
+ text: string;
49
+ }>;
50
+ /**
51
+ * Generate structured object matching the provided Zod schema.
52
+ *
53
+ * @param options - Generation options including messages, system prompt, and schema
54
+ * @returns Object containing parsed structured output
55
+ */
56
+ generateObject<T>(options: GenerateObjectOptions<T>): Promise<{
57
+ object: T;
58
+ }>;
59
+ }
60
+ export type { Message as ChatMessage };
61
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC9E;AAGD,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,28 @@
1
+ import type { LLMAdapter } from './adapter';
2
+ /**
3
+ * Shorthand config for creating an LLM adapter without importing a separate package.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const persona = await MolrooPersona.create({
8
+ * baseUrl, apiKey,
9
+ * llm: { provider: 'openai', apiKey: '...' },
10
+ * }, config);
11
+ * ```
12
+ */
13
+ export interface LLMShorthand {
14
+ provider: 'openai' | 'anthropic' | 'vertex' | 'openrouter';
15
+ apiKey: string;
16
+ model?: string;
17
+ baseUrl?: string;
18
+ projectId?: string;
19
+ location?: string;
20
+ }
21
+ /** LLM adapter or shorthand config. */
22
+ export type LLMInput = LLMAdapter | LLMShorthand;
23
+ /**
24
+ * Resolve an LLMInput to an LLMAdapter.
25
+ * If a shorthand config is given, creates a VercelAIAdapter directly.
26
+ */
27
+ export declare function resolveLLM(input: LLMInput): Promise<LLMAdapter>;
28
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/llm/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uCAAuC;AACvC,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;AAYjD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAGrE"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveLLM = resolveLLM;
4
+ const vercel_ai_1 = require("./vercel-ai");
5
+ function isShorthand(input) {
6
+ return (input != null &&
7
+ typeof input === 'object' &&
8
+ 'provider' in input &&
9
+ 'apiKey' in input &&
10
+ !('generateText' in input));
11
+ }
12
+ /**
13
+ * Resolve an LLMInput to an LLMAdapter.
14
+ * If a shorthand config is given, creates a VercelAIAdapter directly.
15
+ */
16
+ async function resolveLLM(input) {
17
+ if (!isShorthand(input))
18
+ return input;
19
+ return (0, vercel_ai_1.createVercelAIAdapter)(input);
20
+ }
@@ -0,0 +1,60 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * AppraisalVector Schema — Scherer CPM 9-dimensional emotion appraisal.
4
+ * LLM evaluates user input from persona's perspective.
5
+ *
6
+ * Each field accepts any number from LLM output, then clamps to the valid
7
+ * range via .transform(). This tolerates LLM outputs outside the intended
8
+ * range (e.g. -3.0) without failing Zod parsing.
9
+ */
10
+ export declare const AppraisalVectorSchema: z.ZodObject<{
11
+ goal_relevance: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
12
+ goal_congruence: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
13
+ expectedness: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
14
+ controllability: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
15
+ agency: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
16
+ norm_compatibility: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
17
+ internal_standards: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
18
+ adjustment_potential: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
19
+ urgency: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
20
+ }, z.core.$strip>;
21
+ /**
22
+ * Full LLM response schema — response text + appraisal vector.
23
+ */
24
+ export declare const LLMResponseSchema: z.ZodObject<{
25
+ response: z.ZodString;
26
+ appraisal: z.ZodObject<{
27
+ goal_relevance: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
28
+ goal_congruence: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
29
+ expectedness: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
30
+ controllability: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
31
+ agency: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
32
+ norm_compatibility: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
33
+ internal_standards: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
34
+ adjustment_potential: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
35
+ urgency: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
36
+ }, z.core.$strip>;
37
+ }, z.core.$strip>;
38
+ export type LLMResponseOutput = z.infer<typeof LLMResponseSchema>;
39
+ /**
40
+ * Tool-use aware LLM response schema.
41
+ * The LLM can either produce a normal response or request a memory search.
42
+ * When search_memory is set, the SDK executes the search and re-invokes the LLM.
43
+ */
44
+ export declare const LLMResponseWithToolsSchema: z.ZodObject<{
45
+ response: z.ZodString;
46
+ appraisal: z.ZodObject<{
47
+ goal_relevance: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
48
+ goal_congruence: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
49
+ expectedness: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
50
+ controllability: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
51
+ agency: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
52
+ norm_compatibility: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
53
+ internal_standards: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
54
+ adjustment_potential: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
55
+ urgency: z.ZodPipe<z.ZodNumber, z.ZodTransform<number, number>>;
56
+ }, z.core.$strip>;
57
+ search_memory: z.ZodOptional<z.ZodString>;
58
+ }, z.core.$strip>;
59
+ export type LLMResponseWithToolsOutput = z.infer<typeof LLMResponseWithToolsSchema>;
60
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/llm/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAuDhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;iBAK5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;iBAarC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LLMResponseWithToolsSchema = exports.LLMResponseSchema = exports.AppraisalVectorSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /** Clamp a number to [lo, hi]. */
6
+ const clamp = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
7
+ /**
8
+ * AppraisalVector Schema — Scherer CPM 9-dimensional emotion appraisal.
9
+ * LLM evaluates user input from persona's perspective.
10
+ *
11
+ * Each field accepts any number from LLM output, then clamps to the valid
12
+ * range via .transform(). This tolerates LLM outputs outside the intended
13
+ * range (e.g. -3.0) without failing Zod parsing.
14
+ */
15
+ exports.AppraisalVectorSchema = zod_1.z.object({
16
+ goal_relevance: zod_1.z
17
+ .number()
18
+ .describe("How relevant is this message to the persona's goals, including relational goals (caring about the speaker)? -1: completely irrelevant, 0: slightly relevant, 1: central to goals. Casual greetings: 0~0.2")
19
+ .transform((v) => clamp(v, -1, 1)),
20
+ goal_congruence: zod_1.z
21
+ .number()
22
+ .describe("Does this event help or hinder the persona's goals? -1: harmful/threatening, 0: neutral, 1: helpful. User's suffering → negative (through relational concern). Insults → negative.")
23
+ .transform((v) => clamp(v, -1, 1)),
24
+ expectedness: zod_1.z
25
+ .number()
26
+ .describe('How predictable was this event? 0: shocking/impossible, 0.5: normal, 1: routine. First meeting: ~0.5. Use 0-1 range.')
27
+ .transform((v) => clamp(v, 0, 1)),
28
+ controllability: zod_1.z
29
+ .number()
30
+ .describe('Can the persona influence or respond to this situation? 0: helpless, 0.5: can comfort/support, 1: can directly resolve. For other-events: rate how much the persona can help, not whether the situation was avoidable. Use 0-1 range.')
31
+ .transform((v) => clamp(v, 0, 1)),
32
+ agency: zod_1.z
33
+ .number()
34
+ .describe('Who caused the situation being discussed? -1: fate/accident, 0: shared/ambiguous, 1: deliberate by speaker. For other-events (user sharing their experience): rate the cause of what happened to them.')
35
+ .transform((v) => clamp(v, -1, 1)),
36
+ norm_compatibility: zod_1.z
37
+ .number()
38
+ .describe("Does the described situation align with the persona's values and social norms? -1: serious violation (cruelty/injustice/insult), 0: neutral, 1: kind/virtuous. Evaluate the situation content, not the act of sharing it.")
39
+ .transform((v) => clamp(v, -1, 1)),
40
+ internal_standards: zod_1.z
41
+ .number()
42
+ .describe("Does this situation involve violating or upholding the persona's own standards/values? -1: serious self-standard violation (shame, guilt), 0: not self-relevant, 1: lived up to own ideals (pride). Rate from the persona's self-evaluation perspective.")
43
+ .transform((v) => clamp(v, -1, 1)),
44
+ adjustment_potential: zod_1.z
45
+ .number()
46
+ .describe('Can the persona (or the person involved) cope with or adapt to this situation? 0: devastating/no way to cope, 0.5: moderate coping, 1: fully adaptable/accepted. For loss/grief: high (accepted). For active threat: low. Use 0-1 range.')
47
+ .transform((v) => clamp(v, 0, 1)),
48
+ urgency: zod_1.z
49
+ .number()
50
+ .describe('How much time pressure or immediate action is needed? 0: settled/past event/no rush, 0.5: moderate, 1: immediate action required/acute emergency. For past losses: low. For active threats: high. Use 0-1 range.')
51
+ .transform((v) => clamp(v, 0, 1)),
52
+ });
53
+ /**
54
+ * Full LLM response schema — response text + appraisal vector.
55
+ */
56
+ exports.LLMResponseSchema = zod_1.z.object({
57
+ response: zod_1.z.string().describe('Response message from persona to user'),
58
+ appraisal: exports.AppraisalVectorSchema.describe("Scherer 9-dimensional emotion appraisal of user input from persona's perspective"),
59
+ });
60
+ /**
61
+ * Tool-use aware LLM response schema.
62
+ * The LLM can either produce a normal response or request a memory search.
63
+ * When search_memory is set, the SDK executes the search and re-invokes the LLM.
64
+ */
65
+ exports.LLMResponseWithToolsSchema = zod_1.z.object({
66
+ response: zod_1.z.string().describe('Response message from persona to user. Set to empty string "" if you need to search memory first.'),
67
+ appraisal: exports.AppraisalVectorSchema.describe("Scherer 9-dimensional emotion appraisal of user input from persona's perspective"),
68
+ search_memory: zod_1.z
69
+ .string()
70
+ .optional()
71
+ .describe('If you need to recall a specific memory before responding, set this to your search query. Leave empty/omit when you can respond without searching.'),
72
+ });
@@ -0,0 +1,24 @@
1
+ export interface LLMPrompt {
2
+ system: string;
3
+ context?: string;
4
+ instruction?: string;
5
+ history?: ChatMessage[];
6
+ }
7
+ export interface ChatMessage {
8
+ role: 'user' | 'assistant' | 'system';
9
+ content: string;
10
+ }
11
+ export interface LLMResponse {
12
+ text: string;
13
+ response?: string;
14
+ appraisal?: AppraisalVector;
15
+ }
16
+ export interface AppraisalVector {
17
+ goal_relevance: number;
18
+ goal_congruence: number;
19
+ expectedness: number;
20
+ controllability: number;
21
+ agency: number;
22
+ norm_compatibility: number;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/llm/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,29 @@
1
+ import type { LLMAdapter, GenerateTextOptions, GenerateObjectOptions } from '../adapter';
2
+ import type { VercelAIConfig } from './config';
3
+ /**
4
+ * Vercel AI SDK adapter for molroo.
5
+ * Supports OpenAI, Anthropic, Vertex AI, and OpenRouter providers.
6
+ */
7
+ export declare class VercelAIAdapter implements LLMAdapter {
8
+ private config;
9
+ constructor(config: VercelAIConfig);
10
+ private getProvider;
11
+ /**
12
+ * Create a language model instance.
13
+ * For OpenAI-compatible APIs with custom baseUrl, uses .chat() to force
14
+ * Chat Completions API instead of the default Responses API.
15
+ */
16
+ private getModel;
17
+ generateText(options: GenerateTextOptions): Promise<{
18
+ text: string;
19
+ }>;
20
+ generateObject<T>(options: GenerateObjectOptions<T>): Promise<{
21
+ object: T;
22
+ }>;
23
+ private getDefaultModel;
24
+ }
25
+ /**
26
+ * Factory function to create a VercelAIAdapter instance.
27
+ */
28
+ export declare function createVercelAIAdapter(config: VercelAIConfig): VercelAIAdapter;
29
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/llm/vercel-ai/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAgG/C;;;GAGG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;YAIpB,WAAW;IAoCzB;;;;OAIG;YACW,QAAQ;IAQhB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAerE,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC;IA2BlF,OAAO,CAAC,eAAe;CASxB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAE7E"}
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.VercelAIAdapter = void 0;
37
+ exports.createVercelAIAdapter = createVercelAIAdapter;
38
+ const ai_1 = require("ai");
39
+ /**
40
+ * Sanitize a plain JSON Schema for OpenAI strict structured output.
41
+ * - Adds `additionalProperties: false` to all object types
42
+ * - Strips unsupported keywords (minimum, maximum, default, pattern, etc.)
43
+ */
44
+ const ALLOWED_KEYS = new Set([
45
+ 'type', 'description', 'enum', 'const', 'anyOf', 'oneOf',
46
+ 'properties', 'required', 'additionalProperties',
47
+ 'items',
48
+ ]);
49
+ function strictifySchema(schema) {
50
+ if (!schema || typeof schema !== 'object')
51
+ return schema;
52
+ const result = {};
53
+ for (const key of Object.keys(schema)) {
54
+ if (ALLOWED_KEYS.has(key)) {
55
+ result[key] = schema[key];
56
+ }
57
+ }
58
+ if (result.type === 'object') {
59
+ result.additionalProperties = false;
60
+ if (result.properties) {
61
+ result.properties = Object.fromEntries(Object.entries(result.properties).map(([k, v]) => [k, strictifySchema(v)]));
62
+ }
63
+ }
64
+ if (result.items) {
65
+ result.items = strictifySchema(result.items);
66
+ }
67
+ if (result.anyOf) {
68
+ result.anyOf = result.anyOf.map(strictifySchema);
69
+ }
70
+ if (result.oneOf) {
71
+ result.oneOf = result.oneOf.map(strictifySchema);
72
+ }
73
+ return result;
74
+ }
75
+ /** Check if a value is a Zod schema (has _def property). */
76
+ function isZodSchema(schema) {
77
+ return schema && typeof schema === 'object' && '_def' in schema;
78
+ }
79
+ /**
80
+ * Recursively strip `$schema` keys from any object.
81
+ * AI SDK's Zod->JSON Schema converter adds `$schema` which some
82
+ * OpenAI-compatible APIs (e.g. Kimi/Moonshot) reject.
83
+ */
84
+ function stripDollarSchema(obj) {
85
+ if (!obj || typeof obj !== 'object')
86
+ return obj;
87
+ if (Array.isArray(obj))
88
+ return obj.map(stripDollarSchema);
89
+ const result = {};
90
+ for (const [k, v] of Object.entries(obj)) {
91
+ if (k === '$schema')
92
+ continue;
93
+ result[k] = stripDollarSchema(v);
94
+ }
95
+ return result;
96
+ }
97
+ /**
98
+ * Create a fetch wrapper that strips `$schema` from JSON request bodies.
99
+ * Used for OpenAI-compatible APIs that reject non-standard schema keywords.
100
+ */
101
+ function createSchemaStrippingFetch() {
102
+ return async (input, init) => {
103
+ if (init?.body && typeof init.body === 'string') {
104
+ try {
105
+ const parsed = JSON.parse(init.body);
106
+ if (parsed.response_format?.json_schema?.schema) {
107
+ parsed.response_format.json_schema.schema =
108
+ stripDollarSchema(parsed.response_format.json_schema.schema);
109
+ init = { ...init, body: JSON.stringify(parsed) };
110
+ }
111
+ }
112
+ catch {
113
+ // Not JSON, pass through
114
+ }
115
+ }
116
+ const response = await globalThis.fetch(input, init);
117
+ // Debug: log error responses from provider
118
+ if (!response.ok && process.env.DEBUG_LLM) {
119
+ const cloned = response.clone();
120
+ try {
121
+ const body = await cloned.text();
122
+ console.error(`[adapter-llm] ${response.status} ${response.statusText}: ${body.slice(0, 500)}`);
123
+ }
124
+ catch { /* ignore */ }
125
+ }
126
+ return response;
127
+ };
128
+ }
129
+ /**
130
+ * Vercel AI SDK adapter for molroo.
131
+ * Supports OpenAI, Anthropic, Vertex AI, and OpenRouter providers.
132
+ */
133
+ class VercelAIAdapter {
134
+ constructor(config) {
135
+ this.config = config;
136
+ }
137
+ async getProvider() {
138
+ switch (this.config.provider) {
139
+ case 'openai': {
140
+ const { createOpenAI } = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
141
+ return createOpenAI({
142
+ apiKey: this.config.apiKey,
143
+ ...(this.config.baseUrl ? {
144
+ baseURL: this.config.baseUrl,
145
+ fetch: createSchemaStrippingFetch(),
146
+ } : {}),
147
+ });
148
+ }
149
+ case 'anthropic': {
150
+ const { createAnthropic } = await Promise.resolve().then(() => __importStar(require('@ai-sdk/anthropic')));
151
+ return createAnthropic({ apiKey: this.config.apiKey });
152
+ }
153
+ case 'openrouter': {
154
+ const { createOpenAI } = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
155
+ return createOpenAI({
156
+ apiKey: this.config.apiKey,
157
+ baseURL: 'https://openrouter.ai/api/v1',
158
+ fetch: createSchemaStrippingFetch(),
159
+ });
160
+ }
161
+ case 'vertex': {
162
+ const { createVertex } = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google-vertex')));
163
+ return createVertex({
164
+ project: this.config.projectId,
165
+ location: this.config.location || 'us-central1'
166
+ });
167
+ }
168
+ default:
169
+ throw new Error(`Unknown provider: ${this.config.provider}`);
170
+ }
171
+ }
172
+ /**
173
+ * Create a language model instance.
174
+ * For OpenAI-compatible APIs with custom baseUrl, uses .chat() to force
175
+ * Chat Completions API instead of the default Responses API.
176
+ */
177
+ async getModel(modelName) {
178
+ const provider = await this.getProvider();
179
+ if (this.config.provider === 'openrouter' || (this.config.provider === 'openai' && this.config.baseUrl)) {
180
+ return provider.chat(modelName);
181
+ }
182
+ return provider(modelName);
183
+ }
184
+ async generateText(options) {
185
+ const modelName = this.config.model || this.getDefaultModel();
186
+ const model = await this.getModel(modelName);
187
+ const result = await (0, ai_1.generateText)({
188
+ model,
189
+ system: options.system,
190
+ messages: options.messages,
191
+ ...(options.temperature !== undefined && { temperature: options.temperature }),
192
+ ...(options.maxTokens !== undefined && { maxTokens: options.maxTokens }),
193
+ });
194
+ return { text: result.text };
195
+ }
196
+ async generateObject(options) {
197
+ const modelName = this.config.model || this.getDefaultModel();
198
+ const model = await this.getModel(modelName);
199
+ // Zod schemas can be passed directly to AI SDK.
200
+ // Plain JSON schemas need strictification for OpenAI compatibility.
201
+ const resolvedSchema = isZodSchema(options.schema)
202
+ ? options.schema
203
+ : (0, ai_1.jsonSchema)(strictifySchema(options.schema));
204
+ // OpenRouter and custom baseUrl providers often don't support strict
205
+ // json_schema mode. Use tool calling mode which is more widely supported.
206
+ const isProxied = this.config.provider === 'openrouter' ||
207
+ (this.config.provider === 'openai' && !!this.config.baseUrl);
208
+ const result = await (0, ai_1.generateObject)({
209
+ model,
210
+ schema: resolvedSchema,
211
+ system: options.system,
212
+ messages: options.messages,
213
+ ...(isProxied && { mode: 'tool' }),
214
+ ...(options.temperature !== undefined && { temperature: options.temperature }),
215
+ });
216
+ return { object: result.object };
217
+ }
218
+ getDefaultModel() {
219
+ switch (this.config.provider) {
220
+ case 'openai': return 'gpt-4o';
221
+ case 'anthropic': return 'claude-sonnet-4-5-20250929';
222
+ case 'openrouter': return 'anthropic/claude-sonnet-4-5';
223
+ case 'vertex': return 'gemini-2.0-flash';
224
+ default: return 'gpt-4o';
225
+ }
226
+ }
227
+ }
228
+ exports.VercelAIAdapter = VercelAIAdapter;
229
+ /**
230
+ * Factory function to create a VercelAIAdapter instance.
231
+ */
232
+ function createVercelAIAdapter(config) {
233
+ return new VercelAIAdapter(config);
234
+ }
@@ -0,0 +1,9 @@
1
+ export interface VercelAIConfig {
2
+ provider: 'openai' | 'anthropic' | 'vertex' | 'openrouter';
3
+ apiKey: string;
4
+ model?: string;
5
+ baseUrl?: string;
6
+ projectId?: string;
7
+ location?: string;
8
+ }
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/llm/vercel-ai/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ export { VercelAIAdapter } from './adapter';
2
+ export type { VercelAIConfig } from './config';
3
+ import { VercelAIAdapter } from './adapter';
4
+ import type { VercelAIConfig } from './config';
5
+ /**
6
+ * Create a Vercel AI SDK adapter from config.
7
+ */
8
+ export declare function createVercelAIAdapter(config: VercelAIConfig): VercelAIAdapter;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/llm/vercel-ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAE7E"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VercelAIAdapter = void 0;
4
+ exports.createVercelAIAdapter = createVercelAIAdapter;
5
+ var adapter_1 = require("./adapter");
6
+ Object.defineProperty(exports, "VercelAIAdapter", { enumerable: true, get: function () { return adapter_1.VercelAIAdapter; } });
7
+ const adapter_2 = require("./adapter");
8
+ /**
9
+ * Create a Vercel AI SDK adapter from config.
10
+ */
11
+ function createVercelAIAdapter(config) {
12
+ return new adapter_2.VercelAIAdapter(config);
13
+ }
@@ -0,0 +1,3 @@
1
+ export { CloudflareVectorizeMemory } from './vectorize';
2
+ export type { CloudflareVectorizeMemoryOptions, VectorizeIndex } from './vectorize';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/memory/cloudflare/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,gCAAgC,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudflareVectorizeMemory = void 0;
4
+ var vectorize_1 = require("./vectorize");
5
+ Object.defineProperty(exports, "CloudflareVectorizeMemory", { enumerable: true, get: function () { return vectorize_1.CloudflareVectorizeMemory; } });