convex-durable-agents 0.1.2 → 0.1.3

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/README.md CHANGED
@@ -169,32 +169,44 @@ export const getWeather = internalAction({
169
169
  Use the React hooks to build your chat interface:
170
170
 
171
171
  ```tsx
172
- import { useAction, useMutation } from "convex/react";
173
- import { useThread } from "convex-durable-agents/react";
172
+ import { useAgentChat, getMessageKey } from "convex-durable-agents/react";
174
173
  import { api } from "../convex/_generated/api";
175
174
 
176
175
  function ChatView({ threadId }: { threadId: string }) {
177
- const sendMessage = useMutation(api.chat.sendMessage);
178
-
179
- const { messages, status, isRunning } = useThread(
180
- api.chat.listMessagesWithStreams,
181
- api.chat.getThread,
182
- { threadId },
183
- { stream: true },
184
- );
176
+ const {
177
+ messages,
178
+ status,
179
+ isRunning,
180
+ isFailed,
181
+ isStopped,
182
+ sendMessage,
183
+ stop,
184
+ resume,
185
+ } = useAgentChat({
186
+ listMessages: api.chat.listMessagesWithStreams,
187
+ getThread: api.chat.getThread,
188
+ sendMessage: api.chat.sendMessage,
189
+ stopThread: api.chat.stopThread,
190
+ resumeThread: api.chat.resumeThread,
191
+ threadId,
192
+ });
185
193
 
186
194
  return (
187
195
  <div>
188
196
  {messages.map((msg) => (
189
- <div key={msg.key}>
190
- <strong>{msg.role}:</strong> {msg.text}
197
+ <div key={getMessageKey(msg)}>
198
+ <strong>{msg.role}:</strong> {msg.parts.map((p) => p.type === "text" ? p.text : null)}
191
199
  </div>
192
200
  ))}
193
201
 
202
+ {isRunning && <button onClick={() => stop()}>Stop</button>}
203
+ {(isFailed || isStopped) && <button onClick={() => resume()}>Resume</button>}
204
+
194
205
  <input
195
206
  onKeyPress={(e) => {
196
207
  if (e.key === "Enter" && !isRunning) {
197
- sendMessage({ threadId, prompt: e.currentTarget.value });
208
+ sendMessage(e.currentTarget.value);
209
+ e.currentTarget.value = "";
198
210
  }
199
211
  }}
200
212
  disabled={isRunning}
@@ -306,9 +318,46 @@ createAsyncTool({
306
318
 
307
319
  ### React Hooks
308
320
 
321
+ #### `useAgentChat(options)`
322
+
323
+ All-in-one hook for chat functionality that combines thread state with mutations:
324
+
325
+ ```ts
326
+ const {
327
+ messages, // UIMessage[]
328
+ thread, // ThreadDoc | null
329
+ status, // ThreadStatus
330
+ isLoading, // boolean
331
+ isRunning, // boolean
332
+ isComplete, // boolean
333
+ isFailed, // boolean
334
+ isStopped, // boolean
335
+ sendMessage, // (prompt: string) => Promise<null>
336
+ stop, // () => Promise<null>
337
+ resume, // (prompt?: string) => Promise<null>
338
+ } = useAgentChat({
339
+ listMessages: api.chat.listMessagesWithStreams,
340
+ getThread: api.chat.getThread,
341
+ sendMessage: api.chat.sendMessage,
342
+ stopThread: api.chat.stopThread,
343
+ resumeThread: api.chat.resumeThread,
344
+ threadId,
345
+ stream: true, // optional, defaults to true
346
+ });
347
+
348
+ // Send a message (threadId is automatically included)
349
+ await sendMessage("Hello!");
350
+
351
+ // Stop the agent
352
+ await stop();
353
+
354
+ // Resume after stopping or failure
355
+ await resume();
356
+ ```
357
+
309
358
  #### `useThread(messagesQuery, threadQuery, args, options?)`
310
359
 
311
- All-in-one hook for thread status and messages:
360
+ Lower-level hook for thread status and messages (use `useAgentChat` for most cases):
312
361
 
313
362
  ```ts
314
363
  const {
@@ -443,9 +492,10 @@ defineAgentApi(components.durableAgents, internal.chat.chatAgentHandler, {
443
492
  │ Your Application │
444
493
  ├─────────────────────────────────────────────────────────────┤
445
494
  │ defineAgentApi() │ React Hooks │
446
- │ - createThread │ - useThread
447
- │ - sendMessage │ - useMessages
448
- │ - stopThread │ - useSmoothText
495
+ │ - createThread │ - useAgentChat
496
+ │ - sendMessage │ - useThread
497
+ │ - stopThread │ - useMessages
498
+ │ - resumeThread │ - useSmoothText │
449
499
  ├─────────────────────────────────────────────────────────────┤
450
500
  │ Durable Agent Component │
451
501
  ├──────────────┬──────────────┬──────────────┬────────────────┤
@@ -1,3 +1,7 @@
1
+ /**
2
+ * React hooks for the durable_agent component.
3
+ */
4
+ import type { UIMessage as AIUIMessage } from "ai";
1
5
  import type { FunctionReference } from "convex/server";
2
6
  export type ThreadStatus = "streaming" | "awaiting_tool_results" | "completed" | "failed" | "stopped";
3
7
  export type ThreadDoc = {
@@ -16,16 +20,14 @@ export type MessageDoc = {
16
20
  content: string | Array<unknown>;
17
21
  };
18
22
  };
19
- export type UIMessage = {
20
- id: string;
23
+ export type ConvexUIMessageMetadata = {
21
24
  key: string;
22
25
  order: number;
23
- role: "system" | "user" | "assistant" | "tool";
24
26
  status: ThreadStatus | "success";
25
- text: string;
26
- parts: Array<unknown>;
27
27
  _creationTime: number;
28
28
  };
29
+ export type UIMessage = AIUIMessage<ConvexUIMessageMetadata>;
30
+ export type { TextUIPart, DynamicToolUIPart } from "ai";
29
31
  export type StreamArgs = {
30
32
  kind: "list";
31
33
  startOrder?: number;
@@ -167,5 +169,109 @@ export declare function useThread(messagesQuery: MessagesQuery | StreamingMessag
167
169
  isFailed: boolean;
168
170
  isStopped: boolean;
169
171
  };
170
- export {};
172
+ /**
173
+ * Extract text content from a UIMessage's parts
174
+ */
175
+ export declare function getMessageText(message: UIMessage): string;
176
+ /**
177
+ * Get the status of a message from its metadata
178
+ */
179
+ export declare function getMessageStatus(message: UIMessage): ThreadStatus | "success";
180
+ /**
181
+ * Get the key for React rendering from message metadata
182
+ */
183
+ export declare function getMessageKey(message: UIMessage): string;
184
+ /**
185
+ * Get the order of a message from its metadata
186
+ */
187
+ export declare function getMessageOrder(message: UIMessage): number;
188
+ /**
189
+ * Get the creation time of a message from its metadata
190
+ */
191
+ export declare function getMessageCreationTime(message: UIMessage): number;
192
+ type SendMessageMutation = FunctionReference<"mutation", "public", {
193
+ threadId: string;
194
+ prompt: string;
195
+ }, null>;
196
+ type StopThreadMutation = FunctionReference<"mutation", "public", {
197
+ threadId: string;
198
+ }, null>;
199
+ type ResumeThreadMutation = FunctionReference<"mutation", "public", {
200
+ threadId: string;
201
+ prompt?: string;
202
+ }, null>;
203
+ export type UseAgentChatOptions = {
204
+ /** Query to list messages with streaming support */
205
+ listMessages: StreamingMessagesQuery;
206
+ /** Query to get thread status */
207
+ getThread: ThreadQuery;
208
+ /** Mutation to send a message */
209
+ sendMessage: SendMessageMutation;
210
+ /** Mutation to stop the thread */
211
+ stopThread: StopThreadMutation;
212
+ /** Mutation to resume the thread */
213
+ resumeThread: ResumeThreadMutation;
214
+ /** The thread ID to chat with */
215
+ threadId: string;
216
+ /** Enable streaming (defaults to true) */
217
+ stream?: boolean;
218
+ /** Stream IDs to skip */
219
+ skipStreamIds?: Array<string>;
220
+ };
221
+ export type UseAgentChatReturn = {
222
+ /** Messages in the thread */
223
+ messages: UIMessage[];
224
+ /** Thread document */
225
+ thread: ThreadDoc | null | undefined;
226
+ /** Current thread status */
227
+ status: ThreadStatus | undefined;
228
+ /** Whether the thread is loading */
229
+ isLoading: boolean;
230
+ /** Whether the thread is currently running (streaming or awaiting tool results) */
231
+ isRunning: boolean;
232
+ /** Whether the thread has completed */
233
+ isComplete: boolean;
234
+ /** Whether the thread has failed */
235
+ isFailed: boolean;
236
+ /** Whether the thread has been stopped */
237
+ isStopped: boolean;
238
+ /** Send a message to the thread */
239
+ sendMessage: (prompt: string) => Promise<null>;
240
+ /** Stop the thread */
241
+ stop: () => Promise<null>;
242
+ /** Resume the thread with an optional prompt */
243
+ resume: (prompt?: string) => Promise<null>;
244
+ };
245
+ /**
246
+ * Combined hook for chat functionality with an agent thread.
247
+ *
248
+ * This hook combines `useThread` with streaming enabled and provides
249
+ * mutation functions for sending messages, stopping, and resuming the thread.
250
+ *
251
+ * @example
252
+ * ```tsx
253
+ * const { messages, status, sendMessage, stop, resume, isRunning } = useAgentChat({
254
+ * listMessages: api.chat.listMessagesWithStreams,
255
+ * getThread: api.chat.getThread,
256
+ * sendMessage: api.chat.sendMessage,
257
+ * stopThread: api.chat.stopThread,
258
+ * resumeThread: api.chat.resumeThread,
259
+ * threadId,
260
+ * });
261
+ *
262
+ * // Send a message
263
+ * await sendMessage("Hello!");
264
+ *
265
+ * // Stop the agent
266
+ * if (isRunning) {
267
+ * await stop();
268
+ * }
269
+ *
270
+ * // Resume after stopping or failure
271
+ * if (isFailed || isStopped) {
272
+ * await resume();
273
+ * }
274
+ * ```
275
+ */
276
+ export declare function useAgentChat(options: UseAgentChatOptions): UseAgentChatReturn;
171
277
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}