@alpaca-editor/core 1.0.4027 → 1.0.4030

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 (220) hide show
  1. package/dist/components/ActionButton.js +2 -2
  2. package/dist/components/ActionButton.js.map +1 -1
  3. package/dist/components/SimpleLanguageSelector.js +3 -1
  4. package/dist/components/SimpleLanguageSelector.js.map +1 -1
  5. package/dist/components/ui/button.d.ts +1 -1
  6. package/dist/config/config.js +1 -1
  7. package/dist/config/config.js.map +1 -1
  8. package/dist/config/types.d.ts +1 -1
  9. package/dist/editor/ContextMenu.js +0 -1
  10. package/dist/editor/ContextMenu.js.map +1 -1
  11. package/dist/editor/Editor.js +9 -3
  12. package/dist/editor/Editor.js.map +1 -1
  13. package/dist/editor/FieldListField.js +16 -24
  14. package/dist/editor/FieldListField.js.map +1 -1
  15. package/dist/editor/ImageEditButton.js +1 -1
  16. package/dist/editor/ImageEditButton.js.map +1 -1
  17. package/dist/editor/ImageEditor.js +1 -1
  18. package/dist/editor/ImageEditor.js.map +1 -1
  19. package/dist/editor/MainLayout.js +2 -2
  20. package/dist/editor/MainLayout.js.map +1 -1
  21. package/dist/editor/Terminal.js +1 -1
  22. package/dist/editor/Terminal.js.map +1 -1
  23. package/dist/editor/Titlebar.js +0 -1
  24. package/dist/editor/Titlebar.js.map +1 -1
  25. package/dist/editor/ai/AgentCostDisplay.d.ts +26 -0
  26. package/dist/editor/ai/AgentCostDisplay.js +65 -0
  27. package/dist/editor/ai/AgentCostDisplay.js.map +1 -0
  28. package/dist/editor/ai/Agents.js +59 -15
  29. package/dist/editor/ai/Agents.js.map +1 -1
  30. package/dist/editor/ai/AiPromptPopover.d.ts +7 -0
  31. package/dist/editor/ai/AiPromptPopover.js +111 -0
  32. package/dist/editor/ai/AiPromptPopover.js.map +1 -0
  33. package/dist/editor/ai/AiResponseMessage.d.ts +1 -0
  34. package/dist/editor/ai/AiResponseMessage.js +101 -23
  35. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  36. package/dist/editor/ai/AiTerminal.d.ts +15 -1
  37. package/dist/editor/ai/AiTerminal.js +379 -48
  38. package/dist/editor/ai/AiTerminal.js.map +1 -1
  39. package/dist/editor/ai/editorAiContext.d.ts +0 -1
  40. package/dist/editor/ai/editorAiContext.js +0 -2
  41. package/dist/editor/ai/editorAiContext.js.map +1 -1
  42. package/dist/editor/client/EditorClient.d.ts +3 -2
  43. package/dist/editor/client/EditorClient.js +326 -68
  44. package/dist/editor/client/EditorClient.js.map +1 -1
  45. package/dist/editor/client/editContext.d.ts +6 -4
  46. package/dist/editor/client/editContext.js.map +1 -1
  47. package/dist/editor/client/fieldModificationStore.d.ts +19 -0
  48. package/dist/editor/client/fieldModificationStore.js +125 -0
  49. package/dist/editor/client/fieldModificationStore.js.map +1 -0
  50. package/dist/editor/client/itemsRepository.d.ts +1 -1
  51. package/dist/editor/client/itemsRepository.js +38 -28
  52. package/dist/editor/client/itemsRepository.js.map +1 -1
  53. package/dist/editor/client/operations.d.ts +1 -0
  54. package/dist/editor/client/operations.js +39 -31
  55. package/dist/editor/client/operations.js.map +1 -1
  56. package/dist/editor/commands/componentCommands.js +5 -3
  57. package/dist/editor/commands/componentCommands.js.map +1 -1
  58. package/dist/editor/commands/itemCommands.js.map +1 -1
  59. package/dist/editor/component-designer/aiContext.js +0 -2
  60. package/dist/editor/component-designer/aiContext.js.map +1 -1
  61. package/dist/editor/field-types/DropLinkEditor.js +1 -1
  62. package/dist/editor/field-types/DropLinkEditor.js.map +1 -1
  63. package/dist/editor/field-types/MultiLineText.js +5 -7
  64. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  65. package/dist/editor/field-types/RichTextEditorComponent.js +5 -7
  66. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  67. package/dist/editor/field-types/SingleLineText.js +5 -7
  68. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  69. package/dist/editor/hooks/useEditorSettings.d.ts +17 -0
  70. package/dist/editor/hooks/useEditorSettings.js +61 -0
  71. package/dist/editor/hooks/useEditorSettings.js.map +1 -0
  72. package/dist/editor/menubar/ItemActionsMenu.js +2 -2
  73. package/dist/editor/menubar/ItemActionsMenu.js.map +1 -1
  74. package/dist/editor/menubar/PageSelector.js +1 -1
  75. package/dist/editor/menubar/PageSelector.js.map +1 -1
  76. package/dist/editor/menubar/toolbar-sections/EditControls.js +1 -1
  77. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  78. package/dist/editor/menubar/toolbar-sections/InsertControls.js +1 -1
  79. package/dist/editor/menubar/toolbar-sections/InsertControls.js.map +1 -1
  80. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -1
  81. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  82. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +1 -1
  83. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  84. package/dist/editor/page-editor-chrome/FieldEditedIndicators.js +4 -3
  85. package/dist/editor/page-editor-chrome/FieldEditedIndicators.js.map +1 -1
  86. package/dist/editor/page-editor-chrome/FrameMenu.js +9 -1
  87. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  88. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +0 -1
  89. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
  90. package/dist/editor/page-viewer/EditorForm.js +1 -1
  91. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  92. package/dist/editor/page-viewer/PageViewer.js +9 -8
  93. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  94. package/dist/editor/page-viewer/PageViewerFrame.js +7 -1
  95. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  96. package/dist/editor/page-viewer/pageViewContext.js +40 -6
  97. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  98. package/dist/editor/reviews/Comment.js +7 -6
  99. package/dist/editor/reviews/Comment.js.map +1 -1
  100. package/dist/editor/services/agentService.d.ts +84 -12
  101. package/dist/editor/services/agentService.js +256 -15
  102. package/dist/editor/services/agentService.js.map +1 -1
  103. package/dist/editor/services/aiService.d.ts +17 -3
  104. package/dist/editor/services/aiService.js +5 -3
  105. package/dist/editor/services/aiService.js.map +1 -1
  106. package/dist/editor/services/contextService.js +0 -1
  107. package/dist/editor/services/contextService.js.map +1 -1
  108. package/dist/editor/services/systemService.d.ts +2 -1
  109. package/dist/editor/services/systemService.js +3 -0
  110. package/dist/editor/services/systemService.js.map +1 -1
  111. package/dist/editor/sidebar/ComponentPalette.js +1 -1
  112. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  113. package/dist/editor/sidebar/EditHistory.js +2 -2
  114. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  115. package/dist/editor/sidebar/GraphQL.d.ts +1 -0
  116. package/dist/editor/sidebar/GraphQL.js +8 -2
  117. package/dist/editor/sidebar/GraphQL.js.map +1 -1
  118. package/dist/editor/sidebar/MainContentTree.js +1 -1
  119. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  120. package/dist/editor/sidebar/SEOInfo.js +1 -1
  121. package/dist/editor/sidebar/SEOInfo.js.map +1 -1
  122. package/dist/editor/sidebar/ViewSelector.d.ts +4 -1
  123. package/dist/editor/sidebar/ViewSelector.js +64 -48
  124. package/dist/editor/sidebar/ViewSelector.js.map +1 -1
  125. package/dist/editor/ui/PerfectTree.js +2 -11
  126. package/dist/editor/ui/PerfectTree.js.map +1 -1
  127. package/dist/editor/ui/SimpleIconButton.d.ts +2 -0
  128. package/dist/editor/ui/SimpleIconButton.js +8 -4
  129. package/dist/editor/ui/SimpleIconButton.js.map +1 -1
  130. package/dist/index.d.ts +2 -0
  131. package/dist/index.js +2 -0
  132. package/dist/index.js.map +1 -1
  133. package/dist/page-wizard/steps/CollectStep.js +1 -1
  134. package/dist/page-wizard/steps/CollectStep.js.map +1 -1
  135. package/dist/page-wizard/steps/StructureStep.js +1 -1
  136. package/dist/page-wizard/steps/StructureStep.js.map +1 -1
  137. package/dist/page-wizard/steps/TranslateStep.js +233 -18
  138. package/dist/page-wizard/steps/TranslateStep.js.map +1 -1
  139. package/dist/revision.d.ts +2 -2
  140. package/dist/revision.js +2 -2
  141. package/dist/splash-screen/RecentPages.js +1 -13
  142. package/dist/splash-screen/RecentPages.js.map +1 -1
  143. package/dist/splash-screen/SplashScreen.js +1 -1
  144. package/dist/splash-screen/SplashScreen.js.map +1 -1
  145. package/dist/styles.css +88 -3
  146. package/dist/types.d.ts +6 -0
  147. package/package.json +2 -2
  148. package/src/components/ActionButton.tsx +3 -2
  149. package/src/components/SimpleLanguageSelector.tsx +6 -1
  150. package/src/config/config.tsx +1 -1
  151. package/src/config/types.ts +1 -1
  152. package/src/editor/ContextMenu.tsx +0 -3
  153. package/src/editor/Editor.tsx +11 -3
  154. package/src/editor/FieldListField.tsx +22 -31
  155. package/src/editor/ImageEditButton.tsx +1 -0
  156. package/src/editor/ImageEditor.tsx +1 -0
  157. package/src/editor/MainLayout.tsx +2 -2
  158. package/src/editor/Terminal.tsx +1 -1
  159. package/src/editor/Titlebar.tsx +0 -2
  160. package/src/editor/ai/AgentCostDisplay.tsx +237 -0
  161. package/src/editor/ai/Agents.tsx +69 -20
  162. package/src/editor/ai/AiPromptPopover.tsx +209 -0
  163. package/src/editor/ai/AiResponseMessage.tsx +201 -60
  164. package/src/editor/ai/AiTerminal.tsx +502 -71
  165. package/src/editor/ai/editorAiContext.ts +0 -3
  166. package/src/editor/client/EditorClient.tsx +409 -117
  167. package/src/editor/client/editContext.ts +7 -5
  168. package/src/editor/client/fieldModificationStore.ts +196 -0
  169. package/src/editor/client/itemsRepository.ts +41 -31
  170. package/src/editor/client/operations.ts +95 -76
  171. package/src/editor/commands/componentCommands.tsx +9 -3
  172. package/src/editor/commands/itemCommands.tsx +0 -1
  173. package/src/editor/component-designer/aiContext.ts +0 -2
  174. package/src/editor/field-types/DropLinkEditor.tsx +1 -1
  175. package/src/editor/field-types/MultiLineText.tsx +9 -9
  176. package/src/editor/field-types/RichTextEditorComponent.tsx +8 -8
  177. package/src/editor/field-types/SingleLineText.tsx +9 -9
  178. package/src/editor/hooks/useEditorSettings.ts +68 -0
  179. package/src/editor/menubar/ItemActionsMenu.tsx +3 -2
  180. package/src/editor/menubar/PageSelector.tsx +1 -1
  181. package/src/editor/menubar/toolbar-sections/EditControls.tsx +1 -0
  182. package/src/editor/menubar/toolbar-sections/InsertControls.tsx +1 -0
  183. package/src/editor/menubar/toolbar-sections/UtilityControls.tsx +2 -0
  184. package/src/editor/menubar/toolbar-sections/ViewportControls.tsx +2 -0
  185. package/src/editor/page-editor-chrome/FieldEditedIndicators.tsx +4 -3
  186. package/src/editor/page-editor-chrome/FrameMenu.tsx +10 -1
  187. package/src/editor/page-editor-chrome/useInlineAICompletion.tsx +0 -1
  188. package/src/editor/page-viewer/EditorForm.tsx +1 -0
  189. package/src/editor/page-viewer/PageViewer.tsx +9 -8
  190. package/src/editor/page-viewer/PageViewerFrame.tsx +7 -1
  191. package/src/editor/page-viewer/pageViewContext.ts +40 -5
  192. package/src/editor/reviews/Comment.tsx +7 -7
  193. package/src/editor/services/agentService.ts +405 -31
  194. package/src/editor/services/aiService.ts +22 -5
  195. package/src/editor/services/contextService.ts +0 -1
  196. package/src/editor/services/systemService.ts +7 -1
  197. package/src/editor/sidebar/ComponentPalette.tsx +4 -1
  198. package/src/editor/sidebar/EditHistory.tsx +2 -0
  199. package/src/editor/sidebar/GraphQL.tsx +19 -7
  200. package/src/editor/sidebar/MainContentTree.tsx +1 -1
  201. package/src/editor/sidebar/SEOInfo.tsx +1 -1
  202. package/src/editor/sidebar/ViewSelector.tsx +80 -64
  203. package/src/editor/ui/PerfectTree.tsx +2 -18
  204. package/src/editor/ui/SimpleIconButton.tsx +56 -38
  205. package/src/index.ts +2 -0
  206. package/src/page-wizard/steps/CollectStep.tsx +0 -2
  207. package/src/page-wizard/steps/StructureStep.tsx +3 -0
  208. package/src/page-wizard/steps/TranslateStep.tsx +473 -62
  209. package/src/revision.ts +2 -2
  210. package/src/splash-screen/RecentPages.tsx +0 -14
  211. package/src/splash-screen/SplashScreen.tsx +3 -2
  212. package/src/types.ts +7 -0
  213. package/dist/editor/ai/AiPopup.d.ts +0 -10
  214. package/dist/editor/ai/AiPopup.js +0 -23
  215. package/dist/editor/ai/AiPopup.js.map +0 -1
  216. package/dist/editor/ai/AiToolCall.d.ts +0 -5
  217. package/dist/editor/ai/AiToolCall.js +0 -28
  218. package/dist/editor/ai/AiToolCall.js.map +0 -1
  219. package/src/editor/ai/AiPopup.tsx +0 -59
  220. package/src/editor/ai/AiToolCall.tsx +0 -71
@@ -1 +1 @@
1
- {"version":3,"file":"AiResponseMessage.js","sourceRoot":"","sources":["../../../src/editor/ai/AiResponseMessage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AiResponseMessage.js","sourceRoot":"","sources":["../../../src/editor/ai/AiResponseMessage.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,13 @@ type Response = {
7
7
  numCachedTokens: number;
8
8
  state: string;
9
9
  agentName?: string;
10
+ totalCost?: number;
11
+ totalInputTokenCost?: number;
12
+ totalOutputTokenCost?: number;
13
+ totalCachedTokenCost?: number;
14
+ totalInputTokens?: number;
15
+ totalOutputTokens?: number;
16
+ totalCachedTokens?: number;
10
17
  };
11
18
  export type ToolCall = {
12
19
  id: string;
@@ -27,13 +34,20 @@ export type Message = {
27
34
  };
28
35
  export type AiContext = {
29
36
  promptData: any;
30
- endpoint: string;
31
37
  callback?: (response: Response) => void;
32
38
  };
33
39
  export type AiTerminalOptions = {
34
40
  initialPrompt?: string;
35
41
  hiddenSystemPrompt?: string;
36
42
  initialMessages?: Message[];
43
+ agentId?: string;
44
+ totalCost?: number;
45
+ totalInputTokenCost?: number;
46
+ totalOutputTokenCost?: number;
47
+ totalCachedTokenCost?: number;
48
+ totalInputTokens?: number;
49
+ totalOutputTokens?: number;
50
+ totalCachedTokens?: number;
37
51
  };
38
52
  export declare function AiTerminal({ closeButton, createAiContext, defaultProfile, options, onAgentNameUpdate, }: {
39
53
  closeButton?: React.ReactNode;
@@ -7,9 +7,20 @@ import { useEditContext } from "../client/editContext";
7
7
  import { Dropdown } from "primereact/dropdown";
8
8
  import { WizardIcon } from "../ui/Icons";
9
9
  import { AiResponseMessage } from "./AiResponseMessage";
10
- import { loadAiProfiles, executePrompt, } from "../services/aiService";
10
+ import { loadAiProfiles } from "../services/aiService";
11
+ import { startAgent, connectToAgentStream, AgentStreamMessageType, } from "../services/agentService";
11
12
  import { SimpleIconButton } from "../ui/SimpleIconButton";
12
13
  import { Settings } from "lucide-react";
14
+ import { AgentCostDisplay } from "./AgentCostDisplay";
15
+ // Helper function to format message content
16
+ function formatMessageContent(content) {
17
+ return (content
18
+ ?.trim()
19
+ ?.replaceAll("\n", "<br>")
20
+ ?.replace(/\*\*(.*?)\*\*/g, "<b>$1</b>") // Bold markdown
21
+ ?.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank" class="text-blue-500" rel="noopener noreferrer">$1</a>') || "" // Links
22
+ );
23
+ }
13
24
  export function AiTerminal({ closeButton, createAiContext, defaultProfile, options, onAgentNameUpdate, }) {
14
25
  const editContext = useEditContext();
15
26
  const [showPredefined, setShowPredefined] = useState(false);
@@ -22,7 +33,7 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
22
33
  const [profiles, setProfiles] = useState([]);
23
34
  const [activeProfile, setActiveProfile] = useState();
24
35
  const [initialPromptExecuted, setInitialPromptExecuted] = useState(false);
25
- const [agentId, setAgentId] = useState(() => crypto.randomUUID());
36
+ const [agentId, setAgentId] = useState(() => options?.agentId || crypto.randomUUID());
26
37
  const selection = editContext.selection;
27
38
  const terminalRef = useRef(null);
28
39
  const [responseMessages, setResponseMessages] = useState(options?.initialMessages || []);
@@ -66,10 +77,7 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
66
77
  console.log("AiTerminal: Loading initial messages", options.initialMessages);
67
78
  // Format the initial messages for display
68
79
  const formattedMessages = options.initialMessages.map((message) => {
69
- const formattedContent = message.content
70
- ?.trim()
71
- ?.replaceAll("\n", "<br>")
72
- ?.replace(/\*\*(.*?)\*\*/g, "<b>$1</b>") || "";
80
+ const formattedContent = formatMessageContent(message.content || "");
73
81
  return {
74
82
  ...message,
75
83
  content: message.content || "",
@@ -77,7 +85,6 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
77
85
  tool_calls: message.tool_calls || [],
78
86
  };
79
87
  });
80
- console.log("AiTerminal: Formatted messages", formattedMessages);
81
88
  // Update the internal message states
82
89
  setMessages(formattedMessages);
83
90
  setResponseMessages(formattedMessages);
@@ -85,12 +92,19 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
85
92
  const initialResponse = {
86
93
  messages: formattedMessages,
87
94
  editOperations: [],
88
- numInputTokens: 0,
89
- numOutputTokens: 0,
90
- numCachedTokens: 0,
95
+ numInputTokens: options?.totalInputTokens || 0,
96
+ numOutputTokens: options?.totalOutputTokens || 0,
97
+ numCachedTokens: options?.totalCachedTokens || 0,
91
98
  state: "loaded",
99
+ // Include cost information from loaded agent session
100
+ totalCost: options?.totalCost,
101
+ totalInputTokenCost: options?.totalInputTokenCost,
102
+ totalOutputTokenCost: options?.totalOutputTokenCost,
103
+ totalCachedTokenCost: options?.totalCachedTokenCost,
104
+ totalInputTokens: options?.totalInputTokens,
105
+ totalOutputTokens: options?.totalOutputTokens,
106
+ totalCachedTokens: options?.totalCachedTokens,
92
107
  };
93
- console.log("AiTerminal: Setting response", initialResponse);
94
108
  setResponse(initialResponse);
95
109
  // Create individual Terminal messages for each conversation message
96
110
  const terminalMessages = [];
@@ -165,10 +179,7 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
165
179
  // Replace the conversation history with the authoritative response from AI
166
180
  if (updatedMessages && Array.isArray(updatedMessages)) {
167
181
  const formattedMessages = updatedMessages.map((message) => {
168
- const formattedContent = message.content
169
- ?.trim()
170
- ?.replaceAll("\n", "<br>")
171
- ?.replace(/\*\*(.*?)\*\*/g, "<b>$1</b>") || "";
182
+ const formattedContent = formatMessageContent(message.content || "");
172
183
  return {
173
184
  ...message,
174
185
  content: message.content || "",
@@ -195,7 +206,6 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
195
206
  tool_calls: [], // Add empty toolCalls array
196
207
  };
197
208
  const context = createAiContext({ editContext });
198
- let lastOpIndex = 0;
199
209
  const selectedText = editContext?.selectedRange?.text || null;
200
210
  if (!activeProfile || !model)
201
211
  return;
@@ -217,36 +227,337 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
217
227
  // Update local state to include the new user message for UI display
218
228
  setMessages((prevMessages) => [...prevMessages, userMessage]);
219
229
  setResponseMessages((prevMessages) => [...prevMessages, userMessage]);
220
- const response = await executePrompt(messages, context, {
221
- profileId: activeProfile.id,
222
- selection,
223
- selectedText,
224
- model,
225
- sessionId: editContext.sessionId,
226
- agentId,
227
- addSelectedComponents: true,
228
- }, undefined, (response) => {
229
- setResponse(response);
230
- handleResponse(response, callback, false);
231
- });
232
- if (response) {
233
- handleResponse(response, callback, true);
234
- // Handle agent name update
235
- if (response.agentName && onAgentNameUpdate) {
236
- onAgentNameUpdate(response.agentName);
230
+ try {
231
+ // Step 1: Start the agent execution
232
+ const startRequest = {
233
+ agentId,
234
+ messages,
235
+ sessionId: editContext.sessionId,
236
+ profileId: activeProfile.id,
237
+ model,
238
+ itemid: context.promptData.itemid,
239
+ language: context.promptData.language,
240
+ version: context.promptData.version,
241
+ selection,
242
+ selectedText: selectedText || undefined,
243
+ allowedFunctions: context.promptData.allowedFunctions,
244
+ addContextContent: context.promptData.addContextContent,
245
+ addAllContent: context.promptData.addAllContent,
246
+ addSelectedComponents: true,
247
+ profile: activeProfile.name,
248
+ };
249
+ const startResponse = await startAgent(startRequest, context);
250
+ console.log("Agent started:", startResponse);
251
+ // Step 2: Connect to the agent stream for real-time updates
252
+ const abortController = new AbortController();
253
+ let accumulatedResponse = {
254
+ messages: [...messages],
255
+ editOperations: [],
256
+ numInputTokens: 0,
257
+ numOutputTokens: 0,
258
+ numCachedTokens: 0,
259
+ state: "running",
260
+ };
261
+ let completionProcessed = false;
262
+ try {
263
+ console.log("Connecting to agent stream");
264
+ await connectToAgentStream(agentId, context, (streamMessage) => {
265
+ // console.log(
266
+ // "Stream message:",
267
+ // streamMessage,
268
+ // new Date().toISOString(),
269
+ // );
270
+ // Message types are now normalized in agentService.ts
271
+ switch (streamMessage.type) {
272
+ case AgentStreamMessageType.StatusUpdate:
273
+ //console.log("Status update:", streamMessage.data);
274
+ break;
275
+ case AgentStreamMessageType.ContentChunk:
276
+ if (streamMessage.data) {
277
+ // Handle incremental content updates
278
+ if (streamMessage.data.isIncremental &&
279
+ streamMessage.data.deltaContent) {
280
+ // Find the last assistant message to append delta content to
281
+ const updatedMessages = [
282
+ ...(accumulatedResponse.messages || []),
283
+ ];
284
+ let lastAssistantMessage = null;
285
+ let lastAssistantIndex = -1;
286
+ // Find the last assistant message
287
+ for (let i = updatedMessages.length - 1; i >= 0; i--) {
288
+ if (updatedMessages[i].role === "assistant") {
289
+ lastAssistantMessage = updatedMessages[i];
290
+ lastAssistantIndex = i;
291
+ break;
292
+ }
293
+ }
294
+ // If no assistant message exists, or the last one has tool calls, create a new one
295
+ if (!lastAssistantMessage ||
296
+ (lastAssistantMessage.tool_calls &&
297
+ lastAssistantMessage.tool_calls.length > 0)) {
298
+ lastAssistantMessage = {
299
+ id: crypto.randomUUID(),
300
+ role: "assistant",
301
+ name: "assistant",
302
+ content: "",
303
+ tool_calls: [],
304
+ };
305
+ updatedMessages.push(lastAssistantMessage);
306
+ lastAssistantIndex = updatedMessages.length - 1;
307
+ }
308
+ // Append the delta content to build up the full message
309
+ const currentContent = lastAssistantMessage.content || "";
310
+ const newContent = currentContent + streamMessage.data.deltaContent;
311
+ // Update the message with accumulated content
312
+ updatedMessages[lastAssistantIndex] = {
313
+ ...lastAssistantMessage,
314
+ content: newContent,
315
+ };
316
+ // Update accumulated response with incremental content
317
+ accumulatedResponse = {
318
+ ...accumulatedResponse,
319
+ ...streamMessage.data,
320
+ messages: updatedMessages,
321
+ editOperations: streamMessage.data.editOperations ||
322
+ accumulatedResponse.editOperations,
323
+ };
324
+ }
325
+ else {
326
+ // Non-incremental update - use as provided
327
+ accumulatedResponse = {
328
+ ...accumulatedResponse,
329
+ ...streamMessage.data,
330
+ editOperations: streamMessage.data.editOperations ||
331
+ accumulatedResponse.editOperations,
332
+ };
333
+ }
334
+ // Always trigger UI update for content chunks
335
+ handleResponse(accumulatedResponse, callback, false);
336
+ }
337
+ break;
338
+ case AgentStreamMessageType.ToolCall:
339
+ // console.log("Tool call received:", streamMessage.data);
340
+ if (streamMessage.data) {
341
+ // Find or create the assistant message that contains this tool call
342
+ const updatedMessages = [
343
+ ...(accumulatedResponse.messages || []),
344
+ ];
345
+ let lastAssistantMessage = null;
346
+ let lastAssistantIndex = -1;
347
+ // Find the last assistant message
348
+ for (let i = updatedMessages.length - 1; i >= 0; i--) {
349
+ if (updatedMessages[i].role === "assistant") {
350
+ lastAssistantMessage = updatedMessages[i];
351
+ lastAssistantIndex = i;
352
+ break;
353
+ }
354
+ }
355
+ // If no assistant message exists, create one
356
+ if (!lastAssistantMessage) {
357
+ lastAssistantMessage = {
358
+ id: crypto.randomUUID(),
359
+ role: "assistant",
360
+ name: "assistant",
361
+ content: "",
362
+ tool_calls: [],
363
+ };
364
+ updatedMessages.push(lastAssistantMessage);
365
+ lastAssistantIndex = updatedMessages.length - 1;
366
+ }
367
+ // Add or update the tool call
368
+ const toolCall = {
369
+ id: streamMessage.data.id,
370
+ displayName: streamMessage.data.displayName,
371
+ function: {
372
+ name: streamMessage.data.function?.name ||
373
+ streamMessage.data.name,
374
+ arguments: streamMessage.data.function?.arguments ||
375
+ streamMessage.data.arguments,
376
+ },
377
+ };
378
+ // Update or add the tool call to the assistant message
379
+ const existingToolCalls = lastAssistantMessage.tool_calls || [];
380
+ const existingIndex = existingToolCalls.findIndex((tc) => tc.id === toolCall.id);
381
+ let updatedToolCalls;
382
+ if (existingIndex >= 0) {
383
+ // Update existing tool call
384
+ updatedToolCalls = [...existingToolCalls];
385
+ updatedToolCalls[existingIndex] = toolCall;
386
+ }
387
+ else {
388
+ // Add new tool call
389
+ updatedToolCalls = [...existingToolCalls, toolCall];
390
+ }
391
+ // Update the assistant message with the tool call
392
+ updatedMessages[lastAssistantIndex] = {
393
+ ...lastAssistantMessage,
394
+ tool_calls: updatedToolCalls,
395
+ };
396
+ // Update accumulated response
397
+ accumulatedResponse = {
398
+ ...accumulatedResponse,
399
+ messages: updatedMessages,
400
+ };
401
+ // Trigger UI update to show the tool call
402
+ handleResponse(accumulatedResponse, callback, false);
403
+ }
404
+ break;
405
+ case AgentStreamMessageType.ToolResult:
406
+ console.log("Tool result received:", streamMessage.data);
407
+ if (streamMessage.data) {
408
+ // Find the assistant message and tool call to update with the result
409
+ const updatedMessages = [
410
+ ...(accumulatedResponse.messages || []),
411
+ ];
412
+ // Find the assistant message with the matching tool call ID
413
+ for (let i = updatedMessages.length - 1; i >= 0; i--) {
414
+ if (updatedMessages[i].role === "assistant" &&
415
+ updatedMessages[i].tool_calls) {
416
+ const toolCalls = updatedMessages[i].tool_calls || [];
417
+ const toolCallIndex = toolCalls.findIndex((tc) => tc.id === streamMessage.data.toolCallId);
418
+ if (toolCallIndex >= 0) {
419
+ // Update the tool call with the result
420
+ const updatedToolCalls = [...toolCalls];
421
+ updatedToolCalls[toolCallIndex] = {
422
+ ...updatedToolCalls[toolCallIndex],
423
+ function: {
424
+ ...updatedToolCalls[toolCallIndex].function,
425
+ result: streamMessage.data.result,
426
+ },
427
+ };
428
+ // Update the message
429
+ updatedMessages[i] = {
430
+ ...updatedMessages[i],
431
+ tool_calls: updatedToolCalls,
432
+ };
433
+ break;
434
+ }
435
+ }
436
+ }
437
+ // Update accumulated response
438
+ accumulatedResponse = {
439
+ ...accumulatedResponse,
440
+ messages: updatedMessages,
441
+ };
442
+ // Trigger UI update to show the tool result
443
+ handleResponse(accumulatedResponse, callback, false);
444
+ }
445
+ break;
446
+ case AgentStreamMessageType.Completed:
447
+ if (streamMessage.data) {
448
+ // Final completion data
449
+ const finalResponse = {
450
+ messages: streamMessage.data.messages ||
451
+ accumulatedResponse.messages,
452
+ editOperations: streamMessage.data.editOperations ||
453
+ accumulatedResponse.editOperations,
454
+ numInputTokens: streamMessage.data.tokenUsage?.inputTokens ||
455
+ accumulatedResponse.numInputTokens,
456
+ numOutputTokens: streamMessage.data.tokenUsage?.outputTokens ||
457
+ accumulatedResponse.numOutputTokens,
458
+ numCachedTokens: streamMessage.data.tokenUsage?.cachedTokens ||
459
+ accumulatedResponse.numCachedTokens,
460
+ state: "completed",
461
+ agentName: streamMessage.data.agentName,
462
+ // Add cost fields from backend (try both tokenUsage object and direct properties)
463
+ totalCost: streamMessage.data.totalCost ||
464
+ streamMessage.data.tokenUsage?.totalCost,
465
+ totalInputTokenCost: streamMessage.data.totalInputTokenCost ||
466
+ streamMessage.data.tokenUsage?.inputTokenCost,
467
+ totalOutputTokenCost: streamMessage.data.totalOutputTokenCost ||
468
+ streamMessage.data.tokenUsage?.outputTokenCost,
469
+ totalCachedTokenCost: streamMessage.data.totalCachedTokenCost ||
470
+ streamMessage.data.tokenUsage?.cachedTokenCost,
471
+ totalInputTokens: streamMessage.data.totalInputTokens ||
472
+ streamMessage.data.tokenUsage?.inputTokens,
473
+ totalOutputTokens: streamMessage.data.totalOutputTokens ||
474
+ streamMessage.data.tokenUsage?.outputTokens,
475
+ totalCachedTokens: streamMessage.data.totalCachedTokens ||
476
+ streamMessage.data.tokenUsage?.cachedTokens,
477
+ };
478
+ completionProcessed = true;
479
+ setResponse(finalResponse);
480
+ // On completion, just update the internal state and call the final callback
481
+ // Don't call handleResponse again as it would duplicate the message
482
+ // The Terminal component will clear the streaming response and add it to the message history
483
+ const formattedMessages = (finalResponse.messages || []).map((message) => {
484
+ const formattedContent = formatMessageContent(message.content || "");
485
+ return {
486
+ ...message,
487
+ content: message.content || "",
488
+ formattedContent: formattedContent,
489
+ tool_calls: message.tool_calls || [],
490
+ };
491
+ });
492
+ // Update internal state without triggering a new render via handleResponse
493
+ setMessages([...formattedMessages]);
494
+ setResponseMessages([...formattedMessages]);
495
+ // Only call the terminal callback to mark completion (this will add to history)
496
+ callback(_jsx(AiResponseMessage, { messages: formattedMessages, editOperations: finalResponse.editOperations, finished: true }), true);
497
+ // Handle agent name update
498
+ if (finalResponse.agentName && onAgentNameUpdate) {
499
+ onAgentNameUpdate(finalResponse.agentName);
500
+ }
501
+ if (context.callback)
502
+ context.callback(finalResponse);
503
+ //editContext?.requestRefresh("immediate");
504
+ }
505
+ break;
506
+ case AgentStreamMessageType.Error:
507
+ console.error("Agent execution error:", streamMessage.error);
508
+ const errorResponse = {
509
+ ...accumulatedResponse,
510
+ state: "error",
511
+ error: streamMessage.error,
512
+ };
513
+ setResponse(errorResponse);
514
+ handleResponse(errorResponse, callback, true);
515
+ break;
516
+ default:
517
+ console.log("Unhandled stream message type:", streamMessage.type);
518
+ break;
519
+ }
520
+ }, abortController.signal);
521
+ // If we reach here, the stream ended without a Completed message
522
+ if (!completionProcessed) {
523
+ // console.log("Stream ended without Completed message, cleaning up");
524
+ const finalResponse = {
525
+ ...accumulatedResponse,
526
+ state: "completed",
527
+ };
528
+ setResponse(finalResponse);
529
+ handleResponse(finalResponse, callback, true);
530
+ }
531
+ }
532
+ catch (streamError) {
533
+ console.error("Stream connection error:", streamError);
534
+ const errorMessage = streamError instanceof Error
535
+ ? streamError.message
536
+ : "Unknown stream error";
537
+ const errorResponse = {
538
+ ...accumulatedResponse,
539
+ state: "error",
540
+ error: errorMessage,
541
+ };
542
+ setResponse(errorResponse);
543
+ handleResponse(errorResponse, callback, true);
237
544
  }
238
- if (context.callback)
239
- context.callback(response);
240
- editContext?.requestRefresh("immediate");
241
545
  }
242
- // if (response?.responseText)
243
- // newMessages.push({
244
- // content: response.responseText,
245
- // role: "assistant",
246
- // name: "assistant",
247
- // });
248
- setResponse(response ? response : undefined);
249
- // setMessages(newMessages);
546
+ catch (error) {
547
+ console.error("Error starting agent:", error);
548
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
549
+ const errorResponse = {
550
+ messages: [...messages],
551
+ editOperations: [],
552
+ numInputTokens: 0,
553
+ numOutputTokens: 0,
554
+ numCachedTokens: 0,
555
+ state: "error",
556
+ error: errorMessage,
557
+ };
558
+ setResponse(errorResponse);
559
+ handleResponse(errorResponse, callback, true);
560
+ }
250
561
  }
251
562
  useEffect(() => {
252
563
  TerminalService.on("command", commandHandler);
@@ -261,9 +572,29 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
261
572
  setInitialTerminalMessages(undefined);
262
573
  // Generate a new agentId when clearing the terminal to start fresh
263
574
  setAgentId(crypto.randomUUID());
264
- }, initialMessages: initialTerminalMessages, infobar: response?.numInputTokens && response?.numInputTokens > 0 ? (_jsxs("div", { className: "text-right text-gray-400", style: { fontSize: "10px" }, children: ["Tokens in: ", response?.numInputTokens?.toLocaleString(), " out:", " ", response?.numOutputTokens?.toLocaleString(), " ", response?.numCachedTokens
265
- ? `cached: ${response?.numCachedTokens?.toLocaleString()} `
266
- : "", response?.state] })) : null, prompt: prompt, setPrompt: setPrompt, statusbar: _jsxs("div", { className: "flex flex-1 items-center justify-between gap-1", children: [_jsxs("a", { className: "ml-1 flex cursor-pointer items-center gap-1 text-xs", onClick: () => {
575
+ }, initialMessages: initialTerminalMessages, infobar: _jsx(AgentCostDisplay, { response: response
576
+ ? {
577
+ numInputTokens: response.numInputTokens,
578
+ numOutputTokens: response.numOutputTokens,
579
+ numCachedTokens: response.numCachedTokens,
580
+ totalCost: response.totalCost,
581
+ inputCost: response.totalInputTokenCost,
582
+ outputCost: response.totalOutputTokenCost,
583
+ cachedCost: response.totalCachedTokenCost,
584
+ }
585
+ : null, totalTokens: response
586
+ ? {
587
+ input: response.totalInputTokens || response.numInputTokens,
588
+ output: response.totalOutputTokens ||
589
+ response.numOutputTokens,
590
+ cached: response.totalCachedTokens ||
591
+ response.numCachedTokens,
592
+ totalCost: response.totalCost || 0,
593
+ inputCost: response.totalInputTokenCost || 0,
594
+ outputCost: response.totalOutputTokenCost || 0,
595
+ cachedCost: response.totalCachedTokenCost || 0,
596
+ }
597
+ : undefined }), prompt: prompt, setPrompt: setPrompt, statusbar: _jsxs("div", { className: "flex flex-1 items-center justify-between gap-1", children: [_jsxs("a", { className: "ml-1 flex cursor-pointer items-center gap-1 text-xs", onClick: () => {
267
598
  setShowPredefined(!showPredefined);
268
599
  }, children: [_jsx(WizardIcon, { className: "h-5 w-5" }), "Predefined prompts"] }), editContext.selection?.length > 0 && (_jsxs("div", { className: "mr-2 flex items-center text-xs text-red-400", children: [editContext.selection.length, " items selected", _jsx(SimpleIconButton, { icon: "pi pi-times", label: "Clear selection", onClick: () => {
269
600
  editContext.select([]);
@@ -271,7 +602,7 @@ export function AiTerminal({ closeButton, createAiContext, defaultProfile, optio
271
602
  activeProfile.prompts.map((p, index) => (_jsx("div", { className: "mb-1 cursor-pointer rounded-lg border border-gray-200 p-1.5 text-xs text-gray-700", onClick: () => {
272
603
  setPrompt(p.prompt);
273
604
  setShowPredefined(false);
274
- }, children: p.title }, index))) }))] }), toolbar: _jsxs("div", { className: "flex items-stretch gap-1", children: [_jsxs("div", { className: "relative", ref: settingsRef, children: [_jsx(SimpleIconButton, { icon: _jsx(Settings, { size: 16, strokeWidth: 1 }), label: "Settings", onClick: () => setShowSettings(!showSettings) }), showSettings && (_jsxs("div", { className: "absolute top-8 right-0 z-50 flex flex-col gap-2 rounded-lg border border-gray-200 bg-white p-3 shadow-lg", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { className: "text-xs font-medium text-gray-700", children: "Profile" }), _jsx(Dropdown, { className: "text-sm", value: activeProfile, onChange: (e) => setActiveProfile(e.value), optionLabel: "name", options: profiles })] }), activeProfile && (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { className: "text-xs font-medium text-gray-700", children: "Model" }), _jsx(Dropdown, { className: "text-sm", value: model, onChange: (e) => setModel(e.value), options: activeProfile.models })] }))] }))] }), closeButton] }), commandHandler: (v, callback) => {
605
+ }, children: p.title }, index))) }))] }), toolbar: _jsxs("div", { className: "flex items-stretch gap-1", children: [_jsxs("div", { className: "relative", ref: settingsRef, children: [_jsx(SimpleIconButton, { icon: _jsx(Settings, { size: 16, strokeWidth: 1 }), label: "Settings", onClick: () => setShowSettings(!showSettings) }), showSettings && (_jsxs("div", { className: "absolute top-8 right-0 z-50 flex flex-col gap-2 rounded-lg border border-gray-200 bg-white p-3 shadow-lg", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { className: "text-xs font-medium text-gray-700", children: "Profile" }), _jsx(Dropdown, { className: "text-sm", value: activeProfile, onChange: (e) => setActiveProfile(e.value), optionLabel: "name", options: profiles })] }), activeProfile && (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { className: "text-xs font-medium text-gray-700", children: "Model" }), _jsx(Dropdown, { className: "text-sm", value: model, onChange: (e) => setModel(e.value), options: activeProfile.models, optionLabel: "name", optionValue: "id" })] }))] }))] }), closeButton] }), commandHandler: (v, callback) => {
275
606
  commandHandler(v, callback);
276
607
  } }) }), activeProfile?.errorMessage && (_jsx("div", { className: "absolute inset-0 grid items-center justify-center p-2 text-sm text-red-500", children: activeProfile?.errorMessage })), !model && (_jsx("div", { className: "absolute inset-0 grid items-center justify-center text-sm text-gray-400", children: !activeProfile ? "No profile selected" : "No model selected" }))] }) }));
277
608
  }