@economic/agents-react 1.1.3 → 1.1.5

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
@@ -217,21 +217,21 @@ type AgentConnectionState = {
217
217
  //#endregion
218
218
  //#region src/useAgent.d.ts
219
219
  interface UseAgentOptions {
220
+ enabled?: boolean;
220
221
  host: string;
221
222
  agentName: string;
222
- enabled?: boolean;
223
+ name: string;
224
+ actorId?: string;
223
225
  sub?: {
224
226
  agent: string;
225
227
  name: string;
226
228
  }[];
229
+ authToken?: string;
227
230
  onOpen?: (event: Event) => void;
228
231
  onClose?: (event: CloseEvent) => void;
229
232
  onError?: (event: ErrorEvent) => void;
230
- authToken?: string;
231
- userId?: string;
232
- id: string;
233
233
  }
234
- declare function useAgent<T extends AgentConnectionState>(options: UseAgentOptions): Omit<PartySocket, "path"> & {
234
+ declare function useAgent(options: UseAgentOptions): Omit<PartySocket, "path"> & {
235
235
  agent: string;
236
236
  name: string;
237
237
  path: ReadonlyArray<{
@@ -240,19 +240,20 @@ declare function useAgent<T extends AgentConnectionState>(options: UseAgentOptio
240
240
  }>;
241
241
  identified: boolean;
242
242
  ready: Promise<void>;
243
- state: T | undefined;
244
- setState: (state: T) => void;
245
- call: <T_1 = unknown>(method: string, args?: unknown[], options?: _$agents_client0.CallOptions | _$agents_client0.StreamOptions) => Promise<T_1>;
243
+ state: AgentConnectionState | undefined;
244
+ setState: (state: AgentConnectionState) => void;
245
+ call: <T = unknown>(method: string, args?: unknown[], options?: _$agents_client0.CallOptions | _$agents_client0.StreamOptions) => Promise<T>;
246
246
  stub: _$agents_client0.UntypedAgentStub;
247
247
  getHttpUrl: () => string;
248
248
  };
249
249
  //#endregion
250
- //#region src/useChatAgent.d.ts
250
+ //#region src/useChat.d.ts
251
251
  interface UseChatOptions<ToolContext extends Record<string, unknown>> extends UseAgentOptions {
252
+ getInitialMessages?: undefined | null;
252
253
  toolContext?: ToolContext;
253
254
  welcomeMessage?: string;
254
255
  }
255
- declare function useChatAgent<ToolContext extends Record<string, unknown>>(options: UseChatOptions<ToolContext>): {
256
+ declare function useChat<ToolContext extends Record<string, unknown>>(options: UseChatOptions<ToolContext>): {
256
257
  status: AgentConnectionStatus;
257
258
  agent: Omit<PartySocket, "path"> & {
258
259
  agent: string;
@@ -287,53 +288,57 @@ declare function useChatAgent<ToolContext extends Record<string, unknown>>(optio
287
288
  };
288
289
  //#endregion
289
290
  //#region src/useAssistant.d.ts
290
- /** Conversation summary returned by the assistant's `getConversations` RPC. */
291
- type Conversation = {
292
- durable_object_name: string;
291
+ /** Chat summary returned by the assistant's `getChats` RPC. */
292
+ type ChatSummary = {
293
+ chatId: string;
293
294
  title?: string;
294
295
  summary?: string;
295
296
  created_at: number;
296
297
  updated_at: number;
297
298
  };
298
- interface UseAssistantOptions<ToolContext extends Record<string, unknown> = Record<string, unknown>> extends Omit<UseChatOptions<ToolContext>, "id" | "userId"> {
299
- userId: string;
300
- initialChatId?: string;
301
- }
299
+ interface UseAssistantOptions<ToolContext extends Record<string, unknown> = Record<string, unknown>> extends Omit<UseChatOptions<ToolContext>, "actorId" | "getInitialMessages"> {}
302
300
  declare function useAssistant<ToolContext extends Record<string, unknown>>(options: UseAssistantOptions<ToolContext>): {
303
- chatId: string | undefined;
301
+ currentChatName: string | undefined;
304
302
  status: AgentConnectionStatus;
305
- getConversations: () => Promise<Conversation[]>;
306
- createConversation: () => Promise<string>;
307
- openConversation: (chatId: string) => void;
308
- deleteConversation: (chatId: string) => Promise<void>;
309
- agent: Omit<PartySocket, "path"> & {
310
- agent: string;
311
- name: string;
312
- path: ReadonlyArray<{
303
+ assistant: {
304
+ getChats: () => Promise<ChatSummary[]>;
305
+ createChat: () => Promise<string>;
306
+ openChat: (chatId: string) => void;
307
+ deleteChat: (chatId: string) => Promise<void>;
308
+ };
309
+ chat: {
310
+ status: AgentConnectionStatus;
311
+ agent: Omit<PartySocket, "path"> & {
313
312
  agent: string;
314
313
  name: string;
315
- }>;
316
- identified: boolean;
317
- ready: Promise<void>;
318
- state: AgentConnectionState | undefined;
319
- setState: (state: AgentConnectionState) => void;
320
- call: <T = unknown>(method: string, args?: unknown[], options?: _$agents_client0.CallOptions | _$agents_client0.StreamOptions) => Promise<T>;
321
- stub: _$agents_client0.UntypedAgentStub;
322
- getHttpUrl: () => string;
314
+ path: ReadonlyArray<{
315
+ agent: string;
316
+ name: string;
317
+ }>;
318
+ identified: boolean;
319
+ ready: Promise<void>;
320
+ state: AgentConnectionState | undefined;
321
+ setState: (state: AgentConnectionState) => void;
322
+ call: <T = unknown>(method: string, args?: unknown[], options?: _$agents_client0.CallOptions | _$agents_client0.StreamOptions) => Promise<T>;
323
+ stub: _$agents_client0.UntypedAgentStub;
324
+ getHttpUrl: () => string;
325
+ };
326
+ chat: Omit<_$_ai_sdk_react0.UseChatHelpers<_$ai.UIMessage<unknown, _$ai.UIDataTypes, _$ai.UITools>>, "addToolOutput"> & {
327
+ clearHistory: () => void;
328
+ addToolOutput: (opts: {
329
+ toolCallId: string;
330
+ toolName?: string;
331
+ output?: unknown;
332
+ state?: "output-available" | "output-error";
333
+ errorText?: string;
334
+ }) => void;
335
+ isServerStreaming: boolean;
336
+ isStreaming: boolean;
337
+ isToolContinuation: boolean;
338
+ };
339
+ rateMessage: (messageId: string, rating: number, comment?: string) => Promise<unknown>;
340
+ getMessageRatings: () => Promise<unknown>;
323
341
  };
324
- chat: (Omit<_$_ai_sdk_react0.UseChatHelpers<_$ai.UIMessage<unknown, _$ai.UIDataTypes, _$ai.UITools>>, "addToolOutput"> & {
325
- clearHistory: () => void;
326
- addToolOutput: (opts: {
327
- toolCallId: string;
328
- toolName?: string;
329
- output?: unknown;
330
- state?: "output-available" | "output-error";
331
- errorText?: string;
332
- }) => void;
333
- isServerStreaming: boolean;
334
- isStreaming: boolean;
335
- isToolContinuation: boolean;
336
- }) | undefined;
337
342
  };
338
343
  //#endregion
339
- export { AgentConnectionState, AgentConnectionStatus, AgentConnectionType, Conversation, UseAgentOptions, UseAssistantOptions, UseChatOptions, useAgent, useAssistant, useChatAgent };
344
+ export { type AgentConnectionState, type AgentConnectionStatus, type AgentConnectionType, type ChatSummary, useAgent, useAssistant, useChat };
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { useAgent as useAgent$1 } from "agents/react";
2
- import { useAgentChat } from "@cloudflare/ai-chat/react";
3
2
  import { useEffect, useRef, useState } from "react";
3
+ import { useAgentChat } from "@cloudflare/ai-chat/react";
4
4
  //#region src/util.ts
5
5
  function getTokenArgs(authToken) {
6
6
  if (!authToken) return {};
@@ -12,12 +12,12 @@ function getTokenArgs(authToken) {
12
12
  //#endregion
13
13
  //#region src/useAgent.ts
14
14
  function useAgent(options) {
15
- const { host, agentName, userId, id, enabled, sub, authToken, onError, onOpen, onClose } = options;
15
+ const { enabled, host, agentName, actorId, name, sub, authToken, onError, onOpen, onClose } = options;
16
16
  return useAgent$1({
17
17
  enabled,
18
18
  host,
19
19
  agent: agentName,
20
- name: userId ? `${userId}:${id}` : id,
20
+ name: actorId ? `${actorId}:${name}` : name,
21
21
  sub,
22
22
  onOpen,
23
23
  onClose,
@@ -26,72 +26,19 @@ function useAgent(options) {
26
26
  });
27
27
  }
28
28
  //#endregion
29
- //#region src/useAssistant.ts
30
- function useAssistant(options) {
31
- const { host, agentName, userId, authToken, toolContext, ...agentOptions } = options;
32
- const [chatId, setChatId] = useState();
33
- const assistant = useAgent({
34
- host,
35
- agentName,
36
- id: userId,
37
- authToken
38
- });
39
- const getConversations = async () => {
40
- return await assistant.call("getConversations");
41
- };
42
- const createConversation = async () => {
43
- const chatId = await assistant.call("createConversation");
44
- setChatId(chatId);
45
- await getConversations();
46
- return chatId;
47
- };
48
- const openConversation = (chatId) => {
49
- setChatId(chatId);
50
- };
51
- const deleteConversation = async (chatId) => {
52
- await assistant.call("deleteConversation", [chatId]);
53
- setChatId(void 0);
54
- await getConversations();
55
- };
29
+ //#region src/useChat.ts
30
+ function useChat(options) {
31
+ const { toolContext, welcomeMessage, ...agentOptions } = options;
56
32
  const agent = useAgent({
57
- enabled: !!chatId,
58
- host,
59
- agentName,
60
- id: userId,
61
- authToken,
62
- sub: chatId ? [{
63
- agent: assistant.state?.subAgentName ?? "",
64
- name: chatId
65
- }] : void 0,
66
- ...agentOptions
33
+ ...agentOptions,
34
+ enabled: agentOptions.enabled ?? !!agentOptions.name
67
35
  });
68
- const isChatReady = !!chatId && agent.state?.status === "connected";
36
+ const status = agent.state?.status ?? "connecting";
69
37
  const chat = useAgentChat({
70
38
  agent,
71
39
  body: toolContext ?? {},
72
- getInitialMessages: isChatReady ? void 0 : null
73
- });
74
- return {
75
- chatId,
76
- status: (chatId ? agent.state?.status : assistant.state?.status) ?? "connecting",
77
- getConversations,
78
- createConversation,
79
- openConversation,
80
- deleteConversation,
81
- agent,
82
- chat: isChatReady ? chat : void 0
83
- };
84
- }
85
- //#endregion
86
- //#region src/useChatAgent.ts
87
- function useChatAgent(options) {
88
- const { toolContext, welcomeMessage, ...agentOptions } = options;
89
- const agent = useAgent(agentOptions);
90
- const chat = useAgentChat({
91
- agent,
92
- body: toolContext ?? {}
40
+ getInitialMessages: !!agentOptions.name && status === "connected" ? void 0 : null
93
41
  });
94
- const status = agent.state?.status ?? "connecting";
95
42
  const hasSentWelcome = useRef(false);
96
43
  useEffect(() => {
97
44
  if (welcomeMessage && status === "connected" && chat.messages.length === 0 && !hasSentWelcome.current) {
@@ -129,4 +76,58 @@ function useChatAgent(options) {
129
76
  };
130
77
  }
131
78
  //#endregion
132
- export { useAgent, useAssistant, useChatAgent };
79
+ //#region src/useAssistant.ts
80
+ function useAssistant(options) {
81
+ const { toolContext, welcomeMessage, ...agentOptions } = options;
82
+ const [chatId, setChatId] = useState();
83
+ const assistant = useAgent(agentOptions);
84
+ const getChats = async () => {
85
+ return (await assistant.call("getChats")).map((chat) => {
86
+ const c = {
87
+ ...chat,
88
+ chatId: chat.durable_object_name
89
+ };
90
+ delete c.durable_object_name;
91
+ return c;
92
+ });
93
+ };
94
+ const createChat = async () => {
95
+ const chatId = await assistant.call("createChat");
96
+ setChatId(chatId);
97
+ await getChats();
98
+ return chatId;
99
+ };
100
+ const openChat = (chatId) => {
101
+ setChatId(chatId);
102
+ };
103
+ const deleteChat = async (chatId) => {
104
+ await assistant.call("deleteChat", [chatId]);
105
+ setChatId(void 0);
106
+ await getChats();
107
+ };
108
+ const isChatReady = !!chatId && assistant.state?.status === "connected";
109
+ const chat = useChat({
110
+ ...agentOptions,
111
+ enabled: !!chatId,
112
+ sub: chatId ? [{
113
+ agent: assistant.state?.subAgentName ?? "",
114
+ name: chatId
115
+ }] : void 0,
116
+ getInitialMessages: isChatReady ? void 0 : null,
117
+ toolContext,
118
+ welcomeMessage
119
+ });
120
+ return {
121
+ currentChatName: chatId,
122
+ status: (chatId ? chat.agent.state?.status : assistant.state?.status) ?? "connecting",
123
+ assistant: {
124
+ getChats,
125
+ createChat,
126
+ openChat,
127
+ deleteChat
128
+ },
129
+ chat
130
+ };
131
+ }
132
+ //#endregion
133
+ export { useAgent, useAssistant, useChat };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@economic/agents-react",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"