@inspecto-dev/core 0.3.2 → 0.3.4

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.
@@ -3372,6 +3372,107 @@ function indentBlock(text) {
3372
3372
  return text.split("\n").map((line) => ` ${line}`).join("\n");
3373
3373
  }
3374
3374
 
3375
+ // src/menu-helpers.ts
3376
+ function formatSourceAnchor(location) {
3377
+ const fileName = location.file.split("/").pop() || location.file;
3378
+ return `${fileName}:${location.line}:${location.column}`;
3379
+ }
3380
+ function formatRuntimeErrorCount2(count) {
3381
+ if (count > 99) return "99+";
3382
+ return String(count);
3383
+ }
3384
+ function createMenuSection() {
3385
+ const section = document.createElement("div");
3386
+ section.className = menuSectionClass;
3387
+ return section;
3388
+ }
3389
+ function createAskInput(placeholder) {
3390
+ const inputWrapper = document.createElement("div");
3391
+ inputWrapper.className = menuInputWrapperClass;
3392
+ const input = document.createElement("input");
3393
+ input.className = menuInputClass;
3394
+ input.type = "text";
3395
+ input.placeholder = placeholder != null ? placeholder : "Add a custom ask or extra instruction...";
3396
+ input.setAttribute("aria-label", "Custom ask");
3397
+ const sendIcon = document.createElement("div");
3398
+ sendIcon.className = menuInputIconClass;
3399
+ sendIcon.innerHTML = `<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>`;
3400
+ sendIcon.style.cursor = "pointer";
3401
+ inputWrapper.appendChild(input);
3402
+ inputWrapper.appendChild(sendIcon);
3403
+ return { input, inputWrapper, sendIcon };
3404
+ }
3405
+ function showError(menu, message, errorCode) {
3406
+ var _a2;
3407
+ (_a2 = menu.querySelector(`.${errorMsgClass}`)) == null ? void 0 : _a2.remove();
3408
+ const errEl = document.createElement("div");
3409
+ errEl.className = errorMsgClass;
3410
+ errEl.textContent = errorCode === "FILE_NOT_FOUND" ? "Source file not found. Is the server running?" : `Error: ${message}`;
3411
+ menu.appendChild(errEl);
3412
+ }
3413
+ function isFixIntent(intent) {
3414
+ return intent.aiIntent === "fix";
3415
+ }
3416
+ function isFixUiIntent(intent) {
3417
+ return intent.id === "fix-ui";
3418
+ }
3419
+ function createRuntimeContextUi(runtimeContext, options) {
3420
+ var _a2;
3421
+ if (!runtimeContext) return null;
3422
+ const summary = formatRuntimeContextSummary(runtimeContext);
3423
+ if (!summary) return null;
3424
+ const container = document.createElement("div");
3425
+ container.style.display = "flex";
3426
+ container.style.flexDirection = "column";
3427
+ container.style.gap = "4px";
3428
+ const summaryEl = document.createElement("div");
3429
+ summaryEl.className = menuContextSummaryClass;
3430
+ summaryEl.textContent = summary;
3431
+ container.appendChild(summaryEl);
3432
+ if (((_a2 = options.runtimeContext) == null ? void 0 : _a2.preview) !== true || runtimeContext.records.length === 0) {
3433
+ return container;
3434
+ }
3435
+ const toggle = document.createElement("button");
3436
+ toggle.type = "button";
3437
+ toggle.className = menuContextToggleClass;
3438
+ toggle.textContent = "Show preview";
3439
+ const preview = document.createElement("div");
3440
+ preview.className = menuContextPreviewClass;
3441
+ preview.hidden = true;
3442
+ preview.textContent = formatRuntimeContextPreview(runtimeContext.records);
3443
+ toggle.addEventListener("click", (event) => {
3444
+ event.preventDefault();
3445
+ event.stopPropagation();
3446
+ preview.hidden = !preview.hidden;
3447
+ toggle.textContent = preview.hidden ? "Show preview" : "Hide preview";
3448
+ });
3449
+ container.append(toggle, preview);
3450
+ return container;
3451
+ }
3452
+ function formatRuntimeContextSummary(runtimeContext) {
3453
+ const parts = [];
3454
+ const { runtimeErrorCount, failedRequestCount } = runtimeContext.summary;
3455
+ if (runtimeErrorCount > 0) {
3456
+ parts.push(
3457
+ `${runtimeErrorCount} ${runtimeErrorCount === 1 ? "runtime error" : "runtime errors"}`
3458
+ );
3459
+ }
3460
+ if (failedRequestCount > 0) {
3461
+ parts.push(
3462
+ `${failedRequestCount} ${failedRequestCount === 1 ? "failed request" : "failed requests"}`
3463
+ );
3464
+ }
3465
+ return parts.join(" \u2022 ");
3466
+ }
3467
+ function formatRuntimeContextPreview(records) {
3468
+ return records.slice(0, 3).map((record) => {
3469
+ var _a2, _b, _c, _d, _e, _f;
3470
+ const details = record.kind === "failed-request" ? `${(_b = (_a2 = record.request) == null ? void 0 : _a2.method) != null ? _b : "GET"} ${(_f = (_e = (_c = record.request) == null ? void 0 : _c.pathname) != null ? _e : (_d = record.request) == null ? void 0 : _d.url) != null ? _f : ""}`.trim() : `${record.occurrenceCount}x`;
3471
+ return `[${record.kind}] ${record.message}
3472
+ ${details}`;
3473
+ }).join("\n\n");
3474
+ }
3475
+
3375
3476
  // src/menu-actions.ts
3376
3477
  function createIntentActionButtons(input) {
3377
3478
  return input.intents.map((intent) => {
@@ -3397,7 +3498,9 @@ function createIntentActionButtons(input) {
3397
3498
  }
3398
3499
  const requestRuntimeContext = input.resolveRuntimeContext(intent);
3399
3500
  const requestScreenshotContext = yield input.resolveScreenshotContext();
3400
- const requestCssContextPrompt = input.resolveCssContextPrompt();
3501
+ const requestCssContextPrompt = input.resolveCssContextPrompt(
3502
+ isFixUiIntent(intent) ? intent : void 0
3503
+ );
3401
3504
  const prompt = appendCssContextToPrompt(
3402
3505
  appendScreenshotContextToPrompt(
3403
3506
  buildPromptForIntent(intent, input.location, snippetResult, requestRuntimeContext),
@@ -3482,104 +3585,6 @@ function buildCustomInspectPrompt(input) {
3482
3585
  });
3483
3586
  }
3484
3587
 
3485
- // src/menu-helpers.ts
3486
- function formatSourceAnchor(location) {
3487
- const fileName = location.file.split("/").pop() || location.file;
3488
- return `${fileName}:${location.line}:${location.column}`;
3489
- }
3490
- function formatRuntimeErrorCount2(count) {
3491
- if (count > 99) return "99+";
3492
- return String(count);
3493
- }
3494
- function createMenuSection() {
3495
- const section = document.createElement("div");
3496
- section.className = menuSectionClass;
3497
- return section;
3498
- }
3499
- function createAskInput(placeholder) {
3500
- const inputWrapper = document.createElement("div");
3501
- inputWrapper.className = menuInputWrapperClass;
3502
- const input = document.createElement("input");
3503
- input.className = menuInputClass;
3504
- input.type = "text";
3505
- input.placeholder = placeholder != null ? placeholder : "Add a custom ask or extra instruction...";
3506
- input.setAttribute("aria-label", "Custom ask");
3507
- const sendIcon = document.createElement("div");
3508
- sendIcon.className = menuInputIconClass;
3509
- sendIcon.innerHTML = `<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>`;
3510
- sendIcon.style.cursor = "pointer";
3511
- inputWrapper.appendChild(input);
3512
- inputWrapper.appendChild(sendIcon);
3513
- return { input, inputWrapper, sendIcon };
3514
- }
3515
- function showError(menu, message, errorCode) {
3516
- var _a2;
3517
- (_a2 = menu.querySelector(`.${errorMsgClass}`)) == null ? void 0 : _a2.remove();
3518
- const errEl = document.createElement("div");
3519
- errEl.className = errorMsgClass;
3520
- errEl.textContent = errorCode === "FILE_NOT_FOUND" ? "Source file not found. Is the server running?" : `Error: ${message}`;
3521
- menu.appendChild(errEl);
3522
- }
3523
- function isFixIntent(intent) {
3524
- return intent.aiIntent === "fix";
3525
- }
3526
- function createRuntimeContextUi(runtimeContext, options) {
3527
- var _a2;
3528
- if (!runtimeContext) return null;
3529
- const summary = formatRuntimeContextSummary(runtimeContext);
3530
- if (!summary) return null;
3531
- const container = document.createElement("div");
3532
- container.style.display = "flex";
3533
- container.style.flexDirection = "column";
3534
- container.style.gap = "4px";
3535
- const summaryEl = document.createElement("div");
3536
- summaryEl.className = menuContextSummaryClass;
3537
- summaryEl.textContent = summary;
3538
- container.appendChild(summaryEl);
3539
- if (((_a2 = options.runtimeContext) == null ? void 0 : _a2.preview) !== true || runtimeContext.records.length === 0) {
3540
- return container;
3541
- }
3542
- const toggle = document.createElement("button");
3543
- toggle.type = "button";
3544
- toggle.className = menuContextToggleClass;
3545
- toggle.textContent = "Show preview";
3546
- const preview = document.createElement("div");
3547
- preview.className = menuContextPreviewClass;
3548
- preview.hidden = true;
3549
- preview.textContent = formatRuntimeContextPreview(runtimeContext.records);
3550
- toggle.addEventListener("click", (event) => {
3551
- event.preventDefault();
3552
- event.stopPropagation();
3553
- preview.hidden = !preview.hidden;
3554
- toggle.textContent = preview.hidden ? "Show preview" : "Hide preview";
3555
- });
3556
- container.append(toggle, preview);
3557
- return container;
3558
- }
3559
- function formatRuntimeContextSummary(runtimeContext) {
3560
- const parts = [];
3561
- const { runtimeErrorCount, failedRequestCount } = runtimeContext.summary;
3562
- if (runtimeErrorCount > 0) {
3563
- parts.push(
3564
- `${runtimeErrorCount} ${runtimeErrorCount === 1 ? "runtime error" : "runtime errors"}`
3565
- );
3566
- }
3567
- if (failedRequestCount > 0) {
3568
- parts.push(
3569
- `${failedRequestCount} ${failedRequestCount === 1 ? "failed request" : "failed requests"}`
3570
- );
3571
- }
3572
- return parts.join(" \u2022 ");
3573
- }
3574
- function formatRuntimeContextPreview(records) {
3575
- return records.slice(0, 3).map((record) => {
3576
- var _a2, _b, _c, _d, _e, _f;
3577
- const details = record.kind === "failed-request" ? `${(_b = (_a2 = record.request) == null ? void 0 : _a2.method) != null ? _b : "GET"} ${(_f = (_e = (_c = record.request) == null ? void 0 : _c.pathname) != null ? _e : (_d = record.request) == null ? void 0 : _d.url) != null ? _f : ""}`.trim() : `${record.occurrenceCount}x`;
3578
- return `[${record.kind}] ${record.message}
3579
- ${details}`;
3580
- }).join("\n\n");
3581
- }
3582
-
3583
3588
  // src/menu-header.ts
3584
3589
  function createMenuHeaderDom(input) {
3585
3590
  var _a2;
@@ -3902,9 +3907,10 @@ function showIntentMenu(shadowRoot, location, clickX, clickY, options, onClose,
3902
3907
  return null;
3903
3908
  }
3904
3909
  });
3905
- const resolveCssContextPrompt = () => {
3910
+ const resolveCssContextPrompt = (intent) => {
3906
3911
  var _a3, _b2;
3907
- if (!cssContextEnabled) return null;
3912
+ const shouldAttachCssContext = cssContextEnabled || Boolean(intent && isFixUiIntent(intent));
3913
+ if (!shouldAttachCssContext) return null;
3908
3914
  try {
3909
3915
  return (_b2 = (_a3 = deps.captureCssContextPrompt) == null ? void 0 : _a3.call(deps)) != null ? _b2 : null;
3910
3916
  } catch (e) {
@@ -6316,4 +6322,4 @@ if (typeof customElements !== "undefined") {
6316
6322
  export {
6317
6323
  InspectoElement
6318
6324
  };
6319
- //# sourceMappingURL=component-D75QZTRY.js.map
6325
+ //# sourceMappingURL=component-M23S536R.js.map