@wirecat/cli-core 0.306.0 → 0.307.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 (306) hide show
  1. package/dist/analysis/consents.js +4 -4
  2. package/dist/analysis/consents.js.map +1 -1
  3. package/dist/attachments/directory.js +1 -1
  4. package/dist/attachments/directory.js.map +1 -1
  5. package/dist/botcheck/service.js +3 -3
  6. package/dist/botcheck/service.js.map +1 -1
  7. package/dist/cli/bot/context.d.ts +2 -2
  8. package/dist/cli/bot/copy.js +4 -4
  9. package/dist/cli/bot/copy.js.map +1 -1
  10. package/dist/cli/bot/messages.d.ts.map +1 -1
  11. package/dist/cli/bot/messages.js +2 -2
  12. package/dist/cli/bot/messages.js.map +1 -1
  13. package/dist/cli/bot/moderation.js +1 -1
  14. package/dist/cli/bot/moderation.js.map +1 -1
  15. package/dist/cli/bot/people.js +4 -4
  16. package/dist/cli/bot/people.js.map +1 -1
  17. package/dist/cli/bot/store.js +2 -2
  18. package/dist/cli/bot/store.js.map +1 -1
  19. package/dist/cli/config-keys.d.ts.map +1 -1
  20. package/dist/cli/config-keys.js +2 -1
  21. package/dist/cli/config-keys.js.map +1 -1
  22. package/dist/cli/messenger/account-command.js +1 -1
  23. package/dist/cli/messenger/account-command.js.map +1 -1
  24. package/dist/cli/messenger/complete-command.js +2 -2
  25. package/dist/cli/messenger/complete-command.js.map +1 -1
  26. package/dist/cli/messenger/context.js +1 -1
  27. package/dist/cli/messenger/context.js.map +1 -1
  28. package/dist/cli/messenger/serve-members.js +1 -1
  29. package/dist/cli/messenger/serve-members.js.map +1 -1
  30. package/dist/cli/messenger/serve-stems.js +3 -3
  31. package/dist/cli/messenger/serve-stems.js.map +1 -1
  32. package/dist/cli/messenger/stored.d.ts.map +1 -1
  33. package/dist/cli/messenger/stored.js +21 -21
  34. package/dist/cli/messenger/stored.js.map +1 -1
  35. package/dist/cli/store-settings.js +3 -3
  36. package/dist/cli/store-settings.js.map +1 -1
  37. package/dist/errors/reasons.d.ts.map +1 -1
  38. package/dist/errors/reasons.js +1 -0
  39. package/dist/errors/reasons.js.map +1 -1
  40. package/dist/files/atomic-write.d.ts +15 -0
  41. package/dist/files/atomic-write.d.ts.map +1 -0
  42. package/dist/files/atomic-write.js +35 -0
  43. package/dist/files/atomic-write.js.map +1 -0
  44. package/dist/files/index.d.ts +2 -0
  45. package/dist/files/index.d.ts.map +1 -1
  46. package/dist/files/index.js +2 -0
  47. package/dist/files/index.js.map +1 -1
  48. package/dist/files/lock.d.ts +14 -0
  49. package/dist/files/lock.d.ts.map +1 -0
  50. package/dist/files/lock.js +22 -0
  51. package/dist/files/lock.js.map +1 -0
  52. package/dist/files/native-lease-release.d.ts +3 -1
  53. package/dist/files/native-lease-release.d.ts.map +1 -1
  54. package/dist/files/native-lease-release.js +7 -3
  55. package/dist/files/native-lease-release.js.map +1 -1
  56. package/dist/kit/search-recipes.d.ts.map +1 -1
  57. package/dist/kit/search-recipes.js +5 -5
  58. package/dist/kit/search-recipes.js.map +1 -1
  59. package/dist/mcp/resources.js +1 -1
  60. package/dist/mcp/resources.js.map +1 -1
  61. package/dist/mcp/tools/chats.js +1 -1
  62. package/dist/mcp/tools/chats.js.map +1 -1
  63. package/dist/replies/dry-run.d.ts.map +1 -1
  64. package/dist/replies/dry-run.js +5 -5
  65. package/dist/replies/dry-run.js.map +1 -1
  66. package/dist/services/admin-statistics.js +6 -6
  67. package/dist/services/admin-statistics.js.map +1 -1
  68. package/dist/services/agenda.js +1 -1
  69. package/dist/services/agenda.js.map +1 -1
  70. package/dist/services/archive-gaps.js +4 -4
  71. package/dist/services/archive-gaps.js.map +1 -1
  72. package/dist/services/archive.d.ts.map +1 -1
  73. package/dist/services/archive.js +23 -23
  74. package/dist/services/archive.js.map +1 -1
  75. package/dist/services/attachments.d.ts.map +1 -1
  76. package/dist/services/attachments.js +21 -10
  77. package/dist/services/attachments.js.map +1 -1
  78. package/dist/services/chat-documents.js +2 -2
  79. package/dist/services/chat-documents.js.map +1 -1
  80. package/dist/services/chats.d.ts.map +1 -1
  81. package/dist/services/chats.js +24 -19
  82. package/dist/services/chats.js.map +1 -1
  83. package/dist/services/conversations.js +15 -15
  84. package/dist/services/conversations.js.map +1 -1
  85. package/dist/services/counters.d.ts.map +1 -1
  86. package/dist/services/counters.js +4 -4
  87. package/dist/services/counters.js.map +1 -1
  88. package/dist/services/embeddings-maintenance.d.ts.map +1 -1
  89. package/dist/services/embeddings-maintenance.js +13 -13
  90. package/dist/services/embeddings-maintenance.js.map +1 -1
  91. package/dist/services/embeddings-search.d.ts.map +1 -1
  92. package/dist/services/embeddings-search.js +16 -16
  93. package/dist/services/embeddings-search.js.map +1 -1
  94. package/dist/services/evidence-read.js +1 -1
  95. package/dist/services/evidence-read.js.map +1 -1
  96. package/dist/services/folders.js +1 -1
  97. package/dist/services/folders.js.map +1 -1
  98. package/dist/services/inbox.js +4 -4
  99. package/dist/services/inbox.js.map +1 -1
  100. package/dist/services/index.d.ts +1 -1
  101. package/dist/services/index.d.ts.map +1 -1
  102. package/dist/services/index.js.map +1 -1
  103. package/dist/services/mail-search.d.ts.map +1 -1
  104. package/dist/services/mail-search.js +15 -13
  105. package/dist/services/mail-search.js.map +1 -1
  106. package/dist/services/meeting-context.d.ts +4 -2
  107. package/dist/services/meeting-context.d.ts.map +1 -1
  108. package/dist/services/meeting-context.js +1 -1
  109. package/dist/services/meeting-context.js.map +1 -1
  110. package/dist/services/meeting-tasks.d.ts +4 -2
  111. package/dist/services/meeting-tasks.d.ts.map +1 -1
  112. package/dist/services/meeting-tasks.js +1 -1
  113. package/dist/services/meeting-tasks.js.map +1 -1
  114. package/dist/services/mentions.d.ts.map +1 -1
  115. package/dist/services/mentions.js +8 -8
  116. package/dist/services/mentions.js.map +1 -1
  117. package/dist/services/message-resolution.d.ts.map +1 -1
  118. package/dist/services/message-resolution.js +6 -6
  119. package/dist/services/message-resolution.js.map +1 -1
  120. package/dist/services/messages-archive-search.js +4 -4
  121. package/dist/services/messages-archive-search.js.map +1 -1
  122. package/dist/services/messages-combined.js +3 -3
  123. package/dist/services/messages-combined.js.map +1 -1
  124. package/dist/services/messages-discovery.js +2 -2
  125. package/dist/services/messages-discovery.js.map +1 -1
  126. package/dist/services/messages-search.d.ts.map +1 -1
  127. package/dist/services/messages-search.js +13 -13
  128. package/dist/services/messages-search.js.map +1 -1
  129. package/dist/services/messages.js +6 -6
  130. package/dist/services/messages.js.map +1 -1
  131. package/dist/services/metadata.js +9 -9
  132. package/dist/services/metadata.js.map +1 -1
  133. package/dist/services/notes-search.js +4 -4
  134. package/dist/services/notes-search.js.map +1 -1
  135. package/dist/services/people.d.ts.map +1 -1
  136. package/dist/services/people.js +18 -17
  137. package/dist/services/people.js.map +1 -1
  138. package/dist/services/person-context.js +16 -16
  139. package/dist/services/person-context.js.map +1 -1
  140. package/dist/services/person-meeting-context.d.ts +3 -2
  141. package/dist/services/person-meeting-context.d.ts.map +1 -1
  142. package/dist/services/person-meeting-context.js +3 -3
  143. package/dist/services/person-meeting-context.js.map +1 -1
  144. package/dist/services/person-profile.js +5 -5
  145. package/dist/services/person-profile.js.map +1 -1
  146. package/dist/services/person-timeline.js +2 -2
  147. package/dist/services/person-timeline.js.map +1 -1
  148. package/dist/services/pictures.d.ts.map +1 -1
  149. package/dist/services/pictures.js +9 -6
  150. package/dist/services/pictures.js.map +1 -1
  151. package/dist/services/private-people.d.ts.map +1 -1
  152. package/dist/services/private-people.js +7 -7
  153. package/dist/services/private-people.js.map +1 -1
  154. package/dist/services/rankings-selection.js +1 -1
  155. package/dist/services/rankings-selection.js.map +1 -1
  156. package/dist/services/rankings.js +7 -7
  157. package/dist/services/rankings.js.map +1 -1
  158. package/dist/services/retention.d.ts +3 -3
  159. package/dist/services/retention.js +2 -2
  160. package/dist/services/retention.js.map +1 -1
  161. package/dist/services/search-all-meetings.js +2 -2
  162. package/dist/services/search-all-meetings.js.map +1 -1
  163. package/dist/services/search-all.d.ts.map +1 -1
  164. package/dist/services/search-all.js +3 -1
  165. package/dist/services/search-all.js.map +1 -1
  166. package/dist/services/search-catchup.js +1 -1
  167. package/dist/services/search-catchup.js.map +1 -1
  168. package/dist/services/search-kind.js +4 -4
  169. package/dist/services/search-kind.js.map +1 -1
  170. package/dist/services/search-refresh.d.ts.map +1 -1
  171. package/dist/services/search-refresh.js +2 -2
  172. package/dist/services/search-refresh.js.map +1 -1
  173. package/dist/services/searches.js +7 -7
  174. package/dist/services/searches.js.map +1 -1
  175. package/dist/services/server-search.js +4 -4
  176. package/dist/services/server-search.js.map +1 -1
  177. package/dist/services/tags.d.ts.map +1 -1
  178. package/dist/services/tags.js +7 -4
  179. package/dist/services/tags.js.map +1 -1
  180. package/dist/services/task-rules.js +6 -6
  181. package/dist/services/task-rules.js.map +1 -1
  182. package/dist/services/tasks.js +2 -2
  183. package/dist/services/tasks.js.map +1 -1
  184. package/dist/services/thread-context.d.ts.map +1 -1
  185. package/dist/services/thread-context.js +5 -5
  186. package/dist/services/thread-context.js.map +1 -1
  187. package/dist/speech/hearing.d.ts.map +1 -1
  188. package/dist/speech/hearing.js +2 -2
  189. package/dist/speech/hearing.js.map +1 -1
  190. package/dist/store/account-store.d.ts +64 -17
  191. package/dist/store/account-store.d.ts.map +1 -1
  192. package/dist/store/account-store.js +75 -121
  193. package/dist/store/account-store.js.map +1 -1
  194. package/dist/store/accounts.d.ts +35 -0
  195. package/dist/store/accounts.d.ts.map +1 -0
  196. package/dist/store/accounts.js +47 -0
  197. package/dist/store/accounts.js.map +1 -0
  198. package/dist/store/attachments.d.ts +40 -0
  199. package/dist/store/attachments.d.ts.map +1 -0
  200. package/dist/store/attachments.js +50 -0
  201. package/dist/store/attachments.js.map +1 -0
  202. package/dist/store/chats.d.ts +47 -0
  203. package/dist/store/chats.d.ts.map +1 -0
  204. package/dist/store/chats.js +80 -0
  205. package/dist/store/chats.js.map +1 -0
  206. package/dist/store/conversations.d.ts +73 -0
  207. package/dist/store/conversations.d.ts.map +1 -0
  208. package/dist/store/conversations.js +118 -0
  209. package/dist/store/conversations.js.map +1 -0
  210. package/dist/store/counters.d.ts +25 -0
  211. package/dist/store/counters.d.ts.map +1 -0
  212. package/dist/store/counters.js +26 -0
  213. package/dist/store/counters.js.map +1 -0
  214. package/dist/store/index.d.ts +1 -1
  215. package/dist/store/index.d.ts.map +1 -1
  216. package/dist/store/index.js.map +1 -1
  217. package/dist/store/keys.d.ts +16 -0
  218. package/dist/store/keys.d.ts.map +1 -0
  219. package/dist/store/keys.js +25 -0
  220. package/dist/store/keys.js.map +1 -0
  221. package/dist/store/mentions.d.ts +41 -0
  222. package/dist/store/mentions.d.ts.map +1 -0
  223. package/dist/store/mentions.js +39 -0
  224. package/dist/store/mentions.js.map +1 -0
  225. package/dist/store/messages.d.ts +116 -0
  226. package/dist/store/messages.d.ts.map +1 -0
  227. package/dist/store/messages.js +102 -0
  228. package/dist/store/messages.js.map +1 -0
  229. package/dist/store/people.d.ts +53 -0
  230. package/dist/store/people.d.ts.map +1 -0
  231. package/dist/store/people.js +65 -0
  232. package/dist/store/people.js.map +1 -0
  233. package/dist/store/queries.d.ts +22 -0
  234. package/dist/store/queries.d.ts.map +1 -0
  235. package/dist/store/queries.js +22 -0
  236. package/dist/store/queries.js.map +1 -0
  237. package/dist/store/roster.d.ts +38 -0
  238. package/dist/store/roster.d.ts.map +1 -0
  239. package/dist/store/roster.js +54 -0
  240. package/dist/store/roster.js.map +1 -0
  241. package/dist/store/search-index.d.ts +40 -0
  242. package/dist/store/search-index.d.ts.map +1 -0
  243. package/dist/store/search-index.js +19 -0
  244. package/dist/store/search-index.js.map +1 -0
  245. package/dist/store/searches.d.ts +22 -0
  246. package/dist/store/searches.d.ts.map +1 -0
  247. package/dist/store/searches.js +25 -0
  248. package/dist/store/searches.js.map +1 -0
  249. package/dist/store/sqlite/accounts.d.ts +1 -1
  250. package/dist/store/sqlite/admin-statistics.d.ts +1 -1
  251. package/dist/store/sqlite/batches.d.ts +1 -1
  252. package/dist/store/sqlite/bot-updates.d.ts +1 -1
  253. package/dist/store/sqlite/chats.d.ts +1 -1
  254. package/dist/store/sqlite/conversation-eligibility.d.ts +1 -1
  255. package/dist/store/sqlite/conversations.d.ts +1 -1
  256. package/dist/store/sqlite/emails.d.ts +1 -1
  257. package/dist/store/sqlite/emails.d.ts.map +1 -1
  258. package/dist/store/sqlite/emails.js +5 -2
  259. package/dist/store/sqlite/emails.js.map +1 -1
  260. package/dist/store/sqlite/identities.d.ts +1 -1
  261. package/dist/store/sqlite/knowledge.d.ts +1 -1
  262. package/dist/store/sqlite/lucene-fields.d.ts +66 -0
  263. package/dist/store/sqlite/lucene-fields.d.ts.map +1 -0
  264. package/dist/store/sqlite/lucene-fields.js +360 -0
  265. package/dist/store/sqlite/lucene-fields.js.map +1 -0
  266. package/dist/store/sqlite/lucene.d.ts +2 -13
  267. package/dist/store/sqlite/lucene.d.ts.map +1 -1
  268. package/dist/store/sqlite/lucene.js +27 -329
  269. package/dist/store/sqlite/lucene.js.map +1 -1
  270. package/dist/store/sqlite/meeting-projects.d.ts +1 -1
  271. package/dist/store/sqlite/messages.d.ts +1 -1
  272. package/dist/store/sqlite/person-links.d.ts +1 -1
  273. package/dist/store/sqlite/private-people.d.ts +1 -1
  274. package/dist/store/sqlite/proposed-actions.d.ts +1 -1
  275. package/dist/store/sqlite/ranges.d.ts +1 -1
  276. package/dist/store/sqlite/ranking-evidence.d.ts +1 -1
  277. package/dist/store/sqlite/reads.d.ts +1 -1
  278. package/dist/store/sqlite/search.d.ts +1 -1
  279. package/dist/store/sqlite/tags.d.ts +1 -1
  280. package/dist/store/sqlite/task-rule-stops.d.ts +1 -1
  281. package/dist/store/sqlite/words.d.ts +1 -1
  282. package/dist/store/store.d.ts +62 -828
  283. package/dist/store/store.d.ts.map +1 -1
  284. package/dist/store/store.js +105 -836
  285. package/dist/store/store.js.map +1 -1
  286. package/dist/store/sync.d.ts +36 -0
  287. package/dist/store/sync.d.ts.map +1 -0
  288. package/dist/store/sync.js +59 -0
  289. package/dist/store/sync.js.map +1 -0
  290. package/dist/store/tags.d.ts +13 -0
  291. package/dist/store/tags.d.ts.map +1 -0
  292. package/dist/store/tags.js +23 -0
  293. package/dist/store/tags.js.map +1 -0
  294. package/dist/store/types.d.ts +247 -0
  295. package/dist/store/types.d.ts.map +1 -0
  296. package/dist/store/types.js +2 -0
  297. package/dist/store/types.js.map +1 -0
  298. package/dist/store/vectors.d.ts +109 -0
  299. package/dist/store/vectors.d.ts.map +1 -0
  300. package/dist/store/vectors.js +221 -0
  301. package/dist/store/vectors.js.map +1 -0
  302. package/dist/update/index.d.ts +52 -0
  303. package/dist/update/index.d.ts.map +1 -0
  304. package/dist/update/index.js +68 -0
  305. package/dist/update/index.js.map +1 -0
  306. package/package.json +5 -1
@@ -1,118 +1,21 @@
1
1
  import { CliError } from "@wirecat/cli-base";
2
- /** Every store method whose first argument is the account it reads or writes. */
3
- const ACCOUNT_METHODS = [
4
- "saveAccount",
5
- "saveChats",
6
- "saveMessages",
7
- "chats",
8
- "countChats",
9
- "saveMembers",
10
- "members",
11
- "saveRoster",
12
- "memberStays",
13
- "memberCounts",
14
- "profileRevisions",
15
- "trackMembers",
16
- "trackedChats",
17
- "chatsWith",
18
- "syncState",
19
- "setSyncState",
20
- "clearSyncState",
21
- "applyDelta",
22
- "claim",
23
- "release",
24
- "transcript",
25
- "keepTranscript",
26
- "keepDownloads",
27
- "fileAttachments",
28
- "attachments",
29
- "linkInputs",
30
- "senderHandles",
31
- "replaceConversations",
32
- "conversations",
33
- "conversation",
34
- "conversationOf",
35
- "conversationsOfMessages",
36
- "links",
37
- "replies",
38
- "agentAnswers",
39
- "saveAnswers",
40
- "clearAnswers",
41
- "batchStatus",
42
- "nextBatch",
43
- "chunksToEmbed",
44
- "imagesToDescribe",
45
- "saveImageChunks",
46
- "nearestImages",
47
- "picturesToEmbed",
48
- "savePictures",
49
- "nearestPictures",
50
- "vectorStatus",
51
- "clearVectors",
52
- "nearestConversations",
53
- "conversationVectors",
54
- "readiness",
55
- "unbuiltGroups",
56
- "embeddedOnlyElsewhere",
57
- "conversationState",
58
- "messages",
59
- "countMessages",
60
- "documentLinkMessages",
61
- "mentions",
62
- "mention",
63
- "confirmMention",
64
- "rejectMention",
65
- "changes",
66
- "messagesWindow",
67
- "around",
68
- "message",
69
- "purge",
70
- "markChatsLeft",
71
- "leftChats",
72
- "markDeleted",
73
- "rankingDiscussionChats",
74
- "retention",
75
- "chatCompleteness",
76
- "savePeople",
77
- "contacts",
78
- "countContacts",
79
- "refreshRecency",
80
- "storedAccount",
81
- "accountName",
82
- "mentioning",
83
- "saveReactions",
84
- "counterStates",
85
- "updateCounterObservations",
86
- "markRange",
87
- "chatStats",
88
- "chatActivity",
89
- "senderStats",
90
- "personNames",
91
- "ranges",
92
- "chatMetadata",
93
- "saveChatMetadata",
94
- "replaceAutoTags",
95
- "privateContact",
96
- "setContactAlias",
97
- "addContactNote",
98
- "contactNote",
99
- "editContactNote",
100
- "removeContactNote",
101
- "addTags",
102
- "removeTags",
103
- "tags",
104
- "taskRulesStop",
105
- "setTaskRulesStop",
106
- ];
107
- const everyMethodListed = true;
108
- export const bindAccount = (store, account, owners) => {
109
- void everyMethodListed;
110
- const bound = {};
111
- for (const name of ACCOUNT_METHODS) {
112
- const method = store[name];
113
- if (method)
114
- bound[name] = (...rest) => method.call(store, account, ...rest);
115
- }
2
+ // Looked up on each call, so a spy set on the store's area after `forAccount` still sees the call.
3
+ const bindArea = ({ keyed, whole }, account) => {
4
+ const methods = whole;
5
+ return Object.fromEntries(Object.keys(keyed).map((name) => [
6
+ name,
7
+ (...rest) => methods[name](account, ...rest),
8
+ ]));
9
+ };
10
+ const once = (build) => {
11
+ let built;
12
+ return () => {
13
+ built ??= build();
14
+ return built;
15
+ };
16
+ };
17
+ export const bindAccount = (store, account, areas, owners) => {
18
+ const bound = (area) => once(() => bindArea(area(), account));
116
19
  const ownAttachment = (attachmentPk) => {
117
20
  const pk = owners.accountPk();
118
21
  if (pk === undefined || owners.attachmentAccount(attachmentPk) !== pk)
@@ -155,18 +58,69 @@ export const bindAccount = (store, account, owners) => {
155
58
  return id === undefined ? [] : store.meetings.search(query, { ...filter, accountId: id });
156
59
  },
157
60
  };
158
- return {
159
- ...bound,
160
- account,
161
- find: (filter) => store.find({ ...filter, account }),
162
- search: (query, options) => store.search(query, { ...options, account }),
61
+ const accounts = bound(areas.accounts);
62
+ const chats = bound(areas.chats);
63
+ const sync = bound(areas.sync);
64
+ const messages = once(() => ({
65
+ ...bindArea(areas.messages(), account),
66
+ find: (filter) => store.messages.find({ ...filter, account }),
67
+ search: (query, options) => store.messages.search(query, { ...options, account }),
68
+ }));
69
+ const attachments = once(() => ({
70
+ ...bindArea(areas.attachments(), account),
163
71
  localPathOf: async (attachmentPk) => {
164
72
  ownAttachment(attachmentPk);
165
- return store.localPathOf(attachmentPk);
73
+ return store.attachments.localPathOf(attachmentPk);
166
74
  },
167
75
  keepAttachmentText: async (attachmentPk, entry) => {
168
76
  ownAttachment(attachmentPk);
169
- return store.keepAttachmentText(attachmentPk, entry);
77
+ return store.attachments.keepAttachmentText(attachmentPk, entry);
78
+ },
79
+ }));
80
+ const roster = bound(areas.roster);
81
+ const people = bound(areas.people);
82
+ const conversations = bound(areas.conversations);
83
+ const vectors = bound(areas.vectors);
84
+ const counters = bound(areas.counters);
85
+ const tags = bound(areas.tags);
86
+ const mentions = bound(areas.mentions);
87
+ return {
88
+ account,
89
+ get accounts() {
90
+ return accounts();
91
+ },
92
+ get chats() {
93
+ return chats();
94
+ },
95
+ get sync() {
96
+ return sync();
97
+ },
98
+ get messages() {
99
+ return messages();
100
+ },
101
+ get attachments() {
102
+ return attachments();
103
+ },
104
+ get roster() {
105
+ return roster();
106
+ },
107
+ get people() {
108
+ return people();
109
+ },
110
+ get conversations() {
111
+ return conversations();
112
+ },
113
+ get vectors() {
114
+ return vectors();
115
+ },
116
+ get counters() {
117
+ return counters();
118
+ },
119
+ get tags() {
120
+ return tags();
121
+ },
122
+ get mentions() {
123
+ return mentions();
170
124
  },
171
125
  mail,
172
126
  meetings,
@@ -1 +1 @@
1
- {"version":3,"file":"account-store.js","sourceRoot":"","sources":["../../src/store/account-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-store.js","sourceRoot":"","sources":["../../src/store/account-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type AccountGroups, type Profiles } from "../search/account-list.js";
2
+ import type { StoreContext } from "./sqlite/open.js";
3
+ import type { AccountKey, StoredAccount } from "./types.js";
4
+ export interface AccountAccounts {
5
+ /** Answers the store's id for the account, which `meetings` and `mail` take. */
6
+ saveAccount(key: AccountKey, account: {
7
+ name: string | null;
8
+ }): Promise<number>;
9
+ /** One account by provider and external id, never created: `not_found` when the store has none. */
10
+ storedAccount(key: AccountKey): Promise<StoredAccount>;
11
+ /** The name the messenger last gave for this account; `null` when it never did. */
12
+ accountName(key: AccountKey): Promise<string | null>;
13
+ /**
14
+ * Everything one account holds — its chats, messages, members, state, leases, transcripts and whom
15
+ * it has seen — for `cache clear`. Other accounts, and identities they share, stay.
16
+ */
17
+ purge(key: AccountKey): Promise<void>;
18
+ }
19
+ export interface AccountsStore extends AccountAccounts {
20
+ /** Every account of every messenger the file holds, by messenger then id. */
21
+ accounts(): Promise<AccountKey[]>;
22
+ /** Every account with the store's id for it, by provider then external id. */
23
+ storedAccounts(): Promise<StoredAccount[]>;
24
+ /** The account groups `--source group:<name>` reads: each group's entries as saved, store-wide. */
25
+ accountGroups(): Promise<AccountGroups>;
26
+ /** Saves one group's entries; `undefined` removes the group. */
27
+ saveAccountGroup(name: string, members: string[] | undefined): Promise<void>;
28
+ /** Per app command, each profile's account: how `--source max:default` finds a profile of another app. */
29
+ profiles(): Promise<Profiles>;
30
+ /** Records which account a profile of `app` is; a no-op when the store already says so. */
31
+ saveProfile(app: string, profile: string, key: AccountKey): Promise<void>;
32
+ }
33
+ export declare const accountAccountsOver: (context: StoreContext) => AccountAccounts;
34
+ export declare const accountsStoreOver: (context: StoreContext, keyed: AccountAccounts) => AccountsStore;
35
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/store/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAI7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/E,mGAAmG;IACnG,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACtD,mFAAmF;IACnF,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACpD;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,6EAA6E;IAC7E,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACjC,8EAA8E;IAC9E,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAC1C,mGAAmG;IACnG,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CAAA;IACvC,gEAAgE;IAChE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,0GAA0G;IAC1G,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7B,2FAA2F;IAC3F,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1E;AAED,eAAO,MAAM,mBAAmB,YAAa,YAAY,KAAG,eAiB3D,CAAA;AAED,eAAO,MAAM,iBAAiB,YAAa,YAAY,SAAS,eAAe,KAAG,aAoBjF,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { ACCOUNT_GROUPS } from "../search/account-list.js";
2
+ import { keysOver } from "./keys.js";
3
+ import { accountGroupsOf, profilesOf, saveProfile } from "./sqlite/account-groups.js";
4
+ import * as accounts from "./sqlite/accounts.js";
5
+ import { linkInbox } from "./sqlite/tasks.js";
6
+ import { write } from "./sqlite/transaction.js";
7
+ export const accountAccountsOver = (context) => {
8
+ const { database } = context;
9
+ const { accountPk, findAccountPk } = keysOver(context);
10
+ return {
11
+ saveAccount: async (key, { name }) => {
12
+ const pk = accountPk(key, name);
13
+ linkInbox(database, `${key.provider}:${key.account}`, pk);
14
+ return pk;
15
+ },
16
+ storedAccount: async (key) => accounts.storedAccount(context, key),
17
+ accountName: async (key) => accounts.accountName(context, key),
18
+ purge: async (key) => {
19
+ const accountKey = findAccountPk(key);
20
+ if (accountKey === undefined)
21
+ return;
22
+ write(database, () => accounts.purgeAccount(context, accountKey));
23
+ },
24
+ };
25
+ };
26
+ export const accountsStoreOver = (context, keyed) => {
27
+ const { database } = context;
28
+ return {
29
+ ...keyed,
30
+ accounts: async () => accounts.heldAccounts(context),
31
+ storedAccounts: async () => accounts.storedAccounts(context),
32
+ accountGroups: async () => accountGroupsOf(database),
33
+ profiles: async () => profilesOf(database),
34
+ saveProfile: async (app, profile, key) => write(database, () => saveProfile(database, app, profile, key, context.now())),
35
+ saveAccountGroup: async (name, members) => write(database, () => {
36
+ const groups = accountGroupsOf(database);
37
+ if (members === undefined)
38
+ delete groups[name];
39
+ else
40
+ groups[name] = members;
41
+ database
42
+ .prepare("INSERT OR REPLACE INTO store_settings (key, value, at) VALUES (?, ?, ?)")
43
+ .run(ACCOUNT_GROUPS, JSON.stringify(groups), context.now());
44
+ }),
45
+ };
46
+ };
47
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/store/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { DownloadedFile } from "../domain/attachments.js";
2
+ import type { Id } from "../domain/models.js";
3
+ import type { AttachmentTextEntry, AttachmentView, FileAttachment } from "./sqlite/attachment-texts.js";
4
+ import type { StoreContext } from "./sqlite/open.js";
5
+ import type { Where } from "./sqlite/query-filter.js";
6
+ import type { AccountKey } from "./types.js";
7
+ export interface AccountAttachments {
8
+ /**
9
+ * Where `messages download` saved a held message's files, for reading them later. Answers how many
10
+ * attachments it recorded: a file it cannot tell apart from another is not recorded.
11
+ */
12
+ keepDownloads(key: AccountKey, chatId: Id, messageId: Id, files: readonly DownloadedFile[]): Promise<number>;
13
+ /** File attachments of this account's live messages, newest first, below `beforePk`; never one an agent wrote. */
14
+ fileAttachments(key: AccountKey, page: {
15
+ chatId?: Id;
16
+ messageId?: Id;
17
+ beforePk?: number;
18
+ limit: number;
19
+ }): Promise<FileAttachment[]>;
20
+ /**
21
+ * File attachments of live messages and what is held of their text, newest first; never the text. `where` is a
22
+ * list query compiled over `attachmentColumns`.
23
+ */
24
+ attachments(key: AccountKey, filter: {
25
+ chatId?: Id;
26
+ messageId?: Id;
27
+ where?: Where;
28
+ offset?: number;
29
+ limit: number;
30
+ }): Promise<AttachmentView[]>;
31
+ }
32
+ export interface AttachmentsStore extends AccountAttachments {
33
+ /** Where the file of one attachment was saved, when that is recorded. */
34
+ localPathOf(attachmentPk: number): Promise<string | null>;
35
+ /** An extraction never replaces an agent's text; answers whether it was kept. */
36
+ keepAttachmentText(attachmentPk: number, entry: AttachmentTextEntry): Promise<boolean>;
37
+ }
38
+ export declare const accountAttachmentsOver: (context: StoreContext) => AccountAttachments;
39
+ export declare const attachmentsStoreOver: (context: StoreContext, keyed: AccountAttachments) => AttachmentsStore;
40
+ //# sourceMappingURL=attachments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/store/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAE7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAGvG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5G,kHAAkH;IAClH,eAAe,CACb,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACtE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IAC5B;;;OAGG;IACH,WAAW,CACT,GAAG,EAAE,UAAU,EACf,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACrF,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;CAC7B;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,yEAAyE;IACzE,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzD,iFAAiF;IACjF,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACvF;AAED,eAAO,MAAM,sBAAsB,YAAa,YAAY,KAAG,kBA8B9D,CAAA;AAED,eAAO,MAAM,oBAAoB,YAAa,YAAY,SAAS,kBAAkB,KAAG,gBAUtF,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { keysOver } from "./keys.js";
2
+ import * as attachmentTexts from "./sqlite/attachment-texts.js";
3
+ import * as attachmentRows from "./sqlite/attachments.js";
4
+ import { write } from "./sqlite/transaction.js";
5
+ export const accountAttachmentsOver = (context) => {
6
+ const { database } = context;
7
+ const { findAccountPk, findChatPk, chatKeyOf } = keysOver(context);
8
+ return {
9
+ keepDownloads: async (key, chatId, messageId, files) => {
10
+ const chatKey = chatKeyOf(key, chatId);
11
+ if (chatKey === undefined || files.length === 0)
12
+ return 0;
13
+ let kept = 0;
14
+ write(database, () => {
15
+ kept = attachmentRows.keepDownloads(context, chatKey, messageId, files);
16
+ });
17
+ return kept;
18
+ },
19
+ fileAttachments: async (key, { chatId, ...page }) => {
20
+ const accountKey = findAccountPk(key);
21
+ if (accountKey === undefined)
22
+ return [];
23
+ if (chatId === undefined)
24
+ return attachmentTexts.fileAttachments(context, accountKey, page);
25
+ const chatKey = findChatPk(accountKey, chatId);
26
+ return chatKey === undefined ? [] : attachmentTexts.fileAttachments(context, accountKey, { ...page, chatKey });
27
+ },
28
+ attachments: async (key, { chatId, ...filter }) => {
29
+ const accountKey = findAccountPk(key);
30
+ if (accountKey === undefined)
31
+ return [];
32
+ if (chatId === undefined)
33
+ return attachmentTexts.attachmentViews(context, accountKey, filter);
34
+ const chatKey = findChatPk(accountKey, chatId);
35
+ return chatKey === undefined ? [] : attachmentTexts.attachmentViews(context, accountKey, { ...filter, chatKey });
36
+ },
37
+ };
38
+ };
39
+ export const attachmentsStoreOver = (context, keyed) => ({
40
+ ...keyed,
41
+ localPathOf: async (attachmentPk) => attachmentTexts.localPathOf(context, attachmentPk),
42
+ keepAttachmentText: async (attachmentPk, entry) => {
43
+ let kept = false;
44
+ write(context.database, () => {
45
+ kept = attachmentTexts.keepText(context, attachmentPk, entry);
46
+ });
47
+ return kept;
48
+ },
49
+ });
50
+ //# sourceMappingURL=attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/store/attachments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { ChannelTagMatch } from "../domain/channel-tags.js";
2
+ import type { Chat, Id, Page } from "../domain/models.js";
3
+ import type { ChatMetadata } from "./sqlite/chats.js";
4
+ import type { ChatCompleteness } from "./sqlite/completeness.js";
5
+ import type { StoreContext } from "./sqlite/open.js";
6
+ import type { Where } from "./sqlite/query-filter.js";
7
+ import type { AccountKey, ChatActivity, ChatStats, StoredChatFilter } from "./types.js";
8
+ export interface ChatsStore {
9
+ saveChats(key: AccountKey, chats: Chat[]): Promise<void>;
10
+ /** Newest first. `query` matches three letters or more of a title; `unread` keeps chats with unread messages. */
11
+ chats(key: AccountKey, window: {
12
+ limit?: number;
13
+ offset?: number;
14
+ } & StoredChatFilter): Promise<Page<Chat>>;
15
+ countChats(key: AccountKey, filter?: StoredChatFilter): Promise<number>;
16
+ /** The chats a person is in, newest first — as far as the saved member lists go. */
17
+ chatsWith(key: AccountKey, memberId: Id): Promise<Chat[]>;
18
+ /**
19
+ * Given every chat the account is in, marks the rest `left` and says how many it marked. Only
20
+ * ever from a complete list: a page or a cut list says nothing about the chats it leaves out.
21
+ * Remembers when, so a search can say the store knows the account's whole chat list.
22
+ */
23
+ markChatsLeft(key: AccountKey, present: Id[]): Promise<number>;
24
+ /** The chats marked left and the messages they hold; with `clear`, deletes them and all under them. */
25
+ leftChats(key: AccountKey, options?: {
26
+ clear?: boolean;
27
+ }): Promise<{
28
+ chats: number;
29
+ messages: number;
30
+ }>;
31
+ /** Per chat: whether its history is held up to date, without gaps, back to its start. */
32
+ chatCompleteness(key: AccountKey, chatIds: Id[]): Promise<ChatCompleteness[]>;
33
+ /** Per chat that has messages: how many, the oldest and newest, and when the last one was stored. */
34
+ chatStats(key: AccountKey, chatId?: Id): Promise<ChatStats[]>;
35
+ /** Per chat that spoke since `since` (ms): its newest message and who sent it when stored, never the text. */
36
+ /** `where` is a `tasks agenda` query compiled over `AGENDA_COLUMNS`. */
37
+ chatActivity(key: AccountKey, since: number, where?: Where): Promise<{
38
+ chats: ChatActivity[];
39
+ storedAt: string | null;
40
+ }>;
41
+ chatMetadata(key: AccountKey, chatId: Id): Promise<ChatMetadata | undefined>;
42
+ saveChatMetadata(key: AccountKey, entry: Omit<ChatMetadata, "fetchedAt">): Promise<ChatMetadata>;
43
+ replaceAutoTags(key: AccountKey, chatId: Id, algorithm: string, tags: ChannelTagMatch[]): Promise<void>;
44
+ rankingDiscussionChats(account: AccountKey, chatId: string): Promise<string[]>;
45
+ }
46
+ export declare const chatsStoreOver: (context: StoreContext) => ChatsStore;
47
+ //# sourceMappingURL=chats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/store/chats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { keysOver } from "./keys.js";
3
+ import * as chatQueries from "./sqlite/chats.js";
4
+ import * as completeness from "./sqlite/completeness.js";
5
+ import * as reads from "./sqlite/reads.js";
6
+ import { write } from "./sqlite/transaction.js";
7
+ export const chatsStoreOver = (context) => {
8
+ const { database } = context;
9
+ const { accountPk, findAccountPk, writeState } = keysOver(context);
10
+ return {
11
+ saveChats: async (key, list) => write(database, () => {
12
+ const accountKey = accountPk(key);
13
+ for (const chat of list)
14
+ chatQueries.upsertChat(context, accountKey, chat);
15
+ }),
16
+ chats: async (key, window) => {
17
+ const accountKey = findAccountPk(key);
18
+ return accountKey === undefined
19
+ ? { items: [], hasMore: false }
20
+ : chatQueries.listChats(context, accountKey, window);
21
+ },
22
+ countChats: async (key, filter = {}) => {
23
+ const accountKey = findAccountPk(key);
24
+ return accountKey === undefined ? 0 : chatQueries.countChats(context, accountKey, filter);
25
+ },
26
+ chatsWith: async (key, memberId) => {
27
+ const accountKey = findAccountPk(key);
28
+ return accountKey === undefined ? [] : chatQueries.chatsWith(context, accountKey, key, memberId);
29
+ },
30
+ markChatsLeft: async (key, present) => {
31
+ const accountKey = findAccountPk(key);
32
+ if (accountKey === undefined)
33
+ return 0;
34
+ let marked = 0;
35
+ write(database, () => {
36
+ marked = chatQueries.markLeft(context, accountKey, present);
37
+ writeState(accountKey, completeness.CHAT_LIST_KEY, String(present.length));
38
+ });
39
+ return marked;
40
+ },
41
+ leftChats: async (key, { clear = false } = {}) => {
42
+ const accountKey = findAccountPk(key);
43
+ if (accountKey === undefined)
44
+ return { chats: 0, messages: 0 };
45
+ let found = { pks: [], messages: 0 };
46
+ write(database, () => {
47
+ found = chatQueries.leftChats(context, accountKey);
48
+ if (clear)
49
+ chatQueries.purgeChats(context, found.pks);
50
+ });
51
+ return { chats: found.pks.length, messages: found.messages };
52
+ },
53
+ chatCompleteness: async (key, chatIds) => {
54
+ const accountKey = findAccountPk(key);
55
+ return accountKey === undefined ? [] : completeness.chatCompleteness(context, accountKey, chatIds);
56
+ },
57
+ chatStats: async (key, chatId) => {
58
+ const accountKey = findAccountPk(key);
59
+ return accountKey === undefined ? [] : reads.chatStats(context, accountKey, chatId);
60
+ },
61
+ chatActivity: async (key, since, where) => {
62
+ const accountKey = findAccountPk(key);
63
+ return accountKey === undefined
64
+ ? { chats: [], storedAt: null }
65
+ : reads.chatActivity(context, accountKey, since, where);
66
+ },
67
+ chatMetadata: async (key, chatId) => chatQueries.metadata(context, key, chatId),
68
+ saveChatMetadata: async (key, entry) => chatQueries.saveMetadata(context, key, entry),
69
+ replaceAutoTags: async (key, chatId, algorithm, matches) => write(database, () => chatQueries.replaceAutoTags(context, key, chatId, algorithm, matches)),
70
+ rankingDiscussionChats: async (account, chatId) => {
71
+ const rows = database
72
+ .prepare("SELECT DISTINCT json_extract(CASE WHEN json_valid(m.metadata) THEN m.metadata ELSE '{}' END,'$.graph.discussionChatId') AS id FROM messages m JOIN chats c ON c.id=m.chat_id JOIN accounts ac ON ac.id=m.account_id WHERE ac.provider=? AND ac.external_id=? AND c.external_id=? AND c.kind='channel' AND m.deleted_at IS NULL AND json_extract(CASE WHEN json_valid(m.metadata) THEN m.metadata ELSE '{}' END,'$.graph.version')=1 AND json_type(CASE WHEN json_valid(m.metadata) THEN m.metadata ELSE '{}' END,'$.graph.discussionChatId')='text' LIMIT 101")
73
+ .all(account.provider, account.account, chatId);
74
+ if (rows.length > 100)
75
+ throw new CliError("validation_error", "too many linked discussion groups — narrow the channel scope");
76
+ return rows.map(({ id }) => String(id));
77
+ },
78
+ };
79
+ };
80
+ //# sourceMappingURL=chats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/store/chats.ts"],"names":[],"mappings":"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"}