@1mcp/agent 0.20.3 → 0.22.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 (165) hide show
  1. package/README.md +2 -1
  2. package/build/commands/app/backups.d.ts +2 -1
  3. package/build/commands/app/backups.d.ts.map +1 -1
  4. package/build/commands/app/backups.js.map +1 -1
  5. package/build/commands/app/consolidate.d.ts +2 -1
  6. package/build/commands/app/consolidate.d.ts.map +1 -1
  7. package/build/commands/app/consolidate.js.map +1 -1
  8. package/build/commands/app/discover.d.ts +2 -1
  9. package/build/commands/app/discover.d.ts.map +1 -1
  10. package/build/commands/app/discover.js.map +1 -1
  11. package/build/commands/app/index.d.ts.map +1 -1
  12. package/build/commands/app/index.js +4 -2
  13. package/build/commands/app/index.js.map +1 -1
  14. package/build/commands/app/list.d.ts +2 -1
  15. package/build/commands/app/list.d.ts.map +1 -1
  16. package/build/commands/app/list.js.map +1 -1
  17. package/build/commands/app/restore.d.ts +2 -1
  18. package/build/commands/app/restore.d.ts.map +1 -1
  19. package/build/commands/app/restore.js.map +1 -1
  20. package/build/commands/app/status.d.ts +2 -1
  21. package/build/commands/app/status.d.ts.map +1 -1
  22. package/build/commands/app/status.js.map +1 -1
  23. package/build/commands/mcp/add.d.ts +2 -2
  24. package/build/commands/mcp/add.d.ts.map +1 -1
  25. package/build/commands/mcp/enable.d.ts +2 -2
  26. package/build/commands/mcp/enable.d.ts.map +1 -1
  27. package/build/commands/mcp/enable.js.map +1 -1
  28. package/build/commands/mcp/index.d.ts.map +1 -1
  29. package/build/commands/mcp/index.js +42 -35
  30. package/build/commands/mcp/index.js.map +1 -1
  31. package/build/commands/mcp/list.d.ts +2 -2
  32. package/build/commands/mcp/list.d.ts.map +1 -1
  33. package/build/commands/mcp/list.js.map +1 -1
  34. package/build/commands/mcp/remove.d.ts +2 -2
  35. package/build/commands/mcp/remove.d.ts.map +1 -1
  36. package/build/commands/mcp/status.d.ts +2 -2
  37. package/build/commands/mcp/status.d.ts.map +1 -1
  38. package/build/commands/mcp/status.js.map +1 -1
  39. package/build/commands/mcp/tokens.d.ts +13 -0
  40. package/build/commands/mcp/tokens.d.ts.map +1 -0
  41. package/build/commands/mcp/tokens.js +273 -0
  42. package/build/commands/mcp/tokens.js.map +1 -0
  43. package/build/commands/mcp/update.d.ts +2 -2
  44. package/build/commands/mcp/update.d.ts.map +1 -1
  45. package/build/commands/mcp/utils/connectionHelper.d.ts +29 -0
  46. package/build/commands/mcp/utils/connectionHelper.d.ts.map +1 -0
  47. package/build/commands/mcp/utils/connectionHelper.js +162 -0
  48. package/build/commands/mcp/utils/connectionHelper.js.map +1 -0
  49. package/build/commands/preset/create.d.ts +16 -0
  50. package/build/commands/preset/create.d.ts.map +1 -0
  51. package/build/commands/preset/create.js +96 -0
  52. package/build/commands/preset/create.js.map +1 -0
  53. package/build/commands/preset/delete.d.ts +14 -0
  54. package/build/commands/preset/delete.d.ts.map +1 -0
  55. package/build/commands/preset/delete.js +36 -0
  56. package/build/commands/preset/delete.js.map +1 -0
  57. package/build/commands/preset/edit.d.ts +15 -0
  58. package/build/commands/preset/edit.d.ts.map +1 -0
  59. package/build/commands/preset/edit.js +54 -0
  60. package/build/commands/preset/edit.js.map +1 -0
  61. package/build/commands/preset/index.d.ts +6 -0
  62. package/build/commands/preset/index.d.ts.map +1 -0
  63. package/build/commands/preset/index.js +192 -0
  64. package/build/commands/preset/index.js.map +1 -0
  65. package/build/commands/preset/interactive.d.ts +13 -0
  66. package/build/commands/preset/interactive.d.ts.map +1 -0
  67. package/build/commands/preset/interactive.js +131 -0
  68. package/build/commands/preset/interactive.js.map +1 -0
  69. package/build/commands/preset/list.d.ts +12 -0
  70. package/build/commands/preset/list.d.ts.map +1 -0
  71. package/build/commands/preset/list.js +122 -0
  72. package/build/commands/preset/list.js.map +1 -0
  73. package/build/commands/preset/show.d.ts +13 -0
  74. package/build/commands/preset/show.d.ts.map +1 -0
  75. package/build/commands/preset/show.js +104 -0
  76. package/build/commands/preset/show.js.map +1 -0
  77. package/build/commands/preset/test.d.ts +14 -0
  78. package/build/commands/preset/test.d.ts.map +1 -0
  79. package/build/commands/preset/test.js +36 -0
  80. package/build/commands/preset/test.js.map +1 -0
  81. package/build/commands/preset/url.d.ts +14 -0
  82. package/build/commands/preset/url.d.ts.map +1 -0
  83. package/build/commands/preset/url.js +37 -0
  84. package/build/commands/preset/url.js.map +1 -0
  85. package/build/constants.d.ts +6 -1
  86. package/build/constants.d.ts.map +1 -1
  87. package/build/constants.js +13 -5
  88. package/build/constants.js.map +1 -1
  89. package/build/core/server/agentConfig.d.ts +6 -0
  90. package/build/core/server/agentConfig.d.ts.map +1 -1
  91. package/build/core/server/agentConfig.js +9 -1
  92. package/build/core/server/agentConfig.js.map +1 -1
  93. package/build/core/server/serverManager.d.ts.map +1 -1
  94. package/build/core/server/serverManager.js +38 -0
  95. package/build/core/server/serverManager.js.map +1 -1
  96. package/build/core/types/server.d.ts +4 -1
  97. package/build/core/types/server.d.ts.map +1 -1
  98. package/build/core/types/server.js.map +1 -1
  99. package/build/globalOptions.d.ts +46 -0
  100. package/build/globalOptions.d.ts.map +1 -0
  101. package/build/globalOptions.js +37 -0
  102. package/build/globalOptions.js.map +1 -0
  103. package/build/handlers/requestHandlers.d.ts.map +1 -1
  104. package/build/handlers/requestHandlers.js +23 -1
  105. package/build/handlers/requestHandlers.js.map +1 -1
  106. package/build/index.js +92 -47
  107. package/build/index.js.map +1 -1
  108. package/build/server.d.ts.map +1 -1
  109. package/build/server.js +26 -0
  110. package/build/server.js.map +1 -1
  111. package/build/services/tokenEstimationService.d.ts +95 -0
  112. package/build/services/tokenEstimationService.d.ts.map +1 -0
  113. package/build/services/tokenEstimationService.js +233 -0
  114. package/build/services/tokenEstimationService.js.map +1 -0
  115. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +10 -1
  116. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -1
  117. package/build/transport/http/middlewares/scopeAuthMiddleware.js +12 -0
  118. package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -1
  119. package/build/transport/http/middlewares/tagsExtractor.d.ts +7 -3
  120. package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -1
  121. package/build/transport/http/middlewares/tagsExtractor.js +128 -6
  122. package/build/transport/http/middlewares/tagsExtractor.js.map +1 -1
  123. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  124. package/build/transport/http/routes/sseRoutes.js +5 -1
  125. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  126. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  127. package/build/transport/http/routes/streamableHttpRoutes.js +5 -1
  128. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  129. package/build/utils/interactiveSelector.d.ts +88 -0
  130. package/build/utils/interactiveSelector.d.ts.map +1 -0
  131. package/build/utils/interactiveSelector.js +616 -0
  132. package/build/utils/interactiveSelector.js.map +1 -0
  133. package/build/utils/presetErrorHandler.d.ts +62 -0
  134. package/build/utils/presetErrorHandler.d.ts.map +1 -0
  135. package/build/utils/presetErrorHandler.js +159 -0
  136. package/build/utils/presetErrorHandler.js.map +1 -0
  137. package/build/utils/presetManager.d.ts +114 -0
  138. package/build/utils/presetManager.d.ts.map +1 -0
  139. package/build/utils/presetManager.js +565 -0
  140. package/build/utils/presetManager.js.map +1 -0
  141. package/build/utils/presetNotificationService.d.ts +62 -0
  142. package/build/utils/presetNotificationService.d.ts.map +1 -0
  143. package/build/utils/presetNotificationService.js +214 -0
  144. package/build/utils/presetNotificationService.js.map +1 -0
  145. package/build/utils/presetServerChangeDetector.d.ts +50 -0
  146. package/build/utils/presetServerChangeDetector.d.ts.map +1 -0
  147. package/build/utils/presetServerChangeDetector.js +100 -0
  148. package/build/utils/presetServerChangeDetector.js.map +1 -0
  149. package/build/utils/presetTypes.d.ts +52 -0
  150. package/build/utils/presetTypes.d.ts.map +1 -0
  151. package/build/utils/presetTypes.js +5 -0
  152. package/build/utils/presetTypes.js.map +1 -0
  153. package/build/utils/tagQueryEvaluator.d.ts +68 -0
  154. package/build/utils/tagQueryEvaluator.d.ts.map +1 -0
  155. package/build/utils/tagQueryEvaluator.js +292 -0
  156. package/build/utils/tagQueryEvaluator.js.map +1 -0
  157. package/build/utils/tagQueryParser.d.ts +11 -0
  158. package/build/utils/tagQueryParser.d.ts.map +1 -1
  159. package/build/utils/tagQueryParser.js +46 -0
  160. package/build/utils/tagQueryParser.js.map +1 -1
  161. package/build/utils/urlGenerator.d.ts +68 -0
  162. package/build/utils/urlGenerator.d.ts.map +1 -0
  163. package/build/utils/urlGenerator.js +208 -0
  164. package/build/utils/urlGenerator.js.map +1 -0
  165. package/package.json +8 -2
@@ -0,0 +1,192 @@
1
+ import { globalOptions } from '../../globalOptions.js';
2
+ /**
3
+ * Setup preset command configuration for yargs
4
+ */
5
+ export function setupPresetCommands(yargs) {
6
+ // Merge global options with existing config-dir structure
7
+ const mergedOptions = {
8
+ ...(globalOptions || {}),
9
+ // config-dir is already included in globalOptions, so no need to duplicate
10
+ };
11
+ return yargs.command('preset', 'Manage server presets for dynamic filtering', (yargs) => {
12
+ return yargs
13
+ .options(mergedOptions)
14
+ .command({
15
+ command: 'edit <name>',
16
+ describe: 'Edit existing preset interactively',
17
+ builder: (yargs) => {
18
+ return yargs
19
+ .options(mergedOptions)
20
+ .positional('name', {
21
+ describe: 'Name of the preset to edit',
22
+ type: 'string',
23
+ demandOption: true,
24
+ })
25
+ .option('description', {
26
+ describe: 'Update description for the preset',
27
+ type: 'string',
28
+ });
29
+ },
30
+ handler: async (argv) => {
31
+ const { editCommand } = await import('./edit.js');
32
+ await editCommand(argv);
33
+ },
34
+ })
35
+ .command({
36
+ command: 'create <name>',
37
+ describe: 'Create preset with filter expression',
38
+ builder: (yargs) => {
39
+ return yargs
40
+ .options(mergedOptions)
41
+ .positional('name', {
42
+ describe: 'Name for the new preset',
43
+ type: 'string',
44
+ demandOption: true,
45
+ })
46
+ .option('filter', {
47
+ describe: 'Filter expression for server selection',
48
+ type: 'string',
49
+ alias: 'f',
50
+ demandOption: true,
51
+ })
52
+ .option('description', {
53
+ describe: 'Description for the preset',
54
+ type: 'string',
55
+ });
56
+ },
57
+ handler: async (argv) => {
58
+ const { createCommand } = await import('./create.js');
59
+ await createCommand(argv);
60
+ },
61
+ })
62
+ .command({
63
+ command: 'show <name>',
64
+ describe: 'Show detailed information about a preset',
65
+ builder: (yargs) => {
66
+ return yargs.options(mergedOptions).positional('name', {
67
+ describe: 'Name of the preset to show details for',
68
+ type: 'string',
69
+ demandOption: true,
70
+ });
71
+ },
72
+ handler: async (argv) => {
73
+ const { showCommand } = await import('./show.js');
74
+ await showCommand(argv);
75
+ },
76
+ })
77
+ .command({
78
+ command: 'list',
79
+ describe: 'List all available presets',
80
+ builder: (yargs) => yargs.options(mergedOptions),
81
+ handler: async (argv) => {
82
+ const { listCommand } = await import('./list.js');
83
+ await listCommand(argv);
84
+ },
85
+ })
86
+ .command({
87
+ command: 'url <name>',
88
+ describe: 'Generate URL for existing preset',
89
+ builder: (yargs) => {
90
+ return yargs.options(mergedOptions).positional('name', {
91
+ describe: 'Name of the preset to generate URL for',
92
+ type: 'string',
93
+ demandOption: true,
94
+ });
95
+ },
96
+ handler: async (argv) => {
97
+ const { urlCommand } = await import('./url.js');
98
+ await urlCommand(argv);
99
+ },
100
+ })
101
+ .command({
102
+ command: 'delete <name>',
103
+ describe: 'Delete an existing preset',
104
+ builder: (yargs) => {
105
+ return yargs.options(mergedOptions).positional('name', {
106
+ describe: 'Name of the preset to delete',
107
+ type: 'string',
108
+ demandOption: true,
109
+ });
110
+ },
111
+ handler: async (argv) => {
112
+ const { deleteCommand } = await import('./delete.js');
113
+ await deleteCommand(argv);
114
+ },
115
+ })
116
+ .command({
117
+ command: 'test <name>',
118
+ describe: 'Test preset against current server configuration',
119
+ builder: (yargs) => {
120
+ return yargs.options(mergedOptions).positional('name', {
121
+ describe: 'Name of the preset to test',
122
+ type: 'string',
123
+ demandOption: true,
124
+ });
125
+ },
126
+ handler: async (argv) => {
127
+ const { testCommand } = await import('./test.js');
128
+ await testCommand(argv);
129
+ },
130
+ })
131
+ .demandCommand(0, 'Use --help for available commands')
132
+ .example([
133
+ ['$0 preset', 'Smart interactive mode - create new or edit existing'],
134
+ ['$0 preset edit development', 'Edit existing "development" preset'],
135
+ ['$0 preset create dev --filter "web,database"', 'Create preset with simple filter'],
136
+ ['$0 preset create prod --filter "web AND database"', 'Create preset with AND logic'],
137
+ ['$0 preset create secure --filter "(web OR api) AND NOT experimental"', 'Complex filter'],
138
+ ['$0 preset list', 'List all available presets'],
139
+ ['$0 preset show development', 'Show full details of "development" preset'],
140
+ ['$0 preset url development', 'Generate URL for existing preset'],
141
+ ['$0 preset delete staging', 'Delete "staging" preset'],
142
+ ['$0 preset test development', 'Test "development" preset'],
143
+ ]).epilogue(`
144
+ PRESET MANAGEMENT SYSTEM:
145
+
146
+ The preset command provides both interactive (TUI) and command-line approaches to manage
147
+ server filtering presets. Presets generate URLs like http://localhost:3050/mcp?preset=development
148
+ that automatically update when you modify the preset configuration.
149
+
150
+ WORKFLOW EXAMPLES:
151
+
152
+ 1. Smart interactive approach:
153
+ 1mcp preset
154
+ → Auto-detects existing presets → Offers to edit or create new
155
+
156
+ 2. Direct editing:
157
+ 1mcp preset edit dev
158
+ → Interactive editing of existing 'dev' preset
159
+
160
+ 3. Command-line creation:
161
+ 1mcp preset create dev --filter "web,database,api"
162
+ → Quick preset creation with comma-separated tags (OR logic)
163
+
164
+ 4. Complex expressions:
165
+ 1mcp preset create prod --filter "web AND database AND monitoring"
166
+ → AND logic for strict requirements
167
+
168
+ 1mcp preset create flexible --filter "(web OR api) AND database"
169
+ → Mixed boolean expressions
170
+
171
+ 5. Management:
172
+ 1mcp preset list # List all presets
173
+ 1mcp preset url dev # Get client URL
174
+ 1mcp preset test dev # Test against servers
175
+ 1mcp preset delete old # Remove unused preset
176
+
177
+ FILTER EXPRESSIONS:
178
+ - Simple (OR logic): "web,api,database"
179
+ - AND logic: "web AND database"
180
+ - Complex: "(web OR api) AND database AND NOT experimental"
181
+
182
+ DYNAMIC UPDATES:
183
+ When you modify a preset, all clients using that preset's URL automatically
184
+ receive updated server configurations without needing to change their URLs.
185
+ `);
186
+ }, async (argv) => {
187
+ // Smart interactive mode when no subcommand is provided
188
+ const { interactiveCommand } = await import('./interactive.js');
189
+ await interactiveCommand(argv);
190
+ });
191
+ }
192
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/preset/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { GlobalOptions } from '../../globalOptions.js';
2
+ /**
3
+ * Command arguments for the interactive command
4
+ */
5
+ interface InteractiveArguments extends GlobalOptions {
6
+ _: string[];
7
+ }
8
+ /**
9
+ * Smart interactive preset command - auto-detects existing presets and offers options
10
+ */
11
+ export declare function interactiveCommand(argv: InteractiveArguments): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../../src/commands/preset/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD;;GAEG;AACH,UAAU,oBAAqB,SAAQ,aAAa;IAClD,CAAC,EAAE,MAAM,EAAE,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFlF"}
@@ -0,0 +1,131 @@
1
+ // Interactive command functionality for smart preset mode
2
+ import { PresetManager } from '../../utils/presetManager.js';
3
+ import { InteractiveSelector } from '../../utils/interactiveSelector.js';
4
+ import { UrlGenerator } from '../../utils/urlGenerator.js';
5
+ import logger from '../../logger/logger.js';
6
+ /**
7
+ * Smart interactive preset command - auto-detects existing presets and offers options
8
+ */
9
+ export async function interactiveCommand(argv) {
10
+ try {
11
+ // Initialize preset manager
12
+ const presetManager = PresetManager.getInstance(argv['config-dir']);
13
+ await presetManager.initialize();
14
+ const selector = new InteractiveSelector();
15
+ const urlGenerator = new UrlGenerator();
16
+ // Show current preset configuration path
17
+ console.log(`📁 Config directory: ${presetManager.getConfigPath()}\n`);
18
+ // Check if we should offer to load existing presets
19
+ const availablePresets = presetManager.getPresetList();
20
+ let existingConfig;
21
+ if (availablePresets.length > 0) {
22
+ const selectedAction = await offerPresetSelection(availablePresets, selector);
23
+ if (selectedAction === 'cancel') {
24
+ console.log('Operation cancelled.');
25
+ return;
26
+ }
27
+ else if (selectedAction === 'new') {
28
+ // Continue with new preset creation
29
+ }
30
+ else {
31
+ // Load the selected preset for editing
32
+ const preset = presetManager.getPreset(selectedAction);
33
+ if (!preset) {
34
+ selector.showError(`Failed to load preset '${selectedAction}'`);
35
+ return;
36
+ }
37
+ console.log(`📝 Editing preset: ${selectedAction}`);
38
+ if (preset.description) {
39
+ console.log(` Description: ${preset.description}`);
40
+ }
41
+ existingConfig = preset;
42
+ }
43
+ }
44
+ // Interactive server selection
45
+ const result = await selector.selectServers(existingConfig, presetManager.getConfigPath());
46
+ if (result.cancelled) {
47
+ console.log('Operation cancelled.');
48
+ return;
49
+ }
50
+ // Handle saving
51
+ if (existingConfig) {
52
+ // Save back to existing preset
53
+ await presetManager.savePreset(existingConfig.name, {
54
+ description: existingConfig.description,
55
+ strategy: result.strategy,
56
+ tagQuery: result.tagQuery,
57
+ });
58
+ const url = urlGenerator.generatePresetUrl(existingConfig.name);
59
+ selector.showSaveSuccess(existingConfig.name, url);
60
+ }
61
+ else {
62
+ // New preset - ask for save details
63
+ const saveResult = await selector.confirmSave();
64
+ if (saveResult.save) {
65
+ await presetManager.savePreset(saveResult.name, {
66
+ description: saveResult.description,
67
+ strategy: result.strategy,
68
+ tagQuery: result.tagQuery,
69
+ });
70
+ const url = urlGenerator.generatePresetUrl(saveResult.name);
71
+ selector.showSaveSuccess(saveResult.name, url);
72
+ }
73
+ else {
74
+ // Just show preview without saving
75
+ console.log('\n📋 Selection Summary:');
76
+ console.log(` Strategy: ${result.strategy}`);
77
+ console.log(` Query: ${JSON.stringify(result.tagQuery)}`);
78
+ console.log('\nTo save this selection, run the command with a specific name.');
79
+ }
80
+ }
81
+ }
82
+ catch (error) {
83
+ logger.error('Preset interactive command failed', { error });
84
+ console.error(`❌ Command failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
85
+ process.exit(1);
86
+ }
87
+ }
88
+ /**
89
+ * Offer preset selection when existing presets are found
90
+ */
91
+ async function offerPresetSelection(availablePresets, selector) {
92
+ console.log('🎯 Found existing presets. What would you like to do?\n');
93
+ // Show available presets
94
+ for (let i = 0; i < availablePresets.length; i++) {
95
+ const preset = availablePresets[i];
96
+ const lastUsed = preset.lastUsed ? new Date(preset.lastUsed).toLocaleDateString() : 'never';
97
+ const strategyDesc = getStrategyDescription(preset.strategy);
98
+ console.log(` ${i + 1}. ${preset.name} (${strategyDesc}) - Last used: ${lastUsed}`);
99
+ if (preset.description) {
100
+ console.log(` ${preset.description}`);
101
+ }
102
+ }
103
+ console.log(` ${availablePresets.length + 1}. Create new preset`);
104
+ console.log(` ${availablePresets.length + 2}. Cancel\n`);
105
+ const choice = await selector.getChoice('Select an option:', 1, availablePresets.length + 2);
106
+ if (choice <= availablePresets.length) {
107
+ return availablePresets[choice - 1].name;
108
+ }
109
+ else if (choice === availablePresets.length + 1) {
110
+ return 'new';
111
+ }
112
+ else {
113
+ return 'cancel';
114
+ }
115
+ }
116
+ /**
117
+ * Get human-readable strategy description
118
+ */
119
+ function getStrategyDescription(strategy) {
120
+ switch (strategy) {
121
+ case 'or':
122
+ return 'OR logic';
123
+ case 'and':
124
+ return 'AND logic';
125
+ case 'advanced':
126
+ return 'Advanced';
127
+ default:
128
+ return strategy;
129
+ }
130
+ }
131
+ //# sourceMappingURL=interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/commands/preset/interactive.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAS5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA0B;IACjE,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACpE,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,wBAAwB,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAEvE,oDAAoD;QACpD,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;QACvD,IAAI,cAAc,CAAC;QAEnB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAC9E,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;iBAAM,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBACpC,oCAAoC;YACtC,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,QAAQ,CAAC,SAAS,CAAC,0BAA0B,cAAc,GAAG,CAAC,CAAC;oBAChE,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC;gBACpD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBACvD,CAAC;gBACD,cAAc,GAAG,MAAM,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;QAE3F,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,cAAc,EAAE,CAAC;YACnB,+BAA+B;YAC/B,MAAM,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE;gBAClD,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChE,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,oCAAoC;YACpC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YAChD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE;oBAC9C,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5D,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,mCAAmC;gBACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,gBAAuB,EAAE,QAA6B;IACxF,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IAEvE,yBAAyB;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5F,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE7D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,YAAY,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QACtF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,MAAM,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7F,IAAI,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;SAAM,IAAI,MAAM,KAAK,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,UAAU,CAAC;QACpB,KAAK,KAAK;YACR,OAAO,WAAW,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { GlobalOptions } from '@src/globalOptions.js';
2
+ /**
3
+ * Command arguments for the list command
4
+ */
5
+ interface ListArguments extends GlobalOptions {
6
+ }
7
+ /**
8
+ * List available presets
9
+ */
10
+ export declare function listCommand(argv?: ListArguments): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/preset/list.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,UAAU,aAAc,SAAQ,aAAa;CAAG;AAEhD;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrE"}
@@ -0,0 +1,122 @@
1
+ import { PresetManager } from '../../utils/presetManager.js';
2
+ import { InteractiveSelector } from '../../utils/interactiveSelector.js';
3
+ import logger from '../../logger/logger.js';
4
+ import boxen from 'boxen';
5
+ import chalk from 'chalk';
6
+ /**
7
+ * List available presets
8
+ */
9
+ export async function listCommand(argv) {
10
+ try {
11
+ const presetManager = PresetManager.getInstance(argv?.['config-dir']);
12
+ await presetManager.initialize();
13
+ const selector = new InteractiveSelector();
14
+ await listPresets(presetManager, selector);
15
+ }
16
+ catch (error) {
17
+ logger.error('Preset list command failed', { error });
18
+ console.error(`❌ Command failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
19
+ process.exit(1);
20
+ }
21
+ }
22
+ /**
23
+ * List available presets using TUI styling
24
+ */
25
+ async function listPresets(presetManager, _selector) {
26
+ const presets = presetManager.getPresetList();
27
+ if (presets.length === 0) {
28
+ console.log(boxen(chalk.red.bold('⚠️ No presets found'), {
29
+ padding: 1,
30
+ borderStyle: 'round',
31
+ borderColor: 'red',
32
+ title: 'No Presets Available',
33
+ titleAlignment: 'center',
34
+ }));
35
+ console.log(chalk.yellow('\nCreate your first preset with:'));
36
+ console.log(chalk.cyan(' 1mcp preset create <name> --filter "web,api,database"'));
37
+ console.log(chalk.cyan(' 1mcp preset select --save <name> --url'));
38
+ return;
39
+ }
40
+ // Header
41
+ const headerMessage = boxen(chalk.cyan.bold('📋 Available Presets\n\n') +
42
+ chalk.yellow(`Found ${presets.length} preset${presets.length === 1 ? '' : 's'} in your configuration`), {
43
+ padding: 1,
44
+ margin: 1,
45
+ borderStyle: 'double',
46
+ borderColor: 'cyan',
47
+ title: 'Preset Manager',
48
+ titleAlignment: 'center',
49
+ });
50
+ console.log(headerMessage);
51
+ // Create clean table layout
52
+ let tableContent = '';
53
+ // Table header
54
+ tableContent += chalk.cyan.bold(' Name Strategy Query Last Used\n');
55
+ tableContent += chalk.gray(' ──────────────── ───────── ────────────────────────────────── ─────────\n');
56
+ // Table rows
57
+ for (const preset of presets) {
58
+ const lastUsed = preset.lastUsed ? new Date(preset.lastUsed).toLocaleDateString() : 'never';
59
+ const strategyDesc = getStrategyDescription(preset.strategy);
60
+ const queryStr = JSON.stringify(preset.tagQuery) || '{}';
61
+ // Format fields with proper truncation
62
+ const name = preset.name.length > 16 ? preset.name.slice(0, 13) + '...' : preset.name;
63
+ const strategy = strategyDesc.length > 9 ? strategyDesc.slice(0, 9) : strategyDesc;
64
+ const query = queryStr.length > 33 ? queryStr.slice(0, 30) + '...' : queryStr;
65
+ const lastUsedStr = lastUsed.length > 9 ? lastUsed.slice(0, 9) : lastUsed;
66
+ tableContent +=
67
+ ` ${chalk.yellow(name.padEnd(16))} ` +
68
+ `${chalk.blue(strategy.padEnd(9))} ` +
69
+ `${chalk.green(query.padEnd(33))} ` +
70
+ `${chalk.gray(lastUsedStr)}\n`;
71
+ }
72
+ const tableBox = boxen(tableContent.trim(), {
73
+ padding: 1,
74
+ borderStyle: 'round',
75
+ borderColor: 'blue',
76
+ title: 'Preset Overview',
77
+ titleAlignment: 'center',
78
+ });
79
+ console.log(tableBox);
80
+ // Commands help section
81
+ const commandsContent = chalk.cyan.bold('Available Commands:\n\n') +
82
+ chalk.white('• ') +
83
+ chalk.green('1mcp preset show <name>') +
84
+ chalk.gray(' Show full preset details\n') +
85
+ chalk.white('• ') +
86
+ chalk.green('1mcp preset url <name>') +
87
+ chalk.gray(' Generate URL\n') +
88
+ chalk.white('• ') +
89
+ chalk.green('1mcp preset select --load <name>') +
90
+ chalk.gray(' Edit preset\n') +
91
+ chalk.white('• ') +
92
+ chalk.green('1mcp preset test <name>') +
93
+ chalk.gray(' Test preset\n') +
94
+ chalk.white('• ') +
95
+ chalk.green('1mcp preset delete <name>') +
96
+ chalk.gray(' Delete preset');
97
+ console.log('');
98
+ console.log(boxen(commandsContent, {
99
+ padding: 1,
100
+ borderStyle: 'single',
101
+ borderColor: 'gray',
102
+ title: 'Quick Reference',
103
+ titleAlignment: 'center',
104
+ }));
105
+ console.log('');
106
+ }
107
+ /**
108
+ * Get human-readable strategy description
109
+ */
110
+ function getStrategyDescription(strategy) {
111
+ switch (strategy) {
112
+ case 'or':
113
+ return 'OR logic';
114
+ case 'and':
115
+ return 'AND logic';
116
+ case 'advanced':
117
+ return 'Advanced';
118
+ default:
119
+ return strategy;
120
+ }
121
+ }
122
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/preset/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { GlobalOptions } from '../../globalOptions.js';
2
+ /**
3
+ * Command arguments for the show command
4
+ */
5
+ interface ShowArguments extends GlobalOptions {
6
+ name: string;
7
+ }
8
+ /**
9
+ * Show detailed information about a specific preset
10
+ */
11
+ export declare function showCommand(argv: ShowArguments): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/preset/show.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKvD;;GAEG;AACH,UAAU,aAAc,SAAQ,aAAa;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAapE"}
@@ -0,0 +1,104 @@
1
+ import { PresetManager } from '../../utils/presetManager.js';
2
+ import { InteractiveSelector } from '../../utils/interactiveSelector.js';
3
+ import { UrlGenerator } from '../../utils/urlGenerator.js';
4
+ import logger from '../../logger/logger.js';
5
+ import boxen from 'boxen';
6
+ import chalk from 'chalk';
7
+ /**
8
+ * Show detailed information about a specific preset
9
+ */
10
+ export async function showCommand(argv) {
11
+ try {
12
+ const presetManager = PresetManager.getInstance(argv['config-dir']);
13
+ await presetManager.initialize();
14
+ const selector = new InteractiveSelector();
15
+ const urlGenerator = new UrlGenerator();
16
+ await showPresetDetails(argv.name, presetManager, selector, urlGenerator);
17
+ }
18
+ catch (error) {
19
+ logger.error('Preset show command failed', { error });
20
+ console.error(`❌ Command failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
21
+ process.exit(1);
22
+ }
23
+ }
24
+ /**
25
+ * Display detailed preset information
26
+ */
27
+ async function showPresetDetails(name, presetManager, selector, urlGenerator) {
28
+ if (!presetManager.hasPreset(name)) {
29
+ selector.showError(`Preset '${name}' not found`);
30
+ return;
31
+ }
32
+ const preset = presetManager.getPreset(name);
33
+ if (!preset) {
34
+ selector.showError(`Failed to load preset '${name}'`);
35
+ return;
36
+ }
37
+ // Main preset information in a single comprehensive box
38
+ let mainContent = '';
39
+ // Basic info section
40
+ mainContent += chalk.cyan.bold(`📋 ${preset.name}\n`);
41
+ mainContent += chalk.blue(`Strategy: ${getStrategyDescription(preset.strategy)}\n`);
42
+ if (preset.description) {
43
+ mainContent += chalk.gray(`Description: ${preset.description}\n`);
44
+ }
45
+ mainContent += chalk.dim(`Created: ${new Date(preset.created).toLocaleDateString()}\n`);
46
+ mainContent += chalk.dim(`Last Used: ${preset.lastUsed ? new Date(preset.lastUsed).toLocaleDateString() : 'Never'}\n`);
47
+ // URL section
48
+ const urlResult = await urlGenerator.validateAndGeneratePresetUrl(name);
49
+ if (urlResult.valid) {
50
+ mainContent += '\n';
51
+ mainContent += chalk.yellow.bold('Client URL:\n');
52
+ mainContent += chalk.cyan(`${urlResult.url}\n`);
53
+ }
54
+ // Query section
55
+ mainContent += '\n';
56
+ mainContent += chalk.yellow.bold('Tag Query:\n');
57
+ const queryStr = JSON.stringify(preset.tagQuery, null, 2);
58
+ mainContent += chalk.green(queryStr);
59
+ // Test results section
60
+ try {
61
+ const testResult = await presetManager.testPreset(name);
62
+ const matchingServers = testResult.servers;
63
+ mainContent += '\n\n';
64
+ mainContent += chalk.yellow.bold(`Matching Servers (${matchingServers.length}):\n`);
65
+ if (matchingServers.length > 0) {
66
+ mainContent += chalk.green(matchingServers.map((server) => `• ${server}`).join(', '));
67
+ }
68
+ else {
69
+ mainContent += chalk.red('No servers match this preset');
70
+ }
71
+ mainContent += '\n\n';
72
+ mainContent += chalk.yellow.bold('Quick Actions:\n');
73
+ mainContent += chalk.white(`• Test: ${chalk.green(`1mcp preset test ${name}`)}\n`);
74
+ mainContent += chalk.white(`• Edit: ${chalk.green(`1mcp preset select --load ${name}`)}\n`);
75
+ mainContent += chalk.white(`• URL: ${chalk.green(`1mcp preset url ${name}`)}`);
76
+ }
77
+ catch (error) {
78
+ mainContent += '\n\n';
79
+ mainContent += chalk.red(`Test failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
80
+ }
81
+ console.log(boxen(mainContent, {
82
+ padding: 1,
83
+ borderStyle: 'round',
84
+ borderColor: 'blue',
85
+ title: 'Preset Details',
86
+ titleAlignment: 'center',
87
+ }));
88
+ }
89
+ /**
90
+ * Get human-readable strategy description
91
+ */
92
+ function getStrategyDescription(strategy) {
93
+ switch (strategy) {
94
+ case 'or':
95
+ return 'OR logic - Match ANY selected tags';
96
+ case 'and':
97
+ return 'AND logic - Match ALL selected tags';
98
+ case 'advanced':
99
+ return 'Advanced - Custom JSON query';
100
+ default:
101
+ return strategy;
102
+ }
103
+ }
104
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/preset/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { GlobalOptions } from '../../globalOptions.js';
2
+ /**
3
+ * Command arguments for test command
4
+ */
5
+ interface TestArguments extends GlobalOptions {
6
+ _: string[];
7
+ name: string;
8
+ }
9
+ /**
10
+ * Test preset against current server configuration
11
+ */
12
+ export declare function testCommand(argv: TestArguments): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=test.d.ts.map