@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.
Files changed (265) hide show
  1. package/README.md +8 -15
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +6 -0
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +3 -1
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -1
  7. package/dist/src/__fixtures__/mock-plugin.js +3 -1
  8. package/dist/src/__fixtures__/mock-plugin.js.map +1 -1
  9. package/dist/src/__fixtures__/tool-helpers.d.ts +3 -1
  10. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  11. package/dist/src/__fixtures__/tool-helpers.js +3 -1
  12. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  13. package/dist/src/__tests__/mcp.test.js +274 -1
  14. package/dist/src/__tests__/mcp.test.js.map +1 -1
  15. package/dist/src/a2a/__tests__/events.test.js +2 -0
  16. package/dist/src/a2a/__tests__/events.test.js.map +1 -1
  17. package/dist/src/a2a/__tests__/executor.test.js +16 -5
  18. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  19. package/dist/src/a2a/a2a-agent.d.ts +8 -3
  20. package/dist/src/a2a/a2a-agent.d.ts.map +1 -1
  21. package/dist/src/a2a/a2a-agent.js +12 -6
  22. package/dist/src/a2a/a2a-agent.js.map +1 -1
  23. package/dist/src/a2a/executor.d.ts +13 -0
  24. package/dist/src/a2a/executor.d.ts.map +1 -1
  25. package/dist/src/a2a/executor.js +19 -1
  26. package/dist/src/a2a/executor.js.map +1 -1
  27. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +2 -0
  28. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +1 -0
  29. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +23 -0
  30. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +1 -0
  31. package/dist/src/agent/__tests__/agent.cancel.test.js +1 -1
  32. package/dist/src/agent/__tests__/agent.cancel.test.js.map +1 -1
  33. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +2 -0
  34. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +1 -0
  35. package/dist/src/agent/__tests__/agent.concurrent.test.js +488 -0
  36. package/dist/src/agent/__tests__/agent.concurrent.test.js.map +1 -0
  37. package/dist/src/agent/__tests__/agent.hook.test.js +174 -12
  38. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  39. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +2 -0
  40. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +1 -0
  41. package/dist/src/agent/__tests__/agent.invocation-state.test.js +219 -0
  42. package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +1 -0
  43. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +2 -0
  44. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +1 -0
  45. package/dist/src/agent/__tests__/agent.stateful-model.test.js +169 -0
  46. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -0
  47. package/dist/src/agent/__tests__/agent.test.js +99 -2
  48. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  49. package/dist/src/agent/__tests__/agent.tracer.test.node.js +39 -0
  50. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  51. package/dist/src/agent/__tests__/snapshot.test.js +5 -4
  52. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  53. package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
  54. package/dist/src/agent/agent-as-tool.js +4 -2
  55. package/dist/src/agent/agent-as-tool.js.map +1 -1
  56. package/dist/src/agent/agent.d.ts +75 -1
  57. package/dist/src/agent/agent.d.ts.map +1 -1
  58. package/dist/src/agent/agent.js +323 -83
  59. package/dist/src/agent/agent.js.map +1 -1
  60. package/dist/src/agent/snapshot.d.ts +2 -2
  61. package/dist/src/agent/snapshot.d.ts.map +1 -1
  62. package/dist/src/agent/snapshot.js +8 -2
  63. package/dist/src/agent/snapshot.js.map +1 -1
  64. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +4 -4
  65. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
  66. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +2 -2
  67. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
  68. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +8 -3
  69. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  70. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +1 -0
  71. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  72. package/dist/src/errors.d.ts +11 -0
  73. package/dist/src/errors.d.ts.map +1 -1
  74. package/dist/src/errors.js +12 -0
  75. package/dist/src/errors.js.map +1 -1
  76. package/dist/src/hooks/__tests__/events.test.js +177 -70
  77. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  78. package/dist/src/hooks/__tests__/registry.test.js +16 -16
  79. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  80. package/dist/src/hooks/events.d.ts +95 -25
  81. package/dist/src/hooks/events.d.ts.map +1 -1
  82. package/dist/src/hooks/events.js +98 -23
  83. package/dist/src/hooks/events.js.map +1 -1
  84. package/dist/src/index.d.ts +6 -5
  85. package/dist/src/index.d.ts.map +1 -1
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/logging/__tests__/warn-once.test.d.ts +2 -0
  88. package/dist/src/logging/__tests__/warn-once.test.d.ts.map +1 -0
  89. package/dist/src/logging/__tests__/warn-once.test.js +30 -0
  90. package/dist/src/logging/__tests__/warn-once.test.js.map +1 -0
  91. package/dist/src/logging/warn-once.d.ts +13 -0
  92. package/dist/src/logging/warn-once.d.ts.map +1 -0
  93. package/dist/src/logging/warn-once.js +18 -0
  94. package/dist/src/logging/warn-once.js.map +1 -0
  95. package/dist/src/mcp.d.ts +20 -1
  96. package/dist/src/mcp.d.ts.map +1 -1
  97. package/dist/src/mcp.js +10 -1
  98. package/dist/src/mcp.js.map +1 -1
  99. package/dist/src/mime.d.ts +2 -1
  100. package/dist/src/mime.d.ts.map +1 -1
  101. package/dist/src/mime.js +1 -0
  102. package/dist/src/mime.js.map +1 -1
  103. package/dist/src/models/__tests__/anthropic.test.js +99 -1
  104. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  105. package/dist/src/models/__tests__/bedrock.test.js +123 -2
  106. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  107. package/dist/src/models/__tests__/google.test.js +88 -0
  108. package/dist/src/models/__tests__/google.test.js.map +1 -1
  109. package/dist/src/models/__tests__/model.test.js +149 -1
  110. package/dist/src/models/__tests__/model.test.js.map +1 -1
  111. package/dist/src/models/anthropic.d.ts +18 -1
  112. package/dist/src/models/anthropic.d.ts.map +1 -1
  113. package/dist/src/models/anthropic.js +40 -6
  114. package/dist/src/models/anthropic.js.map +1 -1
  115. package/dist/src/models/bedrock.d.ts +12 -1
  116. package/dist/src/models/bedrock.d.ts.map +1 -1
  117. package/dist/src/models/bedrock.js +45 -11
  118. package/dist/src/models/bedrock.js.map +1 -1
  119. package/dist/src/models/defaults.d.ts +37 -0
  120. package/dist/src/models/defaults.d.ts.map +1 -0
  121. package/dist/src/models/defaults.js +41 -0
  122. package/dist/src/models/defaults.js.map +1 -0
  123. package/dist/src/models/google/model.d.ts +14 -1
  124. package/dist/src/models/google/model.d.ts.map +1 -1
  125. package/dist/src/models/google/model.js +50 -6
  126. package/dist/src/models/google/model.js.map +1 -1
  127. package/dist/src/models/model.d.ts +56 -0
  128. package/dist/src/models/model.d.ts.map +1 -1
  129. package/dist/src/models/model.js +120 -0
  130. package/dist/src/models/model.js.map +1 -1
  131. package/dist/src/models/openai/__tests__/chat.test.d.ts +2 -0
  132. package/dist/src/models/openai/__tests__/chat.test.d.ts.map +1 -0
  133. package/dist/src/models/{__tests__/openai.test.js → openai/__tests__/chat.test.js} +84 -7
  134. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -0
  135. package/dist/src/models/openai/__tests__/responses.test.d.ts +2 -0
  136. package/dist/src/models/openai/__tests__/responses.test.d.ts.map +1 -0
  137. package/dist/src/models/openai/__tests__/responses.test.js +668 -0
  138. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -0
  139. package/dist/src/models/openai/chat-adapter.d.ts +33 -0
  140. package/dist/src/models/openai/chat-adapter.d.ts.map +1 -0
  141. package/dist/src/models/openai/chat-adapter.js +383 -0
  142. package/dist/src/models/openai/chat-adapter.js.map +1 -0
  143. package/dist/src/models/openai/errors.d.ts +16 -0
  144. package/dist/src/models/openai/errors.d.ts.map +1 -0
  145. package/dist/src/models/openai/errors.js +40 -0
  146. package/dist/src/models/openai/errors.js.map +1 -0
  147. package/dist/src/models/openai/formatting.d.ts +18 -0
  148. package/dist/src/models/openai/formatting.d.ts.map +1 -0
  149. package/dist/src/models/openai/formatting.js +38 -0
  150. package/dist/src/models/openai/formatting.js.map +1 -0
  151. package/dist/src/models/openai/index.d.ts +19 -0
  152. package/dist/src/models/openai/index.d.ts.map +1 -0
  153. package/dist/src/models/openai/index.js +18 -0
  154. package/dist/src/models/openai/index.js.map +1 -0
  155. package/dist/src/models/openai/model.d.ts +77 -0
  156. package/dist/src/models/openai/model.d.ts.map +1 -0
  157. package/dist/src/models/openai/model.js +211 -0
  158. package/dist/src/models/openai/model.js.map +1 -0
  159. package/dist/src/models/openai/responses-adapter.d.ts +78 -0
  160. package/dist/src/models/openai/responses-adapter.d.ts.map +1 -0
  161. package/dist/src/models/openai/responses-adapter.js +467 -0
  162. package/dist/src/models/openai/responses-adapter.js.map +1 -0
  163. package/dist/src/models/openai/types.d.ts +131 -0
  164. package/dist/src/models/openai/types.d.ts.map +1 -0
  165. package/dist/src/models/openai/types.js +5 -0
  166. package/dist/src/models/openai/types.js.map +1 -0
  167. package/dist/src/multiagent/__tests__/events.test.js +122 -28
  168. package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
  169. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +2 -0
  170. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +1 -0
  171. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +95 -0
  172. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +1 -0
  173. package/dist/src/multiagent/__tests__/nodes.test.js +5 -2
  174. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  175. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +2 -0
  176. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +1 -0
  177. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +56 -0
  178. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +1 -0
  179. package/dist/src/multiagent/events.d.ts +19 -1
  180. package/dist/src/multiagent/events.d.ts.map +1 -1
  181. package/dist/src/multiagent/events.js +18 -0
  182. package/dist/src/multiagent/events.js.map +1 -1
  183. package/dist/src/multiagent/graph.d.ts +5 -3
  184. package/dist/src/multiagent/graph.d.ts.map +1 -1
  185. package/dist/src/multiagent/graph.js +22 -15
  186. package/dist/src/multiagent/graph.js.map +1 -1
  187. package/dist/src/multiagent/index.d.ts +1 -1
  188. package/dist/src/multiagent/index.d.ts.map +1 -1
  189. package/dist/src/multiagent/multiagent.d.ts +16 -3
  190. package/dist/src/multiagent/multiagent.d.ts.map +1 -1
  191. package/dist/src/multiagent/nodes.d.ts +10 -3
  192. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  193. package/dist/src/multiagent/nodes.js +28 -6
  194. package/dist/src/multiagent/nodes.js.map +1 -1
  195. package/dist/src/multiagent/swarm.d.ts +5 -3
  196. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  197. package/dist/src/multiagent/swarm.js +22 -16
  198. package/dist/src/multiagent/swarm.js.map +1 -1
  199. package/dist/src/plugins/__tests__/registry.test.js +1 -1
  200. package/dist/src/plugins/__tests__/registry.test.js.map +1 -1
  201. package/dist/src/plugins/model-plugin.d.ts +20 -0
  202. package/dist/src/plugins/model-plugin.d.ts.map +1 -0
  203. package/dist/src/plugins/model-plugin.js +29 -0
  204. package/dist/src/plugins/model-plugin.js.map +1 -0
  205. package/dist/src/session/__tests__/session-manager.test.js +13 -11
  206. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  207. package/dist/src/session/session-manager.d.ts.map +1 -1
  208. package/dist/src/session/session-manager.js +9 -0
  209. package/dist/src/session/session-manager.js.map +1 -1
  210. package/dist/src/telemetry/__tests__/config.test.js +6 -6
  211. package/dist/src/telemetry/__tests__/config.test.js.map +1 -1
  212. package/dist/src/telemetry/__tests__/config.test.node.js +16 -11
  213. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
  214. package/dist/src/telemetry/__tests__/meter.test.js +23 -0
  215. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  216. package/dist/src/telemetry/config.d.ts +9 -3
  217. package/dist/src/telemetry/config.d.ts.map +1 -1
  218. package/dist/src/telemetry/config.js +44 -69
  219. package/dist/src/telemetry/config.js.map +1 -1
  220. package/dist/src/telemetry/meter.d.ts +15 -0
  221. package/dist/src/telemetry/meter.d.ts.map +1 -1
  222. package/dist/src/telemetry/meter.js +14 -0
  223. package/dist/src/telemetry/meter.js.map +1 -1
  224. package/dist/src/tools/mcp-tool.d.ts +24 -3
  225. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  226. package/dist/src/tools/mcp-tool.js +105 -14
  227. package/dist/src/tools/mcp-tool.js.map +1 -1
  228. package/dist/src/tools/tool.d.ts +11 -1
  229. package/dist/src/tools/tool.d.ts.map +1 -1
  230. package/dist/src/tools/tool.js.map +1 -1
  231. package/dist/src/tsconfig.tsbuildinfo +1 -1
  232. package/dist/src/types/__tests__/agent.test.js +48 -0
  233. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  234. package/dist/src/types/agent.d.ts +55 -6
  235. package/dist/src/types/agent.d.ts.map +1 -1
  236. package/dist/src/types/agent.js +22 -6
  237. package/dist/src/types/agent.js.map +1 -1
  238. package/dist/src/types/elicitation.d.ts +15 -0
  239. package/dist/src/types/elicitation.d.ts.map +1 -0
  240. package/dist/src/types/elicitation.js +2 -0
  241. package/dist/src/types/elicitation.js.map +1 -0
  242. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +37 -33
  243. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  244. package/dist/src/vended-plugins/skills/agent-skills.d.ts +8 -8
  245. package/dist/src/vended-plugins/skills/agent-skills.d.ts.map +1 -1
  246. package/dist/src/vended-plugins/skills/agent-skills.js +5 -5
  247. package/dist/src/vended-plugins/skills/agent-skills.js.map +1 -1
  248. package/dist/src/vended-plugins/skills/index.d.ts +5 -5
  249. package/dist/src/vended-plugins/skills/index.d.ts.map +1 -1
  250. package/dist/src/vended-plugins/skills/index.js +4 -4
  251. package/dist/src/vended-plugins/skills/index.js.map +1 -1
  252. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +1 -0
  253. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  254. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +1 -0
  255. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  256. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +1 -0
  257. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  258. package/package.json +28 -26
  259. package/dist/src/models/__tests__/openai.test.d.ts +0 -2
  260. package/dist/src/models/__tests__/openai.test.d.ts.map +0 -1
  261. package/dist/src/models/__tests__/openai.test.js.map +0 -1
  262. package/dist/src/models/openai.d.ts +0 -312
  263. package/dist/src/models/openai.d.ts.map +0 -1
  264. package/dist/src/models/openai.js +0 -789
  265. package/dist/src/models/openai.js.map +0 -1
@@ -0,0 +1,19 @@
1
+ /**
2
+ * OpenAI model provider.
3
+ *
4
+ * Defaults to the Responses API. Pass `api: 'chat'` to use Chat Completions.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { OpenAIModel } from '@strands-agents/sdk/models/openai'
9
+ *
10
+ * // Responses API (default)
11
+ * const model = new OpenAIModel({ modelId: 'gpt-5.4', apiKey: 'sk-...' })
12
+ *
13
+ * // Chat Completions
14
+ * const model = new OpenAIModel({ api: 'chat', modelId: 'gpt-5.4', apiKey: 'sk-...' })
15
+ * ```
16
+ */
17
+ export { OpenAIModel } from './model.js';
18
+ export type { OpenAIApi, OpenAIChatConfig, OpenAIModelConfig, OpenAIModelOptions, OpenAIResponsesConfig, } from './types.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/models/openai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * OpenAI model provider.
3
+ *
4
+ * Defaults to the Responses API. Pass `api: 'chat'` to use Chat Completions.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { OpenAIModel } from '@strands-agents/sdk/models/openai'
9
+ *
10
+ * // Responses API (default)
11
+ * const model = new OpenAIModel({ modelId: 'gpt-5.4', apiKey: 'sk-...' })
12
+ *
13
+ * // Chat Completions
14
+ * const model = new OpenAIModel({ api: 'chat', modelId: 'gpt-5.4', apiKey: 'sk-...' })
15
+ * ```
16
+ */
17
+ export { OpenAIModel } from './model.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/models/openai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * OpenAI model provider implementation.
3
+ *
4
+ * Supports both the Responses API (default) and the Chat Completions API.
5
+ * Selected via the `api` option at construction time.
6
+ *
7
+ * @see https://platform.openai.com/docs/api-reference/responses
8
+ * @see https://platform.openai.com/docs/api-reference/chat
9
+ */
10
+ import { Model } from '../model.js';
11
+ import type { StreamOptions } from '../model.js';
12
+ import type { Message } from '../../types/messages.js';
13
+ import type { ModelStreamEvent } from '../streaming.js';
14
+ import type { OpenAIApi, OpenAIModelConfig, OpenAIModelOptions } from './types.js';
15
+ /**
16
+ * OpenAI model provider.
17
+ *
18
+ * Defaults to the Responses API. Pass `api: 'chat'` to use Chat Completions.
19
+ * The `api` field is construction-only — it cannot be changed via
20
+ * {@link OpenAIModel.updateConfig}.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Responses API (default)
25
+ * const model = new OpenAIModel({ modelId: 'gpt-5.4', apiKey: 'sk-...' })
26
+ * ```
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Chat Completions
31
+ * const model = new OpenAIModel({ api: 'chat', modelId: 'gpt-5.4', apiKey: 'sk-...' })
32
+ * ```
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * // Responses API with built-in web search
37
+ * const model = new OpenAIModel({
38
+ * modelId: 'gpt-5.4',
39
+ * params: { tools: [{ type: 'web_search' }] },
40
+ * })
41
+ * ```
42
+ */
43
+ export declare class OpenAIModel extends Model<OpenAIModelConfig> {
44
+ private readonly _api;
45
+ private _config;
46
+ private _client;
47
+ constructor(options: OpenAIModelOptions);
48
+ /**
49
+ * The OpenAI API mode this model operates in (`'chat'` or `'responses'`).
50
+ * Set at construction and immutable; exposed for debugging and serialization.
51
+ */
52
+ get api(): OpenAIApi;
53
+ /**
54
+ * Whether this model manages conversation state server-side.
55
+ *
56
+ * `true` only for `api: 'responses'` with `stateful === true`. Chat Completions
57
+ * is always stateless, and Responses defaults to stateless.
58
+ */
59
+ get stateful(): boolean;
60
+ /**
61
+ * Updates the model configuration.
62
+ *
63
+ * `api` and `stateful` are construction-only — if present in `modelConfig`,
64
+ * they are stripped with a warning. Changing either at runtime would
65
+ * invalidate the invariants the agent builds on top of `stateful` (message
66
+ * history management, `previous_response_id` chaining).
67
+ */
68
+ updateConfig(modelConfig: OpenAIModelConfig & {
69
+ api?: OpenAIApi;
70
+ }): void;
71
+ getConfig(): OpenAIModelConfig;
72
+ stream(messages: Message[], options?: StreamOptions): AsyncIterable<ModelStreamEvent>;
73
+ private _streamChat;
74
+ private _streamResponses;
75
+ private _rewrapError;
76
+ }
77
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/models/openai/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAcvD,OAAO,KAAK,EAEV,SAAS,EAET,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,WAAY,SAAQ,KAAK,CAAC,iBAAiB,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,kBAAkB;IAwCvC;;;OAGG;IACH,IAAI,GAAG,IAAI,SAAS,CAEnB;IAED;;;;;OAKG;IACH,IAAa,QAAQ,IAAI,OAAO,CAE/B;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,WAAW,EAAE,iBAAiB,GAAG;QAAE,GAAG,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI;IAoBxE,SAAS,IAAI,iBAAiB;IAIvB,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC;YAY7E,WAAW;YAiDX,gBAAgB;IAqB/B,OAAO,CAAC,YAAY;CAgBrB"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * OpenAI model provider implementation.
3
+ *
4
+ * Supports both the Responses API (default) and the Chat Completions API.
5
+ * Selected via the `api` option at construction time.
6
+ *
7
+ * @see https://platform.openai.com/docs/api-reference/responses
8
+ * @see https://platform.openai.com/docs/api-reference/chat
9
+ */
10
+ import OpenAI from 'openai';
11
+ import { Model } from '../model.js';
12
+ import { ContextWindowOverflowError, ModelThrottledError } from '../../errors.js';
13
+ import { logger } from '../../logging/logger.js';
14
+ import { warnOnce } from '../../logging/warn-once.js';
15
+ import { MODEL_DEFAULTS, defaultModelWarningMessage } from '../defaults.js';
16
+ import { classifyOpenAIError } from './errors.js';
17
+ import { formatChatRequest, mapChatChunkToEvents, warnManagedParams as warnChatManagedParams } from './chat-adapter.js';
18
+ import { createResponsesStreamState, finalizeResponsesStream, formatResponsesRequest, mapResponsesEventToSDK, warnManagedParams as warnResponsesManagedParams, } from './responses-adapter.js';
19
+ /**
20
+ * OpenAI model provider.
21
+ *
22
+ * Defaults to the Responses API. Pass `api: 'chat'` to use Chat Completions.
23
+ * The `api` field is construction-only — it cannot be changed via
24
+ * {@link OpenAIModel.updateConfig}.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Responses API (default)
29
+ * const model = new OpenAIModel({ modelId: 'gpt-5.4', apiKey: 'sk-...' })
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Chat Completions
35
+ * const model = new OpenAIModel({ api: 'chat', modelId: 'gpt-5.4', apiKey: 'sk-...' })
36
+ * ```
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * // Responses API with built-in web search
41
+ * const model = new OpenAIModel({
42
+ * modelId: 'gpt-5.4',
43
+ * params: { tools: [{ type: 'web_search' }] },
44
+ * })
45
+ * ```
46
+ */
47
+ export class OpenAIModel extends Model {
48
+ _api;
49
+ _config;
50
+ _client;
51
+ constructor(options) {
52
+ super();
53
+ const { apiKey, client, clientConfig, api = 'responses', ...modelConfig } = options;
54
+ if (api !== 'chat' && api !== 'responses') {
55
+ throw new Error(`Unsupported OpenAI API: '${api}'. Supported values: 'chat', 'responses'`);
56
+ }
57
+ this._api = api;
58
+ // `stateful` only exists on the responses branch of the discriminated union.
59
+ // Storing as the merged OpenAIModelConfig matches what `getConfig` returns.
60
+ this._config = modelConfig;
61
+ if (modelConfig.modelId === undefined) {
62
+ warnOnce(logger, defaultModelWarningMessage(MODEL_DEFAULTS.openai.modelId));
63
+ }
64
+ if (api === 'responses') {
65
+ warnResponsesManagedParams(modelConfig.params);
66
+ }
67
+ else {
68
+ warnChatManagedParams(modelConfig.params);
69
+ }
70
+ if (client) {
71
+ this._client = client;
72
+ }
73
+ else {
74
+ const hasEnvKey = typeof process !== 'undefined' && typeof process.env !== 'undefined' && process.env.OPENAI_API_KEY;
75
+ if (!apiKey && !hasEnvKey) {
76
+ throw new Error("OpenAI API key is required. Provide it via the 'apiKey' option (string or function) or set the OPENAI_API_KEY environment variable.");
77
+ }
78
+ this._client = new OpenAI({
79
+ ...(apiKey ? { apiKey } : {}),
80
+ ...clientConfig,
81
+ });
82
+ }
83
+ }
84
+ /**
85
+ * The OpenAI API mode this model operates in (`'chat'` or `'responses'`).
86
+ * Set at construction and immutable; exposed for debugging and serialization.
87
+ */
88
+ get api() {
89
+ return this._api;
90
+ }
91
+ /**
92
+ * Whether this model manages conversation state server-side.
93
+ *
94
+ * `true` only for `api: 'responses'` with `stateful === true`. Chat Completions
95
+ * is always stateless, and Responses defaults to stateless.
96
+ */
97
+ get stateful() {
98
+ return this._api === 'responses' && this._config.stateful === true;
99
+ }
100
+ /**
101
+ * Updates the model configuration.
102
+ *
103
+ * `api` and `stateful` are construction-only — if present in `modelConfig`,
104
+ * they are stripped with a warning. Changing either at runtime would
105
+ * invalidate the invariants the agent builds on top of `stateful` (message
106
+ * history management, `previous_response_id` chaining).
107
+ */
108
+ updateConfig(modelConfig) {
109
+ const { api, stateful, ...rest } = modelConfig;
110
+ if (api !== undefined) {
111
+ logger.warn(`api=<${api}> | 'api' is construction-only and cannot be changed via updateConfig — ignoring`);
112
+ }
113
+ if (stateful !== undefined) {
114
+ logger.warn(`stateful=<${stateful}> | 'stateful' is construction-only and cannot be changed via updateConfig — ignoring`);
115
+ }
116
+ if (this._api === 'responses') {
117
+ warnResponsesManagedParams(rest.params);
118
+ }
119
+ else {
120
+ warnChatManagedParams(rest.params);
121
+ }
122
+ this._config = { ...this._config, ...rest };
123
+ }
124
+ getConfig() {
125
+ return this._config;
126
+ }
127
+ async *stream(messages, options) {
128
+ if (!messages || messages.length === 0) {
129
+ throw new Error('At least one message is required');
130
+ }
131
+ if (this._api === 'chat') {
132
+ yield* this._streamChat(messages, options);
133
+ }
134
+ else {
135
+ yield* this._streamResponses(messages, options);
136
+ }
137
+ }
138
+ async *_streamChat(messages, options) {
139
+ try {
140
+ const request = formatChatRequest(this._config, messages, options);
141
+ const stream = await this._client.chat.completions.create(request);
142
+ const streamState = {
143
+ messageStarted: false,
144
+ textContentBlockStarted: false,
145
+ };
146
+ const activeToolCalls = new Map();
147
+ let bufferedUsage = null;
148
+ for await (const chunk of stream) {
149
+ if (!chunk.choices || chunk.choices.length === 0) {
150
+ if (chunk.usage) {
151
+ bufferedUsage = {
152
+ type: 'modelMetadataEvent',
153
+ usage: {
154
+ inputTokens: chunk.usage.prompt_tokens ?? 0,
155
+ outputTokens: chunk.usage.completion_tokens ?? 0,
156
+ totalTokens: chunk.usage.total_tokens ?? 0,
157
+ },
158
+ };
159
+ }
160
+ continue;
161
+ }
162
+ const events = mapChatChunkToEvents(chunk, streamState, activeToolCalls);
163
+ for (const event of events) {
164
+ if (event.type === 'modelMessageStopEvent' && bufferedUsage) {
165
+ yield bufferedUsage;
166
+ bufferedUsage = null;
167
+ }
168
+ yield event;
169
+ }
170
+ }
171
+ if (bufferedUsage) {
172
+ yield bufferedUsage;
173
+ }
174
+ }
175
+ catch (error) {
176
+ throw this._rewrapError(error);
177
+ }
178
+ }
179
+ async *_streamResponses(messages, options) {
180
+ try {
181
+ const request = formatResponsesRequest(this._config, messages, options, this.stateful);
182
+ const stream = await this._client.responses.create(request);
183
+ const state = createResponsesStreamState();
184
+ for await (const event of stream) {
185
+ for (const sdkEvent of mapResponsesEventToSDK(event, state, this.stateful, options?.modelState)) {
186
+ yield sdkEvent;
187
+ }
188
+ }
189
+ for (const sdkEvent of finalizeResponsesStream(state)) {
190
+ yield sdkEvent;
191
+ }
192
+ }
193
+ catch (error) {
194
+ throw this._rewrapError(error);
195
+ }
196
+ }
197
+ _rewrapError(error) {
198
+ const err = error;
199
+ const kind = classifyOpenAIError(err);
200
+ if (kind === 'throttling') {
201
+ const message = err.message ?? 'Request was throttled by the model provider';
202
+ logger.debug(`throttled | error_message=<${message}>`);
203
+ return new ModelThrottledError(message, { cause: err });
204
+ }
205
+ if (kind === 'contextOverflow') {
206
+ return new ContextWindowOverflowError(err.message);
207
+ }
208
+ return error;
209
+ }
210
+ }
211
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/models/openai/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
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 type { ResponseStreamEvent, ResponseCreateParamsStreaming } from 'openai/resources/responses/responses';
17
+ import type { Message, StopReason } from '../../types/messages.js';
18
+ import type { StateStore } from '../../state-store.js';
19
+ import type { ModelStreamEvent } from '../streaming.js';
20
+ import type { StreamOptions } from '../model.js';
21
+ import type { OpenAIResponsesConfig } from './types.js';
22
+ export declare const DEFAULT_RESPONSES_MODEL_ID: "gpt-5.4";
23
+ /**
24
+ * Logs a warning for each responses-managed key present in `params`.
25
+ *
26
+ * @internal
27
+ */
28
+ export declare function warnManagedParams(params: Record<string, unknown> | undefined): void;
29
+ /**
30
+ * Builds a Responses API streaming request body.
31
+ *
32
+ * @internal
33
+ */
34
+ export declare function formatResponsesRequest(config: OpenAIResponsesConfig, messages: Message[], options: StreamOptions | undefined, stateful: boolean): ResponseCreateParamsStreaming;
35
+ /**
36
+ * Internal stream state for the Responses adapter. Tracks the active content
37
+ * block kind so the adapter can emit stop/start events when content type
38
+ * switches (text ↔ reasoning ↔ citations).
39
+ *
40
+ * @internal
41
+ */
42
+ export interface ResponsesStreamState {
43
+ dataType: string | null;
44
+ toolCalls: Map<string, {
45
+ name: string;
46
+ arguments: string;
47
+ callId: string;
48
+ itemId: string;
49
+ }>;
50
+ finalUsage: {
51
+ inputTokens: number;
52
+ outputTokens: number;
53
+ totalTokens: number;
54
+ } | null;
55
+ stopReason: StopReason;
56
+ }
57
+ /**
58
+ * Creates fresh stream state for a new Responses API stream.
59
+ *
60
+ * @internal
61
+ */
62
+ export declare function createResponsesStreamState(): ResponsesStreamState;
63
+ /**
64
+ * Maps a single Responses API stream event to zero or more SDK events. Mutates
65
+ * `state` and, when `stateful` is `true`, writes `responseId` into `modelState`.
66
+ *
67
+ * @internal
68
+ */
69
+ export declare function mapResponsesEventToSDK(event: ResponseStreamEvent, state: ResponsesStreamState, stateful: boolean, modelState: StateStore | undefined): ModelStreamEvent[];
70
+ /**
71
+ * Emits the terminal events for a Responses API stream: closes any open content
72
+ * block, flushes accumulated tool calls, emits usage metadata, and finishes
73
+ * with `modelMessageStopEvent`.
74
+ *
75
+ * @internal
76
+ */
77
+ export declare function finalizeResponsesStream(state: ResponsesStreamState): ModelStreamEvent[];
78
+ //# sourceMappingURL=responses-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses-adapter.d.ts","sourceRoot":"","sources":["../../../../src/models/openai/responses-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAInB,6BAA6B,EAC9B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAA;AAInF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,0BAA0B,WAAgC,CAAA;AAIvE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAEnF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,QAAQ,EAAE,OAAO,GAChB,6BAA6B,CAqE/B;AAoMD;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3F,UAAU,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACrF,UAAU,EAAE,UAAU,CAAA;CACvB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CAOjE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,UAAU,GAAG,SAAS,GACjC,gBAAgB,EAAE,CAqIpB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,EAAE,CA+BvF"}