hippo-memory 0.34.0 → 0.36.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 (64) hide show
  1. package/README.md +17 -0
  2. package/dist/api.d.ts +163 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +323 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/audit.d.ts +26 -0
  7. package/dist/audit.d.ts.map +1 -1
  8. package/dist/audit.js +45 -0
  9. package/dist/audit.js.map +1 -1
  10. package/dist/auth.d.ts +28 -0
  11. package/dist/auth.d.ts.map +1 -0
  12. package/dist/auth.js +65 -0
  13. package/dist/auth.js.map +1 -0
  14. package/dist/cli.js +457 -19
  15. package/dist/cli.js.map +1 -1
  16. package/dist/client.d.ts +54 -0
  17. package/dist/client.d.ts.map +1 -0
  18. package/dist/client.js +181 -0
  19. package/dist/client.js.map +1 -0
  20. package/dist/dashboard.d.ts.map +1 -1
  21. package/dist/dashboard.js +5 -1
  22. package/dist/dashboard.js.map +1 -1
  23. package/dist/db.d.ts.map +1 -1
  24. package/dist/db.js +60 -1
  25. package/dist/db.js.map +1 -1
  26. package/dist/mcp/server.d.ts +46 -1
  27. package/dist/mcp/server.d.ts.map +1 -1
  28. package/dist/mcp/server.js +81 -29
  29. package/dist/mcp/server.js.map +1 -1
  30. package/dist/memory.d.ts +2 -0
  31. package/dist/memory.d.ts.map +1 -1
  32. package/dist/memory.js +1 -0
  33. package/dist/memory.js.map +1 -1
  34. package/dist/raw-archive.d.ts.map +1 -1
  35. package/dist/raw-archive.js +19 -0
  36. package/dist/raw-archive.js.map +1 -1
  37. package/dist/server-detect.d.ts +26 -0
  38. package/dist/server-detect.d.ts.map +1 -0
  39. package/dist/server-detect.js +70 -0
  40. package/dist/server-detect.js.map +1 -0
  41. package/dist/server.d.ts +29 -0
  42. package/dist/server.d.ts.map +1 -0
  43. package/dist/server.js +612 -0
  44. package/dist/server.js.map +1 -0
  45. package/dist/shared.d.ts +5 -1
  46. package/dist/shared.d.ts.map +1 -1
  47. package/dist/shared.js +8 -8
  48. package/dist/shared.js.map +1 -1
  49. package/dist/sso.d.ts +13 -0
  50. package/dist/sso.d.ts.map +1 -0
  51. package/dist/sso.js +22 -0
  52. package/dist/sso.js.map +1 -0
  53. package/dist/store.d.ts +29 -5
  54. package/dist/store.d.ts.map +1 -1
  55. package/dist/store.js +98 -22
  56. package/dist/store.js.map +1 -1
  57. package/dist/tenant.d.ts +7 -0
  58. package/dist/tenant.d.ts.map +1 -0
  59. package/dist/tenant.js +17 -0
  60. package/dist/tenant.js.map +1 -0
  61. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  62. package/extensions/openclaw-plugin/package.json +1 -1
  63. package/openclaw.plugin.json +1 -1
  64. package/package.json +1 -1
package/dist/auth.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import type { DatabaseSyncLike } from './db.js';
2
+ export interface CreateApiKeyOpts {
3
+ tenantId: string;
4
+ label?: string;
5
+ }
6
+ export interface CreateApiKeyResult {
7
+ keyId: string;
8
+ plaintext: string;
9
+ }
10
+ export declare function createApiKey(db: DatabaseSyncLike, opts: CreateApiKeyOpts): CreateApiKeyResult;
11
+ export interface ValidateResult {
12
+ valid: boolean;
13
+ tenantId?: string;
14
+ keyId?: string;
15
+ }
16
+ export declare function validateApiKey(db: DatabaseSyncLike, plaintext: string): ValidateResult;
17
+ export declare function revokeApiKey(db: DatabaseSyncLike, keyId: string): void;
18
+ export interface ApiKeyListItem {
19
+ keyId: string;
20
+ tenantId: string;
21
+ label: string | null;
22
+ createdAt: string;
23
+ revokedAt: string | null;
24
+ }
25
+ export declare function listApiKeys(db: DatabaseSyncLike, opts: {
26
+ active: boolean;
27
+ }): ApiKeyListItem[];
28
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgChD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,CAS7F;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,CAUtF;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,cAAc,EAAE,CAW7F"}
package/dist/auth.js ADDED
@@ -0,0 +1,65 @@
1
+ import { randomBytes, scryptSync, timingSafeEqual } from 'node:crypto';
2
+ const KEY_PREFIX = 'hk_';
3
+ const ID_LEN = 24; // base32 chars after prefix
4
+ const SECRET_LEN = 32; // base32 chars after dot
5
+ const SCRYPT_KEYLEN = 32;
6
+ const BASE32 = 'abcdefghijklmnopqrstuvwxyz234567';
7
+ function randBase32(n) {
8
+ const bytes = randomBytes(n);
9
+ let out = '';
10
+ for (let i = 0; i < n; i++)
11
+ out += BASE32[bytes[i] % 32];
12
+ return out;
13
+ }
14
+ function hashKey(plaintext) {
15
+ // Format: scrypt$<saltHex>$<hashHex>
16
+ const salt = randomBytes(16);
17
+ const hash = scryptSync(plaintext, salt, SCRYPT_KEYLEN);
18
+ return `scrypt$${salt.toString('hex')}$${hash.toString('hex')}`;
19
+ }
20
+ function verifyKey(plaintext, stored) {
21
+ const parts = stored.split('$');
22
+ if (parts.length !== 3 || parts[0] !== 'scrypt')
23
+ return false;
24
+ const salt = Buffer.from(parts[1], 'hex');
25
+ const expected = Buffer.from(parts[2], 'hex');
26
+ const actual = scryptSync(plaintext, salt, expected.length);
27
+ return expected.length === actual.length && timingSafeEqual(expected, actual);
28
+ }
29
+ export function createApiKey(db, opts) {
30
+ const keyId = `${KEY_PREFIX}${randBase32(ID_LEN)}`;
31
+ const secret = randBase32(SECRET_LEN);
32
+ const plaintext = `${keyId}.${secret}`;
33
+ const hash = hashKey(plaintext);
34
+ db.prepare(`INSERT INTO api_keys (key_id, key_hash, tenant_id, label, created_at) VALUES (?, ?, ?, ?, ?)`).run(keyId, hash, opts.tenantId, opts.label ?? null, new Date().toISOString());
35
+ return { keyId, plaintext };
36
+ }
37
+ export function validateApiKey(db, plaintext) {
38
+ const dot = plaintext.indexOf('.');
39
+ if (dot < 0)
40
+ return { valid: false };
41
+ const keyId = plaintext.slice(0, dot);
42
+ const row = db
43
+ .prepare(`SELECT key_hash, tenant_id, revoked_at FROM api_keys WHERE key_id = ?`)
44
+ .get(keyId);
45
+ if (!row || row.revoked_at)
46
+ return { valid: false };
47
+ if (!verifyKey(plaintext, row.key_hash))
48
+ return { valid: false };
49
+ return { valid: true, tenantId: row.tenant_id, keyId };
50
+ }
51
+ export function revokeApiKey(db, keyId) {
52
+ db.prepare(`UPDATE api_keys SET revoked_at = ? WHERE key_id = ? AND revoked_at IS NULL`)
53
+ .run(new Date().toISOString(), keyId);
54
+ }
55
+ export function listApiKeys(db, opts) {
56
+ const sql = opts.active
57
+ ? `SELECT key_id, tenant_id, label, created_at, revoked_at FROM api_keys WHERE revoked_at IS NULL ORDER BY id DESC`
58
+ : `SELECT key_id, tenant_id, label, created_at, revoked_at FROM api_keys ORDER BY id DESC`;
59
+ const rows = db.prepare(sql).all();
60
+ return rows.map(r => ({
61
+ keyId: r.key_id, tenantId: r.tenant_id, label: r.label,
62
+ createdAt: r.created_at, revokedAt: r.revoked_at,
63
+ }));
64
+ }
65
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}