@leemour/cli-messaging 0.97.0 → 0.98.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 +2 -1
- 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 +9 -13
- 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 +35 -2
- package/dist/cli/bot/port.d.ts.map +1 -1
- package/dist/cli/bot/port.js.map +1 -1
- 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 +4 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -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/port.d.ts +12 -1
- 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 +34 -4
- 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/domain/capabilities.d.ts +3 -0
- package/dist/domain/capabilities.d.ts.map +1 -1
- package/dist/kit/contract.d.ts +37 -0
- package/dist/kit/contract.d.ts.map +1 -0
- package/dist/kit/contract.js +408 -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 +14 -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 +5 -8
- 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 +5 -2
- package/dist/search/query.d.ts.map +1 -1
- package/dist/search/query.js +5 -4
- 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 +21 -2
- package/dist/services/archive.js.map +1 -1
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +11 -7
- 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 +13 -3
- package/dist/services/inbox.d.ts.map +1 -1
- package/dist/services/inbox.js +45 -15
- package/dist/services/inbox.js.map +1 -1
- package/dist/services/messages.d.ts +9 -2
- package/dist/services/messages.d.ts.map +1 -1
- package/dist/services/messages.js +27 -4
- 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 +5 -4
- 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/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/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 +14 -2
- 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 +78 -0
- package/dist/store/sqlite/words.d.ts.map +1 -0
- package/dist/store/sqlite/words.js +237 -0
- package/dist/store/sqlite/words.js.map +1 -0
- package/dist/store/store.d.ts +35 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +14 -2
- package/dist/store/store.js.map +1 -1
- package/package.json +8 -4
- package/parity.json +532 -387
package/dist/search/query.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
2
|
const FILTERS = ["from", "chat", "after", "before", "has", "in"];
|
|
3
|
-
const SOURCES = ["telegram", "max", "all"];
|
|
4
3
|
const DAY = 24 * 60 * 60 * 1000;
|
|
5
4
|
const fail = (message) => {
|
|
6
5
|
throw new CliError("validation_error", message);
|
|
@@ -55,7 +54,9 @@ const day = (name, value, now) => {
|
|
|
55
54
|
}
|
|
56
55
|
return at.getTime();
|
|
57
56
|
};
|
|
58
|
-
|
|
57
|
+
/** `providers` are the messengers the store holds; `in:` takes one of them, or `all`. */
|
|
58
|
+
export const parseQuery = (query, { now = Date.now(), providers = [] } = {}) => {
|
|
59
|
+
const sources = [...providers, "all"];
|
|
59
60
|
const parsed = { required: [], excluded: [], has: [] };
|
|
60
61
|
const tokens = tokenize(query);
|
|
61
62
|
for (let index = 0; index < tokens.length; index++) {
|
|
@@ -74,8 +75,8 @@ export const parseQuery = (query, { now = Date.now() } = {}) => {
|
|
|
74
75
|
parsed[filter] = day(filter, text, now);
|
|
75
76
|
else if (filter === "in") {
|
|
76
77
|
const source = text.toLowerCase();
|
|
77
|
-
if (!
|
|
78
|
-
fail(`in: takes ${
|
|
78
|
+
if (!sources.includes(source))
|
|
79
|
+
fail(`in: takes ${sources.join(", ")} — not "${text}"`);
|
|
79
80
|
parsed.in = source;
|
|
80
81
|
}
|
|
81
82
|
else
|
package/dist/search/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/search/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/search/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MessageStore, ScoredHit, SearchScope, WordQuery } from "../store/store.js";
|
|
2
|
+
/** Which step found a hit (plan S4). `filters` answers a search with no word. */
|
|
3
|
+
export type Match = "words" | "beginnings" | "corrected" | "anyWord" | "substring" | "filters";
|
|
4
|
+
export type SearchHit = ScoredHit & {
|
|
5
|
+
match: Match;
|
|
6
|
+
};
|
|
7
|
+
export interface SearchAnswer {
|
|
8
|
+
items: SearchHit[];
|
|
9
|
+
hasMore: boolean;
|
|
10
|
+
corrections: {
|
|
11
|
+
from: string;
|
|
12
|
+
to: string[];
|
|
13
|
+
}[];
|
|
14
|
+
/** `false` while the word index is not built: the answer then came from the substring index alone. */
|
|
15
|
+
wordsReady: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type SearchSteps = Pick<MessageStore, "searchIndexState" | "matchWords" | "matchSubstring" | "matchFilters" | "knownTerms" | "termCandidates">;
|
|
18
|
+
/**
|
|
19
|
+
* The search, in the order of plan S4: every word, topped up by word beginnings; then typo
|
|
20
|
+
* correction; then any word, unless the query chose with OR; then the substring index. Each step
|
|
21
|
+
* runs only when the one before found nothing. Until the word index is built, substring alone.
|
|
22
|
+
*/
|
|
23
|
+
export declare const search: (store: SearchSteps, query: WordQuery, scope: SearchScope, { limit, newest }: {
|
|
24
|
+
limit: number;
|
|
25
|
+
newest?: boolean;
|
|
26
|
+
}) => Promise<SearchAnswer>;
|
|
27
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAIxF,iFAAiF;AACjF,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAE9F,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAEpD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAA;IAC7C,sGAAsG;IACtG,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,YAAY,EACZ,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,gBAAgB,CACxG,CAAA;AAkCD;;;;GAIG;AACH,eAAO,MAAM,MAAM,UACV,WAAW,SACX,SAAS,SACT,WAAW,qBACS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7D,OAAO,CAAC,YAAY,CAuCtB,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { correctWords } from "./correct.js";
|
|
2
|
+
const tagged = (page, match) => page.items.map((hit) => ({ ...hit, match }));
|
|
3
|
+
/** Step 1 topped up by step 2: whole words first, then the hits only a word's beginning finds. */
|
|
4
|
+
const everyWord = async (store, query, scope, { limit, newest }, match) => {
|
|
5
|
+
const options = { mode: "every", limit, newest };
|
|
6
|
+
const whole = await store.matchWords(query, scope, { ...options, beginnings: false });
|
|
7
|
+
if (whole.items.length >= limit)
|
|
8
|
+
return { items: tagged(whole, match.whole), hasMore: whole.hasMore };
|
|
9
|
+
const begun = await store.matchWords(query, scope, { ...options, beginnings: true });
|
|
10
|
+
const seen = new Set(whole.items.map((hit) => hit.locator));
|
|
11
|
+
const more = tagged(begun, match.beginnings).filter((hit) => !seen.has(hit.locator));
|
|
12
|
+
const items = [...tagged(whole, match.whole), ...more];
|
|
13
|
+
return { items: items.slice(0, limit), hasMore: items.length > limit || begun.hasMore };
|
|
14
|
+
};
|
|
15
|
+
/** Every plain word replaced by its corrections, when it has any; phrases and left-out words never are. */
|
|
16
|
+
const corrected = (query, corrections) => ({
|
|
17
|
+
...query,
|
|
18
|
+
required: query.required.map((group) => group.flatMap((term) => term.kind === "word" && corrections.has(term.text)
|
|
19
|
+
? (corrections.get(term.text) ?? []).map((text) => ({ kind: "word", text }))
|
|
20
|
+
: [term])),
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* The search, in the order of plan S4: every word, topped up by word beginnings; then typo
|
|
24
|
+
* correction; then any word, unless the query chose with OR; then the substring index. Each step
|
|
25
|
+
* runs only when the one before found nothing. Until the word index is built, substring alone.
|
|
26
|
+
*/
|
|
27
|
+
export const search = async (store, query, scope, { limit, newest = false }) => {
|
|
28
|
+
const answer = (found, rest = {}) => ({
|
|
29
|
+
corrections: [],
|
|
30
|
+
wordsReady: true,
|
|
31
|
+
...found,
|
|
32
|
+
...rest,
|
|
33
|
+
});
|
|
34
|
+
if (query.required.length === 0) {
|
|
35
|
+
const page = await store.matchFilters(scope, { limit });
|
|
36
|
+
return answer({ items: tagged(page, "filters"), hasMore: page.hasMore });
|
|
37
|
+
}
|
|
38
|
+
if (!(await store.searchIndexState())?.ready) {
|
|
39
|
+
const page = await store.matchSubstring(query, scope, { limit });
|
|
40
|
+
return answer({ items: tagged(page, "substring"), hasMore: page.hasMore }, { wordsReady: false });
|
|
41
|
+
}
|
|
42
|
+
const options = { limit, newest };
|
|
43
|
+
const found = await everyWord(store, query, scope, options, { whole: "words", beginnings: "beginnings" });
|
|
44
|
+
if (found.items.length > 0)
|
|
45
|
+
return answer(found);
|
|
46
|
+
const plain = query.required.flat().flatMap((term) => (term.kind === "word" ? [term.text] : []));
|
|
47
|
+
const corrections = await correctWords(store, [...new Set(plain)]);
|
|
48
|
+
const listed = [...corrections].map(([from, to]) => ({ from, to }));
|
|
49
|
+
const fixed = corrections.size > 0 ? corrected(query, corrections) : query;
|
|
50
|
+
if (corrections.size > 0) {
|
|
51
|
+
const repaired = await everyWord(store, fixed, scope, options, { whole: "corrected", beginnings: "corrected" });
|
|
52
|
+
if (repaired.items.length > 0)
|
|
53
|
+
return answer(repaired, { corrections: listed });
|
|
54
|
+
}
|
|
55
|
+
const chose = query.required.some((group) => group.length > 1);
|
|
56
|
+
if (!chose && query.required.length > 1) {
|
|
57
|
+
const any = await store.matchWords(fixed, scope, { mode: "any", beginnings: true, limit, newest });
|
|
58
|
+
if (any.items.length > 0)
|
|
59
|
+
return answer({ items: tagged(any, "anyWord"), hasMore: any.hasMore }, { corrections: listed });
|
|
60
|
+
}
|
|
61
|
+
// The raw text is searched as typed: a correction is a guess about words, not about pieces of them.
|
|
62
|
+
const page = await store.matchSubstring(query, scope, { limit });
|
|
63
|
+
return answer({ items: tagged(page, "substring"), hasMore: page.hasMore });
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"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"}
|
package/dist/sends/guarded.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
1
2
|
import type { Id } from "../domain/models.js";
|
|
2
3
|
import type { SendGuard } from "./guard.js";
|
|
3
4
|
import type { SendEntry } from "./journal.js";
|
|
@@ -12,6 +13,17 @@ type Attempt = Omit<SendEntry, "at" | "profile" | "outcome"> & {
|
|
|
12
13
|
export type Operated<T> = T & {
|
|
13
14
|
operationId: string;
|
|
14
15
|
};
|
|
16
|
+
/** A write that has gone and not been answered: `cut` records it as an unknown outcome, once. */
|
|
17
|
+
export interface WriteInFlight {
|
|
18
|
+
operationId: string;
|
|
19
|
+
cut: () => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The writes in flight inside one command's deadline (`withDeadline`). A deadline that ends the
|
|
23
|
+
* command while one is out cannot say "timeout" — the messenger may have carried it out — so it
|
|
24
|
+
* cuts each into an unknown outcome. Per deadline, not per process: an MCP server runs many.
|
|
25
|
+
*/
|
|
26
|
+
export declare const writesInFlight: AsyncLocalStorage<Set<WriteInFlight>>;
|
|
15
27
|
/** The write in progress, so the run events of the calls it makes name it without the port passing it along. */
|
|
16
28
|
export declare const currentOperation: () => string | undefined;
|
|
17
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guarded.d.ts","sourceRoot":"","sources":["../../src/sends/guarded.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guarded.d.ts","sourceRoot":"","sources":["../../src/sends/guarded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,2EAA2E;AAC3E,KAAK,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG;IAC7D,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,SAAS,CAAC,EAAE,EAAE,EAAE,CAAA;CACjB,CAAA;AAED,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAIrD,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,IAAI,CAAA;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,uCAA8C,CAAA;AAEzE,gHAAgH;AAChH,eAAO,MAAM,gBAAgB,QAAO,MAAM,GAAG,SAA+B,CAAA;AAE5E;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,SAC3B,SAAS,WACP,OAAO,OACX,MAAM,OAAO,CAAC,CAAC,CAAC,YACZ,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KACrC,OAAO,CAAC,CAAC,CA+BX,CAAA;AAED,eAAO,MAAM,MAAM,UAAW,OAAO,KAAG,MACgE,CAAA"}
|
package/dist/sends/guarded.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
2
|
const current = new AsyncLocalStorage();
|
|
3
|
+
/**
|
|
4
|
+
* The writes in flight inside one command's deadline (`withDeadline`). A deadline that ends the
|
|
5
|
+
* command while one is out cannot say "timeout" — the messenger may have carried it out — so it
|
|
6
|
+
* cuts each into an unknown outcome. Per deadline, not per process: an MCP server runs many.
|
|
7
|
+
*/
|
|
8
|
+
export const writesInFlight = new AsyncLocalStorage();
|
|
3
9
|
/** The write in progress, so the run events of the calls it makes name it without the port passing it along. */
|
|
4
10
|
export const currentOperation = () => current.getStore();
|
|
5
11
|
/**
|
|
@@ -16,16 +22,32 @@ export const guardedWrite = async (guard, attempt, act, settled = () => ({})) =>
|
|
|
16
22
|
guard.record({ ...attempt, outcome: "refused", errorCode: codeOf(error) });
|
|
17
23
|
throw error;
|
|
18
24
|
}
|
|
25
|
+
let recorded = false;
|
|
26
|
+
const once = (entry) => {
|
|
27
|
+
if (recorded)
|
|
28
|
+
return;
|
|
29
|
+
recorded = true;
|
|
30
|
+
guard.record(entry);
|
|
31
|
+
};
|
|
32
|
+
const flight = {
|
|
33
|
+
operationId: attempt.operationId,
|
|
34
|
+
cut: () => once({ ...attempt, outcome: "outcome_unknown", errorCode: "outcome_unknown" }),
|
|
35
|
+
};
|
|
36
|
+
const scope = writesInFlight.getStore();
|
|
37
|
+
scope?.add(flight);
|
|
19
38
|
try {
|
|
20
39
|
const done = await current.run(attempt.operationId, act);
|
|
21
|
-
|
|
40
|
+
once({ ...attempt, ...settled(done), outcome: "sent" });
|
|
22
41
|
return done;
|
|
23
42
|
}
|
|
24
43
|
catch (error) {
|
|
25
44
|
const code = codeOf(error);
|
|
26
|
-
|
|
45
|
+
once({ ...attempt, outcome: code === "outcome_unknown" ? "outcome_unknown" : "failed", errorCode: code });
|
|
27
46
|
throw error;
|
|
28
47
|
}
|
|
48
|
+
finally {
|
|
49
|
+
scope?.delete(flight);
|
|
50
|
+
}
|
|
29
51
|
};
|
|
30
52
|
export const codeOf = (error) => typeof error?.code === "string" ? error.code : "unknown";
|
|
31
53
|
//# sourceMappingURL=guarded.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guarded.js","sourceRoot":"","sources":["../../src/sends/guarded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAgBpD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"guarded.js","sourceRoot":"","sources":["../../src/sends/guarded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAgBpD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAU,CAAA;AAQ/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAsB,CAAA;AAEzE,gHAAgH;AAChH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAuB,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;AAE5E;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAgB,EAChB,OAAgB,EAChB,GAAqB,EACrB,OAAO,GAAkC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EACvC,EAAE;IACd,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAA;QAC1B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1E,MAAM,KAAK,CAAA;IACb,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,MAAM,IAAI,GAAG,CAAC,KAAyC,EAAE,EAAE;QACzD,IAAI,QAAQ;YAAE,OAAM;QACpB,QAAQ,GAAG,IAAI,CAAA;QACf,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAA;IACD,MAAM,MAAM,GAAkB;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;KAC1F,CAAA;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAA;IACvC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QACxD,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzG,MAAM,KAAK,CAAA;IACb,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAc,EAAU,EAAE,CAC/C,OAAQ,KAA4B,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,KAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import type { Fetching } from "../cli/messenger/context.js";
|
|
2
2
|
import type { Id, Message } from "../domain/models.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type ChatStats, type Range } from "../store/store.js";
|
|
4
4
|
import { type Estimate } from "./backfill-estimate.js";
|
|
5
5
|
import type { ServiceDeps } from "./deps.js";
|
|
6
6
|
/** The most messages a provider hands out per history request — Telegram's cap. */
|
|
7
7
|
export declare const PAGE = 100;
|
|
8
8
|
/** How `store fetch` reads a messenger's history, where it says nothing of its own. */
|
|
9
9
|
export declare const FETCHING: Fetching;
|
|
10
|
+
/**
|
|
11
|
+
* What a held stretch is keyed by, for `store fetch` and `download --all` alike: the message id, or its
|
|
12
|
+
* send time in milliseconds. Not a safe integer means the messenger's ids do not order a chat.
|
|
13
|
+
*/
|
|
14
|
+
export declare const keyOf: (fetching?: Fetching) => (message: Message) => number;
|
|
10
15
|
export interface FetchOptions {
|
|
11
16
|
/** Messages in this run. */
|
|
12
17
|
limit: number;
|
|
@@ -61,8 +66,8 @@ export interface ArchiveService {
|
|
|
61
66
|
}>;
|
|
62
67
|
/**
|
|
63
68
|
* A chat's history into the store, newest to oldest, **resumable**: after every page the stretch
|
|
64
|
-
* it covered is recorded, so a stop loses nothing and the next run jumps over what is held.
|
|
65
|
-
*
|
|
69
|
+
* it covered is recorded, so a stop loses nothing and the next run jumps over what is held. Keyed
|
|
70
|
+
* by `keyOf`: whole-number ids, or send times where the messenger orders by time.
|
|
66
71
|
*/
|
|
67
72
|
fetch(chat: string, options: FetchOptions): Promise<Fetched>;
|
|
68
73
|
/** The chats this account has left, with their messages; `clear` deletes them. From the store alone. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/services/archive.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/services/archive.ts"],"names":[],"mappings":"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"}
|
package/dist/services/archive.js
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import { setTimeout as sleep } from "node:timers/promises";
|
|
2
2
|
import { CliError } from "@leemour/cli-core";
|
|
3
|
+
import { historyStartKey } from "../store/store.js";
|
|
3
4
|
import { estimateBackfill } from "./backfill-estimate.js";
|
|
4
5
|
import { storedChatId } from "./messages.js";
|
|
5
6
|
import { patiently } from "./patience.js";
|
|
7
|
+
/** NEED-505 A: a messenger that pushes its history answers a request for older messages later, through `serve`. */
|
|
8
|
+
const pushed = (deps, what) => {
|
|
9
|
+
if (deps.reads === "store") {
|
|
10
|
+
throw new CliError("validation_error", `${what} asks for older history, and this messenger pushes its history instead — keep ` +
|
|
11
|
+
`\`${deps.messenger.app.command} serve\` running`);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
6
14
|
/** The most messages a provider hands out per history request — Telegram's cap. */
|
|
7
15
|
export const PAGE = 100;
|
|
8
16
|
/** How `store fetch` reads a messenger's history, where it says nothing of its own. */
|
|
9
17
|
export const FETCHING = { page: PAGE, pause: "1s", maxPages: 10, orderBy: "id" };
|
|
18
|
+
/**
|
|
19
|
+
* What a held stretch is keyed by, for `store fetch` and `download --all` alike: the message id, or its
|
|
20
|
+
* send time in milliseconds. Not a safe integer means the messenger's ids do not order a chat.
|
|
21
|
+
*/
|
|
22
|
+
export const keyOf = (fetching = FETCHING) => (message) => fetching.orderBy === "time" ? Date.parse(message.timestamp) : Number(message.id);
|
|
10
23
|
export const archiveService = (deps) => {
|
|
11
24
|
const found = async (chat) => {
|
|
12
25
|
const store = await deps.store();
|
|
@@ -32,6 +45,7 @@ export const archiveService = (deps) => {
|
|
|
32
45
|
};
|
|
33
46
|
},
|
|
34
47
|
estimate: async (chat, { limit, pageSize, pauseMs }) => {
|
|
48
|
+
pushed(deps, "--estimate");
|
|
35
49
|
const fetching = deps.messenger.fetching ?? FETCHING;
|
|
36
50
|
if (fetching.orderBy === "time") {
|
|
37
51
|
throw new CliError("validation_error", "--estimate counts the message ids missing between what is held; this messenger's ids do not count messages");
|
|
@@ -51,9 +65,10 @@ export const archiveService = (deps) => {
|
|
|
51
65
|
};
|
|
52
66
|
},
|
|
53
67
|
fetch: async (chat, { limit, pageSize, pauseMs, sinceMs, last, note, stop, onPage }) => {
|
|
68
|
+
pushed(deps, "`store fetch`");
|
|
54
69
|
const fetching = deps.messenger.fetching ?? FETCHING;
|
|
55
70
|
const byTime = fetching.orderBy === "time";
|
|
56
|
-
const
|
|
71
|
+
const keyed = keyOf(fetching);
|
|
57
72
|
const connection = await deps.connection();
|
|
58
73
|
const self = connection.self();
|
|
59
74
|
if (self === null)
|
|
@@ -79,7 +94,7 @@ export const archiveService = (deps) => {
|
|
|
79
94
|
break;
|
|
80
95
|
}
|
|
81
96
|
chatId ??= first.chatId;
|
|
82
|
-
const keys = page.items.map(
|
|
97
|
+
const keys = page.items.map(keyed);
|
|
83
98
|
if (keys.some((key) => !Number.isSafeInteger(key))) {
|
|
84
99
|
throw new CliError("validation_error", "this messenger's message ids do not order a chat, so it cannot fetch its history");
|
|
85
100
|
}
|
|
@@ -109,6 +124,10 @@ export const archiveService = (deps) => {
|
|
|
109
124
|
await sleep(wait, undefined, { signal: stop }).catch(() => { });
|
|
110
125
|
}
|
|
111
126
|
const ranges = chatId === undefined ? [] : await store.ranges(account, chatId);
|
|
127
|
+
// What a search says about completeness: a stretch held from the chat's very first message.
|
|
128
|
+
if (reachedStart && chatId !== undefined && ranges[0]) {
|
|
129
|
+
await store.setSyncState(account, historyStartKey(chatId), String(ranges[0].from));
|
|
130
|
+
}
|
|
112
131
|
return {
|
|
113
132
|
chat: chatId ?? null,
|
|
114
133
|
fetched,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/services/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/services/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,EAAE,EACF,UAAU,EAEV,IAAI,EACL,MAAM,qBAAqB,CAAA;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,EAAE,EACF,UAAU,EAEV,IAAI,EACL,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGzE,OAAO,EAA4B,KAAK,WAAW,EAAe,MAAM,WAAW,CAAA;AAGnF,kEAAkE;AAClE,eAAO,MAAM,WAAW,IAAI,CAAA;AAE5B,oHAAoH;AACpH,eAAO,MAAM,SAAS,MAAM,CAAA;AAE5B,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,UAAU,EAAE,QAAQ,EAA4C,CAAA;AAE7E,kFAAkF;AAClF,eAAO,MAAM,aAAa,6BAA8B,UAAU,KAAG,UAYpE,CAAA;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,EAAE,CAAA;IACV,wCAAwC;IACxC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACxF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG;QAAE,MAAM,EAAE,EAAE,CAAA;KAAE,CAAC,CAAA;IACtF,oGAAoG;IACpG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrF,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1C,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;CACnF;AAED,eAAO,MAAM,YAAY,SAAU,WAAW,KAAG,YAkF/C,CAAA"}
|
package/dist/services/chats.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
2
|
import { capability } from "../cli/messenger/port.js";
|
|
3
|
-
import { guardedWrite } from "../sends/guarded.js";
|
|
3
|
+
import { codeOf, guardedWrite } from "../sends/guarded.js";
|
|
4
4
|
import { newOperationId } from "../sends/send-id.js";
|
|
5
|
-
import { storeIfOpen } from "./deps.js";
|
|
5
|
+
import { fromStore, nothingStored, storeIfOpen } from "./deps.js";
|
|
6
6
|
import { storedChatId } from "./messages.js";
|
|
7
7
|
/** How far back `events` looks without `since`, as in max-cli. */
|
|
8
8
|
export const EVENTS_DAYS = 7;
|
|
@@ -27,12 +27,12 @@ export const chatsService = (deps) => ({
|
|
|
27
27
|
list: async (filter, window) => {
|
|
28
28
|
const filtering = filter.search !== undefined || filter.kind !== undefined || filter.unread === true;
|
|
29
29
|
if (!filtering) {
|
|
30
|
-
const page = deps
|
|
30
|
+
const page = fromStore(deps)
|
|
31
31
|
? await (await deps.store()).chats(await deps.account(), window)
|
|
32
32
|
: await (await deps.connection()).chats(window);
|
|
33
33
|
return { ...page, partial: false };
|
|
34
34
|
}
|
|
35
|
-
const scanned = deps
|
|
35
|
+
const scanned = fromStore(deps)
|
|
36
36
|
? await (await deps.store()).chats(await deps.account(), { offset: 0 })
|
|
37
37
|
: await (await deps.connection()).chats({ limit: CHAT_SCAN, offset: 0 });
|
|
38
38
|
const found = scanned.items.filter(matches(filter));
|
|
@@ -40,13 +40,17 @@ export const chatsService = (deps) => ({
|
|
|
40
40
|
return { items: found.slice(window.offset, end), hasMore: found.length > end, partial: scanned.hasMore };
|
|
41
41
|
},
|
|
42
42
|
show: async (chat) => {
|
|
43
|
-
if (deps
|
|
43
|
+
if (fromStore(deps)) {
|
|
44
44
|
const store = await deps.store();
|
|
45
45
|
const account = await deps.account();
|
|
46
|
-
const
|
|
46
|
+
const pushed = deps.reads === "store";
|
|
47
|
+
const missing = (id) => new CliError("not_found", pushed ? nothingStored(deps.messenger) : `no stored chat ${id}`);
|
|
48
|
+
const id = await storedChatId(deps.messenger, chat, store, account).catch((error) => {
|
|
49
|
+
throw pushed && codeOf(error) === "not_found" ? missing(chat) : error;
|
|
50
|
+
});
|
|
47
51
|
const found = (await store.chats(account, {})).items.find((one) => one.id === id);
|
|
48
52
|
if (!found)
|
|
49
|
-
throw
|
|
53
|
+
throw missing(id);
|
|
50
54
|
return { ...found, members: await storedMembers(store, account, found.id) };
|
|
51
55
|
}
|
|
52
56
|
const connection = await deps.connection();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAYrD,OAAO,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"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"}
|
package/dist/services/deps.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ import type { AccountKey, MessageStore } from "../store/store.js";
|
|
|
10
10
|
export interface ServiceDeps {
|
|
11
11
|
messenger: Messenger;
|
|
12
12
|
offline: boolean;
|
|
13
|
+
/** `store`: the messenger's history is read from the local store (`Messenger.history`); `server` when unset. */
|
|
14
|
+
reads?: "server" | "store";
|
|
13
15
|
account: () => Promise<AccountKey>;
|
|
14
16
|
/** Already saving what its reads answer, and recording each call as a run event. */
|
|
15
17
|
connection: () => Promise<MessengerAdapter>;
|
|
@@ -27,6 +29,12 @@ export declare const storeIfOpen: (deps: ServiceDeps) => Promise<{
|
|
|
27
29
|
store: MessageStore;
|
|
28
30
|
account: AccountKey;
|
|
29
31
|
} | undefined>;
|
|
32
|
+
/** Whether `chats`, `messages list|context` and `contacts` answer from the store instead of the messenger. */
|
|
33
|
+
export declare const fromStore: (deps: Pick<ServiceDeps, "offline" | "reads">) => boolean;
|
|
34
|
+
/** What a store-mode read answers for a chat the store holds nothing of. */
|
|
35
|
+
export declare const nothingStored: (messenger: Messenger) => string;
|
|
36
|
+
/** Where a store-mode messenger's history comes from, for what it cannot do. */
|
|
37
|
+
export declare const PUSHED = "this messenger's history is read from the local store";
|
|
30
38
|
export declare const OFFLINE = "--offline answers only from what is kept locally: `chats list|show`, `messages list|show|context` and `contacts list|show`";
|
|
31
39
|
/** Over a connection that is already open — an MCP session holds one for minutes. */
|
|
32
40
|
export declare const onlineDeps: (messenger: Messenger, adapter: MessengerAdapter, guard: SendGuard, where?: {
|
|
@@ -35,4 +43,9 @@ export declare const onlineDeps: (messenger: Messenger, adapter: MessengerAdapte
|
|
|
35
43
|
}) => ServiceDeps;
|
|
36
44
|
/** Over the local store alone, for `--offline` and the tools that never ask the messenger. */
|
|
37
45
|
export declare const storedDeps: (messenger: Messenger, store: MessageStore, account: AccountKey, guard: SendGuard) => ServiceDeps;
|
|
46
|
+
/**
|
|
47
|
+
* The store-backed reads of a messenger whose history is kept there, for an MCP read: not
|
|
48
|
+
* `--offline`, so `inbox` and `review` answer too. Nothing here connects.
|
|
49
|
+
*/
|
|
50
|
+
export declare const storeModeDeps: (messenger: Messenger, store: MessageStore, account: AccountKey, guard: SendGuard) => ServiceDeps;
|
|
38
51
|
//# sourceMappingURL=deps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEjE;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAClC,oFAAoF;IACpF,UAAU,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC3C,KAAK,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,SAChB,WAAW,KAChB,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAMlE,CAAA;AAED,eAAO,MAAM,OAAO,+HAC0G,CAAA;AAE9H,qFAAqF;AACrF,eAAO,MAAM,UAAU,cACV,SAAS,WACX,gBAAgB,SAClB,SAAS,UACT;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACnD,WAcD,CAAA;AAEF,8FAA8F;AAC9F,eAAO,MAAM,UAAU,cACV,SAAS,SACb,YAAY,WACV,UAAU,SACZ,SAAS,KACf,
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEjE;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,gHAAgH;IAChH,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAClC,oFAAoF;IACpF,UAAU,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC3C,KAAK,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,SAChB,WAAW,KAChB,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAMlE,CAAA;AAED,8GAA8G;AAC9G,eAAO,MAAM,SAAS,SAAU,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,KAAG,OACjC,CAAA;AAExC,4EAA4E;AAC5E,eAAO,MAAM,aAAa,cAAe,SAAS,KAAG,MACiC,CAAA;AAEtF,gFAAgF;AAChF,eAAO,MAAM,MAAM,0DAA0D,CAAA;AAE7E,eAAO,MAAM,OAAO,+HAC0G,CAAA;AAE9H,qFAAqF;AACrF,eAAO,MAAM,UAAU,cACV,SAAS,WACX,gBAAgB,SAClB,SAAS,UACT;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACnD,WAcD,CAAA;AAEF,8FAA8F;AAC9F,eAAO,MAAM,UAAU,cACV,SAAS,SACb,YAAY,WACV,UAAU,SACZ,SAAS,KACf,WAUD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,cACb,SAAS,SACb,YAAY,WACV,UAAU,SACZ,SAAS,KACf,WAAoG,CAAA"}
|
package/dist/services/deps.js
CHANGED
|
@@ -11,6 +11,12 @@ export const storeIfOpen = async (deps) => {
|
|
|
11
11
|
return undefined;
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
|
+
/** Whether `chats`, `messages list|context` and `contacts` answer from the store instead of the messenger. */
|
|
15
|
+
export const fromStore = (deps) => deps.offline || deps.reads === "store";
|
|
16
|
+
/** What a store-mode read answers for a chat the store holds nothing of. */
|
|
17
|
+
export const nothingStored = (messenger) => `nothing stored for this chat yet — keep \`${messenger.app.command} serve\` running`;
|
|
18
|
+
/** Where a store-mode messenger's history comes from, for what it cannot do. */
|
|
19
|
+
export const PUSHED = "this messenger's history is read from the local store";
|
|
14
20
|
export const OFFLINE = "--offline answers only from what is kept locally: `chats list|show`, `messages list|show|context` and `contacts list|show`";
|
|
15
21
|
/** Over a connection that is already open — an MCP session holds one for minutes. */
|
|
16
22
|
export const onlineDeps = (messenger, adapter, guard, where = {}) => ({
|
|
@@ -33,6 +39,7 @@ export const onlineDeps = (messenger, adapter, guard, where = {}) => ({
|
|
|
33
39
|
export const storedDeps = (messenger, store, account, guard) => ({
|
|
34
40
|
messenger,
|
|
35
41
|
offline: true,
|
|
42
|
+
reads: messenger.history ?? "server",
|
|
36
43
|
guard,
|
|
37
44
|
account: async () => account,
|
|
38
45
|
store: async () => store,
|
|
@@ -40,4 +47,9 @@ export const storedDeps = (messenger, store, account, guard) => ({
|
|
|
40
47
|
throw new CliError("validation_error", OFFLINE);
|
|
41
48
|
},
|
|
42
49
|
});
|
|
50
|
+
/**
|
|
51
|
+
* The store-backed reads of a messenger whose history is kept there, for an MCP read: not
|
|
52
|
+
* `--offline`, so `inbox` and `review` answer too. Nothing here connects.
|
|
53
|
+
*/
|
|
54
|
+
export const storeModeDeps = (messenger, store, account, guard) => ({ ...storedDeps(messenger, store, account, guard), offline: false, reads: "store" });
|
|
43
55
|
//# sourceMappingURL=deps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AA0B5C;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,IAAiB,EACkD,EAAE;IACrE,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,8GAA8G;AAC9G,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAA4C,EAAW,EAAE,CACjF,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAA;AAExC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAU,EAAE,CAC5D,6CAA6C,SAAS,CAAC,GAAG,CAAC,OAAO,kBAAkB,CAAA;AAEtF,gFAAgF;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG,uDAAuD,CAAA;AAE7E,MAAM,CAAC,MAAM,OAAO,GAClB,4HAA4H,CAAA;AAE9H,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,SAAoB,EACpB,OAAyB,EACzB,KAAgB,EAChB,KAAK,GAAkD,EAAE,EAC5C,EAAE,CAAC,CAAC;IACjB,SAAS;IACT,GAAG,KAAK;IACR,OAAO,EAAE,KAAK;IACd,KAAK;IACL,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;IAC/B,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,IAAI,KAAK,IAAI;YAAE,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,kDAAkD,CAAC,CAAA;QACjH,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACxD,CAAC;IACD,KAAK,EAAE,KAAK,IAAI,EAAE;QAChB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,gEAAgE,CAAC,CAAA;IAC1G,CAAC;CACF,CAAC,CAAA;AAEF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,SAAoB,EACpB,KAAmB,EACnB,OAAmB,EACnB,KAAgB,EACH,EAAE,CAAC,CAAC;IACjB,SAAS;IACT,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,SAAS,CAAC,OAAO,IAAI,QAAQ;IACpC,KAAK;IACL,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;IAC5B,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;IACxB,UAAU,EAAE,KAAK,IAAI,EAAE;QACrB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;CACF,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,SAAoB,EACpB,KAAmB,EACnB,OAAmB,EACnB,KAAgB,EACH,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA"}
|