v0.7.83 — Elevation: capability completeness, channel UX, trust visibility
Elevation release: finishing wired-but-inert machinery and killing stubs that reported fake success, moving RustyHand toward the best-in-class agent-OS bar. Everything below ships verified — fmt + clippy --all-targets -D warnings clean, full workspace suite 0 failures.
New built-in tools (65 → 72)
Filesystem (agents stop shelling out to rm/mv/cp/mkdir)
| Tool | Purpose |
|---|---|
file_stat |
metadata (exists/type/size/mtime/readonly); missing path returns exists:false |
file_delete |
file or dir (recursive flag); refuses to delete the workspace root |
file_move |
move/rename, creates missing destination parents |
file_copy |
file or recursive directory tree |
file_mkdir |
mkdir -p within the workspace |
All routed through a new resolve_sandbox_path_allow_missing that enforces containment via the deepest existing canonical ancestor (nested mkdir/move/copy destinations can't escape the sandbox). Added to the Coding/Automation/Minimal tool profiles; file_stat is in the MCP safe-default allowlist.
Knowledge graph
knowledge_delete_entity/knowledge_delete_relation— the graph had add+query but no agent-facing delete.
Streaming & channels
- Tool-execution progress — new
StreamEvent::ToolExecutionProgress. Slow tools (shell/web/browser/builds) previously went silent for up to 120s between the call and its result; the streaming loop now emits an immediate marker then a heartbeat every 10s, wired into TUI, WebSocket, SSE, and the React dashboard (live elapsed counter). - Discord + Slack streaming — progressive message edits (Discord
PATCH, Slackchat.update), matching the existing TelegrameditMessageTextpath. The bridge already selected the streaming path generically offsupports_streaming().
Reliability & trust
- Extension/MCP hot-reload is actually applied — config reload built a
ReloadExtensions/ReloadMcpServersplan but only logged it. It now spawns the real reconnect (reload_extension_mcps); the remaining not-yet-wired actions honestly say "restart the daemon to apply". - Memory consolidation dedup —
ConsolidationReport.memories_mergedwas hardcoded0. Consolidation now collapses byte-identical memories within(agent_id, scope)to the highest-confidence survivor (soft-deletes losers, folds access_count/confidence/recency) and reports the real count. - Visible security posture —
GET /api/securitynow exposes the real runtime guardrails (exec_mode,taint_check_enabled, approval policy, per-channel allowlist gating) and fixedtaint_tracking.enabledwhich was hardcodedtruewhile the trust-by-default posture actually runs it off.
Image vision
describe_image(previously a hardErr(\"lands in a later release\")) is implemented —resolve_image_base64(base64 / file / SSRF-checked URL) feeds an Image+Text completion through both the Anthropic-wire and OpenAI-compat drivers.
Foundations (Phase 0)
- Streaming path now records metering/cost (the real gap — non-streaming already did).
ProviderCooldowncircuit breaker activated via a process-global (was constructed but passedNoneeverywhere).- TUI agents screen fixed (envelope shape
{agents,…}vs bare array). - Bundled the 7 missing on-disk agent templates + a drift-guard test.
- Onboarding now verifies a provider key (
POST /providers/{name}/test) after save.
Security & build
tar0.4.45 → 0.4.46 (advisory GHSA-3pv8-6f4r-ffg2).- Security posture endpoint no longer over-reports guardrails as enabled.
[profile.dev] debug = \"line-tables-only\"— keeps file:line panic backtraces while dropping heavy debuginfo; a full from-scratch build+test now sits at ~3.6 GB oftarget/instead of ballooning.
Stats
- 10 crates · 72 built-in tools · ~1718 tests passing · 0 clippy warnings.