@framers/agentos 0.10.24 → 0.10.25
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/model.d.ts.map +1 -1
- package/dist/api/model.js +5 -1
- package/dist/api/model.js.map +1 -1
- package/dist/api/streamText.d.ts.map +1 -1
- package/dist/api/streamText.js +21 -15
- package/dist/api/streamText.js.map +1 -1
- package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts +202 -68
- package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -1
- package/dist/core/llm/providers/implementations/OpenAIProvider.js +866 -204
- package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -1
- package/dist/core/llm/providers/implementations/openai-response-format-guard.d.ts +17 -0
- package/dist/core/llm/providers/implementations/openai-response-format-guard.d.ts.map +1 -1
- package/dist/core/llm/providers/implementations/openai-response-format-guard.js +31 -0
- package/dist/core/llm/providers/implementations/openai-response-format-guard.js.map +1 -1
- package/dist/core/llm/providers/model-effort.d.ts +7 -0
- package/dist/core/llm/providers/model-effort.d.ts.map +1 -1
- package/dist/core/llm/providers/model-effort.js +16 -2
- package/dist/core/llm/providers/model-effort.js.map +1 -1
- package/package.json +1 -1
|
@@ -127,25 +127,48 @@ export declare function openAiHasLongContextPricing(modelId: string): boolean;
|
|
|
127
127
|
/**
|
|
128
128
|
* Whether OpenAI serves `modelId` only through the Responses API. OpenAI lists
|
|
129
129
|
* the `-pro` tiers, the codex models, `gpt-5.6-cyber` and the deep-research
|
|
130
|
-
* models as Responses-only
|
|
131
|
-
*
|
|
132
|
-
*
|
|
130
|
+
* models as Responses-only; on /v1/chat/completions they fail (gpt-5.3-codex
|
|
131
|
+
* answers 404). OpenAIProvider sends every call to these ids to /v1/responses
|
|
132
|
+
* (see {@link openAiRequiresResponsesApi}).
|
|
133
|
+
*
|
|
134
|
+
* Only OpenAI's own families (`gpt-`, the o-series, `codex-`) qualify. Groq,
|
|
135
|
+
* xAI, Together and Mistral delegate to this class with their own model ids,
|
|
136
|
+
* and an id such as `grok-4-pro` on one of those endpoints is served by its
|
|
137
|
+
* Chat Completions route.
|
|
133
138
|
*
|
|
134
139
|
* @param modelId Provider-side model identifier.
|
|
135
140
|
* @returns `true` when the model has no Chat Completions endpoint.
|
|
136
141
|
*/
|
|
137
142
|
export declare function isOpenAIResponsesOnlyModel(modelId: string): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Whether a call to `modelId` can be served only by `/v1/responses`:
|
|
145
|
+
*
|
|
146
|
+
* - any call to a Responses-only model ({@link isOpenAIResponsesOnlyModel});
|
|
147
|
+
* - a GPT-6 call carrying function tools. Chat Completions does not serve
|
|
148
|
+
* it: `gpt-6-astra` rejects tool calls there with or without a
|
|
149
|
+
* `reasoning_effort` (probed 2026-09-10 and 2026-09-30), the `gpt-6.1-sol` model page lists
|
|
150
|
+
* tool calling on Responses only, and the `gpt-6-sol` / `gpt-6-luna`
|
|
151
|
+
* pages allow chat tool calls only with `reasoning_effort: 'none'`. A
|
|
152
|
+
* 2026-09-30 probe of a GPT-6 tool call with no `reasoning_effort` on
|
|
153
|
+
* /v1/chat/completions returned HTTP 400.
|
|
154
|
+
*
|
|
155
|
+
* {@link shouldRouteToOpenAiResponsesApi} applies this rule to streamed and
|
|
156
|
+
* non-streamed calls alike.
|
|
157
|
+
*
|
|
158
|
+
* @param modelId Provider-side model identifier.
|
|
159
|
+
* @param options The request's tools.
|
|
160
|
+
* @returns `true` when the call has no Chat Completions route.
|
|
161
|
+
*/
|
|
162
|
+
export declare function openAiRequiresResponsesApi(modelId: string, options: Pick<ModelCompletionOptions, 'tools'>): boolean;
|
|
138
163
|
/**
|
|
139
164
|
* ModelInfo capabilities for a GPT-5, GPT-6 or o-series id, limited to what
|
|
140
165
|
* OpenAIProvider can serve.
|
|
141
166
|
*
|
|
142
167
|
* - Responses-only models ({@link isOpenAIResponsesOnlyModel}) list as
|
|
143
|
-
* `chat` only.
|
|
144
|
-
*
|
|
145
|
-
* - GPT-6
|
|
146
|
-
*
|
|
147
|
-
* calls on Chat Completions, and this provider routes a tool call to
|
|
148
|
-
* Responses only when it carries an effort and is not streamed.
|
|
168
|
+
* `chat` only. Tool and streaming support vary from model to model on
|
|
169
|
+
* that tier, and the refresh leaves the Responses-only o-series ids out.
|
|
170
|
+
* - GPT-6 lists `tool_use`: every GPT-6 tool call, streamed or not, goes to
|
|
171
|
+
* `/v1/responses` ({@link openAiRequiresResponsesApi}).
|
|
149
172
|
* - `o1-mini` and `o1-preview` have no function calling or structured
|
|
150
173
|
* outputs. They and `o3-mini` take text only, and every other id takes
|
|
151
174
|
* images (per model input modalities, checked 2026-09-29).
|
|
@@ -180,32 +203,30 @@ export declare function openAiReasoningCapabilities(modelId: string): string[];
|
|
|
180
203
|
*/
|
|
181
204
|
export declare function isOpenAIReasoningModel(modelId: string): boolean;
|
|
182
205
|
/**
|
|
183
|
-
* Whether OpenAI rejects `reasoning_effort` sent
|
|
184
|
-
* the `/v1/chat/completions` endpoint for `modelId`. The GPT-5 family
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* 2026-07-08 when the codegen frontier fallback chain
|
|
188
|
-
* effort:xhigh orchestrator turn to gpt-5.5
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
* param entirely (or routing to `/v1/responses`) is therefore the only viable
|
|
208
|
-
* path, which is exactly what the two call sites below already do.
|
|
206
|
+
* Whether OpenAI rejects `reasoning_effort` sent alongside function tools on
|
|
207
|
+
* the `/v1/chat/completions` endpoint for `modelId`. The GPT-5 family does:
|
|
208
|
+
* "Function tools with reasoning_effort are not supported for gpt-5.5 in
|
|
209
|
+
* /v1/chat/completions. Please use /v1/responses instead." (live-observed
|
|
210
|
+
* 2026-07-08, when the codegen frontier fallback chain sent a tool-carrying,
|
|
211
|
+
* effort:xhigh orchestrator turn to gpt-5.5 and the whole build failed).
|
|
212
|
+
*
|
|
213
|
+
* GPT-6 does as well. Live-probed 2026-09-10 (chat.completions,
|
|
214
|
+
* `gpt-6-astra`, `reasoning_effort: 'xhigh'` and one function tool): HTTP 400
|
|
215
|
+
* `invalid_request_error`, "Function tools with reasoning_effort are not
|
|
216
|
+
* supported for gpt-6-astra in /v1/chat/completions. To use function tools,
|
|
217
|
+
* use /v1/responses or set reasoning_effort to 'none'." The 2026-09-30 probe
|
|
218
|
+
* found that `gpt-6-sol` and `gpt-6-luna` accept `'none'` there while
|
|
219
|
+
* `gpt-6-astra` rejects it, and that a GPT-6 tool call with no
|
|
220
|
+
* `reasoning_effort` also returns 400, so every GPT-6 tool call goes to
|
|
221
|
+
* `/v1/responses` ({@link openAiRequiresResponsesApi}).
|
|
222
|
+
*
|
|
223
|
+
* {@link shouldRouteToOpenAiResponsesApi} sends a GPT-5 tool call that
|
|
224
|
+
* carries an effort to `/v1/responses`, which keeps both the effort and the
|
|
225
|
+
* tools. A call whose message content Responses cannot carry stays on
|
|
226
|
+
* chat/completions, where the chat builder drops `reasoning_effort` so the
|
|
227
|
+
* call succeeds at the model's default depth. The o-series (o1/o3/o4) accepts
|
|
228
|
+
* `reasoning_effort` with tools on chat/completions, so it stays outside this
|
|
229
|
+
* predicate; widen it if a future o-series model enforces the same rule.
|
|
209
230
|
*
|
|
210
231
|
* @param modelId Provider-side model identifier (e.g. `'gpt-5.5'`, `'gpt-6-astra'`).
|
|
211
232
|
*/
|
|
@@ -244,27 +265,43 @@ export declare function isResponsesMappableContent(content: ChatMessage['content
|
|
|
244
265
|
*/
|
|
245
266
|
export declare function flattenResponsesTextContent(content: ChatMessage['content']): string;
|
|
246
267
|
/**
|
|
247
|
-
* Whether
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
+
* Whether the `/v1/responses` builder can carry message `m` without losing
|
|
269
|
+
* content. Text-only content ({@link isResponsesMappableContent}) maps on
|
|
270
|
+
* every role. User and tool messages may also carry image parts: a user turn
|
|
271
|
+
* sends them as `input_image`, and a tool result becomes a
|
|
272
|
+
* `function_call_output` whose output is an `input_text` / `input_image`
|
|
273
|
+
* array (the form OpenAI's function-calling reference gives for it). Any other
|
|
274
|
+
* part, such as audio, a file or an Anthropic `tool_result` block, has no
|
|
275
|
+
* mapping.
|
|
276
|
+
*
|
|
277
|
+
* @param m A request message.
|
|
278
|
+
* @returns `true` when the message maps onto Responses input losslessly.
|
|
279
|
+
*/
|
|
280
|
+
export declare function isResponsesMappableMessage(m: ChatMessage): boolean;
|
|
281
|
+
/**
|
|
282
|
+
* Whether a call goes to `/v1/responses` instead of `/v1/chat/completions`.
|
|
283
|
+
* Streamed and non-streamed calls follow this one rule.
|
|
284
|
+
*
|
|
285
|
+
* - Every call {@link openAiRequiresResponsesApi} names: Responses-only
|
|
286
|
+
* models and GPT-6 tool calls.
|
|
287
|
+
* - A GPT-5 or GPT-6 call that carries function tools and an effort, when
|
|
288
|
+
* every message maps ({@link isResponsesMappableMessage}). Chat
|
|
289
|
+
* Completions rejects `reasoning_effort` alongside function tools for
|
|
290
|
+
* these families ("Function tools with reasoning_effort are not supported
|
|
291
|
+
* ... Please use /v1/responses instead"); Responses keeps both, and a
|
|
292
|
+
* `responseFormat` travels as `text.format`.
|
|
293
|
+
*
|
|
294
|
+
* Content gating goes through {@link isResponsesMappableMessage}, which
|
|
295
|
+
* accepts Anthropic-style cache-marked system blocks (`systemBlocks` reach the
|
|
296
|
+
* provider as an all-text content array) and flattens them without loss. A
|
|
297
|
+
* GPT-5 tool call whose content does not map stays on chat/completions, where
|
|
298
|
+
* the chat builder drops the effort (see
|
|
299
|
+
* {@link openAiRejectsReasoningEffortWithTools}).
|
|
300
|
+
*
|
|
301
|
+
* @param modelId Provider-side model identifier.
|
|
302
|
+
* @param messages The request messages.
|
|
303
|
+
* @param options The request's tools, effort and response format.
|
|
304
|
+
* @returns `true` when the call goes to `/v1/responses`.
|
|
268
305
|
*/
|
|
269
306
|
export declare function shouldRouteToOpenAiResponsesApi(modelId: string, messages: ChatMessage[], options: Pick<ModelCompletionOptions, 'tools' | 'effort' | 'responseFormat'>): boolean;
|
|
270
307
|
export declare class OpenAIProvider implements IProvider {
|
|
@@ -316,6 +353,54 @@ export declare class OpenAIProvider implements IProvider {
|
|
|
316
353
|
generateCompletion(modelId: string, messages: ChatMessage[], options: ModelCompletionOptions): Promise<ModelCompletionResponse>;
|
|
317
354
|
/** @inheritdoc */
|
|
318
355
|
generateCompletionStream(modelId: string, messages: ChatMessage[], options: ModelCompletionOptions): AsyncGenerator<ModelCompletionResponse, void, undefined>;
|
|
356
|
+
/**
|
|
357
|
+
* The terminal chunk a stream yields when the caller's signal aborts it.
|
|
358
|
+
* @private
|
|
359
|
+
*/
|
|
360
|
+
private abortedStreamChunk;
|
|
361
|
+
/**
|
|
362
|
+
* Maps a `/v1/chat/completions` SSE stream onto
|
|
363
|
+
* {@link ModelCompletionResponse} chunks, accumulating streamed tool calls
|
|
364
|
+
* by index. A caller abort ends the stream with the abort chunk.
|
|
365
|
+
* @private
|
|
366
|
+
*/
|
|
367
|
+
private mapChatStream;
|
|
368
|
+
/**
|
|
369
|
+
* Maps a `/v1/responses` SSE stream onto the {@link ModelCompletionResponse}
|
|
370
|
+
* chunks the chat stream produces.
|
|
371
|
+
*
|
|
372
|
+
* - `response.output_text.delta` yields a text chunk.
|
|
373
|
+
* - A `function_call` item yields a tool-call delta with its id and name
|
|
374
|
+
* (`response.output_item.added`), then its argument fragments
|
|
375
|
+
* (`response.function_call_arguments.delta`). Tool-call indexes are
|
|
376
|
+
* dense in order of appearance, so a reasoning item ahead of the calls
|
|
377
|
+
* leaves no gap.
|
|
378
|
+
* - The item's final form (`response.function_call_arguments.done`,
|
|
379
|
+
* `response.output_item.done`) and the terminal response are
|
|
380
|
+
* authoritative. Text, a call id or name, or an argument suffix that the
|
|
381
|
+
* deltas did not carry goes out as one more delta, exactly once, before
|
|
382
|
+
* the final chunk. A consumer that rebuilds the turn from deltas
|
|
383
|
+
* (StreamingReconstructor) and one that reads the final chunk
|
|
384
|
+
* (streamText, GMI) therefore see the same text and calls, including
|
|
385
|
+
* when a proxy strips the delta events.
|
|
386
|
+
* - `response.completed` and `response.incomplete` yield exactly one final
|
|
387
|
+
* chunk with the finish reason, tool calls and usage.
|
|
388
|
+
* - Before any text or tool call has gone out, `response.failed`, an
|
|
389
|
+
* `error` event, and a body that ends or fails to read before a terminal
|
|
390
|
+
* event throw an {@link OpenAIProviderError}, as a failed HTTP request
|
|
391
|
+
* does: the status of a retryable error code
|
|
392
|
+
* ({@link RESPONSES_RETRYABLE_ERROR_STATUS}) or `NETWORK_ERROR` for the
|
|
393
|
+
* cut-off or failed body, and a failed response's billed usage in
|
|
394
|
+
* `details.usage`. Callers can then fail over and meter the attempt.
|
|
395
|
+
* - After output, those failures and a caller abort each yield one final
|
|
396
|
+
* chunk carrying an error instead, so the partial answer stays with the
|
|
397
|
+
* caller.
|
|
398
|
+
*
|
|
399
|
+
* Reasoning summaries, content-part events and refusals carry nothing this
|
|
400
|
+
* mapping surfaces and are skipped.
|
|
401
|
+
* @private
|
|
402
|
+
*/
|
|
403
|
+
private mapResponsesStream;
|
|
319
404
|
/** @inheritdoc */
|
|
320
405
|
generateEmbeddings(modelId: string, texts: string[], options?: ProviderEmbeddingOptions): Promise<ProviderEmbeddingResponse>;
|
|
321
406
|
/** @inheritdoc */
|
|
@@ -357,17 +442,31 @@ export declare class OpenAIProvider implements IProvider {
|
|
|
357
442
|
*/
|
|
358
443
|
private applyCacheAndTierParams;
|
|
359
444
|
/**
|
|
360
|
-
* Build a `/v1/responses` request body for a
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
*
|
|
369
|
-
*
|
|
445
|
+
* Build a `/v1/responses` request body for a call
|
|
446
|
+
* {@link shouldRouteToOpenAiResponsesApi} sends there: a Responses-only
|
|
447
|
+
* model, a GPT-6 tool call, or a GPT-5/GPT-6 tool call that carries an
|
|
448
|
+
* effort.
|
|
449
|
+
*
|
|
450
|
+
* - System, assistant and text-only turns carry flattened text
|
|
451
|
+
* ({@link flattenResponsesTextContent}), so cache-marked `systemBlocks`
|
|
452
|
+
* arrive joined instead of empty. A user turn with images carries
|
|
453
|
+
* `input_text` / `input_image` parts, and a tool result with images
|
|
454
|
+
* becomes a `function_call_output` whose output is that part array.
|
|
455
|
+
* - `tools`, `reasoning` and `text.format` appear only when the call has
|
|
456
|
+
* function tools, an effort the model maps, or an OpenAI-shaped
|
|
457
|
+
* `responseFormat`. `stream: true` marks a streamed call; Responses has
|
|
458
|
+
* no `stream_options.include_usage` and reports usage on the terminal
|
|
459
|
+
* event.
|
|
460
|
+
* - A chat-style `reasoning_effort` in `customModelParams` moves to
|
|
461
|
+
* `reasoning.effort`, because Responses rejects the top-level key.
|
|
462
|
+
*
|
|
370
463
|
* Live-probed 2026-07-08; block-content path live-probed 2026-09-12.
|
|
464
|
+
*
|
|
465
|
+
* @throws {OpenAIProviderError} `RESPONSES_UNMAPPABLE_CONTENT` when a
|
|
466
|
+
* message carries a part Responses cannot represent (audio, a file, an
|
|
467
|
+
* Anthropic `tool_result` block). Only a call with no Chat Completions
|
|
468
|
+
* route reaches here with such content; the error is not retryable, like
|
|
469
|
+
* the 400 or 404 Chat Completions would return for it.
|
|
371
470
|
* @private
|
|
372
471
|
*/
|
|
373
472
|
private buildResponsesPayload;
|
|
@@ -391,6 +490,25 @@ export declare class OpenAIProvider implements IProvider {
|
|
|
391
490
|
* @private
|
|
392
491
|
*/
|
|
393
492
|
private mapResponsesToCompletionResponse;
|
|
493
|
+
/**
|
|
494
|
+
* Logs a `/v1/responses` turn that holds output items but no message and
|
|
495
|
+
* no function call: reasoning-only output. It is returned as an empty turn
|
|
496
|
+
* carrying the real finish reason (`length` when max_output_tokens capped
|
|
497
|
+
* it), so the caller can retry with a larger budget. Reasoning tokens come
|
|
498
|
+
* out of the same output budget as the visible answer, so a reasoning model
|
|
499
|
+
* needs a materially larger maxTokens than a non-reasoning one to leave
|
|
500
|
+
* room for a reply.
|
|
501
|
+
* @private
|
|
502
|
+
*/
|
|
503
|
+
private warnReasoningOnlyOutput;
|
|
504
|
+
/**
|
|
505
|
+
* Token usage and cost for a `/v1/responses` result. The Responses API
|
|
506
|
+
* spells the counts `input_tokens` / `output_tokens` and the cached detail
|
|
507
|
+
* `input_tokens_details`; they are re-keyed to the chat spelling so both
|
|
508
|
+
* endpoints meter through {@link calculateUsage}.
|
|
509
|
+
* @private
|
|
510
|
+
*/
|
|
511
|
+
private mapResponsesUsage;
|
|
394
512
|
/**
|
|
395
513
|
* Maps the raw OpenAI API Chat Completion response to the standard ModelCompletionResponse.
|
|
396
514
|
* @private
|
|
@@ -451,12 +569,28 @@ export declare class OpenAIProvider implements IProvider {
|
|
|
451
569
|
* @param {string} apiKey - The API key to use.
|
|
452
570
|
* @param {Record<string, unknown>} [body] - The request body for POST requests.
|
|
453
571
|
* @param {boolean} [expectStream] - Whether the response is expected to be a stream.
|
|
572
|
+
* @param {number} [requestTimeoutOverride] - Per-call timeout in ms, over the configured default.
|
|
573
|
+
* @param {AbortSignal} [abortSignal] - Caller's signal. It aborts the fetch in flight, and once
|
|
574
|
+
* it has fired no further attempt is sent.
|
|
454
575
|
* @returns {Promise<T | ReadableStream<Uint8Array>>} The API response or stream.
|
|
455
|
-
* @throws {OpenAIProviderError} If the request fails after retries or for non-retryable errors
|
|
576
|
+
* @throws {OpenAIProviderError} If the request fails after retries or for non-retryable errors;
|
|
577
|
+
* `REQUEST_ABORTED` when the caller's signal ends it.
|
|
456
578
|
*/
|
|
457
579
|
private makeApiRequest;
|
|
458
580
|
/**
|
|
459
|
-
*
|
|
581
|
+
* {@link parseSseStream} for the /v1/responses mapper: a read that fails
|
|
582
|
+
* mid-body (parseSseStream's `STREAM_PARSING_ERROR`) ends the stream and is
|
|
583
|
+
* recorded on `reading.failure` instead of propagating, so the mapper
|
|
584
|
+
* handles it like a body cut off before its terminal event.
|
|
585
|
+
* @private
|
|
586
|
+
*/
|
|
587
|
+
private readResponsesSse;
|
|
588
|
+
/**
|
|
589
|
+
* Parses an SSE (Server-Sent Events) stream and yields each `data:` payload.
|
|
590
|
+
*
|
|
591
|
+
* When `abortSignal` fires, the reader is cancelled at once, which settles
|
|
592
|
+
* a read that is waiting on the network, and the generator ends without
|
|
593
|
+
* yielding more; the caller then emits its abort chunk.
|
|
460
594
|
* @private
|
|
461
595
|
*/
|
|
462
596
|
private parseSseStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/implementations/OpenAIProvider.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,SAAS,EACT,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EAEvB,SAAS,EAET,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/implementations/OpenAIProvider.ts"],"names":[],"mappings":"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"}
|