@langchain/langgraph-api 0.0.18 → 0.0.19
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/api/assistants.mjs +5 -3
- package/dist/cli/spawn.d.mts +3 -0
- package/dist/cli/spawn.mjs +1 -0
- package/dist/graph/load.mjs +4 -3
- package/dist/graph/load.utils.mjs +11 -4
- package/dist/server.mjs +5 -1
- package/dist/storage/ops.mjs +16 -4
- package/dist/stream.mjs +1 -1
- package/dist/ui/bundler.d.mts +6 -0
- package/dist/ui/bundler.mjs +1 -0
- package/dist/ui/load.mjs +1 -1
- package/package.json +1 -1
package/dist/api/assistants.mjs
CHANGED
|
@@ -76,9 +76,10 @@ api.get("/assistants/:assistant_id/graph", zValidator("query", z.object({ xray:
|
|
|
76
76
|
const assistantId = getAssistantId(c.req.param("assistant_id"));
|
|
77
77
|
const assistant = await Assistants.get(assistantId);
|
|
78
78
|
const { xray } = c.req.valid("query");
|
|
79
|
-
const
|
|
79
|
+
const config = getRunnableConfig(assistant.config);
|
|
80
|
+
const graph = await getGraph(assistant.graph_id, config);
|
|
80
81
|
const drawable = await graph.getGraphAsync({
|
|
81
|
-
...
|
|
82
|
+
...config,
|
|
82
83
|
xray: xray ?? undefined,
|
|
83
84
|
});
|
|
84
85
|
return c.json(drawable.toJSON());
|
|
@@ -106,7 +107,8 @@ api.get("/assistants/:assistant_id/subgraphs/:namespace?", zValidator("param", z
|
|
|
106
107
|
const { recurse } = c.req.valid("query");
|
|
107
108
|
const assistantId = getAssistantId(assistant_id);
|
|
108
109
|
const assistant = await Assistants.get(assistantId);
|
|
109
|
-
const
|
|
110
|
+
const config = getRunnableConfig(assistant.config);
|
|
111
|
+
const graph = await getGraph(assistant.graph_id, config);
|
|
110
112
|
const graphSchema = await getGraphSchema(assistant.graph_id);
|
|
111
113
|
const rootGraphId = Object.keys(graphSchema).find((i) => !i.includes("|"));
|
|
112
114
|
if (!rootGraphId) {
|
package/dist/cli/spawn.d.mts
CHANGED
package/dist/cli/spawn.mjs
CHANGED
package/dist/graph/load.mjs
CHANGED
|
@@ -41,11 +41,12 @@ export async function registerFromEnv(specs, options) {
|
|
|
41
41
|
return resolved;
|
|
42
42
|
}));
|
|
43
43
|
}
|
|
44
|
-
export function getGraph(graphId, options) {
|
|
44
|
+
export async function getGraph(graphId, config, options) {
|
|
45
45
|
if (!GRAPHS[graphId])
|
|
46
46
|
throw new HTTPException(404, { message: `Graph "${graphId}" not found` });
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
const compiled = typeof GRAPHS[graphId] === "function"
|
|
48
|
+
? await GRAPHS[graphId](config ?? { configurable: {} })
|
|
49
|
+
: GRAPHS[graphId];
|
|
49
50
|
if (typeof options?.checkpointer !== "undefined") {
|
|
50
51
|
compiled.checkpointer = options?.checkpointer ?? undefined;
|
|
51
52
|
}
|
|
@@ -23,10 +23,17 @@ export async function resolveGraph(spec, options) {
|
|
|
23
23
|
const resolved = await (async () => {
|
|
24
24
|
if (!graph)
|
|
25
25
|
throw new Error("Failed to load graph: graph is nullush");
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
return
|
|
29
|
-
|
|
26
|
+
const afterResolve = (graphLike) => {
|
|
27
|
+
const graph = isGraph(graphLike) ? graphLike.compile() : graphLike;
|
|
28
|
+
return graph;
|
|
29
|
+
};
|
|
30
|
+
if (typeof graph === "function") {
|
|
31
|
+
return async (config) => {
|
|
32
|
+
const graphLike = await graph(config);
|
|
33
|
+
return afterResolve(graphLike);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return afterResolve(await graph);
|
|
30
37
|
})();
|
|
31
38
|
return { sourceFile, exportSymbol, resolved };
|
|
32
39
|
}
|
package/dist/server.mjs
CHANGED
|
@@ -50,6 +50,7 @@ export const StartServerSchema = z.object({
|
|
|
50
50
|
cwd: z.string(),
|
|
51
51
|
graphs: z.record(z.string()),
|
|
52
52
|
ui: z.record(z.string()).optional(),
|
|
53
|
+
ui_config: z.object({ shared: z.array(z.string()).optional() }).optional(),
|
|
53
54
|
});
|
|
54
55
|
export async function startServer(options) {
|
|
55
56
|
logger.info(`Initializing storage...`);
|
|
@@ -69,7 +70,10 @@ export async function startServer(options) {
|
|
|
69
70
|
const { api, registerGraphUi } = await import("./ui/load.mjs");
|
|
70
71
|
app.route("/", api);
|
|
71
72
|
logger.info(`Registering UI from ${options.cwd}`);
|
|
72
|
-
await registerGraphUi(options.ui, {
|
|
73
|
+
await registerGraphUi(options.ui, {
|
|
74
|
+
cwd: options.cwd,
|
|
75
|
+
config: options.ui_config,
|
|
76
|
+
});
|
|
73
77
|
}
|
|
74
78
|
logger.info(`Starting ${options.nWorkers} workers`);
|
|
75
79
|
for (let i = 0; i < options.nWorkers; i++)
|
package/dist/storage/ops.mjs
CHANGED
|
@@ -447,7 +447,10 @@ export class Threads {
|
|
|
447
447
|
tasks: [],
|
|
448
448
|
};
|
|
449
449
|
}
|
|
450
|
-
const graph = await getGraph(graphId,
|
|
450
|
+
const graph = await getGraph(graphId, thread.config, {
|
|
451
|
+
checkpointer,
|
|
452
|
+
store,
|
|
453
|
+
});
|
|
451
454
|
const result = await graph.getState(config, { subgraphs });
|
|
452
455
|
if (result.metadata != null &&
|
|
453
456
|
"checkpoint_ns" in result.metadata &&
|
|
@@ -471,7 +474,10 @@ export class Threads {
|
|
|
471
474
|
}
|
|
472
475
|
config.configurable ??= {};
|
|
473
476
|
config.configurable.graph_id ??= graphId;
|
|
474
|
-
const graph = await getGraph(graphId,
|
|
477
|
+
const graph = await getGraph(graphId, thread.config, {
|
|
478
|
+
checkpointer,
|
|
479
|
+
store,
|
|
480
|
+
});
|
|
475
481
|
const updateConfig = structuredClone(config);
|
|
476
482
|
updateConfig.configurable ??= {};
|
|
477
483
|
updateConfig.configurable.checkpoint_ns ??= "";
|
|
@@ -501,7 +507,10 @@ export class Threads {
|
|
|
501
507
|
}
|
|
502
508
|
config.configurable ??= {};
|
|
503
509
|
config.configurable.graph_id ??= graphId;
|
|
504
|
-
const graph = await getGraph(graphId,
|
|
510
|
+
const graph = await getGraph(graphId, thread.config, {
|
|
511
|
+
checkpointer,
|
|
512
|
+
store,
|
|
513
|
+
});
|
|
505
514
|
const updateConfig = structuredClone(config);
|
|
506
515
|
updateConfig.configurable ??= {};
|
|
507
516
|
updateConfig.configurable.checkpoint_ns ??= "";
|
|
@@ -531,7 +540,10 @@ export class Threads {
|
|
|
531
540
|
const graphId = thread.metadata?.graph_id;
|
|
532
541
|
if (graphId == null)
|
|
533
542
|
return [];
|
|
534
|
-
const graph = await getGraph(graphId,
|
|
543
|
+
const graph = await getGraph(graphId, thread.config, {
|
|
544
|
+
checkpointer,
|
|
545
|
+
store,
|
|
546
|
+
});
|
|
535
547
|
const before = typeof options?.before === "string"
|
|
536
548
|
? { configurable: { checkpoint_id: options.before } }
|
|
537
549
|
: options?.before;
|
package/dist/stream.mjs
CHANGED
|
@@ -57,7 +57,7 @@ export async function* streamState(run, attempt = 1, options) {
|
|
|
57
57
|
if (!graphId || typeof graphId !== "string") {
|
|
58
58
|
throw new Error("Invalid or missing graph_id");
|
|
59
59
|
}
|
|
60
|
-
const graph = getGraph(graphId, {
|
|
60
|
+
const graph = await getGraph(graphId, kwargs.config, {
|
|
61
61
|
checkpointer: kwargs.temporary ? null : undefined,
|
|
62
62
|
});
|
|
63
63
|
const userStreamMode = kwargs.stream_mode ?? [];
|
package/dist/ui/bundler.d.mts
CHANGED
|
@@ -2,6 +2,9 @@ import { type BuildOptions } from "esbuild";
|
|
|
2
2
|
export declare function build(agentName: string, args: {
|
|
3
3
|
cwd: string;
|
|
4
4
|
userPath: string;
|
|
5
|
+
config?: {
|
|
6
|
+
shared?: string[];
|
|
7
|
+
};
|
|
5
8
|
}): Promise<{
|
|
6
9
|
basename: string;
|
|
7
10
|
contents: Uint8Array;
|
|
@@ -9,6 +12,9 @@ export declare function build(agentName: string, args: {
|
|
|
9
12
|
export declare function watch(agentName: string, args: {
|
|
10
13
|
cwd: string;
|
|
11
14
|
userPath: string;
|
|
15
|
+
config?: {
|
|
16
|
+
shared?: string[];
|
|
17
|
+
};
|
|
12
18
|
}, onResult: (result: {
|
|
13
19
|
basename: string;
|
|
14
20
|
contents: Uint8Array;
|
package/dist/ui/bundler.mjs
CHANGED
|
@@ -68,6 +68,7 @@ function setup(agentName, args, onResult) {
|
|
|
68
68
|
"react-dom",
|
|
69
69
|
"@langchain/langgraph-sdk",
|
|
70
70
|
"@langchain/langgraph-sdk/react-ui",
|
|
71
|
+
...(args.config?.shared ?? []),
|
|
71
72
|
],
|
|
72
73
|
plugins: [tailwind(), entrypointPlugin(args), registerPlugin(onResult)],
|
|
73
74
|
globalName: `__LGUI_${agentName}`,
|
package/dist/ui/load.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { watch } from "./bundler.mjs";
|
|
|
7
7
|
const GRAPH_UI = {};
|
|
8
8
|
export async function registerGraphUi(defs, options) {
|
|
9
9
|
const result = await Promise.all(Object.entries(defs).map(async ([agentName, userPath]) => {
|
|
10
|
-
const ctx = await watch(agentName, { cwd: options.cwd, userPath }, (result) => {
|
|
10
|
+
const ctx = await watch(agentName, { cwd: options.cwd, userPath, config: options.config }, (result) => {
|
|
11
11
|
GRAPH_UI[agentName] = result;
|
|
12
12
|
});
|
|
13
13
|
return [agentName, ctx];
|