@alpaca-editor/core 1.0.4173 → 1.0.4174
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/editor/QuickItemSwitcher.d.ts +3 -3
- package/dist/editor/QuickItemSwitcher.js +25 -7
- package/dist/editor/QuickItemSwitcher.js.map +1 -1
- package/dist/editor/ai/AgentCostDisplay.js +7 -11
- package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.js +192 -718
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/Agents.js +61 -38
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/client/EditorShell.js +117 -17
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js +0 -12
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +16 -2
- package/dist/editor/services/agentService.js +22 -8
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +1 -0
- package/dist/editor/services/aiService.js +36 -5
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/styles.css +6 -3
- package/dist/types.d.ts +13 -0
- package/package.json +1 -1
- package/src/editor/QuickItemSwitcher.tsx +60 -33
- package/src/editor/ai/AgentCostDisplay.tsx +59 -60
- package/src/editor/ai/AgentTerminal.tsx +213 -741
- package/src/editor/ai/Agents.tsx +54 -38
- package/src/editor/client/EditorShell.tsx +142 -21
- package/src/editor/client/hooks/useSocketMessageHandler.ts +0 -15
- package/src/editor/services/agentService.ts +39 -10
- package/src/editor/services/aiService.ts +43 -6
- package/src/revision.ts +2 -2
- package/src/types.ts +15 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NavigationHistoryEntry } from "../types";
|
|
2
2
|
export interface QuickItemSwitcherProps {
|
|
3
3
|
visible: boolean;
|
|
4
|
-
|
|
4
|
+
entries: NavigationHistoryEntry[];
|
|
5
5
|
selectedIndex: number;
|
|
6
6
|
onSelect: (index: number) => void;
|
|
7
7
|
onClose: () => void;
|
|
8
8
|
}
|
|
9
|
-
export declare function QuickItemSwitcher({ visible,
|
|
9
|
+
export declare function QuickItemSwitcher({ visible, entries, selectedIndex, onSelect, onClose, }: QuickItemSwitcherProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -6,11 +6,19 @@ import { useEditContext } from "./client/editContext";
|
|
|
6
6
|
import { SingleEditView } from "./views/SingleEditView";
|
|
7
7
|
import { usePageViewContext } from "./page-viewer/pageViewContext";
|
|
8
8
|
import { getAbsoluteIconUrl } from "./utils";
|
|
9
|
-
|
|
9
|
+
// Helper to determine if a view shows EditView as main content
|
|
10
|
+
function viewShowsEditView(viewName) {
|
|
11
|
+
// Views that show EditView: page-editor, content-editor, and default item views
|
|
12
|
+
const editViewNames = ["page-editor", "content-editor"];
|
|
13
|
+
return editViewNames.includes(viewName);
|
|
14
|
+
}
|
|
15
|
+
// Skeleton placeholder for non-EditView previews
|
|
16
|
+
const SkeletonPreview = () => (_jsxs("div", { className: "h-full w-full animate-pulse bg-gray-100 p-4", children: [_jsx("div", { className: "mb-2 h-4 rounded bg-gray-300" }), _jsx("div", { className: "mb-2 h-4 w-3/4 rounded bg-gray-300" }), _jsx("div", { className: "h-4 w-1/2 rounded bg-gray-300" })] }));
|
|
17
|
+
export function QuickItemSwitcher({ visible, entries, selectedIndex, onSelect, onClose, }) {
|
|
10
18
|
const editContext = useEditContext();
|
|
11
19
|
if (!editContext)
|
|
12
20
|
return null;
|
|
13
|
-
// Scroll selected
|
|
21
|
+
// Scroll selected entry into view
|
|
14
22
|
useEffect(() => {
|
|
15
23
|
if (visible && selectedIndex >= 0) {
|
|
16
24
|
const element = document.querySelector(`[data-switcher-index="${selectedIndex}"]`);
|
|
@@ -21,9 +29,9 @@ export function QuickItemSwitcher({ visible, items, selectedIndex, onSelect, onC
|
|
|
21
29
|
});
|
|
22
30
|
}
|
|
23
31
|
}, [selectedIndex, visible]);
|
|
24
|
-
if (!visible ||
|
|
32
|
+
if (!visible || entries.length === 0)
|
|
25
33
|
return null;
|
|
26
|
-
return (_jsx(Dialog, { open: visible, onOpenChange: onClose, children: _jsx(DialogContent, { className: "max-h-[85vh] max-w-[90vw] gap-0 p-0", overlayClassName: "bg-black/60", showCloseButton: false, children: _jsxs("div", { className: "flex flex-col gap-7 p-6", children: [_jsx("div", { className: "text-center text-sm text-gray-600", children: "
|
|
34
|
+
return (_jsx(Dialog, { open: visible, onOpenChange: onClose, children: _jsx(DialogContent, { className: "max-h-[85vh] max-w-[90vw] gap-0 p-0", overlayClassName: "bg-black/60", showCloseButton: false, children: _jsxs("div", { className: "flex flex-col gap-7 p-6", children: [_jsx("div", { className: "text-center text-sm text-gray-600", children: "Navigation History (Live Previews) \u2022 Hold Ctrl+Shift \u2022 Press Shift or Arrow keys to navigate \u2022 Enter or release to select" }), _jsx("div", { className: "grid grid-cols-2 gap-5 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5", children: entries.map((entry, index) => {
|
|
27
35
|
const isSelected = index === selectedIndex;
|
|
28
36
|
return (_jsxs("div", { "data-switcher-index": index, className: cn("flex cursor-pointer flex-col items-center gap-2 rounded-lg border p-3 transition-all", isSelected
|
|
29
37
|
? "scale-105 shadow-2xl"
|
|
@@ -37,16 +45,26 @@ export function QuickItemSwitcher({ visible, items, selectedIndex, onSelect, onC
|
|
|
37
45
|
height: "200px",
|
|
38
46
|
borderColor: "var(--color-theme-secondary-light)",
|
|
39
47
|
}
|
|
40
|
-
: { height: "200px" }, children: _jsx(CardPreview, { index: index,
|
|
48
|
+
: { height: "200px" }, children: _jsx(CardPreview, { index: index, entry: entry, itemsRepository: editContext.itemsRepository, configuration: editContext.configuration }) }), _jsxs("div", { className: "flex w-full flex-col gap-1", children: [_jsxs("div", { className: "flex w-full items-center gap-2", children: [entry.itemIcon && (_jsx("img", { src: getAbsoluteIconUrl(entry.itemIcon), alt: "", className: "flex-shrink-0", style: { height: "16px", width: "16px" } })), _jsx("div", { className: cn("flex-1 truncate text-sm font-medium", "text-gray-900"), title: entry.displayName, children: entry.displayName })] }), entry.itemPath && (_jsx("div", { className: cn("w-full truncate text-xs", "text-gray-600"), title: entry.itemPath, children: entry.itemPath }))] })] }, `${entry.viewName}-${entry.item?.id || "noitem"}-${index}`));
|
|
41
49
|
}) })] }) }) }));
|
|
42
50
|
}
|
|
43
|
-
const CardPreview = React.memo(function CardPreview({ index,
|
|
44
|
-
const descriptor = useMemo(() =>
|
|
51
|
+
const CardPreview = React.memo(function CardPreview({ index, entry, itemsRepository, configuration, }) {
|
|
52
|
+
const descriptor = useMemo(() => entry.item
|
|
53
|
+
? {
|
|
54
|
+
id: entry.item.id,
|
|
55
|
+
language: entry.item.language,
|
|
56
|
+
version: entry.item.version,
|
|
57
|
+
}
|
|
58
|
+
: undefined, [entry.item]);
|
|
45
59
|
const pageView = usePageViewContext({
|
|
46
60
|
pageItemDescriptor: descriptor,
|
|
47
61
|
itemsRepository,
|
|
48
62
|
configuration,
|
|
49
63
|
});
|
|
64
|
+
// Show skeleton if no item or if view doesn't show EditView
|
|
65
|
+
if (!entry.item || !viewShowsEditView(entry.viewName)) {
|
|
66
|
+
return _jsx(SkeletonPreview, {});
|
|
67
|
+
}
|
|
50
68
|
return (_jsx("div", { className: "pointer-events-none absolute top-0 left-0 h-full w-full origin-top-left select-none", style: {
|
|
51
69
|
transform: "scale(0.4)",
|
|
52
70
|
width: "250%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickItemSwitcher.js","sourceRoot":"","sources":["../../src/editor/QuickItemSwitcher.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAU7C,MAAM,UAAU,iBAAiB,CAAC,EAChC,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"QuickItemSwitcher.js","sourceRoot":"","sources":["../../src/editor/QuickItemSwitcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export function AgentCostDisplay({ className = "", response, totalTokens, costLi
|
|
|
8
8
|
const costPopoverRef = useRef(null);
|
|
9
9
|
const editorSettings = useEditorSettings();
|
|
10
10
|
const currency = editorSettings?.currency || "USD";
|
|
11
|
+
const limit = costLimit != null ? Number(costLimit) : null;
|
|
11
12
|
// Handle click outside for cost popover
|
|
12
13
|
useEffect(() => {
|
|
13
14
|
function handleClickOutside(event) {
|
|
@@ -61,13 +62,11 @@ export function AgentCostDisplay({ className = "", response, totalTokens, costLi
|
|
|
61
62
|
(totalTokens.input > 0 || totalTokens.output > 0 || totalTokens.cached > 0);
|
|
62
63
|
const hasCostData = (response && response.totalCost && response.totalCost > 0) ||
|
|
63
64
|
(totalTokens && totalTokens.totalCost && totalTokens.totalCost > 0);
|
|
64
|
-
if (!hasTokenData && !hasTotalData && !hasCostData) {
|
|
65
|
+
if (!hasTokenData && !hasTotalData && !hasCostData && !(limit && limit > 0)) {
|
|
65
66
|
return null;
|
|
66
67
|
}
|
|
67
68
|
// Calculate percentage of limit used
|
|
68
|
-
const percentUsed =
|
|
69
|
-
? Math.min((displayTotalCost / costLimit) * 100, 100)
|
|
70
|
-
: null;
|
|
69
|
+
const percentUsed = limit && limit > 0 ? Math.min((displayTotalCost / limit) * 100, 100) : null;
|
|
71
70
|
// Determine color based on usage
|
|
72
71
|
const getColorClass = () => {
|
|
73
72
|
if (!percentUsed)
|
|
@@ -80,18 +79,15 @@ export function AgentCostDisplay({ className = "", response, totalTokens, costLi
|
|
|
80
79
|
return "text-yellow-600";
|
|
81
80
|
return "text-gray-400";
|
|
82
81
|
};
|
|
83
|
-
return (_jsx("div", { className: `relative ${className}`, ref: costPopoverRef, "data-testid": "agent-cost-display", children: _jsxs(Popover, { open: showCostPopover, onOpenChange: setShowCostPopover, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("div", { className: `cursor-pointer text-right hover:text-gray-600 ${getColorClass()}`, style: { fontSize: "10px" }, onClick: () => setShowCostPopover(!showCostPopover), "data-testid": "agent-cost-display-trigger", children: ["Total Cost: ", displayTotalCost.toFixed(2), " ", currency,
|
|
84
|
-
costLimit > 0 &&
|
|
85
|
-
` / ${costLimit.toFixed(2)} ${currency}`] }) }), _jsx(PopoverContent, { className: "w-80 p-4", align: "end", side: "bottom", "data-testid": "agent-cost-display-popover", children: _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "border-b pb-2", children: _jsxs("h4", { className: "flex items-center justify-between text-sm font-semibold", children: [_jsx("div", { children: "Cost Breakdown" }), _jsxs("span", { className: "text-sm font-semibold", children: [displayTotalCost.toFixed(2), " ", currency, costLimit && costLimit > 0 && (_jsxs("span", { className: "ml-1 text-xs text-gray-500", children: ["/ ", costLimit.toFixed(2), " ", currency] }))] })] }) }), costLimit && costLimit > 0 && (_jsxs("div", { className: "rounded-md bg-gray-50 p-3", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between text-xs", children: [_jsx("span", { className: "font-medium text-gray-700", children: "Cost Limit Usage" }), _jsxs("span", { className: `font-semibold ${getColorClass()}`, children: [percentUsed?.toFixed(1), "%"] })] }), _jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-gray-200", children: _jsx("div", { className: `h-full transition-all ${percentUsed && percentUsed >= 100
|
|
82
|
+
return (_jsx("div", { className: `relative ${className}`, ref: costPopoverRef, "data-testid": "agent-cost-display", children: _jsxs(Popover, { open: showCostPopover, onOpenChange: setShowCostPopover, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("div", { className: `cursor-pointer text-right hover:text-gray-600 ${getColorClass()}`, style: { fontSize: "10px" }, onClick: () => setShowCostPopover(!showCostPopover), "data-testid": "agent-cost-display-trigger", children: ["Total Cost: ", displayTotalCost.toFixed(2), " ", currency, limit && limit > 0 && ` / ${limit.toFixed(2)} ${currency}`] }) }), _jsx(PopoverContent, { className: "w-80 p-4", align: "end", side: "bottom", "data-testid": "agent-cost-display-popover", children: _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "border-b pb-2", children: _jsxs("h4", { className: "flex items-center justify-between text-sm font-semibold", children: [_jsx("div", { children: "Cost Breakdown" }), _jsxs("span", { className: "text-sm font-semibold", children: [displayTotalCost.toFixed(2), " ", currency, limit && limit > 0 && (_jsxs("span", { className: "ml-1 text-xs text-gray-500", children: ["/ ", limit.toFixed(2), " ", currency] }))] })] }) }), limit && limit > 0 && (_jsxs("div", { className: "rounded-md bg-gray-50 p-3", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between text-xs", children: [_jsx("span", { className: "font-medium text-gray-700", children: "Cost Limit Usage" }), _jsxs("span", { className: `font-semibold ${getColorClass()}`, children: [percentUsed?.toFixed(1), "%"] })] }), _jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-gray-200", children: _jsx("div", { className: `h-full transition-all ${percentUsed && percentUsed >= 100
|
|
86
83
|
? "bg-red-500"
|
|
87
84
|
: percentUsed && percentUsed >= 80
|
|
88
85
|
? "bg-orange-500"
|
|
89
86
|
: percentUsed && percentUsed >= 60
|
|
90
87
|
? "bg-yellow-500"
|
|
91
|
-
: "bg-blue-500"}`, style: { width: `${Math.min(percentUsed || 0, 100)}%` } }) }), percentUsed && percentUsed >= 90 && (_jsx("p", { className: "mt-2 text-xs text-gray-600", children: percentUsed >= 100
|
|
88
|
+
: "bg-blue-500"}`, style: { width: `${Math.min(percentUsed || 0, 100)}%` } }) }), percentUsed != null && percentUsed >= 90 && (_jsx("p", { className: "mt-2 text-xs text-gray-600", children: percentUsed >= 100
|
|
92
89
|
? "Cost limit reached. Execution will stop on next API call."
|
|
93
|
-
: "Approaching cost limit. Consider extending if needed." }))] })), _jsx("div", { className: "space-y-3", children: (hasTotalData || hasTokenData) && (_jsx(_Fragment, { children: _jsx("div", { className: "space-y-2", children: hasTotalData ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Input tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.input.toLocaleString(), " (", totalTokens.inputCost.toFixed(2), " ", currency, ")"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Output tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.output.toLocaleString(), " (", totalTokens.outputCost.toFixed(2), " ", currency, ")"] })] }), totalTokens.cached > 0 && (_jsxs("div", { className: "flex items-center justify-between", "data-testid": "cached-tokens-row", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cached tokens:" }), _jsxs("span", { className: "text-xs", "data-testid": "cached-tokens-value", children: [totalTokens.cached.toLocaleString(), " (", totalTokens.cachedCost.toFixed(2), " ", currency, ")"] })] })), totalTokens.cacheWrite > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cache write tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.cacheWrite.toLocaleString(), " (", (totalTokens.cacheWriteCost ?? 0).toFixed(2), " ", currency, ")"] })] }))] })) : (response &&
|
|
94
|
-
|
|
95
|
-
response.numCacheWriteTokens > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cache write tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numCacheWriteTokens.toLocaleString(), "(", currentCost.cacheWriteCost.toFixed(2), " ", currency, ")"] })] })), _jsx("div", { className: "mt-2 text-xs text-gray-400", children: "* Estimated costs based on typical Claude 3.5 pricing" })] }))) }) })) })] }) })] }) }));
|
|
90
|
+
: "Approaching cost limit. Consider extending if needed." }))] })), _jsx("div", { className: "space-y-3", children: (hasTotalData || hasTokenData) && (_jsx(_Fragment, { children: _jsx("div", { className: "space-y-2", children: hasTotalData ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Input tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.input.toLocaleString(), " (", totalTokens.inputCost.toFixed(2), " ", currency, ")"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Output tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.output.toLocaleString(), " (", totalTokens.outputCost.toFixed(2), " ", currency, ")"] })] }), totalTokens.cached > 0 && (_jsxs("div", { className: "flex items-center justify-between", "data-testid": "cached-tokens-row", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cached tokens:" }), _jsxs("span", { className: "text-xs", "data-testid": "cached-tokens-value", children: [totalTokens.cached.toLocaleString(), " (", totalTokens.cachedCost.toFixed(2), " ", currency, ")"] })] })), totalTokens.cacheWrite > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cache write tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.cacheWrite.toLocaleString(), " (", (totalTokens.cacheWriteCost ?? 0).toFixed(2), " ", currency, ")"] })] }))] })) : (_jsx(_Fragment, { children: response && currentCost && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Input tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numInputTokens.toLocaleString(), "(", currentCost.inputCost.toFixed(2), " ", currency, ")"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Output tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numOutputTokens.toLocaleString(), "(", currentCost.outputCost.toFixed(2), " ", currency, ")"] })] }), response.numCachedTokens > 0 && (_jsxs("div", { className: "flex items-center justify-between", "data-testid": "cached-tokens-row", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cached tokens:" }), _jsxs("span", { className: "text-xs", "data-testid": "cached-tokens-value", children: [response.numCachedTokens.toLocaleString(), "(", currentCost.cachedCost.toFixed(2), " ", currency, ")"] })] })), response.numCacheWriteTokens &&
|
|
91
|
+
response.numCacheWriteTokens > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cache write tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numCacheWriteTokens.toLocaleString(), "(", currentCost.cacheWriteCost.toFixed(2), " ", currency, ")"] })] })), _jsx("div", { className: "mt-2 text-xs text-gray-400", children: "* Estimated costs based on typical Claude 3.5 pricing" })] })) })) }) })) })] }) })] }) }));
|
|
96
92
|
}
|
|
97
93
|
//# sourceMappingURL=AgentCostDisplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentCostDisplay.js","sourceRoot":"","sources":["../../../src/editor/ai/AgentCostDisplay.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAe,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAmC/D,MAAM,UAAU,gBAAgB,CAAC,EAC/B,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,WAAW,EACX,SAAS,GACa;IACtB,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,cAAc,EAAE,QAAQ,IAAI,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentCostDisplay.js","sourceRoot":"","sources":["../../../src/editor/ai/AgentCostDisplay.tsx"],"names":[],"mappings":"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"}
|