@sesamespace/hivemind 0.1.0 → 0.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 (122) hide show
  1. package/README.md +53 -23
  2. package/dist/chunk-2I2O6X5D.js +1408 -0
  3. package/dist/chunk-2I2O6X5D.js.map +1 -0
  4. package/dist/chunk-DVR2KBL7.js +186 -0
  5. package/dist/chunk-DVR2KBL7.js.map +1 -0
  6. package/dist/chunk-MBS5A6BZ.js +132 -0
  7. package/dist/chunk-MBS5A6BZ.js.map +1 -0
  8. package/dist/chunk-NVJ424TB.js +731 -0
  9. package/dist/chunk-NVJ424TB.js.map +1 -0
  10. package/dist/chunk-RNK5Q5GR.js +44 -0
  11. package/dist/chunk-RNK5Q5GR.js.map +1 -0
  12. package/dist/chunk-XNOWVLXD.js +160 -0
  13. package/dist/chunk-XNOWVLXD.js.map +1 -0
  14. package/dist/commands/fleet.js +8 -192
  15. package/dist/commands/fleet.js.map +1 -1
  16. package/dist/commands/init.js +6 -169
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/service.js +7 -0
  19. package/dist/commands/service.js.map +1 -0
  20. package/dist/commands/start.js +8 -38
  21. package/dist/commands/start.js.map +1 -1
  22. package/dist/index.js +40 -15
  23. package/dist/index.js.map +1 -1
  24. package/dist/main.js +49 -29
  25. package/dist/main.js.map +1 -1
  26. package/dist/start.js +18 -16
  27. package/dist/start.js.map +1 -1
  28. package/package.json +8 -16
  29. package/dist/__tests__/fleet-integration.test.d.ts +0 -9
  30. package/dist/__tests__/fleet-integration.test.d.ts.map +0 -1
  31. package/dist/__tests__/fleet-integration.test.js +0 -201
  32. package/dist/__tests__/fleet-integration.test.js.map +0 -1
  33. package/dist/__tests__/fleet.test.d.ts +0 -7
  34. package/dist/__tests__/fleet.test.d.ts.map +0 -1
  35. package/dist/__tests__/fleet.test.js +0 -171
  36. package/dist/__tests__/fleet.test.js.map +0 -1
  37. package/dist/__tests__/integration.test.d.ts +0 -2
  38. package/dist/__tests__/integration.test.d.ts.map +0 -1
  39. package/dist/__tests__/integration.test.js +0 -348
  40. package/dist/__tests__/integration.test.js.map +0 -1
  41. package/dist/agent.d.ts +0 -27
  42. package/dist/agent.d.ts.map +0 -1
  43. package/dist/agent.js +0 -217
  44. package/dist/agent.js.map +0 -1
  45. package/dist/commands/fleet.d.ts +0 -13
  46. package/dist/commands/fleet.d.ts.map +0 -1
  47. package/dist/commands/init.d.ts +0 -2
  48. package/dist/commands/init.d.ts.map +0 -1
  49. package/dist/commands/start.d.ts +0 -2
  50. package/dist/commands/start.d.ts.map +0 -1
  51. package/dist/config.d.ts +0 -44
  52. package/dist/config.d.ts.map +0 -1
  53. package/dist/config.js +0 -73
  54. package/dist/config.js.map +0 -1
  55. package/dist/context.d.ts +0 -50
  56. package/dist/context.d.ts.map +0 -1
  57. package/dist/context.js +0 -153
  58. package/dist/context.js.map +0 -1
  59. package/dist/fleet/fleet-manager.d.ts +0 -86
  60. package/dist/fleet/fleet-manager.d.ts.map +0 -1
  61. package/dist/fleet/fleet-manager.js +0 -298
  62. package/dist/fleet/fleet-manager.js.map +0 -1
  63. package/dist/fleet/memory-sync.d.ts +0 -91
  64. package/dist/fleet/memory-sync.d.ts.map +0 -1
  65. package/dist/fleet/memory-sync.js +0 -292
  66. package/dist/fleet/memory-sync.js.map +0 -1
  67. package/dist/fleet/primary-client.d.ts +0 -49
  68. package/dist/fleet/primary-client.d.ts.map +0 -1
  69. package/dist/fleet/primary-client.js +0 -222
  70. package/dist/fleet/primary-client.js.map +0 -1
  71. package/dist/fleet/worker-protocol.d.ts +0 -125
  72. package/dist/fleet/worker-protocol.d.ts.map +0 -1
  73. package/dist/fleet/worker-protocol.js +0 -27
  74. package/dist/fleet/worker-protocol.js.map +0 -1
  75. package/dist/fleet/worker-server.d.ts +0 -53
  76. package/dist/fleet/worker-server.d.ts.map +0 -1
  77. package/dist/fleet/worker-server.js +0 -191
  78. package/dist/fleet/worker-server.js.map +0 -1
  79. package/dist/index.d.ts +0 -26
  80. package/dist/index.d.ts.map +0 -1
  81. package/dist/llm-client.d.ts +0 -24
  82. package/dist/llm-client.d.ts.map +0 -1
  83. package/dist/llm-client.js +0 -40
  84. package/dist/llm-client.js.map +0 -1
  85. package/dist/main.d.ts +0 -3
  86. package/dist/main.d.ts.map +0 -1
  87. package/dist/memory-client.d.ts +0 -88
  88. package/dist/memory-client.d.ts.map +0 -1
  89. package/dist/memory-client.js +0 -185
  90. package/dist/memory-client.js.map +0 -1
  91. package/dist/pipeline.d.ts +0 -2
  92. package/dist/pipeline.d.ts.map +0 -1
  93. package/dist/pipeline.js +0 -125
  94. package/dist/pipeline.js.map +0 -1
  95. package/dist/prompt.d.ts +0 -6
  96. package/dist/prompt.d.ts.map +0 -1
  97. package/dist/prompt.js +0 -75
  98. package/dist/prompt.js.map +0 -1
  99. package/dist/sesame.d.ts +0 -33
  100. package/dist/sesame.d.ts.map +0 -1
  101. package/dist/sesame.js +0 -67
  102. package/dist/sesame.js.map +0 -1
  103. package/dist/start.d.ts +0 -3
  104. package/dist/start.d.ts.map +0 -1
  105. package/dist/task-engine.d.ts +0 -32
  106. package/dist/task-engine.d.ts.map +0 -1
  107. package/dist/task-engine.js +0 -80
  108. package/dist/task-engine.js.map +0 -1
  109. package/dist/worker.d.ts +0 -73
  110. package/dist/worker.d.ts.map +0 -1
  111. package/dist/worker.js +0 -279
  112. package/dist/worker.js.map +0 -1
  113. package/install.sh +0 -186
  114. package/packages/memory/Cargo.lock +0 -6480
  115. package/packages/memory/Cargo.toml +0 -21
  116. package/packages/memory/src/src/context.rs +0 -179
  117. package/packages/memory/src/src/embeddings.rs +0 -51
  118. package/packages/memory/src/src/main.rs +0 -626
  119. package/packages/memory/src/src/promotion.rs +0 -637
  120. package/packages/memory/src/src/scoring.rs +0 -131
  121. package/packages/memory/src/src/store.rs +0 -460
  122. package/packages/memory/src/src/tasks.rs +0 -321
@@ -1,298 +0,0 @@
1
- /**
2
- * Fleet Manager — high-level orchestration layer on top of PrimaryClient.
3
- *
4
- * Provides:
5
- * - Worker provisioning (register by URL)
6
- * - Context assignment and migration between workers
7
- * - Aggregate fleet status / dashboard data
8
- * - Worker discovery and removal
9
- */
10
- import { PrimaryClient } from "./primary-client.js";
11
- import { WORKER_ROUTES, HEALTH_TIMEOUT_MS, } from "./worker-protocol.js";
12
- export class FleetManager {
13
- primary;
14
- latestHealth = new Map();
15
- latestStatus = new Map();
16
- knownContexts = new Set();
17
- constructor(primary) {
18
- this.primary = primary ?? new PrimaryClient();
19
- }
20
- getPrimary() {
21
- return this.primary;
22
- }
23
- // --- Worker Provisioning ---
24
- /**
25
- * Register a new worker by URL. Probes the worker's health endpoint
26
- * to discover capabilities, then registers it with the Primary.
27
- */
28
- async addWorker(url) {
29
- // Normalise trailing slash
30
- const baseUrl = url.replace(/\/+$/, "");
31
- // Probe worker health to discover capabilities
32
- const capabilities = await this.probeWorker(baseUrl);
33
- const reg = this.primary.handleRegistration({ url: baseUrl, capabilities });
34
- const worker = this.primary.getWorker(reg.worker_id);
35
- if (!worker) {
36
- throw new Error("Worker registered but not found in registry");
37
- }
38
- return worker;
39
- }
40
- /** Remove a worker from the fleet, unassigning its contexts first. */
41
- async removeWorker(workerId) {
42
- const worker = this.primary.getWorker(workerId);
43
- if (!worker)
44
- return false;
45
- // Unassign all contexts from this worker
46
- for (const ctx of [...worker.assigned_contexts]) {
47
- await this.primary.unassignContext(workerId, ctx);
48
- }
49
- return this.primary.deregister(workerId);
50
- }
51
- // --- Context Assignment ---
52
- /** Assign a context to a specific worker. */
53
- async assignContext(workerId, contextName, description = "") {
54
- const result = await this.primary.assignContext(workerId, contextName, description);
55
- if (result.accepted) {
56
- this.knownContexts.add(contextName);
57
- }
58
- return result;
59
- }
60
- /** Migrate a context from one worker to another. */
61
- async migrateContext(contextName, toWorkerId) {
62
- const fromWorker = this.primary.findWorkerForContext(contextName);
63
- if (!fromWorker) {
64
- // Context isn't assigned anywhere — just assign to target
65
- const resp = await this.primary.assignContext(toWorkerId, contextName);
66
- return {
67
- context_name: contextName,
68
- from_worker: "(none)",
69
- to_worker: toWorkerId,
70
- success: resp.accepted,
71
- reason: resp.accepted ? undefined : resp.reason,
72
- };
73
- }
74
- if (fromWorker.id === toWorkerId) {
75
- return {
76
- context_name: contextName,
77
- from_worker: fromWorker.id,
78
- to_worker: toWorkerId,
79
- success: false,
80
- reason: "Context already assigned to this worker",
81
- };
82
- }
83
- // Assign to new worker first, then unassign from old
84
- const assignResult = await this.primary.assignContext(toWorkerId, contextName);
85
- if (!assignResult.accepted) {
86
- return {
87
- context_name: contextName,
88
- from_worker: fromWorker.id,
89
- to_worker: toWorkerId,
90
- success: false,
91
- reason: assignResult.reason ?? "Target worker rejected assignment",
92
- };
93
- }
94
- await this.primary.unassignContext(fromWorker.id, contextName);
95
- return {
96
- context_name: contextName,
97
- from_worker: fromWorker.id,
98
- to_worker: toWorkerId,
99
- success: true,
100
- };
101
- }
102
- // --- Status & Health ---
103
- /** Refresh health for all workers. */
104
- async refreshHealth() {
105
- const workers = this.primary.getWorkers();
106
- const checks = workers.map(async (w) => {
107
- const health = await this.primary.checkHealth(w.id);
108
- if (health) {
109
- this.latestHealth.set(w.id, health);
110
- }
111
- else {
112
- // Mark unreachable but keep stale data
113
- this.latestHealth.set(w.id, {
114
- worker_id: w.id,
115
- status: "unreachable",
116
- uptime_seconds: 0,
117
- assigned_contexts: w.assigned_contexts,
118
- active_context: null,
119
- memory_daemon_ok: false,
120
- ollama_ok: false,
121
- });
122
- }
123
- });
124
- await Promise.all(checks);
125
- }
126
- /** Record a status report (called when worker POSTs status to Primary). */
127
- recordStatus(workerId, status) {
128
- this.latestStatus.set(workerId, status);
129
- }
130
- /** Get the full fleet dashboard. */
131
- async getDashboard() {
132
- await this.refreshHealth();
133
- const workers = this.primary.getWorkers();
134
- let healthy = 0;
135
- let degraded = 0;
136
- let unreachable = 0;
137
- let totalContexts = 0;
138
- const workerSummaries = workers.map((w) => {
139
- const health = this.latestHealth.get(w.id);
140
- const status = this.latestStatus.get(w.id);
141
- const healthStatus = health?.status ?? "unreachable";
142
- if (healthStatus === "healthy")
143
- healthy++;
144
- else if (healthStatus === "degraded")
145
- degraded++;
146
- else
147
- unreachable++;
148
- totalContexts += w.assigned_contexts.length;
149
- return {
150
- id: w.id,
151
- url: w.url,
152
- health: healthStatus,
153
- contexts: w.assigned_contexts,
154
- current_task: status?.current_task ?? null,
155
- activity: status?.activity ?? "idle",
156
- uptime_seconds: health?.uptime_seconds ?? null,
157
- capabilities: w.capabilities,
158
- last_heartbeat: w.last_heartbeat,
159
- };
160
- });
161
- // Determine unassigned contexts
162
- const assignedContexts = new Set(workers.flatMap((w) => w.assigned_contexts));
163
- const unassigned = [...this.knownContexts].filter((c) => !assignedContexts.has(c));
164
- return {
165
- total_workers: workers.length,
166
- healthy,
167
- degraded,
168
- unreachable,
169
- total_contexts: totalContexts,
170
- workers: workerSummaries,
171
- unassigned_contexts: unassigned,
172
- generated_at: new Date().toISOString(),
173
- };
174
- }
175
- /** Get a quick status summary without refreshing health. */
176
- getStatusSnapshot() {
177
- const workers = this.primary.getWorkers();
178
- let healthy = 0;
179
- let degraded = 0;
180
- let unreachable = 0;
181
- let totalContexts = 0;
182
- const workerSummaries = workers.map((w) => {
183
- const health = this.latestHealth.get(w.id);
184
- const status = this.latestStatus.get(w.id);
185
- const healthStatus = health?.status ?? "unreachable";
186
- if (healthStatus === "healthy")
187
- healthy++;
188
- else if (healthStatus === "degraded")
189
- degraded++;
190
- else
191
- unreachable++;
192
- totalContexts += w.assigned_contexts.length;
193
- return {
194
- id: w.id,
195
- url: w.url,
196
- health: healthStatus,
197
- contexts: w.assigned_contexts,
198
- current_task: status?.current_task ?? null,
199
- activity: status?.activity ?? "idle",
200
- uptime_seconds: health?.uptime_seconds ?? null,
201
- capabilities: w.capabilities,
202
- last_heartbeat: w.last_heartbeat,
203
- };
204
- });
205
- const assignedContexts = new Set(workers.flatMap((w) => w.assigned_contexts));
206
- const unassigned = [...this.knownContexts].filter((c) => !assignedContexts.has(c));
207
- return {
208
- total_workers: workers.length,
209
- healthy,
210
- degraded,
211
- unreachable,
212
- total_contexts: totalContexts,
213
- workers: workerSummaries,
214
- unassigned_contexts: unassigned,
215
- generated_at: new Date().toISOString(),
216
- };
217
- }
218
- // --- Worker Discovery ---
219
- /**
220
- * Scan a list of candidate URLs for workers. Returns the URLs
221
- * that responded to a health probe. Useful for auto-detecting
222
- * workers on a local network.
223
- */
224
- async discoverWorkers(candidateUrls) {
225
- const found = [];
226
- const probes = candidateUrls.map(async (url) => {
227
- const baseUrl = url.replace(/\/+$/, "");
228
- try {
229
- const controller = new AbortController();
230
- const timeout = setTimeout(() => controller.abort(), HEALTH_TIMEOUT_MS);
231
- const resp = await fetch(`${baseUrl}${WORKER_ROUTES.health}`, {
232
- signal: controller.signal,
233
- });
234
- clearTimeout(timeout);
235
- if (resp.ok) {
236
- found.push(baseUrl);
237
- }
238
- }
239
- catch {
240
- // Not reachable, skip
241
- }
242
- });
243
- await Promise.all(probes);
244
- return found;
245
- }
246
- /**
247
- * Scan a subnet-style range for workers. Generates URLs for
248
- * a base IP with ports and probes them.
249
- * Example: scanSubnet("192.168.1", [10, 11, 12], 3100)
250
- */
251
- async scanSubnet(baseIp, hostIds, port) {
252
- const urls = hostIds.map((id) => `http://${baseIp}.${id}:${port}`);
253
- return this.discoverWorkers(urls);
254
- }
255
- /** Track a context name so it appears in unassigned lists. */
256
- registerContext(contextName) {
257
- this.knownContexts.add(contextName);
258
- }
259
- /** Start health polling (delegates to PrimaryClient). */
260
- startHealthPolling(intervalMs) {
261
- this.primary.startHealthPolling(intervalMs);
262
- }
263
- /** Stop health polling. */
264
- stopHealthPolling() {
265
- this.primary.stopHealthPolling();
266
- }
267
- // --- Internal ---
268
- async probeWorker(baseUrl) {
269
- try {
270
- const controller = new AbortController();
271
- const timeout = setTimeout(() => controller.abort(), HEALTH_TIMEOUT_MS);
272
- const resp = await fetch(`${baseUrl}${WORKER_ROUTES.health}`, {
273
- signal: controller.signal,
274
- });
275
- clearTimeout(timeout);
276
- if (resp.ok) {
277
- const health = (await resp.json());
278
- return {
279
- max_contexts: health.assigned_contexts.length + 4, // assume capacity
280
- has_ollama: health.ollama_ok,
281
- has_memory_daemon: health.memory_daemon_ok,
282
- available_models: [],
283
- };
284
- }
285
- }
286
- catch {
287
- // Fall through to defaults
288
- }
289
- // Return default capabilities if probe fails
290
- return {
291
- max_contexts: 4,
292
- has_ollama: false,
293
- has_memory_daemon: false,
294
- available_models: [],
295
- };
296
- }
297
- }
298
- //# sourceMappingURL=fleet-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fleet-manager.js","sourceRoot":"","sources":["../../src/fleet/fleet-manager.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- /**
2
- * Cross-machine memory sync.
3
- *
4
- * Workers periodically push key L3 knowledge back to the Primary.
5
- * Primary can push Global context updates (L3 + L2 episodes) to workers.
6
- *
7
- * Conflict resolution:
8
- * - L3: last-write-wins (compared by updated_at timestamp)
9
- * - L2: append-only (episodes are never overwritten, only added)
10
- *
11
- * Sync protocol:
12
- * POST /sync/pull — Worker sends L3 knowledge to Primary
13
- * POST /sync/push — Primary sends Global context updates to Worker
14
- */
15
- import type { MemoryClient } from "../memory-client.js";
16
- import type { PrimaryClient } from "./primary-client.js";
17
- import type { WorkerServer } from "./worker-server.js";
18
- import type { SyncPullRequest, SyncPullResponse, SyncPushRequest, SyncPushResponse, SyncL3Entry } from "./worker-protocol.js";
19
- export interface WorkerSyncOptions {
20
- workerId: string;
21
- primaryUrl: string;
22
- memory: MemoryClient;
23
- server: WorkerServer;
24
- syncIntervalMs?: number;
25
- }
26
- /**
27
- * Worker-side memory sync. Periodically sends L3 knowledge from assigned
28
- * contexts back to the Primary, and accepts Global context pushes.
29
- */
30
- export declare class WorkerMemorySync {
31
- private workerId;
32
- private primaryUrl;
33
- private memory;
34
- private syncTimer;
35
- private syncIntervalMs;
36
- private knownL2Ids;
37
- private knownL3Ids;
38
- constructor(opts: WorkerSyncOptions);
39
- /** Start periodic sync (Worker -> Primary). */
40
- start(contextNames: () => string[]): void;
41
- /** Stop periodic sync. */
42
- stop(): void;
43
- /**
44
- * Pull L3 knowledge from all assigned contexts and send to Primary.
45
- * Called periodically by the sync timer.
46
- */
47
- pullTowardsPrimary(contextNames: string[]): Promise<void>;
48
- /**
49
- * Handle an incoming push of Global context updates from the Primary.
50
- * L3: last-write-wins. L2: append-only.
51
- */
52
- handlePush(req: SyncPushRequest): Promise<SyncPushResponse>;
53
- getSyncIntervalMs(): number;
54
- }
55
- export interface PrimarySyncOptions {
56
- primary: PrimaryClient;
57
- memory: MemoryClient;
58
- syncIntervalMs?: number;
59
- }
60
- /**
61
- * Primary-side memory sync. Handles incoming L3 pulls from workers and
62
- * can push Global context updates out to all workers.
63
- */
64
- export declare class PrimaryMemorySync {
65
- private primary;
66
- private memory;
67
- private syncIntervalMs;
68
- private pushTimer;
69
- private l3Store;
70
- private lastPushAt;
71
- constructor(opts: PrimarySyncOptions);
72
- /**
73
- * Handle an incoming pull — Worker sending L3 knowledge to Primary.
74
- * Uses last-write-wins for conflict resolution.
75
- */
76
- handlePull(req: SyncPullRequest): Promise<SyncPullResponse>;
77
- /**
78
- * Push Global context updates to all workers.
79
- * Fetches current Global L3 knowledge and recent L2 episodes,
80
- * then pushes to every registered worker.
81
- */
82
- pushGlobalToAll(): Promise<Map<string, SyncPushResponse | null>>;
83
- /** Start periodic Global push to all workers. */
84
- startPushLoop(): void;
85
- /** Stop periodic push. */
86
- stopPushLoop(): void;
87
- /** Get all synced L3 entries the Primary has received. */
88
- getSyncedEntries(): SyncL3Entry[];
89
- getSyncIntervalMs(): number;
90
- }
91
- //# sourceMappingURL=memory-sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-sync.d.ts","sourceRoot":"","sources":["../../src/fleet/memory-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,EAEZ,MAAM,sBAAsB,CAAC;AA8B9B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,UAAU,CAAkC;gBAExC,IAAI,EAAE,iBAAiB;IAUnC,+CAA+C;IAC/C,KAAK,CAAC,YAAY,EAAE,MAAM,MAAM,EAAE,GAAG,IAAI;IASzC,0BAA0B;IAC1B,IAAI,IAAI,IAAI;IAOZ;;;OAGG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC/D;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqDjE,iBAAiB,IAAI,MAAM;CAG5B;AAID,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAqC;gBAE3C,IAAI,EAAE,kBAAkB;IASpC;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuCjE;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAmDtE,iDAAiD;IACjD,aAAa,IAAI,IAAI;IASrB,0BAA0B;IAC1B,YAAY,IAAI,IAAI;IAOpB,0DAA0D;IAC1D,gBAAgB,IAAI,WAAW,EAAE;IAIjC,iBAAiB,IAAI,MAAM;CAG5B"}