@inspecto-dev/core 0.3.9 → 0.3.11
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/{component-MYXLDDWZ.js → component-X56HVYBS.js} +269 -62
- package/dist/component-X56HVYBS.js.map +1 -0
- package/dist/index.cjs +272 -62
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/dist/component-MYXLDDWZ.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -172,7 +172,7 @@ var init_annotate_session = __esm({
|
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
// src/styles-classes.ts
|
|
175
|
-
var overlayClass, menuClass, menuTitleClass, menuMetaClass, menuSectionClass, menuItemClass, loadingSpinnerClass, errorMsgClass, badgeClass, menuInputClass, menuInputWrapperClass, menuInputIconClass, menuContextSummaryClass, menuContextPreviewClass, menuContextToggleClass, runtimeToggleClass, runtimeToggleIconClass, runtimeToggleBadgeClass, annotateSidebarClass, annotateSidebarHeaderClass, annotateSidebarSectionClass, annotateTargetListClass, annotateQueueListClass, annotateBadgeClass, annotateSidebarFooterClass, annotateSidebarActionsClass, annotateSidebarButtonClass, annotateSidebarInputClass, annotateSidebarSelectClass, annotateSidebarTextClass, annotateSidebarEmptyClass, annotateSidebarQueueMetaClass, annotateSidebarQueueItemClass, annotateSidebarTargetItemClass, annotateSidebarLabelClass, annotateSidebarInlineActionClass, annotateSidebarChipListClass, annotateSidebarChipClass, annotateSidebarChipPanelClass, annotateSidebarChipFieldClass, annotateSidebarHintClass, tooltipClass, tooltipTopClass, tooltipBottomClass, tagClass, idClass, classClass, dimClass, separatorClass, sourceClass, shortcutIconClass;
|
|
175
|
+
var overlayClass, menuClass, menuTitleClass, menuMetaClass, menuSectionClass, menuItemClass, loadingSpinnerClass, errorMsgClass, badgeClass, menuInputClass, menuInputWrapperClass, menuInputIconClass, menuContextSummaryClass, menuContextPreviewClass, menuContextToggleClass, runtimeToggleClass, runtimeToggleIconClass, runtimeToggleBadgeClass, annotateSidebarClass, annotateSidebarHeaderClass, annotateSidebarSectionClass, annotateTargetListClass, annotateQueueListClass, annotateBadgeClass, annotateSidebarFooterClass, annotateSidebarActionsClass, annotateSidebarButtonClass, annotateSidebarInputClass, annotateSidebarSelectClass, annotateSidebarTextClass, annotateSidebarEmptyClass, annotateSidebarQueueMetaClass, annotateSidebarQueueItemClass, annotateSidebarTargetItemClass, annotateSidebarLabelClass, annotateSidebarInlineActionClass, annotateSidebarChipListClass, annotateSidebarChipClass, annotateSidebarChipPanelClass, annotateSidebarChipFieldClass, annotateSidebarHintClass, annotateConfirmDialogClass, tooltipClass, tooltipTopClass, tooltipBottomClass, tagClass, idClass, classClass, dimClass, separatorClass, sourceClass, shortcutIconClass;
|
|
176
176
|
var init_styles_classes = __esm({
|
|
177
177
|
"src/styles-classes.ts"() {
|
|
178
178
|
"use strict";
|
|
@@ -217,6 +217,7 @@ var init_styles_classes = __esm({
|
|
|
217
217
|
annotateSidebarChipPanelClass = "inspecto-annotate-sidebar-chip-panel";
|
|
218
218
|
annotateSidebarChipFieldClass = "inspecto-annotate-sidebar-chip-field";
|
|
219
219
|
annotateSidebarHintClass = "inspecto-annotate-sidebar-hint";
|
|
220
|
+
annotateConfirmDialogClass = "inspecto-annotate-confirm-dialog";
|
|
220
221
|
tooltipClass = "inspecto-tooltip";
|
|
221
222
|
tooltipTopClass = "inspecto-tooltip-top";
|
|
222
223
|
tooltipBottomClass = "inspecto-tooltip-bottom";
|
|
@@ -573,7 +574,7 @@ var init_styles_annotate = __esm({
|
|
|
573
574
|
.${annotateSidebarSectionClass}[data-variant="modes"] .${annotateSidebarButtonClass}[data-role="mode"] { flex: 1 1 0; justify-content: center; padding: 8px 10px; background: transparent; border-color: transparent; color: var(--inspecto-text-secondary); }
|
|
574
575
|
.${annotateSidebarHeaderClass} .${annotateSidebarButtonClass} { width: 30px; height: 30px; padding: 0; border-radius: var(--inspecto-radius-pill); display: inline-flex; align-items: center; justify-content: center; font-size: 12px; line-height: 1; flex: 0 0 auto; }
|
|
575
576
|
.${annotateSidebarHeaderClass} .${runtimeToggleClass} { overflow: visible; }
|
|
576
|
-
.${annotateSidebarHeaderClass} [data-inspecto-annotate-header-actions="true"] { padding: 4px; border-radius: 999px; background: rgba(255, 255, 255, 0.025); border: 1px solid rgba(255, 255, 255, 0.05); gap: 4px; flex-wrap: nowrap; flex: 0 0 auto; margin-top: 1px; }
|
|
577
|
+
.${annotateSidebarHeaderClass} [data-inspecto-annotate-header-actions-left="true"], .${annotateSidebarHeaderClass} [data-inspecto-annotate-header-actions-right="true"] { padding: 4px; border-radius: 999px; background: rgba(255, 255, 255, 0.025); border: 1px solid rgba(255, 255, 255, 0.05); gap: 4px; flex-wrap: nowrap; flex: 0 0 auto; margin-top: 1px; }
|
|
577
578
|
.${annotateSidebarButtonClass}:hover { background: var(--inspecto-surface-hover); color: #ffffff; border-color: rgba(148, 163, 184, 0.12); transform: translateY(-1px); }
|
|
578
579
|
.${annotateSidebarButtonClass}:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
579
580
|
.${annotateSidebarClass} .${annotateSidebarButtonClass}.primary {
|
|
@@ -653,6 +654,73 @@ var init_styles_annotate = __esm({
|
|
|
653
654
|
.${annotateSidebarSectionClass}[data-variant="full-prompt"] > summary { list-style: none; cursor: pointer; font-size: 10px; font-weight: 600; color: var(--inspecto-text-tertiary); text-transform: none; letter-spacing: 0.01em; }
|
|
654
655
|
.${annotateSidebarSectionClass}[data-variant="full-prompt"] > summary::-webkit-details-marker { display: none; }
|
|
655
656
|
.${annotateSidebarTextClass}[data-variant="full-prompt"] { margin: 6px 0 0; padding: 9px 10px; border: 1px solid var(--inspecto-border-muted); border-radius: var(--inspecto-radius-sm); background: rgba(255, 255, 255, 0.02); color: var(--inspecto-text-secondary); font-family: 'SF Mono', 'Fira Code', ui-monospace, monospace; font-size: 10px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; max-height: 220px; overflow: auto; }
|
|
657
|
+
|
|
658
|
+
.${annotateConfirmDialogClass} {
|
|
659
|
+
position: absolute;
|
|
660
|
+
inset: 0;
|
|
661
|
+
z-index: 100;
|
|
662
|
+
display: flex;
|
|
663
|
+
align-items: center;
|
|
664
|
+
justify-content: center;
|
|
665
|
+
background: rgba(13, 20, 31, 0.5);
|
|
666
|
+
backdrop-filter: blur(4px);
|
|
667
|
+
-webkit-backdrop-filter: blur(4px);
|
|
668
|
+
border-radius: 28px;
|
|
669
|
+
}
|
|
670
|
+
.${annotateConfirmDialogClass} .content {
|
|
671
|
+
width: calc(100% - 48px);
|
|
672
|
+
background: rgba(30, 35, 45, 0.95);
|
|
673
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
674
|
+
border-radius: 20px;
|
|
675
|
+
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
|
676
|
+
padding: 18px;
|
|
677
|
+
display: flex;
|
|
678
|
+
flex-direction: column;
|
|
679
|
+
gap: 18px;
|
|
680
|
+
}
|
|
681
|
+
.${annotateConfirmDialogClass} p {
|
|
682
|
+
margin: 0;
|
|
683
|
+
font-size: 13px;
|
|
684
|
+
line-height: 1.5;
|
|
685
|
+
color: rgba(255, 255, 255, 0.9);
|
|
686
|
+
}
|
|
687
|
+
.${annotateConfirmDialogClass} .actions {
|
|
688
|
+
display: flex;
|
|
689
|
+
gap: 8px;
|
|
690
|
+
justify-content: flex-end;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
@keyframes inspecto-fade-out {
|
|
694
|
+
0% { opacity: 1; transform: translateY(0); }
|
|
695
|
+
100% { opacity: 0; transform: translateY(-4px); pointer-events: none; }
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
.inspecto-workflow-toast {
|
|
699
|
+
position: absolute;
|
|
700
|
+
bottom: calc(100% + 8px);
|
|
701
|
+
left: 50%;
|
|
702
|
+
transform: translateX(-50%);
|
|
703
|
+
background: rgba(28, 28, 28, 0.95);
|
|
704
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
705
|
+
border-radius: var(--inspecto-radius-pill);
|
|
706
|
+
box-shadow: var(--inspecto-shadow-floating);
|
|
707
|
+
backdrop-filter: blur(16px);
|
|
708
|
+
-webkit-backdrop-filter: blur(16px);
|
|
709
|
+
padding: 6px 14px;
|
|
710
|
+
z-index: 100;
|
|
711
|
+
font-size: 11px;
|
|
712
|
+
font-weight: 600;
|
|
713
|
+
color: #5ad496;
|
|
714
|
+
display: flex;
|
|
715
|
+
align-items: center;
|
|
716
|
+
gap: 6px;
|
|
717
|
+
pointer-events: none;
|
|
718
|
+
animation: inspecto-fade-out 0.3s ease 1.7s forwards;
|
|
719
|
+
}
|
|
720
|
+
.inspecto-workflow-toast::before {
|
|
721
|
+
content: '\u2713';
|
|
722
|
+
font-size: 12px;
|
|
723
|
+
}
|
|
656
724
|
`;
|
|
657
725
|
}
|
|
658
726
|
});
|
|
@@ -1733,7 +1801,10 @@ var init_i18n = __esm({
|
|
|
1733
1801
|
"runtime.summary.error.one": "{count} runtime error",
|
|
1734
1802
|
"runtime.summary.error.other": "{count} runtime errors",
|
|
1735
1803
|
"runtime.summary.request.one": "{count} failed request",
|
|
1736
|
-
"runtime.summary.request.other": "{count} failed requests"
|
|
1804
|
+
"runtime.summary.request.other": "{count} failed requests",
|
|
1805
|
+
"workflow.confirm": 'Confirm to execute "{label}"?',
|
|
1806
|
+
"workflow.confirm.ok": "Confirm",
|
|
1807
|
+
"workflow.feedback.executed": "Execution started"
|
|
1737
1808
|
};
|
|
1738
1809
|
ZH_CN_MESSAGES = {
|
|
1739
1810
|
"launcher.panel.title": "\u9009\u62E9\u6A21\u5F0F",
|
|
@@ -1830,7 +1901,10 @@ var init_i18n = __esm({
|
|
|
1830
1901
|
"runtime.summary.error.one": "{count} \u4E2A\u8FD0\u884C\u65F6\u9519\u8BEF",
|
|
1831
1902
|
"runtime.summary.error.other": "{count} \u4E2A\u8FD0\u884C\u65F6\u9519\u8BEF",
|
|
1832
1903
|
"runtime.summary.request.one": "{count} \u4E2A\u5931\u8D25\u8BF7\u6C42",
|
|
1833
|
-
"runtime.summary.request.other": "{count} \u4E2A\u5931\u8D25\u8BF7\u6C42"
|
|
1904
|
+
"runtime.summary.request.other": "{count} \u4E2A\u5931\u8D25\u8BF7\u6C42",
|
|
1905
|
+
"workflow.confirm": "\u786E\u8BA4\u6267\u884C\u300C{label}\u300D\uFF1F",
|
|
1906
|
+
"workflow.confirm.ok": "\u786E\u8BA4\u6267\u884C",
|
|
1907
|
+
"workflow.feedback.executed": "\u6267\u884C\u5DF2\u542F\u52A8"
|
|
1834
1908
|
};
|
|
1835
1909
|
BUILTIN_MESSAGES = {
|
|
1836
1910
|
en: EN_MESSAGES,
|
|
@@ -3140,7 +3214,7 @@ var init_http = __esm({
|
|
|
3140
3214
|
"src/http.ts"() {
|
|
3141
3215
|
"use strict";
|
|
3142
3216
|
import_types = require("@inspecto-dev/types");
|
|
3143
|
-
BASE_URL = globalThis.__AI_INSPECTOR_SERVER_URL__ || "http://
|
|
3217
|
+
BASE_URL = globalThis.__AI_INSPECTOR_SERVER_URL__ || "http://127.0.0.1:5678";
|
|
3144
3218
|
AI_BATCH_DISPATCH_PATH = (_a = import_types.INSPECTO_API_PATHS.AI_BATCH_DISPATCH) != null ? _a : "/inspecto/api/v1/ai/dispatch/annotations";
|
|
3145
3219
|
cachedConfig = null;
|
|
3146
3220
|
}
|
|
@@ -3265,23 +3339,24 @@ function toAnnotationTransportFromRecordUi(_ctx, record) {
|
|
|
3265
3339
|
]
|
|
3266
3340
|
};
|
|
3267
3341
|
}
|
|
3268
|
-
function sendAnnotationBatch(ctx, annotations, scope, instruction, deliveryMode, onSuccess) {
|
|
3342
|
+
function sendAnnotationBatch(ctx, annotations, scope, instruction, deliveryMode, onSuccess, extraPayload) {
|
|
3269
3343
|
return __async(this, null, function* () {
|
|
3270
3344
|
var _a2, _b;
|
|
3271
3345
|
const state = asAnnotateContext(ctx);
|
|
3272
|
-
if (
|
|
3346
|
+
if (state.annotateSendState.isSending) return;
|
|
3347
|
+
if (annotations.length === 0 && (extraPayload == null ? void 0 : extraPayload.source) !== "workflow") return;
|
|
3273
3348
|
state.annotateSendState = { isSending: true, scope };
|
|
3274
3349
|
state.updateAnnotateSidebar();
|
|
3275
3350
|
try {
|
|
3276
3351
|
yield state.configLoadPromise;
|
|
3277
3352
|
const runtimeContext = state.getAnnotateRuntimeContext(annotations);
|
|
3278
3353
|
const cssContextPrompt = state.getAnnotateCssContextPrompt(annotations);
|
|
3279
|
-
const result = yield sendAnnotationsToAi(__spreadProps(__spreadValues(__spreadValues({
|
|
3354
|
+
const result = yield sendAnnotationsToAi(__spreadValues(__spreadProps(__spreadValues(__spreadValues({
|
|
3280
3355
|
instruction,
|
|
3281
3356
|
annotations
|
|
3282
3357
|
}, runtimeContext ? { runtimeContext } : {}), cssContextPrompt ? { cssContextPrompt } : {}), {
|
|
3283
3358
|
deliveryMode
|
|
3284
|
-
}));
|
|
3359
|
+
}), extraPayload || {}));
|
|
3285
3360
|
if (!result.success) {
|
|
3286
3361
|
state.annotateErrorMessage = toAnnotateErrorMessage(state, result.errorCode, result.error);
|
|
3287
3362
|
state.updateAnnotateSidebar();
|
|
@@ -3314,6 +3389,47 @@ function sendAnnotationBatch(ctx, annotations, scope, instruction, deliveryMode,
|
|
|
3314
3389
|
}
|
|
3315
3390
|
});
|
|
3316
3391
|
}
|
|
3392
|
+
function triggerWorkflow(ctx, workflowId) {
|
|
3393
|
+
return __async(this, null, function* () {
|
|
3394
|
+
var _a2;
|
|
3395
|
+
const state = asAnnotateContext(ctx);
|
|
3396
|
+
if (state.annotateSendState.isSending) return;
|
|
3397
|
+
const workflowPrompt = ((_a2 = state.annotateWorkflows.find((w) => w.id === workflowId)) == null ? void 0 : _a2.prompt) || "";
|
|
3398
|
+
if (!workflowPrompt.trim()) return;
|
|
3399
|
+
const scope = state.annotateDeliveryMode === "ide" ? "quick-ask" : "create-task";
|
|
3400
|
+
state.annotateSendState = { isSending: true, scope };
|
|
3401
|
+
state.updateAnnotateSidebar();
|
|
3402
|
+
try {
|
|
3403
|
+
yield state.configLoadPromise;
|
|
3404
|
+
const result = yield sendToAi({
|
|
3405
|
+
prompt: workflowPrompt
|
|
3406
|
+
});
|
|
3407
|
+
if (!result.success) {
|
|
3408
|
+
state.annotateErrorMessage = toAnnotateErrorMessage(state, result.errorCode, result.error);
|
|
3409
|
+
state.updateAnnotateSidebar();
|
|
3410
|
+
return;
|
|
3411
|
+
}
|
|
3412
|
+
state.annotateInstructionDraft = "";
|
|
3413
|
+
state.annotateSession = createEmptySession();
|
|
3414
|
+
state.annotateEditingRecord = null;
|
|
3415
|
+
state.annotateElements.clear();
|
|
3416
|
+
state.annotateErrorMessage = "";
|
|
3417
|
+
state.showAnnotateSuccess(scope);
|
|
3418
|
+
state.renderAnnotateSelectionOverlay();
|
|
3419
|
+
state.updateAnnotateSidebar();
|
|
3420
|
+
} catch (err) {
|
|
3421
|
+
state.annotateErrorMessage = toAnnotateErrorMessage(
|
|
3422
|
+
state,
|
|
3423
|
+
err.errorCode,
|
|
3424
|
+
err.message
|
|
3425
|
+
);
|
|
3426
|
+
state.updateAnnotateSidebar();
|
|
3427
|
+
} finally {
|
|
3428
|
+
state.annotateSendState = { isSending: false, scope: null };
|
|
3429
|
+
state.updateAnnotateSidebar();
|
|
3430
|
+
}
|
|
3431
|
+
});
|
|
3432
|
+
}
|
|
3317
3433
|
function refreshLatestAnnotateSession(ctx) {
|
|
3318
3434
|
return __async(this, null, function* () {
|
|
3319
3435
|
var _a2, _b, _c, _d;
|
|
@@ -3384,7 +3500,7 @@ function getAnnotateSidebarOptions(ctx) {
|
|
|
3384
3500
|
const fullInstruction = composeAnnotateInstruction(state);
|
|
3385
3501
|
const allRuntimeContext = state.getAnnotateRuntimeContext(allAnnotations);
|
|
3386
3502
|
const allCssContextPrompt = state.getAnnotateCssContextPrompt(allAnnotations);
|
|
3387
|
-
const deliveryPreference = (_a2 = state.annotateDeliveryMode) != null ? _a2 : "
|
|
3503
|
+
const deliveryPreference = (_a2 = state.annotateDeliveryMode) != null ? _a2 : "agent";
|
|
3388
3504
|
let preferredAction = "create-task";
|
|
3389
3505
|
if (deliveryPreference === "ide") preferredAction = "quick-ask";
|
|
3390
3506
|
if (deliveryPreference === "agent") preferredAction = "create-task";
|
|
@@ -3410,6 +3526,7 @@ function getAnnotateSidebarOptions(ctx) {
|
|
|
3410
3526
|
successScope: state.annotateSuccessScope,
|
|
3411
3527
|
preferredAction,
|
|
3412
3528
|
annotateDeliveryMode: state.annotateDeliveryMode,
|
|
3529
|
+
workflows: state.annotateWorkflows,
|
|
3413
3530
|
latestSessionSummary: state.annotateLatestSessionSummary,
|
|
3414
3531
|
latestSessionDetail: state.annotateLatestSessionDetail,
|
|
3415
3532
|
latestSessionLoading: state.annotateLatestSessionLoading,
|
|
@@ -3556,6 +3673,9 @@ function getAnnotateSidebarOptions(ctx) {
|
|
|
3556
3673
|
}
|
|
3557
3674
|
);
|
|
3558
3675
|
},
|
|
3676
|
+
onWorkflow: (workflowId) => {
|
|
3677
|
+
void triggerWorkflow(state, workflowId);
|
|
3678
|
+
},
|
|
3559
3679
|
onExit: () => {
|
|
3560
3680
|
state.setMode("inspect");
|
|
3561
3681
|
}
|
|
@@ -4984,13 +5104,13 @@ function showIntentMenu(shadowRoot, location, clickX, clickY, options, onClose,
|
|
|
4984
5104
|
if (!options.askPlaceholder) {
|
|
4985
5105
|
input.placeholder = intents.length > 0 ? t("menu.ask.placeholder.default") : t("menu.ask.placeholder.fallback");
|
|
4986
5106
|
}
|
|
4987
|
-
const aiIntents = intents;
|
|
5107
|
+
const aiIntents = intents.filter(import_types2.isAiIntentConfig);
|
|
4988
5108
|
const hasFixIntent = aiIntents.some(isFixIntent);
|
|
4989
5109
|
const hasNonFixIntent = aiIntents.some((intent) => !isFixIntent(intent));
|
|
4990
5110
|
runtimeContextDefaultMode = hasFixIntent ? hasNonFixIntent ? "mixed" : "all-on" : "off";
|
|
4991
5111
|
renderRuntimeContextUi();
|
|
4992
5112
|
const aiActions = createIntentActionButtons({
|
|
4993
|
-
intents,
|
|
5113
|
+
intents: aiIntents,
|
|
4994
5114
|
location,
|
|
4995
5115
|
includeSnippet,
|
|
4996
5116
|
maxSnippetLines,
|
|
@@ -5041,6 +5161,7 @@ function showIntentMenu(shadowRoot, location, clickX, clickY, options, onClose,
|
|
|
5041
5161
|
});
|
|
5042
5162
|
return cleanup;
|
|
5043
5163
|
}
|
|
5164
|
+
var import_types2;
|
|
5044
5165
|
var init_menu = __esm({
|
|
5045
5166
|
"src/menu.ts"() {
|
|
5046
5167
|
"use strict";
|
|
@@ -5052,6 +5173,7 @@ var init_menu = __esm({
|
|
|
5052
5173
|
init_menu_helpers();
|
|
5053
5174
|
init_i18n();
|
|
5054
5175
|
init_styles();
|
|
5176
|
+
import_types2 = require("@inspecto-dev/types");
|
|
5055
5177
|
}
|
|
5056
5178
|
});
|
|
5057
5179
|
|
|
@@ -5912,9 +6034,29 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
5912
6034
|
const headerStatus = document.createElement("div");
|
|
5913
6035
|
headerStatus.setAttribute("data-inspecto-annotate-header-status", "true");
|
|
5914
6036
|
headerCopy.append(headerTitle, headerStatus);
|
|
5915
|
-
const
|
|
5916
|
-
|
|
5917
|
-
|
|
6037
|
+
const headerActionsLeft = document.createElement("div");
|
|
6038
|
+
headerActionsLeft.className = annotateSidebarActionsClass;
|
|
6039
|
+
headerActionsLeft.setAttribute("data-inspecto-annotate-header-actions-left", "true");
|
|
6040
|
+
const previewButton = createSidebarButton("</>", annotateSidebarButtonClass);
|
|
6041
|
+
previewButton.dataset.role = "raw-preview-toggle";
|
|
6042
|
+
previewButton.setAttribute("aria-label", t("annotate.previewRawPrompt"));
|
|
6043
|
+
previewButton.title = t("annotate.previewRawPrompt");
|
|
6044
|
+
const copyContextButton = createSidebarButton(
|
|
6045
|
+
'<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>',
|
|
6046
|
+
annotateSidebarButtonClass,
|
|
6047
|
+
true
|
|
6048
|
+
);
|
|
6049
|
+
copyContextButton.dataset.role = "raw-preview";
|
|
6050
|
+
copyContextButton.setAttribute("aria-label", t("annotate.copyContext"));
|
|
6051
|
+
copyContextButton.title = t("annotate.copyContext");
|
|
6052
|
+
headerActionsLeft.append(previewButton, copyContextButton);
|
|
6053
|
+
const headerActionsRight = document.createElement("div");
|
|
6054
|
+
headerActionsRight.className = annotateSidebarActionsClass;
|
|
6055
|
+
headerActionsRight.setAttribute("data-inspecto-annotate-header-actions-right", "true");
|
|
6056
|
+
const headerActionsContainer = document.createElement("div");
|
|
6057
|
+
headerActionsContainer.style.display = "flex";
|
|
6058
|
+
headerActionsContainer.style.gap = "8px";
|
|
6059
|
+
headerActionsContainer.style.alignItems = "center";
|
|
5918
6060
|
const quickCaptureButton = createSidebarButton(pureMarkIconSvg, annotateSidebarButtonClass, true);
|
|
5919
6061
|
quickCaptureButton.dataset.role = "quick-capture";
|
|
5920
6062
|
quickCaptureButton.classList.add(runtimeToggleClass);
|
|
@@ -5964,14 +6106,15 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
5964
6106
|
exitButton.style.justifyContent = "center";
|
|
5965
6107
|
exitButton.setAttribute("aria-label", t("annotate.exitMode"));
|
|
5966
6108
|
exitButton.title = t("annotate.exitMode");
|
|
5967
|
-
|
|
6109
|
+
headerActionsRight.append(
|
|
5968
6110
|
quickCaptureButton,
|
|
5969
6111
|
cssContextButton,
|
|
5970
6112
|
runtimeContextButton,
|
|
5971
6113
|
modeButton,
|
|
5972
6114
|
exitButton
|
|
5973
6115
|
);
|
|
5974
|
-
|
|
6116
|
+
headerActionsContainer.append(headerActionsLeft, headerActionsRight);
|
|
6117
|
+
header.append(headerCopy, headerActionsContainer);
|
|
5975
6118
|
const emptyState = document.createElement("section");
|
|
5976
6119
|
emptyState.className = annotateSidebarSectionClass;
|
|
5977
6120
|
emptyState.dataset.variant = "empty-state";
|
|
@@ -6083,7 +6226,12 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
6083
6226
|
latestSessionRefreshButton.style.fontSize = "12px";
|
|
6084
6227
|
latestSessionRefreshButton.title = t("annotate.latestSession.refresh");
|
|
6085
6228
|
latestSessionRefreshButton.style.marginLeft = "auto";
|
|
6086
|
-
latestSessionHeader.append(
|
|
6229
|
+
latestSessionHeader.append(
|
|
6230
|
+
latestSessionTitle,
|
|
6231
|
+
latestSessionStatus,
|
|
6232
|
+
latestSessionMeta,
|
|
6233
|
+
latestSessionRefreshButton
|
|
6234
|
+
);
|
|
6087
6235
|
const latestSessionMessage = document.createElement("div");
|
|
6088
6236
|
latestSessionMessage.className = annotateSidebarTextClass;
|
|
6089
6237
|
latestSessionMessage.style.fontSize = "12px";
|
|
@@ -6149,24 +6297,17 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
6149
6297
|
footerActionRowContainer.style.justifyContent = "space-between";
|
|
6150
6298
|
footerActionRowContainer.style.width = "100%";
|
|
6151
6299
|
footerActionRowContainer.style.gap = "8px";
|
|
6300
|
+
const workflowRow = document.createElement("div");
|
|
6301
|
+
workflowRow.className = annotateSidebarActionsClass;
|
|
6302
|
+
workflowRow.style.display = "none";
|
|
6303
|
+
workflowRow.style.gap = "8px";
|
|
6304
|
+
workflowRow.style.width = "100%";
|
|
6152
6305
|
const footerLeftActions = document.createElement("div");
|
|
6153
6306
|
footerLeftActions.className = annotateSidebarActionsClass;
|
|
6154
6307
|
footerLeftActions.style.flex = "0 0 auto";
|
|
6155
6308
|
footerLeftActions.style.display = "none";
|
|
6156
6309
|
footerLeftActions.style.alignItems = "center";
|
|
6157
6310
|
footerLeftActions.style.gap = "8px";
|
|
6158
|
-
const previewButton = createSidebarButton("</>", annotateSidebarButtonClass);
|
|
6159
|
-
previewButton.dataset.role = "raw-preview-toggle";
|
|
6160
|
-
previewButton.setAttribute("aria-label", t("annotate.previewRawPrompt"));
|
|
6161
|
-
previewButton.title = t("annotate.previewRawPrompt");
|
|
6162
|
-
const copyContextButton = createSidebarButton(
|
|
6163
|
-
'<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>',
|
|
6164
|
-
annotateSidebarButtonClass,
|
|
6165
|
-
true
|
|
6166
|
-
);
|
|
6167
|
-
copyContextButton.dataset.role = "raw-preview";
|
|
6168
|
-
copyContextButton.setAttribute("aria-label", t("annotate.copyContext"));
|
|
6169
|
-
copyContextButton.title = t("annotate.copyContext");
|
|
6170
6311
|
const previewFloat = document.createElement("div");
|
|
6171
6312
|
previewFloat.dataset.inspectoAnnotateRawPreview = "true";
|
|
6172
6313
|
previewFloat.style.display = "none";
|
|
@@ -6193,6 +6334,50 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
6193
6334
|
previewFloatContent.style.lineHeight = "1.4";
|
|
6194
6335
|
previewFloatContent.style.color = "rgba(255, 255, 255, 0.7)";
|
|
6195
6336
|
previewFloat.appendChild(previewFloatContent);
|
|
6337
|
+
const confirmDialog = document.createElement("div");
|
|
6338
|
+
confirmDialog.className = annotateConfirmDialogClass;
|
|
6339
|
+
confirmDialog.style.display = "none";
|
|
6340
|
+
const confirmContent = document.createElement("div");
|
|
6341
|
+
confirmContent.className = "content";
|
|
6342
|
+
const confirmMessage = document.createElement("p");
|
|
6343
|
+
const confirmActions = document.createElement("div");
|
|
6344
|
+
confirmActions.className = "actions";
|
|
6345
|
+
const confirmCancelBtn = createSidebarButton(t("annotate.cancel"), annotateSidebarButtonClass);
|
|
6346
|
+
confirmCancelBtn.dataset.emphasis = "secondary";
|
|
6347
|
+
const confirmOkBtn = createSidebarButton(t("workflow.confirm.ok"), annotateSidebarButtonClass);
|
|
6348
|
+
confirmOkBtn.classList.add("primary");
|
|
6349
|
+
confirmActions.append(confirmCancelBtn, confirmOkBtn);
|
|
6350
|
+
confirmContent.append(confirmMessage, confirmActions);
|
|
6351
|
+
confirmDialog.append(confirmContent);
|
|
6352
|
+
let currentConfirmCallback = null;
|
|
6353
|
+
confirmCancelBtn.addEventListener("click", (event) => {
|
|
6354
|
+
event.preventDefault();
|
|
6355
|
+
event.stopPropagation();
|
|
6356
|
+
confirmDialog.style.display = "none";
|
|
6357
|
+
currentConfirmCallback = null;
|
|
6358
|
+
});
|
|
6359
|
+
confirmOkBtn.addEventListener("click", (event) => {
|
|
6360
|
+
event.preventDefault();
|
|
6361
|
+
event.stopPropagation();
|
|
6362
|
+
confirmDialog.style.display = "none";
|
|
6363
|
+
if (currentConfirmCallback) {
|
|
6364
|
+
currentConfirmCallback();
|
|
6365
|
+
currentConfirmCallback = null;
|
|
6366
|
+
}
|
|
6367
|
+
const toast = document.createElement("div");
|
|
6368
|
+
toast.className = "inspecto-workflow-toast";
|
|
6369
|
+
toast.textContent = t("workflow.feedback.executed");
|
|
6370
|
+
workflowRow.style.position = "relative";
|
|
6371
|
+
workflowRow.appendChild(toast);
|
|
6372
|
+
setTimeout(() => {
|
|
6373
|
+
toast.remove();
|
|
6374
|
+
}, 2e3);
|
|
6375
|
+
});
|
|
6376
|
+
function showConfirmDialog(message, onConfirm) {
|
|
6377
|
+
confirmMessage.textContent = message;
|
|
6378
|
+
currentConfirmCallback = onConfirm;
|
|
6379
|
+
confirmDialog.style.display = "flex";
|
|
6380
|
+
}
|
|
6196
6381
|
function updateRawPromptPreviewPosition() {
|
|
6197
6382
|
const viewportPadding = 12;
|
|
6198
6383
|
const gap = 8;
|
|
@@ -6226,8 +6411,11 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
6226
6411
|
if (!previewFloat.contains(clickTarget) && !previewButton.contains(clickTarget)) {
|
|
6227
6412
|
setRawPromptPreviewVisible(false);
|
|
6228
6413
|
}
|
|
6414
|
+
if (!confirmContent.contains(clickTarget) && !workflowRow.contains(clickTarget)) {
|
|
6415
|
+
confirmDialog.style.display = "none";
|
|
6416
|
+
currentConfirmCallback = null;
|
|
6417
|
+
}
|
|
6229
6418
|
});
|
|
6230
|
-
footerLeftActions.append(previewButton, copyContextButton);
|
|
6231
6419
|
const footerActions = document.createElement("div");
|
|
6232
6420
|
footerActions.className = annotateSidebarActionsClass;
|
|
6233
6421
|
footerActions.style.display = "flex";
|
|
@@ -6246,10 +6434,10 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
6246
6434
|
createTaskButton.style.whiteSpace = "nowrap";
|
|
6247
6435
|
footerActions.append(quickAskButton, createTaskButton);
|
|
6248
6436
|
footerActionRowContainer.append(footerLeftActions, footerActions);
|
|
6249
|
-
footerActionRow.append(footerActionRowContainer);
|
|
6437
|
+
footerActionRow.append(footerActionRowContainer, workflowRow);
|
|
6250
6438
|
footerLayout.append(recommendedActionLabel, footerActionRow);
|
|
6251
6439
|
footer.append(previewFloat, statusMessage, errorMessage, footerLayout);
|
|
6252
|
-
element.append(header, emptyState, draftSection, footer);
|
|
6440
|
+
element.append(header, emptyState, draftSection, footer, confirmDialog);
|
|
6253
6441
|
shadowRoot.appendChild(element);
|
|
6254
6442
|
return {
|
|
6255
6443
|
element,
|
|
@@ -6262,6 +6450,7 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
6262
6450
|
exitButton,
|
|
6263
6451
|
emptyState,
|
|
6264
6452
|
draftSection,
|
|
6453
|
+
workflowRow,
|
|
6265
6454
|
instructionInput,
|
|
6266
6455
|
includedSummary,
|
|
6267
6456
|
recordsList,
|
|
@@ -6286,7 +6475,8 @@ function createAnnotateSidebarDom(shadowRoot) {
|
|
|
6286
6475
|
quickAskButton,
|
|
6287
6476
|
createTaskButton,
|
|
6288
6477
|
updateRawPromptPreviewPosition,
|
|
6289
|
-
setRawPromptPreviewVisible
|
|
6478
|
+
setRawPromptPreviewVisible,
|
|
6479
|
+
showConfirmDialog
|
|
6290
6480
|
};
|
|
6291
6481
|
}
|
|
6292
6482
|
var init_annotate_sidebar_dom = __esm({
|
|
@@ -6604,6 +6794,7 @@ function createAnnotateSidebar(shadowRoot, options) {
|
|
|
6604
6794
|
exitButton,
|
|
6605
6795
|
emptyState,
|
|
6606
6796
|
draftSection,
|
|
6797
|
+
workflowRow,
|
|
6607
6798
|
instructionInput,
|
|
6608
6799
|
includedSummary,
|
|
6609
6800
|
recordsList,
|
|
@@ -6830,7 +7021,7 @@ function createAnnotateSidebar(shadowRoot, options) {
|
|
|
6830
7021
|
const shouldShowBody = hasSavedRecords || hasCurrentDraft || next.isSending || next.successScope === "quick-ask" || Boolean(next.errorMessage);
|
|
6831
7022
|
const canSend = next.isSending ? false : next.includedRecords.length > 0 || hasCurrentDraft;
|
|
6832
7023
|
const preferredAction = (_a2 = next.preferredAction) != null ? _a2 : "create-task";
|
|
6833
|
-
const deliveryPreference = (_b = next.annotateDeliveryMode) != null ? _b : "
|
|
7024
|
+
const deliveryPreference = (_b = next.annotateDeliveryMode) != null ? _b : "agent";
|
|
6834
7025
|
const showDebugHelperActions = deliveryPreference !== "agent";
|
|
6835
7026
|
element.style.display = "";
|
|
6836
7027
|
emptyState.style.display = shouldShowBody ? "none" : "";
|
|
@@ -6878,37 +7069,23 @@ function createAnnotateSidebar(shadowRoot, options) {
|
|
|
6878
7069
|
}
|
|
6879
7070
|
includedSummary.textContent = `Element notes (${next.includedRecords.length})`;
|
|
6880
7071
|
renderers.renderIncludedRecords(next.includedRecords, recordsList);
|
|
6881
|
-
const allowQuickAsk = deliveryPreference === "
|
|
6882
|
-
const allowCreateTask = deliveryPreference === "
|
|
6883
|
-
const onlyOneAction = allowQuickAsk !== allowCreateTask;
|
|
7072
|
+
const allowQuickAsk = deliveryPreference === "ide";
|
|
7073
|
+
const allowCreateTask = deliveryPreference === "agent";
|
|
6884
7074
|
quickAskButton.style.display = allowQuickAsk ? "" : "none";
|
|
6885
7075
|
createTaskButton.style.display = allowCreateTask ? "" : "none";
|
|
6886
7076
|
quickAskButton.disabled = !canSend;
|
|
6887
7077
|
createTaskButton.disabled = !canSend;
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
createTaskButton.dataset.layoutRole = "primary";
|
|
6897
|
-
} else {
|
|
6898
|
-
quickAskButton.classList.toggle("primary", false);
|
|
6899
|
-
createTaskButton.classList.toggle("primary", false);
|
|
6900
|
-
quickAskButton.dataset.emphasis = preferredAction === "quick-ask" ? "primary" : "secondary";
|
|
6901
|
-
createTaskButton.dataset.emphasis = preferredAction === "create-task" ? "primary" : "secondary";
|
|
6902
|
-
quickAskButton.dataset.layoutRole = preferredAction === "quick-ask" ? "primary" : "secondary";
|
|
6903
|
-
createTaskButton.dataset.layoutRole = preferredAction === "create-task" ? "primary" : "secondary";
|
|
6904
|
-
quickAskButton.style.order = "1";
|
|
6905
|
-
createTaskButton.style.order = "2";
|
|
6906
|
-
quickAskButton.style.flex = "1";
|
|
6907
|
-
createTaskButton.style.flex = "1";
|
|
6908
|
-
}
|
|
7078
|
+
quickAskButton.classList.toggle("primary", true);
|
|
7079
|
+
createTaskButton.classList.toggle("primary", true);
|
|
7080
|
+
quickAskButton.dataset.emphasis = "primary";
|
|
7081
|
+
createTaskButton.dataset.emphasis = "primary";
|
|
7082
|
+
quickAskButton.style.flex = "1";
|
|
7083
|
+
createTaskButton.style.flex = "1";
|
|
7084
|
+
quickAskButton.dataset.layoutRole = "primary";
|
|
7085
|
+
createTaskButton.dataset.layoutRole = "primary";
|
|
6909
7086
|
quickAskButton.title = t("annotate.askAiHint");
|
|
6910
7087
|
createTaskButton.title = t("annotate.createTaskHint");
|
|
6911
|
-
recommendedActionLabel.style.display =
|
|
7088
|
+
recommendedActionLabel.style.display = "none";
|
|
6912
7089
|
recommendedActionLabel.textContent = preferredAction === "quick-ask" ? t("annotate.recommendedAction.askHint", {
|
|
6913
7090
|
action: t("annotate.askAi")
|
|
6914
7091
|
}) : t("annotate.recommendedAction.agentHint", {
|
|
@@ -6916,6 +7093,31 @@ function createAnnotateSidebar(shadowRoot, options) {
|
|
|
6916
7093
|
});
|
|
6917
7094
|
quickAskButton.textContent = next.isSending && next.sendingScope === "quick-ask" ? t("menu.sending") : !next.isSending && next.successScope === "quick-ask" ? t("annotate.sent") : t("annotate.askAi");
|
|
6918
7095
|
createTaskButton.textContent = next.isSending && next.sendingScope === "create-task" ? t("menu.sending") : t("annotate.createTask");
|
|
7096
|
+
const workflows = next.workflows || [];
|
|
7097
|
+
workflowRow.style.display = workflows.length > 0 ? "flex" : "none";
|
|
7098
|
+
workflowRow.innerHTML = "";
|
|
7099
|
+
for (const wf of workflows) {
|
|
7100
|
+
const btn = createSidebarButton(wf.label, annotateSidebarButtonClass);
|
|
7101
|
+
btn.dataset.workflowId = wf.id;
|
|
7102
|
+
btn.style.flex = "1";
|
|
7103
|
+
btn.style.justifyContent = "center";
|
|
7104
|
+
btn.style.whiteSpace = "nowrap";
|
|
7105
|
+
const isSendingWorkflow = next.isSending && next.sendingScope === `workflow:${wf.id}`;
|
|
7106
|
+
btn.disabled = next.isSending;
|
|
7107
|
+
btn.textContent = isSendingWorkflow ? t("menu.sending") : wf.label;
|
|
7108
|
+
btn.addEventListener("click", () => {
|
|
7109
|
+
var _a3;
|
|
7110
|
+
if (wf.confirm) {
|
|
7111
|
+
dom.showConfirmDialog(t("workflow.confirm", { label: wf.label }), () => {
|
|
7112
|
+
var _a4;
|
|
7113
|
+
(_a4 = next.onWorkflow) == null ? void 0 : _a4.call(next, wf.id);
|
|
7114
|
+
});
|
|
7115
|
+
return;
|
|
7116
|
+
}
|
|
7117
|
+
(_a3 = next.onWorkflow) == null ? void 0 : _a3.call(next, wf.id);
|
|
7118
|
+
});
|
|
7119
|
+
workflowRow.appendChild(btn);
|
|
7120
|
+
}
|
|
6919
7121
|
const latestSession = next.latestSessionDetail;
|
|
6920
7122
|
const latestSessionSummary = next.latestSessionSummary;
|
|
6921
7123
|
latestSessionSection.style.display = latestSession || latestSessionSummary ? "" : "none";
|
|
@@ -7046,6 +7248,8 @@ var init_annotate_sidebar = __esm({
|
|
|
7046
7248
|
init_annotate_sidebar_helpers();
|
|
7047
7249
|
init_annotate_sidebar_dom();
|
|
7048
7250
|
init_annotate_sidebar_renderers();
|
|
7251
|
+
init_annotate_sidebar_helpers();
|
|
7252
|
+
init_styles();
|
|
7049
7253
|
init_i18n();
|
|
7050
7254
|
init_icons();
|
|
7051
7255
|
}
|
|
@@ -7319,7 +7523,6 @@ function configure(ctx, options) {
|
|
|
7319
7523
|
state.configLoadPromise = fetchIdeInfo(true).then((info) => {
|
|
7320
7524
|
if ((info == null ? void 0 : info.hotKeys) !== void 0) {
|
|
7321
7525
|
state.serverHotKeys = info.hotKeys;
|
|
7322
|
-
state.syncModeUi();
|
|
7323
7526
|
}
|
|
7324
7527
|
if ((info == null ? void 0 : info.theme) !== void 0) {
|
|
7325
7528
|
applyTheme(state, info.theme);
|
|
@@ -7327,6 +7530,9 @@ function configure(ctx, options) {
|
|
|
7327
7530
|
if ((info == null ? void 0 : info.annotateDeliveryMode) !== void 0) {
|
|
7328
7531
|
state.annotateDeliveryMode = info.annotateDeliveryMode;
|
|
7329
7532
|
}
|
|
7533
|
+
if ((info == null ? void 0 : info.workflows) !== void 0) {
|
|
7534
|
+
state.annotateWorkflows = info.workflows;
|
|
7535
|
+
}
|
|
7330
7536
|
if ((info == null ? void 0 : info.includeSnippet) !== void 0) {
|
|
7331
7537
|
state.options.includeSnippet = info.includeSnippet;
|
|
7332
7538
|
}
|
|
@@ -7334,6 +7540,9 @@ function configure(ctx, options) {
|
|
|
7334
7540
|
state.options.runtimeContext = __spreadValues(__spreadValues({}, state.options.runtimeContext), info.runtimeContext);
|
|
7335
7541
|
state.syncRuntimeContextCapture();
|
|
7336
7542
|
}
|
|
7543
|
+
if (state.mode === "annotate" && state.annotateSidebar) {
|
|
7544
|
+
state.updateAnnotateSidebar();
|
|
7545
|
+
}
|
|
7337
7546
|
}).catch(() => {
|
|
7338
7547
|
}).then(() => {
|
|
7339
7548
|
});
|
|
@@ -7547,7 +7756,8 @@ var init_component = __esm({
|
|
|
7547
7756
|
this.annotateErrorMessage = "";
|
|
7548
7757
|
this.annotateRuntimeContextEnabled = false;
|
|
7549
7758
|
this.annotateCssContextEnabled = false;
|
|
7550
|
-
this.annotateDeliveryMode = "
|
|
7759
|
+
this.annotateDeliveryMode = "agent";
|
|
7760
|
+
this.annotateWorkflows = [];
|
|
7551
7761
|
this.annotateSendState = {
|
|
7552
7762
|
isSending: false,
|
|
7553
7763
|
scope: null
|