@weavelogic/knowledge-graph-agent 0.10.2 ā 0.10.4
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/dist/cli/commands/cultivate.d.ts.map +1 -1
- package/dist/cli/commands/cultivate.js +41 -35
- package/dist/cli/commands/cultivate.js.map +1 -1
- package/dist/cultivation/deep-analyzer.d.ts +40 -24
- package/dist/cultivation/deep-analyzer.d.ts.map +1 -1
- package/dist/cultivation/deep-analyzer.js +191 -146
- package/dist/cultivation/deep-analyzer.js.map +1 -1
- package/dist/generators/doc-cultivator.js +1 -3
- package/dist/generators/doc-cultivator.js.map +1 -1
- package/dist/generators/doc-generator-agents.js +1 -1
- package/dist/generators/doc-generator-agents.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cultivate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cultivate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"cultivate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cultivate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CA8PhD"}
|
|
@@ -121,32 +121,52 @@ function createCultivateCommand() {
|
|
|
121
121
|
console.log("");
|
|
122
122
|
}
|
|
123
123
|
if (tasks.deepAnalysis) {
|
|
124
|
-
console.log(chalk.cyan("š§ Running deep analysis
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
console.log(chalk.cyan("š§ Running deep analysis...\n"));
|
|
125
|
+
const { DeepAnalyzer } = await import("../../cultivation/deep-analyzer.js");
|
|
126
|
+
const analyzer = new DeepAnalyzer({
|
|
127
|
+
projectRoot,
|
|
128
|
+
docsPath,
|
|
129
|
+
verbose
|
|
130
|
+
});
|
|
131
|
+
const availability = await analyzer.getAvailabilityStatus();
|
|
132
|
+
if (!availability.available) {
|
|
133
|
+
console.log(chalk.yellow(" ā ļø Deep analysis unavailable"));
|
|
134
|
+
console.log(chalk.gray(` ${availability.reason}`));
|
|
135
|
+
console.log("");
|
|
136
|
+
console.log(chalk.gray(" Options:"));
|
|
137
|
+
console.log(chalk.gray(" 1. Run from a regular terminal (outside Claude Code)"));
|
|
138
|
+
console.log(chalk.gray(" 2. Set ANTHROPIC_API_KEY environment variable"));
|
|
139
|
+
result.warnings.push(`Deep analysis unavailable: ${availability.reason}`);
|
|
130
140
|
} else {
|
|
141
|
+
console.log(chalk.gray(` Mode: ${availability.reason}`));
|
|
131
142
|
if (dryRun) {
|
|
132
|
-
console.log(chalk.yellow(" [DRY RUN] Would
|
|
133
|
-
console.log(" - Researcher: Analyze codebase
|
|
134
|
-
console.log(" - Analyst: Identify
|
|
135
|
-
console.log(" -
|
|
136
|
-
console.log(" -
|
|
143
|
+
console.log(chalk.yellow("\n [DRY RUN] Would run analysis agents:"));
|
|
144
|
+
console.log(" - Pattern Researcher: Analyze codebase architecture");
|
|
145
|
+
console.log(" - Code Analyst: Identify quality issues");
|
|
146
|
+
console.log(" - Implementation Reviewer: Review code patterns");
|
|
147
|
+
console.log(" - Test Analyzer: Analyze test coverage");
|
|
137
148
|
} else {
|
|
138
149
|
try {
|
|
139
|
-
const { DeepAnalyzer } = await import("../../cultivation/deep-analyzer.js");
|
|
140
|
-
const analyzer = new DeepAnalyzer({
|
|
141
|
-
projectRoot,
|
|
142
|
-
docsPath,
|
|
143
|
-
verbose
|
|
144
|
-
});
|
|
145
150
|
const deepResult = await analyzer.analyze();
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
151
|
+
if (deepResult.success) {
|
|
152
|
+
console.log(`
|
|
153
|
+
${chalk.green("ā")} Deep analysis complete`);
|
|
154
|
+
console.log(` Agents spawned: ${deepResult.agentsSpawned}`);
|
|
155
|
+
console.log(` Insights generated: ${deepResult.insightsCount}`);
|
|
156
|
+
console.log(` Documentation created: ${deepResult.documentsCreated}`);
|
|
157
|
+
console.log(` Mode: ${deepResult.mode}`);
|
|
158
|
+
} else {
|
|
159
|
+
console.log(`
|
|
160
|
+
${chalk.yellow("ā ")} Deep analysis completed with issues`);
|
|
161
|
+
console.log(` Agents spawned: ${deepResult.agentsSpawned}`);
|
|
162
|
+
console.log(` Insights generated: ${deepResult.insightsCount}`);
|
|
163
|
+
if (deepResult.errors.length > 0) {
|
|
164
|
+
for (const err of deepResult.errors.slice(0, 3)) {
|
|
165
|
+
console.log(chalk.gray(` - ${err}`));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
result.warnings.push(...deepResult.errors);
|
|
169
|
+
}
|
|
150
170
|
} catch (error) {
|
|
151
171
|
result.errors.push(`Deep analysis failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
152
172
|
console.log(chalk.red(` ā Deep analysis failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
@@ -239,20 +259,6 @@ function displaySummary(result, dryRun) {
|
|
|
239
259
|
console.log(chalk.gray("\nRun without --dry-run to apply changes\n"));
|
|
240
260
|
}
|
|
241
261
|
}
|
|
242
|
-
async function checkClaudeFlowAvailable() {
|
|
243
|
-
const { execSync } = await import("child_process");
|
|
244
|
-
try {
|
|
245
|
-
execSync("claude-flow --version", { stdio: "pipe", timeout: 5e3 });
|
|
246
|
-
return true;
|
|
247
|
-
} catch {
|
|
248
|
-
}
|
|
249
|
-
try {
|
|
250
|
-
execSync("npx claude-flow --version", { stdio: "pipe", timeout: 3e4 });
|
|
251
|
-
return true;
|
|
252
|
-
} catch {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
262
|
export {
|
|
257
263
|
createCultivateCommand
|
|
258
264
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cultivate.js","sources":["../../../src/cli/commands/cultivate.ts"],"sourcesContent":["/**\n * Cultivate Command - Systematically enhance the knowledge graph\n *\n * This command provides cultivation tasks:\n * - Seed primitives from codebase analysis\n * - Deep analysis with claude-flow integration\n * - Graph enhancement and optimization\n *\n * @module cli/commands/cultivate\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { resolve, join, relative } from 'path';\nimport { existsSync, mkdirSync, readFileSync, readdirSync, statSync } from 'fs';\nimport { SeedGenerator } from '../../cultivation/seed-generator.js';\nimport { ShadowCache, loadShadowCache } from '../../core/cache.js';\nimport type { CultivationOptions, Ecosystem, SeedAnalysis } from '../../cultivation/types.js';\n\n/**\n * Cultivation result\n */\ninterface CultivationResult {\n success: boolean;\n seed: {\n created: number;\n documents: Array<{ title: string; path: string; type: string }>;\n };\n analysis: {\n filesProcessed: number;\n dependenciesFound: number;\n servicesFound: number;\n };\n cache: {\n updated: number;\n hits: number;\n misses: number;\n };\n duration: number;\n warnings: string[];\n errors: string[];\n}\n\n/**\n * Create cultivate command\n */\nexport function createCultivateCommand(): Command {\n return new Command('cultivate')\n .description('Systematically cultivate and enhance the knowledge graph')\n .argument('[path]', 'Directory to cultivate (defaults to current directory)', '.')\n .option('--dry-run', 'Preview changes without executing', false)\n .option('-d, --docs <path>', 'Documentation path', 'docs')\n .option('-v, --verbose', 'Verbose output', false)\n .option('--seed', 'Bootstrap vault with primitives from codebase analysis', false)\n .option('--deep-analysis', 'Use claude-flow agents for deep analysis', false)\n .option('--cache', 'Use shadow cache for incremental updates', true)\n .option('--ecosystem <ecosystems>', 'Filter to specific ecosystems (comma-separated)', undefined)\n .option('--include-dev', 'Include dev dependencies', false)\n .option('--major-only', 'Only process major dependencies', false)\n .option('--refresh-cache', 'Force refresh the shadow cache', false)\n .action(async (targetPath: string, options: {\n dryRun?: boolean;\n docs?: string;\n verbose?: boolean;\n seed?: boolean;\n deepAnalysis?: boolean;\n cache?: boolean;\n ecosystem?: string;\n includeDev?: boolean;\n majorOnly?: boolean;\n refreshCache?: boolean;\n }) => {\n const projectRoot = resolve(targetPath);\n const docsPath = options.docs || 'docs';\n const verbose = options.verbose || false;\n const dryRun = options.dryRun || false;\n\n console.log(chalk.bold.green('\\nš± Knowledge Graph Cultivator\\n'));\n console.log(` Project: ${projectRoot}`);\n console.log(` Docs: ${docsPath}`);\n if (dryRun) {\n console.log(` Mode: ${chalk.yellow('Dry Run')}`);\n }\n console.log('');\n\n // Determine tasks\n const tasks = {\n seed: options.seed || false,\n deepAnalysis: options.deepAnalysis || false,\n };\n\n // If no tasks selected, show help\n if (!tasks.seed && !tasks.deepAnalysis) {\n console.log(chalk.yellow('š” No tasks selected. Use one or more of:'));\n console.log(' --seed Bootstrap vault with primitives from codebase');\n console.log(' --deep-analysis Use claude-flow for deep codebase analysis');\n console.log('');\n console.log(chalk.gray('Options:'));\n console.log(' --dry-run Preview without writing files');\n console.log(' --cache Use shadow cache for incremental updates (default: true)');\n console.log(' --refresh-cache Force refresh the shadow cache');\n console.log(' --ecosystem Filter to ecosystems (nodejs,python,rust,go,php,java)');\n console.log(' --include-dev Include dev dependencies');\n console.log(' --major-only Only process major dependencies');\n console.log('');\n console.log('Run \"kg cultivate --help\" for more options');\n return;\n }\n\n const startTime = Date.now();\n const result: CultivationResult = {\n success: true,\n seed: { created: 0, documents: [] },\n analysis: { filesProcessed: 0, dependenciesFound: 0, servicesFound: 0 },\n cache: { updated: 0, hits: 0, misses: 0 },\n duration: 0,\n warnings: [],\n errors: [],\n };\n\n try {\n // Initialize shadow cache\n let cache: ShadowCache | undefined;\n if (options.cache !== false) {\n console.log(chalk.cyan('š¦ Initializing shadow cache...'));\n cache = await loadShadowCache(projectRoot);\n\n if (options.refreshCache) {\n cache.clear();\n console.log(chalk.gray(' Cache cleared (refresh mode)'));\n }\n\n const stats = cache.getStats();\n console.log(chalk.gray(` Entries: ${stats.totalEntries}, Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`));\n console.log('');\n }\n\n // Task 1: Seed primitives\n if (tasks.seed) {\n console.log(chalk.cyan('š± Seeding primitives from codebase...\\n'));\n\n // Parse ecosystem filter\n let ecosystems: Ecosystem[] | undefined;\n if (options.ecosystem) {\n ecosystems = options.ecosystem.split(',').map(e => e.trim() as Ecosystem);\n console.log(chalk.gray(` Ecosystems: ${ecosystems.join(', ')}`));\n }\n\n // Create generator\n const generator = await SeedGenerator.create(projectRoot, docsPath);\n\n // Analyze\n console.log(chalk.gray(' Analyzing codebase...'));\n const analysis = await generator.analyze();\n\n result.analysis = {\n filesProcessed: analysis.metadata.filesScanned,\n dependenciesFound: analysis.dependencies.length,\n servicesFound: analysis.services.length,\n };\n\n // Display analysis\n console.log(`\\n ${chalk.bold('Analysis Results:')}`);\n console.log(` Languages: ${analysis.languages.join(', ') || 'none'}`);\n console.log(` Dependencies: ${analysis.dependencies.length}`);\n console.log(` Frameworks: ${analysis.frameworks.length}`);\n console.log(` Services: ${analysis.services.length}`);\n console.log(` Deployments: ${analysis.deployments.length}`);\n\n if (verbose) {\n displayDetailedAnalysis(analysis);\n }\n\n console.log('');\n\n // Generate primitives\n console.log(chalk.gray(' Generating primitive nodes...'));\n const documents = await generator.generatePrimitives(analysis);\n\n if (dryRun) {\n console.log(`\\n ${chalk.yellow('[DRY RUN]')} Would create ${documents.length} primitives:`);\n for (const doc of documents.slice(0, 10)) {\n console.log(` - ${doc.frontmatter.type}: ${doc.title}`);\n }\n if (documents.length > 10) {\n console.log(` ... and ${documents.length - 10} more`);\n }\n result.seed.documents = documents.map(d => ({\n title: d.title,\n path: d.path,\n type: d.frontmatter.type || 'unknown',\n }));\n } else {\n const writeResult = await generator.writePrimitives(documents);\n result.seed.created = writeResult.documentsGenerated.length;\n result.seed.documents = writeResult.documentsGenerated;\n\n console.log(`\\n ${chalk.green('ā')} Created ${writeResult.documentsGenerated.length} primitives`);\n\n if (writeResult.warnings.length > 0) {\n result.warnings.push(...writeResult.warnings);\n if (verbose) {\n console.log(chalk.yellow(` Warnings: ${writeResult.warnings.length}`));\n }\n }\n\n if (writeResult.errors.length > 0) {\n result.errors.push(...writeResult.errors);\n console.log(chalk.red(` Errors: ${writeResult.errors.length}`));\n }\n }\n\n console.log('');\n }\n\n // Task 2: Deep Analysis with claude-flow\n if (tasks.deepAnalysis) {\n console.log(chalk.cyan('š§ Running deep analysis with claude-flow...\\n'));\n\n // Check if claude-flow is available\n const hasClaudeFlow = await checkClaudeFlowAvailable();\n\n if (!hasClaudeFlow) {\n console.log(chalk.yellow(' ā ļø claude-flow not available'));\n console.log(chalk.gray(' Install with: npm install -g claude-flow'));\n result.warnings.push('claude-flow not available for deep analysis');\n } else {\n if (dryRun) {\n console.log(chalk.yellow(' [DRY RUN] Would spawn claude-flow agents:'));\n console.log(' - Researcher: Analyze codebase patterns');\n console.log(' - Analyst: Identify architectural decisions');\n console.log(' - Coder: Detect implementation patterns');\n console.log(' - Tester: Analyze testing coverage');\n } else {\n // Import and run DeepAnalyzer\n try {\n const { DeepAnalyzer } = await import('../../cultivation/deep-analyzer.js');\n const analyzer = new DeepAnalyzer({\n projectRoot,\n docsPath,\n verbose,\n });\n\n const deepResult = await analyzer.analyze();\n\n console.log(` ${chalk.green('ā')} Deep analysis complete`);\n console.log(` Agents spawned: ${deepResult.agentsSpawned}`);\n console.log(` Insights generated: ${deepResult.insightsCount}`);\n console.log(` Documentation created: ${deepResult.documentsCreated}`);\n } catch (error) {\n result.errors.push(`Deep analysis failed: ${error instanceof Error ? error.message : String(error)}`);\n console.log(chalk.red(` ā Deep analysis failed: ${error instanceof Error ? error.message : String(error)}`));\n }\n }\n }\n\n console.log('');\n }\n\n // Update cache\n if (cache) {\n const stats = cache.getStats();\n result.cache = {\n updated: stats.totalEntries,\n hits: stats.hitCount,\n misses: stats.missCount,\n };\n\n await cache.save();\n }\n\n result.duration = Date.now() - startTime;\n result.success = result.errors.length === 0;\n\n // Final summary\n displaySummary(result, dryRun);\n\n } catch (error) {\n console.error(chalk.red('\\nā Cultivation failed:'), error);\n process.exit(1);\n }\n });\n}\n\n/**\n * Display detailed analysis output\n */\nfunction displayDetailedAnalysis(analysis: SeedAnalysis): void {\n if (analysis.frameworks.length > 0) {\n console.log(`\\n ${chalk.gray('Frameworks:')}`);\n for (const fw of analysis.frameworks) {\n console.log(` - ${fw.name} (${fw.ecosystem}) v${fw.version}`);\n }\n }\n\n if (analysis.services.length > 0) {\n console.log(`\\n ${chalk.gray('Services:')}`);\n for (const svc of analysis.services) {\n console.log(` - ${svc.name}: ${svc.type} (${svc.technology})`);\n }\n }\n\n if (analysis.deployments.length > 0) {\n console.log(`\\n ${chalk.gray('Deployments:')}`);\n for (const dep of analysis.deployments) {\n console.log(` - ${dep}`);\n }\n }\n}\n\n/**\n * Display cultivation summary\n */\nfunction displaySummary(result: CultivationResult, dryRun: boolean): void {\n console.log(chalk.bold.blue('š Cultivation Summary\\n'));\n\n if (dryRun) {\n console.log(chalk.yellow('[DRY RUN] No changes were made\\n'));\n }\n\n console.log(' Analysis:');\n console.log(` Files processed: ${result.analysis.filesProcessed}`);\n console.log(` Dependencies: ${result.analysis.dependenciesFound}`);\n console.log(` Services: ${result.analysis.servicesFound}`);\n\n if (result.seed.created > 0 || result.seed.documents.length > 0) {\n console.log('\\n Seed:');\n console.log(` Primitives ${dryRun ? 'would create' : 'created'}: ${dryRun ? result.seed.documents.length : result.seed.created}`);\n }\n\n if (result.cache.updated > 0) {\n console.log('\\n Cache:');\n console.log(` Entries: ${result.cache.updated}`);\n const hitRate = result.cache.hits + result.cache.misses > 0\n ? (result.cache.hits / (result.cache.hits + result.cache.misses) * 100).toFixed(1)\n : 0;\n console.log(` Hit rate: ${hitRate}%`);\n }\n\n console.log(`\\n Duration: ${(result.duration / 1000).toFixed(2)}s`);\n\n if (result.warnings.length > 0) {\n console.log(chalk.yellow(`\\n ā ļø Warnings: ${result.warnings.length}`));\n for (const warning of result.warnings.slice(0, 5)) {\n console.log(chalk.gray(` - ${warning}`));\n }\n }\n\n if (result.errors.length > 0) {\n console.log(chalk.red(`\\n ā Errors: ${result.errors.length}`));\n for (const error of result.errors.slice(0, 5)) {\n console.log(chalk.gray(` - ${error}`));\n }\n }\n\n if (result.success && !dryRun) {\n console.log(chalk.bold.green('\\n⨠Cultivation complete!\\n'));\n } else if (!result.success) {\n console.log(chalk.yellow('\\nā ļø Cultivation completed with errors\\n'));\n } else {\n console.log(chalk.gray('\\nRun without --dry-run to apply changes\\n'));\n }\n}\n\n/**\n * Check if claude-flow is available\n * Checks for direct command first (globally installed), then falls back to npx\n */\nasync function checkClaudeFlowAvailable(): Promise<boolean> {\n const { execSync } = await import('child_process');\n\n // First try direct command (globally installed claude-flow)\n try {\n execSync('claude-flow --version', { stdio: 'pipe', timeout: 5000 });\n return true;\n } catch {\n // Direct command not available, try npx\n }\n\n // Fall back to npx\n try {\n execSync('npx claude-flow --version', { stdio: 'pipe', timeout: 30000 });\n return true;\n } catch {\n return false;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cultivate.js","sources":["../../../src/cli/commands/cultivate.ts"],"sourcesContent":["/**\n * Cultivate Command - Systematically enhance the knowledge graph\n *\n * This command provides cultivation tasks:\n * - Seed primitives from codebase analysis\n * - Deep analysis with claude-flow integration\n * - Graph enhancement and optimization\n *\n * @module cli/commands/cultivate\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { resolve, join, relative } from 'path';\nimport { existsSync, mkdirSync, readFileSync, readdirSync, statSync } from 'fs';\nimport { SeedGenerator } from '../../cultivation/seed-generator.js';\nimport { ShadowCache, loadShadowCache } from '../../core/cache.js';\nimport type { CultivationOptions, Ecosystem, SeedAnalysis } from '../../cultivation/types.js';\n\n/**\n * Cultivation result\n */\ninterface CultivationResult {\n success: boolean;\n seed: {\n created: number;\n documents: Array<{ title: string; path: string; type: string }>;\n };\n analysis: {\n filesProcessed: number;\n dependenciesFound: number;\n servicesFound: number;\n };\n cache: {\n updated: number;\n hits: number;\n misses: number;\n };\n duration: number;\n warnings: string[];\n errors: string[];\n}\n\n/**\n * Create cultivate command\n */\nexport function createCultivateCommand(): Command {\n return new Command('cultivate')\n .description('Systematically cultivate and enhance the knowledge graph')\n .argument('[path]', 'Directory to cultivate (defaults to current directory)', '.')\n .option('--dry-run', 'Preview changes without executing', false)\n .option('-d, --docs <path>', 'Documentation path', 'docs')\n .option('-v, --verbose', 'Verbose output', false)\n .option('--seed', 'Bootstrap vault with primitives from codebase analysis', false)\n .option('--deep-analysis', 'Use claude-flow agents for deep analysis', false)\n .option('--cache', 'Use shadow cache for incremental updates', true)\n .option('--ecosystem <ecosystems>', 'Filter to specific ecosystems (comma-separated)', undefined)\n .option('--include-dev', 'Include dev dependencies', false)\n .option('--major-only', 'Only process major dependencies', false)\n .option('--refresh-cache', 'Force refresh the shadow cache', false)\n .action(async (targetPath: string, options: {\n dryRun?: boolean;\n docs?: string;\n verbose?: boolean;\n seed?: boolean;\n deepAnalysis?: boolean;\n cache?: boolean;\n ecosystem?: string;\n includeDev?: boolean;\n majorOnly?: boolean;\n refreshCache?: boolean;\n }) => {\n const projectRoot = resolve(targetPath);\n const docsPath = options.docs || 'docs';\n const verbose = options.verbose || false;\n const dryRun = options.dryRun || false;\n\n console.log(chalk.bold.green('\\nš± Knowledge Graph Cultivator\\n'));\n console.log(` Project: ${projectRoot}`);\n console.log(` Docs: ${docsPath}`);\n if (dryRun) {\n console.log(` Mode: ${chalk.yellow('Dry Run')}`);\n }\n console.log('');\n\n // Determine tasks\n const tasks = {\n seed: options.seed || false,\n deepAnalysis: options.deepAnalysis || false,\n };\n\n // If no tasks selected, show help\n if (!tasks.seed && !tasks.deepAnalysis) {\n console.log(chalk.yellow('š” No tasks selected. Use one or more of:'));\n console.log(' --seed Bootstrap vault with primitives from codebase');\n console.log(' --deep-analysis Use claude-flow for deep codebase analysis');\n console.log('');\n console.log(chalk.gray('Options:'));\n console.log(' --dry-run Preview without writing files');\n console.log(' --cache Use shadow cache for incremental updates (default: true)');\n console.log(' --refresh-cache Force refresh the shadow cache');\n console.log(' --ecosystem Filter to ecosystems (nodejs,python,rust,go,php,java)');\n console.log(' --include-dev Include dev dependencies');\n console.log(' --major-only Only process major dependencies');\n console.log('');\n console.log('Run \"kg cultivate --help\" for more options');\n return;\n }\n\n const startTime = Date.now();\n const result: CultivationResult = {\n success: true,\n seed: { created: 0, documents: [] },\n analysis: { filesProcessed: 0, dependenciesFound: 0, servicesFound: 0 },\n cache: { updated: 0, hits: 0, misses: 0 },\n duration: 0,\n warnings: [],\n errors: [],\n };\n\n try {\n // Initialize shadow cache\n let cache: ShadowCache | undefined;\n if (options.cache !== false) {\n console.log(chalk.cyan('š¦ Initializing shadow cache...'));\n cache = await loadShadowCache(projectRoot);\n\n if (options.refreshCache) {\n cache.clear();\n console.log(chalk.gray(' Cache cleared (refresh mode)'));\n }\n\n const stats = cache.getStats();\n console.log(chalk.gray(` Entries: ${stats.totalEntries}, Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`));\n console.log('');\n }\n\n // Task 1: Seed primitives\n if (tasks.seed) {\n console.log(chalk.cyan('š± Seeding primitives from codebase...\\n'));\n\n // Parse ecosystem filter\n let ecosystems: Ecosystem[] | undefined;\n if (options.ecosystem) {\n ecosystems = options.ecosystem.split(',').map(e => e.trim() as Ecosystem);\n console.log(chalk.gray(` Ecosystems: ${ecosystems.join(', ')}`));\n }\n\n // Create generator\n const generator = await SeedGenerator.create(projectRoot, docsPath);\n\n // Analyze\n console.log(chalk.gray(' Analyzing codebase...'));\n const analysis = await generator.analyze();\n\n result.analysis = {\n filesProcessed: analysis.metadata.filesScanned,\n dependenciesFound: analysis.dependencies.length,\n servicesFound: analysis.services.length,\n };\n\n // Display analysis\n console.log(`\\n ${chalk.bold('Analysis Results:')}`);\n console.log(` Languages: ${analysis.languages.join(', ') || 'none'}`);\n console.log(` Dependencies: ${analysis.dependencies.length}`);\n console.log(` Frameworks: ${analysis.frameworks.length}`);\n console.log(` Services: ${analysis.services.length}`);\n console.log(` Deployments: ${analysis.deployments.length}`);\n\n if (verbose) {\n displayDetailedAnalysis(analysis);\n }\n\n console.log('');\n\n // Generate primitives\n console.log(chalk.gray(' Generating primitive nodes...'));\n const documents = await generator.generatePrimitives(analysis);\n\n if (dryRun) {\n console.log(`\\n ${chalk.yellow('[DRY RUN]')} Would create ${documents.length} primitives:`);\n for (const doc of documents.slice(0, 10)) {\n console.log(` - ${doc.frontmatter.type}: ${doc.title}`);\n }\n if (documents.length > 10) {\n console.log(` ... and ${documents.length - 10} more`);\n }\n result.seed.documents = documents.map(d => ({\n title: d.title,\n path: d.path,\n type: d.frontmatter.type || 'unknown',\n }));\n } else {\n const writeResult = await generator.writePrimitives(documents);\n result.seed.created = writeResult.documentsGenerated.length;\n result.seed.documents = writeResult.documentsGenerated;\n\n console.log(`\\n ${chalk.green('ā')} Created ${writeResult.documentsGenerated.length} primitives`);\n\n if (writeResult.warnings.length > 0) {\n result.warnings.push(...writeResult.warnings);\n if (verbose) {\n console.log(chalk.yellow(` Warnings: ${writeResult.warnings.length}`));\n }\n }\n\n if (writeResult.errors.length > 0) {\n result.errors.push(...writeResult.errors);\n console.log(chalk.red(` Errors: ${writeResult.errors.length}`));\n }\n }\n\n console.log('');\n }\n\n // Task 2: Deep Analysis\n if (tasks.deepAnalysis) {\n console.log(chalk.cyan('š§ Running deep analysis...\\n'));\n\n // Import and check DeepAnalyzer availability\n const { DeepAnalyzer } = await import('../../cultivation/deep-analyzer.js');\n const analyzer = new DeepAnalyzer({\n projectRoot,\n docsPath,\n verbose,\n });\n\n const availability = await analyzer.getAvailabilityStatus();\n\n if (!availability.available) {\n console.log(chalk.yellow(' ā ļø Deep analysis unavailable'));\n console.log(chalk.gray(` ${availability.reason}`));\n console.log('');\n console.log(chalk.gray(' Options:'));\n console.log(chalk.gray(' 1. Run from a regular terminal (outside Claude Code)'));\n console.log(chalk.gray(' 2. Set ANTHROPIC_API_KEY environment variable'));\n result.warnings.push(`Deep analysis unavailable: ${availability.reason}`);\n } else {\n console.log(chalk.gray(` Mode: ${availability.reason}`));\n\n if (dryRun) {\n console.log(chalk.yellow('\\n [DRY RUN] Would run analysis agents:'));\n console.log(' - Pattern Researcher: Analyze codebase architecture');\n console.log(' - Code Analyst: Identify quality issues');\n console.log(' - Implementation Reviewer: Review code patterns');\n console.log(' - Test Analyzer: Analyze test coverage');\n } else {\n try {\n const deepResult = await analyzer.analyze();\n\n if (deepResult.success) {\n console.log(`\\n ${chalk.green('ā')} Deep analysis complete`);\n console.log(` Agents spawned: ${deepResult.agentsSpawned}`);\n console.log(` Insights generated: ${deepResult.insightsCount}`);\n console.log(` Documentation created: ${deepResult.documentsCreated}`);\n console.log(` Mode: ${deepResult.mode}`);\n } else {\n console.log(`\\n ${chalk.yellow('ā ')} Deep analysis completed with issues`);\n console.log(` Agents spawned: ${deepResult.agentsSpawned}`);\n console.log(` Insights generated: ${deepResult.insightsCount}`);\n if (deepResult.errors.length > 0) {\n for (const err of deepResult.errors.slice(0, 3)) {\n console.log(chalk.gray(` - ${err}`));\n }\n }\n result.warnings.push(...deepResult.errors);\n }\n } catch (error) {\n result.errors.push(`Deep analysis failed: ${error instanceof Error ? error.message : String(error)}`);\n console.log(chalk.red(` ā Deep analysis failed: ${error instanceof Error ? error.message : String(error)}`));\n }\n }\n }\n\n console.log('');\n }\n\n // Update cache\n if (cache) {\n const stats = cache.getStats();\n result.cache = {\n updated: stats.totalEntries,\n hits: stats.hitCount,\n misses: stats.missCount,\n };\n\n await cache.save();\n }\n\n result.duration = Date.now() - startTime;\n result.success = result.errors.length === 0;\n\n // Final summary\n displaySummary(result, dryRun);\n\n } catch (error) {\n console.error(chalk.red('\\nā Cultivation failed:'), error);\n process.exit(1);\n }\n });\n}\n\n/**\n * Display detailed analysis output\n */\nfunction displayDetailedAnalysis(analysis: SeedAnalysis): void {\n if (analysis.frameworks.length > 0) {\n console.log(`\\n ${chalk.gray('Frameworks:')}`);\n for (const fw of analysis.frameworks) {\n console.log(` - ${fw.name} (${fw.ecosystem}) v${fw.version}`);\n }\n }\n\n if (analysis.services.length > 0) {\n console.log(`\\n ${chalk.gray('Services:')}`);\n for (const svc of analysis.services) {\n console.log(` - ${svc.name}: ${svc.type} (${svc.technology})`);\n }\n }\n\n if (analysis.deployments.length > 0) {\n console.log(`\\n ${chalk.gray('Deployments:')}`);\n for (const dep of analysis.deployments) {\n console.log(` - ${dep}`);\n }\n }\n}\n\n/**\n * Display cultivation summary\n */\nfunction displaySummary(result: CultivationResult, dryRun: boolean): void {\n console.log(chalk.bold.blue('š Cultivation Summary\\n'));\n\n if (dryRun) {\n console.log(chalk.yellow('[DRY RUN] No changes were made\\n'));\n }\n\n console.log(' Analysis:');\n console.log(` Files processed: ${result.analysis.filesProcessed}`);\n console.log(` Dependencies: ${result.analysis.dependenciesFound}`);\n console.log(` Services: ${result.analysis.servicesFound}`);\n\n if (result.seed.created > 0 || result.seed.documents.length > 0) {\n console.log('\\n Seed:');\n console.log(` Primitives ${dryRun ? 'would create' : 'created'}: ${dryRun ? result.seed.documents.length : result.seed.created}`);\n }\n\n if (result.cache.updated > 0) {\n console.log('\\n Cache:');\n console.log(` Entries: ${result.cache.updated}`);\n const hitRate = result.cache.hits + result.cache.misses > 0\n ? (result.cache.hits / (result.cache.hits + result.cache.misses) * 100).toFixed(1)\n : 0;\n console.log(` Hit rate: ${hitRate}%`);\n }\n\n console.log(`\\n Duration: ${(result.duration / 1000).toFixed(2)}s`);\n\n if (result.warnings.length > 0) {\n console.log(chalk.yellow(`\\n ā ļø Warnings: ${result.warnings.length}`));\n for (const warning of result.warnings.slice(0, 5)) {\n console.log(chalk.gray(` - ${warning}`));\n }\n }\n\n if (result.errors.length > 0) {\n console.log(chalk.red(`\\n ā Errors: ${result.errors.length}`));\n for (const error of result.errors.slice(0, 5)) {\n console.log(chalk.gray(` - ${error}`));\n }\n }\n\n if (result.success && !dryRun) {\n console.log(chalk.bold.green('\\n⨠Cultivation complete!\\n'));\n } else if (!result.success) {\n console.log(chalk.yellow('\\nā ļø Cultivation completed with errors\\n'));\n } else {\n console.log(chalk.gray('\\nRun without --dry-run to apply changes\\n'));\n }\n}\n\n"],"names":[],"mappings":";;;;;AA8CO,SAAS,yBAAkC;AAChD,SAAO,IAAI,QAAQ,WAAW,EAC3B,YAAY,0DAA0D,EACtE,SAAS,UAAU,0DAA0D,GAAG,EAChF,OAAO,aAAa,qCAAqC,KAAK,EAC9D,OAAO,qBAAqB,sBAAsB,MAAM,EACxD,OAAO,iBAAiB,kBAAkB,KAAK,EAC/C,OAAO,UAAU,0DAA0D,KAAK,EAChF,OAAO,mBAAmB,4CAA4C,KAAK,EAC3E,OAAO,WAAW,4CAA4C,IAAI,EAClE,OAAO,4BAA4B,mDAAmD,MAAS,EAC/F,OAAO,iBAAiB,4BAA4B,KAAK,EACzD,OAAO,gBAAgB,mCAAmC,KAAK,EAC/D,OAAO,mBAAmB,kCAAkC,KAAK,EACjE,OAAO,OAAO,YAAoB,YAW7B;AACJ,UAAM,cAAc,QAAQ,UAAU;AACtC,UAAM,WAAW,QAAQ,QAAQ;AACjC,UAAM,UAAU,QAAQ,WAAW;AACnC,UAAM,SAAS,QAAQ,UAAU;AAEjC,YAAQ,IAAI,MAAM,KAAK,MAAM,mCAAmC,CAAC;AACjE,YAAQ,IAAI,cAAc,WAAW,EAAE;AACvC,YAAQ,IAAI,WAAW,QAAQ,EAAE;AACjC,QAAI,QAAQ;AACV,cAAQ,IAAI,WAAW,MAAM,OAAO,SAAS,CAAC,EAAE;AAAA,IAClD;AACA,YAAQ,IAAI,EAAE;AAGd,UAAM,QAAQ;AAAA,MACZ,MAAM,QAAQ,QAAQ;AAAA,MACtB,cAAc,QAAQ,gBAAgB;AAAA,IAAA;AAIxC,QAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,cAAc;AACtC,cAAQ,IAAI,MAAM,OAAO,2CAA2C,CAAC;AACrE,cAAQ,IAAI,kEAAkE;AAC9E,cAAQ,IAAI,+DAA+D;AAC3E,cAAQ,IAAI,EAAE;AACd,cAAQ,IAAI,MAAM,KAAK,UAAU,CAAC;AAClC,cAAQ,IAAI,kDAAkD;AAC9D,cAAQ,IAAI,6EAA6E;AACzF,cAAQ,IAAI,mDAAmD;AAC/D,cAAQ,IAAI,0EAA0E;AACtF,cAAQ,IAAI,6CAA6C;AACzD,cAAQ,IAAI,oDAAoD;AAChE,cAAQ,IAAI,EAAE;AACd,cAAQ,IAAI,4CAA4C;AACxD;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,IAAA;AACvB,UAAM,SAA4B;AAAA,MAChC,SAAS;AAAA,MACT,MAAM,EAAE,SAAS,GAAG,WAAW,CAAA,EAAC;AAAA,MAChC,UAAU,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,eAAe,EAAA;AAAA,MACpE,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAA;AAAA,MACtC,UAAU;AAAA,MACV,UAAU,CAAA;AAAA,MACV,QAAQ,CAAA;AAAA,IAAC;AAGX,QAAI;AAEF,UAAI;AACJ,UAAI,QAAQ,UAAU,OAAO;AAC3B,gBAAQ,IAAI,MAAM,KAAK,iCAAiC,CAAC;AACzD,gBAAQ,MAAM,gBAAgB,WAAW;AAEzC,YAAI,QAAQ,cAAc;AACxB,gBAAM,MAAA;AACN,kBAAQ,IAAI,MAAM,KAAK,gCAAgC,CAAC;AAAA,QAC1D;AAEA,cAAM,QAAQ,MAAM,SAAA;AACpB,gBAAQ,IAAI,MAAM,KAAK,cAAc,MAAM,YAAY,gBAAgB,MAAM,UAAU,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC;AAC1G,gBAAQ,IAAI,EAAE;AAAA,MAChB;AAGA,UAAI,MAAM,MAAM;AACd,gBAAQ,IAAI,MAAM,KAAK,0CAA0C,CAAC;AAGlE,YAAI;AACJ,YAAI,QAAQ,WAAW;AACrB,uBAAa,QAAQ,UAAU,MAAM,GAAG,EAAE,IAAI,CAAA,MAAK,EAAE,MAAmB;AACxE,kBAAQ,IAAI,MAAM,KAAK,iBAAiB,WAAW,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,QAClE;AAGA,cAAM,YAAY,MAAM,cAAc,OAAO,aAAa,QAAQ;AAGlE,gBAAQ,IAAI,MAAM,KAAK,yBAAyB,CAAC;AACjD,cAAM,WAAW,MAAM,UAAU,QAAA;AAEjC,eAAO,WAAW;AAAA,UAChB,gBAAgB,SAAS,SAAS;AAAA,UAClC,mBAAmB,SAAS,aAAa;AAAA,UACzC,eAAe,SAAS,SAAS;AAAA,QAAA;AAInC,gBAAQ,IAAI;AAAA,IAAO,MAAM,KAAK,mBAAmB,CAAC,EAAE;AACpD,gBAAQ,IAAI,kBAAkB,SAAS,UAAU,KAAK,IAAI,KAAK,MAAM,EAAE;AACvE,gBAAQ,IAAI,qBAAqB,SAAS,aAAa,MAAM,EAAE;AAC/D,gBAAQ,IAAI,mBAAmB,SAAS,WAAW,MAAM,EAAE;AAC3D,gBAAQ,IAAI,iBAAiB,SAAS,SAAS,MAAM,EAAE;AACvD,gBAAQ,IAAI,oBAAoB,SAAS,YAAY,MAAM,EAAE;AAE7D,YAAI,SAAS;AACX,kCAAwB,QAAQ;AAAA,QAClC;AAEA,gBAAQ,IAAI,EAAE;AAGd,gBAAQ,IAAI,MAAM,KAAK,iCAAiC,CAAC;AACzD,cAAM,YAAY,MAAM,UAAU,mBAAmB,QAAQ;AAE7D,YAAI,QAAQ;AACV,kBAAQ,IAAI;AAAA,IAAO,MAAM,OAAO,WAAW,CAAC,iBAAiB,UAAU,MAAM,cAAc;AAC3F,qBAAW,OAAO,UAAU,MAAM,GAAG,EAAE,GAAG;AACxC,oBAAQ,IAAI,SAAS,IAAI,YAAY,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,UAC3D;AACA,cAAI,UAAU,SAAS,IAAI;AACzB,oBAAQ,IAAI,eAAe,UAAU,SAAS,EAAE,OAAO;AAAA,UACzD;AACA,iBAAO,KAAK,YAAY,UAAU,IAAI,CAAA,OAAM;AAAA,YAC1C,OAAO,EAAE;AAAA,YACT,MAAM,EAAE;AAAA,YACR,MAAM,EAAE,YAAY,QAAQ;AAAA,UAAA,EAC5B;AAAA,QACJ,OAAO;AACL,gBAAM,cAAc,MAAM,UAAU,gBAAgB,SAAS;AAC7D,iBAAO,KAAK,UAAU,YAAY,mBAAmB;AACrD,iBAAO,KAAK,YAAY,YAAY;AAEpC,kBAAQ,IAAI;AAAA,IAAO,MAAM,MAAM,GAAG,CAAC,YAAY,YAAY,mBAAmB,MAAM,aAAa;AAEjG,cAAI,YAAY,SAAS,SAAS,GAAG;AACnC,mBAAO,SAAS,KAAK,GAAG,YAAY,QAAQ;AAC5C,gBAAI,SAAS;AACX,sBAAQ,IAAI,MAAM,OAAO,eAAe,YAAY,SAAS,MAAM,EAAE,CAAC;AAAA,YACxE;AAAA,UACF;AAEA,cAAI,YAAY,OAAO,SAAS,GAAG;AACjC,mBAAO,OAAO,KAAK,GAAG,YAAY,MAAM;AACxC,oBAAQ,IAAI,MAAM,IAAI,aAAa,YAAY,OAAO,MAAM,EAAE,CAAC;AAAA,UACjE;AAAA,QACF;AAEA,gBAAQ,IAAI,EAAE;AAAA,MAChB;AAGA,UAAI,MAAM,cAAc;AACtB,gBAAQ,IAAI,MAAM,KAAK,+BAA+B,CAAC;AAGvD,cAAM,EAAE,aAAA,IAAiB,MAAM,OAAO,oCAAoC;AAC1E,cAAM,WAAW,IAAI,aAAa;AAAA,UAChC;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAED,cAAM,eAAe,MAAM,SAAS,sBAAA;AAEpC,YAAI,CAAC,aAAa,WAAW;AAC3B,kBAAQ,IAAI,MAAM,OAAO,iCAAiC,CAAC;AAC3D,kBAAQ,IAAI,MAAM,KAAK,KAAK,aAAa,MAAM,EAAE,CAAC;AAClD,kBAAQ,IAAI,EAAE;AACd,kBAAQ,IAAI,MAAM,KAAK,YAAY,CAAC;AACpC,kBAAQ,IAAI,MAAM,KAAK,wDAAwD,CAAC;AAChF,kBAAQ,IAAI,MAAM,KAAK,iDAAiD,CAAC;AACzE,iBAAO,SAAS,KAAK,8BAA8B,aAAa,MAAM,EAAE;AAAA,QAC1E,OAAO;AACL,kBAAQ,IAAI,MAAM,KAAK,WAAW,aAAa,MAAM,EAAE,CAAC;AAExD,cAAI,QAAQ;AACV,oBAAQ,IAAI,MAAM,OAAO,0CAA0C,CAAC;AACpE,oBAAQ,IAAI,yDAAyD;AACrE,oBAAQ,IAAI,6CAA6C;AACzD,oBAAQ,IAAI,qDAAqD;AACjE,oBAAQ,IAAI,4CAA4C;AAAA,UAC1D,OAAO;AACL,gBAAI;AACF,oBAAM,aAAa,MAAM,SAAS,QAAA;AAElC,kBAAI,WAAW,SAAS;AACtB,wBAAQ,IAAI;AAAA,IAAO,MAAM,MAAM,GAAG,CAAC,yBAAyB;AAC5D,wBAAQ,IAAI,uBAAuB,WAAW,aAAa,EAAE;AAC7D,wBAAQ,IAAI,2BAA2B,WAAW,aAAa,EAAE;AACjE,wBAAQ,IAAI,8BAA8B,WAAW,gBAAgB,EAAE;AACvE,wBAAQ,IAAI,aAAa,WAAW,IAAI,EAAE;AAAA,cAC5C,OAAO;AACL,wBAAQ,IAAI;AAAA,IAAO,MAAM,OAAO,GAAG,CAAC,sCAAsC;AAC1E,wBAAQ,IAAI,uBAAuB,WAAW,aAAa,EAAE;AAC7D,wBAAQ,IAAI,2BAA2B,WAAW,aAAa,EAAE;AACjE,oBAAI,WAAW,OAAO,SAAS,GAAG;AAChC,6BAAW,OAAO,WAAW,OAAO,MAAM,GAAG,CAAC,GAAG;AAC/C,4BAAQ,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,CAAC;AAAA,kBACxC;AAAA,gBACF;AACA,uBAAO,SAAS,KAAK,GAAG,WAAW,MAAM;AAAA,cAC3C;AAAA,YACF,SAAS,OAAO;AACd,qBAAO,OAAO,KAAK,yBAAyB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AACpG,sBAAQ,IAAI,MAAM,IAAI,6BAA6B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE,CAAC;AAAA,YAC9G;AAAA,UACF;AAAA,QACF;AAEA,gBAAQ,IAAI,EAAE;AAAA,MAChB;AAGA,UAAI,OAAO;AACT,cAAM,QAAQ,MAAM,SAAA;AACpB,eAAO,QAAQ;AAAA,UACb,SAAS,MAAM;AAAA,UACf,MAAM,MAAM;AAAA,UACZ,QAAQ,MAAM;AAAA,QAAA;AAGhB,cAAM,MAAM,KAAA;AAAA,MACd;AAEA,aAAO,WAAW,KAAK,IAAA,IAAQ;AAC/B,aAAO,UAAU,OAAO,OAAO,WAAW;AAG1C,qBAAe,QAAQ,MAAM;AAAA,IAE/B,SAAS,OAAO;AACd,cAAQ,MAAM,MAAM,IAAI,yBAAyB,GAAG,KAAK;AACzD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AACL;AAKA,SAAS,wBAAwB,UAA8B;AAC7D,MAAI,SAAS,WAAW,SAAS,GAAG;AAClC,YAAQ,IAAI;AAAA,MAAS,MAAM,KAAK,aAAa,CAAC,EAAE;AAChD,eAAW,MAAM,SAAS,YAAY;AACpC,cAAQ,IAAI,WAAW,GAAG,IAAI,KAAK,GAAG,SAAS,MAAM,GAAG,OAAO,EAAE;AAAA,IACnE;AAAA,EACF;AAEA,MAAI,SAAS,SAAS,SAAS,GAAG;AAChC,YAAQ,IAAI;AAAA,MAAS,MAAM,KAAK,WAAW,CAAC,EAAE;AAC9C,eAAW,OAAO,SAAS,UAAU;AACnC,cAAQ,IAAI,WAAW,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,UAAU,GAAG;AAAA,IACpE;AAAA,EACF;AAEA,MAAI,SAAS,YAAY,SAAS,GAAG;AACnC,YAAQ,IAAI;AAAA,MAAS,MAAM,KAAK,cAAc,CAAC,EAAE;AACjD,eAAW,OAAO,SAAS,aAAa;AACtC,cAAQ,IAAI,WAAW,GAAG,EAAE;AAAA,IAC9B;AAAA,EACF;AACF;AAKA,SAAS,eAAe,QAA2B,QAAuB;AACxE,UAAQ,IAAI,MAAM,KAAK,KAAK,0BAA0B,CAAC;AAEvD,MAAI,QAAQ;AACV,YAAQ,IAAI,MAAM,OAAO,kCAAkC,CAAC;AAAA,EAC9D;AAEA,UAAQ,IAAI,aAAa;AACzB,UAAQ,IAAI,wBAAwB,OAAO,SAAS,cAAc,EAAE;AACpE,UAAQ,IAAI,qBAAqB,OAAO,SAAS,iBAAiB,EAAE;AACpE,UAAQ,IAAI,iBAAiB,OAAO,SAAS,aAAa,EAAE;AAE5D,MAAI,OAAO,KAAK,UAAU,KAAK,OAAO,KAAK,UAAU,SAAS,GAAG;AAC/D,YAAQ,IAAI,WAAW;AACvB,YAAQ,IAAI,kBAAkB,SAAS,iBAAiB,SAAS,KAAK,SAAS,OAAO,KAAK,UAAU,SAAS,OAAO,KAAK,OAAO,EAAE;AAAA,EACrI;AAEA,MAAI,OAAO,MAAM,UAAU,GAAG;AAC5B,YAAQ,IAAI,YAAY;AACxB,YAAQ,IAAI,gBAAgB,OAAO,MAAM,OAAO,EAAE;AAClD,UAAM,UAAU,OAAO,MAAM,OAAO,OAAO,MAAM,SAAS,KACrD,OAAO,MAAM,QAAQ,OAAO,MAAM,OAAO,OAAO,MAAM,UAAU,KAAK,QAAQ,CAAC,IAC/E;AACJ,YAAQ,IAAI,iBAAiB,OAAO,GAAG;AAAA,EACzC;AAEA,UAAQ,IAAI;AAAA,eAAkB,OAAO,WAAW,KAAM,QAAQ,CAAC,CAAC,GAAG;AAEnE,MAAI,OAAO,SAAS,SAAS,GAAG;AAC9B,YAAQ,IAAI,MAAM,OAAO;AAAA,kBAAqB,OAAO,SAAS,MAAM,EAAE,CAAC;AACvE,eAAW,WAAW,OAAO,SAAS,MAAM,GAAG,CAAC,GAAG;AACjD,cAAQ,IAAI,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,MAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,YAAQ,IAAI,MAAM,IAAI;AAAA,cAAiB,OAAO,OAAO,MAAM,EAAE,CAAC;AAC9D,eAAW,SAAS,OAAO,OAAO,MAAM,GAAG,CAAC,GAAG;AAC7C,cAAQ,IAAI,MAAM,KAAK,SAAS,KAAK,EAAE,CAAC;AAAA,IAC1C;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,CAAC,QAAQ;AAC7B,YAAQ,IAAI,MAAM,KAAK,MAAM,6BAA6B,CAAC;AAAA,EAC7D,WAAW,CAAC,OAAO,SAAS;AAC1B,YAAQ,IAAI,MAAM,OAAO,2CAA2C,CAAC;AAAA,EACvE,OAAO;AACL,YAAQ,IAAI,MAAM,KAAK,4CAA4C,CAAC;AAAA,EACtE;AACF;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* DeepAnalyzer -
|
|
2
|
+
* DeepAnalyzer - Deep Codebase Analysis
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
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
|
+
* - Clear error messaging when neither option is available
|
|
8
8
|
*
|
|
9
9
|
* @module cultivation/deep-analyzer
|
|
10
10
|
*/
|
|
@@ -26,6 +26,8 @@ export interface DeepAnalyzerOptions {
|
|
|
26
26
|
agentMode?: 'sequential' | 'parallel' | 'adaptive';
|
|
27
27
|
/** Timeout for each agent (ms) */
|
|
28
28
|
agentTimeout?: number;
|
|
29
|
+
/** Force use of API key even if CLI is available */
|
|
30
|
+
forceApiKey?: boolean;
|
|
29
31
|
}
|
|
30
32
|
/**
|
|
31
33
|
* Analysis result from an agent
|
|
@@ -53,9 +55,10 @@ export interface DeepAnalysisResult {
|
|
|
53
55
|
results: AgentResult[];
|
|
54
56
|
duration: number;
|
|
55
57
|
errors: string[];
|
|
58
|
+
mode: 'cli' | 'api' | 'static';
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
58
|
-
* DeepAnalyzer -
|
|
61
|
+
* DeepAnalyzer - Deep codebase analysis with multiple execution modes
|
|
59
62
|
*
|
|
60
63
|
* @example
|
|
61
64
|
* ```typescript
|
|
@@ -76,46 +79,59 @@ export declare class DeepAnalyzer {
|
|
|
76
79
|
private maxAgents;
|
|
77
80
|
private agentMode;
|
|
78
81
|
private agentTimeout;
|
|
79
|
-
private
|
|
82
|
+
private forceApiKey;
|
|
80
83
|
constructor(options: DeepAnalyzerOptions);
|
|
81
84
|
/**
|
|
82
|
-
* Check if
|
|
83
|
-
* Checks for direct command first (globally installed), then falls back to npx
|
|
85
|
+
* Check if running inside a Claude Code session
|
|
84
86
|
*/
|
|
85
|
-
|
|
87
|
+
private isInsideClaudeCode;
|
|
86
88
|
/**
|
|
87
|
-
*
|
|
88
|
-
* Returns the command configuration or null if not available
|
|
89
|
+
* Check if Anthropic API key is available
|
|
89
90
|
*/
|
|
90
|
-
private
|
|
91
|
+
private hasApiKey;
|
|
91
92
|
/**
|
|
92
|
-
*
|
|
93
|
+
* Check if Claude CLI is available
|
|
93
94
|
*/
|
|
94
|
-
|
|
95
|
+
private isCliAvailable;
|
|
95
96
|
/**
|
|
96
|
-
*
|
|
97
|
+
* Determine the best execution mode
|
|
97
98
|
*/
|
|
98
|
-
private
|
|
99
|
+
private detectExecutionMode;
|
|
99
100
|
/**
|
|
100
|
-
*
|
|
101
|
+
* Check if analysis is available
|
|
101
102
|
*/
|
|
102
|
-
|
|
103
|
+
isAvailable(): Promise<boolean>;
|
|
103
104
|
/**
|
|
104
|
-
*
|
|
105
|
+
* Get availability status with reason
|
|
105
106
|
*/
|
|
106
|
-
|
|
107
|
+
getAvailabilityStatus(): Promise<{
|
|
108
|
+
available: boolean;
|
|
109
|
+
reason: string;
|
|
110
|
+
}>;
|
|
111
|
+
/**
|
|
112
|
+
* Run deep analysis
|
|
113
|
+
*/
|
|
114
|
+
analyze(): Promise<DeepAnalysisResult>;
|
|
107
115
|
/**
|
|
108
116
|
* Execute a single agent
|
|
109
117
|
*/
|
|
110
118
|
private executeAgent;
|
|
111
119
|
/**
|
|
112
|
-
* Build prompt for
|
|
120
|
+
* Build context-aware prompt for analysis
|
|
113
121
|
*/
|
|
114
122
|
private buildPrompt;
|
|
115
123
|
/**
|
|
116
|
-
*
|
|
124
|
+
* Gather project context for analysis
|
|
125
|
+
*/
|
|
126
|
+
private gatherProjectContext;
|
|
127
|
+
/**
|
|
128
|
+
* Run analysis using Claude CLI
|
|
129
|
+
*/
|
|
130
|
+
private runWithCli;
|
|
131
|
+
/**
|
|
132
|
+
* Run analysis using Anthropic API directly
|
|
117
133
|
*/
|
|
118
|
-
private
|
|
134
|
+
private runWithApi;
|
|
119
135
|
/**
|
|
120
136
|
* Extract insights from agent output
|
|
121
137
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-analyzer.d.ts","sourceRoot":"","sources":["../../src/cultivation/deep-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IACnD,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"deep-analyzer.d.ts","sourceRoot":"","sources":["../../src/cultivation/deep-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IACnD,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;CAChC;AAoBD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAEjB,OAAO,EAAE,mBAAmB;IAYxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ9E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA0F5C;;OAEG;YACW,YAAY;IA8C1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoD5B;;OAEG;YACW,UAAU;IA8BxB;;OAEG;YACW,UAAU;IAsCxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,YAAY;CA4BrB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAE7E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAG7B"}
|