@langgraph-js/pure-graph 2.1.6 → 2.2.7

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.
Files changed (33) hide show
  1. package/README.md +3 -2
  2. package/dist/adapter/hono/index.js +2 -4
  3. package/dist/adapter/hono/index.js.map +1 -1
  4. package/dist/adapter/nextjs/index.js +2 -2
  5. package/dist/adapter/zod.d.ts +2 -2
  6. package/dist/checkpoint-DnfHhpJw.js +1418 -0
  7. package/dist/checkpoint-DnfHhpJw.js.map +1 -0
  8. package/dist/{createEndpoint-C-7CCNeN.js → createEndpoint-C4CZKD_H.js} +2 -2
  9. package/dist/{createEndpoint-C-7CCNeN.js.map → createEndpoint-C4CZKD_H.js.map} +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/pg-adapter-BFtir1GE.js +67 -0
  12. package/dist/pg-adapter-BFtir1GE.js.map +1 -0
  13. package/dist/{queue-CVAmN8_S.js → queue-CPD5lKsF.js} +2 -2
  14. package/dist/{queue-CVAmN8_S.js.map → queue-CPD5lKsF.js.map} +1 -1
  15. package/dist/{router-DgmIokTx.js → router-IrP4bKOw.js} +3 -3
  16. package/dist/{router-DgmIokTx.js.map → router-IrP4bKOw.js.map} +1 -1
  17. package/dist/sqlite-adapter-BNYk10Gl.js +76 -0
  18. package/dist/sqlite-adapter-BNYk10Gl.js.map +1 -0
  19. package/dist/storage/index.d.ts +2 -3
  20. package/dist/storage/kysely/adapter.d.ts +44 -0
  21. package/dist/storage/kysely/index.d.ts +9 -0
  22. package/dist/storage/kysely/pg-adapter.d.ts +23 -0
  23. package/dist/storage/kysely/sqlite-adapter.d.ts +22 -0
  24. package/dist/storage/{sqlite → kysely}/threads.d.ts +9 -6
  25. package/dist/storage/kysely/types.d.ts +27 -0
  26. package/dist/{stream-BwdFJfJb.js → stream-St9J2mYt.js} +232 -602
  27. package/dist/stream-St9J2mYt.js.map +1 -0
  28. package/package.json +2 -2
  29. package/dist/checkpoint-DYSXoBLt.js +0 -390
  30. package/dist/checkpoint-DYSXoBLt.js.map +0 -1
  31. package/dist/storage/pg/threads.d.ts +0 -44
  32. package/dist/storage/sqlite/DB.d.ts +0 -3
  33. package/dist/stream-BwdFJfJb.js.map +0 -1
@@ -1,12 +1,11 @@
1
1
  import { BaseStreamQueueInterface, StreamQueueManager } from '../queue/stream_queue';
2
+ import { KyselyThreadsManager } from './kysely/threads';
2
3
  import { MemorySaver } from './memory/checkpoint';
3
4
  import { MemoryThreadsManager } from './memory/threads';
4
5
  import type { SqliteSaver as SqliteSaverType } from './sqlite/checkpoint';
5
6
  import type { PostgresSaver } from '@langchain/langgraph-checkpoint-postgres';
6
- import { SQLiteThreadsManager } from './sqlite/threads';
7
- import { PostgresThreadsManager } from './pg/threads';
8
7
  export declare const createCheckPointer: () => Promise<SqliteSaverType | PostgresSaver | import("@langchain/langgraph-checkpoint-redis").RedisSaver | import("@langchain/langgraph-checkpoint-redis/shallow").ShallowRedisSaver | MemorySaver>;
9
8
  export declare const createMessageQueue: () => Promise<StreamQueueManager<BaseStreamQueueInterface>>;
10
9
  export declare const createThreadManager: (config: {
11
10
  checkpointer?: SqliteSaverType | PostgresSaver;
12
- }) => Promise<PostgresThreadsManager<unknown> | SQLiteThreadsManager<unknown> | MemoryThreadsManager<unknown>>;
11
+ }) => Promise<KyselyThreadsManager<unknown> | MemoryThreadsManager<unknown>>;
@@ -0,0 +1,44 @@
1
+ import { Kysely, SqlBool, Expression } from 'kysely';
2
+ import { Database } from './types';
3
+ /**
4
+ * 数据库适配器接口
5
+ * 处理不同数据库间的差异,特别是时间类型和 JSON 查询
6
+ */
7
+ export interface DatabaseAdapter {
8
+ db: Kysely<Database>;
9
+ /**
10
+ * 将 Date 转换为数据库原生时间类型
11
+ */
12
+ dateToDb(date: Date): any;
13
+ /**
14
+ * 将数据库时间类型转换为 Date
15
+ */
16
+ dbToDate(dbValue: any): Date;
17
+ /**
18
+ * 将对象转换为数据库 JSON 类型
19
+ */
20
+ jsonToDb(obj: any): any;
21
+ /**
22
+ * 将数据库 JSON 类型转换为对象
23
+ */
24
+ dbToJson(dbValue: any): any;
25
+ /**
26
+ * 构建 JSON 字段查询表达式
27
+ * @param field - JSON 字段名(如 'metadata')
28
+ * @param key - JSON 对象的键
29
+ * @param value - 要匹配的值
30
+ */
31
+ buildJsonQuery(db: Kysely<Database>, field: 'metadata' | 'interrupts', key: string, value: any): Expression<SqlBool>;
32
+ /**
33
+ * 获取当前时间的数据库表示
34
+ */
35
+ now(): any;
36
+ /**
37
+ * 创建数据库表
38
+ */
39
+ createTables(db: Kysely<Database>): Promise<void>;
40
+ /**
41
+ * 创建索引
42
+ */
43
+ createIndexes(db: Kysely<Database>): Promise<void>;
44
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Kysely-based storage implementation
3
+ * 使用 Kysely 实现的存储层,支持多数据库适配
4
+ */
5
+ export type { Database, ThreadsTable, RunsTable } from './types';
6
+ export { type DatabaseAdapter } from './adapter';
7
+ export { PostgresAdapter } from './pg-adapter';
8
+ export { SQLiteAdapter } from './sqlite-adapter';
9
+ export { KyselyThreadsManager } from './threads';
@@ -0,0 +1,23 @@
1
+ import { Kysely, SqlBool, Expression } from 'kysely';
2
+ import { DatabaseAdapter } from './adapter';
3
+ import { Database } from './types';
4
+ import { Pool } from 'pg';
5
+ /**
6
+ * PostgreSQL 适配器
7
+ * - 时间类型:原生 TIMESTAMP
8
+ * - JSON 类型:JSONB
9
+ * - JSON 查询:使用 -> 和 ->> 操作符
10
+ */
11
+ export declare class PostgresAdapter implements DatabaseAdapter {
12
+ pool: Pool;
13
+ db: Kysely<Database>;
14
+ constructor(pool: Pool);
15
+ dateToDb(date: Date): Date;
16
+ dbToDate(dbValue: any): Date;
17
+ jsonToDb(obj: any): any;
18
+ dbToJson(dbValue: any): any;
19
+ buildJsonQuery(db: Kysely<Database>, field: 'metadata' | 'interrupts', key: string, value: any): Expression<SqlBool>;
20
+ now(): Date;
21
+ createTables(db: Kysely<Database>): Promise<void>;
22
+ createIndexes(db: Kysely<Database>): Promise<void>;
23
+ }
@@ -0,0 +1,22 @@
1
+ import { Kysely, SqlBool, Expression } from 'kysely';
2
+ import { DatabaseAdapter } from './adapter';
3
+ import { Database } from './types';
4
+ /**
5
+ * SQLite 适配器
6
+ * - 时间类型:TEXT (ISO 8601 字符串)
7
+ * - JSON 类型:TEXT
8
+ * - JSON 查询:使用 json_extract 函数
9
+ */
10
+ export declare class SQLiteAdapter implements DatabaseAdapter {
11
+ database: any;
12
+ db: Kysely<Database>;
13
+ constructor(database: any);
14
+ dateToDb(date: Date): string;
15
+ dbToDate(dbValue: any): Date;
16
+ jsonToDb(obj: any): string;
17
+ dbToJson(dbValue: any): any;
18
+ buildJsonQuery(db: Kysely<Database>, field: 'metadata' | 'interrupts', key: string, value: any): Expression<SqlBool>;
19
+ now(): string;
20
+ createTables(db: Kysely<Database>): Promise<void>;
21
+ createIndexes(db: Kysely<Database>): Promise<void>;
22
+ }
@@ -1,12 +1,15 @@
1
1
  import { BaseThreadsManager } from '../../threads/index.js';
2
2
  import { Command, Config, Metadata, OnConflictBehavior, Run, Thread, ThreadStatus } from '@langgraph-js/sdk';
3
- import type { SqliteSaver } from './checkpoint.js';
4
- import type { DatabaseType } from './type.js';
5
3
  import { RunStatus, SortOrder, ThreadSortBy } from '../../types';
6
- export declare class SQLiteThreadsManager<ValuesType = unknown> implements BaseThreadsManager<ValuesType> {
7
- db: DatabaseType;
8
- private isSetup;
9
- constructor(checkpointer: SqliteSaver);
4
+ import { DatabaseAdapter } from './adapter';
5
+ /**
6
+ * 使用 Kysely 实现的统一 ThreadsManager
7
+ * 通过适配器模式处理不同数据库的差异
8
+ */
9
+ export declare class KyselyThreadsManager<ValuesType = unknown> implements BaseThreadsManager<ValuesType> {
10
+ private db;
11
+ private adapter;
12
+ constructor(adapter: DatabaseAdapter);
10
13
  setup(): Promise<void>;
11
14
  create(payload?: {
12
15
  metadata?: Metadata;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Kysely 数据库类型定义
3
+ * 这里定义的是应用层的类型,不是数据库原始类型
4
+ */
5
+ export interface ThreadsTable {
6
+ thread_id: string;
7
+ created_at: Date;
8
+ updated_at: Date;
9
+ metadata: Record<string, any>;
10
+ status: string;
11
+ values: any;
12
+ interrupts: Record<string, any>;
13
+ }
14
+ export interface RunsTable {
15
+ run_id: string;
16
+ thread_id: string;
17
+ assistant_id: string;
18
+ created_at: Date;
19
+ updated_at: Date;
20
+ status: string;
21
+ metadata: Record<string, any>;
22
+ multitask_strategy: string;
23
+ }
24
+ export interface Database {
25
+ threads: ThreadsTable;
26
+ runs: RunsTable;
27
+ }