@leemour/cli-messaging 0.141.0 → 0.142.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 (128) hide show
  1. package/dist/cli/config-command.js +5 -0
  2. package/dist/cli/config-command.js.map +1 -1
  3. package/dist/cli/messenger/archive-commands.d.ts.map +1 -1
  4. package/dist/cli/messenger/archive-commands.js +91 -7
  5. package/dist/cli/messenger/archive-commands.js.map +1 -1
  6. package/dist/cli/messenger/catch-up.d.ts +17 -0
  7. package/dist/cli/messenger/catch-up.d.ts.map +1 -0
  8. package/dist/cli/messenger/catch-up.js +30 -0
  9. package/dist/cli/messenger/catch-up.js.map +1 -0
  10. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  11. package/dist/cli/messenger/conversations-command.js +213 -27
  12. package/dist/cli/messenger/conversations-command.js.map +1 -1
  13. package/dist/cli/messenger/export-folder.d.ts +54 -0
  14. package/dist/cli/messenger/export-folder.d.ts.map +1 -0
  15. package/dist/cli/messenger/export-folder.js +106 -0
  16. package/dist/cli/messenger/export-folder.js.map +1 -0
  17. package/dist/cli/messenger/inbox.d.ts +4 -3
  18. package/dist/cli/messenger/inbox.d.ts.map +1 -1
  19. package/dist/cli/messenger/inbox.js +28 -32
  20. package/dist/cli/messenger/inbox.js.map +1 -1
  21. package/dist/cli/messenger/messages-command.d.ts.map +1 -1
  22. package/dist/cli/messenger/messages-command.js +2 -0
  23. package/dist/cli/messenger/messages-command.js.map +1 -1
  24. package/dist/cli/messenger/messages-stats-command.d.ts +4 -0
  25. package/dist/cli/messenger/messages-stats-command.d.ts.map +1 -0
  26. package/dist/cli/messenger/messages-stats-command.js +49 -0
  27. package/dist/cli/messenger/messages-stats-command.js.map +1 -0
  28. package/dist/cli/messenger/password.d.ts +11 -0
  29. package/dist/cli/messenger/password.d.ts.map +1 -0
  30. package/dist/cli/messenger/password.js +26 -0
  31. package/dist/cli/messenger/password.js.map +1 -0
  32. package/dist/cli/messenger/points.d.ts +21 -0
  33. package/dist/cli/messenger/points.d.ts.map +1 -0
  34. package/dist/cli/messenger/points.js +39 -0
  35. package/dist/cli/messenger/points.js.map +1 -0
  36. package/dist/cli/messenger/review.d.ts.map +1 -1
  37. package/dist/cli/messenger/review.js +55 -20
  38. package/dist/cli/messenger/review.js.map +1 -1
  39. package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
  40. package/dist/cli/messenger/store-maintenance-command.js +75 -20
  41. package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
  42. package/dist/cli/permission-migration.d.ts.map +1 -1
  43. package/dist/cli/permission-migration.js +14 -9
  44. package/dist/cli/permission-migration.js.map +1 -1
  45. package/dist/cli/settings.d.ts +4 -0
  46. package/dist/cli/settings.d.ts.map +1 -1
  47. package/dist/cli/settings.js +12 -22
  48. package/dist/cli/settings.js.map +1 -1
  49. package/dist/domain/models.d.ts +4 -0
  50. package/dist/domain/models.d.ts.map +1 -1
  51. package/dist/mcp/server.d.ts.map +1 -1
  52. package/dist/mcp/server.js +2 -1
  53. package/dist/mcp/server.js.map +1 -1
  54. package/dist/mcp/tool.d.ts +1 -1
  55. package/dist/mcp/tool.d.ts.map +1 -1
  56. package/dist/mcp/tools/conversations.d.ts +1 -1
  57. package/dist/mcp/tools/conversations.d.ts.map +1 -1
  58. package/dist/mcp/tools/conversations.js +76 -5
  59. package/dist/mcp/tools/conversations.js.map +1 -1
  60. package/dist/mcp/tools/messages.d.ts.map +1 -1
  61. package/dist/mcp/tools/messages.js +8 -1
  62. package/dist/mcp/tools/messages.js.map +1 -1
  63. package/dist/mcp/tools/search.d.ts +24 -0
  64. package/dist/mcp/tools/search.d.ts.map +1 -1
  65. package/dist/mcp/tools/search.js +25 -0
  66. package/dist/mcp/tools/search.js.map +1 -1
  67. package/dist/sealed.d.ts +39 -0
  68. package/dist/sealed.d.ts.map +1 -0
  69. package/dist/sealed.js +140 -0
  70. package/dist/sealed.js.map +1 -0
  71. package/dist/search/lucene/dates.d.ts +2 -2
  72. package/dist/search/lucene/dates.d.ts.map +1 -1
  73. package/dist/search/lucene/dates.js +27 -5
  74. package/dist/search/lucene/dates.js.map +1 -1
  75. package/dist/search/lucene/registry.d.ts +1 -1
  76. package/dist/search/lucene/registry.d.ts.map +1 -1
  77. package/dist/search/lucene/registry.js +1 -1
  78. package/dist/search/lucene/registry.js.map +1 -1
  79. package/dist/sends/index.d.ts +1 -1
  80. package/dist/sends/index.d.ts.map +1 -1
  81. package/dist/sends/index.js +1 -1
  82. package/dist/sends/index.js.map +1 -1
  83. package/dist/sends/permissions.d.ts +9 -0
  84. package/dist/sends/permissions.d.ts.map +1 -1
  85. package/dist/sends/permissions.js +19 -0
  86. package/dist/sends/permissions.js.map +1 -1
  87. package/dist/services/archive.d.ts +22 -1
  88. package/dist/services/archive.d.ts.map +1 -1
  89. package/dist/services/archive.js +25 -0
  90. package/dist/services/archive.js.map +1 -1
  91. package/dist/services/embeddings.d.ts +108 -3
  92. package/dist/services/embeddings.d.ts.map +1 -1
  93. package/dist/services/embeddings.js +250 -59
  94. package/dist/services/embeddings.js.map +1 -1
  95. package/dist/services/inbox.d.ts +27 -9
  96. package/dist/services/inbox.d.ts.map +1 -1
  97. package/dist/services/inbox.js +57 -22
  98. package/dist/services/inbox.js.map +1 -1
  99. package/dist/services/messages-search.d.ts +21 -1
  100. package/dist/services/messages-search.d.ts.map +1 -1
  101. package/dist/services/messages-search.js +90 -26
  102. package/dist/services/messages-search.js.map +1 -1
  103. package/dist/services/messages.d.ts +8 -1
  104. package/dist/services/messages.d.ts.map +1 -1
  105. package/dist/services/messages.js +7 -1
  106. package/dist/services/messages.js.map +1 -1
  107. package/dist/store/sqlite/lucene.d.ts +11 -0
  108. package/dist/store/sqlite/lucene.d.ts.map +1 -1
  109. package/dist/store/sqlite/lucene.js +53 -18
  110. package/dist/store/sqlite/lucene.js.map +1 -1
  111. package/dist/store/sqlite/messages.d.ts +2 -2
  112. package/dist/store/sqlite/messages.d.ts.map +1 -1
  113. package/dist/store/sqlite/messages.js +5 -2
  114. package/dist/store/sqlite/messages.js.map +1 -1
  115. package/dist/store/sqlite/reads.d.ts +10 -0
  116. package/dist/store/sqlite/reads.d.ts.map +1 -1
  117. package/dist/store/sqlite/reads.js +25 -2
  118. package/dist/store/sqlite/reads.js.map +1 -1
  119. package/dist/store/sqlite/vectors.d.ts +49 -1
  120. package/dist/store/sqlite/vectors.d.ts.map +1 -1
  121. package/dist/store/sqlite/vectors.js +121 -6
  122. package/dist/store/sqlite/vectors.js.map +1 -1
  123. package/dist/store/store.d.ts +51 -1
  124. package/dist/store/store.d.ts.map +1 -1
  125. package/dist/store/store.js +55 -7
  126. package/dist/store/store.js.map +1 -1
  127. package/package.json +1 -1
  128. package/parity.json +170 -2
@@ -16,6 +16,24 @@ export declare const chunksToEmbed: ({ orm }: StoreContext, chatKey: number, mod
16
16
  after?: string;
17
17
  limit: number;
18
18
  }) => ChunkToEmbed[];
19
+ /**
20
+ * Whether a found chunk still says what its vector encodes. A build never makes a deleted message a member,
21
+ * so any deleted one in range went after the build: the hit goes, whatever text is left (NEED-393, NEED-550).
22
+ */
23
+ export declare const chunkFreshness: ({ orm }: StoreContext, { conversationPk, firstMessagePk, lastMessagePk, hash }: NearestChunk) => "current" | "stale" | "deleted";
24
+ /**
25
+ * Drops every vector of a chunk that held this just-deleted message, of every model, unless a current chunk
26
+ * with no deleted message still uses its text — in any chat or account, since vectors are keyed by text alone.
27
+ */
28
+ export declare const purgeVectorsOf: ({ orm }: StoreContext, messagePk: number) => void;
29
+ /**
30
+ * A conversation's chunks of the current build, and the vectors of `model` that still say what its chunks say:
31
+ * a changed or deleted message leaves its chunk out, so the conversation is described as it is now.
32
+ */
33
+ export declare const conversationVectors: (context: StoreContext, conversationPk: number, model: string) => {
34
+ chunks: number;
35
+ vectors: Float32Array[];
36
+ };
19
37
  /** A vector already there for the same model and text is kept: the same text gives the same vector. */
20
38
  export declare const saveVectors: ({ orm, now }: StoreContext, model: string, dims: number, vectors: {
21
39
  hash: string;
@@ -35,18 +53,20 @@ export interface NearestChunk {
35
53
  conversationPk: number;
36
54
  firstMessagePk: number;
37
55
  lastMessagePk: number;
56
+ hash: string;
38
57
  score: number;
39
58
  }
40
59
  /**
41
60
  * The conversations of the current builds in scope nearest to `query`, best first: each scored by its
42
61
  * best chunk. Vectors are unit length, so the dot product is the cosine (phase 5 E3).
43
62
  */
44
- export declare const nearestChunks: ({ orm }: StoreContext, accountPk: number, { chatKey, model, since, limit, query, }: {
63
+ export declare const nearestChunks: ({ orm }: StoreContext, accountPk: number, { chatKey, model, since, limit, query, exclude, }: {
45
64
  chatKey?: number;
46
65
  model: string;
47
66
  since?: number;
48
67
  limit: number;
49
68
  query: Float32Array;
69
+ exclude?: number;
50
70
  }) => NearestChunk[];
51
71
  /** Chats in scope whose current build has vectors of another model and none of `model`: a search with it skips them. */
52
72
  export declare const embeddedOnlyElsewhere: ({ orm }: StoreContext, accountPk: number, { chatKey, model }: {
@@ -55,4 +75,32 @@ export declare const embeddedOnlyElsewhere: ({ orm }: StoreContext, accountPk: n
55
75
  }) => string[];
56
76
  /** The messenger's ids of these messages, by pk. */
57
77
  export declare const messageIds: ({ orm }: StoreContext, pks: number[]) => Map<number, string>;
78
+ /** Chats of the account whose conversations were ever built, or started to be. */
79
+ export declare const builtChats: ({ orm }: StoreContext, accountPk: number) => {
80
+ chatKey: number;
81
+ id: string;
82
+ }[];
83
+ /** Group chats of the account with stored messages and no build ever started, the newest message first. */
84
+ export declare const unbuiltGroups: ({ orm }: StoreContext, accountPk: number) => string[];
85
+ /**
86
+ * What the chat's current build has not seen, and its chunks for `model`. Membership is exact for new and
87
+ * deleted messages; an edit is known only by its revision's time, so one in the build's first millisecond
88
+ * counts as pending. A changed sender name leaves no trace and is not counted.
89
+ */
90
+ export declare const readiness: ({ orm }: StoreContext, chatKey: number, model: string) => {
91
+ builtAt: number;
92
+ algorithmVersion: number | null;
93
+ pending: {
94
+ new: number;
95
+ edited: number;
96
+ deleted: number;
97
+ };
98
+ vectors: {
99
+ chunks: number;
100
+ embedded: number;
101
+ current: number;
102
+ stale: number;
103
+ missing: number;
104
+ };
105
+ } | undefined;
58
106
  //# sourceMappingURL=vectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/vectors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC7D;AAOD;;;GAGG;AACH,eAAO,MAAM,aAAa,YACf,YAAY,WACZ,MAAM,SACR,MAAM,oBACK;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAClD,YAAY,EAoBd,CAAA;AAED,uGAAuG;AACvG,eAAO,MAAM,WAAW,iBACR,YAAY,SACnB,MAAM,QACP,MAAM,WACH;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,EAAE,KAChD,IASF,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,YAAY,YAAa,YAAY,WAAW,MAAM,SAAS,MAAM;IAMvE,MAAM;IAA4B,QAAQ;CACpD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,YAAa,YAAY,WAAW,MAAM,SAAS,MAAM,GAAG,SAAS,KAAG,MASvF,CAAA;AAEV,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd;AAYD;;;GAGG;AACH,eAAO,MAAM,aAAa,YACf,YAAY,aACV,MAAM,4CAOd;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,KACzF,YAAY,EAoCd,CAAA;AAQD,wHAAwH;AACxH,eAAO,MAAM,qBAAqB,YACvB,YAAY,aACV,MAAM,sBACG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KACtD,MAAM,EAcR,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,UAAU,YAAa,YAAY,OAAO,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAYjF,CAAA"}
1
+ {"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/vectors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC7D;AAOD;;;GAGG;AACH,eAAO,MAAM,aAAa,YACf,YAAY,WACZ,MAAM,SACR,MAAM,oBACK;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAClD,YAAY,EAad,CAAA;AAgBD;;;GAGG;AACH,eAAO,MAAM,cAAc,YAChB,YAAY,2DACoC,YAAY,KACpE,SAAS,GAAG,OAAO,GAAG,SAIxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,YAAa,YAAY,aAAa,MAAM,KAAG,IAkBzE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YACrB,YAAY,kBACL,MAAM,SACf,MAAM,KACZ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAiB3C,CAAA;AAED,uGAAuG;AACvG,eAAO,MAAM,WAAW,iBACR,YAAY,SACnB,MAAM,QACP,MAAM,WACH;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,EAAE,KAChD,IASF,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,YAAY,YAAa,YAAY,WAAW,MAAM,SAAS,MAAM;IAMvE,MAAM;IAA4B,QAAQ;CACpD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,YAAa,YAAY,WAAW,MAAM,SAAS,MAAM,GAAG,SAAS,KAAG,MASvF,CAAA;AAEV,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAYD;;;GAGG;AACH,eAAO,MAAM,aAAa,YACf,YAAY,aACV,MAAM,qDAQd;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAC3G,YAAY,EA6Cd,CAAA;AAQD,wHAAwH;AACxH,eAAO,MAAM,qBAAqB,YACvB,YAAY,aACV,MAAM,sBACG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KACtD,MAAM,EAcR,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,UAAU,YAAa,YAAY,OAAO,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAYjF,CAAA;AAEH,kFAAkF;AAClF,eAAO,MAAM,UAAU,YAAa,YAAY,aAAa,MAAM,KAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAIlG,CAAA;AAEH,2GAA2G;AAC3G,eAAO,MAAM,aAAa,YAAa,YAAY,aAAa,MAAM,KAAG,MAAM,EASvD,CAAA;AAExB;;;;GAIG;AACH,eAAO,MAAM,SAAS,YAAa,YAAY,WAAW,MAAM,SAAS,MAAM;;;;QAyCzE,GAAG;QACH,MAAM;QACN,OAAO;;;;;;;;;aAIZ,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { chunkHash, chunkTextOf } from "../../conversations/chunks.js";
1
2
  import { sql } from "./drizzle/core.js";
2
3
  const currentChunks = (chatKey) => sql `SELECT k.content_hash, k.conversation_pk, k.first_message_pk,
3
4
  k.last_message_pk FROM conversation_chunks k JOIN conversations c ON c.pk = k.conversation_pk
@@ -16,13 +17,67 @@ export const chunksToEmbed = ({ orm }, chatKey, model, { after, limit }) => {
16
17
  GROUP BY k.content_hash ORDER BY k.content_hash LIMIT ${limit}`);
17
18
  return chunks.map(({ hash, conversation, first, last }) => ({
18
19
  hash,
19
- lines: orm.all(sql `SELECT m.native_id AS id, m.sender_name AS sender, m.text FROM conversation_messages cm
20
+ lines: chunkLines(orm, conversation, first, last).flatMap(({ deleted, ...line }) => (deleted ? [] : [line])),
21
+ }));
22
+ };
23
+ /** A chunk's messages as they are now, the deleted ones flagged: what `embed` hashes and a search checks. */
24
+ const chunkLines = (orm, conversation, first, last) => orm
25
+ .all(sql `SELECT m.native_id AS id, m.sender_name AS sender, m.text, m.deleted_at IS NOT NULL AS deleted
26
+ FROM conversation_messages cm
20
27
  JOIN messages m ON m.pk = cm.message_pk
21
28
  JOIN messages f ON f.pk = ${first} JOIN messages l ON l.pk = ${last}
22
- WHERE cm.conversation_pk = ${conversation} AND m.deleted_at IS NULL
29
+ WHERE cm.conversation_pk = ${conversation}
23
30
  AND (m.sent_at, m.pk) >= (f.sent_at, f.pk) AND (m.sent_at, m.pk) <= (l.sent_at, l.pk)
24
- ORDER BY m.sent_at, m.pk`),
25
- }));
31
+ ORDER BY m.sent_at, m.pk`)
32
+ .map(({ deleted, ...line }) => ({ ...line, deleted: Boolean(deleted) }));
33
+ /**
34
+ * Whether a found chunk still says what its vector encodes. A build never makes a deleted message a member,
35
+ * so any deleted one in range went after the build: the hit goes, whatever text is left (NEED-393, NEED-550).
36
+ */
37
+ export const chunkFreshness = ({ orm }, { conversationPk, firstMessagePk, lastMessagePk, hash }) => {
38
+ const lines = chunkLines(orm, conversationPk, firstMessagePk, lastMessagePk);
39
+ if (lines.some(({ deleted }) => deleted))
40
+ return "deleted";
41
+ return chunkHash(chunkTextOf(lines)) === hash ? "current" : "stale";
42
+ };
43
+ /**
44
+ * Drops every vector of a chunk that held this just-deleted message, of every model, unless a current chunk
45
+ * with no deleted message still uses its text — in any chat or account, since vectors are keyed by text alone.
46
+ */
47
+ export const purgeVectorsOf = ({ orm }, messagePk) => {
48
+ orm.run(sql `DELETE FROM chunk_vectors
49
+ WHERE content_hash IN (SELECT k.content_hash FROM conversation_messages cm
50
+ JOIN messages m ON m.pk = cm.message_pk
51
+ JOIN conversation_chunks k ON k.conversation_pk = cm.conversation_pk
52
+ JOIN messages f ON f.pk = k.first_message_pk JOIN messages l ON l.pk = k.last_message_pk
53
+ WHERE cm.message_pk = ${messagePk}
54
+ AND (m.sent_at, m.pk) >= (f.sent_at, f.pk) AND (m.sent_at, m.pk) <= (l.sent_at, l.pk))
55
+ AND NOT EXISTS (SELECT 1 FROM conversation_chunks o
56
+ JOIN conversations c ON c.pk = o.conversation_pk
57
+ JOIN conversation_state s ON s.chat_pk = c.chat_pk AND s.current_build = c.build
58
+ JOIN messages f ON f.pk = o.first_message_pk JOIN messages l ON l.pk = o.last_message_pk
59
+ WHERE o.content_hash = chunk_vectors.content_hash
60
+ AND NOT EXISTS (SELECT 1 FROM conversation_messages om JOIN messages d ON d.pk = om.message_pk
61
+ WHERE om.conversation_pk = o.conversation_pk AND d.deleted_at IS NOT NULL
62
+ AND (d.sent_at, d.pk) >= (f.sent_at, f.pk) AND (d.sent_at, d.pk) <= (l.sent_at, l.pk)))`);
63
+ };
64
+ /**
65
+ * A conversation's chunks of the current build, and the vectors of `model` that still say what its chunks say:
66
+ * a changed or deleted message leaves its chunk out, so the conversation is described as it is now.
67
+ */
68
+ export const conversationVectors = (context, conversationPk, model) => {
69
+ const rows = context.orm.all(sql `SELECT k.first_message_pk AS first, k.last_message_pk AS last, k.content_hash AS hash, v.vector
70
+ FROM conversation_chunks k
71
+ JOIN conversations c ON c.pk = k.conversation_pk
72
+ JOIN conversation_state s ON s.chat_pk = c.chat_pk AND s.current_build = c.build
73
+ LEFT JOIN chunk_vectors v ON v.model = ${model} AND v.content_hash = k.content_hash
74
+ WHERE k.conversation_pk = ${conversationPk} ORDER BY k.ordinal`);
75
+ const vectors = rows.flatMap(({ first, last, hash, vector }) => vector &&
76
+ chunkFreshness(context, { conversationPk, firstMessagePk: first, lastMessagePk: last, hash, score: 0 }) ===
77
+ "current"
78
+ ? [new Float32Array(vector.buffer.slice(vector.byteOffset, vector.byteOffset + vector.byteLength))]
79
+ : []);
80
+ return { chunks: rows.length, vectors };
26
81
  };
27
82
  /** A vector already there for the same model and text is kept: the same text gives the same vector. */
28
83
  export const saveVectors = ({ orm, now }, model, dims, vectors) => {
@@ -64,7 +119,7 @@ const dot = (query, blob) => {
64
119
  * The conversations of the current builds in scope nearest to `query`, best first: each scored by its
65
120
  * best chunk. Vectors are unit length, so the dot product is the cosine (phase 5 E3).
66
121
  */
67
- export const nearestChunks = ({ orm }, accountPk, { chatKey, model, since, limit, query, }) => {
122
+ export const nearestChunks = ({ orm }, accountPk, { chatKey, model, since, limit, query, exclude, }) => {
68
123
  const best = new Map();
69
124
  let after = { conversation: 0, ordinal: -1 };
70
125
  for (;;) {
@@ -72,7 +127,7 @@ export const nearestChunks = ({ orm }, accountPk, { chatKey, model, since, limit
72
127
  // CROSS JOIN keeps the chunks first, so each page walks their key; led by the vectors, SQLite re-read and
73
128
  // sorted every one of them per page — 1.3 s against 140 ms at 42k chunks (bench/embeddings/README.md).
74
129
  sql `SELECT k.conversation_pk AS conversation, k.ordinal, k.first_message_pk AS first, k.last_message_pk AS last,
75
- v.vector FROM conversation_chunks k
130
+ k.content_hash AS hash, v.vector FROM conversation_chunks k
76
131
  CROSS JOIN conversations c ON c.pk = k.conversation_pk
77
132
  JOIN conversation_state s ON s.chat_pk = c.chat_pk AND s.current_build = c.build
78
133
  JOIN chats ch ON ch.pk = c.chat_pk
@@ -80,6 +135,7 @@ export const nearestChunks = ({ orm }, accountPk, { chatKey, model, since, limit
80
135
  WHERE ch.account_pk = ${accountPk}
81
136
  ${chatKey === undefined ? sql `` : sql `AND c.chat_pk = ${chatKey}`}
82
137
  ${since === undefined ? sql `` : sql `AND c.last_at >= ${since}`}
138
+ ${exclude === undefined ? sql `` : sql `AND c.pk <> ${exclude}`}
83
139
  AND (k.conversation_pk, k.ordinal) > (${after.conversation}, ${after.ordinal})
84
140
  ORDER BY k.conversation_pk, k.ordinal LIMIT ${SCAN_PAGE}`);
85
141
  for (const row of rows) {
@@ -90,6 +146,7 @@ export const nearestChunks = ({ orm }, accountPk, { chatKey, model, since, limit
90
146
  conversationPk: row.conversation,
91
147
  firstMessagePk: row.first,
92
148
  lastMessagePk: row.last,
149
+ hash: row.hash,
93
150
  score,
94
151
  });
95
152
  }
@@ -127,4 +184,62 @@ export const messageIds = ({ orm }, pks) => new Map(pks.length === 0
127
184
  : orm
128
185
  .all(sql `SELECT pk, native_id AS id FROM messages WHERE pk IN (${sql.join(pks.map((pk) => sql `${pk}`), sql `, `)})`)
129
186
  .map(({ pk, id }) => [pk, id]));
187
+ /** Chats of the account whose conversations were ever built, or started to be. */
188
+ export const builtChats = ({ orm }, accountPk) => orm.all(sql `SELECT ch.pk AS chatKey, ch.native_id AS id FROM conversation_state s JOIN chats ch ON ch.pk = s.chat_pk
189
+ WHERE ch.account_pk = ${accountPk} ORDER BY ch.native_id`);
190
+ /** Group chats of the account with stored messages and no build ever started, the newest message first. */
191
+ export const unbuiltGroups = ({ orm }, accountPk) => orm
192
+ .all(sql `SELECT ch.native_id AS id FROM chats ch
193
+ WHERE ch.account_pk = ${accountPk} AND ch.kind = 'group'
194
+ AND NOT EXISTS (SELECT 1 FROM conversation_state s WHERE s.chat_pk = ch.pk)
195
+ AND EXISTS (SELECT 1 FROM messages m WHERE m.chat_pk = ch.pk AND m.deleted_at IS NULL)
196
+ ORDER BY (SELECT max(m.sent_at) FROM messages m WHERE m.chat_pk = ch.pk) DESC, ch.native_id`)
197
+ .map(({ id }) => id);
198
+ /**
199
+ * What the chat's current build has not seen, and its chunks for `model`. Membership is exact for new and
200
+ * deleted messages; an edit is known only by its revision's time, so one in the build's first millisecond
201
+ * counts as pending. A changed sender name leaves no trace and is not counted.
202
+ */
203
+ export const readiness = ({ orm }, chatKey, model) => {
204
+ const state = orm.get(sql `SELECT built_at AS builtAt, algorithm_version AS algorithmVersion, current_build AS build
205
+ FROM conversation_state WHERE chat_pk = ${chatKey}`);
206
+ if (!state || state.builtAt === null || state.build === null)
207
+ return undefined;
208
+ const { builtAt, build } = state;
209
+ const member = (pk) => sql `EXISTS (SELECT 1 FROM conversation_messages cm
210
+ JOIN conversations c ON c.pk = cm.conversation_pk WHERE cm.message_pk = ${pk} AND c.build = ${build})`;
211
+ const editedSince = (pk) => sql `EXISTS (SELECT 1 FROM message_revisions r WHERE r.message_pk = ${pk} AND r.captured_at >= ${builtAt})`;
212
+ const pending = orm.get(sql `SELECT
213
+ sum(m.deleted_at IS NULL AND NOT ${member(sql `m.pk`)}) AS new,
214
+ sum(m.deleted_at IS NULL AND ${editedSince(sql `m.pk`)} AND ${member(sql `m.pk`)}) AS edited,
215
+ sum(m.deleted_at IS NOT NULL AND ${member(sql `m.pk`)}) AS deleted
216
+ FROM messages m WHERE m.chat_pk = ${chatKey}`);
217
+ const vectors = orm.get(sql `WITH changed AS (SELECT m.pk, m.sent_at, cm.conversation_pk FROM messages m
218
+ JOIN conversation_messages cm ON cm.message_pk = m.pk
219
+ JOIN conversations c ON c.pk = cm.conversation_pk AND c.build = ${build}
220
+ WHERE m.chat_pk = ${chatKey} AND (m.deleted_at IS NOT NULL OR ${editedSince(sql `m.pk`)})),
221
+ stale AS (SELECT DISTINCT k.content_hash AS hash FROM changed g
222
+ JOIN conversation_chunks k ON k.conversation_pk = g.conversation_pk
223
+ JOIN messages f ON f.pk = k.first_message_pk JOIN messages l ON l.pk = k.last_message_pk
224
+ WHERE (g.sent_at, g.pk) >= (f.sent_at, f.pk) AND (g.sent_at, g.pk) <= (l.sent_at, l.pk)),
225
+ hashes AS (SELECT DISTINCT h.content_hash AS hash,
226
+ EXISTS (SELECT 1 FROM chunk_vectors v WHERE v.model = ${model} AND v.content_hash = h.content_hash) AS vector,
227
+ h.content_hash IN (SELECT hash FROM stale) AS stale
228
+ FROM (${currentChunks(chatKey)}) h)
229
+ SELECT count(*) AS chunks, sum(vector) AS embedded, sum(vector AND NOT stale) AS current, sum(stale) AS stale
230
+ FROM hashes`);
231
+ const chunks = Number(vectors?.chunks ?? 0);
232
+ const current = Number(vectors?.current ?? 0);
233
+ const stale = Number(vectors?.stale ?? 0);
234
+ return {
235
+ builtAt,
236
+ algorithmVersion: state.algorithmVersion,
237
+ pending: {
238
+ new: Number(pending?.new ?? 0),
239
+ edited: Number(pending?.edited ?? 0),
240
+ deleted: Number(pending?.deleted ?? 0),
241
+ },
242
+ vectors: { chunks, embedded: Number(vectors?.embedded ?? 0), current, stale, missing: chunks - current - stale },
243
+ };
244
+ };
130
245
  //# sourceMappingURL=vectors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vectors.js","sourceRoot":"","sources":["../../../src/store/sqlite/vectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vectors.js","sourceRoot":"","sources":["../../../src/store/sqlite/vectors.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { Chat, Contact, Id, Member, Message, MessageHit, Page, Provider, Re
3
3
  import type { PeopleLookup } from "../resolve.js";
4
4
  import type { QueryExecution } from "../search/lucene/resolved.js";
5
5
  import type { ChatCompleteness } from "./sqlite/completeness.js";
6
+ import type { QueryGroup, QueryGrouping } from "./sqlite/lucene.js";
6
7
  import type { SearchIndexFill, SearchIndexState } from "./sqlite/search-index.js";
7
8
  import type { ChunkToEmbed } from "./sqlite/vectors.js";
8
9
  import type { ScoredHit, SearchScope, WordOptions, WordQuery } from "./sqlite/words.js";
@@ -191,7 +192,26 @@ export interface MessageStore {
191
192
  since?: string;
192
193
  limit: number;
193
194
  query: Float32Array;
195
+ exclude?: string;
194
196
  }): Promise<ConversationHit[]>;
197
+ /**
198
+ * A conversation of the current build: how many chunks it has, and the vectors of `model` of those whose
199
+ * messages did not change since — none when it is not the account's or not current.
200
+ */
201
+ conversationVectors(key: AccountKey, id: string, model: string): Promise<{
202
+ chunks: number;
203
+ vectors: Float32Array[];
204
+ }>;
205
+ /**
206
+ * How fresh each built chat's conversations and `model`'s vectors are — one chat, or every chat whose
207
+ * conversations were ever built. A chat never built answers `builtAt: null`.
208
+ */
209
+ readiness(key: AccountKey, options: {
210
+ chatId?: Id;
211
+ model: string;
212
+ }): Promise<StoredReadiness[]>;
213
+ /** Group chats with stored messages whose conversations were never built, the newest message first. */
214
+ unbuiltGroups(key: AccountKey): Promise<Id[]>;
195
215
  /** Chats in scope embedded with another model and not with `model`, which a search with it cannot see. */
196
216
  embeddedOnlyElsewhere(key: AccountKey, options: {
197
217
  chatId?: Id;
@@ -213,6 +233,11 @@ export interface MessageStore {
213
233
  countMessages(key: AccountKey, chatId: Id, options?: {
214
234
  since?: string;
215
235
  }): Promise<number>;
236
+ /** Saved or edited after `at` (ISO, this machine's clock), oldest first, and the ids deleted after it. */
237
+ changes(key: AccountKey, chatId: Id, at: string): Promise<{
238
+ messages: Message[];
239
+ deleted: Id[];
240
+ }>;
216
241
  /**
217
242
  * By time rather than by id: `before` messages sent at `at` or earlier and `after` sent later,
218
243
  * oldest first. `around` answers the same question for a message id.
@@ -281,6 +306,8 @@ export interface MessageStore {
281
306
  * not searchable are left out unless the scope names the chat.
282
307
  */
283
308
  matchQuery?(execution: QueryExecution): Promise<Page<ScoredHit>>;
309
+ /** The same matches as `matchQuery`, each counted once, grouped by chat, sender or quarter hour. */
310
+ countQuery?(execution: QueryExecution, by: QueryGrouping): Promise<QueryGroup[]>;
284
311
  matchWords(query: WordQuery, scope: SearchScope, options: WordOptions): Promise<Page<ScoredHit>>;
285
312
  /** The substring index, newest first (step 5); pieces under three letters are dropped. */
286
313
  matchSubstring(query: WordQuery, scope: SearchScope, options: {
@@ -373,7 +400,10 @@ export interface ConversationBuild {
373
400
  hash: string;
374
401
  }[][];
375
402
  }
376
- /** A conversation found by meaning: the chunk that matched best, and how near it is (−1 to 1). */
403
+ /**
404
+ * A conversation found by meaning: the chunk that matched best, and how near it is (−1 to 1). `stale` when
405
+ * the chunk's messages no longer read as they did when it was embedded (NEED-550 B).
406
+ */
377
407
  export interface ConversationHit {
378
408
  summary: ConversationSummary;
379
409
  chunk: {
@@ -381,6 +411,26 @@ export interface ConversationHit {
381
411
  lastMessageId: Id;
382
412
  };
383
413
  score: number;
414
+ stale: boolean;
415
+ }
416
+ export interface StoredReadiness {
417
+ chatId: Id;
418
+ builtAt: string | null;
419
+ algorithmVersion: number | null;
420
+ /** Messages the current build has not seen. */
421
+ pending: {
422
+ new: number;
423
+ edited: number;
424
+ deleted: number;
425
+ };
426
+ /** The current build's distinct chunk texts: `current` + `stale` + `missing`; `embedded` have any vector. */
427
+ vectors: {
428
+ chunks: number;
429
+ embedded: number;
430
+ current: number;
431
+ stale: number;
432
+ missing: number;
433
+ };
384
434
  }
385
435
  export interface ConversationSummary {
386
436
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
@@ -262,7 +262,7 @@ const storeOver = (context) => {
262
262
  });
263
263
  return cleared;
264
264
  },
265
- nearestConversations: async (key, { chatId, model, since, limit, query }) => {
265
+ nearestConversations: async (key, { chatId, model, since, limit, query, exclude }) => {
266
266
  const accountPk = findAccountPk(key);
267
267
  if (accountPk === undefined)
268
268
  return [];
@@ -272,21 +272,62 @@ const storeOver = (context) => {
272
272
  const nearest = vectors.nearestChunks(context, accountPk, {
273
273
  ...(chatKey === undefined ? {} : { chatKey }),
274
274
  ...(since === undefined ? {} : { since: Date.parse(since) }),
275
+ ...(exclude === undefined ? {} : { exclude: Number(exclude) }),
275
276
  model,
276
277
  limit,
277
278
  query,
278
279
  });
279
280
  const found = conversationQueries.summariesOf(context, accountPk, nearest.map(({ conversationPk }) => conversationPk));
280
281
  const ids = vectors.messageIds(context, nearest.flatMap(({ firstMessagePk, lastMessagePk }) => [firstMessagePk, lastMessagePk]));
281
- return nearest.flatMap(({ conversationPk, firstMessagePk, lastMessagePk, score }) => {
282
- const summary = found.get(conversationPk);
283
- const first = ids.get(firstMessagePk);
284
- const last = ids.get(lastMessagePk);
285
- return summary && first && last
286
- ? [{ summary, chunk: { firstMessageId: first, lastMessageId: last }, score }]
282
+ return nearest.flatMap((chunk) => {
283
+ const summary = found.get(chunk.conversationPk);
284
+ const first = ids.get(chunk.firstMessagePk);
285
+ const last = ids.get(chunk.lastMessagePk);
286
+ const freshness = vectors.chunkFreshness(context, chunk);
287
+ return summary && first && last && freshness !== "deleted"
288
+ ? [
289
+ {
290
+ summary,
291
+ chunk: { firstMessageId: first, lastMessageId: last },
292
+ score: chunk.score,
293
+ stale: freshness === "stale",
294
+ },
295
+ ]
287
296
  : [];
288
297
  });
289
298
  },
299
+ conversationVectors: async (key, id, model) => {
300
+ const accountPk = findAccountPk(key);
301
+ const pk = Number(id);
302
+ if (accountPk === undefined || !conversationQueries.summariesOf(context, accountPk, [pk]).has(pk)) {
303
+ return { chunks: 0, vectors: [] };
304
+ }
305
+ return vectors.conversationVectors(context, pk, model);
306
+ },
307
+ readiness: async (key, { chatId, model }) => {
308
+ const accountPk = findAccountPk(key);
309
+ if (accountPk === undefined)
310
+ return [];
311
+ const chats = chatId === undefined
312
+ ? vectors.builtChats(context, accountPk)
313
+ : [{ chatKey: chatKeyOf(key, chatId), id: chatId }].flatMap(({ chatKey, id }) => chatKey === undefined ? [] : [{ chatKey, id }]);
314
+ return chats.map(({ chatKey, id }) => {
315
+ const found = vectors.readiness(context, chatKey, model);
316
+ return found
317
+ ? { chatId: id, ...found, builtAt: new Date(found.builtAt).toISOString() }
318
+ : {
319
+ chatId: id,
320
+ builtAt: null,
321
+ algorithmVersion: null,
322
+ pending: { new: 0, edited: 0, deleted: 0 },
323
+ vectors: { chunks: 0, embedded: 0, current: 0, stale: 0, missing: 0 },
324
+ };
325
+ });
326
+ },
327
+ unbuiltGroups: async (key) => {
328
+ const accountPk = findAccountPk(key);
329
+ return accountPk === undefined ? [] : vectors.unbuiltGroups(context, accountPk);
330
+ },
290
331
  embeddedOnlyElsewhere: async (key, { chatId, model }) => {
291
332
  const accountPk = findAccountPk(key);
292
333
  if (accountPk === undefined)
@@ -314,6 +355,12 @@ const storeOver = (context) => {
314
355
  const chatKey = chatKeyOf(key, chatId);
315
356
  return chatKey === undefined ? 0 : reads.countMessages(context, chatKey, since);
316
357
  },
358
+ changes: async (key, chatId, at) => {
359
+ const chatKey = chatKeyOf(key, chatId);
360
+ return chatKey === undefined
361
+ ? { messages: [], deleted: [] }
362
+ : reads.changesSince(context, chatKey, Date.parse(at));
363
+ },
317
364
  messagesWindow: async (key, chatId, window) => {
318
365
  const chatKey = chatKeyOf(key, chatId);
319
366
  return chatKey === undefined ? [] : reads.messagesWindow(context, chatKey, window);
@@ -362,6 +409,7 @@ const storeOver = (context) => {
362
409
  search: async (query, { limit, account }) => search.find(context, { text: query, limit, ...(account ? { account } : {}) }),
363
410
  find: async (filter) => (filter.pattern ? findRegex(context, filter) : search.find(context, filter)),
364
411
  matchQuery: async (execution) => lucene.matchQuery(context, execution),
412
+ countQuery: async (execution, by) => lucene.countQuery(context, execution, by),
365
413
  matchWords: async (query, scope, options) => words.matchWords(context, query, scope, options),
366
414
  matchSubstring: async (query, scope, options) => words.matchSubstring(context, query, scope, options),
367
415
  attachmentKinds: async () => database