@agentguard-run/spend 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,52 @@
1
+ /**
2
+ * AgentGuard(TM) Spend: outcome model router.
3
+ *
4
+ * The router is local config-as-data. It never sends prompts, completions,
5
+ * provider keys, policies, or customer data to AgentGuard infrastructure.
6
+ *
7
+ * Patent notice: Protected by U.S. patent-pending technology
8
+ * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
9
+ * 64/071,781; 64/071,789).
10
+ */
11
+ export interface RouterCatalogModel {
12
+ id: string;
13
+ in_per_mtok: number;
14
+ out_per_mtok: number;
15
+ context?: number;
16
+ image_capable?: boolean;
17
+ origin?: 'US' | 'EU' | 'CN';
18
+ }
19
+ export interface RouterDefault {
20
+ vertical: string;
21
+ outcome: string;
22
+ need: string;
23
+ drafter: string;
24
+ reviewer: string;
25
+ vision_model?: string;
26
+ allowed_models: readonly string[];
27
+ blocked_origins: readonly string[];
28
+ }
29
+ export interface RecommendOptions {
30
+ vertical?: string;
31
+ outcome?: string;
32
+ posture?: string;
33
+ budgetTier?: string;
34
+ budget_tier?: string;
35
+ imageCapable?: boolean;
36
+ catalog?: RouterCatalogModel[];
37
+ }
38
+ export interface ModelRouteRecommendation {
39
+ vertical: string;
40
+ outcome: string;
41
+ need: string;
42
+ posture: string;
43
+ budgetTier: string;
44
+ drafter: string;
45
+ reviewer: string;
46
+ visionModel: string | null;
47
+ blockedOrigins: string[];
48
+ allowedModels: string[];
49
+ }
50
+ export declare function recommend(options?: RecommendOptions): ModelRouteRecommendation;
51
+ export declare function defaultKey(vertical: string, outcome?: string): string;
52
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAsaD,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,wBAAwB,CA0BlF;AAQD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAKrE"}
package/dist/router.js ADDED
@@ -0,0 +1,563 @@
1
+ "use strict";
2
+ /**
3
+ * AgentGuard(TM) Spend: outcome model router.
4
+ *
5
+ * The router is local config-as-data. It never sends prompts, completions,
6
+ * provider keys, policies, or customer data to AgentGuard infrastructure.
7
+ *
8
+ * Patent notice: Protected by U.S. patent-pending technology
9
+ * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
10
+ * 64/071,781; 64/071,789).
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.recommend = recommend;
14
+ exports.defaultKey = defaultKey;
15
+ const openrouter_catalog_1 = require("./openrouter-catalog");
16
+ const DEFAULTS = {
17
+ "version": 1,
18
+ "compliance_verticals": [
19
+ "law",
20
+ "accounting",
21
+ "insurance"
22
+ ],
23
+ "blocked_origin_prefixes": [
24
+ "deepseek/",
25
+ "qwen/",
26
+ "moonshotai/",
27
+ "01-ai/",
28
+ "z-ai/",
29
+ "baichuan/",
30
+ "stepfun/",
31
+ "bytedance/",
32
+ "ernie/"
33
+ ],
34
+ "defaults": {
35
+ "law_client_intake_drafter": {
36
+ "vertical": "law",
37
+ "outcome": "client_intake_drafter",
38
+ "need": "drafting",
39
+ "drafter": "openai/gpt-5-mini",
40
+ "reviewer": "anthropic/claude-sonnet-4.6",
41
+ "allowed_models": [
42
+ "openai/gpt-5-mini",
43
+ "openai/gpt-oss-120b",
44
+ "meta-llama/llama-3.3-70b-instruct",
45
+ "mistralai/mistral-small-3.2-24b-instruct",
46
+ "anthropic/claude-sonnet-4.6"
47
+ ],
48
+ "blocked_origins": [
49
+ "CN"
50
+ ]
51
+ },
52
+ "law_conflict_check_runner": {
53
+ "vertical": "law",
54
+ "outcome": "conflict_check_runner",
55
+ "need": "structured-reasoning",
56
+ "drafter": "openai/gpt-5-mini",
57
+ "reviewer": "openai/gpt-5.1",
58
+ "allowed_models": [
59
+ "openai/gpt-5-mini",
60
+ "openai/gpt-oss-120b",
61
+ "openai/gpt-4.1-nano",
62
+ "openai/gpt-5.1"
63
+ ],
64
+ "blocked_origins": [
65
+ "CN"
66
+ ]
67
+ },
68
+ "law_billable_hour_reconciler": {
69
+ "vertical": "law",
70
+ "outcome": "billable_hour_reconciler",
71
+ "need": "structured-reasoning",
72
+ "drafter": "openai/gpt-4.1-nano",
73
+ "reviewer": "openai/o4-mini",
74
+ "allowed_models": [
75
+ "openai/gpt-4.1-nano",
76
+ "openai/gpt-oss-120b",
77
+ "openai/o4-mini"
78
+ ],
79
+ "blocked_origins": [
80
+ "CN"
81
+ ]
82
+ },
83
+ "law_court_filing_deadline_tracker": {
84
+ "vertical": "law",
85
+ "outcome": "court_filing_deadline_tracker",
86
+ "need": "fast-classification",
87
+ "drafter": "openai/gpt-5-nano",
88
+ "reviewer": "openai/gpt-5-mini",
89
+ "allowed_models": [
90
+ "openai/gpt-5-nano",
91
+ "meta-llama/llama-3.1-8b-instruct",
92
+ "openai/gpt-5-mini"
93
+ ],
94
+ "blocked_origins": [
95
+ "CN"
96
+ ]
97
+ },
98
+ "law_discovery_doc_summarizer": {
99
+ "vertical": "law",
100
+ "outcome": "discovery_doc_summarizer",
101
+ "need": "long-context",
102
+ "drafter": "openai/gpt-4.1",
103
+ "reviewer": "anthropic/claude-sonnet-4.6",
104
+ "vision_model": "openai/gpt-4.1-mini",
105
+ "allowed_models": [
106
+ "openai/gpt-4.1",
107
+ "meta-llama/llama-4-scout",
108
+ "openai/gpt-4.1-mini",
109
+ "anthropic/claude-sonnet-4.6"
110
+ ],
111
+ "blocked_origins": [
112
+ "CN"
113
+ ]
114
+ },
115
+ "accounting_bank_reconciliation_drafter": {
116
+ "vertical": "accounting",
117
+ "outcome": "bank_reconciliation_drafter",
118
+ "need": "structured-reasoning",
119
+ "drafter": "openai/gpt-5-mini",
120
+ "reviewer": "openai/gpt-5.1",
121
+ "allowed_models": [
122
+ "openai/gpt-5-mini",
123
+ "openai/gpt-oss-120b",
124
+ "openai/gpt-4.1-nano",
125
+ "openai/gpt-5.1"
126
+ ],
127
+ "blocked_origins": [
128
+ "CN"
129
+ ]
130
+ },
131
+ "accounting_1099_prep_agent": {
132
+ "vertical": "accounting",
133
+ "outcome": "1099_prep_agent",
134
+ "need": "structured-reasoning",
135
+ "drafter": "openai/gpt-4.1-nano",
136
+ "reviewer": "openai/o4-mini",
137
+ "vision_model": "mistralai/mistral-small-3.2-24b-instruct",
138
+ "allowed_models": [
139
+ "openai/gpt-4.1-nano",
140
+ "openai/gpt-oss-120b",
141
+ "mistralai/mistral-small-3.2-24b-instruct",
142
+ "openai/o4-mini"
143
+ ],
144
+ "blocked_origins": [
145
+ "CN"
146
+ ]
147
+ },
148
+ "accounting_client_deliverable_drafter": {
149
+ "vertical": "accounting",
150
+ "outcome": "client_deliverable_drafter",
151
+ "need": "drafting",
152
+ "drafter": "anthropic/claude-haiku-4.5",
153
+ "reviewer": "anthropic/claude-sonnet-4.6",
154
+ "allowed_models": [
155
+ "anthropic/claude-haiku-4.5",
156
+ "openai/gpt-5-mini",
157
+ "meta-llama/llama-3.3-70b-instruct",
158
+ "anthropic/claude-sonnet-4.6"
159
+ ],
160
+ "blocked_origins": [
161
+ "CN"
162
+ ]
163
+ },
164
+ "accounting_audit_trail_compiler": {
165
+ "vertical": "accounting",
166
+ "outcome": "audit_trail_compiler",
167
+ "need": "long-context",
168
+ "drafter": "openai/gpt-4.1",
169
+ "reviewer": "anthropic/claude-sonnet-4.6",
170
+ "allowed_models": [
171
+ "openai/gpt-4.1",
172
+ "meta-llama/llama-4-scout",
173
+ "anthropic/claude-sonnet-4.6"
174
+ ],
175
+ "blocked_origins": [
176
+ "CN"
177
+ ]
178
+ },
179
+ "accounting_sales_tax_filing_draft": {
180
+ "vertical": "accounting",
181
+ "outcome": "sales_tax_filing_draft",
182
+ "need": "structured-reasoning",
183
+ "drafter": "openai/gpt-5-mini",
184
+ "reviewer": "openai/o4-mini",
185
+ "allowed_models": [
186
+ "openai/gpt-5-mini",
187
+ "openai/gpt-oss-120b",
188
+ "openai/gpt-4.1-nano",
189
+ "openai/o4-mini"
190
+ ],
191
+ "blocked_origins": [
192
+ "CN"
193
+ ]
194
+ },
195
+ "insurance_policy_renewal_drafter": {
196
+ "vertical": "insurance",
197
+ "outcome": "policy_renewal_drafter",
198
+ "need": "drafting",
199
+ "drafter": "openai/gpt-5-mini",
200
+ "reviewer": "anthropic/claude-sonnet-4.6",
201
+ "allowed_models": [
202
+ "openai/gpt-5-mini",
203
+ "openai/gpt-oss-120b",
204
+ "meta-llama/llama-3.3-70b-instruct",
205
+ "anthropic/claude-sonnet-4.6"
206
+ ],
207
+ "blocked_origins": [
208
+ "CN"
209
+ ]
210
+ },
211
+ "insurance_carrier_quote_comparison": {
212
+ "vertical": "insurance",
213
+ "outcome": "carrier_quote_comparison",
214
+ "need": "structured-reasoning",
215
+ "drafter": "openai/gpt-4.1-nano",
216
+ "reviewer": "openai/gpt-5.1",
217
+ "vision_model": "mistralai/mistral-small-3.2-24b-instruct",
218
+ "allowed_models": [
219
+ "openai/gpt-4.1-nano",
220
+ "openai/gpt-oss-120b",
221
+ "mistralai/mistral-small-3.2-24b-instruct",
222
+ "openai/gpt-5.1"
223
+ ],
224
+ "blocked_origins": [
225
+ "CN"
226
+ ]
227
+ },
228
+ "insurance_coi_issuance_agent": {
229
+ "vertical": "insurance",
230
+ "outcome": "coi_issuance_agent",
231
+ "need": "fast-classification",
232
+ "drafter": "openai/gpt-5-nano",
233
+ "reviewer": "openai/gpt-5-mini",
234
+ "vision_model": "mistralai/mistral-small-3.2-24b-instruct",
235
+ "allowed_models": [
236
+ "openai/gpt-5-nano",
237
+ "meta-llama/llama-3.1-8b-instruct",
238
+ "mistralai/mistral-small-3.2-24b-instruct",
239
+ "openai/gpt-5-mini"
240
+ ],
241
+ "blocked_origins": [
242
+ "CN"
243
+ ]
244
+ },
245
+ "insurance_claims_intake_drafter": {
246
+ "vertical": "insurance",
247
+ "outcome": "claims_intake_drafter",
248
+ "need": "drafting",
249
+ "drafter": "anthropic/claude-haiku-4.5",
250
+ "reviewer": "anthropic/claude-sonnet-4.6",
251
+ "vision_model": "amazon/nova-lite-v1",
252
+ "allowed_models": [
253
+ "anthropic/claude-haiku-4.5",
254
+ "openai/gpt-5-mini",
255
+ "amazon/nova-lite-v1",
256
+ "anthropic/claude-sonnet-4.6"
257
+ ],
258
+ "blocked_origins": [
259
+ "CN"
260
+ ]
261
+ },
262
+ "insurance_commission_statement_reconciler": {
263
+ "vertical": "insurance",
264
+ "outcome": "commission_statement_reconciler",
265
+ "need": "structured-reasoning",
266
+ "drafter": "openai/gpt-4.1-nano",
267
+ "reviewer": "openai/o4-mini",
268
+ "allowed_models": [
269
+ "openai/gpt-4.1-nano",
270
+ "openai/gpt-oss-120b",
271
+ "openai/o4-mini"
272
+ ],
273
+ "blocked_origins": [
274
+ "CN"
275
+ ]
276
+ },
277
+ "realestate_lease_renewal_drafter": {
278
+ "vertical": "realestate",
279
+ "outcome": "lease_renewal_drafter",
280
+ "need": "drafting",
281
+ "drafter": "openai/gpt-5-mini",
282
+ "reviewer": "anthropic/claude-sonnet-4.6",
283
+ "allowed_models": [
284
+ "openai/gpt-5-mini",
285
+ "openai/gpt-oss-120b",
286
+ "meta-llama/llama-3.3-70b-instruct",
287
+ "anthropic/claude-sonnet-4.6"
288
+ ],
289
+ "blocked_origins": []
290
+ },
291
+ "realestate_maintenance_request_triage": {
292
+ "vertical": "realestate",
293
+ "outcome": "maintenance_request_triage",
294
+ "need": "fast-classification",
295
+ "drafter": "meta-llama/llama-3.1-8b-instruct",
296
+ "reviewer": "openai/gpt-5-mini",
297
+ "allowed_models": [
298
+ "meta-llama/llama-3.1-8b-instruct",
299
+ "openai/gpt-5-nano",
300
+ "qwen/qwen3-30b-a3b",
301
+ "openai/gpt-5-mini"
302
+ ],
303
+ "blocked_origins": []
304
+ },
305
+ "realestate_listing_description_writer": {
306
+ "vertical": "realestate",
307
+ "outcome": "listing_description_writer",
308
+ "need": "drafting",
309
+ "drafter": "deepseek/deepseek-chat-v3.1",
310
+ "reviewer": "openai/gpt-5-mini",
311
+ "vision_model": "amazon/nova-lite-v1",
312
+ "allowed_models": [
313
+ "deepseek/deepseek-chat-v3.1",
314
+ "mistralai/mistral-small-3.2-24b-instruct",
315
+ "amazon/nova-lite-v1",
316
+ "openai/gpt-5-mini"
317
+ ],
318
+ "blocked_origins": []
319
+ },
320
+ "realestate_application_screening_agent": {
321
+ "vertical": "realestate",
322
+ "outcome": "application_screening_agent",
323
+ "need": "structured-reasoning",
324
+ "drafter": "openai/gpt-5-mini",
325
+ "reviewer": "openai/gpt-5.1",
326
+ "allowed_models": [
327
+ "openai/gpt-5-mini",
328
+ "openai/gpt-oss-120b",
329
+ "openai/gpt-5.1"
330
+ ],
331
+ "blocked_origins": [
332
+ "CN"
333
+ ]
334
+ },
335
+ "realestate_owner_statement_compiler": {
336
+ "vertical": "realestate",
337
+ "outcome": "owner_statement_compiler",
338
+ "need": "long-context",
339
+ "drafter": "openai/gpt-4.1-nano",
340
+ "reviewer": "openai/gpt-4.1",
341
+ "allowed_models": [
342
+ "openai/gpt-4.1-nano",
343
+ "meta-llama/llama-4-scout",
344
+ "openai/gpt-4.1"
345
+ ],
346
+ "blocked_origins": []
347
+ },
348
+ "ecommerce_refund_decision_agent": {
349
+ "vertical": "ecommerce",
350
+ "outcome": "refund_decision_agent",
351
+ "need": "structured-reasoning",
352
+ "drafter": "openai/gpt-5-nano",
353
+ "reviewer": "openai/gpt-5-mini",
354
+ "allowed_models": [
355
+ "openai/gpt-5-nano",
356
+ "openai/gpt-oss-120b",
357
+ "openai/gpt-5-mini"
358
+ ],
359
+ "blocked_origins": [
360
+ "CN"
361
+ ]
362
+ },
363
+ "ecommerce_inventory_reorder_agent": {
364
+ "vertical": "ecommerce",
365
+ "outcome": "inventory_reorder_agent",
366
+ "need": "structured-reasoning",
367
+ "drafter": "meta-llama/llama-3.3-70b-instruct",
368
+ "reviewer": "openai/gpt-5-mini",
369
+ "allowed_models": [
370
+ "meta-llama/llama-3.3-70b-instruct",
371
+ "openai/gpt-oss-120b",
372
+ "openai/gpt-5-mini"
373
+ ],
374
+ "blocked_origins": []
375
+ },
376
+ "ecommerce_chargeback_response_drafter": {
377
+ "vertical": "ecommerce",
378
+ "outcome": "chargeback_response_drafter",
379
+ "need": "drafting",
380
+ "drafter": "mistralai/mistral-small-3.2-24b-instruct",
381
+ "reviewer": "anthropic/claude-sonnet-4.6",
382
+ "allowed_models": [
383
+ "mistralai/mistral-small-3.2-24b-instruct",
384
+ "openai/gpt-oss-120b",
385
+ "anthropic/claude-sonnet-4.6"
386
+ ],
387
+ "blocked_origins": [
388
+ "CN"
389
+ ]
390
+ },
391
+ "ecommerce_customer_segmentation_refresher": {
392
+ "vertical": "ecommerce",
393
+ "outcome": "customer_segmentation_refresher",
394
+ "need": "fast-classification",
395
+ "drafter": "qwen/qwen3-30b-a3b",
396
+ "reviewer": "deepseek/deepseek-r1",
397
+ "allowed_models": [
398
+ "qwen/qwen3-30b-a3b",
399
+ "meta-llama/llama-3.1-8b-instruct",
400
+ "deepseek/deepseek-r1",
401
+ "openai/gpt-5-mini"
402
+ ],
403
+ "blocked_origins": []
404
+ },
405
+ "ecommerce_catalog_listing_optimizer": {
406
+ "vertical": "ecommerce",
407
+ "outcome": "catalog_listing_optimizer",
408
+ "need": "drafting",
409
+ "drafter": "deepseek/deepseek-chat-v3.1",
410
+ "reviewer": "openai/gpt-5-mini",
411
+ "vision_model": "amazon/nova-lite-v1",
412
+ "allowed_models": [
413
+ "deepseek/deepseek-chat-v3.1",
414
+ "mistralai/mistral-small-3.2-24b-instruct",
415
+ "amazon/nova-lite-v1",
416
+ "openai/gpt-5-mini"
417
+ ],
418
+ "blocked_origins": []
419
+ }
420
+ }
421
+ };
422
+ const NEED_FALLBACKS = {
423
+ 'fast-classification': ['meta-llama/llama-3.1-8b-instruct', 'openai/gpt-5-nano', 'mistralai/mistral-nemo', 'qwen/qwen3-30b-a3b'],
424
+ drafting: ['mistralai/mistral-small-3.2-24b-instruct', 'meta-llama/llama-3.3-70b-instruct', 'openai/gpt-oss-120b', 'openai/gpt-5-mini', 'deepseek/deepseek-chat-v3.1', 'anthropic/claude-haiku-4.5'],
425
+ 'structured-reasoning': ['openai/gpt-oss-120b', 'openai/gpt-4.1-nano', 'openai/gpt-5-mini', 'qwen/qwen3-235b-a22b-2507', 'openai/o4-mini'],
426
+ 'long-context': ['meta-llama/llama-4-scout', 'openai/gpt-4.1-nano', 'openai/gpt-4.1', 'anthropic/claude-sonnet-4.6', 'deepseek/deepseek-v4-flash'],
427
+ 'vision-document': ['mistralai/mistral-small-3.2-24b-instruct', 'openai/gpt-4.1-mini', 'qwen/qwen3-vl-8b-instruct', 'qwen/qwen3-vl-32b-instruct', 'openai/gpt-5.1'],
428
+ photo: ['amazon/nova-lite-v1', 'qwen/qwen3-vl-8b-instruct', 'openai/gpt-5.1', 'anthropic/claude-sonnet-4.6'],
429
+ };
430
+ const REVIEWER_FALLBACKS = ['openai/gpt-5-mini', 'openai/o4-mini', 'openai/gpt-5.1', 'anthropic/claude-sonnet-4.6', 'deepseek/deepseek-r1', 'qwen/qwen3-235b-a22b'];
431
+ const TIER_CEILINGS = { free: 0.5, solo: 0.5, solo_pro: 0.5, startup: 2, startup_pro: 2, growth: Number.POSITIVE_INFINITY, growth_pro: Number.POSITIVE_INFINITY };
432
+ const REVIEWER_CEILINGS = { free: 2, solo: 2, solo_pro: 2, startup: 10, startup_pro: 10, growth: Number.POSITIVE_INFINITY, growth_pro: Number.POSITIVE_INFINITY };
433
+ function recommend(options = {}) {
434
+ const catalog = options.catalog ?? catalogFromOpenRouter((0, openrouter_catalog_1.getCachedCatalog)()) ?? fallbackCatalogFromDefaults();
435
+ const catalogById = new Map(catalog.map((model) => [model.id, model]));
436
+ const vertical = normalizeVertical(options.vertical);
437
+ const def = defaultFor(vertical, options.outcome);
438
+ const posture = (options.posture || (isComplianceVertical(vertical) ? 'compliance' : 'standard')).toLowerCase();
439
+ const budgetTier = (options.budgetTier || options.budget_tier || 'solo').toLowerCase();
440
+ const drafterCandidates = unique([...(def.allowed_models || []), ...(NEED_FALLBACKS[def.need] || []), def.drafter]);
441
+ const reviewerCandidates = unique([def.reviewer, ...REVIEWER_FALLBACKS]);
442
+ const drafter = pickModel(drafterCandidates, catalogById, def, posture, TIER_CEILINGS[budgetTier] ?? TIER_CEILINGS.solo) ?? def.drafter;
443
+ const reviewer = pickModel(reviewerCandidates, catalogById, def, posture, REVIEWER_CEILINGS[budgetTier] ?? REVIEWER_CEILINGS.solo) ?? def.reviewer;
444
+ const needsVision = Boolean(def.vision_model || options.imageCapable || def.need.startsWith('vision'));
445
+ const visionCandidates = unique([def.vision_model, ...(NEED_FALLBACKS['vision-document'] || []), ...(NEED_FALLBACKS.photo || [])]);
446
+ const visionModel = needsVision ? pickModel(visionCandidates, catalogById, def, posture, TIER_CEILINGS[budgetTier] ?? TIER_CEILINGS.solo, true) ?? def.vision_model ?? null : null;
447
+ return {
448
+ vertical,
449
+ outcome: def.outcome,
450
+ need: def.need,
451
+ posture,
452
+ budgetTier,
453
+ drafter,
454
+ reviewer,
455
+ visionModel,
456
+ blockedOrigins: posture === 'compliance' ? ['CN'] : [...def.blocked_origins],
457
+ allowedModels: drafterCandidates.filter((id) => { const model = catalogById.get(id); return Boolean(model && allowedByOrigin(model, def, posture)); }),
458
+ };
459
+ }
460
+ function defaultFor(vertical, outcome) {
461
+ const key = defaultKey(vertical, outcome);
462
+ const rows = DEFAULTS.defaults;
463
+ return rows[key] ?? Object.values(rows).find((row) => row.vertical === vertical) ?? rows.law_client_intake_drafter;
464
+ }
465
+ function defaultKey(vertical, outcome) {
466
+ const clean = normalizeVertical(vertical);
467
+ const raw = String(outcome || '').trim();
468
+ const normalized = raw.startsWith(clean + '_') ? raw.slice(clean.length + 1) : slug(raw);
469
+ return clean + '_' + normalized;
470
+ }
471
+ function pickModel(ids, catalog, def, posture, ceiling, requireImage = false) {
472
+ const rows = ids
473
+ .map((id) => catalog.get(id))
474
+ .filter((model) => Boolean(model))
475
+ .filter((model) => allowedByOrigin(model, def, posture))
476
+ .filter((model) => !requireImage || model.image_capable === true);
477
+ const underCeiling = rows.filter((model) => blended(model) <= ceiling);
478
+ const pool = underCeiling.length ? underCeiling : rows;
479
+ pool.sort((a, b) => blended(a) - blended(b) || a.id.localeCompare(b.id));
480
+ return pool[0]?.id ?? null;
481
+ }
482
+ function allowedByOrigin(model, def, posture) {
483
+ if (/^google\/gemini/i.test(model.id))
484
+ return false;
485
+ const blocksCn = posture === 'compliance' || def.blocked_origins.includes('CN');
486
+ return !(blocksCn && isCnOrigin(model));
487
+ }
488
+ function isCnOrigin(model) {
489
+ return model.origin === 'CN' || /^(deepseek|qwen|moonshotai|01-ai|z-ai|baichuan|stepfun|bytedance|ernie)\//.test(model.id);
490
+ }
491
+ function blended(model) {
492
+ return (model.in_per_mtok + model.out_per_mtok) / 2;
493
+ }
494
+ function normalizeVertical(value) {
495
+ const v = String(value || '').toLowerCase().replace(/[-_ ]/g, '');
496
+ if (v === 'realestate')
497
+ return 'realestate';
498
+ return ['law', 'accounting', 'insurance', 'ecommerce'].includes(v) ? v : 'law';
499
+ }
500
+ function isComplianceVertical(vertical) {
501
+ return DEFAULTS.compliance_verticals.includes(vertical);
502
+ }
503
+ function slug(value) {
504
+ return value.toLowerCase().replace(/&/g, 'and').replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '');
505
+ }
506
+ function unique(values) {
507
+ return [...new Set(values.filter((value) => Boolean(value)))];
508
+ }
509
+ function catalogFromOpenRouter(catalog) {
510
+ if (!catalog?.data?.length)
511
+ return null;
512
+ return catalog.data.map((model) => ({
513
+ id: model.id,
514
+ in_per_mtok: Number(model.pricing?.prompt || 0) * 1e6,
515
+ out_per_mtok: Number(model.pricing?.completion || 0) * 1e6,
516
+ context: model.context_length || model.top_provider?.context_length || 0,
517
+ image_capable: Array.isArray(model.architecture?.input_modalities)
518
+ ? (model.architecture.input_modalities || []).includes('image')
519
+ : false,
520
+ origin: (/^(deepseek|qwen|moonshotai|01-ai|z-ai|baichuan|stepfun|bytedance|ernie)\//.test(model.id) ? 'CN' : /^mistralai\//.test(model.id) ? 'EU' : 'US'),
521
+ })).filter((model) => Number.isFinite(model.in_per_mtok) && Number.isFinite(model.out_per_mtok));
522
+ }
523
+ function fallbackCatalogFromDefaults() {
524
+ const ids = new Set();
525
+ for (const row of Object.values(DEFAULTS.defaults)) {
526
+ ids.add(row.drafter);
527
+ ids.add(row.reviewer);
528
+ if (row.vision_model)
529
+ ids.add(row.vision_model);
530
+ for (const id of row.allowed_models)
531
+ ids.add(id);
532
+ }
533
+ return [...ids].map((id) => ({ id, in_per_mtok: fallbackPrice(id)[0], out_per_mtok: fallbackPrice(id)[1], image_capable: /nova|vl|vision|mistral-small|gpt-4\.1-mini|gpt-5\.1/.test(id), origin: /^(deepseek|qwen|moonshotai|01-ai|z-ai|baichuan|stepfun|bytedance|ernie)\//.test(id) ? 'CN' : /^mistralai\//.test(id) ? 'EU' : 'US' }));
534
+ }
535
+ function fallbackPrice(id) {
536
+ const table = {
537
+ 'openai/gpt-5-nano': [0.05, 0.4],
538
+ 'openai/gpt-4.1-nano': [0.1, 0.4],
539
+ 'openai/gpt-5-mini': [0.25, 2],
540
+ 'openai/gpt-oss-120b': [0.039, 0.18],
541
+ 'openai/o4-mini': [1.1, 4.4],
542
+ 'openai/gpt-5.1': [1.25, 10],
543
+ 'openai/gpt-4.1': [2, 8],
544
+ 'openai/gpt-4.1-mini': [0.4, 1.6],
545
+ 'anthropic/claude-haiku-4.5': [1, 5],
546
+ 'anthropic/claude-sonnet-4.6': [3, 15],
547
+ 'meta-llama/llama-3.1-8b-instruct': [0.02, 0.05],
548
+ 'meta-llama/llama-3.3-70b-instruct': [0.1, 0.32],
549
+ 'meta-llama/llama-4-scout': [0.08, 0.3],
550
+ 'mistralai/mistral-small-3.2-24b-instruct': [0.075, 0.2],
551
+ 'mistralai/mistral-nemo': [0.02, 0.03],
552
+ 'amazon/nova-lite-v1': [0.06, 0.24],
553
+ 'deepseek/deepseek-chat-v3.1': [0.21, 0.79],
554
+ 'deepseek/deepseek-r1': [0.7, 2.5],
555
+ 'qwen/qwen3-30b-a3b': [0.09, 0.45],
556
+ 'qwen/qwen3-235b-a22b-2507': [0.071, 0.1],
557
+ 'qwen/qwen3-235b-a22b': [0.455, 1.82],
558
+ 'qwen/qwen3-vl-8b-instruct': [0.08, 0.5],
559
+ 'qwen/qwen3-vl-32b-instruct': [0.104, 0.416],
560
+ };
561
+ return table[id] || [1, 5];
562
+ }
563
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAmdH,8BA0BC;AAQD,gCAKC;AAxfD,6DAAgF;AA6ChF,MAAM,QAAQ,GAAG;IACf,SAAS,EAAE,CAAC;IACZ,sBAAsB,EAAE;QACtB,KAAK;QACL,YAAY;QACZ,WAAW;KACZ;IACD,yBAAyB,EAAE;QACzB,WAAW;QACX,OAAO;QACP,aAAa;QACb,QAAQ;QACR,OAAO;QACP,WAAW;QACX,UAAU;QACV,YAAY;QACZ,QAAQ;KACT;IACD,UAAU,EAAE;QACV,2BAA2B,EAAE;YAC3B,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,uBAAuB;YAClC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,6BAA6B;YACzC,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,mCAAmC;gBACnC,0CAA0C;gBAC1C,6BAA6B;aAC9B;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,2BAA2B,EAAE;YAC3B,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,uBAAuB;YAClC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,qBAAqB;gBACrB,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,8BAA8B,EAAE;YAC9B,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,0BAA0B;YACrC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,qBAAqB;YAChC,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE;gBAChB,qBAAqB;gBACrB,qBAAqB;gBACrB,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,mCAAmC,EAAE;YACnC,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,+BAA+B;YAC1C,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,mBAAmB;YAC/B,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,kCAAkC;gBAClC,mBAAmB;aACpB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,8BAA8B,EAAE;YAC9B,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,0BAA0B;YACrC,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,gBAAgB;YAC3B,UAAU,EAAE,6BAA6B;YACzC,cAAc,EAAE,qBAAqB;YACrC,gBAAgB,EAAE;gBAChB,gBAAgB;gBAChB,0BAA0B;gBAC1B,qBAAqB;gBACrB,6BAA6B;aAC9B;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,wCAAwC,EAAE;YACxC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,6BAA6B;YACxC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,qBAAqB;gBACrB,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,4BAA4B,EAAE;YAC5B,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,qBAAqB;YAChC,UAAU,EAAE,gBAAgB;YAC5B,cAAc,EAAE,0CAA0C;YAC1D,gBAAgB,EAAE;gBAChB,qBAAqB;gBACrB,qBAAqB;gBACrB,0CAA0C;gBAC1C,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,uCAAuC,EAAE;YACvC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,4BAA4B;YACvC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,4BAA4B;YACvC,UAAU,EAAE,6BAA6B;YACzC,gBAAgB,EAAE;gBAChB,4BAA4B;gBAC5B,mBAAmB;gBACnB,mCAAmC;gBACnC,6BAA6B;aAC9B;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,iCAAiC,EAAE;YACjC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,sBAAsB;YACjC,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,gBAAgB;YAC3B,UAAU,EAAE,6BAA6B;YACzC,gBAAgB,EAAE;gBAChB,gBAAgB;gBAChB,0BAA0B;gBAC1B,6BAA6B;aAC9B;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,mCAAmC,EAAE;YACnC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,wBAAwB;YACnC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,qBAAqB;gBACrB,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,kCAAkC,EAAE;YAClC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,wBAAwB;YACnC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,6BAA6B;YACzC,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,mCAAmC;gBACnC,6BAA6B;aAC9B;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,oCAAoC,EAAE;YACpC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,0BAA0B;YACrC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,qBAAqB;YAChC,UAAU,EAAE,gBAAgB;YAC5B,cAAc,EAAE,0CAA0C;YAC1D,gBAAgB,EAAE;gBAChB,qBAAqB;gBACrB,qBAAqB;gBACrB,0CAA0C;gBAC1C,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,8BAA8B,EAAE;YAC9B,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,oBAAoB;YAC/B,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,mBAAmB;YAC/B,cAAc,EAAE,0CAA0C;YAC1D,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,kCAAkC;gBAClC,0CAA0C;gBAC1C,mBAAmB;aACpB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,iCAAiC,EAAE;YACjC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,uBAAuB;YAClC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,4BAA4B;YACvC,UAAU,EAAE,6BAA6B;YACzC,cAAc,EAAE,qBAAqB;YACrC,gBAAgB,EAAE;gBAChB,4BAA4B;gBAC5B,mBAAmB;gBACnB,qBAAqB;gBACrB,6BAA6B;aAC9B;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,2CAA2C,EAAE;YAC3C,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,iCAAiC;YAC5C,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,qBAAqB;YAChC,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE;gBAChB,qBAAqB;gBACrB,qBAAqB;gBACrB,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,kCAAkC,EAAE;YAClC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,uBAAuB;YAClC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,6BAA6B;YACzC,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,mCAAmC;gBACnC,6BAA6B;aAC9B;YACD,iBAAiB,EAAE,EAAE;SACtB;QACD,uCAAuC,EAAE;YACvC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,4BAA4B;YACvC,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,kCAAkC;YAC7C,UAAU,EAAE,mBAAmB;YAC/B,gBAAgB,EAAE;gBAChB,kCAAkC;gBAClC,mBAAmB;gBACnB,oBAAoB;gBACpB,mBAAmB;aACpB;YACD,iBAAiB,EAAE,EAAE;SACtB;QACD,uCAAuC,EAAE;YACvC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,4BAA4B;YACvC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,6BAA6B;YACxC,UAAU,EAAE,mBAAmB;YAC/B,cAAc,EAAE,qBAAqB;YACrC,gBAAgB,EAAE;gBAChB,6BAA6B;gBAC7B,0CAA0C;gBAC1C,qBAAqB;gBACrB,mBAAmB;aACpB;YACD,iBAAiB,EAAE,EAAE;SACtB;QACD,wCAAwC,EAAE;YACxC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,6BAA6B;YACxC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,gBAAgB;aACjB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,qCAAqC,EAAE;YACrC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,0BAA0B;YACrC,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,qBAAqB;YAChC,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE;gBAChB,qBAAqB;gBACrB,0BAA0B;gBAC1B,gBAAgB;aACjB;YACD,iBAAiB,EAAE,EAAE;SACtB;QACD,iCAAiC,EAAE;YACjC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,uBAAuB;YAClC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,mBAAmB;YAC9B,UAAU,EAAE,mBAAmB;YAC/B,gBAAgB,EAAE;gBAChB,mBAAmB;gBACnB,qBAAqB;gBACrB,mBAAmB;aACpB;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,mCAAmC,EAAE;YACnC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,yBAAyB;YACpC,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,mCAAmC;YAC9C,UAAU,EAAE,mBAAmB;YAC/B,gBAAgB,EAAE;gBAChB,mCAAmC;gBACnC,qBAAqB;gBACrB,mBAAmB;aACpB;YACD,iBAAiB,EAAE,EAAE;SACtB;QACD,uCAAuC,EAAE;YACvC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,6BAA6B;YACxC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,0CAA0C;YACrD,UAAU,EAAE,6BAA6B;YACzC,gBAAgB,EAAE;gBAChB,0CAA0C;gBAC1C,qBAAqB;gBACrB,6BAA6B;aAC9B;YACD,iBAAiB,EAAE;gBACjB,IAAI;aACL;SACF;QACD,2CAA2C,EAAE;YAC3C,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,iCAAiC;YAC5C,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,oBAAoB;YAC/B,UAAU,EAAE,sBAAsB;YAClC,gBAAgB,EAAE;gBAChB,oBAAoB;gBACpB,kCAAkC;gBAClC,sBAAsB;gBACtB,mBAAmB;aACpB;YACD,iBAAiB,EAAE,EAAE;SACtB;QACD,qCAAqC,EAAE;YACrC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,2BAA2B;YACtC,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,6BAA6B;YACxC,UAAU,EAAE,mBAAmB;YAC/B,cAAc,EAAE,qBAAqB;YACrC,gBAAgB,EAAE;gBAChB,6BAA6B;gBAC7B,0CAA0C;gBAC1C,qBAAqB;gBACrB,mBAAmB;aACpB;YACD,iBAAiB,EAAE,EAAE;SACtB;KACF;CACO,CAAC;AAEX,MAAM,cAAc,GAA6B;IAC/C,qBAAqB,EAAE,CAAC,kCAAkC,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,oBAAoB,CAAC;IAChI,QAAQ,EAAE,CAAC,0CAA0C,EAAE,mCAAmC,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,4BAA4B,CAAC;IACpM,sBAAsB,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,gBAAgB,CAAC;IAC1I,cAAc,EAAE,CAAC,0BAA0B,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,4BAA4B,CAAC;IAClJ,iBAAiB,EAAE,CAAC,0CAA0C,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,gBAAgB,CAAC;IACnK,KAAK,EAAE,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,6BAA6B,CAAC;CAC7G,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;AACpK,MAAM,aAAa,GAA2B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC1L,MAAM,iBAAiB,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAE1L,SAAgB,SAAS,CAAC,UAA4B,EAAE;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,qBAAqB,CAAC,IAAA,qCAAgB,GAAE,CAAC,IAAI,2BAA2B,EAAE,CAAC;IAC9G,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChH,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACvF,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpH,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC;IACxI,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC;IACnJ,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvG,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnI,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACnL,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO;QACP,UAAU;QACV,OAAO;QACP,QAAQ;QACR,WAAW;QACX,cAAc,EAAE,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC;QAC5E,aAAa,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACvJ,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,OAAgB;IACpD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAoD,CAAC;IAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC;AACrH,CAAC;AAED,SAAgB,UAAU,CAAC,QAAgB,EAAE,OAAgB;IAC3D,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,OAAO,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC;AAClC,CAAC;AAED,SAAS,SAAS,CAAC,GAAa,EAAE,OAAwC,EAAE,GAAkB,EAAE,OAAe,EAAE,OAAe,EAAE,YAAY,GAAG,KAAK;IACpJ,MAAM,IAAI,GAAG,GAAG;SACb,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAA+B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC9D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACvD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,GAAkB,EAAE,OAAe;IACrF,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,KAAK,YAAY,IAAI,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChF,OAAO,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,2EAA2E,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7H,CAAC;AAED,SAAS,OAAO,CAAC,KAAyB;IACxC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC5C,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjF,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,OAAQ,QAAQ,CAAC,oBAA0C,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,MAAM,CAAC,MAAiC;IAC/C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAiC;IAC9D,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG;QACrD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,GAAG;QAC1D,OAAO,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,YAAY,EAAE,cAAc,IAAI,CAAC;QACxE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAE,KAAK,CAAC,YAA2D,EAAE,gBAAgB,CAAC;YAChH,CAAC,CAAC,CAAE,KAAK,CAAC,YAAgD,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpG,CAAC,CAAC,KAAK;QACT,MAAM,EAAE,CAAC,2EAA2E,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAuB;KAChL,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,2BAA2B;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAoD,CAAC,EAAE,CAAC;QAC/F,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,IAAI,GAAG,CAAC,YAAY;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,qDAAqD,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,2EAA2E,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3U,CAAC;AAED,SAAS,aAAa,CAAC,EAAU;IAC/B,MAAM,KAAK,GAAqC;QAC9C,mBAAmB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAChC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACjC,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,qBAAqB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACpC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QAC5B,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5B,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACjC,4BAA4B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,6BAA6B,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACtC,kCAAkC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAChD,mCAAmC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;QAChD,0BAA0B,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QACvC,0CAA0C,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;QACxD,wBAAwB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACtC,qBAAqB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACnC,6BAA6B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAC3C,sBAAsB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QAClC,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAClC,2BAA2B,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;QACzC,sBAAsB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACrC,2BAA2B,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QACxC,4BAA4B,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;KAC7C,CAAC;IACF,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC"}