@eui/mcp 1.0.3

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 (191) hide show
  1. package/README.md +846 -0
  2. package/dist/config/index.d.ts +6 -0
  3. package/dist/config/index.d.ts.map +1 -0
  4. package/dist/config/index.js +6 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/config/loader.d.ts +27 -0
  7. package/dist/config/loader.d.ts.map +1 -0
  8. package/dist/config/loader.js +224 -0
  9. package/dist/config/loader.js.map +1 -0
  10. package/dist/config/schema.d.ts +171 -0
  11. package/dist/config/schema.d.ts.map +1 -0
  12. package/dist/config/schema.js +100 -0
  13. package/dist/config/schema.js.map +1 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +45 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/loader/cache-manager.d.ts +74 -0
  19. package/dist/loader/cache-manager.d.ts.map +1 -0
  20. package/dist/loader/cache-manager.js +107 -0
  21. package/dist/loader/cache-manager.js.map +1 -0
  22. package/dist/loader/documentation-loader.d.ts +57 -0
  23. package/dist/loader/documentation-loader.d.ts.map +1 -0
  24. package/dist/loader/documentation-loader.js +81 -0
  25. package/dist/loader/documentation-loader.js.map +1 -0
  26. package/dist/loader/documentation-source.d.ts +37 -0
  27. package/dist/loader/documentation-source.d.ts.map +1 -0
  28. package/dist/loader/documentation-source.js +2 -0
  29. package/dist/loader/documentation-source.js.map +1 -0
  30. package/dist/loader/errors.d.ts +34 -0
  31. package/dist/loader/errors.d.ts.map +1 -0
  32. package/dist/loader/errors.js +65 -0
  33. package/dist/loader/errors.js.map +1 -0
  34. package/dist/loader/http-client.d.ts +43 -0
  35. package/dist/loader/http-client.d.ts.map +1 -0
  36. package/dist/loader/http-client.js +144 -0
  37. package/dist/loader/http-client.js.map +1 -0
  38. package/dist/loader/index.d.ts +6 -0
  39. package/dist/loader/index.d.ts.map +1 -0
  40. package/dist/loader/index.js +5 -0
  41. package/dist/loader/index.js.map +1 -0
  42. package/dist/loader/local-documentation-source.d.ts +62 -0
  43. package/dist/loader/local-documentation-source.d.ts.map +1 -0
  44. package/dist/loader/local-documentation-source.js +190 -0
  45. package/dist/loader/local-documentation-source.js.map +1 -0
  46. package/dist/loader/path-type-detector.d.ts +34 -0
  47. package/dist/loader/path-type-detector.d.ts.map +1 -0
  48. package/dist/loader/path-type-detector.js +78 -0
  49. package/dist/loader/path-type-detector.js.map +1 -0
  50. package/dist/loader/remote-documentation-source.d.ts +112 -0
  51. package/dist/loader/remote-documentation-source.d.ts.map +1 -0
  52. package/dist/loader/remote-documentation-source.js +252 -0
  53. package/dist/loader/remote-documentation-source.js.map +1 -0
  54. package/dist/main.d.ts +3 -0
  55. package/dist/main.d.ts.map +1 -0
  56. package/dist/main.js +211 -0
  57. package/dist/main.js.map +1 -0
  58. package/dist/mcp/index.d.ts +5 -0
  59. package/dist/mcp/index.d.ts.map +1 -0
  60. package/dist/mcp/index.js +5 -0
  61. package/dist/mcp/index.js.map +1 -0
  62. package/dist/mcp/server.d.ts +65 -0
  63. package/dist/mcp/server.d.ts.map +1 -0
  64. package/dist/mcp/server.js +224 -0
  65. package/dist/mcp/server.js.map +1 -0
  66. package/dist/publish/index.d.ts +8 -0
  67. package/dist/publish/index.d.ts.map +1 -0
  68. package/dist/publish/index.js +8 -0
  69. package/dist/publish/index.js.map +1 -0
  70. package/dist/publish/publish-utils.d.ts +74 -0
  71. package/dist/publish/publish-utils.d.ts.map +1 -0
  72. package/dist/publish/publish-utils.js +170 -0
  73. package/dist/publish/publish-utils.js.map +1 -0
  74. package/dist/query/component-query.d.ts +33 -0
  75. package/dist/query/component-query.d.ts.map +1 -0
  76. package/dist/query/component-query.js +63 -0
  77. package/dist/query/component-query.js.map +1 -0
  78. package/dist/query/index-builder.d.ts +79 -0
  79. package/dist/query/index-builder.d.ts.map +1 -0
  80. package/dist/query/index-builder.js +217 -0
  81. package/dist/query/index-builder.js.map +1 -0
  82. package/dist/query/index.d.ts +5 -0
  83. package/dist/query/index.d.ts.map +1 -0
  84. package/dist/query/index.js +6 -0
  85. package/dist/query/index.js.map +1 -0
  86. package/dist/query/result-formatter.d.ts +108 -0
  87. package/dist/query/result-formatter.d.ts.map +1 -0
  88. package/dist/query/result-formatter.js +165 -0
  89. package/dist/query/result-formatter.js.map +1 -0
  90. package/dist/query/search-engine.d.ts +54 -0
  91. package/dist/query/search-engine.d.ts.map +1 -0
  92. package/dist/query/search-engine.js +178 -0
  93. package/dist/query/search-engine.js.map +1 -0
  94. package/dist/test-error.ts +1 -0
  95. package/dist/tools/get-component-docs.d.ts +43 -0
  96. package/dist/tools/get-component-docs.d.ts.map +1 -0
  97. package/dist/tools/get-component-docs.js +55 -0
  98. package/dist/tools/get-component-docs.js.map +1 -0
  99. package/dist/tools/get-component-examples.d.ts +45 -0
  100. package/dist/tools/get-component-examples.d.ts.map +1 -0
  101. package/dist/tools/get-component-examples.js +56 -0
  102. package/dist/tools/get-component-examples.js.map +1 -0
  103. package/dist/tools/get-component-inputs.d.ts +44 -0
  104. package/dist/tools/get-component-inputs.d.ts.map +1 -0
  105. package/dist/tools/get-component-inputs.js +55 -0
  106. package/dist/tools/get-component-inputs.js.map +1 -0
  107. package/dist/tools/get-component-outputs.d.ts +44 -0
  108. package/dist/tools/get-component-outputs.d.ts.map +1 -0
  109. package/dist/tools/get-component-outputs.js +55 -0
  110. package/dist/tools/get-component-outputs.js.map +1 -0
  111. package/dist/tools/index.d.ts +7 -0
  112. package/dist/tools/index.d.ts.map +1 -0
  113. package/dist/tools/index.js +8 -0
  114. package/dist/tools/index.js.map +1 -0
  115. package/dist/tools/list-components.d.ts +69 -0
  116. package/dist/tools/list-components.d.ts.map +1 -0
  117. package/dist/tools/list-components.js +84 -0
  118. package/dist/tools/list-components.js.map +1 -0
  119. package/dist/tools/search-components.d.ts +69 -0
  120. package/dist/tools/search-components.d.ts.map +1 -0
  121. package/dist/tools/search-components.js +98 -0
  122. package/dist/tools/search-components.js.map +1 -0
  123. package/dist/types/compodoc.d.ts +261 -0
  124. package/dist/types/compodoc.d.ts.map +1 -0
  125. package/dist/types/compodoc.js +5 -0
  126. package/dist/types/compodoc.js.map +1 -0
  127. package/dist/types/index.d.ts +5 -0
  128. package/dist/types/index.d.ts.map +1 -0
  129. package/dist/types/index.js +5 -0
  130. package/dist/types/index.js.map +1 -0
  131. package/dist/utils/circuit-breaker.d.ts +91 -0
  132. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  133. package/dist/utils/circuit-breaker.js +186 -0
  134. package/dist/utils/circuit-breaker.js.map +1 -0
  135. package/dist/utils/credential-masking.d.ts +90 -0
  136. package/dist/utils/credential-masking.d.ts.map +1 -0
  137. package/dist/utils/credential-masking.js +202 -0
  138. package/dist/utils/credential-masking.js.map +1 -0
  139. package/dist/utils/error-handler.d.ts +68 -0
  140. package/dist/utils/error-handler.d.ts.map +1 -0
  141. package/dist/utils/error-handler.js +184 -0
  142. package/dist/utils/error-handler.js.map +1 -0
  143. package/dist/utils/errors.d.ts +156 -0
  144. package/dist/utils/errors.d.ts.map +1 -0
  145. package/dist/utils/errors.js +242 -0
  146. package/dist/utils/errors.js.map +1 -0
  147. package/dist/utils/index.d.ts +10 -0
  148. package/dist/utils/index.d.ts.map +1 -0
  149. package/dist/utils/index.js +16 -0
  150. package/dist/utils/index.js.map +1 -0
  151. package/dist/utils/logger.d.ts +76 -0
  152. package/dist/utils/logger.d.ts.map +1 -0
  153. package/dist/utils/logger.js +150 -0
  154. package/dist/utils/logger.js.map +1 -0
  155. package/dist/utils/retry.d.ts +19 -0
  156. package/dist/utils/retry.d.ts.map +1 -0
  157. package/dist/utils/retry.js +81 -0
  158. package/dist/utils/retry.js.map +1 -0
  159. package/dist/version/changelog-file-utils.d.ts +69 -0
  160. package/dist/version/changelog-file-utils.d.ts.map +1 -0
  161. package/dist/version/changelog-file-utils.js +161 -0
  162. package/dist/version/changelog-file-utils.js.map +1 -0
  163. package/dist/version/changelog-utils.d.ts +98 -0
  164. package/dist/version/changelog-utils.d.ts.map +1 -0
  165. package/dist/version/changelog-utils.js +198 -0
  166. package/dist/version/changelog-utils.js.map +1 -0
  167. package/dist/version/dry-run-utils.d.ts +108 -0
  168. package/dist/version/dry-run-utils.d.ts.map +1 -0
  169. package/dist/version/dry-run-utils.js +126 -0
  170. package/dist/version/dry-run-utils.js.map +1 -0
  171. package/dist/version/git-tag-utils.d.ts +50 -0
  172. package/dist/version/git-tag-utils.d.ts.map +1 -0
  173. package/dist/version/git-tag-utils.js +66 -0
  174. package/dist/version/git-tag-utils.js.map +1 -0
  175. package/dist/version/index.d.ts +11 -0
  176. package/dist/version/index.d.ts.map +1 -0
  177. package/dist/version/index.js +11 -0
  178. package/dist/version/index.js.map +1 -0
  179. package/dist/version/release-utils.d.ts +94 -0
  180. package/dist/version/release-utils.d.ts.map +1 -0
  181. package/dist/version/release-utils.js +170 -0
  182. package/dist/version/release-utils.js.map +1 -0
  183. package/dist/version/rollback-utils.d.ts +47 -0
  184. package/dist/version/rollback-utils.d.ts.map +1 -0
  185. package/dist/version/rollback-utils.js +73 -0
  186. package/dist/version/rollback-utils.js.map +1 -0
  187. package/dist/version/version-manager.d.ts +98 -0
  188. package/dist/version/version-manager.d.ts.map +1 -0
  189. package/dist/version/version-manager.js +158 -0
  190. package/dist/version/version-manager.js.map +1 -0
  191. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-documentation-source.d.ts","sourceRoot":"","sources":["../../src/loader/remote-documentation-source.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK7D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;;;;GASG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,WAAW,CAAC,CAAwB;IAC5C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAC,CAAwC;IACjE,OAAO,CAAC,eAAe,CAAC,CAAyB;gBAErC,OAAO,EAAE,mBAAmB;IAmBxC;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAIjC;;;;OAIG;IACH,eAAe,IAAI,IAAI;IAcvB;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC;;;;OAIG;IACH,cAAc,IAAI,qBAAqB,GAAG,SAAS;IAInD;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;;;;OAOG;YACW,IAAI;IA8DlB;;;;;OAKG;YACW,kBAAkB;IAgEhC;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IASjB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;CAkB1B"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Remote documentation source - loads documentation from HTTP/HTTPS URLs
3
+ */
4
+ import { HttpClient } from './http-client.js';
5
+ import { CacheManager } from './cache-manager.js';
6
+ import { HttpError, ParseError } from './errors.js';
7
+ /**
8
+ * RemoteDocumentationSource class
9
+ * Implements DocumentationSource interface for remote HTTP/HTTPS sources
10
+ *
11
+ * Features:
12
+ * - Fetches documentation from remote URLs
13
+ * - Caches responses with ETag/Last-Modified headers
14
+ * - Polls for updates using conditional requests
15
+ * - Handles network errors with retry logic
16
+ */
17
+ export class RemoteDocumentationSource {
18
+ url;
19
+ httpClient;
20
+ cacheManager;
21
+ pollingTimer;
22
+ currentData;
23
+ pollingInterval;
24
+ onReloadCallback;
25
+ onErrorCallback;
26
+ constructor(options) {
27
+ this.url = options.url;
28
+ this.pollingInterval = options.pollingInterval;
29
+ this.onReloadCallback = options.onReload;
30
+ this.onErrorCallback = options.onError;
31
+ // Initialize HTTP client with retry logic
32
+ const httpClientOptions = {
33
+ timeout: options.timeout,
34
+ maxRetries: options.maxRetries,
35
+ retryDelay: 1000, // Base delay for exponential backoff
36
+ userAgent: 'DocumentationLoader/1.0',
37
+ };
38
+ this.httpClient = new HttpClient(httpClientOptions);
39
+ // Initialize cache manager
40
+ this.cacheManager = new CacheManager();
41
+ }
42
+ /**
43
+ * Load documentation from the remote URL
44
+ *
45
+ * @returns Promise resolving to LoadResult with success status and data or error
46
+ */
47
+ async load() {
48
+ return this.fetchDocumentation();
49
+ }
50
+ /**
51
+ * Start monitoring for changes by polling the remote URL
52
+ *
53
+ * Uses setInterval to periodically check for updates using conditional requests
54
+ */
55
+ startMonitoring() {
56
+ // Don't start if already monitoring
57
+ if (this.pollingTimer) {
58
+ return;
59
+ }
60
+ // Start polling at the configured interval
61
+ this.pollingTimer = setInterval(() => {
62
+ void this.poll();
63
+ }, this.pollingInterval);
64
+ console.log(`Started polling ${this.url} every ${this.pollingInterval}ms`);
65
+ }
66
+ /**
67
+ * Stop monitoring for changes
68
+ *
69
+ * Clears the polling interval
70
+ *
71
+ * @returns Promise that resolves when monitoring has been stopped
72
+ */
73
+ async stopMonitoring() {
74
+ if (this.pollingTimer) {
75
+ clearInterval(this.pollingTimer);
76
+ this.pollingTimer = undefined;
77
+ console.log(`Stopped polling ${this.url}`);
78
+ }
79
+ }
80
+ /**
81
+ * Get currently loaded documentation data
82
+ *
83
+ * @returns The currently loaded CompodocDocumentation or undefined if not loaded
84
+ */
85
+ getCurrentData() {
86
+ return this.currentData;
87
+ }
88
+ /**
89
+ * Clean up resources and dispose of the source
90
+ *
91
+ * Stops monitoring and clears cached data
92
+ *
93
+ * @returns Promise that resolves when cleanup is complete
94
+ */
95
+ async dispose() {
96
+ await this.stopMonitoring();
97
+ this.cacheManager.clear(this.url);
98
+ this.currentData = undefined;
99
+ this.onReloadCallback = undefined;
100
+ this.onErrorCallback = undefined;
101
+ }
102
+ /**
103
+ * Poll for updates using conditional requests
104
+ *
105
+ * Uses If-None-Match (ETag) and If-Modified-Since (Last-Modified) headers
106
+ * to minimize bandwidth. If the server returns 304 Not Modified, uses cached data.
107
+ *
108
+ * @private
109
+ */
110
+ async poll() {
111
+ try {
112
+ console.log(`Polling ${this.url} for updates...`);
113
+ // Get conditional headers from cache
114
+ const conditionalHeaders = this.cacheManager.getConditionalHeaders(this.url);
115
+ // Fetch with conditional headers
116
+ const response = await this.httpClient.fetch(this.url, conditionalHeaders);
117
+ // Handle 304 Not Modified - no changes
118
+ if (response.status === 304) {
119
+ console.log(`No changes detected (304 Not Modified)`);
120
+ return;
121
+ }
122
+ // Handle successful response with new content
123
+ if (response.status === 200) {
124
+ // Parse JSON
125
+ const data = this.parseJson(response.data);
126
+ // Validate structure
127
+ const validationError = this.validateStructure(data);
128
+ if (validationError) {
129
+ throw new ParseError(validationError, response.data);
130
+ }
131
+ // Update cache
132
+ this.cacheManager.set(this.url, data, response.headers);
133
+ // Update current data
134
+ this.currentData = data;
135
+ console.log(`Documentation updated from ${this.url}`);
136
+ // Notify via callback
137
+ if (this.onReloadCallback) {
138
+ this.onReloadCallback(data);
139
+ }
140
+ return;
141
+ }
142
+ // Handle error status codes
143
+ throw new HttpError(`HTTP ${response.status}: ${response.statusText}`, this.url, response.status, response.statusText);
144
+ }
145
+ catch (error) {
146
+ // Log error but continue using cached data
147
+ const errorMessage = error instanceof Error ? error.message : String(error);
148
+ console.error(`Polling error for ${this.url}:`, errorMessage);
149
+ // Notify via callback
150
+ if (this.onErrorCallback) {
151
+ this.onErrorCallback(error instanceof Error ? error : new Error(errorMessage));
152
+ }
153
+ }
154
+ }
155
+ /**
156
+ * Fetch and parse documentation from the remote URL
157
+ *
158
+ * @private
159
+ * @returns Promise resolving to LoadResult
160
+ */
161
+ async fetchDocumentation() {
162
+ try {
163
+ // Check cache first
164
+ const cachedEntry = this.cacheManager.get(this.url);
165
+ const conditionalHeaders = cachedEntry ? this.cacheManager.getConditionalHeaders(this.url) : undefined;
166
+ // Fetch from URL
167
+ const response = await this.httpClient.fetch(this.url, conditionalHeaders);
168
+ // Handle 304 Not Modified - use cached data
169
+ if (response.status === 304 && cachedEntry) {
170
+ console.log(`Using cached documentation (304 Not Modified)`);
171
+ this.currentData = cachedEntry.data;
172
+ return {
173
+ success: true,
174
+ data: cachedEntry.data,
175
+ };
176
+ }
177
+ // Handle non-200 status codes
178
+ if (response.status !== 200) {
179
+ const error = new HttpError(`HTTP ${response.status}: ${response.statusText}`, this.url, response.status, response.statusText);
180
+ return {
181
+ success: false,
182
+ error: `${error.message} (URL: ${this.url})`,
183
+ };
184
+ }
185
+ // Parse JSON
186
+ const data = this.parseJson(response.data);
187
+ // Validate structure
188
+ const validationError = this.validateStructure(data);
189
+ if (validationError) {
190
+ return {
191
+ success: false,
192
+ error: validationError,
193
+ };
194
+ }
195
+ // Update cache
196
+ this.cacheManager.set(this.url, data, response.headers);
197
+ // Store current data
198
+ this.currentData = data;
199
+ return {
200
+ success: true,
201
+ data,
202
+ };
203
+ }
204
+ catch (error) {
205
+ const errorMessage = error instanceof Error ? error.message : String(error);
206
+ return {
207
+ success: false,
208
+ error: `Failed to fetch documentation from ${this.url}: ${errorMessage}`,
209
+ };
210
+ }
211
+ }
212
+ /**
213
+ * Parse JSON string into CompodocDocumentation
214
+ *
215
+ * @private
216
+ * @param content - JSON string to parse
217
+ * @returns Parsed CompodocDocumentation object
218
+ * @throws ParseError if JSON is invalid
219
+ */
220
+ parseJson(content) {
221
+ try {
222
+ return JSON.parse(content);
223
+ }
224
+ catch (error) {
225
+ const errorMessage = error instanceof Error ? error.message : String(error);
226
+ throw new ParseError(`Failed to parse JSON: ${errorMessage}`, content);
227
+ }
228
+ }
229
+ /**
230
+ * Validate the basic structure of the documentation
231
+ *
232
+ * @private
233
+ * @param data - Data to validate
234
+ * @returns Error message if validation fails, null otherwise
235
+ */
236
+ validateStructure(data) {
237
+ if (!data || typeof data !== 'object') {
238
+ return 'Documentation must be an object';
239
+ }
240
+ const doc = data;
241
+ // Check for required top-level arrays
242
+ const requiredArrays = ['pipes', 'components', 'directives', 'injectables', 'interfaces', 'classes', 'modules'];
243
+ for (const key of requiredArrays) {
244
+ const value = doc[key];
245
+ if (value !== undefined && !Array.isArray(value)) {
246
+ return `${key} must be an array`;
247
+ }
248
+ }
249
+ return null;
250
+ }
251
+ }
252
+ //# sourceMappingURL=remote-documentation-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-documentation-source.js","sourceRoot":"","sources":["../../src/loader/remote-documentation-source.ts"],"names":[],"mappings":"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"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
package/dist/main.js ADDED
@@ -0,0 +1,211 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main entry point for EUI Compodoc MCP Server
4
+ * Initializes configuration, loads documentation, and starts the MCP server
5
+ */
6
+ import { loadConfig } from './config/index.js';
7
+ import { DocumentationLoader } from './loader/index.js';
8
+ import { IndexBuilder } from './query/index-builder.js';
9
+ import { CompodocMcpServer } from './mcp/index.js';
10
+ import { initLogger, getLogger } from './utils/index.js';
11
+ /**
12
+ * Main application state
13
+ */
14
+ let server = null;
15
+ let loader = null;
16
+ let isShuttingDown = false;
17
+ /**
18
+ * Main application entry point
19
+ */
20
+ async function main() {
21
+ try {
22
+ // Load configuration
23
+ const configResult = loadConfig();
24
+ if (!configResult.success || !configResult.config) {
25
+ console.error('Failed to load configuration');
26
+ if (configResult.errors) {
27
+ configResult.errors.forEach((error) => console.error(` - ${error}`));
28
+ }
29
+ process.exit(1);
30
+ }
31
+ const config = configResult.config;
32
+ // Initialize logger
33
+ const logger = initLogger({
34
+ level: config.logging.level,
35
+ format: config.logging.format,
36
+ });
37
+ logger.info('Starting EUI Compodoc MCP Server', {
38
+ version: config.server.version,
39
+ documentationPath: config.documentation.path,
40
+ });
41
+ // Load documentation
42
+ logger.info('Loading documentation...', {
43
+ path: config.documentation.path,
44
+ });
45
+ loader = new DocumentationLoader({
46
+ path: config.documentation.path,
47
+ watchForChanges: config.documentation.watchForChanges,
48
+ reloadDebounce: config.documentation.reloadDebounce,
49
+ onReload: handleDocumentationReload,
50
+ onError: handleDocumentationError,
51
+ });
52
+ const loadResult = await loader.load();
53
+ if (!loadResult.success || !loadResult.data) {
54
+ logger.error('Failed to load documentation', undefined, {
55
+ error: loadResult.error,
56
+ });
57
+ process.exit(1);
58
+ }
59
+ logger.info('Documentation loaded successfully', {
60
+ path: config.documentation.path,
61
+ });
62
+ // Build index
63
+ logger.info('Building component index...');
64
+ const indexBuilder = new IndexBuilder();
65
+ let index;
66
+ try {
67
+ index = indexBuilder.build(loadResult.data);
68
+ const stats = indexBuilder.getStatistics(index);
69
+ logger.info('Index built successfully', {
70
+ totalCount: stats.totalCount,
71
+ components: stats.componentCount,
72
+ directives: stats.directiveCount,
73
+ pipes: stats.pipeCount,
74
+ services: stats.serviceCount,
75
+ });
76
+ }
77
+ catch (error) {
78
+ logger.error('Failed to build index', error instanceof Error ? error : new Error(String(error)));
79
+ process.exit(1);
80
+ }
81
+ // Initialize MCP server
82
+ logger.info('Initializing MCP server...');
83
+ server = new CompodocMcpServer({
84
+ name: config.server.name,
85
+ version: config.server.version,
86
+ }, index);
87
+ // Start server
88
+ logger.info('Starting MCP server...');
89
+ await server.start();
90
+ logger.info('MCP server started successfully', {
91
+ name: config.server.name,
92
+ version: config.server.version,
93
+ watchForChanges: config.documentation.watchForChanges,
94
+ });
95
+ // Health check
96
+ if (server.isHealthy()) {
97
+ logger.info('Health check passed');
98
+ }
99
+ else {
100
+ logger.warn('Health check failed - server may not be fully operational');
101
+ }
102
+ // Log server statistics
103
+ const stats = server.getStats();
104
+ logger.debug('Server statistics', stats);
105
+ // Server is now running and will handle requests via stdio
106
+ logger.info('Server is ready to accept requests');
107
+ }
108
+ catch (error) {
109
+ const logger = getLogger();
110
+ logger.error('Fatal error during startup', error instanceof Error ? error : new Error(String(error)));
111
+ process.exit(1);
112
+ }
113
+ }
114
+ /**
115
+ * Handle documentation reload
116
+ */
117
+ function handleDocumentationReload(data) {
118
+ const logger = getLogger();
119
+ logger.info('Documentation file changed, reloading...');
120
+ try {
121
+ // Rebuild index
122
+ const indexBuilder = new IndexBuilder();
123
+ const newIndex = indexBuilder.build(data);
124
+ // Update server with new index
125
+ if (server) {
126
+ server.updateIndex(newIndex);
127
+ const stats = indexBuilder.getStatistics(newIndex);
128
+ logger.info('Index updated successfully', {
129
+ totalCount: stats.totalCount,
130
+ components: stats.componentCount,
131
+ directives: stats.directiveCount,
132
+ pipes: stats.pipeCount,
133
+ services: stats.serviceCount,
134
+ });
135
+ }
136
+ }
137
+ catch (error) {
138
+ logger.error('Failed to reload documentation', error instanceof Error ? error : new Error(String(error)));
139
+ }
140
+ }
141
+ /**
142
+ * Handle documentation loading errors
143
+ */
144
+ function handleDocumentationError(error) {
145
+ const logger = getLogger();
146
+ logger.error('Documentation loader error', error);
147
+ }
148
+ /**
149
+ * Graceful shutdown handler
150
+ */
151
+ async function shutdown(signal) {
152
+ if (isShuttingDown) {
153
+ return;
154
+ }
155
+ isShuttingDown = true;
156
+ const logger = getLogger();
157
+ logger.info(`Received ${signal}, shutting down gracefully...`);
158
+ try {
159
+ // Stop MCP server
160
+ if (server) {
161
+ logger.info('Stopping MCP server...');
162
+ await server.stop();
163
+ logger.info('MCP server stopped');
164
+ }
165
+ // Stop documentation loader
166
+ if (loader) {
167
+ logger.info('Stopping documentation loader...');
168
+ await loader.dispose();
169
+ logger.info('Documentation loader stopped');
170
+ }
171
+ logger.info('Shutdown complete');
172
+ process.exit(0);
173
+ }
174
+ catch (error) {
175
+ logger.error('Error during shutdown', error instanceof Error ? error : new Error(String(error)));
176
+ process.exit(1);
177
+ }
178
+ }
179
+ /**
180
+ * Register signal handlers for graceful shutdown
181
+ */
182
+ function registerSignalHandlers() {
183
+ // Handle SIGINT (Ctrl+C)
184
+ process.on('SIGINT', () => {
185
+ void shutdown('SIGINT');
186
+ });
187
+ // Handle SIGTERM (kill command)
188
+ process.on('SIGTERM', () => {
189
+ void shutdown('SIGTERM');
190
+ });
191
+ // Handle uncaught exceptions
192
+ process.on('uncaughtException', (error) => {
193
+ const logger = getLogger();
194
+ logger.error('Uncaught exception', error);
195
+ void shutdown('uncaughtException');
196
+ });
197
+ // Handle unhandled promise rejections
198
+ process.on('unhandledRejection', (reason) => {
199
+ const logger = getLogger();
200
+ logger.error('Unhandled promise rejection', reason instanceof Error ? reason : new Error(String(reason)));
201
+ void shutdown('unhandledRejection');
202
+ });
203
+ }
204
+ // Register signal handlers
205
+ registerSignalHandlers();
206
+ // Start the application
207
+ main().catch((error) => {
208
+ console.error('Fatal error:', error);
209
+ process.exit(1);
210
+ });
211
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP server module exports
3
+ */
4
+ export { CompodocMcpServer, McpServerConfig, ToolResponse } from './server.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP server module exports
3
+ */
4
+ export { CompodocMcpServer } from './server.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAiC,MAAM,aAAa,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { ComponentIndex } from '../query/index-builder.js';
2
+ export interface McpServerConfig {
3
+ name: string;
4
+ version: string;
5
+ }
6
+ export interface ToolResponse {
7
+ content: Array<{
8
+ type: 'text';
9
+ text: string;
10
+ }>;
11
+ }
12
+ /**
13
+ * CompodocMcpServer class
14
+ * Manages the MCP server lifecycle and tool registration
15
+ */
16
+ export declare class CompodocMcpServer {
17
+ private server;
18
+ private index;
19
+ private query;
20
+ private searchEngine;
21
+ private formatter;
22
+ private tools;
23
+ private isRunning;
24
+ constructor(config: McpServerConfig, index: ComponentIndex);
25
+ /**
26
+ * Register all available tools
27
+ */
28
+ private registerTools;
29
+ /**
30
+ * Set up MCP request handlers
31
+ */
32
+ private setupHandlers;
33
+ /**
34
+ * Categorize errors for appropriate error codes
35
+ */
36
+ private categorizeError;
37
+ /**
38
+ * Start the MCP server
39
+ */
40
+ start(): Promise<void>;
41
+ /**
42
+ * Stop the MCP server
43
+ */
44
+ stop(): Promise<void>;
45
+ /**
46
+ * Check if server is running
47
+ */
48
+ isHealthy(): boolean;
49
+ /**
50
+ * Get server statistics
51
+ */
52
+ getStats(): {
53
+ isRunning: boolean;
54
+ toolCount: number;
55
+ indexStats: {
56
+ totalComponents: number;
57
+ lastUpdated: Date;
58
+ };
59
+ };
60
+ /**
61
+ * Update the index (for hot reloading)
62
+ */
63
+ updateIndex(newIndex: ComponentIndex): void;
64
+ }
65
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAa3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc;IA2B1D;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IA8FrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,QAAQ;;;;;;;;IAWR;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CAQ5C"}