@steno-ai/supabase-adapter 0.1.4 → 0.1.6

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 +0 -0
  2. package/dist/client.d.ts +0 -0
  3. package/dist/client.d.ts.map +0 -0
  4. package/dist/client.js +0 -0
  5. package/dist/client.js.map +0 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +0 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/storage.d.ts +39 -1
  11. package/dist/storage.d.ts.map +1 -1
  12. package/dist/storage.js +169 -18
  13. package/dist/storage.js.map +1 -1
  14. package/package.json +10 -10
  15. package/src/client.d.ts +0 -0
  16. package/src/client.d.ts.map +0 -0
  17. package/src/client.js +0 -0
  18. package/src/client.js.map +0 -0
  19. package/src/client.ts +0 -0
  20. package/src/index.d.ts +0 -0
  21. package/src/index.d.ts.map +0 -0
  22. package/src/index.js +0 -0
  23. package/src/index.js.map +0 -0
  24. package/src/index.ts +1 -0
  25. package/src/migrations/001_extensions.sql +0 -0
  26. package/src/migrations/002_create_tenants.sql +0 -0
  27. package/src/migrations/003_create_api_keys.sql +0 -0
  28. package/src/migrations/004_create_sessions.sql +0 -0
  29. package/src/migrations/005_create_extractions.sql +0 -0
  30. package/src/migrations/006_create_facts.sql +0 -0
  31. package/src/migrations/007_create_entities.sql +0 -0
  32. package/src/migrations/008_create_fact_entities.sql +0 -0
  33. package/src/migrations/009_create_edges.sql +0 -0
  34. package/src/migrations/010_create_triggers.sql +0 -0
  35. package/src/migrations/011_create_memory_accesses.sql +0 -0
  36. package/src/migrations/012_create_usage_records.sql +0 -0
  37. package/src/migrations/013_create_functions.sql +0 -0
  38. package/src/migrations/014_create_rls_policies.sql +0 -0
  39. package/src/migrations/015_create_rpc_functions.sql +0 -0
  40. package/src/migrations/016_alter_source_ref.sql +0 -0
  41. package/src/migrations/017_keyword_search_rpc.sql +0 -0
  42. package/src/migrations/018_graph_traverse_rpc.sql +0 -0
  43. package/src/migrations/019_create_webhooks.sql +0 -0
  44. package/src/migrations/020_compound_search_rpc.sql +0 -0
  45. package/src/migrations/021_match_entities_rpc.sql +0 -0
  46. package/src/migrations/022_get_facts_for_entities_rpc.sql +0 -0
  47. package/src/migrations/023_add_event_date.sql +0 -0
  48. package/src/migrations/024_add_source_chunk.sql +0 -0
  49. package/src/migrations/025_update_edge_types_add_signing_key.sql +0 -0
  50. package/src/migrations/026_create_session_messages.sql +14 -0
  51. package/src/storage.d.ts +0 -0
  52. package/src/storage.d.ts.map +0 -0
  53. package/src/storage.js +0 -0
  54. package/src/storage.js.map +0 -0
  55. package/src/storage.ts +203 -26
package/README.md CHANGED
File without changes
package/dist/client.d.ts CHANGED
File without changes
File without changes
package/dist/client.js CHANGED
File without changes
File without changes
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { SupabaseStorageAdapter } from './storage.js';
2
+ export type { EncryptionConfig } from './storage.js';
2
3
  export { createSupabaseClient, type SupabaseConfig } from './client.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
File without changes
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC"}
package/dist/storage.d.ts CHANGED
@@ -13,9 +13,29 @@ export declare function toSnakeCase(obj: Record<string, unknown>): Record<string
13
13
  * Arrays and null values are preserved.
14
14
  */
15
15
  export declare function toCamelCase(obj: Record<string, unknown>): Record<string, unknown>;
16
+ export interface EncryptionConfig {
17
+ /**
18
+ * Encrypt a plaintext string. Called before inserting sensitive text fields.
19
+ * Must return a string in format: `iv:authTag:ciphertext` (all base64).
20
+ * If not provided, fields are stored as plaintext.
21
+ */
22
+ encryptField: (plaintext: string) => string;
23
+ /**
24
+ * Decrypt an encrypted string. Called after fetching sensitive text fields.
25
+ * Input format: `iv:authTag:ciphertext` (all base64).
26
+ * Must handle gracefully if the input is NOT encrypted (plaintext fallback).
27
+ * If not provided, fields are returned as-is.
28
+ */
29
+ decryptField: (ciphertext: string) => string;
30
+ }
16
31
  export declare class SupabaseStorageAdapter implements StorageAdapter {
17
32
  private client;
18
- constructor(client: SupabaseClient);
33
+ private encryption?;
34
+ constructor(client: SupabaseClient, encryption?: EncryptionConfig);
35
+ private enc;
36
+ private dec;
37
+ private decryptFactRow;
38
+ private decryptEntityRow;
19
39
  ping(): Promise<boolean>;
20
40
  createTenant(tenant: CreateTenant & {
21
41
  id: string;
@@ -114,6 +134,24 @@ export declare class SupabaseStorageAdapter implements StorageAdapter {
114
134
  getSession(tenantId: string, id: string): Promise<Session | null>;
115
135
  endSession(tenantId: string, id: string, summary?: string, topics?: string[]): Promise<Session>;
116
136
  getSessionsByScope(tenantId: string, scope: string, scopeId: string, options: PaginationOptions): Promise<PaginatedResult<Session>>;
137
+ addSessionMessage(msg: {
138
+ id: string;
139
+ sessionId: string;
140
+ tenantId: string;
141
+ role: string;
142
+ content: string;
143
+ turnNumber: number;
144
+ }): Promise<void>;
145
+ getSessionMessages(tenantId: string, sessionId: string, options?: {
146
+ unextractedOnly?: boolean;
147
+ }): Promise<Array<{
148
+ id: string;
149
+ role: string;
150
+ content: string;
151
+ turnNumber: number;
152
+ createdAt: Date;
153
+ }>>;
154
+ markMessagesExtracted(messageIds: string[], extractionId: string): Promise<void>;
117
155
  createWebhook(webhook: CreateWebhook & {
118
156
  id: string;
119
157
  secretHash: string;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/dist/storage.js CHANGED
@@ -50,8 +50,66 @@ function throwSupabaseError(method, error) {
50
50
  // =============================================================================
51
51
  export class SupabaseStorageAdapter {
52
52
  client;
53
- constructor(client) {
53
+ encryption;
54
+ constructor(client, encryption) {
54
55
  this.client = client;
56
+ this.encryption = encryption;
57
+ }
58
+ // Encrypt a single field. Returns value as-is if no encryption configured or value is null.
59
+ enc(value) {
60
+ if (value == null || value === '')
61
+ return value;
62
+ if (!this.encryption)
63
+ return value;
64
+ return this.encryption.encryptField(value);
65
+ }
66
+ // Decrypt a single field. Returns value as-is if:
67
+ // - no encryption configured
68
+ // - value is null/empty
69
+ // - value does not match encrypted format (handles old plaintext rows gracefully)
70
+ dec(value) {
71
+ if (value == null || value === '')
72
+ return value;
73
+ if (!this.encryption)
74
+ return value;
75
+ // Encrypted format is always: iv:authTag:ciphertext (exactly 3 colon-separated parts)
76
+ // If the value does not match this pattern it is plaintext — return as-is
77
+ const parts = value.split(':');
78
+ if (parts.length !== 3)
79
+ return value;
80
+ try {
81
+ return this.encryption.decryptField(value);
82
+ }
83
+ catch {
84
+ return value; // decryption failed — return as-is, never crash
85
+ }
86
+ }
87
+ // Decrypt all sensitive text fields on a facts row.
88
+ // Call this on every row returned from any facts query.
89
+ decryptFactRow(row) {
90
+ if (row['content'] != null)
91
+ row['content'] = this.dec(row['content']);
92
+ if (row['source_chunk'] != null)
93
+ row['source_chunk'] = this.dec(row['source_chunk']);
94
+ if (row['original_content'] != null)
95
+ row['original_content'] = this.dec(row['original_content']);
96
+ return row;
97
+ }
98
+ // Decrypt all sensitive text fields on an entities row.
99
+ // NOTE: canonical_name is intentionally NOT decrypted — it stays plaintext for DB lookups.
100
+ decryptEntityRow(row) {
101
+ if (row['name'] != null)
102
+ row['name'] = this.dec(row['name']);
103
+ if (row['properties'] != null) {
104
+ const decrypted = this.dec(row['properties']);
105
+ try {
106
+ row['properties'] = decrypted ? JSON.parse(decrypted) : row['properties'];
107
+ }
108
+ catch {
109
+ row['properties'] = decrypted; // not valid JSON, keep as string
110
+ }
111
+ }
112
+ return row;
55
113
  }
56
114
  async ping() {
57
115
  const { error } = await this.client.from('tenants').select('id').limit(1);
@@ -254,6 +312,13 @@ export class SupabaseStorageAdapter {
254
312
  async createFact(fact) {
255
313
  const { embedding, ...rest } = fact;
256
314
  const row = toSnakeCase(rest);
315
+ // Encrypt sensitive text fields before storing
316
+ if (row['content'] != null)
317
+ row['content'] = this.enc(row['content']);
318
+ if (row['source_chunk'] != null)
319
+ row['source_chunk'] = this.enc(row['source_chunk']);
320
+ if (row['original_content'] != null)
321
+ row['original_content'] = this.enc(row['original_content']);
257
322
  // Version defaults to 1 for new facts
258
323
  if (!('version' in row)) {
259
324
  row['version'] = 1;
@@ -286,6 +351,7 @@ export class SupabaseStorageAdapter {
286
351
  throwSupabaseError('getFact', error);
287
352
  if (!data)
288
353
  return null;
354
+ this.decryptFactRow(data);
289
355
  return toCamelCase(data);
290
356
  }
291
357
  async getFactsByIds(tenantId, ids) {
@@ -298,7 +364,10 @@ export class SupabaseStorageAdapter {
298
364
  .in('id', ids);
299
365
  if (error)
300
366
  throwSupabaseError('getFactsByIds', error);
301
- return (data ?? []).map((row) => toCamelCase(row));
367
+ return (data ?? []).map((row) => {
368
+ this.decryptFactRow(row);
369
+ return toCamelCase(row);
370
+ });
302
371
  }
303
372
  async getFactsByLineage(tenantId, lineageId) {
304
373
  const { data, error } = await this.client
@@ -309,7 +378,10 @@ export class SupabaseStorageAdapter {
309
378
  .order('version', { ascending: true });
310
379
  if (error)
311
380
  throwSupabaseError('getFactsByLineage', error);
312
- return (data ?? []).map((row) => toCamelCase(row));
381
+ return (data ?? []).map((row) => {
382
+ this.decryptFactRow(row);
383
+ return toCamelCase(row);
384
+ });
313
385
  }
314
386
  async invalidateFact(tenantId, id) {
315
387
  const { error } = await this.client
@@ -326,6 +398,15 @@ export class SupabaseStorageAdapter {
326
398
  async createEntity(entity) {
327
399
  const { embedding, ...rest } = entity;
328
400
  const row = toSnakeCase(rest);
401
+ // Encrypt display name and properties before persisting
402
+ // NOTE: canonical_name is intentionally NOT encrypted — it is used for DB equality lookups
403
+ if (row['name'] != null)
404
+ row['name'] = this.enc(row['name']);
405
+ if (row['properties'] != null) {
406
+ // Always JSON.stringify regardless of whether it is already a string.
407
+ // This ensures consistent round-trip: stringify on write, parse on read.
408
+ row['properties'] = this.enc(JSON.stringify(row['properties']));
409
+ }
329
410
  if (embedding !== undefined) {
330
411
  row['embedding'] = `[${embedding.join(',')}]`;
331
412
  }
@@ -349,6 +430,7 @@ export class SupabaseStorageAdapter {
349
430
  throwSupabaseError('getEntity', error);
350
431
  if (!data)
351
432
  return null;
433
+ this.decryptEntityRow(data);
352
434
  return toCamelCase(data);
353
435
  }
354
436
  async findEntityByCanonicalName(tenantId, canonicalName, entityType) {
@@ -363,6 +445,7 @@ export class SupabaseStorageAdapter {
363
445
  throwSupabaseError('findEntityByCanonicalName', error);
364
446
  if (!data)
365
447
  return null;
448
+ this.decryptEntityRow(data);
366
449
  return toCamelCase(data);
367
450
  }
368
451
  async findEntitiesByEmbedding(tenantId, embedding, limit, minSimilarity = 0.3) {
@@ -374,10 +457,13 @@ export class SupabaseStorageAdapter {
374
457
  });
375
458
  if (error)
376
459
  throwSupabaseError('findEntitiesByEmbedding', error);
377
- return (data ?? []).map((row) => ({
378
- entity: toCamelCase(row),
379
- similarity: row['similarity'],
380
- }));
460
+ return (data ?? []).map((row) => {
461
+ this.decryptEntityRow(row);
462
+ return {
463
+ entity: toCamelCase(row),
464
+ similarity: row['similarity'],
465
+ };
466
+ });
381
467
  }
382
468
  // ---------------------------------------------------------------------------
383
469
  // Fact-Entity junction
@@ -423,10 +509,13 @@ export class SupabaseStorageAdapter {
423
509
  });
424
510
  if (error)
425
511
  throwSupabaseError('vectorSearch', error);
426
- return (data ?? []).map((row) => ({
427
- fact: toCamelCase(row),
428
- similarity: row['similarity'],
429
- }));
512
+ return (data ?? []).map((row) => {
513
+ this.decryptFactRow(row);
514
+ return {
515
+ fact: toCamelCase(row),
516
+ similarity: row['similarity'],
517
+ };
518
+ });
430
519
  }
431
520
  // ---------------------------------------------------------------------------
432
521
  // Usage
@@ -485,7 +574,10 @@ export class SupabaseStorageAdapter {
485
574
  const rows = data ?? [];
486
575
  const hasMore = rows.length > limit;
487
576
  const page = hasMore ? rows.slice(0, limit) : rows;
488
- const facts = page.map((row) => toCamelCase(row));
577
+ const facts = page.map((row) => {
578
+ this.decryptFactRow(row);
579
+ return toCamelCase(row);
580
+ });
489
581
  const nextCursor = hasMore && page.length > 0
490
582
  ? page[page.length - 1]['created_at']
491
583
  : null;
@@ -563,6 +655,11 @@ export class SupabaseStorageAdapter {
563
655
  }
564
656
  }
565
657
  async keywordSearch(options) {
658
+ // Keyword search uses PostgreSQL to_tsquery which cannot match encrypted ciphertext.
659
+ // When encryption is configured, skip keyword search entirely.
660
+ // Vector search (vectorSearch / compoundSearch) still works correctly via embeddings.
661
+ if (this.encryption)
662
+ return [];
566
663
  const { query, tenantId, scope, scopeId, limit, asOf } = options;
567
664
  const { data, error } = await this.client.rpc('keyword_search_facts', {
568
665
  search_query: query,
@@ -595,11 +692,14 @@ export class SupabaseStorageAdapter {
595
692
  });
596
693
  if (error)
597
694
  throwSupabaseError('compoundSearch', error);
598
- return (data ?? []).map((row) => ({
599
- source: row['source'],
600
- fact: toCamelCase(row),
601
- relevanceScore: row['relevance_score'],
602
- }));
695
+ return (data ?? []).map((row) => {
696
+ this.decryptFactRow(row);
697
+ return {
698
+ source: row['source'],
699
+ fact: toCamelCase(row),
700
+ relevanceScore: row['relevance_score'],
701
+ };
702
+ });
603
703
  }
604
704
  async getEntitiesForTenant(tenantId, options) {
605
705
  const { limit, cursor } = options;
@@ -618,7 +718,10 @@ export class SupabaseStorageAdapter {
618
718
  const rows = data ?? [];
619
719
  const hasMore = rows.length > limit;
620
720
  const page = hasMore ? rows.slice(0, limit) : rows;
621
- const entities = page.map((row) => toCamelCase(row));
721
+ const entities = page.map((row) => {
722
+ this.decryptEntityRow(row);
723
+ return toCamelCase(row);
724
+ });
622
725
  const nextCursor = hasMore && page.length > 0
623
726
  ? page[page.length - 1]['created_at']
624
727
  : null;
@@ -936,6 +1039,54 @@ export class SupabaseStorageAdapter {
936
1039
  return { data: sessions, cursor: nextCursor, hasMore };
937
1040
  }
938
1041
  // ---------------------------------------------------------------------------
1042
+ // Session Messages
1043
+ // ---------------------------------------------------------------------------
1044
+ async addSessionMessage(msg) {
1045
+ const { error } = await this.client
1046
+ .from('session_messages')
1047
+ .insert({
1048
+ id: msg.id,
1049
+ session_id: msg.sessionId,
1050
+ tenant_id: msg.tenantId,
1051
+ role: msg.role,
1052
+ content: this.enc(msg.content),
1053
+ turn_number: msg.turnNumber,
1054
+ });
1055
+ if (error)
1056
+ throwSupabaseError('addSessionMessage', error);
1057
+ }
1058
+ async getSessionMessages(tenantId, sessionId, options) {
1059
+ let query = this.client
1060
+ .from('session_messages')
1061
+ .select('id, role, content, turn_number, created_at')
1062
+ .eq('tenant_id', tenantId)
1063
+ .eq('session_id', sessionId)
1064
+ .order('turn_number', { ascending: true });
1065
+ if (options?.unextractedOnly) {
1066
+ query = query.is('extraction_id', null);
1067
+ }
1068
+ const { data, error } = await query;
1069
+ if (error)
1070
+ throwSupabaseError('getSessionMessages', error);
1071
+ return (data ?? []).map((row) => ({
1072
+ id: row.id,
1073
+ role: row.role,
1074
+ content: this.dec(row.content),
1075
+ turnNumber: row.turn_number,
1076
+ createdAt: new Date(row.created_at),
1077
+ }));
1078
+ }
1079
+ async markMessagesExtracted(messageIds, extractionId) {
1080
+ if (messageIds.length === 0)
1081
+ return;
1082
+ const { error } = await this.client
1083
+ .from('session_messages')
1084
+ .update({ extraction_id: extractionId })
1085
+ .in('id', messageIds);
1086
+ if (error)
1087
+ throwSupabaseError('markMessagesExtracted', error);
1088
+ }
1089
+ // ---------------------------------------------------------------------------
939
1090
  // Webhooks
940
1091
  // ---------------------------------------------------------------------------
941
1092
  async createWebhook(webhook) {
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steno-ai/supabase-adapter",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Supabase/PostgreSQL storage adapter for Steno",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -22,19 +22,19 @@
22
22
  "src",
23
23
  "README.md"
24
24
  ],
25
- "dependencies": {
26
- "@supabase/supabase-js": "^2",
27
- "@steno-ai/engine": "0.1.7"
28
- },
29
- "devDependencies": {
30
- "typescript": "^5.7",
31
- "vitest": "^3"
32
- },
33
25
  "scripts": {
34
26
  "test": "vitest run --passWithNoTests",
35
27
  "test:watch": "vitest watch",
36
28
  "typecheck": "tsc --noEmit",
37
29
  "build": "tsc",
38
30
  "clean": "rm -rf dist"
31
+ },
32
+ "dependencies": {
33
+ "@steno-ai/engine": "workspace:*",
34
+ "@supabase/supabase-js": "^2"
35
+ },
36
+ "devDependencies": {
37
+ "typescript": "^5.7",
38
+ "vitest": "^3"
39
39
  }
40
- }
40
+ }
package/src/client.d.ts CHANGED
File without changes
File without changes
package/src/client.js CHANGED
File without changes
package/src/client.js.map CHANGED
File without changes
package/src/client.ts CHANGED
File without changes
package/src/index.d.ts CHANGED
File without changes
File without changes
package/src/index.js CHANGED
File without changes
package/src/index.js.map CHANGED
File without changes
package/src/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export { SupabaseStorageAdapter } from './storage.js';
2
+ export type { EncryptionConfig } from './storage.js';
2
3
  export { createSupabaseClient, type SupabaseConfig } from './client.js';
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,14 @@
1
+ CREATE TABLE IF NOT EXISTS session_messages (
2
+ id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
3
+ session_id UUID NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
4
+ tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
5
+ role TEXT NOT NULL DEFAULT 'user',
6
+ content TEXT NOT NULL,
7
+ turn_number INTEGER NOT NULL,
8
+ extraction_id UUID,
9
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
10
+ );
11
+
12
+ CREATE INDEX IF NOT EXISTS idx_session_messages_session ON session_messages(session_id, turn_number);
13
+ CREATE INDEX IF NOT EXISTS idx_session_messages_unextracted ON session_messages(session_id) WHERE extraction_id IS NULL;
14
+ CREATE INDEX IF NOT EXISTS idx_session_messages_tenant ON session_messages(tenant_id);
package/src/storage.d.ts CHANGED
File without changes
File without changes
package/src/storage.js CHANGED
File without changes
File without changes
package/src/storage.ts CHANGED
@@ -82,6 +82,27 @@ export function toCamelCase(obj: Record<string, unknown>): Record<string, unknow
82
82
  return result;
83
83
  }
84
84
 
85
+ // ---------------------------------------------------------------------------
86
+ // Optional field-level encryption config
87
+ // ---------------------------------------------------------------------------
88
+
89
+ export interface EncryptionConfig {
90
+ /**
91
+ * Encrypt a plaintext string. Called before inserting sensitive text fields.
92
+ * Must return a string in format: `iv:authTag:ciphertext` (all base64).
93
+ * If not provided, fields are stored as plaintext.
94
+ */
95
+ encryptField: (plaintext: string) => string;
96
+
97
+ /**
98
+ * Decrypt an encrypted string. Called after fetching sensitive text fields.
99
+ * Input format: `iv:authTag:ciphertext` (all base64).
100
+ * Must handle gracefully if the input is NOT encrypted (plaintext fallback).
101
+ * If not provided, fields are returned as-is.
102
+ */
103
+ decryptField: (ciphertext: string) => string;
104
+ }
105
+
85
106
  // =============================================================================
86
107
  // Error helpers
87
108
  // =============================================================================
@@ -95,7 +116,63 @@ function throwSupabaseError(method: string, error: { message: string } | null):
95
116
  // =============================================================================
96
117
 
97
118
  export class SupabaseStorageAdapter implements StorageAdapter {
98
- constructor(private client: SupabaseClient) {}
119
+ private encryption?: EncryptionConfig;
120
+
121
+ constructor(
122
+ private client: SupabaseClient,
123
+ encryption?: EncryptionConfig,
124
+ ) {
125
+ this.encryption = encryption;
126
+ }
127
+
128
+ // Encrypt a single field. Returns value as-is if no encryption configured or value is null.
129
+ private enc(value: string | null | undefined): string | null | undefined {
130
+ if (value == null || value === '') return value;
131
+ if (!this.encryption) return value;
132
+ return this.encryption.encryptField(value);
133
+ }
134
+
135
+ // Decrypt a single field. Returns value as-is if:
136
+ // - no encryption configured
137
+ // - value is null/empty
138
+ // - value does not match encrypted format (handles old plaintext rows gracefully)
139
+ private dec(value: string | null | undefined): string | null | undefined {
140
+ if (value == null || value === '') return value;
141
+ if (!this.encryption) return value;
142
+ // Encrypted format is always: iv:authTag:ciphertext (exactly 3 colon-separated parts)
143
+ // If the value does not match this pattern it is plaintext — return as-is
144
+ const parts = (value as string).split(':');
145
+ if (parts.length !== 3) return value;
146
+ try {
147
+ return this.encryption.decryptField(value as string);
148
+ } catch {
149
+ return value; // decryption failed — return as-is, never crash
150
+ }
151
+ }
152
+
153
+ // Decrypt all sensitive text fields on a facts row.
154
+ // Call this on every row returned from any facts query.
155
+ private decryptFactRow(row: Record<string, unknown>): Record<string, unknown> {
156
+ if (row['content'] != null) row['content'] = this.dec(row['content'] as string);
157
+ if (row['source_chunk'] != null) row['source_chunk'] = this.dec(row['source_chunk'] as string);
158
+ if (row['original_content'] != null) row['original_content'] = this.dec(row['original_content'] as string);
159
+ return row;
160
+ }
161
+
162
+ // Decrypt all sensitive text fields on an entities row.
163
+ // NOTE: canonical_name is intentionally NOT decrypted — it stays plaintext for DB lookups.
164
+ private decryptEntityRow(row: Record<string, unknown>): Record<string, unknown> {
165
+ if (row['name'] != null) row['name'] = this.dec(row['name'] as string);
166
+ if (row['properties'] != null) {
167
+ const decrypted = this.dec(row['properties'] as string);
168
+ try {
169
+ row['properties'] = decrypted ? JSON.parse(decrypted as string) : row['properties'];
170
+ } catch {
171
+ row['properties'] = decrypted; // not valid JSON, keep as string
172
+ }
173
+ }
174
+ return row;
175
+ }
99
176
 
100
177
  async ping(): Promise<boolean> {
101
178
  const { error } = await this.client.from('tenants').select('id').limit(1);
@@ -324,6 +401,11 @@ export class SupabaseStorageAdapter implements StorageAdapter {
324
401
  const { embedding, ...rest } = fact;
325
402
  const row = toSnakeCase(rest as unknown as Record<string, unknown>);
326
403
 
404
+ // Encrypt sensitive text fields before storing
405
+ if (row['content'] != null) row['content'] = this.enc(row['content'] as string);
406
+ if (row['source_chunk'] != null) row['source_chunk'] = this.enc(row['source_chunk'] as string);
407
+ if (row['original_content'] != null) row['original_content'] = this.enc(row['original_content'] as string);
408
+
327
409
  // Version defaults to 1 for new facts
328
410
  if (!('version' in row)) {
329
411
  row['version'] = 1;
@@ -357,6 +439,7 @@ export class SupabaseStorageAdapter implements StorageAdapter {
357
439
  .maybeSingle();
358
440
  if (error) throwSupabaseError('getFact', error);
359
441
  if (!data) return null;
442
+ this.decryptFactRow(data as Record<string, unknown>);
360
443
  return toCamelCase(data as Record<string, unknown>) as unknown as Fact;
361
444
  }
362
445
 
@@ -368,9 +451,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
368
451
  .eq('tenant_id', tenantId)
369
452
  .in('id', ids);
370
453
  if (error) throwSupabaseError('getFactsByIds', error);
371
- return (data ?? []).map(
372
- (row) => toCamelCase(row as Record<string, unknown>) as unknown as Fact,
373
- );
454
+ return (data ?? []).map((row) => {
455
+ this.decryptFactRow(row as Record<string, unknown>);
456
+ return toCamelCase(row as Record<string, unknown>) as unknown as Fact;
457
+ });
374
458
  }
375
459
 
376
460
  async getFactsByLineage(tenantId: string, lineageId: string): Promise<Fact[]> {
@@ -381,9 +465,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
381
465
  .eq('lineage_id', lineageId)
382
466
  .order('version', { ascending: true });
383
467
  if (error) throwSupabaseError('getFactsByLineage', error);
384
- return (data ?? []).map(
385
- (row) => toCamelCase(row as Record<string, unknown>) as unknown as Fact,
386
- );
468
+ return (data ?? []).map((row) => {
469
+ this.decryptFactRow(row as Record<string, unknown>);
470
+ return toCamelCase(row as Record<string, unknown>) as unknown as Fact;
471
+ });
387
472
  }
388
473
 
389
474
  async invalidateFact(tenantId: string, id: string): Promise<void> {
@@ -410,6 +495,15 @@ export class SupabaseStorageAdapter implements StorageAdapter {
410
495
  const { embedding, ...rest } = entity;
411
496
  const row = toSnakeCase(rest as unknown as Record<string, unknown>);
412
497
 
498
+ // Encrypt display name and properties before persisting
499
+ // NOTE: canonical_name is intentionally NOT encrypted — it is used for DB equality lookups
500
+ if (row['name'] != null) row['name'] = this.enc(row['name'] as string);
501
+ if (row['properties'] != null) {
502
+ // Always JSON.stringify regardless of whether it is already a string.
503
+ // This ensures consistent round-trip: stringify on write, parse on read.
504
+ row['properties'] = this.enc(JSON.stringify(row['properties']));
505
+ }
506
+
413
507
  if (embedding !== undefined) {
414
508
  row['embedding'] = `[${embedding.join(',')}]`;
415
509
  }
@@ -432,6 +526,7 @@ export class SupabaseStorageAdapter implements StorageAdapter {
432
526
  .maybeSingle();
433
527
  if (error) throwSupabaseError('getEntity', error);
434
528
  if (!data) return null;
529
+ this.decryptEntityRow(data as Record<string, unknown>);
435
530
  return toCamelCase(data as Record<string, unknown>) as unknown as Entity;
436
531
  }
437
532
 
@@ -449,6 +544,7 @@ export class SupabaseStorageAdapter implements StorageAdapter {
449
544
  .maybeSingle();
450
545
  if (error) throwSupabaseError('findEntityByCanonicalName', error);
451
546
  if (!data) return null;
547
+ this.decryptEntityRow(data as Record<string, unknown>);
452
548
  return toCamelCase(data as Record<string, unknown>) as unknown as Entity;
453
549
  }
454
550
 
@@ -465,10 +561,13 @@ export class SupabaseStorageAdapter implements StorageAdapter {
465
561
  min_similarity: minSimilarity,
466
562
  });
467
563
  if (error) throwSupabaseError('findEntitiesByEmbedding', error);
468
- return (data ?? []).map((row: Record<string, unknown>) => ({
469
- entity: toCamelCase(row) as unknown as Entity,
470
- similarity: row['similarity'] as number,
471
- }));
564
+ return (data ?? []).map((row: Record<string, unknown>) => {
565
+ this.decryptEntityRow(row);
566
+ return {
567
+ entity: toCamelCase(row) as unknown as Entity,
568
+ similarity: row['similarity'] as number,
569
+ };
570
+ });
472
571
  }
473
572
 
474
573
  // ---------------------------------------------------------------------------
@@ -520,10 +619,13 @@ export class SupabaseStorageAdapter implements StorageAdapter {
520
619
 
521
620
  if (error) throwSupabaseError('vectorSearch', error);
522
621
 
523
- return (data ?? []).map((row: Record<string, unknown>) => ({
524
- fact: toCamelCase(row as Record<string, unknown>) as unknown as Fact,
525
- similarity: row['similarity'] as number,
526
- }));
622
+ return (data ?? []).map((row: Record<string, unknown>) => {
623
+ this.decryptFactRow(row);
624
+ return {
625
+ fact: toCamelCase(row) as unknown as Fact,
626
+ similarity: row['similarity'] as number,
627
+ };
628
+ });
527
629
  }
528
630
 
529
631
  // ---------------------------------------------------------------------------
@@ -598,9 +700,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
598
700
  const rows = data ?? [];
599
701
  const hasMore = rows.length > limit;
600
702
  const page = hasMore ? rows.slice(0, limit) : rows;
601
- const facts = page.map(
602
- (row) => toCamelCase(row as Record<string, unknown>) as unknown as Fact,
603
- );
703
+ const facts = page.map((row) => {
704
+ this.decryptFactRow(row as Record<string, unknown>);
705
+ return toCamelCase(row as Record<string, unknown>) as unknown as Fact;
706
+ });
604
707
  const nextCursor = hasMore && page.length > 0
605
708
  ? (page[page.length - 1] as Record<string, unknown>)['created_at'] as string
606
709
  : null;
@@ -685,6 +788,11 @@ export class SupabaseStorageAdapter implements StorageAdapter {
685
788
  }
686
789
 
687
790
  async keywordSearch(options: KeywordSearchOptions): Promise<KeywordSearchResult[]> {
791
+ // Keyword search uses PostgreSQL to_tsquery which cannot match encrypted ciphertext.
792
+ // When encryption is configured, skip keyword search entirely.
793
+ // Vector search (vectorSearch / compoundSearch) still works correctly via embeddings.
794
+ if (this.encryption) return [];
795
+
688
796
  const { query, tenantId, scope, scopeId, limit, asOf } = options;
689
797
 
690
798
  const { data, error } = await this.client.rpc('keyword_search_facts', {
@@ -721,11 +829,14 @@ export class SupabaseStorageAdapter implements StorageAdapter {
721
829
 
722
830
  if (error) throwSupabaseError('compoundSearch', error);
723
831
 
724
- return (data ?? []).map((row: Record<string, unknown>) => ({
725
- source: row['source'] as 'vector' | 'keyword',
726
- fact: toCamelCase(row) as unknown as Fact,
727
- relevanceScore: row['relevance_score'] as number,
728
- }));
832
+ return (data ?? []).map((row: Record<string, unknown>) => {
833
+ this.decryptFactRow(row);
834
+ return {
835
+ source: row['source'] as 'vector' | 'keyword',
836
+ fact: toCamelCase(row) as unknown as Fact,
837
+ relevanceScore: row['relevance_score'] as number,
838
+ };
839
+ });
729
840
  }
730
841
 
731
842
  async getEntitiesForTenant(
@@ -750,9 +861,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
750
861
  const rows = data ?? [];
751
862
  const hasMore = rows.length > limit;
752
863
  const page = hasMore ? rows.slice(0, limit) : rows;
753
- const entities = page.map(
754
- (row) => toCamelCase(row as Record<string, unknown>) as unknown as Entity,
755
- );
864
+ const entities = page.map((row) => {
865
+ this.decryptEntityRow(row as Record<string, unknown>);
866
+ return toCamelCase(row as Record<string, unknown>) as unknown as Entity;
867
+ });
756
868
  const nextCursor = hasMore && page.length > 0
757
869
  ? (page[page.length - 1] as Record<string, unknown>)['created_at'] as string
758
870
  : null;
@@ -1121,6 +1233,71 @@ export class SupabaseStorageAdapter implements StorageAdapter {
1121
1233
  return { data: sessions, cursor: nextCursor, hasMore };
1122
1234
  }
1123
1235
 
1236
+ // ---------------------------------------------------------------------------
1237
+ // Session Messages
1238
+ // ---------------------------------------------------------------------------
1239
+
1240
+ async addSessionMessage(msg: {
1241
+ id: string;
1242
+ sessionId: string;
1243
+ tenantId: string;
1244
+ role: string;
1245
+ content: string;
1246
+ turnNumber: number;
1247
+ }): Promise<void> {
1248
+ const { error } = await this.client
1249
+ .from('session_messages')
1250
+ .insert({
1251
+ id: msg.id,
1252
+ session_id: msg.sessionId,
1253
+ tenant_id: msg.tenantId,
1254
+ role: msg.role,
1255
+ content: this.enc(msg.content) as string,
1256
+ turn_number: msg.turnNumber,
1257
+ });
1258
+ if (error) throwSupabaseError('addSessionMessage', error);
1259
+ }
1260
+
1261
+ async getSessionMessages(
1262
+ tenantId: string,
1263
+ sessionId: string,
1264
+ options?: { unextractedOnly?: boolean },
1265
+ ): Promise<Array<{ id: string; role: string; content: string; turnNumber: number; createdAt: Date }>> {
1266
+ let query = this.client
1267
+ .from('session_messages')
1268
+ .select('id, role, content, turn_number, created_at')
1269
+ .eq('tenant_id', tenantId)
1270
+ .eq('session_id', sessionId)
1271
+ .order('turn_number', { ascending: true });
1272
+
1273
+ if (options?.unextractedOnly) {
1274
+ query = query.is('extraction_id', null);
1275
+ }
1276
+
1277
+ const { data, error } = await query;
1278
+ if (error) throwSupabaseError('getSessionMessages', error);
1279
+
1280
+ return (data ?? []).map((row) => ({
1281
+ id: row.id as string,
1282
+ role: row.role as string,
1283
+ content: this.dec(row.content as string) as string,
1284
+ turnNumber: row.turn_number as number,
1285
+ createdAt: new Date(row.created_at as string),
1286
+ }));
1287
+ }
1288
+
1289
+ async markMessagesExtracted(
1290
+ messageIds: string[],
1291
+ extractionId: string,
1292
+ ): Promise<void> {
1293
+ if (messageIds.length === 0) return;
1294
+ const { error } = await this.client
1295
+ .from('session_messages')
1296
+ .update({ extraction_id: extractionId })
1297
+ .in('id', messageIds);
1298
+ if (error) throwSupabaseError('markMessagesExtracted', error);
1299
+ }
1300
+
1124
1301
  // ---------------------------------------------------------------------------
1125
1302
  // Webhooks
1126
1303
  // ---------------------------------------------------------------------------