@magic-ingredients/tiny-brain-local 0.5.1 → 0.6.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 (88) hide show
  1. package/README.md +202 -23
  2. package/dist/cli/cli-factory.d.ts +3 -0
  3. package/dist/cli/cli-factory.d.ts.map +1 -0
  4. package/dist/cli/cli-factory.js +113 -0
  5. package/dist/cli/cli-factory.js.map +1 -0
  6. package/dist/cli/commands/install.command.d.ts +23 -0
  7. package/dist/cli/commands/install.command.d.ts.map +1 -0
  8. package/dist/cli/commands/install.command.js +189 -0
  9. package/dist/cli/commands/install.command.js.map +1 -0
  10. package/dist/cli/commands/list.command.d.ts +15 -0
  11. package/dist/cli/commands/list.command.d.ts.map +1 -0
  12. package/dist/cli/commands/list.command.js +90 -0
  13. package/dist/cli/commands/list.command.js.map +1 -0
  14. package/dist/cli/commands/status.command.d.ts +19 -0
  15. package/dist/cli/commands/status.command.d.ts.map +1 -0
  16. package/dist/cli/commands/status.command.js +104 -0
  17. package/dist/cli/commands/status.command.js.map +1 -0
  18. package/dist/cli/commands/uninstall.command.d.ts +23 -0
  19. package/dist/cli/commands/uninstall.command.d.ts.map +1 -0
  20. package/dist/cli/commands/uninstall.command.js +176 -0
  21. package/dist/cli/commands/uninstall.command.js.map +1 -0
  22. package/dist/cli/installers/base-installer.d.ts +20 -0
  23. package/dist/cli/installers/base-installer.d.ts.map +1 -0
  24. package/dist/cli/installers/base-installer.js +3 -0
  25. package/dist/cli/installers/base-installer.js.map +1 -0
  26. package/dist/cli/installers/chatgpt-installer.d.ts +18 -0
  27. package/dist/cli/installers/chatgpt-installer.d.ts.map +1 -0
  28. package/dist/cli/installers/chatgpt-installer.js +45 -0
  29. package/dist/cli/installers/chatgpt-installer.js.map +1 -0
  30. package/dist/cli/installers/claude-code-installer.d.ts +23 -0
  31. package/dist/cli/installers/claude-code-installer.d.ts.map +1 -0
  32. package/dist/cli/installers/claude-code-installer.js +106 -0
  33. package/dist/cli/installers/claude-code-installer.js.map +1 -0
  34. package/dist/cli/installers/claude-desktop-installer.d.ts +18 -0
  35. package/dist/cli/installers/claude-desktop-installer.d.ts.map +1 -0
  36. package/dist/cli/installers/claude-desktop-installer.js +48 -0
  37. package/dist/cli/installers/claude-desktop-installer.js.map +1 -0
  38. package/dist/cli/installers/cursor-installer.d.ts +18 -0
  39. package/dist/cli/installers/cursor-installer.d.ts.map +1 -0
  40. package/dist/cli/installers/cursor-installer.js +45 -0
  41. package/dist/cli/installers/cursor-installer.js.map +1 -0
  42. package/dist/cli/installers/installer-factory.d.ts +30 -0
  43. package/dist/cli/installers/installer-factory.d.ts.map +1 -0
  44. package/dist/cli/installers/installer-factory.js +89 -0
  45. package/dist/cli/installers/installer-factory.js.map +1 -0
  46. package/dist/cli/utils/node-resolver.d.ts +53 -0
  47. package/dist/cli/utils/node-resolver.d.ts.map +1 -0
  48. package/dist/cli/utils/node-resolver.js +200 -0
  49. package/dist/cli/utils/node-resolver.js.map +1 -0
  50. package/dist/cli/utils/package-locator.d.ts +9 -0
  51. package/dist/cli/utils/package-locator.d.ts.map +1 -0
  52. package/dist/cli/utils/package-locator.js +81 -0
  53. package/dist/cli/utils/package-locator.js.map +1 -0
  54. package/dist/cli.d.ts +3 -0
  55. package/dist/cli.d.ts.map +1 -0
  56. package/dist/cli.js +27 -0
  57. package/dist/cli.js.map +1 -0
  58. package/dist/prompts/prompt-registry.js +6 -6
  59. package/dist/prompts/prompt-registry.js.map +1 -1
  60. package/dist/prompts/rules/rules.prompt.d.ts +32 -0
  61. package/dist/prompts/rules/rules.prompt.d.ts.map +1 -0
  62. package/dist/prompts/{memory/memory.prompt.js → rules/rules.prompt.js} +64 -58
  63. package/dist/prompts/rules/rules.prompt.js.map +1 -0
  64. package/dist/storage/platform-config-adapter.d.ts +42 -0
  65. package/dist/storage/platform-config-adapter.d.ts.map +1 -0
  66. package/dist/storage/platform-config-adapter.js +128 -0
  67. package/dist/storage/platform-config-adapter.js.map +1 -0
  68. package/dist/storage/platform-path-builder.d.ts +32 -0
  69. package/dist/storage/platform-path-builder.d.ts.map +1 -0
  70. package/dist/storage/platform-path-builder.js +93 -0
  71. package/dist/storage/platform-path-builder.js.map +1 -0
  72. package/dist/tools/persona/as.tool.d.ts +4 -4
  73. package/dist/tools/persona/as.tool.d.ts.map +1 -1
  74. package/dist/tools/persona/as.tool.js +150 -117
  75. package/dist/tools/persona/as.tool.js.map +1 -1
  76. package/dist/tools/{memory/memory.tool.d.ts → rules/rules.tool.d.ts} +5 -5
  77. package/dist/tools/rules/rules.tool.d.ts.map +1 -0
  78. package/dist/tools/rules/rules.tool.js +133 -0
  79. package/dist/tools/rules/rules.tool.js.map +1 -0
  80. package/dist/tools/tool-registry.js +4 -4
  81. package/dist/tools/tool-registry.js.map +1 -1
  82. package/package.json +12 -2
  83. package/dist/prompts/memory/memory.prompt.d.ts +0 -32
  84. package/dist/prompts/memory/memory.prompt.d.ts.map +0 -1
  85. package/dist/prompts/memory/memory.prompt.js.map +0 -1
  86. package/dist/tools/memory/memory.tool.d.ts.map +0 -1
  87. package/dist/tools/memory/memory.tool.js +0 -110
  88. package/dist/tools/memory/memory.tool.js.map +0 -1
@@ -0,0 +1,90 @@
1
+ import chalk from 'chalk';
2
+ export class ListCommand {
3
+ factory;
4
+ constructor(factory) {
5
+ this.factory = factory;
6
+ }
7
+ async execute(options = {}) {
8
+ console.log(chalk.cyan.bold('\n📋 Supported Platforms for tiny-brain MCP Server\n'));
9
+ const platforms = await this.getPlatformInfo(options);
10
+ this.displayPlatforms(platforms, options);
11
+ console.log();
12
+ console.log(chalk.gray('────────────────────────────────────────'));
13
+ console.log(chalk.gray(`💡 To install tiny-brain on a platform, run:`));
14
+ console.log(chalk.cyan(` tiny-brain install <platform>`));
15
+ console.log(chalk.gray(` or`));
16
+ console.log(chalk.cyan(` tiny-brain install`));
17
+ console.log(chalk.gray(` for interactive installation`));
18
+ }
19
+ async getPlatformInfo(options) {
20
+ const supportedPlatforms = this.factory.getSupportedPlatforms();
21
+ const detectedPlatforms = options.showDetected
22
+ ? await this.getDetectedPlatforms()
23
+ : [];
24
+ return supportedPlatforms.map(platform => {
25
+ const info = this.getPlatformDetails(platform);
26
+ return {
27
+ ...info,
28
+ detected: detectedPlatforms.includes(platform)
29
+ };
30
+ });
31
+ }
32
+ async getDetectedPlatforms() {
33
+ try {
34
+ const installers = await this.factory.getInstallersForInstalledPlatforms();
35
+ return installers.map(i => i.getPlatformName());
36
+ }
37
+ catch {
38
+ return [];
39
+ }
40
+ }
41
+ getPlatformDetails(platform) {
42
+ const platforms = {
43
+ 'claude-code': {
44
+ name: 'claude-code',
45
+ displayName: 'Claude Code',
46
+ emoji: '🤖',
47
+ description: 'Anthropic\'s AI coding assistant CLI tool'
48
+ },
49
+ 'claude-desktop': {
50
+ name: 'claude-desktop',
51
+ displayName: 'Claude Desktop',
52
+ emoji: '💻',
53
+ description: 'Desktop chat application for Claude AI'
54
+ },
55
+ 'cursor': {
56
+ name: 'cursor',
57
+ displayName: 'Cursor IDE',
58
+ emoji: '⚡',
59
+ description: 'AI-powered code editor built on VSCode'
60
+ },
61
+ 'chatgpt': {
62
+ name: 'chatgpt',
63
+ displayName: 'ChatGPT Desktop',
64
+ emoji: '🧠',
65
+ description: 'OpenAI\'s desktop chat application'
66
+ }
67
+ };
68
+ return platforms[platform] || {
69
+ name: platform,
70
+ displayName: platform,
71
+ emoji: '📦',
72
+ description: 'Unknown platform'
73
+ };
74
+ }
75
+ displayPlatforms(platforms, options) {
76
+ const maxNameLength = Math.max(...platforms.map(p => p.displayName.length));
77
+ for (const platform of platforms) {
78
+ const padding = ' '.repeat(maxNameLength - platform.displayName.length);
79
+ let line = `${platform.emoji} ${chalk.bold(platform.displayName)}${padding}`;
80
+ if (options.showDetected && platform.detected) {
81
+ line += ` ${chalk.green('✅ Detected')}`;
82
+ }
83
+ console.log(line);
84
+ console.log(chalk.gray(` ${platform.description}`));
85
+ console.log(chalk.gray(` Command: ${chalk.cyan(`tiny-brain install ${platform.name}`)}`));
86
+ console.log();
87
+ }
88
+ }
89
+ }
90
+ //# sourceMappingURL=list.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.command.js","sourceRoot":"","sources":["../../../src/cli/commands/list.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { InstallerFactory } from '../installers/installer-factory.js';
2
+ import { ConfigScope } from '../../storage/platform-path-builder.js';
3
+ interface StatusOptions {
4
+ name?: string;
5
+ scope?: ConfigScope;
6
+ verbose?: boolean;
7
+ platform?: string;
8
+ }
9
+ export declare class StatusCommand {
10
+ private factory;
11
+ constructor(factory: InstallerFactory);
12
+ execute(options?: StatusOptions): Promise<void>;
13
+ private checkPlatforms;
14
+ private displayStatuses;
15
+ private getPlatformDisplayName;
16
+ private showSummary;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=status.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,gBAAgB;IAI/B,OAAO,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsB3C,cAAc;IAwC5B,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,WAAW;CA2BpB"}
@@ -0,0 +1,104 @@
1
+ import chalk from 'chalk';
2
+ export class StatusCommand {
3
+ factory;
4
+ constructor(factory) {
5
+ this.factory = factory;
6
+ }
7
+ async execute(options = {}) {
8
+ console.log(chalk.cyan.bold('\n📊 tiny-brain Installation Status\n'));
9
+ const serverName = options.name || 'tiny-brain';
10
+ // Get status for platforms
11
+ const statuses = await this.checkPlatforms(serverName, options);
12
+ if (statuses.length === 0) {
13
+ console.log(chalk.yellow('⚠️ No platforms found'));
14
+ return;
15
+ }
16
+ // Display status for each platform
17
+ this.displayStatuses(statuses, options);
18
+ // Show summary
19
+ if (!options.platform) {
20
+ this.showSummary(statuses);
21
+ }
22
+ }
23
+ async checkPlatforms(serverName, options) {
24
+ const statuses = [];
25
+ if (options.platform) {
26
+ // Check specific platform
27
+ try {
28
+ const installer = this.factory.getInstaller(options.platform);
29
+ const installed = await installer.verify(serverName, {
30
+ scope: options.scope || 'local'
31
+ });
32
+ statuses.push({
33
+ platform: options.platform,
34
+ installed,
35
+ configPath: installer.getConfigPath()
36
+ });
37
+ }
38
+ catch (error) {
39
+ console.error(chalk.red(`❌ Error checking platform ${options.platform}: ${error}`));
40
+ }
41
+ }
42
+ else {
43
+ // Check all platforms
44
+ const installers = this.factory.getAllInstallers();
45
+ for (const installer of installers) {
46
+ const platform = installer.getPlatformName();
47
+ const installed = await installer.verify(serverName, {
48
+ scope: options.scope || 'local'
49
+ });
50
+ statuses.push({
51
+ platform,
52
+ installed,
53
+ configPath: installer.getConfigPath()
54
+ });
55
+ }
56
+ }
57
+ return statuses;
58
+ }
59
+ displayStatuses(statuses, options) {
60
+ const maxPlatformLength = Math.max(...statuses.map(s => this.getPlatformDisplayName(s.platform).length));
61
+ for (const status of statuses) {
62
+ const platformName = this.getPlatformDisplayName(status.platform);
63
+ const padding = ' '.repeat(maxPlatformLength - platformName.length);
64
+ if (status.installed) {
65
+ console.log(`${platformName}${padding} ${chalk.green('✅ Installed')}`);
66
+ }
67
+ else {
68
+ console.log(`${platformName}${padding} ${chalk.gray('❌ Not installed')}`);
69
+ }
70
+ if (options.verbose) {
71
+ console.log(chalk.gray(` Config: ${status.configPath}`));
72
+ }
73
+ }
74
+ }
75
+ getPlatformDisplayName(platform) {
76
+ const displayNames = {
77
+ 'claude-code': '🤖 Claude Code',
78
+ 'claude-desktop': '💻 Claude Desktop',
79
+ 'cursor': '⚡ Cursor IDE',
80
+ 'chatgpt': '🧠 ChatGPT Desktop'
81
+ };
82
+ return displayNames[platform] || platform;
83
+ }
84
+ showSummary(statuses) {
85
+ const installed = statuses.filter(s => s.installed).length;
86
+ const notInstalled = statuses.filter(s => !s.installed).length;
87
+ console.log();
88
+ console.log(chalk.cyan('──────────────────────────────'));
89
+ if (installed > 0 && notInstalled > 0) {
90
+ console.log(chalk.cyan(`📈 Summary: ${chalk.green(`${installed} installed`)}, ${chalk.gray(`${notInstalled} not installed`)}`));
91
+ }
92
+ else if (installed > 0) {
93
+ console.log(chalk.green(`✅ tiny-brain is installed on ${installed} platform${installed > 1 ? 's' : ''}`));
94
+ }
95
+ else {
96
+ console.log(chalk.yellow(`⚠️ tiny-brain is not installed on any platforms`));
97
+ }
98
+ console.log();
99
+ if (notInstalled > 0) {
100
+ console.log(chalk.gray(`💡 Run ${chalk.cyan('tiny-brain install')} to set up on more platforms`));
101
+ }
102
+ }
103
+ }
104
+ //# sourceMappingURL=status.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.command.js","sourceRoot":"","sources":["../../../src/cli/commands/status.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { InstallerFactory } from '../installers/installer-factory.js';
2
+ import { ConfigScope } from '../../storage/platform-path-builder.js';
3
+ interface UninstallOptions {
4
+ platform?: string;
5
+ all?: boolean;
6
+ name?: string;
7
+ scope?: ConfigScope;
8
+ force?: boolean;
9
+ }
10
+ export declare class UninstallCommand {
11
+ private factory;
12
+ constructor(factory: InstallerFactory);
13
+ execute(options?: UninstallOptions): Promise<void>;
14
+ private determinePlatforms;
15
+ private getInstalledPlatforms;
16
+ private promptForPlatforms;
17
+ private confirmUninstall;
18
+ private getPlatformDisplayName;
19
+ private uninstallPlatforms;
20
+ private showSummary;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=uninstall.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,gBAAgB;IAI/B,OAAO,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;YA8B9C,kBAAkB;YAuBlB,qBAAqB;YASrB,kBAAkB;YAqClB,gBAAgB;IAe9B,OAAO,CAAC,sBAAsB;YAWhB,kBAAkB;IAkDhC,OAAO,CAAC,WAAW;CA6BpB"}
@@ -0,0 +1,176 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ export class UninstallCommand {
4
+ factory;
5
+ constructor(factory) {
6
+ this.factory = factory;
7
+ }
8
+ async execute(options = {}) {
9
+ console.log(chalk.cyan.bold('\n🗑️ tiny-brain MCP Server Uninstaller\n'));
10
+ const serverName = options.name || 'tiny-brain';
11
+ // Determine which platforms to uninstall from
12
+ const platforms = await this.determinePlatforms(options);
13
+ if (platforms.length === 0) {
14
+ console.log(chalk.yellow('⚠️ No platforms selected for uninstallation'));
15
+ return;
16
+ }
17
+ // Confirm uninstallation unless --force flag is set
18
+ if (!options.force) {
19
+ const confirmed = await this.confirmUninstall(platforms, serverName);
20
+ if (!confirmed) {
21
+ console.log(chalk.yellow('\n⚠️ Uninstallation cancelled'));
22
+ return;
23
+ }
24
+ }
25
+ // Uninstall from each selected platform
26
+ console.log(chalk.cyan(`\n🗑️ Uninstalling from ${platforms.length} platform(s)...\n`));
27
+ const results = await this.uninstallPlatforms(platforms, serverName, options);
28
+ // Show summary
29
+ this.showSummary(results);
30
+ }
31
+ async determinePlatforms(options) {
32
+ // If specific platform provided
33
+ if (options.platform) {
34
+ return [options.platform];
35
+ }
36
+ // Get installed platforms
37
+ const installedPlatforms = await this.getInstalledPlatforms();
38
+ if (installedPlatforms.length === 0) {
39
+ console.log(chalk.yellow('⚠️ tiny-brain is not installed on any platforms'));
40
+ return [];
41
+ }
42
+ // If --all flag is set
43
+ if (options.all) {
44
+ return installedPlatforms;
45
+ }
46
+ // Interactive mode
47
+ return await this.promptForPlatforms(installedPlatforms);
48
+ }
49
+ async getInstalledPlatforms() {
50
+ try {
51
+ const installers = await this.factory.getInstallersForInstalledPlatforms();
52
+ return installers.map(i => i.getPlatformName());
53
+ }
54
+ catch {
55
+ return [];
56
+ }
57
+ }
58
+ async promptForPlatforms(installedPlatforms) {
59
+ const choices = [
60
+ {
61
+ name: chalk.bold('🗑️ Uninstall All'),
62
+ value: 'all',
63
+ checked: false
64
+ },
65
+ ...installedPlatforms.map(platform => ({
66
+ name: this.getPlatformDisplayName(platform),
67
+ value: platform,
68
+ checked: false
69
+ }))
70
+ ];
71
+ const { platforms } = await inquirer.prompt([
72
+ {
73
+ type: 'checkbox',
74
+ name: 'platforms',
75
+ message: '🎯 Select platforms to uninstall tiny-brain from:',
76
+ choices,
77
+ validate: (answer) => {
78
+ if (answer.length === 0) {
79
+ return 'You must select at least one platform';
80
+ }
81
+ return true;
82
+ }
83
+ }
84
+ ]);
85
+ // Handle "Uninstall All" selection
86
+ if (platforms.includes('all')) {
87
+ return installedPlatforms;
88
+ }
89
+ return platforms;
90
+ }
91
+ async confirmUninstall(platforms, serverName) {
92
+ const platformList = platforms.map(p => ` • ${this.getPlatformDisplayName(p)}`).join('\n');
93
+ const { confirm } = await inquirer.prompt([
94
+ {
95
+ type: 'confirm',
96
+ name: 'confirm',
97
+ message: `Are you sure you want to uninstall "${serverName}" from:\n${platformList}\n`,
98
+ default: false
99
+ }
100
+ ]);
101
+ return confirm;
102
+ }
103
+ getPlatformDisplayName(platform) {
104
+ const displayNames = {
105
+ 'claude-code': '🤖 Claude Code',
106
+ 'claude-desktop': '💻 Claude Desktop',
107
+ 'cursor': '⚡ Cursor IDE',
108
+ 'chatgpt': '🧠 ChatGPT Desktop'
109
+ };
110
+ return displayNames[platform] || platform;
111
+ }
112
+ async uninstallPlatforms(platforms, serverName, options) {
113
+ const results = new Map();
114
+ for (const platform of platforms) {
115
+ console.log(chalk.cyan.bold(`\n🗑️ Uninstalling Tiny Brain from ${platform}...`));
116
+ try {
117
+ const installer = this.factory.getInstaller(platform);
118
+ console.log(chalk.gray(`🔍 Locating configuration...`));
119
+ const configPath = installer.getConfigPath();
120
+ console.log(chalk.gray(` 📁 Config path: ${configPath}`));
121
+ console.log(chalk.gray(`🗑️ Removing tiny-brain configuration...`));
122
+ await installer.uninstall(serverName, {
123
+ scope: options.scope || 'local'
124
+ });
125
+ // Verify uninstallation
126
+ console.log(chalk.gray(`🔍 Verifying removal...`));
127
+ const stillInstalled = await installer.verify(serverName, { scope: options.scope || 'local' });
128
+ if (!stillInstalled) {
129
+ console.log(chalk.green.bold(`✅ Successfully uninstalled tiny-brain from ${this.getPlatformDisplayName(platform)}`));
130
+ results.set(platform, { success: true });
131
+ }
132
+ else {
133
+ console.log(chalk.yellow(`⚠️ Uninstalled but verification shows it still exists in ${this.getPlatformDisplayName(platform)}`));
134
+ console.log(chalk.gray(` 💡 You may need to manually edit ${configPath}`));
135
+ results.set(platform, { success: false, error: 'Verification failed' });
136
+ }
137
+ }
138
+ catch (error) {
139
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
140
+ console.error(chalk.red(`❌ Uninstall failed for ${this.getPlatformDisplayName(platform)}: ${errorMessage}`));
141
+ results.set(platform, { success: false, error: errorMessage });
142
+ }
143
+ console.log(); // Empty line between platforms
144
+ }
145
+ return results;
146
+ }
147
+ showSummary(results) {
148
+ console.log(chalk.cyan.bold('📊 Uninstall Summary:\n'));
149
+ let successCount = 0;
150
+ let failureCount = 0;
151
+ for (const [platform, result] of results) {
152
+ if (result.success) {
153
+ console.log(chalk.green(` ✅ ${this.getPlatformDisplayName(platform)}`));
154
+ successCount++;
155
+ }
156
+ else {
157
+ console.log(chalk.red(` ❌ ${this.getPlatformDisplayName(platform)} - ${result.error}`));
158
+ failureCount++;
159
+ }
160
+ }
161
+ console.log();
162
+ if (failureCount === 0) {
163
+ console.log(chalk.green.bold(`🎉 All uninstallations completed successfully!`));
164
+ console.log(chalk.gray(`\n💡 tiny-brain has been removed from the selected platforms.`));
165
+ }
166
+ else if (successCount > 0) {
167
+ console.log(chalk.yellow(`⚠️ ${successCount} succeeded, ${failureCount} failed`));
168
+ console.log(chalk.gray(`\n💡 Check the errors above for failed platforms.`));
169
+ }
170
+ else {
171
+ console.log(chalk.red(`❌ All uninstallations failed`));
172
+ console.log(chalk.gray(`\n💡 Please check the errors above and try again.`));
173
+ }
174
+ }
175
+ }
176
+ //# sourceMappingURL=uninstall.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.command.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ConfigScope } from '../../storage/platform-path-builder.js';
2
+ export interface InstallOptions {
3
+ scope: ConfigScope;
4
+ name: string;
5
+ env?: Record<string, string>;
6
+ validateServer?: boolean;
7
+ }
8
+ export interface UninstallOptions {
9
+ scope: ConfigScope;
10
+ }
11
+ export declare abstract class BasePlatformInstaller {
12
+ abstract getPlatformName(): string;
13
+ abstract getConfigPath(): string;
14
+ abstract install(serverPath: string, options: InstallOptions): Promise<void>;
15
+ abstract uninstall(name: string, options: UninstallOptions): Promise<void>;
16
+ abstract verify(name: string, options: {
17
+ scope: ConfigScope;
18
+ }): Promise<boolean>;
19
+ }
20
+ //# sourceMappingURL=base-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-installer.d.ts","sourceRoot":"","sources":["../../../src/cli/installers/base-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,8BAAsB,qBAAqB;IACzC,QAAQ,CAAC,eAAe,IAAI,MAAM;IAClC,QAAQ,CAAC,aAAa,IAAI,MAAM;IAChC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5E,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1E,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CACjF"}
@@ -0,0 +1,3 @@
1
+ export class BasePlatformInstaller {
2
+ }
3
+ //# sourceMappingURL=base-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-installer.js","sourceRoot":"","sources":["../../../src/cli/installers/base-installer.ts"],"names":[],"mappings":"AAaA,MAAM,OAAgB,qBAAqB;CAM1C"}
@@ -0,0 +1,18 @@
1
+ import { BasePlatformInstaller, InstallOptions, UninstallOptions } from './base-installer.js';
2
+ import { PlatformConfigAdapter } from '../../storage/platform-config-adapter.js';
3
+ import { ConfigScope } from '../../storage/platform-path-builder.js';
4
+ import { NodeResolver } from '../utils/node-resolver.js';
5
+ export declare class ChatGPTInstaller extends BasePlatformInstaller {
6
+ private configAdapter;
7
+ private pathBuilder;
8
+ private nodeResolver;
9
+ constructor(configAdapter: PlatformConfigAdapter, nodeResolver?: NodeResolver);
10
+ getPlatformName(): string;
11
+ getConfigPath(): string;
12
+ install(serverPath: string, options: InstallOptions): Promise<void>;
13
+ uninstall(name: string, options: UninstallOptions): Promise<void>;
14
+ verify(name: string, options: {
15
+ scope: ConfigScope;
16
+ }): Promise<boolean>;
17
+ }
18
+ //# sourceMappingURL=chatgpt-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatgpt-installer.d.ts","sourceRoot":"","sources":["../../../src/cli/installers/chatgpt-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAuB,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAe;gBAEvB,aAAa,EAAE,qBAAqB,EAAE,YAAY,CAAC,EAAE,YAAY;IAO7E,eAAe,IAAI,MAAM;IAIzB,aAAa,IAAI,MAAM;IAIjB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAG9E"}
@@ -0,0 +1,45 @@
1
+ import { BasePlatformInstaller } from './base-installer.js';
2
+ import { PlatformPathBuilder } from '../../storage/platform-path-builder.js';
3
+ import { NodeResolver } from '../utils/node-resolver.js';
4
+ export class ChatGPTInstaller extends BasePlatformInstaller {
5
+ configAdapter;
6
+ pathBuilder;
7
+ nodeResolver;
8
+ constructor(configAdapter, nodeResolver) {
9
+ super();
10
+ this.configAdapter = configAdapter;
11
+ this.pathBuilder = new PlatformPathBuilder();
12
+ this.nodeResolver = nodeResolver || new NodeResolver();
13
+ }
14
+ getPlatformName() {
15
+ return 'chatgpt';
16
+ }
17
+ getConfigPath() {
18
+ return this.pathBuilder.getChatGPTConfig();
19
+ }
20
+ async install(serverPath, options) {
21
+ // Find the best Node runtime for this platform
22
+ const nodeRuntime = await this.nodeResolver.findNodeRuntime('chatgpt');
23
+ // Optionally validate the server can start
24
+ if (options.validateServer) {
25
+ const testResult = await this.nodeResolver.testServerStartup(nodeRuntime.command, serverPath);
26
+ if (!testResult.success) {
27
+ throw new Error(`Server validation failed: ${testResult.error}`);
28
+ }
29
+ }
30
+ // ChatGPT uses direct config modification
31
+ await this.configAdapter.backupPlatformConfig('chatgpt', options.scope);
32
+ await this.configAdapter.addMCPServer('chatgpt', options.name, {
33
+ command: nodeRuntime.command,
34
+ args: [serverPath],
35
+ env: options.env
36
+ }, options.scope);
37
+ }
38
+ async uninstall(name, options) {
39
+ await this.configAdapter.removeMCPServer('chatgpt', name, options.scope);
40
+ }
41
+ async verify(name, options) {
42
+ return await this.configAdapter.isMCPServerConfigured('chatgpt', name, options.scope);
43
+ }
44
+ }
45
+ //# sourceMappingURL=chatgpt-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatgpt-installer.js","sourceRoot":"","sources":["../../../src/cli/installers/chatgpt-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAoC,MAAM,qBAAqB,CAAC;AAE9F,OAAO,EAAE,mBAAmB,EAAe,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,OAAO,gBAAiB,SAAQ,qBAAqB;IACjD,aAAa,CAAwB;IACrC,WAAW,CAAsB;IACjC,YAAY,CAAe;IAEnC,YAAY,aAAoC,EAAE,YAA2B;QAC3E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,YAAY,EAAE,CAAC;IACzD,CAAC;IAED,eAAe;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,OAAuB;QACvD,+CAA+C;QAC/C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEvE,2CAA2C;QAC3C,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC9F,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAExE,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CACnC,SAAS,EACT,OAAO,CAAC,IAAI,EACZ;YACE,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,IAAI,EAAE,CAAC,UAAU,CAAC;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,EACD,OAAO,CAAC,KAAK,CACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAyB;QACrD,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAA+B;QACxD,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import { BasePlatformInstaller, InstallOptions, UninstallOptions } from './base-installer.js';
2
+ import { PlatformConfigAdapter } from '../../storage/platform-config-adapter.js';
3
+ import { ConfigScope } from '../../storage/platform-path-builder.js';
4
+ import { NodeResolver } from '../utils/node-resolver.js';
5
+ export declare class ClaudeCodeInstaller extends BasePlatformInstaller {
6
+ private configAdapter;
7
+ private pathBuilder;
8
+ private nodeResolver;
9
+ constructor(configAdapter: PlatformConfigAdapter, nodeResolver?: NodeResolver);
10
+ getPlatformName(): string;
11
+ getConfigPath(): string;
12
+ install(serverPath: string, options: InstallOptions): Promise<void>;
13
+ private installViaCli;
14
+ private installViaConfig;
15
+ uninstall(name: string, options: UninstallOptions): Promise<void>;
16
+ private uninstallViaCli;
17
+ private uninstallViaConfig;
18
+ verify(name: string, options: {
19
+ scope: ConfigScope;
20
+ }): Promise<boolean>;
21
+ isCliAvailable(): Promise<boolean>;
22
+ }
23
+ //# sourceMappingURL=claude-code-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-installer.d.ts","sourceRoot":"","sources":["../../../src/cli/installers/claude-code-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAuB,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,qBAAa,mBAAoB,SAAQ,qBAAqB;IAC5D,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAe;gBAEvB,aAAa,EAAE,qBAAqB,EAAE,YAAY,CAAC,EAAE,YAAY;IAO7E,eAAe,IAAI,MAAM;IAIzB,aAAa,IAAI,MAAM;IAIjB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAqB3D,aAAa;YAwBb,gBAAgB;IAiBxB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAUzD,eAAe;YAWf,kBAAkB;IAI1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAQzC"}