clawaid 1.1.30 → 1.1.32

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/loop.d.ts CHANGED
@@ -34,6 +34,7 @@ export declare class DoctorLoop {
34
34
  private fixAttempts;
35
35
  private pendingConfirm?;
36
36
  private pendingDescription?;
37
+ private pendingFeedback?;
37
38
  private sbSessionId?;
38
39
  private sessionPaid;
39
40
  constructor(callback: EventCallback);
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,0BAA0B,GAC1B,WAAW,GACX,SAAS,GACT,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,UAAU,GACV,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EACA,cAAc,GACd,UAAU,GACV,YAAY,GACZ,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,SAAS,GACT,eAAe,GACf,OAAO,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AAEvD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAC,CAA6D;IACpF,OAAO,CAAC,kBAAkB,CAAC,CAA6E;IACxG,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,aAAa;IAInC,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,OAAO,CAAC,IAAI,EAAE,MAAM;IAEpB,OAAO,CAAC,SAAS;YAyBH,YAAY;IAmB1B,IAAI;IAEJ,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAEV,KAAK;IA6BL,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAU1E,WAAW,CAAC,SAAS,EAAE,OAAO;IAQ9B,QAAQ;YAIA,OAAO;IA2IrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;YAqBR,QAAQ;IAuFhB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM;CAIlC"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,0BAA0B,GAC1B,WAAW,GACX,SAAS,GACT,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,UAAU,GACV,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EACA,cAAc,GACd,UAAU,GACV,YAAY,GACZ,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,SAAS,GACT,eAAe,GACf,OAAO,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AAEvD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAC,CAA6D;IACpF,OAAO,CAAC,kBAAkB,CAAC,CAA6E;IACxG,OAAO,CAAC,eAAe,CAAC,CAA8F;IACtH,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,aAAa;IAInC,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,OAAO,CAAC,IAAI,EAAE,MAAM;IAEpB,OAAO,CAAC,SAAS;YAyBH,YAAY;IAmB1B,IAAI;IAEJ,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAIV,KAAK;IA6BL,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAoB1E,WAAW,CAAC,SAAS,EAAE,OAAO;IAQ9B,QAAQ;YAIA,OAAO;IA+KrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;YAqBR,QAAQ;IAuFhB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM;CAIlC"}
package/dist/loop.js CHANGED
@@ -115,7 +115,9 @@ class DoctorLoop {
115
115
  stop() { this.stopped = true; }
116
116
  emit(event) { this.callback(event); }
117
117
  setState(s) { this.state = s; this.emit({ type: 'state_change', data: { state: s } }); }
118
- progress(msg) { this.emit({ type: 'progress', data: { message: msg } }); }
118
+ progress(event) {
119
+ this.emit({ type: 'progress', data: typeof event === 'string' ? { message: event } : event });
120
+ }
119
121
  async start() {
120
122
  // Ask user to describe their problem (or skip)
121
123
  this.setState('waiting_user_description');
@@ -149,6 +151,18 @@ class DoctorLoop {
149
151
  this.pendingDescription = undefined;
150
152
  }
151
153
  }
154
+ else if (field === 'userFeedback') {
155
+ if (this.pendingFeedback) {
156
+ this.pendingFeedback.resolve({ resolved: false, feedback: value, screenshot: extra?.screenshot });
157
+ this.pendingFeedback = undefined;
158
+ }
159
+ }
160
+ else if (field === 'userConfirmResolved') {
161
+ if (this.pendingFeedback) {
162
+ this.pendingFeedback.resolve({ resolved: true });
163
+ this.pendingFeedback = undefined;
164
+ }
165
+ }
152
166
  }
153
167
  // Called when user confirms or rejects a medium/high risk step
154
168
  async confirmStep(confirmed) {
@@ -170,7 +184,7 @@ class DoctorLoop {
170
184
  const mockScenario = global.__clawaid_mock;
171
185
  const obs = mockScenario
172
186
  ? (0, observe_1.loadMockObservation)(mockScenario)
173
- : await (0, observe_1.observe)((msg) => this.progress(msg));
187
+ : await (0, observe_1.observe)((event) => this.progress(event));
174
188
  this.observation = obs;
175
189
  this.observationText = (0, observe_1.formatObservation)(obs);
176
190
  this.progress('✓ Scan complete');
@@ -182,9 +196,10 @@ class DoctorLoop {
182
196
  return;
183
197
  // Ask AI for next step
184
198
  let step;
185
- this.progress(stepIndex === 0 ? '🤖 AI is analyzing your system...' : '🤖 AI is thinking...');
199
+ this.progress({ id: 'ai-analyze', label: 'AI analyzing system data', status: 'pending' });
186
200
  try {
187
201
  step = await this.callStep(stepIndex === 0);
202
+ this.progress({ id: 'ai-analyze', label: 'AI analyzing system data', status: 'done' });
188
203
  }
189
204
  catch (err) {
190
205
  if (err instanceof diagnose_1.PaywallError) {
@@ -220,33 +235,69 @@ class DoctorLoop {
220
235
  const fix = step.fix || null;
221
236
  const degraded = step.degraded || false;
222
237
  const baseData = { summary: step.summary, warnings, problem, fix, history: this.history, sbSessionId: this.sbSessionId };
223
- if (step.fixed) {
224
- this.setState('fixed');
225
- // Deduct 1 credit if using a paid token
226
- if (this.token) {
227
- this.callComplete(this.token).catch(() => { });
238
+ // Emit complete event to show results in UI
239
+ const outcome = step.fixed ? 'fixed' : (degraded ? 'degraded' : (this.fixAttempts === 0 ? 'healthy' : 'not_fixed'));
240
+ this.emit({ type: 'complete', data: { ...baseData, fixed: step.fixed || false, degraded, healthy: outcome === 'healthy' } });
241
+ // Ask user to confirm: resolved or not?
242
+ this.setState('waiting');
243
+ this.emit({
244
+ type: 'request_input',
245
+ data: {
246
+ field: 'userFeedback',
247
+ instructions: step.fixed
248
+ ? 'ClawAid thinks the issue is fixed. Is your OpenClaw working now?'
249
+ : (outcome === 'healthy'
250
+ ? 'ClawAid found no issues. Is your OpenClaw working as expected?'
251
+ : 'ClawAid could not fully fix the issue. Want to provide more details so it can try again?'),
252
+ allowSkip: true,
253
+ allowScreenshot: true,
254
+ showResolvedButton: true,
228
255
  }
229
- this.emit({ type: 'complete', data: { ...baseData, fixed: true } });
230
- this.sendEvent('session_end', { reason: 'done', duration_ms: Date.now() - loopStartTime, steps_completed: stepsCompleted, outcome: 'fixed' });
231
- }
232
- else if (degraded) {
233
- // System runs but has functional issues (auth errors, model failures, etc.)
234
- this.setState('degraded');
235
- this.emit({ type: 'complete', data: { ...baseData, fixed: false, degraded: true } });
236
- this.sendEvent('session_end', { reason: 'done', duration_ms: Date.now() - loopStartTime, steps_completed: stepsCompleted, outcome: 'degraded' });
237
- }
238
- else if (this.fixAttempts === 0 && !step.fixed) {
239
- // Healthy — no fixes were needed
240
- this.setState('healthy');
241
- this.emit({ type: 'complete', data: { ...baseData, fixed: false, healthy: true } });
242
- this.sendEvent('session_end', { reason: 'done', duration_ms: Date.now() - loopStartTime, steps_completed: stepsCompleted, outcome: 'healthy' });
256
+ });
257
+ // Wait for user feedback
258
+ const feedback = await new Promise((resolve) => {
259
+ this.pendingFeedback = { resolve };
260
+ // Auto-resolve after 5 minutes if user doesn't respond
261
+ setTimeout(() => {
262
+ if (this.pendingFeedback) {
263
+ this.pendingFeedback.resolve({ resolved: true });
264
+ this.pendingFeedback = undefined;
265
+ }
266
+ }, 300000);
267
+ });
268
+ if (feedback.resolved) {
269
+ // User confirmed resolved (or timed out)
270
+ if (step.fixed) {
271
+ this.setState('fixed');
272
+ if (this.token) {
273
+ this.callComplete(this.token).catch(() => { });
274
+ }
275
+ }
276
+ else if (degraded) {
277
+ this.setState('degraded');
278
+ }
279
+ else if (this.fixAttempts === 0) {
280
+ this.setState('healthy');
281
+ }
282
+ else {
283
+ this.setState('not_fixed');
284
+ }
285
+ this.sendEvent('session_end', { reason: 'done', duration_ms: Date.now() - loopStartTime, steps_completed: stepsCompleted, outcome });
286
+ return;
243
287
  }
244
288
  else {
245
- this.setState('not_fixed');
246
- this.emit({ type: 'complete', data: { ...baseData, fixed: false } });
247
- this.sendEvent('session_end', { reason: 'done', duration_ms: Date.now() - loopStartTime, steps_completed: stepsCompleted, outcome: 'not_fixed' });
289
+ // User says NOT resolved — inject feedback and continue the loop
290
+ this.setState('running');
291
+ const feedbackText = feedback.feedback || 'User says the issue is not resolved.';
292
+ this.userDescription = `[PREVIOUS DIAGNOSIS FAILED] User feedback: ${feedbackText}\n\nOriginal problem: ${this.userDescription}`;
293
+ if (feedback.screenshot)
294
+ this.userScreenshot = feedback.screenshot;
295
+ // Add AI's done step to history so it knows what it tried
296
+ this.history.push({ step, output: `[User feedback: NOT RESOLVED] ${feedbackText}`, timestamp: Date.now() });
297
+ this.sendEvent('user_feedback', { resolved: false, feedback: feedbackText });
298
+ // Continue the loop — AI will see the feedback in history
299
+ continue;
248
300
  }
249
- return;
250
301
  }
251
302
  // Announce step to UI
252
303
  this.emit({ type: 'step_start', data: { step, index: stepIndex } });
package/dist/loop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
package/dist/observe.d.ts CHANGED
@@ -1,8 +1,13 @@
1
1
  import { RuleFinding } from './rules';
2
+ export type ProgressEvent = string | {
3
+ id: string;
4
+ label: string;
5
+ status: 'pending' | 'done' | 'error';
6
+ detail?: string;
7
+ };
2
8
  export interface ObservationResult {
3
9
  timestamp: string;
4
10
  openclawStatus: string;
5
- gatewayStatus: string;
6
11
  gatewayStatusJson: string;
7
12
  configContent: string;
8
13
  configPath: string;
@@ -27,6 +32,6 @@ export interface ObservationResult {
27
32
  ruleFindings?: RuleFinding[];
28
33
  }
29
34
  export declare function loadMockObservation(scenario: string): ObservationResult;
30
- export declare function observe(onProgress?: (msg: string) => void): Promise<ObservationResult>;
35
+ export declare function observe(onProgress?: (msg: ProgressEvent) => void): Promise<ObservationResult>;
31
36
  export declare function formatObservation(obs: ObservationResult): string;
32
37
  //# sourceMappingURL=observe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAgC,MAAM,SAAS,CAAC;AAIpE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B;AAsID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAWvE;AAED,wBAAsB,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAqH5F;AAgBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CA4EhE"}
1
+ {"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAgC,MAAM,SAAS,CAAC;AAIpE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1H,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B;AAwID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAWvE;AAED,wBAAsB,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+JnG;AAgBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAyEhE"}
package/dist/observe.js CHANGED
@@ -65,13 +65,15 @@ async function runCommand(cmd, timeout = 10000) {
65
65
  }
66
66
  }
67
67
  // v3: Read tail of a single file. Returns empty string on error.
68
+ // v4: Truncate each line to maxLineLen chars to keep observation compact.
69
+ const MAX_LINE_LEN = 500;
68
70
  function readTail(filePath, lines) {
69
71
  try {
70
72
  if (!fs.existsSync(filePath))
71
73
  return '';
72
74
  const content = fs.readFileSync(filePath, 'utf-8');
73
75
  const allLines = content.split('\n');
74
- return allLines.slice(-lines).join('\n');
76
+ return allLines.slice(-lines).map(l => l.length > MAX_LINE_LEN ? l.slice(0, MAX_LINE_LEN) + '…[truncated]' : l).join('\n');
75
77
  }
76
78
  catch {
77
79
  return '';
@@ -102,20 +104,20 @@ function collectLogs() {
102
104
  const homeDir = os.homedir();
103
105
  const parts = [];
104
106
  let primaryLogPath = '[none]';
105
- // 1. Primary: /tmp/openclaw main log (50 lines) — most diagnostic value
107
+ // 1. Primary: /tmp/openclaw main log (30 lines) — most diagnostic value
106
108
  const tmpDir = '/tmp/openclaw';
107
109
  const mainLog = findLatestLogInDir(tmpDir);
108
110
  if (mainLog) {
109
111
  primaryLogPath = mainLog;
110
- const tail = readTail(mainLog, 50);
112
+ const tail = readTail(mainLog, 30);
111
113
  if (tail)
112
- parts.push(`### Main log: ${mainLog} (last 50 lines)\n${tail}`);
114
+ parts.push(`### Main log: ${mainLog} (last 30 lines)\n${tail}`);
113
115
  }
114
- // 2. gateway.err.log (50 lines) — critical errors live here
116
+ // 2. gateway.err.log (30 lines) — critical errors live here
115
117
  const gwErrLog = path.join(homeDir, '.openclaw', 'logs', 'gateway.err.log');
116
- const gwErrTail = readTail(gwErrLog, 50);
118
+ const gwErrTail = readTail(gwErrLog, 30);
117
119
  if (gwErrTail)
118
- parts.push(`### Gateway errors: ${gwErrLog} (last 50 lines)\n${gwErrTail}`);
120
+ parts.push(`### Gateway errors: ${gwErrLog} (last 30 lines)\n${gwErrTail}`);
119
121
  // 3. gateway.log (20 lines) — runtime events
120
122
  const gwLog = path.join(homeDir, '.openclaw', 'logs', 'gateway.log');
121
123
  const gwLogTail = readTail(gwLog, 20);
@@ -184,104 +186,142 @@ function loadMockObservation(scenario) {
184
186
  async function observe(onProgress) {
185
187
  const errors = [];
186
188
  const homeDir = os.homedir();
187
- const progress = (msg) => {
189
+ const emit = (event) => {
188
190
  if (onProgress)
189
- onProgress(msg);
191
+ onProgress(event);
190
192
  };
191
- progress('Checking OpenClaw status...');
192
- const openclawStatusRaw = await runCommand('openclaw status 2>&1');
193
- const openclawStatus = truncate(openclawStatusRaw, 2000);
194
- progress('Checking gateway status...');
195
- const gatewayStatus = await runCommand('openclaw gateway status 2>&1');
196
- const gatewayStatusJson = await runCommand('openclaw gateway status --json 2>&1');
197
- progress('Running official openclaw doctor...');
198
- const officialDoctorRaw = await runCommand('openclaw doctor 2>&1', 30000);
199
- const officialDoctorOutput = truncate(officialDoctorRaw, 3000);
200
- progress('Reading config file...');
201
- const { content: configContent, configPath } = await readConfig();
202
- progress('Checking port 18789...');
203
- const portCheck = await runCommand('lsof -i :18789 2>&1 || echo "[lsof not available or port not in use]"');
204
- progress('Checking OpenClaw processes...');
205
- const processCheck = await runCommand('ps aux | grep -i "[o]penclaw"');
206
- progress('Reading launch agent plist...');
207
- const { content: plistContent, plistPath } = await readPlist();
208
- progress('Finding and reading logs...');
209
- const { sections: recentLogs, primaryLogPath: logPath } = collectLogs();
210
- progress('Checking Node.js version...');
211
- const nodeVersion = await runCommand('node -v 2>&1');
212
- const npmVersion = await runCommand('npm -v 2>&1');
213
- progress('Checking OpenClaw version...');
214
- const openclawVersion = await runCommand('openclaw --version 2>&1');
215
- progress('Checking OpenClaw desktop app...');
216
- const desktopAppVersion = await runCommand('defaults read /Applications/OpenClaw.app/Contents/Info.plist CFBundleShortVersionString 2>&1');
217
- const desktopAppRunning = await runCommand('pgrep -f "OpenClaw.app" 2>&1');
218
- progress('Gathering system info...');
219
- const systemInfo = await runCommand('sw_vers 2>/dev/null || uname -a');
220
- // v3: new data sources
221
- progress('Checking device pairing...');
222
- const devicesList = await runCommand('openclaw devices list 2>&1');
223
- progress('Checking session integrity...');
224
- const sessionDir = path.join(homeDir, '.openclaw', 'sessions');
225
- let sessionIntegrity = 'no sessions directory';
226
- try {
227
- if (fs.existsSync(sessionDir)) {
228
- const sessionFiles = fs.readdirSync(sessionDir).filter(f => f.endsWith('.json')).slice(-5);
229
- if (sessionFiles.length === 0) {
230
- sessionIntegrity = 'sessions directory exists but no .json files';
231
- }
232
- else {
233
- const checks = [];
234
- for (const sf of sessionFiles) {
235
- try {
236
- const content = fs.readFileSync(path.join(sessionDir, sf), 'utf-8');
237
- // Quick integrity check: valid JSON + no orphaned messages
238
- JSON.parse(content);
239
- const hasOrphaned = /orphaned/i.test(content);
240
- checks.push(`${sf}: ${hasOrphaned ? 'ORPHANED MESSAGES DETECTED' : 'ok'}`);
193
+ // Run all observation groups in parallel, each emitting structured progress
194
+ const [statusResult, gatewayResult, doctorResult, configResult, logsResult, devicesResult, versionsResult, sessionsResult,] = await Promise.all([
195
+ // Group: status — openclaw status, version, desktop app, port/process checks
196
+ (async () => {
197
+ emit({ id: 'status', label: 'OpenClaw status', status: 'pending' });
198
+ const [openclawStatusRaw, openclawVersion, desktopAppVersion, desktopAppRunning, portCheck, processCheck] = await Promise.all([
199
+ runCommand('openclaw status 2>&1'),
200
+ runCommand('openclaw --version 2>&1'),
201
+ runCommand('defaults read /Applications/OpenClaw.app/Contents/Info.plist CFBundleShortVersionString 2>&1'),
202
+ runCommand('pgrep -f "OpenClaw.app" 2>&1'),
203
+ runCommand('lsof -i :18789 2>&1 || echo "[lsof not available or port not in use]"'),
204
+ runCommand('ps aux | grep -i "[o]penclaw"'),
205
+ ]);
206
+ emit({ id: 'status', label: 'OpenClaw status', status: 'done' });
207
+ return { openclawStatus: truncate(openclawStatusRaw, 2000), openclawVersion, desktopAppVersion, desktopAppRunning, portCheck, processCheck };
208
+ })(),
209
+ // Group: gateway gateway status JSON only
210
+ (async () => {
211
+ emit({ id: 'gateway', label: 'Gateway health', status: 'pending' });
212
+ const gatewayStatusJson = await runCommand('openclaw gateway status --json 2>&1');
213
+ emit({ id: 'gateway', label: 'Gateway health', status: 'done' });
214
+ return { gatewayStatusJson };
215
+ })(),
216
+ // Group: doctor official openclaw doctor
217
+ (async () => {
218
+ emit({ id: 'doctor', label: 'Doctor check', status: 'pending' });
219
+ const officialDoctorRaw = await runCommand('openclaw doctor 2>&1', 30000);
220
+ emit({ id: 'doctor', label: 'Doctor check', status: 'done' });
221
+ return { officialDoctorOutput: truncate(officialDoctorRaw, 3000) };
222
+ })(),
223
+ // Group: config — config file + launch agent plist (file reads, fast)
224
+ (async () => {
225
+ emit({ id: 'config', label: 'Config & launch agent', status: 'pending' });
226
+ const [{ content: configContent, configPath }, { content: plistContent, plistPath }] = await Promise.all([
227
+ readConfig(),
228
+ readPlist(),
229
+ ]);
230
+ emit({ id: 'config', label: 'Config & launch agent', status: 'done' });
231
+ return { configContent, configPath, plistContent, plistPath };
232
+ })(),
233
+ // Group: logs — collect all log files (file reads, fast)
234
+ (async () => {
235
+ emit({ id: 'logs', label: 'System logs', status: 'pending' });
236
+ const { sections: recentLogs, primaryLogPath: logPath } = collectLogs();
237
+ emit({ id: 'logs', label: 'System logs', status: 'done' });
238
+ return { recentLogs, logPath };
239
+ })(),
240
+ // Group: devices — device pairing list
241
+ (async () => {
242
+ emit({ id: 'devices', label: 'Device pairing', status: 'pending' });
243
+ const devicesList = await runCommand('openclaw devices list 2>&1');
244
+ emit({ id: 'devices', label: 'Device pairing', status: 'done' });
245
+ return { devicesList };
246
+ })(),
247
+ // Group: versions — node, npm, system info, latest openclaw version
248
+ (async () => {
249
+ emit({ id: 'versions', label: 'Version check', status: 'pending' });
250
+ const [nodeVersion, npmVersion, systemInfo, latestVersion] = await Promise.all([
251
+ runCommand('node -v 2>&1'),
252
+ runCommand('npm -v 2>&1'),
253
+ runCommand('sw_vers 2>/dev/null || uname -a'),
254
+ runCommand('npm view openclaw version 2>&1'),
255
+ ]);
256
+ emit({ id: 'versions', label: 'Version check', status: 'done' });
257
+ return { nodeVersion, npmVersion, systemInfo, latestVersion };
258
+ })(),
259
+ // Group: sessions — session file integrity check
260
+ (async () => {
261
+ emit({ id: 'sessions', label: 'Session integrity', status: 'pending' });
262
+ const sessionDir = path.join(homeDir, '.openclaw', 'sessions');
263
+ let sessionIntegrity = 'no sessions directory';
264
+ try {
265
+ if (fs.existsSync(sessionDir)) {
266
+ const sessionFiles = fs.readdirSync(sessionDir).filter(f => f.endsWith('.json')).slice(-5);
267
+ if (sessionFiles.length === 0) {
268
+ sessionIntegrity = 'sessions directory exists but no .json files';
241
269
  }
242
- catch {
243
- checks.push(`${sf}: PARSE ERROR`);
270
+ else {
271
+ const checks = [];
272
+ for (const sf of sessionFiles) {
273
+ try {
274
+ const content = fs.readFileSync(path.join(sessionDir, sf), 'utf-8');
275
+ // Quick integrity check: valid JSON + no orphaned messages
276
+ JSON.parse(content);
277
+ const hasOrphaned = /orphaned/i.test(content);
278
+ checks.push(`${sf}: ${hasOrphaned ? 'ORPHANED MESSAGES DETECTED' : 'ok'}`);
279
+ }
280
+ catch {
281
+ checks.push(`${sf}: PARSE ERROR`);
282
+ }
283
+ }
284
+ sessionIntegrity = checks.join('\n');
244
285
  }
245
286
  }
246
- sessionIntegrity = checks.join('\n');
247
287
  }
248
- }
249
- }
250
- catch {
251
- sessionIntegrity = 'error checking sessions';
252
- }
253
- progress('Checking version gap...');
254
- const latestVersion = await runCommand('npm view openclaw version 2>&1');
255
- const versionGap = `current: ${openclawVersion} | latest: ${latestVersion}`;
288
+ catch {
289
+ sessionIntegrity = 'error checking sessions';
290
+ }
291
+ emit({ id: 'sessions', label: 'Session integrity', status: 'done' });
292
+ return { sessionIntegrity };
293
+ })(),
294
+ ]);
295
+ const versionGap = `current: ${statusResult.openclawVersion} | latest: ${versionsResult.latestVersion}`;
256
296
  const obs = {
257
297
  timestamp: new Date().toISOString(),
258
- openclawStatus,
259
- gatewayStatus,
260
- gatewayStatusJson,
261
- configContent,
262
- configPath,
263
- portCheck,
264
- processCheck,
265
- plistContent,
266
- plistPath,
267
- recentLogs,
268
- logPath,
269
- nodeVersion,
270
- npmVersion,
271
- openclawVersion,
272
- systemInfo,
298
+ openclawStatus: statusResult.openclawStatus,
299
+ gatewayStatusJson: gatewayResult.gatewayStatusJson,
300
+ configContent: configResult.configContent,
301
+ configPath: configResult.configPath,
302
+ portCheck: statusResult.portCheck,
303
+ processCheck: statusResult.processCheck,
304
+ plistContent: configResult.plistContent,
305
+ plistPath: configResult.plistPath,
306
+ recentLogs: logsResult.recentLogs,
307
+ logPath: logsResult.logPath,
308
+ nodeVersion: versionsResult.nodeVersion,
309
+ npmVersion: versionsResult.npmVersion,
310
+ openclawVersion: statusResult.openclawVersion,
311
+ systemInfo: versionsResult.systemInfo,
273
312
  homeDir,
274
- officialDoctorOutput,
275
- desktopAppVersion,
276
- desktopAppRunning,
277
- devicesList,
278
- sessionIntegrity,
313
+ officialDoctorOutput: doctorResult.officialDoctorOutput,
314
+ desktopAppVersion: statusResult.desktopAppVersion,
315
+ desktopAppRunning: statusResult.desktopAppRunning,
316
+ devicesList: devicesResult.devicesList,
317
+ sessionIntegrity: sessionsResult.sessionIntegrity,
279
318
  versionGap,
280
319
  errors,
281
320
  };
282
321
  // Run deterministic rule checks
283
- progress('Running rule checks...');
322
+ emit({ id: 'rules', label: 'Rule engine', status: 'pending' });
284
323
  obs.ruleFindings = (0, rules_1.runRules)(obs);
324
+ emit({ id: 'rules', label: 'Rule engine', status: 'done' });
285
325
  return obs;
286
326
  }
287
327
  function truncate(text, maxChars) {
@@ -305,8 +345,8 @@ function formatObservation(obs) {
305
345
  // Detect Windows platform from system info or paths
306
346
  const isWindows = os.platform() === 'win32'
307
347
  || /windows|win32|win64|\\Users\\/i.test(obs.systemInfo + obs.homeDir + obs.configPath)
308
- || /Scheduled Task/i.test(obs.gatewayStatus + obs.officialDoctorOutput)
309
- || /ENOENT.*zsh|spawnSync.*zsh/i.test(obs.gatewayStatus + obs.officialDoctorOutput);
348
+ || /Scheduled Task/i.test(obs.officialDoctorOutput)
349
+ || /ENOENT.*zsh|spawnSync.*zsh/i.test(obs.officialDoctorOutput);
310
350
  const platformWarning = isWindows ? `
311
351
  ## ⚠️ PLATFORM: WINDOWS
312
352
  This is a Windows system. OpenClaw CLI commands like \`openclaw gateway restart\` often fail on Windows with \`spawnSync /bin/zsh ENOENT\`. Use Windows-native equivalents instead — **ClawAid's executor runs commands via cmd.exe so they WILL work**:
@@ -335,9 +375,6 @@ Desktop app version: ${obs.desktopAppVersion}
335
375
  Desktop app running: ${obs.desktopAppRunning}
336
376
  System: ${obs.systemInfo}
337
377
 
338
- ## Gateway status
339
- ${obs.gatewayStatus}
340
-
341
378
  ## Gateway status (JSON)
342
379
  ${redactApiKeys(obs.gatewayStatusJson)}
343
380
 
@@ -1 +1 @@
1
- {"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"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"}
package/dist/rules.js CHANGED
@@ -73,7 +73,7 @@ const configParseError = (obs) => {
73
73
  return [];
74
74
  };
75
75
  const gatewayNotRunning = (obs) => {
76
- const status = obs.gatewayStatus || '';
76
+ const status = obs.gatewayStatusJson || '';
77
77
  const lower = status.toLowerCase();
78
78
  if (lower.includes('not running') && !lower.includes('config')) {
79
79
  return [{
@@ -87,7 +87,7 @@ const gatewayNotRunning = (obs) => {
87
87
  return [];
88
88
  };
89
89
  const portConflict = (obs) => {
90
- const status = obs.gatewayStatus || '';
90
+ const status = obs.gatewayStatusJson || '';
91
91
  const logs = obs.recentLogs || '';
92
92
  const combined = status + '\n' + logs;
93
93
  if (/EADDRINUSE/i.test(combined)) {
package/dist/rules.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.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.30",
3
+ "version": "1.1.32",
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
@@ -166,39 +166,79 @@
166
166
  .schk-icon.pending { color: var(--text-muted); }
167
167
  .schk-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
168
168
 
169
- /* ═══ AI Thinking Card ══════════════════════════════════════════════════ */
170
- .ai-thinking-card {
169
+ /* ═══ Scan Checklist ══════════════════════════════════════════════════════ */
170
+ .scan-checklist { }
171
+ .scl-item {
172
+ display: flex; align-items: center; gap: 10px;
173
+ padding: 5px 20px; font-size: 12px;
174
+ animation: fadeIn .22s ease both;
175
+ }
176
+ .scl-item:first-child { padding-top: 10px; border-top: 1px solid var(--border); }
177
+ .scl-item:last-child { padding-bottom: 12px; }
178
+ .scl-icon { width: 20px; text-align: center; flex-shrink: 0; font-size: 13px; display: flex; align-items: center; justify-content: center; }
179
+ .scl-label { flex: 1; color: var(--text-secondary); }
180
+ .scl-label.pending { color: var(--accent); }
181
+ .scl-label.error { color: var(--red); }
182
+ .scl-time { font-size: 11px; color: var(--text-muted); min-width: 34px; text-align: right; }
183
+
184
+ /* ═══ AI Phase Card ════════════════════════════════════════════════════ */
185
+ .ai-phase-card {
171
186
  background: var(--surface);
172
187
  border: 1px solid var(--border);
173
188
  border-radius: var(--radius);
174
189
  box-shadow: var(--shadow-sm);
175
- padding: 20px;
190
+ overflow: hidden;
176
191
  animation: fadeUp .24s ease both;
177
- margin-bottom: 12px;
178
- }
179
- .ai-thinking-hd {
180
- display: flex; align-items: center; gap: 12px; margin-bottom: 14px;
181
- }
182
- .ai-thinking-icon {
183
- font-size: 24px; animation: pulse-glow 2s ease-in-out infinite;
184
192
  }
185
- .ai-thinking-title { font-size: 14px; font-weight: 600; }
186
- .ai-thinking-sub { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
187
- .ai-thinking-steps {
188
- display: flex; flex-direction: column; gap: 8px;
189
- }
190
- .ai-step-row {
191
- display: flex; align-items: center; gap: 10px; font-size: 12px;
192
- color: var(--text-secondary); opacity: 0;
193
- animation: fadeIn .4s ease forwards;
194
- }
195
- .ai-step-row .dot {
196
- width: 6px; height: 6px; border-radius: 50%; background: var(--accent);
197
- animation: pulse-dot 1.5s ease-in-out infinite;
198
- flex-shrink: 0;
193
+ .ai-phase-hd {
194
+ display: flex; align-items: center; gap: 14px;
195
+ padding: 16px 20px;
199
196
  }
200
- .ai-step-row.done .dot { background: var(--green); animation: none; }
201
- .ai-step-row.done { color: var(--green); }
197
+ .ai-phase-emoji { font-size: 24px; flex-shrink: 0; animation: pulse-glow 2s ease-in-out infinite; }
198
+ .ai-phase-emoji.done { animation: none; }
199
+ .ai-phase-body { flex: 1; min-width: 0; }
200
+ .ai-phase-title { font-size: 14px; font-weight: 600; }
201
+ .ai-phase-sub { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
202
+ .ai-phase-right { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
203
+ .ai-phase-steps {
204
+ border-top: 1px solid var(--border);
205
+ padding: 6px 0;
206
+ }
207
+
208
+ /* ═══ AI Step Item (READ / FIX / DONE inside phase card) ═══════════════ */
209
+ .ai-step {
210
+ display: flex; align-items: flex-start; gap: 12px;
211
+ padding: 8px 20px;
212
+ font-size: 13px;
213
+ animation: fadeIn .22s ease both;
214
+ }
215
+ .ai-step-icon {
216
+ width: 22px; height: 22px; display: flex; align-items: center; justify-content: center;
217
+ flex-shrink: 0; margin-top: 1px;
218
+ }
219
+ .ai-step-body { flex: 1; min-width: 0; }
220
+ .ai-step-desc { font-weight: 500; color: var(--text); line-height: 1.4; }
221
+ .ai-step-desc.pending { color: var(--accent); }
222
+ .ai-step-cmd {
223
+ font-family: var(--mono); font-size: 11px; color: var(--text-muted);
224
+ margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
225
+ }
226
+ .ai-step-output {
227
+ font-family: var(--mono); font-size: 11px; color: var(--text-secondary);
228
+ background: var(--surface-alt); border: 1px solid var(--border);
229
+ border-radius: var(--radius-xs); padding: 8px 10px;
230
+ margin-top: 6px; max-height: 120px; overflow-y: auto;
231
+ white-space: pre-wrap; word-break: break-all; line-height: 1.45;
232
+ display: none;
233
+ }
234
+ .ai-step-output.visible { display: block; }
235
+ .ai-step-toggle {
236
+ font-size: 11px; color: var(--text-muted); background: none; border: none;
237
+ cursor: pointer; padding: 2px 0; margin-top: 4px; font-family: var(--font);
238
+ }
239
+ .ai-step-toggle:hover { color: var(--accent); }
240
+ .ai-step-meta { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
241
+ .ai-step-time { font-size: 11px; color: var(--text-muted); flex-shrink: 0; margin-top: 2px; min-width: 30px; text-align: right; }
202
242
  @keyframes pulse-glow {
203
243
  0%, 100% { transform: scale(1); opacity: 1; }
204
244
  50% { transform: scale(1.1); opacity: .8; }
@@ -620,6 +660,10 @@
620
660
  let currentStepIndex = -1;
621
661
  const stepTypes = {};
622
662
  const sCheckEls = {};
663
+ var scanStartTime = 0;
664
+ var scanTimerInterval = null;
665
+ var scanChecklistItems = {};
666
+ var scanItemStartTimes = {};
623
667
 
624
668
  const feed = document.getElementById('feed');
625
669
  const startScreen = document.getElementById('start-screen');
@@ -689,6 +733,19 @@
689
733
  pwNeedHelp: isZh ? '有问题?' : 'Need help?',
690
734
  };
691
735
 
736
+ // Checklist label map — keyed by progress id from observe.ts
737
+ var checkLabels = {
738
+ status: isZh ? 'OpenClaw 状态' : 'OpenClaw status',
739
+ gateway: isZh ? 'Gateway 健康' : 'Gateway health',
740
+ doctor: isZh ? '官方诊断' : 'Doctor check',
741
+ config: isZh ? '配置 & 启动项' : 'Config & launch agent',
742
+ logs: isZh ? '系统日志' : 'System logs',
743
+ devices: isZh ? '设备配对' : 'Device pairing',
744
+ versions: isZh ? '版本检查' : 'Version check',
745
+ sessions: isZh ? '会话完整性' : 'Session integrity',
746
+ rules: isZh ? '规则引擎' : 'Rule engine',
747
+ };
748
+
692
749
  // Apply i18n to static HTML
693
750
  document.getElementById('hdr-sub').textContent = T.subtitle;
694
751
  if (isZh) {
@@ -740,13 +797,14 @@
740
797
  + '<div class="scan-emoji">📡</div>'
741
798
  + '<div class="scan-body">'
742
799
  + '<div class="scan-title" id="scan-title">' + T.scanning + '</div>'
743
- + '<div class="scan-sub" id="scan-sub"></div>'
800
+ + '<div class="scan-sub" id="scan-sub">0.0s</div>'
744
801
  + '</div>'
745
802
  + '<div class="scan-right">'
746
803
  + '<div id="scan-status"><div class="spin spin-sm"></div></div>'
747
804
  + '<button class="scan-toggle" id="scan-toggle">' + T.viewDetails + '</button>'
748
805
  + '</div>'
749
806
  + '</div>'
807
+ + '<div id="scan-checklist" class="scan-checklist"></div>'
750
808
  + '<div class="scan-details" id="scan-details"></div>';
751
809
  feed.appendChild(el);
752
810
  document.getElementById('scan-toggle').addEventListener('click', function() {
@@ -754,80 +812,178 @@
754
812
  var open = d.classList.toggle('open');
755
813
  this.textContent = open ? T.hideDetails : T.viewDetails;
756
814
  });
815
+ // Start elapsed time timer
816
+ scanStartTime = Date.now();
817
+ scanChecklistItems = {};
818
+ scanItemStartTimes = {};
819
+ scanTimerInterval = setInterval(function() {
820
+ var sub = document.getElementById('scan-sub');
821
+ if (sub) sub.textContent = ((Date.now() - scanStartTime) / 1000).toFixed(1) + 's';
822
+ }, 100);
757
823
  scrollDown();
758
824
  }
759
825
 
760
- function updateScanProgress(msg) {
761
- var sub = document.getElementById('scan-sub');
762
- if (sub) sub.textContent = msg || '';
763
-
764
- // Show AI thinking card when AI starts analyzing
765
- if (msg && msg.indexOf('AI') !== -1 && !document.getElementById('ai-thinking-card')) {
766
- var aiCard = document.createElement('div');
767
- aiCard.className = 'ai-thinking-card';
768
- aiCard.id = 'ai-thinking-card';
769
- var thinkTitle = isZh ? '🤖 AI 正在分析你的系统...' : '🤖 AI is analyzing your system...';
770
- var thinkSub = isZh ? '通常需要 10-20 秒' : 'Usually takes 10-20 seconds';
771
- var steps = isZh
772
- ? ['读取配置文件和日志', '检查 Gateway 状态', '分析错误模式', '生成诊断方案']
773
- : ['Reading config files & logs', 'Checking gateway status', 'Analyzing error patterns', 'Generating diagnosis'];
774
- aiCard.innerHTML = '<div class="ai-thinking-hd">'
775
- + '<div class="ai-thinking-icon">🧠</div>'
776
- + '<div><div class="ai-thinking-title">' + thinkTitle + '</div>'
777
- + '<div class="ai-thinking-sub">' + thinkSub + '</div></div>'
778
- + '</div>'
779
- + '<div class="ai-thinking-steps" id="ai-thinking-steps"></div>';
780
- feed.appendChild(aiCard);
826
+ function updateScanProgress(data) {
827
+ // Legacy string message — ignored, scan-sub is controlled by the timer
828
+ if (!data || !data.id) return;
829
+
830
+ var checklist = document.getElementById('scan-checklist');
831
+
832
+ if (data.id === 'ai-analyze') {
833
+ if (data.status === 'pending') {
834
+ // Ensure AI phase card exists when AI starts
835
+ ensureAiPhaseCard();
836
+ }
837
+ return;
838
+ }
839
+
840
+ if (!checklist) return;
841
+
842
+ var label = checkLabels[data.id] || data.label || data.id;
843
+
844
+ if (data.status === 'pending') {
845
+ // Create checklist item
846
+ var item = document.createElement('div');
847
+ item.className = 'scl-item';
848
+ item.id = 'scl-' + data.id;
849
+ item.innerHTML = '<span class="scl-icon"><div class="spin spin-sm"></div></span>'
850
+ + '<span class="scl-label pending">' + esc(label) + '</span>'
851
+ + '<span class="scl-time" id="scl-t-' + data.id + '"></span>';
852
+ checklist.appendChild(item);
853
+ scanChecklistItems[data.id] = item;
854
+ scanItemStartTimes[data.id] = Date.now();
781
855
  scrollDown();
782
- // Animate steps appearing one by one
783
- var stepsEl = aiCard.querySelector('#ai-thinking-steps');
784
- steps.forEach(function(s, i) {
785
- setTimeout(function() {
786
- if (!document.getElementById('ai-thinking-card')) return;
787
- var row = document.createElement('div');
788
- row.className = 'ai-step-row';
789
- row.style.animationDelay = '0s';
790
- row.innerHTML = '<span class="dot"></span> ' + s;
791
- stepsEl.appendChild(row);
792
- scrollDown();
793
- // Mark previous step as done
794
- if (i > 0) {
795
- var prev = stepsEl.children[i - 1];
796
- if (prev) prev.className = 'ai-step-row done';
797
- }
798
- }, i * 3000);
799
- });
856
+ } else if (data.status === 'done' || data.status === 'error') {
857
+ var existing = document.getElementById('scl-' + data.id);
858
+ if (!existing) return;
859
+ var elapsed = scanItemStartTimes[data.id]
860
+ ? ((Date.now() - scanItemStartTimes[data.id]) / 1000).toFixed(1) + 's'
861
+ : '';
862
+ var isDone = data.status === 'done';
863
+ var iconHtml = isDone
864
+ ? '<span style="color:var(--green);font-size:13px">✓</span>'
865
+ : '<span style="color:var(--red);font-size:13px">✗</span>';
866
+ var labelClass = isDone ? 'scl-label' : 'scl-label error';
867
+ existing.innerHTML = '<span class="scl-icon">' + iconHtml + '</span>'
868
+ + '<span class="' + labelClass + '">' + esc(label) + '</span>'
869
+ + '<span class="scl-time">' + esc(elapsed) + '</span>';
800
870
  }
801
871
  }
802
872
 
803
- function addReadStep(step, idx) {
804
- var d = document.getElementById('scan-details');
805
- if (!d) return;
873
+ // ═══ AI Phase Card — shows every READ/FIX step in the main feed ════════
874
+ var aiStepStartTimes = {};
875
+
876
+ function ensureAiPhaseCard() {
877
+ if (document.getElementById('ai-phase-card')) return;
878
+ var card = document.createElement('div');
879
+ card.className = 'ai-phase-card';
880
+ card.id = 'ai-phase-card';
881
+ var title = isZh ? 'AI 正在诊断...' : 'AI diagnosing...';
882
+ var sub = isZh ? '分析数据 → 定位问题 → 执行修复' : 'Analyze → Locate → Fix';
883
+ card.innerHTML = '<div class="ai-phase-hd">'
884
+ + '<div class="ai-phase-emoji" id="ai-phase-emoji">🧠</div>'
885
+ + '<div class="ai-phase-body">'
886
+ + '<div class="ai-phase-title" id="ai-phase-title">' + title + '</div>'
887
+ + '<div class="ai-phase-sub" id="ai-phase-sub">' + sub + '</div>'
888
+ + '</div>'
889
+ + '<div class="ai-phase-right" id="ai-phase-status"><div class="spin spin-sm"></div></div>'
890
+ + '</div>'
891
+ + '<div class="ai-phase-steps" id="ai-phase-steps"></div>';
892
+ feed.appendChild(card);
893
+ scrollDown();
894
+ }
895
+
896
+ function finishAiPhaseCard() {
897
+ var emoji = document.getElementById('ai-phase-emoji');
898
+ if (emoji) { emoji.textContent = '🧠'; emoji.classList.add('done'); }
899
+ var st = document.getElementById('ai-phase-status');
900
+ if (st) st.innerHTML = '<span style="font-size:16px;color:var(--green)">✓</span>';
901
+ var title = document.getElementById('ai-phase-title');
902
+ if (title) title.textContent = isZh ? 'AI 诊断完成' : 'AI diagnosis complete';
903
+ var sub = document.getElementById('ai-phase-sub');
904
+ if (sub) sub.textContent = '';
905
+ }
906
+
907
+ function addAiStep(step, idx) {
908
+ ensureAiPhaseCard();
909
+ var container = document.getElementById('ai-phase-steps');
910
+ if (!container) return;
911
+
912
+ var isRead = step.type === 'read';
913
+ var icon = isRead ? '<div class="spin spin-sm"></div>' : '🔧';
914
+ var desc = step.description || step.command || (isRead ? 'Reading...' : 'Fixing...');
915
+ var cmdHtml = step.command ? '<div class="ai-step-cmd" translate="no">$ ' + esc(step.command) + '</div>' : '';
916
+
806
917
  var row = document.createElement('div');
807
- row.className = 'schk'; row.id = 'schk-' + idx;
808
- var desc = step.description || step.command || 'Checking...';
809
- row.innerHTML = '<span class="schk-icon pending" id="schk-i-'+idx+'"><div class="spin spin-sm"></div></span>'
810
- + '<span class="schk-text" translate="no">' + esc(desc) + '</span>';
811
- d.appendChild(row);
812
- sCheckEls[idx] = row;
918
+ row.className = 'ai-step';
919
+ row.id = 'ai-step-' + idx;
920
+ row.innerHTML = '<div class="ai-step-icon" id="ai-step-icon-' + idx + '">' + icon + '</div>'
921
+ + '<div class="ai-step-body">'
922
+ + '<div class="ai-step-desc' + (isRead ? ' pending' : '') + '" id="ai-step-desc-' + idx + '">' + esc(desc) + '</div>'
923
+ + cmdHtml
924
+ + '<div class="ai-step-output" id="ai-step-out-' + idx + '"></div>'
925
+ + '</div>'
926
+ + '<div class="ai-step-time" id="ai-step-time-' + idx + '"></div>';
927
+ container.appendChild(row);
928
+ aiStepStartTimes[idx] = Date.now();
929
+ scrollDown();
813
930
  }
814
931
 
815
- function doneReadStep(idx, skipped) {
816
- var el = document.getElementById('schk-i-' + idx);
817
- if (!el) return;
818
- el.innerHTML = skipped ? '' : '✓';
819
- el.classList.remove('pending');
820
- el.classList.add('done');
821
- if (skipped) el.style.color = 'var(--text-muted)';
932
+ function finishAiStep(idx, output, skipped) {
933
+ var iconEl = document.getElementById('ai-step-icon-' + idx);
934
+ var descEl = document.getElementById('ai-step-desc-' + idx);
935
+ var timeEl = document.getElementById('ai-step-time-' + idx);
936
+ var outEl = document.getElementById('ai-step-out-' + idx);
937
+
938
+ if (iconEl) {
939
+ if (skipped) {
940
+ iconEl.innerHTML = '<span style="color:var(--text-muted)">⏭</span>';
941
+ } else {
942
+ iconEl.innerHTML = '<span style="color:var(--green);font-size:14px">✓</span>';
943
+ }
944
+ }
945
+ if (descEl) descEl.classList.remove('pending');
946
+ if (timeEl && aiStepStartTimes[idx]) {
947
+ var elapsed = ((Date.now() - aiStepStartTimes[idx]) / 1000).toFixed(1) + 's';
948
+ timeEl.textContent = elapsed;
949
+ }
950
+ // Show output preview for FIX steps, or if output contains useful info
951
+ if (outEl && output && !skipped) {
952
+ var trimmed = output.length > 600 ? output.slice(0, 600) + '\n...' : output;
953
+ outEl.textContent = trimmed;
954
+ // For FIX steps, show output by default; for READ steps, hide behind toggle
955
+ var stepRow = document.getElementById('ai-step-' + idx);
956
+ var sType = stepTypes[idx] || 'read';
957
+ if (sType === 'fix') {
958
+ outEl.classList.add('visible');
959
+ } else if (trimmed.length > 10) {
960
+ // Add a toggle for READ output
961
+ var toggle = document.createElement('button');
962
+ toggle.className = 'ai-step-toggle';
963
+ toggle.textContent = isZh ? '查看输出 ▾' : 'Show output ▾';
964
+ toggle.addEventListener('click', function() {
965
+ var showing = outEl.classList.toggle('visible');
966
+ toggle.textContent = showing ? (isZh ? '收起 ▴' : 'Hide ▴') : (isZh ? '查看输出 ▾' : 'Show output ▾');
967
+ });
968
+ outEl.parentNode.insertBefore(toggle, outEl);
969
+ }
970
+ }
822
971
  }
823
972
 
973
+ // Legacy compat — old read step functions now route to AI phase card
974
+ function addReadStep(step, idx) { addAiStep(step, idx); }
975
+ function doneReadStep(idx, skipped) { finishAiStep(idx, null, skipped); }
976
+
824
977
  function finishScanBlock() {
978
+ // Stop elapsed timer and freeze the final time
979
+ if (scanTimerInterval) { clearInterval(scanTimerInterval); scanTimerInterval = null; }
980
+ var elapsed = scanStartTime ? ((Date.now() - scanStartTime) / 1000).toFixed(1) + 's' : '';
825
981
  var s = document.getElementById('scan-status');
826
982
  if (s) s.innerHTML = '<span style="font-size:16px;color:var(--green)">✓</span>';
827
983
  var t = document.getElementById('scan-title');
828
984
  if (t) t.textContent = T.scanned;
829
985
  var sub = document.getElementById('scan-sub');
830
- if (sub) sub.textContent = '';
986
+ if (sub) sub.textContent = elapsed;
831
987
  }
832
988
 
833
989
  // ═══ Fix Step Cards ═══════════════════════════════════════════════════════
@@ -886,17 +1042,19 @@
886
1042
 
887
1043
  // ═══ Confirm Bar ══════════════════════════════════════════════════════════
888
1044
  function addConfirmBar(step, idx) {
889
- var card = document.getElementById('step-' + idx);
1045
+ // Attach to the AI step row, or fallback to old fix card
1046
+ var card = document.getElementById('ai-step-' + idx) || document.getElementById('step-' + idx);
890
1047
  if (!card) return;
891
1048
  var risk = step.risk || 'medium';
892
1049
  var bar = document.createElement('div');
893
1050
  bar.className = 'confirm-bar' + (risk === 'high' ? ' risk-high' : '');
894
1051
  bar.id = 'cfm-' + idx;
1052
+ bar.style.borderRadius = '0 0 var(--radius-xs) var(--radius-xs)';
1053
+ bar.style.margin = '6px 0 2px';
895
1054
  bar.innerHTML = '<span class="confirm-label">' + T.allowQ + '</span>'
896
1055
  + '<button class="btn btn-green" id="cfm-y-'+idx+'">' + T.allow + '</button>'
897
1056
  + '<button class="btn btn-ghost" id="cfm-n-'+idx+'">' + T.skip + '</button>';
898
1057
  card.appendChild(bar);
899
- card.classList.add('open');
900
1058
 
901
1059
  document.getElementById('cfm-y-'+idx).addEventListener('click', function() {
902
1060
  var dt = _confirmShownAt ? Date.now() - _confirmShownAt : 0;
@@ -1718,7 +1876,7 @@
1718
1876
  break;
1719
1877
 
1720
1878
  case 'progress':
1721
- updateScanProgress(data.message);
1879
+ updateScanProgress(data);
1722
1880
  break;
1723
1881
 
1724
1882
  case 'step_start': {
@@ -1728,30 +1886,16 @@
1728
1886
  stepTypes[data.index] = step.type || 'read';
1729
1887
  ev('step_viewed', { step_number: data.index, type: step.type, risk: step.risk || 'low' });
1730
1888
 
1731
- // Remove AI thinking card when first real step arrives
1732
- var aiCard = document.getElementById('ai-thinking-card');
1733
- if (aiCard) aiCard.remove();
1734
-
1735
- if (step.type === 'read') {
1736
- if (!document.getElementById('scan-block')) {
1737
- addScanBlock();
1738
- scanBlockAdded = true;
1739
- }
1740
- addReadStep(step, data.index);
1741
- } else if (step.type === 'fix') {
1742
- addFixCard(step, data.index);
1743
- }
1889
+ // All steps (READ + FIX) go into the AI phase card
1890
+ addAiStep(step, data.index);
1744
1891
  break;
1745
1892
  }
1746
1893
 
1747
1894
  case 'step_done': {
1748
1895
  var idx = data.index;
1749
1896
  var sType = stepTypes[idx] || 'read';
1750
- if (sType === 'read') {
1751
- doneReadStep(idx, data.skipped);
1752
- } else if (sType === 'fix') {
1753
- finishFixCard(idx, data.output, data.skipped);
1754
- }
1897
+ var stepData = data.step || {};
1898
+ finishAiStep(idx, data.output, data.skipped);
1755
1899
  break;
1756
1900
  }
1757
1901
 
@@ -1764,6 +1908,7 @@
1764
1908
  if (eventSource) { eventSource.close(); eventSource = null; }
1765
1909
  _sessionEnded = true;
1766
1910
  sbSessionId = data.sbSessionId || null;
1911
+ finishAiPhaseCard();
1767
1912
  var outcome = data.fixed ? 'fixed'
1768
1913
  : data.degraded ? 'degraded'
1769
1914
  : data.healthy ? 'healthy'