persona-core-opencode 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/client/index.d.ts +5 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +6 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/personaCoreClient.d.ts +102 -0
- package/dist/client/personaCoreClient.d.ts.map +1 -0
- package/dist/client/personaCoreClient.js +166 -0
- package/dist/client/personaCoreClient.js.map +1 -0
- package/dist/client/workflowHandle.d.ts +62 -0
- package/dist/client/workflowHandle.d.ts.map +1 -0
- package/dist/client/workflowHandle.js +100 -0
- package/dist/client/workflowHandle.js.map +1 -0
- package/dist/generators/index.d.ts +5 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +5 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/toolFileGenerator.d.ts +15 -0
- package/dist/generators/toolFileGenerator.d.ts.map +1 -0
- package/dist/generators/toolFileGenerator.js +385 -0
- package/dist/generators/toolFileGenerator.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/persona/index.d.ts +5 -0
- package/dist/persona/index.d.ts.map +1 -0
- package/dist/persona/index.js +5 -0
- package/dist/persona/index.js.map +1 -0
- package/dist/persona/personaRegistry.d.ts +79 -0
- package/dist/persona/personaRegistry.d.ts.map +1 -0
- package/dist/persona/personaRegistry.js +151 -0
- package/dist/persona/personaRegistry.js.map +1 -0
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +6 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/sessionHandle.d.ts +82 -0
- package/dist/session/sessionHandle.d.ts.map +1 -0
- package/dist/session/sessionHandle.js +82 -0
- package/dist/session/sessionHandle.js.map +1 -0
- package/dist/session/sessionManager.d.ts +72 -0
- package/dist/session/sessionManager.d.ts.map +1 -0
- package/dist/session/sessionManager.js +300 -0
- package/dist/session/sessionManager.js.map +1 -0
- package/dist/types/common.d.ts +94 -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 +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/nodes.d.ts +313 -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 +58 -0
- package/dist/types/persona.d.ts.map +1 -0
- package/dist/types/persona.js +35 -0
- package/dist/types/persona.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 节点类型定义
|
|
3
|
+
*/
|
|
4
|
+
import { ActionTypeId, NodeId, SharedDataDeclaration, NodeInputValue, OutputMapping } from './common.js';
|
|
5
|
+
/**
|
|
6
|
+
* 动作执行类型枚举
|
|
7
|
+
* 系统内置,不可动态扩展
|
|
8
|
+
*/
|
|
9
|
+
export type ActionExecutionType = 'api_call' | 'file_write' | 'file_read' | 'database_query' | 'llm_call' | 'http_request' | 'shell_command';
|
|
10
|
+
/**
|
|
11
|
+
* 输入/输出字段定义
|
|
12
|
+
*/
|
|
13
|
+
export interface FieldDefinition {
|
|
14
|
+
name: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
required: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* TypeScript 类型格式的类型描述
|
|
19
|
+
*
|
|
20
|
+
* 使用标准 TypeScript 类型语法:
|
|
21
|
+
* - 基础类型: "string", "number", "boolean"
|
|
22
|
+
* - 数组类型: "Array<T>" 或 "T[]"
|
|
23
|
+
* - 对象类型: "{ field1: Type1, field2: Type2 }"
|
|
24
|
+
* - 复合类型: "Array<{ title: string, url: string }>"
|
|
25
|
+
* - 可选字段: "{ required: string, optional?: number }"
|
|
26
|
+
*
|
|
27
|
+
* 默认值: "string"
|
|
28
|
+
*/
|
|
29
|
+
typeHint?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 异步模式定义
|
|
33
|
+
*/
|
|
34
|
+
export interface AsyncModeConfig {
|
|
35
|
+
/** 是否为异步任务(需要轮询或等待回调) */
|
|
36
|
+
isAsync: boolean;
|
|
37
|
+
/** 默认轮询间隔(毫秒),如果是轮询模式 */
|
|
38
|
+
defaultCheckIntervalMs?: number;
|
|
39
|
+
/** 默认超时时间(毫秒) */
|
|
40
|
+
defaultTimeoutMs?: number;
|
|
41
|
+
/**
|
|
42
|
+
* 从提交任务响应中提取 taskId 的 JSONPath
|
|
43
|
+
* 支持点号分隔路径,如: "data.taskId" 或 "id"
|
|
44
|
+
* 默认为 "taskId"
|
|
45
|
+
*/
|
|
46
|
+
taskIdPath?: string;
|
|
47
|
+
/**
|
|
48
|
+
* 任务状态检查配置
|
|
49
|
+
*/
|
|
50
|
+
statusCheck?: AsyncStatusCheckConfig;
|
|
51
|
+
/**
|
|
52
|
+
* 任务结果获取配置
|
|
53
|
+
* 如果不配置,结果从最后一次成功的状态检查响应中提取
|
|
54
|
+
*/
|
|
55
|
+
resultFetch?: AsyncResultFetchConfig;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 异步任务状态检查配置
|
|
59
|
+
*/
|
|
60
|
+
export interface AsyncStatusCheckConfig {
|
|
61
|
+
/**
|
|
62
|
+
* 状态检查的 URL 模板
|
|
63
|
+
* 支持变量替换:
|
|
64
|
+
* - ${taskId}: 任务 ID
|
|
65
|
+
* - ${inputFieldName}: 从提交时的输入中获取值
|
|
66
|
+
*/
|
|
67
|
+
url: string;
|
|
68
|
+
/** HTTP 方法,默认 GET */
|
|
69
|
+
method?: 'GET' | 'POST';
|
|
70
|
+
/** 额外的请求头 */
|
|
71
|
+
headers?: Record<string, string>;
|
|
72
|
+
/** 状态字段提取配置 */
|
|
73
|
+
extract: AsyncStatusExtractConfig;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 状态提取配置
|
|
77
|
+
*/
|
|
78
|
+
export interface AsyncStatusExtractConfig {
|
|
79
|
+
/** 状态值的 JSONPath,默认为 "status" */
|
|
80
|
+
statusPath?: string;
|
|
81
|
+
/** 表示任务完成的状态值,默认为 "completed" */
|
|
82
|
+
completedValues?: string | string[];
|
|
83
|
+
/** 表示任务失败的状态值,默认为 "failed" */
|
|
84
|
+
failedValues?: string | string[];
|
|
85
|
+
/** 表示任务进行中的状态值(可选) */
|
|
86
|
+
pendingValues?: string | string[];
|
|
87
|
+
/** 错误信息的 JSONPath,默认为 "error" */
|
|
88
|
+
errorPath?: string;
|
|
89
|
+
/** 进度百分比的 JSONPath(可选) */
|
|
90
|
+
progressPath?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 异步任务结果获取配置
|
|
94
|
+
*/
|
|
95
|
+
export interface AsyncResultFetchConfig {
|
|
96
|
+
/** 结果获取的 URL 模板 */
|
|
97
|
+
url?: string;
|
|
98
|
+
/** HTTP 方法,默认 GET */
|
|
99
|
+
method?: 'GET' | 'POST';
|
|
100
|
+
/** 额外的请求头 */
|
|
101
|
+
headers?: Record<string, string>;
|
|
102
|
+
/** 结果字段提取映射 */
|
|
103
|
+
extract?: Record<string, string>;
|
|
104
|
+
/** 从状态检查响应中提取结果的配置 */
|
|
105
|
+
extractFromStatus?: Record<string, string>;
|
|
106
|
+
/** 保存到对象存储配置 */
|
|
107
|
+
saveToOss?: SaveToOssConfig;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* HTTP 方法类型
|
|
111
|
+
*/
|
|
112
|
+
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
|
|
113
|
+
/**
|
|
114
|
+
* API 调用配置
|
|
115
|
+
* 用于 api_call 类型的动作,定义 HTTP 请求的详细配置
|
|
116
|
+
*/
|
|
117
|
+
export interface ApiCallConfig {
|
|
118
|
+
/**
|
|
119
|
+
* API 端点 URL
|
|
120
|
+
* 支持模板变量,如: "https://api.example.com/users/${userId}"
|
|
121
|
+
*/
|
|
122
|
+
url: string;
|
|
123
|
+
/** HTTP 方法,默认为 GET */
|
|
124
|
+
method?: HttpMethod;
|
|
125
|
+
/**
|
|
126
|
+
* 请求头配置
|
|
127
|
+
*/
|
|
128
|
+
headers?: {
|
|
129
|
+
type: 'static' | 'template';
|
|
130
|
+
values?: Record<string, string>;
|
|
131
|
+
template?: string;
|
|
132
|
+
base?: Record<string, string>;
|
|
133
|
+
};
|
|
134
|
+
/** 静态 Cookies */
|
|
135
|
+
cookies?: Record<string, string>;
|
|
136
|
+
/**
|
|
137
|
+
* 请求体配置
|
|
138
|
+
*/
|
|
139
|
+
body?: {
|
|
140
|
+
contentType: 'json' | 'form' | 'raw' | 'template';
|
|
141
|
+
rawField?: string;
|
|
142
|
+
template?: string;
|
|
143
|
+
includeFields?: string[];
|
|
144
|
+
excludeFields?: string[];
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* 响应配置
|
|
148
|
+
*/
|
|
149
|
+
response?: {
|
|
150
|
+
type?: 'json' | 'text' | 'binary';
|
|
151
|
+
extract?: Record<string, string>;
|
|
152
|
+
saveToFile?: SaveToFileConfig;
|
|
153
|
+
saveToOss?: SaveToOssConfig;
|
|
154
|
+
};
|
|
155
|
+
/** 超时时间(毫秒),默认 30000 */
|
|
156
|
+
timeoutMs?: number;
|
|
157
|
+
/** 是否跟随重定向,默认 true */
|
|
158
|
+
followRedirects?: boolean;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 保存到文件的配置
|
|
162
|
+
*/
|
|
163
|
+
export interface SaveToFileConfig {
|
|
164
|
+
enabled: boolean;
|
|
165
|
+
pathField: string;
|
|
166
|
+
dataPath?: string;
|
|
167
|
+
outputField?: string;
|
|
168
|
+
dataFormat?: 'base64' | 'binary' | 'text' | 'json' | 'auto';
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* 保存到对象存储的配置
|
|
172
|
+
*/
|
|
173
|
+
export interface SaveToOssConfig {
|
|
174
|
+
enabled: boolean;
|
|
175
|
+
bucket: string;
|
|
176
|
+
keyField: string;
|
|
177
|
+
dataPath?: string;
|
|
178
|
+
sourceType?: 'base64' | 'url' | 'auto';
|
|
179
|
+
contentType?: string;
|
|
180
|
+
outputField?: string;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 动作节点类型
|
|
184
|
+
* 由 Persona 提供,定义可执行的具体动作
|
|
185
|
+
*/
|
|
186
|
+
export interface ActionNodeType {
|
|
187
|
+
kind: 'action';
|
|
188
|
+
/** 动作类型唯一标识 */
|
|
189
|
+
id: ActionTypeId;
|
|
190
|
+
/** 语义名称,如 "搜索"、"回复帖子" */
|
|
191
|
+
name: string;
|
|
192
|
+
description?: string;
|
|
193
|
+
/** 执行类型 */
|
|
194
|
+
executionType: ActionExecutionType;
|
|
195
|
+
/** API 调用配置(仅当 executionType 为 'api_call' 时有效) */
|
|
196
|
+
apiConfig?: ApiCallConfig;
|
|
197
|
+
/** 异步模式配置 */
|
|
198
|
+
asyncMode?: AsyncModeConfig;
|
|
199
|
+
/** 输入字段定义 */
|
|
200
|
+
inputFields: FieldDefinition[];
|
|
201
|
+
/** 输出字段定义 */
|
|
202
|
+
outputFields: FieldDefinition[];
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* 思考节点类型
|
|
206
|
+
* 系统内置类型,不可自定义
|
|
207
|
+
*/
|
|
208
|
+
export interface ThinkingNodeType {
|
|
209
|
+
kind: 'thinking';
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* 分支决策类型
|
|
213
|
+
*/
|
|
214
|
+
export type BranchDecisionType = 'llm' | 'expression' | 'function';
|
|
215
|
+
/**
|
|
216
|
+
* 分支节点类型
|
|
217
|
+
* 系统内置类型,不可自定义
|
|
218
|
+
*/
|
|
219
|
+
export interface BranchNodeType {
|
|
220
|
+
kind: 'branch';
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* 所有节点类型的联合类型
|
|
224
|
+
*/
|
|
225
|
+
export type NodeType = ThinkingNodeType | ActionNodeType | BranchNodeType;
|
|
226
|
+
/**
|
|
227
|
+
* 节点实例基础接口
|
|
228
|
+
*/
|
|
229
|
+
interface NodeInstanceBase {
|
|
230
|
+
id: NodeId;
|
|
231
|
+
nextNodeId: NodeId | null;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* 思考节点实例
|
|
235
|
+
*/
|
|
236
|
+
export interface ThinkingNodeInstance extends NodeInstanceBase {
|
|
237
|
+
kind: 'thinking';
|
|
238
|
+
thinkingPrompt: string;
|
|
239
|
+
sharedDataDeclaration?: SharedDataDeclaration;
|
|
240
|
+
inputs: Record<string, NodeInputValue>;
|
|
241
|
+
outputMappings?: OutputMapping[];
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* 动作节点实例
|
|
245
|
+
*/
|
|
246
|
+
export interface ActionNodeInstance extends NodeInstanceBase {
|
|
247
|
+
kind: 'action';
|
|
248
|
+
actionTypeId: ActionTypeId;
|
|
249
|
+
inputs: Record<string, NodeInputValue>;
|
|
250
|
+
outputMappings: OutputMapping[];
|
|
251
|
+
retryConfig?: RetryConfig;
|
|
252
|
+
asyncConfig?: {
|
|
253
|
+
timeoutMs?: number;
|
|
254
|
+
checkIntervalMs?: number;
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* 重试配置
|
|
259
|
+
*/
|
|
260
|
+
export interface RetryConfig {
|
|
261
|
+
maxRetries: number;
|
|
262
|
+
retryIntervalMs: number;
|
|
263
|
+
exponentialBackoff?: boolean;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* 分支条件
|
|
267
|
+
*/
|
|
268
|
+
export interface BranchCondition {
|
|
269
|
+
branchId: string;
|
|
270
|
+
name: string;
|
|
271
|
+
targetNodeId: NodeId;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* LLM 决策配置
|
|
275
|
+
*/
|
|
276
|
+
export interface LLMDecisionConfig {
|
|
277
|
+
type: 'llm';
|
|
278
|
+
prompt: string;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* 表达式决策配置
|
|
282
|
+
*/
|
|
283
|
+
export interface ExpressionDecisionConfig {
|
|
284
|
+
type: 'expression';
|
|
285
|
+
conditions: Record<string, string>;
|
|
286
|
+
defaultBranchId: string;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* 函数决策配置
|
|
290
|
+
*/
|
|
291
|
+
export interface FunctionDecisionConfig {
|
|
292
|
+
type: 'function';
|
|
293
|
+
functionName: string;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* 决策配置联合类型
|
|
297
|
+
*/
|
|
298
|
+
export type DecisionConfig = LLMDecisionConfig | ExpressionDecisionConfig | FunctionDecisionConfig;
|
|
299
|
+
/**
|
|
300
|
+
* 分支节点实例
|
|
301
|
+
*/
|
|
302
|
+
export interface BranchNodeInstance extends NodeInstanceBase {
|
|
303
|
+
kind: 'branch';
|
|
304
|
+
branches: BranchCondition[];
|
|
305
|
+
inputs: Record<string, NodeInputValue>;
|
|
306
|
+
decisionConfig: DecisionConfig;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* 所有节点实例的联合类型
|
|
310
|
+
*/
|
|
311
|
+
export type NodeInstance = ThinkingNodeInstance | ActionNodeInstance | BranchNodeInstance;
|
|
312
|
+
export {};
|
|
313
|
+
//# sourceMappingURL=nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/types/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/types/nodes.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona 数据结构定义
|
|
3
|
+
* Persona 代表一个人格/角色,为 Schedule 提供上下文和能力
|
|
4
|
+
*/
|
|
5
|
+
import { PersonaId } from './common.js';
|
|
6
|
+
import { ActionNodeType } from './nodes.js';
|
|
7
|
+
/**
|
|
8
|
+
* Persona 定义
|
|
9
|
+
*
|
|
10
|
+
* 功能:
|
|
11
|
+
* 1. 提供 System Prompt,定义角色的行为风格
|
|
12
|
+
* 2. 提供可用的动作节点类型,定义角色可以执行的动作
|
|
13
|
+
*/
|
|
14
|
+
export interface Persona {
|
|
15
|
+
/** Persona 唯一标识 */
|
|
16
|
+
id: PersonaId;
|
|
17
|
+
/** Persona 名称 */
|
|
18
|
+
name: string;
|
|
19
|
+
/** 描述 */
|
|
20
|
+
description?: string;
|
|
21
|
+
/**
|
|
22
|
+
* System Prompt
|
|
23
|
+
* 定义角色的基本行为和风格
|
|
24
|
+
*/
|
|
25
|
+
systemPrompt: string;
|
|
26
|
+
/**
|
|
27
|
+
* 可用的动作节点类型列表
|
|
28
|
+
* 这些动作类型可以在 Schedule 中被使用
|
|
29
|
+
*/
|
|
30
|
+
actionTypes: ActionNodeType[];
|
|
31
|
+
/** 创建时间 */
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
/** 更新时间 */
|
|
34
|
+
updatedAt: Date;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 创建 Persona 的输入参数
|
|
38
|
+
*/
|
|
39
|
+
export interface CreatePersonaInput {
|
|
40
|
+
id?: PersonaId;
|
|
41
|
+
name: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
systemPrompt: string;
|
|
44
|
+
actionTypes: ActionNodeType[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 根据动作类型 ID 查找动作类型
|
|
48
|
+
*/
|
|
49
|
+
export declare function findActionType(persona: Persona, actionTypeId: string): ActionNodeType | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* 验证 Persona 的动作类型是否有效
|
|
52
|
+
* 检查是否有重复的 ID
|
|
53
|
+
*/
|
|
54
|
+
export declare function validatePersonaActionTypes(persona: Persona): {
|
|
55
|
+
isValid: boolean;
|
|
56
|
+
errors: string[];
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=persona.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/types/persona.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,mBAAmB;IACnB,EAAE,EAAE,SAAS,CAAC;IAEd,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,WAAW,EAAE,cAAc,EAAE,CAAC;IAE9B,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAEhB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,GACnB,cAAc,GAAG,SAAS,CAE5B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAsBA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona 数据结构定义
|
|
3
|
+
* Persona 代表一个人格/角色,为 Schedule 提供上下文和能力
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 根据动作类型 ID 查找动作类型
|
|
7
|
+
*/
|
|
8
|
+
export function findActionType(persona, actionTypeId) {
|
|
9
|
+
return persona.actionTypes.find(at => at.id === actionTypeId);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 验证 Persona 的动作类型是否有效
|
|
13
|
+
* 检查是否有重复的 ID
|
|
14
|
+
*/
|
|
15
|
+
export function validatePersonaActionTypes(persona) {
|
|
16
|
+
const errors = [];
|
|
17
|
+
const idSet = new Set();
|
|
18
|
+
for (const actionType of persona.actionTypes) {
|
|
19
|
+
if (idSet.has(actionType.id)) {
|
|
20
|
+
errors.push(`重复的动作类型 ID: ${actionType.id}`);
|
|
21
|
+
}
|
|
22
|
+
idSet.add(actionType.id);
|
|
23
|
+
if (!actionType.name) {
|
|
24
|
+
errors.push(`动作类型 ${actionType.id} 缺少名称`);
|
|
25
|
+
}
|
|
26
|
+
if (!actionType.executionType) {
|
|
27
|
+
errors.push(`动作类型 ${actionType.id} 缺少执行类型`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
isValid: errors.length === 0,
|
|
32
|
+
errors,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=persona.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.js","sourceRoot":"","sources":["../../src/types/persona.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoDH;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgB,EAChB,YAAoB;IAEpB,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IAIzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,eAAe,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEzB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,QAAQ,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "persona-core-opencode",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "PersonaCore implementation using opencode as the execution engine",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"test:watch": "vitest",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"lint": "tsc --noEmit",
|
|
25
|
+
"suite": "tsx scripts/run-suite.ts",
|
|
26
|
+
"release": "release-it --ci",
|
|
27
|
+
"release:patch": "release-it patch --ci",
|
|
28
|
+
"release:minor": "release-it minor --ci",
|
|
29
|
+
"release:major": "release-it major --ci"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"dotenv": "^16.4.7",
|
|
33
|
+
"expr-eval": "^2.0.2",
|
|
34
|
+
"nunjucks": "^3.2.4",
|
|
35
|
+
"uuid": "^11.1.0",
|
|
36
|
+
"zod": "^3.24.4"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/expr-eval": "^1.0.2",
|
|
40
|
+
"@types/node": "^22.19.7",
|
|
41
|
+
"@types/nunjucks": "^3.2.6",
|
|
42
|
+
"@types/uuid": "^10.0.0",
|
|
43
|
+
"release-it": "^19.2.2",
|
|
44
|
+
"tsx": "^4.19.4",
|
|
45
|
+
"typescript": "^5.8.3",
|
|
46
|
+
"vitest": "^2.1.9"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=18"
|
|
50
|
+
},
|
|
51
|
+
"keywords": [
|
|
52
|
+
"opencode",
|
|
53
|
+
"workflow",
|
|
54
|
+
"agent",
|
|
55
|
+
"persona",
|
|
56
|
+
"llm",
|
|
57
|
+
"ai"
|
|
58
|
+
],
|
|
59
|
+
"license": "MIT"
|
|
60
|
+
}
|