@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,529 @@
1
+ import { z } from 'zod';
2
+ import * as k8s from '@kubernetes/client-node';
3
+ import * as ts from 'typescript';
4
+ import { readFileSync, existsSync, readdirSync } from 'fs';
5
+ import { join } from 'path';
6
+ import * as os from 'os';
7
+ import { PACKAGE_ROOT } from '../../util/paths.js';
8
+ const SearchToolsInputSchema = z.object({
9
+ resourceType: z
10
+ .string()
11
+ .describe('Kubernetes resource type (e.g., "Pod", "Deployment", "Service", "ConfigMap")'),
12
+ action: z
13
+ .string()
14
+ .optional()
15
+ .describe('API action: list, read, create, delete, patch, replace, connect, get, watch. Omit to return all actions for the resource.'),
16
+ scope: z
17
+ .enum(['namespaced', 'cluster', 'all'])
18
+ .optional()
19
+ .default('all')
20
+ .describe('Resource scope: "namespaced" for namespace-scoped resources, "cluster" for cluster-wide resources, "all" for both'),
21
+ exclude: z
22
+ .object({
23
+ actions: z
24
+ .array(z.string())
25
+ .optional()
26
+ .describe('Actions to exclude (e.g., ["connect", "watch"]). Filters out methods with these action prefixes.'),
27
+ apiClasses: z
28
+ .array(z.string())
29
+ .optional()
30
+ .describe('API classes to exclude (e.g., ["CustomObjectsApi"]). Filters out methods from these API classes.'),
31
+ })
32
+ .optional()
33
+ .describe('Exclusion criteria. If both actions and apiClasses are specified, both must match (AND logic) to exclude a method.'),
34
+ limit: z
35
+ .number()
36
+ .int()
37
+ .positive()
38
+ .max(50)
39
+ .default(10)
40
+ .optional()
41
+ .describe('Maximum number of results to return'),
42
+ });
43
+ // Cache for Kubernetes API methods
44
+ let apiMethodsCache = null;
45
+ /**
46
+ * Extract type definition from a TypeScript file using TS compiler API
47
+ */
48
+ function extractTypeFromFile(typeName) {
49
+ const basePath = process.cwd();
50
+ const modelsPath = join(basePath, 'node_modules', '@kubernetes', 'client-node', 'dist', 'gen', 'models');
51
+ const filePath = join(modelsPath, `${typeName}.d.ts`);
52
+ if (!existsSync(filePath)) {
53
+ return null;
54
+ }
55
+ try {
56
+ const sourceCode = readFileSync(filePath, 'utf-8');
57
+ const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true);
58
+ let result = null;
59
+ function visit(node) {
60
+ if ((ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) &&
61
+ node.name && node.name.text === typeName) {
62
+ let def = `export class ${typeName} {\n`;
63
+ node.members?.forEach((member) => {
64
+ if (ts.isPropertySignature(member) || ts.isPropertyDeclaration(member)) {
65
+ if (member.name) {
66
+ const propName = member.name.getText(sourceFile).replace(/['"]/g, '');
67
+ const propType = member.type?.getText(sourceFile) || 'any';
68
+ const optional = member.questionToken ? '?' : '';
69
+ def += ` ${propName}${optional}: ${propType};\n`;
70
+ }
71
+ }
72
+ });
73
+ def += `}`;
74
+ result = def;
75
+ }
76
+ ts.forEachChild(node, visit);
77
+ }
78
+ visit(sourceFile);
79
+ return result;
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ /**
86
+ * Extract input and output type definitions for a method
87
+ */
88
+ function extractMethodTypeDefinitions(apiClass, methodName, resourceType) {
89
+ const result = {};
90
+ // Determine request type (for methods that take parameters)
91
+ if (methodName.includes('create') || methodName.includes('replace') || methodName.includes('patch')) {
92
+ const requestTypeName = `${apiClass}${methodName.charAt(0).toUpperCase() + methodName.slice(1)}Request`;
93
+ result.input = extractTypeFromFile(requestTypeName) || undefined;
94
+ }
95
+ // Determine response type based on method
96
+ if (methodName.startsWith('list')) {
97
+ const listTypeName = `V1${resourceType}List`;
98
+ result.output = extractTypeFromFile(listTypeName) || undefined;
99
+ }
100
+ else if (methodName.startsWith('read') || methodName.startsWith('create') || methodName.startsWith('replace')) {
101
+ const singleTypeName = `V1${resourceType}`;
102
+ result.output = extractTypeFromFile(singleTypeName) || undefined;
103
+ }
104
+ return result;
105
+ }
106
+ /**
107
+ * Extract all API methods from @kubernetes/client-node
108
+ */
109
+ function extractKubernetesApiMethods() {
110
+ if (apiMethodsCache) {
111
+ return apiMethodsCache;
112
+ }
113
+ const methods = [];
114
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
115
+ const apiClasses = [
116
+ { class: 'CoreV1Api', constructor: k8s.CoreV1Api, description: 'Core Kubernetes resources (Pods, Services, ConfigMaps, Secrets, Namespaces, Nodes, etc.)' },
117
+ { class: 'AppsV1Api', constructor: k8s.AppsV1Api, description: 'Applications API (Deployments, StatefulSets, DaemonSets, ReplicaSets)' },
118
+ { class: 'BatchV1Api', constructor: k8s.BatchV1Api, description: 'Batch operations (Jobs, CronJobs)' },
119
+ { class: 'NetworkingV1Api', constructor: k8s.NetworkingV1Api, description: 'Networking resources (Ingresses, NetworkPolicies, IngressClasses)' },
120
+ { class: 'RbacAuthorizationV1Api', constructor: k8s.RbacAuthorizationV1Api, description: 'RBAC (Roles, RoleBindings, ClusterRoles, ClusterRoleBindings, ServiceAccounts)' },
121
+ { class: 'StorageV1Api', constructor: k8s.StorageV1Api, description: 'Storage resources (StorageClasses, PersistentVolumes, VolumeAttachments)' },
122
+ { class: 'CustomObjectsApi', constructor: k8s.CustomObjectsApi, description: 'Custom Resource Definitions (CRDs) and custom resources' },
123
+ { class: 'ApiextensionsV1Api', constructor: k8s.ApiextensionsV1Api, description: 'API extensions (CustomResourceDefinitions for discovering and managing CRDs)' },
124
+ { class: 'AutoscalingV1Api', constructor: k8s.AutoscalingV1Api, description: 'Autoscaling resources (HorizontalPodAutoscalers)' },
125
+ { class: 'PolicyV1Api', constructor: k8s.PolicyV1Api, description: 'Policy resources (PodDisruptionBudgets)' },
126
+ ];
127
+ for (const { class: className, constructor: ApiClass, description: classDesc } of apiClasses) {
128
+ if (!ApiClass)
129
+ continue;
130
+ const proto = ApiClass.prototype;
131
+ const methodNames = Object.getOwnPropertyNames(proto);
132
+ for (const methodName of methodNames) {
133
+ if (methodName === 'constructor' || methodName.startsWith('_') ||
134
+ methodName === 'setDefaultAuthentication' || typeof proto[methodName] !== 'function') {
135
+ continue;
136
+ }
137
+ const resourceType = extractResourceType(methodName);
138
+ const description = generateDescriptionFromMethodName(methodName, className, classDesc);
139
+ const parameters = inferParameters(methodName, className);
140
+ const example = generateUsageExample(className, methodName, parameters);
141
+ const inputSchema = generateInputSchema(methodName, parameters);
142
+ const outputSchema = generateOutputSchema(methodName, resourceType);
143
+ const typeDefinitionFile = `node_modules/@kubernetes/client-node/dist/gen/apis/${className}.d.ts`;
144
+ const typeDefinitions = extractMethodTypeDefinitions(className, methodName, resourceType);
145
+ methods.push({
146
+ apiClass: className,
147
+ methodName,
148
+ resourceType,
149
+ description,
150
+ parameters,
151
+ returnType: 'Promise<any>',
152
+ example,
153
+ typeDefinitionFile,
154
+ inputSchema,
155
+ outputSchema,
156
+ typeDefinitions: Object.keys(typeDefinitions).length > 0 ? typeDefinitions : undefined,
157
+ });
158
+ }
159
+ }
160
+ apiMethodsCache = methods;
161
+ console.error(`Indexed ${methods.length} Kubernetes API methods`);
162
+ return methods;
163
+ }
164
+ function extractResourceType(methodName) {
165
+ let resource = methodName
166
+ .replace(/^(list|read|create|delete|patch|replace|connect|get|watch)/, '')
167
+ .replace(/^Namespaced/, '')
168
+ .replace(/^Cluster/, '')
169
+ .replace(/ForAllNamespaces$/, '')
170
+ .replace(/WithHttpInfo$/, '');
171
+ if (resource.startsWith('Collection')) {
172
+ resource = resource.replace(/^Collection/, '');
173
+ }
174
+ return resource || 'Resource';
175
+ }
176
+ function generateDescriptionFromMethodName(methodName, apiClass, classDesc) {
177
+ const words = methodName.replace(/([A-Z])/g, ' $1').toLowerCase().trim();
178
+ const resourceMatch = methodName.match(/(?:list|read|create|delete|patch|replace)(?:Namespaced)?(.+?)(?:ForAllNamespaces)?$/);
179
+ const resource = resourceMatch ? resourceMatch[1] : '';
180
+ let desc = words.charAt(0).toUpperCase() + words.slice(1);
181
+ if (resource)
182
+ desc += ` (${resource})`;
183
+ desc += ` - ${classDesc}`;
184
+ return desc;
185
+ }
186
+ function inferParameters(methodName, apiClass) {
187
+ const parameters = [];
188
+ // CustomObjectsApi has special parameter requirements
189
+ if (apiClass === 'CustomObjectsApi') {
190
+ if (methodName.includes('CustomObject')) {
191
+ parameters.push({ name: 'group', type: 'string', optional: false, description: 'API group (e.g., "webapp.example.com")' });
192
+ parameters.push({ name: 'version', type: 'string', optional: false, description: 'API version (e.g., "v1")' });
193
+ if (methodName.includes('Namespaced')) {
194
+ parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
195
+ }
196
+ parameters.push({ name: 'plural', type: 'string', optional: false, description: 'Resource plural name (e.g., "guestbooks")' });
197
+ if (methodName.includes('get') && !methodName.includes('list')) {
198
+ parameters.push({ name: 'name', type: 'string', optional: false, description: 'Resource name' });
199
+ }
200
+ if (methodName.includes('create') || methodName.includes('replace')) {
201
+ parameters.push({ name: 'body', type: 'object', optional: false, description: 'Custom resource object' });
202
+ }
203
+ }
204
+ return parameters;
205
+ }
206
+ // Standard API classes (CoreV1Api, AppsV1Api, etc.)
207
+ if (methodName.includes('Namespaced')) {
208
+ if (methodName.startsWith('list')) {
209
+ parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
210
+ }
211
+ else if (methodName.startsWith('read') || methodName.startsWith('delete') || methodName.startsWith('patch') || methodName.startsWith('replace')) {
212
+ parameters.push({ name: 'name', type: 'string', optional: false, description: 'Resource name' });
213
+ parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
214
+ }
215
+ else if (methodName.startsWith('create')) {
216
+ parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
217
+ parameters.push({ name: 'body', type: 'object', optional: false, description: 'Resource object' });
218
+ }
219
+ }
220
+ else if (!methodName.includes('Namespaced')) {
221
+ if (methodName.startsWith('read') || methodName.startsWith('delete') || methodName.startsWith('patch') || methodName.startsWith('replace')) {
222
+ parameters.push({ name: 'name', type: 'string', optional: false, description: 'Resource name' });
223
+ }
224
+ else if (methodName.startsWith('create')) {
225
+ parameters.push({ name: 'body', type: 'object', optional: false, description: 'Resource object' });
226
+ }
227
+ }
228
+ return parameters;
229
+ }
230
+ function generateInputSchema(methodName, parameters) {
231
+ const properties = {};
232
+ const required = [];
233
+ for (const param of parameters) {
234
+ properties[param.name] = {
235
+ type: param.type,
236
+ description: param.description,
237
+ required: !param.optional,
238
+ };
239
+ if (!param.optional) {
240
+ required.push(param.name);
241
+ }
242
+ }
243
+ // CRITICAL: Always accept an object, even if empty
244
+ const hasRequiredParams = required.length > 0;
245
+ return {
246
+ type: 'object',
247
+ properties,
248
+ required,
249
+ description: hasRequiredParams
250
+ ? `Parameters object. Required fields: ${required.join(', ')}`
251
+ : 'Empty object {}. This method takes no required parameters, but you MUST still pass an empty object.',
252
+ };
253
+ }
254
+ function generateOutputSchema(methodName, resourceType) {
255
+ const isList = methodName.startsWith('list');
256
+ const isRead = methodName.startsWith('read');
257
+ const isCreate = methodName.startsWith('create');
258
+ const isDelete = methodName.startsWith('delete');
259
+ let description = 'Response from Kubernetes API';
260
+ if (isList) {
261
+ description = `Response has 'items' array containing ${resourceType} resources. Access: response.items[]`;
262
+ }
263
+ else if (isRead || isCreate) {
264
+ description = `Response IS the ${resourceType} object. Access: response.metadata, response.spec, response.status`;
265
+ }
266
+ else if (isDelete) {
267
+ description = 'Response IS the status object. Access: response.status';
268
+ }
269
+ return {
270
+ type: 'object',
271
+ description,
272
+ properties: {
273
+ items: {
274
+ type: isList ? 'array' : 'undefined',
275
+ description: isList ? `Array of ${resourceType} objects` : 'Not applicable',
276
+ },
277
+ },
278
+ };
279
+ }
280
+ function generateUsageExample(apiClass, methodName, parameters) {
281
+ const apiVar = apiClass.charAt(0).toLowerCase() + apiClass.slice(1);
282
+ const requiredParams = parameters.filter(p => !p.optional);
283
+ let example = `// Initialize the Kubernetes client\nconst kc = new k8s.KubeConfig();\nkc.loadFromDefault();\nconst ${apiVar} = kc.makeApiClient(k8s.${apiClass});\n\n`;
284
+ let paramStr = '{}';
285
+ if (requiredParams.length > 0) {
286
+ const paramPairs = requiredParams.map(p => {
287
+ if (p.name === 'name')
288
+ return `name: 'my-resource'`;
289
+ if (p.name === 'namespace')
290
+ return `namespace: 'default'`;
291
+ if (p.name === 'body')
292
+ return `body: { /* resource object */ }`;
293
+ return `${p.name}: 'value'`;
294
+ });
295
+ paramStr = `{ ${paramPairs.join(', ')} }`;
296
+ }
297
+ example += `// IMPORTANT: Always pass object parameter (even if empty {})\nconst response = await ${apiVar}.${methodName}(${paramStr});\n\n`;
298
+ if (methodName.startsWith('list')) {
299
+ example += `// Response structure: response.items is an array\nconst items = response.items;\nconsole.log(\`Found \${items.length} resources\`);\n// Access: items[0].metadata.name`;
300
+ }
301
+ else if (methodName.startsWith('read') || methodName.startsWith('get')) {
302
+ example += `// Response IS the resource object\nconsole.log(\`Resource: \${response.metadata?.name}\`);\n// Access: response.spec, response.status, etc.`;
303
+ }
304
+ else if (methodName.startsWith('create')) {
305
+ example += `// Response IS the created resource\nconsole.log(\`Created: \${response.metadata?.name}\`);`;
306
+ }
307
+ else if (methodName.startsWith('delete')) {
308
+ example += `// Response IS the status object\nconsole.log(\`Status: \${response.status}\`);`;
309
+ }
310
+ else {
311
+ example += `// Response contains the result directly\nconsole.log(response);`;
312
+ }
313
+ return example;
314
+ }
315
+ /**
316
+ * Match methods based on structured parameters: resourceType, action, scope, exclude
317
+ */
318
+ function matchMethods(resourceType, action, scope, exclude, methods, limit) {
319
+ const lowerResourceType = resourceType.toLowerCase();
320
+ // Filter methods based on criteria
321
+ const filtered = methods.filter(method => {
322
+ const lowerMethod = method.methodName.toLowerCase();
323
+ const lowerResource = method.resourceType.toLowerCase();
324
+ // 1. Exclude WithHttpInfo variants (duplicates)
325
+ if (lowerMethod.includes('withhttpinfo')) {
326
+ return false;
327
+ }
328
+ // 2. Apply exclusion criteria
329
+ if (exclude) {
330
+ const hasActions = exclude.actions && exclude.actions.length > 0;
331
+ const hasApiClasses = exclude.apiClasses && exclude.apiClasses.length > 0;
332
+ if (hasActions || hasApiClasses) {
333
+ const matchesActionExclusion = hasActions &&
334
+ exclude.actions.some(a => lowerMethod.startsWith(a.toLowerCase()) || lowerMethod.includes(a.toLowerCase()));
335
+ const matchesApiClassExclusion = hasApiClasses &&
336
+ exclude.apiClasses.includes(method.apiClass);
337
+ // If both specified, must match both (AND logic) to be excluded
338
+ if (hasActions && hasApiClasses) {
339
+ if (matchesActionExclusion && matchesApiClassExclusion) {
340
+ return false;
341
+ }
342
+ }
343
+ // If only actions specified, exclude if action matches
344
+ else if (hasActions && matchesActionExclusion) {
345
+ return false;
346
+ }
347
+ // If only apiClasses specified, exclude if apiClass matches
348
+ else if (hasApiClasses && matchesApiClassExclusion) {
349
+ return false;
350
+ }
351
+ }
352
+ }
353
+ // 3. Match resource type (case-insensitive)
354
+ // Support both exact match and partial match (e.g., "pod" matches "Pod", "PodTemplate")
355
+ const resourceMatches = lowerResource === lowerResourceType ||
356
+ lowerResource === lowerResourceType.replace(/s$/, '') || // handle plurals
357
+ lowerResourceType === lowerResource.replace(/s$/, '') ||
358
+ lowerResource.includes(lowerResourceType) ||
359
+ lowerResourceType.includes(lowerResource);
360
+ if (!resourceMatches) {
361
+ return false;
362
+ }
363
+ // 4. Match action if provided
364
+ if (action) {
365
+ const lowerAction = action.toLowerCase();
366
+ // Flexible matching: method can start with action or contain it early (for compound actions)
367
+ // e.g., "delete" matches both "deleteNamespacedPod" and "deleteCollectionNamespacedPod"
368
+ const actionMatches = lowerMethod.startsWith(lowerAction) ||
369
+ lowerMethod.includes(lowerAction);
370
+ if (!actionMatches) {
371
+ return false;
372
+ }
373
+ }
374
+ // 5. Match scope
375
+ const hasNamespaced = lowerMethod.includes('namespaced');
376
+ const hasForAllNamespaces = lowerMethod.includes('forallnamespaces');
377
+ if (scope === 'namespaced' && !hasNamespaced) {
378
+ return false;
379
+ }
380
+ if (scope === 'cluster' && hasNamespaced && !hasForAllNamespaces) {
381
+ return false;
382
+ }
383
+ // scope === 'all' means no filtering
384
+ return true;
385
+ });
386
+ // Sort: prefer exact resource matches, then by method name alphabetically
387
+ const sorted = filtered.sort((a, b) => {
388
+ const aExact = a.resourceType.toLowerCase() === lowerResourceType;
389
+ const bExact = b.resourceType.toLowerCase() === lowerResourceType;
390
+ if (aExact && !bExact)
391
+ return -1;
392
+ if (!aExact && bExact)
393
+ return 1;
394
+ // Both exact or both partial: sort alphabetically
395
+ return a.methodName.localeCompare(b.methodName);
396
+ });
397
+ return sorted.slice(0, limit);
398
+ }
399
+ export const searchToolsTool = {
400
+ name: 'kubernetes.searchTools',
401
+ description: 'Find Kubernetes API methods by resource type and action. ' +
402
+ 'Returns API methods from @kubernetes/client-node that you can use directly in your scripts. ' +
403
+ 'Parameters: resourceType (e.g., "Pod", "Deployment"), action (optional: list, read, create, delete, patch, replace), scope (namespaced/cluster/all), exclude (optional: filter out by actions and/or apiClasses). ' +
404
+ 'Available actions: list (list resources), read (get single resource), create (create resource), delete (delete resource), patch (update resource), replace (replace resource), connect (exec/logs/proxy), get, watch. ' +
405
+ 'COMMON SEARCH PATTERNS: (1) Pod logs: use resourceType "Log" or "PodLog" (NOT "Pod" with action "connect"). Example: { resourceType: "Log" } returns CoreV1Api.readNamespacedPodLog. ' +
406
+ '(2) Pod exec/attach: use { resourceType: "Pod", action: "connect" } returns connectGetNamespacedPodExec, connectPostNamespacedPodAttach. ' +
407
+ '(3) Pod eviction (drain nodes): use { resourceType: "Eviction" } or { resourceType: "PodEviction" } returns CoreV1Api.createNamespacedPodEviction. ' +
408
+ '(4) Binding pods to nodes: use { resourceType: "Binding" } or { resourceType: "PodBinding" } returns CoreV1Api.createNamespacedPodBinding. ' +
409
+ '(5) Service account tokens: use { resourceType: "ServiceAccountToken" } returns CoreV1Api.createNamespacedServiceAccountToken. ' +
410
+ '(6) Cluster health: use { resourceType: "ComponentStatus" } returns CoreV1Api.listComponentStatus. ' +
411
+ '(7) Status subresources: use full resource name like { resourceType: "DeploymentStatus" }. ' +
412
+ '(8) Scale subresources: use full resource name like { resourceType: "DeploymentScale" }. ' +
413
+ 'TIP: Use the exclude parameter to get more precise results by filtering out unwanted methods. ' +
414
+ 'Exclude examples: (1) Only action: { actions: ["delete"] } excludes all delete methods. ' +
415
+ '(2) Multiple actions: { actions: ["delete", "create"] } excludes both delete and create methods. ' +
416
+ '(3) By API class: { apiClasses: ["CoreV1Api"] } excludes all CoreV1Api methods. ' +
417
+ '(4) Both action and apiClass (AND logic): { actions: ["delete"], apiClasses: ["CoreV1Api"] } excludes only delete methods from CoreV1Api, keeping other CoreV1Api methods and delete methods from other API classes. ' +
418
+ 'Exclude is especially useful when searching broad resource types (e.g., "Pod" returns methods from CoreV1Api, AutoscalingV1Api, PolicyV1Api). ' +
419
+ 'CUSTOM SCRIPTS: Before writing new scripts, check scripts/cache/ directory for existing implementations. ' +
420
+ 'When creating custom scripts in scripts/cache/, follow Kubernetes library naming pattern to make them easily discoverable: ' +
421
+ 'use action-scope-resource format (e.g., "list-namespaced-pod", "read-namespaced-pod-log", "create-namespaced-deployment"). ' +
422
+ 'Example: For listing etcd pods in kube-system, name it "list-namespaced-etcd-pods.ts" NOT "get-etcd-pods.ts". ' +
423
+ 'This naming convention makes scripts searchable and helps avoid duplicates.',
424
+ schema: SearchToolsInputSchema,
425
+ async execute(input) {
426
+ const { resourceType, action, scope = 'all', exclude, limit = 10 } = input;
427
+ const methods = extractKubernetesApiMethods();
428
+ const results = matchMethods(resourceType, action, scope, exclude, methods, limit);
429
+ // Define paths early so they can be used in summary
430
+ const scriptsDirectory = join(os.homedir(), '.prodisco', 'scripts', 'cache');
431
+ // List existing cached scripts
432
+ let cachedScripts = [];
433
+ try {
434
+ if (existsSync(scriptsDirectory)) {
435
+ cachedScripts = readdirSync(scriptsDirectory)
436
+ .filter(f => f.endsWith('.ts'))
437
+ .sort();
438
+ }
439
+ }
440
+ catch {
441
+ // Ignore errors if directory doesn't exist or can't be read
442
+ }
443
+ // Structured output - clear and unambiguous
444
+ let summary = `Found ${results.length} method(s) for resource "${resourceType}"`;
445
+ if (action)
446
+ summary += `, action "${action}"`;
447
+ if (scope !== 'all')
448
+ summary += `, scope "${scope}"`;
449
+ if (exclude) {
450
+ if (exclude.actions && exclude.actions.length > 0) {
451
+ summary += `, excluding actions: [${exclude.actions.join(', ')}]`;
452
+ }
453
+ if (exclude.apiClasses && exclude.apiClasses.length > 0) {
454
+ summary += `, excluding API classes: [${exclude.apiClasses.join(', ')}]`;
455
+ }
456
+ }
457
+ summary += '\n\n';
458
+ // Show existing cached scripts if any
459
+ if (cachedScripts.length > 0) {
460
+ summary += `📝 EXISTING CACHED SCRIPTS (${cachedScripts.length}):\n`;
461
+ cachedScripts.forEach(script => {
462
+ summary += ` - ${script}\n`;
463
+ });
464
+ summary += ` (Location: ${scriptsDirectory})\n\n`;
465
+ }
466
+ summary += `Write scripts to: ${scriptsDirectory}/<name>.ts and run with: npx tsx ${scriptsDirectory}/<name>.ts\n`;
467
+ summary += `IMPORTANT: Check existing cached scripts above before creating new ones to avoid duplicates\n`;
468
+ summary += `Custom script naming convention: Use k8s library pattern (e.g., list-namespaced-pod, read-namespaced-pod-log)\n`;
469
+ summary += `For detailed type definitions: use kubernetes.getTypeDefinition tool\n\n`;
470
+ results.forEach((method, i) => {
471
+ summary += `${i + 1}. ${method.apiClass}.${method.methodName}\n`;
472
+ // Method arguments
473
+ if (method.inputSchema.required.length > 0) {
474
+ const params = method.inputSchema.required.map(r => `${r}: "${method.inputSchema.properties[r]?.type || 'string'}"`).join(', ');
475
+ summary += ` method_args: { ${params} }\n`;
476
+ }
477
+ else {
478
+ summary += ` method_args: {} (empty object - required)\n`;
479
+ }
480
+ // Return values
481
+ const isList = method.methodName.startsWith('list');
482
+ if (isList) {
483
+ summary += ` return_values: response.items (array of ${method.resourceType})\n`;
484
+ }
485
+ else {
486
+ summary += ` return_values: response (${method.resourceType} object)\n`;
487
+ }
488
+ // Include inline type definitions if available (brief overview)
489
+ if (method.typeDefinitions && method.typeDefinitions.output) {
490
+ const lines = method.typeDefinitions.output.split('\n');
491
+ const typeName = lines[0]?.trim() || 'unknown';
492
+ // Extract key properties (just first 2-3)
493
+ const propertyLines = lines.slice(1, 4).filter(l => l.trim() && !l.includes('}'));
494
+ summary += ` return_types: ${typeName}\n`;
495
+ if (propertyLines.length > 0) {
496
+ summary += ` key properties: ${propertyLines.map(l => l.trim()).join(', ')}\n`;
497
+ }
498
+ summary += ` (use kubernetes.getTypeDefinition for complete type details)\n`;
499
+ }
500
+ summary += `\n`;
501
+ });
502
+ if (results.length === 0) {
503
+ summary += `No methods found. Try:\n`;
504
+ summary += `- Different resourceType (e.g., "Pod", "Deployment", "Service")\n`;
505
+ summary += `- Omit action to see all available methods\n`;
506
+ summary += `- Use scope: "all" to see both namespaced and cluster methods\n`;
507
+ }
508
+ const usage = 'USAGE:\n' +
509
+ '- All methods require object parameter: await api.method({ param: value })\n' +
510
+ '- No required params: await api.method({})\n' +
511
+ '- List operations return: response.items (array)\n' +
512
+ '- Single resource operations return: response (object)\n' +
513
+ `- Write scripts to: ${scriptsDirectory}/<yourscript>.ts\n` +
514
+ `- Run scripts with: npx tsx ${scriptsDirectory}/<yourscript>.ts\n` +
515
+ `- Import dependencies from: ${PACKAGE_ROOT}/node_modules/@kubernetes/client-node`;
516
+ return {
517
+ summary,
518
+ tools: results,
519
+ totalMatches: results.length,
520
+ usage,
521
+ paths: {
522
+ scriptsDirectory,
523
+ packageDirectory: PACKAGE_ROOT,
524
+ },
525
+ cachedScripts,
526
+ };
527
+ },
528
+ };
529
+ //# sourceMappingURL=searchTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchTools.js","sourceRoot":"","sources":["../../../src/tools/kubernetes/searchTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import type { ToolDefinition } from '../types.js';
3
+ declare const GetTypeDefinitionInputSchema: z.ZodObject<{
4
+ types: z.ZodArray<z.ZodString, "many">;
5
+ depth: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ types: string[];
8
+ depth?: number | undefined;
9
+ }, {
10
+ types: string[];
11
+ depth?: number | undefined;
12
+ }>;
13
+ type TypeDefinitionResult = {
14
+ summary: string;
15
+ types: Record<string, {
16
+ name: string;
17
+ definition: string;
18
+ file: string;
19
+ nestedTypes: string[];
20
+ }>;
21
+ };
22
+ export declare const getTypeDefinitionTool: ToolDefinition<TypeDefinitionResult, typeof GetTypeDefinitionInputSchema>;
23
+ export {};
24
+ //# sourceMappingURL=typeDefinitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeDefinitions.d.ts","sourceRoot":"","sources":["../../../src/tools/kubernetes/typeDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,QAAA,MAAM,4BAA4B;;;;;;;;;EAYhC,CAAC;AAEH,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;CACJ,CAAC;AA4dF,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,oBAAoB,EAAE,OAAO,4BAA4B,CAmJ3G,CAAC"}