• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In
No new info detected.

dcdpr / jp / 25394478219 / 1
65%
main: 65%

Build:
DEFAULT BRANCH: main
Ran 05 May 2026 06:27PM UTC
Files 299
Run time 13s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

05 May 2026 06:23PM UTC coverage: 64.676% (+0.4%) from 64.291%
25394478219.1

push

github

web-flow
feat(cli, render): Role-aware turn headers and unified rendering pipeline (#599)

Replace the plain `---` HR separator between turns with labeled
role-boundary headers. Every turn boundary now shows who is speaking
next: `── alice ──…` for the user (using the `author` field stamped on
the `ChatRequest`, falling back to `user`) and `── jp (anthropic/…) ──…`
for the assistant (using `assistant.name` + the resolved model id).

The new `TurnView` type (`render/turn_view.rs`) owns the chat and
structured sub-renderers and tracks per-turn assistant-header state.
Both `TurnRenderer` (replay, `jp conversation print`) and
`TurnCoordinator` (live streaming) now route their rendering through a
`TurnView`, so role attribution, content-kind transitions, and
structured-output dispatch are consistent across both flows.

On the tool-execution side, the parallel `pending_tool_calls` cache and
three-tuple `streaming_perm_results` stash are replaced by a
`PendingTools` scratchpad and a `build_execution_plan` function that
derives an ordered `ExecutionPlan` by walking the conversation stream.
`Action::ExecuteTools` no longer carries the call list — the shell
derives it from the stream, making "the stream is the source of truth"
hold at the API level rather than by convention.

Three bugs are fixed in the same pass:

- **Resume signal**: picking `Continue` while the LLM stream is still
alive mapped to `InterruptAction::Resume`, but the handler was returning
`LoopAction::Break`, dropping the live `SelectAll` and forcing a
redundant HTTP request. Now returns `LoopAction::Continue`.

- **Sparse plan indices**: when an unavailable tool appeared before an
approved tool in the same turn, the approved executor received plan
index 1 while the internal `results` Vec had length 1, causing an
index-out-of-bounds panic. Fixed by re-basing plan indices to contiguous
local positions inside `execute_with_prompting` and pairing each
response back with its original plan index on output.

... (continued)

24862 of 38441 relevant lines covered (64.68%)

214.16 hits per line

Source Files on job 25394478219.1
  • Tree
  • List 299
  • Changed 10
  • Source Changed 8
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 25394478219
  • a2d5a653 on github
  • Prev Job for on main (#25392492630.1)
  • Next Job for on main (#25421450629.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc