Skip to content

v0.7.83 — Elevation: capability completeness, channel UX, trust visibility

Choose a tag to compare

@ginkida ginkida released this 01 Jun 13:53
· 39 commits to main since this release

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, Slack chat.update), matching the existing Telegram editMessageText path. The bridge already selected the streaming path generically off supports_streaming().

Reliability & trust

  • Extension/MCP hot-reload is actually applied — config reload built a ReloadExtensions/ReloadMcpServers plan 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 dedupConsolidationReport.memories_merged was hardcoded 0. 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 postureGET /api/security now exposes the real runtime guardrails (exec_mode, taint_check_enabled, approval policy, per-channel allowlist gating) and fixed taint_tracking.enabled which was hardcoded true while the trust-by-default posture actually runs it off.

Image vision

  • describe_image (previously a hard Err(\"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).
  • ProviderCooldown circuit breaker activated via a process-global (was constructed but passed None everywhere).
  • 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

  • tar 0.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 of target/ instead of ballooning.

Stats

  • 10 crates · 72 built-in tools · ~1718 tests passing · 0 clippy warnings.