@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.
- package/LICENSE +21 -0
- package/README.md +226 -0
- package/dist/codegen/generateTypes.d.ts +8 -0
- package/dist/codegen/generateTypes.d.ts.map +1 -0
- package/dist/codegen/generateTypes.js +96 -0
- package/dist/codegen/generateTypes.js.map +1 -0
- package/dist/codegen/interfaceGenerator.d.ts +9 -0
- package/dist/codegen/interfaceGenerator.d.ts.map +1 -0
- package/dist/codegen/interfaceGenerator.js +185 -0
- package/dist/codegen/interfaceGenerator.js.map +1 -0
- package/dist/codegen/toolMapping.d.ts +11 -0
- package/dist/codegen/toolMapping.d.ts.map +1 -0
- package/dist/codegen/toolMapping.js +78 -0
- package/dist/codegen/toolMapping.js.map +1 -0
- package/dist/codegen/typeExtractor.d.ts +23 -0
- package/dist/codegen/typeExtractor.d.ts.map +1 -0
- package/dist/codegen/typeExtractor.js +112 -0
- package/dist/codegen/typeExtractor.js.map +1 -0
- package/dist/kube/client.d.ts +37 -0
- package/dist/kube/client.d.ts.map +1 -0
- package/dist/kube/client.js +161 -0
- package/dist/kube/client.js.map +1 -0
- package/dist/kube/types.d.ts +27 -0
- package/dist/kube/types.d.ts.map +1 -0
- package/dist/kube/types.js +2 -0
- package/dist/kube/types.js.map +1 -0
- package/dist/resources/filesystem.d.ts +15 -0
- package/dist/resources/filesystem.d.ts.map +1 -0
- package/dist/resources/filesystem.js +54 -0
- package/dist/resources/filesystem.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +127 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/kubernetes/index.d.ts +5 -0
- package/dist/tools/kubernetes/index.d.ts.map +1 -0
- package/dist/tools/kubernetes/index.js +6 -0
- package/dist/tools/kubernetes/index.js.map +1 -0
- package/dist/tools/kubernetes/metadata.d.ts +110 -0
- package/dist/tools/kubernetes/metadata.d.ts.map +1 -0
- package/dist/tools/kubernetes/metadata.js +19 -0
- package/dist/tools/kubernetes/metadata.js.map +1 -0
- package/dist/tools/kubernetes/searchTools-old.d.ts +35 -0
- package/dist/tools/kubernetes/searchTools-old.d.ts.map +1 -0
- package/dist/tools/kubernetes/searchTools-old.js +414 -0
- package/dist/tools/kubernetes/searchTools-old.js.map +1 -0
- package/dist/tools/kubernetes/searchTools-v2.d.ts +35 -0
- package/dist/tools/kubernetes/searchTools-v2.d.ts.map +1 -0
- package/dist/tools/kubernetes/searchTools-v2.js +269 -0
- package/dist/tools/kubernetes/searchTools-v2.js.map +1 -0
- package/dist/tools/kubernetes/searchTools.d.ts +87 -0
- package/dist/tools/kubernetes/searchTools.d.ts.map +1 -0
- package/dist/tools/kubernetes/searchTools.js +529 -0
- package/dist/tools/kubernetes/searchTools.js.map +1 -0
- package/dist/tools/kubernetes/typeDefinitions.d.ts +24 -0
- package/dist/tools/kubernetes/typeDefinitions.d.ts.map +1 -0
- package/dist/tools/kubernetes/typeDefinitions.js +518 -0
- package/dist/tools/kubernetes/typeDefinitions.js.map +1 -0
- package/dist/tools/types.d.ts +10 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/util/manifest.d.ts +5 -0
- package/dist/util/manifest.d.ts.map +1 -0
- package/dist/util/manifest.js +31 -0
- package/dist/util/manifest.js.map +1 -0
- package/dist/util/paths.d.ts +7 -0
- package/dist/util/paths.d.ts.map +1 -0
- package/dist/util/paths.js +14 -0
- package/dist/util/paths.js.map +1 -0
- package/dist/util/summary.d.ts +403 -0
- package/dist/util/summary.d.ts.map +1 -0
- package/dist/util/summary.js +211 -0
- package/dist/util/summary.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
import Fuse from 'fuse.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import * as k8s from '@kubernetes/client-node';
|
|
4
|
+
const SearchToolsInputSchema = z.object({
|
|
5
|
+
query: z
|
|
6
|
+
.string()
|
|
7
|
+
.describe('Search query to find Kubernetes API methods (e.g., "pod", "deployment", "create namespace")'),
|
|
8
|
+
limit: z
|
|
9
|
+
.number()
|
|
10
|
+
.int()
|
|
11
|
+
.positive()
|
|
12
|
+
.max(50)
|
|
13
|
+
.default(20)
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Maximum number of results to return'),
|
|
16
|
+
});
|
|
17
|
+
// Cache for Kubernetes API methods
|
|
18
|
+
let apiMethodsCache = null;
|
|
19
|
+
let fuseIndex = null;
|
|
20
|
+
/**
|
|
21
|
+
* Extract all API methods from @kubernetes/client-node using runtime reflection
|
|
22
|
+
*/
|
|
23
|
+
function extractKubernetesApiMethods() {
|
|
24
|
+
if (apiMethodsCache) {
|
|
25
|
+
return apiMethodsCache;
|
|
26
|
+
}
|
|
27
|
+
const methods = [];
|
|
28
|
+
// API classes to index with their constructors and descriptions
|
|
29
|
+
const apiClasses = [
|
|
30
|
+
{
|
|
31
|
+
class: 'CoreV1Api',
|
|
32
|
+
constructor: k8s.CoreV1Api,
|
|
33
|
+
description: 'Core Kubernetes resources (Pods, Services, ConfigMaps, Secrets, Namespaces, Nodes, etc.)'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
class: 'AppsV1Api',
|
|
37
|
+
constructor: k8s.AppsV1Api,
|
|
38
|
+
description: 'Applications API (Deployments, StatefulSets, DaemonSets, ReplicaSets)'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
class: 'BatchV1Api',
|
|
42
|
+
constructor: k8s.BatchV1Api,
|
|
43
|
+
description: 'Batch operations (Jobs, CronJobs)'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
class: 'NetworkingV1Api',
|
|
47
|
+
constructor: k8s.NetworkingV1Api,
|
|
48
|
+
description: 'Networking resources (Ingresses, NetworkPolicies, IngressClasses)'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
class: 'RbacAuthorizationV1Api',
|
|
52
|
+
constructor: k8s.RbacAuthorizationV1Api,
|
|
53
|
+
description: 'RBAC (Roles, RoleBindings, ClusterRoles, ClusterRoleBindings, ServiceAccounts)'
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
class: 'StorageV1Api',
|
|
57
|
+
constructor: k8s.StorageV1Api,
|
|
58
|
+
description: 'Storage resources (StorageClasses, PersistentVolumes, VolumeAttachments)'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
class: 'CustomObjectsApi',
|
|
62
|
+
constructor: k8s.CustomObjectsApi,
|
|
63
|
+
description: 'Custom Resource Definitions (CRDs) and custom resources'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
class: 'AutoscalingV1Api',
|
|
67
|
+
constructor: k8s.AutoscalingV1Api,
|
|
68
|
+
description: 'Autoscaling resources (HorizontalPodAutoscalers)'
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
class: 'PolicyV1Api',
|
|
72
|
+
constructor: k8s.PolicyV1Api,
|
|
73
|
+
description: 'Policy resources (PodDisruptionBudgets)'
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
for (const { class: className, constructor: ApiClass, description: classDesc } of apiClasses) {
|
|
77
|
+
if (!ApiClass) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// Get all method names from the prototype
|
|
81
|
+
const proto = ApiClass.prototype;
|
|
82
|
+
const methodNames = Object.getOwnPropertyNames(proto);
|
|
83
|
+
for (const methodName of methodNames) {
|
|
84
|
+
// Skip constructor and internal methods
|
|
85
|
+
if (methodName === 'constructor' ||
|
|
86
|
+
methodName.startsWith('_') ||
|
|
87
|
+
methodName === 'setDefaultAuthentication' ||
|
|
88
|
+
typeof proto[methodName] !== 'function') {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
// Extract resource type from method name
|
|
92
|
+
const resourceType = extractResourceType(methodName);
|
|
93
|
+
// Generate a human-readable description from the method name
|
|
94
|
+
const description = generateDescriptionFromMethodName(methodName, className, classDesc);
|
|
95
|
+
// Analyze the method to extract parameter info
|
|
96
|
+
const func = proto[methodName];
|
|
97
|
+
const paramCount = func.length;
|
|
98
|
+
// Common parameter patterns for Kubernetes APIs
|
|
99
|
+
const parameters = [];
|
|
100
|
+
// Most K8s methods follow patterns, we'll infer parameters
|
|
101
|
+
if (methodName.includes('Namespaced')) {
|
|
102
|
+
if (methodName.startsWith('list')) {
|
|
103
|
+
parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
|
|
104
|
+
}
|
|
105
|
+
else if (methodName.startsWith('read') || methodName.startsWith('delete') || methodName.startsWith('patch') || methodName.startsWith('replace')) {
|
|
106
|
+
parameters.push({ name: 'name', type: 'string', optional: false, description: 'Resource name' });
|
|
107
|
+
parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
|
|
108
|
+
}
|
|
109
|
+
else if (methodName.startsWith('create')) {
|
|
110
|
+
parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
|
|
111
|
+
parameters.push({ name: 'body', type: 'object', optional: false, description: 'Resource object' });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (!methodName.includes('Namespaced')) {
|
|
115
|
+
if (methodName.startsWith('list')) {
|
|
116
|
+
// List all
|
|
117
|
+
}
|
|
118
|
+
else if (methodName.startsWith('read') || methodName.startsWith('delete') || methodName.startsWith('patch') || methodName.startsWith('replace')) {
|
|
119
|
+
parameters.push({ name: 'name', type: 'string', optional: false, description: 'Resource name' });
|
|
120
|
+
}
|
|
121
|
+
else if (methodName.startsWith('create')) {
|
|
122
|
+
parameters.push({ name: 'body', type: 'object', optional: false, description: 'Resource object' });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Generate example usage
|
|
126
|
+
const example = generateUsageExample(className, methodName, parameters);
|
|
127
|
+
methods.push({
|
|
128
|
+
apiClass: className,
|
|
129
|
+
methodName,
|
|
130
|
+
resourceType,
|
|
131
|
+
description,
|
|
132
|
+
parameters,
|
|
133
|
+
returnType: 'Promise<any>',
|
|
134
|
+
example,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
apiMethodsCache = methods;
|
|
139
|
+
console.error(`ā
Indexed ${methods.length} Kubernetes API methods`);
|
|
140
|
+
return methods;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Extract the primary resource type from a method name
|
|
144
|
+
* e.g., "listNamespacedPod" -> "Pod"
|
|
145
|
+
* "createDeployment" -> "Deployment"
|
|
146
|
+
* "listPodDisruptionBudget" -> "PodDisruptionBudget"
|
|
147
|
+
*/
|
|
148
|
+
function extractResourceType(methodName) {
|
|
149
|
+
// Remove action prefixes
|
|
150
|
+
let resource = methodName
|
|
151
|
+
.replace(/^(list|read|create|delete|patch|replace|connect|get|watch)/, '')
|
|
152
|
+
.replace(/^Namespaced/, '')
|
|
153
|
+
.replace(/^Cluster/, '')
|
|
154
|
+
.replace(/ForAllNamespaces$/, '')
|
|
155
|
+
.replace(/WithHttpInfo$/, '');
|
|
156
|
+
// Handle special cases
|
|
157
|
+
if (resource.startsWith('Collection')) {
|
|
158
|
+
resource = resource.replace(/^Collection/, '');
|
|
159
|
+
}
|
|
160
|
+
return resource || 'Resource';
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Generate human-readable description from method name
|
|
164
|
+
*/
|
|
165
|
+
function generateDescriptionFromMethodName(methodName, apiClass, classDesc) {
|
|
166
|
+
// Convert camelCase to words
|
|
167
|
+
const words = methodName.replace(/([A-Z])/g, ' $1').toLowerCase().trim();
|
|
168
|
+
// Extract resource type from method name
|
|
169
|
+
const resourceMatch = methodName.match(/(?:list|read|create|delete|patch|replace)(?:Namespaced)?(.+?)(?:ForAllNamespaces)?$/);
|
|
170
|
+
const resource = resourceMatch ? resourceMatch[1] : '';
|
|
171
|
+
// Build description
|
|
172
|
+
let desc = words.charAt(0).toUpperCase() + words.slice(1);
|
|
173
|
+
if (resource) {
|
|
174
|
+
desc += ` (${resource})`;
|
|
175
|
+
}
|
|
176
|
+
desc += ` - ${classDesc}`;
|
|
177
|
+
return desc;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Generate usage example for an API method
|
|
181
|
+
*/
|
|
182
|
+
function generateUsageExample(apiClass, methodName, parameters) {
|
|
183
|
+
const apiVar = apiClass.charAt(0).toLowerCase() + apiClass.slice(1);
|
|
184
|
+
const requiredParams = parameters.filter(p => !p.optional);
|
|
185
|
+
let example = `// Initialize the Kubernetes client\nconst kc = new k8s.KubeConfig();\nkc.loadFromDefault();\nconst ${apiVar} = kc.makeApiClient(k8s.${apiClass});\n\n`;
|
|
186
|
+
// Generate parameter object (K8s client uses object params, not positional)
|
|
187
|
+
// IMPORTANT: Always pass an object, even if empty!
|
|
188
|
+
let paramStr = '{}';
|
|
189
|
+
if (requiredParams.length > 0) {
|
|
190
|
+
const paramPairs = requiredParams.map(p => {
|
|
191
|
+
if (p.name === 'name')
|
|
192
|
+
return `name: 'my-resource'`;
|
|
193
|
+
if (p.name === 'namespace')
|
|
194
|
+
return `namespace: 'default'`;
|
|
195
|
+
if (p.name === 'body')
|
|
196
|
+
return `body: { /* resource object */ }`;
|
|
197
|
+
if (p.type.includes('string'))
|
|
198
|
+
return `${p.name}: 'value'`;
|
|
199
|
+
return `${p.name}: undefined`;
|
|
200
|
+
});
|
|
201
|
+
paramStr = `{ ${paramPairs.join(', ')} }`;
|
|
202
|
+
}
|
|
203
|
+
// Add the API call with object parameters
|
|
204
|
+
example += `// Call the API method (ALWAYS uses object parameters - even if empty {})\nconst response = await ${apiVar}.${methodName}(${paramStr});\n\n`;
|
|
205
|
+
// Add response handling based on method type
|
|
206
|
+
if (methodName.startsWith('list')) {
|
|
207
|
+
example += `// Response structure:\n// response.body.items = array of resources\n// response.body.metadata = list metadata\nconst items = response.body.items;\nconsole.log(\`Found \${items.length} resources\`);`;
|
|
208
|
+
}
|
|
209
|
+
else if (methodName.startsWith('read') || methodName.startsWith('get')) {
|
|
210
|
+
example += `// Response structure:\n// response.body = single resource object\nconst resource = response.body;\nconsole.log(\`Resource name: \${resource.metadata?.name}\`);`;
|
|
211
|
+
}
|
|
212
|
+
else if (methodName.startsWith('create')) {
|
|
213
|
+
example += `// Response structure:\n// response.body = created resource\nconst created = response.body;\nconsole.log(\`Created: \${created.metadata?.name}\`);`;
|
|
214
|
+
}
|
|
215
|
+
else if (methodName.startsWith('delete')) {
|
|
216
|
+
example += `// Response structure:\n// response.body = V1Status object with deletion info\nconst status = response.body;\nconsole.log(\`Status: \${status.status}\`);`;
|
|
217
|
+
}
|
|
218
|
+
else if (methodName.startsWith('patch') || methodName.startsWith('replace')) {
|
|
219
|
+
example += `// Response structure:\n// response.body = updated resource\nconst updated = response.body;\nconsole.log(\`Updated: \${updated.metadata?.name}\`);`;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
example += `// Response: response.body contains the result\nconsole.log(response.body);`;
|
|
223
|
+
}
|
|
224
|
+
return example;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Get or create Fuse.js search index
|
|
228
|
+
*/
|
|
229
|
+
function getFuseIndex() {
|
|
230
|
+
if (fuseIndex) {
|
|
231
|
+
return fuseIndex;
|
|
232
|
+
}
|
|
233
|
+
const methods = extractKubernetesApiMethods();
|
|
234
|
+
fuseIndex = new Fuse(methods, {
|
|
235
|
+
keys: [
|
|
236
|
+
{ name: 'resourceType', weight: 4 }, // HIGHEST - "Pod" vs "PodDisruptionBudget"
|
|
237
|
+
{ name: 'methodName', weight: 3 }, // Method name is very important
|
|
238
|
+
{ name: 'apiClass', weight: 1.5 }, // API class (CoreV1Api, etc.)
|
|
239
|
+
{ name: 'description', weight: 1 }, // Description has lowest weight
|
|
240
|
+
],
|
|
241
|
+
threshold: 0.6, // More lenient to capture more results (we'll re-rank them)
|
|
242
|
+
includeScore: true,
|
|
243
|
+
ignoreLocation: true, // Don't care about position in string
|
|
244
|
+
minMatchCharLength: 2, // Minimum 2 chars to match
|
|
245
|
+
distance: 200, // Very lenient distance for compound words
|
|
246
|
+
useExtendedSearch: false,
|
|
247
|
+
});
|
|
248
|
+
return fuseIndex;
|
|
249
|
+
}
|
|
250
|
+
export const searchToolsTool = {
|
|
251
|
+
name: 'kubernetes.searchTools',
|
|
252
|
+
description: 'Search the Kubernetes API to find methods for working with resources. ' +
|
|
253
|
+
'Returns API methods from @kubernetes/client-node that you can use directly in your scripts. ' +
|
|
254
|
+
'Example queries: "list pods", "create deployment", "delete service", "get namespace status".',
|
|
255
|
+
schema: SearchToolsInputSchema,
|
|
256
|
+
async execute(input) {
|
|
257
|
+
const { query, limit = 20 } = input;
|
|
258
|
+
const fuse = getFuseIndex();
|
|
259
|
+
const searchResults = fuse.search(query, { limit: Math.max(limit * 50, 100) }); // Get many results for re-ranking
|
|
260
|
+
// Parse query to extract action and resource
|
|
261
|
+
const lowerQuery = query.toLowerCase();
|
|
262
|
+
const queryWords = lowerQuery.split(/\s+/);
|
|
263
|
+
// Map common action synonyms to Kubernetes method prefixes
|
|
264
|
+
const actionMap = {
|
|
265
|
+
'get': ['read', 'get'],
|
|
266
|
+
'read': ['read', 'get'],
|
|
267
|
+
'fetch': ['read', 'get', 'list'],
|
|
268
|
+
'list': ['list'],
|
|
269
|
+
'show': ['list', 'read'],
|
|
270
|
+
'create': ['create'],
|
|
271
|
+
'make': ['create'],
|
|
272
|
+
'delete': ['delete'],
|
|
273
|
+
'remove': ['delete'],
|
|
274
|
+
'update': ['patch', 'replace'],
|
|
275
|
+
'patch': ['patch'],
|
|
276
|
+
'replace': ['replace'],
|
|
277
|
+
'edit': ['patch', 'replace'],
|
|
278
|
+
};
|
|
279
|
+
// Extract action from query
|
|
280
|
+
let expectedActions = [];
|
|
281
|
+
for (const word of queryWords) {
|
|
282
|
+
if (actionMap[word]) {
|
|
283
|
+
expectedActions = actionMap[word];
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// Extract resource names from query (with singular/plural handling)
|
|
288
|
+
const resourceWords = queryWords.flatMap(word => {
|
|
289
|
+
// Remove trailing 's' for plural
|
|
290
|
+
const singular = word.replace(/s$/, '');
|
|
291
|
+
return [word, singular];
|
|
292
|
+
});
|
|
293
|
+
// Re-rank results with much better logic
|
|
294
|
+
const rerankedResults = searchResults
|
|
295
|
+
.map(result => {
|
|
296
|
+
const method = result.item;
|
|
297
|
+
const lowerResource = method.resourceType.toLowerCase();
|
|
298
|
+
const lowerMethodName = method.methodName.toLowerCase();
|
|
299
|
+
// Start with base fuse score (lower is better)
|
|
300
|
+
let score = result.score || 0;
|
|
301
|
+
// Factor 1: Resource type matching (most important)
|
|
302
|
+
const resourceBase = lowerResource.replace(/s$/, '');
|
|
303
|
+
// Check for EXACT match (e.g., "Deployment" === "deployment")
|
|
304
|
+
const isExactMatch = resourceWords.some(word => word === lowerResource || word === resourceBase);
|
|
305
|
+
// Count how many query words (including non-action words) are in the resource
|
|
306
|
+
// e.g., "get pod logs" ā "pod" and "logs" both in "PodLog" = 2 matches
|
|
307
|
+
const allNonActionWords = queryWords.filter(word => !actionMap[word] && word.length > 2);
|
|
308
|
+
let resourceWordMatchCount = 0;
|
|
309
|
+
for (const word of allNonActionWords) {
|
|
310
|
+
const wordPattern = word.replace(/s$/, '');
|
|
311
|
+
if (lowerResource === word || lowerResource === wordPattern ||
|
|
312
|
+
lowerResource.includes(wordPattern) || lowerResource.includes(word)) {
|
|
313
|
+
resourceWordMatchCount++;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
if (isExactMatch && resourceWordMatchCount === 1) {
|
|
317
|
+
// Exact match with one word (e.g., "pod" matches "Pod")
|
|
318
|
+
score = 0.00001 + (lowerResource.length * 0.000001);
|
|
319
|
+
}
|
|
320
|
+
else if (resourceWordMatchCount > 1) {
|
|
321
|
+
// Multiple words match (e.g., "pod logs" matches "PodLog")
|
|
322
|
+
// This should beat simple exact matches!
|
|
323
|
+
score = 0.000001 * resourceWordMatchCount;
|
|
324
|
+
}
|
|
325
|
+
else if (resourceWordMatchCount === 1 && !isExactMatch) {
|
|
326
|
+
// Partial match with one word (e.g., "pod" in "PodDisruptionBudget")
|
|
327
|
+
score *= 100;
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
// No resource match - huge penalty
|
|
331
|
+
score *= 1000;
|
|
332
|
+
}
|
|
333
|
+
// Factor 2: Action matching
|
|
334
|
+
if (expectedActions.length > 0) {
|
|
335
|
+
const methodStartsWithAction = expectedActions.some(action => lowerMethodName.startsWith(action));
|
|
336
|
+
if (methodStartsWithAction) {
|
|
337
|
+
score *= 0.5; // Boost methods with matching action
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
score *= 2; // Penalize methods with wrong action
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// Factor 3: Avoid proxy/connect methods unless explicitly requested
|
|
344
|
+
if (lowerMethodName.includes('connect') || lowerMethodName.includes('proxy')) {
|
|
345
|
+
if (!lowerQuery.includes('proxy') && !lowerQuery.includes('connect')) {
|
|
346
|
+
score *= 20; // Heavy penalty for proxy/connect methods
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
// Factor 4: Avoid "WithHttpInfo" methods unless explicitly requested
|
|
350
|
+
if (lowerMethodName.includes('withhttpinfo')) {
|
|
351
|
+
if (!lowerQuery.includes('http')) {
|
|
352
|
+
score *= 100; // HEAVY penalty for verbose variants
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
// Factor 5: Prefer common operations
|
|
356
|
+
if (lowerMethodName.match(/^(list|read|create|delete|patch)namespaced/)) {
|
|
357
|
+
score *= 0.8; // Boost common patterns
|
|
358
|
+
}
|
|
359
|
+
return { ...result, score, item: method };
|
|
360
|
+
})
|
|
361
|
+
.sort((a, b) => {
|
|
362
|
+
const scoreA = a.score || 0;
|
|
363
|
+
const scoreB = b.score || 0;
|
|
364
|
+
return scoreA - scoreB; // Sort by score (lower = better)
|
|
365
|
+
});
|
|
366
|
+
// Debug logging for specific queries
|
|
367
|
+
if (lowerQuery === 'read pod' && limit === 1) {
|
|
368
|
+
console.error(`\nš DEBUG: Top 5 results for "read pod":`);
|
|
369
|
+
searchResults.slice(0, 10).forEach((r, i) => {
|
|
370
|
+
const item = r.item;
|
|
371
|
+
console.error(` ${i + 1}. ${item.methodName.padEnd(40)} | score: ${r.score?.toExponential(2) || 'N/A'}`);
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
const rerankedResults = searchResults.slice(0, limit);
|
|
375
|
+
const methods = rerankedResults.map(result => result.item);
|
|
376
|
+
const totalMatches = rerankedResults.length;
|
|
377
|
+
// Create summary
|
|
378
|
+
let summary = `Found ${totalMatches} Kubernetes API method(s) matching "${query}"`;
|
|
379
|
+
if (totalMatches > limit) {
|
|
380
|
+
summary += ` (showing first ${limit})`;
|
|
381
|
+
}
|
|
382
|
+
summary += ':\n\n';
|
|
383
|
+
methods.forEach((method, i) => {
|
|
384
|
+
summary += `${i + 1}. ${method.apiClass}.${method.methodName}\n`;
|
|
385
|
+
summary += ` ${method.description}\n`;
|
|
386
|
+
});
|
|
387
|
+
const usage = 'ā ļø CRITICAL: All methods use OBJECT PARAMETERS, not positional!\n\n' +
|
|
388
|
+
'1. API method signature (IMPORTANT):\n' +
|
|
389
|
+
' ā
CORRECT: await api.listNamespacedPod({ namespace: \'default\' })\n' +
|
|
390
|
+
' ā WRONG: await api.listNamespacedPod(\'default\')\n\n' +
|
|
391
|
+
'2. All API methods return a response object:\n' +
|
|
392
|
+
' { body: <resource>, response: <http response> }\n' +
|
|
393
|
+
' - For list operations: response.body.items = array\n' +
|
|
394
|
+
' - For single resource: response.body = resource object\n\n' +
|
|
395
|
+
'3. Complete example for listing pods:\n' +
|
|
396
|
+
' import * as k8s from \'@kubernetes/client-node\';\n' +
|
|
397
|
+
' const kc = new k8s.KubeConfig();\n' +
|
|
398
|
+
' kc.loadFromDefault();\n' +
|
|
399
|
+
' const api = kc.makeApiClient(k8s.CoreV1Api);\n' +
|
|
400
|
+
' const response = await api.listNamespacedPod({ namespace: \'kube-system\' });\n' +
|
|
401
|
+
' const pods = response.body.items; // Array of pods\n\n' +
|
|
402
|
+
'4. Example for getting a single pod:\n' +
|
|
403
|
+
' const response = await api.readNamespacedPod({ name: \'my-pod\', namespace: \'default\' });\n' +
|
|
404
|
+
' const pod = response.body; // Single pod object\n\n' +
|
|
405
|
+
'5. See the "example" field in each method for complete, working code.';
|
|
406
|
+
return {
|
|
407
|
+
summary,
|
|
408
|
+
tools: methods,
|
|
409
|
+
totalMatches,
|
|
410
|
+
usage,
|
|
411
|
+
};
|
|
412
|
+
},
|
|
413
|
+
};
|
|
414
|
+
//# sourceMappingURL=searchTools-old.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchTools-old.js","sourceRoot":"","sources":["../../../src/tools/kubernetes/searchTools-old.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolDefinition } from '../types.js';
|
|
3
|
+
declare const SearchToolsInputSchema: z.ZodObject<{
|
|
4
|
+
query: z.ZodString;
|
|
5
|
+
limit: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
query: string;
|
|
8
|
+
limit?: number | undefined;
|
|
9
|
+
}, {
|
|
10
|
+
query: string;
|
|
11
|
+
limit?: number | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
type KubernetesApiMethod = {
|
|
14
|
+
apiClass: string;
|
|
15
|
+
methodName: string;
|
|
16
|
+
resourceType: string;
|
|
17
|
+
description: string;
|
|
18
|
+
parameters: Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
type: string;
|
|
21
|
+
optional: boolean;
|
|
22
|
+
description?: string;
|
|
23
|
+
}>;
|
|
24
|
+
returnType: string;
|
|
25
|
+
example: string;
|
|
26
|
+
};
|
|
27
|
+
type SearchToolsResult = {
|
|
28
|
+
summary: string;
|
|
29
|
+
tools: KubernetesApiMethod[];
|
|
30
|
+
totalMatches: number;
|
|
31
|
+
usage: string;
|
|
32
|
+
};
|
|
33
|
+
export declare const searchToolsToolV2: ToolDefinition<SearchToolsResult, typeof SearchToolsInputSchema>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=searchTools-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchTools-v2.d.ts","sourceRoot":"","sources":["../../../src/tools/kubernetes/searchTools-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,QAAA,MAAM,sBAAsB;;;;;;;;;EAY1B,CAAC;AAEH,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAoPF,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,EAAE,OAAO,sBAAsB,CAsC9F,CAAC"}
|