ai-functions 0.2.19 → 0.3.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 (313) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +112 -21
  3. package/bin/cli.js +5 -0
  4. package/dist/cli/index.d.ts +10 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +38 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/cli/index.test.d.ts +2 -0
  9. package/dist/cli/index.test.d.ts.map +1 -0
  10. package/dist/cli/index.test.js +35 -0
  11. package/dist/cli/index.test.js.map +1 -0
  12. package/dist/constants/models.d.ts +10 -0
  13. package/dist/constants/models.d.ts.map +1 -0
  14. package/dist/constants/models.js +12 -0
  15. package/dist/constants/models.js.map +1 -0
  16. package/dist/converters/index.d.ts +3 -0
  17. package/dist/converters/index.d.ts.map +1 -0
  18. package/dist/converters/index.js +3 -0
  19. package/dist/converters/index.js.map +1 -0
  20. package/dist/converters/model.d.ts +4 -0
  21. package/dist/converters/model.d.ts.map +1 -0
  22. package/dist/converters/model.js +19 -0
  23. package/dist/converters/model.js.map +1 -0
  24. package/dist/converters/schema.d.ts +4 -0
  25. package/dist/converters/schema.d.ts.map +1 -0
  26. package/dist/converters/schema.js +25 -0
  27. package/dist/converters/schema.js.map +1 -0
  28. package/dist/core/responses.d.ts +5 -0
  29. package/dist/core/responses.d.ts.map +1 -0
  30. package/dist/core/responses.js +16 -0
  31. package/dist/core/responses.js.map +1 -0
  32. package/dist/core/responses.test.d.ts +2 -0
  33. package/dist/core/responses.test.d.ts.map +1 -0
  34. package/dist/core/responses.test.js +31 -0
  35. package/dist/core/responses.test.js.map +1 -0
  36. package/dist/errors.d.ts +6 -0
  37. package/dist/errors.d.ts.map +1 -0
  38. package/dist/errors.js +9 -0
  39. package/dist/errors.js.map +1 -0
  40. package/dist/examples/streaming.test.d.ts +2 -0
  41. package/dist/examples/streaming.test.d.ts.map +1 -0
  42. package/dist/examples/streaming.test.js +176 -0
  43. package/dist/examples/streaming.test.js.map +1 -0
  44. package/dist/factory/__tests__/index.test.d.ts +2 -0
  45. package/dist/factory/__tests__/index.test.d.ts.map +1 -0
  46. package/dist/factory/__tests__/index.test.js +430 -0
  47. package/dist/factory/__tests__/index.test.js.map +1 -0
  48. package/dist/factory/__tests__/list.test.d.ts +2 -0
  49. package/dist/factory/__tests__/list.test.d.ts.map +1 -0
  50. package/dist/factory/__tests__/list.test.js +92 -0
  51. package/dist/factory/__tests__/list.test.js.map +1 -0
  52. package/dist/factory/index.d.ts +20 -0
  53. package/dist/factory/index.d.ts.map +1 -0
  54. package/dist/factory/index.js +287 -0
  55. package/dist/factory/index.js.map +1 -0
  56. package/dist/factory/index.test.d.ts +2 -0
  57. package/dist/factory/index.test.d.ts.map +1 -0
  58. package/dist/factory/index.test.js +287 -0
  59. package/dist/factory/index.test.js.map +1 -0
  60. package/dist/factory/list.d.ts +3 -0
  61. package/dist/factory/list.d.ts.map +1 -0
  62. package/dist/factory/list.js +221 -0
  63. package/dist/factory/list.js.map +1 -0
  64. package/dist/factory/list.test.d.ts +2 -0
  65. package/dist/factory/list.test.d.ts.map +1 -0
  66. package/dist/factory/list.test.js +84 -0
  67. package/dist/factory/list.test.js.map +1 -0
  68. package/dist/generate/index.d.ts +5 -0
  69. package/dist/generate/index.d.ts.map +1 -0
  70. package/dist/generate/index.js +17 -0
  71. package/dist/generate/index.js.map +1 -0
  72. package/dist/index.d.ts +5 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +53 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/index.test.d.ts +2 -0
  77. package/dist/index.test.d.ts.map +1 -0
  78. package/dist/index.test.js +59 -0
  79. package/dist/index.test.js.map +1 -0
  80. package/dist/list/await.d.ts +3 -0
  81. package/dist/list/await.d.ts.map +1 -0
  82. package/dist/list/await.js +28 -0
  83. package/dist/list/await.js.map +1 -0
  84. package/dist/list/constants.d.ts +4 -0
  85. package/dist/list/constants.d.ts.map +1 -0
  86. package/dist/list/constants.js +5 -0
  87. package/dist/list/constants.js.map +1 -0
  88. package/dist/list/create-function.d.ts +3 -0
  89. package/dist/list/create-function.d.ts.map +1 -0
  90. package/dist/list/create-function.js +11 -0
  91. package/dist/list/create-function.js.map +1 -0
  92. package/dist/list/index.d.ts +4 -0
  93. package/dist/list/index.d.ts.map +1 -0
  94. package/dist/list/index.js +5 -0
  95. package/dist/list/index.js.map +1 -0
  96. package/dist/list/prompt.d.ts +3 -0
  97. package/dist/list/prompt.d.ts.map +1 -0
  98. package/dist/list/prompt.js +6 -0
  99. package/dist/list/prompt.js.map +1 -0
  100. package/dist/list/schemas.d.ts +4 -0
  101. package/dist/list/schemas.d.ts.map +1 -0
  102. package/dist/list/schemas.js +8 -0
  103. package/dist/list/schemas.js.map +1 -0
  104. package/dist/list/stream.d.ts +3 -0
  105. package/dist/list/stream.d.ts.map +1 -0
  106. package/dist/list/stream.js +33 -0
  107. package/dist/list/stream.js.map +1 -0
  108. package/dist/list/types.d.ts +11 -0
  109. package/dist/list/types.d.ts.map +1 -0
  110. package/dist/list/types.js +2 -0
  111. package/dist/list/types.js.map +1 -0
  112. package/dist/list/validation.d.ts +3 -0
  113. package/dist/list/validation.d.ts.map +1 -0
  114. package/dist/list/validation.js +12 -0
  115. package/dist/list/validation.js.map +1 -0
  116. package/dist/providers/config.d.ts +4 -0
  117. package/dist/providers/config.d.ts.map +1 -0
  118. package/dist/providers/config.js +21 -0
  119. package/dist/providers/config.js.map +1 -0
  120. package/dist/providers/config.test.d.ts +2 -0
  121. package/dist/providers/config.test.d.ts.map +1 -0
  122. package/dist/providers/config.test.js +37 -0
  123. package/dist/providers/config.test.js.map +1 -0
  124. package/dist/proxy/constants.d.ts +4 -0
  125. package/dist/proxy/constants.d.ts.map +1 -0
  126. package/dist/proxy/constants.js +5 -0
  127. package/dist/proxy/constants.js.map +1 -0
  128. package/dist/proxy/create-function.d.ts +4 -0
  129. package/dist/proxy/create-function.d.ts.map +1 -0
  130. package/dist/proxy/create-function.js +24 -0
  131. package/dist/proxy/create-function.js.map +1 -0
  132. package/dist/proxy/create-proxy.d.ts +2 -0
  133. package/dist/proxy/create-proxy.d.ts.map +1 -0
  134. package/dist/proxy/create-proxy.js +11 -0
  135. package/dist/proxy/create-proxy.js.map +1 -0
  136. package/dist/proxy/function-generator.d.ts +9 -0
  137. package/dist/proxy/function-generator.d.ts.map +1 -0
  138. package/dist/proxy/function-generator.js +29 -0
  139. package/dist/proxy/function-generator.js.map +1 -0
  140. package/dist/proxy/index.d.ts +4 -0
  141. package/dist/proxy/index.d.ts.map +1 -0
  142. package/dist/proxy/index.js +4 -0
  143. package/dist/proxy/index.js.map +1 -0
  144. package/dist/proxy/prompt.d.ts +2 -0
  145. package/dist/proxy/prompt.d.ts.map +1 -0
  146. package/dist/proxy/prompt.js +6 -0
  147. package/dist/proxy/prompt.js.map +1 -0
  148. package/dist/proxy/types.d.ts +7 -0
  149. package/dist/proxy/types.d.ts.map +1 -0
  150. package/dist/proxy/types.js +2 -0
  151. package/dist/proxy/types.js.map +1 -0
  152. package/dist/queue/manager.d.ts +5 -0
  153. package/dist/queue/manager.d.ts.map +1 -0
  154. package/dist/queue/manager.js +37 -0
  155. package/dist/queue/manager.js.map +1 -0
  156. package/dist/queue/manager.test.d.ts +2 -0
  157. package/dist/queue/manager.test.d.ts.map +1 -0
  158. package/dist/queue/manager.test.js +52 -0
  159. package/dist/queue/manager.test.js.map +1 -0
  160. package/dist/schema-converter.d.ts +4 -0
  161. package/dist/schema-converter.d.ts.map +1 -0
  162. package/dist/schema-converter.js +30 -0
  163. package/dist/schema-converter.js.map +1 -0
  164. package/dist/stream/index.d.ts +7 -0
  165. package/dist/stream/index.d.ts.map +1 -0
  166. package/dist/stream/index.js +23 -0
  167. package/dist/stream/index.js.map +1 -0
  168. package/dist/streaming/utils.d.ts +4 -0
  169. package/dist/streaming/utils.d.ts.map +1 -0
  170. package/dist/streaming/utils.js +131 -0
  171. package/dist/streaming/utils.js.map +1 -0
  172. package/dist/streaming/utils.test.d.ts +2 -0
  173. package/dist/streaming/utils.test.d.ts.map +1 -0
  174. package/dist/streaming/utils.test.js +84 -0
  175. package/dist/streaming/utils.test.js.map +1 -0
  176. package/dist/templates/result.d.ts +7 -0
  177. package/dist/templates/result.d.ts.map +1 -0
  178. package/dist/templates/result.js +40 -0
  179. package/dist/templates/result.js.map +1 -0
  180. package/dist/templates/result.test.d.ts +2 -0
  181. package/dist/templates/result.test.d.ts.map +1 -0
  182. package/dist/templates/result.test.js +75 -0
  183. package/dist/templates/result.test.js.map +1 -0
  184. package/dist/test/setup.d.ts +2 -0
  185. package/dist/test/setup.d.ts.map +1 -0
  186. package/dist/test/setup.js +21 -0
  187. package/dist/test/setup.js.map +1 -0
  188. package/dist/test-types.d.ts +13 -0
  189. package/dist/test-types.d.ts.map +1 -0
  190. package/dist/test-types.js +55 -0
  191. package/dist/test-types.js.map +1 -0
  192. package/dist/types/index.d.ts +4 -0
  193. package/dist/types/index.d.ts.map +1 -0
  194. package/dist/types/index.js +4 -0
  195. package/dist/types/index.js.map +1 -0
  196. package/dist/types/list.d.ts +10 -0
  197. package/dist/types/list.d.ts.map +1 -0
  198. package/dist/types/list.js +2 -0
  199. package/dist/types/list.js.map +1 -0
  200. package/dist/types/model.d.ts +7 -0
  201. package/dist/types/model.d.ts.map +1 -0
  202. package/dist/types/model.js +2 -0
  203. package/dist/types/model.js.map +1 -0
  204. package/dist/types/options.d.ts +25 -0
  205. package/dist/types/options.d.ts.map +1 -0
  206. package/dist/types/options.js +2 -0
  207. package/dist/types/options.js.map +1 -0
  208. package/dist/types/schema.d.ts +5 -0
  209. package/dist/types/schema.d.ts.map +1 -0
  210. package/dist/types/schema.js +2 -0
  211. package/dist/types/schema.js.map +1 -0
  212. package/dist/types.d.ts +113 -0
  213. package/dist/types.d.ts.map +1 -0
  214. package/dist/types.js +9 -0
  215. package/dist/types.js.map +1 -0
  216. package/dist/utils/__tests__/request-handler.test.d.ts +2 -0
  217. package/dist/utils/__tests__/request-handler.test.d.ts.map +1 -0
  218. package/dist/utils/__tests__/request-handler.test.js +134 -0
  219. package/dist/utils/__tests__/request-handler.test.js.map +1 -0
  220. package/dist/utils/__tests__/schema.test.d.ts +2 -0
  221. package/dist/utils/__tests__/schema.test.d.ts.map +1 -0
  222. package/dist/utils/__tests__/schema.test.js +49 -0
  223. package/dist/utils/__tests__/schema.test.js.map +1 -0
  224. package/dist/utils/__tests__/stream-progress.test.d.ts +2 -0
  225. package/dist/utils/__tests__/stream-progress.test.d.ts.map +1 -0
  226. package/dist/utils/__tests__/stream-progress.test.js +85 -0
  227. package/dist/utils/__tests__/stream-progress.test.js.map +1 -0
  228. package/dist/utils/index.d.ts +2 -0
  229. package/dist/utils/index.d.ts.map +1 -0
  230. package/dist/utils/index.js +2 -0
  231. package/dist/utils/index.js.map +1 -0
  232. package/dist/utils/request-handler.d.ts +17 -0
  233. package/dist/utils/request-handler.d.ts.map +1 -0
  234. package/dist/utils/request-handler.js +105 -0
  235. package/dist/utils/request-handler.js.map +1 -0
  236. package/dist/utils/schema.d.ts +11 -0
  237. package/dist/utils/schema.d.ts.map +1 -0
  238. package/dist/utils/schema.js +51 -0
  239. package/dist/utils/schema.js.map +1 -0
  240. package/dist/utils/stream-progress.d.ts +17 -0
  241. package/dist/utils/stream-progress.d.ts.map +1 -0
  242. package/dist/utils/stream-progress.js +86 -0
  243. package/dist/utils/stream-progress.js.map +1 -0
  244. package/dist/utils/validation.d.ts +3 -0
  245. package/dist/utils/validation.d.ts.map +1 -0
  246. package/dist/utils/validation.js +30 -0
  247. package/dist/utils/validation.js.map +1 -0
  248. package/package.json +56 -40
  249. package/db/cache.ts +0 -6
  250. package/db/mongo.ts +0 -75
  251. package/dist/mjs/db/cache.d.ts +0 -1
  252. package/dist/mjs/db/cache.js +0 -5
  253. package/dist/mjs/db/mongo.d.ts +0 -31
  254. package/dist/mjs/db/mongo.js +0 -48
  255. package/dist/mjs/examples/data.d.ts +0 -1105
  256. package/dist/mjs/examples/data.js +0 -1105
  257. package/dist/mjs/functions/ai.d.ts +0 -20
  258. package/dist/mjs/functions/ai.js +0 -83
  259. package/dist/mjs/functions/ai.test.d.ts +0 -1
  260. package/dist/mjs/functions/ai.test.js +0 -29
  261. package/dist/mjs/functions/gpt.d.ts +0 -4
  262. package/dist/mjs/functions/gpt.js +0 -10
  263. package/dist/mjs/functions/list.d.ts +0 -7
  264. package/dist/mjs/functions/list.js +0 -72
  265. package/dist/mjs/index.d.ts +0 -3
  266. package/dist/mjs/index.js +0 -3
  267. package/dist/mjs/queue/kafka.d.ts +0 -0
  268. package/dist/mjs/queue/kafka.js +0 -1
  269. package/dist/mjs/queue/memory.d.ts +0 -0
  270. package/dist/mjs/queue/memory.js +0 -1
  271. package/dist/mjs/queue/mongo.d.ts +0 -30
  272. package/dist/mjs/queue/mongo.js +0 -42
  273. package/dist/mjs/streams/kafka.d.ts +0 -0
  274. package/dist/mjs/streams/kafka.js +0 -1
  275. package/dist/mjs/streams/memory.d.ts +0 -0
  276. package/dist/mjs/streams/memory.js +0 -1
  277. package/dist/mjs/streams/mongo.d.ts +0 -0
  278. package/dist/mjs/streams/mongo.js +0 -1
  279. package/dist/mjs/streams/types.d.ts +0 -0
  280. package/dist/mjs/streams/types.js +0 -1
  281. package/dist/mjs/types.d.ts +0 -11
  282. package/dist/mjs/types.js +0 -1
  283. package/dist/mjs/utils/completion.d.ts +0 -9
  284. package/dist/mjs/utils/completion.js +0 -20
  285. package/dist/mjs/utils/schema.d.ts +0 -10
  286. package/dist/mjs/utils/schema.js +0 -72
  287. package/dist/mjs/utils/schema.test.d.ts +0 -1
  288. package/dist/mjs/utils/schema.test.js +0 -60
  289. package/dist/mjs/utils/state.d.ts +0 -1
  290. package/dist/mjs/utils/state.js +0 -19
  291. package/examples/data.ts +0 -1105
  292. package/fixup +0 -11
  293. package/functions/ai.test.ts +0 -41
  294. package/functions/ai.ts +0 -115
  295. package/functions/gpt.ts +0 -12
  296. package/functions/list.ts +0 -84
  297. package/index.ts +0 -3
  298. package/queue/kafka.ts +0 -0
  299. package/queue/memory.ts +0 -0
  300. package/queue/mongo.ts +0 -88
  301. package/streams/kafka.ts +0 -0
  302. package/streams/memory.ts +0 -0
  303. package/streams/mongo.ts +0 -0
  304. package/streams/types.ts +0 -0
  305. package/tsconfig-backup.json +0 -105
  306. package/tsconfig-base.json +0 -26
  307. package/tsconfig-cjs.json +0 -8
  308. package/tsconfig.json +0 -8
  309. package/types.ts +0 -12
  310. package/utils/completion.ts +0 -28
  311. package/utils/schema.test.ts +0 -69
  312. package/utils/schema.ts +0 -74
  313. package/utils/state.ts +0 -23
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../../../src/factory/__tests__/list.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { createListFunction } from '../list';
3
+ import { openai } from '@ai-sdk/openai';
4
+ beforeEach(() => {
5
+ process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
6
+ // Ensure AI gateway is configured for cached responses
7
+ process.env.AI_GATEWAY = process.env.AI_GATEWAY || 'https://api.openai.com/v1';
8
+ });
9
+ const model = openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o');
10
+ describe('createListFunction', () => {
11
+ it('should generate a list of items', async () => {
12
+ const list = createListFunction();
13
+ const result = await list `fun things to do in Miami`({ model });
14
+ expect(result).toBeDefined();
15
+ expect(typeof result).toBe('string');
16
+ expect(result.split('\n').length).toBeGreaterThan(0);
17
+ });
18
+ it('should support async iteration', async () => {
19
+ const list = createListFunction();
20
+ const items = [];
21
+ for await (const item of list `fun things to do in Miami`) {
22
+ items.push(item);
23
+ }
24
+ expect(items.length).toBeGreaterThan(0);
25
+ });
26
+ it('should support configuration options', async () => {
27
+ const list = createListFunction();
28
+ const result = await list `fun things to do in Miami`({ model });
29
+ expect(result).toBeDefined();
30
+ expect(typeof result).toBe('string');
31
+ expect(result.split('\n').length).toBeGreaterThan(0);
32
+ });
33
+ it('should handle empty input', async () => {
34
+ const list = createListFunction();
35
+ const result = await list ``({ model });
36
+ expect(result).toBeDefined();
37
+ expect(typeof result).toBe('string');
38
+ });
39
+ it('should handle concurrent list operations', async () => {
40
+ const list = createListFunction();
41
+ const topics = ['cities', 'foods', 'sports'];
42
+ const tasks = topics.map(topic => list `5 popular ${topic}`({ model, concurrency: 2 }));
43
+ const results = await Promise.all(tasks);
44
+ expect(results).toHaveLength(3);
45
+ results.forEach((result) => {
46
+ expect(result.split('\n').length).toBeGreaterThan(0);
47
+ });
48
+ });
49
+ it('should handle concurrent streaming list operations', async () => {
50
+ const list = createListFunction();
51
+ const topics = ['movies', 'books', 'games'];
52
+ // Configure the list function with options once
53
+ const configuredList = createListFunction({
54
+ model,
55
+ concurrency: 2
56
+ });
57
+ // Create an array of promises that will resolve to arrays of items
58
+ const promises = topics.map(async (topic) => {
59
+ const items = [];
60
+ // Use async iteration directly on the template result
61
+ for await (const item of configuredList `3 popular ${topic}`) {
62
+ items.push(item);
63
+ }
64
+ return items;
65
+ });
66
+ // Wait for all promises to complete
67
+ const results = await Promise.all(promises);
68
+ expect(results).toHaveLength(3);
69
+ results.forEach((items) => {
70
+ expect(items.length).toBeGreaterThan(0);
71
+ expect(items.every((item) => typeof item === 'string')).toBe(true);
72
+ });
73
+ });
74
+ it('should handle errors in concurrent list operations', async () => {
75
+ const list = createListFunction();
76
+ const tasks = [
77
+ list `valid request`({ model }),
78
+ list `trigger error`({ model }),
79
+ list `another valid request`({ model })
80
+ ].map(promise => promise.catch(err => {
81
+ // If any request fails, we'll handle it gracefully
82
+ return 'error occurred';
83
+ }));
84
+ const results = await Promise.all(tasks);
85
+ expect(results).toHaveLength(3);
86
+ results.forEach(result => {
87
+ expect(typeof result).toBe('string');
88
+ expect(result.length).toBeGreaterThan(0);
89
+ });
90
+ });
91
+ });
92
+ //# sourceMappingURL=list.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../../src/factory/__tests__/list.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGvC,UAAU,CAAC,GAAG,EAAE;IACd,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU,CAAA;IACrE,uDAAuD;IACvD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,2BAA2B,CAAA;AAChF,CAAC,CAAC,CAAA;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,QAAQ,CAAC,CAAA;AAElE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAA,2BAA2B,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAA;QACjC,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAA,2BAA2B,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAA,2BAA2B,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAA,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAC/B,IAAI,CAAA,aAAa,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CACpD,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;YACjC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAE3C,gDAAgD;QAChD,MAAM,cAAc,GAAG,kBAAkB,CAAC;YACxC,KAAK;YACL,WAAW,EAAE,CAAC;SACf,CAAC,CAAA;QAEF,mEAAmE;QACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,sDAAsD;YACtD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,cAAc,CAAA,aAAa,KAAK,EAAE,EAAE,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;QAEF,oCAAoC;QACpC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,KAAe,EAAE,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG;YACZ,IAAI,CAAA,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAA,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAA,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC;SACvC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACd,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAClB,mDAAmD;YACnD,OAAO,gBAAgB,CAAA;QACzB,CAAC,CAAC,CACH,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { type GenerateTextResult, type JSONValue, type CoreTool } from 'ai';
2
+ import { Response } from 'undici';
3
+ import { z } from 'zod';
4
+ import { AIFunction, AIFunctionOptions, BaseTemplateFunction } from '../types';
5
+ export type GenerateResult = GenerateTextResult<Record<string, CoreTool<any, any>>, Record<string, unknown>>;
6
+ export type GenerateJsonResult = GenerateResult & {
7
+ object: JSONValue;
8
+ toJsonResponse: () => Response;
9
+ };
10
+ export type StreamingResult = GenerateResult & {
11
+ experimental_stream: AsyncIterable<string>;
12
+ };
13
+ export declare function isStreamingResult(result: unknown): result is StreamingResult;
14
+ export declare function isJsonResult(result: GenerateResult): result is GenerateJsonResult;
15
+ export declare function createAIFunction<T extends z.ZodType>(schema: T): AIFunction<T>;
16
+ export declare function createJsonResponse(result: GenerateJsonResult): Response;
17
+ export declare function createStreamResponse(result: StreamingResult): Response;
18
+ export declare function createTextResponse(result: GenerateResult): Response;
19
+ export declare function createTemplateFunction(defaultOptions?: AIFunctionOptions): BaseTemplateFunction;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,kBAAkB,EAA6B,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,IAAI,CAAA;AAI5I,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAA+B,MAAM,UAAU,CAAA;AAa3G,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAE5G,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG;IAChD,MAAM,EAAE,SAAS,CAAA;IACjB,cAAc,EAAE,MAAM,QAAQ,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC3C,CAAA;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,eAAe,CAQ5E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,IAAI,kBAAkB,CAEjF;AAID,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAiChD,UAAU,CAAC,CAAC,CAAC,CAC3B;AAwBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,QAAQ,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAItE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAInE;AAED,wBAAgB,sBAAsB,CAAC,cAAc,GAAE,iBAAsB,GAAG,oBAAoB,CAgOnG"}
@@ -0,0 +1,287 @@
1
+ import { generateText, generateObject, Output } from 'ai';
2
+ import { openai } from '@ai-sdk/openai';
3
+ import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
4
+ import { Response } from 'undici';
5
+ import { z } from 'zod';
6
+ import PQueue from 'p-queue';
7
+ import { createRequestHandler } from '../utils/request-handler';
8
+ import { StreamProgressTracker } from '../utils/stream-progress';
9
+ import { AIRequestError } from '../errors';
10
+ // Add this at the top of the file, before any other code
11
+ function isTemplateStringsArray(value) {
12
+ return Array.isArray(value) && 'raw' in value;
13
+ }
14
+ export function isStreamingResult(result) {
15
+ return (result !== null &&
16
+ typeof result === 'object' &&
17
+ 'experimental_stream' in result &&
18
+ typeof result.experimental_stream === 'object' &&
19
+ Symbol.asyncIterator in result.experimental_stream);
20
+ }
21
+ export function isJsonResult(result) {
22
+ return 'object' in result && 'toJsonResponse' in result;
23
+ }
24
+ // PLACEHOLDER: response creation functions
25
+ export function createAIFunction(schema) {
26
+ const fn = async (args, options = {}) => {
27
+ if (!args) {
28
+ return { schema };
29
+ }
30
+ const requestHandler = createRequestHandler({ requestHandling: options.requestHandling });
31
+ const result = await requestHandler.execute(async () => {
32
+ return generateText({
33
+ model: options.model || getProvider()('gpt-4o-mini'),
34
+ prompt: options.prompt || '',
35
+ maxRetries: 2,
36
+ experimental_output: Output.object({ schema: schema }),
37
+ system: options.system,
38
+ temperature: options.temperature,
39
+ maxTokens: options.maxTokens,
40
+ topP: options.topP,
41
+ frequencyPenalty: options.frequencyPenalty,
42
+ presencePenalty: options.presencePenalty,
43
+ stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
44
+ seed: options.seed,
45
+ });
46
+ });
47
+ if (!result.experimental_output) {
48
+ throw new Error('No output received from model');
49
+ }
50
+ return result.experimental_output;
51
+ };
52
+ fn.schema = schema;
53
+ return fn;
54
+ }
55
+ // PLACEHOLDER: createTemplateFunction implementation
56
+ function getProvider() {
57
+ const gateway = process.env.AI_GATEWAY;
58
+ const apiKey = process.env.OPENAI_API_KEY;
59
+ if (!apiKey) {
60
+ throw new Error('OPENAI_API_KEY environment variable is required');
61
+ }
62
+ return gateway
63
+ ? createOpenAICompatible({
64
+ baseURL: gateway,
65
+ name: 'openai',
66
+ headers: {
67
+ 'Authorization': `Bearer ${apiKey}`,
68
+ 'Content-Type': 'application/json'
69
+ }
70
+ })
71
+ : openai;
72
+ }
73
+ export function createJsonResponse(result) {
74
+ return result.toJsonResponse();
75
+ }
76
+ export function createStreamResponse(result) {
77
+ return new Response(result.experimental_stream, {
78
+ headers: { 'Content-Type': 'text/plain' },
79
+ });
80
+ }
81
+ export function createTextResponse(result) {
82
+ return new Response(result.text, {
83
+ headers: { 'Content-Type': 'text/plain' },
84
+ });
85
+ }
86
+ export function createTemplateFunction(defaultOptions = {}) {
87
+ let currentPrompt;
88
+ let queue;
89
+ const initQueue = (options) => {
90
+ if (!queue && options.concurrency) {
91
+ queue = new PQueue({ concurrency: options.concurrency });
92
+ }
93
+ return queue;
94
+ };
95
+ const templateFn = async (prompt, options = defaultOptions) => {
96
+ currentPrompt = prompt;
97
+ const modelParams = {
98
+ temperature: options.temperature,
99
+ maxTokens: options.maxTokens,
100
+ topP: options.topP,
101
+ frequencyPenalty: options.frequencyPenalty,
102
+ presencePenalty: options.presencePenalty,
103
+ stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
104
+ seed: options.seed,
105
+ system: options.system,
106
+ };
107
+ const executeRequest = async () => {
108
+ try {
109
+ if (options.outputFormat === 'json') {
110
+ try {
111
+ const model = options.model || openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o', { structuredOutputs: true });
112
+ if (options.schema) {
113
+ const schema = options.schema instanceof z.ZodType
114
+ ? options.schema
115
+ : z.object(Object.fromEntries(Object.entries(options.schema).map(([key, type]) => [
116
+ key,
117
+ type === 'string' ? z.string() :
118
+ type === 'number' ? z.number() :
119
+ type === 'boolean' ? z.boolean() :
120
+ type === 'array' ? z.array(z.unknown()) :
121
+ type === 'object' ? z.record(z.string(), z.unknown()) :
122
+ z.unknown()
123
+ ])));
124
+ const result = await generateObject({
125
+ model,
126
+ schema,
127
+ prompt,
128
+ ...modelParams,
129
+ });
130
+ return JSON.stringify(result.object);
131
+ }
132
+ else {
133
+ const result = await generateObject({
134
+ model,
135
+ output: 'no-schema',
136
+ prompt,
137
+ ...modelParams,
138
+ });
139
+ return JSON.stringify(result.object);
140
+ }
141
+ }
142
+ catch (error) {
143
+ if (error instanceof Error) {
144
+ throw new AIRequestError(`Invalid JSON format: ${error.message}`, error, false);
145
+ }
146
+ throw new AIRequestError('Invalid JSON format', error, false);
147
+ }
148
+ }
149
+ const result = (await generateText({
150
+ model: options.model || openai('gpt-4o-mini'),
151
+ prompt,
152
+ ...modelParams,
153
+ ...options,
154
+ }));
155
+ if (!result) {
156
+ throw new AIRequestError('No result received from model', undefined, false);
157
+ }
158
+ return result.text;
159
+ }
160
+ catch (error) {
161
+ if (error instanceof Error) {
162
+ throw error;
163
+ }
164
+ throw new AIRequestError('Failed to generate text', error, false);
165
+ }
166
+ };
167
+ try {
168
+ const currentQueue = initQueue(options);
169
+ if (!currentQueue) {
170
+ return executeRequest();
171
+ }
172
+ return currentQueue.add(executeRequest);
173
+ }
174
+ catch (error) {
175
+ if (error instanceof Error) {
176
+ throw error;
177
+ }
178
+ throw new AIRequestError('Failed to generate text', error, false);
179
+ }
180
+ };
181
+ const asyncIterator = async function* () {
182
+ if (!currentPrompt) {
183
+ return;
184
+ }
185
+ const options = defaultOptions;
186
+ const modelParams = {
187
+ temperature: options.temperature,
188
+ maxTokens: options.maxTokens,
189
+ topP: options.topP,
190
+ frequencyPenalty: options.frequencyPenalty,
191
+ presencePenalty: options.presencePenalty,
192
+ stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
193
+ seed: options.seed,
194
+ system: options.system,
195
+ };
196
+ const progressTracker = options.streaming ?
197
+ new StreamProgressTracker(options.streaming) : undefined;
198
+ const executeRequest = async () => {
199
+ const result = (await generateText({
200
+ model: options.model || openai('gpt-4o-mini'),
201
+ prompt: currentPrompt,
202
+ maxRetries: 2,
203
+ ...modelParams,
204
+ ...options,
205
+ }));
206
+ if (!result) {
207
+ throw new Error('No result received from model');
208
+ }
209
+ return result;
210
+ };
211
+ try {
212
+ const currentQueue = initQueue(options);
213
+ const result = currentQueue
214
+ ? await currentQueue.add(executeRequest)
215
+ : await executeRequest();
216
+ if (isStreamingResult(result)) {
217
+ for await (const chunk of result.experimental_stream) {
218
+ if (progressTracker) {
219
+ progressTracker.onChunk(chunk);
220
+ }
221
+ yield chunk;
222
+ }
223
+ progressTracker?.onComplete();
224
+ }
225
+ else if (result) {
226
+ if (progressTracker) {
227
+ progressTracker.onChunk(result.text);
228
+ progressTracker.onComplete();
229
+ }
230
+ yield result.text;
231
+ }
232
+ }
233
+ catch (error) {
234
+ const errorMessage = error instanceof Error ? error.message : 'Failed to generate text';
235
+ progressTracker?.onChunk(errorMessage);
236
+ progressTracker?.onComplete();
237
+ console.error('Error in asyncIterator:', error);
238
+ yield errorMessage;
239
+ }
240
+ };
241
+ const createAsyncIterablePromise = (promise, prompt, options = defaultOptions) => {
242
+ const asyncIterable = {
243
+ [Symbol.asyncIterator]: asyncIterator
244
+ };
245
+ const callablePromise = Object.assign(async (opts) => {
246
+ if (!opts)
247
+ return promise;
248
+ return templateFn(prompt, { ...options, ...opts });
249
+ }, {
250
+ then: (onfulfilled, onrejected) => promise.then(onfulfilled, onrejected),
251
+ catch: (onrejected) => promise.catch(onrejected),
252
+ finally: (onfinally) => promise.finally(onfinally),
253
+ [Symbol.asyncIterator]: asyncIterable[Symbol.asyncIterator]
254
+ });
255
+ return callablePromise;
256
+ };
257
+ const baseFn = Object.assign((stringsOrOptions, ...values) => {
258
+ if (!stringsOrOptions) {
259
+ return createAsyncIterablePromise(templateFn('', defaultOptions), '', defaultOptions);
260
+ }
261
+ if (isTemplateStringsArray(stringsOrOptions)) {
262
+ const strings = stringsOrOptions;
263
+ if (strings.length - 1 !== values.length) {
264
+ throw new Error('Template literal slots must match provided values');
265
+ }
266
+ const lastValue = values[values.length - 1];
267
+ const options = typeof lastValue === 'object' && !Array.isArray(lastValue) && lastValue !== null
268
+ ? { ...defaultOptions, ...lastValue }
269
+ : defaultOptions;
270
+ const actualValues = typeof lastValue === 'object' && !Array.isArray(lastValue) && lastValue !== null
271
+ ? values.slice(0, -1)
272
+ : values;
273
+ const prompt = strings.reduce((acc, str, i) => acc + str + (actualValues[i] || ''), '');
274
+ return createAsyncIterablePromise(templateFn(prompt, options), prompt, options);
275
+ }
276
+ return createAsyncIterablePromise(templateFn('', { ...defaultOptions, ...stringsOrOptions }), '', { ...defaultOptions, ...stringsOrOptions });
277
+ }, {
278
+ withOptions: (opts = {}) => {
279
+ const prompt = opts.prompt || currentPrompt || '';
280
+ return templateFn(prompt, { ...defaultOptions, ...opts });
281
+ },
282
+ [Symbol.asyncIterator]: asyncIterator,
283
+ queue
284
+ });
285
+ return baseFn;
286
+ }
287
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/factory/index.test.ts"],"names":[],"mappings":""}