feat: harden OpenCode collector with robust status, mtime polling, chat/tool logs, and subagent tree#148
Closed
weby-homelab wants to merge 5 commits into
Closed
Conversation
…overy, and git branch tracking
…ubagent tree, and chat/tool logs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR significantly hardens and refactors the OpenCode agent collector in
abtop, bringing it to full feature parity with other collectors like Claude and Codex, while drastically optimizing resource usage.Key Enhancements
Dialogue History & Tool Calls Timeline:
abtopnow queries theparttable, joining with themessagetable.ChatMessagelines (handlingtextandreasoningblocks, with secret redaction) andToolCallevents (calculating tool duration and extracting arguments like commands, file paths, and descriptions).Real-time Database Polling via mtime (Zero-CPU Idle):
mtime) polling.slow_tickcache (every 10s) when idle. This provides instant TUI updates during active agent runs without spawning unnecessarysqlite3CLI processes.Precise Status Derivation (Zero Heuristics):
uservsassistant) and whether thetime.completedfield is present. Falls back to process/descendant CPU usage only if a background tool is actively running.Robust Subagent PID Filtering:
opencodeprocesses) during PID-to-session mapping. This prevents subagents from being misidentified as main sessions in the list.Expanded History:
MAX_SESSIONSlimit from 20 to 50 to display a wider history of past agent runs.Git Branch & DB Path discovery:
.git/HEADbranch resolution (avoiding expensivegit branchforks) and dynamicopencode*.dbpath discovery.