@prodisco/search-libs 0.1.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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +379 -0
  3. package/dist/__tests__/extractor.test.d.ts +5 -0
  4. package/dist/__tests__/extractor.test.d.ts.map +1 -0
  5. package/dist/__tests__/extractor.test.js +452 -0
  6. package/dist/__tests__/extractor.test.js.map +1 -0
  7. package/dist/__tests__/library-indexer.test.d.ts +5 -0
  8. package/dist/__tests__/library-indexer.test.d.ts.map +1 -0
  9. package/dist/__tests__/library-indexer.test.js +611 -0
  10. package/dist/__tests__/library-indexer.test.js.map +1 -0
  11. package/dist/__tests__/schema.test.d.ts +5 -0
  12. package/dist/__tests__/schema.test.d.ts.map +1 -0
  13. package/dist/__tests__/schema.test.js +231 -0
  14. package/dist/__tests__/schema.test.js.map +1 -0
  15. package/dist/__tests__/script-parser.test.d.ts +5 -0
  16. package/dist/__tests__/script-parser.test.d.ts.map +1 -0
  17. package/dist/__tests__/script-parser.test.js +178 -0
  18. package/dist/__tests__/script-parser.test.js.map +1 -0
  19. package/dist/__tests__/search-engine.test.d.ts +5 -0
  20. package/dist/__tests__/search-engine.test.d.ts.map +1 -0
  21. package/dist/__tests__/search-engine.test.js +497 -0
  22. package/dist/__tests__/search-engine.test.js.map +1 -0
  23. package/dist/extractor/ast-parser.d.ts +48 -0
  24. package/dist/extractor/ast-parser.d.ts.map +1 -0
  25. package/dist/extractor/ast-parser.js +118 -0
  26. package/dist/extractor/ast-parser.js.map +1 -0
  27. package/dist/extractor/function-extractor.d.ts +20 -0
  28. package/dist/extractor/function-extractor.d.ts.map +1 -0
  29. package/dist/extractor/function-extractor.js +169 -0
  30. package/dist/extractor/function-extractor.js.map +1 -0
  31. package/dist/extractor/index.d.ts +22 -0
  32. package/dist/extractor/index.d.ts.map +1 -0
  33. package/dist/extractor/index.js +194 -0
  34. package/dist/extractor/index.js.map +1 -0
  35. package/dist/extractor/method-extractor.d.ts +30 -0
  36. package/dist/extractor/method-extractor.d.ts.map +1 -0
  37. package/dist/extractor/method-extractor.js +163 -0
  38. package/dist/extractor/method-extractor.js.map +1 -0
  39. package/dist/extractor/package-resolver.d.ts +77 -0
  40. package/dist/extractor/package-resolver.d.ts.map +1 -0
  41. package/dist/extractor/package-resolver.js +766 -0
  42. package/dist/extractor/package-resolver.js.map +1 -0
  43. package/dist/extractor/type-extractor.d.ts +15 -0
  44. package/dist/extractor/type-extractor.d.ts.map +1 -0
  45. package/dist/extractor/type-extractor.js +206 -0
  46. package/dist/extractor/type-extractor.js.map +1 -0
  47. package/dist/extractor/types.d.ts +116 -0
  48. package/dist/extractor/types.d.ts.map +1 -0
  49. package/dist/extractor/types.js +5 -0
  50. package/dist/extractor/types.js.map +1 -0
  51. package/dist/index.d.ts +18 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +21 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/library-indexer.d.ts +104 -0
  56. package/dist/library-indexer.d.ts.map +1 -0
  57. package/dist/library-indexer.js +295 -0
  58. package/dist/library-indexer.js.map +1 -0
  59. package/dist/schema/base-schema.d.ts +63 -0
  60. package/dist/schema/base-schema.d.ts.map +1 -0
  61. package/dist/schema/base-schema.js +63 -0
  62. package/dist/schema/base-schema.js.map +1 -0
  63. package/dist/schema/index.d.ts +6 -0
  64. package/dist/schema/index.d.ts.map +1 -0
  65. package/dist/schema/index.js +6 -0
  66. package/dist/schema/index.js.map +1 -0
  67. package/dist/schema/schema-builder.d.ts +47 -0
  68. package/dist/schema/schema-builder.d.ts.map +1 -0
  69. package/dist/schema/schema-builder.js +236 -0
  70. package/dist/schema/schema-builder.js.map +1 -0
  71. package/dist/script/index.d.ts +6 -0
  72. package/dist/script/index.d.ts.map +1 -0
  73. package/dist/script/index.js +5 -0
  74. package/dist/script/index.js.map +1 -0
  75. package/dist/script/script-parser.d.ts +18 -0
  76. package/dist/script/script-parser.d.ts.map +1 -0
  77. package/dist/script/script-parser.js +246 -0
  78. package/dist/script/script-parser.js.map +1 -0
  79. package/dist/script/types.d.ts +32 -0
  80. package/dist/script/types.d.ts.map +1 -0
  81. package/dist/script/types.js +5 -0
  82. package/dist/script/types.js.map +1 -0
  83. package/dist/search/index.d.ts +7 -0
  84. package/dist/search/index.d.ts.map +1 -0
  85. package/dist/search/index.js +7 -0
  86. package/dist/search/index.js.map +1 -0
  87. package/dist/search/query-builder.d.ts +59 -0
  88. package/dist/search/query-builder.d.ts.map +1 -0
  89. package/dist/search/query-builder.js +103 -0
  90. package/dist/search/query-builder.js.map +1 -0
  91. package/dist/search/result-formatter.d.ts +61 -0
  92. package/dist/search/result-formatter.d.ts.map +1 -0
  93. package/dist/search/result-formatter.js +170 -0
  94. package/dist/search/result-formatter.js.map +1 -0
  95. package/dist/search/search-engine.d.ts +105 -0
  96. package/dist/search/search-engine.d.ts.map +1 -0
  97. package/dist/search/search-engine.js +245 -0
  98. package/dist/search/search-engine.js.map +1 -0
  99. package/package.json +41 -0
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Extensible schema builder for custom fields
3
+ */
4
+ import { baseSchema, createEmptyDocument } from './base-schema.js';
5
+ import { splitCamelCase } from '../extractor/ast-parser.js';
6
+ /**
7
+ * Build a schema with optional extensions
8
+ */
9
+ export function buildSchema(options) {
10
+ if (!options?.extensions) {
11
+ return baseSchema;
12
+ }
13
+ return {
14
+ ...baseSchema,
15
+ ...options.extensions,
16
+ };
17
+ }
18
+ /**
19
+ * Build a document from an extracted type
20
+ */
21
+ export function buildTypeDocument(type) {
22
+ const searchTokens = [
23
+ type.name,
24
+ splitCamelCase(type.name),
25
+ type.kind,
26
+ type.description,
27
+ ...type.properties.map((p) => p.name),
28
+ ...type.nestedTypes,
29
+ ].join(' ');
30
+ const typeDefinition = formatTypeDefinition(type);
31
+ return {
32
+ ...createEmptyDocument(),
33
+ id: `type:${type.library}:${type.name}`,
34
+ documentType: 'type',
35
+ name: type.name,
36
+ description: type.description,
37
+ searchTokens,
38
+ library: type.library,
39
+ category: type.kind,
40
+ properties: JSON.stringify(type.properties),
41
+ typeDefinition,
42
+ nestedTypes: type.nestedTypes.join(', '),
43
+ typeKind: type.kind,
44
+ };
45
+ }
46
+ /**
47
+ * Build a document from an extracted method
48
+ */
49
+ export function buildMethodDocument(method) {
50
+ const searchTokens = [
51
+ method.name,
52
+ splitCamelCase(method.name),
53
+ method.className,
54
+ method.description,
55
+ ...method.parameters.map((p) => p.name),
56
+ method.returnType,
57
+ ].join(' ');
58
+ const signature = buildMethodSignature(method);
59
+ const category = inferMethodCategory(method.name);
60
+ return {
61
+ ...createEmptyDocument(),
62
+ id: `method:${method.library}:${method.className}:${method.name}`,
63
+ documentType: 'method',
64
+ name: method.name,
65
+ description: method.description,
66
+ searchTokens,
67
+ library: method.library,
68
+ category,
69
+ parameters: JSON.stringify(method.parameters),
70
+ returnType: method.returnType,
71
+ returnTypeDefinition: method.returnTypeDefinition || '',
72
+ signature,
73
+ className: method.className,
74
+ };
75
+ }
76
+ /**
77
+ * Build a document from an extracted function
78
+ */
79
+ export function buildFunctionDocument(func) {
80
+ const searchTokens = [
81
+ func.name,
82
+ splitCamelCase(func.name),
83
+ func.description,
84
+ ...func.parameters.map((p) => p.name),
85
+ func.returnType,
86
+ ].join(' ');
87
+ const category = inferFunctionCategory(func.name, func.library);
88
+ return {
89
+ ...createEmptyDocument(),
90
+ id: `function:${func.library}:${func.name}`,
91
+ documentType: 'function',
92
+ name: func.name,
93
+ description: func.description,
94
+ searchTokens,
95
+ library: func.library,
96
+ category,
97
+ parameters: JSON.stringify(func.parameters),
98
+ returnType: func.returnType,
99
+ signature: func.signature,
100
+ };
101
+ }
102
+ /**
103
+ * Build a document from a cached script
104
+ */
105
+ export function buildScriptDocument(script) {
106
+ const isAutoGenerated = /^script-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-[a-f0-9]+\.ts$/.test(script.filename);
107
+ const searchTokens = [
108
+ 'script',
109
+ // Only include filename tokens for manually named scripts
110
+ ...(isAutoGenerated
111
+ ? []
112
+ : [script.filename.replace(/\.ts$/, '').replace(/[-_]/g, ' ')]),
113
+ ...script.resourceTypes,
114
+ script.description,
115
+ ...script.apiClasses,
116
+ ...script.keywords,
117
+ ].join(' ');
118
+ const displayName = isAutoGenerated
119
+ ? script.apiClasses.length > 0
120
+ ? script.apiClasses[0].toLowerCase()
121
+ : 'sandbox-script'
122
+ : script.filename.replace(/\.ts$/, '');
123
+ return {
124
+ ...createEmptyDocument(),
125
+ id: `script:${script.filename}`,
126
+ documentType: 'script',
127
+ name: displayName,
128
+ description: script.description,
129
+ searchTokens,
130
+ library: script.apiClasses.length > 0 ? script.apiClasses[0] : 'CachedScript',
131
+ category: 'script',
132
+ filePath: script.filePath,
133
+ keywords: script.keywords.join(' '),
134
+ };
135
+ }
136
+ /**
137
+ * Build a document from any extracted item
138
+ */
139
+ export function buildDocument(item) {
140
+ if ('kind' in item) {
141
+ return buildTypeDocument(item);
142
+ }
143
+ if ('className' in item) {
144
+ return buildMethodDocument(item);
145
+ }
146
+ if ('signature' in item) {
147
+ return buildFunctionDocument(item);
148
+ }
149
+ return buildScriptDocument(item);
150
+ }
151
+ /**
152
+ * Format a type definition for display
153
+ */
154
+ function formatTypeDefinition(type, maxProperties = 20) {
155
+ let result = `${type.kind} ${type.name} {\n`;
156
+ const propsToShow = type.properties.slice(0, maxProperties);
157
+ const hasMore = type.properties.length > maxProperties;
158
+ for (const prop of propsToShow) {
159
+ const optionalMarker = prop.optional ? '?' : '';
160
+ result += ` ${prop.name}${optionalMarker}: ${prop.type}\n`;
161
+ }
162
+ if (hasMore) {
163
+ result += ` ... ${type.properties.length - maxProperties} more properties\n`;
164
+ }
165
+ result += `}`;
166
+ return result;
167
+ }
168
+ /**
169
+ * Build a method signature string
170
+ */
171
+ function buildMethodSignature(method) {
172
+ const params = method.parameters
173
+ .map((p) => `${p.name}${p.optional ? '?' : ''}: ${p.type}`)
174
+ .join(', ');
175
+ const asyncPrefix = method.isAsync ? 'async ' : '';
176
+ const staticPrefix = method.isStatic ? 'static ' : '';
177
+ return `${staticPrefix}${asyncPrefix}${method.name}(${params}): ${method.returnType}`;
178
+ }
179
+ /**
180
+ * Infer category from method name
181
+ */
182
+ function inferMethodCategory(methodName) {
183
+ const lowerName = methodName.toLowerCase();
184
+ if (lowerName.startsWith('list'))
185
+ return 'list';
186
+ if (lowerName.startsWith('get') || lowerName.startsWith('read'))
187
+ return 'read';
188
+ if (lowerName.startsWith('create') || lowerName.startsWith('add'))
189
+ return 'create';
190
+ if (lowerName.startsWith('delete') || lowerName.startsWith('remove'))
191
+ return 'delete';
192
+ if (lowerName.startsWith('patch'))
193
+ return 'patch';
194
+ if (lowerName.startsWith('update'))
195
+ return 'update';
196
+ if (lowerName.startsWith('replace') || lowerName.startsWith('set'))
197
+ return 'replace';
198
+ if (lowerName.startsWith('watch'))
199
+ return 'watch';
200
+ if (lowerName.startsWith('query'))
201
+ return 'query';
202
+ return 'other';
203
+ }
204
+ /**
205
+ * Infer category from function name and library
206
+ */
207
+ function inferFunctionCategory(funcName, library) {
208
+ const lowerName = funcName.toLowerCase();
209
+ const lowerLib = library.toLowerCase();
210
+ // Statistics functions
211
+ if (lowerLib.includes('statistics') || lowerLib.includes('stats')) {
212
+ if (['mean', 'median', 'mode', 'variance', 'std'].some((s) => lowerName.includes(s))) {
213
+ return 'descriptive';
214
+ }
215
+ if (lowerName.includes('regress'))
216
+ return 'regression';
217
+ if (['normal', 'poisson', 'binomial'].some((s) => lowerName.includes(s))) {
218
+ return 'distribution';
219
+ }
220
+ }
221
+ // Math functions
222
+ if (lowerLib.includes('math')) {
223
+ if (['matrix', 'transpose', 'inverse', 'det'].some((s) => lowerName.includes(s))) {
224
+ return 'matrix';
225
+ }
226
+ if (['sin', 'cos', 'tan', 'log', 'exp'].some((s) => lowerName.includes(s))) {
227
+ return 'math';
228
+ }
229
+ }
230
+ // Signal processing
231
+ if (lowerLib.includes('fft') || lowerName.includes('fft')) {
232
+ return 'signal';
233
+ }
234
+ return 'utility';
235
+ }
236
+ //# sourceMappingURL=schema-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../../src/schema/schema-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Script module - Parse TypeScript scripts and extract metadata
3
+ */
4
+ export type { CachedScript, ParseScriptsOptions } from './types.js';
5
+ export { parseScript, parseScriptsFromDirectory, isAutoGeneratedScriptName, } from './script-parser.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/script/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Script module - Parse TypeScript scripts and extract metadata
3
+ */
4
+ export { parseScript, parseScriptsFromDirectory, isAutoGeneratedScriptName, } from './script-parser.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/script/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Parse TypeScript scripts and extract searchable metadata
3
+ */
4
+ import type { CachedScript, ParseScriptsOptions } from './types.js';
5
+ /**
6
+ * Parse a script file and extract searchable metadata
7
+ */
8
+ export declare function parseScript(filePath: string): CachedScript | null;
9
+ /**
10
+ * Parse all scripts from a directory
11
+ */
12
+ export declare function parseScriptsFromDirectory(dirPath: string, options?: ParseScriptsOptions): CachedScript[];
13
+ /**
14
+ * Check if a filename is an auto-generated script name
15
+ * Auto-generated names look like: script-2025-12-04T13-47-57-abc123def456.ts
16
+ */
17
+ export declare function isAutoGeneratedScriptName(filename: string): boolean;
18
+ //# sourceMappingURL=script-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-parser.d.ts","sourceRoot":"","sources":["../../src/script/script-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAYpE;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAqCjE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,YAAY,EAAE,CAqDhB;AAkDD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnE"}
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Parse TypeScript scripts and extract searchable metadata
3
+ */
4
+ import * as ts from 'typescript';
5
+ import { readFileSync, existsSync, readdirSync, lstatSync } from 'fs';
6
+ import { join, basename } from 'path';
7
+ /** Maximum number of resource types to extract from script content */
8
+ const MAX_RESOURCE_TYPES_FROM_CONTENT = 10;
9
+ /** Common stop words to filter from keywords */
10
+ const STOP_WORDS = new Set([
11
+ 'the', 'and', 'for', 'from', 'with', 'this', 'that', 'are', 'was', 'were',
12
+ 'been', 'being', 'have', 'has', 'had', 'having', 'does', 'did', 'doing',
13
+ 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'can',
14
+ ]);
15
+ /**
16
+ * Parse a script file and extract searchable metadata
17
+ */
18
+ export function parseScript(filePath) {
19
+ if (!existsSync(filePath)) {
20
+ return null;
21
+ }
22
+ try {
23
+ const filename = basename(filePath);
24
+ const description = extractFirstCommentBlock(filePath);
25
+ const filenameResourceTypes = extractResourceTypesFromFilename(filename);
26
+ const { apiClasses, resourceTypes: contentResourceTypes } = extractApiSignals(filePath);
27
+ // Combine resource types from filename and content
28
+ const resourceTypes = [
29
+ ...new Set([
30
+ ...filenameResourceTypes,
31
+ ...contentResourceTypes.map((t) => t.toLowerCase()),
32
+ ]),
33
+ ];
34
+ // Extract additional keywords from description
35
+ const keywords = description
36
+ .toLowerCase()
37
+ .split(/\s+/)
38
+ .filter((word) => word.length > 2)
39
+ .filter((word) => !STOP_WORDS.has(word));
40
+ return {
41
+ filename,
42
+ filePath,
43
+ description: description || `Script: ${filename.replace(/\.ts$/, '')}`,
44
+ resourceTypes,
45
+ apiClasses,
46
+ keywords,
47
+ };
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ }
53
+ /**
54
+ * Parse all scripts from a directory
55
+ */
56
+ export function parseScriptsFromDirectory(dirPath, options = {}) {
57
+ const { extension = '.ts', recursive = false, maxScripts = 1000 } = options;
58
+ if (!existsSync(dirPath)) {
59
+ return [];
60
+ }
61
+ const scripts = [];
62
+ function walkDir(dir) {
63
+ if (scripts.length >= maxScripts)
64
+ return;
65
+ try {
66
+ const entries = readdirSync(dir);
67
+ for (const entry of entries) {
68
+ if (scripts.length >= maxScripts)
69
+ break;
70
+ // Skip node_modules and hidden directories
71
+ if (entry === 'node_modules' || entry.startsWith('.')) {
72
+ continue;
73
+ }
74
+ const fullPath = join(dir, entry);
75
+ try {
76
+ // Use lstat to detect symlinks (don't follow them)
77
+ const lstat = lstatSync(fullPath);
78
+ // Skip symbolic links to prevent traversing into unexpected directories
79
+ if (lstat.isSymbolicLink()) {
80
+ continue;
81
+ }
82
+ if (lstat.isDirectory() && recursive) {
83
+ walkDir(fullPath);
84
+ }
85
+ else if (lstat.isFile() && entry.endsWith(extension)) {
86
+ const script = parseScript(fullPath);
87
+ if (script) {
88
+ scripts.push(script);
89
+ }
90
+ }
91
+ }
92
+ catch {
93
+ // Skip files we can't access
94
+ }
95
+ }
96
+ }
97
+ catch {
98
+ // Skip directories we can't read
99
+ }
100
+ }
101
+ walkDir(dirPath);
102
+ return scripts;
103
+ }
104
+ /**
105
+ * Extract the first comment block from a TypeScript file
106
+ */
107
+ function extractFirstCommentBlock(filePath) {
108
+ try {
109
+ const content = readFileSync(filePath, 'utf-8');
110
+ // Get leading comments from the start of the file
111
+ const leadingComments = ts.getLeadingCommentRanges(content, 0);
112
+ if (!leadingComments || leadingComments.length === 0) {
113
+ return '';
114
+ }
115
+ const commentTexts = [];
116
+ for (const comment of leadingComments) {
117
+ const commentText = content.slice(comment.pos, comment.end);
118
+ if (comment.kind === ts.SyntaxKind.MultiLineCommentTrivia) {
119
+ // Block comment - extract content between /* and */
120
+ const inner = commentText.slice(2, -2);
121
+ const lines = inner.split('\n');
122
+ for (const line of lines) {
123
+ let cleaned = line.trim();
124
+ if (cleaned.startsWith('*')) {
125
+ cleaned = cleaned.slice(1).trim();
126
+ }
127
+ if (cleaned.length > 0) {
128
+ commentTexts.push(cleaned);
129
+ }
130
+ }
131
+ }
132
+ else if (comment.kind === ts.SyntaxKind.SingleLineCommentTrivia) {
133
+ // Single-line comment - remove leading //
134
+ const cleaned = commentText.slice(2).trim();
135
+ if (cleaned.length > 0) {
136
+ commentTexts.push(cleaned);
137
+ }
138
+ }
139
+ }
140
+ return commentTexts.join(' ').trim();
141
+ }
142
+ catch {
143
+ return '';
144
+ }
145
+ }
146
+ /**
147
+ * Check if a filename is an auto-generated script name
148
+ * Auto-generated names look like: script-2025-12-04T13-47-57-abc123def456.ts
149
+ */
150
+ export function isAutoGeneratedScriptName(filename) {
151
+ return /^script-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-[a-f0-9]+\.ts$/.test(filename);
152
+ }
153
+ /**
154
+ * Extract likely resource types from a script filename
155
+ */
156
+ function extractResourceTypesFromFilename(filename) {
157
+ // Skip auto-generated filenames
158
+ if (isAutoGeneratedScriptName(filename)) {
159
+ return [];
160
+ }
161
+ // Remove extension
162
+ const baseName = filename.replace(/\.ts$/, '');
163
+ // Split by common separators and filter out action words
164
+ const actionWords = new Set([
165
+ 'get', 'list', 'create', 'delete', 'update', 'patch', 'watch',
166
+ 'read', 'write', 'fetch', 'query', 'run', 'execute',
167
+ ]);
168
+ const parts = baseName
169
+ .split(/[-_]/)
170
+ .filter((part) => part.length > 0)
171
+ .filter((part) => !actionWords.has(part.toLowerCase()));
172
+ // Add singular/plural variants
173
+ const resourceTypes = [];
174
+ for (const part of parts) {
175
+ resourceTypes.push(part.toLowerCase());
176
+ // Add singular if plural
177
+ if (part.endsWith('s') && part.length > 2) {
178
+ resourceTypes.push(part.slice(0, -1).toLowerCase());
179
+ }
180
+ }
181
+ return [...new Set(resourceTypes)];
182
+ }
183
+ /**
184
+ * Extract API signals from script content using TypeScript AST
185
+ */
186
+ function extractApiSignals(filePath) {
187
+ try {
188
+ const content = readFileSync(filePath, 'utf-8');
189
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
190
+ const apiClasses = new Set();
191
+ const resourceTypes = new Set();
192
+ // Common API class patterns (not just K8s)
193
+ const apiClassPatterns = [
194
+ // K8s
195
+ /^(Core|Apps|Batch|Networking|Rbac|Storage|Custom|Api|Autoscaling|Policy)V\d+Api$/,
196
+ // General patterns
197
+ /^.*Client$/,
198
+ /^.*Driver$/,
199
+ /^.*Service$/,
200
+ ];
201
+ function isApiClass(name) {
202
+ return apiClassPatterns.some((pattern) => pattern.test(name));
203
+ }
204
+ function visit(node) {
205
+ // Find type references
206
+ if (ts.isTypeReferenceNode(node)) {
207
+ const typeName = node.typeName.getText(sourceFile);
208
+ // K8s types start with V followed by version number
209
+ if (typeName.startsWith('V') && typeName.length > 2) {
210
+ const secondChar = typeName.charAt(1);
211
+ if (secondChar >= '0' && secondChar <= '9') {
212
+ if (!typeName.includes('Api') &&
213
+ !typeName.includes('List') &&
214
+ typeName.length < 30) {
215
+ resourceTypes.add(typeName);
216
+ }
217
+ }
218
+ }
219
+ }
220
+ // Find identifier references
221
+ if (ts.isIdentifier(node)) {
222
+ const name = node.text;
223
+ if (isApiClass(name)) {
224
+ apiClasses.add(name);
225
+ }
226
+ }
227
+ // Find property access
228
+ if (ts.isPropertyAccessExpression(node)) {
229
+ const propName = node.name.text;
230
+ if (isApiClass(propName)) {
231
+ apiClasses.add(propName);
232
+ }
233
+ }
234
+ ts.forEachChild(node, visit);
235
+ }
236
+ visit(sourceFile);
237
+ return {
238
+ apiClasses: [...apiClasses],
239
+ resourceTypes: [...resourceTypes].slice(0, MAX_RESOURCE_TYPES_FROM_CONTENT),
240
+ };
241
+ }
242
+ catch {
243
+ return { apiClasses: [], resourceTypes: [] };
244
+ }
245
+ }
246
+ //# sourceMappingURL=script-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-parser.js","sourceRoot":"","sources":["../../src/script/script-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAY,SAAS,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGtC,sEAAsE;AACtE,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAE3C,gDAAgD;AAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IACzE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IACvE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;CAClE,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,qBAAqB,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExF,mDAAmD;QACnD,MAAM,aAAa,GAAG;YACpB,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,qBAAqB;gBACxB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aACpD,CAAC;SACH,CAAC;QAEF,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,WAAW;aACzB,WAAW,EAAE;aACb,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,WAAW,EAAE,WAAW,IAAI,WAAW,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;YACtE,aAAa;YACb,UAAU;YACV,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,UAA+B,EAAE;IAEjC,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,SAAS,OAAO,CAAC,GAAW;QAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;YAAE,OAAO;QAEzC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;oBAAE,MAAM;gBAExC,2CAA2C;gBAC3C,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtD,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAElC,IAAI,CAAC;oBACH,mDAAmD;oBACnD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAElC,wEAAwE;oBACxE,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC3B,SAAS;oBACX,CAAC;oBAED,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;wBACrC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACpB,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBACvD,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;wBACrC,IAAI,MAAM,EAAE,CAAC;4BACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEhD,kDAAkD;QAClD,MAAM,eAAe,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAE5D,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;gBAC1D,oDAAoD;gBACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpC,CAAC;oBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;gBAClE,0CAA0C;gBAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,OAAO,4DAA4D,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,SAAS,gCAAgC,CAAC,QAAgB;IACxD,gCAAgC;IAChC,IAAI,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,mBAAmB;IACnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE/C,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;QAC7D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;KACpD,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,QAAQ;SACnB,KAAK,CAAC,MAAM,CAAC;SACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE1D,+BAA+B;IAC/B,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,yBAAyB;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,OAAO,EACP,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAExC,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG;YACvB,MAAM;YACN,kFAAkF;YAClF,mBAAmB;YACnB,YAAY;YACZ,YAAY;YACZ,aAAa;SACd,CAAC;QAEF,SAAS,UAAU,CAAC,IAAY;YAC9B,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,SAAS,KAAK,CAAC,IAAa;YAC1B,uBAAuB;YACvB,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAEnD,oDAAoD;gBACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtC,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;wBAC3C,IACE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;4BACzB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;4BAC1B,QAAQ,CAAC,MAAM,GAAG,EAAE,EACpB,CAAC;4BACD,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC9B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,uBAAuB;YACvB,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,OAAO;YACL,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC;YAC3B,aAAa,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,+BAA+B,CAAC;SAC5E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Script-related type definitions
3
+ */
4
+ /**
5
+ * Cached script metadata for indexing
6
+ */
7
+ export interface CachedScript {
8
+ /** Script filename (e.g., "get-pod-logs.ts") */
9
+ filename: string;
10
+ /** Full file path */
11
+ filePath: string;
12
+ /** Description extracted from first comment block */
13
+ description: string;
14
+ /** Resource types mentioned in the script */
15
+ resourceTypes: string[];
16
+ /** API classes used in the script */
17
+ apiClasses: string[];
18
+ /** Keywords extracted from description */
19
+ keywords: string[];
20
+ }
21
+ /**
22
+ * Options for parsing scripts from a directory
23
+ */
24
+ export interface ParseScriptsOptions {
25
+ /** File extension filter (default: .ts) */
26
+ extension?: string;
27
+ /** Whether to recursively search subdirectories */
28
+ recursive?: boolean;
29
+ /** Maximum number of scripts to parse */
30
+ maxScripts?: number;
31
+ }
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/script/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IAEjB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IAEpB,6CAA6C;IAC7C,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,qCAAqC;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Script-related type definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/script/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Search module - Orama wrapper and utilities
3
+ */
4
+ export { SearchEngine, type SearchEngineOptions, type SearchOptions, type SearchResult, } from './search-engine.js';
5
+ export { QueryBuilder } from './query-builder.js';
6
+ export { formatResults, formatForAI, type FormattedItem, type FormattedResult, type FormatOptions, } from './result-formatter.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Search module - Orama wrapper and utilities
3
+ */
4
+ export { SearchEngine, } from './search-engine.js';
5
+ export { QueryBuilder } from './query-builder.js';
6
+ export { formatResults, formatForAI, } from './result-formatter.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EACL,aAAa,EACb,WAAW,GAIZ,MAAM,uBAAuB,CAAC"}