botnote 0.1.56 → 0.2.1
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/cli.js +21 -8
- package/dist/cli.js.map +1 -1
- package/dist/db/client.d.ts +4 -0
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations/0029_drop_global_uniques.sql +38 -0
- package/dist/db/schema.d.ts +4 -4
- package/dist/db/schema.js +6 -6
- package/dist/db/schema.js.map +1 -1
- package/dist/rest/routes.js +58 -58
- package/dist/rest/routes.js.map +1 -1
- package/dist/rest/server.d.ts +11 -1
- package/dist/rest/server.js +19 -3
- package/dist/rest/server.js.map +1 -1
- package/dist/service/embedding.d.ts +5 -0
- package/dist/service/embedding.js +6 -1
- package/dist/service/embedding.js.map +1 -1
- package/dist/service/embedding_settings.d.ts +4 -3
- package/dist/service/embedding_settings.js +13 -16
- package/dist/service/embedding_settings.js.map +1 -1
- package/dist/service/entities.d.ts +29 -20
- package/dist/service/entities.js +101 -60
- package/dist/service/entities.js.map +1 -1
- package/dist/service/feedback.d.ts +3 -2
- package/dist/service/feedback.js +8 -4
- package/dist/service/feedback.js.map +1 -1
- package/dist/service/locks.d.ts +25 -0
- package/dist/service/locks.js +34 -0
- package/dist/service/locks.js.map +1 -0
- package/dist/service/opening_brief.d.ts +2 -1
- package/dist/service/opening_brief.js +6 -7
- package/dist/service/opening_brief.js.map +1 -1
- package/dist/service/projects.d.ts +6 -5
- package/dist/service/projects.js +25 -13
- package/dist/service/projects.js.map +1 -1
- package/dist/service/recurrence.d.ts +16 -6
- package/dist/service/recurrence.js +102 -53
- package/dist/service/recurrence.js.map +1 -1
- package/dist/service/scope.d.ts +14 -0
- package/dist/service/scope.js +19 -0
- package/dist/service/scope.js.map +1 -0
- package/dist/service/search.d.ts +3 -2
- package/dist/service/search.js +12 -9
- package/dist/service/search.js.map +1 -1
- package/dist/service/sessions.d.ts +7 -8
- package/dist/service/sessions.js +8 -8
- package/dist/service/sessions.js.map +1 -1
- package/dist/service/tasks.d.ts +5 -1
- package/dist/service/tasks.js +17 -22
- package/dist/service/tasks.js.map +1 -1
- package/dist/service/tokens.d.ts +7 -6
- package/dist/service/tokens.js +17 -10
- package/dist/service/tokens.js.map +1 -1
- package/dist/service/workspace_settings.d.ts +3 -2
- package/dist/service/workspace_settings.js +11 -15
- package/dist/service/workspace_settings.js.map +1 -1
- package/package.json +1 -1
package/dist/service/entities.js
CHANGED
|
@@ -12,12 +12,21 @@ const UUID_PREFIX_RE = /^[0-9a-f-]{8,36}$/i;
|
|
|
12
12
|
function normalizeStatus(value) {
|
|
13
13
|
return value === "delayed" || value === "archived" ? "done" : value;
|
|
14
14
|
}
|
|
15
|
-
function
|
|
15
|
+
function inScope(scope) {
|
|
16
|
+
return eq(entities.workspaceId, scope.workspaceId);
|
|
17
|
+
}
|
|
18
|
+
function activeProjectVisibility(scope) {
|
|
16
19
|
return sql `(${entities.projectId} IS NULL OR ${entities.projectId} IN (
|
|
17
|
-
SELECT id FROM projects
|
|
20
|
+
SELECT id FROM projects
|
|
21
|
+
WHERE status <> 'archived' AND workspace_id = ${scope.workspaceId}::uuid
|
|
18
22
|
))`;
|
|
19
23
|
}
|
|
20
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a full UUID or a unique prefix to an entity id. A full UUID passes
|
|
26
|
+
* through without a lookup, so every caller still filters its own query by
|
|
27
|
+
* scope; prefixes are matched only inside the scope.
|
|
28
|
+
*/
|
|
29
|
+
export async function resolveEntityId(scope, db, idOrPrefix) {
|
|
21
30
|
if (UUID_RE.test(idOrPrefix))
|
|
22
31
|
return idOrPrefix;
|
|
23
32
|
if (!UUID_PREFIX_RE.test(idOrPrefix))
|
|
@@ -25,7 +34,8 @@ export async function resolveEntityId(db, idOrPrefix) {
|
|
|
25
34
|
const rows = (await db.execute(sql `
|
|
26
35
|
SELECT id::text AS id
|
|
27
36
|
FROM entities
|
|
28
|
-
WHERE
|
|
37
|
+
WHERE workspace_id = ${scope.workspaceId}::uuid
|
|
38
|
+
AND id::text LIKE ${`${idOrPrefix.toLowerCase()}%`}
|
|
29
39
|
LIMIT 2
|
|
30
40
|
`)).rows;
|
|
31
41
|
if (rows.length === 1)
|
|
@@ -34,19 +44,27 @@ export async function resolveEntityId(db, idOrPrefix) {
|
|
|
34
44
|
throw new Error(`entity id prefix ${idOrPrefix} is ambiguous`);
|
|
35
45
|
return null;
|
|
36
46
|
}
|
|
47
|
+
async function existsInScope(scope, db, id) {
|
|
48
|
+
const rows = await db
|
|
49
|
+
.select({ id: entities.id })
|
|
50
|
+
.from(entities)
|
|
51
|
+
.where(and(eq(entities.id, id), inScope(scope)))
|
|
52
|
+
.limit(1);
|
|
53
|
+
return rows.length > 0;
|
|
54
|
+
}
|
|
37
55
|
/**
|
|
38
56
|
* A parent link must never point back at the entity itself, directly or via
|
|
39
57
|
* the parent's own parent. listChildren would otherwise list an entity as its
|
|
40
58
|
* own child (the Letheia import did exactly this; see migration 0027).
|
|
41
59
|
*/
|
|
42
|
-
async function assertParentAllowed(db, entityId, parentId) {
|
|
60
|
+
async function assertParentAllowed(scope, db, entityId, parentId) {
|
|
43
61
|
if (parentId === entityId) {
|
|
44
62
|
throw clientError("an entity cannot be its own parent", 400);
|
|
45
63
|
}
|
|
46
64
|
const [parent] = await db
|
|
47
65
|
.select({ parentId: entities.parentId })
|
|
48
66
|
.from(entities)
|
|
49
|
-
.where(eq(entities.id, parentId))
|
|
67
|
+
.where(and(eq(entities.id, parentId), inScope(scope)))
|
|
50
68
|
.limit(1);
|
|
51
69
|
if (!parent)
|
|
52
70
|
throw clientError(`parent entity ${parentId} not found`, 404);
|
|
@@ -54,12 +72,12 @@ async function assertParentAllowed(db, entityId, parentId) {
|
|
|
54
72
|
throw clientError("parentId would create a parent cycle (the parent is already a child of this entity)", 400);
|
|
55
73
|
}
|
|
56
74
|
}
|
|
57
|
-
export async function write(db, input) {
|
|
75
|
+
export async function write(scope, db, input) {
|
|
58
76
|
if (input.idempotencyKey) {
|
|
59
77
|
const existing = await db
|
|
60
78
|
.select()
|
|
61
79
|
.from(entities)
|
|
62
|
-
.where(eq(entities.idempotencyKey, input.idempotencyKey))
|
|
80
|
+
.where(and(eq(entities.idempotencyKey, input.idempotencyKey), inScope(scope)))
|
|
63
81
|
.limit(1);
|
|
64
82
|
if (existing.length > 0)
|
|
65
83
|
return existing[0];
|
|
@@ -68,9 +86,13 @@ export async function write(db, input) {
|
|
|
68
86
|
if (input.completedAt != null && !(input.kind === "task" && status === "done")) {
|
|
69
87
|
throw clientError("completedAt is only valid on a task created with status 'done'", 400);
|
|
70
88
|
}
|
|
89
|
+
if (input.parentId && !(await existsInScope(scope, db, input.parentId))) {
|
|
90
|
+
throw clientError(`parent entity ${input.parentId} not found`, 404);
|
|
91
|
+
}
|
|
71
92
|
const [row] = await db
|
|
72
93
|
.insert(entities)
|
|
73
94
|
.values({
|
|
95
|
+
workspaceId: scope.workspaceId,
|
|
74
96
|
kind: input.kind,
|
|
75
97
|
projectId: input.projectId ?? null,
|
|
76
98
|
title: input.title ?? null,
|
|
@@ -106,14 +128,14 @@ export async function write(db, input) {
|
|
|
106
128
|
* parent's projectId so project-scoped search/recent include it, but never
|
|
107
129
|
* gets a KEY-SEQ number (the sequence trigger skips kind='comment').
|
|
108
130
|
*/
|
|
109
|
-
export async function addComment(db, parentIdOrPrefix, input) {
|
|
110
|
-
const parent = await get(db, parentIdOrPrefix);
|
|
131
|
+
export async function addComment(scope, db, parentIdOrPrefix, input) {
|
|
132
|
+
const parent = await get(scope, db, parentIdOrPrefix);
|
|
111
133
|
if (!parent)
|
|
112
134
|
throw clientError(`entity ${parentIdOrPrefix} not found`, 404);
|
|
113
135
|
if (parent.kind === "comment") {
|
|
114
136
|
throw clientError("comments cannot be nested; comment on the task itself", 400);
|
|
115
137
|
}
|
|
116
|
-
return write(db, {
|
|
138
|
+
return write(scope, db, {
|
|
117
139
|
kind: "comment",
|
|
118
140
|
projectId: parent.projectId,
|
|
119
141
|
title: null,
|
|
@@ -130,24 +152,24 @@ export async function addComment(db, parentIdOrPrefix, input) {
|
|
|
130
152
|
});
|
|
131
153
|
}
|
|
132
154
|
/** Comments for one parent entity, oldest first (chronological worklog). */
|
|
133
|
-
export async function listComments(db, parentIdOrPrefix, limit = 50) {
|
|
134
|
-
const entityId = await resolveEntityId(db, parentIdOrPrefix);
|
|
155
|
+
export async function listComments(scope, db, parentIdOrPrefix, limit = 50) {
|
|
156
|
+
const entityId = await resolveEntityId(scope, db, parentIdOrPrefix);
|
|
135
157
|
if (!entityId)
|
|
136
158
|
return [];
|
|
137
159
|
return db
|
|
138
160
|
.select()
|
|
139
161
|
.from(entities)
|
|
140
|
-
.where(and(eq(entities.parentId, entityId), eq(entities.kind, "comment"), isNull(entities.deletedAt)))
|
|
162
|
+
.where(and(inScope(scope), eq(entities.parentId, entityId), eq(entities.kind, "comment"), isNull(entities.deletedAt)))
|
|
141
163
|
.orderBy(entities.createdAt)
|
|
142
164
|
.limit(limit);
|
|
143
165
|
}
|
|
144
166
|
const CONTENT_FIELDS = ["title", "body", "tags", "priority"];
|
|
145
|
-
export async function update(db, id, fields) {
|
|
146
|
-
const entityId = await resolveEntityId(db, id);
|
|
167
|
+
export async function update(scope, db, id, fields) {
|
|
168
|
+
const entityId = await resolveEntityId(scope, db, id);
|
|
147
169
|
if (!entityId)
|
|
148
170
|
throw new Error(`entity ${id} not found`);
|
|
149
171
|
if (fields.parentId)
|
|
150
|
-
await assertParentAllowed(db, entityId, fields.parentId);
|
|
172
|
+
await assertParentAllowed(scope, db, entityId, fields.parentId);
|
|
151
173
|
const normalizedFields = { ...fields };
|
|
152
174
|
if (fields.status !== undefined) {
|
|
153
175
|
normalizedFields.status = normalizeStatus(fields.status);
|
|
@@ -181,7 +203,7 @@ export async function update(db, id, fields) {
|
|
|
181
203
|
priority: entities.priority
|
|
182
204
|
})
|
|
183
205
|
.from(entities)
|
|
184
|
-
.where(eq(entities.id, entityId))
|
|
206
|
+
.where(and(eq(entities.id, entityId), inScope(scope)))
|
|
185
207
|
.limit(1);
|
|
186
208
|
if (!prior[0])
|
|
187
209
|
throw new Error(`entity ${id} not found`);
|
|
@@ -233,7 +255,11 @@ export async function update(db, id, fields) {
|
|
|
233
255
|
if (fields.bodyAppend !== undefined) {
|
|
234
256
|
set.body = sql `CASE WHEN ${entities.body} = '' THEN ${fields.bodyAppend} ELSE ${entities.body} || ${"\n\n"} || ${fields.bodyAppend} END`;
|
|
235
257
|
}
|
|
236
|
-
const [row] = await db
|
|
258
|
+
const [row] = await db
|
|
259
|
+
.update(entities)
|
|
260
|
+
.set(set)
|
|
261
|
+
.where(and(eq(entities.id, entityId), inScope(scope)))
|
|
262
|
+
.returning();
|
|
237
263
|
if (!row)
|
|
238
264
|
throw new Error(`entity ${id} not found`);
|
|
239
265
|
if (fields.parentId !== undefined && fields.parentId !== null) {
|
|
@@ -267,14 +293,14 @@ export async function update(db, id, fields) {
|
|
|
267
293
|
}
|
|
268
294
|
return row;
|
|
269
295
|
}
|
|
270
|
-
export async function listRelated(db, parentId) {
|
|
271
|
-
const entityId = await resolveEntityId(db, parentId);
|
|
296
|
+
export async function listRelated(scope, db, parentId) {
|
|
297
|
+
const entityId = await resolveEntityId(scope, db, parentId);
|
|
272
298
|
if (!entityId)
|
|
273
299
|
return [];
|
|
274
300
|
return db
|
|
275
301
|
.select()
|
|
276
302
|
.from(entities)
|
|
277
|
-
.where(and(eq(entities.parentId, entityId), isNull(entities.deletedAt)))
|
|
303
|
+
.where(and(inScope(scope), eq(entities.parentId, entityId), isNull(entities.deletedAt)))
|
|
278
304
|
.orderBy(desc(entities.createdAt));
|
|
279
305
|
}
|
|
280
306
|
/**
|
|
@@ -282,24 +308,24 @@ export async function listRelated(db, parentId) {
|
|
|
282
308
|
* get-by-key handlers (not from internal lookups) so access stats reflect
|
|
283
309
|
* deliberate recalls; search gives frequently-recalled entities a light boost.
|
|
284
310
|
*/
|
|
285
|
-
export async function bumpAccess(db, id) {
|
|
311
|
+
export async function bumpAccess(scope, db, id) {
|
|
286
312
|
await db
|
|
287
313
|
.update(entities)
|
|
288
314
|
.set({
|
|
289
315
|
accessCount: sql `${entities.accessCount} + 1`,
|
|
290
316
|
lastAccessedAt: new Date()
|
|
291
317
|
})
|
|
292
|
-
.where(eq(entities.id, id));
|
|
318
|
+
.where(and(eq(entities.id, id), inScope(scope)));
|
|
293
319
|
}
|
|
294
320
|
/**
|
|
295
321
|
* Mark `oldIdOrPrefix` as superseded by `newId` (kind='supersedes' edge from
|
|
296
322
|
* the replacement to the outdated entity). Superseded entities stay readable
|
|
297
323
|
* but are downweighted in search.
|
|
298
324
|
*/
|
|
299
|
-
export async function markSuperseded(db, newId, oldIdOrPrefix) {
|
|
325
|
+
export async function markSuperseded(scope, db, newId, oldIdOrPrefix) {
|
|
300
326
|
// get() (not resolveEntityId) so a full-UUID reference to a deleted or
|
|
301
327
|
// never-existing row still 404s instead of tripping the FK constraint.
|
|
302
|
-
const old = await get(db, oldIdOrPrefix);
|
|
328
|
+
const old = await get(scope, db, oldIdOrPrefix);
|
|
303
329
|
if (!old)
|
|
304
330
|
throw clientError(`supersedes target ${oldIdOrPrefix} not found`, 404);
|
|
305
331
|
if (old.id === newId)
|
|
@@ -310,23 +336,27 @@ export async function markSuperseded(db, newId, oldIdOrPrefix) {
|
|
|
310
336
|
.onConflictDoNothing();
|
|
311
337
|
return old.id;
|
|
312
338
|
}
|
|
313
|
-
export async function get(db, id) {
|
|
314
|
-
const entityId = await resolveEntityId(db, id);
|
|
339
|
+
export async function get(scope, db, id) {
|
|
340
|
+
const entityId = await resolveEntityId(scope, db, id);
|
|
315
341
|
if (!entityId)
|
|
316
342
|
return null;
|
|
317
|
-
const rows = await db
|
|
343
|
+
const rows = await db
|
|
344
|
+
.select()
|
|
345
|
+
.from(entities)
|
|
346
|
+
.where(and(eq(entities.id, entityId), inScope(scope)))
|
|
347
|
+
.limit(1);
|
|
318
348
|
return rows[0] ?? null;
|
|
319
349
|
}
|
|
320
350
|
/**
|
|
321
351
|
* Look up an entity by its human-readable identifier — e.g. project key `DEMO`
|
|
322
352
|
* + sequence id `12` resolves to the entity displayed as `DEMO-12`.
|
|
323
353
|
*/
|
|
324
|
-
export async function getByKey(db, projectKey, sequenceId) {
|
|
354
|
+
export async function getByKey(scope, db, projectKey, sequenceId) {
|
|
325
355
|
const rows = await db
|
|
326
356
|
.select({ e: entities })
|
|
327
357
|
.from(entities)
|
|
328
358
|
.innerJoin(projects, eq(entities.projectId, projects.id))
|
|
329
|
-
.where(and(eq(projects.key, projectKey), eq(entities.sequenceId, sequenceId)))
|
|
359
|
+
.where(and(eq(projects.workspaceId, scope.workspaceId), eq(projects.key, projectKey), eq(entities.sequenceId, sequenceId)))
|
|
330
360
|
.limit(1);
|
|
331
361
|
return rows[0]?.e ?? null;
|
|
332
362
|
}
|
|
@@ -335,33 +365,28 @@ export async function getByKey(db, projectKey, sequenceId) {
|
|
|
335
365
|
* restore() brings them back, purge()/purgeExpired() hard-delete them.
|
|
336
366
|
* Idempotent — re-deleting a trashed entity keeps its original trash time.
|
|
337
367
|
*/
|
|
338
|
-
export async function remove(db, id) {
|
|
339
|
-
const entityId = await resolveEntityId(db, id);
|
|
368
|
+
export async function remove(scope, db, id) {
|
|
369
|
+
const entityId = await resolveEntityId(scope, db, id);
|
|
340
370
|
if (!entityId)
|
|
341
371
|
return false;
|
|
342
372
|
const res = await db
|
|
343
373
|
.update(entities)
|
|
344
374
|
.set({ deletedAt: new Date() })
|
|
345
|
-
.where(and(eq(entities.id, entityId), isNull(entities.deletedAt)))
|
|
375
|
+
.where(and(eq(entities.id, entityId), inScope(scope), isNull(entities.deletedAt)))
|
|
346
376
|
.returning({ id: entities.id });
|
|
347
377
|
if (res.length > 0)
|
|
348
378
|
return true;
|
|
349
|
-
|
|
350
|
-
.select({ id: entities.id })
|
|
351
|
-
.from(entities)
|
|
352
|
-
.where(eq(entities.id, entityId))
|
|
353
|
-
.limit(1);
|
|
354
|
-
return exists.length > 0;
|
|
379
|
+
return existsInScope(scope, db, entityId);
|
|
355
380
|
}
|
|
356
381
|
/** Bring a trashed entity back. Returns null when the id resolves to nothing. */
|
|
357
|
-
export async function restore(db, id) {
|
|
358
|
-
const entityId = await resolveEntityId(db, id);
|
|
382
|
+
export async function restore(scope, db, id) {
|
|
383
|
+
const entityId = await resolveEntityId(scope, db, id);
|
|
359
384
|
if (!entityId)
|
|
360
385
|
return null;
|
|
361
386
|
const [row] = await db
|
|
362
387
|
.update(entities)
|
|
363
388
|
.set({ deletedAt: null })
|
|
364
|
-
.where(eq(entities.id, entityId))
|
|
389
|
+
.where(and(eq(entities.id, entityId), inScope(scope)))
|
|
365
390
|
.returning();
|
|
366
391
|
return row ?? null;
|
|
367
392
|
}
|
|
@@ -369,26 +394,29 @@ export async function restore(db, id) {
|
|
|
369
394
|
* Hard-delete a trashed entity ("delete forever"). Refuses to touch live
|
|
370
395
|
* rows — an entity must go through the trash first.
|
|
371
396
|
*/
|
|
372
|
-
export async function purge(db, id) {
|
|
373
|
-
const entityId = await resolveEntityId(db, id);
|
|
397
|
+
export async function purge(scope, db, id) {
|
|
398
|
+
const entityId = await resolveEntityId(scope, db, id);
|
|
374
399
|
if (!entityId)
|
|
375
400
|
return false;
|
|
376
401
|
const res = await db
|
|
377
402
|
.delete(entities)
|
|
378
|
-
.where(and(eq(entities.id, entityId), isNotNull(entities.deletedAt)))
|
|
403
|
+
.where(and(eq(entities.id, entityId), inScope(scope), isNotNull(entities.deletedAt)))
|
|
379
404
|
.returning({ id: entities.id });
|
|
380
405
|
return res.length > 0;
|
|
381
406
|
}
|
|
382
407
|
/** Trashed entities, most recently deleted first. */
|
|
383
|
-
export async function listTrash(db, limit = 100) {
|
|
408
|
+
export async function listTrash(scope, db, limit = 100) {
|
|
384
409
|
return db
|
|
385
410
|
.select()
|
|
386
411
|
.from(entities)
|
|
387
|
-
.where(isNotNull(entities.deletedAt))
|
|
412
|
+
.where(and(inScope(scope), isNotNull(entities.deletedAt)))
|
|
388
413
|
.orderBy(desc(entities.deletedAt))
|
|
389
414
|
.limit(limit);
|
|
390
415
|
}
|
|
391
|
-
/**
|
|
416
|
+
/**
|
|
417
|
+
* Hard-delete trash older than the retention window across every workspace.
|
|
418
|
+
* Daemon-level maintenance, hence no scope. Returns rows purged.
|
|
419
|
+
*/
|
|
392
420
|
export async function purgeExpired(db, retentionDays) {
|
|
393
421
|
const cutoff = new Date(Date.now() - retentionDays * 24 * 60 * 60 * 1000);
|
|
394
422
|
const res = await db
|
|
@@ -397,14 +425,14 @@ export async function purgeExpired(db, retentionDays) {
|
|
|
397
425
|
.returning({ id: entities.id });
|
|
398
426
|
return res.length;
|
|
399
427
|
}
|
|
400
|
-
export async function recent(db, input) {
|
|
401
|
-
const conds = [];
|
|
428
|
+
export async function recent(scope, db, input) {
|
|
429
|
+
const conds = [inScope(scope)];
|
|
402
430
|
if (input.projectId)
|
|
403
431
|
conds.push(eq(entities.projectId, input.projectId));
|
|
404
432
|
else if (input.projectId === null)
|
|
405
433
|
conds.push(isNull(entities.projectId));
|
|
406
434
|
else
|
|
407
|
-
conds.push(activeProjectVisibility());
|
|
435
|
+
conds.push(activeProjectVisibility(scope));
|
|
408
436
|
conds.push(isNull(entities.deletedAt));
|
|
409
437
|
if (input.since)
|
|
410
438
|
conds.push(gte(entities.createdAt, input.since));
|
|
@@ -418,7 +446,19 @@ export async function recent(db, input) {
|
|
|
418
446
|
.orderBy(desc(entities.createdAt))
|
|
419
447
|
.limit(input.limit);
|
|
420
448
|
}
|
|
421
|
-
export async function link(db, input) {
|
|
449
|
+
export async function link(scope, db, input) {
|
|
450
|
+
if (input.fromId === input.toId) {
|
|
451
|
+
throw clientError("an entity cannot be linked to itself", 400);
|
|
452
|
+
}
|
|
453
|
+
const endpoints = await db
|
|
454
|
+
.select({ id: entities.id })
|
|
455
|
+
.from(entities)
|
|
456
|
+
.where(and(inArray(entities.id, [input.fromId, input.toId]), inScope(scope)));
|
|
457
|
+
const found = new Set(endpoints.map((e) => e.id));
|
|
458
|
+
for (const id of [input.fromId, input.toId]) {
|
|
459
|
+
if (!found.has(id))
|
|
460
|
+
throw clientError(`entity ${id} not found`, 404);
|
|
461
|
+
}
|
|
422
462
|
const result = await db
|
|
423
463
|
.insert(edges)
|
|
424
464
|
.values({ fromId: input.fromId, toId: input.toId, kind: input.kind })
|
|
@@ -431,7 +471,7 @@ export async function link(db, input) {
|
|
|
431
471
|
created: result.length > 0
|
|
432
472
|
};
|
|
433
473
|
}
|
|
434
|
-
export async function listChildren(db, parentId) {
|
|
474
|
+
export async function listChildren(scope, db, parentId) {
|
|
435
475
|
// Children arrive via two linkage styles that both count: the entities.parentId
|
|
436
476
|
// column (create_task / update_entity parentId) and explicit parent_of edges
|
|
437
477
|
// (the link tool). Comments also live on entities.parentId but are worklog,
|
|
@@ -446,7 +486,7 @@ export async function listChildren(db, parentId) {
|
|
|
446
486
|
return db
|
|
447
487
|
.select()
|
|
448
488
|
.from(entities)
|
|
449
|
-
.where(and(linkage, ne(entities.kind, "comment"), isNull(entities.deletedAt)))
|
|
489
|
+
.where(and(inScope(scope), linkage, ne(entities.kind, "comment"), isNull(entities.deletedAt)))
|
|
450
490
|
.orderBy(asc(entities.createdAt));
|
|
451
491
|
}
|
|
452
492
|
export async function setBodyVec(db, id, vec) {
|
|
@@ -457,14 +497,15 @@ export async function setBodyVec(db, id, vec) {
|
|
|
457
497
|
* counts, ordered by count DESC then tag ASC. Pass projectId to scope to one
|
|
458
498
|
* project; omit (or pass null/undefined) for workspace-wide results.
|
|
459
499
|
*/
|
|
460
|
-
export async function listTags(db, input) {
|
|
500
|
+
export async function listTags(scope, db, input) {
|
|
461
501
|
const projectFilter = input.projectId
|
|
462
502
|
? sql `AND project_id = ${input.projectId}::uuid`
|
|
463
503
|
: sql ``;
|
|
464
504
|
const rows = await db.execute(sql `
|
|
465
505
|
SELECT tag, COUNT(*)::int AS count
|
|
466
506
|
FROM entities, unnest(tags) AS tag
|
|
467
|
-
WHERE deleted_at IS NULL
|
|
507
|
+
WHERE deleted_at IS NULL
|
|
508
|
+
AND workspace_id = ${scope.workspaceId}::uuid ${projectFilter}
|
|
468
509
|
GROUP BY tag
|
|
469
510
|
ORDER BY count DESC, tag ASC
|
|
470
511
|
`);
|
|
@@ -477,7 +518,7 @@ export async function listTags(db, input) {
|
|
|
477
518
|
* direction='both' → union of both directions (default)
|
|
478
519
|
* Returns the OTHER endpoint entity alongside the edge kind and direction.
|
|
479
520
|
*/
|
|
480
|
-
export async function getLinks(db, input) {
|
|
521
|
+
export async function getLinks(scope, db, input) {
|
|
481
522
|
const { id, kind, direction } = input;
|
|
482
523
|
const results = [];
|
|
483
524
|
if (direction === "outgoing" || direction === "both") {
|
|
@@ -492,7 +533,7 @@ export async function getLinks(db, input) {
|
|
|
492
533
|
const entityRows = await db
|
|
493
534
|
.select()
|
|
494
535
|
.from(entities)
|
|
495
|
-
.where(and(inArray(entities.id, toIds), isNull(entities.deletedAt)));
|
|
536
|
+
.where(and(inScope(scope), inArray(entities.id, toIds), isNull(entities.deletedAt)));
|
|
496
537
|
const entityById = new Map(entityRows.map((en) => [en.id, en]));
|
|
497
538
|
for (const row of rows.rows) {
|
|
498
539
|
const entity = entityById.get(row.to_id);
|
|
@@ -514,7 +555,7 @@ export async function getLinks(db, input) {
|
|
|
514
555
|
const entityRows = await db
|
|
515
556
|
.select()
|
|
516
557
|
.from(entities)
|
|
517
|
-
.where(and(inArray(entities.id, fromIds), isNull(entities.deletedAt)));
|
|
558
|
+
.where(and(inScope(scope), inArray(entities.id, fromIds), isNull(entities.deletedAt)));
|
|
518
559
|
const entityById = new Map(entityRows.map((en) => [en.id, en]));
|
|
519
560
|
for (const row of rows.rows) {
|
|
520
561
|
const entity = entityById.get(row.from_id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/service/entities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/service/entities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Database } from "../db/client.js";
|
|
2
2
|
import { type Entity } from "../db/schema.js";
|
|
3
|
+
import type { Scope } from "./scope.js";
|
|
3
4
|
import type { CreateFeedbackInput, ListFeedbackInput } from "./types.js";
|
|
4
5
|
/**
|
|
5
6
|
* File product feedback about botnote itself. Feedback is a first-class
|
|
@@ -7,6 +8,6 @@ import type { CreateFeedbackInput, ListFeedbackInput } from "./types.js";
|
|
|
7
8
|
* queue: open (new) → in_progress (accepted) → done (shipped/resolved) or
|
|
8
9
|
* rejected (won't fix). The category lives in metadata.category.
|
|
9
10
|
*/
|
|
10
|
-
export declare function submitFeedback(db: Database["db"], input: CreateFeedbackInput): Promise<Entity>;
|
|
11
|
+
export declare function submitFeedback(scope: Scope, db: Database["db"], input: CreateFeedbackInput): Promise<Entity>;
|
|
11
12
|
/** Feedback entries for triage, newest first, filterable by category/status. */
|
|
12
|
-
export declare function listFeedback(db: Database["db"], input: ListFeedbackInput): Promise<Entity[]>;
|
|
13
|
+
export declare function listFeedback(scope: Scope, db: Database["db"], input: ListFeedbackInput): Promise<Entity[]>;
|
package/dist/service/feedback.js
CHANGED
|
@@ -7,8 +7,8 @@ import { write } from "./entities.js";
|
|
|
7
7
|
* queue: open (new) → in_progress (accepted) → done (shipped/resolved) or
|
|
8
8
|
* rejected (won't fix). The category lives in metadata.category.
|
|
9
9
|
*/
|
|
10
|
-
export async function submitFeedback(db, input) {
|
|
11
|
-
return write(db, {
|
|
10
|
+
export async function submitFeedback(scope, db, input) {
|
|
11
|
+
return write(scope, db, {
|
|
12
12
|
kind: "feedback",
|
|
13
13
|
projectId: input.projectId ?? null,
|
|
14
14
|
title: input.title,
|
|
@@ -28,8 +28,12 @@ export async function submitFeedback(db, input) {
|
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
/** Feedback entries for triage, newest first, filterable by category/status. */
|
|
31
|
-
export async function listFeedback(db, input) {
|
|
32
|
-
const conds = [
|
|
31
|
+
export async function listFeedback(scope, db, input) {
|
|
32
|
+
const conds = [
|
|
33
|
+
eq(entities.workspaceId, scope.workspaceId),
|
|
34
|
+
eq(entities.kind, "feedback"),
|
|
35
|
+
isNull(entities.deletedAt)
|
|
36
|
+
];
|
|
33
37
|
if (input.status)
|
|
34
38
|
conds.push(eq(entities.status, input.status));
|
|
35
39
|
if (input.category) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/service/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAsC,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/service/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAsC,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAY,EACZ,EAAkB,EAClB,KAA0B;IAE1B,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE;QACtB,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtB,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE;YACR,GAAG,KAAK,CAAC,QAAQ;YACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C;QACD,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAY,EACZ,EAAkB,EAClB,KAAwB;IAExB,MAAM,KAAK,GAAG;QACZ,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC;QAC3C,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAC7B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;KAC3B,CAAC;IACF,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CACR,GAAG,CAAA,GAAG,QAAQ,CAAC,QAAQ,qBAAqB,KAAK,CAAC,QAA4B,EAAE,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,QAAQ,CAAC;SACd,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;SACpB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SACjC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type pkg from "pg";
|
|
2
|
+
/**
|
|
3
|
+
* Stable keys for Postgres advisory locks shared by every daemon instance on
|
|
4
|
+
* the same database. Never renumber: an older build must contend for the
|
|
5
|
+
* same key as a newer one during a rolling restart.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LOCK_KEYS: {
|
|
8
|
+
readonly recurrenceMaterializer: 7401;
|
|
9
|
+
readonly trashPurge: 7402;
|
|
10
|
+
readonly sessionPrune: 7403;
|
|
11
|
+
};
|
|
12
|
+
export type LockKey = (typeof LOCK_KEYS)[keyof typeof LOCK_KEYS];
|
|
13
|
+
export type LockedRun<T> = {
|
|
14
|
+
acquired: true;
|
|
15
|
+
value: T;
|
|
16
|
+
} | {
|
|
17
|
+
acquired: false;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Run fn while a dedicated pool connection holds a session-level advisory
|
|
21
|
+
* lock. If another session already holds it, fn is not run and
|
|
22
|
+
* { acquired: false } is returned immediately. The work itself may use the
|
|
23
|
+
* shared db handle; only the lock lives on the dedicated connection.
|
|
24
|
+
*/
|
|
25
|
+
export declare function withAdvisoryLock<T>(pool: pkg.Pool, key: LockKey, fn: () => Promise<T>): Promise<LockedRun<T>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable keys for Postgres advisory locks shared by every daemon instance on
|
|
3
|
+
* the same database. Never renumber: an older build must contend for the
|
|
4
|
+
* same key as a newer one during a rolling restart.
|
|
5
|
+
*/
|
|
6
|
+
export const LOCK_KEYS = {
|
|
7
|
+
recurrenceMaterializer: 7401,
|
|
8
|
+
trashPurge: 7402,
|
|
9
|
+
sessionPrune: 7403
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Run fn while a dedicated pool connection holds a session-level advisory
|
|
13
|
+
* lock. If another session already holds it, fn is not run and
|
|
14
|
+
* { acquired: false } is returned immediately. The work itself may use the
|
|
15
|
+
* shared db handle; only the lock lives on the dedicated connection.
|
|
16
|
+
*/
|
|
17
|
+
export async function withAdvisoryLock(pool, key, fn) {
|
|
18
|
+
const client = await pool.connect();
|
|
19
|
+
try {
|
|
20
|
+
const res = await client.query("SELECT pg_try_advisory_lock($1) AS locked", [key]);
|
|
21
|
+
if (!res.rows[0]?.locked)
|
|
22
|
+
return { acquired: false };
|
|
23
|
+
try {
|
|
24
|
+
return { acquired: true, value: await fn() };
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
await client.query("SELECT pg_advisory_unlock($1)", [key]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
client.release();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=locks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.js","sourceRoot":"","sources":["../../src/service/locks.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,sBAAsB,EAAE,IAAI;IAC5B,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;CACV,CAAC;AAMX;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAc,EACd,GAAY,EACZ,EAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B,2CAA2C,EAC3C,CAAC,GAAG,CAAC,CACN,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Database } from "../db/client.js";
|
|
2
2
|
import { type Entity, type Project } from "../db/schema.js";
|
|
3
|
+
import type { Scope } from "./scope.js";
|
|
3
4
|
import type { OpeningBriefInput } from "./types.js";
|
|
4
5
|
export interface OpeningBrief {
|
|
5
6
|
project: Project | null;
|
|
@@ -13,5 +14,5 @@ export interface OpeningBrief {
|
|
|
13
14
|
generatedAt: Date;
|
|
14
15
|
timezone: string;
|
|
15
16
|
}
|
|
16
|
-
export declare function openingBrief(db: Database["db"], input: OpeningBriefInput): Promise<OpeningBrief>;
|
|
17
|
+
export declare function openingBrief(scope: Scope, db: Database["db"], input: OpeningBriefInput): Promise<OpeningBrief>;
|
|
17
18
|
export declare function formatOpeningBrief(brief: OpeningBrief): string;
|