summaryrefslogtreecommitdiff
path: root/spec/test_profiles.lua
diff options
context:
space:
mode:
authort <t@tjp.lol>2026-08-19 19:02:30 -0600
committert <t@tjp.lol>2026-08-19 19:03:52 -0600
commitd1306506aa7f504b0e91c9c6ed7314afbf99978e (patch)
treee5a7295dbc566a3679e99e14dae13376b0469e84 /spec/test_profiles.lua
parent94e3fd8358bbdb5d6ed81aed475fab7fc73e2097 (diff)
Add background Lua workflows, inline child prompts, and layered config
subagents.lua now starts a workflow on its own coroutine and returns a session-scoped id immediately, so fan-out continues while the primary keeps working; completion wakes the primary, and later calls read immutable records from subagents.workflows. Every ctx:agent takes a workflow-unique name so those records are addressable. A session_start guidance message tells the primary when to reach for run vs lua. Children no longer inherit the primary's system context: a child starts from the fixed child-role instruction plus its profile, and subagents.run/ctx:agent accept an inline system_prompt instead of a profile. The now-redundant `agent` form of subagents.models is gone. Concurrency defaults to five and is configurable through [subagents] max_concurrent in any layered config.toml; turn boundaries reap only settled jobs so background workflows survive, while interrupt and session end cancel. Config roots come from panto.ext.dirs.layers rather than a hand-rolled XDG lookup, which picks up the base and git-ignored local layers for both agents/ and workflows/. TOML workflows tighten up: the subagents.workflow tool takes a discovered name only (inline `steps` duplicated subagents.lua at less power), an optional top-level `output` array chooses the reported steps and their order instead of the terminal set, a step with no workflow input gets no empty input heading, and a workflow naming an undiscovered agent is rejected at discovery rather than part-way through a run.
Diffstat (limited to 'spec/test_profiles.lua')
-rw-r--r--spec/test_profiles.lua16
1 files changed, 16 insertions, 0 deletions
diff --git a/spec/test_profiles.lua b/spec/test_profiles.lua
index 3a052b9..f2a54a2 100644
--- a/spec/test_profiles.lua
+++ b/spec/test_profiles.lua
@@ -124,6 +124,22 @@ return {
table.concat(found.warnings, " | "))
end },
+ { "config roots follow every host layer, in host order", function()
+ local fake = require("spec.fake_ext")
+ local paths = require("subagents.paths")
+ local handle = fake.install()
+ local ok, err = pcall(function()
+ local roots = paths.config_roots("workflows")
+ assert(#roots == 4, "expected one root per layer, saw " .. #roots)
+ assert(roots[1] == "/data/panto/agent/workflows", roots[1])
+ assert(roots[2] == "/home/u/.config/panto/workflows", roots[2])
+ assert(roots[3] == "/proj/.panto/workflows", roots[3])
+ assert(roots[4] == "/proj/.panto/local/workflows", roots[4])
+ end)
+ handle.restore()
+ if not ok then error(err, 0) end
+ end },
+
{ "the list is sorted by name", function()
local found, reason = fixture_or_skip()
if not found then