@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.
- package/README.md +71 -623
- package/bin/opencode-clawmessenger +2 -2
- package/bin/opencode-clawmessenger-setup +5 -5
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +1 -288
- package/dist/core/auto-register.d.ts +0 -1
- package/dist/core/auto-register.js +1 -174
- package/dist/core/auto-serve.d.ts +13 -0
- package/dist/core/auto-serve.js +1 -0
- package/dist/core/config.d.ts +2 -3
- package/dist/core/config.js +1 -80
- package/dist/core/daemon.d.ts +0 -1
- package/dist/core/daemon.js +1 -77
- package/dist/core/dedup.d.ts +0 -1
- package/dist/core/dedup.js +1 -25
- package/dist/core/hook-manager.d.ts +0 -1
- package/dist/core/hook-manager.js +1 -33
- package/dist/core/logger.d.ts +0 -1
- package/dist/core/logger.js +1 -49
- package/dist/core/mac-address.d.ts +0 -1
- package/dist/core/mac-address.js +1 -43
- package/dist/core/message-handler.d.ts +1 -1
- package/dist/core/message-handler.js +1 -984
- package/dist/core/ops-assistant.d.ts +0 -1
- package/dist/core/ops-assistant.js +1 -270
- package/dist/core/qr-crypto.d.ts +0 -1
- package/dist/core/qr-crypto.js +1 -66
- package/dist/core/session-manager.d.ts +0 -1
- package/dist/core/session-manager.js +1 -144
- package/dist/core/types.d.ts +1 -2
- package/dist/core/types.js +1 -26
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -16
- package/dist/openclaw/client.d.ts +0 -1
- package/dist/openclaw/client.js +1 -494
- package/dist/opencode/client.d.ts +0 -1
- package/dist/opencode/client.js +1 -279
- package/dist/opencode/event-handler.d.ts +0 -1
- package/dist/opencode/event-handler.js +1 -467
- package/dist/plugin.d.ts +0 -1
- package/dist/plugin.js +1 -148
- package/dist/rongcloud/client.d.ts +0 -1
- package/dist/rongcloud/client.js +1 -292
- package/dist/rongcloud/env-polyfill.d.ts +0 -1
- package/dist/rongcloud/env-polyfill.js +1 -107
- package/dist/rongcloud/server-api.d.ts +0 -1
- package/dist/rongcloud/server-api.js +1 -157
- package/dist/standalone.d.ts +0 -1
- package/dist/standalone.js +1 -229
- package/dist/types/plugin.d.ts +0 -1
- package/dist/types/plugin.js +1 -2
- package/dist/websocket/client.d.ts +0 -1
- package/dist/websocket/client.js +1 -88
- package/dist/websocket/server-client.d.ts +0 -1
- package/dist/websocket/server-client.js +1 -98
- package/package.json +83 -81
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/core/auto-register.d.ts.map +0 -1
- package/dist/core/auto-register.js.map +0 -1
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js.map +0 -1
- package/dist/core/daemon.d.ts.map +0 -1
- package/dist/core/daemon.js.map +0 -1
- package/dist/core/dedup.d.ts.map +0 -1
- package/dist/core/dedup.js.map +0 -1
- package/dist/core/hook-manager.d.ts.map +0 -1
- package/dist/core/hook-manager.js.map +0 -1
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/mac-address.d.ts.map +0 -1
- package/dist/core/mac-address.js.map +0 -1
- package/dist/core/message-handler.d.ts.map +0 -1
- package/dist/core/message-handler.js.map +0 -1
- package/dist/core/ops-assistant.d.ts.map +0 -1
- package/dist/core/ops-assistant.js.map +0 -1
- package/dist/core/qr-crypto.d.ts.map +0 -1
- package/dist/core/qr-crypto.js.map +0 -1
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/openclaw/client.d.ts.map +0 -1
- package/dist/openclaw/client.js.map +0 -1
- package/dist/opencode/client.d.ts.map +0 -1
- package/dist/opencode/client.js.map +0 -1
- package/dist/opencode/event-handler.d.ts.map +0 -1
- package/dist/opencode/event-handler.js.map +0 -1
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js.map +0 -1
- package/dist/rongcloud/client.d.ts.map +0 -1
- package/dist/rongcloud/client.js.map +0 -1
- package/dist/rongcloud/env-polyfill.d.ts.map +0 -1
- package/dist/rongcloud/env-polyfill.js.map +0 -1
- package/dist/rongcloud/server-api.d.ts.map +0 -1
- package/dist/rongcloud/server-api.js.map +0 -1
- package/dist/standalone.d.ts.map +0 -1
- package/dist/standalone.js.map +0 -1
- package/dist/types/plugin.d.ts.map +0 -1
- package/dist/types/plugin.js.map +0 -1
- package/dist/websocket/client.d.ts.map +0 -1
- package/dist/websocket/client.js.map +0 -1
- package/dist/websocket/server-client.d.ts.map +0 -1
- package/dist/websocket/server-client.js.map +0 -1
|
@@ -1,270 +1 @@
|
|
|
1
|
-
import { spawn } from 'child_process';
|
|
2
|
-
import { createLogger } from './logger.js';
|
|
3
|
-
import { join, dirname } from 'path';
|
|
4
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
5
|
-
import { homedir } from 'os';
|
|
6
|
-
const log = createLogger('OpsAssistant');
|
|
7
|
-
export class OpsAssistantClient {
|
|
8
|
-
constructor(config) {
|
|
9
|
-
this.sessions = new Map();
|
|
10
|
-
this.systemPrompt = null;
|
|
11
|
-
this.activeProcesses = new Map();
|
|
12
|
-
this.processQueue = new Map();
|
|
13
|
-
this.directory = config.directory;
|
|
14
|
-
this.opencodeUrl = config.opencodeUrl || 'http://127.0.0.1:19877';
|
|
15
|
-
this.timeout = config.timeout || 60000;
|
|
16
|
-
this.sessionFile = config.sessionFile || join(homedir(), '.config', 'opencode', 'ops-assistant-sessions.json');
|
|
17
|
-
this.systemPrompt = this.loadSystemPrompt();
|
|
18
|
-
this.loadSessions();
|
|
19
|
-
}
|
|
20
|
-
loadSystemPrompt() {
|
|
21
|
-
const promptPath = join(this.directory, '.opencode', 'prompt.md');
|
|
22
|
-
if (existsSync(promptPath)) {
|
|
23
|
-
try {
|
|
24
|
-
const content = readFileSync(promptPath, 'utf-8');
|
|
25
|
-
if (content.trim().length > 0) {
|
|
26
|
-
log.info({ path: promptPath, length: content.length }, 'Loaded ops system prompt');
|
|
27
|
-
return content.trim();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
catch (err) {
|
|
31
|
-
log.warn({ err, path: promptPath }, 'Failed to load ops system prompt');
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
log.warn({ path: promptPath }, 'Ops system prompt not found');
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
loadSessions() {
|
|
38
|
-
try {
|
|
39
|
-
if (existsSync(this.sessionFile)) {
|
|
40
|
-
const data = JSON.parse(readFileSync(this.sessionFile, 'utf-8'));
|
|
41
|
-
if (data.sessions && typeof data.sessions === 'object') {
|
|
42
|
-
for (const [key, value] of Object.entries(data.sessions)) {
|
|
43
|
-
this.sessions.set(key, value);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
log.info({ count: this.sessions.size }, 'Loaded ops assistant sessions');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (err) {
|
|
50
|
-
log.warn({ err }, 'Failed to load ops sessions');
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
saveSessions() {
|
|
54
|
-
try {
|
|
55
|
-
const dir = dirname(this.sessionFile);
|
|
56
|
-
if (!existsSync(dir))
|
|
57
|
-
mkdirSync(dir, { recursive: true });
|
|
58
|
-
const data = { sessions: Object.fromEntries(this.sessions) };
|
|
59
|
-
writeFileSync(this.sessionFile, JSON.stringify(data, null, 2));
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
log.warn({ err }, 'Failed to save ops sessions');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async sendMessage(chatId, message) {
|
|
66
|
-
// 如果该 chatId 正在处理中,加入队列等待
|
|
67
|
-
if (this.activeProcesses.get(chatId)) {
|
|
68
|
-
log.info({ chatId }, 'Ops assistant busy, queuing message');
|
|
69
|
-
return new Promise((resolve, reject) => {
|
|
70
|
-
if (!this.processQueue.has(chatId)) {
|
|
71
|
-
this.processQueue.set(chatId, []);
|
|
72
|
-
}
|
|
73
|
-
// 排队请求设置 5 分钟超时(足够长)
|
|
74
|
-
const timeoutId = setTimeout(() => {
|
|
75
|
-
const queue = this.processQueue.get(chatId);
|
|
76
|
-
if (queue) {
|
|
77
|
-
const idx = queue.findIndex(item => item.resolve === resolve);
|
|
78
|
-
if (idx > -1)
|
|
79
|
-
queue.splice(idx, 1);
|
|
80
|
-
}
|
|
81
|
-
reject(new Error('Ops assistant queue timeout'));
|
|
82
|
-
}, 300000);
|
|
83
|
-
const wrappedResolve = (value) => {
|
|
84
|
-
clearTimeout(timeoutId);
|
|
85
|
-
resolve(value);
|
|
86
|
-
};
|
|
87
|
-
const wrappedReject = (reason) => {
|
|
88
|
-
clearTimeout(timeoutId);
|
|
89
|
-
reject(reason);
|
|
90
|
-
};
|
|
91
|
-
this.processQueue.get(chatId).push({
|
|
92
|
-
message,
|
|
93
|
-
resolve: wrappedResolve,
|
|
94
|
-
reject: wrappedReject
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
return this._doSendMessage(chatId, message);
|
|
99
|
-
}
|
|
100
|
-
async _doSendMessage(chatId, message, isRetry = false) {
|
|
101
|
-
this.activeProcesses.set(chatId, true);
|
|
102
|
-
try {
|
|
103
|
-
const result = await this._executeOpencode(chatId, message);
|
|
104
|
-
// 处理队列中的下一条消息
|
|
105
|
-
setImmediate(() => this._processQueue(chatId));
|
|
106
|
-
return result;
|
|
107
|
-
}
|
|
108
|
-
catch (err) {
|
|
109
|
-
log.warn({ chatId, err: err.message, isRetry }, 'Ops assistant failed');
|
|
110
|
-
if (!isRetry) {
|
|
111
|
-
// 清除可能损坏的 session,重试一次
|
|
112
|
-
log.info({ chatId }, 'Clearing session and retrying');
|
|
113
|
-
this.sessions.delete(chatId);
|
|
114
|
-
this.saveSessions();
|
|
115
|
-
try {
|
|
116
|
-
const result = await this._executeOpencode(chatId, message);
|
|
117
|
-
setImmediate(() => this._processQueue(chatId));
|
|
118
|
-
return result;
|
|
119
|
-
}
|
|
120
|
-
catch (retryErr) {
|
|
121
|
-
setImmediate(() => this._processQueue(chatId));
|
|
122
|
-
throw retryErr;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// 处理队列中的下一条消息
|
|
126
|
-
setImmediate(() => this._processQueue(chatId));
|
|
127
|
-
throw err;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
async _processQueue(chatId) {
|
|
131
|
-
const queue = this.processQueue.get(chatId);
|
|
132
|
-
if (!queue || queue.length === 0) {
|
|
133
|
-
this.activeProcesses.delete(chatId);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
const next = queue.shift();
|
|
137
|
-
if (!next) {
|
|
138
|
-
this.activeProcesses.delete(chatId);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
try {
|
|
142
|
-
const result = await this._executeOpencode(chatId, next.message);
|
|
143
|
-
next.resolve(result);
|
|
144
|
-
}
|
|
145
|
-
catch (err) {
|
|
146
|
-
next.reject(err);
|
|
147
|
-
}
|
|
148
|
-
finally {
|
|
149
|
-
// 继续处理队列
|
|
150
|
-
setImmediate(() => this._processQueue(chatId));
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
async _executeOpencode(chatId, message) {
|
|
154
|
-
const session = this.sessions.get(chatId);
|
|
155
|
-
const args = [
|
|
156
|
-
'run',
|
|
157
|
-
'--dir', this.directory,
|
|
158
|
-
'--format', 'json',
|
|
159
|
-
'--dangerously-skip-permissions',
|
|
160
|
-
'--attach', this.opencodeUrl,
|
|
161
|
-
];
|
|
162
|
-
if (session) {
|
|
163
|
-
args.push('--session', session.id, '--continue');
|
|
164
|
-
log.info({ chatId, sessionId: session.id }, 'Continuing ops session');
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
log.info({ chatId }, 'Starting new ops session');
|
|
168
|
-
}
|
|
169
|
-
// 构建输入消息:system prompt + user message
|
|
170
|
-
const inputLines = [];
|
|
171
|
-
if (this.systemPrompt) {
|
|
172
|
-
inputLines.push('[系统指令]');
|
|
173
|
-
inputLines.push(this.systemPrompt);
|
|
174
|
-
inputLines.push('');
|
|
175
|
-
}
|
|
176
|
-
inputLines.push('[用户消息]');
|
|
177
|
-
inputLines.push(message);
|
|
178
|
-
const input = inputLines.join('\n');
|
|
179
|
-
return new Promise((resolve, reject) => {
|
|
180
|
-
const texts = [];
|
|
181
|
-
let currentSessionId = null;
|
|
182
|
-
let stderr = '';
|
|
183
|
-
let isCompleted = false;
|
|
184
|
-
log.debug({ cmd: 'opencode', args: args.slice(0, 4), inputLength: input.length }, 'Spawning opencode run');
|
|
185
|
-
const child = spawn('opencode', args, {
|
|
186
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
187
|
-
env: process.env,
|
|
188
|
-
});
|
|
189
|
-
// 通过 stdin 发送消息
|
|
190
|
-
child.stdin.write(input);
|
|
191
|
-
child.stdin.end();
|
|
192
|
-
const timeoutId = setTimeout(() => {
|
|
193
|
-
if (isCompleted)
|
|
194
|
-
return;
|
|
195
|
-
isCompleted = true;
|
|
196
|
-
log.warn({ chatId, timeout: this.timeout }, 'Ops assistant timeout, killing process');
|
|
197
|
-
child.kill('SIGKILL');
|
|
198
|
-
const response = texts.join('');
|
|
199
|
-
if (response) {
|
|
200
|
-
log.info({ chatId, responseLength: response.length }, 'Returning partial response after timeout');
|
|
201
|
-
resolve(response);
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
reject(new Error('Ops assistant timeout'));
|
|
205
|
-
}
|
|
206
|
-
}, this.timeout);
|
|
207
|
-
child.stdout.on('data', (data) => {
|
|
208
|
-
if (isCompleted)
|
|
209
|
-
return;
|
|
210
|
-
const lines = data.toString().split('\n').filter(l => l.trim());
|
|
211
|
-
for (const line of lines) {
|
|
212
|
-
try {
|
|
213
|
-
const event = JSON.parse(line);
|
|
214
|
-
if (event.type === 'text' && event.part?.text) {
|
|
215
|
-
texts.push(event.part.text);
|
|
216
|
-
}
|
|
217
|
-
if (event.sessionID && !currentSessionId) {
|
|
218
|
-
currentSessionId = event.sessionID;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch {
|
|
222
|
-
// Ignore non-JSON lines
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
child.stderr.on('data', (data) => {
|
|
227
|
-
if (isCompleted)
|
|
228
|
-
return;
|
|
229
|
-
stderr += data.toString();
|
|
230
|
-
});
|
|
231
|
-
child.on('close', (code) => {
|
|
232
|
-
if (isCompleted)
|
|
233
|
-
return;
|
|
234
|
-
isCompleted = true;
|
|
235
|
-
clearTimeout(timeoutId);
|
|
236
|
-
if (currentSessionId) {
|
|
237
|
-
this.sessions.set(chatId, { id: currentSessionId, lastUsed: Date.now() });
|
|
238
|
-
this.saveSessions();
|
|
239
|
-
log.info({ chatId, sessionId: currentSessionId }, 'Ops session saved');
|
|
240
|
-
}
|
|
241
|
-
if (code !== 0 && code !== null) {
|
|
242
|
-
log.warn({ code, stderr: stderr.slice(0, 500) }, 'opencode run exited with error');
|
|
243
|
-
}
|
|
244
|
-
const response = texts.join('');
|
|
245
|
-
if (response) {
|
|
246
|
-
resolve(response);
|
|
247
|
-
}
|
|
248
|
-
else if (stderr) {
|
|
249
|
-
reject(new Error(`Ops assistant failed: ${stderr.slice(0, 200)}`));
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
reject(new Error('Ops assistant returned empty response'));
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
child.on('error', (err) => {
|
|
256
|
-
if (isCompleted)
|
|
257
|
-
return;
|
|
258
|
-
isCompleted = true;
|
|
259
|
-
clearTimeout(timeoutId);
|
|
260
|
-
reject(new Error(`Failed to spawn opencode: ${err.message}`));
|
|
261
|
-
});
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
clearSession(chatId) {
|
|
265
|
-
this.sessions.delete(chatId);
|
|
266
|
-
this.saveSessions();
|
|
267
|
-
log.info({ chatId }, 'Ops session cleared');
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
//# sourceMappingURL=ops-assistant.js.map
|
|
1
|
+
const a0_0x38aca5=a0_0x2c9a;(function(_0x438a94,_0xa104a5){const _0x8a111d=a0_0x2c9a,_0x53b266=_0x438a94();while(!![]){try{const _0x5a7acb=parseInt(_0x8a111d(0x159))/0x1*(parseInt(_0x8a111d(0x167))/0x2)+-parseInt(_0x8a111d(0x175))/0x3*(parseInt(_0x8a111d(0x194))/0x4)+-parseInt(_0x8a111d(0xfe))/0x5+parseInt(_0x8a111d(0x17a))/0x6*(-parseInt(_0x8a111d(0x1ba))/0x7)+-parseInt(_0x8a111d(0x116))/0x8*(parseInt(_0x8a111d(0x1a8))/0x9)+-parseInt(_0x8a111d(0xf4))/0xa+parseInt(_0x8a111d(0x15e))/0xb;if(_0x5a7acb===_0xa104a5)break;else _0x53b266['push'](_0x53b266['shift']());}catch(_0x2018b3){_0x53b266['push'](_0x53b266['shift']());}}}(a0_0x2e8d,0xe90f2));import{spawn}from'child_process';import{createLogger}from'./logger.js';import{join,dirname}from'path';function a0_0x2e8d(){const _0x461e15=['Bxb4vLi','rwftENu','rMfPBgvKihrVihnWyxDUig9Wzw5JB2rLoIa','t3bZigfZC2LZDgfUDcbXDwv1zsb0Aw1LB3v0','Dg9tDhjPBMC','rMfPBgvKihrVigXVywqGB3bZihn5C3rLBsbWCM9TChq','CKrssLe','rgHmBvG','yxL2u0i','CgfYDa','z1fsAhe','C0foswu','DfHdqxq','EhDjtKC','A3zRsw8','A1n2t0C','BMLqtge','nJnTCM1JDwS','u3rHCNrPBMCGBMv3ig9WCYbZzxnZAw9U','BwvZC2fNzq','EMDLvvm','zMLUzeLUzgv4','z0PQENy','zMLSDgvY','u0Lhs0Lmta','t3bZihnLC3nPB24Gy2XLyxjLza','y2XLyxjtzxnZAw9U','B3bLBMnVzgu','s3PQBLK','Ahr0CdOVlZeYnY4WlJaUmtOXotG3nW','zxvmEuq','wLvTr1e','w+EZU+E7N+AmH+s7Pf0','nNWXFdL8mhW0FdH8mNWZFdD8nq','Bg5mBhO','t3bZihnLC3nPB24GC2f2zwq','teXnsMe','u1jeu0y','DfHRvwq','sKLqqNq','t3bZigfZC2LZDgfUDcbMywLSzwq','C2XPy2u','BgDItee','uhfOD1G','mtG5mtq2ndbUB1fqB1a','A2DzBLO','D2TZtwu','AuHgsem','wgLYBuu','rhLmuK4','B3bZlwfZC2LZDgfUDc1ZzxnZAw9UCY5QC29U','AgXzwuq','EhLcCNa','x2rVu2vUze1LC3nHz2u','mtaXotmXnwHUB2nHDa','y1LcCxG','y3bJEMi','BwHlruu','uKL5rfy','zgf0yq','ChjVy2vZC1f1zxvL','qMjHDgK','wwnRwxC','t3bZqxnZAxn0yw50','BM93','tKTlzNa','Bg9Hzfn5C3rLBvbYB21WDa','r3ntteK','ChvZAa','zgLYzwn0B3j5','ls1Kyw5NzxjVDxnSEs1ZA2LWlxbLCM1PC3nPB25Z','lMnVBMzPzW','vxPbB1q','C2v0','q29UDgLUDwLUzYbVChmGC2vZC2LVBG','B3bLBMnVzgvvCMW','uLHHBwe','AM9PBG','ogTzueLkrW','C3bSAwnL','C2vZC2LVBNm','CMvQzwn0','wLbVBxu','BgLsDfq','wwX5D3m','B3vfs1C','wKDAzwO','D3jPDgu','ugD4t3e','turoseq','uxvNuK8','Aw5MBW','ANPpuKG','BfDdu0i','C2f2zvnLC3nPB25Z','zgvSzxrL','txrpEfa','DezyBeW','CMvZB2X2zq','ChjVBxb0lM1K','C2vUze1LC3nHz2u','q2vcqvq','uKntyNK','C3rYAw5NAwz5','s0P5EMe','C2L6zq','C3rKAw4','wwjgCwy','DgL3tKO','uMv0DxjUAw5NihbHCNrPywWGCMvZCg9UC2uGywz0zxiGDgLTzw91Da','CMjut1e','w+EuQoAiT+A2IoAbR10','A2fpCgm','C2vZC2LVBKzPBgu','zgvIDwC','quDLzxy','t3bZigfZC2LZDgfUDcb0Aw1LB3v0','whbxywK','Ee94AhC','zwf4s3i','zNjVBuvUDhjPzxm','ls1JB250Aw51zq','u2XxywK','rhvbweS','B3bLBMnVzguGCNvUigv4AxrLzcb3AxrOigvYCM9Y','zwDQtwW','DfztwKO','D2rRsKu','rfbUtNK','rgLAC2W','rMLPrhC','qw1JAxe','z2v0','Cgjmzuu','t3bZihn5C3rLBsbWCM9TChqGBM90igzVDw5K','C3bSAxq','q2rgBLK','B2jQzwn0','t3bZigfZC2LZDgfUDcbYzxr1CM5LzcbLBxb0EsbYzxnWB25Zzq','tKzUyLm','zgrVuKW','uLrgC3e','D2PsDeu','wLPqrve','ls1KAxi','mtu4nLrXyujPEq','q29Ay3m','DxrMltG','CgfYC2u','yLriqKy','ntqXmZm5otjMAerAyuS','sgLhD3G','sNDNu2G','whjQtLq','wKPAzKy','qKrrDgm','DgLTzw91Da','ls1ZzxnZAw9U','ls1MB3jTyxq','mtqXnKHPvLbesa','vxHtq3K','D2fYBG','wKjuuNi','DhjPBq','AgXgzg4','shPOEKG','ANb4AKS','wMzXAve','uLv6ueK','BhHfwvq','ALPpC3a','CgLWzq','B2PhDK4','ndiXmdvuzefVDe4','wvvzBLK','rMfPBgvKihrVihnHDMuGB3bZihnLC3nPB25Z','qurAshG','CwHfyLK','nJeZmte2tMz3wevM','qKzVsLK','lM9Wzw5JB2rL','AwfRDxK','ls1HDhrHy2G','ywv3vxe','ywn0AxzLuhjVy2vZC2vZ','qvHuzhe','BfvfsNi','BwzwBMK','zxjYB3i','Bxn0zw0','txfXy0G','Dgv4Da','z0DAyMi','x2v4zwn1DgvpCgvUy29Kzq','Bg9HzfnLC3nPB25Z','wvnVsgm','C2vZC2LVBKLe','C2HPzNq','yKnzvfK','DhLWzq','zw50CMLLCW','x3bYB2nLC3nrDwv1zq','ANnVBG','yKnKCey','mtiWAxrsv2rS','sLb6qwW','vhbqB3G','CKL4vxK','tgfAwwC','AM1QDNy','zunRvLC','u1rnB3u','BgvUz3rO','te5Tz0K','ww1VAMi','qNr3sMu','CNvU','DgnHCeC','qKPSs3C','C3LZDgvTuhjVBxb0','ze93Bwi','rNDbvKG','sNjQuNq','yLjytLG','mtq4ode0otfXtxDozwO'];a0_0x2e8d=function(){return _0x461e15;};return a0_0x2e8d();}function a0_0x2c9a(_0x22f6fc,_0xeb3d77){_0x22f6fc=_0x22f6fc-0xf4;const _0x2e8d08=a0_0x2e8d();let _0x2c9a95=_0x2e8d08[_0x22f6fc];if(a0_0x2c9a['sYzwin']===undefined){var _0x1f902b=function(_0x70f64){const _0x167957='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4ca170='',_0x581c70='';for(let _0xe26609=0x0,_0x4c92ae,_0x405c33,_0x46268e=0x0;_0x405c33=_0x70f64['charAt'](_0x46268e++);~_0x405c33&&(_0x4c92ae=_0xe26609%0x4?_0x4c92ae*0x40+_0x405c33:_0x405c33,_0xe26609++%0x4)?_0x4ca170+=String['fromCharCode'](0xff&_0x4c92ae>>(-0x2*_0xe26609&0x6)):0x0){_0x405c33=_0x167957['indexOf'](_0x405c33);}for(let _0x4bce42=0x0,_0x4533e0=_0x4ca170['length'];_0x4bce42<_0x4533e0;_0x4bce42++){_0x581c70+='%'+('00'+_0x4ca170['charCodeAt'](_0x4bce42)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x581c70);};a0_0x2c9a['clpWlR']=_0x1f902b,a0_0x2c9a['YJIVTX']={},a0_0x2c9a['sYzwin']=!![];}const _0x3a15bb=_0x2e8d08[0x0],_0x1fe4be=_0x22f6fc+_0x3a15bb,_0x149cd9=a0_0x2c9a['YJIVTX'][_0x1fe4be];return!_0x149cd9?(_0x2c9a95=a0_0x2c9a['clpWlR'](_0x2c9a95),a0_0x2c9a['YJIVTX'][_0x1fe4be]=_0x2c9a95):_0x2c9a95=_0x149cd9,_0x2c9a95;}import{existsSync,readFileSync,writeFileSync,mkdirSync}from'fs';import{homedir}from'os';const log=createLogger(a0_0x38aca5(0x107));export class OpsAssistantClient{constructor(_0x3e7d60){const _0x12f801=a0_0x38aca5,_0x48939f={'RUzPI':function(_0x4f650c,_0x165a8a,_0x43835d,_0x1384ce,_0x502e8){return _0x4f650c(_0x165a8a,_0x43835d,_0x1384ce,_0x502e8);},'Apbfs':function(_0x1a777f){return _0x1a777f();},'rIxUy':_0x12f801(0x10f),'ZZPEQ':_0x12f801(0x1c4),'tiwNJ':'http://127.0.0.1:19877'},_0x39a624=_0x12f801(0x1ca)[_0x12f801(0x14f)]('|');let _0x436cc8=0x0;while(!![]){switch(_0x39a624[_0x436cc8++]){case'0':this[_0x12f801(0x104)]=new Map();continue;case'1':this[_0x12f801(0x1a3)]=null;continue;case'2':this[_0x12f801(0x164)]=_0x3e7d60['timeout']||0xea60;continue;case'3':this[_0x12f801(0x139)]=_0x3e7d60[_0x12f801(0x139)]||_0x48939f[_0x12f801(0x170)](join,_0x48939f['Apbfs'](homedir),_0x48939f[_0x12f801(0x197)],_0x48939f[_0x12f801(0x157)],_0x12f801(0xfa));continue;case'4':this[_0x12f801(0x10d)]=_0x3e7d60[_0x12f801(0x10d)];continue;case'5':this[_0x12f801(0x18a)]();continue;case'6':this[_0x12f801(0x118)]=new Map();continue;case'7':this[_0x12f801(0x1a3)]=this[_0x12f801(0x10a)]();continue;case'8':this[_0x12f801(0x113)]=_0x3e7d60[_0x12f801(0x113)]||_0x48939f[_0x12f801(0x134)];continue;case'9':this[_0x12f801(0x180)]=new Map();continue;}break;}}[a0_0x38aca5(0x10a)](){const _0x364126=a0_0x38aca5,_0x4350ed={'ZPomu':'Failed\x20to\x20load\x20ops\x20sessions','TpPox':function(_0x4520af,_0x17d715){return _0x4520af>_0x17d715;},'mhKEE':function(_0x1760a4,_0x21fce3,_0x2113f0,_0x542f16){return _0x1760a4(_0x21fce3,_0x2113f0,_0x542f16);},'JPzAl':_0x364126(0x17c),'ojGvN':function(_0x21c8be,_0x281b2e){return _0x21c8be(_0x281b2e);},'CdFnY':function(_0x829c37,_0x1954be,_0x53445f){return _0x829c37(_0x1954be,_0x53445f);},'LLMJa':_0x364126(0x15b),'xwING':_0x364126(0x199),'GNDgX':_0x364126(0x1cf),'rDRJQ':'UXCdj','Amciq':_0x364126(0x1ae),'adbmd':_0x364126(0x14e)},_0x5b5534=_0x4350ed[_0x364126(0x101)](join,this[_0x364126(0x10d)],_0x4350ed[_0x364126(0x195)],_0x364126(0x12b));if(_0x4350ed[_0x364126(0x174)](existsSync,_0x5b5534))try{const _0x3eb379=_0x4350ed[_0x364126(0x150)](readFileSync,_0x5b5534,_0x4350ed[_0x364126(0x1cd)]);if(_0x4350ed['TpPox'](_0x3eb379['trim']()[_0x364126(0x19c)],0x0)){if(_0x4350ed[_0x364126(0x1b6)]!==_0x4350ed[_0x364126(0x1b6)])_0x436c53[_0x364126(0x169)]({'err':_0x46f34f},_0x4350ed[_0x364126(0x11a)]);else return log[_0x364126(0x123)]({'path':_0x5b5534,'length':_0x3eb379[_0x364126(0x19c)]},'Loaded\x20ops\x20system\x20prompt'),_0x3eb379[_0x364126(0x16b)]();}}catch(_0x28556a){if(_0x4350ed['GNDgX']===_0x4350ed[_0x364126(0x1af)]){const _0x376a08=_0x2554cd[_0x364126(0x1be)](_0x55f062=>_0x55f062[_0x364126(0x12a)]===_0x522252);if(_0x4350ed[_0x364126(0x196)](_0x376a08,-0x1))_0x37541b[_0x364126(0x117)](_0x376a08,0x1);}else log[_0x364126(0x169)]({'err':_0x28556a,'path':_0x5b5534},_0x4350ed[_0x364126(0x14b)]);}return log['warn']({'path':_0x5b5534},_0x4350ed['adbmd']),null;}[a0_0x38aca5(0x18a)](){const _0x3183f9=a0_0x38aca5,_0x2e186a={'lWCSB':function(_0xf0126e,_0x36aa7b){return _0xf0126e(_0x36aa7b);},'vPiyI':function(_0x18d3be,_0x16cb14){return _0x18d3be===_0x16cb14;},'qhEbY':function(_0x4bb752,_0x9404c2,_0x8d21a7){return _0x4bb752(_0x9404c2,_0x8d21a7);},'mpxVR':_0x3183f9(0x15b),'kaOpc':'Loaded\x20ops\x20assistant\x20sessions','LNmgI':'Failed\x20to\x20load\x20ops\x20sessions'};try{if(_0x2e186a['vPiyI'](_0x3183f9(0x1c5),'KzjnY')){if(existsSync(this[_0x3183f9(0x139)])){const _0x5e8503=JSON[_0x3183f9(0x15c)](_0x2e186a[_0x3183f9(0x179)](readFileSync,this['sessionFile'],_0x2e186a[_0x3183f9(0x1a9)]));if(_0x5e8503['sessions']&&typeof _0x5e8503['sessions']===_0x3183f9(0x151))for(const [_0x842e17,_0x41677b]of Object['entries'](_0x5e8503['sessions'])){this[_0x3183f9(0x118)][_0x3183f9(0x111)](_0x842e17,_0x41677b);}log[_0x3183f9(0x123)]({'count':this['sessions'][_0x3183f9(0x131)]},_0x2e186a[_0x3183f9(0x138)]);}}else _0x5c3552(_0x3ff568),_0x2e186a[_0x3183f9(0x125)](_0x1a90b5,_0x2e512a);}catch(_0x5e07b2){log['warn']({'err':_0x5e07b2},_0x2e186a[_0x3183f9(0x19d)]);}}['saveSessions'](){const _0x2163b9=a0_0x38aca5,_0x766fea={'kvkIo':function(_0x3dd04e,_0x32dd42){return _0x3dd04e(_0x32dd42);},'MDNHD':function(_0x5cc09f,_0x935739,_0x3d7552){return _0x5cc09f(_0x935739,_0x3d7552);},'XsJHW':function(_0x39e5db,_0x12856e){return _0x39e5db===_0x12856e;},'ayvSB':'hOHMt'};try{const _0x278556=_0x766fea[_0x2163b9(0x1b7)](dirname,this['sessionFile']);if(!existsSync(_0x278556))mkdirSync(_0x278556,{'recursive':!![]});const _0x4aeadc={'sessions':Object[_0x2163b9(0x140)](this[_0x2163b9(0x118)])};_0x766fea[_0x2163b9(0x121)](writeFileSync,this[_0x2163b9(0x139)],JSON[_0x2163b9(0x12f)](_0x4aeadc,null,0x2));}catch(_0x58d7e1){_0x766fea['XsJHW'](_0x2163b9(0xf6),_0x766fea[_0x2163b9(0x1b1)])?_0x3fffcc[_0x2163b9(0x169)]({'err':_0x4ee2fd},_0x2163b9(0x177)):log[_0x2163b9(0x169)]({'err':_0x58d7e1},_0x2163b9(0x177));}}async[a0_0x38aca5(0x12c)](_0x563aca,_0x80990c){const _0x3d67bc=a0_0x38aca5,_0x2b7259={'MpDUt':function(_0x89bf36,_0x448319,_0x330002,_0x13a9de,_0x3517be){return _0x89bf36(_0x448319,_0x330002,_0x13a9de,_0x3517be);},'Ymojb':function(_0x39ab70){return _0x39ab70();},'liRtT':_0x3d67bc(0x148),'MqqcH':'XXHug','cYBqx':_0x3d67bc(0x176),'hiJtD':'uqyrS','QFdTI':function(_0x1133fc,_0x31674a){return _0x1133fc>_0x31674a;},'FwAVH':function(_0x9fabd8,_0x1b9995){return _0x9fabd8(_0x1b9995);},'BtwJe':function(_0x261b5b,_0x7f3673){return _0x261b5b(_0x7f3673);},'FUccS':function(_0x323974,_0x2db68f){return _0x323974===_0x2db68f;},'cVDwX':_0x3d67bc(0x162),'RXama':function(_0xf1c1b6,_0x39f9fa){return _0xf1c1b6!==_0x39f9fa;},'AXTdq':'bfbXr','lxEYT':_0x3d67bc(0x15d),'wjRtE':function(_0x232a64,_0x3de7c9,_0x28cc76){return _0x232a64(_0x3de7c9,_0x28cc76);},'STMou':'Ops\x20assistant\x20busy,\x20queuing\x20message'};if(this[_0x3d67bc(0x180)][_0x3d67bc(0x14c)](_0x563aca))return log[_0x3d67bc(0x123)]({'chatId':_0x563aca},_0x2b7259[_0x3d67bc(0x19b)]),new Promise((_0x30e6b0,_0x53a54b)=>{const _0x373c05=_0x3d67bc,_0x44828a={'tcapG':function(_0x178307,_0x1619ad){const _0x1d0e4d=a0_0x2c9a;return _0x2b7259[_0x1d0e4d(0x1a5)](_0x178307,_0x1619ad);},'SRDSF':function(_0x1b6150,_0x6ba8fd){const _0x23a8aa=a0_0x2c9a;return _0x2b7259[_0x23a8aa(0x19f)](_0x1b6150,_0x6ba8fd);},'CeBAT':function(_0x78d2b3,_0x13a430){return _0x2b7259['FUccS'](_0x78d2b3,_0x13a430);},'euLyD':_0x2b7259['cVDwX'],'CrJQU':function(_0x5382d9,_0x34ceb1){return _0x5382d9(_0x34ceb1);}};!this['processQueue']['has'](_0x563aca)&&(_0x2b7259[_0x373c05(0x114)](_0x2b7259[_0x373c05(0x181)],_0x2b7259[_0x373c05(0x171)])?this[_0x373c05(0x104)][_0x373c05(0x111)](_0x563aca,[]):this[_0x373c05(0x118)][_0x373c05(0x111)](_0x286b3c,_0x3ef6da));const _0x122fbb=_0x2b7259[_0x373c05(0x156)](setTimeout,()=>{const _0x542f41=_0x373c05,_0x662118={'kSvOG':function(_0x3a7f30,_0x4aeb96,_0xaa2d83,_0x49e90a,_0x2a412b){return _0x2b7259['MpDUt'](_0x3a7f30,_0x4aeb96,_0xaa2d83,_0x49e90a,_0x2a412b);},'YbFqf':function(_0xabeed6){const _0x185d97=a0_0x2c9a;return _0x2b7259[_0x185d97(0x19e)](_0xabeed6);},'lnLlz':_0x542f41(0x10f)};if(_0x2b7259[_0x542f41(0x11b)]!==_0x2b7259[_0x542f41(0x186)]){const _0x5e9ef9=this[_0x542f41(0x104)][_0x542f41(0x14c)](_0x563aca);if(_0x5e9ef9){if(_0x2b7259[_0x542f41(0xff)]!==_0x2b7259['hiJtD']){const _0x10e623=_0x5e9ef9[_0x542f41(0x1be)](_0xb841d1=>_0xb841d1[_0x542f41(0x12a)]===_0x30e6b0);if(_0x2b7259['QFdTI'](_0x10e623,-0x1))_0x5e9ef9[_0x542f41(0x117)](_0x10e623,0x1);}else this['sessions']=new _0xbc7f01(),this[_0x542f41(0x1a3)]=null,this[_0x542f41(0x180)]=new _0x107a0f(),this[_0x542f41(0x104)]=new _0x27671c(),this[_0x542f41(0x10d)]=_0x4f53f8[_0x542f41(0x10d)],this['opencodeUrl']=_0x56865a['opencodeUrl']||_0x542f41(0x1c6),this[_0x542f41(0x164)]=_0x5a44d9[_0x542f41(0x164)]||0xea60,this[_0x542f41(0x139)]=_0x16400a[_0x542f41(0x139)]||XsJCtA[_0x542f41(0x1b8)](_0x85f2bb,XsJCtA[_0x542f41(0x133)](_0x4f498a),XsJCtA[_0x542f41(0x1cb)],'opencode',_0x542f41(0xfa)),this[_0x542f41(0x1a3)]=this[_0x542f41(0x10a)](),this[_0x542f41(0x18a)]();}_0x2b7259[_0x542f41(0x1a5)](_0x53a54b,new Error(_0x542f41(0x1ac)));}else _0x3d92c5=_0xa92764[_0x542f41(0x18c)];},0x493e0),_0x568e24=_0x44d991=>{_0x44828a['tcapG'](clearTimeout,_0x122fbb),_0x44828a['tcapG'](_0x30e6b0,_0x44d991);},_0x441bfd=_0x41aa4d=>{const _0x274545=_0x373c05;_0x44828a[_0x274545(0x12d)](_0x274545(0x162),_0x44828a[_0x274545(0x1c7)])?(_0x44828a[_0x274545(0x1a1)](clearTimeout,_0x122fbb),_0x44828a['CrJQU'](_0x53a54b,_0x41aa4d)):(_0x44828a['tcapG'](_0x3677b6,_0x5c77ca),_0x44828a[_0x274545(0x1ce)](_0x1b8bb8,_0x43d00d));};this[_0x373c05(0x104)][_0x373c05(0x14c)](_0x563aca)[_0x373c05(0x10c)]({'message':_0x80990c,'resolve':_0x568e24,'reject':_0x441bfd});});return this[_0x3d67bc(0xfd)](_0x563aca,_0x80990c);}async['_doSendMessage'](_0x129237,_0x5ef6da,_0x4c4948=![]){const _0x347fd9=a0_0x38aca5,_0x37e57d={'bCYTY':function(_0x14db21,_0x13424f){return _0x14db21(_0x13424f);},'kZsaM':_0x347fd9(0x152),'LaZYg':function(_0x165d61,_0x4078d4){return _0x165d61(_0x4078d4);},'BFoJY':function(_0x5e6536,_0x253bc2,_0x2726a8){return _0x5e6536(_0x253bc2,_0x2726a8);},'EaSzu':'Failed\x20to\x20save\x20ops\x20sessions','DuAXK':function(_0x930588,_0x185e4e){return _0x930588!==_0x185e4e;},'jZOsp':'HXmxr','dOwmb':_0x347fd9(0x1d1),'BJlKw':'SUgXn','ddoRL':'Clearing\x20session\x20and\x20retrying','NFnbS':function(_0x9fb59d,_0x258cfd){return _0x9fb59d(_0x258cfd);}};this['activeProcesses'][_0x347fd9(0x111)](_0x129237,!![]);try{if(_0x37e57d[_0x347fd9(0x143)](_0x37e57d['jZOsp'],_0x37e57d[_0x347fd9(0x172)]))_0x37e57d['bCYTY'](_0x13c831,new _0x9c545c(_0x37e57d['kZsaM']));else{const _0x256cb1=await this[_0x347fd9(0x189)](_0x129237,_0x5ef6da);return _0x37e57d['bCYTY'](setImmediate,()=>this[_0x347fd9(0x191)](_0x129237)),_0x256cb1;}}catch(_0x4b03a8){log[_0x347fd9(0x169)]({'chatId':_0x129237,'err':_0x4b03a8['message'],'isRetry':_0x4c4948},_0x37e57d[_0x347fd9(0x1a4)]);if(!_0x4c4948){if('QHEhr'!==_0x37e57d[_0x347fd9(0x1a2)]){log[_0x347fd9(0x123)]({'chatId':_0x129237},_0x37e57d[_0x347fd9(0x154)]),this[_0x347fd9(0x118)][_0x347fd9(0x127)](_0x129237),this['saveSessions']();try{const _0x4ae4ea=await this[_0x347fd9(0x189)](_0x129237,_0x5ef6da);return setImmediate(()=>this[_0x347fd9(0x191)](_0x129237)),_0x4ae4ea;}catch(_0x36d7f0){_0x37e57d[_0x347fd9(0x153)](setImmediate,()=>this[_0x347fd9(0x191)](_0x129237));throw _0x36d7f0;}}else try{const _0x25ad65=kiPitk[_0x347fd9(0x18e)](_0x8791c,this[_0x347fd9(0x139)]);if(!kiPitk[_0x347fd9(0x198)](_0x2fe109,_0x25ad65))_0x3c1794(_0x25ad65,{'recursive':!![]});const _0x591441={'sessions':_0x40a2ce[_0x347fd9(0x140)](this[_0x347fd9(0x118)])};kiPitk[_0x347fd9(0x17b)](_0x46319f,this[_0x347fd9(0x139)],_0x183f4f[_0x347fd9(0x12f)](_0x591441,null,0x2));}catch(_0x35fe29){_0x11b9d8[_0x347fd9(0x169)]({'err':_0x35fe29},kiPitk[_0x347fd9(0x1aa)]);}}setImmediate(()=>this[_0x347fd9(0x191)](_0x129237));throw _0x4b03a8;}}async[a0_0x38aca5(0x191)](_0x430ca3){const _0x324731=a0_0x38aca5,_0x26352f={'AGeev':'Ops\x20session\x20saved','BDmjT':function(_0x43140f,_0x5156f6){return _0x43140f===_0x5156f6;},'RTFsq':function(_0x5f5c8c,_0x6bddb6){return _0x5f5c8c!==_0x6bddb6;},'XirmE':_0x324731(0xf9),'hlYYD':function(_0x16c6a3,_0x1214cf){return _0x16c6a3(_0x1214cf);}},_0x1e3cbe=this[_0x324731(0x104)][_0x324731(0x14c)](_0x430ca3);if(!_0x1e3cbe||_0x26352f['BDmjT'](_0x1e3cbe[_0x324731(0x19c)],0x0)){if(_0x26352f[_0x324731(0x155)](_0x26352f[_0x324731(0xf8)],_0x26352f[_0x324731(0xf8)]))this[_0x324731(0x118)]['set'](_0x17fcc1,{'id':_0x2ab0a4,'lastUsed':_0x3b9116['now']()}),this['saveSessions'](),_0x4369e8[_0x324731(0x123)]({'chatId':_0x557e15,'sessionId':_0x49cad6},_0x26352f[_0x324731(0x13b)]);else{this['activeProcesses']['delete'](_0x430ca3);return;}}const _0x4b790f=_0x1e3cbe[_0x324731(0x18d)]();if(!_0x4b790f){this[_0x324731(0x180)][_0x324731(0x127)](_0x430ca3);return;}try{const _0x44b81e=await this['_executeOpencode'](_0x430ca3,_0x4b790f[_0x324731(0x1bc)]);_0x4b790f[_0x324731(0x12a)](_0x44b81e);}catch(_0x28a5cf){_0x4b790f[_0x324731(0x119)](_0x28a5cf);}finally{_0x26352f[_0x324731(0xfb)](setImmediate,()=>this['_processQueue'](_0x430ca3));}}async[a0_0x38aca5(0x189)](_0x468c6f,_0x57900c){const _0x5088eb=a0_0x38aca5,_0x5a3668={'hlFdn':function(_0x2dcabb,_0x4a6dc8){return _0x2dcabb!==_0x4a6dc8;},'xyBrp':'agovj','pbLeE':function(_0xde5d7e,_0x50e69f){return _0xde5d7e===_0x50e69f;},'tFXlL':'text','zgeUS':function(_0x5d7dbc,_0x4dace4){return _0x5d7dbc===_0x4dace4;},'eaxKr':'yzycK','ZGZej':'dsqJN','DhLmX':function(_0x3cf533,_0x45c4f6){return _0x3cf533(_0x45c4f6);},'OlgyZ':_0x5088eb(0x1cc),'aewUq':function(_0x23e1f6,_0x2ed8f9){return _0x23e1f6!==_0x2ed8f9;},'ADZHx':function(_0x1e44f5,_0x816baf){return _0x1e44f5===_0x816baf;},'ouEKW':_0x5088eb(0x130),'iHFHC':_0x5088eb(0x11c),'JKTvu':_0x5088eb(0x144),'jpxjK':function(_0x54e745,_0x21bdf0){return _0x54e745!==_0x21bdf0;},'ZUmGQ':_0x5088eb(0x142),'fGJFa':_0x5088eb(0x15a),'iakuy':function(_0x198c25,_0x5610c4){return _0x198c25(_0x5610c4);},'egjMl':'vtrEV','JIPBt':function(_0x2473ed,_0xd078c5){return _0x2473ed(_0xd078c5);},'gQRhq':_0x5088eb(0x152),'lgbLA':'--session','bRXNX':_0x5088eb(0x141),'lUEJr':_0x5088eb(0x112),'rbTOQ':function(_0x24bb0b,_0x22c46b){return _0x24bb0b!==_0x22c46b;},'kgYnZ':_0x5088eb(0x16d),'bCdpF':function(_0x3cb566,_0x5b4a16,_0x2534ca){return _0x3cb566(_0x5b4a16,_0x2534ca);},'AUKsl':'utf-8','UxSCy':function(_0x5ae46,_0x2bab9e){return _0x5ae46===_0x2bab9e;},'gGZbb':_0x5088eb(0x151),'HWYil':function(_0x400f98,_0x284bd0){return _0x400f98!==_0x284bd0;},'lfMvl':_0x5088eb(0x105),'HiGwx':_0x5088eb(0x1c4),'ZeETA':_0x5088eb(0x173),'ZfqiQ':function(_0x31b9d9,_0x554468,_0x1000d5){return _0x31b9d9(_0x554468,_0x1000d5);},'UzAoT':_0x5088eb(0x103),'JwgSh':'close','PqhwX':_0x5088eb(0x1a0),'niPLa':_0x5088eb(0x158),'NKKfp':_0x5088eb(0x166),'XrjNT':_0x5088eb(0x192),'GsSLI':_0x5088eb(0x10e),'oYBAj':_0x5088eb(0x17e),'sANIe':_0x5088eb(0x13e),'PgxOq':_0x5088eb(0x12e),'tXCAt':_0x5088eb(0x1bb),'gHpJk':_0x5088eb(0x1c9),'XpWai':_0x5088eb(0x137)},_0x2819fe=this['sessions'][_0x5088eb(0x14c)](_0x468c6f),_0x2a94ad=[_0x5a3668[_0x5088eb(0x1d4)],_0x5a3668[_0x5088eb(0x1b9)],this[_0x5088eb(0x10d)],_0x5a3668[_0x5088eb(0x109)],_0x5a3668[_0x5088eb(0x161)],_0x5a3668[_0x5088eb(0x10b)],_0x5a3668['oYBAj'],this[_0x5088eb(0x113)]];_0x2819fe?_0x5a3668[_0x5088eb(0x1b4)]===_0x5a3668[_0x5088eb(0x120)]?(this[_0x5088eb(0x118)][_0x5088eb(0x127)](_0x7559a5),this[_0x5088eb(0x126)](),_0x25c402[_0x5088eb(0x123)]({'chatId':_0x776ab6},_0x5088eb(0x1c2))):(_0x2a94ad[_0x5088eb(0x10c)](_0x5088eb(0x165),_0x2819fe['id'],'--continue'),log[_0x5088eb(0x123)]({'chatId':_0x468c6f,'sessionId':_0x2819fe['id']},_0x5a3668[_0x5088eb(0x182)])):log[_0x5088eb(0x123)]({'chatId':_0x468c6f},_0x5a3668[_0x5088eb(0x1b5)]);const _0x3c6b5c=[];this['systemPrompt']&&(_0x3c6b5c['push'](_0x5a3668['gHpJk']),_0x3c6b5c[_0x5088eb(0x10c)](this[_0x5088eb(0x1a3)]),_0x3c6b5c[_0x5088eb(0x10c)](''));_0x3c6b5c['push'](_0x5a3668[_0x5088eb(0x13d)]),_0x3c6b5c[_0x5088eb(0x10c)](_0x57900c);const _0x2d964c=_0x3c6b5c['join']('\x0a');return new Promise((_0x5a490e,_0x4a02ba)=>{const _0x586e09=_0x5088eb,_0x8cfe2d={'QugRO':_0x5a3668[_0x586e09(0x1d3)],'mfVni':_0x5a3668[_0x586e09(0x1a7)],'BtWfa':_0x5a3668[_0x586e09(0x182)],'DiZsl':'Ops\x20assistant\x20timeout,\x20killing\x20process','mstem':_0x586e09(0x135),'MtOxP':function(_0x53fbe0,_0x239e40){return _0x53fbe0(_0x239e40);},'pGfpU':function(_0x17720f,_0x55b329){const _0x373cb8=_0x586e09;return _0x5a3668[_0x373cb8(0x136)](_0x17720f,_0x55b329);},'RIyDV':_0x5a3668[_0x586e09(0xf5)],'jzORH':'ojjGK','BDQtc':_0x586e09(0x13c),'MkeQR':function(_0x1c9aa1,_0x5a65c7,_0x96997a){const _0x3cd0f8=_0x586e09;return _0x5a3668[_0x3cd0f8(0x193)](_0x1c9aa1,_0x5a65c7,_0x96997a);},'WExfG':_0x5a3668['AUKsl'],'tVSZJ':function(_0x14504c,_0x2176ad){const _0x232a45=_0x586e09;return _0x5a3668[_0x232a45(0x168)](_0x14504c,_0x2176ad);},'YSoHc':_0x5a3668[_0x586e09(0x188)],'HZMsx':'Starting\x20new\x20ops\x20session','cpczb':function(_0x3e385e,_0x556d2b){return _0x5a3668['HWYil'](_0x3e385e,_0x556d2b);},'eCkVW':_0x5a3668['lfMvl'],'YckYw':function(_0x4e73e3,_0x35c97b){return _0x4e73e3(_0x35c97b);}},_0x4383f0=[];let _0x4e4d3c=null,_0x7c2288='',_0xa5d005=![];log[_0x586e09(0x13a)]({'cmd':_0x5a3668[_0x586e09(0x15f)],'args':_0x2a94ad['slice'](0x0,0x4),'inputLength':_0x2d964c[_0x586e09(0x19c)]},'Spawning\x20opencode\x20run');const _0x3d8380=spawn(_0x5a3668['HiGwx'],_0x2a94ad,{'stdio':[_0x5a3668['ZeETA'],_0x5a3668['ZeETA'],_0x5a3668['ZeETA']],'env':process.env});_0x3d8380[_0x586e09(0x132)][_0x586e09(0x11f)](_0x2d964c),_0x3d8380['stdin']['end']();const _0x275dbc=_0x5a3668[_0x586e09(0x16f)](setTimeout,()=>{const _0x9fd67a=_0x586e09,_0x4aff8f={'eIukS':_0x8cfe2d[_0x9fd67a(0x122)],'ZBTRr':_0x8cfe2d[_0x9fd67a(0x183)],'FiiDw':_0x8cfe2d['BtWfa']};if(_0xa5d005)return;_0xa5d005=!![],log[_0x9fd67a(0x169)]({'chatId':_0x468c6f,'timeout':this[_0x9fd67a(0x164)]},_0x8cfe2d[_0x9fd67a(0x149)]),_0x3d8380['kill'](_0x9fd67a(0x1c1));const _0x439fe5=_0x4383f0[_0x9fd67a(0x115)]('');_0x439fe5?(log['info']({'chatId':_0x468c6f,'responseLength':_0x439fe5[_0x9fd67a(0x19c)]},_0x8cfe2d[_0x9fd67a(0x185)]),_0x8cfe2d[_0x9fd67a(0x128)](_0x5a490e,_0x439fe5)):_0x8cfe2d['pGfpU'](_0x8cfe2d[_0x9fd67a(0x102)],_0x8cfe2d[_0x9fd67a(0x124)])?_0x8cfe2d[_0x9fd67a(0x128)](_0x4a02ba,new Error(_0x8cfe2d[_0x9fd67a(0x163)])):(_0x53453a['push'](Dqfsvw['eIukS'],_0x129b39['id'],Dqfsvw[_0x9fd67a(0x16a)]),_0x481b89[_0x9fd67a(0x123)]({'chatId':_0x216b1f,'sessionId':_0x50021c['id']},Dqfsvw[_0x9fd67a(0x14a)]));},this[_0x586e09(0x164)]);_0x3d8380['stdout']['on'](_0x586e09(0x103),_0x438149=>{const _0x2c20bd=_0x586e09;if(_0x5a3668[_0x2c20bd(0x16c)]('agovj',_0x5a3668[_0x2c20bd(0xfc)])){this['activeProcesses'][_0x2c20bd(0x127)](_0x4618db);return;}else{if(_0xa5d005)return;const _0x2aaeb9=_0x438149[_0x2c20bd(0x1ad)]()[_0x2c20bd(0x14f)]('\x0a')[_0x2c20bd(0x1c0)](_0x4a06a4=>_0x4a06a4[_0x2c20bd(0x16b)]());for(const _0x25c57e of _0x2aaeb9){try{const _0x215e48=JSON['parse'](_0x25c57e);_0x5a3668[_0x2c20bd(0x14d)](_0x215e48[_0x2c20bd(0x18f)],_0x5a3668[_0x2c20bd(0x129)])&&_0x215e48[_0x2c20bd(0x1b2)]?.[_0x2c20bd(0x187)]&&(_0x5a3668[_0x2c20bd(0x1bd)](_0x2c20bd(0x1bf),_0x5a3668[_0x2c20bd(0x13f)])?(_0x3a0caf[_0x2c20bd(0x123)]({'chatId':_0x22de97,'responseLength':_0x1b03fc['length']},_0x8cfe2d[_0x2c20bd(0x185)]),_0x120e4b(_0x3927ff)):_0x4383f0[_0x2c20bd(0x10c)](_0x215e48[_0x2c20bd(0x1b2)][_0x2c20bd(0x187)])),_0x215e48['sessionID']&&!_0x4e4d3c&&(_0x4e4d3c=_0x215e48[_0x2c20bd(0x18c)]);}catch{}}}}),_0x3d8380['stderr']['on'](_0x5a3668[_0x586e09(0x110)],_0x277848=>{const _0x13b2bf=_0x586e09;if(_0x5a3668[_0x13b2bf(0x14d)](_0x13b2bf(0x1a6),_0x5a3668[_0x13b2bf(0x11e)])){if(_0x50b905(this[_0x13b2bf(0x139)])){const _0x3c4d25=_0x54bc99[_0x13b2bf(0x15c)](RRWWtk['MkeQR'](_0x549dd6,this[_0x13b2bf(0x139)],RRWWtk['WExfG']));if(_0x3c4d25[_0x13b2bf(0x118)]&&RRWWtk[_0x13b2bf(0x146)](typeof _0x3c4d25[_0x13b2bf(0x118)],RRWWtk[_0x13b2bf(0x18b)]))for(const [_0xc885f5,_0x527bdd]of _0x3305b8[_0x13b2bf(0x190)](_0x3c4d25[_0x13b2bf(0x118)])){this[_0x13b2bf(0x118)][_0x13b2bf(0x111)](_0xc885f5,_0x527bdd);}_0x53f31e[_0x13b2bf(0x123)]({'count':this[_0x13b2bf(0x118)][_0x13b2bf(0x131)]},'Loaded\x20ops\x20assistant\x20sessions');}}else{if(_0xa5d005)return;_0x7c2288+=_0x277848[_0x13b2bf(0x1ad)]();}}),_0x3d8380['on'](_0x5a3668[_0x586e09(0x160)],_0xa25b5d=>{const _0x5c4555=_0x586e09;if(_0xa5d005)return;_0xa5d005=!![],_0x5a3668[_0x5c4555(0x1b0)](clearTimeout,_0x275dbc);_0x4e4d3c&&(this['sessions'][_0x5c4555(0x111)](_0x468c6f,{'id':_0x4e4d3c,'lastUsed':Date[_0x5c4555(0x108)]()}),this[_0x5c4555(0x126)](),log['info']({'chatId':_0x468c6f,'sessionId':_0x4e4d3c},_0x5a3668['OlgyZ']));_0x5a3668[_0x5c4555(0x17f)](_0xa25b5d,0x0)&&_0x5a3668[_0x5c4555(0x16c)](_0xa25b5d,null)&&(_0x5a3668['ADZHx'](_0x5a3668[_0x5c4555(0x11d)],_0x5a3668[_0x5c4555(0xf7)])?this[_0x5c4555(0x104)]['set'](_0x179bbf,[]):log[_0x5c4555(0x169)]({'code':_0xa25b5d,'stderr':_0x7c2288[_0x5c4555(0x1d2)](0x0,0x1f4)},_0x5a3668['JKTvu']));const _0x58ae10=_0x4383f0[_0x5c4555(0x115)]('');if(_0x58ae10)_0x5a3668[_0x5c4555(0x16e)](_0x5a3668[_0x5c4555(0x1c8)],_0x5a3668['fGJFa'])?_0x5a3668[_0x5c4555(0x17d)](_0x5a490e,_0x58ae10):_0x3331f4(_0x5f4f3c);else _0x7c2288?_0x5a3668[_0x5c4555(0x178)](_0x5a3668['egjMl'],_0x5a3668[_0x5c4555(0x145)])?_0x4a02ba(new Error('Ops\x20assistant\x20failed:\x20'+_0x7c2288[_0x5c4555(0x1d2)](0x0,0xc8))):_0x4a6a91[_0x5c4555(0x123)]({'chatId':_0x3422a0},RRWWtk['HZMsx']):_0x5a3668[_0x5c4555(0x1d0)](_0x4a02ba,new Error(_0x5a3668[_0x5c4555(0x1b3)]));}),_0x3d8380['on'](_0x586e09(0x184),_0x3ee2be=>{const _0x174f3e=_0x586e09;if(_0x8cfe2d[_0x174f3e(0x100)](_0x8cfe2d[_0x174f3e(0x19a)],_0x8cfe2d[_0x174f3e(0x19a)])){if(_0x4f61cf)return;_0x1ef165+=_0x47c93b[_0x174f3e(0x1ad)]();}else{if(_0xa5d005)return;_0xa5d005=!![],_0x8cfe2d[_0x174f3e(0x128)](clearTimeout,_0x275dbc),_0x8cfe2d[_0x174f3e(0x106)](_0x4a02ba,new Error(_0x174f3e(0x1ab)+_0x3ee2be[_0x174f3e(0x1bc)]));}});});}[a0_0x38aca5(0x1c3)](_0x45b491){const _0x5ca4d4=a0_0x38aca5,_0x2a3cf4={'wdkJE':_0x5ca4d4(0x1c2)};this[_0x5ca4d4(0x118)][_0x5ca4d4(0x127)](_0x45b491),this[_0x5ca4d4(0x126)](),log['info']({'chatId':_0x45b491},_0x2a3cf4[_0x5ca4d4(0x147)]);}}
|
package/dist/core/qr-crypto.d.ts
CHANGED
package/dist/core/qr-crypto.js
CHANGED
|
@@ -1,66 +1 @@
|
|
|
1
|
-
const QR_SECRET = 'dm_im_qr_key_v2_2026_secure';
|
|
2
|
-
const QR_SALT = 'qr_salt_x9k2';
|
|
3
|
-
function deriveKey() {
|
|
4
|
-
const input = QR_SECRET + QR_SALT;
|
|
5
|
-
const key = [];
|
|
6
|
-
for (let i = 0; i < 32; i++) {
|
|
7
|
-
let h = 0;
|
|
8
|
-
for (let j = 0; j < input.length; j++) {
|
|
9
|
-
h = ((h << 5) - h + input.charCodeAt((i + j) % input.length)) | 0;
|
|
10
|
-
}
|
|
11
|
-
key.push(h & 0xff);
|
|
12
|
-
}
|
|
13
|
-
return key;
|
|
14
|
-
}
|
|
15
|
-
function randomBytes(n) {
|
|
16
|
-
const bytes = [];
|
|
17
|
-
for (let i = 0; i < n; i++) {
|
|
18
|
-
bytes.push(Math.floor(Math.random() * 256));
|
|
19
|
-
}
|
|
20
|
-
return bytes;
|
|
21
|
-
}
|
|
22
|
-
function stringToUtf8Bytes(str) {
|
|
23
|
-
const bytes = [];
|
|
24
|
-
for (let i = 0; i < str.length; i++) {
|
|
25
|
-
const code = str.charCodeAt(i);
|
|
26
|
-
if (code < 0x80) {
|
|
27
|
-
bytes.push(code);
|
|
28
|
-
}
|
|
29
|
-
else if (code < 0x800) {
|
|
30
|
-
bytes.push(0xc0 | (code >> 6), 0x80 | (code & 0x3f));
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
bytes.push(0xe0 | (code >> 12), 0x80 | ((code >> 6) & 0x3f), 0x80 | (code & 0x3f));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return bytes;
|
|
37
|
-
}
|
|
38
|
-
const B64U = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
|
|
39
|
-
function toBase64url(bytes) {
|
|
40
|
-
let res = '';
|
|
41
|
-
for (let i = 0; i < bytes.length; i += 3) {
|
|
42
|
-
const a = bytes[i];
|
|
43
|
-
const b = i + 1 < bytes.length ? bytes[i + 1] : 0;
|
|
44
|
-
const c = i + 2 < bytes.length ? bytes[i + 2] : 0;
|
|
45
|
-
res += B64U[a >> 2];
|
|
46
|
-
res += B64U[((a & 3) << 4) | (b >> 4)];
|
|
47
|
-
if (i + 1 < bytes.length)
|
|
48
|
-
res += B64U[((b & 15) << 2) | (c >> 6)];
|
|
49
|
-
if (i + 2 < bytes.length)
|
|
50
|
-
res += B64U[c & 63];
|
|
51
|
-
}
|
|
52
|
-
return res;
|
|
53
|
-
}
|
|
54
|
-
export function encryptQR(plaintext) {
|
|
55
|
-
const key = deriveKey();
|
|
56
|
-
const iv = randomBytes(4);
|
|
57
|
-
const plainBytes = stringToUtf8Bytes(plaintext);
|
|
58
|
-
const cipherBytes = [];
|
|
59
|
-
for (let i = 0; i < plainBytes.length; i++) {
|
|
60
|
-
const keyIdx = (i + iv[i % 4]) % 32;
|
|
61
|
-
cipherBytes.push(plainBytes[i] ^ key[keyIdx]);
|
|
62
|
-
}
|
|
63
|
-
const payload = [...iv, ...cipherBytes];
|
|
64
|
-
return 'v3:' + toBase64url(payload);
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=qr-crypto.js.map
|
|
1
|
+
const a0_0x2d0a2f=a0_0x1564;(function(_0x2a0f04,_0x53a18e){const _0x1a051d=a0_0x1564,_0x5c0a77=_0x2a0f04();while(!![]){try{const _0x159762=-parseInt(_0x1a051d(0x1d9))/0x1+parseInt(_0x1a051d(0x1d6))/0x2+parseInt(_0x1a051d(0x1ef))/0x3+-parseInt(_0x1a051d(0x1c4))/0x4+parseInt(_0x1a051d(0x1de))/0x5+parseInt(_0x1a051d(0x1ea))/0x6+-parseInt(_0x1a051d(0x1ec))/0x7;if(_0x159762===_0x53a18e)break;else _0x5c0a77['push'](_0x5c0a77['shift']());}catch(_0x5d75e0){_0x5c0a77['push'](_0x5c0a77['shift']());}}}(a0_0x4397,0x7160c));const QR_SECRET=process.env.CLAW_QR_SECRET||a0_0x2d0a2f(0x1c8),QR_SALT=process.env.CLAW_QR_SALT||a0_0x2d0a2f(0x1e7);function deriveKey(){const _0x552dab=a0_0x2d0a2f,_0x253ffe={'iyMIH':function(_0x49dc6d){return _0x49dc6d();},'bkMGF':function(_0x40bf42,_0x58ea02){return _0x40bf42(_0x58ea02);},'pIlII':function(_0x28ba87,_0x442521){return _0x28ba87<_0x442521;},'nJmoX':function(_0x3796af,_0x30b1e3){return _0x3796af%_0x30b1e3;},'xPIVP':function(_0x165a58,_0x403d42){return _0x165a58+_0x403d42;},'ztbvw':function(_0x5d1cd9,_0x1dd5e9){return _0x5d1cd9%_0x1dd5e9;},'WuLWA':function(_0xd13980,_0x2b14aa){return _0xd13980^_0x2b14aa;},'AbNha':'v3:','VNBfI':function(_0x1aa466,_0x1f36af){return _0x1aa466<_0x1f36af;},'Caunx':_0x552dab(0x1fc),'zkino':function(_0x1a1a3d,_0x20a452){return _0x1a1a3d|_0x20a452;},'tGIyd':function(_0x2e5709,_0x3f2fd6){return _0x2e5709+_0x3f2fd6;},'thopH':function(_0x9b77d3,_0x2f7a0b){return _0x9b77d3-_0x2f7a0b;},'PnWuu':function(_0x3b6e70,_0x39eb69){return _0x3b6e70+_0x39eb69;},'fdrRX':function(_0x132771,_0x493405){return _0x132771&_0x493405;}},_0x5d75a8=QR_SECRET+QR_SALT,_0x2dfe23=[];for(let _0x358a40=0x0;_0x253ffe['VNBfI'](_0x358a40,0x20);_0x358a40++){if(_0x253ffe['Caunx']!=='jfQwf'){const _0x377f28=_0x253ffe['iyMIH'](_0xa857bd),_0x3dfe35=_0x253ffe[_0x552dab(0x201)](_0x7bc4c,0x4),_0x233ee4=_0x253ffe['bkMGF'](_0x4cb31c,_0x2b0411),_0x316e70=[];for(let _0x31be4c=0x0;_0x253ffe[_0x552dab(0x1e5)](_0x31be4c,_0x233ee4[_0x552dab(0x1fb)]);_0x31be4c++){const _0x46a0d1=_0x253ffe['nJmoX'](_0x253ffe[_0x552dab(0x1f0)](_0x31be4c,_0x3dfe35[_0x253ffe['ztbvw'](_0x31be4c,0x4)]),0x20);_0x316e70[_0x552dab(0x1eb)](_0x253ffe['WuLWA'](_0x233ee4[_0x31be4c],_0x377f28[_0x46a0d1]));}const _0x2f85d0=[..._0x3dfe35,..._0x316e70];return _0x253ffe[_0x552dab(0x1f0)](_0x253ffe[_0x552dab(0x1ca)],_0x253ffe[_0x552dab(0x201)](_0x363175,_0x2f85d0));}else{let _0x2148c0=0x0;for(let _0x5e7d1a=0x0;_0x5e7d1a<_0x5d75a8[_0x552dab(0x1fb)];_0x5e7d1a++){_0x2148c0=_0x253ffe[_0x552dab(0x1f6)](_0x253ffe[_0x552dab(0x1cd)](_0x253ffe[_0x552dab(0x1e0)](_0x2148c0<<0x5,_0x2148c0),_0x5d75a8[_0x552dab(0x1da)](_0x253ffe[_0x552dab(0x1e4)](_0x358a40,_0x5e7d1a)%_0x5d75a8['length'])),0x0);}_0x2dfe23[_0x552dab(0x1eb)](_0x253ffe[_0x552dab(0x1d3)](_0x2148c0,0xff));}}return _0x2dfe23;}function randomBytes(_0xfbaf37){const _0x139019=a0_0x2d0a2f,_0x436174={'redSc':function(_0x57bfa1,_0x2ed75a){return _0x57bfa1<_0x2ed75a;},'BGPhT':function(_0x454f1a,_0x56127b){return _0x454f1a*_0x56127b;}},_0x59a34c=[];for(let _0x635398=0x0;_0x436174[_0x139019(0x1f8)](_0x635398,_0xfbaf37);_0x635398++){_0x59a34c['push'](Math[_0x139019(0x1e2)](_0x436174[_0x139019(0x1ed)](Math[_0x139019(0x1e9)](),0x100)));}return _0x59a34c;}function stringToUtf8Bytes(_0x13d1dc){const _0x372072=a0_0x2d0a2f,_0x41bef6={'TmYJi':function(_0x3e1fc5,_0x4b53f3){return _0x3e1fc5<_0x4b53f3;},'rFWMh':function(_0x41673c,_0xce037a){return _0x41673c+_0xce037a;},'TYiUk':function(_0x4ed3fb,_0x2a1d84){return _0x4ed3fb>>_0x2a1d84;},'vMPVs':function(_0x4d0947,_0x250d96){return _0x4d0947<<_0x250d96;},'corGq':function(_0x467d9f,_0x3e18f3){return _0x467d9f&_0x3e18f3;},'YuOBj':function(_0x210e1d,_0x4b782d){return _0x210e1d<_0x4b782d;},'aToyc':function(_0x304aba,_0x5542bb){return _0x304aba<<_0x5542bb;},'znnUX':function(_0x299c53,_0x22ece3){return _0x299c53&_0x22ece3;},'QIuyh':function(_0xdd7213,_0x22c6ea){return _0xdd7213*_0x22c6ea;},'eMMgv':function(_0x3856da,_0x29f9b8){return _0x3856da===_0x29f9b8;},'xCkCa':_0x372072(0x1cb),'ZgyBN':_0x372072(0x1e1),'lPWvR':function(_0x872e84,_0x1a5cdd){return _0x872e84|_0x1a5cdd;},'lxPsS':function(_0x2d4910,_0x5460e9){return _0x2d4910|_0x5460e9;},'hCWdK':function(_0x378665,_0x282340){return _0x378665|_0x282340;}},_0x142a23=[];for(let _0x2a943e=0x0;_0x41bef6['TmYJi'](_0x2a943e,_0x13d1dc[_0x372072(0x1fb)]);_0x2a943e++){const _0x4a48c4=_0x13d1dc[_0x372072(0x1da)](_0x2a943e);if(_0x41bef6['TmYJi'](_0x4a48c4,0x80)){if(_0x41bef6['eMMgv'](_0x41bef6[_0x372072(0x1f5)],_0x41bef6[_0x372072(0x1f5)]))_0x142a23[_0x372072(0x1eb)](_0x4a48c4);else{let _0x21dad0='';for(let _0x2d8205=0x0;_0x41bef6[_0x372072(0x1cf)](_0x2d8205,_0x5d4771[_0x372072(0x1fb)]);_0x2d8205+=0x3){const _0x57130f=_0x19c259[_0x2d8205],_0x53642d=_0x41bef6[_0x372072(0x1cf)](_0x41bef6[_0x372072(0x200)](_0x2d8205,0x1),_0x2acb01[_0x372072(0x1fb)])?_0x269af8[_0x2d8205+0x1]:0x0,_0x336641=_0x41bef6[_0x372072(0x1cf)](_0x41bef6[_0x372072(0x200)](_0x2d8205,0x2),_0x3e10ac[_0x372072(0x1fb)])?_0x12e6bb[_0x41bef6[_0x372072(0x200)](_0x2d8205,0x2)]:0x0;_0x21dad0+=_0x14b369[_0x41bef6[_0x372072(0x1c7)](_0x57130f,0x2)],_0x21dad0+=_0x15fb36[_0x41bef6['vMPVs'](_0x41bef6[_0x372072(0x1db)](_0x57130f,0x3),0x4)|_0x41bef6[_0x372072(0x1c7)](_0x53642d,0x4)];if(_0x41bef6['YuOBj'](_0x41bef6[_0x372072(0x200)](_0x2d8205,0x1),_0x12294a[_0x372072(0x1fb)]))_0x21dad0+=_0x250511[_0x41bef6[_0x372072(0x1f4)](_0x41bef6[_0x372072(0x1ce)](_0x53642d,0xf),0x2)|_0x41bef6[_0x372072(0x1c7)](_0x336641,0x6)];if(_0x41bef6['TmYJi'](_0x2d8205+0x2,_0x15ce70[_0x372072(0x1fb)]))_0x21dad0+=_0x3903ce[_0x41bef6['corGq'](_0x336641,0x3f)];}return _0x21dad0;}}else _0x41bef6['TmYJi'](_0x4a48c4,0x800)?_0x372072(0x203)===_0x41bef6[_0x372072(0x1fd)]?_0x1a2049[_0x372072(0x1eb)](_0x2f326c[_0x372072(0x1e2)](JtkiZl[_0x372072(0x1c3)](_0x484bcf[_0x372072(0x1e9)](),0x100))):_0x142a23[_0x372072(0x1eb)](_0x41bef6[_0x372072(0x1d8)](0xc0,_0x4a48c4>>0x6),_0x41bef6[_0x372072(0x1d7)](0x80,_0x4a48c4&0x3f)):_0x142a23['push'](_0x41bef6[_0x372072(0x1d7)](0xe0,_0x41bef6[_0x372072(0x1c7)](_0x4a48c4,0xc)),_0x41bef6['hCWdK'](0x80,_0x41bef6[_0x372072(0x1db)](_0x4a48c4>>0x6,0x3f)),_0x41bef6[_0x372072(0x1d7)](0x80,_0x4a48c4&0x3f));}return _0x142a23;}const B64U=a0_0x2d0a2f(0x1d2);function toBase64url(_0x4efd94){const _0x500ae5=a0_0x2d0a2f,_0x2b62cc={'Obnwt':function(_0x4a560a,_0x8f7dad){return _0x4a560a<_0x8f7dad;},'mDzJz':function(_0x2c60bc,_0x5267d5){return _0x2c60bc+_0x5267d5;},'nHgwE':function(_0x3869bb,_0x29315b){return _0x3869bb+_0x29315b;},'HOJJp':function(_0x1e6b96,_0x4423a2){return _0x1e6b96+_0x4423a2;},'EUOcI':function(_0x1c9db9,_0xbd0f45){return _0x1c9db9|_0xbd0f45;},'Siepr':function(_0x592807,_0x34c6af){return _0x592807<<_0x34c6af;},'chRmV':function(_0x517308,_0x2a0ba3){return _0x517308&_0x2a0ba3;},'RTqPx':function(_0x2e33c0,_0x4b6878){return _0x2e33c0>>_0x4b6878;},'Cwech':function(_0x17fcc9,_0x372b5a){return _0x17fcc9|_0x372b5a;},'NQsGB':function(_0xfb21ea,_0x1a2e07){return _0xfb21ea<<_0x1a2e07;},'NhoQP':function(_0xf0c280,_0xa62cd9){return _0xf0c280&_0xa62cd9;}};let _0x3af420='';for(let _0x464384=0x0;_0x2b62cc[_0x500ae5(0x205)](_0x464384,_0x4efd94[_0x500ae5(0x1fb)]);_0x464384+=0x3){const _0x5b26fa=_0x4efd94[_0x464384],_0x20cab6=_0x2b62cc[_0x500ae5(0x1c6)](_0x464384,0x1)<_0x4efd94[_0x500ae5(0x1fb)]?_0x4efd94[_0x2b62cc[_0x500ae5(0x1c6)](_0x464384,0x1)]:0x0,_0x153b9a=_0x2b62cc['nHgwE'](_0x464384,0x2)<_0x4efd94[_0x500ae5(0x1fb)]?_0x4efd94[_0x2b62cc[_0x500ae5(0x207)](_0x464384,0x2)]:0x0;_0x3af420+=B64U[_0x5b26fa>>0x2],_0x3af420+=B64U[_0x2b62cc[_0x500ae5(0x1f3)](_0x2b62cc[_0x500ae5(0x1dc)](_0x2b62cc[_0x500ae5(0x1ff)](_0x5b26fa,0x3),0x4),_0x2b62cc[_0x500ae5(0x1ee)](_0x20cab6,0x4))];if(_0x2b62cc[_0x500ae5(0x205)](_0x2b62cc['mDzJz'](_0x464384,0x1),_0x4efd94[_0x500ae5(0x1fb)]))_0x3af420+=B64U[_0x2b62cc['Cwech'](_0x2b62cc['NQsGB'](_0x2b62cc[_0x500ae5(0x1c9)](_0x20cab6,0xf),0x2),_0x153b9a>>0x6)];if(_0x2b62cc[_0x500ae5(0x1e6)](_0x464384,0x2)<_0x4efd94[_0x500ae5(0x1fb)])_0x3af420+=B64U[_0x153b9a&0x3f];}return _0x3af420;}function a0_0x1564(_0x148ede,_0x5e52c3){_0x148ede=_0x148ede-0x1c3;const _0x4397e2=a0_0x4397();let _0x156412=_0x4397e2[_0x148ede];if(a0_0x1564['bfzugf']===undefined){var _0x53f811=function(_0x5a9b22){const _0x445742='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2a5063='',_0x17e288='';for(let _0x3262a6=0x0,_0x31fb05,_0x238236,_0x3a7e50=0x0;_0x238236=_0x5a9b22['charAt'](_0x3a7e50++);~_0x238236&&(_0x31fb05=_0x3262a6%0x4?_0x31fb05*0x40+_0x238236:_0x238236,_0x3262a6++%0x4)?_0x2a5063+=String['fromCharCode'](0xff&_0x31fb05>>(-0x2*_0x3262a6&0x6)):0x0){_0x238236=_0x445742['indexOf'](_0x238236);}for(let _0x649506=0x0,_0x25bf04=_0x2a5063['length'];_0x649506<_0x25bf04;_0x649506++){_0x17e288+='%'+('00'+_0x2a5063['charCodeAt'](_0x649506)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x17e288);};a0_0x1564['qocROL']=_0x53f811,a0_0x1564['MKkgWe']={},a0_0x1564['bfzugf']=!![];}const _0x46c430=_0x4397e2[0x0],_0x27af08=_0x148ede+_0x46c430,_0x4731c5=a0_0x1564['MKkgWe'][_0x27af08];return!_0x4731c5?(_0x156412=a0_0x1564['qocROL'](_0x156412),a0_0x1564['MKkgWe'][_0x27af08]=_0x156412):_0x156412=_0x4731c5,_0x156412;}export function encryptQR(_0x16a8a2){const _0x44619e=a0_0x2d0a2f,_0xb643da={'UaJal':function(_0x51351c,_0x4026e0){return _0x51351c+_0x4026e0;},'LSTAv':function(_0x131b99,_0x2165df){return _0x131b99<_0x2165df;},'AtNjy':function(_0x36121b,_0x236e40){return _0x36121b>>_0x236e40;},'mHKws':function(_0x563942,_0xc22c7){return _0x563942|_0xc22c7;},'uoLKC':function(_0x22877a,_0x2e091f){return _0x22877a<<_0x2e091f;},'QoXLx':function(_0x225a38,_0xc69b6d){return _0x225a38&_0xc69b6d;},'hzEWl':function(_0x406582,_0x19eefc){return _0x406582<_0x19eefc;},'YOEZE':function(_0x88ab51,_0x1e56f4){return _0x88ab51+_0x1e56f4;},'fvGuf':function(_0x469733,_0x377496){return _0x469733<<_0x377496;},'AWJuN':function(_0x58e892,_0x42893c){return _0x58e892&_0x42893c;},'GdoPl':function(_0x2472b5,_0x1f31fa){return _0x2472b5>>_0x1f31fa;},'BfTSy':function(_0x1f71f1,_0x56448e){return _0x1f71f1<_0x56448e;},'CCEmr':function(_0x59b3ef,_0x506427){return _0x59b3ef+_0x506427;},'poWdn':function(_0x3f4e40){return _0x3f4e40();},'PajQv':function(_0x4ea207,_0xe57209){return _0x4ea207(_0xe57209);},'AIqaW':function(_0x46cf26,_0xcc8d70){return _0x46cf26<_0xcc8d70;},'FApOt':function(_0x1ae45d,_0x5b219b){return _0x1ae45d!==_0x5b219b;},'FsUkS':_0x44619e(0x1c5),'xSEvJ':function(_0x3a8c6c,_0x350244){return _0x3a8c6c%_0x350244;},'SejWa':function(_0x5333bf,_0x869d99){return _0x5333bf^_0x869d99;},'Bdpnt':function(_0xdaa27a,_0x5877c8){return _0xdaa27a+_0x5877c8;},'hFtIm':'v3:','nroKD':function(_0x5cb01c,_0x3d0057){return _0x5cb01c(_0x3d0057);}},_0xef1cf5=_0xb643da[_0x44619e(0x1e8)](deriveKey),_0x3b0fd3=_0xb643da['PajQv'](randomBytes,0x4),_0x55e546=_0xb643da[_0x44619e(0x1f1)](stringToUtf8Bytes,_0x16a8a2),_0xc61bbc=[];for(let _0xc7b757=0x0;_0xb643da[_0x44619e(0x1f9)](_0xc7b757,_0x55e546[_0x44619e(0x1fb)]);_0xc7b757++){if(_0xb643da[_0x44619e(0x206)](_0xb643da['FsUkS'],_0x44619e(0x1d5))){const _0x1fcb75=_0xb643da[_0x44619e(0x1fe)](_0xb643da[_0x44619e(0x1d4)](_0xc7b757,_0x3b0fd3[_0xc7b757%0x4]),0x20);_0xc61bbc[_0x44619e(0x1eb)](_0xb643da['SejWa'](_0x55e546[_0xc7b757],_0xef1cf5[_0x1fcb75]));}else{const _0x2b3c1d=_0x348afa[_0x46862e],_0x4840ba=ahESYh[_0x44619e(0x1d4)](_0x5e3af0,0x1)<_0x5ed34b[_0x44619e(0x1fb)]?_0x14c4a7[_0x47d3be+0x1]:0x0,_0x3cc162=ahESYh['LSTAv'](ahESYh[_0x44619e(0x1d4)](_0x5aef03,0x2),_0x4e2112[_0x44619e(0x1fb)])?_0x1b3260[ahESYh[_0x44619e(0x1d4)](_0x455c9b,0x2)]:0x0;_0x4bb9cc+=_0x29f995[ahESYh['AtNjy'](_0x2b3c1d,0x2)],_0x4a9c9e+=_0x56719c[ahESYh[_0x44619e(0x1d0)](ahESYh[_0x44619e(0x204)](ahESYh['QoXLx'](_0x2b3c1d,0x3),0x4),_0x4840ba>>0x4)];if(ahESYh[_0x44619e(0x1dd)](ahESYh[_0x44619e(0x1e3)](_0x3f0039,0x1),_0x1ca8c6[_0x44619e(0x1fb)]))_0x58ee66+=_0x38af24[ahESYh['fvGuf'](ahESYh[_0x44619e(0x1df)](_0x4840ba,0xf),0x2)|ahESYh[_0x44619e(0x1cc)](_0x3cc162,0x6)];if(ahESYh[_0x44619e(0x202)](ahESYh[_0x44619e(0x1fa)](_0x573c69,0x2),_0xf23a5f[_0x44619e(0x1fb)]))_0x5b3d04+=_0x4da55c[ahESYh[_0x44619e(0x1f2)](_0x3cc162,0x3f)];}}const _0xe3e2d=[..._0x3b0fd3,..._0xc61bbc];return _0xb643da['Bdpnt'](_0xb643da[_0x44619e(0x1d1)],_0xb643da[_0x44619e(0x1f7)](toBase64url,_0xe3e2d));}function a0_0x4397(){const _0x556ae0=['EMTPBM8','BNjVs0q','CMvKu2m','quLXyvC','q0nfBxi','BgvUz3rO','AMzrD2y','wMD5qK4','EfnfDKO','y2HsBvy','CKzxtwG','yMTnr0y','qMzuu3K','rLLXteu','Dw9ms0m','t2jUD3q','rKfWt3q','se9ksNa','uuL1EwG','mJC3ndi2nfHWugXgqq','sxzPEhq','Bur6sNO','vfLPvwS','zg1FAw1FCxjFA2v5x3yYxZiWmJzFC2vJDxjL','tMHVuva','qwjoAge','BMrLCwe','r2rVugW','DeDjEwq','EM5UvvG','vg1zsMK','BuHlD3m','Aez0sw0','qujdrevgr0HjsKTmtu5puffsu1rvvLDywvPHyMnKzwzNAgLQA2XTBM9WCxjZDhv2D3H5EJaXmJm0nty3odKTxW','zMrYuLG','vwfkywW','rgfqqwS','mtC0mZeYnNfXDwXqyq','BhHqC1m','BfbxDLi','mZG2mJLWBvHwzwO','y2HHCKnVzgvbDa','y29Yr3e','u2LLChi','AhPfv2W','mJu4nZy0nw1dtefMEG','qvDkDu4','DgHVCeG','ww9Rwvi','zMXVB3i','wu9fwKu','ug5xDxu','CeLSsuK','BKHND0u','CxjFC2fSDf94owSY','Cg9xzg4','CMfUzg9T','nde2otm0mgX6q0LJrq','ChvZAa','nZeYoty3nwT6D3bWuq','qKDqAfq','uLrXuhG','mZKZndaYwNboD0z3','EfbjvLa','ugfQuxy','uw9ythG','rvvpy0K','yvrVEwm','EenRq2e'];a0_0x4397=function(){return _0x556ae0;};return a0_0x4397();}
|
|
@@ -1,144 +1 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
2
|
-
import { dirname, join } from 'path';
|
|
3
|
-
import { homedir } from 'os';
|
|
4
|
-
import { createLogger } from './logger.js';
|
|
5
|
-
const log = createLogger('SessionManager');
|
|
6
|
-
const DEFAULT_STORAGE_PATH = join(homedir(), '.config', 'opencode', 'clawmessenger-sessions.json');
|
|
7
|
-
export class SessionManager {
|
|
8
|
-
constructor(opencode, storagePath) {
|
|
9
|
-
this.sessions = new Map();
|
|
10
|
-
this.creating = new Map();
|
|
11
|
-
this.opencode = opencode;
|
|
12
|
-
this.storagePath = storagePath || DEFAULT_STORAGE_PATH;
|
|
13
|
-
this.restore();
|
|
14
|
-
}
|
|
15
|
-
async getOrCreateSession(chatId, title) {
|
|
16
|
-
const existing = this.sessions.get(chatId);
|
|
17
|
-
if (existing) {
|
|
18
|
-
try {
|
|
19
|
-
const alive = await this.opencode.sessionExists(existing.id);
|
|
20
|
-
if (alive)
|
|
21
|
-
return existing;
|
|
22
|
-
// Only delete if explicitly confirmed not alive, not on error
|
|
23
|
-
this.sessions.delete(chatId);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
// Network error: keep existing session, don't delete
|
|
27
|
-
log.warn({ chatId, sessionId: existing.id, err }, 'sessionExists check failed, keeping existing session');
|
|
28
|
-
return existing;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const pending = this.creating.get(chatId);
|
|
32
|
-
if (pending)
|
|
33
|
-
return pending;
|
|
34
|
-
const promise = (async () => {
|
|
35
|
-
const session = await this.opencode.createSession(title || `ClawMessenger ${chatId}`);
|
|
36
|
-
const info = {
|
|
37
|
-
id: session.id,
|
|
38
|
-
chatId,
|
|
39
|
-
status: 'idle',
|
|
40
|
-
};
|
|
41
|
-
this.sessions.set(chatId, info);
|
|
42
|
-
log.info({ chatId, sessionId: session.id }, 'Created new session');
|
|
43
|
-
this.scheduleSave();
|
|
44
|
-
return info;
|
|
45
|
-
})();
|
|
46
|
-
this.creating.set(chatId, promise);
|
|
47
|
-
try {
|
|
48
|
-
return await promise;
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
this.creating.delete(chatId);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
getSession(chatId) {
|
|
55
|
-
return this.sessions.get(chatId);
|
|
56
|
-
}
|
|
57
|
-
getSessionByOpencodeId(sessionId) {
|
|
58
|
-
for (const [, info] of this.sessions.entries()) {
|
|
59
|
-
if (info.id === sessionId)
|
|
60
|
-
return info;
|
|
61
|
-
}
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
getChatIdBySession(sessionId) {
|
|
65
|
-
for (const [chatId, info] of this.sessions.entries()) {
|
|
66
|
-
if (info.id === sessionId)
|
|
67
|
-
return chatId;
|
|
68
|
-
}
|
|
69
|
-
return undefined;
|
|
70
|
-
}
|
|
71
|
-
updateStatus(chatId, status) {
|
|
72
|
-
const session = this.sessions.get(chatId);
|
|
73
|
-
if (session) {
|
|
74
|
-
session.status = status;
|
|
75
|
-
log.info({ chatId, status }, 'Session status updated');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
updateExtra(chatId, extra) {
|
|
79
|
-
const session = this.sessions.get(chatId);
|
|
80
|
-
if (session) {
|
|
81
|
-
session.extra = { ...session.extra, ...extra };
|
|
82
|
-
log.info({ chatId, extraKeys: Object.keys(extra) }, 'Session extra updated');
|
|
83
|
-
this.scheduleSave();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
deleteSession(chatId) {
|
|
87
|
-
this.sessions.delete(chatId);
|
|
88
|
-
this.scheduleSave();
|
|
89
|
-
}
|
|
90
|
-
getAllSessions() {
|
|
91
|
-
return Array.from(this.sessions.values());
|
|
92
|
-
}
|
|
93
|
-
async cleanup() {
|
|
94
|
-
if (this.saveTimer) {
|
|
95
|
-
clearTimeout(this.saveTimer);
|
|
96
|
-
this.saveTimer = undefined;
|
|
97
|
-
}
|
|
98
|
-
this.saveNow();
|
|
99
|
-
}
|
|
100
|
-
restore() {
|
|
101
|
-
if (!existsSync(this.storagePath))
|
|
102
|
-
return;
|
|
103
|
-
try {
|
|
104
|
-
const data = JSON.parse(readFileSync(this.storagePath, 'utf-8'));
|
|
105
|
-
if (data.version === 1 && Array.isArray(data.sessions)) {
|
|
106
|
-
for (const s of data.sessions) {
|
|
107
|
-
this.sessions.set(s.chatId, {
|
|
108
|
-
id: s.sessionId,
|
|
109
|
-
chatId: s.chatId,
|
|
110
|
-
status: 'idle',
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
log.info({ count: data.sessions.length }, 'Restored sessions');
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
log.warn({ err }, 'Failed to restore sessions');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
scheduleSave() {
|
|
121
|
-
if (this.saveTimer)
|
|
122
|
-
clearTimeout(this.saveTimer);
|
|
123
|
-
this.saveTimer = setTimeout(() => this.saveNow(), 500);
|
|
124
|
-
}
|
|
125
|
-
saveNow() {
|
|
126
|
-
const state = {
|
|
127
|
-
version: 1,
|
|
128
|
-
sessions: Array.from(this.sessions.entries()).map(([chatId, info]) => ({
|
|
129
|
-
chatId,
|
|
130
|
-
sessionId: info.id,
|
|
131
|
-
})),
|
|
132
|
-
};
|
|
133
|
-
try {
|
|
134
|
-
const dir = dirname(this.storagePath);
|
|
135
|
-
if (!existsSync(dir))
|
|
136
|
-
mkdirSync(dir, { recursive: true });
|
|
137
|
-
writeFileSync(this.storagePath, JSON.stringify(state, null, 2));
|
|
138
|
-
}
|
|
139
|
-
catch (err) {
|
|
140
|
-
log.error({ err }, 'Failed to save sessions');
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=session-manager.js.map
|
|
1
|
+
const a0_0x469c4e=a0_0x21cb;(function(_0xda8fce,_0x2bf64f){const _0x540c24=a0_0x21cb,_0xfe6a79=_0xda8fce();while(!![]){try{const _0x2b3389=parseInt(_0x540c24(0x17a))/0x1+parseInt(_0x540c24(0x12c))/0x2*(parseInt(_0x540c24(0x135))/0x3)+-parseInt(_0x540c24(0x145))/0x4*(parseInt(_0x540c24(0x157))/0x5)+-parseInt(_0x540c24(0x140))/0x6+parseInt(_0x540c24(0x143))/0x7*(parseInt(_0x540c24(0x139))/0x8)+parseInt(_0x540c24(0x123))/0x9+parseInt(_0x540c24(0x152))/0xa*(-parseInt(_0x540c24(0x13a))/0xb);if(_0x2b3389===_0x2bf64f)break;else _0xfe6a79['push'](_0xfe6a79['shift']());}catch(_0xbd3317){_0xfe6a79['push'](_0xfe6a79['shift']());}}}(a0_0x28b0,0x443c4));function a0_0x21cb(_0xc20d2e,_0x1219a4){_0xc20d2e=_0xc20d2e-0x114;const _0x28b0ae=a0_0x28b0();let _0x21cb37=_0x28b0ae[_0xc20d2e];if(a0_0x21cb['ODRzEL']===undefined){var _0x1b570f=function(_0x516b82){const _0xe2f2c6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x7977d5='',_0x55e851='';for(let _0x39beb8=0x0,_0xa18105,_0x27d9b6,_0x57d788=0x0;_0x27d9b6=_0x516b82['charAt'](_0x57d788++);~_0x27d9b6&&(_0xa18105=_0x39beb8%0x4?_0xa18105*0x40+_0x27d9b6:_0x27d9b6,_0x39beb8++%0x4)?_0x7977d5+=String['fromCharCode'](0xff&_0xa18105>>(-0x2*_0x39beb8&0x6)):0x0){_0x27d9b6=_0xe2f2c6['indexOf'](_0x27d9b6);}for(let _0x2cf465=0x0,_0x5a5964=_0x7977d5['length'];_0x2cf465<_0x5a5964;_0x2cf465++){_0x55e851+='%'+('00'+_0x7977d5['charCodeAt'](_0x2cf465)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55e851);};a0_0x21cb['JQsrQY']=_0x1b570f,a0_0x21cb['oIRsrh']={},a0_0x21cb['ODRzEL']=!![];}const _0x1e4d02=_0x28b0ae[0x0],_0xd40c1a=_0xc20d2e+_0x1e4d02,_0x57da86=a0_0x21cb['oIRsrh'][_0xd40c1a];return!_0x57da86?(_0x21cb37=a0_0x21cb['JQsrQY'](_0x21cb37),a0_0x21cb['oIRsrh'][_0xd40c1a]=_0x21cb37):_0x21cb37=_0x57da86,_0x21cb37;}import{existsSync,mkdirSync,readFileSync,writeFileSync}from'fs';import{dirname,join}from'path';import{homedir}from'os';import{createLogger}from'./logger.js';const log=createLogger('SessionManager'),DEFAULT_STORAGE_PATH=join(homedir(),'.config',a0_0x469c4e(0x137),'clawmessenger-sessions.json');export class SessionManager{constructor(_0x456c5f,_0x3ec545){const _0x2afa99=a0_0x469c4e,_0x46f513={'tzYsr':_0x2afa99(0x13b),'cEdAZ':function(_0xcb51ef,_0x26cf90){return _0xcb51ef||_0x26cf90;}},_0x20ffc8=_0x46f513['tzYsr'][_0x2afa99(0x155)]('|');let _0x3dd96a=0x0;while(!![]){switch(_0x20ffc8[_0x3dd96a++]){case'0':this[_0x2afa99(0x158)]=_0x46f513['cEdAZ'](_0x3ec545,DEFAULT_STORAGE_PATH);continue;case'1':this[_0x2afa99(0x177)]();continue;case'2':this['creating']=new Map();continue;case'3':this['sessions']=new Map();continue;case'4':this['opencode']=_0x456c5f;continue;}break;}}async[a0_0x469c4e(0x122)](_0x5dd1dd,_0x2d2b3f){const _0x3231b1=a0_0x469c4e,_0x352f6a={'PwGSG':function(_0x3cc1e7,_0x54b8a4){return _0x3cc1e7===_0x54b8a4;},'YkTiC':_0x3231b1(0x168),'fBhat':_0x3231b1(0x160),'iyDjY':_0x3231b1(0x136),'NMNGe':_0x3231b1(0x117),'PelGM':_0x3231b1(0x153),'GQLNF':function(_0x50f613,_0xfa985){return _0x50f613!==_0xfa985;},'eTDjj':_0x3231b1(0x147),'FEzLP':_0x3231b1(0x118),'ICRcf':_0x3231b1(0x146),'XsxmA':'SxYfD'},_0x27896e=this['sessions'][_0x3231b1(0x127)](_0x5dd1dd);if(_0x27896e){if(_0x352f6a[_0x3231b1(0x115)](_0x352f6a['NMNGe'],_0x352f6a['PelGM'])){for(const [_0x1af544,_0x2619b5]of this[_0x3231b1(0x162)][_0x3231b1(0x161)]()){if(_0x352f6a['PwGSG'](_0x2619b5['id'],_0x431495))return _0x1af544;}return _0x287cc4;}else try{if(_0x352f6a[_0x3231b1(0x13e)](_0x352f6a[_0x3231b1(0x17c)],_0x352f6a[_0x3231b1(0x174)])){const _0x588b5b=await this[_0x3231b1(0x137)][_0x3231b1(0x167)](_0x27896e['id']);if(_0x588b5b)return _0x27896e;this['sessions'][_0x3231b1(0x11a)](_0x5dd1dd);}else _0x4587ca[_0x3231b1(0x15a)]({'err':_0x21167c},_0x3231b1(0x16f));}catch(_0x38adc2){return log[_0x3231b1(0x133)]({'chatId':_0x5dd1dd,'sessionId':_0x27896e['id'],'err':_0x38adc2},_0x352f6a[_0x3231b1(0x149)]),_0x27896e;}}const _0x5b35f4=this[_0x3231b1(0x11c)][_0x3231b1(0x127)](_0x5dd1dd);if(_0x5b35f4)return _0x5b35f4;const _0x1a2078=((async()=>{const _0x1ccd6e=_0x3231b1,_0x128ef2=await this[_0x1ccd6e(0x137)][_0x1ccd6e(0x125)](_0x2d2b3f||'ClawMessenger\x20'+_0x5dd1dd),_0x4792a8={'id':_0x128ef2['id'],'chatId':_0x5dd1dd,'status':_0x352f6a[_0x1ccd6e(0x13f)]};return this[_0x1ccd6e(0x162)]['set'](_0x5dd1dd,_0x4792a8),log['info']({'chatId':_0x5dd1dd,'sessionId':_0x128ef2['id']},_0x352f6a[_0x1ccd6e(0x11e)]),this[_0x1ccd6e(0x15c)](),_0x4792a8;})());this[_0x3231b1(0x11c)][_0x3231b1(0x120)](_0x5dd1dd,_0x1a2078);try{if(_0x352f6a[_0x3231b1(0x115)](_0x3231b1(0x16a),_0x352f6a['ICRcf']))this[_0x3231b1(0x162)][_0x3231b1(0x120)](_0x2e29fd[_0x3231b1(0x151)],{'id':_0x122ca4['sessionId'],'chatId':_0x9268e8[_0x3231b1(0x151)],'status':_0x352f6a[_0x3231b1(0x13f)]});else return await _0x1a2078;}finally{if(_0x352f6a[_0x3231b1(0x154)]==='SxYfD')this[_0x3231b1(0x11c)][_0x3231b1(0x11a)](_0x5dd1dd);else return _0x5a7c34[_0x3231b1(0x133)]({'chatId':_0x2513a4,'sessionId':_0x143dcb['id'],'err':_0x47fd6d},_0x352f6a[_0x3231b1(0x149)]),_0x4da295;}}[a0_0x469c4e(0x156)](_0x2ae8aa){const _0x36c557=a0_0x469c4e;return this[_0x36c557(0x162)]['get'](_0x2ae8aa);}[a0_0x469c4e(0x15e)](_0x5719c0){const _0x41e968=a0_0x469c4e,_0x2be3ef={'WqmPr':_0x41e968(0x12f),'rMRdS':_0x41e968(0x176),'AYfuv':'vnAwJ','FZvnZ':function(_0x5921fc,_0x1ba776){return _0x5921fc===_0x1ba776;}};for(const [,_0x2c9c0b]of this[_0x41e968(0x162)][_0x41e968(0x161)]()){if(_0x2be3ef[_0x41e968(0x175)]!==_0x2be3ef['AYfuv']){if(_0x2be3ef[_0x41e968(0x13c)](_0x2c9c0b['id'],_0x5719c0))return _0x2c9c0b;}else _0x34b519['status']=_0x201a53,_0x266de9[_0x41e968(0x179)]({'chatId':_0x41b600,'status':_0x307721},_0x2be3ef[_0x41e968(0x150)]);}return undefined;}[a0_0x469c4e(0x141)](_0x4cdd8b){const _0x43b884=a0_0x469c4e,_0x503a14={'cmTYK':function(_0x4a0261,_0x4cd4a8){return _0x4a0261===_0x4cd4a8;}};for(const [_0x3dda1e,_0x2986b7]of this[_0x43b884(0x162)]['entries']()){if(_0x503a14[_0x43b884(0x114)](_0x2986b7['id'],_0x4cdd8b))return _0x3dda1e;}return undefined;}[a0_0x469c4e(0x128)](_0x548bbf,_0x5444b5){const _0xf32a89=a0_0x469c4e,_0x16492a={'qWOUI':_0xf32a89(0x12f)},_0x47bf25=this[_0xf32a89(0x162)]['get'](_0x548bbf);_0x47bf25&&(_0x47bf25['status']=_0x5444b5,log['info']({'chatId':_0x548bbf,'status':_0x5444b5},_0x16492a[_0xf32a89(0x11f)]));}[a0_0x469c4e(0x14a)](_0xaa087c,_0x3890a3){const _0x33b039=a0_0x469c4e,_0xc5f5f1={'QsBhu':_0x33b039(0x14b)},_0xf563c9=this[_0x33b039(0x162)][_0x33b039(0x127)](_0xaa087c);_0xf563c9&&(_0xf563c9[_0x33b039(0x14d)]={..._0xf563c9[_0x33b039(0x14d)],..._0x3890a3},log[_0x33b039(0x179)]({'chatId':_0xaa087c,'extraKeys':Object[_0x33b039(0x178)](_0x3890a3)},_0xc5f5f1[_0x33b039(0x142)]),this[_0x33b039(0x15c)]());}[a0_0x469c4e(0x16b)](_0x1ac470){const _0x3cc5e6=a0_0x469c4e;this['sessions'][_0x3cc5e6(0x11a)](_0x1ac470),this[_0x3cc5e6(0x15c)]();}[a0_0x469c4e(0x172)](){const _0x7dfd=a0_0x469c4e;return Array[_0x7dfd(0x126)](this['sessions'][_0x7dfd(0x12b)]());}async[a0_0x469c4e(0x14e)](){const _0x8e81f=a0_0x469c4e,_0x204571={'AxFxh':function(_0x59214b,_0x2220df){return _0x59214b(_0x2220df);},'FDqzQ':function(_0x2d423e,_0x5f15b3){return _0x2d423e!==_0x5f15b3;},'CWfKp':_0x8e81f(0x131),'hRqHg':function(_0x3d75fc,_0x487130){return _0x3d75fc(_0x487130);}};this[_0x8e81f(0x138)]&&(_0x204571[_0x8e81f(0x15f)](_0x204571['CWfKp'],_0x8e81f(0x131))?(this['saveTimer']&&(_0x204571[_0x8e81f(0x171)](_0xc26d49,this[_0x8e81f(0x138)]),this[_0x8e81f(0x138)]=_0x1d31f6),this[_0x8e81f(0x11b)]()):(_0x204571[_0x8e81f(0x11d)](clearTimeout,this[_0x8e81f(0x138)]),this[_0x8e81f(0x138)]=undefined)),this['saveNow']();}[a0_0x469c4e(0x177)](){const _0xdf168c=a0_0x469c4e,_0x24174a={'GBvoD':_0xdf168c(0x166),'NLKbT':function(_0xc3c40f,_0x464c69){return _0xc3c40f||_0x464c69;},'jRrwA':_0xdf168c(0x14b),'fnycx':function(_0x2804fd,_0xafca5b){return _0x2804fd===_0xafca5b;},'qIrkb':_0xdf168c(0x164),'kPhDH':function(_0x107544,_0x1eef1f,_0x46f414){return _0x107544(_0x1eef1f,_0x46f414);},'Eccwj':'utf-8','WXdzo':function(_0x687983,_0x159e25){return _0x687983!==_0x159e25;},'QOpCi':'BwySu','TOBPV':_0xdf168c(0x144),'hqMqD':_0xdf168c(0x168),'VKkfI':'Restored\x20sessions','uzbgD':_0xdf168c(0x16c)};if(!existsSync(this[_0xdf168c(0x158)]))return;try{if(_0x24174a[_0xdf168c(0x15b)](_0x24174a[_0xdf168c(0x119)],_0x24174a[_0xdf168c(0x119)])){const _0x57490f=JSON[_0xdf168c(0x12d)](_0x24174a[_0xdf168c(0x163)](readFileSync,this[_0xdf168c(0x158)],_0x24174a[_0xdf168c(0x12a)]));if(_0x57490f[_0xdf168c(0x169)]===0x1&&Array[_0xdf168c(0x130)](_0x57490f['sessions'])){if(_0x24174a['WXdzo'](_0x24174a[_0xdf168c(0x170)],_0x24174a[_0xdf168c(0x170)]))return _0x195820[_0xdf168c(0x126)](this[_0xdf168c(0x162)]['values']());else{for(const _0x2881eb of _0x57490f[_0xdf168c(0x162)]){if(_0x24174a[_0xdf168c(0x16d)](_0x24174a[_0xdf168c(0x165)],_0x24174a[_0xdf168c(0x165)])){const _0x1858f9=_0x24174a[_0xdf168c(0x121)]['split']('|');let _0xfd9d4c=0x0;while(!![]){switch(_0x1858f9[_0xfd9d4c++]){case'0':this[_0xdf168c(0x11c)]=new _0x2cf465();continue;case'1':this['storagePath']=pPwdOL[_0xdf168c(0x129)](_0x289688,_0x8041ad);continue;case'2':this['restore']();continue;case'3':this[_0xdf168c(0x137)]=_0x5a5964;continue;case'4':this['sessions']=new _0x57d788();continue;}break;}}else this[_0xdf168c(0x162)][_0xdf168c(0x120)](_0x2881eb[_0xdf168c(0x151)],{'id':_0x2881eb['sessionId'],'chatId':_0x2881eb['chatId'],'status':_0x24174a[_0xdf168c(0x134)]});}log['info']({'count':_0x57490f['sessions'][_0xdf168c(0x15d)]},_0x24174a[_0xdf168c(0x132)]);}}}else _0x271580[_0xdf168c(0x14d)]={..._0x2043c6[_0xdf168c(0x14d)],..._0x903e22},_0x495695['info']({'chatId':_0x541fe5,'extraKeys':_0x457032[_0xdf168c(0x178)](_0x385485)},pPwdOL[_0xdf168c(0x148)]),this['scheduleSave']();}catch(_0x2c9fdb){_0x24174a[_0xdf168c(0x159)]===_0x24174a[_0xdf168c(0x159)]?log[_0xdf168c(0x133)]({'err':_0x2c9fdb},'Failed\x20to\x20restore\x20sessions'):(this[_0xdf168c(0x162)][_0xdf168c(0x11a)](_0x52e0f3),this[_0xdf168c(0x15c)]());}}[a0_0x469c4e(0x15c)](){const _0x1f6459=a0_0x469c4e,_0x10bf49={'PyolA':function(_0x436f57,_0x5cb9ff){return _0x436f57(_0x5cb9ff);}};if(this['saveTimer'])_0x10bf49[_0x1f6459(0x124)](clearTimeout,this[_0x1f6459(0x138)]);this[_0x1f6459(0x138)]=setTimeout(()=>this[_0x1f6459(0x11b)](),0x1f4);}[a0_0x469c4e(0x11b)](){const _0xc6419f=a0_0x469c4e,_0x2b6bd2={'shuOg':function(_0x356abc,_0xcbcc7){return _0x356abc(_0xcbcc7);},'KSXVF':function(_0x420017,_0x8c9e15,_0x27d943){return _0x420017(_0x8c9e15,_0x27d943);},'DpxOx':function(_0x159278,_0x12ac63){return _0x159278(_0x12ac63);},'lzppc':function(_0xe751dd,_0x3050d0){return _0xe751dd===_0x3050d0;},'qqCHL':_0xc6419f(0x173)},_0x156465={'version':0x1,'sessions':Array[_0xc6419f(0x126)](this['sessions'][_0xc6419f(0x161)]())[_0xc6419f(0x12e)](([_0x10e677,_0x26745e])=>({'chatId':_0x10e677,'sessionId':_0x26745e['id']}))};try{const _0x5eec44=_0x2b6bd2[_0xc6419f(0x14c)](dirname,this[_0xc6419f(0x158)]);if(!_0x2b6bd2[_0xc6419f(0x116)](existsSync,_0x5eec44))mkdirSync(_0x5eec44,{'recursive':!![]});writeFileSync(this[_0xc6419f(0x158)],JSON[_0xc6419f(0x14f)](_0x156465,null,0x2));}catch(_0x1931b2){if(_0x2b6bd2[_0xc6419f(0x16e)](_0xc6419f(0x173),_0x2b6bd2[_0xc6419f(0x13d)]))log[_0xc6419f(0x15a)]({'err':_0x1931b2},_0xc6419f(0x16f));else{if(this['saveTimer'])pfxoOQ[_0xc6419f(0x14c)](_0x554157,this[_0xc6419f(0x138)]);this['saveTimer']=pfxoOQ[_0xc6419f(0x17b)](_0x7dd4dc,()=>this[_0xc6419f(0x11b)](),0x1f4);}}}}function a0_0x28b0(){const _0x3082b3=['C2vZC2LVBKv4Axn0CW','AwrSzq','DMvYC2LVBG','yMHVBwW','zgvSzxrLu2vZC2LVBG','yuHSAfm','v1HKEM8','BhPWCgm','rMfPBgvKihrVihnHDMuGC2vZC2LVBNm','uu9Wq2K','qxHgEgG','z2v0qwXSu2vZC2LVBNm','ChrRq2q','rKv6tfa','CK1szfm','uwT5zKC','CMvZDg9Yzq','A2v5CW','Aw5MBW','mZC3mZC2qMv1sMfk','s1nyvKy','zvreAMO','y21uwuS','uhDhu0C','rhb4t3G','v3bNDhq','wKHUsei','CuLYA2i','zgvSzxrL','C2f2zu5VDW','y3jLyxrPBMC','AfjXsgC','zKjOyxq','CvDpvuK','C2v0','r0j2B0q','z2v0t3jdCMvHDgvtzxnZAw9U','mJK5mdqYmu5TquXlsG','uhLVBee','y3jLyxrLu2vZC2LVBG','zNjVBq','z2v0','DxbKyxrLu3rHDhvZ','tKXlyLq','rwnJD2O','DMfSDwvZ','mJq4nJHPzeTjBwS','CgfYC2u','BwfW','u2vZC2LVBIbZDgf0DxmGDxbKyxrLza','AxnbCNjHEq','rxfjCxa','vKTRzKK','D2fYBG','AhfnCuq','mZzhtKfiv08','C2vZC2LVBKv4Axn0CYbJAgvJAYbMywLSzwqSigTLzxbPBMCGzxHPC3rPBMCGC2vZC2LVBG','B3bLBMnVzgu','C2f2zvrPBwvY','ndmYrLHMu1jp','mJuZqM1uCMvi','m3WYFdr8mhWX','rLP2BLO','CxfdseW','r1fmtKy','wwTuAum','ndm3nJm0C3v3EgXh','z2v0q2HHDeLKqNLtzxnZAw9U','uxncAhu','mZm4nJz5sfzmt1O','CgTkvKS','mtqXmJrMB2zSvfC','C2zituK','r1vLyMq','ALjYD0e','AxLeALK','DxbKyxrLrxH0CMe','u2vZC2LVBIbLEhrYysb1CgrHDgvK','C2H1t2C','zxH0CMe','y2XLyw51Ca','C3rYAw5NAwz5','v3fTuhi','y2HHDeLK','mZi0ntyWD3bhvNfO','DKDdtwm','whn4Bue','C3bSAxq','z2v0u2vZC2LVBG','mZbzAvz1uMG','C3rVCMfNzvbHDgG','DxPIz0q','zxjYB3i','zM55y3G','C2nOzwr1BgvtyxzL','BgvUz3rO','z2v0u2vZC2LVBKj5t3bLBMnVzgvjza','rKrXELe','q3jLyxrLzcbUzxCGC2vZC2LVBG','zw50CMLLCW','C2vZC2LVBNm','A1bOreG','EMzcu3C','ve9cufy','nhWWFdn8mxWY'];a0_0x28b0=function(){return _0x3082b3;};return a0_0x28b0();}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export interface ClawMessengerConfig {
|
|
|
5
5
|
accountId: string;
|
|
6
6
|
nodeName?: string;
|
|
7
7
|
serverUrl: string;
|
|
8
|
-
opencodeUrl
|
|
8
|
+
opencodeUrl?: string;
|
|
9
9
|
opencodeDir: string;
|
|
10
10
|
opencodePassword?: string;
|
|
11
11
|
apiBaseUrl?: string;
|
|
@@ -75,4 +75,3 @@ export interface HookConfig {
|
|
|
75
75
|
onSessionIdle?: string;
|
|
76
76
|
}
|
|
77
77
|
export type { PluginInput, PluginHooks, Plugin } from '../types/plugin.js';
|
|
78
|
-
//# sourceMappingURL=types.d.ts.map
|