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.
package/lib/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/lib/core/api.js CHANGED
@@ -335,10 +335,9 @@ class OpenCodeAPI {
335
335
  throw lastError;
336
336
  });
337
337
  }
338
- warmupChromeMcp(projectDir, viteOrigin) {
338
+ executeWarmupChromeMcp(projectDir, operation, viteOrigin) {
339
339
  return __async(this, null, function* () {
340
- if (!this.warmupChromeMcpConfig) return;
341
- const timer = log.timer("warmupChromeMcp", { viteOrigin });
340
+ const timer = log.timer(`${operation}WarmupChromeMcp`, { viteOrigin, operation });
342
341
  let warmupSessionId = null;
343
342
  let freeModel = null;
344
343
  const chromeAvailable = yield (0, import_shared.checkChromeDevToolsAvailable)();
@@ -348,14 +347,14 @@ class OpenCodeAPI {
348
347
  "Chrome DevTools Protocol is not available",
349
348
  "Chrome remote debugging is not enabled or not running on port 9222. Please enable Chrome remote debugging first."
350
349
  );
351
- log.warn("Chrome DevTools not available", {
350
+ log.warn(`Chrome DevTools not available for ${operation}`, {
352
351
  port: import_shared.CHROME_DEVTOOLS_PORT,
353
352
  hint: "Enable Chrome remote debugging at chrome://inspect/#remote-debugging"
354
353
  });
355
- timer.end("Chrome DevTools not available");
356
- throw error;
354
+ timer.end(`Chrome DevTools not available for ${operation}`);
355
+ return { success: false, error };
357
356
  }
358
- log.debug("Chrome DevTools is available, proceeding with warmup");
357
+ log.debug(`Chrome DevTools is available, proceeding with ${operation} warmup`);
359
358
  try {
360
359
  const warmupSession = yield this.createSession(
361
360
  projectDir,
@@ -365,12 +364,12 @@ class OpenCodeAPI {
365
364
  warmupSessionId = warmupSession.id;
366
365
  freeModel = yield this.getCheapestModel();
367
366
  if (freeModel) {
368
- log.debug("Using cheapest model for warmup", {
367
+ log.debug(`Using cheapest model for ${operation} warmup`, {
369
368
  providerID: freeModel.providerID,
370
369
  modelID: freeModel.modelID
371
370
  });
372
371
  } else {
373
- log.debug("No model available, using default model");
372
+ log.debug(`No model available for ${operation}, using default model`);
374
373
  }
375
374
  const WARMUP_TIMEOUT = 6e4;
376
375
  const data = yield this.createHttpRequest(
@@ -412,24 +411,33 @@ class OpenCodeAPI {
412
411
  `AI responded with: ${responseText.substring(0, 200)}`
413
412
  );
414
413
  }
415
- timer.end("Chrome MCP warmed up");
414
+ timer.end(`Chrome MCP ${operation} warmed up successfully`);
415
+ return { success: true };
416
416
  } catch (e) {
417
417
  if (e instanceof import_shared.ChromeMcpWarmupError) {
418
418
  if (e.type === import_shared.ChromeMcpWarmupErrorType.SESSION_ERROR) {
419
419
  timer.end("Session creation failed");
420
420
  }
421
- log.warn(`Chrome MCP warmup failed: ${e.type}`, __spreadValues({
421
+ if (freeModel && (e.type === import_shared.ChromeMcpWarmupErrorType.AI_RESPONSE_ERROR || e.type === import_shared.ChromeMcpWarmupErrorType.AI_TIMEOUT)) {
422
+ this.markModelAsFailed(freeModel.providerID, freeModel.modelID);
423
+ log.debug(`Marked model as failed due to ${operation} ChromeMcpWarmupError`, {
424
+ providerID: freeModel.providerID,
425
+ modelID: freeModel.modelID,
426
+ errorType: e.type
427
+ });
428
+ }
429
+ log.warn(`Chrome MCP ${operation} warmup failed: ${e.type}`, __spreadValues({
422
430
  message: e.message,
423
431
  details: e.details
424
432
  }, freeModel && {
425
433
  model: `${freeModel.providerID}/${freeModel.modelID}`
426
434
  }));
427
- timer.end(`Chrome MCP warmup failed: ${e.type}`);
428
- throw e;
435
+ timer.end(`Chrome MCP ${operation} warmup failed: ${e.type}`);
436
+ return { success: false, error: e };
429
437
  }
430
438
  if (freeModel) {
431
439
  this.markModelAsFailed(freeModel.providerID, freeModel.modelID);
432
- log.debug("Marked model as failed due to warmup error", {
440
+ log.debug(`Marked model as failed due to ${operation} warmup error`, {
433
441
  providerID: freeModel.providerID,
434
442
  modelID: freeModel.modelID,
435
443
  error: e instanceof Error ? e.message : String(e)
@@ -440,28 +448,28 @@ class OpenCodeAPI {
440
448
  const error2 = new import_shared.ChromeMcpWarmupError(
441
449
  import_shared.ChromeMcpWarmupErrorType.AI_TIMEOUT,
442
450
  "AI response timeout",
443
- "AI did not respond within 30 seconds. Please check if the OpenCode AI model is properly configured and available."
451
+ "AI did not respond within 60 seconds. Please check if the OpenCode AI model is properly configured and available."
444
452
  );
445
- log.warn("Chrome MCP warmup timeout", __spreadValues({
453
+ log.warn(`Chrome MCP ${operation} warmup timeout`, __spreadValues({
446
454
  error: errorMessage
447
455
  }, freeModel && {
448
456
  model: `${freeModel.providerID}/${freeModel.modelID}`
449
457
  }));
450
- timer.end("Chrome MCP warmup timeout");
451
- throw error2;
458
+ timer.end(`Chrome MCP ${operation} warmup timeout`);
459
+ return { success: false, error: error2 };
452
460
  }
453
461
  const error = new import_shared.ChromeMcpWarmupError(
454
462
  import_shared.ChromeMcpWarmupErrorType.UNKNOWN,
455
- "Unknown error during Chrome MCP warmup",
463
+ `Unknown error during Chrome MCP ${operation} warmup`,
456
464
  errorMessage
457
465
  );
458
- log.warn("Chrome MCP warmup failed with unknown error", __spreadValues({
466
+ log.warn(`Chrome MCP ${operation} warmup failed with unknown error`, __spreadValues({
459
467
  error: errorMessage
460
468
  }, freeModel && {
461
469
  model: `${freeModel.providerID}/${freeModel.modelID}`
462
470
  }));
463
- timer.end("Chrome MCP warmup failed");
464
- throw error;
471
+ timer.end(`Chrome MCP ${operation} warmup failed`);
472
+ return { success: false, error };
465
473
  } finally {
466
474
  if (warmupSessionId) {
467
475
  try {
@@ -476,6 +484,20 @@ class OpenCodeAPI {
476
484
  }
477
485
  });
478
486
  }
487
+ warmupChromeMcp(projectDir, viteOrigin) {
488
+ return __async(this, null, function* () {
489
+ if (!this.warmupChromeMcpConfig) return;
490
+ const result = yield this.executeWarmupChromeMcp(projectDir, "warmup", viteOrigin);
491
+ if (!result.success) {
492
+ throw result.error;
493
+ }
494
+ });
495
+ }
496
+ retryWarmupChromeMcp(projectDir, viteOrigin) {
497
+ return __async(this, null, function* () {
498
+ return this.executeWarmupChromeMcp(projectDir, "retry", viteOrigin);
499
+ });
500
+ }
479
501
  getOrCreateSession(projectDir) {
480
502
  return __async(this, null, function* () {
481
503
  const timer = log.timer("getOrCreateSession", { projectDir });
@@ -497,148 +519,6 @@ class OpenCodeAPI {
497
519
  return url;
498
520
  });
499
521
  }
500
- retryWarmupChromeMcp(projectDir, viteOrigin) {
501
- return __async(this, null, function* () {
502
- const timer = log.timer("retryWarmupChromeMcp", { viteOrigin });
503
- let warmupSessionId = null;
504
- let freeModel = null;
505
- const chromeAvailable = yield (0, import_shared.checkChromeDevToolsAvailable)();
506
- if (!chromeAvailable) {
507
- const error = new import_shared.ChromeMcpWarmupError(
508
- import_shared.ChromeMcpWarmupErrorType.CHROME_NOT_CONNECTED,
509
- "Chrome DevTools Protocol is not available",
510
- "Chrome remote debugging is not enabled or not running on port 9222. Please enable Chrome remote debugging first."
511
- );
512
- log.warn("Chrome DevTools not available for retry", {
513
- port: import_shared.CHROME_DEVTOOLS_PORT,
514
- hint: "Enable Chrome remote debugging at chrome://inspect/#remote-debugging"
515
- });
516
- timer.end("Chrome DevTools not available for retry");
517
- return { success: false, error };
518
- }
519
- log.debug("Chrome DevTools is available, proceeding with retry warmup");
520
- try {
521
- const warmupSession = yield this.createSession(
522
- projectDir,
523
- import_shared.DEFAULT_RETRIES,
524
- "__chrome_mcp_warmup__"
525
- );
526
- warmupSessionId = warmupSession.id;
527
- freeModel = yield this.getCheapestModel();
528
- if (freeModel) {
529
- log.debug("Using cheapest model for retry warmup", {
530
- providerID: freeModel.providerID,
531
- modelID: freeModel.modelID
532
- });
533
- } else {
534
- log.debug("No model available for retry, using default model");
535
- }
536
- const WARMUP_TIMEOUT = 6e4;
537
- const data = yield this.createHttpRequest(
538
- {
539
- hostname: this.hostname,
540
- port: this.getPort(),
541
- path: `/session/${warmupSessionId}/message`,
542
- method: "POST",
543
- headers: { "Content-Type": "application/json" }
544
- },
545
- JSON.stringify(__spreadValues({
546
- parts: [
547
- {
548
- type: "text",
549
- text: "Test if the chrome-devtools_list_pages tool is available. If available, reply with: ready. If not available, explain why."
550
- }
551
- ]
552
- }, freeModel && {
553
- model: {
554
- providerID: freeModel.providerID,
555
- modelID: freeModel.modelID
556
- }
557
- })),
558
- WARMUP_TIMEOUT
559
- );
560
- log.debug("Chrome MCP warmup response:", { data });
561
- const responseText = (0, import_shared.extractTextFromResponse)(data);
562
- if (!responseText) {
563
- throw new import_shared.ChromeMcpWarmupError(
564
- import_shared.ChromeMcpWarmupErrorType.AI_RESPONSE_ERROR,
565
- "AI did not respond to the warmup request",
566
- "Empty response from AI"
567
- );
568
- }
569
- const lowerResponse = responseText.toLowerCase();
570
- if (!lowerResponse.includes("ready")) {
571
- throw new import_shared.ChromeMcpWarmupError(
572
- import_shared.ChromeMcpWarmupErrorType.AI_RESPONSE_ERROR,
573
- "AI response does not indicate success",
574
- `AI responded with: ${responseText.substring(0, 200)}`
575
- );
576
- }
577
- timer.end("Chrome MCP warmed up successfully");
578
- return { success: true };
579
- } catch (e) {
580
- if (e instanceof import_shared.ChromeMcpWarmupError) {
581
- if (e.type === import_shared.ChromeMcpWarmupErrorType.SESSION_ERROR) {
582
- timer.end("Session creation failed");
583
- }
584
- log.warn(`Chrome MCP warmup retry failed: ${e.type}`, __spreadValues({
585
- message: e.message,
586
- details: e.details
587
- }, freeModel && {
588
- model: `${freeModel.providerID}/${freeModel.modelID}`
589
- }));
590
- timer.end(`Chrome MCP warmup retry failed: ${e.type}`);
591
- return { success: false, error: e };
592
- }
593
- if (freeModel) {
594
- this.markModelAsFailed(freeModel.providerID, freeModel.modelID);
595
- log.debug("Marked model as failed due to retry warmup error", {
596
- providerID: freeModel.providerID,
597
- modelID: freeModel.modelID,
598
- error: e instanceof Error ? e.message : String(e)
599
- });
600
- }
601
- const errorMessage = e instanceof Error ? e.message : String(e);
602
- if (errorMessage.includes("timeout") || errorMessage.includes("Timeout")) {
603
- const error2 = new import_shared.ChromeMcpWarmupError(
604
- import_shared.ChromeMcpWarmupErrorType.AI_TIMEOUT,
605
- "AI response timeout",
606
- "AI did not respond within 60 seconds. Please check if the OpenCode AI model is properly configured and available."
607
- );
608
- log.warn("Chrome MCP warmup retry timeout", __spreadValues({
609
- error: errorMessage
610
- }, freeModel && {
611
- model: `${freeModel.providerID}/${freeModel.modelID}`
612
- }));
613
- timer.end("Chrome MCP warmup retry timeout");
614
- return { success: false, error: error2 };
615
- }
616
- const error = new import_shared.ChromeMcpWarmupError(
617
- import_shared.ChromeMcpWarmupErrorType.UNKNOWN,
618
- "Unknown error during Chrome MCP warmup retry",
619
- errorMessage
620
- );
621
- log.warn("Chrome MCP warmup retry failed with unknown error", __spreadValues({
622
- error: errorMessage
623
- }, freeModel && {
624
- model: `${freeModel.providerID}/${freeModel.modelID}`
625
- }));
626
- timer.end("Chrome MCP warmup retry failed");
627
- return { success: false, error };
628
- } finally {
629
- if (warmupSessionId) {
630
- try {
631
- yield this.deleteSession(warmupSessionId, 5);
632
- } catch (e) {
633
- log.warn("Failed to delete warmup session after retries", {
634
- error: e,
635
- warmupSessionId
636
- });
637
- }
638
- }
639
- }
640
- });
641
- }
642
522
  }
643
523
  // Annotate the CommonJS export names for ESM import in node:
644
524
  0 && (module.exports = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-opencode-assistant",
3
- "version": "1.0.43",
3
+ "version": "1.0.47",
4
4
  "description": "Embed OpenCode Web UI in your Vite dev server for real-time code modification and preview",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -36,9 +36,9 @@
36
36
  "license": "MIT",
37
37
  "dependencies": {
38
38
  "unplugin-vue-inspector": "^2.4.0",
39
- "@vite-plugin-opencode-assistant/shared": "1.0.43",
40
- "@vite-plugin-opencode-assistant/opencode": "1.0.43",
41
- "@vite-plugin-opencode-assistant/components": "1.0.43"
39
+ "@vite-plugin-opencode-assistant/opencode": "1.0.47",
40
+ "@vite-plugin-opencode-assistant/shared": "1.0.47",
41
+ "@vite-plugin-opencode-assistant/components": "1.0.47"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "vite": ">=4.0.0"