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.
Files changed (218) hide show
  1. package/dist/db/client.d.ts +55 -0
  2. package/dist/db/client.d.ts.map +1 -0
  3. package/dist/db/client.js +157 -0
  4. package/dist/db/client.js.map +1 -0
  5. package/dist/db/index.d.ts +7 -0
  6. package/dist/db/index.d.ts.map +1 -0
  7. package/dist/db/index.js +7 -0
  8. package/dist/db/index.js.map +1 -0
  9. package/dist/db/repositories/executionRepository.d.ts +15 -0
  10. package/dist/db/repositories/executionRepository.d.ts.map +1 -0
  11. package/dist/db/repositories/executionRepository.js +41 -0
  12. package/dist/db/repositories/executionRepository.js.map +1 -0
  13. package/dist/db/repositories/index.d.ts +10 -0
  14. package/dist/db/repositories/index.d.ts.map +1 -0
  15. package/dist/db/repositories/index.js +10 -0
  16. package/dist/db/repositories/index.js.map +1 -0
  17. package/dist/db/repositories/nodeRepository.d.ts +15 -0
  18. package/dist/db/repositories/nodeRepository.d.ts.map +1 -0
  19. package/dist/db/repositories/nodeRepository.js +61 -0
  20. package/dist/db/repositories/nodeRepository.js.map +1 -0
  21. package/dist/db/repositories/personaRepository.d.ts +13 -0
  22. package/dist/db/repositories/personaRepository.d.ts.map +1 -0
  23. package/dist/db/repositories/personaRepository.js +42 -0
  24. package/dist/db/repositories/personaRepository.js.map +1 -0
  25. package/dist/db/repositories/planResultRepository.d.ts +13 -0
  26. package/dist/db/repositories/planResultRepository.d.ts.map +1 -0
  27. package/dist/db/repositories/planResultRepository.js +30 -0
  28. package/dist/db/repositories/planResultRepository.js.map +1 -0
  29. package/dist/db/repositories/scheduleRepository.d.ts +27 -0
  30. package/dist/db/repositories/scheduleRepository.d.ts.map +1 -0
  31. package/dist/db/repositories/scheduleRepository.js +187 -0
  32. package/dist/db/repositories/scheduleRepository.js.map +1 -0
  33. package/dist/db/repositories/types.d.ts +132 -0
  34. package/dist/db/repositories/types.d.ts.map +1 -0
  35. package/dist/db/repositories/types.js +5 -0
  36. package/dist/db/repositories/types.js.map +1 -0
  37. package/dist/db/schema.d.ts +742 -0
  38. package/dist/db/schema.d.ts.map +1 -0
  39. package/dist/db/schema.js +85 -0
  40. package/dist/db/schema.js.map +1 -0
  41. package/dist/index.d.ts +11 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +16 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/llm/capabilities.d.ts +56 -0
  46. package/dist/llm/capabilities.d.ts.map +1 -0
  47. package/dist/llm/capabilities.js +305 -0
  48. package/dist/llm/capabilities.js.map +1 -0
  49. package/dist/llm/index.d.ts +7 -0
  50. package/dist/llm/index.d.ts.map +1 -0
  51. package/dist/llm/index.js +10 -0
  52. package/dist/llm/index.js.map +1 -0
  53. package/dist/llm/interfaces.d.ts +249 -0
  54. package/dist/llm/interfaces.d.ts.map +1 -0
  55. package/dist/llm/interfaces.js +5 -0
  56. package/dist/llm/interfaces.js.map +1 -0
  57. package/dist/llm/providers/anthropic-compatible.d.ts +48 -0
  58. package/dist/llm/providers/anthropic-compatible.d.ts.map +1 -0
  59. package/dist/llm/providers/anthropic-compatible.js +163 -0
  60. package/dist/llm/providers/anthropic-compatible.js.map +1 -0
  61. package/dist/llm/providers/index.d.ts +14 -0
  62. package/dist/llm/providers/index.d.ts.map +1 -0
  63. package/dist/llm/providers/index.js +12 -0
  64. package/dist/llm/providers/index.js.map +1 -0
  65. package/dist/llm/providers/openai-compatible.d.ts +59 -0
  66. package/dist/llm/providers/openai-compatible.d.ts.map +1 -0
  67. package/dist/llm/providers/openai-compatible.js +207 -0
  68. package/dist/llm/providers/openai-compatible.js.map +1 -0
  69. package/dist/services/actionService.d.ts +132 -0
  70. package/dist/services/actionService.d.ts.map +1 -0
  71. package/dist/services/actionService.js +971 -0
  72. package/dist/services/actionService.js.map +1 -0
  73. package/dist/services/branchService.d.ts +19 -0
  74. package/dist/services/branchService.d.ts.map +1 -0
  75. package/dist/services/branchService.js +50 -0
  76. package/dist/services/branchService.js.map +1 -0
  77. package/dist/services/expressionEvaluator.d.ts +16 -0
  78. package/dist/services/expressionEvaluator.d.ts.map +1 -0
  79. package/dist/services/expressionEvaluator.js +70 -0
  80. package/dist/services/expressionEvaluator.js.map +1 -0
  81. package/dist/services/factory.d.ts +43 -0
  82. package/dist/services/factory.d.ts.map +1 -0
  83. package/dist/services/factory.js +30 -0
  84. package/dist/services/factory.js.map +1 -0
  85. package/dist/services/index.d.ts +15 -0
  86. package/dist/services/index.d.ts.map +1 -0
  87. package/dist/services/index.js +17 -0
  88. package/dist/services/index.js.map +1 -0
  89. package/dist/services/interfaces.d.ts +117 -0
  90. package/dist/services/interfaces.d.ts.map +1 -0
  91. package/dist/services/interfaces.js +5 -0
  92. package/dist/services/interfaces.js.map +1 -0
  93. package/dist/services/loaders/fileLoader.d.ts +56 -0
  94. package/dist/services/loaders/fileLoader.d.ts.map +1 -0
  95. package/dist/services/loaders/fileLoader.js +161 -0
  96. package/dist/services/loaders/fileLoader.js.map +1 -0
  97. package/dist/services/loaders/index.d.ts +6 -0
  98. package/dist/services/loaders/index.d.ts.map +1 -0
  99. package/dist/services/loaders/index.js +6 -0
  100. package/dist/services/loaders/index.js.map +1 -0
  101. package/dist/services/loaders/transformers.d.ts +32 -0
  102. package/dist/services/loaders/transformers.d.ts.map +1 -0
  103. package/dist/services/loaders/transformers.js +78 -0
  104. package/dist/services/loaders/transformers.js.map +1 -0
  105. package/dist/services/mockAction.d.ts +65 -0
  106. package/dist/services/mockAction.d.ts.map +1 -0
  107. package/dist/services/mockAction.js +153 -0
  108. package/dist/services/mockAction.js.map +1 -0
  109. package/dist/services/mockBranch.d.ts +50 -0
  110. package/dist/services/mockBranch.d.ts.map +1 -0
  111. package/dist/services/mockBranch.js +75 -0
  112. package/dist/services/mockBranch.js.map +1 -0
  113. package/dist/services/mockThinking.d.ts +68 -0
  114. package/dist/services/mockThinking.d.ts.map +1 -0
  115. package/dist/services/mockThinking.js +89 -0
  116. package/dist/services/mockThinking.js.map +1 -0
  117. package/dist/services/thinkingService.d.ts +15 -0
  118. package/dist/services/thinkingService.d.ts.map +1 -0
  119. package/dist/services/thinkingService.js +117 -0
  120. package/dist/services/thinkingService.js.map +1 -0
  121. package/dist/temporal/activities/actionActivities.d.ts +15 -0
  122. package/dist/temporal/activities/actionActivities.d.ts.map +1 -0
  123. package/dist/temporal/activities/actionActivities.js +140 -0
  124. package/dist/temporal/activities/actionActivities.js.map +1 -0
  125. package/dist/temporal/activities/branchActivities.d.ts +13 -0
  126. package/dist/temporal/activities/branchActivities.d.ts.map +1 -0
  127. package/dist/temporal/activities/branchActivities.js +26 -0
  128. package/dist/temporal/activities/branchActivities.js.map +1 -0
  129. package/dist/temporal/activities/dbActivities.d.ts +14 -0
  130. package/dist/temporal/activities/dbActivities.d.ts.map +1 -0
  131. package/dist/temporal/activities/dbActivities.js +84 -0
  132. package/dist/temporal/activities/dbActivities.js.map +1 -0
  133. package/dist/temporal/activities/index.d.ts +9 -0
  134. package/dist/temporal/activities/index.d.ts.map +1 -0
  135. package/dist/temporal/activities/index.js +9 -0
  136. package/dist/temporal/activities/index.js.map +1 -0
  137. package/dist/temporal/activities/thinkingActivities.d.ts +17 -0
  138. package/dist/temporal/activities/thinkingActivities.d.ts.map +1 -0
  139. package/dist/temporal/activities/thinkingActivities.js +145 -0
  140. package/dist/temporal/activities/thinkingActivities.js.map +1 -0
  141. package/dist/temporal/activities/types.d.ts +100 -0
  142. package/dist/temporal/activities/types.d.ts.map +1 -0
  143. package/dist/temporal/activities/types.js +5 -0
  144. package/dist/temporal/activities/types.js.map +1 -0
  145. package/dist/temporal/client.d.ts +43 -0
  146. package/dist/temporal/client.d.ts.map +1 -0
  147. package/dist/temporal/client.js +75 -0
  148. package/dist/temporal/client.js.map +1 -0
  149. package/dist/temporal/index.d.ts +10 -0
  150. package/dist/temporal/index.d.ts.map +1 -0
  151. package/dist/temporal/index.js +12 -0
  152. package/dist/temporal/index.js.map +1 -0
  153. package/dist/temporal/personaCoreClient.d.ts +199 -0
  154. package/dist/temporal/personaCoreClient.d.ts.map +1 -0
  155. package/dist/temporal/personaCoreClient.js +233 -0
  156. package/dist/temporal/personaCoreClient.js.map +1 -0
  157. package/dist/temporal/personaWorker.d.ts +141 -0
  158. package/dist/temporal/personaWorker.d.ts.map +1 -0
  159. package/dist/temporal/personaWorker.js +93 -0
  160. package/dist/temporal/personaWorker.js.map +1 -0
  161. package/dist/temporal/worker.d.ts +66 -0
  162. package/dist/temporal/worker.d.ts.map +1 -0
  163. package/dist/temporal/worker.js +109 -0
  164. package/dist/temporal/worker.js.map +1 -0
  165. package/dist/temporal/workflows/index.d.ts +5 -0
  166. package/dist/temporal/workflows/index.d.ts.map +1 -0
  167. package/dist/temporal/workflows/index.js +5 -0
  168. package/dist/temporal/workflows/index.js.map +1 -0
  169. package/dist/temporal/workflows/scheduleWorkflow.d.ts +31 -0
  170. package/dist/temporal/workflows/scheduleWorkflow.d.ts.map +1 -0
  171. package/dist/temporal/workflows/scheduleWorkflow.js +256 -0
  172. package/dist/temporal/workflows/scheduleWorkflow.js.map +1 -0
  173. package/dist/types/common.d.ts +81 -0
  174. package/dist/types/common.d.ts.map +1 -0
  175. package/dist/types/common.js +5 -0
  176. package/dist/types/common.js.map +1 -0
  177. package/dist/types/index.d.ts +8 -0
  178. package/dist/types/index.d.ts.map +1 -0
  179. package/dist/types/index.js +12 -0
  180. package/dist/types/index.js.map +1 -0
  181. package/dist/types/nodes.d.ts +496 -0
  182. package/dist/types/nodes.d.ts.map +1 -0
  183. package/dist/types/nodes.js +5 -0
  184. package/dist/types/nodes.js.map +1 -0
  185. package/dist/types/persona.d.ts +59 -0
  186. package/dist/types/persona.d.ts.map +1 -0
  187. package/dist/types/persona.js +36 -0
  188. package/dist/types/persona.js.map +1 -0
  189. package/dist/types/schedule.d.ts +143 -0
  190. package/dist/types/schedule.d.ts.map +1 -0
  191. package/dist/types/schedule.js +155 -0
  192. package/dist/types/schedule.js.map +1 -0
  193. package/dist/utils/dateUtils.d.ts +31 -0
  194. package/dist/utils/dateUtils.d.ts.map +1 -0
  195. package/dist/utils/dateUtils.js +53 -0
  196. package/dist/utils/dateUtils.js.map +1 -0
  197. package/dist/utils/index.d.ts +8 -0
  198. package/dist/utils/index.d.ts.map +1 -0
  199. package/dist/utils/index.js +8 -0
  200. package/dist/utils/index.js.map +1 -0
  201. package/dist/utils/inputResolver.d.ts +43 -0
  202. package/dist/utils/inputResolver.d.ts.map +1 -0
  203. package/dist/utils/inputResolver.js +137 -0
  204. package/dist/utils/inputResolver.js.map +1 -0
  205. package/dist/utils/sharedDataUtils.d.ts +36 -0
  206. package/dist/utils/sharedDataUtils.d.ts.map +1 -0
  207. package/dist/utils/sharedDataUtils.js +84 -0
  208. package/dist/utils/sharedDataUtils.js.map +1 -0
  209. package/dist/utils/typeGuards.d.ts +33 -0
  210. package/dist/utils/typeGuards.d.ts.map +1 -0
  211. package/dist/utils/typeGuards.js +50 -0
  212. package/dist/utils/typeGuards.js.map +1 -0
  213. package/docs/add-llm-provider.md +353 -0
  214. package/docs/external/deepseek-v32.md +28 -0
  215. package/docs/quick-start.md +849 -0
  216. package/docs/suite-guide.md +148 -0
  217. package/docs/usage-guide.md +1487 -0
  218. 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,5 @@
1
+ /**
2
+ * Repository 类型定义
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/db/repositories/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}