@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
@@ -1,4 +1,4 @@
1
1
 
2
- > @opensaas/stack-rag@0.1.6 build /home/runner/work/stack/stack/packages/rag
2
+ > @opensaas/stack-rag@0.1.7 build /home/runner/work/stack/stack/packages/rag
3
3
  > tsc
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @opensaas/stack-rag
2
2
 
3
+ ## 0.1.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 372d467: Add `searchable` helper functions to embeddings
8
+ - 372d467: Add sudo to context to bypass access control
9
+ - Updated dependencies [372d467]
10
+ - @opensaas/stack-core@0.1.7
11
+
3
12
  ## 0.1.6
4
13
 
5
14
  ### Patch Changes
package/README.md CHANGED
@@ -35,7 +35,7 @@ pnpm add openai # For OpenAI embeddings
35
35
  import { config, list } from '@opensaas/stack-core'
36
36
  import { text } from '@opensaas/stack-core/fields'
37
37
  import { ragPlugin, openaiEmbeddings, pgvectorStorage } from '@opensaas/stack-rag'
38
- import { embedding } from '@opensaas/stack-rag/fields'
38
+ import { searchable } from '@opensaas/stack-rag/fields'
39
39
 
40
40
  export default config({
41
41
  plugins: [
@@ -55,13 +55,10 @@ export default config({
55
55
  Article: list({
56
56
  fields: {
57
57
  title: text({ validation: { isRequired: true } }),
58
- content: text({ validation: { isRequired: true } }),
59
- // Embedding field with automatic generation
60
- contentEmbedding: embedding({
61
- sourceField: 'content', // Auto-embed when content changes
58
+ // Use searchable() wrapper for automatic embedding generation
59
+ content: searchable(text({ validation: { isRequired: true } }), {
62
60
  provider: 'openai',
63
61
  dimensions: 1536,
64
- autoGenerate: true,
65
62
  }),
66
63
  },
67
64
  }),
@@ -69,6 +66,12 @@ export default config({
69
66
  })
70
67
  ```
71
68
 
69
+ **What's happening:**
70
+
71
+ - The `searchable()` wrapper automatically creates a `contentEmbedding` field
72
+ - Embeddings are auto-generated whenever `content` changes
73
+ - The embedding field respects all your existing access control rules
74
+
72
75
  ### 2. Generate schema and push to database
73
76
 
74
77
  ```bash
@@ -182,6 +185,79 @@ Good for SQLite-based apps. Requires sqlite-vss extension.
182
185
  storage: sqliteVssStorage({ distanceFunction: 'cosine' })
183
186
  ```
184
187
 
188
+ ## Field Configuration Patterns
189
+
190
+ ### High-Level: `searchable()` Wrapper (Recommended)
191
+
192
+ The easiest way to add semantic search to any field:
193
+
194
+ ```typescript
195
+ import { searchable } from '@opensaas/stack-rag/fields'
196
+
197
+ fields: {
198
+ content: searchable(text({ validation: { isRequired: true } }), {
199
+ provider: 'openai',
200
+ dimensions: 1536,
201
+ })
202
+ }
203
+ ```
204
+
205
+ **What it does:**
206
+
207
+ - Automatically creates a companion `contentEmbedding` field
208
+ - Links it to the source field (`content`)
209
+ - Auto-generates embeddings when content changes
210
+ - Clean, concise syntax
211
+
212
+ **Options:**
213
+
214
+ ```typescript
215
+ type SearchableOptions = {
216
+ provider?: string // Embedding provider (e.g., 'openai', 'ollama')
217
+ dimensions?: number // Vector dimensions (default: 1536)
218
+ chunking?: ChunkingConfig // Text chunking configuration
219
+ embeddingFieldName?: string // Custom embedding field name (default: `${fieldName}Embedding`)
220
+ }
221
+ ```
222
+
223
+ **Custom embedding field name:**
224
+
225
+ ```typescript
226
+ fields: {
227
+ body: searchable(text(), {
228
+ provider: 'openai',
229
+ embeddingFieldName: 'bodyVector', // Instead of 'bodyEmbedding'
230
+ })
231
+ }
232
+ ```
233
+
234
+ ### Low-Level: Manual `embedding()` Field
235
+
236
+ For advanced use cases where you need more control:
237
+
238
+ ```typescript
239
+ import { embedding } from '@opensaas/stack-rag/fields'
240
+
241
+ fields: {
242
+ content: text({ validation: { isRequired: true } }),
243
+ contentEmbedding: embedding({
244
+ sourceField: 'content',
245
+ provider: 'openai',
246
+ dimensions: 1536,
247
+ autoGenerate: true,
248
+ })
249
+ }
250
+ ```
251
+
252
+ **When to use manual pattern:**
253
+
254
+ - Need access to the embedding field in your schema
255
+ - Want to store embeddings without a source field
256
+ - Building custom embedding pipelines
257
+ - Need field-level hooks on the embedding field
258
+
259
+ Both patterns are fully supported and can be used interchangeably.
260
+
185
261
  ## MCP Integration
186
262
 
187
263
  Automatic semantic search tools for AI assistants:
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAuB,MAAM,YAAY,CAAA;AAIhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAkLnD"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAA2C,MAAM,YAAY,CAAA;AAKpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAkNnD"}
@@ -1,5 +1,6 @@
1
1
  import { normalizeRAGConfig } from './index.js';
2
2
  import { createEmbeddingProvider } from '../providers/index.js';
3
+ import { embedding } from '../fields/embedding.js';
3
4
  /**
4
5
  * RAG plugin for OpenSaas Stack
5
6
  * Provides vector embeddings, semantic search, and automatic embedding generation
@@ -40,7 +41,34 @@ export function ragPlugin(config) {
40
41
  name: 'rag',
41
42
  version: '0.1.0',
42
43
  init: async (context) => {
43
- // Find all embedding fields with autoGenerate enabled
44
+ // First pass: Scan for searchable() wrapped fields and inject embedding fields
45
+ for (const [listName, listConfig] of Object.entries(context.config.lists)) {
46
+ const embeddingFieldsToInject = {};
47
+ for (const [fieldName, fieldConfig] of Object.entries(listConfig.fields)) {
48
+ // Check if field has _searchable metadata
49
+ if ('_searchable' in fieldConfig) {
50
+ const meta = fieldConfig._searchable;
51
+ // Determine embedding field name
52
+ const embeddingName = meta.embeddingFieldName || `${fieldName}Embedding`;
53
+ // Create embedding field
54
+ embeddingFieldsToInject[embeddingName] = embedding({
55
+ sourceField: fieldName,
56
+ provider: meta.provider,
57
+ dimensions: meta.dimensions,
58
+ chunking: meta.chunking,
59
+ autoGenerate: true,
60
+ });
61
+ }
62
+ }
63
+ // Inject all embedding fields at once
64
+ if (Object.keys(embeddingFieldsToInject).length > 0) {
65
+ context.extendList(listName, {
66
+ fields: embeddingFieldsToInject,
67
+ });
68
+ }
69
+ }
70
+ // Second pass: Find all embedding fields with autoGenerate enabled
71
+ // This includes both manually defined embedding fields AND injected ones from searchable()
44
72
  for (const [listName, listConfig] of Object.entries(context.config.lists)) {
45
73
  for (const [fieldName, fieldConfig] of Object.entries(listConfig.fields)) {
46
74
  if (fieldConfig.type === 'embedding' &&
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"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"}
@@ -246,4 +246,55 @@ export type SearchResult<T = unknown> = {
246
246
  */
247
247
  distance: number;
248
248
  };
249
+ /**
250
+ * Options for searchable() field wrapper
251
+ * Simplified options for common use cases
252
+ */
253
+ export type SearchableOptions = {
254
+ /**
255
+ * Embedding provider to use
256
+ * References a provider name from RAG config
257
+ * Falls back to default provider if not specified
258
+ */
259
+ provider?: EmbeddingProviderName;
260
+ /**
261
+ * Vector dimensions
262
+ * Must match the provider's output dimensions
263
+ * @default 1536 (OpenAI text-embedding-3-small)
264
+ */
265
+ dimensions?: number;
266
+ /**
267
+ * Chunking configuration for long texts
268
+ */
269
+ chunking?: ChunkingConfig;
270
+ /**
271
+ * Custom name for the generated embedding field
272
+ * If not provided, defaults to `${fieldName}Embedding`
273
+ * @example 'contentVector' instead of 'contentEmbedding'
274
+ */
275
+ embeddingFieldName?: string;
276
+ };
277
+ /**
278
+ * Internal metadata attached to searchable fields
279
+ * Used by ragPlugin to identify and inject embedding fields
280
+ * @internal
281
+ */
282
+ export type SearchableMetadata = {
283
+ /**
284
+ * Name for the generated embedding field
285
+ */
286
+ embeddingFieldName: string;
287
+ /**
288
+ * Embedding provider to use
289
+ */
290
+ provider?: EmbeddingProviderName;
291
+ /**
292
+ * Vector dimensions
293
+ */
294
+ dimensions?: number;
295
+ /**
296
+ * Chunking configuration
297
+ */
298
+ chunking?: ChunkingConfig;
299
+ };
249
300
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAEnF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEhE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,wBAAwB,GACxB,wBAAwB,GACxB,wBAAwB,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,QAAQ,CAAA;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,oBAAoB,CAAA;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,QAAQ,CAAA;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAC/B,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,CAAA;AAEzB;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,UAAU,CAAA;IAChB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe,CAAA;CACrD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,YAAY,CAAA;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CACnC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,qBAAqB,GACrB,sBAAsB,GACtB,iBAAiB,GACjB,mBAAmB,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,uBAAuB,CAAA;IAElC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAEnD;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAClD,OAAO,EAAE,mBAAmB,CAAA;IAC5B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;IAClC,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;OAEG;IACH,QAAQ,EAAE,iBAAiB,CAAA;CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI;IACtC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAA;IACP;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@
3
3
  */
4
4
  export { embedding } from './embedding.js';
5
5
  export type { EmbeddingField } from './embedding.js';
6
+ export { searchable } from './searchable.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
@@ -2,4 +2,5 @@
2
2
  * RAG field types
3
3
  */
4
4
  export { embedding } from './embedding.js';
5
+ export { searchable } from './searchable.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,42 @@
1
+ import type { BaseFieldConfig } from '@opensaas/stack-core';
2
+ import type { SearchableOptions, SearchableMetadata } from '../config/types.js';
3
+ /**
4
+ * High-level field wrapper that automatically adds embedding field and hooks
5
+ *
6
+ * This wrapper makes it easy to add semantic search to any text field by
7
+ * automatically creating a companion embedding field that stays in sync.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { text } from '@opensaas/stack-core/fields'
12
+ * import { searchable } from '@opensaas/stack-rag/fields'
13
+ *
14
+ * fields: {
15
+ * content: searchable(text(), {
16
+ * provider: 'openai',
17
+ * dimensions: 1536
18
+ * })
19
+ * }
20
+ * ```
21
+ *
22
+ * This is equivalent to the manual pattern:
23
+ * ```typescript
24
+ * fields: {
25
+ * content: text(),
26
+ * contentEmbedding: embedding({
27
+ * sourceField: 'content',
28
+ * provider: 'openai',
29
+ * dimensions: 1536,
30
+ * autoGenerate: true
31
+ * })
32
+ * }
33
+ * ```
34
+ *
35
+ * @param field - The field to make searchable (usually text() or richText())
36
+ * @param options - Embedding configuration options
37
+ * @returns The same field with searchable metadata attached
38
+ */
39
+ export declare function searchable<T extends BaseFieldConfig>(field: T, options?: SearchableOptions): T & {
40
+ _searchable: SearchableMetadata;
41
+ };
42
+ //# sourceMappingURL=searchable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchable.d.ts","sourceRoot":"","sources":["../../src/fields/searchable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,eAAe,EAClD,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,iBAAsB,GAC9B,CAAC,GAAG;IAAE,WAAW,EAAE,kBAAkB,CAAA;CAAE,CAczC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * High-level field wrapper that automatically adds embedding field and hooks
3
+ *
4
+ * This wrapper makes it easy to add semantic search to any text field by
5
+ * automatically creating a companion embedding field that stays in sync.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { text } from '@opensaas/stack-core/fields'
10
+ * import { searchable } from '@opensaas/stack-rag/fields'
11
+ *
12
+ * fields: {
13
+ * content: searchable(text(), {
14
+ * provider: 'openai',
15
+ * dimensions: 1536
16
+ * })
17
+ * }
18
+ * ```
19
+ *
20
+ * This is equivalent to the manual pattern:
21
+ * ```typescript
22
+ * fields: {
23
+ * content: text(),
24
+ * contentEmbedding: embedding({
25
+ * sourceField: 'content',
26
+ * provider: 'openai',
27
+ * dimensions: 1536,
28
+ * autoGenerate: true
29
+ * })
30
+ * }
31
+ * ```
32
+ *
33
+ * @param field - The field to make searchable (usually text() or richText())
34
+ * @param options - Embedding configuration options
35
+ * @returns The same field with searchable metadata attached
36
+ */
37
+ export function searchable(field, options = {}) {
38
+ const { embeddingFieldName, provider, dimensions, chunking } = options;
39
+ // Attach metadata to the field for ragPlugin to detect
40
+ return {
41
+ ...field,
42
+ _searchable: {
43
+ // Use custom name if provided, otherwise will be set by plugin based on field name
44
+ embeddingFieldName: embeddingFieldName || '',
45
+ provider,
46
+ dimensions,
47
+ chunking,
48
+ },
49
+ };
50
+ }
51
+ //# sourceMappingURL=searchable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchable.js","sourceRoot":"","sources":["../../src/fields/searchable.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,UAAU,CACxB,KAAQ,EACR,UAA6B,EAAE;IAE/B,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAEtE,uDAAuD;IACvD,OAAO;QACL,GAAG,KAAK;QACR,WAAW,EAAE;YACX,mFAAmF;YACnF,kBAAkB,EAAE,kBAAkB,IAAI,EAAE;YAC5C,QAAQ;YACR,UAAU;YACV,QAAQ;SACT;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=searchable.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchable.test.d.ts","sourceRoot":"","sources":["../../src/fields/searchable.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,112 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { searchable } from './searchable.js';
3
+ // Mock text field for testing
4
+ function mockTextField() {
5
+ return {
6
+ type: 'text',
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ getZodSchema: () => null,
9
+ getPrismaType: () => ({ type: 'String', modifiers: '' }),
10
+ getTypeScriptType: () => ({ type: 'string', optional: false }),
11
+ };
12
+ }
13
+ describe('searchable() field wrapper', () => {
14
+ it('should preserve original field properties', () => {
15
+ const field = mockTextField();
16
+ const wrapped = searchable(field);
17
+ expect(wrapped.type).toBe('text');
18
+ expect(wrapped.getZodSchema).toBe(field.getZodSchema);
19
+ expect(wrapped.getPrismaType).toBe(field.getPrismaType);
20
+ expect(wrapped.getTypeScriptType).toBe(field.getTypeScriptType);
21
+ });
22
+ it('should attach _searchable metadata', () => {
23
+ const field = mockTextField();
24
+ const wrapped = searchable(field, { provider: 'openai' });
25
+ expect(wrapped._searchable).toBeDefined();
26
+ expect(wrapped._searchable.provider).toBe('openai');
27
+ });
28
+ it('should use default options when not provided', () => {
29
+ const field = mockTextField();
30
+ const wrapped = searchable(field);
31
+ expect(wrapped._searchable).toBeDefined();
32
+ expect(wrapped._searchable.embeddingFieldName).toBe('');
33
+ expect(wrapped._searchable.provider).toBeUndefined();
34
+ expect(wrapped._searchable.dimensions).toBeUndefined();
35
+ });
36
+ it('should accept all searchable options', () => {
37
+ const field = mockTextField();
38
+ const options = {
39
+ provider: 'ollama',
40
+ dimensions: 768,
41
+ chunking: {
42
+ strategy: 'sentence',
43
+ maxTokens: 300,
44
+ overlap: 25,
45
+ },
46
+ embeddingFieldName: 'customEmbedding',
47
+ };
48
+ const wrapped = searchable(field, options);
49
+ expect(wrapped._searchable.provider).toBe('ollama');
50
+ expect(wrapped._searchable.dimensions).toBe(768);
51
+ expect(wrapped._searchable.chunking).toEqual({
52
+ strategy: 'sentence',
53
+ maxTokens: 300,
54
+ overlap: 25,
55
+ });
56
+ expect(wrapped._searchable.embeddingFieldName).toBe('customEmbedding');
57
+ });
58
+ it('should preserve field with validation options', () => {
59
+ const fieldWithValidation = {
60
+ ...mockTextField(),
61
+ validation: {
62
+ isRequired: true,
63
+ length: { min: 10, max: 1000 },
64
+ },
65
+ };
66
+ const wrapped = searchable(fieldWithValidation, { provider: 'openai' });
67
+ expect(wrapped.validation).toEqual({
68
+ isRequired: true,
69
+ length: { min: 10, max: 1000 },
70
+ });
71
+ expect(wrapped._searchable).toBeDefined();
72
+ });
73
+ it('should preserve field with hooks', () => {
74
+ const resolveInputHook = () => { };
75
+ const fieldWithHooks = {
76
+ ...mockTextField(),
77
+ hooks: {
78
+ resolveInput: resolveInputHook,
79
+ },
80
+ };
81
+ const wrapped = searchable(fieldWithHooks);
82
+ expect(wrapped.hooks).toBeDefined();
83
+ expect(wrapped.hooks?.resolveInput).toBe(resolveInputHook);
84
+ expect(wrapped._searchable).toBeDefined();
85
+ });
86
+ it('should work with different field types', () => {
87
+ const richTextField = {
88
+ ...mockTextField(),
89
+ type: 'richText',
90
+ };
91
+ const wrapped = searchable(richTextField, { provider: 'openai' });
92
+ expect(wrapped.type).toBe('richText');
93
+ expect(wrapped._searchable).toBeDefined();
94
+ });
95
+ it('should handle empty embeddingFieldName option', () => {
96
+ const field = mockTextField();
97
+ const wrapped = searchable(field, { embeddingFieldName: '' });
98
+ expect(wrapped._searchable.embeddingFieldName).toBe('');
99
+ });
100
+ it('should handle partial chunking config', () => {
101
+ const field = mockTextField();
102
+ const wrapped = searchable(field, {
103
+ chunking: {
104
+ strategy: 'recursive',
105
+ },
106
+ });
107
+ expect(wrapped._searchable.chunking).toEqual({
108
+ strategy: 'recursive',
109
+ });
110
+ });
111
+ });
112
+ //# sourceMappingURL=searchable.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchable.test.js","sourceRoot":"","sources":["../../src/fields/searchable.test.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,9 @@ export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
10
10
  readonly dimensions: number;
11
11
  private client;
12
12
  private config;
13
+ private clientPromise;
13
14
  constructor(config: OpenAIEmbeddingConfig);
15
+ private ensureClient;
14
16
  private initializeClient;
15
17
  /**
16
18
  * Generate embedding for a single text
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAwB,MAAM,oBAAoB,CAAA;AA0BrF;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAW;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,qBAAqB;IASzC,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB5C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAiDvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,uBAAuB,CAE3F"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAwB,MAAM,oBAAoB,CAAA;AAyCrF;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAW;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAqC;gBAE9C,MAAM,EAAE,qBAAqB;YAM3B,YAAY;YASZ,gBAAgB;IAU9B;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmB5C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAkDvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,uBAAuB,CAE3F"}