@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/tasks/command.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CliError
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { parseLocator } from "@wirecat/cli-messaging";
|
|
3
3
|
import { closedStateOf, storeOnlyDeps, taskStateOf, tasksService } from "@wirecat/cli-messaging/services";
|
|
4
4
|
import { openStore, TASK_ROLES, TASK_TYPES, WORK_TASK_TYPES, } from "@wirecat/cli-messaging/store";
|
|
@@ -6,6 +6,7 @@ import { InvalidArgumentError } from "commander";
|
|
|
6
6
|
import { APP } from "../app.js";
|
|
7
7
|
import { isNoteReference } from "../notes/about.js";
|
|
8
8
|
import { accountOptions, oneOf, positive } from "../options.js";
|
|
9
|
+
import { printing } from "../records/run.js";
|
|
9
10
|
import { heldMessage } from "../store/held.js";
|
|
10
11
|
import { selectAccount } from "../store/scope.js";
|
|
11
12
|
import { canonicalProject } from "../vocabulary/project.js";
|
|
@@ -34,13 +35,11 @@ const assignAll = async (store, id, people) => {
|
|
|
34
35
|
await store.tasks.assign(id, { to: personRef(person), role: "assignee" }, "owner");
|
|
35
36
|
};
|
|
36
37
|
export const tasksCommand = (program, streams, env) => {
|
|
37
|
-
const group = program.command("tasks").description("
|
|
38
|
+
const group = program.command("tasks").description("open work linked to stored messages, documents and emails");
|
|
38
39
|
taskRelationsCommand(group, streams, env);
|
|
39
|
-
const print = (
|
|
40
|
-
? createRenderer({ format: "json", color: false, streams }).result(answer)
|
|
41
|
-
: streams.data(`${JSON.stringify(answer, null, 2)}\n`);
|
|
40
|
+
const print = printing(streams);
|
|
42
41
|
fieldOptions(accountOptions(group.command("add")))
|
|
43
|
-
.description("
|
|
42
|
+
.description("add a task from a message, note or document, or one of your own in a project")
|
|
44
43
|
.argument("[source]", "msg: source locator, note:<id> or document:<id>; leave out for a task in a project")
|
|
45
44
|
.option("--type <type>", "question, request (default), mention or promise from a source; bug, feature or chore (default) in a project", oneOf(TASK_TYPES))
|
|
46
45
|
.option("--project <project>", "a task without a source: the project's key or project:<id>")
|
|
@@ -96,13 +95,23 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
96
95
|
await store.close();
|
|
97
96
|
}
|
|
98
97
|
});
|
|
99
|
-
accountOptions(group.command("list").description("
|
|
98
|
+
accountOptions(group.command("list").description("tasks of one account or one project, open by default"))
|
|
100
99
|
.option("--state <state>", "open, done or dismissed", taskStateOf, "open")
|
|
101
100
|
.option("--project <project>", "a project's tasks, by its key or project:<id>, instead of an account's")
|
|
101
|
+
.option("--ready", "with --project: only open tasks whose prerequisites are done; this claims none")
|
|
102
102
|
.option("--limit <n>", "most tasks", positive, 100)
|
|
103
103
|
.action(async (options) => {
|
|
104
|
+
if (options.ready && (options.project === undefined || options.state !== "open"))
|
|
105
|
+
throw new CliError("validation_error", "--ready lists a project's open tasks: give --project, not --state");
|
|
104
106
|
const store = await openStore({ env });
|
|
105
107
|
try {
|
|
108
|
+
if (options.ready && options.project !== undefined) {
|
|
109
|
+
const page = await store.tasks.readyTasks(await canonicalProject(store, options.project), {
|
|
110
|
+
limit: options.limit,
|
|
111
|
+
});
|
|
112
|
+
print(options.json, { ...page, items: page.items.map((task) => ({ ref: `task:${task.id}`, ...task })) });
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
106
115
|
if (options.project !== undefined) {
|
|
107
116
|
const items = await store.tasks.find({
|
|
108
117
|
project: await canonicalProject(store, options.project),
|
|
@@ -113,16 +122,14 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
113
122
|
return;
|
|
114
123
|
}
|
|
115
124
|
const key = await selectAccount(store, options);
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
limit: options.limit,
|
|
119
|
-
}));
|
|
125
|
+
const page = await taskPage(store, key, { state: options.state, limit: options.limit });
|
|
126
|
+
print(options.json, { ...page, items: page.items.map((task) => ({ ref: `task:${task.id}`, ...task })) });
|
|
120
127
|
}
|
|
121
128
|
finally {
|
|
122
129
|
await store.close();
|
|
123
130
|
}
|
|
124
131
|
});
|
|
125
|
-
accountOptions(group.command("close").description("
|
|
132
|
+
accountOptions(group.command("close").description("close a task as done or dismissed").argument("<id>", "the task's id"))
|
|
126
133
|
.option("--as <state>", "done or dismissed", closedStateOf, "done")
|
|
127
134
|
.option("--reason <text>", "why it is closed")
|
|
128
135
|
.action(async (id, options) => {
|
|
@@ -144,7 +151,7 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
144
151
|
await store.close();
|
|
145
152
|
}
|
|
146
153
|
});
|
|
147
|
-
fieldOptions(group.command("update").description("
|
|
154
|
+
fieldOptions(group.command("update").description("change a task's title, priority, parent or description"))
|
|
148
155
|
.argument("<id>", "the task's id or key")
|
|
149
156
|
.option("--json", "print JSON")
|
|
150
157
|
.action(async (id, options) => {
|
|
@@ -161,7 +168,7 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
161
168
|
});
|
|
162
169
|
group
|
|
163
170
|
.command("assign")
|
|
164
|
-
.description("
|
|
171
|
+
.description("name who works on a task")
|
|
165
172
|
.argument("<id>", "the task's id or key")
|
|
166
173
|
.argument("<person>", "explicit canonical person UID")
|
|
167
174
|
.option("--role <role>", TASK_ROLES.join(", "), oneOf(TASK_ROLES), "assignee")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/tasks/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/tasks/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Streams } from "@wirecat/cli-base";
|
|
2
2
|
import type { Command } from "commander";
|
|
3
3
|
export declare const taskRelationsCommand: (tasks: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
|
4
4
|
//# sourceMappingURL=relations-command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations-command.d.ts","sourceRoot":"","sources":["../../src/tasks/relations-command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"relations-command.d.ts","sourceRoot":"","sources":["../../src/tasks/relations-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,eAAO,MAAM,oBAAoB,UAAW,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,SAkC5F,CAAA"}
|
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { canonicalProject } from "../vocabulary/project.js";
|
|
1
|
+
import { TASK_RELATION_KINDS } from "@wirecat/cli-messaging/store";
|
|
2
|
+
import { oneOf } from "../options.js";
|
|
3
|
+
import { answering } from "../records/run.js";
|
|
5
4
|
export const taskRelationsCommand = (tasks, streams, env) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
try {
|
|
9
|
-
const result = await work(store);
|
|
10
|
-
if (options.json)
|
|
11
|
-
createRenderer({ format: "json", color: false, streams }).result(result);
|
|
12
|
-
else
|
|
13
|
-
streams.data(`${JSON.stringify(result, null, 2)}\n`);
|
|
14
|
-
}
|
|
15
|
-
finally {
|
|
16
|
-
await store.close();
|
|
17
|
-
}
|
|
18
|
-
};
|
|
5
|
+
const run = answering(streams, env);
|
|
6
|
+
const execute = (options, work) => run(options.json, work);
|
|
19
7
|
for (const operation of ["link", "unlink"]) {
|
|
20
8
|
tasks
|
|
21
9
|
.command(operation)
|
|
22
10
|
.description(`${operation} reviewed project task relationships`)
|
|
23
|
-
.argument("<task>")
|
|
24
|
-
.argument("<other-task>")
|
|
11
|
+
.argument("<task>", "the task: task:<id> or its id")
|
|
12
|
+
.argument("<other-task>", "the task it relates to: task:<id> or its id")
|
|
25
13
|
.requiredOption("--kind <kind>", TASK_RELATION_KINDS.join(", "), oneOf(TASK_RELATION_KINDS))
|
|
26
14
|
.option("--json", "print JSON")
|
|
27
15
|
.action((task, other, options) => execute(options, (store) => operation === "link"
|
|
@@ -30,24 +18,15 @@ export const taskRelationsCommand = (tasks, streams, env) => {
|
|
|
30
18
|
}
|
|
31
19
|
tasks
|
|
32
20
|
.command("relations")
|
|
33
|
-
.description("
|
|
34
|
-
.argument("<task>")
|
|
21
|
+
.description("a task's links to other tasks")
|
|
22
|
+
.argument("<task>", "the task: task:<id> or its id")
|
|
35
23
|
.option("--json", "print JSON")
|
|
36
24
|
.action((task, options) => execute(options, async (store) => ({ items: await store.tasks.taskRelations(task) })));
|
|
37
25
|
tasks
|
|
38
|
-
.command("
|
|
39
|
-
.description("
|
|
40
|
-
.argument("<task>")
|
|
26
|
+
.command("status")
|
|
27
|
+
.description("whether a task can start, and what it still waits for")
|
|
28
|
+
.argument("<task>", "the task: task:<id> or its id")
|
|
41
29
|
.option("--json", "print JSON")
|
|
42
30
|
.action((task, options) => execute(options, (store) => store.tasks.taskReadiness(task)));
|
|
43
|
-
tasks
|
|
44
|
-
.command("ready")
|
|
45
|
-
.description("Discover project work with completed prerequisites; this does not claim a task")
|
|
46
|
-
.requiredOption("--project <project>", "canonical project reference, key or explicit alias")
|
|
47
|
-
.option("--limit <n>", "tasks per page", positive)
|
|
48
|
-
.option("--json", "print JSON")
|
|
49
|
-
.action((options) => execute(options, async (store) => store.tasks.readyTasks(await canonicalProject(store, options.project), {
|
|
50
|
-
...(options.limit === undefined ? {} : { limit: options.limit }),
|
|
51
|
-
})));
|
|
52
31
|
};
|
|
53
32
|
//# sourceMappingURL=relations-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations-command.js","sourceRoot":"","sources":["../../src/tasks/relations-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relations-command.js","sourceRoot":"","sources":["../../src/tasks/relations-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,mBAAmB,EAAyB,MAAM,8BAA8B,CAAA;AAE5G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAE,OAAgB,EAAE,GAAsB,EAAE,EAAE;IAC/F,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,CAAC,OAA2B,EAAE,IAA+C,EAAE,EAAE,CAC/F,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACzB,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAU,EAAE,CAAC;QACpD,KAAK;aACF,OAAO,CAAC,SAAS,CAAC;aAClB,WAAW,CAAC,GAAG,SAAS,sCAAsC,CAAC;aAC/D,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;aACnD,QAAQ,CAAC,cAAc,EAAE,6CAA6C,CAAC;aACvE,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;aAC3F,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;aAC9B,MAAM,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,OAAmD,EAAE,EAAE,CAC3F,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACzB,SAAS,KAAK,MAAM;YAClB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;YAC1D,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAC/D,CACF,CAAA;IACL,CAAC;IACD,KAAK;SACF,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACnD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAY,EAAE,OAA2B,EAAE,EAAE,CACpD,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACtF,CAAA;IACH,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACnD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAY,EAAE,OAA2B,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACxH,CAAC,CAAA"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.24.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.
|
|
1
|
+
export const VERSION = "0.24.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/vocabulary/command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/vocabulary/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYxC,eAAO,MAAM,iBAAiB,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAwH9F,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CliError
|
|
2
|
-
import { openStore, } from "@wirecat/cli-messaging/store";
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
2
|
import { oneOf, positive } from "../options.js";
|
|
3
|
+
import { answering } from "../records/run.js";
|
|
4
4
|
const kinds = ["project", "tag", "topic"];
|
|
5
5
|
const targetOf = (reference) => {
|
|
6
6
|
const match = reference.match(/^(project|tag|topic):([1-9]\d*)$/);
|
|
@@ -11,20 +11,9 @@ const targetOf = (reference) => {
|
|
|
11
11
|
export const vocabularyCommand = (program, streams, env) => {
|
|
12
12
|
const vocabulary = program
|
|
13
13
|
.command("vocabulary")
|
|
14
|
-
.description("
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
try {
|
|
18
|
-
const result = await work(store);
|
|
19
|
-
if (options.json)
|
|
20
|
-
createRenderer({ format: "json", color: false, streams }).result(result);
|
|
21
|
-
else
|
|
22
|
-
streams.data(`${JSON.stringify(result, null, 2)}\n`);
|
|
23
|
-
}
|
|
24
|
-
finally {
|
|
25
|
-
await store.close();
|
|
26
|
-
}
|
|
27
|
-
};
|
|
14
|
+
.description("canonical projects, tags and topics with explicit aliases");
|
|
15
|
+
const run = answering(streams, env);
|
|
16
|
+
const execute = (options, work) => run(options.json, work);
|
|
28
17
|
const readOptions = (command) => command
|
|
29
18
|
.option("--kind <kind>", "project, tag or topic", oneOf(kinds))
|
|
30
19
|
.option("--scope <scope>", "personal or work projects", oneOf(["personal", "work"]))
|
|
@@ -37,46 +26,58 @@ export const vocabularyCommand = (program, streams, env) => {
|
|
|
37
26
|
...(options.maxEntries === undefined ? {} : { maxEntries: options.maxEntries }),
|
|
38
27
|
...(options.maxReadBytes === undefined ? {} : { maxReadBytes: options.maxReadBytes }),
|
|
39
28
|
});
|
|
40
|
-
readOptions(vocabulary.command("list").description("
|
|
29
|
+
readOptions(vocabulary.command("list").description("list canonical IDs, aliases, usage counts and a preview fingerprint")).action((options) => execute(options, (store) => store.knowledge.vocabulary(catalogOptions(options))));
|
|
41
30
|
readOptions(vocabulary
|
|
42
|
-
.command("
|
|
43
|
-
.argument("<name>")
|
|
44
|
-
.description("
|
|
45
|
-
readOptions(vocabulary
|
|
46
|
-
.
|
|
47
|
-
.
|
|
48
|
-
.
|
|
49
|
-
.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
31
|
+
.command("show")
|
|
32
|
+
.argument("<name>", "the name or alias to look up, exactly")
|
|
33
|
+
.description("the project, tag or topic an exact name or alias names; ambiguity is reported")).action((name, options) => execute(options, (store) => store.knowledge.resolveVocabulary(name, catalogOptions(options))));
|
|
34
|
+
readOptions(vocabulary
|
|
35
|
+
.command("check")
|
|
36
|
+
.argument("[name]", "a tag or topic you mean to create; without it, the whole vocabulary")
|
|
37
|
+
.summary("check a new name for existing labels, or the vocabulary for likely synonyms")
|
|
38
|
+
.description("check a new name for an existing label or likely duplicates before vocabulary create, or without a name " +
|
|
39
|
+
"the whole vocabulary for likely synonyms. It merges and creates nothing"))
|
|
40
|
+
.option("--min-similarity <n>", "without a name: minimum lexical similarity, 0.65–1", Number)
|
|
41
|
+
.option("--max-comparisons <n>", "without a name: most name comparisons", positive)
|
|
42
|
+
.option("--limit <n>", "without a name: most candidate pairs", positive)
|
|
43
|
+
.action((name, options) => execute(options, (store) => {
|
|
44
|
+
if (name === undefined)
|
|
45
|
+
return store.knowledge.auditVocabulary({
|
|
46
|
+
...catalogOptions(options),
|
|
47
|
+
...(options.minSimilarity === undefined ? {} : { minSimilarity: options.minSimilarity }),
|
|
48
|
+
...(options.maxComparisons === undefined ? {} : { maxComparisons: options.maxComparisons }),
|
|
49
|
+
...(options.limit === undefined ? {} : { limit: options.limit }),
|
|
50
|
+
});
|
|
51
|
+
if (options.kind === "project" || options.scope !== undefined)
|
|
52
|
+
throw new CliError("validation_error", "a new name is a tag or topic: --kind tag or --kind topic, no --scope");
|
|
53
|
+
if (options.minSimilarity !== undefined ||
|
|
54
|
+
options.maxComparisons !== undefined ||
|
|
55
|
+
options.limit !== undefined)
|
|
56
|
+
throw new CliError("validation_error", "--min-similarity, --max-comparisons and --limit check the whole vocabulary: leave out the name");
|
|
57
|
+
return store.knowledge.tagPreflight(name, {
|
|
58
|
+
...(options.kind === undefined ? {} : { kind: options.kind }),
|
|
59
|
+
...(options.maxEntries === undefined ? {} : { maxEntries: options.maxEntries }),
|
|
60
|
+
...(options.maxReadBytes === undefined ? {} : { maxReadBytes: options.maxReadBytes }),
|
|
61
|
+
});
|
|
62
|
+
}));
|
|
62
63
|
vocabulary
|
|
63
64
|
.command("create")
|
|
64
|
-
.argument("<name>")
|
|
65
|
-
.description("
|
|
65
|
+
.argument("<name>", "the new tag or topic")
|
|
66
|
+
.description("owner: create a distinct tag or topic after vocabulary check <name>")
|
|
66
67
|
.option("--kind <kind>", "tag or topic", oneOf(["tag", "topic"]))
|
|
67
|
-
.requiredOption("--expected <fingerprint>", "the
|
|
68
|
+
.requiredOption("--expected <fingerprint>", "the creationFingerprint vocabulary check <name> gave")
|
|
68
69
|
.option("--json", "print JSON")
|
|
69
70
|
.action((name, options) => execute(options, (store) => store.knowledge.createTag(name, {
|
|
70
71
|
by: "owner",
|
|
71
72
|
...(options.kind === undefined ? {} : { kind: options.kind }),
|
|
72
73
|
expectedCreationFingerprint: options.expected,
|
|
73
74
|
})));
|
|
74
|
-
const aliases = vocabulary.command("aliases").description("
|
|
75
|
+
const aliases = vocabulary.command("aliases").description("owner-reviewed aliases on stable canonical IDs");
|
|
75
76
|
aliases
|
|
76
77
|
.command("add")
|
|
77
|
-
.description("
|
|
78
|
-
.argument("<reference>")
|
|
79
|
-
.argument("<name>")
|
|
78
|
+
.description("owner: add another name for a project, tag or topic")
|
|
79
|
+
.argument("<reference>", "project:<id>, tag:<id> or topic:<id>, from vocabulary list")
|
|
80
|
+
.argument("<name>", "the other name")
|
|
80
81
|
.requiredOption("--expected <fingerprint>", "the current vocabulary preview fingerprint")
|
|
81
82
|
.option("--json", "print JSON")
|
|
82
83
|
.action((reference, name, options) => {
|
|
@@ -85,9 +86,9 @@ export const vocabularyCommand = (program, streams, env) => {
|
|
|
85
86
|
});
|
|
86
87
|
aliases
|
|
87
88
|
.command("remove")
|
|
88
|
-
.description("
|
|
89
|
-
.argument("<reference>")
|
|
90
|
-
.argument("<alias-id>")
|
|
89
|
+
.description("owner: remove another name from a project, tag or topic")
|
|
90
|
+
.argument("<reference>", "project:<id>, tag:<id> or topic:<id>, from vocabulary list")
|
|
91
|
+
.argument("<alias-id>", "the alias's id, from vocabulary list")
|
|
91
92
|
.requiredOption("--expected <fingerprint>", "the current vocabulary preview fingerprint")
|
|
92
93
|
.option("--json", "print JSON")
|
|
93
94
|
.action((reference, aliasId, options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/vocabulary/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/vocabulary/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
if (process.env.npm_config_global === "true") {
|
|
2
|
+
try {
|
|
3
|
+
const { completeGlobalInstall } = await import("../dist/install/postinstall.js")
|
|
4
|
+
completeGlobalInstall()
|
|
5
|
+
} catch (error) {
|
|
6
|
+
process.stderr.write(`memo installation incomplete: ${error instanceof Error ? error.message : String(error)}\n`)
|
|
7
|
+
process.exitCode = 1
|
|
8
|
+
}
|
|
9
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecat/cli-memo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Context about people across messengers, notes and mail, from a local store",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Viacheslav Ptsarev",
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
},
|
|
19
19
|
"files": [
|
|
20
20
|
"dist",
|
|
21
|
+
"skills",
|
|
22
|
+
"install",
|
|
21
23
|
"README.md",
|
|
22
24
|
"LICENSE"
|
|
23
25
|
],
|
|
@@ -29,8 +31,10 @@
|
|
|
29
31
|
"test": "vitest run",
|
|
30
32
|
"test:watch": "vitest",
|
|
31
33
|
"test:coverage": "vitest run --coverage",
|
|
32
|
-
"
|
|
34
|
+
"lint:commands": "cli-dev lint --cli dist/bin/memo.js",
|
|
35
|
+
"release:check": "pnpm lint && pnpm typecheck && pnpm test && pnpm build && pnpm lint:commands && pnpm secrets:scan",
|
|
33
36
|
"prepare": "lefthook install || true",
|
|
37
|
+
"postinstall": "node install/postinstall.mjs",
|
|
34
38
|
"secrets:scan": "gitleaks git --no-banner --redact .",
|
|
35
39
|
"prepublishOnly": "pnpm build",
|
|
36
40
|
"standards:check": "node config/wirecat/check.mjs",
|
|
@@ -43,8 +47,8 @@
|
|
|
43
47
|
"dependencies": {
|
|
44
48
|
"@modelcontextprotocol/server": "2.1.0",
|
|
45
49
|
"@valibot/to-json-schema": "1.8.0",
|
|
46
|
-
"@wirecat/cli-base": "0.
|
|
47
|
-
"@wirecat/cli-messaging": "0.
|
|
50
|
+
"@wirecat/cli-base": "0.24.0",
|
|
51
|
+
"@wirecat/cli-messaging": "0.258.0",
|
|
48
52
|
"commander": "15.0.0",
|
|
49
53
|
"valibot": "1.5.0",
|
|
50
54
|
"yaml": "2.9.1"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cli-memo
|
|
3
|
+
description: >-
|
|
4
|
+
Find what the owner knows about a person or a project across Telegram, MAX, mail and notes through memo, and record facts, memories and key documents. Use when asked about a person, a project, what was agreed, or to search messages, mail and notes together.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# memo — the owner's context across messengers, mail and notes
|
|
8
|
+
|
|
9
|
+
memo reads the local store tg and max write, plus the owner's notes and imported mail. It never sends
|
|
10
|
+
anything. Add `--json` and read the answer, not the text meant for people.
|
|
11
|
+
|
|
12
|
+
## Traps
|
|
13
|
+
|
|
14
|
+
1. **Never choose an account for the owner.** A command that works in one account takes `--provider`
|
|
15
|
+
and, when there are several, `--account`. Asked for one with none given, memo refuses and lists
|
|
16
|
+
them: ask the owner. A read across accounts covers all of them and says so.
|
|
17
|
+
2. **`content:` narrows a search to the text of files, `filename:` to their names.** Whether a plain word
|
|
18
|
+
also reads file text and voice transcripts depends on the version. Compare like with like:
|
|
19
|
+
`memo search messages 'content:invoice'` with `tg search messages 'content:invoice'`, a plain word
|
|
20
|
+
with a plain word.
|
|
21
|
+
3. **Each search keeps its list and references under its own keys.** `search messages` and
|
|
22
|
+
`search mail`: `items[].locator`; `search all`: `items[].ref` with `kind`; `search notes`:
|
|
23
|
+
`hits[].ref`. Pass a reference back unchanged.
|
|
24
|
+
4. **Start work on a project with `memo projects context <key>`.** Its key documents come first:
|
|
25
|
+
read them before anything else. Mark one with
|
|
26
|
+
`memo projects key-documents add <key> <reference> --reason '<why>'`.
|
|
27
|
+
5. **What you write is yours as an agent.** `memo facts add`, `memo memories add`,
|
|
28
|
+
`memo relationships add`, `memo actions add` and `memo projects key-documents add` record you
|
|
29
|
+
as the author and wait for the owner. Never pass `--as-owner`: only the owner does, and an agent
|
|
30
|
+
that passes it writes as the owner.
|
|
31
|
+
6. **Do not confirm your own proposals** (`memo facts confirm`, `memo memories confirm`,
|
|
32
|
+
`memo relationships confirm`). The owner decides.
|
|
33
|
+
7. **Never write message, mail or note text to a file.** Quote it in the answer with its reference.
|
|
34
|
+
8. **Before reporting a bug, compare `memo --version` with `npm view @wirecat/cli-memo version`.** An
|
|
35
|
+
older install may lack the fix.
|
|
36
|
+
9. **zsh does not split `$c` into words.** `memo $c --help` with `c="projects add"` passes one
|
|
37
|
+
argument, not a command path; write `${=c}` or loop over the words.
|
|
38
|
+
|
|
39
|
+
## The usual path
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
memo context telegram:<id or name> --json # one person: messages, mail, notes, tasks
|
|
43
|
+
memo projects context <key> --json # one project: key documents first
|
|
44
|
+
memo search all '<words>' --project <key> --json # everything, the project's key documents first
|
|
45
|
+
memo search messages 'content:invoice' --json # inside files
|
|
46
|
+
memo commands --json # every command and option
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Cite each result by its reference (`msg:…`, `note:…`, `document:…`) so the owner can open it.
|
package/dist/mail/command.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAI1E,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,WAAW,CAAA;AA0C9D,eAAO,MAAM,WAAW,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IA0FxF,CAAA"}
|