1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
-- 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.<name>` 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 validates structured workflow output
-- when installed, and subagents/workflow.lua uses it if `require` finds it, but
-- it depends on `lrexlib-pcre`, which needs a system PCRE that stock macOS does
-- not have. A failed dependency install would take the whole extension down
-- silently (panto logs and skips a rock that fails to load), so the built-in
-- subset validator is the default and `jsonschema` stays opt-in.
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:<name> 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",
},
}
|