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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAwJtB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxD;AAED,eAAe,GAAG,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
  });
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawaid",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "AI-powered diagnostic and repair tool for OpenClaw",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
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,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');
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;">This will modify your system. Allow?</span>
323
- <button class="btn btn-green" id="btn-yes-${index}">โœ“ Allow</button>
324
- <button class="btn btn-ghost" id="btn-no-${index}">Skip</button>
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">Scanning your system...</div>
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 = 'System data collected';
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">โš ๏ธ Other things to know</div>';
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">All clear!</div>
386
- <div class="result-desc">${esc(data.summary || 'Your OpenClaw is running normally.')}</div>
460
+ <div class="result-title">${T.allClear}</div>
461
+ <div class="result-desc">${esc(data.summary || T.healthyDesc)}</div>
387
462
  ${warningsHtml}
388
- <button class="btn btn-ghost btn-big" onclick="location.reload()" style="margin-top:14px;">๐Ÿ”„ Scan Again</button>
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">Fixed!</div>
394
- <div class="result-desc">${esc(data.summary || 'OpenClaw has been repaired.')}</div>
469
+ <div class="result-title">${T.fixed}</div>
470
+ <div class="result-desc">${esc(data.summary || T.fixedDesc)}</div>
395
471
  ${warningsHtml}
396
- <button class="btn btn-ghost btn-big" onclick="location.reload()" style="margin-top:14px;">๐Ÿ”„ Scan Again</button>
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">Couldn't fix automatically</div>
402
- <div class="result-desc">${esc(data.summary || 'After multiple attempts, the issue persists.')}</div>
478
+ <div class="result-title">${T.notFixed}</div>
479
+ <div class="result-desc">${esc(data.summary || T.notFixedDesc)}</div>
403
480
  ${warningsHtml}
404
- <button class="btn btn-ghost btn-big" onclick="window.open('https://discord.gg/openclaw','_blank')" style="margin-bottom:8px; margin-top:14px;">๐Ÿ’ฌ Get Help on Discord</button>
405
- <button class="btn btn-ghost btn-big" onclick="location.reload()">๐Ÿ”„ Try Again</button>
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;">What's going on?</p>
581
- <p style="font-size:13px; color:var(--text2); margin-bottom:12px;">Describe the problem, or just scan โ€” ClawAid will figure it out.</p>
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="e.g. OpenClaw stopped responding after I updated... (optional)"></textarea>
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>๐Ÿ“ Send &amp; diagnose</button>
596
- <button class="btn btn-green" id="btn-desc-skip">๐Ÿ” Just scan &amp; fix</button>
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);