@agentic-kit/react 0.2.0 → 0.3.0

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/esm/use-chat.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AgentEvent, AgentToolResult } from '@agentic-kit/agent';
2
- import type { AssistantMessage, Message } from 'agentic-kit';
2
+ import type { AssistantMessage, Message, Usage } from 'agentic-kit';
3
3
  export type ToolDecisionPendingEvent = Extract<AgentEvent, {
4
4
  type: 'tool_decision_pending';
5
5
  }>;
@@ -33,6 +33,7 @@ export interface UseChatResult {
33
33
  pendingDecisions: ReadonlyMap<string, ToolDecisionPendingEvent>;
34
34
  executingToolCallIds: ReadonlySet<string>;
35
35
  error: unknown;
36
+ usage: Usage | null;
36
37
  send: (input: string | Message) => Promise<void>;
37
38
  sendMessages: (messages: Message[]) => Promise<void>;
38
39
  setMessages: (msgs: Message[] | ((prev: Message[]) => Message[])) => void;
package/esm/use-chat.js CHANGED
@@ -45,6 +45,7 @@ export function useChat(options) {
45
45
  const [pendingDecisions, setPendingDecisions] = useState(() => rederivePendingDecisions(options.initialMessages ?? []));
46
46
  const [executingToolCallIds, setExecutingToolCallIds] = useState(() => new Set());
47
47
  const [error, setError] = useState(undefined);
48
+ const [usage, setUsage] = useState(null);
48
49
  const messagesRef = useRef(messages);
49
50
  useEffect(() => {
50
51
  messagesRef.current = messages;
@@ -76,6 +77,7 @@ export function useChat(options) {
76
77
  setPendingDecisions(new Map());
77
78
  setExecutingToolCallIds(new Set());
78
79
  setStreamingMessage(null);
80
+ setUsage(null);
79
81
  if (optimisticUserMessage) {
80
82
  setMessagesState((prev) => [...prev, optimisticUserMessage]);
81
83
  }
@@ -180,8 +182,13 @@ export function useChat(options) {
180
182
  opts.onDecisionPending?.(event);
181
183
  break;
182
184
  }
185
+ case 'turn_end': {
186
+ setUsage((prev) => prev?.totalTokens === event.totalUsage.totalTokens ? prev : event.totalUsage);
187
+ break;
188
+ }
183
189
  case 'agent_end': {
184
190
  setStreamingMessage(null);
191
+ setUsage((prev) => prev?.totalTokens === event.totalUsage.totalTokens ? prev : event.totalUsage);
185
192
  setMessagesState(() => {
186
193
  if (!isCurrent())
187
194
  return messagesRef.current;
@@ -310,6 +317,7 @@ export function useChat(options) {
310
317
  pendingDecisions,
311
318
  executingToolCallIds,
312
319
  error,
320
+ usage,
313
321
  send,
314
322
  sendMessages,
315
323
  setMessages,
@@ -322,6 +330,7 @@ export function useChat(options) {
322
330
  pendingDecisions,
323
331
  executingToolCallIds,
324
332
  error,
333
+ usage,
325
334
  send,
326
335
  sendMessages,
327
336
  setMessages,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentic-kit/react",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "author": "Dan Lynch <pyramation@gmail.com>",
5
5
  "description": "React bindings for agentic-kit (useChat hook)",
6
6
  "main": "index.js",
@@ -37,8 +37,8 @@
37
37
  "test:watch": "jest --watch"
38
38
  },
39
39
  "dependencies": {
40
- "@agentic-kit/agent": "0.3.0",
41
- "agentic-kit": "1.2.0"
40
+ "@agentic-kit/agent": "0.4.0",
41
+ "agentic-kit": "1.3.0"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "react": ">=18",
@@ -54,5 +54,5 @@
54
54
  "react-dom": "19.2.5"
55
55
  },
56
56
  "keywords": [],
57
- "gitHead": "d4f3f660be621267efe12671c22db202ccdb3f0b"
57
+ "gitHead": "af045fe54e55e593a3e4292335faa28fdb878619"
58
58
  }
package/use-chat.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AgentEvent, AgentToolResult } from '@agentic-kit/agent';
2
- import type { AssistantMessage, Message } from 'agentic-kit';
2
+ import type { AssistantMessage, Message, Usage } from 'agentic-kit';
3
3
  export type ToolDecisionPendingEvent = Extract<AgentEvent, {
4
4
  type: 'tool_decision_pending';
5
5
  }>;
@@ -33,6 +33,7 @@ export interface UseChatResult {
33
33
  pendingDecisions: ReadonlyMap<string, ToolDecisionPendingEvent>;
34
34
  executingToolCallIds: ReadonlySet<string>;
35
35
  error: unknown;
36
+ usage: Usage | null;
36
37
  send: (input: string | Message) => Promise<void>;
37
38
  sendMessages: (messages: Message[]) => Promise<void>;
38
39
  setMessages: (msgs: Message[] | ((prev: Message[]) => Message[])) => void;
package/use-chat.js CHANGED
@@ -48,6 +48,7 @@ function useChat(options) {
48
48
  const [pendingDecisions, setPendingDecisions] = (0, react_1.useState)(() => rederivePendingDecisions(options.initialMessages ?? []));
49
49
  const [executingToolCallIds, setExecutingToolCallIds] = (0, react_1.useState)(() => new Set());
50
50
  const [error, setError] = (0, react_1.useState)(undefined);
51
+ const [usage, setUsage] = (0, react_1.useState)(null);
51
52
  const messagesRef = (0, react_1.useRef)(messages);
52
53
  (0, react_1.useEffect)(() => {
53
54
  messagesRef.current = messages;
@@ -79,6 +80,7 @@ function useChat(options) {
79
80
  setPendingDecisions(new Map());
80
81
  setExecutingToolCallIds(new Set());
81
82
  setStreamingMessage(null);
83
+ setUsage(null);
82
84
  if (optimisticUserMessage) {
83
85
  setMessagesState((prev) => [...prev, optimisticUserMessage]);
84
86
  }
@@ -183,8 +185,13 @@ function useChat(options) {
183
185
  opts.onDecisionPending?.(event);
184
186
  break;
185
187
  }
188
+ case 'turn_end': {
189
+ setUsage((prev) => prev?.totalTokens === event.totalUsage.totalTokens ? prev : event.totalUsage);
190
+ break;
191
+ }
186
192
  case 'agent_end': {
187
193
  setStreamingMessage(null);
194
+ setUsage((prev) => prev?.totalTokens === event.totalUsage.totalTokens ? prev : event.totalUsage);
188
195
  setMessagesState(() => {
189
196
  if (!isCurrent())
190
197
  return messagesRef.current;
@@ -313,6 +320,7 @@ function useChat(options) {
313
320
  pendingDecisions,
314
321
  executingToolCallIds,
315
322
  error,
323
+ usage,
316
324
  send,
317
325
  sendMessages,
318
326
  setMessages,
@@ -325,6 +333,7 @@ function useChat(options) {
325
333
  pendingDecisions,
326
334
  executingToolCallIds,
327
335
  error,
336
+ usage,
328
337
  send,
329
338
  sendMessages,
330
339
  setMessages,