@openrouter/sdk 0.8.0 → 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.d.ts +3 -3
- package/esm/funcs/chatSend.js +20 -3
- 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 +53 -36
- package/esm/models/assistantmessage.js +38 -47
- package/esm/models/assistantmessageimages.d.ts +33 -0
- package/esm/models/assistantmessageimages.js +44 -0
- package/esm/models/chatcompletionaudiooutput.d.ts +38 -0
- package/esm/models/chatcompletionaudiooutput.js +36 -0
- package/esm/models/chatgenerationparams.d.ts +527 -131
- package/esm/models/chatgenerationparams.js +280 -97
- package/esm/models/chatgenerationtokenusage.d.ts +48 -0
- package/esm/models/chatmessagecontentitem.d.ts +16 -10
- package/esm/models/chatmessagecontentitem.js +28 -4
- package/esm/models/chatmessagecontentitemaudio.d.ts +20 -2
- package/esm/models/chatmessagecontentitemaudio.js +9 -2
- package/esm/models/chatmessagecontentitemcachecontrol.d.ts +19 -8
- package/esm/models/chatmessagecontentitemcachecontrol.js +14 -9
- package/esm/models/chatmessagecontentitemfile.d.ts +57 -0
- package/esm/models/chatmessagecontentitemfile.js +59 -0
- package/esm/models/chatmessagecontentitemimage.d.ts +26 -3
- package/esm/models/chatmessagecontentitemimage.js +12 -2
- package/esm/models/chatmessagecontentitemtext.d.ts +17 -2
- package/esm/models/chatmessagecontentitemtext.js +9 -2
- package/esm/models/chatmessagecontentitemvideo.d.ts +12 -55
- package/esm/models/chatmessagecontentitemvideo.js +5 -72
- package/esm/models/chatmessagecontentitemvideolegacy.d.ts +28 -0
- package/esm/models/chatmessagecontentitemvideolegacy.js +33 -0
- package/esm/models/chatmessagetokenlogprob.d.ts +15 -0
- package/esm/models/chatmessagetokenlogprobs.d.ts +10 -1
- package/esm/models/chatmessagetokenlogprobs.js +2 -1
- package/esm/models/chatmessagetoolcall.d.ts +23 -2
- package/esm/models/chatmessagetoolcall.js +9 -2
- package/esm/models/chatresponse.d.ts +30 -2
- package/esm/models/chatresponse.js +7 -2
- package/esm/models/chatresponsechoice.d.ts +13 -2
- package/esm/models/chatresponsechoice.js +1 -2
- package/esm/models/chatstreamingchoice.d.ts +13 -2
- package/esm/models/chatstreamingchoice.js +1 -2
- package/esm/models/chatstreamingmessagechunk.d.ts +31 -2
- package/esm/models/chatstreamingmessagechunk.js +7 -2
- package/esm/models/chatstreamingmessagetoolcall.d.ts +38 -1
- package/esm/models/chatstreamingmessagetoolcall.js +9 -1
- package/esm/models/chatstreamingresponsechunk.d.ts +46 -12
- package/esm/models/chatstreamingresponsechunk.js +12 -26
- package/esm/models/chatstreamoptions.d.ts +8 -0
- 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/debugoptions.d.ts +18 -0
- package/esm/models/debugoptions.js +18 -0
- package/esm/models/defaultparameters.d.ts +3 -0
- package/esm/models/defaultparameters.js +6 -0
- package/esm/models/developermessage.d.ts +12 -0
- package/esm/models/errors/conflictresponseerror.d.ts +33 -0
- package/esm/models/errors/{chaterror.js → conflictresponseerror.js} +17 -7
- package/esm/models/errors/index.d.ts +1 -1
- package/esm/models/errors/index.js +1 -1
- package/esm/models/index.d.ts +35 -12
- package/esm/models/index.js +35 -12
- package/esm/models/jsonschemaconfig.d.ts +17 -2
- package/esm/models/jsonschemaconfig.js +1 -1
- package/esm/models/message.d.ts +9 -2
- package/esm/models/message.js +1 -1
- package/esm/models/modelscountresponse.d.ts +4 -4
- package/esm/models/modelscountresponse.js +4 -4
- package/esm/models/namedtoolchoice.d.ts +15 -2
- package/esm/models/namedtoolchoice.js +6 -1
- package/esm/models/openairesponsesinputunion.d.ts +32 -1
- package/esm/models/openairesponsesinputunion.js +53 -1
- package/esm/models/openairesponsesreasoningconfig.d.ts +1 -1
- package/esm/models/openairesponsesreasoningconfig.js +1 -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 +15 -6
- package/esm/models/openresponsesnonstreamingresponse.js +30 -3
- package/esm/models/openresponsesreasoning.d.ts +2 -2
- package/esm/models/openresponsesreasoning.js +1 -1
- package/esm/models/openresponsesreasoningconfig.d.ts +2 -2
- package/esm/models/openresponsesreasoningconfig.js +1 -1
- package/esm/models/openresponsesrequest.d.ts +111 -39
- package/esm/models/openresponsesrequest.js +112 -38
- 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 +40 -3
- package/esm/models/operations/createauthkeyscode.js +16 -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 +27 -3
- package/esm/models/operations/getgeneration.js +9 -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 +27 -5
- package/esm/models/operations/sendchatcompletionrequest.js +22 -4
- 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 +3 -0
- package/esm/models/providername.js +3 -0
- package/esm/models/providerpreferences.d.ts +49 -14
- package/esm/models/providerpreferences.js +33 -15
- package/esm/models/providersort.d.ts +7 -0
- package/esm/models/providersort.js +4 -0
- package/esm/models/providersortconfig.d.ts +31 -2
- package/esm/models/providersortconfig.js +16 -2
- package/esm/models/reasoningdetailencrypted.d.ts +42 -0
- package/esm/models/reasoningdetailencrypted.js +42 -0
- package/esm/models/reasoningdetailsummary.d.ts +42 -0
- package/esm/models/reasoningdetailsummary.js +42 -0
- package/esm/models/reasoningdetailtext.d.ts +44 -0
- package/esm/models/reasoningdetailtext.js +44 -0
- package/esm/models/reasoningdetailunion.d.ts +19 -0
- package/esm/models/reasoningdetailunion.js +28 -0
- package/esm/models/responseformatjsonobject.d.ts +20 -0
- package/esm/models/responseformatjsonobject.js +21 -0
- package/esm/models/responseformatjsonschema.d.ts +6 -0
- package/esm/models/responseformattext.d.ts +15 -0
- package/esm/models/responseformattext.js +13 -0
- package/esm/models/responseformattextconfig.d.ts +3 -3
- package/esm/models/responseformattextconfig.js +3 -3
- package/esm/models/responseformattextgrammar.d.ts +6 -0
- package/esm/models/responseformattextpython.d.ts +15 -0
- package/esm/models/responseformattextpython.js +13 -0
- package/esm/models/responseoutputtext.d.ts +8 -8
- package/esm/models/responseoutputtext.js +10 -9
- package/esm/models/responseserrorfield.d.ts +4 -4
- package/esm/models/responseserrorfield.js +4 -4
- package/esm/models/responsesoutputitem.d.ts +2 -13
- package/esm/models/responsesoutputitem.js +8 -6
- package/esm/models/responsesoutputitemreasoning.d.ts +3 -32
- package/esm/models/responsesoutputitemreasoning.js +3 -45
- 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/systemmessage.d.ts +12 -0
- package/esm/models/toolchoiceoption.d.ts +31 -0
- package/esm/models/toolchoiceoption.js +32 -0
- package/esm/models/tooldefinitionjson.d.ts +62 -10
- package/esm/models/tooldefinitionjson.js +29 -6
- package/esm/models/toolresponsemessage.d.ts +12 -0
- package/esm/models/usermessage.d.ts +12 -0
- package/esm/models/videoinput.d.ts +23 -0
- package/esm/models/videoinput.js +22 -0
- 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/chat.d.ts +1 -1
- package/esm/sdk/sdk.d.ts +6 -3
- package/esm/sdk/sdk.js +3 -4
- 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/chaterror.d.ts +0 -17
- package/esm/models/chaterror.js +0 -25
- package/esm/models/errors/chaterror.d.ts +0 -19
- 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/esm/models/providersortunion.d.ts +0 -10
- package/esm/models/providersortunion.js +0 -13
- package/esm/models/responsesformatjsonobject.d.ts +0 -20
- package/esm/models/responsesformatjsonobject.js +0 -21
- package/esm/models/schema10.d.ts +0 -33
- package/esm/models/schema10.js +0 -30
- package/esm/models/schema14.d.ts +0 -8
- package/esm/models/schema14.js +0 -12
- package/esm/models/schema17.d.ts +0 -102
- package/esm/models/schema17.js +0 -95
- package/esm/models/schema19.d.ts +0 -92
- package/esm/models/schema19.js +0 -109
- package/esm/models/schema5.d.ts +0 -86
- package/esm/models/schema5.js +0 -89
|
@@ -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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
'
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'
|
|
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
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
195
|
-
|
|
196
|
-
name
|
|
197
|
-
|
|
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
|
|
10
|
+
* Sets the appTitle parameter for all supported operations
|
|
11
11
|
*/
|
|
12
|
-
|
|
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>;
|
package/esm/lib/env.js
CHANGED
|
@@ -7,7 +7,8 @@ import { dlv } from "./dlv.js";
|
|
|
7
7
|
export const envSchema = z.object({
|
|
8
8
|
OPENROUTER_API_KEY: z.string().optional(),
|
|
9
9
|
OPENROUTER_HTTP_REFERER: z.string().optional(),
|
|
10
|
-
|
|
10
|
+
OPENROUTER_APP_TITLE: z.string().optional(),
|
|
11
|
+
OPENROUTER_APP_CATEGORIES: z.string().optional(),
|
|
11
12
|
OPENROUTER_DEBUG: z.coerce.boolean().optional(),
|
|
12
13
|
});
|
|
13
14
|
/**
|
|
@@ -53,8 +54,11 @@ export function fillGlobals(options) {
|
|
|
53
54
|
if (typeof envVars.OPENROUTER_HTTP_REFERER !== "undefined") {
|
|
54
55
|
clone.httpReferer ?? (clone.httpReferer = envVars.OPENROUTER_HTTP_REFERER);
|
|
55
56
|
}
|
|
56
|
-
if (typeof envVars.
|
|
57
|
-
clone.
|
|
57
|
+
if (typeof envVars.OPENROUTER_APP_TITLE !== "undefined") {
|
|
58
|
+
clone.appTitle ?? (clone.appTitle = envVars.OPENROUTER_APP_TITLE);
|
|
59
|
+
}
|
|
60
|
+
if (typeof envVars.OPENROUTER_APP_CATEGORIES !== "undefined") {
|
|
61
|
+
clone.appCategories ?? (clone.appCategories = envVars.OPENROUTER_APP_CATEGORIES);
|
|
58
62
|
}
|
|
59
63
|
return clone;
|
|
60
64
|
}
|
|
@@ -2,15 +2,21 @@ import type { OpenRouterCore } from '../core.js';
|
|
|
2
2
|
import type * as models from '../models/index.js';
|
|
3
3
|
import type { CallModelInput } from './async-params.js';
|
|
4
4
|
import type { RequestOptions } from './sdks.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { $ZodObject, $ZodShape } from 'zod/v4/core';
|
|
6
|
+
import type { ConversationState, ToolContextMapWithShared, ResponseStreamEvent, InferToolEventsUnion, InferToolOutputsUnion, ParsedToolCall, StateAccessor, StopWhen, Tool, ToolStreamEvent, TurnContext } from './tool-types.js';
|
|
7
|
+
import { type ContextInput } from './tool-context.js';
|
|
6
8
|
import { type StreamableOutputItem } from './stream-transformers.js';
|
|
7
|
-
export interface GetResponseOptions<TTools extends readonly Tool[]> {
|
|
8
|
-
request: CallModelInput<TTools>;
|
|
9
|
+
export interface GetResponseOptions<TTools extends readonly Tool[], TShared extends Record<string, unknown> = Record<string, never>> {
|
|
10
|
+
request: CallModelInput<TTools, TShared>;
|
|
9
11
|
client: OpenRouterCore;
|
|
10
12
|
options?: RequestOptions;
|
|
11
13
|
tools?: TTools;
|
|
12
14
|
stopWhen?: StopWhen<TTools>;
|
|
13
15
|
state?: StateAccessor<TTools>;
|
|
16
|
+
/** Typed context data passed to tools via contextSchema. `shared` key for shared context. */
|
|
17
|
+
context?: ContextInput<ToolContextMapWithShared<TTools, TShared>>;
|
|
18
|
+
/** Zod schema for shared context validation */
|
|
19
|
+
sharedContextSchema?: $ZodObject<$ZodShape>;
|
|
14
20
|
/**
|
|
15
21
|
* Call-level approval check - overrides tool-level requireApproval setting
|
|
16
22
|
* Receives the tool call and turn context, can be sync or async
|
|
@@ -18,6 +24,10 @@ export interface GetResponseOptions<TTools extends readonly Tool[]> {
|
|
|
18
24
|
requireApproval?: (toolCall: ParsedToolCall<TTools[number]>, context: TurnContext) => boolean | Promise<boolean>;
|
|
19
25
|
approveToolCalls?: string[];
|
|
20
26
|
rejectToolCalls?: string[];
|
|
27
|
+
/** Callback invoked at the start of each tool execution turn */
|
|
28
|
+
onTurnStart?: (context: TurnContext) => void | Promise<void>;
|
|
29
|
+
/** Callback invoked at the end of each tool execution turn */
|
|
30
|
+
onTurnEnd?: (context: TurnContext, response: models.OpenResponsesNonStreamingResponse) => void | Promise<void>;
|
|
21
31
|
}
|
|
22
32
|
/**
|
|
23
33
|
* A wrapper around a streaming response that provides multiple consumption patterns.
|
|
@@ -37,8 +47,9 @@ export interface GetResponseOptions<TTools extends readonly Tool[]> {
|
|
|
37
47
|
* ReusableReadableStream implementation.
|
|
38
48
|
*
|
|
39
49
|
* @template TTools - The tools array type to enable typed tool calls and results
|
|
50
|
+
* @template TShared - The shape of the shared context (inferred from sharedContextSchema)
|
|
40
51
|
*/
|
|
41
|
-
export declare class ModelResult<TTools extends readonly Tool[]> {
|
|
52
|
+
export declare class ModelResult<TTools extends readonly Tool[], TShared extends Record<string, unknown> = Record<string, never>> {
|
|
42
53
|
private reusableStream;
|
|
43
54
|
private textPromise;
|
|
44
55
|
private options;
|
|
@@ -54,13 +65,42 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
|
|
|
54
65
|
private approvedToolCalls;
|
|
55
66
|
private rejectedToolCalls;
|
|
56
67
|
private isResumingFromApproval;
|
|
57
|
-
|
|
68
|
+
private turnBroadcaster;
|
|
69
|
+
private initialStreamPipeStarted;
|
|
70
|
+
private initialPipePromise;
|
|
71
|
+
private contextStore;
|
|
72
|
+
constructor(options: GetResponseOptions<TTools, TShared>);
|
|
58
73
|
/**
|
|
59
|
-
* Get or create the
|
|
60
|
-
*
|
|
61
|
-
* Broadcasts both preliminary results and final tool results.
|
|
74
|
+
* Get or create the unified turn broadcaster (lazy initialization).
|
|
75
|
+
* Broadcasts all API stream events, tool events, and turn delimiters across turns.
|
|
62
76
|
*/
|
|
63
|
-
private
|
|
77
|
+
private ensureTurnBroadcaster;
|
|
78
|
+
/**
|
|
79
|
+
* Start piping the initial stream into the turn broadcaster.
|
|
80
|
+
* Idempotent — only starts once even if called multiple times.
|
|
81
|
+
* Wraps the initial stream events with turn.start(0) / turn.end(0) delimiters.
|
|
82
|
+
*/
|
|
83
|
+
private startInitialStreamPipe;
|
|
84
|
+
/**
|
|
85
|
+
* Pipe a follow-up stream into the turn broadcaster and capture the completed response.
|
|
86
|
+
* Emits turn.start / turn.end delimiters around the stream events.
|
|
87
|
+
*/
|
|
88
|
+
private pipeAndConsumeStream;
|
|
89
|
+
/**
|
|
90
|
+
* Push a tool result event to both the legacy tool event broadcaster
|
|
91
|
+
* and the unified turn broadcaster.
|
|
92
|
+
*/
|
|
93
|
+
private broadcastToolResult;
|
|
94
|
+
/**
|
|
95
|
+
* Push a preliminary result event to both the legacy tool event broadcaster
|
|
96
|
+
* and the unified turn broadcaster.
|
|
97
|
+
*/
|
|
98
|
+
private broadcastPreliminaryResult;
|
|
99
|
+
/**
|
|
100
|
+
* Set up the turn broadcaster with tool execution and return the consumer.
|
|
101
|
+
* Used by stream methods that need to iterate over all turns.
|
|
102
|
+
*/
|
|
103
|
+
private startTurnBroadcasterExecution;
|
|
64
104
|
/**
|
|
65
105
|
* Type guard to check if a value is a non-streaming response
|
|
66
106
|
* Only requires 'output' field and absence of 'toReadableStream' method
|
|
@@ -162,10 +202,11 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
|
|
|
162
202
|
private applyNextTurnParams;
|
|
163
203
|
/**
|
|
164
204
|
* Make a follow-up API request with tool results.
|
|
165
|
-
*
|
|
205
|
+
* Uses streaming and pipes events through the turn broadcaster when available.
|
|
166
206
|
*
|
|
167
207
|
* @param currentResponse - The response that contained tool calls
|
|
168
208
|
* @param toolResults - The results from executing those tools
|
|
209
|
+
* @param turnNumber - The turn number for this follow-up request
|
|
169
210
|
* @returns The new response from the API
|
|
170
211
|
*/
|
|
171
212
|
private makeFollowupRequest;
|
|
@@ -233,14 +274,15 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
|
|
|
233
274
|
*/
|
|
234
275
|
getResponse(): Promise<models.OpenResponsesNonStreamingResponse>;
|
|
235
276
|
/**
|
|
236
|
-
* Stream all response events as they arrive.
|
|
277
|
+
* Stream all response events as they arrive across all turns.
|
|
237
278
|
* Multiple consumers can iterate over this stream concurrently.
|
|
238
|
-
*
|
|
279
|
+
* Includes API events, tool events, and turn.start/turn.end delimiters.
|
|
239
280
|
*/
|
|
240
281
|
getFullResponsesStream(): AsyncIterableIterator<ResponseStreamEvent<InferToolEventsUnion<TTools>, InferToolOutputsUnion<TTools>>>;
|
|
241
282
|
/**
|
|
242
|
-
* Stream only text deltas as they arrive.
|
|
243
|
-
* This filters the full event stream to only yield text content
|
|
283
|
+
* Stream only text deltas as they arrive from all turns.
|
|
284
|
+
* This filters the full event stream to only yield text content,
|
|
285
|
+
* including text from follow-up responses in multi-turn tool loops.
|
|
244
286
|
*/
|
|
245
287
|
getTextStream(): AsyncIterableIterator<string>;
|
|
246
288
|
/**
|
|
@@ -271,12 +313,13 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
|
|
|
271
313
|
*/
|
|
272
314
|
getNewMessagesStream(): AsyncIterableIterator<models.ResponsesOutputMessage | models.OpenResponsesFunctionCallOutput | models.ResponsesOutputItemFunctionCall>;
|
|
273
315
|
/**
|
|
274
|
-
* Stream only reasoning deltas as they arrive.
|
|
275
|
-
* This filters the full event stream to only yield reasoning content
|
|
316
|
+
* Stream only reasoning deltas as they arrive from all turns.
|
|
317
|
+
* This filters the full event stream to only yield reasoning content,
|
|
318
|
+
* including reasoning from follow-up responses in multi-turn tool loops.
|
|
276
319
|
*/
|
|
277
320
|
getReasoningStream(): AsyncIterableIterator<string>;
|
|
278
321
|
/**
|
|
279
|
-
* Stream tool call argument deltas and preliminary results.
|
|
322
|
+
* Stream tool call argument deltas and preliminary results from all turns.
|
|
280
323
|
* Preliminary results are streamed in REAL-TIME as generator tools yield.
|
|
281
324
|
* - Tool call argument deltas as { type: "delta", content: string }
|
|
282
325
|
* - Preliminary results as { type: "preliminary_result", toolCallId, result }
|
|
@@ -294,6 +337,19 @@ export declare class ModelResult<TTools extends readonly Tool[]> {
|
|
|
294
337
|
* Each iteration yields a complete tool call with parsed arguments.
|
|
295
338
|
*/
|
|
296
339
|
getToolCallsStream(): AsyncIterableIterator<ParsedToolCall<TTools[number]>>;
|
|
340
|
+
/**
|
|
341
|
+
* Returns an async iterable that emits a full context snapshot every time
|
|
342
|
+
* any tool calls ctx.update(). Can be consumed concurrently with getText(),
|
|
343
|
+
* getToolStream(), etc.
|
|
344
|
+
*
|
|
345
|
+
* @example
|
|
346
|
+
* ```typescript
|
|
347
|
+
* for await (const snapshot of result.getContextUpdates()) {
|
|
348
|
+
* console.log('Context changed:', snapshot);
|
|
349
|
+
* }
|
|
350
|
+
* ```
|
|
351
|
+
*/
|
|
352
|
+
getContextUpdates(): AsyncGenerator<ToolContextMapWithShared<TTools, TShared>>;
|
|
297
353
|
/**
|
|
298
354
|
* Cancel the underlying stream and all consumers
|
|
299
355
|
*/
|