ai-functions 2.1.1 → 2.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.
- package/.turbo/turbo-build.log +1 -4
- package/CHANGELOG.md +68 -1
- package/README.md +397 -157
- package/dist/ai-promise.d.ts +50 -3
- package/dist/ai-promise.d.ts.map +1 -1
- package/dist/ai-promise.js +410 -51
- package/dist/ai-promise.js.map +1 -1
- package/dist/ai-schemas.d.ts +56 -0
- package/dist/ai-schemas.d.ts.map +1 -0
- package/dist/ai-schemas.js +53 -0
- package/dist/ai-schemas.js.map +1 -0
- package/dist/ai.d.ts +16 -242
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +54 -837
- package/dist/ai.js.map +1 -1
- package/dist/batch/anthropic.d.ts +6 -4
- package/dist/batch/anthropic.d.ts.map +1 -1
- package/dist/batch/anthropic.js +83 -145
- package/dist/batch/anthropic.js.map +1 -1
- package/dist/batch/bedrock.d.ts +8 -30
- package/dist/batch/bedrock.d.ts.map +1 -1
- package/dist/batch/bedrock.js +155 -338
- package/dist/batch/bedrock.js.map +1 -1
- package/dist/batch/cloudflare.d.ts +8 -20
- package/dist/batch/cloudflare.d.ts.map +1 -1
- package/dist/batch/cloudflare.js +68 -189
- package/dist/batch/cloudflare.js.map +1 -1
- package/dist/batch/google.d.ts +6 -20
- package/dist/batch/google.d.ts.map +1 -1
- package/dist/batch/google.js +70 -238
- package/dist/batch/google.js.map +1 -1
- package/dist/batch/index.d.ts +4 -1
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +4 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/batch/memory.d.ts +1 -1
- package/dist/batch/memory.d.ts.map +1 -1
- package/dist/batch/memory.js +14 -10
- package/dist/batch/memory.js.map +1 -1
- package/dist/batch/openai.d.ts +11 -14
- package/dist/batch/openai.d.ts.map +1 -1
- package/dist/batch/openai.js +52 -156
- package/dist/batch/openai.js.map +1 -1
- package/dist/batch/provider.d.ts +111 -0
- package/dist/batch/provider.d.ts.map +1 -0
- package/dist/batch/provider.js +233 -0
- package/dist/batch/provider.js.map +1 -0
- package/dist/batch-map.d.ts.map +1 -1
- package/dist/batch-map.js +23 -17
- package/dist/batch-map.js.map +1 -1
- package/dist/batch-queue.d.ts +65 -0
- package/dist/batch-queue.d.ts.map +1 -1
- package/dist/batch-queue.js +169 -14
- package/dist/batch-queue.js.map +1 -1
- package/dist/budget.d.ts +272 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +513 -0
- package/dist/budget.js.map +1 -0
- package/dist/cache.d.ts +295 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +433 -0
- package/dist/cache.js.map +1 -0
- package/dist/context.d.ts +42 -8
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +64 -62
- package/dist/context.js.map +1 -1
- package/dist/digital-objects-registry.d.ts +229 -0
- package/dist/digital-objects-registry.d.ts.map +1 -0
- package/dist/digital-objects-registry.js +617 -0
- package/dist/digital-objects-registry.js.map +1 -0
- package/dist/embeddings.d.ts +2 -2
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -0
- package/dist/eval/runner.d.ts +10 -1
- package/dist/eval/runner.d.ts.map +1 -1
- package/dist/eval/runner.js +41 -35
- package/dist/eval/runner.js.map +1 -1
- package/dist/eval-log/in-memory.d.ts +34 -0
- package/dist/eval-log/in-memory.d.ts.map +1 -0
- package/dist/eval-log/in-memory.js +84 -0
- package/dist/eval-log/in-memory.js.map +1 -0
- package/dist/eval-log/index.d.ts +29 -0
- package/dist/eval-log/index.d.ts.map +1 -0
- package/dist/eval-log/index.js +39 -0
- package/dist/eval-log/index.js.map +1 -0
- package/dist/eval-log/types.d.ts +101 -0
- package/dist/eval-log/types.d.ts.map +1 -0
- package/dist/eval-log/types.js +16 -0
- package/dist/eval-log/types.js.map +1 -0
- package/dist/function-registry.d.ts +116 -0
- package/dist/function-registry.d.ts.map +1 -0
- package/dist/function-registry.js +546 -0
- package/dist/function-registry.js.map +1 -0
- package/dist/generate.d.ts +9 -3
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +18 -22
- package/dist/generate.js.map +1 -1
- package/dist/index.d.ts +35 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -42
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +118 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +187 -0
- package/dist/logger.js.map +1 -0
- package/dist/middleware/budget.d.ts +84 -0
- package/dist/middleware/budget.d.ts.map +1 -0
- package/dist/middleware/budget.js +110 -0
- package/dist/middleware/budget.js.map +1 -0
- package/dist/middleware/cache.d.ts +103 -0
- package/dist/middleware/cache.d.ts.map +1 -0
- package/dist/middleware/cache.js +228 -0
- package/dist/middleware/cache.js.map +1 -0
- package/dist/middleware/embed-cache.d.ts +99 -0
- package/dist/middleware/embed-cache.d.ts.map +1 -0
- package/dist/middleware/embed-cache.js +128 -0
- package/dist/middleware/embed-cache.js.map +1 -0
- package/dist/middleware/index.d.ts +11 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +11 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/trace.d.ts +103 -0
- package/dist/middleware/trace.d.ts.map +1 -0
- package/dist/middleware/trace.js +176 -0
- package/dist/middleware/trace.js.map +1 -0
- package/dist/primitives.d.ts +120 -1
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +398 -26
- package/dist/primitives.js.map +1 -1
- package/dist/retry.d.ts +368 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +646 -0
- package/dist/retry.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -10
- package/dist/schema.js.map +1 -1
- package/dist/telemetry.d.ts +128 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +285 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +6 -1
- package/dist/template.js.map +1 -1
- package/dist/tool-orchestration.d.ts +453 -0
- package/dist/tool-orchestration.d.ts.map +1 -0
- package/dist/tool-orchestration.js +763 -0
- package/dist/tool-orchestration.js.map +1 -0
- package/dist/type-guards.d.ts +28 -0
- package/dist/type-guards.d.ts.map +1 -0
- package/dist/type-guards.js +29 -0
- package/dist/type-guards.js.map +1 -0
- package/dist/types.d.ts +135 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +36 -1
- package/dist/types.js.map +1 -1
- package/dist/wrap-for-v3.d.ts +80 -0
- package/dist/wrap-for-v3.d.ts.map +1 -0
- package/dist/wrap-for-v3.js +89 -0
- package/dist/wrap-for-v3.js.map +1 -0
- package/examples/00-quickstart.ts +232 -0
- package/examples/01-rag-chatbot.ts +212 -0
- package/examples/02-multi-agent-research.ts +290 -0
- package/examples/03-email-classification.ts +379 -0
- package/examples/04-content-moderation.ts +400 -0
- package/examples/05-document-extraction.ts +455 -0
- package/examples/06-streaming-chat-nextjs.ts +437 -0
- package/examples/07-cloudflare-worker.ts +483 -0
- package/examples/08-batch-processing.ts +491 -0
- package/examples/09-budget-constrained.ts +527 -0
- package/examples/10-tool-orchestration.ts +565 -0
- package/examples/11-retry-resilience.ts +403 -0
- package/examples/12-caching-strategies.ts +422 -0
- package/examples/README.md +145 -0
- package/package.json +10 -6
- package/src/ai-promise.ts +528 -99
- package/src/ai-schemas.ts +122 -0
- package/src/ai.ts +69 -1153
- package/src/batch/anthropic.ts +96 -161
- package/src/batch/bedrock.ts +203 -454
- package/src/batch/cloudflare.ts +99 -282
- package/src/batch/google.ts +91 -297
- package/src/batch/index.ts +4 -1
- package/src/batch/memory.ts +15 -10
- package/src/batch/openai.ts +65 -193
- package/src/batch/provider.ts +336 -0
- package/src/batch-map.ts +29 -24
- package/src/batch-queue.ts +200 -11
- package/src/budget.ts +740 -0
- package/src/cache.ts +681 -0
- package/src/context.ts +122 -76
- package/src/digital-objects-registry.ts +750 -0
- package/src/errors.ts +37 -0
- package/src/eval/runner.ts +63 -38
- package/src/eval-log/in-memory.ts +90 -0
- package/src/eval-log/index.ts +46 -0
- package/src/eval-log/types.ts +110 -0
- package/src/function-registry.ts +671 -0
- package/src/generate.ts +33 -33
- package/src/index.ts +325 -49
- package/src/logger.ts +232 -0
- package/src/middleware/budget.ts +171 -0
- package/src/middleware/cache.ts +299 -0
- package/src/middleware/embed-cache.ts +195 -0
- package/src/middleware/index.ts +23 -0
- package/src/middleware/trace.ts +248 -0
- package/src/primitives.ts +589 -62
- package/src/retry.ts +902 -0
- package/src/schema.ts +8 -17
- package/src/telemetry.ts +403 -0
- package/src/template.ts +8 -4
- package/src/tool-orchestration.ts +1173 -0
- package/src/type-guards.ts +31 -0
- package/src/types.ts +164 -25
- package/src/wrap-for-v3.ts +105 -0
- package/test/ai-promise.test.ts +1080 -0
- package/test/ai-proxy.test.ts +1 -1
- package/test/backward-compat.test.ts +147 -0
- package/test/batch-autosubmit-errors.test.ts +610 -0
- package/test/batch-blog-posts.test.ts +87 -129
- package/test/budget-tracking.test.ts +800 -0
- package/test/cache.test.ts +712 -0
- package/test/context-isolation.test.ts +687 -0
- package/test/core-functions.test.ts +183 -579
- package/test/decide.test.ts +154 -322
- package/test/define.test.ts +211 -8
- package/test/digital-objects-registry.test.ts +760 -0
- package/test/embedding-cache-middleware.test.ts +140 -0
- package/test/evals/deterministic.eval.test.ts +376 -0
- package/test/generate-core.test.ts +140 -229
- package/test/implicit-batch.test.ts +22 -65
- package/test/json-parse-error-handling.test.ts +463 -0
- package/test/retry-policy-integration.test.ts +117 -0
- package/test/retry.test.ts +1016 -0
- package/test/schema.test.ts +55 -19
- package/test/streaming.test.ts +316 -0
- package/test/template.test.ts +1164 -0
- package/test/tool-orchestration.test.ts +1040 -0
- package/test/wrap-for-v3.test.ts +612 -0
- package/vitest.config.js +6 -0
- package/vitest.config.ts +20 -0
- package/dist/rpc/auth.d.ts +0 -69
- package/dist/rpc/auth.d.ts.map +0 -1
- package/dist/rpc/auth.js +0 -136
- package/dist/rpc/auth.js.map +0 -1
- package/dist/rpc/client.d.ts +0 -62
- package/dist/rpc/client.d.ts.map +0 -1
- package/dist/rpc/client.js +0 -103
- package/dist/rpc/client.js.map +0 -1
- package/dist/rpc/deferred.d.ts +0 -60
- package/dist/rpc/deferred.d.ts.map +0 -1
- package/dist/rpc/deferred.js +0 -96
- package/dist/rpc/deferred.js.map +0 -1
- package/dist/rpc/index.d.ts +0 -22
- package/dist/rpc/index.d.ts.map +0 -1
- package/dist/rpc/index.js +0 -38
- package/dist/rpc/index.js.map +0 -1
- package/dist/rpc/local.d.ts +0 -42
- package/dist/rpc/local.d.ts.map +0 -1
- package/dist/rpc/local.js +0 -50
- package/dist/rpc/local.js.map +0 -1
- package/dist/rpc/server.d.ts +0 -165
- package/dist/rpc/server.d.ts.map +0 -1
- package/dist/rpc/server.js +0 -405
- package/dist/rpc/server.js.map +0 -1
- package/dist/rpc/session.d.ts +0 -32
- package/dist/rpc/session.d.ts.map +0 -1
- package/dist/rpc/session.js +0 -43
- package/dist/rpc/session.js.map +0 -1
- package/dist/rpc/transport.d.ts +0 -306
- package/dist/rpc/transport.d.ts.map +0 -1
- package/dist/rpc/transport.js +0 -731
- package/dist/rpc/transport.js.map +0 -1
- package/src/batch/anthropic.js +0 -256
- package/src/batch/bedrock.js +0 -584
- package/src/batch/cloudflare.js +0 -287
- package/src/batch/google.js +0 -359
- package/src/batch/index.js +0 -30
- package/src/batch/memory.js +0 -187
- package/src/batch/openai.js +0 -402
- package/src/eval/index.js +0 -7
- package/src/eval/models.js +0 -119
- package/src/eval/runner.js +0 -147
- package/test/schema.test.js +0 -96
package/dist/batch-queue.js
CHANGED
|
@@ -23,9 +23,8 @@
|
|
|
23
23
|
*
|
|
24
24
|
* @packageDocumentation
|
|
25
25
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// ============================================================================
|
|
26
|
+
import { getLogger } from './logger.js';
|
|
27
|
+
import { policyFor } from 'language-models';
|
|
29
28
|
/**
|
|
30
29
|
* BatchQueue collects AI operations for deferred batch execution
|
|
31
30
|
*/
|
|
@@ -35,6 +34,10 @@ export class BatchQueue {
|
|
|
35
34
|
idCounter = 0;
|
|
36
35
|
submitted = false;
|
|
37
36
|
job = null;
|
|
37
|
+
// Error handling properties
|
|
38
|
+
_autoSubmitPromise = null;
|
|
39
|
+
_submissionError = null;
|
|
40
|
+
_eventHandlers = new Map();
|
|
38
41
|
constructor(options = {}) {
|
|
39
42
|
this.options = {
|
|
40
43
|
provider: 'openai',
|
|
@@ -43,6 +46,83 @@ export class BatchQueue {
|
|
|
43
46
|
...options,
|
|
44
47
|
};
|
|
45
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Subscribe to batch events
|
|
51
|
+
* @param event - Event name ('error', 'partial-failure', 'complete')
|
|
52
|
+
* @param handler - Event handler function
|
|
53
|
+
*/
|
|
54
|
+
on(event, handler) {
|
|
55
|
+
if (!this._eventHandlers.has(event)) {
|
|
56
|
+
this._eventHandlers.set(event, new Set());
|
|
57
|
+
}
|
|
58
|
+
this._eventHandlers.get(event).add(handler);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Unsubscribe from batch events
|
|
62
|
+
*/
|
|
63
|
+
off(event, handler) {
|
|
64
|
+
this._eventHandlers.get(event)?.delete(handler);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Emit an event to all subscribed handlers
|
|
68
|
+
*/
|
|
69
|
+
emit(event, data) {
|
|
70
|
+
this._eventHandlers.get(event)?.forEach((handler) => handler(data));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get the auto-submit promise (if auto-submit was triggered)
|
|
74
|
+
*/
|
|
75
|
+
get autoSubmitPromise() {
|
|
76
|
+
return this._autoSubmitPromise ?? undefined;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get the last submission error (if any)
|
|
80
|
+
*/
|
|
81
|
+
get submissionError() {
|
|
82
|
+
return this._submissionError ?? undefined;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if there was a submission error
|
|
86
|
+
*/
|
|
87
|
+
get hasSubmissionError() {
|
|
88
|
+
return this._submissionError !== null;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Await auto-submit completion or failure
|
|
92
|
+
* Returns a promise that resolves when auto-submit completes or rejects on error
|
|
93
|
+
*/
|
|
94
|
+
awaitAutoSubmit() {
|
|
95
|
+
if (!this._autoSubmitPromise) {
|
|
96
|
+
return Promise.resolve();
|
|
97
|
+
}
|
|
98
|
+
return this._autoSubmitPromise;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get items that failed during batch processing
|
|
102
|
+
*/
|
|
103
|
+
getFailedItems() {
|
|
104
|
+
return this.items.filter((item) => item.status === 'failed');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Retry a failed submission
|
|
108
|
+
* Only available after a failed auto-submit
|
|
109
|
+
*/
|
|
110
|
+
async retry() {
|
|
111
|
+
if (!this._submissionError) {
|
|
112
|
+
throw new Error('No failed submission to retry');
|
|
113
|
+
}
|
|
114
|
+
// Reset error state and submitted flag
|
|
115
|
+
this._submissionError = null;
|
|
116
|
+
this.submitted = false;
|
|
117
|
+
// Reset item statuses
|
|
118
|
+
for (const item of this.items) {
|
|
119
|
+
if (item.status === 'failed') {
|
|
120
|
+
item.status = 'pending';
|
|
121
|
+
delete item.error;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return this.submit();
|
|
125
|
+
}
|
|
46
126
|
/**
|
|
47
127
|
* Add an item to the batch queue
|
|
48
128
|
* Returns a placeholder that will be resolved after batch completion
|
|
@@ -54,16 +134,51 @@ export class BatchQueue {
|
|
|
54
134
|
const item = {
|
|
55
135
|
id: options?.customId || `item_${++this.idCounter}`,
|
|
56
136
|
prompt,
|
|
57
|
-
schema: options
|
|
58
|
-
options: options
|
|
59
|
-
metadata: options
|
|
137
|
+
...(options?.schema !== undefined && { schema: options.schema }),
|
|
138
|
+
...(options?.options !== undefined && { options: options.options }),
|
|
139
|
+
...(options?.metadata !== undefined && { metadata: options.metadata }),
|
|
60
140
|
status: 'pending',
|
|
61
141
|
};
|
|
62
142
|
this.items.push(item);
|
|
63
143
|
// Auto-submit if we hit the limit
|
|
64
144
|
if (this.options.autoSubmit && this.items.length >= (this.options.maxItems || 50000)) {
|
|
65
|
-
//
|
|
66
|
-
this.submit()
|
|
145
|
+
// Create a trackable promise for auto-submit
|
|
146
|
+
this._autoSubmitPromise = this.submit()
|
|
147
|
+
.then(() => {
|
|
148
|
+
// Success - promise is resolved
|
|
149
|
+
})
|
|
150
|
+
.catch((error) => {
|
|
151
|
+
// Store error and update item statuses
|
|
152
|
+
this._submissionError = error;
|
|
153
|
+
this.submitted = false; // Reset to allow retry
|
|
154
|
+
// Update all items to failed status
|
|
155
|
+
for (const item of this.items) {
|
|
156
|
+
if (item.status === 'pending') {
|
|
157
|
+
item.status = 'failed';
|
|
158
|
+
item.error = error.message;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Create a synthetic failed job to store error info
|
|
162
|
+
const errorWithMeta = error;
|
|
163
|
+
this.job = {
|
|
164
|
+
id: `failed_${Date.now()}`,
|
|
165
|
+
provider: this.options.provider || 'openai',
|
|
166
|
+
status: 'failed',
|
|
167
|
+
totalItems: this.items.length,
|
|
168
|
+
completedItems: 0,
|
|
169
|
+
failedItems: this.items.length,
|
|
170
|
+
createdAt: new Date(),
|
|
171
|
+
// Add rate limit retry info if available
|
|
172
|
+
...(errorWithMeta.headers?.['retry-after'] && {
|
|
173
|
+
retryAfter: parseInt(errorWithMeta.headers['retry-after'], 10),
|
|
174
|
+
}),
|
|
175
|
+
};
|
|
176
|
+
// Emit error event
|
|
177
|
+
this.emit('error', error);
|
|
178
|
+
// Log error and re-throw
|
|
179
|
+
getLogger().error('Batch auto-submit failed:', error);
|
|
180
|
+
throw error;
|
|
181
|
+
});
|
|
67
182
|
}
|
|
68
183
|
return item;
|
|
69
184
|
}
|
|
@@ -107,16 +222,32 @@ export class BatchQueue {
|
|
|
107
222
|
// Submit the batch
|
|
108
223
|
const result = await adapter.submit(this.items, this.options);
|
|
109
224
|
this.job = result.job;
|
|
110
|
-
// When completion resolves, update item statuses
|
|
225
|
+
// When completion resolves, update item statuses and check for partial failures
|
|
111
226
|
result.completion.then((results) => {
|
|
227
|
+
const failedResults = [];
|
|
112
228
|
for (const r of results) {
|
|
113
229
|
const item = this.items.find((i) => i.id === r.id);
|
|
114
230
|
if (item) {
|
|
115
231
|
item.status = r.status;
|
|
116
|
-
|
|
117
|
-
|
|
232
|
+
if (r.result !== undefined)
|
|
233
|
+
item.result = r.result;
|
|
234
|
+
if (r.error !== undefined)
|
|
235
|
+
item.error = r.error;
|
|
236
|
+
if (r.status === 'failed') {
|
|
237
|
+
failedResults.push(r);
|
|
238
|
+
}
|
|
118
239
|
}
|
|
119
240
|
}
|
|
241
|
+
// Emit partial-failure event if some items failed
|
|
242
|
+
if (failedResults.length > 0 && failedResults.length < results.length) {
|
|
243
|
+
this.emit('partial-failure', failedResults);
|
|
244
|
+
}
|
|
245
|
+
// Emit error event if there were any failures
|
|
246
|
+
if (failedResults.length > 0) {
|
|
247
|
+
this.emit('error', new Error(`${failedResults.length} items failed in batch`));
|
|
248
|
+
}
|
|
249
|
+
// Emit complete event
|
|
250
|
+
this.emit('complete', results);
|
|
120
251
|
});
|
|
121
252
|
return result;
|
|
122
253
|
}
|
|
@@ -241,6 +372,30 @@ export function hasFlexAdapter(provider) {
|
|
|
241
372
|
return flexAdapters[provider] !== null;
|
|
242
373
|
}
|
|
243
374
|
// ============================================================================
|
|
375
|
+
// Tier eligibility (per-model policy)
|
|
376
|
+
// ============================================================================
|
|
377
|
+
/**
|
|
378
|
+
* List the batch tiers a model is eligible for.
|
|
379
|
+
*
|
|
380
|
+
* Reads `ModelPolicy.batchTier` from `language-models` — this is the per-model
|
|
381
|
+
* policy data, distinct from the runtime adapter registration above.
|
|
382
|
+
*
|
|
383
|
+
* @example
|
|
384
|
+
* ```ts
|
|
385
|
+
* tiersForModel('sonnet') // ['immediate', 'batch']
|
|
386
|
+
* tiersForModel('gpt-4o') // ['immediate', 'flex', 'batch']
|
|
387
|
+
* ```
|
|
388
|
+
*/
|
|
389
|
+
export function tiersForModel(alias) {
|
|
390
|
+
return policyFor(alias).batchTier;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Check whether a model is eligible for a given tier.
|
|
394
|
+
*/
|
|
395
|
+
export function modelSupportsTier(alias, tier) {
|
|
396
|
+
return tiersForModel(alias).includes(tier);
|
|
397
|
+
}
|
|
398
|
+
// ============================================================================
|
|
244
399
|
// Factory Functions
|
|
245
400
|
// ============================================================================
|
|
246
401
|
/**
|
|
@@ -308,9 +463,9 @@ export function isBatchMode(options) {
|
|
|
308
463
|
*/
|
|
309
464
|
export function deferToBatch(batch, prompt, schema, options) {
|
|
310
465
|
return batch.add(prompt, {
|
|
311
|
-
schema,
|
|
312
|
-
options,
|
|
313
|
-
customId: options
|
|
466
|
+
...(schema !== undefined && { schema }),
|
|
467
|
+
...(options !== undefined && { options }),
|
|
468
|
+
...(options?.customId !== undefined && { customId: options.customId }),
|
|
314
469
|
});
|
|
315
470
|
}
|
|
316
471
|
//# sourceMappingURL=batch-queue.js.map
|
package/dist/batch-queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-queue.js","sourceRoot":"","sources":["../src/batch-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"batch-queue.js","sourceRoot":"","sources":["../src/batch-queue.ts"],"names":[],"mappings":"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"}
|
package/dist/budget.d.ts
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Budget Tracking and Request Tracing for AI Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - Token counting and estimation
|
|
6
|
+
* - Cost tracking by model
|
|
7
|
+
* - Budget limits with alerts
|
|
8
|
+
* - Request ID generation and tracing
|
|
9
|
+
* - User/tenant context isolation
|
|
10
|
+
*
|
|
11
|
+
* @packageDocumentation
|
|
12
|
+
*/
|
|
13
|
+
/** Token usage for a single request */
|
|
14
|
+
export interface TokenUsage {
|
|
15
|
+
inputTokens: number;
|
|
16
|
+
outputTokens: number;
|
|
17
|
+
model?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Model pricing per million tokens */
|
|
20
|
+
export interface ModelPricing {
|
|
21
|
+
inputPricePerMillion: number;
|
|
22
|
+
outputPricePerMillion: number;
|
|
23
|
+
}
|
|
24
|
+
/** Budget configuration */
|
|
25
|
+
export interface BudgetConfig {
|
|
26
|
+
/** Maximum total tokens allowed */
|
|
27
|
+
maxTokens?: number;
|
|
28
|
+
/** Maximum cost in USD */
|
|
29
|
+
maxCost?: number;
|
|
30
|
+
/** Alert thresholds as fractions (e.g., [0.5, 0.8, 1.0]) */
|
|
31
|
+
alertThresholds?: number[];
|
|
32
|
+
/** Callback when threshold is reached */
|
|
33
|
+
onAlert?: (alert: BudgetAlert) => void;
|
|
34
|
+
/** Custom pricing for models not in default pricing table */
|
|
35
|
+
customPricing?: Record<string, ModelPricing>;
|
|
36
|
+
/** Maximum number of requests to keep in history */
|
|
37
|
+
maxRequestHistory?: number;
|
|
38
|
+
}
|
|
39
|
+
/** Budget alert payload */
|
|
40
|
+
export interface BudgetAlert {
|
|
41
|
+
threshold: number;
|
|
42
|
+
currentUsage: number;
|
|
43
|
+
limit: number;
|
|
44
|
+
type: 'tokens' | 'cost';
|
|
45
|
+
}
|
|
46
|
+
/** Check budget options */
|
|
47
|
+
export interface CheckBudgetOptions {
|
|
48
|
+
estimatedTokens?: number;
|
|
49
|
+
model?: string;
|
|
50
|
+
}
|
|
51
|
+
/** Remaining budget info */
|
|
52
|
+
export interface RemainingBudget {
|
|
53
|
+
tokens?: number;
|
|
54
|
+
cost?: number;
|
|
55
|
+
}
|
|
56
|
+
/** Request info for tracking */
|
|
57
|
+
export interface RequestInfo {
|
|
58
|
+
requestId: string;
|
|
59
|
+
model: string;
|
|
60
|
+
startTime: number;
|
|
61
|
+
endTime: number;
|
|
62
|
+
inputTokens: number;
|
|
63
|
+
outputTokens: number;
|
|
64
|
+
duration?: number;
|
|
65
|
+
}
|
|
66
|
+
/** Stored request with computed duration */
|
|
67
|
+
interface StoredRequest extends RequestInfo {
|
|
68
|
+
duration: number;
|
|
69
|
+
}
|
|
70
|
+
/** Budget snapshot for export/import */
|
|
71
|
+
export interface BudgetSnapshot {
|
|
72
|
+
totalInputTokens: number;
|
|
73
|
+
totalOutputTokens: number;
|
|
74
|
+
totalCost: number;
|
|
75
|
+
usageByModel: Record<string, {
|
|
76
|
+
inputTokens: number;
|
|
77
|
+
outputTokens: number;
|
|
78
|
+
cost: number;
|
|
79
|
+
}>;
|
|
80
|
+
triggeredThresholds: number[];
|
|
81
|
+
}
|
|
82
|
+
/** Request context options */
|
|
83
|
+
export interface RequestContextOptions {
|
|
84
|
+
requestId?: string;
|
|
85
|
+
userId?: string;
|
|
86
|
+
tenantId?: string;
|
|
87
|
+
parentRequestId?: string;
|
|
88
|
+
metadata?: Record<string, unknown>;
|
|
89
|
+
}
|
|
90
|
+
/** Request context with tracing */
|
|
91
|
+
export interface IRequestContext {
|
|
92
|
+
requestId: string;
|
|
93
|
+
userId?: string;
|
|
94
|
+
tenantId?: string;
|
|
95
|
+
parentRequestId?: string;
|
|
96
|
+
depth: number;
|
|
97
|
+
metadata?: Record<string, unknown>;
|
|
98
|
+
createChild(options?: Partial<RequestContextOptions>): IRequestContext;
|
|
99
|
+
toTraceHeaders(): Record<string, string>;
|
|
100
|
+
toTraceparent(): string;
|
|
101
|
+
}
|
|
102
|
+
/** Message format for token counting */
|
|
103
|
+
interface Message {
|
|
104
|
+
role: string;
|
|
105
|
+
content: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Token counter for estimating token usage
|
|
109
|
+
*
|
|
110
|
+
* Uses a simple character-based estimation that works across models.
|
|
111
|
+
* For production, consider integrating tiktoken for more accurate counts.
|
|
112
|
+
*/
|
|
113
|
+
export declare class TokenCounter {
|
|
114
|
+
/** Average characters per token (rough estimate) */
|
|
115
|
+
private readonly charsPerToken;
|
|
116
|
+
/** Overhead tokens per message for formatting */
|
|
117
|
+
private readonly messageOverhead;
|
|
118
|
+
/**
|
|
119
|
+
* Estimate tokens for a text string
|
|
120
|
+
*/
|
|
121
|
+
estimateTokens(text: string, _model?: string): number;
|
|
122
|
+
/**
|
|
123
|
+
* Count tokens in a message array including formatting overhead
|
|
124
|
+
*/
|
|
125
|
+
countMessageTokens(messages: Message[], model?: string): number;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Error thrown when budget is exceeded
|
|
129
|
+
*/
|
|
130
|
+
export declare class BudgetExceededError extends Error {
|
|
131
|
+
readonly type: 'tokens' | 'cost';
|
|
132
|
+
readonly limit: number;
|
|
133
|
+
readonly current: number;
|
|
134
|
+
readonly requested?: number | undefined;
|
|
135
|
+
constructor(message: string, type: 'tokens' | 'cost', limit: number, current: number, requested?: number | undefined);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Tracks token usage and costs with budget limits
|
|
139
|
+
*/
|
|
140
|
+
export declare class BudgetTracker {
|
|
141
|
+
private totalInputTokens;
|
|
142
|
+
private totalOutputTokens;
|
|
143
|
+
private usageByModel;
|
|
144
|
+
private triggeredThresholds;
|
|
145
|
+
private requests;
|
|
146
|
+
private readonly config;
|
|
147
|
+
constructor(config?: BudgetConfig);
|
|
148
|
+
/**
|
|
149
|
+
* Record token usage from a request
|
|
150
|
+
*/
|
|
151
|
+
recordUsage(usage: TokenUsage): void;
|
|
152
|
+
/**
|
|
153
|
+
* Record a complete request with timing info
|
|
154
|
+
*/
|
|
155
|
+
recordRequest(info: RequestInfo): void;
|
|
156
|
+
/**
|
|
157
|
+
* Get all recorded requests
|
|
158
|
+
*/
|
|
159
|
+
getRequests(): StoredRequest[];
|
|
160
|
+
/**
|
|
161
|
+
* Check if a proposed request would exceed budget
|
|
162
|
+
*/
|
|
163
|
+
checkBudget(options: CheckBudgetOptions): void;
|
|
164
|
+
/**
|
|
165
|
+
* Check limits after recording and throw if exceeded
|
|
166
|
+
*/
|
|
167
|
+
private checkLimitsAfterRecording;
|
|
168
|
+
/**
|
|
169
|
+
* Check and trigger alerts
|
|
170
|
+
*/
|
|
171
|
+
private checkAlerts;
|
|
172
|
+
/**
|
|
173
|
+
* Get total input tokens
|
|
174
|
+
*/
|
|
175
|
+
getTotalInputTokens(): number;
|
|
176
|
+
/**
|
|
177
|
+
* Get total output tokens
|
|
178
|
+
*/
|
|
179
|
+
getTotalOutputTokens(): number;
|
|
180
|
+
/**
|
|
181
|
+
* Get total tokens (input + output)
|
|
182
|
+
*/
|
|
183
|
+
getTotalTokens(): number;
|
|
184
|
+
/**
|
|
185
|
+
* Get total cost in USD
|
|
186
|
+
*/
|
|
187
|
+
getTotalCost(): number;
|
|
188
|
+
/**
|
|
189
|
+
* Get cost breakdown by model
|
|
190
|
+
*/
|
|
191
|
+
getCostByModel(): Record<string, number>;
|
|
192
|
+
/**
|
|
193
|
+
* Get remaining budget
|
|
194
|
+
*/
|
|
195
|
+
getRemainingBudget(): RemainingBudget;
|
|
196
|
+
/**
|
|
197
|
+
* Reset all tracking
|
|
198
|
+
*/
|
|
199
|
+
reset(): void;
|
|
200
|
+
/**
|
|
201
|
+
* Export current state for persistence
|
|
202
|
+
*/
|
|
203
|
+
export(): BudgetSnapshot;
|
|
204
|
+
/**
|
|
205
|
+
* Import previously exported state
|
|
206
|
+
*/
|
|
207
|
+
import(snapshot: BudgetSnapshot): void;
|
|
208
|
+
/**
|
|
209
|
+
* Get pricing for a model
|
|
210
|
+
*/
|
|
211
|
+
private getPricing;
|
|
212
|
+
/**
|
|
213
|
+
* Calculate cost for token usage
|
|
214
|
+
*/
|
|
215
|
+
private calculateCost;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Request context for tracing and user isolation
|
|
219
|
+
*/
|
|
220
|
+
export declare class RequestContext implements IRequestContext {
|
|
221
|
+
readonly requestId: string;
|
|
222
|
+
readonly userId?: string;
|
|
223
|
+
readonly tenantId?: string;
|
|
224
|
+
readonly parentRequestId?: string;
|
|
225
|
+
readonly depth: number;
|
|
226
|
+
readonly metadata?: Record<string, unknown>;
|
|
227
|
+
private readonly traceId;
|
|
228
|
+
private readonly spanId;
|
|
229
|
+
constructor(options?: RequestContextOptions & {
|
|
230
|
+
depth?: number;
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* Create a child context that inherits from this one
|
|
234
|
+
*/
|
|
235
|
+
createChild(options?: Partial<RequestContextOptions>): RequestContext;
|
|
236
|
+
/**
|
|
237
|
+
* Serialize to trace headers
|
|
238
|
+
*/
|
|
239
|
+
toTraceHeaders(): Record<string, string>;
|
|
240
|
+
/**
|
|
241
|
+
* Generate W3C traceparent header
|
|
242
|
+
* Format: version-trace_id-parent_id-flags
|
|
243
|
+
*/
|
|
244
|
+
toTraceparent(): string;
|
|
245
|
+
/**
|
|
246
|
+
* Create a RequestContext from trace headers
|
|
247
|
+
*/
|
|
248
|
+
static fromHeaders(headers: Record<string, string>): RequestContext;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Create a new request context
|
|
252
|
+
*/
|
|
253
|
+
export declare function createRequestContext(options?: RequestContextOptions): RequestContext;
|
|
254
|
+
/** Options for withBudget */
|
|
255
|
+
export interface WithBudgetOptions extends BudgetConfig {
|
|
256
|
+
userId?: string;
|
|
257
|
+
tenantId?: string;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Execute a function with budget tracking
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```ts
|
|
264
|
+
* const result = await withBudget({ maxTokens: 1000 }, async (tracker) => {
|
|
265
|
+
* tracker.recordUsage({ inputTokens: 100, outputTokens: 50 })
|
|
266
|
+
* return 'success'
|
|
267
|
+
* })
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export declare function withBudget<T>(options: WithBudgetOptions, fn: (tracker: BudgetTracker, ctx?: RequestContext) => Promise<T>): Promise<T>;
|
|
271
|
+
export {};
|
|
272
|
+
//# sourceMappingURL=budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|