@openrouter/sdk 0.9.11 → 0.10.2

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 (274) hide show
  1. package/FUNCTIONS.md +2 -1
  2. package/_speakeasy/.github/action-inputs-config.json +4 -0
  3. package/esm/funcs/analyticsGetUserActivity.js +2 -1
  4. package/esm/funcs/apiKeysCreate.js +2 -1
  5. package/esm/funcs/apiKeysDelete.js +2 -1
  6. package/esm/funcs/apiKeysGet.js +2 -1
  7. package/esm/funcs/apiKeysGetCurrentKeyMetadata.js +2 -1
  8. package/esm/funcs/apiKeysList.js +2 -1
  9. package/esm/funcs/apiKeysUpdate.js +2 -1
  10. package/esm/funcs/betaResponsesSend.js +2 -1
  11. package/esm/funcs/call-model.d.ts +19 -70
  12. package/esm/funcs/call-model.js +29 -71
  13. package/esm/funcs/chatSend.js +2 -1
  14. package/esm/funcs/creditsCreateCoinbaseCharge.js +2 -1
  15. package/esm/funcs/creditsGetCredits.js +2 -1
  16. package/esm/funcs/embeddingsGenerate.js +2 -1
  17. package/esm/funcs/embeddingsListModels.js +2 -1
  18. package/esm/funcs/endpointsList.js +2 -1
  19. package/esm/funcs/endpointsListZdrEndpoints.js +2 -1
  20. package/esm/funcs/generationsGetGeneration.js +2 -1
  21. package/esm/funcs/guardrailsBulkAssignKeys.js +2 -1
  22. package/esm/funcs/guardrailsBulkAssignMembers.js +2 -1
  23. package/esm/funcs/guardrailsBulkUnassignKeys.js +2 -1
  24. package/esm/funcs/guardrailsBulkUnassignMembers.js +2 -1
  25. package/esm/funcs/guardrailsCreate.js +2 -1
  26. package/esm/funcs/guardrailsDelete.js +2 -1
  27. package/esm/funcs/guardrailsGet.js +2 -1
  28. package/esm/funcs/guardrailsList.js +2 -1
  29. package/esm/funcs/guardrailsListGuardrailKeyAssignments.js +2 -1
  30. package/esm/funcs/guardrailsListGuardrailMemberAssignments.js +2 -1
  31. package/esm/funcs/guardrailsListKeyAssignments.js +2 -1
  32. package/esm/funcs/guardrailsListMemberAssignments.js +2 -1
  33. package/esm/funcs/guardrailsUpdate.js +2 -1
  34. package/esm/funcs/modelsCount.d.ts +1 -1
  35. package/esm/funcs/modelsCount.js +9 -4
  36. package/esm/funcs/modelsList.js +3 -1
  37. package/esm/funcs/modelsListForUser.js +2 -1
  38. package/esm/funcs/oAuthCreateAuthCode.d.ts +1 -1
  39. package/esm/funcs/oAuthCreateAuthCode.js +4 -3
  40. package/esm/funcs/oAuthExchangeAuthCodeForAPIKey.js +2 -1
  41. package/esm/funcs/providersList.js +2 -1
  42. package/esm/index.d.ts +22 -23
  43. package/esm/index.js +20 -17
  44. package/esm/lib/anthropic-compat.d.ts +2 -1
  45. package/esm/lib/anthropic-compat.js +1 -2
  46. package/esm/lib/async-params.d.ts +19 -5
  47. package/esm/lib/async-params.js +5 -1
  48. package/esm/lib/chat-compat.d.ts +1 -1
  49. package/esm/lib/chat-compat.js +1 -2
  50. package/esm/lib/claude-type-guards.d.ts +2 -2
  51. package/esm/lib/config.d.ts +8 -10
  52. package/esm/lib/config.js +2 -2
  53. package/esm/lib/conversation-state.d.ts +1 -1
  54. package/esm/lib/conversation-state.js +35 -32
  55. package/esm/lib/env.d.ts +6 -2
  56. package/esm/lib/env.js +7 -3
  57. package/esm/lib/model-result.d.ts +73 -17
  58. package/esm/lib/model-result.js +329 -125
  59. package/esm/lib/sdks.d.ts +1 -1
  60. package/esm/lib/sdks.js +8 -28
  61. package/esm/lib/stream-transformers.d.ts +5 -4
  62. package/esm/lib/stream-transformers.js +24 -29
  63. package/esm/lib/stream-type-guards.js +8 -32
  64. package/esm/lib/tool-context.d.ts +68 -0
  65. package/esm/lib/tool-context.js +175 -0
  66. package/esm/lib/tool-executor.d.ts +9 -5
  67. package/esm/lib/tool-executor.js +26 -16
  68. package/esm/lib/tool-orchestrator.d.ts +2 -2
  69. package/esm/lib/tool-types.d.ts +101 -14
  70. package/esm/lib/tool-types.js +17 -0
  71. package/esm/lib/tool.d.ts +49 -60
  72. package/esm/lib/tool.js +15 -19
  73. package/esm/lib/turn-context.d.ts +1 -1
  74. package/esm/models/assistantmessage.d.ts +6 -0
  75. package/esm/models/assistantmessage.js +3 -0
  76. package/esm/models/chatcompletionaudiooutput.d.ts +38 -0
  77. package/esm/models/chatcompletionaudiooutput.js +36 -0
  78. package/esm/models/chatgenerationparams.d.ts +75 -6
  79. package/esm/models/chatgenerationparams.js +42 -0
  80. package/esm/models/chatmessagecontentitem.d.ts +3 -2
  81. package/esm/models/chatmessagecontentitem.js +3 -0
  82. package/esm/models/chatmessagecontentitemcachecontrol.d.ts +5 -5
  83. package/esm/models/chatmessagecontentitemcachecontrol.js +5 -7
  84. package/esm/models/chatmessagecontentitemfile.d.ts +57 -0
  85. package/esm/models/chatmessagecontentitemfile.js +59 -0
  86. package/esm/models/chatmessagetokenlogprobs.d.ts +1 -1
  87. package/esm/models/chatmessagetokenlogprobs.js +2 -1
  88. package/esm/models/chatresponse.d.ts +1 -1
  89. package/esm/models/chatresponse.js +1 -1
  90. package/esm/models/chatstreamingmessagechunk.d.ts +2 -0
  91. package/esm/models/chatstreamingmessagechunk.js +2 -0
  92. package/esm/models/chatstreamingresponsechunk.d.ts +1 -1
  93. package/esm/models/chatstreamingresponsechunk.js +1 -1
  94. package/esm/models/compoundfilter.d.ts +36 -0
  95. package/esm/models/compoundfilter.js +32 -0
  96. package/esm/models/conflictresponseerrordata.d.ts +17 -0
  97. package/esm/models/conflictresponseerrordata.js +16 -0
  98. package/esm/models/contextcompressionengine.d.ts +15 -0
  99. package/esm/models/contextcompressionengine.js +14 -0
  100. package/esm/models/datetimeservertool.d.ts +30 -0
  101. package/esm/models/datetimeservertool.js +22 -0
  102. package/esm/models/defaultparameters.d.ts +3 -0
  103. package/esm/models/defaultparameters.js +6 -0
  104. package/esm/models/errors/conflictresponseerror.d.ts +33 -0
  105. package/esm/models/errors/conflictresponseerror.js +42 -0
  106. package/esm/models/errors/index.d.ts +1 -0
  107. package/esm/models/errors/index.js +1 -0
  108. package/esm/models/index.d.ts +23 -4
  109. package/esm/models/index.js +23 -4
  110. package/esm/models/openairesponsesinputunion.d.ts +32 -1
  111. package/esm/models/openairesponsesinputunion.js +53 -1
  112. package/esm/models/openresponsesapplypatchtool.d.ts +20 -0
  113. package/esm/models/openresponsesapplypatchtool.js +21 -0
  114. package/esm/models/openresponsescodeinterpretertool.d.ts +68 -0
  115. package/esm/models/openresponsescodeinterpretertool.js +85 -0
  116. package/esm/models/openresponsescomputertool.d.ts +39 -0
  117. package/esm/models/openresponsescomputertool.js +50 -0
  118. package/esm/models/openresponsescustomtool.d.ts +75 -0
  119. package/esm/models/openresponsescustomtool.js +95 -0
  120. package/esm/models/openresponseseasyinputmessage.d.ts +30 -4
  121. package/esm/models/openresponseseasyinputmessage.js +28 -2
  122. package/esm/models/openresponsesfilesearchtool.d.ts +111 -0
  123. package/esm/models/openresponsesfilesearchtool.js +180 -0
  124. package/esm/models/openresponsesfunctioncalloutput.d.ts +46 -7
  125. package/esm/models/openresponsesfunctioncalloutput.js +56 -4
  126. package/esm/models/openresponsesfunctionshelltool.d.ts +20 -0
  127. package/esm/models/openresponsesfunctionshelltool.js +21 -0
  128. package/esm/models/openresponsesimagegenerationtool.d.ts +125 -0
  129. package/esm/models/openresponsesimagegenerationtool.js +153 -0
  130. package/esm/models/openresponsesinputmessageitem.d.ts +2 -2
  131. package/esm/models/openresponsesinputmessageitem.js +2 -2
  132. package/esm/models/openresponsesinputunion.d.ts +207 -0
  133. package/esm/models/openresponsesinputunion.js +225 -0
  134. package/esm/models/openresponseslocalshelltool.d.ts +20 -0
  135. package/esm/models/openresponseslocalshelltool.js +21 -0
  136. package/esm/models/openresponsesmcptool.d.ts +128 -0
  137. package/esm/models/openresponsesmcptool.js +173 -0
  138. package/esm/models/openresponsesnonstreamingresponse.d.ts +11 -2
  139. package/esm/models/openresponsesnonstreamingresponse.js +27 -0
  140. package/esm/models/openresponsesrequest.d.ts +53 -11
  141. package/esm/models/openresponsesrequest.js +51 -2
  142. package/esm/models/openresponsesstreamevent.d.ts +52 -4
  143. package/esm/models/openresponsesstreamevent.js +54 -3
  144. package/esm/models/openresponseswebsearch20250826tool.d.ts +29 -0
  145. package/esm/models/openresponseswebsearch20250826tool.js +23 -0
  146. package/esm/models/openresponseswebsearchcallcompleted.d.ts +16 -0
  147. package/esm/models/openresponseswebsearchcallcompleted.js +24 -0
  148. package/esm/models/openresponseswebsearchcallinprogress.d.ts +16 -0
  149. package/esm/models/openresponseswebsearchcallinprogress.js +24 -0
  150. package/esm/models/openresponseswebsearchcallsearching.d.ts +16 -0
  151. package/esm/models/openresponseswebsearchcallsearching.js +24 -0
  152. package/esm/models/openresponseswebsearchpreview20250311tool.d.ts +44 -0
  153. package/esm/models/openresponseswebsearchpreview20250311tool.js +51 -0
  154. package/esm/models/openresponseswebsearchpreviewtool.d.ts +44 -0
  155. package/esm/models/openresponseswebsearchpreviewtool.js +47 -0
  156. package/esm/models/openresponseswebsearchtool.d.ts +29 -0
  157. package/esm/models/openresponseswebsearchtool.js +23 -0
  158. package/esm/models/operations/bulkassignkeystoguardrail.d.ts +16 -3
  159. package/esm/models/operations/bulkassignkeystoguardrail.js +2 -2
  160. package/esm/models/operations/bulkassignmemberstoguardrail.d.ts +16 -3
  161. package/esm/models/operations/bulkassignmemberstoguardrail.js +2 -2
  162. package/esm/models/operations/bulkunassignkeysfromguardrail.d.ts +16 -3
  163. package/esm/models/operations/bulkunassignkeysfromguardrail.js +2 -2
  164. package/esm/models/operations/bulkunassignmembersfromguardrail.d.ts +16 -3
  165. package/esm/models/operations/bulkunassignmembersfromguardrail.js +2 -2
  166. package/esm/models/operations/createauthkeyscode.d.ts +16 -3
  167. package/esm/models/operations/createauthkeyscode.js +2 -2
  168. package/esm/models/operations/createcoinbasecharge.d.ts +16 -3
  169. package/esm/models/operations/createcoinbasecharge.js +2 -2
  170. package/esm/models/operations/createembeddings.d.ts +16 -3
  171. package/esm/models/operations/createembeddings.js +2 -2
  172. package/esm/models/operations/createguardrail.d.ts +25 -3
  173. package/esm/models/operations/createguardrail.js +6 -2
  174. package/esm/models/operations/createkeys.d.ts +16 -3
  175. package/esm/models/operations/createkeys.js +2 -2
  176. package/esm/models/operations/createresponses.d.ts +16 -3
  177. package/esm/models/operations/createresponses.js +2 -2
  178. package/esm/models/operations/deleteguardrail.d.ts +16 -3
  179. package/esm/models/operations/deleteguardrail.js +2 -2
  180. package/esm/models/operations/deletekeys.d.ts +16 -3
  181. package/esm/models/operations/deletekeys.js +2 -2
  182. package/esm/models/operations/exchangeauthcodeforapikey.d.ts +16 -3
  183. package/esm/models/operations/exchangeauthcodeforapikey.js +2 -2
  184. package/esm/models/operations/getcredits.d.ts +16 -3
  185. package/esm/models/operations/getcredits.js +2 -2
  186. package/esm/models/operations/getcurrentkey.d.ts +16 -3
  187. package/esm/models/operations/getcurrentkey.js +2 -2
  188. package/esm/models/operations/getgeneration.d.ts +25 -3
  189. package/esm/models/operations/getgeneration.js +7 -2
  190. package/esm/models/operations/getguardrail.d.ts +20 -3
  191. package/esm/models/operations/getguardrail.js +4 -2
  192. package/esm/models/operations/getkey.d.ts +16 -3
  193. package/esm/models/operations/getkey.js +2 -2
  194. package/esm/models/operations/getmodels.d.ts +21 -3
  195. package/esm/models/operations/getmodels.js +4 -2
  196. package/esm/models/operations/getuseractivity.d.ts +16 -3
  197. package/esm/models/operations/getuseractivity.js +2 -2
  198. package/esm/models/operations/list.d.ts +16 -3
  199. package/esm/models/operations/list.js +2 -2
  200. package/esm/models/operations/listembeddingsmodels.d.ts +16 -3
  201. package/esm/models/operations/listembeddingsmodels.js +2 -2
  202. package/esm/models/operations/listendpoints.d.ts +16 -3
  203. package/esm/models/operations/listendpoints.js +2 -2
  204. package/esm/models/operations/listendpointszdr.d.ts +16 -3
  205. package/esm/models/operations/listendpointszdr.js +2 -2
  206. package/esm/models/operations/listguardrailkeyassignments.d.ts +16 -3
  207. package/esm/models/operations/listguardrailkeyassignments.js +2 -2
  208. package/esm/models/operations/listguardrailmemberassignments.d.ts +16 -3
  209. package/esm/models/operations/listguardrailmemberassignments.js +2 -2
  210. package/esm/models/operations/listguardrails.d.ts +20 -3
  211. package/esm/models/operations/listguardrails.js +4 -2
  212. package/esm/models/operations/listkeyassignments.d.ts +16 -3
  213. package/esm/models/operations/listkeyassignments.js +2 -2
  214. package/esm/models/operations/listmemberassignments.d.ts +16 -3
  215. package/esm/models/operations/listmemberassignments.js +2 -2
  216. package/esm/models/operations/listmodelscount.d.ts +21 -3
  217. package/esm/models/operations/listmodelscount.js +4 -2
  218. package/esm/models/operations/listmodelsuser.d.ts +16 -3
  219. package/esm/models/operations/listmodelsuser.js +2 -2
  220. package/esm/models/operations/listproviders.d.ts +16 -3
  221. package/esm/models/operations/listproviders.js +2 -2
  222. package/esm/models/operations/sendchatcompletionrequest.d.ts +16 -3
  223. package/esm/models/operations/sendchatcompletionrequest.js +2 -2
  224. package/esm/models/operations/updateguardrail.d.ts +25 -3
  225. package/esm/models/operations/updateguardrail.js +6 -2
  226. package/esm/models/operations/updatekeys.d.ts +16 -3
  227. package/esm/models/operations/updatekeys.js +2 -2
  228. package/esm/models/outputmessage.d.ts +23 -0
  229. package/esm/models/outputmessage.js +24 -0
  230. package/esm/models/outputmodality.d.ts +1 -0
  231. package/esm/models/outputmodality.js +1 -0
  232. package/esm/models/providername.d.ts +1 -0
  233. package/esm/models/providername.js +1 -0
  234. package/esm/models/providerpreferences.d.ts +4 -0
  235. package/esm/models/providerpreferences.js +4 -0
  236. package/esm/models/providersort.d.ts +1 -0
  237. package/esm/models/providersort.js +1 -0
  238. package/esm/models/providersortconfig.d.ts +1 -0
  239. package/esm/models/providersortconfig.js +1 -0
  240. package/esm/models/responseoutputtext.d.ts +8 -8
  241. package/esm/models/responseoutputtext.js +10 -9
  242. package/esm/models/responsesoutputitem.d.ts +2 -13
  243. package/esm/models/responsesoutputitem.js +8 -6
  244. package/esm/models/responsesoutputitemreasoning.d.ts +2 -31
  245. package/esm/models/responsesoutputitemreasoning.js +2 -44
  246. package/esm/models/responsesoutputmessage.d.ts +24 -32
  247. package/esm/models/responsesoutputmessage.js +26 -47
  248. package/esm/models/responsesservertooloutput.d.ts +42 -0
  249. package/esm/models/responsesservertooloutput.js +44 -0
  250. package/esm/models/responseswebsearchcalloutput.d.ts +90 -5
  251. package/esm/models/responseswebsearchcalloutput.js +113 -5
  252. package/esm/models/responseswebsearchservertool.d.ts +35 -0
  253. package/esm/models/responseswebsearchservertool.js +28 -0
  254. package/esm/models/tooldefinitionjson.d.ts +38 -20
  255. package/esm/models/tooldefinitionjson.js +22 -11
  256. package/esm/models/websearchengine.d.ts +2 -0
  257. package/esm/models/websearchengine.js +2 -0
  258. package/esm/models/websearchservertool.d.ts +116 -0
  259. package/esm/models/websearchservertool.js +77 -0
  260. package/esm/models/websearchshorthand.d.ts +215 -0
  261. package/esm/models/websearchshorthand.js +138 -0
  262. package/esm/sdk/sdk.d.ts +4 -1
  263. package/esm/sdk/sdk.js +0 -1
  264. package/esm/types/index.d.ts +0 -2
  265. package/esm/types/index.js +0 -1
  266. package/jsr.json +1 -1
  267. package/package.json +11 -6
  268. package/turbo.json +10 -0
  269. package/esm/models/openresponsesinput.d.ts +0 -28
  270. package/esm/models/openresponsesinput.js +0 -54
  271. package/esm/models/openresponseslogprobs.d.ts +0 -16
  272. package/esm/models/openresponseslogprobs.js +0 -22
  273. package/esm/models/openresponsestoplogprobs.d.ts +0 -14
  274. package/esm/models/openresponsestoplogprobs.js +0 -15
package/esm/lib/env.js CHANGED
@@ -7,7 +7,8 @@ import { dlv } from "./dlv.js";
7
7
  export const envSchema = z.object({
8
8
  OPENROUTER_API_KEY: z.string().optional(),
9
9
  OPENROUTER_HTTP_REFERER: z.string().optional(),
10
- OPENROUTER_X_TITLE: z.string().optional(),
10
+ OPENROUTER_APP_TITLE: z.string().optional(),
11
+ OPENROUTER_APP_CATEGORIES: z.string().optional(),
11
12
  OPENROUTER_DEBUG: z.coerce.boolean().optional(),
12
13
  });
13
14
  /**
@@ -53,8 +54,11 @@ export function fillGlobals(options) {
53
54
  if (typeof envVars.OPENROUTER_HTTP_REFERER !== "undefined") {
54
55
  clone.httpReferer ?? (clone.httpReferer = envVars.OPENROUTER_HTTP_REFERER);
55
56
  }
56
- if (typeof envVars.OPENROUTER_X_TITLE !== "undefined") {
57
- clone.xTitle ?? (clone.xTitle = envVars.OPENROUTER_X_TITLE);
57
+ if (typeof envVars.OPENROUTER_APP_TITLE !== "undefined") {
58
+ clone.appTitle ?? (clone.appTitle = envVars.OPENROUTER_APP_TITLE);
59
+ }
60
+ if (typeof envVars.OPENROUTER_APP_CATEGORIES !== "undefined") {
61
+ clone.appCategories ?? (clone.appCategories = envVars.OPENROUTER_APP_CATEGORIES);
58
62
  }
59
63
  return clone;
60
64
  }
@@ -2,15 +2,21 @@ import type { OpenRouterCore } from '../core.js';
2
2
  import type * as models from '../models/index.js';
3
3
  import type { CallModelInput } from './async-params.js';
4
4
  import type { RequestOptions } from './sdks.js';
5
- import type { ConversationState, ResponseStreamEvent, InferToolEventsUnion, InferToolOutputsUnion, ParsedToolCall, StateAccessor, StopWhen, Tool, ToolStreamEvent, TurnContext } from './tool-types.js';
5
+ import type { $ZodObject, $ZodShape } from 'zod/v4/core';
6
+ import type { ConversationState, ToolContextMapWithShared, ResponseStreamEvent, InferToolEventsUnion, InferToolOutputsUnion, ParsedToolCall, StateAccessor, StopWhen, Tool, ToolStreamEvent, TurnContext } from './tool-types.js';
7
+ import { type ContextInput } from './tool-context.js';
6
8
  import { type StreamableOutputItem } from './stream-transformers.js';
7
- export interface GetResponseOptions<TTools extends readonly Tool[]> {
8
- request: CallModelInput<TTools>;
9
+ export interface GetResponseOptions<TTools extends readonly Tool[], TShared extends Record<string, unknown> = Record<string, never>> {
10
+ request: CallModelInput<TTools, TShared>;
9
11
  client: OpenRouterCore;
10
12
  options?: RequestOptions;
11
13
  tools?: TTools;
12
14
  stopWhen?: StopWhen<TTools>;
13
15
  state?: StateAccessor<TTools>;
16
+ /** Typed context data passed to tools via contextSchema. `shared` key for shared context. */
17
+ context?: ContextInput<ToolContextMapWithShared<TTools, TShared>>;
18
+ /** Zod schema for shared context validation */
19
+ sharedContextSchema?: $ZodObject<$ZodShape>;
14
20
  /**
15
21
  * Call-level approval check - overrides tool-level requireApproval setting
16
22
  * Receives the tool call and turn context, can be sync or async
@@ -18,6 +24,10 @@ export interface GetResponseOptions<TTools extends readonly Tool[]> {
18
24
  requireApproval?: (toolCall: ParsedToolCall<TTools[number]>, context: TurnContext) => boolean | Promise<boolean>;
19
25
  approveToolCalls?: string[];
20
26
  rejectToolCalls?: string[];
27
+ /** Callback invoked at the start of each tool execution turn */
28
+ onTurnStart?: (context: TurnContext) => void | Promise<void>;
29
+ /** Callback invoked at the end of each tool execution turn */
30
+ onTurnEnd?: (context: TurnContext, response: models.OpenResponsesNonStreamingResponse) => void | Promise<void>;
21
31
  }
22
32
  /**
23
33
  * A wrapper around a streaming response that provides multiple consumption patterns.
@@ -37,8 +47,9 @@ export interface GetResponseOptions<TTools extends readonly Tool[]> {
37
47
  * ReusableReadableStream implementation.
38
48
  *
39
49
  * @template TTools - The tools array type to enable typed tool calls and results
50
+ * @template TShared - The shape of the shared context (inferred from sharedContextSchema)
40
51
  */
41
- export declare class ModelResult<TTools extends readonly Tool[]> {
52
+ export declare class ModelResult<TTools extends readonly Tool[], TShared extends Record<string, unknown> = Record<string, never>> {
42
53
  private reusableStream;
43
54
  private textPromise;
44
55
  private options;
@@ -54,13 +65,42 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
54
65
  private approvedToolCalls;
55
66
  private rejectedToolCalls;
56
67
  private isResumingFromApproval;
57
- constructor(options: GetResponseOptions<TTools>);
68
+ private turnBroadcaster;
69
+ private initialStreamPipeStarted;
70
+ private initialPipePromise;
71
+ private contextStore;
72
+ constructor(options: GetResponseOptions<TTools, TShared>);
58
73
  /**
59
- * Get or create the tool event broadcaster (lazy initialization).
60
- * Ensures only one broadcaster exists for the lifetime of this ModelResult.
61
- * Broadcasts both preliminary results and final tool results.
74
+ * Get or create the unified turn broadcaster (lazy initialization).
75
+ * Broadcasts all API stream events, tool events, and turn delimiters across turns.
62
76
  */
63
- private ensureBroadcaster;
77
+ private ensureTurnBroadcaster;
78
+ /**
79
+ * Start piping the initial stream into the turn broadcaster.
80
+ * Idempotent — only starts once even if called multiple times.
81
+ * Wraps the initial stream events with turn.start(0) / turn.end(0) delimiters.
82
+ */
83
+ private startInitialStreamPipe;
84
+ /**
85
+ * Pipe a follow-up stream into the turn broadcaster and capture the completed response.
86
+ * Emits turn.start / turn.end delimiters around the stream events.
87
+ */
88
+ private pipeAndConsumeStream;
89
+ /**
90
+ * Push a tool result event to both the legacy tool event broadcaster
91
+ * and the unified turn broadcaster.
92
+ */
93
+ private broadcastToolResult;
94
+ /**
95
+ * Push a preliminary result event to both the legacy tool event broadcaster
96
+ * and the unified turn broadcaster.
97
+ */
98
+ private broadcastPreliminaryResult;
99
+ /**
100
+ * Set up the turn broadcaster with tool execution and return the consumer.
101
+ * Used by stream methods that need to iterate over all turns.
102
+ */
103
+ private startTurnBroadcasterExecution;
64
104
  /**
65
105
  * Type guard to check if a value is a non-streaming response
66
106
  * Only requires 'output' field and absence of 'toReadableStream' method
@@ -162,10 +202,11 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
162
202
  private applyNextTurnParams;
163
203
  /**
164
204
  * Make a follow-up API request with tool results.
165
- * Continues the conversation after tool execution.
205
+ * Uses streaming and pipes events through the turn broadcaster when available.
166
206
  *
167
207
  * @param currentResponse - The response that contained tool calls
168
208
  * @param toolResults - The results from executing those tools
209
+ * @param turnNumber - The turn number for this follow-up request
169
210
  * @returns The new response from the API
170
211
  */
171
212
  private makeFollowupRequest;
@@ -233,14 +274,15 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
233
274
  */
234
275
  getResponse(): Promise<models.OpenResponsesNonStreamingResponse>;
235
276
  /**
236
- * Stream all response events as they arrive.
277
+ * Stream all response events as they arrive across all turns.
237
278
  * Multiple consumers can iterate over this stream concurrently.
238
- * Preliminary tool results and tool results are streamed in REAL-TIME as generator tools yield.
279
+ * Includes API events, tool events, and turn.start/turn.end delimiters.
239
280
  */
240
281
  getFullResponsesStream(): AsyncIterableIterator<ResponseStreamEvent<InferToolEventsUnion<TTools>, InferToolOutputsUnion<TTools>>>;
241
282
  /**
242
- * Stream only text deltas as they arrive.
243
- * This filters the full event stream to only yield text content.
283
+ * Stream only text deltas as they arrive from all turns.
284
+ * This filters the full event stream to only yield text content,
285
+ * including text from follow-up responses in multi-turn tool loops.
244
286
  */
245
287
  getTextStream(): AsyncIterableIterator<string>;
246
288
  /**
@@ -271,12 +313,13 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
271
313
  */
272
314
  getNewMessagesStream(): AsyncIterableIterator<models.ResponsesOutputMessage | models.OpenResponsesFunctionCallOutput | models.ResponsesOutputItemFunctionCall>;
273
315
  /**
274
- * Stream only reasoning deltas as they arrive.
275
- * This filters the full event stream to only yield reasoning content.
316
+ * Stream only reasoning deltas as they arrive from all turns.
317
+ * This filters the full event stream to only yield reasoning content,
318
+ * including reasoning from follow-up responses in multi-turn tool loops.
276
319
  */
277
320
  getReasoningStream(): AsyncIterableIterator<string>;
278
321
  /**
279
- * Stream tool call argument deltas and preliminary results.
322
+ * Stream tool call argument deltas and preliminary results from all turns.
280
323
  * Preliminary results are streamed in REAL-TIME as generator tools yield.
281
324
  * - Tool call argument deltas as { type: "delta", content: string }
282
325
  * - Preliminary results as { type: "preliminary_result", toolCallId, result }
@@ -294,6 +337,19 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
294
337
  * Each iteration yields a complete tool call with parsed arguments.
295
338
  */
296
339
  getToolCallsStream(): AsyncIterableIterator<ParsedToolCall<TTools[number]>>;
340
+ /**
341
+ * Returns an async iterable that emits a full context snapshot every time
342
+ * any tool calls ctx.update(). Can be consumed concurrently with getText(),
343
+ * getToolStream(), etc.
344
+ *
345
+ * @example
346
+ * ```typescript
347
+ * for await (const snapshot of result.getContextUpdates()) {
348
+ * console.log('Context changed:', snapshot);
349
+ * }
350
+ * ```
351
+ */
352
+ getContextUpdates(): AsyncGenerator<ToolContextMapWithShared<TTools, TShared>>;
297
353
  /**
298
354
  * Cancel the underlying stream and all consumers
299
355
  */