@opensaas/stack-rag 0.1.6 → 0.1.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/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +82 -6
  4. package/dist/config/plugin.d.ts.map +1 -1
  5. package/dist/config/plugin.js +29 -1
  6. package/dist/config/plugin.js.map +1 -1
  7. package/dist/config/types.d.ts +51 -0
  8. package/dist/config/types.d.ts.map +1 -1
  9. package/dist/fields/index.d.ts +1 -0
  10. package/dist/fields/index.d.ts.map +1 -1
  11. package/dist/fields/index.js +1 -0
  12. package/dist/fields/index.js.map +1 -1
  13. package/dist/fields/searchable.d.ts +42 -0
  14. package/dist/fields/searchable.d.ts.map +1 -0
  15. package/dist/fields/searchable.js +51 -0
  16. package/dist/fields/searchable.js.map +1 -0
  17. package/dist/fields/searchable.test.d.ts +2 -0
  18. package/dist/fields/searchable.test.d.ts.map +1 -0
  19. package/dist/fields/searchable.test.js +112 -0
  20. package/dist/fields/searchable.test.js.map +1 -0
  21. package/dist/providers/openai.d.ts +2 -0
  22. package/dist/providers/openai.d.ts.map +1 -1
  23. package/dist/providers/openai.js +35 -20
  24. package/dist/providers/openai.js.map +1 -1
  25. package/dist/runtime/batch.test.js +1 -1
  26. package/dist/storage/access-filter.d.ts +30 -0
  27. package/dist/storage/access-filter.d.ts.map +1 -0
  28. package/dist/storage/access-filter.js +241 -0
  29. package/dist/storage/access-filter.js.map +1 -0
  30. package/dist/storage/index.d.ts +1 -0
  31. package/dist/storage/index.d.ts.map +1 -1
  32. package/dist/storage/index.js +2 -0
  33. package/dist/storage/index.js.map +1 -1
  34. package/dist/storage/pgvector.d.ts.map +1 -1
  35. package/dist/storage/pgvector.js +26 -11
  36. package/dist/storage/pgvector.js.map +1 -1
  37. package/dist/storage/storage.test.js +1 -0
  38. package/dist/storage/storage.test.js.map +1 -1
  39. package/dist/storage/types.d.ts +5 -0
  40. package/dist/storage/types.d.ts.map +1 -1
  41. package/dist/storage/types.js.map +1 -1
  42. package/package.json +3 -3
  43. package/src/config/plugin.ts +35 -2
  44. package/src/config/types.ts +59 -0
  45. package/src/fields/index.ts +2 -0
  46. package/src/fields/searchable.test.ts +136 -0
  47. package/src/fields/searchable.ts +57 -0
  48. package/src/providers/openai.ts +37 -22
  49. package/src/runtime/batch.test.ts +1 -1
  50. package/src/storage/access-filter.ts +303 -0
  51. package/src/storage/index.ts +3 -0
  52. package/src/storage/pgvector.ts +31 -11
  53. package/src/storage/storage.test.ts +1 -0
  54. package/src/storage/types.ts +6 -0
  55. package/tsconfig.tsbuildinfo +1 -1
@@ -6,6 +6,19 @@ const MODEL_DIMENSIONS = {
6
6
  'text-embedding-3-large': 3072,
7
7
  'text-embedding-ada-002': 1536,
8
8
  };
9
+ /**
10
+ * Lazily load OpenAI to avoid requiring it at import time
11
+ */
12
+ async function getOpenAI() {
13
+ try {
14
+ const module = await import('openai');
15
+ return module.default;
16
+ }
17
+ catch (error) {
18
+ throw new Error('OpenAI package not found. Install it with: npm install openai\n' +
19
+ 'Make sure to run: pnpm install openai');
20
+ }
21
+ }
9
22
  /**
10
23
  * OpenAI embedding provider
11
24
  * Requires the `openai` package to be installed
@@ -14,30 +27,30 @@ export class OpenAIEmbeddingProvider {
14
27
  type = 'openai';
15
28
  model;
16
29
  dimensions;
17
- client;
30
+ client = null;
18
31
  config;
32
+ clientPromise = null;
19
33
  constructor(config) {
20
34
  this.config = config;
21
35
  this.model = config.model || 'text-embedding-3-small';
22
36
  this.dimensions = MODEL_DIMENSIONS[this.model] || 1536;
23
- // Initialize OpenAI client
24
- this.client = this.initializeClient();
25
37
  }
26
- initializeClient() {
27
- try {
28
- // eslint-disable-next-line @typescript-eslint/no-require-imports
29
- const { OpenAI } = require('openai');
30
- return new OpenAI({
31
- apiKey: this.config.apiKey,
32
- organization: this.config.organization,
33
- baseURL: this.config.baseURL,
34
- });
35
- }
36
- catch (error) {
37
- throw new Error('OpenAI package not found. Install it with: npm install openai\n' +
38
- 'Error: ' +
39
- error.message);
40
- }
38
+ async ensureClient() {
39
+ if (this.client)
40
+ return this.client;
41
+ if (this.clientPromise)
42
+ return this.clientPromise;
43
+ this.clientPromise = this.initializeClient();
44
+ this.client = await this.clientPromise;
45
+ return this.client;
46
+ }
47
+ async initializeClient() {
48
+ const OpenAI = await getOpenAI();
49
+ return new OpenAI({
50
+ apiKey: this.config.apiKey,
51
+ organization: this.config.organization,
52
+ baseURL: this.config.baseURL,
53
+ });
41
54
  }
42
55
  /**
43
56
  * Generate embedding for a single text
@@ -47,7 +60,8 @@ export class OpenAIEmbeddingProvider {
47
60
  throw new Error('Cannot generate embedding for empty text');
48
61
  }
49
62
  try {
50
- const response = await this.client.embeddings.create({
63
+ const client = await this.ensureClient();
64
+ const response = await client.embeddings.create({
51
65
  model: this.model,
52
66
  input: text,
53
67
  encoding_format: 'float',
@@ -79,7 +93,8 @@ export class OpenAIEmbeddingProvider {
79
93
  }
80
94
  try {
81
95
  // OpenAI supports batch embedding
82
- const response = await this.client.embeddings.create({
96
+ const client = await this.ensureClient();
97
+ const response = await client.embeddings.create({
83
98
  model: this.model,
84
99
  input: validTexts,
85
100
  encoding_format: 'float',
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -200,7 +200,7 @@ describe('ProcessingQueue', () => {
200
200
  // With concurrency 3, should be faster than sequential
201
201
  // 5 items with 10ms each sequentially = 50ms
202
202
  // With concurrency 3: ceil(5/3) * 10ms = 20ms
203
- expect(duration).toBeLessThan(40);
203
+ expect(duration).toBeLessThan(50);
204
204
  });
205
205
  it('should track queue size', async () => {
206
206
  const queue = new ProcessingQueue(async (item) => {
@@ -0,0 +1,30 @@
1
+ import type { AccessContext, PrismaFilter } from '@opensaas/stack-core';
2
+ import type { OpenSaasConfig } from '@opensaas/stack-core';
3
+ /**
4
+ * Build access control filter for a given list and context
5
+ * Extracts the filter that would be applied by the access control engine
6
+ *
7
+ * @param listKey - The list name (e.g., 'Post', 'Article')
8
+ * @param context - The access context with session
9
+ * @param config - The OpenSaas configuration
10
+ * @returns Prisma filter object or null if access is denied
11
+ */
12
+ export declare function buildAccessControlFilter(listKey: string, context: AccessContext, config: OpenSaasConfig): Promise<PrismaFilter | null>;
13
+ /**
14
+ * Merge access control filter with user-provided where clause
15
+ *
16
+ * @param accessFilter - Filter from access control
17
+ * @param userWhere - User-provided where clause
18
+ * @returns Combined filter or null if access is denied
19
+ */
20
+ export declare function mergeAccessFilter(accessFilter: PrismaFilter | null, userWhere?: Record<string, unknown>): PrismaFilter | null;
21
+ /**
22
+ * Convert a Prisma filter object to SQL WHERE clause
23
+ * Handles common Prisma filter operators
24
+ *
25
+ * @param filter - Prisma filter object
26
+ * @param tableName - Table name for column references
27
+ * @returns SQL WHERE clause string (without "WHERE" keyword)
28
+ */
29
+ export declare function prismaFilterToSQL(filter: PrismaFilter, tableName?: string): string;
30
+ //# sourceMappingURL=access-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-filter.d.ts","sourceRoot":"","sources":["../../src/storage/access-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAoD1D;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAiC9B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACtC,YAAY,GAAG,IAAI,CAMrB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAiJlF"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Execute an access control function (copied from @opensaas/stack-core/access)
3
+ */
4
+ async function checkAccess(accessControl, args) {
5
+ // No access control means deny by default
6
+ if (!accessControl) {
7
+ return false;
8
+ }
9
+ // Execute the access control function
10
+ const result = await accessControl(args);
11
+ return result;
12
+ }
13
+ /**
14
+ * Merge user filter with access control filter (copied from @opensaas/stack-core/access)
15
+ */
16
+ function mergeFilters(userFilter, accessFilter) {
17
+ // If access is denied, return null
18
+ if (accessFilter === false) {
19
+ return null;
20
+ }
21
+ // If access is fully granted, use user filter
22
+ if (accessFilter === true) {
23
+ return userFilter || {};
24
+ }
25
+ // Merge access filter with user filter
26
+ if (!userFilter) {
27
+ return accessFilter;
28
+ }
29
+ // Combine filters with AND
30
+ return {
31
+ AND: [accessFilter, userFilter],
32
+ };
33
+ }
34
+ /**
35
+ * Build access control filter for a given list and context
36
+ * Extracts the filter that would be applied by the access control engine
37
+ *
38
+ * @param listKey - The list name (e.g., 'Post', 'Article')
39
+ * @param context - The access context with session
40
+ * @param config - The OpenSaas configuration
41
+ * @returns Prisma filter object or null if access is denied
42
+ */
43
+ export async function buildAccessControlFilter(listKey, context, config) {
44
+ const listConfig = config.lists[listKey];
45
+ if (!listConfig) {
46
+ throw new Error(`List '${listKey}' not found in config`);
47
+ }
48
+ // Check query access control
49
+ const queryAccess = listConfig.access?.operation?.query;
50
+ if (!queryAccess) {
51
+ // No access control means deny by default (following OpenSaaS Stack pattern)
52
+ return null;
53
+ }
54
+ // Execute access control function
55
+ const accessResult = await checkAccess(queryAccess, {
56
+ session: context.session,
57
+ context,
58
+ });
59
+ // If access is denied (false), return null
60
+ if (accessResult === false) {
61
+ return null;
62
+ }
63
+ // If access is fully granted (true), return empty filter
64
+ if (accessResult === true) {
65
+ return {};
66
+ }
67
+ // Otherwise, return the filter object
68
+ return accessResult;
69
+ }
70
+ /**
71
+ * Merge access control filter with user-provided where clause
72
+ *
73
+ * @param accessFilter - Filter from access control
74
+ * @param userWhere - User-provided where clause
75
+ * @returns Combined filter or null if access is denied
76
+ */
77
+ export function mergeAccessFilter(accessFilter, userWhere = {}) {
78
+ if (accessFilter === null) {
79
+ return null;
80
+ }
81
+ return mergeFilters(userWhere, accessFilter);
82
+ }
83
+ /**
84
+ * Convert a Prisma filter object to SQL WHERE clause
85
+ * Handles common Prisma filter operators
86
+ *
87
+ * @param filter - Prisma filter object
88
+ * @param tableName - Table name for column references
89
+ * @returns SQL WHERE clause string (without "WHERE" keyword)
90
+ */
91
+ export function prismaFilterToSQL(filter, tableName) {
92
+ if (!filter || Object.keys(filter).length === 0) {
93
+ return 'TRUE'; // No filter means all records
94
+ }
95
+ const conditions = [];
96
+ for (const [key, value] of Object.entries(filter)) {
97
+ // Handle logical operators
98
+ if (key === 'AND') {
99
+ if (!Array.isArray(value))
100
+ continue;
101
+ const andConditions = value
102
+ .map((subFilter) => prismaFilterToSQL(subFilter, tableName))
103
+ .filter((c) => c !== 'TRUE');
104
+ if (andConditions.length > 0) {
105
+ conditions.push(`(${andConditions.join(' AND ')})`);
106
+ }
107
+ continue;
108
+ }
109
+ if (key === 'OR') {
110
+ if (!Array.isArray(value))
111
+ continue;
112
+ const orConditions = value
113
+ .map((subFilter) => prismaFilterToSQL(subFilter, tableName))
114
+ .filter((c) => c !== 'TRUE');
115
+ if (orConditions.length > 0) {
116
+ conditions.push(`(${orConditions.join(' OR ')})`);
117
+ }
118
+ continue;
119
+ }
120
+ if (key === 'NOT') {
121
+ const notCondition = prismaFilterToSQL(value, tableName);
122
+ if (notCondition !== 'TRUE') {
123
+ conditions.push(`NOT (${notCondition})`);
124
+ }
125
+ continue;
126
+ }
127
+ // Handle field conditions
128
+ const columnName = tableName ? `"${tableName}"."${key}"` : `"${key}"`;
129
+ if (value === null) {
130
+ conditions.push(`${columnName} IS NULL`);
131
+ continue;
132
+ }
133
+ if (typeof value !== 'object' || value === null) {
134
+ // Direct equality
135
+ const escapedValue = escapeSQLValue(value);
136
+ conditions.push(`${columnName} = ${escapedValue}`);
137
+ continue;
138
+ }
139
+ // Handle nested field conditions
140
+ const fieldConditions = [];
141
+ for (const [operator, operatorValue] of Object.entries(value)) {
142
+ switch (operator) {
143
+ case 'equals':
144
+ if (operatorValue === null) {
145
+ fieldConditions.push(`${columnName} IS NULL`);
146
+ }
147
+ else {
148
+ fieldConditions.push(`${columnName} = ${escapeSQLValue(operatorValue)}`);
149
+ }
150
+ break;
151
+ case 'not':
152
+ if (operatorValue === null) {
153
+ fieldConditions.push(`${columnName} IS NOT NULL`);
154
+ }
155
+ else {
156
+ fieldConditions.push(`${columnName} != ${escapeSQLValue(operatorValue)}`);
157
+ }
158
+ break;
159
+ case 'in':
160
+ if (Array.isArray(operatorValue) && operatorValue.length > 0) {
161
+ const values = operatorValue.map((v) => escapeSQLValue(v)).join(', ');
162
+ fieldConditions.push(`${columnName} IN (${values})`);
163
+ }
164
+ break;
165
+ case 'notIn':
166
+ if (Array.isArray(operatorValue) && operatorValue.length > 0) {
167
+ const values = operatorValue.map((v) => escapeSQLValue(v)).join(', ');
168
+ fieldConditions.push(`${columnName} NOT IN (${values})`);
169
+ }
170
+ break;
171
+ case 'lt':
172
+ fieldConditions.push(`${columnName} < ${escapeSQLValue(operatorValue)}`);
173
+ break;
174
+ case 'lte':
175
+ fieldConditions.push(`${columnName} <= ${escapeSQLValue(operatorValue)}`);
176
+ break;
177
+ case 'gt':
178
+ fieldConditions.push(`${columnName} > ${escapeSQLValue(operatorValue)}`);
179
+ break;
180
+ case 'gte':
181
+ fieldConditions.push(`${columnName} >= ${escapeSQLValue(operatorValue)}`);
182
+ break;
183
+ case 'contains':
184
+ fieldConditions.push(`${columnName} LIKE ${escapeSQLValue(`%${operatorValue}%`)}`);
185
+ break;
186
+ case 'startsWith':
187
+ fieldConditions.push(`${columnName} LIKE ${escapeSQLValue(`${operatorValue}%`)}`);
188
+ break;
189
+ case 'endsWith':
190
+ fieldConditions.push(`${columnName} LIKE ${escapeSQLValue(`%${operatorValue}`)}`);
191
+ break;
192
+ case 'isNull':
193
+ if (operatorValue === true) {
194
+ fieldConditions.push(`${columnName} IS NULL`);
195
+ }
196
+ else {
197
+ fieldConditions.push(`${columnName} IS NOT NULL`);
198
+ }
199
+ break;
200
+ // Add more operators as needed
201
+ default:
202
+ console.warn(`Unsupported Prisma filter operator: ${operator}`);
203
+ }
204
+ }
205
+ if (fieldConditions.length > 0) {
206
+ conditions.push(fieldConditions.join(' AND '));
207
+ }
208
+ }
209
+ if (conditions.length === 0) {
210
+ return 'TRUE';
211
+ }
212
+ if (conditions.length === 1) {
213
+ return conditions[0];
214
+ }
215
+ return conditions.join(' AND ');
216
+ }
217
+ /**
218
+ * Escape SQL values to prevent SQL injection
219
+ * Basic escaping - in production, use parameterized queries
220
+ */
221
+ function escapeSQLValue(value) {
222
+ if (value === null) {
223
+ return 'NULL';
224
+ }
225
+ if (typeof value === 'string') {
226
+ // Escape single quotes by doubling them
227
+ return `'${value.replace(/'/g, "''")}'`;
228
+ }
229
+ if (typeof value === 'number') {
230
+ return value.toString();
231
+ }
232
+ if (typeof value === 'boolean') {
233
+ return value ? 'TRUE' : 'FALSE';
234
+ }
235
+ if (value instanceof Date) {
236
+ return `'${value.toISOString()}'`;
237
+ }
238
+ // Fallback for other types
239
+ return `'${String(value).replace(/'/g, "''")}'`;
240
+ }
241
+ //# sourceMappingURL=access-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-filter.js","sourceRoot":"","sources":["../../src/storage/access-filter.ts"],"names":[],"mappings":"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"}
@@ -38,4 +38,5 @@ export * from './types.js';
38
38
  export { JsonVectorStorage, createJsonStorage } from './json.js';
39
39
  export { PgVectorStorage, createPgVectorStorage } from './pgvector.js';
40
40
  export { SqliteVssStorage, createSqliteVssStorage } from './sqlite-vss.js';
41
+ export { buildAccessControlFilter, mergeAccessFilter, prismaFilterToSQL } from './access-filter.js';
41
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AA4B7D;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,aAAa,GACtD,IAAI,CAEN;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAW9E;AAGD,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AA4B7D;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,aAAa,GACtD,IAAI,CAEN;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAW9E;AAGD,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAG1E,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -70,4 +70,6 @@ export * from './types.js';
70
70
  export { JsonVectorStorage, createJsonStorage } from './json.js';
71
71
  export { PgVectorStorage, createPgVectorStorage } from './pgvector.js';
72
72
  export { SqliteVssStorage, createSqliteVssStorage } from './sqlite-vss.js';
73
+ // Export access control utilities
74
+ export { buildAccessControlFilter, mergeAccessFilter, prismaFilterToSQL } from './access-filter.js';
73
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD;;;GAGG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0D,CAAA;AAE1F;;GAEG;AACH,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvD,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,qBAAqB,CAAC,MAA4D,CAAC,CAAA;AAC5F,CAAC,CAAC,CAAA;AACF,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,sBAAsB,CAAC,MAA6D,CAAC,CAAA;AAC9F,CAAC,CAAC,CAAA;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAAuD;IAEvD,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,IAAI,IAAI;YAC7C,uBAAuB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAA;IACH,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,+CAA+C;AAC/C,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD;;;GAGG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0D,CAAA;AAE1F;;GAEG;AACH,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvD,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,qBAAqB,CAAC,MAA4D,CAAC,CAAA;AAC5F,CAAC,CAAC,CAAA;AACF,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,sBAAsB,CAAC,MAA6D,CAAC,CAAA;AAC9F,CAAC,CAAC,CAAA;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAAuD;IAEvD,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,IAAI,IAAI;YAC7C,uBAAuB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAA;IACH,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,+CAA+C;AAC/C,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,kCAAkC;AAClC,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pgvector.d.ts","sourceRoot":"","sources":["../../src/storage/pgvector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAI/D;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,IAAI,cAAa;IAC1B,OAAO,CAAC,gBAAgB,CAAmC;gBAE/C,MAAM,EAAE,qBAAqB;IAIzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAoG7B;;OAEG;YACW,cAAc;IAW5B;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;CAGnD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAEpF"}
1
+ {"version":3,"file":"pgvector.d.ts","sourceRoot":"","sources":["../../src/storage/pgvector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAK/D;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,IAAI,cAAa;IAC1B,OAAO,CAAC,gBAAgB,CAAmC;gBAE/C,MAAM,EAAE,qBAAqB;IAIzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAuH7B;;OAEG;YACW,cAAc;IAW5B;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;CAGnD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAEpF"}
@@ -1,5 +1,6 @@
1
1
  import { cosineSimilarity as calculateCosineSimilarity } from './types.js';
2
2
  import { getDbKey } from '@opensaas/stack-core';
3
+ import { buildAccessControlFilter, mergeAccessFilter, prismaFilterToSQL } from './access-filter.js';
3
4
  /**
4
5
  * pgvector storage backend
5
6
  * Uses PostgreSQL with pgvector extension for efficient vector similarity search
@@ -49,7 +50,7 @@ export class PgVectorStorage {
49
50
  * Search for similar vectors using pgvector
50
51
  */
51
52
  async search(listKey, fieldName, queryVector, options) {
52
- const { limit = 10, minScore = 0.0, context, where = {} } = options;
53
+ const { limit = 10, minScore = 0.0, context, where = {}, config } = options;
53
54
  const dbKey = getDbKey(listKey);
54
55
  const model = context.db[dbKey];
55
56
  if (!model) {
@@ -60,31 +61,45 @@ export class PgVectorStorage {
60
61
  // pgvector expects vectors in format: '[1,2,3]'
61
62
  const vectorString = `[${queryVector.join(',')}]`;
62
63
  // We need to use Prisma.$queryRaw to access pgvector operators
63
- // The access-controlled context.db doesn't expose $queryRaw directly,
64
- // so we need to use a two-step approach:
65
- // 1. Get all matching IDs using raw query
66
- // 2. Fetch full items via access-controlled context
64
+ // However, we must enforce access control in the raw query itself
65
+ // to ensure users only see items they have access to
67
66
  try {
68
67
  // Get the underlying Prisma client
69
- // Note: This bypasses access control for the similarity search,
70
- // but we enforce it in the second query
71
68
  const prisma = context.prisma;
72
69
  if (!prisma) {
73
70
  // Fallback: if we can't access Prisma directly, use JSON storage approach
74
71
  console.warn('pgvector: Could not access Prisma client directly. ' +
75
72
  'Falling back to JSON-based search. ' +
76
- 'For full pgvector support, ensure the context exposes _prisma.');
73
+ 'For full pgvector support, ensure the context exposes prisma.');
77
74
  return this.fallbackSearch(listKey, fieldName, queryVector, options);
78
75
  }
79
- // Raw query to get IDs and distances
76
+ // Build access control filter
77
+ let accessFilter = null;
78
+ if (config) {
79
+ accessFilter = await buildAccessControlFilter(listKey, context, config);
80
+ // If access is denied, return empty results
81
+ if (accessFilter === null) {
82
+ return [];
83
+ }
84
+ }
85
+ // Merge access filter with user where clause
86
+ const combinedFilter = accessFilter ? mergeAccessFilter(accessFilter, where) : where;
87
+ // If merged filter is null (access denied), return empty results
88
+ if (combinedFilter === null) {
89
+ return [];
90
+ }
91
+ // Convert Prisma filter to SQL WHERE clause
92
+ const tableName = listKey; // Prisma table names match the model name (PascalCase by default)
93
+ const sqlWhereClause = prismaFilterToSQL(combinedFilter, tableName);
94
+ // Raw query to get IDs and distances with access control
80
95
  // We extract the vector from the JSON field and cast it to vector type
81
- const tableName = listKey.toLowerCase(); // Prisma table names are lowercase
82
96
  const results = (await prisma.$queryRawUnsafe(`
83
97
  SELECT id,
84
98
  (("${fieldName}"->>'vector')::vector ${distanceOp} '${vectorString}'::vector) as distance
85
99
  FROM "${tableName}"
86
100
  WHERE "${fieldName}" IS NOT NULL
87
101
  AND "${fieldName}"->>'vector' IS NOT NULL
102
+ AND (${sqlWhereClause})
88
103
  ORDER BY distance
89
104
  LIMIT ${limit * 2}
90
105
  `));
@@ -102,9 +117,9 @@ export class PgVectorStorage {
102
117
  return [];
103
118
  }
104
119
  // Fetch full items via access-controlled context
120
+ // This applies field-level access control and resolveOutput hooks
105
121
  const items = await model.findMany({
106
122
  where: {
107
- ...where,
108
123
  id: {
109
124
  in: itemIds.map((r) => r.id),
110
125
  },
@@ -1 +1 @@
1
- {"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../../src/storage/pgvector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../../src/storage/pgvector.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ function createMockContext(dbOverrides = {}) {
10
10
  sudo: vi.fn(),
11
11
  prisma: {},
12
12
  storage: {},
13
+ _isSudo: false,
13
14
  };
14
15
  }
15
16
  describe('Vector Storage', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../../src/storage/storage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../../src/storage/storage.test.ts"],"names":[],"mappings":"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"}