·
12 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
What's New in Mentra v0.6.0
Permission Scope Hierarchy
PermissionRuleStorenow supports cross-session rules via consumer-suppliedproject_id- Session, Project, and Global scopes with hierarchical lookup (most specific wins)
- Automatic SQLite schema migration for existing databases
Compaction Hardening
- Auto-compaction retries up to 3 times on transient errors, then degrades gracefully (session continues with micro-compaction instead of dying)
- Configurable transcript cleanup (
max_persisted_transcripts) prunes old JSONL files - Mock test coverage for remote compaction paths (PreferRemote fallback)
Long-Session Stress Testing
SessionGeneratortest utility for building multi-turn scripted sessions- 50-turn CI integration tests with compaction chains
- Resume-after-compaction tests
- Criterion benchmarks for 500-turn sessions, memory scaling, and resume performance
Pattern-Based Approval Rules
RuleStore::check()now matches glob patterns against serialized tool input JSON- Pattern rules take precedence over no-pattern rules (specific deny overrides general allow)
- Uses
glob-matchcrate for*/?pattern syntax
Pre-Execution Hook System
- New
PreExecutionHooktrait withAllow/Denydecisions (separate from observe-onlyRuntimeHook) PreExecutionHookscollection with first-deny-wins semanticsRuntimeBuilder::with_pre_hook()for registration- Integrated into both exclusive and parallel tool execution paths
ToolExecutionBlockedevent for observability
Public Team API
Session::spawn_subagent(name, prompt)for programmatic subagent creation (async, non-blocking)Session::list_teammates()andSession::active_subagents()for team state observationSubagentHandle,SpawnedAgentSummary,SpawnedAgentStatuspublicly exported
Other
- 333 tests (up from ~280 in v0.5.0)
- Criterion benchmarks behind
test-utilsfeature flag
Breaking Changes
PermissionRuleStore::save_rules()andload_rules()now requireproject_id: Option<&str>parameterRuleStore::check()now requiresinput_json: Option<&str>parameter