weflow-cli 1.5.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 (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/bin/weflow-cli-electron.cjs +59 -0
  4. package/bin/weflow-cli.ts +2311 -0
  5. package/cli.cjs +3 -0
  6. package/dist/bin/weflow-cli.d.ts +3 -0
  7. package/dist/bin/weflow-cli.d.ts.map +1 -0
  8. package/dist/bin/weflow-cli.js +2270 -0
  9. package/dist/bin/weflow-cli.js.map +1 -0
  10. package/dist/mcp-server/index.d.ts +3 -0
  11. package/dist/mcp-server/index.d.ts.map +1 -0
  12. package/dist/mcp-server/index.js +690 -0
  13. package/dist/mcp-server/index.js.map +1 -0
  14. package/dist/src/core/dbPathService.d.ts +40 -0
  15. package/dist/src/core/dbPathService.d.ts.map +1 -0
  16. package/dist/src/core/dbPathService.js +324 -0
  17. package/dist/src/core/dbPathService.js.map +1 -0
  18. package/dist/src/core/keyService.d.ts +59 -0
  19. package/dist/src/core/keyService.d.ts.map +1 -0
  20. package/dist/src/core/keyService.js +368 -0
  21. package/dist/src/core/keyService.js.map +1 -0
  22. package/dist/src/core/ntCore.d.ts +62 -0
  23. package/dist/src/core/ntCore.d.ts.map +1 -0
  24. package/dist/src/core/ntCore.js +191 -0
  25. package/dist/src/core/ntCore.js.map +1 -0
  26. package/dist/src/core/sqlcipherCore.d.ts +119 -0
  27. package/dist/src/core/sqlcipherCore.d.ts.map +1 -0
  28. package/dist/src/core/sqlcipherCore.js +693 -0
  29. package/dist/src/core/sqlcipherCore.js.map +1 -0
  30. package/dist/src/core/wcdbCore.d.ts +738 -0
  31. package/dist/src/core/wcdbCore.d.ts.map +1 -0
  32. package/dist/src/core/wcdbCore.js +4545 -0
  33. package/dist/src/core/wcdbCore.js.map +1 -0
  34. package/dist/src/core/wechatClient.d.ts +23 -0
  35. package/dist/src/core/wechatClient.d.ts.map +1 -0
  36. package/dist/src/core/wechatClient.js +166 -0
  37. package/dist/src/core/wechatClient.js.map +1 -0
  38. package/dist/src/services/chatService.d.ts +25 -0
  39. package/dist/src/services/chatService.d.ts.map +1 -0
  40. package/dist/src/services/chatService.js +291 -0
  41. package/dist/src/services/chatService.js.map +1 -0
  42. package/dist/src/services/configService.d.ts +43 -0
  43. package/dist/src/services/configService.d.ts.map +1 -0
  44. package/dist/src/services/configService.js +156 -0
  45. package/dist/src/services/configService.js.map +1 -0
  46. package/dist/src/services/exportService.d.ts +30 -0
  47. package/dist/src/services/exportService.d.ts.map +1 -0
  48. package/dist/src/services/exportService.js +273 -0
  49. package/dist/src/services/exportService.js.map +1 -0
  50. package/dist/src/services/wechat-formatter.d.ts +69 -0
  51. package/dist/src/services/wechat-formatter.d.ts.map +1 -0
  52. package/dist/src/services/wechat-formatter.js +248 -0
  53. package/dist/src/services/wechat-formatter.js.map +1 -0
  54. package/dist/src/services/wechatMessageService.d.ts +28 -0
  55. package/dist/src/services/wechatMessageService.d.ts.map +1 -0
  56. package/dist/src/services/wechatMessageService.js +341 -0
  57. package/dist/src/services/wechatMessageService.js.map +1 -0
  58. package/dist/src/services/wereadService.d.ts +206 -0
  59. package/dist/src/services/wereadService.d.ts.map +1 -0
  60. package/dist/src/services/wereadService.js +145 -0
  61. package/dist/src/services/wereadService.js.map +1 -0
  62. package/dist/src/services/whitelistService.d.ts +20 -0
  63. package/dist/src/services/whitelistService.d.ts.map +1 -0
  64. package/dist/src/services/whitelistService.js +60 -0
  65. package/dist/src/services/whitelistService.js.map +1 -0
  66. package/dist/src/types.d.ts +140 -0
  67. package/dist/src/types.d.ts.map +1 -0
  68. package/dist/src/types.js +2 -0
  69. package/dist/src/types.js.map +1 -0
  70. package/dist/src/utils/errors.d.ts +25 -0
  71. package/dist/src/utils/errors.d.ts.map +1 -0
  72. package/dist/src/utils/errors.js +43 -0
  73. package/dist/src/utils/errors.js.map +1 -0
  74. package/dist/src/utils/pathUtils.d.ts +5 -0
  75. package/dist/src/utils/pathUtils.d.ts.map +1 -0
  76. package/dist/src/utils/pathUtils.js +16 -0
  77. package/dist/src/utils/pathUtils.js.map +1 -0
  78. package/dist/src/utils/pythonRunner.d.ts +27 -0
  79. package/dist/src/utils/pythonRunner.d.ts.map +1 -0
  80. package/dist/src/utils/pythonRunner.js +62 -0
  81. package/dist/src/utils/pythonRunner.js.map +1 -0
  82. package/dist/src/utils/talkerUtils.d.ts +14 -0
  83. package/dist/src/utils/talkerUtils.d.ts.map +1 -0
  84. package/dist/src/utils/talkerUtils.js +73 -0
  85. package/dist/src/utils/talkerUtils.js.map +1 -0
  86. package/mcp-server/index.ts +757 -0
  87. package/package.json +72 -0
  88. package/resources/key/win32/x64/wx_key.dll +0 -0
  89. package/resources/wcdb/win32/x64/SDL2.dll +0 -0
  90. package/resources/wcdb/win32/x64/WCDB.dll +0 -0
  91. package/resources/wcdb/win32/x64/msvcp140.dll +0 -0
  92. package/resources/wcdb/win32/x64/msvcp140_1.dll +0 -0
  93. package/resources/wcdb/win32/x64/vcruntime140.dll +0 -0
  94. package/resources/wcdb/win32/x64/vcruntime140_1.dll +0 -0
  95. package/resources/wcdb/win32/x64/wcdb_api.dll +0 -0
  96. package/scripts/_batch_link_sources.py +73 -0
  97. package/scripts/_utils.py +531 -0
  98. package/scripts/annual_report.py +796 -0
  99. package/scripts/auto_tag.py +128 -0
  100. package/scripts/biz_daily.py +896 -0
  101. package/scripts/chat_report.py +397 -0
  102. package/scripts/chat_stats.py +702 -0
  103. package/scripts/classify_daily.py +411 -0
  104. package/scripts/compile_wiki.py +258 -0
  105. package/scripts/create_reading_notes.py +370 -0
  106. package/scripts/enrich_backlinks.py +163 -0
  107. package/scripts/export_chat_html.py +766 -0
  108. package/scripts/extract_3x_key.py +86 -0
  109. package/scripts/extract_todos.py +404 -0
  110. package/scripts/fav_server.py +392 -0
  111. package/scripts/fix_topics.py +111 -0
  112. package/scripts/generate_ai_report.py +367 -0
  113. package/scripts/generate_html.py +1372 -0
  114. package/scripts/generate_review.py +170 -0
  115. package/scripts/mcp_bridge.py +398 -0
  116. package/scripts/nt_decrypt.py +562 -0
  117. package/scripts/pipeline.py +145 -0
  118. package/scripts/promote_all.py +310 -0
  119. package/scripts/promote_ideas.py +297 -0
  120. package/scripts/rag_chat.py +191 -0
  121. package/scripts/scan_decrypt_4x.py +329 -0
  122. package/scripts/semantic_search.py +431 -0
  123. package/scripts/sync_fav.py +146 -0
  124. package/scripts/sync_weread.py +192 -0
  125. package/scripts/vault_rag.py +139 -0
  126. package/scripts/vault_search.py +141 -0
  127. package/src/core/dbPathService.ts +348 -0
  128. package/src/core/keyService.ts +409 -0
  129. package/src/core/ntCore.ts +224 -0
  130. package/src/core/sqlcipherCore.ts +764 -0
  131. package/src/core/wcdbCore.ts +4568 -0
  132. package/src/core/wechatClient.ts +204 -0
  133. package/src/lz4.d.ts +10 -0
  134. package/src/services/chatService.ts +296 -0
  135. package/src/services/configService.ts +197 -0
  136. package/src/services/exportService.ts +305 -0
  137. package/src/services/wechat-formatter.ts +348 -0
  138. package/src/services/wechatMessageService.ts +383 -0
  139. package/src/services/wereadService.ts +308 -0
  140. package/src/services/whitelistService.ts +72 -0
  141. package/src/types.ts +141 -0
  142. package/src/utils/errors.ts +42 -0
  143. package/src/utils/pathUtils.ts +16 -0
  144. package/src/utils/pythonRunner.ts +81 -0
  145. package/src/utils/talkerUtils.ts +84 -0
@@ -0,0 +1,738 @@
1
+ export declare function getLastDllInitError(): string | null;
2
+ export declare class WcdbCore {
3
+ private resourcesPath;
4
+ private userDataPath;
5
+ private logEnabled;
6
+ private lib;
7
+ private koffi;
8
+ private initialized;
9
+ private handle;
10
+ private currentPath;
11
+ private currentKey;
12
+ private currentWxid;
13
+ private currentDbStoragePath;
14
+ private wcdbInitProtection;
15
+ private wcdbInit;
16
+ private wcdbShutdown;
17
+ private wcdbOpenAccount;
18
+ private wcdbCloseAccount;
19
+ private wcdbSetMyWxid;
20
+ private wcdbFreeString;
21
+ private wcdbUpdateMessage;
22
+ private wcdbDeleteMessage;
23
+ private wcdbGetSessions;
24
+ private wcdbGetMessages;
25
+ private wcdbGetMessageCount;
26
+ private wcdbGetDisplayNames;
27
+ private wcdbGetAvatarUrls;
28
+ private wcdbGetGroupMemberCount;
29
+ private wcdbGetGroupMemberCounts;
30
+ private wcdbGetGroupMembers;
31
+ private wcdbGetGroupNicknames;
32
+ private wcdbGetMessageTables;
33
+ private wcdbGetMessageMeta;
34
+ private wcdbGetContact;
35
+ private wcdbGetContactStatus;
36
+ private wcdbGetContactTypeCounts;
37
+ private wcdbGetContactsCompact;
38
+ private wcdbGetContactAliasMap;
39
+ private wcdbGetContactFriendFlags;
40
+ private wcdbGetChatRoomExtBuffer;
41
+ private wcdbGetMessageTableStats;
42
+ private wcdbGetAggregateStats;
43
+ private wcdbGetAvailableYears;
44
+ private wcdbGetAnnualReportStats;
45
+ private wcdbGetAnnualReportExtras;
46
+ private wcdbGetDualReportStats;
47
+ private wcdbGetGroupStats;
48
+ private wcdbGetMyFootprintStats;
49
+ private wcdbGetMessageDates;
50
+ private wcdbOpenMessageCursor;
51
+ private wcdbOpenMessageCursorLite;
52
+ private wcdbFetchMessageBatch;
53
+ private wcdbCloseMessageCursor;
54
+ private wcdbGetLogs;
55
+ private wcdbExecQuery;
56
+ private wcdbListMessageDbs;
57
+ private wcdbListMediaDbs;
58
+ private wcdbGetMessageById;
59
+ private wcdbGetEmoticonCdnUrl;
60
+ private wcdbGetEmoticonCaption;
61
+ private wcdbGetEmoticonCaptionStrict;
62
+ private wcdbGetDbStatus;
63
+ private wcdbGetVoiceData;
64
+ private wcdbGetVoiceDataBatch;
65
+ private wcdbGetMediaSchemaSummary;
66
+ private wcdbGetSessionMessageCounts;
67
+ private wcdbGetSessionMessageTypeStats;
68
+ private wcdbGetSessionMessageTypeStatsBatch;
69
+ private wcdbGetSessionMessageDateCounts;
70
+ private wcdbGetSessionMessageDateCountsBatch;
71
+ private wcdbGetMessagesByType;
72
+ private wcdbScanMediaStream;
73
+ private wcdbGetHeadImageBuffers;
74
+ private wcdbSearchMessages;
75
+ private wcdbGetSnsTimeline;
76
+ private wcdbGetSnsAnnualStats;
77
+ private wcdbGetSnsUsernames;
78
+ private wcdbGetSnsExportStats;
79
+ private wcdbGetMessageTableColumns;
80
+ private wcdbListTables;
81
+ private wcdbGetTableSchema;
82
+ private wcdbExportTableSnapshot;
83
+ private wcdbImportTableSnapshot;
84
+ private wcdbImportTableSnapshotWithSchema;
85
+ private wcdbGetMessageTableTimeRange;
86
+ private wcdbResolveImageHardlink;
87
+ private wcdbResolveImageHardlinkBatch;
88
+ private wcdbResolveVideoHardlinkMd5;
89
+ private wcdbResolveVideoHardlinkMd5Batch;
90
+ private wcdbInstallMessageAntiRevokeTrigger;
91
+ private wcdbUninstallMessageAntiRevokeTrigger;
92
+ private wcdbCheckMessageAntiRevokeTrigger;
93
+ private wcdbInstallSnsBlockDeleteTrigger;
94
+ private wcdbUninstallSnsBlockDeleteTrigger;
95
+ private wcdbCheckSnsBlockDeleteTrigger;
96
+ private wcdbDeleteSnsPost;
97
+ private wcdbVerifyUser;
98
+ private wcdbStartMonitorPipe;
99
+ private wcdbStopMonitorPipe;
100
+ private wcdbGetMonitorPipeName;
101
+ private wcdbCloudInit;
102
+ private wcdbCloudReport;
103
+ private wcdbCloudStop;
104
+ private monitorPipeClient;
105
+ private monitorCallback;
106
+ private monitorReconnectTimer;
107
+ private monitorPipePath;
108
+ private avatarUrlCache;
109
+ private readonly avatarCacheTtlMs;
110
+ private imageHardlinkCache;
111
+ private videoHardlinkCache;
112
+ private readonly hardlinkCacheTtlMs;
113
+ private readonly hardlinkCacheMaxEntries;
114
+ private mediaStreamSessionCache;
115
+ private mediaStreamSessionCacheAt;
116
+ private readonly mediaStreamSessionCacheTtlMs;
117
+ private logTimer;
118
+ private lastLogTail;
119
+ private lastResolvedLogPath;
120
+ private lastCursorForceReopenAt;
121
+ private readonly cursorForceReopenCooldownMs;
122
+ setPaths(resourcesPath: string, userDataPath: string): void;
123
+ getLastInitError(): string | null;
124
+ setLogEnabled(enabled: boolean): void;
125
+ startMonitor(callback: (type: string, json: string) => void): boolean;
126
+ private connectMonitorPipe;
127
+ private scheduleReconnect;
128
+ stopMonitor(): void;
129
+ setMonitor(callback: (type: string, json: string) => void): boolean;
130
+ /**
131
+ * 获取库文件路径(跨平台)
132
+ */
133
+ private getDllPath;
134
+ private formatInitProtectionError;
135
+ private isLogEnabled;
136
+ private writeLog;
137
+ private formatSqlForLog;
138
+ private dumpDbStatus;
139
+ private runPostOpenDiagnostics;
140
+ /**
141
+ * 递归查找 session.db 文件
142
+ */
143
+ private findSessionDb;
144
+ private resolveDbStoragePath;
145
+ private findDbStorageRecursive;
146
+ private isRealDbFileName;
147
+ private resolveContactDbPath;
148
+ private pickFirstStringField;
149
+ private escapeSqlString;
150
+ private buildContactSelectSql;
151
+ private deriveContactTypeCounts;
152
+ /**
153
+ * 初始化 WCDB
154
+ */
155
+ initialize(): Promise<boolean>;
156
+ /**
157
+ * 测试数据库连接
158
+ */
159
+ testConnection(dbPath: string, hexKey: string, wxid: string): Promise<{
160
+ success: boolean;
161
+ error?: string;
162
+ sessionCount?: number;
163
+ }>;
164
+ /**
165
+ * 打印数据服务内部日志(仅在出错时调用)
166
+ */
167
+ private printLogs;
168
+ private startLogPolling;
169
+ private stopLogPolling;
170
+ private pollLogs;
171
+ private decodeJsonPtr;
172
+ private parseMessageJson;
173
+ private ensureReady;
174
+ private normalizeTimestamp;
175
+ private normalizeRange;
176
+ private makeHardlinkCacheKey;
177
+ private readHardlinkCache;
178
+ private writeHardlinkCache;
179
+ private cloneHardlinkResult;
180
+ private clearHardlinkCaches;
181
+ private clearMediaStreamSessionCache;
182
+ isReady(): boolean;
183
+ /**
184
+ * 打开数据库
185
+ */
186
+ open(dbPath: string, hexKey: string, wxid: string): Promise<boolean>;
187
+ /**
188
+ * 关闭数据库
189
+ * 注意:wcdb_close_account 可能导致崩溃,使用 shutdown 代替
190
+ */
191
+ close(): void;
192
+ /**
193
+ * 关闭服务(与 close 相同)
194
+ */
195
+ shutdown(): void;
196
+ /**
197
+ * 检查是否已连接
198
+ */
199
+ isConnected(): boolean;
200
+ getSessions(): Promise<{
201
+ success: boolean;
202
+ sessions?: any[];
203
+ error?: string;
204
+ }>;
205
+ getMessages(sessionId: string, limit: number, offset: number): Promise<{
206
+ success: boolean;
207
+ messages?: any[];
208
+ error?: string;
209
+ }>;
210
+ /**
211
+ * 获取指定时间之后的新消息
212
+ */
213
+ getNewMessages(sessionId: string, minTime: number, limit?: number): Promise<{
214
+ success: boolean;
215
+ messages?: any[];
216
+ error?: string;
217
+ }>;
218
+ getMessageCount(sessionId: string): Promise<{
219
+ success: boolean;
220
+ count?: number;
221
+ error?: string;
222
+ }>;
223
+ getMessageCounts(sessionIds: string[]): Promise<{
224
+ success: boolean;
225
+ counts?: Record<string, number>;
226
+ error?: string;
227
+ }>;
228
+ getSessionMessageCounts(sessionIds: string[]): Promise<{
229
+ success: boolean;
230
+ counts?: Record<string, number>;
231
+ error?: string;
232
+ }>;
233
+ getSessionMessageTypeStats(sessionId: string, beginTimestamp?: number, endTimestamp?: number): Promise<{
234
+ success: boolean;
235
+ data?: any;
236
+ error?: string;
237
+ }>;
238
+ getSessionMessageTypeStatsBatch(sessionIds: string[], options?: {
239
+ beginTimestamp?: number;
240
+ endTimestamp?: number;
241
+ quickMode?: boolean;
242
+ includeGroupSenderCount?: boolean;
243
+ }): Promise<{
244
+ success: boolean;
245
+ data?: Record<string, any>;
246
+ error?: string;
247
+ }>;
248
+ getSessionMessageDateCounts(sessionId: string): Promise<{
249
+ success: boolean;
250
+ counts?: Record<string, number>;
251
+ error?: string;
252
+ }>;
253
+ getSessionMessageDateCountsBatch(sessionIds: string[]): Promise<{
254
+ success: boolean;
255
+ data?: Record<string, Record<string, number>>;
256
+ error?: string;
257
+ }>;
258
+ getMessagesByType(sessionId: string, localType: number, ascending?: boolean, limit?: number, offset?: number): Promise<{
259
+ success: boolean;
260
+ rows?: any[];
261
+ error?: string;
262
+ }>;
263
+ getMediaStream(options?: {
264
+ sessionId?: string;
265
+ mediaType?: 'image' | 'video' | 'all';
266
+ beginTimestamp?: number;
267
+ endTimestamp?: number;
268
+ limit?: number;
269
+ offset?: number;
270
+ }): Promise<{
271
+ success: boolean;
272
+ items?: Array<{
273
+ sessionId: string;
274
+ sessionDisplayName?: string;
275
+ mediaType: 'image' | 'video';
276
+ localId: number;
277
+ serverId?: string;
278
+ createTime: number;
279
+ localType: number;
280
+ senderUsername?: string;
281
+ isSend?: number | null;
282
+ imageMd5?: string;
283
+ imageDatName?: string;
284
+ videoMd5?: string;
285
+ content?: string;
286
+ }>;
287
+ hasMore?: boolean;
288
+ nextOffset?: number;
289
+ error?: string;
290
+ }>;
291
+ getDisplayNames(usernames: string[]): Promise<{
292
+ success: boolean;
293
+ map?: Record<string, string>;
294
+ error?: string;
295
+ }>;
296
+ getAvatarUrls(usernames: string[]): Promise<{
297
+ success: boolean;
298
+ map?: Record<string, string>;
299
+ error?: string;
300
+ }>;
301
+ getGroupMemberCount(chatroomId: string): Promise<{
302
+ success: boolean;
303
+ count?: number;
304
+ error?: string;
305
+ }>;
306
+ getGroupMemberCounts(chatroomIds: string[]): Promise<{
307
+ success: boolean;
308
+ map?: Record<string, number>;
309
+ error?: string;
310
+ }>;
311
+ getGroupMembers(chatroomId: string): Promise<{
312
+ success: boolean;
313
+ members?: any[];
314
+ error?: string;
315
+ }>;
316
+ getGroupNicknames(chatroomId: string): Promise<{
317
+ success: boolean;
318
+ nicknames?: Record<string, string>;
319
+ error?: string;
320
+ }>;
321
+ getMessageTables(sessionId: string): Promise<{
322
+ success: boolean;
323
+ tables?: any[];
324
+ error?: string;
325
+ }>;
326
+ getMessageDates(sessionId: string): Promise<{
327
+ success: boolean;
328
+ dates?: string[];
329
+ error?: string;
330
+ }>;
331
+ getMessageTableStats(sessionId: string): Promise<{
332
+ success: boolean;
333
+ tables?: any[];
334
+ error?: string;
335
+ }>;
336
+ getMessageMeta(dbPath: string, tableName: string, limit: number, offset: number): Promise<{
337
+ success: boolean;
338
+ rows?: any[];
339
+ error?: string;
340
+ }>;
341
+ getContact(username: string): Promise<{
342
+ success: boolean;
343
+ contact?: any;
344
+ error?: string;
345
+ }>;
346
+ getContactStatus(usernames: string[]): Promise<{
347
+ success: boolean;
348
+ map?: Record<string, {
349
+ isFolded: boolean;
350
+ isMuted: boolean;
351
+ }>;
352
+ error?: string;
353
+ }>;
354
+ getMessageTableColumns(dbPath: string, tableName: string): Promise<{
355
+ success: boolean;
356
+ columns?: string[];
357
+ error?: string;
358
+ }>;
359
+ listTables(kind: string, dbPath?: string): Promise<{
360
+ success: boolean;
361
+ tables?: string[];
362
+ error?: string;
363
+ }>;
364
+ getTableSchema(kind: string, dbPath: string, tableName: string): Promise<{
365
+ success: boolean;
366
+ schema?: string;
367
+ error?: string;
368
+ }>;
369
+ exportTableSnapshot(kind: string, dbPath: string, tableName: string, outputPath: string): Promise<{
370
+ success: boolean;
371
+ rows?: number;
372
+ columns?: number;
373
+ error?: string;
374
+ }>;
375
+ importTableSnapshot(kind: string, dbPath: string, tableName: string, inputPath: string): Promise<{
376
+ success: boolean;
377
+ rows?: number;
378
+ inserted?: number;
379
+ ignored?: number;
380
+ malformed?: number;
381
+ columns?: number;
382
+ error?: string;
383
+ }>;
384
+ importTableSnapshotWithSchema(kind: string, dbPath: string, tableName: string, inputPath: string, createTableSql: string): Promise<{
385
+ success: boolean;
386
+ rows?: number;
387
+ inserted?: number;
388
+ ignored?: number;
389
+ malformed?: number;
390
+ columns?: number;
391
+ error?: string;
392
+ }>;
393
+ getMessageTableTimeRange(dbPath: string, tableName: string): Promise<{
394
+ success: boolean;
395
+ data?: any;
396
+ error?: string;
397
+ }>;
398
+ getContactTypeCounts(): Promise<{
399
+ success: boolean;
400
+ counts?: {
401
+ private: number;
402
+ group: number;
403
+ official: number;
404
+ former_friend: number;
405
+ };
406
+ error?: string;
407
+ }>;
408
+ getContactsCompact(usernames?: string[]): Promise<{
409
+ success: boolean;
410
+ contacts?: any[];
411
+ error?: string;
412
+ }>;
413
+ getContactAliasMap(usernames: string[]): Promise<{
414
+ success: boolean;
415
+ map?: Record<string, string>;
416
+ error?: string;
417
+ }>;
418
+ getContactFriendFlags(usernames: string[]): Promise<{
419
+ success: boolean;
420
+ map?: Record<string, boolean>;
421
+ error?: string;
422
+ }>;
423
+ getChatRoomExtBuffer(chatroomId: string): Promise<{
424
+ success: boolean;
425
+ extBuffer?: string;
426
+ error?: string;
427
+ }>;
428
+ getAggregateStats(sessionIds: string[], beginTimestamp?: number, endTimestamp?: number): Promise<{
429
+ success: boolean;
430
+ data?: any;
431
+ error?: string;
432
+ }>;
433
+ getAvailableYears(sessionIds: string[]): Promise<{
434
+ success: boolean;
435
+ data?: number[];
436
+ error?: string;
437
+ }>;
438
+ getAnnualReportStats(sessionIds: string[], beginTimestamp?: number, endTimestamp?: number): Promise<{
439
+ success: boolean;
440
+ data?: any;
441
+ error?: string;
442
+ }>;
443
+ getAnnualReportExtras(sessionIds: string[], beginTimestamp?: number, endTimestamp?: number, peakDayBegin?: number, peakDayEnd?: number): Promise<{
444
+ success: boolean;
445
+ data?: any;
446
+ error?: string;
447
+ }>;
448
+ getGroupStats(chatroomId: string, beginTimestamp?: number, endTimestamp?: number): Promise<{
449
+ success: boolean;
450
+ data?: any;
451
+ error?: string;
452
+ }>;
453
+ getMyFootprintStats(options: {
454
+ beginTimestamp?: number;
455
+ endTimestamp?: number;
456
+ myWxid?: string;
457
+ privateSessionIds?: string[];
458
+ groupSessionIds?: string[];
459
+ mentionLimit?: number;
460
+ privateLimit?: number;
461
+ mentionMode?: 'text_at_me' | string;
462
+ }): Promise<{
463
+ success: boolean;
464
+ data?: any;
465
+ error?: string;
466
+ }>;
467
+ /**
468
+ * 强制重新打开账号连接(绕过路径缓存),用于微信重装后消息数据库刷新失败时的自动恢复。
469
+ * 返回重新打开是否成功。
470
+ */
471
+ private forceReopen;
472
+ private shouldRetryCursorAfterNoDb;
473
+ openMessageCursor(sessionId: string, batchSize: number, ascending: boolean, beginTimestamp: number, endTimestamp: number): Promise<{
474
+ success: boolean;
475
+ cursor?: number;
476
+ error?: string;
477
+ }>;
478
+ openMessageCursorLite(sessionId: string, batchSize: number, ascending: boolean, beginTimestamp: number, endTimestamp: number): Promise<{
479
+ success: boolean;
480
+ cursor?: number;
481
+ error?: string;
482
+ }>;
483
+ fetchMessageBatch(cursor: number): Promise<{
484
+ success: boolean;
485
+ rows?: any[];
486
+ hasMore?: boolean;
487
+ error?: string;
488
+ }>;
489
+ closeMessageCursor(cursor: number): Promise<{
490
+ success: boolean;
491
+ error?: string;
492
+ }>;
493
+ getLogs(): Promise<{
494
+ success: boolean;
495
+ logs?: string[];
496
+ error?: string;
497
+ }>;
498
+ execQuery(kind: string, path: string | null, sql: string, params?: any[]): Promise<{
499
+ success: boolean;
500
+ rows?: any[];
501
+ error?: string;
502
+ }>;
503
+ getEmoticonCdnUrl(dbPath: string, md5: string): Promise<{
504
+ success: boolean;
505
+ url?: string;
506
+ error?: string;
507
+ }>;
508
+ getEmoticonCaption(dbPath: string, md5: string): Promise<{
509
+ success: boolean;
510
+ caption?: string;
511
+ error?: string;
512
+ }>;
513
+ getEmoticonCaptionStrict(md5: string): Promise<{
514
+ success: boolean;
515
+ caption?: string;
516
+ error?: string;
517
+ }>;
518
+ listMessageDbs(): Promise<{
519
+ success: boolean;
520
+ data?: string[];
521
+ error?: string;
522
+ }>;
523
+ listMediaDbs(): Promise<{
524
+ success: boolean;
525
+ data?: string[];
526
+ error?: string;
527
+ }>;
528
+ getMessageById(sessionId: string, localId: number): Promise<{
529
+ success: boolean;
530
+ message?: any;
531
+ error?: string;
532
+ }>;
533
+ getVoiceData(sessionId: string, createTime: number, candidates: string[], localId?: number, svrId?: string | number): Promise<{
534
+ success: boolean;
535
+ hex?: string;
536
+ error?: string;
537
+ }>;
538
+ getVoiceDataBatch(requests: Array<{
539
+ session_id: string;
540
+ create_time: number;
541
+ local_id?: number;
542
+ svr_id?: string | number;
543
+ candidates?: string[];
544
+ }>): Promise<{
545
+ success: boolean;
546
+ rows?: Array<{
547
+ index: number;
548
+ hex?: string;
549
+ }>;
550
+ error?: string;
551
+ }>;
552
+ getMediaSchemaSummary(dbPath: string): Promise<{
553
+ success: boolean;
554
+ data?: any;
555
+ error?: string;
556
+ }>;
557
+ getHeadImageBuffers(usernames: string[]): Promise<{
558
+ success: boolean;
559
+ map?: Record<string, string>;
560
+ error?: string;
561
+ }>;
562
+ resolveImageHardlink(md5: string, accountDir?: string): Promise<{
563
+ success: boolean;
564
+ data?: any;
565
+ error?: string;
566
+ }>;
567
+ resolveVideoHardlinkMd5(md5: string, dbPath?: string): Promise<{
568
+ success: boolean;
569
+ data?: any;
570
+ error?: string;
571
+ }>;
572
+ resolveImageHardlinkBatch(requests: Array<{
573
+ md5: string;
574
+ accountDir?: string;
575
+ }>): Promise<{
576
+ success: boolean;
577
+ rows?: Array<{
578
+ index: number;
579
+ md5: string;
580
+ success: boolean;
581
+ data?: any;
582
+ error?: string;
583
+ }>;
584
+ error?: string;
585
+ }>;
586
+ resolveVideoHardlinkMd5Batch(requests: Array<{
587
+ md5: string;
588
+ dbPath?: string;
589
+ }>): Promise<{
590
+ success: boolean;
591
+ rows?: Array<{
592
+ index: number;
593
+ md5: string;
594
+ success: boolean;
595
+ data?: any;
596
+ error?: string;
597
+ }>;
598
+ error?: string;
599
+ }>;
600
+ /**
601
+ * 数据收集初始化
602
+ */
603
+ cloudInit(intervalSeconds?: number): Promise<{
604
+ success: boolean;
605
+ error?: string;
606
+ }>;
607
+ cloudReport(statsJson: string): Promise<{
608
+ success: boolean;
609
+ error?: string;
610
+ }>;
611
+ cloudStop(): {
612
+ success: boolean;
613
+ error?: string;
614
+ };
615
+ verifyUser(message: string, hwnd?: string): Promise<{
616
+ success: boolean;
617
+ error?: string;
618
+ }>;
619
+ searchMessages(keyword: string, sessionId?: string, limit?: number, offset?: number, beginTimestamp?: number, endTimestamp?: number): Promise<{
620
+ success: boolean;
621
+ messages?: any[];
622
+ error?: string;
623
+ }>;
624
+ getSnsTimeline(limit: number, offset: number, usernames?: string[], keyword?: string, startTime?: number, endTime?: number): Promise<{
625
+ success: boolean;
626
+ timeline?: any[];
627
+ error?: string;
628
+ }>;
629
+ getSnsAnnualStats(beginTimestamp: number, endTimestamp: number): Promise<{
630
+ success: boolean;
631
+ data?: any;
632
+ error?: string;
633
+ }>;
634
+ getSnsUsernames(): Promise<{
635
+ success: boolean;
636
+ usernames?: string[];
637
+ error?: string;
638
+ }>;
639
+ getSnsExportStats(myWxid?: string): Promise<{
640
+ success: boolean;
641
+ data?: {
642
+ totalPosts: number;
643
+ totalFriends: number;
644
+ myPosts: number | null;
645
+ };
646
+ error?: string;
647
+ }>;
648
+ installMessageAntiRevokeTrigger(sessionId: string): Promise<{
649
+ success: boolean;
650
+ alreadyInstalled?: boolean;
651
+ error?: string;
652
+ }>;
653
+ uninstallMessageAntiRevokeTrigger(sessionId: string): Promise<{
654
+ success: boolean;
655
+ error?: string;
656
+ }>;
657
+ checkMessageAntiRevokeTrigger(sessionId: string): Promise<{
658
+ success: boolean;
659
+ installed?: boolean;
660
+ error?: string;
661
+ }>;
662
+ checkMessageAntiRevokeTriggers(sessionIds: string[]): Promise<{
663
+ success: boolean;
664
+ rows?: Array<{
665
+ sessionId: string;
666
+ success: boolean;
667
+ installed?: boolean;
668
+ error?: string;
669
+ }>;
670
+ error?: string;
671
+ }>;
672
+ installMessageAntiRevokeTriggers(sessionIds: string[]): Promise<{
673
+ success: boolean;
674
+ rows?: Array<{
675
+ sessionId: string;
676
+ success: boolean;
677
+ alreadyInstalled?: boolean;
678
+ error?: string;
679
+ }>;
680
+ error?: string;
681
+ }>;
682
+ uninstallMessageAntiRevokeTriggers(sessionIds: string[]): Promise<{
683
+ success: boolean;
684
+ rows?: Array<{
685
+ sessionId: string;
686
+ success: boolean;
687
+ error?: string;
688
+ }>;
689
+ error?: string;
690
+ }>;
691
+ /**
692
+ * 为朋友圈安装删除
693
+ */
694
+ installSnsBlockDeleteTrigger(): Promise<{
695
+ success: boolean;
696
+ alreadyInstalled?: boolean;
697
+ error?: string;
698
+ }>;
699
+ /**
700
+ * 关闭朋友圈删除拦截
701
+ */
702
+ uninstallSnsBlockDeleteTrigger(): Promise<{
703
+ success: boolean;
704
+ error?: string;
705
+ }>;
706
+ /**
707
+ * 查询朋友圈删除拦截是否已安装
708
+ */
709
+ checkSnsBlockDeleteTrigger(): Promise<{
710
+ success: boolean;
711
+ installed?: boolean;
712
+ error?: string;
713
+ }>;
714
+ deleteSnsPost(postId: string): Promise<{
715
+ success: boolean;
716
+ error?: string;
717
+ }>;
718
+ getDualReportStats(sessionId: string, beginTimestamp?: number, endTimestamp?: number): Promise<{
719
+ success: boolean;
720
+ data?: any;
721
+ error?: string;
722
+ }>;
723
+ /**
724
+ * 修改消息内容
725
+ */
726
+ updateMessage(sessionId: string, localId: number, createTime: number, newContent: string): Promise<{
727
+ success: boolean;
728
+ error?: string;
729
+ }>;
730
+ /**
731
+ * 删除消息
732
+ */
733
+ deleteMessage(sessionId: string, localId: number, createTime: number, dbPathHint?: string): Promise<{
734
+ success: boolean;
735
+ error?: string;
736
+ }>;
737
+ }
738
+ //# sourceMappingURL=wcdbCore.d.ts.map