@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.
- package/dist/LangGraphClient.js +1 -0
- package/dist/tool/ToolUI.d.ts +6 -5
- package/dist/tool/ToolUI.js +12 -0
- package/dist/tool/createTool.d.ts +3 -3
- package/package.json +2 -1
- package/src/LangGraphClient.ts +1 -0
- package/src/tool/ToolUI.ts +15 -5
- package/src/tool/createTool.ts +2 -2
package/dist/LangGraphClient.js
CHANGED
|
@@ -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,
|
package/dist/tool/ToolUI.d.ts
CHANGED
|
@@ -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():
|
|
7
|
+
get state(): "idle" | "done" | "loading";
|
|
8
|
+
get input(): I | null;
|
|
9
9
|
get output(): string;
|
|
10
|
-
getJSONOutput():
|
|
10
|
+
getJSONOutput(): D;
|
|
11
11
|
/** 如果解析失败,则返回 null */
|
|
12
|
-
getJSONOutputSafe():
|
|
12
|
+
getJSONOutputSafe(): D | null;
|
|
13
|
+
getInputRepaired(): I | null;
|
|
13
14
|
response(data: D): void;
|
|
14
15
|
}
|
package/dist/tool/ToolUI.js
CHANGED
|
@@ -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.
|
|
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"
|
package/src/LangGraphClient.ts
CHANGED
package/src/tool/ToolUI.ts
CHANGED
|
@@ -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
|
}
|
package/src/tool/createTool.ts
CHANGED
|
@@ -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
|
) => {
|