@wirecat/cli-memo 0.31.0 → 0.32.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/dist/actions/command.d.ts.map +1 -1
- package/dist/actions/command.js +7 -7
- package/dist/actions/command.js.map +1 -1
- package/dist/agents/command.js +3 -3
- package/dist/agents/command.js.map +1 -1
- package/dist/answer.d.ts +23 -0
- package/dist/answer.d.ts.map +1 -0
- package/dist/answer.js +56 -0
- package/dist/answer.js.map +1 -0
- package/dist/answers/command.d.ts.map +1 -1
- package/dist/answers/command.js +6 -14
- package/dist/answers/command.js.map +1 -1
- package/dist/bin/memo.js +8 -2
- package/dist/bin/memo.js.map +1 -1
- package/dist/context/command.d.ts +1 -1
- package/dist/context/command.d.ts.map +1 -1
- package/dist/context/command.js +6 -15
- package/dist/context/command.js.map +1 -1
- package/dist/doctor/command.d.ts +2 -1
- package/dist/doctor/command.d.ts.map +1 -1
- package/dist/doctor/command.js +10 -12
- package/dist/doctor/command.js.map +1 -1
- package/dist/effects.d.ts +6 -1
- package/dist/effects.d.ts.map +1 -1
- package/dist/effects.js +24 -9
- package/dist/effects.js.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +5 -3
- package/dist/examples.js.map +1 -1
- package/dist/facts/command.d.ts.map +1 -1
- package/dist/facts/command.js +14 -22
- package/dist/facts/command.js.map +1 -1
- package/dist/facts/fact.d.ts +36 -0
- package/dist/facts/fact.d.ts.map +1 -0
- package/dist/facts/fact.js +47 -0
- package/dist/facts/fact.js.map +1 -0
- package/dist/failure.d.ts +5 -7
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +8 -27
- package/dist/failure.js.map +1 -1
- package/dist/knowledge/command.d.ts.map +1 -1
- package/dist/knowledge/command.js +32 -29
- package/dist/knowledge/command.js.map +1 -1
- package/dist/knowledge/meeting-projects-command.d.ts.map +1 -1
- package/dist/knowledge/meeting-projects-command.js +22 -12
- package/dist/knowledge/meeting-projects-command.js.map +1 -1
- package/dist/list-query.d.ts +18 -0
- package/dist/list-query.d.ts.map +1 -0
- package/dist/list-query.js +68 -0
- package/dist/list-query.js.map +1 -0
- package/dist/mail/apply.d.ts.map +1 -1
- package/dist/mail/apply.js +1 -0
- package/dist/mail/apply.js.map +1 -1
- package/dist/mail/command.d.ts.map +1 -1
- package/dist/mail/command.js +103 -97
- package/dist/mail/command.js.map +1 -1
- package/dist/mail/import.d.ts.map +1 -1
- package/dist/mail/import.js +2 -0
- package/dist/mail/import.js.map +1 -1
- package/dist/mail/messages-command.d.ts.map +1 -1
- package/dist/mail/messages-command.js +7 -14
- package/dist/mail/messages-command.js.map +1 -1
- package/dist/mail/rule-store.d.ts +33 -0
- package/dist/mail/rule-store.d.ts.map +1 -0
- package/dist/mail/rule-store.js +129 -0
- package/dist/mail/rule-store.js.map +1 -0
- package/dist/mail/rules.d.ts +4 -0
- package/dist/mail/rules.d.ts.map +1 -1
- package/dist/mail/rules.js.map +1 -1
- package/dist/mcp/knowledge.d.ts.map +1 -1
- package/dist/mcp/knowledge.js +15 -9
- package/dist/mcp/knowledge.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +30 -36
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/task-relations.d.ts.map +1 -1
- package/dist/mcp/task-relations.js +9 -7
- package/dist/mcp/task-relations.js.map +1 -1
- package/dist/mcp/tool.d.ts +3 -2
- package/dist/mcp/tool.d.ts.map +1 -1
- package/dist/mcp/tool.js.map +1 -1
- package/dist/mcp/vocabulary.d.ts.map +1 -1
- package/dist/mcp/vocabulary.js +7 -6
- package/dist/mcp/vocabulary.js.map +1 -1
- package/dist/memories/command.d.ts.map +1 -1
- package/dist/memories/command.js +15 -19
- package/dist/memories/command.js.map +1 -1
- package/dist/memories/memory.d.ts +31 -0
- package/dist/memories/memory.d.ts.map +1 -0
- package/dist/memories/memory.js +43 -0
- package/dist/memories/memory.js.map +1 -0
- package/dist/notes/command.d.ts.map +1 -1
- package/dist/notes/command.js +39 -30
- package/dist/notes/command.js.map +1 -1
- package/dist/notes/embed.d.ts +2 -0
- package/dist/notes/embed.d.ts.map +1 -1
- package/dist/notes/embed.js +8 -0
- package/dist/notes/embed.js.map +1 -1
- package/dist/notes/folders-command.d.ts.map +1 -1
- package/dist/notes/folders-command.js +19 -28
- package/dist/notes/folders-command.js.map +1 -1
- package/dist/notes/search.d.ts.map +1 -1
- package/dist/notes/search.js +2 -8
- package/dist/notes/search.js.map +1 -1
- package/dist/output.d.ts +7 -14
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +10 -45
- package/dist/output.js.map +1 -1
- package/dist/page.d.ts +2 -5
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +7 -2
- package/dist/page.js.map +1 -1
- package/dist/people/command.d.ts.map +1 -1
- package/dist/people/command.js +3 -7
- package/dist/people/command.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +6 -0
- package/dist/reasons.js.map +1 -1
- package/dist/run/auto.d.ts.map +1 -1
- package/dist/run/auto.js +10 -14
- package/dist/run/auto.js.map +1 -1
- package/dist/run/import.d.ts.map +1 -1
- package/dist/run/import.js +12 -14
- package/dist/run/import.js.map +1 -1
- package/dist/search/answers.d.ts +11 -56
- package/dist/search/answers.d.ts.map +1 -1
- package/dist/search/answers.js +43 -34
- package/dist/search/answers.js.map +1 -1
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +28 -38
- package/dist/search/command.js.map +1 -1
- package/dist/search/hits.d.ts +8 -0
- package/dist/search/hits.d.ts.map +1 -0
- package/dist/search/hits.js +68 -0
- package/dist/search/hits.js.map +1 -0
- package/dist/tags/command.d.ts.map +1 -1
- package/dist/tags/command.js +17 -33
- package/dist/tags/command.js.map +1 -1
- package/dist/tasks/command.d.ts.map +1 -1
- package/dist/tasks/command.js +29 -44
- package/dist/tasks/command.js.map +1 -1
- package/dist/tasks/relations-command.js +4 -4
- package/dist/tasks/relations-command.js.map +1 -1
- package/dist/terminal.d.ts +4 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +8 -0
- package/dist/terminal.js.map +1 -0
- 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 +3 -3
- package/dist/vocabulary/command.js.map +1 -1
- package/package.json +1 -1
- package/skills/cli-memo/SKILL.md +7 -3
- package/dist/records/run.d.ts +0 -7
- package/dist/records/run.d.ts.map +0 -1
- package/dist/records/run.js +0 -24
- package/dist/records/run.js.map +0 -1
package/dist/effects.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
2
|
+
import { FETCH, LOCAL_READ, LOCAL_WRITE, NO_EFFECTS, REMOTE_READ } from "@wirecat/cli-core/cli";
|
|
2
3
|
import { leaves } from "./examples.js";
|
|
3
|
-
// cli-core's FETCH, LOCAL_READ… spelled out: importing its CLI module would cost every memo command ~70 ms.
|
|
4
|
-
const REMOTE_READ = { remote: "read", local: "read" };
|
|
5
|
-
const FETCH = { remote: "read", local: "write" };
|
|
6
|
-
const LOCAL_READ = { remote: "none", local: "read" };
|
|
7
|
-
const LOCAL_WRITE = { remote: "none", local: "write" };
|
|
8
|
-
const NO_EFFECTS = { remote: "none", local: "none" };
|
|
9
4
|
// memo's remote side is the mail server and a configured model; it only ever reads there. Notes folders and the
|
|
10
5
|
// store are this machine. A command missing here counts as a write: never retried, never run as an unasked step.
|
|
11
6
|
export const EFFECTS = {
|
|
@@ -26,6 +21,8 @@ export const EFFECTS = {
|
|
|
26
21
|
"mail rules add": LOCAL_WRITE,
|
|
27
22
|
"mail rules remove": LOCAL_WRITE,
|
|
28
23
|
"mail rules apply": LOCAL_WRITE,
|
|
24
|
+
"mail rules export": LOCAL_READ,
|
|
25
|
+
"mail rules import": LOCAL_WRITE,
|
|
29
26
|
note: LOCAL_WRITE,
|
|
30
27
|
"tags add": LOCAL_WRITE,
|
|
31
28
|
"tags remove": LOCAL_WRITE,
|
|
@@ -100,12 +97,30 @@ export const EFFECTS = {
|
|
|
100
97
|
"skill show": NO_EFFECTS,
|
|
101
98
|
"skill install": LOCAL_WRITE,
|
|
102
99
|
};
|
|
103
|
-
/**
|
|
100
|
+
/** The cli-core entity each answer's items are, so `--json=<field>` is checked and the CLIs compare. */
|
|
101
|
+
export const OUTPUTS = {
|
|
102
|
+
"search all": { entity: "hit" },
|
|
103
|
+
"search messages": { entity: "message", view: "hit" },
|
|
104
|
+
"search mail": { entity: "message", view: "hit" },
|
|
105
|
+
"search notes": { entity: "note", view: "hit" },
|
|
106
|
+
"search memories": { entity: "memory" },
|
|
107
|
+
"facts add": { entity: "fact" },
|
|
108
|
+
"facts show": { entity: "fact" },
|
|
109
|
+
"facts confirm": { entity: "fact" },
|
|
110
|
+
"facts reverse": { entity: "fact" },
|
|
111
|
+
"memories add": { entity: "memory" },
|
|
112
|
+
"memories show": { entity: "memory" },
|
|
113
|
+
"memories confirm": { entity: "memory" },
|
|
114
|
+
"memories stale": { entity: "memory" },
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Puts each leaf's effects and answer in `commands --json`, where retries, steps and MCP hints are judged from them.
|
|
118
|
+
*/
|
|
104
119
|
export const addEffects = (program) => {
|
|
105
120
|
for (const [path, command] of leaves(program)) {
|
|
106
121
|
const effects = EFFECTS[path];
|
|
107
|
-
|
|
108
|
-
|
|
122
|
+
const output = OUTPUTS[path];
|
|
123
|
+
annotate(command, { ...(effects ? { effects } : {}), ...(output ? { output } : {}) });
|
|
109
124
|
}
|
|
110
125
|
};
|
|
111
126
|
//# sourceMappingURL=effects.js.map
|
package/dist/effects.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../src/effects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../src/effects.ts"],"names":[],"mappings":"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"}
|
package/dist/examples.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA6HhE,CAAA;AAED,eAAO,MAAM,MAAM,YAAa,OAAO,SAAQ,MAAM,EAAE,KAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAI5E,CAAA;AAEJ,qFAAqF;AACrF,eAAO,MAAM,WAAW,YAAa,OAAO,KAAG,IAO9C,CAAA"}
|
package/dist/examples.js
CHANGED
|
@@ -28,6 +28,8 @@ export const EXAMPLES = {
|
|
|
28
28
|
],
|
|
29
29
|
"mail rules remove": ["memo mail rules remove personal --domain news.example"],
|
|
30
30
|
"mail rules apply": ["memo mail rules apply personal", "memo mail rules apply personal --yes --json"],
|
|
31
|
+
"mail rules export": ["memo mail rules export personal"],
|
|
32
|
+
"mail rules import": ["memo mail rules import personal rules.json"],
|
|
31
33
|
note: ["memo note telegram:'Kai Sample' People/Kai.md", "memo note telegram:'Kai Sample' --clear"],
|
|
32
34
|
"tags add": ["memo tags add follow-up --note note:12", "memo tags add harbour --project HRB"],
|
|
33
35
|
"tags remove": ["memo tags remove follow-up --note note:12"],
|
|
@@ -80,14 +82,14 @@ export const EXAMPLES = {
|
|
|
80
82
|
"vocabulary aliases add": ["memo vocabulary aliases add project:2 Harbor --expected 3f9a"],
|
|
81
83
|
"vocabulary aliases remove": ["memo vocabulary aliases remove project:2 5 --expected 3f9a"],
|
|
82
84
|
"memories add": ["memo memories add 'Kai prefers Friday meetings' --kind preference --scope work --evidence note:12"],
|
|
83
|
-
"memories list": ["memo memories list
|
|
85
|
+
"memories list": ["memo memories list status:proposed kind:preference"],
|
|
84
86
|
"memories show": ["memo memories show memory:4"],
|
|
85
87
|
"memories confirm": ["memo memories confirm memory:4"],
|
|
86
88
|
"memories stale": ["memo memories stale memory:4"],
|
|
87
89
|
"facts add": [
|
|
88
|
-
"memo facts add 'We moved the launch to spring' --
|
|
90
|
+
"memo facts add 'We moved the launch to spring' --kind decision --evidence 'msg:telegram/1/77/42' --project HRB",
|
|
89
91
|
],
|
|
90
|
-
"facts list": ["memo facts list
|
|
92
|
+
"facts list": ["memo facts list kind:decision project:HRB"],
|
|
91
93
|
"facts show": ["memo facts show fact:4"],
|
|
92
94
|
"facts confirm": ["memo facts confirm fact:4"],
|
|
93
95
|
"facts reverse": ["memo facts reverse fact:4"],
|
package/dist/examples.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/facts/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/facts/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBxC,eAAO,MAAM,YAAY,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAmEzF,CAAA"}
|
package/dist/facts/command.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FACT_TYPES, MEMORY_SCOPES } from "@wirecat/cli-core/store";
|
|
2
|
+
import { answers, itemAnswer } from "../answer.js";
|
|
2
3
|
import { authorOf, byOption } from "../author.js";
|
|
4
|
+
import { withQuery } from "../list-query.js";
|
|
3
5
|
import { oneOf, positive } from "../options.js";
|
|
4
|
-
import { pageOf } from "../page.js";
|
|
5
|
-
import { answering } from "../records/run.js";
|
|
6
6
|
import { canonicalProject } from "../vocabulary/project.js";
|
|
7
|
+
import { FACT_QUERY, factItem, listFacts } from "./fact.js";
|
|
7
8
|
export const factsCommand = (program, streams, env) => {
|
|
8
|
-
const run =
|
|
9
|
+
const { run } = answers(program, streams, env);
|
|
9
10
|
const facts = program.command("facts").description("what happened — said, asked, decided, promised — with evidence");
|
|
10
11
|
byOption(facts.command("add").description("record a fact; an agent's waits as proposed until you confirm it"))
|
|
11
12
|
.argument("<statement...>", "what happened, in one sentence")
|
|
12
|
-
.requiredOption("--
|
|
13
|
+
.requiredOption("--kind <kind>", FACT_TYPES.join(", "), oneOf(FACT_TYPES))
|
|
13
14
|
.option("--evidence <ref...>", "what shows it: msg:, note:, meeting:, person: or another reference")
|
|
14
15
|
.option("--project <project>", "the project it belongs to: its key or project:<id>")
|
|
15
16
|
.option("--subject <ref>", "what it is about, as a reference")
|
|
@@ -17,8 +18,8 @@ export const factsCommand = (program, streams, env) => {
|
|
|
17
18
|
.option("--scope <scope>", MEMORY_SCOPES.join(" or "), oneOf(MEMORY_SCOPES))
|
|
18
19
|
.option("--supersedes <ref>", "a decision only: the decision this one replaces")
|
|
19
20
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
20
|
-
.action((words, options) => run(options.json, async (store) => store.facts.add({
|
|
21
|
-
type: options.
|
|
21
|
+
.action((words, options) => run(options.json, async (store) => itemAnswer(factItem(await store.facts.add({
|
|
22
|
+
type: options.kind,
|
|
22
23
|
statement: words.join(" "),
|
|
23
24
|
by: authorOf(env, options.asOwner),
|
|
24
25
|
...(options.evidence === undefined ? {} : { evidence: options.evidence }),
|
|
@@ -27,37 +28,28 @@ export const factsCommand = (program, streams, env) => {
|
|
|
27
28
|
...(options.occurred === undefined ? {} : { occurredAt: options.occurred }),
|
|
28
29
|
...(options.scope === undefined ? {} : { scope: options.scope }),
|
|
29
30
|
...(options.supersedes === undefined ? {} : { supersedes: options.supersedes }),
|
|
30
|
-
})));
|
|
31
|
-
facts
|
|
32
|
-
.command("list")
|
|
33
|
-
.description("facts, latest first")
|
|
34
|
-
.option("--type <type>", FACT_TYPES.join(", "), oneOf(FACT_TYPES))
|
|
35
|
-
.option("--status <status>", FACT_STATUSES.join(", "), oneOf(FACT_STATUSES))
|
|
36
|
-
.option("--project <project>", "only this project's: its key or project:<id>")
|
|
37
|
-
.option("--subject <ref>", "only facts about this reference")
|
|
31
|
+
})))));
|
|
32
|
+
withQuery(facts.command("list").description("facts, latest first"), FACT_QUERY)
|
|
38
33
|
.option("--limit <n>", "most facts, up to 500", positive, 100)
|
|
39
34
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
40
|
-
.action(({ json,
|
|
41
|
-
const project = filters.project === undefined ? undefined : await canonicalProject(store, filters.project);
|
|
42
|
-
return pageOf(filters.limit, (limit) => store.facts.list({ ...filters, ...(project === undefined ? {} : { project }), limit }));
|
|
43
|
-
}));
|
|
35
|
+
.action((words, { json, limit }) => run(json, (store) => listFacts(store, words, limit)));
|
|
44
36
|
facts
|
|
45
37
|
.command("show")
|
|
46
38
|
.description("one fact with its evidence")
|
|
47
39
|
.argument("<ref>", "fact:<id>")
|
|
48
40
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
49
|
-
.action((ref, options) => run(options.json, (store) => store.facts.get(ref)));
|
|
41
|
+
.action((ref, options) => run(options.json, async (store) => itemAnswer(factItem(await store.facts.get(ref)))));
|
|
50
42
|
facts
|
|
51
43
|
.command("confirm")
|
|
52
44
|
.description("stand behind a fact an agent proposed; a decision it supersedes stops holding")
|
|
53
45
|
.argument("<ref>", "fact:<id>")
|
|
54
46
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
55
|
-
.action((ref, options) => run(options.json, (store) => store.facts.accept(ref)));
|
|
47
|
+
.action((ref, options) => run(options.json, async (store) => itemAnswer(factItem(await store.facts.accept(ref)))));
|
|
56
48
|
facts
|
|
57
49
|
.command("reverse")
|
|
58
50
|
.description("an accepted decision no longer holds, and nothing replaced it")
|
|
59
51
|
.argument("<ref>", "fact:<id>")
|
|
60
52
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
61
|
-
.action((ref, options) => run(options.json, (store) => store.facts.reverse(ref)));
|
|
53
|
+
.action((ref, options) => run(options.json, async (store) => itemAnswer(factItem(await store.facts.reverse(ref)))));
|
|
62
54
|
};
|
|
63
55
|
//# sourceMappingURL=command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/facts/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/facts/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type Fact, type MessageStore } from "@wirecat/cli-core/store";
|
|
2
|
+
export declare const FACT_QUERY: {
|
|
3
|
+
readonly entity: "fact";
|
|
4
|
+
readonly backend: "native";
|
|
5
|
+
readonly fields: readonly [import("@wirecat/cli-base/query").FieldSpec, import("@wirecat/cli-base/query").FieldSpec, import("@wirecat/cli-base/query").FieldSpec, import("@wirecat/cli-base/query").FieldSpec];
|
|
6
|
+
};
|
|
7
|
+
/** A fact under cli-core's `fact` entity names; `confirmed_by` is memo's own beyond it. */
|
|
8
|
+
export declare const factItem: ({ type, statement, source, confirmedBy, ...fact }: Fact) => {
|
|
9
|
+
ref: string;
|
|
10
|
+
id: string;
|
|
11
|
+
kind: "decision" | "fact" | "promise" | "question" | "statement";
|
|
12
|
+
text: string;
|
|
13
|
+
status: "accepted" | "proposed" | "reversed" | "superseded";
|
|
14
|
+
project: string | null;
|
|
15
|
+
subject: string | null;
|
|
16
|
+
occurredAt: string | null;
|
|
17
|
+
supersedes: string | null;
|
|
18
|
+
author: {
|
|
19
|
+
type: "bot" | "person";
|
|
20
|
+
id: string;
|
|
21
|
+
name: string | null;
|
|
22
|
+
};
|
|
23
|
+
model: string | null;
|
|
24
|
+
scope: "personal" | "work" | null;
|
|
25
|
+
origin: string;
|
|
26
|
+
evidence: string[];
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
confirmedBy: {
|
|
30
|
+
type: "bot" | "person";
|
|
31
|
+
id: string;
|
|
32
|
+
} | null;
|
|
33
|
+
};
|
|
34
|
+
/** Facts the store filters by the query's terms; CLI and MCP list through it. */
|
|
35
|
+
export declare const listFacts: (store: MessageStore, query: readonly string[] | string | undefined, limit?: number) => Promise<import("@wirecat/cli-core/cli").ListBody<unknown>>;
|
|
36
|
+
//# sourceMappingURL=fact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fact.d.ts","sourceRoot":"","sources":["../../src/facts/fact.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,IAAI,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAKjG,eAAO,MAAM,UAAU;qBACb,MAAM;sBACL,QAAQ;;CAOe,CAAA;AAElC,2FAA2F;AAC3F,eAAO,MAAM,QAAQ,sDAAuD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;CAkB9E,CAAA;AAEF,iFAAiF;AACjF,eAAO,MAAM,SAAS,UAAiB,YAAY,SAAS,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,UAAU,MAAM,+DAYjH,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { FACT_STATUSES, FACT_TYPES } from "@wirecat/cli-core/store";
|
|
2
|
+
import { queryField, queryTerms } from "../list-query.js";
|
|
3
|
+
import { pageOf } from "../page.js";
|
|
4
|
+
import { canonicalProject } from "../vocabulary/project.js";
|
|
5
|
+
export const FACT_QUERY = {
|
|
6
|
+
entity: "fact",
|
|
7
|
+
backend: "native",
|
|
8
|
+
fields: [
|
|
9
|
+
queryField("kind", "enum", "kind:decision", FACT_TYPES),
|
|
10
|
+
queryField("status", "enum", "status:proposed", FACT_STATUSES),
|
|
11
|
+
queryField("project", "kw", "project:SYH"),
|
|
12
|
+
queryField("subject", "ref", 'subject:"person:42"'),
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
/** A fact under cli-core's `fact` entity names; `confirmed_by` is memo's own beyond it. */
|
|
16
|
+
export const factItem = ({ type, statement, source, confirmedBy, ...fact }) => ({
|
|
17
|
+
ref: fact.ref,
|
|
18
|
+
id: fact.id,
|
|
19
|
+
kind: type,
|
|
20
|
+
text: statement,
|
|
21
|
+
status: fact.status,
|
|
22
|
+
project: fact.project,
|
|
23
|
+
subject: fact.subject,
|
|
24
|
+
occurredAt: fact.occurredAt,
|
|
25
|
+
supersedes: fact.supersedes,
|
|
26
|
+
author: fact.author,
|
|
27
|
+
model: fact.model,
|
|
28
|
+
scope: fact.scope,
|
|
29
|
+
origin: source,
|
|
30
|
+
evidence: fact.evidence,
|
|
31
|
+
createdAt: fact.createdAt,
|
|
32
|
+
updatedAt: fact.updatedAt,
|
|
33
|
+
confirmedBy,
|
|
34
|
+
});
|
|
35
|
+
/** Facts the store filters by the query's terms; CLI and MCP list through it. */
|
|
36
|
+
export const listFacts = async (store, query, limit) => {
|
|
37
|
+
const terms = queryTerms(query, FACT_QUERY, "facts list");
|
|
38
|
+
const project = terms.get("project");
|
|
39
|
+
const filters = {
|
|
40
|
+
...(terms.has("kind") ? { type: terms.get("kind") } : {}),
|
|
41
|
+
...(terms.has("status") ? { status: terms.get("status") } : {}),
|
|
42
|
+
...(project === undefined ? {} : { project: await canonicalProject(store, project) }),
|
|
43
|
+
...(terms.has("subject") ? { subject: terms.get("subject") } : {}),
|
|
44
|
+
};
|
|
45
|
+
return pageOf("facts list", limit, async (most) => (await store.facts.list({ ...filters, limit: most })).map(factItem));
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=fact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fact.js","sourceRoot":"","sources":["../../src/facts/fact.ts"],"names":[],"mappings":"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"}
|
package/dist/failure.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Streams } from "@wirecat/cli-base";
|
|
2
2
|
import { type Command } from "commander";
|
|
3
|
-
export declare const errorObject: (error: unknown) =>
|
|
3
|
+
export declare const errorObject: (error: unknown) => {
|
|
4
4
|
error: {
|
|
5
5
|
code: "authentication_error" | "cancelled" | "configuration_error" | "confirmation_required" | "internal_error" | "invalid_response" | "network_error" | "not_found" | "outcome_unknown" | "permission_error" | "provider_error" | "provider_unavailable" | "rate_limited" | "timeout" | "validation_error";
|
|
6
6
|
reason: string;
|
|
@@ -30,9 +30,9 @@ export declare const errorObject: (error: unknown) => Promise<{
|
|
|
30
30
|
};
|
|
31
31
|
run_id?: string | undefined;
|
|
32
32
|
};
|
|
33
|
-
}
|
|
33
|
+
};
|
|
34
34
|
/** The same object as `--json` prints on stderr, as MCP's `isError` answer. */
|
|
35
|
-
export declare const mcpFailure: (error: unknown) =>
|
|
35
|
+
export declare const mcpFailure: (error: unknown) => {
|
|
36
36
|
content: {
|
|
37
37
|
type: "text";
|
|
38
38
|
text: string;
|
|
@@ -69,9 +69,7 @@ export declare const mcpFailure: (error: unknown) => Promise<{
|
|
|
69
69
|
};
|
|
70
70
|
};
|
|
71
71
|
isError: true;
|
|
72
|
-
}
|
|
73
|
-
/** A person at a terminal who did not ask for machine output. */
|
|
74
|
-
export declare const interactiveOf: (args: readonly string[], tty: boolean) => boolean;
|
|
72
|
+
};
|
|
75
73
|
/** Parse failures reach the handler as `CommanderError` instead of Commander's own text and exit. */
|
|
76
74
|
export declare const throwParseFailures: (program: Command) => void;
|
|
77
75
|
export interface ReportOptions {
|
|
@@ -83,5 +81,5 @@ export interface ReportOptions {
|
|
|
83
81
|
tty: boolean;
|
|
84
82
|
}
|
|
85
83
|
/** One error object on stderr, `✗ message` at a terminal; returns the exit code. */
|
|
86
|
-
export declare const reportFailure: (error: unknown, { args, program, streams, tty }: ReportOptions) =>
|
|
84
|
+
export declare const reportFailure: (error: unknown, { args, program, streams, tty }: ReportOptions) => number;
|
|
87
85
|
//# sourceMappingURL=failure.d.ts.map
|
package/dist/failure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,OAAO,EACb,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,OAAO,EACb,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,KAAK,OAAO,EAAkB,MAAM,WAAW,CAAA;AAsBxD,eAAO,MAAM,WAAW,UAAW,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgD,CAAA;AAE1F,+EAA+E;AAC/E,eAAO,MAAM,UAAU,UAAW,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAuC,CAAA;AAehF,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,YAAa,OAAO,KAAG,IAGrD,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,oFAAoF;AACpF,eAAO,MAAM,aAAa,UAAW,OAAO,mCAAmC,aAAa,WAY3F,CAAA"}
|
package/dist/failure.js
CHANGED
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
import { CliError, errorObjectOf, errorRecordOf, exitCodeOfError, mcpErrorResult, renderError, } from "@wirecat/cli-base";
|
|
2
|
+
import { failureContext, judgedEffects } from "@wirecat/cli-core/cli";
|
|
2
3
|
import { CommanderError } from "commander";
|
|
3
4
|
import { ValiError } from "valibot";
|
|
4
5
|
import { APP } from "./app.js";
|
|
5
6
|
import { EFFECTS } from "./effects.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
// cli-core's CLI module costs every memo command ~70 ms to load, so only a failure loads it.
|
|
9
|
-
const contextOf = async () => {
|
|
10
|
-
if (shared)
|
|
11
|
-
return shared;
|
|
12
|
-
try {
|
|
13
|
-
shared = (await import("@wirecat/cli-core/cli")).failureContext(APP.errors);
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return { reasons: REASONS };
|
|
17
|
-
}
|
|
18
|
-
return shared;
|
|
19
|
-
};
|
|
7
|
+
import { interactiveOf, optionsOf } from "./terminal.js";
|
|
8
|
+
const context = failureContext(APP.errors);
|
|
20
9
|
const recognisable = (error) => {
|
|
21
10
|
if (error instanceof CommanderError)
|
|
22
11
|
return new CliError("validation_error", error.message.replace(/^error: /, ""), { reason: "input.invalid" });
|
|
@@ -30,16 +19,9 @@ const recognisable = (error) => {
|
|
|
30
19
|
}
|
|
31
20
|
return error;
|
|
32
21
|
};
|
|
33
|
-
export const errorObject =
|
|
22
|
+
export const errorObject = (error) => errorObjectOf(recognisable(error), context);
|
|
34
23
|
/** The same object as `--json` prints on stderr, as MCP's `isError` answer. */
|
|
35
|
-
export const mcpFailure =
|
|
36
|
-
const MACHINE_FLAGS = new Set(["--json", "--jsonl"]);
|
|
37
|
-
const optionsOf = (args) => {
|
|
38
|
-
const end = args.indexOf("--");
|
|
39
|
-
return end < 0 ? args : args.slice(0, end);
|
|
40
|
-
};
|
|
41
|
-
/** A person at a terminal who did not ask for machine output. */
|
|
42
|
-
export const interactiveOf = (args, tty) => tty && !optionsOf(args).some((flag) => MACHINE_FLAGS.has(flag));
|
|
24
|
+
export const mcpFailure = (error) => mcpErrorResult(errorObject(error));
|
|
43
25
|
const commandOf = (program, args) => {
|
|
44
26
|
const path = [];
|
|
45
27
|
let at = program;
|
|
@@ -61,12 +43,11 @@ export const throwParseFailures = (program) => {
|
|
|
61
43
|
throwParseFailures(command);
|
|
62
44
|
};
|
|
63
45
|
/** One error object on stderr, `✗ message` at a terminal; returns the exit code. */
|
|
64
|
-
export const reportFailure =
|
|
46
|
+
export const reportFailure = (error, { args, program, streams, tty }) => {
|
|
65
47
|
const failure = recognisable(error);
|
|
66
48
|
const flags = optionsOf(args);
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
const object = errorObjectOf(failure, { ...(await contextOf()), ...(effects ? { effects } : {}) });
|
|
49
|
+
const effects = judgedEffects(EFFECTS[commandOf(program, flags)]);
|
|
50
|
+
const object = errorObjectOf(failure, { ...context, ...(effects ? { effects } : {}) });
|
|
70
51
|
const record = flags.includes("--debug")
|
|
71
52
|
? errorRecordOf(failure, object, { command: commandOf(program, flags), service: APP.command, version: APP.version })
|
|
72
53
|
: undefined;
|
package/dist/failure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,EAEf,cAAc,EACd,WAAW,GAEZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAgB,cAAc,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/knowledge/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAW1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASxC,eAAO,MAAM,iBAAiB,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/knowledge/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAW1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASxC,eAAO,MAAM,iBAAiB,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,SAoV3F,CAAA"}
|
|
@@ -1,26 +1,18 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import { ORGANIZATION_KINDS,
|
|
2
|
+
import { ORGANIZATION_KINDS, PROJECT_TYPES, SCOPES, } from "@wirecat/cli-core/store";
|
|
3
|
+
import { answers, itemAnswer, listAnswer, wholeList } from "../answer.js";
|
|
3
4
|
import { authorOf, byOption } from "../author.js";
|
|
4
5
|
import { notesAbout } from "../notes/about.js";
|
|
5
6
|
import { accountOptions, oneOf, positive } from "../options.js";
|
|
6
|
-
import { answering, printing } from "../records/run.js";
|
|
7
7
|
import { selectAccount } from "../store/scope.js";
|
|
8
8
|
import { keyDocuments, markKey, projectOf, unmarkKey } from "./key-documents.js";
|
|
9
9
|
import { meetingProjectsCommand } from "./meeting-projects-command.js";
|
|
10
10
|
export const knowledgeCommands = (program, streams, env) => {
|
|
11
|
-
const run =
|
|
12
|
-
const print = printing(streams);
|
|
11
|
+
const { run } = answers(program, streams, env);
|
|
13
12
|
const execute = (options, work) => run(options.json, async (store) => work(store, await selectAccount(store, options)));
|
|
14
13
|
/** Organisations and relations are the owner's, not an account's. */
|
|
15
|
-
const owned =
|
|
16
|
-
|
|
17
|
-
try {
|
|
18
|
-
print(options.json, await work(store));
|
|
19
|
-
}
|
|
20
|
-
finally {
|
|
21
|
-
await store.close();
|
|
22
|
-
}
|
|
23
|
-
};
|
|
14
|
+
const owned = (options, work) => run(options.json, async (store) => itemAnswer(await work(store)));
|
|
15
|
+
const ownedList = (command, options, work) => run(options.json, async (store) => wholeList(command, await work(store)));
|
|
24
16
|
/** What the store knows around an organization or a project: its relations, the notes about it, its tags. */
|
|
25
17
|
const contextOf = async (store, thing, type, reference) => {
|
|
26
18
|
if (thing === undefined)
|
|
@@ -54,7 +46,7 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
54
46
|
.command("list")
|
|
55
47
|
.description("your organizations")
|
|
56
48
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
57
|
-
.action((options) =>
|
|
49
|
+
.action((options) => ownedList("organizations list", options, (store) => store.knowledge.organizations()));
|
|
58
50
|
organizations
|
|
59
51
|
.command("context")
|
|
60
52
|
.description("one organization by its id or organization:<id>: its relationships, the notes about or linking it, and its tags")
|
|
@@ -89,7 +81,7 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
89
81
|
.command("list")
|
|
90
82
|
.description("your projects")
|
|
91
83
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
92
|
-
.action((options) =>
|
|
84
|
+
.action((options) => ownedList("projects list", options, (store) => store.knowledge.projects()));
|
|
93
85
|
projects
|
|
94
86
|
.command("context")
|
|
95
87
|
.description("one project by its id, key or project:<id>: its key documents first, then its relationships, the notes " +
|
|
@@ -126,7 +118,7 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
126
118
|
.description("a project's key documents: why, who marked each and whether it is still there")
|
|
127
119
|
.argument("<project>", "id, key or project:<id>")
|
|
128
120
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
129
|
-
.action((project, options) =>
|
|
121
|
+
.action((project, options) => ownedList("projects key-documents list", options, async (store) => keyDocuments(store, await projectOf(store, project))));
|
|
130
122
|
const relations = program
|
|
131
123
|
.command("relationships")
|
|
132
124
|
.description("relations between people, organizations and projects; never between identities");
|
|
@@ -156,7 +148,7 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
156
148
|
.description("relationships, all or those of one reference")
|
|
157
149
|
.option("--reference <reference>", "only those of this person:, organization: or project:")
|
|
158
150
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
159
|
-
.action((options) =>
|
|
151
|
+
.action((options) => ownedList("relationships list", options, (store) => store.knowledge.relations(null, options.reference)));
|
|
160
152
|
relations
|
|
161
153
|
.command("remove")
|
|
162
154
|
.description("remove a relationship")
|
|
@@ -200,7 +192,7 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
200
192
|
for (let left = 0; left < people.length; left++)
|
|
201
193
|
for (let right = left + 1; right < people.length; right++) {
|
|
202
194
|
if (suggestions.length >= options.limit)
|
|
203
|
-
return { suggestions,
|
|
195
|
+
return listAnswer("relationships suggest", { items: suggestions, limit: options.limit, has_more: true });
|
|
204
196
|
suggestions.push(await store.knowledge.relate(key, {
|
|
205
197
|
from: `person:${people[left]}`,
|
|
206
198
|
to: `person:${people[right]}`,
|
|
@@ -210,7 +202,11 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
210
202
|
provenance: "rule:email-domain-v1;confidence:weak",
|
|
211
203
|
}));
|
|
212
204
|
}
|
|
213
|
-
return
|
|
205
|
+
return listAnswer("relationships suggest", {
|
|
206
|
+
items: suggestions,
|
|
207
|
+
limit: options.limit,
|
|
208
|
+
has_more: contacts.hasMore,
|
|
209
|
+
});
|
|
214
210
|
}));
|
|
215
211
|
const reminders = program
|
|
216
212
|
.command("reminders")
|
|
@@ -218,24 +214,31 @@ export const knowledgeCommands = (program, streams, env) => {
|
|
|
218
214
|
accountOptions(reminders.command("add").description("add a reminder for an open task").argument("<task>", "the task's id"))
|
|
219
215
|
.requiredOption("--at-time <time>", "when to remind: an ISO 8601 time with its UTC offset")
|
|
220
216
|
.option("--timezone <zone>", "IANA timezone", "UTC")
|
|
221
|
-
.action((task, options) => execute(options, (store, key) => store.knowledge.schedule(key, task, options.atTime, options.timezone)));
|
|
222
|
-
accountOptions(reminders.command("list").description("pending reminders of one account")).action((options) => execute(options, (store, key) => store.knowledge.reminders(key)));
|
|
217
|
+
.action((task, options) => execute(options, async (store, key) => itemAnswer(await store.knowledge.schedule(key, task, options.atTime, options.timezone))));
|
|
218
|
+
accountOptions(reminders.command("list").description("pending reminders of one account")).action((options) => execute(options, async (store, key) => wholeList("reminders list", await store.knowledge.reminders(key))));
|
|
223
219
|
accountOptions(reminders.command("poll").description("hand out due reminders, each with a receipt to acknowledge"))
|
|
224
220
|
.option("--limit <n>", "most due reminders, at most 500", positive, 100)
|
|
225
|
-
.action((options) => execute(options, async (store, key) =>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
221
|
+
.action((options) => execute(options, async (store, key) => {
|
|
222
|
+
const claimed = await store.knowledge.claimReminders(key, { limit: options.limit });
|
|
223
|
+
return listAnswer("reminders poll", {
|
|
224
|
+
items: claimed.map((reminder) => ({
|
|
225
|
+
...reminder,
|
|
226
|
+
deliveryId: `${reminder.id}:${reminder.revision}`,
|
|
227
|
+
delivery: "local",
|
|
228
|
+
})),
|
|
229
|
+
limit: options.limit,
|
|
230
|
+
has_more: claimed.length >= options.limit,
|
|
231
|
+
});
|
|
232
|
+
}));
|
|
230
233
|
accountOptions(reminders
|
|
231
234
|
.command("ack")
|
|
232
235
|
.description("confirm that a handed-out reminder was shown")
|
|
233
236
|
.argument("<id>", "the reminder's id")
|
|
234
|
-
.argument("<receipt>", "the receipt reminders poll handed out with it")).action((id, receipt, options) => execute(options, (store, key) => store.knowledge.acknowledgeReminder(key, id, receipt)));
|
|
235
|
-
accountOptions(reminders.command("cancel").description("cancel a reminder").argument("<id>", "the reminder's id")).action((id, options) => execute(options, (store, key) => store.knowledge.cancelReminder(key, id)));
|
|
237
|
+
.argument("<receipt>", "the receipt reminders poll handed out with it")).action((id, receipt, options) => execute(options, async (store, key) => itemAnswer(await store.knowledge.acknowledgeReminder(key, id, receipt))));
|
|
238
|
+
accountOptions(reminders.command("cancel").description("cancel a reminder").argument("<id>", "the reminder's id")).action((id, options) => execute(options, async (store, key) => itemAnswer(await store.knowledge.cancelReminder(key, id))));
|
|
236
239
|
accountOptions(reminders.command("update").description("move a reminder to another time").argument("<id>", "the reminder's id"))
|
|
237
240
|
.requiredOption("--at-time <time>", "the new time: an ISO 8601 time with its UTC offset")
|
|
238
241
|
.requiredOption("--revision <n>", "the reminder's current revision, as reminders list gives it", positive)
|
|
239
|
-
.action((id, options) => execute(options, (store, key) => store.knowledge.snoozeReminder(key, id, options.atTime, options.revision)));
|
|
242
|
+
.action((id, options) => execute(options, async (store, key) => itemAnswer(await store.knowledge.snoozeReminder(key, id, options.atTime, options.revision))));
|
|
240
243
|
};
|
|
241
244
|
//# sourceMappingURL=command.js.map
|