@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.
- package/FUNCTIONS.md +2 -1
- package/_speakeasy/.github/action-inputs-config.json +4 -0
- package/esm/funcs/analyticsGetUserActivity.js +2 -1
- package/esm/funcs/apiKeysCreate.js +2 -1
- package/esm/funcs/apiKeysDelete.js +2 -1
- package/esm/funcs/apiKeysGet.js +2 -1
- package/esm/funcs/apiKeysGetCurrentKeyMetadata.js +2 -1
- package/esm/funcs/apiKeysList.js +2 -1
- package/esm/funcs/apiKeysUpdate.js +2 -1
- package/esm/funcs/betaResponsesSend.js +2 -1
- package/esm/funcs/call-model.d.ts +19 -70
- package/esm/funcs/call-model.js +29 -71
- package/esm/funcs/chatSend.js +2 -1
- package/esm/funcs/creditsCreateCoinbaseCharge.js +2 -1
- package/esm/funcs/creditsGetCredits.js +2 -1
- package/esm/funcs/embeddingsGenerate.js +2 -1
- package/esm/funcs/embeddingsListModels.js +2 -1
- package/esm/funcs/endpointsList.js +2 -1
- package/esm/funcs/endpointsListZdrEndpoints.js +2 -1
- package/esm/funcs/generationsGetGeneration.js +2 -1
- package/esm/funcs/guardrailsBulkAssignKeys.js +2 -1
- package/esm/funcs/guardrailsBulkAssignMembers.js +2 -1
- package/esm/funcs/guardrailsBulkUnassignKeys.js +2 -1
- package/esm/funcs/guardrailsBulkUnassignMembers.js +2 -1
- package/esm/funcs/guardrailsCreate.js +2 -1
- package/esm/funcs/guardrailsDelete.js +2 -1
- package/esm/funcs/guardrailsGet.js +2 -1
- package/esm/funcs/guardrailsList.js +2 -1
- package/esm/funcs/guardrailsListGuardrailKeyAssignments.js +2 -1
- package/esm/funcs/guardrailsListGuardrailMemberAssignments.js +2 -1
- package/esm/funcs/guardrailsListKeyAssignments.js +2 -1
- package/esm/funcs/guardrailsListMemberAssignments.js +2 -1
- package/esm/funcs/guardrailsUpdate.js +2 -1
- package/esm/funcs/modelsCount.d.ts +1 -1
- package/esm/funcs/modelsCount.js +9 -4
- package/esm/funcs/modelsList.js +3 -1
- package/esm/funcs/modelsListForUser.js +2 -1
- package/esm/funcs/oAuthCreateAuthCode.d.ts +1 -1
- package/esm/funcs/oAuthCreateAuthCode.js +4 -3
- package/esm/funcs/oAuthExchangeAuthCodeForAPIKey.js +2 -1
- package/esm/funcs/providersList.js +2 -1
- package/esm/index.d.ts +22 -23
- package/esm/index.js +20 -17
- package/esm/lib/anthropic-compat.d.ts +2 -1
- package/esm/lib/anthropic-compat.js +1 -2
- package/esm/lib/async-params.d.ts +19 -5
- package/esm/lib/async-params.js +5 -1
- package/esm/lib/chat-compat.d.ts +1 -1
- package/esm/lib/chat-compat.js +1 -2
- package/esm/lib/claude-type-guards.d.ts +2 -2
- package/esm/lib/config.d.ts +8 -10
- package/esm/lib/config.js +2 -2
- package/esm/lib/conversation-state.d.ts +1 -1
- package/esm/lib/conversation-state.js +35 -32
- package/esm/lib/env.d.ts +6 -2
- package/esm/lib/env.js +7 -3
- package/esm/lib/model-result.d.ts +73 -17
- package/esm/lib/model-result.js +329 -125
- package/esm/lib/sdks.d.ts +1 -1
- package/esm/lib/sdks.js +8 -28
- package/esm/lib/stream-transformers.d.ts +5 -4
- package/esm/lib/stream-transformers.js +24 -29
- package/esm/lib/stream-type-guards.js +8 -32
- package/esm/lib/tool-context.d.ts +68 -0
- package/esm/lib/tool-context.js +175 -0
- package/esm/lib/tool-executor.d.ts +9 -5
- package/esm/lib/tool-executor.js +26 -16
- package/esm/lib/tool-orchestrator.d.ts +2 -2
- package/esm/lib/tool-types.d.ts +101 -14
- package/esm/lib/tool-types.js +17 -0
- package/esm/lib/tool.d.ts +49 -60
- package/esm/lib/tool.js +15 -19
- package/esm/lib/turn-context.d.ts +1 -1
- package/esm/models/assistantmessage.d.ts +6 -0
- package/esm/models/assistantmessage.js +3 -0
- package/esm/models/chatcompletionaudiooutput.d.ts +38 -0
- package/esm/models/chatcompletionaudiooutput.js +36 -0
- package/esm/models/chatgenerationparams.d.ts +75 -6
- package/esm/models/chatgenerationparams.js +42 -0
- package/esm/models/chatmessagecontentitem.d.ts +3 -2
- package/esm/models/chatmessagecontentitem.js +3 -0
- package/esm/models/chatmessagecontentitemcachecontrol.d.ts +5 -5
- package/esm/models/chatmessagecontentitemcachecontrol.js +5 -7
- package/esm/models/chatmessagecontentitemfile.d.ts +57 -0
- package/esm/models/chatmessagecontentitemfile.js +59 -0
- package/esm/models/chatmessagetokenlogprobs.d.ts +1 -1
- package/esm/models/chatmessagetokenlogprobs.js +2 -1
- package/esm/models/chatresponse.d.ts +1 -1
- package/esm/models/chatresponse.js +1 -1
- package/esm/models/chatstreamingmessagechunk.d.ts +2 -0
- package/esm/models/chatstreamingmessagechunk.js +2 -0
- package/esm/models/chatstreamingresponsechunk.d.ts +1 -1
- package/esm/models/chatstreamingresponsechunk.js +1 -1
- package/esm/models/compoundfilter.d.ts +36 -0
- package/esm/models/compoundfilter.js +32 -0
- package/esm/models/conflictresponseerrordata.d.ts +17 -0
- package/esm/models/conflictresponseerrordata.js +16 -0
- package/esm/models/contextcompressionengine.d.ts +15 -0
- package/esm/models/contextcompressionengine.js +14 -0
- package/esm/models/datetimeservertool.d.ts +30 -0
- package/esm/models/datetimeservertool.js +22 -0
- package/esm/models/defaultparameters.d.ts +3 -0
- package/esm/models/defaultparameters.js +6 -0
- package/esm/models/errors/conflictresponseerror.d.ts +33 -0
- package/esm/models/errors/conflictresponseerror.js +42 -0
- package/esm/models/errors/index.d.ts +1 -0
- package/esm/models/errors/index.js +1 -0
- package/esm/models/index.d.ts +23 -4
- package/esm/models/index.js +23 -4
- package/esm/models/openairesponsesinputunion.d.ts +32 -1
- package/esm/models/openairesponsesinputunion.js +53 -1
- package/esm/models/openresponsesapplypatchtool.d.ts +20 -0
- package/esm/models/openresponsesapplypatchtool.js +21 -0
- package/esm/models/openresponsescodeinterpretertool.d.ts +68 -0
- package/esm/models/openresponsescodeinterpretertool.js +85 -0
- package/esm/models/openresponsescomputertool.d.ts +39 -0
- package/esm/models/openresponsescomputertool.js +50 -0
- package/esm/models/openresponsescustomtool.d.ts +75 -0
- package/esm/models/openresponsescustomtool.js +95 -0
- package/esm/models/openresponseseasyinputmessage.d.ts +30 -4
- package/esm/models/openresponseseasyinputmessage.js +28 -2
- package/esm/models/openresponsesfilesearchtool.d.ts +111 -0
- package/esm/models/openresponsesfilesearchtool.js +180 -0
- package/esm/models/openresponsesfunctioncalloutput.d.ts +46 -7
- package/esm/models/openresponsesfunctioncalloutput.js +56 -4
- package/esm/models/openresponsesfunctionshelltool.d.ts +20 -0
- package/esm/models/openresponsesfunctionshelltool.js +21 -0
- package/esm/models/openresponsesimagegenerationtool.d.ts +125 -0
- package/esm/models/openresponsesimagegenerationtool.js +153 -0
- package/esm/models/openresponsesinputmessageitem.d.ts +2 -2
- package/esm/models/openresponsesinputmessageitem.js +2 -2
- package/esm/models/openresponsesinputunion.d.ts +207 -0
- package/esm/models/openresponsesinputunion.js +225 -0
- package/esm/models/openresponseslocalshelltool.d.ts +20 -0
- package/esm/models/openresponseslocalshelltool.js +21 -0
- package/esm/models/openresponsesmcptool.d.ts +128 -0
- package/esm/models/openresponsesmcptool.js +173 -0
- package/esm/models/openresponsesnonstreamingresponse.d.ts +11 -2
- package/esm/models/openresponsesnonstreamingresponse.js +27 -0
- package/esm/models/openresponsesrequest.d.ts +53 -11
- package/esm/models/openresponsesrequest.js +51 -2
- package/esm/models/openresponsesstreamevent.d.ts +52 -4
- package/esm/models/openresponsesstreamevent.js +54 -3
- package/esm/models/openresponseswebsearch20250826tool.d.ts +29 -0
- package/esm/models/openresponseswebsearch20250826tool.js +23 -0
- package/esm/models/openresponseswebsearchcallcompleted.d.ts +16 -0
- package/esm/models/openresponseswebsearchcallcompleted.js +24 -0
- package/esm/models/openresponseswebsearchcallinprogress.d.ts +16 -0
- package/esm/models/openresponseswebsearchcallinprogress.js +24 -0
- package/esm/models/openresponseswebsearchcallsearching.d.ts +16 -0
- package/esm/models/openresponseswebsearchcallsearching.js +24 -0
- package/esm/models/openresponseswebsearchpreview20250311tool.d.ts +44 -0
- package/esm/models/openresponseswebsearchpreview20250311tool.js +51 -0
- package/esm/models/openresponseswebsearchpreviewtool.d.ts +44 -0
- package/esm/models/openresponseswebsearchpreviewtool.js +47 -0
- package/esm/models/openresponseswebsearchtool.d.ts +29 -0
- package/esm/models/openresponseswebsearchtool.js +23 -0
- package/esm/models/operations/bulkassignkeystoguardrail.d.ts +16 -3
- package/esm/models/operations/bulkassignkeystoguardrail.js +2 -2
- package/esm/models/operations/bulkassignmemberstoguardrail.d.ts +16 -3
- package/esm/models/operations/bulkassignmemberstoguardrail.js +2 -2
- package/esm/models/operations/bulkunassignkeysfromguardrail.d.ts +16 -3
- package/esm/models/operations/bulkunassignkeysfromguardrail.js +2 -2
- package/esm/models/operations/bulkunassignmembersfromguardrail.d.ts +16 -3
- package/esm/models/operations/bulkunassignmembersfromguardrail.js +2 -2
- package/esm/models/operations/createauthkeyscode.d.ts +16 -3
- package/esm/models/operations/createauthkeyscode.js +2 -2
- package/esm/models/operations/createcoinbasecharge.d.ts +16 -3
- package/esm/models/operations/createcoinbasecharge.js +2 -2
- package/esm/models/operations/createembeddings.d.ts +16 -3
- package/esm/models/operations/createembeddings.js +2 -2
- package/esm/models/operations/createguardrail.d.ts +25 -3
- package/esm/models/operations/createguardrail.js +6 -2
- package/esm/models/operations/createkeys.d.ts +16 -3
- package/esm/models/operations/createkeys.js +2 -2
- package/esm/models/operations/createresponses.d.ts +16 -3
- package/esm/models/operations/createresponses.js +2 -2
- package/esm/models/operations/deleteguardrail.d.ts +16 -3
- package/esm/models/operations/deleteguardrail.js +2 -2
- package/esm/models/operations/deletekeys.d.ts +16 -3
- package/esm/models/operations/deletekeys.js +2 -2
- package/esm/models/operations/exchangeauthcodeforapikey.d.ts +16 -3
- package/esm/models/operations/exchangeauthcodeforapikey.js +2 -2
- package/esm/models/operations/getcredits.d.ts +16 -3
- package/esm/models/operations/getcredits.js +2 -2
- package/esm/models/operations/getcurrentkey.d.ts +16 -3
- package/esm/models/operations/getcurrentkey.js +2 -2
- package/esm/models/operations/getgeneration.d.ts +25 -3
- package/esm/models/operations/getgeneration.js +7 -2
- package/esm/models/operations/getguardrail.d.ts +20 -3
- package/esm/models/operations/getguardrail.js +4 -2
- package/esm/models/operations/getkey.d.ts +16 -3
- package/esm/models/operations/getkey.js +2 -2
- package/esm/models/operations/getmodels.d.ts +21 -3
- package/esm/models/operations/getmodels.js +4 -2
- package/esm/models/operations/getuseractivity.d.ts +16 -3
- package/esm/models/operations/getuseractivity.js +2 -2
- package/esm/models/operations/list.d.ts +16 -3
- package/esm/models/operations/list.js +2 -2
- package/esm/models/operations/listembeddingsmodels.d.ts +16 -3
- package/esm/models/operations/listembeddingsmodels.js +2 -2
- package/esm/models/operations/listendpoints.d.ts +16 -3
- package/esm/models/operations/listendpoints.js +2 -2
- package/esm/models/operations/listendpointszdr.d.ts +16 -3
- package/esm/models/operations/listendpointszdr.js +2 -2
- package/esm/models/operations/listguardrailkeyassignments.d.ts +16 -3
- package/esm/models/operations/listguardrailkeyassignments.js +2 -2
- package/esm/models/operations/listguardrailmemberassignments.d.ts +16 -3
- package/esm/models/operations/listguardrailmemberassignments.js +2 -2
- package/esm/models/operations/listguardrails.d.ts +20 -3
- package/esm/models/operations/listguardrails.js +4 -2
- package/esm/models/operations/listkeyassignments.d.ts +16 -3
- package/esm/models/operations/listkeyassignments.js +2 -2
- package/esm/models/operations/listmemberassignments.d.ts +16 -3
- package/esm/models/operations/listmemberassignments.js +2 -2
- package/esm/models/operations/listmodelscount.d.ts +21 -3
- package/esm/models/operations/listmodelscount.js +4 -2
- package/esm/models/operations/listmodelsuser.d.ts +16 -3
- package/esm/models/operations/listmodelsuser.js +2 -2
- package/esm/models/operations/listproviders.d.ts +16 -3
- package/esm/models/operations/listproviders.js +2 -2
- package/esm/models/operations/sendchatcompletionrequest.d.ts +16 -3
- package/esm/models/operations/sendchatcompletionrequest.js +2 -2
- package/esm/models/operations/updateguardrail.d.ts +25 -3
- package/esm/models/operations/updateguardrail.js +6 -2
- package/esm/models/operations/updatekeys.d.ts +16 -3
- package/esm/models/operations/updatekeys.js +2 -2
- package/esm/models/outputmessage.d.ts +23 -0
- package/esm/models/outputmessage.js +24 -0
- package/esm/models/outputmodality.d.ts +1 -0
- package/esm/models/outputmodality.js +1 -0
- package/esm/models/providername.d.ts +1 -0
- package/esm/models/providername.js +1 -0
- package/esm/models/providerpreferences.d.ts +4 -0
- package/esm/models/providerpreferences.js +4 -0
- package/esm/models/providersort.d.ts +1 -0
- package/esm/models/providersort.js +1 -0
- package/esm/models/providersortconfig.d.ts +1 -0
- package/esm/models/providersortconfig.js +1 -0
- package/esm/models/responseoutputtext.d.ts +8 -8
- package/esm/models/responseoutputtext.js +10 -9
- package/esm/models/responsesoutputitem.d.ts +2 -13
- package/esm/models/responsesoutputitem.js +8 -6
- package/esm/models/responsesoutputitemreasoning.d.ts +2 -31
- package/esm/models/responsesoutputitemreasoning.js +2 -44
- package/esm/models/responsesoutputmessage.d.ts +24 -32
- package/esm/models/responsesoutputmessage.js +26 -47
- package/esm/models/responsesservertooloutput.d.ts +42 -0
- package/esm/models/responsesservertooloutput.js +44 -0
- package/esm/models/responseswebsearchcalloutput.d.ts +90 -5
- package/esm/models/responseswebsearchcalloutput.js +113 -5
- package/esm/models/responseswebsearchservertool.d.ts +35 -0
- package/esm/models/responseswebsearchservertool.js +28 -0
- package/esm/models/tooldefinitionjson.d.ts +38 -20
- package/esm/models/tooldefinitionjson.js +22 -11
- package/esm/models/websearchengine.d.ts +2 -0
- package/esm/models/websearchengine.js +2 -0
- package/esm/models/websearchservertool.d.ts +116 -0
- package/esm/models/websearchservertool.js +77 -0
- package/esm/models/websearchshorthand.d.ts +215 -0
- package/esm/models/websearchshorthand.js +138 -0
- package/esm/sdk/sdk.d.ts +4 -1
- package/esm/sdk/sdk.js +0 -1
- package/esm/types/index.d.ts +0 -2
- package/esm/types/index.js +0 -1
- package/jsr.json +1 -1
- package/package.json +11 -6
- package/turbo.json +10 -0
- package/esm/models/openresponsesinput.d.ts +0 -28
- package/esm/models/openresponsesinput.js +0 -54
- package/esm/models/openresponseslogprobs.d.ts +0 -16
- package/esm/models/openresponseslogprobs.js +0 -22
- package/esm/models/openresponsestoplogprobs.d.ts +0 -14
- package/esm/models/openresponsestoplogprobs.js +0 -15
package/FUNCTIONS.md
CHANGED
|
@@ -26,7 +26,8 @@ import { betaResponsesSend } from "@openrouter/sdk/funcs/betaResponsesSend.js";
|
|
|
26
26
|
// You can create one instance of it to use across an application.
|
|
27
27
|
const openRouter = new OpenRouterCore({
|
|
28
28
|
httpReferer: "<value>",
|
|
29
|
-
|
|
29
|
+
appTitle: "<value>",
|
|
30
|
+
appCategories: "<value>",
|
|
30
31
|
apiKey: process.env["OPENROUTER_API_KEY"] ?? "",
|
|
31
32
|
});
|
|
32
33
|
|
|
@@ -34,7 +34,8 @@ async function $do(client, request, options) {
|
|
|
34
34
|
const headers = new Headers(compactMap({
|
|
35
35
|
Accept: "application/json",
|
|
36
36
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
37
|
-
"X-
|
|
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" }),
|
|
38
39
|
}));
|
|
39
40
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
40
41
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -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-
|
|
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 };
|
|
@@ -37,7 +37,8 @@ async function $do(client, request, options) {
|
|
|
37
37
|
const headers = new Headers(compactMap({
|
|
38
38
|
Accept: "application/json",
|
|
39
39
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
40
|
-
"X-
|
|
40
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
41
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
41
42
|
}));
|
|
42
43
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
43
44
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
package/esm/funcs/apiKeysGet.js
CHANGED
|
@@ -37,7 +37,8 @@ async function $do(client, request, options) {
|
|
|
37
37
|
const headers = new Headers(compactMap({
|
|
38
38
|
Accept: "application/json",
|
|
39
39
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
40
|
-
"X-
|
|
40
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
41
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
41
42
|
}));
|
|
42
43
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
43
44
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -31,7 +31,8 @@ async function $do(client, request, options) {
|
|
|
31
31
|
const headers = new Headers(compactMap({
|
|
32
32
|
Accept: "application/json",
|
|
33
33
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
34
|
-
"X-
|
|
34
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
35
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
35
36
|
}));
|
|
36
37
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
37
38
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
package/esm/funcs/apiKeysList.js
CHANGED
|
@@ -35,7 +35,8 @@ async function $do(client, request, options) {
|
|
|
35
35
|
const headers = new Headers(compactMap({
|
|
36
36
|
Accept: "application/json",
|
|
37
37
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
38
|
-
"X-
|
|
38
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
39
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
39
40
|
}));
|
|
40
41
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
41
42
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -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-
|
|
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 };
|
|
@@ -30,7 +30,8 @@ async function $do(client, request, options) {
|
|
|
30
30
|
? "text/event-stream"
|
|
31
31
|
: "application/json",
|
|
32
32
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
33
|
-
"X-
|
|
33
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
34
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
34
35
|
}));
|
|
35
36
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
36
37
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { $ZodObject, $ZodShape, infer as zodInfer } from 'zod/v4/core';
|
|
1
2
|
import type { OpenRouterCore } from '../core.js';
|
|
2
3
|
import type { CallModelInput } from '../lib/async-params.js';
|
|
3
4
|
import type { RequestOptions } from '../lib/sdks.js';
|
|
@@ -23,61 +24,30 @@ export type { CallModelInput } from '../lib/async-params.js';
|
|
|
23
24
|
*
|
|
24
25
|
* All consumption patterns can be used concurrently on the same response.
|
|
25
26
|
*
|
|
26
|
-
*
|
|
27
|
-
* - `fromChatMessages()` / `toChatMessage()` for OpenAI chat format
|
|
28
|
-
* - `fromClaudeMessages()` / `toClaudeMessage()` for Anthropic Claude format
|
|
27
|
+
* **Context:**
|
|
29
28
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* Any field in CallModelInput can be a function that computes the value dynamically
|
|
33
|
-
* based on the conversation context. You can mix static values and functions in the
|
|
34
|
-
* same request. Functions are resolved before EVERY turn, allowing parameters to
|
|
35
|
-
* adapt as the conversation progresses.
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* // Mix static and dynamic values
|
|
40
|
-
* const result = callModel(client, {
|
|
41
|
-
* model: 'gpt-4', // static
|
|
42
|
-
* temperature: (ctx) => Math.min(ctx.numberOfTurns * 0.2, 1.0), // dynamic
|
|
43
|
-
* input: [{ type: 'text', text: 'Hello' }], // static
|
|
44
|
-
* });
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```typescript
|
|
49
|
-
* // Switch models based on conversation length
|
|
50
|
-
* const result = callModel(client, {
|
|
51
|
-
* model: (ctx) => ctx.numberOfTurns > 3 ? 'gpt-4' : 'gpt-3.5-turbo',
|
|
52
|
-
* input: [{ type: 'text', text: 'Complex question' }],
|
|
53
|
-
* });
|
|
54
|
-
* ```
|
|
29
|
+
* Tools can declare a `contextSchema` to receive typed context data.
|
|
30
|
+
* The `context` parameter on callModel is typed as the intersection of all tool schemas:
|
|
55
31
|
*
|
|
56
32
|
* @example
|
|
57
33
|
* ```typescript
|
|
58
|
-
* // Use async functions to fetch dynamic values
|
|
59
34
|
* const result = callModel(client, {
|
|
60
35
|
* model: 'gpt-4',
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
36
|
+
* input: 'Hello',
|
|
37
|
+
* tools: [weatherTool, dbTool] as const,
|
|
38
|
+
* context: {
|
|
39
|
+
* get_weather: { apiKey: 'sk-...' },
|
|
40
|
+
* db_query: { dbUrl: 'postgres://...' },
|
|
64
41
|
* },
|
|
65
|
-
* input: [{ type: 'text', text: 'Help me' }],
|
|
66
42
|
* });
|
|
67
43
|
* ```
|
|
68
44
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* **Execution Order:**
|
|
76
|
-
* Functions are resolved at the START of each turn in this order:
|
|
77
|
-
* 1. Async functions (parallel resolution)
|
|
78
|
-
* 2. Tool execution (if tools called by model)
|
|
79
|
-
* 3. nextTurnParams functions (if defined on tools)
|
|
80
|
-
* 4. API request with resolved values
|
|
45
|
+
* Context can also be a function or async function:
|
|
46
|
+
* ```typescript
|
|
47
|
+
* context: (turn) => ({
|
|
48
|
+
* get_weather: { apiKey: turn.numberOfTurns > 1 ? refreshedKey : initialKey },
|
|
49
|
+
* })
|
|
50
|
+
* ```
|
|
81
51
|
*
|
|
82
52
|
* **Stop Conditions:**
|
|
83
53
|
*
|
|
@@ -85,34 +55,13 @@ export type { CallModelInput } from '../lib/async-params.js';
|
|
|
85
55
|
*
|
|
86
56
|
* @example
|
|
87
57
|
* ```typescript
|
|
88
|
-
* // Stop after 3 steps
|
|
89
58
|
* stopWhen: stepCountIs(3)
|
|
90
|
-
*
|
|
91
|
-
* // Stop when a specific tool is called
|
|
92
|
-
* stopWhen: hasToolCall('finalizeResults')
|
|
93
|
-
*
|
|
94
|
-
* // Multiple conditions (OR logic - stops if ANY is true)
|
|
95
|
-
* stopWhen: [
|
|
96
|
-
* stepCountIs(10), // Safety: max 10 steps
|
|
97
|
-
* maxCost(0.50), // Budget: max $0.50
|
|
98
|
-
* hasToolCall('finalize') // Logic: stop when finalize called
|
|
99
|
-
* ]
|
|
100
|
-
*
|
|
101
|
-
* // Custom condition with full step history
|
|
102
|
-
* stopWhen: ({ steps }) => {
|
|
103
|
-
* const totalCalls = steps.reduce((sum, s) => sum + s.toolCalls.length, 0);
|
|
104
|
-
* return totalCalls >= 20; // Stop after 20 total tool calls
|
|
105
|
-
* }
|
|
59
|
+
* stopWhen: [stepCountIs(10), maxCost(0.50), hasToolCall('finalize')]
|
|
106
60
|
* ```
|
|
107
61
|
*
|
|
108
|
-
* Available helper functions:
|
|
109
|
-
* - `stepCountIs(n)` - Stop after n steps
|
|
110
|
-
* - `hasToolCall(name)` - Stop when tool is called
|
|
111
|
-
* - `maxTokensUsed(n)` - Stop when token usage exceeds n
|
|
112
|
-
* - `maxCost(n)` - Stop when cost exceeds n dollars
|
|
113
|
-
* - `finishReasonIs(reason)` - Stop on specific finish reason
|
|
114
|
-
*
|
|
115
62
|
* Default: `stepCountIs(5)` if not specified
|
|
116
63
|
*/
|
|
117
|
-
export declare function callModel<TTools extends readonly Tool[]>(client: OpenRouterCore, request: CallModelInput<TTools
|
|
64
|
+
export declare function callModel<TTools extends readonly Tool[], TSharedSchema extends $ZodObject<$ZodShape> | undefined = undefined, TShared extends Record<string, unknown> = TSharedSchema extends $ZodObject<$ZodShape> ? zodInfer<TSharedSchema> : Record<string, never>>(client: OpenRouterCore, request: CallModelInput<TTools, TShared> & {
|
|
65
|
+
sharedContextSchema?: TSharedSchema;
|
|
66
|
+
}, options?: RequestOptions): ModelResult<TTools, TShared>;
|
|
118
67
|
//# sourceMappingURL=call-model.d.ts.map
|
package/esm/funcs/call-model.js
CHANGED
|
@@ -19,61 +19,30 @@ import { convertToolsToAPIFormat } from '../lib/tool-executor.js';
|
|
|
19
19
|
*
|
|
20
20
|
* All consumption patterns can be used concurrently on the same response.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
* - `fromChatMessages()` / `toChatMessage()` for OpenAI chat format
|
|
24
|
-
* - `fromClaudeMessages()` / `toClaudeMessage()` for Anthropic Claude format
|
|
22
|
+
* **Context:**
|
|
25
23
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* Any field in CallModelInput can be a function that computes the value dynamically
|
|
29
|
-
* based on the conversation context. You can mix static values and functions in the
|
|
30
|
-
* same request. Functions are resolved before EVERY turn, allowing parameters to
|
|
31
|
-
* adapt as the conversation progresses.
|
|
24
|
+
* Tools can declare a `contextSchema` to receive typed context data.
|
|
25
|
+
* The `context` parameter on callModel is typed as the intersection of all tool schemas:
|
|
32
26
|
*
|
|
33
27
|
* @example
|
|
34
28
|
* ```typescript
|
|
35
|
-
* // Mix static and dynamic values
|
|
36
|
-
* const result = callModel(client, {
|
|
37
|
-
* model: 'gpt-4', // static
|
|
38
|
-
* temperature: (ctx) => Math.min(ctx.numberOfTurns * 0.2, 1.0), // dynamic
|
|
39
|
-
* input: [{ type: 'text', text: 'Hello' }], // static
|
|
40
|
-
* });
|
|
41
|
-
* ```
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```typescript
|
|
45
|
-
* // Switch models based on conversation length
|
|
46
|
-
* const result = callModel(client, {
|
|
47
|
-
* model: (ctx) => ctx.numberOfTurns > 3 ? 'gpt-4' : 'gpt-3.5-turbo',
|
|
48
|
-
* input: [{ type: 'text', text: 'Complex question' }],
|
|
49
|
-
* });
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```typescript
|
|
54
|
-
* // Use async functions to fetch dynamic values
|
|
55
29
|
* const result = callModel(client, {
|
|
56
30
|
* model: 'gpt-4',
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
31
|
+
* input: 'Hello',
|
|
32
|
+
* tools: [weatherTool, dbTool] as const,
|
|
33
|
+
* context: {
|
|
34
|
+
* get_weather: { apiKey: 'sk-...' },
|
|
35
|
+
* db_query: { dbUrl: 'postgres://...' },
|
|
60
36
|
* },
|
|
61
|
-
* input: [{ type: 'text', text: 'Help me' }],
|
|
62
37
|
* });
|
|
63
38
|
* ```
|
|
64
39
|
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* **Execution Order:**
|
|
72
|
-
* Functions are resolved at the START of each turn in this order:
|
|
73
|
-
* 1. Async functions (parallel resolution)
|
|
74
|
-
* 2. Tool execution (if tools called by model)
|
|
75
|
-
* 3. nextTurnParams functions (if defined on tools)
|
|
76
|
-
* 4. API request with resolved values
|
|
40
|
+
* Context can also be a function or async function:
|
|
41
|
+
* ```typescript
|
|
42
|
+
* context: (turn) => ({
|
|
43
|
+
* get_weather: { apiKey: turn.numberOfTurns > 1 ? refreshedKey : initialKey },
|
|
44
|
+
* })
|
|
45
|
+
* ```
|
|
77
46
|
*
|
|
78
47
|
* **Stop Conditions:**
|
|
79
48
|
*
|
|
@@ -81,38 +50,15 @@ import { convertToolsToAPIFormat } from '../lib/tool-executor.js';
|
|
|
81
50
|
*
|
|
82
51
|
* @example
|
|
83
52
|
* ```typescript
|
|
84
|
-
* // Stop after 3 steps
|
|
85
53
|
* stopWhen: stepCountIs(3)
|
|
86
|
-
*
|
|
87
|
-
* // Stop when a specific tool is called
|
|
88
|
-
* stopWhen: hasToolCall('finalizeResults')
|
|
89
|
-
*
|
|
90
|
-
* // Multiple conditions (OR logic - stops if ANY is true)
|
|
91
|
-
* stopWhen: [
|
|
92
|
-
* stepCountIs(10), // Safety: max 10 steps
|
|
93
|
-
* maxCost(0.50), // Budget: max $0.50
|
|
94
|
-
* hasToolCall('finalize') // Logic: stop when finalize called
|
|
95
|
-
* ]
|
|
96
|
-
*
|
|
97
|
-
* // Custom condition with full step history
|
|
98
|
-
* stopWhen: ({ steps }) => {
|
|
99
|
-
* const totalCalls = steps.reduce((sum, s) => sum + s.toolCalls.length, 0);
|
|
100
|
-
* return totalCalls >= 20; // Stop after 20 total tool calls
|
|
101
|
-
* }
|
|
54
|
+
* stopWhen: [stepCountIs(10), maxCost(0.50), hasToolCall('finalize')]
|
|
102
55
|
* ```
|
|
103
56
|
*
|
|
104
|
-
* Available helper functions:
|
|
105
|
-
* - `stepCountIs(n)` - Stop after n steps
|
|
106
|
-
* - `hasToolCall(name)` - Stop when tool is called
|
|
107
|
-
* - `maxTokensUsed(n)` - Stop when token usage exceeds n
|
|
108
|
-
* - `maxCost(n)` - Stop when cost exceeds n dollars
|
|
109
|
-
* - `finishReasonIs(reason)` - Stop on specific finish reason
|
|
110
|
-
*
|
|
111
57
|
* Default: `stepCountIs(5)` if not specified
|
|
112
58
|
*/
|
|
113
59
|
export function callModel(client, request, options) {
|
|
114
60
|
// Destructure state management options along with tools and stopWhen
|
|
115
|
-
const { tools, stopWhen, state, requireApproval, approveToolCalls, rejectToolCalls, ...apiRequest } = request;
|
|
61
|
+
const { tools, stopWhen, state, requireApproval, approveToolCalls, rejectToolCalls, context, sharedContextSchema, onTurnStart, onTurnEnd, ...apiRequest } = request;
|
|
116
62
|
// Convert tools to API format - no cast needed now that convertToolsToAPIFormat accepts readonly
|
|
117
63
|
const apiTools = tools ? convertToolsToAPIFormat(tools) : undefined;
|
|
118
64
|
// Build the request with converted tools
|
|
@@ -124,10 +70,18 @@ export function callModel(client, request, options) {
|
|
|
124
70
|
if (apiTools !== undefined) {
|
|
125
71
|
finalRequest['tools'] = apiTools;
|
|
126
72
|
}
|
|
73
|
+
// Inject x-openrouter-callmodel header into every callModel request
|
|
74
|
+
const callModelOptions = {
|
|
75
|
+
...options,
|
|
76
|
+
headers: {
|
|
77
|
+
...Object.fromEntries(new Headers(options?.headers ?? options?.fetchOptions?.headers ?? undefined)),
|
|
78
|
+
'x-openrouter-callmodel': 'true',
|
|
79
|
+
},
|
|
80
|
+
};
|
|
127
81
|
return new ModelResult({
|
|
128
82
|
client,
|
|
129
83
|
request: finalRequest,
|
|
130
|
-
options:
|
|
84
|
+
options: callModelOptions,
|
|
131
85
|
tools,
|
|
132
86
|
...(stopWhen !== undefined && { stopWhen }),
|
|
133
87
|
// Pass state management options
|
|
@@ -135,6 +89,10 @@ export function callModel(client, request, options) {
|
|
|
135
89
|
...(requireApproval !== undefined && { requireApproval }),
|
|
136
90
|
...(approveToolCalls !== undefined && { approveToolCalls }),
|
|
137
91
|
...(rejectToolCalls !== undefined && { rejectToolCalls }),
|
|
92
|
+
...(context !== undefined && { context }),
|
|
93
|
+
...(sharedContextSchema !== undefined && { sharedContextSchema }),
|
|
94
|
+
...(onTurnStart !== undefined && { onTurnStart }),
|
|
95
|
+
...(onTurnEnd !== undefined && { onTurnEnd }),
|
|
138
96
|
});
|
|
139
97
|
}
|
|
140
98
|
//# sourceMappingURL=call-model.js.map
|
package/esm/funcs/chatSend.js
CHANGED
|
@@ -30,7 +30,8 @@ async function $do(client, request, options) {
|
|
|
30
30
|
? "text/event-stream"
|
|
31
31
|
: "application/json",
|
|
32
32
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
33
|
-
"X-
|
|
33
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
34
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
34
35
|
}));
|
|
35
36
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
36
37
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -34,7 +34,8 @@ async function $do(client, security, request, options) {
|
|
|
34
34
|
"Content-Type": "application/json",
|
|
35
35
|
Accept: "application/json",
|
|
36
36
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
37
|
-
"X-
|
|
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" }),
|
|
38
39
|
}));
|
|
39
40
|
const requestSecurity = resolveSecurity([
|
|
40
41
|
{
|
|
@@ -31,7 +31,8 @@ async function $do(client, request, options) {
|
|
|
31
31
|
const headers = new Headers(compactMap({
|
|
32
32
|
Accept: "application/json",
|
|
33
33
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
34
|
-
"X-
|
|
34
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
35
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
35
36
|
}));
|
|
36
37
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
37
38
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -32,7 +32,8 @@ async function $do(client, request, options) {
|
|
|
32
32
|
"Content-Type": "application/json",
|
|
33
33
|
Accept: "application/json;q=1, text/event-stream;q=0",
|
|
34
34
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
35
|
-
"X-
|
|
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 };
|
|
@@ -32,7 +32,8 @@ async function $do(client, 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-
|
|
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 };
|
|
@@ -38,7 +38,8 @@ async function $do(client, request, options) {
|
|
|
38
38
|
const headers = new Headers(compactMap({
|
|
39
39
|
Accept: "application/json",
|
|
40
40
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
41
|
-
"X-
|
|
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 };
|
|
@@ -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-
|
|
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 };
|
|
@@ -31,7 +31,8 @@ async function $do(client, request, options) {
|
|
|
31
31
|
const headers = new Headers(compactMap({
|
|
32
32
|
Accept: "application/json",
|
|
33
33
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
34
|
-
"X-
|
|
34
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
35
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
35
36
|
}));
|
|
36
37
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
37
38
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -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-
|
|
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 };
|
|
@@ -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-
|
|
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 };
|
|
@@ -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-
|
|
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 };
|
|
@@ -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-
|
|
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 };
|
|
@@ -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-
|
|
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 };
|
|
@@ -37,7 +37,8 @@ async function $do(client, request, options) {
|
|
|
37
37
|
const headers = new Headers(compactMap({
|
|
38
38
|
Accept: "application/json",
|
|
39
39
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
40
|
-
"X-
|
|
40
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
41
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
41
42
|
}));
|
|
42
43
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
43
44
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -37,7 +37,8 @@ async function $do(client, request, options) {
|
|
|
37
37
|
const headers = new Headers(compactMap({
|
|
38
38
|
Accept: "application/json",
|
|
39
39
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
40
|
-
"X-
|
|
40
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
41
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
41
42
|
}));
|
|
42
43
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
43
44
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -35,7 +35,8 @@ async function $do(client, request, options) {
|
|
|
35
35
|
const headers = new Headers(compactMap({
|
|
36
36
|
Accept: "application/json",
|
|
37
37
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
38
|
-
"X-
|
|
38
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
39
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
39
40
|
}));
|
|
40
41
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
41
42
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -41,7 +41,8 @@ async function $do(client, request, options) {
|
|
|
41
41
|
const headers = new Headers(compactMap({
|
|
42
42
|
Accept: "application/json",
|
|
43
43
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
44
|
-
"X-
|
|
44
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
45
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
45
46
|
}));
|
|
46
47
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
47
48
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -41,7 +41,8 @@ async function $do(client, request, options) {
|
|
|
41
41
|
const headers = new Headers(compactMap({
|
|
42
42
|
Accept: "application/json",
|
|
43
43
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
44
|
-
"X-
|
|
44
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
45
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
45
46
|
}));
|
|
46
47
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
47
48
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -35,7 +35,8 @@ async function $do(client, request, options) {
|
|
|
35
35
|
const headers = new Headers(compactMap({
|
|
36
36
|
Accept: "application/json",
|
|
37
37
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
38
|
-
"X-
|
|
38
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
39
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
39
40
|
}));
|
|
40
41
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
41
42
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|
|
@@ -35,7 +35,8 @@ async function $do(client, request, options) {
|
|
|
35
35
|
const headers = new Headers(compactMap({
|
|
36
36
|
Accept: "application/json",
|
|
37
37
|
"HTTP-Referer": encodeSimple("HTTP-Referer", payload?.["HTTP-Referer"] ?? client._options.httpReferer, { explode: false, charEncoding: "none" }),
|
|
38
|
-
"X-
|
|
38
|
+
"X-OpenRouter-Categories": encodeSimple("X-OpenRouter-Categories", payload?.appCategories ?? client._options.appCategories, { explode: false, charEncoding: "none" }),
|
|
39
|
+
"X-OpenRouter-Title": encodeSimple("X-OpenRouter-Title", payload?.appTitle ?? client._options.appTitle, { explode: false, charEncoding: "none" }),
|
|
39
40
|
}));
|
|
40
41
|
const secConfig = await extractSecurity(client._options.apiKey);
|
|
41
42
|
const securityInput = secConfig == null ? {} : { apiKey: secConfig };
|