persona-core 1.0.0
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/db/client.d.ts +55 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +157 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/repositories/executionRepository.d.ts +15 -0
- package/dist/db/repositories/executionRepository.d.ts.map +1 -0
- package/dist/db/repositories/executionRepository.js +41 -0
- package/dist/db/repositories/executionRepository.js.map +1 -0
- package/dist/db/repositories/index.d.ts +10 -0
- package/dist/db/repositories/index.d.ts.map +1 -0
- package/dist/db/repositories/index.js +10 -0
- package/dist/db/repositories/index.js.map +1 -0
- package/dist/db/repositories/nodeRepository.d.ts +15 -0
- package/dist/db/repositories/nodeRepository.d.ts.map +1 -0
- package/dist/db/repositories/nodeRepository.js +61 -0
- package/dist/db/repositories/nodeRepository.js.map +1 -0
- package/dist/db/repositories/personaRepository.d.ts +13 -0
- package/dist/db/repositories/personaRepository.d.ts.map +1 -0
- package/dist/db/repositories/personaRepository.js +42 -0
- package/dist/db/repositories/personaRepository.js.map +1 -0
- package/dist/db/repositories/planResultRepository.d.ts +13 -0
- package/dist/db/repositories/planResultRepository.d.ts.map +1 -0
- package/dist/db/repositories/planResultRepository.js +30 -0
- package/dist/db/repositories/planResultRepository.js.map +1 -0
- package/dist/db/repositories/scheduleRepository.d.ts +27 -0
- package/dist/db/repositories/scheduleRepository.d.ts.map +1 -0
- package/dist/db/repositories/scheduleRepository.js +187 -0
- package/dist/db/repositories/scheduleRepository.js.map +1 -0
- package/dist/db/repositories/types.d.ts +132 -0
- package/dist/db/repositories/types.d.ts.map +1 -0
- package/dist/db/repositories/types.js +5 -0
- package/dist/db/repositories/types.js.map +1 -0
- package/dist/db/schema.d.ts +742 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +85 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/capabilities.d.ts +56 -0
- package/dist/llm/capabilities.d.ts.map +1 -0
- package/dist/llm/capabilities.js +305 -0
- package/dist/llm/capabilities.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +10 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/interfaces.d.ts +249 -0
- package/dist/llm/interfaces.d.ts.map +1 -0
- package/dist/llm/interfaces.js +5 -0
- package/dist/llm/interfaces.js.map +1 -0
- package/dist/llm/providers/anthropic-compatible.d.ts +48 -0
- package/dist/llm/providers/anthropic-compatible.d.ts.map +1 -0
- package/dist/llm/providers/anthropic-compatible.js +163 -0
- package/dist/llm/providers/anthropic-compatible.js.map +1 -0
- package/dist/llm/providers/index.d.ts +14 -0
- package/dist/llm/providers/index.d.ts.map +1 -0
- package/dist/llm/providers/index.js +12 -0
- package/dist/llm/providers/index.js.map +1 -0
- package/dist/llm/providers/openai-compatible.d.ts +59 -0
- package/dist/llm/providers/openai-compatible.d.ts.map +1 -0
- package/dist/llm/providers/openai-compatible.js +207 -0
- package/dist/llm/providers/openai-compatible.js.map +1 -0
- package/dist/services/actionService.d.ts +132 -0
- package/dist/services/actionService.d.ts.map +1 -0
- package/dist/services/actionService.js +971 -0
- package/dist/services/actionService.js.map +1 -0
- package/dist/services/branchService.d.ts +19 -0
- package/dist/services/branchService.d.ts.map +1 -0
- package/dist/services/branchService.js +50 -0
- package/dist/services/branchService.js.map +1 -0
- package/dist/services/expressionEvaluator.d.ts +16 -0
- package/dist/services/expressionEvaluator.d.ts.map +1 -0
- package/dist/services/expressionEvaluator.js +70 -0
- package/dist/services/expressionEvaluator.js.map +1 -0
- package/dist/services/factory.d.ts +43 -0
- package/dist/services/factory.d.ts.map +1 -0
- package/dist/services/factory.js +30 -0
- package/dist/services/factory.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +17 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/interfaces.d.ts +117 -0
- package/dist/services/interfaces.d.ts.map +1 -0
- package/dist/services/interfaces.js +5 -0
- package/dist/services/interfaces.js.map +1 -0
- package/dist/services/loaders/fileLoader.d.ts +56 -0
- package/dist/services/loaders/fileLoader.d.ts.map +1 -0
- package/dist/services/loaders/fileLoader.js +161 -0
- package/dist/services/loaders/fileLoader.js.map +1 -0
- package/dist/services/loaders/index.d.ts +6 -0
- package/dist/services/loaders/index.d.ts.map +1 -0
- package/dist/services/loaders/index.js +6 -0
- package/dist/services/loaders/index.js.map +1 -0
- package/dist/services/loaders/transformers.d.ts +32 -0
- package/dist/services/loaders/transformers.d.ts.map +1 -0
- package/dist/services/loaders/transformers.js +78 -0
- package/dist/services/loaders/transformers.js.map +1 -0
- package/dist/services/mockAction.d.ts +65 -0
- package/dist/services/mockAction.d.ts.map +1 -0
- package/dist/services/mockAction.js +153 -0
- package/dist/services/mockAction.js.map +1 -0
- package/dist/services/mockBranch.d.ts +50 -0
- package/dist/services/mockBranch.d.ts.map +1 -0
- package/dist/services/mockBranch.js +75 -0
- package/dist/services/mockBranch.js.map +1 -0
- package/dist/services/mockThinking.d.ts +68 -0
- package/dist/services/mockThinking.d.ts.map +1 -0
- package/dist/services/mockThinking.js +89 -0
- package/dist/services/mockThinking.js.map +1 -0
- package/dist/services/thinkingService.d.ts +15 -0
- package/dist/services/thinkingService.d.ts.map +1 -0
- package/dist/services/thinkingService.js +117 -0
- package/dist/services/thinkingService.js.map +1 -0
- package/dist/temporal/activities/actionActivities.d.ts +15 -0
- package/dist/temporal/activities/actionActivities.d.ts.map +1 -0
- package/dist/temporal/activities/actionActivities.js +140 -0
- package/dist/temporal/activities/actionActivities.js.map +1 -0
- package/dist/temporal/activities/branchActivities.d.ts +13 -0
- package/dist/temporal/activities/branchActivities.d.ts.map +1 -0
- package/dist/temporal/activities/branchActivities.js +26 -0
- package/dist/temporal/activities/branchActivities.js.map +1 -0
- package/dist/temporal/activities/dbActivities.d.ts +14 -0
- package/dist/temporal/activities/dbActivities.d.ts.map +1 -0
- package/dist/temporal/activities/dbActivities.js +84 -0
- package/dist/temporal/activities/dbActivities.js.map +1 -0
- package/dist/temporal/activities/index.d.ts +9 -0
- package/dist/temporal/activities/index.d.ts.map +1 -0
- package/dist/temporal/activities/index.js +9 -0
- package/dist/temporal/activities/index.js.map +1 -0
- package/dist/temporal/activities/thinkingActivities.d.ts +17 -0
- package/dist/temporal/activities/thinkingActivities.d.ts.map +1 -0
- package/dist/temporal/activities/thinkingActivities.js +145 -0
- package/dist/temporal/activities/thinkingActivities.js.map +1 -0
- package/dist/temporal/activities/types.d.ts +100 -0
- package/dist/temporal/activities/types.d.ts.map +1 -0
- package/dist/temporal/activities/types.js +5 -0
- package/dist/temporal/activities/types.js.map +1 -0
- package/dist/temporal/client.d.ts +43 -0
- package/dist/temporal/client.d.ts.map +1 -0
- package/dist/temporal/client.js +75 -0
- package/dist/temporal/client.js.map +1 -0
- package/dist/temporal/index.d.ts +10 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.js +12 -0
- package/dist/temporal/index.js.map +1 -0
- package/dist/temporal/personaCoreClient.d.ts +199 -0
- package/dist/temporal/personaCoreClient.d.ts.map +1 -0
- package/dist/temporal/personaCoreClient.js +233 -0
- package/dist/temporal/personaCoreClient.js.map +1 -0
- package/dist/temporal/personaWorker.d.ts +141 -0
- package/dist/temporal/personaWorker.d.ts.map +1 -0
- package/dist/temporal/personaWorker.js +93 -0
- package/dist/temporal/personaWorker.js.map +1 -0
- package/dist/temporal/worker.d.ts +66 -0
- package/dist/temporal/worker.d.ts.map +1 -0
- package/dist/temporal/worker.js +109 -0
- package/dist/temporal/worker.js.map +1 -0
- package/dist/temporal/workflows/index.d.ts +5 -0
- package/dist/temporal/workflows/index.d.ts.map +1 -0
- package/dist/temporal/workflows/index.js +5 -0
- package/dist/temporal/workflows/index.js.map +1 -0
- package/dist/temporal/workflows/scheduleWorkflow.d.ts +31 -0
- package/dist/temporal/workflows/scheduleWorkflow.d.ts.map +1 -0
- package/dist/temporal/workflows/scheduleWorkflow.js +256 -0
- package/dist/temporal/workflows/scheduleWorkflow.js.map +1 -0
- package/dist/types/common.d.ts +81 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +5 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/nodes.d.ts +496 -0
- package/dist/types/nodes.d.ts.map +1 -0
- package/dist/types/nodes.js +5 -0
- package/dist/types/nodes.js.map +1 -0
- package/dist/types/persona.d.ts +59 -0
- package/dist/types/persona.d.ts.map +1 -0
- package/dist/types/persona.js +36 -0
- package/dist/types/persona.js.map +1 -0
- package/dist/types/schedule.d.ts +143 -0
- package/dist/types/schedule.d.ts.map +1 -0
- package/dist/types/schedule.js +155 -0
- package/dist/types/schedule.js.map +1 -0
- package/dist/utils/dateUtils.d.ts +31 -0
- package/dist/utils/dateUtils.d.ts.map +1 -0
- package/dist/utils/dateUtils.js +53 -0
- package/dist/utils/dateUtils.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/inputResolver.d.ts +43 -0
- package/dist/utils/inputResolver.d.ts.map +1 -0
- package/dist/utils/inputResolver.js +137 -0
- package/dist/utils/inputResolver.js.map +1 -0
- package/dist/utils/sharedDataUtils.d.ts +36 -0
- package/dist/utils/sharedDataUtils.d.ts.map +1 -0
- package/dist/utils/sharedDataUtils.js +84 -0
- package/dist/utils/sharedDataUtils.js.map +1 -0
- package/dist/utils/typeGuards.d.ts +33 -0
- package/dist/utils/typeGuards.d.ts.map +1 -0
- package/dist/utils/typeGuards.js +50 -0
- package/dist/utils/typeGuards.js.map +1 -0
- package/docs/add-llm-provider.md +353 -0
- package/docs/external/deepseek-v32.md +28 -0
- package/docs/quick-start.md +849 -0
- package/docs/suite-guide.md +148 -0
- package/docs/usage-guide.md +1487 -0
- package/package.json +80 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数据库客户端
|
|
3
|
+
* 支持 PGlite (测试/开发) 和 PostgreSQL (生产)
|
|
4
|
+
*/
|
|
5
|
+
import { PGlite } from '@electric-sql/pglite';
|
|
6
|
+
import { PgliteDatabase } from 'drizzle-orm/pglite';
|
|
7
|
+
import postgres from 'postgres';
|
|
8
|
+
import * as schema from './schema.js';
|
|
9
|
+
export type DatabaseClient = PgliteDatabase<typeof schema>;
|
|
10
|
+
/**
|
|
11
|
+
* 数据库连接句柄
|
|
12
|
+
* 包含数据库客户端和清理方法
|
|
13
|
+
*/
|
|
14
|
+
export interface DatabaseHandle {
|
|
15
|
+
/** Drizzle 数据库客户端 */
|
|
16
|
+
db: DatabaseClient;
|
|
17
|
+
/** 关闭数据库连接 */
|
|
18
|
+
close: () => Promise<void>;
|
|
19
|
+
/** 底层 PGlite 实例(仅 PGlite 模式) */
|
|
20
|
+
pglite?: PGlite;
|
|
21
|
+
/** 底层 postgres.js 客户端(仅 PostgreSQL 模式) */
|
|
22
|
+
pgClient?: postgres.Sql;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 创建 PGlite 数据库客户端
|
|
26
|
+
*/
|
|
27
|
+
export declare function createDatabaseClient(pglite: PGlite): DatabaseClient;
|
|
28
|
+
/**
|
|
29
|
+
* 创建 PostgreSQL 数据库客户端
|
|
30
|
+
* @param connectionString PostgreSQL 连接字符串,如 "postgres://user:pass@host:5432/db"
|
|
31
|
+
*/
|
|
32
|
+
export declare function createPostgresClient(connectionString: string): {
|
|
33
|
+
db: DatabaseClient;
|
|
34
|
+
client: postgres.Sql;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* 创建内存数据库(用于测试)
|
|
38
|
+
*/
|
|
39
|
+
export declare function createInMemoryDatabase(): Promise<{
|
|
40
|
+
db: DatabaseClient;
|
|
41
|
+
pglite: PGlite;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* 自动创建数据库连接
|
|
45
|
+
* 根据是否提供 PostgreSQL URL 选择使用 PostgreSQL 或 PGlite 内存数据库
|
|
46
|
+
*
|
|
47
|
+
* @param postgresUrl 可选的 PostgreSQL 连接字符串
|
|
48
|
+
* @returns 数据库句柄,包含 db 客户端和 close 方法
|
|
49
|
+
*/
|
|
50
|
+
export declare function createDatabase(postgresUrl?: string): Promise<DatabaseHandle>;
|
|
51
|
+
/**
|
|
52
|
+
* 运行数据库迁移(创建表)
|
|
53
|
+
*/
|
|
54
|
+
export declare function runMigrations(pglite: PGlite): Promise<void>;
|
|
55
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAA4B,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAGtC,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,EAAE,EAAE,cAAc,CAAC;IACnB,cAAc;IACd,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAEnE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAC9D,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;CACtB,CAKA;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAID;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwBlF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FjE"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数据库客户端
|
|
3
|
+
* 支持 PGlite (测试/开发) 和 PostgreSQL (生产)
|
|
4
|
+
*/
|
|
5
|
+
import { PGlite } from '@electric-sql/pglite';
|
|
6
|
+
import { drizzle as drizzlePglite } from 'drizzle-orm/pglite';
|
|
7
|
+
import { drizzle as drizzlePostgres } from 'drizzle-orm/postgres-js';
|
|
8
|
+
import postgres from 'postgres';
|
|
9
|
+
import * as schema from './schema.js';
|
|
10
|
+
/**
|
|
11
|
+
* 创建 PGlite 数据库客户端
|
|
12
|
+
*/
|
|
13
|
+
export function createDatabaseClient(pglite) {
|
|
14
|
+
return drizzlePglite(pglite, { schema });
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 创建 PostgreSQL 数据库客户端
|
|
18
|
+
* @param connectionString PostgreSQL 连接字符串,如 "postgres://user:pass@host:5432/db"
|
|
19
|
+
*/
|
|
20
|
+
export function createPostgresClient(connectionString) {
|
|
21
|
+
const client = postgres(connectionString);
|
|
22
|
+
// 使用类型断言,因为两种 drizzle 实例 API 兼容
|
|
23
|
+
const db = drizzlePostgres(client, { schema });
|
|
24
|
+
return { db, client };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 创建内存数据库(用于测试)
|
|
28
|
+
*/
|
|
29
|
+
export async function createInMemoryDatabase() {
|
|
30
|
+
const pglite = new PGlite();
|
|
31
|
+
const db = createDatabaseClient(pglite);
|
|
32
|
+
return { db, pglite };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 自动创建数据库连接
|
|
36
|
+
* 根据是否提供 PostgreSQL URL 选择使用 PostgreSQL 或 PGlite 内存数据库
|
|
37
|
+
*
|
|
38
|
+
* @param postgresUrl 可选的 PostgreSQL 连接字符串
|
|
39
|
+
* @returns 数据库句柄,包含 db 客户端和 close 方法
|
|
40
|
+
*/
|
|
41
|
+
export async function createDatabase(postgresUrl) {
|
|
42
|
+
if (postgresUrl) {
|
|
43
|
+
// 使用 PostgreSQL
|
|
44
|
+
const { db, client } = createPostgresClient(postgresUrl);
|
|
45
|
+
return {
|
|
46
|
+
db,
|
|
47
|
+
pgClient: client,
|
|
48
|
+
close: async () => {
|
|
49
|
+
await client.end();
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// 使用 PGlite 内存数据库
|
|
55
|
+
const pglite = new PGlite();
|
|
56
|
+
await runMigrations(pglite);
|
|
57
|
+
const db = createDatabaseClient(pglite);
|
|
58
|
+
return {
|
|
59
|
+
db,
|
|
60
|
+
pglite,
|
|
61
|
+
close: async () => {
|
|
62
|
+
await pglite.close();
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 运行数据库迁移(创建表)
|
|
69
|
+
*/
|
|
70
|
+
export async function runMigrations(pglite) {
|
|
71
|
+
// 创建 schedules 表
|
|
72
|
+
await pglite.exec(`
|
|
73
|
+
CREATE TABLE IF NOT EXISTS schedules (
|
|
74
|
+
id VARCHAR(64) PRIMARY KEY,
|
|
75
|
+
persona_id VARCHAR(64) NOT NULL,
|
|
76
|
+
persona JSONB NOT NULL,
|
|
77
|
+
name VARCHAR(256) NOT NULL,
|
|
78
|
+
description TEXT,
|
|
79
|
+
status VARCHAR(32) NOT NULL DEFAULT 'pending',
|
|
80
|
+
entry_node_id VARCHAR(64) NOT NULL,
|
|
81
|
+
current_node_id VARCHAR(64),
|
|
82
|
+
shared_data JSONB,
|
|
83
|
+
runtime_state JSONB,
|
|
84
|
+
execution_seq INTEGER DEFAULT 0,
|
|
85
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
86
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
87
|
+
started_at TIMESTAMP,
|
|
88
|
+
completed_at TIMESTAMP
|
|
89
|
+
)
|
|
90
|
+
`);
|
|
91
|
+
// 创建 schedule_nodes 表
|
|
92
|
+
await pglite.exec(`
|
|
93
|
+
CREATE TABLE IF NOT EXISTS schedule_nodes (
|
|
94
|
+
id VARCHAR(64) PRIMARY KEY,
|
|
95
|
+
schedule_id VARCHAR(64) NOT NULL,
|
|
96
|
+
kind VARCHAR(32) NOT NULL,
|
|
97
|
+
config JSONB,
|
|
98
|
+
next_node_id VARCHAR(64),
|
|
99
|
+
on_failure VARCHAR(32),
|
|
100
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
101
|
+
created_by VARCHAR(64)
|
|
102
|
+
)
|
|
103
|
+
`);
|
|
104
|
+
// 创建索引
|
|
105
|
+
await pglite.exec(`
|
|
106
|
+
CREATE INDEX IF NOT EXISTS schedule_nodes_schedule_id_idx
|
|
107
|
+
ON schedule_nodes(schedule_id)
|
|
108
|
+
`);
|
|
109
|
+
// 创建 node_executions 表
|
|
110
|
+
await pglite.exec(`
|
|
111
|
+
CREATE TABLE IF NOT EXISTS node_executions (
|
|
112
|
+
id VARCHAR(64) PRIMARY KEY,
|
|
113
|
+
schedule_id VARCHAR(64) NOT NULL,
|
|
114
|
+
node_id VARCHAR(64) NOT NULL,
|
|
115
|
+
status VARCHAR(32) NOT NULL,
|
|
116
|
+
result JSONB,
|
|
117
|
+
error TEXT,
|
|
118
|
+
retry_count INTEGER DEFAULT 0,
|
|
119
|
+
started_at TIMESTAMP,
|
|
120
|
+
completed_at TIMESTAMP
|
|
121
|
+
)
|
|
122
|
+
`);
|
|
123
|
+
// 创建索引
|
|
124
|
+
await pglite.exec(`
|
|
125
|
+
CREATE INDEX IF NOT EXISTS node_executions_schedule_id_idx
|
|
126
|
+
ON node_executions(schedule_id)
|
|
127
|
+
`);
|
|
128
|
+
await pglite.exec(`
|
|
129
|
+
CREATE INDEX IF NOT EXISTS node_executions_node_id_idx
|
|
130
|
+
ON node_executions(node_id)
|
|
131
|
+
`);
|
|
132
|
+
await pglite.exec(`
|
|
133
|
+
CREATE INDEX IF NOT EXISTS node_executions_schedule_node_idx
|
|
134
|
+
ON node_executions(schedule_id, node_id)
|
|
135
|
+
`);
|
|
136
|
+
// 创建 plan_results 表
|
|
137
|
+
await pglite.exec(`
|
|
138
|
+
CREATE TABLE IF NOT EXISTS plan_results (
|
|
139
|
+
idempotency_key VARCHAR(256) PRIMARY KEY,
|
|
140
|
+
result JSONB NOT NULL,
|
|
141
|
+
created_at TIMESTAMP DEFAULT NOW()
|
|
142
|
+
)
|
|
143
|
+
`);
|
|
144
|
+
// 创建 personas 表
|
|
145
|
+
await pglite.exec(`
|
|
146
|
+
CREATE TABLE IF NOT EXISTS personas (
|
|
147
|
+
id VARCHAR(64) PRIMARY KEY,
|
|
148
|
+
name VARCHAR(256) NOT NULL,
|
|
149
|
+
description TEXT,
|
|
150
|
+
system_prompt TEXT NOT NULL,
|
|
151
|
+
action_types JSONB NOT NULL,
|
|
152
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
153
|
+
updated_at TIMESTAMP DEFAULT NOW()
|
|
154
|
+
)
|
|
155
|
+
`);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAoBtC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,gBAAwB;IAI3D,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1C,gCAAgC;IAChC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAA8B,CAAC;IAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAI1C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAoB;IACvD,IAAI,WAAW,EAAE,CAAC;QAChB,gBAAgB;QAChB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACzD,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO;YACL,EAAE;YACF,MAAM;YACN,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,iBAAiB;IACjB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;GAkBjB,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;GAWjB,CAAC,CAAC;IAEH,OAAO;IACP,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYjB,CAAC,CAAC;IAEH,OAAO;IACP,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,IAAI,CAAC;;;GAGjB,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;GAMjB,CAAC,CAAC;IAEH,gBAAgB;IAChB,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;GAUjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC"}
|
package/dist/db/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execution Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { DatabaseClient } from '../client.js';
|
|
5
|
+
import { ExecutionRepository } from './types.js';
|
|
6
|
+
import { NodeExecutionRecord } from '../../types/index.js';
|
|
7
|
+
export declare class ExecutionRepositoryImpl implements ExecutionRepository {
|
|
8
|
+
private db;
|
|
9
|
+
constructor(db: DatabaseClient);
|
|
10
|
+
recordExecution(record: NodeExecutionRecord & {
|
|
11
|
+
scheduleId: string;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
getExecutionHistory(scheduleId: string): Promise<NodeExecutionRecord[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=executionRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executionRepository.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/executionRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,sBAAsB,CAAC;AAEhF,qBAAa,uBAAwB,YAAW,mBAAmB;IACrD,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEhC,eAAe,CACnB,MAAM,EAAE,mBAAmB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,IAAI,CAAC;IAcV,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAgB9E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execution Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { eq } from 'drizzle-orm';
|
|
5
|
+
import { v4 as uuid } from 'uuid';
|
|
6
|
+
import { nodeExecutions } from '../schema.js';
|
|
7
|
+
export class ExecutionRepositoryImpl {
|
|
8
|
+
db;
|
|
9
|
+
constructor(db) {
|
|
10
|
+
this.db = db;
|
|
11
|
+
}
|
|
12
|
+
async recordExecution(record) {
|
|
13
|
+
await this.db.insert(nodeExecutions).values({
|
|
14
|
+
id: uuid(),
|
|
15
|
+
scheduleId: record.scheduleId,
|
|
16
|
+
nodeId: record.nodeId,
|
|
17
|
+
status: record.status,
|
|
18
|
+
result: record.result,
|
|
19
|
+
error: record.error,
|
|
20
|
+
retryCount: record.retryCount ?? 0,
|
|
21
|
+
startedAt: record.startedAt,
|
|
22
|
+
completedAt: record.completedAt,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async getExecutionHistory(scheduleId) {
|
|
26
|
+
const rows = await this.db
|
|
27
|
+
.select()
|
|
28
|
+
.from(nodeExecutions)
|
|
29
|
+
.where(eq(nodeExecutions.scheduleId, scheduleId));
|
|
30
|
+
return rows.map(row => ({
|
|
31
|
+
nodeId: row.nodeId,
|
|
32
|
+
status: row.status,
|
|
33
|
+
startedAt: row.startedAt ?? undefined,
|
|
34
|
+
completedAt: row.completedAt ?? undefined,
|
|
35
|
+
result: row.result,
|
|
36
|
+
error: row.error ?? undefined,
|
|
37
|
+
retryCount: row.retryCount ?? undefined,
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=executionRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executionRepository.js","sourceRoot":"","sources":["../../../src/db/repositories/executionRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,OAAO,uBAAuB;IACd;IAApB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C,KAAK,CAAC,eAAe,CACnB,MAAoD;QAEpD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;YAC1C,EAAE,EAAE,IAAI,EAAE;YACV,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,cAAc,CAAC;aACpB,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAA6B;YACzC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;YACrC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACzC,MAAM,EAAE,GAAG,CAAC,MAA6C;YACzD,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;YAC7B,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository 导出
|
|
3
|
+
*/
|
|
4
|
+
export * from './types.js';
|
|
5
|
+
export { ScheduleRepositoryImpl, InvalidStatusTransitionError } from './scheduleRepository.js';
|
|
6
|
+
export { NodeRepositoryImpl } from './nodeRepository.js';
|
|
7
|
+
export { ExecutionRepositoryImpl } from './executionRepository.js';
|
|
8
|
+
export { PlanResultRepositoryImpl } from './planResultRepository.js';
|
|
9
|
+
export { PersonaRepositoryImpl } from './personaRepository.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository 导出
|
|
3
|
+
*/
|
|
4
|
+
export * from './types.js';
|
|
5
|
+
export { ScheduleRepositoryImpl, InvalidStatusTransitionError } from './scheduleRepository.js';
|
|
6
|
+
export { NodeRepositoryImpl } from './nodeRepository.js';
|
|
7
|
+
export { ExecutionRepositoryImpl } from './executionRepository.js';
|
|
8
|
+
export { PlanResultRepositoryImpl } from './planResultRepository.js';
|
|
9
|
+
export { PersonaRepositoryImpl } from './personaRepository.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { DatabaseClient } from '../client.js';
|
|
5
|
+
import { NodeRepository } from './types.js';
|
|
6
|
+
import { NodeInstance } from '../../types/index.js';
|
|
7
|
+
export declare class NodeRepositoryImpl implements NodeRepository {
|
|
8
|
+
private db;
|
|
9
|
+
constructor(db: DatabaseClient);
|
|
10
|
+
getNode(nodeId: string): Promise<NodeInstance | null>;
|
|
11
|
+
createNodes(scheduleId: string, nodes: NodeInstance[], createdBy: string): Promise<void>;
|
|
12
|
+
updateNodeNextId(nodeId: string, nextNodeId: string | null): Promise<void>;
|
|
13
|
+
getNodesByScheduleId(scheduleId: string): Promise<NodeInstance[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=nodeRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeRepository.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/nodeRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,kBAAmB,YAAW,cAAc;IAC3C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEhC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAoBrD,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAcV,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAexE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { eq } from 'drizzle-orm';
|
|
5
|
+
import { scheduleNodes } from '../schema.js';
|
|
6
|
+
export class NodeRepositoryImpl {
|
|
7
|
+
db;
|
|
8
|
+
constructor(db) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
}
|
|
11
|
+
async getNode(nodeId) {
|
|
12
|
+
const rows = await this.db
|
|
13
|
+
.select()
|
|
14
|
+
.from(scheduleNodes)
|
|
15
|
+
.where(eq(scheduleNodes.id, nodeId));
|
|
16
|
+
if (rows.length === 0) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const row = rows[0];
|
|
20
|
+
const config = row.config;
|
|
21
|
+
return {
|
|
22
|
+
...config,
|
|
23
|
+
id: row.id,
|
|
24
|
+
nextNodeId: row.nextNodeId,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async createNodes(scheduleId, nodes, createdBy) {
|
|
28
|
+
for (const node of nodes) {
|
|
29
|
+
await this.db.insert(scheduleNodes).values({
|
|
30
|
+
id: node.id,
|
|
31
|
+
scheduleId,
|
|
32
|
+
kind: node.kind,
|
|
33
|
+
config: node,
|
|
34
|
+
nextNodeId: node.nextNodeId,
|
|
35
|
+
createdAt: new Date(),
|
|
36
|
+
createdBy,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async updateNodeNextId(nodeId, nextNodeId) {
|
|
41
|
+
await this.db
|
|
42
|
+
.update(scheduleNodes)
|
|
43
|
+
.set({ nextNodeId })
|
|
44
|
+
.where(eq(scheduleNodes.id, nodeId));
|
|
45
|
+
}
|
|
46
|
+
async getNodesByScheduleId(scheduleId) {
|
|
47
|
+
const rows = await this.db
|
|
48
|
+
.select()
|
|
49
|
+
.from(scheduleNodes)
|
|
50
|
+
.where(eq(scheduleNodes.scheduleId, scheduleId));
|
|
51
|
+
return rows.map(row => {
|
|
52
|
+
const config = row.config;
|
|
53
|
+
return {
|
|
54
|
+
...config,
|
|
55
|
+
id: row.id,
|
|
56
|
+
nextNodeId: row.nextNodeId,
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=nodeRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeRepository.js","sourceRoot":"","sources":["../../../src/db/repositories/nodeRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAsB,CAAC;QAE1C,OAAO;YACL,GAAG,MAAM;YACT,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,KAAqB,EACrB,SAAiB;QAEjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;gBACzC,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,UAAU;gBACV,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,UAAyB;QAC9D,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,aAAa,CAAC;aACrB,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC;aACnB,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,UAAkB;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACpB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAsB,CAAC;YAC1C,OAAO;gBACL,GAAG,MAAM;gBACT,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,UAAU,EAAE,GAAG,CAAC,UAAU;aAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { DatabaseClient } from '../client.js';
|
|
5
|
+
import { PersonaRepository } from './types.js';
|
|
6
|
+
import { Persona } from '../../types/index.js';
|
|
7
|
+
export declare class PersonaRepositoryImpl implements PersonaRepository {
|
|
8
|
+
private db;
|
|
9
|
+
constructor(db: DatabaseClient);
|
|
10
|
+
getPersona(personaId: string): Promise<Persona | null>;
|
|
11
|
+
createPersona(persona: Persona): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=personaRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaRepository.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/personaRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,qBAAsB,YAAW,iBAAiB;IACjD,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEhC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAsBtD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAWrD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { eq } from 'drizzle-orm';
|
|
5
|
+
import { personas } from '../schema.js';
|
|
6
|
+
export class PersonaRepositoryImpl {
|
|
7
|
+
db;
|
|
8
|
+
constructor(db) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
}
|
|
11
|
+
async getPersona(personaId) {
|
|
12
|
+
const rows = await this.db
|
|
13
|
+
.select()
|
|
14
|
+
.from(personas)
|
|
15
|
+
.where(eq(personas.id, personaId));
|
|
16
|
+
if (rows.length === 0) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const row = rows[0];
|
|
20
|
+
return {
|
|
21
|
+
id: row.id,
|
|
22
|
+
name: row.name,
|
|
23
|
+
description: row.description ?? undefined,
|
|
24
|
+
systemPrompt: row.systemPrompt,
|
|
25
|
+
actionTypes: row.actionTypes,
|
|
26
|
+
createdAt: row.createdAt ?? new Date(),
|
|
27
|
+
updatedAt: row.updatedAt ?? new Date(),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
async createPersona(persona) {
|
|
31
|
+
await this.db.insert(personas).values({
|
|
32
|
+
id: persona.id,
|
|
33
|
+
name: persona.name,
|
|
34
|
+
description: persona.description,
|
|
35
|
+
systemPrompt: persona.systemPrompt,
|
|
36
|
+
actionTypes: persona.actionTypes,
|
|
37
|
+
createdAt: persona.createdAt,
|
|
38
|
+
updatedAt: persona.updatedAt,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=personaRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaRepository.js","sourceRoot":"","sources":["../../../src/db/repositories/personaRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,MAAM,OAAO,qBAAqB;IACZ;IAApB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,QAAQ,CAAC;aACd,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACzC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,WAAW,EAAE,GAAG,CAAC,WAA+B;YAChD,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE;YACtC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACpC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Result Repository 实现
|
|
3
|
+
* 用于思考节点的幂等性保证
|
|
4
|
+
*/
|
|
5
|
+
import { DatabaseClient } from '../client.js';
|
|
6
|
+
import { PlanResultRepository } from './types.js';
|
|
7
|
+
export declare class PlanResultRepositoryImpl implements PlanResultRepository {
|
|
8
|
+
private db;
|
|
9
|
+
constructor(db: DatabaseClient);
|
|
10
|
+
getExistingResult(idempotencyKey: string): Promise<Record<string, unknown> | null>;
|
|
11
|
+
savePlanResult(idempotencyKey: string, result: Record<string, unknown>): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=planResultRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planResultRepository.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/planResultRepository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,wBAAyB,YAAW,oBAAoB;IACvD,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEhC,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAalF,cAAc,CAClB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAOjB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Result Repository 实现
|
|
3
|
+
* 用于思考节点的幂等性保证
|
|
4
|
+
*/
|
|
5
|
+
import { eq } from 'drizzle-orm';
|
|
6
|
+
import { planResults } from '../schema.js';
|
|
7
|
+
export class PlanResultRepositoryImpl {
|
|
8
|
+
db;
|
|
9
|
+
constructor(db) {
|
|
10
|
+
this.db = db;
|
|
11
|
+
}
|
|
12
|
+
async getExistingResult(idempotencyKey) {
|
|
13
|
+
const rows = await this.db
|
|
14
|
+
.select()
|
|
15
|
+
.from(planResults)
|
|
16
|
+
.where(eq(planResults.idempotencyKey, idempotencyKey));
|
|
17
|
+
if (rows.length === 0) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return rows[0].result;
|
|
21
|
+
}
|
|
22
|
+
async savePlanResult(idempotencyKey, result) {
|
|
23
|
+
await this.db.insert(planResults).values({
|
|
24
|
+
idempotencyKey,
|
|
25
|
+
result,
|
|
26
|
+
createdAt: new Date(),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=planResultRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planResultRepository.js","sourceRoot":"","sources":["../../../src/db/repositories/planResultRepository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAO,wBAAwB;IACf;IAApB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C,KAAK,CAAC,iBAAiB,CAAC,cAAsB;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAiC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,cAAsB,EACtB,MAA+B;QAE/B,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YACvC,cAAc;YACd,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { DatabaseClient } from '../client.js';
|
|
5
|
+
import { ScheduleRepository, RuntimeState, ScheduleWithNodes } from './types.js';
|
|
6
|
+
import { Schedule, ScheduleStatus, SharedDataInstance } from '../../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* 状态转换验证错误
|
|
9
|
+
*/
|
|
10
|
+
export declare class InvalidStatusTransitionError extends Error {
|
|
11
|
+
readonly currentStatus: ScheduleStatus;
|
|
12
|
+
readonly targetStatus: ScheduleStatus;
|
|
13
|
+
constructor(currentStatus: ScheduleStatus, targetStatus: ScheduleStatus);
|
|
14
|
+
}
|
|
15
|
+
export declare class ScheduleRepositoryImpl implements ScheduleRepository {
|
|
16
|
+
private db;
|
|
17
|
+
constructor(db: DatabaseClient);
|
|
18
|
+
getScheduleWithNodes(scheduleId: string): Promise<ScheduleWithNodes | null>;
|
|
19
|
+
createSchedule(schedule: Schedule): Promise<void>;
|
|
20
|
+
updateScheduleStatus(scheduleId: string, status: ScheduleStatus): Promise<void>;
|
|
21
|
+
setCurrentNode(scheduleId: string, nodeId: string | null): Promise<void>;
|
|
22
|
+
updateSharedData(scheduleId: string, data: SharedDataInstance): Promise<void>;
|
|
23
|
+
saveRuntimeState(scheduleId: string, state: RuntimeState): Promise<void>;
|
|
24
|
+
getRuntimeState(scheduleId: string): Promise<RuntimeState | null>;
|
|
25
|
+
incrementExecutionSeq(scheduleId: string): Promise<number>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=scheduleRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduleRepository.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/scheduleRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAe9B;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;aAEnC,aAAa,EAAE,cAAc;aAC7B,YAAY,EAAE,cAAc;gBAD5B,aAAa,EAAE,cAAc,EAC7B,YAAY,EAAE,cAAc;CAK/C;AAED,qBAAa,sBAAuB,YAAW,kBAAkB;IACnD,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEhC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiD3E,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BjD,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC/E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7E,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAajE,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAajE"}
|