@vfarcic/dot-ai 0.195.0 → 1.0.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/README.md +2 -7
- package/dist/core/capability-scan-workflow.d.ts +4 -3
- package/dist/core/capability-scan-workflow.d.ts.map +1 -1
- package/dist/core/capability-scan-workflow.js +34 -39
- package/dist/core/circuit-breaker.d.ts +1 -0
- package/dist/core/circuit-breaker.d.ts.map +1 -1
- package/dist/core/circuit-breaker.js +11 -3
- package/dist/core/command-executor.d.ts +10 -1
- package/dist/core/command-executor.d.ts.map +1 -1
- package/dist/core/command-executor.js +63 -48
- package/dist/core/crd-availability.d.ts +6 -1
- package/dist/core/crd-availability.d.ts.map +1 -1
- package/dist/core/crd-availability.js +59 -49
- package/dist/core/deploy-operation.d.ts +17 -3
- package/dist/core/deploy-operation.d.ts.map +1 -1
- package/dist/core/deploy-operation.js +72 -21
- package/dist/core/discovery.d.ts +16 -43
- package/dist/core/discovery.d.ts.map +1 -1
- package/dist/core/discovery.js +128 -277
- package/dist/core/index.d.ts +10 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +20 -9
- package/dist/core/pattern-operations.d.ts +3 -1
- package/dist/core/pattern-operations.d.ts.map +1 -1
- package/dist/core/pattern-operations.js +3 -2
- package/dist/core/plugin-client.d.ts +53 -0
- package/dist/core/plugin-client.d.ts.map +1 -0
- package/dist/core/plugin-client.js +148 -0
- package/dist/core/plugin-manager.d.ts +119 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-manager.js +366 -0
- package/dist/core/plugin-types.d.ts +100 -0
- package/dist/core/plugin-types.d.ts.map +1 -0
- package/dist/core/plugin-types.js +10 -0
- package/dist/core/policy-operations.d.ts +15 -7
- package/dist/core/policy-operations.d.ts.map +1 -1
- package/dist/core/policy-operations.js +59 -31
- package/dist/core/resource-tools.d.ts +2 -90
- package/dist/core/resource-tools.d.ts.map +1 -1
- package/dist/core/resource-tools.js +4 -178
- package/dist/core/schema.d.ts +18 -2
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +118 -16
- package/dist/core/telemetry/client.d.ts +7 -0
- package/dist/core/telemetry/client.d.ts.map +1 -1
- package/dist/core/telemetry/client.js +51 -51
- package/dist/core/telemetry/index.d.ts +1 -1
- package/dist/core/telemetry/index.d.ts.map +1 -1
- package/dist/core/telemetry/index.js +2 -1
- package/dist/core/telemetry/types.d.ts +1 -3
- package/dist/core/telemetry/types.d.ts.map +1 -1
- package/dist/core/tracing/index.d.ts +0 -1
- package/dist/core/tracing/index.d.ts.map +1 -1
- package/dist/core/tracing/index.js +1 -4
- package/dist/core/unified-creation-session.d.ts +6 -1
- package/dist/core/unified-creation-session.d.ts.map +1 -1
- package/dist/core/unified-creation-session.js +19 -11
- package/dist/interfaces/mcp.d.ts +8 -2
- package/dist/interfaces/mcp.d.ts.map +1 -1
- package/dist/interfaces/mcp.js +85 -34
- package/dist/interfaces/resource-sync-handler.d.ts.map +1 -1
- package/dist/interfaces/resource-sync-handler.js +37 -17
- package/dist/interfaces/rest-api.d.ts +4 -1
- package/dist/interfaces/rest-api.d.ts.map +1 -1
- package/dist/interfaces/rest-api.js +172 -49
- package/dist/mcp/server.js +39 -54
- package/dist/tools/deploy-manifests.d.ts +3 -1
- package/dist/tools/deploy-manifests.d.ts.map +1 -1
- package/dist/tools/deploy-manifests.js +112 -13
- package/dist/tools/generate-manifests.d.ts +3 -1
- package/dist/tools/generate-manifests.d.ts.map +1 -1
- package/dist/tools/generate-manifests.js +107 -33
- package/dist/tools/operate-analysis.d.ts +5 -1
- package/dist/tools/operate-analysis.d.ts.map +1 -1
- package/dist/tools/operate-analysis.js +37 -7
- package/dist/tools/operate-execution.d.ts +3 -1
- package/dist/tools/operate-execution.d.ts.map +1 -1
- package/dist/tools/operate-execution.js +6 -4
- package/dist/tools/operate.d.ts +7 -2
- package/dist/tools/operate.d.ts.map +1 -1
- package/dist/tools/operate.js +10 -6
- package/dist/tools/organizational-data.d.ts +3 -2
- package/dist/tools/organizational-data.d.ts.map +1 -1
- package/dist/tools/organizational-data.js +15 -13
- package/dist/tools/query.d.ts +5 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +26 -18
- package/dist/tools/recommend.d.ts +3 -1
- package/dist/tools/recommend.d.ts.map +1 -1
- package/dist/tools/recommend.js +7 -7
- package/dist/tools/remediate.d.ts +5 -2
- package/dist/tools/remediate.d.ts.map +1 -1
- package/dist/tools/remediate.js +69 -20
- package/dist/tools/version.d.ts +20 -5
- package/dist/tools/version.d.ts.map +1 -1
- package/dist/tools/version.js +169 -161
- package/package.json +1 -1
- package/prompts/helm-generation.md +9 -0
- package/dist/core/cluster-utils.d.ts +0 -12
- package/dist/core/cluster-utils.d.ts.map +0 -1
- package/dist/core/cluster-utils.js +0 -27
- package/dist/core/helm-utils.d.ts +0 -66
- package/dist/core/helm-utils.d.ts.map +0 -1
- package/dist/core/helm-utils.js +0 -196
- package/dist/core/kubectl-tools.d.ts +0 -71
- package/dist/core/kubectl-tools.d.ts.map +0 -1
- package/dist/core/kubectl-tools.js +0 -546
- package/dist/core/kubernetes-utils.d.ts +0 -38
- package/dist/core/kubernetes-utils.d.ts.map +0 -1
- package/dist/core/kubernetes-utils.js +0 -288
- package/dist/core/tracing/k8s-tracing.d.ts +0 -57
- package/dist/core/tracing/k8s-tracing.d.ts.map +0 -1
- package/dist/core/tracing/k8s-tracing.js +0 -155
- package/scripts/toolhive.nu +0 -21
package/dist/tools/operate.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { Logger } from '../core/error-handling';
|
|
6
|
+
import { PluginManager } from '../core/plugin-manager';
|
|
6
7
|
import { OrganizationalPattern, PolicyIntent } from '../core/organizational-types';
|
|
7
8
|
import { ResourceCapability } from '../core/capabilities';
|
|
8
9
|
import { BaseVisualizationData } from '../core/visualization';
|
|
@@ -126,11 +127,15 @@ export declare function formatPolicies(policies: PolicyIntent[]): string;
|
|
|
126
127
|
export declare function formatCapabilities(capabilities: ResourceCapability[]): string;
|
|
127
128
|
/**
|
|
128
129
|
* Main operate tool entry point
|
|
130
|
+
*
|
|
131
|
+
* PRD #343: pluginManager is required - all kubectl operations go through plugin.
|
|
129
132
|
*/
|
|
130
|
-
export declare function operate(args: OperateInput): Promise<OperateOutput>;
|
|
133
|
+
export declare function operate(args: OperateInput, pluginManager: PluginManager): Promise<OperateOutput>;
|
|
131
134
|
/**
|
|
132
135
|
* MCP handler for operate tool
|
|
133
136
|
* Wraps the main operate function with consistent return format
|
|
137
|
+
*
|
|
138
|
+
* PRD #343: pluginManager is required - all kubectl operations go through plugin.
|
|
134
139
|
*/
|
|
135
|
-
export declare function handleOperateTool(args: any): Promise<any>;
|
|
140
|
+
export declare function handleOperateTool(args: any, pluginManager: PluginManager): Promise<any>;
|
|
136
141
|
//# sourceMappingURL=operate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operate.d.ts","sourceRoot":"","sources":["../../src/tools/operate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA8C,MAAM,EAAiB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"operate.d.ts","sourceRoot":"","sources":["../../src/tools/operate.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/operate.js
CHANGED
|
@@ -186,26 +186,28 @@ function formatCapabilities(capabilities) {
|
|
|
186
186
|
}
|
|
187
187
|
/**
|
|
188
188
|
* Main operate tool entry point
|
|
189
|
+
*
|
|
190
|
+
* PRD #343: pluginManager is required - all kubectl operations go through plugin.
|
|
189
191
|
*/
|
|
190
|
-
async function operate(args) {
|
|
192
|
+
async function operate(args, pluginManager) {
|
|
191
193
|
try {
|
|
192
194
|
// Route 1: Execute approved operation
|
|
193
195
|
if (args.sessionId && args.executeChoice) {
|
|
194
196
|
// Import and delegate to execution workflow
|
|
195
197
|
const { executeOperations } = await Promise.resolve().then(() => __importStar(require('./operate-execution')));
|
|
196
|
-
return await executeOperations(args.sessionId, logger, sessionManager);
|
|
198
|
+
return await executeOperations(args.sessionId, logger, sessionManager, pluginManager);
|
|
197
199
|
}
|
|
198
200
|
// Route 2: Refine intent with more context
|
|
199
201
|
if (args.sessionId && args.refinedIntent) {
|
|
200
202
|
// Import and delegate to analysis workflow with refined intent
|
|
201
203
|
const { analyzeIntent } = await Promise.resolve().then(() => __importStar(require('./operate-analysis')));
|
|
202
|
-
return await analyzeIntent(args.refinedIntent, logger, sessionManager, args.sessionId, args.interaction_id);
|
|
204
|
+
return await analyzeIntent(args.refinedIntent, logger, sessionManager, pluginManager, args.sessionId, args.interaction_id);
|
|
203
205
|
}
|
|
204
206
|
// Route 3: New operation analysis
|
|
205
207
|
if (args.intent) {
|
|
206
208
|
// Import and delegate to analysis workflow
|
|
207
209
|
const { analyzeIntent } = await Promise.resolve().then(() => __importStar(require('./operate-analysis')));
|
|
208
|
-
return await analyzeIntent(args.intent, logger, sessionManager, undefined, args.interaction_id);
|
|
210
|
+
return await analyzeIntent(args.intent, logger, sessionManager, pluginManager, undefined, args.interaction_id);
|
|
209
211
|
}
|
|
210
212
|
// Invalid input
|
|
211
213
|
throw error_handling_1.ErrorHandler.createError(error_handling_1.ErrorCategory.VALIDATION, error_handling_1.ErrorSeverity.HIGH, 'Invalid input: must provide either intent (for new operation) or sessionId + executeChoice (for execution)', {
|
|
@@ -226,9 +228,11 @@ async function operate(args) {
|
|
|
226
228
|
/**
|
|
227
229
|
* MCP handler for operate tool
|
|
228
230
|
* Wraps the main operate function with consistent return format
|
|
231
|
+
*
|
|
232
|
+
* PRD #343: pluginManager is required - all kubectl operations go through plugin.
|
|
229
233
|
*/
|
|
230
|
-
async function handleOperateTool(args) {
|
|
231
|
-
const result = await operate(args);
|
|
234
|
+
async function handleOperateTool(args, pluginManager) {
|
|
235
|
+
const result = await operate(args, pluginManager);
|
|
232
236
|
// Build content blocks - JSON for REST API, agent instruction for MCP agents
|
|
233
237
|
const content = [{
|
|
234
238
|
type: 'text',
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
import { DotAI } from '../core/index';
|
|
12
12
|
import { Logger } from '../core/error-handling';
|
|
13
|
+
import type { PluginManager } from '../core/plugin-manager';
|
|
13
14
|
export declare const ORGANIZATIONAL_DATA_TOOL_NAME = "manageOrgData";
|
|
14
15
|
export declare const ORGANIZATIONAL_DATA_TOOL_DESCRIPTION = "Unified tool for managing cluster data: organizational patterns, policy intents, and resource capabilities. For patterns and policies: supports create, list, get, delete, deleteAll, and search operations (patterns also support step-by-step creation workflow). For capabilities: supports scan, list, get, delete, deleteAll, and progress operations for cluster resource capability discovery and management. Use dataType parameter to specify what to manage: \"pattern\" for organizational patterns, \"policy\" for policy intents, \"capabilities\" for resource capabilities.";
|
|
15
16
|
export declare const ORGANIZATIONAL_DATA_TOOL_INPUT_SCHEMA: {
|
|
@@ -21,9 +22,9 @@ export declare const ORGANIZATIONAL_DATA_TOOL_INPUT_SCHEMA: {
|
|
|
21
22
|
operation: z.ZodEnum<{
|
|
22
23
|
search: "search";
|
|
23
24
|
get: "get";
|
|
24
|
-
delete: "delete";
|
|
25
25
|
list: "list";
|
|
26
26
|
create: "create";
|
|
27
|
+
delete: "delete";
|
|
27
28
|
deleteAll: "deleteAll";
|
|
28
29
|
progress: "progress";
|
|
29
30
|
scan: "scan";
|
|
@@ -49,5 +50,5 @@ export declare const ORGANIZATIONAL_DATA_TOOL_INPUT_SCHEMA: {
|
|
|
49
50
|
/**
|
|
50
51
|
* Main tool handler - routes to appropriate data type handler
|
|
51
52
|
*/
|
|
52
|
-
export declare function handleOrganizationalDataTool(args: any, _dotAI: DotAI | null, logger: Logger, requestId: string): Promise<any>;
|
|
53
|
+
export declare function handleOrganizationalDataTool(args: any, _dotAI: DotAI | null, logger: Logger, requestId: string, pluginManager?: PluginManager): Promise<any>;
|
|
53
54
|
//# sourceMappingURL=organizational-data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizational-data.d.ts","sourceRoot":"","sources":["../../src/tools/organizational-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"organizational-data.d.ts","sourceRoot":"","sources":["../../src/tools/organizational-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAe5D,eAAO,MAAM,6BAA6B,kBAAkB,CAAC;AAC7D,eAAO,MAAM,oCAAoC,+jBAAyjB,CAAC;AAG3mB,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjD,CAAC;AA2tBF;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,KAAK,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,GAAG,CAAC,CA0Hd"}
|
|
@@ -212,7 +212,7 @@ function createCapabilityScanCompletionResponse(sessionId, totalProcessed, succe
|
|
|
212
212
|
*
|
|
213
213
|
* Both modes return immediately with { status: "started" } and run scanning in background.
|
|
214
214
|
*/
|
|
215
|
-
async function handleFireAndForgetScan(args, logger, requestId, capabilityService) {
|
|
215
|
+
async function handleFireAndForgetScan(args, logger, requestId, capabilityService, pluginManager) {
|
|
216
216
|
const isFullScan = args.mode === 'full';
|
|
217
217
|
const isTargetedScan = !!args.resourceList;
|
|
218
218
|
logger.info('Fire-and-forget scan initiated', {
|
|
@@ -258,7 +258,7 @@ async function handleFireAndForgetScan(args, logger, requestId, capabilityServic
|
|
|
258
258
|
// Save session for progress tracking
|
|
259
259
|
saveCapabilitySession(session);
|
|
260
260
|
// Start scanning in background (don't await) - fire and forget
|
|
261
|
-
(0, capability_scan_workflow_1.handleScanning)(session, { ...args, response: undefined }, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse).catch(error => {
|
|
261
|
+
(0, capability_scan_workflow_1.handleScanning)(session, { ...args, response: undefined }, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse, pluginManager).catch(error => {
|
|
262
262
|
logger.error('Background fire-and-forget scan failed', error, {
|
|
263
263
|
requestId,
|
|
264
264
|
sessionId: session.sessionId,
|
|
@@ -287,12 +287,13 @@ async function handleFireAndForgetScan(args, logger, requestId, capabilityServic
|
|
|
287
287
|
}
|
|
288
288
|
/**
|
|
289
289
|
* Handle capabilities operations - PRD #48 Implementation
|
|
290
|
+
* PRD #343: pluginManager required for kubectl operations via plugin system
|
|
290
291
|
*/
|
|
291
|
-
async function handleCapabilitiesOperation(operation, args, logger, requestId) {
|
|
292
|
+
async function handleCapabilitiesOperation(operation, args, logger, requestId, pluginManager) {
|
|
292
293
|
logger.info('Capabilities operation requested', { requestId, operation });
|
|
293
294
|
switch (operation) {
|
|
294
295
|
case 'scan':
|
|
295
|
-
return await handleCapabilityScan(args, logger, requestId);
|
|
296
|
+
return await handleCapabilityScan(args, logger, requestId, pluginManager);
|
|
296
297
|
case 'progress':
|
|
297
298
|
return await (0, capability_operations_1.handleCapabilityProgress)(args, logger, requestId);
|
|
298
299
|
case 'list':
|
|
@@ -462,8 +463,9 @@ function cleanupCapabilitySession(session, args, logger, requestId) {
|
|
|
462
463
|
}
|
|
463
464
|
/**
|
|
464
465
|
* Handle capability scanning workflow with step-based state management
|
|
466
|
+
* PRD #343: pluginManager required for kubectl operations via plugin system
|
|
465
467
|
*/
|
|
466
|
-
async function handleCapabilityScan(args, logger, requestId) {
|
|
468
|
+
async function handleCapabilityScan(args, logger, requestId, pluginManager) {
|
|
467
469
|
// Validate Vector DB and embedding service dependencies upfront
|
|
468
470
|
// This prevents users from going through the entire workflow only to fail at storage
|
|
469
471
|
// Use collection from args if provided (for testing with pre-populated data)
|
|
@@ -577,7 +579,7 @@ async function handleCapabilityScan(args, logger, requestId) {
|
|
|
577
579
|
// ============================================================================
|
|
578
580
|
const isFireAndForget = !args.sessionId && (args.mode === 'full' || args.resourceList);
|
|
579
581
|
if (isFireAndForget) {
|
|
580
|
-
return await handleFireAndForgetScan(args, logger, requestId, capabilityService);
|
|
582
|
+
return await handleFireAndForgetScan(args, logger, requestId, capabilityService, pluginManager);
|
|
581
583
|
}
|
|
582
584
|
// ============================================================================
|
|
583
585
|
// INTERACTIVE WORKFLOW MODE (Existing behavior for human users)
|
|
@@ -607,11 +609,11 @@ async function handleCapabilityScan(args, logger, requestId) {
|
|
|
607
609
|
// Handle workflow based on current step
|
|
608
610
|
switch (session.currentStep) {
|
|
609
611
|
case 'resource-selection':
|
|
610
|
-
return await (0, capability_scan_workflow_1.handleResourceSelection)(session, args, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse, capability_scan_workflow_1.handleScanning);
|
|
612
|
+
return await (0, capability_scan_workflow_1.handleResourceSelection)(session, args, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse, capability_scan_workflow_1.handleScanning, pluginManager);
|
|
611
613
|
case 'resource-specification':
|
|
612
|
-
return await (0, capability_scan_workflow_1.handleResourceSpecification)(session, args, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse, capability_scan_workflow_1.handleScanning);
|
|
614
|
+
return await (0, capability_scan_workflow_1.handleResourceSpecification)(session, args, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse, capability_scan_workflow_1.handleScanning, pluginManager);
|
|
613
615
|
case 'scanning':
|
|
614
|
-
return await (0, capability_scan_workflow_1.handleScanning)(session, args, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse);
|
|
616
|
+
return await (0, capability_scan_workflow_1.handleScanning)(session, args, logger, requestId, capabilityService, parseNumericResponse, transitionCapabilitySession, cleanupCapabilitySession, createCapabilityScanCompletionResponse, pluginManager);
|
|
615
617
|
case 'complete':
|
|
616
618
|
return {
|
|
617
619
|
success: false,
|
|
@@ -639,7 +641,7 @@ async function handleCapabilityScan(args, logger, requestId) {
|
|
|
639
641
|
/**
|
|
640
642
|
* Main tool handler - routes to appropriate data type handler
|
|
641
643
|
*/
|
|
642
|
-
async function handleOrganizationalDataTool(args, _dotAI, logger, requestId) {
|
|
644
|
+
async function handleOrganizationalDataTool(args, _dotAI, logger, requestId, pluginManager) {
|
|
643
645
|
try {
|
|
644
646
|
logger.info('Processing organizational-data tool request', {
|
|
645
647
|
requestId,
|
|
@@ -667,13 +669,13 @@ async function handleOrganizationalDataTool(args, _dotAI, logger, requestId) {
|
|
|
667
669
|
let result;
|
|
668
670
|
switch (args.dataType) {
|
|
669
671
|
case 'pattern':
|
|
670
|
-
result = await (0, pattern_operations_1.handlePatternOperation)(args.operation, args, logger, requestId, validateVectorDBConnection, validateEmbeddingService);
|
|
672
|
+
result = await (0, pattern_operations_1.handlePatternOperation)(args.operation, args, logger, requestId, validateVectorDBConnection, validateEmbeddingService, pluginManager);
|
|
671
673
|
break;
|
|
672
674
|
case 'policy':
|
|
673
|
-
result = await (0, policy_operations_1.handlePolicyOperation)(args.operation, args, logger, requestId, validateVectorDBConnection, validateEmbeddingService);
|
|
675
|
+
result = await (0, policy_operations_1.handlePolicyOperation)(args.operation, args, logger, requestId, validateVectorDBConnection, validateEmbeddingService, pluginManager);
|
|
674
676
|
break;
|
|
675
677
|
case 'capabilities':
|
|
676
|
-
result = await handleCapabilitiesOperation(args.operation, args, logger, requestId);
|
|
678
|
+
result = await handleCapabilitiesOperation(args.operation, args, logger, requestId, pluginManager);
|
|
677
679
|
break;
|
|
678
680
|
default:
|
|
679
681
|
throw error_handling_1.ErrorHandler.createError(error_handling_1.ErrorCategory.VALIDATION, error_handling_1.ErrorSeverity.HIGH, `Unsupported data type: ${args.dataType}. Currently supported: pattern, policy, capabilities`, {
|
package/dist/tools/query.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* PRD #291: Cluster Query Tool - Natural Language Cluster Intelligence
|
|
8
8
|
*/
|
|
9
9
|
import { z } from 'zod';
|
|
10
|
+
import { PluginManager } from '../core/plugin-manager';
|
|
10
11
|
import { CachedVisualization } from '../core/visualization';
|
|
11
12
|
export declare const QUERY_TOOL_NAME = "query";
|
|
12
13
|
export declare const QUERY_TOOL_DESCRIPTION = "Natural language query interface for Kubernetes cluster intelligence. Ask any questions about your cluster resources, capabilities, and status in plain English. Examples: \"What databases are running?\", \"Describe the nginx deployment\", \"Show me pods in the kube-system namespace\", \"What operators are installed?\", \"Is my-postgres healthy?\"";
|
|
@@ -46,6 +47,9 @@ export interface QueryOutput {
|
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
48
49
|
* Main query tool handler
|
|
50
|
+
*
|
|
51
|
+
* PRD #343: When pluginManager is provided, kubectl tools are routed through
|
|
52
|
+
* the plugin system instead of local execution.
|
|
49
53
|
*/
|
|
50
|
-
export declare function handleQueryTool(args: any): Promise<any>;
|
|
54
|
+
export declare function handleQueryTool(args: any, pluginManager?: PluginManager): Promise<any>;
|
|
51
55
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAIL,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,sBAAsB,iWAAuV,CAAC;AAG3X,eAAO,MAAM,uBAAuB;;;CAGnC,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,GAAG,CAAC;QACX,MAAM,EAAE,GAAG,CAAC;KACb,CAAC,CAAC;IAEH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAGD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAgED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,EACT,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,GAAG,CAAC,CA8Md"}
|
package/dist/tools/query.js
CHANGED
|
@@ -15,7 +15,6 @@ const error_handling_1 = require("../core/error-handling");
|
|
|
15
15
|
const ai_provider_factory_1 = require("../core/ai-provider-factory");
|
|
16
16
|
const capability_tools_1 = require("../core/capability-tools");
|
|
17
17
|
const resource_tools_1 = require("../core/resource-tools");
|
|
18
|
-
const kubectl_tools_1 = require("../core/kubectl-tools");
|
|
19
18
|
const generic_session_manager_1 = require("../core/generic-session-manager");
|
|
20
19
|
const visualization_1 = require("../core/visualization");
|
|
21
20
|
const mermaid_tools_1 = require("../core/mermaid-tools");
|
|
@@ -84,8 +83,11 @@ function parseSummary(aiResponse) {
|
|
|
84
83
|
}
|
|
85
84
|
/**
|
|
86
85
|
* Main query tool handler
|
|
86
|
+
*
|
|
87
|
+
* PRD #343: When pluginManager is provided, kubectl tools are routed through
|
|
88
|
+
* the plugin system instead of local execution.
|
|
87
89
|
*/
|
|
88
|
-
async function handleQueryTool(args) {
|
|
90
|
+
async function handleQueryTool(args, pluginManager) {
|
|
89
91
|
const requestId = `query_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
90
92
|
const logger = new error_handling_1.ConsoleLogger('QueryTool');
|
|
91
93
|
try {
|
|
@@ -108,18 +110,14 @@ async function handleQueryTool(args) {
|
|
|
108
110
|
? (0, shared_prompt_loader_1.loadPrompt)('partials/visualization-output')
|
|
109
111
|
: (0, shared_prompt_loader_1.loadPrompt)('partials/query-simple-output')
|
|
110
112
|
});
|
|
111
|
-
//
|
|
112
|
-
const
|
|
113
|
-
// Route to appropriate executor based on tool name
|
|
113
|
+
// Local executor for non-plugin tools (capability, resource, mermaid)
|
|
114
|
+
const localToolExecutor = async (toolName, input) => {
|
|
114
115
|
if (toolName.startsWith('search_capabilities') || toolName.startsWith('query_capabilities')) {
|
|
115
116
|
return (0, capability_tools_1.executeCapabilityTools)(toolName, input);
|
|
116
117
|
}
|
|
117
118
|
if (toolName.startsWith('search_resources') || toolName.startsWith('query_resources')) {
|
|
118
119
|
return (0, resource_tools_1.executeResourceTools)(toolName, input);
|
|
119
120
|
}
|
|
120
|
-
if (toolName.startsWith('kubectl_')) {
|
|
121
|
-
return (0, kubectl_tools_1.executeKubectlTools)(toolName, input);
|
|
122
|
-
}
|
|
123
121
|
if (toolName === 'validate_mermaid') {
|
|
124
122
|
return (0, mermaid_tools_1.executeMermaidTools)(toolName, input);
|
|
125
123
|
}
|
|
@@ -129,19 +127,29 @@ async function handleQueryTool(args) {
|
|
|
129
127
|
message: `Tool '${toolName}' is not implemented in query tool`
|
|
130
128
|
};
|
|
131
129
|
};
|
|
132
|
-
//
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
130
|
+
// PRD #343: Use plugin executor when pluginManager is available
|
|
131
|
+
// kubectl tools route through plugin HTTP, others use local executor
|
|
132
|
+
const executeQueryTools = pluginManager
|
|
133
|
+
? pluginManager.createToolExecutor(localToolExecutor)
|
|
134
|
+
: localToolExecutor;
|
|
135
|
+
// PRD #343: Get kubectl tools from plugin (read-only tools for query)
|
|
136
|
+
// Only include kubectl tools when plugin provides them
|
|
137
|
+
const KUBECTL_READONLY_TOOL_NAMES = [
|
|
138
|
+
'kubectl_api_resources',
|
|
139
|
+
'kubectl_get',
|
|
140
|
+
'kubectl_describe',
|
|
141
|
+
'kubectl_logs',
|
|
142
|
+
'kubectl_events',
|
|
143
|
+
'kubectl_get_crd_schema'
|
|
140
144
|
];
|
|
145
|
+
const pluginKubectlTools = pluginManager
|
|
146
|
+
? pluginManager.getDiscoveredTools().filter(t => KUBECTL_READONLY_TOOL_NAMES.includes(t.name))
|
|
147
|
+
: [];
|
|
141
148
|
// Build tool list - add mermaid tools when in visualization mode
|
|
149
|
+
// kubectl tools only available when plugin is configured
|
|
142
150
|
const tools = visualizationMode
|
|
143
|
-
? [...capability_tools_1.CAPABILITY_TOOLS, ...resource_tools_1.RESOURCE_TOOLS, ...
|
|
144
|
-
: [...capability_tools_1.CAPABILITY_TOOLS, ...resource_tools_1.RESOURCE_TOOLS, ...
|
|
151
|
+
? [...capability_tools_1.CAPABILITY_TOOLS, ...resource_tools_1.RESOURCE_TOOLS, ...pluginKubectlTools, ...mermaid_tools_1.MERMAID_TOOLS]
|
|
152
|
+
: [...capability_tools_1.CAPABILITY_TOOLS, ...resource_tools_1.RESOURCE_TOOLS, ...pluginKubectlTools];
|
|
145
153
|
// Execute tool loop with capability, resource, and kubectl tools
|
|
146
154
|
const result = await aiProvider.toolLoop({
|
|
147
155
|
systemPrompt,
|
|
@@ -5,6 +5,7 @@ import { z } from 'zod';
|
|
|
5
5
|
import { DotAI } from '../core/index';
|
|
6
6
|
import { Logger } from '../core/error-handling';
|
|
7
7
|
import { HelmChartInfo } from '../core/helm-types';
|
|
8
|
+
import type { PluginManager } from '../core/plugin-manager';
|
|
8
9
|
export declare const RECOMMEND_TOOL_NAME = "recommend";
|
|
9
10
|
export declare const RECOMMEND_TOOL_DESCRIPTION = "Deploy applications, infrastructure, and services using Kubernetes resources with AI recommendations. Supports cloud resources via operators like Crossplane, cluster management via CAPI, and traditional Kubernetes workloads. Describe what you want to deploy. Does NOT handle policy creation, organizational patterns, or resource capabilities - use manageOrgData for those.";
|
|
10
11
|
export declare const RECOMMEND_TOOL_INPUT_SCHEMA: {
|
|
@@ -81,8 +82,9 @@ export interface SolutionData {
|
|
|
81
82
|
}
|
|
82
83
|
/**
|
|
83
84
|
* Direct MCP tool handler for recommend functionality (unified with stage routing)
|
|
85
|
+
* PRD #343: pluginManager required for kubectl operations
|
|
84
86
|
*/
|
|
85
|
-
export declare function handleRecommendTool(args: any, dotAI: DotAI, logger: Logger, requestId: string): Promise<{
|
|
87
|
+
export declare function handleRecommendTool(args: any, dotAI: DotAI, logger: Logger, requestId: string, pluginManager: PluginManager): Promise<{
|
|
86
88
|
content: {
|
|
87
89
|
type: 'text';
|
|
88
90
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../src/tools/recommend.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAA0B,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../src/tools/recommend.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/recommend.js
CHANGED
|
@@ -9,7 +9,6 @@ const zod_1 = require("zod");
|
|
|
9
9
|
const error_handling_1 = require("../core/error-handling");
|
|
10
10
|
const schema_1 = require("../core/schema");
|
|
11
11
|
const index_1 = require("../core/index");
|
|
12
|
-
const cluster_utils_1 = require("../core/cluster-utils");
|
|
13
12
|
const generic_session_manager_1 = require("../core/generic-session-manager");
|
|
14
13
|
const choose_solution_1 = require("./choose-solution");
|
|
15
14
|
const answer_question_1 = require("./answer-question");
|
|
@@ -65,8 +64,9 @@ function generateIntentRefinementGuidance(intent) {
|
|
|
65
64
|
// Session management now handled by GenericSessionManager
|
|
66
65
|
/**
|
|
67
66
|
* Direct MCP tool handler for recommend functionality (unified with stage routing)
|
|
67
|
+
* PRD #343: pluginManager required for kubectl operations
|
|
68
68
|
*/
|
|
69
|
-
async function handleRecommendTool(args, dotAI, logger, requestId) {
|
|
69
|
+
async function handleRecommendTool(args, dotAI, logger, requestId, pluginManager) {
|
|
70
70
|
return await error_handling_1.ErrorHandler.withErrorHandling(async () => {
|
|
71
71
|
// Stage-based routing: extract stage and route to appropriate handler
|
|
72
72
|
const stage = args.stage || 'recommend'; // Default to 'recommend' if not specified
|
|
@@ -86,10 +86,11 @@ async function handleRecommendTool(args, dotAI, logger, requestId) {
|
|
|
86
86
|
return await (0, answer_question_1.handleAnswerQuestionTool)(answerQuestionArgs, dotAI, logger, requestId);
|
|
87
87
|
}
|
|
88
88
|
if (stage === 'generateManifests') {
|
|
89
|
-
|
|
89
|
+
// PRD #343: Pass pluginManager for kubectl operations
|
|
90
|
+
return await (0, generate_manifests_1.handleGenerateManifestsTool)(args, dotAI, logger, requestId, pluginManager);
|
|
90
91
|
}
|
|
91
92
|
if (stage === 'deployManifests') {
|
|
92
|
-
return await (0, deploy_manifests_1.handleDeployManifestsTool)(args, dotAI, logger, requestId);
|
|
93
|
+
return await (0, deploy_manifests_1.handleDeployManifestsTool)(args, dotAI, logger, requestId, pluginManager);
|
|
93
94
|
}
|
|
94
95
|
// Default: recommend stage (original recommend logic)
|
|
95
96
|
// Input validation is handled automatically by MCP SDK with Zod schema
|
|
@@ -130,10 +131,9 @@ async function handleRecommendTool(args, dotAI, logger, requestId) {
|
|
|
130
131
|
intentLength: args.intent.length
|
|
131
132
|
});
|
|
132
133
|
}
|
|
133
|
-
// Ensure cluster connectivity before proceeding with recommendations
|
|
134
|
-
await (0, cluster_utils_1.ensureClusterConnection)(dotAI, logger, requestId, 'RecommendTool');
|
|
135
134
|
// Initialize AI-powered ResourceRecommender with provider
|
|
136
|
-
|
|
135
|
+
// PRD #343: Pass pluginManager for kubectl operations
|
|
136
|
+
const recommender = new schema_1.ResourceRecommender(dotAI.ai, pluginManager);
|
|
137
137
|
// Create discovery function
|
|
138
138
|
const explainResourceFn = async (resource) => {
|
|
139
139
|
logger.debug(`Explaining resource: ${resource}`, { requestId });
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Remediate Tool - AI-powered Kubernetes issue analysis and remediation
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
+
import { PluginManager } from '../core/plugin-manager';
|
|
5
6
|
import { BaseVisualizationData } from '../core/visualization';
|
|
6
7
|
export declare const REMEDIATE_TOOL_NAME = "remediate";
|
|
7
8
|
export declare const REMEDIATE_TOOL_DESCRIPTION = "AI-powered Kubernetes issue analysis that provides root cause identification and actionable remediation steps. Unlike basic kubectl commands, this tool performs multi-step investigation, correlates cluster data, and generates intelligent solutions. Use when users want to understand WHY something is broken, not just see raw status. Ideal for: troubleshooting failures, diagnosing performance issues, analyzing pod problems, investigating networking/storage issues, or any \"what's wrong\" questions.";
|
|
@@ -13,8 +14,8 @@ export declare const REMEDIATE_TOOL_INPUT_SCHEMA: {
|
|
|
13
14
|
}>>>;
|
|
14
15
|
confidenceThreshold: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
15
16
|
maxRiskLevel: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
16
|
-
medium: "medium";
|
|
17
17
|
low: "low";
|
|
18
|
+
medium: "medium";
|
|
18
19
|
high: "high";
|
|
19
20
|
}>>>;
|
|
20
21
|
executeChoice: z.ZodOptional<z.ZodNumber>;
|
|
@@ -115,7 +116,9 @@ interface AIFinalAnalysisResponse {
|
|
|
115
116
|
export declare function parseAIFinalAnalysis(aiResponse: string): AIFinalAnalysisResponse;
|
|
116
117
|
/**
|
|
117
118
|
* Main tool handler for remediate tool
|
|
119
|
+
*
|
|
120
|
+
* PRD #343: pluginManager is required - all kubectl operations go through plugin.
|
|
118
121
|
*/
|
|
119
|
-
export declare function handleRemediateTool(args: any): Promise<any>;
|
|
122
|
+
export declare function handleRemediateTool(args: any, pluginManager: PluginManager): Promise<any>;
|
|
120
123
|
export {};
|
|
121
124
|
//# sourceMappingURL=remediate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remediate.d.ts","sourceRoot":"","sources":["../../src/tools/remediate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"remediate.d.ts","sourceRoot":"","sources":["../../src/tools/remediate.ts"],"names":[],"mappings":"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"}
|