@strands-agents/sdk 1.0.0-rc.5 → 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.
Files changed (250) hide show
  1. package/LICENSE +175 -0
  2. package/README.md +340 -0
  3. package/dist/src/__fixtures__/agent-helpers.d.ts +6 -0
  4. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  5. package/dist/src/__fixtures__/agent-helpers.js +3 -1
  6. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  7. package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/mock-plugin.js +3 -1
  9. package/dist/src/__fixtures__/mock-plugin.js.map +1 -1
  10. package/dist/src/__fixtures__/tool-helpers.d.ts +3 -1
  11. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  12. package/dist/src/__fixtures__/tool-helpers.js +3 -1
  13. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  14. package/dist/src/__tests__/mcp.test.js +222 -2
  15. package/dist/src/__tests__/mcp.test.js.map +1 -1
  16. package/dist/src/a2a/__tests__/events.test.js +2 -0
  17. package/dist/src/a2a/__tests__/events.test.js.map +1 -1
  18. package/dist/src/a2a/__tests__/executor.test.js +16 -5
  19. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  20. package/dist/src/a2a/a2a-agent.d.ts +8 -3
  21. package/dist/src/a2a/a2a-agent.d.ts.map +1 -1
  22. package/dist/src/a2a/a2a-agent.js +12 -6
  23. package/dist/src/a2a/a2a-agent.js.map +1 -1
  24. package/dist/src/a2a/executor.d.ts +13 -0
  25. package/dist/src/a2a/executor.d.ts.map +1 -1
  26. package/dist/src/a2a/executor.js +19 -1
  27. package/dist/src/a2a/executor.js.map +1 -1
  28. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +2 -0
  29. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +1 -0
  30. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +23 -0
  31. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +1 -0
  32. package/dist/src/agent/__tests__/agent.cancel.test.js +1 -1
  33. package/dist/src/agent/__tests__/agent.cancel.test.js.map +1 -1
  34. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +2 -0
  35. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +1 -0
  36. package/dist/src/agent/__tests__/agent.concurrent.test.js +488 -0
  37. package/dist/src/agent/__tests__/agent.concurrent.test.js.map +1 -0
  38. package/dist/src/agent/__tests__/agent.hook.test.js +174 -12
  39. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  40. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +2 -0
  41. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +1 -0
  42. package/dist/src/agent/__tests__/agent.invocation-state.test.js +219 -0
  43. package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +1 -0
  44. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +2 -0
  45. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +1 -0
  46. package/dist/src/agent/__tests__/agent.stateful-model.test.js +169 -0
  47. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -0
  48. package/dist/src/agent/__tests__/agent.test.js +99 -2
  49. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  50. package/dist/src/agent/__tests__/agent.tracer.test.node.js +39 -0
  51. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  52. package/dist/src/agent/__tests__/snapshot.test.js +5 -4
  53. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  54. package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
  55. package/dist/src/agent/agent-as-tool.js +4 -2
  56. package/dist/src/agent/agent-as-tool.js.map +1 -1
  57. package/dist/src/agent/agent.d.ts +75 -1
  58. package/dist/src/agent/agent.d.ts.map +1 -1
  59. package/dist/src/agent/agent.js +323 -83
  60. package/dist/src/agent/agent.js.map +1 -1
  61. package/dist/src/agent/snapshot.d.ts +2 -2
  62. package/dist/src/agent/snapshot.d.ts.map +1 -1
  63. package/dist/src/agent/snapshot.js +8 -2
  64. package/dist/src/agent/snapshot.js.map +1 -1
  65. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +4 -4
  66. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
  67. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +2 -2
  68. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
  69. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +8 -3
  70. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  71. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +1 -0
  72. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  73. package/dist/src/errors.d.ts +11 -0
  74. package/dist/src/errors.d.ts.map +1 -1
  75. package/dist/src/errors.js +12 -0
  76. package/dist/src/errors.js.map +1 -1
  77. package/dist/src/hooks/__tests__/events.test.js +177 -70
  78. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  79. package/dist/src/hooks/__tests__/registry.test.js +16 -16
  80. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  81. package/dist/src/hooks/events.d.ts +95 -25
  82. package/dist/src/hooks/events.d.ts.map +1 -1
  83. package/dist/src/hooks/events.js +98 -23
  84. package/dist/src/hooks/events.js.map +1 -1
  85. package/dist/src/index.d.ts +5 -4
  86. package/dist/src/index.d.ts.map +1 -1
  87. package/dist/src/index.js.map +1 -1
  88. package/dist/src/logging/__tests__/warn-once.test.d.ts +2 -0
  89. package/dist/src/logging/__tests__/warn-once.test.d.ts.map +1 -0
  90. package/dist/src/logging/__tests__/warn-once.test.js +30 -0
  91. package/dist/src/logging/__tests__/warn-once.test.js.map +1 -0
  92. package/dist/src/logging/warn-once.d.ts +13 -0
  93. package/dist/src/logging/warn-once.d.ts.map +1 -0
  94. package/dist/src/logging/warn-once.js +18 -0
  95. package/dist/src/logging/warn-once.js.map +1 -0
  96. package/dist/src/mcp.d.ts +20 -1
  97. package/dist/src/mcp.d.ts.map +1 -1
  98. package/dist/src/mcp.js +10 -1
  99. package/dist/src/mcp.js.map +1 -1
  100. package/dist/src/mime.d.ts +2 -1
  101. package/dist/src/mime.d.ts.map +1 -1
  102. package/dist/src/mime.js +1 -0
  103. package/dist/src/mime.js.map +1 -1
  104. package/dist/src/models/__tests__/anthropic.test.js +92 -3
  105. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  106. package/dist/src/models/__tests__/bedrock.test.js +113 -2
  107. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  108. package/dist/src/models/__tests__/google.test.js +77 -0
  109. package/dist/src/models/__tests__/google.test.js.map +1 -1
  110. package/dist/src/models/__tests__/model.test.js +149 -1
  111. package/dist/src/models/__tests__/model.test.js.map +1 -1
  112. package/dist/src/models/anthropic.d.ts +12 -1
  113. package/dist/src/models/anthropic.d.ts.map +1 -1
  114. package/dist/src/models/anthropic.js +38 -6
  115. package/dist/src/models/anthropic.js.map +1 -1
  116. package/dist/src/models/bedrock.d.ts +12 -1
  117. package/dist/src/models/bedrock.d.ts.map +1 -1
  118. package/dist/src/models/bedrock.js +45 -11
  119. package/dist/src/models/bedrock.js.map +1 -1
  120. package/dist/src/models/defaults.d.ts +37 -0
  121. package/dist/src/models/defaults.d.ts.map +1 -0
  122. package/dist/src/models/defaults.js +41 -0
  123. package/dist/src/models/defaults.js.map +1 -0
  124. package/dist/src/models/google/model.d.ts +14 -1
  125. package/dist/src/models/google/model.d.ts.map +1 -1
  126. package/dist/src/models/google/model.js +50 -6
  127. package/dist/src/models/google/model.js.map +1 -1
  128. package/dist/src/models/model.d.ts +50 -0
  129. package/dist/src/models/model.d.ts.map +1 -1
  130. package/dist/src/models/model.js +120 -0
  131. package/dist/src/models/model.js.map +1 -1
  132. package/dist/src/models/openai/__tests__/chat.test.d.ts +2 -0
  133. package/dist/src/models/openai/__tests__/chat.test.d.ts.map +1 -0
  134. package/dist/src/models/{__tests__/openai.test.js → openai/__tests__/chat.test.js} +72 -7
  135. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -0
  136. package/dist/src/models/openai/__tests__/responses.test.d.ts +2 -0
  137. package/dist/src/models/openai/__tests__/responses.test.d.ts.map +1 -0
  138. package/dist/src/models/openai/__tests__/responses.test.js +668 -0
  139. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -0
  140. package/dist/src/models/openai/chat-adapter.d.ts +33 -0
  141. package/dist/src/models/openai/chat-adapter.d.ts.map +1 -0
  142. package/dist/src/models/openai/chat-adapter.js +383 -0
  143. package/dist/src/models/openai/chat-adapter.js.map +1 -0
  144. package/dist/src/models/openai/errors.d.ts +16 -0
  145. package/dist/src/models/openai/errors.d.ts.map +1 -0
  146. package/dist/src/models/openai/errors.js +40 -0
  147. package/dist/src/models/openai/errors.js.map +1 -0
  148. package/dist/src/models/openai/formatting.d.ts +18 -0
  149. package/dist/src/models/openai/formatting.d.ts.map +1 -0
  150. package/dist/src/models/openai/formatting.js +38 -0
  151. package/dist/src/models/openai/formatting.js.map +1 -0
  152. package/dist/src/models/openai/index.d.ts +19 -0
  153. package/dist/src/models/openai/index.d.ts.map +1 -0
  154. package/dist/src/models/openai/index.js +18 -0
  155. package/dist/src/models/openai/index.js.map +1 -0
  156. package/dist/src/models/openai/model.d.ts +77 -0
  157. package/dist/src/models/openai/model.d.ts.map +1 -0
  158. package/dist/src/models/openai/model.js +211 -0
  159. package/dist/src/models/openai/model.js.map +1 -0
  160. package/dist/src/models/openai/responses-adapter.d.ts +78 -0
  161. package/dist/src/models/openai/responses-adapter.d.ts.map +1 -0
  162. package/dist/src/models/openai/responses-adapter.js +467 -0
  163. package/dist/src/models/openai/responses-adapter.js.map +1 -0
  164. package/dist/src/models/openai/types.d.ts +131 -0
  165. package/dist/src/models/openai/types.d.ts.map +1 -0
  166. package/dist/src/models/openai/types.js +5 -0
  167. package/dist/src/models/openai/types.js.map +1 -0
  168. package/dist/src/multiagent/__tests__/events.test.js +122 -28
  169. package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
  170. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +2 -0
  171. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +1 -0
  172. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +95 -0
  173. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +1 -0
  174. package/dist/src/multiagent/__tests__/nodes.test.js +5 -2
  175. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  176. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +2 -0
  177. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +1 -0
  178. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +56 -0
  179. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +1 -0
  180. package/dist/src/multiagent/events.d.ts +19 -1
  181. package/dist/src/multiagent/events.d.ts.map +1 -1
  182. package/dist/src/multiagent/events.js +18 -0
  183. package/dist/src/multiagent/events.js.map +1 -1
  184. package/dist/src/multiagent/graph.d.ts +5 -3
  185. package/dist/src/multiagent/graph.d.ts.map +1 -1
  186. package/dist/src/multiagent/graph.js +22 -15
  187. package/dist/src/multiagent/graph.js.map +1 -1
  188. package/dist/src/multiagent/index.d.ts +1 -1
  189. package/dist/src/multiagent/index.d.ts.map +1 -1
  190. package/dist/src/multiagent/multiagent.d.ts +16 -3
  191. package/dist/src/multiagent/multiagent.d.ts.map +1 -1
  192. package/dist/src/multiagent/nodes.d.ts +10 -3
  193. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  194. package/dist/src/multiagent/nodes.js +28 -6
  195. package/dist/src/multiagent/nodes.js.map +1 -1
  196. package/dist/src/multiagent/swarm.d.ts +5 -3
  197. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  198. package/dist/src/multiagent/swarm.js +22 -16
  199. package/dist/src/multiagent/swarm.js.map +1 -1
  200. package/dist/src/plugins/__tests__/registry.test.js +1 -1
  201. package/dist/src/plugins/__tests__/registry.test.js.map +1 -1
  202. package/dist/src/plugins/model-plugin.d.ts +20 -0
  203. package/dist/src/plugins/model-plugin.d.ts.map +1 -0
  204. package/dist/src/plugins/model-plugin.js +29 -0
  205. package/dist/src/plugins/model-plugin.js.map +1 -0
  206. package/dist/src/session/__tests__/session-manager.test.js +13 -11
  207. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  208. package/dist/src/session/session-manager.d.ts.map +1 -1
  209. package/dist/src/session/session-manager.js +9 -0
  210. package/dist/src/session/session-manager.js.map +1 -1
  211. package/dist/src/telemetry/__tests__/meter.test.js +23 -0
  212. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  213. package/dist/src/telemetry/meter.d.ts +15 -0
  214. package/dist/src/telemetry/meter.d.ts.map +1 -1
  215. package/dist/src/telemetry/meter.js +14 -0
  216. package/dist/src/telemetry/meter.js.map +1 -1
  217. package/dist/src/tools/mcp-tool.d.ts +24 -3
  218. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  219. package/dist/src/tools/mcp-tool.js +103 -31
  220. package/dist/src/tools/mcp-tool.js.map +1 -1
  221. package/dist/src/tools/tool.d.ts +11 -1
  222. package/dist/src/tools/tool.d.ts.map +1 -1
  223. package/dist/src/tools/tool.js.map +1 -1
  224. package/dist/src/tsconfig.tsbuildinfo +1 -1
  225. package/dist/src/types/__tests__/agent.test.js +48 -0
  226. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  227. package/dist/src/types/agent.d.ts +55 -6
  228. package/dist/src/types/agent.d.ts.map +1 -1
  229. package/dist/src/types/agent.js +22 -6
  230. package/dist/src/types/agent.js.map +1 -1
  231. package/dist/src/types/elicitation.d.ts +15 -0
  232. package/dist/src/types/elicitation.d.ts.map +1 -0
  233. package/dist/src/types/elicitation.js +2 -0
  234. package/dist/src/types/elicitation.js.map +1 -0
  235. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +9 -5
  236. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  237. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +1 -0
  238. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  239. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +1 -0
  240. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  241. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +1 -0
  242. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  243. package/package.json +9 -5
  244. package/dist/src/models/__tests__/openai.test.d.ts +0 -2
  245. package/dist/src/models/__tests__/openai.test.d.ts.map +0 -1
  246. package/dist/src/models/__tests__/openai.test.js.map +0 -1
  247. package/dist/src/models/openai.d.ts +0 -312
  248. package/dist/src/models/openai.d.ts.map +0 -1
  249. package/dist/src/models/openai.js +0 -789
  250. package/dist/src/models/openai.js.map +0 -1
@@ -1,312 +0,0 @@
1
- /**
2
- * OpenAI model provider implementation.
3
- *
4
- * This module provides integration with OpenAI's Chat Completions API,
5
- * supporting streaming responses, tool use, and configurable model parameters.
6
- *
7
- * @see https://platform.openai.com/docs/api-reference/chat/create
8
- */
9
- import OpenAI, { type ClientOptions } from 'openai';
10
- import type { ApiKeySetter } from 'openai/client';
11
- import { Model } from '../models/model.js';
12
- import type { BaseModelConfig, StreamOptions } from '../models/model.js';
13
- import type { Message } from '../types/messages.js';
14
- import type { ModelStreamEvent } from '../models/streaming.js';
15
- /**
16
- * Supported OpenAI API types.
17
- * - 'chat': OpenAI Chat Completions API
18
- */
19
- export type OpenAIApi = 'chat';
20
- /**
21
- * Configuration interface for OpenAI model provider.
22
- *
23
- * Extends BaseModelConfig with OpenAI-specific configuration options
24
- * for model parameters and request settings.
25
- *
26
- * @example
27
- * ```typescript
28
- * const config: OpenAIModelConfig = {
29
- * modelId: 'gpt-5.4',
30
- * temperature: 0.7,
31
- * maxTokens: 1024
32
- * }
33
- * ```
34
- */
35
- export interface OpenAIModelConfig extends BaseModelConfig {
36
- /**
37
- * OpenAI model identifier (e.g., gpt-5.4, gpt-5.4-mini).
38
- */
39
- modelId?: string;
40
- /**
41
- * Controls randomness in generation.
42
- *
43
- * @see https://platform.openai.com/docs/api-reference/chat/create#chat-create-temperature
44
- */
45
- temperature?: number;
46
- /**
47
- * Maximum number of tokens to generate in the completion.
48
- *
49
- * @see https://platform.openai.com/docs/api-reference/chat/create#chat-create-max_completion_tokens
50
- */
51
- maxTokens?: number;
52
- /**
53
- * Controls diversity via nucleus sampling.
54
- *
55
- * @see https://platform.openai.com/docs/api-reference/chat/create#chat-create-top_p
56
- */
57
- topP?: number;
58
- /**
59
- * Reduces repetition of token sequences (-2.0 to 2.0).
60
- */
61
- frequencyPenalty?: number;
62
- /**
63
- * Encourages the model to talk about new topics (-2.0 to 2.0).
64
- */
65
- presencePenalty?: number;
66
- /**
67
- * Additional parameters to pass through to the OpenAI API.
68
- * This field provides forward compatibility for any new parameters
69
- * that OpenAI introduces. All properties in this object will be
70
- * spread into the API request.
71
- *
72
- * @example
73
- * ```typescript
74
- * // Pass stop sequences
75
- * { params: { stop: ['END', 'STOP'] } }
76
- *
77
- * // Pass any future OpenAI parameters
78
- * { params: { newParameter: 'value' } }
79
- * ```
80
- */
81
- params?: Record<string, unknown>;
82
- }
83
- /**
84
- * Options interface for creating an OpenAIModel instance.
85
- */
86
- export interface OpenAIModelOptions extends OpenAIModelConfig {
87
- /**
88
- * Which OpenAI API to use for inference.
89
- * Currently only 'chat' (Chat Completions API) is supported.
90
- *
91
- * @see https://platform.openai.com/docs/api-reference/chat
92
- */
93
- api: OpenAIApi;
94
- /**
95
- * OpenAI API key (falls back to OPENAI_API_KEY environment variable).
96
- *
97
- * Accepts either a static string or an async function that resolves to a string.
98
- * When a function is provided, it is invoked before each request, allowing for
99
- * dynamic API key rotation or runtime credential refresh.
100
- */
101
- apiKey?: string | ApiKeySetter;
102
- /**
103
- * Pre-configured OpenAI client instance.
104
- * If provided, this client will be used instead of creating a new one.
105
- */
106
- client?: OpenAI;
107
- /**
108
- * Additional OpenAI client configuration.
109
- * Only used if client is not provided.
110
- */
111
- clientConfig?: ClientOptions;
112
- }
113
- /**
114
- * OpenAI model provider implementation.
115
- *
116
- * Implements the Model interface for OpenAI using the Chat Completions API.
117
- * Supports streaming responses, tool use, and comprehensive configuration.
118
- *
119
- * @example
120
- * ```typescript
121
- * const provider = new OpenAIModel({
122
- * api: 'chat',
123
- * apiKey: 'sk-...',
124
- * modelId: 'gpt-5.4',
125
- * temperature: 0.7,
126
- * maxTokens: 1024
127
- * })
128
- *
129
- * const messages: Message[] = [
130
- * { role: 'user', content: [{ type: 'textBlock', text: 'Hello!' }] }
131
- * ]
132
- *
133
- * for await (const event of provider.stream(messages)) {
134
- * if (event.type === 'modelContentBlockDeltaEvent' && event.delta.type === 'textDelta') {
135
- * process.stdout.write(event.delta.text)
136
- * }
137
- * }
138
- * ```
139
- */
140
- export declare class OpenAIModel extends Model<OpenAIModelConfig> {
141
- private _config;
142
- private _client;
143
- /**
144
- * Creates a new OpenAIModel instance.
145
- *
146
- * @param options - Configuration for model and client
147
- *
148
- * @example
149
- * ```typescript
150
- * // Minimal configuration with API key and model ID
151
- * const provider = new OpenAIModel({
152
- * api: 'chat',
153
- * modelId: 'gpt-5.4',
154
- * apiKey: 'sk-...'
155
- * })
156
- *
157
- * // With additional model configuration
158
- * const provider = new OpenAIModel({
159
- * api: 'chat',
160
- * modelId: 'gpt-5.4',
161
- * apiKey: 'sk-...',
162
- * temperature: 0.8,
163
- * maxTokens: 2048
164
- * })
165
- *
166
- * // Using environment variable for API key
167
- * const provider = new OpenAIModel({
168
- * api: 'chat',
169
- * modelId: 'gpt-5.4-mini'
170
- * })
171
- *
172
- * // Using function-based API key for dynamic key retrieval
173
- * const provider = new OpenAIModel({
174
- * api: 'chat',
175
- * modelId: 'gpt-5.4',
176
- * apiKey: async () => await getRotatingApiKey()
177
- * })
178
- *
179
- * // Using a pre-configured client instance
180
- * const client = new OpenAI({ apiKey: 'sk-...', timeout: 60000 })
181
- * const provider = new OpenAIModel({
182
- * api: 'chat',
183
- * modelId: 'gpt-5.4',
184
- * client
185
- * })
186
- * ```
187
- */
188
- constructor(options: OpenAIModelOptions);
189
- /**
190
- * Updates the model configuration.
191
- * Merges the provided configuration with existing settings.
192
- *
193
- * @param modelConfig - Configuration object with model-specific settings to update
194
- *
195
- * @example
196
- * ```typescript
197
- * // Update temperature and maxTokens
198
- * provider.updateConfig({
199
- * temperature: 0.9,
200
- * maxTokens: 2048
201
- * })
202
- * ```
203
- */
204
- updateConfig(modelConfig: OpenAIModelConfig): void;
205
- /**
206
- * Retrieves the current model configuration.
207
- *
208
- * @returns The current configuration object
209
- *
210
- * @example
211
- * ```typescript
212
- * const config = provider.getConfig()
213
- * console.log(config.modelId)
214
- * ```
215
- */
216
- getConfig(): OpenAIModelConfig;
217
- /**
218
- * Streams a conversation with the OpenAI model.
219
- * Returns an async iterable that yields streaming events as they occur.
220
- *
221
- * @param messages - Array of conversation messages
222
- * @param options - Optional streaming configuration
223
- * @returns Async iterable of streaming events
224
- *
225
- * @throws \{ContextWindowOverflowError\} When input exceeds the model's context window
226
- *
227
- * @example
228
- * ```typescript
229
- * const provider = new OpenAIModel({ api: 'chat', modelId: 'gpt-5.4', apiKey: 'sk-...' })
230
- * const messages: Message[] = [
231
- * { role: 'user', content: [{ type: 'textBlock', text: 'What is 2+2?' }] }
232
- * ]
233
- *
234
- * for await (const event of provider.stream(messages)) {
235
- * if (event.type === 'modelContentBlockDeltaEvent' && event.delta.type === 'textDelta') {
236
- * process.stdout.write(event.delta.text)
237
- * }
238
- * }
239
- * ```
240
- *
241
- * @example
242
- * ```typescript
243
- * // With tool use
244
- * const options: StreamOptions = {
245
- * systemPrompt: 'You are a helpful assistant',
246
- * toolSpecs: [calculatorTool]
247
- * }
248
- *
249
- * for await (const event of provider.stream(messages, options)) {
250
- * if (event.type === 'modelMessageStopEvent' && event.stopReason === 'toolUse') {
251
- * console.log('Model wants to use a tool')
252
- * }
253
- * }
254
- * ```
255
- */
256
- stream(messages: Message[], options?: StreamOptions): AsyncIterable<ModelStreamEvent>;
257
- /**
258
- * Formats a request for the OpenAI Chat Completions API.
259
- *
260
- * @param messages - Conversation messages
261
- * @param options - Stream options
262
- * @returns Formatted OpenAI request
263
- */
264
- private _formatRequest;
265
- /**
266
- * Formats messages for OpenAI API.
267
- * Handles splitting tool results into separate messages.
268
- *
269
- * @param messages - SDK messages
270
- * @returns OpenAI-formatted messages
271
- */
272
- private _formatMessages;
273
- /**
274
- * Formats an image block to OpenAI image_url format.
275
- *
276
- * @param imageBlock - Image block to format
277
- * @returns OpenAI image_url content part, or undefined if unsupported
278
- */
279
- private _formatImageBlock;
280
- /**
281
- * Splits tool result content into text and image parts.
282
- * OpenAI API restricts images to user role messages only.
283
- *
284
- * @param toolResult - Tool result block to split
285
- * @returns Tuple of [text content, image parts for user message]
286
- */
287
- private _splitToolResultMedia;
288
- /**
289
- * Converts a snake_case string to camelCase.
290
- * Used for mapping OpenAI stop reasons to SDK format.
291
- *
292
- * @param str - Snake case string (e.g., 'content_filter')
293
- * @returns Camel case string (e.g., 'contentFilter')
294
- *
295
- * @example
296
- * ```typescript
297
- * _snakeToCamel('context_length_exceeded') // => 'contextLengthExceeded'
298
- * _snakeToCamel('tool_calls') // => 'toolCalls'
299
- * ```
300
- */
301
- private _snakeToCamel;
302
- /**
303
- * Maps an OpenAI chunk to SDK streaming events.
304
- *
305
- * @param chunk - OpenAI chunk
306
- * @param streamState - Mutable state object tracking message and content block state
307
- * @param activeToolCalls - Map tracking active tool calls by index
308
- * @returns Array of SDK streaming events
309
- */
310
- private _mapOpenAIChunkToSDKEvents;
311
- }
312
- //# sourceMappingURL=openai.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/models/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,KAAK,EAAE,OAAO,EAA+B,MAAM,sBAAsB,CAAA;AAIhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAK9D;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AA+C9B;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D;;;;;OAKG;IACH,GAAG,EAAE,SAAS,CAAA;IAEd;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;IAE9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,WAAY,SAAQ,KAAK,CAAC,iBAAiB,CAAC;IACvD,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAQ;IAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;gBACS,OAAO,EAAE,kBAAkB;IAoCvC;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAIlD;;;;;;;;;;OAUG;IACH,SAAS,IAAI,iBAAiB;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC;IA6F5F;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAwHtB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAsNvB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;CAwInC"}