@economic/agents-react 1.1.4 → 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;
@@ -288,52 +289,56 @@ declare function useChatAgent<ToolContext extends Record<string, unknown>>(optio
288
289
  //#endregion
289
290
  //#region src/useAssistant.d.ts
290
291
  /** Chat summary returned by the assistant's `getChats` RPC. */
291
- type Chat = {
292
+ type ChatSummary = {
292
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
- getChats: () => Promise<Chat[]>;
306
- createChat: () => Promise<string>;
307
- openChat: (chatId: string) => void;
308
- deleteChat: (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, Chat, 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,79 +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 getChats = async () => {
40
- return (await assistant.call("getChats")).map((chat) => {
41
- const c = {
42
- ...chat,
43
- chatId: chat.durable_object_name
44
- };
45
- delete c.durable_object_name;
46
- return c;
47
- });
48
- };
49
- const createChat = async () => {
50
- const chatId = await assistant.call("createChat");
51
- setChatId(chatId);
52
- await getChats();
53
- return chatId;
54
- };
55
- const openChat = (chatId) => {
56
- setChatId(chatId);
57
- };
58
- const deleteChat = async (chatId) => {
59
- await assistant.call("deleteChat", [chatId]);
60
- setChatId(void 0);
61
- await getChats();
62
- };
29
+ //#region src/useChat.ts
30
+ function useChat(options) {
31
+ const { toolContext, welcomeMessage, ...agentOptions } = options;
63
32
  const agent = useAgent({
64
- enabled: !!chatId,
65
- host,
66
- agentName,
67
- id: userId,
68
- authToken,
69
- sub: chatId ? [{
70
- agent: assistant.state?.subAgentName ?? "",
71
- name: chatId
72
- }] : void 0,
73
- ...agentOptions
33
+ ...agentOptions,
34
+ enabled: agentOptions.enabled ?? !!agentOptions.name
74
35
  });
75
- const isChatReady = !!chatId && agent.state?.status === "connected";
36
+ const status = agent.state?.status ?? "connecting";
76
37
  const chat = useAgentChat({
77
38
  agent,
78
39
  body: toolContext ?? {},
79
- getInitialMessages: isChatReady ? void 0 : null
80
- });
81
- return {
82
- chatId,
83
- status: (chatId ? agent.state?.status : assistant.state?.status) ?? "connecting",
84
- getChats,
85
- createChat,
86
- openChat,
87
- deleteChat,
88
- agent,
89
- chat: isChatReady ? chat : void 0
90
- };
91
- }
92
- //#endregion
93
- //#region src/useChatAgent.ts
94
- function useChatAgent(options) {
95
- const { toolContext, welcomeMessage, ...agentOptions } = options;
96
- const agent = useAgent(agentOptions);
97
- const chat = useAgentChat({
98
- agent,
99
- body: toolContext ?? {}
40
+ getInitialMessages: !!agentOptions.name && status === "connected" ? void 0 : null
100
41
  });
101
- const status = agent.state?.status ?? "connecting";
102
42
  const hasSentWelcome = useRef(false);
103
43
  useEffect(() => {
104
44
  if (welcomeMessage && status === "connected" && chat.messages.length === 0 && !hasSentWelcome.current) {
@@ -136,4 +76,58 @@ function useChatAgent(options) {
136
76
  };
137
77
  }
138
78
  //#endregion
139
- 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.4",
3
+ "version": "1.1.5",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"