@memtensor/memos-local-openclaw-plugin 1.0.4-beta.5 → 1.0.4-beta.7

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 (55) hide show
  1. package/README.md +23 -23
  2. package/dist/capture/index.d.ts +1 -1
  3. package/dist/capture/index.d.ts.map +1 -1
  4. package/dist/capture/index.js +28 -2
  5. package/dist/capture/index.js.map +1 -1
  6. package/dist/client/connector.d.ts +1 -2
  7. package/dist/client/connector.d.ts.map +1 -1
  8. package/dist/client/connector.js +18 -19
  9. package/dist/client/connector.js.map +1 -1
  10. package/dist/client/hub.d.ts.map +1 -1
  11. package/dist/client/hub.js +22 -0
  12. package/dist/client/hub.js.map +1 -1
  13. package/dist/client/skill-sync.d.ts +7 -0
  14. package/dist/client/skill-sync.d.ts.map +1 -1
  15. package/dist/client/skill-sync.js +10 -0
  16. package/dist/client/skill-sync.js.map +1 -1
  17. package/dist/hub/server.d.ts.map +1 -1
  18. package/dist/hub/server.js +101 -81
  19. package/dist/hub/server.js.map +1 -1
  20. package/dist/hub/user-manager.d.ts +2 -0
  21. package/dist/hub/user-manager.d.ts.map +1 -1
  22. package/dist/hub/user-manager.js +5 -1
  23. package/dist/hub/user-manager.js.map +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +5 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/storage/sqlite.d.ts +54 -20
  28. package/dist/storage/sqlite.d.ts.map +1 -1
  29. package/dist/storage/sqlite.js +185 -101
  30. package/dist/storage/sqlite.js.map +1 -1
  31. package/dist/tools/memory-search.d.ts +3 -1
  32. package/dist/tools/memory-search.d.ts.map +1 -1
  33. package/dist/tools/memory-search.js +3 -1
  34. package/dist/tools/memory-search.js.map +1 -1
  35. package/dist/viewer/html.d.ts.map +1 -1
  36. package/dist/viewer/html.js +1619 -629
  37. package/dist/viewer/html.js.map +1 -1
  38. package/dist/viewer/server.d.ts +14 -8
  39. package/dist/viewer/server.d.ts.map +1 -1
  40. package/dist/viewer/server.js +545 -141
  41. package/dist/viewer/server.js.map +1 -1
  42. package/index.ts +355 -41
  43. package/package.json +1 -1
  44. package/skill/memos-memory-guide/SKILL.md +64 -26
  45. package/src/capture/index.ts +29 -1
  46. package/src/client/connector.ts +15 -21
  47. package/src/client/hub.ts +18 -0
  48. package/src/client/skill-sync.ts +14 -0
  49. package/src/hub/server.ts +88 -74
  50. package/src/hub/user-manager.ts +7 -3
  51. package/src/index.ts +7 -2
  52. package/src/storage/sqlite.ts +192 -122
  53. package/src/tools/memory-search.ts +2 -1
  54. package/src/viewer/html.ts +1619 -629
  55. package/src/viewer/server.ts +506 -128
@@ -1,11 +1,12 @@
1
1
  import type { Chunk, ChunkRef, Task, TaskStatus, Skill, SkillStatus, SkillVisibility, SkillVersion, TaskSkillRelation, Logger } from "../types";
2
- import type { GroupInfo, SharedVisibility, UserInfo, UserRole, UserStatus } from "../sharing/types";
2
+ import type { SharedVisibility, UserInfo, UserRole, UserStatus } from "../sharing/types";
3
3
  export declare class SqliteStore {
4
4
  private log;
5
5
  private db;
6
6
  constructor(dbPath: string, log: Logger);
7
7
  private migrate;
8
8
  private migrateChunksIndexesForRecall;
9
+ private migrateLocalSharedTasksOwner;
9
10
  private migrateOwnerFields;
10
11
  private migrateSkillVisibility;
11
12
  private migrateSkillEmbeddingsAndFts;
@@ -42,7 +43,7 @@ export declare class SqliteStore {
42
43
  updateChunkSummaryAndContent(chunkId: string, newSummary: string, appendContent: string): void;
43
44
  private migrateToolCalls;
44
45
  recordToolCall(toolName: string, durationMs: number, success: boolean): void;
45
- getToolMetrics(minutes: number): {
46
+ getToolMetrics(minutes: number, fromMs?: number, toMs?: number): {
46
47
  tools: string[];
47
48
  series: Array<{
48
49
  minute: string;
@@ -240,23 +241,37 @@ export declare class SqliteStore {
240
241
  groupId: string | null;
241
242
  syncedChunks: number;
242
243
  }>;
244
+ markMemorySharedLocally(chunkId: string): {
245
+ ok: boolean;
246
+ owner?: string;
247
+ originalOwner?: string;
248
+ sharedAt?: number;
249
+ reason?: string;
250
+ };
251
+ unmarkMemorySharedLocally(chunkId: string, fallbackOwner?: string): {
252
+ ok: boolean;
253
+ owner?: string;
254
+ originalOwner?: string;
255
+ reason?: string;
256
+ };
257
+ getLocalSharedMemory(chunkId: string): {
258
+ chunkId: string;
259
+ originalOwner: string;
260
+ sharedAt: number;
261
+ } | null;
243
262
  upsertHubUser(user: HubUserRecord): void;
244
263
  getHubUser(userId: string): HubUserRecord | null;
245
264
  listHubUsers(status?: UserStatus): HubUserRecord[];
246
- upsertHubGroup(group: HubGroupRecord): void;
247
- listHubGroups(): HubGroupRecord[];
248
- addHubGroupMember(groupId: string, userId: string, joinedAt?: number): void;
249
- getHubGroupById(groupId: string): HubGroupRecord | undefined;
250
- deleteHubGroup(groupId: string): boolean;
251
- listHubGroupMembers(groupId: string): Array<{
252
- userId: string;
253
- username: string;
254
- joinedAt: number;
265
+ deleteHubUser(userId: string, cleanResources?: boolean): boolean;
266
+ updateHubUserActivity(userId: string, ip: string): void;
267
+ getHubUserContributions(): Record<string, {
268
+ memoryCount: number;
269
+ taskCount: number;
270
+ skillCount: number;
255
271
  }>;
256
- removeHubGroupMember(groupId: string, userId: string): void;
257
- getGroupsForHubUser(userId: string): GroupInfo[];
258
272
  upsertHubTask(task: HubTaskRecord): void;
259
273
  getHubTaskBySource(sourceUserId: string, sourceTaskId: string): HubTaskRecord | null;
274
+ getHubTaskById(taskId: string): HubTaskRecord | null;
260
275
  upsertHubChunk(chunk: HubChunkUpsertInput): void;
261
276
  getHubChunkBySource(sourceUserId: string, sourceChunkId: string): HubChunkRecord | null;
262
277
  deleteHubTaskBySource(sourceUserId: string, sourceTaskId: string): void;
@@ -353,6 +368,30 @@ export declare class SqliteStore {
353
368
  getHubMemoryById(memoryId: string): HubMemoryRecord | null;
354
369
  deleteHubMemoryBySource(sourceUserId: string, sourceChunkId: string): void;
355
370
  deleteHubMemoryById(memoryId: string): boolean;
371
+ insertHubNotification(n: {
372
+ id: string;
373
+ userId: string;
374
+ type: string;
375
+ resource: string;
376
+ title: string;
377
+ message?: string;
378
+ }): void;
379
+ listHubNotifications(userId: string, opts?: {
380
+ unreadOnly?: boolean;
381
+ limit?: number;
382
+ }): Array<{
383
+ id: string;
384
+ userId: string;
385
+ type: string;
386
+ resource: string;
387
+ title: string;
388
+ message: string;
389
+ read: boolean;
390
+ createdAt: number;
391
+ }>;
392
+ countUnreadHubNotifications(userId: string): number;
393
+ markHubNotificationsRead(userId: string, ids?: string[]): void;
394
+ clearHubNotifications(userId: string): void;
356
395
  upsertHubMemoryEmbedding(memoryId: string, vector: Float32Array): void;
357
396
  getHubMemoryEmbedding(memoryId: string): Float32Array | null;
358
397
  searchHubMemories(query: string, options?: {
@@ -397,7 +436,6 @@ export declare class SqliteStore {
397
436
  }>;
398
437
  private resolveCanonicalHubTaskId;
399
438
  private resolveCanonicalHubSkillId;
400
- private attachGroupsToHubUser;
401
439
  getSessionOwnerMap(sessionKeys: string[]): Map<string, string>;
402
440
  close(): void;
403
441
  }
@@ -413,12 +451,8 @@ interface HubUserRecord extends UserInfo {
413
451
  tokenHash: string;
414
452
  createdAt: number;
415
453
  approvedAt: number | null;
416
- }
417
- interface HubGroupRecord {
418
- id: string;
419
- name: string;
420
- description: string;
421
- createdAt: number;
454
+ lastIp: string;
455
+ lastActiveAt: number | null;
422
456
  }
423
457
  interface HubTaskRecord {
424
458
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
@@ -146,11 +146,22 @@ class SqliteStore {
146
146
  this.migrateSkillEmbeddingsAndFts();
147
147
  this.migrateFtsToTrigram();
148
148
  this.migrateHubTables();
149
+ this.migrateLocalSharedTasksOwner();
149
150
  this.log.debug("Database schema initialized");
150
151
  }
151
152
  migrateChunksIndexesForRecall() {
152
153
  this.db.exec("CREATE INDEX IF NOT EXISTS idx_chunks_dedup_created ON chunks(dedup_status, created_at DESC)");
153
154
  }
155
+ migrateLocalSharedTasksOwner() {
156
+ try {
157
+ const cols = this.db.prepare("PRAGMA table_info(local_shared_tasks)").all();
158
+ if (cols.length > 0 && !cols.some((c) => c.name === "original_owner")) {
159
+ this.db.exec("ALTER TABLE local_shared_tasks ADD COLUMN original_owner TEXT NOT NULL DEFAULT 'agent:main'");
160
+ this.log.info("Migrated: added original_owner column to local_shared_tasks");
161
+ }
162
+ }
163
+ catch { /* table may not exist yet */ }
164
+ }
154
165
  migrateOwnerFields() {
155
166
  const chunkCols = this.db.prepare("PRAGMA table_info(chunks)").all();
156
167
  if (!chunkCols.some((c) => c.name === "owner")) {
@@ -503,15 +514,16 @@ class SqliteStore {
503
514
  recordToolCall(toolName, durationMs, success) {
504
515
  this.db.prepare("INSERT INTO tool_calls (tool_name, duration_ms, success, called_at) VALUES (?, ?, ?, ?)").run(toolName, Math.round(durationMs), success ? 1 : 0, Date.now());
505
516
  }
506
- getToolMetrics(minutes) {
507
- const since = Date.now() - minutes * 60 * 1000;
517
+ getToolMetrics(minutes, fromMs, toMs) {
518
+ const since = fromMs ?? (Date.now() - minutes * 60 * 1000);
519
+ const until = toMs ?? Date.now();
508
520
  const rows = this.db.prepare(`SELECT tool_name,
509
521
  duration_ms,
510
522
  success,
511
523
  strftime('%Y-%m-%d %H:%M', called_at/1000, 'unixepoch', 'localtime') as minute_key
512
524
  FROM tool_calls
513
- WHERE called_at >= ?
514
- ORDER BY called_at`).all(since);
525
+ WHERE called_at >= ? AND called_at <= ?
526
+ ORDER BY called_at`).all(since, until);
515
527
  const toolSet = new Set();
516
528
  const minuteMap = new Map();
517
529
  const aggMap = new Map();
@@ -644,34 +656,27 @@ class SqliteStore {
644
656
  shared_at INTEGER NOT NULL
645
657
  );
646
658
 
659
+ CREATE TABLE IF NOT EXISTS local_shared_memories (
660
+ chunk_id TEXT PRIMARY KEY REFERENCES chunks(id) ON DELETE CASCADE,
661
+ original_owner TEXT NOT NULL,
662
+ shared_at INTEGER NOT NULL
663
+ );
664
+
647
665
  CREATE TABLE IF NOT EXISTS hub_users (
648
- id TEXT PRIMARY KEY,
649
- username TEXT NOT NULL UNIQUE,
650
- device_name TEXT NOT NULL DEFAULT '',
651
- role TEXT NOT NULL,
652
- status TEXT NOT NULL,
653
- token_hash TEXT NOT NULL DEFAULT '',
654
- created_at INTEGER NOT NULL,
655
- approved_at INTEGER
666
+ id TEXT PRIMARY KEY,
667
+ username TEXT NOT NULL UNIQUE,
668
+ device_name TEXT NOT NULL DEFAULT '',
669
+ role TEXT NOT NULL,
670
+ status TEXT NOT NULL,
671
+ token_hash TEXT NOT NULL DEFAULT '',
672
+ created_at INTEGER NOT NULL,
673
+ approved_at INTEGER,
674
+ last_ip TEXT NOT NULL DEFAULT '',
675
+ last_active_at INTEGER
656
676
  );
657
677
  CREATE INDEX IF NOT EXISTS idx_hub_users_status ON hub_users(status);
658
678
  CREATE INDEX IF NOT EXISTS idx_hub_users_role ON hub_users(role);
659
679
 
660
- CREATE TABLE IF NOT EXISTS hub_groups (
661
- id TEXT PRIMARY KEY,
662
- name TEXT NOT NULL UNIQUE,
663
- description TEXT NOT NULL DEFAULT '',
664
- created_at INTEGER NOT NULL
665
- );
666
-
667
- CREATE TABLE IF NOT EXISTS hub_group_members (
668
- group_id TEXT NOT NULL REFERENCES hub_groups(id) ON DELETE CASCADE,
669
- user_id TEXT NOT NULL REFERENCES hub_users(id) ON DELETE CASCADE,
670
- joined_at INTEGER NOT NULL,
671
- PRIMARY KEY (group_id, user_id)
672
- );
673
- CREATE INDEX IF NOT EXISTS idx_hub_group_members_user ON hub_group_members(user_id);
674
-
675
680
  CREATE TABLE IF NOT EXISTS hub_tasks (
676
681
  id TEXT PRIMARY KEY,
677
682
  source_task_id TEXT NOT NULL,
@@ -833,6 +838,31 @@ class SqliteStore {
833
838
  VALUES (new.rowid, new.summary, new.content);
834
839
  END;
835
840
  `);
841
+ this.db.exec(`
842
+ CREATE TABLE IF NOT EXISTS hub_notifications (
843
+ id TEXT PRIMARY KEY,
844
+ user_id TEXT NOT NULL,
845
+ type TEXT NOT NULL,
846
+ resource TEXT NOT NULL,
847
+ title TEXT NOT NULL,
848
+ message TEXT NOT NULL DEFAULT '',
849
+ read INTEGER NOT NULL DEFAULT 0,
850
+ created_at INTEGER NOT NULL
851
+ );
852
+ CREATE INDEX IF NOT EXISTS idx_hub_notif_user ON hub_notifications(user_id, read, created_at DESC);
853
+ `);
854
+ try {
855
+ const cols = this.db.prepare("PRAGMA table_info(hub_users)").all();
856
+ if (cols.length > 0 && !cols.some(c => c.name === "last_ip")) {
857
+ this.db.exec("ALTER TABLE hub_users ADD COLUMN last_ip TEXT NOT NULL DEFAULT ''");
858
+ this.log.info("Migrated: added last_ip column to hub_users");
859
+ }
860
+ if (cols.length > 0 && !cols.some(c => c.name === "last_active_at")) {
861
+ this.db.exec("ALTER TABLE hub_users ADD COLUMN last_active_at INTEGER");
862
+ this.log.info("Migrated: added last_active_at column to hub_users");
863
+ }
864
+ }
865
+ catch { /* table may not exist yet */ }
836
866
  }
837
867
  // ─── Write ───
838
868
  insertChunk(chunk) {
@@ -1097,6 +1127,8 @@ class SqliteStore {
1097
1127
  "skill_embeddings",
1098
1128
  "skill_versions",
1099
1129
  "skills",
1130
+ "local_shared_memories",
1131
+ "local_shared_tasks",
1100
1132
  "embeddings",
1101
1133
  "chunks",
1102
1134
  "tasks",
@@ -1519,6 +1551,61 @@ class SqliteStore {
1519
1551
  const rows = this.db.prepare('SELECT task_id, hub_task_id, visibility, group_id, synced_chunks FROM local_shared_tasks').all();
1520
1552
  return rows.map(r => ({ taskId: r.task_id, hubTaskId: r.hub_task_id, visibility: r.visibility, groupId: r.group_id, syncedChunks: r.synced_chunks }));
1521
1553
  }
1554
+ // ─── Local Shared Memories (client-side tracking) ───
1555
+ markMemorySharedLocally(chunkId) {
1556
+ const chunk = this.getChunk(chunkId);
1557
+ if (!chunk)
1558
+ return { ok: false, reason: "not_found" };
1559
+ if (chunk.owner === "public") {
1560
+ const existing = this.getLocalSharedMemory(chunkId);
1561
+ return {
1562
+ ok: true,
1563
+ owner: "public",
1564
+ originalOwner: existing?.originalOwner ?? undefined,
1565
+ sharedAt: existing?.sharedAt ?? undefined,
1566
+ };
1567
+ }
1568
+ const sharedAt = Date.now();
1569
+ this.db.transaction(() => {
1570
+ this.db.prepare(`
1571
+ INSERT INTO local_shared_memories (chunk_id, original_owner, shared_at)
1572
+ VALUES (?, ?, ?)
1573
+ ON CONFLICT(chunk_id) DO UPDATE SET
1574
+ original_owner = excluded.original_owner,
1575
+ shared_at = excluded.shared_at
1576
+ `).run(chunkId, chunk.owner, sharedAt);
1577
+ this.updateChunk(chunkId, { owner: "public" });
1578
+ })();
1579
+ return { ok: true, owner: "public", originalOwner: chunk.owner, sharedAt };
1580
+ }
1581
+ unmarkMemorySharedLocally(chunkId, fallbackOwner) {
1582
+ const chunk = this.getChunk(chunkId);
1583
+ if (!chunk)
1584
+ return { ok: false, reason: "not_found" };
1585
+ if (chunk.owner !== "public") {
1586
+ return { ok: true, owner: chunk.owner };
1587
+ }
1588
+ const existing = this.getLocalSharedMemory(chunkId);
1589
+ const restoreOwner = existing?.originalOwner ?? fallbackOwner;
1590
+ if (!restoreOwner || restoreOwner === "public") {
1591
+ return { ok: false, reason: "original_owner_missing" };
1592
+ }
1593
+ this.db.transaction(() => {
1594
+ this.updateChunk(chunkId, { owner: restoreOwner });
1595
+ this.db.prepare("DELETE FROM local_shared_memories WHERE chunk_id = ?").run(chunkId);
1596
+ })();
1597
+ return { ok: true, owner: restoreOwner, originalOwner: restoreOwner };
1598
+ }
1599
+ getLocalSharedMemory(chunkId) {
1600
+ const row = this.db.prepare("SELECT chunk_id, original_owner, shared_at FROM local_shared_memories WHERE chunk_id = ?").get(chunkId);
1601
+ if (!row)
1602
+ return null;
1603
+ return {
1604
+ chunkId: row.chunk_id,
1605
+ originalOwner: row.original_owner,
1606
+ sharedAt: row.shared_at,
1607
+ };
1608
+ }
1522
1609
  // ─── Hub Users / Groups ───
1523
1610
  upsertHubUser(user) {
1524
1611
  this.db.prepare(`
@@ -1538,65 +1625,47 @@ class SqliteStore {
1538
1625
  const row = this.db.prepare('SELECT * FROM hub_users WHERE id = ?').get(userId);
1539
1626
  if (!row)
1540
1627
  return null;
1541
- return this.attachGroupsToHubUser(rowToHubUser(row));
1628
+ return rowToHubUser(row);
1542
1629
  }
1543
1630
  listHubUsers(status) {
1544
1631
  const rows = status
1545
1632
  ? this.db.prepare('SELECT * FROM hub_users WHERE status = ? ORDER BY created_at').all(status)
1546
1633
  : this.db.prepare('SELECT * FROM hub_users ORDER BY created_at').all();
1547
- return rows.map((row) => this.attachGroupsToHubUser(rowToHubUser(row)));
1634
+ return rows.map(rowToHubUser);
1548
1635
  }
1549
- upsertHubGroup(group) {
1550
- this.db.prepare(`
1551
- INSERT INTO hub_groups (id, name, description, created_at)
1552
- VALUES (?, ?, ?, ?)
1553
- ON CONFLICT(id) DO UPDATE SET
1554
- name = excluded.name,
1555
- description = excluded.description,
1556
- created_at = excluded.created_at
1557
- `).run(group.id, group.name, group.description, group.createdAt);
1558
- }
1559
- listHubGroups() {
1560
- const rows = this.db.prepare('SELECT * FROM hub_groups ORDER BY name').all();
1561
- return rows.map(rowToHubGroup);
1562
- }
1563
- addHubGroupMember(groupId, userId, joinedAt = Date.now()) {
1564
- this.db.prepare(`
1565
- INSERT INTO hub_group_members (group_id, user_id, joined_at)
1566
- VALUES (?, ?, ?)
1567
- ON CONFLICT(group_id, user_id) DO UPDATE SET joined_at = excluded.joined_at
1568
- `).run(groupId, userId, joinedAt);
1569
- }
1570
- getHubGroupById(groupId) {
1571
- const row = this.db.prepare('SELECT * FROM hub_groups WHERE id = ?').get(groupId);
1572
- return row ? rowToHubGroup(row) : undefined;
1573
- }
1574
- deleteHubGroup(groupId) {
1575
- const result = this.db.prepare('DELETE FROM hub_groups WHERE id = ?').run(groupId);
1636
+ deleteHubUser(userId, cleanResources = false) {
1637
+ if (cleanResources) {
1638
+ this.db.prepare('DELETE FROM hub_tasks WHERE source_user_id = ?').run(userId);
1639
+ this.db.prepare('DELETE FROM hub_skills WHERE source_user_id = ?').run(userId);
1640
+ this.db.prepare('DELETE FROM hub_memories WHERE source_user_id = ?').run(userId);
1641
+ }
1642
+ const result = this.db.prepare('DELETE FROM hub_users WHERE id = ?').run(userId);
1576
1643
  return result.changes > 0;
1577
1644
  }
1578
- listHubGroupMembers(groupId) {
1579
- const rows = this.db.prepare(`
1580
- SELECT gm.user_id, hu.username, gm.joined_at
1581
- FROM hub_group_members gm
1582
- JOIN hub_users hu ON hu.id = gm.user_id
1583
- WHERE gm.group_id = ?
1584
- ORDER BY gm.joined_at
1585
- `).all(groupId);
1586
- return rows.map(r => ({ userId: r.user_id, username: r.username, joinedAt: r.joined_at }));
1587
- }
1588
- removeHubGroupMember(groupId, userId) {
1589
- this.db.prepare('DELETE FROM hub_group_members WHERE group_id = ? AND user_id = ?').run(groupId, userId);
1590
- }
1591
- getGroupsForHubUser(userId) {
1592
- const rows = this.db.prepare(`
1593
- SELECT g.*
1594
- FROM hub_group_members gm
1595
- JOIN hub_groups g ON g.id = gm.group_id
1596
- WHERE gm.user_id = ?
1597
- ORDER BY g.name
1598
- `).all(userId);
1599
- return rows.map((row) => ({ id: row.id, name: row.name, description: row.description || undefined }));
1645
+ updateHubUserActivity(userId, ip) {
1646
+ this.db.prepare('UPDATE hub_users SET last_ip = ?, last_active_at = ? WHERE id = ?').run(ip, Date.now(), userId);
1647
+ }
1648
+ getHubUserContributions() {
1649
+ const result = {};
1650
+ const memRows = this.db.prepare('SELECT source_user_id, COUNT(*) as cnt FROM hub_memories GROUP BY source_user_id').all();
1651
+ const taskRows = this.db.prepare('SELECT source_user_id, COUNT(*) as cnt FROM hub_tasks GROUP BY source_user_id').all();
1652
+ const skillRows = this.db.prepare('SELECT source_user_id, COUNT(*) as cnt FROM hub_skills GROUP BY source_user_id').all();
1653
+ for (const r of memRows) {
1654
+ if (!result[r.source_user_id])
1655
+ result[r.source_user_id] = { memoryCount: 0, taskCount: 0, skillCount: 0 };
1656
+ result[r.source_user_id].memoryCount = r.cnt;
1657
+ }
1658
+ for (const r of taskRows) {
1659
+ if (!result[r.source_user_id])
1660
+ result[r.source_user_id] = { memoryCount: 0, taskCount: 0, skillCount: 0 };
1661
+ result[r.source_user_id].taskCount = r.cnt;
1662
+ }
1663
+ for (const r of skillRows) {
1664
+ if (!result[r.source_user_id])
1665
+ result[r.source_user_id] = { memoryCount: 0, taskCount: 0, skillCount: 0 };
1666
+ result[r.source_user_id].skillCount = r.cnt;
1667
+ }
1668
+ return result;
1600
1669
  }
1601
1670
  // ─── Hub Shared Data ───
1602
1671
  upsertHubTask(task) {
@@ -1616,6 +1685,10 @@ class SqliteStore {
1616
1685
  const row = this.db.prepare('SELECT * FROM hub_tasks WHERE source_user_id = ? AND source_task_id = ?').get(sourceUserId, sourceTaskId);
1617
1686
  return row ? rowToHubTask(row) : null;
1618
1687
  }
1688
+ getHubTaskById(taskId) {
1689
+ const row = this.db.prepare('SELECT * FROM hub_tasks WHERE id = ?').get(taskId);
1690
+ return row ? rowToHubTask(row) : null;
1691
+ }
1619
1692
  upsertHubChunk(chunk) {
1620
1693
  if (!chunk.sourceTaskId)
1621
1694
  throw new Error("sourceTaskId is required for hub chunk upserts");
@@ -1796,16 +1869,15 @@ class SqliteStore {
1796
1869
  }
1797
1870
  listAllHubTasks() {
1798
1871
  const rows = this.db.prepare(`
1799
- SELECT t.*, u.username AS owner_name, g.name AS group_name,
1872
+ SELECT t.*, u.username AS owner_name,
1800
1873
  (SELECT COUNT(*) FROM hub_chunks c WHERE c.hub_task_id = t.id) AS chunk_count
1801
1874
  FROM hub_tasks t
1802
1875
  LEFT JOIN hub_users u ON u.id = t.source_user_id
1803
- LEFT JOIN hub_groups g ON g.id = t.group_id
1804
1876
  ORDER BY t.updated_at DESC
1805
1877
  `).all();
1806
1878
  return rows.map(r => ({
1807
1879
  id: r.id, sourceTaskId: r.source_task_id, sourceUserId: r.source_user_id,
1808
- title: r.title, summary: r.summary, groupId: r.group_id, groupName: r.group_name ?? null,
1880
+ title: r.title, summary: r.summary, groupId: r.group_id, groupName: null,
1809
1881
  visibility: r.visibility, ownerName: r.owner_name ?? "unknown", chunkCount: r.chunk_count ?? 0,
1810
1882
  createdAt: r.created_at, updatedAt: r.updated_at,
1811
1883
  }));
@@ -1832,16 +1904,15 @@ class SqliteStore {
1832
1904
  }
1833
1905
  listAllHubSkills() {
1834
1906
  const rows = this.db.prepare(`
1835
- SELECT s.*, u.username AS owner_name, g.name AS group_name
1907
+ SELECT s.*, u.username AS owner_name
1836
1908
  FROM hub_skills s
1837
1909
  LEFT JOIN hub_users u ON u.id = s.source_user_id
1838
- LEFT JOIN hub_groups g ON g.id = s.group_id
1839
1910
  ORDER BY s.updated_at DESC
1840
1911
  `).all();
1841
1912
  return rows.map(r => ({
1842
1913
  id: r.id, sourceSkillId: r.source_skill_id, sourceUserId: r.source_user_id,
1843
1914
  name: r.name, description: r.description, version: r.version,
1844
- groupId: r.group_id, groupName: r.group_name ?? null, visibility: r.visibility,
1915
+ groupId: r.group_id, groupName: null, visibility: r.visibility,
1845
1916
  ownerName: r.owner_name ?? "unknown", qualityScore: r.quality_score,
1846
1917
  createdAt: r.created_at, updatedAt: r.updated_at,
1847
1918
  }));
@@ -1881,6 +1952,32 @@ class SqliteStore {
1881
1952
  const info = this.db.prepare('DELETE FROM hub_memories WHERE id = ?').run(memoryId);
1882
1953
  return info.changes > 0;
1883
1954
  }
1955
+ // ─── Hub Notifications ───
1956
+ insertHubNotification(n) {
1957
+ this.db.prepare('INSERT INTO hub_notifications (id, user_id, type, resource, title, message, read, created_at) VALUES (?, ?, ?, ?, ?, ?, 0, ?)').run(n.id, n.userId, n.type, n.resource, n.title, n.message ?? '', Date.now());
1958
+ }
1959
+ listHubNotifications(userId, opts) {
1960
+ const where = opts?.unreadOnly ? 'WHERE user_id = ? AND read = 0' : 'WHERE user_id = ?';
1961
+ const limit = opts?.limit ?? 50;
1962
+ const rows = this.db.prepare(`SELECT * FROM hub_notifications ${where} ORDER BY created_at DESC LIMIT ?`).all(userId, limit);
1963
+ return rows.map(r => ({ id: r.id, userId: r.user_id, type: r.type, resource: r.resource, title: r.title, message: r.message, read: !!r.read, createdAt: r.created_at }));
1964
+ }
1965
+ countUnreadHubNotifications(userId) {
1966
+ const row = this.db.prepare('SELECT COUNT(*) AS cnt FROM hub_notifications WHERE user_id = ? AND read = 0').get(userId);
1967
+ return row.cnt;
1968
+ }
1969
+ markHubNotificationsRead(userId, ids) {
1970
+ if (ids && ids.length > 0) {
1971
+ const placeholders = ids.map(() => '?').join(',');
1972
+ this.db.prepare(`UPDATE hub_notifications SET read = 1 WHERE user_id = ? AND id IN (${placeholders})`).run(userId, ...ids);
1973
+ }
1974
+ else {
1975
+ this.db.prepare('UPDATE hub_notifications SET read = 1 WHERE user_id = ?').run(userId);
1976
+ }
1977
+ }
1978
+ clearHubNotifications(userId) {
1979
+ this.db.prepare('DELETE FROM hub_notifications WHERE user_id = ?').run(userId);
1980
+ }
1884
1981
  upsertHubMemoryEmbedding(memoryId, vector) {
1885
1982
  const buf = Buffer.from(vector.buffer, vector.byteOffset, vector.byteLength);
1886
1983
  this.db.prepare(`
@@ -1952,16 +2049,15 @@ class SqliteStore {
1952
2049
  }
1953
2050
  listAllHubMemories() {
1954
2051
  const rows = this.db.prepare(`
1955
- SELECT m.*, u.username AS owner_name, g.name AS group_name
2052
+ SELECT m.*, u.username AS owner_name
1956
2053
  FROM hub_memories m
1957
2054
  LEFT JOIN hub_users u ON u.id = m.source_user_id
1958
- LEFT JOIN hub_groups g ON g.id = m.group_id
1959
2055
  ORDER BY m.updated_at DESC
1960
2056
  `).all();
1961
2057
  return rows.map(r => ({
1962
2058
  id: r.id, sourceChunkId: r.source_chunk_id, sourceUserId: r.source_user_id,
1963
2059
  role: r.role, summary: r.summary, kind: r.kind,
1964
- groupId: r.group_id, groupName: r.group_name ?? null, visibility: r.visibility,
2060
+ groupId: r.group_id, groupName: null, visibility: r.visibility,
1965
2061
  ownerName: r.owner_name ?? "unknown", createdAt: r.created_at, updatedAt: r.updated_at,
1966
2062
  }));
1967
2063
  }
@@ -1987,12 +2083,6 @@ class SqliteStore {
1987
2083
  }
1988
2084
  throw new Error(`source skill not found for skillId=${skillId}`);
1989
2085
  }
1990
- attachGroupsToHubUser(user) {
1991
- return {
1992
- ...user,
1993
- groups: this.getGroupsForHubUser(user.id),
1994
- };
1995
- }
1996
2086
  getSessionOwnerMap(sessionKeys) {
1997
2087
  const result = new Map();
1998
2088
  if (sessionKeys.length === 0)
@@ -2115,14 +2205,8 @@ function rowToHubUser(row) {
2115
2205
  tokenHash: row.token_hash,
2116
2206
  createdAt: row.created_at,
2117
2207
  approvedAt: row.approved_at,
2118
- };
2119
- }
2120
- function rowToHubGroup(row) {
2121
- return {
2122
- id: row.id,
2123
- name: row.name,
2124
- description: row.description,
2125
- createdAt: row.created_at,
2208
+ lastIp: row.last_ip || "",
2209
+ lastActiveAt: row.last_active_at ?? null,
2126
2210
  };
2127
2211
  }
2128
2212
  function rowToHubTask(row) {