@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.
- package/LICENSE +21 -0
- package/README.md +379 -0
- package/dist/__tests__/extractor.test.d.ts +5 -0
- package/dist/__tests__/extractor.test.d.ts.map +1 -0
- package/dist/__tests__/extractor.test.js +452 -0
- package/dist/__tests__/extractor.test.js.map +1 -0
- package/dist/__tests__/library-indexer.test.d.ts +5 -0
- package/dist/__tests__/library-indexer.test.d.ts.map +1 -0
- package/dist/__tests__/library-indexer.test.js +611 -0
- package/dist/__tests__/library-indexer.test.js.map +1 -0
- package/dist/__tests__/schema.test.d.ts +5 -0
- package/dist/__tests__/schema.test.d.ts.map +1 -0
- package/dist/__tests__/schema.test.js +231 -0
- package/dist/__tests__/schema.test.js.map +1 -0
- package/dist/__tests__/script-parser.test.d.ts +5 -0
- package/dist/__tests__/script-parser.test.d.ts.map +1 -0
- package/dist/__tests__/script-parser.test.js +178 -0
- package/dist/__tests__/script-parser.test.js.map +1 -0
- package/dist/__tests__/search-engine.test.d.ts +5 -0
- package/dist/__tests__/search-engine.test.d.ts.map +1 -0
- package/dist/__tests__/search-engine.test.js +497 -0
- package/dist/__tests__/search-engine.test.js.map +1 -0
- package/dist/extractor/ast-parser.d.ts +48 -0
- package/dist/extractor/ast-parser.d.ts.map +1 -0
- package/dist/extractor/ast-parser.js +118 -0
- package/dist/extractor/ast-parser.js.map +1 -0
- package/dist/extractor/function-extractor.d.ts +20 -0
- package/dist/extractor/function-extractor.d.ts.map +1 -0
- package/dist/extractor/function-extractor.js +169 -0
- package/dist/extractor/function-extractor.js.map +1 -0
- package/dist/extractor/index.d.ts +22 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +194 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/method-extractor.d.ts +30 -0
- package/dist/extractor/method-extractor.d.ts.map +1 -0
- package/dist/extractor/method-extractor.js +163 -0
- package/dist/extractor/method-extractor.js.map +1 -0
- package/dist/extractor/package-resolver.d.ts +77 -0
- package/dist/extractor/package-resolver.d.ts.map +1 -0
- package/dist/extractor/package-resolver.js +766 -0
- package/dist/extractor/package-resolver.js.map +1 -0
- package/dist/extractor/type-extractor.d.ts +15 -0
- package/dist/extractor/type-extractor.d.ts.map +1 -0
- package/dist/extractor/type-extractor.js +206 -0
- package/dist/extractor/type-extractor.js.map +1 -0
- package/dist/extractor/types.d.ts +116 -0
- package/dist/extractor/types.d.ts.map +1 -0
- package/dist/extractor/types.js +5 -0
- package/dist/extractor/types.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/library-indexer.d.ts +104 -0
- package/dist/library-indexer.d.ts.map +1 -0
- package/dist/library-indexer.js +295 -0
- package/dist/library-indexer.js.map +1 -0
- package/dist/schema/base-schema.d.ts +63 -0
- package/dist/schema/base-schema.d.ts.map +1 -0
- package/dist/schema/base-schema.js +63 -0
- package/dist/schema/base-schema.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +6 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/schema-builder.d.ts +47 -0
- package/dist/schema/schema-builder.d.ts.map +1 -0
- package/dist/schema/schema-builder.js +236 -0
- package/dist/schema/schema-builder.js.map +1 -0
- package/dist/script/index.d.ts +6 -0
- package/dist/script/index.d.ts.map +1 -0
- package/dist/script/index.js +5 -0
- package/dist/script/index.js.map +1 -0
- package/dist/script/script-parser.d.ts +18 -0
- package/dist/script/script-parser.d.ts.map +1 -0
- package/dist/script/script-parser.js +246 -0
- package/dist/script/script-parser.js.map +1 -0
- package/dist/script/types.d.ts +32 -0
- package/dist/script/types.d.ts.map +1 -0
- package/dist/script/types.js +5 -0
- package/dist/script/types.js.map +1 -0
- package/dist/search/index.d.ts +7 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +7 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/query-builder.d.ts +59 -0
- package/dist/search/query-builder.d.ts.map +1 -0
- package/dist/search/query-builder.js +103 -0
- package/dist/search/query-builder.js.map +1 -0
- package/dist/search/result-formatter.d.ts +61 -0
- package/dist/search/result-formatter.d.ts.map +1 -0
- package/dist/search/result-formatter.js +170 -0
- package/dist/search/result-formatter.js.map +1 -0
- package/dist/search/search-engine.d.ts +105 -0
- package/dist/search/search-engine.d.ts.map +1 -0
- package/dist/search/search-engine.js +245 -0
- package/dist/search/search-engine.js.map +1 -0
- 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":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAqB,MAAM,kBAAkB,CAAC;AAQtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAqB5D;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,OAAiC;IAEjC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QACzB,OAAO,UAAmC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,GAAG,OAAO,CAAC,UAAU;KACG,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAmB;IACnD,MAAM,YAAY,GAAG;QACnB,IAAI,CAAC,IAAI;QACT,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,WAAW;QAChB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,GAAG,IAAI,CAAC,WAAW;KACpB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAElD,OAAO;QACL,GAAG,mBAAmB,EAAE;QACxB,EAAE,EAAE,QAAQ,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;QACvC,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY;QACZ,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3C,cAAc;QACd,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACxC,QAAQ,EAAE,IAAI,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAuB;IACzD,MAAM,YAAY,GAAG;QACnB,MAAM,CAAC,IAAI;QACX,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3B,MAAM,CAAC,SAAS;QAChB,MAAM,CAAC,WAAW;QAClB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,MAAM,CAAC,UAAU;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAElD,OAAO;QACL,GAAG,mBAAmB,EAAE;QACxB,EAAE,EAAE,UAAU,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE;QACjE,YAAY,EAAE,QAAQ;QACtB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY;QACZ,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ;QACR,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,EAAE;QACvD,SAAS;QACT,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAuB;IAC3D,MAAM,YAAY,GAAG;QACnB,IAAI,CAAC,IAAI;QACT,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW;QAChB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,UAAU;KAChB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAEhE,OAAO;QACL,GAAG,mBAAmB,EAAE;QACxB,EAAE,EAAE,YAAY,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;QAC3C,YAAY,EAAE,UAAU;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY;QACZ,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ;QACR,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3C,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACtD,MAAM,eAAe,GAAG,4DAA4D,CAAC,IAAI,CACvF,MAAM,CAAC,QAAQ,CAChB,CAAC;IAEF,MAAM,YAAY,GAAG;QACnB,QAAQ;QACR,0DAA0D;QAC1D,GAAG,CAAC,eAAe;YACjB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACjE,GAAG,MAAM,CAAC,aAAa;QACvB,MAAM,CAAC,WAAW;QAClB,GAAG,MAAM,CAAC,UAAU;QACpB,GAAG,MAAM,CAAC,QAAQ;KACnB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG,eAAe;QACjC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE;YACrC,CAAC,CAAC,gBAAgB;QACpB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEzC,OAAO;QACL,GAAG,mBAAmB,EAAE;QACxB,EAAE,EAAE,UAAU,MAAM,CAAC,QAAQ,EAAE;QAC/B,YAAY,EAAE,QAAQ;QACtB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY;QACZ,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,cAAc;QAC9E,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAwE;IAExE,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,iBAAiB,CAAC,IAAqB,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,mBAAmB,CAAC,IAAuB,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,qBAAqB,CAAC,IAAyB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAoB,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAmB,EAAE,gBAAwB,EAAE;IAC3E,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC;IAE7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC;IAEvD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,cAAc,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa,oBAAoB,CAAC;IAChF,CAAC;IAED,MAAM,IAAI,GAAG,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAAuB;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1D,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtD,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAChD,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/E,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnF,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACtF,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACrF,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAElD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,QAAgB,EAAE,OAAe;IAC9D,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEvC,uBAAuB;IACvB,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,YAAY,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -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 @@
|
|
|
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":"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"}
|
|
@@ -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 @@
|
|
|
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"}
|