@eldrforge/kodrdriv 1.2.25 → 1.2.27
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/MONOREPO-PUBLISH-IMPROVEMENTS.md +281 -0
- package/PARALLEL-PUBLISH-IMPROVEMENTS-IMPLEMENTED.md +439 -0
- package/PUBLISH_IMPROVEMENTS_IMPLEMENTED.md +295 -0
- package/dist/commands/development.js +3 -1
- package/dist/commands/development.js.map +1 -1
- package/dist/commands/publish.js +34 -12
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/tree.js +151 -45
- package/dist/commands/tree.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/execution/DynamicTaskPool.js +112 -16
- package/dist/execution/DynamicTaskPool.js.map +1 -1
- package/dist/execution/RecoveryManager.js +6 -2
- package/dist/execution/RecoveryManager.js.map +1 -1
- package/dist/execution/TreeExecutionAdapter.js +69 -17
- package/dist/execution/TreeExecutionAdapter.js.map +1 -1
- package/dist/ui/ProgressFormatter.js +22 -2
- package/dist/ui/ProgressFormatter.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressFormatter.js","sources":["../../src/ui/ProgressFormatter.ts"],"sourcesContent":["import { ExecutionResult, ExecutionMetrics } from '../types/parallelExecution';\n\n/**\n * ProgressFormatter creates beautiful formatted output for parallel execution\n */\nexport class ProgressFormatter {\n /**\n * Create a visual progress bar\n */\n static createProgressBar(current: number, total: number, width: number = 30): string {\n const percent = total > 0 ? current / total : 0;\n const filled = Math.round(width * percent);\n const empty = width - filled;\n\n return '█'.repeat(filled) + '░'.repeat(empty);\n }\n\n /**\n * Format duration in human-readable format\n */\n static formatDuration(ms: number): string {\n if (ms < 1000) {\n return `${ms}ms`;\n }\n\n const seconds = Math.floor(ms / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m ${seconds % 60}s`;\n }\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n return `${seconds}s`;\n }\n\n /**\n * Format bytes in human-readable format\n */\n static formatBytes(bytes: number): string {\n const units = ['B', 'KB', 'MB', 'GB'];\n let value = bytes;\n let unitIndex = 0;\n\n while (value >= 1024 && unitIndex < units.length - 1) {\n value /= 1024;\n unitIndex++;\n }\n\n return `${value.toFixed(2)} ${units[unitIndex]}`;\n }\n\n /**\n * Format percentage\n */\n static formatPercent(value: number, decimals: number = 1): string {\n return `${value.toFixed(decimals)}%`;\n }\n\n /**\n * Create execution summary table\n */\n static createSummaryTable(result: ExecutionResult): string[] {\n const lines: string[] = [];\n\n lines.push('');\n lines.push('═══════════════════════════════════════════════');\n lines.push(' Parallel Execution Summary');\n lines.push('═══════════════════════════════════════════════');\n lines.push('');\n\n // Status\n const status = result.success ? '✅ SUCCESS' : '⚠️ PARTIAL SUCCESS';\n lines.push(`Status: ${status}`);\n lines.push('');\n\n // Package summary\n lines.push('📦 Package Summary:');\n lines.push(` Completed: ${result.completed.length}/${result.totalPackages}`);\n if (result.failed.length > 0) {\n lines.push(` Failed: ${result.failed.length}`);\n }\n if (result.skipped.length > 0) {\n lines.push(` Skipped: ${result.skipped.length}`);\n }\n lines.push('');\n\n // Performance metrics\n lines.push(...this.createMetricsTable(result.metrics));\n\n // Failed packages details\n if (result.failed.length > 0) {\n lines.push('');\n lines.push('❌ Failed Packages:');\n for (const failure of result.failed) {\n lines.push(` • ${failure.name}`);\n lines.push(` Error: ${failure.error}`);\n if (failure.dependents.length > 0) {\n lines.push(` Blocked: ${failure.dependents.length} dependent(s)`);\n }\n }\n }\n\n lines.push('');\n lines.push('═══════════════════════════════════════════════');\n lines.push('');\n\n return lines;\n }\n\n /**\n * Create metrics table\n */\n static createMetricsTable(metrics: ExecutionMetrics): string[] {\n const lines: string[] = [];\n\n lines.push('⚡ Performance Metrics:');\n lines.push(` Total Time: ${this.formatDuration(metrics.totalDuration)}`);\n lines.push(` Avg Per Package: ${this.formatDuration(metrics.averagePackageDuration)}`);\n lines.push(` Peak Concurrency: ${metrics.peakConcurrency}`);\n lines.push(` Average Concurrency: ${metrics.averageConcurrency.toFixed(1)}`);\n\n if (metrics.speedupVsSequential) {\n lines.push(` Speedup: ${metrics.speedupVsSequential.toFixed(2)}x 🚀`);\n }\n\n return lines;\n }\n\n /**\n * Create compact progress indicator\n */\n static createCompactProgress(completed: number, total: number, running: number): string {\n const percent = total > 0 ? Math.round((completed / total) * 100) : 0;\n const bar = this.createProgressBar(completed, total, 20);\n\n return `[${bar}] ${percent}% (${completed}/${total}) ${running > 0 ? `| Running: ${running}` : ''}`;\n }\n\n /**\n * Create execution timeline visualization\n */\n static createTimeline(\n packageTimes: Map<string, { start: number; end: number }>,\n maxConcurrency: number\n ): string[] {\n const lines: string[] = [];\n\n lines.push('');\n lines.push('📊 Execution Timeline:');\n lines.push('');\n\n // Find time bounds\n let minTime = Infinity;\n let maxTime = 0;\n\n for (const [, times] of packageTimes) {\n minTime = Math.min(minTime, times.start);\n maxTime = Math.max(maxTime, times.end);\n }\n\n const totalDuration = maxTime - minTime;\n const timelineWidth = 50;\n\n // Sort by start time\n const sortedPackages = Array.from(packageTimes.entries())\n .sort(([, a], [, b]) => a.start - b.start);\n\n for (const [pkg, times] of sortedPackages) {\n const start = times.start - minTime;\n const duration = times.end - times.start;\n\n const startPos = Math.floor((start / totalDuration) * timelineWidth);\n const barLength = Math.max(1, Math.floor((duration / totalDuration) * timelineWidth));\n\n const timeline = ' '.repeat(startPos) + '█'.repeat(barLength);\n const durationStr = this.formatDuration(duration);\n\n lines.push(` ${pkg.padEnd(20)} │${timeline.padEnd(timelineWidth)}│ ${durationStr}`);\n }\n\n lines.push('');\n lines.push(` Total: ${this.formatDuration(totalDuration)} with max concurrency ${maxConcurrency}`);\n lines.push('');\n\n return lines;\n }\n\n /**\n * Create box around text\n */\n static createBox(title: string, content: string[], width: number = 60): string[] {\n const lines: string[] = [];\n\n const topBorder = '╔' + '═'.repeat(width - 2) + '╗';\n const bottomBorder = '╚' + '═'.repeat(width - 2) + '╝';\n const titleLine = '║ ' + title.padEnd(width - 4) + ' ║';\n\n lines.push(topBorder);\n lines.push(titleLine);\n lines.push('╠' + '═'.repeat(width - 2) + '╣');\n\n for (const line of content) {\n const paddedLine = '║ ' + line.padEnd(width - 4) + ' ║';\n lines.push(paddedLine);\n }\n\n lines.push(bottomBorder);\n\n return lines;\n }\n\n /**\n * Format speedup comparison\n */\n static createSpeedupComparison(\n parallelTime: number,\n sequentialTime: number,\n concurrency: number\n ): string[] {\n const lines: string[] = [];\n\n const speedup = sequentialTime / parallelTime;\n const efficiency = (speedup / concurrency) * 100;\n const timeSaved = sequentialTime - parallelTime;\n\n lines.push('');\n lines.push('📈 Speedup Analysis:');\n lines.push(` Sequential Time: ${this.formatDuration(sequentialTime)}`);\n lines.push(` Parallel Time: ${this.formatDuration(parallelTime)}`);\n lines.push(` Speedup: ${speedup.toFixed(2)}x 🚀`);\n lines.push(` Efficiency: ${this.formatPercent(efficiency)}`);\n lines.push(` Time Saved: ${this.formatDuration(timeSaved)} ⏰`);\n lines.push('');\n\n return lines;\n }\n\n /**\n * Create error summary\n */\n static createErrorSummary(failures: Array<{ name: string; error: string; dependents: string[] }>): string[] {\n const lines: string[] = [];\n\n if (failures.length === 0) {\n return lines;\n }\n\n lines.push('');\n lines.push('❌ Failure Summary:');\n lines.push('');\n\n for (const failure of failures) {\n lines.push(` ${failure.name}:`);\n lines.push(` Error: ${failure.error}`);\n\n if (failure.dependents.length > 0) {\n const dependentStr = failure.dependents.slice(0, 3).join(', ');\n const more = failure.dependents.length > 3 ? ` +${failure.dependents.length - 3} more` : '';\n lines.push(` Blocked: ${dependentStr}${more}`);\n }\n }\n\n lines.push('');\n\n return lines;\n }\n\n /**\n * Create recovery guidance\n */\n static createRecoveryGuidance(hasRetriable: boolean, hasPermanent: boolean): string[] {\n const lines: string[] = [];\n\n lines.push('');\n lines.push('🔧 Recovery Options:');\n lines.push('');\n\n if (hasRetriable) {\n lines.push(' 1. Retry failed packages:');\n lines.push(' kodrdriv tree [command] --continue --retry-failed');\n lines.push('');\n }\n\n if (hasPermanent) {\n lines.push(' 2. Skip failed packages:');\n lines.push(' kodrdriv tree [command] --continue --skip-failed');\n lines.push('');\n }\n\n lines.push(' 3. Mark specific package as completed:');\n lines.push(' kodrdriv tree [command] --continue --mark-completed \"directory-name\"');\n lines.push('');\n\n lines.push(' 4. Check detailed status:');\n lines.push(' kodrdriv tree --status-parallel');\n lines.push('');\n\n return lines;\n }\n}\n"],"names":["ProgressFormatter","createProgressBar","current","total","width","percent","filled","Math","round","empty","repeat","formatDuration","ms","seconds","floor","minutes","hours","formatBytes","bytes","units","value","unitIndex","length","toFixed","formatPercent","decimals","createSummaryTable","result","lines","push","status","success","completed","totalPackages","failed","skipped","createMetricsTable","metrics","failure","name","error","dependents","totalDuration","averagePackageDuration","peakConcurrency","averageConcurrency","speedupVsSequential","createCompactProgress","running","bar","createTimeline","packageTimes","maxConcurrency","minTime","Infinity","maxTime","times","min","start","max","end","timelineWidth","sortedPackages","Array","from","entries","sort","a","b","pkg","duration","startPos","barLength","timeline","durationStr","padEnd","createBox","title","content","topBorder","bottomBorder","titleLine","line","paddedLine","createSpeedupComparison","parallelTime","sequentialTime","concurrency","speedup","efficiency","timeSaved","createErrorSummary","failures","dependentStr","slice","join","more","createRecoveryGuidance","hasRetriable","hasPermanent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProgressFormatter.js","sources":["../../src/ui/ProgressFormatter.ts"],"sourcesContent":["import { ExecutionResult, ExecutionMetrics } from '../types/parallelExecution';\n\n/**\n * ProgressFormatter creates beautiful formatted output for parallel execution\n */\nexport class ProgressFormatter {\n /**\n * Create a visual progress bar\n */\n static createProgressBar(current: number, total: number, width: number = 30): string {\n const percent = total > 0 ? current / total : 0;\n const filled = Math.round(width * percent);\n const empty = width - filled;\n\n return '█'.repeat(filled) + '░'.repeat(empty);\n }\n\n /**\n * Format duration in human-readable format\n */\n static formatDuration(ms: number): string {\n if (ms < 1000) {\n return `${ms}ms`;\n }\n\n const seconds = Math.floor(ms / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m ${seconds % 60}s`;\n }\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n return `${seconds}s`;\n }\n\n /**\n * Format bytes in human-readable format\n */\n static formatBytes(bytes: number): string {\n const units = ['B', 'KB', 'MB', 'GB'];\n let value = bytes;\n let unitIndex = 0;\n\n while (value >= 1024 && unitIndex < units.length - 1) {\n value /= 1024;\n unitIndex++;\n }\n\n return `${value.toFixed(2)} ${units[unitIndex]}`;\n }\n\n /**\n * Format percentage\n */\n static formatPercent(value: number, decimals: number = 1): string {\n return `${value.toFixed(decimals)}%`;\n }\n\n /**\n * Create execution summary table\n */\n static createSummaryTable(result: ExecutionResult): string[] {\n const lines: string[] = [];\n\n lines.push('');\n lines.push('═══════════════════════════════════════════════');\n lines.push(' Parallel Execution Summary');\n lines.push('═══════════════════════════════════════════════');\n lines.push('');\n\n // Status\n const status = result.success ? '✅ SUCCESS' : '⚠️ PARTIAL SUCCESS';\n lines.push(`Status: ${status}`);\n lines.push('');\n\n // Package summary\n lines.push('📦 Package Summary:');\n lines.push(` Completed: ${result.completed.length}/${result.totalPackages}`);\n if (result.failed.length > 0) {\n lines.push(` Failed: ${result.failed.length}`);\n }\n if (result.skipped.length > 0) {\n lines.push(` Skipped: ${result.skipped.length}`);\n }\n lines.push('');\n\n // Performance metrics\n lines.push(...this.createMetricsTable(result.metrics));\n\n // Failed packages details\n if (result.failed.length > 0) {\n lines.push('');\n lines.push('❌ Failed Packages:');\n for (const failure of result.failed) {\n lines.push(` • ${failure.name}`);\n lines.push(` Error: ${failure.error}`);\n if (failure.dependents.length > 0) {\n lines.push(` Blocked: ${failure.dependents.length} dependent(s)`);\n }\n }\n }\n\n lines.push('');\n lines.push('═══════════════════════════════════════════════');\n lines.push('');\n\n return lines;\n }\n\n /**\n * Create metrics table\n */\n static createMetricsTable(metrics: ExecutionMetrics): string[] {\n const lines: string[] = [];\n\n lines.push('⚡ Performance Metrics:');\n lines.push(` Total Time: ${this.formatDuration(metrics.totalDuration)}`);\n lines.push(` Avg Per Package: ${this.formatDuration(metrics.averagePackageDuration)}`);\n lines.push(` Peak Concurrency: ${metrics.peakConcurrency}`);\n lines.push(` Average Concurrency: ${metrics.averageConcurrency.toFixed(1)}`);\n\n if (metrics.speedupVsSequential) {\n lines.push(` Speedup: ${metrics.speedupVsSequential.toFixed(2)}x 🚀`);\n }\n\n return lines;\n }\n\n /**\n * Create compact progress indicator\n */\n static createCompactProgress(completed: number, total: number, running: number): string {\n const percent = total > 0 ? Math.round((completed / total) * 100) : 0;\n const bar = this.createProgressBar(completed, total, 20);\n\n return `[${bar}] ${percent}% (${completed}/${total}) ${running > 0 ? `| Running: ${running}` : ''}`;\n }\n\n /**\n * Create execution timeline visualization\n */\n static createTimeline(\n packageTimes: Map<string, { start: number; end: number }>,\n maxConcurrency: number\n ): string[] {\n const lines: string[] = [];\n\n lines.push('');\n lines.push('📊 Execution Timeline:');\n lines.push('');\n\n // Find time bounds\n let minTime = Infinity;\n let maxTime = 0;\n\n for (const [, times] of packageTimes) {\n minTime = Math.min(minTime, times.start);\n maxTime = Math.max(maxTime, times.end);\n }\n\n const totalDuration = maxTime - minTime;\n const timelineWidth = 50;\n\n // Sort by start time\n const sortedPackages = Array.from(packageTimes.entries())\n .sort(([, a], [, b]) => a.start - b.start);\n\n for (const [pkg, times] of sortedPackages) {\n const start = times.start - minTime;\n const duration = times.end - times.start;\n\n const startPos = Math.floor((start / totalDuration) * timelineWidth);\n const barLength = Math.max(1, Math.floor((duration / totalDuration) * timelineWidth));\n\n const timeline = ' '.repeat(startPos) + '█'.repeat(barLength);\n const durationStr = this.formatDuration(duration);\n\n lines.push(` ${pkg.padEnd(20)} │${timeline.padEnd(timelineWidth)}│ ${durationStr}`);\n }\n\n lines.push('');\n lines.push(` Total: ${this.formatDuration(totalDuration)} with max concurrency ${maxConcurrency}`);\n lines.push('');\n\n return lines;\n }\n\n /**\n * Create box around text\n */\n static createBox(title: string, content: string[], width: number = 60): string[] {\n const lines: string[] = [];\n\n const topBorder = '╔' + '═'.repeat(width - 2) + '╗';\n const bottomBorder = '╚' + '═'.repeat(width - 2) + '╝';\n const titleLine = '║ ' + title.padEnd(width - 4) + ' ║';\n\n lines.push(topBorder);\n lines.push(titleLine);\n lines.push('╠' + '═'.repeat(width - 2) + '╣');\n\n for (const line of content) {\n const paddedLine = '║ ' + line.padEnd(width - 4) + ' ║';\n lines.push(paddedLine);\n }\n\n lines.push(bottomBorder);\n\n return lines;\n }\n\n /**\n * Format speedup comparison\n */\n static createSpeedupComparison(\n parallelTime: number,\n sequentialTime: number,\n concurrency: number\n ): string[] {\n const lines: string[] = [];\n\n const speedup = sequentialTime / parallelTime;\n const efficiency = (speedup / concurrency) * 100;\n const timeSaved = sequentialTime - parallelTime;\n\n lines.push('');\n lines.push('📈 Speedup Analysis:');\n lines.push(` Sequential Time: ${this.formatDuration(sequentialTime)}`);\n lines.push(` Parallel Time: ${this.formatDuration(parallelTime)}`);\n lines.push(` Speedup: ${speedup.toFixed(2)}x 🚀`);\n lines.push(` Efficiency: ${this.formatPercent(efficiency)}`);\n lines.push(` Time Saved: ${this.formatDuration(timeSaved)} ⏰`);\n lines.push('');\n\n return lines;\n }\n\n /**\n * Create error summary\n */\n static createErrorSummary(failures: Array<{ name: string; error: string; dependents: string[]; errorDetails?: { type?: string; context?: string; logFile?: string; suggestion?: string } }>): string[] {\n const lines: string[] = [];\n\n if (failures.length === 0) {\n return lines;\n }\n\n lines.push('');\n lines.push('❌ Failure Summary:');\n lines.push('');\n\n for (const failure of failures) {\n lines.push(` ${failure.name}:`);\n\n // Show error type if available\n if (failure.errorDetails?.type) {\n const typeLabel = failure.errorDetails.type.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n lines.push(` Type: ${typeLabel}`);\n }\n\n // Show context if available, otherwise show generic error\n if (failure.errorDetails?.context) {\n lines.push(` Details: ${failure.errorDetails.context}`);\n } else {\n lines.push(` Error: ${failure.error}`);\n }\n\n // Show log file location\n if (failure.errorDetails?.logFile) {\n lines.push(` Log: ${failure.errorDetails.logFile}`);\n }\n\n // Show suggestion\n if (failure.errorDetails?.suggestion) {\n lines.push(` 💡 Suggestion: ${failure.errorDetails.suggestion}`);\n }\n\n // Show blocked dependents\n if (failure.dependents.length > 0) {\n const dependentStr = failure.dependents.slice(0, 3).join(', ');\n const more = failure.dependents.length > 3 ? ` +${failure.dependents.length - 3} more` : '';\n lines.push(` Blocked: ${dependentStr}${more}`);\n }\n\n lines.push('');\n }\n\n return lines;\n }\n\n /**\n * Create recovery guidance\n */\n static createRecoveryGuidance(hasRetriable: boolean, hasPermanent: boolean): string[] {\n const lines: string[] = [];\n\n lines.push('');\n lines.push('🔧 Recovery Options:');\n lines.push('');\n\n if (hasRetriable) {\n lines.push(' 1. Retry failed packages:');\n lines.push(' kodrdriv tree [command] --continue --retry-failed');\n lines.push('');\n }\n\n if (hasPermanent) {\n lines.push(' 2. Skip failed packages:');\n lines.push(' kodrdriv tree [command] --continue --skip-failed');\n lines.push('');\n }\n\n lines.push(' 3. Mark specific package as completed:');\n lines.push(' kodrdriv tree [command] --continue --mark-completed \"directory-name\"');\n lines.push('');\n\n lines.push(' 4. Check detailed status:');\n lines.push(' kodrdriv tree --status-parallel');\n lines.push('');\n\n return lines;\n }\n}\n"],"names":["ProgressFormatter","createProgressBar","current","total","width","percent","filled","Math","round","empty","repeat","formatDuration","ms","seconds","floor","minutes","hours","formatBytes","bytes","units","value","unitIndex","length","toFixed","formatPercent","decimals","createSummaryTable","result","lines","push","status","success","completed","totalPackages","failed","skipped","createMetricsTable","metrics","failure","name","error","dependents","totalDuration","averagePackageDuration","peakConcurrency","averageConcurrency","speedupVsSequential","createCompactProgress","running","bar","createTimeline","packageTimes","maxConcurrency","minTime","Infinity","maxTime","times","min","start","max","end","timelineWidth","sortedPackages","Array","from","entries","sort","a","b","pkg","duration","startPos","barLength","timeline","durationStr","padEnd","createBox","title","content","topBorder","bottomBorder","titleLine","line","paddedLine","createSpeedupComparison","parallelTime","sequentialTime","concurrency","speedup","efficiency","timeSaved","createErrorSummary","failures","errorDetails","type","typeLabel","replace","l","toUpperCase","context","logFile","suggestion","dependentStr","slice","join","more","createRecoveryGuidance","hasRetriable","hasPermanent"],"mappings":"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"}
|