@agentguard-run/spend 0.15.9 → 0.15.11

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 CHANGED
@@ -223,6 +223,35 @@ Only `InvokeModel` / `InvokeModelWithResponseStream` commands are gated; other B
223
223
 
224
224
  Python includes OpenAI, Anthropic, Bedrock, LangChain, CrewAI, and LlamaIndex integration helpers.
225
225
 
226
+ ## Spend-aware model router (removes vendor risk)
227
+
228
+ `createRouter(...)` composes the bindings, the enforcement engine, and the signed receipt chain into one call: it picks a candidate model across providers by policy, enforces the spend cap with the **same** enforcement path (block / downgrade / allow), executes it, and **fails over to the next provider** on a provider error/timeout or a cap breach on the chosen model. Every route is recorded in a signed, hash-chained routing receipt (candidates considered, winner, reason, resolved cost, fallbacks) that verifies with the existing `verifyChain`. No prompt/completion content or keys ever enter the receipt.
229
+
230
+ Selection policies: `cost` (cheapest capable first), `priority` (explicit failover order), or `capability` (filter by a capability tag, then cheapest-first).
231
+
232
+ ```ts
233
+ import OpenAI from 'openai';
234
+ import Anthropic from '@anthropic-ai/sdk';
235
+ import { createRouter } from '@agentguard-run/spend';
236
+
237
+ const router = createRouter({
238
+ candidates: [
239
+ { provider: 'anthropic', model: 'claude-sonnet-4-6', client: new Anthropic() },
240
+ { provider: 'openai', model: 'gpt-5-mini', client: new OpenAI() },
241
+ ],
242
+ policy: { mode: 'cost' }, // cheapest capable first; failover in order on error/cap
243
+ spendPolicy: policy, // your existing SpendPolicy — enforcement is REUSED, not forked
244
+ signingKeys, // same Ed25519 keys as the rest of the SDK
245
+ logStore, // routing receipts hash-chain onto the same signed log
246
+ });
247
+
248
+ const { response, chosen, reason, resolvedCents, fallbacks, routingReceipt } =
249
+ await router.route({ messages, params: { max_tokens: 1024 } });
250
+ // chosen -> { provider, model }, reason -> 'cost' | 'priority' | 'capability' | 'failover' | 'downgrade'
251
+ ```
252
+
253
+ Try it offline (mock providers, real signatures): `agentguard route-demo`.
254
+
226
255
  ## Sample receipts for outreach
227
256
 
228
257
  Generate a realistic, signed sample receipt for a named flow plus a self-contained, self-verifying HTML page — "exactly what your counterparty would get":
@@ -251,6 +280,41 @@ Note: full Bitcoin-attestation verification requires the `opentimestamps` npm pa
251
280
 
252
281
  Each signed entry carries a monotonic per-tenant sequence number. `agentguard verify` and the `agentguard serve` integrity badge flag missing sequence numbers as `possible omitted actions: sequence gap at N` — evidence that an action may have been taken around the SDK and not logged, or that a logged entry was deleted. This is detection and reporting only; it never changes spend-cap enforcement.
253
282
 
283
+ ## Multi-agent DAG trust attestation
284
+
285
+ Single receipts prove one agent's action. Real workflows are graphs: agents fan out, fan in, and hand capabilities to each other. A DAG Trust Attestation Token (TAT) is a signed receipt node that also records its parents, so a terminal agent can verify the whole causal chain before it acts. Each node carries version, timestamp, a truncated msg_hash of the screened payload, a trust score, a blocked flag, the screener id, the inferred topology (`linear` | `fan_in` | `fan_out` | `diamond`), the SHA-256 hashes of its parents, and an Ed25519 signature over the canonical serialization. It reuses the exact same signing and canonical-JSON hashing as the decision log, and it is metadata-only: no prompt, completion, key, or PII ever enters a node.
286
+
287
+ `verifyReceiptDag` checks every signature, runs Kahn's algorithm to reject any cycle (the circular-dependency-injection defense), confirms diamond branches correlate to a shared uncorrupted ancestor, and returns the minimum-of-chain trust score with the DAG depth. `gateCapability` then turns that into an authorization: higher tiers (`READ_ONLY` < `TRANSACT` < `ADMIN` < `ORCHESTRATE`) require both higher min-of-chain trust and greater depth, so an agent cannot escalate on a shallow or low-trust chain.
288
+
289
+ ```ts
290
+ import { signDagNode, verifyReceiptDag, gateCapability } from '@agentguard-run/spend';
291
+ // or the subpath: '@agentguard-run/spend/receipts/dag'
292
+
293
+ // Canonical diamond: A fans out to B and C, both fan in to terminal D.
294
+ const a = await signDagNode({ sequence: 0, privateKey, publicKey, capability: 'READ_ONLY', trustScore: 0.96,
295
+ decision: { action: 'allow', agent: 'A', step: 'ingest_invoice' } });
296
+ const b = await signDagNode({ sequence: 1, privateKey, publicKey, parents: [a], trustScore: 0.93,
297
+ decision: { action: 'allow', agent: 'B', step: 'analytics_score', ancestor: a.msgHash } });
298
+ const c = await signDagNode({ sequence: 2, privateKey, publicKey, parents: [a], trustScore: 0.88,
299
+ decision: { action: 'allow', agent: 'C', step: 'validate_payment', ancestor: a.msgHash } });
300
+ const d = await signDagNode({ sequence: 3, privateKey, publicKey, parents: [b, c], topology: 'diamond', trustScore: 0.91,
301
+ decision: { action: 'allow', agent: 'D', step: 'settle_invoice', capabilityClaim: 'payment_initiate' } });
302
+
303
+ const result = await verifyReceiptDag([a, b, c, d], publicKey);
304
+ // { valid: true, compositeTrust: 0.88, depth: 3, topologySummary: { diamond: 1, ... } }
305
+
306
+ gateCapability('TRANSACT', result).granted; // true — trust + depth clear the bar
307
+ gateCapability('ORCHESTRATE', result).granted; // false — TRUST_BELOW_THRESHOLD
308
+ ```
309
+
310
+ See it end-to-end (builds the diamond, verifies it, gates capabilities, and rejects an injected cycle):
311
+
312
+ ```bash
313
+ agentguard dag-demo
314
+ ```
315
+
316
+ For large agent swarms, `merkleRoot` / `compressReceiptDag` / `merkleInclusionProof` / `verifyInclusion` compress a DAG to a single root with per-node inclusion proofs. As with everything here, this is detection, verification, and reporting only: it never touches spend-cap enforcement.
317
+
254
318
  ## No proxy
255
319
 
256
320
  AgentGuard Spend is a library, not a gateway. It does not proxy traffic, store prompts, hold provider keys, or host policy state. The signed log lives in your storage.
@@ -0,0 +1,2 @@
1
+ export declare function runDagDemo(_argv?: string[]): Promise<number>;
2
+ //# sourceMappingURL=dag-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-demo.d.ts","sourceRoot":"","sources":["../../src/cli/dag-demo.ts"],"names":[],"mappings":"AAgDA,wBAAsB,UAAU,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2FtE"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runDagDemo = runDagDemo;
37
+ /**
38
+ * `agentguard dag-demo` — DAG Trust-Attestation Token (TAT) demo.
39
+ *
40
+ * Runs the REAL engine from src (signDagNode / verifyReceiptDag / gateCapability).
41
+ * Nothing here is mocked. It builds the canonical DIAMOND that multi-agent
42
+ * orchestration buyers need to SEE:
43
+ *
44
+ * Agent A (origin, READ_ONLY)
45
+ * / \
46
+ * Agent B (analytics) Agent C (payment)
47
+ * \ /
48
+ * Agent D (terminal, requests TRANSACT)
49
+ *
50
+ * D verifies the full DAG — every Ed25519 signature, no cycles (Kahn's
51
+ * algorithm), a shared uncorrupted ancestor (A), and the minimum-of-chain
52
+ * trust score. It is GRANTED TRANSACT (min-of-chain trust + depth clear the
53
+ * bar) but DENIED ORCHESTRATE (needs deeper chain + higher trust). Then we
54
+ * inject a cycle (A -> B -> C -> A) and show the verifier fails closed.
55
+ *
56
+ * Zero data plane: every receipt carries metadata only (step, cost, vendor).
57
+ * No prompt, completion, key, or PII ever enters a node.
58
+ *
59
+ * Patent notice: DAG Trust Attestation Tokens — Patent D (Cryptographic Security
60
+ * Architecture for Multi-Agent Pipelines), composed with the signed hash-chained
61
+ * decision log. AgentGuard® is a U.S. registered trademark (Reg. No. 8281464)
62
+ * of Dunecrest Ventures Inc.
63
+ */
64
+ const ed = __importStar(require("@noble/ed25519"));
65
+ const index_1 = require("../index");
66
+ const colors_1 = require("./colors");
67
+ const shortHash = (hex) => `${hex.slice(0, 8)}…${hex.slice(-4)}`;
68
+ const fp = (node) => node.signerFingerprint.slice(0, 10);
69
+ function line(node, label, broken = false) {
70
+ const mark = broken ? (0, colors_1.red)('✗') : (0, colors_1.green)('✓');
71
+ const name = broken ? (0, colors_1.red)(label) : (0, colors_1.bold)(label);
72
+ const meta = (0, colors_1.dim)(`cap=${node.capability} trust=${node.trustScore.toFixed(2)} topo=${node.topology} hash=${shortHash(node.entryHash)} signer=${fp(node)}`);
73
+ return ` ${mark} ${name} ${meta}`;
74
+ }
75
+ async function runDagDemo(_argv = []) {
76
+ // Customer Ed25519 signing key: generated + held in the customer runtime.
77
+ // It never leaves the process — that is the whole zero-data-plane posture.
78
+ const privateKey = ed.utils.randomSecretKey();
79
+ const publicKey = await ed.getPublicKeyAsync(privateKey);
80
+ const workflowId = 'invoice-settlement-2026-07';
81
+ console.log((0, colors_1.cyanBold)('⬡ AgentGuard® — DAG Trust-Attestation Token (TAT) demo'));
82
+ console.log((0, colors_1.dim)(`workflow ${workflowId} · canonical diamond A→(B,C)→D · zero data plane\n`));
83
+ // ── Build the diamond: A fans out to B and C, both fan in to D ─────────────
84
+ // Decisions carry ONLY metadata. Topology is inferred from parent count.
85
+ const a = await (0, index_1.signDagNode)({
86
+ sequence: 0, workflowId, privateKey, publicKey,
87
+ capability: 'READ_ONLY', trustScore: 0.96,
88
+ decision: { action: 'allow', agent: 'A', step: 'ingest_invoice', model: 'gpt-5-mini', costCents: 3 },
89
+ });
90
+ // B and C both correlate to A by embedding A's msgHash (shared-ancestor proof).
91
+ const b = await (0, index_1.signDagNode)({
92
+ sequence: 1, workflowId, privateKey, publicKey, parents: [a],
93
+ capability: 'READ_ONLY', trustScore: 0.93,
94
+ decision: { action: 'allow', agent: 'B', step: 'analytics_score', ancestor: a.msgHash, costCents: 4 },
95
+ });
96
+ const c = await (0, index_1.signDagNode)({
97
+ sequence: 2, workflowId, privateKey, publicKey, parents: [a],
98
+ capability: 'TRANSACT', trustScore: 0.88,
99
+ decision: { action: 'allow', agent: 'C', step: 'validate_payment', ancestor: a.msgHash, vendor: 'acme-supplies', costCents: 5 },
100
+ });
101
+ const d = await (0, index_1.signDagNode)({
102
+ sequence: 3, workflowId, privateKey, publicKey, parents: [b, c], topology: 'diamond',
103
+ capability: 'TRANSACT', trustScore: 0.91,
104
+ decision: { action: 'allow', agent: 'D', step: 'settle_invoice', capabilityClaim: 'payment_initiate', vendor: 'acme-supplies', amountUsd: 240 },
105
+ });
106
+ const diamond = [a, b, c, d];
107
+ console.log((0, colors_1.bold)('1) The signed attestation diamond'));
108
+ console.log(line(a, 'A ingest_invoice (origin)'));
109
+ console.log((0, colors_1.dim)(' ├──────────────┐'));
110
+ console.log(line(b, 'B analytics_score (fan-out)'));
111
+ console.log(line(c, 'C validate_payment (fan-out)'));
112
+ console.log((0, colors_1.dim)(' └──────────────┘'));
113
+ console.log(line(d, 'D settle_invoice (fan-in → diamond, requests TRANSACT)'));
114
+ // ── D verifies the full DAG ───────────────────────────────────────────────
115
+ const v = await (0, index_1.verifyReceiptDag)(diamond, publicKey);
116
+ console.log((0, colors_1.bold)('\n2) Terminal agent D verifies the DAG'));
117
+ console.log(` signatures + Kahn topo-sort (no cycles) + shared uncorrupted ancestor A`);
118
+ console.log(` verify: ${v.valid ? (0, colors_1.greenBold)('VALID') : (0, colors_1.redBold)('INVALID ' + (v.reason ?? ''))}` +
119
+ ` min-of-chain trust=${(0, colors_1.cyan)(v.compositeTrust.toFixed(2))} depth=${(0, colors_1.cyan)(String(v.depth))}` +
120
+ ` diamonds=${(0, colors_1.cyan)(String(v.topologySummary.diamond))}`);
121
+ // ── Capability gate: TRANSACT granted, ORCHESTRATE denied ─────────────────
122
+ console.log((0, colors_1.bold)('\n3) Attestation-gated capability escalation'));
123
+ const transact = (0, index_1.gateCapability)('TRANSACT', v);
124
+ const orchestrate = (0, index_1.gateCapability)('ORCHESTRATE', v);
125
+ console.log(` gate(TRANSACT): ${transact.granted ? (0, colors_1.greenBold)('GRANTED') : (0, colors_1.redBold)('DENIED — ' + (transact.reason ?? ''))}` +
126
+ (0, colors_1.dim)(' (needs trust≥0.72, depth≥1)'));
127
+ console.log(` → ${transact.granted ? (0, colors_1.green)('settle_invoice fires: $240 to acme-supplies') : (0, colors_1.red)('payment blocked')}`);
128
+ console.log(` gate(ORCHESTRATE): ${orchestrate.granted ? (0, colors_1.greenBold)('GRANTED') : (0, colors_1.redBold)('DENIED — ' + (orchestrate.reason ?? ''))}` +
129
+ (0, colors_1.dim)(' (needs trust≥0.9, depth≥3)'));
130
+ console.log(` → ${orchestrate.granted ? (0, colors_1.red)('escalation allowed (SHOULD NOT HAPPEN)') : (0, colors_1.green)('escalation blocked: chain not deep/trusted enough')}`);
131
+ // ── Cycle rejection: inject A -> B -> C -> A, fail closed ──────────────────
132
+ console.log((0, colors_1.bold)('\n4) Circular-dependency-injection defense'));
133
+ console.log((0, colors_1.dim)(' Inject a cycle A → B → C → A (attacker forges a back-edge).'));
134
+ const cyclicA = { ...a, parents: [c.entryHash] }; // A now depends on C → cycle
135
+ const cyclic = await (0, index_1.verifyReceiptDag)([cyclicA, b, c], publicKey);
136
+ console.log(` verify: ${cyclic.valid ? (0, colors_1.redBold)('VALID (SHOULD NOT HAPPEN)') : (0, colors_1.greenBold)('INVALID — ' + (cyclic.reason ?? ''))}`);
137
+ // ── Self-check: doubles as a smoke test ───────────────────────────────────
138
+ console.log((0, colors_1.bold)('\nResult'));
139
+ const ok = v.valid && v.compositeTrust === 0.88 && v.depth === 3 && v.topologySummary.diamond === 1 &&
140
+ transact.granted && !orchestrate.granted && orchestrate.reason === 'TRUST_BELOW_THRESHOLD' &&
141
+ !cyclic.valid && cyclic.reason === 'CYCLE_DETECTED';
142
+ if (!ok) {
143
+ console.log((0, colors_1.redBold)('✗ invariant failed'));
144
+ return 1;
145
+ }
146
+ console.log((0, colors_1.greenBold)('✓ diamond verifies · TRANSACT granted · ORCHESTRATE denied · cycle rejected'));
147
+ console.log((0, colors_1.dim)(' Every receipt is metadata-only and Ed25519-signed in-process. No prompt, key, or PII left the runtime.'));
148
+ console.log((0, colors_1.dim)(' A proxy sees single calls; only AgentGuard sees the signed cross-agent causal chain.'));
149
+ return 0;
150
+ }
151
+ //# sourceMappingURL=dag-demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-demo.js","sourceRoot":"","sources":["../../src/cli/dag-demo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2DH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GlF"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8DH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAqHlF"}
package/dist/cli/main.js CHANGED
@@ -59,6 +59,8 @@ commands:
59
59
  config Configure local CLI preferences.
60
60
  tips Show AgentGuard usage tips.
61
61
  demo Run a deterministic simulation with a real cryptographic receipt.
62
+ route-demo Demo the spend-aware model router: cost-first, failover, downgrade + signed receipt.
63
+ dag-demo Build + verify a multi-agent attestation diamond (TAT) with capability gating.
62
64
  sample Generate a signed sample receipt + self-verifying HTML for a named flow.
63
65
  anchor Externally timestamp the chain head via a public calendar (opt-in).
64
66
  verify Verify a signed AgentGuard receipt.
@@ -86,6 +88,7 @@ examples:
86
88
  agentguard run coding-agent-overnight --inputs '{"task_id":"demo"}'
87
89
  agentguard deploy --config ./outcome.yaml
88
90
  agentguard demo --emit-receipt-json ./demo-receipt.json
91
+ agentguard dag-demo
89
92
  agentguard verify --trace latest
90
93
 
91
94
  verify: https://agentguard.run/verify
@@ -145,6 +148,14 @@ async function main(argv = process.argv.slice(2)) {
145
148
  const { runDemo } = await Promise.resolve().then(() => __importStar(require('./demo')));
146
149
  return runDemo(rest);
147
150
  }
151
+ if (command === 'route-demo') {
152
+ const { runRouteDemo } = await Promise.resolve().then(() => __importStar(require('./route-demo')));
153
+ return runRouteDemo(rest);
154
+ }
155
+ if (command === 'dag-demo') {
156
+ const { runDagDemo } = await Promise.resolve().then(() => __importStar(require('./dag-demo')));
157
+ return runDagDemo(rest);
158
+ }
148
159
  if (command === 'sample') {
149
160
  const { runSample } = await Promise.resolve().then(() => __importStar(require('./sample')));
150
161
  return runSample(rest);
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `agentguard route-demo`: deterministic, offline demo of the spend-and-policy-
3
+ * aware model router.
4
+ *
5
+ * Shows, with mock provider clients (no real API calls):
6
+ * 1. cost-first routing to the cheapest capable candidate,
7
+ * 2. a clean FAILOVER when the primary provider errors (vendor risk removed),
8
+ * 3. a cap-breach triggering an in-flight DOWNGRADE route,
9
+ * 4. the signed routing receipt (candidates, winner, reason, cost), plus a
10
+ * note that it verifies with the existing verifier.
11
+ *
12
+ * The Ed25519 signatures + SHA-256 hash chain are REAL and reuse the existing
13
+ * receipt infra. Self-checks invariants and exits 1 on any failure.
14
+ */
15
+ export declare function runRouteDemo(argv: string[]): Promise<number>;
16
+ //# sourceMappingURL=route-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-demo.d.ts","sourceRoot":"","sources":["../../src/cli/route-demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuDH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoHlE"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * `agentguard route-demo`: deterministic, offline demo of the spend-and-policy-
4
+ * aware model router.
5
+ *
6
+ * Shows, with mock provider clients (no real API calls):
7
+ * 1. cost-first routing to the cheapest capable candidate,
8
+ * 2. a clean FAILOVER when the primary provider errors (vendor risk removed),
9
+ * 3. a cap-breach triggering an in-flight DOWNGRADE route,
10
+ * 4. the signed routing receipt (candidates, winner, reason, cost), plus a
11
+ * note that it verifies with the existing verifier.
12
+ *
13
+ * The Ed25519 signatures + SHA-256 hash chain are REAL and reuse the existing
14
+ * receipt infra. Self-checks invariants and exits 1 on any failure.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.runRouteDemo = runRouteDemo;
51
+ const ed = __importStar(require("@noble/ed25519"));
52
+ const router_engine_1 = require("../router-engine");
53
+ const decision_log_1 = require("../decision-log");
54
+ const store_memory_1 = require("../store-memory");
55
+ const cost_table_1 = require("../cost-table");
56
+ const index_1 = require("../index");
57
+ const colors_1 = require("./colors");
58
+ function mockClient(label, log, opts = {}) {
59
+ if (opts.kind === 'anthropic') {
60
+ return {
61
+ messages: {
62
+ create: async (params) => {
63
+ log.push(`${label}:${params.model}`);
64
+ if (opts.fail)
65
+ throw new Error('anthropic 503 upstream unavailable');
66
+ return { content: [{ text: 'ok' }], usage: { input_tokens: 1000, output_tokens: 1000 } };
67
+ },
68
+ },
69
+ };
70
+ }
71
+ return {
72
+ chat: {
73
+ completions: {
74
+ create: async (params) => {
75
+ log.push(`${label}:${params.model}`);
76
+ if (opts.fail)
77
+ throw new Error('openai 500 upstream error');
78
+ return { choices: [{ message: { content: 'ok' } }], usage: { prompt_tokens: 1000, completion_tokens: 1000 } };
79
+ },
80
+ },
81
+ },
82
+ };
83
+ }
84
+ function policy(overrides = {}) {
85
+ return {
86
+ id: 'route-demo',
87
+ name: 'route demo',
88
+ scope: { tenantId: 'route-demo' },
89
+ caps: [{ window: 'per_day', amountCents: 100000, action: 'allow' }],
90
+ mode: 'enforce',
91
+ version: 1,
92
+ effectiveFrom: '2026-07-20T00:00:00Z',
93
+ ...overrides,
94
+ };
95
+ }
96
+ const REQUEST = { messages: [{ role: 'user', content: 'summarize this' }], params: { max_tokens: 1000 }, inputTokens: 1000, outputTokens: 1000 };
97
+ function usd(cents) {
98
+ return Number.isFinite(cents) ? `$${(cents / 100).toFixed(4)}` : 'n/a';
99
+ }
100
+ async function runRouteDemo(argv) {
101
+ if (argv.includes('--no-color'))
102
+ process.env.NO_COLOR = '1';
103
+ if (argv.includes('--help') || argv.includes('-h')) {
104
+ console.log('agentguard route-demo');
105
+ console.log('Deterministic, offline demo of the spend-and-policy-aware model router.');
106
+ console.log('Options:');
107
+ console.log(' --no-color Disable colored output (same as NO_COLOR=1).');
108
+ return 0;
109
+ }
110
+ (0, cost_table_1.clearCostOverrides)();
111
+ (0, cost_table_1.setCostOverride)('gpt-cheap', { inputCentsPerKtok: 1, outputCentsPerKtok: 1 });
112
+ (0, cost_table_1.setCostOverride)('claude-mid', { inputCentsPerKtok: 5, outputCentsPerKtok: 5 });
113
+ (0, cost_table_1.setCostOverride)('gpt-pricey', { inputCentsPerKtok: 50, outputCentsPerKtok: 50 });
114
+ const privateKey = new Uint8Array(32);
115
+ for (let i = 0; i < 32; i++)
116
+ privateKey[i] = (i * 7 + 3) & 0xff;
117
+ const publicKey = await ed.getPublicKeyAsync(privateKey);
118
+ const logStore = new decision_log_1.InMemoryDecisionLogStore();
119
+ const spendStore = new store_memory_1.InMemorySpendStore();
120
+ const signingKeys = { privateKey, publicKey };
121
+ console.log('');
122
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
123
+ console.log(' ' + (0, colors_1.cyanBold)('AgentGuard Model Router Demo') + (0, colors_1.dim)(' · [mock providers · real cryptographic receipts]'));
124
+ console.log('');
125
+ let failed = false;
126
+ const check = (name, cond) => {
127
+ console.log(' ' + (cond ? (0, colors_1.green)('✓') : (0, colors_1.red)('✗')) + ' ' + (0, colors_1.dim)(name));
128
+ if (!cond)
129
+ failed = true;
130
+ };
131
+ // ---- Scenario 1: cost-first routing to the cheapest capable candidate ----
132
+ console.log(' ' + (0, colors_1.bold)('1) cost-first route') + (0, colors_1.dim)(' — cheapest capable candidate wins'));
133
+ const log1 = [];
134
+ const candidates1 = [
135
+ { provider: 'openai', model: 'gpt-pricey', client: mockClient('openai', log1) },
136
+ { provider: 'anthropic', model: 'claude-mid', client: mockClient('anthropic', log1, { kind: 'anthropic' }) },
137
+ { provider: 'openai', model: 'gpt-cheap', client: mockClient('openai', log1) },
138
+ ];
139
+ const router1 = (0, router_engine_1.createRouter)({ candidates: candidates1, spendPolicy: policy(), policy: { mode: 'cost' }, signingKeys, logStore, spendStore });
140
+ const r1 = await router1.route(REQUEST);
141
+ console.log(` winner: ${(0, colors_1.greenBold)(r1.chosen.provider + '/' + r1.chosen.model)} reason=${r1.reason} cost=${usd(r1.resolvedCents)}`);
142
+ check('cheapest model selected (gpt-cheap)', r1.chosen.model === 'gpt-cheap');
143
+ check('reason is cost', r1.reason === 'cost');
144
+ console.log('');
145
+ // ---- Scenario 2: provider error -> clean failover (vendor risk removed) ----
146
+ console.log(' ' + (0, colors_1.bold)('2) failover route') + (0, colors_1.dim)(' — primary provider errors, next provider takes over'));
147
+ const log2 = [];
148
+ const candidates2 = [
149
+ { provider: 'anthropic', model: 'claude-mid', client: mockClient('anthropic', log2, { kind: 'anthropic', fail: true }) },
150
+ { provider: 'openai', model: 'gpt-cheap', client: mockClient('openai', log2) },
151
+ ];
152
+ const router2 = (0, router_engine_1.createRouter)({ candidates: candidates2, spendPolicy: policy(), policy: { mode: 'priority' }, signingKeys, logStore, spendStore });
153
+ const r2 = await router2.route(REQUEST);
154
+ for (const fb of r2.fallbacks)
155
+ console.log(` ${(0, colors_1.red)('failover')} ${fb.provider}/${fb.model}: ${fb.reason} (${(0, colors_1.dim)(fb.detail ?? '')})`);
156
+ console.log(` winner: ${(0, colors_1.greenBold)(r2.chosen.provider + '/' + r2.chosen.model)} reason=${r2.reason} cost=${usd(r2.resolvedCents)}`);
157
+ check('failed over across providers (anthropic -> openai)', r2.chosen.provider === 'openai' && r2.chosen.model === 'gpt-cheap');
158
+ check('one provider_error fallback recorded', r2.fallbacks.length === 1 && r2.fallbacks[0].reason === 'provider_error');
159
+ check('reason is failover', r2.reason === 'failover');
160
+ console.log('');
161
+ // ---- Scenario 3: cap breach -> downgrade route ----
162
+ console.log(' ' + (0, colors_1.bold)('3) cap-breach downgrade route') + (0, colors_1.dim)(' — per-call cap downgrades to a cheaper model'));
163
+ const log3 = [];
164
+ const dgPolicy = policy({ caps: [{ window: 'per_call', amountCents: 5, action: 'downgrade', downgradeTo: 'gpt-cheap' }] });
165
+ const candidates3 = [
166
+ { provider: 'openai', model: 'gpt-pricey', client: mockClient('openai', log3) },
167
+ ];
168
+ const router3 = (0, router_engine_1.createRouter)({ candidates: candidates3, spendPolicy: dgPolicy, policy: { mode: 'priority' }, signingKeys, logStore, spendStore });
169
+ const r3 = await router3.route(REQUEST);
170
+ console.log(` requested gpt-pricey (${usd(5000)}) over $0.05 cap -> downgraded`);
171
+ console.log(` winner: ${(0, colors_1.greenBold)(r3.chosen.provider + '/' + r3.chosen.model)} reason=${r3.reason} cost=${usd(r3.resolvedCents)}`);
172
+ check('downgraded to gpt-cheap', r3.chosen.model === 'gpt-cheap');
173
+ check('reason is downgrade', r3.reason === 'downgrade');
174
+ console.log('');
175
+ // ---- Signed routing receipt (from scenario 2, the failover) ----
176
+ console.log(' ' + (0, colors_1.bold)('signed routing receipt') + (0, colors_1.dim)(' — scenario 2 (failover)'));
177
+ const receipt = r2.routingReceipt;
178
+ if (!receipt) {
179
+ check('routing receipt signed', false);
180
+ }
181
+ else {
182
+ const payload = receipt.decision.routingReceipt;
183
+ console.log((0, colors_1.dim)(' ───────────────────────────────────────────'));
184
+ console.log(' candidates considered:');
185
+ for (const c of payload.candidates) {
186
+ console.log(` - ${c.provider}/${c.model} projected=${usd(c.projectedCents ?? Number.NaN)}`);
187
+ }
188
+ console.log(` ${(0, colors_1.dim)('chosen ')} ${payload.chosen.provider}/${payload.chosen.model}`);
189
+ console.log(` ${(0, colors_1.dim)('reason ')} ${payload.reason}`);
190
+ console.log(` ${(0, colors_1.dim)('cost ')} ${usd(payload.resolvedCents)}`);
191
+ console.log(` ${(0, colors_1.dim)('fallbacks ')} ${payload.fallbacks.length}`);
192
+ console.log(` ${(0, colors_1.dim)('receipt ')} ${receipt.entryHash.slice(0, 16)}${(0, colors_1.dim)('...')}`);
193
+ console.log(` ${(0, colors_1.dim)('signer ')} ${receipt.signerFingerprint.slice(0, 16)}${(0, colors_1.dim)('...')}`);
194
+ console.log(` ${(0, colors_1.dim)('entryType ')} ${receipt.decision.entryType}`);
195
+ console.log((0, colors_1.dim)(' ───────────────────────────────────────────'));
196
+ check('receipt entryType is routing', receipt.decision.entryType === 'routing');
197
+ check('receipt records the chosen model', receipt.decision.modelResolved === 'gpt-cheap');
198
+ }
199
+ console.log('');
200
+ // ---- Whole chain verifies with the EXISTING verifier ----
201
+ const entries = logStore.snapshot();
202
+ const verdict = await (0, decision_log_1.verifyChain)(entries, publicKey);
203
+ check(`entire signed chain verifies (${entries.length} entries)`, verdict.ok === true);
204
+ const noContent = !JSON.stringify(entries).includes('summarize this');
205
+ check('zero data plane: no prompt content in the log', noContent);
206
+ console.log('');
207
+ console.log(' ' + (0, colors_1.green)('→') + ' ' + (0, colors_1.dim)('this receipt verifies with:') + ' ' + (0, colors_1.greenBold)('verifyChain(entries, publicKey)'));
208
+ console.log('');
209
+ return failed ? 1 : 0;
210
+ }
211
+ //# sourceMappingURL=route-demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-demo.js","sourceRoot":"","sources":["../../src/cli/route-demo.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -33,8 +33,9 @@ export { SpendGuard, withSpendGuard, AgentGuardBlockedError, type SpendGuardConf
33
33
  export { withSpendGuardAnthropic, type AnthropicBindingOptions } from './bindings/anthropic';
34
34
  export { withSpendGuardBedrock, type BedrockBindingOptions } from './bindings/bedrock';
35
35
  export { recommend, defaultKey, type ModelRouteRecommendation, type RecommendOptions } from './router';
36
+ export { createRouter, RoutingExhaustedError, type ModelRouter, type CreateRouterConfig, type RouterCandidate, type RouterPolicy, type RouterProvider, type RouterRequest, type RouteResult, type RouteReason, type RouteFallback, } from './router-engine';
36
37
  export { DEFAULT_LOCALE, SUPPORTED_LOCALES, TRANSLATIONS, type SupportedLocale, resolveLocale, t, formatBlockedTrace, type BlockedTraceArgs, } from './i18n';
37
- export declare const AGENTGUARD_SPEND_VERSION = "0.15.9";
38
+ export declare const AGENTGUARD_SPEND_VERSION = "0.15.11";
38
39
  export declare const agentguard: {
39
40
  workflow: typeof runWorkflow;
40
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG7D,YAAY,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAGvK,OAAO,EACL,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG1F,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,GACjC,MAAM,wBAAwB,CAAC;AAKhC,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAChK,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG/J,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3H,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGxG,OAAO,EACL,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,uBAAuB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGvG,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,KAAK,eAAe,EACpB,aAAa,EACb,CAAC,EACD,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAGjD,eAAO,MAAM,UAAU;;CAEtB,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,aAAa,QAG8B,CAAC;AACzD,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,GACjC,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG3F,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG7D,YAAY,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAGvK,OAAO,EACL,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG1F,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,GACjC,MAAM,wBAAwB,CAAC;AAKhC,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAChK,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG/J,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3H,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGxG,OAAO,EACL,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,uBAAuB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACvG,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,KAAK,eAAe,EACpB,aAAa,EACb,CAAC,EACD,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAGlD,eAAO,MAAM,UAAU;;CAEtB,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,aAAa,QAG8B,CAAC;AACzD,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,GACjC,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG3F,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,wBAAwB,CAAC"}