@langgraph-js/pure-graph 1.5.3 → 2.0.1
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/README.md +12 -1
- package/dist/adapter/hono/index.js +1 -1
- package/dist/adapter/nextjs/index.js +1 -1
- package/dist/adapter/zod.d.ts +22 -22
- package/dist/{checkpoint-BQME4ngM.js → checkpoint-DYSXoBLt.js} +7 -3
- package/dist/checkpoint-DYSXoBLt.js.map +1 -0
- package/dist/{createEndpoint-CM_PIKjI.js → createEndpoint-BPk7_KN8.js} +3 -3
- package/dist/createEndpoint-BPk7_KN8.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{queue-XIrklJBQ.js → queue-TdkMVT39.js} +2 -2
- package/dist/{queue-XIrklJBQ.js.map → queue-TdkMVT39.js.map} +1 -1
- package/dist/{router-BSJAJNBn.js → router-CefJEizV.js} +2 -2
- package/dist/{router-BSJAJNBn.js.map → router-CefJEizV.js.map} +1 -1
- package/dist/storage/memory/threads.d.ts +2 -1
- package/dist/storage/pg/threads.d.ts +2 -1
- package/dist/storage/sqlite/threads.d.ts +2 -1
- package/dist/threads/index.d.ts +2 -1
- package/dist/utils/createEntrypointGraph.d.ts +8 -13
- package/dist/utils/getGraph.d.ts +1 -1
- package/package.json +11 -10
- package/dist/checkpoint-BQME4ngM.js.map +0 -1
- package/dist/createEndpoint-CM_PIKjI.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
# Pure Graph
|
|
2
2
|
|
|
3
|
-
Pure Graph is a library that provides a standard LangGraph endpoint for integrating into various frameworks like NextJS and Hono.js. It supports multiple storage backends (SQLite, PostgreSQL, Redis) and message queues.
|
|
3
|
+
Pure Graph is a library that provides a standard LangGraph endpoint for integrating into various frameworks like NextJS and Hono.js. It supports multiple storage backends (SQLite, PostgreSQL, Redis) and message queues.
|
|
4
|
+
|
|
5
|
+
## 📢 Version Compatibility
|
|
6
|
+
|
|
7
|
+
- **Pure Graph 2.0+**: Supports LangGraph 1.0+
|
|
8
|
+
- **Pure Graph 1.x**: Compatible with LangGraph 0.1+
|
|
9
|
+
|
|
10
|
+
### Migration Guide
|
|
11
|
+
|
|
12
|
+
For detailed migration instructions from Pure Graph 1.x to 2.0, see our [Migration Guide](https://pure-graph.netlify.app/docs/migration-2.0).
|
|
4
13
|
|
|
5
14
|
📚 **[Complete Documentation](https://pure-graph.netlify.app/docs/index.md)** - Comprehensive guides, API reference, and examples
|
|
6
15
|
|
|
16
|
+
This document will guide you on how to use Pure Graph in your projects.
|
|
17
|
+
|
|
7
18
|
## Features
|
|
8
19
|
|
|
9
20
|
- **Multiple Storage Backends**: Support for SQLite, PostgreSQL, Redis, and in-memory storage
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { zValidator } from '@hono/zod-validator';
|
|
3
|
-
import { c as createEndpoint, s as serialiseAsDict } from '../../createEndpoint-
|
|
3
|
+
import { c as createEndpoint, s as serialiseAsDict } from '../../createEndpoint-BPk7_KN8.js';
|
|
4
4
|
import { A as AssistantsSearchSchema, a as AssistantGraphQuerySchema, T as ThreadIdParamSchema, R as RunStreamPayloadSchema, b as RunListQuerySchema, c as RunIdParamSchema, d as RunCancelQuerySchema, e as ThreadStateUpdate, f as ThreadCreatePayloadSchema, g as ThreadSearchPayloadSchema } from '../../zod-C5lbZYj6.js';
|
|
5
5
|
import camelcaseKeys from 'camelcase-keys';
|
|
6
6
|
import { streamSSE } from 'hono/streaming';
|
|
@@ -2,7 +2,7 @@ async function ensureInitialized(attachGraphPromise) {
|
|
|
2
2
|
if (globalThis.LG_INIT_PROMISE === void 0) {
|
|
3
3
|
globalThis.LG_INIT_PROMISE = (async () => {
|
|
4
4
|
await attachGraphPromise();
|
|
5
|
-
const { GET, POST, DELETE } = await import('../../router-
|
|
5
|
+
const { GET, POST, DELETE } = await import('../../router-CefJEizV.js');
|
|
6
6
|
return {
|
|
7
7
|
GET,
|
|
8
8
|
POST,
|
package/dist/adapter/zod.d.ts
CHANGED
|
@@ -96,13 +96,13 @@ export declare const Assistant: z.ZodObject<{
|
|
|
96
96
|
updated_at: z.ZodString;
|
|
97
97
|
metadata: z.ZodObject<{}, "strip", z.ZodAny, z.objectOutputType<{}, z.ZodAny, "strip">, z.objectInputType<{}, z.ZodAny, "strip">>;
|
|
98
98
|
}, "strip", z.ZodTypeAny, {
|
|
99
|
+
assistant_id: string;
|
|
100
|
+
graph_id: string;
|
|
99
101
|
created_at: string;
|
|
100
102
|
updated_at: string;
|
|
101
103
|
metadata: {} & {
|
|
102
104
|
[k: string]: any;
|
|
103
105
|
};
|
|
104
|
-
graph_id: string;
|
|
105
|
-
assistant_id: string;
|
|
106
106
|
config: {
|
|
107
107
|
configurable?: z.objectOutputType<{
|
|
108
108
|
thread_id: z.ZodOptional<z.ZodString>;
|
|
@@ -114,13 +114,13 @@ export declare const Assistant: z.ZodObject<{
|
|
|
114
114
|
[k: string]: unknown;
|
|
115
115
|
};
|
|
116
116
|
}, {
|
|
117
|
+
assistant_id: string;
|
|
118
|
+
graph_id: string;
|
|
117
119
|
created_at: string;
|
|
118
120
|
updated_at: string;
|
|
119
121
|
metadata: {} & {
|
|
120
122
|
[k: string]: any;
|
|
121
123
|
};
|
|
122
|
-
graph_id: string;
|
|
123
|
-
assistant_id: string;
|
|
124
124
|
config: {
|
|
125
125
|
configurable?: z.objectInputType<{
|
|
126
126
|
thread_id: z.ZodOptional<z.ZodString>;
|
|
@@ -181,8 +181,8 @@ export declare const CommandSchema: z.ZodObject<{
|
|
|
181
181
|
input?: unknown;
|
|
182
182
|
}>, "many">, z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
183
183
|
}, "strip", z.ZodTypeAny, {
|
|
184
|
-
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
185
184
|
resume?: unknown;
|
|
185
|
+
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
186
186
|
goto?: string | string[] | {
|
|
187
187
|
node: string;
|
|
188
188
|
input?: unknown;
|
|
@@ -191,8 +191,8 @@ export declare const CommandSchema: z.ZodObject<{
|
|
|
191
191
|
input?: unknown;
|
|
192
192
|
}[] | undefined;
|
|
193
193
|
}, {
|
|
194
|
-
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
195
194
|
resume?: unknown;
|
|
195
|
+
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
196
196
|
goto?: string | string[] | {
|
|
197
197
|
node: string;
|
|
198
198
|
input?: unknown;
|
|
@@ -249,23 +249,23 @@ export declare const AssistantsSearchSchema: z.ZodObject<{
|
|
|
249
249
|
limit: z.ZodOptional<z.ZodNumber>;
|
|
250
250
|
offset: z.ZodOptional<z.ZodNumber>;
|
|
251
251
|
}, "strip", z.ZodTypeAny, {
|
|
252
|
+
graph_id?: string | undefined;
|
|
252
253
|
metadata?: z.objectOutputType<{
|
|
253
254
|
source: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"input">, z.ZodLiteral<"loop">, z.ZodLiteral<"update">, z.ZodString]>>;
|
|
254
255
|
step: z.ZodOptional<z.ZodNumber>;
|
|
255
256
|
writes: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
256
257
|
parents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
257
258
|
}, z.ZodUnknown, "strip"> | undefined;
|
|
258
|
-
graph_id?: string | undefined;
|
|
259
259
|
limit?: number | undefined;
|
|
260
260
|
offset?: number | undefined;
|
|
261
261
|
}, {
|
|
262
|
+
graph_id?: string | undefined;
|
|
262
263
|
metadata?: z.objectInputType<{
|
|
263
264
|
source: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"input">, z.ZodLiteral<"loop">, z.ZodLiteral<"update">, z.ZodString]>>;
|
|
264
265
|
step: z.ZodOptional<z.ZodNumber>;
|
|
265
266
|
writes: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
266
267
|
parents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
267
268
|
}, z.ZodUnknown, "strip"> | undefined;
|
|
268
|
-
graph_id?: string | undefined;
|
|
269
269
|
limit?: number | undefined;
|
|
270
270
|
offset?: number | undefined;
|
|
271
271
|
}>;
|
|
@@ -303,8 +303,8 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
303
303
|
input?: unknown;
|
|
304
304
|
}>, "many">, z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
305
305
|
}, "strip", z.ZodTypeAny, {
|
|
306
|
-
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
307
306
|
resume?: unknown;
|
|
307
|
+
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
308
308
|
goto?: string | string[] | {
|
|
309
309
|
node: string;
|
|
310
310
|
input?: unknown;
|
|
@@ -313,8 +313,8 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
313
313
|
input?: unknown;
|
|
314
314
|
}[] | undefined;
|
|
315
315
|
}, {
|
|
316
|
-
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
317
316
|
resume?: unknown;
|
|
317
|
+
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
318
318
|
goto?: string | string[] | {
|
|
319
319
|
node: string;
|
|
320
320
|
input?: unknown;
|
|
@@ -395,6 +395,7 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
395
395
|
}, "strip", z.ZodTypeAny, {
|
|
396
396
|
assistant_id: string;
|
|
397
397
|
on_disconnect: "cancel" | "continue";
|
|
398
|
+
checkpoint_id?: string | undefined;
|
|
398
399
|
input?: any;
|
|
399
400
|
metadata?: z.objectOutputType<{
|
|
400
401
|
source: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"input">, z.ZodLiteral<"loop">, z.ZodLiteral<"update">, z.ZodString]>>;
|
|
@@ -403,7 +404,6 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
403
404
|
parents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
404
405
|
}, z.ZodUnknown, "strip"> | undefined;
|
|
405
406
|
multitask_strategy?: "reject" | "interrupt" | "rollback" | "enqueue" | undefined;
|
|
406
|
-
checkpoint_id?: string | undefined;
|
|
407
407
|
config?: z.objectOutputType<{
|
|
408
408
|
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
409
409
|
recursion_limit: z.ZodOptional<z.ZodNumber>;
|
|
@@ -419,8 +419,8 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
419
419
|
}, z.ZodUnknown, "strip">>>;
|
|
420
420
|
}, z.ZodUnknown, "strip"> | undefined;
|
|
421
421
|
command?: {
|
|
422
|
-
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
423
422
|
resume?: unknown;
|
|
423
|
+
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
424
424
|
goto?: string | string[] | {
|
|
425
425
|
node: string;
|
|
426
426
|
input?: unknown;
|
|
@@ -432,7 +432,7 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
432
432
|
webhook?: string | undefined;
|
|
433
433
|
interrupt_before?: string[] | "*" | undefined;
|
|
434
434
|
interrupt_after?: string[] | "*" | undefined;
|
|
435
|
-
stream_mode?: ("values" | "
|
|
435
|
+
stream_mode?: ("values" | "messages" | "updates" | "events" | "debug" | "custom" | "messages-tuple")[] | undefined;
|
|
436
436
|
stream_subgraphs?: boolean | undefined;
|
|
437
437
|
stream_resumable?: boolean | undefined;
|
|
438
438
|
after_seconds?: number | undefined;
|
|
@@ -442,6 +442,7 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
442
442
|
langsmith_tracer?: unknown;
|
|
443
443
|
}, {
|
|
444
444
|
assistant_id: string;
|
|
445
|
+
checkpoint_id?: string | undefined;
|
|
445
446
|
input?: any;
|
|
446
447
|
metadata?: z.objectInputType<{
|
|
447
448
|
source: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"input">, z.ZodLiteral<"loop">, z.ZodLiteral<"update">, z.ZodString]>>;
|
|
@@ -450,7 +451,6 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
450
451
|
parents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
451
452
|
}, z.ZodUnknown, "strip"> | undefined;
|
|
452
453
|
multitask_strategy?: "reject" | "interrupt" | "rollback" | "enqueue" | undefined;
|
|
453
|
-
checkpoint_id?: string | undefined;
|
|
454
454
|
config?: z.objectInputType<{
|
|
455
455
|
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
456
456
|
recursion_limit: z.ZodOptional<z.ZodNumber>;
|
|
@@ -466,8 +466,8 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
466
466
|
}, z.ZodUnknown, "strip">>>;
|
|
467
467
|
}, z.ZodUnknown, "strip"> | undefined;
|
|
468
468
|
command?: {
|
|
469
|
-
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
470
469
|
resume?: unknown;
|
|
470
|
+
update?: Record<string, unknown> | [string, unknown][] | null | undefined;
|
|
471
471
|
goto?: string | string[] | {
|
|
472
472
|
node: string;
|
|
473
473
|
input?: unknown;
|
|
@@ -480,7 +480,7 @@ export declare const RunStreamPayloadSchema: z.ZodObject<{
|
|
|
480
480
|
interrupt_before?: string[] | "*" | undefined;
|
|
481
481
|
interrupt_after?: string[] | "*" | undefined;
|
|
482
482
|
on_disconnect?: "cancel" | "continue" | undefined;
|
|
483
|
-
stream_mode?: ("values" | "
|
|
483
|
+
stream_mode?: ("values" | "messages" | "updates" | "events" | "debug" | "custom" | "messages-tuple")[] | undefined;
|
|
484
484
|
stream_subgraphs?: boolean | undefined;
|
|
485
485
|
stream_resumable?: boolean | undefined;
|
|
486
486
|
after_seconds?: number | undefined;
|
|
@@ -494,11 +494,11 @@ export declare const RunListQuerySchema: z.ZodObject<{
|
|
|
494
494
|
offset: z.ZodOptional<z.ZodNumber>;
|
|
495
495
|
status: z.ZodOptional<z.ZodEnum<["pending", "running", "error", "success", "timeout", "interrupted"]>>;
|
|
496
496
|
}, "strip", z.ZodTypeAny, {
|
|
497
|
-
status?: "
|
|
497
|
+
status?: "pending" | "running" | "error" | "success" | "timeout" | "interrupted" | undefined;
|
|
498
498
|
limit?: number | undefined;
|
|
499
499
|
offset?: number | undefined;
|
|
500
500
|
}, {
|
|
501
|
-
status?: "
|
|
501
|
+
status?: "pending" | "running" | "error" | "success" | "timeout" | "interrupted" | undefined;
|
|
502
502
|
limit?: number | undefined;
|
|
503
503
|
offset?: number | undefined;
|
|
504
504
|
}>;
|
|
@@ -560,19 +560,19 @@ export declare const ThreadSearchPayloadSchema: z.ZodObject<{
|
|
|
560
560
|
sort_order: z.ZodOptional<z.ZodEnum<["asc", "desc"]>>;
|
|
561
561
|
}, "strip", z.ZodTypeAny, {
|
|
562
562
|
values?: Record<string, unknown> | undefined;
|
|
563
|
-
status?: "
|
|
563
|
+
status?: "error" | "interrupted" | "idle" | "busy" | undefined;
|
|
564
564
|
metadata?: Record<string, unknown> | undefined;
|
|
565
565
|
limit?: number | undefined;
|
|
566
566
|
offset?: number | undefined;
|
|
567
|
-
sort_by?: "
|
|
567
|
+
sort_by?: "created_at" | "updated_at" | "thread_id" | "status" | undefined;
|
|
568
568
|
sort_order?: "asc" | "desc" | undefined;
|
|
569
569
|
}, {
|
|
570
570
|
values?: Record<string, unknown> | undefined;
|
|
571
|
-
status?: "
|
|
571
|
+
status?: "error" | "interrupted" | "idle" | "busy" | undefined;
|
|
572
572
|
metadata?: Record<string, unknown> | undefined;
|
|
573
573
|
limit?: number | undefined;
|
|
574
574
|
offset?: number | undefined;
|
|
575
|
-
sort_by?: "
|
|
575
|
+
sort_by?: "created_at" | "updated_at" | "thread_id" | "status" | undefined;
|
|
576
576
|
sort_order?: "asc" | "desc" | undefined;
|
|
577
577
|
}>;
|
|
578
578
|
export declare const ThreadStateUpdate: z.ZodObject<{
|
|
@@ -3,10 +3,14 @@ import { BaseCheckpointSaver, TASKS, copyCheckpoint, maxChannelVersion } from '@
|
|
|
3
3
|
let Database;
|
|
4
4
|
if (globalThis.Bun) {
|
|
5
5
|
console.debug("LG | Using Bun Sqlite, pid:", process.pid);
|
|
6
|
-
const BunSqlite = await import('bun:sqlite')
|
|
6
|
+
const BunSqlite = await import('bun:sqlite').catch((e) => {
|
|
7
|
+
console.error(e);
|
|
8
|
+
});
|
|
7
9
|
Database = BunSqlite.default;
|
|
8
10
|
} else {
|
|
9
|
-
const CommonSqlite = await import('better-sqlite3')
|
|
11
|
+
const CommonSqlite = await import('better-sqlite3').catch((e) => {
|
|
12
|
+
console.error(e);
|
|
13
|
+
});
|
|
10
14
|
Database = CommonSqlite.default;
|
|
11
15
|
}
|
|
12
16
|
|
|
@@ -383,4 +387,4 @@ CREATE TABLE IF NOT EXISTS writes (
|
|
|
383
387
|
}
|
|
384
388
|
|
|
385
389
|
export { SqliteSaver };
|
|
386
|
-
//# sourceMappingURL=checkpoint-
|
|
390
|
+
//# sourceMappingURL=checkpoint-DYSXoBLt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-DYSXoBLt.js","sources":["../src/storage/sqlite/DB.ts","../src/storage/sqlite/checkpoint.ts"],"sourcesContent":["import { DatabaseType } from './type';\n\nlet Database: new (uri: string) => DatabaseType;\n/** @ts-ignore */\nif (globalThis.Bun) {\n console.debug('LG | Using Bun Sqlite, pid:', process.pid);\n const BunSqlite = await import('bun:sqlite').catch((e) => {\n console.error(e);\n });\n /** @ts-ignore */\n Database = BunSqlite.default;\n} else {\n /** @ts-ignore */\n const CommonSqlite = await import('better-sqlite3').catch((e) => {\n console.error(e);\n });\n Database = CommonSqlite.default;\n}\n\nexport { Database };\n","import { DatabaseType } from './type.js';\nimport { Database } from './DB.js';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport {\n BaseCheckpointSaver,\n type Checkpoint,\n type CheckpointListOptions,\n type CheckpointTuple,\n type SerializerProtocol,\n type PendingWrite,\n type CheckpointMetadata,\n TASKS,\n copyCheckpoint,\n maxChannelVersion,\n} from '@langchain/langgraph-checkpoint';\n\ninterface CheckpointRow {\n checkpoint: string;\n metadata: string;\n parent_checkpoint_id?: string;\n thread_id: string;\n checkpoint_id: string;\n checkpoint_ns?: string;\n type?: string;\n pending_writes: string;\n}\n\ninterface PendingWriteColumn {\n task_id: string;\n channel: string;\n type: string;\n value: string;\n}\n\ninterface PendingSendColumn {\n type: string;\n value: string;\n}\n\n// In the `SqliteSaver.list` method, we need to sanitize the `options.filter` argument to ensure it only contains keys\n// that are part of the `CheckpointMetadata` type. The lines below ensure that we get compile-time errors if the list\n// of keys that we use is out of sync with the `CheckpointMetadata` type.\nconst checkpointMetadataKeys = ['source', 'step', 'parents'] as const;\n\ntype CheckKeys<T, K extends readonly (keyof T)[]> = [K[number]] extends [keyof T]\n ? [keyof T] extends [K[number]]\n ? K\n : never\n : never;\n\nfunction validateKeys<T, K extends readonly (keyof T)[]>(keys: CheckKeys<T, K>): K {\n return keys;\n}\n\n// If this line fails to compile, the list of keys that we use in the `SqliteSaver.list` method is out of sync with the\n// `CheckpointMetadata` type. In that case, just update `checkpointMetadataKeys` to contain all the keys in\n// `CheckpointMetadata`\nconst validCheckpointMetadataKeys = validateKeys<CheckpointMetadata, typeof checkpointMetadataKeys>(\n checkpointMetadataKeys,\n);\n\nfunction prepareSql(db: DatabaseType, checkpointId: boolean) {\n const sql = `\n SELECT\n thread_id,\n checkpoint_ns,\n checkpoint_id,\n parent_checkpoint_id,\n type,\n checkpoint,\n metadata,\n (\n SELECT\n json_group_array(\n json_object(\n 'task_id', pw.task_id,\n 'channel', pw.channel,\n 'type', pw.type,\n 'value', CAST(pw.value AS TEXT)\n )\n )\n FROM writes as pw\n WHERE pw.thread_id = checkpoints.thread_id\n AND pw.checkpoint_ns = checkpoints.checkpoint_ns\n AND pw.checkpoint_id = checkpoints.checkpoint_id\n ) as pending_writes,\n (\n SELECT\n json_group_array(\n json_object(\n 'type', ps.type,\n 'value', CAST(ps.value AS TEXT)\n )\n )\n FROM writes as ps\n WHERE ps.thread_id = checkpoints.thread_id\n AND ps.checkpoint_ns = checkpoints.checkpoint_ns\n AND ps.checkpoint_id = checkpoints.parent_checkpoint_id\n AND ps.channel = '${TASKS}'\n ORDER BY ps.idx\n ) as pending_sends\n FROM checkpoints\n WHERE thread_id = ? AND checkpoint_ns = ? ${\n checkpointId ? 'AND checkpoint_id = ?' : 'ORDER BY checkpoint_id DESC LIMIT 1'\n }`;\n\n return db.prepare(sql);\n}\n\nexport class SqliteSaver extends BaseCheckpointSaver {\n db: DatabaseType;\n\n protected isSetup: boolean;\n\n protected withoutCheckpoint: any;\n\n protected withCheckpoint: any;\n\n constructor(db: DatabaseType, serde?: SerializerProtocol) {\n super(serde);\n this.db = db;\n this.isSetup = false;\n }\n\n static fromConnString(connStringOrLocalPath: string): SqliteSaver {\n return new SqliteSaver(new Database(connStringOrLocalPath));\n }\n\n protected setup(): void {\n if (this.isSetup) {\n return;\n }\n\n // this.db.pragma('journal_mode=WAL');\n this.db.exec('PRAGMA journal_mode = WAL;');\n this.db.exec(`\nCREATE TABLE IF NOT EXISTS checkpoints (\n thread_id TEXT NOT NULL,\n checkpoint_ns TEXT NOT NULL DEFAULT '',\n checkpoint_id TEXT NOT NULL,\n parent_checkpoint_id TEXT,\n type TEXT,\n checkpoint BLOB,\n metadata BLOB,\n PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id)\n);`);\n this.db.exec(`\nCREATE TABLE IF NOT EXISTS writes (\n thread_id TEXT NOT NULL,\n checkpoint_ns TEXT NOT NULL DEFAULT '',\n checkpoint_id TEXT NOT NULL,\n task_id TEXT NOT NULL,\n idx INTEGER NOT NULL,\n channel TEXT NOT NULL,\n type TEXT,\n value BLOB,\n PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx)\n);`);\n\n this.withoutCheckpoint = prepareSql(this.db, false);\n this.withCheckpoint = prepareSql(this.db, true);\n\n this.isSetup = true;\n }\n\n async getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined> {\n this.setup();\n const { thread_id, checkpoint_ns = '', checkpoint_id } = config.configurable ?? {};\n\n const args = [thread_id, checkpoint_ns];\n if (checkpoint_id) args.push(checkpoint_id);\n\n const stm = checkpoint_id ? this.withCheckpoint : this.withoutCheckpoint;\n const row = stm.get(...args) as CheckpointRow;\n if (row === undefined || row === null) return undefined;\n\n let finalConfig = config;\n\n if (!checkpoint_id) {\n finalConfig = {\n configurable: {\n thread_id: row.thread_id,\n checkpoint_ns,\n checkpoint_id: row.checkpoint_id,\n },\n };\n }\n\n if (\n finalConfig.configurable?.thread_id === undefined ||\n finalConfig.configurable?.checkpoint_id === undefined\n ) {\n throw new Error('Missing thread_id or checkpoint_id');\n }\n\n const pendingWrites = await Promise.all(\n (JSON.parse(row.pending_writes) as PendingWriteColumn[]).map(async (write) => {\n return [\n write.task_id,\n write.channel,\n await this.serde.loadsTyped(write.type ?? 'json', write.value ?? ''),\n ] as [string, string, unknown];\n }),\n );\n\n const checkpoint = (await this.serde.loadsTyped(row.type ?? 'json', row.checkpoint)) as Checkpoint;\n\n if (checkpoint.v < 4 && row.parent_checkpoint_id != null) {\n await this.migratePendingSends(checkpoint, row.thread_id, row.parent_checkpoint_id);\n }\n\n return {\n checkpoint,\n config: finalConfig,\n metadata: (await this.serde.loadsTyped(row.type ?? 'json', row.metadata)) as CheckpointMetadata,\n parentConfig: row.parent_checkpoint_id\n ? {\n configurable: {\n thread_id: row.thread_id,\n checkpoint_ns,\n checkpoint_id: row.parent_checkpoint_id,\n },\n }\n : undefined,\n pendingWrites,\n };\n }\n\n async *list(config: RunnableConfig, options?: CheckpointListOptions): AsyncGenerator<CheckpointTuple> {\n const { limit, before, filter } = options ?? {};\n this.setup();\n const thread_id = config.configurable?.thread_id;\n const checkpoint_ns = config.configurable?.checkpoint_ns;\n let sql = `\n SELECT\n thread_id,\n checkpoint_ns,\n checkpoint_id,\n parent_checkpoint_id,\n type,\n checkpoint,\n metadata,\n (\n SELECT\n json_group_array(\n json_object(\n 'task_id', pw.task_id,\n 'channel', pw.channel,\n 'type', pw.type,\n 'value', CAST(pw.value AS TEXT)\n )\n )\n FROM writes as pw\n WHERE pw.thread_id = checkpoints.thread_id\n AND pw.checkpoint_ns = checkpoints.checkpoint_ns\n AND pw.checkpoint_id = checkpoints.checkpoint_id\n ) as pending_writes,\n (\n SELECT\n json_group_array(\n json_object(\n 'type', ps.type,\n 'value', CAST(ps.value AS TEXT)\n )\n )\n FROM writes as ps\n WHERE ps.thread_id = checkpoints.thread_id\n AND ps.checkpoint_ns = checkpoints.checkpoint_ns\n AND ps.checkpoint_id = checkpoints.parent_checkpoint_id\n AND ps.channel = '${TASKS}'\n ORDER BY ps.idx\n ) as pending_sends\n FROM checkpoints\\n`;\n\n const whereClause: string[] = [];\n\n if (thread_id) {\n whereClause.push('thread_id = ?');\n }\n\n if (checkpoint_ns !== undefined && checkpoint_ns !== null) {\n whereClause.push('checkpoint_ns = ?');\n }\n\n if (before?.configurable?.checkpoint_id !== undefined) {\n whereClause.push('checkpoint_id < ?');\n }\n\n const sanitizedFilter = Object.fromEntries(\n Object.entries(filter ?? {}).filter(\n ([key, value]) =>\n value !== undefined && validCheckpointMetadataKeys.includes(key as keyof CheckpointMetadata),\n ),\n );\n\n whereClause.push(\n ...Object.entries(sanitizedFilter).map(([key]) => `jsonb(CAST(metadata AS TEXT))->'$.${key}' = ?`),\n );\n if (whereClause.length > 0) {\n sql += `WHERE\\n ${whereClause.join(' AND\\n ')}\\n`;\n }\n\n sql += '\\nORDER BY checkpoint_id DESC';\n\n if (limit) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sql += ` LIMIT ${parseInt(limit as any, 10)}`; // parseInt here (with cast to make TS happy) to sanitize input, as limit may be user-provided\n }\n\n const args = [\n thread_id,\n checkpoint_ns,\n before?.configurable?.checkpoint_id,\n ...Object.values(sanitizedFilter).map((value) => JSON.stringify(value)),\n ].filter((value) => value !== undefined && value !== null);\n\n const rows: CheckpointRow[] = this.db.prepare(sql).all(...args) as CheckpointRow[];\n\n if (rows) {\n for (const row of rows) {\n const pendingWrites = await Promise.all(\n (JSON.parse(row.pending_writes) as PendingWriteColumn[]).map(async (write) => {\n return [\n write.task_id,\n write.channel,\n await this.serde.loadsTyped(write.type ?? 'json', write.value ?? ''),\n ] as [string, string, unknown];\n }),\n );\n\n const checkpoint = (await this.serde.loadsTyped(row.type ?? 'json', row.checkpoint)) as Checkpoint;\n\n if (checkpoint.v < 4 && row.parent_checkpoint_id != null) {\n await this.migratePendingSends(checkpoint, row.thread_id, row.parent_checkpoint_id);\n }\n\n yield {\n config: {\n configurable: {\n thread_id: row.thread_id,\n checkpoint_ns: row.checkpoint_ns,\n checkpoint_id: row.checkpoint_id,\n },\n },\n checkpoint,\n metadata: (await this.serde.loadsTyped(row.type ?? 'json', row.metadata)) as CheckpointMetadata,\n parentConfig: row.parent_checkpoint_id\n ? {\n configurable: {\n thread_id: row.thread_id,\n checkpoint_ns: row.checkpoint_ns,\n checkpoint_id: row.parent_checkpoint_id,\n },\n }\n : undefined,\n pendingWrites,\n };\n }\n }\n }\n\n async put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): Promise<RunnableConfig> {\n this.setup();\n\n if (!config.configurable) {\n throw new Error('Empty configuration supplied.');\n }\n\n const thread_id = config.configurable?.thread_id;\n const checkpoint_ns = config.configurable?.checkpoint_ns ?? '';\n const parent_checkpoint_id = config.configurable?.checkpoint_id;\n\n if (!thread_id) {\n throw new Error(`Missing \"thread_id\" field in passed \"config.configurable\".`);\n }\n\n const preparedCheckpoint: Partial<Checkpoint> = copyCheckpoint(checkpoint);\n\n const [[type1, serializedCheckpoint], [type2, serializedMetadata]] = await Promise.all([\n this.serde.dumpsTyped(preparedCheckpoint),\n this.serde.dumpsTyped(metadata),\n ]);\n\n if (type1 !== type2) {\n throw new Error('Failed to serialized checkpoint and metadata to the same type.');\n }\n const row = [\n thread_id,\n checkpoint_ns,\n checkpoint.id,\n parent_checkpoint_id,\n type1,\n serializedCheckpoint,\n serializedMetadata,\n ];\n\n this.db\n .prepare(\n `INSERT OR REPLACE INTO checkpoints (thread_id, checkpoint_ns, checkpoint_id, parent_checkpoint_id, type, checkpoint, metadata) VALUES (?, ?, ?, ?, ?, ?, ?)`,\n )\n .run(...row);\n\n return {\n configurable: {\n thread_id,\n checkpoint_ns,\n checkpoint_id: checkpoint.id,\n },\n };\n }\n\n async putWrites(config: RunnableConfig, writes: PendingWrite[], taskId: string): Promise<void> {\n this.setup();\n\n if (!config.configurable) {\n throw new Error('Empty configuration supplied.');\n }\n\n if (!config.configurable?.thread_id) {\n throw new Error('Missing thread_id field in config.configurable.');\n }\n\n if (!config.configurable?.checkpoint_id) {\n throw new Error('Missing checkpoint_id field in config.configurable.');\n }\n\n const stmt = this.db.prepare(`\n INSERT OR REPLACE INTO writes \n (thread_id, checkpoint_ns, checkpoint_id, task_id, idx, channel, type, value) \n VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const transaction = this.db.transaction((rows) => {\n for (const row of rows) {\n stmt.run(...row);\n }\n });\n\n const rows = await Promise.all(\n writes.map(async (write, idx) => {\n const [type, serializedWrite] = await this.serde.dumpsTyped(write[1]);\n return [\n config.configurable?.thread_id,\n config.configurable?.checkpoint_ns,\n config.configurable?.checkpoint_id,\n taskId,\n idx,\n write[0],\n type,\n serializedWrite,\n ];\n }),\n );\n\n transaction(rows);\n }\n\n async deleteThread(threadId: string) {\n const transaction = this.db.transaction(() => {\n this.db.prepare(`DELETE FROM checkpoints WHERE thread_id = ?`).run(threadId);\n this.db.prepare(`DELETE FROM writes WHERE thread_id = ?`).run(threadId);\n });\n\n transaction();\n }\n\n protected async migratePendingSends(checkpoint: Checkpoint, threadId: string, parentCheckpointId: string) {\n const { pending_sends } = this.db\n .prepare(\n `\n SELECT\n checkpoint_id,\n json_group_array(\n json_object(\n 'type', ps.type,\n 'value', CAST(ps.value AS TEXT)\n )\n ) as pending_sends\n FROM writes as ps\n WHERE ps.thread_id = ?\n AND ps.checkpoint_id = ?\n AND ps.channel = '${TASKS}'\n ORDER BY ps.idx\n `,\n )\n .get(threadId, parentCheckpointId) as { pending_sends: string };\n\n const mutableCheckpoint = checkpoint;\n\n // add pending sends to checkpoint\n mutableCheckpoint.channel_values ??= {};\n mutableCheckpoint.channel_values[TASKS] = await Promise.all(\n JSON.parse(pending_sends).map(({ type, value }: PendingSendColumn) => this.serde.loadsTyped(type, value)),\n );\n\n // add to versions\n mutableCheckpoint.channel_versions[TASKS] =\n Object.keys(checkpoint.channel_versions).length > 0\n ? maxChannelVersion(...Object.values(checkpoint.channel_versions))\n : this.getNextVersion(undefined);\n }\n}\n"],"names":["rows"],"mappings":"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"}
|
|
@@ -1264,7 +1264,7 @@ const createCheckPointer = async () => {
|
|
|
1264
1264
|
}
|
|
1265
1265
|
if (process.env.SQLITE_DATABASE_URI) {
|
|
1266
1266
|
console.debug("LG | Using sqlite as checkpoint");
|
|
1267
|
-
const { SqliteSaver } = await import('./checkpoint-
|
|
1267
|
+
const { SqliteSaver } = await import('./checkpoint-DYSXoBLt.js');
|
|
1268
1268
|
const db = SqliteSaver.fromConnString(process.env.SQLITE_DATABASE_URI);
|
|
1269
1269
|
return db;
|
|
1270
1270
|
}
|
|
@@ -1274,7 +1274,7 @@ const createMessageQueue = async () => {
|
|
|
1274
1274
|
let q;
|
|
1275
1275
|
if (process.env.REDIS_URL) {
|
|
1276
1276
|
console.debug("LG | Using redis as stream queue");
|
|
1277
|
-
const { RedisStreamQueue } = await import('./queue-
|
|
1277
|
+
const { RedisStreamQueue } = await import('./queue-TdkMVT39.js');
|
|
1278
1278
|
q = RedisStreamQueue;
|
|
1279
1279
|
} else {
|
|
1280
1280
|
q = MemoryStreamQueue;
|
|
@@ -1547,4 +1547,4 @@ const createEndpoint = () => {
|
|
|
1547
1547
|
};
|
|
1548
1548
|
|
|
1549
1549
|
export { AssistantEndpoint as A, BaseStreamQueue as B, CancelEventMessage as C, LangGraphGlobal as L, createEndpoint as c, registerGraph as r, serialiseAsDict as s };
|
|
1550
|
-
//# sourceMappingURL=createEndpoint-
|
|
1550
|
+
//# sourceMappingURL=createEndpoint-BPk7_KN8.js.map
|