From d1306506aa7f504b0e91c9c6ed7314afbf99978e Mon Sep 17 00:00:00 2001 From: t Date: Wed, 19 Aug 2026 19:02:30 -0600 Subject: 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. --- subagents/run.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'subagents/run.lua') diff --git a/subagents/run.lua b/subagents/run.lua index 375af91..7fbed67 100644 --- a/subagents/run.lua +++ b/subagents/run.lua @@ -1,9 +1,10 @@ -- The `subagents.run` tool: start one child agent, or continue one, and wait. -- --- One call handles both cases. `agent` starts a new child from that profile; --- `id` continues a child this primary session started earlier. Exactly one is --- required, and `prompt` is always required — a child cannot see the parent --- dialogue, so the prompt is the only task context it gets. +-- One call handles all cases. `agent` starts a new child from that profile; +-- `system_prompt` starts one without a saved profile; `id` continues a child +-- this primary session started earlier. Exactly one is required, and `prompt` +-- is always required — a child cannot see the parent dialogue, so the prompt +-- is the only task context it gets. -- -- The call blocks until the child settles. Parallelism is ordinary tool -- batching: several subagents.run calls emitted in one batch run concurrently -- cgit v1.3