@wirecat/cli-memo 0.62.0 → 0.64.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 +5 -5
- package/dist/actions/command.d.ts.map +1 -1
- package/dist/actions/command.js +7 -5
- package/dist/actions/command.js.map +1 -1
- package/dist/answers/command.d.ts.map +1 -1
- package/dist/answers/command.js +9 -5
- package/dist/answers/command.js.map +1 -1
- package/dist/context/command.d.ts +1 -1
- package/dist/context/command.d.ts.map +1 -1
- package/dist/context/command.js +13 -5
- package/dist/context/command.js.map +1 -1
- package/dist/doctor/command.d.ts +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +27 -35
- package/dist/examples.js.map +1 -1
- package/dist/findings/command.d.ts.map +1 -1
- package/dist/findings/command.js +17 -12
- package/dist/findings/command.js.map +1 -1
- package/dist/knowledge/command.d.ts.map +1 -1
- package/dist/knowledge/command.js +28 -15
- package/dist/knowledge/command.js.map +1 -1
- package/dist/knowledge/meeting-projects-command.d.ts.map +1 -1
- package/dist/knowledge/meeting-projects-command.js +20 -13
- package/dist/knowledge/meeting-projects-command.js.map +1 -1
- package/dist/mail/score.d.ts +11 -3
- package/dist/mail/score.d.ts.map +1 -1
- package/dist/mail/score.js +25 -8
- package/dist/mail/score.js.map +1 -1
- package/dist/mail/sender-scores.d.ts +15 -3
- package/dist/mail/sender-scores.d.ts.map +1 -1
- package/dist/mail/sender-scores.js +57 -8
- package/dist/mail/sender-scores.js.map +1 -1
- package/dist/notes/command.d.ts.map +1 -1
- package/dist/notes/command.js +8 -7
- package/dist/notes/command.js.map +1 -1
- package/dist/options.d.ts +4 -1
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +5 -4
- package/dist/options.js.map +1 -1
- package/dist/run/import.d.ts.map +1 -1
- package/dist/run/import.js +23 -9
- package/dist/run/import.js.map +1 -1
- package/dist/search/answers.d.ts.map +1 -1
- package/dist/search/answers.js +2 -3
- package/dist/search/answers.js.map +1 -1
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +5 -0
- package/dist/search/command.js.map +1 -1
- package/dist/search/search.d.ts +9 -4
- package/dist/search/search.d.ts.map +1 -1
- package/dist/search/search.js +45 -11
- package/dist/search/search.js.map +1 -1
- package/dist/store/scope.d.ts +3 -0
- package/dist/store/scope.d.ts.map +1 -1
- package/dist/store/scope.js +8 -2
- package/dist/store/scope.js.map +1 -1
- package/dist/store/source-list.d.ts +39 -5
- package/dist/store/source-list.d.ts.map +1 -1
- package/dist/store/source-list.js +110 -2
- package/dist/store/source-list.js.map +1 -1
- package/dist/tags/command.d.ts.map +1 -1
- package/dist/tags/command.js +24 -24
- package/dist/tags/command.js.map +1 -1
- package/dist/tasks/command.d.ts.map +1 -1
- package/dist/tasks/command.js +12 -8
- package/dist/tasks/command.js.map +1 -1
- package/dist/tasks/list.d.ts +2 -2
- package/dist/tasks/list.d.ts.map +1 -1
- package/dist/tasks/list.js +15 -7
- package/dist/tasks/list.js.map +1 -1
- package/dist/tasks/shared.d.ts +1 -1
- package/dist/tasks/shared.d.ts.map +1 -1
- package/dist/tasks/shared.js +31 -23
- package/dist/tasks/shared.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/skills/cli-memo/SKILL.md +6 -5
package/dist/search/search.js
CHANGED
|
@@ -6,7 +6,8 @@ import { APP } from "../app.js";
|
|
|
6
6
|
import { loadConfig } from "../config.js";
|
|
7
7
|
import { keyDocuments, keyFirst, projectOf } from "../knowledge/key-documents.js";
|
|
8
8
|
import { mailAccounts } from "../mail/accounts.js";
|
|
9
|
-
import {
|
|
9
|
+
import { demotedSenders } from "../mail/sender-scores.js";
|
|
10
|
+
import { accountsOf } from "../store/source-list.js";
|
|
10
11
|
import { taskPage } from "../tasks/context.js";
|
|
11
12
|
const CHATS_CHECKED = 500;
|
|
12
13
|
/**
|
|
@@ -132,19 +133,30 @@ export const unifiedSearch = async (store, query, options) => {
|
|
|
132
133
|
};
|
|
133
134
|
};
|
|
134
135
|
/** Notes are no account's: `--all` takes them with every account, `--provider notes` alone. */
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
136
|
+
/** `--all`, or the accounts a `--source` list names; notes count as one source, whichever folder is named. */
|
|
137
|
+
export const searchAccounts = async (store, env, options) => {
|
|
138
|
+
if (options.all && options.source !== undefined)
|
|
139
|
+
throw new CliError("validation_error", "use --all alone, or name the accounts with --source");
|
|
140
|
+
if (options.all)
|
|
141
|
+
return { keys: (await store.accounts.accounts()).filter(({ provider }) => provider !== "notes"), notes: true };
|
|
142
|
+
if (options.source === undefined)
|
|
143
|
+
throw new CliError("validation_error", "give --all, or name the accounts with --source: telegram:1,email,notes");
|
|
144
|
+
const keys = await accountsOf(store, env, options.source);
|
|
145
|
+
return {
|
|
146
|
+
keys: keys.filter(({ provider }) => provider !== "notes"),
|
|
147
|
+
notes: keys.some(({ provider }) => provider === "notes"),
|
|
148
|
+
};
|
|
142
149
|
};
|
|
143
150
|
const hasSource = (node) => node.kind === "predicate"
|
|
144
151
|
? node.field === "in"
|
|
145
152
|
: node.clauses.some(({ occur, node }) => occur !== "must_not" && hasSource(node));
|
|
153
|
+
/** Mail from senders with signs of fraud after the rest of the page, each part in the order it had. */
|
|
154
|
+
export const lowerSuspicious = (items, suspicious) => [
|
|
155
|
+
...items.filter((item) => !suspicious(item)),
|
|
156
|
+
...items.filter(suspicious),
|
|
157
|
+
];
|
|
146
158
|
/** Messages, mail and notes ranked together, with the open tasks that point at a hit and every account read. */
|
|
147
|
-
export const searchEverywhere = async (store, env, { text, limit, only, exact, timezone }) => {
|
|
159
|
+
export const searchEverywhere = async (store, env, { text, limit, only, exact, timezone, plainOrder }) => {
|
|
148
160
|
const accounts = await store.accounts.accounts();
|
|
149
161
|
// The shared search names this command only in the model hint, and the model comes from tg.
|
|
150
162
|
const messenger = { app: { ...APP, command: "tg" } };
|
|
@@ -180,19 +192,38 @@ export const searchEverywhere = async (store, env, { text, limit, only, exact, t
|
|
|
180
192
|
tasks.push(...page.items.map((task) => ({ ...task, heldBy: account })));
|
|
181
193
|
tasksIncomplete ||= page.hasMore;
|
|
182
194
|
}
|
|
195
|
+
const suspicious = plainOrder ? new Set() : await suspiciousRefs(store, found.items);
|
|
183
196
|
return {
|
|
184
197
|
...found,
|
|
198
|
+
items: lowerSuspicious(found.items, (item) => suspicious.has(item.ref)),
|
|
185
199
|
accounts: searched,
|
|
186
200
|
tasks: tasks.slice(0, limit),
|
|
187
201
|
tasksIncomplete: tasksIncomplete || tasks.length > limit,
|
|
188
202
|
};
|
|
189
203
|
};
|
|
204
|
+
/** The mail on a page whose sender's mail search ranks lower; the page's items carry no sender address. */
|
|
205
|
+
const suspiciousRefs = async (store, items) => {
|
|
206
|
+
const demoted = await demotedSenders(store);
|
|
207
|
+
const refs = new Set();
|
|
208
|
+
if (demoted.size === 0)
|
|
209
|
+
return refs;
|
|
210
|
+
for (const { kind, ref } of items) {
|
|
211
|
+
if (kind !== "mail")
|
|
212
|
+
continue;
|
|
213
|
+
const { provider, account, message } = parseLocator(ref);
|
|
214
|
+
const stored = await store.accounts.storedAccount({ provider, account }).catch(() => null);
|
|
215
|
+
const email = stored === null || message === undefined ? null : await store.mail.email(stored.id, message);
|
|
216
|
+
if (email?.fromAddress && demoted.has(email.fromAddress.toLowerCase()))
|
|
217
|
+
refs.add(ref);
|
|
218
|
+
}
|
|
219
|
+
return refs;
|
|
220
|
+
};
|
|
190
221
|
/** One kind with all its fields: messenger messages from every messenger, or imported mail. */
|
|
191
|
-
export const searchKind = async (store, kind, { text, limit, account, accounts, exact, timezone }) => {
|
|
222
|
+
export const searchKind = async (store, kind, { text, limit, account, accounts, exact, timezone, plainOrder, }) => {
|
|
192
223
|
const held = (await store.accounts.accounts()).some(({ provider }) => provider !== "notes" && (kind === "mail" ? provider === "email" : provider !== "email"));
|
|
193
224
|
if (!held)
|
|
194
225
|
throw new CliError("not_found", kind === "mail" ? "no imported mail; run memo sync --only mail" : "no stored messenger messages");
|
|
195
|
-
|
|
226
|
+
const found = await searchStore(store, MEMO, {
|
|
196
227
|
text,
|
|
197
228
|
kind,
|
|
198
229
|
...(kind === "messages" && !hasSource(parseLucene(text).root) ? { source: "all" } : {}),
|
|
@@ -202,6 +233,9 @@ export const searchKind = async (store, kind, { text, limit, account, accounts,
|
|
|
202
233
|
...(exact ? { exact: true } : {}),
|
|
203
234
|
...(timezone === undefined ? {} : { timezone }),
|
|
204
235
|
}, { app: APP });
|
|
236
|
+
if (kind !== "mail" || plainOrder)
|
|
237
|
+
return found;
|
|
238
|
+
return { ...found, items: lowerSuspicious(found.items, (item) => item.email?.senderScore?.demoted === true) };
|
|
205
239
|
};
|
|
206
240
|
/** The rules and `memo mail status` take an account's name; search takes it too, or the address. */
|
|
207
241
|
export const mailAddressOf = (env, account) => account.includes("@")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"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"}
|
package/dist/store/scope.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AccountKey, KnowledgeTarget, MessageStore } from "@wirecat/cli-core/store";
|
|
2
|
+
import { type WriteOptions } from "./source-list.js";
|
|
2
3
|
export interface AccountScope {
|
|
3
4
|
provider?: string;
|
|
4
5
|
account?: string;
|
|
@@ -20,4 +21,6 @@ export declare const selectTarget: (store: MessageStore, input: TargetInput) =>
|
|
|
20
21
|
key: AccountKey;
|
|
21
22
|
target: KnowledgeTarget;
|
|
22
23
|
}>;
|
|
24
|
+
/** A write's `--account` as the scope the helpers above take, resolved only when given: a locator may name it. */
|
|
25
|
+
export declare const scopeOf: (store: MessageStore, env: NodeJS.ProcessEnv, options: WriteOptions, warn: (text: string) => void) => Promise<AccountScope>;
|
|
23
26
|
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/store/scope.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/store/scope.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACxF,OAAO,EAAgB,KAAK,YAAY,EAAkB,MAAM,kBAAkB,CAAA;AAElF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAKD,eAAO,MAAM,aAAa,UAAiB,YAAY,SAAS,YAAY,KAAG,OAAO,CAAC,UAAU,CAchG,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,UAAiB,YAAY,MAAM,MAAM,SAAS,YAAY,KAAG,OAAO,CAAC,MAAM,CAO3G,CAAA;AAED,eAAO,MAAM,YAAY,UAChB,YAAY,SACZ,WAAW,KACjB,OAAO,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAsBtD,CAAA;AAED,kHAAkH;AAClH,eAAO,MAAM,OAAO,UACX,YAAY,OACd,MAAM,CAAC,UAAU,WACb,YAAY,QACf,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAC3B,OAAO,CAAC,YAAY,CAGtB,CAAA"}
|
package/dist/store/scope.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { parseLocator } from "@wirecat/cli-core";
|
|
3
|
+
import { oneAccountOf, writeAccountOf } from "./source-list.js";
|
|
3
4
|
const choices = (keys) => keys.length ? `; choose one of ${keys.map(({ provider, account }) => `${provider}:${account}`).join(", ")}` : "";
|
|
4
5
|
export const selectAccount = async (store, scope) => {
|
|
5
6
|
const held = await store.accounts.accounts();
|
|
6
7
|
if (!scope.provider)
|
|
7
|
-
throw new CliError("validation_error", `
|
|
8
|
+
throw new CliError("validation_error", `give --account <provider>:<account>${choices(held)}`);
|
|
8
9
|
const matches = held.filter((key) => key.provider === scope.provider && (scope.account === undefined || key.account === scope.account));
|
|
9
10
|
if (matches.length !== 1)
|
|
10
11
|
throw new CliError(matches.length ? "validation_error" : "not_found", matches.length
|
|
11
|
-
? `several accounts match;
|
|
12
|
+
? `several accounts match; give one${choices(matches)}`
|
|
12
13
|
: `the store holds no ${scope.provider} account matching this selection${choices(held)}`);
|
|
13
14
|
return matches[0];
|
|
14
15
|
};
|
|
@@ -43,4 +44,9 @@ export const selectTarget = async (store, input) => {
|
|
|
43
44
|
}
|
|
44
45
|
return { key: await selectAccount(store, input), target: { type, id: input[type] } };
|
|
45
46
|
};
|
|
47
|
+
/** A write's `--account` as the scope the helpers above take, resolved only when given: a locator may name it. */
|
|
48
|
+
export const scopeOf = async (store, env, options, warn) => {
|
|
49
|
+
const value = writeAccountOf(options, warn);
|
|
50
|
+
return value === undefined ? {} : oneAccountOf(store, env, value, "--account");
|
|
51
|
+
};
|
|
46
52
|
//# sourceMappingURL=scope.js.map
|
package/dist/store/scope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/store/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/store/scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,52 @@
|
|
|
1
1
|
import type { AccountKey, MessageStore } from "@wirecat/cli-core/store";
|
|
2
|
+
import type { Command } from "commander";
|
|
2
3
|
/** What a `--source` list names among the texts outside a chat: mailboxes, memo's notes, imported documents. */
|
|
3
4
|
export interface SourceList {
|
|
4
5
|
mail: AccountKey[];
|
|
5
6
|
notes: boolean;
|
|
6
7
|
documents: boolean;
|
|
7
8
|
}
|
|
8
|
-
/**
|
|
9
|
-
* cli-core's four `--source` shapes through its own reader. memo also knows a mailbox by its name in mail.accounts,
|
|
10
|
-
* which the store does not hold, so `email:<name>` becomes `email:<address>` first; notes and documents are memo's
|
|
11
|
-
* own texts and count even before the store holds an account of them.
|
|
12
|
-
*/
|
|
13
9
|
export declare const sourceListOf: (store: MessageStore, env: NodeJS.ProcessEnv, value: string) => Promise<SourceList>;
|
|
14
10
|
export declare const SOURCE_HELP = "which texts, separated by commas: provider:account (email:personal), a provider (email), a kind (mail, notes, documents) or group:<name>";
|
|
15
11
|
export declare const MAIL_SOURCES = "email:<account> (its name in mail.accounts or its address), email or group:<name>";
|
|
12
|
+
/**
|
|
13
|
+
* The configured mailboxes `sync` reads: the store holds no account before its first sync, so names are looked up in
|
|
14
|
+
* mail.accounts, and a group's other members are left out. `undefined` is every one.
|
|
15
|
+
*/
|
|
16
|
+
export declare const syncedMailboxesOf: (store: MessageStore, value: string) => Promise<string[] | undefined>;
|
|
16
17
|
/** The mailboxes a mail-only command reads; a list that names notes or documents is refused, not cut. */
|
|
17
18
|
export declare const mailboxesOf: (store: MessageStore, env: NodeJS.ProcessEnv, value: string) => Promise<AccountKey[]>;
|
|
19
|
+
export declare const ACCOUNTS_HELP = "which accounts, separated by commas: provider:account (email:personal), a provider (email), a kind (mail, notes, documents) or group:<name>";
|
|
20
|
+
export declare const MEETING_ACCOUNT_HELP = "the meeting account: provider:account (zoom:me@example.com), or a provider that has one";
|
|
21
|
+
export declare const MEETING_WRITE_HELP = "the meeting account it acts as: provider:account, such as zoom:me@example.com";
|
|
22
|
+
export declare const ONE_ACCOUNT_HELP = "the one account: provider:account (telegram:500, email:personal), or a provider or group:<name> that holds only one";
|
|
23
|
+
/** Every stored account a `--source` value names, of any kind, each once. */
|
|
24
|
+
export declare const accountsOf: (store: MessageStore, env: NodeJS.ProcessEnv, value: string) => Promise<AccountKey[]>;
|
|
25
|
+
/** One account, and the owner names it: none or several is an error listing the choices. */
|
|
26
|
+
export declare const oneAccountOf: (store: MessageStore, env: NodeJS.ProcessEnv, value: string | undefined, option?: string) => Promise<AccountKey>;
|
|
27
|
+
export interface SourceOptions {
|
|
28
|
+
source?: string;
|
|
29
|
+
provider?: string;
|
|
30
|
+
account?: string;
|
|
31
|
+
}
|
|
32
|
+
/** `--source`, and for one release the `--provider --account` it replaces. */
|
|
33
|
+
export declare const sourceOptions: (command: Command, help: string) => Command;
|
|
34
|
+
/** The `--source` an old `--provider --account` stands for; the new spelling goes to stderr. */
|
|
35
|
+
export declare const sourceOf: (options: SourceOptions, warn: (text: string) => void) => string | undefined;
|
|
36
|
+
/** The one account `--source` or the old `--provider --account` names. */
|
|
37
|
+
export declare const theAccount: (store: MessageStore, env: NodeJS.ProcessEnv, options: SourceOptions, warn: (text: string) => void) => Promise<AccountKey>;
|
|
38
|
+
/** Every account `--source` or the old `--provider --account` names; none named is an error, never all of them. */
|
|
39
|
+
export declare const theAccounts: (store: MessageStore, env: NodeJS.ProcessEnv, options: SourceOptions, warn: (text: string) => void) => Promise<AccountKey[]>;
|
|
40
|
+
export declare const accountName: ({ provider, account }: AccountKey) => string;
|
|
41
|
+
export declare const WRITE_HELP = "the account it acts as: provider:account, such as telegram:1 or email:personal";
|
|
42
|
+
export interface WriteOptions {
|
|
43
|
+
account?: string;
|
|
44
|
+
provider?: string;
|
|
45
|
+
}
|
|
46
|
+
/** A write's `--account provider:account`, and for one release the `--provider` that came before it. */
|
|
47
|
+
export declare const writeOptions: (command: Command, help?: string) => Command;
|
|
48
|
+
/** The `provider:account` a write names; an old `--provider --account` pair is joined, its new spelling on stderr. */
|
|
49
|
+
export declare const writeAccountOf: (options: WriteOptions, warn: (text: string) => void) => string | undefined;
|
|
50
|
+
/** The one account a write acts as. */
|
|
51
|
+
export declare const writeAccount: (store: MessageStore, env: NodeJS.ProcessEnv, options: WriteOptions, warn: (text: string) => void) => Promise<AccountKey>;
|
|
18
52
|
//# sourceMappingURL=source-list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-list.d.ts","sourceRoot":"","sources":["../../src/store/source-list.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"source-list.d.ts","sourceRoot":"","sources":["../../src/store/source-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ const messengers = (entry) => new CliError("validation_error", `${entry}: mentio
|
|
|
24
24
|
* which the store does not hold, so `email:<name>` becomes `email:<address>` first; notes and documents are memo's
|
|
25
25
|
* own texts and count even before the store holds an account of them.
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
const listedOf = async (store, env, value) => {
|
|
28
28
|
const named = async (entry) => {
|
|
29
29
|
const [provider = "", ...rest] = entry.trim().split(":");
|
|
30
30
|
const account = rest.join(":");
|
|
@@ -34,12 +34,15 @@ export const sourceListOf = async (store, env, value) => {
|
|
|
34
34
|
};
|
|
35
35
|
const each = (entries) => Promise.all(entries.filter((one) => one.trim()).map(named));
|
|
36
36
|
const groups = Object.fromEntries(await Promise.all(Object.entries(await store.accounts.accountGroups()).map(async ([name, members]) => [name, await each(members)])));
|
|
37
|
-
|
|
37
|
+
return entriesOfList((await each(value.split(","))).join(","), {
|
|
38
38
|
held: await store.accounts.storedAccounts(),
|
|
39
39
|
groups,
|
|
40
40
|
profiles: await store.accounts.profiles(),
|
|
41
41
|
running: { provider: "email", command: "memo" },
|
|
42
42
|
});
|
|
43
|
+
};
|
|
44
|
+
export const sourceListOf = async (store, env, value) => {
|
|
45
|
+
const listed = await listedOf(store, env, value);
|
|
43
46
|
const list = { mail: [], notes: false, documents: false };
|
|
44
47
|
for (const { entry, accounts } of listed) {
|
|
45
48
|
const word = entry.split(":")[0] ?? "";
|
|
@@ -66,6 +69,35 @@ export const sourceListOf = async (store, env, value) => {
|
|
|
66
69
|
};
|
|
67
70
|
export const SOURCE_HELP = `which texts, separated by commas: ${SHAPES}`;
|
|
68
71
|
export const MAIL_SOURCES = "email:<account> (its name in mail.accounts or its address), email or group:<name>";
|
|
72
|
+
/**
|
|
73
|
+
* The configured mailboxes `sync` reads: the store holds no account before its first sync, so names are looked up in
|
|
74
|
+
* mail.accounts, and a group's other members are left out. `undefined` is every one.
|
|
75
|
+
*/
|
|
76
|
+
export const syncedMailboxesOf = async (store, value) => {
|
|
77
|
+
const groups = await store.accounts.accountGroups();
|
|
78
|
+
const names = [];
|
|
79
|
+
const add = (entry, group) => {
|
|
80
|
+
const [provider = "", ...rest] = entry.trim().split(":");
|
|
81
|
+
if (provider === "group") {
|
|
82
|
+
const members = groups[rest.join(":")];
|
|
83
|
+
if (members === undefined)
|
|
84
|
+
throw new CliError("not_found", `no account group "${rest.join(":")}"`);
|
|
85
|
+
for (const member of members)
|
|
86
|
+
add(member, rest.join(":"));
|
|
87
|
+
}
|
|
88
|
+
else if (!MAIL.has(provider)) {
|
|
89
|
+
if (group === undefined)
|
|
90
|
+
throw new CliError("validation_error", `${entry}: sync reads mail only — ${MAIL_SOURCES}`);
|
|
91
|
+
}
|
|
92
|
+
else if (rest.length === 0)
|
|
93
|
+
names.push("*");
|
|
94
|
+
else
|
|
95
|
+
names.push(rest.join(":"));
|
|
96
|
+
};
|
|
97
|
+
for (const entry of value.split(",").filter((one) => one.trim()))
|
|
98
|
+
add(entry);
|
|
99
|
+
return names.includes("*") ? undefined : [...new Set(names)];
|
|
100
|
+
};
|
|
69
101
|
/** The mailboxes a mail-only command reads; a list that names notes or documents is refused, not cut. */
|
|
70
102
|
export const mailboxesOf = async (store, env, value) => {
|
|
71
103
|
const list = await sourceListOf(store, env, value);
|
|
@@ -73,4 +105,80 @@ export const mailboxesOf = async (store, env, value) => {
|
|
|
73
105
|
throw new CliError("validation_error", `${value}: this reads mail only — ${MAIL_SOURCES}`);
|
|
74
106
|
return list.mail;
|
|
75
107
|
};
|
|
108
|
+
export const ACCOUNTS_HELP = `which accounts, separated by commas: ${SHAPES}`;
|
|
109
|
+
export const MEETING_ACCOUNT_HELP = "the meeting account: provider:account (zoom:me@example.com), or a provider that has one";
|
|
110
|
+
export const MEETING_WRITE_HELP = "the meeting account it acts as: provider:account, such as zoom:me@example.com";
|
|
111
|
+
export const ONE_ACCOUNT_HELP = "the one account: provider:account (telegram:500, email:personal), or a provider or group:<name> that holds only one";
|
|
112
|
+
/** Every stored account a `--source` value names, of any kind, each once. */
|
|
113
|
+
export const accountsOf = async (store, env, value) => {
|
|
114
|
+
const keys = [];
|
|
115
|
+
for (const { accounts } of await listedOf(store, env, value))
|
|
116
|
+
for (const { provider, account } of accounts)
|
|
117
|
+
if (!keys.some((one) => one.provider === provider && one.account === account))
|
|
118
|
+
keys.push({ provider, account });
|
|
119
|
+
return keys;
|
|
120
|
+
};
|
|
121
|
+
const named = (keys) => keys.map((key) => accountName(key)).join(", ");
|
|
122
|
+
const unnamed = async (store, option = "--source") => new CliError("validation_error", `give ${option} <provider>:<account> — the store holds ${named(await store.accounts.accounts()) || "no account yet"}`);
|
|
123
|
+
/** One account, and the owner names it: none or several is an error listing the choices. */
|
|
124
|
+
export const oneAccountOf = async (store, env, value, option = "--source") => {
|
|
125
|
+
if (value === undefined)
|
|
126
|
+
throw await unnamed(store, option);
|
|
127
|
+
const keys = await accountsOf(store, env, value);
|
|
128
|
+
if (keys.length === 1)
|
|
129
|
+
return keys[0];
|
|
130
|
+
if (keys.length === 0)
|
|
131
|
+
throw new CliError("not_found", `${value} names no stored account`);
|
|
132
|
+
throw new CliError("validation_error", `${value} names ${keys.length} accounts; give one: ${named(keys)}`);
|
|
133
|
+
};
|
|
134
|
+
/** `--source`, and for one release the `--provider --account` it replaces. */
|
|
135
|
+
export const sourceOptions = (command, help) => command
|
|
136
|
+
.option("--source <accounts>", help)
|
|
137
|
+
.option("--provider <provider>", "deprecated: --source <provider>")
|
|
138
|
+
.option("--account <account>", "deprecated: --source <provider>:<account>");
|
|
139
|
+
/** The `--source` an old `--provider --account` stands for; the new spelling goes to stderr. */
|
|
140
|
+
export const sourceOf = (options, warn) => {
|
|
141
|
+
if (options.provider === undefined && options.account === undefined)
|
|
142
|
+
return options.source;
|
|
143
|
+
if (options.source !== undefined)
|
|
144
|
+
throw new CliError("validation_error", "--provider and --account are the old --source <provider>:<account>; give one of them");
|
|
145
|
+
if (options.provider === undefined)
|
|
146
|
+
throw new CliError("validation_error", "--account needs its provider: --source <provider>:<account>");
|
|
147
|
+
const value = options.account === undefined ? options.provider : `${options.provider}:${options.account}`;
|
|
148
|
+
warn(`--provider and --account are deprecated: use --source ${value}\n`);
|
|
149
|
+
return value;
|
|
150
|
+
};
|
|
151
|
+
/** The one account `--source` or the old `--provider --account` names. */
|
|
152
|
+
export const theAccount = (store, env, options, warn) => oneAccountOf(store, env, sourceOf(options, warn));
|
|
153
|
+
/** Every account `--source` or the old `--provider --account` names; none named is an error, never all of them. */
|
|
154
|
+
export const theAccounts = async (store, env, options, warn) => {
|
|
155
|
+
const value = sourceOf(options, warn);
|
|
156
|
+
if (value === undefined)
|
|
157
|
+
throw await unnamed(store);
|
|
158
|
+
const keys = await accountsOf(store, env, value);
|
|
159
|
+
if (keys.length === 0)
|
|
160
|
+
throw new CliError("not_found", `${value} names no stored account`);
|
|
161
|
+
return keys;
|
|
162
|
+
};
|
|
163
|
+
export const accountName = ({ provider, account }) => `${provider}:${account}`;
|
|
164
|
+
export const WRITE_HELP = "the account it acts as: provider:account, such as telegram:1 or email:personal";
|
|
165
|
+
/** A write's `--account provider:account`, and for one release the `--provider` that came before it. */
|
|
166
|
+
export const writeOptions = (command, help = WRITE_HELP) => command
|
|
167
|
+
.option("--account <account>", help)
|
|
168
|
+
.option("--provider <provider>", "deprecated: --account <provider>:<account>");
|
|
169
|
+
/** The `provider:account` a write names; an old `--provider --account` pair is joined, its new spelling on stderr. */
|
|
170
|
+
export const writeAccountOf = (options, warn) => {
|
|
171
|
+
const { provider, account } = options;
|
|
172
|
+
if (provider === undefined) {
|
|
173
|
+
if (account !== undefined && (!account.includes(":") || account.startsWith("group:")))
|
|
174
|
+
throw new CliError("validation_error", `--account takes provider:account, such as telegram:${account}`);
|
|
175
|
+
return account;
|
|
176
|
+
}
|
|
177
|
+
if (account?.includes(":"))
|
|
178
|
+
throw new CliError("validation_error", "--account provider:account names the provider; leave out --provider");
|
|
179
|
+
warn(`--provider is deprecated: use --account ${provider}:${account ?? "<account>"}\n`);
|
|
180
|
+
return account === undefined ? provider : `${provider}:${account}`;
|
|
181
|
+
};
|
|
182
|
+
/** The one account a write acts as. */
|
|
183
|
+
export const writeAccount = (store, env, options, warn) => oneAccountOf(store, env, writeAccountOf(options, warn), "--account");
|
|
76
184
|
//# sourceMappingURL=source-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-list.js","sourceRoot":"","sources":["../../src/store/source-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"source-list.js","sourceRoot":"","sources":["../../src/store/source-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/tags/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAM1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/tags/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAM1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqGxC,eAAO,MAAM,WAAW,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAwKxF,CAAA"}
|
package/dist/tags/command.js
CHANGED
|
@@ -7,6 +7,7 @@ import { folderIds } from "../notes/bound.js";
|
|
|
7
7
|
import { positive } from "../options.js";
|
|
8
8
|
import { heldMessage } from "../store/held.js";
|
|
9
9
|
import { selectTarget } from "../store/scope.js";
|
|
10
|
+
import { ACCOUNTS_HELP, accountName, accountsOf, oneAccountOf, sourceOf, sourceOptions, WRITE_HELP, writeAccountOf, writeOptions, } from "../store/source-list.js";
|
|
10
11
|
import { sourceTarget } from "../store/source-target.js";
|
|
11
12
|
import { canonicalProject } from "../vocabulary/project.js";
|
|
12
13
|
const OWNED = ["note", "document", "person", "organization", "project", "task", "meeting", "folder"];
|
|
@@ -18,31 +19,22 @@ const TAG_QUERY = {
|
|
|
18
19
|
fields: [termField("tag", "kw", "tag:work"), termField("type", "enum", "type:note", { values: TYPES })],
|
|
19
20
|
};
|
|
20
21
|
const reference = ({ provider, account }, chat) => provider && account ? formatReference({ type: "chat", provider, account, chat }) : chat;
|
|
21
|
-
const targetOptions = (command) => command
|
|
22
|
+
const targetOptions = (command) => writeOptions(command
|
|
22
23
|
.argument("<tag...>", "one or more tags: 1–32 letters a–z, digits or hyphens; case is ignored")
|
|
23
24
|
.option("--message <message>", "a stored email or message's full msg: locator")
|
|
24
25
|
.option("--note <reference>", "a note: note:<id>, a file in a notes folder: document:<id>; a bare id is a note")
|
|
25
|
-
.option("--chat <chat>", "a stored mail thread or chat's exact id; requires --
|
|
26
|
-
.option("--provider <provider>", "the chat's provider, such as email")
|
|
27
|
-
.option("--account <account>", "the chat's account, such as a mailbox address")
|
|
26
|
+
.option("--chat <chat>", "a stored mail thread or chat's exact id; requires --account")
|
|
28
27
|
.option("--task <id>", "label a task")
|
|
29
|
-
.option("--contact <person>", "label a contact identity, with
|
|
28
|
+
.option("--contact <person>", "label a contact identity, with --account")
|
|
30
29
|
.option("--person <uid>", "label a unified person")
|
|
31
30
|
.option("--organization <organization>", "label an organization: its id or organization:<id>")
|
|
32
31
|
.option("--project <project>", "label a project: its key or project:<id>")
|
|
33
|
-
.option("--meeting <id>", "label a meeting by its store id, with --
|
|
32
|
+
.option("--meeting <id>", "label a meeting by its store id, with --account")
|
|
34
33
|
.option("--folder <folder>", "label a notes folder by its id or path, or with --subfolder one subfolder: every note under it")
|
|
35
|
-
.option("--subfolder <path>", "the subfolder inside --folder")
|
|
36
|
-
.option("--json", "print JSON; --json=id,title keeps only those fields");
|
|
34
|
+
.option("--subfolder <path>", "the subfolder inside --folder"), `the account of --chat, --contact or --meeting: ${WRITE_HELP}`).option("--json", "print JSON; --json=id,title keeps only those fields");
|
|
37
35
|
const listTags = async (store, options) => {
|
|
38
|
-
if (options.account !== undefined && options.provider === undefined)
|
|
39
|
-
throw new CliError("validation_error", "--account requires --provider");
|
|
40
|
-
const keys = (await store.accounts.accounts()).filter((key) => (options.provider === undefined || key.provider === options.provider) &&
|
|
41
|
-
(options.account === undefined || key.account === options.account));
|
|
42
|
-
if (keys.length === 0 && (options.provider !== undefined || options.account !== undefined))
|
|
43
|
-
throw new CliError("not_found", "the store holds no matching account");
|
|
44
36
|
const items = [];
|
|
45
|
-
for (const key of keys) {
|
|
37
|
+
for (const key of options.keys) {
|
|
46
38
|
const types = options.type === undefined
|
|
47
39
|
? ["chat", "message", "contact"]
|
|
48
40
|
: options.type === "chat" || options.type === "message" || options.type === "contact"
|
|
@@ -68,7 +60,10 @@ const listTags = async (store, options) => {
|
|
|
68
60
|
export const tagsCommand = (program, streams, env) => {
|
|
69
61
|
const tags = program.command("tags").description("your labels on stored sources and folders or threads");
|
|
70
62
|
const { print } = answers(program, streams, env);
|
|
71
|
-
const
|
|
63
|
+
const warn = (text) => streams.diagnostic(text);
|
|
64
|
+
const mutate = async (operation, given, { provider, account, ...options }) => {
|
|
65
|
+
const value = writeAccountOf({ provider, account }, warn);
|
|
66
|
+
const scoped = async (store) => value === undefined ? {} : oneAccountOf(store, env, value, "--account");
|
|
72
67
|
const target = options.note !== undefined
|
|
73
68
|
? options.note.startsWith("document:")
|
|
74
69
|
? { type: "document", id: options.note.slice("document:".length) }
|
|
@@ -103,15 +98,17 @@ export const tagsCommand = (program, streams, env) => {
|
|
|
103
98
|
}
|
|
104
99
|
if (options.contact !== undefined || options.meeting !== undefined) {
|
|
105
100
|
await withStore(env, async (store) => {
|
|
106
|
-
const { key, target } = await selectTarget(store, options);
|
|
101
|
+
const { key, target } = await selectTarget(store, { ...options, ...(await scoped(store)) });
|
|
107
102
|
const changed = await (operation === "add" ? store.knowledge.addTags : store.knowledge.removeTags)(key, target, given);
|
|
108
103
|
print(options.json, itemAnswer({ ...key, target, [operation === "add" ? "added" : "removed"]: changed }), `${operation}: ${changed.join(", ") || "no labels changed"}`);
|
|
109
104
|
});
|
|
110
105
|
return;
|
|
111
106
|
}
|
|
112
|
-
|
|
107
|
+
if (options.message !== undefined && value !== undefined)
|
|
108
|
+
throw new CliError("validation_error", "a message locator names its account and chat — use --message alone");
|
|
113
109
|
const labels = [...new Set(given.map(normalizeTag))];
|
|
114
110
|
await withStore(env, async (store) => {
|
|
111
|
+
const selected = sourceTarget({ ...options, ...(await scoped(store)) });
|
|
115
112
|
const changed = await (operation === "add" ? store.tags.addTags : store.tags.removeTags)(selected.key, selected.target, labels);
|
|
116
113
|
const target = { ...selected.target, ...(selected.locator === undefined ? {} : { locator: selected.locator }) };
|
|
117
114
|
const answer = {
|
|
@@ -126,21 +123,23 @@ export const tagsCommand = (program, streams, env) => {
|
|
|
126
123
|
};
|
|
127
124
|
for (const operation of ["add", "remove"])
|
|
128
125
|
targetOptions(annotate(tags.command(operation), { effects: LOCAL_WRITE }).description(operation === "add" ? "put labels on one source" : "remove labels from one source")).action((given, options) => mutate(operation, given, options));
|
|
129
|
-
withQuery(annotate(tags.command("list"), { effects: LOCAL_READ, output: { entity: "source_tag" } }).description("list source labels,
|
|
130
|
-
|
|
131
|
-
.option("--account <account>", "only this account; requires --provider")
|
|
126
|
+
const tagsList = withQuery(annotate(tags.command("list"), { effects: LOCAL_READ, output: { entity: "source_tag" } }).description("list source labels, of every account or of the ones --source names"), TAG_QUERY);
|
|
127
|
+
sourceOptions(tagsList, `only these accounts (default: every one): ${ACCOUNTS_HELP}`)
|
|
132
128
|
.option("--limit <n>", "most labels to show", positive, 100)
|
|
133
129
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
134
|
-
.action(async (words,
|
|
130
|
+
.action(async (words, given) => {
|
|
135
131
|
const terms = queryTerms(words, TAG_QUERY, "tags list");
|
|
136
132
|
const tag = terms.get("tag");
|
|
133
|
+
const value = sourceOf(given, warn);
|
|
137
134
|
const options = {
|
|
138
|
-
|
|
135
|
+
limit: given.limit,
|
|
136
|
+
...(given.json === undefined ? {} : { json: given.json }),
|
|
139
137
|
...(tag === undefined ? {} : { tag: normalizeTag(tag) }),
|
|
140
138
|
...(terms.has("type") ? { type: terms.get("type") } : {}),
|
|
141
139
|
};
|
|
142
140
|
await withStore(env, async (store) => {
|
|
143
|
-
const
|
|
141
|
+
const keys = value === undefined ? await store.accounts.accounts() : await accountsOf(store, env, value);
|
|
142
|
+
const answer = await listTags(store, { ...options, keys });
|
|
144
143
|
const owned = options.type === undefined || OWNED.includes(options.type)
|
|
145
144
|
? await store.knowledge.labelled(null, {
|
|
146
145
|
...(options.tag === undefined ? {} : { tag: options.tag }),
|
|
@@ -164,6 +163,7 @@ export const tagsCommand = (program, streams, env) => {
|
|
|
164
163
|
],
|
|
165
164
|
limit: options.limit,
|
|
166
165
|
has_more: answer.hasMore,
|
|
166
|
+
meta: { accounts: keys.map(accountName) },
|
|
167
167
|
}), [
|
|
168
168
|
...lines,
|
|
169
169
|
...knowledge
|