summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authort <t@tjp.lol>2026-08-31 10:17:11 -0600
committert <t@tjp.lol>2026-09-02 08:26:44 -0600
commit7a31ae2163f4ce1c6807da1737203d1063839c14 (patch)
tree3096854e9ec93b2bf1b4d91b051be70908695218 /spec
parented872974d799312c7114a63474c6bc7bc2179e2c (diff)
Show executed Lua in subagent progress boards
Render subagents.lua source in both collapsed and expanded progress views so inspection-only calls remain understandable and survive session replay.
Diffstat (limited to 'spec')
-rw-r--r--spec/test_progress.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/spec/test_progress.lua b/spec/test_progress.lua
index c8bf684..3c1ea33 100644
--- a/spec/test_progress.lua
+++ b/spec/test_progress.lua
@@ -295,6 +295,39 @@ return {
progress.reset()
end },
+ { "subagents.lua boards always show the executed source with real newlines", function()
+ if not pcall(require, "dkjson") then return "skip", "dkjson is not installed" end
+ progress.reset()
+ local source = "local w = subagents.workflows[\"workflow-1\"]\n\tif w then\n\t\treturn w.status\n\tend\nreturn \"gone\""
+ local component
+ progress.claim({
+ id = "call-source",
+ tool_name = "subagents.lua",
+ collapsed = true,
+ input = require("dkjson").encode({ source = source }),
+ set_component = function(_, value)
+ component = value
+ return { invalidate = function() end, alive = function() return true end }
+ end,
+ })
+ progress.bind({ tool_call_id = "call-source" })
+
+ -- An inspection call starts no children, so the source is the only
+ -- thing this entry can show.
+ local collapsed = component:render(100)
+ assert(collapsed[2]:find("subagents.lua", 1, true), plain(collapsed))
+ assert(collapsed[3] == " local w = subagents.workflows[\"workflow-1\"]", collapsed[3])
+ assert(collapsed[4] == " if w then", collapsed[4])
+ assert(collapsed[#collapsed] == " \226\128\166", "collapsed source is capped")
+ assert(#collapsed == 2 + 4 + 1, plain(collapsed))
+
+ progress.collapse({ collapsed = false })
+ local expanded = plain(component:render(100))
+ assert(expanded:find("return \"gone\"", 1, true), expanded)
+ assert(not expanded:find("\\n", 1, true), "newlines must render as newlines")
+ progress.reset()
+ end },
+
{ "expanded history includes streamed assistant text and available tool call fields", function()
progress.reset()
local component = board("call-tools", false)