@tanstack/openai-base 0.1.0 → 0.2.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/LICENSE +21 -0
- package/dist/esm/adapters/chat-completions-text.d.ts +2 -2
- package/dist/esm/adapters/chat-completions-text.js +183 -80
- package/dist/esm/adapters/chat-completions-text.js.map +1 -1
- package/dist/esm/adapters/chat-completions-tool-converter.js +3 -1
- package/dist/esm/adapters/chat-completions-tool-converter.js.map +1 -1
- package/dist/esm/adapters/image.js +33 -13
- package/dist/esm/adapters/image.js.map +1 -1
- package/dist/esm/adapters/responses-text.d.ts +4 -5
- package/dist/esm/adapters/responses-text.js +260 -135
- package/dist/esm/adapters/responses-text.js.map +1 -1
- package/dist/esm/adapters/responses-tool-converter.js +3 -1
- package/dist/esm/adapters/responses-tool-converter.js.map +1 -1
- package/dist/esm/adapters/summarize.js +63 -25
- package/dist/esm/adapters/summarize.js.map +1 -1
- package/dist/esm/adapters/transcription.d.ts +0 -5
- package/dist/esm/adapters/transcription.js +53 -61
- package/dist/esm/adapters/transcription.js.map +1 -1
- package/dist/esm/adapters/tts.js +27 -14
- package/dist/esm/adapters/tts.js.map +1 -1
- package/dist/esm/adapters/video.d.ts +24 -0
- package/dist/esm/adapters/video.js +72 -26
- package/dist/esm/adapters/video.js.map +1 -1
- package/dist/esm/index.d.ts +0 -2
- package/dist/esm/index.js +4 -2
- package/dist/esm/tools/apply-patch-tool.d.ts +8 -3
- package/dist/esm/tools/apply-patch-tool.js.map +1 -1
- package/dist/esm/tools/code-interpreter-tool.d.ts +9 -4
- package/dist/esm/tools/code-interpreter-tool.js.map +1 -1
- package/dist/esm/tools/computer-use-tool.d.ts +9 -4
- package/dist/esm/tools/computer-use-tool.js.map +1 -1
- package/dist/esm/tools/custom-tool.d.ts +6 -4
- package/dist/esm/tools/custom-tool.js.map +1 -1
- package/dist/esm/tools/file-search-tool.d.ts +11 -4
- package/dist/esm/tools/file-search-tool.js +3 -2
- package/dist/esm/tools/file-search-tool.js.map +1 -1
- package/dist/esm/tools/function-tool.d.ts +4 -2
- package/dist/esm/tools/function-tool.js.map +1 -1
- package/dist/esm/tools/image-generation-tool.d.ts +16 -5
- package/dist/esm/tools/image-generation-tool.js +4 -3
- package/dist/esm/tools/image-generation-tool.js.map +1 -1
- package/dist/esm/tools/index.d.ts +13 -13
- package/dist/esm/tools/local-shell-tool.d.ts +8 -3
- package/dist/esm/tools/local-shell-tool.js.map +1 -1
- package/dist/esm/tools/mcp-tool.d.ts +10 -5
- package/dist/esm/tools/mcp-tool.js.map +1 -1
- package/dist/esm/tools/shell-tool.d.ts +8 -3
- package/dist/esm/tools/shell-tool.js.map +1 -1
- package/dist/esm/tools/web-search-preview-tool.d.ts +13 -5
- package/dist/esm/tools/web-search-preview-tool.js +2 -3
- package/dist/esm/tools/web-search-preview-tool.js.map +1 -1
- package/dist/esm/tools/web-search-tool.d.ts +14 -5
- package/dist/esm/tools/web-search-tool.js +4 -1
- package/dist/esm/tools/web-search-tool.js.map +1 -1
- package/dist/esm/utils/request-options.d.ts +14 -0
- package/dist/esm/utils/request-options.js +8 -0
- package/dist/esm/utils/request-options.js.map +1 -0
- package/package.json +16 -19
- package/dist/esm/types/message-metadata.d.ts +0 -19
- package/dist/esm/types/provider-options.d.ts +0 -40
|
@@ -5,7 +5,9 @@ function convertFunctionToolToChatCompletionsFormat(tool, schemaConverter = make
|
|
|
5
5
|
properties: {},
|
|
6
6
|
required: []
|
|
7
7
|
};
|
|
8
|
-
const jsonSchema =
|
|
8
|
+
const jsonSchema = {
|
|
9
|
+
...schemaConverter(inputSchema, inputSchema.required || [])
|
|
10
|
+
};
|
|
9
11
|
jsonSchema.additionalProperties = false;
|
|
10
12
|
return {
|
|
11
13
|
type: "function",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-completions-tool-converter.js","sources":["../../../src/adapters/chat-completions-tool-converter.ts"],"sourcesContent":["import { makeStructuredOutputCompatible } from '../utils/schema-converter'\nimport type { JSONSchema, Tool } from '@tanstack/ai'\nimport type OpenAI from 'openai'\n\n/**\n * Chat Completions API tool format.\n * This is distinct from the Responses API tool format.\n */\nexport type ChatCompletionFunctionTool =\n OpenAI.Chat.Completions.ChatCompletionTool\n\n/**\n * Converts a standard Tool to OpenAI Chat Completions ChatCompletionTool format.\n *\n * Tool schemas are already converted to JSON Schema in the ai layer.\n * We apply OpenAI-compatible transformations for strict mode:\n * - All properties in required array\n * - Optional fields made nullable\n * - additionalProperties: false\n *\n * This enables strict mode for all tools automatically.\n */\nexport function convertFunctionToolToChatCompletionsFormat(\n tool: Tool,\n schemaConverter: (\n schema: Record<string, any>,\n required: Array<string>,\n ) => Record<string, any> = makeStructuredOutputCompatible,\n): ChatCompletionFunctionTool {\n const inputSchema = (tool.inputSchema ?? {\n type: 'object',\n properties: {},\n required: [],\n }) as JSONSchema\n\n const jsonSchema = schemaConverter(inputSchema, inputSchema.required || [])
|
|
1
|
+
{"version":3,"file":"chat-completions-tool-converter.js","sources":["../../../src/adapters/chat-completions-tool-converter.ts"],"sourcesContent":["import { makeStructuredOutputCompatible } from '../utils/schema-converter'\nimport type { JSONSchema, Tool } from '@tanstack/ai'\nimport type OpenAI from 'openai'\n\n/**\n * Chat Completions API tool format.\n * This is distinct from the Responses API tool format.\n */\nexport type ChatCompletionFunctionTool =\n OpenAI.Chat.Completions.ChatCompletionTool\n\n/**\n * Converts a standard Tool to OpenAI Chat Completions ChatCompletionTool format.\n *\n * Tool schemas are already converted to JSON Schema in the ai layer.\n * We apply OpenAI-compatible transformations for strict mode:\n * - All properties in required array\n * - Optional fields made nullable\n * - additionalProperties: false\n *\n * This enables strict mode for all tools automatically.\n */\nexport function convertFunctionToolToChatCompletionsFormat(\n tool: Tool,\n schemaConverter: (\n schema: Record<string, any>,\n required: Array<string>,\n ) => Record<string, any> = makeStructuredOutputCompatible,\n): ChatCompletionFunctionTool {\n const inputSchema = (tool.inputSchema ?? {\n type: 'object',\n properties: {},\n required: [],\n }) as JSONSchema\n\n // Shallow-copy the converter's result before mutating: a subclass-supplied\n // schemaConverter has no contract requirement to return a fresh object,\n // and a passthrough `(s) => s` would otherwise have its caller's schema\n // mutated by the `additionalProperties = false` assignment below.\n const jsonSchema = {\n ...schemaConverter(inputSchema, inputSchema.required || []),\n }\n jsonSchema.additionalProperties = false\n\n return {\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema,\n strict: true,\n },\n } satisfies ChatCompletionFunctionTool\n}\n\n/**\n * Converts an array of standard Tools to Chat Completions format.\n * Chat Completions API primarily supports function tools.\n */\nexport function convertToolsToChatCompletionsFormat(\n tools: Array<Tool>,\n schemaConverter?: (\n schema: Record<string, any>,\n required: Array<string>,\n ) => Record<string, any>,\n): Array<ChatCompletionFunctionTool> {\n return tools.map((tool) =>\n convertFunctionToolToChatCompletionsFormat(tool, schemaConverter),\n )\n}\n"],"names":[],"mappings":";AAsBO,SAAS,2CACd,MACA,kBAG2B,gCACC;AAC5B,QAAM,cAAe,KAAK,eAAe;AAAA,IACvC,MAAM;AAAA,IACN,YAAY,CAAA;AAAA,IACZ,UAAU,CAAA;AAAA,EAAC;AAOb,QAAM,aAAa;AAAA,IACjB,GAAG,gBAAgB,aAAa,YAAY,YAAY,CAAA,CAAE;AAAA,EAAA;AAE5D,aAAW,uBAAuB;AAElC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,MACR,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,YAAY;AAAA,MACZ,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;AAMO,SAAS,oCACd,OACA,iBAImC;AACnC,SAAO,MAAM;AAAA,IAAI,CAAC,SAChB,2CAA2C,MAAM,eAAe;AAAA,EAAA;AAEpE;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BaseImageAdapter } from "@tanstack/ai/adapters";
|
|
2
|
+
import { toRunErrorPayload } from "@tanstack/ai/adapter-internals";
|
|
2
3
|
import { generateId } from "@tanstack/ai-utils";
|
|
3
4
|
import { createOpenAICompatibleClient } from "../utils/client.js";
|
|
4
5
|
class OpenAICompatibleImageAdapter extends BaseImageAdapter {
|
|
5
6
|
constructor(config, model, name = "openai-compatible") {
|
|
6
|
-
super({}
|
|
7
|
+
super(model, {});
|
|
7
8
|
this.kind = "image";
|
|
8
9
|
this.name = name;
|
|
9
10
|
this.client = createOpenAICompatibleClient(config);
|
|
@@ -14,11 +15,23 @@ class OpenAICompatibleImageAdapter extends BaseImageAdapter {
|
|
|
14
15
|
this.validateImageSize(model, size);
|
|
15
16
|
this.validateNumberOfImages(model, numberOfImages);
|
|
16
17
|
const request = this.buildRequest(options);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
try {
|
|
19
|
+
options.logger.request(
|
|
20
|
+
`activity=image provider=${this.name} model=${model} n=${request.n ?? 1} size=${request.size ?? "default"}`,
|
|
21
|
+
{ provider: this.name, model }
|
|
22
|
+
);
|
|
23
|
+
const response = await this.client.images.generate({
|
|
24
|
+
...request,
|
|
25
|
+
stream: false
|
|
26
|
+
});
|
|
27
|
+
return this.transformResponse(model, response);
|
|
28
|
+
} catch (error) {
|
|
29
|
+
options.logger.errors(`${this.name}.generateImages fatal`, {
|
|
30
|
+
error: toRunErrorPayload(error, `${this.name}.generateImages failed`),
|
|
31
|
+
source: `${this.name}.generateImages`
|
|
32
|
+
});
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
22
35
|
}
|
|
23
36
|
buildRequest(options) {
|
|
24
37
|
const { model, prompt, numberOfImages, size, modelOptions } = options;
|
|
@@ -31,11 +44,18 @@ class OpenAICompatibleImageAdapter extends BaseImageAdapter {
|
|
|
31
44
|
};
|
|
32
45
|
}
|
|
33
46
|
transformResponse(model, response) {
|
|
34
|
-
const images = (response.data ?? []).
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
47
|
+
const images = (response.data ?? []).flatMap(
|
|
48
|
+
(item) => {
|
|
49
|
+
const revisedPrompt = item.revised_prompt;
|
|
50
|
+
if (item.b64_json) {
|
|
51
|
+
return [{ b64Json: item.b64_json, revisedPrompt }];
|
|
52
|
+
}
|
|
53
|
+
if (item.url) {
|
|
54
|
+
return [{ url: item.url, revisedPrompt }];
|
|
55
|
+
}
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
);
|
|
39
59
|
return {
|
|
40
60
|
id: generateId(this.name),
|
|
41
61
|
model,
|
|
@@ -56,9 +76,9 @@ class OpenAICompatibleImageAdapter extends BaseImageAdapter {
|
|
|
56
76
|
}
|
|
57
77
|
validateNumberOfImages(_model, numberOfImages) {
|
|
58
78
|
if (numberOfImages === void 0) return;
|
|
59
|
-
if (numberOfImages < 1
|
|
79
|
+
if (numberOfImages < 1) {
|
|
60
80
|
throw new Error(
|
|
61
|
-
`Number of images must be
|
|
81
|
+
`Number of images must be at least 1. Requested: ${numberOfImages}`
|
|
62
82
|
);
|
|
63
83
|
}
|
|
64
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sources":["../../../src/adapters/image.ts"],"sourcesContent":["import { BaseImageAdapter } from '@tanstack/ai/adapters'\nimport { generateId } from '@tanstack/ai-utils'\nimport { createOpenAICompatibleClient } from '../utils/client'\nimport type {\n GeneratedImage,\n ImageGenerationOptions,\n ImageGenerationResult,\n} from '@tanstack/ai'\nimport type OpenAI_SDK from 'openai'\nimport type { OpenAICompatibleClientConfig } from '../types/config'\n\n/**\n * OpenAI-Compatible Image Generation Adapter\n *\n * A generalized base class for providers that implement OpenAI-compatible image\n * generation APIs. Providers like OpenAI, Grok, and others can extend this class\n * and only need to:\n * - Set `baseURL` in the config\n * - Lock the generic type parameters to provider-specific types\n * - Override validation or request building methods for provider-specific constraints\n *\n * All methods that validate inputs, build requests, or transform responses are\n * `protected` so subclasses can override them.\n */\nexport class OpenAICompatibleImageAdapter<\n TModel extends string,\n TProviderOptions extends object = Record<string, any>,\n TModelProviderOptionsByName extends Record<string, any> = Record<string, any>,\n TModelSizeByName extends Record<string, string> = Record<string, string>,\n> extends BaseImageAdapter<\n TModel,\n TProviderOptions,\n TModelProviderOptionsByName,\n TModelSizeByName\n> {\n readonly kind = 'image' as const\n readonly name: string\n\n protected client: OpenAI_SDK\n\n constructor(\n config: OpenAICompatibleClientConfig,\n model: TModel,\n name: string = 'openai-compatible',\n ) {\n super({}
|
|
1
|
+
{"version":3,"file":"image.js","sources":["../../../src/adapters/image.ts"],"sourcesContent":["import { BaseImageAdapter } from '@tanstack/ai/adapters'\nimport { toRunErrorPayload } from '@tanstack/ai/adapter-internals'\nimport { generateId } from '@tanstack/ai-utils'\nimport { createOpenAICompatibleClient } from '../utils/client'\nimport type {\n GeneratedImage,\n ImageGenerationOptions,\n ImageGenerationResult,\n} from '@tanstack/ai'\nimport type OpenAI_SDK from 'openai'\nimport type { OpenAICompatibleClientConfig } from '../types/config'\n\n/**\n * OpenAI-Compatible Image Generation Adapter\n *\n * A generalized base class for providers that implement OpenAI-compatible image\n * generation APIs. Providers like OpenAI, Grok, and others can extend this class\n * and only need to:\n * - Set `baseURL` in the config\n * - Lock the generic type parameters to provider-specific types\n * - Override validation or request building methods for provider-specific constraints\n *\n * All methods that validate inputs, build requests, or transform responses are\n * `protected` so subclasses can override them.\n */\nexport class OpenAICompatibleImageAdapter<\n TModel extends string,\n TProviderOptions extends object = Record<string, any>,\n TModelProviderOptionsByName extends Record<string, any> = Record<string, any>,\n TModelSizeByName extends Record<string, string> = Record<string, string>,\n> extends BaseImageAdapter<\n TModel,\n TProviderOptions,\n TModelProviderOptionsByName,\n TModelSizeByName\n> {\n readonly kind = 'image' as const\n readonly name: string\n\n protected client: OpenAI_SDK\n\n constructor(\n config: OpenAICompatibleClientConfig,\n model: TModel,\n name: string = 'openai-compatible',\n ) {\n super(model, {})\n this.name = name\n this.client = createOpenAICompatibleClient(config)\n }\n\n async generateImages(\n options: ImageGenerationOptions<TProviderOptions>,\n ): Promise<ImageGenerationResult> {\n const { model, prompt, numberOfImages, size } = options\n\n // Validate inputs\n this.validatePrompt({ prompt, model })\n this.validateImageSize(model, size)\n this.validateNumberOfImages(model, numberOfImages)\n\n // Build request based on model type\n const request = this.buildRequest(options)\n\n try {\n options.logger.request(\n `activity=image provider=${this.name} model=${model} n=${request.n ?? 1} size=${request.size ?? 'default'}`,\n { provider: this.name, model },\n )\n const response = await this.client.images.generate({\n ...request,\n stream: false,\n })\n\n return this.transformResponse(model, response)\n } catch (error: unknown) {\n // Narrow before logging: raw SDK errors can carry request metadata\n // (including auth headers) which we must never surface to user loggers.\n options.logger.errors(`${this.name}.generateImages fatal`, {\n error: toRunErrorPayload(error, `${this.name}.generateImages failed`),\n source: `${this.name}.generateImages`,\n })\n throw error\n }\n }\n\n protected buildRequest(\n options: ImageGenerationOptions<TProviderOptions>,\n ): OpenAI_SDK.Images.ImageGenerateParams {\n const { model, prompt, numberOfImages, size, modelOptions } = options\n\n return {\n model,\n prompt,\n n: numberOfImages ?? 1,\n size: size as OpenAI_SDK.Images.ImageGenerateParams['size'],\n ...modelOptions,\n }\n }\n\n protected transformResponse(\n model: string,\n response: OpenAI_SDK.Images.ImagesResponse,\n ): ImageGenerationResult {\n const images: Array<GeneratedImage> = (response.data ?? []).flatMap(\n (item): Array<GeneratedImage> => {\n const revisedPrompt = item.revised_prompt\n if (item.b64_json) {\n return [{ b64Json: item.b64_json, revisedPrompt }]\n }\n if (item.url) {\n return [{ url: item.url, revisedPrompt }]\n }\n return []\n },\n )\n\n return {\n id: generateId(this.name),\n model,\n images,\n usage: response.usage\n ? {\n inputTokens: response.usage.input_tokens,\n outputTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n }\n }\n\n protected validatePrompt(options: { prompt: string; model: string }): void {\n if (options.prompt.length === 0) {\n throw new Error('Prompt cannot be empty.')\n }\n }\n\n protected validateImageSize(_model: string, _size: string | undefined): void {\n // Default: no size validation — subclasses can override\n }\n\n protected validateNumberOfImages(\n _model: string,\n numberOfImages: number | undefined,\n ): void {\n if (numberOfImages === undefined) return\n\n // The base adapter only enforces \"must be at least 1\". Per-provider /\n // per-model upper bounds vary widely (some support 4, some 10, some\n // unlimited), so concrete adapter subclasses are expected to override\n // this method with a model-specific cap.\n if (numberOfImages < 1) {\n throw new Error(\n `Number of images must be at least 1. Requested: ${numberOfImages}`,\n )\n }\n }\n}\n"],"names":[],"mappings":";;;;AAyBO,MAAM,qCAKH,iBAKR;AAAA,EAMA,YACE,QACA,OACA,OAAe,qBACf;AACA,UAAM,OAAO,EAAE;AAVjB,SAAS,OAAO;AAWd,SAAK,OAAO;AACZ,SAAK,SAAS,6BAA6B,MAAM;AAAA,EACnD;AAAA,EAEA,MAAM,eACJ,SACgC;AAChC,UAAM,EAAE,OAAO,QAAQ,gBAAgB,SAAS;AAGhD,SAAK,eAAe,EAAE,QAAQ,MAAA,CAAO;AACrC,SAAK,kBAAkB,OAAO,IAAI;AAClC,SAAK,uBAAuB,OAAO,cAAc;AAGjD,UAAM,UAAU,KAAK,aAAa,OAAO;AAEzC,QAAI;AACF,cAAQ,OAAO;AAAA,QACb,2BAA2B,KAAK,IAAI,UAAU,KAAK,MAAM,QAAQ,KAAK,CAAC,SAAS,QAAQ,QAAQ,SAAS;AAAA,QACzG,EAAE,UAAU,KAAK,MAAM,MAAA;AAAA,MAAM;AAE/B,YAAM,WAAW,MAAM,KAAK,OAAO,OAAO,SAAS;AAAA,QACjD,GAAG;AAAA,QACH,QAAQ;AAAA,MAAA,CACT;AAED,aAAO,KAAK,kBAAkB,OAAO,QAAQ;AAAA,IAC/C,SAAS,OAAgB;AAGvB,cAAQ,OAAO,OAAO,GAAG,KAAK,IAAI,yBAAyB;AAAA,QACzD,OAAO,kBAAkB,OAAO,GAAG,KAAK,IAAI,wBAAwB;AAAA,QACpE,QAAQ,GAAG,KAAK,IAAI;AAAA,MAAA,CACrB;AACD,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEU,aACR,SACuC;AACvC,UAAM,EAAE,OAAO,QAAQ,gBAAgB,MAAM,iBAAiB;AAE9D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,GAAG,kBAAkB;AAAA,MACrB;AAAA,MACA,GAAG;AAAA,IAAA;AAAA,EAEP;AAAA,EAEU,kBACR,OACA,UACuB;AACvB,UAAM,UAAiC,SAAS,QAAQ,CAAA,GAAI;AAAA,MAC1D,CAAC,SAAgC;AAC/B,cAAM,gBAAgB,KAAK;AAC3B,YAAI,KAAK,UAAU;AACjB,iBAAO,CAAC,EAAE,SAAS,KAAK,UAAU,eAAe;AAAA,QACnD;AACA,YAAI,KAAK,KAAK;AACZ,iBAAO,CAAC,EAAE,KAAK,KAAK,KAAK,eAAe;AAAA,QAC1C;AACA,eAAO,CAAA;AAAA,MACT;AAAA,IAAA;AAGF,WAAO;AAAA,MACL,IAAI,WAAW,KAAK,IAAI;AAAA,MACxB;AAAA,MACA;AAAA,MACA,OAAO,SAAS,QACZ;AAAA,QACE,aAAa,SAAS,MAAM;AAAA,QAC5B,cAAc,SAAS,MAAM;AAAA,QAC7B,aAAa,SAAS,MAAM;AAAA,MAAA,IAE9B;AAAA,IAAA;AAAA,EAER;AAAA,EAEU,eAAe,SAAkD;AACzE,QAAI,QAAQ,OAAO,WAAW,GAAG;AAC/B,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AAAA,EACF;AAAA,EAEU,kBAAkB,QAAgB,OAAiC;AAAA,EAE7E;AAAA,EAEU,uBACR,QACA,gBACM;AACN,QAAI,mBAAmB,OAAW;AAMlC,QAAI,iBAAiB,GAAG;AACtB,YAAM,IAAI;AAAA,QACR,mDAAmD,cAAc;AAAA,MAAA;AAAA,IAErE;AAAA,EACF;AACF;"}
|
|
@@ -26,7 +26,7 @@ import { OpenAICompatibleClientConfig } from '../types/config.js';
|
|
|
26
26
|
* All methods that build requests or process responses are `protected` so subclasses
|
|
27
27
|
* can override them.
|
|
28
28
|
*/
|
|
29
|
-
export declare class OpenAICompatibleResponsesTextAdapter<TModel extends string, TProviderOptions extends Record<string, any> = Record<string, any>, TInputModalities extends ReadonlyArray<Modality> = ReadonlyArray<Modality>, TMessageMetadata extends DefaultMessageMetadataByModality = DefaultMessageMetadataByModality> extends BaseTextAdapter<TModel, TProviderOptions, TInputModalities, TMessageMetadata> {
|
|
29
|
+
export declare class OpenAICompatibleResponsesTextAdapter<TModel extends string, TProviderOptions extends Record<string, any> = Record<string, any>, TInputModalities extends ReadonlyArray<Modality> = ReadonlyArray<Modality>, TMessageMetadata extends DefaultMessageMetadataByModality = DefaultMessageMetadataByModality, TToolCapabilities extends ReadonlyArray<string> = ReadonlyArray<string>> extends BaseTextAdapter<TModel, TProviderOptions, TInputModalities, TMessageMetadata, TToolCapabilities> {
|
|
30
30
|
readonly kind: "text";
|
|
31
31
|
readonly name: string;
|
|
32
32
|
protected client: OpenAI_SDK;
|
|
@@ -49,7 +49,7 @@ export declare class OpenAICompatibleResponsesTextAdapter<TModel extends string,
|
|
|
49
49
|
* Applies provider-specific transformations for structured output compatibility.
|
|
50
50
|
* Override this in subclasses to handle provider-specific quirks.
|
|
51
51
|
*/
|
|
52
|
-
protected makeStructuredOutputCompatible(schema: Record<string, any>, originalRequired
|
|
52
|
+
protected makeStructuredOutputCompatible(schema: Record<string, any>, originalRequired?: Array<string>): Record<string, any>;
|
|
53
53
|
/**
|
|
54
54
|
* Extract text content from a non-streaming Responses API response.
|
|
55
55
|
* Override this in subclasses for provider-specific response shapes.
|
|
@@ -73,9 +73,8 @@ export declare class OpenAICompatibleResponsesTextAdapter<TModel extends string,
|
|
|
73
73
|
protected processStreamChunks(stream: AsyncIterable<OpenAI_SDK.Responses.ResponseStreamEvent>, toolCallMetadata: Map<string, {
|
|
74
74
|
index: number;
|
|
75
75
|
name: string;
|
|
76
|
-
callId: string;
|
|
77
76
|
started: boolean;
|
|
78
|
-
}>, options: TextOptions
|
|
77
|
+
}>, options: TextOptions<TProviderOptions>, aguiState: {
|
|
79
78
|
runId: string;
|
|
80
79
|
messageId: string;
|
|
81
80
|
timestamp: number;
|
|
@@ -85,7 +84,7 @@ export declare class OpenAICompatibleResponsesTextAdapter<TModel extends string,
|
|
|
85
84
|
* Maps common TextOptions to Responses API request format.
|
|
86
85
|
* Override this in subclasses to add provider-specific options.
|
|
87
86
|
*/
|
|
88
|
-
protected mapOptionsToRequest(options: TextOptions): Omit<OpenAI_SDK.Responses.ResponseCreateParams, 'stream'>;
|
|
87
|
+
protected mapOptionsToRequest(options: TextOptions<TProviderOptions>): Omit<OpenAI_SDK.Responses.ResponseCreateParams, 'stream'>;
|
|
89
88
|
/**
|
|
90
89
|
* Converts ModelMessage[] to Responses API ResponseInput format.
|
|
91
90
|
* Override this in subclasses for provider-specific message format quirks.
|