Repository navigation
mentra 0.28.0 / mentra-provider 0.9.0
·
83 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Removed the RegisteredProvider alias
- Breaking:
mentra_provider::RegisteredProvideris removed. It was a bare
pub use Provider as RegisteredProvider;with no callers outside the crate's
own provider impls; useProvider.
Folded ModelCatalog and ProviderSessionFactory into Provider
- Breaking: the
ModelCatalogandProviderSessionFactorytraits are
removed;list_modelsandcreate_sessionare now required methods on
Provideritself. Every implementor in the workspace already implemented all
three traits on the same type, and neither trait was ever used as adyntype
or a generic bound. External implementors merge their two impl blocks into
theirProviderimpl.
Removed the unread RetryPolicy provider config
- Breaking:
mentra::RetryPolicy/mentra_provider::RetryPolicyand the
ProviderDefinition::retryfield are removed. No code in the workspace ever
read the policy; per-run retry behavior is configured with
RunOptions::provider_retry(mentra::runtime::ProviderRetry) and is
unchanged. SerializedProviderDefinitionJSON carrying aretrykey still
deserializes (the key is ignored).
Removed two unused OAuth credential-source constructors
- Breaking (feature
openai-oauth):
OpenAIOAuthCredentialSource::from_default_persistent_storeand
::from_default_persistent_store_or_authorizeare removed. Both were
one-line defaults with no callers; passPersistentTokenStoreKind::Autoto
from_persistent_store/from_persistent_store_or_authorizefor the
identical behavior.
Removed the test-only MemoryTokenStore
- Breaking (feature
openai-oauth):mentra::auth::openai::MemoryTokenStore
is removed. Nothing in the crate constructed it outside its own unit test; the
in-memory store now lives in that test module. TheTokenStoretrait stays
public, so an in-memory store is a few lines to write.
Removed the duplicate provider::model re-export module
- Breaking:
mentra::provider::modelis removed. Every item it re-exported
is already re-exported one level up atmentra::provider::*(and at
mentra::provider_core::*); import from there instead.
Builtin providers are constructor functions, not forwarding types
- Breaking: the seven forwarding wrapper types in
mentra::providerare
removed:openai::OpenAIProvider,openrouter::OpenRouterProvider,
anthropic::AnthropicProvider,gemini::GeminiProvider,
openai_compatible::OpenAiCompatibleProvider,ollama::OllamaProviderand
lmstudio::LmStudioProvider. Each held a singleArc<dyn Provider>and
forwarded every trait method to it verbatim. - Free functions returning
Arc<dyn Provider>replace them, with the same
arguments and the same resulting descriptor and capabilities:
openai::provider,openai::with_credential_source,
openai::with_shared_credential_source,openrouter::provider,
anthropic::provider,gemini::provider,openai_compatible::new,
openai_compatible::without_credentials,ollama::provider,
ollama::with_base_url,lmstudio::provider,lmstudio::with_base_url. Provideris now implemented forArc<dyn Provider>, so the results go
straight intoRuntimeBuilder::with_provider_instanceand
Runtime::register_provider_instanceas before.- Behavior change (Anthropic, Gemini): the removed
AnthropicProviderand
GeminiProviderwrappers did not forwardcompact, so provider-native
history compaction always failed withUnsupportedCapabilityand the
compaction engine silently fell back to local summarization even though both
providers advertisesupports_history_compaction. Without the wrappers the
compactcall now reaches the real provider, so runtimes built with
with_anthropic/with_geminicompact remotely under
CompactionMode::PreferRemoteand reportCompactionExecutionMode::Remote
where they previously reportedLocal. SetCompactionMode::LocalOnly(the default) to keep
the old behavior.
Agent state no longer carries an empty compaction key
- The always-empty
CompactionStateplaceholder is gone from
AgentMemoryStateand from thestate.json/ SQLite state payload. Agent
state written by older versions still loads; state written now cannot be
read by an older build.
Removed the unused SearchRequest conversion struct
- Breaking:
mentra::memory::SearchRequestis removed. Nothing
constructed it; every caller builds aMemorySearchRequestdirectly. MemoryEngine::searchnow takesMemorySearchRequestby value instead of
impl Into<MemorySearchRequest>.
Removed the never-read MemorySearchRequest::mode knob
- Breaking:
mentra::memory::MemorySearchModeand the
MemorySearchRequest::modefield are removed. NoMemoryStore
implementation ever branched on the value, so search results are unchanged.
Removed unreachable McpServerStatus variants
- Breaking:
McpServerStatus::Disconnectedand::Connectingare removed
from thementra::McpServerStatusre-export. Nothing ever constructed them:
list_serversreportsConnectedfor a live server andErrorfor a name
that only failed to connect, and a disconnected server is dropped from the
listing rather than reported. Out-of-repomatcharms on those variants must
be deleted.
MCP clients share one dispatch mechanism
McpBridgedTool::newis no longer generic over the transport; it takes
Arc<dyn McpToolClient>. Call sites passing a concreteArc<McpStdioClient>
orArc<McpSseClient>are unaffected, because theArccoerces at the
argument position.- The sealed
McpToolClienttrait gains ashutdownmethod, replacing the
manager's private transport enum. The trait is sealed, so no out-of-crate
implementor exists to update.
Resumed sessions can opt into a different runtime namespace
SessionResumeOptions::runtime_identifierlets a host rehome a legacy or
renamed-workspace session on its next persist.Nonekeeps the stored tag;
Some(id)replaces it for that resumed session without retagging other
agents or changing the shared runtime's identifier
(#59).- Source-breaking: exhaustive
SessionResumeOptionsstruct literals must
addruntime_identifier: Noneor use..Default::default().
Removed unused PermissionRequest type
- Source-breaking: the public
mentra::PermissionRequeststruct is removed.
Nothing produced or consumed it; the live path is the
SessionEvent::PermissionRequestedvariant and its inline fields.
Removed duplicate SubagentHandle::task_id
- Source-breaking:
SubagentHandle::task_idis removed. It always held the
same value asagent_id, which is the identifier reported as thetask_id
of the subagent'sSessionEvent::TaskUpdatedevents.
Removed unused CancellationFlag alias
- Source-breaking: the
mentra::runtime::CancellationFlagtype alias is
removed; usementra::runtime::CancellationToken, which it aliased.
Removed unused compaction type aliases
- Source-breaking: the
mentra::agentaliasesContextCompactionConfig,
ContextCompactionTriggerandContextCompactionDetailsare removed; use
CompactionConfig,CompactionTriggerandCompactionDetails. The persisted
context_compactionfield name keeps working through its serde alias.