@vfarcic/dot-ai 0.35.0 → 0.37.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.
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Documentation Testing Types
3
+ *
4
+ * Flexible TypeScript interfaces for the documentation testing system.
5
+ * Designed to let AI agents dynamically identify and categorize testable content.
6
+ */
7
+ /**
8
+ * Main session object that tracks a documentation validation workflow
9
+ */
10
+ export interface ValidationSession {
11
+ sessionId: string;
12
+ filePath: string;
13
+ startTime: string;
14
+ currentPhase: ValidationPhase;
15
+ status: SessionStatus;
16
+ metadata: SessionMetadata;
17
+ sections?: DocumentSection[];
18
+ sectionResults?: Record<string, SectionTestResult>;
19
+ }
20
+ /**
21
+ * Session metadata with counters and summary information
22
+ */
23
+ export interface SessionMetadata {
24
+ totalSections: number;
25
+ completedSections: number;
26
+ sectionStatus: Record<string, SectionStatus>;
27
+ nextItemId: number;
28
+ sessionDir: string;
29
+ lastUpdated: string;
30
+ }
31
+ /**
32
+ * The five phases of documentation validation workflow
33
+ */
34
+ export declare enum ValidationPhase {
35
+ SCAN = "scan",// Find all testable items in the documentation
36
+ TEST = "test",// Execute tests on the found items
37
+ ANALYZE = "analyze",// Analyze results and categorize issues
38
+ FIX = "fix",// Generate fixes for identified problems
39
+ DONE = "done"
40
+ }
41
+ /**
42
+ * Overall status of a validation session
43
+ */
44
+ export declare enum SessionStatus {
45
+ ACTIVE = "active",// Session is currently being worked on
46
+ COMPLETED = "completed",// All phases completed successfully
47
+ FAILED = "failed",// Session failed due to errors
48
+ PAUSED = "paused"
49
+ }
50
+ /**
51
+ * Status of a document section during validation
52
+ */
53
+ export declare enum SectionStatus {
54
+ PENDING = "pending",// Section not yet processed
55
+ SCANNING = "scanning",// Currently identifying testable items
56
+ TESTING = "testing",// Currently executing validation items
57
+ ANALYZING = "analyzing",// Currently analyzing test results
58
+ FIXING = "fixing",// Currently generating fixes
59
+ COMPLETED = "completed",// Section validation completed successfully
60
+ FAILED = "failed"
61
+ }
62
+ /**
63
+ * Logical section of a document for validation
64
+ */
65
+ export interface DocumentSection {
66
+ id: string;
67
+ title: string;
68
+ }
69
+ /**
70
+ * Individual issue or recommendation with tracking
71
+ */
72
+ export interface FixableItem {
73
+ id: number;
74
+ text: string;
75
+ status: 'pending' | 'fixed' | 'deferred' | 'failed';
76
+ explanation?: string;
77
+ }
78
+ /**
79
+ * Structured test results for a section (JSON format from client agent)
80
+ */
81
+ export interface SectionTestResult {
82
+ whatWasDone: string;
83
+ issues: FixableItem[];
84
+ recommendations: FixableItem[];
85
+ }
86
+ /**
87
+ * Workflow step returned by MCP interface to guide AI agents
88
+ */
89
+ export interface WorkflowStep {
90
+ sessionId: string;
91
+ phase: ValidationPhase;
92
+ prompt: string;
93
+ nextPhase?: ValidationPhase;
94
+ nextAction?: string;
95
+ instruction?: string;
96
+ agentInstructions?: string;
97
+ workflow: {
98
+ completed: ValidationPhase[];
99
+ current: ValidationPhase;
100
+ remaining: ValidationPhase[];
101
+ };
102
+ data?: any;
103
+ }
104
+ /**
105
+ * Phase-specific result tracking
106
+ */
107
+ export interface PhaseResult {
108
+ phase: ValidationPhase;
109
+ startTime: string;
110
+ endTime?: string;
111
+ status: PhaseStatus;
112
+ summary: string;
113
+ nextPhase?: ValidationPhase;
114
+ aiInsights?: string;
115
+ }
116
+ /**
117
+ * Status of a validation phase
118
+ */
119
+ export declare enum PhaseStatus {
120
+ PENDING = "pending",
121
+ IN_PROGRESS = "in_progress",
122
+ COMPLETED = "completed",
123
+ FAILED = "failed"
124
+ }
125
+ //# sourceMappingURL=doc-testing-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-testing-types.d.ts","sourceRoot":"","sources":["../../src/core/doc-testing-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Documentation Testing Types
4
+ *
5
+ * Flexible TypeScript interfaces for the documentation testing system.
6
+ * Designed to let AI agents dynamically identify and categorize testable content.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PhaseStatus = exports.SectionStatus = exports.SessionStatus = exports.ValidationPhase = void 0;
10
+ /**
11
+ * The five phases of documentation validation workflow
12
+ */
13
+ var ValidationPhase;
14
+ (function (ValidationPhase) {
15
+ ValidationPhase["SCAN"] = "scan";
16
+ ValidationPhase["TEST"] = "test";
17
+ ValidationPhase["ANALYZE"] = "analyze";
18
+ ValidationPhase["FIX"] = "fix";
19
+ ValidationPhase["DONE"] = "done"; // Mark session as completed
20
+ })(ValidationPhase || (exports.ValidationPhase = ValidationPhase = {}));
21
+ /**
22
+ * Overall status of a validation session
23
+ */
24
+ var SessionStatus;
25
+ (function (SessionStatus) {
26
+ SessionStatus["ACTIVE"] = "active";
27
+ SessionStatus["COMPLETED"] = "completed";
28
+ SessionStatus["FAILED"] = "failed";
29
+ SessionStatus["PAUSED"] = "paused"; // Session temporarily paused
30
+ })(SessionStatus || (exports.SessionStatus = SessionStatus = {}));
31
+ /**
32
+ * Status of a document section during validation
33
+ */
34
+ var SectionStatus;
35
+ (function (SectionStatus) {
36
+ SectionStatus["PENDING"] = "pending";
37
+ SectionStatus["SCANNING"] = "scanning";
38
+ SectionStatus["TESTING"] = "testing";
39
+ SectionStatus["ANALYZING"] = "analyzing";
40
+ SectionStatus["FIXING"] = "fixing";
41
+ SectionStatus["COMPLETED"] = "completed";
42
+ SectionStatus["FAILED"] = "failed"; // Section validation failed
43
+ })(SectionStatus || (exports.SectionStatus = SectionStatus = {}));
44
+ /**
45
+ * Status of a validation phase
46
+ */
47
+ var PhaseStatus;
48
+ (function (PhaseStatus) {
49
+ PhaseStatus["PENDING"] = "pending";
50
+ PhaseStatus["IN_PROGRESS"] = "in_progress";
51
+ PhaseStatus["COMPLETED"] = "completed";
52
+ PhaseStatus["FAILED"] = "failed";
53
+ })(PhaseStatus || (exports.PhaseStatus = PhaseStatus = {}));
@@ -52,21 +52,21 @@ export interface ErrorContext {
52
52
  retryCount?: number;
53
53
  }
54
54
  /**
55
- * Structured error interface
55
+ * Structured error class that extends native Error
56
56
  */
57
- export interface AppError {
58
- id: string;
59
- code: string;
60
- category: ErrorCategory;
61
- severity: ErrorSeverity;
62
- message: string;
63
- userMessage?: string;
64
- technicalDetails?: string;
65
- context: ErrorContext;
66
- timestamp: Date;
67
- suggestedActions: string[];
68
- isRetryable: boolean;
69
- cause?: AppError;
57
+ export declare class AppError extends Error {
58
+ readonly id: string;
59
+ readonly code: string;
60
+ readonly category: ErrorCategory;
61
+ readonly severity: ErrorSeverity;
62
+ readonly userMessage?: string;
63
+ readonly technicalDetails?: string;
64
+ readonly context: ErrorContext;
65
+ readonly timestamp: Date;
66
+ readonly suggestedActions: string[];
67
+ readonly isRetryable: boolean;
68
+ readonly cause?: AppError;
69
+ constructor(id: string, code: string, category: ErrorCategory, severity: ErrorSeverity, message: string, context: ErrorContext, timestamp: Date, suggestedActions: string[], isRetryable: boolean, userMessage?: string, technicalDetails?: string, cause?: AppError);
70
70
  }
71
71
  /**
72
72
  * Log levels for structured logging
@@ -1 +1 @@
1
- {"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/core/error-handling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/core/error-handling.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * with support for MCP protocol, CLI operations, and core functionality.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ErrorHandler = exports.ConsoleLogger = exports.LogLevel = exports.ErrorSeverity = exports.ErrorCategory = void 0;
9
+ exports.ErrorHandler = exports.ConsoleLogger = exports.LogLevel = exports.AppError = exports.ErrorSeverity = exports.ErrorCategory = void 0;
10
10
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
11
11
  /**
12
12
  * Error categories for systematic error classification
@@ -42,6 +42,44 @@ var ErrorSeverity;
42
42
  ErrorSeverity["HIGH"] = "high";
43
43
  ErrorSeverity["CRITICAL"] = "critical"; // System-threatening, immediate action required
44
44
  })(ErrorSeverity || (exports.ErrorSeverity = ErrorSeverity = {}));
45
+ /**
46
+ * Structured error class that extends native Error
47
+ */
48
+ class AppError extends Error {
49
+ // Core identification
50
+ id;
51
+ code;
52
+ category;
53
+ severity;
54
+ // User-facing information
55
+ userMessage;
56
+ technicalDetails;
57
+ // Context and debugging
58
+ context;
59
+ // Timing
60
+ timestamp;
61
+ // Recovery guidance
62
+ suggestedActions;
63
+ isRetryable;
64
+ // Chaining
65
+ cause;
66
+ constructor(id, code, category, severity, message, context, timestamp, suggestedActions, isRetryable, userMessage, technicalDetails, cause) {
67
+ super(message);
68
+ this.name = 'AppError';
69
+ this.id = id;
70
+ this.code = code;
71
+ this.category = category;
72
+ this.severity = severity;
73
+ this.context = context;
74
+ this.timestamp = timestamp;
75
+ this.suggestedActions = suggestedActions;
76
+ this.isRetryable = isRetryable;
77
+ this.userMessage = userMessage;
78
+ this.technicalDetails = technicalDetails;
79
+ this.cause = cause;
80
+ }
81
+ }
82
+ exports.AppError = AppError;
45
83
  /**
46
84
  * Log levels for structured logging
47
85
  */
@@ -161,21 +199,8 @@ class ErrorHandler {
161
199
  ...context
162
200
  };
163
201
  const suggestedActions = context.suggestedActions || this.getDefaultSuggestedActions(category);
164
- const appError = {
165
- id: errorId,
166
- code: this.generateErrorCode(category, severity),
167
- category,
168
- severity,
169
- message,
170
- userMessage: this.getUserFriendlyMessage(category),
171
- technicalDetails: originalError?.message,
172
- context: fullContext,
173
- timestamp,
174
- suggestedActions,
175
- isRetryable: fullContext.isRetryable || false,
176
- // Don't wrap the original error to prevent circular references
177
- cause: undefined
178
- };
202
+ const appError = new AppError(errorId, this.generateErrorCode(category, severity), category, severity, message, fullContext, timestamp, suggestedActions, fullContext.isRetryable || false, this.getUserFriendlyMessage(category), originalError?.message, undefined // Don't wrap the original error to prevent circular references
203
+ );
179
204
  // Log the error
180
205
  this.logger.error(`Error created: ${message}`, appError, {
181
206
  category,
@@ -378,21 +403,8 @@ class ErrorHandler {
378
403
  isRetryable: false,
379
404
  retryCount: 0
380
405
  };
381
- const appError = {
382
- id: errorId,
383
- code: this.generateErrorCode(category, severity),
384
- category,
385
- severity,
386
- message: error.message,
387
- userMessage: this.getUserFriendlyMessage(category),
388
- technicalDetails: error.message,
389
- context,
390
- timestamp,
391
- suggestedActions: this.getDefaultSuggestedActions(category),
392
- isRetryable: false,
393
- // No cause to prevent circular reference
394
- cause: undefined
395
- };
406
+ const appError = new AppError(errorId, this.generateErrorCode(category, severity), category, severity, error.message, context, timestamp, this.getDefaultSuggestedActions(category), false, this.getUserFriendlyMessage(category), error.message, undefined // No cause to prevent circular reference
407
+ );
396
408
  return appError;
397
409
  }
398
410
  }
@@ -13,9 +13,6 @@ export interface KubectlConfig {
13
13
  * Execute kubectl command with proper configuration
14
14
  */
15
15
  export declare function executeKubectl(args: string[], config?: KubectlConfig): Promise<string>;
16
- /**
17
- * Build kubectl command string with proper flags
18
- */
19
16
  export declare function buildKubectlCommand(args: string[], config?: KubectlConfig): string;
20
17
  export declare class ErrorClassifier {
21
18
  static classifyError(error: Error): {
@@ -1 +1 @@
1
- {"version":3,"file":"kubernetes-utils.d.ts","sourceRoot":"","sources":["../../src/core/kubernetes-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB5F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAiBlF;AAGD,qBAAa,eAAe;IAC1B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE;IA0D7E,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAInC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAIrC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAI1C,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAYlC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAgBzC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAQ1C,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAYrC,OAAO,CAAC,MAAM,CAAC,gCAAgC;CAGhD"}
1
+ {"version":3,"file":"kubernetes-utils.d.ts","sourceRoot":"","sources":["../../src/core/kubernetes-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB5F;AAsBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAmBlF;AAGD,qBAAa,eAAe;IAC1B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE;IA0D7E,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAInC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAIrC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAI1C,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAYlC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAgBzC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAQ1C,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAYrC,OAAO,CAAC,MAAM,CAAC,gCAAgC;CAGhD"}
@@ -39,19 +39,34 @@ async function executeKubectl(args, config) {
39
39
  /**
40
40
  * Build kubectl command string with proper flags
41
41
  */
42
+ /**
43
+ * Safely escape shell arguments to prevent command injection
44
+ */
45
+ function escapeShellArg(arg) {
46
+ if (!arg || typeof arg !== 'string') {
47
+ return '""';
48
+ }
49
+ // If the argument contains only safe characters, return as-is
50
+ if (/^[a-zA-Z0-9._/-]+$/.test(arg)) {
51
+ return arg;
52
+ }
53
+ // Otherwise, quote and escape
54
+ return `"${arg.replace(/["\\]/g, '\\$&')}"`;
55
+ }
42
56
  function buildKubectlCommand(args, config) {
43
- let command = 'kubectl';
57
+ const cmdParts = ['kubectl'];
44
58
  if (config?.kubeconfig) {
45
- command += ` --kubeconfig=${config.kubeconfig}`;
59
+ cmdParts.push('--kubeconfig', escapeShellArg(config.kubeconfig));
46
60
  }
47
61
  if (config?.context) {
48
- command += ` --context=${config.context}`;
62
+ cmdParts.push('--context', escapeShellArg(config.context));
49
63
  }
50
64
  if (config?.namespace) {
51
- command += ` --namespace=${config.namespace}`;
65
+ cmdParts.push('--namespace', escapeShellArg(config.namespace));
52
66
  }
53
- command += ` ${args.join(' ')}`;
54
- return command;
67
+ // Safely add all arguments
68
+ args.forEach(arg => cmdParts.push(escapeShellArg(arg)));
69
+ return cmdParts.join(' ');
55
70
  }
56
71
  // Enhanced Error Classification System
57
72
  class ErrorClassifier {
@@ -106,10 +121,27 @@ class ErrorClassifier {
106
121
  };
107
122
  }
108
123
  static isNetworkError(message) {
109
- return /getaddrinfo ENOTFOUND|timeout|ECONNREFUSED|ENOTFOUND|network|unreachable/i.test(message);
124
+ // Fixed: Avoid catastrophic backtracking by using non-overlapping alternation
125
+ const networkPatterns = [
126
+ 'getaddrinfo ENOTFOUND',
127
+ 'timeout',
128
+ 'ECONNREFUSED',
129
+ 'ENOTFOUND',
130
+ 'network',
131
+ 'unreachable'
132
+ ];
133
+ return networkPatterns.some(pattern => message.toLowerCase().includes(pattern.toLowerCase()));
110
134
  }
111
135
  static isAuthenticationError(message) {
112
- return /unauthorized|invalid bearer token|certificate|auth|authentication/i.test(message);
136
+ // Fixed: Avoid catastrophic backtracking by using non-overlapping alternation
137
+ const authPatterns = [
138
+ 'unauthorized',
139
+ 'invalid bearer token',
140
+ 'certificate',
141
+ 'auth',
142
+ 'authentication'
143
+ ];
144
+ return authPatterns.some(pattern => message.toLowerCase().includes(pattern.toLowerCase()));
113
145
  }
114
146
  static isAuthorizationError(message) {
115
147
  return /forbidden|cannot list|cannot get|cannot create|RBAC|permission denied/i.test(message);
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
@@ -145,19 +145,25 @@ class SchemaParser {
145
145
  if (maxMatch) {
146
146
  constraints.maximum = parseInt(maxMatch[1]);
147
147
  }
148
- // Extract enum values
149
- const enumMatch = description.match(/(?:possible values|valid values|values)\s*(?:are)?:\s*([^.]+)/i);
148
+ // Extract enum values - Fixed: Avoid catastrophic backtracking
149
+ const enumMatch = description.match(/(possible values|valid values|values)\s*(?:are)?:\s*([^.]+)/i);
150
150
  if (enumMatch) {
151
- const values = enumMatch[1]
151
+ const values = enumMatch[2]
152
152
  .split(/,|\s+and\s+/)
153
153
  .map(v => v.trim())
154
154
  .filter(v => v.length > 0);
155
155
  constraints.enum = values;
156
156
  }
157
- // Extract default values - handle multiple patterns: "(default: value)", "defaults to value", ". Default: value"
158
- const defaultMatch = description.match(/(?:\(default:\s*([^)]+)\)|(?:defaults?\s+to\s+(\w+))|(?:\.\s+default:\s*(\w+)))/i);
157
+ // Extract default values - Fixed: Use simpler non-catastrophic patterns
158
+ let defaultMatch = description.match(/\(default:\s*([^)]+)\)/i);
159
+ if (!defaultMatch) {
160
+ defaultMatch = description.match(/defaults?\s+to\s+(\w+)/i);
161
+ }
162
+ if (!defaultMatch) {
163
+ defaultMatch = description.match(/\.\s+default:\s*(\w+)/i);
164
+ }
159
165
  if (defaultMatch) {
160
- const defaultValue = (defaultMatch[1] || defaultMatch[2] || defaultMatch[3]).trim();
166
+ const defaultValue = defaultMatch[1].trim();
161
167
  if (type === 'integer') {
162
168
  const parsed = parseInt(defaultValue);
163
169
  if (!isNaN(parsed)) {
@@ -45,6 +45,7 @@ export declare class CliInterface {
45
45
  private handleAnswerQuestionCommand;
46
46
  private handleGenerateManifestsCommand;
47
47
  private handleDeployManifestsCommand;
48
+ private handleTestDocsCommand;
48
49
  continueWorkflow(workflowId: string, input: {
49
50
  responses: Record<string, any>;
50
51
  }): Promise<CliResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/interfaces/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAahC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAEX,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,GAAE,SAAc;IAiBjD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI5B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IA2LrB,WAAW,IAAI,MAAM,EAAE;IAIvB,cAAc,IAAI,MAAM,EAAE;IAIpB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAoB1B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAgD9D,OAAO,CAAC,yBAAyB;IA0B3B,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,SAAS,CAAC;YAoC9E,mBAAmB;YAoBnB,kBAAkB;YAsBlB,sBAAsB;YAsCtB,2BAA2B;YAoC3B,2BAA2B;YAuC3B,8BAA8B;YAoC9B,4BAA4B;IAoCpC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBzG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAgCvD,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;YACW,6BAA6B;IA+BrC,GAAG,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CASxD;AAGD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/interfaces/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAahC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAS;gBAEX,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,GAAE,SAAc;IAiBjD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI5B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IA4NrB,WAAW,IAAI,MAAM,EAAE;IAIvB,cAAc,IAAI,MAAM,EAAE;IAIpB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAoB1B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAgD9D,OAAO,CAAC,yBAAyB;IA4B3B,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,SAAS,CAAC;YAsC9E,mBAAmB;YAoBnB,kBAAkB;YAsBlB,sBAAsB;YAsCtB,2BAA2B;YAoC3B,2BAA2B;YAuC3B,8BAA8B;YAoC9B,4BAA4B;YAiC5B,qBAAqB;IAmD7B,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBzG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAgCvD,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;YACW,6BAA6B;IA+BrC,GAAG,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CASxD;AAGD,eAAe,YAAY,CAAC"}
@@ -255,6 +255,35 @@ For more help on specific commands, use:
255
255
  const result = await this.executeCommand('deployManifests', options);
256
256
  this.outputResult(result, options.output || this.config.defaultOutput || 'json', this.config.outputFile);
257
257
  });
258
+ // Test Docs command
259
+ this.program
260
+ .command('test-docs')
261
+ .description('Test documentation for accuracy and functionality')
262
+ .option('--file <path>', 'Path to documentation file to test (optional - if not provided, will discover available files)')
263
+ .option('--file-pattern <pattern>', 'File pattern for discovery (e.g., "**/*.md", "*.rst") - defaults to DOT_AI_DOC_PATTERN env var or "**/*.md"')
264
+ .option('--session-id <id>', 'Existing session ID to continue')
265
+ .option('--session-dir <path>', 'Directory to store session files (defaults to DOT_AI_SESSION_DIR env var)')
266
+ .option('--phase <phase>', 'Specific phase to run (scan, test, analyze, fix, done)', 'scan')
267
+ .option('--section-id <id>', 'Section ID when submitting test results')
268
+ .option('--results <text>', 'Test results to store (for client agent reporting back)')
269
+ .option('--output <format>', 'Output format (json|yaml|table)', 'json')
270
+ .action(async (options, command) => {
271
+ // Get global options from parent command
272
+ const globalOptions = command.parent?.opts() || {};
273
+ this.processGlobalOptions(globalOptions);
274
+ // Validate output format
275
+ if (options.output && !['json', 'yaml', 'table'].includes(options.output)) {
276
+ console.error('Error: Invalid output format. Supported: json, yaml, table');
277
+ process.exit(1);
278
+ }
279
+ // Validate phase
280
+ if (options.phase && !['scan', 'test', 'analyze', 'fix', 'done'].includes(options.phase)) {
281
+ console.error('Error: Invalid phase. Supported: scan, test, analyze, fix, done');
282
+ process.exit(1);
283
+ }
284
+ const result = await this.executeCommand('testDocs', options);
285
+ this.outputResult(result, options.output || this.config.defaultOutput || 'json', this.config.outputFile);
286
+ });
258
287
  // REMOVED: enhance command - moved to legacy reference
259
288
  // See src/legacy/tools/enhance-solution.ts for reference implementation
260
289
  }
@@ -345,6 +374,8 @@ For more help on specific commands, use:
345
374
  return [...commonOptions, 'solution-id', 'session-dir'];
346
375
  case 'deployManifests':
347
376
  return [...commonOptions, 'solution-id', 'session-dir', 'timeout'];
377
+ case 'testDocs':
378
+ return [...commonOptions, 'file', 'file-pattern', 'session-id', 'session-dir', 'phase', 'section-id', 'results'];
348
379
  // REMOVED: enhance command, deploy command
349
380
  default:
350
381
  return commonOptions;
@@ -353,7 +384,7 @@ For more help on specific commands, use:
353
384
  async executeCommand(command, options = {}) {
354
385
  try {
355
386
  // Only initialize DotAI for commands that need cluster access
356
- if (command !== 'chooseSolution' && command !== 'answerQuestion' && command !== 'generateManifests') {
387
+ if (command !== 'chooseSolution' && command !== 'answerQuestion' && command !== 'generateManifests' && command !== 'testDocs') {
357
388
  await this.ensureDotAI().initialize();
358
389
  }
359
390
  switch (command) {
@@ -371,6 +402,8 @@ For more help on specific commands, use:
371
402
  return await this.handleGenerateManifestsCommand(options);
372
403
  case 'deployManifests':
373
404
  return await this.handleDeployManifestsCommand(options);
405
+ case 'testDocs':
406
+ return await this.handleTestDocsCommand(options);
374
407
  // REMOVED: enhance command, deploy command
375
408
  default:
376
409
  return {
@@ -572,6 +605,48 @@ For more help on specific commands, use:
572
605
  };
573
606
  }
574
607
  }
608
+ async handleTestDocsCommand(options) {
609
+ try {
610
+ // Show progress for documentation testing
611
+ this.showProgress('📄 Analyzing documentation for testable items...');
612
+ // Validate file exists if provided
613
+ const fs = require('fs');
614
+ if (options.file && !fs.existsSync(options.file)) {
615
+ return {
616
+ success: false,
617
+ error: `Documentation file not found: ${options.file}`
618
+ };
619
+ }
620
+ // Prepare arguments for the testDocs tool
621
+ const toolArgs = {
622
+ filePath: options.file,
623
+ sessionId: options.sessionId,
624
+ phase: options.phase,
625
+ filePattern: options.filePattern,
626
+ sessionDir: options.sessionDir,
627
+ sectionId: options.sectionId,
628
+ results: options.results
629
+ };
630
+ // Execute the testDocs tool directly
631
+ const { handleTestDocsTool } = await Promise.resolve().then(() => __importStar(require('../tools/test-docs')));
632
+ const requestId = `cli_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
633
+ const result = await handleTestDocsTool(toolArgs, this.dotAI || null, this.logger, requestId);
634
+ this.clearProgress();
635
+ // Parse the tool result
636
+ const responseData = JSON.parse(result.content[0].text);
637
+ return {
638
+ success: true,
639
+ data: responseData
640
+ };
641
+ }
642
+ catch (error) {
643
+ this.clearProgress();
644
+ return {
645
+ success: false,
646
+ error: `Documentation testing failed: ${error.message}`
647
+ };
648
+ }
649
+ }
575
650
  // REMOVED: handleEnhanceCommand method - moved to legacy reference
576
651
  // See src/legacy/tools/enhance-solution.ts for reference implementation
577
652
  async continueWorkflow(workflowId, input) {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/interfaces/mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AA0CtC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAa;gBAEzB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe;IA2BjD;;OAEG;IACH,OAAO,CAAC,aAAa;IAsFrB,OAAO,CAAC,iBAAiB;IAKnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,OAAO,IAAI,OAAO;CAGnB"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/interfaces/mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAgDtC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAa;gBAEzB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe;IA2BjD;;OAEG;IACH,OAAO,CAAC,aAAa;IAmGrB,OAAO,CAAC,iBAAiB;IAKnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,OAAO,IAAI,OAAO;CAGnB"}