Skip to content

chore: release v0.41.0#2100

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-07-11T00-40-42Z
Open

chore: release v0.41.0#2100
github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-07-11T00-40-42Z

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

🤖 New release

  • rig-derive: 0.40.0 -> 0.41.0
  • rig-core: 0.40.0 -> 0.41.0 (⚠ API breaking changes)
  • rig-bedrock: 0.40.0 -> 0.41.0 (✓ API compatible changes)
  • rig-candle: 0.1.0 -> 0.41.0
  • rig-fastembed: 0.40.0 -> 0.41.0
  • rig-gemini-grpc: 0.40.0 -> 0.41.0 (✓ API compatible changes)
  • rig-helixdb: 0.40.0 -> 0.41.0
  • rig-lancedb: 0.40.0 -> 0.41.0
  • rig-memory: 0.40.0 -> 0.41.0 (✓ API compatible changes)
  • rig-milvus: 0.40.0 -> 0.41.0
  • rig-mongodb: 0.40.0 -> 0.41.0
  • rig-neo4j: 0.40.0 -> 0.41.0
  • rig-postgres: 0.40.0 -> 0.41.0
  • rig-qdrant: 0.40.0 -> 0.41.0
  • rig-s3vectors: 0.40.0 -> 0.41.0 (✓ API compatible changes)
  • rig-scylladb: 0.40.0 -> 0.41.0
  • rig-sqlite: 0.40.0 -> 0.41.0
  • rig-surrealdb: 0.40.0 -> 0.41.0
  • rig-vectorize: 0.40.0 -> 0.41.0
  • rig-vertexai: 0.40.0 -> 0.41.0 (✓ API compatible changes)
  • rig: 0.40.0 -> 0.41.0 (✓ API compatible changes)

rig-core breaking changes

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field StreamingCompletionResponse.reasoning_metadata in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/responses_api/streaming.rs:44
  field StreamingCompletionResponse.reasoning_context in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/responses_api/streaming.rs:47
  field CompletionRequest.record_telemetry_content in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:699
  field CompletionRequest.record_telemetry_content in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:699
  field ApiErrorResponse.error in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/gemini/client.rs:230
  field Reasoning.mode in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1782
  field Reasoning.context in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1786
  field CompletionResponse.reasoning_metadata in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1476
  field CompletionResponse.reasoning_context in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1482
  field FunctionCall.id in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/gemini/completion.rs:1254
  field FunctionResponse.id in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/gemini/completion.rs:1277

--- failure copy_impl_added: type now implements Copy ---

Description:
A public type now implements Copy, causing non-move closures to capture it by reference instead of moving it.
        ref: https://github.com/rust-lang/rust/issues/100905
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/copy_impl_added.ron

Failed in:
  rig_core::providers::copilot::EncodingFormat in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/embedding.rs:88
  rig_core::providers::openai::embedding::EncodingFormat in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/embedding.rs:88
  rig_core::providers::openai::EncodingFormat in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/embedding.rs:88

--- failure enum_marked_non_exhaustive: enum marked #[non_exhaustive] ---

Description:
A public enum has been marked #[non_exhaustive]. Pattern-matching on it outside of its crate must now include a wildcard pattern like `_`, or it will fail to compile.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_marked_non_exhaustive.ron

Failed in:
  enum StructuredOutputError in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:236
  enum StructuredOutputError in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:236
  enum StructuredOutputError in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:236
  enum VectorStoreError in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/vector_store/mod.rs:34
  enum PromptError in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:147
  enum PromptError in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:147
  enum PromptError in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/request.rs:147

--- failure enum_missing: pub enum removed or renamed ---

Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_missing.ron

Failed in:
  enum rig_core::agent::hook::InvalidToolCallHookAction, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:406
  enum rig_core::agent::InvalidToolCallHookAction, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:406
  enum rig_core::tool::ToolOutcome, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/result.rs:255
  enum rig_core::tool::ToolReturnOutcome, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/result.rs:356
  enum rig_core::tool::ToolFailureKind, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/result.rs:30
  enum rig_core::tool::ToolSetError, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:535
  enum rig_core::agent::hook::Flow, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:905
  enum rig_core::agent::Flow, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:905
  enum rig_core::providers::openrouter::EncodingFormat, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:20
  enum rig_core::providers::openrouter::embedding::EncodingFormat, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:20
  enum rig_core::agent::hook::StepEvent, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:458
  enum rig_core::agent::StepEvent, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:458
  enum rig_core::tool::ToolError, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:47
  enum rig_core::providers::together::client::together_ai_api_types::ApiResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/client.rs:114

--- failure enum_no_repr_variant_discriminant_changed: enum variant had its discriminant change value ---

Description:
The enum's variant had its discriminant value change. This breaks downstream code that used its value via a numeric cast like `as isize`.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html#assigning-discriminant-values
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_no_repr_variant_discriminant_changed.ron

Failed in:
  variant Content::ToolResult 5 -> 6 in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/anthropic/completion.rs:321
  variant Content::Document 6 -> 7 in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/anthropic/completion.rs:330
  variant Content::Thinking 7 -> 8 in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/anthropic/completion.rs:348
  variant Content::RedactedThinking 8 -> 9 in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/anthropic/completion.rs:353

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_variant_added.ron

Failed in:
  variant Content:CodeExecutionToolResult in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/anthropic/completion.rs:317
  variant ToolResultContent:Json in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/message.rs:230
  variant ToolResultContent:Json in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/completion/message.rs:230
  variant ReasoningEffort:Max in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1887
  variant McpClientError:ToolFetchTimeout in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/rmcp.rs:549

--- failure enum_variant_missing: pub enum variant removed or renamed ---

Description:
A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_variant_missing.ron

Failed in:
  variant MultiTurnStreamItem::ToolExecutionStart, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/prompt_request/streaming.rs:74
  variant MultiTurnStreamItem::ToolExecutionStart, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/prompt_request/streaming.rs:74
  variant McpClientError::ToolServerError, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/rmcp.rs:418
  variant ToolServerError::ToolsetError, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/server.rs:372
  variant StreamingError::Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/prompt_request/streaming.rs:261
  variant PromptError::ToolError, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/request.rs:155
  variant PromptError::ToolServerError, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/request.rs:159
  variant PromptError::ToolError, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/request.rs:155
  variant PromptError::ToolServerError, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/request.rs:159
  variant PromptError::ToolError, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/request.rs:155
  variant PromptError::ToolServerError, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/request.rs:159

--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---

Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
        ref: https://doc.rust-lang.org/reference/items/generics.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron

Failed in:
  function tool_definition (0 -> 1 generic types) in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:388

--- failure inherent_method_missing: pub method removed or renamed ---

Description:
A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/inherent_method_missing.ron

Failed in:
  AgentBuilder::tools, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/builder.rs:385
  AgentBuilder::tools, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/builder.rs:619
  ToolSet::from_tools_boxed, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:575
  ToolSet::add_tool_boxed, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:600
  ToolSet::call, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:661
  ToolSet::call_with_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:671
  ToolSet::call_structured, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:695
  ToolSet::from_tools_boxed, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:575
  ToolSet::add_tool_boxed, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:600
  ToolSet::call, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:661
  ToolSet::call_with_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:671
  ToolSet::call_structured, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:695
  ToolServer::dynamic_tools, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/server.rs:123
  TypedPromptRequest::tool_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/prompt_request/mod.rs:665
  StreamingPromptRequest::tool_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/prompt_request/streaming.rs:348
  PromptRequest::tool_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/prompt_request/mod.rs:172
  AgentRunner::tool_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/runner.rs:361
  AgentRunner::tool_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/runner.rs:361
  ToolServerHandle::call_tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/server.rs:188
  ToolServerHandle::call_tool_with_extensions, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/server.rs:199
  ToolServerHandle::call_tool_structured, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/server.rs:236
  ToolSchema::from_tool, previously in file /tmp/.tmpuho7bD/rig-core/src/embeddings/tool.rs:95
  ToolSchema::from_tool, previously in file /tmp/.tmpuho7bD/rig-core/src/embeddings/tool.rs:95
  ToolResultContent::from_tool_output, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/message.rs:929
  ToolResultContent::from_tool_output, previously in file /tmp/.tmpuho7bD/rig-core/src/completion/message.rs:929

--- failure inherent_method_now_returns_unit: inherent method now returns unit ---

Description:
A publicly-visible method that used to return a value now returns `()`.
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/inherent_method_now_returns_unit.ron
Failed in:
  rig_core::tool::server::ToolServerHandle::add_tool in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/server.rs:235
  rig_core::tool::server::ToolServerHandle::append_toolset in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/server.rs:381
  rig_core::tool::server::ToolServerHandle::remove_tool in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/server.rs:393

--- failure method_parameter_count_changed: pub method parameter count changed ---

Description:
A publicly-visible method now takes a different number of parameters, not counting the receiver (self) parameter.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/method_parameter_count_changed.ron

Failed in:
  rig_core::agent::AgentBuilder::dynamic_tools takes 3 parameters in /tmp/.tmpuho7bD/rig-core/src/agent/builder.rs:519, but now takes [1, 1] parameters in [ /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:413 , /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:660 ]
  rig_core::agent::AgentBuilder::dynamic_tools takes 3 parameters in /tmp/.tmpuho7bD/rig-core/src/agent/builder.rs:670, but now takes [1, 1] parameters in [ /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:413 , /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:660 ]

--- failure method_receiver_ref_became_mut: method receiver changed from immutable to mutable reference ---

Description:
A method's receiver changed from an immutable reference to a mutable one.
        ref: https://doc.rust-lang.org/reference/items/associated-items.html#methods
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/method_receiver_ref_became_mut.ron

Failed in:
  rig_core::streaming::StreamingCompletionResponse::cancel now takes &mut Self, not &Self, in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/streaming.rs:289

--- failure method_requires_different_generic_type_params: method now requires a different number of generic type parameters ---

Description:
A method now requires a different number of generic type parameters than it used to. Uses of this method that supplied the previous number of generic types will be broken.
        ref: https://doc.rust-lang.org/reference/items/generics.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/method_requires_different_generic_type_params.ron

Failed in:
  rig_core::agent::AgentBuilder::tool takes [1, 1] generic types instead of 0, in [ /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:373 , /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:645 ]
  rig_core::agent::AgentBuilder::tool takes [1, 1] generic types instead of 0, in [ /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:373 , /tmp/.tmp0qiDmY/rig/crates/rig-core/src/agent/builder.rs:645 ]
  rig_core::prelude::ToolSet::from_tools takes 1 generic types instead of 0, in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:517
  rig_core::prelude::ToolSet::add_tool takes 1 generic types instead of 0, in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:548
  rig_core::tool::ToolSet::from_tools takes 1 generic types instead of 0, in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:517
  rig_core::tool::ToolSet::add_tool takes 1 generic types instead of 0, in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:548
  rig_core::tool::ToolSetBuilder::static_tool takes 1 generic types instead of 0, in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:686
  rig_core::tool::server::ToolServerHandle::add_tool takes 1 generic types instead of 0, in /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/server.rs:235

--- failure module_missing: pub module removed or renamed ---

Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/module_missing.ron

Failed in:
  mod rig_core::providers::together::client::together_ai_api_types, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/client.rs:97

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron

Failed in:
  struct rig_core::tool::rmcp::McpTool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/rmcp.rs:84
  struct rig_core::providers::mistral::client::ApiErrorResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/client.rs:221
  struct rig_core::providers::mistral::ApiErrorResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/client.rs:221
  struct rig_core::providers::mistral::embedding::EmbeddingResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/embedding.rs:127
  struct rig_core::providers::mistral::EmbeddingResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/embedding.rs:127
  struct rig_core::providers::together::embedding::Usage, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:44
  struct rig_core::providers::together::Usage, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:44
  struct rig_core::tool::MissingExtension, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/extensions.rs:408
  struct rig_core::providers::openrouter::EmbeddingData, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:26
  struct rig_core::providers::openrouter::embedding::EmbeddingData, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:26
  struct rig_core::tool::ToolExecutionResult, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/result.rs:421
  struct rig_core::tool::rmcp::McpToolError, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/rmcp.rs:163
  struct rig_core::providers::together::embedding::EmbeddingResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:30
  struct rig_core::providers::together::EmbeddingResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:30
  struct rig_core::providers::together::client::together_ai_api_types::ApiErrorResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/client.rs:107
  struct rig_core::tool::ToolFailure, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/result.rs:113
  struct rig_core::providers::together::embedding::EmbeddingModel, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:50
  struct rig_core::providers::together::EmbeddingModel, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:50
  struct rig_core::tool::ToolReturn, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/result.rs:548
  struct rig_core::tool::ToolCallExtensions, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/extensions.rs:229
  struct rig_core::providers::mistral::embedding::EmbeddingData, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/embedding.rs:136
  struct rig_core::providers::mistral::EmbeddingData, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/embedding.rs:136
  struct rig_core::providers::openrouter::EmbeddingModel, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:33
  struct rig_core::providers::openrouter::embedding::EmbeddingModel, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:33
  struct rig_core::providers::openrouter::EmbeddingResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:10
  struct rig_core::providers::openrouter::embedding::EmbeddingResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/openrouter/embedding.rs:10
  struct rig_core::providers::mistral::embedding::EmbeddingModel, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/embedding.rs:19
  struct rig_core::providers::mistral::EmbeddingModel, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/mistral/embedding.rs:19
  struct rig_core::test_utils::MockExtensionsProbeTool, previously in file /tmp/.tmpuho7bD/rig-core/src/test_utils/tools.rs:76
  struct rig_core::providers::together::embedding::EmbeddingData, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:37
  struct rig_core::providers::together::EmbeddingData, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/together/embedding.rs:37
  struct rig_core::tool::ToolResultExtensions, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/extensions.rs:338

--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---

Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron

Failed in:
  field message of struct ApiErrorResponse, previously in file /tmp/.tmpuho7bD/rig-core/src/providers/gemini/client.rs:229

--- failure trait_method_missing: pub trait method removed or renamed ---

Description:
A trait method is no longer callable, and may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-item-signature
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_method_missing.ron

Failed in:
  method on_event of trait AgentHook, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:1165
  method on_event of trait AgentHook, previously in file /tmp/.tmpuho7bD/rig-core/src/agent/hook.rs:1165
  method name of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:146
  method call_with_extensions of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:181
  method classify_error of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:210
  method call_structured of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:236
  method name of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:146
  method call_with_extensions of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:181
  method classify_error of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:210
  method call_structured of trait Tool, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:236

--- failure trait_method_parameter_count_changed: pub trait method parameter count changed ---

Description:
A trait method now takes a different number of parameters.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-item-signature
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_method_parameter_count_changed.ron

Failed in:
  Tool::call now takes 2 instead of 1 parameters, in file /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:176
  Tool::call now takes 2 instead of 1 parameters, in file /tmp/.tmp0qiDmY/rig/crates/rig-core/src/tool/mod.rs:176

--- failure trait_missing: pub trait removed or renamed ---

Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_missing.ron

Failed in:
  trait rig_core::tool::ToolDyn, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:281
  trait rig_core::tool::ToolEmbeddingDyn, previously in file /tmp/.tmpuho7bD/rig-core/src/tool/mod.rs:468
Changelog

rig-derive

0.41.0 - 2026-07-16

Other

Contributors

Changed

  • (rig-derive) [breaking] generated #[rig_tool] implementations now target the single Tool::call API with ToolContext and preserve the function's Result<T, E> error as Tool::Error until erased dispatch normalizes it. A tool function may accept one &mut ToolContext parameter in any position; fully qualified rig::tool::ToolContext / rig_core::tool::ToolContext paths are recognized directly, while imported names and aliases use #[rig(context)]. The macro forwards the runtime context and excludes that parameter from the generated arguments and JSON Schema without confusing unrelated application types also named ToolContext.

rig-core

0.41.0 - 2026-07-16

Added

Fixed

Other

Contributors

Changed

  • (providers) [breaking] Move Together, OpenRouter, and Mistral embeddings onto the shared GenericEmbeddingModel, with provider-specific endpoint and typed request-shaping hooks. Together now forwards configured embedding dimensions, Mistral maps Codestral Embed dimensions to output_dimension while rejecting dimensions for fixed-size models, compatible providers may omit usage without weakening OpenAI's public response type, and Base64 response encoding is rejected before sending because the shared parser accepts numeric vectors. Remove the superseded provider-specific embedding response/data types, Together's API envelope module, and OpenRouter's duplicate EncodingFormat.
  • (tool) [breaking] Replace the parallel tool-execution APIs with one structured path. Typed tools now implement only Tool::call(&mut ToolContext, Args) -> Result<Output, Error>; author-facing errors remain typed until private runtime erasure normalizes them into ToolExecutionError, ToolContext carries inbound values and host-only result metadata, ToolResult is the single runtime observation, and ToolSet::execute / ToolServerHandle::execute are the dispatch surfaces. Event-specific hook action types make invalid event/action combinations unrepresentable.
    • Tool implementations: retain one typed type Error for ordinary ? propagation and direct-call tests; remove classify_error, call_with_extensions, and call_structured. The optional map_error method classifies domain failures at the erased boundary, while its default preserves the source as Other. Return refusals through map_error with ToolExecutionError::refused, and attach host-only result metadata with ToolContext::insert_result.
    • Context: replace ToolCallExtensions and ToolResultExtensions with ToolContext; replace request/runner .tool_extensions(...) with .tool_context(...). Each dispatch snapshots inbound context exactly once, isolates tool-local mutations, and publishes only result metadata back to the caller and hooks.
    • Dynamic tools: ToolDyn is removed from the public API; use DynamicTool for runtime-defined tools. Rig's erased dispatch trait is private. Typed tools use Tool::NAME as their sole identity; runtime-named agents convert explicitly with Agent::into_tool().
    • Registration vocabulary: AgentBuilder::tools(Vec<Box<dyn ToolDyn>>) is removed; use repeated .tool(...) calls for typed tools or dynamic_tools(Vec<DynamicTool>) for runtime-defined callbacks. Retrieval-backed dynamic_tools(sample, index, toolset) becomes retrieved_tools. On ToolSetBuilder, static_tool remains the typed-tool path, the former embedding-backed dynamic_tool(ToolEmbedding) becomes retrieved_tool, and runtime-defined callbacks use dynamic_tool(DynamicTool).
    • Results and errors: replace ToolError, ToolFailure, ToolFailureKind, ToolReturn, ToolReturnOutcome, ToolExecutionResult, and ToolOutcome with ToolExecutionError, ToolErrorKind, and the read-only ToolResult observed by hooks.
    • Model presentation: serializable outputs convert once into canonical ToolOutput content blocks; strings remain literal text, explicit serde_json::Value values remain JSON, and multimodal tools use ToolOutput::content / ToolOutput::one or return typed ToolResultContent directly. Result hooks now rewrite ToolOutput, provider adapters preserve native JSON where supported or render it only at their terminal wire boundary, mixed user/tool-result blocks retain order, and Rig never reparses strings to infer rich content. Consumers can inspect ToolResultContent with as_text / as_json and explicitly decode either structured JSON or legacy JSON-bearing text with deserialize_json.
    • Error presentation: explicit ToolExecutionError constructors keep actionable diagnostics model-visible, while the generic ToolExecutionError::from_error path preserves operator diagnostics and the concrete source but defaults to safe kind-level model feedback. Use with_model_feedback for deliberate replacement text or with_model_output for JSON/multimodal feedback. MCP responses preserve ordered supported text/image content, retain unsupported and future blocks as typed JSON, and attach raw CallToolResult, structuredContent, and response metadata to ToolContext. MCP list installation and refresh are atomic and ownership-aware, so stale handlers cannot replace or remove newer registrations, while disconnected owners are retired during refresh, provider exposure, or direct dispatch.
    • Dispatch: replace ToolSet::{call, call_with_extensions, call_structured} with ToolSet::execute; replace ToolServerHandle::{call_tool, call_tool_with_extensions, call_tool_structured} with ToolServerHandle::execute.
    • Registration and definitions: ToolSet is the single ordered registry and records whether each tool is always advertised or retrieval-only. ToolSet::{get_tool_definitions, documents} are now synchronous and infallible, ToolServerHandle registration/removal methods no longer return an artificial Result, and the obsolete ToolSetError is removed.
    • Hooks: replace AgentHook::on_event, StepEvent, and Flow with the event-specific AgentHook methods and their corresponding action types (CompletionCallAction, ToolCallAction, ToolResultAction, InvalidToolCallAction, and ObservationAction). Result rewrites replace the effective model and result-content telemetry presentation while preserving the raw ToolResult and ToolContext for policy; result stops omit result-content telemetry. Invalid-tool hooks return None to defer; every explicit action, including Fail, is terminal for that hook stack.
    • Streaming execution observation: the atomically surfaced post-batch event is named ToolExecutionCommitted, reflecting that it is not a real-time start notification. Applications that need live host lifecycle events should observe on_tool_call / on_tool_result; typed result metadata remains available through ToolResultEvent::tool_context without entering model-facing messages.
  • (core) [breaking] Mark PromptError, StructuredOutputError, and VectorStoreError as non-exhaustive, requiring downstream match expressions to include a wildcard arm. Conversation memory load failures now surface as the typed PromptError::MemoryError variant instead of CompletionError::RequestError.

rig-bedrock

0.41.0 - 2026-07-16

Added

Fixed

Other

Contributors

rig-candle

0.41.0 - 2026-07-16

Other

Contributors

rig-fastembed

0.38.1 - 2026-06-02

Other

Contributors

rig-gemini-grpc

0.40.0 - 2026-07-10

Added

Contributors

rig-helixdb

0.38.1 - 2026-06-02

Other

Contributors

rig-lancedb

0.38.1 - 2026-06-02

Other

Contributors

rig-memory

0.41.0 - 2026-07-16

Other

Contributors

rig-milvus

0.38.1 - 2026-06-02

Other

Contributors

rig-mongodb

0.38.1 - 2026-06-02

Other

Contributors

rig-neo4j

0.40.0 - 2026-07-10

Added

Contributors

Added

  • (neo4j) implement InsertDocuments for Neo4jVectorIndex — bulk-insert documents with precomputed embeddings via a single UNWIND Cypher write (one node per embedding, document fields flattened onto the node alongside embedded_text and the configured embedding property). Nodes are written under the index's label, which get_index now resolves from the index's labelsOrTypes (default Document); IndexConfig gains a node_label field + builder. (closes #1636)

rig-postgres

0.40.0 - 2026-07-10

Fixed

Contributors

rig-qdrant

0.38.1 - 2026-06-02

Other

Contributors

rig-s3vectors

0.41.0 - 2026-07-16

Fixed

Contributors

rig-scylladb

0.38.1 - 2026-06-02

Other

Contributors

rig-sqlite

0.40.0 - 2026-07-10

Other

Contributors

rig-surrealdb

0.38.1 - 2026-06-02

Other

Contributors

rig-vectorize

0.38.1 - 2026-06-02

Other

Contributors

rig-vertexai

0.41.0 - 2026-07-16

Added

Other

Contributors

rig

0.41.0 - 2026-07-16

Added

Fixed

Other

Contributors

Fixed

  • (aws) Stop enabling the AWS SDK's legacy Rustls connector in the Bedrock and S3 Vectors integrations, removing vulnerable rustls-webpki 0.101 from their active dependency graphs while retaining the modern default HTTPS client.

Changed

  • (tool) [breaking] Replace the parallel tool-execution APIs with one structured path. Typed tools now implement only Tool::call(&mut ToolContext, Args) -> Result<Output, Error>; author-facing errors remain typed until private runtime erasure normalizes them into ToolExecutionError, ToolContext carries inbound values and host-only result metadata, ToolResult is the single runtime observation, and ToolSet::execute / ToolServerHandle::execute are the dispatch surfaces. Event-specific hook action types make invalid event/action combinations unrepresentable.
    • Tool implementations: retain one typed type Error for ordinary ? propagation and direct-call tests; remove classify_error, call_with_extensions, and call_structured. The optional map_error method classifies domain failures at the erased boundary, while its default preserves the source as Other. Return refusals through map_error with ToolExecutionError::refused, and attach host-only result metadata with ToolContext::insert_result.
    • Context: replace ToolCallExtensions and ToolResultExtensions with ToolContext; replace request/runner .tool_extensions(...) with .tool_context(...). Each dispatch snapshots inbound context exactly once, isolates tool-local mutations, and publishes only result metadata back to the caller and hooks.
    • Dynamic tools: ToolDyn is removed from the public API; use DynamicTool for runtime-defined tools. Rig's erased dispatch trait is private. Typed tools use Tool::NAME as their sole identity; runtime-named agents convert explicitly with Agent::into_tool().
    • Registration vocabulary: AgentBuilder::tools(Vec<Box<dyn ToolDyn>>) is removed; use repeated .tool(...) calls for typed tools or dynamic_tools(Vec<DynamicTool>) for runtime-defined callbacks. Retrieval-backed dynamic_tools(sample, index, toolset) becomes retrieved_tools. On ToolSetBuilder, static_tool remains the typed-tool path, the former embedding-backed dynamic_tool(ToolEmbedding) becomes retrieved_tool, and runtime-defined callbacks use dynamic_tool(DynamicTool).
    • Results and errors: replace ToolError, ToolFailure, ToolFailureKind, ToolReturn, ToolReturnOutcome, ToolExecutionResult, and ToolOutcome with ToolExecutionError, ToolErrorKind, and the read-only ToolResult observed by hooks.
    • Model presentation: serializable outputs convert once into canonical ToolOutput content blocks; strings remain literal text, explicit serde_json::Value values remain JSON, and multimodal tools use ToolOutput::content / ToolOutput::one or return typed ToolResultContent directly. Result hooks now rewrite ToolOutput, provider adapters preserve native JSON where supported or render it only at their terminal wire boundary, mixed user/tool-result blocks retain order, and Rig never reparses strings to infer rich content. Consumers can inspect ToolResultContent with as_text / as_json and explicitly decode either structured JSON or legacy JSON-bearing text with deserialize_json.
    • Error presentation: explicit ToolExecutionError constructors keep actionable diagnostics model-visible, while the generic ToolExecutionError::from_error path preserves operator diagnostics and the concrete source but defaults to safe kind-level model feedback. Use with_model_feedback for deliberate replacement text or with_model_output for JSON/multimodal feedback. MCP responses preserve ordered supported text/image content, retain unsupported and future blocks as typed JSON, and attach raw CallToolResult, structuredContent, and response metadata to ToolContext. MCP list installation and refresh are atomic and ownership-aware, so stale handlers cannot replace or remove newer registrations, while disconnected owners are retired during refresh, provider exposure, or direct dispatch.
    • Dispatch: replace ToolSet::{call, call_with_extensions, call_structured} with ToolSet::execute; replace ToolServerHandle::{call_tool, call_tool_with_extensions, call_tool_structured} with ToolServerHandle::execute.
    • Registration and definitions: ToolSet is the single ordered registry and records whether each tool is always advertised or retrieval-only. ToolSet::{get_tool_definitions, documents} are now synchronous and infallible, ToolServerHandle registration/removal methods no longer return an artificial Result, and the obsolete ToolSetError is removed.
    • Hooks: replace AgentHook::on_event, StepEvent, and Flow with the event-specific AgentHook methods and their corresponding action types (CompletionCallAction, ToolCallAction, ToolResultAction, InvalidToolCallAction, and ObservationAction). Result rewrites replace the effective model and result-content telemetry presentation while preserving the raw ToolResult and ToolContext for policy; result stops omit result-content telemetry. Invalid-tool hooks return None to defer; every explicit action, including Fail, is terminal for that hook stack.
    • Streaming execution observation: the atomically surfaced post-batch event is named ToolExecutionCommitted, reflecting that it is not a real-time start notification. Applications that need live host lifecycle events should observe on_tool_call / on_tool_result; typed result metadata remains available through ToolResultEvent::tool_context without entering model-facing messages.
  • (core) [breaking] Mark PromptError, StructuredOutputError, and VectorStoreError as non-exhaustive, requiring downstream match expressions to include a wildcard arm. Conversation memory load failures now surface as the typed PromptError::MemoryError variant instead of CompletionError::RequestError.


This PR was generated with release-plz.

@github-actions github-actions Bot changed the title chore: release v0.40.0 chore: release v0.40.1 Jul 11, 2026
@github-actions github-actions Bot force-pushed the release-plz-2026-07-11T00-40-42Z branch 5 times, most recently from 94b404f to d9996d8 Compare July 11, 2026 21:51
@github-actions github-actions Bot changed the title chore: release v0.40.1 chore: release v0.41.0 Jul 11, 2026
@github-actions github-actions Bot force-pushed the release-plz-2026-07-11T00-40-42Z branch 13 times, most recently from b6ea03b to 305650c Compare July 16, 2026 05:30
@github-actions github-actions Bot force-pushed the release-plz-2026-07-11T00-40-42Z branch from 305650c to 5e7c6d7 Compare July 16, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants