@quukk/opencode-clawmessenger 0.2.0 → 1.0.3

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 (106) hide show
  1. package/README.md +71 -623
  2. package/bin/opencode-clawmessenger +2 -2
  3. package/bin/opencode-clawmessenger-setup +5 -5
  4. package/dist/cli.d.ts +0 -1
  5. package/dist/cli.js +1 -288
  6. package/dist/core/auto-register.d.ts +0 -1
  7. package/dist/core/auto-register.js +1 -174
  8. package/dist/core/auto-serve.d.ts +13 -0
  9. package/dist/core/auto-serve.js +1 -0
  10. package/dist/core/config.d.ts +2 -3
  11. package/dist/core/config.js +1 -80
  12. package/dist/core/daemon.d.ts +0 -1
  13. package/dist/core/daemon.js +1 -77
  14. package/dist/core/dedup.d.ts +0 -1
  15. package/dist/core/dedup.js +1 -25
  16. package/dist/core/hook-manager.d.ts +0 -1
  17. package/dist/core/hook-manager.js +1 -33
  18. package/dist/core/logger.d.ts +0 -1
  19. package/dist/core/logger.js +1 -49
  20. package/dist/core/mac-address.d.ts +0 -1
  21. package/dist/core/mac-address.js +1 -43
  22. package/dist/core/message-handler.d.ts +1 -1
  23. package/dist/core/message-handler.js +1 -984
  24. package/dist/core/ops-assistant.d.ts +0 -1
  25. package/dist/core/ops-assistant.js +1 -270
  26. package/dist/core/qr-crypto.d.ts +0 -1
  27. package/dist/core/qr-crypto.js +1 -66
  28. package/dist/core/session-manager.d.ts +0 -1
  29. package/dist/core/session-manager.js +1 -144
  30. package/dist/core/types.d.ts +1 -2
  31. package/dist/core/types.js +1 -26
  32. package/dist/index.d.ts +0 -1
  33. package/dist/index.js +1 -16
  34. package/dist/openclaw/client.d.ts +0 -1
  35. package/dist/openclaw/client.js +1 -494
  36. package/dist/opencode/client.d.ts +0 -1
  37. package/dist/opencode/client.js +1 -279
  38. package/dist/opencode/event-handler.d.ts +0 -1
  39. package/dist/opencode/event-handler.js +1 -467
  40. package/dist/plugin.d.ts +0 -1
  41. package/dist/plugin.js +1 -148
  42. package/dist/rongcloud/client.d.ts +0 -1
  43. package/dist/rongcloud/client.js +1 -292
  44. package/dist/rongcloud/env-polyfill.d.ts +0 -1
  45. package/dist/rongcloud/env-polyfill.js +1 -107
  46. package/dist/rongcloud/server-api.d.ts +0 -1
  47. package/dist/rongcloud/server-api.js +1 -157
  48. package/dist/standalone.d.ts +0 -1
  49. package/dist/standalone.js +1 -229
  50. package/dist/types/plugin.d.ts +0 -1
  51. package/dist/types/plugin.js +1 -2
  52. package/dist/websocket/client.d.ts +0 -1
  53. package/dist/websocket/client.js +1 -88
  54. package/dist/websocket/server-client.d.ts +0 -1
  55. package/dist/websocket/server-client.js +1 -98
  56. package/package.json +83 -81
  57. package/dist/cli.d.ts.map +0 -1
  58. package/dist/cli.js.map +0 -1
  59. package/dist/core/auto-register.d.ts.map +0 -1
  60. package/dist/core/auto-register.js.map +0 -1
  61. package/dist/core/config.d.ts.map +0 -1
  62. package/dist/core/config.js.map +0 -1
  63. package/dist/core/daemon.d.ts.map +0 -1
  64. package/dist/core/daemon.js.map +0 -1
  65. package/dist/core/dedup.d.ts.map +0 -1
  66. package/dist/core/dedup.js.map +0 -1
  67. package/dist/core/hook-manager.d.ts.map +0 -1
  68. package/dist/core/hook-manager.js.map +0 -1
  69. package/dist/core/logger.d.ts.map +0 -1
  70. package/dist/core/logger.js.map +0 -1
  71. package/dist/core/mac-address.d.ts.map +0 -1
  72. package/dist/core/mac-address.js.map +0 -1
  73. package/dist/core/message-handler.d.ts.map +0 -1
  74. package/dist/core/message-handler.js.map +0 -1
  75. package/dist/core/ops-assistant.d.ts.map +0 -1
  76. package/dist/core/ops-assistant.js.map +0 -1
  77. package/dist/core/qr-crypto.d.ts.map +0 -1
  78. package/dist/core/qr-crypto.js.map +0 -1
  79. package/dist/core/session-manager.d.ts.map +0 -1
  80. package/dist/core/session-manager.js.map +0 -1
  81. package/dist/core/types.d.ts.map +0 -1
  82. package/dist/core/types.js.map +0 -1
  83. package/dist/index.d.ts.map +0 -1
  84. package/dist/index.js.map +0 -1
  85. package/dist/openclaw/client.d.ts.map +0 -1
  86. package/dist/openclaw/client.js.map +0 -1
  87. package/dist/opencode/client.d.ts.map +0 -1
  88. package/dist/opencode/client.js.map +0 -1
  89. package/dist/opencode/event-handler.d.ts.map +0 -1
  90. package/dist/opencode/event-handler.js.map +0 -1
  91. package/dist/plugin.d.ts.map +0 -1
  92. package/dist/plugin.js.map +0 -1
  93. package/dist/rongcloud/client.d.ts.map +0 -1
  94. package/dist/rongcloud/client.js.map +0 -1
  95. package/dist/rongcloud/env-polyfill.d.ts.map +0 -1
  96. package/dist/rongcloud/env-polyfill.js.map +0 -1
  97. package/dist/rongcloud/server-api.d.ts.map +0 -1
  98. package/dist/rongcloud/server-api.js.map +0 -1
  99. package/dist/standalone.d.ts.map +0 -1
  100. package/dist/standalone.js.map +0 -1
  101. package/dist/types/plugin.d.ts.map +0 -1
  102. package/dist/types/plugin.js.map +0 -1
  103. package/dist/websocket/client.d.ts.map +0 -1
  104. package/dist/websocket/client.js.map +0 -1
  105. package/dist/websocket/server-client.d.ts.map +0 -1
  106. package/dist/websocket/server-client.js.map +0 -1
@@ -1,279 +1 @@
1
- import { createOpencodeClient } from '@opencode-ai/sdk/v2/client';
2
- import { createLogger } from '../core/logger.js';
3
- import { join } from 'path';
4
- import { existsSync, readFileSync } from 'fs';
5
- const log = createLogger('OpenCodeClient');
6
- /**
7
- * 序列化错误对象为可读的字符串
8
- * 解决 JSON.stringify(Error) 返回 {} 的问题
9
- */
10
- export function serializeError(error) {
11
- if (error instanceof Error) {
12
- return error.message || error.name || 'Unknown Error';
13
- }
14
- if (typeof error === 'object' && error !== null) {
15
- const err = error;
16
- if (err.message)
17
- return err.message;
18
- if (err.error)
19
- return typeof err.error === 'string' ? err.error : JSON.stringify(err.error);
20
- if (err.detail)
21
- return err.detail;
22
- if (err.statusText)
23
- return err.statusText;
24
- return JSON.stringify(error);
25
- }
26
- return String(error);
27
- }
28
- export class OpenCodeClient {
29
- constructor(options) {
30
- this.baseUrl = options.baseUrl;
31
- this.directory = options.directory || process.cwd();
32
- const config = {
33
- baseUrl: this.baseUrl,
34
- directory: this.directory,
35
- };
36
- // 如果提供了密码,添加到请求头
37
- if (options.password) {
38
- config.headers = {
39
- 'Authorization': `Basic ${Buffer.from(`opencode:${options.password}`).toString('base64')}`
40
- };
41
- }
42
- this.client = createOpencodeClient(config);
43
- // 加载 system prompt
44
- this.systemPrompt = this.loadSystemPrompt();
45
- log.info({
46
- hasSystemPrompt: !!this.systemPrompt,
47
- systemPromptLength: this.systemPrompt?.length || 0,
48
- directory: this.directory
49
- }, 'OpenCodeClient initialized');
50
- }
51
- loadSystemPrompt() {
52
- // 1. 首先尝试加载 soul/ 目录下的魂器文件(和 hunqi 插件相同逻辑)
53
- const soulFiles = ['IDENTITY.md', 'SOUL.md', 'USER.md', 'AGENTS.md'];
54
- const soulParts = [];
55
- for (const filename of soulFiles) {
56
- const filepath = join(this.directory, 'soul', filename);
57
- if (existsSync(filepath)) {
58
- try {
59
- const content = readFileSync(filepath, 'utf-8');
60
- if (content.trim().length > 0) {
61
- soulParts.push(`=== ${filename} ===\n\n${content}`);
62
- }
63
- }
64
- catch (err) {
65
- log.warn({ err, filepath }, 'Failed to read soul file');
66
- }
67
- }
68
- }
69
- if (soulParts.length > 0) {
70
- const soulText = soulParts.join('\n\n---\n\n');
71
- log.info({ soulFilesLoaded: soulParts.length, totalLength: soulText.length }, 'Loaded soul framework files');
72
- return soulText;
73
- }
74
- // 2. 回退到 .opencode/prompt.md
75
- try {
76
- const promptPath = join(this.directory, '.opencode', 'prompt.md');
77
- log.info({ promptPath }, 'Looking for system prompt');
78
- if (existsSync(promptPath)) {
79
- const content = readFileSync(promptPath, 'utf-8');
80
- if (content.trim().length > 0) {
81
- log.info({ path: promptPath, length: content.length }, 'Loaded system prompt');
82
- return content;
83
- }
84
- }
85
- else {
86
- log.warn({ promptPath }, 'System prompt file not found');
87
- }
88
- }
89
- catch (err) {
90
- log.warn({ err }, 'Failed to load system prompt');
91
- }
92
- return undefined;
93
- }
94
- getBaseUrl() {
95
- return this.baseUrl;
96
- }
97
- getSystemPrompt() {
98
- return this.systemPrompt;
99
- }
100
- async createSession(title) {
101
- const { data, error, response } = await this.client.session.create({ title, directory: this.directory });
102
- if (error) {
103
- const errStr = serializeError(error);
104
- const statusText = response?.statusText ? ` [${response.status} ${response.statusText}]` : '';
105
- throw new Error(`创建会话失败: ${errStr}${statusText}`);
106
- }
107
- const sessionId = data?.id || data?.session_id;
108
- if (!sessionId)
109
- throw new Error('创建会话返回空 ID');
110
- log.info({ sessionId }, 'Session created');
111
- return { id: sessionId };
112
- }
113
- async sessionExists(sessionId) {
114
- try {
115
- const { data } = await this.client.session.get({ sessionID: sessionId, directory: this.directory });
116
- return !!data;
117
- }
118
- catch {
119
- return false;
120
- }
121
- }
122
- async sendPromptAsync(sessionId, text) {
123
- const { error, response } = await this.client.session.promptAsync({
124
- sessionID: sessionId,
125
- directory: this.directory,
126
- system: this.systemPrompt,
127
- parts: [{ type: 'text', text: text }],
128
- });
129
- if (error) {
130
- const errStr = serializeError(error);
131
- const statusText = response?.statusText ? ` [${response.status} ${response.statusText}]` : '';
132
- throw new Error(`发送消息失败: ${errStr}${statusText}`);
133
- }
134
- log.info({ sessionId, hasSystemPrompt: !!this.systemPrompt }, 'promptAsync fired');
135
- }
136
- async sendPrompt(sessionId, text) {
137
- const { error, response } = await this.client.session.prompt({
138
- sessionID: sessionId,
139
- directory: this.directory,
140
- system: this.systemPrompt,
141
- parts: [{ type: 'text', text: text }],
142
- });
143
- if (error) {
144
- const errStr = serializeError(error);
145
- const statusText = response?.statusText ? ` [${response.status} ${response.statusText}]` : '';
146
- throw new Error(`发送消息失败: ${errStr}${statusText}`);
147
- }
148
- log.info({ sessionId }, 'Prompt sent, waiting for response');
149
- return this.waitForResponse(sessionId);
150
- }
151
- async subscribeGlobalEvents() {
152
- const result = await this.client.global.event({});
153
- log.info('Global SSE stream connected');
154
- return result;
155
- }
156
- async waitForResponse(sessionId) {
157
- try {
158
- await this.client.v2.session.wait({ sessionID: sessionId, directory: this.directory });
159
- log.info({ sessionId }, 'Session completed');
160
- for (let i = 0; i < 30; i++) {
161
- const { data: messages } = await this.client.session.messages({ sessionID: sessionId, directory: this.directory });
162
- if (messages && Array.isArray(messages) && messages.length > 0) {
163
- const lastMsg = messages[messages.length - 1];
164
- if (lastMsg.parts && lastMsg.parts.length > 0) {
165
- const textPart = lastMsg.parts.find((p) => p.type === 'text');
166
- if (textPart && textPart.text) {
167
- return textPart.text;
168
- }
169
- }
170
- }
171
- await new Promise(resolve => setTimeout(resolve, 1000));
172
- }
173
- return '回复已生成但无法读取内容';
174
- }
175
- catch (err) {
176
- log.error({ err, sessionId }, '等待会话完成失败');
177
- return '响应超时,请稍后重试';
178
- }
179
- }
180
- async fetchLastMessageText(sessionId) {
181
- try {
182
- const { data: messages } = await this.client.session.messages({ sessionID: sessionId, directory: this.directory });
183
- log.info({ messageCount: messages?.length }, 'Fetched messages');
184
- if (messages && Array.isArray(messages) && messages.length > 0) {
185
- // 从后往前找 AI 的回复
186
- for (let i = messages.length - 1; i >= 0; i--) {
187
- const msg = messages[i];
188
- const role = msg.role || msg.author?.role;
189
- log.info({ index: i, role, info: msg.info, keys: Object.keys(msg).slice(0, 10), hasParts: !!msg.parts, partCount: msg.parts?.length }, 'Checking message');
190
- if (role === 'assistant' || role === 'model') {
191
- if (msg.parts && msg.parts.length > 0) {
192
- const textPart = msg.parts.find((p) => p.type === 'text');
193
- if (textPart?.text) {
194
- log.info({ textLength: textPart.text.length }, 'Found AI response');
195
- return textPart.text;
196
- }
197
- }
198
- }
199
- }
200
- // 如果没找到 assistant 消息,返回最后一条消息的文本(可能是不同格式)
201
- const lastMsg = messages[messages.length - 1];
202
- if (lastMsg.parts && lastMsg.parts.length > 0) {
203
- const textPart = lastMsg.parts.find((p) => p.type === 'text');
204
- if (textPart?.text) {
205
- log.info({ role: lastMsg.role || lastMsg.author?.role, textLength: textPart.text.length }, 'Using last message as fallback');
206
- return textPart.text;
207
- }
208
- }
209
- }
210
- }
211
- catch (err) {
212
- log.error({ err: err.message }, 'Failed to fetch messages');
213
- }
214
- return null;
215
- }
216
- async sendCommand(sessionId, command) {
217
- try {
218
- await this.client.session.prompt({
219
- sessionID: sessionId,
220
- directory: this.directory,
221
- parts: [{ type: 'text', text: command }],
222
- });
223
- }
224
- catch (err) {
225
- log.warn({ err, sessionId, command }, 'Command failed');
226
- }
227
- }
228
- async deleteSession(sessionId) {
229
- try {
230
- await this.client.session.delete({ sessionID: sessionId });
231
- log.info({ sessionId }, 'Session deleted');
232
- }
233
- catch (err) {
234
- log.error({ err, sessionId }, '删除会话失败');
235
- }
236
- }
237
- async listSessions() {
238
- try {
239
- const { data } = await this.client.session.list({});
240
- return data || [];
241
- }
242
- catch {
243
- return [];
244
- }
245
- }
246
- }
247
- export async function checkOpencodeStatus(opencodeUrl, password) {
248
- const headers = {};
249
- if (password) {
250
- headers['Authorization'] = `Basic ${Buffer.from(`opencode:${password}`).toString('base64')}`;
251
- }
252
- // 尝试多个端点,因为不同版本的 OpenCode 可能响应不同的路径
253
- const endpoints = [
254
- `${opencodeUrl}/health`,
255
- `${opencodeUrl}/api/health`,
256
- `${opencodeUrl}/v1/health`,
257
- opencodeUrl, // 最后尝试根路径
258
- ];
259
- for (const url of endpoints) {
260
- try {
261
- log.debug({ url }, 'Trying OpenCode health endpoint');
262
- const controller = new AbortController();
263
- const timeoutId = setTimeout(() => controller.abort(), 2000);
264
- const response = await fetch(url, { method: 'GET', headers, signal: controller.signal });
265
- clearTimeout(timeoutId);
266
- if (response.ok || response.status === 401) {
267
- log.info({ url, status: response.status }, 'OpenCode status check success');
268
- return true;
269
- }
270
- }
271
- catch (err) {
272
- log.debug({ url, err: err.message }, 'OpenCode endpoint check failed');
273
- // 继续尝试下一个端点
274
- }
275
- }
276
- log.warn({ opencodeUrl }, 'OpenCode status check failed on all endpoints');
277
- return false;
278
- }
279
- //# sourceMappingURL=client.js.map
1
+ const a0_0x1236b1=a0_0x48f7;(function(_0x108f77,_0x1fa274){const _0x23f3d6=a0_0x48f7,_0x47792b=_0x108f77();while(!![]){try{const _0x2f3c26=parseInt(_0x23f3d6(0xf8))/0x1+parseInt(_0x23f3d6(0xb6))/0x2*(-parseInt(_0x23f3d6(0x15e))/0x3)+-parseInt(_0x23f3d6(0xd0))/0x4+parseInt(_0x23f3d6(0x12b))/0x5+parseInt(_0x23f3d6(0x135))/0x6*(-parseInt(_0x23f3d6(0xe7))/0x7)+parseInt(_0x23f3d6(0x13f))/0x8+parseInt(_0x23f3d6(0x108))/0x9*(parseInt(_0x23f3d6(0xf4))/0xa);if(_0x2f3c26===_0x1fa274)break;else _0x47792b['push'](_0x47792b['shift']());}catch(_0x3cc481){_0x47792b['push'](_0x47792b['shift']());}}}(a0_0x11c8,0x756e7));import{createOpencodeClient}from'@opencode-ai/sdk/v2/client';import{createLogger}from'../core/logger.js';import{join}from'path';function a0_0x48f7(_0x35700f,_0x33bf02){_0x35700f=_0x35700f-0xa0;const _0x11c812=a0_0x11c8();let _0x48f750=_0x11c812[_0x35700f];if(a0_0x48f7['cCMyQo']===undefined){var _0x492687=function(_0x309533){const _0x1e6471='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5eb1d6='',_0x1e1d53='';for(let _0x4f421a=0x0,_0xff3088,_0x8efaf,_0x23a156=0x0;_0x8efaf=_0x309533['charAt'](_0x23a156++);~_0x8efaf&&(_0xff3088=_0x4f421a%0x4?_0xff3088*0x40+_0x8efaf:_0x8efaf,_0x4f421a++%0x4)?_0x5eb1d6+=String['fromCharCode'](0xff&_0xff3088>>(-0x2*_0x4f421a&0x6)):0x0){_0x8efaf=_0x1e6471['indexOf'](_0x8efaf);}for(let _0x50d338=0x0,_0x256034=_0x5eb1d6['length'];_0x50d338<_0x256034;_0x50d338++){_0x1e1d53+='%'+('00'+_0x5eb1d6['charCodeAt'](_0x50d338)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e1d53);};a0_0x48f7['GJrITn']=_0x492687,a0_0x48f7['xkoNBQ']={},a0_0x48f7['cCMyQo']=!![];}const _0x2c1a10=_0x11c812[0x0],_0x5684d9=_0x35700f+_0x2c1a10,_0x550268=a0_0x48f7['xkoNBQ'][_0x5684d9];return!_0x550268?(_0x48f750=a0_0x48f7['GJrITn'](_0x48f750),a0_0x48f7['xkoNBQ'][_0x5684d9]=_0x48f750):_0x48f750=_0x550268,_0x48f750;}import{existsSync,readFileSync}from'fs';function a0_0x11c8(){const _0x5226f7=['wwPRrvm','A2v5CW','DxvnC1C','D09xtxC','C2XPy2u','r2LzCey','C2LNBMfS','qMfZAwmG','uhjVBxb0ihnLBNqSihDHAxrPBMCGzM9YihjLC3bVBNnL','Bw9KzwW','twLWCwm','qM5uAMS','z0zdrLi','yMTHy2W','C3vIC2nYAwjLr2XVyMfSrxzLBNrZ','D3LOB0i','DLPHwfu','pt09ia','562j5B6f5lYA6k+D5A6m5OIq5AsX6lsL','C2vZC2LVBG','DK9mwvy','t3bLBKnVzgvdBgLLBNqGAw5PDgLHBgL6zwq','z1fbCxm','vxzysva','mJC4BNrTr0X2','B3bLBMnVzgu6','CNzdAhe','s1vquwC','zMH4Aha','ChjVBxb0lM1K','sxzjCwS','s3bVshm','AejVAhu','5zUE5Asn5BEY55sF5OIq5l2g5PEG5Rov6k+75y+w5yAf5A65','EgD2Beq','z0rcyvK','uevgy2G','y3jLyxrLu2vZC2LVBG','AgvHzgvYCW','v0X6sLm','BMfTzq','wwLLqKC','sgDcs1m','sLfkEeC','zMv0y2Hmyxn0twvZC2fNzvrLEhq','txvOtKS','se1wyLi','zxzLBNq','C3rHDhvZ','5yIG6zMK5lYA6k+D5AsX6lsL','mZe4mZmZmMzjt2L3yW','CeD3wgi','D05mBw8','vvnfuI5Tza','swzHEgC','B2jQzwn0','BgLZDfnLC3nPB25Z','DhjPBq','EMvMrgO','u3LZDgvTihbYB21WDcbMAwXLig5VDcbMB3vUza','D2fPDezVCLjLC3bVBNnL','v1Hmv2i','C3jfvxG','DxvMCLe','5yIB5BU65lYA6k+D5AsX6lsLoIa','r0P5sfC','z3HHAvm','s0X4z2i','yxv0Ag9Y','y1HWuhC','D2fYBG','qurhEhu','zw5eELq','mJm4me9nCePOrq','qu9Zrxm','lM9Wzw5JB2rL','ywr3wgq','s1HHDKK','u2vZC2LVBIbJCMvHDgvK','EvnMBxe','Aw5MBW','z2v0qMfZzvvYBa','BwvZC2fNzq','reT2ugK','quPlrvq','CxPzCMi','mJu5otbRALvVD20','wMTfCLm','C3rYAw5NAwz5','tNnAuMW','mtKZodq1t2LiAhvk','Bg9Hzfn5C3rLBvbYB21WDa','ENnvvMq','rvPhuui','r0vu','rMfPBgvKihrVigzLDgnOig1LC3nHz2vZ','zfPYvKy','cGOTls0kcG','BhjHtLO','5yIB5BU65lYA6k+D6l+u5zUE56M6ieLe','rMfPBgvKihrVigXVywqGC3LZDgvTihbYB21WDa','tu5Urw4','CM9Szq','DxrMltG','C3LZDgvTuhjVBxb0','ChjVBxb0qxn5BMmGzMLYzwq','odq2rg5UEef3','AM9PBG','zMLUza','y2XPzw50','tuzMBg8','zgvSzxrL','AxnbCNjHEq','DKrRsKW','Bwj2AeO','wMnnCuy','EK1Rt3G','C291Ba','rwznz3u','DhbHsgW','ALHmq2i','uuL2qxG','tM1XCxm','BwvZC2fNzxm','z2v0','BKjPu3y','ChvZAa','A0THDvO','DMfXrKS','u0vssKG','D1fvy1K','rMfPBgvKihrVihjLywqGC291BcbMAwXL','wvHcyvK','thDhCwi','v0HozxK','ywnIBve','t3bLBKnVzguGC3rHDhvZignOzwnRigzHAwXLzcbVBIbHBgWGzw5KCg9PBNrZ','y3DK','y2jbB0m','BgvUz3rO','ugDyEKm','ndC3mZG2mgXZBvfcsG','rfP0v3y','zgLYzwn0B3j5','renLsLe','zNjVBq','l3yXl2HLywX0Aa','C2vUzfbYB21WDefZEw5J','EfL3CwG','BgLZDa','surftLrjvfKUBwq','mZy4nhDJz3fduG','vMnAz20','BejQyLe','C2LWsKe','tg9HzgvKihn5C3rLBsbWCM9TChq','wKTTwMO','B1LevLy','CgfZC3DVCMq','t3bLBKnVzguGC3rHDhvZignOzwnRihn1y2nLC3m','B2n1v1O','mty0ntqWofbZs1DTva','EhL4quS','5y+r6ycb5RAi5OgV5AsX6lsLoIa','uvbXsfm','DMnpDwe','tgLyzeG','zxjYB3i','rM91BMqGquKGCMvZCg9UC2u','wxbLr08','yuX3DK4','thDxA3O','ANniy1u','C3rHDhvZvgv4Da','AuXHrwe','ugnyBM8','vhj5Aw5Nie9Wzw5dB2rLigHLywX0AcbLBMrWB2LUDa','tg9VA2LUzYbMB3iGC3LZDgvTihbYB21WDa','Exzwwhy','t3bLBKnVzguGzw5KCg9PBNqGy2HLy2SGzMfPBgvK','qxv0Ag9YAxPHDgLVBG','zgv0ywLS','tLbvthe','r2XVyMfSifntrsbZDhjLyw0Gy29UBMvJDgvK','Ag9OyK4','ve1nyNi','quDftLrtlM1K','zvn1zvy','z2v0u3LZDgvTuhjVBxb0','q0XXvwS','CgfYDhm','u2vZC2LVBIbJB21WBgv0zwq','mJqZouHNr2nkAq','id09pqOk','ENj3qvy','DhLWzq','vw5RBM93BIbfCNjVCG','Dgv4Da','5zon5BQu6lAf5PE277Ym6k+356In5zco6yEn6k+v','zgvIDwC','yMfZzty0','AfPtB3m','D1zSvMW','tMD4rw0','vxnPBMCGBgfZDcbTzxnZywDLigfZigzHBgXIywnR','q09gyuy','uu9UzKS','C2vUzenVBw1HBMq','yMfZzvvYBa','yxnZAxn0yw50','C2vUzfbYB21WDa','rwnNELG','q2HLy2TPBMCGBwvZC2fNzq','C2vZC2LVBKv4Axn0CW','ze1ZtxO','Dg9tDhjPBMC','C3rYAw5N'];a0_0x11c8=function(){return _0x5226f7;};return a0_0x11c8();}const log=createLogger('OpenCodeClient');export function serializeError(_0x2dfbb3){const _0x48bd19=a0_0x48f7,_0x211cc7={'KpoHs':_0x48bd19(0x162),'JQJxG':function(_0x22601a,_0x4b87f1){return _0x22601a===_0x4b87f1;},'hZSos':'object','uuMsW':function(_0x173179,_0x2bea73){return _0x173179!==_0x2bea73;},'nOVhp':function(_0x3499db,_0x4eabbe){return _0x3499db===_0x4eabbe;},'aLwvN':'string','xyxAK':function(_0x3eb32e,_0x1b8a7e){return _0x3eb32e(_0x1b8a7e);}};if(_0x2dfbb3 instanceof Error)return _0x2dfbb3[_0x48bd19(0xf0)]||_0x2dfbb3['name']||_0x211cc7[_0x48bd19(0xbd)];if(_0x211cc7[_0x48bd19(0xc9)](typeof _0x2dfbb3,_0x211cc7[_0x48bd19(0x167)])&&_0x211cc7[_0x48bd19(0xa0)](_0x2dfbb3,null)){const _0x301759=_0x2dfbb3;if(_0x301759[_0x48bd19(0xf0)])return _0x301759['message'];if(_0x301759[_0x48bd19(0x145)])return _0x211cc7['nOVhp'](typeof _0x301759[_0x48bd19(0x145)],_0x211cc7[_0x48bd19(0x148)])?_0x301759[_0x48bd19(0x145)]:JSON[_0x48bd19(0xf6)](_0x301759[_0x48bd19(0x145)]);if(_0x301759[_0x48bd19(0x153)])return _0x301759[_0x48bd19(0x153)];if(_0x301759[_0x48bd19(0x14b)])return _0x301759[_0x48bd19(0x14b)];return JSON[_0x48bd19(0xf6)](_0x2dfbb3);}return _0x211cc7[_0x48bd19(0x140)](String,_0x2dfbb3);}export class OpenCodeClient{constructor(_0x15c06e){const _0x341921=a0_0x48f7,_0x359c52={'gFCFR':_0x341921(0xd9),'NPULq':function(_0x507313,_0x318e33){return _0x507313!==_0x318e33;},'vDkJL':_0x341921(0xf5),'srEUx':_0x341921(0x166),'HgBKS':function(_0x5dd93e,_0x3c67b4){return _0x5dd93e(_0x3c67b4);}};this['baseUrl']=_0x15c06e['baseUrl'],this[_0x341921(0x12d)]=_0x15c06e['directory']||process[_0x341921(0x127)]();const _0xe1c23c={'baseUrl':this[_0x341921(0x16e)],'directory':this[_0x341921(0x12d)]};_0x15c06e[_0x341921(0x13c)]&&(_0x359c52[_0x341921(0x154)](_0x341921(0xf5),_0x359c52[_0x341921(0x10f)])?_0x5960d1[_0x341921(0xe4)]({'promptPath':_0x1f3389},_0x359c52[_0x341921(0xaa)]):_0xe1c23c[_0x341921(0xc4)]={'Authorization':_0x341921(0xa5)+Buffer[_0x341921(0x12f)]('opencode:'+_0x15c06e[_0x341921(0x13c)])[_0x341921(0x175)](_0x359c52[_0x341921(0xdc)])}),this[_0x341921(0x10b)]=_0x359c52[_0x341921(0xc8)](createOpencodeClient,_0xe1c23c),this['systemPrompt']=this['loadSystemPrompt'](),log[_0x341921(0xee)]({'hasSystemPrompt':!!this[_0x341921(0x106)],'systemPromptLength':this[_0x341921(0x106)]?.['length']||0x0,'directory':this[_0x341921(0x12d)]},_0x341921(0xb3));}[a0_0x1236b1(0xf9)](){const _0x33ebe2=a0_0x1236b1,_0x48f0c4={'kwteU':_0x33ebe2(0x13d),'ocuWZ':_0x33ebe2(0x102),'mbvhJ':'Using\x20last\x20message\x20as\x20fallback','ADGxu':_0x33ebe2(0xcf),'tpaHl':_0x33ebe2(0x134),'yvVXv':'SOUL.md','adwXd':_0x33ebe2(0xd3),'kQTmu':_0x33ebe2(0x158),'vcOua':function(_0x482b74,_0x7ae034,_0x4470d8,_0x3aae33){return _0x482b74(_0x7ae034,_0x4470d8,_0x3aae33);},'DZtWv':_0x33ebe2(0x113),'cbAoC':function(_0x1097aa,_0x6a6b3a){return _0x1097aa(_0x6a6b3a);},'DCeJQ':_0x33ebe2(0xfb),'NgxEm':_0x33ebe2(0xed),'GiYpF':function(_0x216f6e,_0x26d0c7){return _0x216f6e!==_0x26d0c7;},'AOsEs':_0x33ebe2(0xe3),'MNnEn':function(_0x594ab9,_0x50cb3a,_0x4a93b7){return _0x594ab9(_0x50cb3a,_0x4a93b7);},'LwGqb':_0x33ebe2(0xcc),'fhxhp':'PJqVj','MfpzN':function(_0x128f6b,_0x8ff07a){return _0x128f6b===_0x8ff07a;},'sFZMf':_0x33ebe2(0x111),'PcXno':_0x33ebe2(0xe9),'xgcDV':_0x33ebe2(0x14f),'AyUYL':function(_0x215485,_0x24e6f9){return _0x215485(_0x24e6f9);},'kKauZ':function(_0x983619,_0x1026ca,_0x2f7790){return _0x983619(_0x1026ca,_0x2f7790);},'YjkES':function(_0x4a46b2,_0x54f225){return _0x4a46b2>_0x54f225;},'vOLYV':_0x33ebe2(0x139),'COFaF':_0x33ebe2(0xd9)},_0x5c48eb=[_0x48f0c4[_0x33ebe2(0x115)],_0x48f0c4[_0x33ebe2(0x150)],_0x48f0c4[_0x33ebe2(0xea)],_0x48f0c4['kQTmu']],_0x5446ec=[];for(const _0x426a29 of _0x5c48eb){const _0x4339f4=_0x48f0c4[_0x33ebe2(0x143)](join,this['directory'],_0x48f0c4[_0x33ebe2(0x12c)],_0x426a29);if(_0x48f0c4[_0x33ebe2(0x128)](existsSync,_0x4339f4)){if(_0x48f0c4[_0x33ebe2(0x12e)]===_0x48f0c4[_0x33ebe2(0x169)])return _0x598736[_0x33ebe2(0xee)]({'url':_0x14508e,'status':_0x1fc825[_0x33ebe2(0xce)]},_0x48f0c4['kwteU']),!![];else try{if(_0x48f0c4[_0x33ebe2(0xa3)](_0x33ebe2(0xe3),_0x48f0c4[_0x33ebe2(0xe8)]))_0x2afdb2['warn']({'err':_0x50f87f},_0x48f0c4[_0x33ebe2(0x13e)]);else{const _0x5e3a09=_0x48f0c4[_0x33ebe2(0x103)](readFileSync,_0x4339f4,_0x33ebe2(0x105));_0x5e3a09[_0x33ebe2(0xd7)]()[_0x33ebe2(0x129)]>0x0&&_0x5446ec['push'](_0x33ebe2(0xaf)+_0x426a29+'\x20===\x0a\x0a'+_0x5e3a09);}}catch(_0x127990){if(_0x48f0c4[_0x33ebe2(0x123)]===_0x48f0c4[_0x33ebe2(0xba)])return _0x11fb8c['info']({'role':_0x290127[_0x33ebe2(0x104)]||_0x49a57e[_0x33ebe2(0xe2)]?.[_0x33ebe2(0x104)],'textLength':_0x2fbbc1['text'][_0x33ebe2(0x129)]},_0x48f0c4[_0x33ebe2(0x110)]),_0x3254f8['text'];else log[_0x33ebe2(0xe4)]({'err':_0x127990,'filepath':_0x4339f4},_0x33ebe2(0x121));}}}if(_0x5446ec[_0x33ebe2(0x129)]>0x0){const _0x74b890=_0x5446ec[_0x33ebe2(0x109)](_0x33ebe2(0xff));return log[_0x33ebe2(0xee)]({'soulFilesLoaded':_0x5446ec[_0x33ebe2(0x129)],'totalLength':_0x74b890[_0x33ebe2(0x129)]},'Loaded\x20soul\x20framework\x20files'),_0x74b890;}try{if(_0x48f0c4['MfpzN'](_0x48f0c4['sFZMf'],'ZcMqF')){const _0x502a6e=_0x48f0c4['vcOua'](join,this[_0x33ebe2(0x12d)],_0x48f0c4[_0x33ebe2(0x14d)],_0x33ebe2(0xbb));log[_0x33ebe2(0xee)]({'promptPath':_0x502a6e},_0x48f0c4['xgcDV']);if(_0x48f0c4['AyUYL'](existsSync,_0x502a6e)){const _0x3dbce6=_0x48f0c4[_0x33ebe2(0x11d)](readFileSync,_0x502a6e,_0x33ebe2(0x105));if(_0x48f0c4[_0x33ebe2(0x177)](_0x3dbce6[_0x33ebe2(0xd7)]()[_0x33ebe2(0x129)],0x0))return log[_0x33ebe2(0xee)]({'path':_0x502a6e,'length':_0x3dbce6[_0x33ebe2(0x129)]},_0x48f0c4[_0x33ebe2(0xb2)]),_0x3dbce6;}else log[_0x33ebe2(0xe4)]({'promptPath':_0x502a6e},_0x48f0c4[_0x33ebe2(0x16b)]);}else _0x24f8ab[_0x33ebe2(0x145)]({'err':_0x3f73fb,'sessionId':_0x1349f5},_0x48f0c4[_0x33ebe2(0xe5)]);}catch(_0x206b40){log['warn']({'err':_0x206b40},_0x48f0c4[_0x33ebe2(0x13e)]);}return undefined;}[a0_0x1236b1(0xef)](){return this['baseUrl'];}[a0_0x1236b1(0x15a)](){return this['systemPrompt'];}async[a0_0x1236b1(0xc3)](_0x20c520){const _0x1b44a2=a0_0x1236b1,_0x89eb5c={'gQAqs':_0x1b44a2(0x151),'hEeNn':_0x1b44a2(0x100),'wyhoB':function(_0xf50972,_0x128634){return _0xf50972(_0x128634);},'bgvcC':_0x1b44a2(0x101),'oTDiR':_0x1b44a2(0xec)},{data:_0xc8f1f3,error:_0xfaae2a,response:_0xf749af}=await this[_0x1b44a2(0x10b)][_0x1b44a2(0xb1)]['create']({'title':_0x20c520,'directory':this[_0x1b44a2(0x12d)]});if(_0xfaae2a){if(_0x89eb5c['hEeNn']==='eXrbe')_0x5e6656[_0x1b44a2(0x165)]({'url':_0x50f21e,'err':_0x1fac82[_0x1b44a2(0xf0)]},_0x89eb5c[_0x1b44a2(0xb4)]);else{const _0x10190a=_0x89eb5c[_0x1b44a2(0xad)](serializeError,_0xfaae2a),_0x55f0ff=_0xf749af?.[_0x1b44a2(0x14b)]?'\x20['+_0xf749af[_0x1b44a2(0xce)]+'\x20'+_0xf749af[_0x1b44a2(0x14b)]+']':'';throw new Error(_0x1b44a2(0xde)+_0x10190a+_0x55f0ff);}}const _0x1c9295=_0xc8f1f3?.['id']||_0xc8f1f3?.['session_id'];if(!_0x1c9295)throw new Error(_0x89eb5c['bgvcC']);return log['info']({'sessionId':_0x1c9295},_0x89eb5c['oTDiR']),{'id':_0x1c9295};}async[a0_0x1236b1(0x173)](_0x5a6d1a){const _0x1c7ef0=a0_0x1236b1,_0x31b14e={'qdADE':function(_0xe6b6f7,_0x786a17){return _0xe6b6f7>_0x786a17;},'EfMgu':function(_0x1203a3,_0x18edae){return _0x1203a3!==_0x18edae;},'zsUVd':_0x1c7ef0(0xc1),'zrwAV':function(_0x312239,_0x50be73){return _0x312239!==_0x50be73;},'wVlVl':_0x1c7ef0(0xdf)};try{if(_0x31b14e[_0x1c7ef0(0x114)](_0x1c7ef0(0xc1),_0x31b14e[_0x1c7ef0(0xfa)]))return this[_0x1c7ef0(0x16e)];else{const {data:_0x10e2af}=await this[_0x1c7ef0(0x10b)]['session'][_0x1c7ef0(0x11a)]({'sessionID':_0x5a6d1a,'directory':this[_0x1c7ef0(0x12d)]});return!!_0x10e2af;}}catch{if(_0x31b14e[_0x1c7ef0(0x160)](_0x31b14e[_0x1c7ef0(0x168)],_0x1c7ef0(0xdf))){if(_0x1d1519[_0x1c7ef0(0x15c)]&&_0x31b14e['qdADE'](_0x37f550[_0x1c7ef0(0x15c)]['length'],0x0)){const _0x5c6cba=_0x32a1ec[_0x1c7ef0(0x15c)][_0x1c7ef0(0x10a)](_0x57f2de=>_0x57f2de[_0x1c7ef0(0x161)]===_0x1c7ef0(0x163));if(_0x5c6cba?.[_0x1c7ef0(0x163)])return _0x1d4178[_0x1c7ef0(0xee)]({'textLength':_0x5c6cba[_0x1c7ef0(0x163)][_0x1c7ef0(0x129)]},_0x1c7ef0(0x146)),_0x5c6cba[_0x1c7ef0(0x163)];}}else return![];}}async[a0_0x1236b1(0x131)](_0x2450c2,_0x3a40a3){const _0x471c6d=a0_0x1236b1,_0x294bea={'KLxgb':function(_0x19352e,_0x5b1e42){return _0x19352e(_0x5b1e42);},'vZaXU':_0x471c6d(0x107)},{error:_0x13a170,response:_0x453daa}=await this[_0x471c6d(0x10b)][_0x471c6d(0xb1)]['promptAsync']({'sessionID':_0x2450c2,'directory':this['directory'],'system':this[_0x471c6d(0x106)],'parts':[{'type':'text','text':_0x3a40a3}]});if(_0x13a170){const _0x19758f=_0x294bea[_0x471c6d(0xe1)](serializeError,_0x13a170),_0x11a65e=_0x453daa?.[_0x471c6d(0x14b)]?'\x20['+_0x453daa[_0x471c6d(0xce)]+'\x20'+_0x453daa[_0x471c6d(0x14b)]+']':'';throw new Error('发送消息失败:\x20'+_0x19758f+_0x11a65e);}log['info']({'sessionId':_0x2450c2,'hasSystemPrompt':!!this[_0x471c6d(0x106)]},_0x294bea[_0x471c6d(0xae)]);}async[a0_0x1236b1(0x170)](_0x458bda,_0x348865){const _0x1772ac=a0_0x1236b1,_0x45bfbc={'frxXv':'text','enDzT':function(_0x3e0556,_0x47eda9){return _0x3e0556(_0x47eda9);},'YpeGO':_0x1772ac(0xa6)},{error:_0x10343d,response:_0xa6bf7a}=await this[_0x1772ac(0x10b)]['session']['prompt']({'sessionID':_0x458bda,'directory':this['directory'],'system':this['systemPrompt'],'parts':[{'type':_0x45bfbc['frxXv'],'text':_0x348865}]});if(_0x10343d){const _0x56557b=_0x45bfbc[_0x1772ac(0xe6)](serializeError,_0x10343d),_0x305e01=_0xa6bf7a?.[_0x1772ac(0x14b)]?'\x20['+_0xa6bf7a[_0x1772ac(0xce)]+'\x20'+_0xa6bf7a[_0x1772ac(0x14b)]+']':'';throw new Error(_0x1772ac(0x141)+_0x56557b+_0x305e01);}return log[_0x1772ac(0xee)]({'sessionId':_0x458bda},_0x45bfbc[_0x1772ac(0x147)]),this[_0x1772ac(0xda)](_0x458bda);}async[a0_0x1236b1(0xac)](){const _0x1f94e1=a0_0x1236b1,_0x379837={'iLaEa':_0x1f94e1(0x155)},_0x28b36f=await this['client']['global'][_0x1f94e1(0xcd)]({});return log[_0x1f94e1(0xee)](_0x379837[_0x1f94e1(0x14c)]),_0x28b36f;}async['waitForResponse'](_0x2ce073){const _0x49059d=a0_0x1236b1,_0x1d2c2f={'hohbN':function(_0x1bc3ce,_0x465a5a){return _0x1bc3ce(_0x465a5a);},'IvIqk':function(_0x14519d,_0x5132e3){return _0x14519d instanceof _0x5132e3;},'QPqHS':_0x49059d(0xd5),'YXBaY':function(_0xb1e999,_0x2b89d4){return _0xb1e999!==_0x2b89d4;},'uufrQ':_0x49059d(0x176),'acbmQ':_0x49059d(0x15d),'zefDj':function(_0x56d98b,_0x3f227d){return _0x56d98b<_0x3f227d;},'PgXzC':function(_0xc7aabb,_0x55d045){return _0xc7aabb>_0x55d045;},'dZrVF':'Nfpcg','AJKET':'imMUj','YieBG':function(_0x1884a4,_0x30e766){return _0x1884a4-_0x30e766;},'jXLCb':function(_0x239bad,_0x5604f6){return _0x239bad===_0x5604f6;},'WHNey':_0x49059d(0xa8),'MGxSe':'cNwoN','SERJH':_0x49059d(0xb0),'zMkOx':_0x49059d(0x164)};try{await this[_0x49059d(0x10b)]['v2']['session']['wait']({'sessionID':_0x2ce073,'directory':this[_0x49059d(0x12d)]}),log['info']({'sessionId':_0x2ce073},_0x1d2c2f[_0x49059d(0x125)]);for(let _0x2b50c6=0x0;_0x1d2c2f[_0x49059d(0xd8)](_0x2b50c6,0x1e);_0x2b50c6++){const {data:_0x2391e1}=await this[_0x49059d(0x10b)][_0x49059d(0xb1)][_0x49059d(0x119)]({'sessionID':_0x2ce073,'directory':this[_0x49059d(0x12d)]});if(_0x2391e1&&Array[_0x49059d(0x10e)](_0x2391e1)&&_0x1d2c2f[_0x49059d(0x12a)](_0x2391e1[_0x49059d(0x129)],0x0)){if(_0x1d2c2f[_0x49059d(0xfe)]===_0x1d2c2f[_0x49059d(0xf2)]){const _0x43ec4e=cxZnhh[_0x49059d(0x156)](_0x20fd54,_0x2ae6d4),_0x28d0cc=_0x478c97?.[_0x49059d(0x14b)]?'\x20['+_0x56f38f[_0x49059d(0xce)]+'\x20'+_0x15ee09[_0x49059d(0x14b)]+']':'';throw new _0x28a134(_0x49059d(0xde)+_0x43ec4e+_0x28d0cc);}else{const _0x4e32a6=_0x2391e1[_0x1d2c2f[_0x49059d(0xc7)](_0x2391e1[_0x49059d(0x129)],0x1)];if(_0x4e32a6[_0x49059d(0x15c)]&&_0x1d2c2f['PgXzC'](_0x4e32a6[_0x49059d(0x15c)][_0x49059d(0x129)],0x0)){if(_0x1d2c2f[_0x49059d(0x116)](_0x1d2c2f[_0x49059d(0x124)],_0x1d2c2f['MGxSe'])){if(cxZnhh[_0x49059d(0xbc)](_0x5263fc,_0x49e4d8))return _0x9dfb43[_0x49059d(0xf0)]||_0x378807[_0x49059d(0xc6)]||_0x49059d(0x162);if(typeof _0x3b2df0===cxZnhh[_0x49059d(0x142)]&&cxZnhh[_0x49059d(0x122)](_0x5ba31f,null)){const _0x1e316e=_0x2c940d;if(_0x1e316e['message'])return _0x1e316e[_0x49059d(0xf0)];if(_0x1e316e[_0x49059d(0x145)])return typeof _0x1e316e[_0x49059d(0x145)]===cxZnhh[_0x49059d(0xdd)]?_0x1e316e[_0x49059d(0x145)]:_0x371fbf[_0x49059d(0xf6)](_0x1e316e['error']);if(_0x1e316e['detail'])return _0x1e316e[_0x49059d(0x153)];if(_0x1e316e['statusText'])return _0x1e316e[_0x49059d(0x14b)];return _0x5776b5[_0x49059d(0xf6)](_0x550d9a);}return cxZnhh[_0x49059d(0x156)](_0x49cbd0,_0x45884c);}else{const _0x279965=_0x4e32a6[_0x49059d(0x15c)][_0x49059d(0x10a)](_0x3ee2d2=>_0x3ee2d2[_0x49059d(0x161)]===_0x49059d(0x163));if(_0x279965&&_0x279965[_0x49059d(0x163)])return _0x279965['text'];}}}}await new Promise(_0x19ceaa=>setTimeout(_0x19ceaa,0x3e8));}return _0x49059d(0xbf);}catch(_0x4a94ab){return log['error']({'err':_0x4a94ab,'sessionId':_0x2ce073},_0x1d2c2f[_0x49059d(0x11f)]),_0x1d2c2f[_0x49059d(0x112)];}}async[a0_0x1236b1(0xca)](_0x1e5530){const _0x45a23d=a0_0x1236b1,_0x48255a={'TMMbr':_0x45a23d(0x166),'wNLmo':function(_0x18e29d,_0x2afef1){return _0x18e29d(_0x2afef1);},'qzYrb':_0x45a23d(0xb3),'EcgzX':'Fetched\x20messages','QIvAx':function(_0x23d682,_0x1d5081){return _0x23d682>_0x1d5081;},'LiXdH':function(_0x2f9583,_0x1ee09c){return _0x2f9583>=_0x1ee09c;},'lBjbQ':function(_0x1a78ab,_0x2fcd64){return _0x1a78ab===_0x2fcd64;},'UvXIP':_0x45a23d(0xbe),'vSlPy':_0x45a23d(0x172),'SGXUF':_0x45a23d(0x16f),'dMsMz':_0x45a23d(0xa7),'Udzvs':_0x45a23d(0x138),'CLqUk':_0x45a23d(0xe0),'NsZRl':_0x45a23d(0x146),'wQUcY':function(_0x3f8716,_0x10850a){return _0x3f8716-_0x10850a;},'Nmqqs':_0x45a23d(0x16a),'LwWkz':_0x45a23d(0xfd)};try{const {data:_0x55ea94}=await this[_0x45a23d(0x10b)][_0x45a23d(0xb1)][_0x45a23d(0x119)]({'sessionID':_0x1e5530,'directory':this['directory']});log[_0x45a23d(0xee)]({'messageCount':_0x55ea94?.[_0x45a23d(0x129)]},_0x48255a[_0x45a23d(0x171)]);if(_0x55ea94&&Array[_0x45a23d(0x10e)](_0x55ea94)&&_0x48255a[_0x45a23d(0x117)](_0x55ea94[_0x45a23d(0x129)],0x0)){for(let _0x59cb91=_0x55ea94['length']-0x1;_0x48255a[_0x45a23d(0x144)](_0x59cb91,0x0);_0x59cb91--){if(_0x48255a['lBjbQ'](_0x48255a[_0x45a23d(0xb5)],_0x48255a[_0x45a23d(0xb5)])){const _0x3e47e8=_0x55ea94[_0x59cb91],_0x2ab793=_0x3e47e8[_0x45a23d(0x104)]||_0x3e47e8[_0x45a23d(0xe2)]?.['role'];log[_0x45a23d(0xee)]({'index':_0x59cb91,'role':_0x2ab793,'info':_0x3e47e8[_0x45a23d(0xee)],'keys':Object[_0x45a23d(0x178)](_0x3e47e8)[_0x45a23d(0xa2)](0x0,0xa),'hasParts':!!_0x3e47e8[_0x45a23d(0x15c)],'partCount':_0x3e47e8[_0x45a23d(0x15c)]?.[_0x45a23d(0x129)]},_0x48255a['vSlPy']);if(_0x2ab793===_0x48255a['SGXUF']||_0x2ab793===_0x48255a[_0x45a23d(0x174)]){if(_0x48255a[_0x45a23d(0x137)](_0x48255a['Udzvs'],_0x48255a[_0x45a23d(0x15b)])){this[_0x45a23d(0x16e)]=_0x69bcee[_0x45a23d(0x16e)],this[_0x45a23d(0x12d)]=_0xae821f[_0x45a23d(0x12d)]||_0x3dae12[_0x45a23d(0x127)]();const _0x42d5b3={'baseUrl':this[_0x45a23d(0x16e)],'directory':this[_0x45a23d(0x12d)]};_0x35a406[_0x45a23d(0x13c)]&&(_0x42d5b3[_0x45a23d(0xc4)]={'Authorization':'Basic\x20'+_0x545d05[_0x45a23d(0x12f)](_0x45a23d(0xb7)+_0xb1ecfd[_0x45a23d(0x13c)])['toString'](jWkzsb[_0x45a23d(0x157)])}),this[_0x45a23d(0x10b)]=jWkzsb[_0x45a23d(0xd2)](_0x3150a6,_0x42d5b3),this[_0x45a23d(0x106)]=this['loadSystemPrompt'](),_0xc5233f['info']({'hasSystemPrompt':!!this[_0x45a23d(0x106)],'systemPromptLength':this[_0x45a23d(0x106)]?.[_0x45a23d(0x129)]||0x0,'directory':this[_0x45a23d(0x12d)]},jWkzsb[_0x45a23d(0xf3)]);}else{if(_0x3e47e8[_0x45a23d(0x15c)]&&_0x3e47e8[_0x45a23d(0x15c)]['length']>0x0){const _0x511930=_0x3e47e8['parts']['find'](_0x3c6fa7=>_0x3c6fa7[_0x45a23d(0x161)]===_0x45a23d(0x163));if(_0x511930?.[_0x45a23d(0x163)])return log[_0x45a23d(0xee)]({'textLength':_0x511930[_0x45a23d(0x163)][_0x45a23d(0x129)]},_0x48255a[_0x45a23d(0xf7)]),_0x511930[_0x45a23d(0x163)];}}}}else{const _0x198272=jWkzsb['wNLmo'](_0x556072,_0xbae9b1),_0x279559=_0x9b0530?.[_0x45a23d(0x14b)]?'\x20['+_0x505eec['status']+'\x20'+_0xff064d[_0x45a23d(0x14b)]+']':'';throw new _0x1e833c('发送消息失败:\x20'+_0x198272+_0x279559);}}const _0x5e37a9=_0x55ea94[_0x48255a[_0x45a23d(0x120)](_0x55ea94['length'],0x1)];if(_0x5e37a9[_0x45a23d(0x15c)]&&_0x5e37a9[_0x45a23d(0x15c)]['length']>0x0){const _0x54514b=_0x5e37a9[_0x45a23d(0x15c)][_0x45a23d(0x10a)](_0x9f8731=>_0x9f8731[_0x45a23d(0x161)]==='text');if(_0x54514b?.['text'])return log[_0x45a23d(0xee)]({'role':_0x5e37a9[_0x45a23d(0x104)]||_0x5e37a9[_0x45a23d(0xe2)]?.[_0x45a23d(0x104)],'textLength':_0x54514b['text'][_0x45a23d(0x129)]},_0x48255a[_0x45a23d(0x118)]),_0x54514b['text'];}}}catch(_0x3c03f9){log['error']({'err':_0x3c03f9['message']},_0x48255a[_0x45a23d(0x149)]);}return null;}async[a0_0x1236b1(0x16d)](_0x12f13c,_0x357627){const _0x25b61f=a0_0x1236b1,_0x29a301={'ppoDc':_0x25b61f(0x172),'jsHcU':function(_0x5e4b0d,_0x5f30cc){return _0x5e4b0d===_0x5f30cc;},'InqxR':'model','Ifaxg':function(_0xa87d38,_0xb518a1){return _0xa87d38>_0xb518a1;},'oJGKL':_0x25b61f(0x163),'KXavI':function(_0x4469f1,_0x1ee5db){return _0x4469f1!==_0x1ee5db;},'RaTtk':'fxxmq','IiUpQ':_0x25b61f(0xa1),'DXWvs':'Command\x20failed'};try{await this[_0x25b61f(0x10b)][_0x25b61f(0xb1)]['prompt']({'sessionID':_0x12f13c,'directory':this[_0x25b61f(0x12d)],'parts':[{'type':_0x29a301['oJGKL'],'text':_0x357627}]});}catch(_0x4dbd45){if(_0x29a301[_0x25b61f(0xeb)](_0x29a301['RaTtk'],_0x29a301['IiUpQ']))log[_0x25b61f(0xe4)]({'err':_0x4dbd45,'sessionId':_0x12f13c,'command':_0x357627},_0x29a301['DXWvs']);else{const _0x76d2eb=_0x57c691[_0x2e94f0],_0x31ee4d=_0x76d2eb[_0x25b61f(0x104)]||_0x76d2eb[_0x25b61f(0xe2)]?.[_0x25b61f(0x104)];_0x5002d6[_0x25b61f(0xee)]({'index':_0x4339ff,'role':_0x31ee4d,'info':_0x76d2eb[_0x25b61f(0xee)],'keys':_0x26e77f[_0x25b61f(0x178)](_0x76d2eb)[_0x25b61f(0xa2)](0x0,0xa),'hasParts':!!_0x76d2eb[_0x25b61f(0x15c)],'partCount':_0x76d2eb[_0x25b61f(0x15c)]?.[_0x25b61f(0x129)]},efQGuu['ppoDc']);if(efQGuu[_0x25b61f(0x14a)](_0x31ee4d,_0x25b61f(0x16f))||_0x31ee4d===efQGuu['InqxR']){if(_0x76d2eb[_0x25b61f(0x15c)]&&efQGuu[_0x25b61f(0xd4)](_0x76d2eb[_0x25b61f(0x15c)][_0x25b61f(0x129)],0x0)){const _0x141298=_0x76d2eb[_0x25b61f(0x15c)][_0x25b61f(0x10a)](_0x18eb06=>_0x18eb06['type']===_0x25b61f(0x163));if(_0x141298?.[_0x25b61f(0x163)])return _0xe4773c['info']({'textLength':_0x141298[_0x25b61f(0x163)][_0x25b61f(0x129)]},_0x25b61f(0x146)),_0x141298[_0x25b61f(0x163)];}}}}}async['deleteSession'](_0x85c9c4){const _0xc2b9a9=a0_0x1236b1,_0x2294ac={'QOnfK':'Session\x20deleted','eSueV':_0xc2b9a9(0xcf)};try{await this['client']['session'][_0xc2b9a9(0x10d)]({'sessionID':_0x85c9c4}),log[_0xc2b9a9(0xee)]({'sessionId':_0x85c9c4},_0x2294ac[_0xc2b9a9(0x16c)]);}catch(_0x593ae3){log[_0xc2b9a9(0x145)]({'err':_0x593ae3,'sessionId':_0x85c9c4},_0x2294ac[_0xc2b9a9(0x159)]);}}async[a0_0x1236b1(0xd6)](){const _0x195fda=a0_0x1236b1,_0x35544e={'MFflo':_0x195fda(0x146),'PEFch':_0x195fda(0xc0)};try{if(_0x195fda(0x11e)!==_0x35544e[_0x195fda(0xc2)]){const {data:_0x1cbf28}=await this[_0x195fda(0x10b)]['session'][_0x195fda(0x133)]({});return _0x1cbf28||[];}else{const _0x3e40c8=_0x37fa61[_0x195fda(0x15c)]['find'](_0x1a3ec8=>_0x1a3ec8[_0x195fda(0x161)]===_0x195fda(0x163));if(_0x3e40c8?.['text'])return _0xbd7c87[_0x195fda(0xee)]({'textLength':_0x3e40c8[_0x195fda(0x163)][_0x195fda(0x129)]},qGDOjg[_0x195fda(0x10c)]),_0x3e40c8['text'];}}catch{return[];}}}export async function checkOpencodeStatus(_0x5c6c36,_0x4c2f18){const _0x563ef8=a0_0x1236b1,_0x23175f={'VcZgm':_0x563ef8(0x105),'WXLWb':function(_0x38c7e2,_0xb0d746){return _0x38c7e2>_0xb0d746;},'pGwXb':_0x563ef8(0x121),'JXEXc':function(_0x29b055,_0x22c024){return _0x29b055!==_0x22c024;},'rvChq':'Ycbtf','glsAy':_0x563ef8(0x152),'DKvPi':'base64','OWzcB':_0x563ef8(0x14e),'WLzJS':function(_0x444935,_0x215df7,_0x5de08e){return _0x444935(_0x215df7,_0x5de08e);},'oYDVV':_0x563ef8(0xfc),'KUPQg':function(_0x4e1b4f,_0x2e3edc){return _0x4e1b4f(_0x2e3edc);},'nBiSv':function(_0x18e92c,_0x42bb0f){return _0x18e92c===_0x42bb0f;},'xYwqh':'OpenCode\x20status\x20check\x20success','BnTjk':_0x563ef8(0x13a),'MuhNK':_0x563ef8(0x126)},_0x10b19d={};if(_0x4c2f18){if(_0x23175f['JXEXc'](_0x23175f[_0x563ef8(0xb8)],_0x23175f[_0x563ef8(0xb8)])){const _0x87c8bf=_0xe4e5c6(_0x2cb712,QKmrne[_0x563ef8(0x136)]);QKmrne[_0x563ef8(0xdb)](_0x87c8bf['trim']()[_0x563ef8(0x129)],0x0)&&_0x5a8cbb[_0x563ef8(0x11c)](_0x563ef8(0xaf)+_0x28f916+_0x563ef8(0x15f)+_0x87c8bf);}else _0x10b19d[_0x23175f['glsAy']]=_0x563ef8(0xa5)+Buffer[_0x563ef8(0x12f)](_0x563ef8(0xb7)+_0x4c2f18)[_0x563ef8(0x175)](_0x23175f[_0x563ef8(0xf1)]);}const _0x435181=[_0x5c6c36+'/health',_0x5c6c36+'/api/health',_0x5c6c36+_0x563ef8(0x130),_0x5c6c36];for(const _0x235e94 of _0x435181){try{log[_0x563ef8(0x165)]({'url':_0x235e94},_0x23175f['OWzcB']);const _0x18a84f=new AbortController(),_0x438c41=_0x23175f[_0x563ef8(0xc5)](setTimeout,()=>_0x18a84f['abort'](),0x7d0),_0x1d7bcf=await _0x23175f['WLzJS'](fetch,_0x235e94,{'method':_0x23175f[_0x563ef8(0x13b)],'headers':_0x10b19d,'signal':_0x18a84f[_0x563ef8(0xa4)]});_0x23175f[_0x563ef8(0xb9)](clearTimeout,_0x438c41);if(_0x1d7bcf['ok']||_0x23175f[_0x563ef8(0x11b)](_0x1d7bcf['status'],0x191))return log[_0x563ef8(0xee)]({'url':_0x235e94,'status':_0x1d7bcf[_0x563ef8(0xce)]},_0x23175f[_0x563ef8(0x132)]),!![];}catch(_0x1f09a3){if(_0x23175f['nBiSv'](_0x563ef8(0xab),_0x23175f[_0x563ef8(0xa9)]))try{const _0x3ca206=_0x4eb445(_0x17fcd9,QKmrne[_0x563ef8(0x136)]);_0x3ca206[_0x563ef8(0xd7)]()[_0x563ef8(0x129)]>0x0&&_0x1062a8[_0x563ef8(0x11c)](_0x563ef8(0xaf)+_0x467a65+_0x563ef8(0x15f)+_0x3ca206);}catch(_0x1962f9){_0x43c2ed[_0x563ef8(0xe4)]({'err':_0x1962f9,'filepath':_0x13fc4a},QKmrne[_0x563ef8(0xd1)]);}else log['debug']({'url':_0x235e94,'err':_0x1f09a3[_0x563ef8(0xf0)]},_0x563ef8(0x151));}}return log[_0x563ef8(0xe4)]({'opencodeUrl':_0x5c6c36},_0x23175f[_0x563ef8(0xcb)]),![];}
@@ -35,4 +35,3 @@ export declare class EventHandler {
35
35
  private handleStatusChange;
36
36
  private handleError;
37
37
  }
38
- //# sourceMappingURL=event-handler.d.ts.map