diff options
| author | t <t@tjp.lol> | 2026-08-21 14:11:28 -0600 |
|---|---|---|
| committer | t <t@tjp.lol> | 2026-08-21 14:12:35 -0600 |
| commit | 9f6287025c288e2cd687d0bbecd3c8fb4867effa (patch) | |
| tree | f1ca2d1e5cd79f9d3e0d1afd8280efd5257d405e /spec/test_progress.lua | |
| parent | 49a6001dde72622df9410b738322e9a23e68ddee (diff) | |
Keep subagent boards pinned while background workflows run
A background subagents.lua workflow outlives the tool call that started
it, so settling the outer result unpinned a board whose agents were still
working. Track a per-tool-call workflow count and derive the pin from
both the tool being active and that count, so the board only returns to
transcript order once its last workflow finishes.
Also show the reasoning level alongside the model on agent cards.
Diffstat (limited to 'spec/test_progress.lua')
| -rw-r--r-- | spec/test_progress.lua | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/test_progress.lua b/spec/test_progress.lua index 5788998..76cd289 100644 --- a/spec/test_progress.lua +++ b/spec/test_progress.lua @@ -76,6 +76,36 @@ return { assert(pins.b[2] == false, "reset safely releases unresolved boards") end }, + { "background workflows keep their board pinned after the outer tool settles", function() + progress.reset() + progress.begin_live_turn() + local component, pins + progress.claim({ + id = "background-call", + tool_name = "subagents.lua", + set_component = function(_, value) + component, pins = value, {} + return { + alive = function() return true end, + invalidate = function() end, + set_pinned = function(_, value) pins[#pins + 1] = value end, + } + end, + }) + + progress.bind({ tool_call_id = "background-call" }) + progress.card("worker", "child") + progress.workflow_started("background-call") + progress.settle({ id = "background-call" }) + progress.reset() + assert(#pins == 1 and pins[1] == true, "turn boundaries must not unpin a running workflow") + assert(component:render(80)[#component:render(80)] == "", "a running workflow retains its spacing") + + progress.workflow_finished("background-call") + assert(#pins == 2 and pins[2] == false, "the board unpins when its final workflow settles") + progress.reset() + end }, + { "a pinned board leaves one blank line before the waiting indicator", function() progress.reset() local component, pins |
