@agentick/openai 0.0.1

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.
@@ -0,0 +1,38 @@
1
+ // ============================================================================
2
+ // JSX Component
3
+ // ============================================================================
4
+ import { Model } from "@agentick/core/jsx";
5
+ import { createElement } from "@agentick/core/jsx-runtime";
6
+ import { createOpenAIModel } from "./openai";
7
+ import {} from "./types";
8
+ /**
9
+ * OpenAIModel component for declarative model configuration in JSX.
10
+ *
11
+ * Creates an OpenAI model adapter internally and wraps it in a Model component.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * // Basic usage
16
+ * <OpenAIModel model="gpt-4o" />
17
+ *
18
+ * // With config
19
+ * <OpenAIModel
20
+ * model="gpt-4o"
21
+ * temperature={0.7}
22
+ * maxTokens={1000}
23
+ * />
24
+ *
25
+ * // With custom base URL (e.g., Azure OpenAI)
26
+ * <OpenAIModel
27
+ * model="gpt-4"
28
+ * baseURL="https://my-resource.openai.azure.com"
29
+ * apiKey={process.env.AZURE_OPENAI_KEY}
30
+ * />
31
+ * ```
32
+ */
33
+ export function OpenAIModel(props) {
34
+ const { onMount, onUnmount, ...adapterConfig } = props;
35
+ const adapter = createOpenAIModel(adapterConfig);
36
+ return createElement(Model, { model: adapter, onMount, onUnmount });
37
+ }
38
+ //# sourceMappingURL=openai-model.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-model.jsx","sourceRoot":"","sources":["../src/openai-model.tsx"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EAA4B,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAA4B,MAAM,SAAS,CAAC;AAanD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC;IACvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * OpenAI Adapter
3
+ *
4
+ * Native OpenAI API adapter for use with the engine.
5
+ * Uses createAdapter for minimal boilerplate.
6
+ */
7
+ import { type ClientOptions } from "openai";
8
+ import type { ChatCompletionMessageParam, ChatCompletionTool } from "openai/resources/chat/completions";
9
+ import { type ModelClass } from "@agentick/core/model";
10
+ import { type Message } from "@agentick/shared";
11
+ import { type OpenAIAdapterConfig } from "./types";
12
+ /**
13
+ * Factory function for creating OpenAI model adapter.
14
+ *
15
+ * Returns a ModelClass that can be used both programmatically and as JSX.
16
+ */
17
+ export declare function createOpenAIModel(config?: OpenAIAdapterConfig): ModelClass;
18
+ /**
19
+ * Convenience factory for creating OpenAI model.
20
+ *
21
+ * Returns a ModelClass that can be used as:
22
+ * - JSX component: `<model temperature={0.9}><Agent /></model>`
23
+ * - App config: `createApp(Agent, { model })`
24
+ * - Direct calls: `await model.generate(input)`
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const model = openai({ model: 'gpt-4o' });
29
+ *
30
+ * // As JSX
31
+ * <model><MyAgent /></model>
32
+ *
33
+ * // With createApp
34
+ * const app = createApp(MyAgent, { model });
35
+ * ```
36
+ */
37
+ export declare function openai(config?: OpenAIAdapterConfig): ModelClass;
38
+ export declare function buildClientOptions(config: OpenAIAdapterConfig): ClientOptions;
39
+ /**
40
+ * Convert Message to OpenAI ChatCompletionMessageParam(s)
41
+ */
42
+ export declare function toOpenAIMessages(message: Message): ChatCompletionMessageParam[];
43
+ /**
44
+ * Map tool definition to OpenAI format
45
+ */
46
+ export declare function mapToolDefinition(tool: any): ChatCompletionTool;
47
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EAGV,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAGL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,mBAAmB,EAAmB,MAAM,SAAS,CAAC;AAQpE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,mBAAwB,GAAG,UAAU,CAgV9E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAE/D;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAgB7E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,0BAA0B,EAAE,CA8E/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,kBAAkB,CA+C/D"}
package/dist/openai.js ADDED
@@ -0,0 +1,475 @@
1
+ /**
2
+ * OpenAI Adapter
3
+ *
4
+ * Native OpenAI API adapter for use with the engine.
5
+ * Uses createAdapter for minimal boilerplate.
6
+ */
7
+ import { OpenAI } from "openai";
8
+ import { createAdapter, } from "@agentick/core/model";
9
+ // import { Logger } from "@agentick/core";
10
+ import { normalizeModelInput } from "@agentick/core/utils";
11
+ import { StopReason, AdapterError, } from "@agentick/shared";
12
+ import { STOP_REASON_MAP } from "./types";
13
+ // const logger = Logger.for("OpenAIAdapter");
14
+ // ============================================================================
15
+ // Factory Function
16
+ // ============================================================================
17
+ /**
18
+ * Factory function for creating OpenAI model adapter.
19
+ *
20
+ * Returns a ModelClass that can be used both programmatically and as JSX.
21
+ */
22
+ export function createOpenAIModel(config = {}) {
23
+ const client = config.client ?? new OpenAI(buildClientOptions(config));
24
+ // Stateful tracking of tool call IDs by index (reset per stream)
25
+ // OpenAI only sends the id on the first chunk, subsequent chunks only have index
26
+ let toolCallIdByIndex = new Map();
27
+ return createAdapter({
28
+ metadata: {
29
+ id: "openai",
30
+ provider: "openai",
31
+ model: config.model,
32
+ type: "language",
33
+ capabilities: [
34
+ { stream: true, toolCalls: true, provider: "openai" },
35
+ {
36
+ messageTransformation: (modelId, _provider) => {
37
+ const isGPT4 = modelId.includes("gpt-4") || modelId.includes("o1");
38
+ const supportsDeveloper = isGPT4;
39
+ return {
40
+ preferredRenderer: "markdown",
41
+ roleMapping: {
42
+ event: supportsDeveloper ? "developer" : "user",
43
+ ephemeral: supportsDeveloper ? "developer" : "user",
44
+ },
45
+ delimiters: {
46
+ useDelimiters: !supportsDeveloper,
47
+ event: "[Event]",
48
+ ephemeral: "[Context]",
49
+ },
50
+ ephemeralPosition: "flow",
51
+ };
52
+ },
53
+ },
54
+ ],
55
+ },
56
+ prepareInput: async (input) => {
57
+ const normalizedInput = normalizeModelInput(input, config);
58
+ const messages = [];
59
+ for (const message of normalizedInput.messages) {
60
+ messages.push(...toOpenAIMessages(message));
61
+ }
62
+ const openAITools = normalizedInput.tools.length > 0
63
+ ? normalizedInput.tools.map((tool) => mapToolDefinition(tool.metadata))
64
+ : undefined;
65
+ const baseParams = {
66
+ model: normalizedInput.model,
67
+ messages,
68
+ temperature: normalizedInput.temperature,
69
+ max_tokens: normalizedInput.maxTokens,
70
+ top_p: normalizedInput.topP,
71
+ frequency_penalty: normalizedInput.frequencyPenalty,
72
+ presence_penalty: normalizedInput.presencePenalty,
73
+ stop: normalizedInput.stop,
74
+ tools: openAITools && openAITools.length > 0 ? openAITools : undefined,
75
+ tool_choice: openAITools && openAITools.length > 0 ? "auto" : undefined,
76
+ };
77
+ // Map responseFormat
78
+ if (normalizedInput.responseFormat) {
79
+ const rf = normalizedInput.responseFormat;
80
+ if (rf.type === "text") {
81
+ baseParams.response_format = { type: "text" };
82
+ }
83
+ else if (rf.type === "json") {
84
+ baseParams.response_format = { type: "json_object" };
85
+ }
86
+ else if (rf.type === "json_schema") {
87
+ baseParams.response_format = {
88
+ type: "json_schema",
89
+ json_schema: {
90
+ name: rf.name ?? "response",
91
+ schema: rf.schema,
92
+ strict: true,
93
+ },
94
+ };
95
+ }
96
+ }
97
+ // Clean undefined values
98
+ Object.keys(baseParams).forEach((key) => {
99
+ if (baseParams[key] === undefined) {
100
+ delete baseParams[key];
101
+ }
102
+ });
103
+ // providerOptions.openai spreads AFTER for user override
104
+ if (normalizedInput.providerOptions?.openai) {
105
+ return { ...baseParams, ...normalizedInput.providerOptions.openai };
106
+ }
107
+ return baseParams;
108
+ },
109
+ mapChunk: (chunk) => {
110
+ // Usage-only chunks (no choices) - emit usage event, not message_end
111
+ // OpenAI sends usage in a separate final chunk after finish_reason
112
+ if (!chunk.choices || chunk.choices.length === 0) {
113
+ if (chunk.usage) {
114
+ // Emit usage event (not message_end) to avoid duplicate end events
115
+ return {
116
+ type: "usage",
117
+ usage: {
118
+ inputTokens: chunk.usage.prompt_tokens ?? 0,
119
+ outputTokens: chunk.usage.completion_tokens ?? 0,
120
+ totalTokens: chunk.usage.total_tokens ?? 0,
121
+ },
122
+ };
123
+ }
124
+ return null;
125
+ }
126
+ const choice = chunk.choices[0];
127
+ if (!choice || !choice.delta) {
128
+ return null;
129
+ }
130
+ const delta = choice.delta;
131
+ // Check finish_reason FIRST - the final chunk has both finish_reason and empty content
132
+ if (choice.finish_reason) {
133
+ return {
134
+ type: "message_end",
135
+ stopReason: STOP_REASON_MAP[choice.finish_reason] ?? StopReason.OTHER,
136
+ usage: chunk.usage
137
+ ? {
138
+ inputTokens: chunk.usage.prompt_tokens ?? 0,
139
+ outputTokens: chunk.usage.completion_tokens ?? 0,
140
+ totalTokens: chunk.usage.total_tokens ?? 0,
141
+ }
142
+ : undefined,
143
+ };
144
+ }
145
+ // Text content - only emit if non-empty (empty deltas are noise)
146
+ if (delta.content) {
147
+ return { type: "text", delta: delta.content };
148
+ }
149
+ // Tool calls
150
+ if (delta.tool_calls) {
151
+ for (const toolCall of delta.tool_calls) {
152
+ const index = toolCall.index;
153
+ // Track id by index (OpenAI only sends id on first chunk)
154
+ if (toolCall.id) {
155
+ toolCallIdByIndex.set(index, toolCall.id);
156
+ }
157
+ // Get the tracked id for this tool call
158
+ const id = toolCallIdByIndex.get(index) || "";
159
+ if (toolCall.function) {
160
+ // Tool call start (has name)
161
+ if (toolCall.function.name) {
162
+ return {
163
+ type: "tool_call_start",
164
+ id,
165
+ name: toolCall.function.name,
166
+ };
167
+ }
168
+ // Tool call delta (has arguments)
169
+ if (toolCall.function.arguments) {
170
+ return {
171
+ type: "tool_call_delta",
172
+ id,
173
+ delta: toolCall.function.arguments,
174
+ };
175
+ }
176
+ }
177
+ }
178
+ }
179
+ return null;
180
+ },
181
+ processOutput: async (output) => {
182
+ const choice = output.choices?.[0];
183
+ const openaiMessage = choice?.message;
184
+ if (!openaiMessage) {
185
+ throw new AdapterError("openai", "No message in OpenAI response", "ADAPTER_RESPONSE");
186
+ }
187
+ const content = [];
188
+ if (openaiMessage.content) {
189
+ content.push({ type: "text", text: openaiMessage.content });
190
+ }
191
+ const toolCalls = [];
192
+ if (openaiMessage.tool_calls) {
193
+ for (const toolCall of openaiMessage.tool_calls) {
194
+ if (toolCall.type === "function" && "function" in toolCall) {
195
+ let parsedInput;
196
+ try {
197
+ parsedInput = JSON.parse(toolCall.function.arguments);
198
+ }
199
+ catch {
200
+ parsedInput = toolCall.function.arguments;
201
+ }
202
+ toolCalls.push({
203
+ id: toolCall.id,
204
+ name: toolCall.function.name,
205
+ input: parsedInput,
206
+ });
207
+ content.push({
208
+ type: "tool_use",
209
+ toolUseId: toolCall.id,
210
+ name: toolCall.function.name,
211
+ input: parsedInput,
212
+ });
213
+ }
214
+ }
215
+ }
216
+ const messages = [{ role: "assistant", content }];
217
+ return {
218
+ model: output.model,
219
+ createdAt: output.created.toString(),
220
+ messages,
221
+ get message() {
222
+ return messages.filter((m) => m.role === "assistant").at(-1);
223
+ },
224
+ stopReason: choice?.finish_reason
225
+ ? (STOP_REASON_MAP[choice.finish_reason] ?? StopReason.OTHER)
226
+ : StopReason.UNSPECIFIED,
227
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
228
+ usage: {
229
+ inputTokens: output.usage?.prompt_tokens ?? 0,
230
+ outputTokens: output.usage?.completion_tokens ?? 0,
231
+ totalTokens: output.usage?.total_tokens ?? 0,
232
+ reasoningTokens: 0,
233
+ cachedInputTokens: output.usage?.prompt_tokens_details?.cached_tokens ?? 0,
234
+ },
235
+ raw: output,
236
+ };
237
+ },
238
+ execute: async (params) => {
239
+ return await client.chat.completions.create({
240
+ ...params,
241
+ stream: false,
242
+ });
243
+ },
244
+ executeStream: async function* (params) {
245
+ // Reset tool call tracking for new stream
246
+ toolCallIdByIndex = new Map();
247
+ const stream = await client.chat.completions.create({
248
+ ...params,
249
+ stream: true,
250
+ stream_options: { include_usage: true },
251
+ });
252
+ for await (const chunk of stream) {
253
+ yield chunk;
254
+ }
255
+ },
256
+ reconstructRaw: (accumulated) => {
257
+ // Reconstruct a ChatCompletion-like response from streaming data
258
+ // This allows consumers to treat the streaming response as if it were non-streaming
259
+ const chunks = accumulated.chunks;
260
+ const firstChunk = chunks[0];
261
+ // Map internal stop reason to OpenAI finish_reason
262
+ const finishReason = (() => {
263
+ switch (accumulated.stopReason) {
264
+ case StopReason.STOP:
265
+ return "stop";
266
+ case StopReason.MAX_TOKENS:
267
+ return "length";
268
+ case StopReason.TOOL_USE:
269
+ return "tool_calls";
270
+ case StopReason.CONTENT_FILTER:
271
+ return "content_filter";
272
+ default:
273
+ return "stop";
274
+ }
275
+ })();
276
+ // Build tool_calls array if present
277
+ const toolCalls = accumulated.toolCalls.length > 0
278
+ ? accumulated.toolCalls.map((tc, _index) => ({
279
+ id: tc.id,
280
+ type: "function",
281
+ function: {
282
+ name: tc.name,
283
+ arguments: JSON.stringify(tc.input),
284
+ },
285
+ }))
286
+ : undefined;
287
+ // Reconstruct the ChatCompletion format
288
+ const reconstructed = {
289
+ id: firstChunk?.id || `chatcmpl-${Date.now()}`,
290
+ object: "chat.completion",
291
+ created: firstChunk?.created || Math.floor(Date.now() / 1000),
292
+ model: accumulated.model,
293
+ choices: [
294
+ {
295
+ index: 0,
296
+ message: {
297
+ role: "assistant",
298
+ content: accumulated.text || null,
299
+ refusal: null,
300
+ ...(toolCalls ? { tool_calls: toolCalls } : {}),
301
+ },
302
+ finish_reason: finishReason,
303
+ logprobs: null,
304
+ },
305
+ ],
306
+ usage: {
307
+ prompt_tokens: accumulated.usage.inputTokens,
308
+ completion_tokens: accumulated.usage.outputTokens,
309
+ total_tokens: accumulated.usage.totalTokens,
310
+ },
311
+ };
312
+ return reconstructed;
313
+ },
314
+ });
315
+ }
316
+ /**
317
+ * Convenience factory for creating OpenAI model.
318
+ *
319
+ * Returns a ModelClass that can be used as:
320
+ * - JSX component: `<model temperature={0.9}><Agent /></model>`
321
+ * - App config: `createApp(Agent, { model })`
322
+ * - Direct calls: `await model.generate(input)`
323
+ *
324
+ * @example
325
+ * ```typescript
326
+ * const model = openai({ model: 'gpt-4o' });
327
+ *
328
+ * // As JSX
329
+ * <model><MyAgent /></model>
330
+ *
331
+ * // With createApp
332
+ * const app = createApp(MyAgent, { model });
333
+ * ```
334
+ */
335
+ export function openai(config) {
336
+ return createOpenAIModel(config);
337
+ }
338
+ // ============================================================================
339
+ // Helper Functions
340
+ // ============================================================================
341
+ export function buildClientOptions(config) {
342
+ const options = {
343
+ apiKey: config.apiKey ?? process.env["OPENAI_API_KEY"],
344
+ baseURL: config.baseURL ?? process.env["OPENAI_BASE_URL"],
345
+ organization: config.organization ?? process.env["OPENAI_ORGANIZATION"],
346
+ defaultHeaders: config.headers,
347
+ ...(config.providerOptions?.openai || {}),
348
+ };
349
+ Object.keys(options).forEach((key) => {
350
+ if (options[key] === undefined) {
351
+ delete options[key];
352
+ }
353
+ });
354
+ return options;
355
+ }
356
+ /**
357
+ * Convert Message to OpenAI ChatCompletionMessageParam(s)
358
+ */
359
+ export function toOpenAIMessages(message) {
360
+ const content = [];
361
+ const tool_calls = [];
362
+ const toolResultMessages = [];
363
+ for (const block of message.content) {
364
+ switch (block.type) {
365
+ case "text":
366
+ content.push({ type: "text", text: block.text });
367
+ break;
368
+ case "image":
369
+ if (block.source.type === "url") {
370
+ content.push({
371
+ type: "image_url",
372
+ image_url: { url: block.source.url },
373
+ });
374
+ }
375
+ else if (block.source.type === "base64") {
376
+ content.push({
377
+ type: "image_url",
378
+ image_url: {
379
+ url: `data:${block.source.mimeType};base64,${block.source.data}`,
380
+ },
381
+ });
382
+ }
383
+ break;
384
+ case "tool_use":
385
+ tool_calls.push({
386
+ id: block.toolUseId,
387
+ type: "function",
388
+ function: {
389
+ name: block.name,
390
+ arguments: JSON.stringify(block.input),
391
+ },
392
+ });
393
+ break;
394
+ case "tool_result":
395
+ const resultContent = block.content || [];
396
+ const resultText = resultContent
397
+ .filter((c) => c.type === "text")
398
+ .map((c) => c.text)
399
+ .join("\n");
400
+ toolResultMessages.push({
401
+ role: "tool",
402
+ tool_call_id: block.toolUseId,
403
+ content: resultText || "Done",
404
+ });
405
+ break;
406
+ default:
407
+ const blockText = block.text || JSON.stringify(block, null, 2);
408
+ content.push({ type: "text", text: blockText });
409
+ break;
410
+ }
411
+ }
412
+ if (toolResultMessages.length > 0 && content.length === 0 && tool_calls.length === 0) {
413
+ return toolResultMessages;
414
+ }
415
+ const baseMessage = {
416
+ role: message.role,
417
+ content: content.length > 0 ? content : null,
418
+ };
419
+ if (tool_calls.length > 0) {
420
+ baseMessage.tool_calls = tool_calls;
421
+ }
422
+ const result = [baseMessage];
423
+ if (toolResultMessages.length > 0) {
424
+ result.push(...toolResultMessages);
425
+ }
426
+ return result;
427
+ }
428
+ /**
429
+ * Map tool definition to OpenAI format
430
+ */
431
+ export function mapToolDefinition(tool) {
432
+ if (typeof tool === "string") {
433
+ return {
434
+ type: "function",
435
+ function: {
436
+ name: tool,
437
+ description: "",
438
+ parameters: {},
439
+ },
440
+ };
441
+ }
442
+ if ("name" in tool && "input" in tool) {
443
+ const toolDef = tool;
444
+ const baseTool = {
445
+ type: "function",
446
+ function: {
447
+ name: toolDef.name,
448
+ description: toolDef.description || "",
449
+ parameters: toolDef.input || {},
450
+ },
451
+ };
452
+ if (toolDef.providerOptions?.openai) {
453
+ const openAIConfig = toolDef.providerOptions.openai;
454
+ return {
455
+ ...baseTool,
456
+ ...openAIConfig,
457
+ function: {
458
+ ...baseTool.function,
459
+ ...(openAIConfig.function || {}),
460
+ },
461
+ };
462
+ }
463
+ return baseTool;
464
+ }
465
+ const metadata = tool.metadata || tool;
466
+ return {
467
+ type: "function",
468
+ function: {
469
+ name: metadata?.id || metadata?.name || "unknown",
470
+ description: metadata?.description || "",
471
+ parameters: metadata?.inputSchema || {},
472
+ },
473
+ };
474
+ }
475
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { OpenAI } from "openai";
2
+ import { type ClientOptions } from "openai";
3
+ import { type ProviderClientOptions } from "@agentick/core";
4
+ import { StopReason } from "@agentick/shared";
5
+ /**
6
+ * OpenAI adapter configuration.
7
+ * Used when creating the OpenAI adapter instance.
8
+ */
9
+ export interface OpenAIAdapterConfig extends ClientOptions {
10
+ model?: string;
11
+ apiKey?: string;
12
+ baseURL?: string;
13
+ organization?: string;
14
+ project?: string;
15
+ headers?: Record<string, string>;
16
+ timeout?: number;
17
+ maxRetries?: number;
18
+ client?: OpenAI;
19
+ providerOptions?: ProviderClientOptions;
20
+ [key: string]: unknown;
21
+ }
22
+ /**
23
+ * OpenAI-specific generation options.
24
+ * Used for chat completion calls and other operations.
25
+ * Extends OpenAI's ChatCompletionCreateParams to allow provider-specific overrides.
26
+ */
27
+ export type OpenAIGenerationOptions = Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams> & {
28
+ [key: string]: unknown;
29
+ };
30
+ /**
31
+ * OpenAI-specific tool options.
32
+ * Can override or extend the base OpenAI tool definition.
33
+ */
34
+ export interface OpenAIToolOptions {
35
+ type?: "function" | "code_interpreter" | "file_search";
36
+ function?: {
37
+ name?: string;
38
+ description?: string;
39
+ parameters?: Record<string, unknown>;
40
+ [key: string]: unknown;
41
+ };
42
+ [key: string]: unknown;
43
+ }
44
+ /**
45
+ * Module augmentation: Extend provider option interfaces to include OpenAI-specific options.
46
+ */
47
+ declare module "@agentick/core" {
48
+ interface ProviderClientOptions {
49
+ openai?: OpenAIAdapterConfig;
50
+ }
51
+ interface ProviderGenerationOptions {
52
+ openai?: OpenAIGenerationOptions;
53
+ }
54
+ interface ProviderToolOptions {
55
+ openai?: OpenAIToolOptions;
56
+ }
57
+ }
58
+ export declare const STOP_REASON_MAP: Record<string, StopReason>;
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GACjC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,GAAG;IAC5D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEJ;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,UAAU,GAAG,kBAAkB,GAAG,aAAa,CAAC;IACvD,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,qBAAqB;QAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;KAC9B;IAED,UAAU,yBAAyB;QACjC,MAAM,CAAC,EAAE,uBAAuB,CAAC;KAClC;IAED,UAAU,mBAAmB;QAC3B,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAC5B;CACF;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAMtD,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,11 @@
1
+ import {} from "openai";
2
+ import {} from "@agentick/core";
3
+ import { StopReason } from "@agentick/shared";
4
+ export const STOP_REASON_MAP = {
5
+ stop: StopReason.STOP,
6
+ length: StopReason.MAX_TOKENS,
7
+ content_filter: StopReason.CONTENT_FILTER,
8
+ tool_calls: StopReason.TOOL_USE,
9
+ function_call: StopReason.FUNCTION_CALL,
10
+ };
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAA8B,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8D9C,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,MAAM,EAAE,UAAU,CAAC,UAAU;IAC7B,cAAc,EAAE,UAAU,CAAC,cAAc;IACzC,UAAU,EAAE,UAAU,CAAC,QAAQ;IAC/B,aAAa,EAAE,UAAU,CAAC,aAAa;CACxC,CAAC"}