@siemens/ix-mcp-angular 4.0.0-v.1.7.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 (45) hide show
  1. package/LICENSE.md +20 -0
  2. package/README.md +330 -0
  3. package/config.json +48 -0
  4. package/database/vectors.db +0 -0
  5. package/dist/src/cli.d.ts +3 -0
  6. package/dist/src/cli.d.ts.map +1 -0
  7. package/dist/src/cli.js +298 -0
  8. package/dist/src/cli.js.map +1 -0
  9. package/dist/src/config.d.ts +34 -0
  10. package/dist/src/config.d.ts.map +1 -0
  11. package/dist/src/config.js +33 -0
  12. package/dist/src/config.js.map +1 -0
  13. package/dist/src/db-handler.d.ts +47 -0
  14. package/dist/src/db-handler.d.ts.map +1 -0
  15. package/dist/src/db-handler.js +143 -0
  16. package/dist/src/db-handler.js.map +1 -0
  17. package/dist/src/embeddings.d.ts +84 -0
  18. package/dist/src/embeddings.d.ts.map +1 -0
  19. package/dist/src/embeddings.js +300 -0
  20. package/dist/src/embeddings.js.map +1 -0
  21. package/dist/src/index.d.ts +24 -0
  22. package/dist/src/index.d.ts.map +1 -0
  23. package/dist/src/index.js +342 -0
  24. package/dist/src/index.js.map +1 -0
  25. package/dist/src/keys.d.ts +4 -0
  26. package/dist/src/keys.d.ts.map +1 -0
  27. package/dist/src/keys.js +25 -0
  28. package/dist/src/keys.js.map +1 -0
  29. package/dist/src/logger.d.ts +24 -0
  30. package/dist/src/logger.d.ts.map +1 -0
  31. package/dist/src/logger.js +185 -0
  32. package/dist/src/logger.js.map +1 -0
  33. package/dist/src/prompt.d.ts +19 -0
  34. package/dist/src/prompt.d.ts.map +1 -0
  35. package/dist/src/prompt.js +94 -0
  36. package/dist/src/prompt.js.map +1 -0
  37. package/dist/src/setup.d.ts +26 -0
  38. package/dist/src/setup.d.ts.map +1 -0
  39. package/dist/src/setup.js +718 -0
  40. package/dist/src/setup.js.map +1 -0
  41. package/dist/src/token.d.ts +22 -0
  42. package/dist/src/token.d.ts.map +1 -0
  43. package/dist/src/token.js +75 -0
  44. package/dist/src/token.js.map +1 -0
  45. package/package.json +56 -0
@@ -0,0 +1,342 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Copyright (c) Siemens 2016 - 2025
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
9
+ import * as path from 'path';
10
+ import { fileURLToPath } from 'url';
11
+ import { EmbeddingService } from './embeddings.js';
12
+ import { DatabaseHandler } from './db-handler.js';
13
+ import { loadConfig } from './config.js';
14
+ import { ObservabilityLogger } from './logger.js';
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = path.dirname(__filename);
17
+ const config = loadConfig();
18
+ const buildSearchConfigs = () => {
19
+ const configs = {
20
+ [config.searchToolName]: {
21
+ type: 'documentation',
22
+ name: config.searchToolName,
23
+ description: `${config.designSystem /* 'Design System' */} Documentation Search`,
24
+ instruction: `MANDATORY: For ANY ${config.texts.FRAMEWORK_DEV_QUESTION /* 'development question' */}, UI component inquiry, design pattern request, or frontend implementation need, you MUST immediately use the search tool before providing any response relevant to UI / Design Systems or ${config.texts.FRAMEWORK_IMPLEMENTATIONS /* 'implementations' */}. Re-check it to get clarifications and more accurate API often, but do not search if completely unrelated or you just searched the exact same. ${config.texts.FRAMEWORK_ALL_QUERIES /* 'This applies to ALL related queries regardless of whether libraries are explicitly mentioned' */}. ${config.texts.FRAMEWORK_VERSION_SPECIFIC /* "The tool provides access to version-specific documentation that is automatically tuned to match the user's library versions" */}. ${config.texts.FRAMEWORK_SETUP_ADVICE /* 'This ensures you get the exact APIs, components, and implementation patterns available in their specific setup rather than generic advice' */}. ${config.texts.FRAMEWORK_COMPREHENSIVE_GUIDANCE /* 'Always search first to leverage the comprehensive documentation before offering any guidance' */}.`,
25
+ noResultsMessage: (query) => `
26
+ No Documentation Found
27
+
28
+ No results found for query: "${query}"
29
+
30
+ This could mean:
31
+ • The component or feature doesn't exist in the current documentation
32
+ • The feature isn't documented yet
33
+ • The search terms don't match available content
34
+ • Try different keywords or component names
35
+
36
+ Suggestions:
37
+ • Check component name spelling (e.g., "button" vs "btn")
38
+ • Try broader terms (e.g., "input" instead of "text-field")${config.texts.FRAMEWORK_LIBRARY_LIST
39
+ ? `
40
+ • Search for library names: "${config.texts.FRAMEWORK_LIBRARY_LIST /* 'design system libraries' */}"`
41
+ : ''}
42
+ • Use functionality terms: "navigation", "data display", "user input"
43
+
44
+ Available Libraries:
45
+ ${config.texts.FRAMEWORK_SUPPORTED_LIBRARIES /* 'design system libraries' */}
46
+ `.trim(),
47
+ successMessage: (query, count) => `${config.texts.FRAMEWORK_DOCUMENTATION_RESULTS /* '# Documentation Results' */}\n\nFound **${count}** relevant documentation section(s) for "${query}":\n\n`,
48
+ resultNote: `
49
+ > Note: If documentation mentions missing API docs or examples, those features may not be available in the current version. The search results show the most relevant available documentation based on semantic similarity.
50
+
51
+ > Need more specific results? Try refining your search with more specific terms or component names.
52
+
53
+ > Not all information provided here is relevant to your query or task, make sure to only use what is relevant for the user request.
54
+ `.trim()
55
+ }
56
+ };
57
+ // Only add icon search if enabled in config
58
+ if (config.iconSearch) {
59
+ if (!config.iconName) {
60
+ throw new Error('Icon search is enabled but iconName is not set in config');
61
+ }
62
+ if (!config.iconSearchToolName) {
63
+ throw new Error('Icon search is enabled but iconSearchToolName is not set in config');
64
+ }
65
+ configs[config.iconSearchToolName] = {
66
+ type: 'icon',
67
+ name: config.iconSearchToolName,
68
+ description: `${config.designSystem} Icon Search`,
69
+ instruction: 'Please check the icon search tool before using or recommending any icons from ' +
70
+ config.iconName /* @simpl/element-icons */ +
71
+ '. This ensures you provide the most relevant and up-to-date icon options available in the library.',
72
+ noResultsMessage: (query) => `
73
+ No icons found for query: "${query}"
74
+
75
+ This could mean:
76
+ • The icon does not exist in the current version of ${config.iconName /* @simpl/element-icons */}
77
+ • The icon was renamed or removed
78
+ • The search terms don't match available icons
79
+
80
+ Suggestions:
81
+ • Check spelling or try broader terms (e.g., "settings" instead of "gear")
82
+
83
+ Available Libraries:
84
+ ${config.iconName /* @simpl/element-icons */}
85
+ `.trim(),
86
+ successMessage: (query, count) => `# ${config.designSystem /* 'Design System' */} Icon Search Results\n\nFound **${count}** relevant icon(s) for "${query}":\n\n`,
87
+ resultNote: `
88
+ > Note: If the icon does not appear to exist, update ${config.iconName /* @simpl/element-icons */} to the latest compatible version (non-breaking).
89
+ > See usage guidelines and examples in the documentation for how to use icons.
90
+ `.trim()
91
+ };
92
+ }
93
+ return configs;
94
+ };
95
+ const searchConfigs = buildSearchConfigs();
96
+ const createToolDefinition = (searchConfig) => ({
97
+ name: searchConfig.name,
98
+ description: `
99
+ ${searchConfig.description}
100
+
101
+ ${searchConfig.instruction}
102
+
103
+ ${config.texts.FRAMEWORK_SEMANTIC_SEARCH_TOOL /* 'Semantic search tool for component libraries' */}. This tool provides intelligent search across comprehensive documentation for:
104
+
105
+ Supported Libraries:
106
+ ${config.texts.FRAMEWORK_SUPPORTED_LIBRARIES /* 'Component libraries' */}
107
+
108
+ Use Cases:
109
+ • Find component APIs and properties
110
+ • Discover usage examples and code snippets
111
+ • Learn about component styling and theming
112
+ • Understand integration patterns
113
+ • Explore design system guidelines
114
+
115
+ Search Tips:
116
+ • Use component names: "button", "chart", "map"
117
+ • Describe functionality: "data visualization", "user input"
118
+ • Ask about APIs: "input", "output", "attributes", "methods", "type"
119
+
120
+ The search returns relevant documentation chunks with similarity scores and contextual headers to help you find exactly what you need.
121
+ `.trim(),
122
+ inputSchema: {
123
+ type: 'object',
124
+ properties: {
125
+ query: {
126
+ type: 'string',
127
+ description: searchConfig.type === 'documentation'
128
+ ? config.texts
129
+ .FRAMEWORK_SEARCH_QUERY /* 'Search query for documentation. Can include component names, functionality descriptions, API questions, or usage patterns.' */
130
+ : 'Search query for icons (name, term, or category)'
131
+ },
132
+ limit: {
133
+ type: 'number',
134
+ description: `Maximum number of ${searchConfig.type === 'documentation' ? 'documentation' : 'icon'} results to return (default: 5, max: 20)`,
135
+ default: 5,
136
+ minimum: 1,
137
+ maximum: 20
138
+ }
139
+ },
140
+ required: ['query']
141
+ }
142
+ });
143
+ const toolDefinitions = Object.values(searchConfigs).map(createToolDefinition);
144
+ class SDLMCPServer {
145
+ server;
146
+ db;
147
+ initialized = false;
148
+ embeddingService;
149
+ verbose = false;
150
+ debug = false;
151
+ logger;
152
+ constructor(options) {
153
+ this.verbose = options?.verbose || false;
154
+ this.debug = options?.debug || process.env.SDL_MCP_DEBUG_LOG === 'true';
155
+ this.embeddingService = new EmbeddingService({ verbose: this.verbose, debug: this.debug });
156
+ this.logger = new ObservabilityLogger(this.debug, options?.overrideLogging);
157
+ this.server = new Server({
158
+ name: config.name /* 'design-docs' */,
159
+ version: '1.0.0',
160
+ description: config.description /* 'Design System Documentation MCP Server' */
161
+ }, {
162
+ capabilities: {
163
+ tools: Object.fromEntries(toolDefinitions.map(tool => [tool.name.replace('-', '_'), tool]))
164
+ }
165
+ });
166
+ // Initialize database handler
167
+ const dbPath = path.join(__dirname, '../../database/vectors.db');
168
+ this.db = new DatabaseHandler(dbPath, { verbose: this.verbose || this.debug });
169
+ this.initialize();
170
+ }
171
+ async initialize() {
172
+ try {
173
+ this.setupToolHandlers();
174
+ this.initialized = true;
175
+ this.log(`${config.displayName /* 'Design System' */} MCP Server initialized successfully`);
176
+ }
177
+ catch (error) {
178
+ this.log('Failed to initialize SDLMCPServer:', error);
179
+ throw error;
180
+ }
181
+ }
182
+ setupToolHandlers() {
183
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
184
+ tools: toolDefinitions
185
+ }));
186
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
187
+ const { name, arguments: args } = request.params;
188
+ const searchConfig = searchConfigs[name];
189
+ if (!searchConfig) {
190
+ throw new Error(`Unknown tool: ${name}`);
191
+ }
192
+ const { query, limit = 5 } = args;
193
+ try {
194
+ const results = await this.performSearch(searchConfig, query, Math.min(limit, 20));
195
+ const formattedResults = this.formatSearchResults(searchConfig, query, results);
196
+ this.logger.logRetrieval(name, query, limit !== 5 ? { limit } : undefined, {
197
+ resultCount: results.length,
198
+ success: true
199
+ }, formattedResults);
200
+ return { content: [{ type: 'text', text: formattedResults }] };
201
+ }
202
+ catch (error) {
203
+ this.log(`Search error: ${error}`);
204
+ this.logger.logRetrieval(name, query, limit !== 5 ? { limit } : undefined, {
205
+ resultCount: 0,
206
+ success: false,
207
+ error: error instanceof Error ? error.message : 'Unknown error'
208
+ });
209
+ return {
210
+ content: [
211
+ {
212
+ type: 'text',
213
+ text: `
214
+ Search Error
215
+
216
+ Failed to search ${config.designSystem /* 'design system' */} documentation: ${error instanceof Error ? error.message : 'Unknown error'}
217
+
218
+ Possible Issues:
219
+ • API authentication problems
220
+ • Database connection issues
221
+ • Network connectivity problems
222
+
223
+ Try Again: The issue might be temporary. Please retry your search.`.trim()
224
+ }
225
+ ]
226
+ };
227
+ }
228
+ });
229
+ }
230
+ async performSearch(config, query, limit) {
231
+ if (!this.initialized) {
232
+ throw new Error('Server not yet initialized');
233
+ }
234
+ this.log('Generating query embedding...');
235
+ const queryEmbedding = await this.embeddingService.getEmbedding(query);
236
+ this.log('Retrieving documentation chunks...');
237
+ const documents = this.db.getDocumentsByType(config.type);
238
+ this.log(`Calculating similarities for ${documents.length} documents...`);
239
+ const results = documents
240
+ .map(doc => {
241
+ const docEmbedding = JSON.parse(doc.embedding);
242
+ const similarity = this.embeddingService.cosineSimilarity(queryEmbedding, docEmbedding);
243
+ return {
244
+ id: doc.id,
245
+ content: doc.content,
246
+ metadata: {
247
+ chunk_index: doc.chunk_index,
248
+ header_path: doc.header_path || undefined,
249
+ header_level: doc.header_level || undefined,
250
+ category: doc.category || undefined,
251
+ terms: doc.terms || undefined
252
+ },
253
+ similarity
254
+ };
255
+ })
256
+ .sort((a, b) => b.similarity - a.similarity)
257
+ .slice(0, limit);
258
+ this.log(`Returning top ${results.length} results`);
259
+ return results;
260
+ }
261
+ formatSearchResults(config, query, results) {
262
+ if (results.length === 0) {
263
+ return config.noResultsMessage(query);
264
+ }
265
+ let response = config.successMessage(query, results.length);
266
+ results.forEach((result, index) => {
267
+ const percentage = (result.similarity * 100).toFixed(1);
268
+ response += `## Result ${index + 1}\n`;
269
+ response += `**Relevance:** ${percentage}% match\n`;
270
+ if (result.metadata.header_path) {
271
+ response += `**Section:** \`${result.metadata.header_path}\`\n`;
272
+ }
273
+ response += `**Chunk:** ${result.metadata.chunk_index}\n\n`;
274
+ response += `${result.content}\n\n`;
275
+ response += `---\n\n`;
276
+ });
277
+ response += config.resultNote;
278
+ return response;
279
+ }
280
+ log(...args) {
281
+ if (this.verbose || this.debug) {
282
+ console.error(...args);
283
+ }
284
+ }
285
+ async run() {
286
+ while (!this.initialized) {
287
+ await new Promise(resolve => setTimeout(resolve, 100));
288
+ }
289
+ const transport = new StdioServerTransport();
290
+ await this.server.connect(transport);
291
+ this.log(`${config.displayName /* 'Design System' */} MCP Server running on stdio`);
292
+ }
293
+ close() {
294
+ this.log(`Shutting down ${config.displayName /* 'Design System' */} MCP Server...`);
295
+ this.embeddingService.clearEmbeddingCache();
296
+ this.db.close();
297
+ this.log('Server shutdown complete');
298
+ }
299
+ }
300
+ // Main execution logic
301
+ if (import.meta.url === `file://${process.argv[1]}`) {
302
+ const args = process.argv.slice(2);
303
+ const verbose = args.includes('--verbose');
304
+ const debug = args.includes('--debug');
305
+ const log = args.includes('--log');
306
+ const test = args.includes('--test');
307
+ if (verbose)
308
+ console.error('Verbose mode enabled');
309
+ if (debug)
310
+ console.error('Debug mode enabled');
311
+ const server = new SDLMCPServer({ verbose, debug, overrideLogging: log });
312
+ if (test) {
313
+ if (verbose || debug)
314
+ console.log('Test mode - validating server setup...');
315
+ setTimeout(() => {
316
+ if (verbose || debug)
317
+ console.error('Server validation successful');
318
+ server.close();
319
+ process.exit(0);
320
+ }, 3000);
321
+ }
322
+ else {
323
+ server.run().catch(error => {
324
+ if (verbose || debug)
325
+ console.error('Server startup failed:', error);
326
+ process.exit(1);
327
+ });
328
+ // Graceful shutdown handlers
329
+ const shutdown = (signal) => () => {
330
+ if (verbose || debug) {
331
+ console.error('');
332
+ console.error(`Received ${signal} signal...`);
333
+ }
334
+ server.close();
335
+ process.exit(0);
336
+ };
337
+ process.on('SIGINT', shutdown('shutdown'));
338
+ process.on('SIGTERM', shutdown('termination'));
339
+ }
340
+ }
341
+ export { SDLMCPServer };
342
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAyB5B,MAAM,kBAAkB,GAAG,GAAiC,EAAE;IAC5D,MAAM,OAAO,GAAiC;QAC5C,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;YACvB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,MAAM,CAAC,cAAc;YAC3B,WAAW,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,qBAAqB,uBAAuB;YAChF,WAAW,EAAE,sBAAsB,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,4BAA4B,8LAA8L,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,uBAAuB,mJAAmJ,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,oGAAoG,KAAK,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,mIAAmI,KAAK,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,iJAAiJ,KAAK,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,oGAAoG,GAAG;YAC7nC,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAClC;;;+BAGuB,KAAK;;;;;;;;;;6DAW1B,MAAM,CAAC,KAAK,CAAC,sBAAsB;gBACjC,CAAC,CAAC;+BACiB,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,+BAA+B,GAAG;gBACzF,CAAC,CAAC,EACN;;;;EAIN,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,+BAA+B;KACvE,CAAC,IAAI,EAAE;YACN,cAAc,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAC/C,GAAG,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,+BAA+B,eAAe,KAAK,6CAA6C,KAAK,QAAQ;YAC/J,UAAU,EAAE;;;;;;KAMb,CAAC,IAAI,EAAE;SACP;KACF,CAAC;IAEF,4CAA4C;IAC5C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG;YACnC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM,CAAC,kBAAkB;YAC/B,WAAW,EAAE,GAAG,MAAM,CAAC,YAAY,cAAc;YACjD,WAAW,EACT,gFAAgF;gBAChF,MAAM,CAAC,QAAQ,CAAC,0BAA0B;gBAC1C,oGAAoG;YACtG,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAClC;6BACqB,KAAK;;;sDAGoB,MAAM,CAAC,QAAQ,CAAC,0BAA0B;;;;;;;;EAQ9F,MAAM,CAAC,QAAQ,CAAC,0BAA0B;KACvC,CAAC,IAAI,EAAE;YACN,cAAc,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAC/C,KAAK,MAAM,CAAC,YAAY,CAAC,qBAAqB,mCAAmC,KAAK,4BAA4B,KAAK,QAAQ;YACjI,UAAU,EAAE;uDACqC,MAAM,CAAC,QAAQ,CAAC,0BAA0B;;KAE5F,CAAC,IAAI,EAAE;SACP,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAC;AAE3C,MAAM,oBAAoB,GAAG,CAAC,YAA0B,EAAE,EAAE,CAC1D,CAAC;IACC,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,WAAW,EAAE;EACf,YAAY,CAAC,WAAW;;EAExB,YAAY,CAAC,WAAW;;EAExB,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,oDAAoD;;;EAGhG,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,2BAA2B;;;;;;;;;;;;;;;GAerE,CAAC,IAAI,EAAE;IACN,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,YAAY,CAAC,IAAI,KAAK,eAAe;oBACnC,CAAC,CAAC,MAAM,CAAC,KAAK;yBACT,sBAAsB,CAAC,kIAAkI;oBAC9J,CAAC,CAAC,kDAAkD;aACzD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qBAAqB,YAAY,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,0CAA0C;gBAC5I,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,EAAE;aACZ;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACF,CAAU,CAAC;AAEd,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAE/E,MAAM,YAAY;IACR,MAAM,CAAS;IACf,EAAE,CAAkB;IACpB,WAAW,GAAY,KAAK,CAAC;IAC7B,gBAAgB,CAAmB;IACnC,OAAO,GAAY,KAAK,CAAC;IACzB,KAAK,GAAY,KAAK,CAAC;IACvB,MAAM,CAAsB;IAEpC,YAAY,OAA2E;QACrF,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,CAAC;QACxE,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB;YACrC,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,8CAA8C;SAC/E,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aAC5F;SACF,CACF,CAAC;QAEF,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACjE,IAAI,CAAC,EAAE,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE/E,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,qBAAqB,sCAAsC,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACnE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YACjD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAEzC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAyC,CAAC;YAEvE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEhF,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,IAAI,EACJ,KAAK,EACL,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EACnC;oBACE,WAAW,EAAE,OAAO,CAAC,MAAM;oBAC3B,OAAO,EAAE,IAAI;iBACd,EACD,gBAAgB,CACjB,CAAC;gBAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACjE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC;gBAEnC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;oBACzE,WAAW,EAAE,CAAC;oBACd,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE;;;mBAGD,MAAM,CAAC,YAAY,CAAC,qBAAqB,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;;;;;;;mEAOpE,CAAC,IAAI,EAAE;yBAC7D;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAoB,EAAE,KAAa,EAAE,KAAa;QAC5E,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,GAAG,CAAC,gCAAgC,SAAS,CAAC,MAAM,eAAe,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,SAAS;aACtB,GAAG,CAAC,GAAG,CAAC,EAAE;YACT,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAExF,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,QAAQ,EAAE;oBACR,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;oBACzC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;oBAC3C,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;oBACnC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;iBAC9B;gBACD,UAAU;aACX,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnB,IAAI,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,mBAAmB,CAAC,MAAoB,EAAE,KAAa,EAAE,OAAuB;QACtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxD,QAAQ,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,CAAC;YACvC,QAAQ,IAAI,kBAAkB,UAAU,WAAW,CAAC;YAEpD,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAChC,QAAQ,IAAI,kBAAkB,MAAM,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC;YAClE,CAAC;YAED,QAAQ,IAAI,cAAc,MAAM,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC;YAC5D,QAAQ,IAAI,GAAG,MAAM,CAAC,OAAO,MAAM,CAAC;YACpC,QAAQ,IAAI,SAAS,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,GAAG,CAAC,GAAG,IAAe;QAC5B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,qBAAqB,8BAA8B,CAAC,CAAC;IACtF,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,CAAC,qBAAqB,gBAAgB,CAAC,CAAC;QACpF,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACvC,CAAC;CACF;AAED,uBAAuB;AACvB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErC,IAAI,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACnD,IAAI,KAAK;QAAE,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1E,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,OAAO,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAC5E,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,OAAO,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACpE,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,OAAO,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,EAAE;YACxC,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,YAAY,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const setPassword: (service: string, account: string, password: string) => Promise<void>;
2
+ export declare const getPassword: (service: string, account: string) => Promise<string | null>;
3
+ export declare const deletePassword: (service: string, account: string) => Promise<boolean>;
4
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/mcp/keys.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,WAAW,GAAU,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,UAAU,MAAM,kBAEnF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,SAAS,MAAM,EAAE,SAAS,MAAM,2BAEjE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,SAAS,MAAM,EAAE,SAAS,MAAM,qBAEpE,CAAC"}
@@ -0,0 +1,25 @@
1
+ let keytar;
2
+ try {
3
+ keytar = (await import('keytar')).default;
4
+ }
5
+ catch {
6
+ // Fallback for environments where keytar is not available (e.g., CI)
7
+ console.warn('keytar not available, using fallback implementation');
8
+ keytar = {
9
+ setPassword: async () => {
10
+ throw new Error('Keytar not available - credential storage disabled');
11
+ },
12
+ getPassword: async () => null,
13
+ deletePassword: async () => true
14
+ };
15
+ }
16
+ export const setPassword = async (service, account, password) => {
17
+ await keytar.setPassword(service, account, password);
18
+ };
19
+ export const getPassword = async (service, account) => {
20
+ return await keytar.getPassword(service, account);
21
+ };
22
+ export const deletePassword = async (service, account) => {
23
+ return await keytar.deletePassword(service, account);
24
+ };
25
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/mcp/keys.ts"],"names":[],"mappings":"AAUA,IAAI,MAAuB,CAAC;AAE5B,IAAI,CAAC;IACH,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5C,CAAC;AAAC,MAAM,CAAC;IACP,qEAAqE;IACrE,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACpE,MAAM,GAAG;QACP,WAAW,EAAE,KAAK,IAAI,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC7B,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,QAAgB,EAAE,EAAE;IACtF,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,EAAE;IACpE,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,EAAE;IACvE,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ export declare class ObservabilityLogger {
2
+ private logDir;
3
+ private sessionLogPath;
4
+ private enabled;
5
+ private debug;
6
+ constructor(hasDebugFlag?: boolean, override?: boolean);
7
+ private generateSessionFileName;
8
+ private initializeLogFile;
9
+ logRetrieval(toolName: string, query: string, params: Record<string, unknown> | undefined, response: {
10
+ resultCount: number;
11
+ success: boolean;
12
+ error?: string;
13
+ }, results?: string): Promise<void>;
14
+ getLogDir(): string;
15
+ getSessionLogPath(): string;
16
+ isEnabled(): boolean;
17
+ static getLogDir(): string;
18
+ static listSessions(): string[];
19
+ static getSessionPath(fileName: string): string;
20
+ static readSessionLog(fileName: string): string;
21
+ static parseSessionFileName(fileName: string): Date | null;
22
+ static formatSessionDate(fileName: string): string;
23
+ }
24
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/mcp/logger.ts"],"names":[],"mappings":"AAWA,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAU;gBAEX,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO;IAgCtD,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,iBAAiB;IAmBnB,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,QAAQ,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACnE,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAuChB,SAAS,IAAI,MAAM;IAInB,iBAAiB,IAAI,MAAM;IAI3B,SAAS,IAAI,OAAO;IAIpB,MAAM,CAAC,SAAS,IAAI,MAAM;IAa1B,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE;IAkB/B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI/C,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAS/C,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAe1D,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CA0BnD"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Copyright (c) Siemens 2016 - 2025
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { homedir, platform } from 'os';
8
+ import { loadConfig } from './config.js';
9
+ const config = loadConfig();
10
+ export class ObservabilityLogger {
11
+ logDir;
12
+ sessionLogPath;
13
+ enabled;
14
+ debug;
15
+ constructor(hasDebugFlag, override) {
16
+ this.debug = hasDebugFlag || false;
17
+ this.enabled = override === true || ((config.observabilityLogging || this.debug) && override !== false) || false;
18
+ if (!this.enabled) {
19
+ this.logDir = '';
20
+ this.sessionLogPath = '';
21
+ return;
22
+ }
23
+ const binName = config.binName;
24
+ this.logDir = path.join(homedir(), `.${binName}`);
25
+ try {
26
+ if (!fs.existsSync(this.logDir)) {
27
+ fs.mkdirSync(this.logDir, { recursive: true });
28
+ }
29
+ const sessionFileName = this.generateSessionFileName();
30
+ this.sessionLogPath = path.join(this.logDir, sessionFileName);
31
+ this.initializeLogFile();
32
+ }
33
+ catch (error) {
34
+ if (this.debug) {
35
+ console.error('Failed to initialize observabilityLogging logger:', error);
36
+ }
37
+ this.enabled = false;
38
+ this.logDir = '';
39
+ this.sessionLogPath = '';
40
+ }
41
+ }
42
+ generateSessionFileName() {
43
+ const now = new Date();
44
+ const year = now.getFullYear();
45
+ const month = String(now.getMonth() + 1).padStart(2, '0');
46
+ const day = String(now.getDate()).padStart(2, '0');
47
+ const hours = String(now.getHours()).padStart(2, '0');
48
+ const minutes = String(now.getMinutes()).padStart(2, '0');
49
+ const seconds = String(now.getSeconds()).padStart(2, '0');
50
+ return `session_${year}-${month}-${day}_${hours}-${minutes}-${seconds}.log`;
51
+ }
52
+ initializeLogFile() {
53
+ if (!this.enabled || !this.sessionLogPath)
54
+ return;
55
+ try {
56
+ const header = `MCP Server Session Log
57
+ ========================================
58
+ Started: ${new Date().toISOString()}
59
+ Config: ${config.displayName}
60
+ ========================================
61
+
62
+ `;
63
+ fs.writeFileSync(this.sessionLogPath, header, 'utf8');
64
+ }
65
+ catch (error) {
66
+ if (this.debug) {
67
+ console.error('Failed to initialize log file:', error);
68
+ }
69
+ }
70
+ }
71
+ async logRetrieval(toolName, query, params, response, results) {
72
+ if (!this.enabled || !this.sessionLogPath)
73
+ return;
74
+ setImmediate(() => {
75
+ try {
76
+ const timestamp = new Date().toISOString();
77
+ const date = new Date();
78
+ const timeStr = `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
79
+ let logEntry = `[${timeStr}] ${toolName}\n`;
80
+ logEntry += `Query: ${query}\n`;
81
+ if (params && Object.keys(params).length > 0) {
82
+ logEntry += `Params: ${JSON.stringify(params)}\n`;
83
+ }
84
+ logEntry += `Result: ${response.success ? '✓' : '✗'} ${response.resultCount} result(s)`;
85
+ if (response.error) {
86
+ logEntry += ` - Error: ${response.error}`;
87
+ }
88
+ logEntry += '\n';
89
+ logEntry += `Timestamp: ${timestamp}\n`;
90
+ if (results) {
91
+ logEntry += '\nResults:\n';
92
+ logEntry += results + '\n';
93
+ }
94
+ logEntry += '----------------------------------------\n\n';
95
+ fs.appendFileSync(this.sessionLogPath, logEntry, 'utf8');
96
+ }
97
+ catch (error) {
98
+ if (this.debug) {
99
+ console.error('Failed to log retrieval:', error);
100
+ }
101
+ }
102
+ });
103
+ }
104
+ getLogDir() {
105
+ return this.logDir;
106
+ }
107
+ getSessionLogPath() {
108
+ return this.sessionLogPath;
109
+ }
110
+ isEnabled() {
111
+ return this.enabled;
112
+ }
113
+ static getLogDir() {
114
+ const binName = config.binName;
115
+ if (platform() === 'win32') {
116
+ const localAppData = process.env.LOCALAPPDATA;
117
+ if (localAppData) {
118
+ return path.join(localAppData, binName);
119
+ }
120
+ }
121
+ return path.join(homedir(), `.${binName}`);
122
+ }
123
+ static listSessions() {
124
+ const logDir = ObservabilityLogger.getLogDir();
125
+ try {
126
+ if (!fs.existsSync(logDir)) {
127
+ return [];
128
+ }
129
+ const files = fs.readdirSync(logDir);
130
+ return files
131
+ .filter(file => file.startsWith('session_') && file.endsWith('.log'))
132
+ .sort()
133
+ .reverse();
134
+ }
135
+ catch {
136
+ return [];
137
+ }
138
+ }
139
+ static getSessionPath(fileName) {
140
+ return path.join(ObservabilityLogger.getLogDir(), fileName);
141
+ }
142
+ static readSessionLog(fileName) {
143
+ const filePath = ObservabilityLogger.getSessionPath(fileName);
144
+ try {
145
+ return fs.readFileSync(filePath, 'utf8');
146
+ }
147
+ catch (error) {
148
+ throw new Error(`Failed to read log file: ${error}`);
149
+ }
150
+ }
151
+ static parseSessionFileName(fileName) {
152
+ const match = fileName.match(/session_(\d{4})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2})\.log/);
153
+ if (!match)
154
+ return null;
155
+ const [, year, month, day, hours, minutes, seconds] = match;
156
+ return new Date(parseInt(year), parseInt(month) - 1, parseInt(day), parseInt(hours), parseInt(minutes), parseInt(seconds));
157
+ }
158
+ static formatSessionDate(fileName) {
159
+ const date = ObservabilityLogger.parseSessionFileName(fileName);
160
+ if (!date)
161
+ return fileName;
162
+ const now = new Date();
163
+ const diffMs = now.getTime() - date.getTime();
164
+ const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
165
+ const dateStr = date.toLocaleDateString('en-UK', {
166
+ year: 'numeric',
167
+ month: 'short',
168
+ day: 'numeric'
169
+ });
170
+ const timeStr = `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
171
+ if (diffDays === 0) {
172
+ return `Today at ${timeStr}`;
173
+ }
174
+ else if (diffDays === 1) {
175
+ return `Yesterday at ${timeStr}`;
176
+ }
177
+ else if (diffDays < 7) {
178
+ return `${diffDays} days ago (${dateStr} ${timeStr})`;
179
+ }
180
+ else {
181
+ return `${dateStr} ${timeStr}`;
182
+ }
183
+ }
184
+ }
185
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/mcp/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const prompt: (promptText: string, type?: string, initial?: string) => Promise<any>;
2
+ export declare const confirmPrompt: (message: string, initial?: boolean) => Promise<any>;
3
+ export declare const selectPrompt: (message: string, choices: {
4
+ title: string;
5
+ value: string;
6
+ description?: string;
7
+ }[], initial?: number) => Promise<any>;
8
+ export declare const multiSelectPrompt: (message: string, choices: {
9
+ title: string;
10
+ value: string;
11
+ description?: string;
12
+ selected?: boolean;
13
+ }[]) => Promise<any>;
14
+ export declare const passwordPrompt: (message: string, required?: boolean) => Promise<any>;
15
+ export declare const showSuccess: (message: string) => void;
16
+ export declare const showError: (message: string) => void;
17
+ export declare const showWarning: (message: string) => void;
18
+ export declare const showInfo: (message: string) => void;
19
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/mcp/prompt.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,MAAM,GAAU,YAAY,MAAM,EAAE,OAAM,MAAe,EAAE,UAAU,MAAM,iBAyBvF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,SAAS,MAAM,EAAE,UAAS,OAAc,iBAa3E,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACjE,UAAS,MAAU,iBAgBpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EACf,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,iBAgBtF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,SAAS,MAAM,EAAE,kBAAe,iBAapE,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,SAE1C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,SAExC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,SAE1C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,SAAS,MAAM,SAEvC,CAAC"}