@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.
Files changed (150) hide show
  1. package/README.md +24 -21
  2. package/dist/actions/command.d.ts.map +1 -1
  3. package/dist/actions/command.js +14 -19
  4. package/dist/actions/command.js.map +1 -1
  5. package/dist/agents/command.d.ts.map +1 -1
  6. package/dist/agents/command.js +9 -9
  7. package/dist/agents/command.js.map +1 -1
  8. package/dist/answers/command.js +6 -6
  9. package/dist/answers/command.js.map +1 -1
  10. package/dist/author.d.ts +11 -0
  11. package/dist/author.d.ts.map +1 -0
  12. package/dist/author.js +16 -0
  13. package/dist/author.js.map +1 -0
  14. package/dist/bin/memo.js +4 -2
  15. package/dist/bin/memo.js.map +1 -1
  16. package/dist/config.d.ts +1 -1
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +1 -1
  19. package/dist/config.js.map +1 -1
  20. package/dist/context/command.d.ts.map +1 -1
  21. package/dist/context/command.js +18 -12
  22. package/dist/context/command.js.map +1 -1
  23. package/dist/context/context.d.ts +1 -1
  24. package/dist/context/context.d.ts.map +1 -1
  25. package/dist/context/context.js +2 -2
  26. package/dist/context/context.js.map +1 -1
  27. package/dist/discovery/command.d.ts +2 -0
  28. package/dist/discovery/command.d.ts.map +1 -1
  29. package/dist/discovery/command.js +18 -10
  30. package/dist/discovery/command.js.map +1 -1
  31. package/dist/examples.d.ts +5 -0
  32. package/dist/examples.d.ts.map +1 -0
  33. package/dist/examples.js +128 -0
  34. package/dist/examples.js.map +1 -0
  35. package/dist/facts/command.d.ts.map +1 -1
  36. package/dist/facts/command.js +19 -17
  37. package/dist/facts/command.js.map +1 -1
  38. package/dist/install/postinstall.d.ts +7 -0
  39. package/dist/install/postinstall.d.ts.map +1 -0
  40. package/dist/install/postinstall.js +28 -0
  41. package/dist/install/postinstall.js.map +1 -0
  42. package/dist/knowledge/command.d.ts.map +1 -1
  43. package/dist/knowledge/command.js +109 -74
  44. package/dist/knowledge/command.js.map +1 -1
  45. package/dist/knowledge/key-documents.d.ts +29 -0
  46. package/dist/knowledge/key-documents.d.ts.map +1 -0
  47. package/dist/knowledge/key-documents.js +76 -0
  48. package/dist/knowledge/key-documents.js.map +1 -0
  49. package/dist/knowledge/meeting-projects-command.d.ts +1 -1
  50. package/dist/knowledge/meeting-projects-command.d.ts.map +1 -1
  51. package/dist/knowledge/meeting-projects-command.js +7 -20
  52. package/dist/knowledge/meeting-projects-command.js.map +1 -1
  53. package/dist/mail/messages-command.d.ts +4 -0
  54. package/dist/mail/messages-command.d.ts.map +1 -0
  55. package/dist/mail/messages-command.js +32 -0
  56. package/dist/mail/messages-command.js.map +1 -0
  57. package/dist/mcp/command.js +1 -1
  58. package/dist/mcp/command.js.map +1 -1
  59. package/dist/mcp/knowledge.js +3 -3
  60. package/dist/mcp/knowledge.js.map +1 -1
  61. package/dist/mcp/server.d.ts.map +1 -1
  62. package/dist/mcp/server.js +27 -18
  63. package/dist/mcp/server.js.map +1 -1
  64. package/dist/mcp/task-relations.d.ts +3 -3
  65. package/dist/mcp/task-relations.d.ts.map +1 -1
  66. package/dist/mcp/task-relations.js +18 -6
  67. package/dist/mcp/task-relations.js.map +1 -1
  68. package/dist/mcp/vocabulary.d.ts +2 -3
  69. package/dist/mcp/vocabulary.d.ts.map +1 -1
  70. package/dist/mcp/vocabulary.js +23 -18
  71. package/dist/mcp/vocabulary.js.map +1 -1
  72. package/dist/memories/command.d.ts +1 -0
  73. package/dist/memories/command.d.ts.map +1 -1
  74. package/dist/memories/command.js +24 -23
  75. package/dist/memories/command.js.map +1 -1
  76. package/dist/notes/about.d.ts +11 -2
  77. package/dist/notes/about.d.ts.map +1 -1
  78. package/dist/notes/about.js +34 -30
  79. package/dist/notes/about.js.map +1 -1
  80. package/dist/notes/bound.d.ts +3 -0
  81. package/dist/notes/bound.d.ts.map +1 -1
  82. package/dist/notes/bound.js +9 -1
  83. package/dist/notes/bound.js.map +1 -1
  84. package/dist/notes/command.d.ts.map +1 -1
  85. package/dist/notes/command.js +28 -68
  86. package/dist/notes/command.js.map +1 -1
  87. package/dist/notes/folders-command.d.ts.map +1 -1
  88. package/dist/notes/folders-command.js +15 -13
  89. package/dist/notes/folders-command.js.map +1 -1
  90. package/dist/notes/list.d.ts +22 -0
  91. package/dist/notes/list.d.ts.map +1 -0
  92. package/dist/notes/list.js +24 -0
  93. package/dist/notes/list.js.map +1 -0
  94. package/dist/notes/search.d.ts.map +1 -1
  95. package/dist/notes/search.js +2 -2
  96. package/dist/notes/search.js.map +1 -1
  97. package/dist/options.d.ts +2 -0
  98. package/dist/options.d.ts.map +1 -1
  99. package/dist/options.js +2 -0
  100. package/dist/options.js.map +1 -1
  101. package/dist/page.d.ts +12 -0
  102. package/dist/page.d.ts.map +1 -0
  103. package/dist/page.js +10 -0
  104. package/dist/page.js.map +1 -0
  105. package/dist/people/command.js +2 -2
  106. package/dist/program.d.ts +5 -0
  107. package/dist/program.d.ts.map +1 -1
  108. package/dist/program.js +35 -6
  109. package/dist/program.js.map +1 -1
  110. package/dist/records/run.d.ts +2 -0
  111. package/dist/records/run.d.ts.map +1 -1
  112. package/dist/records/run.js +18 -12
  113. package/dist/records/run.js.map +1 -1
  114. package/dist/run/auto.d.ts.map +1 -1
  115. package/dist/run/auto.js +11 -13
  116. package/dist/run/auto.js.map +1 -1
  117. package/dist/run/import.d.ts +2 -2
  118. package/dist/run/import.d.ts.map +1 -1
  119. package/dist/run/import.js +66 -27
  120. package/dist/run/import.js.map +1 -1
  121. package/dist/run/lock.d.ts +1 -1
  122. package/dist/run/lock.d.ts.map +1 -1
  123. package/dist/run/lock.js +1 -1
  124. package/dist/run/lock.js.map +1 -1
  125. package/dist/search/command.d.ts +15 -20
  126. package/dist/search/command.d.ts.map +1 -1
  127. package/dist/search/command.js +96 -47
  128. package/dist/search/command.js.map +1 -1
  129. package/dist/tags/command.d.ts.map +1 -1
  130. package/dist/tags/command.js +25 -18
  131. package/dist/tags/command.js.map +1 -1
  132. package/dist/tasks/command.d.ts.map +1 -1
  133. package/dist/tasks/command.js +21 -14
  134. package/dist/tasks/command.js.map +1 -1
  135. package/dist/tasks/relations-command.d.ts +1 -1
  136. package/dist/tasks/relations-command.d.ts.map +1 -1
  137. package/dist/tasks/relations-command.js +12 -33
  138. package/dist/tasks/relations-command.js.map +1 -1
  139. package/dist/version.d.ts +1 -1
  140. package/dist/version.js +1 -1
  141. package/dist/vocabulary/command.d.ts.map +1 -1
  142. package/dist/vocabulary/command.js +48 -47
  143. package/dist/vocabulary/command.js.map +1 -1
  144. package/install/postinstall.mjs +9 -0
  145. package/package.json +8 -4
  146. package/skills/cli-memo/SKILL.md +49 -0
  147. package/dist/mail/command.d.ts +0 -4
  148. package/dist/mail/command.d.ts.map +0 -1
  149. package/dist/mail/command.js +0 -105
  150. package/dist/mail/command.js.map +0 -1
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"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"}