@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,62 @@
1
+ /**
2
+ * Standardized error handling utilities for preset operations
3
+ */
4
+ export interface PresetErrorOptions {
5
+ context?: string;
6
+ userMessage?: string;
7
+ exit?: boolean;
8
+ exitCode?: number;
9
+ logLevel?: 'error' | 'warn' | 'info' | 'debug';
10
+ }
11
+ /**
12
+ * Standardized error class for preset operations
13
+ */
14
+ export declare class PresetError extends Error {
15
+ readonly context?: string;
16
+ readonly userMessage?: string;
17
+ readonly exitCode?: number;
18
+ readonly logLevel: 'error' | 'warn' | 'info' | 'debug';
19
+ constructor(message: string, options?: PresetErrorOptions);
20
+ }
21
+ /**
22
+ * Error handler with consistent formatting and behavior
23
+ */
24
+ export declare class PresetErrorHandler {
25
+ /**
26
+ * Create and throw a standardized preset error
27
+ */
28
+ static throwError(message: string, options?: PresetErrorOptions): never;
29
+ /**
30
+ * Handle CLI error with proper exit codes and user-friendly messages
31
+ */
32
+ static handleCliError(error: unknown, context?: string): never;
33
+ /**
34
+ * Create a validation error with consistent formatting
35
+ */
36
+ static validationError(message: string, field?: string, options?: PresetErrorOptions): never;
37
+ /**
38
+ * Create a file operation error
39
+ */
40
+ static fileError(operation: 'read' | 'write' | 'delete', filePath: string, error: unknown): never;
41
+ /**
42
+ * Create a parsing error for invalid filter expressions
43
+ */
44
+ static parseError(expression: string, error: unknown, options?: PresetErrorOptions): never;
45
+ /**
46
+ * Create a not found error
47
+ */
48
+ static notFoundError(type: 'preset' | 'server' | 'config', name: string, options?: PresetErrorOptions): never;
49
+ /**
50
+ * Wrap a function with standardized error handling
51
+ */
52
+ static withErrorHandling<T>(fn: () => T, context?: string, options?: PresetErrorOptions): T;
53
+ /**
54
+ * Create a user-friendly error message for filter examples
55
+ */
56
+ static createFilterError(expression: string): never;
57
+ /**
58
+ * Log error with structured format
59
+ */
60
+ static logError(error: unknown, context?: string): void;
61
+ }
62
+ //# sourceMappingURL=presetErrorHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presetErrorHandler.d.ts","sourceRoot":"","sources":["../../src/utils/presetErrorHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;gBAElD,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;CAQ9D;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,KAAK;IAK3E;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK;IAmB9D;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,KAAK;IAShG;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK;IAWjG;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,GAAG,KAAK;IAW9F;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,KAAK;IASjH;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,CAAC;IAgB/F;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK;IAcnD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAyBxD"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Standardized error handling utilities for preset operations
3
+ */
4
+ /**
5
+ * Standardized error class for preset operations
6
+ */
7
+ export class PresetError extends Error {
8
+ context;
9
+ userMessage;
10
+ exitCode;
11
+ logLevel;
12
+ constructor(message, options = {}) {
13
+ super(message);
14
+ this.name = 'PresetError';
15
+ this.context = options.context;
16
+ this.userMessage = options.userMessage;
17
+ this.exitCode = options.exitCode;
18
+ this.logLevel = options.logLevel || 'error';
19
+ }
20
+ }
21
+ /**
22
+ * Error handler with consistent formatting and behavior
23
+ */
24
+ export class PresetErrorHandler {
25
+ /**
26
+ * Create and throw a standardized preset error
27
+ */
28
+ static throwError(message, options = {}) {
29
+ const error = new PresetError(message, options);
30
+ throw error;
31
+ }
32
+ /**
33
+ * Handle CLI error with proper exit codes and user-friendly messages
34
+ */
35
+ static handleCliError(error, context) {
36
+ if (error instanceof PresetError) {
37
+ if (error.userMessage) {
38
+ console.error(`❌ ${error.userMessage}`);
39
+ }
40
+ if (error.context || context) {
41
+ console.error(`Context: ${error.context || context}`);
42
+ }
43
+ process.exit(error.exitCode || 1);
44
+ }
45
+ // Handle unknown errors
46
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
47
+ console.error(`❌ ${context ? `${context}: ` : ''}${errorMessage}`);
48
+ process.exit(1);
49
+ }
50
+ /**
51
+ * Create a validation error with consistent formatting
52
+ */
53
+ static validationError(message, field, options = {}) {
54
+ const userMessage = field ? `Invalid ${field}: ${message}` : message;
55
+ this.throwError(message, {
56
+ ...options,
57
+ userMessage,
58
+ context: options.context || 'validation',
59
+ });
60
+ }
61
+ /**
62
+ * Create a file operation error
63
+ */
64
+ static fileError(operation, filePath, error) {
65
+ const operationPast = operation === 'read' ? 'reading' : operation === 'write' ? 'writing' : 'deleting';
66
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
67
+ this.throwError(`Failed to ${operationPast} file: ${errorMessage}`, {
68
+ context: `file ${operation}`,
69
+ userMessage: `Could not ${operationPast} preset file: ${filePath}`,
70
+ exitCode: 2,
71
+ });
72
+ }
73
+ /**
74
+ * Create a parsing error for invalid filter expressions
75
+ */
76
+ static parseError(expression, error, options = {}) {
77
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
78
+ this.throwError(`Failed to parse filter expression: ${errorMessage}`, {
79
+ context: 'filter parsing',
80
+ userMessage: `Invalid filter expression: "${expression}"`,
81
+ exitCode: 1,
82
+ ...options,
83
+ });
84
+ }
85
+ /**
86
+ * Create a not found error
87
+ */
88
+ static notFoundError(type, name, options = {}) {
89
+ this.throwError(`${type} '${name}' not found`, {
90
+ context: `${type} lookup`,
91
+ userMessage: `No ${type} found with name: ${name}`,
92
+ exitCode: 4,
93
+ ...options,
94
+ });
95
+ }
96
+ /**
97
+ * Wrap a function with standardized error handling
98
+ */
99
+ static withErrorHandling(fn, context, options = {}) {
100
+ try {
101
+ return fn();
102
+ }
103
+ catch (error) {
104
+ if (error instanceof PresetError) {
105
+ throw error;
106
+ }
107
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
108
+ this.throwError(`${context}: ${errorMessage}`, {
109
+ ...options,
110
+ context: context || options.context,
111
+ });
112
+ }
113
+ }
114
+ /**
115
+ * Create a user-friendly error message for filter examples
116
+ */
117
+ static createFilterError(expression) {
118
+ console.error(`❌ Invalid filter expression: ${expression}`);
119
+ console.error('Examples:');
120
+ console.error(' --filter "web,api,database" # OR logic (comma-separated)');
121
+ console.error(' --filter "web AND database" # AND logic');
122
+ console.error(' --filter "(web OR api) AND database" # Complex expressions');
123
+ this.parseError(expression, 'Invalid syntax', {
124
+ userMessage: `Invalid filter expression: "${expression}"`,
125
+ context: 'filter parsing',
126
+ exitCode: 1,
127
+ });
128
+ }
129
+ /**
130
+ * Log error with structured format
131
+ */
132
+ static logError(error, context) {
133
+ // Import logger dynamically to avoid circular dependencies
134
+ import('../logger/logger.js')
135
+ .then(({ default: logger }) => {
136
+ if (error instanceof PresetError) {
137
+ logger[error.logLevel](error.message, {
138
+ context: error.context || context,
139
+ userMessage: error.userMessage,
140
+ exitCode: error.exitCode,
141
+ stack: error.stack,
142
+ });
143
+ }
144
+ else {
145
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
146
+ logger.error('Unexpected error', {
147
+ context,
148
+ error: errorMessage,
149
+ stack: error instanceof Error ? error.stack : undefined,
150
+ });
151
+ }
152
+ })
153
+ .catch(() => {
154
+ // Fallback to console if logger import fails
155
+ console.error('Error logging failed:', error);
156
+ });
157
+ }
158
+ }
159
+ //# sourceMappingURL=presetErrorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presetErrorHandler.js","sourceRoot":"","sources":["../../src/utils/presetErrorHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { PresetConfig, PresetValidationResult, PresetListItem } from './presetTypes.js';
2
+ /**
3
+ * PresetManager handles dynamic preset storage, validation, and hot-reloading.
4
+ * Integrates with client notification system for real-time updates.
5
+ */
6
+ export declare class PresetManager {
7
+ private static instance;
8
+ private presets;
9
+ private configPath;
10
+ private watcher;
11
+ private reloadTimeout;
12
+ private readonly DEBOUNCE_DELAY;
13
+ private notificationCallbacks;
14
+ private configDirOption?;
15
+ private changeDetector;
16
+ private constructor();
17
+ static getInstance(configDirOption?: string): PresetManager;
18
+ /**
19
+ * Reset the singleton instance. Primarily for testing.
20
+ */
21
+ static resetInstance(): void;
22
+ /**
23
+ * Initialize preset manager and start file watching
24
+ */
25
+ initialize(): Promise<void>;
26
+ /**
27
+ * Register callback for preset change notifications
28
+ */
29
+ onPresetChange(callback: (presetName: string) => Promise<void>): void;
30
+ /**
31
+ * Remove notification callback
32
+ */
33
+ offPresetChange(callback: (presetName: string) => Promise<void>): void;
34
+ /**
35
+ * Load presets from storage file
36
+ */
37
+ private loadPresets;
38
+ /**
39
+ * Reload presets and notify clients of any server list changes
40
+ */
41
+ private reloadAndNotifyChanges;
42
+ /**
43
+ * Initialize change detector with current preset server lists
44
+ */
45
+ private initializeChangeDetector;
46
+ /**
47
+ * Save presets to storage file
48
+ */
49
+ private savePresets;
50
+ /**
51
+ * Ensure config directory exists
52
+ */
53
+ private ensureConfigDirectory;
54
+ /**
55
+ * Start watching preset file for changes
56
+ */
57
+ private startWatching;
58
+ /**
59
+ * Stop watching preset file
60
+ */
61
+ cleanup(): Promise<void>;
62
+ /**
63
+ * Create or update a preset
64
+ */
65
+ savePreset(name: string, config: Omit<PresetConfig, 'name' | 'created' | 'lastModified'>): Promise<void>;
66
+ /**
67
+ * Get a preset by name
68
+ */
69
+ getPreset(name: string): PresetConfig | null;
70
+ /**
71
+ * Get all presets as list items
72
+ */
73
+ getPresetList(): PresetListItem[];
74
+ /**
75
+ * Delete a preset
76
+ */
77
+ deletePreset(name: string): Promise<boolean>;
78
+ /**
79
+ * Update preset usage timestamp
80
+ */
81
+ markPresetUsed(name: string): Promise<void>;
82
+ /**
83
+ * Validate a preset configuration
84
+ */
85
+ validatePreset(name: string, config: Omit<PresetConfig, 'name' | 'created' | 'lastModified'>): Promise<PresetValidationResult>;
86
+ /**
87
+ * Resolve preset to tag expression for filtering
88
+ */
89
+ resolvePresetToExpression(name: string): string | null;
90
+ /**
91
+ * Test a preset against current server configuration
92
+ */
93
+ testPreset(name: string): Promise<{
94
+ servers: string[];
95
+ tags: string[];
96
+ }>;
97
+ /**
98
+ * Notify clients of preset changes
99
+ */
100
+ private notifyPresetChange;
101
+ /**
102
+ * Check if a preset exists
103
+ */
104
+ hasPreset(name: string): boolean;
105
+ /**
106
+ * Get preset names
107
+ */
108
+ getPresetNames(): string[];
109
+ /**
110
+ * Get the configuration path
111
+ */
112
+ getConfigPath(): string;
113
+ }
114
+ //# sourceMappingURL=presetManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presetManager.d.ts","sourceRoot":"","sources":["../../src/utils/presetManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAiB,sBAAsB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvG;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IACrD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IACtC,OAAO,CAAC,qBAAqB,CAAyD;IACtF,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,cAAc,CAAgE;IAEtF,OAAO;WAOO,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,aAAa;IAOlE;;OAEG;WACW,aAAa,IAAI,IAAI;IASnC;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxC;;OAEG;IACI,cAAc,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI5E;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI7E;;OAEG;YACW,WAAW;IA2CzB;;OAEG;YACW,sBAAsB;IA4FpC;;OAEG;YACW,wBAAwB;IAmBtC;;OAEG;YACW,WAAW;IAuBzB;;OAEG;YACW,qBAAqB;IAWnC;;OAEG;YACW,aAAa;IAmC3B;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDrC;;OAEG;IACU,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC,GAC9D,OAAO,CAAC,IAAI,CAAC;IA6BhB;;OAEG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAInD;;OAEG;IACI,aAAa,IAAI,cAAc,EAAE;IAUxC;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYzD;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxD;;OAEG;IACU,cAAc,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC,GAC9D,OAAO,CAAC,sBAAsB,CAAC;IA8ClC;;OAEG;IACI,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgC7D;;OAEG;IACU,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAuDrF;;OAEG;YACW,kBAAkB;IAchC;;OAEG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACI,cAAc,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACI,aAAa,IAAI,MAAM;CAG/B"}