grok-cli-hurry-mode 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/hooks/use-input-handler.js +588 -0
  2. package/dist/hooks/use-input-handler.js.map +1 -1
  3. package/dist/subagents/subagent-framework.d.ts +66 -0
  4. package/dist/subagents/subagent-framework.js +349 -0
  5. package/dist/subagents/subagent-framework.js.map +1 -0
  6. package/dist/tools/documentation/agent-system-generator.d.ts +30 -0
  7. package/dist/tools/documentation/agent-system-generator.js +816 -0
  8. package/dist/tools/documentation/agent-system-generator.js.map +1 -0
  9. package/dist/tools/documentation/api-docs-generator.d.ts +89 -0
  10. package/dist/tools/documentation/api-docs-generator.js +344 -0
  11. package/dist/tools/documentation/api-docs-generator.js.map +1 -0
  12. package/dist/tools/documentation/auto-update-system.d.ts +47 -0
  13. package/dist/tools/documentation/auto-update-system.js +278 -0
  14. package/dist/tools/documentation/auto-update-system.js.map +1 -0
  15. package/dist/tools/documentation/changelog-generator.d.ts +39 -0
  16. package/dist/tools/documentation/changelog-generator.js +255 -0
  17. package/dist/tools/documentation/changelog-generator.js.map +1 -0
  18. package/dist/tools/documentation/claude-md-parser.d.ts +25 -0
  19. package/dist/tools/documentation/claude-md-parser.js +108 -0
  20. package/dist/tools/documentation/claude-md-parser.js.map +1 -0
  21. package/dist/tools/documentation/comments-generator.d.ts +55 -0
  22. package/dist/tools/documentation/comments-generator.js +238 -0
  23. package/dist/tools/documentation/comments-generator.js.map +1 -0
  24. package/dist/tools/documentation/docs-menu.d.ts +9 -0
  25. package/dist/tools/documentation/docs-menu.js +57 -0
  26. package/dist/tools/documentation/docs-menu.js.map +1 -0
  27. package/dist/tools/documentation/readme-generator.d.ts +31 -0
  28. package/dist/tools/documentation/readme-generator.js +244 -0
  29. package/dist/tools/documentation/readme-generator.js.map +1 -0
  30. package/dist/tools/documentation/self-healing-system.d.ts +66 -0
  31. package/dist/tools/documentation/self-healing-system.js +444 -0
  32. package/dist/tools/documentation/self-healing-system.js.map +1 -0
  33. package/dist/tools/documentation/smart-prd-assistant.d.ts +45 -0
  34. package/dist/tools/documentation/smart-prd-assistant.js +325 -0
  35. package/dist/tools/documentation/smart-prd-assistant.js.map +1 -0
  36. package/dist/tools/documentation/update-agent-docs.d.ts +37 -0
  37. package/dist/tools/documentation/update-agent-docs.js +275 -0
  38. package/dist/tools/documentation/update-agent-docs.js.map +1 -0
  39. package/dist/tools/intelligence/ast-parser.js +22 -4
  40. package/dist/tools/intelligence/ast-parser.js.map +1 -1
  41. package/dist/ui/app.d.ts +2 -1
  42. package/dist/ui/app.js +27 -6
  43. package/dist/ui/app.js.map +1 -1
  44. package/dist/ui/components/api-key-input.d.ts +2 -1
  45. package/dist/ui/components/api-key-input.js +18 -3
  46. package/dist/ui/components/api-key-input.js.map +1 -1
  47. package/dist/ui/components/chat-history.d.ts +2 -1
  48. package/dist/ui/components/chat-history.js +35 -13
  49. package/dist/ui/components/chat-history.js.map +1 -1
  50. package/dist/ui/components/chat-input.d.ts +2 -1
  51. package/dist/ui/components/chat-input.js +36 -15
  52. package/dist/ui/components/chat-input.js.map +1 -1
  53. package/dist/ui/components/chat-interface.d.ts +2 -1
  54. package/dist/ui/components/chat-interface.js +39 -5
  55. package/dist/ui/components/chat-interface.js.map +1 -1
  56. package/dist/ui/components/command-suggestions.d.ts +2 -1
  57. package/dist/ui/components/command-suggestions.js +8 -3
  58. package/dist/ui/components/command-suggestions.js.map +1 -1
  59. package/dist/ui/components/confirmation-dialog.d.ts +2 -1
  60. package/dist/ui/components/confirmation-dialog.js +39 -4
  61. package/dist/ui/components/confirmation-dialog.js.map +1 -1
  62. package/dist/ui/components/diff-renderer.js +66 -57
  63. package/dist/ui/components/diff-renderer.js.map +1 -1
  64. package/dist/ui/components/loading-spinner.d.ts +2 -1
  65. package/dist/ui/components/loading-spinner.js +13 -3
  66. package/dist/ui/components/loading-spinner.js.map +1 -1
  67. package/dist/ui/components/mcp-status.d.ts +2 -1
  68. package/dist/ui/components/mcp-status.js +6 -3
  69. package/dist/ui/components/mcp-status.js.map +1 -1
  70. package/dist/ui/components/model-selection.d.ts +2 -1
  71. package/dist/ui/components/model-selection.js +11 -2
  72. package/dist/ui/components/model-selection.js.map +1 -1
  73. package/dist/ui/shared/max-sized-box.js +2 -2
  74. package/dist/ui/shared/max-sized-box.js.map +1 -1
  75. package/dist/ui/utils/code-colorizer.js +2 -2
  76. package/dist/ui/utils/code-colorizer.js.map +1 -1
  77. package/dist/ui/utils/markdown-renderer.d.ts +2 -1
  78. package/dist/ui/utils/markdown-renderer.js +3 -3
  79. package/dist/ui/utils/markdown-renderer.js.map +1 -1
  80. package/package.json +21 -12
@@ -0,0 +1,444 @@
1
+ import path from 'path';
2
+ import fs from 'fs/promises';
3
+ import { existsSync } from 'fs';
4
+ export class SelfHealingSystem {
5
+ constructor(rootPath, config) {
6
+ this.rootPath = rootPath;
7
+ this.agentPath = path.join(rootPath, '.agent');
8
+ this.config = {
9
+ enabled: true,
10
+ onErrorPrompt: 'gentle',
11
+ enforceGuardrails: true,
12
+ simulateOnPlan: 'smart',
13
+ ...config
14
+ };
15
+ }
16
+ async captureIncident(error, context) {
17
+ try {
18
+ const incident = await this.analyzeAndCreateIncident(error, context);
19
+ const incidentPath = path.join(this.agentPath, 'incidents', `${incident.id}.md`);
20
+ // Ensure incidents directory exists
21
+ await fs.mkdir(path.dirname(incidentPath), { recursive: true });
22
+ // Write incident documentation
23
+ const incidentContent = this.generateIncidentContent(incident);
24
+ await fs.writeFile(incidentPath, incidentContent);
25
+ // Try to create a guardrail
26
+ const guardrail = await this.generateGuardrailFromIncident(incident);
27
+ if (guardrail) {
28
+ await this.saveGuardrail(guardrail);
29
+ incident.guardrailCreated = guardrail.id;
30
+ }
31
+ return {
32
+ success: true,
33
+ incidentId: incident.id,
34
+ message: `✅ Incident documented: ${incident.title}\n${guardrail ? `🛡️ Guardrail created: ${guardrail.name}` : ''}\n📁 Saved to: .agent/incidents/${incident.id}.md`
35
+ };
36
+ }
37
+ catch (error) {
38
+ return {
39
+ success: false,
40
+ message: `Failed to capture incident: ${error.message}`
41
+ };
42
+ }
43
+ }
44
+ async analyzeAndCreateIncident(error, context) {
45
+ const id = this.generateIncidentId();
46
+ const now = new Date();
47
+ // Extract information from error
48
+ const errorMessage = error?.message || error?.toString() || 'Unknown error';
49
+ const title = this.extractErrorTitle(errorMessage);
50
+ const trigger = this.extractTrigger(error, context);
51
+ const rootCause = this.analyzeRootCause(error, context);
52
+ const fix = this.suggestFix(error, context);
53
+ const impact = this.assessImpact(error, context);
54
+ const relatedFiles = this.extractRelatedFiles(error, context);
55
+ // Check for previous occurrences
56
+ const recurrenceCount = await this.countPreviousOccurrences(title);
57
+ return {
58
+ id,
59
+ title,
60
+ date: now.toISOString(),
61
+ trigger,
62
+ rootCause,
63
+ fix,
64
+ impact,
65
+ recurrenceCount,
66
+ relatedFiles
67
+ };
68
+ }
69
+ extractErrorTitle(errorMessage) {
70
+ // Extract a clean title from error message
71
+ const cleaned = errorMessage
72
+ .replace(/^Error:\s*/i, '')
73
+ .replace(/\s+at\s+.*$/, '')
74
+ .replace(/\s+\(.*\)$/, '')
75
+ .substring(0, 100);
76
+ return cleaned || 'Unknown Error';
77
+ }
78
+ extractTrigger(error, context) {
79
+ if (context?.command) {
80
+ return `Command: ${context.command}`;
81
+ }
82
+ if (context?.operation) {
83
+ return `Operation: ${context.operation}`;
84
+ }
85
+ if (error?.stack) {
86
+ const stackLine = error.stack.split('\n')[1];
87
+ return stackLine ? `Code: ${stackLine.trim()}` : 'Unknown trigger';
88
+ }
89
+ return 'Unknown trigger';
90
+ }
91
+ analyzeRootCause(error, context) {
92
+ const errorMessage = error?.message || '';
93
+ // Common patterns
94
+ if (errorMessage.includes('ENOENT') || errorMessage.includes('not found')) {
95
+ return 'File or resource not found';
96
+ }
97
+ if (errorMessage.includes('permission denied') || errorMessage.includes('EACCES')) {
98
+ return 'Permission denied - insufficient access rights';
99
+ }
100
+ if (errorMessage.includes('timeout')) {
101
+ return 'Operation timed out - possible network or performance issue';
102
+ }
103
+ if (errorMessage.includes('Cannot find module')) {
104
+ return 'Missing dependency or incorrect import path';
105
+ }
106
+ if (errorMessage.includes('syntax error') || errorMessage.includes('unexpected token')) {
107
+ return 'Code syntax error';
108
+ }
109
+ return 'Root cause requires investigation';
110
+ }
111
+ suggestFix(error, context) {
112
+ const errorMessage = error?.message || '';
113
+ if (errorMessage.includes('ENOENT')) {
114
+ return 'Ensure the required file or directory exists before accessing it';
115
+ }
116
+ if (errorMessage.includes('permission denied')) {
117
+ return 'Check file permissions or run with appropriate privileges';
118
+ }
119
+ if (errorMessage.includes('Cannot find module')) {
120
+ return 'Install missing dependency or correct the import path';
121
+ }
122
+ if (errorMessage.includes('timeout')) {
123
+ return 'Increase timeout value or optimize the operation';
124
+ }
125
+ return 'Investigate error details and apply appropriate fix';
126
+ }
127
+ assessImpact(error, context) {
128
+ const errorMessage = error?.message || '';
129
+ if (errorMessage.includes('fatal') || errorMessage.includes('critical')) {
130
+ return 'high';
131
+ }
132
+ if (context?.operation && ['build', 'deploy', 'init'].includes(context.operation)) {
133
+ return 'high';
134
+ }
135
+ if (errorMessage.includes('warning')) {
136
+ return 'low';
137
+ }
138
+ return 'medium';
139
+ }
140
+ extractRelatedFiles(error, context) {
141
+ const files = [];
142
+ if (context?.files) {
143
+ files.push(...context.files);
144
+ }
145
+ if (error?.stack) {
146
+ const stackLines = error.stack.split('\n');
147
+ for (const line of stackLines) {
148
+ const fileMatch = line.match(/\((.*?):\d+:\d+\)/);
149
+ if (fileMatch && fileMatch[1]) {
150
+ files.push(fileMatch[1]);
151
+ }
152
+ }
153
+ }
154
+ return [...new Set(files)]; // Remove duplicates
155
+ }
156
+ async countPreviousOccurrences(title) {
157
+ try {
158
+ const incidentsPath = path.join(this.agentPath, 'incidents');
159
+ if (!existsSync(incidentsPath)) {
160
+ return 0;
161
+ }
162
+ const files = await fs.readdir(incidentsPath);
163
+ let count = 0;
164
+ for (const file of files) {
165
+ if (file.endsWith('.md')) {
166
+ const filePath = path.join(incidentsPath, file);
167
+ const content = await fs.readFile(filePath, 'utf-8');
168
+ if (content.includes(title)) {
169
+ count++;
170
+ }
171
+ }
172
+ }
173
+ return Math.max(0, count - 1); // Subtract 1 for current incident
174
+ }
175
+ catch (error) {
176
+ return 0;
177
+ }
178
+ }
179
+ generateIncidentContent(incident) {
180
+ return `# ${incident.title} - ${incident.date.split('T')[0]}
181
+
182
+ ## 📊 Incident Summary
183
+ - **ID**: ${incident.id}
184
+ - **Date**: ${incident.date}
185
+ - **Impact**: ${incident.impact.toUpperCase()}
186
+ - **Recurrence**: ${incident.recurrenceCount > 0 ? `${incident.recurrenceCount} previous occurrences` : 'First occurrence'}
187
+
188
+ ## 🔥 Trigger
189
+ ${incident.trigger}
190
+
191
+ ## 🔍 Root Cause
192
+ ${incident.rootCause}
193
+
194
+ ## ✅ Fix Applied
195
+ ${incident.fix}
196
+
197
+ ## 📁 Related Files
198
+ ${incident.relatedFiles.length > 0 ? incident.relatedFiles.map(f => `- ${f}`).join('\n') : 'None identified'}
199
+
200
+ ## 🛡️ Prevention
201
+ ${incident.guardrailCreated ? `Guardrail created: ${incident.guardrailCreated}` : 'Manual prevention required'}
202
+
203
+ ## 📚 Related Documentation
204
+ - [Self-Healing SOP](../sop/self-healing-workflow.md)
205
+ - [Guardrails](../guardrails/)
206
+ - [System Critical State](../system/critical-state.md)
207
+
208
+ ---
209
+ *Generated by Grok CLI Self-Healing System*
210
+ *Incident ID: ${incident.id}*
211
+ `;
212
+ }
213
+ async generateGuardrailFromIncident(incident) {
214
+ // Only create guardrails for recurring issues or high-impact incidents
215
+ if (incident.recurrenceCount === 0 && incident.impact !== 'high') {
216
+ return null;
217
+ }
218
+ const id = `guard_${incident.id}`;
219
+ const category = this.determineGuardrailCategory(incident);
220
+ const pattern = this.createGuardrailPattern(incident);
221
+ if (!pattern) {
222
+ return null;
223
+ }
224
+ return {
225
+ id,
226
+ name: `Prevent: ${incident.title}`,
227
+ description: `Automatically generated from incident ${incident.id}. ${incident.rootCause}`,
228
+ category,
229
+ severity: incident.impact === 'high' ? 'error' : 'warning',
230
+ pattern,
231
+ enabled: true,
232
+ createdFrom: incident.id
233
+ };
234
+ }
235
+ determineGuardrailCategory(incident) {
236
+ if (incident.trigger.includes('file') || incident.trigger.includes('path')) {
237
+ return 'configuration';
238
+ }
239
+ if (incident.trigger.includes('command') || incident.trigger.includes('operation')) {
240
+ return 'process';
241
+ }
242
+ if (incident.relatedFiles.some(f => f.includes('src/') || f.includes('lib/'))) {
243
+ return 'architecture';
244
+ }
245
+ return 'process';
246
+ }
247
+ createGuardrailPattern(incident) {
248
+ // Create simple patterns based on common error types
249
+ const errorMessage = incident.trigger.toLowerCase();
250
+ if (errorMessage.includes('enoent') || errorMessage.includes('not found')) {
251
+ return 'check_file_exists';
252
+ }
253
+ if (errorMessage.includes('permission')) {
254
+ return 'check_permissions';
255
+ }
256
+ if (errorMessage.includes('module')) {
257
+ return 'check_dependencies';
258
+ }
259
+ return null;
260
+ }
261
+ async saveGuardrail(guardrail) {
262
+ const guardrailsPath = path.join(this.agentPath, 'guardrails');
263
+ await fs.mkdir(guardrailsPath, { recursive: true });
264
+ const filePath = path.join(guardrailsPath, `${guardrail.id}.md`);
265
+ const content = this.generateGuardrailContent(guardrail);
266
+ await fs.writeFile(filePath, content);
267
+ }
268
+ generateGuardrailContent(guardrail) {
269
+ return `# ${guardrail.name}
270
+
271
+ ## 📋 Rule Details
272
+ - **ID**: ${guardrail.id}
273
+ - **Category**: ${guardrail.category}
274
+ - **Severity**: ${guardrail.severity}
275
+ - **Status**: ${guardrail.enabled ? 'Enabled' : 'Disabled'}
276
+
277
+ ## 📝 Description
278
+ ${guardrail.description}
279
+
280
+ ## 🔍 Pattern
281
+ \`${guardrail.pattern}\`
282
+
283
+ ## 🛠️ Implementation
284
+ This guardrail checks for the following conditions:
285
+ - Pattern: ${guardrail.pattern}
286
+ - Action: ${guardrail.severity === 'error' ? 'Block operation' : 'Show warning'}
287
+
288
+ ## 📚 Related
289
+ ${guardrail.createdFrom ? `- Created from incident: ${guardrail.createdFrom}` : ''}
290
+ - Category: ${guardrail.category}
291
+
292
+ ---
293
+ *Generated by Grok CLI Self-Healing System*
294
+ `;
295
+ }
296
+ async checkGuardrails(operation, context) {
297
+ const violations = [];
298
+ const warnings = [];
299
+ try {
300
+ const guardrails = await this.loadAllGuardrails();
301
+ for (const guardrail of guardrails) {
302
+ if (!guardrail.enabled)
303
+ continue;
304
+ const violated = this.checkGuardrailPattern(guardrail.pattern, operation, context);
305
+ if (violated) {
306
+ if (guardrail.severity === 'error') {
307
+ violations.push(guardrail);
308
+ }
309
+ else {
310
+ warnings.push(guardrail);
311
+ }
312
+ }
313
+ }
314
+ }
315
+ catch (error) {
316
+ // If we can't load guardrails, allow operation to proceed
317
+ }
318
+ return {
319
+ violations,
320
+ warnings,
321
+ passed: violations.length === 0
322
+ };
323
+ }
324
+ async loadAllGuardrails() {
325
+ const guardrailsPath = path.join(this.agentPath, 'guardrails');
326
+ if (!existsSync(guardrailsPath)) {
327
+ return [];
328
+ }
329
+ const files = await fs.readdir(guardrailsPath);
330
+ const guardrails = [];
331
+ for (const file of files) {
332
+ if (file.endsWith('.md')) {
333
+ try {
334
+ const content = await fs.readFile(path.join(guardrailsPath, file), 'utf-8');
335
+ const guardrail = this.parseGuardrailFromContent(content);
336
+ if (guardrail) {
337
+ guardrails.push(guardrail);
338
+ }
339
+ }
340
+ catch (error) {
341
+ // Skip files we can't parse
342
+ }
343
+ }
344
+ }
345
+ return guardrails;
346
+ }
347
+ parseGuardrailFromContent(content) {
348
+ try {
349
+ const idMatch = content.match(/\*\*ID\*\*:\s*(.+)/);
350
+ const nameMatch = content.match(/^#\s*(.+)/m);
351
+ const categoryMatch = content.match(/\*\*Category\*\*:\s*(.+)/);
352
+ const severityMatch = content.match(/\*\*Severity\*\*:\s*(.+)/);
353
+ const statusMatch = content.match(/\*\*Status\*\*:\s*(.+)/);
354
+ const patternMatch = content.match(/`([^`]+)`/);
355
+ const descMatch = content.match(/## 📝 Description\n(.+)/);
356
+ if (!idMatch || !nameMatch || !patternMatch) {
357
+ return null;
358
+ }
359
+ return {
360
+ id: idMatch[1].trim(),
361
+ name: nameMatch[1].trim(),
362
+ description: descMatch ? descMatch[1].trim() : '',
363
+ category: (categoryMatch ? categoryMatch[1].trim() : 'process'),
364
+ severity: (severityMatch ? severityMatch[1].trim() : 'warning'),
365
+ pattern: patternMatch[1],
366
+ enabled: statusMatch ? statusMatch[1].includes('Enabled') : true
367
+ };
368
+ }
369
+ catch (error) {
370
+ return null;
371
+ }
372
+ }
373
+ checkGuardrailPattern(pattern, operation, context) {
374
+ // Simple pattern matching - could be enhanced
375
+ switch (pattern) {
376
+ case 'check_file_exists':
377
+ return context?.files && context.files.some((f) => !existsSync(f));
378
+ case 'check_permissions':
379
+ return false; // Would need actual permission check
380
+ case 'check_dependencies':
381
+ return false; // Would need dependency analysis
382
+ default:
383
+ return operation.toLowerCase().includes(pattern.toLowerCase());
384
+ }
385
+ }
386
+ generateIncidentId() {
387
+ const timestamp = Date.now().toString(36);
388
+ const random = Math.random().toString(36).substr(2, 5);
389
+ return `incident_${timestamp}_${random}`;
390
+ }
391
+ async listIncidents() {
392
+ const incidentsPath = path.join(this.agentPath, 'incidents');
393
+ if (!existsSync(incidentsPath)) {
394
+ return [];
395
+ }
396
+ const files = await fs.readdir(incidentsPath);
397
+ const incidents = [];
398
+ for (const file of files) {
399
+ if (file.endsWith('.md')) {
400
+ try {
401
+ const content = await fs.readFile(path.join(incidentsPath, file), 'utf-8');
402
+ const incident = this.parseIncidentFromContent(content);
403
+ if (incident) {
404
+ incidents.push(incident);
405
+ }
406
+ }
407
+ catch (error) {
408
+ // Skip files we can't parse
409
+ }
410
+ }
411
+ }
412
+ return incidents.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
413
+ }
414
+ parseIncidentFromContent(content) {
415
+ // Basic parsing - could be enhanced
416
+ try {
417
+ const idMatch = content.match(/\*\*ID\*\*:\s*(.+)/);
418
+ const titleMatch = content.match(/^#\s*(.+)/m);
419
+ const dateMatch = content.match(/\*\*Date\*\*:\s*(.+)/);
420
+ const impactMatch = content.match(/\*\*Impact\*\*:\s*(.+)/);
421
+ if (!idMatch || !titleMatch) {
422
+ return null;
423
+ }
424
+ return {
425
+ id: idMatch[1].trim(),
426
+ title: titleMatch[1].split(' - ')[0].trim(),
427
+ date: dateMatch ? dateMatch[1].trim() : '',
428
+ trigger: 'Unknown',
429
+ rootCause: 'Unknown',
430
+ fix: 'Unknown',
431
+ impact: (impactMatch ? impactMatch[1].toLowerCase().trim() : 'medium'),
432
+ recurrenceCount: 0,
433
+ relatedFiles: []
434
+ };
435
+ }
436
+ catch (error) {
437
+ return null;
438
+ }
439
+ }
440
+ getConfig() {
441
+ return { ...this.config };
442
+ }
443
+ }
444
+ //# sourceMappingURL=self-healing-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-healing-system.js","sourceRoot":"","sources":["../../../src/tools/documentation/self-healing-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export interface PRDAnalysis {
2
+ fileName: string;
3
+ title: string;
4
+ content: string;
5
+ suggestions: PRDSuggestion[];
6
+ conflicts: string[];
7
+ similarTasks: string[];
8
+ missingContext: string[];
9
+ architectureImpact: string[];
10
+ }
11
+ export interface PRDSuggestion {
12
+ type: 'context' | 'pattern' | 'dependency' | 'conflict' | 'architecture';
13
+ priority: 'low' | 'medium' | 'high';
14
+ message: string;
15
+ reference?: string;
16
+ }
17
+ export interface ProjectContext {
18
+ architecture: string[];
19
+ patterns: string[];
20
+ dependencies: string[];
21
+ existingTasks: string[];
22
+ systemConstraints: string[];
23
+ }
24
+ export declare class SmartPRDAssistant {
25
+ private rootPath;
26
+ private agentPath;
27
+ constructor(rootPath: string);
28
+ analyzePRD(prdPath: string): Promise<PRDAnalysis>;
29
+ monitorTasksFolder(): Promise<{
30
+ newPRDs: string[];
31
+ analysisResults: PRDAnalysis[];
32
+ }>;
33
+ private loadProjectContext;
34
+ private extractTitle;
35
+ private extractKeyPoints;
36
+ private generateSuggestions;
37
+ private detectConflicts;
38
+ private findSimilarTasks;
39
+ private detectMissingContext;
40
+ private analyzeArchitectureImpact;
41
+ private hasConflict;
42
+ private extractKeywords;
43
+ private calculateSimilarity;
44
+ generateAnalysisReport(analysis: PRDAnalysis): string;
45
+ }