@pmate/cli 0.21.14 → 0.21.16
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/dist/index.js +56 -29
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15664,7 +15664,6 @@ var QuizCommandHandler = class {
|
|
|
15664
15664
|
|
|
15665
15665
|
// src/commands/CollectCommandHandler.ts
|
|
15666
15666
|
var import_playwright = require("playwright");
|
|
15667
|
-
var import_node_crypto4 = require("crypto");
|
|
15668
15667
|
|
|
15669
15668
|
// src/collectStore.ts
|
|
15670
15669
|
var import_node_crypto3 = require("crypto");
|
|
@@ -15715,27 +15714,36 @@ async function writeStoredIndex(rootDir, index) {
|
|
|
15715
15714
|
await import_node_fs11.promises.writeFile(filePath, JSON.stringify(index, null, 2) + "\n", "utf8");
|
|
15716
15715
|
}
|
|
15717
15716
|
function mergeMessages(existing, incoming) {
|
|
15718
|
-
const
|
|
15717
|
+
const seenMessageIds = new Set(
|
|
15718
|
+
existing.map((message) => normalizeMessageId(message.messageId)).filter((value) => !!value)
|
|
15719
|
+
);
|
|
15719
15720
|
const merged = [...existing];
|
|
15720
15721
|
let added = 0;
|
|
15721
15722
|
for (const message of incoming) {
|
|
15722
|
-
|
|
15723
|
+
const incomingMessageId = normalizeMessageId(message.messageId);
|
|
15724
|
+
if (incomingMessageId && seenMessageIds.has(incomingMessageId)) {
|
|
15723
15725
|
continue;
|
|
15724
15726
|
}
|
|
15725
15727
|
const upgradeIndex = merged.findIndex((current) => shouldUpgradeMessage(current, message));
|
|
15726
15728
|
if (upgradeIndex >= 0) {
|
|
15727
15729
|
merged[upgradeIndex] = message;
|
|
15728
|
-
|
|
15730
|
+
if (incomingMessageId) {
|
|
15731
|
+
seenMessageIds.add(incomingMessageId);
|
|
15732
|
+
}
|
|
15729
15733
|
continue;
|
|
15730
15734
|
}
|
|
15731
|
-
|
|
15735
|
+
if (incomingMessageId) {
|
|
15736
|
+
seenMessageIds.add(incomingMessageId);
|
|
15737
|
+
}
|
|
15732
15738
|
merged.push(message);
|
|
15733
15739
|
added += 1;
|
|
15734
15740
|
}
|
|
15735
15741
|
return { messages: merged, added };
|
|
15736
15742
|
}
|
|
15737
15743
|
function shouldUpgradeMessage(existing, incoming) {
|
|
15738
|
-
|
|
15744
|
+
const existingMessageId = normalizeMessageId(existing.messageId);
|
|
15745
|
+
const incomingMessageId = normalizeMessageId(incoming.messageId);
|
|
15746
|
+
if (existingMessageId && incomingMessageId && existingMessageId === incomingMessageId) {
|
|
15739
15747
|
return false;
|
|
15740
15748
|
}
|
|
15741
15749
|
if (existing.time && incoming.time && existing.time !== incoming.time) {
|
|
@@ -15746,6 +15754,10 @@ function shouldUpgradeMessage(existing, incoming) {
|
|
|
15746
15754
|
function normalizeMessageField(value) {
|
|
15747
15755
|
return (value ?? "").trim();
|
|
15748
15756
|
}
|
|
15757
|
+
function normalizeMessageId(value) {
|
|
15758
|
+
const normalized = (value ?? "").trim();
|
|
15759
|
+
return normalized || null;
|
|
15760
|
+
}
|
|
15749
15761
|
function joinNormalized(values) {
|
|
15750
15762
|
return values.map((value) => value.trim()).join("|");
|
|
15751
15763
|
}
|
|
@@ -15753,7 +15765,7 @@ async function readStoredMessages(rootDir, threadKey) {
|
|
|
15753
15765
|
const filePath = getThreadMessagesFilePath(rootDir, threadKey);
|
|
15754
15766
|
try {
|
|
15755
15767
|
const raw = await import_node_fs11.promises.readFile(filePath, "utf8");
|
|
15756
|
-
return raw.split("\n").map((line) => line.trim()).filter(Boolean).map((line) => JSON.parse(line));
|
|
15768
|
+
return raw.split("\n").map((line) => line.trim()).filter(Boolean).map((line) => normalizeStoredMessage(JSON.parse(line)));
|
|
15757
15769
|
} catch {
|
|
15758
15770
|
return [];
|
|
15759
15771
|
}
|
|
@@ -15776,6 +15788,17 @@ function getThreadMessagesFilePath(rootDir, threadKey) {
|
|
|
15776
15788
|
function getLegacyThreadFilePath(rootDir, threadKey) {
|
|
15777
15789
|
return import_node_path16.default.join(rootDir, "threads", `${threadKey}.json`);
|
|
15778
15790
|
}
|
|
15791
|
+
function normalizeStoredMessage(message) {
|
|
15792
|
+
return {
|
|
15793
|
+
messageId: normalizeMessageId(message.messageId),
|
|
15794
|
+
time: message.time ?? null,
|
|
15795
|
+
sender: message.sender ?? null,
|
|
15796
|
+
content: message.content ?? "",
|
|
15797
|
+
links: Array.isArray(message.links) ? message.links : [],
|
|
15798
|
+
images: Array.isArray(message.images) ? message.images : [],
|
|
15799
|
+
collectedAt: message.collectedAt
|
|
15800
|
+
};
|
|
15801
|
+
}
|
|
15779
15802
|
|
|
15780
15803
|
// src/commands/CollectCommandHandler.ts
|
|
15781
15804
|
var CollectCommandHandler = class {
|
|
@@ -15833,7 +15856,7 @@ var CollectCommandHandler = class {
|
|
|
15833
15856
|
async persistThread(rootDir, target, thread, messages2, syncedAt, existing) {
|
|
15834
15857
|
const threadKey = toThreadKey(thread.name);
|
|
15835
15858
|
const incoming = messages2.map((message) => ({
|
|
15836
|
-
|
|
15859
|
+
messageId: message.messageId,
|
|
15837
15860
|
time: message.time,
|
|
15838
15861
|
sender: message.sender,
|
|
15839
15862
|
content: message.content,
|
|
@@ -15949,7 +15972,9 @@ var CollectCommandHandler = class {
|
|
|
15949
15972
|
error: result && "reason" in result && typeof result.reason === "string" ? result.reason : "unknown error"
|
|
15950
15973
|
};
|
|
15951
15974
|
}
|
|
15952
|
-
const
|
|
15975
|
+
const seenMessageIds = new Set(
|
|
15976
|
+
existingMessages.map((message) => (message.messageId ?? "").trim()).filter((value) => !!value)
|
|
15977
|
+
);
|
|
15953
15978
|
const collected = [];
|
|
15954
15979
|
for (let i = result.messages.length - 1; i >= 0; i -= 1) {
|
|
15955
15980
|
const raw = result.messages[i];
|
|
@@ -15960,18 +15985,17 @@ var CollectCommandHandler = class {
|
|
|
15960
15985
|
const attachmentPaths = Array.isArray(raw.attachments) ? raw.attachments.map((attachment) => attachment.path ?? null).filter((value) => !!value) : [];
|
|
15961
15986
|
const message = {
|
|
15962
15987
|
index: raw.index,
|
|
15963
|
-
|
|
15988
|
+
messageId: normalizeText(raw.id ?? "") || null,
|
|
15964
15989
|
time: formatSentAt(raw.sentAt),
|
|
15965
15990
|
sender: normalizeText(raw.senderName ?? raw.source ?? "") || null,
|
|
15966
15991
|
content: contentParts.filter(Boolean).join("\n") || (attachmentPaths.length > 0 ? "[Image]" : ""),
|
|
15967
15992
|
links: [],
|
|
15968
15993
|
images: attachmentPaths
|
|
15969
15994
|
};
|
|
15970
|
-
message.hash = computeMessageHash(thread.name, message);
|
|
15971
15995
|
if (!message.content && message.images.length === 0) {
|
|
15972
15996
|
continue;
|
|
15973
15997
|
}
|
|
15974
|
-
if (
|
|
15998
|
+
if (message.messageId && seenMessageIds.has(message.messageId)) {
|
|
15975
15999
|
break;
|
|
15976
16000
|
}
|
|
15977
16001
|
collected.push(message);
|
|
@@ -16002,17 +16026,6 @@ function normalizeUnreadCount(value) {
|
|
|
16002
16026
|
const parsed = typeof value === "number" ? value : typeof value === "string" && value.trim() ? Number.parseInt(value, 10) : 0;
|
|
16003
16027
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
|
|
16004
16028
|
}
|
|
16005
|
-
function computeMessageHash(threadName, message) {
|
|
16006
|
-
const base = [
|
|
16007
|
-
normalizeText(threadName),
|
|
16008
|
-
normalizeText(message.sender ?? ""),
|
|
16009
|
-
normalizeText(message.time ?? ""),
|
|
16010
|
-
normalizeText(message.content),
|
|
16011
|
-
message.links.map(normalizeText).join("|"),
|
|
16012
|
-
message.images.map(normalizeText).join("|")
|
|
16013
|
-
].join("||");
|
|
16014
|
-
return (0, import_node_crypto4.createHash)("sha1").update(base).digest("hex").slice(0, 16);
|
|
16015
|
-
}
|
|
16016
16029
|
function buildListThreadsExpr() {
|
|
16017
16030
|
return `(function() {
|
|
16018
16031
|
try {
|
|
@@ -16085,6 +16098,19 @@ function buildListThreadsExpr() {
|
|
|
16085
16098
|
}
|
|
16086
16099
|
return null;
|
|
16087
16100
|
}
|
|
16101
|
+
function isArchived(model) {
|
|
16102
|
+
var attrs = typeof model.attributes === 'object' ? model.attributes : model || {};
|
|
16103
|
+
var candidates = [
|
|
16104
|
+
attrs.isArchived,
|
|
16105
|
+
attrs.archived,
|
|
16106
|
+
model && model.get ? model.get('isArchived') : null,
|
|
16107
|
+
model && model.get ? model.get('archived') : null,
|
|
16108
|
+
];
|
|
16109
|
+
for (var i = 0; i < candidates.length; i++) {
|
|
16110
|
+
if (candidates[i] === true) return true;
|
|
16111
|
+
}
|
|
16112
|
+
return false;
|
|
16113
|
+
}
|
|
16088
16114
|
var all = [];
|
|
16089
16115
|
if (typeof controller.getAllPrivateConversations === 'function') {
|
|
16090
16116
|
var privates = controller.getAllPrivateConversations();
|
|
@@ -16101,6 +16127,7 @@ function buildListThreadsExpr() {
|
|
|
16101
16127
|
var conversationId = normalize(model && model.get ? model.get('id') : model && model.id);
|
|
16102
16128
|
if (!conversationId || seen[conversationId]) continue;
|
|
16103
16129
|
seen[conversationId] = true;
|
|
16130
|
+
if (isArchived(model)) continue;
|
|
16104
16131
|
var name = pickName(model);
|
|
16105
16132
|
if (!name) continue;
|
|
16106
16133
|
threads.push({
|
|
@@ -16225,7 +16252,7 @@ init_sessionStore();
|
|
|
16225
16252
|
var STORE_LOG_VERSION = 1;
|
|
16226
16253
|
var LOG_KIND_TABLE = 1e4;
|
|
16227
16254
|
var LOG_KIND_MAPPING = 6003;
|
|
16228
|
-
function
|
|
16255
|
+
function createHash3() {
|
|
16229
16256
|
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
16230
16257
|
}
|
|
16231
16258
|
function createDescriptor(input) {
|
|
@@ -16364,7 +16391,7 @@ var Namespace = class {
|
|
|
16364
16391
|
},
|
|
16365
16392
|
appendRow: async (data) => {
|
|
16366
16393
|
const log = {
|
|
16367
|
-
hash:
|
|
16394
|
+
hash: createHash3(),
|
|
16368
16395
|
t: Date.now(),
|
|
16369
16396
|
kind: LOG_KIND_TABLE,
|
|
16370
16397
|
topic: descriptorToTopic(descriptor),
|
|
@@ -16376,7 +16403,7 @@ var Namespace = class {
|
|
|
16376
16403
|
updateRow: async (data) => {
|
|
16377
16404
|
const { id, ...value } = data;
|
|
16378
16405
|
const log = {
|
|
16379
|
-
hash:
|
|
16406
|
+
hash: createHash3(),
|
|
16380
16407
|
t: Date.now(),
|
|
16381
16408
|
kind: LOG_KIND_TABLE,
|
|
16382
16409
|
topic: descriptorToTopic(descriptor),
|
|
@@ -16387,7 +16414,7 @@ var Namespace = class {
|
|
|
16387
16414
|
},
|
|
16388
16415
|
deleteRow: async (id) => {
|
|
16389
16416
|
const log = {
|
|
16390
|
-
hash:
|
|
16417
|
+
hash: createHash3(),
|
|
16391
16418
|
t: Date.now(),
|
|
16392
16419
|
kind: LOG_KIND_TABLE,
|
|
16393
16420
|
topic: descriptorToTopic(descriptor),
|
|
@@ -16430,7 +16457,7 @@ var Namespace = class {
|
|
|
16430
16457
|
},
|
|
16431
16458
|
set: async (key, value) => {
|
|
16432
16459
|
const log = {
|
|
16433
|
-
hash:
|
|
16460
|
+
hash: createHash3(),
|
|
16434
16461
|
t: Date.now(),
|
|
16435
16462
|
kind: LOG_KIND_MAPPING,
|
|
16436
16463
|
topic: descriptorToTopic(descriptor),
|
|
@@ -16441,7 +16468,7 @@ var Namespace = class {
|
|
|
16441
16468
|
},
|
|
16442
16469
|
delete: async (key) => {
|
|
16443
16470
|
const log = {
|
|
16444
|
-
hash:
|
|
16471
|
+
hash: createHash3(),
|
|
16445
16472
|
t: Date.now(),
|
|
16446
16473
|
kind: LOG_KIND_MAPPING,
|
|
16447
16474
|
topic: descriptorToTopic(descriptor),
|