@polpo-ai/react 0.5.8 → 0.5.9

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.
@@ -1,4 +1,4 @@
1
- import type { ChatMessage, ChatCompletionChunk, AskUserPayload, MissionPreviewPayload, VaultPreviewPayload, OpenFilePayload, NavigateToPayload, OpenTabPayload, ToolCallEvent } from "@polpo-ai/sdk";
1
+ import type { ChatMessage, ChatCompletionChunk, ContentPart, AskUserPayload, MissionPreviewPayload, VaultPreviewPayload, OpenFilePayload, NavigateToPayload, OpenTabPayload, ToolCallEvent } from "@polpo-ai/sdk";
2
2
  export interface UseChatOptions {
3
3
  /** Target a specific agent for direct conversation. Omit for orchestrator mode. */
4
4
  agent?: string;
@@ -10,7 +10,11 @@ export interface UseChatOptions {
10
10
  onFinish?: (text: string) => void;
11
11
  /** Called on error. */
12
12
  onError?: (error: Error) => void;
13
- /** Called when the agent asks clarifying questions. */
13
+ /** Called after each stream update useful for scroll-to-bottom. */
14
+ onUpdate?: () => void;
15
+ /** Called when a new session is created (first message in a new chat). */
16
+ onSessionCreated?: (sessionId: string) => void;
17
+ /** Called when the agent asks clarifying questions (legacy orchestrator mode). */
14
18
  onAskUser?: (payload: AskUserPayload) => void;
15
19
  /** Called when the agent proposes a mission for review. */
16
20
  onMissionPreview?: (payload: MissionPreviewPayload) => void;
@@ -25,7 +29,7 @@ export interface UseChatOptions {
25
29
  /** Called when a tool call event is emitted. */
26
30
  onToolCall?: (toolCall: ToolCallEvent) => void;
27
31
  }
28
- export type ChatStatus = "idle" | "streaming" | "error";
32
+ export type ChatStatus = "idle" | "streaming" | "loading" | "error";
29
33
  /** A pending client-side tool call that needs a result from the client. */
30
34
  export interface PendingToolCall {
31
35
  /** Tool call ID from the LLM. */
@@ -36,10 +40,14 @@ export interface PendingToolCall {
36
40
  arguments: Record<string, unknown>;
37
41
  }
38
42
  export interface UseChatReturn {
39
- /** All messages in the current session (user + assistant). */
43
+ /**
44
+ * All messages in the current session (user + assistant).
45
+ * During streaming, the last assistant message updates in-place with accumulating
46
+ * content and tool calls — no separate `streamingText` needed.
47
+ */
40
48
  messages: ChatMessage[];
41
49
  /** Send a message (text or multimodal content parts). Streams the response automatically. */
42
- sendMessage: (content: string | import("@polpo-ai/sdk").ContentPart[]) => Promise<void>;
50
+ sendMessage: (content: string | ContentPart[]) => Promise<void>;
43
51
  /** Send a tool result back to the server. Used for client-side tools (e.g. ask_user_question). */
44
52
  sendToolResult: (toolCallId: string, toolName: string, result: string) => Promise<void>;
45
53
  /** Current session ID. `null` until the first response from the server. */
@@ -54,10 +62,6 @@ export interface UseChatReturn {
54
62
  error: Error | null;
55
63
  /** Whether a response is currently streaming. */
56
64
  isStreaming: boolean;
57
- /** The text being streamed for the current assistant response. */
58
- streamingText: string;
59
- /** Active tool calls during the current response. */
60
- activeToolCalls: ToolCallEvent[];
61
65
  /** Client-side tool call awaiting a result (e.g. ask_user_question). null when none pending. */
62
66
  pendingToolCall: PendingToolCall | null;
63
67
  /** Abort the current streaming response. */
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EAEnB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2GAA2G;IAC3G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uBAAuB;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5D,oDAAoD;IACpD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACxD,kDAAkD;IAClD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,iDAAiD;IACjD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,gDAAgD;IAChD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;AAExD,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,6FAA6F;IAC7F,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,eAAe,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,kGAAkG;IAClG,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4FAA4F;IAC5F,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,2DAA2D;IAC3D,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,sBAAsB;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,iDAAiD;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,gGAAgG;IAChG,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAID,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAgUnE"}
1
+ {"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { useCallback, useRef, useState } from "react";
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
2
  import { usePolpoContext } from "../provider/polpo-context.js";
3
3
  import { ChatCompletionStream } from "@polpo-ai/sdk";
4
4
  // ── Hook ─────────────────────────────────────────────────
@@ -6,19 +6,39 @@ export function useChat(options = {}) {
6
6
  const { client } = usePolpoContext();
7
7
  const [messages, setMessages] = useState([]);
8
8
  const [sessionId, setSessionIdState] = useState(options.sessionId ?? null);
9
- const [status, setStatus] = useState("idle");
9
+ const [status, setStatus] = useState(options.sessionId ? "loading" : "idle");
10
10
  const [error, setError] = useState(null);
11
- const [streamingText, setStreamingText] = useState("");
12
- const [activeToolCalls, setActiveToolCalls] = useState([]);
13
11
  const [pendingToolCall, setPendingToolCall] = useState(null);
14
12
  const streamRef = useRef(null);
13
+ const isStreamingRef = useRef(false);
15
14
  const sessionIdRef = useRef(options.sessionId ?? null);
16
- /** Track the last assistant message content for tool call context. */
17
- const lastAssistantTextRef = useRef("");
15
+ const messagesRef = useRef(messages);
16
+ messagesRef.current = messages;
17
+ const optionsRef = useRef(options);
18
+ optionsRef.current = options;
19
+ // ── Auto-load session messages on mount ──
20
+ const loadedRef = useRef(false);
21
+ useEffect(() => {
22
+ if (!options.sessionId || loadedRef.current)
23
+ return;
24
+ loadedRef.current = true;
25
+ client.getSessionMessages(options.sessionId)
26
+ .then((data) => {
27
+ setMessages(data.messages);
28
+ setStatus("idle");
29
+ requestAnimationFrame(() => optionsRef.current.onUpdate?.());
30
+ })
31
+ .catch(() => {
32
+ setMessages([]);
33
+ setStatus("idle");
34
+ });
35
+ }, [options.sessionId, client]);
36
+ // ── Set session ID (manual) ──
18
37
  const setSessionId = useCallback(async (id) => {
19
38
  setSessionIdState(id);
20
39
  sessionIdRef.current = id;
21
40
  if (id) {
41
+ setStatus("loading");
22
42
  try {
23
43
  const data = await client.getSessionMessages(id);
24
44
  setMessages(data.messages);
@@ -26,14 +46,15 @@ export function useChat(options = {}) {
26
46
  catch {
27
47
  setMessages([]);
28
48
  }
49
+ setStatus("idle");
50
+ requestAnimationFrame(() => optionsRef.current.onUpdate?.());
29
51
  }
30
52
  else {
31
53
  setMessages([]);
54
+ setStatus("idle");
32
55
  }
33
- setStatus("idle");
34
56
  setError(null);
35
- setStreamingText("");
36
- setActiveToolCalls([]);
57
+ setPendingToolCall(null);
37
58
  }, [client]);
38
59
  const newSession = useCallback(() => {
39
60
  streamRef.current?.abort();
@@ -42,240 +63,165 @@ export function useChat(options = {}) {
42
63
  setMessages([]);
43
64
  setStatus("idle");
44
65
  setError(null);
45
- setStreamingText("");
46
- setActiveToolCalls([]);
66
+ setPendingToolCall(null);
67
+ isStreamingRef.current = false;
47
68
  }, []);
48
69
  const abort = useCallback(() => {
49
70
  streamRef.current?.abort();
50
71
  }, []);
72
+ // ── Shared streaming logic ──
73
+ const streamResponse = useCallback(async (historyMessages) => {
74
+ const stream = client.chatCompletionsStream({
75
+ messages: historyMessages,
76
+ sessionId: sessionIdRef.current ?? undefined,
77
+ agent: optionsRef.current.agent,
78
+ });
79
+ streamRef.current = stream;
80
+ // Add empty assistant message that will be updated in-place
81
+ const assistantId = `msg-${Date.now()}`;
82
+ setMessages((prev) => [
83
+ ...prev,
84
+ { id: assistantId, role: "assistant", content: "", ts: new Date().toISOString() },
85
+ ]);
86
+ let fullText = "";
87
+ const toolCalls = new Map();
88
+ for await (const chunk of stream) {
89
+ // Capture session ID
90
+ if (stream.sessionId && !sessionIdRef.current) {
91
+ sessionIdRef.current = stream.sessionId;
92
+ setSessionIdState(stream.sessionId);
93
+ optionsRef.current.onSessionCreated?.(stream.sessionId);
94
+ }
95
+ const choice = chunk.choices[0];
96
+ if (!choice)
97
+ continue;
98
+ let updated = false;
99
+ // Text content
100
+ if (choice.delta.content) {
101
+ fullText += choice.delta.content;
102
+ updated = true;
103
+ }
104
+ // Tool call events (server-side tool execution)
105
+ if (choice.tool_call) {
106
+ toolCalls.set(choice.tool_call.id, choice.tool_call);
107
+ updated = true;
108
+ optionsRef.current.onToolCall?.(choice.tool_call);
109
+ }
110
+ // Update assistant message in-place
111
+ if (updated) {
112
+ const content = fullText;
113
+ const tc = toolCalls.size > 0 ? Array.from(toolCalls.values()) : undefined;
114
+ setMessages((prev) => [
115
+ ...prev.slice(0, -1),
116
+ { id: assistantId, role: "assistant", content, ts: new Date().toISOString(), toolCalls: tc },
117
+ ]);
118
+ optionsRef.current.onUpdate?.();
119
+ }
120
+ // Client-side tool calls (finish_reason: "tool_calls")
121
+ if (choice.finish_reason === "tool_calls" && choice.delta.tool_calls?.length) {
122
+ const tc = choice.delta.tool_calls[0];
123
+ let args = {};
124
+ try {
125
+ args = JSON.parse(tc.function.arguments);
126
+ }
127
+ catch { /* best effort */ }
128
+ setPendingToolCall({
129
+ toolCallId: tc.id,
130
+ toolName: tc.function.name,
131
+ arguments: args,
132
+ });
133
+ }
134
+ // Legacy special finish reasons
135
+ if (choice.finish_reason === "ask_user" && choice.ask_user)
136
+ optionsRef.current.onAskUser?.(choice.ask_user);
137
+ if (choice.finish_reason === "mission_preview" && choice.mission_preview)
138
+ optionsRef.current.onMissionPreview?.(choice.mission_preview);
139
+ if (choice.finish_reason === "vault_preview" && choice.vault_preview)
140
+ optionsRef.current.onVaultPreview?.(choice.vault_preview);
141
+ if (choice.finish_reason === "open_file" && choice.open_file)
142
+ optionsRef.current.onOpenFile?.(choice.open_file);
143
+ if (choice.finish_reason === "navigate_to" && choice.navigate_to)
144
+ optionsRef.current.onNavigateTo?.(choice.navigate_to);
145
+ if (choice.finish_reason === "open_tab" && choice.open_tab)
146
+ optionsRef.current.onOpenTab?.(choice.open_tab);
147
+ optionsRef.current.onChunk?.(chunk);
148
+ }
149
+ streamRef.current = null;
150
+ isStreamingRef.current = false;
151
+ setStatus("idle");
152
+ optionsRef.current.onFinish?.(fullText);
153
+ }, [client]);
154
+ // ── Send message ──
51
155
  const sendMessage = useCallback(async (content) => {
52
- const userText = typeof content === "string" ? content : content.filter(p => p.type === "text").map(p => p.text).join(" ");
156
+ if (isStreamingRef.current)
157
+ return;
53
158
  // Optimistic: add user message immediately
54
159
  const userMsg = {
55
160
  id: `tmp-${Date.now()}`,
56
161
  role: "user",
57
- content: userText,
162
+ content,
58
163
  ts: new Date().toISOString(),
59
164
  };
60
- setMessages((prev) => [...prev, userMsg]);
165
+ const allMessages = [...messagesRef.current, userMsg];
166
+ setMessages(allMessages);
61
167
  setStatus("streaming");
168
+ isStreamingRef.current = true;
62
169
  setError(null);
63
- setStreamingText("");
64
- setActiveToolCalls([]);
170
+ setPendingToolCall(null);
65
171
  try {
66
- // Build messages array: full history + new message
67
- const historyMessages = messages.map((m) => ({
172
+ const historyMessages = allMessages.map((m) => ({
68
173
  role: m.role,
69
174
  content: m.content,
70
175
  }));
71
- historyMessages.push({
72
- role: "user",
73
- content: typeof content === "string" ? content : content,
74
- });
75
- const stream = client.chatCompletionsStream({
76
- messages: historyMessages,
77
- sessionId: sessionIdRef.current ?? undefined,
78
- agent: options.agent,
79
- });
80
- streamRef.current = stream;
81
- let fullText = "";
82
- for await (const chunk of stream) {
83
- // Capture session ID from the stream (set after first chunk)
84
- if (stream.sessionId && !sessionIdRef.current) {
85
- sessionIdRef.current = stream.sessionId;
86
- setSessionIdState(stream.sessionId);
87
- }
88
- const choice = chunk.choices[0];
89
- if (!choice)
90
- continue;
91
- // Text content
92
- if (choice.delta.content) {
93
- fullText += choice.delta.content;
94
- setStreamingText(fullText);
95
- }
96
- // Tool calls
97
- if (choice.tool_call) {
98
- setActiveToolCalls((prev) => {
99
- const idx = prev.findIndex((tc) => tc.id === choice.tool_call.id);
100
- if (idx >= 0) {
101
- const next = [...prev];
102
- next[idx] = choice.tool_call;
103
- return next;
104
- }
105
- return [...prev, choice.tool_call];
106
- });
107
- options.onToolCall?.(choice.tool_call);
108
- }
109
- // Standard client-side tool calls (finish_reason: "tool_calls")
110
- if (choice.finish_reason === "tool_calls" && choice.delta.tool_calls?.length) {
111
- const tc = choice.delta.tool_calls[0];
112
- let args = {};
113
- try {
114
- args = JSON.parse(tc.function.arguments);
115
- }
116
- catch { /* best effort */ }
117
- setPendingToolCall({
118
- toolCallId: tc.id,
119
- toolName: tc.function.name,
120
- arguments: args,
121
- });
122
- lastAssistantTextRef.current = fullText;
123
- }
124
- // Legacy special finish reasons (orchestrator mode)
125
- if (choice.finish_reason === "ask_user" && choice.ask_user) {
126
- options.onAskUser?.(choice.ask_user);
127
- }
128
- if (choice.finish_reason === "mission_preview" && choice.mission_preview) {
129
- options.onMissionPreview?.(choice.mission_preview);
130
- }
131
- if (choice.finish_reason === "vault_preview" && choice.vault_preview) {
132
- options.onVaultPreview?.(choice.vault_preview);
133
- }
134
- if (choice.finish_reason === "open_file" && choice.open_file) {
135
- options.onOpenFile?.(choice.open_file);
136
- }
137
- if (choice.finish_reason === "navigate_to" && choice.navigate_to) {
138
- options.onNavigateTo?.(choice.navigate_to);
139
- }
140
- if (choice.finish_reason === "open_tab" && choice.open_tab) {
141
- options.onOpenTab?.(choice.open_tab);
142
- }
143
- options.onChunk?.(chunk);
144
- }
145
- // Stream finished — add assistant message
146
- if (fullText) {
147
- const assistantMsg = {
148
- id: `msg-${Date.now()}`,
149
- role: "assistant",
150
- content: fullText,
151
- ts: new Date().toISOString(),
152
- };
153
- setMessages((prev) => [...prev, assistantMsg]);
154
- }
155
- setStreamingText("");
156
- setActiveToolCalls([]);
157
- setStatus("idle");
158
- streamRef.current = null;
159
- options.onFinish?.(fullText);
176
+ await streamResponse(historyMessages);
160
177
  }
161
178
  catch (err) {
162
179
  if (err?.name === "AbortError") {
163
- // User aborted — keep partial text as message if any
164
- const partial = streamingText;
165
- if (partial) {
166
- setMessages((prev) => [
167
- ...prev,
168
- { id: `msg-${Date.now()}`, role: "assistant", content: partial, ts: new Date().toISOString() },
169
- ]);
170
- }
171
- setStreamingText("");
172
- setActiveToolCalls([]);
180
+ // Keep partial message as-is
181
+ isStreamingRef.current = false;
173
182
  setStatus("idle");
174
183
  return;
175
184
  }
176
185
  setError(err);
177
186
  setStatus("error");
178
- options.onError?.(err);
187
+ isStreamingRef.current = false;
188
+ // Remove the empty assistant message on error
189
+ setMessages((prev) => prev[prev.length - 1]?.content === "" ? prev.slice(0, -1) : prev);
190
+ optionsRef.current.onError?.(err);
179
191
  }
180
- }, [client, messages, options, streamingText]);
192
+ }, [streamResponse]);
193
+ // ── Send tool result ──
181
194
  const sendToolResult = useCallback(async (toolCallId, toolName, result) => {
182
195
  setPendingToolCall(null);
183
196
  setStatus("streaming");
197
+ isStreamingRef.current = true;
184
198
  setError(null);
185
- setStreamingText("");
186
- setActiveToolCalls([]);
187
199
  try {
188
- // Build messages: full history + assistant message with tool_calls + tool result
189
- const historyMessages = messages.map((m) => ({
200
+ const historyMessages = messagesRef.current.map((m) => ({
190
201
  role: m.role,
191
202
  content: m.content,
192
203
  }));
193
- // Add the assistant message that triggered the tool call (with tool_calls field)
194
- if (lastAssistantTextRef.current) {
195
- historyMessages.push({
196
- role: "assistant",
197
- content: lastAssistantTextRef.current,
198
- });
199
- }
200
- // Add the tool result
204
+ // Add tool result message
201
205
  historyMessages.push({
202
206
  role: "tool",
203
207
  content: result,
204
208
  tool_call_id: toolCallId,
205
209
  name: toolName,
206
210
  });
207
- const stream = client.chatCompletionsStream({
208
- messages: historyMessages,
209
- sessionId: sessionIdRef.current ?? undefined,
210
- agent: options.agent,
211
- });
212
- streamRef.current = stream;
213
- let fullText = "";
214
- for await (const chunk of stream) {
215
- if (stream.sessionId && !sessionIdRef.current) {
216
- sessionIdRef.current = stream.sessionId;
217
- setSessionIdState(stream.sessionId);
218
- }
219
- const choice = chunk.choices[0];
220
- if (!choice)
221
- continue;
222
- if (choice.delta.content) {
223
- fullText += choice.delta.content;
224
- setStreamingText(fullText);
225
- }
226
- if (choice.tool_call) {
227
- setActiveToolCalls((prev) => {
228
- const idx = prev.findIndex((tc) => tc.id === choice.tool_call.id);
229
- if (idx >= 0) {
230
- const next = [...prev];
231
- next[idx] = choice.tool_call;
232
- return next;
233
- }
234
- return [...prev, choice.tool_call];
235
- });
236
- options.onToolCall?.(choice.tool_call);
237
- }
238
- // Handle another client-side tool call in the resumed stream
239
- if (choice.finish_reason === "tool_calls" && choice.delta.tool_calls?.length) {
240
- const tc = choice.delta.tool_calls[0];
241
- let args = {};
242
- try {
243
- args = JSON.parse(tc.function.arguments);
244
- }
245
- catch { /* best effort */ }
246
- setPendingToolCall({
247
- toolCallId: tc.id,
248
- toolName: tc.function.name,
249
- arguments: args,
250
- });
251
- lastAssistantTextRef.current = fullText;
252
- }
253
- options.onChunk?.(chunk);
254
- }
255
- if (fullText) {
256
- setMessages((prev) => [
257
- ...prev,
258
- { id: `msg-${Date.now()}`, role: "assistant", content: fullText, ts: new Date().toISOString() },
259
- ]);
260
- }
261
- setStreamingText("");
262
- setActiveToolCalls([]);
263
- setStatus("idle");
264
- streamRef.current = null;
265
- options.onFinish?.(fullText);
211
+ await streamResponse(historyMessages);
266
212
  }
267
213
  catch (err) {
268
214
  if (err?.name === "AbortError") {
269
- setStreamingText("");
270
- setActiveToolCalls([]);
215
+ isStreamingRef.current = false;
271
216
  setStatus("idle");
272
217
  return;
273
218
  }
274
219
  setError(err);
275
220
  setStatus("error");
276
- options.onError?.(err);
221
+ isStreamingRef.current = false;
222
+ optionsRef.current.onError?.(err);
277
223
  }
278
- }, [client, messages, options]);
224
+ }, [streamResponse]);
279
225
  return {
280
226
  messages,
281
227
  sendMessage,
@@ -286,8 +232,6 @@ export function useChat(options = {}) {
286
232
  status,
287
233
  error,
288
234
  isStreaming: status === "streaming",
289
- streamingText,
290
- activeToolCalls,
291
235
  pendingToolCall,
292
236
  abort,
293
237
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat.js","sourceRoot":"","sources":["../../src/hooks/use-chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-chat.js","sourceRoot":"","sources":["../../src/hooks/use-chat.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/react",
3
- "version": "0.5.8",
3
+ "version": "0.5.9",
4
4
  "description": "React SDK for OpenPolpo — hooks with real-time SSE updates, built on @polpo-ai/sdk",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "sideEffects": false,
19
19
  "dependencies": {
20
- "@polpo-ai/sdk": "0.5.8"
20
+ "@polpo-ai/sdk": "0.5.9"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "react": "^18.0.0 || ^19.0.0"