AltimateAI / AltimateAI/altimate-code

feat: show elapsed time and context on pending tool spinners

未關閉
#171 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
TypeScript
星號
811
分支
134
平均合併
3 天 2 小時
30 天內合併 PR
50

描述

### What does this issue track?

When the LLM is generating a tool call (e.g., writing a bash command, preparing a query), the TUI shows a spinner with "Writing command..." but gives no indication of:
- How long it's been waiting
- What the tool is doing
- Whether it's stuck or actually working

This makes it impossible to distinguish between "LLM is thinking" (normal, takes 5-30s) and "something is stuck" (needs intervention).

### Proposed improvements

1. **Elapsed timer on pending spinners** — show `⠋ Writing command... 12s` so the user knows how long they've been waiting
2. **Partial input preview** — as the LLM streams the command, show a truncated preview of what's been generated so far (e.g., `⠋ Writing command... 12s SELECT o.*, c.name...`)
3. **Context line** — show which agent/model is generating the response (already shown in footer, but easy to miss)

### Why this matters

Data engineering queries can take 30+ seconds for the LLM to compose (complex JOINs, CTEs, window functions). During this time, the user stares at a static spinner with no feedback. This is especially frustrating when:
- The LLM is generating a very long command (bash script, multi-statement SQL)
- Network latency causes slow token streaming
- The user needs to decide whether to interrupt (`esc`) or wait

### Screenshot

The current experience — no way to know if this is 2 seconds in or 30 seconds in:
```
~ Writing command...
■ Builder · claude-opus-4-6
```

### Proposed experience

```
⠋ Writing command... 14s
SELECT o.*, c.name, SUM(li.amount) as total FROM orders o J...
■ Builder · claude-opus-4-6
```

### Scope

This affects all tool types in pending state, not just data tools. The `InlineTool` component's `pending` prop is a static string — it could accept a reactive elapsed timer.

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。