@opensaas/stack-rag 0.1.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +132 -0
  3. package/dist/config/index.d.ts.map +1 -1
  4. package/dist/config/index.js +9 -0
  5. package/dist/config/index.js.map +1 -1
  6. package/dist/config/plugin.d.ts.map +1 -1
  7. package/dist/config/plugin.js +32 -0
  8. package/dist/config/plugin.js.map +1 -1
  9. package/dist/config/plugin.test.js +70 -14
  10. package/dist/config/plugin.test.js.map +1 -1
  11. package/dist/config/types.d.ts +135 -0
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/index.d.ts +2 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/providers/openai.js +1 -1
  16. package/dist/providers/openai.js.map +1 -1
  17. package/dist/runtime/build-time.d.ts +100 -0
  18. package/dist/runtime/build-time.d.ts.map +1 -0
  19. package/dist/runtime/build-time.js +185 -0
  20. package/dist/runtime/build-time.js.map +1 -0
  21. package/dist/runtime/index.d.ts +3 -0
  22. package/dist/runtime/index.d.ts.map +1 -1
  23. package/dist/runtime/index.js +6 -0
  24. package/dist/runtime/index.js.map +1 -1
  25. package/dist/runtime/markdown.d.ts +33 -0
  26. package/dist/runtime/markdown.d.ts.map +1 -0
  27. package/dist/runtime/markdown.js +94 -0
  28. package/dist/runtime/markdown.js.map +1 -0
  29. package/dist/runtime/provider-helpers.d.ts +56 -0
  30. package/dist/runtime/provider-helpers.d.ts.map +1 -0
  31. package/dist/runtime/provider-helpers.js +95 -0
  32. package/dist/runtime/provider-helpers.js.map +1 -0
  33. package/dist/runtime/types.d.ts +29 -0
  34. package/dist/runtime/types.d.ts.map +1 -0
  35. package/dist/runtime/types.js +6 -0
  36. package/dist/runtime/types.js.map +1 -0
  37. package/dist/storage/index.d.ts +1 -0
  38. package/dist/storage/index.d.ts.map +1 -1
  39. package/dist/storage/index.js +1 -0
  40. package/dist/storage/index.js.map +1 -1
  41. package/dist/storage/json-file.d.ts +53 -0
  42. package/dist/storage/json-file.d.ts.map +1 -0
  43. package/dist/storage/json-file.js +124 -0
  44. package/dist/storage/json-file.js.map +1 -0
  45. package/dist/storage/storage.test.js +1 -0
  46. package/dist/storage/storage.test.js.map +1 -1
  47. package/package.json +6 -5
  48. package/src/config/index.ts +9 -0
  49. package/src/config/plugin.test.ts +70 -14
  50. package/src/config/plugin.ts +37 -0
  51. package/src/config/types.ts +158 -0
  52. package/src/index.ts +6 -0
  53. package/src/providers/openai.ts +1 -1
  54. package/src/runtime/build-time.ts +216 -0
  55. package/src/runtime/index.ts +18 -0
  56. package/src/runtime/markdown.ts +119 -0
  57. package/src/runtime/provider-helpers.ts +115 -0
  58. package/src/runtime/types.ts +30 -0
  59. package/src/storage/index.ts +1 -0
  60. package/src/storage/json-file.ts +157 -0
  61. package/src/storage/storage.test.ts +1 -0
  62. package/tsconfig.tsbuildinfo +1 -1
@@ -130,6 +130,37 @@ export type CustomStorageConfig = {
130
130
  * Vector storage configuration union
131
131
  */
132
132
  export type VectorStorageConfig = PgVectorStorageConfig | SqliteVssStorageConfig | JsonStorageConfig | CustomStorageConfig;
133
+ /**
134
+ * Build-time embedding generation configuration
135
+ */
136
+ export type BuildTimeConfig = {
137
+ /**
138
+ * Enable build-time embedding generation
139
+ */
140
+ enabled: boolean;
141
+ /**
142
+ * Output path for embeddings JSON file
143
+ * Relative to project root
144
+ * @default '.embeddings/embeddings.json'
145
+ */
146
+ outputPath?: string;
147
+ /**
148
+ * Chunk size for text splitting (in characters)
149
+ * @default 500
150
+ */
151
+ chunkSize?: number;
152
+ /**
153
+ * Overlap between chunks (in characters)
154
+ * @default 50
155
+ */
156
+ chunkOverlap?: number;
157
+ /**
158
+ * Whether to enable differential updates
159
+ * Only regenerate embeddings for changed content
160
+ * @default true
161
+ */
162
+ differential?: boolean;
163
+ };
133
164
  /**
134
165
  * Main RAG configuration
135
166
  */
@@ -162,6 +193,12 @@ export type RAGConfig = {
162
193
  * Can be overridden per field
163
194
  */
164
195
  chunking?: ChunkingConfig;
196
+ /**
197
+ * Build-time embedding generation configuration
198
+ * When enabled, embeddings are generated at build time and stored in a JSON file
199
+ * instead of being generated at runtime via hooks
200
+ */
201
+ buildTime?: BuildTimeConfig;
165
202
  /**
166
203
  * Whether to enable MCP tools for semantic search
167
204
  * Requires MCP to be enabled in main config
@@ -187,6 +224,7 @@ export type NormalizedRAGConfig = {
187
224
  providers: Record<string, EmbeddingProviderConfig>;
188
225
  storage: VectorStorageConfig;
189
226
  chunking: Required<ChunkingConfig>;
227
+ buildTime: Required<BuildTimeConfig> | null;
190
228
  enableMcpTools: boolean;
191
229
  batchSize: number;
192
230
  rateLimit: number;
@@ -297,4 +335,101 @@ export type SearchableMetadata = {
297
335
  */
298
336
  chunking?: ChunkingConfig;
299
337
  };
338
+ /**
339
+ * A chunk of text with its embedding
340
+ * Used in build-time generation output
341
+ */
342
+ export type EmbeddingChunk = {
343
+ /**
344
+ * The text content of this chunk
345
+ */
346
+ text: string;
347
+ /**
348
+ * The embedding vector for this chunk
349
+ */
350
+ embedding: number[];
351
+ /**
352
+ * Metadata about the chunk
353
+ */
354
+ metadata: {
355
+ /**
356
+ * Index of this chunk within the document
357
+ */
358
+ chunkIndex: number;
359
+ /**
360
+ * Start character position in original text
361
+ */
362
+ startOffset: number;
363
+ /**
364
+ * End character position in original text
365
+ */
366
+ endOffset: number;
367
+ /**
368
+ * Whether this chunk represents a document title
369
+ * Title chunks receive boosted scoring during search
370
+ */
371
+ isTitle?: boolean;
372
+ /**
373
+ * Additional custom metadata
374
+ */
375
+ [key: string]: unknown;
376
+ };
377
+ };
378
+ /**
379
+ * Document with embeddings
380
+ * Used in build-time generation output
381
+ */
382
+ export type EmbeddedDocument = {
383
+ /**
384
+ * Document ID or slug
385
+ */
386
+ id: string;
387
+ /**
388
+ * Document title
389
+ */
390
+ title?: string;
391
+ /**
392
+ * The chunks of this document with embeddings
393
+ */
394
+ chunks: EmbeddingChunk[];
395
+ /**
396
+ * Embedding metadata
397
+ */
398
+ embeddingMetadata: EmbeddingMetadata;
399
+ /**
400
+ * When the embeddings were generated
401
+ */
402
+ generatedAt: string;
403
+ /**
404
+ * Hash of the source content (for differential updates)
405
+ */
406
+ contentHash: string;
407
+ };
408
+ /**
409
+ * Build-time embeddings index file format
410
+ */
411
+ export type EmbeddingsIndex = {
412
+ /**
413
+ * Version of the embeddings format
414
+ */
415
+ version: string;
416
+ /**
417
+ * Embedding configuration used to generate these embeddings
418
+ */
419
+ config: {
420
+ provider: string;
421
+ model: string;
422
+ dimensions: number;
423
+ chunkSize: number;
424
+ chunkOverlap: number;
425
+ };
426
+ /**
427
+ * Documents with embeddings
428
+ */
429
+ documents: Record<string, EmbeddedDocument>;
430
+ /**
431
+ * When the index was generated
432
+ */
433
+ generatedAt: string;
434
+ };
300
435
  //# 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;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAEhC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAEhC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,5 +4,6 @@
4
4
  */
5
5
  export { openaiEmbeddings, ollamaEmbeddings, pgvectorStorage, sqliteVssStorage, jsonStorage, } from './config/index.js';
6
6
  export { ragPlugin } from './config/plugin.js';
7
- export type { RAGConfig, NormalizedRAGConfig, EmbeddingProviderConfig, OpenAIEmbeddingConfig, OllamaEmbeddingConfig, VectorStorageConfig, PgVectorStorageConfig, SqliteVssStorageConfig, JsonStorageConfig, ChunkingConfig, ChunkingStrategy, EmbeddingMetadata, StoredEmbedding, SearchResult, } from './config/types.js';
7
+ export type { RAGRuntimeServices } from './runtime/types.js';
8
+ export type { RAGConfig, NormalizedRAGConfig, EmbeddingProviderConfig, OpenAIEmbeddingConfig, OllamaEmbeddingConfig, VectorStorageConfig, PgVectorStorageConfig, SqliteVssStorageConfig, JsonStorageConfig, ChunkingConfig, ChunkingStrategy, EmbeddingMetadata, StoredEmbedding, SearchResult, EmbeddingsIndex, EmbeddedDocument, EmbeddingChunk, } from './config/types.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAG9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,mBAAmB,CAAA"}
@@ -14,7 +14,7 @@ async function getOpenAI() {
14
14
  const module = await import('openai');
15
15
  return module.default;
16
16
  }
17
- catch (error) {
17
+ catch {
18
18
  throw new Error('OpenAI package not found. Install it with: npm install openai\n' +
19
19
  'Make sure to run: pnpm install openai');
20
20
  }
@@ -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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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Build-time utilities for generating and managing embeddings
3
+ * Used by CLI tools and custom build scripts
4
+ */
5
+ import type { EmbeddingProvider } from '../providers/types.js';
6
+ import type { EmbeddingsIndex, EmbeddedDocument } from '../config/types.js';
7
+ /**
8
+ * Simple character-based text chunking for build-time generation
9
+ *
10
+ * Simpler than the runtime chunking strategies, optimized for build-time batch processing.
11
+ * Splits text into fixed-size chunks with overlap.
12
+ *
13
+ * @param text - Text to chunk
14
+ * @param chunkSize - Size of each chunk in characters
15
+ * @param overlap - Overlap between chunks in characters
16
+ * @returns Array of text chunks
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { simpleChunkText } from '@opensaas/stack-rag/runtime'
21
+ *
22
+ * const chunks = simpleChunkText("Long document...", 500, 50)
23
+ * ```
24
+ */
25
+ export declare function simpleChunkText(text: string, chunkSize: number, overlap: number): string[];
26
+ /**
27
+ * Compute SHA256 hash of content for change detection
28
+ *
29
+ * @param content - Content to hash
30
+ * @returns Hexadecimal hash string
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * import { hashContent } from '@opensaas/stack-rag/runtime'
35
+ *
36
+ * const hash = hashContent("document content")
37
+ * ```
38
+ */
39
+ export declare function hashContent(content: string): string;
40
+ /**
41
+ * Load existing embeddings index from file
42
+ *
43
+ * Used for differential updates - only regenerate embeddings for changed content.
44
+ *
45
+ * @param filePath - Path to embeddings JSON file
46
+ * @returns Loaded index or null if file doesn't exist or can't be loaded
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * import { loadExistingIndex } from '@opensaas/stack-rag/runtime'
51
+ *
52
+ * const existing = loadExistingIndex('.embeddings/docs.json')
53
+ * if (existing) {
54
+ * console.log(`Found ${Object.keys(existing.documents).length} existing documents`)
55
+ * }
56
+ * ```
57
+ */
58
+ export declare function loadExistingIndex(filePath: string): EmbeddingsIndex | null;
59
+ /**
60
+ * Generate embeddings for a document with chunking
61
+ *
62
+ * Main utility for build-time embedding generation. Chunks the document,
63
+ * generates embeddings for each chunk, and returns a complete EmbeddedDocument.
64
+ *
65
+ * @param documentId - Unique identifier for the document
66
+ * @param content - Document content (plain text)
67
+ * @param provider - Embedding provider instance
68
+ * @param options - Generation options
69
+ * @returns Complete embedded document ready to be added to index
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * import { generateDocumentEmbeddings } from '@opensaas/stack-rag/runtime'
74
+ * import { createEmbeddingProvider } from '@opensaas/stack-rag/providers'
75
+ *
76
+ * const provider = createEmbeddingProvider({
77
+ * type: 'openai',
78
+ * apiKey: process.env.OPENAI_API_KEY
79
+ * })
80
+ *
81
+ * const doc = await generateDocumentEmbeddings(
82
+ * 'docs/getting-started',
83
+ * 'Document content here...',
84
+ * provider,
85
+ * {
86
+ * title: 'Getting Started',
87
+ * chunkSize: 500,
88
+ * chunkOverlap: 50,
89
+ * metadata: { section: 'guides' }
90
+ * }
91
+ * )
92
+ * ```
93
+ */
94
+ export declare function generateDocumentEmbeddings(documentId: string, content: string, provider: EmbeddingProvider, options: {
95
+ title?: string;
96
+ chunkSize: number;
97
+ chunkOverlap: number;
98
+ metadata?: Record<string, unknown>;
99
+ }): Promise<EmbeddedDocument>;
100
+ //# sourceMappingURL=build-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-time.d.ts","sourceRoot":"","sources":["../../src/runtime/build-time.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAkB,MAAM,oBAAoB,CAAA;AAE3F;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAY1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,GACA,OAAO,CAAC,gBAAgB,CAAC,CAgF3B"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Build-time utilities for generating and managing embeddings
3
+ * Used by CLI tools and custom build scripts
4
+ */
5
+ import { readFileSync, existsSync } from 'node:fs';
6
+ import { createHash } from 'node:crypto';
7
+ /**
8
+ * Simple character-based text chunking for build-time generation
9
+ *
10
+ * Simpler than the runtime chunking strategies, optimized for build-time batch processing.
11
+ * Splits text into fixed-size chunks with overlap.
12
+ *
13
+ * @param text - Text to chunk
14
+ * @param chunkSize - Size of each chunk in characters
15
+ * @param overlap - Overlap between chunks in characters
16
+ * @returns Array of text chunks
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { simpleChunkText } from '@opensaas/stack-rag/runtime'
21
+ *
22
+ * const chunks = simpleChunkText("Long document...", 500, 50)
23
+ * ```
24
+ */
25
+ export function simpleChunkText(text, chunkSize, overlap) {
26
+ const chunks = [];
27
+ let start = 0;
28
+ while (start < text.length) {
29
+ const end = Math.min(start + chunkSize, text.length);
30
+ chunks.push(text.slice(start, end));
31
+ start += chunkSize - overlap;
32
+ }
33
+ return chunks;
34
+ }
35
+ /**
36
+ * Compute SHA256 hash of content for change detection
37
+ *
38
+ * @param content - Content to hash
39
+ * @returns Hexadecimal hash string
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * import { hashContent } from '@opensaas/stack-rag/runtime'
44
+ *
45
+ * const hash = hashContent("document content")
46
+ * ```
47
+ */
48
+ export function hashContent(content) {
49
+ return createHash('sha256').update(content).digest('hex');
50
+ }
51
+ /**
52
+ * Load existing embeddings index from file
53
+ *
54
+ * Used for differential updates - only regenerate embeddings for changed content.
55
+ *
56
+ * @param filePath - Path to embeddings JSON file
57
+ * @returns Loaded index or null if file doesn't exist or can't be loaded
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * import { loadExistingIndex } from '@opensaas/stack-rag/runtime'
62
+ *
63
+ * const existing = loadExistingIndex('.embeddings/docs.json')
64
+ * if (existing) {
65
+ * console.log(`Found ${Object.keys(existing.documents).length} existing documents`)
66
+ * }
67
+ * ```
68
+ */
69
+ export function loadExistingIndex(filePath) {
70
+ if (!existsSync(filePath)) {
71
+ return null;
72
+ }
73
+ try {
74
+ const content = readFileSync(filePath, 'utf-8');
75
+ return JSON.parse(content);
76
+ }
77
+ catch {
78
+ console.warn(`Warning: Could not load existing embeddings from ${filePath}`);
79
+ return null;
80
+ }
81
+ }
82
+ /**
83
+ * Generate embeddings for a document with chunking
84
+ *
85
+ * Main utility for build-time embedding generation. Chunks the document,
86
+ * generates embeddings for each chunk, and returns a complete EmbeddedDocument.
87
+ *
88
+ * @param documentId - Unique identifier for the document
89
+ * @param content - Document content (plain text)
90
+ * @param provider - Embedding provider instance
91
+ * @param options - Generation options
92
+ * @returns Complete embedded document ready to be added to index
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * import { generateDocumentEmbeddings } from '@opensaas/stack-rag/runtime'
97
+ * import { createEmbeddingProvider } from '@opensaas/stack-rag/providers'
98
+ *
99
+ * const provider = createEmbeddingProvider({
100
+ * type: 'openai',
101
+ * apiKey: process.env.OPENAI_API_KEY
102
+ * })
103
+ *
104
+ * const doc = await generateDocumentEmbeddings(
105
+ * 'docs/getting-started',
106
+ * 'Document content here...',
107
+ * provider,
108
+ * {
109
+ * title: 'Getting Started',
110
+ * chunkSize: 500,
111
+ * chunkOverlap: 50,
112
+ * metadata: { section: 'guides' }
113
+ * }
114
+ * )
115
+ * ```
116
+ */
117
+ export async function generateDocumentEmbeddings(documentId, content, provider, options) {
118
+ const { title, chunkSize, chunkOverlap, metadata = {} } = options;
119
+ // Hash content for differential updates
120
+ const contentHash = hashContent(content);
121
+ // Prepare all text chunks to embed
122
+ const allTextChunks = [];
123
+ const chunkTypes = [];
124
+ // Add title chunk first if title exists
125
+ if (title) {
126
+ allTextChunks.push(title);
127
+ chunkTypes.push('title');
128
+ }
129
+ // Chunk the content
130
+ const contentChunks = simpleChunkText(content, chunkSize, chunkOverlap);
131
+ allTextChunks.push(...contentChunks);
132
+ contentChunks.forEach(() => chunkTypes.push('content'));
133
+ // Generate embeddings in batch for all chunks
134
+ const allEmbeddings = await provider.embedBatch(allTextChunks);
135
+ // Build chunks with embeddings
136
+ const chunks = [];
137
+ let embeddingIndex = 0;
138
+ let contentChunkIndex = 0;
139
+ for (let i = 0; i < chunkTypes.length; i++) {
140
+ const type = chunkTypes[i];
141
+ if (type === 'title') {
142
+ // Title chunk
143
+ chunks.push({
144
+ text: allTextChunks[embeddingIndex],
145
+ embedding: allEmbeddings[embeddingIndex],
146
+ metadata: {
147
+ chunkIndex: -1, // Special index for title
148
+ startOffset: 0,
149
+ endOffset: 0,
150
+ isTitle: true,
151
+ ...metadata,
152
+ },
153
+ });
154
+ }
155
+ else {
156
+ // Content chunk
157
+ chunks.push({
158
+ text: allTextChunks[embeddingIndex],
159
+ embedding: allEmbeddings[embeddingIndex],
160
+ metadata: {
161
+ chunkIndex: contentChunkIndex,
162
+ startOffset: contentChunkIndex * (chunkSize - chunkOverlap),
163
+ endOffset: Math.min((contentChunkIndex + 1) * chunkSize - contentChunkIndex * chunkOverlap, content.length),
164
+ ...metadata,
165
+ },
166
+ });
167
+ contentChunkIndex++;
168
+ }
169
+ embeddingIndex++;
170
+ }
171
+ return {
172
+ id: documentId,
173
+ title,
174
+ chunks,
175
+ embeddingMetadata: {
176
+ model: provider.model,
177
+ provider: provider.type,
178
+ dimensions: provider.dimensions,
179
+ generatedAt: new Date().toISOString(),
180
+ },
181
+ generatedAt: new Date().toISOString(),
182
+ contentHash,
183
+ };
184
+ }
185
+ //# sourceMappingURL=build-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-time.js","sourceRoot":"","sources":["../../src/runtime/build-time.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,7 @@ export { chunkText, estimateTokenCount, mergeSmallChunks, type ChunkingStrategy,
11
11
  export { generateEmbedding, generateEmbeddings, shouldRegenerateEmbedding, hashText, validateEmbeddingDimensions, mergeEmbeddings, type GenerateEmbeddingOptions, type GenerateEmbeddingsOptions, type ChunkedEmbedding, } from './embeddings.js';
12
12
  export { semanticSearch, findSimilar, type SemanticSearchOptions, type FindSimilarOptions, } from './search.js';
13
13
  export { batchProcess, RateLimiter, ProcessingQueue, type BatchProcessOptions, type BatchProgress, type BatchError, type BatchProcessResult, } from './batch.js';
14
+ export { simpleChunkText, hashContent, loadExistingIndex, generateDocumentEmbeddings, } from './build-time.js';
15
+ export { stripMarkdown, extractMarkdownText } from './markdown.js';
16
+ export { createProviderFromEnv, getProviderConfigFromEnv, type ProviderType, } from './provider-helpers.js';
14
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,QAAQ,EACR,2BAA2B,EAC3B,eAAe,EACf,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,QAAQ,EACR,2BAA2B,EAC3B,eAAe,EACf,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGlE,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAA"}
@@ -15,4 +15,10 @@ export { generateEmbedding, generateEmbeddings, shouldRegenerateEmbedding, hashT
15
15
  export { semanticSearch, findSimilar, } from './search.js';
16
16
  // Batch processing
17
17
  export { batchProcess, RateLimiter, ProcessingQueue, } from './batch.js';
18
+ // Build-time utilities
19
+ export { simpleChunkText, hashContent, loadExistingIndex, generateDocumentEmbeddings, } from './build-time.js';
20
+ // Markdown processing
21
+ export { stripMarkdown, extractMarkdownText } from './markdown.js';
22
+ // Provider helpers
23
+ export { createProviderFromEnv, getProviderConfigFromEnv, } from './provider-helpers.js';
18
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gBAAgB;AAChB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,eAAe,CAAA;AAEtB,uBAAuB;AACvB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,QAAQ,EACR,2BAA2B,EAC3B,eAAe,GAIhB,MAAM,iBAAiB,CAAA;AAExB,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,aAAa,CAAA;AAEpB,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,GAKhB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gBAAgB;AAChB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,eAAe,CAAA;AAEtB,uBAAuB;AACvB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,QAAQ,EACR,2BAA2B,EAC3B,eAAe,GAIhB,MAAM,iBAAiB,CAAA;AAExB,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,aAAa,CAAA;AAEpB,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,GAKhB,MAAM,YAAY,CAAA;AAEnB,uBAAuB;AACvB,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAA;AAExB,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAElE,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GAEzB,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Markdown processing utilities for content preparation
3
+ */
4
+ /**
5
+ * Strip markdown formatting for cleaner text suitable for embeddings
6
+ *
7
+ * Removes code blocks, formatting markers, links, images, and HTML tags
8
+ * while preserving the actual content.
9
+ *
10
+ * @param markdown - Markdown text to process
11
+ * @returns Plain text with markdown removed
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { stripMarkdown } from '@opensaas/stack-rag/runtime'
16
+ *
17
+ * const markdown = '# Hello\n\nThis is **bold** text with a [link](url).'
18
+ * const plain = stripMarkdown(markdown)
19
+ * // Returns: 'Hello\n\nThis is bold text with a link.'
20
+ * ```
21
+ */
22
+ export declare function stripMarkdown(markdown: string): string;
23
+ /**
24
+ * Extract text content from common markdown structures
25
+ *
26
+ * More aggressive than stripMarkdown - extracts only text content,
27
+ * removes all structural elements.
28
+ *
29
+ * @param markdown - Markdown text
30
+ * @returns Extracted plain text
31
+ */
32
+ export declare function extractMarkdownText(markdown: string): string;
33
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/runtime/markdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8BtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuD5D"}