Skip to content

Release/v0.3.0 Multi-agent + live state - #1

Merged
tech4242 merged 10 commits into
mainfrom
release/v0.3.0
May 18, 2026
Merged

tech4242 merged 10 commits into
mainfrom
release/v0.3.0

Conversation

@tech4242

Copy link
Copy Markdown
Owner

New

  • 6 new providers via OTLP: OpenAI Codex CLI, Gemini CLI, Qwen Code, Cline, GitHub Copilot Chat,
    opencode. Auto-detected via OTel service.name. agenttop --setup configures each
    (auto-writes settings where possible).
  • Live sessions panel (Claude Code, scraped locally): per-session status (Thinking / Executing /
    Waiting / RateLimited), current tool call, context window %, memory, subagents, child processes,
    open ports.
  • Quota gauges for Claude — 5h and 7d windows with reset countdown, via a StatusLine hook installer
    (agenttop --setup claude).
  • Host vitals strip — CPU / MEM / load — in the header. Cross-platform via sysinfo.
  • Token-rate sparkline — tokens/sec over the last 5 min.
  • Orphan port detection — flags listening ports left behind by terminated agent sessions.
  • Unified tools table with a TYPE column (builtin / MCP). MCP tools still grouped under their server
    name (context7:resolve-library-id, …).
  • Tab switches focus between Live sessions and Tools. j/k/arrows navigate whichever panel is
    focused. Detail strip below shows the selected session's children + subagents.
  • Project filtering (r), agent cycling (a), time-window filter (t → 1h / 24h / 7d / All).
  • Compaction event tracking in the header (Claude Code 2.x).

Fixed

  • Context % no longer pins to 100% on long sessions — was summing cumulative input_tokens across all
    turns instead of using the latest turn. Now also auto-detects the 1M opus variant when usage
    exceeds 200k, and displays as 120k/200k 60% so raw numbers are visible.
  • TOKENS column now shows input + output only — including cache_read produced inflated multi-million
    numbers because every turn replays the full cached context.
  • MCP tools panel was being squeezed off-screen by the live panel — replaced with Min constraints so
    tools always have guaranteed space.
  • Token-rate sparkline silently returned zeros — off-by-one in the bucketing logic dropped rows
    landing on the window boundary.
  • Terminal left in mouse-tracking mode after quit — removed the unused EnableMouseCapture (we never
    handled mouse events).
  • Scraper throttled to 1 Hz for heavy I/O (was running every 100ms, causing UI flicker).

Internal

  • Cross-platform process scraper via sysinfo (macOS + Linux).
  • DuckDB raw log_events table replaces per-event-type filtering at ingest.
  • ProjectResolver maps session.id → project name via ~/.claude/projects/*/sessions-index.json.
  • 270 tests passing (added ~30 this release). Coverage 65% (target 60%).

Limitations

  • Live panel and quota gauges are Claude Code only. Other agents flow through OTLP for aggregate
    metrics. Per-agent scrapers can land in v0.3.x.
  • StatusLine hook needs jq on $PATH to populate the quota sidecar.
  • Opus 200k-vs-1M variant isn't always identifiable from the transcript model name; we auto-bump to
    1M when observed usage exceeds 200k.

tech4242 added 8 commits May 16, 2026 13:36
Multi-agent + analytics (Layer 1):
- New providers: Cline, GitHub Copilot Chat, opencode (now 7 total)
- Provider trait gains service_name() for OTel service.name detection
- Project resolution via ~/.claude/projects/*/sessions-index.json (src/project.rs)
- OTLP parser: compaction events, JSON-string success interpretation, MCP tool-name reconstruction
- Storage: log_events raw table, CompactionStats, distinct sessions/service-names, query-time filtering
- TUI: project filter (r), agent cycle (a), time filter (t), compaction summary, MCP per-server breakdown

Live scraper (Layer 2, abtop-inspired):
- New src/scraper/ module (cross-platform via sysinfo)
  - Live Claude Code session list with status (Thinking/Executing/Waiting/RateLimited)
  - Current task extraction from last tool_use
  - Context-window % via model_info lookup table
  - Per-session + per-child-process RSS
  - Listening ports + orphan-port detection
  - Claude subagents (name/status/tokens)
  - StatusLine sidecar reader for rate-limit ingestion
- Host vitals strip (CPU/MEM/load) in header
- Token-rate braille sparkline (last 5 min, bucketed)
- Quota panel: 5h + 7d gauges with reset countdown
- StatusLine hook installer in src/config — writes ~/.claude/agenttop-statusline.sh and patches settings.json (idempotent, backs up .bak)
- `agenttop --setup claude` (and --setup all) now installs the StatusLine hook

Scraper is Claude-Code-only for v0.3.0; other agents still flow through OTLP.

cargo build + cargo clippy --all-targets clean; 167 tests passing (added ~25).
@codecov-commenter

Copy link
Copy Markdown

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

Thanks for integrating Codecov - We've got you covered ☂️

@tech4242
tech4242 merged commit 0b2da7c into main May 18, 2026
5 checks passed
@tech4242
tech4242 deleted the release/v0.3.0 branch May 18, 2026 18:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants