@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 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. This document will guide you on how to use Pure Graph in your projects.
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-CM_PIKjI.js';
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-BSJAJNBn.js');
5
+ const { GET, POST, DELETE } = await import('../../router-CefJEizV.js');
6
6
  return {
7
7
  GET,
8
8
  POST,
@@ -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" | "updates" | "debug" | "messages" | "custom" | "events" | "messages-tuple")[] | undefined;
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" | "updates" | "debug" | "messages" | "custom" | "events" | "messages-tuple")[] | undefined;
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?: "interrupted" | "error" | "pending" | "running" | "success" | "timeout" | undefined;
497
+ status?: "pending" | "running" | "error" | "success" | "timeout" | "interrupted" | undefined;
498
498
  limit?: number | undefined;
499
499
  offset?: number | undefined;
500
500
  }, {
501
- status?: "interrupted" | "error" | "pending" | "running" | "success" | "timeout" | undefined;
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?: "idle" | "busy" | "interrupted" | "error" | undefined;
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?: "thread_id" | "status" | "created_at" | "updated_at" | undefined;
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?: "idle" | "busy" | "interrupted" | "error" | undefined;
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?: "thread_id" | "status" | "created_at" | "updated_at" | undefined;
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-BQME4ngM.js.map
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-BQME4ngM.js');
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-XIrklJBQ.js');
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-CM_PIKjI.js.map
1550
+ //# sourceMappingURL=createEndpoint-BPk7_KN8.js.map