@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.
Files changed (68) hide show
  1. package/dist/attachments/csv-spans.d.ts +12 -0
  2. package/dist/attachments/csv-spans.d.ts.map +1 -0
  3. package/dist/attachments/csv-spans.js +40 -0
  4. package/dist/attachments/csv-spans.js.map +1 -0
  5. package/dist/attachments/extract.d.ts +8 -0
  6. package/dist/attachments/extract.d.ts.map +1 -1
  7. package/dist/attachments/extract.js +32 -4
  8. package/dist/attachments/extract.js.map +1 -1
  9. package/dist/cli/messenger/ask.d.ts.map +1 -1
  10. package/dist/cli/messenger/ask.js +1 -1
  11. package/dist/cli/messenger/ask.js.map +1 -1
  12. package/dist/cli/messenger/port.d.ts +2 -0
  13. package/dist/cli/messenger/port.d.ts.map +1 -1
  14. package/dist/cli/messenger/port.js.map +1 -1
  15. package/dist/cli/messenger/topics-command.d.ts.map +1 -1
  16. package/dist/cli/messenger/topics-command.js +9 -0
  17. package/dist/cli/messenger/topics-command.js.map +1 -1
  18. package/dist/documents.d.ts +3 -0
  19. package/dist/documents.d.ts.map +1 -0
  20. package/dist/documents.js +2 -0
  21. package/dist/documents.js.map +1 -0
  22. package/dist/mcp/tools/topics.d.ts.map +1 -1
  23. package/dist/mcp/tools/topics.js +13 -0
  24. package/dist/mcp/tools/topics.js.map +1 -1
  25. package/dist/sends/guard.js +1 -1
  26. package/dist/sends/guard.js.map +1 -1
  27. package/dist/sends/journal.d.ts +1 -1
  28. package/dist/sends/journal.d.ts.map +1 -1
  29. package/dist/sends/journal.js.map +1 -1
  30. package/dist/sends/permissions.d.ts.map +1 -1
  31. package/dist/sends/permissions.js +2 -0
  32. package/dist/sends/permissions.js.map +1 -1
  33. package/dist/services/index.d.ts +1 -1
  34. package/dist/services/index.d.ts.map +1 -1
  35. package/dist/services/index.js +1 -1
  36. package/dist/services/index.js.map +1 -1
  37. package/dist/services/tasks.js +1 -1
  38. package/dist/services/tasks.js.map +1 -1
  39. package/dist/services/topics.d.ts +5 -0
  40. package/dist/services/topics.d.ts.map +1 -1
  41. package/dist/services/topics.js +13 -0
  42. package/dist/services/topics.js.map +1 -1
  43. package/dist/store/index.d.ts +1 -0
  44. package/dist/store/index.d.ts.map +1 -1
  45. package/dist/store/index.js.map +1 -1
  46. package/dist/store/sqlite/knowledge.d.ts +128 -0
  47. package/dist/store/sqlite/knowledge.d.ts.map +1 -0
  48. package/dist/store/sqlite/knowledge.js +414 -0
  49. package/dist/store/sqlite/knowledge.js.map +1 -0
  50. package/dist/store/sqlite/manifest.d.ts.map +1 -1
  51. package/dist/store/sqlite/manifest.js +3 -0
  52. package/dist/store/sqlite/manifest.js.map +1 -1
  53. package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
  54. package/dist/store/sqlite/migrations.generated.js +26 -0
  55. package/dist/store/sqlite/migrations.generated.js.map +1 -1
  56. package/dist/store/sqlite/private-people.d.ts.map +1 -1
  57. package/dist/store/sqlite/private-people.js +6 -6
  58. package/dist/store/sqlite/private-people.js.map +1 -1
  59. package/dist/store/sqlite/schema.d.ts +524 -0
  60. package/dist/store/sqlite/schema.d.ts.map +1 -1
  61. package/dist/store/sqlite/schema.js +47 -0
  62. package/dist/store/sqlite/schema.js.map +1 -1
  63. package/dist/store/store.d.ts +2 -0
  64. package/dist/store/store.d.ts.map +1 -1
  65. package/dist/store/store.js +2 -0
  66. package/dist/store/store.js.map +1 -1
  67. package/package.json +6 -1
  68. 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,QAAQ,IAAI,cAAc,EAC1B,UAAU,IAAI,gBAAgB,GAE/B,MAAM,WAAW,CAAA;AAoGlB,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;AACrE,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE;IAC1C,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,GAAG;QACX,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzB,MAAM,GAAG,CAAC;QACV,MAAM,GAAG,OAAO;QAEhB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,6CAA6C,CAAC,CAAA;IACvF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC1B,CAAC,CAAA;AACD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAG,GAAG,OAAO,EAAE,EAAE;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,GAAG,aAAa,CAAC,CAAA;IAC1G,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAqB,EAAkB,EAAE;IAC1E,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IACjC,MAAM,OAAO,GAAG,CAAC,GAAe,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,QAAQ;aACjB,OAAO,CAAC,0DAA0D,CAAC;aACnE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAA;QAClF,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAA;IACD,MAAM,WAAW,GAAG,CAAC,GAAe,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,CAAA;IACzE,MAAM,KAAK,GAAG,CAAC,GAAe,EAAE,MAAuB,EAA6B,EAAE;QACpF,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YACnF,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,CAAA;QACpE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC3C,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO;gBACpE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAA;YAClF,MAAM,GAAG,GAAG,QAAQ;iBACjB,OAAO,CACN,6HAA6H,CAC9H;iBACA,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;QAChF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAA;QAC5F,MAAM,GAAG,GACP,MAAM,CAAC,IAAI,KAAK,MAAM;YACpB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;YAChG,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;gBACzB,CAAC,CAAC,QAAQ;qBACL,OAAO,CACN,0IAA0I,CAC3I;qBACA,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;gBACrC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;oBACxB,CAAC,CAAC,QAAQ;yBACL,OAAO,CACN,sKAAsK,CACvK;yBACA,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;oBACvB,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;wBACtB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;wBACpG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAClH,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAA;IAC1C,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,CAAC,GAAe,EAAE,MAAuB,EAAE,MAAe,EAAE,EAAE;QAC7E,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QACvB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA;QACrG,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;gBAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,sCAAsC,CAAC,CAAA;YAC/G,QAAQ;iBACL,OAAO,CACN,8GAA8G,CAC/G;iBACA,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ;aACjB,OAAO,CAAC,gFAAgF,CAAC;aACzF,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzC,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAmB,EAAE,CAC7C,GAAG,CAAC,IAAI,KAAK,SAAS;QACpB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QACrD,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAmD,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAA;IAClG,MAAM,YAAY,GAAG,CAAC,MAAuB,EAAyB,EAAE;QACtE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC5C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;QAC9E,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAA;QACtE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAA;QAC9E,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IACD,MAAM,YAAY,GAAG,CAAC,GAAe,EAAE,GAAQ,EAAc,EAAE;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC5B,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YACnB,MAAM;YACN,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;YAC/B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9B,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;SAC/B,CAAA;IACH,CAAC,CAAA;IACD,MAAM,UAAU,GAAG,CAAC,GAAe,EAAE,EAAU,EAAc,EAAE;QAC7D,MAAM,GAAG,GAAG,QAAQ;aACjB,OAAO,CACN,maAAma,CACpa;aACA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,4CAA4C,CAAC,CAAA;QACvF,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAmB,EAAE,CAAC,CAAC;QAC/C,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACnB,IAAI,EAAE,GAAG,CAAC,IAA+B;QACzC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;KAC/B,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAqB,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1B,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC,IAAiC;QAC3C,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAChD,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC5D,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;QACtC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAClE,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM;QAC5E,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;KAC/B,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAY,EAAE,CAAC,CAAC;QAC1C,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QACzB,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,KAAK,EAAE,GAAG,CAAC,KAA0B;QACrC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;KAC1D,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,CAAC,GAAe,EAAE,EAAU,EAAE,EAAE;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;QACpH,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,0CAA0C,CAAC,CAAA;QACrF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC,CAAA;IACD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,EAAE;QAC5B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjF,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,6DAA6D,CAAC,CAAA;QACvG,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,CAAC,GAAe,EAAE,EAAU,EAAE,EAAE;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;QAC1G,IAAI,GAAG,EAAE,KAAK,KAAK,MAAM;YACvB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kDAAkD,CAAC,CAAA;IAC9F,CAAC,CAAA;IACD,MAAM,iBAAiB,GAAG,CAAC,GAAe,EAAE,SAAiB,EAAE,YAAY,GAAG,KAAK,EAAE,EAAE;QACrF,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9C,IACE,YAAY;YACZ,MAAM,KAAK,QAAQ;YACnB,QAAQ,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE3E,OAAM;QACR,IACE,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC;YACjE,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,WAAW;YAEhE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,uEAAuE,CAAC,CAAA;IAC5G,CAAC,CAAA;IACD,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;YACnC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAChE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;gBACvF,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAA;YAC9D,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI;gBAClD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAA;YAC5E,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YACvE,OAAO,CAAC,GAAG,CAAC,CAAA;YACZ,MAAM,IAAI,GAAG,QAAQ;iBAClB,OAAO,CACN,mEAAmE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,0CAA0C,CAClM;iBACA,GAAG,CACF,WAAW,CAAC,GAAG,CAAC,EAChB,OAAO,CAAC,KAAK,IAAI,IAAI,EACrB,OAAO,CAAC,KAAK,IAAI,IAAI,EACrB,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAC1B,KAAK,GAAG,CAAC,EACT,MAAM,CACP,CAAA;YACH,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAA;QACnG,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YACtC,MAAM,EAAE,GAAG,GAAG,EAAE,EACd,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YACf,QAAQ;iBACL,OAAO,CACN,wJAAwJ,CACzJ;iBACA,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAY,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YACpD,OAAO,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC5B,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;YACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAChE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC7B,IAAI,MAAM;gBAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAC9B,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAA;YACvG,MAAM,IAAI,GAAG,QAAQ;iBAClB,OAAO,CACN,4iBAA4iB,CAC7iB;iBACA,GAAG,CACF,OAAO,CAAC,GAAG,CAAC,EACZ,OAAO,CAAC,GAAG,CAAC,EACZ,MAAM,EAAE,IAAI,IAAI,IAAI,EACpB,MAAM,EAAE,IAAI,IAAI,IAAI,EACpB,SAAS,IAAI,IAAI,EACjB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,KAAK,GAAG,CAAC,EACT,MAAM,CACP,CAAA;YACH,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAA;QAC3G,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QAClD,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAChD,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACnB,MAAM,OAAO,GAAG,QAAQ;iBACrB,OAAO,CACN,oJAAoJ,CACrJ;iBACA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAA;YAC/D,IAAI,CAAC,OAAO;gBACV,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,8DAA8D,CAAC,CAAA;YACxG,OAAO,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC5B,CAAC;QACD,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;YAClC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACnB,QAAQ;iBACL,OAAO,CAAC,8FAA8F,CAAC;iBACvG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACxB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC9B,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;YACnC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;oBAAE,OAAO,EAAE,CAAA;gBACjD,OAAO,QAAQ;qBACZ,OAAO,CAAC,2EAA2E,CAAC;qBACpF,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;qBACtD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAClC,CAAC;YACD,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YACvC,OAAO,EAAE,KAAK,SAAS;gBACrB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,QAAQ;qBACL,OAAO,CAAC,qFAAqF,CAAC;qBAC9F,GAAG,CAAC,EAAE,CAAC;qBACP,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACtC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;YACnC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;oBAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAA;gBAC3G,OAAO,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE;oBAC/E,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;iBACnC,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EACjD,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAClC,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,EAAE,CACN,QAAQ;iBACL,OAAO,CACN,wHAAwH,CACzH;iBACA,GAAG,CAAC,EAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAC/C,CAAA;QACH,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;YACnC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW;oBAAE,OAAO,EAAE,CAAA;gBACjD,OAAO,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE;oBAClF,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;iBACnC,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EACjD,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YACnC,OAAO,EAAE,KAAK,SAAS;gBACrB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,CAAC,MAAM,CACX,CAAC,GAAG,EAAE,EAAE,CACN,QAAQ;qBACL,OAAO,CAAC,8EAA8E,CAAC;qBACvF,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAC9B,CAAA;QACP,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;YACpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAChE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACxE,MAAM,IAAI,GAAG,QAAQ;iBAClB,OAAO,CACN,+MAA+M,CAChN;iBACA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;YACjD,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;oBAC5B,OAAO;wBACL,MAAM;wBACN,IAAI,EAAE,QAAQ;6BACX,OAAO,CAAC,qFAAqF,CAAC;6BAC9F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;6BACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACpC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;qBAChC,CAAA;gBACH,CAAC,CAAC;gBACF,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;aAC7B,CAAA;QACH,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YACnC,IAAI,CAAC,CAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAA;YAC/D,MAAM,EAAE,GAAG,GAAG,EAAE,EACd,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EACb,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAC3B,QAAQ;iBACL,OAAO,CAAC,yFAAyF,CAAC;iBAClG,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;YACzC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAA;QACtD,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACtB,QAAQ;aACL,OAAO,CAAC,iFAAiF,CAAC;aAC1F,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACjB,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YAC3B,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;YAC9D,IACE,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;gBACvB,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEtG,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,+DAA+D,CAAC,CAAA;YACzG,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YACvB,MAAM,QAAQ,GAAG,QAAQ;iBACtB,OAAO,CAAC,6FAA6F,CAAC;iBACtG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC5C,IAAI,QAAQ;gBAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAA;YACzC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACtB,QAAQ;iBACL,OAAO,CACN,kJAAkJ,CACnJ;iBACA,GAAG,CACF,EAAE,EACF,EAAE,EACF,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EACzD,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,EAClE,GAAG,EAAE,EACL,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CACvE,CAAA;YACH,OAAO,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAQ,CAAC,CAAA;QACrG,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAClC,QAAQ;aACL,OAAO,CACN,kIAAkI,CACnI;aACA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;aAC1E,GAAG,CAAC,UAAU,CAAC;QACpB,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;YAChC,IACE,CAAC,QAAQ,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO;gBAE/G,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAA;YACjF,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC9B,CAAC;QACD,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,QAAQ;iBACjB,OAAO,CAAC,gEAAgE,CAAC;iBACzE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACxB,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAA;YACzF,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC5C,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;YACtE,QAAQ,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACjH,OAAO,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC7C,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACnB,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;YAChE,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAA;YACjE,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,EAC1B,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YACnB,MAAM,QAAQ,GAAG,QAAQ;iBACtB,OAAO,CACN,mHAAmH,CACpH;iBACA,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;YAC3B,IAAI,QAAQ;gBAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAA;YACzC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACtB,QAAQ;iBACL,OAAO,CACN,kJAAkJ,CACnJ;iBACA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACvD,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1B,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACvB,QAAQ;aACL,OAAO,CAAC,oFAAoF,CAAC;aAC7F,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACjB,GAAG,CAAC,UAAU,CAAC;QACpB,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;YAChC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACjB,QAAQ;iBACL,OAAO,CACN,gLAAgL,CACjL;iBACA,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YAC/B,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1B,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YAC9B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACxB,IACE,CAAC,QAAQ;iBACN,OAAO,CACN,2LAA2L,CAC5L;iBACA,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,OAAO;gBAE7D,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAA;YAC7E,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1B,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;YAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EACtC,KAAK,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAA;YACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,SAAS;gBAC/D,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;YACjF,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EACrB,EAAE,GAAG,GAAG,EAAE,CAAA;YACZ,QAAQ;iBACL,OAAO,CACN,6NAA6N,CAC9N;iBACA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,QAAQ;iBAClB,OAAO,CACN,+JAA+J,CAChK;iBACA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;YACzB,MAAM,OAAO,GAAe,EAAE,CAAA;YAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;gBACxB,IACE,QAAQ;qBACL,OAAO,CACN,8KAA8K,CAC/K;qBACA,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO;oBAEhE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAChD,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAA;YACvE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACxB,IACE,CAAC,QAAQ;iBACN,OAAO,CACN,gKAAgK,CACjK;iBACA,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO;gBAEvD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,gDAAgD,CAAC,CAAA;YAC1F,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1B,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -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,EA4BnC,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"}
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":"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"}
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,EA4O7D,CAAA"}
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":"AAAA,6FAA6F;AAC7F,MAAM,CAAC,MAAM,SAAS,GAA6C;IACjE;QACE,MAAM,EAAE,yBAAyB;QACjC,YAAY,EAAE;YACZ,wdAAwd;YACxd,2PAA2P;YAC3P,giBAAgiB;YAChiB,0fAA0f;YAC1f,gYAAgY;YAChY,mnBAAmnB;YACnnB,8cAA8c;YAC9c,oRAAoR;YACpR,6+BAA6+B;YAC7+B,sNAAsN;YACtN,sSAAsS;YACtS,qFAAqF;YACrF,4EAA4E;YAC5E,4EAA4E;YAC5E,6EAA6E;YAC7E,8EAA8E;YAC9E,yEAAyE;SAC1E;KACF;IACD;QACE,MAAM,EAAE,kCAAkC;QAC1C,YAAY,EAAE;YACZ,0CAA0C;YAC1C,kDAAkD;YAClD,qEAAqE;YACrE,qEAAqE;YACrE,oDAAoD;YACpD,0DAA0D;YAC1D,iHAAiH;SAClH;KACF;IACD;QACE,MAAM,EAAE,wCAAwC;QAChD,YAAY,EAAE;YACZ,+QAA+Q;YAC/Q,8KAA8K;YAC9K,qOAAqO;YACrO,uOAAuO;YACvO,4LAA4L;SAC7L;KACF;IACD;QACE,MAAM,EAAE,uCAAuC;QAC/C,YAAY,EAAE;YACZ,yYAAyY;YACzY,4EAA4E;SAC7E;KACF;IACD;QACE,MAAM,EAAE,qCAAqC;QAC7C,YAAY,EAAE;YACZ,8TAA8T;SAC/T;KACF;IACD;QACE,MAAM,EAAE,uCAAuC;QAC/C,YAAY,EAAE;YACZ,iUAAiU;SAClU;KACF;IACD;QACE,MAAM,EAAE,oCAAoC;QAC5C,YAAY,EAAE;YACZ,kEAAkE;YAClE,kDAAkD;SACnD;KACF;IACD;QACE,MAAM,EAAE,uCAAuC;QAC/C,YAAY,EAAE;YACZ,2WAA2W;SAC5W;KACF;IACD;QACE,MAAM,EAAE,wCAAwC;QAChD,YAAY,EAAE;YACZ,iPAAiP;SAClP;KACF;IACD;QACE,MAAM,EAAE,sCAAsC;QAC9C,YAAY,EAAE;YACZ,qeAAqe;YACre,wKAAwK;YACxK,iRAAiR;YACjR,8mBAA8mB;YAC9mB,yHAAyH;YACzH,wMAAwM;YACxM,+KAA+K;YAC/K,mhBAAmhB;YACnhB,kPAAkP;SACnP;KACF;IACD;QACE,MAAM,EAAE,yCAAyC;QACjD,YAAY,EAAE;YACZ,yfAAyf;YACzf,6TAA6T;YAC7T,2lBAA2lB;YAC3lB,4tBAA4tB;YAC5tB,6CAA6C;YAC7C,4FAA4F;YAC5F,yFAAyF;YACzF,6IAA6I;YAC7I,0EAA0E;YAC1E,+EAA+E;SAChF;KACF;IACD;QACE,MAAM,EAAE,kCAAkC;QAC1C,YAAY,EAAE;YACZ,8PAA8P;YAC9P,4vBAA4vB;YAC5vB,uFAAuF;SACxF;KACF;IACD;QACE,MAAM,EAAE,sCAAsC;QAC9C,YAAY,EAAE;YACZ,wEAAwE;YACxE,mHAAmH;YACnH,uDAAuD;SACxD;KACF;IACD;QACE,MAAM,EAAE,sCAAsC;QAC9C,YAAY,EAAE;YACZ,4cAA4c;YAC5c,+JAA+J;YAC/J,qTAAqT;YACrT,iLAAiL;YACjL,qYAAqY;SACtY;KACF;IACD;QACE,MAAM,EAAE,gCAAgC;QACxC,YAAY,EAAE;YACZ,6RAA6R;YAC7R,6EAA6E;SAC9E;KACF;IACD;QACE,MAAM,EAAE,wCAAwC;QAChD,YAAY,EAAE;YACZ,mVAAmV;YACnV,mJAAmJ;YACnJ,0IAA0I;SAC3I;KACF;IACD;QACE,MAAM,EAAE,oCAAoC;QAC5C,YAAY,EAAE;YACZ,6UAA6U;YAC7U,+FAA+F;YAC/F,2EAA2E;SAC5E;KACF;IACD;QACE,MAAM,EAAE,0CAA0C;QAClD,YAAY,EAAE;YACZ,qVAAqV;YACrV,oXAAoX;YACpX,8nBAA8nB;YAC9nB,uDAAuD;YACvD,sGAAsG;YACtG,4GAA4G;YAC5G,4EAA4E;SAC7E;KACF;IACD;QACE,MAAM,EAAE,4CAA4C;QACpD,YAAY,EAAE;YACZ,qSAAqS;SACtS;KACF;IACD;QACE,MAAM,EAAE,4CAA4C;QACpD,YAAY,EAAE;YACZ,kXAAkX;YAClX,0NAA0N;YAC1N,yWAAyW;YACzW,kJAAkJ;YAClJ,6XAA6X;YAC7X,gMAAgM;YAChM,qJAAqJ;SACtJ;KACF;IACD;QACE,MAAM,EAAE,iCAAiC;QACzC,YAAY,EAAE;YACZ,8WAA8W;YAC9W,iEAAiE;YACjE,2EAA2E;SAC5E;KACF;IACD;QACE,MAAM,EAAE,wCAAwC;QAChD,YAAY,EAAE;YACZ,6DAA6D;YAC7D,2DAA2D;SAC5D;KACF;IACD;QACE,MAAM,EAAE,4CAA4C;QACpD,YAAY,EAAE;YACZ,ubAAub;YACvb,4XAA4X;YAC5X,0QAA0Q;YAC1Q,0dAA0d;YAC1d,iGAAiG;SAClG;KACF;IACD;QACE,MAAM,EAAE,0CAA0C;QAClD,YAAY,EAAE;YACZ,6DAA6D;SAC9D;KACF;IACD;QACE,MAAM,EAAE,yCAAyC;QACjD,YAAY,EAAE;YACZ,wDAAwD;SACzD;KACF;IACD;QACE,MAAM,EAAE,4CAA4C;QACpD,YAAY,EAAE;YACZ,kQAAkQ;YAClQ,+NAA+N;YAC/N,kMAAkM;SACnM;KACF;CACF,CAAA"}
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;;;;CAO9F,CAAA"}
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":"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"}
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,yPAAyP,CAC1P;SACA,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;SACzC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IACtC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;AACzE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAqB,EAAE,GAAe,EAAE,QAAgB,EAAE,KAAoB,EAAE,EAAE;IACzG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAA;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC9D,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,CAAA;IAC3E,OAAO,CAAC,QAAQ;SACb,OAAO,CACN,gHAAgH;QAC9G,6IAA6I,CAChJ;SACA,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC7E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAA;IAChH,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAqB,EAAE,GAAe,EAAE,QAAgB,EAAE,IAAY,EAAE,EAAE;IAChG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC9D,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IACnB,OAAO,CAAC,QAAQ;SACb,OAAO,CACN,yHAAyH;QACvH,kDAAkD,CACrD;SACA,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACrD,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAuB,CAAA;AAC1G,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAqB,EAAE,GAAe,EAAE,QAAgB,EAAE,EAAU,EAAsB,EAAE;IAC/G,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3F,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAA;IAC3F,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAqB,EACrB,GAAe,EACf,QAAgB,EAChB,EAAU,EACV,IAAY,EACZ,QAAgB,EAChB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC9D,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ;SAC7B,OAAO,CACN,mEAAmE;QACjE,+NAA+N,CAClO;SACA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAA;IACjG,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,4DAA4D,CAAC,CAAA;IAClH,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAqB,EAAE,GAAe,EAAE,QAAgB,EAAE,EAAU,EAAE,EAAE;IACjG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC9D,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,QAAQ;SACb,OAAO,CACN,wOAAwO,CACzO;SACA,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAChD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AACxC,CAAC,CAAA"}