@leemour/cli-messaging 0.180.0 → 0.182.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/attachments/csv-spans.d.ts +12 -0
- package/dist/attachments/csv-spans.d.ts.map +1 -0
- package/dist/attachments/csv-spans.js +40 -0
- package/dist/attachments/csv-spans.js.map +1 -0
- package/dist/attachments/extract.d.ts +8 -0
- package/dist/attachments/extract.d.ts.map +1 -1
- package/dist/attachments/extract.js +32 -4
- package/dist/attachments/extract.js.map +1 -1
- package/dist/cli/messenger/ask.d.ts.map +1 -1
- package/dist/cli/messenger/ask.js +1 -1
- package/dist/cli/messenger/ask.js.map +1 -1
- package/dist/cli/messenger/port.d.ts +2 -0
- package/dist/cli/messenger/port.d.ts.map +1 -1
- package/dist/cli/messenger/port.js.map +1 -1
- package/dist/cli/messenger/topics-command.d.ts.map +1 -1
- package/dist/cli/messenger/topics-command.js +9 -0
- package/dist/cli/messenger/topics-command.js.map +1 -1
- package/dist/documents.d.ts +3 -0
- package/dist/documents.d.ts.map +1 -0
- package/dist/documents.js +2 -0
- package/dist/documents.js.map +1 -0
- package/dist/mcp/tools/topics.d.ts.map +1 -1
- package/dist/mcp/tools/topics.js +13 -0
- package/dist/mcp/tools/topics.js.map +1 -1
- package/dist/sends/guard.js +1 -1
- package/dist/sends/guard.js.map +1 -1
- package/dist/sends/journal.d.ts +1 -1
- package/dist/sends/journal.d.ts.map +1 -1
- package/dist/sends/journal.js.map +1 -1
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +2 -0
- package/dist/sends/permissions.js.map +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/tasks.js +1 -1
- package/dist/services/tasks.js.map +1 -1
- package/dist/services/topics.d.ts +5 -0
- package/dist/services/topics.d.ts.map +1 -1
- package/dist/services/topics.js +13 -0
- package/dist/services/topics.js.map +1 -1
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/sqlite/knowledge.d.ts +128 -0
- package/dist/store/sqlite/knowledge.d.ts.map +1 -0
- package/dist/store/sqlite/knowledge.js +414 -0
- package/dist/store/sqlite/knowledge.js.map +1 -0
- package/dist/store/sqlite/manifest.d.ts.map +1 -1
- package/dist/store/sqlite/manifest.js +3 -0
- package/dist/store/sqlite/manifest.js.map +1 -1
- package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
- package/dist/store/sqlite/migrations.generated.js +26 -0
- package/dist/store/sqlite/migrations.generated.js.map +1 -1
- package/dist/store/sqlite/private-people.d.ts.map +1 -1
- package/dist/store/sqlite/private-people.js +6 -6
- package/dist/store/sqlite/private-people.js.map +1 -1
- package/dist/store/sqlite/schema.d.ts +524 -0
- package/dist/store/sqlite/schema.d.ts.map +1 -1
- package/dist/store/sqlite/schema.js +47 -0
- package/dist/store/sqlite/schema.js.map +1 -1
- package/dist/store/store.d.ts +2 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +2 -0
- package/dist/store/store.js.map +1 -1
- package/package.json +6 -1
- package/parity.json +34 -30
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { formatLocator, parseLocator } from "../../domain/locator.js";
|
|
3
|
+
import { normalizeTag } from "../../domain/tags.js";
|
|
4
|
+
import { ulid } from "../ulid.js";
|
|
5
|
+
import { addTags as addNativeTags, targetPk as nativeTargetPk, removeTags as removeNativeTags, } from "./tags.js";
|
|
6
|
+
const iso = (value) => new Date(Number(value)).toISOString();
|
|
7
|
+
const bounded = (limit = 100, offset = 0) => {
|
|
8
|
+
if (!Number.isInteger(limit) ||
|
|
9
|
+
limit < 1 ||
|
|
10
|
+
limit > 500 ||
|
|
11
|
+
!Number.isInteger(offset) ||
|
|
12
|
+
offset < 0 ||
|
|
13
|
+
offset > 100_000)
|
|
14
|
+
throw new CliError("validation_error", "limit takes 1–500 and offset takes 0–100000");
|
|
15
|
+
return { limit, offset };
|
|
16
|
+
};
|
|
17
|
+
const textOf = (text, max = 100_000) => {
|
|
18
|
+
const value = text.trim();
|
|
19
|
+
if (!value || value.length > max)
|
|
20
|
+
throw new CliError("validation_error", `text takes 1–${max} characters`);
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
export const knowledgeStoreOver = (context) => {
|
|
24
|
+
const { database, now } = context;
|
|
25
|
+
const account = (key) => {
|
|
26
|
+
const row = database
|
|
27
|
+
.prepare("SELECT pk FROM accounts WHERE provider=? AND native_id=?")
|
|
28
|
+
.get(key.provider, key.account);
|
|
29
|
+
if (!row)
|
|
30
|
+
throw new CliError("not_found", "the account is not in the local store");
|
|
31
|
+
return Number(row.pk);
|
|
32
|
+
};
|
|
33
|
+
const taskAccount = (key) => `${key.provider}:${key.account}`;
|
|
34
|
+
const state = (key, target) => {
|
|
35
|
+
if (!["message", "chat", "contact", "person", "task", "entity"].includes(target.type))
|
|
36
|
+
throw new CliError("validation_error", "unknown knowledge target");
|
|
37
|
+
const pk = account(key);
|
|
38
|
+
if (target.type === "message") {
|
|
39
|
+
const source = parseLocator(target.locator);
|
|
40
|
+
if (source.provider !== key.provider || source.account !== key.account)
|
|
41
|
+
throw new CliError("validation_error", "the locator belongs to another account");
|
|
42
|
+
const row = database
|
|
43
|
+
.prepare("SELECT m.deleted_at FROM messages m JOIN chats c ON c.pk=m.chat_pk WHERE c.account_pk=? AND c.native_id=? AND m.native_id=?")
|
|
44
|
+
.get(pk, source.chat, source.message);
|
|
45
|
+
return !row ? "unavailable" : row.deleted_at == null ? "available" : "deleted";
|
|
46
|
+
}
|
|
47
|
+
if (!target.id.trim())
|
|
48
|
+
throw new CliError("validation_error", "target id must not be empty");
|
|
49
|
+
const row = target.type === "chat"
|
|
50
|
+
? database.prepare("SELECT pk FROM chats WHERE account_pk=? AND native_id=?").get(pk, target.id)
|
|
51
|
+
: target.type === "contact"
|
|
52
|
+
? database
|
|
53
|
+
.prepare("SELECT i.pk FROM identities i JOIN account_identities ai ON ai.identity_pk=i.pk WHERE ai.account_pk=? AND i.provider=? AND i.native_id=?")
|
|
54
|
+
.get(pk, key.provider, target.id)
|
|
55
|
+
: target.type === "person"
|
|
56
|
+
? database
|
|
57
|
+
.prepare("SELECT p.pk FROM persons p JOIN identity_links il ON il.person_pk=p.pk JOIN account_identities ai ON ai.identity_pk=il.identity_pk WHERE ai.account_pk=? AND p.uid=?")
|
|
58
|
+
.get(pk, target.id)
|
|
59
|
+
: target.type === "task"
|
|
60
|
+
? database.prepare("SELECT id FROM tasks WHERE account=? AND id=?").get(taskAccount(key), target.id)
|
|
61
|
+
: database.prepare("SELECT uid FROM knowledge_entities WHERE account_pk=? AND uid=?").get(pk, target.id);
|
|
62
|
+
return row ? "available" : "unavailable";
|
|
63
|
+
};
|
|
64
|
+
const targetPk = (key, target, create) => {
|
|
65
|
+
const pk = account(key);
|
|
66
|
+
const reference = target.type === "message" ? formatLocator(parseLocator(target.locator)) : target.id;
|
|
67
|
+
if (create) {
|
|
68
|
+
if (state(key, target) !== "available")
|
|
69
|
+
throw new CliError("not_found", "the target is unavailable or deleted");
|
|
70
|
+
database
|
|
71
|
+
.prepare("INSERT INTO knowledge_targets (account_pk,type,reference,created_at) VALUES (?,?,?,?) ON CONFLICT DO NOTHING")
|
|
72
|
+
.run(pk, target.type, reference, now());
|
|
73
|
+
}
|
|
74
|
+
const row = database
|
|
75
|
+
.prepare("SELECT pk FROM knowledge_targets WHERE account_pk=? AND type=? AND reference=?")
|
|
76
|
+
.get(pk, target.type, reference);
|
|
77
|
+
return row ? Number(row.pk) : undefined;
|
|
78
|
+
};
|
|
79
|
+
const targetOf = (row) => row.type === "message"
|
|
80
|
+
? { type: "message", locator: String(row.reference) }
|
|
81
|
+
: { type: row.type, id: String(row.reference) };
|
|
82
|
+
const nativeTarget = (target) => {
|
|
83
|
+
if (target.type === "message") {
|
|
84
|
+
const locator = parseLocator(target.locator);
|
|
85
|
+
return { type: "message", chatId: locator.chat, messageId: locator.message };
|
|
86
|
+
}
|
|
87
|
+
if (target.type === "chat")
|
|
88
|
+
return { type: "chat", chatId: target.id };
|
|
89
|
+
if (target.type === "contact")
|
|
90
|
+
return { type: "contact", personId: target.id };
|
|
91
|
+
return undefined;
|
|
92
|
+
};
|
|
93
|
+
const annotationOf = (key, row) => {
|
|
94
|
+
const target = targetOf(row);
|
|
95
|
+
return {
|
|
96
|
+
id: String(row.uid),
|
|
97
|
+
target,
|
|
98
|
+
targetState: state(key, target),
|
|
99
|
+
text: String(row.text),
|
|
100
|
+
revision: Number(row.revision),
|
|
101
|
+
authoredBy: "owner",
|
|
102
|
+
createdAt: iso(row.created_at),
|
|
103
|
+
updatedAt: iso(row.updated_at),
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
const annotation = (key, id) => {
|
|
107
|
+
const row = database
|
|
108
|
+
.prepare("SELECT a.*,t.type,t.reference FROM annotations a JOIN knowledge_targets t ON t.pk=a.target_pk WHERE a.target_type='source' AND a.account_pk=? AND a.uid=? UNION ALL SELECT a.*, 'contact' AS type,i.native_id AS reference FROM annotations a JOIN identities i ON i.pk=a.target_pk JOIN account_identities ai ON ai.identity_pk=i.pk AND ai.account_pk=a.account_pk WHERE a.target_type='contact' AND a.account_pk=? AND a.uid=?")
|
|
109
|
+
.get(account(key), id, account(key), id);
|
|
110
|
+
if (!row)
|
|
111
|
+
throw new CliError("not_found", "no annotation with that id in this account");
|
|
112
|
+
return annotationOf(key, row);
|
|
113
|
+
};
|
|
114
|
+
const entityOf = (row) => ({
|
|
115
|
+
id: String(row.uid),
|
|
116
|
+
kind: row.kind,
|
|
117
|
+
name: String(row.name),
|
|
118
|
+
createdAt: iso(row.created_at),
|
|
119
|
+
});
|
|
120
|
+
const relationOf = (row) => ({
|
|
121
|
+
id: String(row.uid),
|
|
122
|
+
from: String(row.from_ref),
|
|
123
|
+
to: String(row.to_ref),
|
|
124
|
+
kind: row.kind,
|
|
125
|
+
role: row.role == null ? null : String(row.role),
|
|
126
|
+
evidence: row.evidence == null ? null : String(row.evidence),
|
|
127
|
+
confirmed: Number(row.confirmed) === 1,
|
|
128
|
+
provenance: row.provenance == null ? null : String(row.provenance),
|
|
129
|
+
confidenceCategory: Number(row.confirmed) === 1 ? "owner-confirmed" : "weak",
|
|
130
|
+
createdAt: iso(row.created_at),
|
|
131
|
+
});
|
|
132
|
+
const reminderOf = (row) => ({
|
|
133
|
+
id: String(row.uid),
|
|
134
|
+
task: String(row.task_id),
|
|
135
|
+
dueAt: iso(row.due_at),
|
|
136
|
+
timezone: String(row.timezone),
|
|
137
|
+
state: row.state,
|
|
138
|
+
revision: Number(row.revision),
|
|
139
|
+
receipt: row.receipt == null ? null : String(row.receipt),
|
|
140
|
+
});
|
|
141
|
+
const reminder = (key, id) => {
|
|
142
|
+
const row = database.prepare("SELECT * FROM knowledge_reminders WHERE account_pk=? AND uid=?").get(account(key), id);
|
|
143
|
+
if (!row)
|
|
144
|
+
throw new CliError("not_found", "no reminder with that id in this account");
|
|
145
|
+
return reminderOf(row);
|
|
146
|
+
};
|
|
147
|
+
const due = (value) => {
|
|
148
|
+
if (!/T.*(?:Z|[+-]\d{2}:\d{2})$/.test(value) || !Number.isFinite(Date.parse(value)))
|
|
149
|
+
throw new CliError("validation_error", "due time needs an ISO timestamp with an explicit UTC offset");
|
|
150
|
+
return Date.parse(value);
|
|
151
|
+
};
|
|
152
|
+
const openTask = (key, id) => {
|
|
153
|
+
const row = database.prepare("SELECT state FROM tasks WHERE account=? AND id=?").get(taskAccount(key), id);
|
|
154
|
+
if (row?.state !== "open")
|
|
155
|
+
throw new CliError("validation_error", "a reminder requires an open task in this account");
|
|
156
|
+
};
|
|
157
|
+
const requiredReference = (key, reference, globalPerson = false) => {
|
|
158
|
+
const [prefix, ...rest] = reference.split(":");
|
|
159
|
+
if (globalPerson &&
|
|
160
|
+
prefix === "person" &&
|
|
161
|
+
database.prepare("SELECT uid FROM persons WHERE uid=?").get(rest.join(":")))
|
|
162
|
+
return;
|
|
163
|
+
if ((prefix !== "person" && prefix !== "entity" && prefix !== "task") ||
|
|
164
|
+
state(key, { type: prefix, id: rest.join(":") }) !== "available")
|
|
165
|
+
throw new CliError("not_found", "reference needs a stored person:<uid> or entity:<uid> in this account");
|
|
166
|
+
};
|
|
167
|
+
return {
|
|
168
|
+
taskIds: async (key, options = {}) => {
|
|
169
|
+
const { limit, offset } = bounded(options.limit, options.offset);
|
|
170
|
+
if (options.state !== undefined && !["open", "done", "dismissed"].includes(options.state))
|
|
171
|
+
throw new CliError("validation_error", "unknown task state");
|
|
172
|
+
if (options.sources && options.sources.length > 2000)
|
|
173
|
+
throw new CliError("validation_error", "select at most 2000 task sources");
|
|
174
|
+
if (options.sources?.length === 0)
|
|
175
|
+
return { items: [], hasMore: false };
|
|
176
|
+
account(key);
|
|
177
|
+
const rows = database
|
|
178
|
+
.prepare(`SELECT id FROM tasks WHERE account=? AND (? IS NULL OR state=?) ${options.sources ? `AND source IN (${options.sources.map(() => "?").join(",")})` : ""} ORDER BY created_at,id LIMIT ? OFFSET ?`)
|
|
179
|
+
.all(taskAccount(key), options.state ?? null, options.state ?? null, ...(options.sources ?? []), limit + 1, offset);
|
|
180
|
+
return { items: rows.slice(0, limit).map((row) => String(row.id)), hasMore: rows.length > limit };
|
|
181
|
+
},
|
|
182
|
+
addAnnotation: async (key, target, text) => {
|
|
183
|
+
const body = textOf(text);
|
|
184
|
+
const pk = targetPk(key, target, true);
|
|
185
|
+
const at = now(), id = ulid(at);
|
|
186
|
+
database
|
|
187
|
+
.prepare("INSERT INTO annotations (uid,account_pk,target_type,target_pk,text,revision,created_at,updated_at,authored_by) VALUES (?,?,'source',?,?,1,?,?,'owner')")
|
|
188
|
+
.run(id, account(key), pk, body, at, at);
|
|
189
|
+
return annotation(key, id);
|
|
190
|
+
},
|
|
191
|
+
annotations: async (key, options = {}) => {
|
|
192
|
+
const { limit, offset } = bounded(options.limit, options.offset);
|
|
193
|
+
const target = options.target;
|
|
194
|
+
if (target)
|
|
195
|
+
state(key, target);
|
|
196
|
+
const reference = target?.type === "message" ? formatLocator(parseLocator(target.locator)) : target?.id;
|
|
197
|
+
const rows = database
|
|
198
|
+
.prepare("SELECT * FROM (SELECT a.*,t.type,t.reference FROM annotations a JOIN knowledge_targets t ON t.pk=a.target_pk WHERE a.target_type='source' AND a.account_pk=? UNION ALL SELECT a.*,'contact' AS type,i.native_id AS reference FROM annotations a JOIN identities i ON i.pk=a.target_pk JOIN account_identities ai ON ai.identity_pk=i.pk AND ai.account_pk=a.account_pk WHERE a.target_type='contact' AND a.account_pk=?) WHERE (? IS NULL OR (type=? AND reference=?)) AND (? IS NULL OR instr(lower(text),lower(?))>0) ORDER BY created_at DESC,uid DESC LIMIT ? OFFSET ?")
|
|
199
|
+
.all(account(key), account(key), target?.type ?? null, target?.type ?? null, reference ?? null, options.search ?? null, options.search ?? null, limit + 1, offset);
|
|
200
|
+
return { items: rows.slice(0, limit).map((row) => annotationOf(key, row)), hasMore: rows.length > limit };
|
|
201
|
+
},
|
|
202
|
+
annotation: async (key, id) => annotation(key, id),
|
|
203
|
+
editAnnotation: async (key, id, text, revision) => {
|
|
204
|
+
annotation(key, id);
|
|
205
|
+
const changed = database
|
|
206
|
+
.prepare("UPDATE annotations SET text=?,revision=revision+1,updated_at=? WHERE account_pk=? AND uid=? AND target_type IN ('source','contact') AND revision=?")
|
|
207
|
+
.run(textOf(text), now(), account(key), id, revision).changes;
|
|
208
|
+
if (!changed)
|
|
209
|
+
throw new CliError("validation_error", "annotation changed; read the current revision before editing");
|
|
210
|
+
return annotation(key, id);
|
|
211
|
+
},
|
|
212
|
+
removeAnnotation: async (key, id) => {
|
|
213
|
+
annotation(key, id);
|
|
214
|
+
database
|
|
215
|
+
.prepare("DELETE FROM annotations WHERE account_pk=? AND uid=? AND target_type IN ('source','contact')")
|
|
216
|
+
.run(account(key), id);
|
|
217
|
+
return { id, removed: true };
|
|
218
|
+
},
|
|
219
|
+
tags: async (key, target) => {
|
|
220
|
+
const native = nativeTarget(target);
|
|
221
|
+
if (native) {
|
|
222
|
+
if (state(key, target) !== "available")
|
|
223
|
+
return [];
|
|
224
|
+
return database
|
|
225
|
+
.prepare("SELECT tag FROM tags WHERE taggable_type=? AND taggable_pk=? ORDER BY tag")
|
|
226
|
+
.all(native.type, nativeTargetPk(context, key, native))
|
|
227
|
+
.map((row) => String(row.tag));
|
|
228
|
+
}
|
|
229
|
+
const pk = targetPk(key, target, false);
|
|
230
|
+
return pk === undefined
|
|
231
|
+
? []
|
|
232
|
+
: database
|
|
233
|
+
.prepare("SELECT tag FROM tags WHERE taggable_type='knowledge' AND taggable_pk=? ORDER BY tag")
|
|
234
|
+
.all(pk)
|
|
235
|
+
.map((row) => String(row.tag));
|
|
236
|
+
},
|
|
237
|
+
addTags: async (key, target, tags) => {
|
|
238
|
+
const native = nativeTarget(target);
|
|
239
|
+
if (native) {
|
|
240
|
+
if (state(key, target) !== "available")
|
|
241
|
+
throw new CliError("not_found", "target is unavailable or deleted");
|
|
242
|
+
return addNativeTags(context, nativeTargetPk(context, key, native), native.type, [
|
|
243
|
+
...new Set(tags.map(normalizeTag)),
|
|
244
|
+
]);
|
|
245
|
+
}
|
|
246
|
+
const labels = [...new Set(tags.map(normalizeTag))], pk = targetPk(key, target, true);
|
|
247
|
+
return labels.filter((tag) => database
|
|
248
|
+
.prepare("INSERT INTO tags (taggable_type,taggable_pk,tag,created_at,manual) VALUES ('knowledge',?,?,?,1) ON CONFLICT DO NOTHING")
|
|
249
|
+
.run(pk, tag, now()).changes > 0);
|
|
250
|
+
},
|
|
251
|
+
removeTags: async (key, target, tags) => {
|
|
252
|
+
const native = nativeTarget(target);
|
|
253
|
+
if (native) {
|
|
254
|
+
if (state(key, target) !== "available")
|
|
255
|
+
return [];
|
|
256
|
+
return removeNativeTags(context, nativeTargetPk(context, key, native), native.type, [
|
|
257
|
+
...new Set(tags.map(normalizeTag)),
|
|
258
|
+
]);
|
|
259
|
+
}
|
|
260
|
+
const labels = [...new Set(tags.map(normalizeTag))], pk = targetPk(key, target, false);
|
|
261
|
+
return pk === undefined
|
|
262
|
+
? []
|
|
263
|
+
: labels.filter((tag) => database
|
|
264
|
+
.prepare("DELETE FROM tags WHERE taggable_type='knowledge' AND taggable_pk=? AND tag=?")
|
|
265
|
+
.run(pk, tag).changes > 0);
|
|
266
|
+
},
|
|
267
|
+
labelled: async (key, options = {}) => {
|
|
268
|
+
const { limit, offset } = bounded(options.limit, options.offset);
|
|
269
|
+
const tag = options.tag === undefined ? null : normalizeTag(options.tag);
|
|
270
|
+
const rows = database
|
|
271
|
+
.prepare("SELECT t.* FROM knowledge_targets t WHERE t.account_pk=? AND EXISTS (SELECT 1 FROM tags l WHERE l.taggable_type='knowledge' AND l.taggable_pk=t.pk AND (? IS NULL OR l.tag=?)) ORDER BY t.pk LIMIT ? OFFSET ?")
|
|
272
|
+
.all(account(key), tag, tag, limit + 1, offset);
|
|
273
|
+
return {
|
|
274
|
+
items: rows.slice(0, limit).map((row) => {
|
|
275
|
+
const target = targetOf(row);
|
|
276
|
+
return {
|
|
277
|
+
target,
|
|
278
|
+
tags: database
|
|
279
|
+
.prepare("SELECT tag FROM tags WHERE taggable_type='knowledge' AND taggable_pk=? ORDER BY tag")
|
|
280
|
+
.all(Number(row.pk))
|
|
281
|
+
.map((label) => String(label.tag)),
|
|
282
|
+
targetState: state(key, target),
|
|
283
|
+
};
|
|
284
|
+
}),
|
|
285
|
+
hasMore: rows.length > limit,
|
|
286
|
+
};
|
|
287
|
+
},
|
|
288
|
+
addEntity: async (key, kind, name) => {
|
|
289
|
+
if (!["organization", "family", "project", "group"].includes(kind))
|
|
290
|
+
throw new CliError("validation_error", "unknown entity kind");
|
|
291
|
+
const at = now(), id = ulid(at), title = textOf(name, 200);
|
|
292
|
+
database
|
|
293
|
+
.prepare("INSERT INTO knowledge_entities (uid,account_pk,kind,name,created_at) VALUES (?,?,?,?,?)")
|
|
294
|
+
.run(id, account(key), kind, title, at);
|
|
295
|
+
return { id, kind, name: title, createdAt: iso(at) };
|
|
296
|
+
},
|
|
297
|
+
entities: async (key) => database
|
|
298
|
+
.prepare("SELECT * FROM knowledge_entities WHERE account_pk=? ORDER BY name,uid LIMIT 500")
|
|
299
|
+
.all(account(key))
|
|
300
|
+
.map(entityOf),
|
|
301
|
+
relate: async (key, input) => {
|
|
302
|
+
requiredReference(key, input.from);
|
|
303
|
+
requiredReference(key, input.to, input.kind === "assigned-to");
|
|
304
|
+
if (input.from === input.to ||
|
|
305
|
+
!["member-of", "related-to", "assigned-to"].includes(input.kind) ||
|
|
306
|
+
(input.kind === "assigned-to" && (!input.from.startsWith("task:") || !input.to.startsWith("person:"))))
|
|
307
|
+
throw new CliError("validation_error", "a relationship needs distinct references and a supported kind");
|
|
308
|
+
const pk = account(key);
|
|
309
|
+
const existing = database
|
|
310
|
+
.prepare("SELECT * FROM knowledge_relations WHERE account_pk=? AND from_ref=? AND to_ref=? AND kind=?")
|
|
311
|
+
.get(pk, input.from, input.to, input.kind);
|
|
312
|
+
if (existing)
|
|
313
|
+
return relationOf(existing);
|
|
314
|
+
const id = ulid(now());
|
|
315
|
+
database
|
|
316
|
+
.prepare("INSERT INTO knowledge_relations (uid,account_pk,from_ref,to_ref,kind,role,evidence,created_at,confirmed,provenance) VALUES (?,?,?,?,?,?,?,?,?,?)")
|
|
317
|
+
.run(id, pk, input.from, input.to, input.kind, input.role === undefined ? null : textOf(input.role, 200), input.evidence === undefined ? null : textOf(input.evidence, 2000), now(), input.confirmed === false ? 0 : 1, input.provenance === undefined ? null : textOf(input.provenance, 2000));
|
|
318
|
+
return relationOf(database.prepare("SELECT * FROM knowledge_relations WHERE uid=?").get(id));
|
|
319
|
+
},
|
|
320
|
+
relations: async (key, reference) => database
|
|
321
|
+
.prepare("SELECT * FROM knowledge_relations WHERE account_pk=? AND (? IS NULL OR from_ref=? OR to_ref=?) ORDER BY created_at,uid LIMIT 500")
|
|
322
|
+
.all(account(key), reference ?? null, reference ?? null, reference ?? null)
|
|
323
|
+
.map(relationOf),
|
|
324
|
+
removeRelation: async (key, id) => {
|
|
325
|
+
if (!database.prepare("DELETE FROM knowledge_relations WHERE account_pk=? AND uid=?").run(account(key), id).changes)
|
|
326
|
+
throw new CliError("not_found", "no relationship with that id in this account");
|
|
327
|
+
return { id, removed: true };
|
|
328
|
+
},
|
|
329
|
+
confirmRelation: async (key, id) => {
|
|
330
|
+
const row = database
|
|
331
|
+
.prepare("SELECT * FROM knowledge_relations WHERE account_pk=? AND uid=?")
|
|
332
|
+
.get(account(key), id);
|
|
333
|
+
if (!row)
|
|
334
|
+
throw new CliError("not_found", "no relationship with that id in this account");
|
|
335
|
+
requiredReference(key, String(row.from_ref));
|
|
336
|
+
requiredReference(key, String(row.to_ref), row.kind === "assigned-to");
|
|
337
|
+
database.prepare("UPDATE knowledge_relations SET confirmed=1 WHERE account_pk=? AND uid=?").run(account(key), id);
|
|
338
|
+
return relationOf({ ...row, confirmed: 1 });
|
|
339
|
+
},
|
|
340
|
+
schedule: async (key, task, dueAt, timezone) => {
|
|
341
|
+
openTask(key, task);
|
|
342
|
+
try {
|
|
343
|
+
new Intl.DateTimeFormat("en", { timeZone: timezone }).format();
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
throw new CliError("validation_error", "unknown IANA timezone");
|
|
347
|
+
}
|
|
348
|
+
const timestamp = due(dueAt), pk = account(key);
|
|
349
|
+
const existing = database
|
|
350
|
+
.prepare("SELECT * FROM knowledge_reminders WHERE account_pk=? AND task_id=? AND due_at=? AND state IN ('pending','leased')")
|
|
351
|
+
.get(pk, task, timestamp);
|
|
352
|
+
if (existing)
|
|
353
|
+
return reminderOf(existing);
|
|
354
|
+
const id = ulid(now());
|
|
355
|
+
database
|
|
356
|
+
.prepare("INSERT INTO knowledge_reminders (uid,account_pk,task_id,due_at,timezone,state,revision,created_at,updated_at) VALUES (?,?,?,?,?,'pending',1,?,?)")
|
|
357
|
+
.run(id, pk, task, timestamp, timezone, now(), now());
|
|
358
|
+
return reminder(key, id);
|
|
359
|
+
},
|
|
360
|
+
reminders: async (key) => database
|
|
361
|
+
.prepare("SELECT * FROM knowledge_reminders WHERE account_pk=? ORDER BY due_at,uid LIMIT 500")
|
|
362
|
+
.all(account(key))
|
|
363
|
+
.map(reminderOf),
|
|
364
|
+
cancelReminder: async (key, id) => {
|
|
365
|
+
reminder(key, id);
|
|
366
|
+
database
|
|
367
|
+
.prepare("UPDATE knowledge_reminders SET state='cancelled',revision=revision+1,receipt=NULL,lease_until=NULL,updated_at=? WHERE account_pk=? AND uid=? AND state IN ('pending','leased')")
|
|
368
|
+
.run(now(), account(key), id);
|
|
369
|
+
return reminder(key, id);
|
|
370
|
+
},
|
|
371
|
+
snoozeReminder: async (key, id, dueAt, revision) => {
|
|
372
|
+
const held = reminder(key, id);
|
|
373
|
+
openTask(key, held.task);
|
|
374
|
+
if (!database
|
|
375
|
+
.prepare("UPDATE knowledge_reminders SET due_at=?,state='pending',revision=revision+1,receipt=NULL,lease_until=NULL,updated_at=? WHERE account_pk=? AND uid=? AND revision=? AND state<>'cancelled'")
|
|
376
|
+
.run(due(dueAt), now(), account(key), id, revision).changes)
|
|
377
|
+
throw new CliError("validation_error", "reminder changed or was cancelled");
|
|
378
|
+
return reminder(key, id);
|
|
379
|
+
},
|
|
380
|
+
claimReminders: async (key, options = {}) => {
|
|
381
|
+
const { limit } = bounded(options.limit), lease = options.leaseMs ?? 60_000;
|
|
382
|
+
if (!Number.isInteger(lease) || lease < 1000 || lease > 3_600_000)
|
|
383
|
+
throw new CliError("validation_error", "lease takes 1000–3600000 milliseconds");
|
|
384
|
+
const pk = account(key), at = now();
|
|
385
|
+
database
|
|
386
|
+
.prepare("UPDATE knowledge_reminders SET state='cancelled',receipt=NULL,lease_until=NULL,updated_at=? WHERE account_pk=? AND state IN ('pending','leased') AND task_id NOT IN (SELECT id FROM tasks WHERE account=? AND state='open')")
|
|
387
|
+
.run(at, pk, taskAccount(key));
|
|
388
|
+
const rows = database
|
|
389
|
+
.prepare("SELECT uid FROM knowledge_reminders WHERE account_pk=? AND due_at<=? AND (state='pending' OR (state='leased' AND lease_until<=?)) ORDER BY due_at,uid LIMIT ?")
|
|
390
|
+
.all(pk, at, at, limit);
|
|
391
|
+
const claimed = [];
|
|
392
|
+
for (const row of rows) {
|
|
393
|
+
const receipt = ulid(at);
|
|
394
|
+
if (database
|
|
395
|
+
.prepare("UPDATE knowledge_reminders SET state='leased',receipt=?,lease_until=?,updated_at=? WHERE account_pk=? AND uid=? AND (state='pending' OR (state='leased' AND lease_until<=?))")
|
|
396
|
+
.run(receipt, at + lease, at, pk, String(row.uid), at).changes)
|
|
397
|
+
claimed.push(reminder(key, String(row.uid)));
|
|
398
|
+
}
|
|
399
|
+
return claimed;
|
|
400
|
+
},
|
|
401
|
+
acknowledgeReminder: async (key, id, receipt) => {
|
|
402
|
+
const held = reminder(key, id);
|
|
403
|
+
if (held.state === "delivered" && held.receipt === receipt)
|
|
404
|
+
return held;
|
|
405
|
+
openTask(key, held.task);
|
|
406
|
+
if (!database
|
|
407
|
+
.prepare("UPDATE knowledge_reminders SET state='delivered',lease_until=NULL,updated_at=? WHERE account_pk=? AND uid=? AND state='leased' AND receipt=? AND lease_until>?")
|
|
408
|
+
.run(now(), account(key), id, receipt, now()).changes)
|
|
409
|
+
throw new CliError("validation_error", "receipt is stale or the delivery lease expired");
|
|
410
|
+
return reminder(key, id);
|
|
411
|
+
},
|
|
412
|
+
};
|
|
413
|
+
};
|
|
414
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/store/sqlite/knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGjD;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE;AAC1D,yFAAyF;GACvF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,IAAI,CAAA;CAAE,CAAA;AAEhD,eAAO,MAAM,QAAQ,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGjD;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE;AAC1D,yFAAyF;GACvF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,IAAI,CAAA;CAAE,CAAA;AAEhD,eAAO,MAAM,QAAQ,EAAE,aAAa,EA+BnC,CAAA;AAED,eAAO,MAAM,mBAAmB,cACpB,aAAa,EAAE,cACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,KAClD,SAAS,EAgBX,CAAA"}
|
|
@@ -27,6 +27,9 @@ export const MANIFEST = [
|
|
|
27
27
|
{ name: "20261007193040_version-22-tag-provenance", version: 22, minCompatible: 6 },
|
|
28
28
|
{ name: "20261007193701_version-22-alias-folding", version: 22, minCompatible: 6 },
|
|
29
29
|
{ name: "20261007194652_version-22-metadata-cleanup", version: 22, minCompatible: 6 },
|
|
30
|
+
{ name: "20261007221350_version-23-knowledge", version: 23, minCompatible: 6 },
|
|
31
|
+
{ name: "20261007221537_version-23-knowledge-cleanup", version: 23, minCompatible: 6 },
|
|
32
|
+
{ name: "20261007225410_version-23-relation-proposals", version: 23, minCompatible: 6 },
|
|
30
33
|
];
|
|
31
34
|
export const generatedMigrations = (manifest = MANIFEST, generated = GENERATED) => {
|
|
32
35
|
const migrations = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/store/sqlite/manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAcrD,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,EAAE,IAAI,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,IAAI,EAAE;IAC/D,4FAA4F;IAC5F,EAAE,IAAI,EAAE,kCAAkC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;IAC1E,EAAE,IAAI,EAAE,wCAAwC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;IAChF,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/E,EAAE,IAAI,EAAE,qCAAqC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;IAC7E,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/E,EAAE,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC7E,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAChF,EAAE,IAAI,EAAE,wCAAwC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACjF,EAAE,IAAI,EAAE,sCAAsC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/E,EAAE,IAAI,EAAE,yCAAyC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAClF,EAAE,IAAI,EAAE,kCAAkC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC3E,EAAE,IAAI,EAAE,sCAAsC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/E,EAAE,IAAI,EAAE,sCAAsC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/E,EAAE,IAAI,EAAE,gCAAgC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACzE,EAAE,IAAI,EAAE,wCAAwC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACjF,EAAE,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC7E,EAAE,IAAI,EAAE,0CAA0C,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACnF,EAAE,IAAI,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACrF,EAAE,IAAI,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACrF,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAC1E,EAAE,IAAI,EAAE,wCAAwC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACjF,EAAE,IAAI,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACrF,EAAE,IAAI,EAAE,0CAA0C,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IACnF,EAAE,IAAI,EAAE,yCAAyC,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;IAClF,EAAE,IAAI,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/store/sqlite/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.generated.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/migrations.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"migrations.generated.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/migrations.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,EAsQ7D,CAAA"}
|
|
@@ -234,6 +234,32 @@ export const GENERATED = [
|
|
|
234
234
|
"CREATE TRIGGER private_metadata_identity_delete BEFORE DELETE ON identities BEGIN\n DELETE FROM contact_aliases WHERE identity_pk=old.pk;\n DELETE FROM annotations WHERE target_type='contact' AND target_pk=old.pk;\nEND;",
|
|
235
235
|
"CREATE TRIGGER private_metadata_account_delete BEFORE DELETE ON accounts BEGIN\n DELETE FROM contact_aliases WHERE account_pk=old.pk;\n DELETE FROM annotations WHERE account_pk=old.pk;\nEND;"
|
|
236
236
|
]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"name": "20261007221350_version-23-knowledge",
|
|
240
|
+
"statements": [
|
|
241
|
+
"CREATE TABLE `knowledge_entities` (\n\t`uid` text PRIMARY KEY,\n\t`account_pk` integer NOT NULL,\n\t`kind` text NOT NULL,\n\t`name` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tCONSTRAINT `fk_knowledge_entities_account_pk_accounts_pk_fk` FOREIGN KEY (`account_pk`) REFERENCES `accounts`(`pk`)\n);",
|
|
242
|
+
"CREATE TABLE `knowledge_relations` (\n\t`uid` text PRIMARY KEY,\n\t`account_pk` integer NOT NULL,\n\t`from_ref` text NOT NULL,\n\t`to_ref` text NOT NULL,\n\t`kind` text NOT NULL,\n\t`role` text,\n\t`evidence` text,\n\t`created_at` integer NOT NULL,\n\tCONSTRAINT `fk_knowledge_relations_account_pk_accounts_pk_fk` FOREIGN KEY (`account_pk`) REFERENCES `accounts`(`pk`)\n);",
|
|
243
|
+
"CREATE TABLE `knowledge_reminders` (\n\t`uid` text PRIMARY KEY,\n\t`account_pk` integer NOT NULL,\n\t`task_id` text NOT NULL,\n\t`due_at` integer NOT NULL,\n\t`timezone` text NOT NULL,\n\t`state` text NOT NULL,\n\t`revision` integer DEFAULT 1 NOT NULL,\n\t`lease_until` integer,\n\t`receipt` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer NOT NULL,\n\tCONSTRAINT `fk_knowledge_reminders_account_pk_accounts_pk_fk` FOREIGN KEY (`account_pk`) REFERENCES `accounts`(`pk`)\n);",
|
|
244
|
+
"CREATE TABLE `knowledge_targets` (\n\t`pk` integer PRIMARY KEY AUTOINCREMENT,\n\t`account_pk` integer NOT NULL,\n\t`type` text NOT NULL,\n\t`reference` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tCONSTRAINT `fk_knowledge_targets_account_pk_accounts_pk_fk` FOREIGN KEY (`account_pk`) REFERENCES `accounts`(`pk`)\n);",
|
|
245
|
+
"CREATE UNIQUE INDEX `knowledge_relation_identity` ON `knowledge_relations` (`account_pk`,`from_ref`,`to_ref`,`kind`);",
|
|
246
|
+
"CREATE INDEX `knowledge_reminders_due` ON `knowledge_reminders` (`account_pk`,`state`,`due_at`);",
|
|
247
|
+
"CREATE UNIQUE INDEX `knowledge_target_identity` ON `knowledge_targets` (`account_pk`,`type`,`reference`);"
|
|
248
|
+
]
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "20261007221537_version-23-knowledge-cleanup",
|
|
252
|
+
"statements": [
|
|
253
|
+
"-- Custom SQL migration file, put your code below! --\nCREATE TRIGGER knowledge_account_delete BEFORE DELETE ON accounts BEGIN\n DELETE FROM tags WHERE taggable_type='knowledge' AND taggable_pk IN (SELECT pk FROM knowledge_targets WHERE account_pk=old.pk);\n DELETE FROM annotations WHERE target_type='source' AND account_pk=old.pk;\n DELETE FROM knowledge_relations WHERE account_pk=old.pk;\n DELETE FROM knowledge_reminders WHERE account_pk=old.pk;\n DELETE FROM knowledge_entities WHERE account_pk=old.pk;\n DELETE FROM knowledge_targets WHERE account_pk=old.pk;\nEND;",
|
|
254
|
+
"CREATE TRIGGER knowledge_task_closed AFTER UPDATE OF state ON tasks WHEN new.state<>'open' BEGIN\n UPDATE knowledge_reminders SET state='cancelled',receipt=NULL,lease_until=NULL,revision=revision+1\n WHERE task_id=new.id AND state IN ('pending','leased');\nEND;"
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"name": "20261007225410_version-23-relation-proposals",
|
|
259
|
+
"statements": [
|
|
260
|
+
"ALTER TABLE `knowledge_relations` ADD `confirmed` integer DEFAULT 1 NOT NULL;",
|
|
261
|
+
"ALTER TABLE `knowledge_relations` ADD `provenance` text;"
|
|
262
|
+
]
|
|
237
263
|
}
|
|
238
264
|
];
|
|
239
265
|
//# sourceMappingURL=migrations.generated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.generated.js","sourceRoot":"","sources":["../../../src/store/sqlite/migrations.generated.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrations.generated.js","sourceRoot":"","sources":["../../../src/store/sqlite/migrations.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private-people.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/private-people.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,kBAAkB,EAAE,CAAA;CAC5B;AAuBD,eAAO,MAAM,cAAc,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,KAAG,cAYzF,CAAA;AAED,eAAO,MAAM,QAAQ,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,SAAS,MAAM,GAAG,IAAI;;;CAYtG,CAAA;AAQD,eAAO,MAAM,OAAO,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,QAAQ,MAAM,KAUN,kBACvF,CAAA;AAED,eAAO,MAAM,IAAI,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,MAAM,MAAM,KAAG,kBAI3F,CAAA;AAED,eAAO,MAAM,QAAQ,YACV,YAAY,OAChB,UAAU,YACL,MAAM,MACZ,MAAM,QACJ,MAAM,YACF,MAAM,uBAYjB,CAAA;AAED,eAAO,MAAM,UAAU,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,MAAM,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"private-people.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/private-people.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,kBAAkB,EAAE,CAAA;CAC5B;AAuBD,eAAO,MAAM,cAAc,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,KAAG,cAYzF,CAAA;AAED,eAAO,MAAM,QAAQ,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,SAAS,MAAM,GAAG,IAAI;;;CAYtG,CAAA;AAQD,eAAO,MAAM,OAAO,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,QAAQ,MAAM,KAUN,kBACvF,CAAA;AAED,eAAO,MAAM,IAAI,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,MAAM,MAAM,KAAG,kBAI3F,CAAA;AAED,eAAO,MAAM,QAAQ,YACV,YAAY,OAChB,UAAU,YACL,MAAM,MACZ,MAAM,QACJ,MAAM,YACF,MAAM,uBAYjB,CAAA;AAED,eAAO,MAAM,UAAU,YAAa,YAAY,OAAO,UAAU,YAAY,MAAM,MAAM,MAAM;;;;CAS9F,CAAA"}
|
|
@@ -25,8 +25,8 @@ export const privateContact = (context, key, personId) => {
|
|
|
25
25
|
.prepare("SELECT alias FROM contact_aliases WHERE account_pk=? AND identity_pk=?")
|
|
26
26
|
.get(account, identity)?.alias;
|
|
27
27
|
const notes = context.database
|
|
28
|
-
.prepare("SELECT * FROM annotations WHERE account_pk=? AND target_type='contact' AND target_pk=? ORDER BY created_at, uid")
|
|
29
|
-
.all(account, identity)
|
|
28
|
+
.prepare("SELECT * FROM annotations WHERE account_pk=? AND ((target_type='contact' AND target_pk=?) OR (target_type='source' AND target_pk IN (SELECT pk FROM knowledge_targets WHERE account_pk=? AND type='contact' AND reference=?))) ORDER BY created_at, uid")
|
|
29
|
+
.all(account, identity, account, personId)
|
|
30
30
|
.map((row) => noteOf(row, personId));
|
|
31
31
|
return { personId, alias: alias == null ? null : String(alias), notes };
|
|
32
32
|
};
|
|
@@ -68,8 +68,8 @@ export const editNote = (context, key, personId, id, text, revision) => {
|
|
|
68
68
|
note(context, key, personId, id);
|
|
69
69
|
const changed = context.database
|
|
70
70
|
.prepare("UPDATE annotations SET text=?, updated_at=?, revision=revision+1 " +
|
|
71
|
-
"WHERE uid=? AND account_pk=? AND target_type='contact' AND target_pk=? AND revision=?")
|
|
72
|
-
.run(noteText(text), context.now(), id, account, identity, revision).changes;
|
|
71
|
+
"WHERE uid=? AND account_pk=? AND ((target_type='contact' AND target_pk=?) OR (target_type='source' AND target_pk IN (SELECT pk FROM knowledge_targets WHERE account_pk=? AND type='contact' AND reference=?))) AND revision=?")
|
|
72
|
+
.run(noteText(text), context.now(), id, account, identity, account, personId, revision).changes;
|
|
73
73
|
if (!changed)
|
|
74
74
|
throw new CliError("validation_error", "the note changed; read its current revision before editing");
|
|
75
75
|
return note(context, key, personId, id);
|
|
@@ -78,8 +78,8 @@ export const removeNote = (context, key, personId, id) => {
|
|
|
78
78
|
const { account, identity } = required(context, key, personId);
|
|
79
79
|
note(context, key, personId, id);
|
|
80
80
|
context.database
|
|
81
|
-
.prepare("DELETE FROM annotations WHERE uid=? AND account_pk=? AND target_type='contact' AND target_pk=?")
|
|
82
|
-
.run(id, account, identity);
|
|
81
|
+
.prepare("DELETE FROM annotations WHERE uid=? AND account_pk=? AND ((target_type='contact' AND target_pk=?) OR (target_type='source' AND target_pk IN (SELECT pk FROM knowledge_targets WHERE account_pk=? AND type='contact' AND reference=?)))")
|
|
82
|
+
.run(id, account, identity, account, personId);
|
|
83
83
|
return { id, personId, removed: true };
|
|
84
84
|
};
|
|
85
85
|
//# sourceMappingURL=private-people.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private-people.js","sourceRoot":"","sources":["../../../src/store/sqlite/private-people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAiBnC,MAAM,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAgB,EAAE,GAAe,EAAE,QAAgB,EAAE,EAAE;IACjF,MAAM,GAAG,GAAG,QAAQ;SACjB,OAAO,CACN,iEAAiE;QAC/D,4FAA4F;QAC5F,yEAAyE,CAC5E;SACA,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,kDAAkD,CAAC,CAAA;IAC7F,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAA;AAC/E,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,GAA4B,EAAE,QAAgB,EAAsB,EAAE,CAAC,CAAC;IACtF,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IACnB,QAAQ;IACR,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAW;IAClD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAW;CACnD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAqB,EAAE,GAAe,EAAE,QAAgB,EAAkB,EAAE;IACzG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ;SAC3B,OAAO,CAAC,wEAAwE,CAAC;SACjF,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ;SAC3B,OAAO,CACN,
|
|
1
|
+
{"version":3,"file":"private-people.js","sourceRoot":"","sources":["../../../src/store/sqlite/private-people.ts"],"names":[],"mappings":"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"}
|