@wirecat/cli-core 0.279.0 → 0.281.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 (502) hide show
  1. package/dist/background/schedules.d.ts +1 -1
  2. package/dist/background/schedules.d.ts.map +1 -1
  3. package/dist/background/schedules.js +3 -1
  4. package/dist/background/schedules.js.map +1 -1
  5. package/dist/cli/app.d.ts +2 -0
  6. package/dist/cli/app.d.ts.map +1 -1
  7. package/dist/cli/app.js +6 -0
  8. package/dist/cli/app.js.map +1 -1
  9. package/dist/cli/author.d.ts +6 -0
  10. package/dist/cli/author.d.ts.map +1 -1
  11. package/dist/cli/author.js +12 -0
  12. package/dist/cli/author.js.map +1 -1
  13. package/dist/cli/bot/command.js +6 -6
  14. package/dist/cli/bot/command.js.map +1 -1
  15. package/dist/cli/bot/moderation.js +3 -3
  16. package/dist/cli/bot/moderation.js.map +1 -1
  17. package/dist/cli/bot/people.d.ts.map +1 -1
  18. package/dist/cli/bot/people.js +6 -8
  19. package/dist/cli/bot/people.js.map +1 -1
  20. package/dist/cli/config-command.d.ts.map +1 -1
  21. package/dist/cli/config-command.js +10 -6
  22. package/dist/cli/config-command.js.map +1 -1
  23. package/dist/cli/effects.d.ts +7 -0
  24. package/dist/cli/effects.d.ts.map +1 -1
  25. package/dist/cli/effects.js +11 -0
  26. package/dist/cli/effects.js.map +1 -1
  27. package/dist/cli/envelope.d.ts +6 -1
  28. package/dist/cli/envelope.d.ts.map +1 -1
  29. package/dist/cli/envelope.js +22 -8
  30. package/dist/cli/envelope.js.map +1 -1
  31. package/dist/cli/index.d.ts +5 -4
  32. package/dist/cli/index.d.ts.map +1 -1
  33. package/dist/cli/index.js +5 -4
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/cli/meeting-preparation-command.d.ts.map +1 -1
  36. package/dist/cli/meeting-preparation-command.js +13 -8
  37. package/dist/cli/meeting-preparation-command.js.map +1 -1
  38. package/dist/cli/messenger/admin-moderation-command.js +3 -3
  39. package/dist/cli/messenger/admin-moderation-command.js.map +1 -1
  40. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  41. package/dist/cli/messenger/conversations-command.js +0 -3
  42. package/dist/cli/messenger/conversations-command.js.map +1 -1
  43. package/dist/cli/messenger/download-command.d.ts +15 -0
  44. package/dist/cli/messenger/download-command.d.ts.map +1 -1
  45. package/dist/cli/messenger/download-command.js +4 -6
  46. package/dist/cli/messenger/download-command.js.map +1 -1
  47. package/dist/cli/messenger/export-folder.d.ts.map +1 -1
  48. package/dist/cli/messenger/export-folder.js +3 -7
  49. package/dist/cli/messenger/export-folder.js.map +1 -1
  50. package/dist/cli/messenger/flood-command.js +2 -2
  51. package/dist/cli/messenger/flood-command.js.map +1 -1
  52. package/dist/cli/messenger/guard-commands.js +4 -4
  53. package/dist/cli/messenger/guard-commands.js.map +1 -1
  54. package/dist/cli/messenger/mcp-command.js +2 -2
  55. package/dist/cli/messenger/mcp-command.js.map +1 -1
  56. package/dist/cli/messenger/messages-search-command.d.ts +0 -1
  57. package/dist/cli/messenger/messages-search-command.d.ts.map +1 -1
  58. package/dist/cli/messenger/messages-search-command.js +6 -31
  59. package/dist/cli/messenger/messages-search-command.js.map +1 -1
  60. package/dist/cli/messenger/messages-stats-command.d.ts.map +1 -1
  61. package/dist/cli/messenger/messages-stats-command.js +0 -4
  62. package/dist/cli/messenger/messages-stats-command.js.map +1 -1
  63. package/dist/cli/messenger/models-command.js +3 -3
  64. package/dist/cli/messenger/models-command.js.map +1 -1
  65. package/dist/cli/messenger/rankings-command.d.ts.map +1 -1
  66. package/dist/cli/messenger/rankings-command.js +2 -3
  67. package/dist/cli/messenger/rankings-command.js.map +1 -1
  68. package/dist/cli/messenger/replies-command.js +3 -3
  69. package/dist/cli/messenger/replies-command.js.map +1 -1
  70. package/dist/cli/messenger/replies-consents-command.js +3 -3
  71. package/dist/cli/messenger/replies-consents-command.js.map +1 -1
  72. package/dist/cli/messenger/replies-edit-command.js +5 -5
  73. package/dist/cli/messenger/replies-edit-command.js.map +1 -1
  74. package/dist/cli/messenger/schedule-command.d.ts.map +1 -1
  75. package/dist/cli/messenger/schedule-command.js +8 -4
  76. package/dist/cli/messenger/schedule-command.js.map +1 -1
  77. package/dist/cli/messenger/search-answers.js +1 -1
  78. package/dist/cli/messenger/search-answers.js.map +1 -1
  79. package/dist/cli/messenger/searches-command.d.ts.map +1 -1
  80. package/dist/cli/messenger/searches-command.js +1 -4
  81. package/dist/cli/messenger/searches-command.js.map +1 -1
  82. package/dist/cli/messenger/server-command.js +3 -3
  83. package/dist/cli/messenger/server-command.js.map +1 -1
  84. package/dist/cli/messenger/tags-command.d.ts.map +1 -1
  85. package/dist/cli/messenger/tags-command.js +10 -7
  86. package/dist/cli/messenger/tags-command.js.map +1 -1
  87. package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
  88. package/dist/cli/messenger/tasks-command.js +56 -10
  89. package/dist/cli/messenger/tasks-command.js.map +1 -1
  90. package/dist/cli/program.d.ts.map +1 -1
  91. package/dist/cli/program.js +6 -2
  92. package/dist/cli/program.js.map +1 -1
  93. package/dist/cli/reasons.d.ts.map +1 -1
  94. package/dist/cli/reasons.js +2 -0
  95. package/dist/cli/reasons.js.map +1 -1
  96. package/dist/cli/settings.d.ts.map +1 -1
  97. package/dist/cli/settings.js +2 -3
  98. package/dist/cli/settings.js.map +1 -1
  99. package/dist/cli/skill-command.d.ts.map +1 -1
  100. package/dist/cli/skill-command.js +8 -3
  101. package/dist/cli/skill-command.js.map +1 -1
  102. package/dist/cli/store-settings.js +4 -4
  103. package/dist/cli/store-settings.js.map +1 -1
  104. package/dist/cli/upgrade-command.js +2 -2
  105. package/dist/cli/upgrade-command.js.map +1 -1
  106. package/dist/domain/tags.d.ts +1 -1
  107. package/dist/domain/tags.d.ts.map +1 -1
  108. package/dist/domain/tags.js +1 -1
  109. package/dist/domain/tags.js.map +1 -1
  110. package/dist/entities/agenda.d.ts +4 -0
  111. package/dist/entities/agenda.d.ts.map +1 -1
  112. package/dist/entities/agenda.js +4 -0
  113. package/dist/entities/agenda.js.map +1 -1
  114. package/dist/entities/hit.d.ts +1 -1
  115. package/dist/entities/hit.js +1 -1
  116. package/dist/entities/hit.js.map +1 -1
  117. package/dist/entities/index.d.ts +55 -15
  118. package/dist/entities/index.d.ts.map +1 -1
  119. package/dist/entities/note.d.ts +17 -1
  120. package/dist/entities/note.d.ts.map +1 -1
  121. package/dist/entities/note.js +19 -8
  122. package/dist/entities/note.js.map +1 -1
  123. package/dist/entities/tagging.d.ts +1 -1
  124. package/dist/entities/task.d.ts +7 -0
  125. package/dist/entities/task.d.ts.map +1 -1
  126. package/dist/entities/task.js +7 -0
  127. package/dist/entities/task.js.map +1 -1
  128. package/dist/mcp/tools/messages-send.d.ts.map +1 -1
  129. package/dist/mcp/tools/messages-send.js +3 -2
  130. package/dist/mcp/tools/messages-send.js.map +1 -1
  131. package/dist/mcp/tools/rankings.d.ts.map +1 -1
  132. package/dist/mcp/tools/rankings.js +2 -3
  133. package/dist/mcp/tools/rankings.js.map +1 -1
  134. package/dist/mcp/tools/search.d.ts +2 -3
  135. package/dist/mcp/tools/search.d.ts.map +1 -1
  136. package/dist/mcp/tools/search.js +4 -11
  137. package/dist/mcp/tools/search.js.map +1 -1
  138. package/dist/mcp/tools/searches.d.ts.map +1 -1
  139. package/dist/mcp/tools/searches.js +1 -3
  140. package/dist/mcp/tools/searches.js.map +1 -1
  141. package/dist/mcp/tools/tags.d.ts.map +1 -1
  142. package/dist/mcp/tools/tags.js +9 -7
  143. package/dist/mcp/tools/tags.js.map +1 -1
  144. package/dist/mcp/tools/tasks.d.ts.map +1 -1
  145. package/dist/mcp/tools/tasks.js +19 -6
  146. package/dist/mcp/tools/tasks.js.map +1 -1
  147. package/dist/search/account-list.d.ts +3 -1
  148. package/dist/search/account-list.d.ts.map +1 -1
  149. package/dist/search/account-list.js +4 -2
  150. package/dist/search/account-list.js.map +1 -1
  151. package/dist/search/lucene/registry.d.ts +1 -1
  152. package/dist/search/lucene/registry.d.ts.map +1 -1
  153. package/dist/search/lucene/registry.js +2 -2
  154. package/dist/search/lucene/registry.js.map +1 -1
  155. package/dist/search/query.d.ts +0 -28
  156. package/dist/search/query.d.ts.map +1 -1
  157. package/dist/search/query.js +0 -100
  158. package/dist/search/query.js.map +1 -1
  159. package/dist/search/task-signature.d.ts +19 -0
  160. package/dist/search/task-signature.d.ts.map +1 -0
  161. package/dist/search/task-signature.js +105 -0
  162. package/dist/search/task-signature.js.map +1 -0
  163. package/dist/search/task-similarity.d.ts +168 -0
  164. package/dist/search/task-similarity.d.ts.map +1 -0
  165. package/dist/search/task-similarity.js +177 -0
  166. package/dist/search/task-similarity.js.map +1 -0
  167. package/dist/sends/index.d.ts +1 -1
  168. package/dist/sends/index.d.ts.map +1 -1
  169. package/dist/sends/index.js +1 -1
  170. package/dist/sends/index.js.map +1 -1
  171. package/dist/sends/permissions.d.ts.map +1 -1
  172. package/dist/sends/permissions.js +2 -0
  173. package/dist/sends/permissions.js.map +1 -1
  174. package/dist/sends/upload.d.ts +1 -1
  175. package/dist/sends/upload.d.ts.map +1 -1
  176. package/dist/sends/upload.js +87 -15
  177. package/dist/sends/upload.js.map +1 -1
  178. package/dist/services/admin-statistics.d.ts.map +1 -1
  179. package/dist/services/admin-statistics.js +5 -12
  180. package/dist/services/admin-statistics.js.map +1 -1
  181. package/dist/services/agenda.d.ts +5 -1
  182. package/dist/services/agenda.d.ts.map +1 -1
  183. package/dist/services/agenda.js +8 -1
  184. package/dist/services/agenda.js.map +1 -1
  185. package/dist/services/attachments.d.ts.map +1 -1
  186. package/dist/services/attachments.js +1 -1
  187. package/dist/services/attachments.js.map +1 -1
  188. package/dist/services/counters.d.ts.map +1 -1
  189. package/dist/services/counters.js +4 -8
  190. package/dist/services/counters.js.map +1 -1
  191. package/dist/services/embeddings-maintenance.d.ts +4 -6
  192. package/dist/services/embeddings-maintenance.d.ts.map +1 -1
  193. package/dist/services/embeddings-maintenance.js +14 -15
  194. package/dist/services/embeddings-maintenance.js.map +1 -1
  195. package/dist/services/embeddings-search.d.ts.map +1 -1
  196. package/dist/services/embeddings-search.js +1 -6
  197. package/dist/services/embeddings-search.js.map +1 -1
  198. package/dist/services/embeddings.d.ts +0 -2
  199. package/dist/services/embeddings.d.ts.map +1 -1
  200. package/dist/services/embeddings.js.map +1 -1
  201. package/dist/services/index.d.ts +0 -1
  202. package/dist/services/index.d.ts.map +1 -1
  203. package/dist/services/index.js +0 -1
  204. package/dist/services/index.js.map +1 -1
  205. package/dist/services/message-resolution.d.ts +1 -10
  206. package/dist/services/message-resolution.d.ts.map +1 -1
  207. package/dist/services/message-resolution.js +0 -59
  208. package/dist/services/message-resolution.js.map +1 -1
  209. package/dist/services/messages-archive-search.d.ts +1 -1
  210. package/dist/services/messages-archive-search.d.ts.map +1 -1
  211. package/dist/services/messages-archive-search.js +4 -50
  212. package/dist/services/messages-archive-search.js.map +1 -1
  213. package/dist/services/messages-combined.d.ts.map +1 -1
  214. package/dist/services/messages-combined.js +1 -5
  215. package/dist/services/messages-combined.js.map +1 -1
  216. package/dist/services/messages-discovery.js +1 -1
  217. package/dist/services/messages-discovery.js.map +1 -1
  218. package/dist/services/messages-search.d.ts.map +1 -1
  219. package/dist/services/messages-search.js +2 -6
  220. package/dist/services/messages-search.js.map +1 -1
  221. package/dist/services/messages.d.ts +2 -6
  222. package/dist/services/messages.d.ts.map +1 -1
  223. package/dist/services/messages.js +8 -20
  224. package/dist/services/messages.js.map +1 -1
  225. package/dist/services/notes-search.d.ts +1 -1
  226. package/dist/services/notes-search.d.ts.map +1 -1
  227. package/dist/services/notes-search.js +24 -8
  228. package/dist/services/notes-search.js.map +1 -1
  229. package/dist/services/notes-title-tier.d.ts +13 -0
  230. package/dist/services/notes-title-tier.d.ts.map +1 -0
  231. package/dist/services/notes-title-tier.js +41 -0
  232. package/dist/services/notes-title-tier.js.map +1 -0
  233. package/dist/services/pictures.js +1 -1
  234. package/dist/services/pictures.js.map +1 -1
  235. package/dist/services/rankings.d.ts.map +1 -1
  236. package/dist/services/rankings.js +5 -11
  237. package/dist/services/rankings.js.map +1 -1
  238. package/dist/services/retention.d.ts.map +1 -1
  239. package/dist/services/retention.js +1 -4
  240. package/dist/services/retention.js.map +1 -1
  241. package/dist/services/search-all.d.ts +1 -1
  242. package/dist/services/search-all.d.ts.map +1 -1
  243. package/dist/services/search-all.js +0 -1
  244. package/dist/services/search-all.js.map +1 -1
  245. package/dist/services/search-catchup.d.ts.map +1 -1
  246. package/dist/services/search-catchup.js +0 -1
  247. package/dist/services/search-catchup.js.map +1 -1
  248. package/dist/services/search-record.d.ts +0 -4
  249. package/dist/services/search-record.d.ts.map +1 -1
  250. package/dist/services/search-record.js +2 -3
  251. package/dist/services/search-record.js.map +1 -1
  252. package/dist/services/search-refresh.d.ts.map +1 -1
  253. package/dist/services/search-refresh.js +3 -9
  254. package/dist/services/search-refresh.js.map +1 -1
  255. package/dist/services/searches.d.ts +0 -1
  256. package/dist/services/searches.d.ts.map +1 -1
  257. package/dist/services/searches.js +13 -35
  258. package/dist/services/searches.js.map +1 -1
  259. package/dist/services/server-search.d.ts +1 -1
  260. package/dist/services/server-search.d.ts.map +1 -1
  261. package/dist/services/server-search.js +0 -3
  262. package/dist/services/server-search.js.map +1 -1
  263. package/dist/services/tags.d.ts +3 -0
  264. package/dist/services/tags.d.ts.map +1 -1
  265. package/dist/services/tags.js +13 -5
  266. package/dist/services/tags.js.map +1 -1
  267. package/dist/services/task-categories.d.ts +17 -0
  268. package/dist/services/task-categories.d.ts.map +1 -0
  269. package/dist/services/task-categories.js +113 -0
  270. package/dist/services/task-categories.js.map +1 -0
  271. package/dist/services/task-rules.d.ts.map +1 -1
  272. package/dist/services/task-rules.js +3 -0
  273. package/dist/services/task-rules.js.map +1 -1
  274. package/dist/services/tasks.d.ts +14 -3
  275. package/dist/services/tasks.d.ts.map +1 -1
  276. package/dist/services/tasks.js +58 -6
  277. package/dist/services/tasks.js.map +1 -1
  278. package/dist/services/thread-context.d.ts +1 -1
  279. package/dist/services/thread-context.d.ts.map +1 -1
  280. package/dist/services/thread-context.js +3 -9
  281. package/dist/services/thread-context.js.map +1 -1
  282. package/dist/store/index.d.ts +1 -1
  283. package/dist/store/index.d.ts.map +1 -1
  284. package/dist/store/index.js.map +1 -1
  285. package/dist/store/migrations.d.ts +2 -1
  286. package/dist/store/migrations.d.ts.map +1 -1
  287. package/dist/store/migrations.js +5 -2
  288. package/dist/store/migrations.js.map +1 -1
  289. package/dist/store/sqlite/attachment-texts.js +2 -2
  290. package/dist/store/sqlite/attachment-texts.js.map +1 -1
  291. package/dist/store/sqlite/backfill.d.ts.map +1 -1
  292. package/dist/store/sqlite/backfill.js +6 -11
  293. package/dist/store/sqlite/backfill.js.map +1 -1
  294. package/dist/store/sqlite/catalog.d.ts.map +1 -1
  295. package/dist/store/sqlite/catalog.js +3 -3
  296. package/dist/store/sqlite/catalog.js.map +1 -1
  297. package/dist/store/sqlite/conversations.d.ts.map +1 -1
  298. package/dist/store/sqlite/conversations.js +3 -8
  299. package/dist/store/sqlite/conversations.js.map +1 -1
  300. package/dist/store/sqlite/document-pictures.d.ts.map +1 -1
  301. package/dist/store/sqlite/document-pictures.js +3 -3
  302. package/dist/store/sqlite/document-pictures.js.map +1 -1
  303. package/dist/store/sqlite/email-index.js +4 -4
  304. package/dist/store/sqlite/email-index.js.map +1 -1
  305. package/dist/store/sqlite/emails.js +5 -5
  306. package/dist/store/sqlite/emails.js.map +1 -1
  307. package/dist/store/sqlite/facts.d.ts.map +1 -1
  308. package/dist/store/sqlite/facts.js +3 -3
  309. package/dist/store/sqlite/facts.js.map +1 -1
  310. package/dist/store/sqlite/folded.d.ts.map +1 -1
  311. package/dist/store/sqlite/folded.js +7 -12
  312. package/dist/store/sqlite/folded.js.map +1 -1
  313. package/dist/store/sqlite/index-state.d.ts +4 -0
  314. package/dist/store/sqlite/index-state.d.ts.map +1 -0
  315. package/dist/store/sqlite/index-state.js +8 -0
  316. package/dist/store/sqlite/index-state.js.map +1 -0
  317. package/dist/store/sqlite/involvement-queue.d.ts +1 -1
  318. package/dist/store/sqlite/involvement-queue.js +1 -1
  319. package/dist/store/sqlite/involvements.js +3 -3
  320. package/dist/store/sqlite/involvements.js.map +1 -1
  321. package/dist/store/sqlite/knowledge.d.ts.map +1 -1
  322. package/dist/store/sqlite/knowledge.js +15 -10
  323. package/dist/store/sqlite/knowledge.js.map +1 -1
  324. package/dist/store/sqlite/log-pruning.d.ts.map +1 -1
  325. package/dist/store/sqlite/log-pruning.js +3 -8
  326. package/dist/store/sqlite/log-pruning.js.map +1 -1
  327. package/dist/store/sqlite/lucene.d.ts.map +1 -1
  328. package/dist/store/sqlite/lucene.js +3 -8
  329. package/dist/store/sqlite/lucene.js.map +1 -1
  330. package/dist/store/sqlite/mail-rules.js +3 -3
  331. package/dist/store/sqlite/mail-rules.js.map +1 -1
  332. package/dist/store/sqlite/manifest.d.ts.map +1 -1
  333. package/dist/store/sqlite/manifest.js +1 -0
  334. package/dist/store/sqlite/manifest.js.map +1 -1
  335. package/dist/store/sqlite/meeting-context-links.d.ts.map +1 -1
  336. package/dist/store/sqlite/meeting-context-links.js +8 -7
  337. package/dist/store/sqlite/meeting-context-links.js.map +1 -1
  338. package/dist/store/sqlite/meeting-hit-index.d.ts.map +1 -1
  339. package/dist/store/sqlite/meeting-hit-index.js +4 -3
  340. package/dist/store/sqlite/meeting-hit-index.js.map +1 -1
  341. package/dist/store/sqlite/meeting-hit-search.d.ts.map +1 -1
  342. package/dist/store/sqlite/meeting-hit-search.js +3 -2
  343. package/dist/store/sqlite/meeting-hit-search.js.map +1 -1
  344. package/dist/store/sqlite/meeting-operation.d.ts +0 -2
  345. package/dist/store/sqlite/meeting-operation.d.ts.map +1 -1
  346. package/dist/store/sqlite/meeting-operation.js +0 -15
  347. package/dist/store/sqlite/meeting-operation.js.map +1 -1
  348. package/dist/store/sqlite/meeting-participant-search.d.ts.map +1 -1
  349. package/dist/store/sqlite/meeting-participant-search.js +2 -2
  350. package/dist/store/sqlite/meeting-participant-search.js.map +1 -1
  351. package/dist/store/sqlite/meeting-preparation-context.d.ts.map +1 -1
  352. package/dist/store/sqlite/meeting-preparation-context.js +2 -2
  353. package/dist/store/sqlite/meeting-preparation-context.js.map +1 -1
  354. package/dist/store/sqlite/meeting-projects.d.ts.map +1 -1
  355. package/dist/store/sqlite/meeting-projects.js +2 -2
  356. package/dist/store/sqlite/meeting-projects.js.map +1 -1
  357. package/dist/store/sqlite/meeting-reads.d.ts +0 -3
  358. package/dist/store/sqlite/meeting-reads.d.ts.map +1 -1
  359. package/dist/store/sqlite/meeting-reads.js +6 -18
  360. package/dist/store/sqlite/meeting-reads.js.map +1 -1
  361. package/dist/store/sqlite/meeting-series-history.d.ts.map +1 -1
  362. package/dist/store/sqlite/meeting-series-history.js +2 -2
  363. package/dist/store/sqlite/meeting-series-history.js.map +1 -1
  364. package/dist/store/sqlite/meeting-vectors.d.ts.map +1 -1
  365. package/dist/store/sqlite/meeting-vectors.js +6 -6
  366. package/dist/store/sqlite/meeting-vectors.js.map +1 -1
  367. package/dist/store/sqlite/meetings.d.ts.map +1 -1
  368. package/dist/store/sqlite/meetings.js +6 -6
  369. package/dist/store/sqlite/meetings.js.map +1 -1
  370. package/dist/store/sqlite/memories.d.ts.map +1 -1
  371. package/dist/store/sqlite/memories.js +2 -2
  372. package/dist/store/sqlite/memories.js.map +1 -1
  373. package/dist/store/sqlite/mention-drain.d.ts +39 -0
  374. package/dist/store/sqlite/mention-drain.d.ts.map +1 -0
  375. package/dist/store/sqlite/mention-drain.js +147 -0
  376. package/dist/store/sqlite/mention-drain.js.map +1 -0
  377. package/dist/store/sqlite/mentions.d.ts +0 -4
  378. package/dist/store/sqlite/mentions.d.ts.map +1 -1
  379. package/dist/store/sqlite/mentions.js +7 -154
  380. package/dist/store/sqlite/mentions.js.map +1 -1
  381. package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
  382. package/dist/store/sqlite/migrations.generated.js +9 -0
  383. package/dist/store/sqlite/migrations.generated.js.map +1 -1
  384. package/dist/store/sqlite/note-index.d.ts.map +1 -1
  385. package/dist/store/sqlite/note-index.js +5 -4
  386. package/dist/store/sqlite/note-index.js.map +1 -1
  387. package/dist/store/sqlite/note-search.d.ts.map +1 -1
  388. package/dist/store/sqlite/note-search.js +3 -6
  389. package/dist/store/sqlite/note-search.js.map +1 -1
  390. package/dist/store/sqlite/notes.d.ts.map +1 -1
  391. package/dist/store/sqlite/notes.js +13 -14
  392. package/dist/store/sqlite/notes.js.map +1 -1
  393. package/dist/store/sqlite/proposed-actions.d.ts.map +1 -1
  394. package/dist/store/sqlite/proposed-actions.js +3 -3
  395. package/dist/store/sqlite/proposed-actions.js.map +1 -1
  396. package/dist/store/sqlite/schema.d.ts +87 -0
  397. package/dist/store/sqlite/schema.d.ts.map +1 -1
  398. package/dist/store/sqlite/schema.js +7 -0
  399. package/dist/store/sqlite/schema.js.map +1 -1
  400. package/dist/store/sqlite/search-index.d.ts +0 -3
  401. package/dist/store/sqlite/search-index.d.ts.map +1 -1
  402. package/dist/store/sqlite/search-index.js +10 -29
  403. package/dist/store/sqlite/search-index.js.map +1 -1
  404. package/dist/store/sqlite/search.d.ts +1 -1
  405. package/dist/store/sqlite/search.d.ts.map +1 -1
  406. package/dist/store/sqlite/search.js +4 -8
  407. package/dist/store/sqlite/search.js.map +1 -1
  408. package/dist/store/sqlite/searches.d.ts +1 -1
  409. package/dist/store/sqlite/searches.d.ts.map +1 -1
  410. package/dist/store/sqlite/stems-fill.d.ts +30 -0
  411. package/dist/store/sqlite/stems-fill.d.ts.map +1 -0
  412. package/dist/store/sqlite/stems-fill.js +119 -0
  413. package/dist/store/sqlite/stems-fill.js.map +1 -0
  414. package/dist/store/sqlite/stems.d.ts +14 -28
  415. package/dist/store/sqlite/stems.d.ts.map +1 -1
  416. package/dist/store/sqlite/stems.js +8 -123
  417. package/dist/store/sqlite/stems.js.map +1 -1
  418. package/dist/store/sqlite/tags.d.ts +10 -2
  419. package/dist/store/sqlite/tags.d.ts.map +1 -1
  420. package/dist/store/sqlite/tags.js +25 -7
  421. package/dist/store/sqlite/tags.js.map +1 -1
  422. package/dist/store/sqlite/task-keys.d.ts +16 -0
  423. package/dist/store/sqlite/task-keys.d.ts.map +1 -0
  424. package/dist/store/sqlite/task-keys.js +40 -0
  425. package/dist/store/sqlite/task-keys.js.map +1 -0
  426. package/dist/store/sqlite/task-relations.d.ts +1 -1
  427. package/dist/store/sqlite/task-relations.d.ts.map +1 -1
  428. package/dist/store/sqlite/task-relations.js +14 -9
  429. package/dist/store/sqlite/task-relations.js.map +1 -1
  430. package/dist/store/sqlite/tasks.d.ts +1 -7
  431. package/dist/store/sqlite/tasks.d.ts.map +1 -1
  432. package/dist/store/sqlite/tasks.js +23 -28
  433. package/dist/store/sqlite/tasks.js.map +1 -1
  434. package/dist/store/sqlite/transaction.d.ts +19 -0
  435. package/dist/store/sqlite/transaction.d.ts.map +1 -0
  436. package/dist/store/sqlite/transaction.js +77 -0
  437. package/dist/store/sqlite/transaction.js.map +1 -0
  438. package/dist/store/sqlite/vocabulary.d.ts.map +1 -1
  439. package/dist/store/sqlite/vocabulary.js +6 -18
  440. package/dist/store/sqlite/vocabulary.js.map +1 -1
  441. package/dist/store/sqlite/words.d.ts +1 -61
  442. package/dist/store/sqlite/words.d.ts.map +1 -1
  443. package/dist/store/sqlite/words.js +0 -225
  444. package/dist/store/sqlite/words.js.map +1 -1
  445. package/dist/store/sqlite/work-tasks.d.ts +15 -1
  446. package/dist/store/sqlite/work-tasks.d.ts.map +1 -1
  447. package/dist/store/sqlite/work-tasks.js +49 -5
  448. package/dist/store/sqlite/work-tasks.js.map +1 -1
  449. package/dist/store/store.d.ts +21 -41
  450. package/dist/store/store.d.ts.map +1 -1
  451. package/dist/store/store.js +52 -117
  452. package/dist/store/store.js.map +1 -1
  453. package/dist/tasks/model.d.ts +7 -0
  454. package/dist/tasks/model.d.ts.map +1 -1
  455. package/dist/tasks/model.js +2 -1
  456. package/dist/tasks/model.js.map +1 -1
  457. package/dist/tasks/service.d.ts +1 -0
  458. package/dist/tasks/service.d.ts.map +1 -1
  459. package/dist/tasks/service.js.map +1 -1
  460. package/package.json +1 -1
  461. package/parity.json +51 -23
  462. package/skills/follow-ups/SKILL.md +4 -2
  463. package/dist/embeddings/pool.d.ts +0 -17
  464. package/dist/embeddings/pool.d.ts.map +0 -1
  465. package/dist/embeddings/pool.js +0 -22
  466. package/dist/embeddings/pool.js.map +0 -1
  467. package/dist/embeddings/worker.d.ts +0 -2
  468. package/dist/embeddings/worker.d.ts.map +0 -1
  469. package/dist/embeddings/worker.js +0 -22
  470. package/dist/embeddings/worker.js.map +0 -1
  471. package/dist/embeddings/workers.d.ts +0 -8
  472. package/dist/embeddings/workers.d.ts.map +0 -1
  473. package/dist/embeddings/workers.js +0 -51
  474. package/dist/embeddings/workers.js.map +0 -1
  475. package/dist/search/legacy-regex.d.ts +0 -7
  476. package/dist/search/legacy-regex.d.ts.map +0 -1
  477. package/dist/search/legacy-regex.js +0 -48
  478. package/dist/search/legacy-regex.js.map +0 -1
  479. package/dist/search/lucene/migration.d.ts +0 -21
  480. package/dist/search/lucene/migration.d.ts.map +0 -1
  481. package/dist/search/lucene/migration.js +0 -31
  482. package/dist/search/lucene/migration.js.map +0 -1
  483. package/dist/search/search.d.ts +0 -27
  484. package/dist/search/search.d.ts.map +0 -1
  485. package/dist/search/search.js +0 -66
  486. package/dist/search/search.js.map +0 -1
  487. package/dist/services/message-query-validation.d.ts +0 -3
  488. package/dist/services/message-query-validation.d.ts.map +0 -1
  489. package/dist/services/message-query-validation.js +0 -14
  490. package/dist/services/message-query-validation.js.map +0 -1
  491. package/dist/store/sqlite/atomic.d.ts +0 -8
  492. package/dist/store/sqlite/atomic.d.ts.map +0 -1
  493. package/dist/store/sqlite/atomic.js +0 -28
  494. package/dist/store/sqlite/atomic.js.map +0 -1
  495. package/dist/store/sqlite/legacy-regex.d.ts +0 -7
  496. package/dist/store/sqlite/legacy-regex.d.ts.map +0 -1
  497. package/dist/store/sqlite/legacy-regex.js +0 -42
  498. package/dist/store/sqlite/legacy-regex.js.map +0 -1
  499. package/dist/store/sqlite/read-snapshot.d.ts +0 -4
  500. package/dist/store/sqlite/read-snapshot.d.ts.map +0 -1
  501. package/dist/store/sqlite/read-snapshot.js +0 -14
  502. package/dist/store/sqlite/read-snapshot.js.map +0 -1
@@ -0,0 +1,119 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { analyzerIdentity, createStemmer, DEFAULT_STEMMERS, DEFAULT_STEMMERS_VERSION, SNOWBALL_VERSION, } from "../../search/stem.js";
3
+ import { claim, INDEX, nextQueued, savedStemmers, saveStoreStemmers, stemmersOrigin, stemsState, stemWriter, storeStemmers, } from "./stems.js";
4
+ import { writeBatch } from "./transaction.js";
5
+ /**
6
+ * Brings the stems towards "ready" in short write transactions: the messages up to the watermark, then
7
+ * the queue. One stemmer per run, so its cache serves every batch. Never rebuilds: a row built by other
8
+ * choices is left for `store migrate` or `store reindex`.
9
+ */
10
+ export const fillStems = (database, { batch = 5_000, until = () => false, onBatch, now = Date.now, } = {}) => {
11
+ const filled = { stemmed: 0, drained: 0 };
12
+ const before = stemsState(database);
13
+ // Every search asks; when all is built, or the row waits for a rebuild, it must not take the write lock.
14
+ const stemmers = storeStemmers(database);
15
+ if (!before || before.ready || before.cause !== "building" || !stemmers)
16
+ return filled;
17
+ const identity = analyzerIdentity(stemmers);
18
+ const stemmer = createStemmer(stemmers);
19
+ const writer = stemWriter(database, stemmer);
20
+ const advance = database.prepare("UPDATE search_index_state SET filled_through = ? WHERE name = ?");
21
+ for (;;) {
22
+ const state = stemsState(database);
23
+ if (!state || state.filledThrough >= state.watermark || until())
24
+ break;
25
+ const to = Math.min(state.filledThrough + batch, state.watermark);
26
+ const done = writeBatch(database, () => {
27
+ if (!claim(database, identity))
28
+ return undefined;
29
+ const count = writer.range(state.filledThrough, to);
30
+ advance.run(to, INDEX);
31
+ return count;
32
+ });
33
+ if (done === undefined)
34
+ return filled;
35
+ filled.stemmed += done;
36
+ onBatch?.("stemmed", filled.stemmed);
37
+ }
38
+ for (;;) {
39
+ if (until())
40
+ break;
41
+ const done = writeBatch(database, () => {
42
+ const pks = nextQueued(database, batch);
43
+ return pks.length === 0 || !claim(database, identity) ? 0 : writer.queued(pks);
44
+ });
45
+ if (done === 0)
46
+ break;
47
+ filled.drained += done;
48
+ onBatch?.("drained", filled.drained);
49
+ }
50
+ const state = stemsState(database);
51
+ if (state && state.filledThrough >= state.watermark && state.builtAt === null && state.built === identity) {
52
+ database.prepare("UPDATE search_index_state SET built_at = ? WHERE name = ?").run(now(), INDEX);
53
+ }
54
+ return filled;
55
+ };
56
+ const snowballOf = (identity) => (/^snowball-(\d+)\.(\d+)\.(\d+)/.exec(identity)?.slice(1) ?? []).map(Number);
57
+ const newer = (a, b) => {
58
+ for (let i = 0; i < 3; i++)
59
+ if ((a[i] ?? 0) !== (b[i] ?? 0))
60
+ return (a[i] ?? 0) > (b[i] ?? 0);
61
+ return false;
62
+ };
63
+ /**
64
+ * Empties the stems and starts them again from the newest message, claimed by the store's setting —
65
+ * for `store reindex`, and for `store migrate` when the stems were built by other choices. A row built
66
+ * by a newer Snowball than this binary has is refused: rebuilding it would downgrade every newer tool.
67
+ */
68
+ export const resetStems = (database, { force = false, now = Date.now } = {}) => {
69
+ const state = stemsState(database);
70
+ if (!state)
71
+ return false;
72
+ if (!force && state.cause !== "stemmer_changed" && state.cause !== "stemmer_unknown")
73
+ return false;
74
+ if (state.cause === "stemmer_unknown") {
75
+ throw new CliError("validation_error", "the store asks for stemmers this tool does not know — upgrade this tool, or choose again with config set search_stemmers.*", { reason: "stemmer.unknown" });
76
+ }
77
+ if (state.built !== null && newer(snowballOf(state.built), snowballOf(`snowball-${SNOWBALL_VERSION}`))) {
78
+ throw new CliError("validation_error", `the stems were built by Snowball ${snowballOf(state.built).join(".")}, newer than this tool's ${SNOWBALL_VERSION} — upgrade this tool`, { reason: "stemmer.newer", built: state.built, wanted: state.wanted });
79
+ }
80
+ writeBatch(database, () => {
81
+ // Saved, not defaulted: an older tool with another default then refuses as "unknown" instead of
82
+ // rebuilding the stems back to its own choice on its next reindex.
83
+ if (savedStemmers(database) === undefined)
84
+ saveStoreStemmers(database, DEFAULT_STEMMERS, now(), "default");
85
+ database.exec(`INSERT INTO ${INDEX} (${INDEX}) VALUES ('delete-all')`);
86
+ database.exec("DELETE FROM message_stems_pending");
87
+ database
88
+ .prepare(`UPDATE search_index_state SET watermark = (SELECT coalesce(max(id), 0) FROM messages),
89
+ filled_through = 0, built_at = NULL, analyzer = ? WHERE name = ?`)
90
+ .run(state.wanted, INDEX);
91
+ });
92
+ return true;
93
+ };
94
+ /**
95
+ * Stems an older tool built with its own default, while nobody chose stemmers, start again with this
96
+ * build's default: nobody chose the old one, so it waits for no `store reindex`. Like a first fill
97
+ * from then on. A saved default is replaced only by newer defaults, so two versions never rebuild each
98
+ * other's. A row a newer Snowball built is left for an upgrade.
99
+ */
100
+ export const followDefaultStemmers = (database, now = Date.now) => {
101
+ const saved = stemmersOrigin(database);
102
+ if (saved?.origin === "owner")
103
+ return false;
104
+ if (saved?.origin === "default") {
105
+ if (saved.defaults >= DEFAULT_STEMMERS_VERSION || savedStemmers(database) === null)
106
+ return false;
107
+ const built = stemsState(database)?.built;
108
+ if (built && newer(snowballOf(built), snowballOf(`snowball-${SNOWBALL_VERSION}`)))
109
+ return false;
110
+ saveStoreStemmers(database, DEFAULT_STEMMERS, now(), "default");
111
+ }
112
+ const state = stemsState(database);
113
+ if (state?.cause !== "stemmer_changed" || state.built === null)
114
+ return false;
115
+ if (newer(snowballOf(state.built), snowballOf(`snowball-${SNOWBALL_VERSION}`)))
116
+ return false;
117
+ return resetStems(database, { now });
118
+ };
119
+ //# sourceMappingURL=stems-fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stems-fill.js","sourceRoot":"","sources":["../../../src/store/sqlite/stems-fill.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type Stemmer, type Stemmers } from "../../search/stem.js";
2
2
  import type { CacheDatabase } from "../driver.js";
3
+ export declare const INDEX = "message_stems";
3
4
  /** Stems a store write leaves for the next fill: an older binary may have left thousands queued. */
4
5
  export declare const DRAIN_ON_WRITE = 500;
5
6
  export interface StemsState {
@@ -25,10 +26,12 @@ export interface StemsFill {
25
26
  drained: number;
26
27
  }
27
28
  /**
28
- * The choices `config set searchStemmers.*` saved; `undefined` while the defaults apply, `null` when a
29
+ * The choices `config set search_stemmers.*` saved; `undefined` while the defaults apply, `null` when a
29
30
  * newer tool saved one this build does not know. Never throws: every open and write reads it.
30
31
  */
31
32
  export declare const savedStemmers: (database: CacheDatabase) => Stemmers | null | undefined;
33
+ /** The store-wide choices every fill, drain and readiness check uses; `null` stems nothing. */
34
+ export declare const storeStemmers: (database: CacheDatabase) => Stemmers | null;
32
35
  /**
33
36
  * `default` is saved beside the defaults' version; older builds read only `cyrillic` and `latin`, and take
34
37
  * any saved value as the owner's choice. A setting without `origin` is the owner's, or a default saved by
@@ -44,6 +47,16 @@ export declare const stemmersOrigin: (database: CacheDatabase) => {
44
47
  } | undefined;
45
48
  /** `undefined` on a file before version 15. */
46
49
  export declare const stemsState: (database: CacheDatabase) => StemsState | undefined;
50
+ /**
51
+ * Whether this binary may write stems, decided inside the write transaction: an unbuilt row is claimed
52
+ * with its analyzer, a row built by other choices is left alone — so the index never mixes two stemmers.
53
+ */
54
+ export declare const claim: (database: CacheDatabase, identity: string) => boolean;
55
+ export declare const stemWriter: (database: CacheDatabase, stemmer: Stemmer) => {
56
+ range: (from: number, to: number) => number;
57
+ queued: (pks: number[]) => number;
58
+ };
59
+ export declare const nextQueued: (database: CacheDatabase, limit: number) => number[];
47
60
  /**
48
61
  * Stems the messages a store write queued, inside that write's transaction. `stemmerFor` is the store's,
49
62
  * so one cache serves every write while the setting stays the same.
@@ -51,31 +64,4 @@ export declare const stemsState: (database: CacheDatabase) => StemsState | undef
51
64
  export declare const drainStems: (database: CacheDatabase, stemmerFor: (stemmers: Stemmers) => Stemmer, limit?: number) => number;
52
65
  /** Keeps one stemmer while the setting stays the same, and starts a fresh cache when it changes. */
53
66
  export declare const stemmerCache: () => ((stemmers: Stemmers) => Stemmer);
54
- /**
55
- * Brings the stems towards "ready" in short write transactions: the messages up to the watermark, then
56
- * the queue. One stemmer per run, so its cache serves every batch. Never rebuilds: a row built by other
57
- * choices is left for `store migrate` or `store reindex`.
58
- */
59
- export declare const fillStems: (database: CacheDatabase, { batch, until, onBatch, now, }?: {
60
- batch?: number;
61
- until?: () => boolean;
62
- onBatch?: (step: string, done: number) => void;
63
- now?: () => number;
64
- }) => StemsFill;
65
- /**
66
- * Empties the stems and starts them again from the newest message, claimed by the store's setting —
67
- * for `store reindex`, and for `store migrate` when the stems were built by other choices. A row built
68
- * by a newer Snowball than this binary has is refused: rebuilding it would downgrade every newer tool.
69
- */
70
- export declare const resetStems: (database: CacheDatabase, { force, now }?: {
71
- force?: boolean;
72
- now?: () => number;
73
- }) => boolean;
74
- /**
75
- * Stems an older tool built with its own default, while nobody chose stemmers, start again with this
76
- * build's default: nobody chose the old one, so it waits for no `store reindex`. Like a first fill
77
- * from then on. A saved default is replaced only by newer defaults, so two versions never rebuild each
78
- * other's. A row a newer Snowball built is left for an upgrade.
79
- */
80
- export declare const followDefaultStemmers: (database: CacheDatabase, now?: () => number) => boolean;
81
67
  //# sourceMappingURL=stems.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stems.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/stems.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAMjD,oGAAoG;AACpG,eAAO,MAAM,cAAc,MAAM,CAAA;AAEjC,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;IAC1D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,aAAc,aAAa,KAAG,QAAQ,GAAG,IAAI,GAAG,SAQzE,CAAA;AAUD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,aAClB,aAAa,YACb,QAAQ,OACb,MAAM,WACH,OAAO,GAAG,SAAS,KAC1B,IAQF,CAAA;AAED,2GAA2G;AAC3G,eAAO,MAAM,cAAc,aACf,aAAa,KACtB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAWlE,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,UAAU,aAAc,aAAa,KAAG,UAAU,GAAG,SAsBjE,CAAA;AAuDD;;;GAGG;AACH,eAAO,MAAM,UAAU,aACX,aAAa,cACX,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,qBAE1C,MAOF,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,YAAY,QAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAM/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,aACV,aAAa,oCAMpB;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,KAC/G,SAuCF,CAAA;AAUD;;;;GAIG;AACH,eAAO,MAAM,UAAU,aACX,aAAa,mBACY;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,KACzE,OAgCF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,aAAc,aAAa,QAAO,MAAM,MAAM,KAAc,OAa7F,CAAA"}
1
+ {"version":3,"file":"stems.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/stems.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,KAAK,kBAAkB,CAAA;AAGpC,oGAAoG;AACpG,eAAO,MAAM,cAAc,MAAM,CAAA;AAEjC,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;IAC1D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,aAAc,aAAa,KAAG,QAAQ,GAAG,IAAI,GAAG,SAQzE,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,aAAa,aAAc,aAAa,KAAG,QAAQ,GAAG,IAGlE,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,aAClB,aAAa,YACb,QAAQ,OACb,MAAM,WACH,OAAO,GAAG,SAAS,KAC1B,IAQF,CAAA;AAED,2GAA2G;AAC3G,eAAO,MAAM,cAAc,aACf,aAAa,KACtB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAWlE,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,UAAU,aAAc,aAAa,KAAG,UAAU,GAAG,SAsBjE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,aAAc,aAAa,YAAY,MAAM,KAAG,OASjE,CAAA;AAED,eAAO,MAAM,UAAU,aAAc,aAAa,WAAW,OAAO;IAiBhE,KAAK,SAAS,MAAM,MAAM,MAAM;IAKhC,MAAM,QAAQ,MAAM,EAAE;CAQzB,CAAA;AAED,eAAO,MAAM,UAAU,aAAc,aAAa,SAAS,MAAM,KAAG,MAAM,EAIzC,CAAA;AAEjC;;;GAGG;AACH,eAAO,MAAM,UAAU,aACX,aAAa,cACX,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,qBAE1C,MAOF,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,YAAY,QAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAM/D,CAAA"}
@@ -1,12 +1,11 @@
1
- import { CliError } from "@wirecat/cli-base";
2
- import { analyzerIdentity, createStemmer, DEFAULT_STEMMERS, DEFAULT_STEMMERS_VERSION, parseStemmers, SNOWBALL_VERSION, } from "../../search/stem.js";
3
- import { inBatch, indexRow } from "./search-index.js";
4
- const INDEX = "message_stems";
1
+ import { analyzerIdentity, createStemmer, DEFAULT_STEMMERS, DEFAULT_STEMMERS_VERSION, parseStemmers, } from "../../search/stem.js";
2
+ import { indexRow } from "./index-state.js";
3
+ export const INDEX = "message_stems";
5
4
  const SETTING = "searchStemmers";
6
5
  /** Stems a store write leaves for the next fill: an older binary may have left thousands queued. */
7
6
  export const DRAIN_ON_WRITE = 500;
8
7
  /**
9
- * The choices `config set searchStemmers.*` saved; `undefined` while the defaults apply, `null` when a
8
+ * The choices `config set search_stemmers.*` saved; `undefined` while the defaults apply, `null` when a
10
9
  * newer tool saved one this build does not know. Never throws: every open and write reads it.
11
10
  */
12
11
  export const savedStemmers = (database) => {
@@ -21,7 +20,7 @@ export const savedStemmers = (database) => {
21
20
  }
22
21
  };
23
22
  /** The store-wide choices every fill, drain and readiness check uses; `null` stems nothing. */
24
- const storeStemmers = (database) => {
23
+ export const storeStemmers = (database) => {
25
24
  const saved = savedStemmers(database);
26
25
  return saved === undefined ? DEFAULT_STEMMERS : saved;
27
26
  };
@@ -84,7 +83,7 @@ export const stemsState = (database) => {
84
83
  * Whether this binary may write stems, decided inside the write transaction: an unbuilt row is claimed
85
84
  * with its analyzer, a row built by other choices is left alone — so the index never mixes two stemmers.
86
85
  */
87
- const claim = (database, identity) => {
86
+ export const claim = (database, identity) => {
88
87
  const built = indexRow(database, INDEX)?.analyzer;
89
88
  if (built === undefined)
90
89
  return false;
@@ -96,7 +95,7 @@ const claim = (database, identity) => {
96
95
  }
97
96
  return built === identity;
98
97
  };
99
- const stemWriter = (database, stemmer) => {
98
+ export const stemWriter = (database, stemmer) => {
100
99
  const read = database.prepare(`SELECT id AS pk, text, 'c' || chat_id || coalesce(' s' || sender_identity_id, '') AS scope
101
100
  FROM messages WHERE id > ? AND id <= ?`);
102
101
  const one = database.prepare("SELECT text, 'c' || chat_id || coalesce(' s' || sender_identity_id, '') AS scope FROM messages WHERE id = ?");
@@ -126,7 +125,7 @@ const stemWriter = (database, stemmer) => {
126
125
  },
127
126
  };
128
127
  };
129
- const nextQueued = (database, limit) => database
128
+ export const nextQueued = (database, limit) => database
130
129
  .prepare("SELECT id AS pk FROM message_stems_pending ORDER BY id LIMIT ?")
131
130
  .all(limit)
132
131
  .map((row) => Number(row.pk));
@@ -153,118 +152,4 @@ export const stemmerCache = () => {
153
152
  return stemmer;
154
153
  };
155
154
  };
156
- /**
157
- * Brings the stems towards "ready" in short write transactions: the messages up to the watermark, then
158
- * the queue. One stemmer per run, so its cache serves every batch. Never rebuilds: a row built by other
159
- * choices is left for `store migrate` or `store reindex`.
160
- */
161
- export const fillStems = (database, { batch = 5_000, until = () => false, onBatch, now = Date.now, } = {}) => {
162
- const filled = { stemmed: 0, drained: 0 };
163
- const before = stemsState(database);
164
- // Every search asks; when all is built, or the row waits for a rebuild, it must not take the write lock.
165
- const stemmers = storeStemmers(database);
166
- if (!before || before.ready || before.cause !== "building" || !stemmers)
167
- return filled;
168
- const identity = analyzerIdentity(stemmers);
169
- const stemmer = createStemmer(stemmers);
170
- const writer = stemWriter(database, stemmer);
171
- const advance = database.prepare("UPDATE search_index_state SET filled_through = ? WHERE name = ?");
172
- for (;;) {
173
- const state = stemsState(database);
174
- if (!state || state.filledThrough >= state.watermark || until())
175
- break;
176
- const to = Math.min(state.filledThrough + batch, state.watermark);
177
- const done = inBatch(database, () => {
178
- if (!claim(database, identity))
179
- return undefined;
180
- const count = writer.range(state.filledThrough, to);
181
- advance.run(to, INDEX);
182
- return count;
183
- });
184
- if (done === undefined)
185
- return filled;
186
- filled.stemmed += done;
187
- onBatch?.("stemmed", filled.stemmed);
188
- }
189
- for (;;) {
190
- if (until())
191
- break;
192
- const done = inBatch(database, () => {
193
- const pks = nextQueued(database, batch);
194
- return pks.length === 0 || !claim(database, identity) ? 0 : writer.queued(pks);
195
- });
196
- if (done === 0)
197
- break;
198
- filled.drained += done;
199
- onBatch?.("drained", filled.drained);
200
- }
201
- const state = stemsState(database);
202
- if (state && state.filledThrough >= state.watermark && state.builtAt === null && state.built === identity) {
203
- database.prepare("UPDATE search_index_state SET built_at = ? WHERE name = ?").run(now(), INDEX);
204
- }
205
- return filled;
206
- };
207
- const snowballOf = (identity) => (/^snowball-(\d+)\.(\d+)\.(\d+)/.exec(identity)?.slice(1) ?? []).map(Number);
208
- const newer = (a, b) => {
209
- for (let i = 0; i < 3; i++)
210
- if ((a[i] ?? 0) !== (b[i] ?? 0))
211
- return (a[i] ?? 0) > (b[i] ?? 0);
212
- return false;
213
- };
214
- /**
215
- * Empties the stems and starts them again from the newest message, claimed by the store's setting —
216
- * for `store reindex`, and for `store migrate` when the stems were built by other choices. A row built
217
- * by a newer Snowball than this binary has is refused: rebuilding it would downgrade every newer tool.
218
- */
219
- export const resetStems = (database, { force = false, now = Date.now } = {}) => {
220
- const state = stemsState(database);
221
- if (!state)
222
- return false;
223
- if (!force && state.cause !== "stemmer_changed" && state.cause !== "stemmer_unknown")
224
- return false;
225
- if (state.cause === "stemmer_unknown") {
226
- throw new CliError("validation_error", "the store asks for stemmers this tool does not know — upgrade this tool, or choose again with config set searchStemmers.*", { reason: "stemmer.unknown" });
227
- }
228
- if (state.built !== null && newer(snowballOf(state.built), snowballOf(`snowball-${SNOWBALL_VERSION}`))) {
229
- throw new CliError("validation_error", `the stems were built by Snowball ${snowballOf(state.built).join(".")}, newer than this tool's ${SNOWBALL_VERSION} — upgrade this tool`, { reason: "stemmer.newer", built: state.built, wanted: state.wanted });
230
- }
231
- inBatch(database, () => {
232
- // Saved, not defaulted: an older tool with another default then refuses as "unknown" instead of
233
- // rebuilding the stems back to its own choice on its next reindex.
234
- if (savedStemmers(database) === undefined)
235
- saveStoreStemmers(database, DEFAULT_STEMMERS, now(), "default");
236
- database.exec(`INSERT INTO ${INDEX} (${INDEX}) VALUES ('delete-all')`);
237
- database.exec("DELETE FROM message_stems_pending");
238
- database
239
- .prepare(`UPDATE search_index_state SET watermark = (SELECT coalesce(max(id), 0) FROM messages),
240
- filled_through = 0, built_at = NULL, analyzer = ? WHERE name = ?`)
241
- .run(state.wanted, INDEX);
242
- });
243
- return true;
244
- };
245
- /**
246
- * Stems an older tool built with its own default, while nobody chose stemmers, start again with this
247
- * build's default: nobody chose the old one, so it waits for no `store reindex`. Like a first fill
248
- * from then on. A saved default is replaced only by newer defaults, so two versions never rebuild each
249
- * other's. A row a newer Snowball built is left for an upgrade.
250
- */
251
- export const followDefaultStemmers = (database, now = Date.now) => {
252
- const saved = stemmersOrigin(database);
253
- if (saved?.origin === "owner")
254
- return false;
255
- if (saved?.origin === "default") {
256
- if (saved.defaults >= DEFAULT_STEMMERS_VERSION || savedStemmers(database) === null)
257
- return false;
258
- const built = stemsState(database)?.built;
259
- if (built && newer(snowballOf(built), snowballOf(`snowball-${SNOWBALL_VERSION}`)))
260
- return false;
261
- saveStoreStemmers(database, DEFAULT_STEMMERS, now(), "default");
262
- }
263
- const state = stemsState(database);
264
- if (state?.cause !== "stemmer_changed" || state.built === null)
265
- return false;
266
- if (newer(snowballOf(state.built), snowballOf(`snowball-${SNOWBALL_VERSION}`)))
267
- return false;
268
- return resetStems(database, { now });
269
- };
270
155
  //# sourceMappingURL=stems.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stems.js","sourceRoot":"","sources":["../../../src/store/sqlite/stems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stems.js","sourceRoot":"","sources":["../../../src/store/sqlite/stems.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import type { StoreContext } from "./open.js";
7
7
  import type { Where } from "./query-filter.js";
8
8
  import { type TagCreationOptions } from "./tag-creation.js";
9
9
  import { type Thing } from "./things.js";
10
- /** What a tag labels: a chat or a message of the account, or a person of its messenger. */
10
+ /** What a messenger tag labels: a chat or a message of the account, or a person of its messenger. */
11
11
  export type TagTarget = {
12
12
  type: "chat";
13
13
  chatId: Id;
@@ -19,6 +19,12 @@ export type TagTarget = {
19
19
  chatId: Id;
20
20
  messageId: Id;
21
21
  };
22
+ /** A task of the account; apart from `TagTarget`, so code that narrows a messenger target keeps compiling. */
23
+ export type TaskTagTarget = {
24
+ type: "task";
25
+ taskId: string;
26
+ };
27
+ export type AnyTagTarget = TagTarget | TaskTagTarget;
22
28
  export interface StoredTag {
23
29
  tag: string;
24
30
  type: TagType;
@@ -28,6 +34,8 @@ export interface StoredTag {
28
34
  name?: string | null;
29
35
  messageId?: Id;
30
36
  locator?: string;
37
+ /** The task's id, as `task:` takes it. */
38
+ taskId?: string;
31
39
  sources?: ("manual" | "auto")[];
32
40
  createdAt: string;
33
41
  }
@@ -49,7 +57,7 @@ export type TagKind = (typeof TAG_KINDS)[number];
49
57
  * `auto` what the keyword rules claimed for a chat, `agent` what an agent added.
50
58
  */
51
59
  export type TaggingSource = "owner" | "file" | "auto" | "agent";
52
- export declare const targetThing: ({ database }: StoreContext, key: AccountKey, target: TagTarget) => Thing;
60
+ export declare const targetThing: ({ database }: StoreContext, key: AccountKey, target: TagTarget | TaskTagTarget) => Thing;
53
61
  export interface TagRow {
54
62
  id: number;
55
63
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/tags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/tags.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,27 @@ import { CliError } from "@wirecat/cli-base";
2
2
  import { formatLocator } from "../../domain/locator.js";
3
3
  import { normalizeVocabularyName } from "../../domain/vocabulary.js";
4
4
  import { guardTagCreation } from "./tag-creation.js";
5
- import { emailOf, emailThreadOf } from "./things.js";
5
+ import { inboxKey, taskAccountOf } from "./task-keys.js";
6
+ import { emailOf, emailThreadOf, taskRowOf } from "./things.js";
6
7
  import { toIso } from "./values.js";
7
8
  export const TAG_KINDS = ["tag", "topic"];
8
9
  /** A messenger tag target's polymorphic type: a contact is an `identity` row. */
9
- const TAGGABLE = { chat: "chat", contact: "identity", message: "message" };
10
+ const TAGGABLE = { chat: "chat", contact: "identity", message: "message", task: "task" };
10
11
  const TAG_TYPE = {
11
12
  chat: "chat",
12
13
  identity: "contact",
13
14
  message: "message",
14
15
  email_thread: "chat",
15
16
  email: "message",
17
+ task: "task",
16
18
  };
17
19
  export const targetThing = ({ database }, key, target) => {
20
+ if (target.type === "task") {
21
+ const row = taskRowOf(database, target.taskId);
22
+ if (row === undefined || taskAccountOf(database, row) !== `${key.provider}:${key.account}`)
23
+ throw new CliError("not_found", `no task ${target.taskId} for this account — tasks list shows the ids`);
24
+ return { type: "task", id: row };
25
+ }
18
26
  const mail = key.provider !== "email" || target.type === "contact"
19
27
  ? undefined
20
28
  : target.type === "chat"
@@ -167,7 +175,7 @@ export const tagsOf = ({ database }, key, filter) => {
167
175
  {
168
176
  type: "chat",
169
177
  sql: "SELECT t.name AS tag, g.taggable_type AS type, g.created_at, c.external_id AS chat_id, c.title AS chat_title, " +
170
- "NULL AS person_id, NULL AS name, NULL AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id " +
178
+ "NULL AS person_id, NULL AS name, NULL AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id, NULL AS task_id " +
171
179
  "FROM taggings g JOIN tags t ON t.id=g.tag_id JOIN chats c ON c.id=g.taggable_id " +
172
180
  "JOIN accounts a ON a.id=c.account_id WHERE g.taggable_type='chat' AND a.provider=? AND a.external_id=?",
173
181
  params: [key.provider, key.account],
@@ -175,7 +183,7 @@ export const tagsOf = ({ database }, key, filter) => {
175
183
  {
176
184
  type: "contact",
177
185
  sql: "SELECT t.name AS tag, g.taggable_type AS type, g.created_at, NULL AS chat_id, NULL AS chat_title, " +
178
- "i.external_id AS person_id, i.name AS name, NULL AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id " +
186
+ "i.external_id AS person_id, i.name AS name, NULL AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id, NULL AS task_id " +
179
187
  "FROM taggings g JOIN tags t ON t.id=g.tag_id JOIN identities i ON i.id=g.taggable_id " +
180
188
  "WHERE g.taggable_type='identity' AND i.provider=?",
181
189
  params: [key.provider],
@@ -183,7 +191,7 @@ export const tagsOf = ({ database }, key, filter) => {
183
191
  {
184
192
  type: "message",
185
193
  sql: "SELECT t.name AS tag, g.taggable_type AS type, g.created_at, c.external_id AS chat_id, c.title AS chat_title, " +
186
- "NULL AS person_id, NULL AS name, m.external_id AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id " +
194
+ "NULL AS person_id, NULL AS name, m.external_id AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id, NULL AS task_id " +
187
195
  "FROM taggings g JOIN tags t ON t.id=g.tag_id JOIN messages m ON m.id=g.taggable_id JOIN chats c ON c.id=m.chat_id " +
188
196
  "JOIN accounts a ON a.id=c.account_id WHERE g.taggable_type='message' AND a.provider=? AND a.external_id=?",
189
197
  params: [key.provider, key.account],
@@ -191,7 +199,7 @@ export const tagsOf = ({ database }, key, filter) => {
191
199
  {
192
200
  type: "chat",
193
201
  sql: "SELECT t.name AS tag, g.taggable_type AS type, g.created_at, th.external_id AS chat_id, th.subject AS chat_title, " +
194
- "NULL AS person_id, NULL AS name, NULL AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id " +
202
+ "NULL AS person_id, NULL AS name, NULL AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id, NULL AS task_id " +
195
203
  "FROM taggings g JOIN tags t ON t.id=g.tag_id JOIN email_threads th ON th.id=g.taggable_id " +
196
204
  "JOIN accounts a ON a.id=th.account_id WHERE g.taggable_type='email_thread' AND a.provider=? AND a.external_id=?",
197
205
  params: [key.provider, key.account],
@@ -199,12 +207,21 @@ export const tagsOf = ({ database }, key, filter) => {
199
207
  {
200
208
  type: "message",
201
209
  sql: "SELECT t.name AS tag, g.taggable_type AS type, g.created_at, th.external_id AS chat_id, th.subject AS chat_title, " +
202
- "NULL AS person_id, NULL AS name, e.external_id AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id " +
210
+ "NULL AS person_id, NULL AS name, e.external_id AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id, NULL AS task_id " +
203
211
  "FROM taggings g JOIN tags t ON t.id=g.tag_id JOIN emails e ON e.id=g.taggable_id " +
204
212
  "JOIN email_threads th ON th.id=e.email_thread_id JOIN accounts a ON a.id=e.account_id " +
205
213
  "WHERE g.taggable_type='email' AND e.deleted_at IS NULL AND a.provider=? AND a.external_id=?",
206
214
  params: [key.provider, key.account],
207
215
  },
216
+ {
217
+ type: "task",
218
+ sql: "SELECT t.name AS tag, g.taggable_type AS type, g.created_at, NULL AS chat_id, k.title AS chat_title, " +
219
+ "NULL AS person_id, NULL AS name, NULL AS message_id, g.source, g.taggable_id AS target_id, t.id AS tag_id, " +
220
+ "COALESCE(k.package_id, k.key) AS task_id " +
221
+ "FROM taggings g JOIN tags t ON t.id=g.tag_id JOIN tasks k ON k.id=g.taggable_id JOIN projects p ON p.id=k.project_id " +
222
+ "WHERE g.taggable_type='task' AND k.deleted_at IS NULL AND p.key=?",
223
+ params: [inboxKey(`${key.provider}:${key.account}`)],
224
+ },
208
225
  ];
209
226
  const chosen = parts.filter(({ type }) => filter.type === undefined || filter.type === type);
210
227
  const union = chosen.map(({ sql }) => sql + tagged).join(" UNION ALL ");
@@ -236,6 +253,7 @@ export const tagsOf = ({ database }, key, filter) => {
236
253
  ...(type === "contact"
237
254
  ? { personId: String(row.person_id), name: row.name == null ? null : String(row.name) }
238
255
  : { chatId, chatTitle: row.chat_title == null ? null : String(row.chat_title) }),
256
+ ...(type === "task" ? { taskId: String(row.task_id) } : {}),
239
257
  ...(type === "message" && chatId !== undefined && messageId !== undefined
240
258
  ? { messageId, locator: formatLocator({ ...key, chat: chatId, message: messageId }) }
241
259
  : {}),