ai-functions 0.2.18 → 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
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Nathan Clevenger
3
+ Copyright (c) 2024 AI Primitives
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,20 +1,48 @@
1
- # AI Functions
1
+ # ai-functions
2
2
 
3
- Library for Developing and Managing AI Functions (including OpenAI GPT4 / GPT3.5)
3
+ [![npm version](https://badge.fury.io/js/ai-functions.svg)](https://www.npmjs.com/package/ai-functions)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
5
 
5
- Key Features:
6
+ A powerful TypeScript library for building AI-powered applications with template literals and structured outputs. Uses `ai` SDK with OpenAI `gpt-4o` by default.
6
7
 
7
- - Enables easy development of AI functions
8
+ ## Features
8
9
 
9
- ```javascript
10
- import { AI } from 'ai-functions'
10
+ - 🚀 Template literal API for natural AI prompts
11
+ - 🔄 Async iterator support for streaming responses
12
+ - 📝 Structured output generation with Zod schemas
13
+ - 🎯 Type-safe API with full TypeScript support
14
+ - ⚡️ Built on `ai` SDK for streaming & object generation
15
+ - 🔍 Support for various output formats (objects, arrays, enums)
11
16
 
12
- const { ai, gpt, list } = AI({ apiKey: OPENAI_API_KEY })
17
+ ## Installation
18
+
19
+ ```bash
20
+ pnpm add ai-functions
13
21
  ```
14
22
 
15
- Then you can use magic `ai` functions:
23
+ ## Usage
24
+
25
+ ### Basic Template Literals
26
+
27
+ ```typescript
28
+ import { ai, list } from 'ai-functions'
29
+
30
+ // Simple text generation
31
+ const text = ai`write a blog post in markdown starting with '# ${title}'`
32
+
33
+ // Complex objects/arrays dumped to YAML
34
+ const summary = ai`Summarize the itinerary: ${itinerary}`
35
+
36
+ // Basic list generation
37
+ const things = await list`fun things to do in Miami`
38
+ console.log(things)
39
+
40
+ // Using async iterator
41
+ for await (const thing of list`fun things to do in Miami`) {
42
+ console.log(thing)
43
+ }
16
44
 
17
- ```javascript
45
+ // Structured output
18
46
  const categorizeProduct = ai.categorizeProduct({
19
47
  productType: 'App | API | Marketplace | Platform | Packaged Service | Professional Service | Website',
20
48
  customer: 'ideal customer profile in 3-5 words',
@@ -25,26 +53,37 @@ const categorizeProduct = ai.categorizeProduct({
25
53
  const product = await categorizeProduct({ domain: name })
26
54
  ```
27
55
 
28
- you can also use `list` tagged template as a convienence function:
56
+ ### Configuration
29
57
 
30
- ```javascript
31
- const things = await list`fun things to do in Miami`
32
- console.log(things)
58
+ #### Specifying the model
59
+
60
+ By default `ai-functions` uses the `openai` provider from the `ai` SDK. You can specify any openai model name as a string.
61
+
62
+ ```typescript
63
+ const text = ai`write a blog post in markdown starting with "# ${title}"`({ model: 'gpt-4o' })
33
64
  ```
34
65
 
35
- or with Async iterators:
66
+ Or you can pass in any other provider compatible with the `ai` SDK.
36
67
 
37
- ```javascript
38
- for await (const thing of list`fun things to do in Miami`) {
39
- console.log(thing)
40
- }
68
+ ```typescript
69
+ import { anthropic } from '@ai-sdk/anthropic'
70
+
71
+ const text = ai`write a function in TypeScript called ${name}`({ model: anthropic('claude-3-5-sonnet-20241022') })
72
+ ```
73
+
74
+ #### Specifying other options
75
+
76
+ You can pass in any other options supported by the `ai` SDK, like `system`, `temperature`, `maxTokens`, etc.
77
+
78
+ ```typescript
79
+ const things = await list`fun things to do in ${city}`({ system: 'You are an expert tour guide', temperature: 0.2 })
41
80
  ```
42
81
 
43
- Or in a more complex example:
82
+ ### Composable Functions & Workflows
44
83
 
45
- ```javascript
84
+ ```typescript
46
85
  const listBlogPosts = (count, topic) => list`${count} blog post titles about ${topic}`
47
- const writeBlogPost = (title) => gpt`write a blog post in markdown starting with "# ${title}"`
86
+ const writeBlogPost = (title) => ai`write a blog post in markdown starting with '# ${title}'`
48
87
 
49
88
  async function* writeBlog(count, topic) {
50
89
  for await (const title of listBlogPosts(count, topic)) {
@@ -57,3 +96,55 @@ for await (const post of writeBlog(25, 'future of car sales')) {
57
96
  console.log({ post })
58
97
  }
59
98
  ```
99
+
100
+ ### Concurrency
101
+
102
+ you can specify the `concurrency` option to limit the number of concurrent requests.
103
+
104
+ ```typescript
105
+ activities.map(async (activity) => {
106
+ const result = await ai`write a paragraph overview of ${activity}`({ concurrency: 5 })
107
+ })
108
+ ```
109
+
110
+ ## Development
111
+
112
+ ```bash
113
+ # Install dependencies
114
+ pnpm install
115
+
116
+ # Run tests
117
+ pnpm test
118
+
119
+ # Run tests in watch mode
120
+ pnpm test:watch
121
+
122
+ # Build the package
123
+ pnpm build
124
+
125
+ # Lint the code
126
+ pnpm lint
127
+
128
+ # Format the code
129
+ pnpm format
130
+ ```
131
+
132
+ ## Contributing
133
+
134
+ Please read our [Contributing Guide](./CONTRIBUTING.md) to learn about our development process and how to propose bugfixes and improvements.
135
+
136
+ ## License
137
+
138
+ MIT © [Drivly](https://driv.ly)
139
+
140
+ ## Dependencies
141
+
142
+ This package uses the following key dependencies:
143
+
144
+ - `ai` SDK for AI model integration
145
+ - Defaults to `@ai-sdk/openai` provider
146
+ - TypeScript for static typing
147
+ - Zod for schema validation
148
+ - Vitest for testing
149
+ - ESLint for linting
150
+ - Prettier for code formatting
package/bin/cli.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { cli } from '../dist/cli/index.js'
4
+
5
+ cli()
@@ -0,0 +1,10 @@
1
+ interface CliOptions {
2
+ version?: boolean;
3
+ help?: boolean;
4
+ }
5
+ export declare function parseArgs(args: string[]): CliOptions;
6
+ export declare function showHelp(): void;
7
+ export declare function showVersion(): void;
8
+ export declare function cli(args?: string[]): void;
9
+ export {};
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAYpD;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAQ/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,IAAI,CAUhE"}
@@ -0,0 +1,38 @@
1
+ import { version } from '../../package.json';
2
+ export function parseArgs(args) {
3
+ const options = {};
4
+ for (const arg of args) {
5
+ if (arg === '-v' || arg === '--version') {
6
+ options.version = true;
7
+ }
8
+ else if (arg === '-h' || arg === '--help') {
9
+ options.help = true;
10
+ }
11
+ }
12
+ return options;
13
+ }
14
+ export function showHelp() {
15
+ console.log(`
16
+ Usage: ai-functions [options]
17
+
18
+ Options:
19
+ -v, --version Show version number
20
+ -h, --help Show help
21
+ `);
22
+ }
23
+ export function showVersion() {
24
+ console.log(`v${version}`);
25
+ }
26
+ export function cli(args = process.argv.slice(2)) {
27
+ const options = parseArgs(args);
28
+ if (options.version) {
29
+ showVersion();
30
+ }
31
+ else if (options.help) {
32
+ showHelp();
33
+ }
34
+ else {
35
+ showHelp();
36
+ }
37
+ }
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAO5C,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,OAAO,GAAe,EAAE,CAAA;IAE9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QACrB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;CAMb,CAAC,CAAA;AACF,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAE/B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,WAAW,EAAE,CAAA;IACf,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,QAAQ,EAAE,CAAA;IACZ,CAAC;SAAM,CAAC;QACN,QAAQ,EAAE,CAAA;IACZ,CAAC;AACH,CAAC"}
@@ -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/cli/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { parseArgs, showHelp, showVersion, cli } from './index';
3
+ describe('CLI', () => {
4
+ it('should parse version flag correctly', () => {
5
+ const options = parseArgs(['-v']);
6
+ expect(options.version).toBe(true);
7
+ const longOptions = parseArgs(['--version']);
8
+ expect(longOptions.version).toBe(true);
9
+ });
10
+ it('should parse help flag correctly', () => {
11
+ const options = parseArgs(['-h']);
12
+ expect(options.help).toBe(true);
13
+ const longOptions = parseArgs(['--help']);
14
+ expect(longOptions.help).toBe(true);
15
+ });
16
+ it('should show version number', () => {
17
+ const consoleSpy = vi.spyOn(console, 'log');
18
+ showVersion();
19
+ expect(consoleSpy).toHaveBeenCalled();
20
+ consoleSpy.mockRestore();
21
+ });
22
+ it('should show help message', () => {
23
+ const consoleSpy = vi.spyOn(console, 'log');
24
+ showHelp();
25
+ expect(consoleSpy).toHaveBeenCalled();
26
+ consoleSpy.mockRestore();
27
+ });
28
+ it('should default to help when no arguments provided', () => {
29
+ const consoleSpy = vi.spyOn(console, 'log');
30
+ cli([]);
31
+ expect(consoleSpy).toHaveBeenCalled();
32
+ consoleSpy.mockRestore();
33
+ });
34
+ });
35
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/cli/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAE/D,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/B,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC3C,WAAW,EAAE,CAAA;QACb,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACrC,UAAU,CAAC,WAAW,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC3C,QAAQ,EAAE,CAAA;QACV,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACrC,UAAU,CAAC,WAAW,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC3C,GAAG,CAAC,EAAE,CAAC,CAAA;QACP,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACrC,UAAU,CAAC,WAAW,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ export declare const MODEL_BEST = "gpt-4o";
2
+ export declare const MODEL_FAST = "gpt-4o-mini";
3
+ export declare const DEFAULT_MODEL = "gpt-4o";
4
+ export declare const FALLBACK_MODEL = "gpt-4o-mini";
5
+ export declare const MODELS: {
6
+ readonly BEST: "gpt-4o";
7
+ readonly FAST: "gpt-4o-mini";
8
+ };
9
+ export type ModelType = typeof MODELS[keyof typeof MODELS];
10
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/constants/models.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,WAAW,CAAA;AAClC,eAAO,MAAM,UAAU,gBAAgB,CAAA;AAGvC,eAAO,MAAM,aAAa,WAAa,CAAA;AACvC,eAAO,MAAM,cAAc,gBAAa,CAAA;AAGxC,eAAO,MAAM,MAAM;;;CAGT,CAAA;AAGV,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ // Model identifiers
2
+ export const MODEL_BEST = 'gpt-4o';
3
+ export const MODEL_FAST = 'gpt-4o-mini';
4
+ // Default model configuration
5
+ export const DEFAULT_MODEL = MODEL_BEST;
6
+ export const FALLBACK_MODEL = MODEL_FAST;
7
+ // Model constants for external use
8
+ export const MODELS = {
9
+ BEST: MODEL_BEST,
10
+ FAST: MODEL_FAST
11
+ };
12
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/constants/models.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAA;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AAEvC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAA;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAA;AAExC,mCAAmC;AACnC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACR,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './model';
2
+ export * from './schema';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/converters/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './model';
2
+ export * from './schema';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/converters/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Model } from '../types';
2
+ export declare function getOpenAIClient(): import("@ai-sdk/openai").OpenAIProvider;
3
+ export declare function convertToOpenAIModel(model: Model): any;
4
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/converters/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAKhC,wBAAgB,eAAe,4CAO9B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,OAMhD"}
@@ -0,0 +1,19 @@
1
+ import { createOpenAI } from '@ai-sdk/openai';
2
+ // Create a singleton OpenAI client
3
+ let clientInstance;
4
+ export function getOpenAIClient() {
5
+ if (!clientInstance) {
6
+ clientInstance = createOpenAI({
7
+ baseURL: process.env.AI_GATEWAY,
8
+ });
9
+ }
10
+ return clientInstance;
11
+ }
12
+ export function convertToOpenAIModel(model) {
13
+ if (typeof model === 'string') {
14
+ const client = getOpenAIClient();
15
+ return client(model);
16
+ }
17
+ return model;
18
+ }
19
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/converters/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,mCAAmC;AACnC,IAAI,cAA+C,CAAA;AAEnD,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,YAAY,CAAC;YAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;SAChC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAY;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;QAChC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { SimpleSchema } from '../types';
3
+ export declare function convertToZodSchema(schema: SimpleSchema): z.ZodObject<any>;
4
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/converters/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAqB,MAAM,UAAU,CAAA;AAiB1D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAQzE"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ function convertValue(value) {
3
+ if (Array.isArray(value)) {
4
+ return z.array(z.string().describe(value[0] || ''));
5
+ }
6
+ else if (typeof value === 'string') {
7
+ if (value.includes('|')) {
8
+ const enumValues = value.split('|').map(v => v.trim());
9
+ return z.enum(enumValues);
10
+ }
11
+ return z.string().describe(value);
12
+ }
13
+ else if (typeof value === 'object') {
14
+ return convertToZodSchema(value);
15
+ }
16
+ return z.string();
17
+ }
18
+ export function convertToZodSchema(schema) {
19
+ const zodSchema = {};
20
+ for (const [key, value] of Object.entries(schema)) {
21
+ zodSchema[key] = convertValue(value);
22
+ }
23
+ return z.object(zodSchema);
24
+ }
25
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/converters/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,SAAS,YAAY,CAAC,KAAwB;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACtD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAmC,CAAC,CAAA;QACpD,CAAC;QACD,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,SAAS,GAAiC,EAAE,CAAA;IAElD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GenerateTextResult, StreamingResult } from 'ai';
2
+ export declare function createJsonResponse(result: GenerateTextResult): Response;
3
+ export declare function createStreamResponse(result: StreamingResult): Response;
4
+ export declare function createTextResponse(result: GenerateTextResult): Response;
5
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/core/responses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAyB,eAAe,EAAE,MAAM,IAAI,CAAA;AAEpF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,QAAQ,CAIvE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAItE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,QAAQ,CAIvE"}
@@ -0,0 +1,16 @@
1
+ export function createJsonResponse(result) {
2
+ return new Response(JSON.stringify(result), {
3
+ headers: { 'Content-Type': 'application/json' }
4
+ });
5
+ }
6
+ export function createStreamResponse(result) {
7
+ return new Response(result.experimental_stream, {
8
+ headers: { 'Content-Type': 'text/event-stream' }
9
+ });
10
+ }
11
+ export function createTextResponse(result) {
12
+ return new Response(result.text, {
13
+ headers: { 'Content-Type': 'text/plain' },
14
+ });
15
+ }
16
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/core/responses.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QAC1C,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,mBAAgD,EAAE;QAC3E,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE;KACjD,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;KAC1C,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=responses.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.test.d.ts","sourceRoot":"","sources":["../../src/core/responses.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { createJsonResponse, createStreamResponse, createTextResponse } from './responses';
3
+ describe('Response Creation', () => {
4
+ it('should create JSON response', () => {
5
+ const mockResult = {
6
+ text: 'test content',
7
+ response: { id: 'test', model: 'test-model', created: 123 }
8
+ };
9
+ const response = createJsonResponse(mockResult);
10
+ expect(response).toBeInstanceOf(Response);
11
+ expect(response.headers.get('Content-Type')).toBe('application/json');
12
+ });
13
+ it('should create stream response', () => {
14
+ const mockResult = {
15
+ experimental_stream: new ReadableStream()
16
+ };
17
+ const response = createStreamResponse(mockResult);
18
+ expect(response).toBeInstanceOf(Response);
19
+ expect(response.headers.get('Content-Type')).toBe('text/event-stream');
20
+ });
21
+ it('should create text response', () => {
22
+ const mockResult = {
23
+ text: 'test content',
24
+ response: { id: 'test', model: 'test-model', created: 123 }
25
+ };
26
+ const response = createTextResponse(mockResult);
27
+ expect(response).toBeInstanceOf(Response);
28
+ expect(response.headers.get('Content-Type')).toBe('text/plain');
29
+ });
30
+ });
31
+ //# sourceMappingURL=responses.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.test.js","sourceRoot":"","sources":["../../src/core/responses.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAG1F,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE;SACtC,CAAA;QAEvB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,UAAU,GAAG;YACjB,mBAAmB,EAAE,IAAI,cAAc,EAAE;SACvB,CAAA;QAEpB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;QACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE;SACtC,CAAA;QAEvB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export declare class AIRequestError extends Error {
2
+ cause?: unknown | undefined;
3
+ retryable: boolean;
4
+ constructor(message: string, cause?: unknown | undefined, retryable?: boolean);
5
+ }
6
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;IAG9B,KAAK,CAAC,EAAE,OAAO;IACf,SAAS;gBAFhB,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,OAAO,YAAA,EACf,SAAS,UAAO;CAK1B"}
package/dist/errors.js ADDED
@@ -0,0 +1,9 @@
1
+ export class AIRequestError extends Error {
2
+ constructor(message, cause, retryable = true) {
3
+ super(message);
4
+ this.cause = cause;
5
+ this.retryable = retryable;
6
+ this.name = 'AIRequestError';
7
+ }
8
+ }
9
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YACE,OAAe,EACR,KAAe,EACf,YAAY,IAAI;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAA;QAHP,UAAK,GAAL,KAAK,CAAU;QACf,cAAS,GAAT,SAAS,CAAO;QAGvB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=streaming.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.test.d.ts","sourceRoot":"","sources":["../../src/examples/streaming.test.ts"],"names":[],"mappings":""}