adonis-ai-kit 0.0.0-stage → 1.2.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.
Files changed (196) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/LICENSE +21 -0
  3. package/README.md +397 -2
  4. package/dist/commands/ai_test.d.ts +12 -0
  5. package/dist/commands/ai_test.d.ts.map +1 -0
  6. package/dist/commands/ai_test.js +98 -0
  7. package/dist/commands/ai_test.js.map +1 -0
  8. package/dist/commands/main.d.ts +14 -0
  9. package/dist/commands/main.d.ts.map +1 -0
  10. package/dist/commands/main.js +31 -0
  11. package/dist/commands/main.js.map +1 -0
  12. package/dist/commands/make_agent.d.ts +13 -0
  13. package/dist/commands/make_agent.d.ts.map +1 -0
  14. package/dist/commands/make_agent.js +116 -0
  15. package/dist/commands/make_agent.js.map +1 -0
  16. package/dist/providers/ai_provider.d.ts +23 -0
  17. package/dist/providers/ai_provider.d.ts.map +1 -0
  18. package/dist/providers/ai_provider.js +34 -0
  19. package/dist/providers/ai_provider.js.map +1 -0
  20. package/dist/services/main.d.ts +4 -0
  21. package/dist/services/main.d.ts.map +1 -0
  22. package/dist/services/main.js +7 -0
  23. package/dist/services/main.js.map +1 -0
  24. package/dist/src/acp/acp_agents.d.ts +89 -0
  25. package/dist/src/acp/acp_agents.d.ts.map +1 -0
  26. package/dist/src/acp/acp_agents.js +367 -0
  27. package/dist/src/acp/acp_agents.js.map +1 -0
  28. package/dist/src/acp/index.d.ts +4 -0
  29. package/dist/src/acp/index.d.ts.map +1 -0
  30. package/dist/src/acp/index.js +4 -0
  31. package/dist/src/acp/index.js.map +1 -0
  32. package/dist/src/acp/provider.d.ts +74 -0
  33. package/dist/src/acp/provider.d.ts.map +1 -0
  34. package/dist/src/acp/provider.js +276 -0
  35. package/dist/src/acp/provider.js.map +1 -0
  36. package/dist/src/acp/types.d.ts +128 -0
  37. package/dist/src/acp/types.d.ts.map +1 -0
  38. package/dist/src/acp/types.js +2 -0
  39. package/dist/src/acp/types.js.map +1 -0
  40. package/dist/src/agents/agent_runner.d.ts +60 -0
  41. package/dist/src/agents/agent_runner.d.ts.map +1 -0
  42. package/dist/src/agents/agent_runner.js +134 -0
  43. package/dist/src/agents/agent_runner.js.map +1 -0
  44. package/dist/src/agents/index.d.ts +4 -0
  45. package/dist/src/agents/index.d.ts.map +1 -0
  46. package/dist/src/agents/index.js +4 -0
  47. package/dist/src/agents/index.js.map +1 -0
  48. package/dist/src/agents/loader.d.ts +56 -0
  49. package/dist/src/agents/loader.d.ts.map +1 -0
  50. package/dist/src/agents/loader.js +184 -0
  51. package/dist/src/agents/loader.js.map +1 -0
  52. package/dist/src/agents/manifest.d.ts +61 -0
  53. package/dist/src/agents/manifest.d.ts.map +1 -0
  54. package/dist/src/agents/manifest.js +35 -0
  55. package/dist/src/agents/manifest.js.map +1 -0
  56. package/dist/src/ai_manager.d.ts +140 -0
  57. package/dist/src/ai_manager.d.ts.map +1 -0
  58. package/dist/src/ai_manager.js +814 -0
  59. package/dist/src/ai_manager.js.map +1 -0
  60. package/dist/src/budget/budget_allocator.d.ts +37 -0
  61. package/dist/src/budget/budget_allocator.d.ts.map +1 -0
  62. package/dist/src/budget/budget_allocator.js +98 -0
  63. package/dist/src/budget/budget_allocator.js.map +1 -0
  64. package/dist/src/budget/budget_enforcer.d.ts +70 -0
  65. package/dist/src/budget/budget_enforcer.d.ts.map +1 -0
  66. package/dist/src/budget/budget_enforcer.js +195 -0
  67. package/dist/src/budget/budget_enforcer.js.map +1 -0
  68. package/dist/src/budget/cost_tracker.d.ts +71 -0
  69. package/dist/src/budget/cost_tracker.d.ts.map +1 -0
  70. package/dist/src/budget/cost_tracker.js +199 -0
  71. package/dist/src/budget/cost_tracker.js.map +1 -0
  72. package/dist/src/budget/index.d.ts +6 -0
  73. package/dist/src/budget/index.d.ts.map +1 -0
  74. package/dist/src/budget/index.js +6 -0
  75. package/dist/src/budget/index.js.map +1 -0
  76. package/dist/src/budget/pricing.d.ts +35 -0
  77. package/dist/src/budget/pricing.d.ts.map +1 -0
  78. package/dist/src/budget/pricing.js +129 -0
  79. package/dist/src/budget/pricing.js.map +1 -0
  80. package/dist/src/budget/types.d.ts +86 -0
  81. package/dist/src/budget/types.d.ts.map +1 -0
  82. package/dist/src/budget/types.js +2 -0
  83. package/dist/src/budget/types.js.map +1 -0
  84. package/dist/src/catalog/index.d.ts +3 -0
  85. package/dist/src/catalog/index.d.ts.map +1 -0
  86. package/dist/src/catalog/index.js +3 -0
  87. package/dist/src/catalog/index.js.map +1 -0
  88. package/dist/src/catalog/models_dev.d.ts +87 -0
  89. package/dist/src/catalog/models_dev.d.ts.map +1 -0
  90. package/dist/src/catalog/models_dev.js +38 -0
  91. package/dist/src/catalog/models_dev.js.map +1 -0
  92. package/dist/src/catalog/source.d.ts +67 -0
  93. package/dist/src/catalog/source.d.ts.map +1 -0
  94. package/dist/src/catalog/source.js +678 -0
  95. package/dist/src/catalog/source.js.map +1 -0
  96. package/dist/src/circuit_breaker.d.ts +61 -0
  97. package/dist/src/circuit_breaker.d.ts.map +1 -0
  98. package/dist/src/circuit_breaker.js +217 -0
  99. package/dist/src/circuit_breaker.js.map +1 -0
  100. package/dist/src/define_config.d.ts +11 -0
  101. package/dist/src/define_config.d.ts.map +1 -0
  102. package/dist/src/define_config.js +48 -0
  103. package/dist/src/define_config.js.map +1 -0
  104. package/dist/src/error_classifier.d.ts +50 -0
  105. package/dist/src/error_classifier.d.ts.map +1 -0
  106. package/dist/src/error_classifier.js +206 -0
  107. package/dist/src/error_classifier.js.map +1 -0
  108. package/dist/src/errors.d.ts +52 -0
  109. package/dist/src/errors.d.ts.map +1 -0
  110. package/dist/src/errors.js +70 -0
  111. package/dist/src/errors.js.map +1 -0
  112. package/dist/src/guard/confirmation.d.ts +67 -0
  113. package/dist/src/guard/confirmation.d.ts.map +1 -0
  114. package/dist/src/guard/confirmation.js +180 -0
  115. package/dist/src/guard/confirmation.js.map +1 -0
  116. package/dist/src/guard/errors.d.ts +10 -0
  117. package/dist/src/guard/errors.d.ts.map +1 -0
  118. package/dist/src/guard/errors.js +14 -0
  119. package/dist/src/guard/errors.js.map +1 -0
  120. package/dist/src/guard/guard.d.ts +47 -0
  121. package/dist/src/guard/guard.d.ts.map +1 -0
  122. package/dist/src/guard/guard.js +133 -0
  123. package/dist/src/guard/guard.js.map +1 -0
  124. package/dist/src/guard/index.d.ts +7 -0
  125. package/dist/src/guard/index.d.ts.map +1 -0
  126. package/dist/src/guard/index.js +7 -0
  127. package/dist/src/guard/index.js.map +1 -0
  128. package/dist/src/guard/registry.d.ts +72 -0
  129. package/dist/src/guard/registry.d.ts.map +1 -0
  130. package/dist/src/guard/registry.js +192 -0
  131. package/dist/src/guard/registry.js.map +1 -0
  132. package/dist/src/guard/schema_registry.d.ts +37 -0
  133. package/dist/src/guard/schema_registry.d.ts.map +1 -0
  134. package/dist/src/guard/schema_registry.js +57 -0
  135. package/dist/src/guard/schema_registry.js.map +1 -0
  136. package/dist/src/guard/types.d.ts +63 -0
  137. package/dist/src/guard/types.d.ts.map +1 -0
  138. package/dist/src/guard/types.js +2 -0
  139. package/dist/src/guard/types.js.map +1 -0
  140. package/dist/src/index.d.ts +16 -0
  141. package/dist/src/index.d.ts.map +1 -0
  142. package/dist/src/index.js +14 -0
  143. package/dist/src/index.js.map +1 -0
  144. package/dist/src/logger.d.ts +7 -0
  145. package/dist/src/logger.d.ts.map +1 -0
  146. package/dist/src/logger.js +2 -0
  147. package/dist/src/logger.js.map +1 -0
  148. package/dist/src/models/catalog_resolver.d.ts +24 -0
  149. package/dist/src/models/catalog_resolver.d.ts.map +1 -0
  150. package/dist/src/models/catalog_resolver.js +66 -0
  151. package/dist/src/models/catalog_resolver.js.map +1 -0
  152. package/dist/src/models/index.d.ts +14 -0
  153. package/dist/src/models/index.d.ts.map +1 -0
  154. package/dist/src/models/index.js +8 -0
  155. package/dist/src/models/index.js.map +1 -0
  156. package/dist/src/models/keys.d.ts +9 -0
  157. package/dist/src/models/keys.d.ts.map +1 -0
  158. package/dist/src/models/keys.js +12 -0
  159. package/dist/src/models/keys.js.map +1 -0
  160. package/dist/src/models/language_model_factory.d.ts +44 -0
  161. package/dist/src/models/language_model_factory.d.ts.map +1 -0
  162. package/dist/src/models/language_model_factory.js +193 -0
  163. package/dist/src/models/language_model_factory.js.map +1 -0
  164. package/dist/src/models/model_chain.d.ts +58 -0
  165. package/dist/src/models/model_chain.d.ts.map +1 -0
  166. package/dist/src/models/model_chain.js +144 -0
  167. package/dist/src/models/model_chain.js.map +1 -0
  168. package/dist/src/models/model_ref.d.ts +12 -0
  169. package/dist/src/models/model_ref.d.ts.map +1 -0
  170. package/dist/src/models/model_ref.js +33 -0
  171. package/dist/src/models/model_ref.js.map +1 -0
  172. package/dist/src/models/protocols.d.ts +6 -0
  173. package/dist/src/models/protocols.d.ts.map +1 -0
  174. package/dist/src/models/protocols.js +33 -0
  175. package/dist/src/models/protocols.js.map +1 -0
  176. package/dist/src/models/provider_factories.d.ts +19 -0
  177. package/dist/src/models/provider_factories.d.ts.map +1 -0
  178. package/dist/src/models/provider_factories.js +70 -0
  179. package/dist/src/models/provider_factories.js.map +1 -0
  180. package/dist/src/models/types.d.ts +17 -0
  181. package/dist/src/models/types.d.ts.map +1 -0
  182. package/dist/src/models/types.js +2 -0
  183. package/dist/src/models/types.js.map +1 -0
  184. package/dist/src/response_macro.d.ts +16 -0
  185. package/dist/src/response_macro.d.ts.map +1 -0
  186. package/dist/src/response_macro.js +151 -0
  187. package/dist/src/response_macro.js.map +1 -0
  188. package/dist/src/types.d.ts +340 -0
  189. package/dist/src/types.d.ts.map +1 -0
  190. package/dist/src/types.js +2 -0
  191. package/dist/src/types.js.map +1 -0
  192. package/dist/src/usage.d.ts +13 -0
  193. package/dist/src/usage.d.ts.map +1 -0
  194. package/dist/src/usage.js +61 -0
  195. package/dist/src/usage.js.map +1 -0
  196. package/package.json +208 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai_manager.js","sourceRoot":"","sources":["../../src/ai_manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { BudgetAllocation, BudgetModifier } from './types.js';
2
+ /**
3
+ * A domain-agnostic rule that inspects a caller-defined context and optionally
4
+ * returns one or more budget modifiers (positive = more tokens, negative = fewer).
5
+ */
6
+ export interface BudgetRule<TCtx = Record<string, unknown>> {
7
+ name: string;
8
+ evaluate: (ctx: TCtx) => BudgetModifier | BudgetModifier[] | null | undefined;
9
+ }
10
+ export interface BudgetAllocatorConfig {
11
+ basePerAgent?: number;
12
+ basePerSession?: number;
13
+ maxPerAgent?: number;
14
+ maxPerSession?: number;
15
+ maxModifierPct?: number;
16
+ minModifierPct?: number;
17
+ }
18
+ /**
19
+ * Computes dynamic token allocation per agent and session based on context modifiers.
20
+ *
21
+ * The allocator knows nothing about any business domain: all adjustments come from
22
+ * `BudgetRule`s registered via `addRule()` or from explicit `additionalModifiers`.
23
+ */
24
+ export declare class BudgetAllocator<TCtx extends Record<string, unknown> = Record<string, unknown>> {
25
+ private config;
26
+ private rules;
27
+ constructor(config?: BudgetAllocatorConfig);
28
+ addRule(rule: BudgetRule<TCtx>): this;
29
+ compute(ctx?: TCtx, additionalModifiers?: BudgetModifier[]): BudgetAllocation;
30
+ }
31
+ /** Rule: applies `pctChange` when `ctx[field]` strictly equals `value`. */
32
+ export declare function equalsRule<TCtx extends Record<string, unknown>>(field: keyof TCtx & string, value: unknown, pctChange: number, factor?: string): BudgetRule<TCtx>;
33
+ /** Rule: applies `pctChange` when numeric `ctx[field]` is >= `threshold`. */
34
+ export declare function atLeastRule<TCtx extends Record<string, unknown>>(field: keyof TCtx & string, threshold: number, pctChange: number, factor?: string): BudgetRule<TCtx>;
35
+ /** Rule: applies `pctChange` when numeric `ctx[field]` is < `threshold`. */
36
+ export declare function belowRule<TCtx extends Record<string, unknown>>(field: keyof TCtx & string, threshold: number, pctChange: number, factor?: string): BudgetRule<TCtx>;
37
+ //# sourceMappingURL=budget_allocator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget_allocator.d.ts","sourceRoot":"","sources":["../../../src/budget/budget_allocator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAElE;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,cAAc,GAAG,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,CAAA;CAC9E;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAeD;;;;;GAKG;AACH,qBAAa,eAAe,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzF,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAyB;gBAE1B,MAAM,GAAE,qBAA0B;IAiB9C,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI;IAKrC,OAAO,CAAC,GAAG,GAAE,IAAiB,EAAE,mBAAmB,GAAE,cAAc,EAAO,GAAG,gBAAgB;CA+C9F;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,EAC1B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAAsC,GAC7C,UAAU,CAAC,IAAI,CAAC,CAKlB;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAAmC,GAC1C,UAAU,CAAC,IAAI,CAAC,CAQlB;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAAkC,GACzC,UAAU,CAAC,IAAI,CAAC,CAQlB"}
@@ -0,0 +1,98 @@
1
+ const DEFAULT_CONFIG = {
2
+ basePerAgent: 50_000,
3
+ basePerSession: 200_000,
4
+ maxPerAgent: 75_000,
5
+ maxPerSession: 300_000,
6
+ maxModifierPct: 50,
7
+ minModifierPct: -50,
8
+ };
9
+ function finiteOr(value, fallback) {
10
+ return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
11
+ }
12
+ /**
13
+ * Computes dynamic token allocation per agent and session based on context modifiers.
14
+ *
15
+ * The allocator knows nothing about any business domain: all adjustments come from
16
+ * `BudgetRule`s registered via `addRule()` or from explicit `additionalModifiers`.
17
+ */
18
+ export class BudgetAllocator {
19
+ config;
20
+ rules = [];
21
+ constructor(config = {}) {
22
+ const minModifierPct = finiteOr(config.minModifierPct, DEFAULT_CONFIG.minModifierPct);
23
+ const maxModifierPct = finiteOr(config.maxModifierPct, DEFAULT_CONFIG.maxModifierPct);
24
+ if (minModifierPct > maxModifierPct) {
25
+ throw new RangeError('[BudgetAllocator] minModifierPct must be <= maxModifierPct');
26
+ }
27
+ this.config = {
28
+ basePerAgent: Math.max(0, finiteOr(config.basePerAgent, DEFAULT_CONFIG.basePerAgent)),
29
+ basePerSession: Math.max(0, finiteOr(config.basePerSession, DEFAULT_CONFIG.basePerSession)),
30
+ maxPerAgent: Math.max(0, finiteOr(config.maxPerAgent, DEFAULT_CONFIG.maxPerAgent)),
31
+ maxPerSession: Math.max(0, finiteOr(config.maxPerSession, DEFAULT_CONFIG.maxPerSession)),
32
+ maxModifierPct,
33
+ minModifierPct,
34
+ };
35
+ }
36
+ addRule(rule) {
37
+ this.rules.push(rule);
38
+ return this;
39
+ }
40
+ compute(ctx = {}, additionalModifiers = []) {
41
+ const modifiers = [];
42
+ const push = (mod) => {
43
+ if (mod && Number.isFinite(mod.pctChange))
44
+ modifiers.push(mod);
45
+ };
46
+ additionalModifiers.forEach(push);
47
+ for (const rule of this.rules) {
48
+ const result = rule.evaluate(ctx);
49
+ if (Array.isArray(result))
50
+ result.forEach(push);
51
+ else
52
+ push(result);
53
+ }
54
+ const rawPct = modifiers.reduce((sum, m) => sum + m.pctChange, 0);
55
+ const totalModifierPct = Math.max(this.config.minModifierPct, Math.min(this.config.maxModifierPct, rawPct));
56
+ const multiplier = 1 + totalModifierPct / 100;
57
+ const perAgent = Math.max(0, Math.min(this.config.maxPerAgent, Math.round(this.config.basePerAgent * multiplier)));
58
+ const perSession = Math.max(0, Math.min(this.config.maxPerSession, Math.round(this.config.basePerSession * multiplier)));
59
+ const reasons = modifiers.map((m) => `${m.factor} (${m.pctChange > 0 ? '+' : ''}${m.pctChange}%)`);
60
+ const cappedSuffix = rawPct > this.config.maxModifierPct
61
+ ? ` → capped at +${this.config.maxModifierPct}%`
62
+ : rawPct < this.config.minModifierPct
63
+ ? ` → capped at ${this.config.minModifierPct}%`
64
+ : '';
65
+ const reason = reasons.length > 0
66
+ ? reasons.join(', ') + cappedSuffix
67
+ : 'base allocation (no modifiers)';
68
+ return { perAgent, perSession, modifiers, totalModifierPct, reason };
69
+ }
70
+ }
71
+ /** Rule: applies `pctChange` when `ctx[field]` strictly equals `value`. */
72
+ export function equalsRule(field, value, pctChange, factor = `${field} = ${String(value)}`) {
73
+ return {
74
+ name: `equals:${field}`,
75
+ evaluate: (ctx) => (ctx[field] === value ? { factor, pctChange } : null),
76
+ };
77
+ }
78
+ /** Rule: applies `pctChange` when numeric `ctx[field]` is >= `threshold`. */
79
+ export function atLeastRule(field, threshold, pctChange, factor = `${field} >= ${threshold}`) {
80
+ return {
81
+ name: `atLeast:${field}`,
82
+ evaluate: (ctx) => {
83
+ const v = ctx[field];
84
+ return typeof v === 'number' && v >= threshold ? { factor, pctChange } : null;
85
+ },
86
+ };
87
+ }
88
+ /** Rule: applies `pctChange` when numeric `ctx[field]` is < `threshold`. */
89
+ export function belowRule(field, threshold, pctChange, factor = `${field} < ${threshold}`) {
90
+ return {
91
+ name: `below:${field}`,
92
+ evaluate: (ctx) => {
93
+ const v = ctx[field];
94
+ return typeof v === 'number' && v < threshold ? { factor, pctChange } : null;
95
+ },
96
+ };
97
+ }
98
+ //# sourceMappingURL=budget_allocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget_allocator.js","sourceRoot":"","sources":["../../../src/budget/budget_allocator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { BudgetAllocation, BudgetEnforcerOptions, BudgetSummary } from './types.js';
2
+ /**
3
+ * A hold on part of a budget, taken before an async call so that concurrent callers
4
+ * cannot all pass the check and then collectively overshoot the limit.
5
+ */
6
+ export interface BudgetReservation {
7
+ readonly id: number;
8
+ readonly agentName: string;
9
+ readonly tokens: number;
10
+ readonly costUsd: number;
11
+ }
12
+ /**
13
+ * Enforces per-agent and per-session token and USD cost limits.
14
+ *
15
+ * Semantics: an agent/session may continue while `used + reserved + projected` is STRICTLY below
16
+ * the limit, so a budget that is exactly exhausted does not allow further calls.
17
+ *
18
+ * Because JavaScript awaits between "check" and "record", `canAgentContinue()` followed by an LLM
19
+ * call is racy under concurrency. Use `reserve()` + `settle()` / `release()` for atomic accounting.
20
+ */
21
+ export declare class BudgetEnforcer {
22
+ private perAgentMaxTokens;
23
+ private perSessionMaxTokens;
24
+ private perAgentMaxCostUsd;
25
+ private perSessionMaxCostUsd;
26
+ private sessionTokensUsed;
27
+ private sessionCostUsd;
28
+ private agentTokensUsed;
29
+ private agentCostUsd;
30
+ private sessionTokensReserved;
31
+ private sessionCostReserved;
32
+ private agentTokensReserved;
33
+ private agentCostReserved;
34
+ private activeReservations;
35
+ private nextReservationId;
36
+ constructor(opts?: BudgetEnforcerOptions);
37
+ applyAllocation(allocation: BudgetAllocation): void;
38
+ setCostLimits(opts: {
39
+ perSessionMaxCostUsd?: number;
40
+ perAgentMaxCostUsd?: number;
41
+ }): void;
42
+ setTokenLimits(opts: {
43
+ perSessionMaxTokens?: number;
44
+ perAgentMaxTokens?: number;
45
+ }): void;
46
+ canAgentContinue(agentName: string, projectedTokens?: number, projectedCost?: number): boolean;
47
+ canSessionContinue(projectedTokens?: number, projectedCost?: number): boolean;
48
+ /**
49
+ * Atomically checks agent AND session limits and, when they allow it, holds the projected
50
+ * amounts. Returns `null` when the call must not proceed. Always follow up with `settle()`
51
+ * (call completed) or `release()` (call abandoned/failed).
52
+ */
53
+ reserve(agentName: string, projectedTokens: number, projectedCost?: number): BudgetReservation | null;
54
+ /** Replaces a reservation with the actual usage. Safe to call more than once. */
55
+ settle(reservation: BudgetReservation, actualTokens: number, actualCostUsd?: number): void;
56
+ /** Drops a reservation without recording usage. Safe to call more than once. */
57
+ release(reservation: BudgetReservation): void;
58
+ recordAgentUsage(agentName: string, tokens: number, costUsd?: number): void;
59
+ getSessionCostUsd(): number;
60
+ getSessionTokensUsed(): number;
61
+ getAgentCostUsd(agentName: string): number;
62
+ getAgentTokensUsed(agentName: string): number;
63
+ getSummary(): BudgetSummary;
64
+ reset(): void;
65
+ toLogString(): string;
66
+ private agentTokensOf;
67
+ private agentCostOf;
68
+ private releaseHold;
69
+ }
70
+ //# sourceMappingURL=budget_enforcer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget_enforcer.d.ts","sourceRoot":"","sources":["../../../src/budget/budget_enforcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAExF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAeD;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,YAAY,CAA4B;IAEhD,OAAO,CAAC,qBAAqB,CAAI;IACjC,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,iBAAiB,CAAI;gBAEjB,IAAI,GAAE,qBAA0B;IAO5C,eAAe,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAOnD,aAAa,CAAC,IAAI,EAAE;QAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IASzF,cAAc,CAAC,IAAI,EAAE;QAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IASxF,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,SAAI,EAAE,aAAa,SAAI,GAAG,OAAO;IAOpF,kBAAkB,CAAC,eAAe,SAAI,EAAE,aAAa,SAAI,GAAG,OAAO;IAMnE;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,iBAAiB,GAAG,IAAI;IAoBhG,iFAAiF;IACjF,MAAM,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,IAAI;IAKrF,gFAAgF;IAChF,OAAO,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAI7C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,IAAI;IAS9E,iBAAiB,IAAI,MAAM;IAI3B,oBAAoB,IAAI,MAAM;IAI9B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI1C,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI7C,UAAU,IAAI,aAAa;IAsB3B,KAAK,IAAI,IAAI;IAYb,WAAW,IAAI,MAAM;IA8BrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;CAepB"}
@@ -0,0 +1,195 @@
1
+ /** Limits must be numbers >= 0; `Infinity` means "unlimited". `NaN` and negatives are rejected. */
2
+ function assertLimit(name, value) {
3
+ if (typeof value !== 'number' || Number.isNaN(value) || value < 0) {
4
+ throw new RangeError(`[BudgetEnforcer] ${name} must be a number >= 0 (or Infinity), got ${value}`);
5
+ }
6
+ return value;
7
+ }
8
+ /** Usage amounts from untrusted sources: NaN / negative / non-finite become 0. */
9
+ function safeAmount(value) {
10
+ return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : 0;
11
+ }
12
+ /**
13
+ * Enforces per-agent and per-session token and USD cost limits.
14
+ *
15
+ * Semantics: an agent/session may continue while `used + reserved + projected` is STRICTLY below
16
+ * the limit, so a budget that is exactly exhausted does not allow further calls.
17
+ *
18
+ * Because JavaScript awaits between "check" and "record", `canAgentContinue()` followed by an LLM
19
+ * call is racy under concurrency. Use `reserve()` + `settle()` / `release()` for atomic accounting.
20
+ */
21
+ export class BudgetEnforcer {
22
+ perAgentMaxTokens;
23
+ perSessionMaxTokens;
24
+ perAgentMaxCostUsd;
25
+ perSessionMaxCostUsd;
26
+ sessionTokensUsed = 0;
27
+ sessionCostUsd = 0;
28
+ agentTokensUsed = new Map();
29
+ agentCostUsd = new Map();
30
+ sessionTokensReserved = 0;
31
+ sessionCostReserved = 0;
32
+ agentTokensReserved = new Map();
33
+ agentCostReserved = new Map();
34
+ activeReservations = new Map();
35
+ nextReservationId = 1;
36
+ constructor(opts = {}) {
37
+ this.perAgentMaxTokens = assertLimit('perAgentMaxTokens', opts.perAgentMaxTokens ?? 50_000);
38
+ this.perSessionMaxTokens = assertLimit('perSessionMaxTokens', opts.perSessionMaxTokens ?? 200_000);
39
+ this.perAgentMaxCostUsd = assertLimit('perAgentMaxCostUsd', opts.perAgentMaxCostUsd ?? Infinity);
40
+ this.perSessionMaxCostUsd = assertLimit('perSessionMaxCostUsd', opts.perSessionMaxCostUsd ?? Infinity);
41
+ }
42
+ applyAllocation(allocation) {
43
+ const perAgent = assertLimit('allocation.perAgent', allocation.perAgent);
44
+ const perSession = assertLimit('allocation.perSession', allocation.perSession);
45
+ this.perAgentMaxTokens = perAgent;
46
+ this.perSessionMaxTokens = perSession;
47
+ }
48
+ setCostLimits(opts) {
49
+ if (opts.perSessionMaxCostUsd !== undefined) {
50
+ this.perSessionMaxCostUsd = assertLimit('perSessionMaxCostUsd', opts.perSessionMaxCostUsd);
51
+ }
52
+ if (opts.perAgentMaxCostUsd !== undefined) {
53
+ this.perAgentMaxCostUsd = assertLimit('perAgentMaxCostUsd', opts.perAgentMaxCostUsd);
54
+ }
55
+ }
56
+ setTokenLimits(opts) {
57
+ if (opts.perSessionMaxTokens !== undefined) {
58
+ this.perSessionMaxTokens = assertLimit('perSessionMaxTokens', opts.perSessionMaxTokens);
59
+ }
60
+ if (opts.perAgentMaxTokens !== undefined) {
61
+ this.perAgentMaxTokens = assertLimit('perAgentMaxTokens', opts.perAgentMaxTokens);
62
+ }
63
+ }
64
+ canAgentContinue(agentName, projectedTokens = 0, projectedCost = 0) {
65
+ const tokens = this.agentTokensOf(agentName) + safeAmount(projectedTokens);
66
+ const cost = this.agentCostOf(agentName) + safeAmount(projectedCost);
67
+ return tokens < this.perAgentMaxTokens && cost < this.perAgentMaxCostUsd;
68
+ }
69
+ canSessionContinue(projectedTokens = 0, projectedCost = 0) {
70
+ const tokens = this.sessionTokensUsed + this.sessionTokensReserved + safeAmount(projectedTokens);
71
+ const cost = this.sessionCostUsd + this.sessionCostReserved + safeAmount(projectedCost);
72
+ return tokens < this.perSessionMaxTokens && cost < this.perSessionMaxCostUsd;
73
+ }
74
+ /**
75
+ * Atomically checks agent AND session limits and, when they allow it, holds the projected
76
+ * amounts. Returns `null` when the call must not proceed. Always follow up with `settle()`
77
+ * (call completed) or `release()` (call abandoned/failed).
78
+ */
79
+ reserve(agentName, projectedTokens, projectedCost = 0) {
80
+ const tokens = safeAmount(projectedTokens);
81
+ const costUsd = safeAmount(projectedCost);
82
+ if (!this.canAgentContinue(agentName, tokens, costUsd))
83
+ return null;
84
+ if (!this.canSessionContinue(tokens, costUsd))
85
+ return null;
86
+ const reservation = {
87
+ id: this.nextReservationId++,
88
+ agentName,
89
+ tokens,
90
+ costUsd,
91
+ };
92
+ this.activeReservations.set(reservation.id, reservation);
93
+ this.agentTokensReserved.set(agentName, (this.agentTokensReserved.get(agentName) ?? 0) + tokens);
94
+ this.agentCostReserved.set(agentName, (this.agentCostReserved.get(agentName) ?? 0) + costUsd);
95
+ this.sessionTokensReserved += tokens;
96
+ this.sessionCostReserved += costUsd;
97
+ return reservation;
98
+ }
99
+ /** Replaces a reservation with the actual usage. Safe to call more than once. */
100
+ settle(reservation, actualTokens, actualCostUsd = 0) {
101
+ if (!this.releaseHold(reservation))
102
+ return;
103
+ this.recordAgentUsage(reservation.agentName, actualTokens, actualCostUsd);
104
+ }
105
+ /** Drops a reservation without recording usage. Safe to call more than once. */
106
+ release(reservation) {
107
+ this.releaseHold(reservation);
108
+ }
109
+ recordAgentUsage(agentName, tokens, costUsd = 0) {
110
+ const t = safeAmount(tokens);
111
+ const c = safeAmount(costUsd);
112
+ this.agentTokensUsed.set(agentName, (this.agentTokensUsed.get(agentName) ?? 0) + t);
113
+ this.sessionTokensUsed += t;
114
+ this.agentCostUsd.set(agentName, (this.agentCostUsd.get(agentName) ?? 0) + c);
115
+ this.sessionCostUsd += c;
116
+ }
117
+ getSessionCostUsd() {
118
+ return this.sessionCostUsd;
119
+ }
120
+ getSessionTokensUsed() {
121
+ return this.sessionTokensUsed;
122
+ }
123
+ getAgentCostUsd(agentName) {
124
+ return this.agentCostUsd.get(agentName) ?? 0;
125
+ }
126
+ getAgentTokensUsed(agentName) {
127
+ return this.agentTokensUsed.get(agentName) ?? 0;
128
+ }
129
+ getSummary() {
130
+ const agentNames = new Set([...this.agentTokensUsed.keys(), ...this.agentCostUsd.keys()]);
131
+ const agentUsage = Object.fromEntries([...agentNames].map((name) => [
132
+ name,
133
+ {
134
+ tokens: this.agentTokensUsed.get(name) ?? 0,
135
+ costUsd: this.agentCostUsd.get(name) ?? 0,
136
+ },
137
+ ]));
138
+ return {
139
+ sessionTokensUsed: this.sessionTokensUsed,
140
+ sessionMaxTokens: this.perSessionMaxTokens,
141
+ sessionCostUsd: this.sessionCostUsd,
142
+ sessionMaxCostUsd: this.perSessionMaxCostUsd,
143
+ agentUsage,
144
+ };
145
+ }
146
+ reset() {
147
+ this.sessionTokensUsed = 0;
148
+ this.sessionCostUsd = 0;
149
+ this.agentTokensUsed.clear();
150
+ this.agentCostUsd.clear();
151
+ this.sessionTokensReserved = 0;
152
+ this.sessionCostReserved = 0;
153
+ this.agentTokensReserved.clear();
154
+ this.agentCostReserved.clear();
155
+ this.activeReservations.clear();
156
+ }
157
+ toLogString() {
158
+ const tokenPct = this.perSessionMaxTokens > 0
159
+ ? ((this.sessionTokensUsed / this.perSessionMaxTokens) * 100).toFixed(1)
160
+ : '0.0';
161
+ const costLimitStr = Number.isFinite(this.perSessionMaxCostUsd)
162
+ ? `$${this.perSessionMaxCostUsd.toFixed(4)}`
163
+ : 'unlimited';
164
+ const costPct = Number.isFinite(this.perSessionMaxCostUsd) && this.perSessionMaxCostUsd > 0
165
+ ? ` (${((this.sessionCostUsd / this.perSessionMaxCostUsd) * 100).toFixed(1)}%)`
166
+ : '';
167
+ const allAgents = new Set([...this.agentTokensUsed.keys(), ...this.agentCostUsd.keys()]);
168
+ const agents = [...allAgents]
169
+ .map((name) => {
170
+ const tokens = this.agentTokensUsed.get(name) ?? 0;
171
+ const cost = this.agentCostUsd.get(name) ?? 0;
172
+ return ` ${name}: ${tokens} tokens ($${cost.toFixed(4)} USD)`;
173
+ })
174
+ .join('\n');
175
+ return (`Session: ${this.sessionTokensUsed}/${this.perSessionMaxTokens} tokens (${tokenPct}%) | Cost: $${this.sessionCostUsd.toFixed(4)} / ${costLimitStr} USD${costPct}` +
176
+ (agents ? `\nPer-agent:\n${agents}` : ''));
177
+ }
178
+ agentTokensOf(agentName) {
179
+ return (this.agentTokensUsed.get(agentName) ?? 0) + (this.agentTokensReserved.get(agentName) ?? 0);
180
+ }
181
+ agentCostOf(agentName) {
182
+ return (this.agentCostUsd.get(agentName) ?? 0) + (this.agentCostReserved.get(agentName) ?? 0);
183
+ }
184
+ releaseHold(reservation) {
185
+ if (!this.activeReservations.delete(reservation.id))
186
+ return false;
187
+ const { agentName, tokens, costUsd } = reservation;
188
+ this.agentTokensReserved.set(agentName, Math.max(0, (this.agentTokensReserved.get(agentName) ?? 0) - tokens));
189
+ this.agentCostReserved.set(agentName, Math.max(0, (this.agentCostReserved.get(agentName) ?? 0) - costUsd));
190
+ this.sessionTokensReserved = Math.max(0, this.sessionTokensReserved - tokens);
191
+ this.sessionCostReserved = Math.max(0, this.sessionCostReserved - costUsd);
192
+ return true;
193
+ }
194
+ }
195
+ //# sourceMappingURL=budget_enforcer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget_enforcer.js","sourceRoot":"","sources":["../../../src/budget/budget_enforcer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { AgentCostRecord, AgentCostSummary, Logger, ModelPricing, TokenUsageDetails } from './types.js';
2
+ export interface CostTrackerOptions {
3
+ pricing?: Record<string, ModelPricing>;
4
+ logger?: Logger;
5
+ pricingLoader?: () => Promise<Record<string, ModelPricing>>;
6
+ /**
7
+ * Maximum number of individual records kept in memory (oldest are evicted first).
8
+ * Aggregates (totals, per-agent, per-model) are maintained incrementally and are NOT
9
+ * affected by eviction. Use `0` to keep aggregates only.
10
+ * Default: 10_000
11
+ */
12
+ maxRecords?: number;
13
+ /**
14
+ * Called synchronously for every recorded entry, e.g. to persist it to a database.
15
+ * Errors thrown by the sink are logged and never break the caller.
16
+ */
17
+ sink?: (record: AgentCostRecord) => void;
18
+ }
19
+ /**
20
+ * Tracks token usage and monetary cost per agent, model, and session.
21
+ * Provides aggregations and logging without framework dependencies.
22
+ *
23
+ * All keyed state uses `Map`, so agent/model names such as `__proto__` or `constructor`
24
+ * cannot pollute prototypes. Memory is bounded by `maxRecords`.
25
+ */
26
+ export declare class CostTracker {
27
+ private ring;
28
+ private ringStart;
29
+ private ringSize;
30
+ private maxRecords;
31
+ private sink?;
32
+ private byAgent;
33
+ private byModel;
34
+ private total;
35
+ private customPricing;
36
+ private defaultPricing;
37
+ private warnedModels;
38
+ private logger?;
39
+ private pricingLoader?;
40
+ constructor(opts?: CostTrackerOptions);
41
+ setLogger(logger: Logger): void;
42
+ setPricing(pricing: Record<string, ModelPricing>): void;
43
+ registerPricingLoader(loader: () => Promise<Record<string, ModelPricing>>): void;
44
+ loadPricing(): Promise<void>;
45
+ /**
46
+ * Backwards-compatible initialization alias.
47
+ */
48
+ initFromCatalog(): Promise<void>;
49
+ record(entry: Omit<AgentCostRecord, 'costUsd' | 'timestamp'>): number;
50
+ /**
51
+ * Cost in USD. `inputTokens` is the total input (cached included), `outputTokens` the total
52
+ * output (reasoning included); `details` carves cache/reasoning tokens out at their own rates.
53
+ */
54
+ calculateCost(model: string, inputTokens: number, outputTokens: number, details?: TokenUsageDetails): number;
55
+ getByAgent(): Record<string, AgentCostSummary>;
56
+ getByModel(): Record<string, {
57
+ tokens: number;
58
+ cost: number;
59
+ calls: number;
60
+ }>;
61
+ getTotalCost(): number;
62
+ getTotalTokens(): number;
63
+ getTotalCalls(): number;
64
+ /** Most recent records (at most `maxRecords`), oldest first. */
65
+ getRecords(): readonly AgentCostRecord[];
66
+ reset(): void;
67
+ toLogString(): string;
68
+ private aggregate;
69
+ private store;
70
+ }
71
+ //# sourceMappingURL=cost_tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost_tracker.d.ts","sourceRoot":"","sources":["../../../src/budget/cost_tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAA;AASnB,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAC3D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;CACzC;AAuBD;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAmC;IAEhD,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,KAAK,CAA4B;IAEzC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,cAAc,CAAuE;IAC7F,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,aAAa,CAAC,CAA6C;gBAEvD,IAAI,GAAE,kBAAuB;IAczC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI;IAMvD,qBAAqB,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,IAAI;IAI1E,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,WAAW,CAAC,GAAG,MAAM;IAqCrE;;;OAGG;IACH,aAAa,CACX,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,iBAAsB,GAC9B,MAAM;IAkBT,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAe9C,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAS7E,YAAY,IAAI,MAAM;IAItB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,gEAAgE;IAChE,UAAU,IAAI,SAAS,eAAe,EAAE;IAQxC,KAAK,IAAI,IAAI;IAUb,WAAW,IAAI,MAAM;IAYrB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,KAAK;CAUd"}