feat: Add timestamps to agent logs and fix horizontal scroll
- getAgentOutput now returns timestamped chunks ({ content, createdAt }[])
instead of a flat string, preserving DB chunk timestamps
- parseAgentOutput accepts TimestampedChunk[] and propagates timestamps
to each ParsedMessage
- AgentOutputViewer displays HH:MM:SS timestamps on text, tool_call,
system, and session_end messages
- Live subscription chunks get client-side Date.now() timestamps
- Fix horizontal scroll: overflow-x-hidden + break-words on content areas
- AgentLogsTab polls getTaskAgent every 5s until an agent is found,
then stops polling for live subscription to take over
- Fix slide-over layout: details tab scrolls independently, logs tab
fills remaining flex space for proper AgentOutputViewer sizing
This commit is contained in:
@@ -153,9 +153,10 @@ Agent output is persisted to `agent_log_chunks` table and drives all live stream
|
||||
- DB insert → `agent:output` event emission (single source of truth for UI)
|
||||
- No FK to agents — survives agent deletion
|
||||
- Session tracking: spawn=1, resume=previousMax+1
|
||||
- Read path (`getAgentOutput` tRPC): concatenates all DB chunks (no file fallback)
|
||||
- Live path (`onAgentOutput` subscription): listens for `agent:output` events
|
||||
- Frontend: initial query loads from DB, subscription accumulates raw JSONL, both parsed via `parseAgentOutput()`
|
||||
- Read path (`getAgentOutput` tRPC): returns timestamped chunks `{ content, createdAt }[]` from DB
|
||||
- Live path (`onAgentOutput` subscription): listens for `agent:output` events (client stamps with `Date.now()`)
|
||||
- Frontend: initial query loads timestamped chunks, subscription accumulates live chunks, both parsed via `parseAgentOutput()` which accepts `TimestampedChunk[]`
|
||||
- Timestamps displayed inline (HH:MM:SS) on text, tool_call, system, and session_end messages
|
||||
|
||||
## Inter-Agent Communication
|
||||
|
||||
|
||||
@@ -62,7 +62,8 @@ Each procedure uses `require*Repository(ctx)` helpers that throw `TRPCError(INTE
|
||||
| getAgent | query | Single agent by name or ID |
|
||||
| getAgentResult | query | Execution result |
|
||||
| getAgentQuestions | query | Pending questions |
|
||||
| getAgentOutput | query | Full output from DB log chunks |
|
||||
| getAgentOutput | query | Timestamped log chunks from DB (`{ content, createdAt }[]`) |
|
||||
| getTaskAgent | query | Most recent agent assigned to a task (by taskId) |
|
||||
| getActiveRefineAgent | query | Active refine agent for initiative |
|
||||
| getActiveConflictAgent | query | Active conflict resolution agent for initiative (name starts with `conflict-`) |
|
||||
| listWaitingAgents | query | Agents waiting for input |
|
||||
|
||||
Reference in New Issue
Block a user