@anastops/mcp-server 0.1.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,495 @@
1
+ /**
2
+ * MongoDB persistence layer for MCP Server
3
+ * Stores sessions, tasks, agents, and artifacts for durability
4
+ */
5
+ import { MongoClient } from 'mongodb';
6
+ /**
7
+ * Persistence service for MongoDB
8
+ */
9
+ export class PersistenceService {
10
+ client = null;
11
+ db = null;
12
+ connected = false;
13
+ connectionPromise = null;
14
+ mongoUrl;
15
+ constructor(mongoUrl) {
16
+ this.mongoUrl = mongoUrl ?? process.env['MONGODB_URL'] ?? 'mongodb://admin:changeme@localhost:27018/anastops?authSource=admin';
17
+ }
18
+ /**
19
+ * Connect to MongoDB (lazy, only when needed)
20
+ */
21
+ async connect() {
22
+ if (this.connected && this.db)
23
+ return true;
24
+ // Reuse existing connection attempt
25
+ if (this.connectionPromise) {
26
+ return this.connectionPromise;
27
+ }
28
+ this.connectionPromise = this._connect();
29
+ return this.connectionPromise;
30
+ }
31
+ async _connect() {
32
+ try {
33
+ this.client = new MongoClient(this.mongoUrl, {
34
+ serverSelectionTimeoutMS: 5000,
35
+ connectTimeoutMS: 5000,
36
+ });
37
+ await this.client.connect();
38
+ this.db = this.client.db('anastops');
39
+ this.connected = true;
40
+ // Create indexes for efficient queries
41
+ await this.createIndexes();
42
+ return true;
43
+ }
44
+ catch (error) {
45
+ console.error('MongoDB connection failed:', error instanceof Error ? error.message : error);
46
+ this.connected = false;
47
+ return false;
48
+ }
49
+ }
50
+ /**
51
+ * Create indexes for collections
52
+ */
53
+ async createIndexes() {
54
+ if (!this.db)
55
+ return;
56
+ try {
57
+ // Sessions indexes
58
+ const sessions = this.db.collection('sessions');
59
+ await sessions.createIndex({ status: 1 });
60
+ await sessions.createIndex({ user_id: 1 });
61
+ await sessions.createIndex({ created_at: -1 });
62
+ await sessions.createIndex({ updated_at: -1 });
63
+ // Tasks indexes
64
+ const tasks = this.db.collection('tasks');
65
+ await tasks.createIndex({ session_id: 1 });
66
+ await tasks.createIndex({ status: 1 });
67
+ await tasks.createIndex({ created_at: -1 });
68
+ // Agents indexes
69
+ const agents = this.db.collection('agents');
70
+ await agents.createIndex({ session_id: 1 });
71
+ await agents.createIndex({ status: 1 });
72
+ // Artifacts indexes
73
+ const artifacts = this.db.collection('artifacts');
74
+ await artifacts.createIndex({ session_id: 1 });
75
+ await artifacts.createIndex({ task_id: 1 });
76
+ }
77
+ catch {
78
+ // Indexes may already exist, ignore errors
79
+ }
80
+ }
81
+ /**
82
+ * Check if connected
83
+ */
84
+ isConnected() {
85
+ return this.connected;
86
+ }
87
+ // ============ Sessions ============
88
+ /**
89
+ * Save a session
90
+ */
91
+ async saveSession(session) {
92
+ if (!await this.connect())
93
+ return;
94
+ if (!this.db)
95
+ return;
96
+ const doc = {
97
+ ...session,
98
+ _id: session.id,
99
+ created_at: new Date(session.created_at),
100
+ updated_at: new Date(session.updated_at),
101
+ };
102
+ await this.db.collection('sessions').replaceOne({ _id: session.id }, doc, { upsert: true });
103
+ }
104
+ /**
105
+ * Get a session by ID
106
+ */
107
+ async getSession(sessionId) {
108
+ if (!await this.connect())
109
+ return null;
110
+ if (!this.db)
111
+ return null;
112
+ const doc = await this.db.collection('sessions').findOne({ _id: sessionId });
113
+ if (!doc)
114
+ return null;
115
+ return this.docToSession(doc);
116
+ }
117
+ /**
118
+ * List sessions with optional filters
119
+ */
120
+ async listSessions(filters) {
121
+ if (!await this.connect())
122
+ return [];
123
+ if (!this.db)
124
+ return [];
125
+ const query = {};
126
+ if (filters?.status)
127
+ query['status'] = filters.status;
128
+ if (filters?.user_id)
129
+ query['user_id'] = filters.user_id;
130
+ const docs = await this.db.collection('sessions')
131
+ .find(query)
132
+ .sort({ updated_at: -1 })
133
+ .limit(filters?.limit ?? 100)
134
+ .toArray();
135
+ return docs.map(this.docToSession);
136
+ }
137
+ docToSession(doc) {
138
+ return {
139
+ id: doc._id,
140
+ user_id: doc.user_id,
141
+ parent_session_id: doc.parent_session_id,
142
+ fork_point: doc.fork_point,
143
+ fork_reason: doc.fork_reason,
144
+ status: doc.status,
145
+ objective: doc.objective,
146
+ created_at: new Date(doc.created_at),
147
+ updated_at: new Date(doc.updated_at),
148
+ metadata: doc.metadata,
149
+ };
150
+ }
151
+ // ============ Tasks ============
152
+ /**
153
+ * Save a task
154
+ */
155
+ async saveTask(task) {
156
+ if (!await this.connect())
157
+ return;
158
+ if (!this.db)
159
+ return;
160
+ const doc = {
161
+ ...task,
162
+ _id: task.id,
163
+ created_at: new Date(task.created_at),
164
+ started_at: task.started_at ? new Date(task.started_at) : null,
165
+ completed_at: task.completed_at ? new Date(task.completed_at) : null,
166
+ };
167
+ await this.db.collection('tasks').replaceOne({ _id: task.id }, doc, { upsert: true });
168
+ }
169
+ /**
170
+ * Get a task by ID
171
+ */
172
+ async getTask(taskId) {
173
+ if (!await this.connect())
174
+ return null;
175
+ if (!this.db)
176
+ return null;
177
+ const doc = await this.db.collection('tasks').findOne({ _id: taskId });
178
+ if (!doc)
179
+ return null;
180
+ return this.docToTask(doc);
181
+ }
182
+ /**
183
+ * List tasks with optional filters
184
+ */
185
+ async listTasks(filters) {
186
+ if (!await this.connect())
187
+ return [];
188
+ if (!this.db)
189
+ return [];
190
+ const query = {};
191
+ if (filters?.session_id)
192
+ query['session_id'] = filters.session_id;
193
+ if (filters?.status)
194
+ query['status'] = filters.status;
195
+ const docs = await this.db.collection('tasks')
196
+ .find(query)
197
+ .sort({ created_at: -1 })
198
+ .limit(filters?.limit ?? 100)
199
+ .toArray();
200
+ return docs.map(this.docToTask);
201
+ }
202
+ docToTask(doc) {
203
+ return {
204
+ id: doc._id,
205
+ session_id: doc.session_id,
206
+ agent_id: doc.agent_id,
207
+ type: doc.type,
208
+ status: doc.status,
209
+ description: doc.description,
210
+ input: doc.input,
211
+ output: doc.output,
212
+ error: doc.error,
213
+ complexity_score: doc.complexity_score,
214
+ routing_tier: doc.routing_tier,
215
+ provider: doc.provider,
216
+ model: doc.model,
217
+ token_usage: doc.token_usage,
218
+ created_at: new Date(doc.created_at),
219
+ started_at: doc.started_at ? new Date(doc.started_at) : null,
220
+ completed_at: doc.completed_at ? new Date(doc.completed_at) : null,
221
+ dependencies: doc.dependencies,
222
+ priority: doc.priority,
223
+ retry_count: doc.retry_count,
224
+ max_retries: doc.max_retries,
225
+ };
226
+ }
227
+ // ============ Agents ============
228
+ /**
229
+ * Save an agent
230
+ */
231
+ async saveAgent(agent) {
232
+ if (!await this.connect())
233
+ return;
234
+ if (!this.db)
235
+ return;
236
+ const doc = {
237
+ ...agent,
238
+ _id: agent.id,
239
+ created_at: new Date(agent.created_at),
240
+ last_activity_at: new Date(agent.last_activity_at),
241
+ };
242
+ await this.db.collection('agents').replaceOne({ _id: agent.id }, doc, { upsert: true });
243
+ }
244
+ /**
245
+ * Get an agent by ID
246
+ */
247
+ async getAgent(agentId) {
248
+ if (!await this.connect())
249
+ return null;
250
+ if (!this.db)
251
+ return null;
252
+ const doc = await this.db.collection('agents').findOne({ _id: agentId });
253
+ if (!doc)
254
+ return null;
255
+ return this.docToAgent(doc);
256
+ }
257
+ /**
258
+ * List agents with optional filters
259
+ */
260
+ async listAgents(filters) {
261
+ if (!await this.connect())
262
+ return [];
263
+ if (!this.db)
264
+ return [];
265
+ const query = {};
266
+ if (filters?.session_id)
267
+ query['session_id'] = filters.session_id;
268
+ if (filters?.status)
269
+ query['status'] = filters.status;
270
+ const docs = await this.db.collection('agents')
271
+ .find(query)
272
+ .sort({ created_at: -1 })
273
+ .limit(filters?.limit ?? 100)
274
+ .toArray();
275
+ return docs.map(this.docToAgent);
276
+ }
277
+ docToAgent(doc) {
278
+ return {
279
+ id: doc._id,
280
+ session_id: doc.session_id,
281
+ role: doc.role,
282
+ name: doc.name,
283
+ status: doc.status,
284
+ provider: doc.provider,
285
+ model: doc.model,
286
+ current_task_id: doc.current_task_id,
287
+ tasks_completed: doc.tasks_completed,
288
+ tasks_failed: doc.tasks_failed,
289
+ tokens_used: doc.tokens_used,
290
+ created_at: new Date(doc.created_at),
291
+ last_activity_at: new Date(doc.last_activity_at),
292
+ config: doc.config,
293
+ };
294
+ }
295
+ // ============ Artifacts ============
296
+ /**
297
+ * Save an artifact
298
+ */
299
+ async saveArtifact(artifact) {
300
+ if (!await this.connect())
301
+ return;
302
+ if (!this.db)
303
+ return;
304
+ const doc = {
305
+ ...artifact,
306
+ _id: artifact.id,
307
+ };
308
+ await this.db.collection('artifacts').replaceOne({ _id: artifact.id }, doc, { upsert: true });
309
+ }
310
+ /**
311
+ * Get an artifact by ID
312
+ */
313
+ async getArtifact(artifactId) {
314
+ if (!await this.connect())
315
+ return null;
316
+ if (!this.db)
317
+ return null;
318
+ const doc = await this.db.collection('artifacts').findOne({ _id: artifactId });
319
+ if (!doc)
320
+ return null;
321
+ return this.docToArtifact(doc);
322
+ }
323
+ /**
324
+ * List artifacts with optional filters
325
+ */
326
+ async listArtifacts(filters) {
327
+ if (!await this.connect())
328
+ return [];
329
+ if (!this.db)
330
+ return [];
331
+ const query = {};
332
+ if (filters?.session_id)
333
+ query['session_id'] = filters.session_id;
334
+ if (filters?.task_id)
335
+ query['task_id'] = filters.task_id;
336
+ if (filters?.type)
337
+ query['type'] = filters.type;
338
+ const docs = await this.db.collection('artifacts')
339
+ .find(query)
340
+ .sort({ created_at: -1 })
341
+ .limit(filters?.limit ?? 100)
342
+ .toArray();
343
+ return docs.map(this.docToArtifact);
344
+ }
345
+ docToArtifact(doc) {
346
+ return {
347
+ id: doc._id,
348
+ session_id: doc.session_id,
349
+ task_id: doc.task_id,
350
+ type: doc.type,
351
+ name: doc.name,
352
+ extension: doc.extension,
353
+ content: doc.content,
354
+ content_hash: doc.content_hash,
355
+ size_bytes: doc.size_bytes,
356
+ summary: doc.summary,
357
+ token_count: doc.token_count,
358
+ relevance_score: doc.relevance_score,
359
+ metadata: doc.metadata,
360
+ created_at: doc.created_at,
361
+ updated_at: doc.updated_at,
362
+ };
363
+ }
364
+ // ============ Deletion Methods ============
365
+ /**
366
+ * Delete a session and all its related data
367
+ */
368
+ async deleteSession(sessionId) {
369
+ if (!await this.connect())
370
+ return false;
371
+ if (!this.db)
372
+ return false;
373
+ try {
374
+ // Delete session (cast _id to any for string-based IDs)
375
+ await this.db.collection('sessions').deleteOne({ _id: sessionId });
376
+ // Delete all tasks for this session
377
+ await this.db.collection('tasks').deleteMany({ session_id: sessionId });
378
+ // Delete all agents for this session
379
+ await this.db.collection('agents').deleteMany({ session_id: sessionId });
380
+ // Delete all artifacts for this session
381
+ await this.db.collection('artifacts').deleteMany({ session_id: sessionId });
382
+ return true;
383
+ }
384
+ catch (error) {
385
+ console.error('Failed to delete session:', error instanceof Error ? error.message : error);
386
+ return false;
387
+ }
388
+ }
389
+ /**
390
+ * Delete multiple sessions by filter
391
+ */
392
+ async deleteSessions(filters) {
393
+ if (!await this.connect())
394
+ return { deleted_count: 0, session_ids: [] };
395
+ if (!this.db)
396
+ return { deleted_count: 0, session_ids: [] };
397
+ try {
398
+ const query = {};
399
+ if (filters.status) {
400
+ query['status'] = filters.status;
401
+ }
402
+ if (filters.older_than) {
403
+ query['created_at'] = { $lt: filters.older_than };
404
+ }
405
+ if (filters.session_ids && filters.session_ids.length > 0) {
406
+ query['_id'] = { $in: filters.session_ids };
407
+ }
408
+ // First get the session IDs that match
409
+ const sessions = await this.db.collection('sessions')
410
+ .find(query)
411
+ .project({ _id: 1 })
412
+ .toArray();
413
+ const sessionIds = sessions.map(s => s._id);
414
+ if (sessionIds.length === 0) {
415
+ return { deleted_count: 0, session_ids: [] };
416
+ }
417
+ // Delete all related data
418
+ await this.db.collection('tasks').deleteMany({ session_id: { $in: sessionIds } });
419
+ await this.db.collection('agents').deleteMany({ session_id: { $in: sessionIds } });
420
+ await this.db.collection('artifacts').deleteMany({ session_id: { $in: sessionIds } });
421
+ // Delete sessions
422
+ const result = await this.db.collection('sessions').deleteMany({ _id: { $in: sessionIds } });
423
+ return { deleted_count: result.deletedCount, session_ids: sessionIds };
424
+ }
425
+ catch (error) {
426
+ console.error('Failed to delete sessions:', error instanceof Error ? error.message : error);
427
+ return { deleted_count: 0, session_ids: [] };
428
+ }
429
+ }
430
+ /**
431
+ * Get full session report with all related data
432
+ */
433
+ async getSessionReport(sessionId) {
434
+ if (!await this.connect())
435
+ return null;
436
+ if (!this.db)
437
+ return null;
438
+ const session = await this.getSession(sessionId);
439
+ if (!session)
440
+ return null;
441
+ const [tasks, agents, artifacts] = await Promise.all([
442
+ this.listTasks({ session_id: sessionId, limit: 500 }),
443
+ this.listAgents({ session_id: sessionId, limit: 100 }),
444
+ this.listArtifacts({ session_id: sessionId, limit: 100 }),
445
+ ]);
446
+ return { session, tasks, agents, artifacts };
447
+ }
448
+ /**
449
+ * Get reports for all sessions
450
+ */
451
+ async getAllSessionReports(filters) {
452
+ if (!await this.connect())
453
+ return [];
454
+ if (!this.db)
455
+ return [];
456
+ const listFilters = {
457
+ limit: filters?.limit ?? 50,
458
+ };
459
+ if (filters?.status !== undefined) {
460
+ listFilters.status = filters.status;
461
+ }
462
+ const sessions = await this.listSessions(listFilters);
463
+ const reports = await Promise.all(sessions.map(async (session) => {
464
+ const [tasks, agents, artifacts] = await Promise.all([
465
+ this.listTasks({ session_id: session.id, limit: 500 }),
466
+ this.listAgents({ session_id: session.id, limit: 100 }),
467
+ this.listArtifacts({ session_id: session.id, limit: 100 }),
468
+ ]);
469
+ return { session, tasks, agents, artifacts };
470
+ }));
471
+ return reports;
472
+ }
473
+ /**
474
+ * Close connection
475
+ */
476
+ async close() {
477
+ if (this.client) {
478
+ await this.client.close();
479
+ this.client = null;
480
+ this.db = null;
481
+ this.connected = false;
482
+ }
483
+ }
484
+ }
485
+ /**
486
+ * Singleton instance
487
+ */
488
+ let persistenceInstance = null;
489
+ export function getPersistence() {
490
+ if (!persistenceInstance) {
491
+ persistenceInstance = new PersistenceService();
492
+ }
493
+ return persistenceInstance;
494
+ }
495
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAW,MAAM,SAAS,CAAC;AA6B/C;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,GAAuB,IAAI,CAAC;IAClC,EAAE,GAAc,IAAI,CAAC;IACrB,SAAS,GAAG,KAAK,CAAC;IAClB,iBAAiB,GAA4B,IAAI,CAAC;IAElD,QAAQ,CAAS;IAEzB,YAAY,QAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,oEAAoE,CAAC;IACjI,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE3C,oCAAoC;QACpC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC3C,wBAAwB,EAAE,IAAI;gBAC9B,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,uCAAuC;YACvC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE3B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,IAAI,CAAC;YACH,mBAAmB;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAE/C,gBAAgB;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAE5C,iBAAiB;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAExC,oBAAoB;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,qCAAqC;IAErC;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAgB;QAChC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,MAAM,GAAG,GAAkB;YACzB,GAAG,OAAO;YACV,GAAG,EAAE,OAAO,CAAC,EAAE;YACf,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxC,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SACzC,CAAC;QAEF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAgB,UAAU,CAAC,CAAC,UAAU,CAC5D,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,EACnB,GAAG,EACH,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAgB,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAIlB;QACC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAExB,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,OAAO,EAAE,MAAM;YAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACtD,IAAI,OAAO,EAAE,OAAO;YAAE,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAgB,UAAU,CAAC;aAC7D,IAAI,CAAC,KAAK,CAAC;aACX,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;aACxB,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;aAC5B,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAEO,YAAY,CAAC,GAAkB;QACrC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,GAAG;YACX,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,GAAG,CAAC,MAA2B;YACvC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACpC,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC;IACJ,CAAC;IAED,kCAAkC;IAElC;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAU;QACvB,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,MAAM,GAAG,GAAe;YACtB,GAAG,IAAI;YACP,GAAG,EAAE,IAAI,CAAC,EAAE;YACZ,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;YAC9D,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;SACrE,CAAC;QAEF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAa,OAAO,CAAC,CAAC,UAAU,CACtD,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAChB,GAAG,EACH,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAa,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAIf;QACC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAExB,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,OAAO,EAAE,UAAU;YAAE,KAAK,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QAClE,IAAI,OAAO,EAAE,MAAM;YAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAEtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAa,OAAO,CAAC;aACvD,IAAI,CAAC,KAAK,CAAC;aACX,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;aACxB,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;aAC5B,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEO,SAAS,CAAC,GAAe;QAC/B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,GAAG;YACX,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAoB;YAC9B,MAAM,EAAE,GAAG,CAAC,MAAwB;YACpC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACpC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;YAC5D,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;YAClE,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC;IACJ,CAAC;IAED,mCAAmC;IAEnC;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,KAAY;QAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,MAAM,GAAG,GAAgB;YACvB,GAAG,KAAK;YACR,GAAG,EAAE,KAAK,CAAC,EAAE;YACb,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACtC,gBAAgB,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;SACnD,CAAC;QAEF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAc,QAAQ,CAAC,CAAC,UAAU,CACxD,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EACjB,GAAG,EACH,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAc,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAIhB;QACC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAExB,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,OAAO,EAAE,UAAU;YAAE,KAAK,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QAClE,IAAI,OAAO,EAAE,MAAM;YAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAEtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAc,QAAQ,CAAC;aACzD,IAAI,CAAC,KAAK,CAAC;aACX,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;aACxB,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;aAC5B,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAEO,UAAU,CAAC,GAAgB;QACjC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,GAAG;YACX,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,IAAI,EAAE,GAAG,CAAC,IAAqB;YAC/B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAyB;YACrC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACpC,gBAAgB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAChD,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;IAED,sCAAsC;IAEtC;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAkB;QACnC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,MAAM,GAAG,GAAmB;YAC1B,GAAG,QAAQ;YACX,GAAG,EAAE,QAAQ,CAAC,EAAE;SACjB,CAAC;QAEF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAiB,WAAW,CAAC,CAAC,UAAU,CAC9D,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,EACpB,GAAG,EACH,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAiB,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAKnB;QACC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAExB,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,OAAO,EAAE,UAAU;YAAE,KAAK,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QAClE,IAAI,OAAO,EAAE,OAAO;YAAE,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QACzD,IAAI,OAAO,EAAE,IAAI;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QAEhD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAiB,WAAW,CAAC;aAC/D,IAAI,CAAC,KAAK,CAAC;aACX,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;aACxB,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;aAC5B,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAEO,aAAa,CAAC,GAAmB;QACvC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,GAAG;YACX,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAED,6CAA6C;IAE7C;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAE3B,IAAI,CAAC;YACH,wDAAwD;YACxD,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAA6B,CAAC,CAAC;YAC9F,oCAAoC;YACpC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,qCAAqC;YACrC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YACzE,wCAAwC;YACxC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3F,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAIpB;QACC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAE3D,IAAI,CAAC;YACH,MAAM,KAAK,GAA4B,EAAE,CAAC;YAE1C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YACnC,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9C,CAAC;YAED,uCAAuC;YACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAgB,UAAU,CAAC;iBACjE,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;iBACnB,OAAO,EAAE,CAAC;YAEb,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAE5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;YAC/C,CAAC;YAED,0BAA0B;YAC1B,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAClF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACnF,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAEtF,kBAAkB;YAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAE7F,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5F,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAMtC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;SAC1D,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAG1B;QAMC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAExB,MAAM,WAAW,GAAwC;YACvD,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;SAC5B,CAAC;QACF,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACtC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnD,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;gBACtD,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;gBACvD,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;aAC3D,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC/C,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,IAAI,mBAAmB,GAA8B,IAAI,CAAC;AAE1D,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@anastops/mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "MCP server exposing 28 orchestration tools for AI agents",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "anastops-mcp": "./dist/index.js"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "dev": "tsc --watch",
20
+ "start": "node dist/index.js",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "test:coverage": "vitest run --coverage",
24
+ "lint": "eslint src --ext .ts",
25
+ "typecheck": "tsc --noEmit",
26
+ "clean": "rm -rf dist"
27
+ },
28
+ "dependencies": {
29
+ "@anastops/adapters": "workspace:*",
30
+ "@anastops/core": "workspace:*",
31
+ "@anthropic-ai/claude-agent-sdk": "^0.2.12",
32
+ "@modelcontextprotocol/sdk": "^1.25.2",
33
+ "chalk": "^5.6.2",
34
+ "lru-cache": "^10.2.0",
35
+ "mongodb": "^6.16.0",
36
+ "nanoid": "^5.1.6",
37
+ "zod": "^4.3.5"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^20.11.0",
41
+ "typescript": "^5.9.3",
42
+ "vitest": "^4.0.17"
43
+ },
44
+ "peerDependencies": {
45
+ "typescript": ">=5.0.0"
46
+ },
47
+ "files": [
48
+ "dist"
49
+ ],
50
+ "keywords": [
51
+ "mcp",
52
+ "model-context-protocol",
53
+ "ai",
54
+ "orchestration",
55
+ "claude"
56
+ ],
57
+ "repository": {
58
+ "type": "git",
59
+ "url": "https://github.com/Yish-AI/anastops.git",
60
+ "directory": "packages/mcp-server"
61
+ },
62
+ "bugs": {
63
+ "url": "https://github.com/Yish-AI/anastops/issues"
64
+ },
65
+ "homepage": "https://github.com/Yish-AI/anastops#readme",
66
+ "license": "MIT",
67
+ "publishConfig": {
68
+ "access": "public"
69
+ }
70
+ }