overmind-mcp 2.8.13 → 2.8.15

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 (60) hide show
  1. package/dist/bin/launch.js +78 -0
  2. package/dist/bin/overmind-bridge.d.ts +42 -0
  3. package/dist/bin/overmind-bridge.d.ts.map +1 -0
  4. package/dist/bin/overmind-bridge.js +503 -0
  5. package/dist/bin/overmind-bridge.js.map +1 -0
  6. package/dist/bridge/ArgParser.d.ts +45 -0
  7. package/dist/bridge/ArgParser.d.ts.map +1 -0
  8. package/dist/bridge/ArgParser.js +134 -0
  9. package/dist/bridge/ArgParser.js.map +1 -0
  10. package/dist/bridge/BridgeHttpClient.d.ts +61 -0
  11. package/dist/bridge/BridgeHttpClient.d.ts.map +1 -0
  12. package/dist/bridge/BridgeHttpClient.js +164 -0
  13. package/dist/bridge/BridgeHttpClient.js.map +1 -0
  14. package/dist/bridge/DirectiveParser.d.ts +82 -0
  15. package/dist/bridge/DirectiveParser.d.ts.map +1 -0
  16. package/dist/bridge/DirectiveParser.js +154 -0
  17. package/dist/bridge/DirectiveParser.js.map +1 -0
  18. package/dist/bridge/JsonSanitizer.d.ts +34 -0
  19. package/dist/bridge/JsonSanitizer.d.ts.map +1 -0
  20. package/dist/bridge/JsonSanitizer.js +90 -0
  21. package/dist/bridge/JsonSanitizer.js.map +1 -0
  22. package/dist/bridge/OverBridgeServer.d.ts +36 -2
  23. package/dist/bridge/OverBridgeServer.d.ts.map +1 -1
  24. package/dist/bridge/OverBridgeServer.js +351 -23
  25. package/dist/bridge/OverBridgeServer.js.map +1 -1
  26. package/dist/bridge/PromptSource.d.ts +66 -0
  27. package/dist/bridge/PromptSource.d.ts.map +1 -0
  28. package/dist/bridge/PromptSource.js +152 -0
  29. package/dist/bridge/PromptSource.js.map +1 -0
  30. package/dist/bridge/RequestContext.d.ts +19 -0
  31. package/dist/bridge/RequestContext.d.ts.map +1 -0
  32. package/dist/bridge/RequestContext.js +34 -0
  33. package/dist/bridge/RequestContext.js.map +1 -0
  34. package/dist/bridge/ScenarioLoader.d.ts +124 -0
  35. package/dist/bridge/ScenarioLoader.d.ts.map +1 -0
  36. package/dist/bridge/ScenarioLoader.js +333 -0
  37. package/dist/bridge/ScenarioLoader.js.map +1 -0
  38. package/dist/bridge/SessionStore.d.ts +109 -0
  39. package/dist/bridge/SessionStore.d.ts.map +1 -0
  40. package/dist/bridge/SessionStore.js +220 -0
  41. package/dist/bridge/SessionStore.js.map +1 -0
  42. package/dist/bridge/WebhookAdapter.d.ts +76 -0
  43. package/dist/bridge/WebhookAdapter.d.ts.map +1 -0
  44. package/dist/bridge/WebhookAdapter.js +186 -0
  45. package/dist/bridge/WebhookAdapter.js.map +1 -0
  46. package/dist/bridge/index.d.ts +16 -0
  47. package/dist/bridge/index.d.ts.map +1 -1
  48. package/dist/bridge/index.js +10 -0
  49. package/dist/bridge/index.js.map +1 -1
  50. package/dist/bridge/utils.d.ts +9 -0
  51. package/dist/bridge/utils.d.ts.map +1 -1
  52. package/dist/bridge/utils.js +17 -0
  53. package/dist/bridge/utils.js.map +1 -1
  54. package/dist/services/NousHermesRunner.d.ts.map +1 -1
  55. package/dist/services/NousHermesRunner.js +87 -9
  56. package/dist/services/NousHermesRunner.js.map +1 -1
  57. package/dist/tools/config_example.d.ts.map +1 -1
  58. package/dist/tools/config_example.js +8 -1
  59. package/dist/tools/config_example.js.map +1 -1
  60. package/package.json +2 -1
@@ -0,0 +1,333 @@
1
+ /**
2
+ * ╔══════════════════════════════════════════════════════════════════════╗
3
+ * ║ OVERMIND BRIDGE — ScenarioLoader (Multi-Agent Orchestration) ║
4
+ * ║ ║
5
+ * ║ Charge un scénario depuis YAML/JSON qui décrit un workflow ║
6
+ * ║ multi-agents : séquentiel, parallèle, conditionnel, A2A. ║
7
+ * ║ ║
8
+ * ║ FORMAT JSON ║
9
+ * ║ ────────── ║
10
+ * ║ { ║
11
+ * ║ "name": "My workflow", ║
12
+ * ║ "vars": { "ticker": "BTC" }, ║
13
+ * ║ "steps": [ ║
14
+ * ║ { "id": "step1", "type": "run", "agent": "scout", ║
15
+ * ║ "runner": "kilo", "prompt": "Analyse ${ticker}" }, ║
16
+ * ║ { "id": "step2", "type": "a2a", "from": "scout", "to": ║
17
+ * ║ "analyst", "prompt": "Valide ${step1.output}" }, ║
18
+ * ║ { "id": "step3", "type": "parallel", "steps": [...] } ║
19
+ * ║ ] ║
20
+ * ║ } ║
21
+ * ╚══════════════════════════════════════════════════════════════════════╝
22
+ */
23
+ import fs from 'node:fs/promises';
24
+ import { interpolate } from './utils.js';
25
+ // ─── Lazy YAML loader (optionnel) ──────────────────────────────────────────
26
+ //
27
+ // YAML est supporté si le module `yaml` est installé.
28
+ // Sinon on throw une erreur claire demandant `npm i yaml`.
29
+ //
30
+ // On utilise createRequire pour rester compatible ESM (NodeNext).
31
+ import { createRequire } from 'node:module';
32
+ const require = createRequire(import.meta.url);
33
+ function tryLoadYaml() {
34
+ try {
35
+ const yaml = require('yaml');
36
+ return yaml.parse;
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ }
42
+ // ─── Loader ────────────────────────────────────────────────────────────────
43
+ /**
44
+ * Charge un scénario depuis un fichier. Supporte JSON et YAML.
45
+ */
46
+ export async function loadScenario(filePath) {
47
+ const raw = await fs.readFile(filePath, 'utf-8');
48
+ const ext = filePath.toLowerCase().split('.').pop() ?? 'json';
49
+ let parsed;
50
+ if (ext === 'yaml' || ext === 'yml') {
51
+ const parseYaml = tryLoadYaml();
52
+ if (!parseYaml) {
53
+ throw new Error(`YAML scenario requested but 'yaml' module is not installed.\n` +
54
+ `Install it with: npm install yaml\n` +
55
+ `Or convert your scenario to JSON (.json) which is supported out-of-the-box.`);
56
+ }
57
+ try {
58
+ parsed = parseYaml(raw);
59
+ }
60
+ catch (err) {
61
+ throw new Error(`Invalid YAML in ${filePath}: ${err.message}`, { cause: err });
62
+ }
63
+ }
64
+ else {
65
+ try {
66
+ parsed = JSON.parse(raw);
67
+ }
68
+ catch (err) {
69
+ throw new Error(`Invalid JSON in ${filePath}: ${err.message}`, { cause: err });
70
+ }
71
+ }
72
+ return validateScenario(parsed);
73
+ }
74
+ /**
75
+ * Valide et normalise un objet scénario.
76
+ */
77
+ function validateScenario(obj) {
78
+ if (!obj || typeof obj !== 'object') {
79
+ throw new Error('Scenario must be an object');
80
+ }
81
+ const s = obj;
82
+ if (typeof s.name !== 'string' || !s.name) {
83
+ throw new Error('Scenario.name is required');
84
+ }
85
+ if (!Array.isArray(s.steps)) {
86
+ throw new Error('Scenario.steps must be an array');
87
+ }
88
+ for (const [i, step] of s.steps.entries()) {
89
+ validateStep(step, `steps[${i}]`);
90
+ }
91
+ return {
92
+ name: s.name,
93
+ description: typeof s.description === 'string' ? s.description : undefined,
94
+ vars: s.vars ?? {},
95
+ steps: s.steps,
96
+ };
97
+ }
98
+ function validateStep(step, path) {
99
+ if (!step || typeof step !== 'object') {
100
+ throw new Error(`${path} must be an object`);
101
+ }
102
+ const s = step;
103
+ if (typeof s.id !== 'string' || !s.id) {
104
+ throw new Error(`${path}.id is required`);
105
+ }
106
+ const type = s.type;
107
+ if (type === 'run') {
108
+ if (typeof s.agent !== 'string')
109
+ throw new Error(`${path}.agent required for run`);
110
+ if (typeof s.runner !== 'string')
111
+ throw new Error(`${path}.runner required for run`);
112
+ if (typeof s.prompt !== 'string')
113
+ throw new Error(`${path}.prompt required for run`);
114
+ }
115
+ else if (type === 'a2a') {
116
+ if (typeof s.from !== 'string')
117
+ throw new Error(`${path}.from required for a2a`);
118
+ if (typeof s.to !== 'string')
119
+ throw new Error(`${path}.to required for a2a`);
120
+ if (typeof s.runner !== 'string')
121
+ throw new Error(`${path}.runner required for a2a`);
122
+ if (typeof s.prompt !== 'string')
123
+ throw new Error(`${path}.prompt required for a2a`);
124
+ }
125
+ else if (type === 'parallel') {
126
+ if (!Array.isArray(s.steps))
127
+ throw new Error(`${path}.steps required for parallel`);
128
+ s.steps.forEach((sub, j) => validateStep(sub, `${path}.steps[${j}]`));
129
+ }
130
+ else if (type === 'if') {
131
+ if (typeof s.condition !== 'string')
132
+ throw new Error(`${path}.condition required for if`);
133
+ if (!Array.isArray(s.then))
134
+ throw new Error(`${path}.then required for if`);
135
+ s.then.forEach((sub, j) => validateStep(sub, `${path}.then[${j}]`));
136
+ if (s.else && Array.isArray(s.else)) {
137
+ s.else.forEach((sub, j) => validateStep(sub, `${path}.else[${j}]`));
138
+ }
139
+ }
140
+ else if (type === 'wait') {
141
+ if (typeof s.ms !== 'number')
142
+ throw new Error(`${path}.ms required for wait`);
143
+ }
144
+ else {
145
+ throw new Error(`${path}.type must be one of: run, a2a, parallel, if, wait (got: ${String(type)})`);
146
+ }
147
+ }
148
+ /**
149
+ * Exécute un scénario séquentiellement. Retourne tous les résultats.
150
+ */
151
+ export async function runScenario(scenario, ctx) {
152
+ // Init vars (input + step outputs)
153
+ const vars = { ...(scenario.vars ?? {}) };
154
+ const localCtx = { ...ctx, vars };
155
+ const results = [];
156
+ for (const step of scenario.steps) {
157
+ const result = await runStep(step, localCtx);
158
+ results.push(result);
159
+ if (result.output !== undefined) {
160
+ // Expose output aux steps suivants : ${stepId.output} et ${stepId}
161
+ const outputStr = typeof result.output === 'string' ? result.output : JSON.stringify(result.output);
162
+ localCtx.vars[result.stepId] = outputStr;
163
+ localCtx.vars[`${result.stepId}.output`] = outputStr;
164
+ }
165
+ if (!result.success && step.stopOnError) {
166
+ break;
167
+ }
168
+ }
169
+ return results;
170
+ }
171
+ async function runStep(step, ctx) {
172
+ const startTime = Date.now();
173
+ const log = ctx.log ?? (() => { });
174
+ try {
175
+ switch (step.type) {
176
+ case 'run': {
177
+ const prompt = interpolate(step.prompt, ctx.vars);
178
+ log(`▶ [${step.id}] run ${step.agent} (${step.runner})`);
179
+ const r = await ctx.runAgent({
180
+ agentName: step.agent,
181
+ runner: step.runner,
182
+ prompt,
183
+ model: step.model,
184
+ mode: step.mode,
185
+ path: step.path,
186
+ });
187
+ log(r.isError ? `✗ [${step.id}] failed` : `✓ [${step.id}] done (${Date.now() - startTime}ms)`);
188
+ return {
189
+ stepId: step.id,
190
+ type: 'run',
191
+ success: !r.isError,
192
+ output: r.text,
193
+ durationMs: Date.now() - startTime,
194
+ };
195
+ }
196
+ case 'a2a': {
197
+ const prompt = interpolate(step.prompt, ctx.vars);
198
+ log(`▶ [${step.id}] a2a ${step.from} → ${step.to}`);
199
+ const r = await ctx.runA2A({
200
+ fromAgent: step.from,
201
+ toAgent: step.to,
202
+ runner: step.runner,
203
+ prompt,
204
+ model: step.model,
205
+ });
206
+ log(r.isError ? `✗ [${step.id}] failed` : `✓ [${step.id}] done (${Date.now() - startTime}ms)`);
207
+ return {
208
+ stepId: step.id,
209
+ type: 'a2a',
210
+ success: !r.isError,
211
+ output: r.text,
212
+ durationMs: Date.now() - startTime,
213
+ };
214
+ }
215
+ case 'parallel': {
216
+ const waitAll = step.waitAll ?? true;
217
+ log(`▶ [${step.id}] parallel (${step.steps.length} steps, waitAll=${waitAll})`);
218
+ let subResults;
219
+ if (waitAll) {
220
+ subResults = await Promise.all(step.steps.map((s) => runStep(s, ctx)));
221
+ }
222
+ else {
223
+ // waitAll=false : retourne dès qu'un step réussit
224
+ // On lance tout, et on retourne au premier succès (les autres continuent en background)
225
+ const promises = step.steps.map((s) => runStep(s, ctx));
226
+ // Promise.any retourne le 1er à RÉSOUDRE (donc succès, car on catch les erreurs dans runStep)
227
+ const first = await Promise.any(promises);
228
+ // Cancel le reste en best-effort (ils continuent mais on n'attend pas)
229
+ subResults = [first];
230
+ }
231
+ const success = subResults.every((r) => r.success);
232
+ return {
233
+ stepId: step.id,
234
+ type: 'parallel',
235
+ success,
236
+ output: subResults,
237
+ durationMs: Date.now() - startTime,
238
+ };
239
+ }
240
+ case 'if': {
241
+ const condStr = interpolate(step.condition, ctx.vars);
242
+ const truthy = evaluateCondition(condStr);
243
+ log(`▶ [${step.id}] if (${condStr}) → ${truthy ? 'then' : 'else'}`);
244
+ const branch = truthy ? step.then : (step.else ?? []);
245
+ const subResults = [];
246
+ for (const s of branch) {
247
+ subResults.push(await runStep(s, ctx));
248
+ }
249
+ return {
250
+ stepId: step.id,
251
+ type: 'if',
252
+ success: subResults.every((r) => r.success),
253
+ output: subResults,
254
+ durationMs: Date.now() - startTime,
255
+ };
256
+ }
257
+ case 'wait': {
258
+ log(`▶ [${step.id}] wait ${step.ms}ms`);
259
+ await new Promise((resolve) => setTimeout(resolve, step.ms));
260
+ return {
261
+ stepId: step.id,
262
+ type: 'wait',
263
+ success: true,
264
+ durationMs: Date.now() - startTime,
265
+ };
266
+ }
267
+ default: {
268
+ const _exhaustive = step;
269
+ throw new Error(`Unknown step type: ${JSON.stringify(_exhaustive)}`);
270
+ }
271
+ }
272
+ }
273
+ catch (err) {
274
+ log(`💥 [${step.id}] crashed: ${err.message}`);
275
+ return {
276
+ stepId: step.id,
277
+ type: step.type,
278
+ success: false,
279
+ error: err.message,
280
+ durationMs: Date.now() - startTime,
281
+ };
282
+ }
283
+ }
284
+ /**
285
+ * Évalue une condition simple. Supporte :
286
+ * - "value" (truthy si non-vide)
287
+ * - ${var} == "literal"
288
+ * - ${var} != "literal"
289
+ * - ${var} > 5, < 5
290
+ * - ${var} && ${other}
291
+ * - !${var}
292
+ */
293
+ function evaluateCondition(expr) {
294
+ const trimmed = expr.trim();
295
+ if (!trimmed)
296
+ return false;
297
+ // ${var} == "literal"
298
+ let m = trimmed.match(/^(.+?)\s*==\s*["']([^"']*)["']$/);
299
+ if (m)
300
+ return m[1].trim() === m[2];
301
+ // ${var} != "literal"
302
+ m = trimmed.match(/^(.+?)\s*!=\s*["']([^"']*)["']$/);
303
+ if (m)
304
+ return m[1].trim() !== m[2];
305
+ // ${var} > N
306
+ m = trimmed.match(/^(.+?)\s*>\s*(\d+(?:\.\d+)?)$/);
307
+ if (m)
308
+ return Number(m[1].trim()) > Number(m[2]);
309
+ // ${var} < N
310
+ m = trimmed.match(/^(.+?)\s*<\s*(\d+(?:\.\d+)?)$/);
311
+ if (m)
312
+ return Number(m[1].trim()) < Number(m[2]);
313
+ // !${var}
314
+ if (trimmed.startsWith('!'))
315
+ return !evaluateCondition(trimmed.slice(1));
316
+ // ${a} && ${b}
317
+ if (trimmed.includes('&&')) {
318
+ return trimmed
319
+ .split('&&')
320
+ .map((p) => evaluateCondition(p.trim()))
321
+ .every(Boolean);
322
+ }
323
+ // ${a} || ${b}
324
+ if (trimmed.includes('||')) {
325
+ return trimmed
326
+ .split('||')
327
+ .map((p) => evaluateCondition(p.trim()))
328
+ .some(Boolean);
329
+ }
330
+ // Truthy simple
331
+ return Boolean(trimmed);
332
+ }
333
+ //# sourceMappingURL=ScenarioLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScenarioLoader.js","sourceRoot":"","sources":["../../src/bridge/ScenarioLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * ╔══════════════════════════════════════════════════════════════════════╗
3
+ * ║ OVERMIND BRIDGE — SessionStore (Multi-Tenant Session Map) ║
4
+ * ║ ║
5
+ * ║ Gère une map clé_externe → session_id avec TTL et persistence. ║
6
+ * ║ Inspiré du pattern bt-sms (phone → sessionId avec TTL 4h). ║
7
+ * ║ ║
8
+ * ║ USAGE ║
9
+ * ║ ───── ║
10
+ * ║ Clé externe = n'importe quoi : téléphone, user_id, channel_id, ║
11
+ * ║ conversation_id, etc. Le bridge isole les sessions par clé. ║
12
+ * ║ ║
13
+ * ║ { ║
14
+ * ║ "agent.run": { agentName, runner, prompt, externalKey: "+1418..." } ║
15
+ * ║ } ║
16
+ * ║ → le bridge retrouve ou crée une session pour cette clé, ║
17
+ * ║ la passe à l'agent, et la sauvegarde dans le store. ║
18
+ * ╚══════════════════════════════════════════════════════════════════════╝
19
+ */
20
+ import { type BridgeLogger } from './utils.js';
21
+ export interface SessionEntry {
22
+ /** Clé externe fournie par le caller (phone, userId, etc.) */
23
+ externalKey: string;
24
+ /** SessionId réel retourné par l'agent (Hermes/Claude/etc.) */
25
+ sessionId: string;
26
+ /** Agent name (pour multi-tenant multi-agent) */
27
+ agentName: string;
28
+ /** Runner utilisé (pour invalidation si le runner change) */
29
+ runner: string;
30
+ /** Timestamp dernière activité */
31
+ lastActivityAt: number;
32
+ /** Contexte additionnel optionnel (le CONTEXT_UPDATE de bt-sms) */
33
+ context?: Record<string, unknown>;
34
+ /** Statut temporaire (idle/busy — optionnel) */
35
+ status?: 'idle' | 'busy';
36
+ }
37
+ export interface SessionStoreConfig {
38
+ /** Chemin du fichier de persistence (optionnel — si absent, in-memory only) */
39
+ persistPath?: string;
40
+ /** TTL en ms (default: 4h, comme bt-sms) */
41
+ ttlMs?: number;
42
+ /** Cleanup interval en ms (default: 5min) */
43
+ cleanupIntervalMs?: number;
44
+ }
45
+ export interface SessionContextPatch {
46
+ /** Champs à patcher dans le context */
47
+ patch: Record<string, unknown>;
48
+ }
49
+ export declare class SessionStore {
50
+ private readonly map;
51
+ private readonly log;
52
+ private readonly config;
53
+ private cleanupTimer;
54
+ private writeQueue;
55
+ constructor(config?: SessionStoreConfig, logger?: BridgeLogger);
56
+ /**
57
+ * Initialise le store : charge le fichier de persistence si présent,
58
+ * démarre le cleanup périodique.
59
+ */
60
+ init(): Promise<void>;
61
+ /**
62
+ * Arrête le cleanup et persiste l'état final.
63
+ */
64
+ close(): Promise<void>;
65
+ /**
66
+ * Récupère une session par (externalKey, agentName).
67
+ * Retourne undefined si absente ou expirée.
68
+ */
69
+ get(externalKey: string, agentName: string): SessionEntry | undefined;
70
+ /**
71
+ * Sauvegarde ou met à jour une session. Retourne l'entrée.
72
+ */
73
+ set(entry: Omit<SessionEntry, 'lastActivityAt'> & {
74
+ lastActivityAt?: number;
75
+ }): SessionEntry;
76
+ /**
77
+ * Met à jour uniquement le sessionId (cas typique : après un run, on a le vrai ID).
78
+ */
79
+ updateSessionId(externalKey: string, agentName: string, sessionId: string, runner: string): SessionEntry | undefined;
80
+ /**
81
+ * Met à jour le context (pattern CONTEXT_UPDATE de bt-sms).
82
+ */
83
+ updateContext(externalKey: string, agentName: string, patch: Record<string, unknown>): SessionEntry | undefined;
84
+ /**
85
+ * Supprime une session.
86
+ */
87
+ delete(externalKey: string, agentName: string): boolean;
88
+ /**
89
+ * Purge toutes les sessions (reset complet).
90
+ */
91
+ clear(): void;
92
+ /**
93
+ * Liste toutes les sessions actives (non expirées).
94
+ */
95
+ list(): SessionEntry[];
96
+ /**
97
+ * Stats par agent.
98
+ */
99
+ stats(): {
100
+ total: number;
101
+ byAgent: Record<string, number>;
102
+ };
103
+ private makeKey;
104
+ private isExpired;
105
+ private purgeExpired;
106
+ private schedulePersist;
107
+ private persist;
108
+ }
109
+ //# sourceMappingURL=SessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionStore.d.ts","sourceRoot":"","sources":["../../src/bridge/SessionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CACmB;IAC1C,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,UAAU,CAAoC;gBAE1C,MAAM,GAAE,kBAAuB,EAAE,MAAM,CAAC,EAAE,YAAY;IAWlE;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;;OAGG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAWrE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY;IAQ5F;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAapH;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,GAAG,SAAS;IAU/G;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAMvD;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,IAAI,IAAI,YAAY,EAAE;IAKtB;;OAEG;IACH,KAAK,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAU3D,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,eAAe;YAOT,OAAO;CAiBtB"}