-- LuaRocks rockspec for `panto-subagents`: the `subagents` extension for -- Pantograph — pure Lua, no compiled artifact of its own. -- -- Module naming. Pantograph requires the first whitespace-delimited token of an -- `[extensions] rocks = [...]` entry, so `require("panto-subagents")` must -- resolve to this rock's entry point; that is what the first `modules` line -- maps. The remaining modules keep the same `subagents.` paths a local -- checkout gets from `paths = ["/path/to/panto-subagents"]`, so both load paths -- resolve identical requires. -- -- Dependencies. `lyaml` parses profile frontmatter and is a C binding over the -- system libyaml, which luarocks does not vendor: a machine without it needs -- `brew install libyaml` (or `apt install libyaml-dev`) first, and may need -- `YAML_DIR=...` passed to luarocks. `toml2lua` (module name `toml`) reads TOML -- workflows and is pure Lua. `luv` backs the recursive discovery walk and the -- wake pipes child jobs are polled on, and ships with panto as a pinned -- battery, so it is normally already present in the tree this rock installs -- into. -- -- Deliberately absent: `jsonschema`. It depends on `lrexlib-pcre`, which needs -- a system PCRE that stock macOS does not have, and a failed dependency install -- would take the whole extension down silently (panto logs and skips a rock -- that fails to load). subagents/workflow.lua therefore validates structured -- workflow output with its own built-in JSON Schema subset and never probes for -- the rock: one validator, so the same child output cannot pass on one machine -- and fail on another. rockspec_format = "3.0" package = "panto-subagents" version = "0.1.0-1" source = { url = "git+https://github.com/travisp/panto-subagents", } description = { summary = "Delegation and workflows for Pantograph: the `subagents` extension.", detailed = [[ Lets a primary panto agent start specialized child agents from Markdown profiles, run several at once, and continue their conversations later. Provides the subagents.run / subagents.models / subagents.lua / subagents.workflow tools, a callback-based Lua workflow API with one-shot structured workers, and TOML dependency graphs exposed as /workflow: commands. ]], homepage = "https://github.com/travisp/panto-subagents", license = "MIT", labels = { "ai", "llm", "agent", "panto", "pantograph", "extension" }, } dependencies = { "lua >= 5.4, < 5.5", "lyaml >= 6.2, < 7.0", "toml2lua >= 3.0, < 4.0", "luv >= 1.48", } -- The specs run on plain Lua and decode structured child output with dkjson -- when the host's own JSON codec (`panto.ext.json`) is absent. test_dependencies = { "dkjson >= 2.11", } test = { type = "command", command = "lua spec/run.lua", } build = { type = "builtin", modules = { ["panto-subagents"] = "init.lua", ["subagents.frontmatter"] = "subagents/frontmatter.lua", ["subagents.jobs"] = "subagents/jobs.lua", ["subagents.luatool"] = "subagents/luatool.lua", ["subagents.models"] = "subagents/models.lua", ["subagents.paths"] = "subagents/paths.lua", ["subagents.profiles"] = "subagents/profiles.lua", ["subagents.progress"] = "subagents/progress.lua", ["subagents.run"] = "subagents/run.lua", ["subagents.spawn"] = "subagents/spawn.lua", ["subagents.toml_workflows"] = "subagents/toml_workflows.lua", ["subagents.workflow"] = "subagents/workflow.lua", }, }