@wirecat/cli-memo 0.22.0 → 0.24.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 +24 -21
- package/dist/actions/command.d.ts.map +1 -1
- package/dist/actions/command.js +14 -19
- package/dist/actions/command.js.map +1 -1
- package/dist/agents/command.d.ts.map +1 -1
- package/dist/agents/command.js +9 -9
- package/dist/agents/command.js.map +1 -1
- package/dist/answers/command.js +6 -6
- package/dist/answers/command.js.map +1 -1
- package/dist/author.d.ts +11 -0
- package/dist/author.d.ts.map +1 -0
- package/dist/author.js +16 -0
- package/dist/author.js.map +1 -0
- package/dist/bin/memo.js +4 -2
- package/dist/bin/memo.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/context/command.d.ts.map +1 -1
- package/dist/context/command.js +18 -12
- package/dist/context/command.js.map +1 -1
- package/dist/context/context.d.ts +1 -1
- package/dist/context/context.d.ts.map +1 -1
- package/dist/context/context.js +2 -2
- package/dist/context/context.js.map +1 -1
- package/dist/discovery/command.d.ts +2 -0
- package/dist/discovery/command.d.ts.map +1 -1
- package/dist/discovery/command.js +18 -10
- package/dist/discovery/command.js.map +1 -1
- package/dist/examples.d.ts +5 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +128 -0
- package/dist/examples.js.map +1 -0
- package/dist/facts/command.d.ts.map +1 -1
- package/dist/facts/command.js +19 -17
- package/dist/facts/command.js.map +1 -1
- package/dist/install/postinstall.d.ts +7 -0
- package/dist/install/postinstall.d.ts.map +1 -0
- package/dist/install/postinstall.js +28 -0
- package/dist/install/postinstall.js.map +1 -0
- package/dist/knowledge/command.d.ts.map +1 -1
- package/dist/knowledge/command.js +109 -74
- package/dist/knowledge/command.js.map +1 -1
- package/dist/knowledge/key-documents.d.ts +29 -0
- package/dist/knowledge/key-documents.d.ts.map +1 -0
- package/dist/knowledge/key-documents.js +76 -0
- package/dist/knowledge/key-documents.js.map +1 -0
- package/dist/knowledge/meeting-projects-command.d.ts +1 -1
- package/dist/knowledge/meeting-projects-command.d.ts.map +1 -1
- package/dist/knowledge/meeting-projects-command.js +7 -20
- package/dist/knowledge/meeting-projects-command.js.map +1 -1
- package/dist/mail/messages-command.d.ts +4 -0
- package/dist/mail/messages-command.d.ts.map +1 -0
- package/dist/mail/messages-command.js +32 -0
- package/dist/mail/messages-command.js.map +1 -0
- package/dist/mcp/command.js +1 -1
- package/dist/mcp/command.js.map +1 -1
- package/dist/mcp/knowledge.js +3 -3
- package/dist/mcp/knowledge.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +27 -18
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/task-relations.d.ts +3 -3
- package/dist/mcp/task-relations.d.ts.map +1 -1
- package/dist/mcp/task-relations.js +18 -6
- package/dist/mcp/task-relations.js.map +1 -1
- package/dist/mcp/vocabulary.d.ts +2 -3
- package/dist/mcp/vocabulary.d.ts.map +1 -1
- package/dist/mcp/vocabulary.js +23 -18
- package/dist/mcp/vocabulary.js.map +1 -1
- package/dist/memories/command.d.ts +1 -0
- package/dist/memories/command.d.ts.map +1 -1
- package/dist/memories/command.js +24 -23
- package/dist/memories/command.js.map +1 -1
- package/dist/notes/about.d.ts +11 -2
- package/dist/notes/about.d.ts.map +1 -1
- package/dist/notes/about.js +34 -30
- package/dist/notes/about.js.map +1 -1
- package/dist/notes/bound.d.ts +3 -0
- package/dist/notes/bound.d.ts.map +1 -1
- package/dist/notes/bound.js +9 -1
- package/dist/notes/bound.js.map +1 -1
- package/dist/notes/command.d.ts.map +1 -1
- package/dist/notes/command.js +28 -68
- package/dist/notes/command.js.map +1 -1
- package/dist/notes/folders-command.d.ts.map +1 -1
- package/dist/notes/folders-command.js +15 -13
- package/dist/notes/folders-command.js.map +1 -1
- package/dist/notes/list.d.ts +22 -0
- package/dist/notes/list.d.ts.map +1 -0
- package/dist/notes/list.js +24 -0
- package/dist/notes/list.js.map +1 -0
- package/dist/notes/search.d.ts.map +1 -1
- package/dist/notes/search.js +2 -2
- package/dist/notes/search.js.map +1 -1
- package/dist/options.d.ts +2 -0
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +2 -0
- package/dist/options.js.map +1 -1
- package/dist/page.d.ts +12 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +10 -0
- package/dist/page.js.map +1 -0
- package/dist/people/command.js +2 -2
- package/dist/program.d.ts +5 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +35 -6
- package/dist/program.js.map +1 -1
- package/dist/records/run.d.ts +2 -0
- package/dist/records/run.d.ts.map +1 -1
- package/dist/records/run.js +18 -12
- package/dist/records/run.js.map +1 -1
- package/dist/run/auto.d.ts.map +1 -1
- package/dist/run/auto.js +11 -13
- package/dist/run/auto.js.map +1 -1
- package/dist/run/import.d.ts +2 -2
- package/dist/run/import.d.ts.map +1 -1
- package/dist/run/import.js +66 -27
- package/dist/run/import.js.map +1 -1
- package/dist/run/lock.d.ts +1 -1
- package/dist/run/lock.d.ts.map +1 -1
- package/dist/run/lock.js +1 -1
- package/dist/run/lock.js.map +1 -1
- package/dist/search/command.d.ts +15 -20
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +96 -47
- package/dist/search/command.js.map +1 -1
- package/dist/tags/command.d.ts.map +1 -1
- package/dist/tags/command.js +25 -18
- package/dist/tags/command.js.map +1 -1
- package/dist/tasks/command.d.ts.map +1 -1
- package/dist/tasks/command.js +21 -14
- package/dist/tasks/command.js.map +1 -1
- package/dist/tasks/relations-command.d.ts +1 -1
- package/dist/tasks/relations-command.d.ts.map +1 -1
- package/dist/tasks/relations-command.js +12 -33
- package/dist/tasks/relations-command.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/vocabulary/command.d.ts.map +1 -1
- package/dist/vocabulary/command.js +48 -47
- package/dist/vocabulary/command.js.map +1 -1
- package/install/postinstall.mjs +9 -0
- package/package.json +8 -4
- package/skills/cli-memo/SKILL.md +49 -0
- package/dist/mail/command.d.ts +0 -4
- package/dist/mail/command.d.ts.map +0 -1
- package/dist/mail/command.js +0 -105
- package/dist/mail/command.js.map +0 -1
package/dist/mail/command.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { CliError, createRenderer } from "@wirecat/cli-base";
|
|
2
|
-
import { parseLocator, resolveOutput } from "@wirecat/cli-messaging";
|
|
3
|
-
import { readMail } from "@wirecat/cli-messaging/services";
|
|
4
|
-
import { openStore } from "@wirecat/cli-messaging/store";
|
|
5
|
-
import { InvalidArgumentError } from "commander";
|
|
6
|
-
import { loadConfig } from "../config.js";
|
|
7
|
-
import { positive, whole } from "../options.js";
|
|
8
|
-
import { withImportLock } from "../run/lock.js";
|
|
9
|
-
import { found } from "../search/command.js";
|
|
10
|
-
import { himalaya } from "./himalaya.js";
|
|
11
|
-
import { importMail } from "./import.js";
|
|
12
|
-
const DAY = 86_400_000;
|
|
13
|
-
const day = (value) => {
|
|
14
|
-
const date = new Date(`${value}T00:00:00Z`);
|
|
15
|
-
if (!/^\d{4}-\d{2}-\d{2}$/.test(value) || Number.isNaN(date.getTime()))
|
|
16
|
-
throw new InvalidArgumentError("a date as YYYY-MM-DD");
|
|
17
|
-
return date;
|
|
18
|
-
};
|
|
19
|
-
const text = (result) => [
|
|
20
|
-
`${result.account}: ${result.listed} in All Mail since ${result.since.slice(0, 10)}, ` +
|
|
21
|
-
`${result.saved} saved, ${result.alreadyStored} already stored, ${result.deleted} marked deleted.`,
|
|
22
|
-
...(result.complete ? [] : ["Not every new message was read — run it again to continue."]),
|
|
23
|
-
...(result.deletionsSkipped === undefined ? [] : [`Deletions skipped: ${result.deletionsSkipped}`]),
|
|
24
|
-
].join("\n");
|
|
25
|
-
const chooseAccount = (accounts, name) => {
|
|
26
|
-
if (accounts.length === 0)
|
|
27
|
-
throw new CliError("configuration_error", "no mail account: add mail.accounts [{ name, address }] to the config");
|
|
28
|
-
const found = accounts.find((account) => account.name === name);
|
|
29
|
-
if (found !== undefined)
|
|
30
|
-
return found;
|
|
31
|
-
const choices = accounts.map((account) => account.name).join(", ");
|
|
32
|
-
throw new CliError(name === undefined || name === "import" ? "validation_error" : "not_found", name === undefined || name === "import"
|
|
33
|
-
? `name the account: memo mail <account> import — mail.accounts holds ${choices}`
|
|
34
|
-
: `no mail account "${name}" in mail.accounts — it holds ${choices}`);
|
|
35
|
-
};
|
|
36
|
-
export const mailCommand = (program, streams, env) => {
|
|
37
|
-
/** One stored email of the named account, whole, with the emails of its thread asked for either side. */
|
|
38
|
-
const show = async (account, reference, options) => {
|
|
39
|
-
if (reference === undefined)
|
|
40
|
-
throw new CliError("validation_error", `which email? memo mail ${account.name} show <msg:email/… reference>`);
|
|
41
|
-
const { provider, account: address } = parseLocator(reference);
|
|
42
|
-
if (provider !== "email" || address.toLowerCase() !== account.address.toLowerCase())
|
|
43
|
-
throw new CliError("validation_error", `${reference} is not an email of ${account.name} (${account.address})`);
|
|
44
|
-
const store = await openStore({ env });
|
|
45
|
-
try {
|
|
46
|
-
const emails = await readMail(store, reference, { before: options.beforeN, after: options.afterN });
|
|
47
|
-
if (options.json)
|
|
48
|
-
resolveOutput({ json: true, streams }).renderer.result(options.beforeN || options.afterN ? { items: emails } : emails[0]);
|
|
49
|
-
else
|
|
50
|
-
streams.data(`${emails.map((email) => found(email, "full")).join("\n\n")}\n`);
|
|
51
|
-
}
|
|
52
|
-
finally {
|
|
53
|
-
await store.close();
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
program
|
|
57
|
-
.command("mail")
|
|
58
|
-
.description("Read one mail account through Himalaya into the shared message store")
|
|
59
|
-
.usage("<account> import [options] | <account> show <reference> [options]")
|
|
60
|
-
.argument("[account]", "the account's name in mail.accounts of the config, also its name in Himalaya")
|
|
61
|
-
.argument("[action]", "import: read the account's mail, and drop the text of mail deleted at the source; show: one stored email")
|
|
62
|
-
.argument("[reference]", "show: the email's msg:email/… reference, as search answers give it")
|
|
63
|
-
.option("--since <date>", "first day to read, YYYY-MM-DD (default: 30 days ago)", day)
|
|
64
|
-
.option("--max <n>", "most new messages to read in this run", positive, 200)
|
|
65
|
-
.option("--json", "print JSON")
|
|
66
|
-
.option("--no-embed", "skip semantic embedding; local words remain searchable")
|
|
67
|
-
.option("--retry-attachments", "reread bounded stored messages after installing an extraction engine")
|
|
68
|
-
.option("--before-n <n>", "show: also this many earlier emails of its thread", whole, 0)
|
|
69
|
-
.option("--after-n <n>", "show: also this many later emails of its thread", whole, 0)
|
|
70
|
-
.action(async (name, action, reference, options) => {
|
|
71
|
-
const mailConfig = loadConfig(env).mail;
|
|
72
|
-
const account = chooseAccount(mailConfig?.accounts ?? [], name);
|
|
73
|
-
if (action === "show")
|
|
74
|
-
return show(account, reference, options);
|
|
75
|
-
if (action !== "import")
|
|
76
|
-
throw new CliError("validation_error", `memo mail ${account.name} takes import or show: memo mail ${account.name} import`);
|
|
77
|
-
const result = await withImportLock(env, async () => {
|
|
78
|
-
const store = await openStore({ env });
|
|
79
|
-
try {
|
|
80
|
-
return await importMail({
|
|
81
|
-
store,
|
|
82
|
-
run: himalaya(env),
|
|
83
|
-
account,
|
|
84
|
-
since: options.since ?? new Date(Date.now() - 30 * DAY),
|
|
85
|
-
max: options.max,
|
|
86
|
-
env,
|
|
87
|
-
embed: options.embed,
|
|
88
|
-
...(mailConfig?.maxBodyChars === undefined ? {} : { maxBodyChars: mailConfig.maxBodyChars }),
|
|
89
|
-
...(mailConfig?.maxAttachmentChars === undefined
|
|
90
|
-
? {}
|
|
91
|
-
: { maxAttachmentChars: mailConfig.maxAttachmentChars }),
|
|
92
|
-
retryAttachments: options.retryAttachments,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
finally {
|
|
96
|
-
await store.close();
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
if (options.json)
|
|
100
|
-
createRenderer({ format: "json", color: false, streams }).result(result);
|
|
101
|
-
else
|
|
102
|
-
streams.data(`${text(result)}\n`);
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
//# sourceMappingURL=command.js.map
|
package/dist/mail/command.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"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"}
|