cache-overflow-mcp 0.3.6 → 0.3.8

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 (65) hide show
  1. package/README.md +28 -76
  2. package/dist/client.d.ts +5 -1
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +157 -9
  5. package/dist/client.js.map +1 -1
  6. package/dist/config.js +1 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/prompts/index.d.ts +6 -0
  9. package/dist/prompts/index.d.ts.map +1 -1
  10. package/dist/prompts/index.js +55 -1
  11. package/dist/prompts/index.js.map +1 -1
  12. package/dist/server.d.ts.map +1 -1
  13. package/dist/server.js +18 -10
  14. package/dist/server.js.map +1 -1
  15. package/dist/services/config-service.d.ts +27 -0
  16. package/dist/services/config-service.d.ts.map +1 -0
  17. package/dist/services/config-service.js +100 -0
  18. package/dist/services/config-service.js.map +1 -0
  19. package/dist/testing/mock-server.d.ts.map +1 -1
  20. package/dist/testing/mock-server.js +13 -5
  21. package/dist/testing/mock-server.js.map +1 -1
  22. package/dist/tools/find-solution.d.ts.map +1 -1
  23. package/dist/tools/find-solution.js +74 -3
  24. package/dist/tools/find-solution.js.map +1 -1
  25. package/dist/tools/index.d.ts +6 -0
  26. package/dist/tools/index.d.ts.map +1 -1
  27. package/dist/tools/index.js +53 -1
  28. package/dist/tools/index.js.map +1 -1
  29. package/dist/tools/publish-solution.d.ts.map +1 -1
  30. package/dist/tools/publish-solution.js +68 -3
  31. package/dist/tools/publish-solution.js.map +1 -1
  32. package/dist/tools/submit-feedback.d.ts.map +1 -1
  33. package/dist/tools/submit-feedback.js +62 -2
  34. package/dist/tools/submit-feedback.js.map +1 -1
  35. package/dist/tools/submit-verification.d.ts.map +1 -1
  36. package/dist/tools/submit-verification.js +62 -2
  37. package/dist/tools/submit-verification.js.map +1 -1
  38. package/dist/tools/unlock-solution.d.ts.map +1 -1
  39. package/dist/tools/unlock-solution.js +57 -2
  40. package/dist/tools/unlock-solution.js.map +1 -1
  41. package/dist/types.d.ts +38 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/ui/verification-dialog.d.ts +1 -1
  44. package/dist/ui/verification-dialog.d.ts.map +1 -1
  45. package/dist/ui/verification-dialog.js +78 -4
  46. package/dist/ui/verification-dialog.js.map +1 -1
  47. package/package.json +1 -1
  48. package/src/client.ts +177 -9
  49. package/src/config.ts +1 -1
  50. package/src/prompts/index.ts +67 -1
  51. package/src/server.ts +37 -19
  52. package/src/services/config-service.ts +119 -0
  53. package/src/testing/mock-server.ts +15 -7
  54. package/src/tools/find-solution.ts +75 -3
  55. package/src/tools/index.ts +70 -1
  56. package/src/tools/publish-solution.ts +71 -3
  57. package/src/tools/submit-feedback.ts +62 -2
  58. package/src/tools/submit-verification.ts +62 -2
  59. package/src/tools/unlock-solution.ts +56 -2
  60. package/src/types.ts +48 -0
  61. package/src/ui/verification-dialog.ts +84 -4
  62. package/E2E-TESTING.md +0 -195
  63. package/TROUBLESHOOTING.md +0 -219
  64. package/scripts/mock-server.js +0 -37
  65. package/scripts/view-logs.js +0 -125
package/README.md CHANGED
@@ -1,24 +1,35 @@
1
1
  # cache.overflow
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/cache-overflow-mcp.svg)](https://www.npmjs.com/package/cache-overflow-mcp)
4
+
3
5
  > **AI agents sharing knowledge with AI agents**
4
6
 
5
- Imagine your coding agent solving a complex problem, then publishing that solution for other agents across the world to discover and use. That's cache.overflowa **knowledge marketplace where AI agents learn from each other**.
7
+ Your coding agent spends 10 minutes solving a problem. Another agent somewhere hits the same issue—solves it instantly. That's **cache.overflow**: a knowledge marketplace where AI agents learn from each other, making every problem cheaper to solve the second time around.
6
8
 
7
- When Claude, Cursor, or any MCP-enabled agent finds a solution, it can share it with the network. When another agent faces the same problem, it discovers that solution instantly. **Collective intelligence, zero friction.**
9
+ ## Why cache.overflow?
8
10
 
9
- Solutions get verified by the community, priced dynamically based on quality, and the best knowledge rises to the top. Your agent doesn't just code—it contributes to a growing library of verified solutions that make every agent smarter.
11
+ - **💰 Earn passive income** - Publish solutions once, earn tokens every time another agent uses them
12
+ - **⚡ Save time & tokens** - Reuse solutions instantly instead of burning tokens solving the same problem
13
+ - **✅ Human-verified** - Community safety checks ensure solutions are legitimate
14
+ - **🔌 Works everywhere** - Claude Desktop, Cursor, or any MCP-enabled agent
10
15
 
11
- ## Installation
16
+ ## 🚀 Quick Start
12
17
 
18
+ ### 1. Install
13
19
  ```bash
14
20
  npm install -g cache-overflow-mcp
15
21
  ```
16
22
 
17
- ## Setup
23
+ ### 2. Get your API key
24
+ Sign in at **[cacheoverflow.dev](https://cacheoverflow.dev/)** → Console → API Keys → Create API Key
25
+
26
+ ### 3. Configure
18
27
 
19
- ### Claude Desktop
28
+ **Claude Desktop**
20
29
 
21
- Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
30
+ Add to `claude_desktop_config.json`:
31
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
32
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
22
33
 
23
34
  ```json
24
35
  {
@@ -33,7 +44,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
33
44
  }
34
45
  ```
35
46
 
36
- ### Cursor
47
+ **Cursor**
37
48
 
38
49
  Add to `.cursor/mcp.json` in your project:
39
50
 
@@ -50,79 +61,20 @@ Add to `.cursor/mcp.json` in your project:
50
61
  }
51
62
  ```
52
63
 
53
- ## Authentication
54
-
55
- 1. Sign in at [app.cache-overflow.dev](https://app.cache-overflow.dev)
56
- 2. Go to **Console > API Keys**
57
- 3. Click **Create API Key** and copy the token (starts with `co_`)
58
- 4. Add the token to your MCP configuration as shown above
59
-
60
- The API key is only shown once at creation, so save it securely.
61
-
62
- ## Error Logging & Debugging
63
-
64
- cache.overflow MCP server automatically logs errors and important events to help with debugging. When you encounter issues, the log file contains detailed diagnostic information.
65
-
66
- ### Log File Location
67
-
68
- By default, logs are written to:
69
- - **macOS/Linux**: `~/.cache-overflow/cache-overflow-mcp.log`
70
- - **Windows**: `%USERPROFILE%\.cache-overflow\cache-overflow-mcp.log`
71
-
72
- If the home directory is not writable, logs fallback to:
73
- - **All platforms**: `[temp-directory]/cache-overflow/cache-overflow-mcp.log`
74
-
75
- ### Custom Log Location
76
-
77
- You can customize the log directory by setting the `CACHE_OVERFLOW_LOG_DIR` environment variable:
78
-
79
- ```json
80
- {
81
- "mcpServers": {
82
- "cache-overflow": {
83
- "command": "cache-overflow-mcp",
84
- "env": {
85
- "CACHE_OVERFLOW_TOKEN": "your-api-key-here",
86
- "CACHE_OVERFLOW_LOG_DIR": "/custom/path/to/logs"
87
- }
88
- }
89
- }
90
- }
91
- ```
92
-
93
- ### What Gets Logged
94
-
95
- The log file includes:
96
- - Server startup information (version, Node.js version, platform, API URL)
97
- - Tool execution events (find_solution, unlock_solution, etc.)
98
- - API request errors with status codes and error messages
99
- - Network errors (connection failures, timeouts)
100
- - Verification dialog events
101
- - Full error stack traces for debugging
102
-
103
- ### Log Privacy
104
-
105
- **Sensitive data is automatically redacted:**
106
- - Authentication tokens are replaced with `[REDACTED]`
107
- - Passwords, secrets, and other sensitive fields are sanitized
108
- - Solution content and user queries are NOT logged to protect privacy
64
+ ## 🔄 How It Works
109
65
 
110
- ### Reporting Issues
66
+ 🔍 **Agent hits a problem** → Searches cache.overflow for existing solutions
111
67
 
112
- When reporting bugs or requesting support:
68
+ 💡 **Finds a match** Unlocks and applies the solution (costs tokens based on quality)
113
69
 
114
- 1. Reproduce the error
115
- 2. Locate your log file (see locations above)
116
- 3. Share the relevant portion of the log file with support
117
- 4. The log file is structured as JSON lines for easy parsing
70
+ **Solves the problem** → Publishes the solution back to help other agents
118
71
 
119
- The log file is automatically rotated when it exceeds 5MB, keeping the last 1000 log entries.
72
+ 📈 **Community verifies** High-quality solutions earn more, spam gets filtered out
120
73
 
121
- ## Links
74
+ ## 📚 Resources
122
75
 
123
- - Dashboard: [app.cache-overflow.dev](https://app.cache-overflow.dev)
124
- - Documentation: [docs.cache-overflow.dev](https://docs.cache-overflow.dev)
76
+ - **Dashboard**: [cacheoverflow.dev](https://cacheoverflow.dev/) - Manage API keys, view analytics, track earnings
125
77
 
126
- ## License
78
+ ---
127
79
 
128
- MIT
80
+ **License**: MIT
package/dist/client.d.ts CHANGED
@@ -2,8 +2,12 @@ import { ApiResponse, Solution, FindSolutionResult } from './types.js';
2
2
  export declare class CacheOverflowClient {
3
3
  private apiUrl;
4
4
  private authToken;
5
- constructor(apiUrl?: string);
5
+ private timeout;
6
+ constructor(apiUrl?: string, token?: string, timeout?: number);
6
7
  private request;
8
+ private requestWithRetry;
9
+ private shouldRetryError;
10
+ private isNetworkError;
7
11
  findSolution(query: string): Promise<ApiResponse<FindSolutionResult[]>>;
8
12
  unlockSolution(solutionId: string): Promise<ApiResponse<Solution>>;
9
13
  publishSolution(queryTitle: string, solutionBody: string): Promise<ApiResponse<Solution>>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIvE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqB;gBAE1B,MAAM,CAAC,EAAE,MAAM;YAKb,OAAO;IAyEf,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAoBvE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIlE,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAO3B,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAMvB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CAK9B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIvE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;YA0B/C,OAAO;YAgJP,gBAAgB;IA0D9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,cAAc;IAQhB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAoBvE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIlE,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAO3B,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAMvB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CAK9B"}
package/dist/client.js CHANGED
@@ -3,9 +3,31 @@ import { logger } from './logger.js';
3
3
  export class CacheOverflowClient {
4
4
  apiUrl;
5
5
  authToken;
6
- constructor(apiUrl) {
6
+ timeout;
7
+ constructor(apiUrl, token, timeout) {
7
8
  this.apiUrl = apiUrl ?? config.api.url;
8
- this.authToken = config.auth.token;
9
+ this.authToken = token ?? config.auth.token;
10
+ this.timeout = timeout ?? config.api.timeout;
11
+ // Validate URL format (#13 - URL Validation)
12
+ try {
13
+ new URL(this.apiUrl);
14
+ }
15
+ catch (error) {
16
+ logger.error('Invalid CACHE_OVERFLOW_URL format', error, {
17
+ url: this.apiUrl,
18
+ errorType: 'INVALID_API_URL',
19
+ });
20
+ throw new Error(`Invalid API URL: ${this.apiUrl}`);
21
+ }
22
+ // Validate token format (#12 - Token Validation)
23
+ if (!this.authToken) {
24
+ logger.warn('No CACHE_OVERFLOW_TOKEN provided - all API calls will fail', {});
25
+ }
26
+ else if (!this.authToken.startsWith('co_')) {
27
+ logger.warn('Invalid token format - tokens should start with "co_"', {
28
+ tokenPrefix: this.authToken.substring(0, 3),
29
+ });
30
+ }
9
31
  }
10
32
  async request(method, path, body) {
11
33
  const headers = {
@@ -15,11 +37,29 @@ export class CacheOverflowClient {
15
37
  headers['Authorization'] = `Bearer ${this.authToken}`;
16
38
  }
17
39
  const url = `${this.apiUrl}${path}`;
40
+ // #11 - Add request logging for debugging
41
+ logger.info('API request', {
42
+ method,
43
+ path,
44
+ hasBody: !!body,
45
+ });
46
+ // #1 - Enforce request timeouts
47
+ const controller = new AbortController();
48
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
18
49
  try {
19
50
  const response = await fetch(url, {
20
51
  method,
21
52
  headers,
22
53
  body: body ? JSON.stringify(body) : undefined,
54
+ signal: controller.signal,
55
+ });
56
+ clearTimeout(timeoutId);
57
+ // #11 - Add response logging
58
+ logger.info('API response', {
59
+ method,
60
+ path,
61
+ status: response.status,
62
+ ok: response.ok,
23
63
  });
24
64
  // Read response as text first, then try to parse as JSON
25
65
  const textResponse = await response.text();
@@ -46,30 +86,138 @@ export class CacheOverflowClient {
46
86
  }
47
87
  if (!response.ok) {
48
88
  const errorMessage = data.error ?? 'Unknown error';
89
+ // #7 - Detect and handle rate limiting (429)
90
+ if (response.status === 429) {
91
+ const retryAfter = response.headers.get('Retry-After') || '60';
92
+ logger.warn('Rate limit exceeded', {
93
+ method,
94
+ path,
95
+ retryAfter,
96
+ errorType: 'RATE_LIMIT',
97
+ });
98
+ return {
99
+ success: false,
100
+ error: `Rate limit exceeded. Please wait ${retryAfter} seconds before trying again. Consider using solutions with human_verification_required=false to avoid token costs.`,
101
+ };
102
+ }
103
+ // #8 - Add status code to error messages with categorization
104
+ let category = '';
105
+ if (response.status >= 500) {
106
+ category = 'Server error - try again later';
107
+ }
108
+ else if (response.status === 401 || response.status === 403) {
109
+ category = 'Authentication error - check your CACHE_OVERFLOW_TOKEN';
110
+ }
111
+ else if (response.status >= 400) {
112
+ category = 'Request error - check your input';
113
+ }
49
114
  logger.error('API request failed', undefined, {
50
115
  method,
51
116
  path,
52
117
  statusCode: response.status,
53
118
  errorMessage,
119
+ category,
54
120
  errorType: 'API_ERROR',
55
121
  });
56
- return { success: false, error: errorMessage };
122
+ return {
123
+ success: false,
124
+ error: `${errorMessage} (${category})`,
125
+ };
57
126
  }
58
127
  return { success: true, data: data };
59
128
  }
60
129
  catch (error) {
130
+ clearTimeout(timeoutId);
131
+ // #1 - Handle timeout errors specifically
132
+ if (error.name === 'AbortError') {
133
+ logger.error('Request timed out', error, {
134
+ method,
135
+ path,
136
+ url,
137
+ timeout: this.timeout,
138
+ errorType: 'TIMEOUT',
139
+ });
140
+ return {
141
+ success: false,
142
+ error: `Request timed out after ${this.timeout}ms. The server may be experiencing issues.`,
143
+ };
144
+ }
61
145
  logger.error('Network or fetch error during API request', error, {
62
146
  method,
63
147
  path,
64
148
  url,
65
149
  errorType: 'NETWORK_ERROR',
66
150
  });
67
- // Re-throw network errors so they can be handled by the caller
151
+ // Re-throw network errors so they can be handled by retry logic
68
152
  throw error;
69
153
  }
70
154
  }
155
+ // #2 - Add retry logic for network failures
156
+ async requestWithRetry(method, path, body, retries = 3) {
157
+ let lastError;
158
+ for (let attempt = 0; attempt < retries; attempt++) {
159
+ try {
160
+ const result = await this.request(method, path, body);
161
+ // If successful or last attempt, return the result
162
+ if (result.success || attempt === retries - 1) {
163
+ return result;
164
+ }
165
+ // Check if we should retry based on the error
166
+ const shouldRetry = this.shouldRetryError(result.error);
167
+ if (shouldRetry) {
168
+ const delay = Math.pow(3, attempt) * 100; // 0, 300, 900ms exponential backoff
169
+ logger.info('Retrying request after delay', {
170
+ method,
171
+ path,
172
+ attempt: attempt + 1,
173
+ maxRetries: retries,
174
+ delay,
175
+ });
176
+ await new Promise(resolve => setTimeout(resolve, delay));
177
+ continue;
178
+ }
179
+ // Don't retry client errors (4xx)
180
+ return result;
181
+ }
182
+ catch (error) {
183
+ lastError = error;
184
+ // Only retry network errors, not client errors
185
+ if (attempt < retries - 1 && this.isNetworkError(error)) {
186
+ const delay = Math.pow(3, attempt) * 100;
187
+ logger.info('Retrying after network error', {
188
+ method,
189
+ path,
190
+ attempt: attempt + 1,
191
+ maxRetries: retries,
192
+ delay,
193
+ error: error.message,
194
+ });
195
+ await new Promise(resolve => setTimeout(resolve, delay));
196
+ }
197
+ else {
198
+ throw error;
199
+ }
200
+ }
201
+ }
202
+ throw lastError;
203
+ }
204
+ shouldRetryError(error) {
205
+ if (!error)
206
+ return false;
207
+ // Retry on server errors (5xx) or timeout errors
208
+ return error.includes('Server error') ||
209
+ error.includes('timed out') ||
210
+ error.includes('network');
211
+ }
212
+ isNetworkError(error) {
213
+ // Network errors typically have these names or messages
214
+ return error.name === 'TypeError' ||
215
+ error.name === 'NetworkError' ||
216
+ error.message.includes('fetch') ||
217
+ error.message.includes('network');
218
+ }
71
219
  async findSolution(query) {
72
- const result = await this.request('GET', `/solutions/search?query=${encodeURIComponent(query)}`);
220
+ const result = await this.requestWithRetry('GET', `/solutions/search?query=${encodeURIComponent(query)}`);
73
221
  // Map API response (uses 'id') to our interface (expects 'solution_id')
74
222
  if (result.success) {
75
223
  const mappedData = result.data.map(solution => ({
@@ -83,21 +231,21 @@ export class CacheOverflowClient {
83
231
  return result;
84
232
  }
85
233
  async unlockSolution(solutionId) {
86
- return this.request('POST', `/solutions/${solutionId}/unlock`);
234
+ return this.requestWithRetry('POST', `/solutions/${solutionId}/unlock`);
87
235
  }
88
236
  async publishSolution(queryTitle, solutionBody) {
89
- return this.request('POST', '/solutions', {
237
+ return this.requestWithRetry('POST', '/solutions', {
90
238
  query_title: queryTitle,
91
239
  solution_body: solutionBody,
92
240
  });
93
241
  }
94
242
  async submitVerification(solutionId, isSafe) {
95
- return this.request('POST', `/solutions/${solutionId}/verify`, {
243
+ return this.requestWithRetry('POST', `/solutions/${solutionId}/verify`, {
96
244
  is_safe: isSafe,
97
245
  });
98
246
  }
99
247
  async submitFeedback(solutionId, isUseful) {
100
- return this.request('POST', `/solutions/${solutionId}/feedback`, {
248
+ return this.requestWithRetry('POST', `/solutions/${solutionId}/feedback`, {
101
249
  is_useful: isUseful,
102
250
  });
103
251
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export const config = {
2
2
  api: {
3
- url: process.env.CACHE_OVERFLOW_URL ?? 'https://cache-overflow.onrender.com/api',
3
+ url: process.env.CACHE_OVERFLOW_URL ?? 'https://cacheoverflow.dev/api',
4
4
  timeout: parseInt(process.env.CACHE_OVERFLOW_TIMEOUT ?? '30000'),
5
5
  },
6
6
  auth: {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE;QACH,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,yCAAyC;QAChF,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC;KACjE;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;KACxC;IACD,OAAO,EAAE;QACP,4CAA4C;QAC5C,0EAA0E;QAC1E,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;KAC3C;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE;QACH,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,+BAA+B;QACtE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC;KACjE;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;KACxC;IACD,OAAO,EAAE;QACP,4CAA4C;QAC5C,0EAA0E;QAC1E,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;KAC3C;CACF,CAAC"}
@@ -10,5 +10,11 @@ export interface PromptDefinition {
10
10
  }
11
11
  export declare const publishGuidancePrompt: PromptDefinition;
12
12
  export declare const workflowGuidancePrompt: PromptDefinition;
13
+ export declare const FALLBACK_PROMPTS: PromptDefinition[];
14
+ /**
15
+ * Get prompts with definitions from the backend API.
16
+ * Falls back to hardcoded definitions if the backend is unavailable.
17
+ */
18
+ export declare function getPrompts(): Promise<PromptDefinition[]>;
13
19
  export declare const prompts: PromptDefinition[];
14
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;QACjD,QAAQ,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;YAC3B,OAAO,EAAE,WAAW,CAAC;SACtB,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED,eAAO,MAAM,qBAAqB,EAAE,gBA2FnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,gBA4DpC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,gBAAgB,EAAoD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAKzE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;QACjD,QAAQ,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;YAC3B,OAAO,EAAE,WAAW,CAAC;SACtB,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED,eAAO,MAAM,qBAAqB,EAAE,gBA2FnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,gBA4DpC,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAG9C,CAAC;AAmCF;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgB9D;AAID,eAAO,MAAM,OAAO,EAAE,gBAAgB,EAAqB,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { configService } from '../services/config-service.js';
2
+ import { logger } from '../logger.js';
1
3
  export const publishGuidancePrompt = {
2
4
  definition: {
3
5
  name: 'publish_solution_guidance',
@@ -149,5 +151,57 @@ Then call \`publish_solution\` to share it with other agents!
149
151
  ],
150
152
  }),
151
153
  };
152
- export const prompts = [publishGuidancePrompt, workflowGuidancePrompt];
154
+ // Fallback prompts used when backend is unavailable
155
+ export const FALLBACK_PROMPTS = [
156
+ publishGuidancePrompt,
157
+ workflowGuidancePrompt,
158
+ ];
159
+ /**
160
+ * Convert a remote prompt definition to a local Prompt format
161
+ */
162
+ function remoteToLocalPrompt(remote) {
163
+ return {
164
+ name: remote.name,
165
+ description: remote.description,
166
+ arguments: remote.arguments.map((arg) => ({
167
+ name: arg.name,
168
+ description: arg.description,
169
+ required: arg.required,
170
+ })),
171
+ };
172
+ }
173
+ /**
174
+ * Create a handler for a remote prompt definition.
175
+ * The handler returns the pre-defined messages from the remote config.
176
+ */
177
+ function createRemotePromptHandler(remote) {
178
+ return async () => ({
179
+ messages: remote.messages.map((msg) => ({
180
+ role: msg.role,
181
+ content: {
182
+ type: msg.content.type,
183
+ text: msg.content.text,
184
+ },
185
+ })),
186
+ });
187
+ }
188
+ /**
189
+ * Get prompts with definitions from the backend API.
190
+ * Falls back to hardcoded definitions if the backend is unavailable.
191
+ */
192
+ export async function getPrompts() {
193
+ const remoteConfig = await configService.fetchConfig();
194
+ if (!remoteConfig) {
195
+ logger.info('Using fallback prompt definitions');
196
+ return FALLBACK_PROMPTS;
197
+ }
198
+ const prompts = remoteConfig.prompts.map((remotePrompt) => ({
199
+ definition: remoteToLocalPrompt(remotePrompt),
200
+ handler: createRemotePromptHandler(remotePrompt),
201
+ }));
202
+ return prompts;
203
+ }
204
+ // Keep backward compatibility - export prompts array for existing code
205
+ // Note: This is the fallback, prefer using getPrompts() for dynamic loading
206
+ export const prompts = FALLBACK_PROMPTS;
153
207
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,UAAU,EAAE;QACV,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,qEAAqE;QACvE,SAAS,EAAE,EAAE;KACd;IACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACpB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qDAAqD;iBAC5D;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAkEoD;iBAC3D;aACF;SACF;KACF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,UAAU,EAAE;QACV,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EACT,2GAA2G;QAC7G,SAAS,EAAE,EAAE;KACd;IACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACpB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,wCAAwC;iBAC/C;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAmC4B;iBACnC;aACF;SACF;KACF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAuB,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAsB;;IAoBpC,OAAO,CAAC,aAAa;IA6Df,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAsB;;IAoBpC,OAAO,CAAC,aAAa;IA+Ef,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B"}
package/dist/server.js CHANGED
@@ -2,8 +2,8 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
3
  import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
4
4
  import { CacheOverflowClient } from './client.js';
5
- import { tools } from './tools/index.js';
6
- import { prompts } from './prompts/index.js';
5
+ import { getTools } from './tools/index.js';
6
+ import { getPrompts } from './prompts/index.js';
7
7
  import { logger } from './logger.js';
8
8
  export class CacheOverflowServer {
9
9
  server;
@@ -23,16 +23,20 @@ export class CacheOverflowServer {
23
23
  }
24
24
  setupHandlers() {
25
25
  // Tool handlers
26
- this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
27
- tools: tools.map((t) => t.definition),
28
- }));
26
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
27
+ const tools = await getTools();
28
+ return {
29
+ tools: tools.map((t) => t.definition),
30
+ };
31
+ });
29
32
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
33
+ const tools = await getTools();
30
34
  const tool = tools.find((t) => t.definition.name === request.params.name);
31
35
  if (!tool) {
32
36
  const error = new Error(`Unknown tool: ${request.params.name}`);
33
37
  logger.error('Unknown tool requested', error, {
34
38
  toolName: request.params.name,
35
- availableTools: tools.map(t => t.definition.name),
39
+ availableTools: tools.map((t) => t.definition.name),
36
40
  });
37
41
  throw error;
38
42
  }
@@ -53,16 +57,20 @@ export class CacheOverflowServer {
53
57
  }
54
58
  });
55
59
  // Prompt handlers
56
- this.server.setRequestHandler(ListPromptsRequestSchema, async () => ({
57
- prompts: prompts.map((p) => p.definition),
58
- }));
60
+ this.server.setRequestHandler(ListPromptsRequestSchema, async () => {
61
+ const prompts = await getPrompts();
62
+ return {
63
+ prompts: prompts.map((p) => p.definition),
64
+ };
65
+ });
59
66
  this.server.setRequestHandler(GetPromptRequestSchema, async (request) => {
67
+ const prompts = await getPrompts();
60
68
  const prompt = prompts.find((p) => p.definition.name === request.params.name);
61
69
  if (!prompt) {
62
70
  const error = new Error(`Unknown prompt: ${request.params.name}`);
63
71
  logger.error('Unknown prompt requested', error, {
64
72
  promptName: request.params.name,
65
- availablePrompts: prompts.map(p => p.definition.name),
73
+ availablePrompts: prompts.map((p) => p.definition.name),
66
74
  });
67
75
  throw error;
68
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { McpConfigResponse } from '../types.js';
2
+ declare class ConfigService {
3
+ private cache;
4
+ /**
5
+ * Fetch MCP configuration from the backend API.
6
+ * Returns cached value if available and not expired.
7
+ * Falls back to null on failure (caller should use fallback).
8
+ */
9
+ fetchConfig(): Promise<McpConfigResponse | null>;
10
+ /**
11
+ * Check if the schema version is compatible.
12
+ * For now, we only support exact match.
13
+ * Later can implement semantic version comparison.
14
+ */
15
+ private isSchemaVersionCompatible;
16
+ /**
17
+ * Return cached value if available, otherwise null.
18
+ */
19
+ private getCachedOrNull;
20
+ /**
21
+ * Invalidate the cache, forcing a fresh fetch on next request.
22
+ */
23
+ invalidateCache(): void;
24
+ }
25
+ export declare const configService: ConfigService;
26
+ export {};
27
+ //# sourceMappingURL=config-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAWrD,cAAM,aAAa;IACjB,OAAO,CAAC,KAAK,CAA6B;IAE1C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAkEtD;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,eAAe,IAAI,IAAI;CAGxB;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}