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.
Files changed (56) hide show
  1. package/dist/cli.js +21 -8
  2. package/dist/cli.js.map +1 -1
  3. package/dist/db/client.d.ts +4 -0
  4. package/dist/db/client.js.map +1 -1
  5. package/dist/db/migrations/0029_drop_global_uniques.sql +38 -0
  6. package/dist/db/schema.d.ts +4 -4
  7. package/dist/db/schema.js +6 -6
  8. package/dist/db/schema.js.map +1 -1
  9. package/dist/rest/routes.js +58 -58
  10. package/dist/rest/routes.js.map +1 -1
  11. package/dist/rest/server.d.ts +11 -1
  12. package/dist/rest/server.js +19 -3
  13. package/dist/rest/server.js.map +1 -1
  14. package/dist/service/embedding.d.ts +5 -0
  15. package/dist/service/embedding.js +6 -1
  16. package/dist/service/embedding.js.map +1 -1
  17. package/dist/service/embedding_settings.d.ts +4 -3
  18. package/dist/service/embedding_settings.js +13 -16
  19. package/dist/service/embedding_settings.js.map +1 -1
  20. package/dist/service/entities.d.ts +29 -20
  21. package/dist/service/entities.js +101 -60
  22. package/dist/service/entities.js.map +1 -1
  23. package/dist/service/feedback.d.ts +3 -2
  24. package/dist/service/feedback.js +8 -4
  25. package/dist/service/feedback.js.map +1 -1
  26. package/dist/service/locks.d.ts +25 -0
  27. package/dist/service/locks.js +34 -0
  28. package/dist/service/locks.js.map +1 -0
  29. package/dist/service/opening_brief.d.ts +2 -1
  30. package/dist/service/opening_brief.js +6 -7
  31. package/dist/service/opening_brief.js.map +1 -1
  32. package/dist/service/projects.d.ts +6 -5
  33. package/dist/service/projects.js +25 -13
  34. package/dist/service/projects.js.map +1 -1
  35. package/dist/service/recurrence.d.ts +16 -6
  36. package/dist/service/recurrence.js +102 -53
  37. package/dist/service/recurrence.js.map +1 -1
  38. package/dist/service/scope.d.ts +14 -0
  39. package/dist/service/scope.js +19 -0
  40. package/dist/service/scope.js.map +1 -0
  41. package/dist/service/search.d.ts +3 -2
  42. package/dist/service/search.js +12 -9
  43. package/dist/service/search.js.map +1 -1
  44. package/dist/service/sessions.d.ts +7 -8
  45. package/dist/service/sessions.js +8 -8
  46. package/dist/service/sessions.js.map +1 -1
  47. package/dist/service/tasks.d.ts +5 -1
  48. package/dist/service/tasks.js +17 -22
  49. package/dist/service/tasks.js.map +1 -1
  50. package/dist/service/tokens.d.ts +7 -6
  51. package/dist/service/tokens.js +17 -10
  52. package/dist/service/tokens.js.map +1 -1
  53. package/dist/service/workspace_settings.d.ts +3 -2
  54. package/dist/service/workspace_settings.js +11 -15
  55. package/dist/service/workspace_settings.js.map +1 -1
  56. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { eq } from "drizzle-orm";
1
+ import { and, eq } from "drizzle-orm";
2
2
  import { workspaceSettings } from "../db/schema.js";
3
3
  export const WORKSPACE_SETTINGS_ID = "default";
4
4
  export const DEFAULT_WORKSPACE_TIMEZONE = "UTC";
@@ -11,32 +11,28 @@ export function isValidTimezone(tz) {
11
11
  return false;
12
12
  }
13
13
  }
14
- export async function getWorkspaceSettings(db) {
15
- const [existing] = await db
16
- .select()
17
- .from(workspaceSettings)
18
- .where(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID))
19
- .limit(1);
14
+ function rowFilter(scope) {
15
+ return and(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID), eq(workspaceSettings.workspaceId, scope.workspaceId));
16
+ }
17
+ export async function getWorkspaceSettings(scope, db) {
18
+ const [existing] = await db.select().from(workspaceSettings).where(rowFilter(scope)).limit(1);
20
19
  if (existing)
21
20
  return existing;
22
21
  await db
23
22
  .insert(workspaceSettings)
24
23
  .values({
25
24
  id: WORKSPACE_SETTINGS_ID,
25
+ workspaceId: scope.workspaceId,
26
26
  timezone: DEFAULT_WORKSPACE_TIMEZONE
27
27
  })
28
28
  .onConflictDoNothing();
29
- const [created] = await db
30
- .select()
31
- .from(workspaceSettings)
32
- .where(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID))
33
- .limit(1);
29
+ const [created] = await db.select().from(workspaceSettings).where(rowFilter(scope)).limit(1);
34
30
  if (!created)
35
31
  throw new Error("workspace settings row missing after insert");
36
32
  return created;
37
33
  }
38
- export async function updateWorkspaceSettings(db, input) {
39
- const current = await getWorkspaceSettings(db);
34
+ export async function updateWorkspaceSettings(scope, db, input) {
35
+ const current = await getWorkspaceSettings(scope, db);
40
36
  const timezone = input.timezone ?? current.timezone;
41
37
  if (input.timezone !== undefined && !isValidTimezone(input.timezone)) {
42
38
  throw new Error(`Invalid IANA timezone: "${input.timezone}"`);
@@ -44,7 +40,7 @@ export async function updateWorkspaceSettings(db, input) {
44
40
  const [updated] = await db
45
41
  .update(workspaceSettings)
46
42
  .set({ timezone })
47
- .where(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID))
43
+ .where(rowFilter(scope))
48
44
  .returning();
49
45
  if (!updated)
50
46
  throw new Error("workspace settings update returned no row");
@@ -1 +1 @@
1
- {"version":3,"file":"workspace_settings.js","sourceRoot":"","sources":["../../src/service/workspace_settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAA0B,MAAM,iBAAiB,CAAC;AAG5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAkB;IAElB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;SACxB,MAAM,EAAE;SACR,IAAI,CAAC,iBAAiB,CAAC;SACvB,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;SACtD,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,EAAE;SACL,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC;QACN,EAAE,EAAE,qBAAqB;QACzB,QAAQ,EAAE,0BAA0B;KACrC,CAAC;SACD,mBAAmB,EAAE,CAAC;IAEzB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,iBAAiB,CAAC;SACvB,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;SACtD,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,EAAkB,EAClB,KAAmC;IAEnC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,iBAAiB,CAAC;SACzB,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;SACjB,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;SACtD,SAAS,EAAE,CAAC;IACf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"workspace_settings.js","sourceRoot":"","sources":["../../src/service/workspace_settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAA0B,MAAM,iBAAiB,CAAC;AAI5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAY;IAC7B,OAAO,GAAG,CACR,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,EAC/C,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAY,EACZ,EAAkB;IAElB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,EAAE;SACL,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC;QACN,EAAE,EAAE,qBAAqB;QACzB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,0BAA0B;KACrC,CAAC;SACD,mBAAmB,EAAE,CAAC;IAEzB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAY,EACZ,EAAkB,EAClB,KAAmC;IAEnC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,iBAAiB,CAAC;SACzB,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;SACjB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACvB,SAAS,EAAE,CAAC;IACf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botnote",
3
- "version": "0.1.56",
3
+ "version": "0.2.1",
4
4
  "description": "Notion for bots. Lightweight project + notes + memory store, agent-first.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.33.0",