@inspecto-dev/core 0.3.3 → 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.
package/dist/index.cjs
CHANGED
|
@@ -3582,6 +3582,113 @@ var init_fix_bug_prompt = __esm({
|
|
|
3582
3582
|
}
|
|
3583
3583
|
});
|
|
3584
3584
|
|
|
3585
|
+
// src/menu-helpers.ts
|
|
3586
|
+
function formatSourceAnchor(location) {
|
|
3587
|
+
const fileName = location.file.split("/").pop() || location.file;
|
|
3588
|
+
return `${fileName}:${location.line}:${location.column}`;
|
|
3589
|
+
}
|
|
3590
|
+
function formatRuntimeErrorCount2(count) {
|
|
3591
|
+
if (count > 99) return "99+";
|
|
3592
|
+
return String(count);
|
|
3593
|
+
}
|
|
3594
|
+
function createMenuSection() {
|
|
3595
|
+
const section = document.createElement("div");
|
|
3596
|
+
section.className = menuSectionClass;
|
|
3597
|
+
return section;
|
|
3598
|
+
}
|
|
3599
|
+
function createAskInput(placeholder) {
|
|
3600
|
+
const inputWrapper = document.createElement("div");
|
|
3601
|
+
inputWrapper.className = menuInputWrapperClass;
|
|
3602
|
+
const input = document.createElement("input");
|
|
3603
|
+
input.className = menuInputClass;
|
|
3604
|
+
input.type = "text";
|
|
3605
|
+
input.placeholder = placeholder != null ? placeholder : "Add a custom ask or extra instruction...";
|
|
3606
|
+
input.setAttribute("aria-label", "Custom ask");
|
|
3607
|
+
const sendIcon = document.createElement("div");
|
|
3608
|
+
sendIcon.className = menuInputIconClass;
|
|
3609
|
+
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>`;
|
|
3610
|
+
sendIcon.style.cursor = "pointer";
|
|
3611
|
+
inputWrapper.appendChild(input);
|
|
3612
|
+
inputWrapper.appendChild(sendIcon);
|
|
3613
|
+
return { input, inputWrapper, sendIcon };
|
|
3614
|
+
}
|
|
3615
|
+
function showError(menu, message, errorCode) {
|
|
3616
|
+
var _a2;
|
|
3617
|
+
(_a2 = menu.querySelector(`.${errorMsgClass}`)) == null ? void 0 : _a2.remove();
|
|
3618
|
+
const errEl = document.createElement("div");
|
|
3619
|
+
errEl.className = errorMsgClass;
|
|
3620
|
+
errEl.textContent = errorCode === "FILE_NOT_FOUND" ? "Source file not found. Is the server running?" : `Error: ${message}`;
|
|
3621
|
+
menu.appendChild(errEl);
|
|
3622
|
+
}
|
|
3623
|
+
function isFixIntent(intent) {
|
|
3624
|
+
return intent.aiIntent === "fix";
|
|
3625
|
+
}
|
|
3626
|
+
function isFixUiIntent(intent) {
|
|
3627
|
+
return intent.id === "fix-ui";
|
|
3628
|
+
}
|
|
3629
|
+
function createRuntimeContextUi(runtimeContext, options) {
|
|
3630
|
+
var _a2;
|
|
3631
|
+
if (!runtimeContext) return null;
|
|
3632
|
+
const summary = formatRuntimeContextSummary(runtimeContext);
|
|
3633
|
+
if (!summary) return null;
|
|
3634
|
+
const container = document.createElement("div");
|
|
3635
|
+
container.style.display = "flex";
|
|
3636
|
+
container.style.flexDirection = "column";
|
|
3637
|
+
container.style.gap = "4px";
|
|
3638
|
+
const summaryEl = document.createElement("div");
|
|
3639
|
+
summaryEl.className = menuContextSummaryClass;
|
|
3640
|
+
summaryEl.textContent = summary;
|
|
3641
|
+
container.appendChild(summaryEl);
|
|
3642
|
+
if (((_a2 = options.runtimeContext) == null ? void 0 : _a2.preview) !== true || runtimeContext.records.length === 0) {
|
|
3643
|
+
return container;
|
|
3644
|
+
}
|
|
3645
|
+
const toggle = document.createElement("button");
|
|
3646
|
+
toggle.type = "button";
|
|
3647
|
+
toggle.className = menuContextToggleClass;
|
|
3648
|
+
toggle.textContent = "Show preview";
|
|
3649
|
+
const preview = document.createElement("div");
|
|
3650
|
+
preview.className = menuContextPreviewClass;
|
|
3651
|
+
preview.hidden = true;
|
|
3652
|
+
preview.textContent = formatRuntimeContextPreview(runtimeContext.records);
|
|
3653
|
+
toggle.addEventListener("click", (event) => {
|
|
3654
|
+
event.preventDefault();
|
|
3655
|
+
event.stopPropagation();
|
|
3656
|
+
preview.hidden = !preview.hidden;
|
|
3657
|
+
toggle.textContent = preview.hidden ? "Show preview" : "Hide preview";
|
|
3658
|
+
});
|
|
3659
|
+
container.append(toggle, preview);
|
|
3660
|
+
return container;
|
|
3661
|
+
}
|
|
3662
|
+
function formatRuntimeContextSummary(runtimeContext) {
|
|
3663
|
+
const parts = [];
|
|
3664
|
+
const { runtimeErrorCount, failedRequestCount } = runtimeContext.summary;
|
|
3665
|
+
if (runtimeErrorCount > 0) {
|
|
3666
|
+
parts.push(
|
|
3667
|
+
`${runtimeErrorCount} ${runtimeErrorCount === 1 ? "runtime error" : "runtime errors"}`
|
|
3668
|
+
);
|
|
3669
|
+
}
|
|
3670
|
+
if (failedRequestCount > 0) {
|
|
3671
|
+
parts.push(
|
|
3672
|
+
`${failedRequestCount} ${failedRequestCount === 1 ? "failed request" : "failed requests"}`
|
|
3673
|
+
);
|
|
3674
|
+
}
|
|
3675
|
+
return parts.join(" \u2022 ");
|
|
3676
|
+
}
|
|
3677
|
+
function formatRuntimeContextPreview(records) {
|
|
3678
|
+
return records.slice(0, 3).map((record) => {
|
|
3679
|
+
var _a2, _b, _c, _d, _e, _f;
|
|
3680
|
+
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`;
|
|
3681
|
+
return `[${record.kind}] ${record.message}
|
|
3682
|
+
${details}`;
|
|
3683
|
+
}).join("\n\n");
|
|
3684
|
+
}
|
|
3685
|
+
var init_menu_helpers = __esm({
|
|
3686
|
+
"src/menu-helpers.ts"() {
|
|
3687
|
+
"use strict";
|
|
3688
|
+
init_styles();
|
|
3689
|
+
}
|
|
3690
|
+
});
|
|
3691
|
+
|
|
3585
3692
|
// src/menu-actions.ts
|
|
3586
3693
|
function createIntentActionButtons(input) {
|
|
3587
3694
|
return input.intents.map((intent) => {
|
|
@@ -3607,7 +3714,9 @@ function createIntentActionButtons(input) {
|
|
|
3607
3714
|
}
|
|
3608
3715
|
const requestRuntimeContext = input.resolveRuntimeContext(intent);
|
|
3609
3716
|
const requestScreenshotContext = yield input.resolveScreenshotContext();
|
|
3610
|
-
const requestCssContextPrompt = input.resolveCssContextPrompt(
|
|
3717
|
+
const requestCssContextPrompt = input.resolveCssContextPrompt(
|
|
3718
|
+
isFixUiIntent(intent) ? intent : void 0
|
|
3719
|
+
);
|
|
3611
3720
|
const prompt = appendCssContextToPrompt(
|
|
3612
3721
|
appendScreenshotContextToPrompt(
|
|
3613
3722
|
buildPromptForIntent(intent, input.location, snippetResult, requestRuntimeContext),
|
|
@@ -3638,6 +3747,7 @@ var init_menu_actions = __esm({
|
|
|
3638
3747
|
init_css_context();
|
|
3639
3748
|
init_fix_bug_prompt();
|
|
3640
3749
|
init_http();
|
|
3750
|
+
init_menu_helpers();
|
|
3641
3751
|
init_styles();
|
|
3642
3752
|
}
|
|
3643
3753
|
});
|
|
@@ -3710,110 +3820,6 @@ var init_menu_send = __esm({
|
|
|
3710
3820
|
}
|
|
3711
3821
|
});
|
|
3712
3822
|
|
|
3713
|
-
// src/menu-helpers.ts
|
|
3714
|
-
function formatSourceAnchor(location) {
|
|
3715
|
-
const fileName = location.file.split("/").pop() || location.file;
|
|
3716
|
-
return `${fileName}:${location.line}:${location.column}`;
|
|
3717
|
-
}
|
|
3718
|
-
function formatRuntimeErrorCount2(count) {
|
|
3719
|
-
if (count > 99) return "99+";
|
|
3720
|
-
return String(count);
|
|
3721
|
-
}
|
|
3722
|
-
function createMenuSection() {
|
|
3723
|
-
const section = document.createElement("div");
|
|
3724
|
-
section.className = menuSectionClass;
|
|
3725
|
-
return section;
|
|
3726
|
-
}
|
|
3727
|
-
function createAskInput(placeholder) {
|
|
3728
|
-
const inputWrapper = document.createElement("div");
|
|
3729
|
-
inputWrapper.className = menuInputWrapperClass;
|
|
3730
|
-
const input = document.createElement("input");
|
|
3731
|
-
input.className = menuInputClass;
|
|
3732
|
-
input.type = "text";
|
|
3733
|
-
input.placeholder = placeholder != null ? placeholder : "Add a custom ask or extra instruction...";
|
|
3734
|
-
input.setAttribute("aria-label", "Custom ask");
|
|
3735
|
-
const sendIcon = document.createElement("div");
|
|
3736
|
-
sendIcon.className = menuInputIconClass;
|
|
3737
|
-
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>`;
|
|
3738
|
-
sendIcon.style.cursor = "pointer";
|
|
3739
|
-
inputWrapper.appendChild(input);
|
|
3740
|
-
inputWrapper.appendChild(sendIcon);
|
|
3741
|
-
return { input, inputWrapper, sendIcon };
|
|
3742
|
-
}
|
|
3743
|
-
function showError(menu, message, errorCode) {
|
|
3744
|
-
var _a2;
|
|
3745
|
-
(_a2 = menu.querySelector(`.${errorMsgClass}`)) == null ? void 0 : _a2.remove();
|
|
3746
|
-
const errEl = document.createElement("div");
|
|
3747
|
-
errEl.className = errorMsgClass;
|
|
3748
|
-
errEl.textContent = errorCode === "FILE_NOT_FOUND" ? "Source file not found. Is the server running?" : `Error: ${message}`;
|
|
3749
|
-
menu.appendChild(errEl);
|
|
3750
|
-
}
|
|
3751
|
-
function isFixIntent(intent) {
|
|
3752
|
-
return intent.aiIntent === "fix";
|
|
3753
|
-
}
|
|
3754
|
-
function createRuntimeContextUi(runtimeContext, options) {
|
|
3755
|
-
var _a2;
|
|
3756
|
-
if (!runtimeContext) return null;
|
|
3757
|
-
const summary = formatRuntimeContextSummary(runtimeContext);
|
|
3758
|
-
if (!summary) return null;
|
|
3759
|
-
const container = document.createElement("div");
|
|
3760
|
-
container.style.display = "flex";
|
|
3761
|
-
container.style.flexDirection = "column";
|
|
3762
|
-
container.style.gap = "4px";
|
|
3763
|
-
const summaryEl = document.createElement("div");
|
|
3764
|
-
summaryEl.className = menuContextSummaryClass;
|
|
3765
|
-
summaryEl.textContent = summary;
|
|
3766
|
-
container.appendChild(summaryEl);
|
|
3767
|
-
if (((_a2 = options.runtimeContext) == null ? void 0 : _a2.preview) !== true || runtimeContext.records.length === 0) {
|
|
3768
|
-
return container;
|
|
3769
|
-
}
|
|
3770
|
-
const toggle = document.createElement("button");
|
|
3771
|
-
toggle.type = "button";
|
|
3772
|
-
toggle.className = menuContextToggleClass;
|
|
3773
|
-
toggle.textContent = "Show preview";
|
|
3774
|
-
const preview = document.createElement("div");
|
|
3775
|
-
preview.className = menuContextPreviewClass;
|
|
3776
|
-
preview.hidden = true;
|
|
3777
|
-
preview.textContent = formatRuntimeContextPreview(runtimeContext.records);
|
|
3778
|
-
toggle.addEventListener("click", (event) => {
|
|
3779
|
-
event.preventDefault();
|
|
3780
|
-
event.stopPropagation();
|
|
3781
|
-
preview.hidden = !preview.hidden;
|
|
3782
|
-
toggle.textContent = preview.hidden ? "Show preview" : "Hide preview";
|
|
3783
|
-
});
|
|
3784
|
-
container.append(toggle, preview);
|
|
3785
|
-
return container;
|
|
3786
|
-
}
|
|
3787
|
-
function formatRuntimeContextSummary(runtimeContext) {
|
|
3788
|
-
const parts = [];
|
|
3789
|
-
const { runtimeErrorCount, failedRequestCount } = runtimeContext.summary;
|
|
3790
|
-
if (runtimeErrorCount > 0) {
|
|
3791
|
-
parts.push(
|
|
3792
|
-
`${runtimeErrorCount} ${runtimeErrorCount === 1 ? "runtime error" : "runtime errors"}`
|
|
3793
|
-
);
|
|
3794
|
-
}
|
|
3795
|
-
if (failedRequestCount > 0) {
|
|
3796
|
-
parts.push(
|
|
3797
|
-
`${failedRequestCount} ${failedRequestCount === 1 ? "failed request" : "failed requests"}`
|
|
3798
|
-
);
|
|
3799
|
-
}
|
|
3800
|
-
return parts.join(" \u2022 ");
|
|
3801
|
-
}
|
|
3802
|
-
function formatRuntimeContextPreview(records) {
|
|
3803
|
-
return records.slice(0, 3).map((record) => {
|
|
3804
|
-
var _a2, _b, _c, _d, _e, _f;
|
|
3805
|
-
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`;
|
|
3806
|
-
return `[${record.kind}] ${record.message}
|
|
3807
|
-
${details}`;
|
|
3808
|
-
}).join("\n\n");
|
|
3809
|
-
}
|
|
3810
|
-
var init_menu_helpers = __esm({
|
|
3811
|
-
"src/menu-helpers.ts"() {
|
|
3812
|
-
"use strict";
|
|
3813
|
-
init_styles();
|
|
3814
|
-
}
|
|
3815
|
-
});
|
|
3816
|
-
|
|
3817
3823
|
// src/menu-header.ts
|
|
3818
3824
|
function createMenuHeaderDom(input) {
|
|
3819
3825
|
var _a2;
|
|
@@ -4143,9 +4149,10 @@ function showIntentMenu(shadowRoot, location, clickX, clickY, options, onClose,
|
|
|
4143
4149
|
return null;
|
|
4144
4150
|
}
|
|
4145
4151
|
});
|
|
4146
|
-
const resolveCssContextPrompt = () => {
|
|
4152
|
+
const resolveCssContextPrompt = (intent) => {
|
|
4147
4153
|
var _a3, _b2;
|
|
4148
|
-
|
|
4154
|
+
const shouldAttachCssContext = cssContextEnabled || Boolean(intent && isFixUiIntent(intent));
|
|
4155
|
+
if (!shouldAttachCssContext) return null;
|
|
4149
4156
|
try {
|
|
4150
4157
|
return (_b2 = (_a3 = deps.captureCssContextPrompt) == null ? void 0 : _a3.call(deps)) != null ? _b2 : null;
|
|
4151
4158
|
} catch (e) {
|