diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index daa8df41..94c6820d 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,19 +1,19 @@ lockVersion: 2.0.0 id: c48cf606-fb42-4a45-9c23-8f0555307828 management: - docChecksum: 2d465bbf278c6f507e1f998b7f615011 + docChecksum: f16abc205e334d77dc451ea14a80dadf docVersion: 1.0.0 speakeasyVersion: 1.787.0 generationVersion: 2.914.0 - releaseVersion: 1.0.18 - configChecksum: ccc40eafb79218be7c75f1f92ad3308f + releaseVersion: 1.0.19 + configChecksum: 4ff021275d1f9854370e7598e50a6ef2 repoURL: https://github.com/OpenRouterTeam/python-sdk.git installationURL: https://github.com/OpenRouterTeam/python-sdk.git published: true persistentEdits: - generation_id: 9eed3acb-d49b-49c8-97ba-9aa56adb56ec - pristine_commit_hash: 1d8d44bc16ba2e5c4aa04d653988e3b8b94ec450 - pristine_tree_hash: 6c831dc19a9c623836e79b74fe44617436466448 + generation_id: e4e0f40f-277a-4507-a2b9-73a13f2a044a + pristine_commit_hash: ef5af0eed00930ab406a3117b815dff762ee94d7 + pristine_tree_hash: 01e969115c5103bf529f355d443d7b2a22b18715 features: python: acceptHeaders: 3.0.0 @@ -1394,8 +1394,8 @@ trackedFiles: pristine_git_object: 8c9a9246c03beadee004dc71d2519862070cad1a docs/components/contenttoolreference.mdx: id: fe1e54c845d9 - last_write_checksum: sha1:8f69b7d199fd1ed2948927b93b6f9facf50e3ee0 - pristine_git_object: f07b01d7d44cc717b67e5648283c659fc02c72fa + last_write_checksum: sha1:8fe8f8b82d310463c74d61c1b1cd90f004cfea09 + pristine_git_object: bc1e04237ac6881d40e87eb398b8eaacb2dd1b81 docs/components/contenttoolresult.mdx: id: a9a083b8900f last_write_checksum: sha1:72b603d3efa32360cf6e8b6c718dd46718b0e98b @@ -2762,8 +2762,8 @@ trackedFiles: pristine_git_object: aacfcabc1908dd56355bd5059c8d896a7f5266fd docs/components/messagesmessageparamcontentunion4.mdx: id: 0cbf68d37ca2 - last_write_checksum: sha1:78cc4e1944f81a93cbe863fd533981ec1d838f71 - pristine_git_object: 41beca7be323b219a39dbc8383341b43f7416f80 + last_write_checksum: sha1:c43a4df052ed1123f1387e2b5bb5f3488b5e06fd + pristine_git_object: c66c4422b760679b4a0e65ecb448b34000526dd5 docs/components/messagesmessageparamcontentunion5.mdx: id: 103a9b1bc479 last_write_checksum: sha1:8082efc20a4cb6d09750ac74b4db5a4f224d7032 @@ -2776,6 +2776,10 @@ trackedFiles: id: 5194bb4cd379 last_write_checksum: sha1:817f941770a847e3683c28fcb2a6237321bd2561 pristine_git_object: 371458c5cbce70c0ff25e7da7703feeef8482d34 + docs/components/messagesmessageparamtypetoolreference.mdx: + id: 014debbefcdd + last_write_checksum: sha1:4322666e790a2a05c2a344f835fd98995070ed7c + pristine_git_object: 3556e0a170fc8b56f77ee0afa995f5d6514e5379 docs/components/messagesoutputconfig.mdx: id: 4f36aa4862b1 last_write_checksum: sha1:f5ce07d1d0cccb54cd23587265a28960a918b46d @@ -2820,6 +2824,30 @@ trackedFiles: id: ecbd7f7f2e44 last_write_checksum: sha1:b0dc13c5cf05011f6496565a4553eb52b9d09481 pristine_git_object: 52ce907478e961eb90e709fca118e6d0631883d2 + docs/components/messagestooladditionblock.mdx: + id: ee6e08ccc2ae + last_write_checksum: sha1:b41bd9af1900643127851361ff1acf2707ab7309 + pristine_git_object: 399c9ceaa89fd23664936145da40e3f873bc3782 + docs/components/messagestooladditionblocktool.mdx: + id: 77122e0d40d2 + last_write_checksum: sha1:7d05a00487c1da64a8f04ebd273f4c4a2cb95412 + pristine_git_object: 459a5a4f96363226908c4c5be396e3ab09479bb6 + docs/components/messagestooladditionblocktypetoolreference.mdx: + id: 46a9c5c3d297 + last_write_checksum: sha1:960eea34388236a826d75f4aa3be8beba58ae7f1 + pristine_git_object: cbfee207d314517204d955f1b850109ed3382528 + docs/components/messagestoolremovalblock.mdx: + id: 06fb00f68d0a + last_write_checksum: sha1:5acfab12a15c5bb0ae2b914ad6f849d21a3eb72a + pristine_git_object: 7924930128661e2401a39fcd4c13b18e435c4042 + docs/components/messagestoolremovalblocktool.mdx: + id: dac44151c72f + last_write_checksum: sha1:676c881b2bcba2ec974e04ef498c484fb3cfced9 + pristine_git_object: a9340a29a53dfd3fdc50dd5e3cdf7f9708d8c862 + docs/components/messagestoolremovalblocktypetoolreference.mdx: + id: 2a88fefa96ee + last_write_checksum: sha1:f19a0f1059fd13cf83467960835553dfbc618c5b + pristine_git_object: ce7c01edac70b8baf98d2924eed62c3a0d0c9b33 docs/components/metadatalevel.mdx: id: f564e5e9a7d3 last_write_checksum: sha1:e51f09243a346926c426f53b07865f5ed145511d @@ -4790,8 +4818,8 @@ trackedFiles: pristine_git_object: 6817216b64de42e834ab68a072287701e621daa8 docs/components/toolcustom.mdx: id: b3ea2dbc7af5 - last_write_checksum: sha1:f0fdef1bc45a22946f6026d202499b63ff241711 - pristine_git_object: ce9be3cd6fbb03e8d15866baefa9f38c1398a91c + last_write_checksum: sha1:b05a11b62179ab9242129b616c4ac4e24357807b + pristine_git_object: e52e0f6a01c66838f7b55e4eef45e5612a2fb4e5 docs/components/tooltexteditor20250124.mdx: id: 58d2a6f35f9f last_write_checksum: sha1:c785aecfc38109c995d4d2f825de0f145d3f626a @@ -4960,10 +4988,14 @@ trackedFiles: id: f86dd3b2e318 last_write_checksum: sha1:315ca10eda81bbf32e8d2e7d695598e09d80bfee pristine_git_object: 4cef3b748c6ce9e9df0f407e2e4b4aca0c784e87 - docs/components/typetoolreference.mdx: - id: d3d5710fdc90 - last_write_checksum: sha1:c77fac65490534fec1463bcf75aa3252ddf9a9c2 - pristine_git_object: ac0f247ea9664d3c815bd094fa8cf570c62726e6 + docs/components/typetooladdition.mdx: + id: 2c9ccb549f63 + last_write_checksum: sha1:69f740c7aae3a6d1ed4495e103a28ffa3c587c48 + pristine_git_object: a82c82be673f3a09a54d7288e8af181b1c374e78 + docs/components/typetoolremoval.mdx: + id: c704bd12a2c9 + last_write_checksum: sha1:902e92a1b4a247443b00e255f8c32c416bfc258d + pristine_git_object: 8a1fba60d180e1f3cebca1c3d9e892fb9e99a872 docs/components/typetoolresult.mdx: id: 07ae3f30e4a2 last_write_checksum: sha1:aa2931bc195ddc15bd18d9fac6948f8f24bfbe08 @@ -6718,8 +6750,8 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:1d3f87cbaa18a5a04ceb47b6e87480f372d1a7d9 - pristine_git_object: 8343280ffb3fb85e6eb68b09a8438743c000de8b + last_write_checksum: sha1:61fd11a93986fca25fdcbaa36124bc0348a15db5 + pristine_git_object: 7b37723bb049bafec91318d0031dd5037c5d441d scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54 @@ -6746,8 +6778,8 @@ trackedFiles: pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137 src/openrouter/_version.py: id: d8d15ad6c586 - last_write_checksum: sha1:b06dded8354b2be12e1990095bce2d4e02b870e2 - pristine_git_object: 9ce2441c1892c8f90e88d4a2191e3aa646656bda + last_write_checksum: sha1:5972427ba4edaedfdfbab8ccf78aa2bde10eedc5 + pristine_git_object: 5549fa9e1068d7511d922b5890f169691ba5c7b8 src/openrouter/analytics.py: id: cb406b5aaabb last_write_checksum: sha1:9e709b71dd0611056dc0cec6150b578defe32841 @@ -6786,8 +6818,8 @@ trackedFiles: pristine_git_object: ad3d247954547814054c01989a2dff3d12b3e4e1 src/openrouter/components/__init__.py: id: 81754e97b3f4 - last_write_checksum: sha1:6099935b2622db0039c5223893120f0c97ed63fc - pristine_git_object: 4a81fe87907b21d87885e5caf5d4b05c5d965daf + last_write_checksum: sha1:face799abf2003d53c7615e54616773093f238df + pristine_git_object: af44c2e31fff1acb25b180c4011470806217efa4 src/openrouter/components/aabenchmarkentry.py: id: e2e0f0b48c82 last_write_checksum: sha1:fab4d9a24d2cea937bb749d46c5f83941e99d65c @@ -7986,20 +8018,28 @@ trackedFiles: pristine_git_object: 9026664fa77c678a7a5f2b317b511ad93445cff7 src/openrouter/components/messagesmessageparam.py: id: ed8bbab6720d - last_write_checksum: sha1:8950af2e2cdaeefb8f7c9bd28d692e8a082cb7d6 - pristine_git_object: 7c37d9ec59be202b5cdb2d40b5c52bdbe2d8ca9b + last_write_checksum: sha1:b70a1e2a4d040e06798588438b2b877f7761712d + pristine_git_object: b2cde9fb8e6fdab577b9f9b693fdd2133111b4f3 src/openrouter/components/messagesoutputconfig.py: id: 54d1e297f740 last_write_checksum: sha1:478d9f534254d60225ac89bd21ddc49d18329297 pristine_git_object: 7e69d1f775baece5f94b03d35bcd884d5e6f519d src/openrouter/components/messagesrequest.py: id: 72b1f339024d - last_write_checksum: sha1:30ee9ddd406a96a8f78a3824d4d62101f8177495 - pristine_git_object: 5e97ab6dd82e24566d502595ec26804684bfcdcb + last_write_checksum: sha1:69d731617a67a0d262bb647f6ee35cfc0bdc7827 + pristine_git_object: 083d56730e0686ca08a6e13979d912d30f2682d4 src/openrouter/components/messagessearchmodelsservertool.py: id: 53d755edb120 last_write_checksum: sha1:389786fc22ba4bb47b0a086b7aa321f2f04fe943 pristine_git_object: d101995fd27b0bccbac266805caba629039c5f93 + src/openrouter/components/messagestooladditionblock.py: + id: 3fc00d28b82d + last_write_checksum: sha1:cb0db9a0a8c20509c34af7784800ba5fd8bb5401 + pristine_git_object: d6be5ce89e9cb363feb3279d7d80559f4e20991e + src/openrouter/components/messagestoolremovalblock.py: + id: 4b02812d2191 + last_write_checksum: sha1:d4cd536d132e7718cac14738732ec243b494aa84 + pristine_git_object: 32238d761a961ada3192532ffd860f170e53b748 src/openrouter/components/metadatalevel.py: id: 0eede47eef62 last_write_checksum: sha1:b4e7e6fc4e9016b65008e9ebbfcc6f018fe89ced @@ -11241,4 +11281,6 @@ examples: "500": application/json: {"error": {"code": 500, "message": "Internal Server Error"}} examplesVersion: 1.0.2 -releaseNotes: "## Python SDK Changes:\n* `open_router.beta.responses.send()`: \n * `request.input.union(Array<>)[].union(AdditionalToolsItem).tools[]` **Changed**\n * `response` **Changed**\n* `open_router.chat.send()`: \n * `request.tools[]` **Changed**\n* `open_router.presets.create_presets_chat_completions()`: \n * `request.tools[].union(ChatWebSearchShorthand)` **Changed**\n* `open_router.presets.create_presets_messages()`: \n * `request.tools[].union(OpenRouterWebSearchServerTool).parameters.max_uses` **Added**\n* `open_router.presets.create_presets_responses()`: \n * `request.input.union(Array<>)[].union(AdditionalToolsItem).tools[]` **Changed**\n" +releaseNotes: | + ## Python SDK Changes: + * `open_router.presets.create_presets_messages()`: `request` **Changed** diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index f7653c90..3887fe78 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -36,7 +36,7 @@ generation: documentation: mintlify preApplyUnionDiscriminators: true python: - version: 1.0.18 + version: 1.0.19 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index 1d31ee4c..e487931c 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -12469,6 +12469,8 @@ components: - 'content' type: 'object' - $ref: '#/components/schemas/MessagesAdvisorToolResultBlock' + - $ref: '#/components/schemas/MessagesToolAdditionBlock' + - $ref: '#/components/schemas/MessagesToolRemovalBlock' type: 'array' role: enum: @@ -12828,6 +12830,8 @@ components: - properties: cache_control: $ref: '#/components/schemas/AnthropicCacheControlDirective' + defer_loading: + type: 'boolean' description: type: 'string' input_schema: @@ -13392,6 +13396,62 @@ components: - 'event' - 'data' type: 'object' + MessagesToolAdditionBlock: + description: 'Loads a previously deferred tool (declared in `tools` with `defer_loading: true`) mid-conversation without invalidating the prompt cache. Only valid in `role: "system"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8.' + example: + tool: + name: 'get_forecast' + type: 'tool_reference' + type: 'tool_addition' + properties: + tool: + properties: + name: + type: 'string' + type: + enum: + - 'tool_reference' + type: 'string' + required: + - 'type' + - 'name' + type: 'object' + type: + enum: + - 'tool_addition' + type: 'string' + required: + - 'type' + - 'tool' + type: 'object' + MessagesToolRemovalBlock: + description: 'Removes a tool from the conversation mid-conversation without invalidating the prompt cache. Only valid in `role: "system"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8.' + example: + tool: + name: 'get_weather' + type: 'tool_reference' + type: 'tool_removal' + properties: + tool: + properties: + name: + type: 'string' + type: + enum: + - 'tool_reference' + type: 'string' + required: + - 'type' + - 'name' + type: 'object' + type: + enum: + - 'tool_removal' + type: 'string' + required: + - 'type' + - 'tool' + type: 'object' MetadataLevel: description: 'Opt-in level for surfacing routing metadata on the response under `openrouter_metadata`.' enum: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 580149d6..1f6b32e9 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,8 +2,8 @@ speakeasyVersion: 1.787.0 sources: OpenRouter API: sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:b1162425d94a3a5b4980ae71f2b04fbb05421fccbd83357fa34a53904d652a69 - sourceBlobDigest: sha256:cc117568fbe7b9092b84038b9676517cc56226e8ba6a86b43396eb021d826eb9 + sourceRevisionDigest: sha256:00d4a3b5a3f008f2b46f301a3e7310d397c100a10e6c70418d60121a4865e259 + sourceBlobDigest: sha256:84f6a4b5f0ae7eeed219cd9ab1049f6181593d3784464dd93240aff6fd727e74 tags: - latest - 1.0.0 @@ -11,10 +11,10 @@ targets: open-router: source: OpenRouter API sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:b1162425d94a3a5b4980ae71f2b04fbb05421fccbd83357fa34a53904d652a69 - sourceBlobDigest: sha256:cc117568fbe7b9092b84038b9676517cc56226e8ba6a86b43396eb021d826eb9 + sourceRevisionDigest: sha256:00d4a3b5a3f008f2b46f301a3e7310d397c100a10e6c70418d60121a4865e259 + sourceBlobDigest: sha256:84f6a4b5f0ae7eeed219cd9ab1049f6181593d3784464dd93240aff6fd727e74 codeSamplesNamespace: open-router-python-code-samples - codeSamplesRevisionDigest: sha256:c4785d760a1f1040f3f0a5905744bd3f89b98247139064d0cbf800167790edec + codeSamplesRevisionDigest: sha256:fde97e93bd267a0402aa8338e3d771c4625562ac29d74bcff2211d824e867055 workflow: workflowVersion: 1.0.0 speakeasyVersion: 1.787.0 diff --git a/RELEASES.md b/RELEASES.md index fd11d771..cd91adf3 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -759,4 +759,14 @@ Based on: ### Generated - [python v1.0.18] . ### Releases -- [PyPI v1.0.18] https://pypi.org/project/openrouter/1.0.18 - . \ No newline at end of file +- [PyPI v1.0.18] https://pypi.org/project/openrouter/1.0.18 - . + +## 2026-07-24 17:55:08 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.0.19] . +### Releases +- [PyPI v1.0.19] https://pypi.org/project/openrouter/1.0.19 - . \ No newline at end of file diff --git a/docs/components/contenttoolreference.mdx b/docs/components/contenttoolreference.mdx index f07b01d7..bc1e0423 100644 --- a/docs/components/contenttoolreference.mdx +++ b/docs/components/contenttoolreference.mdx @@ -4,7 +4,7 @@ title: "ContentToolReference" ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `tool_name` | *str* | :heavy_check_mark: | N/A | -| `type` | [components.TypeToolReference](../components/typetoolreference.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `tool_name` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.MessagesMessageParamTypeToolReference](../components/messagesmessageparamtypetoolreference.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagesmessageparamcontentunion4.mdx b/docs/components/messagesmessageparamcontentunion4.mdx index 41beca7b..c66c4422 100644 --- a/docs/components/messagesmessageparamcontentunion4.mdx +++ b/docs/components/messagesmessageparamcontentunion4.mdx @@ -76,3 +76,15 @@ value: components.ContentCompaction = /* values here */ value: components.MessagesAdvisorToolResultBlock = /* values here */ ``` +### `components.MessagesToolAdditionBlock` + +```python +value: components.MessagesToolAdditionBlock = /* values here */ +``` + +### `components.MessagesToolRemovalBlock` + +```python +value: components.MessagesToolRemovalBlock = /* values here */ +``` + diff --git a/docs/components/messagesmessageparamtypetoolreference.mdx b/docs/components/messagesmessageparamtypetoolreference.mdx new file mode 100644 index 00000000..3556e0a1 --- /dev/null +++ b/docs/components/messagesmessageparamtypetoolreference.mdx @@ -0,0 +1,15 @@ +--- +title: "MessagesMessageParamTypeToolReference" +--- + +## Example Usage + +```python +from openrouter.components import MessagesMessageParamTypeToolReference +value: MessagesMessageParamTypeToolReference = "tool_reference" +``` + + +## Values + +- `"tool_reference"` diff --git a/docs/components/messagestooladditionblock.mdx b/docs/components/messagestooladditionblock.mdx new file mode 100644 index 00000000..399c9cea --- /dev/null +++ b/docs/components/messagestooladditionblock.mdx @@ -0,0 +1,13 @@ +--- +title: "MessagesToolAdditionBlock" +--- + +Loads a previously deferred tool (declared in `tools` with `defer_loading: true`) mid-conversation without invalidating the prompt cache. Only valid in `role: "system"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `tool` | [components.MessagesToolAdditionBlockTool](../components/messagestooladditionblocktool.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.TypeToolAddition](../components/typetooladdition.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagestooladditionblocktool.mdx b/docs/components/messagestooladditionblocktool.mdx new file mode 100644 index 00000000..459a5a4f --- /dev/null +++ b/docs/components/messagestooladditionblocktool.mdx @@ -0,0 +1,10 @@ +--- +title: "MessagesToolAdditionBlockTool" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.MessagesToolAdditionBlockTypeToolReference](../components/messagestooladditionblocktypetoolreference.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagestooladditionblocktypetoolreference.mdx b/docs/components/messagestooladditionblocktypetoolreference.mdx new file mode 100644 index 00000000..cbfee207 --- /dev/null +++ b/docs/components/messagestooladditionblocktypetoolreference.mdx @@ -0,0 +1,15 @@ +--- +title: "MessagesToolAdditionBlockTypeToolReference" +--- + +## Example Usage + +```python +from openrouter.components import MessagesToolAdditionBlockTypeToolReference +value: MessagesToolAdditionBlockTypeToolReference = "tool_reference" +``` + + +## Values + +- `"tool_reference"` diff --git a/docs/components/messagestoolremovalblock.mdx b/docs/components/messagestoolremovalblock.mdx new file mode 100644 index 00000000..79249301 --- /dev/null +++ b/docs/components/messagestoolremovalblock.mdx @@ -0,0 +1,13 @@ +--- +title: "MessagesToolRemovalBlock" +--- + +Removes a tool from the conversation mid-conversation without invalidating the prompt cache. Only valid in `role: "system"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `tool` | [components.MessagesToolRemovalBlockTool](../components/messagestoolremovalblocktool.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.TypeToolRemoval](../components/typetoolremoval.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagestoolremovalblocktool.mdx b/docs/components/messagestoolremovalblocktool.mdx new file mode 100644 index 00000000..a9340a29 --- /dev/null +++ b/docs/components/messagestoolremovalblocktool.mdx @@ -0,0 +1,10 @@ +--- +title: "MessagesToolRemovalBlockTool" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `name` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.MessagesToolRemovalBlockTypeToolReference](../components/messagestoolremovalblocktypetoolreference.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagestoolremovalblocktypetoolreference.mdx b/docs/components/messagestoolremovalblocktypetoolreference.mdx new file mode 100644 index 00000000..ce7c01ed --- /dev/null +++ b/docs/components/messagestoolremovalblocktypetoolreference.mdx @@ -0,0 +1,15 @@ +--- +title: "MessagesToolRemovalBlockTypeToolReference" +--- + +## Example Usage + +```python +from openrouter.components import MessagesToolRemovalBlockTypeToolReference +value: MessagesToolRemovalBlockTypeToolReference = "tool_reference" +``` + + +## Values + +- `"tool_reference"` diff --git a/docs/components/toolcustom.mdx b/docs/components/toolcustom.mdx index ce9be3cd..e52e0f6a 100644 --- a/docs/components/toolcustom.mdx +++ b/docs/components/toolcustom.mdx @@ -7,6 +7,7 @@ title: "ToolCustom" | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter converts them to the provider's native format. | \{
"type": "ephemeral"
} | +| `defer_loading` | *Optional[bool]* | :heavy_minus_sign: | N/A | | | `description` | *Optional[str]* | :heavy_minus_sign: | N/A | | | `input_schema` | [components.InputSchema](../components/inputschema.mdx) | :heavy_check_mark: | N/A | | | `name` | *str* | :heavy_check_mark: | N/A | | diff --git a/docs/components/typetooladdition.mdx b/docs/components/typetooladdition.mdx new file mode 100644 index 00000000..a82c82be --- /dev/null +++ b/docs/components/typetooladdition.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeToolAddition" +--- + +## Example Usage + +```python +from openrouter.components import TypeToolAddition +value: TypeToolAddition = "tool_addition" +``` + + +## Values + +- `"tool_addition"` diff --git a/docs/components/typetoolreference.mdx b/docs/components/typetoolreference.mdx deleted file mode 100644 index ac0f247e..00000000 --- a/docs/components/typetoolreference.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "TypeToolReference" ---- - -## Example Usage - -```python -from openrouter.components import TypeToolReference -value: TypeToolReference = "tool_reference" -``` - - -## Values - -- `"tool_reference"` diff --git a/docs/components/typetoolremoval.mdx b/docs/components/typetoolremoval.mdx new file mode 100644 index 00000000..8a1fba60 --- /dev/null +++ b/docs/components/typetoolremoval.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeToolRemoval" +--- + +## Example Usage + +```python +from openrouter.components import TypeToolRemoval +value: TypeToolRemoval = "tool_removal" +``` + + +## Values + +- `"tool_removal"` diff --git a/pyproject.toml b/pyproject.toml index 8343280f..7b37723b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openrouter" -version = "1.0.18" +version = "1.0.19" description = "Official Python Client SDK for OpenRouter." authors = [{ name = "OpenRouter" },] readme = "README-PYPI.md" diff --git a/src/openrouter/_version.py b/src/openrouter/_version.py index 9ce2441c..5549fa9e 100644 --- a/src/openrouter/_version.py +++ b/src/openrouter/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "openrouter" -__version__: str = "1.0.18" +__version__: str = "1.0.19" __openapi_doc_version__: str = "1.0.0" __gen_version__: str = "2.914.0" -__user_agent__: str = "speakeasy-sdk/python 1.0.18 2.914.0 1.0.0 openrouter" +__user_agent__: str = "speakeasy-sdk/python 1.0.19 2.914.0 1.0.0 openrouter" try: if __package__ is not None: diff --git a/src/openrouter/components/__init__.py b/src/openrouter/components/__init__.py index 4a81fe87..af44c2e3 100644 --- a/src/openrouter/components/__init__.py +++ b/src/openrouter/components/__init__.py @@ -1513,11 +1513,11 @@ MessagesMessageParamContentUnion5TypedDict, MessagesMessageParamRole, MessagesMessageParamTypeCompaction, + MessagesMessageParamTypeToolReference, MessagesMessageParamTypedDict, TypeRedactedThinking, TypeServerToolUse, TypeThinking, - TypeToolReference, TypeToolResult, TypeToolUse, TypeWebSearchToolResult, @@ -1630,6 +1630,22 @@ MessagesSearchModelsServerToolType, MessagesSearchModelsServerToolTypedDict, ) + from .messagestooladditionblock import ( + MessagesToolAdditionBlock, + MessagesToolAdditionBlockTool, + MessagesToolAdditionBlockToolTypedDict, + MessagesToolAdditionBlockTypeToolReference, + MessagesToolAdditionBlockTypedDict, + TypeToolAddition, + ) + from .messagestoolremovalblock import ( + MessagesToolRemovalBlock, + MessagesToolRemovalBlockTool, + MessagesToolRemovalBlockToolTypedDict, + MessagesToolRemovalBlockTypeToolReference, + MessagesToolRemovalBlockTypedDict, + TypeToolRemoval, + ) from .metadatalevel import MetadataLevel from .model import Model, ModelTypedDict from .modelarchitecture import ModelArchitecture, ModelArchitectureTypedDict @@ -3956,6 +3972,7 @@ "MessagesMessageParamContentUnion5TypedDict", "MessagesMessageParamRole", "MessagesMessageParamTypeCompaction", + "MessagesMessageParamTypeToolReference", "MessagesMessageParamTypedDict", "MessagesOutputConfig", "MessagesOutputConfigEffort", @@ -3976,6 +3993,16 @@ "MessagesSearchModelsServerTool", "MessagesSearchModelsServerToolType", "MessagesSearchModelsServerToolTypedDict", + "MessagesToolAdditionBlock", + "MessagesToolAdditionBlockTool", + "MessagesToolAdditionBlockToolTypedDict", + "MessagesToolAdditionBlockTypeToolReference", + "MessagesToolAdditionBlockTypedDict", + "MessagesToolRemovalBlock", + "MessagesToolRemovalBlockTool", + "MessagesToolRemovalBlockToolTypedDict", + "MessagesToolRemovalBlockTypeToolReference", + "MessagesToolRemovalBlockTypedDict", "MetadataLevel", "Method", "Modality", @@ -4807,7 +4834,8 @@ "TypeTimeout", "TypeTokens", "TypeTool", - "TypeToolReference", + "TypeToolAddition", + "TypeToolRemoval", "TypeToolResult", "TypeToolUse", "TypeTypedDict", @@ -6070,11 +6098,11 @@ "MessagesMessageParamContentUnion5TypedDict": ".messagesmessageparam", "MessagesMessageParamRole": ".messagesmessageparam", "MessagesMessageParamTypeCompaction": ".messagesmessageparam", + "MessagesMessageParamTypeToolReference": ".messagesmessageparam", "MessagesMessageParamTypedDict": ".messagesmessageparam", "TypeRedactedThinking": ".messagesmessageparam", "TypeServerToolUse": ".messagesmessageparam", "TypeThinking": ".messagesmessageparam", - "TypeToolReference": ".messagesmessageparam", "TypeToolResult": ".messagesmessageparam", "TypeToolUse": ".messagesmessageparam", "TypeWebSearchToolResult": ".messagesmessageparam", @@ -6180,6 +6208,18 @@ "MessagesSearchModelsServerTool": ".messagessearchmodelsservertool", "MessagesSearchModelsServerToolType": ".messagessearchmodelsservertool", "MessagesSearchModelsServerToolTypedDict": ".messagessearchmodelsservertool", + "MessagesToolAdditionBlock": ".messagestooladditionblock", + "MessagesToolAdditionBlockTool": ".messagestooladditionblock", + "MessagesToolAdditionBlockToolTypedDict": ".messagestooladditionblock", + "MessagesToolAdditionBlockTypeToolReference": ".messagestooladditionblock", + "MessagesToolAdditionBlockTypedDict": ".messagestooladditionblock", + "TypeToolAddition": ".messagestooladditionblock", + "MessagesToolRemovalBlock": ".messagestoolremovalblock", + "MessagesToolRemovalBlockTool": ".messagestoolremovalblock", + "MessagesToolRemovalBlockToolTypedDict": ".messagestoolremovalblock", + "MessagesToolRemovalBlockTypeToolReference": ".messagestoolremovalblock", + "MessagesToolRemovalBlockTypedDict": ".messagestoolremovalblock", + "TypeToolRemoval": ".messagestoolremovalblock", "MetadataLevel": ".metadatalevel", "Model": ".model", "ModelTypedDict": ".model", diff --git a/src/openrouter/components/messagesmessageparam.py b/src/openrouter/components/messagesmessageparam.py index 7c37d9ec..b2cde9fb 100644 --- a/src/openrouter/components/messagesmessageparam.py +++ b/src/openrouter/components/messagesmessageparam.py @@ -29,6 +29,14 @@ MessagesAdvisorToolResultBlock, MessagesAdvisorToolResultBlockTypedDict, ) +from .messagestooladditionblock import ( + MessagesToolAdditionBlock, + MessagesToolAdditionBlockTypedDict, +) +from .messagestoolremovalblock import ( + MessagesToolRemovalBlock, + MessagesToolRemovalBlockTypedDict, +) from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr from openrouter.utils import get_discriminator from pydantic import Discriminator, Tag, model_serializer @@ -231,18 +239,18 @@ class ContentThinking(BaseModel): type: TypeThinking -TypeToolReference = Literal["tool_reference",] +MessagesMessageParamTypeToolReference = Literal["tool_reference",] class ContentToolReferenceTypedDict(TypedDict): tool_name: str - type: TypeToolReference + type: MessagesMessageParamTypeToolReference class ContentToolReference(BaseModel): tool_name: str - type: TypeToolReference + type: MessagesMessageParamTypeToolReference MessagesMessageParamContentUnion1TypedDict = TypeAliasType( @@ -366,18 +374,20 @@ def serialize_model(self, handler): MessagesMessageParamContentUnion4TypedDict = TypeAliasType( "MessagesMessageParamContentUnion4TypedDict", Union[ + MessagesToolRemovalBlockTypedDict, + MessagesToolAdditionBlockTypedDict, ContentRedactedThinkingTypedDict, + ContentCompactionTypedDict, AnthropicImageBlockParamTypedDict, ContentThinkingTypedDict, - ContentCompactionTypedDict, MessagesAdvisorToolResultBlockTypedDict, AnthropicTextBlockParamTypedDict, ContentWebSearchToolResultTypedDict, ContentToolUseTypedDict, - ContentToolResultTypedDict, ContentServerToolUseTypedDict, - AnthropicDocumentBlockParamTypedDict, + ContentToolResultTypedDict, AnthropicSearchResultBlockParamTypedDict, + AnthropicDocumentBlockParamTypedDict, ], ) @@ -396,6 +406,8 @@ def serialize_model(self, handler): Annotated[AnthropicSearchResultBlockParam, Tag("search_result")], Annotated[ContentCompaction, Tag("compaction")], Annotated[MessagesAdvisorToolResultBlock, Tag("advisor_tool_result")], + Annotated[MessagesToolAdditionBlock, Tag("tool_addition")], + Annotated[MessagesToolRemovalBlock, Tag("tool_removal")], ], Discriminator(lambda m: get_discriminator(m, "type", "type")), ] diff --git a/src/openrouter/components/messagesrequest.py b/src/openrouter/components/messagesrequest.py index 5e97ab6d..083d5673 100644 --- a/src/openrouter/components/messagesrequest.py +++ b/src/openrouter/components/messagesrequest.py @@ -1010,6 +1010,7 @@ class ToolCustomTypedDict(TypedDict): name: str cache_control: NotRequired[AnthropicCacheControlDirectiveTypedDict] r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter converts them to the provider's native format.""" + defer_loading: NotRequired[bool] description: NotRequired[str] type: NotRequired[ToolTypeCustom] @@ -1022,13 +1023,15 @@ class ToolCustom(BaseModel): cache_control: Optional[AnthropicCacheControlDirective] = None r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. When set on an individual content block, it marks an explicit cache breakpoint; block-level markers also work on OpenAI models that support explicit prompt caching — OpenRouter converts them to the provider's native format.""" + defer_loading: Optional[bool] = None + description: Optional[str] = None type: Optional[ToolTypeCustom] = None @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["cache_control", "description", "type"]) + optional_fields = set(["cache_control", "defer_loading", "description", "type"]) serialized = handler(self) m = {} diff --git a/src/openrouter/components/messagestooladditionblock.py b/src/openrouter/components/messagestooladditionblock.py new file mode 100644 index 00000000..d6be5ce8 --- /dev/null +++ b/src/openrouter/components/messagestooladditionblock.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from openrouter.types import BaseModel +from typing import Literal +from typing_extensions import TypedDict + + +MessagesToolAdditionBlockTypeToolReference = Literal["tool_reference",] + + +class MessagesToolAdditionBlockToolTypedDict(TypedDict): + name: str + type: MessagesToolAdditionBlockTypeToolReference + + +class MessagesToolAdditionBlockTool(BaseModel): + name: str + + type: MessagesToolAdditionBlockTypeToolReference + + +TypeToolAddition = Literal["tool_addition",] + + +class MessagesToolAdditionBlockTypedDict(TypedDict): + r"""Loads a previously deferred tool (declared in `tools` with `defer_loading: true`) mid-conversation without invalidating the prompt cache. Only valid in `role: \"system\"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8.""" + + tool: MessagesToolAdditionBlockToolTypedDict + type: TypeToolAddition + + +class MessagesToolAdditionBlock(BaseModel): + r"""Loads a previously deferred tool (declared in `tools` with `defer_loading: true`) mid-conversation without invalidating the prompt cache. Only valid in `role: \"system\"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8.""" + + tool: MessagesToolAdditionBlockTool + + type: TypeToolAddition diff --git a/src/openrouter/components/messagestoolremovalblock.py b/src/openrouter/components/messagestoolremovalblock.py new file mode 100644 index 00000000..32238d76 --- /dev/null +++ b/src/openrouter/components/messagestoolremovalblock.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from openrouter.types import BaseModel +from typing import Literal +from typing_extensions import TypedDict + + +MessagesToolRemovalBlockTypeToolReference = Literal["tool_reference",] + + +class MessagesToolRemovalBlockToolTypedDict(TypedDict): + name: str + type: MessagesToolRemovalBlockTypeToolReference + + +class MessagesToolRemovalBlockTool(BaseModel): + name: str + + type: MessagesToolRemovalBlockTypeToolReference + + +TypeToolRemoval = Literal["tool_removal",] + + +class MessagesToolRemovalBlockTypedDict(TypedDict): + r"""Removes a tool from the conversation mid-conversation without invalidating the prompt cache. Only valid in `role: \"system\"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8.""" + + tool: MessagesToolRemovalBlockToolTypedDict + type: TypeToolRemoval + + +class MessagesToolRemovalBlock(BaseModel): + r"""Removes a tool from the conversation mid-conversation without invalidating the prompt cache. Only valid in `role: \"system\"` messages. Not supported on Claude Sonnet 5 or models older than Claude Opus 4.8.""" + + tool: MessagesToolRemovalBlockTool + + type: TypeToolRemoval diff --git a/uv.lock b/uv.lock index 3c938b4d..69ee6ffd 100644 --- a/uv.lock +++ b/uv.lock @@ -213,7 +213,7 @@ wheels = [ [[package]] name = "openrouter" -version = "1.0.18" +version = "1.0.19" source = { editable = "." } dependencies = [ { name = "httpcore" },