clawconnect-agent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/.env.example +41 -0
  2. package/README.md +259 -0
  3. package/README.zh-CN.md +329 -0
  4. package/dist/commands/backup-manager.d.ts +21 -0
  5. package/dist/commands/backup-manager.js +346 -0
  6. package/dist/commands/backup-manager.js.map +1 -0
  7. package/dist/commands/install.d.ts +6 -0
  8. package/dist/commands/install.js +107 -0
  9. package/dist/commands/install.js.map +1 -0
  10. package/dist/commands/local-handlers.d.ts +2 -0
  11. package/dist/commands/local-handlers.js +375 -0
  12. package/dist/commands/local-handlers.js.map +1 -0
  13. package/dist/commands/local-runtime.d.ts +36 -0
  14. package/dist/commands/local-runtime.js +445 -0
  15. package/dist/commands/local-runtime.js.map +1 -0
  16. package/dist/commands/pair.d.ts +7 -0
  17. package/dist/commands/pair.js +100 -0
  18. package/dist/commands/pair.js.map +1 -0
  19. package/dist/commands/provider-config.d.ts +35 -0
  20. package/dist/commands/provider-config.js +291 -0
  21. package/dist/commands/provider-config.js.map +1 -0
  22. package/dist/commands/provider-handlers.d.ts +2 -0
  23. package/dist/commands/provider-handlers.js +216 -0
  24. package/dist/commands/provider-handlers.js.map +1 -0
  25. package/dist/commands/provider-registry.d.ts +19 -0
  26. package/dist/commands/provider-registry.js +120 -0
  27. package/dist/commands/provider-registry.js.map +1 -0
  28. package/dist/commands/run.d.ts +1 -0
  29. package/dist/commands/run.js +35 -0
  30. package/dist/commands/run.js.map +1 -0
  31. package/dist/commands/send-file-utils.d.ts +6 -0
  32. package/dist/commands/send-file-utils.js +94 -0
  33. package/dist/commands/send-file-utils.js.map +1 -0
  34. package/dist/commands/send-file.d.ts +41 -0
  35. package/dist/commands/send-file.js +492 -0
  36. package/dist/commands/send-file.js.map +1 -0
  37. package/dist/commands/set-token.d.ts +1 -0
  38. package/dist/commands/set-token.js +43 -0
  39. package/dist/commands/set-token.js.map +1 -0
  40. package/dist/commands/status.d.ts +1 -0
  41. package/dist/commands/status.js +135 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/voice-reply.d.ts +39 -0
  44. package/dist/commands/voice-reply.js +329 -0
  45. package/dist/commands/voice-reply.js.map +1 -0
  46. package/dist/config/config.d.ts +32 -0
  47. package/dist/config/config.js +103 -0
  48. package/dist/config/config.js.map +1 -0
  49. package/dist/config/env.d.ts +16 -0
  50. package/dist/config/env.js +138 -0
  51. package/dist/config/env.js.map +1 -0
  52. package/dist/i18n/index.d.ts +1 -0
  53. package/dist/i18n/index.js +147 -0
  54. package/dist/i18n/index.js.map +1 -0
  55. package/dist/index.d.ts +2 -0
  56. package/dist/index.js +117 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/platform/service-manager-common.d.ts +26 -0
  59. package/dist/platform/service-manager-common.js +51 -0
  60. package/dist/platform/service-manager-common.js.map +1 -0
  61. package/dist/platform/service-manager-linux.d.ts +6 -0
  62. package/dist/platform/service-manager-linux.js +229 -0
  63. package/dist/platform/service-manager-linux.js.map +1 -0
  64. package/dist/platform/service-manager.d.ts +16 -0
  65. package/dist/platform/service-manager.js +165 -0
  66. package/dist/platform/service-manager.js.map +1 -0
  67. package/dist/relay/attachment-staging.d.ts +12 -0
  68. package/dist/relay/attachment-staging.js +116 -0
  69. package/dist/relay/attachment-staging.js.map +1 -0
  70. package/dist/relay/chat-history.d.ts +29 -0
  71. package/dist/relay/chat-history.js +69 -0
  72. package/dist/relay/chat-history.js.map +1 -0
  73. package/dist/relay/chat-payload.d.ts +6 -0
  74. package/dist/relay/chat-payload.js +170 -0
  75. package/dist/relay/chat-payload.js.map +1 -0
  76. package/dist/relay/chat-send-attachments.d.ts +4 -0
  77. package/dist/relay/chat-send-attachments.js +47 -0
  78. package/dist/relay/chat-send-attachments.js.map +1 -0
  79. package/dist/relay/gateway-client.d.ts +41 -0
  80. package/dist/relay/gateway-client.js +288 -0
  81. package/dist/relay/gateway-client.js.map +1 -0
  82. package/dist/relay/office-payload.d.ts +19 -0
  83. package/dist/relay/office-payload.js +205 -0
  84. package/dist/relay/office-payload.js.map +1 -0
  85. package/dist/relay/reconnect.d.ts +14 -0
  86. package/dist/relay/reconnect.js +27 -0
  87. package/dist/relay/reconnect.js.map +1 -0
  88. package/dist/relay/relay-manager.d.ts +36 -0
  89. package/dist/relay/relay-manager.js +619 -0
  90. package/dist/relay/relay-manager.js.map +1 -0
  91. package/dist/relay/session-context.d.ts +19 -0
  92. package/dist/relay/session-context.js +323 -0
  93. package/dist/relay/session-context.js.map +1 -0
  94. package/dist/relay/slash-command-catalog.d.ts +8 -0
  95. package/dist/relay/slash-command-catalog.generated.d.ts +226 -0
  96. package/dist/relay/slash-command-catalog.generated.js +275 -0
  97. package/dist/relay/slash-command-catalog.generated.js.map +1 -0
  98. package/dist/relay/slash-command-catalog.js +3 -0
  99. package/dist/relay/slash-command-catalog.js.map +1 -0
  100. package/dist/relay/voice-reply-preference.d.ts +25 -0
  101. package/dist/relay/voice-reply-preference.js +103 -0
  102. package/dist/relay/voice-reply-preference.js.map +1 -0
  103. package/package.json +50 -0
@@ -0,0 +1,492 @@
1
+ import { createReadStream } from "fs";
2
+ import { readdir, readFile, stat, open } from "fs/promises";
3
+ import { basename, join, resolve } from "path";
4
+ import { createHash } from "crypto";
5
+ import { homedir } from "os";
6
+ import { readConfig } from "../config/config.js";
7
+ import { DEFAULT_FILE_CHUNK_SIZE, calculateChunkCount, formatFileSize, inferMimeType, normalizeSessionKey, toRelayHttpBase, } from "./send-file-utils.js";
8
+ class RelayRequestError extends Error {
9
+ statusCode;
10
+ responseBody;
11
+ constructor(statusCode, responseBody, requestLabel) {
12
+ super(`${requestLabel} failed (${statusCode}): ${responseBody}`);
13
+ this.statusCode = statusCode;
14
+ this.responseBody = responseBody;
15
+ this.name = "RelayRequestError";
16
+ }
17
+ }
18
+ const JSON_HEADERS = {
19
+ "Content-Type": "application/json",
20
+ Accept: "application/json",
21
+ };
22
+ export async function sendFileCommand(opts, deps = {}) {
23
+ const loadConfig = deps.loadConfig ?? readConfig;
24
+ const fetchImpl = deps.fetchImpl ?? fetch;
25
+ const stdout = deps.stdout ?? process.stdout;
26
+ const stderr = deps.stderr ?? process.stderr;
27
+ const config = loadConfig();
28
+ const relayServerUrl = config.relayServerUrl?.trim();
29
+ const relaySecret = config.relaySecret?.trim();
30
+ const gatewayId = (opts.gateway?.trim() || config.gatewayId?.trim() || "").trim();
31
+ if (!relayServerUrl) {
32
+ throw new Error("relay_server_url_required");
33
+ }
34
+ if (!relaySecret) {
35
+ throw new Error("relay_secret_required");
36
+ }
37
+ if (!gatewayId) {
38
+ throw new Error("gateway_id_required");
39
+ }
40
+ const clientCreatedAt = new Date().toISOString();
41
+ const sessionKey = await resolveTargetSessionKey(opts.session, deps.sessionStoreRoot);
42
+ const absolutePath = resolve(opts.filePath);
43
+ let fileStat;
44
+ try {
45
+ fileStat = await stat(absolutePath);
46
+ }
47
+ catch {
48
+ throw new Error(`file_not_found: ${absolutePath}`);
49
+ }
50
+ if (!fileStat.isFile()) {
51
+ throw new Error(`not_a_regular_file: ${absolutePath}`);
52
+ }
53
+ const fileName = basename(absolutePath);
54
+ const mimeType = inferMimeType(fileName);
55
+ const sizeBytes = Math.max(0, Math.floor(fileStat.size));
56
+ const imageDimensions = mimeType.startsWith("image/")
57
+ ? await readImageDimensions(absolutePath, sizeBytes)
58
+ : undefined;
59
+ const sha256 = await computeSha256(absolutePath);
60
+ const relayBaseUrl = toRelayHttpBase(relayServerUrl);
61
+ const uploadInitUrl = new URL(`/api/host/gateways/${encodeURIComponent(gatewayId)}/files/init`, relayBaseUrl).toString();
62
+ writeLog(stderr, `[send-file] preparing ${fileName} (${formatFileSize(sizeBytes)}) for gateway ${gatewayId} session ${sessionKey}`);
63
+ const init = await retryOperation("init upload", () => requestJson(fetchImpl, uploadInitUrl, {
64
+ method: "POST",
65
+ headers: JSON_HEADERS,
66
+ body: JSON.stringify({
67
+ secret: relaySecret,
68
+ sessionKey,
69
+ fileName,
70
+ mimeType,
71
+ sizeBytes,
72
+ durationMs: opts.durationMs,
73
+ imageWidth: imageDimensions?.width,
74
+ imageHeight: imageDimensions?.height,
75
+ sha256,
76
+ senderDisplayName: config.displayName,
77
+ transcript: typeof opts.transcript === "string" ? opts.transcript.trim() : undefined,
78
+ clientCreatedAt,
79
+ }),
80
+ }, "init upload"));
81
+ const chunkSize = Math.max(1, Math.floor(init.chunkSize || DEFAULT_FILE_CHUNK_SIZE));
82
+ const totalChunks = calculateChunkCount(sizeBytes, chunkSize);
83
+ const uploadUrl = init.uploadUrl.trim();
84
+ if (!uploadUrl) {
85
+ throw new Error("upload_url_missing");
86
+ }
87
+ const completeUrl = new URL(uploadUrl.replace(/\/chunks$/, "/complete"), relayBaseUrl).toString();
88
+ const handle = await open(absolutePath, "r");
89
+ let uploadedBytes = 0;
90
+ try {
91
+ for (let chunkIndex = 0; chunkIndex < totalChunks; chunkIndex += 1) {
92
+ const start = chunkIndex * chunkSize;
93
+ const length = Math.max(0, Math.min(chunkSize, sizeBytes - start));
94
+ const chunk = await readChunk(handle, start, length);
95
+ const chunkUrl = new URL(`${uploadUrl}/${chunkIndex}`, relayBaseUrl).toString();
96
+ await retryOperation(`upload chunk ${chunkIndex + 1}/${totalChunks}`, () => requestJson(fetchImpl, chunkUrl, {
97
+ method: "PUT",
98
+ headers: {
99
+ "Content-Type": "application/octet-stream",
100
+ Accept: "application/json",
101
+ },
102
+ body: chunk,
103
+ }, `upload chunk ${chunkIndex + 1}/${totalChunks}`));
104
+ uploadedBytes += chunk.length;
105
+ writeLog(stderr, `[send-file] uploaded chunk ${chunkIndex + 1}/${totalChunks} (${formatFileSize(uploadedBytes)}/${formatFileSize(sizeBytes)})`);
106
+ }
107
+ }
108
+ finally {
109
+ await handle.close();
110
+ }
111
+ const complete = await retryOperation("complete upload", () => requestJson(fetchImpl, completeUrl, {
112
+ method: "POST",
113
+ headers: JSON_HEADERS,
114
+ body: JSON.stringify({ totalChunks }),
115
+ }, "complete upload"));
116
+ if (!complete.ok) {
117
+ throw new Error("upload_not_completed");
118
+ }
119
+ const payload = complete.payload;
120
+ const downloadPath = (payload.downloadUrl?.trim() || payload.downloadPath.trim()).trim();
121
+ const downloadUrl = new URL(downloadPath, relayBaseUrl).toString();
122
+ const result = {
123
+ filePath: opts.filePath,
124
+ absolutePath,
125
+ gatewayId: payload.gatewayId || gatewayId,
126
+ sessionKey: payload.sessionKey || sessionKey,
127
+ fileId: payload.fileId,
128
+ uploadId: init.uploadId,
129
+ fileName: payload.fileName,
130
+ mimeType: payload.mimeType,
131
+ sizeBytes: payload.sizeBytes,
132
+ durationMs: payload.durationMs,
133
+ imageWidth: payload.imageWidth,
134
+ imageHeight: payload.imageHeight,
135
+ sha256: payload.sha256,
136
+ chunkSize,
137
+ totalChunks,
138
+ expiresAt: payload.expiresAt,
139
+ downloadPath,
140
+ downloadUrl,
141
+ senderDisplayName: payload.senderDisplayName,
142
+ status: payload.status,
143
+ createdAt: payload.createdAt,
144
+ updatedAt: payload.updatedAt,
145
+ };
146
+ if (opts.json) {
147
+ stdout.write(`${JSON.stringify(result, null, 2)}\n`);
148
+ }
149
+ else {
150
+ writeLog(stdout, `[send-file] uploaded ${result.fileName}`);
151
+ writeLog(stdout, ` gateway: ${result.gatewayId}`);
152
+ writeLog(stdout, ` session: ${result.sessionKey}`);
153
+ writeLog(stdout, ` file id: ${result.fileId}`);
154
+ writeLog(stdout, ` size: ${formatFileSize(result.sizeBytes)}`);
155
+ writeLog(stdout, ` download: ${result.downloadUrl}`);
156
+ writeLog(stdout, ` expires: ${result.expiresAt}`);
157
+ }
158
+ return result;
159
+ }
160
+ async function computeSha256(filePath) {
161
+ const hash = createHash("sha256");
162
+ const stream = createReadStream(filePath);
163
+ try {
164
+ for await (const chunk of stream) {
165
+ hash.update(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
166
+ }
167
+ }
168
+ catch (error) {
169
+ throw new Error(`sha256_failed: ${error instanceof Error ? error.message : String(error)}`);
170
+ }
171
+ return hash.digest("hex");
172
+ }
173
+ async function readImageDimensions(filePath, fileSize) {
174
+ const maxBytes = Math.min(Math.max(0, Math.floor(fileSize)), 256 * 1024);
175
+ if (maxBytes === 0) {
176
+ return undefined;
177
+ }
178
+ const handle = await open(filePath, "r");
179
+ try {
180
+ const buffer = Buffer.allocUnsafe(maxBytes);
181
+ let bytesRead = 0;
182
+ while (bytesRead < maxBytes) {
183
+ const { bytesRead: chunkRead } = await handle.read(buffer, bytesRead, maxBytes - bytesRead, bytesRead);
184
+ if (chunkRead <= 0) {
185
+ break;
186
+ }
187
+ bytesRead += chunkRead;
188
+ const dimensions = parseImageDimensions(buffer.subarray(0, bytesRead));
189
+ if (dimensions) {
190
+ return dimensions;
191
+ }
192
+ }
193
+ return parseImageDimensions(buffer.subarray(0, bytesRead));
194
+ }
195
+ catch {
196
+ return undefined;
197
+ }
198
+ finally {
199
+ await handle.close();
200
+ }
201
+ }
202
+ function parseImageDimensions(buffer) {
203
+ return (parsePngDimensions(buffer) ??
204
+ parseGifDimensions(buffer) ??
205
+ parseWebpDimensions(buffer) ??
206
+ parseJpegDimensions(buffer) ??
207
+ parseBmpDimensions(buffer));
208
+ }
209
+ function parsePngDimensions(buffer) {
210
+ if (buffer.length < 24) {
211
+ return undefined;
212
+ }
213
+ if (buffer.readUInt32BE(0) !== 0x89504e47 || buffer.readUInt32BE(4) !== 0x0d0a1a0a) {
214
+ return undefined;
215
+ }
216
+ if (buffer.readUInt32BE(12) !== 0x49484452) {
217
+ return undefined;
218
+ }
219
+ const width = buffer.readUInt32BE(16);
220
+ const height = buffer.readUInt32BE(20);
221
+ return width > 0 && height > 0 ? { width, height } : undefined;
222
+ }
223
+ function parseGifDimensions(buffer) {
224
+ if (buffer.length < 10) {
225
+ return undefined;
226
+ }
227
+ const signature = buffer.toString("ascii", 0, 6);
228
+ if (signature !== "GIF87a" && signature !== "GIF89a") {
229
+ return undefined;
230
+ }
231
+ const width = buffer.readUInt16LE(6);
232
+ const height = buffer.readUInt16LE(8);
233
+ return width > 0 && height > 0 ? { width, height } : undefined;
234
+ }
235
+ function parseWebpDimensions(buffer) {
236
+ if (buffer.length < 30) {
237
+ return undefined;
238
+ }
239
+ if (buffer.toString("ascii", 0, 4) !== "RIFF" || buffer.toString("ascii", 8, 12) !== "WEBP") {
240
+ return undefined;
241
+ }
242
+ const chunkType = buffer.toString("ascii", 12, 16);
243
+ if (chunkType === "VP8X") {
244
+ const width = readUInt24LE(buffer, 24) + 1;
245
+ const height = readUInt24LE(buffer, 27) + 1;
246
+ return width > 0 && height > 0 ? { width, height } : undefined;
247
+ }
248
+ if (chunkType === "VP8L") {
249
+ if (buffer.length < 25 || buffer[20] !== 0x2f) {
250
+ return undefined;
251
+ }
252
+ const packed = buffer.readUInt32LE(21);
253
+ const width = (packed & 0x3fff) + 1;
254
+ const height = ((packed >> 14) & 0x3fff) + 1;
255
+ return width > 0 && height > 0 ? { width, height } : undefined;
256
+ }
257
+ if (chunkType === "VP8 ") {
258
+ if (buffer.length < 30 || buffer[23] !== 0x9d || buffer[24] !== 0x01 || buffer[25] !== 0x2a) {
259
+ return undefined;
260
+ }
261
+ const width = buffer.readUInt16LE(26) & 0x3fff;
262
+ const height = buffer.readUInt16LE(28) & 0x3fff;
263
+ return width > 0 && height > 0 ? { width, height } : undefined;
264
+ }
265
+ return undefined;
266
+ }
267
+ function parseBmpDimensions(buffer) {
268
+ if (buffer.length < 26 || buffer.toString("ascii", 0, 2) !== "BM") {
269
+ return undefined;
270
+ }
271
+ const width = buffer.readInt32LE(18);
272
+ const height = Math.abs(buffer.readInt32LE(22));
273
+ return width > 0 && height > 0 ? { width, height } : undefined;
274
+ }
275
+ function parseJpegDimensions(buffer) {
276
+ if (buffer.length < 4 || buffer[0] !== 0xff || buffer[1] !== 0xd8) {
277
+ return undefined;
278
+ }
279
+ let offset = 2;
280
+ while (offset + 3 < buffer.length) {
281
+ if (buffer[offset] !== 0xff) {
282
+ offset += 1;
283
+ continue;
284
+ }
285
+ let markerOffset = offset + 1;
286
+ while (markerOffset < buffer.length && buffer[markerOffset] === 0xff) {
287
+ markerOffset += 1;
288
+ }
289
+ if (markerOffset >= buffer.length) {
290
+ return undefined;
291
+ }
292
+ const marker = buffer[markerOffset];
293
+ if (marker === 0xda || marker === 0xd9) {
294
+ return undefined;
295
+ }
296
+ if (marker === 0x00 || (marker >= 0xd0 && marker <= 0xd7) || marker === 0x01) {
297
+ offset = markerOffset + 1;
298
+ continue;
299
+ }
300
+ if (markerOffset + 2 >= buffer.length) {
301
+ return undefined;
302
+ }
303
+ const segmentLength = buffer.readUInt16BE(markerOffset + 1);
304
+ if (segmentLength < 2) {
305
+ return undefined;
306
+ }
307
+ const segmentEnd = markerOffset + 1 + segmentLength;
308
+ if (segmentEnd > buffer.length) {
309
+ return undefined;
310
+ }
311
+ if (isStartOfFrameMarker(marker)) {
312
+ if (segmentLength < 7) {
313
+ return undefined;
314
+ }
315
+ const height = buffer.readUInt16BE(markerOffset + 4);
316
+ const width = buffer.readUInt16BE(markerOffset + 6);
317
+ return width > 0 && height > 0 ? { width, height } : undefined;
318
+ }
319
+ offset = segmentEnd;
320
+ }
321
+ return undefined;
322
+ }
323
+ function isStartOfFrameMarker(marker) {
324
+ switch (marker) {
325
+ case 0xc0:
326
+ case 0xc1:
327
+ case 0xc2:
328
+ case 0xc3:
329
+ case 0xc5:
330
+ case 0xc6:
331
+ case 0xc7:
332
+ case 0xc9:
333
+ case 0xca:
334
+ case 0xcb:
335
+ case 0xcd:
336
+ case 0xce:
337
+ case 0xcf:
338
+ return true;
339
+ default:
340
+ return false;
341
+ }
342
+ }
343
+ function readUInt24LE(buffer, offset) {
344
+ if (offset + 2 >= buffer.length) {
345
+ return 0;
346
+ }
347
+ return buffer[offset] | (buffer[offset + 1] << 8) | (buffer[offset + 2] << 16);
348
+ }
349
+ async function readChunk(handle, start, length) {
350
+ if (length <= 0) {
351
+ return Buffer.alloc(0);
352
+ }
353
+ const buffer = Buffer.allocUnsafe(length);
354
+ let offset = 0;
355
+ while (offset < length) {
356
+ const { bytesRead } = await handle.read(buffer, offset, length - offset, start + offset);
357
+ if (bytesRead <= 0) {
358
+ break;
359
+ }
360
+ offset += bytesRead;
361
+ }
362
+ return offset === length ? buffer : buffer.subarray(0, offset);
363
+ }
364
+ async function requestJson(fetchImpl, url, init, requestLabel) {
365
+ let response;
366
+ try {
367
+ response = await fetchImpl(url, init);
368
+ }
369
+ catch (error) {
370
+ throw new Error(`${requestLabel} failed: ${error instanceof Error ? error.message : String(error)}`);
371
+ }
372
+ const responseText = await response.text();
373
+ if (!response.ok) {
374
+ throw new RelayRequestError(response.status, responseText.trim() || response.statusText || "request failed", requestLabel);
375
+ }
376
+ if (!responseText.trim()) {
377
+ return {};
378
+ }
379
+ try {
380
+ return JSON.parse(responseText);
381
+ }
382
+ catch (error) {
383
+ throw new Error(`${requestLabel} returned invalid JSON: ${error instanceof Error ? error.message : String(error)}`);
384
+ }
385
+ }
386
+ async function resolveTargetSessionKey(explicitSessionKey, sessionStoreRoot) {
387
+ const trimmedExplicit = explicitSessionKey?.trim() ?? "";
388
+ if (trimmedExplicit) {
389
+ return normalizeSessionKey(trimmedExplicit);
390
+ }
391
+ const inferredSessionKey = await inferLatestSessionKeyFromStore(sessionStoreRoot ?? join(homedir(), ".openclaw"));
392
+ return normalizeSessionKey(inferredSessionKey ?? "main");
393
+ }
394
+ async function inferLatestSessionKeyFromStore(sessionStoreRoot) {
395
+ const agentsDir = join(sessionStoreRoot, "agents");
396
+ let agentEntries;
397
+ try {
398
+ agentEntries = await readdir(agentsDir, { withFileTypes: true });
399
+ }
400
+ catch {
401
+ return undefined;
402
+ }
403
+ let latestSessionKey;
404
+ let latestUpdatedAt = -1;
405
+ for (const agentEntry of agentEntries) {
406
+ if (!agentEntry.isDirectory()) {
407
+ continue;
408
+ }
409
+ const sessionsPath = join(agentsDir, agentEntry.name, "sessions", "sessions.json");
410
+ let rawStore;
411
+ try {
412
+ rawStore = await readFile(sessionsPath, "utf8");
413
+ }
414
+ catch {
415
+ continue;
416
+ }
417
+ let parsedStore;
418
+ try {
419
+ parsedStore = JSON.parse(rawStore);
420
+ }
421
+ catch {
422
+ continue;
423
+ }
424
+ if (!parsedStore || typeof parsedStore !== "object" || Array.isArray(parsedStore)) {
425
+ continue;
426
+ }
427
+ for (const [sessionKey, value] of Object.entries(parsedStore)) {
428
+ if (!sessionKey.startsWith(`agent:${agentEntry.name}:`)) {
429
+ continue;
430
+ }
431
+ const updatedAt = extractSessionUpdatedAt(value);
432
+ if (updatedAt === undefined || updatedAt <= latestUpdatedAt) {
433
+ continue;
434
+ }
435
+ latestSessionKey = sessionKey;
436
+ latestUpdatedAt = updatedAt;
437
+ }
438
+ }
439
+ return latestSessionKey;
440
+ }
441
+ function extractSessionUpdatedAt(value) {
442
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
443
+ return undefined;
444
+ }
445
+ const record = value;
446
+ const candidateValues = [record.updatedAt, record.startedAt];
447
+ for (const candidate of candidateValues) {
448
+ if (typeof candidate === "number" && Number.isFinite(candidate)) {
449
+ return candidate;
450
+ }
451
+ if (typeof candidate === "string") {
452
+ const parsed = Date.parse(candidate);
453
+ if (Number.isFinite(parsed)) {
454
+ return parsed;
455
+ }
456
+ }
457
+ }
458
+ return undefined;
459
+ }
460
+ async function retryOperation(label, operation, attempts = 3) {
461
+ for (let attempt = 1; attempt <= attempts; attempt += 1) {
462
+ try {
463
+ return await operation();
464
+ }
465
+ catch (error) {
466
+ if (attempt >= attempts) {
467
+ throw new Error(`${label} failed after ${attempts} attempts: ${error instanceof Error ? error.message : String(error)}`);
468
+ }
469
+ if (!shouldRetry(error)) {
470
+ throw error;
471
+ }
472
+ await delay(250 * attempt);
473
+ }
474
+ }
475
+ throw new Error(`${label} failed`);
476
+ }
477
+ function shouldRetry(error) {
478
+ if (error instanceof RelayRequestError) {
479
+ return error.statusCode >= 500 || error.statusCode === 408 || error.statusCode === 429;
480
+ }
481
+ if (error instanceof Error) {
482
+ return /ECONNRESET|EPIPE|ETIMEDOUT|fetch failed|socket hang up/i.test(error.message);
483
+ }
484
+ return false;
485
+ }
486
+ function delay(ms) {
487
+ return new Promise((resolve) => setTimeout(resolve, ms));
488
+ }
489
+ function writeLog(stream, message) {
490
+ stream.write(`${message}\n`);
491
+ }
492
+ //# sourceMappingURL=send-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-file.js","sourceRoot":"","sources":["../../src/commands/send-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function setTokenCommand(): Promise<void>;
@@ -0,0 +1,43 @@
1
+ import readline from "readline";
2
+ import { readConfig, writeConfig } from "../config/config.js";
3
+ import { t } from "../i18n/index.js";
4
+ export async function setTokenCommand() {
5
+ // Require pairing to be done first
6
+ let config;
7
+ try {
8
+ config = readConfig();
9
+ }
10
+ catch {
11
+ console.error(t("setToken.noPairing"));
12
+ process.exit(1);
13
+ }
14
+ // Tell the user where to find the token
15
+ console.log(t("setToken.whereToFind"));
16
+ console.log(t("setToken.option1"));
17
+ console.log(t("setToken.option2"));
18
+ console.log(t("setToken.option2cmd"));
19
+ console.log(t("setToken.option3"));
20
+ // Prompt for the token
21
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
22
+ const token = await new Promise((resolve) => {
23
+ rl.question(t("setToken.prompt"), (answer) => {
24
+ rl.close();
25
+ resolve(answer.trim());
26
+ });
27
+ });
28
+ // Save
29
+ if (token) {
30
+ config.gatewayToken = token;
31
+ delete config.gatewayPassword;
32
+ writeConfig(config);
33
+ console.log(t("setToken.saved"));
34
+ }
35
+ else {
36
+ delete config.gatewayToken;
37
+ delete config.gatewayPassword;
38
+ writeConfig(config);
39
+ console.log(t("setToken.cleared"));
40
+ }
41
+ console.log(t("setToken.restart"));
42
+ }
43
+ //# sourceMappingURL=set-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-token.js","sourceRoot":"","sources":["../../src/commands/set-token.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,mCAAmC;IACnC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wCAAwC;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEnC,uBAAuB;IACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QAClD,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;IACP,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,OAAO,MAAM,CAAC,eAAe,CAAC;QAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,YAAY,CAAC;QAC3B,OAAO,MAAM,CAAC,eAAe,CAAC;QAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function statusCommand(): void;