@alpaca-editor/core 1.0.4134 → 1.0.4140
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/config/config.js +7 -0
- package/dist/config/config.js.map +1 -1
- package/dist/editor/FieldListField.js +3 -4
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/Terminal.js +1 -1
- package/dist/editor/Terminal.js.map +1 -1
- package/dist/editor/Titlebar.js +0 -1
- package/dist/editor/Titlebar.js.map +1 -1
- package/dist/editor/ai/AgentCostDisplay.d.ts +3 -1
- package/dist/editor/ai/AgentCostDisplay.js +26 -2
- package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/AgentStatusBadge.d.ts +26 -0
- package/dist/editor/ai/AgentStatusBadge.js +110 -0
- package/dist/editor/ai/AgentStatusBadge.js.map +1 -0
- package/dist/editor/ai/AgentTerminal.js +289 -198
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/Agents.d.ts +2 -2
- package/dist/editor/ai/Agents.js +115 -19
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/AiResponseMessage.js +259 -45
- package/dist/editor/ai/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/ContextInfoBar.js +124 -113
- package/dist/editor/ai/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/ToolCallDisplay.d.ts +1 -0
- package/dist/editor/ai/ToolCallDisplay.js +70 -58
- package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/useAgentStatus.d.ts +13 -0
- package/dist/editor/ai/useAgentStatus.js +101 -0
- package/dist/editor/ai/useAgentStatus.js.map +1 -0
- package/dist/editor/client/EditorShell.js +23 -8
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/commands/localizeItem/LocalizeItemDialog.js +5 -5
- package/dist/editor/commands/localizeItem/LocalizeItemDialog.js.map +1 -1
- package/dist/editor/control-center/About.js +1 -1
- package/dist/editor/control-center/About.js.map +1 -1
- package/dist/editor/control-center/AllAgentsPanel.d.ts +5 -0
- package/dist/editor/control-center/AllAgentsPanel.js +126 -0
- package/dist/editor/control-center/AllAgentsPanel.js.map +1 -0
- package/dist/editor/control-center/WebSocketMessages.js +1 -0
- package/dist/editor/control-center/WebSocketMessages.js.map +1 -1
- package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js +42 -7
- package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js.map +1 -1
- package/dist/editor/media-selector/AiImageSearch.d.ts +1 -1
- package/dist/editor/media-selector/AiImageSearch.js +162 -103
- package/dist/editor/media-selector/AiImageSearch.js.map +1 -1
- package/dist/editor/media-selector/TreeSelector.js +20 -4
- package/dist/editor/media-selector/TreeSelector.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js +5 -2
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.d.ts +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +7 -5
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-viewer/DeviceToolbar.js +2 -2
- package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +18 -11
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +53 -48
- package/dist/editor/services/agentService.js +137 -79
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +1 -1
- package/dist/editor/services/editService.js +1 -0
- package/dist/editor/services/editService.js.map +1 -1
- package/dist/editor/sidebar/GraphQL.js +20 -7
- package/dist/editor/sidebar/GraphQL.js.map +1 -1
- package/dist/editor/sidebar/SEOInfo.js +1 -2
- package/dist/editor/sidebar/SEOInfo.js.map +1 -1
- package/dist/editor/sidebar/Translations.js +10 -7
- package/dist/editor/sidebar/Translations.js.map +1 -1
- package/dist/editor/ui/ItemNameDialogNew.js +1 -1
- package/dist/editor/ui/ItemSearch.js +10 -4
- package/dist/editor/ui/ItemSearch.js.map +1 -1
- package/dist/page-wizard/steps/CollectStep.js +2 -2
- package/dist/page-wizard/steps/CollectStep.js.map +1 -1
- package/dist/page-wizard/steps/FieldEditor.js +2 -2
- package/dist/page-wizard/steps/FieldEditor.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/splash-screen/NewPage.js +2 -2
- package/dist/splash-screen/NewPage.js.map +1 -1
- package/dist/splash-screen/RecentPages.js +1 -1
- package/dist/splash-screen/RecentPages.js.map +1 -1
- package/dist/styles.css +167 -22
- package/dist/tour/Tour.js +15 -11
- package/dist/tour/Tour.js.map +1 -1
- package/package.json +1 -1
- package/src/config/config.tsx +7 -0
- package/src/editor/FieldListField.tsx +13 -13
- package/src/editor/Terminal.tsx +1 -1
- package/src/editor/Titlebar.tsx +0 -1
- package/src/editor/ai/AgentCostDisplay.tsx +57 -1
- package/src/editor/ai/AgentStatusBadge.tsx +144 -0
- package/src/editor/ai/AgentTerminal.tsx +345 -219
- package/src/editor/ai/Agents.tsx +179 -30
- package/src/editor/ai/AiResponseMessage.tsx +411 -114
- package/src/editor/ai/ContextInfoBar.tsx +134 -131
- package/src/editor/ai/ToolCallDisplay.tsx +217 -176
- package/src/editor/ai/useAgentStatus.ts +123 -0
- package/src/editor/client/EditorShell.tsx +34 -8
- package/src/editor/client/itemsRepository.ts +1 -2
- package/src/editor/commands/localizeItem/LocalizeItemDialog.tsx +5 -5
- package/src/editor/control-center/About.tsx +0 -14
- package/src/editor/control-center/AllAgentsPanel.tsx +300 -0
- package/src/editor/control-center/WebSocketMessages.tsx +1 -0
- package/src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx +49 -8
- package/src/editor/media-selector/AiImageSearch.tsx +162 -172
- package/src/editor/media-selector/TreeSelector.tsx +137 -116
- package/src/editor/menubar/toolbar-sections/UtilityControls.tsx +9 -1
- package/src/editor/page-editor-chrome/PlaceholderDropZone.tsx +7 -4
- package/src/editor/page-viewer/DeviceToolbar.tsx +15 -11
- package/src/editor/page-viewer/PageViewerFrame.tsx +20 -14
- package/src/editor/services/agentService.ts +217 -129
- package/src/editor/services/aiService.ts +2 -2
- package/src/editor/services/editService.ts +1 -0
- package/src/editor/sidebar/GraphQL.tsx +143 -117
- package/src/editor/sidebar/SEOInfo.tsx +1 -2
- package/src/editor/sidebar/Translations.tsx +14 -12
- package/src/editor/ui/ItemNameDialogNew.tsx +1 -1
- package/src/editor/ui/ItemSearch.tsx +11 -4
- package/src/editor/ui/SimpleTabs.tsx +1 -1
- package/src/page-wizard/steps/CollectStep.tsx +2 -2
- package/src/page-wizard/steps/FieldEditor.tsx +13 -15
- package/src/revision.ts +2 -2
- package/src/splash-screen/NewPage.tsx +2 -2
- package/src/splash-screen/RecentPages.tsx +1 -1
- package/src/tour/Tour.tsx +61 -48
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import { getAllAgents, closeAgent, deleteAgent, } from "../services/agentService";
|
|
4
|
+
import { getAgentStatusConfig } from "../ai/AgentStatusBadge";
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
|
+
import { Trash, X, RefreshCw } from "lucide-react";
|
|
7
|
+
import { SimpleIconButton } from "../ui/SimpleIconButton";
|
|
8
|
+
/**
|
|
9
|
+
* Control Center panel that displays all non-closed agents across all users
|
|
10
|
+
* Admin-only feature for monitoring and managing agents
|
|
11
|
+
*/
|
|
12
|
+
export function AllAgentsPanel() {
|
|
13
|
+
const [agents, setAgents] = useState([]);
|
|
14
|
+
const [loading, setLoading] = useState(true);
|
|
15
|
+
const [error, setError] = useState(null);
|
|
16
|
+
const [refreshing, setRefreshing] = useState(false);
|
|
17
|
+
const [searchTerm, setSearchTerm] = useState("");
|
|
18
|
+
const loadAgents = async () => {
|
|
19
|
+
try {
|
|
20
|
+
setError(null);
|
|
21
|
+
const result = await getAllAgents(1000);
|
|
22
|
+
setAgents(result);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error("Failed to load agents:", err);
|
|
26
|
+
setError(err?.message ||
|
|
27
|
+
"Failed to load agents. Check if you have admin permissions.");
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
setLoading(false);
|
|
31
|
+
setRefreshing(false);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
loadAgents();
|
|
36
|
+
}, []);
|
|
37
|
+
const handleRefresh = async () => {
|
|
38
|
+
setRefreshing(true);
|
|
39
|
+
await loadAgents();
|
|
40
|
+
};
|
|
41
|
+
const handleCloseAgent = async (agentId, agentName) => {
|
|
42
|
+
if (!confirm(`Are you sure you want to close agent "${agentName}"? This will stop its execution if running.`)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
await closeAgent(agentId);
|
|
47
|
+
// Remove from list or reload
|
|
48
|
+
setAgents((prev) => prev.filter((a) => a.id !== agentId));
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
console.error("Failed to close agent:", err);
|
|
52
|
+
alert(`Failed to close agent: ${err?.message || "Unknown error"}`);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const handleDeleteAgent = async (agentId, agentName, event) => {
|
|
56
|
+
event.stopPropagation();
|
|
57
|
+
if (!confirm(`Are you sure you want to permanently delete agent "${agentName}"? This action cannot be undone.`)) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
await deleteAgent(agentId);
|
|
62
|
+
setAgents((prev) => prev.filter((a) => a.id !== agentId));
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
console.error("Failed to delete agent:", err);
|
|
66
|
+
alert(`Failed to delete agent: ${err?.message || "Unknown error"}`);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const formatDateTime = (dateString) => {
|
|
70
|
+
try {
|
|
71
|
+
const date = new Date(dateString);
|
|
72
|
+
return date.toLocaleString();
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return dateString;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const filteredAgents = agents.filter((agent) => {
|
|
79
|
+
if (!searchTerm.trim())
|
|
80
|
+
return true;
|
|
81
|
+
const search = searchTerm.toLowerCase();
|
|
82
|
+
return (agent.name.toLowerCase().includes(search) ||
|
|
83
|
+
agent.userId?.toLowerCase().includes(search) ||
|
|
84
|
+
agent.id.toLowerCase().includes(search));
|
|
85
|
+
});
|
|
86
|
+
// Group agents by status
|
|
87
|
+
const groupedAgents = filteredAgents.reduce((acc, agent) => {
|
|
88
|
+
const statusConfig = getAgentStatusConfig(agent);
|
|
89
|
+
const statusLabel = statusConfig.label.replace("Status: ", "");
|
|
90
|
+
if (!acc[statusLabel]) {
|
|
91
|
+
acc[statusLabel] = [];
|
|
92
|
+
}
|
|
93
|
+
acc[statusLabel].push(agent);
|
|
94
|
+
return acc;
|
|
95
|
+
}, {});
|
|
96
|
+
// Sort groups by priority
|
|
97
|
+
const statusOrder = [
|
|
98
|
+
"Waiting for Approval",
|
|
99
|
+
"Running",
|
|
100
|
+
"Error",
|
|
101
|
+
"New",
|
|
102
|
+
"Completed",
|
|
103
|
+
];
|
|
104
|
+
const sortedGroups = Object.entries(groupedAgents).sort(([a], [b]) => {
|
|
105
|
+
const indexA = statusOrder.indexOf(a);
|
|
106
|
+
const indexB = statusOrder.indexOf(b);
|
|
107
|
+
if (indexA === -1)
|
|
108
|
+
return 1;
|
|
109
|
+
if (indexB === -1)
|
|
110
|
+
return -1;
|
|
111
|
+
return indexA - indexB;
|
|
112
|
+
});
|
|
113
|
+
if (loading) {
|
|
114
|
+
return (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsx("div", { className: "text-sm text-gray-500", children: "Loading agents..." }) }));
|
|
115
|
+
}
|
|
116
|
+
if (error) {
|
|
117
|
+
return (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsxs("div", { className: "max-w-md text-center", children: [_jsx("div", { className: "mb-4 text-sm text-red-600", children: error }), _jsx("button", { onClick: handleRefresh, className: "rounded bg-blue-500 px-4 py-2 text-xs text-white hover:bg-blue-600", children: "Retry" })] }) }));
|
|
118
|
+
}
|
|
119
|
+
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "border-b border-gray-200 bg-white p-4", children: [_jsxs("div", { className: "mb-3 flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "All Agents" }), _jsxs("p", { className: "text-xs text-gray-500", children: ["Showing ", filteredAgents.length, " non-closed agent", filteredAgents.length !== 1 ? "s" : "", " across all users"] })] }), _jsx(SimpleIconButton, { onClick: handleRefresh, icon: _jsx(RefreshCw, { className: cn("size-4", refreshing && "animate-spin"), strokeWidth: 1.5 }), label: "Refresh", disabled: refreshing, className: "text-gray-600 hover:text-gray-800" })] }), _jsx("input", { type: "text", placeholder: "Search by name, user, or agent ID...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), className: "w-full rounded border border-gray-200 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none" })] }), _jsx("div", { className: "flex-1 overflow-auto", children: filteredAgents.length === 0 ? (_jsx("div", { className: "flex h-full items-center justify-center text-sm text-gray-500", children: searchTerm.trim()
|
|
120
|
+
? "No agents match your search"
|
|
121
|
+
: "No non-closed agents found" })) : (_jsx("div", { className: "space-y-6 p-4", children: sortedGroups.map(([statusLabel, groupAgents]) => (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 text-xs font-semibold tracking-wide text-gray-500 uppercase", children: [statusLabel, " (", groupAgents.length, ")"] }), _jsx("div", { className: "space-y-2", children: groupAgents.map((agent) => {
|
|
122
|
+
const statusConfig = getAgentStatusConfig(agent);
|
|
123
|
+
return (_jsx("div", { className: "rounded-lg border border-gray-200 bg-white p-3 shadow-sm transition-shadow hover:shadow-md", children: _jsxs("div", { className: "flex items-start justify-between", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "mb-1 flex items-center gap-2", children: [_jsx("div", { className: cn("h-2 w-2 flex-shrink-0 rounded-full", statusConfig.color, statusConfig.shouldPulse && "animate-pulse"), title: statusConfig.label }), _jsx("h4", { className: "truncate font-medium text-gray-900", children: agent.name })] }), _jsxs("div", { className: "space-y-1 text-xs text-gray-600", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "User:" }), _jsx("span", { children: agent.userId || "Unknown" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "ID:" }), _jsx("span", { className: "font-mono text-xs", children: agent.id })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "Updated:" }), _jsx("span", { children: formatDateTime(agent.updatedDate) })] }), agent.totalCost > 0 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: "Cost:" }), _jsxs("span", { children: ["$", agent.totalCost.toFixed(4)] })] }))] })] }), _jsxs("div", { className: "ml-3 flex gap-1", children: [_jsx(SimpleIconButton, { onClick: () => handleCloseAgent(agent.id, agent.name), icon: _jsx(X, { className: "size-3", strokeWidth: 1.5 }), label: "Close Agent", className: "text-gray-600 opacity-60 hover:text-gray-800 hover:opacity-100" }), _jsx(SimpleIconButton, { onClick: (e) => handleDeleteAgent(agent.id, agent.name, e), icon: _jsx(Trash, { className: "size-3", strokeWidth: 1.5 }), label: "Delete Agent", className: "text-red-600 opacity-60 hover:text-red-700 hover:opacity-100" })] })] }) }, agent.id));
|
|
124
|
+
}) })] }, statusLabel))) })) })] }));
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=AllAgentsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AllAgentsPanel.js","sourceRoot":"","sources":["../../../src/editor/control-center/AllAgentsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,7 @@ export function WebSocketMessages() {
|
|
|
47
47
|
"suggested-edit-updated": "bg-indigo-100 text-indigo-800",
|
|
48
48
|
"suggested-edit-deleted": "bg-red-100 text-red-800",
|
|
49
49
|
"update-quota": "bg-gray-100 text-gray-800",
|
|
50
|
+
"agent-status-changed": "bg-violet-100 text-violet-800",
|
|
50
51
|
};
|
|
51
52
|
return colors[type] || "bg-gray-100 text-gray-800";
|
|
52
53
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketMessages.js","sourceRoot":"","sources":["../../../src/editor/control-center/WebSocketMessages.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,IAAI,GAAG,EAAE,CACV,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAElD,kCAAkC;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,iBAAiB,IAAI,EAAE,CAAC;IAEtD,iDAAiD;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YACzC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC3C,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC3C,MAAM,MAAM,GAA8B;YACxC,iBAAiB,EAAE,2BAA2B;YAC9C,cAAc,EAAE,yBAAyB;YACzC,cAAc,EAAE,+BAA+B;YAC/C,oBAAoB,EAAE,6BAA6B;YACnD,WAAW,EAAE,2BAA2B;YACxC,gBAAgB,EAAE,+BAA+B;YACjD,wBAAwB,EAAE,+BAA+B;YACzD,iBAAiB,EAAE,2BAA2B;YAC9C,iBAAiB,EAAE,yBAAyB;YAC5C,wBAAwB,EAAE,+BAA+B;YACzD,wBAAwB,EAAE,yBAAyB;YACnD,cAAc,EAAE,2BAA2B;
|
|
1
|
+
{"version":3,"file":"WebSocketMessages.js","sourceRoot":"","sources":["../../../src/editor/control-center/WebSocketMessages.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { findByName, resolvePathUnderContent } from "../utils";
|
|
|
8
8
|
// IDs for tool templates/fields
|
|
9
9
|
const AI_TOOLS_TEMPLATE_ID = "7e3f9d9d-8e84-4e57-b12e-6e9c99d4fd11"; // container
|
|
10
10
|
const AI_TOOL_TEMPLATE_ID = "a2e8a0d9-7b1f-4d1a-a2d8-8f3ea6d6f0b1"; // item template
|
|
11
|
+
const AGENT_SPAWN_TOOL_TEMPLATE_ID = "b1c2d3e4-5f6a-7b8c-9d0e-1f2a3b4c5d6e"; // spawn agent tool template
|
|
11
12
|
const FIELD_FUNCTION_NAME_ID = "3d9f2b1a-9d44-4d26-8a1b-92f0fb4d3a2c";
|
|
12
13
|
const FIELD_LABEL_ID = "5a19f5a5-1d21-4b6a-9f83-6f3fc0b34b2e";
|
|
13
14
|
const FIELD_DESCRIPTION_ID = "6b2e4b8e-8a9f-4d8f-9f6e-1a2b3c4d5e6f";
|
|
@@ -203,6 +204,37 @@ export function GenerateToolsSection() {
|
|
|
203
204
|
},
|
|
204
205
|
],
|
|
205
206
|
},
|
|
207
|
+
{
|
|
208
|
+
group: "Agents",
|
|
209
|
+
tools: [
|
|
210
|
+
{
|
|
211
|
+
functionName: "spawn-agent",
|
|
212
|
+
label: "Spawn Agent",
|
|
213
|
+
description: "Spawns a new AI agent with a specific profile and task",
|
|
214
|
+
templateId: AGENT_SPAWN_TOOL_TEMPLATE_ID,
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
functionName: "query-agent-status",
|
|
218
|
+
label: "Query Agent Status",
|
|
219
|
+
description: "Gets the status and progress of a spawned agent",
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
functionName: "stop-agent",
|
|
223
|
+
label: "Stop Agent",
|
|
224
|
+
description: "Stops a running child agent",
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
functionName: "report-to-parent",
|
|
228
|
+
label: "Report to Parent",
|
|
229
|
+
description: "Sends a message from child agent to parent agent",
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
functionName: "send-prompt-to-agent",
|
|
233
|
+
label: "Send Prompt to Agent",
|
|
234
|
+
description: "Sends a new prompt to a running agent's queue",
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
},
|
|
206
238
|
];
|
|
207
239
|
// Ensure groups exist, then create or move tools under them
|
|
208
240
|
for (const groupDef of toolsByGroup) {
|
|
@@ -236,11 +268,11 @@ export function GenerateToolsSection() {
|
|
|
236
268
|
// Load current group children (tools already inside this group)
|
|
237
269
|
const groupChildren = (await getChildren(groupNode.id, editContext.sessionId, [], false, userLang, "path"));
|
|
238
270
|
for (const t of groupDef.tools) {
|
|
239
|
-
// Try to find tool inside the group
|
|
240
|
-
let toolNode = findChildByName(groupChildren, t.
|
|
271
|
+
// Try to find tool inside the group by function name (which is now the item name)
|
|
272
|
+
let toolNode = findChildByName(groupChildren, t.functionName);
|
|
241
273
|
if (!toolNode) {
|
|
242
274
|
// See if tool exists at root and move it into the group
|
|
243
|
-
const existingAtRoot = findChildByName(rootChildren, t.
|
|
275
|
+
const existingAtRoot = findChildByName(rootChildren, t.functionName);
|
|
244
276
|
if (existingAtRoot) {
|
|
245
277
|
await editContext.operations.moveItems([
|
|
246
278
|
{
|
|
@@ -257,17 +289,20 @@ export function GenerateToolsSection() {
|
|
|
257
289
|
}
|
|
258
290
|
else {
|
|
259
291
|
// Create new tool item under the group
|
|
292
|
+
// Use custom template if specified, otherwise use default AI Tool template
|
|
293
|
+
const templateId = t.templateId || AI_TOOL_TEMPLATE_ID;
|
|
294
|
+
// Use function name as the item name - this becomes the tool name that the AI calls
|
|
260
295
|
const createdTool = await editContext.operations.createItem({
|
|
261
296
|
id: groupNode.id,
|
|
262
297
|
language: userLang,
|
|
263
298
|
version: 0,
|
|
264
|
-
},
|
|
299
|
+
}, templateId, t.functionName);
|
|
265
300
|
if (!createdTool)
|
|
266
|
-
throw new Error(`Failed to create tool '${t.
|
|
301
|
+
throw new Error(`Failed to create tool '${t.functionName}'`);
|
|
267
302
|
toolNode = {
|
|
268
303
|
id: createdTool.id,
|
|
269
|
-
name: t.
|
|
270
|
-
displayName: t.
|
|
304
|
+
name: t.functionName,
|
|
305
|
+
displayName: t.functionName,
|
|
271
306
|
thumbUrl: "",
|
|
272
307
|
previewUrl: "",
|
|
273
308
|
templateId: "",
|
package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateToolsSection.js","sourceRoot":"","sources":["../../../../../../src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GenerateToolsSection.js","sourceRoot":"","sources":["../../../../../../src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,106 +1,165 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { Thumbnails } from "./Thumbnails";
|
|
11
|
-
import { Splitter, SplitterPanel } from "primereact/splitter";
|
|
12
|
-
import { Preview } from "./Preview";
|
|
13
|
-
import DialogButtons from "../ui/DialogButtons";
|
|
14
|
-
import { Button } from "../../components/ui/button";
|
|
15
|
-
import { Sparkles } from "lucide-react";
|
|
16
|
-
import { toast } from "sonner";
|
|
1
|
+
// import { useEffect, useState, useRef } from "react";
|
|
2
|
+
// import { useDebouncedCallback } from "use-debounce";
|
|
3
|
+
// import { createEditorAiContext } from "../ai/editorAiContext";
|
|
4
|
+
// import { executePrompt } from "../services/aiService";
|
|
5
|
+
// import { executeSearch } from "../services/searchService";
|
|
6
|
+
// import { useEditContext } from "../client/editContext";
|
|
7
|
+
// import { Loader2 } from "lucide-react";
|
|
8
|
+
// import { Input } from "../../components/ui/input";
|
|
9
|
+
// import { Thumbnail } from "../services/contentService";
|
|
10
|
+
// import { Thumbnails } from "./Thumbnails";
|
|
11
|
+
// import { Splitter, SplitterPanel } from "primereact/splitter";
|
|
12
|
+
// import { Preview } from "./Preview";
|
|
13
|
+
// import DialogButtons from "../ui/DialogButtons";
|
|
14
|
+
// import { Button } from "../../components/ui/button";
|
|
15
|
+
// import { Sparkles } from "lucide-react";
|
|
16
|
+
// import { toast } from "sonner";
|
|
17
17
|
export function AiImageSearch({ onMediaSelected, onHide, }) {
|
|
18
|
-
const [prompt, setPrompt] = useState("");
|
|
19
|
-
const [loadingPrompt, setLoadingPrompt] = useState(false);
|
|
20
|
-
const [loadingThumbnails, setLoadingThumbnails] = useState(false);
|
|
21
|
-
const [images, setImages] = useState([]);
|
|
22
|
-
const [selectedImage, setSelectedImage] = useState();
|
|
23
|
-
const editContext = useEditContext();
|
|
24
|
-
const currentSuggestionRequest = useRef(null);
|
|
25
|
-
const inputRef = useRef(null);
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}, []);
|
|
32
|
-
const suggestPrompt = async () => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
18
|
+
// const [prompt, setPrompt] = useState("");
|
|
19
|
+
// const [loadingPrompt, setLoadingPrompt] = useState(false);
|
|
20
|
+
// const [loadingThumbnails, setLoadingThumbnails] = useState(false);
|
|
21
|
+
// const [images, setImages] = useState<Thumbnail[]>([]);
|
|
22
|
+
// const [selectedImage, setSelectedImage] = useState<Thumbnail>();
|
|
23
|
+
// const editContext = useEditContext();
|
|
24
|
+
// const currentSuggestionRequest = useRef<AbortController | null>(null);
|
|
25
|
+
// const inputRef = useRef<HTMLInputElement>(null);
|
|
26
|
+
// useEffect(() => {
|
|
27
|
+
// suggestPrompt();
|
|
28
|
+
// if (inputRef.current) {
|
|
29
|
+
// inputRef.current.focus();
|
|
30
|
+
// }
|
|
31
|
+
// }, []);
|
|
32
|
+
// const suggestPrompt = async () => {
|
|
33
|
+
// if (editContext) {
|
|
34
|
+
// setPrompt("");
|
|
35
|
+
// setLoadingPrompt(true);
|
|
36
|
+
// if (currentSuggestionRequest.current) {
|
|
37
|
+
// currentSuggestionRequest.current.abort();
|
|
38
|
+
// }
|
|
39
|
+
// const abortController = new AbortController();
|
|
40
|
+
// currentSuggestionRequest.current = abortController;
|
|
41
|
+
// try {
|
|
42
|
+
// const result = await executePrompt(
|
|
43
|
+
// [
|
|
44
|
+
// {
|
|
45
|
+
// content:
|
|
46
|
+
// "Please extract search terms from the field context that can be used to find a matching image. " +
|
|
47
|
+
// "I will use the search terms to find an image and populate the image field. If the component does not provide enough context, " +
|
|
48
|
+
// "also get content from the parent component using the get-content function. " +
|
|
49
|
+
// "Do not consider current image field contents. " +
|
|
50
|
+
// "Reply with search terms only!",
|
|
51
|
+
// name: "user",
|
|
52
|
+
// role: "user",
|
|
53
|
+
// id: crypto.randomUUID(), // Use proper UUID instead of Date.now()
|
|
54
|
+
// },
|
|
55
|
+
// ],
|
|
56
|
+
// { editContext, createAiContext: createEditorAiContext },
|
|
57
|
+
// { allowedFunctions: ["get-content"], addContextContent: true },
|
|
58
|
+
// { signal: abortController.signal },
|
|
59
|
+
// );
|
|
60
|
+
// setLoadingPrompt(false);
|
|
61
|
+
// const lastMessage = result?.messages?.[result.messages.length - 1];
|
|
62
|
+
// const newPrompt = lastMessage?.content?.replaceAll("\n", "") || "";
|
|
63
|
+
// setPrompt(newPrompt);
|
|
64
|
+
// } catch (error) {
|
|
65
|
+
// if (error instanceof Error && error.name !== "AbortError") {
|
|
66
|
+
// console.error("Failed to fetch prompt:", error);
|
|
67
|
+
// }
|
|
68
|
+
// setLoadingPrompt(false);
|
|
69
|
+
// } finally {
|
|
70
|
+
// currentSuggestionRequest.current = null;
|
|
71
|
+
// }
|
|
72
|
+
// }
|
|
73
|
+
// };
|
|
74
|
+
// const handleSearch = useDebouncedCallback(async (searchPrompt: string) => {
|
|
75
|
+
// if (!editContext) return;
|
|
76
|
+
// setLoadingThumbnails(true);
|
|
77
|
+
// const result = await executeSearch({
|
|
78
|
+
// query: searchPrompt,
|
|
79
|
+
// editContext,
|
|
80
|
+
// maxResults: 50,
|
|
81
|
+
// index: "media",
|
|
82
|
+
// skipValidation: true,
|
|
83
|
+
// });
|
|
84
|
+
// if (result.type == "success") {
|
|
85
|
+
// setImages(result.data as Thumbnail[]);
|
|
86
|
+
// } else {
|
|
87
|
+
// toast.error(result.response.statusText || "Error searching");
|
|
88
|
+
// }
|
|
89
|
+
// setLoadingThumbnails(false);
|
|
90
|
+
// }, 300);
|
|
91
|
+
// const onPromptChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
92
|
+
// const newPrompt = e.target.value;
|
|
93
|
+
// setPrompt(newPrompt);
|
|
94
|
+
// if (currentSuggestionRequest.current) {
|
|
95
|
+
// currentSuggestionRequest.current.abort();
|
|
96
|
+
// }
|
|
97
|
+
// };
|
|
98
|
+
// useEffect(() => {
|
|
99
|
+
// if (prompt) {
|
|
100
|
+
// handleSearch(prompt);
|
|
101
|
+
// }
|
|
102
|
+
// }, [prompt]);
|
|
103
|
+
// return (
|
|
104
|
+
// <>
|
|
105
|
+
// <Splitter className="flex-1 border-0">
|
|
106
|
+
// <SplitterPanel size={50} className="flex flex-col pt-4">
|
|
107
|
+
// <div className="flex flex-1 flex-col gap-2 px-2 pt-2 text-sm">
|
|
108
|
+
// <div>
|
|
109
|
+
// Search prompt
|
|
110
|
+
// <div className="flex items-center gap-2">
|
|
111
|
+
// <Input
|
|
112
|
+
// ref={inputRef} // Add ref to InputText
|
|
113
|
+
// value={prompt}
|
|
114
|
+
// onChange={onPromptChange}
|
|
115
|
+
// className="flex-1"
|
|
116
|
+
// />
|
|
117
|
+
// {loadingPrompt && (
|
|
118
|
+
// <div className="flex h-10 items-center">
|
|
119
|
+
// <Loader2 className="h-6 w-6 animate-spin" />
|
|
120
|
+
// </div>
|
|
121
|
+
// )}
|
|
122
|
+
// {!loadingPrompt && (
|
|
123
|
+
// <Button onClick={() => suggestPrompt()} size="sm">
|
|
124
|
+
// <Sparkles className="mr-2 h-4 w-4" />
|
|
125
|
+
// Suggest
|
|
126
|
+
// </Button>
|
|
127
|
+
// )}
|
|
128
|
+
// </div>
|
|
129
|
+
// </div>
|
|
130
|
+
// <div className="relative flex-1">
|
|
131
|
+
// {loadingThumbnails && (
|
|
132
|
+
// <div className="flex h-full items-center">
|
|
133
|
+
// <Loader2 className="h-6 w-6 animate-spin" />
|
|
134
|
+
// </div>
|
|
135
|
+
// )}
|
|
136
|
+
// <Thumbnails
|
|
137
|
+
// images={images}
|
|
138
|
+
// selectedImage={selectedImage}
|
|
139
|
+
// setSelectedImage={setSelectedImage}
|
|
140
|
+
// onMediaSelected={onMediaSelected}
|
|
141
|
+
// onHide={onHide}
|
|
142
|
+
// />
|
|
143
|
+
// </div>
|
|
144
|
+
// </div>
|
|
145
|
+
// </SplitterPanel>
|
|
146
|
+
// <SplitterPanel size={50} className="relative">
|
|
147
|
+
// <Preview selectedImage={selectedImage} />
|
|
148
|
+
// </SplitterPanel>
|
|
149
|
+
// </Splitter>
|
|
150
|
+
// <DialogButtons>
|
|
151
|
+
// <Button
|
|
152
|
+
// disabled={!selectedImage}
|
|
153
|
+
// onClick={() => {
|
|
154
|
+
// onMediaSelected(selectedImage!.id);
|
|
155
|
+
// onHide();
|
|
156
|
+
// }}
|
|
157
|
+
// >
|
|
158
|
+
// Select
|
|
159
|
+
// </Button>
|
|
160
|
+
// <Button onClick={() => onHide()}>Cancel</Button>
|
|
161
|
+
// </DialogButtons>
|
|
162
|
+
// </>
|
|
163
|
+
// );
|
|
105
164
|
}
|
|
106
165
|
//# sourceMappingURL=AiImageSearch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiImageSearch.js","sourceRoot":"","sources":["../../../src/editor/media-selector/AiImageSearch.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AiImageSearch.js","sourceRoot":"","sources":["../../../src/editor/media-selector/AiImageSearch.tsx"],"names":[],"mappings":"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"}
|