@rangerchaz/aimem 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.
- package/LICENSE +21 -0
- package/README.md +380 -0
- package/dist/cli/commands/git.d.ts +6 -0
- package/dist/cli/commands/git.d.ts.map +1 -0
- package/dist/cli/commands/git.js +298 -0
- package/dist/cli/commands/git.js.map +1 -0
- package/dist/cli/commands/hook-session-end.d.ts +7 -0
- package/dist/cli/commands/hook-session-end.d.ts.map +1 -0
- package/dist/cli/commands/hook-session-end.js +109 -0
- package/dist/cli/commands/hook-session-end.js.map +1 -0
- package/dist/cli/commands/hook-session-start.d.ts +7 -0
- package/dist/cli/commands/hook-session-start.d.ts.map +1 -0
- package/dist/cli/commands/hook-session-start.js +116 -0
- package/dist/cli/commands/hook-session-start.js.map +1 -0
- package/dist/cli/commands/import.d.ts +14 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +527 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +32 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp-serve.d.ts +2 -0
- package/dist/cli/commands/mcp-serve.d.ts.map +1 -0
- package/dist/cli/commands/mcp-serve.js +5 -0
- package/dist/cli/commands/mcp-serve.js.map +1 -0
- package/dist/cli/commands/query.d.ts +8 -0
- package/dist/cli/commands/query.d.ts.map +1 -0
- package/dist/cli/commands/query.js +83 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +10 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +504 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/start.d.ts +8 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +90 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +2 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +85 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +7 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +46 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/visualize.d.ts +8 -0
- package/dist/cli/commands/visualize.d.ts.map +1 -0
- package/dist/cli/commands/visualize.js +96 -0
- package/dist/cli/commands/visualize.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +114 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/db/index.d.ts +55 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +464 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +4 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +200 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/extractor/index.d.ts +27 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +227 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/git/extractor.d.ts +30 -0
- package/dist/git/extractor.d.ts.map +1 -0
- package/dist/git/extractor.js +126 -0
- package/dist/git/extractor.js.map +1 -0
- package/dist/git/hooks.d.ts +36 -0
- package/dist/git/hooks.d.ts.map +1 -0
- package/dist/git/hooks.js +142 -0
- package/dist/git/hooks.js.map +1 -0
- package/dist/git/index.d.ts +69 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +250 -0
- package/dist/git/index.js.map +1 -0
- package/dist/indexer/index.d.ts +20 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +173 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/parsers/base.d.ts +19 -0
- package/dist/indexer/parsers/base.d.ts.map +1 -0
- package/dist/indexer/parsers/base.js +46 -0
- package/dist/indexer/parsers/base.js.map +1 -0
- package/dist/indexer/parsers/cpp.d.ts +3 -0
- package/dist/indexer/parsers/cpp.d.ts.map +1 -0
- package/dist/indexer/parsers/cpp.js +180 -0
- package/dist/indexer/parsers/cpp.js.map +1 -0
- package/dist/indexer/parsers/go.d.ts +3 -0
- package/dist/indexer/parsers/go.d.ts.map +1 -0
- package/dist/indexer/parsers/go.js +98 -0
- package/dist/indexer/parsers/go.js.map +1 -0
- package/dist/indexer/parsers/java.d.ts +3 -0
- package/dist/indexer/parsers/java.d.ts.map +1 -0
- package/dist/indexer/parsers/java.js +204 -0
- package/dist/indexer/parsers/java.js.map +1 -0
- package/dist/indexer/parsers/javascript.d.ts +3 -0
- package/dist/indexer/parsers/javascript.d.ts.map +1 -0
- package/dist/indexer/parsers/javascript.js +157 -0
- package/dist/indexer/parsers/javascript.js.map +1 -0
- package/dist/indexer/parsers/kotlin.d.ts +3 -0
- package/dist/indexer/parsers/kotlin.d.ts.map +1 -0
- package/dist/indexer/parsers/kotlin.js +182 -0
- package/dist/indexer/parsers/kotlin.js.map +1 -0
- package/dist/indexer/parsers/php.d.ts +3 -0
- package/dist/indexer/parsers/php.d.ts.map +1 -0
- package/dist/indexer/parsers/php.js +190 -0
- package/dist/indexer/parsers/php.js.map +1 -0
- package/dist/indexer/parsers/python.d.ts +3 -0
- package/dist/indexer/parsers/python.d.ts.map +1 -0
- package/dist/indexer/parsers/python.js +101 -0
- package/dist/indexer/parsers/python.js.map +1 -0
- package/dist/indexer/parsers/ruby.d.ts +3 -0
- package/dist/indexer/parsers/ruby.d.ts.map +1 -0
- package/dist/indexer/parsers/ruby.js +92 -0
- package/dist/indexer/parsers/ruby.js.map +1 -0
- package/dist/indexer/parsers/rust.d.ts +3 -0
- package/dist/indexer/parsers/rust.d.ts.map +1 -0
- package/dist/indexer/parsers/rust.js +190 -0
- package/dist/indexer/parsers/rust.js.map +1 -0
- package/dist/indexer/watcher-daemon.d.ts +2 -0
- package/dist/indexer/watcher-daemon.d.ts.map +1 -0
- package/dist/indexer/watcher-daemon.js +27 -0
- package/dist/indexer/watcher-daemon.js.map +1 -0
- package/dist/indexer/watcher.d.ts +7 -0
- package/dist/indexer/watcher.d.ts.map +1 -0
- package/dist/indexer/watcher.js +77 -0
- package/dist/indexer/watcher.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +241 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/proxy/interceptor-mockttp.d.ts +27 -0
- package/dist/proxy/interceptor-mockttp.d.ts.map +1 -0
- package/dist/proxy/interceptor-mockttp.js +274 -0
- package/dist/proxy/interceptor-mockttp.js.map +1 -0
- package/dist/proxy/proxy-daemon.d.ts +5 -0
- package/dist/proxy/proxy-daemon.d.ts.map +1 -0
- package/dist/proxy/proxy-daemon.js +26 -0
- package/dist/proxy/proxy-daemon.js.map +1 -0
- package/dist/query/index.d.ts +32 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +135 -0
- package/dist/query/index.js.map +1 -0
- package/dist/types/index.d.ts +89 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/visualize/index.d.ts +144 -0
- package/dist/visualize/index.d.ts.map +1 -0
- package/dist/visualize/index.js +707 -0
- package/dist/visualize/index.js.map +1 -0
- package/dist/visualize/server.d.ts +7 -0
- package/dist/visualize/server.d.ts.map +1 -0
- package/dist/visualize/server.js +77 -0
- package/dist/visualize/server.js.map +1 -0
- package/dist/visualize/template.d.ts +3 -0
- package/dist/visualize/template.d.ts.map +1 -0
- package/dist/visualize/template.js +3465 -0
- package/dist/visualize/template.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { existsSync, writeFileSync, readFileSync } from 'fs';
|
|
3
|
+
import { join, dirname } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { getDataDir, ensureDataDir } from '../../db/index.js';
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
function isProcessRunning(pid) {
|
|
9
|
+
try {
|
|
10
|
+
process.kill(pid, 0);
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function getServicePid(name) {
|
|
18
|
+
const pidFile = join(getDataDir(), `${name}.pid`);
|
|
19
|
+
if (!existsSync(pidFile))
|
|
20
|
+
return null;
|
|
21
|
+
try {
|
|
22
|
+
const pid = parseInt(readFileSync(pidFile, 'utf-8').trim(), 10);
|
|
23
|
+
return isProcessRunning(pid) ? pid : null;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function writePidFile(name, pid) {
|
|
30
|
+
const pidFile = join(getDataDir(), `${name}.pid`);
|
|
31
|
+
writeFileSync(pidFile, String(pid));
|
|
32
|
+
}
|
|
33
|
+
export async function startCommand(options) {
|
|
34
|
+
ensureDataDir();
|
|
35
|
+
const dataDir = getDataDir();
|
|
36
|
+
const startProxy = options.proxy !== false;
|
|
37
|
+
const startWatcher = options.watcher !== false;
|
|
38
|
+
const port = options.port || 8080;
|
|
39
|
+
console.log(chalk.bold('Starting aimem services...\n'));
|
|
40
|
+
// Start proxy (mockttp-based)
|
|
41
|
+
if (startProxy) {
|
|
42
|
+
const existingPid = getServicePid('proxy');
|
|
43
|
+
if (existingPid) {
|
|
44
|
+
console.log(chalk.yellow(`Proxy already running (PID ${existingPid})`));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const interceptorPath = join(__dirname, '..', '..', 'proxy', 'interceptor-mockttp.js');
|
|
48
|
+
const child = spawn('node', [interceptorPath], {
|
|
49
|
+
detached: true,
|
|
50
|
+
stdio: 'ignore',
|
|
51
|
+
env: {
|
|
52
|
+
...process.env,
|
|
53
|
+
AIMEM_DATA_DIR: dataDir,
|
|
54
|
+
AIMEM_PROXY_PORT: String(port),
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
if (child.pid) {
|
|
58
|
+
writePidFile('proxy', child.pid);
|
|
59
|
+
child.unref();
|
|
60
|
+
console.log(chalk.green(`Proxy started on port ${port} (PID ${child.pid})`));
|
|
61
|
+
console.log(chalk.gray(` Configure tools with: HTTPS_PROXY=http://localhost:${port}`));
|
|
62
|
+
const certPath = join(dataDir, 'ca-cert.pem');
|
|
63
|
+
console.log(chalk.gray(` CA certificate: ${certPath}`));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Start watcher
|
|
68
|
+
if (startWatcher) {
|
|
69
|
+
const existingPid = getServicePid('watcher');
|
|
70
|
+
if (existingPid) {
|
|
71
|
+
console.log(chalk.yellow(`Watcher already running (PID ${existingPid})`));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const watcherPath = join(__dirname, '..', '..', 'indexer', 'watcher-daemon.js');
|
|
75
|
+
const child = spawn('node', [watcherPath], {
|
|
76
|
+
detached: true,
|
|
77
|
+
stdio: 'ignore',
|
|
78
|
+
env: { ...process.env, AIMEM_DATA_DIR: dataDir },
|
|
79
|
+
});
|
|
80
|
+
if (child.pid) {
|
|
81
|
+
writePidFile('watcher', child.pid);
|
|
82
|
+
child.unref();
|
|
83
|
+
console.log(chalk.green(`Watcher started (PID ${child.pid})`));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
console.log(chalk.gray('\nUse `aimem status` to check service status'));
|
|
88
|
+
console.log(chalk.gray('Use `aimem stop` to stop services'));
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAwCA,wBAAgB,aAAa,IAAI,IAAI,CAqDpC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { spawnSync } from 'child_process';
|
|
5
|
+
import { getStats, getAllProjects, getDataDir } from '../../db/index.js';
|
|
6
|
+
function isMitmproxyInstalled() {
|
|
7
|
+
try {
|
|
8
|
+
const result = spawnSync('mitmdump', ['--version'], {
|
|
9
|
+
encoding: 'utf-8',
|
|
10
|
+
timeout: 5000,
|
|
11
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
12
|
+
});
|
|
13
|
+
return result.status === 0;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function getServiceStatus(name) {
|
|
20
|
+
const pidFile = join(getDataDir(), `${name}.pid`);
|
|
21
|
+
if (!existsSync(pidFile)) {
|
|
22
|
+
return { running: false };
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const pid = parseInt(readFileSync(pidFile, 'utf-8').trim(), 10);
|
|
26
|
+
// Check if process is running
|
|
27
|
+
process.kill(pid, 0);
|
|
28
|
+
return { running: true, pid };
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return { running: false };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function statusCommand() {
|
|
35
|
+
const dataDir = getDataDir();
|
|
36
|
+
console.log(chalk.bold('aimem status\n'));
|
|
37
|
+
// Data directory
|
|
38
|
+
console.log(chalk.gray(`Data directory: ${dataDir}`));
|
|
39
|
+
console.log();
|
|
40
|
+
// Dependencies
|
|
41
|
+
const mitmproxyOk = isMitmproxyInstalled();
|
|
42
|
+
if (!mitmproxyOk) {
|
|
43
|
+
console.log(chalk.bold('Dependencies:'));
|
|
44
|
+
console.log(` mitmproxy: ${chalk.red('not installed')} ${chalk.gray('(pip install mitmproxy)')}`);
|
|
45
|
+
console.log();
|
|
46
|
+
}
|
|
47
|
+
// Services
|
|
48
|
+
console.log(chalk.bold('Services:'));
|
|
49
|
+
const proxy = getServiceStatus('proxy');
|
|
50
|
+
const watcher = getServiceStatus('watcher');
|
|
51
|
+
console.log(` Proxy: ${proxy.running ? chalk.green(`running (PID ${proxy.pid})`) : chalk.gray('stopped')}`);
|
|
52
|
+
console.log(` Watcher: ${watcher.running ? chalk.green(`running (PID ${watcher.pid})`) : chalk.gray('stopped')}`);
|
|
53
|
+
console.log();
|
|
54
|
+
// Database stats
|
|
55
|
+
console.log(chalk.bold('Database:'));
|
|
56
|
+
try {
|
|
57
|
+
const stats = getStats();
|
|
58
|
+
console.log(` Projects: ${chalk.cyan(stats.projects)}`);
|
|
59
|
+
console.log(` Files: ${chalk.cyan(stats.files)}`);
|
|
60
|
+
console.log(` Structures: ${chalk.cyan(stats.structures)}`);
|
|
61
|
+
console.log(` Conversations: ${chalk.cyan(stats.conversations)}`);
|
|
62
|
+
console.log(` Links: ${chalk.cyan(stats.links)}`);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
console.log(chalk.gray(' (no database yet)'));
|
|
66
|
+
}
|
|
67
|
+
console.log();
|
|
68
|
+
// Projects
|
|
69
|
+
console.log(chalk.bold('Projects:'));
|
|
70
|
+
try {
|
|
71
|
+
const projects = getAllProjects();
|
|
72
|
+
if (projects.length === 0) {
|
|
73
|
+
console.log(chalk.gray(' (none)'));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
for (const p of projects) {
|
|
77
|
+
console.log(` ${chalk.cyan(p.name)} - ${chalk.gray(p.path)}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
console.log(chalk.gray(' (no database yet)'));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"AAgCA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAmBtD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { existsSync, readFileSync, unlinkSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { getDataDir } from '../../db/index.js';
|
|
5
|
+
function stopService(name) {
|
|
6
|
+
const pidFile = join(getDataDir(), `${name}.pid`);
|
|
7
|
+
if (!existsSync(pidFile)) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const pid = parseInt(readFileSync(pidFile, 'utf-8').trim(), 10);
|
|
12
|
+
// Try to kill the process
|
|
13
|
+
try {
|
|
14
|
+
process.kill(pid, 'SIGTERM');
|
|
15
|
+
console.log(chalk.green(`Stopped ${name} (PID ${pid})`));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
console.log(chalk.gray(`${name} was not running`));
|
|
19
|
+
}
|
|
20
|
+
// Remove PID file
|
|
21
|
+
unlinkSync(pidFile);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.log(chalk.red(`Error stopping ${name}: ${err}`));
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function stopCommand(options) {
|
|
30
|
+
const stopProxy = options.proxy !== false;
|
|
31
|
+
const stopWatcher = options.watcher !== false;
|
|
32
|
+
console.log(chalk.bold('Stopping aimem services...\n'));
|
|
33
|
+
let stopped = 0;
|
|
34
|
+
if (stopProxy) {
|
|
35
|
+
if (stopService('proxy'))
|
|
36
|
+
stopped++;
|
|
37
|
+
}
|
|
38
|
+
if (stopWatcher) {
|
|
39
|
+
if (stopService('watcher'))
|
|
40
|
+
stopped++;
|
|
41
|
+
}
|
|
42
|
+
if (stopped === 0) {
|
|
43
|
+
console.log(chalk.gray('No services were running'));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEhE,0BAA0B;QAC1B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,kBAAkB;QAClB,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,WAAW,CAAC,OAAoB;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAExD,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,WAAW,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualize.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/visualize.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF/E"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { writeFileSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { exec } from 'child_process';
|
|
5
|
+
import { findProjectForPath, getProjectFiles, getAllProjectStructures, getAllProjectLinks, getAllProjectExtractions, getFullConversations, } from '../../db/index.js';
|
|
6
|
+
import { buildVisualizationData, generateDashboard } from '../../visualize/index.js';
|
|
7
|
+
import { startDashboardServer } from '../../visualize/server.js';
|
|
8
|
+
export async function visualizeCommand(options) {
|
|
9
|
+
const cwd = process.cwd();
|
|
10
|
+
// Find project
|
|
11
|
+
const project = findProjectForPath(cwd);
|
|
12
|
+
if (!project) {
|
|
13
|
+
console.log(chalk.red('Error: No aimem project found for current directory.'));
|
|
14
|
+
console.log(chalk.gray('Run "aimem init" first to initialize a project.'));
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
console.log(chalk.bold(`Generating visualization for: ${project.name}\n`));
|
|
18
|
+
// Gather data
|
|
19
|
+
console.log(chalk.gray('Gathering data...'));
|
|
20
|
+
const structures = getAllProjectStructures(project.id);
|
|
21
|
+
const files = getProjectFiles(project.id);
|
|
22
|
+
const links = getAllProjectLinks(project.id);
|
|
23
|
+
const extractions = getAllProjectExtractions(project.id);
|
|
24
|
+
const conversations = getFullConversations(project.id, 1000); // Get up to 1000 conversations
|
|
25
|
+
console.log(chalk.gray(` ${structures.length} structures`));
|
|
26
|
+
console.log(chalk.gray(` ${files.length} files`));
|
|
27
|
+
console.log(chalk.gray(` ${links.length} links`));
|
|
28
|
+
console.log(chalk.gray(` ${extractions.length} extractions`));
|
|
29
|
+
console.log(chalk.gray(` ${conversations.length} conversations`));
|
|
30
|
+
console.log();
|
|
31
|
+
if (structures.length === 0) {
|
|
32
|
+
console.log(chalk.yellow('Warning: No structures found. The codebase may not be indexed yet.'));
|
|
33
|
+
console.log(chalk.gray('Run "aimem start" to begin indexing.'));
|
|
34
|
+
}
|
|
35
|
+
// Build visualization data
|
|
36
|
+
const vizData = buildVisualizationData(project, structures, files, links, extractions, conversations);
|
|
37
|
+
if (options.serve) {
|
|
38
|
+
// Serve mode
|
|
39
|
+
const port = options.port || 8080;
|
|
40
|
+
console.log(chalk.cyan(`Starting dashboard server on port ${port}...`));
|
|
41
|
+
try {
|
|
42
|
+
await startDashboardServer({
|
|
43
|
+
port,
|
|
44
|
+
getData: () => buildVisualizationData(project, getAllProjectStructures(project.id), getProjectFiles(project.id), getAllProjectLinks(project.id), getAllProjectExtractions(project.id), getFullConversations(project.id, 1000)),
|
|
45
|
+
});
|
|
46
|
+
const url = `http://localhost:${port}`;
|
|
47
|
+
console.log(chalk.green(`\nDashboard running at: ${chalk.bold(url)}`));
|
|
48
|
+
console.log(chalk.gray('Press Ctrl+C to stop\n'));
|
|
49
|
+
// Open in browser if requested
|
|
50
|
+
if (options.open) {
|
|
51
|
+
openBrowser(url);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.log(chalk.red(`Error starting server: ${error.message}`));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Static file mode
|
|
61
|
+
const outputPath = options.output || join(cwd, 'aimem-dashboard.html');
|
|
62
|
+
console.log(chalk.gray('Generating HTML...'));
|
|
63
|
+
const html = generateDashboard(vizData);
|
|
64
|
+
writeFileSync(outputPath, html, 'utf-8');
|
|
65
|
+
console.log(chalk.green(`\nDashboard saved to: ${chalk.bold(outputPath)}`));
|
|
66
|
+
// Open in browser if requested
|
|
67
|
+
if (options.open) {
|
|
68
|
+
console.log(chalk.gray('Opening in browser...'));
|
|
69
|
+
openBrowser(outputPath);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(chalk.gray('Use --open to open in browser'));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function openBrowser(url) {
|
|
77
|
+
const platform = process.platform;
|
|
78
|
+
let command;
|
|
79
|
+
if (platform === 'darwin') {
|
|
80
|
+
command = `open "${url}"`;
|
|
81
|
+
}
|
|
82
|
+
else if (platform === 'win32') {
|
|
83
|
+
command = `start "" "${url}"`;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Linux and others
|
|
87
|
+
command = `xdg-open "${url}"`;
|
|
88
|
+
}
|
|
89
|
+
exec(command, (error) => {
|
|
90
|
+
if (error) {
|
|
91
|
+
console.log(chalk.yellow(`Could not open browser automatically.`));
|
|
92
|
+
console.log(chalk.gray(`Open manually: ${url}`));
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=visualize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualize.js","sourceRoot":"","sources":["../../../src/cli/commands/visualize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { initCommand } from './commands/init.js';
|
|
4
|
+
import { startCommand } from './commands/start.js';
|
|
5
|
+
import { stopCommand } from './commands/stop.js';
|
|
6
|
+
import { statusCommand } from './commands/status.js';
|
|
7
|
+
import { queryCommand } from './commands/query.js';
|
|
8
|
+
import { mcpServeCommand } from './commands/mcp-serve.js';
|
|
9
|
+
import { setupCommand } from './commands/setup.js';
|
|
10
|
+
import { importCommand } from './commands/import.js';
|
|
11
|
+
import { visualizeCommand } from './commands/visualize.js';
|
|
12
|
+
import { gitCommand } from './commands/git.js';
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('aimem')
|
|
16
|
+
.description('Local memory system for AI coding assistants')
|
|
17
|
+
.version('0.1.0');
|
|
18
|
+
program
|
|
19
|
+
.command('init [path]')
|
|
20
|
+
.description('Initialize aimem for a codebase')
|
|
21
|
+
.action(initCommand);
|
|
22
|
+
program
|
|
23
|
+
.command('start')
|
|
24
|
+
.description('Start proxy and watcher services')
|
|
25
|
+
.option('--no-proxy', 'Do not start the proxy')
|
|
26
|
+
.option('--no-watcher', 'Do not start the file watcher')
|
|
27
|
+
.option('-p, --port <port>', 'Proxy port', '8080')
|
|
28
|
+
.action((options) => {
|
|
29
|
+
startCommand({
|
|
30
|
+
proxy: options.proxy,
|
|
31
|
+
watcher: options.watcher,
|
|
32
|
+
port: parseInt(options.port, 10),
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
program
|
|
36
|
+
.command('stop')
|
|
37
|
+
.description('Stop running services')
|
|
38
|
+
.option('--proxy', 'Only stop the proxy')
|
|
39
|
+
.option('--watcher', 'Only stop the watcher')
|
|
40
|
+
.action((options) => {
|
|
41
|
+
const stopProxy = options.proxy || (!options.proxy && !options.watcher);
|
|
42
|
+
const stopWatcher = options.watcher || (!options.proxy && !options.watcher);
|
|
43
|
+
stopCommand({ proxy: stopProxy, watcher: stopWatcher });
|
|
44
|
+
});
|
|
45
|
+
program
|
|
46
|
+
.command('status')
|
|
47
|
+
.description('Show status of aimem services and database')
|
|
48
|
+
.action(statusCommand);
|
|
49
|
+
program
|
|
50
|
+
.command('query <search>')
|
|
51
|
+
.description('Query structures and conversations (scoped to current project by default)')
|
|
52
|
+
.option('-t, --type <type>', 'Query type: all, structures, conversations', 'all')
|
|
53
|
+
.option('-l, --limit <limit>', 'Maximum results', '10')
|
|
54
|
+
.option('-g, --global', 'Search across all projects')
|
|
55
|
+
.action((search, options) => {
|
|
56
|
+
queryCommand(search, {
|
|
57
|
+
type: options.type,
|
|
58
|
+
limit: parseInt(options.limit, 10),
|
|
59
|
+
global: options.global,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
program
|
|
63
|
+
.command('mcp-serve')
|
|
64
|
+
.description('Start MCP server for Claude Code integration')
|
|
65
|
+
.action(mcpServeCommand);
|
|
66
|
+
// Setup commands for integrating with AI coding tools
|
|
67
|
+
program
|
|
68
|
+
.command('setup [tool]')
|
|
69
|
+
.description('Configure aimem for an AI coding tool (e.g., claude-code, proxy, cursor, continue)')
|
|
70
|
+
.option('-f, --force', 'Overwrite existing configuration')
|
|
71
|
+
.option('-p, --port <port>', 'Proxy port (default: 8080)')
|
|
72
|
+
.option('-i, --install', 'Full install: add cert to system trust store and configure shell profile')
|
|
73
|
+
.option('-a, --autostart', 'Configure proxy to start automatically on login')
|
|
74
|
+
.action((tool, options) => {
|
|
75
|
+
setupCommand(tool, { force: options.force, port: options.port, install: options.install, autostart: options.autostart });
|
|
76
|
+
});
|
|
77
|
+
// Import old conversations from AI coding tools
|
|
78
|
+
program
|
|
79
|
+
.command('import')
|
|
80
|
+
.description('Import conversation history from AI coding tools (Claude, Aider, Continue.dev)')
|
|
81
|
+
.option('-p, --project <path>', 'Project path (defaults to cwd)')
|
|
82
|
+
.option('-s, --source <source>', 'Source to import: claude, aider, continue, all (default: all)')
|
|
83
|
+
.option('-n, --dry-run', 'Show what would be imported without making changes')
|
|
84
|
+
.option('-l, --limit <count>', 'Maximum extractions to import', '1000')
|
|
85
|
+
.option('-f, --full', 'Store complete conversation content (for long-term memory)')
|
|
86
|
+
.action((options) => {
|
|
87
|
+
importCommand({
|
|
88
|
+
project: options.project,
|
|
89
|
+
source: options.source,
|
|
90
|
+
dryRun: options.dryRun,
|
|
91
|
+
limit: parseInt(options.limit, 10),
|
|
92
|
+
full: options.full,
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
// Visualize codebase as interactive dashboard
|
|
96
|
+
program
|
|
97
|
+
.command('visualize')
|
|
98
|
+
.description('Generate an interactive visualization dashboard of the codebase')
|
|
99
|
+
.option('-o, --output <path>', 'Output file path (default: ./aimem-dashboard.html)')
|
|
100
|
+
.option('--open', 'Open dashboard in browser after generating')
|
|
101
|
+
.option('-s, --serve', 'Start a local server instead of generating a static file')
|
|
102
|
+
.option('-p, --port <port>', 'Server port when using --serve (default: 8080)')
|
|
103
|
+
.action(async (options) => {
|
|
104
|
+
await visualizeCommand({
|
|
105
|
+
output: options.output,
|
|
106
|
+
open: options.open,
|
|
107
|
+
serve: options.serve,
|
|
108
|
+
port: options.port ? parseInt(options.port, 10) : undefined,
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
// Git integration commands
|
|
112
|
+
program.addCommand(gitCommand);
|
|
113
|
+
program.parse();
|
|
114
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import type { Project, File, Structure, Conversation, Link, Extraction, IndexStats, Commit, CommitLink } from '../types/index.js';
|
|
3
|
+
export declare function getDataDir(): string;
|
|
4
|
+
export declare function ensureDataDir(): void;
|
|
5
|
+
export declare function getDb(): Database.Database;
|
|
6
|
+
export declare function closeDb(): void;
|
|
7
|
+
export declare function createProject(path: string, name: string): Project;
|
|
8
|
+
export declare function getProject(id: number): Project | undefined;
|
|
9
|
+
export declare function getProjectByPath(path: string): Project | undefined;
|
|
10
|
+
export declare function getAllProjects(): Project[];
|
|
11
|
+
export declare function upsertFile(projectId: number, path: string, hash: string): File;
|
|
12
|
+
export declare function getFile(id: number): File | undefined;
|
|
13
|
+
export declare function getFileByPath(projectId: number, path: string): File | undefined;
|
|
14
|
+
export declare function deleteFile(id: number): void;
|
|
15
|
+
export declare function getProjectFiles(projectId: number): File[];
|
|
16
|
+
export declare function insertStructure(fileId: number, type: Structure['type'], name: string, lineStart: number, lineEnd: number, signature: string | null, rawContent: string, metadata?: Record<string, unknown>): Structure;
|
|
17
|
+
export declare function deleteFileStructures(fileId: number): void;
|
|
18
|
+
export declare function searchStructures(query: string, limit?: number, projectId?: number): Structure[];
|
|
19
|
+
export declare function getStructuresByName(name: string, projectId?: number): Structure[];
|
|
20
|
+
export declare function findProjectForPath(targetPath: string): Project | undefined;
|
|
21
|
+
export declare function insertConversation(rawContent: string, projectId?: number | null, model?: string | null, tool?: string | null, summary?: string | null): Conversation;
|
|
22
|
+
export declare function searchConversations(query: string, limit?: number, projectId?: number): Conversation[];
|
|
23
|
+
export declare function createLink(sourceType: Link['source_type'], sourceId: number, targetType: Link['target_type'], targetId: number, linkType: Link['link_type']): Link;
|
|
24
|
+
export declare function getLinksFrom(sourceType: Link['source_type'], sourceId: number): Link[];
|
|
25
|
+
export declare function getLinksTo(targetType: Link['target_type'], targetId: number): Link[];
|
|
26
|
+
export declare function insertExtraction(conversationId: number, type: Extraction['type'], content: string, metadata?: Record<string, unknown>): Extraction;
|
|
27
|
+
export declare function getConversationExtractions(conversationId: number): Extraction[];
|
|
28
|
+
export declare function getExtraction(id: number): Extraction | undefined;
|
|
29
|
+
export declare function searchExtractions(query: string, limit?: number, projectId?: number): Extraction[];
|
|
30
|
+
export declare function isDuplicateExtraction(content: string, projectId: number | null, windowSeconds?: number): boolean;
|
|
31
|
+
export declare function getStats(): IndexStats;
|
|
32
|
+
export declare function structureExists(name: string): boolean;
|
|
33
|
+
export declare function fileExists(path: string): boolean;
|
|
34
|
+
export declare function getConversationById(id: number): Conversation | undefined;
|
|
35
|
+
export declare function getFullConversations(projectId: number, limit?: number, offset?: number): Conversation[];
|
|
36
|
+
export declare function searchFullConversations(query: string, limit?: number, projectId?: number): Conversation[];
|
|
37
|
+
export interface StructureWithFile extends Structure {
|
|
38
|
+
file_path: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function getAllProjectStructures(projectId: number): StructureWithFile[];
|
|
41
|
+
export declare function getAllProjectLinks(projectId: number): Link[];
|
|
42
|
+
export declare function getAllProjectExtractions(projectId: number): Extraction[];
|
|
43
|
+
export declare function upsertCommit(projectId: number, hash: string, shortHash: string | null, authorName: string | null, authorEmail: string | null, timestamp: string, subject: string, body: string | null, parentHashes?: string[]): Commit;
|
|
44
|
+
export declare function getCommitByHash(projectId: number, hash: string): Commit | undefined;
|
|
45
|
+
export declare function getCommitById(id: number): Commit | undefined;
|
|
46
|
+
export declare function searchCommits(query: string, limit?: number, projectId?: number): Commit[];
|
|
47
|
+
export declare function getRecentCommits(projectId: number, limit?: number): Commit[];
|
|
48
|
+
export declare function createCommitLink(commitId: number, targetType: CommitLink['target_type'], targetId: number, linkType: CommitLink['link_type']): CommitLink | undefined;
|
|
49
|
+
export declare function getCommitLinks(commitId: number): CommitLink[];
|
|
50
|
+
export declare function getLinksToCommit(targetType: CommitLink['target_type'], targetId: number): CommitLink[];
|
|
51
|
+
export declare function getCommitsForStructure(structureId: number): Commit[];
|
|
52
|
+
export declare function getCommitsForExtraction(extractionId: number): Commit[];
|
|
53
|
+
export declare function updateStructureAuthorship(structureId: number, author: string | null, authorEmail: string | null, commitHash: string | null): void;
|
|
54
|
+
export declare function getUncommittedExtractions(projectId: number, sinceCommitHash?: string): Extraction[];
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOlI,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAeD,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAUzC;AAED,wBAAgB,OAAO,IAAI,IAAI,CAK9B;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAG1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAGlE;AAED,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAG1C;AAGD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAW9E;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAGpD;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAG/E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG3C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CAGzD;AAGD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,SAAS,CAQX;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGzD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAmB3F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAUjF;AAGD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAU1E;AAGD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,KAAK,GAAE,MAAM,GAAG,IAAW,EAC3B,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,OAAO,GAAE,MAAM,GAAG,IAAW,GAC5B,YAAY,CAQd;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBjG;AAGD,wBAAgB,UAAU,CACxB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAC1B,IAAI,CAQN;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,CAGtF;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,CAGpF;AAGD,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,UAAU,CAQZ;AAED,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,EAAE,CAG/E;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGhE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAoB7F;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,aAAa,GAAE,MAAY,GAC1B,OAAO,CAYT;AAGD,wBAAgB,QAAQ,IAAI,UAAU,CAQrC;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIhD;AAGD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGxE;AAGD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,MAAM,SAAI,GAAG,YAAY,EAAE,CAQ9F;AAGD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBrG;AAGD,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAS9E;AAGD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CAS5D;AAGD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAQxE;AAKD,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,YAAY,GAAE,MAAM,EAAO,GAC1B,MAAM,CAeR;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGnF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBrF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,EAAE,CAMxE;AAGD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,EACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAChC,UAAU,GAAG,SAAS,CAQxB;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAG7D;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAGtG;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAQpE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAQtE;AAGD,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,IAAI,CASN;AAGD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CA6BnG"}
|