agentopology 0.9.2 → 0.10.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 (168) hide show
  1. package/README.md +17 -19
  2. package/dist/__tests__/e2e/action-guard.test.d.ts +13 -0
  3. package/dist/__tests__/e2e/action-guard.test.d.ts.map +1 -0
  4. package/dist/__tests__/e2e/action-guard.test.js +299 -0
  5. package/dist/__tests__/e2e/action-guard.test.js.map +1 -0
  6. package/dist/__tests__/e2e/conformance.test.d.ts +13 -0
  7. package/dist/__tests__/e2e/conformance.test.d.ts.map +1 -0
  8. package/dist/__tests__/e2e/conformance.test.js +109 -0
  9. package/dist/__tests__/e2e/conformance.test.js.map +1 -0
  10. package/dist/__tests__/e2e/contract-drift.test.d.ts +11 -0
  11. package/dist/__tests__/e2e/contract-drift.test.d.ts.map +1 -0
  12. package/dist/__tests__/e2e/contract-drift.test.js +142 -0
  13. package/dist/__tests__/e2e/contract-drift.test.js.map +1 -0
  14. package/dist/__tests__/e2e/guard-check.test.d.ts +9 -0
  15. package/dist/__tests__/e2e/guard-check.test.d.ts.map +1 -0
  16. package/dist/__tests__/e2e/guard-check.test.js +316 -0
  17. package/dist/__tests__/e2e/guard-check.test.js.map +1 -0
  18. package/dist/__tests__/e2e/guard-target.test.d.ts +11 -0
  19. package/dist/__tests__/e2e/guard-target.test.d.ts.map +1 -0
  20. package/dist/__tests__/e2e/guard-target.test.js +198 -0
  21. package/dist/__tests__/e2e/guard-target.test.js.map +1 -0
  22. package/dist/__tests__/e2e/inventory.test.d.ts +18 -0
  23. package/dist/__tests__/e2e/inventory.test.d.ts.map +1 -0
  24. package/dist/__tests__/e2e/inventory.test.js +187 -0
  25. package/dist/__tests__/e2e/inventory.test.js.map +1 -0
  26. package/dist/__tests__/e2e/matcher.test.d.ts +14 -0
  27. package/dist/__tests__/e2e/matcher.test.d.ts.map +1 -0
  28. package/dist/__tests__/e2e/matcher.test.js +145 -0
  29. package/dist/__tests__/e2e/matcher.test.js.map +1 -0
  30. package/dist/__tests__/e2e/step-check.test.d.ts +9 -0
  31. package/dist/__tests__/e2e/step-check.test.d.ts.map +1 -0
  32. package/dist/__tests__/e2e/step-check.test.js +158 -0
  33. package/dist/__tests__/e2e/step-check.test.js.map +1 -0
  34. package/dist/__tests__/e2e/strength.test.d.ts +17 -0
  35. package/dist/__tests__/e2e/strength.test.d.ts.map +1 -0
  36. package/dist/__tests__/e2e/strength.test.js +130 -0
  37. package/dist/__tests__/e2e/strength.test.js.map +1 -0
  38. package/dist/__tests__/e2e/verified-on.test.d.ts +2 -0
  39. package/dist/__tests__/e2e/verified-on.test.d.ts.map +1 -0
  40. package/dist/__tests__/e2e/verified-on.test.js +57 -0
  41. package/dist/__tests__/e2e/verified-on.test.js.map +1 -0
  42. package/dist/__tests__/open-findings.test.js +1 -0
  43. package/dist/__tests__/open-findings.test.js.map +1 -1
  44. package/dist/bindings/__tests__/bindings.test.js +6 -686
  45. package/dist/bindings/__tests__/bindings.test.js.map +1 -1
  46. package/dist/bindings/__tests__/defaults-agreement.test.js +0 -12
  47. package/dist/bindings/__tests__/defaults-agreement.test.js.map +1 -1
  48. package/dist/bindings/__tests__/hook-command.test.js +2 -2
  49. package/dist/bindings/__tests__/hook-command.test.js.map +1 -1
  50. package/dist/bindings/__tests__/mod-plugin.test.js +2 -2
  51. package/dist/bindings/__tests__/mod-plugin.test.js.map +1 -1
  52. package/dist/bindings/claude-code.d.ts +45 -1
  53. package/dist/bindings/claude-code.d.ts.map +1 -1
  54. package/dist/bindings/claude-code.js +181 -15
  55. package/dist/bindings/claude-code.js.map +1 -1
  56. package/dist/bindings/index.d.ts +5 -5
  57. package/dist/bindings/index.d.ts.map +1 -1
  58. package/dist/bindings/index.js +9 -16
  59. package/dist/bindings/index.js.map +1 -1
  60. package/dist/bindings/types.d.ts +6 -1
  61. package/dist/bindings/types.d.ts.map +1 -1
  62. package/dist/cli/__tests__/cli.test.js +25 -0
  63. package/dist/cli/__tests__/cli.test.js.map +1 -1
  64. package/dist/cli/index.js +222 -8
  65. package/dist/cli/index.js.map +1 -1
  66. package/dist/conformance/claude-code.d.ts +99 -0
  67. package/dist/conformance/claude-code.d.ts.map +1 -0
  68. package/dist/conformance/claude-code.js +242 -0
  69. package/dist/conformance/claude-code.js.map +1 -0
  70. package/dist/conformance/extract.d.ts +70 -0
  71. package/dist/conformance/extract.d.ts.map +1 -0
  72. package/dist/conformance/extract.js +185 -0
  73. package/dist/conformance/extract.js.map +1 -0
  74. package/dist/docs/content.d.ts.map +1 -1
  75. package/dist/docs/content.js +57 -32
  76. package/dist/docs/content.js.map +1 -1
  77. package/dist/guard/check.d.ts +53 -0
  78. package/dist/guard/check.d.ts.map +1 -0
  79. package/dist/guard/check.js +366 -0
  80. package/dist/guard/check.js.map +1 -0
  81. package/dist/guard/target.d.ts +45 -0
  82. package/dist/guard/target.d.ts.map +1 -0
  83. package/dist/guard/target.js +168 -0
  84. package/dist/guard/target.js.map +1 -0
  85. package/dist/import/__tests__/import.test.js +0 -554
  86. package/dist/import/__tests__/import.test.js.map +1 -1
  87. package/dist/import/index.d.ts +0 -1
  88. package/dist/import/index.d.ts.map +1 -1
  89. package/dist/import/index.js +1 -7
  90. package/dist/import/index.js.map +1 -1
  91. package/dist/import/serializer.d.ts.map +1 -1
  92. package/dist/import/serializer.js +41 -0
  93. package/dist/import/serializer.js.map +1 -1
  94. package/dist/index.d.ts +0 -4
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +0 -4
  97. package/dist/index.js.map +1 -1
  98. package/dist/inventory/index.d.ts +65 -0
  99. package/dist/inventory/index.d.ts.map +1 -0
  100. package/dist/inventory/index.js +272 -0
  101. package/dist/inventory/index.js.map +1 -0
  102. package/dist/parser/ast.d.ts +46 -0
  103. package/dist/parser/ast.d.ts.map +1 -1
  104. package/dist/parser/ast.js.map +1 -1
  105. package/dist/parser/index.d.ts +6 -1
  106. package/dist/parser/index.d.ts.map +1 -1
  107. package/dist/parser/index.js +66 -4
  108. package/dist/parser/index.js.map +1 -1
  109. package/dist/parser/known-fields.d.ts +3 -0
  110. package/dist/parser/known-fields.d.ts.map +1 -1
  111. package/dist/parser/known-fields.js +5 -3
  112. package/dist/parser/known-fields.js.map +1 -1
  113. package/dist/parser/ledger.d.ts +36 -0
  114. package/dist/parser/ledger.d.ts.map +1 -0
  115. package/dist/parser/ledger.js +72 -0
  116. package/dist/parser/ledger.js.map +1 -0
  117. package/dist/parser/run.d.ts +6 -0
  118. package/dist/parser/run.d.ts.map +1 -1
  119. package/dist/parser/run.js +10 -0
  120. package/dist/parser/run.js.map +1 -1
  121. package/dist/parser/validator.d.ts.map +1 -1
  122. package/dist/parser/validator.js +255 -1
  123. package/dist/parser/validator.js.map +1 -1
  124. package/dist/scaffold/manifest.d.ts.map +1 -1
  125. package/dist/scaffold/manifest.js +0 -8
  126. package/dist/scaffold/manifest.js.map +1 -1
  127. package/dist/scaffold/merge.d.ts.map +1 -1
  128. package/dist/scaffold/merge.js +1 -3
  129. package/dist/scaffold/merge.js.map +1 -1
  130. package/dist/step/check.d.ts +56 -0
  131. package/dist/step/check.d.ts.map +1 -0
  132. package/dist/step/check.js +125 -0
  133. package/dist/step/check.js.map +1 -0
  134. package/dist/sync/index.d.ts +0 -2
  135. package/dist/sync/index.d.ts.map +1 -1
  136. package/dist/sync/index.js +0 -109
  137. package/dist/sync/index.js.map +1 -1
  138. package/package.json +3 -1
  139. package/spec/claude-code/README.md +19 -0
  140. package/spec/claude-code/hooks-contract.2.1.295.json +143 -0
  141. package/spec/claude-code/hooks-contract.json +142 -0
  142. package/spec/grammar.md +45 -7
  143. package/spec/testing.md +15 -0
  144. package/spec/validation.md +11 -2
  145. package/dist/__tests__/live/zz-debug.test.d.ts +0 -2
  146. package/dist/__tests__/live/zz-debug.test.d.ts.map +0 -1
  147. package/dist/__tests__/live/zz-debug.test.js +0 -4
  148. package/dist/__tests__/live/zz-debug.test.js.map +0 -1
  149. package/dist/bindings/copilot-cli.d.ts +0 -20
  150. package/dist/bindings/copilot-cli.d.ts.map +0 -1
  151. package/dist/bindings/copilot-cli.js +0 -1516
  152. package/dist/bindings/copilot-cli.js.map +0 -1
  153. package/dist/bindings/gemini-cli.d.ts +0 -18
  154. package/dist/bindings/gemini-cli.d.ts.map +0 -1
  155. package/dist/bindings/gemini-cli.js +0 -1318
  156. package/dist/bindings/gemini-cli.js.map +0 -1
  157. package/dist/bindings/kiro.d.ts +0 -17
  158. package/dist/bindings/kiro.d.ts.map +0 -1
  159. package/dist/bindings/kiro.js +0 -1615
  160. package/dist/bindings/kiro.js.map +0 -1
  161. package/dist/bindings/openclaw.d.ts +0 -18
  162. package/dist/bindings/openclaw.d.ts.map +0 -1
  163. package/dist/bindings/openclaw.js +0 -1947
  164. package/dist/bindings/openclaw.js.map +0 -1
  165. package/dist/import/openclaw.d.ts +0 -70
  166. package/dist/import/openclaw.d.ts.map +0 -1
  167. package/dist/import/openclaw.js +0 -1060
  168. package/dist/import/openclaw.js.map +0 -1
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Claude Code's hook contract, extracted from the hooks reference page
3
+ * (https://code.claude.com/docs/en/hooks.md, raw markdown) into a snapshot
4
+ * that can be committed and diffed.
5
+ *
6
+ * The docs are the source of truth. The SchemaStore settings schema exists but
7
+ * lags the CLI (the settings docs say so; on 2026-11-10 it lacked `onFailure`
8
+ * and two of the 33 events), so it is not used here.
9
+ *
10
+ * What is extracted: the event names (one `###` heading each under "Hook
11
+ * events"), the events with no matcher support, the matcher rules table, each
12
+ * handler type's fields with whether they are required, and every "Requires
13
+ * Claude Code vX or later" attached to an event or a field. A snapshot at an
14
+ * older version is derived by dropping what requires a newer one.
15
+ *
16
+ * @module
17
+ */
18
+ export interface FieldFact {
19
+ required: boolean;
20
+ /** The Claude Code version the field needs, when the docs give one. */
21
+ requires?: string;
22
+ }
23
+ export interface HookContract {
24
+ source: string;
25
+ /** The date the page was read (YYYY-MM-DD). */
26
+ fetched: string;
27
+ /** The Claude Code version installed when it was checked, or the version this snapshot is derived for. */
28
+ claudeCode: string;
29
+ /** True when this snapshot was derived from a newer one by dropping what requires a newer version. */
30
+ derived?: boolean;
31
+ events: string[];
32
+ eventRequires: Record<string, string>;
33
+ noMatcherEvents: string[];
34
+ handlerTypes: string[];
35
+ /** Fields per handler: `common` applies to all; `prompt` covers prompt and agent hooks. */
36
+ fields: Record<string, Record<string, FieldFact>>;
37
+ /** The matcher table's rows ("value → evaluated as"), as written. */
38
+ matcherRules: string[];
39
+ }
40
+ /** Read the contract out of the hooks page's raw markdown. */
41
+ export declare function extractHookContract(markdown: string, meta: {
42
+ source: string;
43
+ fetched: string;
44
+ claudeCode: string;
45
+ }): HookContract;
46
+ /** -1, 0 or 1, comparing two x.y.z versions. */
47
+ export declare function compareVersions(a: string, b: string): number;
48
+ /** The contract as it stood at `version`: events and fields that require a newer version are dropped. */
49
+ export declare function contractAt(c: HookContract, version: string): HookContract;
50
+ export interface ContractDiff {
51
+ eventsAdded: string[];
52
+ eventsRemoved: string[];
53
+ noMatcherAdded: string[];
54
+ noMatcherRemoved: string[];
55
+ handlerTypesAdded: string[];
56
+ handlerTypesRemoved: string[];
57
+ /** "command.onFailure" style keys. */
58
+ fieldsAdded: string[];
59
+ fieldsRemoved: string[];
60
+ /** A field or event whose required flag or version changed: "command.onFailure: requires 2.1.295 → 2.1.300". */
61
+ changed: string[];
62
+ matcherRulesChanged: boolean;
63
+ }
64
+ /** What changed from `before` to `after`. */
65
+ export declare function diffContracts(before: HookContract, after: HookContract): ContractDiff;
66
+ /** Whether a diff has anything in it. */
67
+ export declare function hasDrift(d: ContractDiff): boolean;
68
+ /** A diff as lines a person reads. */
69
+ export declare function renderDiff(d: ContractDiff): string[];
70
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/conformance/extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,0GAA0G;IAC1G,UAAU,EAAE,MAAM,CAAC;IACnB,sGAAsG;IACtG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2FAA2F;IAC3F,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAClD,qEAAqE;IACrE,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA6CD,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAqCjI;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,yGAAyG;AACzG,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAgBzE;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,sCAAsC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gHAAgH;IAChH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAID,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAwBrF;AAED,yCAAyC;AACzC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAEjD;AAED,sCAAsC;AACtC,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAcpD"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Claude Code's hook contract, extracted from the hooks reference page
3
+ * (https://code.claude.com/docs/en/hooks.md, raw markdown) into a snapshot
4
+ * that can be committed and diffed.
5
+ *
6
+ * The docs are the source of truth. The SchemaStore settings schema exists but
7
+ * lags the CLI (the settings docs say so; on 2026-11-10 it lacked `onFailure`
8
+ * and two of the 33 events), so it is not used here.
9
+ *
10
+ * What is extracted: the event names (one `###` heading each under "Hook
11
+ * events"), the events with no matcher support, the matcher rules table, each
12
+ * handler type's fields with whether they are required, and every "Requires
13
+ * Claude Code vX or later" attached to an event or a field. A snapshot at an
14
+ * older version is derived by dropping what requires a newer one.
15
+ *
16
+ * @module
17
+ */
18
+ /** The lines of the section that starts at `heading` (exact line), up to the next heading of the same or higher level. */
19
+ function section(lines, heading) {
20
+ const start = lines.findIndex((l) => l.trim() === heading);
21
+ if (start === -1)
22
+ return [];
23
+ const level = heading.match(/^#+/)[0].length;
24
+ const out = [];
25
+ let fenced = false; // a "# comment" inside a code example is not a heading
26
+ for (let i = start + 1; i < lines.length; i++) {
27
+ if (/^\s*(```|~~~)/.test(lines[i]))
28
+ fenced = !fenced;
29
+ const h = !fenced && lines[i].match(/^(#+)\s/);
30
+ if (h && h[1].length <= level)
31
+ break;
32
+ out.push(lines[i]);
33
+ }
34
+ return out;
35
+ }
36
+ /** Every markdown table in `lines`, as rows of cells; header and separator rows dropped. */
37
+ function tables(lines) {
38
+ const out = [];
39
+ let current = null;
40
+ for (const l of lines) {
41
+ if (!l.startsWith("|")) {
42
+ current = null;
43
+ continue;
44
+ }
45
+ const cells = l.replace(/\\\|/g, "\u0000").split("|").slice(1, -1).map((c) => c.trim().replace(/\u0000/g, "|"));
46
+ if (!current) {
47
+ current = [];
48
+ out.push(current);
49
+ continue;
50
+ } // the header row
51
+ if (cells.every((c) => /^:?-+:?$/.test(c)))
52
+ continue;
53
+ current.push(cells);
54
+ }
55
+ return out;
56
+ }
57
+ const tableRows = (lines) => tables(lines)[0] ?? [];
58
+ const ticked = (cell) => [...cell.matchAll(/`([^`]+)`/g)].map((m) => m[1]);
59
+ const REQUIRES = /Requires Claude Code v(\d+\.\d+\.\d+) or later/;
60
+ const HANDLER_SECTIONS = {
61
+ common: "#### Common fields",
62
+ command: "#### Command hook fields",
63
+ http: "#### HTTP hook fields",
64
+ mcp_tool: "#### MCP tool hook fields",
65
+ prompt: "#### Prompt and agent hook fields",
66
+ };
67
+ /** Read the contract out of the hooks page's raw markdown. */
68
+ export function extractHookContract(markdown, meta) {
69
+ const lines = markdown.split("\n");
70
+ const eventLines = section(lines, "## Hook events");
71
+ const events = [];
72
+ const eventRequires = {};
73
+ for (const l of eventLines) {
74
+ const m = l.match(/^### ([A-Z][A-Za-z]+)\s*$/);
75
+ if (m)
76
+ events.push(m[1]);
77
+ }
78
+ for (const e of events) {
79
+ for (const l of section(lines, `### ${e}`)) {
80
+ const r = l.match(new RegExp(`^${e} requires Claude Code v(\\d+\\.\\d+\\.\\d+) or later`));
81
+ if (r) {
82
+ eventRequires[e] = r[1];
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ // The section's first table is how a matcher is evaluated; the second, what each event's matcher filters.
88
+ const [rules = [], perEvent = []] = tables(section(lines, "### Matcher patterns"));
89
+ const matcherRules = rules.map((r) => `${r[0]} → ${r[1]}`);
90
+ const noMatcherEvents = perEvent.filter((r) => /no matcher support/.test(r[1] ?? "")).flatMap((r) => ticked(r[0]));
91
+ const fields = {};
92
+ for (const [type, heading] of Object.entries(HANDLER_SECTIONS)) {
93
+ const facts = {};
94
+ for (const r of tableRows(section(lines, heading))) {
95
+ const name = ticked(r[0])[0];
96
+ if (!name)
97
+ continue;
98
+ const requires = (r[2] ?? "").match(REQUIRES)?.[1];
99
+ facts[name] = { required: /^yes/.test(r[1] ?? ""), ...(requires ? { requires } : {}) };
100
+ }
101
+ fields[type] = facts;
102
+ }
103
+ const typeCell = tableRows(section(lines, HANDLER_SECTIONS.common)).find((r) => ticked(r[0])[0] === "type")?.[2] ?? "";
104
+ const handlerTypes = ticked(typeCell).map((t) => t.replace(/^"|"$/g, ""));
105
+ return { ...meta, events, eventRequires, noMatcherEvents: [...new Set(noMatcherEvents)].sort(), handlerTypes, fields, matcherRules };
106
+ }
107
+ /** -1, 0 or 1, comparing two x.y.z versions. */
108
+ export function compareVersions(a, b) {
109
+ const pa = a.split(".").map(Number), pb = b.split(".").map(Number);
110
+ for (let i = 0; i < 3; i++)
111
+ if ((pa[i] ?? 0) !== (pb[i] ?? 0))
112
+ return (pa[i] ?? 0) < (pb[i] ?? 0) ? -1 : 1;
113
+ return 0;
114
+ }
115
+ /** The contract as it stood at `version`: events and fields that require a newer version are dropped. */
116
+ export function contractAt(c, version) {
117
+ const newer = (v) => !!v && compareVersions(v, version) > 0;
118
+ const fields = {};
119
+ for (const [type, facts] of Object.entries(c.fields)) {
120
+ fields[type] = Object.fromEntries(Object.entries(facts).filter(([, f]) => !newer(f.requires)));
121
+ }
122
+ const events = c.events.filter((e) => !newer(c.eventRequires[e]));
123
+ return {
124
+ ...c,
125
+ claudeCode: version,
126
+ derived: true,
127
+ events,
128
+ eventRequires: Object.fromEntries(Object.entries(c.eventRequires).filter(([e]) => events.includes(e))),
129
+ noMatcherEvents: c.noMatcherEvents.filter((e) => events.includes(e)),
130
+ fields,
131
+ };
132
+ }
133
+ const minus = (a, b) => a.filter((x) => !b.includes(x));
134
+ /** What changed from `before` to `after`. */
135
+ export function diffContracts(before, after) {
136
+ const flat = (c) => Object.entries(c.fields).flatMap(([t, f]) => Object.keys(f).map((n) => `${t}.${n}`));
137
+ const fact = (c, key) => { const [t, n] = key.split("."); return c.fields[t]?.[n]; };
138
+ const changed = [];
139
+ for (const key of flat(before).filter((k) => flat(after).includes(k))) {
140
+ const a = fact(before, key), b = fact(after, key);
141
+ if (a.required !== b.required)
142
+ changed.push(`${key}: required ${a.required} → ${b.required}`);
143
+ if (a.requires !== b.requires)
144
+ changed.push(`${key}: requires ${a.requires ?? "-"} → ${b.requires ?? "-"}`);
145
+ }
146
+ for (const e of before.events.filter((x) => after.events.includes(x))) {
147
+ if (before.eventRequires[e] !== after.eventRequires[e])
148
+ changed.push(`${e}: requires ${before.eventRequires[e] ?? "-"} → ${after.eventRequires[e] ?? "-"}`);
149
+ }
150
+ return {
151
+ eventsAdded: minus(after.events, before.events),
152
+ eventsRemoved: minus(before.events, after.events),
153
+ noMatcherAdded: minus(after.noMatcherEvents, before.noMatcherEvents),
154
+ noMatcherRemoved: minus(before.noMatcherEvents, after.noMatcherEvents),
155
+ handlerTypesAdded: minus(after.handlerTypes, before.handlerTypes),
156
+ handlerTypesRemoved: minus(before.handlerTypes, after.handlerTypes),
157
+ fieldsAdded: minus(flat(after), flat(before)),
158
+ fieldsRemoved: minus(flat(before), flat(after)),
159
+ changed,
160
+ matcherRulesChanged: JSON.stringify(before.matcherRules) !== JSON.stringify(after.matcherRules),
161
+ };
162
+ }
163
+ /** Whether a diff has anything in it. */
164
+ export function hasDrift(d) {
165
+ return d.matcherRulesChanged || Object.values(d).some((v) => Array.isArray(v) && v.length > 0);
166
+ }
167
+ /** A diff as lines a person reads. */
168
+ export function renderDiff(d) {
169
+ const out = [];
170
+ const list = (label, xs) => { if (xs.length)
171
+ out.push(`${label} (${xs.length}): ${xs.join(", ")}`); };
172
+ list("events added", d.eventsAdded);
173
+ list("events removed", d.eventsRemoved);
174
+ list("now without matcher support", d.noMatcherAdded);
175
+ list("matcher support added", d.noMatcherRemoved);
176
+ list("handler types added", d.handlerTypesAdded);
177
+ list("handler types removed", d.handlerTypesRemoved);
178
+ list("fields added", d.fieldsAdded);
179
+ list("fields removed", d.fieldsRemoved);
180
+ list("changed", d.changed);
181
+ if (d.matcherRulesChanged)
182
+ out.push("the matcher rules table changed: re-check matcherMatches in src/conformance/claude-code.ts");
183
+ return out.length ? out : ["no drift"];
184
+ }
185
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/conformance/extract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/docs/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA8lI3C,CAAC"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/docs/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAunI3C,CAAC"}
@@ -348,7 +348,8 @@ action NAME {
348
348
  | kind | string | yes (V26) | -- | "external", "git", "decision", "inline", "report" |
349
349
  | source | string | no | -- | Source reference (file path or URL) |
350
350
  | description | string | no | -- | Human-readable description |
351
- | commands | string[] | no | -- | Shell commands to execute |
351
+ | commands | string[] | no | -- | Shell commands to execute. A gate before this action guards them in Claude Code sessions |
352
+ | unit-from | string (regex) | no | -- | One capture group that reads the unit (an episode id, a ticket) from the command line, e.g. \`"./tool publish (\\\\S+)"\`. Needs a capture group (V111) |
352
353
  | timeout | string | no | -- | Duration string (e.g. "5m", "2h") |
353
354
  | on-fail | string | no | -- | "halt", "retry", "skip", "continue", "fallback <agent-id>" |
354
355
  | join | string | no | -- | Fan-in: "all", "any", "all-done", "none-failed" |
@@ -422,6 +423,12 @@ gates {
422
423
  | before | identifier | no (V13) | -- | Node this gate runs before |
423
424
  | run | string | no | -- | Script to execute for the check |
424
425
  | description | string | no | -- | What the gate checks, in words (prose goes here, never in \`run\`: V96) |
426
+ | strength | refuse / detect / hope / none | no | -- | What stops the step, as written down (V104) |
427
+ | by | code / hook / settings / gate | no | -- | Which mechanism refuses (V104) |
428
+ | at | "path" or "path:line" | no | -- | The code that refuses, project-relative (V106) |
429
+ | match | string | no | -- | Text expected near \`at\`; needs \`at\` (V106) |
430
+ | bypass | string | no | -- | The declared way around it (an env switch, a flag) |
431
+ | ledger | record id | no | the only record | The record a gate before a script step reads (V112) |
425
432
  | checks | string[] | no | -- | List of check identifiers |
426
433
  | retry | number | no | -- | Max retries on failure |
427
434
  | on-fail | string | no | "halt" | "halt" or "bounce-back" |
@@ -436,10 +443,41 @@ gates {
436
443
  | halt | Stop the topology on gate failure |
437
444
  | bounce-back | Return work to the \`after\` agent for correction |
438
445
 
446
+ ## Gates before a script step
447
+
448
+ A gate whose \`before\` is an action with \`commands\` refuses that step in Claude Code sessions. The claude-code binding writes \`before-action.sh\`, a PreToolUse hook on Bash (\`onFailure: "block"\`). When the command starts with one of the action's commands (leading \`VAR=value\` words ignored) it checks the gate: with a ledger, the LAST line for the \`after\` step (same unit, when \`unit-from\` reads one) must have \`ok: true\`; with \`run\`, that wrapper must exit 0. Otherwise it exits 2 and names the gate, step, unit and ledger path.
449
+
450
+ \`\`\`at
451
+ action publish {
452
+ kind: external
453
+ commands: ["./tool publish"]
454
+ unit-from: "./tool publish (\\\\S+)"
455
+ }
456
+ records {
457
+ record trace { path: "logs/{unit}/trace.jsonl" }
458
+ }
459
+ gates {
460
+ gate publish-ready { after: render before: publish ledger: trace }
461
+ }
462
+ \`\`\`
463
+
464
+ \`records { record ID { path: "..." } }\` declares ledgers; \`path\` is project-relative and may contain \`{unit}\`. With exactly one record, a gate needs no \`ledger:\`.
465
+
466
+ **Ledger line format.** JSON Lines, one object per line, appended by the step's own script (agentopology only reads it):
467
+
468
+ \`\`\`json
469
+ {"step": "render", "unit": "ep42", "ok": true, "at": "2026-01-01T00:00:00Z"}
470
+ \`\`\`
471
+
472
+ \`unit\` is omitted when the step has none. A hook covers Claude Code sessions only: a step run from a terminal or a scheduler should call \`agentopology step check FILE.at STEP [--unit U] [--dir D]\` at its start (\`by: code\`). It exits 0 when every gate before STEP is satisfied, 1 otherwise, naming each failing gate and why.
473
+
439
474
  ## Validation Rules
440
475
 
441
476
  - **V13**: \`after\` and \`before\` must reference declared nodes
442
- - **V25**: \`on-fail: bounce-back\` warning when \`after\` is not an agent/group (cannot be wired as a SubagentStop hook on claude-code)
477
+ - **V25**: \`on-fail: bounce-back\` warning when \`after\` is not an agent/group (cannot be wired as a SubagentStop hook on claude-code). Not raised for a gate before an action with commands: that is compiled to before-action.sh
478
+ - **V110**: warning, a gate before a script step has neither a ledger nor \`run\`: nothing to check
479
+ - **V111**: error, \`unit-from\` is not a valid regex or has no capture group
480
+ - **V112**: error, \`ledger\` names no declared record, a record path is unsafe, or the gate needs a ledger and several records exist
443
481
 
444
482
  ## Example
445
483
 
@@ -614,6 +652,9 @@ Attributes appear in brackets after the target. Order matters (V12):
614
652
  | wait | \`[wait 30s]\` | Timer delay before edge fires |
615
653
  | weight | \`[weight 0.7]\` | Routing probability (0-1) |
616
654
  | reflection | \`[reflection]\` | Marks an evaluator/reflection loop |
655
+ | strength | \`[strength: none]\` | Enforcement written down: refuse, detect, hope or none (V104) |
656
+ | at | \`[at: "story/SKILL.md"]\` | Where the enforcement or the hoping prose lives (V106) |
657
+ | guard | \`[guard: lock-bash]\` or \`[guard: [a, b]]\` | Hooks or gates that guard this edge, by id (V105) |
617
658
 
618
659
  Multiple attributes can be combined:
619
660
 
@@ -1502,7 +1543,7 @@ hooks {
1502
1543
  matcher: "pattern"
1503
1544
  run: "scripts/handler.sh"
1504
1545
  type: command
1505
- timeout: 5000
1546
+ timeout: 5
1506
1547
  }
1507
1548
  }
1508
1549
  \`\`\`
@@ -1527,11 +1568,13 @@ agent my-agent {
1527
1568
  |-------|------|----------|---------|-------------|
1528
1569
  | name | identifier | yes | -- | Hook identifier |
1529
1570
  | on | string | yes | -- | Event name to listen for |
1530
- | matcher | string | no | -- | Pattern to match against event payload |
1531
- | run | string | yes | -- | Command or script to execute |
1571
+ | matcher | string | no | -- | Tool name (or agent type, path) the event must match: exact names (\`Edit\\|Write\`) or a regex (\`mcp__chrome__.*\`), never permission-rule syntax (V107) |
1572
+ | if | string | no | -- | Permission-rule filter on the tool's arguments, e.g. \`"Bash(rm -rf *)"\`; tool events only (V107) |
1573
+ | run | string | yes | -- | Command or script to execute; \`exit 2\` runs as written, and only exit 2 blocks (V108) |
1532
1574
  | type | string | no | command | "command", "prompt" or "mod" (V94) |
1533
1575
  | flag | string | no | -- | mod only: the env switch that turns the Mod on |
1534
- | timeout | number | no | -- | Timeout in milliseconds |
1576
+ | timeout | number | no | -- | Timeout in seconds (Claude Code reads seconds) |
1577
+ | strength | string | no | -- | refuse, detect, hope or none (V104); a refuse hook is checked against every tool of a server it guards (V109) |
1535
1578
  | extensions | Record | no | -- | Binding-specific fields |
1536
1579
 
1537
1580
  ## Events (23 total, command and prompt hooks)
@@ -1597,8 +1640,9 @@ Mod's flag and \`--plugin-dir\`.
1597
1640
  hooks {
1598
1641
  hook block-dangerous-tools {
1599
1642
  on: PreToolUse
1600
- matcher: "Bash(rm -rf *)"
1601
- run: "exit 1"
1643
+ matcher: "Bash"
1644
+ if: "Bash(rm -rf *)"
1645
+ run: "exit 2"
1602
1646
  type: command
1603
1647
  }
1604
1648
 
@@ -1615,7 +1659,8 @@ hooks {
1615
1659
 
1616
1660
  - \`type: command\` runs a shell command; \`type: prompt\` injects text into the agent's context; \`type: mod\` loads a module inside the engine.
1617
1661
  - Fields are one per line: \`hook h { on: Stop run: "x" }\` makes \`on\` swallow the rest of the line (V90).
1618
- - The \`matcher\` field filters events by payload pattern (e.g. tool name for ToolUse events).
1662
+ - The \`matcher\` is tested against the tool name alone. Letters, digits, \`_\`, \`-\`, spaces, \`,\` and \`|\` mean exact names; any other character makes it an unanchored regex. MCP tools are \`mcp__<server>__<tool>\`, so match a whole server with \`mcp__chrome__.*\` (\`mcp__chrome\` alone matches nothing). Filter on arguments with \`if:\`.
1663
+ - Only exit 2 blocks. Exit 1 is a non-blocking error and the action goes ahead.
1619
1664
  - Global hooks fire for all agents; per-agent hooks fire only for that agent.
1620
1665
  `,
1621
1666
  },
@@ -3989,7 +4034,7 @@ topology data-pipeline : [pipeline, fan-out] {
3989
4034
  description: "All binding targets and what they generate",
3990
4035
  content: () => `# bindings
3991
4036
 
3992
- AgenTopology compiles to multiple target platforms via bindings. Each binding reads the parsed AST and generates platform-specific configuration files.
4037
+ AgenTopology compiles to platform files via bindings. Claude Code is the supported target; the others are experimental. Each binding reads the parsed AST and generates platform-specific configuration files.
3993
4038
 
3994
4039
  ## Available Bindings
3995
4040
 
@@ -4005,29 +4050,9 @@ AgenTopology compiles to multiple target platforms via bindings. Each binding re
4005
4050
  **Generates:** \`codex.yaml\`, agent configuration files
4006
4051
  **Description:** Generates Codex CLI configuration for OpenAI-powered agent workflows. Maps AgenTopology permissions to Codex approval modes (suggest, auto-edit, full-auto).
4007
4052
 
4008
- ### gemini-cli
4009
-
4010
- **Target:** Google Gemini CLI
4011
- **Generates:** \`.gemini/\` configuration directory, agent files
4012
- **Description:** Generates Gemini CLI configuration. Maps tools to Gemini function declarations and supports Gemini-specific model identifiers.
4013
-
4014
- ### copilot-cli
4015
-
4016
- **Target:** GitHub Copilot CLI
4017
- **Generates:** \`.github/copilot/\` configuration
4018
- **Description:** Generates GitHub Copilot CLI agent configuration. Maps AgenTopology concepts to Copilot's instruction and tool systems.
4019
-
4020
- ### openclaw
4021
-
4022
- **Target:** OpenClaw framework
4023
- **Generates:** OpenClaw project configuration
4024
- **Description:** Generates configuration for the OpenClaw multi-agent framework. Supports OpenClaw's native agent orchestration model.
4025
-
4026
- ### kiro
4053
+ ### Experimental
4027
4054
 
4028
- **Target:** Anthropic Kiro
4029
- **Generates:** \`.kiro/\` configuration directory with specs
4030
- **Description:** Generates Kiro project configuration. Maps agents to Kiro specs with steering prompts and tool configurations.
4055
+ \`codex\`, \`cursor\` and \`claude-workflow\` are kept but experimental: they are not verified against their platform the way \`claude-code\` is. \`gemini-cli\`, \`copilot-cli\`, \`openclaw\` and \`kiro\` were removed in 0.10.0; use agentopology 0.9.x for them.
4031
4056
 
4032
4057
  ## Usage
4033
4058
 
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/docs/content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/docs/content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * `agentopology guard <file> --check`: what a project enforces today, read
3
+ * from disk. It writes nothing.
4
+ *
5
+ * For each gate, approval step and permission rule the topology declares, it
6
+ * works out what the claude-code binding compiles it to, then looks in the
7
+ * project for that piece: the settings.json hook entry, the scripts it runs,
8
+ * the permission rule. Each item gets a strength:
9
+ *
10
+ * - `refuse`: a hook or a settings rule stops the step, and it is on disk.
11
+ * - `none`: the binding compiles it to a hook or rule, but the project is
12
+ * missing it (or names it by a relative path, which is skipped once Claude
13
+ * changes directory). Nothing stops the step.
14
+ * - `hope`: the binding has no hook for it (an advisory gate, inline
15
+ * delegation, or a gate with no agent on either side); only the playbook's
16
+ * prose asks for it.
17
+ *
18
+ * @module
19
+ */
20
+ import type { TopologyAST } from "../parser/ast.js";
21
+ export type Strength = "refuse" | "detect" | "hope" | "none";
22
+ export interface GuardItem {
23
+ kind: "gate" | "human" | "permission" | "edge";
24
+ id: string;
25
+ strength: Strength;
26
+ by: "hook" | "settings" | "code" | "gate" | "prose";
27
+ /** The file wrote this strength down itself (an edge's [strength: none]): reported, never a failure. */
28
+ declared?: boolean;
29
+ /** Where the enforcement lives (event, matcher, script), or why there is none. */
30
+ where: string;
31
+ notes: string[];
32
+ }
33
+ export interface GuardReport {
34
+ items: GuardItem[];
35
+ /** Gates and approval steps: how many refuse, of how many declared. */
36
+ enforcement: {
37
+ refuse: number;
38
+ of: number;
39
+ };
40
+ /** Items the binding compiles to a hook or rule that the project lacks, and broken citations. */
41
+ missing: number;
42
+ /**
43
+ * Hooks in settings.json this check cannot tie to a step: hand-built
44
+ * guards. They may refuse a step this report calls hope or none. Declare
45
+ * them in hooks { } with a strength and cite them with [guard: name].
46
+ */
47
+ unattributed: string[];
48
+ verifiedOn: string;
49
+ }
50
+ export declare function checkGuards(ast: TopologyAST, root: string): GuardReport;
51
+ /** The report as terminal lines. */
52
+ export declare function renderGuardReport(report: GuardReport): string[];
53
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/guard/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAgC,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOlF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpD,wGAAwG;IACxG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,uEAAuE;IACvE,WAAW,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,iGAAiG;IACjG,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAkNvE;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAgB/D"}