@prodisco/k8s-mcp 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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/codegen/generateTypes.d.ts +8 -0
  4. package/dist/codegen/generateTypes.d.ts.map +1 -0
  5. package/dist/codegen/generateTypes.js +96 -0
  6. package/dist/codegen/generateTypes.js.map +1 -0
  7. package/dist/codegen/interfaceGenerator.d.ts +9 -0
  8. package/dist/codegen/interfaceGenerator.d.ts.map +1 -0
  9. package/dist/codegen/interfaceGenerator.js +185 -0
  10. package/dist/codegen/interfaceGenerator.js.map +1 -0
  11. package/dist/codegen/toolMapping.d.ts +11 -0
  12. package/dist/codegen/toolMapping.d.ts.map +1 -0
  13. package/dist/codegen/toolMapping.js +78 -0
  14. package/dist/codegen/toolMapping.js.map +1 -0
  15. package/dist/codegen/typeExtractor.d.ts +23 -0
  16. package/dist/codegen/typeExtractor.d.ts.map +1 -0
  17. package/dist/codegen/typeExtractor.js +112 -0
  18. package/dist/codegen/typeExtractor.js.map +1 -0
  19. package/dist/kube/client.d.ts +37 -0
  20. package/dist/kube/client.d.ts.map +1 -0
  21. package/dist/kube/client.js +161 -0
  22. package/dist/kube/client.js.map +1 -0
  23. package/dist/kube/types.d.ts +27 -0
  24. package/dist/kube/types.d.ts.map +1 -0
  25. package/dist/kube/types.js +2 -0
  26. package/dist/kube/types.js.map +1 -0
  27. package/dist/resources/filesystem.d.ts +15 -0
  28. package/dist/resources/filesystem.d.ts.map +1 -0
  29. package/dist/resources/filesystem.js +54 -0
  30. package/dist/resources/filesystem.js.map +1 -0
  31. package/dist/server.d.ts +3 -0
  32. package/dist/server.d.ts.map +1 -0
  33. package/dist/server.js +127 -0
  34. package/dist/server.js.map +1 -0
  35. package/dist/tools/index.d.ts +3 -0
  36. package/dist/tools/index.d.ts.map +1 -0
  37. package/dist/tools/index.js +3 -0
  38. package/dist/tools/index.js.map +1 -0
  39. package/dist/tools/kubernetes/index.d.ts +5 -0
  40. package/dist/tools/kubernetes/index.d.ts.map +1 -0
  41. package/dist/tools/kubernetes/index.js +6 -0
  42. package/dist/tools/kubernetes/index.js.map +1 -0
  43. package/dist/tools/kubernetes/metadata.d.ts +110 -0
  44. package/dist/tools/kubernetes/metadata.d.ts.map +1 -0
  45. package/dist/tools/kubernetes/metadata.js +19 -0
  46. package/dist/tools/kubernetes/metadata.js.map +1 -0
  47. package/dist/tools/kubernetes/searchTools-old.d.ts +35 -0
  48. package/dist/tools/kubernetes/searchTools-old.d.ts.map +1 -0
  49. package/dist/tools/kubernetes/searchTools-old.js +414 -0
  50. package/dist/tools/kubernetes/searchTools-old.js.map +1 -0
  51. package/dist/tools/kubernetes/searchTools-v2.d.ts +35 -0
  52. package/dist/tools/kubernetes/searchTools-v2.d.ts.map +1 -0
  53. package/dist/tools/kubernetes/searchTools-v2.js +269 -0
  54. package/dist/tools/kubernetes/searchTools-v2.js.map +1 -0
  55. package/dist/tools/kubernetes/searchTools.d.ts +87 -0
  56. package/dist/tools/kubernetes/searchTools.d.ts.map +1 -0
  57. package/dist/tools/kubernetes/searchTools.js +529 -0
  58. package/dist/tools/kubernetes/searchTools.js.map +1 -0
  59. package/dist/tools/kubernetes/typeDefinitions.d.ts +24 -0
  60. package/dist/tools/kubernetes/typeDefinitions.d.ts.map +1 -0
  61. package/dist/tools/kubernetes/typeDefinitions.js +518 -0
  62. package/dist/tools/kubernetes/typeDefinitions.js.map +1 -0
  63. package/dist/tools/types.d.ts +10 -0
  64. package/dist/tools/types.d.ts.map +1 -0
  65. package/dist/tools/types.js +2 -0
  66. package/dist/tools/types.js.map +1 -0
  67. package/dist/util/manifest.d.ts +5 -0
  68. package/dist/util/manifest.d.ts.map +1 -0
  69. package/dist/util/manifest.js +31 -0
  70. package/dist/util/manifest.js.map +1 -0
  71. package/dist/util/paths.d.ts +7 -0
  72. package/dist/util/paths.d.ts.map +1 -0
  73. package/dist/util/paths.js +14 -0
  74. package/dist/util/paths.js.map +1 -0
  75. package/dist/util/summary.d.ts +403 -0
  76. package/dist/util/summary.d.ts.map +1 -0
  77. package/dist/util/summary.js +211 -0
  78. package/dist/util/summary.js.map +1 -0
  79. package/package.json +61 -0
@@ -0,0 +1,518 @@
1
+ import { z } from 'zod';
2
+ import * as ts from 'typescript';
3
+ import { readFileSync, existsSync } from 'fs';
4
+ import { join } from 'path';
5
+ const GetTypeDefinitionInputSchema = z.object({
6
+ types: z
7
+ .array(z.string())
8
+ .describe('Array of Kubernetes type names or paths to get definitions for (e.g., ["V1Pod", "V1Deployment.spec", "V1Deployment.spec.template.spec"])'),
9
+ depth: z
10
+ .number()
11
+ .int()
12
+ .positive()
13
+ .max(2)
14
+ .default(1)
15
+ .optional()
16
+ .describe('Depth of nested type definitions to include (default: 1, max: 2)'),
17
+ });
18
+ /**
19
+ * Extract JSDoc comment from a node
20
+ */
21
+ function getJSDocDescription(node, _sourceFile) {
22
+ const jsDocComments = ts.getJSDocCommentsAndTags(node);
23
+ for (const comment of jsDocComments) {
24
+ if (ts.isJSDoc(comment) && comment.comment) {
25
+ if (typeof comment.comment === 'string') {
26
+ return comment.comment;
27
+ }
28
+ }
29
+ }
30
+ return undefined;
31
+ }
32
+ /**
33
+ * Extract type definition from TypeScript declaration file using TypeScript compiler API
34
+ */
35
+ function extractTypeDefinitionWithTS(typeName, filePath) {
36
+ const sourceCode = readFileSync(filePath, 'utf-8');
37
+ const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true);
38
+ let typeInfo = null;
39
+ const nestedTypes = new Set();
40
+ function visit(node) {
41
+ // Check if this is the class or interface we're looking for
42
+ if ((ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) && node.name && node.name.text === typeName) {
43
+ const properties = [];
44
+ const description = getJSDocDescription(node, sourceFile);
45
+ // Extract properties/members
46
+ node.members?.forEach((member) => {
47
+ if (ts.isPropertySignature(member) || ts.isPropertyDeclaration(member)) {
48
+ if (member.name) {
49
+ const propName = member.name.getText(sourceFile);
50
+ const propType = member.type?.getText(sourceFile) || 'any';
51
+ const isOptional = !!member.questionToken;
52
+ const propDescription = getJSDocDescription(member, sourceFile);
53
+ properties.push({
54
+ name: propName.replace(/['"]/g, ''),
55
+ type: propType,
56
+ optional: isOptional,
57
+ description: propDescription,
58
+ });
59
+ // Extract nested type references
60
+ const typeRefs = extractNestedTypeRefs(propType);
61
+ typeRefs.forEach(ref => {
62
+ if (ref !== typeName) {
63
+ nestedTypes.add(ref);
64
+ }
65
+ });
66
+ }
67
+ }
68
+ });
69
+ typeInfo = {
70
+ name: typeName,
71
+ properties,
72
+ description,
73
+ };
74
+ }
75
+ ts.forEachChild(node, visit);
76
+ }
77
+ visit(sourceFile);
78
+ if (!typeInfo) {
79
+ return null;
80
+ }
81
+ return {
82
+ typeInfo,
83
+ nestedTypes: Array.from(nestedTypes),
84
+ };
85
+ }
86
+ /**
87
+ * Extract nested type references from a type string
88
+ */
89
+ function extractNestedTypeRefs(typeStr) {
90
+ const refs = [];
91
+ const typeRefRegex = /\b([VK]\d+[A-Z][a-zA-Z0-9]*|Core[A-Z][a-zA-Z0-9]*)\b/g;
92
+ let match;
93
+ while ((match = typeRefRegex.exec(typeStr)) !== null) {
94
+ const ref = match[1];
95
+ if (ref && !refs.includes(ref)) {
96
+ refs.push(ref);
97
+ }
98
+ }
99
+ return refs;
100
+ }
101
+ /**
102
+ * Extract the main type identifier from a TypeScript type node using native TS compiler API
103
+ * Handles: Array<V1Pod>, V1PodSpec | undefined, V1Container[], etc.
104
+ */
105
+ function extractTypeIdentifier(typeNode) {
106
+ // Handle union types (e.g., V1PodSpec | undefined)
107
+ if (ts.isUnionTypeNode(typeNode)) {
108
+ for (const type of typeNode.types) {
109
+ // Skip undefined/null types
110
+ if (type.kind === ts.SyntaxKind.UndefinedKeyword || type.kind === ts.SyntaxKind.NullKeyword) {
111
+ continue;
112
+ }
113
+ return extractTypeIdentifier(type);
114
+ }
115
+ return null;
116
+ }
117
+ // Handle array types (e.g., V1Container[])
118
+ if (ts.isArrayTypeNode(typeNode)) {
119
+ return extractTypeIdentifier(typeNode.elementType);
120
+ }
121
+ // Handle type references (e.g., Array<V1Pod>, V1PodSpec)
122
+ if (ts.isTypeReferenceNode(typeNode)) {
123
+ const typeName = typeNode.typeName.getText();
124
+ // Handle Array<T> or other generic types
125
+ if (typeName === 'Array' && typeNode.typeArguments && typeNode.typeArguments.length > 0) {
126
+ const firstArg = typeNode.typeArguments[0];
127
+ if (firstArg) {
128
+ return extractTypeIdentifier(firstArg);
129
+ }
130
+ }
131
+ // Return the type name directly
132
+ return typeName;
133
+ }
134
+ // Handle indexed access types (e.g., { [key: string]: V1Pod })
135
+ if (ts.isTypeLiteralNode(typeNode)) {
136
+ // For now, return null for complex literal types
137
+ return null;
138
+ }
139
+ return null;
140
+ }
141
+ /**
142
+ * Resolve a property path like "V1Deployment.spec.template.spec" to get the final type
143
+ * Returns the type name of the property at the end of the path
144
+ */
145
+ function _resolvePropertyPath(rootTypeName, propertyPath, basePath) {
146
+ let currentType = rootTypeName;
147
+ const resolvedPath = [rootTypeName];
148
+ for (const propName of propertyPath) {
149
+ const filePath = findTypeDefinitionFile(currentType, basePath);
150
+ if (!filePath) {
151
+ return null;
152
+ }
153
+ const sourceCode = readFileSync(filePath, 'utf-8');
154
+ const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true);
155
+ let foundType = null;
156
+ function visit(node) {
157
+ if ((ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) &&
158
+ node.name && node.name.text === currentType) {
159
+ node.members?.forEach((member) => {
160
+ if ((ts.isPropertySignature(member) || ts.isPropertyDeclaration(member)) && member.name) {
161
+ const memberName = member.name.getText(sourceFile).replace(/['"]/g, '');
162
+ if (memberName === propName && member.type) {
163
+ // Use native TypeScript API to extract type
164
+ const typeIdentifier = extractTypeIdentifier(member.type);
165
+ if (typeIdentifier) {
166
+ foundType = typeIdentifier;
167
+ }
168
+ }
169
+ }
170
+ });
171
+ }
172
+ if (!foundType) {
173
+ ts.forEachChild(node, visit);
174
+ }
175
+ }
176
+ visit(sourceFile);
177
+ if (!foundType) {
178
+ return null;
179
+ }
180
+ currentType = foundType;
181
+ resolvedPath.push(propName);
182
+ }
183
+ return {
184
+ typeName: currentType,
185
+ fullPath: resolvedPath.join('.'),
186
+ };
187
+ }
188
+ /**
189
+ * Format type info as a readable string (concise version)
190
+ */
191
+ function formatTypeInfo(typeInfo, maxProperties = 20) {
192
+ let result = `${typeInfo.name} {\n`;
193
+ // Limit properties to avoid huge outputs
194
+ const propsToShow = typeInfo.properties.slice(0, maxProperties);
195
+ const hasMore = typeInfo.properties.length > maxProperties;
196
+ for (const prop of propsToShow) {
197
+ const optionalMarker = prop.optional ? '?' : '';
198
+ result += ` ${prop.name}${optionalMarker}: ${prop.type}\n`;
199
+ }
200
+ if (hasMore) {
201
+ result += ` ... ${typeInfo.properties.length - maxProperties} more properties\n`;
202
+ }
203
+ result += `}`;
204
+ return result;
205
+ }
206
+ /**
207
+ * Find type definition file in Kubernetes client-node package
208
+ */
209
+ function findTypeDefinitionFile(typeName, basePath) {
210
+ const k8sPath = join(basePath, 'node_modules', '@kubernetes', 'client-node', 'dist', 'gen', 'models');
211
+ const filePath = join(k8sPath, `${typeName}.d.ts`);
212
+ if (existsSync(filePath)) {
213
+ return filePath;
214
+ }
215
+ return null;
216
+ }
217
+ /**
218
+ * Parse a type path into base type and property path
219
+ * e.g., "V1Deployment.spec.template" -> { baseType: "V1Deployment", path: ["spec", "template"] }
220
+ */
221
+ function parseTypePath(typePath) {
222
+ const parts = typePath.split('.');
223
+ const baseType = parts[0];
224
+ if (!baseType) {
225
+ return null;
226
+ }
227
+ const path = parts.slice(1);
228
+ return { baseType, path };
229
+ }
230
+ /**
231
+ * Navigate through type properties to find a subtype
232
+ * Returns the property info and the type name for the subproperty
233
+ */
234
+ function navigateToSubtype(typeInfo, propertyPath, basePath, cache) {
235
+ if (propertyPath.length === 0) {
236
+ return null;
237
+ }
238
+ let currentTypeInfo = typeInfo;
239
+ let currentTypeName = typeInfo.name;
240
+ const pathSegments = [currentTypeName];
241
+ for (let i = 0; i < propertyPath.length; i++) {
242
+ const propertyName = propertyPath[i];
243
+ if (!propertyName) {
244
+ return null;
245
+ }
246
+ const property = currentTypeInfo.properties.find(p => p.name === propertyName);
247
+ if (!property) {
248
+ return null; // Property not found
249
+ }
250
+ pathSegments.push(propertyName);
251
+ // Now we need to get the actual TypeScript type node for this property
252
+ // We'll need to re-parse to get the type node
253
+ const filePath = findTypeDefinitionFile(currentTypeName, basePath);
254
+ if (!filePath) {
255
+ return null;
256
+ }
257
+ const sourceCode = readFileSync(filePath, 'utf-8');
258
+ const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true);
259
+ let propertyTypeNode = null;
260
+ function findPropertyType(node) {
261
+ if ((ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) &&
262
+ node.name && node.name.text === currentTypeName) {
263
+ node.members?.forEach((member) => {
264
+ if ((ts.isPropertySignature(member) || ts.isPropertyDeclaration(member)) &&
265
+ member.name && member.type) {
266
+ const memberName = member.name.getText(sourceFile).replace(/['"]/g, '');
267
+ if (memberName === propertyName) {
268
+ propertyTypeNode = member.type;
269
+ }
270
+ }
271
+ });
272
+ }
273
+ if (!propertyTypeNode) {
274
+ ts.forEachChild(node, findPropertyType);
275
+ }
276
+ }
277
+ findPropertyType(sourceFile);
278
+ if (!propertyTypeNode) {
279
+ return null;
280
+ }
281
+ // Use native TypeScript API to extract the type
282
+ const nextTypeName = extractTypeIdentifier(propertyTypeNode);
283
+ if (!nextTypeName) {
284
+ return null;
285
+ }
286
+ // If this is the last segment, we found what we're looking for
287
+ if (i === propertyPath.length - 1) {
288
+ return {
289
+ typeInfo: currentTypeInfo,
290
+ propertyPath: pathSegments.join('.'),
291
+ typeName: nextTypeName,
292
+ };
293
+ }
294
+ // Check cache first
295
+ let nextTypeInfo = cache.get(nextTypeName);
296
+ if (!nextTypeInfo) {
297
+ // Load the type definition
298
+ const filePath = findTypeDefinitionFile(nextTypeName, basePath);
299
+ if (!filePath) {
300
+ return null;
301
+ }
302
+ const extracted = extractTypeDefinitionWithTS(nextTypeName, filePath);
303
+ if (!extracted) {
304
+ return null;
305
+ }
306
+ nextTypeInfo = extracted.typeInfo;
307
+ cache.set(nextTypeName, nextTypeInfo);
308
+ }
309
+ currentTypeInfo = nextTypeInfo;
310
+ currentTypeName = nextTypeName;
311
+ }
312
+ return null;
313
+ }
314
+ /**
315
+ * Get type information for a subtype at a specific path
316
+ */
317
+ function getSubtypeInfo(baseTypeName, propertyPath, basePath, cache) {
318
+ // First, get the base type
319
+ let baseTypeInfo = cache.get(baseTypeName);
320
+ if (!baseTypeInfo) {
321
+ const filePath = findTypeDefinitionFile(baseTypeName, basePath);
322
+ if (!filePath) {
323
+ return null;
324
+ }
325
+ const extracted = extractTypeDefinitionWithTS(baseTypeName, filePath);
326
+ if (!extracted) {
327
+ return null;
328
+ }
329
+ baseTypeInfo = extracted.typeInfo;
330
+ cache.set(baseTypeName, baseTypeInfo);
331
+ }
332
+ // If no path, return the base type
333
+ if (propertyPath.length === 0) {
334
+ return {
335
+ typeInfo: baseTypeInfo,
336
+ fullPath: baseTypeName,
337
+ originalType: baseTypeName,
338
+ };
339
+ }
340
+ // Navigate to the subtype
341
+ const result = navigateToSubtype(baseTypeInfo, propertyPath, basePath, cache);
342
+ if (!result) {
343
+ return null;
344
+ }
345
+ // Now load the actual type definition for the target property
346
+ const targetTypeName = result.typeName;
347
+ let targetTypeInfo = cache.get(targetTypeName);
348
+ if (!targetTypeInfo) {
349
+ const filePath = findTypeDefinitionFile(targetTypeName, basePath);
350
+ if (filePath) {
351
+ const extracted = extractTypeDefinitionWithTS(targetTypeName, filePath);
352
+ if (extracted) {
353
+ targetTypeInfo = extracted.typeInfo;
354
+ cache.set(targetTypeName, targetTypeInfo);
355
+ }
356
+ }
357
+ }
358
+ // If we couldn't load the type, create a synthetic one showing just the property
359
+ if (!targetTypeInfo) {
360
+ const lastProp = propertyPath[propertyPath.length - 1];
361
+ if (!lastProp) {
362
+ return null;
363
+ }
364
+ const property = result.typeInfo.properties.find(p => p.name === lastProp);
365
+ if (property) {
366
+ targetTypeInfo = {
367
+ name: `${result.propertyPath}`,
368
+ properties: [{
369
+ name: lastProp,
370
+ type: property.type,
371
+ optional: property.optional,
372
+ description: property.description || undefined,
373
+ }],
374
+ description: `Property type: ${property.type}`,
375
+ };
376
+ }
377
+ else {
378
+ return null;
379
+ }
380
+ }
381
+ return {
382
+ typeInfo: targetTypeInfo,
383
+ fullPath: result.propertyPath,
384
+ originalType: targetTypeName,
385
+ };
386
+ }
387
+ export const getTypeDefinitionTool = {
388
+ name: 'kubernetes.getTypeDefinition',
389
+ description: 'Get TypeScript type definitions for Kubernetes types. ' +
390
+ 'Use this to understand the structure of request/response objects like V1Pod, V1PodList, V1Event, etc. ' +
391
+ 'Returns the interface definition with nested types up to specified depth.',
392
+ schema: GetTypeDefinitionInputSchema,
393
+ async execute(input) {
394
+ const { types, depth = 2 } = input;
395
+ const basePath = process.cwd();
396
+ const results = {};
397
+ const typesToProcess = new Set(types);
398
+ const processedTypes = new Set();
399
+ let currentDepth = 0;
400
+ while (typesToProcess.size > 0 && currentDepth < depth) {
401
+ const currentBatch = Array.from(typesToProcess);
402
+ typesToProcess.clear();
403
+ for (const typePath of currentBatch) {
404
+ if (processedTypes.has(typePath)) {
405
+ continue;
406
+ }
407
+ processedTypes.add(typePath);
408
+ // Check if this is a dot-notation path (e.g., "V1Deployment.spec")
409
+ const parsedPath = parseTypePath(typePath);
410
+ if (!parsedPath) {
411
+ results[typePath] = {
412
+ name: typePath,
413
+ definition: `// Invalid type path: ${typePath}`,
414
+ file: 'error',
415
+ nestedTypes: [],
416
+ };
417
+ continue;
418
+ }
419
+ const { baseType, path: propertyPath } = parsedPath;
420
+ // If this is a property path (has dots), use getSubtypeInfo
421
+ if (propertyPath.length > 0) {
422
+ const cache = new Map();
423
+ const subtypeInfo = getSubtypeInfo(baseType, propertyPath, basePath, cache);
424
+ if (subtypeInfo) {
425
+ const definition = formatTypeInfo(subtypeInfo.typeInfo);
426
+ results[typePath] = {
427
+ name: subtypeInfo.typeInfo.name,
428
+ definition,
429
+ file: findTypeDefinitionFile(subtypeInfo.originalType, basePath)?.replace(basePath, '.') || 'resolved',
430
+ nestedTypes: [],
431
+ };
432
+ }
433
+ else {
434
+ results[typePath] = {
435
+ name: typePath,
436
+ definition: `// Could not resolve property path: ${typePath}`,
437
+ file: 'not found',
438
+ nestedTypes: [],
439
+ };
440
+ }
441
+ }
442
+ else {
443
+ // Regular type name (no dots)
444
+ const filePath = findTypeDefinitionFile(baseType, basePath);
445
+ if (filePath) {
446
+ try {
447
+ const extracted = extractTypeDefinitionWithTS(baseType, filePath);
448
+ if (extracted) {
449
+ const definition = formatTypeInfo(extracted.typeInfo);
450
+ results[typePath] = {
451
+ name: baseType,
452
+ definition,
453
+ file: filePath.replace(basePath, '.'),
454
+ nestedTypes: extracted.nestedTypes,
455
+ };
456
+ // Add nested types to process if within depth limit
457
+ if (currentDepth < depth - 1) {
458
+ for (const nestedType of extracted.nestedTypes) {
459
+ if (!processedTypes.has(nestedType)) {
460
+ typesToProcess.add(nestedType);
461
+ }
462
+ }
463
+ }
464
+ }
465
+ else {
466
+ results[typePath] = {
467
+ name: baseType,
468
+ definition: `// Type ${baseType} not found in file ${filePath}`,
469
+ file: filePath.replace(basePath, '.'),
470
+ nestedTypes: [],
471
+ };
472
+ }
473
+ }
474
+ catch (error) {
475
+ results[typePath] = {
476
+ name: baseType,
477
+ definition: `// Error extracting type ${baseType}: ${error instanceof Error ? error.message : String(error)}`,
478
+ file: filePath.replace(basePath, '.'),
479
+ nestedTypes: [],
480
+ };
481
+ }
482
+ }
483
+ else {
484
+ results[typePath] = {
485
+ name: baseType,
486
+ definition: `// Type ${baseType} not found in @kubernetes/client-node type definitions`,
487
+ file: 'not found',
488
+ nestedTypes: [],
489
+ };
490
+ }
491
+ }
492
+ }
493
+ currentDepth++;
494
+ }
495
+ // Create summary
496
+ const foundCount = Object.values(results).filter(r => r.file !== 'not found').length;
497
+ const totalTypes = Object.keys(results).length;
498
+ let summary = `Fetched ${foundCount} type definition(s)`;
499
+ if (totalTypes > types.length) {
500
+ summary += ` (${types.length} requested, ${totalTypes - types.length} nested)\n\n`;
501
+ }
502
+ else {
503
+ summary += `\n\n`;
504
+ }
505
+ // Only show requested types in summary, not all nested ones
506
+ for (const typeName of types) {
507
+ const typeInfo = results[typeName];
508
+ if (typeInfo && typeInfo.file !== 'not found') {
509
+ summary += `${typeName}: ${typeInfo.nestedTypes.length} nested type(s)\n`;
510
+ }
511
+ }
512
+ return {
513
+ summary,
514
+ types: results,
515
+ };
516
+ },
517
+ };
518
+ //# sourceMappingURL=typeDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeDefinitions.js","sourceRoot":"","sources":["../../../src/tools/kubernetes/typeDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,0IAA0I,CAAC;IACvJ,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;CAChF,CAAC,CAAC;AAyBH;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAa,EAAE,WAA0B;IACpE,MAAM,aAAa,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACvD,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,OAAO,CAAC,OAAO,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,QAAgB,EAAE,QAAgB;IACrE,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,UAAU,EACV,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;IAEF,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,SAAS,KAAK,CAAC,IAAa;QAC1B,4DAA4D;QAC5D,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjH,MAAM,UAAU,GAAmB,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE1D,6BAA6B;YAC7B,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;wBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;wBAC3D,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;wBAC1C,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;wBAEhE,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;4BACnC,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,UAAU;4BACpB,WAAW,EAAE,eAAe;yBAC7B,CAAC,CAAC;wBAEH,iCAAiC;wBACjC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;wBACjD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;4BACrB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gCACrB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BACvB,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,QAAQ,GAAG;gBACT,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,WAAW;aACZ,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;IAElB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,QAAQ;QACR,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;KACrC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,uDAAuD,CAAC;IAC7E,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,QAAqB;IAClD,mDAAmD;IACnD,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,4BAA4B;YAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC5F,SAAS;YACX,CAAC;YACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAA2C;IAC3C,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,yDAAyD;IACzD,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE7C,yCAAyC;QACzC,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+DAA+D;IAC/D,IAAI,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,iDAAiD;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,YAAoB,EAAE,YAAsB,EAAE,QAAgB;IAC1F,IAAI,WAAW,GAAG,YAAY,CAAC;IAC/B,MAAM,YAAY,GAAa,CAAC,YAAY,CAAC,CAAC;IAE9C,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,UAAU,EACV,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;QAEF,IAAI,SAAS,GAAkB,IAAI,CAAC;QAEpC,SAAS,KAAK,CAAC,IAAa;YAC1B,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAChE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAEhD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC/B,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBACxF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBACxE,IAAI,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;4BAC3C,4CAA4C;4BAC5C,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BAC1D,IAAI,cAAc,EAAE,CAAC;gCACnB,SAAS,GAAG,cAAc,CAAC;4BAC7B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,WAAW,GAAG,SAAS,CAAC;QACxB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAkB,EAAE,gBAAwB,EAAE;IACpE,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,MAAM,CAAC;IAEpC,yCAAyC;IACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC;IAE3D,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,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa,oBAAoB,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,QAAgB,EAAE,QAAgB;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IAEnD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,QAAkB,EAClB,YAAsB,EACtB,QAAgB,EAChB,KAA4B;IAE5B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,eAAe,GAAG,QAAQ,CAAC;IAC/B,IAAI,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;IACpC,MAAM,YAAY,GAAa,CAAC,eAAe,CAAC,CAAC;IAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAE/E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,CAAC,qBAAqB;QACpC,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhC,uEAAuE;QACvE,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE3F,IAAI,gBAAgB,GAAuB,IAAI,CAAC;QAEhD,SAAS,gBAAgB,CAAC,IAAa;YACrC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAChE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACpD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC/B,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;wBACpE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBACxE,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;4BAChC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC;wBACjC,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAE7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gDAAgD;QAChD,MAAM,YAAY,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,QAAQ,EAAE,eAAe;gBACzB,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;gBACpC,QAAQ,EAAE,YAAY;aACvB,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE3C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,SAAS,GAAG,2BAA2B,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC;YACd,CAAC;YAED,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;YAClC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACxC,CAAC;QAED,eAAe,GAAG,YAAY,CAAC;QAC/B,eAAe,GAAG,YAAY,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,YAAoB,EACpB,YAAsB,EACtB,QAAgB,EAChB,KAA4B;IAE5B,2BAA2B;IAC3B,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,2BAA2B,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,mCAAmC;IACnC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,YAAY;YACtB,YAAY,EAAE,YAAY;SAC3B,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8DAA8D;IAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC;IACvC,IAAI,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE/C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,2BAA2B,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACxE,IAAI,SAAS,EAAE,CAAC;gBACd,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC;gBACpC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC3E,IAAI,QAAQ,EAAE,CAAC;YACb,cAAc,GAAG;gBACf,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE;gBAC9B,UAAU,EAAE,CAAC;wBACX,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,SAAS;qBAC/C,CAAC;gBACF,WAAW,EAAE,kBAAkB,QAAQ,CAAC,IAAI,EAAE;aAC/C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,MAAM,CAAC,YAAY;QAC7B,YAAY,EAAE,cAAc;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAA8E;IAC9G,IAAI,EAAE,8BAA8B;IACpC,WAAW,EACT,wDAAwD;QACxD,wGAAwG;QACxG,2EAA2E;IAC7E,MAAM,EAAE,4BAA4B;IACpC,KAAK,CAAC,OAAO,CAAC,KAAK;QACjB,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE/B,MAAM,OAAO,GAKR,EAAE,CAAC;QAER,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,cAAc,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;YACvD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChD,cAAc,CAAC,KAAK,EAAE,CAAC;YAEvB,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjC,SAAS;gBACX,CAAC;gBAED,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAE7B,mEAAmE;gBACnE,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,CAAC,QAAQ,CAAC,GAAG;wBAClB,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,yBAAyB,QAAQ,EAAE;wBAC/C,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,EAAE;qBAChB,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;gBAEpD,4DAA4D;gBAC5D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;oBAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;oBAE5E,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;wBACxD,OAAO,CAAC,QAAQ,CAAC,GAAG;4BAClB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI;4BAC/B,UAAU;4BACV,IAAI,EAAE,sBAAsB,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,UAAU;4BACtG,WAAW,EAAE,EAAE;yBAChB,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,QAAQ,CAAC,GAAG;4BAClB,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE,uCAAuC,QAAQ,EAAE;4BAC7D,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,EAAE;yBAChB,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8BAA8B;oBAC9B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAE5D,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BAElE,IAAI,SAAS,EAAE,CAAC;gCACd,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gCACtD,OAAO,CAAC,QAAQ,CAAC,GAAG;oCAClB,IAAI,EAAE,QAAQ;oCACd,UAAU;oCACV,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;oCACrC,WAAW,EAAE,SAAS,CAAC,WAAW;iCACnC,CAAC;gCAEF,oDAAoD;gCACpD,IAAI,YAAY,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;oCAC7B,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;wCAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;4CACpC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wCACjC,CAAC;oCACH,CAAC;gCACH,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,QAAQ,CAAC,GAAG;oCAClB,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE,WAAW,QAAQ,sBAAsB,QAAQ,EAAE;oCAC/D,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;oCACrC,WAAW,EAAE,EAAE;iCAChB,CAAC;4BACJ,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,OAAO,CAAC,QAAQ,CAAC,GAAG;gCAClB,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE,4BAA4B,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gCAC7G,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;gCACrC,WAAW,EAAE,EAAE;6BAChB,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,QAAQ,CAAC,GAAG;4BAClB,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE,WAAW,QAAQ,wDAAwD;4BACvF,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,EAAE;yBAChB,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,YAAY,EAAE,CAAC;QACjB,CAAC;QAED,iBAAiB;QACjB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QACrF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAE/C,IAAI,OAAO,GAAG,WAAW,UAAU,qBAAqB,CAAC;QACzD,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,KAAK,KAAK,CAAC,MAAM,eAAe,UAAU,GAAG,KAAK,CAAC,MAAM,cAAc,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,MAAM,CAAC;QACpB,CAAC;QAED,4DAA4D;QAC5D,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9C,OAAO,IAAI,GAAG,QAAQ,KAAK,QAAQ,CAAC,WAAW,CAAC,MAAM,mBAAmB,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { z } from 'zod';
2
+ export interface ToolDefinition<TResult = unknown, TSchema extends z.ZodTypeAny = z.ZodTypeAny> {
3
+ name: string;
4
+ description: string;
5
+ schema: TSchema;
6
+ resultSchema?: z.ZodTypeAny;
7
+ execute: (input: z.infer<TSchema>) => Promise<TResult>;
8
+ }
9
+ export type AnyToolDefinition = ToolDefinition<any, any>;
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IAC5F,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAGD,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { KubernetesObject } from '@kubernetes/client-node';
2
+ type ManifestInput = string | KubernetesObject | Record<string, unknown> | Array<KubernetesObject | Record<string, unknown>>;
3
+ export declare function parseManifests(input: ManifestInput): KubernetesObject[];
4
+ export {};
5
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/util/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,KAAK,aAAa,GACd,MAAM,GACN,gBAAgB,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtD,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,EAAE,CAWvE"}
@@ -0,0 +1,31 @@
1
+ import { parseAllDocuments } from 'yaml';
2
+ export function parseManifests(input) {
3
+ if (typeof input === 'string') {
4
+ const docs = parseAllDocuments(input).map((doc) => doc.toJSON());
5
+ return docs.filter(isKubernetesObject).map(normalizeManifest);
6
+ }
7
+ if (Array.isArray(input)) {
8
+ return input.filter(isKubernetesObject).map(normalizeManifest);
9
+ }
10
+ return [normalizeManifest(input)];
11
+ }
12
+ function normalizeManifest(manifest) {
13
+ if (!isKubernetesObject(manifest)) {
14
+ throw new Error('Manifest is missing apiVersion or kind fields');
15
+ }
16
+ if (!manifest.metadata) {
17
+ throw new Error('Manifest metadata is required');
18
+ }
19
+ if (!manifest.metadata.name) {
20
+ throw new Error('Manifest metadata.name is required');
21
+ }
22
+ return manifest;
23
+ }
24
+ function isKubernetesObject(value) {
25
+ if (!value || typeof value !== 'object') {
26
+ return false;
27
+ }
28
+ const candidate = value;
29
+ return typeof candidate.apiVersion === 'string' && typeof candidate.kind === 'string';
30
+ }
31
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/util/manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAQzC,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAuD,QAAW;IAC1F,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC;AACxF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get the package root directory.
3
+ * This works for both ESM and when compiled to dist/.
4
+ */
5
+ export declare function getPackageRoot(): string;
6
+ export declare const PACKAGE_ROOT: string;
7
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/util/paths.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,eAAO,MAAM,YAAY,QAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as path from 'path';
2
+ import { fileURLToPath } from 'url';
3
+ /**
4
+ * Get the package root directory.
5
+ * This works for both ESM and when compiled to dist/.
6
+ */
7
+ export function getPackageRoot() {
8
+ // When this file is in dist/util/paths.js, we go up 2 levels to get to the package root
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = path.dirname(__filename);
11
+ return path.resolve(__dirname, '../..');
12
+ }
13
+ export const PACKAGE_ROOT = getPackageRoot();
14
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/util/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,wFAAwF;IACxF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC"}