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.
- package/README.md +17 -19
- package/dist/__tests__/e2e/action-guard.test.d.ts +13 -0
- package/dist/__tests__/e2e/action-guard.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/action-guard.test.js +299 -0
- package/dist/__tests__/e2e/action-guard.test.js.map +1 -0
- package/dist/__tests__/e2e/conformance.test.d.ts +13 -0
- package/dist/__tests__/e2e/conformance.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/conformance.test.js +109 -0
- package/dist/__tests__/e2e/conformance.test.js.map +1 -0
- package/dist/__tests__/e2e/contract-drift.test.d.ts +11 -0
- package/dist/__tests__/e2e/contract-drift.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/contract-drift.test.js +142 -0
- package/dist/__tests__/e2e/contract-drift.test.js.map +1 -0
- package/dist/__tests__/e2e/guard-check.test.d.ts +9 -0
- package/dist/__tests__/e2e/guard-check.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/guard-check.test.js +316 -0
- package/dist/__tests__/e2e/guard-check.test.js.map +1 -0
- package/dist/__tests__/e2e/guard-target.test.d.ts +11 -0
- package/dist/__tests__/e2e/guard-target.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/guard-target.test.js +198 -0
- package/dist/__tests__/e2e/guard-target.test.js.map +1 -0
- package/dist/__tests__/e2e/inventory.test.d.ts +18 -0
- package/dist/__tests__/e2e/inventory.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/inventory.test.js +187 -0
- package/dist/__tests__/e2e/inventory.test.js.map +1 -0
- package/dist/__tests__/e2e/matcher.test.d.ts +14 -0
- package/dist/__tests__/e2e/matcher.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/matcher.test.js +145 -0
- package/dist/__tests__/e2e/matcher.test.js.map +1 -0
- package/dist/__tests__/e2e/step-check.test.d.ts +9 -0
- package/dist/__tests__/e2e/step-check.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/step-check.test.js +158 -0
- package/dist/__tests__/e2e/step-check.test.js.map +1 -0
- package/dist/__tests__/e2e/strength.test.d.ts +17 -0
- package/dist/__tests__/e2e/strength.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/strength.test.js +130 -0
- package/dist/__tests__/e2e/strength.test.js.map +1 -0
- package/dist/__tests__/e2e/verified-on.test.d.ts +2 -0
- package/dist/__tests__/e2e/verified-on.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/verified-on.test.js +57 -0
- package/dist/__tests__/e2e/verified-on.test.js.map +1 -0
- package/dist/__tests__/open-findings.test.js +1 -0
- package/dist/__tests__/open-findings.test.js.map +1 -1
- package/dist/bindings/__tests__/bindings.test.js +6 -686
- package/dist/bindings/__tests__/bindings.test.js.map +1 -1
- package/dist/bindings/__tests__/defaults-agreement.test.js +0 -12
- package/dist/bindings/__tests__/defaults-agreement.test.js.map +1 -1
- package/dist/bindings/__tests__/hook-command.test.js +2 -2
- package/dist/bindings/__tests__/hook-command.test.js.map +1 -1
- package/dist/bindings/__tests__/mod-plugin.test.js +2 -2
- package/dist/bindings/__tests__/mod-plugin.test.js.map +1 -1
- package/dist/bindings/claude-code.d.ts +45 -1
- package/dist/bindings/claude-code.d.ts.map +1 -1
- package/dist/bindings/claude-code.js +181 -15
- package/dist/bindings/claude-code.js.map +1 -1
- package/dist/bindings/index.d.ts +5 -5
- package/dist/bindings/index.d.ts.map +1 -1
- package/dist/bindings/index.js +9 -16
- package/dist/bindings/index.js.map +1 -1
- package/dist/bindings/types.d.ts +6 -1
- package/dist/bindings/types.d.ts.map +1 -1
- package/dist/cli/__tests__/cli.test.js +25 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -1
- package/dist/cli/index.js +222 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/conformance/claude-code.d.ts +99 -0
- package/dist/conformance/claude-code.d.ts.map +1 -0
- package/dist/conformance/claude-code.js +242 -0
- package/dist/conformance/claude-code.js.map +1 -0
- package/dist/conformance/extract.d.ts +70 -0
- package/dist/conformance/extract.d.ts.map +1 -0
- package/dist/conformance/extract.js +185 -0
- package/dist/conformance/extract.js.map +1 -0
- package/dist/docs/content.d.ts.map +1 -1
- package/dist/docs/content.js +57 -32
- package/dist/docs/content.js.map +1 -1
- package/dist/guard/check.d.ts +53 -0
- package/dist/guard/check.d.ts.map +1 -0
- package/dist/guard/check.js +366 -0
- package/dist/guard/check.js.map +1 -0
- package/dist/guard/target.d.ts +45 -0
- package/dist/guard/target.d.ts.map +1 -0
- package/dist/guard/target.js +168 -0
- package/dist/guard/target.js.map +1 -0
- package/dist/import/__tests__/import.test.js +0 -554
- package/dist/import/__tests__/import.test.js.map +1 -1
- package/dist/import/index.d.ts +0 -1
- package/dist/import/index.d.ts.map +1 -1
- package/dist/import/index.js +1 -7
- package/dist/import/index.js.map +1 -1
- package/dist/import/serializer.d.ts.map +1 -1
- package/dist/import/serializer.js +41 -0
- package/dist/import/serializer.js.map +1 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/inventory/index.d.ts +65 -0
- package/dist/inventory/index.d.ts.map +1 -0
- package/dist/inventory/index.js +272 -0
- package/dist/inventory/index.js.map +1 -0
- package/dist/parser/ast.d.ts +46 -0
- package/dist/parser/ast.d.ts.map +1 -1
- package/dist/parser/ast.js.map +1 -1
- package/dist/parser/index.d.ts +6 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +66 -4
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/known-fields.d.ts +3 -0
- package/dist/parser/known-fields.d.ts.map +1 -1
- package/dist/parser/known-fields.js +5 -3
- package/dist/parser/known-fields.js.map +1 -1
- package/dist/parser/ledger.d.ts +36 -0
- package/dist/parser/ledger.d.ts.map +1 -0
- package/dist/parser/ledger.js +72 -0
- package/dist/parser/ledger.js.map +1 -0
- package/dist/parser/run.d.ts +6 -0
- package/dist/parser/run.d.ts.map +1 -1
- package/dist/parser/run.js +10 -0
- package/dist/parser/run.js.map +1 -1
- package/dist/parser/validator.d.ts.map +1 -1
- package/dist/parser/validator.js +255 -1
- package/dist/parser/validator.js.map +1 -1
- package/dist/scaffold/manifest.d.ts.map +1 -1
- package/dist/scaffold/manifest.js +0 -8
- package/dist/scaffold/manifest.js.map +1 -1
- package/dist/scaffold/merge.d.ts.map +1 -1
- package/dist/scaffold/merge.js +1 -3
- package/dist/scaffold/merge.js.map +1 -1
- package/dist/step/check.d.ts +56 -0
- package/dist/step/check.d.ts.map +1 -0
- package/dist/step/check.js +125 -0
- package/dist/step/check.js.map +1 -0
- package/dist/sync/index.d.ts +0 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +0 -109
- package/dist/sync/index.js.map +1 -1
- package/package.json +3 -1
- package/spec/claude-code/README.md +19 -0
- package/spec/claude-code/hooks-contract.2.1.295.json +143 -0
- package/spec/claude-code/hooks-contract.json +142 -0
- package/spec/grammar.md +45 -7
- package/spec/testing.md +15 -0
- package/spec/validation.md +11 -2
- package/dist/__tests__/live/zz-debug.test.d.ts +0 -2
- package/dist/__tests__/live/zz-debug.test.d.ts.map +0 -1
- package/dist/__tests__/live/zz-debug.test.js +0 -4
- package/dist/__tests__/live/zz-debug.test.js.map +0 -1
- package/dist/bindings/copilot-cli.d.ts +0 -20
- package/dist/bindings/copilot-cli.d.ts.map +0 -1
- package/dist/bindings/copilot-cli.js +0 -1516
- package/dist/bindings/copilot-cli.js.map +0 -1
- package/dist/bindings/gemini-cli.d.ts +0 -18
- package/dist/bindings/gemini-cli.d.ts.map +0 -1
- package/dist/bindings/gemini-cli.js +0 -1318
- package/dist/bindings/gemini-cli.js.map +0 -1
- package/dist/bindings/kiro.d.ts +0 -17
- package/dist/bindings/kiro.d.ts.map +0 -1
- package/dist/bindings/kiro.js +0 -1615
- package/dist/bindings/kiro.js.map +0 -1
- package/dist/bindings/openclaw.d.ts +0 -18
- package/dist/bindings/openclaw.d.ts.map +0 -1
- package/dist/bindings/openclaw.js +0 -1947
- package/dist/bindings/openclaw.js.map +0 -1
- package/dist/import/openclaw.d.ts +0 -70
- package/dist/import/openclaw.d.ts.map +0 -1
- package/dist/import/openclaw.js +0 -1060
- package/dist/import/openclaw.js.map +0 -1
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
const OPAQUE = null;
|
|
18
18
|
const HOOK = {
|
|
19
|
-
fields: ["on", "matcher", "run", "type", "flag", "timeout", "url", "server", "tool", "async", "model"],
|
|
19
|
+
fields: ["on", "matcher", "if", "run", "type", "flag", "timeout", "url", "server", "tool", "async", "model", "strength", "bypass"],
|
|
20
20
|
blocks: { extensions: OPAQUE },
|
|
21
21
|
};
|
|
22
22
|
const AGENT = {
|
|
@@ -54,9 +54,9 @@ const NODE_SCHEMAS = {
|
|
|
54
54
|
blocks: { outputs: OPAQUE },
|
|
55
55
|
},
|
|
56
56
|
agent: AGENT,
|
|
57
|
-
action: { fields: ["kind", "source", "description", "commands", "timeout", "on-fail", "join"] },
|
|
57
|
+
action: { fields: ["kind", "source", "description", "commands", "timeout", "on-fail", "join", "unit-from"] },
|
|
58
58
|
gate: {
|
|
59
|
-
fields: ["after", "before", "run", "checks", "retry", "on-fail", "behavior", "timeout", "description"],
|
|
59
|
+
fields: ["after", "before", "run", "checks", "retry", "on-fail", "behavior", "timeout", "description", "strength", "by", "at", "match", "bypass", "ledger"],
|
|
60
60
|
blocks: { extensions: OPAQUE },
|
|
61
61
|
},
|
|
62
62
|
human: { fields: ["file", "description", "timeout", "on-timeout"] },
|
|
@@ -66,6 +66,7 @@ const NODE_SCHEMAS = {
|
|
|
66
66
|
hook: HOOK,
|
|
67
67
|
job: { fields: ["cron", "every", "agent", "action", "enabled"] },
|
|
68
68
|
artifact: { fields: ["type", "path", "retention", "depends-on"] },
|
|
69
|
+
record: { fields: ["path"] },
|
|
69
70
|
tool: { fields: ["script", "description", "args", "lang"] },
|
|
70
71
|
skill: {
|
|
71
72
|
fields: [
|
|
@@ -94,6 +95,7 @@ const TOPOLOGY = {
|
|
|
94
95
|
hooks: { fields: [], blocks: { hook: NODE_SCHEMAS.hook } },
|
|
95
96
|
schedule: { fields: [], blocks: { job: NODE_SCHEMAS.job } },
|
|
96
97
|
artifacts: { fields: [], blocks: { artifact: NODE_SCHEMAS.artifact } },
|
|
98
|
+
records: { fields: [], blocks: { record: NODE_SCHEMAS.record } },
|
|
97
99
|
tools: { fields: [], blocks: { tool: NODE_SCHEMAS.tool } },
|
|
98
100
|
// Not in the grammar, but the parser reads the skills inside it.
|
|
99
101
|
skills: { fields: [], blocks: { skill: NODE_SCHEMAS.skill } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"known-fields.js","sourceRoot":"","sources":["../../src/parser/known-fields.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"known-fields.js","sourceRoot":"","sources":["../../src/parser/known-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,MAAM,IAAI,GAAgB;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;IAClI,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;CAC/B,CAAC;AAEF,MAAM,KAAK,GAAgB;IACzB,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa;QAC9D,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa;QACvE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM;QAC3E,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS;QAC9E,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;QACxE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM;QACnE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW;QAC/D,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW;QACtE,sEAAsE;QACtE,QAAQ;KACT;IACD,MAAM,EAAE;QACN,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,MAAM;QACtB,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE;QAC5F,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;QAClE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE;QAC7D,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC7C,QAAQ,EAAE;YACR,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;SAChG;KACF;CACF,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,YAAY,EAAE;QACZ,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;QAClE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;KAC5B;IACD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;IAC5G,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC3J,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;KAC/B;IACD,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE;IACnE,KAAK,EAAE;QACL,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC;KACxG;IACD,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;IAChE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE;IACjE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;IAC5B,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;IAC3D,KAAK,EAAE;QACL,MAAM,EAAE;YACN,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa;YAClF,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB;YACvF,0BAA0B,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe;SAClF;QACD,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;KAC/C;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC;KAC/G;CACoC,CAAC;AAExC,8EAA8E;AAC9E,MAAM,QAAQ,GAAgB;IAC5B,MAAM,EAAE,EAAE;IACV,MAAM,EAAE;QACN,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE;QAC1D,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE;QAC1D,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,EAAE;QAC3D,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE;QACtE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE;QAChE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE;QAC1D,iEAAiE;QACjE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE;QAC7D,+CAA+C;QAC/C,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;QACzE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;QAC/E,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;QACjE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;QAC5E,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;QACzE,yEAAyE;QACzE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;KACtF;CACF,CAAC;AAEF,8EAA8E;AAC9E,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAClE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxG,2DAA2D;YAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,kEAAkE;AAClE,SAAS,OAAO,CAAC,IAAY,EAAE,KAAwB;IACrD,IAAI,IAAwB,CAAC;IAC7B,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAAC,IAAI,GAAG,CAAC,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC;QAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAWD;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,qEAAqE;QACrE,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iEAAiE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1G,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,IAAI,CAAC,GAAG,IAAI,CAAC;gBACb,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;wBAAE,CAAC,EAAE,CAAC;yBACpB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;wBAAE,CAAC,EAAE,CAAC;oBAC9B,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3F,CAAC,GAAG,CAAC,CAAC;gBACN,SAAS;YACX,CAAC;QACH,CAAC;QACD,yCAAyC;QACzC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;gBAAE,KAAK,GAAG,CAAC,KAAK,CAAC;iBAClD,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,EAAE,KAAK,GAAG;oBAAE,KAAK,EAAE,CAAC;qBACnB,IAAI,EAAE,KAAK,GAAG;oBAAE,KAAK,EAAE,CAAC;qBACxB,IAAI,EAAE,KAAK,GAAG;oBAAE,OAAO,EAAE,CAAC;qBAC1B,IAAI,EAAE,KAAK,GAAG;oBAAE,OAAO,EAAE,CAAC;YACjC,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;QACD,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AASD,4BAA4B;AAC5B,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,EAAsB;IACzD,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;AACrF,CAAC;AAED,SAAS,KAAK,CAAC,IAAY,EAAE,MAAmB,EAAE,IAAY,EAAE,EAAsB,EAAE,GAAwB;IAC9G,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChD,2EAA2E;YAC3E,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM;gBAAE,SAAS;YAClC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACtE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,OAAe,CAAC;YACpB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,OAAO,GAAG,KAAK,IAAI,CAAC,IAAI,iGAAiG,CAAC;YAC5H,CAAC;iBAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,GAAG,KAAK,IAAI,CAAC,IAAI,aAAa,OAAO,CAAC,IAAI,CAAC,4BAA4B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,gBAAgB,CAAC;YACtI,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,KAAK,UAAU,IAAI,CAAC,IAAI,qBAAqB,OAAO,CAAC,IAAI,CAAC,0BAA0B;oBAC/F,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9D,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,GAAG,KAAK,YAAY,KAAK,8BAA8B,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,oBAAoB;gBACvJ,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,MAAM,YAAY,GACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAU,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ledgers: the JSON Lines files a step's own script appends to, and the gates
|
|
3
|
+
* that read them.
|
|
4
|
+
*
|
|
5
|
+
* A gate before an action (a script step) is checked against a record of what
|
|
6
|
+
* the step before it did: one object per line,
|
|
7
|
+
* `{"step": "<node id>", "unit": "<unit, omitted when none>", "ok": true|false, "at": "<ISO time>"}`.
|
|
8
|
+
* agentopology only reads it. The claude-code binding compiles the check into
|
|
9
|
+
* before-action.sh (a hook, so it covers Claude Code sessions); `step check`
|
|
10
|
+
* runs the same check from a terminal or a scheduler.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import type { ActionNode, GateNode, RecordDef, TopologyAST } from "./ast.js";
|
|
15
|
+
/** The actions a gate stands before that a command can name (they have `commands:`). */
|
|
16
|
+
export declare function guardedActions(ast: TopologyAST, gate: GateNode): ActionNode[];
|
|
17
|
+
/**
|
|
18
|
+
* The record a gate reads: the one it names, else the topology's only record.
|
|
19
|
+
* Undefined when it names none and there is not exactly one record, when the
|
|
20
|
+
* name is not declared (V112 reports both), or when the gate has no `after:`
|
|
21
|
+
* step to look up.
|
|
22
|
+
*/
|
|
23
|
+
export declare function gateLedger(ast: TopologyAST, gate: GateNode): RecordDef | undefined;
|
|
24
|
+
export declare function unsafeUnit(unit: string): boolean;
|
|
25
|
+
/** The ledger's project-relative path for a unit (`{unit}` replaced; empty when none). */
|
|
26
|
+
export declare function ledgerPath(record: RecordDef, unit: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Whether a ledger's text shows a step finished ok: the LAST line for the step
|
|
29
|
+
* (and the unit, when one is given) must have `ok: true`. A line that is not
|
|
30
|
+
* JSON is an error, not a skip: a damaged ledger must not open a gate.
|
|
31
|
+
*/
|
|
32
|
+
export declare function stepIsOk(text: string, step: string, unit: string): {
|
|
33
|
+
ok: boolean;
|
|
34
|
+
why: string;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/parser/ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG7E,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CAI7E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAMlF;AAKD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAY/F"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ledgers: the JSON Lines files a step's own script appends to, and the gates
|
|
3
|
+
* that read them.
|
|
4
|
+
*
|
|
5
|
+
* A gate before an action (a script step) is checked against a record of what
|
|
6
|
+
* the step before it did: one object per line,
|
|
7
|
+
* `{"step": "<node id>", "unit": "<unit, omitted when none>", "ok": true|false, "at": "<ISO time>"}`.
|
|
8
|
+
* agentopology only reads it. The claude-code binding compiles the check into
|
|
9
|
+
* before-action.sh (a hook, so it covers Claude Code sessions); `step check`
|
|
10
|
+
* runs the same check from a terminal or a scheduler.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import { gateAnchors } from "./ast.js";
|
|
15
|
+
/** The actions a gate stands before that a command can name (they have `commands:`). */
|
|
16
|
+
export function guardedActions(ast, gate) {
|
|
17
|
+
return gateAnchors(gate, "before")
|
|
18
|
+
.map((id) => ast.nodes.find((n) => n.id === id))
|
|
19
|
+
.filter((n) => n?.type === "action" && n.commands?.length !== 0 && !!n.commands);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The record a gate reads: the one it names, else the topology's only record.
|
|
23
|
+
* Undefined when it names none and there is not exactly one record, when the
|
|
24
|
+
* name is not declared (V112 reports both), or when the gate has no `after:`
|
|
25
|
+
* step to look up.
|
|
26
|
+
*/
|
|
27
|
+
export function gateLedger(ast, gate) {
|
|
28
|
+
// A ledger answers "did the after: step finish ok?"; with no after: there is no step to look up.
|
|
29
|
+
if (gateAnchors(gate, "after").length === 0)
|
|
30
|
+
return undefined;
|
|
31
|
+
const records = ast.records ?? [];
|
|
32
|
+
if (gate.ledger)
|
|
33
|
+
return records.find((r) => r.id === gate.ledger);
|
|
34
|
+
return records.length === 1 ? records[0] : undefined;
|
|
35
|
+
}
|
|
36
|
+
/** A unit goes into a file path, so it is one safe path segment: no `/`, no `..`. */
|
|
37
|
+
const SAFE_UNIT = /^[A-Za-z0-9_.@+-]+$/;
|
|
38
|
+
export function unsafeUnit(unit) {
|
|
39
|
+
return !SAFE_UNIT.test(unit) || unit === "." || unit.includes("..");
|
|
40
|
+
}
|
|
41
|
+
/** The ledger's project-relative path for a unit (`{unit}` replaced; empty when none). */
|
|
42
|
+
export function ledgerPath(record, unit) {
|
|
43
|
+
return record.path.replace(/\{unit\}/g, unit);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Whether a ledger's text shows a step finished ok: the LAST line for the step
|
|
47
|
+
* (and the unit, when one is given) must have `ok: true`. A line that is not
|
|
48
|
+
* JSON is an error, not a skip: a damaged ledger must not open a gate.
|
|
49
|
+
*/
|
|
50
|
+
export function stepIsOk(text, step, unit) {
|
|
51
|
+
let last;
|
|
52
|
+
const lines = text.split("\n");
|
|
53
|
+
for (let i = 0; i < lines.length; i++) {
|
|
54
|
+
if (lines[i].trim() === "")
|
|
55
|
+
continue;
|
|
56
|
+
let rec;
|
|
57
|
+
try {
|
|
58
|
+
rec = JSON.parse(lines[i]);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return { ok: false, why: `line ${i + 1} of the ledger is not JSON` };
|
|
62
|
+
}
|
|
63
|
+
if (rec === null || typeof rec !== "object")
|
|
64
|
+
return { ok: false, why: `line ${i + 1} of the ledger is not an object` };
|
|
65
|
+
if (rec.step === step && (unit === "" || rec.unit === unit))
|
|
66
|
+
last = rec;
|
|
67
|
+
}
|
|
68
|
+
if (!last)
|
|
69
|
+
return { ok: false, why: `the ledger has no record for step "${step}"${unit ? ` and unit "${unit}"` : ""}` };
|
|
70
|
+
return last.ok === true ? { ok: true, why: "" } : { ok: false, why: `the last record for step "${step}"${unit ? ` and unit "${unit}"` : ""} is not ok` };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/parser/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/run.d.ts
CHANGED
|
@@ -42,4 +42,10 @@ export declare function scriptNameFromRun(run: string | undefined): string | nul
|
|
|
42
42
|
* or what no command contains, so real commands are never refused.
|
|
43
43
|
*/
|
|
44
44
|
export declare function proseInRun(run: string): string | null;
|
|
45
|
+
/**
|
|
46
|
+
* Whether `run` is a shell command to run as written rather than a script:
|
|
47
|
+
* its first word is a builtin. `run: "exit 2"` used to scaffold a stub script
|
|
48
|
+
* named `exit` that exited 0, so a hook meant to block let everything through.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isShellCommand(run: string | undefined): boolean;
|
|
45
51
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/parser/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/parser/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAU9F;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAK,GAAG,OAAO,CAGlD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBrD"}
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/parser/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAU9F;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAK,GAAG,OAAO,CAGlD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBrD;AAKD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE/D"}
|
package/dist/parser/run.js
CHANGED
|
@@ -88,4 +88,14 @@ export function proseInRun(run) {
|
|
|
88
88
|
return "no script file name can be derived from it";
|
|
89
89
|
return null;
|
|
90
90
|
}
|
|
91
|
+
/** Shell builtins a `run:` may be written as directly (`exit 2`, `true`). */
|
|
92
|
+
const SHELL_BUILTIN = /^(?:exit|true|false|echo|printf|test|\[|:)$/;
|
|
93
|
+
/**
|
|
94
|
+
* Whether `run` is a shell command to run as written rather than a script:
|
|
95
|
+
* its first word is a builtin. `run: "exit 2"` used to scaffold a stub script
|
|
96
|
+
* named `exit` that exited 0, so a hook meant to block let everything through.
|
|
97
|
+
*/
|
|
98
|
+
export function isShellCommand(run) {
|
|
99
|
+
return !!run && SHELL_BUILTIN.test(run.trim().split(/\s+/)[0] ?? "");
|
|
100
|
+
}
|
|
91
101
|
//# sourceMappingURL=run.js.map
|
package/dist/parser/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/parser/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/parser/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/parser/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/parser/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,KAAK,EAEV,WAAW,EAKX,OAAO,EAkBR,MAAM,UAAU,CAAC;AAMlB,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAyD/E;AAuxGD;;;;;GAKG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,yCAA0C,CAAC;AACzE,eAAO,MAAM,eAAe,mGAElB,CAAC;AAEX,gEAAgE;AAChE,eAAO,MAAM,UAAU,oEAAqE,CAAC;AAyH7F,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,gBAAgB,EAAE,CAmH7D"}
|
package/dist/parser/validator.js
CHANGED
|
@@ -20,8 +20,10 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { MISSING } from "./index.js";
|
|
22
22
|
import { gateAnchors } from "./ast.js";
|
|
23
|
-
import { proseInRun } from "./run.js";
|
|
23
|
+
import { proseInRun, scriptNameFromRun } from "./run.js";
|
|
24
|
+
import { matcherProblem, matcherGaps, TOOL_EVENTS } from "../conformance/claude-code.js";
|
|
24
25
|
import { unsafePathReason } from "./paths.js";
|
|
26
|
+
import { gateLedger, guardedActions } from "./ledger.js";
|
|
25
27
|
// ---------------------------------------------------------------------------
|
|
26
28
|
// Reserved keywords (from spec section 7)
|
|
27
29
|
// ---------------------------------------------------------------------------
|
|
@@ -1171,6 +1173,246 @@ function v103BehaviorValue(ast) {
|
|
|
1171
1173
|
}
|
|
1172
1174
|
return results;
|
|
1173
1175
|
}
|
|
1176
|
+
const STRENGTHS = ["refuse", "detect", "hope", "none"];
|
|
1177
|
+
const ENFORCED_BY = ["code", "hook", "settings", "gate"];
|
|
1178
|
+
/**
|
|
1179
|
+
* V104: `strength:` and `by:` use their words.
|
|
1180
|
+
*
|
|
1181
|
+
* strength says what stops a step (refuse, detect, hope, none) and by says
|
|
1182
|
+
* which mechanism refuses (code, hook, settings, gate), on a gate, a hook or
|
|
1183
|
+
* a flow edge. Any other word could not be read by guard --check or drawn.
|
|
1184
|
+
*/
|
|
1185
|
+
function v104StrengthWords(ast) {
|
|
1186
|
+
const results = [];
|
|
1187
|
+
const check = (owner, field, value, nodeId) => {
|
|
1188
|
+
const words = field === "strength" ? STRENGTHS : ENFORCED_BY;
|
|
1189
|
+
if (value === undefined || words.includes(value))
|
|
1190
|
+
return;
|
|
1191
|
+
results.push({
|
|
1192
|
+
rule: "V104", level: "error",
|
|
1193
|
+
message: `${owner} has ${field}: ${value} — it must be one of ${words.join(", ")}.`,
|
|
1194
|
+
...(nodeId ? { node: nodeId, line: lookupLine(ast, nodeId) } : {}),
|
|
1195
|
+
});
|
|
1196
|
+
};
|
|
1197
|
+
for (const node of ast.nodes) {
|
|
1198
|
+
if (node.type !== "gate")
|
|
1199
|
+
continue;
|
|
1200
|
+
const gate = node;
|
|
1201
|
+
check(`Gate "${gate.id}"`, "strength", gate.strength, gate.id);
|
|
1202
|
+
check(`Gate "${gate.id}"`, "by", gate.by, gate.id);
|
|
1203
|
+
}
|
|
1204
|
+
for (const hook of ast.hooks ?? [])
|
|
1205
|
+
check(`Hook "${hook.name}"`, "strength", hook.strength);
|
|
1206
|
+
for (const edge of ast.edges)
|
|
1207
|
+
check(`Edge ${edge.from} -> ${edge.to}`, "strength", edge.strength);
|
|
1208
|
+
return results;
|
|
1209
|
+
}
|
|
1210
|
+
/**
|
|
1211
|
+
* V105: an edge's `guard:` names a hook or gate this file declares.
|
|
1212
|
+
*
|
|
1213
|
+
* The guard is how the edge cites what refuses it. A misspelled name would
|
|
1214
|
+
* credit the edge with a refusal nothing provides.
|
|
1215
|
+
*/
|
|
1216
|
+
function v105GuardResolves(ast) {
|
|
1217
|
+
const known = new Set([
|
|
1218
|
+
...(ast.hooks ?? []).map((h) => h.name),
|
|
1219
|
+
...ast.nodes.filter((n) => n.type === "gate").map((n) => n.id),
|
|
1220
|
+
]);
|
|
1221
|
+
const results = [];
|
|
1222
|
+
for (const edge of ast.edges) {
|
|
1223
|
+
for (const g of edge.guard ?? []) {
|
|
1224
|
+
if (known.has(g))
|
|
1225
|
+
continue;
|
|
1226
|
+
results.push({
|
|
1227
|
+
rule: "V105", level: "error",
|
|
1228
|
+
message: `Edge ${edge.from} -> ${edge.to} has guard: ${g}, but no hook or gate is named "${g}". A guard names a hook in hooks { } or a gate in gates { }.`,
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1231
|
+
}
|
|
1232
|
+
return results;
|
|
1233
|
+
}
|
|
1234
|
+
/**
|
|
1235
|
+
* V106: an `at:` citation is a safe project-relative "path" or "path:line",
|
|
1236
|
+
* and a `match:` has an `at:` to be looked for in.
|
|
1237
|
+
*
|
|
1238
|
+
* validate never reads the project: whether the file and line exist and the
|
|
1239
|
+
* match text is there is guard --check's job.
|
|
1240
|
+
*/
|
|
1241
|
+
function v106CitationForm(ast) {
|
|
1242
|
+
const results = [];
|
|
1243
|
+
const check = (owner, at, match, nodeId) => {
|
|
1244
|
+
const where = nodeId ? { node: nodeId, line: lookupLine(ast, nodeId) } : {};
|
|
1245
|
+
if (match !== undefined && at === undefined) {
|
|
1246
|
+
results.push({ rule: "V106", level: "error", message: `${owner} has match: but no at: — match is the text expected at the cited lines, so it needs at: "path:line".`, ...where });
|
|
1247
|
+
}
|
|
1248
|
+
if (at === undefined)
|
|
1249
|
+
return;
|
|
1250
|
+
const path = /^(.*?)(?::\d+)?$/.exec(at)[1];
|
|
1251
|
+
const why = path.includes(":")
|
|
1252
|
+
? `the part after ":" must be a line number, e.g. at: "pxframes.py:949"`
|
|
1253
|
+
: unsafePathReason(path.replace(/^\.\//, ""));
|
|
1254
|
+
if (why)
|
|
1255
|
+
results.push({ rule: "V106", level: "error", message: `${owner} at: "${at}" is not a project-relative "path" or "path:line" — ${why}.`, ...where });
|
|
1256
|
+
};
|
|
1257
|
+
for (const node of ast.nodes) {
|
|
1258
|
+
if (node.type !== "gate")
|
|
1259
|
+
continue;
|
|
1260
|
+
const gate = node;
|
|
1261
|
+
check(`Gate "${gate.id}"`, gate.at, gate.match, gate.id);
|
|
1262
|
+
}
|
|
1263
|
+
for (const edge of ast.edges)
|
|
1264
|
+
check(`Edge ${edge.from} -> ${edge.to}`, edge.at, undefined);
|
|
1265
|
+
return results;
|
|
1266
|
+
}
|
|
1267
|
+
/** Claude Code's event name for an .at hook event (AgentStop is Stop). */
|
|
1268
|
+
const hookEvent = (on) => (on === "AgentStop" ? "Stop" : on);
|
|
1269
|
+
/**
|
|
1270
|
+
* V107: a matcher Claude Code would never match, and an `if:` it would never read.
|
|
1271
|
+
*
|
|
1272
|
+
* Matchers are exact names unless they hold a regex character, and are tested
|
|
1273
|
+
* against the tool name alone (hooks docs, checked 2026-11-10). So
|
|
1274
|
+
* `Bash(rm -rf *)` (N30), the dotted `mcp.chrome.*` and the bare server
|
|
1275
|
+
* `mcp__chrome` never match anything, and a regex that does not compile never
|
|
1276
|
+
* matches. `if:` is read on tool events only; elsewhere the hook never runs.
|
|
1277
|
+
*/
|
|
1278
|
+
function v107MatcherForm(ast) {
|
|
1279
|
+
const results = [];
|
|
1280
|
+
for (const { hook, where: name, agent: node } of allHooks(ast)) {
|
|
1281
|
+
const owner = `Hook "${name}"`;
|
|
1282
|
+
const where = node ? { node, line: lookupLine(ast, node) } : {};
|
|
1283
|
+
const event = hookEvent(hook.on);
|
|
1284
|
+
const why = matcherProblem(event, hook.matcher);
|
|
1285
|
+
if (why)
|
|
1286
|
+
results.push({ rule: "V107", level: "error", message: `${owner} matcher ${why}.`, ...where });
|
|
1287
|
+
if (hook.if && !TOOL_EVENTS.has(event)) {
|
|
1288
|
+
results.push({ rule: "V107", level: "error", message: `${owner} has if: "${hook.if}" on ${hook.on}, which is not a tool event, so Claude Code never runs the hook; if: is read on ${[...TOOL_EVENTS].join(", ")}.`, ...where });
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
return results;
|
|
1292
|
+
}
|
|
1293
|
+
/**
|
|
1294
|
+
* V108: a hook whose run: exits with a code that does not block (N29).
|
|
1295
|
+
* Only exit 2 blocks; exit 1 is a non-blocking error and the action goes ahead.
|
|
1296
|
+
*/
|
|
1297
|
+
function v108ExitCode(ast) {
|
|
1298
|
+
const results = [];
|
|
1299
|
+
for (const { hook, where: name, agent: node } of allHooks(ast)) {
|
|
1300
|
+
const owner = `Hook "${name}"`;
|
|
1301
|
+
if ((hook.type ?? "command") !== "command")
|
|
1302
|
+
continue;
|
|
1303
|
+
const code = /^\s*exit\s+(\d+)\s*$/.exec(hook.run ?? "")?.[1];
|
|
1304
|
+
if (code === undefined || code === "0" || code === "2")
|
|
1305
|
+
continue;
|
|
1306
|
+
results.push({ rule: "V108", level: "warning", message: `${owner} run: "exit ${code}" does not block: only exit 2 blocks, so the action goes ahead. Write exit 2 to refuse.`, ...(node ? { node, line: lookupLine(ast, node) } : {}) });
|
|
1307
|
+
}
|
|
1308
|
+
return results;
|
|
1309
|
+
}
|
|
1310
|
+
/**
|
|
1311
|
+
* V109: a refuse hook that guards a server but misses one of its tools.
|
|
1312
|
+
* The tools are the ones the topology names; `validate --inventory` adds the
|
|
1313
|
+
* tool names the inventory lists.
|
|
1314
|
+
*/
|
|
1315
|
+
function v109MatcherGaps(ast) {
|
|
1316
|
+
return matcherGaps(ast).map((g) => ({
|
|
1317
|
+
rule: "V109",
|
|
1318
|
+
level: "warning",
|
|
1319
|
+
message: `Hook "${g.hook}" declares strength: refuse and guards server ${g.server}, but its matcher does not match ${g.tool}, so that tool is not refused.`,
|
|
1320
|
+
}));
|
|
1321
|
+
}
|
|
1322
|
+
/**
|
|
1323
|
+
* V110: a gate before a script step that has nothing to check.
|
|
1324
|
+
*
|
|
1325
|
+
* Such a gate compiles to before-action.sh, which refuses the step until the
|
|
1326
|
+
* ledger shows the gate's `after:` step ok, or until the gate's `run:` passes.
|
|
1327
|
+
* With neither, the guard has nothing to look at and the step is never
|
|
1328
|
+
* refused, so the gate reads as a guard and guards nothing.
|
|
1329
|
+
*/
|
|
1330
|
+
function v110ActionGateChecksNothing(ast) {
|
|
1331
|
+
const results = [];
|
|
1332
|
+
for (const node of ast.nodes) {
|
|
1333
|
+
if (node.type !== "gate")
|
|
1334
|
+
continue;
|
|
1335
|
+
const gate = node;
|
|
1336
|
+
if (gate.behavior === "advisory" || guardedActions(ast, gate).length === 0)
|
|
1337
|
+
continue;
|
|
1338
|
+
if (gateLedger(ast, gate) || scriptNameFromRun(gate.run))
|
|
1339
|
+
continue;
|
|
1340
|
+
results.push({
|
|
1341
|
+
rule: "V110",
|
|
1342
|
+
level: "warning",
|
|
1343
|
+
message: `Gate "${gate.id}" stands before a script step but has no ledger and no run:, so there is nothing to check and the step is never refused. Declare a records { } block and a ledger:, or give the gate a run: script`,
|
|
1344
|
+
node: gate.id,
|
|
1345
|
+
line: lookupLine(ast, gate.id),
|
|
1346
|
+
});
|
|
1347
|
+
}
|
|
1348
|
+
return results;
|
|
1349
|
+
}
|
|
1350
|
+
/**
|
|
1351
|
+
* V111: an action's `unit-from` is a regex with a capture group.
|
|
1352
|
+
* The unit is the first group; without one the guard cannot name the unit,
|
|
1353
|
+
* and a regex that does not compile would make the generated script fail on
|
|
1354
|
+
* every command.
|
|
1355
|
+
*/
|
|
1356
|
+
function v111UnitFromRegex(ast) {
|
|
1357
|
+
const results = [];
|
|
1358
|
+
for (const node of ast.nodes) {
|
|
1359
|
+
if (node.type !== "action")
|
|
1360
|
+
continue;
|
|
1361
|
+
const action = node;
|
|
1362
|
+
if (action.unitFrom === undefined)
|
|
1363
|
+
continue;
|
|
1364
|
+
let problem = null;
|
|
1365
|
+
try {
|
|
1366
|
+
const groups = new RegExp(`${action.unitFrom}|`).exec("").length - 1;
|
|
1367
|
+
if (groups < 1)
|
|
1368
|
+
problem = "it has no capture group, so no unit can be read from the command (wrap the unit in parentheses)";
|
|
1369
|
+
}
|
|
1370
|
+
catch (e) {
|
|
1371
|
+
problem = `it is not a valid regex (${e.message})`;
|
|
1372
|
+
}
|
|
1373
|
+
if (problem) {
|
|
1374
|
+
results.push({
|
|
1375
|
+
rule: "V111",
|
|
1376
|
+
level: "error",
|
|
1377
|
+
message: `Action "${action.id}" has unit-from "${action.unitFrom}": ${problem}`,
|
|
1378
|
+
node: action.id,
|
|
1379
|
+
line: lookupLine(ast, action.id),
|
|
1380
|
+
});
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
return results;
|
|
1384
|
+
}
|
|
1385
|
+
/**
|
|
1386
|
+
* V112: ledgers resolve and their paths are safe.
|
|
1387
|
+
* A gate's `ledger:` names a declared record; a record path is project-relative
|
|
1388
|
+
* (`{unit}` allowed); and a gate before a script step that needs a ledger but
|
|
1389
|
+
* names none is only unambiguous when the topology declares exactly one record.
|
|
1390
|
+
*/
|
|
1391
|
+
function v112Ledgers(ast) {
|
|
1392
|
+
const results = [];
|
|
1393
|
+
const records = ast.records ?? [];
|
|
1394
|
+
const err = (message, node) => results.push({ rule: "V112", level: "error", message, ...(node ? { node, line: lookupLine(ast, node) } : {}) });
|
|
1395
|
+
for (const r of records) {
|
|
1396
|
+
const why = unsafePathReason(r.path.replace(/\{unit\}/g, "unit").replace(/^\.\//, ""));
|
|
1397
|
+
if (why)
|
|
1398
|
+
err(`Record "${r.id}" has path "${r.path}", which is unsafe: ${why}`);
|
|
1399
|
+
}
|
|
1400
|
+
for (const node of ast.nodes) {
|
|
1401
|
+
if (node.type !== "gate")
|
|
1402
|
+
continue;
|
|
1403
|
+
const gate = node;
|
|
1404
|
+
if (gate.ledger) {
|
|
1405
|
+
if (!records.some((r) => r.id === gate.ledger)) {
|
|
1406
|
+
err(`Gate "${gate.id}" has ledger: ${gate.ledger}, but no record of that name is declared (records: ${records.map((r) => r.id).join(", ") || "none"})`, gate.id);
|
|
1407
|
+
}
|
|
1408
|
+
continue;
|
|
1409
|
+
}
|
|
1410
|
+
if (records.length > 1 && guardedActions(ast, gate).length > 0 && !scriptNameFromRun(gate.run)) {
|
|
1411
|
+
err(`Gate "${gate.id}" stands before a script step and names no ledger, and ${records.length} records are declared (${records.map((r) => r.id).join(", ")}), so it is unclear which one to read. Add ledger: <record id>`, gate.id);
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
return results;
|
|
1415
|
+
}
|
|
1174
1416
|
/**
|
|
1175
1417
|
* V98: a block that belongs inside a container is not written beside it.
|
|
1176
1418
|
*
|
|
@@ -1351,6 +1593,9 @@ function v25BounceBackAdvisory(ast) {
|
|
|
1351
1593
|
const gate = node;
|
|
1352
1594
|
if (gate.onFail !== "bounce-back")
|
|
1353
1595
|
continue;
|
|
1596
|
+
// A gate before an action with commands is compiled (before-action.sh).
|
|
1597
|
+
if (guardedActions(ast, gate).length > 0)
|
|
1598
|
+
continue;
|
|
1354
1599
|
if (gate.after && gateAnchors(gate, "after").every((a) => registeredIds.has(a))) {
|
|
1355
1600
|
// Agent/group target — enforceable on claude-code via SubagentStop. No warning.
|
|
1356
1601
|
continue;
|
|
@@ -3347,6 +3592,15 @@ export function validate(ast) {
|
|
|
3347
3592
|
...v101RunMode(ast),
|
|
3348
3593
|
...v102KnownNames(ast),
|
|
3349
3594
|
...v103BehaviorValue(ast),
|
|
3595
|
+
...v104StrengthWords(ast),
|
|
3596
|
+
...v105GuardResolves(ast),
|
|
3597
|
+
...v106CitationForm(ast),
|
|
3598
|
+
...v107MatcherForm(ast),
|
|
3599
|
+
...v108ExitCode(ast),
|
|
3600
|
+
...v109MatcherGaps(ast),
|
|
3601
|
+
...v110ActionGateChecksNothing(ast),
|
|
3602
|
+
...v111UnitFromRegex(ast),
|
|
3603
|
+
...v112Ledgers(ast),
|
|
3350
3604
|
...v25BounceBackAdvisory(ast),
|
|
3351
3605
|
...v26ActionKindEnum(ast),
|
|
3352
3606
|
...v27AgentPermissionsEnum(ast),
|