Skip to content

chore: release v0.40.0#1923

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-06-19T06-56-37Z
Open

chore: release v0.40.0#1923
github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-06-19T06-56-37Z

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🤖 New release

  • rig-derive: 0.39.0 -> 0.40.0
  • rig-core: 0.39.0 -> 0.40.0 (⚠ API breaking changes)
  • rig-bedrock: 0.39.0 -> 0.40.0 (✓ API compatible changes)
  • rig-fastembed: 0.39.0 -> 0.40.0
  • rig-gemini-grpc: 0.39.0 -> 0.40.0 (✓ API compatible changes)
  • rig-helixdb: 0.39.0 -> 0.40.0
  • rig-lancedb: 0.39.0 -> 0.40.0
  • rig-memory: 0.39.0 -> 0.40.0
  • rig-milvus: 0.39.0 -> 0.40.0
  • rig-mongodb: 0.39.0 -> 0.40.0
  • rig-neo4j: 0.39.0 -> 0.40.0 (⚠ API breaking changes)
  • rig-postgres: 0.39.0 -> 0.40.0 (✓ API compatible changes)
  • rig-qdrant: 0.39.0 -> 0.40.0
  • rig-s3vectors: 0.39.0 -> 0.40.0
  • rig-scylladb: 0.39.0 -> 0.40.0
  • rig-sqlite: 0.39.0 -> 0.40.0 (✓ API compatible changes)
  • rig-surrealdb: 0.39.0 -> 0.40.0
  • rig-vectorize: 0.39.0 -> 0.40.0
  • rig-vertexai: 0.39.0 -> 0.40.0 (✓ API compatible changes)
  • rig: 0.39.0 -> 0.40.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 CompletionResponse.id in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/deepseek.rs:131
  field CompletionResponse.model in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/deepseek.rs:133
  field CompletionResponse.object in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/deepseek.rs:135
  field CompletionResponse.system_fingerprint in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/deepseek.rs:137
  field AdditionalParameters.prompt_cache_key in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1428
  field AdditionalParameters.prompt_cache_retention in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1431
  field Usage.completion_tokens in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1065
  field Usage.completion_tokens_details in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1070
  field Usage.queue_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1072
  field Usage.prompt_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1074
  field Usage.completion_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1076
  field Usage.total_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1078
  field Usage.completion_tokens in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1065
  field Usage.completion_tokens_details in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1070
  field Usage.queue_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1072
  field Usage.prompt_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1074
  field Usage.completion_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1076
  field Usage.total_time in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/completion/mod.rs:1078
  field LogprobsResult.top_candidates in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/gemini/completion.rs:1511
  field LogprobsResult.log_probability_sum in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/gemini/completion.rs:1513
  field LogprobsResult.chosen_candidates in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/gemini/completion.rs:1515

--- failure declarative_macro_missing: macro_rules declaration removed or renamed ---

Description:
A `macro_rules!` declarative macro cannot be invoked by its prior name. The macro may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/reference/macros-by-example.html#path-based-scope
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/declarative_macro_missing.ron

Failed in:
  macro tuple_pattern, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:149
  macro conditional, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/conditional.rs:48
  macro try_parallel_internal, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:176
  macro parallel_internal, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:49
  macro parallel_internal, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:49
  macro parallel_op, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:136
  macro try_conditional, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/conditional.rs:127
  macro parallel, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:162
  macro parallel, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:162
  macro try_parallel, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:262

--- 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 RerankError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/rerank.rs:20
  enum ImageGenerationError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/image_generation.rs:14
  enum CompletionError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/completion/request.rs:89
  enum CompletionError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/completion/request.rs:89
  enum VerifyError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/client/verify.rs:15
  enum VerifyError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/client/verify.rs:15
  enum VerifyError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/client/verify.rs:15
  enum AudioGenerationError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/audio_generation.rs:22
  enum EmbeddingError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/embeddings/embedding.rs:22
  enum EmbeddingError in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/embeddings/embedding.rs:22

--- 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::HookAction, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/hooks.rs:207
  enum rig_core::pipeline::ChainError, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/mod.rs:293
  enum rig_core::providers::mistral::completion::ToolChoice, previously in file /tmp/.tmpNYbfwq/rig-core/src/providers/mistral/completion.rs:308
  enum rig_core::providers::mistral::ToolChoice, previously in file /tmp/.tmpNYbfwq/rig-core/src/providers/mistral/completion.rs:308
  enum rig_core::agent::ToolCallHookAction, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/hooks.rs:175

--- failure enum_struct_variant_field_added: pub enum struct variant field added ---

Description:
An enum's exhaustive struct variant has a new field, which has to be included when constructing or matching on this variant.
        ref: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_struct_variant_field_added.ron

Failed in:
  field content of variant Output::Reasoning in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1670

--- failure enum_unit_variant_changed_kind: An enum unit variant changed kind ---

Description:
A public enum's exhaustive unit variant has changed to a different kind of enum variant, breaking possible instantiations and patterns.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/enum_unit_variant_changed_kind.ron

Failed in:
  variant Output::Unknown in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/responses_api/mod.rs:1677

--- 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 ItemChunkKind:ReasoningTextDelta in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/responses_api/streaming.rs:749
  variant StreamedAssistantContent:Unknown in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/streaming.rs:1148
  variant MockHttpResponse:ErrorResponse in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/test_utils/http.rs:37
  variant RawStreamingChoice:Unknown in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/streaming.rs:142

--- 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 Transport::NdJson, previously in file /tmp/.tmpNYbfwq/rig-core/src/client/mod.rs:237

--- failure function_missing: pub fn removed or renamed ---

Description:
A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function 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/function_missing.ron

Failed in:
  function rig_core::pipeline::agent_ops::lookup, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/agent_ops.rs:61
  function rig_core::pipeline::with_error, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/mod.rs:309
  function rig_core::pipeline::agent_ops::prompt, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/agent_ops.rs:103
  function rig_core::pipeline::op::passthrough, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:289
  function rig_core::pipeline::passthrough, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:289
  function rig_core::pipeline::op::map, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:256
  function rig_core::pipeline::map, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:256
  function rig_core::pipeline::op::then, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:326
  function rig_core::pipeline::then, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:326
  function rig_core::pipeline::new, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/mod.rs:302
  function rig_core::pipeline::agent_ops::extract, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/agent_ops.rs:150

--- 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:
  TypedPromptRequest::with_tool_concurrency, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/mod.rs:953
  TypedPromptRequest::with_history, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/mod.rs:959
  TypedPromptRequest::with_hook, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/mod.rs:988
  GenericEventSource::with_retry_policy, previously in file /tmp/.tmpNYbfwq/rig-core/src/http_client/sse.rs:107
  PromptRequest::with_tool_concurrency, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/mod.rs:176
  PromptRequest::with_history, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/mod.rs:182
  PromptRequest::with_hook, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/mod.rs:211
  StreamingPromptRequest::with_history, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/streaming.rs:381
  StreamingPromptRequest::with_hook, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/streaming.rs:392
  AgentBuilder::conversation_id, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/builder.rs:257
  AgentBuilder::hook, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/builder.rs:266

--- 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::StreamingPromptRequest::from_agent takes 0 generic types instead of 1, in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/agent/prompt_request/streaming.rs:353

--- 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::pipeline, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/mod.rs:1
  mod rig_core::pipeline::op, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:1
  mod rig_core::pipeline::conditional, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/conditional.rs:1
  mod rig_core::pipeline::try_op, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:1
  mod rig_core::pipeline::agent_ops, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/agent_ops.rs:1
  mod rig_core::pipeline::parallel, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:1

--- failure struct_marked_non_exhaustive: struct marked #[non_exhaustive] ---

Description:
A public struct has been marked #[non_exhaustive], which will prevent it from being constructed using a struct literal outside of its crate. It previously had no private fields, so a struct literal could be used to construct it outside its crate.
        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/struct_marked_non_exhaustive.ron

Failed in:
  struct InvalidToolCallContext in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/agent/hook.rs:380

--- 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::pipeline::op::Passthrough, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:265
  struct rig_core::pipeline::try_op::OrElse, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:306
  struct rig_core::test_utils::MockPromptModel, previously in file /tmp/.tmpNYbfwq/rig-core/src/test_utils/pipeline.rs:11
  struct rig_core::pipeline::try_op::TrySequential, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:334
  struct rig_core::pipeline::agent_ops::Lookup, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/agent_ops.rs:13
  struct rig_core::pipeline::parallel::Parallel, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/parallel.rs:5
  struct rig_core::test_utils::Foo, previously in file /tmp/.tmpNYbfwq/rig-core/src/test_utils/pipeline.rs:64
  struct rig_core::pipeline::op::Sequential, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:195
  struct rig_core::pipeline::PipelineBuilder, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/mod.rs:109
  struct rig_core::pipeline::agent_ops::Prompt, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/agent_ops.rs:70
  struct rig_core::http_client::retry::Never, previously in file /tmp/.tmpNYbfwq/rig-core/src/http_client/retry.rs:111
  struct rig_core::pipeline::op::Then, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:296
  struct rig_core::pipeline::try_op::MapOk, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:223
  struct rig_core::test_utils::MockVectorStoreIndex, previously in file /tmp/.tmpNYbfwq/rig-core/src/test_utils/pipeline.rs:38
  struct rig_core::pipeline::agent_ops::Extract, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/agent_ops.rs:111
  struct rig_core::pipeline::op::Map, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:227
  struct rig_core::http_client::retry::Constant, previously in file /tmp/.tmpNYbfwq/rig-core/src/http_client/retry.rs:75
  struct rig_core::pipeline::try_op::MapErr, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:251
  struct rig_core::pipeline::try_op::AndThen, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:280

--- 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 top_candidate of struct LogprobsResult, previously in file /tmp/.tmpNYbfwq/rig-core/src/providers/gemini/completion.rs:1504
  field chosen_candidate of struct LogprobsResult, previously in file /tmp/.tmpNYbfwq/rig-core/src/providers/gemini/completion.rs:1505
  field hook of struct Agent, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/completion.rs:295

--- 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 record_model_input of trait SpanCombinator, previously in file /tmp/.tmpNYbfwq/rig-core/src/telemetry/mod.rs:61

--- 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::completion::message::ConvertMessage, previously in file /tmp/.tmpNYbfwq/rig-core/src/completion/message.rs:18
  trait rig_core::message::ConvertMessage, previously in file /tmp/.tmpNYbfwq/rig-core/src/completion/message.rs:18
  trait rig_core::telemetry::ProviderRequestExt, previously in file /tmp/.tmpNYbfwq/rig-core/src/telemetry/mod.rs:10
  trait rig_core::pipeline::try_op::TryOp, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:14
  trait rig_core::pipeline::TryOp, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/try_op.rs:14
  trait rig_core::agent::PromptHook, previously in file /tmp/.tmpNYbfwq/rig-core/src/agent/prompt_request/hooks.rs:79
  trait rig_core::pipeline::op::Op, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:10
  trait rig_core::pipeline::Op, previously in file /tmp/.tmpNYbfwq/rig-core/src/pipeline/op.rs:10

--- failure trait_removed_associated_type: trait's associated type was removed ---

Description:
A public trait's associated type was removed or renamed.
        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_removed_associated_type.ron

Failed in:
  associated type StreamingPrompt::Hook, previously at /tmp/.tmpNYbfwq/rig-core/src/streaming.rs:561
  associated type StreamingChat::Hook, previously at /tmp/.tmpNYbfwq/rig-core/src/streaming.rs:602

--- failure type_allows_fewer_generic_type_params: type now allows fewer generic type parameters ---

Description:
A type now allows fewer generic type parameters than it used to. Uses of this type that supplied all previously-supported generic types will be broken.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-parameter-no-default
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/type_allows_fewer_generic_type_params.ron

Failed in:
  Struct TypedPromptRequest allows 4 -> 3 generic types in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/agent/prompt_request/mod.rs:477
  Struct PromptRequest allows 3 -> 2 generic types in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/agent/prompt_request/mod.rs:96
  Struct Agent allows 2 -> 1 generic types in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/agent/completion.rs:643
  Struct StreamingPromptRequest allows 2 -> 1 generic types in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/agent/prompt_request/streaming.rs:330
  Struct AgentBuilder allows 3 -> 2 generic types in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/agent/builder.rs:96

--- failure unit_struct_changed_kind: unit struct changed kind ---

Description:
A public unit struct has been changed to a normal (curly-braces) struct, which cannot be constructed using the same struct literal syntax.
        ref: https://github.com/rust-lang/cargo/pull/10871
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/unit_struct_changed_kind.ron

Failed in:
  struct OpenAICompletionsExt in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/client.rs:36
  struct OpenAICompletionsExt in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/client.rs:36
  struct OpenAIResponsesExt in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/client.rs:25
  struct OpenAIResponsesExt in /tmp/.tmprm4KJ7/rig/crates/rig-core/src/providers/openai/client.rs:25

rig-neo4j 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 IndexConfig.node_label in /tmp/.tmprm4KJ7/rig/crates/rig-neo4j/src/vector_index.rs:45
Changelog

rig-derive

0.38.2 - 2026-06-09

Other

  • update Cargo.toml dependencies

rig-core

0.40.0 - 2026-07-06

Added

Fixed

Other

Contributors

Added

  • (agent) [breaking] hook system v2 — composable middleware for the agent run loop. Builds on the unified AgentHook below and makes hooks compose the way production middleware needs:
    • Run-scoped HookContext. on_event now takes (&HookContext, StepEvent) — the trait signature changed, so every AgentHook impl gains a context parameter. HookContext carries the run's identity and state: run_id(), turn(), is_streaming(), agent_name(), and a shared Scratchpad (an interior-mutable type-map: insert/get/update) so cooperating hooks share per-run state without rolling their own Arc<Mutex<…>>.
    • Mergeable request patches. Flow::OverrideRequest/RequestOverride become Flow::PatchRequest/RequestPatch (constructor Flow::patch_request(..)). On StepEvent::CompletionCall, patches from every hook now accumulate and merge in registration order instead of the first patch short-circuiting the rest — so a RAG hook, a tool-policy hook, and a provider-param hook all steer the same turn. Per-field merge rules are documented on RequestPatch: extra_context appends, additional_params shallow-merges (later wins), active_tools intersects (two narrowing guardrails compose), and scalars/preamble/history are last-writer-wins with a tracing::warn! on conflict. Patches remain per-turn and non-sticky.
    • RequestPatch::extra_context. Hooks can inject Vec<Document> context for a single model call (passive RAG), appended after the agent's static and dynamic (vector-store) context. Per-turn and non-sticky; works identically on run() and stream().
    • RequestPatch::history. A per-turn replacement for the prior messages sent to the provider (context-window compaction / summarization). The persisted transcript is untouched and RAG query text still derives from the original history — only what is sent changes.
    • Chained tool rewrites. Flow::RewriteArgs / Flow::RewriteResult now compose across a HookStack: the rewritten value is threaded into the next hook's ToolCall/ToolResult event, so a redaction hook and a truncation hook stack (previously only the first rewrite took effect). The first result hook still observes the tool's actual output.
    • StepEvent::ModelTurnFinished { turn, content, usage }. A normalized per-turn event that fires exactly once per accepted model turn on both surfaces — including a streamed tool-only turn that fires no StreamResponseFinish. Observe-only; the medium-specific CompletionResponse/StreamResponseFinish events are retained for the raw provider payload.
  • (agent) [breaking] tool execution stream events split model-emitted from execution-lifecycle, and concurrent tool batches commit/surface atomically:
    • Model tool call vs. execution start. MultiTurnStreamItem::StreamAssistantItem(StreamedAssistantContent::ToolCall) now reports the tool call the model emitted (surfaced when the model turn is committed, whether or not Rig executes it). A new MultiTurnStreamItem::ToolExecutionStart { tool_call, internal_call_id } marks that Rig has started executing a tool — emitted only after the tool passed its ToolCall hook checks and its body actually runs (never for a hook-skipped call, an invalid-recovery call, or a dropped sibling). Correlate the two, and the resulting ToolResult, via internal_call_id.
    • Atomic per-batch commit/surface. A turn's tool calls are collected, not streamed one-by-one: successful ToolExecutionStart + ToolResult items are surfaced (in call order) and committed to history only after the whole batch settles successfully. On the first hook termination / fail-closed error the batch fails fast — no new tool starts, not-yet-started concurrent siblings are dropped, already-started ones are drained, the deterministic lowest call-index error is surfaced, and no successful ToolExecutionStart/ToolResult is surfaced or committed (no orphan execution-start events, no partial history). run() and stream() return the same terminal reason. Previously the concurrent path streamed each result as its tool completed (in completion order) — results now surface in call order after the batch settles.
  • (agent) [breaking] local validation of the effective tool set + tool_choice before the provider call. After per-turn request patches and active_tools filtering, ToolChoice::Required with no advertised tool (no executable tool and no synthetic output tool) and ToolChoice::Specific naming a tool not in the effective advertised set (executable tools + output tool) are local request errors with no provider round-trip. When a per-turn active_tools allow-list caused the incompatibility, the error says so and suggests setting a compatible tool_choice in the same RequestPatch. Structured-output Tool mode with no real tools still works when the synthetic output tool satisfies the choice.
  • (agent) [breaking] unified, composable hook system integrated into the agent run loop. A single-method AgentHook<M> trait (async fn on_event(&self, ctx: &HookContext, event: StepEvent<'_, M>) -> Flow) replaces the 8-method PromptHook. Hooks compose via HookStack and run in registration order (see the hook system v2 entry above for the per-event composition rules: CompletionCall patches accumulate, ToolCall/ToolResult rewrites chain, and observe-only/recovery events use first-non-Continue-wins). A new AgentRunner<M> driver — obtained with agent.runner(prompt) and run via .run().await (blocking) or .stream() (incremental) — pairs the sans-IO AgentRun state machine with hooks, model IO, tool execution and memory; both agent.prompt(..) and agent.stream_prompt(..) are now thin wrappers over it. Attach/compose hooks with .add_hook(h) (append-only; call it again to stack more) on the agent builder, the prompt request, or the runner. This closes the gap where hand-driving AgentRun had no hook support.
    • Streaming ≡ non-streaming. run() and stream() share one drive loop, run construction, and tool execution, so they produce the same message history, tool-result content, and recovery — only the inherently-streaming TextDelta/ToolCallDelta/StreamResponseFinish events differ. The medium-independent hook event sequence (model call, tool call/result, invalid-tool-call) is identical at the default tool concurrency of 1; the medium-specific StreamResponseFinish additionally fires only on turns that stream assistant text, so it is not a one-to-one match for the blocking CompletionResponse. See the behavioral note below for the observable changes when upgrading.
    • Fail-closed Flow. Each StepEvent honors a documented subset of Flow actions; an action an event cannot honor (e.g. Flow::Fail on a tool call) terminates the run rather than silently proceeding, so a blocking hook can never fail open.
    • Event interest. AgentHook::observes(StepEventKind) (default: all) lets a hook opt out of the high-frequency streaming delta events; the runner then skips building and dispatching them, so an empty stack — and hooks that only watch tool calls — pay nothing per delta.
  • (agent) tool-call argument rewriting from a hook: a new Flow::RewriteArgs { args } action — constructor Flow::rewrite_args(impl Into<serde_json::Value>), plus the typed Flow::try_rewrite_args(&T) — lets an AgentHook rewrite a StepEvent::ToolCall's arguments before the tool runs, for guardrails that normalize, clamp, redirect, or inject scoped parameters. The rewritten arguments are what the tool executes against, what the following StepEvent::ToolResult reports, and what the gen_ai.tool.call.arguments span records; the model's assistant message is left unchanged, so this is an execution-args rewrite, not a transcript redactor. It is honored only for ToolCall (fail-closed on every other event) and wired through the shared run_single_tool, so it behaves identically on the blocking and streaming drivers. Flow is #[non_exhaustive], so the addition is non-breaking. (#1963, closes #1744)
  • (agent) tool-result rewriting from a hook: a new Flow::RewriteResult { result } action (constructor Flow::rewrite_result(impl Into<String>)) lets an AgentHook replace a tool's output on the StepEvent::ToolResult event before the model sees it — the post-execution counterpart of Flow::RewriteArgs, completing a symmetric Rewrite{Args,Result} family, for guardrails that redact, truncate, or normalize tool output. The replacement is what the model receives and what the gen_ai.tool.call.result span records; the ToolResult event still observes the tool's actual output (the rewrite is applied after it fires). Honored only for ToolResult (fail-closed on every other event) and wired through the shared run_single_tool, so it behaves identically on the blocking and streaming drivers. Flow is #[non_exhaustive], so the addition is non-breaking. (#1965)
  • (agent) per-turn model-request steering from a hook: a new Flow::PatchRequest { patch: RequestPatch } action (constructor Flow::patch_request(..)) lets an AgentHook patch the model request on the StepEvent::CompletionCall event before it is sent — adjusting the system prompt, sampling (temperature/max_tokens), tool_choice, the advertised tool set (a by-name active_tools allow-list), and provider additional_params from run state (e.g. force a tool on the first turn, lower the temperature on a critical step, or shrink the tool set after a phase). RequestPatch is a partial patch built with setters: a set field replaces the agent's configured value (additional_params is shallow-merged, the override winning), an unset field inherits it, and the patch applies to that turn only — it is non-sticky and never mutates the agent baseline. Honored only for CompletionCall (fail-closed on every other event) and applied in the shared request builder, so it behaves identically on the blocking and streaming drivers. The variant is additive (Flow is #[non_exhaustive]), but because the override carries an f64 temperature, Flow is now PartialEq and no longer Eq. (#1966)
  • (providers) broaden provider error-response inspection (provider_response_body / provider_response_json / provider_response_status) to all in-core providers (Anthropic, Gemini, Cohere, xAI, Hyperbolic, Ollama, Mira, VoyageAI, Mistral, Hugging Face, OpenRouter, OpenAI audio, …) and the gRPC/SDK companion crates (rig-bedrock, rig-vertexai, rig-gemini-grpc). Adds the shared from_http_response(status, body) and from_provider_body(body) constructors on every capability error so HTTP failures are no longer flattened into ProviderError(String) (#1944, closes #1931)
  • (tool) per-call tool extensions: ToolCallExtensions, a type-erased, cloneable type-map (TypeId → value; a port of http::Extensions including the no-op IdHasher; zero-allocation when empty) that lets callers attach runtime values to a tool call — auth tokens, session IDs, A2A context_id/task_id, conversation state — without exposing them to the model. Tools opt in by overriding Tool::call_with_extensions(args, &extensions) (the default delegates to call, so existing Tool/ToolDyn impls are unchanged); read values with extensions.get::<T>() or extensions.require::<T>(). Attach per-run via agent.prompt(..).tool_extensions(..) / agent.stream_prompt(..).tool_extensions(..) (also on TypedPromptRequest and AgentRunner), threaded through the run loop into the single run_single_tool dispatch site for both the blocking and streaming drivers. The dispatch chain gains a parallel call_with_extensions on ToolDyn / ToolType / ToolSet / ToolServerHandle. Sub-agents (an Agent used as a tool) propagate the extensions into the inner run. MCP tools forward an rmcp::model::Meta placed in the extensions as the request _meta (SEP-1319) — per-call auth/session for MCP servers (Meta re-exported at rig::tool::rmcp::Meta). (#1954, closes #1536)
  • (tool) [breaking] structured tool-execution results. A tool call now resolves to a ToolExecutionResult { model_output, outcome, extensions } that flows all the way to the StepEvent::ToolResult hook event, so hooks, tracing, telemetry, and policies can reason about what happened without parsing the model-visible string. The outcome is a ToolOutcomeSuccess, Error(ToolFailure), Skipped, or Denied — where ToolFailure { kind, message, retryable, code, http_status } classifies the failure via a standard ToolFailureKind (InvalidArgs, Timeout, Cancelled, NotFound, PermissionDenied, RateLimited, Provider, Network, Other). Motivating use case: a hook can outcome.is_error_kind(ToolFailureKind::Timeout), count timeouts in the run Scratchpad, and Flow::terminate after a threshold, while a NotFound falls through as recoverable model-visible feedback — all without string parsing.
    • Authoring. A tool classifies its own error type with Tool::classify_error(&Self::Error) -> ToolFailure (default: Other), and can return richer results from Tool::call_structured(args, &extensions) -> Result<ToolReturn<Output>, Error> (default: wraps call as ToolReturn::success). ToolReturn<T> attaches an outcome and/or ToolResultExtensions — type-erased, never-sent-to-the-model metadata (provider ids, raw headers, retry hints) — to its output; a plain T: Serialize output stays as ergonomic as before. A tool's declared outcome is a ToolReturnOutcomeSuccess, Error(ToolFailure), or Denied — a strict subset of the observed ToolOutcome with no Skipped variant: Skipped is a framework-only outcome (a ToolCall hook returning Flow::Skip), so it is impossible by construction for a tool to return — or build a ToolExecutionResult claiming — a skipped outcome while having actually run. Tools express refusal with denied. (ToolReturnOutcome converts into ToolOutcome via From; ToolExecutionResult's fields are read via model_output() / outcome() / extensions().)
    • Dispatch boundary. ToolDyn gains call_structured (with a default that wraps call), threaded through ToolType, ToolSet::call_structured, and ToolServerHandle::call_tool_structured; the agent loop drives this structured path in the shared run_single_tool, so blocking and streaming observe identical outcomes. MCP tools classify a per-call timeout as Timeout, a transport error as Provider, and a tool-reported error as Other (McpToolError now carries a ToolFailureKind).
    • Hooks. StepEvent::ToolResult gains outcome: &ToolOutcome and extensions: &ToolResultExtensions alongside result. A Flow::RewriteResult still rewrites only the model-visible result; the raw outcome/extensions are unaffected, so a redaction hook cannot mask the true outcome from a later policy hook. Behavioral changes: Flow::Skip now fires StepEvent::ToolResult with a Skipped outcome (previously a skipped tool fired no result hook), so result hooks and denial-logging policies observe skips; and a tool error's model-visible text is now the tool's own error Display (formatted at the boundary) rather than the previous triple-wrapped Toolset error: ToolCallError: ToolCallError: … string. Because fields were added to the #[non_exhaustive] ToolResult variant, an exhaustive destructure must add .. (or the new fields).
  • (agent) concurrent tool execution on the streaming driver, gated behind the existing tool_concurrency(n) knob (default 1 = unchanged), bringing it to parity with the blocking path. tool_concurrency(n) is now exposed on StreamingPromptRequest (alongside PromptRequest/AgentRunner). A turn with several independent slow tools (HTTP/MCP) now finishes in ≈max rather than ≈sum under streaming. A turn's ToolCall items are emitted in call order, then — once the whole tool batch settles — the per-tool ToolExecutionStart + ToolResult items are surfaced in call order; persisted message history is deterministic in call order and matches the blocking driver (see the atomic per-batch commit/surface note above). (#1955, closes #1872)

Changed

  • (openai) [breaking] the Responses API conversion now sends Rig system instructions (the preamble and any leading system messages) through the official top-level instructions field instead of as system messages in input. Mid-conversation system messages keep their position in input; ChatGPT (whose backend rejects the system role entirely) lifts all of them. Behavioral note for OpenAI-compatible endpoints: a backend that ignores or rejects top-level instructions (some vLLM / mistral.rs / LM Studio setups) will silently lose the system prompt under the new default — call with_system_instructions_as_messages() on the openai::Client (applies to every model, agent, and extractor created from it) or on a ResponsesCompletionModel to restore the previous request shape. Placement is expressed by the new public responses_api::SystemInstructionsPlacement enum — selectable via with_system_instructions_placement(..) on the openai::Client and on ResponsesCompletionModel (including AllInstructions for backends that reject the system role), with with_system_instructions_as_messages() kept as a shorthand for the compatibility fallback — and a client-level default flows through the new responses_api::ResponsesProviderExt trait implemented by the client's Ext type (system_instructions_placement is a required method, so implementors must state their placement explicitly). A configured placement survives completions_api()/responses_api() round trips. Direct request conversion with a non-default placement uses the public responses_api::ResponsesRequestParams (a TryFrom source for the Responses CompletionRequest, mirroring the Chat Completions OpenAIRequestParams pattern). Also [breaking]: OpenAIResponsesExt and OpenAICompletionsExt are no longer unit structs — construct them with ::default() instead of the struct literal. (#1995, closes #1599)
  • (anthropic) the streaming completion path now honors the request's tool_choice instead of hardcoding auto, so a caller's tool choice (including one set per-turn via Flow::PatchRequest) takes effect under stream_prompt/streaming as it already did on the blocking path. A tool_choice Anthropic cannot represent (a multi-name ToolChoice::Specific) now surfaces as a request error on both the streaming and blocking paths instead of being silently downgraded to auto. (#1966)
  • (agent) [breaking] Flow no longer implements Eq (it remains PartialEq), because Flow::PatchRequest carries a RequestPatch with an f64 temperature. Code that relied on Flow: Eq (e.g. an Eq derive on a type embedding Flow, or an Eq/Hash bound) must drop that requirement. (#1966)
  • (agent) [breaking] removed PromptHook, HookAction and ToolCallHookAction. Their capabilities are folded into AgentHook / StepEvent / Flow. Agent, AgentBuilder, PromptRequest, TypedPromptRequest and StreamingPromptRequest no longer carry a hook type parameter P (hooks are a runtime HookStack<M>), and AgentBuilder::hook(..) becomes add_hook(..) (append-only; there is no stack-replacing setter). Per-request hooks likewise move from PromptRequest::with_hook(..) / StreamingPromptRequest::with_hook(..) — which replaced the agent's hook — to add_hook(..), which appends; a mechanical with_hookadd_hook rename therefore now also runs any agent-default hooks the old override call would have dropped. InvalidToolCallContext and InvalidToolCallHookAction (used when hand-driving AgentRun::resolve_invalid_tool_call) are retained. The agent::hook module docs include a method-by-method PromptHookAgentHook migration table (each old method → its StepEvent variant and the Flow to return).
  • (agent) [breaking] aligned builder/runner method names for consistency: AgentBuilder::conversation_id(..)conversation(..) (matching PromptRequest/AgentRunner::conversation), and the runner/request builders drop the lone with_ prefix — with_history(..)history(..) and with_tool_concurrency(..)tool_concurrency(..). The lower-level AgentRun::with_history(..) (part of its own with_-prefixed builder family) is unchanged.
  • (agent) [behavioral] observable changes from the unified runner (the default tool_concurrency of 1 is unaffected by the ordering change):
    • Persisted tool results now land in tool-call order under tool_concurrency(>1): the blocking path switched from buffer_unordered to buffered, so history/memory order is deterministic. The streaming path collects a turn's tool outcomes and surfaces the ToolExecutionStart/ToolResult stream items in tool-call order once the batch settles, persisting history in tool-call order too — matching the blocking driver (see the atomic per-batch commit/surface note above).
    • Synthetic tool results — hook/invalid-tool skip reasons and recovery feedback — are emitted verbatim as text in both drivers (and in streamed StreamUserItems), no longer re-parsed through from_tool_output; a JSON-shaped reason is no longer reinterpreted as a structured/multimodal result.
    • Streaming FinalResponse::history() is now always Some(..) (parity with run()); it was None when no input history/memory was supplied, so a caller that branched on None to detect "no history" will observe a change.
    • Streaming StreamResponseFinish is now suppressed on invalid-tool-call repaired turns (parity with the blocking CompletionResponse); pre-PR it fired on the repaired turn.
  • (rerank) [breaking] RerankError is now #[non_exhaustive] and gains a ProviderResponse variant, so rerank failures preserve the provider's raw status + body for inspection (parity with the other capability errors)
  • (streaming) the OpenAI-compatible SSE stream now treats a present, non-empty error field (object or string) as a terminal provider error and ignores {"error":null} / empty values.
  • (streaming) terminal streaming failures preserve the provider's error payload as ProviderResponse when present, otherwise surface ProviderError (so provider_response_body() may be None).
  • (providers) [behavioral] migrated provider HTTP-error paths now yield ProviderResponse / HttpError instead of ProviderError(String) / ResponseError(String). The error variant — and the Display / to_string() output for those failures — changed accordingly (e.g. "ProviderError: …""HttpError: …"). Exhaustive matches keep compiling (#[non_exhaustive]), but downstream code that matches specific variants or string-greps error messages will observe different runtime behavior.
  • (openai) [breaking] OpenAI Responses Output::Unknown now carries the raw serde_json::Value of the unrecognized output item instead of being a fieldless unit variant, so provider-native hosted-tool items (web_search_call, file_search_call, computer_call, code_interpreter_call) survive the typed decode and are reachable on CompletionResponse.output instead of being discarded. Downstream exhaustive matches need the one-token Output::Unknown(_) update. (#1950, closes #1861)
  • (streaming) [breaking] surface unmodeled provider output items through the stream: new RawStreamingChoice::Unknown(serde_json::Value) and public StreamedAssistantContent::Unknown(serde_json::Value) variants carry the raw item (e.g. OpenAI Responses hosted-tool results like web_search_call) to stream consumers instead of dropping it. The OpenAI Responses and Copilot streaming paths now emit it; it is forwarded to the consumer but not folded into the accumulated assistant message/history (there is no AssistantContent::Unknown). Adding the variants is breaking for exhaustive matches on these non-exhaustive enums.

rig-bedrock

0.40.0 - 2026-07-06

Added

Other

Contributors

rig-fastembed

0.38.1 - 2026-06-02

Other

Contributors

rig-gemini-grpc

0.40.0 - 2026-07-06

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.38.1 - 2026-06-02

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-06

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-06

Fixed

Contributors

rig-qdrant

0.38.1 - 2026-06-02

Other

Contributors

rig-s3vectors

0.38.1 - 2026-06-02

Other

Contributors

rig-scylladb

0.38.1 - 2026-06-02

Other

Contributors

rig-sqlite

0.40.0 - 2026-07-06

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.40.0 - 2026-07-06

Added

Contributors

rig

0.40.0 - 2026-07-06

Added

Fixed

@github-actions github-actions Bot changed the title chore: release v0.39.0 chore: release v0.39.1 Jun 19, 2026
@github-actions github-actions Bot force-pushed the release-plz-2026-06-19T06-56-37Z branch 3 times, most recently from 2645958 to fb023b9 Compare June 21, 2026 00:42
@github-actions github-actions Bot changed the title chore: release v0.39.1 chore: release v0.40.0 Jun 21, 2026
@github-actions github-actions Bot force-pushed the release-plz-2026-06-19T06-56-37Z branch 22 times, most recently from 725b9a8 to f860962 Compare June 26, 2026 22:24
@github-actions github-actions Bot force-pushed the release-plz-2026-06-19T06-56-37Z branch 3 times, most recently from 562d664 to e181db5 Compare June 29, 2026 17:16
@github-actions github-actions Bot force-pushed the release-plz-2026-06-19T06-56-37Z branch 28 times, most recently from dda3d0d to 48a5707 Compare July 5, 2026 09:57
@github-actions github-actions Bot force-pushed the release-plz-2026-06-19T06-56-37Z branch from 48a5707 to ea84eb9 Compare July 6, 2026 21:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment