@weavelogic/knowledge-graph-agent 0.10.6 → 0.11.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.
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAyV9C"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAoe9C"}
@@ -173,6 +173,108 @@ function createAnalyzeCommand() {
173
173
  process.exit(1);
174
174
  }
175
175
  });
176
+ command.command("migrate").description("Implement analysis recommendations using AI agents to fill gaps, answer questions, and build connections").argument("[path]", "Project root path", ".").option("-d, --docs <dir>", "Documentation directory", "docs").option("-a, --analysis <dir>", "Analysis directory (relative to docs)", "analysis").option("--max-agents <n>", "Maximum parallel agents", "8").option("--dry-run", "Preview changes without making them").option("--use-vector", "Use vector search for context retrieval").option("-v, --verbose", "Verbose output").action(async (path, options) => {
177
+ const spinner = ora("Initializing migration orchestration...").start();
178
+ try {
179
+ const projectRoot = validateProjectRoot(path);
180
+ const docsDir = options.docs;
181
+ const analysisDir = options.analysis;
182
+ const dryRun = options.dryRun ?? false;
183
+ const verbose = options.verbose ?? false;
184
+ const analysisPath = join(projectRoot, docsDir, analysisDir);
185
+ if (!existsSync(analysisPath)) {
186
+ spinner.fail(`Analysis directory not found: ${analysisPath}`);
187
+ console.log(chalk.gray(' Run "kg cultivate --deep-analysis" first to generate analysis'));
188
+ process.exit(1);
189
+ }
190
+ const requiredFiles = ["documentation-gaps.md", "research-questions.md"];
191
+ const missingFiles = requiredFiles.filter((f) => !existsSync(join(analysisPath, f)));
192
+ if (missingFiles.length > 0) {
193
+ spinner.warn(`Missing analysis files: ${missingFiles.join(", ")}`);
194
+ console.log(chalk.gray(' Run "kg cultivate --deep-analysis" to generate complete analysis'));
195
+ }
196
+ const { MigrationOrchestrator } = await import("../../cultivation/migration-orchestrator.js");
197
+ const orchestrator = new MigrationOrchestrator({
198
+ projectRoot,
199
+ docsPath: docsDir,
200
+ analysisDir,
201
+ verbose,
202
+ dryRun,
203
+ useVectorSearch: options.useVector ?? false,
204
+ maxAgents: parseInt(options.maxAgents || "8", 10)
205
+ });
206
+ const status = await orchestrator.getAvailabilityStatus();
207
+ if (!status.available) {
208
+ spinner.fail("Migration unavailable");
209
+ console.log(chalk.red(` ${status.reason}`));
210
+ console.log(chalk.gray(" Set GOOGLE_GEMINI_API_KEY or ANTHROPIC_API_KEY"));
211
+ process.exit(1);
212
+ }
213
+ spinner.text = `Running migration (${status.reason})...`;
214
+ if (dryRun) {
215
+ spinner.text = `Running migration dry run (${status.reason})...`;
216
+ }
217
+ const result = await orchestrator.migrate();
218
+ if (result.success) {
219
+ if (dryRun) {
220
+ spinner.succeed("Migration dry run complete!");
221
+ } else {
222
+ spinner.succeed("Migration complete!");
223
+ }
224
+ } else {
225
+ spinner.warn("Migration completed with errors");
226
+ }
227
+ console.log();
228
+ console.log(chalk.cyan.bold(" Migration Results"));
229
+ console.log(chalk.gray(" ─────────────────────────────────────"));
230
+ console.log();
231
+ if (dryRun) {
232
+ console.log(chalk.yellow(" [DRY RUN] No changes were made\n"));
233
+ }
234
+ console.log(chalk.white(" Summary:"));
235
+ console.log(chalk.gray(` Analysis dir: ${docsDir}/${analysisDir}/`));
236
+ console.log(chalk.green(` Agents used: ${result.agentsUsed}`));
237
+ console.log(chalk.green(` Documents created: ${result.documentsCreated}`));
238
+ console.log(chalk.blue(` Documents updated: ${result.documentsUpdated}`));
239
+ console.log(chalk.cyan(` Gaps filled: ${result.gapsFilled}`));
240
+ console.log(chalk.cyan(` Questions answered: ${result.questionsAnswered}`));
241
+ console.log(chalk.cyan(` Connections added: ${result.connectionsAdded}`));
242
+ console.log(chalk.gray(` Duration: ${(result.duration / 1e3).toFixed(1)}s`));
243
+ if (result.warnings.length > 0) {
244
+ console.log();
245
+ console.log(chalk.yellow(" Warnings:"));
246
+ result.warnings.slice(0, 5).forEach((w) => {
247
+ console.log(chalk.gray(` - ${w}`));
248
+ });
249
+ if (result.warnings.length > 5) {
250
+ console.log(chalk.gray(` ... and ${result.warnings.length - 5} more`));
251
+ }
252
+ }
253
+ if (result.errors.length > 0) {
254
+ console.log();
255
+ console.log(chalk.red(" Errors:"));
256
+ result.errors.slice(0, 5).forEach((e) => {
257
+ console.log(chalk.gray(` - ${e}`));
258
+ });
259
+ if (result.errors.length > 5) {
260
+ console.log(chalk.gray(` ... and ${result.errors.length - 5} more`));
261
+ }
262
+ }
263
+ if (!dryRun && result.documentsCreated > 0) {
264
+ console.log();
265
+ console.log(chalk.cyan(" Next steps:"));
266
+ console.log(chalk.white(` 1. Review generated documents in ${docsDir}/`));
267
+ console.log(chalk.white(` 2. Check ${docsDir}/${analysisDir}/ for summaries`));
268
+ console.log(chalk.white(` 3. Run: kg graph --docs ${docsDir}`));
269
+ console.log(chalk.white(` 4. Run: kg stats --docs ${docsDir}`));
270
+ }
271
+ console.log();
272
+ } catch (error) {
273
+ spinner.fail("Migration failed");
274
+ console.error(chalk.red(String(error)));
275
+ process.exit(1);
276
+ }
277
+ });
176
278
  command.command("report").description("Generate analysis report without creating files").option("-p, --path <path>", "Project root path", ".").option("-s, --source <dir>", "Source docs directory", "docs").option("--json", "Output as JSON").action(async (options) => {
177
279
  const spinner = ora("Generating analysis report...").start();
178
280
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sources":["../../../src/cli/commands/analyze.ts"],"sourcesContent":["/**\n * Analyze Command\n *\n * Advanced documentation analyzer using claude-flow for deep analysis\n * and creating proper knowledge graph documentation structure.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport { analyzeDocs } from '../../generators/docs-analyzer.js';\nimport { validateProjectRoot } from '../../core/security.js';\n\n/**\n * Create analyze command\n */\nexport function createAnalyzeCommand(): Command {\n const command = new Command('analyze');\n\n command\n .description('Analyze and migrate docs to knowledge graph structure')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-s, --source <dir>', 'Source docs directory', 'docs')\n .option('-t, --target <dir>', 'Target directory', 'docs')\n .option('--use-claude-flow', 'Use claude-flow for deep analysis')\n .option('--no-moc', 'Skip MOC (Map of Content) generation')\n .option('--no-link-original', 'Do not link back to original docs')\n .option('--max-depth <n>', 'Maximum analysis depth', '3')\n .option('--dry-run', 'Show what would be done without making changes')\n .option('-v, --verbose', 'Verbose output')\n .action(async (options) => {\n const spinner = ora('Analyzing documentation...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const sourceDir = options.source;\n const targetDir = options.target;\n\n // Check source exists\n if (!existsSync(join(projectRoot, sourceDir))) {\n spinner.fail(`Source directory not found: ${sourceDir}`);\n console.log(chalk.gray(' Specify source with --source <dir>'));\n process.exit(1);\n }\n\n // Check if target already exists\n if (existsSync(join(projectRoot, targetDir)) && !options.dryRun) {\n spinner.warn(`Target directory exists: ${targetDir}`);\n console.log(chalk.yellow(' Files may be overwritten. Use --dry-run to preview.'));\n }\n\n if (options.dryRun) {\n spinner.text = 'Analyzing documentation (dry run)...';\n }\n\n if (options.useClaudeFlow) {\n spinner.text = 'Analyzing with claude-flow (deep analysis)...';\n }\n\n const result = await analyzeDocs({\n sourceDir,\n targetDir,\n projectRoot,\n useClaudeFlow: options.useClaudeFlow,\n createMOC: options.moc !== false,\n linkOriginal: options.linkOriginal !== false,\n maxDepth: parseInt(options.maxDepth, 10),\n dryRun: options.dryRun,\n verbose: options.verbose,\n });\n\n if (result.success) {\n if (options.dryRun) {\n spinner.succeed('Dry run complete!');\n } else {\n spinner.succeed('Documentation analyzed and migrated!');\n }\n } else {\n spinner.warn('Analysis completed with errors');\n }\n\n // Display results\n console.log();\n console.log(chalk.cyan.bold(' Analysis Results'));\n console.log(chalk.gray(' ─────────────────────────────────────'));\n console.log();\n console.log(chalk.white(' Summary:'));\n console.log(chalk.gray(` Source: ${sourceDir}/`));\n console.log(chalk.gray(` Target: ${targetDir}/`));\n console.log(chalk.green(` Files analyzed: ${result.filesAnalyzed}`));\n console.log(chalk.green(` Files created: ${result.filesCreated}`));\n console.log(chalk.blue(` MOC files: ${result.mocFilesCreated}`));\n\n // Category breakdown\n if (result.structure.size > 0) {\n console.log();\n console.log(chalk.white(' Categories:'));\n for (const [category, docs] of result.structure) {\n console.log(chalk.cyan(` ${category.padEnd(15)}`), chalk.gray(`${docs.length} docs`));\n }\n }\n\n // Show sample analyzed documents\n if (result.analyzed.length > 0 && options.verbose) {\n console.log();\n console.log(chalk.white(' Sample documents:'));\n result.analyzed.slice(0, 5).forEach(doc => {\n console.log(chalk.gray(` ${doc.originalPath}`));\n console.log(chalk.cyan(` → ${doc.newPath}`) + chalk.gray(` [${doc.type}]`));\n if (doc.tags.length > 0) {\n console.log(chalk.gray(` tags: ${doc.tags.slice(0, 5).map(t => `#${t}`).join(' ')}`));\n }\n });\n if (result.analyzed.length > 5) {\n console.log(chalk.gray(` ... and ${result.analyzed.length - 5} more`));\n }\n }\n\n // Show errors\n if (result.errors.length > 0) {\n console.log();\n console.log(chalk.red(' Errors:'));\n result.errors.slice(0, 5).forEach(err => {\n console.log(chalk.gray(` - ${err}`));\n });\n if (result.errors.length > 5) {\n console.log(chalk.gray(` ... and ${result.errors.length - 5} more`));\n }\n }\n\n // Research needed summary\n const researchDocs = result.analyzed.filter(d => d.researchNeeded.length > 0);\n const todoDocs = result.analyzed.filter(d => d.todos.length > 0);\n\n if (researchDocs.length > 0 || todoDocs.length > 0) {\n console.log();\n console.log(chalk.yellow(' Attention Needed:'));\n if (researchDocs.length > 0) {\n console.log(chalk.yellow(` 📚 ${researchDocs.length} docs need research`));\n }\n if (todoDocs.length > 0) {\n console.log(chalk.yellow(` ✏️ ${todoDocs.length} docs have TODOs`));\n }\n }\n\n // Next steps\n if (!options.dryRun && result.filesCreated > 0) {\n console.log();\n console.log(chalk.cyan(' Next steps:'));\n console.log(chalk.white(` 1. Review ${targetDir}/MOC.md (Master Index)`));\n console.log(chalk.white(` 2. Check ${targetDir}/PRIMITIVES.md`));\n console.log(chalk.white(` 3. Run: kg graph --docs ${targetDir}`));\n console.log(chalk.white(` 4. Run: kg stats --docs ${targetDir}`));\n if (researchDocs.length > 0) {\n console.log(chalk.white(` 5. Address research items in flagged docs`));\n }\n }\n\n console.log();\n\n } catch (error) {\n spinner.fail('Analysis failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n // Deep analyze subcommand (uses claude-flow agents)\n command\n .command('deep')\n .description('Deep analysis using claude-flow agents for comprehensive knowledge extraction')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-s, --source <dir>', 'Source docs directory', 'docs')\n .option('-t, --target <dir>', 'Target directory', 'docs')\n .option('--agents <n>', 'Number of parallel agents', '3')\n .action(async (options) => {\n const spinner = ora('Initializing deep analysis with claude-flow...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const sourceDir = options.source;\n const targetDir = options.target;\n\n // Check source exists\n if (!existsSync(join(projectRoot, sourceDir))) {\n spinner.fail(`Source directory not found: ${sourceDir}`);\n process.exit(1);\n }\n\n spinner.text = 'Running claude-flow deep analysis...';\n\n // Run deep analysis with claude-flow\n const result = await analyzeDocs({\n sourceDir,\n targetDir,\n projectRoot,\n useClaudeFlow: true,\n createMOC: true,\n linkOriginal: true,\n maxDepth: 5,\n dryRun: false,\n verbose: true,\n });\n\n if (result.success) {\n spinner.succeed('Deep analysis complete!');\n } else {\n spinner.warn('Deep analysis completed with some errors');\n }\n\n console.log();\n console.log(chalk.cyan.bold(' Deep Analysis Results'));\n console.log(chalk.gray(' ─────────────────────────────────────'));\n console.log(chalk.green(` Documents analyzed: ${result.filesAnalyzed}`));\n console.log(chalk.green(` Knowledge docs: ${result.filesCreated}`));\n console.log(chalk.blue(` Index files (MOC): ${result.mocFilesCreated}`));\n console.log(chalk.gray(` Categories: ${result.structure.size}`));\n\n // Research summary\n const totalResearch = result.analyzed.reduce((sum, d) => sum + d.researchNeeded.length, 0);\n const totalTodos = result.analyzed.reduce((sum, d) => sum + d.todos.length, 0);\n\n console.log();\n console.log(chalk.white(' Knowledge extraction:'));\n console.log(chalk.cyan(` Research areas: ${totalResearch}`));\n console.log(chalk.cyan(` TODOs found: ${totalTodos}`));\n console.log(chalk.cyan(` Concepts: ${result.analyzed.reduce((sum, d) => sum + d.concepts.length, 0)}`));\n console.log(chalk.cyan(` Cross-refs: ${result.analyzed.reduce((sum, d) => sum + d.related.length, 0)}`));\n\n console.log();\n console.log(chalk.white(` Output: ${targetDir}/`));\n console.log(chalk.gray(` MOC.md Master index`));\n console.log(chalk.gray(` PRIMITIVES.md Core building blocks`));\n console.log(chalk.gray(` */\\_MOC.md Category indexes`));\n console.log();\n\n } catch (error) {\n spinner.fail('Deep analysis failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n // Report subcommand\n command\n .command('report')\n .description('Generate analysis report without creating files')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-s, --source <dir>', 'Source docs directory', 'docs')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const spinner = ora('Generating analysis report...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const sourceDir = options.source;\n\n if (!existsSync(join(projectRoot, sourceDir))) {\n spinner.fail(`Source directory not found: ${sourceDir}`);\n process.exit(1);\n }\n\n const result = await analyzeDocs({\n sourceDir,\n targetDir: 'docs',\n projectRoot,\n useClaudeFlow: false,\n createMOC: false,\n linkOriginal: false,\n dryRun: true,\n verbose: false,\n });\n\n spinner.succeed('Report generated!');\n\n if (options.json) {\n // JSON output\n const report = {\n summary: {\n totalDocs: result.filesAnalyzed,\n categories: Object.fromEntries(result.structure),\n },\n documents: result.analyzed.map(d => ({\n original: d.originalPath,\n target: d.newPath,\n type: d.type,\n category: d.category,\n tags: d.tags,\n concepts: d.concepts,\n researchNeeded: d.researchNeeded,\n todos: d.todos,\n })),\n researchAreas: result.analyzed\n .flatMap(d => d.researchNeeded.map(r => ({ doc: d.title, area: r }))),\n todos: result.analyzed\n .flatMap(d => d.todos.map(t => ({ doc: d.title, todo: t }))),\n };\n console.log(JSON.stringify(report, null, 2));\n } else {\n // Human-readable output\n console.log();\n console.log(chalk.cyan.bold(' Documentation Analysis Report'));\n console.log(chalk.gray(' ─────────────────────────────────────'));\n console.log();\n console.log(chalk.white(` Total documents: ${result.filesAnalyzed}`));\n console.log();\n\n // Type breakdown\n const byType = new Map<string, number>();\n result.analyzed.forEach(d => {\n byType.set(d.type, (byType.get(d.type) || 0) + 1);\n });\n\n console.log(chalk.white(' By Type:'));\n for (const [type, count] of byType) {\n const bar = '█'.repeat(Math.ceil(count / result.filesAnalyzed * 20));\n console.log(chalk.cyan(` ${type.padEnd(12)} ${bar} ${count}`));\n }\n console.log();\n\n // Category breakdown\n console.log(chalk.white(' By Category:'));\n for (const [category, docs] of result.structure) {\n const bar = '█'.repeat(Math.ceil(docs.length / result.filesAnalyzed * 20));\n console.log(chalk.cyan(` ${category.padEnd(12)} ${bar} ${docs.length}`));\n }\n console.log();\n\n // Issues\n const withResearch = result.analyzed.filter(d => d.researchNeeded.length > 0);\n const withTodos = result.analyzed.filter(d => d.todos.length > 0);\n\n console.log(chalk.white(' Areas Needing Attention:'));\n console.log(chalk.yellow(` 📚 Research needed: ${withResearch.length} docs`));\n console.log(chalk.yellow(` ✏️ With TODOs: ${withTodos.length} docs`));\n console.log();\n\n // Top research areas\n if (withResearch.length > 0) {\n console.log(chalk.white(' Top Research Areas:'));\n withResearch.slice(0, 5).forEach(d => {\n console.log(chalk.gray(` ${d.title}:`));\n d.researchNeeded.slice(0, 2).forEach(r => {\n console.log(chalk.yellow(` - ${r.slice(0, 60)}...`));\n });\n });\n console.log();\n }\n\n console.log(chalk.cyan(' Run `kg analyze` to migrate documentation'));\n console.log();\n }\n\n } catch (error) {\n spinner.fail('Report generation failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n return command;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sources":["../../../src/cli/commands/analyze.ts"],"sourcesContent":["/**\n * Analyze Command\n *\n * Advanced documentation analyzer using claude-flow for deep analysis\n * and creating proper knowledge graph documentation structure.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport { analyzeDocs } from '../../generators/docs-analyzer.js';\nimport { validateProjectRoot } from '../../core/security.js';\n\n/**\n * Create analyze command\n */\nexport function createAnalyzeCommand(): Command {\n const command = new Command('analyze');\n\n command\n .description('Analyze and migrate docs to knowledge graph structure')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-s, --source <dir>', 'Source docs directory', 'docs')\n .option('-t, --target <dir>', 'Target directory', 'docs')\n .option('--use-claude-flow', 'Use claude-flow for deep analysis')\n .option('--no-moc', 'Skip MOC (Map of Content) generation')\n .option('--no-link-original', 'Do not link back to original docs')\n .option('--max-depth <n>', 'Maximum analysis depth', '3')\n .option('--dry-run', 'Show what would be done without making changes')\n .option('-v, --verbose', 'Verbose output')\n .action(async (options) => {\n const spinner = ora('Analyzing documentation...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const sourceDir = options.source;\n const targetDir = options.target;\n\n // Check source exists\n if (!existsSync(join(projectRoot, sourceDir))) {\n spinner.fail(`Source directory not found: ${sourceDir}`);\n console.log(chalk.gray(' Specify source with --source <dir>'));\n process.exit(1);\n }\n\n // Check if target already exists\n if (existsSync(join(projectRoot, targetDir)) && !options.dryRun) {\n spinner.warn(`Target directory exists: ${targetDir}`);\n console.log(chalk.yellow(' Files may be overwritten. Use --dry-run to preview.'));\n }\n\n if (options.dryRun) {\n spinner.text = 'Analyzing documentation (dry run)...';\n }\n\n if (options.useClaudeFlow) {\n spinner.text = 'Analyzing with claude-flow (deep analysis)...';\n }\n\n const result = await analyzeDocs({\n sourceDir,\n targetDir,\n projectRoot,\n useClaudeFlow: options.useClaudeFlow,\n createMOC: options.moc !== false,\n linkOriginal: options.linkOriginal !== false,\n maxDepth: parseInt(options.maxDepth, 10),\n dryRun: options.dryRun,\n verbose: options.verbose,\n });\n\n if (result.success) {\n if (options.dryRun) {\n spinner.succeed('Dry run complete!');\n } else {\n spinner.succeed('Documentation analyzed and migrated!');\n }\n } else {\n spinner.warn('Analysis completed with errors');\n }\n\n // Display results\n console.log();\n console.log(chalk.cyan.bold(' Analysis Results'));\n console.log(chalk.gray(' ─────────────────────────────────────'));\n console.log();\n console.log(chalk.white(' Summary:'));\n console.log(chalk.gray(` Source: ${sourceDir}/`));\n console.log(chalk.gray(` Target: ${targetDir}/`));\n console.log(chalk.green(` Files analyzed: ${result.filesAnalyzed}`));\n console.log(chalk.green(` Files created: ${result.filesCreated}`));\n console.log(chalk.blue(` MOC files: ${result.mocFilesCreated}`));\n\n // Category breakdown\n if (result.structure.size > 0) {\n console.log();\n console.log(chalk.white(' Categories:'));\n for (const [category, docs] of result.structure) {\n console.log(chalk.cyan(` ${category.padEnd(15)}`), chalk.gray(`${docs.length} docs`));\n }\n }\n\n // Show sample analyzed documents\n if (result.analyzed.length > 0 && options.verbose) {\n console.log();\n console.log(chalk.white(' Sample documents:'));\n result.analyzed.slice(0, 5).forEach(doc => {\n console.log(chalk.gray(` ${doc.originalPath}`));\n console.log(chalk.cyan(` → ${doc.newPath}`) + chalk.gray(` [${doc.type}]`));\n if (doc.tags.length > 0) {\n console.log(chalk.gray(` tags: ${doc.tags.slice(0, 5).map(t => `#${t}`).join(' ')}`));\n }\n });\n if (result.analyzed.length > 5) {\n console.log(chalk.gray(` ... and ${result.analyzed.length - 5} more`));\n }\n }\n\n // Show errors\n if (result.errors.length > 0) {\n console.log();\n console.log(chalk.red(' Errors:'));\n result.errors.slice(0, 5).forEach(err => {\n console.log(chalk.gray(` - ${err}`));\n });\n if (result.errors.length > 5) {\n console.log(chalk.gray(` ... and ${result.errors.length - 5} more`));\n }\n }\n\n // Research needed summary\n const researchDocs = result.analyzed.filter(d => d.researchNeeded.length > 0);\n const todoDocs = result.analyzed.filter(d => d.todos.length > 0);\n\n if (researchDocs.length > 0 || todoDocs.length > 0) {\n console.log();\n console.log(chalk.yellow(' Attention Needed:'));\n if (researchDocs.length > 0) {\n console.log(chalk.yellow(` 📚 ${researchDocs.length} docs need research`));\n }\n if (todoDocs.length > 0) {\n console.log(chalk.yellow(` ✏️ ${todoDocs.length} docs have TODOs`));\n }\n }\n\n // Next steps\n if (!options.dryRun && result.filesCreated > 0) {\n console.log();\n console.log(chalk.cyan(' Next steps:'));\n console.log(chalk.white(` 1. Review ${targetDir}/MOC.md (Master Index)`));\n console.log(chalk.white(` 2. Check ${targetDir}/PRIMITIVES.md`));\n console.log(chalk.white(` 3. Run: kg graph --docs ${targetDir}`));\n console.log(chalk.white(` 4. Run: kg stats --docs ${targetDir}`));\n if (researchDocs.length > 0) {\n console.log(chalk.white(` 5. Address research items in flagged docs`));\n }\n }\n\n console.log();\n\n } catch (error) {\n spinner.fail('Analysis failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n // Deep analyze subcommand (uses claude-flow agents)\n command\n .command('deep')\n .description('Deep analysis using claude-flow agents for comprehensive knowledge extraction')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-s, --source <dir>', 'Source docs directory', 'docs')\n .option('-t, --target <dir>', 'Target directory', 'docs')\n .option('--agents <n>', 'Number of parallel agents', '3')\n .action(async (options) => {\n const spinner = ora('Initializing deep analysis with claude-flow...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const sourceDir = options.source;\n const targetDir = options.target;\n\n // Check source exists\n if (!existsSync(join(projectRoot, sourceDir))) {\n spinner.fail(`Source directory not found: ${sourceDir}`);\n process.exit(1);\n }\n\n spinner.text = 'Running claude-flow deep analysis...';\n\n // Run deep analysis with claude-flow\n const result = await analyzeDocs({\n sourceDir,\n targetDir,\n projectRoot,\n useClaudeFlow: true,\n createMOC: true,\n linkOriginal: true,\n maxDepth: 5,\n dryRun: false,\n verbose: true,\n });\n\n if (result.success) {\n spinner.succeed('Deep analysis complete!');\n } else {\n spinner.warn('Deep analysis completed with some errors');\n }\n\n console.log();\n console.log(chalk.cyan.bold(' Deep Analysis Results'));\n console.log(chalk.gray(' ─────────────────────────────────────'));\n console.log(chalk.green(` Documents analyzed: ${result.filesAnalyzed}`));\n console.log(chalk.green(` Knowledge docs: ${result.filesCreated}`));\n console.log(chalk.blue(` Index files (MOC): ${result.mocFilesCreated}`));\n console.log(chalk.gray(` Categories: ${result.structure.size}`));\n\n // Research summary\n const totalResearch = result.analyzed.reduce((sum, d) => sum + d.researchNeeded.length, 0);\n const totalTodos = result.analyzed.reduce((sum, d) => sum + d.todos.length, 0);\n\n console.log();\n console.log(chalk.white(' Knowledge extraction:'));\n console.log(chalk.cyan(` Research areas: ${totalResearch}`));\n console.log(chalk.cyan(` TODOs found: ${totalTodos}`));\n console.log(chalk.cyan(` Concepts: ${result.analyzed.reduce((sum, d) => sum + d.concepts.length, 0)}`));\n console.log(chalk.cyan(` Cross-refs: ${result.analyzed.reduce((sum, d) => sum + d.related.length, 0)}`));\n\n console.log();\n console.log(chalk.white(` Output: ${targetDir}/`));\n console.log(chalk.gray(` MOC.md Master index`));\n console.log(chalk.gray(` PRIMITIVES.md Core building blocks`));\n console.log(chalk.gray(` */\\_MOC.md Category indexes`));\n console.log();\n\n } catch (error) {\n spinner.fail('Deep analysis failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n // Migrate subcommand - implements analysis recommendations\n command\n .command('migrate')\n .description('Implement analysis recommendations using AI agents to fill gaps, answer questions, and build connections')\n .argument('[path]', 'Project root path', '.')\n .option('-d, --docs <dir>', 'Documentation directory', 'docs')\n .option('-a, --analysis <dir>', 'Analysis directory (relative to docs)', 'analysis')\n .option('--max-agents <n>', 'Maximum parallel agents', '8')\n .option('--dry-run', 'Preview changes without making them')\n .option('--use-vector', 'Use vector search for context retrieval')\n .option('-v, --verbose', 'Verbose output')\n .action(async (path: string, options) => {\n const spinner = ora('Initializing migration orchestration...').start();\n\n try {\n const projectRoot = validateProjectRoot(path);\n const docsDir = options.docs;\n const analysisDir = options.analysis;\n const dryRun = options.dryRun ?? false;\n const verbose = options.verbose ?? false;\n\n // Check analysis directory exists\n const analysisPath = join(projectRoot, docsDir, analysisDir);\n if (!existsSync(analysisPath)) {\n spinner.fail(`Analysis directory not found: ${analysisPath}`);\n console.log(chalk.gray(' Run \"kg cultivate --deep-analysis\" first to generate analysis'));\n process.exit(1);\n }\n\n // Check for required analysis files\n const requiredFiles = ['documentation-gaps.md', 'research-questions.md'];\n const missingFiles = requiredFiles.filter(f => !existsSync(join(analysisPath, f)));\n if (missingFiles.length > 0) {\n spinner.warn(`Missing analysis files: ${missingFiles.join(', ')}`);\n console.log(chalk.gray(' Run \"kg cultivate --deep-analysis\" to generate complete analysis'));\n }\n\n // Import and create orchestrator\n const { MigrationOrchestrator } = await import('../../cultivation/migration-orchestrator.js');\n const orchestrator = new MigrationOrchestrator({\n projectRoot,\n docsPath: docsDir,\n analysisDir,\n verbose,\n dryRun,\n useVectorSearch: options.useVector ?? false,\n maxAgents: parseInt(options.maxAgents || '8', 10)\n });\n\n // Check availability\n const status = await orchestrator.getAvailabilityStatus();\n if (!status.available) {\n spinner.fail('Migration unavailable');\n console.log(chalk.red(` ${status.reason}`));\n console.log(chalk.gray(' Set GOOGLE_GEMINI_API_KEY or ANTHROPIC_API_KEY'));\n process.exit(1);\n }\n\n spinner.text = `Running migration (${status.reason})...`;\n if (dryRun) {\n spinner.text = `Running migration dry run (${status.reason})...`;\n }\n\n // Run migration\n const result = await orchestrator.migrate();\n\n if (result.success) {\n if (dryRun) {\n spinner.succeed('Migration dry run complete!');\n } else {\n spinner.succeed('Migration complete!');\n }\n } else {\n spinner.warn('Migration completed with errors');\n }\n\n // Display results\n console.log();\n console.log(chalk.cyan.bold(' Migration Results'));\n console.log(chalk.gray(' ─────────────────────────────────────'));\n console.log();\n\n if (dryRun) {\n console.log(chalk.yellow(' [DRY RUN] No changes were made\\n'));\n }\n\n console.log(chalk.white(' Summary:'));\n console.log(chalk.gray(` Analysis dir: ${docsDir}/${analysisDir}/`));\n console.log(chalk.green(` Agents used: ${result.agentsUsed}`));\n console.log(chalk.green(` Documents created: ${result.documentsCreated}`));\n console.log(chalk.blue(` Documents updated: ${result.documentsUpdated}`));\n console.log(chalk.cyan(` Gaps filled: ${result.gapsFilled}`));\n console.log(chalk.cyan(` Questions answered: ${result.questionsAnswered}`));\n console.log(chalk.cyan(` Connections added: ${result.connectionsAdded}`));\n console.log(chalk.gray(` Duration: ${(result.duration / 1000).toFixed(1)}s`));\n\n // Show warnings\n if (result.warnings.length > 0) {\n console.log();\n console.log(chalk.yellow(' Warnings:'));\n result.warnings.slice(0, 5).forEach(w => {\n console.log(chalk.gray(` - ${w}`));\n });\n if (result.warnings.length > 5) {\n console.log(chalk.gray(` ... and ${result.warnings.length - 5} more`));\n }\n }\n\n // Show errors\n if (result.errors.length > 0) {\n console.log();\n console.log(chalk.red(' Errors:'));\n result.errors.slice(0, 5).forEach(e => {\n console.log(chalk.gray(` - ${e}`));\n });\n if (result.errors.length > 5) {\n console.log(chalk.gray(` ... and ${result.errors.length - 5} more`));\n }\n }\n\n // Next steps\n if (!dryRun && result.documentsCreated > 0) {\n console.log();\n console.log(chalk.cyan(' Next steps:'));\n console.log(chalk.white(` 1. Review generated documents in ${docsDir}/`));\n console.log(chalk.white(` 2. Check ${docsDir}/${analysisDir}/ for summaries`));\n console.log(chalk.white(` 3. Run: kg graph --docs ${docsDir}`));\n console.log(chalk.white(` 4. Run: kg stats --docs ${docsDir}`));\n }\n\n console.log();\n\n } catch (error) {\n spinner.fail('Migration failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n // Report subcommand\n command\n .command('report')\n .description('Generate analysis report without creating files')\n .option('-p, --path <path>', 'Project root path', '.')\n .option('-s, --source <dir>', 'Source docs directory', 'docs')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const spinner = ora('Generating analysis report...').start();\n\n try {\n const projectRoot = validateProjectRoot(options.path);\n const sourceDir = options.source;\n\n if (!existsSync(join(projectRoot, sourceDir))) {\n spinner.fail(`Source directory not found: ${sourceDir}`);\n process.exit(1);\n }\n\n const result = await analyzeDocs({\n sourceDir,\n targetDir: 'docs',\n projectRoot,\n useClaudeFlow: false,\n createMOC: false,\n linkOriginal: false,\n dryRun: true,\n verbose: false,\n });\n\n spinner.succeed('Report generated!');\n\n if (options.json) {\n // JSON output\n const report = {\n summary: {\n totalDocs: result.filesAnalyzed,\n categories: Object.fromEntries(result.structure),\n },\n documents: result.analyzed.map(d => ({\n original: d.originalPath,\n target: d.newPath,\n type: d.type,\n category: d.category,\n tags: d.tags,\n concepts: d.concepts,\n researchNeeded: d.researchNeeded,\n todos: d.todos,\n })),\n researchAreas: result.analyzed\n .flatMap(d => d.researchNeeded.map(r => ({ doc: d.title, area: r }))),\n todos: result.analyzed\n .flatMap(d => d.todos.map(t => ({ doc: d.title, todo: t }))),\n };\n console.log(JSON.stringify(report, null, 2));\n } else {\n // Human-readable output\n console.log();\n console.log(chalk.cyan.bold(' Documentation Analysis Report'));\n console.log(chalk.gray(' ─────────────────────────────────────'));\n console.log();\n console.log(chalk.white(` Total documents: ${result.filesAnalyzed}`));\n console.log();\n\n // Type breakdown\n const byType = new Map<string, number>();\n result.analyzed.forEach(d => {\n byType.set(d.type, (byType.get(d.type) || 0) + 1);\n });\n\n console.log(chalk.white(' By Type:'));\n for (const [type, count] of byType) {\n const bar = '█'.repeat(Math.ceil(count / result.filesAnalyzed * 20));\n console.log(chalk.cyan(` ${type.padEnd(12)} ${bar} ${count}`));\n }\n console.log();\n\n // Category breakdown\n console.log(chalk.white(' By Category:'));\n for (const [category, docs] of result.structure) {\n const bar = '█'.repeat(Math.ceil(docs.length / result.filesAnalyzed * 20));\n console.log(chalk.cyan(` ${category.padEnd(12)} ${bar} ${docs.length}`));\n }\n console.log();\n\n // Issues\n const withResearch = result.analyzed.filter(d => d.researchNeeded.length > 0);\n const withTodos = result.analyzed.filter(d => d.todos.length > 0);\n\n console.log(chalk.white(' Areas Needing Attention:'));\n console.log(chalk.yellow(` 📚 Research needed: ${withResearch.length} docs`));\n console.log(chalk.yellow(` ✏️ With TODOs: ${withTodos.length} docs`));\n console.log();\n\n // Top research areas\n if (withResearch.length > 0) {\n console.log(chalk.white(' Top Research Areas:'));\n withResearch.slice(0, 5).forEach(d => {\n console.log(chalk.gray(` ${d.title}:`));\n d.researchNeeded.slice(0, 2).forEach(r => {\n console.log(chalk.yellow(` - ${r.slice(0, 60)}...`));\n });\n });\n console.log();\n }\n\n console.log(chalk.cyan(' Run `kg analyze` to migrate documentation'));\n console.log();\n }\n\n } catch (error) {\n spinner.fail('Report generation failed');\n console.error(chalk.red(String(error)));\n process.exit(1);\n }\n });\n\n return command;\n}\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  /**
2
- * DeepAnalyzer - Deep Codebase Analysis
2
+ * DeepAnalyzer - Documentation Cultivation & Knowledge Graph Enhancement
3
3
  *
4
- * Provides comprehensive codebase analysis using:
5
- * - Claude CLI (`claude -p`) when running outside Claude Code
6
- * - Direct Anthropic API when ANTHROPIC_API_KEY is available
7
- * - Google Gemini API when GOOGLE_AI_API_KEY is available (fallback)
8
- * - Clear error messaging when no option is available
4
+ * Analyzes existing documentation to:
5
+ * - Understand the vision and requirements described
6
+ * - Identify documentation gaps and unclear areas
7
+ * - Guide the documentation process with research questions
8
+ * - Build knowledge graph connections
9
+ *
10
+ * This is NOT for code analysis - use analyze-codebase for that.
9
11
  *
10
12
  * @module cultivation/deep-analyzer
11
13
  */
@@ -21,11 +23,9 @@ export interface DeepAnalyzerOptions {
21
23
  outputDir?: string;
22
24
  /** Enable verbose logging */
23
25
  verbose?: boolean;
24
- /** Maximum agents to spawn */
25
- maxAgents?: number;
26
- /** Agent execution mode */
27
- agentMode?: 'sequential' | 'parallel' | 'adaptive';
28
- /** Timeout for each agent (ms) */
26
+ /** Maximum documents to analyze */
27
+ maxDocuments?: number;
28
+ /** Timeout for each analysis (ms) */
29
29
  agentTimeout?: number;
30
30
  /** Force use of API key even if CLI is available */
31
31
  forceApiKey?: boolean;
@@ -61,12 +61,13 @@ export interface DeepAnalysisResult {
61
61
  mode: 'cli' | 'anthropic' | 'gemini' | 'static';
62
62
  }
63
63
  /**
64
- * DeepAnalyzer - Deep codebase analysis with multiple execution modes
64
+ * DeepAnalyzer - Documentation cultivation with AI-powered analysis
65
65
  *
66
- * Supports multiple providers:
67
- * - Claude CLI (uses OAuth session, no API key needed)
68
- * - Anthropic API (requires ANTHROPIC_API_KEY)
69
- * - Google Gemini API (requires GOOGLE_AI_API_KEY or GEMINI_API_KEY)
66
+ * Reads existing markdown documentation and provides:
67
+ * - Vision synthesis from requirements
68
+ * - Gap analysis identifying missing documentation
69
+ * - Research questions for unclear areas
70
+ * - Knowledge graph connection suggestions
70
71
  *
71
72
  * @example
72
73
  * ```typescript
@@ -84,8 +85,7 @@ export declare class DeepAnalyzer {
84
85
  private docsPath;
85
86
  private outputDir;
86
87
  private verbose;
87
- private maxAgents;
88
- private agentMode;
88
+ private maxDocuments;
89
89
  private agentTimeout;
90
90
  private forceApiKey;
91
91
  private preferredProvider;
@@ -100,7 +100,6 @@ export declare class DeepAnalyzer {
100
100
  private hasAnthropicApiKey;
101
101
  /**
102
102
  * Check if Google AI / Gemini API key is available
103
- * Supports: GOOGLE_AI_API_KEY, GOOGLE_GEMINI_API_KEY, GEMINI_API_KEY, GOOGLE_API_KEY
104
103
  */
105
104
  private hasGeminiApiKey;
106
105
  /**
@@ -113,10 +112,6 @@ export declare class DeepAnalyzer {
113
112
  private isCliAvailable;
114
113
  /**
115
114
  * Determine the best execution mode
116
- *
117
- * Priority: API keys > CLI (CLI often hangs in various contexts)
118
- * - Prefer API when available for reliability
119
- * - Fall back to CLI only when no API key is available
120
115
  */
121
116
  private detectExecutionMode;
122
117
  /**
@@ -130,6 +125,14 @@ export declare class DeepAnalyzer {
130
125
  available: boolean;
131
126
  reason: string;
132
127
  }>;
128
+ /**
129
+ * Scan documentation directory for markdown files
130
+ */
131
+ private scanDocumentation;
132
+ /**
133
+ * Read full content of key documents
134
+ */
135
+ private readKeyDocuments;
133
136
  /**
134
137
  * Run deep analysis
135
138
  */
@@ -139,13 +142,9 @@ export declare class DeepAnalyzer {
139
142
  */
140
143
  private executeAgent;
141
144
  /**
142
- * Build context-aware prompt for analysis
145
+ * Build context-aware prompt for documentation cultivation
143
146
  */
144
147
  private buildPrompt;
145
- /**
146
- * Gather project context for analysis
147
- */
148
- private gatherProjectContext;
149
148
  /**
150
149
  * Run analysis using Claude CLI
151
150
  */
@@ -1 +1 @@
1
- {"version":3,"file":"deep-analyzer.d.ts","sourceRoot":"","sources":["../../src/cultivation/deep-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deep-analyzer.d.ts","sourceRoot":"","sources":["../../src/cultivation/deep-analyzer.ts"],"names":[],"mappings":"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"}