@weavelogic/knowledge-graph-agent 0.10.7 → 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.
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +102 -0
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cultivation/migration-orchestrator.d.ts +195 -0
- package/dist/cultivation/migration-orchestrator.d.ts.map +1 -0
- package/dist/cultivation/migration-orchestrator.js +797 -0
- package/dist/cultivation/migration-orchestrator.js.map +1 -0
- package/package.json +1 -1
|
@@ -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,
|
|
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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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Orchestrator - Implements Analysis Recommendations
|
|
3
|
+
*
|
|
4
|
+
* Uses claude-flow swarms to implement suggestions from cultivation analysis:
|
|
5
|
+
* - Fill documentation gaps identified by Gap Analyst
|
|
6
|
+
* - Answer research questions with specialized agents
|
|
7
|
+
* - Build knowledge graph connections
|
|
8
|
+
* - Create missing MOC files and documentation
|
|
9
|
+
*
|
|
10
|
+
* @module cultivation/migration-orchestrator
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Parsed gap from analysis
|
|
14
|
+
*/
|
|
15
|
+
interface DocumentationGap {
|
|
16
|
+
section: string;
|
|
17
|
+
description: string;
|
|
18
|
+
recommendation: string;
|
|
19
|
+
priority: 'high' | 'medium' | 'low';
|
|
20
|
+
relatedDocs: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parsed research question from analysis
|
|
24
|
+
*/
|
|
25
|
+
interface ResearchQuestion {
|
|
26
|
+
question: string;
|
|
27
|
+
context: string;
|
|
28
|
+
importance: string;
|
|
29
|
+
suggestedResources: string[];
|
|
30
|
+
category: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parsed connection suggestion from analysis
|
|
34
|
+
*/
|
|
35
|
+
interface ConnectionSuggestion {
|
|
36
|
+
source: string;
|
|
37
|
+
target: string;
|
|
38
|
+
relationship: string;
|
|
39
|
+
reason: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parsed analysis results
|
|
43
|
+
*/
|
|
44
|
+
interface ParsedAnalysis {
|
|
45
|
+
vision: {
|
|
46
|
+
purpose: string;
|
|
47
|
+
goals: string[];
|
|
48
|
+
recommendations: string[];
|
|
49
|
+
};
|
|
50
|
+
gaps: DocumentationGap[];
|
|
51
|
+
questions: ResearchQuestion[];
|
|
52
|
+
connections: ConnectionSuggestion[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Migration result
|
|
56
|
+
*/
|
|
57
|
+
interface MigrationResult {
|
|
58
|
+
success: boolean;
|
|
59
|
+
agentsUsed: number;
|
|
60
|
+
documentsCreated: number;
|
|
61
|
+
documentsUpdated: number;
|
|
62
|
+
connectionsAdded: number;
|
|
63
|
+
questionsAnswered: number;
|
|
64
|
+
gapsFilled: number;
|
|
65
|
+
errors: string[];
|
|
66
|
+
warnings: string[];
|
|
67
|
+
duration: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Orchestrator options
|
|
71
|
+
*/
|
|
72
|
+
interface OrchestratorOptions {
|
|
73
|
+
projectRoot: string;
|
|
74
|
+
docsPath: string;
|
|
75
|
+
analysisDir: string;
|
|
76
|
+
verbose?: boolean;
|
|
77
|
+
dryRun?: boolean;
|
|
78
|
+
useVectorSearch?: boolean;
|
|
79
|
+
maxAgents?: number;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Orchestrates the migration from analysis to implemented documentation
|
|
83
|
+
*/
|
|
84
|
+
export declare class MigrationOrchestrator {
|
|
85
|
+
private projectRoot;
|
|
86
|
+
private docsPath;
|
|
87
|
+
private analysisDir;
|
|
88
|
+
private verbose;
|
|
89
|
+
private dryRun;
|
|
90
|
+
private useVectorSearch;
|
|
91
|
+
private maxAgents;
|
|
92
|
+
private geminiClient;
|
|
93
|
+
constructor(options: OrchestratorOptions);
|
|
94
|
+
/**
|
|
95
|
+
* Check availability status
|
|
96
|
+
*/
|
|
97
|
+
getAvailabilityStatus(): Promise<{
|
|
98
|
+
available: boolean;
|
|
99
|
+
reason: string;
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* Run the migration process
|
|
103
|
+
*/
|
|
104
|
+
migrate(): Promise<MigrationResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Parse all analysis files from the analysis directory
|
|
107
|
+
*/
|
|
108
|
+
private parseAnalysisFiles;
|
|
109
|
+
/**
|
|
110
|
+
* Parse vision synthesis file
|
|
111
|
+
*/
|
|
112
|
+
private parseVisionFile;
|
|
113
|
+
/**
|
|
114
|
+
* Parse documentation gaps file
|
|
115
|
+
*/
|
|
116
|
+
private parseGapsFile;
|
|
117
|
+
/**
|
|
118
|
+
* Parse research questions file
|
|
119
|
+
*/
|
|
120
|
+
private parseQuestionsFile;
|
|
121
|
+
/**
|
|
122
|
+
* Parse knowledge connections file
|
|
123
|
+
*/
|
|
124
|
+
private parseConnectionsFile;
|
|
125
|
+
/**
|
|
126
|
+
* Load all documentation as context
|
|
127
|
+
*/
|
|
128
|
+
private loadDocsContext;
|
|
129
|
+
/**
|
|
130
|
+
* Create migration agents based on analysis
|
|
131
|
+
*/
|
|
132
|
+
private createMigrationAgents;
|
|
133
|
+
/**
|
|
134
|
+
* Build context for gap filler agent
|
|
135
|
+
*/
|
|
136
|
+
private buildGapFillerContext;
|
|
137
|
+
/**
|
|
138
|
+
* Build context for researcher agent
|
|
139
|
+
*/
|
|
140
|
+
private buildResearcherContext;
|
|
141
|
+
/**
|
|
142
|
+
* Build context for MOC builder agent
|
|
143
|
+
*/
|
|
144
|
+
private buildMOCBuilderContext;
|
|
145
|
+
/**
|
|
146
|
+
* Build context for connector agent
|
|
147
|
+
*/
|
|
148
|
+
private buildConnectorContext;
|
|
149
|
+
/**
|
|
150
|
+
* Build context for integrator agent
|
|
151
|
+
*/
|
|
152
|
+
private buildIntegratorContext;
|
|
153
|
+
/**
|
|
154
|
+
* Execute a single migration agent
|
|
155
|
+
*/
|
|
156
|
+
private executeAgent;
|
|
157
|
+
/**
|
|
158
|
+
* Build prompt for agent
|
|
159
|
+
*/
|
|
160
|
+
private buildAgentPrompt;
|
|
161
|
+
/**
|
|
162
|
+
* Call AI (Gemini or fallback)
|
|
163
|
+
*/
|
|
164
|
+
private callAI;
|
|
165
|
+
/**
|
|
166
|
+
* Process agent response and create/update documents
|
|
167
|
+
*/
|
|
168
|
+
private processAgentResponse;
|
|
169
|
+
/**
|
|
170
|
+
* Add frontmatter to document if not present
|
|
171
|
+
*/
|
|
172
|
+
private addFrontmatter;
|
|
173
|
+
/**
|
|
174
|
+
* Infer document type from path
|
|
175
|
+
*/
|
|
176
|
+
private inferDocType;
|
|
177
|
+
/**
|
|
178
|
+
* Update MOC files with new connections
|
|
179
|
+
*/
|
|
180
|
+
private updateMOCFiles;
|
|
181
|
+
/**
|
|
182
|
+
* Find relevant docs based on query
|
|
183
|
+
*/
|
|
184
|
+
private findRelevantDocs;
|
|
185
|
+
/**
|
|
186
|
+
* Infer priority from description
|
|
187
|
+
*/
|
|
188
|
+
private inferPriority;
|
|
189
|
+
/**
|
|
190
|
+
* Log message
|
|
191
|
+
*/
|
|
192
|
+
private log;
|
|
193
|
+
}
|
|
194
|
+
export type { MigrationResult, OrchestratorOptions, ParsedAnalysis };
|
|
195
|
+
//# sourceMappingURL=migration-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-orchestrator.d.ts","sourceRoot":"","sources":["../../src/cultivation/migration-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;GAEG;AACH,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAaD;;GAEG;AACH,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAmC;gBAE3C,OAAO,EAAE,mBAAmB;IAmBxC;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB9E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IA6FzC;;OAEG;YACW,kBAAkB;IAwChC;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmDrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;YACW,eAAe;IA6B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuF7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;OAEG;YACW,YAAY;IA4B1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;YACW,MAAM;IAiCpB;;OAEG;YACW,oBAAoB;IA+FlC;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;YACW,cAAc;IAM5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,GAAG;CAQZ;AAED,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAC"}
|