@agi-cli/web-sdk 0.1.78 → 0.1.80
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/components/chat/UnifiedAgentSelector.d.ts.map +1 -1
- package/dist/components/chat/UnifiedAgentSelector.js +63 -11
- package/dist/components/chat/UnifiedAgentSelector.js.map +1 -1
- package/dist/components/chat/UnifiedModelSelector.d.ts.map +1 -1
- package/dist/components/chat/UnifiedModelSelector.js +140 -27
- package/dist/components/chat/UnifiedModelSelector.js.map +1 -1
- package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -1
- package/dist/components/messages/AssistantMessageGroup.js +3 -1
- package/dist/components/messages/AssistantMessageGroup.js.map +1 -1
- package/dist/components/messages/renderers/ApplyPatchRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ApplyPatchRenderer.js +2 -2
- package/dist/components/messages/renderers/ApplyPatchRenderer.js.map +1 -1
- package/dist/components/messages/renderers/EditRenderer.d.ts +1 -1
- package/dist/components/messages/renderers/EditRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/EditRenderer.js +19 -9
- package/dist/components/messages/renderers/EditRenderer.js.map +1 -1
- package/dist/components/messages/renderers/ReadRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/ReadRenderer.js +17 -6
- package/dist/components/messages/renderers/ReadRenderer.js.map +1 -1
- package/dist/components/messages/renderers/WriteRenderer.d.ts.map +1 -1
- package/dist/components/messages/renderers/WriteRenderer.js +17 -7
- package/dist/components/messages/renderers/WriteRenderer.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnifiedAgentSelector.d.ts","sourceRoot":"","sources":["../../../src/components/chat/UnifiedAgentSelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UnifiedAgentSelector.d.ts","sourceRoot":"","sources":["../../../src/components/chat/UnifiedAgentSelector.tsx"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EACpC,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAgB,GAChB,EAAE,yBAAyB,2CAwK3B"}
|
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect, useRef } from 'react';
|
|
3
|
-
import { ChevronDown } from 'lucide-react';
|
|
2
|
+
import { useState, useEffect, useRef, useMemo } from 'react';
|
|
3
|
+
import { ChevronDown, Search } from 'lucide-react';
|
|
4
|
+
import Fuse from 'fuse.js';
|
|
4
5
|
export function UnifiedAgentSelector({ agent, agents, onChange, disabled = false, }) {
|
|
5
6
|
const [isOpen, setIsOpen] = useState(false);
|
|
7
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
8
|
+
const [highlightedIndex, setHighlightedIndex] = useState(0);
|
|
6
9
|
const dropdownRef = useRef(null);
|
|
10
|
+
const searchInputRef = useRef(null);
|
|
11
|
+
const itemRefs = useRef([]);
|
|
12
|
+
const fuse = useMemo(() => {
|
|
13
|
+
return new Fuse(agents, {
|
|
14
|
+
threshold: 0.4,
|
|
15
|
+
ignoreLocation: true,
|
|
16
|
+
});
|
|
17
|
+
}, [agents]);
|
|
18
|
+
const filteredAgents = useMemo(() => {
|
|
19
|
+
if (!searchQuery.trim())
|
|
20
|
+
return agents;
|
|
21
|
+
const results = fuse.search(searchQuery);
|
|
22
|
+
return results.map((result) => result.item);
|
|
23
|
+
}, [agents, searchQuery, fuse]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (isOpen) {
|
|
26
|
+
setHighlightedIndex(0);
|
|
27
|
+
}
|
|
28
|
+
}, [searchQuery, isOpen]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (isOpen &&
|
|
31
|
+
highlightedIndex >= 0 &&
|
|
32
|
+
highlightedIndex < itemRefs.current.length) {
|
|
33
|
+
itemRefs.current[highlightedIndex]?.scrollIntoView({
|
|
34
|
+
block: 'nearest',
|
|
35
|
+
behavior: 'smooth',
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}, [highlightedIndex, isOpen]);
|
|
7
39
|
useEffect(() => {
|
|
8
40
|
const handleClickOutside = (event) => {
|
|
9
41
|
if (dropdownRef.current &&
|
|
@@ -19,6 +51,7 @@ export function UnifiedAgentSelector({ agent, agents, onChange, disabled = false
|
|
|
19
51
|
if (isOpen) {
|
|
20
52
|
document.addEventListener('mousedown', handleClickOutside);
|
|
21
53
|
document.addEventListener('keydown', handleEscape);
|
|
54
|
+
setTimeout(() => searchInputRef.current?.focus(), 0);
|
|
22
55
|
}
|
|
23
56
|
return () => {
|
|
24
57
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
@@ -28,18 +61,37 @@ export function UnifiedAgentSelector({ agent, agents, onChange, disabled = false
|
|
|
28
61
|
const handleSelect = (selectedAgent) => {
|
|
29
62
|
onChange(selectedAgent);
|
|
30
63
|
setIsOpen(false);
|
|
64
|
+
setSearchQuery('');
|
|
31
65
|
};
|
|
32
|
-
const
|
|
33
|
-
if (
|
|
66
|
+
const handleSearchKeyDown = (event) => {
|
|
67
|
+
if (filteredAgents.length === 0)
|
|
68
|
+
return;
|
|
69
|
+
if (event.key === 'ArrowDown') {
|
|
34
70
|
event.preventDefault();
|
|
35
|
-
|
|
71
|
+
setHighlightedIndex((prev) => prev < filteredAgents.length - 1 ? prev + 1 : 0);
|
|
72
|
+
}
|
|
73
|
+
else if (event.key === 'ArrowUp') {
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
setHighlightedIndex((prev) => prev > 0 ? prev - 1 : filteredAgents.length - 1);
|
|
76
|
+
}
|
|
77
|
+
else if (event.key === 'Enter') {
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
const highlighted = filteredAgents[highlightedIndex];
|
|
80
|
+
if (highlighted) {
|
|
81
|
+
handleSelect(highlighted);
|
|
82
|
+
}
|
|
36
83
|
}
|
|
37
84
|
};
|
|
38
|
-
return (_jsxs("div", { ref: dropdownRef, className: "relative w-full", children: [_jsxs("button", { type: "button", onClick: () => !disabled && setIsOpen(!isOpen), disabled: disabled, className: "w-full flex items-center justify-between px-3 py-2 bg-[hsl(var(--secondary))] border border-[hsl(var(--border))] rounded-md hover:bg-[hsl(var(--accent))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))] disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: [_jsx("span", { className: "text-sm text-[hsl(var(--foreground))] truncate", children: agent }), _jsx(ChevronDown, { className: `w-4 h-4 text-[hsl(var(--muted-foreground))] transition-transform ${isOpen ? 'rotate-180' : ''}` })] }), isOpen && (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
85
|
+
return (_jsxs("div", { ref: dropdownRef, className: "relative w-full", children: [_jsxs("button", { type: "button", onClick: () => !disabled && setIsOpen(!isOpen), disabled: disabled, className: "w-full flex items-center justify-between px-3 py-2 bg-[hsl(var(--secondary))] border border-[hsl(var(--border))] rounded-md hover:bg-[hsl(var(--accent))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))] disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: [_jsx("span", { className: "text-sm text-[hsl(var(--foreground))] truncate", children: agent }), _jsx(ChevronDown, { className: `w-4 h-4 text-[hsl(var(--muted-foreground))] transition-transform ${isOpen ? 'rotate-180' : ''}` })] }), isOpen && (_jsxs("div", { className: "absolute z-50 mt-1 w-full bg-[hsl(var(--popover))] border border-[hsl(var(--border))] rounded-md shadow-lg max-h-80 overflow-hidden flex flex-col", children: [_jsx("div", { className: "p-2 border-b border-[hsl(var(--border))]", children: _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[hsl(var(--muted-foreground))]" }), _jsx("input", { ref: searchInputRef, type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: handleSearchKeyDown, placeholder: "Search agents...", className: "w-full pl-9 pr-3 py-2 bg-[hsl(var(--secondary))] border border-[hsl(var(--border))] rounded text-sm text-[hsl(var(--foreground))] placeholder-[hsl(var(--muted-foreground))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))]" })] }) }), _jsx("div", { className: "overflow-y-auto", children: filteredAgents.length === 0 ? (_jsx("div", { className: "p-4 text-center text-[hsl(var(--muted-foreground))] text-sm", children: "No agents found" })) : (filteredAgents.map((agentItem, index) => {
|
|
86
|
+
const isSelected = agentItem === agent;
|
|
87
|
+
const isHighlighted = index === highlightedIndex;
|
|
88
|
+
return (_jsx("button", { ref: (el) => {
|
|
89
|
+
itemRefs.current[index] = el;
|
|
90
|
+
}, type: "button", onClick: () => handleSelect(agentItem), onMouseEnter: () => setHighlightedIndex(index), className: `w-full text-left px-4 py-2 text-sm transition-colors ${isHighlighted
|
|
91
|
+
? 'bg-[hsl(var(--accent))]'
|
|
92
|
+
: 'hover:bg-[hsl(var(--accent))]'} ${isSelected
|
|
93
|
+
? 'text-[hsl(var(--accent-foreground))] font-medium'
|
|
94
|
+
: 'text-[hsl(var(--foreground))]'}`, children: _jsx("span", { className: "truncate", children: agentItem }) }, agentItem));
|
|
95
|
+
})) })] }))] }));
|
|
44
96
|
}
|
|
45
97
|
//# sourceMappingURL=UnifiedAgentSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnifiedAgentSelector.js","sourceRoot":"","sources":["../../../src/components/chat/UnifiedAgentSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UnifiedAgentSelector.js","sourceRoot":"","sources":["../../../src/components/chat/UnifiedAgentSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnifiedModelSelector.d.ts","sourceRoot":"","sources":["../../../src/components/chat/UnifiedModelSelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UnifiedModelSelector.d.ts","sourceRoot":"","sources":["../../../src/components/chat/UnifiedModelSelector.tsx"],"names":[],"mappings":"AAKA,UAAU,yBAAyB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAWD,wBAAgB,oBAAoB,CAAC,EACpC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,QAAgB,GAChB,EAAE,yBAAyB,2CAiT3B"}
|
|
@@ -1,13 +1,125 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect, useRef, useMemo } from 'react';
|
|
3
3
|
import { ChevronDown, Search } from 'lucide-react';
|
|
4
|
+
import Fuse from 'fuse.js';
|
|
4
5
|
import { useAllModels } from '../../hooks/useConfig';
|
|
5
6
|
export function UnifiedModelSelector({ provider, model, onChange, disabled = false, }) {
|
|
6
7
|
const { data: allModels, isLoading } = useAllModels();
|
|
7
8
|
const [isOpen, setIsOpen] = useState(false);
|
|
8
9
|
const [searchQuery, setSearchQuery] = useState('');
|
|
10
|
+
const [highlightedIndex, setHighlightedIndex] = useState(0);
|
|
9
11
|
const dropdownRef = useRef(null);
|
|
10
12
|
const searchInputRef = useRef(null);
|
|
13
|
+
const itemRefs = useRef([]);
|
|
14
|
+
const flattenedModels = useMemo(() => {
|
|
15
|
+
if (!allModels)
|
|
16
|
+
return [];
|
|
17
|
+
const flattened = [];
|
|
18
|
+
for (const [providerKey, providerData] of Object.entries(allModels)) {
|
|
19
|
+
for (const modelItem of providerData.models) {
|
|
20
|
+
flattened.push({
|
|
21
|
+
providerKey,
|
|
22
|
+
providerLabel: providerData.label,
|
|
23
|
+
modelId: modelItem.id,
|
|
24
|
+
modelLabel: modelItem.label,
|
|
25
|
+
toolCall: modelItem.toolCall,
|
|
26
|
+
reasoning: modelItem.reasoning,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return flattened;
|
|
31
|
+
}, [allModels]);
|
|
32
|
+
const fuse = useMemo(() => {
|
|
33
|
+
return new Fuse(flattenedModels, {
|
|
34
|
+
keys: [
|
|
35
|
+
{ name: 'modelLabel', weight: 1 },
|
|
36
|
+
{ name: 'modelId', weight: 0.5 },
|
|
37
|
+
{ name: 'providerLabel', weight: 0.3 },
|
|
38
|
+
],
|
|
39
|
+
threshold: 0.5,
|
|
40
|
+
ignoreLocation: true,
|
|
41
|
+
includeScore: true,
|
|
42
|
+
distance: 100,
|
|
43
|
+
minMatchCharLength: 1,
|
|
44
|
+
findAllMatches: true,
|
|
45
|
+
});
|
|
46
|
+
}, [flattenedModels]);
|
|
47
|
+
const filteredModels = useMemo(() => {
|
|
48
|
+
if (!allModels)
|
|
49
|
+
return {};
|
|
50
|
+
if (!searchQuery.trim())
|
|
51
|
+
return allModels;
|
|
52
|
+
const results = fuse.search(searchQuery);
|
|
53
|
+
const sortedResults = results.sort((a, b) => {
|
|
54
|
+
const scoreA = a.score ?? 1;
|
|
55
|
+
const scoreB = b.score ?? 1;
|
|
56
|
+
if (Math.abs(scoreA - scoreB) < 0.001) {
|
|
57
|
+
const labelA = a.item.modelLabel.toLowerCase();
|
|
58
|
+
const labelB = b.item.modelLabel.toLowerCase();
|
|
59
|
+
const query = searchQuery.toLowerCase();
|
|
60
|
+
const indexA = labelA.indexOf(query);
|
|
61
|
+
const indexB = labelB.indexOf(query);
|
|
62
|
+
if (indexA >= 0 && indexB < 0)
|
|
63
|
+
return -1;
|
|
64
|
+
if (indexB >= 0 && indexA < 0)
|
|
65
|
+
return 1;
|
|
66
|
+
if (indexA >= 0 && indexB >= 0)
|
|
67
|
+
return indexA - indexB;
|
|
68
|
+
}
|
|
69
|
+
return scoreA - scoreB;
|
|
70
|
+
});
|
|
71
|
+
const filtered = {};
|
|
72
|
+
for (const result of sortedResults) {
|
|
73
|
+
const item = result.item;
|
|
74
|
+
if (!filtered[item.providerKey]) {
|
|
75
|
+
filtered[item.providerKey] = {
|
|
76
|
+
label: item.providerLabel,
|
|
77
|
+
models: [],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const existingModel = filtered[item.providerKey].models.find((m) => m.id === item.modelId);
|
|
81
|
+
if (!existingModel) {
|
|
82
|
+
filtered[item.providerKey].models.push({
|
|
83
|
+
id: item.modelId,
|
|
84
|
+
label: item.modelLabel,
|
|
85
|
+
toolCall: item.toolCall,
|
|
86
|
+
reasoning: item.reasoning,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return filtered;
|
|
91
|
+
}, [allModels, searchQuery, fuse]);
|
|
92
|
+
const filteredFlatList = useMemo(() => {
|
|
93
|
+
const list = [];
|
|
94
|
+
for (const [providerKey, providerData] of Object.entries(filteredModels)) {
|
|
95
|
+
for (const modelItem of providerData.models) {
|
|
96
|
+
list.push({
|
|
97
|
+
providerKey,
|
|
98
|
+
providerLabel: providerData.label,
|
|
99
|
+
modelId: modelItem.id,
|
|
100
|
+
modelLabel: modelItem.label,
|
|
101
|
+
toolCall: modelItem.toolCall,
|
|
102
|
+
reasoning: modelItem.reasoning,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return list;
|
|
107
|
+
}, [filteredModels]);
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
if (isOpen) {
|
|
110
|
+
setHighlightedIndex(0);
|
|
111
|
+
}
|
|
112
|
+
}, [searchQuery, isOpen]);
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
if (isOpen &&
|
|
115
|
+
highlightedIndex >= 0 &&
|
|
116
|
+
highlightedIndex < itemRefs.current.length) {
|
|
117
|
+
itemRefs.current[highlightedIndex]?.scrollIntoView({
|
|
118
|
+
block: 'nearest',
|
|
119
|
+
behavior: 'smooth',
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}, [highlightedIndex, isOpen]);
|
|
11
123
|
useEffect(() => {
|
|
12
124
|
const handleClickOutside = (event) => {
|
|
13
125
|
if (dropdownRef.current &&
|
|
@@ -30,44 +142,45 @@ export function UnifiedModelSelector({ provider, model, onChange, disabled = fal
|
|
|
30
142
|
document.removeEventListener('keydown', handleEscape);
|
|
31
143
|
};
|
|
32
144
|
}, [isOpen]);
|
|
33
|
-
const filteredModels = useMemo(() => {
|
|
34
|
-
if (!allModels)
|
|
35
|
-
return {};
|
|
36
|
-
if (!searchQuery.trim())
|
|
37
|
-
return allModels;
|
|
38
|
-
const query = searchQuery.toLowerCase();
|
|
39
|
-
const filtered = {};
|
|
40
|
-
for (const [providerKey, providerData] of Object.entries(allModels)) {
|
|
41
|
-
const providerMatches = providerData.label.toLowerCase().includes(query);
|
|
42
|
-
const matchingModels = providerData.models.filter((m) => providerMatches ||
|
|
43
|
-
m.label.toLowerCase().includes(query) ||
|
|
44
|
-
m.id.toLowerCase().includes(query));
|
|
45
|
-
if (matchingModels.length > 0) {
|
|
46
|
-
filtered[providerKey] = {
|
|
47
|
-
label: providerData.label,
|
|
48
|
-
models: matchingModels,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return filtered;
|
|
53
|
-
}, [allModels, searchQuery]);
|
|
54
145
|
const handleSelect = (selectedProvider, selectedModel) => {
|
|
55
146
|
onChange(selectedProvider, selectedModel);
|
|
56
147
|
setIsOpen(false);
|
|
57
148
|
setSearchQuery('');
|
|
58
149
|
};
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
150
|
+
const handleSearchKeyDown = (event) => {
|
|
151
|
+
if (filteredFlatList.length === 0)
|
|
152
|
+
return;
|
|
153
|
+
if (event.key === 'ArrowDown') {
|
|
61
154
|
event.preventDefault();
|
|
62
|
-
|
|
155
|
+
setHighlightedIndex((prev) => prev < filteredFlatList.length - 1 ? prev + 1 : 0);
|
|
156
|
+
}
|
|
157
|
+
else if (event.key === 'ArrowUp') {
|
|
158
|
+
event.preventDefault();
|
|
159
|
+
setHighlightedIndex((prev) => prev > 0 ? prev - 1 : filteredFlatList.length - 1);
|
|
160
|
+
}
|
|
161
|
+
else if (event.key === 'Enter') {
|
|
162
|
+
event.preventDefault();
|
|
163
|
+
const highlighted = filteredFlatList[highlightedIndex];
|
|
164
|
+
if (highlighted) {
|
|
165
|
+
handleSelect(highlighted.providerKey, highlighted.modelId);
|
|
166
|
+
}
|
|
63
167
|
}
|
|
64
168
|
};
|
|
65
169
|
const currentProviderLabel = allModels?.[provider]?.label || provider;
|
|
66
170
|
const currentModelLabel = allModels?.[provider]?.models.find((m) => m.id === model)?.label || model;
|
|
67
|
-
return (_jsxs("div", { ref: dropdownRef, className: "relative w-full", children: [_jsxs("button", { type: "button", onClick: () => !disabled && setIsOpen(!isOpen), disabled: disabled || isLoading, className: "w-full flex items-center justify-between px-3 py-2 bg-[hsl(var(--secondary))] border border-[hsl(var(--border))] rounded-md hover:bg-[hsl(var(--accent))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))] disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: [_jsxs("span", { className: "flex items-center gap-2 text-sm truncate", children: [_jsx("span", { className: "text-[hsl(var(--muted-foreground))]", children: currentProviderLabel }), _jsx("span", { className: "text-[hsl(var(--muted-foreground))]/50", children: "/" }), _jsx("span", { className: "text-[hsl(var(--foreground))]", children: currentModelLabel })] }), _jsx(ChevronDown, { className: `w-4 h-4 text-[hsl(var(--muted-foreground))] transition-transform ${isOpen ? 'rotate-180' : ''}` })] }), isOpen && !isLoading && allModels && (_jsxs("div", { className: "absolute z-50 mt-1 w-full bg-[hsl(var(--popover))] border border-[hsl(var(--border))] rounded-md shadow-lg max-h-80 overflow-hidden flex flex-col", children: [_jsx("div", { className: "p-2 border-b border-[hsl(var(--border))]", children: _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[hsl(var(--muted-foreground))]" }), _jsx("input", { ref: searchInputRef, type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: "Search providers and models...", className: "w-full pl-9 pr-3 py-2 bg-[hsl(var(--secondary))] border border-[hsl(var(--border))] rounded text-sm text-[hsl(var(--foreground))] placeholder-[hsl(var(--muted-foreground))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))]" })] }) }), _jsx("div", { className: "overflow-y-auto", children: Object.keys(filteredModels).length === 0 ? (_jsx("div", { className: "p-4 text-center text-[hsl(var(--muted-foreground))] text-sm", children: "No models found" })) : (Object.entries(filteredModels).map(([providerKey, providerData]) => (_jsxs("div", { className: "border-b border-[hsl(var(--border))] last:border-0", children: [_jsx("div", { className: "px-3 py-2 text-xs font-semibold text-[hsl(var(--muted-foreground))] uppercase tracking-wider bg-[hsl(var(--muted))]", children: providerData.label }), _jsx("div", { children: providerData.models.map((modelItem) => {
|
|
171
|
+
return (_jsxs("div", { ref: dropdownRef, className: "relative w-full", children: [_jsxs("button", { type: "button", onClick: () => !disabled && setIsOpen(!isOpen), disabled: disabled || isLoading, className: "w-full flex items-center justify-between px-3 py-2 bg-[hsl(var(--secondary))] border border-[hsl(var(--border))] rounded-md hover:bg-[hsl(var(--accent))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))] disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: [_jsxs("span", { className: "flex items-center gap-2 text-sm truncate", children: [_jsx("span", { className: "text-[hsl(var(--muted-foreground))]", children: currentProviderLabel }), _jsx("span", { className: "text-[hsl(var(--muted-foreground))]/50", children: "/" }), _jsx("span", { className: "text-[hsl(var(--foreground))]", children: currentModelLabel })] }), _jsx(ChevronDown, { className: `w-4 h-4 text-[hsl(var(--muted-foreground))] transition-transform ${isOpen ? 'rotate-180' : ''}` })] }), isOpen && !isLoading && allModels && (_jsxs("div", { className: "absolute z-50 mt-1 w-full bg-[hsl(var(--popover))] border border-[hsl(var(--border))] rounded-md shadow-lg max-h-80 overflow-hidden flex flex-col", children: [_jsx("div", { className: "p-2 border-b border-[hsl(var(--border))]", children: _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[hsl(var(--muted-foreground))]" }), _jsx("input", { ref: searchInputRef, type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: handleSearchKeyDown, placeholder: "Search providers and models...", className: "w-full pl-9 pr-3 py-2 bg-[hsl(var(--secondary))] border border-[hsl(var(--border))] rounded text-sm text-[hsl(var(--foreground))] placeholder-[hsl(var(--muted-foreground))] focus:outline-none focus:ring-2 focus:ring-[hsl(var(--ring))]" })] }) }), _jsx("div", { className: "overflow-y-auto", children: Object.keys(filteredModels).length === 0 ? (_jsx("div", { className: "p-4 text-center text-[hsl(var(--muted-foreground))] text-sm", children: "No models found" })) : (Object.entries(filteredModels).map(([providerKey, providerData]) => (_jsxs("div", { className: "border-b border-[hsl(var(--border))] last:border-0", children: [_jsx("div", { className: "px-3 py-2 text-xs font-semibold text-[hsl(var(--muted-foreground))] uppercase tracking-wider bg-[hsl(var(--muted))]", children: providerData.label }), _jsx("div", { children: providerData.models.map((modelItem) => {
|
|
68
172
|
const isSelected = providerKey === provider && modelItem.id === model;
|
|
69
|
-
|
|
70
|
-
|
|
173
|
+
const flatIndex = filteredFlatList.findIndex((item) => item.providerKey === providerKey &&
|
|
174
|
+
item.modelId === modelItem.id);
|
|
175
|
+
const isHighlighted = flatIndex === highlightedIndex;
|
|
176
|
+
return (_jsxs("button", { ref: (el) => {
|
|
177
|
+
if (flatIndex >= 0) {
|
|
178
|
+
itemRefs.current[flatIndex] = el;
|
|
179
|
+
}
|
|
180
|
+
}, type: "button", onClick: () => handleSelect(providerKey, modelItem.id), onMouseEnter: () => setHighlightedIndex(flatIndex), className: `w-full text-left px-4 py-2 text-sm flex items-center justify-between transition-colors ${isHighlighted
|
|
181
|
+
? 'bg-[hsl(var(--accent))]'
|
|
182
|
+
: 'hover:bg-[hsl(var(--accent))]'} ${isSelected
|
|
183
|
+
? 'text-[hsl(var(--accent-foreground))] font-medium'
|
|
71
184
|
: 'text-[hsl(var(--foreground))]'}`, children: [_jsx("span", { className: "truncate", children: modelItem.label }), (modelItem.toolCall || modelItem.reasoning) && (_jsxs("div", { className: "flex gap-1 ml-2 flex-shrink-0", children: [modelItem.toolCall && (_jsx("span", { className: "text-[10px] px-1.5 py-0.5 bg-green-600/20 text-green-400 rounded", children: "Tools" })), modelItem.reasoning && (_jsx("span", { className: "text-[10px] px-1.5 py-0.5 bg-purple-600/20 text-purple-400 rounded", children: "Reasoning" }))] }))] }, modelItem.id));
|
|
72
185
|
}) })] }, providerKey)))) })] }))] }));
|
|
73
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnifiedModelSelector.js","sourceRoot":"","sources":["../../../src/components/chat/UnifiedModelSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"UnifiedModelSelector.js","sourceRoot":"","sources":["../../../src/components/chat/UnifiedModelSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessageGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,UAAU,0BAA0B;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;CACvB;AAsBD,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"AssistantMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessageGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,UAAU,0BAA0B;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;CACvB;AAsBD,eAAO,MAAM,qBAAqB,kEAgLjC,CAAC"}
|
|
@@ -44,7 +44,9 @@ export const AssistantMessageGroup = memo(function AssistantMessageGroup({ messa
|
|
|
44
44
|
};
|
|
45
45
|
return (_jsxs("div", { className: "relative", children: [showHeader && (_jsx("div", { className: "pb-2", children: _jsxs("div", { className: "inline-flex items-center bg-violet-500/10 border border-violet-500/30 dark:bg-violet-500/5 dark:border-violet-500/20 rounded-full pr-3 md:pr-4", children: [_jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-violet-500/50 bg-violet-500/20 dark:bg-violet-500/10", children: _jsx(Sparkles, { className: "h-3.5 w-3.5 text-violet-700 dark:text-violet-300" }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1 text-xs md:text-sm text-muted-foreground pl-3", children: [message.agent && (_jsx("span", { className: "font-medium text-violet-700 dark:text-violet-300 whitespace-nowrap", children: message.agent })), message.agent && message.provider && (_jsx("span", { className: "hidden md:inline", children: "\u00B7" })), message.provider && (_jsx("span", { className: "text-muted-foreground whitespace-nowrap", children: message.provider })), message.model && _jsx("span", { className: "hidden md:inline", children: "\u00B7" }), message.model && (_jsx("span", { className: "text-muted-foreground break-all md:break-normal", children: message.model })), message.createdAt && (_jsx("span", { className: "hidden md:inline", children: "\u00B7" })), message.createdAt && (_jsx("span", { className: "text-muted-foreground whitespace-nowrap", children: formatTime(message.createdAt) }))] })] }) })), _jsxs("div", { className: "relative ml-1", children: [parts.map((part, index) => {
|
|
46
46
|
const isLastPart = index === parts.length - 1;
|
|
47
|
-
|
|
47
|
+
// Don't show line after finish tool
|
|
48
|
+
const isFinishTool = part.type === 'tool_result' && part.toolName === 'finish';
|
|
49
|
+
const showLine = (!isLastPart || hasNextAssistantMessage) && !isFinishTool;
|
|
48
50
|
const isLastToolCall = part.type === 'tool_call' && isLastPart;
|
|
49
51
|
const isProgressUpdate = part.type === 'tool_result' &&
|
|
50
52
|
part.toolName === 'progress_update';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessageGroup.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AssistantMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessageGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplyPatchRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ApplyPatchRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAqB7C,wBAAgB,kBAAkB,CAAC,EAClC,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"ApplyPatchRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ApplyPatchRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAqB7C,wBAAgB,kBAAkB,CAAC,EAClC,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA8If"}
|
|
@@ -30,7 +30,7 @@ export function ApplyPatchRenderer({ contentJson, toolDurationMs, isExpanded, on
|
|
|
30
30
|
const changes = Array.isArray(contentJson.result?.changes)
|
|
31
31
|
? contentJson.result?.changes
|
|
32
32
|
: [];
|
|
33
|
-
|
|
33
|
+
const singleFilePath = files === 1 && changes.length > 0 ? changes[0].filePath : null;
|
|
34
34
|
const hasError = contentJson.error ||
|
|
35
35
|
(contentJson.result &&
|
|
36
36
|
'ok' in contentJson.result &&
|
|
@@ -50,6 +50,6 @@ export function ApplyPatchRenderer({ contentJson, toolDurationMs, isExpanded, on
|
|
|
50
50
|
: undefined;
|
|
51
51
|
return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: `flex items-center gap-2 transition-colors w-full ${hasError
|
|
52
52
|
? 'text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200'
|
|
53
|
-
: 'text-purple-700 dark:text-purple-300 hover:text-purple-600 dark:hover:text-purple-200'}`, children: [_jsx(ChevronRight, { className: `h-3 w-3 flex-shrink-0 transition-transform ${isExpanded ? 'rotate-90' : ''}` }), _jsxs("span", { className: "font-medium flex-shrink-0", children: ["apply patch", hasError ? ' error' : ''] }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), _jsxs("span", { className: "text-foreground/70 flex-shrink-0", children: [files, " ", files === 1 ? 'file' : 'files'] }), _jsxs("span", { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0", children: ["+", additions] }), _jsxs("span", { className: "text-red-600 dark:text-red-400 flex-shrink-0", children: ["-", deletions] }), _jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] })] }), isExpanded && hasError && errorMessage && (_jsxs("div", { children: [_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true }), patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsxs("details", { children: [_jsx("summary", { className: "cursor-pointer text-xs text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200", children: "Show patch that failed" }), _jsx("div", { className: "mt-2", children: _jsx(DiffView, { patch: patch }) })] }) }))] })), isExpanded && !hasError && changes.length > 0 && (_jsx("div", { className: "mt-2 ml-5 space-y-2", children: changes.map((change) => (_jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "font-mono text-foreground/80", children: change.filePath }), _jsx("div", { className: "flex flex-wrap gap-2", children: change.hunks.map((hunk, index) => (_jsx("span", { className: "rounded bg-muted px-2 py-0.5 text-[0.65rem] font-mono text-muted-foreground", children: formatHunkLabel(hunk) }, `apply-patch-${change.filePath}-hunk-${index}`))) })] }, `apply-patch-${change.filePath}-${change.kind}`))) })), isExpanded && !hasError && patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsx(DiffView, { patch: patch }) }))] }));
|
|
53
|
+
: 'text-purple-700 dark:text-purple-300 hover:text-purple-600 dark:hover:text-purple-200'}`, children: [_jsx(ChevronRight, { className: `h-3 w-3 flex-shrink-0 transition-transform ${isExpanded ? 'rotate-90' : ''}` }), _jsxs("span", { className: "font-medium flex-shrink-0", children: ["apply patch", hasError ? ' error' : ''] }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), singleFilePath ? (_jsx("span", { className: "text-foreground/70 min-w-0 flex-shrink overflow-hidden text-ellipsis whitespace-nowrap", dir: "rtl", title: singleFilePath, children: singleFilePath })) : (_jsxs("span", { className: "text-foreground/70 flex-shrink-0", children: [files, " ", files === 1 ? 'file' : 'files'] })), _jsxs("span", { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0", children: ["+", additions] }), _jsxs("span", { className: "text-red-600 dark:text-red-400 flex-shrink-0", children: ["-", deletions] }), _jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] })] }), isExpanded && hasError && errorMessage && (_jsxs("div", { children: [_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true }), patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsxs("details", { children: [_jsx("summary", { className: "cursor-pointer text-xs text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200", children: "Show patch that failed" }), _jsx("div", { className: "mt-2", children: _jsx(DiffView, { patch: patch }) })] }) }))] })), isExpanded && !hasError && changes.length > 0 && (_jsx("div", { className: "mt-2 ml-5 space-y-2", children: changes.map((change) => (_jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "font-mono text-foreground/80", children: change.filePath }), _jsx("div", { className: "flex flex-wrap gap-2", children: change.hunks.map((hunk, index) => (_jsx("span", { className: "rounded bg-muted px-2 py-0.5 text-[0.65rem] font-mono text-muted-foreground", children: formatHunkLabel(hunk) }, `apply-patch-${change.filePath}-hunk-${index}`))) })] }, `apply-patch-${change.filePath}-${change.kind}`))) })), isExpanded && !hasError && patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsx(DiffView, { patch: patch }) }))] }));
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=ApplyPatchRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplyPatchRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ApplyPatchRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAkBtD,MAAM,UAAU,kBAAkB,CAAC,EAClC,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACO;IACf,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QACnD,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,GAAG,KAAK,EAAE,CAAC;QAClC,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,IAA0B,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;QACzD,CAAC,CAAE,WAAW,CAAC,MAAM,EAAE,OAA8B;QACrD,CAAC,CAAC,EAAE,CAAC;IAEN,
|
|
1
|
+
{"version":3,"file":"ApplyPatchRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ApplyPatchRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { RendererProps } from './types';
|
|
2
|
-
export declare function EditRenderer({
|
|
2
|
+
export declare function EditRenderer({ args, result, artifact, toolDurationMs, isExpanded, onToggle, }: RendererProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=EditRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/EditRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"EditRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/EditRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7C,wBAAgB,YAAY,CAAC,EAC5B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA4Ef"}
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronRight } from 'lucide-react';
|
|
2
|
+
import { ChevronRight, AlertCircle } from 'lucide-react';
|
|
3
3
|
import { DiffView } from './DiffView';
|
|
4
4
|
import { formatDuration } from './utils';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
5
|
+
import { ToolErrorDisplay } from './ToolErrorDisplay';
|
|
6
|
+
export function EditRenderer({ args, result, artifact, toolDurationMs, isExpanded, onToggle, }) {
|
|
7
|
+
const hasToolError = typeof result === 'object' && 'ok' in result && result.ok === false;
|
|
8
|
+
const errorMessage = hasToolError && 'error' in result && typeof result.error === 'string'
|
|
9
|
+
? result.error
|
|
10
|
+
: null;
|
|
11
|
+
const errorStack = hasToolError && 'stack' in result && typeof result.stack === 'string'
|
|
12
|
+
? result.stack
|
|
13
|
+
: undefined;
|
|
14
|
+
const path = String(result.path || args.path || '');
|
|
15
|
+
const opsApplied = Number(result.opsApplied || 0);
|
|
12
16
|
const patch = artifact?.patch ? String(artifact.patch) : '';
|
|
13
|
-
|
|
17
|
+
const timeStr = formatDuration(toolDurationMs);
|
|
18
|
+
const canExpand = patch.length > 0 || hasToolError;
|
|
19
|
+
return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: () => canExpand && onToggle(), className: `flex items-center gap-2 transition-colors min-w-0 w-full ${hasToolError
|
|
20
|
+
? 'text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200'
|
|
21
|
+
: canExpand
|
|
22
|
+
? 'text-purple-700 dark:text-purple-300 hover:text-purple-600 dark:hover:text-purple-200'
|
|
23
|
+
: 'text-purple-700 dark:text-purple-300'}`, children: [canExpand ? (isExpanded ? (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0 rotate-90 transition-transform" })) : (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0 transition-transform" }))) : (_jsx("div", { className: "w-3 flex-shrink-0" })), hasToolError && (_jsx(AlertCircle, { className: "h-3 w-3 flex-shrink-0 text-red-600 dark:text-red-400" })), _jsxs("span", { className: "font-medium flex-shrink-0", children: ["edit", hasToolError ? ' error' : ''] }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), _jsx("span", { className: "text-foreground/70 min-w-0 flex-shrink overflow-hidden text-ellipsis whitespace-nowrap", dir: "rtl", title: path, children: path }), !hasToolError && opsApplied > 0 && (_jsxs("span", { className: "text-muted-foreground/80 whitespace-nowrap flex-shrink-0", children: ["\u00B7 ", opsApplied, " ops \u00B7 ", timeStr] })), hasToolError && (_jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] }))] }), isExpanded && hasToolError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasToolError && patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsx(DiffView, { patch: patch }) }))] }));
|
|
14
24
|
}
|
|
15
25
|
//# sourceMappingURL=EditRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/EditRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"EditRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/EditRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReadRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ReadRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReadRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgD7C,wBAAgB,YAAY,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CA6Gf"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronRight } from 'lucide-react';
|
|
2
|
+
import { ChevronRight, AlertCircle } from 'lucide-react';
|
|
3
3
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
4
4
|
import { prism, vscDarkPlus, } from 'react-syntax-highlighter/dist/esm/styles/prism';
|
|
5
5
|
import { formatDuration } from './utils';
|
|
6
|
+
import { ToolErrorDisplay } from './ToolErrorDisplay';
|
|
6
7
|
function getLanguageFromPath(path) {
|
|
7
8
|
const ext = path.split('.').pop()?.toLowerCase();
|
|
8
9
|
const langMap = {
|
|
@@ -48,7 +49,15 @@ function parseLineRange(lineRange) {
|
|
|
48
49
|
}
|
|
49
50
|
export function ReadRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
|
|
50
51
|
const result = contentJson.result || {};
|
|
51
|
-
const
|
|
52
|
+
const args = contentJson.args || {};
|
|
53
|
+
const hasToolError = typeof result === 'object' && 'ok' in result && result.ok === false;
|
|
54
|
+
const errorMessage = hasToolError && 'error' in result && typeof result.error === 'string'
|
|
55
|
+
? result.error
|
|
56
|
+
: null;
|
|
57
|
+
const errorStack = hasToolError && 'stack' in result && typeof result.stack === 'string'
|
|
58
|
+
? result.stack
|
|
59
|
+
: undefined;
|
|
60
|
+
const path = String(result.path || args.path || '');
|
|
52
61
|
const content = String(result.content || '');
|
|
53
62
|
const lineRange = result.lineRange;
|
|
54
63
|
const lines = content.split('\n');
|
|
@@ -61,10 +70,12 @@ export function ReadRenderer({ contentJson, toolDurationMs, isExpanded, onToggle
|
|
|
61
70
|
const displayText = lineRange
|
|
62
71
|
? `${path}:${lineRange.replace('@', '')}`
|
|
63
72
|
: path;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
const canExpand = content.length > 0 || hasToolError;
|
|
74
|
+
return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: () => canExpand && onToggle(), className: `flex items-center gap-2 transition-colors w-full min-w-0 ${hasToolError
|
|
75
|
+
? 'text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200'
|
|
76
|
+
: canExpand
|
|
77
|
+
? 'text-blue-700 dark:text-blue-300 hover:text-blue-600 dark:hover:text-blue-200'
|
|
78
|
+
: 'text-blue-700 dark:text-blue-300'}`, children: [canExpand ? (isExpanded ? (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0 rotate-90 transition-transform" })) : (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0 transition-transform" }))) : (_jsx("div", { className: "w-3 flex-shrink-0" })), hasToolError && (_jsx(AlertCircle, { className: "h-3 w-3 flex-shrink-0 text-red-600 dark:text-red-400" })), _jsxs("span", { className: "font-medium flex-shrink-0", children: ["read", hasToolError ? ' error' : ''] }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), _jsx("span", { className: "text-foreground/70 min-w-0 flex-shrink overflow-hidden text-ellipsis whitespace-nowrap", dir: "rtl", title: displayText, children: displayText }), !hasToolError && lines.length > 0 && (_jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0 whitespace-nowrap", children: ["\u00B7 ", lines.length, " lines \u00B7 ", timeStr] })), hasToolError && (_jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] }))] }), isExpanded && hasToolError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasToolError && content && (_jsx("div", { className: "mt-2 ml-5 bg-card/60 border border-border rounded-lg overflow-hidden max-h-96 overflow-y-auto max-w-full", children: _jsx("div", { className: "overflow-x-auto max-w-full", children: _jsx(SyntaxHighlighter, { language: language, style: syntaxTheme, customStyle: {
|
|
68
79
|
margin: 0,
|
|
69
80
|
padding: '0.75rem',
|
|
70
81
|
fontSize: '0.75rem',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReadRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ReadRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ReadRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WriteRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/WriteRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"WriteRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/WriteRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7C,wBAAgB,aAAa,CAAC,EAC7B,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,GACR,EAAE,aAAa,2CAgFf"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronRight } from 'lucide-react';
|
|
2
|
+
import { ChevronRight, AlertCircle } from 'lucide-react';
|
|
3
3
|
import { DiffView } from './DiffView';
|
|
4
4
|
import { formatDuration } from './utils';
|
|
5
|
+
import { ToolErrorDisplay } from './ToolErrorDisplay';
|
|
5
6
|
export function WriteRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
|
|
6
7
|
const result = contentJson.result || {};
|
|
8
|
+
const args = contentJson.args || {};
|
|
7
9
|
const artifact = contentJson.artifact;
|
|
8
|
-
const
|
|
10
|
+
const hasToolError = typeof result === 'object' && 'ok' in result && result.ok === false;
|
|
11
|
+
const errorMessage = hasToolError && 'error' in result && typeof result.error === 'string'
|
|
12
|
+
? result.error
|
|
13
|
+
: null;
|
|
14
|
+
const errorStack = hasToolError && 'stack' in result && typeof result.stack === 'string'
|
|
15
|
+
? result.stack
|
|
16
|
+
: undefined;
|
|
17
|
+
const path = String(result.path || args.path || '');
|
|
9
18
|
const bytes = Number(result.bytes || 0);
|
|
10
19
|
const patch = artifact?.patch ? String(artifact.patch) : '';
|
|
11
20
|
const timeStr = formatDuration(toolDurationMs);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
const canExpand = patch.length > 0 || hasToolError;
|
|
22
|
+
return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: () => canExpand && onToggle(), className: `flex items-center gap-2 transition-colors min-w-0 w-full ${hasToolError
|
|
23
|
+
? 'text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200'
|
|
24
|
+
: canExpand
|
|
25
|
+
? 'text-emerald-700 dark:text-emerald-300 hover:text-emerald-600 dark:hover:text-emerald-200'
|
|
26
|
+
: 'text-emerald-700 dark:text-emerald-300'}`, children: [canExpand ? (isExpanded ? (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0 rotate-90 transition-transform" })) : (_jsx(ChevronRight, { className: "h-3 w-3 flex-shrink-0 transition-transform" }))) : (_jsx("div", { className: "w-3 flex-shrink-0" })), hasToolError && (_jsx(AlertCircle, { className: "h-3 w-3 flex-shrink-0 text-red-600 dark:text-red-400" })), _jsxs("span", { className: "font-medium flex-shrink-0", children: ["write", hasToolError ? ' error' : ''] }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), _jsx("span", { className: "text-foreground/70 min-w-0 flex-shrink overflow-hidden text-ellipsis whitespace-nowrap", dir: "rtl", title: path, children: path }), !hasToolError && bytes > 0 && (_jsxs("span", { className: "text-muted-foreground/80 whitespace-nowrap flex-shrink-0", children: ["\u00B7 ", bytes, " bytes \u00B7 ", timeStr] })), hasToolError && (_jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] }))] }), isExpanded && hasToolError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasToolError && patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsx(DiffView, { patch: patch }) }))] }));
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=WriteRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WriteRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/WriteRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"WriteRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/WriteRenderer.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agi-cli/web-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.80",
|
|
4
4
|
"description": "Reusable React components, hooks, and utilities for building AGI CLI web interfaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -58,8 +58,9 @@
|
|
|
58
58
|
"directory": "packages/web-sdk"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@agi-cli/api": "0.1.
|
|
62
|
-
"axios": "^1.7.9"
|
|
61
|
+
"@agi-cli/api": "0.1.80",
|
|
62
|
+
"axios": "^1.7.9",
|
|
63
|
+
"fuse.js": "^7.1.0"
|
|
63
64
|
},
|
|
64
65
|
"peerDependencies": {
|
|
65
66
|
"react": "^18.0.0 || ^19.0.0",
|