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,385 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool 文件生成器
|
|
3
|
+
* 将 ActionNodeType 转换为 opencode tool 文件内容
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 生成 opencode tool 文件内容
|
|
7
|
+
*/
|
|
8
|
+
export function generateToolFile(actionType, persona) {
|
|
9
|
+
const imports = generateImports(actionType);
|
|
10
|
+
const argsSchema = generateArgsSchema(actionType);
|
|
11
|
+
const executeBody = generateExecuteBody(actionType, persona);
|
|
12
|
+
return `${imports}
|
|
13
|
+
|
|
14
|
+
export default tool({
|
|
15
|
+
description: ${JSON.stringify(actionType.description || actionType.name)},
|
|
16
|
+
args: {
|
|
17
|
+
${argsSchema}
|
|
18
|
+
},
|
|
19
|
+
async execute(args, context) {
|
|
20
|
+
${executeBody}
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 生成导入语句
|
|
27
|
+
*/
|
|
28
|
+
function generateImports(actionType) {
|
|
29
|
+
const imports = ['import { tool } from "@opencode-ai/plugin"'];
|
|
30
|
+
if (actionType.executionType === 'file_write' || actionType.executionType === 'file_read') {
|
|
31
|
+
imports.push('import * as fs from "fs/promises"');
|
|
32
|
+
imports.push('import * as path from "path"');
|
|
33
|
+
}
|
|
34
|
+
// API 调用可能需要保存文件
|
|
35
|
+
if (actionType.executionType === 'api_call' && actionType.apiConfig?.response?.saveToFile?.enabled) {
|
|
36
|
+
if (!imports.includes('import * as fs from "fs/promises"')) {
|
|
37
|
+
imports.push('import * as fs from "fs/promises"');
|
|
38
|
+
}
|
|
39
|
+
if (!imports.includes('import * as path from "path"')) {
|
|
40
|
+
imports.push('import * as path from "path"');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return imports.join('\n');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 生成参数 schema
|
|
47
|
+
*/
|
|
48
|
+
function generateArgsSchema(actionType) {
|
|
49
|
+
const lines = [];
|
|
50
|
+
for (const field of actionType.inputFields) {
|
|
51
|
+
const schemaType = mapTypeHintToSchema(field.typeHint || 'string');
|
|
52
|
+
const optional = field.required ? '' : '.optional()';
|
|
53
|
+
const describe = field.description ? `.describe(${JSON.stringify(field.description)})` : '';
|
|
54
|
+
// Don't add () if schemaType already ends with () (like array(...) or object(...))
|
|
55
|
+
const schemaCall = schemaType.endsWith(')')
|
|
56
|
+
? `tool.schema.${schemaType}`
|
|
57
|
+
: `tool.schema.${schemaType}()`;
|
|
58
|
+
lines.push(` ${field.name}: ${schemaCall}${optional}${describe},`);
|
|
59
|
+
}
|
|
60
|
+
return lines.join('\n');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 生成执行体代码
|
|
64
|
+
*/
|
|
65
|
+
function generateExecuteBody(actionType, persona) {
|
|
66
|
+
switch (actionType.executionType) {
|
|
67
|
+
case 'api_call':
|
|
68
|
+
return generateApiCallBody(actionType);
|
|
69
|
+
case 'file_write':
|
|
70
|
+
return generateFileWriteBody(actionType);
|
|
71
|
+
case 'file_read':
|
|
72
|
+
return generateFileReadBody(actionType);
|
|
73
|
+
case 'http_request':
|
|
74
|
+
return generateHttpRequestBody(actionType);
|
|
75
|
+
case 'llm_call':
|
|
76
|
+
return generateLlmCallBody(actionType);
|
|
77
|
+
default:
|
|
78
|
+
return ` throw new Error('Unsupported execution type: ${actionType.executionType}');`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 生成 API 调用执行体
|
|
83
|
+
*/
|
|
84
|
+
function generateApiCallBody(actionType) {
|
|
85
|
+
const apiConfig = actionType.apiConfig;
|
|
86
|
+
if (!apiConfig) {
|
|
87
|
+
return ` throw new Error('Missing apiConfig for api_call action type: ${actionType.id}');`;
|
|
88
|
+
}
|
|
89
|
+
const method = apiConfig.method || 'GET';
|
|
90
|
+
const hasBody = ['POST', 'PUT', 'PATCH'].includes(method);
|
|
91
|
+
// 生成 headers 代码
|
|
92
|
+
let headersCode = '';
|
|
93
|
+
if (apiConfig.headers) {
|
|
94
|
+
if (apiConfig.headers.type === 'static' && apiConfig.headers.values) {
|
|
95
|
+
headersCode = `
|
|
96
|
+
const headers: Record<string, string> = ${JSON.stringify(apiConfig.headers.values)};`;
|
|
97
|
+
}
|
|
98
|
+
else if (apiConfig.headers.type === 'template' && apiConfig.headers.template) {
|
|
99
|
+
headersCode = `
|
|
100
|
+
// Template headers - render at runtime
|
|
101
|
+
const nunjucks = await import('nunjucks');
|
|
102
|
+
const headersTemplate = ${JSON.stringify(apiConfig.headers.template)};
|
|
103
|
+
const headersStr = nunjucks.renderString(headersTemplate, args);
|
|
104
|
+
const headers: Record<string, string> = JSON.parse(headersStr);`;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
headersCode = `
|
|
108
|
+
const headers: Record<string, string> = {};`;
|
|
109
|
+
}
|
|
110
|
+
// 添加 base headers
|
|
111
|
+
if (apiConfig.headers.base) {
|
|
112
|
+
headersCode += `
|
|
113
|
+
// Base headers
|
|
114
|
+
Object.assign(headers, ${JSON.stringify(apiConfig.headers.base)});`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
headersCode = `
|
|
119
|
+
const headers: Record<string, string> = { 'Content-Type': 'application/json' };`;
|
|
120
|
+
}
|
|
121
|
+
// 生成 body 代码
|
|
122
|
+
let bodyCode = '';
|
|
123
|
+
if (hasBody && apiConfig.body) {
|
|
124
|
+
if (apiConfig.body.contentType === 'json') {
|
|
125
|
+
const includeFields = apiConfig.body.includeFields;
|
|
126
|
+
const excludeFields = apiConfig.body.excludeFields || [];
|
|
127
|
+
if (includeFields) {
|
|
128
|
+
const fieldsStr = includeFields.map(f => `${f}: args.${f}`).join(', ');
|
|
129
|
+
bodyCode = `
|
|
130
|
+
const body = JSON.stringify({ ${fieldsStr} });`;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
bodyCode = `
|
|
134
|
+
const body = JSON.stringify(Object.fromEntries(
|
|
135
|
+
Object.entries(args).filter(([k]) => !${JSON.stringify(excludeFields)}.includes(k))
|
|
136
|
+
));`;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else if (apiConfig.body.contentType === 'template' && apiConfig.body.template) {
|
|
140
|
+
// 检查模板是否使用 Nunjucks 语法
|
|
141
|
+
const usesNunjucks = apiConfig.body.template.includes('{{') ||
|
|
142
|
+
apiConfig.body.template.includes('{%') ||
|
|
143
|
+
apiConfig.body.template.includes('{#');
|
|
144
|
+
if (usesNunjucks) {
|
|
145
|
+
bodyCode = `
|
|
146
|
+
// Render Nunjucks template
|
|
147
|
+
const nunjucks = await import('nunjucks');
|
|
148
|
+
const env = new nunjucks.Environment(null, { autoescape: false });
|
|
149
|
+
const bodyTemplate = ${JSON.stringify(apiConfig.body.template)};
|
|
150
|
+
const body = env.renderString(bodyTemplate, args);`;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
bodyCode = `
|
|
154
|
+
const bodyTemplate = ${JSON.stringify(apiConfig.body.template)};
|
|
155
|
+
const body = bodyTemplate.replace(/\\$\\{(\\w+)\\}/g, (_, key) => {
|
|
156
|
+
const value = args[key];
|
|
157
|
+
return typeof value === 'string' ? value : JSON.stringify(value);
|
|
158
|
+
});`;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (apiConfig.body.contentType === 'raw' && apiConfig.body.rawField) {
|
|
162
|
+
bodyCode = `
|
|
163
|
+
const body = String(args.${apiConfig.body.rawField});`;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// 生成 URL 替换代码
|
|
167
|
+
const urlCode = `
|
|
168
|
+
// Build URL with variable substitution
|
|
169
|
+
let url = ${JSON.stringify(apiConfig.url)};
|
|
170
|
+
url = url.replace(/\\$\\{(\\w+)\\}/g, (_, key) => {
|
|
171
|
+
const value = args[key as keyof typeof args];
|
|
172
|
+
return encodeURIComponent(String(value ?? ''));
|
|
173
|
+
});`;
|
|
174
|
+
// 生成 fetch 调用
|
|
175
|
+
let fetchCode = `
|
|
176
|
+
const response = await fetch(url, {
|
|
177
|
+
method: ${JSON.stringify(method)},
|
|
178
|
+
headers,${hasBody && apiConfig.body ? '\n body,' : ''}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
if (!response.ok) {
|
|
182
|
+
const errorText = await response.text();
|
|
183
|
+
throw new Error(\`API call failed: \${response.status} \${response.statusText} - \${errorText}\`);
|
|
184
|
+
}`;
|
|
185
|
+
// 生成响应处理代码
|
|
186
|
+
let responseCode = '';
|
|
187
|
+
const responseConfig = apiConfig.response;
|
|
188
|
+
if (responseConfig?.type === 'text') {
|
|
189
|
+
responseCode = `
|
|
190
|
+
const result = await response.text();
|
|
191
|
+
return result;`;
|
|
192
|
+
}
|
|
193
|
+
else if (responseConfig?.type === 'binary') {
|
|
194
|
+
responseCode = `
|
|
195
|
+
const buffer = await response.arrayBuffer();
|
|
196
|
+
return Buffer.from(buffer).toString('base64');`;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// JSON response (default)
|
|
200
|
+
// 添加 getByPath 辅助函数
|
|
201
|
+
const getByPathHelper = `
|
|
202
|
+
// Extract fields using JSONPath
|
|
203
|
+
function getByPath(obj: unknown, pathStr: string): unknown {
|
|
204
|
+
return pathStr.split('.').reduce((acc: unknown, key) => {
|
|
205
|
+
if (acc && typeof acc === 'object') {
|
|
206
|
+
// Handle array index like "0"
|
|
207
|
+
if (Array.isArray(acc) && /^\\d+$/.test(key)) {
|
|
208
|
+
return acc[parseInt(key, 10)];
|
|
209
|
+
}
|
|
210
|
+
if (key in acc) {
|
|
211
|
+
return (acc as Record<string, unknown>)[key];
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return undefined;
|
|
215
|
+
}, obj);
|
|
216
|
+
}`;
|
|
217
|
+
// 检查是否需要保存文件
|
|
218
|
+
if (responseConfig?.saveToFile?.enabled) {
|
|
219
|
+
const saveConfig = responseConfig.saveToFile;
|
|
220
|
+
responseCode = `
|
|
221
|
+
const data = await response.json();
|
|
222
|
+
${getByPathHelper}
|
|
223
|
+
|
|
224
|
+
// Extract and save file
|
|
225
|
+
const filePath = args.${saveConfig.pathField} as string;
|
|
226
|
+
const rawImageData = getByPath(data, ${JSON.stringify(saveConfig.dataPath)});
|
|
227
|
+
|
|
228
|
+
// Handle different response formats
|
|
229
|
+
let imageDataStr: string | null = null;
|
|
230
|
+
if (typeof rawImageData === 'string') {
|
|
231
|
+
imageDataStr = rawImageData;
|
|
232
|
+
} else if (rawImageData && typeof rawImageData === 'object' && 'url' in rawImageData) {
|
|
233
|
+
// Handle object with url property
|
|
234
|
+
imageDataStr = (rawImageData as { url: string }).url;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (imageDataStr) {
|
|
238
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
239
|
+
|
|
240
|
+
${saveConfig.dataFormat === 'base64' ? `
|
|
241
|
+
// Handle base64 data URI
|
|
242
|
+
let base64Data = imageDataStr;
|
|
243
|
+
if (imageDataStr.startsWith('data:')) {
|
|
244
|
+
// Remove data URI prefix (e.g., "data:image/png;base64,")
|
|
245
|
+
base64Data = imageDataStr.split(',')[1] || imageDataStr;
|
|
246
|
+
}
|
|
247
|
+
const buffer = Buffer.from(base64Data, 'base64');
|
|
248
|
+
await fs.writeFile(filePath, buffer);
|
|
249
|
+
` : `
|
|
250
|
+
await fs.writeFile(filePath, imageDataStr, 'utf8');
|
|
251
|
+
`}
|
|
252
|
+
|
|
253
|
+
return JSON.stringify({
|
|
254
|
+
success: true,
|
|
255
|
+
${saveConfig.outputField || 'savedFilePath'}: filePath,
|
|
256
|
+
message: 'File saved successfully',
|
|
257
|
+
});
|
|
258
|
+
} else {
|
|
259
|
+
return JSON.stringify({
|
|
260
|
+
success: false,
|
|
261
|
+
error: 'No data found at path: ${saveConfig.dataPath}',
|
|
262
|
+
extractedValue: rawImageData,
|
|
263
|
+
rawResponse: JSON.stringify(data).substring(0, 500),
|
|
264
|
+
});
|
|
265
|
+
}`;
|
|
266
|
+
}
|
|
267
|
+
else if (responseConfig?.extract) {
|
|
268
|
+
const extractCode = Object.entries(responseConfig.extract)
|
|
269
|
+
.map(([key, p]) => ` ${key}: getByPath(data, ${JSON.stringify(p)})`)
|
|
270
|
+
.join(',\n');
|
|
271
|
+
responseCode = `
|
|
272
|
+
const data = await response.json();
|
|
273
|
+
${getByPathHelper}
|
|
274
|
+
|
|
275
|
+
const result = {
|
|
276
|
+
${extractCode}
|
|
277
|
+
};
|
|
278
|
+
return JSON.stringify(result, null, 2);`;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
responseCode = `
|
|
282
|
+
const result = await response.json();
|
|
283
|
+
return JSON.stringify(result, null, 2);`;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return ` // API Call: ${actionType.name}${urlCode}${headersCode}${bodyCode}${fetchCode}${responseCode}`;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* 生成文件写入执行体
|
|
290
|
+
*/
|
|
291
|
+
function generateFileWriteBody(actionType) {
|
|
292
|
+
return ` // File Write: ${actionType.name}
|
|
293
|
+
const filePath = args.filePath as string;
|
|
294
|
+
const content = args.content as string;
|
|
295
|
+
|
|
296
|
+
// Ensure directory exists
|
|
297
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
298
|
+
|
|
299
|
+
// Write file
|
|
300
|
+
await fs.writeFile(filePath, content, 'utf8');
|
|
301
|
+
|
|
302
|
+
const stats = await fs.stat(filePath);
|
|
303
|
+
|
|
304
|
+
return JSON.stringify({
|
|
305
|
+
success: true,
|
|
306
|
+
filePath,
|
|
307
|
+
bytesWritten: stats.size,
|
|
308
|
+
});`;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* 生成文件读取执行体
|
|
312
|
+
*/
|
|
313
|
+
function generateFileReadBody(actionType) {
|
|
314
|
+
return ` // File Read: ${actionType.name}
|
|
315
|
+
const filePath = args.filePath as string;
|
|
316
|
+
|
|
317
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
318
|
+
const stats = await fs.stat(filePath);
|
|
319
|
+
|
|
320
|
+
return JSON.stringify({
|
|
321
|
+
success: true,
|
|
322
|
+
filePath,
|
|
323
|
+
content,
|
|
324
|
+
fileSize: stats.size,
|
|
325
|
+
});`;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* 生成 HTTP 请求执行体
|
|
329
|
+
*/
|
|
330
|
+
function generateHttpRequestBody(actionType) {
|
|
331
|
+
// Similar to api_call but more generic
|
|
332
|
+
return generateApiCallBody(actionType);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* 生成 LLM 调用执行体
|
|
336
|
+
*/
|
|
337
|
+
function generateLlmCallBody(actionType) {
|
|
338
|
+
return ` // LLM Call: ${actionType.name}
|
|
339
|
+
// This should be handled by the opencode agent itself
|
|
340
|
+
// Returning the prompt for the agent to process
|
|
341
|
+
const prompt = args.prompt as string;
|
|
342
|
+
return JSON.stringify({
|
|
343
|
+
type: 'llm_request',
|
|
344
|
+
prompt,
|
|
345
|
+
message: 'This action requires LLM processing. The agent should handle this.',
|
|
346
|
+
});`;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* 将 typeHint 映射到 zod schema 类型
|
|
350
|
+
*/
|
|
351
|
+
function mapTypeHintToSchema(typeHint) {
|
|
352
|
+
// Handle basic types
|
|
353
|
+
switch (typeHint.toLowerCase()) {
|
|
354
|
+
case 'number':
|
|
355
|
+
return 'number';
|
|
356
|
+
case 'boolean':
|
|
357
|
+
return 'boolean';
|
|
358
|
+
case 'array':
|
|
359
|
+
return 'array(tool.schema.unknown())';
|
|
360
|
+
case 'object':
|
|
361
|
+
return 'object({}).passthrough()';
|
|
362
|
+
default:
|
|
363
|
+
// Check for array syntax
|
|
364
|
+
if (typeHint.startsWith('Array<') || typeHint.endsWith('[]')) {
|
|
365
|
+
return 'array(tool.schema.unknown())';
|
|
366
|
+
}
|
|
367
|
+
// Check for object syntax
|
|
368
|
+
if (typeHint.startsWith('{')) {
|
|
369
|
+
return 'object({}).passthrough()';
|
|
370
|
+
}
|
|
371
|
+
return 'string';
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* 生成 tool 文件名
|
|
376
|
+
*/
|
|
377
|
+
export function getToolFileName(actionType) {
|
|
378
|
+
// Convert id to snake_case filename
|
|
379
|
+
return actionType.id
|
|
380
|
+
.replace(/([A-Z])/g, '_$1')
|
|
381
|
+
.toLowerCase()
|
|
382
|
+
.replace(/^_/, '')
|
|
383
|
+
.replace(/-/g, '_');
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=toolFileGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolFileGenerator.js","sourceRoot":"","sources":["../../src/generators/toolFileGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* persona-core-opencode
|
|
3
|
+
*
|
|
4
|
+
* 使用 opencode 作为执行引擎的 PersonaCore 实现。
|
|
5
|
+
*
|
|
6
|
+
* 核心概念:
|
|
7
|
+
* - PersonaCoreClient: 主要的客户端 API,提供 Persona 管理和消息发送功能
|
|
8
|
+
* - Persona: 人格/角色定义,包含 SystemPrompt 和可用的 ActionTypes
|
|
9
|
+
* - ActionNodeType: 动作节点类型定义,如 API 调用、文件读写等
|
|
10
|
+
*/
|
|
11
|
+
export { PersonaCoreClient, PersonaCoreClientConfig, SendMessageOptions, } from './client/personaCoreClient.js';
|
|
12
|
+
export { Persona, CreatePersonaInput, findActionType, validatePersonaActionTypes, } from './types/persona.js';
|
|
13
|
+
export { ActionNodeType, ThinkingNodeType, BranchNodeType, NodeType, } from './types/nodes.js';
|
|
14
|
+
export { PersonaId, NodeId, } from './types/common.js';
|
|
15
|
+
export { SessionExecutionResult, ToolCallRecord, } from './session/sessionHandle.js';
|
|
16
|
+
export { PersonaRegistry, RegisteredPersona } from './persona/personaRegistry.js';
|
|
17
|
+
export { SessionManager } from './session/sessionManager.js';
|
|
18
|
+
export { generateToolFile, getToolFileName } from './generators/toolFileGenerator.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,SAAS,EACT,MAAM,GACP,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,cAAc,GACf,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* persona-core-opencode
|
|
3
|
+
*
|
|
4
|
+
* 使用 opencode 作为执行引擎的 PersonaCore 实现。
|
|
5
|
+
*
|
|
6
|
+
* 核心概念:
|
|
7
|
+
* - PersonaCoreClient: 主要的客户端 API,提供 Persona 管理和消息发送功能
|
|
8
|
+
* - Persona: 人格/角色定义,包含 SystemPrompt 和可用的 ActionTypes
|
|
9
|
+
* - ActionNodeType: 动作节点类型定义,如 API 调用、文件读写等
|
|
10
|
+
*/
|
|
11
|
+
// ============================================================
|
|
12
|
+
// 主要导出:PersonaCoreClient
|
|
13
|
+
// ============================================================
|
|
14
|
+
export { PersonaCoreClient, } from './client/personaCoreClient.js';
|
|
15
|
+
// ============================================================
|
|
16
|
+
// 类型定义
|
|
17
|
+
// ============================================================
|
|
18
|
+
// Persona 相关类型
|
|
19
|
+
export { findActionType, validatePersonaActionTypes, } from './types/persona.js';
|
|
20
|
+
// ============================================================
|
|
21
|
+
// 内部实现(仅供高级用户使用,不保证 API 稳定性)
|
|
22
|
+
// ============================================================
|
|
23
|
+
export { PersonaRegistry } from './persona/personaRegistry.js';
|
|
24
|
+
export { SessionManager } from './session/sessionManager.js';
|
|
25
|
+
export { generateToolFile, getToolFileName } from './generators/toolFileGenerator.js';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,+DAA+D;AAC/D,yBAAyB;AACzB,+DAA+D;AAC/D,OAAO,EACL,iBAAiB,GAGlB,MAAM,+BAA+B,CAAC;AAEvC,+DAA+D;AAC/D,OAAO;AACP,+DAA+D;AAE/D,eAAe;AACf,OAAO,EAGL,cAAc,EACd,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAsB5B,+DAA+D;AAC/D,6BAA6B;AAC7B,+DAA+D;AAC/D,OAAO,EAAE,eAAe,EAAqB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persona/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persona/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona 注册器
|
|
3
|
+
* 负责注册 Persona、创建工作目录、生成 tool 文件
|
|
4
|
+
*/
|
|
5
|
+
import { Persona, CreatePersonaInput } from '../types/persona.js';
|
|
6
|
+
/**
|
|
7
|
+
* 已注册的 Persona 信息
|
|
8
|
+
*/
|
|
9
|
+
export interface RegisteredPersona {
|
|
10
|
+
/** 唯一标识符 */
|
|
11
|
+
id: string;
|
|
12
|
+
/** 原始 Persona 定义 */
|
|
13
|
+
persona: Persona;
|
|
14
|
+
/** 工作目录路径 */
|
|
15
|
+
workspacePath: string;
|
|
16
|
+
/** .opencode/tools/ 路径 */
|
|
17
|
+
toolsPath: string;
|
|
18
|
+
/** 创建时间 */
|
|
19
|
+
createdAt: Date;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* PersonaRegistry 配置
|
|
23
|
+
*/
|
|
24
|
+
export interface PersonaRegistryConfig {
|
|
25
|
+
/** 工作空间根目录 */
|
|
26
|
+
workspaceRoot?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Persona 注册器
|
|
30
|
+
*/
|
|
31
|
+
export declare class PersonaRegistry {
|
|
32
|
+
private workspaceRoot;
|
|
33
|
+
private registeredPersonas;
|
|
34
|
+
constructor(config?: PersonaRegistryConfig);
|
|
35
|
+
/**
|
|
36
|
+
* 注册 Persona
|
|
37
|
+
* 1. 生成唯一 ID
|
|
38
|
+
* 2. 创建工作目录
|
|
39
|
+
* 3. 生成 tool 文件
|
|
40
|
+
*/
|
|
41
|
+
registerPersona(input: CreatePersonaInput): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* 直接注册已有的 Persona 对象
|
|
44
|
+
*/
|
|
45
|
+
registerExistingPersona(persona: Persona): Promise<string>;
|
|
46
|
+
/**
|
|
47
|
+
* 获取已注册的 Persona
|
|
48
|
+
*/
|
|
49
|
+
getPersona(personaId: string): RegisteredPersona | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* 获取所有已注册的 Persona
|
|
52
|
+
*/
|
|
53
|
+
getAllPersonas(): RegisteredPersona[];
|
|
54
|
+
/**
|
|
55
|
+
* 检查 Persona 是否已注册
|
|
56
|
+
*/
|
|
57
|
+
hasPersona(personaId: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 删除已注册的 Persona(包括工作目录)
|
|
60
|
+
*/
|
|
61
|
+
unregisterPersona(personaId: string): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* 清理所有工作目录
|
|
64
|
+
*/
|
|
65
|
+
cleanup(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* 获取工作空间根目录
|
|
68
|
+
*/
|
|
69
|
+
getWorkspaceRoot(): string;
|
|
70
|
+
/**
|
|
71
|
+
* 生成唯一 ID
|
|
72
|
+
*/
|
|
73
|
+
private generateId;
|
|
74
|
+
/**
|
|
75
|
+
* 生成 Persona 唯一 ID
|
|
76
|
+
*/
|
|
77
|
+
private generatePersonaId;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=personaRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaRegistry.d.ts","sourceRoot":"","sources":["../../src/persona/personaRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGlE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,cAAc;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAA6C;gBAE3D,MAAM,GAAE,qBAA0B;IAI9C;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6DjE;;OAEG;IACG,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhE;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI5D;;OAEG;IACH,cAAc,IAAI,iBAAiB,EAAE;IAIrC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK1B"}
|