@langgraph-js/sdk 1.7.2 → 1.7.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.
@@ -232,6 +232,7 @@ export class LangGraphClient extends Client {
232
232
  if (!message.usage_metadata && ((_c = message.response_metadata) === null || _c === void 0 ? void 0 : _c.usage)) {
233
233
  const usage = message.response_metadata.usage;
234
234
  message.usage_metadata = {
235
+ ...usage,
235
236
  input_tokens: usage.prompt_tokens,
236
237
  output_tokens: usage.completion_tokens,
237
238
  total_tokens: usage.total_tokens,
@@ -1,14 +1,15 @@
1
1
  import { RenderMessage } from "../LangGraphClient.js";
2
2
  import { LangGraphClient } from "../LangGraphClient.js";
3
- export declare class ToolRenderData<D> {
3
+ export declare class ToolRenderData<I, D> {
4
4
  message: RenderMessage;
5
5
  client: LangGraphClient;
6
6
  constructor(message: RenderMessage, client: LangGraphClient);
7
- get state(): "idle" | "done";
8
- get input(): any;
7
+ get state(): "idle" | "done" | "loading";
8
+ get input(): I | null;
9
9
  get output(): string;
10
- getJSONOutput(): any;
10
+ getJSONOutput(): D;
11
11
  /** 如果解析失败,则返回 null */
12
- getJSONOutputSafe(): any;
12
+ getJSONOutputSafe(): D | null;
13
+ getInputRepaired(): I | null;
13
14
  response(data: D): void;
14
15
  }
@@ -1,4 +1,5 @@
1
1
  import { getMessageContent } from "../ui-store/createChatStore.js";
2
+ import { jsonrepair } from "jsonrepair";
2
3
  export class ToolRenderData {
3
4
  constructor(message, client) {
4
5
  this.message = message;
@@ -9,6 +10,9 @@ export class ToolRenderData {
9
10
  if (this.message.type === "tool" && ((_b = (_a = this.message) === null || _a === void 0 ? void 0 : _a.additional_kwargs) === null || _b === void 0 ? void 0 : _b.done)) {
10
11
  return "done";
11
12
  }
13
+ if (this.message.tool_input) {
14
+ return "loading";
15
+ }
12
16
  return "idle";
13
17
  }
14
18
  get input() {
@@ -34,6 +38,14 @@ export class ToolRenderData {
34
38
  return null;
35
39
  }
36
40
  }
41
+ getInputRepaired() {
42
+ try {
43
+ return JSON.parse(jsonrepair(this.message.tool_input || ""));
44
+ }
45
+ catch (e) {
46
+ return null;
47
+ }
48
+ }
37
49
  response(data) {
38
50
  this.client.doneFEToolWaiting(this.message.id, JSON.stringify(data));
39
51
  }
@@ -11,7 +11,7 @@ export interface UnionTool<Args extends ZodRawShape, Child extends Object = Obje
11
11
  execute: ToolCallback<Args>;
12
12
  /** 工具执行成功后触发的附加消息 */
13
13
  callbackMessage?: (result: CallToolResult) => Message[];
14
- render?: <D>(tool: ToolRenderData<D>) => Child;
14
+ render?: <D>(tool: ToolRenderData<z.objectOutputType<Args, ZodTypeAny>, D>) => Child;
15
15
  onlyRender?: boolean;
16
16
  /** 只允许指定的 agent 使用该工具,如果未指定,则所有 agent 都可以使用 */
17
17
  allowAgent?: string[];
@@ -54,10 +54,10 @@ export declare const createMCPTool: <Args extends ZodRawShape>(tool: UnionTool<A
54
54
  }>))[];
55
55
  export declare const createToolUI: <Args extends Parameter[] | [] = [], Child extends Object = {}>(tool: Action<Args> & {
56
56
  allowAgent?: string[];
57
- render?: (tool: ToolRenderData<any>) => Child;
57
+ render?: (tool: ToolRenderData<any, any>) => Child;
58
58
  onlyRender?: boolean;
59
59
  }) => {
60
- render: ((tool: ToolRenderData<any>) => Child) | undefined;
60
+ render: ((tool: ToolRenderData<any, any>) => Child) | undefined;
61
61
  onlyRender: boolean | undefined;
62
62
  name: string;
63
63
  description: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langgraph-js/sdk",
3
- "version": "1.7.2",
3
+ "version": "1.7.5",
4
4
  "description": "The UI SDK for LangGraph - seamlessly integrate your AI agents with frontend interfaces",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -30,6 +30,7 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@langchain/langgraph-sdk": "^0.0.77",
33
+ "jsonrepair": "^3.12.0",
33
34
  "nanostores": "^1.0.1",
34
35
  "zod": "^3.25.17",
35
36
  "zod-to-json-schema": "^3.24.5"
@@ -307,6 +307,7 @@ export class LangGraphClient extends Client {
307
307
  total_tokens: number;
308
308
  };
309
309
  message.usage_metadata = {
310
+ ...usage,
310
311
  input_tokens: usage.prompt_tokens,
311
312
  output_tokens: usage.completion_tokens,
312
313
  total_tokens: usage.total_tokens,
@@ -2,8 +2,8 @@ import { RenderMessage } from "../LangGraphClient.js";
2
2
 
3
3
  import { LangGraphClient } from "../LangGraphClient.js";
4
4
  import { getMessageContent } from "../ui-store/createChatStore.js";
5
-
6
- export class ToolRenderData<D> {
5
+ import { jsonrepair } from "jsonrepair";
6
+ export class ToolRenderData<I, D> {
7
7
  constructor(
8
8
  public message: RenderMessage,
9
9
  public client: LangGraphClient
@@ -12,9 +12,12 @@ export class ToolRenderData<D> {
12
12
  if (this.message.type === "tool" && this.message?.additional_kwargs?.done) {
13
13
  return "done";
14
14
  }
15
+ if (this.message.tool_input) {
16
+ return "loading";
17
+ }
15
18
  return "idle";
16
19
  }
17
- get input() {
20
+ get input(): I | null {
18
21
  try {
19
22
  return JSON.parse(this.message.tool_input!);
20
23
  } catch (e) {
@@ -24,17 +27,24 @@ export class ToolRenderData<D> {
24
27
  get output() {
25
28
  return getMessageContent(this.message.content);
26
29
  }
27
- getJSONOutput() {
30
+ getJSONOutput(): D {
28
31
  return JSON.parse(this.output);
29
32
  }
30
33
  /** 如果解析失败,则返回 null */
31
- getJSONOutputSafe() {
34
+ getJSONOutputSafe(): D | null {
32
35
  try {
33
36
  return JSON.parse(this.output);
34
37
  } catch (e) {
35
38
  return null;
36
39
  }
37
40
  }
41
+ getInputRepaired(): I | null {
42
+ try {
43
+ return JSON.parse(jsonrepair(this.message.tool_input || ""));
44
+ } catch (e) {
45
+ return null;
46
+ }
47
+ }
38
48
  response(data: D) {
39
49
  this.client.doneFEToolWaiting(this.message.id!, JSON.stringify(data));
40
50
  }
@@ -14,7 +14,7 @@ export interface UnionTool<Args extends ZodRawShape, Child extends Object = Obje
14
14
  execute: ToolCallback<Args>;
15
15
  /** 工具执行成功后触发的附加消息 */
16
16
  callbackMessage?: (result: CallToolResult) => Message[];
17
- render?: <D>(tool: ToolRenderData<D>) => Child;
17
+ render?: <D>(tool: ToolRenderData<z.objectOutputType<Args, ZodTypeAny>, D>) => Child;
18
18
  onlyRender?: boolean;
19
19
  /** 只允许指定的 agent 使用该工具,如果未指定,则所有 agent 都可以使用 */
20
20
  allowAgent?: string[];
@@ -90,7 +90,7 @@ export const createMCPTool = <Args extends ZodRawShape>(tool: UnionTool<Args>) =
90
90
  export const createToolUI = <Args extends Parameter[] | [] = [], Child extends Object = {}>(
91
91
  tool: Action<Args> & {
92
92
  allowAgent?: string[];
93
- render?: (tool: ToolRenderData<any>) => Child;
93
+ render?: (tool: ToolRenderData<any, any>) => Child;
94
94
  onlyRender?: boolean;
95
95
  }
96
96
  ) => {