@leemour/cli-messaging 0.97.0 → 0.99.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/README.md +8 -7
- package/dist/cli/bot/admins.d.ts +10 -0
- package/dist/cli/bot/admins.d.ts.map +1 -0
- package/dist/cli/bot/admins.js +114 -0
- package/dist/cli/bot/admins.js.map +1 -0
- package/dist/cli/bot/command.d.ts.map +1 -1
- package/dist/cli/bot/command.js +17 -15
- package/dist/cli/bot/command.js.map +1 -1
- package/dist/cli/bot/context.d.ts +2 -0
- package/dist/cli/bot/context.d.ts.map +1 -1
- package/dist/cli/bot/context.js +7 -0
- package/dist/cli/bot/context.js.map +1 -1
- package/dist/cli/bot/messages.d.ts.map +1 -1
- package/dist/cli/bot/messages.js +20 -10
- package/dist/cli/bot/messages.js.map +1 -1
- package/dist/cli/bot/port.d.ts +128 -2
- package/dist/cli/bot/port.d.ts.map +1 -1
- package/dist/cli/bot/port.js.map +1 -1
- package/dist/cli/bot/registry.d.ts +2 -0
- package/dist/cli/bot/registry.d.ts.map +1 -1
- package/dist/cli/bot/registry.js +2 -0
- package/dist/cli/bot/registry.js.map +1 -1
- package/dist/cli/bot/setup.d.ts +9 -0
- package/dist/cli/bot/setup.d.ts.map +1 -0
- package/dist/cli/bot/setup.js +155 -0
- package/dist/cli/bot/setup.js.map +1 -0
- package/dist/cli/bot/updates.d.ts +23 -0
- package/dist/cli/bot/updates.d.ts.map +1 -0
- package/dist/cli/bot/updates.js +61 -0
- package/dist/cli/bot/updates.js.map +1 -0
- package/dist/cli/bot/watch.d.ts +9 -0
- package/dist/cli/bot/watch.d.ts.map +1 -0
- package/dist/cli/bot/watch.js +197 -0
- package/dist/cli/bot/watch.js.map +1 -0
- package/dist/cli/config-command.js +1 -1
- package/dist/cli/config-command.js.map +1 -1
- package/dist/cli/deadline.d.ts.map +1 -1
- package/dist/cli/deadline.js +11 -2
- package/dist/cli/deadline.js.map +1 -1
- package/dist/cli/index.d.ts +5 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/messenger/admin-moderation-command.js +2 -2
- package/dist/cli/messenger/admin-moderation-command.js.map +1 -1
- package/dist/cli/messenger/context.d.ts +18 -2
- package/dist/cli/messenger/context.d.ts.map +1 -1
- package/dist/cli/messenger/context.js +30 -8
- package/dist/cli/messenger/context.js.map +1 -1
- package/dist/cli/messenger/download-command.d.ts.map +1 -1
- package/dist/cli/messenger/download-command.js +97 -30
- package/dist/cli/messenger/download-command.js.map +1 -1
- package/dist/cli/messenger/guard-commands.js +3 -3
- package/dist/cli/messenger/guard-commands.js.map +1 -1
- package/dist/cli/messenger/messages-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-command.js +45 -11
- package/dist/cli/messenger/messages-command.js.map +1 -1
- package/dist/cli/messenger/models-command.d.ts +1 -1
- package/dist/cli/messenger/models-command.d.ts.map +1 -1
- package/dist/cli/messenger/models-command.js +64 -3
- package/dist/cli/messenger/models-command.js.map +1 -1
- package/dist/cli/messenger/observed.d.ts.map +1 -1
- package/dist/cli/messenger/observed.js +27 -10
- package/dist/cli/messenger/observed.js.map +1 -1
- package/dist/cli/messenger/port.d.ts +26 -9
- package/dist/cli/messenger/port.d.ts.map +1 -1
- package/dist/cli/messenger/port.js.map +1 -1
- package/dist/cli/messenger/stored.d.ts +3 -2
- package/dist/cli/messenger/stored.d.ts.map +1 -1
- package/dist/cli/messenger/stored.js +75 -33
- package/dist/cli/messenger/stored.js.map +1 -1
- package/dist/cli/messenger/watch-command.d.ts +2 -1
- package/dist/cli/messenger/watch-command.d.ts.map +1 -1
- package/dist/cli/messenger/watch-command.js +11 -2
- package/dist/cli/messenger/watch-command.js.map +1 -1
- package/dist/embeddings/embed.d.ts +22 -0
- package/dist/embeddings/embed.d.ts.map +1 -0
- package/dist/embeddings/embed.js +69 -0
- package/dist/embeddings/embed.js.map +1 -0
- package/dist/embeddings/models.d.ts +33 -0
- package/dist/embeddings/models.d.ts.map +1 -0
- package/dist/embeddings/models.js +85 -0
- package/dist/embeddings/models.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kit/contract.d.ts +39 -0
- package/dist/kit/contract.d.ts.map +1 -0
- package/dist/kit/contract.js +449 -0
- package/dist/kit/contract.js.map +1 -0
- package/dist/kit/fake.d.ts +16 -0
- package/dist/kit/fake.d.ts.map +1 -0
- package/dist/kit/fake.js +457 -0
- package/dist/kit/fake.js.map +1 -0
- package/dist/kit/index.d.ts +4 -0
- package/dist/kit/index.d.ts.map +1 -0
- package/dist/kit/index.js +4 -0
- package/dist/kit/index.js.map +1 -0
- package/dist/kit/seed.d.ts +38 -0
- package/dist/kit/seed.d.ts.map +1 -0
- package/dist/kit/seed.js +83 -0
- package/dist/kit/seed.js.map +1 -0
- package/dist/mcp/resources.d.ts +6 -1
- package/dist/mcp/resources.d.ts.map +1 -1
- package/dist/mcp/resources.js +15 -5
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +3 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool.d.ts +12 -2
- package/dist/mcp/tool.d.ts.map +1 -1
- package/dist/mcp/tool.js +15 -8
- package/dist/mcp/tool.js.map +1 -1
- package/dist/mcp/tools/chats.js +3 -3
- package/dist/mcp/tools/chats.js.map +1 -1
- package/dist/mcp/tools/contacts.js +3 -3
- package/dist/mcp/tools/contacts.js.map +1 -1
- package/dist/mcp/tools/inbox.d.ts.map +1 -1
- package/dist/mcp/tools/inbox.js +3 -4
- package/dist/mcp/tools/inbox.js.map +1 -1
- package/dist/mcp/tools/messages.d.ts.map +1 -1
- package/dist/mcp/tools/messages.js +19 -12
- package/dist/mcp/tools/messages.js.map +1 -1
- package/dist/mcp/tools/review.d.ts.map +1 -1
- package/dist/mcp/tools/review.js +3 -4
- package/dist/mcp/tools/review.js.map +1 -1
- package/dist/moderation/check.d.ts +3 -1
- package/dist/moderation/check.d.ts.map +1 -1
- package/dist/moderation/check.js +3 -2
- package/dist/moderation/check.js.map +1 -1
- package/dist/parity/audit.d.ts +11 -9
- package/dist/parity/audit.d.ts.map +1 -1
- package/dist/parity/audit.js +63 -46
- package/dist/parity/audit.js.map +1 -1
- package/dist/parity/bin.js +17 -8
- package/dist/parity/bin.js.map +1 -1
- package/dist/parity/catalogue.d.ts.map +1 -1
- package/dist/parity/catalogue.js +7 -1
- package/dist/parity/catalogue.js.map +1 -1
- package/dist/parity/manifest.d.ts +19 -12
- package/dist/parity/manifest.d.ts.map +1 -1
- package/dist/parity/manifest.js +60 -37
- package/dist/parity/manifest.js.map +1 -1
- package/dist/parity/pages.d.ts +3 -3
- package/dist/parity/pages.d.ts.map +1 -1
- package/dist/parity/pages.js +4 -5
- package/dist/parity/pages.js.map +1 -1
- package/dist/parity/seed.d.ts +11 -0
- package/dist/parity/seed.d.ts.map +1 -0
- package/dist/parity/seed.js +99 -0
- package/dist/parity/seed.js.map +1 -0
- package/dist/parity/wording.d.ts +4 -3
- package/dist/parity/wording.d.ts.map +1 -1
- package/dist/parity/wording.js +21 -10
- package/dist/parity/wording.js.map +1 -1
- package/dist/search/correct.d.ts +25 -0
- package/dist/search/correct.d.ts.map +1 -0
- package/dist/search/correct.js +65 -0
- package/dist/search/correct.js.map +1 -0
- package/dist/search/query.d.ts +7 -2
- package/dist/search/query.d.ts.map +1 -1
- package/dist/search/query.js +12 -8
- package/dist/search/query.js.map +1 -1
- package/dist/search/search.d.ts +27 -0
- package/dist/search/search.d.ts.map +1 -0
- package/dist/search/search.js +65 -0
- package/dist/search/search.js.map +1 -0
- package/dist/sends/guarded.d.ts +12 -0
- package/dist/sends/guarded.d.ts.map +1 -1
- package/dist/sends/guarded.js +24 -2
- package/dist/sends/guarded.js.map +1 -1
- package/dist/services/archive.d.ts +8 -3
- package/dist/services/archive.d.ts.map +1 -1
- package/dist/services/archive.js +24 -3
- package/dist/services/archive.js.map +1 -1
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +13 -9
- package/dist/services/chats.js.map +1 -1
- package/dist/services/deps.d.ts +13 -0
- package/dist/services/deps.d.ts.map +1 -1
- package/dist/services/deps.js +12 -0
- package/dist/services/deps.js.map +1 -1
- package/dist/services/inbox.d.ts +14 -4
- package/dist/services/inbox.d.ts.map +1 -1
- package/dist/services/inbox.js +55 -14
- package/dist/services/inbox.js.map +1 -1
- package/dist/services/index.d.ts +2 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/messages.d.ts +51 -6
- package/dist/services/messages.d.ts.map +1 -1
- package/dist/services/messages.js +202 -19
- package/dist/services/messages.js.map +1 -1
- package/dist/services/moderation.d.ts.map +1 -1
- package/dist/services/moderation.js +7 -1
- package/dist/services/moderation.js.map +1 -1
- package/dist/services/people.d.ts.map +1 -1
- package/dist/services/people.js +8 -5
- package/dist/services/people.js.map +1 -1
- package/dist/speech/hearing.d.ts +1 -1
- package/dist/speech/hearing.d.ts.map +1 -1
- package/dist/speech/hearing.js +2 -2
- package/dist/speech/hearing.js.map +1 -1
- package/dist/speech/install.d.ts +8 -1
- package/dist/speech/install.d.ts.map +1 -1
- package/dist/speech/install.js +11 -4
- package/dist/speech/install.js.map +1 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/sqlite/accounts.d.ts +1 -0
- package/dist/store/sqlite/accounts.d.ts.map +1 -1
- package/dist/store/sqlite/accounts.js +6 -1
- package/dist/store/sqlite/accounts.js.map +1 -1
- package/dist/store/sqlite/completeness.d.ts +17 -0
- package/dist/store/sqlite/completeness.d.ts.map +1 -0
- package/dist/store/sqlite/completeness.js +30 -0
- package/dist/store/sqlite/completeness.js.map +1 -0
- 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 +10 -14
- package/dist/store/sqlite/messages.js.map +1 -1
- package/dist/store/sqlite/search-index.d.ts.map +1 -1
- package/dist/store/sqlite/search-index.js +45 -9
- package/dist/store/sqlite/search-index.js.map +1 -1
- package/dist/store/sqlite/search.d.ts +2 -0
- package/dist/store/sqlite/search.d.ts.map +1 -1
- package/dist/store/sqlite/search.js +27 -17
- package/dist/store/sqlite/search.js.map +1 -1
- package/dist/store/sqlite/words.d.ts +83 -0
- package/dist/store/sqlite/words.d.ts.map +1 -0
- package/dist/store/sqlite/words.js +255 -0
- package/dist/store/sqlite/words.js.map +1 -0
- package/dist/store/store.d.ts +40 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +19 -2
- package/dist/store/store.js.map +1 -1
- package/package.json +10 -4
- package/parity.json +1136 -389
- package/dist/domain/capabilities.d.ts +0 -22
- package/dist/domain/capabilities.d.ts.map +0 -1
- package/dist/domain/capabilities.js +0 -2
- package/dist/domain/capabilities.js.map +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { Id, Page, Provider } from "../../domain/models.js";
|
|
2
|
+
import type { Term } from "../../search/query.js";
|
|
3
|
+
import type { AccountKey, StoredHit } from "../store.js";
|
|
4
|
+
import type { StoreContext } from "./open.js";
|
|
5
|
+
/**
|
|
6
|
+
* A chat or a sender with at most this many messages is filtered inside the word index; a larger one by
|
|
7
|
+
* a join (phase 2 plan S6). Measured on 1M (`bench/search/store-chain.ts`): the token is 3.5 times
|
|
8
|
+
* faster for "any word" in an 85k chat, and 5% slower in a 500k one.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SCOPE_TOKEN_LIMIT = 100000;
|
|
11
|
+
export interface WordQuery {
|
|
12
|
+
/** AND of groups, each an OR of terms. */
|
|
13
|
+
required: Term[][];
|
|
14
|
+
excluded: Term[];
|
|
15
|
+
}
|
|
16
|
+
export interface SearchScope {
|
|
17
|
+
accounts: AccountKey[];
|
|
18
|
+
chat?: {
|
|
19
|
+
account: AccountKey;
|
|
20
|
+
chatId: Id;
|
|
21
|
+
};
|
|
22
|
+
sender?: {
|
|
23
|
+
provider: Provider;
|
|
24
|
+
id: Id;
|
|
25
|
+
};
|
|
26
|
+
/** Any of these senders — always a join, whatever their size. */
|
|
27
|
+
senders?: {
|
|
28
|
+
provider: Provider;
|
|
29
|
+
id: Id;
|
|
30
|
+
}[];
|
|
31
|
+
/** `from:me`: what the account itself sent. */
|
|
32
|
+
outgoing?: boolean;
|
|
33
|
+
/** Epoch ms, inclusive. */
|
|
34
|
+
after?: number;
|
|
35
|
+
/** Epoch ms, exclusive. */
|
|
36
|
+
before?: number;
|
|
37
|
+
/** Attachment kinds, `attachment` for any, `link` for a link in the text — all required. */
|
|
38
|
+
has?: string[];
|
|
39
|
+
}
|
|
40
|
+
export interface WordOptions {
|
|
41
|
+
/** Every group required, or any term enough. */
|
|
42
|
+
mode: "every" | "any";
|
|
43
|
+
/** Words of three letters or more match as the beginning of a word. */
|
|
44
|
+
beginnings: boolean;
|
|
45
|
+
limit: number;
|
|
46
|
+
/** Newest first instead of by score. */
|
|
47
|
+
newest?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/** A hit with its relevance — bm25 turned round so higher is better; `null` from steps that do not rank. */
|
|
50
|
+
export type ScoredHit = StoredHit & {
|
|
51
|
+
score: number | null;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Steps 1, 2 and 4 of the search (plan S4): the word index, ranked by bm25, ties newest first. A small
|
|
55
|
+
* chat or sender is a token inside the index, a large one a join; with neither, the index ranks first
|
|
56
|
+
* and the join keeps this account's rows (plan S6). The index is always searched before the rows.
|
|
57
|
+
*/
|
|
58
|
+
export declare const matchWords: (context: StoreContext, query: WordQuery, scope: SearchScope, { mode, beginnings, limit, newest }: WordOptions) => Page<ScoredHit>;
|
|
59
|
+
/** A search of filters alone — `from:alice after:2026-01-01` — newest first (plan S5). */
|
|
60
|
+
export declare const matchFilters: (context: StoreContext, scope: SearchScope, { limit }: {
|
|
61
|
+
limit: number;
|
|
62
|
+
}) => Page<ScoredHit>;
|
|
63
|
+
/** Step 5 (plan S4): the substring index over the raw text, newest first. Pieces under three letters are dropped. */
|
|
64
|
+
export declare const matchSubstring: (context: StoreContext, query: WordQuery, scope: SearchScope, { limit }: {
|
|
65
|
+
limit: number;
|
|
66
|
+
}) => Page<ScoredHit>;
|
|
67
|
+
/**
|
|
68
|
+
* The words the index knows, of those given: a whole word, or the beginning of one — otherwise
|
|
69
|
+
* `квартир` would be "corrected" to `квартира` and lose `квартиру` (plan S4).
|
|
70
|
+
*/
|
|
71
|
+
export declare const knownTerms: ({ database }: StoreContext, terms: string[]) => Set<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Words sharing trigrams with `term`, between the lengths given, most shared first — and only those
|
|
74
|
+
* the index still has, so a word whose messages were all deleted never comes back (plan S7).
|
|
75
|
+
*/
|
|
76
|
+
export declare const termCandidates: ({ database }: StoreContext, pieces: string[], { shortest, longest }: {
|
|
77
|
+
shortest: number;
|
|
78
|
+
longest: number;
|
|
79
|
+
}) => {
|
|
80
|
+
term: string;
|
|
81
|
+
docs: number;
|
|
82
|
+
}[];
|
|
83
|
+
//# sourceMappingURL=words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/words.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,SAAU,CAAA;AAMxC,MAAM,WAAW,SAAS;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAA;IAClB,QAAQ,EAAE,IAAI,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,EAAE,CAAA;KAAE,CAAA;IAC1C,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,EAAE,CAAA;KAAE,CAAA;IACvC,iEAAiE;IACjE,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,EAAE,CAAA;KAAE,EAAE,CAAA;IAC1C,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4FAA4F;IAC5F,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,IAAI,EAAE,OAAO,GAAG,KAAK,CAAA;IACrB,uEAAuE;IACvE,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,4GAA4G;AAC5G,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAgH5D;;;;GAIG;AACH,eAAO,MAAM,UAAU,YACZ,YAAY,SACd,SAAS,SACT,WAAW,uCAC2B,WAAW,KACvD,IAAI,CAAC,SAAS,CA8DhB,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,YAAY,YACd,YAAY,SACd,WAAW,aACP;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,KAC3B,IAAI,CAAC,SAAS,CAehB,CAAA;AAED,qHAAqH;AACrH,eAAO,MAAM,cAAc,YAChB,YAAY,SACd,SAAS,SACT,WAAW,aACP;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,KAC3B,IAAI,CAAC,SAAS,CA8BhB,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,UAAU,iBAAkB,YAAY,SAAS,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,CAQlF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,iBACX,YAAY,UAClB,MAAM,EAAE,yBACO;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,KAC3D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAchC,CAAA"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { normalize } from "../normalize.js";
|
|
3
|
+
import { findAccountPk } from "./accounts.js";
|
|
4
|
+
import { findChatPk } from "./chats.js";
|
|
5
|
+
import { hitsByPk } from "./search.js";
|
|
6
|
+
/**
|
|
7
|
+
* A chat or a sender with at most this many messages is filtered inside the word index; a larger one by
|
|
8
|
+
* a join (phase 2 plan S6). Measured on 1M (`bench/search/store-chain.ts`): the token is 3.5 times
|
|
9
|
+
* faster for "any word" in an 85k chat, and 5% slower in a 500k one.
|
|
10
|
+
*/
|
|
11
|
+
export const SCOPE_TOKEN_LIMIT = 100_000;
|
|
12
|
+
/** The scope column out of bm25: otherwise a chat under the limit would rank its hits by the token too. */
|
|
13
|
+
const UNSCOPED_RANK = "bm25(1.0, 0.0)";
|
|
14
|
+
/** Ranked inside the index first, this many times the page, before the join drops other accounts' rows. */
|
|
15
|
+
const RANKED_FIRST = 5;
|
|
16
|
+
const quoted = (text) => `"${text.replaceAll('"', '""')}"`;
|
|
17
|
+
const meaningful = (text) => /[\p{L}\p{N}]/u.test(text);
|
|
18
|
+
const textOf = (term) => normalize(term.kind === "phrase" ? term.words.join(" ") : term.text);
|
|
19
|
+
const wordTerm = (term, beginnings) => {
|
|
20
|
+
const text = textOf(term);
|
|
21
|
+
if (!meaningful(text))
|
|
22
|
+
return undefined;
|
|
23
|
+
return beginnings && term.kind === "word" && [...text].length >= 3 ? `${quoted(text)}*` : quoted(text);
|
|
24
|
+
};
|
|
25
|
+
/** Null when nothing in the scope can match: an unknown account, chat or sender. */
|
|
26
|
+
const resolve = (context, scope) => {
|
|
27
|
+
if (scope.accounts.length === 0)
|
|
28
|
+
throw new CliError("validation_error", "a search names at least one account");
|
|
29
|
+
const accountPks = scope.accounts.flatMap((key) => findAccountPk(context, key) ?? []);
|
|
30
|
+
if (accountPks.length === 0)
|
|
31
|
+
return null;
|
|
32
|
+
const resolved = { accountPks };
|
|
33
|
+
const { database } = context;
|
|
34
|
+
if (scope.chat) {
|
|
35
|
+
const account = findAccountPk(context, scope.chat.account);
|
|
36
|
+
const chatPk = account === undefined ? undefined : findChatPk(context, account, scope.chat.chatId);
|
|
37
|
+
if (chatPk === undefined)
|
|
38
|
+
return null;
|
|
39
|
+
resolved.chatPk = chatPk;
|
|
40
|
+
resolved.chatMessages = Number(database.prepare("SELECT message_count FROM chats WHERE pk = ?").get(chatPk)?.message_count);
|
|
41
|
+
}
|
|
42
|
+
if (scope.senders) {
|
|
43
|
+
const lookup = database.prepare("SELECT pk FROM identities WHERE provider = ? AND native_id = ?");
|
|
44
|
+
resolved.senderPks = scope.senders.flatMap(({ provider, id }) => {
|
|
45
|
+
const pk = lookup.get(provider, id)?.pk;
|
|
46
|
+
return pk === undefined ? [] : [Number(pk)];
|
|
47
|
+
});
|
|
48
|
+
if (resolved.senderPks.length === 0)
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
if (scope.sender) {
|
|
52
|
+
const senderPk = database
|
|
53
|
+
.prepare("SELECT pk FROM identities WHERE provider = ? AND native_id = ?")
|
|
54
|
+
.get(scope.sender.provider, scope.sender.id)?.pk;
|
|
55
|
+
if (senderPk === undefined)
|
|
56
|
+
return null;
|
|
57
|
+
resolved.senderPk = Number(senderPk);
|
|
58
|
+
// Counted only as far as the limit: past it the answer is "large", whatever the number.
|
|
59
|
+
resolved.senderMessages = Number(database
|
|
60
|
+
.prepare("SELECT count(*) AS n FROM (SELECT 1 FROM messages WHERE sender_identity_pk = ? LIMIT ?)")
|
|
61
|
+
.get(resolved.senderPk, SCOPE_TOKEN_LIMIT + 1)?.n);
|
|
62
|
+
}
|
|
63
|
+
return resolved;
|
|
64
|
+
};
|
|
65
|
+
/** The conditions on the message row, shared by every step. */
|
|
66
|
+
const rowConditions = (resolved, scope, joined) => {
|
|
67
|
+
const where = ["m.deleted_at IS NULL", `m.account_pk IN (${resolved.accountPks.join(", ")})`];
|
|
68
|
+
const params = [];
|
|
69
|
+
if (joined.chat) {
|
|
70
|
+
where.push("m.chat_pk = ?");
|
|
71
|
+
params.push(resolved.chatPk);
|
|
72
|
+
}
|
|
73
|
+
if (joined.sender) {
|
|
74
|
+
where.push("m.sender_identity_pk = ?");
|
|
75
|
+
params.push(resolved.senderPk);
|
|
76
|
+
}
|
|
77
|
+
if (resolved.senderPks)
|
|
78
|
+
where.push(`m.sender_identity_pk IN (${resolved.senderPks.join(", ")})`);
|
|
79
|
+
if (scope.outgoing)
|
|
80
|
+
where.push("m.outgoing = 1");
|
|
81
|
+
if (scope.after !== undefined) {
|
|
82
|
+
where.push("m.sent_at >= ?");
|
|
83
|
+
params.push(scope.after);
|
|
84
|
+
}
|
|
85
|
+
if (scope.before !== undefined) {
|
|
86
|
+
where.push("m.sent_at < ?");
|
|
87
|
+
params.push(scope.before);
|
|
88
|
+
}
|
|
89
|
+
for (const kind of scope.has ?? []) {
|
|
90
|
+
if (kind === "link")
|
|
91
|
+
where.push(`m.pk IN (SELECT rowid FROM messages_fts WHERE messages_fts MATCH '"://"')`);
|
|
92
|
+
else if (kind === "attachment")
|
|
93
|
+
where.push("EXISTS (SELECT 1 FROM attachments a WHERE a.message_pk = m.pk)");
|
|
94
|
+
else {
|
|
95
|
+
where.push("EXISTS (SELECT 1 FROM attachments a WHERE a.message_pk = m.pk AND a.kind = ?)");
|
|
96
|
+
params.push(kind);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// A chat marked not searchable is searched only when the search names it (plan S9).
|
|
100
|
+
if (!scope.chat)
|
|
101
|
+
where.push("c.is_searchable = 1");
|
|
102
|
+
return { where: where.join(" AND "), params };
|
|
103
|
+
};
|
|
104
|
+
const page = (context, rows, limit) => {
|
|
105
|
+
const kept = rows.slice(0, limit);
|
|
106
|
+
const scores = new Map(kept.map((row) => [row.pk, row.score]));
|
|
107
|
+
const hits = hitsByPk(context, kept.map((row) => row.pk));
|
|
108
|
+
return {
|
|
109
|
+
items: hits.map((hit, index) => {
|
|
110
|
+
const score = scores.get(kept[index].pk) ?? null;
|
|
111
|
+
return { ...hit, score: score === null ? null : -score };
|
|
112
|
+
}),
|
|
113
|
+
hasMore: rows.length > limit,
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Steps 1, 2 and 4 of the search (plan S4): the word index, ranked by bm25, ties newest first. A small
|
|
118
|
+
* chat or sender is a token inside the index, a large one a join; with neither, the index ranks first
|
|
119
|
+
* and the join keeps this account's rows (plan S6). The index is always searched before the rows.
|
|
120
|
+
*/
|
|
121
|
+
export const matchWords = (context, query, scope, { mode, beginnings, limit, newest = false }) => {
|
|
122
|
+
const empty = { items: [], hasMore: false };
|
|
123
|
+
const groups = query.required
|
|
124
|
+
.map((group) => group.flatMap((term) => wordTerm(term, beginnings) ?? []))
|
|
125
|
+
.filter((group) => group.length > 0);
|
|
126
|
+
if (groups.length === 0)
|
|
127
|
+
return empty;
|
|
128
|
+
const resolved = resolve(context, scope);
|
|
129
|
+
if (!resolved)
|
|
130
|
+
return empty;
|
|
131
|
+
const tokenChat = resolved.chatPk !== undefined && (resolved.chatMessages ?? 0) <= SCOPE_TOKEN_LIMIT;
|
|
132
|
+
const tokenSender = resolved.senderPk !== undefined && (resolved.senderMessages ?? 0) <= SCOPE_TOKEN_LIMIT;
|
|
133
|
+
const required = mode === "every" ? groups.map((group) => `(${group.join(" OR ")})`).join(" AND ") : groups.flat().join(" OR ");
|
|
134
|
+
const tokens = [...(tokenChat ? [`c${resolved.chatPk}`] : []), ...(tokenSender ? [`s${resolved.senderPk}`] : [])];
|
|
135
|
+
let match = `(normalized_text : (${required}))`;
|
|
136
|
+
if (tokens.length > 0)
|
|
137
|
+
match = `(${match} AND (scope : (${tokens.map(quoted).join(" AND ")})))`;
|
|
138
|
+
for (const term of query.excluded) {
|
|
139
|
+
const excluded = wordTerm(term, false);
|
|
140
|
+
if (excluded)
|
|
141
|
+
match = `(${match} NOT (normalized_text : ${excluded}))`;
|
|
142
|
+
}
|
|
143
|
+
const joined = {
|
|
144
|
+
chat: resolved.chatPk !== undefined && !tokenChat,
|
|
145
|
+
sender: resolved.senderPk !== undefined && !tokenSender,
|
|
146
|
+
};
|
|
147
|
+
const { where, params } = rowConditions(resolved, scope, joined);
|
|
148
|
+
const order = newest ? "m.sent_at DESC, m.pk DESC" : "f.rank, m.sent_at DESC, m.pk DESC";
|
|
149
|
+
const full = () => context.database
|
|
150
|
+
.prepare(`SELECT m.pk AS pk, f.rank AS score
|
|
151
|
+
FROM message_words f CROSS JOIN messages m CROSS JOIN chats c
|
|
152
|
+
WHERE message_words MATCH ? AND f.rank MATCH '${UNSCOPED_RANK}' AND m.pk = f.rowid AND c.pk = m.chat_pk
|
|
153
|
+
AND ${where}
|
|
154
|
+
ORDER BY ${order} LIMIT ?`)
|
|
155
|
+
.all(match, ...params, limit + 1)
|
|
156
|
+
.map((row) => ({ pk: Number(row.pk), score: Number(row.score) }));
|
|
157
|
+
if (newest || resolved.chatPk !== undefined || resolved.senderPk !== undefined || resolved.senderPks) {
|
|
158
|
+
return page(context, full(), limit);
|
|
159
|
+
}
|
|
160
|
+
const ranked = context.database
|
|
161
|
+
.prepare("SELECT rowid AS pk, rank AS score FROM message_words WHERE message_words MATCH ? ORDER BY rank LIMIT ?")
|
|
162
|
+
.all(match, RANKED_FIRST * (limit + 1));
|
|
163
|
+
if (ranked.length === 0)
|
|
164
|
+
return empty;
|
|
165
|
+
const kept = new Map(context.database
|
|
166
|
+
.prepare(`SELECT m.pk AS pk, m.sent_at AS sent FROM messages m CROSS JOIN chats c
|
|
167
|
+
WHERE m.pk IN (${ranked.map((row) => Number(row.pk)).join(", ")}) AND c.pk = m.chat_pk AND ${where}`)
|
|
168
|
+
.all(...params)
|
|
169
|
+
.map((row) => [Number(row.pk), Number(row.sent)]));
|
|
170
|
+
const survivors = ranked
|
|
171
|
+
.filter((row) => kept.has(Number(row.pk)))
|
|
172
|
+
.map((row) => ({ pk: Number(row.pk), score: Number(row.score), sent: kept.get(Number(row.pk)) ?? 0 }))
|
|
173
|
+
.sort((a, b) => a.score - b.score || b.sent - a.sent || b.pk - a.pk);
|
|
174
|
+
// Fewer than a page survived only because the top of the index was other accounts' rows.
|
|
175
|
+
if (survivors.length > limit || ranked.length < RANKED_FIRST * (limit + 1))
|
|
176
|
+
return page(context, survivors, limit);
|
|
177
|
+
return page(context, full(), limit);
|
|
178
|
+
};
|
|
179
|
+
/** A search of filters alone — `from:alice after:2026-01-01` — newest first (plan S5). */
|
|
180
|
+
export const matchFilters = (context, scope, { limit }) => {
|
|
181
|
+
const resolved = resolve(context, scope);
|
|
182
|
+
if (!resolved)
|
|
183
|
+
return { items: [], hasMore: false };
|
|
184
|
+
const { where, params } = rowConditions(resolved, scope, {
|
|
185
|
+
chat: resolved.chatPk !== undefined,
|
|
186
|
+
sender: resolved.senderPk !== undefined,
|
|
187
|
+
});
|
|
188
|
+
const rows = context.database
|
|
189
|
+
.prepare(`SELECT m.pk AS pk FROM messages m CROSS JOIN chats c
|
|
190
|
+
WHERE c.pk = m.chat_pk AND ${where} ORDER BY m.sent_at DESC, m.pk DESC LIMIT ?`)
|
|
191
|
+
.all(...params, limit + 1)
|
|
192
|
+
.map((row) => ({ pk: Number(row.pk), score: null }));
|
|
193
|
+
return page(context, rows, limit);
|
|
194
|
+
};
|
|
195
|
+
/** Step 5 (plan S4): the substring index over the raw text, newest first. Pieces under three letters are dropped. */
|
|
196
|
+
export const matchSubstring = (context, query, scope, { limit }) => {
|
|
197
|
+
const empty = { items: [], hasMore: false };
|
|
198
|
+
const pieces = (term) => (term.kind === "phrase" ? [term.words.join(" ")] : (term.text.match(/[\p{L}\p{N}]+/gu) ?? [])).filter((piece) => [...piece].length >= 3);
|
|
199
|
+
const groups = query.required
|
|
200
|
+
.map((group) => group.flatMap((term) => pieces(term).map(quoted).join(" AND ") || []).filter(Boolean))
|
|
201
|
+
.filter((group) => group.length > 0);
|
|
202
|
+
if (groups.length === 0)
|
|
203
|
+
return empty;
|
|
204
|
+
const resolved = resolve(context, scope);
|
|
205
|
+
if (!resolved)
|
|
206
|
+
return empty;
|
|
207
|
+
let match = groups.map((group) => `(${group.map((one) => `(${one})`).join(" OR ")})`).join(" AND ");
|
|
208
|
+
for (const term of query.excluded) {
|
|
209
|
+
const excluded = pieces(term).map(quoted).join(" AND ");
|
|
210
|
+
if (excluded)
|
|
211
|
+
match = `(${match}) NOT (${excluded})`;
|
|
212
|
+
}
|
|
213
|
+
const { where, params } = rowConditions(resolved, scope, {
|
|
214
|
+
chat: resolved.chatPk !== undefined,
|
|
215
|
+
sender: resolved.senderPk !== undefined,
|
|
216
|
+
});
|
|
217
|
+
const rows = context.database
|
|
218
|
+
.prepare(`SELECT m.pk AS pk FROM messages_fts f CROSS JOIN messages m CROSS JOIN chats c
|
|
219
|
+
WHERE messages_fts MATCH ? AND m.pk = f.rowid AND c.pk = m.chat_pk AND ${where}
|
|
220
|
+
ORDER BY m.sent_at DESC, m.pk DESC LIMIT ?`)
|
|
221
|
+
.all(match, ...params, limit + 1)
|
|
222
|
+
.map((row) => ({ pk: Number(row.pk), score: null }));
|
|
223
|
+
return page(context, rows, limit);
|
|
224
|
+
};
|
|
225
|
+
const VOCABULARY = "SELECT term, doc FROM message_words_vocab WHERE col = 'normalized_text'";
|
|
226
|
+
/**
|
|
227
|
+
* The words the index knows, of those given: a whole word, or the beginning of one — otherwise
|
|
228
|
+
* `квартир` would be "corrected" to `квартира` and lose `квартиру` (plan S4).
|
|
229
|
+
*/
|
|
230
|
+
export const knownTerms = ({ database }, terms) => {
|
|
231
|
+
const lookup = database.prepare(`${VOCABULARY} AND term >= ? AND term <= ? LIMIT 1`);
|
|
232
|
+
return new Set(terms.filter((term) => {
|
|
233
|
+
const word = normalize(term);
|
|
234
|
+
return lookup.get(word, `${word}\u{10FFFF}`) !== undefined;
|
|
235
|
+
}));
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Words sharing trigrams with `term`, between the lengths given, most shared first — and only those
|
|
239
|
+
* the index still has, so a word whose messages were all deleted never comes back (plan S7).
|
|
240
|
+
*/
|
|
241
|
+
export const termCandidates = ({ database }, pieces, { shortest, longest }) => {
|
|
242
|
+
if (pieces.length === 0)
|
|
243
|
+
return [];
|
|
244
|
+
const candidates = database
|
|
245
|
+
.prepare(`SELECT term, count(*) AS shared FROM search_term_trigrams
|
|
246
|
+
WHERE trigram IN (${pieces.map(() => "?").join(", ")}) AND length BETWEEN ? AND ?
|
|
247
|
+
GROUP BY term ORDER BY shared DESC, term LIMIT 200`)
|
|
248
|
+
.all(...pieces, shortest, longest);
|
|
249
|
+
const docs = database.prepare(`${VOCABULARY} AND term = ?`);
|
|
250
|
+
return candidates.flatMap((row) => {
|
|
251
|
+
const held = docs.get(String(row.term));
|
|
252
|
+
return held ? [{ term: String(row.term), docs: Number(held.doc) }] : [];
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"words.js","sourceRoot":"","sources":["../../../src/store/sqlite/words.ts"],"names":[],"mappings":"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"}
|
package/dist/store/store.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { Link, LinkInput } from "../conversations/link.js";
|
|
2
2
|
import type { Chat, Contact, Id, Member, Message, MessageHit, Page, Provider, Reactions, WindowedMessage } from "../domain/models.js";
|
|
3
3
|
import type { PeopleLookup } from "../resolve.js";
|
|
4
|
+
import type { ChatCompleteness } from "./sqlite/completeness.js";
|
|
4
5
|
import type { SearchIndexFill, SearchIndexState } from "./sqlite/search-index.js";
|
|
6
|
+
import type { ScoredHit, SearchScope, WordOptions, WordQuery } from "./sqlite/words.js";
|
|
5
7
|
/** Which account of which messenger a call is about. */
|
|
6
8
|
export interface AccountKey {
|
|
7
9
|
provider: Provider;
|
|
8
10
|
account: Id;
|
|
9
11
|
}
|
|
12
|
+
/** Whether a stored chat may hold a message deleted without naming its chat. */
|
|
13
|
+
export type DeletionScope = (chat: Pick<Chat, "id" | "kind" | "providerMetadata">) => boolean;
|
|
10
14
|
/** How a message reached the store — `history`, `send`, `backfill`, `update`. Diagnostic. */
|
|
11
15
|
export type IngestedVia = string;
|
|
12
16
|
export interface StoredHit extends MessageHit {
|
|
@@ -219,9 +223,14 @@ export interface MessageStore {
|
|
|
219
223
|
* the message back, and reads and search stop returning it. Its text goes — from the row, the
|
|
220
224
|
* search copy, the edit history and the transcript. Only the messenger returning it again, when
|
|
221
225
|
* asked after the deletion, lifts the tombstone (`saveMessages`' `seenAt`).
|
|
226
|
+
*
|
|
227
|
+
* Without `chatId`, a message is tombstoned only when exactly one live message with its id is left
|
|
228
|
+
* in the chats `among` accepts. Without `among`, nothing is: only the messenger knows which of its
|
|
229
|
+
* chats a deletion without one may belong to (`Messenger.deletedWithoutChat`).
|
|
222
230
|
*/
|
|
223
231
|
markDeleted(key: AccountKey, messageIds: Id[], options?: {
|
|
224
232
|
chatId?: Id;
|
|
233
|
+
among?: DeletionScope;
|
|
225
234
|
}): Promise<number>;
|
|
226
235
|
/** Newest first. At least three characters: a trigram index answers a shorter query with nothing. */
|
|
227
236
|
search(query: string, options: {
|
|
@@ -230,6 +239,33 @@ export interface MessageStore {
|
|
|
230
239
|
}): Promise<Page<StoredHit>>;
|
|
231
240
|
/** Newest first — by text, by who wrote it, or both. */
|
|
232
241
|
find(filter: MessageFilter): Promise<Page<StoredHit>>;
|
|
242
|
+
/**
|
|
243
|
+
* The word index, ranked by bm25, ties newest first (phase 2 plan S4 steps 1, 2 and 4). Chats marked
|
|
244
|
+
* not searchable are left out unless the scope names the chat.
|
|
245
|
+
*/
|
|
246
|
+
matchWords(query: WordQuery, scope: SearchScope, options: WordOptions): Promise<Page<ScoredHit>>;
|
|
247
|
+
/** The substring index, newest first (step 5); pieces under three letters are dropped. */
|
|
248
|
+
matchSubstring(query: WordQuery, scope: SearchScope, options: {
|
|
249
|
+
limit: number;
|
|
250
|
+
}): Promise<Page<ScoredHit>>;
|
|
251
|
+
/** The kinds of attachment held, for `has:` to name the ones it can find. */
|
|
252
|
+
attachmentKinds(): Promise<string[]>;
|
|
253
|
+
/** Messages matching the scope alone, newest first: a search with filters and no word. */
|
|
254
|
+
matchFilters(scope: SearchScope, options: {
|
|
255
|
+
limit: number;
|
|
256
|
+
}): Promise<Page<ScoredHit>>;
|
|
257
|
+
/** Per chat: whether its history is held up to date, without gaps, back to its start. */
|
|
258
|
+
chatCompleteness(key: AccountKey, chatIds: Id[]): Promise<ChatCompleteness[]>;
|
|
259
|
+
/** Of `terms`, those the index knows as a word or the beginning of one. */
|
|
260
|
+
knownTerms(terms: string[]): Promise<Set<string>>;
|
|
261
|
+
/** Known words sharing these trigrams, within the lengths, most shared first. */
|
|
262
|
+
termCandidates(trigrams: string[], lengths: {
|
|
263
|
+
shortest: number;
|
|
264
|
+
longest: number;
|
|
265
|
+
}): Promise<{
|
|
266
|
+
term: string;
|
|
267
|
+
docs: number;
|
|
268
|
+
}[]>;
|
|
233
269
|
/** How far the word index is built; `undefined` on a file before it existed. */
|
|
234
270
|
searchIndexState(): Promise<SearchIndexState | undefined>;
|
|
235
271
|
/**
|
|
@@ -256,6 +292,8 @@ export interface MessageStore {
|
|
|
256
292
|
}): Promise<number>;
|
|
257
293
|
/** Works out again when each contact was last written to, from their one-to-one chats. */
|
|
258
294
|
refreshRecency(key: AccountKey): Promise<void>;
|
|
295
|
+
/** Every account of every messenger the file holds, by messenger then id. */
|
|
296
|
+
accounts(): Promise<AccountKey[]>;
|
|
259
297
|
/** Everyone this provider's accounts have seen; with `account`, only who that account has seen. */
|
|
260
298
|
people(provider: Provider, options?: {
|
|
261
299
|
account?: Id;
|
|
@@ -374,4 +412,6 @@ export interface StoreOptions {
|
|
|
374
412
|
/** About 40 ms of the first open (129k rows/s measured at 1M, 2026-09-30); Tab opens the store too. */
|
|
375
413
|
export declare const BACKFILL_ON_OPEN = 5000;
|
|
376
414
|
export declare const openStore: ({ path, env, now }?: StoreOptions) => Promise<MessageStore>;
|
|
415
|
+
export { type ChatCompleteness, historyStartKey } from "./sqlite/completeness.js";
|
|
416
|
+
export type { ScoredHit, SearchScope, WordOptions, WordQuery } from "./sqlite/words.js";
|
|
377
417
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -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":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EACP,EAAE,EACF,MAAM,EACN,OAAO,EACP,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAQjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAShE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAKjF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGvF,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,EAAE,CAAA;CACZ;AAED,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,kBAAkB,CAAC,KAAK,OAAO,CAAA;AAE7F,6FAA6F;AAC7F,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,EAAE,CAAA;IACN,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,wGAAwG;IACxG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,EAAE,EAAE,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,MAAM,CAAC,EAAE,EAAE,CAAA;IACX,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IACd,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,8DAA8D;IAC9D;;;OAGG;IACH,YAAY,CACV,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE;QAAE,GAAG,EAAE,WAAW,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,iHAAiH;IACjH,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3G,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvE,mFAAmF;IACnF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,2FAA2F;IAC3F,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACvD,oFAAoF;IACpF,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACzD,wGAAwG;IACxG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IAC5F,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACnG,wDAAwD;IACxD,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnF,wEAAwE;IACxE,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IAC7G,4FAA4F;IAC5F,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvG,oGAAoG;IACpG,UAAU,CACR,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IACvD,+EAA+E;IAC/E,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;IACpE;;;OAGG;IACH,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1F,4EAA4E;IAC5E,aAAa,CACX,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACrC,wFAAwF;IACxF,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACrH,kEAAkE;IAClE,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACvF,uDAAuD;IACvD,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACxE,wGAAwG;IACxG,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IACtE,oGAAoG;IACpG,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvG,0GAA0G;IAC1G,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,qFAAqF;IACrF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3F,uGAAuG;IACvG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAA;IACjG,qFAAqF;IACrF,iBAAiB,CACf,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,GACT,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACtG,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACrH,wFAAwF;IACxF,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzF;;;OAGG;IACH,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACtH;;;;OAIG;IACH,MAAM,CACJ,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,EAAE,EACb,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IAC7B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAChG;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9D,uGAAuG;IACvG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvG;;;;;;;;;OASG;IACH,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjH,qGAAqG;IACrG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACjG,wDAAwD;IACxD,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACrD;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAChG,0FAA0F;IAC1F,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAC1G,6EAA6E;IAC7E,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,0FAA0F;IAC1F,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACtF,yFAAyF;IACzF,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC7E,2EAA2E;IAC3E,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACjD,iFAAiF;IACjF,cAAc,CACZ,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAA;IAC5C,gFAAgF;IAChF,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IACzD;;;OAGG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9E,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE;;;;OAIG;IACH,QAAQ,CACN,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;QAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACzB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7E,0FAA0F;IAC1F,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,6EAA6E;IAC7E,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACjC,mGAAmG;IACnG,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9F,yFAAyF;IACzF,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjG;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAChF,qGAAqG;IACrG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC7D,mDAAmD;IACnD,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IACrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,EAAE,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,mDAAmD;IACnD,aAAa,EAAE,EAAE,EAAE,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,EAAE,CAAA;IACV,cAAc,EAAE,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,EAAE,CAAA;IACN,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE;QAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,OAAO,CAAC,EAAE,EAAE,CAAA;IACZ,MAAM,CAAC,EAAE,EAAE,CAAA;IACX,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;IACf,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAA;IACf,8FAA8F;IAC9F,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACvF;AAED,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,OAAO,EAAE,EAAE,CAAC;QAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAClE;AAED,8FAA8F;AAC9F,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,EAAE,CAAA;IACR,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,+EAA+E;IAC/E,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,OAAQ,CAAA;AAErC,eAAO,MAAM,SAAS,wBAAyC,YAAY,KAAQ,OAAO,CAAC,YAAY,CAiBtG,CAAA;AA+XD,OAAO,EAAE,KAAK,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACjF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/store/store.js
CHANGED
|
@@ -8,6 +8,7 @@ import * as accounts from "./sqlite/accounts.js";
|
|
|
8
8
|
import { backfillNormalized, pendingNormalization } from "./sqlite/backfill.js";
|
|
9
9
|
import * as batches from "./sqlite/batches.js";
|
|
10
10
|
import * as chatQueries from "./sqlite/chats.js";
|
|
11
|
+
import * as completeness from "./sqlite/completeness.js";
|
|
11
12
|
import * as conversationQueries from "./sqlite/conversations.js";
|
|
12
13
|
import * as identities from "./sqlite/identities.js";
|
|
13
14
|
import * as messageWrites from "./sqlite/messages.js";
|
|
@@ -19,6 +20,7 @@ import * as searchIndex from "./sqlite/search-index.js";
|
|
|
19
20
|
import * as sync from "./sqlite/sync.js";
|
|
20
21
|
import * as transcripts from "./sqlite/transcripts.js";
|
|
21
22
|
import { toMs } from "./sqlite/values.js";
|
|
23
|
+
import * as words from "./sqlite/words.js";
|
|
22
24
|
/** About 40 ms of the first open (129k rows/s measured at 1M, 2026-09-30); Tab opens the store too. */
|
|
23
25
|
export const BACKFILL_ON_OPEN = 5_000;
|
|
24
26
|
export const openStore = async ({ path, env, now = Date.now } = {}) => {
|
|
@@ -255,13 +257,13 @@ const storeOver = (context) => {
|
|
|
255
257
|
const accountKey = findAccountPk(key);
|
|
256
258
|
return accountKey === undefined ? undefined : reads.message(context, accountKey, messageId, chatId);
|
|
257
259
|
},
|
|
258
|
-
markDeleted: async (key, messageIds, { chatId } = {}) => {
|
|
260
|
+
markDeleted: async (key, messageIds, { chatId, among } = {}) => {
|
|
259
261
|
const accountKey = findAccountPk(key);
|
|
260
262
|
if (accountKey === undefined || messageIds.length === 0)
|
|
261
263
|
return 0;
|
|
262
264
|
let changed = 0;
|
|
263
265
|
inTransaction(() => {
|
|
264
|
-
changed = messageWrites.markDeleted(context,
|
|
266
|
+
changed = messageWrites.markDeleted(context, accountKey, messageIds, chatId, among);
|
|
265
267
|
});
|
|
266
268
|
return changed;
|
|
267
269
|
},
|
|
@@ -289,6 +291,20 @@ const storeOver = (context) => {
|
|
|
289
291
|
},
|
|
290
292
|
search: async (query, { limit, account }) => search.find(context, { text: query, limit, ...(account ? { account } : {}) }),
|
|
291
293
|
find: async (filter) => search.find(context, filter),
|
|
294
|
+
matchWords: async (query, scope, options) => words.matchWords(context, query, scope, options),
|
|
295
|
+
matchSubstring: async (query, scope, options) => words.matchSubstring(context, query, scope, options),
|
|
296
|
+
attachmentKinds: async () => database
|
|
297
|
+
.prepare("SELECT DISTINCT kind FROM attachments ORDER BY kind")
|
|
298
|
+
.all()
|
|
299
|
+
.map((row) => String(row.kind)),
|
|
300
|
+
matchFilters: async (scope, options) => words.matchFilters(context, scope, options),
|
|
301
|
+
accounts: async () => accounts.heldAccounts(context),
|
|
302
|
+
chatCompleteness: async (key, chatIds) => {
|
|
303
|
+
const accountKey = accounts.findAccountPk(context, key);
|
|
304
|
+
return accountKey === undefined ? [] : completeness.chatCompleteness(context, accountKey, chatIds);
|
|
305
|
+
},
|
|
306
|
+
knownTerms: async (terms) => words.knownTerms(context, terms),
|
|
307
|
+
termCandidates: async (trigrams, lengths) => words.termCandidates(context, trigrams, lengths),
|
|
292
308
|
searchIndexState: async () => searchIndex.searchIndexState(database),
|
|
293
309
|
fillSearchIndex: async ({ until } = {}) => searchIndex.fillSearchIndex(database, { now: context.now, ...(until ? { until } : {}) }),
|
|
294
310
|
contacts: async (key, options) => {
|
|
@@ -336,4 +352,5 @@ const storeOver = (context) => {
|
|
|
336
352
|
close: async () => database.close(),
|
|
337
353
|
};
|
|
338
354
|
};
|
|
355
|
+
export { historyStartKey } from "./sqlite/completeness.js";
|
|
339
356
|
//# sourceMappingURL=store.js.map
|