ai-functions 0.2.19 → 0.4.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 (227) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/.turbo/turbo-test.log +105 -0
  3. package/README.md +232 -37
  4. package/TODO.md +138 -0
  5. package/dist/ai-promise.d.ts +219 -0
  6. package/dist/ai-promise.d.ts.map +1 -0
  7. package/dist/ai-promise.js +610 -0
  8. package/dist/ai-promise.js.map +1 -0
  9. package/dist/ai.d.ts +285 -0
  10. package/dist/ai.d.ts.map +1 -0
  11. package/dist/ai.js +842 -0
  12. package/dist/ai.js.map +1 -0
  13. package/dist/batch/anthropic.d.ts +23 -0
  14. package/dist/batch/anthropic.d.ts.map +1 -0
  15. package/dist/batch/anthropic.js +257 -0
  16. package/dist/batch/anthropic.js.map +1 -0
  17. package/dist/batch/bedrock.d.ts +64 -0
  18. package/dist/batch/bedrock.d.ts.map +1 -0
  19. package/dist/batch/bedrock.js +586 -0
  20. package/dist/batch/bedrock.js.map +1 -0
  21. package/dist/batch/cloudflare.d.ts +37 -0
  22. package/dist/batch/cloudflare.d.ts.map +1 -0
  23. package/dist/batch/cloudflare.js +289 -0
  24. package/dist/batch/cloudflare.js.map +1 -0
  25. package/dist/batch/google.d.ts +41 -0
  26. package/dist/batch/google.d.ts.map +1 -0
  27. package/dist/batch/google.js +360 -0
  28. package/dist/batch/google.js.map +1 -0
  29. package/dist/batch/index.d.ts +31 -0
  30. package/dist/batch/index.d.ts.map +1 -0
  31. package/dist/batch/index.js +31 -0
  32. package/dist/batch/index.js.map +1 -0
  33. package/dist/batch/memory.d.ts +44 -0
  34. package/dist/batch/memory.d.ts.map +1 -0
  35. package/dist/batch/memory.js +188 -0
  36. package/dist/batch/memory.js.map +1 -0
  37. package/dist/batch/openai.d.ts +37 -0
  38. package/dist/batch/openai.d.ts.map +1 -0
  39. package/dist/batch/openai.js +403 -0
  40. package/dist/batch/openai.js.map +1 -0
  41. package/dist/batch-map.d.ts +125 -0
  42. package/dist/batch-map.d.ts.map +1 -0
  43. package/dist/batch-map.js +406 -0
  44. package/dist/batch-map.js.map +1 -0
  45. package/dist/batch-queue.d.ts +273 -0
  46. package/dist/batch-queue.d.ts.map +1 -0
  47. package/dist/batch-queue.js +271 -0
  48. package/dist/batch-queue.js.map +1 -0
  49. package/dist/context.d.ts +133 -0
  50. package/dist/context.d.ts.map +1 -0
  51. package/dist/context.js +267 -0
  52. package/dist/context.js.map +1 -0
  53. package/dist/embeddings.d.ts +123 -0
  54. package/dist/embeddings.d.ts.map +1 -0
  55. package/dist/embeddings.js +170 -0
  56. package/dist/embeddings.js.map +1 -0
  57. package/dist/eval/index.d.ts +8 -0
  58. package/dist/eval/index.d.ts.map +1 -0
  59. package/dist/eval/index.js +8 -0
  60. package/dist/eval/index.js.map +1 -0
  61. package/dist/eval/models.d.ts +66 -0
  62. package/dist/eval/models.d.ts.map +1 -0
  63. package/dist/eval/models.js +120 -0
  64. package/dist/eval/models.js.map +1 -0
  65. package/dist/eval/runner.d.ts +64 -0
  66. package/dist/eval/runner.d.ts.map +1 -0
  67. package/dist/eval/runner.js +148 -0
  68. package/dist/eval/runner.js.map +1 -0
  69. package/dist/generate.d.ts +168 -0
  70. package/dist/generate.d.ts.map +1 -0
  71. package/dist/generate.js +174 -0
  72. package/dist/generate.js.map +1 -0
  73. package/dist/index.d.ts +30 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +54 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/primitives.d.ts +292 -0
  78. package/dist/primitives.d.ts.map +1 -0
  79. package/dist/primitives.js +471 -0
  80. package/dist/primitives.js.map +1 -0
  81. package/dist/providers/cloudflare.d.ts +9 -0
  82. package/dist/providers/cloudflare.d.ts.map +1 -0
  83. package/dist/providers/cloudflare.js +9 -0
  84. package/dist/providers/cloudflare.js.map +1 -0
  85. package/dist/providers/index.d.ts +9 -0
  86. package/dist/providers/index.d.ts.map +1 -0
  87. package/dist/providers/index.js +9 -0
  88. package/dist/providers/index.js.map +1 -0
  89. package/dist/schema.d.ts +54 -0
  90. package/dist/schema.d.ts.map +1 -0
  91. package/dist/schema.js +109 -0
  92. package/dist/schema.js.map +1 -0
  93. package/dist/template.d.ts +73 -0
  94. package/dist/template.d.ts.map +1 -0
  95. package/dist/template.js +129 -0
  96. package/dist/template.js.map +1 -0
  97. package/dist/types.d.ts +481 -0
  98. package/dist/types.d.ts.map +1 -0
  99. package/dist/types.js +5 -0
  100. package/dist/types.js.map +1 -0
  101. package/evalite.config.ts +19 -0
  102. package/evals/README.md +212 -0
  103. package/evals/classification.eval.ts +108 -0
  104. package/evals/marketing.eval.ts +370 -0
  105. package/evals/math.eval.ts +94 -0
  106. package/evals/run-evals.ts +166 -0
  107. package/evals/structured-output.eval.ts +143 -0
  108. package/evals/writing.eval.ts +117 -0
  109. package/examples/batch-blog-posts.ts +160 -0
  110. package/package.json +59 -43
  111. package/src/ai-promise.ts +784 -0
  112. package/src/ai.ts +1183 -0
  113. package/src/batch/anthropic.ts +375 -0
  114. package/src/batch/bedrock.ts +801 -0
  115. package/src/batch/cloudflare.ts +421 -0
  116. package/src/batch/google.ts +491 -0
  117. package/src/batch/index.ts +31 -0
  118. package/src/batch/memory.ts +253 -0
  119. package/src/batch/openai.ts +557 -0
  120. package/src/batch-map.ts +534 -0
  121. package/src/batch-queue.ts +493 -0
  122. package/src/context.ts +332 -0
  123. package/src/embeddings.ts +244 -0
  124. package/src/eval/index.ts +8 -0
  125. package/src/eval/models.ts +158 -0
  126. package/src/eval/runner.ts +217 -0
  127. package/src/generate.ts +245 -0
  128. package/src/index.ts +154 -0
  129. package/src/primitives.ts +612 -0
  130. package/src/providers/cloudflare.ts +15 -0
  131. package/src/providers/index.ts +14 -0
  132. package/src/schema.ts +147 -0
  133. package/src/template.ts +209 -0
  134. package/src/types.ts +540 -0
  135. package/test/README.md +105 -0
  136. package/test/ai-proxy.test.ts +192 -0
  137. package/test/async-iterators.test.ts +327 -0
  138. package/test/batch-background.test.ts +482 -0
  139. package/test/batch-blog-posts.test.ts +387 -0
  140. package/test/blog-generation.test.ts +510 -0
  141. package/test/browse-read.test.ts +611 -0
  142. package/test/core-functions.test.ts +694 -0
  143. package/test/decide.test.ts +393 -0
  144. package/test/define.test.ts +274 -0
  145. package/test/e2e-bedrock-manual.ts +163 -0
  146. package/test/e2e-bedrock.test.ts +191 -0
  147. package/test/e2e-flex-gateway.ts +157 -0
  148. package/test/e2e-flex-manual.ts +183 -0
  149. package/test/e2e-flex.test.ts +209 -0
  150. package/test/e2e-google-manual.ts +178 -0
  151. package/test/e2e-google.test.ts +216 -0
  152. package/test/embeddings.test.ts +284 -0
  153. package/test/evals/define-function.eval.test.ts +379 -0
  154. package/test/evals/primitives.eval.test.ts +384 -0
  155. package/test/function-types.test.ts +492 -0
  156. package/test/generate-core.test.ts +319 -0
  157. package/test/generate.test.ts +163 -0
  158. package/test/implicit-batch.test.ts +422 -0
  159. package/test/schema.test.ts +109 -0
  160. package/test/tagged-templates.test.ts +302 -0
  161. package/tsconfig.json +8 -6
  162. package/vitest.config.ts +42 -0
  163. package/LICENSE +0 -21
  164. package/db/cache.ts +0 -6
  165. package/db/mongo.ts +0 -75
  166. package/dist/mjs/db/cache.d.ts +0 -1
  167. package/dist/mjs/db/cache.js +0 -5
  168. package/dist/mjs/db/mongo.d.ts +0 -31
  169. package/dist/mjs/db/mongo.js +0 -48
  170. package/dist/mjs/examples/data.d.ts +0 -1105
  171. package/dist/mjs/examples/data.js +0 -1105
  172. package/dist/mjs/functions/ai.d.ts +0 -20
  173. package/dist/mjs/functions/ai.js +0 -83
  174. package/dist/mjs/functions/ai.test.d.ts +0 -1
  175. package/dist/mjs/functions/ai.test.js +0 -29
  176. package/dist/mjs/functions/gpt.d.ts +0 -4
  177. package/dist/mjs/functions/gpt.js +0 -10
  178. package/dist/mjs/functions/list.d.ts +0 -7
  179. package/dist/mjs/functions/list.js +0 -72
  180. package/dist/mjs/index.d.ts +0 -3
  181. package/dist/mjs/index.js +0 -3
  182. package/dist/mjs/queue/kafka.d.ts +0 -0
  183. package/dist/mjs/queue/kafka.js +0 -1
  184. package/dist/mjs/queue/memory.d.ts +0 -0
  185. package/dist/mjs/queue/memory.js +0 -1
  186. package/dist/mjs/queue/mongo.d.ts +0 -30
  187. package/dist/mjs/queue/mongo.js +0 -42
  188. package/dist/mjs/streams/kafka.d.ts +0 -0
  189. package/dist/mjs/streams/kafka.js +0 -1
  190. package/dist/mjs/streams/memory.d.ts +0 -0
  191. package/dist/mjs/streams/memory.js +0 -1
  192. package/dist/mjs/streams/mongo.d.ts +0 -0
  193. package/dist/mjs/streams/mongo.js +0 -1
  194. package/dist/mjs/streams/types.d.ts +0 -0
  195. package/dist/mjs/streams/types.js +0 -1
  196. package/dist/mjs/types.d.ts +0 -11
  197. package/dist/mjs/types.js +0 -1
  198. package/dist/mjs/utils/completion.d.ts +0 -9
  199. package/dist/mjs/utils/completion.js +0 -20
  200. package/dist/mjs/utils/schema.d.ts +0 -10
  201. package/dist/mjs/utils/schema.js +0 -72
  202. package/dist/mjs/utils/schema.test.d.ts +0 -1
  203. package/dist/mjs/utils/schema.test.js +0 -60
  204. package/dist/mjs/utils/state.d.ts +0 -1
  205. package/dist/mjs/utils/state.js +0 -19
  206. package/examples/data.ts +0 -1105
  207. package/fixup +0 -11
  208. package/functions/ai.test.ts +0 -41
  209. package/functions/ai.ts +0 -115
  210. package/functions/gpt.ts +0 -12
  211. package/functions/list.ts +0 -84
  212. package/index.ts +0 -3
  213. package/queue/kafka.ts +0 -0
  214. package/queue/memory.ts +0 -0
  215. package/queue/mongo.ts +0 -88
  216. package/streams/kafka.ts +0 -0
  217. package/streams/memory.ts +0 -0
  218. package/streams/mongo.ts +0 -0
  219. package/streams/types.ts +0 -0
  220. package/tsconfig-backup.json +0 -105
  221. package/tsconfig-base.json +0 -26
  222. package/tsconfig-cjs.json +0 -8
  223. package/types.ts +0 -12
  224. package/utils/completion.ts +0 -28
  225. package/utils/schema.test.ts +0 -69
  226. package/utils/schema.ts +0 -74
  227. package/utils/state.ts +0 -23
@@ -0,0 +1,471 @@
1
+ /**
2
+ * AI Function Primitives with Promise Pipelining
3
+ *
4
+ * All functions return AIPromise for:
5
+ * - Dynamic schema inference from destructuring
6
+ * - Promise pipelining without await
7
+ * - Magical .map() for batch processing
8
+ * - Dependency graph resolution
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // No await needed until the end!
13
+ * const { summary, keyPoints, conclusion } = ai`write about ${topic}`
14
+ * const isValid = is`${conclusion} is solid given ${keyPoints}`
15
+ * const improved = ai`improve ${conclusion} using ${keyPoints}`
16
+ *
17
+ * // Batch processing with map
18
+ * const ideas = list`startup ideas`
19
+ * const evaluated = await ideas.map(idea => ({
20
+ * idea,
21
+ * viable: is`${idea} is viable`,
22
+ * market: ai`market size for ${idea}`,
23
+ * }))
24
+ *
25
+ * // Only await at the end
26
+ * if (await isValid) {
27
+ * console.log(await improved)
28
+ * }
29
+ * ```
30
+ *
31
+ * @packageDocumentation
32
+ */
33
+ import { AIPromise, createAITemplateFunction, parseTemplateWithDependencies, isAIPromise, } from './ai-promise.js';
34
+ import { generateObject, generateText } from './generate.js';
35
+ // ============================================================================
36
+ // Core generate() primitive
37
+ // ============================================================================
38
+ /**
39
+ * Core generate primitive - all other functions use this under the hood
40
+ */
41
+ export async function generate(type, prompt, options) {
42
+ const { model = 'sonnet', schema, language, format, slides: slideCount, ...rest } = options || {};
43
+ switch (type) {
44
+ case 'text':
45
+ case 'markdown':
46
+ return generateTextContent(prompt, model, rest);
47
+ case 'json':
48
+ return generateJsonContent(prompt, model, schema, rest);
49
+ case 'code':
50
+ return generateCodeContent(prompt, model, language || 'typescript', rest);
51
+ case 'list':
52
+ return generateListContent(prompt, model, rest);
53
+ case 'lists':
54
+ return generateListsContent(prompt, model, rest);
55
+ case 'boolean':
56
+ return generateBooleanContent(prompt, model, rest);
57
+ case 'summary':
58
+ return generateSummaryContent(prompt, model, rest);
59
+ case 'extract':
60
+ return generateExtractContent(prompt, model, schema, rest);
61
+ case 'yaml':
62
+ return generateYamlContent(prompt, model, rest);
63
+ case 'diagram':
64
+ return generateDiagramContent(prompt, model, format || 'mermaid', rest);
65
+ case 'slides':
66
+ return generateSlidesContent(prompt, model, slideCount || 10, rest);
67
+ default:
68
+ throw new Error(`Unknown generate type: ${type}`);
69
+ }
70
+ }
71
+ // Helper functions
72
+ async function generateTextContent(prompt, model, options) {
73
+ const result = await generateText({ model, prompt, system: options.system, temperature: options.temperature, maxTokens: options.maxTokens });
74
+ return result.text;
75
+ }
76
+ async function generateJsonContent(prompt, model, schema, options) {
77
+ const effectiveSchema = schema || { result: 'The generated result' };
78
+ const result = await generateObject({ model, schema: effectiveSchema, prompt, system: options.system, temperature: options.temperature, maxTokens: options.maxTokens });
79
+ return result.object;
80
+ }
81
+ async function generateCodeContent(prompt, model, language, options) {
82
+ const result = await generateObject({
83
+ model,
84
+ schema: { code: `The ${language} implementation code` },
85
+ prompt: `Generate ${language} code for: ${prompt}`,
86
+ system: `You are an expert ${language} developer. Generate clean, well-documented code.`,
87
+ temperature: options.temperature,
88
+ maxTokens: options.maxTokens,
89
+ });
90
+ return result.object.code;
91
+ }
92
+ async function generateListContent(prompt, model, options) {
93
+ const result = await generateObject({
94
+ model,
95
+ schema: { items: ['List items'] },
96
+ prompt,
97
+ system: options.system || 'Generate a list of items based on the prompt.',
98
+ temperature: options.temperature,
99
+ maxTokens: options.maxTokens,
100
+ });
101
+ return result.object.items;
102
+ }
103
+ async function generateListsContent(prompt, model, options) {
104
+ const result = await generateObject({
105
+ model,
106
+ schema: {
107
+ categories: ['Category names as strings'],
108
+ data: 'JSON string containing the categorized lists',
109
+ },
110
+ prompt: `Generate categorized lists for: ${prompt}\n\nFirst identify appropriate category names, then provide the lists as a JSON object.`,
111
+ system: options.system || 'Generate multiple categorized lists. Determine appropriate categories based on the prompt.',
112
+ temperature: options.temperature,
113
+ maxTokens: options.maxTokens,
114
+ });
115
+ const obj = result.object;
116
+ try {
117
+ return JSON.parse(obj.data);
118
+ }
119
+ catch {
120
+ const lists = {};
121
+ for (const cat of obj.categories || []) {
122
+ lists[cat] = [];
123
+ }
124
+ return lists;
125
+ }
126
+ }
127
+ async function generateBooleanContent(prompt, model, options) {
128
+ const result = await generateObject({
129
+ model,
130
+ schema: { answer: 'true | false' },
131
+ prompt,
132
+ system: options.system || 'Answer the question with true or false.',
133
+ temperature: options.temperature ?? 0,
134
+ maxTokens: options.maxTokens,
135
+ });
136
+ return result.object.answer === 'true';
137
+ }
138
+ async function generateSummaryContent(prompt, model, options) {
139
+ const result = await generateObject({
140
+ model,
141
+ schema: { summary: 'A concise summary of the content' },
142
+ prompt: `Summarize the following:\n\n${prompt}`,
143
+ system: options.system || 'Create a clear, concise summary.',
144
+ temperature: options.temperature,
145
+ maxTokens: options.maxTokens,
146
+ });
147
+ return result.object.summary;
148
+ }
149
+ async function generateExtractContent(prompt, model, schema, options) {
150
+ const effectiveSchema = schema || { items: ['Extracted items'] };
151
+ const result = await generateObject({
152
+ model,
153
+ schema: effectiveSchema,
154
+ prompt: `Extract from the following:\n\n${prompt}`,
155
+ system: options.system || 'Extract the requested information.',
156
+ temperature: options.temperature,
157
+ maxTokens: options.maxTokens,
158
+ });
159
+ const obj = result.object;
160
+ if ('items' in obj && Array.isArray(obj.items)) {
161
+ return obj.items;
162
+ }
163
+ return Object.values(obj).flat();
164
+ }
165
+ async function generateYamlContent(prompt, model, options) {
166
+ const result = await generateObject({
167
+ model,
168
+ schema: { yaml: 'The YAML content' },
169
+ prompt: `Generate YAML for: ${prompt}`,
170
+ system: options.system || 'Generate valid YAML content.',
171
+ temperature: options.temperature,
172
+ maxTokens: options.maxTokens,
173
+ });
174
+ return result.object.yaml;
175
+ }
176
+ async function generateDiagramContent(prompt, model, format, options) {
177
+ const result = await generateObject({
178
+ model,
179
+ schema: { diagram: `The ${format} diagram code` },
180
+ prompt: `Generate a ${format} diagram for: ${prompt}`,
181
+ system: options.system || `Generate ${format} diagram syntax.`,
182
+ temperature: options.temperature,
183
+ maxTokens: options.maxTokens,
184
+ });
185
+ return result.object.diagram;
186
+ }
187
+ async function generateSlidesContent(prompt, model, slideCount, options) {
188
+ const result = await generateObject({
189
+ model,
190
+ schema: { slides: `Slidev/Marp markdown with ${slideCount} slides` },
191
+ prompt: `Generate a ${slideCount}-slide presentation about: ${prompt}`,
192
+ system: options.system || 'Generate markdown slides in Slidev/Marp format.',
193
+ temperature: options.temperature,
194
+ maxTokens: options.maxTokens,
195
+ });
196
+ return result.object.slides;
197
+ }
198
+ // ============================================================================
199
+ // AIPromise-based Functions
200
+ // ============================================================================
201
+ /**
202
+ * General-purpose AI function with dynamic schema inference
203
+ *
204
+ * @example
205
+ * ```ts
206
+ * // Simple text generation
207
+ * const text = await ai`write a poem about ${topic}`
208
+ *
209
+ * // Dynamic schema from destructuring - no await needed!
210
+ * const { summary, keyPoints, conclusion } = ai`write about ${topic}`
211
+ * console.log(await summary)
212
+ *
213
+ * // Chain with other functions
214
+ * const isValid = is`${conclusion} is solid`
215
+ * const improved = ai`improve ${conclusion}`
216
+ * ```
217
+ */
218
+ export const ai = createAITemplateFunction('object');
219
+ /**
220
+ * Generate text content
221
+ *
222
+ * @example
223
+ * ```ts
224
+ * const post = await write`blog post about ${topic}`
225
+ * ```
226
+ */
227
+ export const write = createAITemplateFunction('text');
228
+ /**
229
+ * Generate code
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * const code = await code`email validation function`
234
+ * ```
235
+ */
236
+ export const code = createAITemplateFunction('text', {
237
+ system: 'You are an expert programmer. Generate clean, well-documented code.',
238
+ });
239
+ /**
240
+ * Generate a list of items with .map() support
241
+ *
242
+ * @example
243
+ * ```ts
244
+ * // Simple list
245
+ * const ideas = await list`startup ideas`
246
+ *
247
+ * // With map - batch processes in ONE call!
248
+ * const evaluated = await list`startup ideas`.map(idea => ({
249
+ * idea,
250
+ * viable: is`${idea} is viable`,
251
+ * market: ai`market size for ${idea}`,
252
+ * }))
253
+ *
254
+ * // Async iteration
255
+ * for await (const idea of list`startup ideas`) {
256
+ * console.log(idea)
257
+ * }
258
+ * ```
259
+ */
260
+ export const list = createAITemplateFunction('list');
261
+ /**
262
+ * Generate multiple named lists with dynamic schema
263
+ *
264
+ * @example
265
+ * ```ts
266
+ * // Destructuring infers the schema!
267
+ * const { pros, cons } = await lists`pros and cons of ${topic}`
268
+ *
269
+ * // No await - pipeline with other functions
270
+ * const { benefits, risks, costs } = lists`analysis of ${project}`
271
+ * const summary = ai`summarize: benefits=${benefits}, risks=${risks}`
272
+ * console.log(await summary)
273
+ * ```
274
+ */
275
+ export const lists = createAITemplateFunction('lists');
276
+ /**
277
+ * Extract structured data with dynamic schema
278
+ *
279
+ * @example
280
+ * ```ts
281
+ * // Dynamic schema from destructuring
282
+ * const { name, email, phone } = await extract`contact info from ${document}`
283
+ *
284
+ * // As array
285
+ * const emails = await extract`email addresses from ${text}`
286
+ * ```
287
+ */
288
+ export const extract = createAITemplateFunction('extract');
289
+ /**
290
+ * Summarize text
291
+ *
292
+ * @example
293
+ * ```ts
294
+ * const summary = await summarize`${longArticle}`
295
+ * ```
296
+ */
297
+ export const summarize = createAITemplateFunction('text', {
298
+ system: 'Create a clear, concise summary.',
299
+ });
300
+ /**
301
+ * Check if something is true/false
302
+ *
303
+ * @example
304
+ * ```ts
305
+ * // Simple check
306
+ * const isColor = await is`${topic} a color`
307
+ *
308
+ * // Pipeline - no await needed!
309
+ * const { conclusion } = ai`write about ${topic}`
310
+ * const isValid = is`${conclusion} is well-argued`
311
+ * if (await isValid) { ... }
312
+ * ```
313
+ */
314
+ export const is = createAITemplateFunction('boolean');
315
+ /**
316
+ * Generate a diagram
317
+ *
318
+ * @example
319
+ * ```ts
320
+ * const diagram = await diagram`user authentication flow`
321
+ * ```
322
+ */
323
+ export const diagram = createAITemplateFunction('text', {
324
+ system: 'Generate a Mermaid diagram.',
325
+ });
326
+ /**
327
+ * Generate presentation slides
328
+ *
329
+ * @example
330
+ * ```ts
331
+ * const slides = await slides`quarterly review`
332
+ * ```
333
+ */
334
+ export const slides = createAITemplateFunction('text', {
335
+ system: 'Generate markdown slides in Slidev/Marp format.',
336
+ });
337
+ /**
338
+ * Generate an image
339
+ */
340
+ export const image = createAITemplateFunction('text');
341
+ /**
342
+ * Generate a video
343
+ */
344
+ export const video = createAITemplateFunction('text');
345
+ // ============================================================================
346
+ // Agentic Functions
347
+ // ============================================================================
348
+ /**
349
+ * Execute a task
350
+ *
351
+ * @example
352
+ * ```ts
353
+ * const { summary, actions } = await do`send welcome email to ${user}`
354
+ * ```
355
+ */
356
+ function doImpl(promptOrStrings, ...args) {
357
+ let prompt;
358
+ let dependencies = [];
359
+ if (Array.isArray(promptOrStrings) && 'raw' in promptOrStrings) {
360
+ const parsed = parseTemplateWithDependencies(promptOrStrings, ...args);
361
+ prompt = parsed.prompt;
362
+ dependencies = parsed.dependencies;
363
+ }
364
+ else {
365
+ prompt = promptOrStrings;
366
+ }
367
+ const promise = new AIPromise(prompt, {
368
+ type: 'object',
369
+ baseSchema: {
370
+ summary: 'Summary of what was done',
371
+ actions: ['List of actions taken'],
372
+ },
373
+ system: 'You are a task executor. Describe what actions you would take.',
374
+ });
375
+ for (const dep of dependencies) {
376
+ promise.addDependency(dep.promise, dep.path);
377
+ }
378
+ return promise;
379
+ }
380
+ export { doImpl as do };
381
+ /**
382
+ * Conduct research on a topic
383
+ *
384
+ * @example
385
+ * ```ts
386
+ * const { summary, findings, sources } = await research`${competitor} vs our product`
387
+ * ```
388
+ */
389
+ export const research = createAITemplateFunction('object', {
390
+ system: 'You are a research analyst. Provide thorough research.',
391
+ });
392
+ // ============================================================================
393
+ // Web Functions
394
+ // ============================================================================
395
+ /**
396
+ * Read a URL and convert to markdown
397
+ */
398
+ export const read = createAITemplateFunction('text');
399
+ /**
400
+ * Browse a URL with browser automation
401
+ */
402
+ export async function browse(urlOrStrings, ...args) {
403
+ // Placeholder - actual implementation would use Stagehand or Playwright
404
+ return {
405
+ do: async () => { },
406
+ extract: async () => ({}),
407
+ screenshot: async () => Buffer.from('screenshot'),
408
+ close: async () => { },
409
+ };
410
+ }
411
+ // ============================================================================
412
+ // Decision Functions
413
+ // ============================================================================
414
+ /**
415
+ * LLM as judge - compare options and pick the best
416
+ *
417
+ * @example
418
+ * ```ts
419
+ * const winner = await decide`higher click-through rate`(headlineA, headlineB)
420
+ * ```
421
+ */
422
+ export function decide(criteriaOrStrings, ...templateArgs) {
423
+ let criteria;
424
+ if (Array.isArray(criteriaOrStrings) && 'raw' in criteriaOrStrings) {
425
+ criteria = criteriaOrStrings.reduce((acc, str, i) => acc + str + (templateArgs[i] ?? ''), '');
426
+ }
427
+ else {
428
+ criteria = criteriaOrStrings;
429
+ }
430
+ return (...options) => {
431
+ const optionDescriptions = options
432
+ .map((opt, i) => `Option ${i + 1}: ${JSON.stringify(opt)}`)
433
+ .join('\n');
434
+ const promise = new AIPromise(`Given these options:\n${optionDescriptions}\n\nChoose the best option based on: ${criteria}`, {
435
+ type: 'object',
436
+ baseSchema: {
437
+ chosenIndex: 'The index (1-based) of the best option as a number',
438
+ reasoning: 'Brief explanation of why this option is best',
439
+ },
440
+ });
441
+ // Override resolve to return the actual option
442
+ const originalResolve = promise.resolve.bind(promise);
443
+ promise.resolve = async () => {
444
+ const result = await originalResolve();
445
+ const index = typeof result.chosenIndex === 'string'
446
+ ? parseInt(result.chosenIndex, 10)
447
+ : result.chosenIndex;
448
+ return options[index - 1];
449
+ };
450
+ return promise;
451
+ };
452
+ }
453
+ /**
454
+ * Ask a human for input
455
+ */
456
+ export const ask = createAITemplateFunction('object', {
457
+ system: 'Generate content for human interaction.',
458
+ });
459
+ /**
460
+ * Request human approval
461
+ */
462
+ export const approve = createAITemplateFunction('object', {
463
+ system: 'Generate an approval request.',
464
+ });
465
+ /**
466
+ * Request human review
467
+ */
468
+ export const review = createAITemplateFunction('object', {
469
+ system: 'Generate a review request.',
470
+ });
471
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cloudflare Workers AI Provider
3
+ *
4
+ * Re-exports from ai-providers/cloudflare for backwards compatibility.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { cloudflare, cloudflareEmbedding, DEFAULT_CF_EMBEDDING_MODEL, type CloudflareConfig, type CloudflareEmbeddingModel } from 'ai-providers/cloudflare';
9
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cloudflare Workers AI Provider
3
+ *
4
+ * Re-exports from ai-providers/cloudflare for backwards compatibility.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { cloudflare, cloudflareEmbedding, DEFAULT_CF_EMBEDDING_MODEL } from 'ai-providers/cloudflare';
9
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/providers/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,0BAA0B,EAG3B,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * AI Providers
3
+ *
4
+ * Re-exports model providers from ai-providers package.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { cloudflare, cloudflareEmbedding, DEFAULT_CF_EMBEDDING_MODEL, type CloudflareConfig } from 'ai-providers/cloudflare';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * AI Providers
3
+ *
4
+ * Re-exports model providers from ai-providers package.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { cloudflare, cloudflareEmbedding, DEFAULT_CF_EMBEDDING_MODEL } from 'ai-providers/cloudflare';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,0BAA0B,EAE3B,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Simplified schema syntax for AI generation
3
+ *
4
+ * Converts human-readable schema definitions to Zod schemas:
5
+ * - 'description' → z.string().describe('description')
6
+ * - 'description (number)' → z.number().describe('description')
7
+ * - 'description (boolean)' → z.boolean().describe('description')
8
+ * - 'description (integer)' → z.number().int().describe('description')
9
+ * - 'description (date)' → z.string().datetime().describe('description')
10
+ * - 'opt1 | opt2 | opt3' → z.enum(['opt1', 'opt2', 'opt3'])
11
+ * - ['description'] → z.array(z.string()).describe('description')
12
+ * - { nested } → z.object() recursively
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ import { type ZodTypeAny } from 'zod';
17
+ /**
18
+ * Simplified schema types
19
+ */
20
+ export type SimpleSchema = string | [string] | [number] | [SimpleSchema] | {
21
+ [key: string]: SimpleSchema;
22
+ } | ZodTypeAny;
23
+ /**
24
+ * Convert a simplified schema to a Zod schema
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { schema } from 'ai-functions'
29
+ * import { z } from 'zod'
30
+ *
31
+ * // These are equivalent:
32
+ * const simple = schema({
33
+ * name: 'What is the recipe name?',
34
+ * ingredients: ['List all ingredients'],
35
+ * steps: ['List all cooking steps'],
36
+ * })
37
+ *
38
+ * const zod = z.object({
39
+ * name: z.string().describe('What is the recipe name?'),
40
+ * ingredients: z.array(z.string()).describe('List all ingredients'),
41
+ * steps: z.array(z.string()).describe('List all cooking steps'),
42
+ * })
43
+ * ```
44
+ */
45
+ export declare function schema<T extends SimpleSchema>(input: T): ZodTypeAny;
46
+ /**
47
+ * Type helper to infer the output type from a simple schema
48
+ */
49
+ export type InferSimpleSchema<T> = T extends string ? string : T extends [string] ? string[] : T extends [number] ? number[] : T extends {
50
+ [K in keyof T]: SimpleSchema;
51
+ } ? {
52
+ [K in keyof T]: InferSimpleSchema<T[K]>;
53
+ } : unknown;
54
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAK,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AAExC;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,YAAY,CAAC,GACd;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,GAC/B,UAAU,CAAA;AAYd;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,CAEnE;AAwED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC/C,MAAM,GACN,CAAC,SAAS,CAAC,MAAM,CAAC,GAClB,MAAM,EAAE,GACR,CAAC,SAAS,CAAC,MAAM,CAAC,GAClB,MAAM,EAAE,GACR,CAAC,SAAS;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY;CAAE,GAC1C;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC3C,OAAO,CAAA"}