@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
@@ -38,7 +38,8 @@ async function $do(client, request, options) {
38
38
  "Content-Type": "application/json",
39
39
  Accept: "application/json",
40
40
  "HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
41
- "X-Title": encodeSimple("X-Title", payload["X-Title"] ?? client._options.xTitle, { explode: false, charEncoding: "none" }),
41
+ "X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
42
+ "X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
42
43
  }));
43
44
  const secConfig = await extractSecurity(client._options.apiKey);
44
45
  const securityInput = secConfig == null ? {} : { apiKey: secConfig };
@@ -12,5 +12,5 @@ import { Result } from "../types/fp.js";
12
12
  /**
13
13
  * Get total count of available models
14
14
  */
15
- export declare function modelsCount(client: OpenRouterCore, request?: operations.ListModelsCountRequest | undefined, options?: RequestOptions): APIPromise<Result<models.ModelsCountResponse, errors.InternalServerResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
15
+ export declare function modelsCount(client: OpenRouterCore, request?: operations.ListModelsCountRequest | undefined, options?: RequestOptions): APIPromise<Result<models.ModelsCountResponse, errors.BadRequestResponseError | errors.InternalServerResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
16
16
  //# sourceMappingURL=modelsCount.d.ts.map
@@ -2,7 +2,7 @@
2
2
  * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
3
  * @generated-id: 371adfc67b48
4
4
  */
5
- import { encodeSimple } from "../lib/encodings.js";
5
+ import { encodeFormQuery, encodeSimple } from "../lib/encodings.js";
6
6
  import * as M from "../lib/matchers.js";
7
7
  import { compactMap } from "../lib/primitives.js";
8
8
  import { safeParse } from "../lib/schemas.js";
@@ -26,10 +26,14 @@ async function $do(client, request, options) {
26
26
  const payload = parsed.value;
27
27
  const body = null;
28
28
  const path = pathToFunc("/models/count")();
29
+ const query = encodeFormQuery({
30
+ "output_modalities": payload?.output_modalities,
31
+ });
29
32
  const headers = new Headers(compactMap({
30
33
  Accept: "application/json",
31
34
  "HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
32
- "X-Title": encodeSimple("X-Title", payload?.["X-Title"] ?? client._options.xTitle, { explode: false, charEncoding: "none" }),
35
+ "X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
36
+ "X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
33
37
  }));
34
38
  const secConfig = await extractSecurity(client._options.apiKey);
35
39
  const securityInput = secConfig == null ? {} : { apiKey: secConfig };
@@ -52,6 +56,7 @@ async function $do(client, request, options) {
52
56
  baseURL: options?.serverURL,
53
57
  path: path,
54
58
  headers: headers,
59
+ query: query,
55
60
  body: body,
56
61
  userAgent: client._options.userAgent,
57
62
  timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
@@ -62,7 +67,7 @@ async function $do(client, request, options) {
62
67
  const req = requestRes.value;
63
68
  const doResult = await client._do(req, {
64
69
  context,
65
- errorCodes: ["4XX", "500", "5XX"],
70
+ errorCodes: ["400", "4XX", "500", "5XX"],
66
71
  retryConfig: context.retryConfig,
67
72
  retryCodes: context.retryCodes,
68
73
  });
@@ -73,7 +78,7 @@ async function $do(client, request, options) {
73
78
  const responseFields = {
74
79
  HttpMeta: { Response: response, Request: req },
75
80
  };
76
- const [result] = await M.match(M.json(200, models.ModelsCountResponse$inboundSchema), M.jsonErr(500, errors.InternalServerResponseError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
81
+ const [result] = await M.match(M.json(200, models.ModelsCountResponse$inboundSchema), M.jsonErr(400, errors.BadRequestResponseError$inboundSchema), M.jsonErr(500, errors.InternalServerResponseError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
77
82
  if (!result.ok) {
78
83
  return [result, { status: "complete", request: req, response }];
79
84
  }
@@ -28,12 +28,14 @@ async function $do(client, request, options) {
28
28
  const path = pathToFunc("/models")();
29
29
  const query = encodeFormQuery({
30
30
  "category": payload?.category,
31
+ "output_modalities": payload?.output_modalities,
31
32
  "supported_parameters": payload?.supported_parameters,
32
33
  });
33
34
  const headers = new Headers(compactMap({
34
35
  Accept: "application/json",
35
36
  "HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
36
- "X-Title": encodeSimple("X-Title", payload?.["X-Title"] ?? client._options.xTitle, { explode: false, charEncoding: "none" }),
37
+ "X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
38
+ "X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
37
39
  }));
38
40
  const secConfig = await extractSecurity(client._options.apiKey);
39
41
  const securityInput = secConfig == null ? {} : { apiKey: secConfig };
@@ -32,7 +32,8 @@ async function $do(client, security, request, options) {
32
32
  const headers = new Headers(compactMap({
33
33
  Accept: "application/json",
34
34
  "HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
35
- "X-Title": encodeSimple("X-Title", payload?.["X-Title"] ?? client._options.xTitle, { explode: false, charEncoding: "none" }),
35
+ "X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
36
+ "X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
36
37
  }));
37
38
  const requestSecurity = resolveSecurity([
38
39
  {
@@ -14,5 +14,5 @@ import { Result } from "../types/fp.js";
14
14
  * @remarks
15
15
  * Create an authorization code for the PKCE flow to generate a user-controlled API key
16
16
  */
17
- export declare function oAuthCreateAuthCode(client: OpenRouterCore, request: operations.CreateAuthKeysCodeRequest, options?: RequestOptions): APIPromise<Result<operations.CreateAuthKeysCodeResponse, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.InternalServerResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
17
+ export declare function oAuthCreateAuthCode(client: OpenRouterCore, request: operations.CreateAuthKeysCodeRequest, options?: RequestOptions): APIPromise<Result<operations.CreateAuthKeysCodeResponse, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.ConflictResponseError | errors.InternalServerResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
18
18
  //# sourceMappingURL=oAuthCreateAuthCode.d.ts.map
@@ -32,7 +32,8 @@ async function $do(client, request, options) {
32
32
  "Content-Type": "application/json",
33
33
  Accept: "application/json",
34
34
  "HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
35
- "X-Title": encodeSimple("X-Title", payload["X-Title"] ?? client._options.xTitle, { explode: false, charEncoding: "none" }),
35
+ "X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
36
+ "X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
36
37
  }));
37
38
  const secConfig = await extractSecurity(client._options.apiKey);
38
39
  const securityInput = secConfig == null ? {} : { apiKey: secConfig };
@@ -65,7 +66,7 @@ async function $do(client, request, options) {
65
66
  const req = requestRes.value;
66
67
  const doResult = await client._do(req, {
67
68
  context,
68
- errorCodes: ["400", "401", "4XX", "500", "5XX"],
69
+ errorCodes: ["400", "401", "409", "4XX", "500", "5XX"],
69
70
  retryConfig: context.retryConfig,
70
71
  retryCodes: context.retryCodes,
71
72
  });
@@ -76,7 +77,7 @@ async function $do(client, request, options) {
76
77
  const responseFields = {
77
78
  HttpMeta: { Response: response, Request: req },
78
79
  };
79
- const [result] = await M.match(M.json(200, operations.CreateAuthKeysCodeResponse$inboundSchema), M.jsonErr(400, errors.BadRequestResponseError$inboundSchema), M.jsonErr(401, errors.UnauthorizedResponseError$inboundSchema), M.jsonErr(500, errors.InternalServerResponseError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
80
+ const [result] = await M.match(M.json(200, operations.CreateAuthKeysCodeResponse$inboundSchema), M.jsonErr(400, errors.BadRequestResponseError$inboundSchema), M.jsonErr(401, errors.UnauthorizedResponseError$inboundSchema), M.jsonErr(409, errors.ConflictResponseError$inboundSchema), M.jsonErr(500, errors.InternalServerResponseError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
80
81
  if (!result.ok) {
81
82
  return [result, { status: "complete", request: req, response }];
82
83
  }
@@ -32,7 +32,8 @@ async function $do(client, request, options) {
32
32
  "Content-Type": "application/json",
33
33
  Accept: "application/json",
34
34
  "HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
35
- "X-Title": encodeSimple("X-Title", payload["X-Title"] ?? client._options.xTitle, { explode: false, charEncoding: "none" }),
35
+ "X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
36
+ "X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
36
37
  }));
37
38
  const secConfig = await extractSecurity(client._options.apiKey);
38
39
  const securityInput = secConfig == null ? {} : { apiKey: secConfig };
@@ -28,7 +28,8 @@ async function $do(client, request, options) {
28
28
  const headers = new Headers(compactMap({
29
29
  Accept: "application/json",
30
30
  "HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
31
- "X-Title": encodeSimple("X-Title", payload?.["X-Title"] ?? client._options.xTitle, { explode: false, charEncoding: "none" }),
31
+ "X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
32
+ "X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
32
33
  }));
33
34
  const secConfig = await extractSecurity(client._options.apiKey);
34
35
  const securityInput = secConfig == null ? {} : { apiKey: secConfig };
package/esm/index.d.ts CHANGED
@@ -1,24 +1,23 @@
1
- export type { CallModelInput, CallModelInputWithState, FieldOrAsyncFunction, ResolvedCallModelInput, } from './lib/async-params.js';
2
- export type { Fetcher, HTTPClientOptions } from './lib/http.js';
3
- export type { ChatStreamEvent, ConversationState, ConversationStatus, ResponseStreamEvent as EnhancedResponseStreamEvent, HasApprovalTools, InferToolEvent, InferToolEventsUnion, InferToolInput, InferToolOutput, InferToolOutputsUnion, ManualTool, NextTurnParamsContext, NextTurnParamsFunctions, ParsedToolCall, PartialResponse, StateAccessor, StepResult, StopCondition, StopWhen, Tool, ToolApprovalCheck, ToolExecutionResult, ToolExecutionResultUnion, ToolHasApproval, ToolPreliminaryResultEvent, ToolResultEvent, ToolStreamEvent, ToolWithExecute, ToolWithGenerator, TurnContext, TypedToolCall, TypedToolCallUnion, UnsentToolResult, Warning, } from './lib/tool-types.js';
4
- export type { BuildTurnContextOptions } from './lib/turn-context.js';
5
- export type { ClaudeBase64ImageSource, ClaudeCacheControl, ClaudeCitationCharLocation, ClaudeCitationContentBlockLocation, ClaudeCitationPageLocation, ClaudeCitationSearchResultLocation, ClaudeCitationWebSearchResultLocation, ClaudeContentBlock, ClaudeContentBlockParam, ClaudeImageBlockParam, ClaudeMessage, ClaudeMessageParam, ClaudeRedactedThinkingBlock, ClaudeServerToolUseBlock, ClaudeStopReason, ClaudeTextBlock, ClaudeTextBlockParam, ClaudeTextCitation, ClaudeThinkingBlock, ClaudeToolResultBlockParam, ClaudeToolUseBlock, ClaudeToolUseBlockParam, ClaudeURLImageSource, ClaudeUsage, } from './models/claude-message.js';
6
- export { fromClaudeMessages, toClaudeMessage } from './lib/anthropic-compat.js';
7
- export { hasAsyncFunctions, resolveAsyncFunctions, } from './lib/async-params.js';
8
- export { fromChatMessages, toChatMessage } from './lib/chat-compat.js';
9
- export { ClaudeContentBlockType, NonClaudeMessageRole } from './lib/claude-constants.js';
10
- export { isClaudeStyleMessages } from './lib/claude-type-guards.js';
11
- export * from './lib/config.js';
12
- export * as files from './lib/files.js';
13
- export { HTTPClient } from './lib/http.js';
14
- export { applyNextTurnParamsToRequest, buildNextTurnParamsContext, executeNextTurnParamsFunctions, } from './lib/next-turn-params.js';
15
- export { finishReasonIs, hasToolCall, isStopConditionMet, maxCost, maxTokensUsed, stepCountIs, } from './lib/stop-conditions.js';
16
- export { extractUnsupportedContent, getUnsupportedContentSummary, hasUnsupportedContent, } from './lib/stream-transformers.js';
17
- export type { StreamableOutputItem } from './lib/stream-transformers.js';
18
- export { tool } from './lib/tool.js';
19
- export { hasApprovalRequiredTools, hasExecuteFunction, isGeneratorTool, isRegularExecuteTool, isToolPreliminaryResultEvent, isToolResultEvent, toolHasApprovalConfigured, ToolType, } from './lib/tool-types.js';
20
- export { buildTurnContext, normalizeInputToArray } from './lib/turn-context.js';
21
- export { appendToMessages, createInitialState, createRejectedResult, createUnsentResult, generateConversationId, partitionToolCalls, toolRequiresApproval, updateState, } from './lib/conversation-state.js';
22
- export { ToolEventBroadcaster } from './lib/tool-event-broadcaster.js';
23
- export * from './sdk/sdk.js';
1
+ export { fromClaudeMessages, toClaudeMessage } from "./lib/anthropic-compat.js";
2
+ export { hasAsyncFunctions, resolveAsyncFunctions } from "./lib/async-params.js";
3
+ export type { CallModelInput, CallModelInputWithState, ResolvedCallModelInput } from "./lib/async-params.js";
4
+ export { fromChatMessages, toChatMessage } from "./lib/chat-compat.js";
5
+ export { ClaudeContentBlockType, NonClaudeMessageRole } from "./lib/claude-constants.js";
6
+ export { isClaudeStyleMessages } from "./lib/claude-type-guards.js";
7
+ export * from "./lib/config.js";
8
+ export * as files from "./lib/files.js";
9
+ export { HTTPClient } from "./lib/http.js";
10
+ export type { Fetcher, HTTPClientOptions } from "./lib/http.js";
11
+ export { applyNextTurnParamsToRequest, buildNextTurnParamsContext, executeNextTurnParamsFunctions } from "./lib/next-turn-params.js";
12
+ export { finishReasonIs, hasToolCall, isStopConditionMet, maxCost, maxTokensUsed, stepCountIs } from "./lib/stop-conditions.js";
13
+ export { extractUnsupportedContent, getUnsupportedContentSummary, hasUnsupportedContent } from "./lib/stream-transformers.js";
14
+ export { tool } from "./lib/tool.js";
15
+ export { hasApprovalRequiredTools, hasExecuteFunction, isGeneratorTool, isRegularExecuteTool, isToolPreliminaryResultEvent, isToolResultEvent, isTurnEndEvent, isTurnStartEvent, toolHasApprovalConfigured, ToolType, } from "./lib/tool-types.js";
16
+ export type { ChatStreamEvent, ConversationState, ConversationStatus, ResponseStreamEvent, ResponseStreamEvent as EnhancedResponseStreamEvent, HasApprovalTools, InferToolEvent, InferToolEventsUnion, InferToolInput, InferToolOutput, InferToolOutputsUnion, ManualTool, NextTurnParamsContext, NextTurnParamsFunctions, ParsedToolCall, PartialResponse, StateAccessor, StepResult, StopCondition, StopWhen, Tool, ToolApprovalCheck, ToolExecutionResult, ToolExecutionResultUnion, ToolHasApproval, ToolPreliminaryResultEvent, ToolResultEvent, ToolStreamEvent, ToolWithExecute, ToolWithGenerator, TurnContext, TurnEndEvent, TurnStartEvent, TypedToolCall, TypedToolCallUnion, UnsentToolResult, Warning, } from "./lib/tool-types.js";
17
+ export { buildTurnContext, normalizeInputToArray } from "./lib/turn-context.js";
18
+ export { buildToolExecuteContext, ToolContextStore } from "./lib/tool-context.js";
19
+ export type { ContextInput } from "./lib/tool-context.js";
20
+ export { appendToMessages, createInitialState, createRejectedResult, createUnsentResult, generateConversationId, partitionToolCalls, toolRequiresApproval, updateState, } from "./lib/conversation-state.js";
21
+ export { ToolEventBroadcaster } from "./lib/tool-event-broadcaster.js";
22
+ export * from "./sdk/sdk.js";
24
23
  //# sourceMappingURL=index.d.ts.map
package/esm/index.js CHANGED
@@ -1,29 +1,32 @@
1
1
  /*
2
2
  * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ * @generated-id: f7d15e20e3c5
3
4
  */
4
5
  // Message format compatibility helpers
5
- export { fromClaudeMessages, toClaudeMessage } from './lib/anthropic-compat.js';
6
- export { hasAsyncFunctions, resolveAsyncFunctions, } from './lib/async-params.js';
7
- export { fromChatMessages, toChatMessage } from './lib/chat-compat.js';
6
+ export { fromClaudeMessages, toClaudeMessage } from "./lib/anthropic-compat.js";
7
+ export { hasAsyncFunctions, resolveAsyncFunctions } from "./lib/async-params.js";
8
+ export { fromChatMessages, toChatMessage } from "./lib/chat-compat.js";
8
9
  // Claude constants and type guards
9
- export { ClaudeContentBlockType, NonClaudeMessageRole } from './lib/claude-constants.js';
10
- export { isClaudeStyleMessages } from './lib/claude-type-guards.js';
11
- export * from './lib/config.js';
12
- export * as files from './lib/files.js';
13
- export { HTTPClient } from './lib/http.js';
10
+ export { ClaudeContentBlockType, NonClaudeMessageRole } from "./lib/claude-constants.js";
11
+ export { isClaudeStyleMessages } from "./lib/claude-type-guards.js";
12
+ export * from "./lib/config.js";
13
+ export * as files from "./lib/files.js";
14
+ export { HTTPClient } from "./lib/http.js";
14
15
  // Next turn params helpers
15
- export { applyNextTurnParamsToRequest, buildNextTurnParamsContext, executeNextTurnParamsFunctions, } from './lib/next-turn-params.js';
16
+ export { applyNextTurnParamsToRequest, buildNextTurnParamsContext, executeNextTurnParamsFunctions } from "./lib/next-turn-params.js";
16
17
  // Stop condition helpers
17
- export { finishReasonIs, hasToolCall, isStopConditionMet, maxCost, maxTokensUsed, stepCountIs, } from './lib/stop-conditions.js';
18
- export { extractUnsupportedContent, getUnsupportedContentSummary, hasUnsupportedContent, } from './lib/stream-transformers.js';
18
+ export { finishReasonIs, hasToolCall, isStopConditionMet, maxCost, maxTokensUsed, stepCountIs } from "./lib/stop-conditions.js";
19
+ export { extractUnsupportedContent, getUnsupportedContentSummary, hasUnsupportedContent } from "./lib/stream-transformers.js";
19
20
  // Tool creation helpers
20
- export { tool } from './lib/tool.js';
21
- export { hasApprovalRequiredTools, hasExecuteFunction, isGeneratorTool, isRegularExecuteTool, isToolPreliminaryResultEvent, isToolResultEvent, toolHasApprovalConfigured, ToolType, } from './lib/tool-types.js';
21
+ export { tool } from "./lib/tool.js";
22
+ export { hasApprovalRequiredTools, hasExecuteFunction, isGeneratorTool, isRegularExecuteTool, isToolPreliminaryResultEvent, isToolResultEvent, isTurnEndEvent, isTurnStartEvent, toolHasApprovalConfigured, ToolType, } from "./lib/tool-types.js";
22
23
  // Turn context helpers
23
- export { buildTurnContext, normalizeInputToArray } from './lib/turn-context.js';
24
+ export { buildTurnContext, normalizeInputToArray } from "./lib/turn-context.js";
25
+ // Tool context helpers
26
+ export { buildToolExecuteContext, ToolContextStore } from "./lib/tool-context.js";
24
27
  // Conversation state helpers
25
- export { appendToMessages, createInitialState, createRejectedResult, createUnsentResult, generateConversationId, partitionToolCalls, toolRequiresApproval, updateState, } from './lib/conversation-state.js';
28
+ export { appendToMessages, createInitialState, createRejectedResult, createUnsentResult, generateConversationId, partitionToolCalls, toolRequiresApproval, updateState, } from "./lib/conversation-state.js";
26
29
  // Real-time tool event broadcasting
27
- export { ToolEventBroadcaster } from './lib/tool-event-broadcaster.js';
28
- export * from './sdk/sdk.js';
30
+ export { ToolEventBroadcaster } from "./lib/tool-event-broadcaster.js";
31
+ export * from "./sdk/sdk.js";
29
32
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,5 @@
1
1
  import type * as models from '../models/index.js';
2
+ import type { ClaudeMessageParam } from '../models/claude-message.js';
2
3
  import { convertToClaudeMessage } from './stream-transformers.js';
3
4
  /**
4
5
  * Convert Anthropic Claude-style messages to OpenResponses input format.
@@ -25,7 +26,7 @@ import { convertToClaudeMessage } from './stream-transformers.js';
25
26
  * });
26
27
  * ```
27
28
  */
28
- export declare function fromClaudeMessages(messages: models.ClaudeMessageParam[]): models.OpenResponsesInput;
29
+ export declare function fromClaudeMessages(messages: ClaudeMessageParam[]): models.OpenResponsesInputUnion;
29
30
  /**
30
31
  * Convert an OpenResponses response to Anthropic Claude message format.
31
32
  *
@@ -1,5 +1,4 @@
1
1
  import { OpenResponsesEasyInputMessageRoleAssistant, OpenResponsesEasyInputMessageRoleUser, } from '../models/openresponseseasyinputmessage.js';
2
- import { OpenResponsesFunctionCallOutputType } from '../models/openresponsesfunctioncalloutput.js';
3
2
  import { OpenResponsesInputMessageItemRoleUser, OpenResponsesInputMessageItemRoleDeveloper } from '../models/openresponsesinputmessageitem.js';
4
3
  import { convertToClaudeMessage } from './stream-transformers.js';
5
4
  /**
@@ -25,7 +24,7 @@ function createEasyInputMessage(role, content) {
25
24
  */
26
25
  function createFunctionCallOutput(callId, output) {
27
26
  return {
28
- type: OpenResponsesFunctionCallOutputType.FunctionCallOutput,
27
+ type: "function_call_output",
29
28
  callId,
30
29
  output,
31
30
  };
@@ -1,5 +1,7 @@
1
1
  import type * as models from '../models/index.js';
2
- import type { ParsedToolCall, StateAccessor, StopWhen, Tool, TurnContext } from './tool-types.js';
2
+ import type { ToolContextMapWithShared, ParsedToolCall, StateAccessor, StopWhen, Tool, TurnContext } from './tool-types.js';
3
+ import type { OpenResponsesNonStreamingResponse } from '../models/index.js';
4
+ import type { ContextInput } from './tool-context.js';
3
5
  export type { Tool } from './tool-types.js';
4
6
  /**
5
7
  * A field can be either a value of type T or a function that computes T
@@ -8,16 +10,28 @@ export type FieldOrAsyncFunction<T> = T | ((context: TurnContext) => T | Promise
8
10
  /**
9
11
  * Base input type for callModel without approval-related fields
10
12
  */
11
- type BaseCallModelInput<TTools extends readonly Tool[] = readonly Tool[]> = {
13
+ type BaseCallModelInput<TTools extends readonly Tool[] = readonly Tool[], TShared extends Record<string, unknown> = Record<string, never>> = {
12
14
  [K in keyof Omit<models.OpenResponsesRequest, 'stream' | 'tools'>]?: FieldOrAsyncFunction<models.OpenResponsesRequest[K]>;
13
15
  } & {
14
16
  tools?: TTools;
15
17
  stopWhen?: StopWhen<TTools>;
18
+ /** Typed context data passed to tools via contextSchema. Includes optional `shared` key. */
19
+ context?: ContextInput<ToolContextMapWithShared<TTools, TShared>>;
16
20
  /**
17
21
  * Call-level approval check - overrides tool-level requireApproval setting
18
22
  * Receives the tool call and turn context, can be sync or async
19
23
  */
20
24
  requireApproval?: (toolCall: ParsedToolCall<TTools[number]>, context: TurnContext) => boolean | Promise<boolean>;
25
+ /**
26
+ * Callback invoked at the start of each tool execution turn
27
+ * Receives the turn context with the current turn number
28
+ */
29
+ onTurnStart?: (context: TurnContext) => void | Promise<void>;
30
+ /**
31
+ * Callback invoked at the end of each tool execution turn
32
+ * Receives the turn context and the completed response for that turn
33
+ */
34
+ onTurnEnd?: (context: TurnContext, response: OpenResponsesNonStreamingResponse) => void | Promise<void>;
21
35
  };
22
36
  /**
23
37
  * Approval params when state is provided (allows approve/reject)
@@ -50,11 +64,11 @@ type ApprovalParamsWithoutState = {
50
64
  * - `approveToolCalls` and `rejectToolCalls` are only valid when `state` is provided
51
65
  * - Using these without `state` will cause a TypeScript error
52
66
  */
53
- export type CallModelInput<TTools extends readonly Tool[] = readonly Tool[]> = BaseCallModelInput<TTools> & (ApprovalParamsWithState<TTools> | ApprovalParamsWithoutState);
67
+ export type CallModelInput<TTools extends readonly Tool[] = readonly Tool[], TShared extends Record<string, unknown> = Record<string, never>> = BaseCallModelInput<TTools, TShared> & (ApprovalParamsWithState<TTools> | ApprovalParamsWithoutState);
54
68
  /**
55
69
  * CallModelInput variant that requires state - use when approval workflows are needed
56
70
  */
57
- export type CallModelInputWithState<TTools extends readonly Tool[] = readonly Tool[]> = BaseCallModelInput<TTools> & ApprovalParamsWithState<TTools>;
71
+ export type CallModelInputWithState<TTools extends readonly Tool[] = readonly Tool[], TShared extends Record<string, unknown> = Record<string, never>> = BaseCallModelInput<TTools, TShared> & ApprovalParamsWithState<TTools>;
58
72
  /**
59
73
  * Resolved CallModelInput (all functions evaluated to values)
60
74
  * This is the type after all async functions have been resolved to their values
@@ -77,7 +91,7 @@ export type ResolvedCallModelInput = Omit<models.OpenResponsesRequest, 'stream'
77
91
  * temperature: (ctx) => ctx.numberOfTurns * 0.1,
78
92
  * input: 'Hello',
79
93
  * },
80
- * { numberOfTurns: 2, messageHistory: [] }
94
+ * { numberOfTurns: 2 }
81
95
  * );
82
96
  * // resolved.temperature === 0.2
83
97
  * ```
@@ -28,7 +28,7 @@ function buildResolvedRequest(entries) {
28
28
  * temperature: (ctx) => ctx.numberOfTurns * 0.1,
29
29
  * input: 'Hello',
30
30
  * },
31
- * { numberOfTurns: 2, messageHistory: [] }
31
+ * { numberOfTurns: 2 }
32
32
  * );
33
33
  * // resolved.temperature === 0.2
34
34
  * ```
@@ -43,6 +43,10 @@ export async function resolveAsyncFunctions(input, context) {
43
43
  'requireApproval', // Client-side approval check function
44
44
  'approveToolCalls', // Client-side approval decisions
45
45
  'rejectToolCalls', // Client-side rejection decisions
46
+ 'context', // Passed through via GetResponseOptions, not sent to API
47
+ 'sharedContextSchema', // Client-side schema for shared context validation
48
+ 'onTurnStart', // Client-side turn start callback
49
+ 'onTurnEnd', // Client-side turn end callback
46
50
  ]);
47
51
  // Iterate over all keys in the input
48
52
  for (const [key, value] of Object.entries(input)) {
@@ -21,7 +21,7 @@ import { extractMessageFromResponse } from "./stream-transformers.js";
21
21
  * });
22
22
  * ```
23
23
  */
24
- export declare function fromChatMessages(messages: models.Message[]): models.OpenResponsesInput;
24
+ export declare function fromChatMessages(messages: models.Message[]): models.OpenResponsesInputUnion;
25
25
  /**
26
26
  * Convert an OpenResponses response to OpenAI chat message format.
27
27
  *
@@ -1,5 +1,4 @@
1
1
  import { OpenResponsesEasyInputMessageRoleUser, OpenResponsesEasyInputMessageRoleSystem, OpenResponsesEasyInputMessageRoleAssistant, OpenResponsesEasyInputMessageRoleDeveloper, } from "../models/openresponseseasyinputmessage.js";
2
- import { OpenResponsesFunctionCallOutputType } from "../models/openresponsesfunctioncalloutput.js";
3
2
  import { extractMessageFromResponse } from "./stream-transformers.js";
4
3
  /**
5
4
  * Type guard for ToolResponseMessage
@@ -70,7 +69,7 @@ export function fromChatMessages(messages) {
70
69
  return messages.map((msg) => {
71
70
  if (isToolResponseMessage(msg)) {
72
71
  return {
73
- type: OpenResponsesFunctionCallOutputType.FunctionCallOutput,
72
+ type: "function_call_output",
74
73
  callId: msg.toolCallId,
75
74
  output: contentToString(msg.content),
76
75
  };
@@ -1,4 +1,4 @@
1
- import type * as models from "../models/index.js";
1
+ import type { ClaudeMessageParam } from "../models/claude-message.js";
2
2
  /**
3
3
  * Check if input is in Claude message format
4
4
  * Uses structural analysis to detect Claude-specific patterns
@@ -6,5 +6,5 @@ import type * as models from "../models/index.js";
6
6
  * @param input - Input to check
7
7
  * @returns True if input appears to be Claude format
8
8
  */
9
- export declare function isClaudeStyleMessages(input: unknown): input is models.ClaudeMessageParam[];
9
+ export declare function isClaudeStyleMessages(input: unknown): input is ClaudeMessageParam[];
10
10
  //# sourceMappingURL=claude-type-guards.d.ts.map
@@ -1,4 +1,3 @@
1
- import type { Hook } from "../hooks/types.js";
2
1
  import { HTTPClient } from "./http.js";
3
2
  import { Logger } from "./logger.js";
4
3
  import { RetryConfig } from "./retries.js";
@@ -19,9 +18,13 @@ export type SDKOptions = {
19
18
  */
20
19
  httpReferer?: string | undefined;
21
20
  /**
22
- * Allows setting the xTitle parameter for all supported operations
21
+ * Allows setting the appTitle parameter for all supported operations
23
22
  */
24
- xTitle?: string | undefined;
23
+ appTitle?: string | undefined;
24
+ /**
25
+ * Allows setting the appCategories parameter for all supported operations
26
+ */
27
+ appCategories?: string | undefined;
25
28
  httpClient?: HTTPClient;
26
29
  /**
27
30
  * Allows overriding the default server used by the SDK
@@ -41,18 +44,13 @@ export type SDKOptions = {
41
44
  retryConfig?: RetryConfig;
42
45
  timeoutMs?: number;
43
46
  debugLogger?: Logger;
44
- /**
45
- * Hooks for request/response lifecycle events.
46
- * Can be a single hook object or an array of hooks.
47
- */
48
- hooks?: Hook | Hook[];
49
47
  };
50
48
  export declare function serverURLFromOptions(options: SDKOptions): URL | null;
51
49
  export declare const SDK_METADATA: {
52
50
  readonly language: "typescript";
53
51
  readonly openapiDocVersion: "1.0.0";
54
- readonly sdkVersion: "0.9.11";
52
+ readonly sdkVersion: "0.10.2";
55
53
  readonly genVersion: "2.788.4";
56
- readonly userAgent: "speakeasy-sdk/typescript 0.9.11 2.788.4 1.0.0 @openrouter/sdk";
54
+ readonly userAgent: "speakeasy-sdk/typescript 0.10.2 2.788.4 1.0.0 @openrouter/sdk";
57
55
  };
58
56
  //# sourceMappingURL=config.d.ts.map
package/esm/lib/config.js CHANGED
@@ -26,8 +26,8 @@ export function serverURLFromOptions(options) {
26
26
  export const SDK_METADATA = {
27
27
  language: "typescript",
28
28
  openapiDocVersion: "1.0.0",
29
- sdkVersion: "0.9.11",
29
+ sdkVersion: "0.10.2",
30
30
  genVersion: "2.788.4",
31
- userAgent: "speakeasy-sdk/typescript 0.9.11 2.788.4 1.0.0 @openrouter/sdk",
31
+ userAgent: "speakeasy-sdk/typescript 0.10.2 2.788.4 1.0.0 @openrouter/sdk",
32
32
  };
33
33
  //# sourceMappingURL=config.js.map
@@ -18,7 +18,7 @@ export declare function updateState<TTools extends readonly Tool[] = readonly To
18
18
  /**
19
19
  * Append new items to the message history
20
20
  */
21
- export declare function appendToMessages(current: models.OpenResponsesInput, newItems: models.OpenResponsesInput1[]): models.OpenResponsesInput;
21
+ export declare function appendToMessages(current: models.OpenResponsesInputUnion, newItems: models.OpenResponsesInputUnion1[]): models.OpenResponsesInputUnion;
22
22
  /**
23
23
  * Check if a tool call requires approval
24
24
  * @param toolCall - The tool call to check
@@ -5,10 +5,11 @@ import { normalizeInputToArray } from './turn-context.js';
5
5
  function isValidUnsentToolResult(obj) {
6
6
  if (typeof obj !== 'object' || obj === null)
7
7
  return false;
8
- const candidate = obj;
9
- return (typeof candidate['callId'] === 'string' &&
10
- typeof candidate['name'] === 'string' &&
11
- 'output' in candidate);
8
+ return ('callId' in obj &&
9
+ typeof obj.callId === 'string' &&
10
+ 'name' in obj &&
11
+ typeof obj.name === 'string' &&
12
+ 'output' in obj);
12
13
  }
13
14
  /**
14
15
  * Type guard to verify an object is a valid ParsedToolCall
@@ -16,10 +17,11 @@ function isValidUnsentToolResult(obj) {
16
17
  function isValidParsedToolCall(obj) {
17
18
  if (typeof obj !== 'object' || obj === null)
18
19
  return false;
19
- const candidate = obj;
20
- return (typeof candidate['id'] === 'string' &&
21
- typeof candidate['name'] === 'string' &&
22
- 'arguments' in candidate);
20
+ return ('id' in obj &&
21
+ typeof obj.id === 'string' &&
22
+ 'name' in obj &&
23
+ typeof obj.name === 'string' &&
24
+ 'arguments' in obj);
23
25
  }
24
26
  /**
25
27
  * Generate a unique ID for a conversation
@@ -156,9 +158,9 @@ export function extractTextFromResponse(response) {
156
158
  const outputs = Array.isArray(response.output) ? response.output : [response.output];
157
159
  const textParts = [];
158
160
  for (const item of outputs) {
159
- if (item.type === 'message' && item.content) {
161
+ if (item.type === 'message' && 'content' in item && item.content) {
160
162
  for (const content of item.content) {
161
- if (content.type === 'output_text' && content.text) {
163
+ if (content.type === 'output_text' && 'text' in content && content.text) {
162
164
  textParts.push(content.text);
163
165
  }
164
166
  }
@@ -176,31 +178,32 @@ export function extractToolCallsFromResponse(response) {
176
178
  const outputs = Array.isArray(response.output) ? response.output : [response.output];
177
179
  const toolCalls = [];
178
180
  for (const item of outputs) {
179
- if (item.type === 'function_call') {
180
- let parsedArguments;
181
- if (typeof item.arguments === 'string') {
182
- try {
183
- parsedArguments = JSON.parse(item.arguments);
184
- }
185
- catch (error) {
186
- // Log warning and skip malformed tool call, similar to stream-transformers.ts
187
- console.warn(`Failed to parse arguments for tool call "${item.name}": ${error instanceof Error ? error.message : String(error)}`);
188
- continue;
189
- }
190
- }
191
- else {
192
- parsedArguments = item.arguments;
181
+ if (item.type !== 'function_call' || !('arguments' in item)) {
182
+ continue;
183
+ }
184
+ let parsedArguments;
185
+ if (typeof item.arguments === 'string') {
186
+ try {
187
+ parsedArguments = JSON.parse(item.arguments);
193
188
  }
194
- const toolCall = {
195
- id: item.callId ?? item.id ?? '',
196
- name: item.name ?? '',
197
- arguments: parsedArguments,
198
- };
199
- if (!isValidParsedToolCall(toolCall)) {
200
- throw new Error(`Invalid tool call structure for tool: ${item.name}`);
189
+ catch (error) {
190
+ // Log warning and skip malformed tool call, similar to stream-transformers.ts
191
+ console.warn(`Failed to parse arguments for tool call "${'name' in item ? item.name : 'unknown'}": ${error instanceof Error ? error.message : String(error)}`);
192
+ continue;
201
193
  }
202
- toolCalls.push(toolCall);
203
194
  }
195
+ else {
196
+ parsedArguments = item.arguments;
197
+ }
198
+ const toolCall = {
199
+ id: ('callId' in item ? item.callId : undefined) ?? item.id ?? '',
200
+ name: ('name' in item ? item.name : undefined) ?? '',
201
+ arguments: parsedArguments,
202
+ };
203
+ if (!isValidParsedToolCall(toolCall)) {
204
+ throw new Error(`Invalid tool call structure for tool: ${toolCall.name}`);
205
+ }
206
+ toolCalls.push(toolCall);
204
207
  }
205
208
  return toolCalls;
206
209
  }
package/esm/lib/env.d.ts CHANGED
@@ -7,9 +7,13 @@ export interface Env {
7
7
  */
8
8
  OPENROUTER_HTTP_REFERER?: string | undefined;
9
9
  /**
10
- * Sets the xTitle parameter for all supported operations
10
+ * Sets the appTitle parameter for all supported operations
11
11
  */
12
- OPENROUTER_X_TITLE?: string | undefined;
12
+ OPENROUTER_APP_TITLE?: string | undefined;
13
+ /**
14
+ * Sets the appCategories parameter for all supported operations
15
+ */
16
+ OPENROUTER_APP_CATEGORIES?: string | undefined;
13
17
  OPENROUTER_DEBUG?: boolean | undefined;
14
18
  }
15
19
  export declare const envSchema: z.ZodType<Env, unknown>;