@alpaca-editor/core 1.0.4184 → 1.0.4186
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/agents-view/AgentCard.d.ts +12 -0
- package/dist/agents-view/AgentCard.js +30 -0
- package/dist/agents-view/AgentCard.js.map +1 -0
- package/dist/agents-view/AgentsView.d.ts +2 -2
- package/dist/agents-view/AgentsView.js +102 -85
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/ProfileAgentsGroup.d.ts +17 -0
- package/dist/agents-view/ProfileAgentsGroup.js +13 -0
- package/dist/agents-view/ProfileAgentsGroup.js.map +1 -0
- package/dist/components/ui/popover.d.ts +3 -3
- package/dist/config/config.js +8 -1
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ConfirmationDialog.js.map +1 -1
- package/dist/editor/ImageEditButton.js.map +1 -1
- package/dist/editor/ai/AgentProfilesOverview.js +1 -1
- package/dist/editor/ai/AgentProfilesOverview.js.map +1 -1
- package/dist/editor/ai/Agents.js +6 -2
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/client/EditorShell.js +17 -0
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.js +1 -0
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/commands/componentCommands.js +19 -1
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/field-types/DateTimeFieldEditor.js +1 -1
- package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +7 -3
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +7 -28
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/reviews/Comment.js +56 -4
- package/dist/editor/reviews/Comment.js.map +1 -1
- package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
- package/dist/editor/reviews/CommentPopover.js +1 -1
- package/dist/editor/reviews/CommentPopover.js.map +1 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +19 -0
- package/dist/editor/services/agentService.js +39 -0
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +2 -0
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/serviceHelper.d.ts +1 -0
- package/dist/editor/services/serviceHelper.js +58 -4
- package/dist/editor/services/serviceHelper.js.map +1 -1
- package/dist/editor/views/ParheliaView.d.ts +5 -0
- package/dist/editor/views/ParheliaView.js +136 -0
- package/dist/editor/views/ParheliaView.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/styles.css +8 -6
- package/dist/tour/default-tour.js +24 -9
- package/dist/tour/default-tour.js.map +1 -1
- package/package.json +12 -8
- package/src/agents-view/AgentCard.tsx +162 -0
- package/src/agents-view/AgentsView.tsx +218 -253
- package/src/agents-view/ProfileAgentsGroup.tsx +123 -0
- package/src/config/config.tsx +10 -1
- package/src/editor/ConfirmationDialog.tsx +1 -1
- package/src/editor/ImageEditButton.tsx +4 -2
- package/src/editor/ai/AgentProfilesOverview.tsx +1 -2
- package/src/editor/ai/Agents.tsx +7 -2
- package/src/editor/client/EditorShell.tsx +18 -0
- package/src/editor/client/ui/EditorChrome.tsx +1 -0
- package/src/editor/commands/componentCommands.tsx +19 -1
- package/src/editor/field-types/DateTimeFieldEditor.tsx +5 -4
- package/src/editor/page-editor-chrome/FrameMenu.tsx +9 -3
- package/src/editor/page-viewer/PageViewerFrame.tsx +7 -36
- package/src/editor/reviews/Comment.tsx +85 -4
- package/src/editor/reviews/CommentDisplayPopover.tsx +2 -2
- package/src/editor/reviews/CommentPopover.tsx +2 -2
- package/src/editor/reviews/SuggestionDisplayPopover.tsx +1 -1
- package/src/editor/services/agentService.ts +77 -0
- package/src/editor/services/aiService.ts +4 -0
- package/src/editor/services/serviceHelper.ts +92 -28
- package/src/editor/views/ParheliaView.tsx +207 -0
- package/src/revision.ts +2 -2
- package/src/tour/default-tour.tsx +63 -48
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Agent } from "../editor/services/agentService";
|
|
3
|
+
import { getAgentStatusConfig } from "../editor/ai/AgentStatusBadge";
|
|
4
|
+
import { cn } from "../lib/utils";
|
|
5
|
+
import { Trash, X, Play, Users } from "lucide-react";
|
|
6
|
+
import { SimpleIconButton } from "../editor/ui/SimpleIconButton";
|
|
7
|
+
import { SecretAgentIcon } from "../editor/ui/Icons";
|
|
8
|
+
|
|
9
|
+
interface AgentCardProps {
|
|
10
|
+
agent: Agent;
|
|
11
|
+
onClick: (agent: Agent) => void;
|
|
12
|
+
onResume: (agent: Agent) => void;
|
|
13
|
+
onClose: (agentId: string, agentName: string) => void;
|
|
14
|
+
onDelete: (
|
|
15
|
+
agentId: string,
|
|
16
|
+
agentName: string,
|
|
17
|
+
event: React.MouseEvent,
|
|
18
|
+
) => void;
|
|
19
|
+
formatDateTime: (dateString: string) => string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function AgentCard({
|
|
23
|
+
agent,
|
|
24
|
+
onClick,
|
|
25
|
+
onResume,
|
|
26
|
+
onClose,
|
|
27
|
+
onDelete,
|
|
28
|
+
formatDateTime,
|
|
29
|
+
}: AgentCardProps) {
|
|
30
|
+
const statusConfig = getAgentStatusConfig(agent);
|
|
31
|
+
const isClosed = agent.status === "closed" || agent.status === 5;
|
|
32
|
+
|
|
33
|
+
const handleCardClick = () => {
|
|
34
|
+
if (isClosed) {
|
|
35
|
+
// If agent is closed, resume it directly
|
|
36
|
+
onResume(agent);
|
|
37
|
+
} else {
|
|
38
|
+
// If agent is active, just select it
|
|
39
|
+
onClick(agent);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<div
|
|
45
|
+
key={agent.id}
|
|
46
|
+
className="cursor-pointer rounded-lg border border-gray-200 bg-white p-3 shadow-sm transition-shadow hover:shadow-md"
|
|
47
|
+
onClick={handleCardClick}
|
|
48
|
+
>
|
|
49
|
+
<div className="flex items-start justify-between">
|
|
50
|
+
{/* Agent Icon */}
|
|
51
|
+
<div className="mr-3 flex-shrink-0">
|
|
52
|
+
{agent.profileSvgIcon ? (
|
|
53
|
+
<div
|
|
54
|
+
className="flex h-6 w-6 items-center justify-center text-gray-400 [&>svg]:h-full [&>svg]:w-full"
|
|
55
|
+
dangerouslySetInnerHTML={{
|
|
56
|
+
__html: agent.profileSvgIcon,
|
|
57
|
+
}}
|
|
58
|
+
/>
|
|
59
|
+
) : (
|
|
60
|
+
<SecretAgentIcon
|
|
61
|
+
size={24}
|
|
62
|
+
strokeWidth={1}
|
|
63
|
+
className="text-gray-400"
|
|
64
|
+
/>
|
|
65
|
+
)}
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div className="min-w-0 flex-1">
|
|
69
|
+
{/* Agent Name & Status */}
|
|
70
|
+
<div className="mb-1 flex items-center gap-2">
|
|
71
|
+
<div
|
|
72
|
+
className={cn(
|
|
73
|
+
"h-2 w-2 flex-shrink-0 rounded-full",
|
|
74
|
+
statusConfig.color,
|
|
75
|
+
statusConfig.shouldPulse && "animate-pulse",
|
|
76
|
+
)}
|
|
77
|
+
title={statusConfig.label}
|
|
78
|
+
/>
|
|
79
|
+
<h4 className="truncate font-medium text-gray-900">{agent.name}</h4>
|
|
80
|
+
{agent.isShared && (
|
|
81
|
+
<div className="flex items-center gap-1 rounded bg-blue-50 px-2 py-0.5 text-xs text-blue-700">
|
|
82
|
+
<Users className="size-3" strokeWidth={1} />
|
|
83
|
+
<span>Shared</span>
|
|
84
|
+
</div>
|
|
85
|
+
)}
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
{/* Shared Agent Owner */}
|
|
89
|
+
{agent.isShared && agent.ownerName && (
|
|
90
|
+
<p className="mb-1 text-xs text-gray-500">
|
|
91
|
+
Created by {agent.ownerName}
|
|
92
|
+
</p>
|
|
93
|
+
)}
|
|
94
|
+
|
|
95
|
+
{/* Agent Description */}
|
|
96
|
+
{agent.description && (
|
|
97
|
+
<p className="mb-2 truncate text-xs text-gray-500">
|
|
98
|
+
{agent.description}
|
|
99
|
+
</p>
|
|
100
|
+
)}
|
|
101
|
+
|
|
102
|
+
{/* Agent Details */}
|
|
103
|
+
<div className="space-y-1 text-xs text-gray-600">
|
|
104
|
+
<div className="flex items-center gap-2">
|
|
105
|
+
<span className="font-medium">Updated:</span>
|
|
106
|
+
<span>{formatDateTime(agent.updatedDate)}</span>
|
|
107
|
+
</div>
|
|
108
|
+
{agent.messageCount !== undefined && agent.messageCount > 0 && (
|
|
109
|
+
<div className="flex items-center gap-2">
|
|
110
|
+
<span className="font-medium">Messages:</span>
|
|
111
|
+
<span>{agent.messageCount}</span>
|
|
112
|
+
</div>
|
|
113
|
+
)}
|
|
114
|
+
{agent.totalCost !== undefined && agent.totalCost > 0 && (
|
|
115
|
+
<div className="flex items-center gap-2">
|
|
116
|
+
<span className="font-medium">Cost:</span>
|
|
117
|
+
<span>${agent.totalCost.toFixed(4)}</span>
|
|
118
|
+
{agent.totalTokensUsed !== undefined && (
|
|
119
|
+
<span className="text-gray-400">
|
|
120
|
+
({agent.totalTokensUsed.toLocaleString()} tokens)
|
|
121
|
+
</span>
|
|
122
|
+
)}
|
|
123
|
+
</div>
|
|
124
|
+
)}
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
{/* Actions */}
|
|
129
|
+
<div className="ml-3 flex gap-1">
|
|
130
|
+
{isClosed && (
|
|
131
|
+
<SimpleIconButton
|
|
132
|
+
onClick={(e) => {
|
|
133
|
+
e.stopPropagation();
|
|
134
|
+
onResume(agent);
|
|
135
|
+
}}
|
|
136
|
+
icon={<Play className="size-3" strokeWidth={1.5} />}
|
|
137
|
+
label="Resume Agent"
|
|
138
|
+
className="text-blue-600 opacity-60 hover:text-blue-700 hover:opacity-100"
|
|
139
|
+
/>
|
|
140
|
+
)}
|
|
141
|
+
{!isClosed && (
|
|
142
|
+
<SimpleIconButton
|
|
143
|
+
onClick={(e) => {
|
|
144
|
+
e.stopPropagation();
|
|
145
|
+
onClose(agent.id, agent.name);
|
|
146
|
+
}}
|
|
147
|
+
icon={<X className="size-3" strokeWidth={1.5} />}
|
|
148
|
+
label="Close Agent"
|
|
149
|
+
className="text-gray-600 opacity-60 hover:text-gray-800 hover:opacity-100"
|
|
150
|
+
/>
|
|
151
|
+
)}
|
|
152
|
+
<SimpleIconButton
|
|
153
|
+
onClick={(e) => onDelete(agent.id, agent.name, e)}
|
|
154
|
+
icon={<Trash className="size-3" strokeWidth={1.5} />}
|
|
155
|
+
label="Delete Agent"
|
|
156
|
+
className="text-red-600 opacity-60 hover:text-red-700 hover:opacity-100"
|
|
157
|
+
/>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
);
|
|
162
|
+
}
|