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.
Files changed (61) hide show
  1. package/dist/client/index.d.ts +5 -0
  2. package/dist/client/index.d.ts.map +1 -0
  3. package/dist/client/index.js +6 -0
  4. package/dist/client/index.js.map +1 -0
  5. package/dist/client/personaCoreClient.d.ts +102 -0
  6. package/dist/client/personaCoreClient.d.ts.map +1 -0
  7. package/dist/client/personaCoreClient.js +166 -0
  8. package/dist/client/personaCoreClient.js.map +1 -0
  9. package/dist/client/workflowHandle.d.ts +62 -0
  10. package/dist/client/workflowHandle.d.ts.map +1 -0
  11. package/dist/client/workflowHandle.js +100 -0
  12. package/dist/client/workflowHandle.js.map +1 -0
  13. package/dist/generators/index.d.ts +5 -0
  14. package/dist/generators/index.d.ts.map +1 -0
  15. package/dist/generators/index.js +5 -0
  16. package/dist/generators/index.js.map +1 -0
  17. package/dist/generators/toolFileGenerator.d.ts +15 -0
  18. package/dist/generators/toolFileGenerator.d.ts.map +1 -0
  19. package/dist/generators/toolFileGenerator.js +385 -0
  20. package/dist/generators/toolFileGenerator.js.map +1 -0
  21. package/dist/index.d.ts +19 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +26 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/persona/index.d.ts +5 -0
  26. package/dist/persona/index.d.ts.map +1 -0
  27. package/dist/persona/index.js +5 -0
  28. package/dist/persona/index.js.map +1 -0
  29. package/dist/persona/personaRegistry.d.ts +79 -0
  30. package/dist/persona/personaRegistry.d.ts.map +1 -0
  31. package/dist/persona/personaRegistry.js +151 -0
  32. package/dist/persona/personaRegistry.js.map +1 -0
  33. package/dist/session/index.d.ts +6 -0
  34. package/dist/session/index.d.ts.map +1 -0
  35. package/dist/session/index.js +6 -0
  36. package/dist/session/index.js.map +1 -0
  37. package/dist/session/sessionHandle.d.ts +82 -0
  38. package/dist/session/sessionHandle.d.ts.map +1 -0
  39. package/dist/session/sessionHandle.js +82 -0
  40. package/dist/session/sessionHandle.js.map +1 -0
  41. package/dist/session/sessionManager.d.ts +72 -0
  42. package/dist/session/sessionManager.d.ts.map +1 -0
  43. package/dist/session/sessionManager.js +300 -0
  44. package/dist/session/sessionManager.js.map +1 -0
  45. package/dist/types/common.d.ts +94 -0
  46. package/dist/types/common.d.ts.map +1 -0
  47. package/dist/types/common.js +5 -0
  48. package/dist/types/common.js.map +1 -0
  49. package/dist/types/index.d.ts +7 -0
  50. package/dist/types/index.d.ts.map +1 -0
  51. package/dist/types/index.js +7 -0
  52. package/dist/types/index.js.map +1 -0
  53. package/dist/types/nodes.d.ts +313 -0
  54. package/dist/types/nodes.d.ts.map +1 -0
  55. package/dist/types/nodes.js +5 -0
  56. package/dist/types/nodes.js.map +1 -0
  57. package/dist/types/persona.d.ts +58 -0
  58. package/dist/types/persona.d.ts.map +1 -0
  59. package/dist/types/persona.js +35 -0
  60. package/dist/types/persona.js.map +1 -0
  61. package/package.json +60 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Client module exports
3
+ */
4
+ export * from './personaCoreClient.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Client module exports
3
+ */
4
+ export * from './personaCoreClient.js';
5
+ // WorkflowHandle 不再对外暴露,已在 PersonaCoreClient 中移除 workflow 概念
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,6DAA6D"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * PersonaCoreClient
3
+ * 主要的客户端 API,提供 Persona 管理和消息发送功能
4
+ */
5
+ import { PersonaRegistry, RegisteredPersona } from '../persona/personaRegistry.js';
6
+ import { SessionManager } from '../session/sessionManager.js';
7
+ import { SessionExecutionResult } from '../session/sessionHandle.js';
8
+ import { Persona, CreatePersonaInput } from '../types/persona.js';
9
+ /**
10
+ * PersonaCoreClient 配置
11
+ */
12
+ export interface PersonaCoreClientConfig {
13
+ /** 工作空间根目录 */
14
+ workspaceRoot?: string;
15
+ /** opencode 命令路径(默认使用 PATH 中的 opencode) */
16
+ opencodePath?: string;
17
+ /** 执行超时时间(毫秒) */
18
+ defaultTimeoutMs?: number;
19
+ }
20
+ /**
21
+ * 发送消息的选项
22
+ */
23
+ export interface SendMessageOptions {
24
+ /** Session ID,如果不提供则创建新 session */
25
+ sessionId?: string;
26
+ /** 超时时间(毫秒) */
27
+ timeoutMs?: number;
28
+ }
29
+ /**
30
+ * PersonaCoreClient
31
+ * 主要的客户端 API,提供 Persona 管理和消息发送功能
32
+ *
33
+ * 核心能力:
34
+ * 1. Persona 的 create/delete
35
+ * 2. 给 Persona 的某个 session 发送消息(如果不指定 session,则新建)
36
+ */
37
+ export declare class PersonaCoreClient {
38
+ private personaRegistry;
39
+ private sessionManager;
40
+ /** 存储每个 persona 的活跃 session */
41
+ private activeSessions;
42
+ constructor(config?: PersonaCoreClientConfig);
43
+ /**
44
+ * 静态工厂方法
45
+ */
46
+ static create(config?: PersonaCoreClientConfig): Promise<PersonaCoreClient>;
47
+ /**
48
+ * 创建 Persona
49
+ * @param input Persona 配置
50
+ * @returns Persona ID
51
+ */
52
+ createPersona(input: CreatePersonaInput): Promise<string>;
53
+ /**
54
+ * 删除 Persona
55
+ * @param personaId Persona ID
56
+ */
57
+ deletePersona(personaId: string): Promise<void>;
58
+ /**
59
+ * 获取已创建的 Persona
60
+ * @param personaId Persona ID
61
+ */
62
+ getPersona(personaId: string): RegisteredPersona | undefined;
63
+ /**
64
+ * 检查 Persona 是否存在
65
+ * @param personaId Persona ID
66
+ */
67
+ hasPersona(personaId: string): boolean;
68
+ /**
69
+ * 给 Persona 发送消息
70
+ *
71
+ * @param personaId Persona ID
72
+ * @param message 消息内容
73
+ * @param options 选项:sessionId(可选,不提供则新建 session)、timeoutMs(超时时间)
74
+ * @returns 执行结果,包含 sessionId、response、toolCalls 等
75
+ */
76
+ sendMessage(personaId: string, message: string, options?: SendMessageOptions): Promise<SessionExecutionResult>;
77
+ /**
78
+ * @deprecated 使用 createPersona 代替
79
+ */
80
+ registerPersona(input: CreatePersonaInput): Promise<string>;
81
+ /**
82
+ * @deprecated 使用 createPersona 代替
83
+ */
84
+ registerExistingPersona(persona: Persona): Promise<string>;
85
+ /**
86
+ * @deprecated 使用 getPersona 代替
87
+ */
88
+ getRegisteredPersona(personaId: string): RegisteredPersona | undefined;
89
+ /**
90
+ * 清理所有资源
91
+ */
92
+ cleanup(): Promise<void>;
93
+ /**
94
+ * @deprecated 内部实现,不应该对外暴露
95
+ */
96
+ getPersonaRegistry(): PersonaRegistry;
97
+ /**
98
+ * @deprecated 内部实现,不应该对外暴露
99
+ */
100
+ getSessionManager(): SessionManager;
101
+ }
102
+ //# sourceMappingURL=personaCoreClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personaCoreClient.d.ts","sourceRoot":"","sources":["../../src/client/personaCoreClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAiB,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,cAAc;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,+BAA+B;IAC/B,OAAO,CAAC,cAAc,CAAyC;gBAEnD,MAAM,GAAE,uBAA4B;IAWhD;;OAEG;WACU,MAAM,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQrF;;;;OAIG;IACG,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/D;;;OAGG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI5D;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQtC;;;;;;;OAOG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC;IA+ClC;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE;;OAEG;IACG,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAQtE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B;;OAEG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,iBAAiB,IAAI,cAAc;CAGpC"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * PersonaCoreClient
3
+ * 主要的客户端 API,提供 Persona 管理和消息发送功能
4
+ */
5
+ import { PersonaRegistry } from '../persona/personaRegistry.js';
6
+ import { SessionManager } from '../session/sessionManager.js';
7
+ /**
8
+ * PersonaCoreClient
9
+ * 主要的客户端 API,提供 Persona 管理和消息发送功能
10
+ *
11
+ * 核心能力:
12
+ * 1. Persona 的 create/delete
13
+ * 2. 给 Persona 的某个 session 发送消息(如果不指定 session,则新建)
14
+ */
15
+ export class PersonaCoreClient {
16
+ personaRegistry;
17
+ sessionManager;
18
+ /** 存储每个 persona 的活跃 session */
19
+ activeSessions = new Map();
20
+ constructor(config = {}) {
21
+ this.personaRegistry = new PersonaRegistry({
22
+ workspaceRoot: config.workspaceRoot,
23
+ });
24
+ this.sessionManager = new SessionManager({
25
+ personaRegistry: this.personaRegistry,
26
+ opencodePath: config.opencodePath,
27
+ defaultTimeoutMs: config.defaultTimeoutMs,
28
+ });
29
+ }
30
+ /**
31
+ * 静态工厂方法
32
+ */
33
+ static async create(config = {}) {
34
+ return new PersonaCoreClient(config);
35
+ }
36
+ // ============================================================
37
+ // Persona 管理 API
38
+ // ============================================================
39
+ /**
40
+ * 创建 Persona
41
+ * @param input Persona 配置
42
+ * @returns Persona ID
43
+ */
44
+ async createPersona(input) {
45
+ return this.personaRegistry.registerPersona(input);
46
+ }
47
+ /**
48
+ * 删除 Persona
49
+ * @param personaId Persona ID
50
+ */
51
+ async deletePersona(personaId) {
52
+ // 先关闭该 persona 的所有 session
53
+ for (const [sessionKey, session] of this.activeSessions.entries()) {
54
+ if (session.personaId === personaId) {
55
+ this.activeSessions.delete(sessionKey);
56
+ }
57
+ }
58
+ // 从 registry 中删除
59
+ await this.personaRegistry.unregisterPersona(personaId);
60
+ }
61
+ /**
62
+ * 获取已创建的 Persona
63
+ * @param personaId Persona ID
64
+ */
65
+ getPersona(personaId) {
66
+ return this.personaRegistry.getPersona(personaId);
67
+ }
68
+ /**
69
+ * 检查 Persona 是否存在
70
+ * @param personaId Persona ID
71
+ */
72
+ hasPersona(personaId) {
73
+ return this.personaRegistry.hasPersona(personaId);
74
+ }
75
+ // ============================================================
76
+ // 消息发送 API
77
+ // ============================================================
78
+ /**
79
+ * 给 Persona 发送消息
80
+ *
81
+ * @param personaId Persona ID
82
+ * @param message 消息内容
83
+ * @param options 选项:sessionId(可选,不提供则新建 session)、timeoutMs(超时时间)
84
+ * @returns 执行结果,包含 sessionId、response、toolCalls 等
85
+ */
86
+ async sendMessage(personaId, message, options = {}) {
87
+ const { sessionId, timeoutMs } = options;
88
+ // 验证 Persona 已存在
89
+ if (!this.personaRegistry.hasPersona(personaId)) {
90
+ throw new Error(`Persona not found: ${personaId}. Please create the persona first.`);
91
+ }
92
+ // 获取或创建 session
93
+ let sessionHandle;
94
+ if (sessionId) {
95
+ // 尝试从缓存获取 session
96
+ const sessionKey = `${personaId}:${sessionId}`;
97
+ const cached = this.activeSessions.get(sessionKey);
98
+ if (cached) {
99
+ sessionHandle = cached;
100
+ }
101
+ else {
102
+ // session 不在缓存中,创建新的 handle 并设置已有的 sessionId
103
+ sessionHandle = await this.sessionManager.createSession(personaId);
104
+ sessionHandle.setSessionId(sessionId);
105
+ this.activeSessions.set(sessionKey, sessionHandle);
106
+ }
107
+ }
108
+ else {
109
+ // 创建新 session
110
+ sessionHandle = await this.sessionManager.createSession(personaId);
111
+ }
112
+ // 执行消息
113
+ const result = await this.sessionManager.executeThinking(sessionHandle, message, { timeoutMs });
114
+ // 如果是新创建的 session,保存到缓存
115
+ if (!sessionId && result.sessionId) {
116
+ const sessionKey = `${personaId}:${result.sessionId}`;
117
+ this.activeSessions.set(sessionKey, sessionHandle);
118
+ }
119
+ return result;
120
+ }
121
+ // ============================================================
122
+ // 兼容旧 API(标记为 deprecated,后续版本移除)
123
+ // ============================================================
124
+ /**
125
+ * @deprecated 使用 createPersona 代替
126
+ */
127
+ async registerPersona(input) {
128
+ return this.createPersona(input);
129
+ }
130
+ /**
131
+ * @deprecated 使用 createPersona 代替
132
+ */
133
+ async registerExistingPersona(persona) {
134
+ return this.personaRegistry.registerExistingPersona(persona);
135
+ }
136
+ /**
137
+ * @deprecated 使用 getPersona 代替
138
+ */
139
+ getRegisteredPersona(personaId) {
140
+ return this.getPersona(personaId);
141
+ }
142
+ // ============================================================
143
+ // 资源管理
144
+ // ============================================================
145
+ /**
146
+ * 清理所有资源
147
+ */
148
+ async cleanup() {
149
+ await this.sessionManager.closeAllSessions();
150
+ await this.personaRegistry.cleanup();
151
+ this.activeSessions.clear();
152
+ }
153
+ /**
154
+ * @deprecated 内部实现,不应该对外暴露
155
+ */
156
+ getPersonaRegistry() {
157
+ return this.personaRegistry;
158
+ }
159
+ /**
160
+ * @deprecated 内部实现,不应该对外暴露
161
+ */
162
+ getSessionManager() {
163
+ return this.sessionManager;
164
+ }
165
+ }
166
+ //# sourceMappingURL=personaCoreClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personaCoreClient.js","sourceRoot":"","sources":["../../src/client/personaCoreClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Workflow Handle
3
+ * 封装工作流的操作和状态
4
+ */
5
+ import { SessionHandle, SessionExecutionResult } from '../session/sessionHandle.js';
6
+ /**
7
+ * 工作流状态
8
+ */
9
+ export type WorkflowStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
10
+ /**
11
+ * Workflow Handle
12
+ * 提供与原 persona-core 兼容的工作流接口
13
+ */
14
+ export declare class WorkflowHandle {
15
+ readonly workflowId: string;
16
+ readonly personaId: string;
17
+ private sessionHandle;
18
+ private status;
19
+ private result?;
20
+ private error?;
21
+ private completionPromise?;
22
+ private resolveCompletion?;
23
+ private rejectCompletion?;
24
+ constructor(workflowId: string, personaId: string, sessionHandle: SessionHandle);
25
+ /**
26
+ * 获取当前状态
27
+ */
28
+ getStatus(): WorkflowStatus;
29
+ /**
30
+ * 获取 Session Handle
31
+ */
32
+ getSessionHandle(): SessionHandle;
33
+ /**
34
+ * 获取最后结果
35
+ */
36
+ getLastResult(): SessionExecutionResult | undefined;
37
+ /**
38
+ * 设置运行状态
39
+ */
40
+ setRunning(): void;
41
+ /**
42
+ * 设置完成状态
43
+ */
44
+ setCompleted(result: SessionExecutionResult): void;
45
+ /**
46
+ * 设置失败状态
47
+ */
48
+ setFailed(error: Error): void;
49
+ /**
50
+ * 等待完成
51
+ */
52
+ waitForCompletion(): Promise<SessionExecutionResult>;
53
+ /**
54
+ * 取消工作流
55
+ */
56
+ cancel(): void;
57
+ /**
58
+ * 获取错误信息
59
+ */
60
+ getError(): Error | undefined;
61
+ }
62
+ //# sourceMappingURL=workflowHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowHandle.d.ts","sourceRoot":"","sources":["../../src/client/workflowHandle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB;;;GAGG;AACH,qBAAa,cAAc;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAyB;IACxC,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,OAAO,CAAC,iBAAiB,CAAC,CAAkC;IAC5D,OAAO,CAAC,iBAAiB,CAAC,CAA2C;IACrE,OAAO,CAAC,gBAAgB,CAAC,CAAyB;gBAGhD,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa;IAa9B;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,aAAa,IAAI,sBAAsB,GAAG,SAAS;IAInD;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAMlD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAM7B;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAa1D;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;OAEG;IACH,QAAQ,IAAI,KAAK,GAAG,SAAS;CAG9B"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Workflow Handle
3
+ * 封装工作流的操作和状态
4
+ */
5
+ /**
6
+ * Workflow Handle
7
+ * 提供与原 persona-core 兼容的工作流接口
8
+ */
9
+ export class WorkflowHandle {
10
+ workflowId;
11
+ personaId;
12
+ sessionHandle;
13
+ status = 'pending';
14
+ result;
15
+ error;
16
+ completionPromise;
17
+ resolveCompletion;
18
+ rejectCompletion;
19
+ constructor(workflowId, personaId, sessionHandle) {
20
+ this.workflowId = workflowId;
21
+ this.personaId = personaId;
22
+ this.sessionHandle = sessionHandle;
23
+ // 创建 completion promise
24
+ this.completionPromise = new Promise((resolve, reject) => {
25
+ this.resolveCompletion = resolve;
26
+ this.rejectCompletion = reject;
27
+ });
28
+ }
29
+ /**
30
+ * 获取当前状态
31
+ */
32
+ getStatus() {
33
+ return this.status;
34
+ }
35
+ /**
36
+ * 获取 Session Handle
37
+ */
38
+ getSessionHandle() {
39
+ return this.sessionHandle;
40
+ }
41
+ /**
42
+ * 获取最后结果
43
+ */
44
+ getLastResult() {
45
+ return this.result;
46
+ }
47
+ /**
48
+ * 设置运行状态
49
+ */
50
+ setRunning() {
51
+ this.status = 'running';
52
+ }
53
+ /**
54
+ * 设置完成状态
55
+ */
56
+ setCompleted(result) {
57
+ this.status = 'completed';
58
+ this.result = result;
59
+ this.resolveCompletion?.(result);
60
+ }
61
+ /**
62
+ * 设置失败状态
63
+ */
64
+ setFailed(error) {
65
+ this.status = 'failed';
66
+ this.error = error;
67
+ this.rejectCompletion?.(error);
68
+ }
69
+ /**
70
+ * 等待完成
71
+ */
72
+ async waitForCompletion() {
73
+ if (this.status === 'completed' && this.result) {
74
+ return this.result;
75
+ }
76
+ if (this.status === 'failed' && this.error) {
77
+ throw this.error;
78
+ }
79
+ if (!this.completionPromise) {
80
+ throw new Error('Workflow not properly initialized');
81
+ }
82
+ return this.completionPromise;
83
+ }
84
+ /**
85
+ * 取消工作流
86
+ */
87
+ cancel() {
88
+ if (this.status === 'running' || this.status === 'pending') {
89
+ this.status = 'cancelled';
90
+ this.rejectCompletion?.(new Error('Workflow cancelled'));
91
+ }
92
+ }
93
+ /**
94
+ * 获取错误信息
95
+ */
96
+ getError() {
97
+ return this.error;
98
+ }
99
+ }
100
+ //# sourceMappingURL=workflowHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowHandle.js","sourceRoot":"","sources":["../../src/client/workflowHandle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;;GAGG;AACH,MAAM,OAAO,cAAc;IAChB,UAAU,CAAS;IACnB,SAAS,CAAS;IACnB,aAAa,CAAgB;IAC7B,MAAM,GAAmB,SAAS,CAAC;IACnC,MAAM,CAA0B;IAChC,KAAK,CAAS;IACd,iBAAiB,CAAmC;IACpD,iBAAiB,CAA4C;IAC7D,gBAAgB,CAA0B;IAElD,YACE,UAAkB,EAClB,SAAiB,EACjB,aAA4B;QAE5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,wBAAwB;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAA8B;QACzC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAY;QACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generators module exports
3
+ */
4
+ export * from './toolFileGenerator.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generators module exports
3
+ */
4
+ export * from './toolFileGenerator.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Tool 文件生成器
3
+ * 将 ActionNodeType 转换为 opencode tool 文件内容
4
+ */
5
+ import { ActionNodeType } from '../types/index.js';
6
+ import { Persona } from '../types/persona.js';
7
+ /**
8
+ * 生成 opencode tool 文件内容
9
+ */
10
+ export declare function generateToolFile(actionType: ActionNodeType, persona: Persona): string;
11
+ /**
12
+ * 生成 tool 文件名
13
+ */
14
+ export declare function getToolFileName(actionType: ActionNodeType): string;
15
+ //# sourceMappingURL=toolFileGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolFileGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/toolFileGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAiBrF;AA6WD;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAOlE"}