@framers/agentos 0.6.4 → 0.6.5
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/dist/api/agent.d.ts.map +1 -1
- package/dist/api/agent.js +37 -4
- package/dist/api/agent.js.map +1 -1
- package/dist/api/generateObject.d.ts.map +1 -1
- package/dist/api/generateObject.js +23 -5
- package/dist/api/generateObject.js.map +1 -1
- package/dist/api/runtime/openaiResponseFormat.d.ts +44 -0
- package/dist/api/runtime/openaiResponseFormat.d.ts.map +1 -0
- package/dist/api/runtime/openaiResponseFormat.js +93 -0
- package/dist/api/runtime/openaiResponseFormat.js.map +1 -0
- package/dist/api/runtime/schemaTokenEstimate.d.ts +25 -0
- package/dist/api/runtime/schemaTokenEstimate.d.ts.map +1 -0
- package/dist/api/runtime/schemaTokenEstimate.js +112 -0
- package/dist/api/runtime/schemaTokenEstimate.js.map +1 -0
- package/dist/api/runtime/usageAccumulator.d.ts +39 -0
- package/dist/api/runtime/usageAccumulator.d.ts.map +1 -0
- package/dist/api/runtime/usageAccumulator.js +56 -0
- package/dist/api/runtime/usageAccumulator.js.map +1 -0
- package/package.json +1 -1
package/dist/api/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/api/agent.js
CHANGED
|
@@ -2,6 +2,7 @@ import { generateText, extractTextFromContent, } from './generateText.js';
|
|
|
2
2
|
import { buildResponseFormat } from '../core/llm/providers/structuredOutputFormat.js';
|
|
3
3
|
import { ObjectGenerationError } from './generateObject.js';
|
|
4
4
|
import { streamText } from './streamText.js';
|
|
5
|
+
import { createEmptyUsageAggregate, accumulateUsage, mergeAggregates, } from './runtime/usageAccumulator.js';
|
|
5
6
|
import { warnOnDeferredLightweightAgentCapabilities } from './runtime/lightweightAgentDiagnostics.js';
|
|
6
7
|
import { exportAgentConfig, exportAgentConfigJSON } from './agentExportCore.js';
|
|
7
8
|
import { applyMemoryProvider } from './runtime/memoryProviderHooks.js';
|
|
@@ -131,6 +132,13 @@ function buildSystemPrompt(opts) {
|
|
|
131
132
|
*/
|
|
132
133
|
export function agent(opts) {
|
|
133
134
|
const sessions = new Map();
|
|
135
|
+
// In-memory usage tally per session and per agent. Populated synchronously
|
|
136
|
+
// after every generate/send/stream call so `agent.usage()` and
|
|
137
|
+
// `session.usage()` work even when the persisted ledger is disabled (the
|
|
138
|
+
// common case). The persisted ledger is still merged in at read time so
|
|
139
|
+
// cross-process / historical totals continue to roll up correctly.
|
|
140
|
+
const sessionUsageTallies = new Map();
|
|
141
|
+
const agentUsageTally = createEmptyUsageAggregate();
|
|
134
142
|
let avatarBindingOverrides = {};
|
|
135
143
|
const useMemory = opts.memory !== false;
|
|
136
144
|
warnOnDeferredLightweightAgentCapabilities(opts);
|
|
@@ -191,7 +199,9 @@ export function agent(opts) {
|
|
|
191
199
|
else {
|
|
192
200
|
genOpts.messages = [...(genOpts.messages ?? []), { role: 'user', content: prompt }];
|
|
193
201
|
}
|
|
194
|
-
|
|
202
|
+
const result = await generateText(genOpts);
|
|
203
|
+
accumulateUsage(agentUsageTally, result.usage);
|
|
204
|
+
return result;
|
|
195
205
|
},
|
|
196
206
|
stream(prompt, extra) {
|
|
197
207
|
const userText = typeof prompt === 'string' ? prompt : extractTextFromContent(prompt);
|
|
@@ -208,13 +218,21 @@ export function agent(opts) {
|
|
|
208
218
|
else {
|
|
209
219
|
streamOpts.messages = [...(streamOpts.messages ?? []), { role: 'user', content: prompt }];
|
|
210
220
|
}
|
|
211
|
-
|
|
221
|
+
const result = streamText(streamOpts);
|
|
222
|
+
void result.usage
|
|
223
|
+
.then((usage) => accumulateUsage(agentUsageTally, usage))
|
|
224
|
+
.catch(() => { });
|
|
225
|
+
return result;
|
|
212
226
|
},
|
|
213
227
|
session(id) {
|
|
214
228
|
const sessionId = id ?? crypto.randomUUID();
|
|
215
229
|
if (!sessions.has(sessionId))
|
|
216
230
|
sessions.set(sessionId, []);
|
|
231
|
+
if (!sessionUsageTallies.has(sessionId)) {
|
|
232
|
+
sessionUsageTallies.set(sessionId, createEmptyUsageAggregate(sessionId));
|
|
233
|
+
}
|
|
217
234
|
const history = sessions.get(sessionId);
|
|
235
|
+
const sessionUsageTally = sessionUsageTallies.get(sessionId);
|
|
218
236
|
const session = {
|
|
219
237
|
id: sessionId,
|
|
220
238
|
async send(input, sendOpts) {
|
|
@@ -266,6 +284,8 @@ export function agent(opts) {
|
|
|
266
284
|
...(responseFormat ? { _responseFormat: responseFormat } : {}),
|
|
267
285
|
}, opts.memoryProvider, textForMemory);
|
|
268
286
|
const result = await generateText(wrappedOpts);
|
|
287
|
+
accumulateUsage(sessionUsageTally, result.usage);
|
|
288
|
+
accumulateUsage(agentUsageTally, result.usage);
|
|
269
289
|
// Validate + parse when a schema was supplied. Native enforcement
|
|
270
290
|
// guarantees a valid shape on every successful response, so a
|
|
271
291
|
// parse/validation failure here is a real provider bug rather
|
|
@@ -312,6 +332,12 @@ export function agent(opts) {
|
|
|
312
332
|
}),
|
|
313
333
|
}, opts.memoryProvider, textForMemory);
|
|
314
334
|
const result = streamText(wrappedOpts);
|
|
335
|
+
void result.usage
|
|
336
|
+
.then((usage) => {
|
|
337
|
+
accumulateUsage(sessionUsageTally, usage);
|
|
338
|
+
accumulateUsage(agentUsageTally, usage);
|
|
339
|
+
})
|
|
340
|
+
.catch(() => { });
|
|
315
341
|
// Capture text for history when done. Memory observe runs inside
|
|
316
342
|
// applyMemoryProvider's onAfterGeneration wrapper so it's not
|
|
317
343
|
// re-fired here.
|
|
@@ -331,11 +357,12 @@ export function agent(opts) {
|
|
|
331
357
|
return [...history];
|
|
332
358
|
},
|
|
333
359
|
async usage() {
|
|
334
|
-
|
|
360
|
+
const persisted = await loadRecordedAgentOSUsage({
|
|
335
361
|
enabled: baseOpts.usageLedger?.enabled,
|
|
336
362
|
path: baseOpts.usageLedger?.path,
|
|
337
363
|
sessionId,
|
|
338
364
|
});
|
|
365
|
+
return mergeAggregates(sessionUsageTally, persisted);
|
|
339
366
|
},
|
|
340
367
|
clear() {
|
|
341
368
|
history.length = 0;
|
|
@@ -348,11 +375,17 @@ export function agent(opts) {
|
|
|
348
375
|
return session;
|
|
349
376
|
},
|
|
350
377
|
async usage(sessionId) {
|
|
351
|
-
|
|
378
|
+
const persisted = await loadRecordedAgentOSUsage({
|
|
352
379
|
enabled: baseOpts.usageLedger?.enabled,
|
|
353
380
|
path: baseOpts.usageLedger?.path,
|
|
354
381
|
sessionId,
|
|
355
382
|
});
|
|
383
|
+
// When a sessionId is requested, only that session's tally is in scope.
|
|
384
|
+
// When none is requested, return the agent-wide tally.
|
|
385
|
+
const inMemory = sessionId
|
|
386
|
+
? sessionUsageTallies.get(sessionId) ?? createEmptyUsageAggregate(sessionId)
|
|
387
|
+
: agentUsageTally;
|
|
388
|
+
return mergeAggregates(inMemory, persisted);
|
|
356
389
|
},
|
|
357
390
|
async close() {
|
|
358
391
|
sessions.clear();
|
package/dist/api/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateObject.d.ts","sourceRoot":"","sources":["../../src/api/generateObject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAG7C,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"generateObject.d.ts","sourceRoot":"","sources":["../../src/api/generateObject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAG7C,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAUjF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAW5C,6DAA6D;aAC7C,OAAO,EAAE,MAAM;IAC/B,8EAA8E;aAC9D,gBAAgB,CAAC,EAAE,QAAQ;IAb7C,kFAAkF;IAClF,SAAkB,IAAI,2BAA2B;IAEjD;;;;OAIG;gBAED,OAAO,EAAE,MAAM;IACf,6DAA6D;IAC7C,OAAO,EAAE,MAAM;IAC/B,8EAA8E;IAC9D,gBAAgB,CAAC,EAAE,QAAQ,YAAA;CAK9C;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,OAAO;IACtD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qDAAqD;IACrD,MAAM,EAAE,CAAC,CAAC;IAEV;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEvC,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAErB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;IAExE;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,qEAAqE;IACrE,MAAM,EAAE,CAAC,CAAC;IAEV,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IAEb,sEAAsE;IACtE,KAAK,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IAEjB,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAwID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,OAAO,EACpD,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAqJ3C;AAID,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { generateText } from './generateText.js';
|
|
2
2
|
import { resolveModelOption } from './model.js';
|
|
3
3
|
import { lowerZodToJsonSchema } from '../orchestration/compiler/SchemaLowering.js';
|
|
4
|
+
import { estimateMaxTokensForZodSchema } from './runtime/schemaTokenEstimate.js';
|
|
5
|
+
import { canUseStrictJsonSchema, buildOpenAIJsonSchemaResponseFormat } from './runtime/openaiResponseFormat.js';
|
|
4
6
|
// ---------------------------------------------------------------------------
|
|
5
7
|
// Error type
|
|
6
8
|
// ---------------------------------------------------------------------------
|
|
@@ -197,10 +199,20 @@ export async function generateObject(opts) {
|
|
|
197
199
|
// Uses the hand-rolled SchemaLowering converter to avoid extra dependencies.
|
|
198
200
|
const jsonSchema = lowerZodToJsonSchema(opts.schema);
|
|
199
201
|
const systemPrompt = buildSchemaSystemPrompt(opts.system, jsonSchema, opts.schemaName, opts.schemaDescription);
|
|
200
|
-
// Detect
|
|
201
|
-
//
|
|
202
|
+
// Detect provider-native JSON output paths. OpenAI gets the strongest
|
|
203
|
+
// guarantee via `response_format: json_schema` (strict mode, supported on
|
|
204
|
+
// gpt-4o-2024-08-06 and later) when the schema lowers cleanly. Other
|
|
205
|
+
// OpenAI-compatible providers fall back to the looser `json_object` mode,
|
|
206
|
+
// which still suppresses markdown fences but doesn't enforce the schema.
|
|
207
|
+
// Anthropic / Gemini / etc. fall through to prompt-only enforcement.
|
|
202
208
|
const { providerId } = resolveModelOption(opts, 'text');
|
|
203
|
-
const
|
|
209
|
+
const useStrictJsonSchema = providerId === 'openai' && canUseStrictJsonSchema(jsonSchema);
|
|
210
|
+
const supportsJsonObjectMode = JSON_MODE_PROVIDERS.has(providerId);
|
|
211
|
+
const responseFormat = useStrictJsonSchema
|
|
212
|
+
? buildOpenAIJsonSchemaResponseFormat(jsonSchema, opts.schemaName)
|
|
213
|
+
: supportsJsonObjectMode
|
|
214
|
+
? { type: 'json_object' }
|
|
215
|
+
: undefined;
|
|
204
216
|
// Build the messages array, accumulating retry feedback as needed.
|
|
205
217
|
const messages = [];
|
|
206
218
|
if (opts.messages) {
|
|
@@ -213,6 +225,12 @@ export async function generateObject(opts) {
|
|
|
213
225
|
const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
214
226
|
let lastRawText = '';
|
|
215
227
|
let lastValidationError;
|
|
228
|
+
// Auto-size the output budget when the caller didn't specify one. Without
|
|
229
|
+
// this, complex nested schemas reliably truncate at the provider default
|
|
230
|
+
// (256-512 tokens) and JSON.parse fails on the unfinished output. The
|
|
231
|
+
// estimate scales with field count and array nesting depth so simple
|
|
232
|
+
// schemas don't pay for tokens they won't use.
|
|
233
|
+
const effectiveMaxTokens = opts.maxTokens ?? estimateMaxTokensForZodSchema(opts.schema);
|
|
216
234
|
// Attempt generation up to 1 + maxRetries times (initial + retries)
|
|
217
235
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
218
236
|
const result = await generateText({
|
|
@@ -221,12 +239,12 @@ export async function generateObject(opts) {
|
|
|
221
239
|
system: systemPrompt,
|
|
222
240
|
messages,
|
|
223
241
|
temperature: opts.temperature,
|
|
224
|
-
maxTokens:
|
|
242
|
+
maxTokens: effectiveMaxTokens,
|
|
225
243
|
apiKey: opts.apiKey,
|
|
226
244
|
baseUrl: opts.baseUrl,
|
|
227
245
|
fallbackProviders: opts.fallbackProviders,
|
|
228
246
|
onFallback: opts.onFallback,
|
|
229
|
-
_responseFormat:
|
|
247
|
+
_responseFormat: responseFormat,
|
|
230
248
|
});
|
|
231
249
|
// Accumulate token usage across attempts
|
|
232
250
|
totalUsage.promptTokens += result.usage.promptTokens;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateObject.js","sourceRoot":"","sources":["../../src/api/generateObject.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"generateObject.js","sourceRoot":"","sources":["../../src/api/generateObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file openaiResponseFormat.ts
|
|
3
|
+
* @description Helpers for building OpenAI's `response_format: json_schema`
|
|
4
|
+
* payload from a lowered JSON Schema.
|
|
5
|
+
*
|
|
6
|
+
* OpenAI's strict structured-outputs mode (added with `gpt-4o-2024-08-06`)
|
|
7
|
+
* guarantees the model produces JSON that conforms to a provided schema. It
|
|
8
|
+
* has stricter requirements than the looser `json_object` mode:
|
|
9
|
+
*
|
|
10
|
+
* - Every object must declare `additionalProperties: false`.
|
|
11
|
+
* - Every property of every object must appear in the `required` array.
|
|
12
|
+
* - Unsupported keywords (`format`, `pattern`, `minLength`, etc.) are stripped.
|
|
13
|
+
*
|
|
14
|
+
* This module wraps a lowered JSON Schema (from {@link lowerZodToJsonSchema})
|
|
15
|
+
* into a strict-compatible payload. When the lowered schema is empty (the
|
|
16
|
+
* Zod v3 case where the lowering helper returns `{}` because it only knows
|
|
17
|
+
* v4 internals), the caller should fall back to `json_object` mode.
|
|
18
|
+
*
|
|
19
|
+
* @see https://platform.openai.com/docs/guides/structured-outputs
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Returns true when the schema is concrete enough to be wrapped in OpenAI's
|
|
23
|
+
* strict json_schema mode. A schema with no `type` and no `properties` is
|
|
24
|
+
* treated as "unknown / untyped" and won't satisfy strict mode.
|
|
25
|
+
*/
|
|
26
|
+
export declare function canUseStrictJsonSchema(jsonSchema: Record<string, unknown> | undefined): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Recursively prepares a JSON Schema for OpenAI strict mode:
|
|
29
|
+
* - On every object node, sets `additionalProperties: false` and lifts every
|
|
30
|
+
* declared property name into `required`.
|
|
31
|
+
* - Walks into `properties` and `items` so nested arrays-of-objects are
|
|
32
|
+
* handled correctly (the most common reason callers hit this code path).
|
|
33
|
+
* - Returns a fresh object; does not mutate the input.
|
|
34
|
+
*/
|
|
35
|
+
export declare function makeStrictJsonSchema(node: unknown): unknown;
|
|
36
|
+
/**
|
|
37
|
+
* Build OpenAI's full `response_format` payload from a lowered JSON Schema.
|
|
38
|
+
*
|
|
39
|
+
* @param jsonSchema - The lowered JSON Schema (from `lowerZodToJsonSchema`).
|
|
40
|
+
* @param schemaName - Name passed to OpenAI for trace/debug purposes.
|
|
41
|
+
* Falls back to `"response"` when omitted.
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildOpenAIJsonSchemaResponseFormat(jsonSchema: Record<string, unknown>, schemaName?: string): Record<string, unknown>;
|
|
44
|
+
//# sourceMappingURL=openaiResponseFormat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openaiResponseFormat.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/openaiResponseFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,OAAO,CAK/F;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAuB3D;AAED;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,UAAU,GAAE,MAAmB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file openaiResponseFormat.ts
|
|
3
|
+
* @description Helpers for building OpenAI's `response_format: json_schema`
|
|
4
|
+
* payload from a lowered JSON Schema.
|
|
5
|
+
*
|
|
6
|
+
* OpenAI's strict structured-outputs mode (added with `gpt-4o-2024-08-06`)
|
|
7
|
+
* guarantees the model produces JSON that conforms to a provided schema. It
|
|
8
|
+
* has stricter requirements than the looser `json_object` mode:
|
|
9
|
+
*
|
|
10
|
+
* - Every object must declare `additionalProperties: false`.
|
|
11
|
+
* - Every property of every object must appear in the `required` array.
|
|
12
|
+
* - Unsupported keywords (`format`, `pattern`, `minLength`, etc.) are stripped.
|
|
13
|
+
*
|
|
14
|
+
* This module wraps a lowered JSON Schema (from {@link lowerZodToJsonSchema})
|
|
15
|
+
* into a strict-compatible payload. When the lowered schema is empty (the
|
|
16
|
+
* Zod v3 case where the lowering helper returns `{}` because it only knows
|
|
17
|
+
* v4 internals), the caller should fall back to `json_object` mode.
|
|
18
|
+
*
|
|
19
|
+
* @see https://platform.openai.com/docs/guides/structured-outputs
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Returns true when the schema is concrete enough to be wrapped in OpenAI's
|
|
23
|
+
* strict json_schema mode. A schema with no `type` and no `properties` is
|
|
24
|
+
* treated as "unknown / untyped" and won't satisfy strict mode.
|
|
25
|
+
*/
|
|
26
|
+
export function canUseStrictJsonSchema(jsonSchema) {
|
|
27
|
+
if (!jsonSchema)
|
|
28
|
+
return false;
|
|
29
|
+
if (Object.keys(jsonSchema).length === 0)
|
|
30
|
+
return false;
|
|
31
|
+
// Strict mode demands an object root with declared properties.
|
|
32
|
+
return jsonSchema.type === 'object' && typeof jsonSchema.properties === 'object';
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Recursively prepares a JSON Schema for OpenAI strict mode:
|
|
36
|
+
* - On every object node, sets `additionalProperties: false` and lifts every
|
|
37
|
+
* declared property name into `required`.
|
|
38
|
+
* - Walks into `properties` and `items` so nested arrays-of-objects are
|
|
39
|
+
* handled correctly (the most common reason callers hit this code path).
|
|
40
|
+
* - Returns a fresh object; does not mutate the input.
|
|
41
|
+
*/
|
|
42
|
+
export function makeStrictJsonSchema(node) {
|
|
43
|
+
if (!node || typeof node !== 'object')
|
|
44
|
+
return node;
|
|
45
|
+
const obj = node;
|
|
46
|
+
const out = { ...obj };
|
|
47
|
+
if (out.type === 'object' && out.properties && typeof out.properties === 'object') {
|
|
48
|
+
const props = out.properties;
|
|
49
|
+
const newProps = {};
|
|
50
|
+
const required = [];
|
|
51
|
+
for (const key of Object.keys(props)) {
|
|
52
|
+
newProps[key] = makeStrictJsonSchema(props[key]);
|
|
53
|
+
required.push(key);
|
|
54
|
+
}
|
|
55
|
+
out.properties = newProps;
|
|
56
|
+
out.required = required;
|
|
57
|
+
out.additionalProperties = false;
|
|
58
|
+
}
|
|
59
|
+
if (out.type === 'array' && out.items) {
|
|
60
|
+
out.items = makeStrictJsonSchema(out.items);
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Build OpenAI's full `response_format` payload from a lowered JSON Schema.
|
|
66
|
+
*
|
|
67
|
+
* @param jsonSchema - The lowered JSON Schema (from `lowerZodToJsonSchema`).
|
|
68
|
+
* @param schemaName - Name passed to OpenAI for trace/debug purposes.
|
|
69
|
+
* Falls back to `"response"` when omitted.
|
|
70
|
+
*/
|
|
71
|
+
export function buildOpenAIJsonSchemaResponseFormat(jsonSchema, schemaName = 'response') {
|
|
72
|
+
return {
|
|
73
|
+
type: 'json_schema',
|
|
74
|
+
json_schema: {
|
|
75
|
+
name: sanitizeSchemaName(schemaName),
|
|
76
|
+
schema: makeStrictJsonSchema(jsonSchema),
|
|
77
|
+
strict: true,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* OpenAI requires `name` to match `^[a-zA-Z0-9_-]+$` and be ≤ 64 chars.
|
|
83
|
+
* Replace anything outside that set with `_` and clip to length.
|
|
84
|
+
*/
|
|
85
|
+
function sanitizeSchemaName(name) {
|
|
86
|
+
const cleaned = name.replace(/[^a-zA-Z0-9_-]/g, '_').slice(0, 64);
|
|
87
|
+
// If the cleaned name carries no real signal (empty, or all-underscores
|
|
88
|
+
// because every input character was illegal), fall back to a stable
|
|
89
|
+
// generic name rather than passing OpenAI a string of placeholders.
|
|
90
|
+
const hasRealChars = /[a-zA-Z0-9-]/.test(cleaned);
|
|
91
|
+
return hasRealChars ? cleaned : 'response';
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=openaiResponseFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openaiResponseFormat.js","sourceRoot":"","sources":["../../../src/api/runtime/openaiResponseFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAA+C;IACpF,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,+DAA+D;IAC/D,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,CAAC;AACnF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAa;IAChD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,GAAG,GAA4B,EAAE,GAAG,GAAG,EAAE,CAAC;IAEhD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClF,MAAM,KAAK,GAAG,GAAG,CAAC,UAAqC,CAAC;QACxD,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC1B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxB,GAAG,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACtC,GAAG,CAAC,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mCAAmC,CACjD,UAAmC,EACnC,aAAqB,UAAU;IAE/B,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE;YACX,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC;YACpC,MAAM,EAAE,oBAAoB,CAAC,UAAU,CAAC;YACxC,MAAM,EAAE,IAAI;SACb;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,wEAAwE;IACxE,oEAAoE;IACpE,oEAAoE;IACpE,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file schemaTokenEstimate.ts
|
|
3
|
+
* @description Estimate the output-token budget needed to produce a complete
|
|
4
|
+
* JSON object matching a given Zod schema.
|
|
5
|
+
*
|
|
6
|
+
* Used by `generateObject()` to auto-size `maxTokens` when the caller doesn't
|
|
7
|
+
* pass an explicit value. Without this, complex nested-array schemas (e.g.
|
|
8
|
+
* `z.array(z.object({...}))`) reliably truncate at the provider default of
|
|
9
|
+
* ~256–512 tokens and the resulting JSON fails to parse.
|
|
10
|
+
*
|
|
11
|
+
* Walks the Zod schema directly (not a lowered JSON Schema) so it works on
|
|
12
|
+
* both Zod v3 (`_def.typeName`) and Zod v4 (`_def.type`) without a runtime
|
|
13
|
+
* Zod dependency on a specific version.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Returns the estimated `maxTokens` budget for the given Zod schema.
|
|
17
|
+
*
|
|
18
|
+
* Result is clamped to [{@link MIN_BUDGET}, {@link MAX_BUDGET}]. Callers that
|
|
19
|
+
* need a different budget should pass `opts.maxTokens` explicitly.
|
|
20
|
+
*
|
|
21
|
+
* @param schema - Any Zod schema instance (v3 or v4).
|
|
22
|
+
* @returns A token budget suitable for the provider's `max_tokens`/`max_output_tokens` field.
|
|
23
|
+
*/
|
|
24
|
+
export declare function estimateMaxTokensForZodSchema(schema: unknown): number;
|
|
25
|
+
//# sourceMappingURL=schemaTokenEstimate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaTokenEstimate.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/schemaTokenEstimate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAKrE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file schemaTokenEstimate.ts
|
|
3
|
+
* @description Estimate the output-token budget needed to produce a complete
|
|
4
|
+
* JSON object matching a given Zod schema.
|
|
5
|
+
*
|
|
6
|
+
* Used by `generateObject()` to auto-size `maxTokens` when the caller doesn't
|
|
7
|
+
* pass an explicit value. Without this, complex nested-array schemas (e.g.
|
|
8
|
+
* `z.array(z.object({...}))`) reliably truncate at the provider default of
|
|
9
|
+
* ~256–512 tokens and the resulting JSON fails to parse.
|
|
10
|
+
*
|
|
11
|
+
* Walks the Zod schema directly (not a lowered JSON Schema) so it works on
|
|
12
|
+
* both Zod v3 (`_def.typeName`) and Zod v4 (`_def.type`) without a runtime
|
|
13
|
+
* Zod dependency on a specific version.
|
|
14
|
+
*/
|
|
15
|
+
const TOKENS_PER_LEAF = 30; // average tokens per primitive field
|
|
16
|
+
const TOKENS_PER_ARRAY_ITEM = 60; // assumed per-element budget for typical strings
|
|
17
|
+
const MIN_BUDGET = 512;
|
|
18
|
+
const MAX_BUDGET = 8192;
|
|
19
|
+
const HEADROOM = 1.5; // 50% headroom for prose-heavy fields
|
|
20
|
+
const MAX_DEPTH = 8; // recursion safety on cyclic-ish schemas
|
|
21
|
+
/**
|
|
22
|
+
* Returns the estimated `maxTokens` budget for the given Zod schema.
|
|
23
|
+
*
|
|
24
|
+
* Result is clamped to [{@link MIN_BUDGET}, {@link MAX_BUDGET}]. Callers that
|
|
25
|
+
* need a different budget should pass `opts.maxTokens` explicitly.
|
|
26
|
+
*
|
|
27
|
+
* @param schema - Any Zod schema instance (v3 or v4).
|
|
28
|
+
* @returns A token budget suitable for the provider's `max_tokens`/`max_output_tokens` field.
|
|
29
|
+
*/
|
|
30
|
+
export function estimateMaxTokensForZodSchema(schema) {
|
|
31
|
+
const estimate = Math.ceil(walk(schema, 0) * HEADROOM);
|
|
32
|
+
if (estimate < MIN_BUDGET)
|
|
33
|
+
return MIN_BUDGET;
|
|
34
|
+
if (estimate > MAX_BUDGET)
|
|
35
|
+
return MAX_BUDGET;
|
|
36
|
+
return estimate;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Recursive token estimate for a single Zod node.
|
|
40
|
+
*
|
|
41
|
+
* - `ZodOptional` / `ZodNullable` / `ZodDefault` / `ZodReadonly` / `ZodEffects`
|
|
42
|
+
* are unwrapped (they contribute the inner schema's budget, not their own).
|
|
43
|
+
* - `ZodObject` walks `_def.shape` (a function in v3, a record in v4).
|
|
44
|
+
* - `ZodArray` reads the inner element from `_def.element` (v4) or `_def.type` (v3),
|
|
45
|
+
* and budgets for an assumed item count of 6 (objects) / 8 (primitives).
|
|
46
|
+
* - `ZodEnum` / `ZodNativeEnum` / `ZodLiteral` are bounded by the longest value.
|
|
47
|
+
* - `ZodUnion` / `ZodDiscriminatedUnion` budget for the worst-case branch.
|
|
48
|
+
*/
|
|
49
|
+
function walk(node, depth) {
|
|
50
|
+
if (!node || depth > MAX_DEPTH)
|
|
51
|
+
return TOKENS_PER_LEAF;
|
|
52
|
+
const def = node._def;
|
|
53
|
+
if (!def)
|
|
54
|
+
return TOKENS_PER_LEAF;
|
|
55
|
+
// Zod v3 uses `_def.typeName` ("ZodObject"). Zod v4 uses `_def.type` ("object").
|
|
56
|
+
// Normalize to the v3 form so the switch below has one shape to match against.
|
|
57
|
+
const typeNameV3 = def.typeName;
|
|
58
|
+
const typeV4 = def.type;
|
|
59
|
+
const kind = typeNameV3
|
|
60
|
+
?? (typeV4 ? `Zod${typeV4[0].toUpperCase()}${typeV4.slice(1)}` : '');
|
|
61
|
+
switch (kind) {
|
|
62
|
+
case 'ZodOptional':
|
|
63
|
+
case 'ZodNullable':
|
|
64
|
+
case 'ZodDefault':
|
|
65
|
+
case 'ZodReadonly':
|
|
66
|
+
case 'ZodEffects':
|
|
67
|
+
return walk(def.innerType ?? def.schema, depth + 1);
|
|
68
|
+
case 'ZodObject': {
|
|
69
|
+
// v3: shape is a function returning the shape object.
|
|
70
|
+
// v4: shape is the shape object directly.
|
|
71
|
+
const shapeRaw = def.shape;
|
|
72
|
+
const shape = typeof shapeRaw === 'function'
|
|
73
|
+
? shapeRaw()
|
|
74
|
+
: shapeRaw ?? {};
|
|
75
|
+
let sum = 64; // braces, commas, base structure overhead
|
|
76
|
+
for (const key of Object.keys(shape)) {
|
|
77
|
+
sum += key.length + 8; // field name + JSON syntax
|
|
78
|
+
sum += walk(shape[key], depth + 1);
|
|
79
|
+
}
|
|
80
|
+
return sum;
|
|
81
|
+
}
|
|
82
|
+
case 'ZodArray': {
|
|
83
|
+
// v3 stores element on def.type (a Zod schema), v4 on def.element.
|
|
84
|
+
const inner = (def.element ?? def.type);
|
|
85
|
+
const itemBudget = walk(inner, depth + 1);
|
|
86
|
+
const innerKind = inner?._def?.typeName ?? inner?._def?.type;
|
|
87
|
+
const isObjectItem = innerKind === 'ZodObject' || innerKind === 'object';
|
|
88
|
+
const assumedCount = isObjectItem ? 6 : 8;
|
|
89
|
+
return 24 + assumedCount * Math.max(itemBudget, TOKENS_PER_ARRAY_ITEM);
|
|
90
|
+
}
|
|
91
|
+
case 'ZodEnum':
|
|
92
|
+
case 'ZodNativeEnum': {
|
|
93
|
+
const valuesSrc = def.values ?? Object.values(def.entries ?? {});
|
|
94
|
+
const arr = Array.isArray(valuesSrc) ? valuesSrc : Object.values(valuesSrc);
|
|
95
|
+
return arr.length > 0
|
|
96
|
+
? Math.max(...arr.map((v) => String(v).length)) + 4
|
|
97
|
+
: TOKENS_PER_LEAF;
|
|
98
|
+
}
|
|
99
|
+
case 'ZodLiteral':
|
|
100
|
+
return String(def.value ?? '').length + 4;
|
|
101
|
+
case 'ZodUnion':
|
|
102
|
+
case 'ZodDiscriminatedUnion': {
|
|
103
|
+
const opts = def.options ?? [];
|
|
104
|
+
return opts.length > 0
|
|
105
|
+
? Math.max(...opts.map((o) => walk(o, depth + 1)))
|
|
106
|
+
: TOKENS_PER_LEAF;
|
|
107
|
+
}
|
|
108
|
+
default:
|
|
109
|
+
return TOKENS_PER_LEAF;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=schemaTokenEstimate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaTokenEstimate.js","sourceRoot":"","sources":["../../../src/api/runtime/schemaTokenEstimate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file usageAccumulator.ts
|
|
3
|
+
* @description In-memory usage tally helpers used by the lightweight
|
|
4
|
+
* `agent()` factory. The persisted JSONL ledger is opt-in
|
|
5
|
+
* (`AgentOSUsageLedgerOptions.enabled`); these helpers let `agent.usage()`
|
|
6
|
+
* and `session.usage()` return real numbers in the default case where no
|
|
7
|
+
* ledger is configured.
|
|
8
|
+
*
|
|
9
|
+
* The accumulator is intentionally side-effecting: callers fold each
|
|
10
|
+
* `result.usage` into a running aggregate held by closure scope so reads
|
|
11
|
+
* are O(1). The public read paths in `agent.ts` merge the in-memory tally
|
|
12
|
+
* with the persisted ledger so cross-process history rolls up correctly.
|
|
13
|
+
*/
|
|
14
|
+
import type { AgentOSUsageAggregate } from './usageLedger.js';
|
|
15
|
+
/**
|
|
16
|
+
* Build a zeroed usage aggregate. Pass `sessionId` to seed a per-session tally.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createEmptyUsageAggregate(sessionId?: string): AgentOSUsageAggregate;
|
|
19
|
+
/**
|
|
20
|
+
* Fold a single generation's `TokenUsage` into a running aggregate. Mutates
|
|
21
|
+
* the target. Cost is summed when the source provides it.
|
|
22
|
+
*
|
|
23
|
+
* - Increments `calls` by 1 per fold (one call = one generation).
|
|
24
|
+
* - Recomputes `totalTokens` from `promptTokens + completionTokens` when the
|
|
25
|
+
* source omits the explicit total, matching how providers report partials.
|
|
26
|
+
*/
|
|
27
|
+
export declare function accumulateUsage(target: AgentOSUsageAggregate, usage: {
|
|
28
|
+
promptTokens?: number;
|
|
29
|
+
completionTokens?: number;
|
|
30
|
+
totalTokens?: number;
|
|
31
|
+
costUSD?: number;
|
|
32
|
+
} | undefined): void;
|
|
33
|
+
/**
|
|
34
|
+
* Merge two aggregates field-wise into a fresh object. Used at read time to
|
|
35
|
+
* combine the in-memory tally with the persisted ledger total so callers see
|
|
36
|
+
* one coherent number that includes both this process and prior process runs.
|
|
37
|
+
*/
|
|
38
|
+
export declare function mergeAggregates(a: AgentOSUsageAggregate, b: AgentOSUsageAggregate): AgentOSUsageAggregate;
|
|
39
|
+
//# sourceMappingURL=usageAccumulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usageAccumulator.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/usageAccumulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAUnF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC9G,IAAI,CAWN;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,GAAG,qBAAqB,CAUzG"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a zeroed usage aggregate. Pass `sessionId` to seed a per-session tally.
|
|
3
|
+
*/
|
|
4
|
+
export function createEmptyUsageAggregate(sessionId) {
|
|
5
|
+
return {
|
|
6
|
+
sessionId,
|
|
7
|
+
personaId: undefined,
|
|
8
|
+
promptTokens: 0,
|
|
9
|
+
completionTokens: 0,
|
|
10
|
+
totalTokens: 0,
|
|
11
|
+
costUSD: 0,
|
|
12
|
+
calls: 0,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Fold a single generation's `TokenUsage` into a running aggregate. Mutates
|
|
17
|
+
* the target. Cost is summed when the source provides it.
|
|
18
|
+
*
|
|
19
|
+
* - Increments `calls` by 1 per fold (one call = one generation).
|
|
20
|
+
* - Recomputes `totalTokens` from `promptTokens + completionTokens` when the
|
|
21
|
+
* source omits the explicit total, matching how providers report partials.
|
|
22
|
+
*/
|
|
23
|
+
export function accumulateUsage(target, usage) {
|
|
24
|
+
if (!usage)
|
|
25
|
+
return;
|
|
26
|
+
if (typeof usage.promptTokens === 'number')
|
|
27
|
+
target.promptTokens += usage.promptTokens;
|
|
28
|
+
if (typeof usage.completionTokens === 'number')
|
|
29
|
+
target.completionTokens += usage.completionTokens;
|
|
30
|
+
if (typeof usage.totalTokens === 'number') {
|
|
31
|
+
target.totalTokens += usage.totalTokens;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
target.totalTokens += (usage.promptTokens ?? 0) + (usage.completionTokens ?? 0);
|
|
35
|
+
}
|
|
36
|
+
if (typeof usage.costUSD === 'number')
|
|
37
|
+
target.costUSD = (target.costUSD ?? 0) + usage.costUSD;
|
|
38
|
+
target.calls += 1;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Merge two aggregates field-wise into a fresh object. Used at read time to
|
|
42
|
+
* combine the in-memory tally with the persisted ledger total so callers see
|
|
43
|
+
* one coherent number that includes both this process and prior process runs.
|
|
44
|
+
*/
|
|
45
|
+
export function mergeAggregates(a, b) {
|
|
46
|
+
return {
|
|
47
|
+
sessionId: a.sessionId ?? b.sessionId,
|
|
48
|
+
personaId: a.personaId ?? b.personaId,
|
|
49
|
+
promptTokens: a.promptTokens + b.promptTokens,
|
|
50
|
+
completionTokens: a.completionTokens + b.completionTokens,
|
|
51
|
+
totalTokens: a.totalTokens + b.totalTokens,
|
|
52
|
+
costUSD: (a.costUSD ?? 0) + (b.costUSD ?? 0),
|
|
53
|
+
calls: a.calls + b.calls,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=usageAccumulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usageAccumulator.js","sourceRoot":"","sources":["../../../src/api/runtime/usageAccumulator.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAkB;IAC1D,OAAO;QACL,SAAS;QACT,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;QACnB,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA6B,EAC7B,KAA+G;IAE/G,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QAAE,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC;IACtF,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ;QAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC;IAClG,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9F,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAwB,EAAE,CAAwB;IAChF,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS;QACrC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS;QACrC,YAAY,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;QAC7C,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB;QACzD,WAAW,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;QAC1C,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;QAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;KACzB,CAAC;AACJ,CAAC"}
|