@clawdreyhepburn/carapace 1.0.7 → 1.0.9

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/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.8] - 2026-07-13
4
+
5
+ ### Fixed
6
+ - **Plugin never activated at boot (manifest gap).** `openclaw.plugin.json` was missing
7
+ `activation.onStartup` and a `hooks` declaration, so OpenClaw never invoked Carapace's
8
+ `register()` at gateway start — the `before_tool_call` Cedar hook was never installed and
9
+ the boot line showed every other plugin but not Carapace. Even though the plugin reported
10
+ `enabled`, it was silently enforcing nothing. Added `activation.onStartup: true`,
11
+ `hooks: ["before_tool_call"]`, and a `contracts.tools` list; synced manifest version to the
12
+ package version (was stale at 1.0.5).
13
+ - **Policies added/edited after boot were never enforced until a full restart.** The Cedar
14
+ engine loaded the policy directory only once at init; adding a `.cedar` file later left the
15
+ live engine at 0 policies, and the allow-all short-circuit then passed everything through.
16
+ `carapace verify` (a fresh CLI process) would say "all policies verified" while the running
17
+ gateway enforced none — a dangerous gap for a security ceiling. Added `reloadIfChanged()`:
18
+ the `before_tool_call` hook now cheaply re-scans the policy dir (dir + per-file mtime/count
19
+ signature) and rebuilds Cedarling when the on-disk policy set changes, with no restart.
20
+ New `test/policy-reload.test.ts` covers add/no-op/delete/enforce-after-add.
21
+
3
22
  ## [1.0.7] - 2026-07-13
4
23
 
5
24
  ### Fixed
package/README.md CHANGED
@@ -250,6 +250,13 @@ permit(principal is Jans::Workload, action == Jans::Action::"call_api", resource
250
250
  forbid(principal, action == Jans::Action::"call_api", resource == Jans::API::"pastebin.com");
251
251
  ```
252
252
 
253
+ > 📄 **One file or many — your choice.** A `.cedar` file may contain a single
254
+ > statement or many; Carapace splits multi-statement files into individual
255
+ > policy-store entries automatically, so the example above works as one file.
256
+ > Single-statement files keep their bare filename as the policy id; each
257
+ > statement in a multi-statement file gets an ordinal suffix
258
+ > (`policies-0`, `policies-1`, …).
259
+
253
260
  > 🔒 **Want the full security walkthrough?** See the [Security Hardening Guide](docs/SECURITY.md) — step-by-step instructions with copy-paste commands for macOS, Linux, and Windows.
254
261
  >
255
262
  > 📖 **Want more policy examples?** See [Recommended Policies](docs/RECOMMENDED-POLICIES.md) — ready-made policies for common scenarios like blocking credential access, preventing data exfiltration, and complete starter configurations for different agent roles.
@@ -26,6 +26,8 @@ export declare class CedarlingEngine {
26
26
  private policies;
27
27
  private schemaJson;
28
28
  private schemaRaw;
29
+ private lastPolicyMtimeMs;
30
+ private reloadInFlight;
29
31
  constructor(opts: CedarlingEngineOpts);
30
32
  init(): Promise<void>;
31
33
  /**
@@ -58,6 +60,18 @@ export declare class CedarlingEngine {
58
60
  effect: string;
59
61
  raw: string;
60
62
  }>;
63
+ /**
64
+ * Compute the newest mtime (ms) across *.cedar files in the policy dir, plus
65
+ * a count so that deletions are also detected (count change flips the key).
66
+ */
67
+ private policyDirSignature;
68
+ /**
69
+ * Re-scan the policy directory and rebuild the Cedarling instance if the
70
+ * on-disk policy set changed since the last load. Cheap when nothing
71
+ * changed (a directory stat + per-file stat). This closes the gap where
72
+ * policies added/edited after boot were never enforced until a restart.
73
+ */
74
+ reloadIfChanged(): Promise<void>;
61
75
  getSchema(): CedarSchemaInfo;
62
76
  saveSchema(raw: string): void;
63
77
  verify(): Promise<VerifyResult>;
@@ -5,11 +5,12 @@
5
5
  * JWT validation, and the Policy Store format. Falls back to the
6
6
  * homebrew engine if WASM loading fails.
7
7
  */
8
- import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, unlinkSync } from "node:fs";
8
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, unlinkSync, statSync } from "node:fs";
9
9
  import { join } from "node:path";
10
10
  import { homedir } from "node:os";
11
11
  import { fileURLToPath } from "node:url";
12
12
  import { dirname } from "node:path";
13
+ import { splitCedarStatements, statementId } from "./policy-splitter.js";
13
14
  export class CedarlingEngine {
14
15
  policyDir;
15
16
  defaultPolicy;
@@ -24,6 +25,11 @@ export class CedarlingEngine {
24
25
  policies = new Map();
25
26
  schemaJson = null;
26
27
  schemaRaw = "";
28
+ // Newest policy-file mtime (ms) seen at last load. Used to detect on-disk
29
+ // policy changes and hot-reload without a full gateway restart.
30
+ lastPolicyMtimeMs = 0;
31
+ // Guards against overlapping async reloads.
32
+ reloadInFlight = null;
27
33
  constructor(opts) {
28
34
  this.policyDir = opts.policyDir.replace("~", homedir());
29
35
  this.defaultPolicy = opts.defaultPolicy;
@@ -43,6 +49,7 @@ export class CedarlingEngine {
43
49
  }
44
50
  // Load existing policies from disk
45
51
  this.loadPoliciesFromDisk();
52
+ this.lastPolicyMtimeMs = (() => { const s = this.policyDirSignature(); return s.maxMtimeMs + s.count; })();
46
53
  // Generate default schema if none exists
47
54
  const schemaPath = join(this.policyDir, "schema.json");
48
55
  if (!existsSync(schemaPath)) {
@@ -206,6 +213,61 @@ export class CedarlingEngine {
206
213
  getPolicies() {
207
214
  return [...this.policies.entries()].map(([id, p]) => ({ id, ...p }));
208
215
  }
216
+ /**
217
+ * Compute the newest mtime (ms) across *.cedar files in the policy dir, plus
218
+ * a count so that deletions are also detected (count change flips the key).
219
+ */
220
+ policyDirSignature() {
221
+ if (!existsSync(this.policyDir))
222
+ return { maxMtimeMs: 0, count: 0 };
223
+ let maxMtimeMs = 0;
224
+ let count = 0;
225
+ for (const file of readdirSync(this.policyDir)) {
226
+ if (!file.endsWith(".cedar"))
227
+ continue;
228
+ count++;
229
+ try {
230
+ const st = statSync(join(this.policyDir, file));
231
+ if (st.mtimeMs > maxMtimeMs)
232
+ maxMtimeMs = st.mtimeMs;
233
+ }
234
+ catch {
235
+ // file vanished mid-scan; ignore
236
+ }
237
+ }
238
+ return { maxMtimeMs, count };
239
+ }
240
+ /**
241
+ * Re-scan the policy directory and rebuild the Cedarling instance if the
242
+ * on-disk policy set changed since the last load. Cheap when nothing
243
+ * changed (a directory stat + per-file stat). This closes the gap where
244
+ * policies added/edited after boot were never enforced until a restart.
245
+ */
246
+ async reloadIfChanged() {
247
+ const sig = this.policyDirSignature();
248
+ // Encode count into the comparison so additions AND deletions trigger reload.
249
+ const signatureMs = sig.maxMtimeMs + sig.count;
250
+ if (signatureMs === this.lastPolicyMtimeMs)
251
+ return;
252
+ if (this.reloadInFlight)
253
+ return this.reloadInFlight;
254
+ this.reloadInFlight = (async () => {
255
+ try {
256
+ const before = this.policies.size;
257
+ this.loadPoliciesFromDisk();
258
+ await this.rebuildCedarling();
259
+ this.lastPolicyMtimeMs = signatureMs;
260
+ this.logger.info(`Cedar policies reloaded from disk: ${before} → ${this.policies.size} policies`);
261
+ }
262
+ catch (err) {
263
+ this.logger.warn(`Cedar policy reload failed: ${err?.message ?? String(err)}`);
264
+ }
265
+ finally {
266
+ this.reloadInFlight = null;
267
+ }
268
+ })();
269
+ return this.reloadInFlight;
270
+ }
209
271
  getSchema() {
210
272
  return {
211
273
  ...this.parseSchemaForGui(this.schemaRaw),
@@ -365,9 +427,20 @@ export class CedarlingEngine {
365
427
  continue;
366
428
  const path = join(this.policyDir, file);
367
429
  const raw = readFileSync(path, "utf-8");
368
- const id = file.replace(".cedar", "");
369
- const effect = raw.trimStart().startsWith("forbid") ? "forbid" : "permit";
370
- this.policies.set(id, { effect, raw });
430
+ const baseId = file.replace(".cedar", "");
431
+ // A .cedar file may contain multiple statements. Cedarling's policy
432
+ // store requires ONE statement per entry, so split and register each
433
+ // statement separately (see policy-splitter.ts).
434
+ const stmts = splitCedarStatements(raw);
435
+ if (stmts.length === 0) {
436
+ // Preserve prior behavior for empty / comment-only files: skip.
437
+ continue;
438
+ }
439
+ for (const stmt of stmts) {
440
+ const id = statementId(baseId, stmt.index, stmts.length);
441
+ // Re-terminate the statement with a semicolon for the policy store.
442
+ this.policies.set(id, { effect: stmt.effect, raw: `${stmt.text};` });
443
+ }
371
444
  }
372
445
  }
373
446
  writePolicyFile(id, raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"cedar-engine-cedarling.js","sourceRoot":"","sources":["../src/cedar-engine-cedarling.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,MAAM,OAAO,eAAe;IAClB,SAAS,CAAS;IAClB,aAAa,CAA2B;IACxC,YAAY,CAAU;IACtB,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,eAAe,CAAS;IAEhC,kBAAkB;IACV,SAAS,GAA6B,IAAI,CAAC;IAC3C,UAAU,GAAyB,IAAI,CAAC;IAEhD,qEAAqE;IAC7D,QAAQ,GAAiD,IAAI,GAAG,EAAE,CAAC;IACnE,UAAU,GAAQ,IAAI,CAAC;IACvB,SAAS,GAAW,EAAE,CAAC;IAE/B,YAAY,IAAyB;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+DAA+D,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,yCAAyC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAClD,CAAC;QAED,4BAA4B;QAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,iCAAiC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa;YAC9D,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CACtD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAAqB;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,4DAA4D;YAC5D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS;iBAClC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACrB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAErB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ;iBAChC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACrB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAErB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM;iBAC9B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACrB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAErB,yDAAyD;YACzD,iDAAiD;YACjD,IAAI,kBAAkB,GAAG,MAAM,CAAC;YAChC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC/D,IAAI,SAAS;gBAAE,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;gBACrD,UAAU,EAAE;oBACV;wBACE,oBAAoB,EAAE;4BACpB,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE;4BACzD,EAAE,EAAE,WAAW;yBAChB;wBACD,IAAI,EAAE,WAAW;qBAClB;iBACF;gBACD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,cAAc,UAAU,GAAG;gBACpD,QAAQ,EAAE;oBACR,oBAAoB,EAAE;wBACpB,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,kBAAkB,EAAE;wBACvD,EAAE,EAAE,UAAU;qBACf;oBACD,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;iBAC3B;gBACD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;aAC/B,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAEpD,sCAAsC;YACtC,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC1B,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAQ,EAAE,CAAC;oBACpF,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC;oBACrC,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;wBACjB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,QAA4B,EAAE,OAAO,EAAE,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,oBAAoB,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,aAAqB,EAAE,eAAuB,MAAM,EAAE,SAAiB,WAAW;QAC/F,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,2BAA2B,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,kBAAkB,IAAI,CAAC,SAAS,cAAc,MAAM,qBAAqB,IAAI,CAAC,SAAS,KAAK,YAAY,MAAM,aAAa,OAAO,CAAC;QAEjN,MAAM,SAAS,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEjC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,YAAY,KAAK,aAAa,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,aAAqB,EAAE,eAAuB,MAAM,EAAE,SAAiB,WAAW;QAChG,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;QACjE,MAAM,GAAG,GAAG,sCAAsC,IAAI,CAAC,SAAS,cAAc,MAAM,qBAAqB,IAAI,CAAC,SAAS,KAAK,YAAY,MAAM,aAAa,OAAO,CAAC;QAEnK,MAAM,QAAQ,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,YAAY,KAAK,aAAa,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,mCAAmC;IACnC,UAAU,CAAC,aAAqB;QAC9B,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IACD,WAAW,CAAC,aAAqB;QAC/B,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,aAAqB;QACjC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,oDAAoD;YACpD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;YAC/D,qEAAqE;YACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAElD,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;gBAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;oBAAE,SAAS,GAAG,IAAI,CAAC;gBACjD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;oBAAE,SAAS,GAAG,IAAI,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,EAAU,EAAE,GAAW;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,SAAS;QACP,OAAO;YACL,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;YACzC,GAAG,EAAE,IAAI,CAAC,SAAS;SACpB,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,CAAC,2CAA2C,CAAC;gBACrD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,8DAA8D;QAC9D,IAAI,CAAC;YACH,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;oBACtC,UAAU,EAAE;wBACV;4BACE,oBAAoB,EAAE;gCACpB,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE;gCACzD,EAAE,EAAE,kBAAkB;6BACvB;yBACF;qBACF;oBACD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,cAAc,MAAM,GAAG;oBAChD,QAAQ,EAAE;wBACR,oBAAoB,EAAE;4BACpB,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;4BAC5C,EAAE,EAAE,kBAAkB;yBACvB;qBACF;oBACD,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAClE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8BAA8B;IAEtB,KAAK,CAAC,QAAQ;QACpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QAEtB,uBAAuB;QACvB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEzC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG;gBACb,0BAA0B,EAAE,UAAU;gBACtC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;gBACzD,kBAAkB,EAAE,KAAK;gBACzB,oBAAoB,EAAE,UAAU;gBAChC,wBAAwB,EAAE,SAAS;gBACnC,4BAA4B,EAAE,UAAU;gBACxC,4CAA4C,EAAE,CAAC,OAAO,CAAC;gBACvD,6BAA6B,EAAE,QAAQ;gBACvC,0BAA0B,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE;gBACxE,4CAA4C;gBAC5C,qCAAqC,EAAE;oBACrC,EAAE,EAAE;wBACF,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;qBAC5E;iBACF;aACF,CAAC;YAEF,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,4BAA4B,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,gEAAgE;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,QAAQ,GAAqC,EAAE,CAAC;QACtD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,QAAQ,CAAC,EAAE,CAAC,GAAG;gBACb,WAAW,EAAE,EAAE;gBACf,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACvC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC3D,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;YAC7E,MAAM,GAAG,GAAG,2BAA2B,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,8BAA8B,CAAC;YAC7G,QAAQ,CAAC,eAAe,CAAC,GAAG;gBAC1B,WAAW,EAAE,0BAA0B;gBACvC,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACvC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aACpD,CAAC;QACJ,CAAC;QAED,kEAAkE;QAClE,uCAAuC;QACvC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,iEAAiE,CAAC;YAC9E,QAAQ,CAAC,kBAAkB,CAAC,GAAG;gBAC7B,WAAW,EAAE,0BAA0B;gBACvC,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACvC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aACpD,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAChE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAErB,OAAO;YACL,aAAa,EAAE,QAAQ;YACvB,aAAa,EAAE;gBACb,GAAG,EAAE;oBACH,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,wDAAwD;oBACrE,QAAQ;oBACR,MAAM,EAAE,SAAS;oBACjB,eAAe,EAAE,EAAE;iBACpB;aACF;SACF,CAAC;IACJ,CAAC;IAED,0BAA0B;IAElB,oBAAoB;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO;QACxC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,EAAU,EAAE,GAAW;QAC7C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAEO,gBAAgB,CAAC,EAAU;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEO,kBAAkB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACxD,CAAC;IAEO,sBAAsB;QAC5B,OAAO;YACL,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAChB,WAAW,EAAE;oBACX,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;wBACtB,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,IAAI,EAAE;oCACJ,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;6BACF;yBACF;qBACF;oBACD,IAAI,EAAE;wBACJ,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,MAAM,EAAE;oCACN,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;gCACD,IAAI,EAAE;oCACJ,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;6BACF;yBACF;qBACF;oBACD,KAAK,EAAE;wBACL,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,OAAO,EAAE;oCACP,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;gCACD,OAAO,EAAE;oCACP,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;6BACF;yBACF;qBACF;oBACD,GAAG,EAAE;wBACH,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,GAAG,EAAE;oCACH,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;gCACD,MAAM,EAAE;oCACN,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;gCACD,MAAM,EAAE;oCACN,IAAI,EAAE,gBAAgB;oCACtB,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,KAAK;iCAChB;6BACF;yBACF;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,SAAS,EAAE;wBACT,SAAS,EAAE;4BACT,cAAc,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;4BACtC,aAAa,EAAE,CAAC,MAAM,CAAC;4BACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;yBAC5C;qBACF;oBACD,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,cAAc,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;4BACtC,aAAa,EAAE,CAAC,MAAM,CAAC;4BACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;yBAC5C;qBACF;oBACD,YAAY,EAAE;wBACZ,SAAS,EAAE;4BACT,cAAc,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;4BACtC,aAAa,EAAE,CAAC,OAAO,CAAC;4BACxB,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,IAAI,EAAE;wCACJ,IAAI,EAAE,gBAAgB;wCACtB,IAAI,EAAE,QAAQ;wCACd,QAAQ,EAAE,KAAK;qCAChB;oCACD,OAAO,EAAE;wCACP,IAAI,EAAE,gBAAgB;wCACtB,IAAI,EAAE,QAAQ;wCACd,QAAQ,EAAE,KAAK;qCAChB;iCACF;6BACF;yBACF;qBACF;oBACD,QAAQ,EAAE;wBACR,SAAS,EAAE;4BACT,cAAc,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;4BACtC,aAAa,EAAE,CAAC,KAAK,CAAC;4BACtB,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,GAAG,EAAE;wCACH,IAAI,EAAE,gBAAgB;wCACtB,IAAI,EAAE,QAAQ;wCACd,QAAQ,EAAE,KAAK;qCAChB;oCACD,MAAM,EAAE;wCACN,IAAI,EAAE,gBAAgB;wCACtB,IAAI,EAAE,QAAQ;wCACd,QAAQ,EAAE,KAAK;qCAChB;oCACD,IAAI,EAAE;wCACJ,IAAI,EAAE,gBAAgB;wCACtB,IAAI,EAAE,QAAQ;wCACd,QAAQ,EAAE,KAAK;qCAChB;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,gCAAgC;IAExB,cAAc,CAAC,OAAqB;QAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;QAChC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEpC,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,yCAAyC;YACzC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,qBAAqB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE/D,2CAA2C;YAC3C,0DAA0D;YAC1D,IAAI,sBAAsB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,SAAS;YAC1E,IAAI,mBAAmB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACpE,IAAI,qBAAqB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,SAAS;YAExE,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,SAAS;YAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACpD,IAAI,SAAS;YAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,wCAAwC;IAEhC,iBAAiB,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/D,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC,EAAE;gBAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAEtC,eAAe;YACf,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAQ,EAAE,CAAC;oBAChE,MAAM,KAAK,GAAsB,EAAE,CAAC;oBACpC,IAAI,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;wBAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAQ,EAAE,CAAC;4BACxE,KAAK,CAAC,IAAI,CAAC;gCACT,IAAI,EAAE,KAAK;gCACX,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS;gCACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK;6BAClC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,UAAU;YACV,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBACf,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAQ,EAAE,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI;wBACJ,cAAc,EAAE,GAAG,CAAC,SAAS,EAAE,cAAc,IAAI,EAAE;wBACnD,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,IAAI,EAAE;qBAClD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"cedar-engine-cedarling.js","sourceRoot":"","sources":["../src/cedar-engine-cedarling.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, unlink
8
8
  import { join } from "node:path";
9
9
  import { homedir } from "node:os";
10
10
  import { execFileSync } from "node:child_process";
11
+ import { splitCedarStatements, statementId } from "./policy-splitter.js";
11
12
  export class CedarEngine {
12
13
  policyDir;
13
14
  defaultPolicy;
@@ -311,20 +312,27 @@ export class CedarEngine {
311
312
  continue;
312
313
  const path = join(this.policyDir, file);
313
314
  const raw = readFileSync(path, "utf-8");
314
- const id = file.replace(".cedar", "");
315
- // Simple parser for our generated policies
316
- const effect = raw.trimStart().startsWith("forbid") ? "forbid" : "permit";
317
- const principalMatch = raw.match(/principal\s*==\s*([^\s,)]+)/);
318
- const actionMatch = raw.match(/action\s*==\s*([^\s,)]+)/);
319
- const resourceMatch = raw.match(/resource\s*==\s*([^\s,)]+)/);
320
- this.policies.set(id, {
321
- id,
322
- effect,
323
- principal: principalMatch?.[1],
324
- action: actionMatch?.[1],
325
- resource: resourceMatch?.[1],
326
- raw,
327
- });
315
+ const baseId = file.replace(".cedar", "");
316
+ // A .cedar file may hold multiple statements. Parse each one
317
+ // independently so a multi-statement file doesn't collapse into a
318
+ // single mis-matched policy (see policy-splitter.ts).
319
+ const stmts = splitCedarStatements(raw);
320
+ for (const stmt of stmts) {
321
+ const id = statementId(baseId, stmt.index, stmts.length);
322
+ const stmtRaw = `${stmt.text};`;
323
+ // Simple parser for our generated policies
324
+ const principalMatch = stmtRaw.match(/principal\s*==\s*([^\s,)]+)/);
325
+ const actionMatch = stmtRaw.match(/action\s*==\s*([^\s,)]+)/);
326
+ const resourceMatch = stmtRaw.match(/resource\s*==\s*([^\s,)]+)/);
327
+ this.policies.set(id, {
328
+ id,
329
+ effect: stmt.effect,
330
+ principal: principalMatch?.[1],
331
+ action: actionMatch?.[1],
332
+ resource: resourceMatch?.[1],
333
+ raw: stmtRaw,
334
+ });
335
+ }
328
336
  }
329
337
  }
330
338
  writePolicy(id, raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"cedar-engine.js","sourceRoot":"","sources":["../src/cedar-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cedar-engine.js","sourceRoot":"","sources":["../src/cedar-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoBzE,MAAM,OAAO,WAAW;IACd,SAAS,CAAS;IAClB,aAAa,CAA2B;IACxC,YAAY,CAAU;IACtB,MAAM,CAAS;IACf,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC1C,UAAU,CAAS;IAE3B,YAAY,IAAqB;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,iCAAiC;QACjC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,yCAAyC;QACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,qCAAqC;QACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,QAAQ,CAAC,IAAI,yBAAyB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,OAAqB;QACnC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAE,SAAS;YAEnD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACtC,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACvC,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACxC,CAAC;QAED,sCAAsC;QACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,aAAqB;QAC9B,MAAM,QAAQ,GAAG,eAAe,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG;;;uBAGO,aAAa;GACjC,CAAC;QAEA,4BAA4B;QAC5B,MAAM,SAAS,GAAG,gBAAgB,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC1B,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,mBAAmB;YAC9B,MAAM,EAAE,qBAAqB;YAC7B,QAAQ,EAAE,UAAU,aAAa,GAAG;YACpC,GAAG;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,aAAa,EAAE,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,aAAqB;QAC/B,MAAM,QAAQ,GAAG,gBAAgB,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG;;;uBAGO,aAAa;GACjC,CAAC;QAEA,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,eAAe,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC1B,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,qBAAqB;YAC7B,QAAQ,EAAE,UAAU,aAAa,GAAG;YACpC,GAAG;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,aAAqB;QACjC,MAAM,OAAO,GAAiB;YAC5B,SAAS,EAAE,mBAAmB;YAC9B,MAAM,EAAE,qBAAqB;YAC7B,QAAQ,EAAE,UAAU,aAAa,GAAG;SACrC,CAAC;QAEF,6CAA6C;QAC7C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAE,SAAS;YACnD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,SAAS,GAAG,IAAI,CAAC;YACjD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,SAAS,GAAG,IAAI,CAAC;QACnD,CAAC;QACD,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,kCAAkC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;QAClD,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,CAAC,6CAA6C,CAAC;gBACvD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,iDAAiD;QACjD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAC5D,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAEtC,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE;gBACzF,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;QAClD,CAAC;QAED,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YACvB,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC/B,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7C,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,EAAE,CAAC,CAAC,GAAG;SACX,CAAC,CAAC,CAAC;IACN,CAAC;IAED,oCAAoC;IACpC,UAAU,CAAC,EAAU,EAAE,GAAW;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,QAAiB,CAAC;QAC5F,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;YACpB,EAAE;YACF,MAAM;YACN,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YACxB,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YAC5B,GAAG;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,4BAA4B;IAC5B,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6DAA6D;IAC7D,SAAS;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO;YACL,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;YAC9B,GAAG;SACJ,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,UAAU,CAAC,GAAW;QACpB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAwF;QACvG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;QAEzD,IAAI,MAAM,GAAG,wBAAwB,CAAC;QACtC,MAAM,IAAI,mBAAmB,CAAC;QAC9B,MAAM,IAAI,oBAAoB,CAAC;QAC/B,MAAM,IAAI,+BAA+B,CAAC;QAC1C,MAAM,IAAI,uBAAuB,CAAC;QAClC,MAAM,IAAI,oBAAoB,CAAC;QAC/B,MAAM,IAAI,UAAU,CAAC;QAErB,MAAM,IAAI,oCAAoC,CAAC;QAC/C,MAAM,IAAI,yBAAyB,CAAC;QACpC,MAAM,IAAI,uBAAuB,CAAC;QAClC,MAAM,IAAI,kBAAkB,CAAC;QAC7B,MAAM,IAAI,4BAA4B,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC;QAErB,MAAM,IAAI,qCAAqC,CAAC;QAChD,MAAM,IAAI,yBAAyB,CAAC;QACpC,MAAM,IAAI,sBAAsB,CAAC;QACjC,MAAM,IAAI,QAAQ,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC;QAEhB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,KAAK,CAAC,MAAM,eAAe,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC;IACjG,CAAC;IAEO,iBAAiB,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,6DAA6D,CAAC;QAC/E,IAAI,CAAC,CAAC;QACN,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,MAAM,KAAK,GAAsB,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,oBAAoB,CAAC;gBACpC,IAAI,EAAE,CAAC;gBACP,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACzC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC;QAED,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,kEAAkE,CAAC;QACpF,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACV,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;aACvD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,kBAAkB;IAEV,aAAa,CAAC,MAAc,EAAE,OAAqB;QACzD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACpE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO;QAExC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAE1C,6DAA6D;YAC7D,kEAAkE;YAClE,sDAAsD;YACtD,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;gBAEhC,2CAA2C;gBAC3C,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACpE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAElE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;oBACpB,EAAE;oBACF,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;oBAC9B,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;oBACxB,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;oBAC5B,GAAG,EAAE,OAAO;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,EAAU,EAAE,GAAW;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjD,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,YAAY,CAAC,EAAU;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEO,kBAAkB;QACxB,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;CAiBlB,CAAC;QACE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACnD,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;;;;GAIrC,CAAC,CAAC;QACD,CAAC;QACD,2DAA2D;IAC7D,CAAC;CACF"}
package/dist/index.js CHANGED
@@ -122,6 +122,14 @@ export default function register(api) {
122
122
  // MCP or other tools
123
123
  context = params ? { arguments: params } : {};
124
124
  }
125
+ // Pick up policy files added/edited/removed on disk since boot without
126
+ // requiring a gateway restart. Cheap no-op when nothing changed.
127
+ if (cedar.reloadIfChanged) {
128
+ try {
129
+ await cedar.reloadIfChanged();
130
+ }
131
+ catch { /* non-fatal */ }
132
+ }
125
133
  // Short-circuit: if default policy is allow-all and no Cedar policies are loaded,
126
134
  // skip Cedar evaluation entirely (Cedar is deny-by-default with no policies)
127
135
  const effectiveDefault = config.defaultPolicy ?? "allow-all";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * policy-splitter — split a Cedar source file that may contain multiple
3
+ * statements into individual policy statements.
4
+ *
5
+ * Background
6
+ * ----------
7
+ * Cedarling's local policy store maps each policy-store entry to exactly
8
+ * ONE Cedar statement (one `permit`/`forbid` terminated by `;`). Carapace
9
+ * historically assumed one statement per `.cedar` file and base64-encoded
10
+ * the whole file into a single entry. When a user put several statements
11
+ * in one file, Cedarling parsed only the first (or errored) and silently
12
+ * dropped the rest.
13
+ *
14
+ * This splitter lets users author multi-statement files while Carapace
15
+ * still registers each statement as its own policy-store entry.
16
+ *
17
+ * The splitter is intentionally conservative: it tracks string literals,
18
+ * line/block comments, and brace/paren nesting so it only treats a `;` as
19
+ * a statement terminator when it is at the top level (not inside a
20
+ * `when { ... }` / `unless { ... }` clause or a `[ ... ]` set).
21
+ */
22
+ export interface CedarStatement {
23
+ /** The statement text, trimmed, WITHOUT a trailing semicolon. */
24
+ text: string;
25
+ /** "permit" or "forbid", derived from the leading keyword. */
26
+ effect: "permit" | "forbid";
27
+ /** 0-based index of this statement within its source file. */
28
+ index: number;
29
+ }
30
+ /**
31
+ * Split raw Cedar source into individual statements.
32
+ *
33
+ * Comments (`//` line and block comments) are preserved as leading text of
34
+ * the following statement so that annotations stay attached, but a comment
35
+ * that appears alone (no following statement) is discarded.
36
+ *
37
+ * Returns an empty array when the source contains no statements.
38
+ */
39
+ export declare function splitCedarStatements(raw: string): CedarStatement[];
40
+ /**
41
+ * Derive a stable, unique policy id for a statement within a file.
42
+ *
43
+ * Single-statement files keep their bare basename (backward compatible:
44
+ * `redteam-01.cedar` → `redteam-01`). Multi-statement files get an
45
+ * ordinal suffix (`policies` → `policies-0`, `policies-1`, ...).
46
+ */
47
+ export declare function statementId(baseId: string, index: number, total: number): string;
@@ -0,0 +1,134 @@
1
+ /**
2
+ * policy-splitter — split a Cedar source file that may contain multiple
3
+ * statements into individual policy statements.
4
+ *
5
+ * Background
6
+ * ----------
7
+ * Cedarling's local policy store maps each policy-store entry to exactly
8
+ * ONE Cedar statement (one `permit`/`forbid` terminated by `;`). Carapace
9
+ * historically assumed one statement per `.cedar` file and base64-encoded
10
+ * the whole file into a single entry. When a user put several statements
11
+ * in one file, Cedarling parsed only the first (or errored) and silently
12
+ * dropped the rest.
13
+ *
14
+ * This splitter lets users author multi-statement files while Carapace
15
+ * still registers each statement as its own policy-store entry.
16
+ *
17
+ * The splitter is intentionally conservative: it tracks string literals,
18
+ * line/block comments, and brace/paren nesting so it only treats a `;` as
19
+ * a statement terminator when it is at the top level (not inside a
20
+ * `when { ... }` / `unless { ... }` clause or a `[ ... ]` set).
21
+ */
22
+ /**
23
+ * Split raw Cedar source into individual statements.
24
+ *
25
+ * Comments (`//` line and block comments) are preserved as leading text of
26
+ * the following statement so that annotations stay attached, but a comment
27
+ * that appears alone (no following statement) is discarded.
28
+ *
29
+ * Returns an empty array when the source contains no statements.
30
+ */
31
+ export function splitCedarStatements(raw) {
32
+ const statements = [];
33
+ let buf = "";
34
+ let depth = 0; // net ( [ { nesting
35
+ let inString = false;
36
+ let stringQuote = "";
37
+ let inLineComment = false;
38
+ let inBlockComment = false;
39
+ const flush = () => {
40
+ const trimmed = buf.trim();
41
+ buf = "";
42
+ if (!trimmed)
43
+ return;
44
+ // A fragment that is only comments has no statement keyword — skip it.
45
+ if (!/\b(permit|forbid)\b/.test(stripComments(trimmed)))
46
+ return;
47
+ const effect = /^\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/|\s)*forbid\b/.test(trimmed)
48
+ ? "forbid"
49
+ : "permit";
50
+ statements.push({ text: trimmed, effect, index: statements.length });
51
+ };
52
+ for (let i = 0; i < raw.length; i++) {
53
+ const ch = raw[i];
54
+ const next = raw[i + 1];
55
+ // Terminate line comment at newline.
56
+ if (inLineComment) {
57
+ buf += ch;
58
+ if (ch === "\n")
59
+ inLineComment = false;
60
+ continue;
61
+ }
62
+ // Terminate block comment at */.
63
+ if (inBlockComment) {
64
+ buf += ch;
65
+ if (ch === "*" && next === "/") {
66
+ buf += next;
67
+ i++;
68
+ inBlockComment = false;
69
+ }
70
+ continue;
71
+ }
72
+ // Inside a string literal: only the matching quote (unescaped) ends it.
73
+ if (inString) {
74
+ buf += ch;
75
+ if (ch === "\\") {
76
+ // Copy the escaped char verbatim.
77
+ if (next !== undefined) {
78
+ buf += next;
79
+ i++;
80
+ }
81
+ continue;
82
+ }
83
+ if (ch === stringQuote)
84
+ inString = false;
85
+ continue;
86
+ }
87
+ // Not in string/comment: detect openers.
88
+ if (ch === "/" && next === "/") {
89
+ inLineComment = true;
90
+ buf += ch;
91
+ continue;
92
+ }
93
+ if (ch === "/" && next === "*") {
94
+ inBlockComment = true;
95
+ buf += ch;
96
+ continue;
97
+ }
98
+ if (ch === '"' || ch === "'") {
99
+ inString = true;
100
+ stringQuote = ch;
101
+ buf += ch;
102
+ continue;
103
+ }
104
+ if (ch === "(" || ch === "[" || ch === "{")
105
+ depth++;
106
+ else if (ch === ")" || ch === "]" || ch === "}")
107
+ depth = Math.max(0, depth - 1);
108
+ if (ch === ";" && depth === 0) {
109
+ // Top-level terminator — end of a statement.
110
+ flush();
111
+ continue;
112
+ }
113
+ buf += ch;
114
+ }
115
+ // Trailing content without a terminating ';' — still emit it if it looks
116
+ // like a statement (tolerant of files missing the final semicolon).
117
+ flush();
118
+ return statements;
119
+ }
120
+ /** Strip line + block comments from a fragment (used for keyword detection). */
121
+ function stripComments(s) {
122
+ return s.replace(/\/\/[^\n]*/g, "").replace(/\/\*[\s\S]*?\*\//g, "");
123
+ }
124
+ /**
125
+ * Derive a stable, unique policy id for a statement within a file.
126
+ *
127
+ * Single-statement files keep their bare basename (backward compatible:
128
+ * `redteam-01.cedar` → `redteam-01`). Multi-statement files get an
129
+ * ordinal suffix (`policies` → `policies-0`, `policies-1`, ...).
130
+ */
131
+ export function statementId(baseId, index, total) {
132
+ return total <= 1 ? baseId : `${baseId}-${index}`;
133
+ }
134
+ //# sourceMappingURL=policy-splitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-splitter.js","sourceRoot":"","sources":["../src/policy-splitter.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,21 @@
2
2
  "id": "carapace",
3
3
  "name": "Carapace",
4
4
  "description": "Cedar policy enforcement for agent tool access via before_tool_call hook. Your agent's exoskeleton.",
5
- "version": "1.0.5",
5
+ "version": "1.0.8",
6
+ "activation": {
7
+ "onStartup": true
8
+ },
9
+ "hooks": [
10
+ "before_tool_call"
11
+ ],
12
+ "contracts": {
13
+ "tools": [
14
+ "mcp_tools",
15
+ "mcp_call",
16
+ "carapace_exec",
17
+ "carapace_fetch"
18
+ ]
19
+ },
6
20
  "configSchema": {
7
21
  "type": "object",
8
22
  "additionalProperties": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawdreyhepburn/carapace",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Cedar policy enforcement for agent tool access via OpenClaw's before_tool_call hook.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -6,7 +6,7 @@
6
6
  * homebrew engine if WASM loading fails.
7
7
  */
8
8
 
9
- import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, unlinkSync } from "node:fs";
9
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, unlinkSync, statSync } from "node:fs";
10
10
  import { join } from "node:path";
11
11
  import { homedir } from "node:os";
12
12
  import { fileURLToPath } from "node:url";
@@ -21,6 +21,7 @@ import type {
21
21
  SchemaAttribute,
22
22
  SchemaAction,
23
23
  } from "./types.js";
24
+ import { splitCedarStatements, statementId } from "./policy-splitter.js";
24
25
 
25
26
  // Cedarling WASM types (from @janssenproject/cedarling_wasm)
26
27
  interface CedarlingInstance {
@@ -78,6 +79,12 @@ export class CedarlingEngine {
78
79
  private schemaJson: any = null;
79
80
  private schemaRaw: string = "";
80
81
 
82
+ // Newest policy-file mtime (ms) seen at last load. Used to detect on-disk
83
+ // policy changes and hot-reload without a full gateway restart.
84
+ private lastPolicyMtimeMs = 0;
85
+ // Guards against overlapping async reloads.
86
+ private reloadInFlight: Promise<void> | null = null;
87
+
81
88
  constructor(opts: CedarlingEngineOpts) {
82
89
  this.policyDir = opts.policyDir.replace("~", homedir());
83
90
  this.defaultPolicy = opts.defaultPolicy;
@@ -99,6 +106,7 @@ export class CedarlingEngine {
99
106
 
100
107
  // Load existing policies from disk
101
108
  this.loadPoliciesFromDisk();
109
+ this.lastPolicyMtimeMs = (() => { const s = this.policyDirSignature(); return s.maxMtimeMs + s.count; })();
102
110
 
103
111
  // Generate default schema if none exists
104
112
  const schemaPath = join(this.policyDir, "schema.json");
@@ -284,6 +292,57 @@ export class CedarlingEngine {
284
292
  return [...this.policies.entries()].map(([id, p]) => ({ id, ...p }));
285
293
  }
286
294
 
295
+ /**
296
+ * Compute the newest mtime (ms) across *.cedar files in the policy dir, plus
297
+ * a count so that deletions are also detected (count change flips the key).
298
+ */
299
+ private policyDirSignature(): { maxMtimeMs: number; count: number } {
300
+ if (!existsSync(this.policyDir)) return { maxMtimeMs: 0, count: 0 };
301
+ let maxMtimeMs = 0;
302
+ let count = 0;
303
+ for (const file of readdirSync(this.policyDir)) {
304
+ if (!file.endsWith(".cedar")) continue;
305
+ count++;
306
+ try {
307
+ const st = statSync(join(this.policyDir, file));
308
+ if (st.mtimeMs > maxMtimeMs) maxMtimeMs = st.mtimeMs;
309
+ } catch {
310
+ // file vanished mid-scan; ignore
311
+ }
312
+ }
313
+ return { maxMtimeMs, count };
314
+ }
315
+
316
+ /**
317
+ * Re-scan the policy directory and rebuild the Cedarling instance if the
318
+ * on-disk policy set changed since the last load. Cheap when nothing
319
+ * changed (a directory stat + per-file stat). This closes the gap where
320
+ * policies added/edited after boot were never enforced until a restart.
321
+ */
322
+ async reloadIfChanged(): Promise<void> {
323
+ const sig = this.policyDirSignature();
324
+ // Encode count into the comparison so additions AND deletions trigger reload.
325
+ const signatureMs = sig.maxMtimeMs + sig.count;
326
+ if (signatureMs === this.lastPolicyMtimeMs) return;
327
+ if (this.reloadInFlight) return this.reloadInFlight;
328
+ this.reloadInFlight = (async () => {
329
+ try {
330
+ const before = this.policies.size;
331
+ this.loadPoliciesFromDisk();
332
+ await this.rebuildCedarling();
333
+ this.lastPolicyMtimeMs = signatureMs;
334
+ this.logger.info(
335
+ `Cedar policies reloaded from disk: ${before} → ${this.policies.size} policies`,
336
+ );
337
+ } catch (err: any) {
338
+ this.logger.warn(`Cedar policy reload failed: ${err?.message ?? String(err)}`);
339
+ } finally {
340
+ this.reloadInFlight = null;
341
+ }
342
+ })();
343
+ return this.reloadInFlight;
344
+ }
345
+
287
346
  getSchema(): CedarSchemaInfo {
288
347
  return {
289
348
  ...this.parseSchemaForGui(this.schemaRaw),
@@ -457,9 +516,21 @@ export class CedarlingEngine {
457
516
  if (!file.endsWith(".cedar")) continue;
458
517
  const path = join(this.policyDir, file);
459
518
  const raw = readFileSync(path, "utf-8");
460
- const id = file.replace(".cedar", "");
461
- const effect = raw.trimStart().startsWith("forbid") ? "forbid" : "permit";
462
- this.policies.set(id, { effect, raw });
519
+ const baseId = file.replace(".cedar", "");
520
+
521
+ // A .cedar file may contain multiple statements. Cedarling's policy
522
+ // store requires ONE statement per entry, so split and register each
523
+ // statement separately (see policy-splitter.ts).
524
+ const stmts = splitCedarStatements(raw);
525
+ if (stmts.length === 0) {
526
+ // Preserve prior behavior for empty / comment-only files: skip.
527
+ continue;
528
+ }
529
+ for (const stmt of stmts) {
530
+ const id = statementId(baseId, stmt.index, stmts.length);
531
+ // Re-terminate the statement with a semicolon for the policy store.
532
+ this.policies.set(id, { effect: stmt.effect, raw: `${stmt.text};` });
533
+ }
463
534
  }
464
535
  }
465
536
 
@@ -10,6 +10,7 @@ import { join, resolve } from "node:path";
10
10
  import { homedir } from "node:os";
11
11
  import { execFileSync } from "node:child_process";
12
12
  import type { Logger, AuthzRequest, CedarDecision, VerifyResult, CedarSchemaInfo, SchemaEntity, SchemaAttribute, SchemaAction } from "./types.js";
13
+ import { splitCedarStatements, statementId } from "./policy-splitter.js";
13
14
 
14
15
  interface CedarEngineOpts {
15
16
  policyDir: string;
@@ -362,22 +363,30 @@ export class CedarEngine {
362
363
  if (!file.endsWith(".cedar")) continue;
363
364
  const path = join(this.policyDir, file);
364
365
  const raw = readFileSync(path, "utf-8");
365
- const id = file.replace(".cedar", "");
366
-
367
- // Simple parser for our generated policies
368
- const effect = raw.trimStart().startsWith("forbid") ? "forbid" : "permit";
369
- const principalMatch = raw.match(/principal\s*==\s*([^\s,)]+)/);
370
- const actionMatch = raw.match(/action\s*==\s*([^\s,)]+)/);
371
- const resourceMatch = raw.match(/resource\s*==\s*([^\s,)]+)/);
372
-
373
- this.policies.set(id, {
374
- id,
375
- effect,
376
- principal: principalMatch?.[1],
377
- action: actionMatch?.[1],
378
- resource: resourceMatch?.[1],
379
- raw,
380
- });
366
+ const baseId = file.replace(".cedar", "");
367
+
368
+ // A .cedar file may hold multiple statements. Parse each one
369
+ // independently so a multi-statement file doesn't collapse into a
370
+ // single mis-matched policy (see policy-splitter.ts).
371
+ const stmts = splitCedarStatements(raw);
372
+ for (const stmt of stmts) {
373
+ const id = statementId(baseId, stmt.index, stmts.length);
374
+ const stmtRaw = `${stmt.text};`;
375
+
376
+ // Simple parser for our generated policies
377
+ const principalMatch = stmtRaw.match(/principal\s*==\s*([^\s,)]+)/);
378
+ const actionMatch = stmtRaw.match(/action\s*==\s*([^\s,)]+)/);
379
+ const resourceMatch = stmtRaw.match(/resource\s*==\s*([^\s,)]+)/);
380
+
381
+ this.policies.set(id, {
382
+ id,
383
+ effect: stmt.effect,
384
+ principal: principalMatch?.[1],
385
+ action: actionMatch?.[1],
386
+ resource: resourceMatch?.[1],
387
+ raw: stmtRaw,
388
+ });
389
+ }
381
390
  }
382
391
  }
383
392
 
package/src/index.ts CHANGED
@@ -167,6 +167,12 @@ export default function register(api: OpenClawPluginApi) {
167
167
  context = params ? { arguments: params } : {};
168
168
  }
169
169
 
170
+ // Pick up policy files added/edited/removed on disk since boot without
171
+ // requiring a gateway restart. Cheap no-op when nothing changed.
172
+ if (cedar.reloadIfChanged) {
173
+ try { await cedar.reloadIfChanged(); } catch { /* non-fatal */ }
174
+ }
175
+
170
176
  // Short-circuit: if default policy is allow-all and no Cedar policies are loaded,
171
177
  // skip Cedar evaluation entirely (Cedar is deny-by-default with no policies)
172
178
  const effectiveDefault = config.defaultPolicy ?? "allow-all";
@@ -0,0 +1,151 @@
1
+ /**
2
+ * policy-splitter — split a Cedar source file that may contain multiple
3
+ * statements into individual policy statements.
4
+ *
5
+ * Background
6
+ * ----------
7
+ * Cedarling's local policy store maps each policy-store entry to exactly
8
+ * ONE Cedar statement (one `permit`/`forbid` terminated by `;`). Carapace
9
+ * historically assumed one statement per `.cedar` file and base64-encoded
10
+ * the whole file into a single entry. When a user put several statements
11
+ * in one file, Cedarling parsed only the first (or errored) and silently
12
+ * dropped the rest.
13
+ *
14
+ * This splitter lets users author multi-statement files while Carapace
15
+ * still registers each statement as its own policy-store entry.
16
+ *
17
+ * The splitter is intentionally conservative: it tracks string literals,
18
+ * line/block comments, and brace/paren nesting so it only treats a `;` as
19
+ * a statement terminator when it is at the top level (not inside a
20
+ * `when { ... }` / `unless { ... }` clause or a `[ ... ]` set).
21
+ */
22
+
23
+ export interface CedarStatement {
24
+ /** The statement text, trimmed, WITHOUT a trailing semicolon. */
25
+ text: string;
26
+ /** "permit" or "forbid", derived from the leading keyword. */
27
+ effect: "permit" | "forbid";
28
+ /** 0-based index of this statement within its source file. */
29
+ index: number;
30
+ }
31
+
32
+ /**
33
+ * Split raw Cedar source into individual statements.
34
+ *
35
+ * Comments (`//` line and block comments) are preserved as leading text of
36
+ * the following statement so that annotations stay attached, but a comment
37
+ * that appears alone (no following statement) is discarded.
38
+ *
39
+ * Returns an empty array when the source contains no statements.
40
+ */
41
+ export function splitCedarStatements(raw: string): CedarStatement[] {
42
+ const statements: CedarStatement[] = [];
43
+
44
+ let buf = "";
45
+ let depth = 0; // net ( [ { nesting
46
+ let inString = false;
47
+ let stringQuote = "";
48
+ let inLineComment = false;
49
+ let inBlockComment = false;
50
+
51
+ const flush = () => {
52
+ const trimmed = buf.trim();
53
+ buf = "";
54
+ if (!trimmed) return;
55
+ // A fragment that is only comments has no statement keyword — skip it.
56
+ if (!/\b(permit|forbid)\b/.test(stripComments(trimmed))) return;
57
+ const effect = /^\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/|\s)*forbid\b/.test(trimmed)
58
+ ? "forbid"
59
+ : "permit";
60
+ statements.push({ text: trimmed, effect, index: statements.length });
61
+ };
62
+
63
+ for (let i = 0; i < raw.length; i++) {
64
+ const ch = raw[i];
65
+ const next = raw[i + 1];
66
+
67
+ // Terminate line comment at newline.
68
+ if (inLineComment) {
69
+ buf += ch;
70
+ if (ch === "\n") inLineComment = false;
71
+ continue;
72
+ }
73
+
74
+ // Terminate block comment at */.
75
+ if (inBlockComment) {
76
+ buf += ch;
77
+ if (ch === "*" && next === "/") {
78
+ buf += next;
79
+ i++;
80
+ inBlockComment = false;
81
+ }
82
+ continue;
83
+ }
84
+
85
+ // Inside a string literal: only the matching quote (unescaped) ends it.
86
+ if (inString) {
87
+ buf += ch;
88
+ if (ch === "\\") {
89
+ // Copy the escaped char verbatim.
90
+ if (next !== undefined) {
91
+ buf += next;
92
+ i++;
93
+ }
94
+ continue;
95
+ }
96
+ if (ch === stringQuote) inString = false;
97
+ continue;
98
+ }
99
+
100
+ // Not in string/comment: detect openers.
101
+ if (ch === "/" && next === "/") {
102
+ inLineComment = true;
103
+ buf += ch;
104
+ continue;
105
+ }
106
+ if (ch === "/" && next === "*") {
107
+ inBlockComment = true;
108
+ buf += ch;
109
+ continue;
110
+ }
111
+ if (ch === '"' || ch === "'") {
112
+ inString = true;
113
+ stringQuote = ch;
114
+ buf += ch;
115
+ continue;
116
+ }
117
+
118
+ if (ch === "(" || ch === "[" || ch === "{") depth++;
119
+ else if (ch === ")" || ch === "]" || ch === "}") depth = Math.max(0, depth - 1);
120
+
121
+ if (ch === ";" && depth === 0) {
122
+ // Top-level terminator — end of a statement.
123
+ flush();
124
+ continue;
125
+ }
126
+
127
+ buf += ch;
128
+ }
129
+
130
+ // Trailing content without a terminating ';' — still emit it if it looks
131
+ // like a statement (tolerant of files missing the final semicolon).
132
+ flush();
133
+
134
+ return statements;
135
+ }
136
+
137
+ /** Strip line + block comments from a fragment (used for keyword detection). */
138
+ function stripComments(s: string): string {
139
+ return s.replace(/\/\/[^\n]*/g, "").replace(/\/\*[\s\S]*?\*\//g, "");
140
+ }
141
+
142
+ /**
143
+ * Derive a stable, unique policy id for a statement within a file.
144
+ *
145
+ * Single-statement files keep their bare basename (backward compatible:
146
+ * `redteam-01.cedar` → `redteam-01`). Multi-statement files get an
147
+ * ordinal suffix (`policies` → `policies-0`, `policies-1`, ...).
148
+ */
149
+ export function statementId(baseId: string, index: number, total: number): string {
150
+ return total <= 1 ? baseId : `${baseId}-${index}`;
151
+ }