@1mcp/agent 0.21.0 → 0.22.1

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 (196) hide show
  1. package/README.md +123 -148
  2. package/build/commands/app/backups.d.ts +13 -1
  3. package/build/commands/app/backups.d.ts.map +1 -1
  4. package/build/commands/app/backups.js +25 -0
  5. package/build/commands/app/backups.js.map +1 -1
  6. package/build/commands/app/consolidate.d.ts +21 -1
  7. package/build/commands/app/consolidate.d.ts.map +1 -1
  8. package/build/commands/app/consolidate.js +63 -0
  9. package/build/commands/app/consolidate.js.map +1 -1
  10. package/build/commands/app/discover.d.ts +11 -1
  11. package/build/commands/app/discover.d.ts.map +1 -1
  12. package/build/commands/app/discover.js +21 -0
  13. package/build/commands/app/discover.js.map +1 -1
  14. package/build/commands/app/index.d.ts.map +1 -1
  15. package/build/commands/app/index.js +15 -193
  16. package/build/commands/app/index.js.map +1 -1
  17. package/build/commands/app/list.d.ts +11 -1
  18. package/build/commands/app/list.d.ts.map +1 -1
  19. package/build/commands/app/list.js +21 -0
  20. package/build/commands/app/list.js.map +1 -1
  21. package/build/commands/app/restore.d.ts +21 -1
  22. package/build/commands/app/restore.d.ts.map +1 -1
  23. package/build/commands/app/restore.js +59 -0
  24. package/build/commands/app/restore.js.map +1 -1
  25. package/build/commands/app/status.d.ts +11 -1
  26. package/build/commands/app/status.d.ts.map +1 -1
  27. package/build/commands/app/status.js +21 -0
  28. package/build/commands/app/status.js.map +1 -1
  29. package/build/commands/mcp/add.d.ts +35 -2
  30. package/build/commands/mcp/add.d.ts.map +1 -1
  31. package/build/commands/mcp/add.js +86 -0
  32. package/build/commands/mcp/add.js.map +1 -1
  33. package/build/commands/mcp/enable.d.ts +15 -2
  34. package/build/commands/mcp/enable.d.ts.map +1 -1
  35. package/build/commands/mcp/enable.js +24 -0
  36. package/build/commands/mcp/enable.js.map +1 -1
  37. package/build/commands/mcp/index.d.ts.map +1 -1
  38. package/build/commands/mcp/index.js +18 -302
  39. package/build/commands/mcp/index.js.map +1 -1
  40. package/build/commands/mcp/list.d.ts +15 -2
  41. package/build/commands/mcp/list.d.ts.map +1 -1
  42. package/build/commands/mcp/list.js +35 -1
  43. package/build/commands/mcp/list.js.map +1 -1
  44. package/build/commands/mcp/remove.d.ts +11 -2
  45. package/build/commands/mcp/remove.d.ts.map +1 -1
  46. package/build/commands/mcp/remove.js +21 -0
  47. package/build/commands/mcp/remove.js.map +1 -1
  48. package/build/commands/mcp/status.d.ts +11 -2
  49. package/build/commands/mcp/status.d.ts.map +1 -1
  50. package/build/commands/mcp/status.js +23 -1
  51. package/build/commands/mcp/status.js.map +1 -1
  52. package/build/commands/mcp/tokens.d.ts +13 -3
  53. package/build/commands/mcp/tokens.d.ts.map +1 -1
  54. package/build/commands/mcp/tokens.js +31 -0
  55. package/build/commands/mcp/tokens.js.map +1 -1
  56. package/build/commands/mcp/update.d.ts +33 -2
  57. package/build/commands/mcp/update.d.ts.map +1 -1
  58. package/build/commands/mcp/update.js +72 -0
  59. package/build/commands/mcp/update.js.map +1 -1
  60. package/build/commands/preset/create.d.ts +26 -0
  61. package/build/commands/preset/create.d.ts.map +1 -0
  62. package/build/commands/preset/create.js +117 -0
  63. package/build/commands/preset/create.js.map +1 -0
  64. package/build/commands/preset/delete.d.ts +20 -0
  65. package/build/commands/preset/delete.d.ts.map +1 -0
  66. package/build/commands/preset/delete.js +46 -0
  67. package/build/commands/preset/delete.js.map +1 -0
  68. package/build/commands/preset/edit.d.ts +23 -0
  69. package/build/commands/preset/edit.d.ts.map +1 -0
  70. package/build/commands/preset/edit.js +68 -0
  71. package/build/commands/preset/edit.js.map +1 -0
  72. package/build/commands/preset/index.d.ts +6 -0
  73. package/build/commands/preset/index.d.ts.map +1 -0
  74. package/build/commands/preset/index.js +141 -0
  75. package/build/commands/preset/index.js.map +1 -0
  76. package/build/commands/preset/interactive.d.ts +12 -0
  77. package/build/commands/preset/interactive.d.ts.map +1 -0
  78. package/build/commands/preset/interactive.js +131 -0
  79. package/build/commands/preset/interactive.js.map +1 -0
  80. package/build/commands/preset/list.d.ts +16 -0
  81. package/build/commands/preset/list.d.ts.map +1 -0
  82. package/build/commands/preset/list.js +128 -0
  83. package/build/commands/preset/list.js.map +1 -0
  84. package/build/commands/preset/show.d.ts +19 -0
  85. package/build/commands/preset/show.d.ts.map +1 -0
  86. package/build/commands/preset/show.js +114 -0
  87. package/build/commands/preset/show.js.map +1 -0
  88. package/build/commands/preset/test.d.ts +20 -0
  89. package/build/commands/preset/test.d.ts.map +1 -0
  90. package/build/commands/preset/test.js +46 -0
  91. package/build/commands/preset/test.js.map +1 -0
  92. package/build/commands/preset/url.d.ts +20 -0
  93. package/build/commands/preset/url.d.ts.map +1 -0
  94. package/build/commands/preset/url.js +47 -0
  95. package/build/commands/preset/url.js.map +1 -0
  96. package/build/commands/serve/index.d.ts +106 -0
  97. package/build/commands/serve/index.d.ts.map +1 -0
  98. package/build/commands/serve/index.js +143 -0
  99. package/build/commands/serve/index.js.map +1 -0
  100. package/build/commands/serve/serve.d.ts +28 -0
  101. package/build/commands/serve/serve.d.ts.map +1 -0
  102. package/build/commands/serve/serve.js +213 -0
  103. package/build/commands/serve/serve.js.map +1 -0
  104. package/build/constants.d.ts +6 -1
  105. package/build/constants.d.ts.map +1 -1
  106. package/build/constants.js +13 -5
  107. package/build/constants.js.map +1 -1
  108. package/build/core/server/agentConfig.d.ts +6 -0
  109. package/build/core/server/agentConfig.d.ts.map +1 -1
  110. package/build/core/server/agentConfig.js +9 -1
  111. package/build/core/server/agentConfig.js.map +1 -1
  112. package/build/core/server/serverManager.d.ts.map +1 -1
  113. package/build/core/server/serverManager.js +41 -0
  114. package/build/core/server/serverManager.js.map +1 -1
  115. package/build/core/types/server.d.ts +4 -1
  116. package/build/core/types/server.d.ts.map +1 -1
  117. package/build/core/types/server.js.map +1 -1
  118. package/build/core/types/transport.d.ts +16 -77
  119. package/build/core/types/transport.d.ts.map +1 -1
  120. package/build/core/types/transport.js +2 -2
  121. package/build/core/types/transport.js.map +1 -1
  122. package/build/globalOptions.d.ts +46 -0
  123. package/build/globalOptions.d.ts.map +1 -0
  124. package/build/globalOptions.js +37 -0
  125. package/build/globalOptions.js.map +1 -0
  126. package/build/handlers/requestHandlers.d.ts.map +1 -1
  127. package/build/handlers/requestHandlers.js +23 -1
  128. package/build/handlers/requestHandlers.js.map +1 -1
  129. package/build/index.js +58 -347
  130. package/build/index.js.map +1 -1
  131. package/build/logger/logger.d.ts.map +1 -1
  132. package/build/logger/logger.js +4 -2
  133. package/build/logger/logger.js.map +1 -1
  134. package/build/logger/mcpLoggingEnhancer.d.ts.map +1 -1
  135. package/build/logger/mcpLoggingEnhancer.js +10 -6
  136. package/build/logger/mcpLoggingEnhancer.js.map +1 -1
  137. package/build/server.d.ts.map +1 -1
  138. package/build/server.js +26 -0
  139. package/build/server.js.map +1 -1
  140. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +10 -1
  141. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -1
  142. package/build/transport/http/middlewares/scopeAuthMiddleware.js +12 -0
  143. package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -1
  144. package/build/transport/http/middlewares/tagsExtractor.d.ts +7 -3
  145. package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -1
  146. package/build/transport/http/middlewares/tagsExtractor.js +128 -6
  147. package/build/transport/http/middlewares/tagsExtractor.js.map +1 -1
  148. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  149. package/build/transport/http/routes/sseRoutes.js +5 -1
  150. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  151. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  152. package/build/transport/http/routes/streamableHttpRoutes.js +5 -1
  153. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  154. package/build/transport/transportFactory.js +1 -1
  155. package/build/transport/transportFactory.js.map +1 -1
  156. package/build/utils/configureGlobalLogger.d.ts +12 -0
  157. package/build/utils/configureGlobalLogger.d.ts.map +1 -0
  158. package/build/utils/configureGlobalLogger.js +18 -0
  159. package/build/utils/configureGlobalLogger.js.map +1 -0
  160. package/build/utils/interactiveSelector.d.ts +88 -0
  161. package/build/utils/interactiveSelector.d.ts.map +1 -0
  162. package/build/utils/interactiveSelector.js +616 -0
  163. package/build/utils/interactiveSelector.js.map +1 -0
  164. package/build/utils/presetErrorHandler.d.ts +62 -0
  165. package/build/utils/presetErrorHandler.d.ts.map +1 -0
  166. package/build/utils/presetErrorHandler.js +159 -0
  167. package/build/utils/presetErrorHandler.js.map +1 -0
  168. package/build/utils/presetManager.d.ts +114 -0
  169. package/build/utils/presetManager.d.ts.map +1 -0
  170. package/build/utils/presetManager.js +565 -0
  171. package/build/utils/presetManager.js.map +1 -0
  172. package/build/utils/presetNotificationService.d.ts +62 -0
  173. package/build/utils/presetNotificationService.d.ts.map +1 -0
  174. package/build/utils/presetNotificationService.js +214 -0
  175. package/build/utils/presetNotificationService.js.map +1 -0
  176. package/build/utils/presetServerChangeDetector.d.ts +50 -0
  177. package/build/utils/presetServerChangeDetector.d.ts.map +1 -0
  178. package/build/utils/presetServerChangeDetector.js +100 -0
  179. package/build/utils/presetServerChangeDetector.js.map +1 -0
  180. package/build/utils/presetTypes.d.ts +52 -0
  181. package/build/utils/presetTypes.d.ts.map +1 -0
  182. package/build/utils/presetTypes.js +5 -0
  183. package/build/utils/presetTypes.js.map +1 -0
  184. package/build/utils/tagQueryEvaluator.d.ts +68 -0
  185. package/build/utils/tagQueryEvaluator.d.ts.map +1 -0
  186. package/build/utils/tagQueryEvaluator.js +292 -0
  187. package/build/utils/tagQueryEvaluator.js.map +1 -0
  188. package/build/utils/tagQueryParser.d.ts +11 -0
  189. package/build/utils/tagQueryParser.d.ts.map +1 -1
  190. package/build/utils/tagQueryParser.js +46 -0
  191. package/build/utils/tagQueryParser.js.map +1 -1
  192. package/build/utils/urlGenerator.d.ts +68 -0
  193. package/build/utils/urlGenerator.d.ts.map +1 -0
  194. package/build/utils/urlGenerator.js +208 -0
  195. package/build/utils/urlGenerator.js.map +1 -0
  196. package/package.json +21 -17
@@ -0,0 +1,23 @@
1
+ import type { Argv } from 'yargs';
2
+ import { GlobalOptions } from '../../globalOptions.js';
3
+ /**
4
+ * Command arguments for the edit command
5
+ */
6
+ export interface EditArguments extends GlobalOptions {
7
+ _: string[];
8
+ name: string;
9
+ description?: string;
10
+ }
11
+ /**
12
+ * Build the edit command configuration
13
+ */
14
+ export declare function buildEditCommand(yargs: Argv): Argv<{
15
+ name: string;
16
+ } & {
17
+ description: string | undefined;
18
+ }>;
19
+ /**
20
+ * Preset edit command (interactive TUI for existing presets)
21
+ */
22
+ export declare function editCommand(argv: EditArguments): Promise<void>;
23
+ //# sourceMappingURL=edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/commands/preset/edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAIlC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI;;;;GAW3C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDpE"}
@@ -0,0 +1,68 @@
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
+ /**
6
+ * Build the edit command configuration
7
+ */
8
+ export function buildEditCommand(yargs) {
9
+ return yargs
10
+ .positional('name', {
11
+ describe: 'Name of the preset to edit',
12
+ type: 'string',
13
+ demandOption: true,
14
+ })
15
+ .option('description', {
16
+ describe: 'Update description for the preset',
17
+ type: 'string',
18
+ });
19
+ }
20
+ /**
21
+ * Preset edit command (interactive TUI for existing presets)
22
+ */
23
+ export async function editCommand(argv) {
24
+ try {
25
+ // Initialize preset manager
26
+ const presetManager = PresetManager.getInstance(argv['config-dir']);
27
+ await presetManager.initialize();
28
+ const selector = new InteractiveSelector();
29
+ const urlGenerator = new UrlGenerator();
30
+ // Show current preset configuration path
31
+ console.log(`📁 Config directory: ${presetManager.getConfigPath()}\n`);
32
+ // Load existing preset for editing
33
+ if (!presetManager.hasPreset(argv.name)) {
34
+ selector.showError(`Preset '${argv.name}' not found`);
35
+ return;
36
+ }
37
+ const existingConfig = presetManager.getPreset(argv.name);
38
+ if (!existingConfig) {
39
+ selector.showError(`Failed to load preset '${argv.name}'`);
40
+ return;
41
+ }
42
+ console.log(`📝 Editing preset: ${argv.name}`);
43
+ if (existingConfig.description) {
44
+ console.log(` Description: ${existingConfig.description}`);
45
+ }
46
+ // Interactive server selection with existing config
47
+ const result = await selector.selectServers(existingConfig, presetManager.getConfigPath());
48
+ if (result.cancelled) {
49
+ console.log('Operation cancelled.');
50
+ process.exit(0);
51
+ }
52
+ // Save back to the same preset name, optionally updating description
53
+ const updatedDescription = argv.description || existingConfig.description;
54
+ await presetManager.savePreset(argv.name, {
55
+ description: updatedDescription,
56
+ strategy: result.strategy,
57
+ tagQuery: result.tagQuery,
58
+ });
59
+ const url = urlGenerator.generatePresetUrl(argv.name);
60
+ selector.showSaveSuccess(argv.name, url);
61
+ }
62
+ catch (error) {
63
+ logger.error('Preset edit command failed', { error });
64
+ console.error(`❌ Command failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
65
+ process.exit(1);
66
+ }
67
+ }
68
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/commands/preset/edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Argv } from 'yargs';
2
+ /**
3
+ * Setup preset command configuration for yargs
4
+ */
5
+ export declare function setupPresetCommands(yargs: Argv): Argv;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/preset/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAsBlC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAoIrD"}
@@ -0,0 +1,141 @@
1
+ import { globalOptions } from '../../globalOptions.js';
2
+ // Import builder functions from command implementations
3
+ import { buildEditCommand } from './edit.js';
4
+ import { buildCreateCommand } from './create.js';
5
+ import { buildShowCommand } from './show.js';
6
+ import { buildListCommand } from './list.js';
7
+ import { buildUrlCommand } from './url.js';
8
+ import { buildDeleteCommand } from './delete.js';
9
+ import { buildTestCommand } from './test.js';
10
+ /**
11
+ * Setup preset command configuration for yargs
12
+ */
13
+ export function setupPresetCommands(yargs) {
14
+ return yargs.command('preset', 'Manage server presets for dynamic filtering', (yargs) => {
15
+ return yargs
16
+ .options(globalOptions || {})
17
+ .command({
18
+ command: 'edit <name>',
19
+ describe: 'Edit existing preset interactively',
20
+ builder: buildEditCommand,
21
+ handler: async (argv) => {
22
+ const { editCommand } = await import('./edit.js');
23
+ await editCommand(argv);
24
+ },
25
+ })
26
+ .command({
27
+ command: 'create <name>',
28
+ describe: 'Create preset with filter expression',
29
+ builder: buildCreateCommand,
30
+ handler: async (argv) => {
31
+ const { createCommand } = await import('./create.js');
32
+ await createCommand(argv);
33
+ },
34
+ })
35
+ .command({
36
+ command: 'show <name>',
37
+ describe: 'Show detailed information about a preset',
38
+ builder: buildShowCommand,
39
+ handler: async (argv) => {
40
+ const { showCommand } = await import('./show.js');
41
+ await showCommand(argv);
42
+ },
43
+ })
44
+ .command({
45
+ command: 'list',
46
+ describe: 'List all available presets',
47
+ builder: buildListCommand,
48
+ handler: async (argv) => {
49
+ const { listCommand } = await import('./list.js');
50
+ await listCommand(argv);
51
+ },
52
+ })
53
+ .command({
54
+ command: 'url <name>',
55
+ describe: 'Generate URL for existing preset',
56
+ builder: buildUrlCommand,
57
+ handler: async (argv) => {
58
+ const { urlCommand } = await import('./url.js');
59
+ await urlCommand(argv);
60
+ },
61
+ })
62
+ .command({
63
+ command: 'delete <name>',
64
+ describe: 'Delete an existing preset',
65
+ builder: buildDeleteCommand,
66
+ handler: async (argv) => {
67
+ const { deleteCommand } = await import('./delete.js');
68
+ await deleteCommand(argv);
69
+ },
70
+ })
71
+ .command({
72
+ command: 'test <name>',
73
+ describe: 'Test preset against current server configuration',
74
+ builder: buildTestCommand,
75
+ handler: async (argv) => {
76
+ const { testCommand } = await import('./test.js');
77
+ await testCommand(argv);
78
+ },
79
+ })
80
+ .demandCommand(0, 'Use --help for available commands')
81
+ .example([
82
+ ['$0 preset', 'Smart interactive mode - create new or edit existing'],
83
+ ['$0 preset edit development', 'Edit existing "development" preset'],
84
+ ['$0 preset create dev --filter "web,database"', 'Create preset with simple filter'],
85
+ ['$0 preset create prod --filter "web AND database"', 'Create preset with AND logic'],
86
+ ['$0 preset create secure --filter "(web OR api) AND NOT experimental"', 'Complex filter'],
87
+ ['$0 preset list', 'List all available presets'],
88
+ ['$0 preset show development', 'Show full details of "development" preset'],
89
+ ['$0 preset url development', 'Generate URL for existing preset'],
90
+ ['$0 preset delete staging', 'Delete "staging" preset'],
91
+ ['$0 preset test development', 'Test "development" preset'],
92
+ ]).epilogue(`
93
+ PRESET MANAGEMENT SYSTEM:
94
+
95
+ The preset command provides both interactive (TUI) and command-line approaches to manage
96
+ server filtering presets. Presets generate URLs like http://localhost:3050/mcp?preset=development
97
+ that automatically update when you modify the preset configuration.
98
+
99
+ WORKFLOW EXAMPLES:
100
+
101
+ 1. Smart interactive approach:
102
+ 1mcp preset
103
+ → Auto-detects existing presets → Offers to edit or create new
104
+
105
+ 2. Direct editing:
106
+ 1mcp preset edit dev
107
+ → Interactive editing of existing 'dev' preset
108
+
109
+ 3. Command-line creation:
110
+ 1mcp preset create dev --filter "web,database,api"
111
+ → Quick preset creation with comma-separated tags (OR logic)
112
+
113
+ 4. Complex expressions:
114
+ 1mcp preset create prod --filter "web AND database AND monitoring"
115
+ → AND logic for strict requirements
116
+
117
+ 1mcp preset create flexible --filter "(web OR api) AND database"
118
+ → Mixed boolean expressions
119
+
120
+ 5. Management:
121
+ 1mcp preset list # List all presets
122
+ 1mcp preset url dev # Get client URL
123
+ 1mcp preset test dev # Test against servers
124
+ 1mcp preset delete old # Remove unused preset
125
+
126
+ FILTER EXPRESSIONS:
127
+ - Simple (OR logic): "web,api,database"
128
+ - AND logic: "web AND database"
129
+ - Complex: "(web OR api) AND database AND NOT experimental"
130
+
131
+ DYNAMIC UPDATES:
132
+ When you modify a preset, all clients using that preset's URL automatically
133
+ receive updated server configurations without needing to change their URLs.
134
+ `);
135
+ }, async (argv) => {
136
+ // Smart interactive mode when no subcommand is provided
137
+ const { interactiveCommand } = await import('./interactive.js');
138
+ await interactiveCommand(argv);
139
+ });
140
+ }
141
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/preset/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAYvD,wDAAwD;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAW;IAC7C,OAAO,KAAK,CAAC,OAAO,CAClB,QAAQ,EACR,6CAA6C,EAC7C,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK;aACT,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;aAC5B,OAAO,CAAC;YACP,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,oCAAoC;YAC9C,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,WAAW,CAAC,IAAqB,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;aACD,OAAO,CAAC;YACP,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBACtD,MAAM,aAAa,CAAC,IAAuB,CAAC,CAAC;YAC/C,CAAC;SACF,CAAC;aACD,OAAO,CAAC;YACP,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,0CAA0C;YACpD,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,WAAW,CAAC,IAAqB,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;aACD,OAAO,CAAC;YACP,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,4BAA4B;YACtC,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,WAAW,CAAC,IAAqB,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;aACD,OAAO,CAAC;YACP,OAAO,EAAE,YAAY;YACrB,QAAQ,EAAE,kCAAkC;YAC5C,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBAChD,MAAM,UAAU,CAAC,IAAoB,CAAC,CAAC;YACzC,CAAC;SACF,CAAC;aACD,OAAO,CAAC;YACP,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,2BAA2B;YACrC,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBACtD,MAAM,aAAa,CAAC,IAAuB,CAAC,CAAC;YAC/C,CAAC;SACF,CAAC;aACD,OAAO,CAAC;YACP,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,kDAAkD;YAC5D,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,WAAW,CAAC,IAAqB,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;aACD,aAAa,CAAC,CAAC,EAAE,mCAAmC,CAAC;aACrD,OAAO,CAAC;YACP,CAAC,WAAW,EAAE,sDAAsD,CAAC;YACrE,CAAC,4BAA4B,EAAE,oCAAoC,CAAC;YACpE,CAAC,8CAA8C,EAAE,kCAAkC,CAAC;YACpF,CAAC,mDAAmD,EAAE,8BAA8B,CAAC;YACrF,CAAC,sEAAsE,EAAE,gBAAgB,CAAC;YAC1F,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;YAChD,CAAC,4BAA4B,EAAE,2CAA2C,CAAC;YAC3E,CAAC,2BAA2B,EAAE,kCAAkC,CAAC;YACjE,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;YACvD,CAAC,4BAA4B,EAAE,2BAA2B,CAAC;SAC5D,CAAC,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA0CX,CAAC,CAAC;IACP,CAAC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,wDAAwD;QACxD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAChE,MAAM,kBAAkB,CAAC,IAA4B,CAAC,CAAC;IACzD,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { GlobalOptions } from '../../globalOptions.js';
2
+ /**
3
+ * Command arguments for the interactive command
4
+ */
5
+ export 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
+ //# 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,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,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":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Argv } from 'yargs';
2
+ import { GlobalOptions } from '@src/globalOptions.js';
3
+ /**
4
+ * Command arguments for the list command
5
+ */
6
+ export interface ListArguments extends GlobalOptions {
7
+ }
8
+ /**
9
+ * Build the list command configuration
10
+ */
11
+ export declare function buildListCommand(yargs: Argv): Argv<{}>;
12
+ /**
13
+ * List available presets
14
+ */
15
+ export declare function listCommand(argv?: ListArguments): Promise<void>;
16
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/preset/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAMlC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,aAAa;CAAG;AAEvD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,YAE3C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrE"}
@@ -0,0 +1,128 @@
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
+ * Build the list command configuration
8
+ */
9
+ export function buildListCommand(yargs) {
10
+ return yargs;
11
+ }
12
+ /**
13
+ * List available presets
14
+ */
15
+ export async function listCommand(argv) {
16
+ try {
17
+ const presetManager = PresetManager.getInstance(argv?.['config-dir']);
18
+ await presetManager.initialize();
19
+ const selector = new InteractiveSelector();
20
+ await listPresets(presetManager, selector);
21
+ }
22
+ catch (error) {
23
+ logger.error('Preset list command failed', { error });
24
+ console.error(`❌ Command failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
25
+ process.exit(1);
26
+ }
27
+ }
28
+ /**
29
+ * List available presets using TUI styling
30
+ */
31
+ async function listPresets(presetManager, _selector) {
32
+ const presets = presetManager.getPresetList();
33
+ if (presets.length === 0) {
34
+ console.log(boxen(chalk.red.bold('⚠️ No presets found'), {
35
+ padding: 1,
36
+ borderStyle: 'round',
37
+ borderColor: 'red',
38
+ title: 'No Presets Available',
39
+ titleAlignment: 'center',
40
+ }));
41
+ console.log(chalk.yellow('\nCreate your first preset with:'));
42
+ console.log(chalk.cyan(' 1mcp preset create <name> --filter "web,api,database"'));
43
+ console.log(chalk.cyan(' 1mcp preset select --save <name> --url'));
44
+ return;
45
+ }
46
+ // Header
47
+ const headerMessage = boxen(chalk.cyan.bold('📋 Available Presets\n\n') +
48
+ chalk.yellow(`Found ${presets.length} preset${presets.length === 1 ? '' : 's'} in your configuration`), {
49
+ padding: 1,
50
+ margin: 1,
51
+ borderStyle: 'double',
52
+ borderColor: 'cyan',
53
+ title: 'Preset Manager',
54
+ titleAlignment: 'center',
55
+ });
56
+ console.log(headerMessage);
57
+ // Create clean table layout
58
+ let tableContent = '';
59
+ // Table header
60
+ tableContent += chalk.cyan.bold(' Name Strategy Query Last Used\n');
61
+ tableContent += chalk.gray(' ──────────────── ───────── ────────────────────────────────── ─────────\n');
62
+ // Table rows
63
+ for (const preset of presets) {
64
+ const lastUsed = preset.lastUsed ? new Date(preset.lastUsed).toLocaleDateString() : 'never';
65
+ const strategyDesc = getStrategyDescription(preset.strategy);
66
+ const queryStr = JSON.stringify(preset.tagQuery) || '{}';
67
+ // Format fields with proper truncation
68
+ const name = preset.name.length > 16 ? preset.name.slice(0, 13) + '...' : preset.name;
69
+ const strategy = strategyDesc.length > 9 ? strategyDesc.slice(0, 9) : strategyDesc;
70
+ const query = queryStr.length > 33 ? queryStr.slice(0, 30) + '...' : queryStr;
71
+ const lastUsedStr = lastUsed.length > 9 ? lastUsed.slice(0, 9) : lastUsed;
72
+ tableContent +=
73
+ ` ${chalk.yellow(name.padEnd(16))} ` +
74
+ `${chalk.blue(strategy.padEnd(9))} ` +
75
+ `${chalk.green(query.padEnd(33))} ` +
76
+ `${chalk.gray(lastUsedStr)}\n`;
77
+ }
78
+ const tableBox = boxen(tableContent.trim(), {
79
+ padding: 1,
80
+ borderStyle: 'round',
81
+ borderColor: 'blue',
82
+ title: 'Preset Overview',
83
+ titleAlignment: 'center',
84
+ });
85
+ console.log(tableBox);
86
+ // Commands help section
87
+ const commandsContent = chalk.cyan.bold('Available Commands:\n\n') +
88
+ chalk.white('• ') +
89
+ chalk.green('1mcp preset show <name>') +
90
+ chalk.gray(' Show full preset details\n') +
91
+ chalk.white('• ') +
92
+ chalk.green('1mcp preset url <name>') +
93
+ chalk.gray(' Generate URL\n') +
94
+ chalk.white('• ') +
95
+ chalk.green('1mcp preset select --load <name>') +
96
+ chalk.gray(' Edit preset\n') +
97
+ chalk.white('• ') +
98
+ chalk.green('1mcp preset test <name>') +
99
+ chalk.gray(' Test preset\n') +
100
+ chalk.white('• ') +
101
+ chalk.green('1mcp preset delete <name>') +
102
+ chalk.gray(' Delete preset');
103
+ console.log('');
104
+ console.log(boxen(commandsContent, {
105
+ padding: 1,
106
+ borderStyle: 'single',
107
+ borderColor: 'gray',
108
+ title: 'Quick Reference',
109
+ titleAlignment: 'center',
110
+ }));
111
+ console.log('');
112
+ }
113
+ /**
114
+ * Get human-readable strategy description
115
+ */
116
+ function getStrategyDescription(strategy) {
117
+ switch (strategy) {
118
+ case 'or':
119
+ return 'OR logic';
120
+ case 'and':
121
+ return 'AND logic';
122
+ case 'advanced':
123
+ return 'Advanced';
124
+ default:
125
+ return strategy;
126
+ }
127
+ }
128
+ //# 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,19 @@
1
+ import type { Argv } from 'yargs';
2
+ import { GlobalOptions } from '../../globalOptions.js';
3
+ /**
4
+ * Command arguments for the show command
5
+ */
6
+ export interface ShowArguments extends GlobalOptions {
7
+ name: string;
8
+ }
9
+ /**
10
+ * Build the show command configuration
11
+ */
12
+ export declare function buildShowCommand(yargs: Argv): Argv<{
13
+ name: string;
14
+ }>;
15
+ /**
16
+ * Show detailed information about a specific preset
17
+ */
18
+ export declare function showCommand(argv: ShowArguments): Promise<void>;
19
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/preset/show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAIlC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKvD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI;;GAM3C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAapE"}