@economic/agents-react 1.1.8 → 1.1.10

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/dist/index.d.mts CHANGED
@@ -228,6 +228,18 @@ type MessageFeedback = {
228
228
  created_at: number;
229
229
  updated_at: number;
230
230
  };
231
+ type MessageFeedbackHandler = (messageId: string, rating: number, comment?: string) => Promise<void>;
232
+ type GetMessageFeedbackHandler = () => Promise<Record<string, MessageFeedback>>;
233
+ type GetChatsHandler = () => Promise<ChatSummary[]>;
234
+ type CreateChatHandler = () => Promise<string>;
235
+ type OpenChatHandler = (chatId: string) => void;
236
+ type DeleteChatHandler = (chatId: string) => Promise<void>;
237
+ interface AssistantActions {
238
+ getChats: GetChatsHandler;
239
+ createChat: CreateChatHandler;
240
+ openChat: OpenChatHandler;
241
+ deleteChat: DeleteChatHandler;
242
+ }
231
243
  //#endregion
232
244
  //#region src/useAgent.d.ts
233
245
  interface UseAgentOptions {
@@ -297,14 +309,15 @@ declare function useChat<ToolContext extends Record<string, unknown>>(options: U
297
309
  isStreaming: boolean;
298
310
  isToolContinuation: boolean;
299
311
  };
300
- submitMessageFeedback: (messageId: string, rating: number, comment?: string) => Promise<unknown>;
301
- getMessageFeedback: () => Promise<Record<string, MessageFeedback>>;
312
+ submitMessageFeedback: MessageFeedbackHandler;
313
+ getMessageFeedback: GetMessageFeedbackHandler;
302
314
  };
303
315
  //#endregion
304
316
  //#region src/useAssistant.d.ts
305
317
  interface UseAssistantOptions<ToolContext extends Record<string, unknown> = Record<string, unknown>> extends Omit<UseChatOptions<ToolContext>, "actorId" | "getInitialMessages"> {}
306
318
  declare function useAssistant<ToolContext extends Record<string, unknown>>(options: UseAssistantOptions<ToolContext>): {
307
319
  currentChatName: string | undefined;
320
+ chats: ChatSummary[];
308
321
  status: AgentConnectionStatus;
309
322
  assistant: {
310
323
  getChats: () => Promise<ChatSummary[]>;
@@ -342,9 +355,9 @@ declare function useAssistant<ToolContext extends Record<string, unknown>>(optio
342
355
  isStreaming: boolean;
343
356
  isToolContinuation: boolean;
344
357
  };
345
- submitMessageFeedback: (messageId: string, rating: number, comment?: string) => Promise<unknown>;
346
- getMessageFeedback: () => Promise<Record<string, MessageFeedback>>;
358
+ submitMessageFeedback: MessageFeedbackHandler;
359
+ getMessageFeedback: GetMessageFeedbackHandler;
347
360
  };
348
361
  };
349
362
  //#endregion
350
- export { type AgentConnectionState, type AgentConnectionStatus, type AgentConnectionType, type ChatSummary, type MessageFeedback, useAgent, useAssistant, useChat };
363
+ export { type AgentConnectionState, type AgentConnectionStatus, type AgentConnectionType, type AssistantActions, type ChatSummary, type CreateChatHandler, type DeleteChatHandler, type GetChatsHandler, type GetMessageFeedbackHandler, type MessageFeedback, type MessageFeedbackHandler, type OpenChatHandler, useAgent, useAssistant, useChat };
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { useAgent as useAgent$1 } from "agents/react";
2
- import { useEffect, useRef, useState } from "react";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
3
  import { useAgentChat } from "@cloudflare/ai-chat/react";
4
4
  //#region src/util.ts
5
5
  function getTokenArgs(authToken) {
@@ -57,16 +57,16 @@ function useChat(options) {
57
57
  chat.messages.length,
58
58
  welcomeMessage
59
59
  ]);
60
- async function submitMessageFeedback(messageId, rating, comment) {
61
- return agent.call("submitMessageFeedback", [
60
+ const submitMessageFeedback = async (messageId, rating, comment) => {
61
+ await agent.call("submitMessageFeedback", [
62
62
  messageId,
63
63
  rating,
64
64
  comment
65
65
  ]);
66
- }
67
- async function getMessageFeedback() {
66
+ };
67
+ const getMessageFeedback = async () => {
68
68
  return await agent.call("getMessageFeedback");
69
- }
69
+ };
70
70
  return {
71
71
  status,
72
72
  agent,
@@ -80,22 +80,31 @@ function useChat(options) {
80
80
  function useAssistant(options) {
81
81
  const { toolContext, welcomeMessage, ...agentOptions } = options;
82
82
  const [chatId, setChatId] = useState();
83
+ const [chats, setChats] = useState([]);
83
84
  const assistant = useAgent(agentOptions);
84
- const getChats = async () => {
85
- return (await assistant.call("getChats")).map((chat) => {
85
+ const refreshChats = useCallback(async () => {
86
+ setChats((await assistant.call("getChats")).map((chat) => {
86
87
  const c = {
87
88
  ...chat,
88
89
  name: chat.durable_object_name
89
90
  };
90
91
  delete c.durable_object_name;
91
92
  return c;
92
- });
93
+ }));
94
+ }, [assistant]);
95
+ const assistantStatus = assistant.state?.status;
96
+ useEffect(() => {
97
+ if (assistantStatus === "connected") refreshChats().catch(console.error);
98
+ }, [assistantStatus, refreshChats]);
99
+ const getChats = async () => {
100
+ await refreshChats();
101
+ return chats;
93
102
  };
94
103
  const createChat = async () => {
95
- const chatId = await assistant.call("createChat");
96
- setChatId(chatId);
97
- await getChats();
98
- return chatId;
104
+ const newChatId = await assistant.call("createChat");
105
+ setChatId(newChatId);
106
+ await refreshChats();
107
+ return newChatId;
99
108
  };
100
109
  const openChat = (chatId) => {
101
110
  setChatId(chatId);
@@ -103,7 +112,7 @@ function useAssistant(options) {
103
112
  const deleteChat = async (chatId) => {
104
113
  await assistant.call("deleteChat", [chatId]);
105
114
  setChatId(void 0);
106
- await getChats();
115
+ await refreshChats();
107
116
  };
108
117
  const isChatReady = !!chatId && assistant.state?.status === "connected";
109
118
  const chat = useChat({
@@ -119,6 +128,7 @@ function useAssistant(options) {
119
128
  });
120
129
  return {
121
130
  currentChatName: chatId,
131
+ chats,
122
132
  status: (chatId ? chat.agent.state?.status : assistant.state?.status) ?? "connecting",
123
133
  assistant: {
124
134
  getChats,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@economic/agents-react",
3
- "version": "1.1.8",
3
+ "version": "1.1.10",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"