Skip to content

v0.9.0

Choose a tag to compare

@guanyilun guanyilun released this 15 Apr 01:45
· 864 commits to main since this release

What's Changed since v0.8.0

Architecture

  • Pure kernel extractioncreateCore() is now a frontend-agnostic kernel (EventBus, ContextManager, HandlerRegistry, Compositor). The agent backend, LLM client, and provider management are loaded as extensions, not wired into the core.
  • Compositor — new render stream routing system. All TUI output flows through named streams ("agent", "query", "status") mapped to surfaces. Extensions redirect streams to capture output (floating panels, tmux panes, test buffers).
  • RemoteSession — high-level primitive for routing agent output to external surfaces. Bundles compositor redirects, shell lifecycle advisors, and chrome suppression into one call.
  • Tool protocol abstraction — deferred tool mode support alongside the existing API mode.
  • Advisable shell lifecycleshell:on-processing-start and shell:on-processing-done are now named handlers that extensions can advise.

New Extensions & Bridges

  • ash-mcp-bridge — MCP server bridge for exposing agent-sh tools over MCP
  • ash-acp-bridge — ACP JSON-RPC server wrapping the headless core (fixed: now loads built-in extensions, fixes async race, stops swallowing errors)
  • web-access — web search and content extraction extension
  • peer-mesh — cross-instance communication via remote handler calls (Ray-inspired)
  • subagents — subagent orchestration extension
  • openrouter — OpenRouter provider helper
  • tmux-pane — tmux split pane with output-only and interactive modes via RemoteSession
  • interactive-prompts — rewritten using interactive UI primitive

Overlay Agent

  • Moved from built-in to examples/extensions/ — install with cp examples/extensions/overlay-agent.ts ~/.agent-sh/extensions/ or -e ./examples/extensions/overlay-agent.ts
  • createFloatingPanel removed from ExtensionContext public API (FloatingPanel still importable directly)
  • Fixed output leak on dismiss while agent is active
  • Uses createRemoteSession for proper compositor routing

Fixes

  • Bracket paste — no more auto-submit on paste, clean editor data model
  • Diff rendering — truncation no longer hides actual changes (was showing only context lines)
  • Compaction — configurable threshold, force-compact on manual /compact
  • agent-backend — correctly reads defaultProvider from settings
  • Alt screen — re-check alt screen state on overlay teardown
  • Nuclear summaries — deterministic ISO timestamps
  • TUI — show tail line of truncated command output, cap content width at MAX_CONTENT_WIDTH

Extension System

  • registerCommand, registerInstruction, removeInstruction on ExtensionContext
  • System prompt injection via named instruction blocks
  • Scrollback capture and scoped cleanup
  • Extension-loader exported for library consumers

Branding

  • agent-sh is the primary name; ash is a short alias (alias ash=agent-sh)
  • Package name prefixes like ash-mcp-bridge use the short form

Docs

  • Full audit: fixed stale API references, added missing ExtensionContext methods, updated project structure, corrected tool inventory, trimmed verbose sections

Full diff

v0.8.0...v0.9.0