clawaid 1.1.3 โ 1.1.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/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/web/index.html +102 -25
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,GAAG,6CAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAyKtB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxD;AAED,eAAe,GAAG,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -171,6 +171,22 @@ app.post('/api/redeem', (req, res) => {
|
|
|
171
171
|
request.end();
|
|
172
172
|
});
|
|
173
173
|
// Health check
|
|
174
|
+
app.post('/api/feedback', (req, res) => {
|
|
175
|
+
const { feedback, sessionId: sid } = req.body || {};
|
|
176
|
+
// Forward feedback to ClawAid backend
|
|
177
|
+
const https = require('https');
|
|
178
|
+
const body = JSON.stringify({ feedback, sessionId: sid, fingerprint: require('./diagnose').getMachineFingerprint() });
|
|
179
|
+
const fReq = https.request({
|
|
180
|
+
hostname: 'api.clawaid.app',
|
|
181
|
+
path: '/feedback',
|
|
182
|
+
method: 'POST',
|
|
183
|
+
headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) },
|
|
184
|
+
}, () => { });
|
|
185
|
+
fReq.on('error', () => { });
|
|
186
|
+
fReq.write(body);
|
|
187
|
+
fReq.end();
|
|
188
|
+
res.json({ ok: true });
|
|
189
|
+
});
|
|
174
190
|
app.get('/api/health', (_req, res) => {
|
|
175
191
|
res.json({ ok: true, version: '1.0.0', name: 'ClawAid', sessions: activeSessions.size });
|
|
176
192
|
});
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/web/index.html
CHANGED
|
@@ -209,15 +209,15 @@
|
|
|
209
209
|
|
|
210
210
|
<div class="hdr">
|
|
211
211
|
<div class="logo">๐ฆ๐ฉน</div>
|
|
212
|
-
<h1>ClawAid</h1>
|
|
213
|
-
<p>Automatic diagnostics & repair for OpenClaw</p>
|
|
212
|
+
<h1 id="hdr-title">ClawAid</h1>
|
|
213
|
+
<p id="hdr-subtitle">Automatic diagnostics & repair for OpenClaw</p>
|
|
214
214
|
</div>
|
|
215
215
|
|
|
216
216
|
<!-- Start screen -->
|
|
217
217
|
<div id="start-screen">
|
|
218
218
|
<div class="start-card">
|
|
219
|
-
<p>ClawAid reads your OpenClaw config, gateway status, and logs to find and fix problems.</p>
|
|
220
|
-
<ul>
|
|
219
|
+
<p id="privacy-text">ClawAid reads your OpenClaw config, gateway status, and logs to find and fix problems.</p>
|
|
220
|
+
<ul id="privacy-list">
|
|
221
221
|
<li>API keys are redacted before leaving your machine</li>
|
|
222
222
|
<li>Data is sent to our diagnostic service โ never stored</li>
|
|
223
223
|
<li>All commands run locally on your machine</li>
|
|
@@ -242,12 +242,73 @@
|
|
|
242
242
|
const feed = document.getElementById('feed');
|
|
243
243
|
const startScreen = document.getElementById('start-screen');
|
|
244
244
|
|
|
245
|
+
// โโโ i18n โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
246
|
+
const isZh = /^zh/i.test(navigator.language || '');
|
|
247
|
+
const T = {
|
|
248
|
+
startScan: isZh ? '๐ฉบ ๅผๅงๆซๆ' : '๐ฉบ Start Scan',
|
|
249
|
+
title: 'ClawAid',
|
|
250
|
+
subtitle: isZh ? 'ไธๆกๅฝไปค๏ผ่ชๅจ่ฏๆญๅนถไฟฎๅค OpenClaw' : 'One command to diagnose and fix OpenClaw',
|
|
251
|
+
privacy: isZh ? 'ClawAid ไผ่ฏปๅไฝ ็ OpenClaw ้
็ฝฎใgateway ็ถๆๅๆฅๅฟๆฅ่ฏๆญ้ฎ้ขใ' : 'ClawAid reads your OpenClaw config, gateway status, and logs to find and fix problems.',
|
|
252
|
+
scanning: isZh ? 'ๆญฃๅจๆซๆไฝ ็็ณป็ป...' : 'Scanning your system...',
|
|
253
|
+
scanned: isZh ? '็ณป็ปๆฐๆฎๅทฒๆถ้' : 'System data collected',
|
|
254
|
+
allClear: isZh ? 'ไธๅๆญฃๅธธ๏ผ' : 'All clear!',
|
|
255
|
+
fixed: isZh ? 'ๅทฒไฟฎๅค๏ผ' : 'Fixed!',
|
|
256
|
+
notFixed: isZh ? 'ๆ ๆณ่ชๅจไฟฎๅค' : "Couldn't fix automatically",
|
|
257
|
+
healthyDesc: isZh ? 'ไฝ ็ OpenClaw ่ฟ่กๆญฃๅธธใ' : 'Your OpenClaw is running normally.',
|
|
258
|
+
fixedDesc: isZh ? 'OpenClaw ๅทฒไฟฎๅคใ' : 'OpenClaw has been repaired.',
|
|
259
|
+
notFixedDesc: isZh ? 'ๅคๆฌกๅฐ่ฏๅ้ฎ้ขไป็ถๅญๅจใ' : 'After multiple attempts, the issue persists.',
|
|
260
|
+
scanAgain: isZh ? '๐ ้ๆฐๆซๆ' : '๐ Scan Again',
|
|
261
|
+
tryAgain: isZh ? '๐ ๅ่ฏไธๆฌก' : '๐ Try Again',
|
|
262
|
+
warnings: isZh ? 'โ ๏ธ ๅ
ถไป้่ฆๆณจๆ็' : 'โ ๏ธ Other things to know',
|
|
263
|
+
wasHelpful: isZh ? '้ฎ้ข่งฃๅณไบๅ๏ผ' : 'Was this helpful?',
|
|
264
|
+
feedbackYes: isZh ? '๐ ่งฃๅณไบ' : '๐ Yes',
|
|
265
|
+
feedbackNo: isZh ? '๐ ๆฒก่งฃๅณ' : '๐ No',
|
|
266
|
+
thanksYes: isZh ? 'ๅคชๅฅฝไบ๏ผๅพ้ซๅ
ดๅธฎๅฐไฝ ๐' : 'Thanks! Glad it helped ๐',
|
|
267
|
+
thanksNo: isZh ? 'ๆฑๆญๆฒก่งฃๅณ๏ผ่็ณปๆไปฌๅธฎไฝ ๆๅฎ ๐' : "Sorry to hear that. Reach out below โ we'll help! ๐",
|
|
268
|
+
contact: isZh ? '๐ฌ ๆ้ฎ้ข๏ผ' : '๐ฌ Questions or feedback?',
|
|
269
|
+
allowQ: isZh ? '่ฟๅฐไฟฎๆนไฝ ็็ณป็ป๏ผๅ
่ฎธๆง่กๅ๏ผ' : 'This will modify your system. Allow?',
|
|
270
|
+
allow: isZh ? 'โ ๅ
่ฎธ' : 'โ Allow',
|
|
271
|
+
skip: isZh ? '่ทณ่ฟ' : 'Skip',
|
|
272
|
+
whatsWrong: isZh ? '้ๅฐไปไน้ฎ้ข๏ผ' : "What's going on?",
|
|
273
|
+
descHint: isZh ? 'ๆ่ฟฐไฝ ็้ฎ้ข๏ผๆ่
็ดๆฅๆซๆโโClawAid ไผ่ชๅจ่ฏๆญใ' : 'Describe the problem, or just scan โ ClawAid will figure it out.',
|
|
274
|
+
descPlaceholder: isZh ? 'ไพๅฆ๏ผๆดๆฐๅ OpenClaw ๅฐฑไธๅๅบไบ...๏ผๅฏ้๏ผ' : 'e.g. OpenClaw stopped responding after I updated... (optional)',
|
|
275
|
+
sendDiagnose: isZh ? '๐ ๅ้ๅนถ่ฏๆญ' : '๐ Send & diagnose',
|
|
276
|
+
justScan: isZh ? '๐ ็ดๆฅๆซๆไฟฎๅค' : '๐ Just scan & fix',
|
|
277
|
+
privacyList: isZh
|
|
278
|
+
? ['API ๅฏ้ฅๅจๅ้ๅๅทฒ่ฑๆ', 'ๆฐๆฎๅ้ๅฐ่ฏๆญๆๅก๏ผไธไผๅญๅจ', 'ๆๆๅฝไปคๅจไฝ ็ๆฌๆบๆง่ก']
|
|
279
|
+
: ['API keys are redacted before leaving your machine', 'Data is sent to our diagnostic service โ never stored', 'All commands run locally on your machine'],
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
// Apply i18n to static elements
|
|
283
|
+
if (isZh) {
|
|
284
|
+
const sub = document.getElementById('hdr-subtitle');
|
|
285
|
+
if (sub) sub.textContent = '่ชๅจ่ฏๆญๅนถไฟฎๅค OpenClaw';
|
|
286
|
+
const pv = document.getElementById('privacy-text');
|
|
287
|
+
if (pv) pv.textContent = T.privacy;
|
|
288
|
+
const pl = document.getElementById('privacy-list');
|
|
289
|
+
if (pl) pl.innerHTML = T.privacyList.map(t => '<li>' + t + '</li>').join('');
|
|
290
|
+
const btn = document.getElementById('btn-start');
|
|
291
|
+
if (btn) btn.textContent = T.startScan;
|
|
292
|
+
}
|
|
293
|
+
|
|
245
294
|
// โโโ Helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
246
295
|
|
|
247
296
|
function esc(s) {
|
|
248
297
|
return String(s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');
|
|
249
298
|
}
|
|
250
299
|
|
|
300
|
+
function sendFeedback(value, btn) {
|
|
301
|
+
const container = btn.parentElement;
|
|
302
|
+
container.innerHTML = value === 'yes'
|
|
303
|
+
? '<span style="color:#34a853;font-size:13px;">' + T.thanksYes + '</span>'
|
|
304
|
+
: '<span style="color:#ea4335;font-size:13px;">' + T.thanksNo + '</span>';
|
|
305
|
+
fetch('/api/feedback', {
|
|
306
|
+
method: 'POST',
|
|
307
|
+
headers: { 'Content-Type': 'application/json' },
|
|
308
|
+
body: JSON.stringify({ feedback: value, sessionId })
|
|
309
|
+
}).catch(() => {});
|
|
310
|
+
}
|
|
311
|
+
|
|
251
312
|
function scrollBottom() {
|
|
252
313
|
window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });
|
|
253
314
|
}
|
|
@@ -319,9 +380,9 @@
|
|
|
319
380
|
bar.className = 'confirm-bar' + (risk === 'high' ? ' risk-high' : '');
|
|
320
381
|
bar.id = 'confirm-bar-' + index;
|
|
321
382
|
bar.innerHTML = `
|
|
322
|
-
<span style="font-size:13px; color:var(--text); flex:1;"
|
|
323
|
-
<button class="btn btn-green" id="btn-yes-${index}"
|
|
324
|
-
<button class="btn btn-ghost" id="btn-no-${index}"
|
|
383
|
+
<span style="font-size:13px; color:var(--text); flex:1;">${T.allowQ}</span>
|
|
384
|
+
<button class="btn btn-green" id="btn-yes-${index}">${T.allow}</button>
|
|
385
|
+
<button class="btn btn-ghost" id="btn-no-${index}">${T.skip}</button>
|
|
325
386
|
`;
|
|
326
387
|
card.appendChild(bar);
|
|
327
388
|
card.classList.add('open'); // auto-expand so user sees what's about to run
|
|
@@ -347,7 +408,7 @@
|
|
|
347
408
|
div.innerHTML = `
|
|
348
409
|
<div class="step-top" onclick="this.parentElement.classList.toggle('open')">
|
|
349
410
|
<div class="step-icon">๐ก</div>
|
|
350
|
-
<div class="step-title" id="scan-title"
|
|
411
|
+
<div class="step-title" id="scan-title">${T.scanning}</div>
|
|
351
412
|
<div class="step-status" id="scan-status"><div class="spinner"></div></div>
|
|
352
413
|
</div>
|
|
353
414
|
<div class="step-detail" id="scan-detail"></div>
|
|
@@ -359,14 +420,14 @@
|
|
|
359
420
|
const el = document.getElementById('scan-status');
|
|
360
421
|
if (el) el.innerHTML = 'โ';
|
|
361
422
|
const title = document.getElementById('scan-title');
|
|
362
|
-
if (title) title.textContent =
|
|
423
|
+
if (title) title.textContent = T.scanned;
|
|
363
424
|
}
|
|
364
425
|
|
|
365
426
|
// โโโ Result cards โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
366
427
|
|
|
367
428
|
function renderWarnings(warnings) {
|
|
368
429
|
if (!warnings || warnings.length === 0) return '';
|
|
369
|
-
let html = '<div class="warnings-list"><div class="warnings-title"
|
|
430
|
+
let html = '<div class="warnings-list"><div class="warnings-title">' + T.warnings + '</div>';
|
|
370
431
|
for (const w of warnings) {
|
|
371
432
|
html += `<div class="warning-item"><span class="wi-icon">๐ก</span><span class="wi-text">${esc(w)}</span><button class="wi-dismiss" title="Dismiss" onclick="(function(btn){var item=btn.closest('.warning-item');item.classList.add('dismissing');setTimeout(function(){item.remove();},300);})(this)">ร</button></div>`;
|
|
372
433
|
}
|
|
@@ -379,30 +440,46 @@
|
|
|
379
440
|
div.className = 'result';
|
|
380
441
|
const warningsHtml = renderWarnings(data.warnings);
|
|
381
442
|
|
|
443
|
+
const feedbackHtml = `
|
|
444
|
+
<div style="margin-top:18px;padding:14px;background:#f8f9fa;border-radius:10px;border:1px solid #e0e0e0;">
|
|
445
|
+
<div style="font-size:13px;color:#555;margin-bottom:8px;">${T.wasHelpful}</div>
|
|
446
|
+
<div style="display:flex;gap:8px;margin-bottom:12px;">
|
|
447
|
+
<button class="btn btn-ghost" onclick="sendFeedback('yes',this)" style="flex:1;">${T.feedbackYes}</button>
|
|
448
|
+
<button class="btn btn-ghost" onclick="sendFeedback('no',this)" style="flex:1;">${T.feedbackNo}</button>
|
|
449
|
+
</div>
|
|
450
|
+
<div style="font-size:12px;color:#888;line-height:1.5;">
|
|
451
|
+
${T.contact}<br>
|
|
452
|
+
WeChat: <b>oliver56666</b> ยท <a href="https://github.com/jjj5666/clawaid/issues" target="_blank" style="color:#1a73e8;">GitHub Issues</a>
|
|
453
|
+
</div>
|
|
454
|
+
</div>
|
|
455
|
+
`;
|
|
456
|
+
|
|
382
457
|
if (data.healthy) {
|
|
383
458
|
div.innerHTML = `
|
|
384
459
|
<div class="result-icon">๐</div>
|
|
385
|
-
<div class="result-title"
|
|
386
|
-
<div class="result-desc">${esc(data.summary ||
|
|
460
|
+
<div class="result-title">${T.allClear}</div>
|
|
461
|
+
<div class="result-desc">${esc(data.summary || T.healthyDesc)}</div>
|
|
387
462
|
${warningsHtml}
|
|
388
|
-
|
|
463
|
+
${feedbackHtml}
|
|
464
|
+
<button class="btn btn-ghost btn-big" onclick="location.reload()" style="margin-top:14px;">${T.scanAgain}</button>
|
|
389
465
|
`;
|
|
390
466
|
} else if (data.fixed) {
|
|
391
467
|
div.innerHTML = `
|
|
392
468
|
<div class="result-icon">โ
</div>
|
|
393
|
-
<div class="result-title"
|
|
394
|
-
<div class="result-desc">${esc(data.summary ||
|
|
469
|
+
<div class="result-title">${T.fixed}</div>
|
|
470
|
+
<div class="result-desc">${esc(data.summary || T.fixedDesc)}</div>
|
|
395
471
|
${warningsHtml}
|
|
396
|
-
|
|
472
|
+
${feedbackHtml}
|
|
473
|
+
<button class="btn btn-ghost btn-big" onclick="location.reload()" style="margin-top:14px;">${T.scanAgain}</button>
|
|
397
474
|
`;
|
|
398
475
|
} else {
|
|
399
476
|
div.innerHTML = `
|
|
400
477
|
<div class="result-icon">๐</div>
|
|
401
|
-
<div class="result-title"
|
|
402
|
-
<div class="result-desc">${esc(data.summary ||
|
|
478
|
+
<div class="result-title">${T.notFixed}</div>
|
|
479
|
+
<div class="result-desc">${esc(data.summary || T.notFixedDesc)}</div>
|
|
403
480
|
${warningsHtml}
|
|
404
|
-
|
|
405
|
-
<button class="btn btn-ghost btn-big" onclick="location.reload()"
|
|
481
|
+
${feedbackHtml}
|
|
482
|
+
<button class="btn btn-ghost btn-big" onclick="location.reload()" style="margin-top:14px;">${T.tryAgain}</button>
|
|
406
483
|
`;
|
|
407
484
|
}
|
|
408
485
|
|
|
@@ -577,11 +654,11 @@
|
|
|
577
654
|
div.className = 'start-card';
|
|
578
655
|
div.id = 'desc-input-card';
|
|
579
656
|
div.innerHTML = `
|
|
580
|
-
<p style="font-size:15px; font-weight:500; color:var(--text); margin-bottom:4px;"
|
|
581
|
-
<p style="font-size:13px; color:var(--text2); margin-bottom:12px;"
|
|
657
|
+
<p style="font-size:15px; font-weight:500; color:var(--text); margin-bottom:4px;">${T.whatsWrong}</p>
|
|
658
|
+
<p style="font-size:13px; color:var(--text2); margin-bottom:12px;">${T.descHint}</p>
|
|
582
659
|
<div class="desc-input-wrap">
|
|
583
660
|
<div class="desc-textarea-wrap">
|
|
584
|
-
<textarea class="desc-textarea" id="desc-text" placeholder="
|
|
661
|
+
<textarea class="desc-textarea" id="desc-text" placeholder="${T.descPlaceholder}"></textarea>
|
|
585
662
|
<button class="desc-camera-btn" id="desc-camera-btn" title="Add screenshot">๐ท</button>
|
|
586
663
|
<input type="file" id="screenshot-input" accept="image/*" style="display:none;" />
|
|
587
664
|
</div>
|
|
@@ -592,8 +669,8 @@
|
|
|
592
669
|
</div>
|
|
593
670
|
</div>
|
|
594
671
|
<div class="btn-row" style="margin-top:10px;">
|
|
595
|
-
<button class="btn btn-primary" id="btn-desc-submit" disabled
|
|
596
|
-
<button class="btn btn-green" id="btn-desc-skip"
|
|
672
|
+
<button class="btn btn-primary" id="btn-desc-submit" disabled>${T.sendDiagnose}</button>
|
|
673
|
+
<button class="btn btn-green" id="btn-desc-skip">${T.justScan}</button>
|
|
597
674
|
</div>
|
|
598
675
|
`;
|
|
599
676
|
feed.appendChild(div);
|