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,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Repository 实现
|
|
3
|
+
*/
|
|
4
|
+
import { eq, sql } from 'drizzle-orm';
|
|
5
|
+
import { schedules, scheduleNodes } from '../schema.js';
|
|
6
|
+
/**
|
|
7
|
+
* 有效的状态转换映射
|
|
8
|
+
* 定义每个状态可以转换到的目标状态列表
|
|
9
|
+
*/
|
|
10
|
+
const VALID_STATUS_TRANSITIONS = {
|
|
11
|
+
'pending': ['running', 'cancelled'],
|
|
12
|
+
'running': ['paused', 'completed', 'failed', 'cancelled'],
|
|
13
|
+
'paused': ['running', 'cancelled'],
|
|
14
|
+
'completed': [], // 终态,不允许转换
|
|
15
|
+
'failed': [], // 终态,不允许转换
|
|
16
|
+
'cancelled': [], // 终态,不允许转换
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* 状态转换验证错误
|
|
20
|
+
*/
|
|
21
|
+
export class InvalidStatusTransitionError extends Error {
|
|
22
|
+
currentStatus;
|
|
23
|
+
targetStatus;
|
|
24
|
+
constructor(currentStatus, targetStatus) {
|
|
25
|
+
super(`Invalid status transition from '${currentStatus}' to '${targetStatus}'`);
|
|
26
|
+
this.currentStatus = currentStatus;
|
|
27
|
+
this.targetStatus = targetStatus;
|
|
28
|
+
this.name = 'InvalidStatusTransitionError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class ScheduleRepositoryImpl {
|
|
32
|
+
db;
|
|
33
|
+
constructor(db) {
|
|
34
|
+
this.db = db;
|
|
35
|
+
}
|
|
36
|
+
async getScheduleWithNodes(scheduleId) {
|
|
37
|
+
// 获取 schedule
|
|
38
|
+
const scheduleRows = await this.db
|
|
39
|
+
.select()
|
|
40
|
+
.from(schedules)
|
|
41
|
+
.where(eq(schedules.id, scheduleId));
|
|
42
|
+
if (scheduleRows.length === 0) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const scheduleRow = scheduleRows[0];
|
|
46
|
+
// 获取所有节点
|
|
47
|
+
const nodeRows = await this.db
|
|
48
|
+
.select()
|
|
49
|
+
.from(scheduleNodes)
|
|
50
|
+
.where(eq(scheduleNodes.scheduleId, scheduleId));
|
|
51
|
+
// 构建节点映射
|
|
52
|
+
const nodes = {};
|
|
53
|
+
for (const row of nodeRows) {
|
|
54
|
+
const config = row.config;
|
|
55
|
+
nodes[row.id] = {
|
|
56
|
+
...config,
|
|
57
|
+
id: row.id,
|
|
58
|
+
nextNodeId: row.nextNodeId,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
id: scheduleRow.id,
|
|
63
|
+
personaId: scheduleRow.personaId,
|
|
64
|
+
persona: scheduleRow.persona,
|
|
65
|
+
name: scheduleRow.name,
|
|
66
|
+
description: scheduleRow.description ?? undefined,
|
|
67
|
+
status: scheduleRow.status,
|
|
68
|
+
entryNodeId: scheduleRow.entryNodeId,
|
|
69
|
+
currentNodeId: scheduleRow.currentNodeId ?? null,
|
|
70
|
+
sharedData: scheduleRow.sharedData ?? { data: {}, fieldTypes: {} },
|
|
71
|
+
executionSeq: scheduleRow.executionSeq ?? 0,
|
|
72
|
+
nodes,
|
|
73
|
+
createdAt: scheduleRow.createdAt ?? new Date(),
|
|
74
|
+
updatedAt: scheduleRow.updatedAt ?? new Date(),
|
|
75
|
+
startedAt: scheduleRow.startedAt ?? undefined,
|
|
76
|
+
completedAt: scheduleRow.completedAt ?? undefined,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async createSchedule(schedule) {
|
|
80
|
+
// 插入 schedule(包含 persona 快照)
|
|
81
|
+
await this.db.insert(schedules).values({
|
|
82
|
+
id: schedule.id,
|
|
83
|
+
personaId: schedule.personaId,
|
|
84
|
+
persona: schedule.persona,
|
|
85
|
+
name: schedule.name,
|
|
86
|
+
description: schedule.description,
|
|
87
|
+
status: schedule.status,
|
|
88
|
+
entryNodeId: schedule.entryNodeId,
|
|
89
|
+
currentNodeId: schedule.currentNodeId ?? schedule.entryNodeId,
|
|
90
|
+
sharedData: schedule.sharedData,
|
|
91
|
+
executionSeq: 0,
|
|
92
|
+
createdAt: schedule.createdAt,
|
|
93
|
+
updatedAt: schedule.updatedAt,
|
|
94
|
+
});
|
|
95
|
+
// 插入所有节点
|
|
96
|
+
for (const [nodeId, node] of Object.entries(schedule.nodes)) {
|
|
97
|
+
await this.db.insert(scheduleNodes).values({
|
|
98
|
+
id: nodeId,
|
|
99
|
+
scheduleId: schedule.id,
|
|
100
|
+
kind: node.kind,
|
|
101
|
+
config: node,
|
|
102
|
+
nextNodeId: node.nextNodeId,
|
|
103
|
+
createdAt: new Date(),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async updateScheduleStatus(scheduleId, status) {
|
|
108
|
+
// 获取当前状态进行验证
|
|
109
|
+
const current = await this.getScheduleWithNodes(scheduleId);
|
|
110
|
+
if (!current) {
|
|
111
|
+
throw new Error(`Schedule ${scheduleId} not found`);
|
|
112
|
+
}
|
|
113
|
+
// 幂等性:如果目标状态与当前状态相同,静默成功
|
|
114
|
+
if (current.status === status) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// 验证状态转换是否有效
|
|
118
|
+
const allowedTransitions = VALID_STATUS_TRANSITIONS[current.status];
|
|
119
|
+
if (!allowedTransitions.includes(status)) {
|
|
120
|
+
throw new InvalidStatusTransitionError(current.status, status);
|
|
121
|
+
}
|
|
122
|
+
const updates = {
|
|
123
|
+
status,
|
|
124
|
+
updatedAt: new Date(),
|
|
125
|
+
};
|
|
126
|
+
if (status === 'running') {
|
|
127
|
+
updates.startedAt = new Date();
|
|
128
|
+
}
|
|
129
|
+
else if (status === 'completed' || status === 'failed' || status === 'cancelled') {
|
|
130
|
+
updates.completedAt = new Date();
|
|
131
|
+
}
|
|
132
|
+
await this.db
|
|
133
|
+
.update(schedules)
|
|
134
|
+
.set(updates)
|
|
135
|
+
.where(eq(schedules.id, scheduleId));
|
|
136
|
+
}
|
|
137
|
+
async setCurrentNode(scheduleId, nodeId) {
|
|
138
|
+
await this.db
|
|
139
|
+
.update(schedules)
|
|
140
|
+
.set({
|
|
141
|
+
currentNodeId: nodeId,
|
|
142
|
+
updatedAt: new Date(),
|
|
143
|
+
})
|
|
144
|
+
.where(eq(schedules.id, scheduleId));
|
|
145
|
+
}
|
|
146
|
+
async updateSharedData(scheduleId, data) {
|
|
147
|
+
await this.db
|
|
148
|
+
.update(schedules)
|
|
149
|
+
.set({
|
|
150
|
+
sharedData: data,
|
|
151
|
+
updatedAt: new Date(),
|
|
152
|
+
})
|
|
153
|
+
.where(eq(schedules.id, scheduleId));
|
|
154
|
+
}
|
|
155
|
+
async saveRuntimeState(scheduleId, state) {
|
|
156
|
+
await this.db
|
|
157
|
+
.update(schedules)
|
|
158
|
+
.set({
|
|
159
|
+
runtimeState: state,
|
|
160
|
+
updatedAt: new Date(),
|
|
161
|
+
})
|
|
162
|
+
.where(eq(schedules.id, scheduleId));
|
|
163
|
+
}
|
|
164
|
+
async getRuntimeState(scheduleId) {
|
|
165
|
+
const rows = await this.db
|
|
166
|
+
.select({ runtimeState: schedules.runtimeState })
|
|
167
|
+
.from(schedules)
|
|
168
|
+
.where(eq(schedules.id, scheduleId));
|
|
169
|
+
if (rows.length === 0 || !rows[0].runtimeState) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
return rows[0].runtimeState;
|
|
173
|
+
}
|
|
174
|
+
async incrementExecutionSeq(scheduleId) {
|
|
175
|
+
// 使用 SQL 原子递增操作,避免竞态条件
|
|
176
|
+
const result = await this.db
|
|
177
|
+
.update(schedules)
|
|
178
|
+
.set({
|
|
179
|
+
executionSeq: sql `COALESCE(${schedules.executionSeq}, 0) + 1`,
|
|
180
|
+
updatedAt: new Date(),
|
|
181
|
+
})
|
|
182
|
+
.where(eq(schedules.id, scheduleId))
|
|
183
|
+
.returning({ executionSeq: schedules.executionSeq });
|
|
184
|
+
return result[0]?.executionSeq ?? 1;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=scheduleRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduleRepository.js","sourceRoot":"","sources":["../../../src/db/repositories/scheduleRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository 类型定义
|
|
3
|
+
*/
|
|
4
|
+
import { Schedule, ScheduleStatus, NodeInstance, NodeExecutionRecord, Persona, SharedDataInstance } from '../../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* 运行时状态(用于 Continue-as-New 恢复)
|
|
7
|
+
*/
|
|
8
|
+
export interface RuntimeState {
|
|
9
|
+
totalIterations: number;
|
|
10
|
+
recentNodeIds: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Schedule 及其节点的完整数据
|
|
14
|
+
*/
|
|
15
|
+
export interface ScheduleWithNodes {
|
|
16
|
+
id: string;
|
|
17
|
+
personaId: string;
|
|
18
|
+
/** Persona 快照,启动时嵌入存储 */
|
|
19
|
+
persona: Persona;
|
|
20
|
+
name: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
status: ScheduleStatus;
|
|
23
|
+
entryNodeId: string;
|
|
24
|
+
currentNodeId: string | null;
|
|
25
|
+
sharedData: SharedDataInstance;
|
|
26
|
+
executionSeq: number;
|
|
27
|
+
nodes: Record<string, NodeInstance>;
|
|
28
|
+
createdAt: Date;
|
|
29
|
+
updatedAt: Date;
|
|
30
|
+
startedAt?: Date;
|
|
31
|
+
completedAt?: Date;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Schedule Repository 接口
|
|
35
|
+
*/
|
|
36
|
+
export interface ScheduleRepository {
|
|
37
|
+
/**
|
|
38
|
+
* 获取 Schedule(包含所有节点)
|
|
39
|
+
*/
|
|
40
|
+
getScheduleWithNodes(scheduleId: string): Promise<ScheduleWithNodes | null>;
|
|
41
|
+
/**
|
|
42
|
+
* 创建 Schedule
|
|
43
|
+
*/
|
|
44
|
+
createSchedule(schedule: Schedule): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* 更新 Schedule 状态
|
|
47
|
+
*/
|
|
48
|
+
updateScheduleStatus(scheduleId: string, status: ScheduleStatus): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* 设置当前节点
|
|
51
|
+
*/
|
|
52
|
+
setCurrentNode(scheduleId: string, nodeId: string | null): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* 更新共享数据
|
|
55
|
+
*/
|
|
56
|
+
updateSharedData(scheduleId: string, data: SharedDataInstance): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* 保存运行时状态
|
|
59
|
+
*/
|
|
60
|
+
saveRuntimeState(scheduleId: string, state: RuntimeState): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* 获取运行时状态
|
|
63
|
+
*/
|
|
64
|
+
getRuntimeState(scheduleId: string): Promise<RuntimeState | null>;
|
|
65
|
+
/**
|
|
66
|
+
* 增加执行序号
|
|
67
|
+
*/
|
|
68
|
+
incrementExecutionSeq(scheduleId: string): Promise<number>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Node Repository 接口
|
|
72
|
+
*/
|
|
73
|
+
export interface NodeRepository {
|
|
74
|
+
/**
|
|
75
|
+
* 获取节点
|
|
76
|
+
*/
|
|
77
|
+
getNode(nodeId: string): Promise<NodeInstance | null>;
|
|
78
|
+
/**
|
|
79
|
+
* 批量创建节点
|
|
80
|
+
*/
|
|
81
|
+
createNodes(scheduleId: string, nodes: NodeInstance[], createdBy: string): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* 更新节点的 nextNodeId
|
|
84
|
+
*/
|
|
85
|
+
updateNodeNextId(nodeId: string, nextNodeId: string | null): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* 获取 Schedule 的所有节点
|
|
88
|
+
*/
|
|
89
|
+
getNodesByScheduleId(scheduleId: string): Promise<NodeInstance[]>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Execution Repository 接口
|
|
93
|
+
*/
|
|
94
|
+
export interface ExecutionRepository {
|
|
95
|
+
/**
|
|
96
|
+
* 记录节点执行
|
|
97
|
+
*/
|
|
98
|
+
recordExecution(record: NodeExecutionRecord & {
|
|
99
|
+
scheduleId: string;
|
|
100
|
+
}): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* 获取执行历史
|
|
103
|
+
*/
|
|
104
|
+
getExecutionHistory(scheduleId: string): Promise<NodeExecutionRecord[]>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Plan Result Repository 接口
|
|
108
|
+
*/
|
|
109
|
+
export interface PlanResultRepository {
|
|
110
|
+
/**
|
|
111
|
+
* 获取已存在的规划结果(用于幂等性)
|
|
112
|
+
*/
|
|
113
|
+
getExistingResult(idempotencyKey: string): Promise<Record<string, unknown> | null>;
|
|
114
|
+
/**
|
|
115
|
+
* 保存规划结果
|
|
116
|
+
*/
|
|
117
|
+
savePlanResult(idempotencyKey: string, result: Record<string, unknown>): Promise<void>;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Persona Repository 接口
|
|
121
|
+
*/
|
|
122
|
+
export interface PersonaRepository {
|
|
123
|
+
/**
|
|
124
|
+
* 获取 Persona
|
|
125
|
+
*/
|
|
126
|
+
getPersona(personaId: string): Promise<Persona | null>;
|
|
127
|
+
/**
|
|
128
|
+
* 创建 Persona
|
|
129
|
+
*/
|
|
130
|
+
createPersona(persona: Persona): Promise<void>;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/db/repositories/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|