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.
- package/README.md +5 -5
- package/dist/__tests__/e2e/compile.test.js +68 -0
- package/dist/__tests__/e2e/compile.test.js.map +1 -1
- package/dist/__tests__/e2e/import-project.test.d.ts +10 -0
- package/dist/__tests__/e2e/import-project.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/import-project.test.js +260 -0
- package/dist/__tests__/e2e/import-project.test.js.map +1 -0
- package/dist/__tests__/e2e/roundtrip.test.js +2 -4
- package/dist/__tests__/e2e/roundtrip.test.js.map +1 -1
- package/dist/__tests__/e2e/unknown-names.test.d.ts +12 -0
- package/dist/__tests__/e2e/unknown-names.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/unknown-names.test.js +268 -0
- package/dist/__tests__/e2e/unknown-names.test.js.map +1 -0
- package/dist/__tests__/live/claude-code.live.test.js +7 -0
- package/dist/__tests__/live/claude-code.live.test.js.map +1 -1
- package/dist/__tests__/open-findings.test.js +7 -3
- package/dist/__tests__/open-findings.test.js.map +1 -1
- package/dist/bindings/claude-code.d.ts.map +1 -1
- package/dist/bindings/claude-code.js +140 -11
- package/dist/bindings/claude-code.js.map +1 -1
- package/dist/cli/index.js +42 -27
- package/dist/cli/index.js.map +1 -1
- package/dist/docs/content.js +19 -19
- package/dist/import/claude-code.d.ts +2 -1
- package/dist/import/claude-code.d.ts.map +1 -1
- package/dist/import/claude-code.js +36 -12
- package/dist/import/claude-code.js.map +1 -1
- package/dist/import/flow.d.ts +64 -0
- package/dist/import/flow.d.ts.map +1 -0
- package/dist/import/flow.js +176 -0
- package/dist/import/flow.js.map +1 -0
- package/dist/import/index.d.ts +11 -0
- package/dist/import/index.d.ts.map +1 -1
- package/dist/import/index.js +15 -4
- package/dist/import/index.js.map +1 -1
- package/dist/import/serializer.d.ts.map +1 -1
- package/dist/import/serializer.js +44 -3
- package/dist/import/serializer.js.map +1 -1
- package/dist/import/walk.d.ts +56 -0
- package/dist/import/walk.d.ts.map +1 -0
- package/dist/import/walk.js +163 -0
- package/dist/import/walk.js.map +1 -0
- package/dist/parser/__tests__/mod-hooks.test.js +1 -1
- package/dist/parser/__tests__/mod-hooks.test.js.map +1 -1
- package/dist/parser/ast.d.ts +46 -3
- package/dist/parser/ast.d.ts.map +1 -1
- package/dist/parser/ast.js.map +1 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +42 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/known-fields.d.ts +82 -0
- package/dist/parser/known-fields.d.ts.map +1 -0
- package/dist/parser/known-fields.js +263 -0
- package/dist/parser/known-fields.js.map +1 -0
- package/dist/parser/validator.d.ts +1 -1
- package/dist/parser/validator.d.ts.map +1 -1
- package/dist/parser/validator.js +114 -3
- package/dist/parser/validator.js.map +1 -1
- package/examples/matchmat-ship.at +2 -8
- package/examples/memory-system.at +0 -1
- package/package.json +1 -1
- package/spec/grammar.md +24 -1
- package/spec/testing.md +19 -4
- 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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;AAE3F,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DhB,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,uCAAuC;IAC9C,MAAM,EAAE,wCAAwC;IAChD,KAAK,EAAE,yCAAyC;IAChD,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,gCAAgC;IACtC,GAAG,EAAE,kBAAkB;IACvB,QAAQ,EAAE,0BAA0B;IACpC,IAAI,EAAE,qCAAqC;IAC3C,GAAG,EAAE,YAAY;CACT,CAAC;AAEX,SAAS,QAAQ,CAAC,KAA0B,EAAE,IAAY;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;IAC5E,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,OAAO,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACtG,CAAC;AAcD,MAAM,KAAK,GAAW;IACpB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3J,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE;IAClJ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5J,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;IACxJ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACrJ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACrJ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,iCAAiC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;IAC3J,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE;IAClK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;IACjJ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,mCAAmC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE;IACxK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,wEAAwE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE;IACpN,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kCAAkC,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1K,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kCAAkC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;IACtK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9J,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;IACpK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kCAAkC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;IACnJ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,uCAAuC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE;CACpL,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,OAAoC,EAAE,GAAG,KAAe,EAAE,EAAE,CACzE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnE,SAAS,GAAG,CAAC,MAAc,EAAE,GAAG,IAAc;IAC5C,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACnC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtI,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3D,CAAC;YAAS,CAAC;QACT,0DAA0D;IAC5D,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,wEAAwE,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE;YACxF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3G,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAClH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,mCAAmC,EAAE,OAAO,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;QAChG,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sGAAsG,EAAE,GAAG,EAAE;QAC9G,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAC5C,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YACjE,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACrG,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3D,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACxE,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,MAAM,KAAK,GAAmF;QAC5F,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;QAC5F,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;QACnF,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;QACjF,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;QAC/E,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;QAC7E,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;QAC9E,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;QAChF,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;QACtF,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,IAAI,CAAC,EAAE;QACxI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE;QACzG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,kCAAkC,CAAC,cAAc,CAAC,EAAE;QAC7H,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE;KAC1G,CAAC;IAEF,8EAA8E;IAC9E,SAAS,UAAU,CAAC,KAAa,EAAE,OAAe;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,OAAO,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;aAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,EAAE,CAAC,6BAA6B,CAAC,CAAC,KAAK,wBAAwB,EAAE,GAAG,EAAE;YACpE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAClE,CAAC;YACF,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,sCAAsC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACvC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAE/C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC;AAEzC;;;;GAIG;AACH,SAAS,SAAS;IAChB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAChE,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtD,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,SAAS;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAeD,SAAS,SAAS,CAAC,GAAW,EAAE,MAAM,GAAG,gCAAgC,EAAE,QAAQ,GAAG,CAAC;IACrF,MAAM,IAAI,GAAG,SAAS,CACpB,SAAS,EAAE,EACX;QACE,IAAI;QACJ,MAAM;QACN,mBAAmB,EAAE,eAAe;QACpC,qBAAqB;QACrB,0BAA0B;QAC1B,SAAS,EAAE,OAAO;QAClB,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC/B,iBAAiB,EAAE,aAAa;QAChC,WAAW;KACZ,EACD,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAC5C,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAA4B,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,CAA0B,CAAC;IACtG,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAiC,CAAC;IACvF,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC5F,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,MAAM,QAAQ,GAAG;IACf,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACtH,OAAO,CAAC,IAAI,EAAE,4BAA4B,CAAC;CAC5C,CAAC;AAEF,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC7E,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACrE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;gBACxG,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBACrC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;qBACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;qBAC3D,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;gBAC3C,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBACrC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;gBACxF,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;gBACzC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACjG,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChF,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3E,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3E,KAAK,MAAM,CAAC,IAAI,QAAQ;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,wEAAwE,EAAE,GAAG,EAAE;IACpG,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,2BAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1J,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClJ,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChF,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,wDAAwD,EAAE,GAAG,EAAE;IACpF,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;gBAC7I,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAC/B,0EAA0E;YAC1E,+DAA+D;YAC/D,sCAAsC;YACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAChF,yEAAyE;YACzE,4EAA4E;YAC5E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5E,sEAAsE;YACtE,wEAAwE;YACxE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChD,yEAAyE;YACzE,0EAA0E;YAC1E,kDAAkD;YAClD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC1G,MAAM,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,iFAAiF,EAAE,GAAG,EAAE;IAC7G,MAAM,MAAM,GAAG,uFAAuF,CAAC;IACvG,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;IAElG,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,kCAAkC,EAAE,yDAAyD,EAAE,2BAA2B,CAAC;QAC5H,CAAC,yFAAyF,EAAE,+BAA+B,EAAE,6BAA6B,CAAC;KAC5J,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;gBAC7I,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,+CAA+C,CAAC,EAAE,UAAU,CAAC,CAAC;YAC7F,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAC3H,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC5F,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;gBAC7I,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,EAAE,0CAA0C,CAAC,CAAC;YACzG,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,+FAA+F,CAAC,CAAC;YAChI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACnF,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
|
|
@@ -8,8 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { describe, it } from "vitest";
|
|
10
10
|
describe("open findings (spec/testing.md)", () => {
|
|
11
|
-
it.todo("[
|
|
12
|
-
it.todo("[
|
|
13
|
-
it.todo("[
|
|
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,
|
|
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;
|
|
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
|
-
/**
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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 === "
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|