agentopology 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +5 -5
  2. package/dist/__tests__/e2e/compile.test.js +68 -0
  3. package/dist/__tests__/e2e/compile.test.js.map +1 -1
  4. package/dist/__tests__/e2e/import-project.test.d.ts +10 -0
  5. package/dist/__tests__/e2e/import-project.test.d.ts.map +1 -0
  6. package/dist/__tests__/e2e/import-project.test.js +260 -0
  7. package/dist/__tests__/e2e/import-project.test.js.map +1 -0
  8. package/dist/__tests__/e2e/roundtrip.test.js +2 -4
  9. package/dist/__tests__/e2e/roundtrip.test.js.map +1 -1
  10. package/dist/__tests__/e2e/unknown-names.test.d.ts +12 -0
  11. package/dist/__tests__/e2e/unknown-names.test.d.ts.map +1 -0
  12. package/dist/__tests__/e2e/unknown-names.test.js +268 -0
  13. package/dist/__tests__/e2e/unknown-names.test.js.map +1 -0
  14. package/dist/__tests__/live/claude-code.live.test.js +7 -0
  15. package/dist/__tests__/live/claude-code.live.test.js.map +1 -1
  16. package/dist/__tests__/open-findings.test.js +7 -3
  17. package/dist/__tests__/open-findings.test.js.map +1 -1
  18. package/dist/bindings/claude-code.d.ts.map +1 -1
  19. package/dist/bindings/claude-code.js +140 -11
  20. package/dist/bindings/claude-code.js.map +1 -1
  21. package/dist/cli/index.js +42 -27
  22. package/dist/cli/index.js.map +1 -1
  23. package/dist/docs/content.js +19 -19
  24. package/dist/import/claude-code.d.ts +2 -1
  25. package/dist/import/claude-code.d.ts.map +1 -1
  26. package/dist/import/claude-code.js +36 -12
  27. package/dist/import/claude-code.js.map +1 -1
  28. package/dist/import/flow.d.ts +64 -0
  29. package/dist/import/flow.d.ts.map +1 -0
  30. package/dist/import/flow.js +176 -0
  31. package/dist/import/flow.js.map +1 -0
  32. package/dist/import/index.d.ts +11 -0
  33. package/dist/import/index.d.ts.map +1 -1
  34. package/dist/import/index.js +15 -4
  35. package/dist/import/index.js.map +1 -1
  36. package/dist/import/serializer.d.ts.map +1 -1
  37. package/dist/import/serializer.js +44 -3
  38. package/dist/import/serializer.js.map +1 -1
  39. package/dist/import/walk.d.ts +56 -0
  40. package/dist/import/walk.d.ts.map +1 -0
  41. package/dist/import/walk.js +163 -0
  42. package/dist/import/walk.js.map +1 -0
  43. package/dist/parser/__tests__/mod-hooks.test.js +1 -1
  44. package/dist/parser/__tests__/mod-hooks.test.js.map +1 -1
  45. package/dist/parser/ast.d.ts +46 -3
  46. package/dist/parser/ast.d.ts.map +1 -1
  47. package/dist/parser/ast.js.map +1 -1
  48. package/dist/parser/index.d.ts.map +1 -1
  49. package/dist/parser/index.js +42 -0
  50. package/dist/parser/index.js.map +1 -1
  51. package/dist/parser/known-fields.d.ts +82 -0
  52. package/dist/parser/known-fields.d.ts.map +1 -0
  53. package/dist/parser/known-fields.js +263 -0
  54. package/dist/parser/known-fields.js.map +1 -0
  55. package/dist/parser/validator.d.ts +1 -1
  56. package/dist/parser/validator.d.ts.map +1 -1
  57. package/dist/parser/validator.js +114 -3
  58. package/dist/parser/validator.js.map +1 -1
  59. package/examples/matchmat-ship.at +2 -8
  60. package/examples/memory-system.at +0 -1
  61. package/package.json +1 -1
  62. package/spec/grammar.md +24 -1
  63. package/spec/testing.md +19 -4
  64. package/spec/validation.md +6 -2
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Nothing written in a .at file vanishes in silence (N23, N24).
3
+ *
4
+ * Measured on 0.8.0 (harness-venture, lane B, 2026-11-08): in 15 of 17 probe
5
+ * cases an unknown field or block was gone from the AST while validate printed
6
+ * "All validation rules passed" and exited 0; scaffold dropped it too. Only an
7
+ * unknown `on-timeout` value was caught (V59). Each case below is the same
8
+ * small topology with one thing added. V102 now names every name the parser
9
+ * does not read; V103 checks `behavior`.
10
+ */
11
+ import { describe, it, expect } from "vitest";
12
+ import { spawnSync } from "node:child_process";
13
+ import * as fs from "node:fs";
14
+ import * as os from "node:os";
15
+ import { resolve, dirname, join } from "node:path";
16
+ import { fileURLToPath } from "node:url";
17
+ import { parse } from "../../parser/index.js";
18
+ import { validate } from "../../parser/validator.js";
19
+ import { topics } from "../../docs/content.js";
20
+ const CLI = resolve(dirname(fileURLToPath(import.meta.url)), "../../../dist/cli/index.js");
21
+ const BASELINE = `topology probe : [pipeline] {
22
+ meta {
23
+ version: "1.0.0"
24
+ description: "Probe baseline"
25
+ }
26
+
27
+ orchestrator {
28
+ model: sonnet
29
+ handles: [b]
30
+ }
31
+
32
+ agent a {
33
+ model: sonnet
34
+ description: "Writes the draft"
35
+ produces: [r]
36
+ prompt {
37
+ Write the draft.
38
+ }
39
+ }
40
+
41
+ action b {
42
+ kind: inline
43
+ description: "Collect the draft"
44
+ }
45
+
46
+ human h {
47
+ description: "Approves the draft"
48
+ }
49
+
50
+ gates {
51
+ gate g {
52
+ after: a
53
+ before: b
54
+ run: "scripts/check.sh"
55
+ on-fail: halt
56
+ }
57
+ }
58
+
59
+ hooks {
60
+ hook k {
61
+ on: Stop
62
+ run: "scripts/stop.sh"
63
+ }
64
+ }
65
+
66
+ schedule {
67
+ job j {
68
+ every: 1h
69
+ agent: a
70
+ }
71
+ }
72
+
73
+ artifacts {
74
+ artifact r {
75
+ type: markdown
76
+ path: "out/r.md"
77
+ }
78
+ }
79
+
80
+ flow {
81
+ a -> b -> h
82
+ }
83
+ }
84
+ `;
85
+ /** Where each kind of addition goes: the line it is written after. */
86
+ const ANCHOR = {
87
+ agent: ` description: "Writes the draft"\n`,
88
+ action: ` description: "Collect the draft"\n`,
89
+ human: ` description: "Approves the draft"\n`,
90
+ gate: ` on-fail: halt\n`,
91
+ hook: ` run: "scripts/stop.sh"\n`,
92
+ job: ` agent: a\n`,
93
+ artifact: ` path: "out/r.md"\n`,
94
+ meta: ` description: "Probe baseline"\n`,
95
+ top: ` flow {\n`,
96
+ };
97
+ function withLine(where, text) {
98
+ const anchor = ANCHOR[where];
99
+ if (!BASELINE.includes(anchor))
100
+ throw new Error(`anchor missing: ${where}`);
101
+ if (where === "top")
102
+ return BASELINE.replace(anchor, `${text}\n\n${anchor}`);
103
+ const indent = anchor.match(/^ */)[0];
104
+ return BASELINE.replace(anchor, anchor + text.split("\n").map((l) => indent + l).join("\n") + "\n");
105
+ }
106
+ const CASES = [
107
+ { id: "C01", what: "unknown field on an agent", source: withLine("agent", "zzmarker: zzAAA101"), name: "zzmarker", marker: "zzAAA101", block: `agent "a"` },
108
+ { id: "C02", what: "misspelled field on an agent", source: withLine("agent", "modle: opus"), name: "modle", marker: "zzNONE", block: `agent "a"` },
109
+ { id: "C03", what: "unknown field on an action", source: withLine("action", "zzfield: zzAAA103"), name: "zzfield", marker: "zzAAA103", block: `action "b"` },
110
+ { id: "C04", what: "unknown field on a human", source: withLine("human", "zzfield: zzAAA104"), name: "zzfield", marker: "zzAAA104", block: `human "h"` },
111
+ { id: "C05", what: "unknown field on a gate", source: withLine("gate", "zzfield: zzAAA105"), name: "zzfield", marker: "zzAAA105", block: `gate "g"` },
112
+ { id: "C06", what: "unknown field on a hook", source: withLine("hook", "zzfield: zzAAA106"), name: "zzfield", marker: "zzAAA106", block: `hook "k"` },
113
+ { id: "C07", what: "unknown field on a schedule job", source: withLine("job", "zzfield: zzAAA107"), name: "zzfield", marker: "zzAAA107", block: `job "j"` },
114
+ { id: "C08", what: "unknown field on an artifact", source: withLine("artifact", "zzfield: zzAAA108"), name: "zzfield", marker: "zzAAA108", block: `artifact "r"` },
115
+ { id: "C09", what: "unknown field in meta", source: withLine("meta", "zzfield: zzAAA109"), name: "zzfield", marker: "zzAAA109", block: `"meta"` },
116
+ { id: "C10", what: "unknown top-level block", source: withLine("top", " zzblock {\n x: zzAAA110\n }"), name: "zzblock", marker: "zzAAA110", block: "the topology" },
117
+ { id: "C11", what: "unknown named top-level block", source: withLine("top", " contract c1 {\n clause q1 {\n text: \"zzAAA111\"\n }\n }"), name: "contract", marker: "zzAAA111", block: "the topology" },
118
+ { id: "C12", what: "unknown block nested in an agent", source: withLine("agent", "zzblock {\n x: zzAAA112\n}"), name: "zzblock", marker: "zzAAA112", block: `agent "a"` },
119
+ { id: "C13", what: "agent field written on an action", source: withLine("action", "produces: [zzAAA113]"), name: "produces", marker: "zzAAA113", block: `action "b"` },
120
+ { id: "C16a", what: "v8 field serves: on an action", source: withLine("action", "serves: zzAAA116"), name: "serves", marker: "zzAAA116", block: `action "b"` },
121
+ { id: "C16b", what: "v8 field strength: on an action", source: withLine("action", "strength: zzAAA117"), name: "strength", marker: "zzAAA117", block: `action "b"` },
122
+ { id: "C17", what: "v8 field state: at the top level", source: withLine("top", " state: zzAAA118"), name: "state", marker: "zzAAA118", block: "" },
123
+ { id: "C17b", what: "v8 state block at the top level", source: withLine("top", " state draft {\n x: zzAAA119\n }"), name: "state", marker: "zzAAA119", block: "the topology" },
124
+ ];
125
+ const run = (source) => {
126
+ const ast = parse(source);
127
+ return { ast, results: validate(ast) };
128
+ };
129
+ const named = (results, ...words) => results.filter((r) => words.every((w) => r.message.includes(w)));
130
+ function cli(source, ...args) {
131
+ const dir = fs.mkdtempSync(join(os.tmpdir(), "at-unknown-"));
132
+ const file = join(dir, "probe.at");
133
+ fs.writeFileSync(file, source);
134
+ try {
135
+ const r = spawnSync(process.execPath, [CLI, ...args.map((a) => (a === "FILE" ? file : a.replace("DIR", dir)))], { encoding: "utf8" });
136
+ return { code: r.status, out: r.stdout + r.stderr, dir };
137
+ }
138
+ finally {
139
+ // dir is removed by the caller when it reads output files
140
+ }
141
+ }
142
+ describe("a name the parser does not read is reported, never dropped", () => {
143
+ it("[N23] the baseline still passes", () => {
144
+ expect(run(BASELINE).results).toEqual([]);
145
+ });
146
+ it("[N23] an unknown field on an agent is reported, not dropped", () => {
147
+ const { results } = run(CASES[0].source);
148
+ const hit = named(results, "zzmarker", `agent "a"`);
149
+ expect(hit.length).toBeGreaterThan(0);
150
+ expect(hit[0]).toMatchObject({ rule: "V102", level: "error" });
151
+ });
152
+ it("[N23] a misspelled field is reported with the field it resembles", () => {
153
+ const hit = named(run(CASES[1].source).results, "modle");
154
+ expect(hit.length).toBeGreaterThan(0);
155
+ expect(hit[0].message).toContain("Did you mean `model`?");
156
+ });
157
+ for (const c of CASES.slice(2, 8)) {
158
+ it(`[N23] an unknown field is reported on every block that holds fields: ${c.what}`, () => {
159
+ expect(named(run(c.source).results, c.name, c.block).length).toBeGreaterThan(0);
160
+ });
161
+ }
162
+ it("[N23] an unknown field in meta is reported", () => {
163
+ expect(named(run(CASES[8].source).results, "zzfield", `"meta"`).length).toBeGreaterThan(0);
164
+ });
165
+ it("[N23] an unknown top-level block is reported, not dropped", () => {
166
+ expect(named(run(CASES[9].source).results, "zzblock", "not a topology section").length).toBeGreaterThan(0);
167
+ expect(named(run(CASES[10].source).results, "contract c1", "not a topology section").length).toBeGreaterThan(0);
168
+ });
169
+ it("[N23] an unknown block nested in a node is reported", () => {
170
+ expect(named(run(CASES[11].source).results, "zzblock", `agent "a"`).length).toBeGreaterThan(0);
171
+ });
172
+ it("[N23] a field valid on another node type is reported on the wrong one", () => {
173
+ const hit = named(run(CASES[12].source).results, "`produces` is not an action field", "agent");
174
+ expect(hit.length).toBeGreaterThan(0);
175
+ });
176
+ it("[N23] the v8 words serves, strength and state are reported until the language has them", () => {
177
+ for (const c of CASES.slice(13)) {
178
+ expect(named(run(c.source).results, c.name).length, c.id).toBeGreaterThan(0);
179
+ }
180
+ });
181
+ it("[N23] nothing written in the file vanishes between parse and validate", () => {
182
+ for (const c of CASES) {
183
+ const { ast, results } = run(c.source);
184
+ const kept = JSON.stringify(ast).includes(c.marker);
185
+ const reported = named(results, c.name).length > 0;
186
+ expect(kept || reported, `${c.id} ${c.what}`).toBe(true);
187
+ }
188
+ });
189
+ it("[N23] validate does not print \"All validation rules passed\" when anything was dropped, and exits 1", () => {
190
+ for (const c of [CASES[0], CASES[10], CASES[13]]) {
191
+ const r = cli(c.source, "validate", "FILE");
192
+ fs.rmSync(r.dir, { recursive: true, force: true });
193
+ expect(r.out, c.id).not.toContain("All validation rules passed");
194
+ expect(r.out, c.id).toContain("V102");
195
+ expect(r.code, c.id).toBe(1);
196
+ }
197
+ });
198
+ it("[N23] scaffold refuses a file with an unknown field instead of dropping it", () => {
199
+ const r = cli(CASES[0].source, "scaffold", "FILE", "--target", "claude-code", "--output", "DIR/out");
200
+ const wrote = fs.existsSync(join(r.dir, "out", ".claude"));
201
+ fs.rmSync(r.dir, { recursive: true, force: true });
202
+ expect(r.code).not.toBe(0);
203
+ expect(r.out).toContain("zzmarker");
204
+ expect(wrote).toBe(false);
205
+ });
206
+ it("[N23] the on-timeout value is still caught by V59 (the case that already worked)", () => {
207
+ const { ast, results } = run(withLine("human", "on-timeout: zzAAA114"));
208
+ expect(JSON.stringify(ast)).toContain("zzAAA114");
209
+ expect(results.some((r) => r.rule === "V59")).toBe(true);
210
+ });
211
+ });
212
+ describe("an enum field rejects a value outside its documented set", () => {
213
+ it("[N24] an agent's behavior must be advisory or blocking", () => {
214
+ const hit = run(withLine("agent", "behavior: zzAAA125")).results.filter((r) => r.rule === "V103");
215
+ expect(hit).toHaveLength(1);
216
+ expect(hit[0].message).toContain("zzAAA125");
217
+ expect(hit[0].message).toContain("advisory or blocking");
218
+ });
219
+ it("[N24] a gate's behavior must be advisory or blocking", () => {
220
+ expect(run(withLine("gate", "behavior: loud")).results.some((r) => r.rule === "V103")).toBe(true);
221
+ });
222
+ it("[N24] advisory and blocking pass", () => {
223
+ for (const v of ["advisory", "blocking"]) {
224
+ expect(run(withLine("agent", `behavior: ${v}`)).results).toEqual([]);
225
+ }
226
+ });
227
+ });
228
+ /**
229
+ * Guard: every field the docs list passes without a V102. A rule that flags a
230
+ * documented field is worse than the bug it fixes. The docs used to list
231
+ * agent fields by their AST names (`maxTurns`), which the parser drops.
232
+ */
233
+ describe("every field in the docs is a name the parser reads", () => {
234
+ const PAGES = [
235
+ { topic: "topology", section: "## Meta Block Fields", template: (f) => withLine("meta", f) },
236
+ { topic: "agent", section: "## All Fields", template: (f) => withLine("agent", f) },
237
+ { topic: "action", section: "## Fields", template: (f) => withLine("action", f) },
238
+ { topic: "human", section: "## Fields", template: (f) => withLine("human", f) },
239
+ { topic: "gate", section: "## Fields", template: (f) => withLine("gate", f) },
240
+ { topic: "hooks", section: "## Fields", template: (f) => withLine("hook", f) },
241
+ { topic: "schedule", section: "## Fields", template: (f) => withLine("job", f) },
242
+ { topic: "artifacts", section: "## Fields", template: (f) => withLine("artifact", f) },
243
+ { topic: "orchestrator", section: "## Fields", template: (f) => BASELINE.replace(" handles: [b]\n", ` handles: [b]\n ${f}\n`) },
244
+ { topic: "group", section: "## Fields", template: (f) => withLine("top", ` group gc {\n ${f}\n }`) },
245
+ { topic: "tools", section: "## Fields", template: (f) => withLine("top", ` tools {\n tool t {\n ${f}\n }\n }`) },
246
+ { topic: "skills", section: "## Fields", template: (f) => withLine("top", ` skill s {\n ${f}\n }`) },
247
+ ];
248
+ /** First-column names of the tables under `section`, until the next `## `. */
249
+ function documented(topic, section) {
250
+ const page = topics[topic].content();
251
+ const start = page.indexOf(section);
252
+ expect(start, `${topic}: "${section}" not found`).toBeGreaterThan(-1);
253
+ const end = page.indexOf("\n## ", start + section.length);
254
+ const body = page.slice(start, end === -1 ? undefined : end);
255
+ return [...body.matchAll(/^\|\s*`?([a-zA-Z][\w-]*)`?\s*\|/gm)]
256
+ .map((m) => m[1])
257
+ .filter((n) => !["Field", "id", "name", "NAME"].includes(n));
258
+ }
259
+ for (const p of PAGES) {
260
+ it(`[N23] every field in docs ${p.topic} passes without a V102`, () => {
261
+ const fields = documented(p.topic, p.section);
262
+ expect(fields.length).toBeGreaterThan(0);
263
+ const flagged = fields.filter((f) => run(p.template(`${f}: x`)).results.some((r) => r.rule === "V102"));
264
+ expect(flagged, `${p.topic}: documented but reported as unknown`).toEqual([]);
265
+ });
266
+ }
267
+ });
268
+ //# sourceMappingURL=unknown-names.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unknown-names.test.js","sourceRoot":"","sources":["../../../src/__tests__/e2e/unknown-names.test.ts"],"names":[],"mappings":"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"}
@@ -145,6 +145,13 @@ describe.skipIf(!LIVE)("[L3] Claude Code reads the phase-3 constructs as meant",
145
145
  // YAML error there would drop it. auditor is manual: without a
146
146
  // description Claude Code skipped it.
147
147
  expect(run.init.agents).toEqual(expect.arrayContaining(["drafter", "auditor"]));
148
+ // runs: fork and runs: inline are skills, not agents (M1); auditor's new
149
+ // frontmatter (color, initialPrompt, omitClaudeMd, effort) still loads (F1)
150
+ expect(run.init.skills).toEqual(expect.arrayContaining(["critic", "tidy"]));
151
+ // tone has paths: ["drafts/**/*.md"]: Claude Code holds a path-scoped
152
+ // skill back until matching files are in play, so the field is honoured
153
+ expect(run.init.skills).not.toContain("tone");
154
+ expect(run.init.agents).not.toContain("critic");
148
155
  // The fixture's Stop prompt hook asks for a summary; "OK" is not one, so
149
156
  // Claude Code feeds the hook's verdict back: proof the prompt handler ran
150
157
  // (as a command it would have failed to execute).
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.live.test.js","sourceRoot":"","sources":["../../../src/__tests__/live/claude-code.live.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.live.test.js","sourceRoot":"","sources":["../../../src/__tests__/live/claude-code.live.test.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,12 @@
8
8
  */
9
9
  import { describe, it } from "vitest";
10
10
  describe("open findings (spec/testing.md)", () => {
11
- it.todo("[B5] An agent's permissions read as per-agent grants; Claude Code allow rules are session-wide");
12
- it.todo("[F1] Missing first-class fields: agent effort, initialPrompt, omitClaudeMd, cache TTL, color; skill when_to_use, arguments, paths, shell");
13
- it.todo("[F2] Hooks as a typed union (http, mcp_tool, agent; once, async, if)");
11
+ it.todo("[I4] V14 refuses an agent with both `tools` and `disallowed-tools`, but Claude Code accepts both, so an honest import of such a hand-built agent has validation errors");
12
+ it.todo("[B3] Agent teams (peers that message each other) have no node or edge type; experimental in Claude Code, interactive sessions only");
13
+ it.todo("[B7] The `observability { }` block is ignored by the claude-code binding");
14
+ it.todo("[N22] Subagent nesting depth (Claude Code: 3) and fan-out (20 at once) are not checked");
15
+ it.todo("[F4] Agent `memory` scope (user/project/local) and `autoCompactWindow` are not first-class; `memory:` already names stores, so the scope needs another word");
16
+ it.todo("[N25] An agent's `role:` is documented but never read; the role text comes only from the roles block by agent id");
17
+ it.todo("[N26] V102 does not look inside free-form or not-yet-listed blocks (prompt, extensions, settings, env, memory, providers, mcp-servers, interfaces, triggers, depth, flow, ...)");
14
18
  });
15
19
  //# sourceMappingURL=open-findings.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"open-findings.test.js","sourceRoot":"","sources":["../../src/__tests__/open-findings.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEtC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;IAC1G,EAAE,CAAC,IAAI,CAAC,0IAA0I,CAAC,CAAC;IACpJ,EAAE,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"open-findings.test.js","sourceRoot":"","sources":["../../src/__tests__/open-findings.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEtC,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,IAAI,CAAC,wKAAwK,CAAC,CAAC;IAClL,EAAE,CAAC,IAAI,CAAC,oIAAoI,CAAC,CAAC;IAC9I,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACpF,EAAE,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IAClG,EAAE,CAAC,IAAI,CAAC,6JAA6J,CAAC,CAAC;IACvK,EAAE,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;IAC5H,EAAE,CAAC,IAAI,CAAC,gLAAgL,CAAC,CAAC;AAC5L,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/bindings/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EAkBZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAk+D/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,cAAc,sCAAsC,CAAC;AAClE,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAQ5D;AAoKD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAWrE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAuC3E;AAujCD,eAAO,MAAM,iBAAiB,EAAE,aAsG/B,CAAC"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/bindings/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EAkBZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AA2lE/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,cAAc,sCAAsC,CAAC;AAClE,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAQ5D;AAoKD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAWrE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAuC3E;AAujCD,eAAO,MAAM,iBAAiB,EAAE,aAuG/B,CAAC"}
@@ -53,13 +53,26 @@ const UNIVERSAL_EVENTS = {
53
53
  function claudeEvent(on) {
54
54
  return UNIVERSAL_EVENTS[on] ?? on;
55
55
  }
56
- /** A settings.json hook handler for a command or prompt hook. */
56
+ /** Whether a hook runs a shell command (and so has a script). */
57
+ function isCommandHook(hook) {
58
+ return (hook.type ?? "command") === "command";
59
+ }
60
+ /** A settings.json hook handler, in the shape Claude Code reads for its type. */
57
61
  function hookHandler(hook, command) {
58
- // A prompt hook asks a model to judge the event; its run: is the prompt.
59
- if (hook.type === "prompt") {
60
- return { type: "prompt", prompt: hook.run, ...(hook.timeout ? { timeout: hook.timeout } : {}) };
62
+ const timeout = hook.timeout ? { timeout: hook.timeout } : {};
63
+ switch (hook.type ?? "command") {
64
+ // A prompt or agent hook asks a model (or a subagent) to judge the event;
65
+ // its run: is the prompt.
66
+ case "prompt":
67
+ case "agent":
68
+ return { type: hook.type, prompt: hook.run, ...(hook.model ? { model: hook.model } : {}), ...timeout };
69
+ case "http":
70
+ return { type: "http", url: hook.url, ...timeout };
71
+ case "mcp_tool":
72
+ return { type: "mcp_tool", server: hook.server, tool: hook.tool, ...timeout };
73
+ default:
74
+ return { type: "command", command: command(), ...(hook.async ? { async: true } : {}), ...timeout };
61
75
  }
62
- return { type: "command", command: command(), ...(hook.timeout ? { timeout: hook.timeout } : {}) };
63
76
  }
64
77
  /**
65
78
  * Downshift all markdown headings by one level so they nest properly
@@ -122,10 +135,16 @@ function frontmatter(fields) {
122
135
  * human, and orchestrator nodes are NOT registered and therefore CANNOT be
123
136
  * used as SubagentStop matchers.
124
137
  */
138
+ /** An agent with runs: inline or fork compiles to a skill, not a subagent. */
139
+ function runsAsSkill(agent) {
140
+ return agent.runs === "inline" || agent.runs === "fork";
141
+ }
142
+ /** Permission modes a subagent may ask for but cannot get beyond its session. */
143
+ const LOOSER_MODES = new Set(["acceptEdits", "auto", "dontAsk", "bypassPermissions"]);
125
144
  function isRegisteredSubagentType(ast, name) {
126
145
  if (!name)
127
146
  return false;
128
- return ast.nodes.some((n) => (n.type === "agent" || n.type === "group") && n.id === name);
147
+ return ast.nodes.some((n) => (n.type === "group" || (n.type === "agent" && !runsAsSkill(n))) && n.id === name);
129
148
  }
130
149
  /**
131
150
  * Resolve the topology's orchestration delegation mode.
@@ -492,6 +511,9 @@ function generateAgents(ast) {
492
511
  // .claude/agents/<name>/AGENT.md for it. See generateWorkflowLaunchArtifacts.
493
512
  if (isWorkflowSeamAgent(agent))
494
513
  continue;
514
+ // runs: inline or fork compiles to a skill (generateAgentSkills).
515
+ if (runsAsSkill(agent))
516
+ continue;
495
517
  // Build frontmatter fields
496
518
  const fm = {};
497
519
  fm.name = agent.id;
@@ -526,7 +548,23 @@ function generateAgents(ast) {
526
548
  const mapped = mapPermissionMode(agent.permissions);
527
549
  if (mapped)
528
550
  fm.permissionMode = mapped;
551
+ // B5: allow rules are session-wide; a subagent can narrow what its
552
+ // session may do, never widen it.
553
+ if (mapped && LOOSER_MODES.has(mapped)) {
554
+ console.warn(`[claude-code] Agent "${agent.id}" permissions: ${agent.permissions} compiles to permissionMode ${mapped}. ` +
555
+ `Claude Code ignores it when the session already runs in acceptEdits, auto or bypassPermissions, ` +
556
+ `and a subagent cannot get permissions its session lacks: grant them in settings { allow: [...] }.`);
557
+ }
529
558
  }
559
+ // thinking is the language's reasoning-effort field; Claude Code calls it effort.
560
+ if (agent.thinking && agent.thinking !== "off")
561
+ fm.effort = agent.thinking;
562
+ if (agent.color)
563
+ fm.color = agent.color;
564
+ if (agent.initialPrompt)
565
+ fm.initialPrompt = agent.initialPrompt;
566
+ if (agent.omitClaudeMd != null)
567
+ fm.omitClaudeMd = agent.omitClaudeMd;
530
568
  if (agent.isolation)
531
569
  fm.isolation = agent.isolation;
532
570
  // Note: sandbox and fallback-chain are not recognized by Claude Code frontmatter
@@ -571,7 +609,7 @@ function generateAgents(ast) {
571
609
  hookLines.push(` ${eventName}:`);
572
610
  for (const hook of hooks) {
573
611
  const scriptName = scriptNameFromRun(hook.run);
574
- if (hook.type !== "prompt" && !scriptName)
612
+ if (isCommandHook(hook) && !scriptName)
575
613
  continue; // V96: prose in run names no script
576
614
  const handler = hookHandler(hook, () => `bash .claude/skills/${topologyName}/scripts/${agent.id}-${scriptName}`);
577
615
  // JSON strings are valid YAML double-quoted scalars, so a regex
@@ -618,6 +656,12 @@ function generateAgents(ast) {
618
656
  }
619
657
  sections.push(PROMPT_FENCE_CLOSE);
620
658
  sections.push("");
659
+ if (agent.independent) {
660
+ sections.push("## Independence");
661
+ sections.push("");
662
+ sections.push(INDEPENDENT_NOTE);
663
+ sections.push("");
664
+ }
621
665
  // Reads section
622
666
  if (agent.reads && agent.reads.length > 0) {
623
667
  sections.push("## Reads");
@@ -1363,6 +1407,25 @@ function generateTopologySkill(ast) {
1363
1407
  sections.push("");
1364
1408
  }
1365
1409
  }
1410
+ // How each node runs, when it is not a plain subagent: the choice is on the
1411
+ // node (runs:, independent), and the playbook says how to call it.
1412
+ const special = ast.nodes.filter((n) => n.type === "agent" && (runsAsSkill(n) || !!n.independent));
1413
+ if (special.length > 0) {
1414
+ sections.push("## How these nodes run");
1415
+ sections.push("");
1416
+ for (const agent of special) {
1417
+ const how = agent.runs === "inline"
1418
+ ? `invoke the \`${agent.id}\` skill yourself; it runs in your own context`
1419
+ : agent.runs === "fork"
1420
+ ? `invoke the \`${agent.id}\` skill; it runs in a fresh forked context`
1421
+ : `launch the \`${agent.id}\` subagent`;
1422
+ const indep = agent.independent
1423
+ ? "; it is independent: hand it only the artifacts it reads, never your reasoning or the author's"
1424
+ : "";
1425
+ sections.push(`- **${agent.id}**: ${how}${indep}.`);
1426
+ }
1427
+ sections.push("");
1428
+ }
1366
1429
  // Schedules section
1367
1430
  if (ast.schedules.length > 0) {
1368
1431
  sections.push("## Schedules");
@@ -1503,6 +1566,54 @@ function generateTopologySkill(ast) {
1503
1566
  return files;
1504
1567
  }
1505
1568
  /** Generate skill-level files from the skills block. */
1569
+ /** What an independent node is told, wherever it runs. */
1570
+ const INDEPENDENT_NOTE = "You are independent of the author: judge only the artifacts you are given to read. " +
1571
+ "If you are handed the author's reasoning, drafts notes or conversation, ignore them.";
1572
+ /**
1573
+ * An agent with runs: inline or fork compiles to a skill: inline runs in the
1574
+ * caller's own context, fork in a fresh forked one (context: fork). The node
1575
+ * keeps its id, description, model, tools and prompt.
1576
+ */
1577
+ function generateAgentSkills(ast) {
1578
+ const files = [];
1579
+ for (const node of ast.nodes) {
1580
+ if (node.type !== "agent")
1581
+ continue;
1582
+ const agent = node;
1583
+ if (!runsAsSkill(agent))
1584
+ continue;
1585
+ const fm = { name: agent.id };
1586
+ const desc = agent.description ?? ast.roles[agent.role ?? ""] ?? ast.roles[agent.id] ?? agent.role;
1587
+ if (desc)
1588
+ fm.description = desc;
1589
+ if (agent.runs === "fork")
1590
+ fm.context = "fork";
1591
+ if (agent.model && isClaudeCodeModel(agent.model))
1592
+ fm.model = agent.model;
1593
+ if (agent.thinking && agent.thinking !== "off")
1594
+ fm.effort = agent.thinking;
1595
+ if (agent.tools && agent.tools.length > 0)
1596
+ fm["allowed-tools"] = agent.tools.map(convertMcpToolName).join(", ");
1597
+ if (agent.disallowedTools && agent.disallowedTools.length > 0) {
1598
+ fm["disallowed-tools"] = agent.disallowedTools.map(convertMcpToolName).join(", ");
1599
+ }
1600
+ if (agent.invocation === "manual")
1601
+ fm["disable-model-invocation"] = true;
1602
+ const sections = [frontmatter(fm), "", `# ${agent.label || toTitle(agent.id)}`, ""];
1603
+ sections.push(agent.runs === "fork"
1604
+ ? "Runs as a skill in a fresh forked context: it sees none of the conversation that invoked it."
1605
+ : "Runs as a skill in the caller's own context: the same agent, no handoff.");
1606
+ sections.push("", "## Instructions", "", downshiftHeadings(agent.prompt ?? desc ?? "Complete the assigned task."), "");
1607
+ if (agent.reads && agent.reads.length > 0)
1608
+ sections.push("## Reads", ...agent.reads.map((r) => `- ${r}`), "");
1609
+ if (agent.writes && agent.writes.length > 0)
1610
+ sections.push("## Writes", ...agent.writes.map((w) => `- ${w}`), "");
1611
+ if (agent.independent)
1612
+ sections.push("## Independence", "", INDEPENDENT_NOTE, "");
1613
+ files.push({ path: `.claude/skills/${agent.id}/SKILL.md`, content: sections.join("\n"), category: "agent" });
1614
+ }
1615
+ return files;
1616
+ }
1506
1617
  function generateSkills(ast) {
1507
1618
  const files = [];
1508
1619
  for (const skill of ast.skills) {
@@ -1525,6 +1636,23 @@ function generateSkills(ast) {
1525
1636
  if (skill.allowedTools && skill.allowedTools.length > 0) {
1526
1637
  sfm["allowed-tools"] = skill.allowedTools.map(convertMcpToolName).join(", ");
1527
1638
  }
1639
+ if (skill.disallowedTools && skill.disallowedTools.length > 0) {
1640
+ sfm["disallowed-tools"] = skill.disallowedTools.map(convertMcpToolName).join(", ");
1641
+ }
1642
+ if (skill.whenToUse)
1643
+ sfm.when_to_use = skill.whenToUse;
1644
+ if (skill.argumentHint)
1645
+ sfm["argument-hint"] = skill.argumentHint;
1646
+ if (skill.arguments && skill.arguments.length > 0)
1647
+ sfm.arguments = skill.arguments;
1648
+ if (skill.paths && skill.paths.length > 0)
1649
+ sfm.paths = skill.paths;
1650
+ if (skill.shell)
1651
+ sfm.shell = skill.shell;
1652
+ if (skill.model)
1653
+ sfm.model = skill.model;
1654
+ if (skill.thinking && skill.thinking !== "off")
1655
+ sfm.effort = skill.thinking;
1528
1656
  // Only emit frontmatter if there are fields beyond just the name
1529
1657
  if (Object.keys(sfm).length > 1) {
1530
1658
  sections.push(frontmatter(sfm));
@@ -2046,8 +2174,8 @@ function generateHookScripts(ast) {
2046
2174
  continue;
2047
2175
  // A Mod's run: is the user's TypeScript module — never overwrite it with a
2048
2176
  // bash stub. generateModPlugin imports it instead.
2049
- if (hook.type === "mod" || hook.type === "prompt")
2050
- continue;
2177
+ if (!isCommandHook(hook))
2178
+ continue; // a mod's module, or no script at all
2051
2179
  const runPath = hook.run;
2052
2180
  // If the run path starts with '.' or '/' it is already project-relative —
2053
2181
  // generate the stub at exactly that path (observability pattern).
@@ -2089,7 +2217,7 @@ function generateAgentHookScripts(ast) {
2089
2217
  if (!agent.hooks || agent.hooks.length === 0)
2090
2218
  continue;
2091
2219
  for (const hook of agent.hooks) {
2092
- if (!hook.run || hook.type === "mod" || hook.type === "prompt")
2220
+ if (!hook.run || !isCommandHook(hook))
2093
2221
  continue;
2094
2222
  const scriptName = scriptNameFromRun(hook.run);
2095
2223
  if (!scriptName)
@@ -2161,7 +2289,7 @@ export function settingsHooksOf(ast) {
2161
2289
  `delegation to "subagent".`);
2162
2290
  continue;
2163
2291
  }
2164
- if (hook.type !== "prompt" && proseInRun(hook.run))
2292
+ if (isCommandHook(hook) && proseInRun(hook.run))
2165
2293
  continue; // V96: prose in run names no script
2166
2294
  if (!hooksByEvent[eventName]) {
2167
2295
  hooksByEvent[eventName] = [];
@@ -3235,6 +3363,7 @@ export const claudeCodeBinding = {
3235
3363
  files.push(...skillFiles);
3236
3364
  // Named skills
3237
3365
  files.push(...generateSkills(ast));
3366
+ files.push(...generateAgentSkills(ast));
3238
3367
  // Schemas
3239
3368
  files.push(...generateSchemas(ast));
3240
3369
  // Memory directories