mcp-adr-analysis-server 2.1.22 → 2.1.28

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 (40) hide show
  1. package/README.md +63 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/index.d.ts.map +1 -1
  4. package/dist/src/index.js +370 -0
  5. package/dist/src/index.js.map +1 -1
  6. package/dist/src/tools/adr-aggregator-tools.d.ts +185 -0
  7. package/dist/src/tools/adr-aggregator-tools.d.ts.map +1 -0
  8. package/dist/src/tools/adr-aggregator-tools.js +872 -0
  9. package/dist/src/tools/adr-aggregator-tools.js.map +1 -0
  10. package/dist/src/tools/analyze-gaps-tool.d.ts +57 -0
  11. package/dist/src/tools/analyze-gaps-tool.d.ts.map +1 -0
  12. package/dist/src/tools/analyze-gaps-tool.js +727 -0
  13. package/dist/src/tools/analyze-gaps-tool.js.map +1 -0
  14. package/dist/src/tools/tool-catalog.d.ts +1 -1
  15. package/dist/src/tools/tool-catalog.d.ts.map +1 -1
  16. package/dist/src/tools/tool-catalog.js +382 -0
  17. package/dist/src/tools/tool-catalog.js.map +1 -1
  18. package/dist/src/tools/tool-dispatcher.d.ts.map +1 -1
  19. package/dist/src/tools/tool-dispatcher.js +4 -0
  20. package/dist/src/tools/tool-dispatcher.js.map +1 -1
  21. package/dist/src/types/adr-aggregator.d.ts +692 -0
  22. package/dist/src/types/adr-aggregator.d.ts.map +1 -0
  23. package/dist/src/types/adr-aggregator.js +8 -0
  24. package/dist/src/types/adr-aggregator.js.map +1 -0
  25. package/dist/src/types/index.d.ts +3 -2
  26. package/dist/src/types/index.d.ts.map +1 -1
  27. package/dist/src/types/memory-entities.d.ts +48 -48
  28. package/dist/src/utils/adr-aggregator-client.d.ts +177 -0
  29. package/dist/src/utils/adr-aggregator-client.d.ts.map +1 -0
  30. package/dist/src/utils/adr-aggregator-client.js +396 -0
  31. package/dist/src/utils/adr-aggregator-client.js.map +1 -0
  32. package/dist/src/utils/config.d.ts +3 -0
  33. package/dist/src/utils/config.d.ts.map +1 -1
  34. package/dist/src/utils/config.js +13 -0
  35. package/dist/src/utils/config.js.map +1 -1
  36. package/dist/src/utils/git-remote-detector.d.ts +67 -0
  37. package/dist/src/utils/git-remote-detector.d.ts.map +1 -0
  38. package/dist/src/utils/git-remote-detector.js +194 -0
  39. package/dist/src/utils/git-remote-detector.js.map +1 -0
  40. package/package.json +3 -3
@@ -0,0 +1,177 @@
1
+ /**
2
+ * ADR Aggregator API Client
3
+ * HTTP client for bidirectional sync with https://adraggregator.com
4
+ *
5
+ * @see NEW_FEATURE.md for API documentation
6
+ */
7
+ import { type GitRemoteInfo } from './git-remote-detector.js';
8
+ import type { SyncAdrRequest, SyncAdrResponse, GetContextRequest, GetContextResponse, GetStalenessReportRequest, GetStalenessReportResponse, GetTemplatesRequest, GetTemplatesResponse, GetDiagramsRequest, GetDiagramsResponse, ValidateComplianceRequest, ValidateComplianceResponse, GetKnowledgeGraphRequest, GetKnowledgeGraphResponse, ReportCodeGapsRequest, ReportCodeGapsResponse, GetCodeGapsRequest, GetCodeGapsResponse, UpdateImplementationStatusRequest, UpdateImplementationStatusResponse, GetPrioritiesRequest, GetPrioritiesResponse } from '../types/adr-aggregator.js';
9
+ /**
10
+ * Configuration for the ADR Aggregator client
11
+ */
12
+ export interface AggregatorClientConfig {
13
+ /** Base URL for the ADR Aggregator API */
14
+ baseUrl: string;
15
+ /** API key for authentication */
16
+ apiKey?: string;
17
+ /** Request timeout in milliseconds */
18
+ timeout?: number;
19
+ }
20
+ /**
21
+ * ADR Aggregator API Client
22
+ *
23
+ * Provides methods for all ADR Aggregator API endpoints:
24
+ * - sync_to_aggregator (POST /mcp-sync-adr)
25
+ * - get_adr_context (GET /mcp-get-context)
26
+ * - get_staleness_report (GET /mcp-staleness-report)
27
+ * - get_adr_templates (GET /mcp-get-templates)
28
+ * - get_adr_diagrams (GET /mcp-get-diagrams) - Pro+ tier
29
+ * - validate_adr_compliance (POST /mcp-validate-compliance) - Pro+ tier
30
+ * - get_knowledge_graph (GET /mcp-get-knowledge-graph) - Team tier
31
+ */
32
+ export declare class AdrAggregatorClient {
33
+ private baseUrl;
34
+ private apiKey;
35
+ private timeout;
36
+ constructor(config?: Partial<AggregatorClientConfig>);
37
+ /**
38
+ * Auto-detect repository name from git remote
39
+ *
40
+ * @param projectPath - Path to the project (defaults to config.projectPath)
41
+ * @returns Repository name in "owner/repo" format
42
+ * @throws McpAdrError if not a git repository
43
+ */
44
+ getRepositoryName(projectPath?: string): string;
45
+ /**
46
+ * Get full git remote info
47
+ *
48
+ * @param projectPath - Path to the project (defaults to config.projectPath)
49
+ * @returns Git remote information
50
+ */
51
+ getGitInfo(projectPath?: string): GitRemoteInfo;
52
+ /**
53
+ * Check if API key is configured
54
+ *
55
+ * @returns true if API key is set
56
+ */
57
+ isConfigured(): boolean;
58
+ /**
59
+ * Get the current base URL
60
+ */
61
+ getBaseUrl(): string;
62
+ /**
63
+ * Sync ADRs to ADR Aggregator platform
64
+ *
65
+ * @param request - Sync request with ADRs and options
66
+ * @returns Sync response with results
67
+ */
68
+ syncAdrs(request: SyncAdrRequest): Promise<SyncAdrResponse>;
69
+ /**
70
+ * Get ADR context from aggregator
71
+ *
72
+ * @param request - Context request with filters
73
+ * @returns ADR context response
74
+ */
75
+ getContext(request: GetContextRequest): Promise<GetContextResponse>;
76
+ /**
77
+ * Get staleness report
78
+ *
79
+ * @param request - Staleness report request
80
+ * @returns Staleness report response
81
+ */
82
+ getStalenessReport(request: GetStalenessReportRequest): Promise<GetStalenessReportResponse>;
83
+ /**
84
+ * Get ADR templates
85
+ *
86
+ * @param request - Templates request with optional domain filter
87
+ * @returns Templates response
88
+ */
89
+ getTemplates(request: GetTemplatesRequest): Promise<GetTemplatesResponse>;
90
+ /**
91
+ * Get Mermaid diagrams (Pro+ tier)
92
+ *
93
+ * @param request - Diagrams request
94
+ * @returns Diagrams response
95
+ */
96
+ getDiagrams(request: GetDiagramsRequest): Promise<GetDiagramsResponse>;
97
+ /**
98
+ * Validate ADR compliance (Pro+ tier)
99
+ *
100
+ * @param request - Compliance validation request
101
+ * @returns Compliance validation response
102
+ */
103
+ validateCompliance(request: ValidateComplianceRequest): Promise<ValidateComplianceResponse>;
104
+ /**
105
+ * Get knowledge graph (Team tier)
106
+ *
107
+ * @param request - Knowledge graph request
108
+ * @returns Knowledge graph response
109
+ */
110
+ getKnowledgeGraph(request: GetKnowledgeGraphRequest): Promise<GetKnowledgeGraphResponse>;
111
+ /**
112
+ * Report code gaps to ADR Aggregator
113
+ *
114
+ * @param request - Code gaps report request
115
+ * @returns Report response with gap counts
116
+ */
117
+ reportCodeGaps(request: ReportCodeGapsRequest): Promise<ReportCodeGapsResponse>;
118
+ /**
119
+ * Get current code gaps from ADR Aggregator
120
+ *
121
+ * @param request - Get gaps request with optional filters
122
+ * @returns Current gaps with status information
123
+ */
124
+ getCodeGaps(request: GetCodeGapsRequest): Promise<GetCodeGapsResponse>;
125
+ /**
126
+ * Update implementation status of synced ADRs (Pro+ tier)
127
+ *
128
+ * @param request - Update request with status changes
129
+ * @returns Update response with results
130
+ */
131
+ updateImplementationStatus(request: UpdateImplementationStatusRequest): Promise<UpdateImplementationStatusResponse>;
132
+ /**
133
+ * Get ADR priorities for roadmap/backlog planning
134
+ *
135
+ * @param request - Priorities request with optional filters
136
+ * @returns Prioritized ADRs with scores, dependencies, and blockers
137
+ */
138
+ getPriorities(request: GetPrioritiesRequest): Promise<GetPrioritiesResponse>;
139
+ private get;
140
+ private post;
141
+ private buildHeaders;
142
+ /**
143
+ * Build headers with Bearer token authentication
144
+ * Used for gap analysis endpoints
145
+ */
146
+ private buildBearerHeaders;
147
+ /**
148
+ * GET request with Bearer token authentication
149
+ */
150
+ private getWithBearerAuth;
151
+ /**
152
+ * POST request with Bearer token authentication
153
+ */
154
+ private postWithBearerAuth;
155
+ private buildQueryParams;
156
+ private handleResponse;
157
+ private handleError;
158
+ }
159
+ /**
160
+ * Get the singleton ADR Aggregator client instance
161
+ *
162
+ * @returns Configured ADR Aggregator client
163
+ */
164
+ export declare function getAdrAggregatorClient(): AdrAggregatorClient;
165
+ /**
166
+ * Reset the singleton client instance
167
+ * Useful for testing or when configuration changes
168
+ */
169
+ export declare function resetAdrAggregatorClient(): void;
170
+ /**
171
+ * Create a new client with custom configuration
172
+ *
173
+ * @param config - Custom configuration
174
+ * @returns New ADR Aggregator client instance
175
+ */
176
+ export declare function createAdrAggregatorClient(config: Partial<AggregatorClientConfig>): AdrAggregatorClient;
177
+ //# sourceMappingURL=adr-aggregator-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-aggregator-client.d.ts","sourceRoot":"","sources":["../../../src/utils/adr-aggregator-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,396 @@
1
+ /**
2
+ * ADR Aggregator API Client
3
+ * HTTP client for bidirectional sync with https://adraggregator.com
4
+ *
5
+ * @see NEW_FEATURE.md for API documentation
6
+ */
7
+ import { McpAdrError } from '../types/index.js';
8
+ import { loadConfig } from './config.js';
9
+ import { detectGitRemote, isGitRepository } from './git-remote-detector.js';
10
+ /**
11
+ * ADR Aggregator API Client
12
+ *
13
+ * Provides methods for all ADR Aggregator API endpoints:
14
+ * - sync_to_aggregator (POST /mcp-sync-adr)
15
+ * - get_adr_context (GET /mcp-get-context)
16
+ * - get_staleness_report (GET /mcp-staleness-report)
17
+ * - get_adr_templates (GET /mcp-get-templates)
18
+ * - get_adr_diagrams (GET /mcp-get-diagrams) - Pro+ tier
19
+ * - validate_adr_compliance (POST /mcp-validate-compliance) - Pro+ tier
20
+ * - get_knowledge_graph (GET /mcp-get-knowledge-graph) - Team tier
21
+ */
22
+ export class AdrAggregatorClient {
23
+ baseUrl;
24
+ apiKey;
25
+ timeout;
26
+ constructor(config) {
27
+ const serverConfig = loadConfig();
28
+ this.baseUrl =
29
+ config?.baseUrl ||
30
+ serverConfig.adrAggregatorUrl ||
31
+ 'https://jvgdaquuggzbkenxnkja.supabase.co';
32
+ this.apiKey = config?.apiKey || serverConfig.adrAggregatorApiKey;
33
+ this.timeout = config?.timeout || 30000;
34
+ // Ensure baseUrl doesn't end with slash
35
+ if (this.baseUrl.endsWith('/')) {
36
+ this.baseUrl = this.baseUrl.slice(0, -1);
37
+ }
38
+ }
39
+ // ============================================================================
40
+ // Public Helper Methods
41
+ // ============================================================================
42
+ /**
43
+ * Auto-detect repository name from git remote
44
+ *
45
+ * @param projectPath - Path to the project (defaults to config.projectPath)
46
+ * @returns Repository name in "owner/repo" format
47
+ * @throws McpAdrError if not a git repository
48
+ */
49
+ getRepositoryName(projectPath) {
50
+ const path = projectPath || loadConfig().projectPath;
51
+ if (!isGitRepository(path)) {
52
+ throw new McpAdrError('Not a git repository. Cannot detect repository name.', 'NOT_GIT_REPO');
53
+ }
54
+ const gitInfo = detectGitRemote(path);
55
+ return gitInfo.repositoryName;
56
+ }
57
+ /**
58
+ * Get full git remote info
59
+ *
60
+ * @param projectPath - Path to the project (defaults to config.projectPath)
61
+ * @returns Git remote information
62
+ */
63
+ getGitInfo(projectPath) {
64
+ const path = projectPath || loadConfig().projectPath;
65
+ return detectGitRemote(path);
66
+ }
67
+ /**
68
+ * Check if API key is configured
69
+ *
70
+ * @returns true if API key is set
71
+ */
72
+ isConfigured() {
73
+ return !!this.apiKey;
74
+ }
75
+ /**
76
+ * Get the current base URL
77
+ */
78
+ getBaseUrl() {
79
+ return this.baseUrl;
80
+ }
81
+ // ============================================================================
82
+ // API Methods
83
+ // ============================================================================
84
+ /**
85
+ * Sync ADRs to ADR Aggregator platform
86
+ *
87
+ * @param request - Sync request with ADRs and options
88
+ * @returns Sync response with results
89
+ */
90
+ async syncAdrs(request) {
91
+ return this.post('/functions/v1/mcp-sync-adr', request);
92
+ }
93
+ /**
94
+ * Get ADR context from aggregator
95
+ *
96
+ * @param request - Context request with filters
97
+ * @returns ADR context response
98
+ */
99
+ async getContext(request) {
100
+ const params = this.buildQueryParams(request);
101
+ return this.get(`/functions/v1/mcp-get-context?${params}`);
102
+ }
103
+ /**
104
+ * Get staleness report
105
+ *
106
+ * @param request - Staleness report request
107
+ * @returns Staleness report response
108
+ */
109
+ async getStalenessReport(request) {
110
+ const params = this.buildQueryParams(request);
111
+ return this.get(`/functions/v1/mcp-staleness-report?${params}`);
112
+ }
113
+ /**
114
+ * Get ADR templates
115
+ *
116
+ * @param request - Templates request with optional domain filter
117
+ * @returns Templates response
118
+ */
119
+ async getTemplates(request) {
120
+ const params = this.buildQueryParams(request);
121
+ const endpoint = params
122
+ ? `/functions/v1/mcp-get-templates?${params}`
123
+ : '/functions/v1/mcp-get-templates';
124
+ return this.get(endpoint);
125
+ }
126
+ /**
127
+ * Get Mermaid diagrams (Pro+ tier)
128
+ *
129
+ * @param request - Diagrams request
130
+ * @returns Diagrams response
131
+ */
132
+ async getDiagrams(request) {
133
+ const params = this.buildQueryParams(request);
134
+ return this.get(`/functions/v1/mcp-get-diagrams?${params}`);
135
+ }
136
+ /**
137
+ * Validate ADR compliance (Pro+ tier)
138
+ *
139
+ * @param request - Compliance validation request
140
+ * @returns Compliance validation response
141
+ */
142
+ async validateCompliance(request) {
143
+ return this.post('/functions/v1/mcp-validate-compliance', request);
144
+ }
145
+ /**
146
+ * Get knowledge graph (Team tier)
147
+ *
148
+ * @param request - Knowledge graph request
149
+ * @returns Knowledge graph response
150
+ */
151
+ async getKnowledgeGraph(request) {
152
+ const params = this.buildQueryParams(request);
153
+ return this.get(`/functions/v1/mcp-get-knowledge-graph?${params}`);
154
+ }
155
+ /**
156
+ * Report code gaps to ADR Aggregator
157
+ *
158
+ * @param request - Code gaps report request
159
+ * @returns Report response with gap counts
160
+ */
161
+ async reportCodeGaps(request) {
162
+ // Gap endpoints use Bearer token authentication
163
+ return this.postWithBearerAuth('/functions/v1/mcp-report-code-gaps', request);
164
+ }
165
+ /**
166
+ * Get current code gaps from ADR Aggregator
167
+ *
168
+ * @param request - Get gaps request with optional filters
169
+ * @returns Current gaps with status information
170
+ */
171
+ async getCodeGaps(request) {
172
+ const params = this.buildQueryParams(request);
173
+ // Gap endpoints use Bearer token authentication
174
+ return this.getWithBearerAuth(`/functions/v1/mcp-get-gaps?${params}`);
175
+ }
176
+ /**
177
+ * Update implementation status of synced ADRs (Pro+ tier)
178
+ *
179
+ * @param request - Update request with status changes
180
+ * @returns Update response with results
181
+ */
182
+ async updateImplementationStatus(request) {
183
+ return this.post('/functions/v1/mcp-update-implementation-status', request);
184
+ }
185
+ /**
186
+ * Get ADR priorities for roadmap/backlog planning
187
+ *
188
+ * @param request - Priorities request with optional filters
189
+ * @returns Prioritized ADRs with scores, dependencies, and blockers
190
+ */
191
+ async getPriorities(request) {
192
+ const params = this.buildQueryParams(request);
193
+ return this.get(`/functions/v1/mcp-get-priorities?${params}`);
194
+ }
195
+ // ============================================================================
196
+ // Private HTTP Methods
197
+ // ============================================================================
198
+ async get(endpoint) {
199
+ const url = `${this.baseUrl}${endpoint}`;
200
+ const headers = this.buildHeaders();
201
+ const controller = new AbortController();
202
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
203
+ try {
204
+ const response = await fetch(url, {
205
+ method: 'GET',
206
+ headers,
207
+ signal: controller.signal,
208
+ });
209
+ clearTimeout(timeoutId);
210
+ return this.handleResponse(response);
211
+ }
212
+ catch (error) {
213
+ clearTimeout(timeoutId);
214
+ throw this.handleError(error);
215
+ }
216
+ }
217
+ async post(endpoint, body) {
218
+ const url = `${this.baseUrl}${endpoint}`;
219
+ const headers = this.buildHeaders();
220
+ const controller = new AbortController();
221
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
222
+ try {
223
+ const response = await fetch(url, {
224
+ method: 'POST',
225
+ headers,
226
+ body: JSON.stringify(body),
227
+ signal: controller.signal,
228
+ });
229
+ clearTimeout(timeoutId);
230
+ return this.handleResponse(response);
231
+ }
232
+ catch (error) {
233
+ clearTimeout(timeoutId);
234
+ throw this.handleError(error);
235
+ }
236
+ }
237
+ buildHeaders() {
238
+ const headers = {
239
+ 'Content-Type': 'application/json',
240
+ Accept: 'application/json',
241
+ 'User-Agent': 'mcp-adr-analysis-server/2.1.22',
242
+ };
243
+ if (this.apiKey) {
244
+ headers['x-api-key'] = this.apiKey;
245
+ }
246
+ return headers;
247
+ }
248
+ /**
249
+ * Build headers with Bearer token authentication
250
+ * Used for gap analysis endpoints
251
+ */
252
+ buildBearerHeaders() {
253
+ const headers = {
254
+ 'Content-Type': 'application/json',
255
+ Accept: 'application/json',
256
+ 'User-Agent': 'mcp-adr-analysis-server/2.1.22',
257
+ };
258
+ if (this.apiKey) {
259
+ headers['Authorization'] = `Bearer ${this.apiKey}`;
260
+ }
261
+ return headers;
262
+ }
263
+ /**
264
+ * GET request with Bearer token authentication
265
+ */
266
+ async getWithBearerAuth(endpoint) {
267
+ const url = `${this.baseUrl}${endpoint}`;
268
+ const headers = this.buildBearerHeaders();
269
+ const controller = new AbortController();
270
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
271
+ try {
272
+ const response = await fetch(url, {
273
+ method: 'GET',
274
+ headers,
275
+ signal: controller.signal,
276
+ });
277
+ clearTimeout(timeoutId);
278
+ return this.handleResponse(response);
279
+ }
280
+ catch (error) {
281
+ clearTimeout(timeoutId);
282
+ throw this.handleError(error);
283
+ }
284
+ }
285
+ /**
286
+ * POST request with Bearer token authentication
287
+ */
288
+ async postWithBearerAuth(endpoint, body) {
289
+ const url = `${this.baseUrl}${endpoint}`;
290
+ const headers = this.buildBearerHeaders();
291
+ const controller = new AbortController();
292
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
293
+ try {
294
+ const response = await fetch(url, {
295
+ method: 'POST',
296
+ headers,
297
+ body: JSON.stringify(body),
298
+ signal: controller.signal,
299
+ });
300
+ clearTimeout(timeoutId);
301
+ return this.handleResponse(response);
302
+ }
303
+ catch (error) {
304
+ clearTimeout(timeoutId);
305
+ throw this.handleError(error);
306
+ }
307
+ }
308
+ buildQueryParams(params) {
309
+ const searchParams = new URLSearchParams();
310
+ for (const [key, value] of Object.entries(params)) {
311
+ if (value !== undefined && value !== null && value !== '') {
312
+ if (Array.isArray(value)) {
313
+ // Handle array parameters
314
+ for (const item of value) {
315
+ searchParams.append(key, String(item));
316
+ }
317
+ }
318
+ else if (typeof value === 'boolean') {
319
+ searchParams.append(key, value ? 'true' : 'false');
320
+ }
321
+ else {
322
+ searchParams.append(key, String(value));
323
+ }
324
+ }
325
+ }
326
+ return searchParams.toString();
327
+ }
328
+ async handleResponse(response) {
329
+ const contentType = response.headers.get('content-type') || '';
330
+ if (!response.ok) {
331
+ let errorData;
332
+ if (contentType.includes('application/json')) {
333
+ try {
334
+ errorData = (await response.json());
335
+ }
336
+ catch {
337
+ // Ignore JSON parse errors for error responses
338
+ }
339
+ }
340
+ const errorMessage = errorData?.message || `HTTP ${response.status}: ${response.statusText}`;
341
+ const errorCode = errorData?.code || `HTTP_${response.status}`;
342
+ throw new McpAdrError(errorMessage, errorCode, {
343
+ status: response.status,
344
+ tier_required: errorData?.tier_required,
345
+ });
346
+ }
347
+ if (contentType.includes('application/json')) {
348
+ return (await response.json());
349
+ }
350
+ throw new McpAdrError('Unexpected response content type', 'INVALID_RESPONSE');
351
+ }
352
+ handleError(error) {
353
+ if (error instanceof McpAdrError) {
354
+ return error;
355
+ }
356
+ if (error instanceof Error) {
357
+ if (error.name === 'AbortError') {
358
+ return new McpAdrError('Request timed out', 'TIMEOUT_ERROR');
359
+ }
360
+ return new McpAdrError(`API request failed: ${error.message}`, 'API_REQUEST_ERROR');
361
+ }
362
+ return new McpAdrError('Unknown API error', 'UNKNOWN_ERROR');
363
+ }
364
+ }
365
+ // ============================================================================
366
+ // Singleton Instance
367
+ // ============================================================================
368
+ let clientInstance = null;
369
+ /**
370
+ * Get the singleton ADR Aggregator client instance
371
+ *
372
+ * @returns Configured ADR Aggregator client
373
+ */
374
+ export function getAdrAggregatorClient() {
375
+ if (!clientInstance) {
376
+ clientInstance = new AdrAggregatorClient();
377
+ }
378
+ return clientInstance;
379
+ }
380
+ /**
381
+ * Reset the singleton client instance
382
+ * Useful for testing or when configuration changes
383
+ */
384
+ export function resetAdrAggregatorClient() {
385
+ clientInstance = null;
386
+ }
387
+ /**
388
+ * Create a new client with custom configuration
389
+ *
390
+ * @param config - Custom configuration
391
+ * @returns New ADR Aggregator client instance
392
+ */
393
+ export function createAdrAggregatorClient(config) {
394
+ return new AdrAggregatorClient(config);
395
+ }
396
+ //# sourceMappingURL=adr-aggregator-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-aggregator-client.js","sourceRoot":"","sources":["../../../src/utils/adr-aggregator-client.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,9 @@ declare const ConfigSchema: z.ZodObject<{
22
22
  firecrawlApiKey: z.ZodOptional<z.ZodString>;
23
23
  firecrawlBaseUrl: z.ZodDefault<z.ZodString>;
24
24
  firecrawlEnabled: z.ZodDefault<z.ZodBoolean>;
25
+ adrAggregatorUrl: z.ZodDefault<z.ZodString>;
26
+ adrAggregatorApiKey: z.ZodOptional<z.ZodString>;
27
+ adrAggregatorEnabled: z.ZodDefault<z.ZodBoolean>;
25
28
  }, z.core.$strip>;
26
29
  export type ServerConfig = z.infer<typeof ConfigSchema>;
27
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;iBAYhB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAiCzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAGlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;qBAK5B,MAAM,WAAW,GAAG,EAAE;oBAGvB,MAAM,WAAW,GAAG,EAAE;oBAGtB,MAAM,WAAW,GAAG,EAAE;qBAGrB,MAAM,WAAW,GAAG,EAAE;EAI1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAgB7D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;iBAgBhB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAuCzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAGlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;qBAK5B,MAAM,WAAW,GAAG,EAAE;oBAGvB,MAAM,WAAW,GAAG,EAAE;oBAGtB,MAAM,WAAW,GAAG,EAAE;qBAGrB,MAAM,WAAW,GAAG,EAAE;EAI1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAuB7D"}
@@ -19,6 +19,10 @@ const ConfigSchema = z.object({
19
19
  firecrawlApiKey: z.string().optional(),
20
20
  firecrawlBaseUrl: z.string().default('http://localhost:3000'),
21
21
  firecrawlEnabled: z.boolean().default(false),
22
+ // ADR Aggregator configuration
23
+ adrAggregatorUrl: z.string().default('https://jvgdaquuggzbkenxnkja.supabase.co'),
24
+ adrAggregatorApiKey: z.string().optional(),
25
+ adrAggregatorEnabled: z.boolean().default(false),
22
26
  });
23
27
  /**
24
28
  * Load and validate configuration from environment variables
@@ -70,6 +74,10 @@ export function loadConfig() {
70
74
  firecrawlApiKey: process.env['FIRECRAWL_API_KEY'],
71
75
  firecrawlBaseUrl: process.env['FIRECRAWL_BASE_URL'] || 'http://localhost:3000',
72
76
  firecrawlEnabled: process.env['FIRECRAWL_ENABLED'] === 'true' || !!process.env['FIRECRAWL_API_KEY'],
77
+ // ADR Aggregator configuration
78
+ adrAggregatorUrl: process.env['ADR_AGGREGATOR_URL'] || 'https://jvgdaquuggzbkenxnkja.supabase.co',
79
+ adrAggregatorApiKey: process.env['ADR_AGGREGATOR_API_KEY'],
80
+ adrAggregatorEnabled: process.env['ADR_AGGREGATOR_ENABLED'] === 'true' || !!process.env['ADR_AGGREGATOR_API_KEY'],
73
81
  };
74
82
  try {
75
83
  return ConfigSchema.parse(rawConfig);
@@ -190,5 +198,10 @@ export function printConfigSummary(config) {
190
198
  logger.info(` Firecrawl Base URL: ${config.firecrawlBaseUrl}`);
191
199
  logger.info(` Firecrawl API Key: ${config.firecrawlApiKey ? '***configured***' : 'not set'}`);
192
200
  }
201
+ logger.info(` ADR Aggregator Enabled: ${config.adrAggregatorEnabled}`);
202
+ if (config.adrAggregatorEnabled) {
203
+ logger.info(` ADR Aggregator URL: ${config.adrAggregatorUrl}`);
204
+ logger.info(` ADR Aggregator API Key: ${config.adrAggregatorApiKey ? '***configured***' : 'not set'}`);
205
+ }
193
206
  }
194
207
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}