@leemour/cli-messaging 0.140.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.
- package/dist/cli/config-command.js +5 -0
- package/dist/cli/config-command.js.map +1 -1
- package/dist/cli/messenger/archive-commands.d.ts.map +1 -1
- package/dist/cli/messenger/archive-commands.js +91 -7
- package/dist/cli/messenger/archive-commands.js.map +1 -1
- package/dist/cli/messenger/catch-up.d.ts +17 -0
- package/dist/cli/messenger/catch-up.d.ts.map +1 -0
- package/dist/cli/messenger/catch-up.js +30 -0
- package/dist/cli/messenger/catch-up.js.map +1 -0
- package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
- package/dist/cli/messenger/conversations-command.js +213 -27
- package/dist/cli/messenger/conversations-command.js.map +1 -1
- package/dist/cli/messenger/export-folder.d.ts +54 -0
- package/dist/cli/messenger/export-folder.d.ts.map +1 -0
- package/dist/cli/messenger/export-folder.js +106 -0
- package/dist/cli/messenger/export-folder.js.map +1 -0
- package/dist/cli/messenger/inbox.d.ts +4 -3
- package/dist/cli/messenger/inbox.d.ts.map +1 -1
- package/dist/cli/messenger/inbox.js +28 -32
- package/dist/cli/messenger/inbox.js.map +1 -1
- package/dist/cli/messenger/messages-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-command.js +2 -0
- package/dist/cli/messenger/messages-command.js.map +1 -1
- package/dist/cli/messenger/messages-stats-command.d.ts +4 -0
- package/dist/cli/messenger/messages-stats-command.d.ts.map +1 -0
- package/dist/cli/messenger/messages-stats-command.js +49 -0
- package/dist/cli/messenger/messages-stats-command.js.map +1 -0
- package/dist/cli/messenger/password.d.ts +11 -0
- package/dist/cli/messenger/password.d.ts.map +1 -0
- package/dist/cli/messenger/password.js +26 -0
- package/dist/cli/messenger/password.js.map +1 -0
- package/dist/cli/messenger/points.d.ts +21 -0
- package/dist/cli/messenger/points.d.ts.map +1 -0
- package/dist/cli/messenger/points.js +39 -0
- package/dist/cli/messenger/points.js.map +1 -0
- package/dist/cli/messenger/review.d.ts.map +1 -1
- package/dist/cli/messenger/review.js +55 -20
- package/dist/cli/messenger/review.js.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.js +75 -20
- package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
- package/dist/cli/permission-migration.d.ts.map +1 -1
- package/dist/cli/permission-migration.js +14 -9
- package/dist/cli/permission-migration.js.map +1 -1
- package/dist/cli/settings.d.ts +4 -0
- package/dist/cli/settings.d.ts.map +1 -1
- package/dist/cli/settings.js +12 -22
- package/dist/cli/settings.js.map +1 -1
- package/dist/domain/models.d.ts +4 -0
- package/dist/domain/models.d.ts.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool.d.ts +1 -1
- package/dist/mcp/tool.d.ts.map +1 -1
- package/dist/mcp/tools/conversations.d.ts +1 -1
- package/dist/mcp/tools/conversations.d.ts.map +1 -1
- package/dist/mcp/tools/conversations.js +76 -5
- package/dist/mcp/tools/conversations.js.map +1 -1
- package/dist/mcp/tools/messages.d.ts.map +1 -1
- package/dist/mcp/tools/messages.js +8 -1
- package/dist/mcp/tools/messages.js.map +1 -1
- package/dist/mcp/tools/search.d.ts +24 -0
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +25 -0
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/sealed.d.ts +39 -0
- package/dist/sealed.d.ts.map +1 -0
- package/dist/sealed.js +140 -0
- package/dist/sealed.js.map +1 -0
- package/dist/search/lucene/dates.d.ts +2 -2
- package/dist/search/lucene/dates.d.ts.map +1 -1
- package/dist/search/lucene/dates.js +27 -5
- package/dist/search/lucene/dates.js.map +1 -1
- package/dist/search/lucene/registry.d.ts +14 -13
- package/dist/search/lucene/registry.d.ts.map +1 -1
- package/dist/search/lucene/registry.js +33 -12
- package/dist/search/lucene/registry.js.map +1 -1
- package/dist/sends/index.d.ts +1 -1
- package/dist/sends/index.d.ts.map +1 -1
- package/dist/sends/index.js +1 -1
- package/dist/sends/index.js.map +1 -1
- package/dist/sends/permissions.d.ts +9 -0
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +19 -0
- package/dist/sends/permissions.js.map +1 -1
- package/dist/services/archive.d.ts +22 -1
- package/dist/services/archive.d.ts.map +1 -1
- package/dist/services/archive.js +25 -0
- package/dist/services/archive.js.map +1 -1
- package/dist/services/embeddings.d.ts +108 -3
- package/dist/services/embeddings.d.ts.map +1 -1
- package/dist/services/embeddings.js +250 -59
- package/dist/services/embeddings.js.map +1 -1
- package/dist/services/inbox.d.ts +27 -9
- package/dist/services/inbox.d.ts.map +1 -1
- package/dist/services/inbox.js +57 -22
- package/dist/services/inbox.js.map +1 -1
- package/dist/services/messages-search.d.ts +21 -1
- package/dist/services/messages-search.d.ts.map +1 -1
- package/dist/services/messages-search.js +90 -26
- package/dist/services/messages-search.js.map +1 -1
- package/dist/services/messages.d.ts +8 -1
- package/dist/services/messages.d.ts.map +1 -1
- package/dist/services/messages.js +7 -1
- package/dist/services/messages.js.map +1 -1
- package/dist/store/sqlite/lucene.d.ts +11 -0
- package/dist/store/sqlite/lucene.d.ts.map +1 -1
- package/dist/store/sqlite/lucene.js +78 -4
- package/dist/store/sqlite/lucene.js.map +1 -1
- package/dist/store/sqlite/messages.d.ts +2 -2
- package/dist/store/sqlite/messages.d.ts.map +1 -1
- package/dist/store/sqlite/messages.js +5 -2
- package/dist/store/sqlite/messages.js.map +1 -1
- package/dist/store/sqlite/reads.d.ts +10 -0
- package/dist/store/sqlite/reads.d.ts.map +1 -1
- package/dist/store/sqlite/reads.js +25 -2
- package/dist/store/sqlite/reads.js.map +1 -1
- package/dist/store/sqlite/vectors.d.ts +49 -1
- package/dist/store/sqlite/vectors.d.ts.map +1 -1
- package/dist/store/sqlite/vectors.js +121 -6
- package/dist/store/sqlite/vectors.js.map +1 -1
- package/dist/store/store.d.ts +51 -1
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +55 -7
- package/dist/store/store.js.map +1 -1
- package/package.json +1 -1
- 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":"
|
|
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
|
|
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}
|
|
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":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"vectors.js","sourceRoot":"","sources":["../../../src/store/sqlite/vectors.ts"],"names":[],"mappings":"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"}
|
package/dist/store/store.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
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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"}
|
package/dist/store/store.js
CHANGED
|
@@ -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((
|
|
282
|
-
const summary = found.get(conversationPk);
|
|
283
|
-
const first = ids.get(firstMessagePk);
|
|
284
|
-
const last = ids.get(lastMessagePk);
|
|
285
|
-
|
|
286
|
-
|
|
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
|