@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.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +380 -0
  3. package/dist/cli/commands/git.d.ts +6 -0
  4. package/dist/cli/commands/git.d.ts.map +1 -0
  5. package/dist/cli/commands/git.js +298 -0
  6. package/dist/cli/commands/git.js.map +1 -0
  7. package/dist/cli/commands/hook-session-end.d.ts +7 -0
  8. package/dist/cli/commands/hook-session-end.d.ts.map +1 -0
  9. package/dist/cli/commands/hook-session-end.js +109 -0
  10. package/dist/cli/commands/hook-session-end.js.map +1 -0
  11. package/dist/cli/commands/hook-session-start.d.ts +7 -0
  12. package/dist/cli/commands/hook-session-start.d.ts.map +1 -0
  13. package/dist/cli/commands/hook-session-start.js +116 -0
  14. package/dist/cli/commands/hook-session-start.js.map +1 -0
  15. package/dist/cli/commands/import.d.ts +14 -0
  16. package/dist/cli/commands/import.d.ts.map +1 -0
  17. package/dist/cli/commands/import.js +527 -0
  18. package/dist/cli/commands/import.js.map +1 -0
  19. package/dist/cli/commands/init.d.ts +2 -0
  20. package/dist/cli/commands/init.d.ts.map +1 -0
  21. package/dist/cli/commands/init.js +32 -0
  22. package/dist/cli/commands/init.js.map +1 -0
  23. package/dist/cli/commands/mcp-serve.d.ts +2 -0
  24. package/dist/cli/commands/mcp-serve.d.ts.map +1 -0
  25. package/dist/cli/commands/mcp-serve.js +5 -0
  26. package/dist/cli/commands/mcp-serve.js.map +1 -0
  27. package/dist/cli/commands/query.d.ts +8 -0
  28. package/dist/cli/commands/query.d.ts.map +1 -0
  29. package/dist/cli/commands/query.js +83 -0
  30. package/dist/cli/commands/query.js.map +1 -0
  31. package/dist/cli/commands/setup.d.ts +10 -0
  32. package/dist/cli/commands/setup.d.ts.map +1 -0
  33. package/dist/cli/commands/setup.js +504 -0
  34. package/dist/cli/commands/setup.js.map +1 -0
  35. package/dist/cli/commands/start.d.ts +8 -0
  36. package/dist/cli/commands/start.d.ts.map +1 -0
  37. package/dist/cli/commands/start.js +90 -0
  38. package/dist/cli/commands/start.js.map +1 -0
  39. package/dist/cli/commands/status.d.ts +2 -0
  40. package/dist/cli/commands/status.d.ts.map +1 -0
  41. package/dist/cli/commands/status.js +85 -0
  42. package/dist/cli/commands/status.js.map +1 -0
  43. package/dist/cli/commands/stop.d.ts +7 -0
  44. package/dist/cli/commands/stop.d.ts.map +1 -0
  45. package/dist/cli/commands/stop.js +46 -0
  46. package/dist/cli/commands/stop.js.map +1 -0
  47. package/dist/cli/commands/visualize.d.ts +8 -0
  48. package/dist/cli/commands/visualize.d.ts.map +1 -0
  49. package/dist/cli/commands/visualize.js +96 -0
  50. package/dist/cli/commands/visualize.js.map +1 -0
  51. package/dist/cli/index.d.ts +3 -0
  52. package/dist/cli/index.d.ts.map +1 -0
  53. package/dist/cli/index.js +114 -0
  54. package/dist/cli/index.js.map +1 -0
  55. package/dist/db/index.d.ts +55 -0
  56. package/dist/db/index.d.ts.map +1 -0
  57. package/dist/db/index.js +464 -0
  58. package/dist/db/index.js.map +1 -0
  59. package/dist/db/schema.d.ts +4 -0
  60. package/dist/db/schema.d.ts.map +1 -0
  61. package/dist/db/schema.js +200 -0
  62. package/dist/db/schema.js.map +1 -0
  63. package/dist/extractor/index.d.ts +27 -0
  64. package/dist/extractor/index.d.ts.map +1 -0
  65. package/dist/extractor/index.js +227 -0
  66. package/dist/extractor/index.js.map +1 -0
  67. package/dist/git/extractor.d.ts +30 -0
  68. package/dist/git/extractor.d.ts.map +1 -0
  69. package/dist/git/extractor.js +126 -0
  70. package/dist/git/extractor.js.map +1 -0
  71. package/dist/git/hooks.d.ts +36 -0
  72. package/dist/git/hooks.d.ts.map +1 -0
  73. package/dist/git/hooks.js +142 -0
  74. package/dist/git/hooks.js.map +1 -0
  75. package/dist/git/index.d.ts +69 -0
  76. package/dist/git/index.d.ts.map +1 -0
  77. package/dist/git/index.js +250 -0
  78. package/dist/git/index.js.map +1 -0
  79. package/dist/indexer/index.d.ts +20 -0
  80. package/dist/indexer/index.d.ts.map +1 -0
  81. package/dist/indexer/index.js +173 -0
  82. package/dist/indexer/index.js.map +1 -0
  83. package/dist/indexer/parsers/base.d.ts +19 -0
  84. package/dist/indexer/parsers/base.d.ts.map +1 -0
  85. package/dist/indexer/parsers/base.js +46 -0
  86. package/dist/indexer/parsers/base.js.map +1 -0
  87. package/dist/indexer/parsers/cpp.d.ts +3 -0
  88. package/dist/indexer/parsers/cpp.d.ts.map +1 -0
  89. package/dist/indexer/parsers/cpp.js +180 -0
  90. package/dist/indexer/parsers/cpp.js.map +1 -0
  91. package/dist/indexer/parsers/go.d.ts +3 -0
  92. package/dist/indexer/parsers/go.d.ts.map +1 -0
  93. package/dist/indexer/parsers/go.js +98 -0
  94. package/dist/indexer/parsers/go.js.map +1 -0
  95. package/dist/indexer/parsers/java.d.ts +3 -0
  96. package/dist/indexer/parsers/java.d.ts.map +1 -0
  97. package/dist/indexer/parsers/java.js +204 -0
  98. package/dist/indexer/parsers/java.js.map +1 -0
  99. package/dist/indexer/parsers/javascript.d.ts +3 -0
  100. package/dist/indexer/parsers/javascript.d.ts.map +1 -0
  101. package/dist/indexer/parsers/javascript.js +157 -0
  102. package/dist/indexer/parsers/javascript.js.map +1 -0
  103. package/dist/indexer/parsers/kotlin.d.ts +3 -0
  104. package/dist/indexer/parsers/kotlin.d.ts.map +1 -0
  105. package/dist/indexer/parsers/kotlin.js +182 -0
  106. package/dist/indexer/parsers/kotlin.js.map +1 -0
  107. package/dist/indexer/parsers/php.d.ts +3 -0
  108. package/dist/indexer/parsers/php.d.ts.map +1 -0
  109. package/dist/indexer/parsers/php.js +190 -0
  110. package/dist/indexer/parsers/php.js.map +1 -0
  111. package/dist/indexer/parsers/python.d.ts +3 -0
  112. package/dist/indexer/parsers/python.d.ts.map +1 -0
  113. package/dist/indexer/parsers/python.js +101 -0
  114. package/dist/indexer/parsers/python.js.map +1 -0
  115. package/dist/indexer/parsers/ruby.d.ts +3 -0
  116. package/dist/indexer/parsers/ruby.d.ts.map +1 -0
  117. package/dist/indexer/parsers/ruby.js +92 -0
  118. package/dist/indexer/parsers/ruby.js.map +1 -0
  119. package/dist/indexer/parsers/rust.d.ts +3 -0
  120. package/dist/indexer/parsers/rust.d.ts.map +1 -0
  121. package/dist/indexer/parsers/rust.js +190 -0
  122. package/dist/indexer/parsers/rust.js.map +1 -0
  123. package/dist/indexer/watcher-daemon.d.ts +2 -0
  124. package/dist/indexer/watcher-daemon.d.ts.map +1 -0
  125. package/dist/indexer/watcher-daemon.js +27 -0
  126. package/dist/indexer/watcher-daemon.js.map +1 -0
  127. package/dist/indexer/watcher.d.ts +7 -0
  128. package/dist/indexer/watcher.d.ts.map +1 -0
  129. package/dist/indexer/watcher.js +77 -0
  130. package/dist/indexer/watcher.js.map +1 -0
  131. package/dist/mcp/server.d.ts +2 -0
  132. package/dist/mcp/server.d.ts.map +1 -0
  133. package/dist/mcp/server.js +241 -0
  134. package/dist/mcp/server.js.map +1 -0
  135. package/dist/proxy/interceptor-mockttp.d.ts +27 -0
  136. package/dist/proxy/interceptor-mockttp.d.ts.map +1 -0
  137. package/dist/proxy/interceptor-mockttp.js +274 -0
  138. package/dist/proxy/interceptor-mockttp.js.map +1 -0
  139. package/dist/proxy/proxy-daemon.d.ts +5 -0
  140. package/dist/proxy/proxy-daemon.d.ts.map +1 -0
  141. package/dist/proxy/proxy-daemon.js +26 -0
  142. package/dist/proxy/proxy-daemon.js.map +1 -0
  143. package/dist/query/index.d.ts +32 -0
  144. package/dist/query/index.d.ts.map +1 -0
  145. package/dist/query/index.js +135 -0
  146. package/dist/query/index.js.map +1 -0
  147. package/dist/types/index.d.ts +89 -0
  148. package/dist/types/index.d.ts.map +1 -0
  149. package/dist/types/index.js +3 -0
  150. package/dist/types/index.js.map +1 -0
  151. package/dist/visualize/index.d.ts +144 -0
  152. package/dist/visualize/index.d.ts.map +1 -0
  153. package/dist/visualize/index.js +707 -0
  154. package/dist/visualize/index.js.map +1 -0
  155. package/dist/visualize/server.d.ts +7 -0
  156. package/dist/visualize/server.d.ts.map +1 -0
  157. package/dist/visualize/server.js +77 -0
  158. package/dist/visualize/server.js.map +1 -0
  159. package/dist/visualize/template.d.ts +3 -0
  160. package/dist/visualize/template.d.ts.map +1 -0
  161. package/dist/visualize/template.js +3465 -0
  162. package/dist/visualize/template.js.map +1 -0
  163. package/package.json +56 -0
@@ -0,0 +1,83 @@
1
+ import chalk from 'chalk';
2
+ import { searchStructures, searchConversations, getLinksTo, getFile, findProjectForPath } from '../../db/index.js';
3
+ function formatStructure(s, fileCache) {
4
+ let filePath = fileCache.get(s.file_id);
5
+ if (!filePath) {
6
+ const file = getFile(s.file_id);
7
+ filePath = file?.path || 'unknown';
8
+ fileCache.set(s.file_id, filePath);
9
+ }
10
+ const location = `${filePath}:${s.line_start}`;
11
+ const sig = s.signature || s.name;
12
+ return ` ${chalk.cyan(s.type)} ${chalk.bold(s.name)}
13
+ ${chalk.gray(location)}
14
+ ${chalk.gray(sig)}`;
15
+ }
16
+ function formatConversation(c) {
17
+ const date = new Date(c.timestamp).toLocaleDateString();
18
+ const summary = c.summary || c.raw_content.slice(0, 100) + '...';
19
+ const model = c.model || 'unknown';
20
+ return ` ${chalk.yellow(`#${c.id}`)} ${chalk.gray(date)} ${chalk.gray(`[${model}]`)}
21
+ ${summary}`;
22
+ }
23
+ export function queryCommand(searchQuery, options) {
24
+ const type = options.type || 'all';
25
+ const limit = options.limit || 10;
26
+ // Auto-detect project from cwd unless --global flag is set
27
+ let projectId;
28
+ if (!options.global) {
29
+ const project = findProjectForPath(process.cwd());
30
+ if (project) {
31
+ projectId = project.id;
32
+ console.log(chalk.gray(`Searching in project: ${project.name}`));
33
+ console.log(chalk.gray(`(use --global to search all projects)\n`));
34
+ }
35
+ }
36
+ console.log(chalk.bold(`Searching for: "${searchQuery}"\n`));
37
+ const fileCache = new Map();
38
+ let foundAny = false;
39
+ // Search structures
40
+ if (type === 'all' || type === 'structures') {
41
+ try {
42
+ const structures = searchStructures(searchQuery, limit, projectId);
43
+ if (structures.length > 0) {
44
+ foundAny = true;
45
+ console.log(chalk.bold.blue(`Structures (${structures.length}):`));
46
+ for (const s of structures) {
47
+ console.log(formatStructure(s, fileCache));
48
+ // Show related conversations
49
+ const links = getLinksTo('structure', s.id);
50
+ const decisions = links.filter(l => l.link_type === 'decision');
51
+ if (decisions.length > 0) {
52
+ console.log(chalk.gray(` ${decisions.length} related decision(s)`));
53
+ }
54
+ }
55
+ console.log();
56
+ }
57
+ }
58
+ catch (err) {
59
+ // FTS might not be ready
60
+ }
61
+ }
62
+ // Search conversations
63
+ if (type === 'all' || type === 'conversations') {
64
+ try {
65
+ const conversations = searchConversations(searchQuery, limit, projectId);
66
+ if (conversations.length > 0) {
67
+ foundAny = true;
68
+ console.log(chalk.bold.yellow(`Conversations (${conversations.length}):`));
69
+ for (const c of conversations) {
70
+ console.log(formatConversation(c));
71
+ }
72
+ console.log();
73
+ }
74
+ }
75
+ catch (err) {
76
+ // FTS might not be ready
77
+ }
78
+ }
79
+ if (!foundAny) {
80
+ console.log(chalk.gray('No results found'));
81
+ }
82
+ }
83
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/cli/commands/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Setup command: Automatically configure aimem for various AI coding tools
3
+ */
4
+ export declare function setupCommand(tool: string, options: {
5
+ force?: boolean;
6
+ port?: string;
7
+ install?: boolean;
8
+ autostart?: boolean;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8SH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BnJ"}
@@ -0,0 +1,504 @@
1
+ /**
2
+ * Setup command: Automatically configure aimem for various AI coding tools
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
5
+ import { join, dirname } from 'path';
6
+ import { homedir } from 'os';
7
+ import { execSync } from 'child_process';
8
+ import chalk from 'chalk';
9
+ function getAimemPath() {
10
+ try {
11
+ // Try to find aimem in PATH
12
+ const result = execSync('which aimem', { encoding: 'utf-8' }).trim();
13
+ if (result)
14
+ return result;
15
+ }
16
+ catch {
17
+ // Fall through
18
+ }
19
+ // Fallback: check common locations
20
+ const possiblePaths = [
21
+ join(homedir(), '.nvm/versions/node', process.version, 'bin/aimem'),
22
+ '/usr/local/bin/aimem',
23
+ '/usr/bin/aimem',
24
+ join(homedir(), '.npm-global/bin/aimem'),
25
+ ];
26
+ for (const p of possiblePaths) {
27
+ if (existsSync(p))
28
+ return p;
29
+ }
30
+ // Last resort: use npx
31
+ return 'npx aimem';
32
+ }
33
+ function readJsonFile(path) {
34
+ try {
35
+ if (!existsSync(path))
36
+ return null;
37
+ const content = readFileSync(path, 'utf-8');
38
+ return JSON.parse(content);
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ function writeJsonFile(path, data) {
45
+ const dir = dirname(path);
46
+ if (!existsSync(dir)) {
47
+ mkdirSync(dir, { recursive: true });
48
+ }
49
+ writeFileSync(path, JSON.stringify(data, null, 2) + '\n');
50
+ }
51
+ function getPlatform() {
52
+ const platform = process.platform;
53
+ if (platform === 'darwin')
54
+ return 'macos';
55
+ if (platform === 'win32')
56
+ return 'windows';
57
+ // Check for WSL
58
+ try {
59
+ const release = execSync('uname -r', { encoding: 'utf-8' }).toLowerCase();
60
+ if (release.includes('microsoft') || release.includes('wsl'))
61
+ return 'wsl';
62
+ }
63
+ catch {
64
+ // Ignore
65
+ }
66
+ return 'linux';
67
+ }
68
+ function getShellProfile() {
69
+ const shell = process.env.SHELL || '/bin/bash';
70
+ const home = homedir();
71
+ if (shell.includes('zsh')) {
72
+ return join(home, '.zshrc');
73
+ }
74
+ else if (shell.includes('fish')) {
75
+ return join(home, '.config/fish/config.fish');
76
+ }
77
+ return join(home, '.bashrc');
78
+ }
79
+ function getAimemCertPath() {
80
+ return join(homedir(), '.aimem', 'ca-cert.pem');
81
+ }
82
+ function ensureAimemCert() {
83
+ const certPath = getAimemCertPath();
84
+ if (existsSync(certPath)) {
85
+ return certPath;
86
+ }
87
+ // Certificate will be generated when proxy starts
88
+ // For now, return the expected path
89
+ console.log(chalk.yellow('CA certificate will be generated when proxy starts.'));
90
+ console.log(chalk.yellow('Run `aimem start` first, then run setup again to install the cert.\n'));
91
+ return null;
92
+ }
93
+ async function installCertificate(certPath, platform) {
94
+ console.log(chalk.bold('\nInstalling CA certificate...\n'));
95
+ try {
96
+ if (platform === 'macos') {
97
+ console.log('Adding certificate to macOS keychain (requires password)...');
98
+ execSync(`sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${certPath}"`, {
99
+ stdio: 'inherit',
100
+ });
101
+ return true;
102
+ }
103
+ if (platform === 'linux') {
104
+ const destPath = '/usr/local/share/ca-certificates/aimem-ca-cert.crt';
105
+ console.log('Adding certificate to system CA store (requires sudo)...');
106
+ execSync(`sudo cp "${certPath}" "${destPath}" && sudo update-ca-certificates`, {
107
+ stdio: 'inherit',
108
+ });
109
+ return true;
110
+ }
111
+ if (platform === 'wsl') {
112
+ // For WSL, install to both Linux and Windows
113
+ const destPath = '/usr/local/share/ca-certificates/aimem-ca-cert.crt';
114
+ console.log('Adding certificate to Linux CA store (requires sudo)...');
115
+ execSync(`sudo cp "${certPath}" "${destPath}" && sudo update-ca-certificates`, {
116
+ stdio: 'inherit',
117
+ });
118
+ console.log(chalk.yellow('\nFor Windows applications, you also need to install the cert on Windows:'));
119
+ console.log(chalk.cyan(` 1. Copy cert to Windows: cp ${certPath} /mnt/c/temp/aimem-ca-cert.crt`));
120
+ console.log(chalk.cyan(' 2. Run in PowerShell (as admin):'));
121
+ console.log(chalk.cyan(' certutil -addstore -f "ROOT" C:\\temp\\aimem-ca-cert.crt'));
122
+ return true;
123
+ }
124
+ if (platform === 'windows') {
125
+ console.log('Adding certificate to Windows certificate store (requires admin)...');
126
+ execSync(`certutil -addstore -f "ROOT" "${certPath}"`, {
127
+ stdio: 'inherit',
128
+ });
129
+ return true;
130
+ }
131
+ }
132
+ catch (err) {
133
+ console.log(chalk.red('Failed to install certificate automatically.'));
134
+ console.log(chalk.yellow(`\nManually install the certificate from: ${certPath}`));
135
+ return false;
136
+ }
137
+ return false;
138
+ }
139
+ function setupAutostart(aimemPath, port, platform) {
140
+ console.log(chalk.bold('\nConfiguring autostart...\n'));
141
+ if (platform === 'macos') {
142
+ // macOS: Use launchd
143
+ const plistDir = join(homedir(), 'Library', 'LaunchAgents');
144
+ const plistPath = join(plistDir, 'com.aimem.proxy.plist');
145
+ if (!existsSync(plistDir)) {
146
+ mkdirSync(plistDir, { recursive: true });
147
+ }
148
+ const plistContent = `<?xml version="1.0" encoding="UTF-8"?>
149
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
150
+ <plist version="1.0">
151
+ <dict>
152
+ <key>Label</key>
153
+ <string>com.aimem.proxy</string>
154
+ <key>ProgramArguments</key>
155
+ <array>
156
+ <string>${aimemPath}</string>
157
+ <string>start</string>
158
+ <string>--port</string>
159
+ <string>${port}</string>
160
+ </array>
161
+ <key>RunAtLoad</key>
162
+ <true/>
163
+ <key>KeepAlive</key>
164
+ <false/>
165
+ <key>StandardOutPath</key>
166
+ <string>${join(homedir(), '.aimem', 'proxy.log')}</string>
167
+ <key>StandardErrorPath</key>
168
+ <string>${join(homedir(), '.aimem', 'proxy.error.log')}</string>
169
+ </dict>
170
+ </plist>
171
+ `;
172
+ try {
173
+ writeFileSync(plistPath, plistContent);
174
+ // Load the service
175
+ execSync(`launchctl load "${plistPath}"`, { stdio: 'inherit' });
176
+ console.log(chalk.green(`Created launchd service: ${plistPath}`));
177
+ console.log(chalk.green('Proxy will start automatically on login.'));
178
+ return true;
179
+ }
180
+ catch (err) {
181
+ console.log(chalk.red('Failed to set up launchd service.'));
182
+ console.log(chalk.yellow(`Manually load with: launchctl load "${plistPath}"`));
183
+ return false;
184
+ }
185
+ }
186
+ if (platform === 'linux' || platform === 'wsl') {
187
+ // Linux/WSL: Use systemd user service
188
+ const systemdDir = join(homedir(), '.config', 'systemd', 'user');
189
+ const servicePath = join(systemdDir, 'aimem-proxy.service');
190
+ if (!existsSync(systemdDir)) {
191
+ mkdirSync(systemdDir, { recursive: true });
192
+ }
193
+ const serviceContent = `[Unit]
194
+ Description=aimem proxy for AI coding assistants
195
+ After=network.target
196
+
197
+ [Service]
198
+ Type=simple
199
+ ExecStart=${aimemPath} start --port ${port}
200
+ Restart=on-failure
201
+ RestartSec=5
202
+ Environment=HOME=${homedir()}
203
+
204
+ [Install]
205
+ WantedBy=default.target
206
+ `;
207
+ try {
208
+ writeFileSync(servicePath, serviceContent);
209
+ // Reload systemd and enable the service
210
+ execSync('systemctl --user daemon-reload', { stdio: 'inherit' });
211
+ execSync('systemctl --user enable aimem-proxy.service', { stdio: 'inherit' });
212
+ console.log(chalk.green(`Created systemd user service: ${servicePath}`));
213
+ console.log(chalk.green('Proxy will start automatically on login.'));
214
+ console.log(chalk.cyan('\nManual control:'));
215
+ console.log(' Start now: systemctl --user start aimem-proxy');
216
+ console.log(' Stop: systemctl --user stop aimem-proxy');
217
+ console.log(' Status: systemctl --user status aimem-proxy');
218
+ console.log(' Disable: systemctl --user disable aimem-proxy');
219
+ return true;
220
+ }
221
+ catch (err) {
222
+ console.log(chalk.red('Failed to set up systemd service.'));
223
+ console.log(chalk.yellow(`Service file created at: ${servicePath}`));
224
+ console.log(chalk.yellow('Manually enable with:'));
225
+ console.log(chalk.cyan(' systemctl --user daemon-reload'));
226
+ console.log(chalk.cyan(' systemctl --user enable aimem-proxy.service'));
227
+ return false;
228
+ }
229
+ }
230
+ console.log(chalk.yellow(`Autostart not supported on platform: ${platform}`));
231
+ return false;
232
+ }
233
+ function addToShellProfile(profilePath, port, certPath) {
234
+ const marker = '# aimem proxy configuration';
235
+ // Build env block with proper Node.js SSL handling
236
+ let envBlock = `
237
+ ${marker}
238
+ export HTTP_PROXY=http://localhost:${port}
239
+ export HTTPS_PROXY=http://localhost:${port}
240
+ `;
241
+ // Add Node.js cert configuration
242
+ if (certPath) {
243
+ envBlock += `export NODE_EXTRA_CA_CERTS="${certPath}"
244
+ `;
245
+ }
246
+ // Fallback for apps that don't respect NODE_EXTRA_CA_CERTS
247
+ envBlock += `export NODE_TLS_REJECT_UNAUTHORIZED=0
248
+ `;
249
+ try {
250
+ let content = '';
251
+ if (existsSync(profilePath)) {
252
+ content = readFileSync(profilePath, 'utf-8');
253
+ // Check if already configured
254
+ if (content.includes(marker)) {
255
+ console.log(chalk.yellow(`Shell profile already configured: ${profilePath}`));
256
+ return true;
257
+ }
258
+ }
259
+ // Append to profile
260
+ writeFileSync(profilePath, content + envBlock);
261
+ console.log(chalk.green(`Added proxy environment to: ${profilePath}`));
262
+ return true;
263
+ }
264
+ catch (err) {
265
+ console.log(chalk.red(`Failed to update shell profile: ${profilePath}`));
266
+ return false;
267
+ }
268
+ }
269
+ export async function setupCommand(tool, options) {
270
+ const supportedTools = ['claude-code', 'proxy', 'cursor', 'continue'];
271
+ if (!tool) {
272
+ console.log(chalk.bold('aimem setup\n'));
273
+ console.log('Automatically configure aimem for AI coding tools.\n');
274
+ console.log('Usage:');
275
+ console.log(' aimem setup claude-code Configure for Claude Code (MCP server)');
276
+ console.log(' aimem setup proxy Configure proxy for any tool (Cursor, etc.)');
277
+ console.log(' aimem setup cursor Show Cursor configuration instructions');
278
+ console.log(' aimem setup continue Show Continue.dev configuration instructions\n');
279
+ console.log('Supported tools:', supportedTools.join(', '));
280
+ return;
281
+ }
282
+ if (!supportedTools.includes(tool)) {
283
+ console.log(chalk.red(`Unknown tool: ${tool}`));
284
+ console.log('Supported tools:', supportedTools.join(', '));
285
+ process.exit(1);
286
+ }
287
+ if (tool === 'claude-code') {
288
+ await setupClaudeCode(options);
289
+ }
290
+ else if (tool === 'proxy') {
291
+ await setupProxy(options);
292
+ }
293
+ else if (tool === 'cursor') {
294
+ await setupCursor(options);
295
+ }
296
+ else if (tool === 'continue') {
297
+ await setupContinue(options);
298
+ }
299
+ }
300
+ async function setupClaudeCode(options) {
301
+ console.log(chalk.bold('Setting up aimem for Claude Code...\n'));
302
+ const aimemPath = getAimemPath();
303
+ console.log(`Found aimem at: ${chalk.cyan(aimemPath)}`);
304
+ // Claude Code settings file location
305
+ const claudeDir = join(homedir(), '.claude');
306
+ const settingsPath = join(claudeDir, 'settings.json');
307
+ // Read existing settings or create new
308
+ let settings = {};
309
+ const existingSettings = readJsonFile(settingsPath);
310
+ if (existingSettings) {
311
+ settings = existingSettings;
312
+ console.log(`Found existing settings at: ${chalk.cyan(settingsPath)}`);
313
+ }
314
+ else {
315
+ console.log(`Creating new settings file at: ${chalk.cyan(settingsPath)}`);
316
+ }
317
+ // Track what we're changing
318
+ const changes = [];
319
+ // Configure MCP server (for query tools)
320
+ if (!settings.mcpServers) {
321
+ settings.mcpServers = {};
322
+ }
323
+ if (!settings.mcpServers.aimem || options.force) {
324
+ settings.mcpServers.aimem = {
325
+ command: aimemPath,
326
+ args: ['mcp-serve'],
327
+ };
328
+ changes.push('Added aimem MCP server (query tools)');
329
+ }
330
+ else {
331
+ console.log(chalk.yellow('MCP server already configured (use --force to overwrite)'));
332
+ }
333
+ // Write settings
334
+ if (changes.length > 0) {
335
+ writeJsonFile(settingsPath, settings);
336
+ console.log(chalk.green('\nConfiguration updated:'));
337
+ for (const change of changes) {
338
+ console.log(chalk.green(` ✓ ${change}`));
339
+ }
340
+ }
341
+ else {
342
+ console.log(chalk.green('\nMCP server already configured.'));
343
+ }
344
+ console.log(chalk.bold('\nNext steps:'));
345
+ console.log(' 1. Restart Claude Code to load the MCP server');
346
+ console.log(' 2. Set up the proxy for context capture:');
347
+ console.log(chalk.cyan(' aimem setup proxy --install'));
348
+ console.log(' 3. Start the proxy before using Claude Code:');
349
+ console.log(chalk.cyan(' aimem start'));
350
+ console.log(' 4. Run `aimem init` in your project directory to index it\n');
351
+ console.log(chalk.yellow('Note: The proxy captures decisions in real-time.'));
352
+ console.log(chalk.yellow('MCP provides query tools for retrieving context on-demand.\n'));
353
+ }
354
+ async function setupProxy(options) {
355
+ console.log(chalk.bold('Setting up aimem proxy...\n'));
356
+ const port = options.port || '8080';
357
+ const install = options.install || false;
358
+ const autostart = options.autostart || false;
359
+ const platform = getPlatform();
360
+ console.log(`Detected platform: ${chalk.cyan(platform)}`);
361
+ // Create a startup script
362
+ const aimemPath = getAimemPath();
363
+ const startupScript = `#!/bin/bash
364
+ # Start aimem proxy
365
+ ${aimemPath} start --port ${port}
366
+ `;
367
+ const aimemDir = join(homedir(), '.aimem');
368
+ if (!existsSync(aimemDir)) {
369
+ mkdirSync(aimemDir, { recursive: true });
370
+ }
371
+ // Write startup script
372
+ const scriptPath = join(aimemDir, 'start-proxy.sh');
373
+ writeFileSync(scriptPath, startupScript, { mode: 0o755 });
374
+ // Write profile snippet (for manual sourcing)
375
+ const certPath = getAimemCertPath();
376
+ const profileAdditions = `
377
+ # aimem proxy configuration
378
+ export HTTP_PROXY=http://localhost:${port}
379
+ export HTTPS_PROXY=http://localhost:${port}
380
+ export NODE_EXTRA_CA_CERTS="${certPath}"
381
+ # Fallback for apps that don't respect NODE_EXTRA_CA_CERTS:
382
+ export NODE_TLS_REJECT_UNAUTHORIZED=0
383
+ `;
384
+ const profileSnippetPath = join(aimemDir, 'proxy-env.sh');
385
+ writeFileSync(profileSnippetPath, profileAdditions);
386
+ console.log(chalk.green('\nFiles created:'));
387
+ console.log(` ${chalk.cyan(scriptPath)} - Start proxy script`);
388
+ console.log(` ${chalk.cyan(profileSnippetPath)} - Environment variables`);
389
+ if (install) {
390
+ // Full installation mode
391
+ console.log(chalk.bold('\n--- Full Installation Mode ---\n'));
392
+ // Step 1: Ensure certificate exists (or start proxy to generate it)
393
+ const certPath = ensureAimemCert();
394
+ if (!certPath) {
395
+ console.log(chalk.yellow('To complete setup:'));
396
+ console.log(' 1. Run: ' + chalk.cyan('aimem start'));
397
+ console.log(' 2. Then run: ' + chalk.cyan('aimem setup proxy --install'));
398
+ return;
399
+ }
400
+ console.log(chalk.green(`Certificate found: ${certPath}`));
401
+ // Step 2: Install certificate
402
+ await installCertificate(certPath, platform);
403
+ // Step 3: Add to shell profile
404
+ const profilePath = getShellProfile();
405
+ console.log(chalk.bold('\nConfiguring shell environment...\n'));
406
+ addToShellProfile(profilePath, port, certPath);
407
+ console.log(chalk.green(chalk.bold('\n✓ Proxy installation complete!\n')));
408
+ console.log(chalk.bold('Next steps:'));
409
+ console.log(' 1. Restart your terminal (or run: ' + chalk.cyan(`source ${profilePath}`) + ')');
410
+ console.log(' 2. Start the proxy: ' + chalk.cyan('aimem start'));
411
+ console.log(' 3. Your HTTP_PROXY and HTTPS_PROXY are now set automatically\n');
412
+ if (platform === 'wsl') {
413
+ console.log(chalk.yellow('WSL Note: For Windows apps (like Cursor), you may need to:'));
414
+ console.log(' - Install the cert on Windows (see instructions above)');
415
+ console.log(' - Configure the proxy in the app settings manually\n');
416
+ }
417
+ // Handle autostart if requested
418
+ if (autostart) {
419
+ setupAutostart(aimemPath, port, platform);
420
+ }
421
+ else {
422
+ console.log(chalk.cyan('Tip: Add --autostart to start the proxy automatically on login.\n'));
423
+ }
424
+ }
425
+ else if (autostart) {
426
+ // Autostart without full install
427
+ setupAutostart(aimemPath, port, platform);
428
+ }
429
+ else {
430
+ // Manual setup instructions
431
+ console.log(chalk.bold('\nTo use the proxy:\n'));
432
+ console.log('Option A: ' + chalk.bold('Automatic setup (recommended)'));
433
+ console.log(chalk.cyan(` aimem setup proxy --install\n`));
434
+ console.log('Option B: ' + chalk.bold('Manual setup'));
435
+ console.log(' 1. Start the proxy:');
436
+ console.log(chalk.cyan(` aimem start --port ${port}\n`));
437
+ console.log(' 2. Trust the CA certificate:');
438
+ console.log(chalk.cyan(` # Certificate is at: ${certPath}`));
439
+ console.log(chalk.cyan(' # Install it to your system trust store\n'));
440
+ console.log(' 3. Set environment variables (add to your shell profile):');
441
+ console.log(chalk.cyan(` export HTTP_PROXY=http://localhost:${port}`));
442
+ console.log(chalk.cyan(` export HTTPS_PROXY=http://localhost:${port}\n`));
443
+ console.log(' 4. Or source the env file:');
444
+ console.log(chalk.cyan(` source ${profileSnippetPath}\n`));
445
+ }
446
+ console.log(chalk.bold('Supported tools with proxy:'));
447
+ console.log(' - Cursor (set proxy in settings)');
448
+ console.log(' - Continue.dev (respects HTTP_PROXY)');
449
+ console.log(' - Any tool that respects HTTP_PROXY/HTTPS_PROXY\n');
450
+ console.log(chalk.yellow('Note: The proxy intercepts API calls to:'));
451
+ console.log(' - api.anthropic.com');
452
+ console.log(' - api.openai.com');
453
+ console.log(' - localhost:11434 (Ollama)\n');
454
+ }
455
+ async function setupCursor(options) {
456
+ const port = options.port || '8080';
457
+ console.log(chalk.bold('Setting up aimem for Cursor...\n'));
458
+ console.log('Cursor supports MCP servers. Add to your Cursor settings:\n');
459
+ console.log(chalk.bold('Option 1: MCP Server (query only, no auto-capture)\n'));
460
+ console.log('Add to Cursor settings.json:');
461
+ const aimemPath = getAimemPath();
462
+ console.log(chalk.cyan(`{
463
+ "mcpServers": {
464
+ "aimem": {
465
+ "command": "${aimemPath}",
466
+ "args": ["mcp-serve"]
467
+ }
468
+ }
469
+ }\n`));
470
+ console.log(chalk.bold('Option 2: Proxy mode (full capture)\n'));
471
+ console.log('1. Run: ' + chalk.cyan(`aimem setup proxy --port ${port}`));
472
+ console.log('2. Start proxy: ' + chalk.cyan('aimem start'));
473
+ console.log('3. In Cursor settings, set HTTP proxy to: ' + chalk.cyan(`http://localhost:${port}`));
474
+ console.log('4. Trust the CA certificate at: ' + chalk.cyan(getAimemCertPath()) + '\n');
475
+ console.log(chalk.yellow('Note: MCP mode provides query tools but won\'t auto-capture decisions.'));
476
+ console.log('Use proxy mode for automatic decision capture.\n');
477
+ }
478
+ async function setupContinue(options) {
479
+ const port = options.port || '8080';
480
+ console.log(chalk.bold('Setting up aimem for Continue.dev...\n'));
481
+ const aimemPath = getAimemPath();
482
+ console.log(chalk.bold('Option 1: MCP Server (query only)\n'));
483
+ console.log('Add to ~/.continue/config.json:');
484
+ console.log(chalk.cyan(`{
485
+ "experimental": {
486
+ "mcpServers": [
487
+ {
488
+ "name": "aimem",
489
+ "command": "${aimemPath}",
490
+ "args": ["mcp-serve"]
491
+ }
492
+ ]
493
+ }
494
+ }\n`));
495
+ console.log(chalk.bold('Option 2: Proxy mode (full capture)\n'));
496
+ console.log('1. Run: ' + chalk.cyan(`aimem setup proxy --port ${port}`));
497
+ console.log('2. Start proxy: ' + chalk.cyan('aimem start'));
498
+ console.log('3. Set environment variables:');
499
+ console.log(chalk.cyan(` export HTTP_PROXY=http://localhost:${port}`));
500
+ console.log(chalk.cyan(` export HTTPS_PROXY=http://localhost:${port}`));
501
+ console.log('4. Start your IDE\n');
502
+ console.log(chalk.yellow('Note: Continue.dev respects HTTP_PROXY environment variables.\n'));
503
+ }
504
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,mCAAmC;IACnC,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;QACnE,sBAAsB;QACtB,gBAAgB;QAChB,IAAI,CAAC,OAAO,EAAE,EAAE,uBAAuB,CAAC;KACzC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,uBAAuB;IACvB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAA6B;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC3C,gBAAgB;IAChB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1E,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC;IAC/C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IAEpC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;IAElG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,QAAQ,CAAC,yFAAyF,QAAQ,GAAG,EAAE;gBAC7G,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,oDAAoD,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,QAAQ,CAAC,YAAY,QAAQ,MAAM,QAAQ,kCAAkC,EAAE;gBAC7E,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,oDAAoD,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,QAAQ,CAAC,YAAY,QAAQ,MAAM,QAAQ,kCAAkC,EAAE;gBAC7E,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2EAA2E,CAAC,CAAC,CAAC;YACvG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,QAAQ,gCAAgC,CAAC,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,QAAQ,CAAC,iCAAiC,QAAQ,GAAG,EAAE;gBACrD,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,IAAY,EAAE,QAAgB;IACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAExD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,qBAAqB;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,YAAY,GAAG;;;;;;;;cAQX,SAAS;;;cAGT,IAAI;;;;;;;YAON,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC;;YAEtC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC;;;CAGvD,CAAC;QAEE,IAAI,CAAC;YACH,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACvC,mBAAmB;YACnB,QAAQ,CAAC,mBAAmB,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,SAAS,GAAG,CAAC,CAAC,CAAC;YAC/E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC/C,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,cAAc,GAAG;;;;;;YAMf,SAAS,iBAAiB,IAAI;;;mBAGvB,OAAO,EAAE;;;;CAI3B,CAAC;QAEE,IAAI,CAAC;YACH,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAC3C,wCAAwC;YACxC,QAAQ,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACjE,QAAQ,CAAC,6CAA6C,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB,EAAE,IAAY,EAAE,QAAuB;IACnF,MAAM,MAAM,GAAG,6BAA6B,CAAC;IAE7C,mDAAmD;IACnD,IAAI,QAAQ,GAAG;EACf,MAAM;qCAC6B,IAAI;sCACH,IAAI;CACzC,CAAC;IAEA,iCAAiC;IACjC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,IAAI,+BAA+B,QAAQ;CACtD,CAAC;IACA,CAAC;IAED,2DAA2D;IAC3D,QAAQ,IAAI;CACb,CAAC;IAEA,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAE7C,8BAA8B;YAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC9E,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAAmF;IAClI,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEtE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAA4B;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAExD,qCAAqC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAEtD,uCAAuC;IACvC,IAAI,QAAQ,GAAmB,EAAE,CAAC;IAClC,MAAM,gBAAgB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAEpD,IAAI,gBAAgB,EAAE,CAAC;QACrB,QAAQ,GAAG,gBAAkC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChD,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG;YAC1B,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,CAAC,WAAW,CAAC;SACpB,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAE7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAkE;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAE7C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE1D,0BAA0B;IAC1B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,aAAa,GAAG;;EAEtB,SAAS,iBAAiB,IAAI;CAC/B,CAAC;IAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACpD,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1D,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,gBAAgB,GAAG;;qCAEU,IAAI;sCACH,IAAI;8BACZ,QAAQ;;;CAGrC,CAAC;IACA,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC1D,aAAa,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IAEpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;IAE3E,IAAI,OAAO,EAAE,CAAC;QACZ,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAE9D,oEAAoE;QACpE,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE3D,8BAA8B;QAC9B,MAAM,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE7C,+BAA+B;QAC/B,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAChE,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;QAEhF,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;QAED,gCAAgC;QAChC,IAAI,SAAS,EAAE,CAAC;YACd,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,iCAAiC;QACjC,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAE1E,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,IAAI,IAAI,CAAC,CAAC,CAAC;QAE9E,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,kBAAkB,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAA0B;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;;;oBAGL,SAAS;;;;IAIzB,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,4CAA4C,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAExF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wEAAwE,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAA0B;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;sBAKH,SAAS;;;;;IAK3B,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iEAAiE,CAAC,CAAC,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface StartOptions {
2
+ proxy?: boolean;
3
+ watcher?: boolean;
4
+ port?: number;
5
+ }
6
+ export declare function startCommand(options: StartOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AASA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4BD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEvE"}