@bonginkan/maria 2.1.0 → 2.1.2

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,427 @@
1
+ 'use strict';
2
+
3
+ var events = require('events');
4
+ var os = require('os');
5
+ var child_process = require('child_process');
6
+ var util = require('util');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var os__namespace = /*#__PURE__*/_interopNamespace(os);
27
+
28
+ var __defProp = Object.defineProperty;
29
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
30
+ var execAsync = util.promisify(child_process.exec);
31
+ var CommandIntent = /* @__PURE__ */ ((CommandIntent2) => {
32
+ CommandIntent2["FILE_OPERATION"] = "FILE_OPERATION";
33
+ CommandIntent2["PROCESS_MANAGEMENT"] = "PROCESS_MANAGEMENT";
34
+ CommandIntent2["SYSTEM_INFO"] = "SYSTEM_INFO";
35
+ CommandIntent2["NETWORK_OPERATION"] = "NETWORK_OPERATION";
36
+ CommandIntent2["PACKAGE_MANAGEMENT"] = "PACKAGE_MANAGEMENT";
37
+ CommandIntent2["PERFORMANCE_OPTIMIZATION"] = "PERFORMANCE_OPTIMIZATION";
38
+ CommandIntent2["DISK_MANAGEMENT"] = "DISK_MANAGEMENT";
39
+ CommandIntent2["USER_MANAGEMENT"] = "USER_MANAGEMENT";
40
+ CommandIntent2["SERVICE_CONTROL"] = "SERVICE_CONTROL";
41
+ CommandIntent2["LOG_ANALYSIS"] = "LOG_ANALYSIS";
42
+ CommandIntent2["SECURITY_AUDIT"] = "SECURITY_AUDIT";
43
+ CommandIntent2["BACKUP_RESTORE"] = "BACKUP_RESTORE";
44
+ CommandIntent2["CONTAINER_OPERATION"] = "CONTAINER_OPERATION";
45
+ CommandIntent2["UNKNOWN"] = "UNKNOWN";
46
+ return CommandIntent2;
47
+ })(CommandIntent || {});
48
+ var RiskLevel = /* @__PURE__ */ ((RiskLevel2) => {
49
+ RiskLevel2["SAFE"] = "SAFE";
50
+ RiskLevel2["LOW"] = "LOW";
51
+ RiskLevel2["MEDIUM"] = "MEDIUM";
52
+ RiskLevel2["HIGH"] = "HIGH";
53
+ RiskLevel2["CRITICAL"] = "CRITICAL";
54
+ return RiskLevel2;
55
+ })(RiskLevel || {});
56
+ var CommandCategory = /* @__PURE__ */ ((CommandCategory2) => {
57
+ CommandCategory2["READ_ONLY"] = "READ_ONLY";
58
+ CommandCategory2["WRITE"] = "WRITE";
59
+ CommandCategory2["DELETE"] = "DELETE";
60
+ CommandCategory2["SYSTEM_MODIFY"] = "SYSTEM_MODIFY";
61
+ CommandCategory2["NETWORK"] = "NETWORK";
62
+ CommandCategory2["PROCESS"] = "PROCESS";
63
+ CommandCategory2["SECURITY"] = "SECURITY";
64
+ return CommandCategory2;
65
+ })(CommandCategory || {});
66
+ var ActionType = /* @__PURE__ */ ((ActionType2) => {
67
+ ActionType2["IMMEDIATE"] = "IMMEDIATE";
68
+ ActionType2["SCHEDULED"] = "SCHEDULED";
69
+ ActionType2["CONDITIONAL"] = "CONDITIONAL";
70
+ ActionType2["MONITORING"] = "MONITORING";
71
+ ActionType2["PREVENTIVE"] = "PREVENTIVE";
72
+ return ActionType2;
73
+ })(ActionType || {});
74
+ var ContextAnalyzer = class extends events.EventEmitter {
75
+ static {
76
+ __name(this, "ContextAnalyzer");
77
+ }
78
+ intentPatterns;
79
+ systemState = null;
80
+ updateInterval = null;
81
+ constructor() {
82
+ super();
83
+ this.intentPatterns = this.initializeIntentPatterns();
84
+ this.startSystemMonitoring();
85
+ }
86
+ initializeIntentPatterns() {
87
+ const patterns = /* @__PURE__ */ new Map();
88
+ patterns.set("FILE_OPERATION" /* FILE_OPERATION */, [
89
+ /\b(file|files|directory|folder|copy|move|delete|remove|create|mkdir|touch|find|search|locate)\b/i,
90
+ /\b(ls|cd|pwd|cp|mv|rm|mkdir|rmdir|touch|find|grep|sed|awk)\b/i,
91
+ /\b(permission|chmod|chown|access)\b/i
92
+ ]);
93
+ patterns.set("PROCESS_MANAGEMENT" /* PROCESS_MANAGEMENT */, [
94
+ /\b(process|processes|kill|stop|start|restart|pid|running|ps|top|htop)\b/i,
95
+ /\b(cpu|memory|usage|performance|slow|hang|frozen|unresponsive)\b/i,
96
+ /\b(service|daemon|systemctl|systemd)\b/i
97
+ ]);
98
+ patterns.set("SYSTEM_INFO" /* SYSTEM_INFO */, [
99
+ /\b(system|info|information|status|check|show|display|version|kernel)\b/i,
100
+ /\b(uname|hostname|uptime|date|who|w|df|du|free)\b/i,
101
+ /\b(hardware|cpu|memory|disk|network)\b/i
102
+ ]);
103
+ patterns.set("NETWORK_OPERATION" /* NETWORK_OPERATION */, [
104
+ /\b(network|connection|internet|wifi|ethernet|ip|port|socket)\b/i,
105
+ /\b(ping|traceroute|netstat|ss|lsof|tcpdump|curl|wget|nc)\b/i,
106
+ /\b(firewall|iptables|routing|dns)\b/i
107
+ ]);
108
+ patterns.set("PACKAGE_MANAGEMENT" /* PACKAGE_MANAGEMENT */, [
109
+ /\b(install|uninstall|update|upgrade|package|dependency|library)\b/i,
110
+ /\b(apt|yum|dnf|snap|brew|npm|pip|gem|cargo|docker)\b/i,
111
+ /\b(software|application|program)\b/i
112
+ ]);
113
+ patterns.set("PERFORMANCE_OPTIMIZATION" /* PERFORMANCE_OPTIMIZATION */, [
114
+ /\b(optimize|performance|speed|slow|fast|improve|enhance)\b/i,
115
+ /\b(cache|clean|cleanup|free|space|memory|swap)\b/i,
116
+ /\b(benchmark|profile|analyze)\b/i
117
+ ]);
118
+ patterns.set("DISK_MANAGEMENT" /* DISK_MANAGEMENT */, [
119
+ /\b(disk|storage|partition|mount|unmount|filesystem|volume)\b/i,
120
+ /\b(df|du|fdisk|mkfs|fsck|mount|umount)\b/i,
121
+ /\b(space|full|usage|capacity)\b/i
122
+ ]);
123
+ patterns.set("LOG_ANALYSIS" /* LOG_ANALYSIS */, [
124
+ /\b(log|logs|journal|syslog|error|warning|debug|trace)\b/i,
125
+ /\b(tail|head|journalctl|dmesg|last|history)\b/i,
126
+ /\b(analyze|parse|filter|search)\b/i
127
+ ]);
128
+ patterns.set("SECURITY_AUDIT" /* SECURITY_AUDIT */, [
129
+ /\b(security|audit|vulnerability|scan|check|permission|access)\b/i,
130
+ /\b(sudo|root|privilege|authentication|password|ssh|ssl)\b/i,
131
+ /\b(firewall|selinux|apparmor|encryption)\b/i
132
+ ]);
133
+ patterns.set("BACKUP_RESTORE" /* BACKUP_RESTORE */, [
134
+ /\b(backup|restore|archive|compress|extract|tar|zip|rsync)\b/i,
135
+ /\b(snapshot|recovery|disaster|migrate)\b/i,
136
+ /\b(save|preserve|protect)\b/i
137
+ ]);
138
+ return patterns;
139
+ }
140
+ async analyzeUserIntent(input) {
141
+ const scores = /* @__PURE__ */ new Map();
142
+ for (const [intent, patterns] of this.intentPatterns) {
143
+ let score = 0;
144
+ for (const pattern of patterns) {
145
+ const matches = input.match(pattern);
146
+ if (matches) {
147
+ score += matches.length;
148
+ }
149
+ }
150
+ scores.set(intent, score);
151
+ }
152
+ let maxScore = 0;
153
+ let detectedIntent = "UNKNOWN" /* UNKNOWN */;
154
+ for (const [intent, score] of scores) {
155
+ if (score > maxScore) {
156
+ maxScore = score;
157
+ detectedIntent = intent;
158
+ }
159
+ }
160
+ this.emit("intentAnalyzed", { input, intent: detectedIntent, confidence: maxScore });
161
+ return detectedIntent;
162
+ }
163
+ async determineRequiredCommands(intent) {
164
+ const commands = [];
165
+ switch (intent) {
166
+ case "FILE_OPERATION" /* FILE_OPERATION */:
167
+ commands.push(
168
+ this.createCommand("ls", ["-la"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
169
+ this.createCommand("find", [".", "-type", "f"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
170
+ );
171
+ break;
172
+ case "PROCESS_MANAGEMENT" /* PROCESS_MANAGEMENT */:
173
+ commands.push(
174
+ this.createCommand("ps", ["aux"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
175
+ this.createCommand("top", ["-b", "-n", "1"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
176
+ );
177
+ break;
178
+ case "SYSTEM_INFO" /* SYSTEM_INFO */:
179
+ commands.push(
180
+ this.createCommand("uname", ["-a"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
181
+ this.createCommand("df", ["-h"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
182
+ this.createCommand("free", ["-h"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
183
+ );
184
+ break;
185
+ case "NETWORK_OPERATION" /* NETWORK_OPERATION */:
186
+ commands.push(
187
+ this.createCommand("netstat", ["-tuln"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
188
+ this.createCommand("ss", ["-tuln"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
189
+ );
190
+ break;
191
+ case "PERFORMANCE_OPTIMIZATION" /* PERFORMANCE_OPTIMIZATION */:
192
+ commands.push(
193
+ this.createCommand("vmstat", ["1", "5"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
194
+ this.createCommand("iostat", ["-x", "1", "5"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
195
+ );
196
+ break;
197
+ case "DISK_MANAGEMENT" /* DISK_MANAGEMENT */:
198
+ commands.push(
199
+ this.createCommand("df", ["-h"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
200
+ this.createCommand("du", ["-sh", "*"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
201
+ this.createCommand("lsblk", [], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
202
+ );
203
+ break;
204
+ case "LOG_ANALYSIS" /* LOG_ANALYSIS */:
205
+ commands.push(
206
+ this.createCommand("journalctl", ["-xe", "--no-pager", "-n", "50"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */),
207
+ this.createCommand("dmesg", ["--level=err,warn", "-T"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
208
+ );
209
+ break;
210
+ default:
211
+ commands.push(
212
+ this.createCommand("echo", ["Intent not recognized"], [], false, "SAFE" /* SAFE */, "READ_ONLY" /* READ_ONLY */)
213
+ );
214
+ }
215
+ return commands;
216
+ }
217
+ async assessSystemState() {
218
+ const context = {
219
+ os: os__namespace.type(),
220
+ platform: os__namespace.platform(),
221
+ arch: os__namespace.arch(),
222
+ hostname: os__namespace.hostname(),
223
+ uptime: os__namespace.uptime(),
224
+ loadAverage: os__namespace.loadavg(),
225
+ totalMemory: os__namespace.totalmem(),
226
+ freeMemory: os__namespace.freemem(),
227
+ cpuUsage: await this.getCPUUsage(),
228
+ diskUsage: await this.getDiskUsage(),
229
+ networkInterfaces: os__namespace.networkInterfaces(),
230
+ currentUser: os__namespace.userInfo().username,
231
+ isRoot: process.getuid ? process.getuid() === 0 : false,
232
+ environmentVariables: process.env
233
+ };
234
+ return context;
235
+ }
236
+ async predictNextActions(currentState) {
237
+ const actions = [];
238
+ const context = currentState.context;
239
+ const memoryUsagePercent = (context.totalMemory - context.freeMemory) / context.totalMemory * 100;
240
+ if (memoryUsagePercent > 80) {
241
+ actions.push({
242
+ type: "IMMEDIATE" /* IMMEDIATE */,
243
+ command: this.createCommand(
244
+ "sync",
245
+ [],
246
+ [],
247
+ false,
248
+ "SAFE" /* SAFE */,
249
+ "SYSTEM_MODIFY" /* SYSTEM_MODIFY */,
250
+ "Sync filesystem buffers"
251
+ ),
252
+ priority: 1,
253
+ reason: "High memory usage detected",
254
+ expectedOutcome: "Free up memory by syncing buffers"
255
+ });
256
+ actions.push({
257
+ type: "CONDITIONAL" /* CONDITIONAL */,
258
+ command: this.createCommand(
259
+ "echo",
260
+ ["3"],
261
+ [],
262
+ true,
263
+ "MEDIUM" /* MEDIUM */,
264
+ "SYSTEM_MODIFY" /* SYSTEM_MODIFY */,
265
+ "Clear page cache"
266
+ ),
267
+ priority: 2,
268
+ reason: "Memory usage critical",
269
+ expectedOutcome: "Drop caches to free memory"
270
+ });
271
+ }
272
+ for (const disk of context.diskUsage) {
273
+ const usage = parseInt(disk.usePercent);
274
+ if (usage > 90) {
275
+ actions.push({
276
+ type: "IMMEDIATE" /* IMMEDIATE */,
277
+ command: this.createCommand(
278
+ "find",
279
+ [disk.mountPoint, "-type", "f", "-size", "+100M"],
280
+ [],
281
+ false,
282
+ "SAFE" /* SAFE */,
283
+ "READ_ONLY" /* READ_ONLY */,
284
+ "Find large files"
285
+ ),
286
+ priority: 1,
287
+ reason: `Disk usage critical on ${disk.mountPoint}`,
288
+ expectedOutcome: "Identify large files for cleanup"
289
+ });
290
+ }
291
+ }
292
+ const loadThreshold = os__namespace.cpus().length * 2;
293
+ const loadAvg = context.loadAverage?.[0];
294
+ if (loadAvg && loadAvg > loadThreshold) {
295
+ actions.push({
296
+ type: "MONITORING" /* MONITORING */,
297
+ command: this.createCommand(
298
+ "top",
299
+ ["-b", "-n", "1", "-o", "%CPU"],
300
+ [],
301
+ false,
302
+ "SAFE" /* SAFE */,
303
+ "READ_ONLY" /* READ_ONLY */,
304
+ "Monitor CPU usage"
305
+ ),
306
+ priority: 1,
307
+ reason: "High system load detected",
308
+ expectedOutcome: "Identify resource-intensive processes"
309
+ });
310
+ }
311
+ if (context.uptime > 86400 * 30) {
312
+ actions.push({
313
+ type: "PREVENTIVE" /* PREVENTIVE */,
314
+ command: this.createCommand(
315
+ "apt",
316
+ ["update"],
317
+ [],
318
+ true,
319
+ "LOW" /* LOW */,
320
+ "SYSTEM_MODIFY" /* SYSTEM_MODIFY */,
321
+ "Update package lists"
322
+ ),
323
+ priority: 3,
324
+ reason: "System running for over 30 days",
325
+ expectedOutcome: "Ensure package lists are current"
326
+ });
327
+ }
328
+ return actions.sort((a, b) => a.priority - b.priority);
329
+ }
330
+ createCommand(command, args, flags, sudo, risk, category, description = "") {
331
+ return {
332
+ command,
333
+ args,
334
+ flags,
335
+ sudo,
336
+ risk,
337
+ category,
338
+ description
339
+ };
340
+ }
341
+ async getCPUUsage() {
342
+ try {
343
+ const { stdout } = await execAsync("top -b -n 1 | grep 'Cpu(s)' | awk '{print $2}' | cut -d'%' -f1");
344
+ return parseFloat(stdout.trim()) || 0;
345
+ } catch {
346
+ return 0;
347
+ }
348
+ }
349
+ async getDiskUsage() {
350
+ try {
351
+ const { stdout } = await execAsync("df -h");
352
+ const lines = stdout.trim().split("\n").slice(1);
353
+ return lines.map((line) => {
354
+ const parts = line.split(/\s+/);
355
+ return {
356
+ filesystem: parts[0] || "",
357
+ size: parts[1] || "",
358
+ used: parts[2] || "",
359
+ available: parts[3] || "",
360
+ usePercent: parts[4] || "",
361
+ mountPoint: parts[5] || ""
362
+ };
363
+ });
364
+ } catch {
365
+ return [];
366
+ }
367
+ }
368
+ async updateSystemState() {
369
+ const context = await this.assessSystemState();
370
+ let activeServices = [];
371
+ let openPorts = [];
372
+ let runningProcesses = 0;
373
+ try {
374
+ const { stdout: psOutput } = await execAsync("ps aux | wc -l");
375
+ runningProcesses = parseInt(psOutput.trim()) - 1;
376
+ } catch {
377
+ }
378
+ try {
379
+ if (process.platform === "linux") {
380
+ const { stdout } = await execAsync("systemctl list-units --state=running --no-pager --no-legend | head -20");
381
+ activeServices = stdout.trim().split("\n").map((line) => line.split(/\s+/)[0] || "").filter((s) => s);
382
+ }
383
+ } catch {
384
+ }
385
+ try {
386
+ const { stdout } = await execAsync("netstat -tuln | grep LISTEN");
387
+ openPorts = stdout.trim().split("\n").map((line) => {
388
+ const match = line.match(/:(\d+)\s/);
389
+ return match && match[1] ? parseInt(match[1]) : 0;
390
+ }).filter((port) => port > 0);
391
+ } catch {
392
+ }
393
+ this.systemState = {
394
+ context,
395
+ runningProcesses,
396
+ activeServices,
397
+ openPorts,
398
+ recentCommands: [],
399
+ currentWorkingDirectory: process.cwd(),
400
+ timestamp: /* @__PURE__ */ new Date()
401
+ };
402
+ this.emit("systemStateUpdated", this.systemState);
403
+ }
404
+ startSystemMonitoring() {
405
+ this.updateSystemState();
406
+ this.updateInterval = setInterval(() => {
407
+ this.updateSystemState();
408
+ }, 3e4);
409
+ }
410
+ stopMonitoring() {
411
+ if (this.updateInterval) {
412
+ clearInterval(this.updateInterval);
413
+ this.updateInterval = null;
414
+ }
415
+ }
416
+ getSystemState() {
417
+ return this.systemState;
418
+ }
419
+ };
420
+
421
+ exports.ActionType = ActionType;
422
+ exports.CommandCategory = CommandCategory;
423
+ exports.CommandIntent = CommandIntent;
424
+ exports.ContextAnalyzer = ContextAnalyzer;
425
+ exports.RiskLevel = RiskLevel;
426
+ //# sourceMappingURL=context-analyzer.js.map
427
+ //# sourceMappingURL=context-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/linux-command-intelligence/context-analyzer.ts"],"names":["promisify","exec","CommandIntent","RiskLevel","CommandCategory","ActionType","EventEmitter","os"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAM,SAAA,GAAYA,eAAUC,kBAAI,CAAA;AAEzB,IAAK,aAAA,qBAAAC,cAAAA,KAAL;AACL,EAAAA,eAAA,gBAAA,CAAA,GAAiB,gBAAA;AACjB,EAAAA,eAAA,oBAAA,CAAA,GAAqB,oBAAA;AACrB,EAAAA,eAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,eAAA,mBAAA,CAAA,GAAoB,mBAAA;AACpB,EAAAA,eAAA,oBAAA,CAAA,GAAqB,oBAAA;AACrB,EAAAA,eAAA,0BAAA,CAAA,GAA2B,0BAAA;AAC3B,EAAAA,eAAA,iBAAA,CAAA,GAAkB,iBAAA;AAClB,EAAAA,eAAA,iBAAA,CAAA,GAAkB,iBAAA;AAClB,EAAAA,eAAA,iBAAA,CAAA,GAAkB,iBAAA;AAClB,EAAAA,eAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,eAAA,gBAAA,CAAA,GAAiB,gBAAA;AACjB,EAAAA,eAAA,gBAAA,CAAA,GAAiB,gBAAA;AACjB,EAAAA,eAAA,qBAAA,CAAA,GAAsB,qBAAA;AACtB,EAAAA,eAAA,SAAA,CAAA,GAAU,SAAA;AAdA,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AA4BL,IAAK,SAAA,qBAAAC,UAAAA,KAAL;AACL,EAAAA,WAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,WAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,WAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,WAAA,UAAA,CAAA,GAAW,UAAA;AALD,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAQL,IAAK,eAAA,qBAAAC,gBAAAA,KAAL;AACL,EAAAA,iBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,iBAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,iBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,iBAAA,eAAA,CAAA,GAAgB,eAAA;AAChB,EAAAA,iBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,iBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,iBAAA,UAAA,CAAA,GAAW,UAAA;AAPD,EAAA,OAAAA,gBAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA;AAsDL,IAAK,UAAA,qBAAAC,WAAAA,KAAL;AACL,EAAAA,YAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,YAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,YAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,YAAA,YAAA,CAAA,GAAa,YAAA;AACb,EAAAA,YAAA,YAAA,CAAA,GAAa,YAAA;AALH,EAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA;AAQL,IAAM,eAAA,GAAN,cAA8BC,mBAAA,CAAa;AAAA,EAzGlD;AAyGkD,IAAA,MAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AAAA,EACxC,cAAA;AAAA,EACA,WAAA,GAAkC,IAAA;AAAA,EAClC,cAAA,GAAwC,IAAA;AAAA,EAEhD,WAAA,GAAc;AACZ,IAAA,KAAA,EAAM;AACN,IAAA,IAAA,CAAK,cAAA,GAAiB,KAAK,wBAAA,EAAyB;AACpD,IAAA,IAAA,CAAK,qBAAA,EAAsB;AAAA,EAC7B;AAAA,EAEQ,wBAAA,GAAyD;AAC/D,IAAA,MAAM,QAAA,uBAAe,GAAA,EAA6B;AAElD,IAAA,QAAA,CAAS,IAAI,gBAAA,uBAA8B;AAAA,MACzC,kGAAA;AAAA,MACA,+DAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,oBAAA,2BAAkC;AAAA,MAC7C,0EAAA;AAAA,MACA,mEAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,aAAA,oBAA2B;AAAA,MACtC,yEAAA;AAAA,MACA,oDAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,mBAAA,0BAAiC;AAAA,MAC5C,iEAAA;AAAA,MACA,6DAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,oBAAA,2BAAkC;AAAA,MAC7C,oEAAA;AAAA,MACA,uDAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,0BAAA,iCAAwC;AAAA,MACnD,6DAAA;AAAA,MACA,mDAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,iBAAA,wBAA+B;AAAA,MAC1C,+DAAA;AAAA,MACA,2CAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,cAAA,qBAA4B;AAAA,MACvC,0DAAA;AAAA,MACA,gDAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,gBAAA,uBAA8B;AAAA,MACzC,kEAAA;AAAA,MACA,4DAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,IAAI,gBAAA,uBAA8B;AAAA,MACzC,8DAAA;AAAA,MACA,2CAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,MAAa,kBAAkB,KAAA,EAAuC;AACpE,IAAA,MAAM,MAAA,uBAAa,GAAA,EAA2B;AAE9C,IAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,QAAQ,CAAA,IAAK,KAAK,cAAA,EAAgB;AACpD,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,QAAA,MAAM,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AACnC,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,KAAA,IAAS,OAAA,CAAQ,MAAA;AAAA,QACnB;AAAA,MACF;AACA,MAAA,MAAA,CAAO,GAAA,CAAI,QAAQ,KAAK,CAAA;AAAA,IAC1B;AAEA,IAAA,IAAI,QAAA,GAAW,CAAA;AACf,IAAA,IAAI,cAAA,GAAiB,SAAA;AAErB,IAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,KAAK,CAAA,IAAK,MAAA,EAAQ;AACpC,MAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,cAAA,GAAiB,MAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,IAAA,CAAK,kBAAkB,EAAE,KAAA,EAAO,QAAQ,cAAA,EAAgB,UAAA,EAAY,UAAU,CAAA;AACnF,IAAA,OAAO,cAAA;AAAA,EACT;AAAA,EAEA,MAAa,0BAA0B,MAAA,EAAgD;AACrF,IAAA,MAAM,WAA2B,EAAC;AAElC,IAAA,QAAQ,MAAA;AAAQ,MACd,KAAK,gBAAA;AACH,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,CAAC,KAAK,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UACtF,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,CAAC,GAAA,EAAK,OAAA,EAAS,GAAG,CAAA,EAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SACtG;AACA,QAAA;AAAA,MAEF,KAAK,oBAAA;AACH,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,CAAC,KAAK,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UACtF,IAAA,CAAK,aAAA,CAAc,KAAA,EAAO,CAAC,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA,EAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SACnG;AACA,QAAA;AAAA,MAEF,KAAK,aAAA;AACH,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,CAAC,IAAI,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UACxF,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,CAAC,IAAI,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UACrF,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,CAAC,IAAI,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SACzF;AACA,QAAA;AAAA,MAEF,KAAK,mBAAA;AACH,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,SAAA,EAAW,CAAC,OAAO,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UAC7F,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,CAAC,OAAO,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SAC1F;AACA,QAAA;AAAA,MAEF,KAAK,0BAAA;AACH,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,QAAA,EAAU,CAAC,GAAA,EAAK,GAAG,CAAA,EAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UAC7F,IAAA,CAAK,aAAA,CAAc,QAAA,EAAU,CAAC,IAAA,EAAM,GAAA,EAAK,GAAG,CAAA,EAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SACrG;AACA,QAAA;AAAA,MAEF,KAAK,iBAAA;AACH,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,CAAC,IAAI,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UACrF,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,CAAC,KAAA,EAAO,GAAG,CAAA,EAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA,iBAAyB;AAAA,UAC3F,IAAA,CAAK,cAAc,OAAA,EAAS,IAAI,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SACtF;AACA,QAAA;AAAA,MAEF,KAAK,cAAA;AACH,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,YAAA,EAAc,CAAC,KAAA,EAAO,YAAA,EAAc,IAAA,EAAM,IAAI,CAAA,EAAG,EAAC,EAAG,KAAA,EAAO,mBAAgB,WAAA,iBAAyB;AAAA,UACxH,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,CAAC,kBAAA,EAAoB,IAAI,CAAA,EAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SAC9G;AACA,QAAA;AAAA,MAEF;AACE,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,CAAC,uBAAuB,GAAG,EAAC,EAAG,KAAA,EAAO,MAAA,aAAgB,WAAA;AAAyB,SAC5G;AAAA;AAGJ,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,MAAa,iBAAA,GAA4C;AACvD,IAAA,MAAM,OAAA,GAAyB;AAAA,MAC7B,IAAOC,aAAA,CAAA,IAAA,EAAK;AAAA,MACZ,UAAaA,aAAA,CAAA,QAAA,EAAS;AAAA,MACtB,MAASA,aAAA,CAAA,IAAA,EAAK;AAAA,MACd,UAAaA,aAAA,CAAA,QAAA,EAAS;AAAA,MACtB,QAAWA,aAAA,CAAA,MAAA,EAAO;AAAA,MAClB,aAAgBA,aAAA,CAAA,OAAA,EAAQ;AAAA,MACxB,aAAgBA,aAAA,CAAA,QAAA,EAAS;AAAA,MACzB,YAAeA,aAAA,CAAA,OAAA,EAAQ;AAAA,MACvB,QAAA,EAAU,MAAM,IAAA,CAAK,WAAA,EAAY;AAAA,MACjC,SAAA,EAAW,MAAM,IAAA,CAAK,YAAA,EAAa;AAAA,MACnC,mBAAsBA,aAAA,CAAA,iBAAA,EAAkB;AAAA,MACxC,WAAA,EAAgBA,wBAAS,CAAE,QAAA;AAAA,MAC3B,QAAQ,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,MAAA,OAAa,CAAA,GAAI,KAAA;AAAA,MAClD,sBAAsB,OAAA,CAAQ;AAAA,KAChC;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEA,MAAa,mBAAmB,YAAA,EAA8C;AAC5E,IAAA,MAAM,UAAoB,EAAC;AAC3B,IAAA,MAAM,UAAU,YAAA,CAAa,OAAA;AAG7B,IAAA,MAAM,sBAAuB,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,UAAA,IAAc,QAAQ,WAAA,GAAe,GAAA;AAChG,IAAA,IAAI,qBAAqB,EAAA,EAAI;AAC3B,MAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,QACX,IAAA,EAAM,WAAA;AAAA,QACN,SAAS,IAAA,CAAK,aAAA;AAAA,UACZ,MAAA;AAAA,UACA,EAAC;AAAA,UACD,EAAC;AAAA,UACD,KAAA;AAAA,UACA,MAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,4BAAA;AAAA,QACR,eAAA,EAAiB;AAAA,OAClB,CAAA;AAED,MAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,QACX,IAAA,EAAM,aAAA;AAAA,QACN,SAAS,IAAA,CAAK,aAAA;AAAA,UACZ,MAAA;AAAA,UACA,CAAC,GAAG,CAAA;AAAA,UACJ,EAAC;AAAA,UACD,IAAA;AAAA,UACA,QAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,uBAAA;AAAA,QACR,eAAA,EAAiB;AAAA,OAClB,CAAA;AAAA,IACH;AAGA,IAAA,KAAA,MAAW,IAAA,IAAQ,QAAQ,SAAA,EAAW;AACpC,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,UAAU,CAAA;AACtC,MAAA,IAAI,QAAQ,EAAA,EAAI;AACd,QAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,UACX,IAAA,EAAM,WAAA;AAAA,UACN,SAAS,IAAA,CAAK,aAAA;AAAA,YACZ,MAAA;AAAA,YACA,CAAC,IAAA,CAAK,UAAA,EAAY,OAAA,EAAS,GAAA,EAAK,SAAS,OAAO,CAAA;AAAA,YAChD,EAAC;AAAA,YACD,KAAA;AAAA,YACA,MAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,QAAA,EAAU,CAAA;AAAA,UACV,MAAA,EAAQ,CAAA,uBAAA,EAA0B,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,UACjD,eAAA,EAAiB;AAAA,SAClB,CAAA;AAAA,MACH;AAAA,IACF;AAGA,IAAA,MAAM,aAAA,GAAmBA,aAAA,CAAA,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA;AACzC,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,WAAA,GAAc,CAAC,CAAA;AACvC,IAAA,IAAI,OAAA,IAAW,UAAU,aAAA,EAAe;AACtC,MAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,QACX,IAAA,EAAM,YAAA;AAAA,QACN,SAAS,IAAA,CAAK,aAAA;AAAA,UACZ,KAAA;AAAA,UACA,CAAC,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,MAAM,MAAM,CAAA;AAAA,UAC9B,EAAC;AAAA,UACD,KAAA;AAAA,UACA,MAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,2BAAA;AAAA,QACR,eAAA,EAAiB;AAAA,OAClB,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,KAAA,GAAQ,EAAA,EAAI;AAC/B,MAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,QACX,IAAA,EAAM,YAAA;AAAA,QACN,SAAS,IAAA,CAAK,aAAA;AAAA,UACZ,KAAA;AAAA,UACA,CAAC,QAAQ,CAAA;AAAA,UACT,EAAC;AAAA,UACD,IAAA;AAAA,UACA,KAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,iCAAA;AAAA,QACR,eAAA,EAAiB;AAAA,OAClB,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,OAAA,CAAQ,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,QAAA,GAAW,EAAE,QAAQ,CAAA;AAAA,EACvD;AAAA,EAEQ,aAAA,CACN,SACA,IAAA,EACA,KAAA,EACA,MACA,IAAA,EACA,QAAA,EACA,cAAsB,EAAA,EACR;AACd,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAc,WAAA,GAA+B;AAC3C,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,UAAU,gEAAgE,CAAA;AACnG,MAAA,OAAO,UAAA,CAAW,MAAA,CAAO,IAAA,EAAM,CAAA,IAAK,CAAA;AAAA,IACtC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,CAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAc,YAAA,GAAqC;AACjD,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,UAAU,OAAO,CAAA;AAC1C,MAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,EAAK,CAAE,MAAM,IAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AAE/C,MAAA,OAAO,KAAA,CAAM,IAAI,CAAA,IAAA,KAAQ;AACvB,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC9B,QAAA,OAAO;AAAA,UACL,UAAA,EAAY,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAAA,UACxB,IAAA,EAAM,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAAA,UAClB,IAAA,EAAM,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAAA,UAClB,SAAA,EAAW,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAAA,UACvB,UAAA,EAAY,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA;AAAA,UACxB,UAAA,EAAY,KAAA,CAAM,CAAC,CAAA,IAAK;AAAA,SAC1B;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,EAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAc,iBAAA,GAAmC;AAC/C,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,iBAAA,EAAkB;AAE7C,IAAA,IAAI,iBAA2B,EAAC;AAChC,IAAA,IAAI,YAAsB,EAAC;AAC3B,IAAA,IAAI,gBAAA,GAAmB,CAAA;AAEvB,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAS,GAAI,MAAM,UAAU,gBAAgB,CAAA;AAC7D,MAAA,gBAAA,GAAmB,QAAA,CAAS,QAAA,CAAS,IAAA,EAAM,CAAA,GAAI,CAAA;AAAA,IACjD,CAAA,CAAA,MAAQ;AAAA,IAAC;AAET,IAAA,IAAI;AACF,MAAA,IAAI,OAAA,CAAQ,aAAa,OAAA,EAAS;AAChC,QAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,UAAU,wEAAwE,CAAA;AAC3G,QAAA,cAAA,GAAiB,OAAO,IAAA,EAAK,CAAE,MAAM,IAAI,CAAA,CAAE,IAAI,CAAA,IAAA,KAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,EAAE,CAAC,CAAA,IAAK,EAAE,CAAA,CAAE,MAAA,CAAO,OAAK,CAAC,CAAA;AAAA,MAClG;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAAC;AAET,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,UAAU,6BAA6B,CAAA;AAChE,MAAA,SAAA,GAAY,OAAO,IAAA,EAAK,CAAE,MAAM,IAAI,CAAA,CAAE,IAAI,CAAA,IAAA,KAAQ;AAChD,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AACnC,QAAA,OAAO,KAAA,IAAS,MAAM,CAAC,CAAA,GAAI,SAAS,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,CAAA;AAAA,MAClD,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA,IAAA,KAAQ,OAAO,CAAC,CAAA;AAAA,IAC5B,CAAA,CAAA,MAAQ;AAAA,IAAC;AAET,IAAA,IAAA,CAAK,WAAA,GAAc;AAAA,MACjB,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAgB,EAAC;AAAA,MACjB,uBAAA,EAAyB,QAAQ,GAAA,EAAI;AAAA,MACrC,SAAA,sBAAe,IAAA;AAAK,KACtB;AAEA,IAAA,IAAA,CAAK,IAAA,CAAK,oBAAA,EAAsB,IAAA,CAAK,WAAW,CAAA;AAAA,EAClD;AAAA,EAEQ,qBAAA,GAA8B;AACpC,IAAA,IAAA,CAAK,iBAAA,EAAkB;AACvB,IAAA,IAAA,CAAK,cAAA,GAAiB,YAAY,MAAM;AACtC,MAAA,IAAA,CAAK,iBAAA,EAAkB;AAAA,IACzB,GAAG,GAAK,CAAA;AAAA,EACV;AAAA,EAEO,cAAA,GAAuB;AAC5B,IAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,MAAA,aAAA,CAAc,KAAK,cAAc,CAAA;AACjC,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AAAA,IACxB;AAAA,EACF;AAAA,EAEO,cAAA,GAAqC;AAC1C,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AACF","file":"context-analyzer.js","sourcesContent":["import { EventEmitter } from 'events';\nimport * as os from 'os';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\nexport enum CommandIntent {\n FILE_OPERATION = 'FILE_OPERATION',\n PROCESS_MANAGEMENT = 'PROCESS_MANAGEMENT',\n SYSTEM_INFO = 'SYSTEM_INFO',\n NETWORK_OPERATION = 'NETWORK_OPERATION',\n PACKAGE_MANAGEMENT = 'PACKAGE_MANAGEMENT',\n PERFORMANCE_OPTIMIZATION = 'PERFORMANCE_OPTIMIZATION',\n DISK_MANAGEMENT = 'DISK_MANAGEMENT',\n USER_MANAGEMENT = 'USER_MANAGEMENT',\n SERVICE_CONTROL = 'SERVICE_CONTROL',\n LOG_ANALYSIS = 'LOG_ANALYSIS',\n SECURITY_AUDIT = 'SECURITY_AUDIT',\n BACKUP_RESTORE = 'BACKUP_RESTORE',\n CONTAINER_OPERATION = 'CONTAINER_OPERATION',\n UNKNOWN = 'UNKNOWN'\n}\n\nexport interface LinuxCommand {\n command: string;\n args: string[];\n flags: string[];\n sudo: boolean;\n risk: RiskLevel;\n category: CommandCategory;\n description: string;\n alternatives?: LinuxCommand[];\n}\n\nexport enum RiskLevel {\n SAFE = 'SAFE',\n LOW = 'LOW',\n MEDIUM = 'MEDIUM',\n HIGH = 'HIGH',\n CRITICAL = 'CRITICAL'\n}\n\nexport enum CommandCategory {\n READ_ONLY = 'READ_ONLY',\n WRITE = 'WRITE',\n DELETE = 'DELETE',\n SYSTEM_MODIFY = 'SYSTEM_MODIFY',\n NETWORK = 'NETWORK',\n PROCESS = 'PROCESS',\n SECURITY = 'SECURITY'\n}\n\nexport interface SystemContext {\n os: string;\n platform: string;\n arch: string;\n hostname: string;\n uptime: number;\n loadAverage: number[];\n totalMemory: number;\n freeMemory: number;\n cpuUsage: number;\n diskUsage: DiskUsage[];\n networkInterfaces: any;\n currentUser: string;\n isRoot: boolean;\n environmentVariables: Record<string, string>;\n}\n\nexport interface DiskUsage {\n filesystem: string;\n size: string;\n used: string;\n available: string;\n usePercent: string;\n mountPoint: string;\n}\n\nexport interface SystemState {\n context: SystemContext;\n runningProcesses: number;\n activeServices: string[];\n openPorts: number[];\n recentCommands: string[];\n currentWorkingDirectory: string;\n timestamp: Date;\n}\n\nexport interface Action {\n type: ActionType;\n command: LinuxCommand;\n priority: number;\n reason: string;\n expectedOutcome: string;\n}\n\nexport enum ActionType {\n IMMEDIATE = 'IMMEDIATE',\n SCHEDULED = 'SCHEDULED',\n CONDITIONAL = 'CONDITIONAL',\n MONITORING = 'MONITORING',\n PREVENTIVE = 'PREVENTIVE'\n}\n\nexport class ContextAnalyzer extends EventEmitter {\n private intentPatterns: Map<CommandIntent, RegExp[]>;\n private systemState: SystemState | null = null;\n private updateInterval: NodeJS.Timeout | null = null;\n\n constructor() {\n super();\n this.intentPatterns = this.initializeIntentPatterns();\n this.startSystemMonitoring();\n }\n\n private initializeIntentPatterns(): Map<CommandIntent, RegExp[]> {\n const patterns = new Map<CommandIntent, RegExp[]>();\n\n patterns.set(CommandIntent.FILE_OPERATION, [\n /\\b(file|files|directory|folder|copy|move|delete|remove|create|mkdir|touch|find|search|locate)\\b/i,\n /\\b(ls|cd|pwd|cp|mv|rm|mkdir|rmdir|touch|find|grep|sed|awk)\\b/i,\n /\\b(permission|chmod|chown|access)\\b/i\n ]);\n\n patterns.set(CommandIntent.PROCESS_MANAGEMENT, [\n /\\b(process|processes|kill|stop|start|restart|pid|running|ps|top|htop)\\b/i,\n /\\b(cpu|memory|usage|performance|slow|hang|frozen|unresponsive)\\b/i,\n /\\b(service|daemon|systemctl|systemd)\\b/i\n ]);\n\n patterns.set(CommandIntent.SYSTEM_INFO, [\n /\\b(system|info|information|status|check|show|display|version|kernel)\\b/i,\n /\\b(uname|hostname|uptime|date|who|w|df|du|free)\\b/i,\n /\\b(hardware|cpu|memory|disk|network)\\b/i\n ]);\n\n patterns.set(CommandIntent.NETWORK_OPERATION, [\n /\\b(network|connection|internet|wifi|ethernet|ip|port|socket)\\b/i,\n /\\b(ping|traceroute|netstat|ss|lsof|tcpdump|curl|wget|nc)\\b/i,\n /\\b(firewall|iptables|routing|dns)\\b/i\n ]);\n\n patterns.set(CommandIntent.PACKAGE_MANAGEMENT, [\n /\\b(install|uninstall|update|upgrade|package|dependency|library)\\b/i,\n /\\b(apt|yum|dnf|snap|brew|npm|pip|gem|cargo|docker)\\b/i,\n /\\b(software|application|program)\\b/i\n ]);\n\n patterns.set(CommandIntent.PERFORMANCE_OPTIMIZATION, [\n /\\b(optimize|performance|speed|slow|fast|improve|enhance)\\b/i,\n /\\b(cache|clean|cleanup|free|space|memory|swap)\\b/i,\n /\\b(benchmark|profile|analyze)\\b/i\n ]);\n\n patterns.set(CommandIntent.DISK_MANAGEMENT, [\n /\\b(disk|storage|partition|mount|unmount|filesystem|volume)\\b/i,\n /\\b(df|du|fdisk|mkfs|fsck|mount|umount)\\b/i,\n /\\b(space|full|usage|capacity)\\b/i\n ]);\n\n patterns.set(CommandIntent.LOG_ANALYSIS, [\n /\\b(log|logs|journal|syslog|error|warning|debug|trace)\\b/i,\n /\\b(tail|head|journalctl|dmesg|last|history)\\b/i,\n /\\b(analyze|parse|filter|search)\\b/i\n ]);\n\n patterns.set(CommandIntent.SECURITY_AUDIT, [\n /\\b(security|audit|vulnerability|scan|check|permission|access)\\b/i,\n /\\b(sudo|root|privilege|authentication|password|ssh|ssl)\\b/i,\n /\\b(firewall|selinux|apparmor|encryption)\\b/i\n ]);\n\n patterns.set(CommandIntent.BACKUP_RESTORE, [\n /\\b(backup|restore|archive|compress|extract|tar|zip|rsync)\\b/i,\n /\\b(snapshot|recovery|disaster|migrate)\\b/i,\n /\\b(save|preserve|protect)\\b/i\n ]);\n\n return patterns;\n }\n\n public async analyzeUserIntent(input: string): Promise<CommandIntent> {\n const scores = new Map<CommandIntent, number>();\n\n for (const [intent, patterns] of this.intentPatterns) {\n let score = 0;\n for (const pattern of patterns) {\n const matches = input.match(pattern);\n if (matches) {\n score += matches.length;\n }\n }\n scores.set(intent, score);\n }\n\n let maxScore = 0;\n let detectedIntent = CommandIntent.UNKNOWN;\n\n for (const [intent, score] of scores) {\n if (score > maxScore) {\n maxScore = score;\n detectedIntent = intent;\n }\n }\n\n this.emit('intentAnalyzed', { input, intent: detectedIntent, confidence: maxScore });\n return detectedIntent;\n }\n\n public async determineRequiredCommands(intent: CommandIntent): Promise<LinuxCommand[]> {\n const commands: LinuxCommand[] = [];\n\n switch (intent) {\n case CommandIntent.FILE_OPERATION:\n commands.push(\n this.createCommand('ls', ['-la'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('find', ['.', '-type', 'f'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n break;\n\n case CommandIntent.PROCESS_MANAGEMENT:\n commands.push(\n this.createCommand('ps', ['aux'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('top', ['-b', '-n', '1'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n break;\n\n case CommandIntent.SYSTEM_INFO:\n commands.push(\n this.createCommand('uname', ['-a'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('df', ['-h'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('free', ['-h'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n break;\n\n case CommandIntent.NETWORK_OPERATION:\n commands.push(\n this.createCommand('netstat', ['-tuln'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('ss', ['-tuln'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n break;\n\n case CommandIntent.PERFORMANCE_OPTIMIZATION:\n commands.push(\n this.createCommand('vmstat', ['1', '5'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('iostat', ['-x', '1', '5'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n break;\n\n case CommandIntent.DISK_MANAGEMENT:\n commands.push(\n this.createCommand('df', ['-h'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('du', ['-sh', '*'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('lsblk', [], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n break;\n\n case CommandIntent.LOG_ANALYSIS:\n commands.push(\n this.createCommand('journalctl', ['-xe', '--no-pager', '-n', '50'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY),\n this.createCommand('dmesg', ['--level=err,warn', '-T'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n break;\n\n default:\n commands.push(\n this.createCommand('echo', ['Intent not recognized'], [], false, RiskLevel.SAFE, CommandCategory.READ_ONLY)\n );\n }\n\n return commands;\n }\n\n public async assessSystemState(): Promise<SystemContext> {\n const context: SystemContext = {\n os: os.type(),\n platform: os.platform(),\n arch: os.arch(),\n hostname: os.hostname(),\n uptime: os.uptime(),\n loadAverage: os.loadavg(),\n totalMemory: os.totalmem(),\n freeMemory: os.freemem(),\n cpuUsage: await this.getCPUUsage(),\n diskUsage: await this.getDiskUsage(),\n networkInterfaces: os.networkInterfaces(),\n currentUser: os.userInfo().username,\n isRoot: process.getuid ? process.getuid() === 0 : false,\n environmentVariables: process.env as Record<string, string>\n };\n\n return context;\n }\n\n public async predictNextActions(currentState: SystemState): Promise<Action[]> {\n const actions: Action[] = [];\n const context = currentState.context;\n\n // Check memory usage\n const memoryUsagePercent = ((context.totalMemory - context.freeMemory) / context.totalMemory) * 100;\n if (memoryUsagePercent > 80) {\n actions.push({\n type: ActionType.IMMEDIATE,\n command: this.createCommand(\n 'sync',\n [],\n [],\n false,\n RiskLevel.SAFE,\n CommandCategory.SYSTEM_MODIFY,\n 'Sync filesystem buffers'\n ),\n priority: 1,\n reason: 'High memory usage detected',\n expectedOutcome: 'Free up memory by syncing buffers'\n });\n\n actions.push({\n type: ActionType.CONDITIONAL,\n command: this.createCommand(\n 'echo',\n ['3'],\n [],\n true,\n RiskLevel.MEDIUM,\n CommandCategory.SYSTEM_MODIFY,\n 'Clear page cache'\n ),\n priority: 2,\n reason: 'Memory usage critical',\n expectedOutcome: 'Drop caches to free memory'\n });\n }\n\n // Check disk usage\n for (const disk of context.diskUsage) {\n const usage = parseInt(disk.usePercent);\n if (usage > 90) {\n actions.push({\n type: ActionType.IMMEDIATE,\n command: this.createCommand(\n 'find',\n [disk.mountPoint, '-type', 'f', '-size', '+100M'],\n [],\n false,\n RiskLevel.SAFE,\n CommandCategory.READ_ONLY,\n 'Find large files'\n ),\n priority: 1,\n reason: `Disk usage critical on ${disk.mountPoint}`,\n expectedOutcome: 'Identify large files for cleanup'\n });\n }\n }\n\n // Check load average\n const loadThreshold = os.cpus().length * 2;\n const loadAvg = context.loadAverage?.[0];\n if (loadAvg && loadAvg > loadThreshold) {\n actions.push({\n type: ActionType.MONITORING,\n command: this.createCommand(\n 'top',\n ['-b', '-n', '1', '-o', '%CPU'],\n [],\n false,\n RiskLevel.SAFE,\n CommandCategory.READ_ONLY,\n 'Monitor CPU usage'\n ),\n priority: 1,\n reason: 'High system load detected',\n expectedOutcome: 'Identify resource-intensive processes'\n });\n }\n\n // Preventive maintenance\n if (context.uptime > 86400 * 30) { // 30 days\n actions.push({\n type: ActionType.PREVENTIVE,\n command: this.createCommand(\n 'apt',\n ['update'],\n [],\n true,\n RiskLevel.LOW,\n CommandCategory.SYSTEM_MODIFY,\n 'Update package lists'\n ),\n priority: 3,\n reason: 'System running for over 30 days',\n expectedOutcome: 'Ensure package lists are current'\n });\n }\n\n return actions.sort((a, b) => a.priority - b.priority);\n }\n\n private createCommand(\n command: string,\n args: string[],\n flags: string[],\n sudo: boolean,\n risk: RiskLevel,\n category: CommandCategory,\n description: string = ''\n ): LinuxCommand {\n return {\n command,\n args,\n flags,\n sudo,\n risk,\n category,\n description\n };\n }\n\n private async getCPUUsage(): Promise<number> {\n try {\n const { stdout } = await execAsync(\"top -b -n 1 | grep 'Cpu(s)' | awk '{print $2}' | cut -d'%' -f1\");\n return parseFloat(stdout.trim()) || 0;\n } catch {\n return 0;\n }\n }\n\n private async getDiskUsage(): Promise<DiskUsage[]> {\n try {\n const { stdout } = await execAsync('df -h');\n const lines = stdout.trim().split('\\n').slice(1);\n \n return lines.map(line => {\n const parts = line.split(/\\s+/);\n return {\n filesystem: parts[0] || '',\n size: parts[1] || '',\n used: parts[2] || '',\n available: parts[3] || '',\n usePercent: parts[4] || '',\n mountPoint: parts[5] || ''\n };\n });\n } catch {\n return [];\n }\n }\n\n private async updateSystemState(): Promise<void> {\n const context = await this.assessSystemState();\n \n let activeServices: string[] = [];\n let openPorts: number[] = [];\n let runningProcesses = 0;\n\n try {\n const { stdout: psOutput } = await execAsync('ps aux | wc -l');\n runningProcesses = parseInt(psOutput.trim()) - 1;\n } catch {}\n\n try {\n if (process.platform === 'linux') {\n const { stdout } = await execAsync('systemctl list-units --state=running --no-pager --no-legend | head -20');\n activeServices = stdout.trim().split('\\n').map(line => line.split(/\\s+/)[0] || '').filter(s => s);\n }\n } catch {}\n\n try {\n const { stdout } = await execAsync('netstat -tuln | grep LISTEN');\n openPorts = stdout.trim().split('\\n').map(line => {\n const match = line.match(/:(\\d+)\\s/);\n return match && match[1] ? parseInt(match[1]) : 0;\n }).filter(port => port > 0);\n } catch {}\n\n this.systemState = {\n context,\n runningProcesses,\n activeServices,\n openPorts,\n recentCommands: [],\n currentWorkingDirectory: process.cwd(),\n timestamp: new Date()\n };\n\n this.emit('systemStateUpdated', this.systemState);\n }\n\n private startSystemMonitoring(): void {\n this.updateSystemState();\n this.updateInterval = setInterval(() => {\n this.updateSystemState();\n }, 30000);\n }\n\n public stopMonitoring(): void {\n if (this.updateInterval) {\n clearInterval(this.updateInterval);\n this.updateInterval = null;\n }\n }\n\n public getSystemState(): SystemState | null {\n return this.systemState;\n }\n}"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bonginkan/maria",
3
- "version": "2.1.0",
4
- "description": "🧠 MARIA Platform v2.1.0 Intelligent Research & Enhanced Deep Dive Edition - Revolutionary Auto-Research System + Enhanced Memory Intelligence with Multi-Source Deep Analysis, Real-time URL Detection, Background Processing, and Advanced Knowledge Base Integration",
3
+ "version": "2.1.2",
4
+ "description": "🧠 MARIA Platform v2.1.2 Extended Command & Mode Edition - 5 New Slash Commands (workspace, db, api, deploy, monitor) + 2 New Internal Modes (Focus, Learning) + Enhanced Memory Intelligence with Multi-Source Deep Analysis and Advanced Knowledge Base Integration",
5
5
  "keywords": [
6
6
  "ai",
7
7
  "cli",
@@ -49,7 +49,7 @@
49
49
  "coderag",
50
50
  "document-processing",
51
51
  "arxiv-integration",
52
- "multi-agent-system",
52
+ "multi-agent-system",
53
53
  "mcp-protocol",
54
54
  "semantic-analysis",
55
55
  "auto-research",
@@ -164,9 +164,11 @@
164
164
  },
165
165
  "devDependencies": {
166
166
  "@types/cli-progress": "^3.11.5",
167
+ "@types/eslint": "^9.6.1",
167
168
  "@types/figlet": "^1.5.8",
168
169
  "@types/fs-extra": "^11.0.4",
169
170
  "@types/inquirer": "^9.0.7",
171
+ "@types/js-yaml": "^4.0.9",
170
172
  "@types/jsonwebtoken": "^9.0.5",
171
173
  "@types/node": "^20.11.0",
172
174
  "@types/prompts": "^2.4.9",