@strands-agents/sdk 1.0.0-rc.4 → 1.0.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/README.md +8 -15
- package/dist/src/__fixtures__/agent-helpers.d.ts +6 -0
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/agent-helpers.js +3 -1
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
- package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-plugin.js +3 -1
- package/dist/src/__fixtures__/mock-plugin.js.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.d.ts +3 -1
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.js +3 -1
- package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
- package/dist/src/__tests__/mcp.test.js +274 -1
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/a2a/__tests__/events.test.js +2 -0
- package/dist/src/a2a/__tests__/events.test.js.map +1 -1
- package/dist/src/a2a/__tests__/executor.test.js +16 -5
- package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
- package/dist/src/a2a/a2a-agent.d.ts +8 -3
- package/dist/src/a2a/a2a-agent.d.ts.map +1 -1
- package/dist/src/a2a/a2a-agent.js +12 -6
- package/dist/src/a2a/a2a-agent.js.map +1 -1
- package/dist/src/a2a/executor.d.ts +13 -0
- package/dist/src/a2a/executor.d.ts.map +1 -1
- package/dist/src/a2a/executor.js +19 -1
- package/dist/src/a2a/executor.js.map +1 -1
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +23 -0
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.cancel.test.js +1 -1
- package/dist/src/agent/__tests__/agent.cancel.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.concurrent.test.js +488 -0
- package/dist/src/agent/__tests__/agent.concurrent.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.hook.test.js +174 -12
- package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.invocation-state.test.js +219 -0
- package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.js +169 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.test.js +99 -2
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.tracer.test.node.js +39 -0
- package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
- package/dist/src/agent/__tests__/snapshot.test.js +5 -4
- package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
- package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
- package/dist/src/agent/agent-as-tool.js +4 -2
- package/dist/src/agent/agent-as-tool.js.map +1 -1
- package/dist/src/agent/agent.d.ts +75 -1
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +323 -83
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/snapshot.d.ts +2 -2
- package/dist/src/agent/snapshot.d.ts.map +1 -1
- package/dist/src/agent/snapshot.js +8 -2
- package/dist/src/agent/snapshot.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +4 -4
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +2 -2
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +8 -3
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +1 -0
- package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
- package/dist/src/errors.d.ts +11 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +12 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +177 -70
- package/dist/src/hooks/__tests__/events.test.js.map +1 -1
- package/dist/src/hooks/__tests__/registry.test.js +16 -16
- package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +95 -25
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +98 -23
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/index.d.ts +6 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/logging/__tests__/warn-once.test.d.ts +2 -0
- package/dist/src/logging/__tests__/warn-once.test.d.ts.map +1 -0
- package/dist/src/logging/__tests__/warn-once.test.js +30 -0
- package/dist/src/logging/__tests__/warn-once.test.js.map +1 -0
- package/dist/src/logging/warn-once.d.ts +13 -0
- package/dist/src/logging/warn-once.d.ts.map +1 -0
- package/dist/src/logging/warn-once.js +18 -0
- package/dist/src/logging/warn-once.js.map +1 -0
- package/dist/src/mcp.d.ts +20 -1
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +10 -1
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/mime.d.ts +2 -1
- package/dist/src/mime.d.ts.map +1 -1
- package/dist/src/mime.js +1 -0
- package/dist/src/mime.js.map +1 -1
- package/dist/src/models/__tests__/anthropic.test.js +99 -1
- package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +123 -2
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/google.test.js +88 -0
- package/dist/src/models/__tests__/google.test.js.map +1 -1
- package/dist/src/models/__tests__/model.test.js +149 -1
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/anthropic.d.ts +18 -1
- package/dist/src/models/anthropic.d.ts.map +1 -1
- package/dist/src/models/anthropic.js +40 -6
- package/dist/src/models/anthropic.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +12 -1
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +45 -11
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/defaults.d.ts +37 -0
- package/dist/src/models/defaults.d.ts.map +1 -0
- package/dist/src/models/defaults.js +41 -0
- package/dist/src/models/defaults.js.map +1 -0
- package/dist/src/models/google/model.d.ts +14 -1
- package/dist/src/models/google/model.d.ts.map +1 -1
- package/dist/src/models/google/model.js +50 -6
- package/dist/src/models/google/model.js.map +1 -1
- package/dist/src/models/model.d.ts +56 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +120 -0
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/openai/__tests__/chat.test.d.ts +2 -0
- package/dist/src/models/openai/__tests__/chat.test.d.ts.map +1 -0
- package/dist/src/models/{__tests__/openai.test.js → openai/__tests__/chat.test.js} +84 -7
- package/dist/src/models/openai/__tests__/chat.test.js.map +1 -0
- package/dist/src/models/openai/__tests__/responses.test.d.ts +2 -0
- package/dist/src/models/openai/__tests__/responses.test.d.ts.map +1 -0
- package/dist/src/models/openai/__tests__/responses.test.js +668 -0
- package/dist/src/models/openai/__tests__/responses.test.js.map +1 -0
- package/dist/src/models/openai/chat-adapter.d.ts +33 -0
- package/dist/src/models/openai/chat-adapter.d.ts.map +1 -0
- package/dist/src/models/openai/chat-adapter.js +383 -0
- package/dist/src/models/openai/chat-adapter.js.map +1 -0
- package/dist/src/models/openai/errors.d.ts +16 -0
- package/dist/src/models/openai/errors.d.ts.map +1 -0
- package/dist/src/models/openai/errors.js +40 -0
- package/dist/src/models/openai/errors.js.map +1 -0
- package/dist/src/models/openai/formatting.d.ts +18 -0
- package/dist/src/models/openai/formatting.d.ts.map +1 -0
- package/dist/src/models/openai/formatting.js +38 -0
- package/dist/src/models/openai/formatting.js.map +1 -0
- package/dist/src/models/openai/index.d.ts +19 -0
- package/dist/src/models/openai/index.d.ts.map +1 -0
- package/dist/src/models/openai/index.js +18 -0
- package/dist/src/models/openai/index.js.map +1 -0
- package/dist/src/models/openai/model.d.ts +77 -0
- package/dist/src/models/openai/model.d.ts.map +1 -0
- package/dist/src/models/openai/model.js +211 -0
- package/dist/src/models/openai/model.js.map +1 -0
- package/dist/src/models/openai/responses-adapter.d.ts +78 -0
- package/dist/src/models/openai/responses-adapter.d.ts.map +1 -0
- package/dist/src/models/openai/responses-adapter.js +467 -0
- package/dist/src/models/openai/responses-adapter.js.map +1 -0
- package/dist/src/models/openai/types.d.ts +131 -0
- package/dist/src/models/openai/types.d.ts.map +1 -0
- package/dist/src/models/openai/types.js +5 -0
- package/dist/src/models/openai/types.js.map +1 -0
- package/dist/src/multiagent/__tests__/events.test.js +122 -28
- package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +95 -0
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.js +5 -2
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +56 -0
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +1 -0
- package/dist/src/multiagent/events.d.ts +19 -1
- package/dist/src/multiagent/events.d.ts.map +1 -1
- package/dist/src/multiagent/events.js +18 -0
- package/dist/src/multiagent/events.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts +5 -3
- package/dist/src/multiagent/graph.d.ts.map +1 -1
- package/dist/src/multiagent/graph.js +22 -15
- package/dist/src/multiagent/graph.js.map +1 -1
- package/dist/src/multiagent/index.d.ts +1 -1
- package/dist/src/multiagent/index.d.ts.map +1 -1
- package/dist/src/multiagent/multiagent.d.ts +16 -3
- package/dist/src/multiagent/multiagent.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.d.ts +10 -3
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +28 -6
- package/dist/src/multiagent/nodes.js.map +1 -1
- package/dist/src/multiagent/swarm.d.ts +5 -3
- package/dist/src/multiagent/swarm.d.ts.map +1 -1
- package/dist/src/multiagent/swarm.js +22 -16
- package/dist/src/multiagent/swarm.js.map +1 -1
- package/dist/src/plugins/__tests__/registry.test.js +1 -1
- package/dist/src/plugins/__tests__/registry.test.js.map +1 -1
- package/dist/src/plugins/model-plugin.d.ts +20 -0
- package/dist/src/plugins/model-plugin.d.ts.map +1 -0
- package/dist/src/plugins/model-plugin.js +29 -0
- package/dist/src/plugins/model-plugin.js.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.js +13 -11
- package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +9 -0
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/telemetry/__tests__/config.test.js +6 -6
- package/dist/src/telemetry/__tests__/config.test.js.map +1 -1
- package/dist/src/telemetry/__tests__/config.test.node.js +16 -11
- package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
- package/dist/src/telemetry/__tests__/meter.test.js +23 -0
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
- package/dist/src/telemetry/config.d.ts +9 -3
- package/dist/src/telemetry/config.d.ts.map +1 -1
- package/dist/src/telemetry/config.js +44 -69
- package/dist/src/telemetry/config.js.map +1 -1
- package/dist/src/telemetry/meter.d.ts +15 -0
- package/dist/src/telemetry/meter.d.ts.map +1 -1
- package/dist/src/telemetry/meter.js +14 -0
- package/dist/src/telemetry/meter.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +24 -3
- package/dist/src/tools/mcp-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-tool.js +105 -14
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/tool.d.ts +11 -1
- package/dist/src/tools/tool.d.ts.map +1 -1
- package/dist/src/tools/tool.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/agent.test.js +48 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +55 -6
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +22 -6
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/elicitation.d.ts +15 -0
- package/dist/src/types/elicitation.d.ts.map +1 -0
- package/dist/src/types/elicitation.js +2 -0
- package/dist/src/types/elicitation.js.map +1 -0
- package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +37 -33
- package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
- package/dist/src/vended-plugins/skills/agent-skills.d.ts +8 -8
- package/dist/src/vended-plugins/skills/agent-skills.d.ts.map +1 -1
- package/dist/src/vended-plugins/skills/agent-skills.js +5 -5
- package/dist/src/vended-plugins/skills/agent-skills.js.map +1 -1
- package/dist/src/vended-plugins/skills/index.d.ts +5 -5
- package/dist/src/vended-plugins/skills/index.d.ts.map +1 -1
- package/dist/src/vended-plugins/skills/index.js +4 -4
- package/dist/src/vended-plugins/skills/index.js.map +1 -1
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +1 -0
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +1 -0
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +1 -0
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
- package/package.json +28 -26
- package/dist/src/models/__tests__/openai.test.d.ts +0 -2
- package/dist/src/models/__tests__/openai.test.d.ts.map +0 -1
- package/dist/src/models/__tests__/openai.test.js.map +0 -1
- package/dist/src/models/openai.d.ts +0 -312
- package/dist/src/models/openai.d.ts.map +0 -1
- package/dist/src/models/openai.js +0 -789
- package/dist/src/models/openai.js.map +0 -1
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Responses API adapter for the OpenAI model provider.
|
|
3
|
+
*
|
|
4
|
+
* Built-in tool support status:
|
|
5
|
+
* | Tool | Support |
|
|
6
|
+
* |-------------------|----------------------------------------------------------|
|
|
7
|
+
* | web_search | Full: includes URL citations |
|
|
8
|
+
* | file_search | Partial: works but file citation annotations not emitted |
|
|
9
|
+
* | code_interpreter | Partial: works but executed code/stdout not surfaced |
|
|
10
|
+
* | mcp | Partial: works but approval flow not supported |
|
|
11
|
+
* | shell | Partial: container mode only |
|
|
12
|
+
* | image_generation | Not supported |
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
import { encodeBase64 } from '../../types/media.js';
|
|
17
|
+
import { toMimeType } from '../../mime.js';
|
|
18
|
+
import { logger } from '../../logging/logger.js';
|
|
19
|
+
import { MODEL_DEFAULTS } from '../defaults.js';
|
|
20
|
+
import { formatImageDataUrl, warnManagedParams as warnManagedParamsShared } from './formatting.js';
|
|
21
|
+
export const DEFAULT_RESPONSES_MODEL_ID = MODEL_DEFAULTS.openai.modelId;
|
|
22
|
+
const MANAGED_PARAMS = new Set(['model', 'input', 'stream', 'store']);
|
|
23
|
+
/**
|
|
24
|
+
* Logs a warning for each responses-managed key present in `params`.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export function warnManagedParams(params) {
|
|
29
|
+
warnManagedParamsShared(params, MANAGED_PARAMS);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Builds a Responses API streaming request body.
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export function formatResponsesRequest(config, messages, options, stateful) {
|
|
37
|
+
const input = formatResponsesMessages(messages);
|
|
38
|
+
// User `params` are spread first so provider-managed fields (asserted
|
|
39
|
+
// required by `ResponseCreateParamsStreaming` below) always win. The
|
|
40
|
+
// managed-params warning fires at config time to surface the collision.
|
|
41
|
+
const request = {
|
|
42
|
+
...(config.params ?? {}),
|
|
43
|
+
model: config.modelId ?? DEFAULT_RESPONSES_MODEL_ID,
|
|
44
|
+
input,
|
|
45
|
+
stream: true,
|
|
46
|
+
store: stateful,
|
|
47
|
+
};
|
|
48
|
+
if (stateful) {
|
|
49
|
+
const responseId = options?.modelState?.get('responseId');
|
|
50
|
+
if (responseId) {
|
|
51
|
+
request.previous_response_id = responseId;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (options?.systemPrompt !== undefined) {
|
|
55
|
+
if (typeof options.systemPrompt === 'string') {
|
|
56
|
+
request.instructions = options.systemPrompt;
|
|
57
|
+
}
|
|
58
|
+
else if (Array.isArray(options.systemPrompt)) {
|
|
59
|
+
const texts = [];
|
|
60
|
+
for (const block of options.systemPrompt) {
|
|
61
|
+
if (block.type === 'textBlock') {
|
|
62
|
+
texts.push(block.text);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (texts.length > 0) {
|
|
66
|
+
request.instructions = texts.join('');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (options?.toolSpecs && options.toolSpecs.length > 0) {
|
|
71
|
+
const existingTools = request.tools ?? [];
|
|
72
|
+
request.tools = [
|
|
73
|
+
...existingTools,
|
|
74
|
+
...options.toolSpecs.map((spec) => ({
|
|
75
|
+
type: 'function',
|
|
76
|
+
name: spec.name,
|
|
77
|
+
description: spec.description ?? '',
|
|
78
|
+
parameters: (spec.inputSchema ?? {}),
|
|
79
|
+
// `null` defers to the OpenAI server default. The SDK's typed
|
|
80
|
+
// contract requires a value; omitting it (as the Python SDK does)
|
|
81
|
+
// is not an option here.
|
|
82
|
+
strict: null,
|
|
83
|
+
})),
|
|
84
|
+
];
|
|
85
|
+
if (options.toolChoice) {
|
|
86
|
+
if ('auto' in options.toolChoice) {
|
|
87
|
+
request.tool_choice = 'auto';
|
|
88
|
+
}
|
|
89
|
+
else if ('any' in options.toolChoice) {
|
|
90
|
+
request.tool_choice = 'required';
|
|
91
|
+
}
|
|
92
|
+
else if ('tool' in options.toolChoice) {
|
|
93
|
+
request.tool_choice = { type: 'function', name: options.toolChoice.tool.name };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (config.temperature !== undefined)
|
|
98
|
+
request.temperature = config.temperature;
|
|
99
|
+
if (config.maxTokens !== undefined)
|
|
100
|
+
request.max_output_tokens = config.maxTokens;
|
|
101
|
+
if (config.topP !== undefined)
|
|
102
|
+
request.top_p = config.topP;
|
|
103
|
+
return request;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Formats SDK messages into Responses API input items.
|
|
107
|
+
*
|
|
108
|
+
* Per message, content blocks are split into three buckets:
|
|
109
|
+
* - Text/media → grouped in `{ role, content: [...] }`
|
|
110
|
+
* - Tool calls → separate `{ type: 'function_call', ... }` items
|
|
111
|
+
* - Tool results → separate `{ type: 'function_call_output', ... }` items
|
|
112
|
+
*/
|
|
113
|
+
function formatResponsesMessages(messages) {
|
|
114
|
+
const input = [];
|
|
115
|
+
for (const message of messages) {
|
|
116
|
+
const role = message.role === 'assistant' ? 'assistant' : 'user';
|
|
117
|
+
const contentItems = [];
|
|
118
|
+
const toolCallItems = [];
|
|
119
|
+
const toolResultItems = [];
|
|
120
|
+
for (const block of message.content) {
|
|
121
|
+
switch (block.type) {
|
|
122
|
+
case 'textBlock': {
|
|
123
|
+
if (role === 'user') {
|
|
124
|
+
contentItems.push({ type: 'input_text', text: block.text });
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
contentItems.push({ type: 'output_text', text: block.text });
|
|
128
|
+
}
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
case 'imageBlock': {
|
|
132
|
+
const formatted = formatImageInput(block);
|
|
133
|
+
if (formatted)
|
|
134
|
+
contentItems.push(formatted);
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
case 'documentBlock': {
|
|
138
|
+
const formatted = formatDocumentInput(block);
|
|
139
|
+
if (formatted)
|
|
140
|
+
contentItems.push(formatted);
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case 'citationsBlock': {
|
|
144
|
+
const citBlock = block;
|
|
145
|
+
for (const c of citBlock.content) {
|
|
146
|
+
contentItems.push({ type: 'output_text', text: c.text });
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
case 'toolUseBlock': {
|
|
151
|
+
const toolBlock = block;
|
|
152
|
+
const call = {
|
|
153
|
+
type: 'function_call',
|
|
154
|
+
call_id: toolBlock.toolUseId,
|
|
155
|
+
name: toolBlock.name,
|
|
156
|
+
arguments: JSON.stringify(toolBlock.input),
|
|
157
|
+
};
|
|
158
|
+
toolCallItems.push(call);
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case 'toolResultBlock': {
|
|
162
|
+
const resultBlock = block;
|
|
163
|
+
const result = {
|
|
164
|
+
type: 'function_call_output',
|
|
165
|
+
call_id: resultBlock.toolUseId,
|
|
166
|
+
output: formatToolResultOutput(resultBlock),
|
|
167
|
+
};
|
|
168
|
+
toolResultItems.push(result);
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case 'reasoningBlock': {
|
|
172
|
+
logger.warn('block_type=<reasoningBlock> | reasoning content is not yet supported in multi-turn conversations with the responses api');
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
default: {
|
|
176
|
+
logger.warn(`block_type=<${block.type}> | unsupported content type in responses api message formatting | skipping`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Cast is needed because assistant messages here use `output_text` content
|
|
181
|
+
// blocks, which the SDK's input types model as `ResponseOutputMessage` —
|
|
182
|
+
// a response-shaped type that requires `id`/`status`/`annotations`. The API
|
|
183
|
+
// accepts these fields as omitted on input, but the SDK types don't reflect that.
|
|
184
|
+
if (contentItems.length > 0) {
|
|
185
|
+
input.push({
|
|
186
|
+
role,
|
|
187
|
+
content: contentItems,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
input.push(...toolCallItems);
|
|
191
|
+
input.push(...toolResultItems);
|
|
192
|
+
}
|
|
193
|
+
return input;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Builds a Responses API `function_call_output.output` value from a SDK
|
|
197
|
+
* `toolResultBlock`. Returns a plain string for text-only results (joined with
|
|
198
|
+
* newlines) or the content-item array shape when the result carries image or
|
|
199
|
+
* document data.
|
|
200
|
+
*/
|
|
201
|
+
function formatToolResultOutput(resultBlock) {
|
|
202
|
+
const parts = [];
|
|
203
|
+
const texts = [];
|
|
204
|
+
let hasMedia = false;
|
|
205
|
+
for (const c of resultBlock.content) {
|
|
206
|
+
switch (c.type) {
|
|
207
|
+
case 'textBlock':
|
|
208
|
+
texts.push(c.text);
|
|
209
|
+
parts.push({ type: 'input_text', text: c.text });
|
|
210
|
+
break;
|
|
211
|
+
case 'jsonBlock': {
|
|
212
|
+
const jsonBlock = c;
|
|
213
|
+
let text;
|
|
214
|
+
try {
|
|
215
|
+
text = JSON.stringify(jsonBlock.json);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
text = '[JSON serialization error]';
|
|
219
|
+
}
|
|
220
|
+
texts.push(text);
|
|
221
|
+
parts.push({ type: 'input_text', text });
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case 'imageBlock': {
|
|
225
|
+
const url = formatImageDataUrl(c);
|
|
226
|
+
if (url) {
|
|
227
|
+
hasMedia = true;
|
|
228
|
+
parts.push({ type: 'input_image', image_url: url });
|
|
229
|
+
}
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
case 'documentBlock': {
|
|
233
|
+
const docBlock = c;
|
|
234
|
+
if (docBlock.source.type === 'documentSourceBytes') {
|
|
235
|
+
const base64 = encodeBase64(docBlock.source.bytes);
|
|
236
|
+
const mimeType = toMimeType(docBlock.format) || `application/${docBlock.format}`;
|
|
237
|
+
hasMedia = true;
|
|
238
|
+
parts.push({
|
|
239
|
+
type: 'input_file',
|
|
240
|
+
file_data: `data:${mimeType};base64,${base64}`,
|
|
241
|
+
filename: docBlock.name,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
logger.warn(`source_type=<${docBlock.source.type}> | only byte source documents supported in responses api tool results`);
|
|
246
|
+
}
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
default:
|
|
250
|
+
logger.warn(`block_type=<${c.type}> | unsupported tool result content type for responses api`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (hasMedia)
|
|
254
|
+
return parts;
|
|
255
|
+
// Text-only: collapse to a single string to match the API's simpler shape.
|
|
256
|
+
const text = texts.join('\n');
|
|
257
|
+
if (resultBlock.status === 'error') {
|
|
258
|
+
return `[ERROR] ${text}`;
|
|
259
|
+
}
|
|
260
|
+
return text;
|
|
261
|
+
}
|
|
262
|
+
function formatImageInput(imageBlock) {
|
|
263
|
+
const url = formatImageDataUrl(imageBlock);
|
|
264
|
+
if (!url)
|
|
265
|
+
return undefined;
|
|
266
|
+
return { type: 'input_image', image_url: url };
|
|
267
|
+
}
|
|
268
|
+
function formatDocumentInput(docBlock) {
|
|
269
|
+
if (docBlock.source.type === 'documentSourceBytes') {
|
|
270
|
+
const base64 = encodeBase64(docBlock.source.bytes);
|
|
271
|
+
const mimeType = toMimeType(docBlock.format) || `application/${docBlock.format}`;
|
|
272
|
+
return {
|
|
273
|
+
type: 'input_file',
|
|
274
|
+
file_data: `data:${mimeType};base64,${base64}`,
|
|
275
|
+
filename: docBlock.name,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
logger.warn(`source_type=<${docBlock.source.type}> | only byte source documents supported in responses api`);
|
|
279
|
+
return undefined;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Creates fresh stream state for a new Responses API stream.
|
|
283
|
+
*
|
|
284
|
+
* @internal
|
|
285
|
+
*/
|
|
286
|
+
export function createResponsesStreamState() {
|
|
287
|
+
return {
|
|
288
|
+
dataType: null,
|
|
289
|
+
toolCalls: new Map(),
|
|
290
|
+
finalUsage: null,
|
|
291
|
+
stopReason: 'endTurn',
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Maps a single Responses API stream event to zero or more SDK events. Mutates
|
|
296
|
+
* `state` and, when `stateful` is `true`, writes `responseId` into `modelState`.
|
|
297
|
+
*
|
|
298
|
+
* @internal
|
|
299
|
+
*/
|
|
300
|
+
export function mapResponsesEventToSDK(event, state, stateful, modelState) {
|
|
301
|
+
const events = [];
|
|
302
|
+
switch (event.type) {
|
|
303
|
+
case 'response.created': {
|
|
304
|
+
if (stateful && modelState) {
|
|
305
|
+
modelState.set('responseId', event.response.id);
|
|
306
|
+
}
|
|
307
|
+
events.push({ type: 'modelMessageStartEvent', role: 'assistant' });
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
case 'response.output_text.delta': {
|
|
311
|
+
events.push(...switchContent('text', state.dataType));
|
|
312
|
+
state.dataType = 'text';
|
|
313
|
+
events.push({
|
|
314
|
+
type: 'modelContentBlockDeltaEvent',
|
|
315
|
+
delta: { type: 'textDelta', text: event.delta },
|
|
316
|
+
});
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
case 'response.reasoning_text.delta':
|
|
320
|
+
case 'response.reasoning_summary_text.delta': {
|
|
321
|
+
events.push(...switchContent('reasoning', state.dataType));
|
|
322
|
+
state.dataType = 'reasoning';
|
|
323
|
+
events.push({
|
|
324
|
+
type: 'modelContentBlockDeltaEvent',
|
|
325
|
+
delta: { type: 'reasoningContentDelta', text: event.delta },
|
|
326
|
+
});
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
case 'response.output_text.annotation.added': {
|
|
330
|
+
// The SDK types `event.annotation` as `unknown` and doesn't export a
|
|
331
|
+
// named annotation union, so we narrow structurally on the fields we use.
|
|
332
|
+
const annotation = event.annotation;
|
|
333
|
+
if (annotation.type === 'url_citation') {
|
|
334
|
+
// Close the in-flight text block before the citation delta.
|
|
335
|
+
// model.ts finalization picks ONE block kind per open block
|
|
336
|
+
// (citations wins over text), so text + citation in the same
|
|
337
|
+
// block drops the text on stop. Switching here forces a
|
|
338
|
+
// separate CitationsBlock, and the next text delta will open
|
|
339
|
+
// a fresh TextBlock.
|
|
340
|
+
events.push(...switchContent('citations', state.dataType));
|
|
341
|
+
state.dataType = 'citations';
|
|
342
|
+
events.push({
|
|
343
|
+
type: 'modelContentBlockDeltaEvent',
|
|
344
|
+
delta: {
|
|
345
|
+
type: 'citationsDelta',
|
|
346
|
+
citations: [
|
|
347
|
+
{
|
|
348
|
+
location: {
|
|
349
|
+
type: 'web',
|
|
350
|
+
url: annotation.url ?? '',
|
|
351
|
+
},
|
|
352
|
+
source: annotation.url ?? '',
|
|
353
|
+
sourceContent: [],
|
|
354
|
+
title: annotation.title ?? '',
|
|
355
|
+
},
|
|
356
|
+
],
|
|
357
|
+
content: [{ text: annotation.cited_text ?? '' }],
|
|
358
|
+
},
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
logger.warn(`annotation_type=<${annotation.type}> | unsupported annotation type in responses api`);
|
|
363
|
+
}
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
case 'response.output_item.added': {
|
|
367
|
+
if (event.item.type === 'function_call') {
|
|
368
|
+
// `id` is optional in the SDK type but load-bearing here: it keys
|
|
369
|
+
// subsequent argument delta/done events. Skip rather than collapse
|
|
370
|
+
// to an empty string, which would let distinct calls share a key.
|
|
371
|
+
const { id: itemId, call_id: callId, name } = event.item;
|
|
372
|
+
if (!itemId) {
|
|
373
|
+
logger.warn(`call_id=<${callId}> name=<${name}> | function_call event missing item id — skipping`);
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
state.toolCalls.set(itemId, { name, arguments: '', callId, itemId });
|
|
377
|
+
}
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
case 'response.function_call_arguments.delta': {
|
|
381
|
+
const tc = state.toolCalls.get(event.item_id);
|
|
382
|
+
if (tc) {
|
|
383
|
+
tc.arguments += event.delta;
|
|
384
|
+
}
|
|
385
|
+
break;
|
|
386
|
+
}
|
|
387
|
+
case 'response.function_call_arguments.done': {
|
|
388
|
+
const tc = state.toolCalls.get(event.item_id);
|
|
389
|
+
if (tc) {
|
|
390
|
+
tc.arguments = event.arguments;
|
|
391
|
+
}
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
case 'response.incomplete': {
|
|
395
|
+
const resp = event.response;
|
|
396
|
+
if (resp.usage) {
|
|
397
|
+
state.finalUsage = {
|
|
398
|
+
inputTokens: resp.usage.input_tokens,
|
|
399
|
+
outputTokens: resp.usage.output_tokens,
|
|
400
|
+
totalTokens: resp.usage.total_tokens,
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
if (resp.incomplete_details?.reason === 'max_output_tokens') {
|
|
404
|
+
state.stopReason = 'maxTokens';
|
|
405
|
+
}
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
case 'response.completed': {
|
|
409
|
+
const resp = event.response;
|
|
410
|
+
if (resp.usage) {
|
|
411
|
+
state.finalUsage = {
|
|
412
|
+
inputTokens: resp.usage.input_tokens,
|
|
413
|
+
outputTokens: resp.usage.output_tokens,
|
|
414
|
+
totalTokens: resp.usage.total_tokens,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
default:
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
return events;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Emits the terminal events for a Responses API stream: closes any open content
|
|
426
|
+
* block, flushes accumulated tool calls, emits usage metadata, and finishes
|
|
427
|
+
* with `modelMessageStopEvent`.
|
|
428
|
+
*
|
|
429
|
+
* @internal
|
|
430
|
+
*/
|
|
431
|
+
export function finalizeResponsesStream(state) {
|
|
432
|
+
const events = [];
|
|
433
|
+
if (state.dataType !== null) {
|
|
434
|
+
events.push({ type: 'modelContentBlockStopEvent' });
|
|
435
|
+
}
|
|
436
|
+
for (const [, tc] of state.toolCalls) {
|
|
437
|
+
events.push({
|
|
438
|
+
type: 'modelContentBlockStartEvent',
|
|
439
|
+
start: { type: 'toolUseStart', name: tc.name, toolUseId: tc.callId },
|
|
440
|
+
});
|
|
441
|
+
events.push({
|
|
442
|
+
type: 'modelContentBlockDeltaEvent',
|
|
443
|
+
delta: { type: 'toolUseInputDelta', input: tc.arguments },
|
|
444
|
+
});
|
|
445
|
+
events.push({ type: 'modelContentBlockStopEvent' });
|
|
446
|
+
}
|
|
447
|
+
let stopReason = state.stopReason;
|
|
448
|
+
if (state.toolCalls.size > 0) {
|
|
449
|
+
stopReason = 'toolUse';
|
|
450
|
+
}
|
|
451
|
+
if (state.finalUsage) {
|
|
452
|
+
events.push({ type: 'modelMetadataEvent', usage: state.finalUsage });
|
|
453
|
+
}
|
|
454
|
+
events.push({ type: 'modelMessageStopEvent', stopReason });
|
|
455
|
+
return events;
|
|
456
|
+
}
|
|
457
|
+
function switchContent(newType, prevType) {
|
|
458
|
+
const events = [];
|
|
459
|
+
if (newType !== prevType) {
|
|
460
|
+
if (prevType !== null) {
|
|
461
|
+
events.push({ type: 'modelContentBlockStopEvent' });
|
|
462
|
+
}
|
|
463
|
+
events.push({ type: 'modelContentBlockStartEvent' });
|
|
464
|
+
}
|
|
465
|
+
return events;
|
|
466
|
+
}
|
|
467
|
+
//# sourceMappingURL=responses-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-adapter.js","sourceRoot":"","sources":["../../../../src/models/openai/responses-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAI1C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAGlG,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAA;AAEvE,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AAE1F;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA2C;IAC3E,uBAAuB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA6B,EAC7B,QAAmB,EACnB,OAAkC,EAClC,QAAiB;IAEjB,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IAE/C,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,0BAA0B;QACnD,KAAK;QACL,MAAM,EAAE,IAAa;QACrB,KAAK,EAAE,QAAQ;KACiB,CAAA;IAElC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAuB,CAAA;QAC/E,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,oBAAoB,GAAG,UAAU,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QAC7C,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;QACzC,OAAO,CAAC,KAAK,GAAG;YACd,GAAG,aAAa;YAChB,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,UAAmB;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;gBACnC,UAAU,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAA4B;gBAC/D,8DAA8D;gBAC9D,kEAAkE;gBAClE,yBAAyB;gBACzB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;SACJ,CAAA;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACjC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAA;YAC9B,CAAC;iBAAM,IAAI,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvC,OAAO,CAAC,WAAW,GAAG,UAAU,CAAA;YAClC,CAAC;iBAAM,IAAI,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACxC,OAAO,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;IAC9E,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAA;IAChF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAA;IAE1D,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,QAAmB;IAClD,MAAM,KAAK,GAAwB,EAAE,CAAA;IAErC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAA;QAChE,MAAM,YAAY,GAAmC,EAAE,CAAA;QACvD,MAAM,aAAa,GAAwB,EAAE,CAAA;QAC7C,MAAM,eAAe,GAAwB,EAAE,CAAA;QAE/C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;wBACpB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;oBAC7D,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;oBAC9D,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAmB,CAAC,CAAA;oBACvD,IAAI,SAAS;wBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBAC3C,MAAK;gBACP,CAAC;gBAED,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAsB,CAAC,CAAA;oBAC7D,IAAI,SAAS;wBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBAC3C,MAAK;gBACP,CAAC;gBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,QAAQ,GAAG,KAA6C,CAAA;oBAC9D,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACjC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;oBAC1D,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,MAAM,SAAS,GAAG,KAA4D,CAAA;oBAC9E,MAAM,IAAI,GAA6B;wBACrC,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,SAAS,CAAC,SAAS;wBAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;wBACpB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;qBAC3C,CAAA;oBACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACxB,MAAK;gBACP,CAAC;gBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,WAAW,GAAG,KAAwB,CAAA;oBAC5C,MAAM,MAAM,GAAyC;wBACnD,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,WAAW,CAAC,SAAS;wBAC9B,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC;qBAC5C,CAAA;oBACD,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAC5B,MAAK;gBACP,CAAC;gBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,CAAC,IAAI,CACT,yHAAyH,CAC1H,CAAA;oBACD,MAAK;gBACP,CAAC;gBAED,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM,CAAC,IAAI,CACT,eAAe,KAAK,CAAC,IAAI,6EAA6E,CACvG,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,yEAAyE;QACzE,4EAA4E;QAC5E,kFAAkF;QAClF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,OAAO,EAAE,YAAY;aACU,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAA;QAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAA;IAChC,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,WAA4B;IAC1D,MAAM,KAAK,GAAqC,EAAE,CAAA;IAClD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,WAAW;gBACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAClB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,SAAS,GAAG,CAAsB,CAAA;gBACxC,IAAI,IAAY,CAAA;gBAChB,IAAI,CAAC;oBACH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,GAAG,4BAA4B,CAAA;gBACrC,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;gBACxC,MAAK;YACP,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAe,CAAC,CAAA;gBAC/C,IAAI,GAAG,EAAE,CAAC;oBACR,QAAQ,GAAG,IAAI,CAAA;oBACf,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;gBACrD,CAAC;gBACD,MAAK;YACP,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,QAAQ,GAAG,CAAkB,CAAA;gBACnC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBACnD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAA;oBAChF,QAAQ,GAAG,IAAI,CAAA;oBACf,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,QAAQ,QAAQ,WAAW,MAAM,EAAE;wBAC9C,QAAQ,EAAE,QAAQ,CAAC,IAAI;qBACxB,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CACT,gBAAgB,QAAQ,CAAC,MAAM,CAAC,IAAI,wEAAwE,CAC7G,CAAA;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YACD;gBACE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,4DAA4D,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE1B,2EAA2E;IAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,IAAI,WAAW,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACnC,OAAO,WAAW,IAAI,EAAE,CAAA;IAC1B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAsB;IAC9C,MAAM,GAAG,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAuB;IAClD,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAA;QAChF,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,QAAQ,QAAQ,WAAW,MAAM,EAAE;YAC9C,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAA;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,MAAM,CAAC,IAAI,2DAA2D,CAAC,CAAA;IAC5G,OAAO,SAAS,CAAA;AAClB,CAAC;AAgBD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,SAAS;KACtB,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA0B,EAC1B,KAA2B,EAC3B,QAAiB,EACjB,UAAkC;IAElC,MAAM,MAAM,GAAuB,EAAE,CAAA;IAErC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACjD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAoB,EAAE,CAAC,CAAA;YAC3E,MAAK;QACP,CAAC;QAED,KAAK,4BAA4B,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;YACrD,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,6BAA6B;gBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE;aAChD,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QAED,KAAK,+BAA+B,CAAC;QACrC,KAAK,uCAAuC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC1D,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAA;YAC5B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,6BAA6B;gBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE;aAC5D,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QAED,KAAK,uCAAuC,CAAC,CAAC,CAAC;YAC7C,qEAAqE;YACrE,0EAA0E;YAC1E,MAAM,UAAU,GAAG,KAAK,CAAC,UAAiF,CAAA;YAC1G,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACvC,4DAA4D;gBAC5D,4DAA4D;gBAC5D,6DAA6D;gBAC7D,wDAAwD;gBACxD,6DAA6D;gBAC7D,qBAAqB;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAC1D,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE;wBACL,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE;4BACT;gCACE,QAAQ,EAAE;oCACR,IAAI,EAAE,KAAc;oCACpB,GAAG,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE;iCAC1B;gCACD,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE;gCAC5B,aAAa,EAAE,EAAE;gCACjB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;6BAC9B;yBACF;wBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;qBACjD;iBACF,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,UAAU,CAAC,IAAI,kDAAkD,CAAC,CAAA;YACpG,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,4BAA4B,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACxC,kEAAkE;gBAClE,mEAAmE;gBACnE,kEAAkE;gBAClE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;gBACxD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,WAAW,IAAI,oDAAoD,CAAC,CAAA;oBAClG,MAAK;gBACP,CAAC;gBACD,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;YACtE,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,wCAAwC,CAAC,CAAC,CAAC;YAC9C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7C,IAAI,EAAE,EAAE,CAAC;gBACP,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAA;YAC7B,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,uCAAuC,CAAC,CAAC,CAAC;YAC7C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7C,IAAI,EAAE,EAAE,CAAC;gBACP,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;YAChC,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,UAAU,GAAG;oBACjB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;oBACpC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;oBACtC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;iBACrC,CAAA;YACH,CAAC;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,KAAK,mBAAmB,EAAE,CAAC;gBAC5D,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;YAChC,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,UAAU,GAAG;oBACjB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;oBACpC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;oBACtC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;iBACrC,CAAA;YACH,CAAC;YACD,MAAK;QACP,CAAC;QAED;YACE,MAAK;IACT,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAA2B;IACjE,MAAM,MAAM,GAAuB,EAAE,CAAA;IAErC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE;SACrE,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE;SAC1D,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IACjC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC7B,UAAU,GAAG,SAAS,CAAA;IACxB,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC,CAAA;IAE1D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,QAAuB;IAC7D,MAAM,MAAM,GAAuB,EAAE,CAAA;IACrC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the OpenAI model provider.
|
|
3
|
+
*/
|
|
4
|
+
import type OpenAI from 'openai';
|
|
5
|
+
import type { ApiKeySetter } from 'openai/client';
|
|
6
|
+
import type { ClientOptions } from 'openai';
|
|
7
|
+
import type { BaseModelConfig } from '../model.js';
|
|
8
|
+
/**
|
|
9
|
+
* Supported OpenAI API modes.
|
|
10
|
+
* - `'chat'`: Chat Completions API (stateless)
|
|
11
|
+
* - `'responses'`: Responses API (optional server-managed conversation state via `stateful: true`)
|
|
12
|
+
*
|
|
13
|
+
* @see https://platform.openai.com/docs/api-reference/chat
|
|
14
|
+
* @see https://platform.openai.com/docs/api-reference/responses
|
|
15
|
+
*/
|
|
16
|
+
export type OpenAIApi = 'chat' | 'responses';
|
|
17
|
+
/**
|
|
18
|
+
* Fields shared by both Chat Completions and Responses API configurations.
|
|
19
|
+
*/
|
|
20
|
+
interface OpenAIBaseConfig extends BaseModelConfig {
|
|
21
|
+
/**
|
|
22
|
+
* OpenAI model identifier (e.g., `gpt-5.4`, `gpt-5.4-mini`, `gpt-4o`).
|
|
23
|
+
* Defaults depend on the selected `api`.
|
|
24
|
+
*/
|
|
25
|
+
modelId?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Controls randomness in generation.
|
|
28
|
+
*/
|
|
29
|
+
temperature?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Maximum number of tokens to generate in the response.
|
|
32
|
+
*/
|
|
33
|
+
maxTokens?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Controls diversity via nucleus sampling.
|
|
36
|
+
*/
|
|
37
|
+
topP?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Additional parameters passed through to the OpenAI API for forward compatibility.
|
|
40
|
+
*
|
|
41
|
+
* Provider-managed fields cannot be overridden via `params` — use the dedicated
|
|
42
|
+
* config properties instead. A warning is logged at config time if any are present:
|
|
43
|
+
* - Chat Completions: `model`, `messages`, `stream`, `stream_options`
|
|
44
|
+
* - Responses API: `model`, `input`, `stream`, `store`
|
|
45
|
+
*/
|
|
46
|
+
params?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Configuration fields specific to the Chat Completions API.
|
|
50
|
+
*/
|
|
51
|
+
export interface OpenAIChatConfig extends OpenAIBaseConfig {
|
|
52
|
+
/**
|
|
53
|
+
* Reduces repetition of token sequences (-2.0 to 2.0).
|
|
54
|
+
* Chat Completions only.
|
|
55
|
+
*/
|
|
56
|
+
frequencyPenalty?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Encourages the model to talk about new topics (-2.0 to 2.0).
|
|
59
|
+
* Chat Completions only.
|
|
60
|
+
*/
|
|
61
|
+
presencePenalty?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Configuration fields specific to the Responses API.
|
|
65
|
+
*/
|
|
66
|
+
export interface OpenAIResponsesConfig extends OpenAIBaseConfig {
|
|
67
|
+
/**
|
|
68
|
+
* When `true`, the server manages conversation state: the request sets
|
|
69
|
+
* `store: true` and chains turns via `previous_response_id`, the Agent
|
|
70
|
+
* clears its local message history after each invocation, and a
|
|
71
|
+
* `conversationManager` cannot be supplied. Defaults to `false` — the
|
|
72
|
+
* Responses API is used in stateless mode, where the full message history
|
|
73
|
+
* is sent on every turn.
|
|
74
|
+
*/
|
|
75
|
+
stateful?: boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Runtime configuration shape returned by {@link OpenAIModel.getConfig}.
|
|
79
|
+
*
|
|
80
|
+
* Shared fields are required-shaped (still optional as per `BaseModelConfig`), and
|
|
81
|
+
* api-specific fields are optional because this is a merged view — callers cannot
|
|
82
|
+
* narrow on `api` from the returned config.
|
|
83
|
+
*/
|
|
84
|
+
export interface OpenAIModelConfig extends OpenAIBaseConfig {
|
|
85
|
+
frequencyPenalty?: number;
|
|
86
|
+
presencePenalty?: number;
|
|
87
|
+
stateful?: boolean;
|
|
88
|
+
}
|
|
89
|
+
interface OpenAIClientOptions {
|
|
90
|
+
/**
|
|
91
|
+
* OpenAI API key (falls back to `OPENAI_API_KEY` environment variable).
|
|
92
|
+
*
|
|
93
|
+
* Accepts either a static string or an async function that resolves to a string.
|
|
94
|
+
* When a function is provided, it is invoked before each request.
|
|
95
|
+
*/
|
|
96
|
+
apiKey?: string | ApiKeySetter;
|
|
97
|
+
/**
|
|
98
|
+
* Pre-configured OpenAI client instance. If provided, this client will be used
|
|
99
|
+
* instead of creating a new one.
|
|
100
|
+
*/
|
|
101
|
+
client?: OpenAI;
|
|
102
|
+
/**
|
|
103
|
+
* Additional OpenAI client configuration. Only used if `client` is not provided.
|
|
104
|
+
*/
|
|
105
|
+
clientConfig?: ClientOptions;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Options for constructing an {@link OpenAIModel}.
|
|
109
|
+
*
|
|
110
|
+
* Discriminated on `api` so that selecting `'chat'` type-narrows to expose
|
|
111
|
+
* `frequencyPenalty` / `presencePenalty`, and selecting `'responses'` (or
|
|
112
|
+
* omitting `api`) narrows to expose `stateful`.
|
|
113
|
+
*
|
|
114
|
+
* `api` is construction-only: it cannot be changed via {@link OpenAIModel.updateConfig}.
|
|
115
|
+
*/
|
|
116
|
+
export type OpenAIModelOptions = ({
|
|
117
|
+
api?: 'responses';
|
|
118
|
+
} & OpenAIResponsesConfig & OpenAIClientOptions) | ({
|
|
119
|
+
api: 'chat';
|
|
120
|
+
} & OpenAIChatConfig & OpenAIClientOptions);
|
|
121
|
+
/**
|
|
122
|
+
* Internal stream state for the Chat Completions adapter.
|
|
123
|
+
*
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
126
|
+
export interface ChatStreamState {
|
|
127
|
+
messageStarted: boolean;
|
|
128
|
+
textContentBlockStarted: boolean;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/models/openai/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,CAAA;AAE5C;;GAEG;AACH,UAAU,gBAAiB,SAAQ,eAAe;IAChD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,mBAAmB;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;IAE9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAC1B,CAAC;IAAE,GAAG,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,qBAAqB,GAAG,mBAAmB,CAAC,GACrE,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,GAAG,mBAAmB,CAAC,CAAA;AAE9D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,uBAAuB,EAAE,OAAO,CAAA;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/models/openai/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|