@elizaos/agent 2.0.0-alpha.437 → 2.0.0-alpha.438
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/apps/app-lifeops/src/lifeops/discord-browser-scraper.d.ts +1 -0
- package/apps/app-lifeops/src/lifeops/discord-browser-scraper.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/discord-browser-scraper.js +57 -21
- package/apps/app-lifeops/src/lifeops/imessage-bridge.d.ts +1 -0
- package/apps/app-lifeops/src/lifeops/imessage-bridge.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/imessage-bridge.js +41 -36
- package/apps/app-lifeops/src/lifeops/service-mixin-signal.js +7 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-telegram.js +8 -1
- package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts +4 -4
- package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/signal-local-client.js +40 -15
- package/apps/app-lifeops/src/lifeops/telegram-auth.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/telegram-auth.js +21 -1
- package/apps/app-lifeops/src/lifeops/telegram-local-client.d.ts +3 -0
- package/apps/app-lifeops/src/lifeops/telegram-local-client.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/telegram-local-client.js +61 -18
- package/apps/app-lifeops/src/lifeops/whatsapp-client.d.ts +7 -0
- package/apps/app-lifeops/src/lifeops/whatsapp-client.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/whatsapp-client.js +47 -16
- package/package.json +4 -4
- package/packages/agent/src/actions/terminal.d.ts +3 -3
- package/packages/agent/src/actions/terminal.d.ts.map +1 -1
- package/packages/agent/src/actions/terminal.js +80 -157
- package/packages/shared/src/contracts/lifeops.d.ts +14 -0
- package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
- package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/save-attachment-to-clipboard.d.ts +4 -0
- package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/save-attachment-to-clipboard.d.ts.map +1 -0
- package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/save-attachment-to-clipboard.js +127 -0
- package/packages/typescript/src/features/advanced-capabilities/clipboard/index.d.ts +2 -0
- package/packages/typescript/src/features/advanced-capabilities/clipboard/index.d.ts.map +1 -1
- package/packages/typescript/src/features/advanced-capabilities/clipboard/index.js +4 -0
- package/packages/typescript/src/runtime.d.ts.map +1 -1
- package/packages/typescript/src/runtime.js +10 -2
- package/packages/typescript/src/services/message.d.ts +7 -0
- package/packages/typescript/src/services/message.d.ts.map +1 -1
- package/packages/typescript/src/services/message.js +22 -18
|
@@ -68,6 +68,7 @@ export interface DiscordMessageSearchResult {
|
|
|
68
68
|
id: string | null;
|
|
69
69
|
content: string;
|
|
70
70
|
authorName: string | null;
|
|
71
|
+
guildId: string | null;
|
|
71
72
|
channelId: string | null;
|
|
72
73
|
timestamp: string | null;
|
|
73
74
|
/** Delivery status indicator derived from DOM state (partial). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord-browser-scraper.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/discord-browser-scraper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"discord-browser-scraper.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/discord-browser-scraper.ts"],"names":[],"mappings":"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"}
|
|
@@ -343,17 +343,50 @@ export async function probeDiscordTab(tabId, env = process.env) {
|
|
|
343
343
|
dmInbox: result.dmInbox ?? emptyDiscordDmInboxProbe(),
|
|
344
344
|
};
|
|
345
345
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
346
|
+
function normalizeDiscordDeliveryStatus(value) {
|
|
347
|
+
return value === "sent" ||
|
|
348
|
+
value === "sending" ||
|
|
349
|
+
value === "failed" ||
|
|
350
|
+
value === "unknown"
|
|
351
|
+
? value
|
|
352
|
+
: null;
|
|
353
|
+
}
|
|
354
|
+
function normalizeDiscordResultText(value) {
|
|
355
|
+
return typeof value === "string" ? normalizeDiscordText(value) : null;
|
|
356
|
+
}
|
|
357
|
+
function normalizeDiscordMessageSearchResults(value, operation) {
|
|
358
|
+
if (!Array.isArray(value)) {
|
|
359
|
+
throw new Error(`Discord ${operation} returned an invalid result.`);
|
|
360
|
+
}
|
|
361
|
+
return value.map((item, index) => {
|
|
362
|
+
if (!item || typeof item !== "object") {
|
|
363
|
+
throw new Error(`Discord ${operation} result ${index} is invalid.`);
|
|
364
|
+
}
|
|
365
|
+
const record = item;
|
|
366
|
+
if (typeof record.content !== "string") {
|
|
367
|
+
throw new Error(`Discord ${operation} result ${index} is missing content.`);
|
|
368
|
+
}
|
|
369
|
+
const deliveryStatus = normalizeDiscordDeliveryStatus(record.deliveryStatus);
|
|
370
|
+
if (!deliveryStatus) {
|
|
371
|
+
throw new Error(`Discord ${operation} result ${index} has invalid delivery status.`);
|
|
372
|
+
}
|
|
373
|
+
return {
|
|
374
|
+
id: normalizeDiscordResultText(record.id),
|
|
375
|
+
content: record.content,
|
|
376
|
+
authorName: normalizeDiscordResultText(record.authorName),
|
|
377
|
+
guildId: normalizeDiscordResultText(record.guildId),
|
|
378
|
+
channelId: normalizeDiscordResultText(record.channelId),
|
|
379
|
+
timestamp: normalizeDiscordResultText(record.timestamp),
|
|
380
|
+
deliveryStatus,
|
|
381
|
+
};
|
|
382
|
+
});
|
|
383
|
+
}
|
|
354
384
|
function buildDiscordSearchResultsScript() {
|
|
355
385
|
return `(() => {
|
|
356
386
|
const results = [];
|
|
387
|
+
const routeMatch = window.location.href.match(/\\/channels\\/([^/?#]+)\\/([^/?#]+)/);
|
|
388
|
+
const guildId = routeMatch && routeMatch[1] !== "@me" ? routeMatch[1] : null;
|
|
389
|
+
const channelId = routeMatch ? routeMatch[2] : null;
|
|
357
390
|
const containers = Array.from(
|
|
358
391
|
document.querySelectorAll(
|
|
359
392
|
'[class*="searchResultMessage"], [class*="search-result-message"]'
|
|
@@ -383,11 +416,7 @@ function buildDiscordSearchResultsScript() {
|
|
|
383
416
|
? timestampEl.getAttribute('datetime')
|
|
384
417
|
: null;
|
|
385
418
|
|
|
386
|
-
|
|
387
|
-
const channelMatch = href.match(/\\/channels\\/@me\\/([\\d]+)/);
|
|
388
|
-
const channelId = channelMatch ? channelMatch[1] : null;
|
|
389
|
-
|
|
390
|
-
results.push({ id, content, authorName, channelId, timestamp, deliveryStatus: "unknown" });
|
|
419
|
+
results.push({ id, content, authorName, guildId, channelId, timestamp, deliveryStatus: "unknown" });
|
|
391
420
|
}
|
|
392
421
|
return results;
|
|
393
422
|
})();`;
|
|
@@ -443,13 +472,19 @@ export async function searchDiscordMessages(args) {
|
|
|
443
472
|
return { injected: false, error: String(e) };
|
|
444
473
|
}
|
|
445
474
|
})();`;
|
|
446
|
-
await evaluateBrowserWorkspaceTab({ id: args.tabId, script: searchScript }, env);
|
|
475
|
+
const injected = await evaluateBrowserWorkspaceTab({ id: args.tabId, script: searchScript }, env);
|
|
476
|
+
if (!injected ||
|
|
477
|
+
typeof injected !== "object" ||
|
|
478
|
+
injected.injected !== true) {
|
|
479
|
+
const error = typeof injected?.error === "string"
|
|
480
|
+
? ` ${injected.error}`
|
|
481
|
+
: "";
|
|
482
|
+
throw new Error(`Discord search injection failed.${error}`);
|
|
483
|
+
}
|
|
447
484
|
// Wait for Discord's search results panel to render.
|
|
448
485
|
await new Promise((resolve) => setTimeout(resolve, 1200));
|
|
449
486
|
const raw = (await evaluateBrowserWorkspaceTab({ id: args.tabId, script: buildDiscordSearchResultsScript() }, env));
|
|
450
|
-
|
|
451
|
-
return [];
|
|
452
|
-
return raw.filter((item) => typeof item === "object" && item !== null);
|
|
487
|
+
return normalizeDiscordMessageSearchResults(raw, "search");
|
|
453
488
|
}
|
|
454
489
|
// ---------------------------------------------------------------------------
|
|
455
490
|
// Delivery status capture via DOM eval
|
|
@@ -468,6 +503,9 @@ export async function captureDiscordDeliveryStatus(args) {
|
|
|
468
503
|
const env = args.env ?? process.env;
|
|
469
504
|
const script = `(() => {
|
|
470
505
|
const results = [];
|
|
506
|
+
const routeMatch = window.location.href.match(/\\/channels\\/([^/?#]+)\\/([^/?#]+)/);
|
|
507
|
+
const guildId = routeMatch && routeMatch[1] !== "@me" ? routeMatch[1] : null;
|
|
508
|
+
const channelId = routeMatch ? routeMatch[2] : null;
|
|
471
509
|
const messages = Array.from(
|
|
472
510
|
document.querySelectorAll('[class*="message-"] [id^="message-content-"], [id^="chat-messages-"] li')
|
|
473
511
|
);
|
|
@@ -489,12 +527,10 @@ export async function captureDiscordDeliveryStatus(args) {
|
|
|
489
527
|
!!el.querySelector('[aria-label*="failed" i]');
|
|
490
528
|
const deliveryStatus = isFailed ? 'failed' : isSending ? 'sending' : 'sent';
|
|
491
529
|
|
|
492
|
-
results.push({ id, content, authorName: null, channelId
|
|
530
|
+
results.push({ id, content, authorName: null, guildId, channelId, timestamp, deliveryStatus });
|
|
493
531
|
}
|
|
494
532
|
return results;
|
|
495
533
|
})();`;
|
|
496
534
|
const raw = (await evaluateBrowserWorkspaceTab({ id: args.tabId, script }, env));
|
|
497
|
-
|
|
498
|
-
return [];
|
|
499
|
-
return raw.filter((item) => typeof item === "object" && item !== null);
|
|
535
|
+
return normalizeDiscordMessageSearchResults(raw, "delivery status capture");
|
|
500
536
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imessage-bridge.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/imessage-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,KAAK,GAAG,aAAa,GAAG,cAAc,GAAG,MAAM,CAAC;IAC1D,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO;CAMvE;AA0DD,wBAAsB,qBAAqB,CACzC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAgD1B;AAED,kEAAkE;AAClE,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CA4ChC;
|
|
1
|
+
{"version":3,"file":"imessage-bridge.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/imessage-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -252,6 +252,15 @@ function deriveBlueBubblesSendMode(info) {
|
|
|
252
252
|
? "private-api"
|
|
253
253
|
: "apple-script";
|
|
254
254
|
}
|
|
255
|
+
function directRecipientFromBlueBubblesChatGuid(chatGuid) {
|
|
256
|
+
const directPrefix = ";-;";
|
|
257
|
+
const directMarkerIndex = chatGuid?.indexOf(directPrefix) ?? -1;
|
|
258
|
+
if (!chatGuid || directMarkerIndex < 0) {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
const recipient = chatGuid.slice(directMarkerIndex + directPrefix.length);
|
|
262
|
+
return recipient.trim().length > 0 ? recipient : undefined;
|
|
263
|
+
}
|
|
255
264
|
function buildBlueBubblesUrl(config, pathname, search) {
|
|
256
265
|
if (!config.bluebubblesUrl) {
|
|
257
266
|
throw new IMessageBridgeError("BlueBubbles URL not configured", "bluebubbles");
|
|
@@ -320,10 +329,12 @@ function normalizeBlueBubblesChat(raw) {
|
|
|
320
329
|
function normalizeBlueBubblesMessage(raw) {
|
|
321
330
|
const firstChat = raw.chats?.[0];
|
|
322
331
|
const chatId = raw.chatGuid ?? firstChat?.guid;
|
|
332
|
+
const handle = raw.handle?.address?.trim() ?? "";
|
|
333
|
+
const outboundRecipient = handle || directRecipientFromBlueBubblesChatGuid(chatId);
|
|
323
334
|
return {
|
|
324
335
|
id: raw.guid,
|
|
325
|
-
fromHandle: raw.
|
|
326
|
-
toHandles: [],
|
|
336
|
+
fromHandle: raw.isFromMe ? "me" : handle,
|
|
337
|
+
toHandles: raw.isFromMe && outboundRecipient ? [outboundRecipient] : [],
|
|
327
338
|
text: raw.text ?? "",
|
|
328
339
|
isFromMe: Boolean(raw.isFromMe),
|
|
329
340
|
sentAt: typeof raw.dateCreated === "number"
|
|
@@ -350,6 +361,9 @@ async function sendViaBlueBubbles(req, config) {
|
|
|
350
361
|
method,
|
|
351
362
|
}),
|
|
352
363
|
});
|
|
364
|
+
if (!result.guid?.trim()) {
|
|
365
|
+
throw new IMessageBridgeError("BlueBubbles /api/v1/message/text returned message without guid", "bluebubbles");
|
|
366
|
+
}
|
|
353
367
|
return { ok: true, messageId: result.guid };
|
|
354
368
|
}
|
|
355
369
|
async function readViaBlueBubbles(opts, config) {
|
|
@@ -506,46 +520,37 @@ export async function getIMessageDeliveryStatus(messageIds, config) {
|
|
|
506
520
|
isRead: null,
|
|
507
521
|
isDelivered: null,
|
|
508
522
|
errorDescription: null,
|
|
523
|
+
checkedAt: new Date().toISOString(),
|
|
509
524
|
}));
|
|
510
525
|
}
|
|
511
526
|
const results = [];
|
|
512
527
|
for (const id of ids) {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
status = "delivered_read";
|
|
523
|
-
}
|
|
524
|
-
else if (isDelivered) {
|
|
525
|
-
status = "delivered";
|
|
526
|
-
}
|
|
527
|
-
else {
|
|
528
|
-
status = "sent";
|
|
529
|
-
}
|
|
530
|
-
results.push({
|
|
531
|
-
messageId: id,
|
|
532
|
-
status,
|
|
533
|
-
isRead,
|
|
534
|
-
isDelivered,
|
|
535
|
-
errorDescription: typeof detail.errorDescription === "string"
|
|
536
|
-
? detail.errorDescription
|
|
537
|
-
: null,
|
|
538
|
-
});
|
|
528
|
+
const detail = await bluebubblesRequest(config ?? {}, `/api/v1/message/${encodeURIComponent(id)}`, { method: "GET" });
|
|
529
|
+
const isRead = typeof detail.isRead === "boolean" ? detail.isRead : null;
|
|
530
|
+
const isDelivered = typeof detail.isDelivered === "boolean" ? detail.isDelivered : null;
|
|
531
|
+
let status;
|
|
532
|
+
if (detail.error) {
|
|
533
|
+
status = "failed";
|
|
534
|
+
}
|
|
535
|
+
else if (isRead) {
|
|
536
|
+
status = "delivered_read";
|
|
539
537
|
}
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
messageId: id,
|
|
543
|
-
status: "unknown",
|
|
544
|
-
isRead: null,
|
|
545
|
-
isDelivered: null,
|
|
546
|
-
errorDescription: null,
|
|
547
|
-
});
|
|
538
|
+
else if (isDelivered) {
|
|
539
|
+
status = "delivered";
|
|
548
540
|
}
|
|
541
|
+
else {
|
|
542
|
+
status = "sent";
|
|
543
|
+
}
|
|
544
|
+
results.push({
|
|
545
|
+
messageId: id,
|
|
546
|
+
status,
|
|
547
|
+
isRead,
|
|
548
|
+
isDelivered,
|
|
549
|
+
errorDescription: typeof detail.errorDescription === "string"
|
|
550
|
+
? detail.errorDescription
|
|
551
|
+
: null,
|
|
552
|
+
checkedAt: new Date().toISOString(),
|
|
553
|
+
});
|
|
549
554
|
}
|
|
550
555
|
return results;
|
|
551
556
|
}
|
|
@@ -262,7 +262,14 @@ export function withSignal(Base) {
|
|
|
262
262
|
id: entry.id,
|
|
263
263
|
roomId: entry.roomId,
|
|
264
264
|
channelId: entry.channelId,
|
|
265
|
+
threadId: entry.channelId || entry.roomId,
|
|
266
|
+
roomName: entry.roomName,
|
|
265
267
|
speakerName: entry.speakerName,
|
|
268
|
+
senderNumber: entry.isGroup ? null : entry.channelId || null,
|
|
269
|
+
senderUuid: null,
|
|
270
|
+
sourceDevice: null,
|
|
271
|
+
groupId: entry.isGroup ? entry.channelId || null : null,
|
|
272
|
+
groupType: null,
|
|
266
273
|
text: entry.text,
|
|
267
274
|
createdAt: entry.createdAt,
|
|
268
275
|
isInbound: !entry.isFromAgent,
|
|
@@ -5,6 +5,10 @@ import { fail, requireNonEmptyString, } from "./service-normalize.js";
|
|
|
5
5
|
import { normalizeOptionalConnectorSide, } from "./service-normalize-connector.js";
|
|
6
6
|
import { buildTelegramTokenRef, cancelTelegramAuth, deleteStoredTelegramToken, findPendingTelegramAuthSession, inferRetryableTelegramAuthState, hasManagedTelegramCredentials, readStoredTelegramToken, startTelegramAuth as startTelegramAuthFlow, submitTelegramAuthCode, submitTelegramAuthPassword, } from "./telegram-auth.js";
|
|
7
7
|
import { getTelegramReadReceipts, searchTelegramMessages, sendTelegramAccountMessage, telegramLocalSessionAvailable, verifyTelegramLocalConnector, } from "./telegram-local-client.js";
|
|
8
|
+
function isLifeOpsTelegramCapability(value) {
|
|
9
|
+
return (typeof value === "string" &&
|
|
10
|
+
LIFEOPS_TELEGRAM_CAPABILITIES.includes(value));
|
|
11
|
+
}
|
|
8
12
|
/** @internal */
|
|
9
13
|
export function withTelegram(Base) {
|
|
10
14
|
class LifeOpsTelegramServiceMixin extends Base {
|
|
@@ -28,7 +32,7 @@ export function withTelegram(Base) {
|
|
|
28
32
|
? "connected"
|
|
29
33
|
: retryableAuthState ?? pendingSession?.state ?? "idle";
|
|
30
34
|
const capabilities = grant
|
|
31
|
-
?
|
|
35
|
+
? grant.capabilities.filter(isLifeOpsTelegramCapability)
|
|
32
36
|
: [];
|
|
33
37
|
return {
|
|
34
38
|
provider: "telegram",
|
|
@@ -177,6 +181,9 @@ export function withTelegram(Base) {
|
|
|
177
181
|
if (!status.connected || !status.grant?.tokenRef) {
|
|
178
182
|
fail(409, "Telegram connector is not connected.");
|
|
179
183
|
}
|
|
184
|
+
if (!status.grantedCapabilities.includes("telegram.read")) {
|
|
185
|
+
fail(403, "Telegram connector is missing read permission.");
|
|
186
|
+
}
|
|
180
187
|
if (!status.grantedCapabilities.includes("telegram.send")) {
|
|
181
188
|
fail(403, "Telegram connector is missing send permission.");
|
|
182
189
|
}
|
|
@@ -52,10 +52,10 @@ export declare function readSignalLocalClientConfigFromEnv(env?: NodeJS.ProcessE
|
|
|
52
52
|
* on delivery. Callers are responsible for persisting returned messages before
|
|
53
53
|
* calling again.
|
|
54
54
|
*
|
|
55
|
-
* Returns an empty array when
|
|
56
|
-
* -
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* Returns an empty array when no messages are pending or when envelopes contain
|
|
56
|
+
* no user-visible text. Transport and protocol failures throw
|
|
57
|
+
* `SignalLocalClientError` so callers do not confuse degraded Signal with an
|
|
58
|
+
* empty inbox.
|
|
59
59
|
*/
|
|
60
60
|
export declare function readSignalInboundMessages(config: SignalLocalClientConfig, limit?: number): Promise<LifeOpsSignalInboundMessage[]>;
|
|
61
61
|
//# sourceMappingURL=signal-local-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-local-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/signal-local-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;gBAG9D,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;KAC9C;CAOJ;AAMD;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,uBAAuB,GAAG,IAAI,CAKhC;
|
|
1
|
+
{"version":3,"file":"signal-local-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/signal-local-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;gBAG9D,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;KAC9C;CAOJ;AAMD;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,uBAAuB,GAAG,IAAI,CAKhC;AA0CD;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,uBAAuB,EAC/B,KAAK,SAAwB,GAC5B,OAAO,CAAC,2BAA2B,EAAE,CAAC,CA+HxC"}
|
|
@@ -23,6 +23,9 @@ export function readSignalLocalClientConfigFromEnv(env = process.env) {
|
|
|
23
23
|
return null;
|
|
24
24
|
return { httpUrl, accountNumber };
|
|
25
25
|
}
|
|
26
|
+
function isSignalCliReceiveResponse(value) {
|
|
27
|
+
return Boolean(value && typeof value === "object");
|
|
28
|
+
}
|
|
26
29
|
// ---------------------------------------------------------------------------
|
|
27
30
|
// Public API
|
|
28
31
|
// ---------------------------------------------------------------------------
|
|
@@ -33,10 +36,10 @@ export function readSignalLocalClientConfigFromEnv(env = process.env) {
|
|
|
33
36
|
* on delivery. Callers are responsible for persisting returned messages before
|
|
34
37
|
* calling again.
|
|
35
38
|
*
|
|
36
|
-
* Returns an empty array when
|
|
37
|
-
* -
|
|
38
|
-
*
|
|
39
|
-
*
|
|
39
|
+
* Returns an empty array when no messages are pending or when envelopes contain
|
|
40
|
+
* no user-visible text. Transport and protocol failures throw
|
|
41
|
+
* `SignalLocalClientError` so callers do not confuse degraded Signal with an
|
|
42
|
+
* empty inbox.
|
|
40
43
|
*/
|
|
41
44
|
export async function readSignalInboundMessages(config, limit = DEFAULT_RECEIVE_LIMIT) {
|
|
42
45
|
const clampedLimit = Math.min(Math.max(1, Math.floor(limit)), MAX_RECEIVE_LIMIT);
|
|
@@ -58,20 +61,25 @@ export async function readSignalInboundMessages(config, limit = DEFAULT_RECEIVE_
|
|
|
58
61
|
operation: "signal_local_receive",
|
|
59
62
|
httpUrl: config.httpUrl,
|
|
60
63
|
}, `[lifeops] Signal local client network failure: ${message}`);
|
|
61
|
-
|
|
64
|
+
throw new SignalLocalClientError(`Signal local receive failed: ${message}`, { status: null, category: "network" });
|
|
62
65
|
}
|
|
63
66
|
if (!response.ok) {
|
|
67
|
+
const category = response.status === 401 || response.status === 403
|
|
68
|
+
? "auth"
|
|
69
|
+
: response.status === 404
|
|
70
|
+
? "not_found"
|
|
71
|
+
: "unknown";
|
|
64
72
|
logger.warn({
|
|
65
73
|
boundary: "lifeops",
|
|
66
74
|
integration: "signal",
|
|
67
75
|
operation: "signal_local_receive",
|
|
68
76
|
statusCode: response.status,
|
|
69
77
|
}, `[lifeops] Signal local client HTTP ${response.status}`);
|
|
70
|
-
|
|
78
|
+
throw new SignalLocalClientError(`Signal local receive failed with HTTP ${response.status}`, { status: response.status, category });
|
|
71
79
|
}
|
|
72
80
|
let body;
|
|
73
81
|
try {
|
|
74
|
-
body =
|
|
82
|
+
body = await response.json();
|
|
75
83
|
}
|
|
76
84
|
catch {
|
|
77
85
|
logger.warn({
|
|
@@ -79,12 +87,16 @@ export async function readSignalInboundMessages(config, limit = DEFAULT_RECEIVE_
|
|
|
79
87
|
integration: "signal",
|
|
80
88
|
operation: "signal_local_receive",
|
|
81
89
|
}, "[lifeops] Signal local client returned non-JSON body");
|
|
82
|
-
|
|
90
|
+
throw new SignalLocalClientError("Signal local receive returned non-JSON", {
|
|
91
|
+
status: response.status,
|
|
92
|
+
category: "unknown",
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (!Array.isArray(body)) {
|
|
96
|
+
throw new SignalLocalClientError("Signal local receive returned an unexpected payload", { status: response.status, category: "unknown" });
|
|
83
97
|
}
|
|
84
|
-
if (!Array.isArray(body))
|
|
85
|
-
return [];
|
|
86
98
|
const messages = [];
|
|
87
|
-
for (const item of body.slice(0, clampedLimit)) {
|
|
99
|
+
for (const item of body.filter(isSignalCliReceiveResponse).slice(0, clampedLimit)) {
|
|
88
100
|
const envelope = item.envelope;
|
|
89
101
|
if (!envelope)
|
|
90
102
|
continue;
|
|
@@ -92,11 +104,17 @@ export async function readSignalInboundMessages(config, limit = DEFAULT_RECEIVE_
|
|
|
92
104
|
const dataMessage = envelope.dataMessage;
|
|
93
105
|
if (!dataMessage?.message)
|
|
94
106
|
continue;
|
|
95
|
-
const senderNumber = envelope.sourceNumber ?? envelope.source ??
|
|
96
|
-
const
|
|
107
|
+
const senderNumber = envelope.sourceNumber ?? envelope.source ?? null;
|
|
108
|
+
const senderUuid = envelope.sourceUuid ?? null;
|
|
109
|
+
const speakerName = envelope.sourceName ?? senderNumber ?? "Unknown Signal sender";
|
|
97
110
|
const isGroup = Boolean(dataMessage.groupInfo?.groupId);
|
|
98
111
|
const groupId = dataMessage.groupInfo?.groupId ?? null;
|
|
99
|
-
const
|
|
112
|
+
const groupType = dataMessage.groupInfo?.type ?? null;
|
|
113
|
+
const channelId = isGroup && groupId ? groupId : (senderNumber ?? senderUuid ?? "");
|
|
114
|
+
if (!channelId)
|
|
115
|
+
continue;
|
|
116
|
+
const senderKey = senderNumber ?? senderUuid ?? channelId;
|
|
117
|
+
const roomName = isGroup && groupId ? `Signal group ${groupId}` : speakerName;
|
|
100
118
|
// Stable ID: timestamp + sender — signal-cli does not assign message IDs in
|
|
101
119
|
// the receive response, so we derive one from the envelope timestamp.
|
|
102
120
|
const timestampMs = typeof dataMessage.timestamp === "number"
|
|
@@ -104,12 +122,19 @@ export async function readSignalInboundMessages(config, limit = DEFAULT_RECEIVE_
|
|
|
104
122
|
: typeof envelope.timestamp === "number"
|
|
105
123
|
? envelope.timestamp
|
|
106
124
|
: Date.now();
|
|
107
|
-
const id = `signal:${
|
|
125
|
+
const id = `signal:${senderKey}:${timestampMs}`;
|
|
108
126
|
messages.push({
|
|
109
127
|
id,
|
|
110
128
|
roomId: channelId,
|
|
111
129
|
channelId,
|
|
130
|
+
threadId: channelId,
|
|
131
|
+
roomName,
|
|
112
132
|
speakerName,
|
|
133
|
+
senderNumber,
|
|
134
|
+
senderUuid,
|
|
135
|
+
sourceDevice: typeof envelope.sourceDevice === "number" ? envelope.sourceDevice : null,
|
|
136
|
+
groupId,
|
|
137
|
+
groupType,
|
|
113
138
|
text: dataMessage.message,
|
|
114
139
|
createdAt: timestampMs,
|
|
115
140
|
isInbound: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram-auth.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/telegram-auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"telegram-auth.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/telegram-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -519,13 +519,33 @@ export function findPendingTelegramAuthSession(agentId, side) {
|
|
|
519
519
|
// ---------------------------------------------------------------------------
|
|
520
520
|
// Credential management
|
|
521
521
|
// ---------------------------------------------------------------------------
|
|
522
|
+
function isStoredTelegramConnectorToken(value) {
|
|
523
|
+
if (!value || typeof value !== "object") {
|
|
524
|
+
return false;
|
|
525
|
+
}
|
|
526
|
+
const token = value;
|
|
527
|
+
return (token.provider === "telegram" &&
|
|
528
|
+
typeof token.agentId === "string" &&
|
|
529
|
+
(token.side === "owner" || token.side === "agent") &&
|
|
530
|
+
typeof token.sessionString === "string" &&
|
|
531
|
+
typeof token.apiId === "number" &&
|
|
532
|
+
typeof token.apiHash === "string" &&
|
|
533
|
+
typeof token.phone === "string" &&
|
|
534
|
+
Boolean(token.identity) &&
|
|
535
|
+
typeof token.identity === "object" &&
|
|
536
|
+
typeof token.identity.id === "string" &&
|
|
537
|
+
typeof token.identity.username === "string" &&
|
|
538
|
+
typeof token.identity.firstName === "string" &&
|
|
539
|
+
typeof token.createdAt === "string" &&
|
|
540
|
+
typeof token.updatedAt === "string");
|
|
541
|
+
}
|
|
522
542
|
export function readStoredTelegramToken(tokenRef) {
|
|
523
543
|
const filePath = resolveTokenPath(tokenRef);
|
|
524
544
|
if (!fs.existsSync(filePath)) {
|
|
525
545
|
return null;
|
|
526
546
|
}
|
|
527
547
|
const parsed = JSON.parse(readTelegramStoragePayload(filePath));
|
|
528
|
-
if (!parsed
|
|
548
|
+
if (!isStoredTelegramConnectorToken(parsed)) {
|
|
529
549
|
return null;
|
|
530
550
|
}
|
|
531
551
|
return parsed;
|
|
@@ -40,8 +40,11 @@ export type TelegramDeliveryStatus = "delivered_read" | "sent" | "unknown";
|
|
|
40
40
|
export interface TelegramMessageSearchResult {
|
|
41
41
|
id: string | null;
|
|
42
42
|
dialogId: string | null;
|
|
43
|
+
threadId: string | null;
|
|
43
44
|
dialogTitle: string | null;
|
|
44
45
|
username: string | null;
|
|
46
|
+
peerId: string | null;
|
|
47
|
+
senderId: string | null;
|
|
45
48
|
content: string;
|
|
46
49
|
timestamp: string | null;
|
|
47
50
|
outgoing: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram-local-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/telegram-local-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"telegram-local-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/telegram-local-client.ts"],"names":[],"mappings":"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"}
|