@agentguard-run/spend 0.15.10 → 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":
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6DH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAiHlF"}
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,7 @@ 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.
62
63
  dag-demo Build + verify a multi-agent attestation diamond (TAT) with capability gating.
63
64
  sample Generate a signed sample receipt + self-verifying HTML for a named flow.
64
65
  anchor Externally timestamp the chain head via a public calendar (opt-in).
@@ -147,6 +148,10 @@ async function main(argv = process.argv.slice(2)) {
147
148
  const { runDemo } = await Promise.resolve().then(() => __importStar(require('./demo')));
148
149
  return runDemo(rest);
149
150
  }
151
+ if (command === 'route-demo') {
152
+ const { runRouteDemo } = await Promise.resolve().then(() => __importStar(require('./route-demo')));
153
+ return runRouteDemo(rest);
154
+ }
150
155
  if (command === 'dag-demo') {
151
156
  const { runDagDemo } = await Promise.resolve().then(() => __importStar(require('./dag-demo')));
152
157
  return runDagDemo(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":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DH,oBAqHC;AAjLD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,oCAAoD;AACpD,qCAAkC;AAElC,MAAM,8BAA8B,GAAG,8JAA8J,CAAC;AAEtM,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDZ,CAAC;AAEK,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,6BAA6B,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,cAAc,gCAAwB,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;IAE7D,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QACxD,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,cAAc,GAAC,CAAC;QACtD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,YAAY,GAAC,CAAC;QAClD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,OAAO,GAAC,CAAC;QAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,OAAO,GAAC,CAAC;QAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QACrD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,iBAAiB,GAAC,CAAC;QAC5D,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,OAAO,CAAC,CAAC;IACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,6BAA6B;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,gCAAwB,EAAE,CAAC,CAAC;QAC7E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO;QAChC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,CAAC,GAAG,EAAE,EAAE;QACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -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.10";
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":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,8 +22,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.receiptSchemaVersion = exports.isReceiptV3 = exports.assertReceiptV3 = exports.isOpenRouterHost = exports.clearManagedOpenRouterKeyCache = exports.fetchManagedOpenRouterKey = exports.modelCostFromOpenRouter = exports.persistOverrides = exports.syncPricingIntoCostTable = exports.getCachedCatalog = exports.fetchCatalog = exports.recordTelemetryEvent = exports.resetTelemetryInstallId = exports.disableTelemetry = exports.enableTelemetry = exports.telemetryStatus = exports.licenseKeyFingerprint = exports.clearConfiguredLicenseKey = exports.writeConfiguredLicenseKey = exports.readConfiguredLicenseKey = exports.validateAndRegisterLicense = exports.validateLicenseKey = exports.AgentGuardLicenseRequiredError = exports.NdjsonDecisionLogStore = exports.InMemorySpendStore = exports.InMemoryDecisionLogStore = exports.GENESIS_PREVIOUS_HASH = exports.detectSequenceGaps = exports.verifyChain = exports.verifyEntry = exports.signDecision = exports.computeSignerFingerprint = exports.computeEntryHash = exports.sha256Hex = exports.canonicalJson = exports.BUILT_IN_KEYWORD_WATCHLISTS = exports.findCustomKeywordWatchlists = exports.enforcePolicyLicenseGates = exports.adjustPolicyWindowSpend = exports.buildScopeKey = exports.evaluatePolicy = exports.knownModelCosts = exports.persistCostOverrides = exports.loadPersistedCostOverrides = exports.listCostOverrides = exports.inferProvider = exports.computeCallCents = exports.clearCostOverrides = exports.setCostOverride = exports.getModelCost = void 0;
25
- exports.resolveLocale = exports.TRANSLATIONS = exports.SUPPORTED_LOCALES = exports.DEFAULT_LOCALE = exports.defaultKey = exports.recommend = exports.withSpendGuardBedrock = exports.withSpendGuardAnthropic = exports.AgentGuardBlockedError = exports.withSpendGuard = exports.SpendGuard = exports.writeAdvisorOutputs = exports.createAdvisorSessionLogger = exports.resolveAdvisorApiKey = exports.createAdvisorClient = exports.projectedSavings = exports.buildPolicyFromProfile = exports.buildBusinessProfile = exports.AdvisorConversation = exports.AgentGuardWorkflowStateError = exports.AgentGuardDurationCapError = exports.AgentGuardChainCorruptError = exports.AgentGuardBudgetCapError = exports.validateReceiptChain = exports.computeChainHash = exports.WorkflowContext = exports.workflow = exports.verifyConsentReceipt = exports.enforceCompliance = exports.AgentGuardConsentRequiredError = exports.AgentGuardComplianceError = exports.isForeignOriginModel = exports.inferCompliance = exports.inferHosting = exports.inferModelIdentity = exports.inferProviderRoute = exports.PROVIDER_REGISTRY = exports.captureProvenance = exports.verifyReceiptDag = exports.verifyInclusion = exports.signDagNode = exports.msgHashForDecision = exports.merkleRoot = exports.merkleInclusionProof = exports.gateCapability = exports.deriveTrustScore = exports.deriveCapability = exports.dagEnvelopeFromEntries = exports.computeDagEntryHash = exports.compressReceiptDag = void 0;
26
- exports.formatLineage = exports.workloadProvenance = exports.buildSampleVerifierHtml = exports.SAMPLE_FLOWS = exports.isSampleFlow = exports.buildSampleReceipt = exports.anchorDir = exports.anchorProofPath = exports.anchorIndexPath = exports.findAnchorForHead = exports.readAnchorIndexAt = exports.readAnchorIndex = exports.writeAnchorProof = exports.defaultOtsLib = exports.DEFAULT_OTS_CALENDARS = exports.OpenTimestampsAnchor = exports.merkleRootHex = exports.chainHeadDigestHex = exports.createAnchorFromEnv = exports.createAnchor = exports.BONUS_THRESHOLD_PCT = exports.DEFAULT_FREE_LIMIT = exports.bonusMessage = exports.readFreeTierState = exports.maybeGrantFirstTimeBonus = exports.getMonthlyUsage = exports.centsToUsd = exports.decisionCents = exports.classifyOrigin = exports.aggregateLedger = exports.PATENT_NOTICE = exports.agentguard = exports.AGENTGUARD_SPEND_VERSION = exports.formatBlockedTrace = exports.t = void 0;
25
+ exports.SUPPORTED_LOCALES = exports.DEFAULT_LOCALE = exports.RoutingExhaustedError = exports.createRouter = exports.defaultKey = exports.recommend = exports.withSpendGuardBedrock = exports.withSpendGuardAnthropic = exports.AgentGuardBlockedError = exports.withSpendGuard = exports.SpendGuard = exports.writeAdvisorOutputs = exports.createAdvisorSessionLogger = exports.resolveAdvisorApiKey = exports.createAdvisorClient = exports.projectedSavings = exports.buildPolicyFromProfile = exports.buildBusinessProfile = exports.AdvisorConversation = exports.AgentGuardWorkflowStateError = exports.AgentGuardDurationCapError = exports.AgentGuardChainCorruptError = exports.AgentGuardBudgetCapError = exports.validateReceiptChain = exports.computeChainHash = exports.WorkflowContext = exports.workflow = exports.verifyConsentReceipt = exports.enforceCompliance = exports.AgentGuardConsentRequiredError = exports.AgentGuardComplianceError = exports.isForeignOriginModel = exports.inferCompliance = exports.inferHosting = exports.inferModelIdentity = exports.inferProviderRoute = exports.PROVIDER_REGISTRY = exports.captureProvenance = exports.verifyReceiptDag = exports.verifyInclusion = exports.signDagNode = exports.msgHashForDecision = exports.merkleRoot = exports.merkleInclusionProof = exports.gateCapability = exports.deriveTrustScore = exports.deriveCapability = exports.dagEnvelopeFromEntries = exports.computeDagEntryHash = exports.compressReceiptDag = void 0;
26
+ exports.formatLineage = exports.workloadProvenance = exports.buildSampleVerifierHtml = exports.SAMPLE_FLOWS = exports.isSampleFlow = exports.buildSampleReceipt = exports.anchorDir = exports.anchorProofPath = exports.anchorIndexPath = exports.findAnchorForHead = exports.readAnchorIndexAt = exports.readAnchorIndex = exports.writeAnchorProof = exports.defaultOtsLib = exports.DEFAULT_OTS_CALENDARS = exports.OpenTimestampsAnchor = exports.merkleRootHex = exports.chainHeadDigestHex = exports.createAnchorFromEnv = exports.createAnchor = exports.BONUS_THRESHOLD_PCT = exports.DEFAULT_FREE_LIMIT = exports.bonusMessage = exports.readFreeTierState = exports.maybeGrantFirstTimeBonus = exports.getMonthlyUsage = exports.centsToUsd = exports.decisionCents = exports.classifyOrigin = exports.aggregateLedger = exports.PATENT_NOTICE = exports.agentguard = exports.AGENTGUARD_SPEND_VERSION = exports.formatBlockedTrace = exports.t = exports.resolveLocale = exports.TRANSLATIONS = void 0;
27
27
  const context_1 = require("./workflow/context");
28
28
  // Cost table
29
29
  var cost_table_1 = require("./cost-table");
@@ -156,6 +156,9 @@ Object.defineProperty(exports, "withSpendGuardBedrock", { enumerable: true, get:
156
156
  var router_1 = require("./router");
157
157
  Object.defineProperty(exports, "recommend", { enumerable: true, get: function () { return router_1.recommend; } });
158
158
  Object.defineProperty(exports, "defaultKey", { enumerable: true, get: function () { return router_1.defaultKey; } });
159
+ var router_engine_1 = require("./router-engine");
160
+ Object.defineProperty(exports, "createRouter", { enumerable: true, get: function () { return router_engine_1.createRouter; } });
161
+ Object.defineProperty(exports, "RoutingExhaustedError", { enumerable: true, get: function () { return router_engine_1.RoutingExhaustedError; } });
159
162
  // Localization (en-US, es-419, pt-BR)
160
163
  var i18n_1 = require("./i18n");
161
164
  Object.defineProperty(exports, "DEFAULT_LOCALE", { enumerable: true, get: function () { return i18n_1.DEFAULT_LOCALE; } });
@@ -164,7 +167,7 @@ Object.defineProperty(exports, "TRANSLATIONS", { enumerable: true, get: function
164
167
  Object.defineProperty(exports, "resolveLocale", { enumerable: true, get: function () { return i18n_1.resolveLocale; } });
165
168
  Object.defineProperty(exports, "t", { enumerable: true, get: function () { return i18n_1.t; } });
166
169
  Object.defineProperty(exports, "formatBlockedTrace", { enumerable: true, get: function () { return i18n_1.formatBlockedTrace; } });
167
- exports.AGENTGUARD_SPEND_VERSION = '0.15.10';
170
+ exports.AGENTGUARD_SPEND_VERSION = '0.15.11';
168
171
  exports.agentguard = {
169
172
  workflow: context_1.workflow,
170
173
  };
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,123 @@
1
+ /**
2
+ * AgentGuard Spend: spend-and-policy-aware model router.
3
+ *
4
+ * `createRouter(...)` composes the EXISTING pieces of this SDK into one call
5
+ * that:
6
+ * 1. selects a candidate model across providers by a routing policy
7
+ * (cost-first / explicit priority / capability-tag filter),
8
+ * 2. enforces the spend cap using the EXISTING enforcement path
9
+ * (`SpendGuard.decide` -> `evaluatePolicy`) — block / downgrade / allow,
10
+ * 3. executes via the candidate's provider client,
11
+ * 4. FAILS OVER to the next viable candidate on a provider error/timeout OR a
12
+ * cap breach (block) on the chosen model — this removes vendor lock-in,
13
+ * 5. signs a routing receipt that records the decision, hash-chained onto the
14
+ * SAME signed log as the enforcement decisions using the EXISTING Ed25519 +
15
+ * canonical-JSON receipt infra (`SpendGuard.recordRoutingReceipt`).
16
+ *
17
+ * ZERO DATA PLANE: prompts, completions and provider keys never leave the
18
+ * process, and the routing receipt is payload-minimized (provider + model +
19
+ * projected cost only — never content).
20
+ *
21
+ * Patent notice: Protected by U.S. patent-pending technology
22
+ * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
23
+ * 64/071,781; 64/071,789).
24
+ */
25
+ import { SpendGuard, type SpendGuardConfig } from './spend-guard';
26
+ import type { CapabilityTier, SignedDecisionLogEntry, SpendDecision, SpendPolicy, SpendScope } from './types';
27
+ /** A provider the router knows how to dispatch a call to. */
28
+ export type RouterProvider = 'openai' | 'anthropic' | 'bedrock' | 'openrouter';
29
+ /** One routable model on a concrete provider client. */
30
+ export interface RouterCandidate {
31
+ /** Provider family. Drives cost lookup, dispatch and receipt labeling. */
32
+ provider: RouterProvider;
33
+ /** Model id as passed to the provider. */
34
+ model: string;
35
+ /** The provider SDK client used to execute the call. */
36
+ client: any;
37
+ /** Optional capability tags for capability-filter routing (e.g. 'vision'). */
38
+ capabilities?: string[];
39
+ }
40
+ /** How the router chooses among candidates. */
41
+ export interface RouterPolicy {
42
+ /**
43
+ * - `cost`: cheapest capable candidate first (projected cents ascending).
44
+ * - `priority`: honor the given candidate order (explicit failover order).
45
+ * - `capability`: keep only candidates whose `capabilities` include
46
+ * `requireCapability`, then order cheapest-first.
47
+ */
48
+ mode: 'cost' | 'priority' | 'capability';
49
+ /** Required capability tag when `mode === 'capability'`. */
50
+ requireCapability?: string;
51
+ }
52
+ export interface CreateRouterConfig {
53
+ /** Ordered list of routable candidates across providers. */
54
+ candidates: RouterCandidate[];
55
+ /** Selection policy. Defaults to cost-first. */
56
+ policy?: RouterPolicy;
57
+ /** The spend policy enforced by the EXISTING enforcement path. */
58
+ spendPolicy: SpendPolicy;
59
+ /** Ed25519 signing keys for the receipt chain. Reused, not re-invented. */
60
+ signingKeys?: SpendGuardConfig['signingKeys'];
61
+ /** Decision log store shared by enforcement + routing receipts. */
62
+ logStore?: SpendGuardConfig['logStore'];
63
+ /** Spend state store. */
64
+ spendStore?: SpendGuardConfig['spendStore'];
65
+ /** Any remaining SpendGuard config (posture, license, locale, hooks, ...). */
66
+ guardConfig?: Omit<SpendGuardConfig, 'policy' | 'signingKeys' | 'logStore' | 'spendStore'>;
67
+ }
68
+ /** A single inference request routed across candidates. */
69
+ export interface RouterRequest {
70
+ /** Identity scope for enforcement. Defaults to the spend policy scope. */
71
+ scope?: SpendScope;
72
+ /** Provider-native messages (openai/anthropic style). Used for token estimate. */
73
+ messages?: unknown[];
74
+ /** Extra provider params merged into the call (max_tokens, temperature, ...). */
75
+ params?: Record<string, unknown>;
76
+ /** Explicit input token count. Overrides estimation from `messages`. */
77
+ inputTokens?: number;
78
+ /** Expected output token count. Falls back to params.max_tokens or 512. */
79
+ outputTokens?: number;
80
+ /** Capability tier claim forwarded to enforcement. */
81
+ capabilityClaim?: CapabilityTier;
82
+ /** Optional label for the call (metadata only). */
83
+ label?: string;
84
+ }
85
+ export type RouteReason = 'cost' | 'priority' | 'capability' | 'failover' | 'downgrade';
86
+ /** A candidate that was considered but not chosen, and why. */
87
+ export interface RouteFallback {
88
+ provider: RouterProvider;
89
+ model: string;
90
+ /** 'cap_breach' (blocked by spend cap) or 'provider_error'. */
91
+ reason: 'cap_breach' | 'provider_error';
92
+ detail?: string;
93
+ }
94
+ export interface RouteResult<T = unknown> {
95
+ /** The provider response from the winning candidate. */
96
+ response: T;
97
+ /** Chosen provider + model actually executed. */
98
+ chosen: {
99
+ provider: RouterProvider;
100
+ model: string;
101
+ };
102
+ /** Why this candidate won. */
103
+ reason: RouteReason;
104
+ /** Resolved cost in cents (settled from usage when available, else projected). */
105
+ resolvedCents: number;
106
+ /** Candidates skipped before the winner, with cause. */
107
+ fallbacks: RouteFallback[];
108
+ /** The winning enforcement decision (already signed onto the chain). */
109
+ decision: SpendDecision;
110
+ /** The signed routing receipt entry (null when signing keys are absent). */
111
+ routingReceipt: SignedDecisionLogEntry | null;
112
+ }
113
+ export declare class RoutingExhaustedError extends Error {
114
+ fallbacks: RouteFallback[];
115
+ constructor(fallbacks: RouteFallback[]);
116
+ }
117
+ export interface ModelRouter {
118
+ route<T = unknown>(request: RouterRequest): Promise<RouteResult<T>>;
119
+ /** The underlying SpendGuard (shared enforcement + signed chain). */
120
+ readonly guard: SpendGuard;
121
+ }
122
+ export declare function createRouter(config: CreateRouterConfig): ModelRouter;
123
+ //# sourceMappingURL=router-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-engine.d.ts","sourceRoot":"","sources":["../src/router-engine.ts"],"names":[],"mappings":"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"}