@alpaca-editor/core 1.0.4037 → 1.0.4039

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.
@@ -29,15 +29,18 @@ export async function startAgent(request, context) {
29
29
  * Connects to an agent's real-time stream using Server-Sent Events
30
30
  */
31
31
  export async function connectToAgentStream(agentId, context, onMessage, signal) {
32
+ console.log("RECONNECT: Starting connectToAgentStream for agent:", agentId);
32
33
  // Add cache-busting timestamp to prevent browser connection reuse
33
34
  const timestamp = Date.now();
34
35
  const streamUrl = AGENT_BASE_URL + "/stream?agentId=" + agentId + "&t=" + timestamp;
36
+ console.log("RECONNECT: Stream URL:", streamUrl);
35
37
  // Retry logic to handle potential race conditions
36
38
  let retryCount = 0;
37
39
  const maxRetries = 3;
38
40
  const retryDelay = 500; // 500ms
39
41
  while (retryCount <= maxRetries) {
40
42
  try {
43
+ console.log(`RECONNECT: Attempting connection ${retryCount + 1}/${maxRetries + 1} to agent ${agentId}`);
41
44
  const response = await fetch(streamUrl, {
42
45
  headers: {
43
46
  Accept: "text/event-stream",
@@ -47,30 +50,43 @@ export async function connectToAgentStream(agentId, context, onMessage, signal)
47
50
  cache: "no-store",
48
51
  signal,
49
52
  });
53
+ console.log(`RECONNECT: Fetch response for agent ${agentId}:`, {
54
+ status: response.status,
55
+ statusText: response.statusText,
56
+ ok: response.ok,
57
+ headers: Object.fromEntries(response.headers.entries()),
58
+ });
50
59
  if (response.ok) {
51
60
  // Success - proceed with stream processing
61
+ console.log(`RECONNECT: Successfully connected to stream for agent ${agentId}, starting to process events`);
52
62
  await processEventStream(response, onMessage);
63
+ console.log(`RECONNECT: Event stream processing completed for agent ${agentId}`);
53
64
  return;
54
65
  }
55
66
  // If 404 and we haven't maxed out retries, wait and retry
56
67
  if (response.status === 404 && retryCount < maxRetries) {
57
68
  retryCount++;
58
- console.warn(`Agent stream not ready (404), retrying in ${retryDelay}ms... (${retryCount}/${maxRetries})`);
69
+ console.warn(`RECONNECT: Agent stream not ready (404), retrying in ${retryDelay}ms... (${retryCount}/${maxRetries}) for agent ${agentId}`);
59
70
  await new Promise((resolve) => setTimeout(resolve, retryDelay));
60
71
  continue;
61
72
  }
62
73
  // For other errors or max retries reached, throw
63
- throw new Error(`Failed to connect to agent stream: ${response.status} ${response.statusText}`);
74
+ const errorMessage = `Failed to connect to agent stream: ${response.status} ${response.statusText}`;
75
+ console.error(`RECONNECT: ${errorMessage} for agent ${agentId}`);
76
+ throw new Error(errorMessage);
64
77
  }
65
78
  catch (error) {
79
+ console.log(`RECONNECT: Caught error for agent ${agentId}:`, error);
66
80
  if (signal?.aborted) {
81
+ console.log(`RECONNECT: Request aborted for agent ${agentId}`);
67
82
  throw error; // Don't retry if cancelled
68
83
  }
69
84
  if (retryCount >= maxRetries) {
85
+ console.error(`RECONNECT: Max retries reached for agent ${agentId}, giving up`);
70
86
  throw error;
71
87
  }
72
88
  retryCount++;
73
- console.warn(`Error connecting to agent stream, retrying... (${retryCount}/${maxRetries})`, error);
89
+ console.warn(`RECONNECT: Error connecting to agent stream, retrying... (${retryCount}/${maxRetries}) for agent ${agentId}`, error);
74
90
  await new Promise((resolve) => setTimeout(resolve, retryDelay));
75
91
  }
76
92
  }
@@ -79,16 +95,21 @@ export async function connectToAgentStream(agentId, context, onMessage, signal)
79
95
  * Processes the event stream response
80
96
  */
81
97
  async function processEventStream(response, onMessage) {
98
+ console.log("RECONNECT: Starting to process event stream");
82
99
  const reader = response.body?.getReader();
83
100
  if (!reader) {
84
- throw new Error("Failed to get stream reader");
101
+ const error = "Failed to get stream reader";
102
+ console.error("RECONNECT:", error);
103
+ throw new Error(error);
85
104
  }
86
105
  const decoder = new TextDecoder();
87
106
  let buffer = "";
107
+ let messageCount = 0;
88
108
  try {
89
109
  while (true) {
90
110
  const { done, value } = await reader.read();
91
111
  if (done) {
112
+ console.log(`RECONNECT: Stream reader finished. Total messages processed: ${messageCount}`);
92
113
  break;
93
114
  }
94
115
  buffer += decoder.decode(value, { stream: true });
@@ -109,9 +130,16 @@ async function processEventStream(response, onMessage) {
109
130
  try {
110
131
  const data = line.slice(6); // Remove 'data: ' prefix
111
132
  if (data.trim()) {
133
+ messageCount++;
112
134
  const message = JSON.parse(data);
135
+ console.log(`RECONNECT: Processing SSE message #${messageCount}:`, {
136
+ type: message.type,
137
+ hasData: !!message.data,
138
+ error: message.error,
139
+ });
113
140
  // Normalize message type (handle both numeric and string enum values)
114
141
  if (typeof message.type === "number") {
142
+ const originalType = message.type;
115
143
  switch (message.type) {
116
144
  case 0:
117
145
  message.type = AgentStreamMessageType.StatusUpdate;
@@ -137,18 +165,19 @@ async function processEventStream(response, onMessage) {
137
165
  default:
138
166
  message.type = `Unknown_${message.type}`;
139
167
  }
168
+ console.log(`RECONNECT: Normalized message type from ${originalType} to ${message.type}`);
140
169
  }
141
170
  onMessage(message);
142
171
  // Break on completion or error
143
172
  if (message.type === AgentStreamMessageType.Completed ||
144
173
  message.type === AgentStreamMessageType.Error) {
145
- // console.log("Stream ending due to message type:", message.type);
174
+ console.log(`RECONNECT: Stream ending due to message type: ${message.type}. Total messages: ${messageCount}`);
146
175
  return;
147
176
  }
148
177
  }
149
178
  }
150
179
  catch (error) {
151
- console.error("Failed to parse SSE message:", error, line);
180
+ console.error("RECONNECT: Failed to parse SSE message:", error, line);
152
181
  // Send error message to the client to notify user
153
182
  onMessage({
154
183
  type: AgentStreamMessageType.Error,
@@ -158,11 +187,15 @@ async function processEventStream(response, onMessage) {
158
187
  });
159
188
  }
160
189
  }
190
+ else if (line.trim() && !line.startsWith(":")) {
191
+ // Log non-data, non-comment lines for debugging
192
+ console.log("RECONNECT: Unexpected SSE line format:", line);
193
+ }
161
194
  }
162
195
  }
163
196
  }
164
197
  finally {
165
- // console.log("Stream ended, releasing reader lock");
198
+ console.log(`RECONNECT: Stream ended, releasing reader lock. Final message count: ${messageCount}`);
166
199
  reader.releaseLock();
167
200
  }
168
201
  }
@@ -259,7 +292,7 @@ export async function getChatHistory(context, status, limit) {
259
292
  * Cancels a running agent execution
260
293
  */
261
294
  export async function cancelAgent(agentId, context) {
262
- const response = await fetch(AGENT_BASE_URL + "/cancelAgent", {
295
+ const response = await fetch(AGENT_BASE_URL + "/cancel", {
263
296
  method: "POST",
264
297
  headers: {
265
298
  "Content-Type": "application/json",
@@ -307,15 +340,25 @@ export async function closeAgent(agentId, context) {
307
340
  * Checks if an agent exists and returns its current state with messages
308
341
  */
309
342
  export async function checkAgentState(agentId, context) {
343
+ console.log("RECONNECT: Checking agent state for:", agentId);
310
344
  try {
311
345
  const agent = await getAgent(agentId, context);
346
+ console.log("RECONNECT: Agent found:", {
347
+ id: agent.id,
348
+ status: agent.status,
349
+ messageCount: agent.messages?.length || 0,
350
+ lastMessageDate: agent.lastMessageDate,
351
+ });
352
+ const isRunning = agent.status === 0;
353
+ console.log("RECONNECT: Agent running status:", isRunning);
312
354
  return {
313
355
  exists: true,
314
356
  agent,
315
- isRunning: agent.status === "Active",
357
+ isRunning,
316
358
  };
317
359
  }
318
360
  catch (error) {
361
+ console.log("RECONNECT: Agent not found or error fetching:", error);
319
362
  // If agent doesn't exist, return false
320
363
  return {
321
364
  exists: false,
@@ -346,6 +389,8 @@ export function convertAgentMessagesToTerminalFormat(agentMessages) {
346
389
  function: {
347
390
  name: tc.functionName,
348
391
  arguments: tc.functionArguments,
392
+ result: tc.functionResult,
393
+ error: tc.functionError,
349
394
  },
350
395
  }));
351
396
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agentService.js","sourceRoot":"","sources":["../../../src/editor/services/agentService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentService.js","sourceRoot":"","sources":["../../../src/editor/services/agentService.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const version = "1.0.4037";
2
- export declare const buildDate = "2025-08-10 09:51:50";
1
+ export declare const version = "1.0.4039";
2
+ export declare const buildDate = "2025-08-11 14:38:58";
package/dist/revision.js CHANGED
@@ -1,3 +1,3 @@
1
- export const version = "1.0.4037";
2
- export const buildDate = "2025-08-10 09:51:50";
1
+ export const version = "1.0.4039";
2
+ export const buildDate = "2025-08-11 14:38:58";
3
3
  //# sourceMappingURL=revision.js.map
package/dist/styles.css CHANGED
@@ -539,6 +539,9 @@
539
539
  .table {
540
540
  display: table;
541
541
  }
542
+ .field-sizing-content {
543
+ field-sizing: content;
544
+ }
542
545
  .aspect-\[1\.75\] {
543
546
  aspect-ratio: 1.75;
544
547
  }
@@ -760,6 +763,9 @@
760
763
  .min-h-8 {
761
764
  min-height: calc(var(--spacing) * 8);
762
765
  }
766
+ .min-h-16 {
767
+ min-height: calc(var(--spacing) * 16);
768
+ }
763
769
  .min-h-\[70px\] {
764
770
  min-height: 70px;
765
771
  }
@@ -2034,6 +2040,9 @@
2034
2040
  .pr-6 {
2035
2041
  padding-right: calc(var(--spacing) * 6);
2036
2042
  }
2043
+ .pr-7 {
2044
+ padding-right: calc(var(--spacing) * 7);
2045
+ }
2037
2046
  .pb-0 {
2038
2047
  padding-bottom: calc(var(--spacing) * 0);
2039
2048
  }
@@ -3102,11 +3111,6 @@
3102
3111
  border-color: var(--color-blue-500);
3103
3112
  }
3104
3113
  }
3105
- .focus\:border-transparent {
3106
- &:focus {
3107
- border-color: transparent;
3108
- }
3109
- }
3110
3114
  .focus\:bg-accent {
3111
3115
  &:focus {
3112
3116
  background-color: var(--accent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpaca-editor/core",
3
- "version": "1.0.4037",
3
+ "version": "1.0.4039",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+
3
+ import { cn } from "../../lib/utils";
4
+
5
+ function Textarea({ className, ...props }: React.ComponentProps<"textarea">) {
6
+ return (
7
+ <textarea
8
+ data-slot="textarea"
9
+ className={cn(
10
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
11
+ className,
12
+ )}
13
+ {...props}
14
+ />
15
+ );
16
+ }
17
+
18
+ export { Textarea };
@@ -10,6 +10,7 @@ import { InputTextarea } from "primereact/inputtextarea";
10
10
  import { classNames } from "primereact/utils";
11
11
  import { SimpleIconButton } from "./ui/SimpleIconButton";
12
12
  import { Trash2, Send } from "lucide-react";
13
+ import { TerminalService } from "primereact/terminalservice";
13
14
 
14
15
  type Message = {
15
16
  text: React.ReactNode;
@@ -83,6 +84,26 @@ export const Terminal = forwardRef<
83
84
  messageRef.current = messages;
84
85
  }, [messages]);
85
86
 
87
+ // Allow external responses via TerminalService (e.g., reconnection streaming)
88
+ useEffect(() => {
89
+ const responseHandler = (payload: any) => {
90
+ const { text, finished } = payload || {};
91
+ const isFinished =
92
+ typeof finished === "boolean" ? finished : payload?.type === "response";
93
+ if (!isFinished) setResponse(text);
94
+ else {
95
+ setResponse(undefined);
96
+ setMessages([...messageRef.current, { type: "response", text }]);
97
+ }
98
+ };
99
+ // @ts-ignore primereact TerminalService event bus
100
+ TerminalService.on("response", responseHandler);
101
+ return () => {
102
+ // @ts-ignore
103
+ TerminalService.off("response", responseHandler);
104
+ };
105
+ }, []);
106
+
86
107
  // Set initial messages if provided
87
108
  useEffect(() => {
88
109
  if (
@@ -52,6 +52,7 @@ function convertAgentMessagesToTerminalMessages(
52
52
  name: toolCall.functionName,
53
53
  arguments: toolCall.functionArguments || "",
54
54
  result: toolCall.functionResult,
55
+ error: toolCall.functionError,
55
56
  },
56
57
  })) || [],
57
58
  tool_call_id: msg.toolCallId,
@@ -101,6 +102,25 @@ export function Agents({
101
102
  loadAgentsFromBackend();
102
103
  }, []);
103
104
 
105
+ // Listen for WebSocket messages about agent changes
106
+ useEffect(() => {
107
+ if (!editContext) return;
108
+
109
+ const removeSocketListener = editContext.addSocketMessageListener(
110
+ (message) => {
111
+ if (
112
+ message.type === "agent-started" ||
113
+ message.type === "agent-updated"
114
+ ) {
115
+ // Refresh agents list when new agents are started or updated
116
+ loadAgentsFromBackend();
117
+ }
118
+ },
119
+ );
120
+
121
+ return removeSocketListener;
122
+ }, [editContext]);
123
+
104
124
  const loadAgentsFromBackend = async () => {
105
125
  try {
106
126
  setLoadingAgents(true);
@@ -8,9 +8,11 @@ import {
8
8
  PopoverTrigger,
9
9
  } from "../../components/ui/popover";
10
10
  import { Button } from "../../components/ui/button";
11
+ import { Textarea } from "../../components/ui/textarea";
11
12
  import { useEditContext } from "../client/editContext";
12
- import { AiTerminalOptions } from "./AiTerminal";
13
13
  import { Component } from "../pageModel";
14
+ import { startAgent, StartAgentRequest } from "../services/agentService";
15
+ import { createEditorAiContext } from "./editorAiContext";
14
16
 
15
17
  interface AiPromptPopoverProps {
16
18
  children: React.ReactNode;
@@ -66,35 +68,30 @@ User request: ${prompt.trim()}`;
66
68
  hiddenSystemPrompt = `Working with components: ${JSON.stringify(componentDetails, null, 2)}`;
67
69
  }
68
70
 
69
- // Switch to agents view first
70
- editContext?.switchView("agents");
71
-
72
71
  try {
73
- // Execute the prompt directly with a new agent
74
- await executePromptDirectly(finalPrompt, hiddenSystemPrompt);
72
+ await startAgentExecution(finalPrompt, hiddenSystemPrompt);
73
+ // Switch to agents view after agent has been created so it appears on initial load
74
+ editContext?.switchView("agents");
75
75
  } catch (error) {
76
- console.error("Failed to execute prompt with new agent:", error);
77
- // Fallback to the old method if the new one fails
78
- const aiOptions: AiTerminalOptions = {
79
- initialPrompt: finalPrompt,
80
- hiddenSystemPrompt,
81
- };
76
+ console.error("Failed to start agent:", error);
82
77
  }
83
78
 
84
79
  // Reset the prompt
85
80
  setPrompt("");
86
81
  };
87
82
 
88
- const executePromptDirectly = async (
83
+ const startAgentExecution = async (
89
84
  initialPrompt: string,
90
85
  hiddenSystemPrompt?: string,
91
86
  ) => {
92
87
  if (!editContext) return;
88
+ if (!editContext.currentItemDescriptor?.id) {
89
+ console.error("Cannot start agent: no current item selected");
90
+ return;
91
+ }
93
92
 
94
- // Generate a new agent ID
95
93
  const newAgentId = crypto.randomUUID();
96
94
 
97
- // Create the user message
98
95
  const userMessage = {
99
96
  id: crypto.randomUUID(),
100
97
  content: initialPrompt,
@@ -102,7 +99,6 @@ User request: ${prompt.trim()}`;
102
99
  name: "user",
103
100
  };
104
101
 
105
- // Create messages array with optional hidden system prompt
106
102
  const messages = [
107
103
  ...(hiddenSystemPrompt
108
104
  ? [
@@ -117,22 +113,23 @@ User request: ${prompt.trim()}`;
117
113
  userMessage,
118
114
  ];
119
115
 
120
- // Import the required functions
121
- const { executePrompt } = await import("../services/aiService");
122
- const { createEditorAiContext } = await import("./editorAiContext");
123
-
124
- // Create AI context
125
116
  const aiContext = createEditorAiContext({ editContext });
126
117
 
127
- // Execute the prompt with the new agent ID
128
- await executePrompt(messages, aiContext, {
129
- sessionId: editContext.sessionId,
118
+ const startRequest: StartAgentRequest = {
130
119
  agentId: newAgentId,
131
- addSelectedComponents: true,
132
- profileId: "Editor", // Default to Editor profile
133
- });
120
+ messages,
121
+ sessionId: editContext.sessionId,
122
+ profileId: "Editor",
123
+ itemid: editContext.currentItemDescriptor.id,
124
+ language: editContext.currentItemDescriptor?.language || "en",
125
+ version: editContext.currentItemDescriptor?.version || 1,
126
+ selection: components?.map((c) => c.id),
127
+ addSelectedComponents: components?.length > 0,
128
+ profile: "Editor",
129
+ };
134
130
 
135
- // The agents list will refresh automatically via websockets or periodic refresh
131
+ await startAgent(startRequest, aiContext);
132
+ // Agents view will reflect the new agent via its own refresh mechanisms
136
133
  };
137
134
 
138
135
  const handleKeyDown = (e: React.KeyboardEvent) => {
@@ -158,7 +155,7 @@ User request: ${prompt.trim()}`;
158
155
  >
159
156
  <div className="space-y-3">
160
157
  <div className="flex items-center gap-2">
161
- <Sparkles size={16} className="text-blue-500" />
158
+ <Sparkles size={16} strokeWidth={1} className="text-blue-500" />
162
159
  <h3 className="font-medium">AI Assistant</h3>
163
160
  </div>
164
161
 
@@ -172,13 +169,13 @@ User request: ${prompt.trim()}`;
172
169
  </span>
173
170
  )}
174
171
  </label>
175
- <textarea
172
+ <Textarea
176
173
  id="ai-prompt"
177
174
  value={prompt}
178
175
  onChange={(e) => setPrompt(e.target.value)}
179
176
  onKeyDown={handleKeyDown}
180
177
  placeholder="Enter your prompt here..."
181
- className="w-full resize-none rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
178
+ className="mt-2 resize-none"
182
179
  rows={3}
183
180
  autoFocus
184
181
  />
@@ -198,7 +195,7 @@ User request: ${prompt.trim()}`;
198
195
  disabled={!prompt.trim()}
199
196
  className="flex items-center gap-1"
200
197
  >
201
- <Send size={14} />
198
+ <Send size={14} strokeWidth={1} />
202
199
  Start Agent
203
200
  </Button>
204
201
  </div>
@@ -217,13 +217,22 @@ export function AiResponseMessage({
217
217
  },
218
218
  ];
219
219
 
220
- if (result) {
220
+ // Add output tab if there's a result or error
221
+ if (result || toolCall.function.error) {
222
+ const hasError = toolCall.function.error;
221
223
  tabs.push({
222
224
  id: `output-${toolCall.id}`,
223
- label: "Output",
225
+ label: hasError ? "Error" : "Output",
224
226
  content: (
225
227
  <div className="h-[250px] w-full overflow-auto p-2">
226
- <div className="text-xs">{renderJsonOrText(result || "")}</div>
228
+ {hasError ? (
229
+ <div className="rounded border-l-4 border-red-500 bg-red-50 p-3 text-xs text-red-600">
230
+ <div className="mb-1 font-medium">Tool Error:</div>
231
+ <div>{toolCall.function.error}</div>
232
+ </div>
233
+ ) : (
234
+ <div className="text-xs">{renderJsonOrText(result || "")}</div>
235
+ )}
227
236
  </div>
228
237
  ),
229
238
  });
@@ -329,8 +338,10 @@ export function AiResponseMessage({
329
338
  >
330
339
  <PopoverTrigger asChild>
331
340
  <div className="inline-flex cursor-pointer items-center gap-1 text-xs text-gray-500 hover:text-gray-700">
332
- {toolResult ? (
333
- <div className="flex items-center">
341
+ {toolResult || toolCall.function?.error ? (
342
+ <div
343
+ className={`flex items-center ${toolCall.function?.error ? "text-red-500" : ""}`}
344
+ >
334
345
  {getToolIcon(toolCall?.function?.name || "")}
335
346
  </div>
336
347
  ) : finished ? (
@@ -340,10 +351,15 @@ export function AiResponseMessage({
340
351
  ) : (
341
352
  <Spinner size="xs" />
342
353
  )}
343
- <span>
354
+ <span
355
+ className={
356
+ toolCall.function?.error ? "text-red-500" : ""
357
+ }
358
+ >
344
359
  {toolCall?.displayName ||
345
360
  toolCall?.function?.name ||
346
361
  "tool call"}
362
+ {toolCall.function?.error && " (error)"}
347
363
  </span>
348
364
  </div>
349
365
  </PopoverTrigger>