@wirecat/cli-memo 0.0.0 → 0.5.1
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/LICENSE +204 -0
- package/README.md +315 -0
- package/dist/answers/command.d.ts +35 -0
- package/dist/answers/command.d.ts.map +1 -0
- package/dist/answers/command.js +117 -0
- package/dist/answers/command.js.map +1 -0
- package/dist/app.d.ts +9 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +10 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/memo.d.ts +3 -0
- package/dist/bin/memo.d.ts.map +1 -0
- package/dist/bin/memo.js +14 -0
- package/dist/bin/memo.js.map +1 -0
- package/dist/config.d.ts +39 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +40 -0
- package/dist/config.js.map +1 -0
- package/dist/context/command.d.ts +6 -0
- package/dist/context/command.d.ts.map +1 -0
- package/dist/context/command.js +73 -0
- package/dist/context/command.js.map +1 -0
- package/dist/context/context.d.ts +28 -0
- package/dist/context/context.d.ts.map +1 -0
- package/dist/context/context.js +49 -0
- package/dist/context/context.js.map +1 -0
- package/dist/knowledge/command.d.ts +4 -0
- package/dist/knowledge/command.d.ts.map +1 -0
- package/dist/knowledge/command.js +158 -0
- package/dist/knowledge/command.js.map +1 -0
- package/dist/mail/command.d.ts +4 -0
- package/dist/mail/command.d.ts.map +1 -0
- package/dist/mail/command.js +61 -0
- package/dist/mail/command.js.map +1 -0
- package/dist/mail/gmail.d.ts +18 -0
- package/dist/mail/gmail.d.ts.map +1 -0
- package/dist/mail/gmail.js +103 -0
- package/dist/mail/gmail.js.map +1 -0
- package/dist/mail/himalaya.d.ts +4 -0
- package/dist/mail/himalaya.d.ts.map +1 -0
- package/dist/mail/himalaya.js +13 -0
- package/dist/mail/himalaya.js.map +1 -0
- package/dist/mail/import.d.ts +53 -0
- package/dist/mail/import.d.ts.map +1 -0
- package/dist/mail/import.js +170 -0
- package/dist/mail/import.js.map +1 -0
- package/dist/mail/parse.d.ts +21 -0
- package/dist/mail/parse.d.ts.map +1 -0
- package/dist/mail/parse.js +86 -0
- package/dist/mail/parse.js.map +1 -0
- package/dist/notes/about.d.ts +31 -0
- package/dist/notes/about.d.ts.map +1 -0
- package/dist/notes/about.js +69 -0
- package/dist/notes/about.js.map +1 -0
- package/dist/notes/bound.d.ts +24 -0
- package/dist/notes/bound.d.ts.map +1 -0
- package/dist/notes/bound.js +57 -0
- package/dist/notes/bound.js.map +1 -0
- package/dist/notes/command.d.ts +4 -0
- package/dist/notes/command.d.ts.map +1 -0
- package/dist/notes/command.js +222 -0
- package/dist/notes/command.js.map +1 -0
- package/dist/notes/dialects/common.d.ts +18 -0
- package/dist/notes/dialects/common.d.ts.map +1 -0
- package/dist/notes/dialects/common.js +79 -0
- package/dist/notes/dialects/common.js.map +1 -0
- package/dist/notes/dialects/index.d.ts +5 -0
- package/dist/notes/dialects/index.d.ts.map +1 -0
- package/dist/notes/dialects/index.js +6 -0
- package/dist/notes/dialects/index.js.map +1 -0
- package/dist/notes/dialects/markdown.d.ts +7 -0
- package/dist/notes/dialects/markdown.d.ts.map +1 -0
- package/dist/notes/dialects/markdown.js +51 -0
- package/dist/notes/dialects/markdown.js.map +1 -0
- package/dist/notes/dialects/obsidian.d.ts +6 -0
- package/dist/notes/dialects/obsidian.d.ts.map +1 -0
- package/dist/notes/dialects/obsidian.js +33 -0
- package/dist/notes/dialects/obsidian.js.map +1 -0
- package/dist/notes/dialects/types.d.ts +39 -0
- package/dist/notes/dialects/types.d.ts.map +1 -0
- package/dist/notes/dialects/types.js +2 -0
- package/dist/notes/dialects/types.js.map +1 -0
- package/dist/notes/embed.d.ts +51 -0
- package/dist/notes/embed.d.ts.map +1 -0
- package/dist/notes/embed.js +109 -0
- package/dist/notes/embed.js.map +1 -0
- package/dist/notes/export.d.ts +27 -0
- package/dist/notes/export.d.ts.map +1 -0
- package/dist/notes/export.js +76 -0
- package/dist/notes/export.js.map +1 -0
- package/dist/notes/files.d.ts +14 -0
- package/dist/notes/files.d.ts.map +1 -0
- package/dist/notes/files.js +77 -0
- package/dist/notes/files.js.map +1 -0
- package/dist/notes/folders-command.d.ts +4 -0
- package/dist/notes/folders-command.d.ts.map +1 -0
- package/dist/notes/folders-command.js +113 -0
- package/dist/notes/folders-command.js.map +1 -0
- package/dist/notes/folders.d.ts +27 -0
- package/dist/notes/folders.d.ts.map +1 -0
- package/dist/notes/folders.js +46 -0
- package/dist/notes/folders.js.map +1 -0
- package/dist/notes/import.d.ts +33 -0
- package/dist/notes/import.d.ts.map +1 -0
- package/dist/notes/import.js +183 -0
- package/dist/notes/import.js.map +1 -0
- package/dist/notes/internal.d.ts +17 -0
- package/dist/notes/internal.d.ts.map +1 -0
- package/dist/notes/internal.js +47 -0
- package/dist/notes/internal.js.map +1 -0
- package/dist/notes/links.d.ts +18 -0
- package/dist/notes/links.d.ts.map +1 -0
- package/dist/notes/links.js +44 -0
- package/dist/notes/links.js.map +1 -0
- package/dist/notes/renames.d.ts +11 -0
- package/dist/notes/renames.d.ts.map +1 -0
- package/dist/notes/renames.js +24 -0
- package/dist/notes/renames.js.map +1 -0
- package/dist/notes/search.d.ts +5 -0
- package/dist/notes/search.d.ts.map +1 -0
- package/dist/notes/search.js +20 -0
- package/dist/notes/search.js.map +1 -0
- package/dist/notes/state.d.ts +14 -0
- package/dist/notes/state.d.ts.map +1 -0
- package/dist/notes/state.js +21 -0
- package/dist/notes/state.js.map +1 -0
- package/dist/options.d.ts +4 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +12 -0
- package/dist/options.js.map +1 -0
- package/dist/people/command.d.ts +5 -0
- package/dist/people/command.d.ts.map +1 -0
- package/dist/people/command.js +57 -0
- package/dist/people/command.js.map +1 -0
- package/dist/people/identity.d.ts +4 -0
- package/dist/people/identity.d.ts.map +1 -0
- package/dist/people/identity.js +13 -0
- package/dist/people/identity.js.map +1 -0
- package/dist/people/notes-map.d.ts +13 -0
- package/dist/people/notes-map.d.ts.map +1 -0
- package/dist/people/notes-map.js +49 -0
- package/dist/people/notes-map.js.map +1 -0
- package/dist/people/subject.d.ts +8 -0
- package/dist/people/subject.d.ts.map +1 -0
- package/dist/people/subject.js +19 -0
- package/dist/people/subject.js.map +1 -0
- package/dist/program.d.ts +7 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +34 -0
- package/dist/program.js.map +1 -0
- package/dist/run/auto.d.ts +20 -0
- package/dist/run/auto.d.ts.map +1 -0
- package/dist/run/auto.js +139 -0
- package/dist/run/auto.js.map +1 -0
- package/dist/run/import.d.ts +18 -0
- package/dist/run/import.d.ts.map +1 -0
- package/dist/run/import.js +114 -0
- package/dist/run/import.js.map +1 -0
- package/dist/search/command.d.ts +38 -0
- package/dist/search/command.d.ts.map +1 -0
- package/dist/search/command.js +269 -0
- package/dist/search/command.js.map +1 -0
- package/dist/store/gone.d.ts +17 -0
- package/dist/store/gone.d.ts.map +1 -0
- package/dist/store/gone.js +52 -0
- package/dist/store/gone.js.map +1 -0
- package/dist/store/scope.d.ts +19 -0
- package/dist/store/scope.d.ts.map +1 -0
- package/dist/store/scope.js +34 -0
- package/dist/store/scope.js.map +1 -0
- package/dist/store/source-target.d.ts +18 -0
- package/dist/store/source-target.d.ts.map +1 -0
- package/dist/store/source-target.js +28 -0
- package/dist/store/source-target.js.map +1 -0
- package/dist/tags/command.d.ts +4 -0
- package/dist/tags/command.d.ts.map +1 -0
- package/dist/tags/command.js +166 -0
- package/dist/tags/command.js.map +1 -0
- package/dist/tasks/command.d.ts +4 -0
- package/dist/tasks/command.d.ts.map +1 -0
- package/dist/tasks/command.js +83 -0
- package/dist/tasks/command.js.map +1 -0
- package/dist/tasks/context.d.ts +16 -0
- package/dist/tasks/context.d.ts.map +1 -0
- package/dist/tasks/context.js +68 -0
- package/dist/tasks/context.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +48 -3
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { CliError, createRenderer } from "@wirecat/cli-core";
|
|
2
|
+
import { normalizeTag } from "@wirecat/cli-messaging";
|
|
3
|
+
import { openStore } from "@wirecat/cli-messaging/store";
|
|
4
|
+
import { InvalidArgumentError } from "commander";
|
|
5
|
+
import { positive } from "../options.js";
|
|
6
|
+
import { selectTarget } from "../store/scope.js";
|
|
7
|
+
import { sourceTarget } from "../store/source-target.js";
|
|
8
|
+
const OWNED = ["note", "person", "task", "entity", "folder"];
|
|
9
|
+
const typeOf = (value) => {
|
|
10
|
+
if (!["chat", "message", "contact", "note", "person", "task", "entity", "folder"].includes(value))
|
|
11
|
+
throw new InvalidArgumentError("choose chat, message, contact, note, person, task, entity or folder");
|
|
12
|
+
return value;
|
|
13
|
+
};
|
|
14
|
+
const reference = (key, chat) => `${key.provider}/${JSON.stringify(key.account)}/${JSON.stringify(chat)}`;
|
|
15
|
+
const targetOptions = (command) => command
|
|
16
|
+
.argument("<tag...>", "one or more tags: 1–32 letters a–z, digits or hyphens; case is ignored")
|
|
17
|
+
.option("--message <locator>", "a stored email or message's full msg: locator")
|
|
18
|
+
.option("--note <id>", "a note: note:<id> or its id")
|
|
19
|
+
.option("--chat <id>", "a stored mail thread or chat's exact id; requires --provider and --account")
|
|
20
|
+
.option("--provider <provider>", "the chat's provider, such as email")
|
|
21
|
+
.option("--account <account>", "the chat's account, such as a mailbox address")
|
|
22
|
+
.option("--task <id>", "label a task")
|
|
23
|
+
.option("--contact <id>", "label a contact identity, with provider/account")
|
|
24
|
+
.option("--person <uid>", "label a unified person")
|
|
25
|
+
.option("--entity <id>", "label an organization, family or project")
|
|
26
|
+
.option("--folder <id>", "label a notes folder, or with --path one subfolder: every note under it")
|
|
27
|
+
.option("--path <subfolder>", "the subfolder inside --folder")
|
|
28
|
+
.option("--json", "print JSON");
|
|
29
|
+
const listTags = async (store, options) => {
|
|
30
|
+
if (options.account !== undefined && options.provider === undefined)
|
|
31
|
+
throw new CliError("validation_error", "--account requires --provider");
|
|
32
|
+
const keys = (await store.accounts()).filter((key) => (options.provider === undefined || key.provider === options.provider) &&
|
|
33
|
+
(options.account === undefined || key.account === options.account));
|
|
34
|
+
if (keys.length === 0 && (options.provider !== undefined || options.account !== undefined))
|
|
35
|
+
throw new CliError("not_found", "the store holds no matching account");
|
|
36
|
+
const items = [];
|
|
37
|
+
for (const key of keys) {
|
|
38
|
+
const types = options.type === undefined
|
|
39
|
+
? ["chat", "message", "contact"]
|
|
40
|
+
: options.type === "chat" || options.type === "message" || options.type === "contact"
|
|
41
|
+
? [options.type]
|
|
42
|
+
: [];
|
|
43
|
+
for (const type of types) {
|
|
44
|
+
const found = await store.tags(key, { type, ...(options.tag === undefined ? {} : { tag: options.tag }) });
|
|
45
|
+
for (const row of found) {
|
|
46
|
+
if (row.type === "contact" &&
|
|
47
|
+
!(await store.knowledge.tags(key, { type: "contact", id: row.personId })).includes(row.tag))
|
|
48
|
+
continue;
|
|
49
|
+
if (row.type === "message" &&
|
|
50
|
+
(await store.message(key, row.messageId, { chatId: row.chatId })) === undefined)
|
|
51
|
+
continue;
|
|
52
|
+
items.push({ ...key, ...row });
|
|
53
|
+
if (items.length > options.limit)
|
|
54
|
+
return { items: items.slice(0, options.limit), hasMore: true };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return { items, hasMore: false };
|
|
59
|
+
};
|
|
60
|
+
export const tagsCommand = (program, streams, env) => {
|
|
61
|
+
const tags = program.command("tags").description("Your labels on stored sources and folders or threads");
|
|
62
|
+
const print = (json, value, text) => {
|
|
63
|
+
if (json)
|
|
64
|
+
createRenderer({ format: "json", color: false, streams }).result(value);
|
|
65
|
+
else
|
|
66
|
+
streams.data(`${text}\n`);
|
|
67
|
+
};
|
|
68
|
+
const mutate = async (operation, given, options) => {
|
|
69
|
+
const target = options.note !== undefined
|
|
70
|
+
? { type: "note", id: options.note.replace(/^note:/, "") }
|
|
71
|
+
: options.person !== undefined
|
|
72
|
+
? { type: "person", id: options.person.replace(/^person:/, "") }
|
|
73
|
+
: options.entity !== undefined
|
|
74
|
+
? { type: "entity", id: options.entity.replace(/^entity:/, "") }
|
|
75
|
+
: options.task !== undefined
|
|
76
|
+
? { type: "task", id: options.task.replace(/^task:/, "") }
|
|
77
|
+
: options.folder !== undefined
|
|
78
|
+
? { type: "folder", id: options.folder, path: options.path ?? null }
|
|
79
|
+
: undefined;
|
|
80
|
+
if (options.path !== undefined && options.folder === undefined)
|
|
81
|
+
throw new CliError("validation_error", "--path names a subfolder of --folder");
|
|
82
|
+
if (target !== undefined) {
|
|
83
|
+
const store = await openStore({ env });
|
|
84
|
+
try {
|
|
85
|
+
const changed = await (operation === "add" ? store.knowledge.addTags : store.knowledge.removeTags)(null, target, given);
|
|
86
|
+
print(options.json, { target, [operation === "add" ? "added" : "removed"]: changed }, `${operation}: ${changed.join(", ") || "no labels changed"}`);
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
await store.close();
|
|
90
|
+
}
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (options.contact !== undefined) {
|
|
94
|
+
const store = await openStore({ env });
|
|
95
|
+
try {
|
|
96
|
+
const { key, target } = await selectTarget(store, options);
|
|
97
|
+
const changed = await (operation === "add" ? store.knowledge.addTags : store.knowledge.removeTags)(key, target, given);
|
|
98
|
+
print(options.json, { ...key, target, [operation === "add" ? "added" : "removed"]: changed }, `${operation}: ${changed.join(", ") || "no labels changed"}`);
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
await store.close();
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const selected = sourceTarget(options);
|
|
106
|
+
const labels = [...new Set(given.map(normalizeTag))];
|
|
107
|
+
const store = await openStore({ env });
|
|
108
|
+
try {
|
|
109
|
+
const changed = await (operation === "add" ? store.addTags : store.removeTags)(selected.key, selected.target, labels);
|
|
110
|
+
const target = { ...selected.target, ...(selected.locator === undefined ? {} : { locator: selected.locator }) };
|
|
111
|
+
const answer = {
|
|
112
|
+
...selected.key,
|
|
113
|
+
target,
|
|
114
|
+
[operation === "add" ? "added" : "removed"]: changed,
|
|
115
|
+
unchanged: labels.filter((tag) => !changed.includes(tag)),
|
|
116
|
+
};
|
|
117
|
+
const name = selected.locator ?? reference(selected.key, selected.target.chatId);
|
|
118
|
+
print(options.json, answer, `${name}: ${changed.length ? `${operation}: ${changed.join(", ")}` : "no tags changed"}`);
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
await store.close();
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
for (const operation of ["add", "remove"])
|
|
125
|
+
targetOptions(tags
|
|
126
|
+
.command(operation)
|
|
127
|
+
.description(operation === "add" ? "Put labels on one source" : "Remove labels from one source")).action((given, options) => mutate(operation, given, options));
|
|
128
|
+
tags
|
|
129
|
+
.command("list")
|
|
130
|
+
.description("List source labels, optionally in one provider or account")
|
|
131
|
+
.option("--provider <provider>", "only this provider")
|
|
132
|
+
.option("--account <account>", "only this account; requires --provider")
|
|
133
|
+
.option("--tag <tag>", "only this tag", normalizeTag)
|
|
134
|
+
.option("--type <type>", "chat, message, contact, note, person, task, entity or folder", typeOf)
|
|
135
|
+
.option("--limit <n>", "most labels to show", positive, 100)
|
|
136
|
+
.option("--json", "print JSON")
|
|
137
|
+
.action(async (options) => {
|
|
138
|
+
const store = await openStore({ env });
|
|
139
|
+
try {
|
|
140
|
+
const answer = await listTags(store, options);
|
|
141
|
+
const owned = options.type === undefined || OWNED.includes(options.type)
|
|
142
|
+
? await store.knowledge.labelled(null, {
|
|
143
|
+
...(options.tag === undefined ? {} : { tag: options.tag }),
|
|
144
|
+
...(options.type === undefined ? {} : { type: options.type }),
|
|
145
|
+
limit: Math.min(options.limit, 500),
|
|
146
|
+
})
|
|
147
|
+
: { items: [], hasMore: false };
|
|
148
|
+
const knowledge = owned.items;
|
|
149
|
+
answer.hasMore ||= owned.hasMore;
|
|
150
|
+
const lines = answer.items.map((row) => `${row.tag} ${row.type} ${row.locator ?? reference(row, row.chatId ?? row.personId ?? "")}`);
|
|
151
|
+
if (answer.hasMore)
|
|
152
|
+
lines.push("More labels match; raise --limit to see them.");
|
|
153
|
+
answer.hasMore ||= knowledge.length > options.limit;
|
|
154
|
+
print(options.json, { ...answer, knowledge: knowledge.slice(0, options.limit) }, [
|
|
155
|
+
...lines,
|
|
156
|
+
...knowledge
|
|
157
|
+
.slice(0, options.limit)
|
|
158
|
+
.map((item) => `${item.labels.map(({ tag, origin }) => (origin === "file" ? `${tag} (file)` : tag)).join(", ")} ${item.target.type} ${JSON.stringify(item.target)}`),
|
|
159
|
+
].join("\n") || "No source tags.");
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
await store.close();
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/tags/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/tasks/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAI1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMxC,eAAO,MAAM,YAAY,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,SA+FtF,CAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { CliError, createRenderer } from "@wirecat/cli-core";
|
|
2
|
+
import { parseLocator } from "@wirecat/cli-messaging";
|
|
3
|
+
import { closedStateOf, storeOnlyDeps, taskStateOf, tasksService, taskTypeOf } from "@wirecat/cli-messaging/services";
|
|
4
|
+
import { openStore } from "@wirecat/cli-messaging/store";
|
|
5
|
+
import { APP } from "../app.js";
|
|
6
|
+
import { accountOptions, positive } from "../options.js";
|
|
7
|
+
import { selectAccount } from "../store/scope.js";
|
|
8
|
+
import { taskPage } from "./context.js";
|
|
9
|
+
export const tasksCommand = (program, streams, env) => {
|
|
10
|
+
const group = program.command("tasks").description("Open work linked to stored messages, documents and emails");
|
|
11
|
+
const print = (json, answer) => json
|
|
12
|
+
? createRenderer({ format: "json", color: false, streams }).result(answer)
|
|
13
|
+
: streams.data(`${JSON.stringify(answer, null, 2)}\n`);
|
|
14
|
+
accountOptions(group.command("add"))
|
|
15
|
+
.argument("<source>", "msg: source locator or note:<id>")
|
|
16
|
+
.option("--type <type>", "question, request, mention or promise", taskTypeOf, "request")
|
|
17
|
+
.action(async (source, options) => {
|
|
18
|
+
const store = await openStore({ env });
|
|
19
|
+
try {
|
|
20
|
+
const native = source.trim().startsWith("note:");
|
|
21
|
+
const parsed = native ? undefined : parseLocator(source);
|
|
22
|
+
if (parsed &&
|
|
23
|
+
((options.provider && options.provider !== parsed.provider) ||
|
|
24
|
+
(options.account && options.account !== parsed.account)))
|
|
25
|
+
throw new CliError("validation_error", "locator and selected account disagree");
|
|
26
|
+
const key = parsed
|
|
27
|
+
? { provider: parsed.provider, account: parsed.account }
|
|
28
|
+
: await selectAccount(store, options);
|
|
29
|
+
if (parsed &&
|
|
30
|
+
parsed.provider !== "notes" &&
|
|
31
|
+
(await store.message(key, parsed.message, { chatId: parsed.chat })) === undefined)
|
|
32
|
+
throw new CliError("not_found", "the task source is unavailable or deleted");
|
|
33
|
+
print(options.json, await tasksService(storeOnlyDeps(store, key, { app: APP, env })).add(source, options.type, "owner"));
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
await store.close();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
accountOptions(group.command("list"))
|
|
40
|
+
.option("--state <state>", "open, done or dismissed", taskStateOf, "open")
|
|
41
|
+
.option("--limit <n>", "most tasks", positive, 100)
|
|
42
|
+
.action(async (options) => {
|
|
43
|
+
const store = await openStore({ env });
|
|
44
|
+
try {
|
|
45
|
+
const key = await selectAccount(store, options);
|
|
46
|
+
print(options.json, await taskPage(store, key, {
|
|
47
|
+
state: options.state,
|
|
48
|
+
limit: options.limit,
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
await store.close();
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
accountOptions(group.command("close").argument("<id>"))
|
|
56
|
+
.option("--as <state>", "done or dismissed", closedStateOf, "done")
|
|
57
|
+
.option("--reason <text>", "why it is closed")
|
|
58
|
+
.action(async (id, options) => {
|
|
59
|
+
const store = await openStore({ env });
|
|
60
|
+
try {
|
|
61
|
+
const key = await selectAccount(store, options);
|
|
62
|
+
print(options.json, await tasksService(storeOnlyDeps(store, key, { app: APP, env })).close(id, {
|
|
63
|
+
as: options.as,
|
|
64
|
+
by: "owner",
|
|
65
|
+
...(options.reason === undefined ? {} : { reason: options.reason }),
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
await store.close();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
accountOptions(group.command("assign").argument("<id>").argument("<person>", "explicit canonical person UID")).action(async (id, person, options) => {
|
|
73
|
+
const store = await openStore({ env });
|
|
74
|
+
try {
|
|
75
|
+
const key = await selectAccount(store, options);
|
|
76
|
+
print(options.json, await store.knowledge.relate(key, { from: `task:${id}`, to: `person:${person}`, kind: "assigned-to" }));
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
await store.close();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/tasks/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,OAAgB,EAAE,GAAsB,EAAE,EAAE;IACzF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2DAA2D,CAAC,CAAA;IAC/G,MAAM,KAAK,GAAG,CAAC,IAAyB,EAAE,MAAe,EAAE,EAAE,CAC3D,IAAI;QACF,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1E,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1D,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACjC,QAAQ,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,uCAAuC,EAAE,UAAU,EAAE,SAAS,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA+E,EAAE,EAAE;QAChH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAChD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YACxD,IACE,MAAM;gBACN,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;oBACzD,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;gBAE1D,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;YACjF,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBACxD,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACvC,IACE,MAAM;gBACN,MAAM,CAAC,QAAQ,KAAK,OAAO;gBAC3B,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,SAAS;gBAEjF,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,2CAA2C,CAAC,CAAA;YAC9E,KAAK,CACH,OAAO,CAAC,IAAI,EACZ,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CACpG,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;IACJ,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAClC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,CAAC;SACzE,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC;SAClD,MAAM,CACL,KAAK,EAAE,OAAgG,EAAE,EAAE;QACzG,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC/C,KAAK,CACH,OAAO,CAAC,IAAI,EACZ,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBACzB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CACH,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CACF,CAAA;IACH,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;SAC7C,MAAM,CACL,KAAK,EACH,EAAU,EACV,OAAiG,EACjG,EAAE;QACF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC/C,KAAK,CACH,OAAO,CAAC,IAAI,EACZ,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;gBACzE,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,EAAE,EAAE,OAAO;gBACX,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;aACpE,CAAC,CACH,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CACF,CAAA;IACH,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC,CAAC,MAAM,CACnH,KAAK,EAAE,EAAU,EAAE,MAAc,EAAE,OAA0C,EAAE,EAAE;QAC/E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC/C,KAAK,CACH,OAAO,CAAC,IAAI,EACZ,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CACvG,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type TaskView } from "@wirecat/cli-messaging/services";
|
|
2
|
+
import type { AccountKey, MessageStore, PersonRecord } from "@wirecat/cli-messaging/store";
|
|
3
|
+
export declare const taskPage: (store: MessageStore, key: AccountKey, options?: {
|
|
4
|
+
state?: "open" | "done" | "dismissed";
|
|
5
|
+
limit?: number;
|
|
6
|
+
offset?: number;
|
|
7
|
+
sources?: string[];
|
|
8
|
+
}) => Promise<{
|
|
9
|
+
items: TaskView[];
|
|
10
|
+
hasMore: boolean;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const personTasks: (store: MessageStore, person: PersonRecord, accounts: AccountKey[], limit: number) => Promise<{
|
|
13
|
+
items: TaskView[];
|
|
14
|
+
hasMore: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tasks/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,iCAAiC,CAAA;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE1F,eAAO,MAAM,QAAQ,UACZ,YAAY,OACd,UAAU,YACN;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,KACtG,OAAO,CAAC;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CASjD,CAAA;AAED,eAAO,MAAM,WAAW,UACf,YAAY,UACX,YAAY,YACV,UAAU,EAAE,SACf,MAAM,KACZ,OAAO,CAAC;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAsDjD,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { parseLocator } from "@wirecat/cli-messaging";
|
|
2
|
+
import { taskView } from "@wirecat/cli-messaging/services";
|
|
3
|
+
export const taskPage = async (store, key, options = {}) => {
|
|
4
|
+
const page = await store.knowledge.taskIds(key, options);
|
|
5
|
+
const items = [];
|
|
6
|
+
for (const id of page.items) {
|
|
7
|
+
const task = await store.tasks.get(id);
|
|
8
|
+
if (!task)
|
|
9
|
+
continue;
|
|
10
|
+
items.push(await taskView(store, key, task));
|
|
11
|
+
}
|
|
12
|
+
return { items, hasMore: page.hasMore };
|
|
13
|
+
};
|
|
14
|
+
export const personTasks = async (store, person, accounts, limit) => {
|
|
15
|
+
const items = [];
|
|
16
|
+
let incomplete = false;
|
|
17
|
+
for (const key of accounts) {
|
|
18
|
+
const assigned = (await store.knowledge.relations(key, `person:${person.uid}`)).filter((relation) => relation.confirmed && relation.kind === "assigned-to" && relation.to === `person:${person.uid}`);
|
|
19
|
+
for (const relation of assigned) {
|
|
20
|
+
const task = await store.tasks.get(relation.from.slice("task:".length));
|
|
21
|
+
if (task?.state !== "open" || task.account !== `${key.provider}:${key.account}`)
|
|
22
|
+
continue;
|
|
23
|
+
items.push(await taskView(store, key, task));
|
|
24
|
+
}
|
|
25
|
+
const identities = person.identities.filter((identity) => identity.provider === key.provider && identity.accounts.includes(key.account));
|
|
26
|
+
const noteLinks = await store.notes.links({ to: `person:${person.uid}` });
|
|
27
|
+
const relatedNotes = new Set(noteLinks
|
|
28
|
+
.filter((link) => link.confirmed && link.kind === "about" && link.from.startsWith("note:"))
|
|
29
|
+
.map((link) => link.from));
|
|
30
|
+
const page = await taskPage(store, key, { state: "open", limit: 500 });
|
|
31
|
+
incomplete ||= page.hasMore;
|
|
32
|
+
for (const task of page.items) {
|
|
33
|
+
if (task.note && relatedNotes.has(`note:${task.note.id}`))
|
|
34
|
+
items.push(task);
|
|
35
|
+
}
|
|
36
|
+
if (!identities.length)
|
|
37
|
+
continue;
|
|
38
|
+
const ids = new Set(identities.map((identity) => identity.id));
|
|
39
|
+
const chats = (await store.chats(key, { limit: 500 })).items;
|
|
40
|
+
for (const task of page.items) {
|
|
41
|
+
let source;
|
|
42
|
+
try {
|
|
43
|
+
source = parseLocator(task.source);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (source.provider !== key.provider || source.account !== key.account)
|
|
49
|
+
continue;
|
|
50
|
+
const message = await store.message(key, source.message, { chatId: source.chat });
|
|
51
|
+
const chat = chats.find((item) => item.id === source.chat);
|
|
52
|
+
const direct = chat?.kind === "dialog" &&
|
|
53
|
+
(ids.has(source.chat) || (await store.members(key, source.chat)).some((member) => ids.has(member.id)));
|
|
54
|
+
if (!direct && (!message?.senderId || !ids.has(message.senderId)))
|
|
55
|
+
continue;
|
|
56
|
+
items.push({
|
|
57
|
+
...task,
|
|
58
|
+
message: message
|
|
59
|
+
? { text: message.text.slice(0, 200), senderName: message.senderName, timestamp: message.timestamp }
|
|
60
|
+
: null,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
items.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime() || a.id.localeCompare(b.id));
|
|
65
|
+
const unique = [...new Map(items.map((item) => [item.id, item])).values()];
|
|
66
|
+
return { items: unique.slice(0, limit), hasMore: unique.length > limit || incomplete };
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tasks/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecat/cli-memo",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
5
|
-
"license": "
|
|
3
|
+
"version": "0.5.1",
|
|
4
|
+
"description": "Context about people across messengers, notes and mail, from a local store",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": "Viacheslav Ptsarev",
|
|
6
7
|
"repository": {
|
|
7
8
|
"type": "git",
|
|
8
9
|
"url": "git+https://github.com/WireCatLabs/cli-memo.git"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"engines": {
|
|
13
|
+
"node": "^22.16.0 || >=24"
|
|
14
|
+
},
|
|
15
|
+
"packageManager": "pnpm@11.20.0",
|
|
16
|
+
"bin": {
|
|
17
|
+
"memo": "dist/bin/memo.js"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"README.md",
|
|
22
|
+
"LICENSE"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc --build",
|
|
26
|
+
"typecheck": "tsc --build --force --emitDeclarationOnly && tsc -p tsconfig.test.json",
|
|
27
|
+
"lint": "biome check .",
|
|
28
|
+
"lint:fix": "biome check --write .",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:watch": "vitest",
|
|
31
|
+
"test:coverage": "vitest run --coverage",
|
|
32
|
+
"release:check": "pnpm lint && pnpm typecheck && pnpm test && pnpm build && pnpm secrets:scan",
|
|
33
|
+
"prepare": "lefthook install || true",
|
|
34
|
+
"secrets:scan": "gitleaks git --no-banner --redact .",
|
|
35
|
+
"prepublishOnly": "pnpm build"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@wirecat/cli-core": "0.18.1",
|
|
39
|
+
"@wirecat/cli-messaging": "0.215.0",
|
|
40
|
+
"commander": "15.0.0",
|
|
41
|
+
"valibot": "1.5.0",
|
|
42
|
+
"yaml": "2.9.1"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@biomejs/biome": "^2.5.14",
|
|
46
|
+
"@types/node": "^22.20.4",
|
|
47
|
+
"@vitest/coverage-v8": "5.0.3",
|
|
48
|
+
"lefthook": "^2.1.14",
|
|
49
|
+
"typescript": "^7.0.2",
|
|
50
|
+
"vitest": "^5.0.2"
|
|
51
|
+
},
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"access": "public"
|
|
9
54
|
}
|
|
10
55
|
}
|