@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.
Files changed (77) hide show
  1. package/dist/agents-view/AgentCard.d.ts +12 -0
  2. package/dist/agents-view/AgentCard.js +30 -0
  3. package/dist/agents-view/AgentCard.js.map +1 -0
  4. package/dist/agents-view/AgentsView.d.ts +2 -2
  5. package/dist/agents-view/AgentsView.js +102 -85
  6. package/dist/agents-view/AgentsView.js.map +1 -1
  7. package/dist/agents-view/ProfileAgentsGroup.d.ts +17 -0
  8. package/dist/agents-view/ProfileAgentsGroup.js +13 -0
  9. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -0
  10. package/dist/components/ui/popover.d.ts +3 -3
  11. package/dist/config/config.js +8 -1
  12. package/dist/config/config.js.map +1 -1
  13. package/dist/editor/ConfirmationDialog.js.map +1 -1
  14. package/dist/editor/ImageEditButton.js.map +1 -1
  15. package/dist/editor/ai/AgentProfilesOverview.js +1 -1
  16. package/dist/editor/ai/AgentProfilesOverview.js.map +1 -1
  17. package/dist/editor/ai/Agents.js +6 -2
  18. package/dist/editor/ai/Agents.js.map +1 -1
  19. package/dist/editor/client/EditorShell.js +17 -0
  20. package/dist/editor/client/EditorShell.js.map +1 -1
  21. package/dist/editor/client/ui/EditorChrome.js +1 -0
  22. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  23. package/dist/editor/commands/componentCommands.js +19 -1
  24. package/dist/editor/commands/componentCommands.js.map +1 -1
  25. package/dist/editor/field-types/DateTimeFieldEditor.js +1 -1
  26. package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -1
  27. package/dist/editor/page-editor-chrome/FrameMenu.js +7 -3
  28. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  29. package/dist/editor/page-viewer/PageViewerFrame.js +7 -28
  30. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  31. package/dist/editor/reviews/Comment.js +56 -4
  32. package/dist/editor/reviews/Comment.js.map +1 -1
  33. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  34. package/dist/editor/reviews/CommentPopover.js +1 -1
  35. package/dist/editor/reviews/CommentPopover.js.map +1 -1
  36. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  37. package/dist/editor/services/agentService.d.ts +19 -0
  38. package/dist/editor/services/agentService.js +39 -0
  39. package/dist/editor/services/agentService.js.map +1 -1
  40. package/dist/editor/services/aiService.d.ts +2 -0
  41. package/dist/editor/services/aiService.js.map +1 -1
  42. package/dist/editor/services/serviceHelper.d.ts +1 -0
  43. package/dist/editor/services/serviceHelper.js +58 -4
  44. package/dist/editor/services/serviceHelper.js.map +1 -1
  45. package/dist/editor/views/ParheliaView.d.ts +5 -0
  46. package/dist/editor/views/ParheliaView.js +136 -0
  47. package/dist/editor/views/ParheliaView.js.map +1 -0
  48. package/dist/revision.d.ts +2 -2
  49. package/dist/revision.js +2 -2
  50. package/dist/styles.css +8 -6
  51. package/dist/tour/default-tour.js +24 -9
  52. package/dist/tour/default-tour.js.map +1 -1
  53. package/package.json +12 -8
  54. package/src/agents-view/AgentCard.tsx +162 -0
  55. package/src/agents-view/AgentsView.tsx +218 -253
  56. package/src/agents-view/ProfileAgentsGroup.tsx +123 -0
  57. package/src/config/config.tsx +10 -1
  58. package/src/editor/ConfirmationDialog.tsx +1 -1
  59. package/src/editor/ImageEditButton.tsx +4 -2
  60. package/src/editor/ai/AgentProfilesOverview.tsx +1 -2
  61. package/src/editor/ai/Agents.tsx +7 -2
  62. package/src/editor/client/EditorShell.tsx +18 -0
  63. package/src/editor/client/ui/EditorChrome.tsx +1 -0
  64. package/src/editor/commands/componentCommands.tsx +19 -1
  65. package/src/editor/field-types/DateTimeFieldEditor.tsx +5 -4
  66. package/src/editor/page-editor-chrome/FrameMenu.tsx +9 -3
  67. package/src/editor/page-viewer/PageViewerFrame.tsx +7 -36
  68. package/src/editor/reviews/Comment.tsx +85 -4
  69. package/src/editor/reviews/CommentDisplayPopover.tsx +2 -2
  70. package/src/editor/reviews/CommentPopover.tsx +2 -2
  71. package/src/editor/reviews/SuggestionDisplayPopover.tsx +1 -1
  72. package/src/editor/services/agentService.ts +77 -0
  73. package/src/editor/services/aiService.ts +4 -0
  74. package/src/editor/services/serviceHelper.ts +92 -28
  75. package/src/editor/views/ParheliaView.tsx +207 -0
  76. package/src/revision.ts +2 -2
  77. 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
+ }