@wirecat/cli-memo 0.31.0 → 0.33.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 +3 -2
- 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 +27 -9
- package/dist/effects.js.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +24 -9
- 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 +46 -33
- 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 +21 -0
- package/dist/list-query.d.ts.map +1 -0
- package/dist/list-query.js +69 -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 +71 -53
- 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/list.d.ts +9 -5
- package/dist/notes/list.d.ts.map +1 -1
- package/dist/notes/list.js +7 -8
- package/dist/notes/list.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 +4 -14
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +9 -56
- 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 +9 -55
- package/dist/search/answers.d.ts.map +1 -1
- package/dist/search/answers.js +62 -34
- package/dist/search/answers.js.map +1 -1
- package/dist/search/command.d.ts +3 -1
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +37 -48
- package/dist/search/command.js.map +1 -1
- package/dist/search/hits.d.ts +3 -0
- package/dist/search/hits.d.ts.map +1 -0
- package/dist/search/hits.js +4 -0
- package/dist/search/hits.js.map +1 -0
- package/dist/store/scope.d.ts.map +1 -1
- package/dist/store/scope.js +6 -4
- package/dist/store/scope.js.map +1 -1
- package/dist/tags/command.d.ts +1 -1
- package/dist/tags/command.d.ts.map +1 -1
- package/dist/tags/command.js +34 -44
- package/dist/tags/command.js.map +1 -1
- package/dist/tasks/command.d.ts.map +1 -1
- package/dist/tasks/command.js +65 -52
- package/dist/tasks/command.js.map +1 -1
- package/dist/tasks/relations-command.d.ts.map +1 -1
- package/dist/tasks/relations-command.js +6 -8
- package/dist/tasks/relations-command.js.map +1 -1
- package/dist/tasks/shared.d.ts +8 -0
- package/dist/tasks/shared.d.ts.map +1 -0
- package/dist/tasks/shared.js +78 -0
- package/dist/tasks/shared.js.map +1 -0
- 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 +2 -2
- 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/tasks/command.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { parseLocator } from "@wirecat/cli-core";
|
|
3
|
-
import { closedStateOf, storeOnlyDeps,
|
|
4
|
-
import {
|
|
3
|
+
import { closedStateOf, storeOnlyDeps, tasksService } from "@wirecat/cli-core/services";
|
|
4
|
+
import { TASK_ROLES, TASK_TYPES, WORK_TASK_TYPES, } from "@wirecat/cli-core/store";
|
|
5
5
|
import { InvalidArgumentError } from "commander";
|
|
6
|
+
import { answers, itemAnswer, listAnswer, withStore } from "../answer.js";
|
|
6
7
|
import { APP } from "../app.js";
|
|
8
|
+
import { queryField, queryTerms, withQuery } from "../list-query.js";
|
|
7
9
|
import { isNoteReference } from "../notes/about.js";
|
|
8
10
|
import { accountOptions, oneOf, positive } from "../options.js";
|
|
9
|
-
import { printing } from "../records/run.js";
|
|
10
11
|
import { heldMessage } from "../store/held.js";
|
|
11
12
|
import { selectAccount } from "../store/scope.js";
|
|
12
13
|
import { canonicalProject } from "../vocabulary/project.js";
|
|
13
14
|
import { taskPage } from "./context.js";
|
|
14
15
|
import { taskRelationsCommand } from "./relations-command.js";
|
|
16
|
+
import { sharedTaskCommands } from "./shared.js";
|
|
15
17
|
const priorityOf = (value) => {
|
|
16
18
|
const number = Number(value);
|
|
17
19
|
if (!Number.isInteger(number) || number < 0 || number > 4)
|
|
@@ -34,10 +36,28 @@ const assignAll = async (store, id, people) => {
|
|
|
34
36
|
for (const person of people ?? [])
|
|
35
37
|
await store.tasks.assign(id, { to: personRef(person), role: "assignee" }, "owner");
|
|
36
38
|
};
|
|
39
|
+
/** The store filters by state, and a project's tasks by kind too; the rows are memo's, not cli-core's task entity. */
|
|
40
|
+
const TASKS_LIST_QUERY = {
|
|
41
|
+
entity: "task",
|
|
42
|
+
backend: "native",
|
|
43
|
+
fields: [
|
|
44
|
+
queryField("state", "enum", "state:done", { values: ["open", "done", "dismissed"] }),
|
|
45
|
+
queryField("kind", "enum", "kind:bug", { values: TASK_TYPES }),
|
|
46
|
+
queryField("source", "ref", 'source:"msg:telegram/1/7/1"', {
|
|
47
|
+
relation: "tasks from this message, note or document; an account's tasks only",
|
|
48
|
+
}),
|
|
49
|
+
],
|
|
50
|
+
defaults: ["state:open"],
|
|
51
|
+
};
|
|
52
|
+
const tasksPage = (page, limit) => listAnswer("tasks list", {
|
|
53
|
+
items: page.items.map((task) => ({ ref: `task:${task.id}`, ...task })),
|
|
54
|
+
limit,
|
|
55
|
+
has_more: page.hasMore,
|
|
56
|
+
});
|
|
37
57
|
export const tasksCommand = (program, streams, env) => {
|
|
38
58
|
const group = program.command("tasks").description("open work linked to stored messages, documents and emails");
|
|
39
59
|
taskRelationsCommand(group, streams, env);
|
|
40
|
-
const print =
|
|
60
|
+
const { print } = answers(program, streams, env);
|
|
41
61
|
fieldOptions(accountOptions(group.command("add")))
|
|
42
62
|
.description("add a task from a message, note or document, or one of your own in a project")
|
|
43
63
|
.argument("[source]", "msg: source locator, note:<id> or document:<id>; leave out for a task in a project")
|
|
@@ -45,8 +65,7 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
45
65
|
.option("--project <project>", "a task without a source: the project's key or project:<id>")
|
|
46
66
|
.option("--assignee <person...>", "who does it: a person's UID")
|
|
47
67
|
.action(async (source, options) => {
|
|
48
|
-
|
|
49
|
-
try {
|
|
68
|
+
await withStore(env, async (store) => {
|
|
50
69
|
if (source === undefined) {
|
|
51
70
|
if (options.project === undefined || options.title === undefined)
|
|
52
71
|
throw new CliError("validation_error", "a task without a source needs --project and --title");
|
|
@@ -60,7 +79,7 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
60
79
|
...fieldsOf(options),
|
|
61
80
|
}, "owner");
|
|
62
81
|
await assignAll(store, task.id, options.assignee);
|
|
63
|
-
print(options.json, await store.tasks.details(task.id));
|
|
82
|
+
print(options.json, itemAnswer(await store.tasks.details(task.id)));
|
|
64
83
|
return;
|
|
65
84
|
}
|
|
66
85
|
if (options.project !== undefined)
|
|
@@ -84,72 +103,73 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
84
103
|
const answer = await tasksService(storeOnlyDeps(store, key, { app: APP, env })).add(source, type, "owner");
|
|
85
104
|
const fields = fieldsOf(options);
|
|
86
105
|
if (Object.keys(fields).length === 0 && !options.assignee?.length) {
|
|
87
|
-
print(options.json, answer);
|
|
106
|
+
print(options.json, itemAnswer(answer));
|
|
88
107
|
return;
|
|
89
108
|
}
|
|
90
109
|
await store.tasks.edit(answer.task.id, fields, "owner");
|
|
91
110
|
await assignAll(store, answer.task.id, options.assignee);
|
|
92
|
-
print(options.json, { ...answer, details: await store.tasks.details(answer.task.id) });
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
await store.close();
|
|
96
|
-
}
|
|
111
|
+
print(options.json, itemAnswer({ ...answer, details: await store.tasks.details(answer.task.id) }));
|
|
112
|
+
});
|
|
97
113
|
});
|
|
98
|
-
accountOptions(group.command("list").description("tasks of one account or one project, open by default"))
|
|
99
|
-
.option("--state <state>", "open, done or dismissed", taskStateOf, "open")
|
|
114
|
+
withQuery(accountOptions(group.command("list").description("tasks of one account or one project, open by default")), TASKS_LIST_QUERY, { answersEntity: false })
|
|
100
115
|
.option("--project <project>", "a project's tasks, by its key or project:<id>, instead of an account's")
|
|
101
116
|
.option("--ready", "with --project: only open tasks whose prerequisites are done; this claims none")
|
|
102
117
|
.option("--limit <n>", "most tasks", positive, 100)
|
|
103
|
-
.action(async (options) => {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
|
|
118
|
+
.action(async (words, options) => {
|
|
119
|
+
const terms = queryTerms(words, TASKS_LIST_QUERY, "tasks list");
|
|
120
|
+
const state = terms.get("state");
|
|
121
|
+
const kind = terms.get("kind");
|
|
122
|
+
const source = terms.get("source");
|
|
123
|
+
if (options.ready && (options.project === undefined || words.length > 0))
|
|
124
|
+
throw new CliError("validation_error", "--ready lists a project's open tasks: give --project and no query");
|
|
125
|
+
if (kind !== undefined && options.project === undefined)
|
|
126
|
+
throw new CliError("validation_error", "kind: narrows a project's tasks: give --project");
|
|
127
|
+
if (source !== undefined && options.project !== undefined)
|
|
128
|
+
throw new CliError("validation_error", "source: narrows an account's tasks: give --provider, not --project");
|
|
129
|
+
await withStore(env, async (store) => {
|
|
108
130
|
if (options.ready && options.project !== undefined) {
|
|
109
131
|
const page = await store.tasks.readyTasks(await canonicalProject(store, options.project), {
|
|
110
132
|
limit: options.limit,
|
|
111
133
|
});
|
|
112
|
-
print(options.json,
|
|
134
|
+
print(options.json, tasksPage(page, options.limit));
|
|
113
135
|
return;
|
|
114
136
|
}
|
|
115
137
|
if (options.project !== undefined) {
|
|
116
138
|
const items = await store.tasks.find({
|
|
117
139
|
project: await canonicalProject(store, options.project),
|
|
118
|
-
status:
|
|
140
|
+
status: state,
|
|
141
|
+
...(kind === undefined ? {} : { type: kind }),
|
|
119
142
|
limit: options.limit + 1,
|
|
120
143
|
});
|
|
121
|
-
print(options.json, { items: items.slice(0, options.limit), hasMore: items.length > options.limit });
|
|
144
|
+
print(options.json, tasksPage({ items: items.slice(0, options.limit), hasMore: items.length > options.limit }, options.limit));
|
|
122
145
|
return;
|
|
123
146
|
}
|
|
124
147
|
const key = await selectAccount(store, options);
|
|
125
|
-
const page = await taskPage(store, key, {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
148
|
+
const page = await taskPage(store, key, {
|
|
149
|
+
state,
|
|
150
|
+
limit: options.limit,
|
|
151
|
+
...(source === undefined ? {} : { sources: [source] }),
|
|
152
|
+
});
|
|
153
|
+
print(options.json, tasksPage(page, options.limit));
|
|
154
|
+
});
|
|
131
155
|
});
|
|
132
156
|
accountOptions(group.command("close").description("close a task as done or dismissed").argument("<id>", "the task's id"))
|
|
133
157
|
.option("--as <state>", "done or dismissed", closedStateOf, "done")
|
|
134
158
|
.option("--reason <text>", "why it is closed")
|
|
135
159
|
.action(async (id, options) => {
|
|
136
|
-
|
|
137
|
-
try {
|
|
160
|
+
await withStore(env, async (store) => {
|
|
138
161
|
if ((await store.tasks.get(id)) === undefined) {
|
|
139
162
|
const reason = options.reason === undefined ? {} : { reason: options.reason };
|
|
140
|
-
print(options.json, await store.tasks.edit(id, { status: options.as, ...reason }, "owner"));
|
|
163
|
+
print(options.json, itemAnswer(await store.tasks.edit(id, { status: options.as, ...reason }, "owner")));
|
|
141
164
|
return;
|
|
142
165
|
}
|
|
143
166
|
const key = await selectAccount(store, options);
|
|
144
|
-
print(options.json, await tasksService(storeOnlyDeps(store, key, { app: APP, env })).close(id, {
|
|
167
|
+
print(options.json, itemAnswer(await tasksService(storeOnlyDeps(store, key, { app: APP, env })).close(id, {
|
|
145
168
|
as: options.as,
|
|
146
169
|
by: "owner",
|
|
147
170
|
...(options.reason === undefined ? {} : { reason: options.reason }),
|
|
148
|
-
}));
|
|
149
|
-
}
|
|
150
|
-
finally {
|
|
151
|
-
await store.close();
|
|
152
|
-
}
|
|
171
|
+
})));
|
|
172
|
+
});
|
|
153
173
|
});
|
|
154
174
|
fieldOptions(group.command("update").description("change a task's title, priority, parent or description"))
|
|
155
175
|
.argument("<id>", "the task's id or key")
|
|
@@ -158,13 +178,9 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
158
178
|
const fields = fieldsOf(options);
|
|
159
179
|
if (Object.keys(fields).length === 0)
|
|
160
180
|
throw new CliError("validation_error", "give --title, --priority, --parent or --description");
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
finally {
|
|
166
|
-
await store.close();
|
|
167
|
-
}
|
|
181
|
+
await withStore(env, async (store) => {
|
|
182
|
+
print(options.json, itemAnswer(await store.tasks.edit(id, fields, "owner")));
|
|
183
|
+
});
|
|
168
184
|
});
|
|
169
185
|
group
|
|
170
186
|
.command("assign")
|
|
@@ -174,13 +190,10 @@ export const tasksCommand = (program, streams, env) => {
|
|
|
174
190
|
.option("--role <role>", TASK_ROLES.join(", "), oneOf(TASK_ROLES), "assignee")
|
|
175
191
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
176
192
|
.action(async (id, person, options) => {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
finally {
|
|
182
|
-
await store.close();
|
|
183
|
-
}
|
|
193
|
+
await withStore(env, async (store) => {
|
|
194
|
+
print(options.json, itemAnswer(await store.tasks.assign(id, { to: personRef(person), role: options.role }, "owner")));
|
|
195
|
+
});
|
|
184
196
|
});
|
|
197
|
+
sharedTaskCommands(program, group, streams, env);
|
|
185
198
|
};
|
|
186
199
|
//# sourceMappingURL=command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/tasks/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACpG,OAAO,EAEL,SAAS,EACT,UAAU,EACV,UAAU,EAIV,eAAe,GAEhB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAgB,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAS7D,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,uBAAuB,CAAC,CAAA;IAClH,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAA;AAElG,MAAM,QAAQ,GAAG,CAAC,OAAqB,EAAc,EAAE,CAAC,CAAC;IACvD,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAChE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACnE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;CACnF,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CACxC,OAAO;KACJ,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;KAC/D,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,CAAC;KACxD,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;KACjE,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAA;AAE9D,MAAM,SAAS,GAAG,KAAK,EAAE,KAAmB,EAAE,EAAU,EAAE,MAA4B,EAAE,EAAE;IACxF,KAAK,MAAM,MAAM,IAAI,MAAM,IAAI,EAAE;QAAE,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAA;AACvH,CAAC,CAAA;AAED,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,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/C,WAAW,CAAC,8EAA8E,CAAC;SAC3F,QAAQ,CAAC,UAAU,EAAE,oFAAoF,CAAC;SAC1G,MAAM,CACL,eAAe,EACf,6GAA6G,EAC7G,KAAK,CAAC,UAAU,CAAC,CAClB;SACA,MAAM,CAAC,qBAAqB,EAAE,4DAA4D,CAAC;SAC3F,MAAM,CAAC,wBAAwB,EAAE,6BAA6B,CAAC;SAC/D,MAAM,CACL,KAAK,EACH,MAA0B,EAC1B,OAC2F,EAC3F,EAAE;QACF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;oBAC9D,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAA;gBAC/F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAA;gBACpC,IAAI,CAAE,eAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACxD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChG,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CACnC;oBACE,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;oBACvD,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,IAAI,EAAE,IAAoB;oBAC1B,GAAG,QAAQ,CAAC,OAAO,CAAC;iBACrB,EACD,OAAO,CACR,CAAA;gBACD,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACjD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACvD,OAAM;YACR,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;gBAC/B,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,wEAAwE,CACzE,CAAA;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAA;YACtC,IAAK,eAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACvD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mEAAmE,CAAC,CAAA;YAC7G,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7C,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,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS;gBAE1E,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,2CAA2C,CAAC,CAAA;YAC9E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CACjF,MAAM,EACN,IAAuC,EACvC,OAAO,CACR,CAAA;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;YAChC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAClE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBAC3B,OAAM;YACR,CAAC;YACD,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACvD,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;YACxD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACxF,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CACF,CAAA;IACH,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,sDAAsD,CAAC,CAAC;SACtG,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,wEAAwE,CAAC;SACvG,MAAM,CAAC,SAAS,EAAE,gFAAgF,CAAC;SACnG,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC;SAClD,MAAM,CACL,KAAK,EACH,OAMC,EACD,EAAE;QACF,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC;YAC9E,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mEAAmE,CAAC,CAAA;QAC7G,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;oBACxF,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAA;gBACF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;gBACxG,OAAM;YACR,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;oBACnC,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;oBACvD,MAAM,EAAE,OAAO,CAAC,KAAK;oBACrB,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;iBACzB,CAAC,CAAA;gBACF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;gBACpG,OAAM;YACR,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;YACvF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QAC1G,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CACF,CAAA;IACH,cAAc,CACZ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAC1G;SACE,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,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;gBAC7E,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;gBAC3F,OAAM;YACR,CAAC;YACD,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,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,wDAAwD,CAAC,CAAC;SACxG,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAA0C,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAA;QAC/F,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QAClE,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;IACJ,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;SACxC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;SAC7E,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,MAAc,EAAE,OAA2C,EAAE,EAAE;QACxF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;QAC3G,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/tasks/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,SA8B5F,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { TASK_RELATION_KINDS } from "@wirecat/cli-core/store";
|
|
2
|
+
import { answers, itemAnswer, wholeList } from "../answer.js";
|
|
2
3
|
import { oneOf } from "../options.js";
|
|
3
|
-
import { answering } from "../records/run.js";
|
|
4
4
|
export const taskRelationsCommand = (tasks, streams, env) => {
|
|
5
|
-
const run =
|
|
6
|
-
const execute = (options, work) => run(options.json, work);
|
|
7
|
-
for (const operation of ["
|
|
5
|
+
const { run } = answers(tasks, streams, env);
|
|
6
|
+
const execute = (options, work) => run(options.json, async (store) => itemAnswer(await work(store)));
|
|
7
|
+
for (const operation of ["unlink"]) {
|
|
8
8
|
tasks
|
|
9
9
|
.command(operation)
|
|
10
10
|
.description(`${operation} reviewed project task relationships`)
|
|
@@ -12,16 +12,14 @@ export const taskRelationsCommand = (tasks, streams, env) => {
|
|
|
12
12
|
.argument("<other-task>", "the task it relates to: task:<id> or its id")
|
|
13
13
|
.requiredOption("--kind <kind>", TASK_RELATION_KINDS.join(", "), oneOf(TASK_RELATION_KINDS))
|
|
14
14
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
15
|
-
.action((task, other, options) => execute(options, (store) =>
|
|
16
|
-
? store.tasks.linkTask(task, other, options.kind, "owner")
|
|
17
|
-
: store.tasks.unlinkTask(task, other, options.kind, "owner")));
|
|
15
|
+
.action((task, other, options) => execute(options, (store) => store.tasks.unlinkTask(task, other, options.kind, "owner")));
|
|
18
16
|
}
|
|
19
17
|
tasks
|
|
20
18
|
.command("relations")
|
|
21
19
|
.description("a task's links to other tasks")
|
|
22
20
|
.argument("<task>", "the task: task:<id> or its id")
|
|
23
21
|
.option("--json", "print JSON; --json=id,title keeps only those fields")
|
|
24
|
-
.action((task, options) =>
|
|
22
|
+
.action((task, options) => run(options.json, async (store) => wholeList("tasks relations", await store.tasks.taskRelations(task))));
|
|
25
23
|
tasks
|
|
26
24
|
.command("status")
|
|
27
25
|
.description("whether a task can start, and what it still waits for")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations-command.js","sourceRoot":"","sources":["../../src/tasks/relations-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,mBAAmB,EAAyB,MAAM,yBAAyB,CAAA;AAEvG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"relations-command.js","sourceRoot":"","sources":["../../src/tasks/relations-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,mBAAmB,EAAyB,MAAM,yBAAyB,CAAA;AAEvG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAE,OAAgB,EAAE,GAAsB,EAAE,EAAE;IAC/F,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,CAAC,OAA2B,EAAE,IAA+C,EAAE,EAAE,CAC/F,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACnE,KAAK,MAAM,SAAS,IAAI,CAAC,QAAQ,CAAU,EAAE,CAAC;QAC5C,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,qDAAqD,CAAC;aACvE,MAAM,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,OAAmD,EAAE,EAAE,CAC3F,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CACxF,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,qDAAqD,CAAC;SACvE,MAAM,CAAC,CAAC,IAAY,EAAE,OAA2B,EAAE,EAAE,CACpD,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CACxG,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,qDAAqD,CAAC;SACvE,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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Streams } from "@wirecat/cli-base";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
/**
|
|
4
|
+
* `tasks agenda|plan|show|link` and `stats tasks show` are cli-core's builders, the ones tg and max have, mounted
|
|
5
|
+
* with memo's own `--provider --account` (`Messenger.accountOf`).
|
|
6
|
+
*/
|
|
7
|
+
export declare const sharedTaskCommands: (program: Command, tasks: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
|
8
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tasks/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoEnC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,YAAa,OAAO,SAAS,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,SAc5G,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { provide, settingsFor, tasksCommand, tasksStatsCommand } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { openStore } from "@wirecat/cli-core/store";
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { APP } from "../app.js";
|
|
6
|
+
const SHARED = ["agenda", "plan", "show", "link"];
|
|
7
|
+
/** `task:15`, a bare id or a project key: a `tasks link` target that needs no messenger account. */
|
|
8
|
+
const TASKISH = /^(task:.+|\d+|[A-Z][A-Z0-9]*-\d+)$/;
|
|
9
|
+
/** memo's own sources in the store: every other provider is a messenger a source tool syncs. */
|
|
10
|
+
const NOT_MESSENGERS = new Set(["email", "notes"]);
|
|
11
|
+
// memo's config file is not a messenger profile's, and cli-core's schema refuses its keys: the builders get
|
|
12
|
+
// the defaults, from a config folder of a name nothing writes.
|
|
13
|
+
const settings = settingsFor({ ...APP, appName: "cli-memo-tasks", envPrefix: "MEMO_TASKS" });
|
|
14
|
+
const flagged = (command) => command.opts();
|
|
15
|
+
const messenger = {
|
|
16
|
+
app: APP,
|
|
17
|
+
provider: "memo",
|
|
18
|
+
chatArgument: "a stored chat, by its id or title",
|
|
19
|
+
resolveSettings: (flags, options) => settings.resolveSettings(flags, { ...options, needsProfile: false }),
|
|
20
|
+
connect: async () => {
|
|
21
|
+
throw new CliError("validation_error", "memo reads no messenger: these commands answer from the store");
|
|
22
|
+
},
|
|
23
|
+
accountOf: (command) => {
|
|
24
|
+
const { provider, account } = flagged(command);
|
|
25
|
+
return provider && account ? { provider, account } : undefined;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Never one picked for the owner: a command that names no account fails, listing the ones the store holds.
|
|
30
|
+
* `tasks link` between two project tasks needs none: project tasks belong to no messenger account.
|
|
31
|
+
*/
|
|
32
|
+
const requireAccount = (env) => async (_, command) => {
|
|
33
|
+
const { provider, account } = flagged(command);
|
|
34
|
+
if (provider && account)
|
|
35
|
+
return;
|
|
36
|
+
const [, ...targets] = command.args;
|
|
37
|
+
const chats = command.opts().chat ?? [];
|
|
38
|
+
if (command.name() === "link" &&
|
|
39
|
+
targets.length > 0 &&
|
|
40
|
+
chats.length === 0 &&
|
|
41
|
+
targets.every((one) => TASKISH.test(one)))
|
|
42
|
+
return;
|
|
43
|
+
const store = await openStore({ env });
|
|
44
|
+
try {
|
|
45
|
+
const listed = (await store.accounts())
|
|
46
|
+
.filter((key) => !NOT_MESSENGERS.has(key.provider))
|
|
47
|
+
.map((key) => `--provider ${key.provider} --account ${key.account}`)
|
|
48
|
+
.join("; ");
|
|
49
|
+
throw new CliError("validation_error", `give --provider and --account — the stored messenger accounts: ${listed || "none yet"}`);
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
await store.close();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const scoped = (command, env) => command
|
|
56
|
+
.option("--provider <provider>", "the messenger account's provider: telegram, max")
|
|
57
|
+
.option("--account <account>", "the messenger account, as the store holds it")
|
|
58
|
+
.option("--json", "print JSON")
|
|
59
|
+
.hook("preAction", requireAccount(env));
|
|
60
|
+
/**
|
|
61
|
+
* `tasks agenda|plan|show|link` and `stats tasks show` are cli-core's builders, the ones tg and max have, mounted
|
|
62
|
+
* with memo's own `--provider --account` (`Messenger.accountOf`).
|
|
63
|
+
*/
|
|
64
|
+
export const sharedTaskCommands = (program, tasks, streams, env) => {
|
|
65
|
+
provide(program, { streams, env });
|
|
66
|
+
const built = tasksCommand(messenger);
|
|
67
|
+
for (const name of SHARED) {
|
|
68
|
+
const command = built.commands.find((one) => one.name() === name);
|
|
69
|
+
if (!command)
|
|
70
|
+
throw new Error(`cli-core's tasks builder has no ${name}`);
|
|
71
|
+
tasks.addCommand(scoped(command, env));
|
|
72
|
+
}
|
|
73
|
+
program
|
|
74
|
+
.command("stats")
|
|
75
|
+
.description("statistics about what the store holds")
|
|
76
|
+
.addCommand(new Command("tasks").description("task statistics").addCommand(scoped(tasksStatsCommand(messenger), env)));
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tasks/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const optionsOf: (args: readonly string[]) => readonly string[];
|
|
2
|
+
/** A person at a terminal who did not ask for machine output. */
|
|
3
|
+
export declare const interactiveOf: (args: readonly string[], tty: boolean) => boolean;
|
|
4
|
+
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,SAAU,SAAS,MAAM,EAAE,sBAGhD,CAAA;AAED,iEAAiE;AACjE,eAAO,MAAM,aAAa,SAAU,SAAS,MAAM,EAAE,OAAO,OAAO,YACF,CAAA"}
|
package/dist/terminal.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const MACHINE_FLAGS = new Set(["--json", "--jsonl"]);
|
|
2
|
+
export const optionsOf = (args) => {
|
|
3
|
+
const end = args.indexOf("--");
|
|
4
|
+
return end < 0 ? args : args.slice(0, end);
|
|
5
|
+
};
|
|
6
|
+
/** A person at a terminal who did not ask for machine output. */
|
|
7
|
+
export const interactiveOf = (args, tty) => tty && !optionsOf(args).some((flag) => MACHINE_FLAGS.has(flag));
|
|
8
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAuB,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAuB,EAAE,GAAY,EAAE,EAAE,CACrE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.33.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.33.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,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,
|
|
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,IAyH9F,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { answers, itemAnswer } from "../answer.js";
|
|
2
3
|
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*)$/);
|
|
@@ -12,8 +12,8 @@ export const vocabularyCommand = (program, streams, env) => {
|
|
|
12
12
|
const vocabulary = program
|
|
13
13
|
.command("vocabulary")
|
|
14
14
|
.description("canonical projects, tags and topics with explicit aliases");
|
|
15
|
-
const run =
|
|
16
|
-
const execute = (options, work) => run(options.json, work);
|
|
15
|
+
const { run } = answers(program, streams, env);
|
|
16
|
+
const execute = (options, work) => run(options.json, async (store) => itemAnswer(await work(store)));
|
|
17
17
|
const readOptions = (command) => command
|
|
18
18
|
.option("--kind <kind>", "project, tag or topic", oneOf(kinds))
|
|
19
19
|
.option("--scope <scope>", "personal or work projects", oneOf(["personal", "work"]))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/vocabulary/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/vocabulary/command.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecat/cli-memo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.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",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@modelcontextprotocol/server": "2.1.0",
|
|
49
49
|
"@valibot/to-json-schema": "1.8.0",
|
|
50
50
|
"@wirecat/cli-base": "0.28.2",
|
|
51
|
-
"@wirecat/cli-core": "0.
|
|
51
|
+
"@wirecat/cli-core": "0.281.0",
|
|
52
52
|
"commander": "15.0.0",
|
|
53
53
|
"disposable-email-domains-js": "1.26.0",
|
|
54
54
|
"postal-mime": "4.0.0",
|
package/skills/cli-memo/SKILL.md
CHANGED
|
@@ -19,8 +19,11 @@ anything. Add `--json` and read the answer, not the text meant for people.
|
|
|
19
19
|
`memo search messages 'content:invoice'` with `tg search messages 'content:invoice'`, a plain word
|
|
20
20
|
with a plain word.
|
|
21
21
|
3. **Every answer is `item` (one thing) or `items` with `page` (a list), plus `meta`.** References:
|
|
22
|
-
|
|
23
|
-
`
|
|
22
|
+
every search's `items[].ref`. Pass a reference back unchanged. A search names its fields, so
|
|
23
|
+
`--json=ref,excerpt` keeps those and refuses one it does not have. `missing` says what was not searched and why.
|
|
24
|
+
A list narrows by field:value terms after its arguments, not by flags: `memo facts list kind:decision
|
|
25
|
+
status:proposed`; its `--help` names the fields.
|
|
26
|
+
Who a note links to: `memo context <person>`.
|
|
24
27
|
4. **Start work on a project with `memo projects context <key>`.** Its key documents come first:
|
|
25
28
|
read them before anything else. Mark one with
|
|
26
29
|
`memo projects key-documents add <key> <reference> --reason '<why>'`.
|
|
@@ -49,7 +52,8 @@ anything. Add `--json` and read the answer, not the text meant for people.
|
|
|
49
52
|
`memo mail rules add … --skip` or `--envelope` unasked. A skipped email is never imported. An envelope
|
|
50
53
|
email is stored without its text and is never a search hit; `memo mail rules list` counts it. Mail
|
|
51
54
|
already stored stays until `memo mail rules apply <account> --yes` cuts it; run it without `--yes`
|
|
52
|
-
first and show the owner what it would cut.
|
|
55
|
+
first and show the owner what it would cut. Rules live in the store, not in `config.json`: never edit
|
|
56
|
+
them there; `memo mail rules export|import` moves them as a file. A protected rule is never cut.
|
|
53
57
|
13. **Old years come from a Google Takeout mbox**, an account with `"mode": "mbox"` and the Gmail
|
|
54
58
|
address; it syncs only when named, and reads the whole file each run, so give a large `--limit`:
|
|
55
59
|
`memo sync --account <name> --since-time 2000-01-01 --limit 5000`.
|
package/dist/records/run.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type Streams } from "@wirecat/cli-base";
|
|
2
|
-
import { type MessageStore } from "@wirecat/cli-core/store";
|
|
3
|
-
/** Prints an answer as JSON in the envelope, or for a person as `text`, or as indented JSON where it has no text view. */
|
|
4
|
-
export declare const printing: (streams: Streams) => (json: boolean | undefined, answer: unknown, text?: string) => void;
|
|
5
|
-
/** Opens the store for one command, prints its answer as JSON or as indented text, and closes the store. */
|
|
6
|
-
export declare const answering: (streams: Streams, env: NodeJS.ProcessEnv) => (json: boolean | undefined, work: (store: MessageStore) => Promise<unknown>) => Promise<void>;
|
|
7
|
-
//# sourceMappingURL=run.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/records/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,yBAAyB,CAAA;AAGtE,0HAA0H;AAC1H,eAAO,MAAM,QAAQ,YACT,OAAO,YACV,OAAO,GAAG,SAAS,UAAU,OAAO,SAAS,MAAM,KAAG,IAG5D,CAAA;AAEH,4GAA4G;AAC5G,eAAO,MAAM,SAAS,YAAa,OAAO,OAAO,MAAM,CAAC,UAAU,YAE5C,OAAO,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,KAAG,OAAO,CAAC,IAAI,CAQxG,CAAA"}
|
package/dist/records/run.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { createRenderer } from "@wirecat/cli-base";
|
|
2
|
-
import { openStore } from "@wirecat/cli-core/store";
|
|
3
|
-
import { answerOf, processStart, snakeKeys } from "../output.js";
|
|
4
|
-
/** Prints an answer as JSON in the envelope, or for a person as `text`, or as indented JSON where it has no text view. */
|
|
5
|
-
export const printing = (streams) => (json, answer, text) => {
|
|
6
|
-
if (json)
|
|
7
|
-
createRenderer({ format: "json", color: false, streams }).result(answerOf(answer, processStart()));
|
|
8
|
-
else
|
|
9
|
-
streams.data(`${text ?? JSON.stringify(snakeKeys(answer), null, 2)}\n`);
|
|
10
|
-
};
|
|
11
|
-
/** Opens the store for one command, prints its answer as JSON or as indented text, and closes the store. */
|
|
12
|
-
export const answering = (streams, env) => {
|
|
13
|
-
const print = printing(streams);
|
|
14
|
-
return async (json, work) => {
|
|
15
|
-
const store = await openStore({ env });
|
|
16
|
-
try {
|
|
17
|
-
print(json, await work(store));
|
|
18
|
-
}
|
|
19
|
-
finally {
|
|
20
|
-
await store.close();
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=run.js.map
|
package/dist/records/run.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/records/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAqB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEhE,0HAA0H;AAC1H,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,OAAgB,EAAE,EAAE,CACrB,CAAC,IAAyB,EAAE,MAAe,EAAE,IAAa,EAAQ,EAAE;IAClE,IAAI,IAAI;QAAE,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;;QACvG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AAC9E,CAAC,CAAA;AAEH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,GAAsB,EAAE,EAAE;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,KAAK,EAAE,IAAyB,EAAE,IAA+C,EAAiB,EAAE;QACzG,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA"}
|