code-yeongyu / code-yeongyu/senpi
ExtensionAPI.executeTool runs a tool without persisting toolCall/toolResult entries, contrary to its docstring
- Dominant language
- TypeScript
- Stars
- 429
- Forks
- 98
- Avg merge
- 5h 3m
- Merged PRs (30d)
- 526
Description
Found while building the TUI QA harness for the question tool (#1533).\n\n ( ~:3175) runs the tool with validation and hooks, and its docstring says it uses "the same pipeline as model-dispatched tool calls". It does not: no / entries are appended to the session, and no transcript row is rendered. The tool's side effects happen and the result is returned to the caller, but the session file has no record that it ran.\n\n**Repro** (from the todo-24 QA lane): drive an extension command that calls in interactive mode - the tool executes (verified via its own output) and the transcript shows nothing; the session JSONL contains no entry for the call. Evidence: (the scenario, ).\n\n**Impact today:** none in-tree - nothing currently calls . It is a trap for the first extension that does: unpersisted tool execution, invisible in , absent from resume.\n\n**Suggested fix:** either append the entries (matching the docstring) or correct the docstring and name so callers know the execution is ephemeral.
Contributor guide
Research direction
Start at ExtensionAPI.executeTool around line 3175 and compare its behavior with the model-dispatched tool-call pipeline described in the docstring. Reproduce the interactive TUI scenario from the todo-24 QA lane, then inspect the session JSONL and transcript output. Done means the behavior and documentation agree, with tool calls represented in persistence, transcript rendering, and resume behavior if persistence is retained.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100