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,219 @@
1
+ /**
2
+ * AIPromise - RPC-style promise pipelining for AI functions
3
+ *
4
+ * Inspired by capnweb's RpcPromise, this enables:
5
+ * - Property access tracking for dynamic schema inference
6
+ * - Promise pipelining without await
7
+ * - Magical .map() for batch processing
8
+ * - Dependency graph resolution
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // Dynamic schema from destructuring
13
+ * const { summary, keyPoints, conclusion } = ai`write about ${topic}`
14
+ *
15
+ * // Pipeline without await
16
+ * const isValid = is`${conclusion} is solid given ${keyPoints}`
17
+ *
18
+ * // Batch process with map
19
+ * const ideas = list`startup ideas`
20
+ * const evaluated = await ideas.map(idea => ({
21
+ * idea,
22
+ * viable: is`${idea} is viable`,
23
+ * market: ai`market size for ${idea}`,
24
+ * }))
25
+ *
26
+ * // Only await at the end
27
+ * if (await isValid) { ... }
28
+ * ```
29
+ *
30
+ * @packageDocumentation
31
+ */
32
+ import type { SimpleSchema } from './schema.js';
33
+ import type { FunctionOptions } from './template.js';
34
+ import { BatchMapPromise } from './batch-map.js';
35
+ /** Symbol to identify AIPromise instances */
36
+ export declare const AI_PROMISE_SYMBOL: unique symbol;
37
+ /** Symbol to get the raw AIPromise from a proxy */
38
+ export declare const RAW_PROMISE_SYMBOL: unique symbol;
39
+ /** Recording mode for map() */
40
+ export declare const RECORDING_MODE: unique symbol;
41
+ /** Dependency tracking */
42
+ interface Dependency {
43
+ promise: AIPromise<unknown>;
44
+ path: string[];
45
+ }
46
+ /** Options for AIPromise creation */
47
+ export interface AIPromiseOptions extends FunctionOptions {
48
+ /** The type of generation */
49
+ type?: 'text' | 'object' | 'list' | 'lists' | 'boolean' | 'extract';
50
+ /** Base schema (can be extended by property access) */
51
+ baseSchema?: SimpleSchema;
52
+ /** Parent promise this was derived from */
53
+ parent?: AIPromise<unknown>;
54
+ /** Property path from parent */
55
+ propertyPath?: string[];
56
+ }
57
+ /**
58
+ * AIPromise - Like capnweb's RpcPromise but for AI functions
59
+ *
60
+ * Acts as both a Promise AND a stub that:
61
+ * - Tracks property accesses for dynamic schema inference
62
+ * - Records dependencies for promise pipelining
63
+ * - Supports .map() for batch processing
64
+ */
65
+ export declare class AIPromise<T> implements PromiseLike<T> {
66
+ /** Marker to identify AIPromise instances */
67
+ readonly [AI_PROMISE_SYMBOL] = true;
68
+ /** The prompt that will generate this value */
69
+ private _prompt;
70
+ /** Options for generation */
71
+ private _options;
72
+ /** Properties accessed on this promise (for schema inference) */
73
+ private _accessedProps;
74
+ /** Property path from parent (for nested access) */
75
+ private _propertyPath;
76
+ /** Parent promise (if this is a property access) */
77
+ private _parent;
78
+ /** Dependencies (other AIPromises used in our prompt) */
79
+ private _dependencies;
80
+ /** Cached resolver promise */
81
+ private _resolver;
82
+ /** Resolved value (cached after first resolution) */
83
+ private _resolvedValue;
84
+ /** Whether this promise has been resolved */
85
+ private _isResolved;
86
+ /** Whether we're in recording mode */
87
+ private _isRecording;
88
+ constructor(prompt: string, options?: AIPromiseOptions);
89
+ /** Get the prompt */
90
+ get prompt(): string;
91
+ /** Get the property path */
92
+ get path(): string[];
93
+ /** Check if resolved */
94
+ get isResolved(): boolean;
95
+ /** Get accessed properties */
96
+ get accessedProps(): Set<string>;
97
+ /**
98
+ * Add a dependency (another AIPromise used in this one's prompt)
99
+ */
100
+ addDependency(promise: AIPromise<unknown>, path?: string[]): void;
101
+ /**
102
+ * Resolve this promise
103
+ */
104
+ resolve(): Promise<T>;
105
+ /**
106
+ * Build schema from accessed properties and base schema
107
+ */
108
+ private _buildSchema;
109
+ /**
110
+ * Map over array results - automatically batches operations!
111
+ *
112
+ * When you map over a list, the operations are captured and
113
+ * automatically batched when resolved. Uses provider batch APIs
114
+ * for cost savings (50% discount) when beneficial.
115
+ *
116
+ * @example
117
+ * ```ts
118
+ * // Simple map - each title becomes a blog post
119
+ * const titles = await list`10 blog post titles`
120
+ * const posts = titles.map(title => write`blog post: # ${title}`)
121
+ * console.log(await posts) // 10 blog posts via batch API
122
+ *
123
+ * // Complex map - multiple operations per item
124
+ * const ideas = await list`startup ideas`
125
+ * const evaluated = await ideas.map(idea => ({
126
+ * idea,
127
+ * viable: is`${idea} is viable`,
128
+ * market: ai`market size for ${idea}`,
129
+ * }))
130
+ * ```
131
+ */
132
+ map<U>(callback: (item: T extends (infer I)[] ? I : T, index: number) => U): BatchMapPromise<U>;
133
+ /**
134
+ * Map with explicit batch options
135
+ *
136
+ * @example
137
+ * ```ts
138
+ * // Force immediate execution (no batch API)
139
+ * const posts = titles.mapImmediate(title => write`blog post: ${title}`)
140
+ *
141
+ * // Force batch API (even for small lists)
142
+ * const posts = titles.mapDeferred(title => write`blog post: ${title}`)
143
+ * ```
144
+ */
145
+ mapImmediate<U>(callback: (item: T extends (infer I)[] ? I : T, index: number) => U): BatchMapPromise<U>;
146
+ mapDeferred<U>(callback: (item: T extends (infer I)[] ? I : T, index: number) => U): BatchMapPromise<U>;
147
+ /**
148
+ * ForEach with automatic batching
149
+ *
150
+ * @example
151
+ * ```ts
152
+ * await list`startup ideas`.forEach(async idea => {
153
+ * console.log(await is`${idea} is viable`)
154
+ * })
155
+ * ```
156
+ */
157
+ forEach(callback: (item: T extends (infer I)[] ? I : T, index: number) => void | Promise<void>): Promise<void>;
158
+ /**
159
+ * Async iterator support with smart batching
160
+ */
161
+ [Symbol.asyncIterator](): AsyncIterator<T extends (infer I)[] ? I : T>;
162
+ /**
163
+ * Promise interface - then()
164
+ */
165
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
166
+ /**
167
+ * Promise interface - catch()
168
+ */
169
+ catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
170
+ /**
171
+ * Promise interface - finally()
172
+ */
173
+ finally(onfinally?: (() => void) | null): Promise<T>;
174
+ }
175
+ /**
176
+ * Check if a value is an AIPromise
177
+ */
178
+ export declare function isAIPromise(value: unknown): value is AIPromise<unknown>;
179
+ /**
180
+ * Get the raw AIPromise from a proxied value
181
+ */
182
+ export declare function getRawPromise<T>(value: AIPromise<T>): AIPromise<T>;
183
+ /**
184
+ * Create an AIPromise for text generation
185
+ */
186
+ export declare function createTextPromise(prompt: string, options?: FunctionOptions): AIPromise<string>;
187
+ /**
188
+ * Create an AIPromise for object generation with dynamic schema
189
+ */
190
+ export declare function createObjectPromise<T = unknown>(prompt: string, options?: FunctionOptions): AIPromise<T>;
191
+ /**
192
+ * Create an AIPromise for list generation
193
+ */
194
+ export declare function createListPromise(prompt: string, options?: FunctionOptions): AIPromise<string[]>;
195
+ /**
196
+ * Create an AIPromise for multiple lists generation
197
+ */
198
+ export declare function createListsPromise(prompt: string, options?: FunctionOptions): AIPromise<Record<string, string[]>>;
199
+ /**
200
+ * Create an AIPromise for boolean/is check
201
+ */
202
+ export declare function createBooleanPromise(prompt: string, options?: FunctionOptions): AIPromise<boolean>;
203
+ /**
204
+ * Create an AIPromise for extraction
205
+ */
206
+ export declare function createExtractPromise<T = unknown>(prompt: string, options?: FunctionOptions): AIPromise<T[]>;
207
+ /**
208
+ * Parse template literals and track AIPromise dependencies
209
+ */
210
+ export declare function parseTemplateWithDependencies(strings: TemplateStringsArray, ...values: unknown[]): {
211
+ prompt: string;
212
+ dependencies: Dependency[];
213
+ };
214
+ /**
215
+ * Create a template function that returns AIPromise
216
+ */
217
+ export declare function createAITemplateFunction<T>(type: AIPromiseOptions['type'], baseOptions?: FunctionOptions): ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<T>) & ((prompt: string, options?: FunctionOptions) => AIPromise<T>);
218
+ export {};
219
+ //# sourceMappingURL=ai-promise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-promise.d.ts","sourceRoot":"","sources":["../src/ai-promise.ts"],"names":[],"mappings":"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"}