vite-plugin-opencode-assistant 1.0.43 → 1.0.47

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.
@@ -55,7 +55,13 @@ function useSessions(options) {
55
55
  try {
56
56
  const response = yield fetch(SESSIONS_API_PATH);
57
57
  const data = yield response.json();
58
- sessions.value = data.filter((s) => s.title !== "__chrome_mcp_warmup__").map((s) => {
58
+ sessions.value = data.filter((s) => {
59
+ var _a2;
60
+ if (s.title === "__chrome_mcp_warmup__") return false;
61
+ if (s.parentID) return false;
62
+ if ((_a2 = s.time) == null ? void 0 : _a2.archived) return false;
63
+ return true;
64
+ }).map((s) => {
59
65
  var _a2;
60
66
  return __spreadProps(__spreadValues({}, s), {
61
67
  updatedAt: ((_a2 = s.time) == null ? void 0 : _a2.updated) || Date.now()
package/es/core/api.d.ts CHANGED
@@ -18,10 +18,11 @@ export declare class OpenCodeAPI {
18
18
  } | null>;
19
19
  deleteSession(sessionId: string, retries?: number): Promise<void>;
20
20
  getToolIds(retries?: number): Promise<string[]>;
21
+ private executeWarmupChromeMcp;
21
22
  warmupChromeMcp(projectDir: string, viteOrigin?: string): Promise<void>;
22
- getOrCreateSession(projectDir: string): Promise<string>;
23
23
  retryWarmupChromeMcp(projectDir: string, viteOrigin?: string): Promise<{
24
24
  success: boolean;
25
25
  error?: ChromeMcpWarmupError;
26
26
  }>;
27
+ getOrCreateSession(projectDir: string): Promise<string>;
27
28
  }
package/es/core/api.js CHANGED
@@ -317,10 +317,9 @@ class OpenCodeAPI {
317
317
  throw lastError;
318
318
  });
319
319
  }
320
- warmupChromeMcp(projectDir, viteOrigin) {
320
+ executeWarmupChromeMcp(projectDir, operation, viteOrigin) {
321
321
  return __async(this, null, function* () {
322
- if (!this.warmupChromeMcpConfig) return;
323
- const timer = log.timer("warmupChromeMcp", { viteOrigin });
322
+ const timer = log.timer(`${operation}WarmupChromeMcp`, { viteOrigin, operation });
324
323
  let warmupSessionId = null;
325
324
  let freeModel = null;
326
325
  const chromeAvailable = yield checkChromeDevToolsAvailable();
@@ -330,14 +329,14 @@ class OpenCodeAPI {
330
329
  "Chrome DevTools Protocol is not available",
331
330
  "Chrome remote debugging is not enabled or not running on port 9222. Please enable Chrome remote debugging first."
332
331
  );
333
- log.warn("Chrome DevTools not available", {
332
+ log.warn(`Chrome DevTools not available for ${operation}`, {
334
333
  port: CHROME_DEVTOOLS_PORT,
335
334
  hint: "Enable Chrome remote debugging at chrome://inspect/#remote-debugging"
336
335
  });
337
- timer.end("Chrome DevTools not available");
338
- throw error;
336
+ timer.end(`Chrome DevTools not available for ${operation}`);
337
+ return { success: false, error };
339
338
  }
340
- log.debug("Chrome DevTools is available, proceeding with warmup");
339
+ log.debug(`Chrome DevTools is available, proceeding with ${operation} warmup`);
341
340
  try {
342
341
  const warmupSession = yield this.createSession(
343
342
  projectDir,
@@ -347,12 +346,12 @@ class OpenCodeAPI {
347
346
  warmupSessionId = warmupSession.id;
348
347
  freeModel = yield this.getCheapestModel();
349
348
  if (freeModel) {
350
- log.debug("Using cheapest model for warmup", {
349
+ log.debug(`Using cheapest model for ${operation} warmup`, {
351
350
  providerID: freeModel.providerID,
352
351
  modelID: freeModel.modelID
353
352
  });
354
353
  } else {
355
- log.debug("No model available, using default model");
354
+ log.debug(`No model available for ${operation}, using default model`);
356
355
  }
357
356
  const WARMUP_TIMEOUT = 6e4;
358
357
  const data = yield this.createHttpRequest(
@@ -394,24 +393,33 @@ class OpenCodeAPI {
394
393
  `AI responded with: ${responseText.substring(0, 200)}`
395
394
  );
396
395
  }
397
- timer.end("Chrome MCP warmed up");
396
+ timer.end(`Chrome MCP ${operation} warmed up successfully`);
397
+ return { success: true };
398
398
  } catch (e) {
399
399
  if (e instanceof ChromeMcpWarmupError) {
400
400
  if (e.type === ChromeMcpWarmupErrorType.SESSION_ERROR) {
401
401
  timer.end("Session creation failed");
402
402
  }
403
- log.warn(`Chrome MCP warmup failed: ${e.type}`, __spreadValues({
403
+ if (freeModel && (e.type === ChromeMcpWarmupErrorType.AI_RESPONSE_ERROR || e.type === ChromeMcpWarmupErrorType.AI_TIMEOUT)) {
404
+ this.markModelAsFailed(freeModel.providerID, freeModel.modelID);
405
+ log.debug(`Marked model as failed due to ${operation} ChromeMcpWarmupError`, {
406
+ providerID: freeModel.providerID,
407
+ modelID: freeModel.modelID,
408
+ errorType: e.type
409
+ });
410
+ }
411
+ log.warn(`Chrome MCP ${operation} warmup failed: ${e.type}`, __spreadValues({
404
412
  message: e.message,
405
413
  details: e.details
406
414
  }, freeModel && {
407
415
  model: `${freeModel.providerID}/${freeModel.modelID}`
408
416
  }));
409
- timer.end(`Chrome MCP warmup failed: ${e.type}`);
410
- throw e;
417
+ timer.end(`Chrome MCP ${operation} warmup failed: ${e.type}`);
418
+ return { success: false, error: e };
411
419
  }
412
420
  if (freeModel) {
413
421
  this.markModelAsFailed(freeModel.providerID, freeModel.modelID);
414
- log.debug("Marked model as failed due to warmup error", {
422
+ log.debug(`Marked model as failed due to ${operation} warmup error`, {
415
423
  providerID: freeModel.providerID,
416
424
  modelID: freeModel.modelID,
417
425
  error: e instanceof Error ? e.message : String(e)
@@ -422,28 +430,28 @@ class OpenCodeAPI {
422
430
  const error2 = new ChromeMcpWarmupError(
423
431
  ChromeMcpWarmupErrorType.AI_TIMEOUT,
424
432
  "AI response timeout",
425
- "AI did not respond within 30 seconds. Please check if the OpenCode AI model is properly configured and available."
433
+ "AI did not respond within 60 seconds. Please check if the OpenCode AI model is properly configured and available."
426
434
  );
427
- log.warn("Chrome MCP warmup timeout", __spreadValues({
435
+ log.warn(`Chrome MCP ${operation} warmup timeout`, __spreadValues({
428
436
  error: errorMessage
429
437
  }, freeModel && {
430
438
  model: `${freeModel.providerID}/${freeModel.modelID}`
431
439
  }));
432
- timer.end("Chrome MCP warmup timeout");
433
- throw error2;
440
+ timer.end(`Chrome MCP ${operation} warmup timeout`);
441
+ return { success: false, error: error2 };
434
442
  }
435
443
  const error = new ChromeMcpWarmupError(
436
444
  ChromeMcpWarmupErrorType.UNKNOWN,
437
- "Unknown error during Chrome MCP warmup",
445
+ `Unknown error during Chrome MCP ${operation} warmup`,
438
446
  errorMessage
439
447
  );
440
- log.warn("Chrome MCP warmup failed with unknown error", __spreadValues({
448
+ log.warn(`Chrome MCP ${operation} warmup failed with unknown error`, __spreadValues({
441
449
  error: errorMessage
442
450
  }, freeModel && {
443
451
  model: `${freeModel.providerID}/${freeModel.modelID}`
444
452
  }));
445
- timer.end("Chrome MCP warmup failed");
446
- throw error;
453
+ timer.end(`Chrome MCP ${operation} warmup failed`);
454
+ return { success: false, error };
447
455
  } finally {
448
456
  if (warmupSessionId) {
449
457
  try {
@@ -458,6 +466,20 @@ class OpenCodeAPI {
458
466
  }
459
467
  });
460
468
  }
469
+ warmupChromeMcp(projectDir, viteOrigin) {
470
+ return __async(this, null, function* () {
471
+ if (!this.warmupChromeMcpConfig) return;
472
+ const result = yield this.executeWarmupChromeMcp(projectDir, "warmup", viteOrigin);
473
+ if (!result.success) {
474
+ throw result.error;
475
+ }
476
+ });
477
+ }
478
+ retryWarmupChromeMcp(projectDir, viteOrigin) {
479
+ return __async(this, null, function* () {
480
+ return this.executeWarmupChromeMcp(projectDir, "retry", viteOrigin);
481
+ });
482
+ }
461
483
  getOrCreateSession(projectDir) {
462
484
  return __async(this, null, function* () {
463
485
  const timer = log.timer("getOrCreateSession", { projectDir });
@@ -479,148 +501,6 @@ class OpenCodeAPI {
479
501
  return url;
480
502
  });
481
503
  }
482
- retryWarmupChromeMcp(projectDir, viteOrigin) {
483
- return __async(this, null, function* () {
484
- const timer = log.timer("retryWarmupChromeMcp", { viteOrigin });
485
- let warmupSessionId = null;
486
- let freeModel = null;
487
- const chromeAvailable = yield checkChromeDevToolsAvailable();
488
- if (!chromeAvailable) {
489
- const error = new ChromeMcpWarmupError(
490
- ChromeMcpWarmupErrorType.CHROME_NOT_CONNECTED,
491
- "Chrome DevTools Protocol is not available",
492
- "Chrome remote debugging is not enabled or not running on port 9222. Please enable Chrome remote debugging first."
493
- );
494
- log.warn("Chrome DevTools not available for retry", {
495
- port: CHROME_DEVTOOLS_PORT,
496
- hint: "Enable Chrome remote debugging at chrome://inspect/#remote-debugging"
497
- });
498
- timer.end("Chrome DevTools not available for retry");
499
- return { success: false, error };
500
- }
501
- log.debug("Chrome DevTools is available, proceeding with retry warmup");
502
- try {
503
- const warmupSession = yield this.createSession(
504
- projectDir,
505
- DEFAULT_RETRIES,
506
- "__chrome_mcp_warmup__"
507
- );
508
- warmupSessionId = warmupSession.id;
509
- freeModel = yield this.getCheapestModel();
510
- if (freeModel) {
511
- log.debug("Using cheapest model for retry warmup", {
512
- providerID: freeModel.providerID,
513
- modelID: freeModel.modelID
514
- });
515
- } else {
516
- log.debug("No model available for retry, using default model");
517
- }
518
- const WARMUP_TIMEOUT = 6e4;
519
- const data = yield this.createHttpRequest(
520
- {
521
- hostname: this.hostname,
522
- port: this.getPort(),
523
- path: `/session/${warmupSessionId}/message`,
524
- method: "POST",
525
- headers: { "Content-Type": "application/json" }
526
- },
527
- JSON.stringify(__spreadValues({
528
- parts: [
529
- {
530
- type: "text",
531
- text: "Test if the chrome-devtools_list_pages tool is available. If available, reply with: ready. If not available, explain why."
532
- }
533
- ]
534
- }, freeModel && {
535
- model: {
536
- providerID: freeModel.providerID,
537
- modelID: freeModel.modelID
538
- }
539
- })),
540
- WARMUP_TIMEOUT
541
- );
542
- log.debug("Chrome MCP warmup response:", { data });
543
- const responseText = extractTextFromResponse(data);
544
- if (!responseText) {
545
- throw new ChromeMcpWarmupError(
546
- ChromeMcpWarmupErrorType.AI_RESPONSE_ERROR,
547
- "AI did not respond to the warmup request",
548
- "Empty response from AI"
549
- );
550
- }
551
- const lowerResponse = responseText.toLowerCase();
552
- if (!lowerResponse.includes("ready")) {
553
- throw new ChromeMcpWarmupError(
554
- ChromeMcpWarmupErrorType.AI_RESPONSE_ERROR,
555
- "AI response does not indicate success",
556
- `AI responded with: ${responseText.substring(0, 200)}`
557
- );
558
- }
559
- timer.end("Chrome MCP warmed up successfully");
560
- return { success: true };
561
- } catch (e) {
562
- if (e instanceof ChromeMcpWarmupError) {
563
- if (e.type === ChromeMcpWarmupErrorType.SESSION_ERROR) {
564
- timer.end("Session creation failed");
565
- }
566
- log.warn(`Chrome MCP warmup retry failed: ${e.type}`, __spreadValues({
567
- message: e.message,
568
- details: e.details
569
- }, freeModel && {
570
- model: `${freeModel.providerID}/${freeModel.modelID}`
571
- }));
572
- timer.end(`Chrome MCP warmup retry failed: ${e.type}`);
573
- return { success: false, error: e };
574
- }
575
- if (freeModel) {
576
- this.markModelAsFailed(freeModel.providerID, freeModel.modelID);
577
- log.debug("Marked model as failed due to retry warmup error", {
578
- providerID: freeModel.providerID,
579
- modelID: freeModel.modelID,
580
- error: e instanceof Error ? e.message : String(e)
581
- });
582
- }
583
- const errorMessage = e instanceof Error ? e.message : String(e);
584
- if (errorMessage.includes("timeout") || errorMessage.includes("Timeout")) {
585
- const error2 = new ChromeMcpWarmupError(
586
- ChromeMcpWarmupErrorType.AI_TIMEOUT,
587
- "AI response timeout",
588
- "AI did not respond within 60 seconds. Please check if the OpenCode AI model is properly configured and available."
589
- );
590
- log.warn("Chrome MCP warmup retry timeout", __spreadValues({
591
- error: errorMessage
592
- }, freeModel && {
593
- model: `${freeModel.providerID}/${freeModel.modelID}`
594
- }));
595
- timer.end("Chrome MCP warmup retry timeout");
596
- return { success: false, error: error2 };
597
- }
598
- const error = new ChromeMcpWarmupError(
599
- ChromeMcpWarmupErrorType.UNKNOWN,
600
- "Unknown error during Chrome MCP warmup retry",
601
- errorMessage
602
- );
603
- log.warn("Chrome MCP warmup retry failed with unknown error", __spreadValues({
604
- error: errorMessage
605
- }, freeModel && {
606
- model: `${freeModel.providerID}/${freeModel.modelID}`
607
- }));
608
- timer.end("Chrome MCP warmup retry failed");
609
- return { success: false, error };
610
- } finally {
611
- if (warmupSessionId) {
612
- try {
613
- yield this.deleteSession(warmupSessionId, 5);
614
- } catch (e) {
615
- log.warn("Failed to delete warmup session after retries", {
616
- error: e,
617
- warmupSessionId
618
- });
619
- }
620
- }
621
- }
622
- });
623
- }
624
504
  }
625
505
  export {
626
506
  OpenCodeAPI
@@ -75,7 +75,13 @@ function useSessions(options) {
75
75
  try {
76
76
  const response = yield fetch(import_shared.SESSIONS_API_PATH);
77
77
  const data = yield response.json();
78
- sessions.value = data.filter((s) => s.title !== "__chrome_mcp_warmup__").map((s) => {
78
+ sessions.value = data.filter((s) => {
79
+ var _a2;
80
+ if (s.title === "__chrome_mcp_warmup__") return false;
81
+ if (s.parentID) return false;
82
+ if ((_a2 = s.time) == null ? void 0 : _a2.archived) return false;
83
+ return true;
84
+ }).map((s) => {
79
85
  var _a2;
80
86
  return __spreadProps(__spreadValues({}, s), {
81
87
  updatedAt: ((_a2 = s.time) == null ? void 0 : _a2.updated) || Date.now()