cache-overflow-mcp 0.3.4 → 0.3.5
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.
- package/.env.example +3 -3
- package/AGENTS.md +24 -3
- package/README.md +59 -0
- package/TROUBLESHOOTING.md +219 -0
- package/dist/cli.js +13 -1
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +53 -9
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/logger.d.ts +16 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +127 -0
- package/dist/logger.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +50 -7
- package/dist/server.js.map +1 -1
- package/dist/testing/mock-data.js +40 -40
- package/dist/ui/verification-dialog.d.ts.map +1 -1
- package/dist/ui/verification-dialog.js +307 -268
- package/dist/ui/verification-dialog.js.map +1 -1
- package/package.json +3 -2
- package/scripts/view-logs.js +125 -0
- package/src/cli.ts +23 -10
- package/src/client.test.ts +116 -116
- package/src/client.ts +122 -76
- package/src/config.ts +14 -9
- package/src/index.ts +3 -3
- package/src/logger.ts +150 -0
- package/src/server.ts +49 -7
- package/src/testing/mock-data.ts +142 -142
- package/src/testing/mock-server.ts +176 -176
- package/src/tools/index.ts +23 -23
- package/src/types.ts +39 -39
- package/src/ui/verification-dialog.ts +382 -342
- package/tsconfig.json +20 -20
- package/dist/tools/get-balance.d.ts +0 -3
- package/dist/tools/get-balance.d.ts.map +0 -1
- package/dist/tools/get-balance.js +0 -34
- package/dist/tools/get-balance.js.map +0 -1
|
@@ -1,272 +1,273 @@
|
|
|
1
1
|
import http from 'http';
|
|
2
2
|
import open from 'open';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
<meta
|
|
9
|
-
<
|
|
10
|
-
<
|
|
11
|
-
<link rel="preconnect" href="https://fonts.
|
|
12
|
-
<link href="https://fonts.
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
border
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
width:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
font-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
font-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
border
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
font-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
border
|
|
136
|
-
|
|
137
|
-
font-
|
|
138
|
-
font-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
font-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
font-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
</
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
<
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
<div class="solution-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
<button class="btn btn-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
<
|
|
257
|
-
<
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
if (e.key === '
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
</
|
|
269
|
-
</
|
|
3
|
+
import { logger } from '../logger.js';
|
|
4
|
+
const generateHTML = (title, body) => `
|
|
5
|
+
<!DOCTYPE html>
|
|
6
|
+
<html lang="en">
|
|
7
|
+
<head>
|
|
8
|
+
<meta charset="UTF-8">
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
10
|
+
<title>Verify Solution | cache.overflow</title>
|
|
11
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
12
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
13
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
|
|
14
|
+
<style>
|
|
15
|
+
* {
|
|
16
|
+
margin: 0;
|
|
17
|
+
padding: 0;
|
|
18
|
+
box-sizing: border-box;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
body {
|
|
22
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
|
|
23
|
+
background: #0A0A0B;
|
|
24
|
+
min-height: 100vh;
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
padding: 24px;
|
|
29
|
+
color: #fff;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.card {
|
|
33
|
+
background: linear-gradient(145deg, rgba(30, 30, 32, 0.9), rgba(20, 20, 22, 0.95));
|
|
34
|
+
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
35
|
+
border-radius: 20px;
|
|
36
|
+
padding: 48px;
|
|
37
|
+
max-width: 800px;
|
|
38
|
+
width: 100%;
|
|
39
|
+
backdrop-filter: blur(20px);
|
|
40
|
+
box-shadow: 0 24px 48px rgba(0, 0, 0, 0.4);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.badge {
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
gap: 8px;
|
|
47
|
+
background: rgba(139, 92, 246, 0.15);
|
|
48
|
+
border: 1px solid rgba(139, 92, 246, 0.3);
|
|
49
|
+
color: #A78BFA;
|
|
50
|
+
font-size: 13px;
|
|
51
|
+
font-weight: 500;
|
|
52
|
+
text-transform: uppercase;
|
|
53
|
+
letter-spacing: 0.5px;
|
|
54
|
+
padding: 10px 18px;
|
|
55
|
+
border-radius: 24px;
|
|
56
|
+
margin-bottom: 28px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.badge::before {
|
|
60
|
+
content: "";
|
|
61
|
+
width: 6px;
|
|
62
|
+
height: 6px;
|
|
63
|
+
background: #8B5CF6;
|
|
64
|
+
border-radius: 50%;
|
|
65
|
+
animation: pulse 2s ease-in-out infinite;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@keyframes pulse {
|
|
69
|
+
0%, 100% { opacity: 1; transform: scale(1); }
|
|
70
|
+
50% { opacity: 0.5; transform: scale(1.2); }
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
h1 {
|
|
74
|
+
font-size: 32px;
|
|
75
|
+
font-weight: 600;
|
|
76
|
+
color: #fff;
|
|
77
|
+
margin-bottom: 12px;
|
|
78
|
+
letter-spacing: -0.5px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.subtitle {
|
|
82
|
+
font-size: 18px;
|
|
83
|
+
color: rgba(255, 255, 255, 0.5);
|
|
84
|
+
margin-bottom: 32px;
|
|
85
|
+
line-height: 1.5;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.solution-card {
|
|
89
|
+
background: rgba(255, 255, 255, 0.03);
|
|
90
|
+
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
91
|
+
border-radius: 16px;
|
|
92
|
+
padding: 28px;
|
|
93
|
+
margin-bottom: 36px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.solution-title {
|
|
97
|
+
font-size: 20px;
|
|
98
|
+
font-weight: 500;
|
|
99
|
+
color: #fff;
|
|
100
|
+
margin-bottom: 16px;
|
|
101
|
+
line-height: 1.4;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.solution-body {
|
|
105
|
+
font-size: 16px;
|
|
106
|
+
line-height: 1.8;
|
|
107
|
+
color: rgba(255, 255, 255, 0.6);
|
|
108
|
+
max-height: 280px;
|
|
109
|
+
overflow-y: auto;
|
|
110
|
+
white-space: pre-wrap;
|
|
111
|
+
word-wrap: break-word;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.solution-body::-webkit-scrollbar {
|
|
115
|
+
width: 4px;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.solution-body::-webkit-scrollbar-track {
|
|
119
|
+
background: transparent;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.solution-body::-webkit-scrollbar-thumb {
|
|
123
|
+
background: rgba(255, 255, 255, 0.1);
|
|
124
|
+
border-radius: 2px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.buttons {
|
|
128
|
+
display: flex;
|
|
129
|
+
gap: 16px;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.btn {
|
|
133
|
+
flex: 1;
|
|
134
|
+
padding: 22px 36px;
|
|
135
|
+
border: none;
|
|
136
|
+
border-radius: 14px;
|
|
137
|
+
font-family: inherit;
|
|
138
|
+
font-size: 20px;
|
|
139
|
+
font-weight: 600;
|
|
140
|
+
cursor: pointer;
|
|
141
|
+
transition: all 0.2s ease;
|
|
142
|
+
position: relative;
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.btn-safe {
|
|
147
|
+
background: linear-gradient(135deg, #00FF41 0%, #00CC33 100%);
|
|
148
|
+
color: #000;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.btn-safe:hover {
|
|
152
|
+
transform: translateY(-2px);
|
|
153
|
+
box-shadow: 0 8px 24px rgba(0, 255, 65, 0.35);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.btn-safe:active {
|
|
157
|
+
transform: translateY(0);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.btn-unsafe {
|
|
161
|
+
background: linear-gradient(135deg, #FF4444 0%, #CC2233 100%);
|
|
162
|
+
color: #fff;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.btn-unsafe:hover {
|
|
166
|
+
transform: translateY(-2px);
|
|
167
|
+
box-shadow: 0 8px 24px rgba(255, 51, 51, 0.35);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.btn-unsafe:active {
|
|
171
|
+
transform: translateY(0);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.hint {
|
|
175
|
+
text-align: center;
|
|
176
|
+
margin-top: 28px;
|
|
177
|
+
font-size: 15px;
|
|
178
|
+
color: rgba(255, 255, 255, 0.3);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.hint kbd {
|
|
182
|
+
background: rgba(255, 255, 255, 0.1);
|
|
183
|
+
padding: 4px 10px;
|
|
184
|
+
border-radius: 6px;
|
|
185
|
+
font-family: inherit;
|
|
186
|
+
font-size: 14px;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.completed {
|
|
190
|
+
text-align: center;
|
|
191
|
+
padding: 60px 20px;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.completed-icon {
|
|
195
|
+
width: 88px;
|
|
196
|
+
height: 88px;
|
|
197
|
+
border-radius: 50%;
|
|
198
|
+
display: flex;
|
|
199
|
+
align-items: center;
|
|
200
|
+
justify-content: center;
|
|
201
|
+
margin: 0 auto 28px;
|
|
202
|
+
font-size: 40px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.completed-icon.safe {
|
|
206
|
+
background: linear-gradient(135deg, rgba(0, 255, 65, 0.2), rgba(0, 204, 51, 0.1));
|
|
207
|
+
border: 2px solid rgba(0, 255, 65, 0.5);
|
|
208
|
+
box-shadow: 0 0 32px rgba(0, 255, 65, 0.2);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.completed-icon.unsafe {
|
|
212
|
+
background: linear-gradient(135deg, rgba(255, 68, 68, 0.2), rgba(204, 34, 51, 0.1));
|
|
213
|
+
border: 2px solid rgba(255, 68, 68, 0.5);
|
|
214
|
+
box-shadow: 0 0 32px rgba(255, 68, 68, 0.2);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.completed h2 {
|
|
218
|
+
font-size: 28px;
|
|
219
|
+
font-weight: 600;
|
|
220
|
+
margin-bottom: 12px;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.completed p {
|
|
224
|
+
font-size: 18px;
|
|
225
|
+
color: rgba(255, 255, 255, 0.5);
|
|
226
|
+
}
|
|
227
|
+
</style>
|
|
228
|
+
</head>
|
|
229
|
+
<body>
|
|
230
|
+
<div class="card" id="main-card">
|
|
231
|
+
<div class="badge">Verification Required</div>
|
|
232
|
+
|
|
233
|
+
<h1>Is this solution safe?</h1>
|
|
234
|
+
<p class="subtitle">Review the code below and verify it's safe to use</p>
|
|
235
|
+
|
|
236
|
+
<div class="solution-card">
|
|
237
|
+
<div class="solution-title">${escapeHtml(title)}</div>
|
|
238
|
+
<div class="solution-body">${body ? escapeHtml(body) : 'Solution body not available.\nUnlock to view full content.'}</div>
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<div class="buttons">
|
|
242
|
+
<button class="btn btn-safe" onclick="submit('safe')">Safe</button>
|
|
243
|
+
<button class="btn btn-unsafe" onclick="submit('unsafe')">Unsafe</button>
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
<div class="hint">
|
|
247
|
+
Press <kbd>S</kbd> for Safe or <kbd>U</kbd> for Unsafe
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
|
|
251
|
+
<script>
|
|
252
|
+
function submit(result) {
|
|
253
|
+
const isSafe = result === 'safe';
|
|
254
|
+
document.getElementById('main-card').innerHTML = \`
|
|
255
|
+
<div class="completed">
|
|
256
|
+
<div class="completed-icon \${result}">\${isSafe ? '✓' : '✕'}</div>
|
|
257
|
+
<h2>\${isSafe ? 'Marked as Safe' : 'Marked as Unsafe'}</h2>
|
|
258
|
+
<p>You can close this tab now</p>
|
|
259
|
+
</div>
|
|
260
|
+
\`;
|
|
261
|
+
fetch('/result?value=' + result).catch(() => {});
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
document.addEventListener('keydown', (e) => {
|
|
265
|
+
if (e.key === 's' || e.key === 'S') submit('safe');
|
|
266
|
+
if (e.key === 'u' || e.key === 'U') submit('unsafe');
|
|
267
|
+
});
|
|
268
|
+
</script>
|
|
269
|
+
</body>
|
|
270
|
+
</html>
|
|
270
271
|
`;
|
|
271
272
|
function escapeHtml(text) {
|
|
272
273
|
return text
|
|
@@ -297,12 +298,18 @@ export async function showVerificationDialog(title, body) {
|
|
|
297
298
|
server.close();
|
|
298
299
|
switch (value) {
|
|
299
300
|
case 'safe':
|
|
301
|
+
logger.info('User verified solution as safe', { solutionTitle: title });
|
|
300
302
|
resolve(true);
|
|
301
303
|
break;
|
|
302
304
|
case 'unsafe':
|
|
305
|
+
logger.info('User verified solution as unsafe', { solutionTitle: title });
|
|
303
306
|
resolve(false);
|
|
304
307
|
break;
|
|
305
308
|
default:
|
|
309
|
+
logger.warn('User verification dialog closed with unknown result', {
|
|
310
|
+
value,
|
|
311
|
+
solutionTitle: title
|
|
312
|
+
});
|
|
306
313
|
resolve(null);
|
|
307
314
|
}
|
|
308
315
|
}
|
|
@@ -312,20 +319,52 @@ export async function showVerificationDialog(title, body) {
|
|
|
312
319
|
res.end(html);
|
|
313
320
|
}
|
|
314
321
|
});
|
|
322
|
+
server.on('error', (error) => {
|
|
323
|
+
logger.error('Verification dialog HTTP server error', error, {
|
|
324
|
+
solutionTitle: title,
|
|
325
|
+
errorType: 'VERIFICATION_DIALOG_ERROR',
|
|
326
|
+
});
|
|
327
|
+
if (!resolved) {
|
|
328
|
+
resolved = true;
|
|
329
|
+
resolve(null);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
315
332
|
server.listen(0, 'localhost', () => {
|
|
316
333
|
const address = server.address();
|
|
317
334
|
if (address && typeof address === 'object') {
|
|
318
335
|
const url = `http://localhost:${address.port}`;
|
|
319
|
-
|
|
336
|
+
logger.info('Verification dialog opened', {
|
|
337
|
+
port: address.port,
|
|
338
|
+
solutionTitle: title
|
|
339
|
+
});
|
|
340
|
+
open(url).catch((error) => {
|
|
341
|
+
logger.error('Failed to open verification dialog in browser', error, {
|
|
342
|
+
url,
|
|
343
|
+
solutionTitle: title,
|
|
344
|
+
errorType: 'BROWSER_OPEN_FAILURE',
|
|
345
|
+
});
|
|
346
|
+
});
|
|
320
347
|
// Timeout after 55 seconds (within MCP client default 60s limit)
|
|
321
348
|
setTimeout(() => {
|
|
322
349
|
if (!resolved) {
|
|
323
350
|
resolved = true;
|
|
324
351
|
server.close();
|
|
352
|
+
logger.warn('Verification dialog timed out', { solutionTitle: title });
|
|
325
353
|
resolve(null);
|
|
326
354
|
}
|
|
327
355
|
}, 55 * 1000);
|
|
328
356
|
}
|
|
357
|
+
else {
|
|
358
|
+
logger.error('Failed to get server address for verification dialog', undefined, {
|
|
359
|
+
address,
|
|
360
|
+
solutionTitle: title,
|
|
361
|
+
errorType: 'SERVER_ADDRESS_ERROR',
|
|
362
|
+
});
|
|
363
|
+
if (!resolved) {
|
|
364
|
+
resolved = true;
|
|
365
|
+
resolve(null);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
329
368
|
});
|
|
330
369
|
});
|
|
331
370
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-dialog.js","sourceRoot":"","sources":["../../src/ui/verification-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"verification-dialog.js","sourceRoot":"","sources":["../../src/ui/verification-dialog.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cache-overflow-mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MCP server for cache.overflow - AI agents sharing knowledge with AI agents",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"start": "node dist/cli.js",
|
|
15
15
|
"lint": "eslint src/",
|
|
16
16
|
"test": "vitest",
|
|
17
|
-
"prepublishOnly": "npm run build"
|
|
17
|
+
"prepublishOnly": "npm run build",
|
|
18
|
+
"logs": "node scripts/view-logs.js"
|
|
18
19
|
},
|
|
19
20
|
"keywords": [
|
|
20
21
|
"mcp",
|