gadget/repairs.md
2026-05-18 16:40:19 -04:00

23 lines
1.6 KiB
Markdown

Summary of Changes (6 files, +36/-19 lines)
Root Cause
The token-economics commit (00969cf) correctly added subagent token aggregation to the DB write path (drone-session.ts), but the in-memory and frontend paths only used master-only values. This meant:
-
During a session: UI showed lower token counts than reality
-
After page refresh: numbers jumped up (DB values loaded)
-
Session toolCallCount missed subagent tool calls entirely
Fixes
1. packages/api/src/messages/drone.ts — Extended IWorkOrderCompleteStats with optional aggregate fields (totalInputTokens?, totalOutputTokens?, totalToolCallCount?)
2. gadget-code/src/lib/drone-session.ts — Now computes totalToolCallCount (master + subagent tool calls) alongside existing token aggregates, passes enrichedStats (with aggregate fields populated) to codeSession.onWorkOrderComplete()
3. gadget-code/src/lib/code-session.ts — In-memory session stats use stats.totalInputTokens ?? stats.masterInputTokens (aggregate when available, master fallback)
4. gadget-code/frontend/src/lib/api.ts — Frontend type matches the shared interface
5. gadget-code/frontend/src/pages/ChatSessionView.tsx — Frontend session stats update uses aggregate values; also now correctly increments toolCallCount (was previously missing)
6. gadget-drone/src/services/agent.ts — Three fixes:
-
Removed local IWorkOrderCompleteStats redefinition, now imports from @gadget/api
-
Master loop token accumulation uses optional chaining (response.stats?.tokenCounts?.input ?? 0) matching the subagent loop
-
agent:complete emit now includes stats field from subagent data