@leemour/cli-messaging 0.75.0 → 0.76.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 -2
- package/dist/cli/context.d.ts +2 -0
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/messenger/ask.d.ts +11 -0
- package/dist/cli/messenger/ask.d.ts.map +1 -0
- package/dist/cli/messenger/ask.js +66 -0
- package/dist/cli/messenger/ask.js.map +1 -0
- package/dist/cli/messenger/backfill-command.d.ts +1 -1
- package/dist/cli/messenger/backfill-command.d.ts.map +1 -1
- package/dist/cli/messenger/backfill-command.js +32 -14
- package/dist/cli/messenger/backfill-command.js.map +1 -1
- package/dist/cli/messenger/backfill-estimate.d.ts +3 -3
- package/dist/cli/messenger/backfill-estimate.d.ts.map +1 -1
- package/dist/cli/messenger/backfill-estimate.js +2 -2
- package/dist/cli/messenger/backfill-estimate.js.map +1 -1
- package/dist/cli/messenger/backfill-jobs.d.ts +3 -1
- package/dist/cli/messenger/backfill-jobs.d.ts.map +1 -1
- package/dist/cli/messenger/backfill-jobs.js.map +1 -1
- package/dist/cli/messenger/context.d.ts.map +1 -1
- package/dist/cli/messenger/context.js +22 -1
- package/dist/cli/messenger/context.js.map +1 -1
- package/dist/cli/messenger/messages-delete-command.d.ts +2 -2
- package/dist/cli/messenger/messages-delete-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-delete-command.js +4 -11
- package/dist/cli/messenger/messages-delete-command.js.map +1 -1
- package/dist/cli/messenger/polls-command.d.ts.map +1 -1
- package/dist/cli/messenger/polls-command.js +12 -5
- package/dist/cli/messenger/polls-command.js.map +1 -1
- package/dist/cli/messenger/port.d.ts +2 -0
- 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 +2 -2
- package/dist/cli/messenger/stored.js +2 -2
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +1 -0
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/settings.d.ts +10 -1
- package/dist/cli/settings.d.ts.map +1 -1
- package/dist/cli/settings.js +38 -4
- package/dist/cli/settings.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +7 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/polls.d.ts.map +1 -1
- package/dist/mcp/tools/polls.js +2 -0
- package/dist/mcp/tools/polls.js.map +1 -1
- package/dist/sends/guard.d.ts +23 -3
- package/dist/sends/guard.d.ts.map +1 -1
- package/dist/sends/guard.js +47 -15
- package/dist/sends/guard.js.map +1 -1
- package/dist/sends/guarded.d.ts +2 -0
- package/dist/sends/guarded.d.ts.map +1 -1
- package/dist/sends/guarded.js +1 -0
- package/dist/sends/guarded.js.map +1 -1
- package/dist/sends/index.d.ts +2 -2
- package/dist/sends/index.d.ts.map +1 -1
- package/dist/sends/index.js +1 -1
- package/dist/sends/index.js.map +1 -1
- package/dist/sends/permissions.d.ts +30 -0
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +144 -0
- package/dist/sends/permissions.js.map +1 -1
- package/dist/services/archive.d.ts +8 -2
- package/dist/services/archive.d.ts.map +1 -1
- package/dist/services/archive.js +25 -5
- package/dist/services/archive.js.map +1 -1
- package/dist/services/chats.d.ts +1 -1
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +23 -1
- package/dist/services/chats.js.map +1 -1
- package/dist/services/deps.d.ts +3 -1
- package/dist/services/deps.d.ts.map +1 -1
- package/dist/services/deps.js +10 -1
- package/dist/services/deps.js.map +1 -1
- package/dist/services/people.d.ts +3 -2
- package/dist/services/people.d.ts.map +1 -1
- package/dist/services/people.js +42 -4
- package/dist/services/people.js.map +1 -1
- package/package.json +3 -2
- package/parity.json +19 -27
package/dist/services/archive.js
CHANGED
|
@@ -4,7 +4,7 @@ import { estimateBackfill } from "../cli/messenger/backfill-estimate.js";
|
|
|
4
4
|
import { patiently } from "../cli/messenger/patience.js";
|
|
5
5
|
import { storedChatId } from "./messages.js";
|
|
6
6
|
/** The most messages a provider hands out per history request — Telegram's cap. */
|
|
7
|
-
const PAGE = 100;
|
|
7
|
+
export const PAGE = 100;
|
|
8
8
|
export const archiveService = (deps) => {
|
|
9
9
|
const found = async (chat) => {
|
|
10
10
|
const store = await deps.store();
|
|
@@ -28,7 +28,7 @@ export const archiveService = (deps) => {
|
|
|
28
28
|
messages: (await store.messages(account, chatId, window)).items,
|
|
29
29
|
};
|
|
30
30
|
},
|
|
31
|
-
estimate: async (chat, {
|
|
31
|
+
estimate: async (chat, { maxPages, pauseMs }) => {
|
|
32
32
|
const { store, account, chatId } = await found(chat);
|
|
33
33
|
const newest = Number((await store.messages(account, chatId, { limit: 1 })).items[0]?.id);
|
|
34
34
|
return {
|
|
@@ -38,12 +38,12 @@ export const archiveService = (deps) => {
|
|
|
38
38
|
held: (await store.chatStats(account, chatId))[0]?.messages ?? 0,
|
|
39
39
|
newest: Number.isSafeInteger(newest) ? newest : undefined,
|
|
40
40
|
page: PAGE,
|
|
41
|
-
|
|
41
|
+
maxPages,
|
|
42
42
|
pauseMs,
|
|
43
43
|
}),
|
|
44
44
|
};
|
|
45
45
|
},
|
|
46
|
-
fetch: async (chat, {
|
|
46
|
+
fetch: async (chat, { maxPages, pauseMs, sinceMs, last, note, stop, onPage }) => {
|
|
47
47
|
const connection = await deps.connection();
|
|
48
48
|
const self = connection.self();
|
|
49
49
|
if (self === null)
|
|
@@ -54,9 +54,11 @@ export const archiveService = (deps) => {
|
|
|
54
54
|
let chatId;
|
|
55
55
|
let top;
|
|
56
56
|
let fetched = 0;
|
|
57
|
+
let pages = 0;
|
|
57
58
|
let reachedStart = false;
|
|
58
59
|
let reachedSince = false;
|
|
59
|
-
|
|
60
|
+
let reachedLast = false;
|
|
61
|
+
while (pages < maxPages && !stop.aborted) {
|
|
60
62
|
const page = await patiently(() => connection.history(chat, { limit: PAGE, ...(before ? { before } : {}) }), note, stop);
|
|
61
63
|
const first = page.items[0];
|
|
62
64
|
if (!first) {
|
|
@@ -70,6 +72,7 @@ export const archiveService = (deps) => {
|
|
|
70
72
|
}
|
|
71
73
|
const low = Math.min(...keys);
|
|
72
74
|
top ??= Math.max(...keys);
|
|
75
|
+
pages += 1;
|
|
73
76
|
fetched += page.items.length;
|
|
74
77
|
// This run's pages are contiguous, so everything from `low` to its first message is held.
|
|
75
78
|
const held = await store.markRange(account, chatId, low, top);
|
|
@@ -82,6 +85,11 @@ export const archiveService = (deps) => {
|
|
|
82
85
|
reachedSince = true;
|
|
83
86
|
break;
|
|
84
87
|
}
|
|
88
|
+
const oldestAt = page.items.reduce((at, message) => (message.timestamp < at ? message.timestamp : at), first.timestamp);
|
|
89
|
+
if (last !== undefined && (await heldSince(store, account, chatId, held.from, low, oldestAt)) >= last) {
|
|
90
|
+
reachedLast = true;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
85
93
|
before = String(held.from);
|
|
86
94
|
note(`${fetched} messages so far, back to ${held.from}`);
|
|
87
95
|
await sleep(pauseMs, undefined, { signal: stop }).catch(() => { });
|
|
@@ -93,9 +101,21 @@ export const archiveService = (deps) => {
|
|
|
93
101
|
complete: reachedStart && ranges.length === 1,
|
|
94
102
|
ranges,
|
|
95
103
|
...(reachedSince ? { reachedSince: true } : {}),
|
|
104
|
+
...(reachedLast ? { reachedLast: true } : {}),
|
|
96
105
|
...(stop.aborted ? { stopped: true } : {}),
|
|
97
106
|
};
|
|
98
107
|
},
|
|
99
108
|
};
|
|
100
109
|
};
|
|
110
|
+
/**
|
|
111
|
+
* How many stored messages are as new as the held stretch's first one: the depth a fetch has
|
|
112
|
+
* reached. The page's own oldest time, unless the page joined an older stretch.
|
|
113
|
+
*/
|
|
114
|
+
const heldSince = async (store, account, chatId, from, low, oldestAt) => {
|
|
115
|
+
const at = from === low
|
|
116
|
+
? oldestAt
|
|
117
|
+
: ((await store.around(account, chatId, String(from), { before: 0, after: 0 }).catch(() => []))[0]?.timestamp ??
|
|
118
|
+
oldestAt);
|
|
119
|
+
return store.countMessages(account, chatId, { since: at });
|
|
120
|
+
};
|
|
101
121
|
//# sourceMappingURL=archive.js.map
|
|
@@ -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;AAC5C,OAAO,EAAiB,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAIxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,mFAAmF;AACnF,MAAM,IAAI,GAAG,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/services/archive.ts"],"names":[],"mappings":"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"}
|
package/dist/services/chats.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Chat, ChatCard, ChatEvents, GroupMember, Id, LinkTarget, Page } from "../domain/models.js";
|
|
2
2
|
import { type Operated } from "../sends/guarded.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type ServiceDeps } from "./deps.js";
|
|
4
4
|
/** How far back `events` looks without `since`, as in max-cli. */
|
|
5
5
|
export declare const EVENTS_DAYS = 7;
|
|
6
6
|
/** A filtered list searches the newest this many: paging through every dialog hit FLOOD_WAIT (tg handoff §4.14). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAU,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAChH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,WAAW,CAAA;AAGzD,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,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,YAsE/C,CAAA"}
|
package/dist/services/chats.js
CHANGED
|
@@ -2,6 +2,8 @@ import { CliError } from "@leemour/cli-core";
|
|
|
2
2
|
import { capability } from "../cli/messenger/port.js";
|
|
3
3
|
import { guardedWrite } from "../sends/guarded.js";
|
|
4
4
|
import { newOperationId } from "../sends/send-id.js";
|
|
5
|
+
import { storeIfOpen } from "./deps.js";
|
|
6
|
+
import { storedChatId } from "./messages.js";
|
|
5
7
|
/** How far back `events` looks without `since`, as in max-cli. */
|
|
6
8
|
export const EVENTS_DAYS = 7;
|
|
7
9
|
/** A filtered list searches the newest this many: paging through every dialog hit FLOOD_WAIT (tg handoff §4.14). */
|
|
@@ -22,7 +24,22 @@ export const chatsService = (deps) => ({
|
|
|
22
24
|
const end = window.limit === undefined ? found.length : window.offset + window.limit;
|
|
23
25
|
return { items: found.slice(window.offset, end), hasMore: found.length > end, partial: scanned.hasMore };
|
|
24
26
|
},
|
|
25
|
-
show: async (chat) =>
|
|
27
|
+
show: async (chat) => {
|
|
28
|
+
if (deps.offline) {
|
|
29
|
+
const store = await deps.store();
|
|
30
|
+
const account = await deps.account();
|
|
31
|
+
const id = await storedChatId(deps.messenger, chat, store, account);
|
|
32
|
+
const found = (await store.chats(account, {})).items.find((one) => one.id === id);
|
|
33
|
+
if (!found)
|
|
34
|
+
throw new CliError("not_found", `no stored chat ${id}`);
|
|
35
|
+
return { ...found, members: await storedMembers(store, account, found.id) };
|
|
36
|
+
}
|
|
37
|
+
const card = await (await deps.connection()).chat(chat);
|
|
38
|
+
if (card.members !== null || card.kind === "channel")
|
|
39
|
+
return card;
|
|
40
|
+
const store = await storeIfOpen(deps);
|
|
41
|
+
return store ? { ...card, members: await storedMembers(store, await deps.account(), card.id) } : card;
|
|
42
|
+
},
|
|
26
43
|
members: async (chat, window) => capability(await deps.connection(), "members", "list a group's members")(chat, window),
|
|
27
44
|
events: async (chat, { since, only }) => {
|
|
28
45
|
if (deps.offline) {
|
|
@@ -50,6 +67,11 @@ export const chatsService = (deps) => ({
|
|
|
50
67
|
return { operationId, chatId, until: until ?? null };
|
|
51
68
|
},
|
|
52
69
|
});
|
|
70
|
+
/** `null` when no member list was ever saved: not knowing who is there is not nobody being there. */
|
|
71
|
+
const storedMembers = async (store, account, chatId) => {
|
|
72
|
+
const members = (await store.members(account, chatId)).filter((one) => one.id !== account.account);
|
|
73
|
+
return members.length === 0 ? null : members;
|
|
74
|
+
};
|
|
53
75
|
const matches = ({ search, kind, unread }) => {
|
|
54
76
|
const needle = search?.toLocaleLowerCase();
|
|
55
77
|
return (chat) => (needle === undefined || (chat.title ?? "").toLocaleLowerCase().includes(needle)) &&
|
|
@@ -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;AAErD,OAAO,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,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
|
@@ -16,7 +16,9 @@ export interface ServiceDeps {
|
|
|
16
16
|
store: () => Promise<MessageStore>;
|
|
17
17
|
guard: SendGuard;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
/** Online, the store only adds to an answer the messenger already gave, so a store that will not open loses nothing. */
|
|
20
|
+
export declare const storeIfOpen: (deps: ServiceDeps) => Promise<MessageStore | undefined>;
|
|
21
|
+
export declare const OFFLINE = "--offline answers only from what is kept locally: `chats list|show`, `messages list|show|context` and `contacts list|show`";
|
|
20
22
|
/** Over a connection that is already open — an MCP session holds one for minutes. */
|
|
21
23
|
export declare const onlineDeps: (messenger: Messenger, adapter: MessengerAdapter, guard: SendGuard) => ServiceDeps;
|
|
22
24
|
/** Over the local store alone, for `--offline` and the tools that never ask the messenger. */
|
|
@@ -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;CACjB;AAED,eAAO,MAAM,OAAO,
|
|
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;CACjB;AAED,wHAAwH;AACxH,eAAO,MAAM,WAAW,SAAgB,WAAW,KAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAMrF,CAAA;AAED,eAAO,MAAM,OAAO,+HAC0G,CAAA;AAE9H,qFAAqF;AACrF,eAAO,MAAM,UAAU,cAAe,SAAS,WAAW,gBAAgB,SAAS,SAAS,KAAG,WAa7F,CAAA;AAEF,8FAA8F;AAC9F,eAAO,MAAM,UAAU,cACV,SAAS,SACb,YAAY,WACV,UAAU,SACZ,SAAS,KACf,WASD,CAAA"}
|
package/dist/services/deps.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
|
-
|
|
2
|
+
/** Online, the store only adds to an answer the messenger already gave, so a store that will not open loses nothing. */
|
|
3
|
+
export const storeIfOpen = async (deps) => {
|
|
4
|
+
try {
|
|
5
|
+
return await deps.store();
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export const OFFLINE = "--offline answers only from what is kept locally: `chats list|show`, `messages list|show|context` and `contacts list|show`";
|
|
3
12
|
/** Over a connection that is already open — an MCP session holds one for minutes. */
|
|
4
13
|
export const onlineDeps = (messenger, adapter, guard) => ({
|
|
5
14
|
messenger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAqB5C,MAAM,CAAC,MAAM,OAAO,GAClB,
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAqB5C,wHAAwH;AACxH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAiB,EAAqC,EAAE;IACxF,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAClB,4HAA4H,CAAA;AAE9H,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,OAAyB,EAAE,KAAgB,EAAe,EAAE,CAAC,CAAC;IAC7G,SAAS;IACT,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;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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Contact, Member, Page, PersonCard } from "../domain/models.js";
|
|
2
2
|
import type { PageWindow } from "./chats.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type ServiceDeps } from "./deps.js";
|
|
4
4
|
export interface ContactSync {
|
|
5
5
|
added: number;
|
|
6
6
|
changed: number;
|
|
@@ -8,7 +8,8 @@ export interface ContactSync {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* A contact is somebody this account has a one-to-one chat with — a query over the chat list, never
|
|
11
|
-
* a flag somebody maintains (max-cli `NEED-105`).
|
|
11
|
+
* a flag somebody maintains (max-cli `NEED-105`). Where the store holds who is in each one-to-one
|
|
12
|
+
* chat, it answers; otherwise the dialogs themselves do, offline from the stored chats.
|
|
12
13
|
*/
|
|
13
14
|
export interface PeopleService {
|
|
14
15
|
list(options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/services/people.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/services/people.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGlF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,WAAW,CAAA;AAEzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACjG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACzC,2DAA2D;IAC3D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACtC,4FAA4F;IAC5F,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CAC7B;AAED,eAAO,MAAM,aAAa,SAAU,WAAW,KAAG,aA8ChD,CAAA;AAEF,oFAAoF;AACpF,eAAO,MAAM,OAAO,UAAW,MAAM,KAAG,MAMvC,CAAA"}
|
package/dist/services/people.js
CHANGED
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
2
|
import { capability } from "../cli/messenger/port.js";
|
|
3
|
+
import { pickPerson } from "../resolve.js";
|
|
4
|
+
import { storeIfOpen } from "./deps.js";
|
|
3
5
|
export const peopleService = (deps) => ({
|
|
4
6
|
list: async (options) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
// Connected first: a messenger whose login brings its people writes them before the store is asked.
|
|
8
|
+
const connection = deps.offline ? undefined : await deps.connection();
|
|
9
|
+
const store = deps.offline ? await deps.store() : await storeIfOpen(deps);
|
|
10
|
+
const account = store && (await deps.account());
|
|
11
|
+
if (store && account && (await store.countContacts(account)) > 0)
|
|
12
|
+
return storedContacts(store, account, options);
|
|
13
|
+
const chats = connection
|
|
14
|
+
? (await connection.chats({ offset: 0 })).items
|
|
15
|
+
: (await (await deps.store()).chats(await deps.account(), {})).items;
|
|
8
16
|
return contactsIn(chats, options);
|
|
9
17
|
},
|
|
10
|
-
show: async (person) =>
|
|
18
|
+
show: async (person) => {
|
|
19
|
+
if (deps.offline) {
|
|
20
|
+
const store = await deps.store();
|
|
21
|
+
const account = await deps.account();
|
|
22
|
+
const found = pickPerson(person, await store.people(account.provider, { account: account.account }));
|
|
23
|
+
return { ...found, chats: await sharedChats(store, account, found.id) };
|
|
24
|
+
}
|
|
25
|
+
const card = await (await deps.connection()).contact(person);
|
|
26
|
+
if (card.chats.length > 0)
|
|
27
|
+
return card;
|
|
28
|
+
const store = await storeIfOpen(deps);
|
|
29
|
+
return store ? { ...card, chats: await sharedChats(store, await deps.account(), card.id) } : card;
|
|
30
|
+
},
|
|
11
31
|
lookup: async (phone) => capability(await deps.connection(), "lookup", "find a person by phone")(phone),
|
|
12
32
|
sync: async () => {
|
|
13
33
|
if (deps.offline) {
|
|
@@ -38,6 +58,24 @@ export const phoneOf = (typed) => {
|
|
|
38
58
|
}
|
|
39
59
|
return digits;
|
|
40
60
|
};
|
|
61
|
+
const storedContacts = async (store, account, { order, search, limit, offset }) => {
|
|
62
|
+
// Chats saved since the last refresh may have moved someone up; the order is worked out again here.
|
|
63
|
+
if (order === "recent")
|
|
64
|
+
await store.refreshRecency(account);
|
|
65
|
+
const query = search?.trim() || undefined;
|
|
66
|
+
return store.contacts(account, {
|
|
67
|
+
order,
|
|
68
|
+
...(query === undefined ? {} : { query }),
|
|
69
|
+
limit: limit ?? (await store.countContacts(account, query === undefined ? {} : { query })),
|
|
70
|
+
offset,
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
const sharedChats = async (store, account, personId) => (await store.chatsWith(account, personId)).map(({ id, title, kind, lastMessageAt }) => ({
|
|
74
|
+
id,
|
|
75
|
+
title,
|
|
76
|
+
kind,
|
|
77
|
+
lastMessageAt,
|
|
78
|
+
}));
|
|
41
79
|
const contactsIn = (chats, { order, search, limit, offset }) => {
|
|
42
80
|
const wanted = search?.trim().toLowerCase();
|
|
43
81
|
const people = chats
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/services/people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/services/people.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leemour/cli-messaging",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.76.0",
|
|
4
4
|
"description": "The messenger-neutral half of a messaging CLI: domain model, message locators, rendering, name resolution, the SQLite seam, the command skeleton and shared read commands, the send guard, run records and the message store",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Viacheslav Ptsarev",
|
|
@@ -64,7 +64,8 @@
|
|
|
64
64
|
"secrets:scan": "gitleaks git --no-banner --redact .",
|
|
65
65
|
"prepublishOnly": "pnpm build",
|
|
66
66
|
"parity:seed": "node --experimental-strip-types scripts/parity-seed.ts",
|
|
67
|
-
"parity:render": "node --experimental-strip-types scripts/parity-render.ts"
|
|
67
|
+
"parity:render": "node --experimental-strip-types scripts/parity-render.ts",
|
|
68
|
+
"parity:audit": "node --experimental-strip-types scripts/parity-audit.ts"
|
|
68
69
|
},
|
|
69
70
|
"dependencies": {
|
|
70
71
|
"@bomb.sh/tab": "0.0.22",
|
package/parity.json
CHANGED
|
@@ -136,8 +136,7 @@
|
|
|
136
136
|
},
|
|
137
137
|
"--last": {
|
|
138
138
|
"value": "<n>",
|
|
139
|
-
"meaning": "the newest n messages"
|
|
140
|
-
"note": "clash with tg's `store fetch --max`"
|
|
139
|
+
"meaning": "stop once the newest n messages are held; not with --since"
|
|
141
140
|
},
|
|
142
141
|
"--last-name": {
|
|
143
142
|
"value": "<name>",
|
|
@@ -158,12 +157,6 @@
|
|
|
158
157
|
"--mark-read": {
|
|
159
158
|
"meaning": "also mark the chat read up to the newest message shown; the other person sees it"
|
|
160
159
|
},
|
|
161
|
-
"--max": {
|
|
162
|
-
"value": "<n>",
|
|
163
|
-
"meaning": "at most this many messages in this run",
|
|
164
|
-
"default": "1000",
|
|
165
|
-
"note": "clash: the same limit as `--last` and `--max-pages` in max's `store fetch` — one of the two spellings goes"
|
|
166
|
-
},
|
|
167
160
|
"--max-actions": {
|
|
168
161
|
"value": "<n>",
|
|
169
162
|
"meaning": "at most this many actions in one run",
|
|
@@ -171,9 +164,8 @@
|
|
|
171
164
|
},
|
|
172
165
|
"--max-pages": {
|
|
173
166
|
"value": "<n>",
|
|
174
|
-
"meaning": "at most this many pages in one run",
|
|
175
|
-
"default": "
|
|
176
|
-
"note": "clash with tg's `store fetch --max`"
|
|
167
|
+
"meaning": "at most this many pages of 100 messages in one run",
|
|
168
|
+
"default": "10"
|
|
177
169
|
},
|
|
178
170
|
"--md": {
|
|
179
171
|
"meaning": "read **bold**, _italic_, ~~struck~~ and `code` in the text; \\ keeps a mark literal"
|
|
@@ -371,7 +363,11 @@
|
|
|
371
363
|
"--timeout": "both",
|
|
372
364
|
"--trace": "both",
|
|
373
365
|
"--verbose": "both",
|
|
374
|
-
"--version": "both"
|
|
366
|
+
"--version": "both",
|
|
367
|
+
"--yes": {
|
|
368
|
+
"state": "planned",
|
|
369
|
+
"by": "P7"
|
|
370
|
+
}
|
|
375
371
|
},
|
|
376
372
|
"commands": {
|
|
377
373
|
"account": {
|
|
@@ -866,13 +862,19 @@
|
|
|
866
862
|
"messages edit": {
|
|
867
863
|
"state": "both",
|
|
868
864
|
"options": {
|
|
869
|
-
"--md":
|
|
865
|
+
"--md": {
|
|
866
|
+
"state": "planned",
|
|
867
|
+
"by": "T6"
|
|
868
|
+
}
|
|
870
869
|
}
|
|
871
870
|
},
|
|
872
871
|
"messages forward": {
|
|
873
872
|
"state": "both",
|
|
874
873
|
"options": {
|
|
875
|
-
"--send-id":
|
|
874
|
+
"--send-id": {
|
|
875
|
+
"state": "planned",
|
|
876
|
+
"by": "T6"
|
|
877
|
+
},
|
|
876
878
|
"--silent": "both",
|
|
877
879
|
"--to": "both"
|
|
878
880
|
}
|
|
@@ -977,7 +979,7 @@
|
|
|
977
979
|
"--multiple": "both",
|
|
978
980
|
"--revote": {
|
|
979
981
|
"state": "planned",
|
|
980
|
-
"by": "
|
|
982
|
+
"by": "T6"
|
|
981
983
|
},
|
|
982
984
|
"--send-id": "both",
|
|
983
985
|
"--silent": "both"
|
|
@@ -1170,18 +1172,8 @@
|
|
|
1170
1172
|
"by": "T6"
|
|
1171
1173
|
},
|
|
1172
1174
|
"--estimate": "both",
|
|
1173
|
-
"--last":
|
|
1174
|
-
|
|
1175
|
-
"by": "P1"
|
|
1176
|
-
},
|
|
1177
|
-
"--max": {
|
|
1178
|
-
"state": "planned",
|
|
1179
|
-
"by": "P1"
|
|
1180
|
-
},
|
|
1181
|
-
"--max-pages": {
|
|
1182
|
-
"state": "planned",
|
|
1183
|
-
"by": "P1"
|
|
1184
|
-
},
|
|
1175
|
+
"--last": "both",
|
|
1176
|
+
"--max-pages": "both",
|
|
1185
1177
|
"--pause": "both",
|
|
1186
1178
|
"--since": "both"
|
|
1187
1179
|
}
|