@eldrforge/kodrdriv 1.2.26 → 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/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/constants.js +1 -1
- package/dist/execution/TreeExecutionAdapter.js +46 -29
- package/dist/execution/TreeExecutionAdapter.js.map +1 -1
- package/package.json +1 -1
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os__default from 'os';
|
|
2
2
|
import path__default from 'path';
|
|
3
3
|
|
|
4
|
-
const VERSION = '1.2.
|
|
4
|
+
const VERSION = '1.2.27 (HEAD/50ec7d7 T:v1.2.27 2025-12-12 00:06:55 -0800) linux x64 v22.21.1';
|
|
5
5
|
const PROGRAM_NAME = 'kodrdriv';
|
|
6
6
|
const DEFAULT_OVERRIDES = false;
|
|
7
7
|
const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';
|
|
@@ -145,53 +145,70 @@ function _define_property(obj, key, value) {
|
|
|
145
145
|
/**
|
|
146
146
|
* Format parallel execution result for display
|
|
147
147
|
*/ function formatParallelResult(result) {
|
|
148
|
+
var _result_metrics, _result_metrics1;
|
|
148
149
|
const lines = [];
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
lines.push(`\n✨ All ${result.totalPackages} packages completed successfully! 🎉\n`);
|
|
155
|
-
}
|
|
156
|
-
} else if (result.success && result.skipped.length > 0) {
|
|
157
|
-
lines.push(`\n⚠️ Execution completed with ${result.skipped.length} package(s) skipped due to failed dependencies\n`);
|
|
158
|
-
} else {
|
|
159
|
-
lines.push(`\n⚠️ Execution completed with ${result.failed.length} failure(s)\n`);
|
|
160
|
-
}
|
|
161
|
-
// Detailed status breakdown
|
|
162
|
-
lines.push('📊 Execution Summary:\n');
|
|
150
|
+
// Separator line
|
|
151
|
+
lines.push('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
152
|
+
lines.push('📊 Publish Summary');
|
|
153
|
+
lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
154
|
+
// Detailed status breakdown by category
|
|
163
155
|
if (result.completed.length > 0) {
|
|
164
|
-
lines.push(`✅ Published
|
|
165
|
-
|
|
166
|
-
lines.push(` ${
|
|
156
|
+
lines.push(`✅ Published (${result.completed.length}):`);
|
|
157
|
+
for (const pkg of result.completed){
|
|
158
|
+
lines.push(` - ${pkg}`);
|
|
167
159
|
}
|
|
168
160
|
lines.push('');
|
|
169
161
|
}
|
|
170
162
|
if (result.skippedNoChanges.length > 0) {
|
|
171
|
-
lines.push(
|
|
172
|
-
|
|
173
|
-
lines.push(` ${
|
|
163
|
+
lines.push(`⏭️ Skipped (${result.skippedNoChanges.length}) - no code changes:`);
|
|
164
|
+
for (const pkg of result.skippedNoChanges){
|
|
165
|
+
lines.push(` - ${pkg}`);
|
|
174
166
|
}
|
|
175
167
|
lines.push('');
|
|
176
168
|
}
|
|
177
|
-
if (result.
|
|
178
|
-
lines.push(
|
|
179
|
-
|
|
180
|
-
lines.push(` ${
|
|
169
|
+
if (result.failed.length > 0) {
|
|
170
|
+
lines.push(`❌ Failed (${result.failed.length}):`);
|
|
171
|
+
for (const pkg of result.failed){
|
|
172
|
+
lines.push(` - ${pkg}`);
|
|
181
173
|
}
|
|
182
174
|
lines.push('');
|
|
183
175
|
}
|
|
184
|
-
if (result.
|
|
185
|
-
lines.push(
|
|
176
|
+
if (result.skipped.length > 0) {
|
|
177
|
+
lines.push(`⊘ Skipped due to dependencies (${result.skipped.length}):`);
|
|
178
|
+
for (const pkg of result.skipped){
|
|
179
|
+
lines.push(` - ${pkg}`);
|
|
180
|
+
}
|
|
186
181
|
lines.push('');
|
|
187
182
|
}
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
183
|
+
// Summary line
|
|
184
|
+
lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
185
|
+
// Calculate success rate
|
|
186
|
+
const totalProcessed = result.completed.length + result.failed.length + result.skippedNoChanges.length;
|
|
187
|
+
const successRate = totalProcessed > 0 ? Math.round(result.completed.length / totalProcessed * 100) : 0;
|
|
188
|
+
// Format elapsed time
|
|
189
|
+
const totalTimeMs = ((_result_metrics = result.metrics) === null || _result_metrics === void 0 ? void 0 : _result_metrics.totalTime) || 0;
|
|
190
|
+
const minutes = Math.floor(totalTimeMs / 60000);
|
|
191
|
+
const seconds = Math.floor(totalTimeMs % 60000 / 1000);
|
|
192
|
+
const timeStr = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
|
|
193
|
+
lines.push(`Total time: ${timeStr}`);
|
|
194
|
+
lines.push(`Success rate: ${successRate}% (${result.completed.length}/${totalProcessed} packages processed)`);
|
|
195
|
+
if ((_result_metrics1 = result.metrics) === null || _result_metrics1 === void 0 ? void 0 : _result_metrics1.peakConcurrency) {
|
|
196
|
+
lines.push(`Peak concurrency: ${result.metrics.peakConcurrency} packages`);
|
|
197
|
+
}
|
|
198
|
+
lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
191
199
|
// Failed packages with formatted error summary
|
|
192
200
|
if (result.failed.length > 0) {
|
|
201
|
+
lines.push('');
|
|
193
202
|
const errorLines = ProgressFormatter.createErrorSummary(result.failed);
|
|
194
203
|
lines.push(...errorLines);
|
|
204
|
+
// Next steps for failures
|
|
205
|
+
lines.push('\n📋 Next steps:');
|
|
206
|
+
lines.push('1. Review the errors above for each failed package');
|
|
207
|
+
lines.push('2. Fix the issues in the failed packages');
|
|
208
|
+
lines.push('3. Retry the publish command');
|
|
209
|
+
if (result.skipped.length > 0) {
|
|
210
|
+
lines.push('\nNote: Once failed packages are fixed, their dependent packages will also be published.');
|
|
211
|
+
}
|
|
195
212
|
// Recovery guidance
|
|
196
213
|
const hasRetriable = result.failed.some((f)=>f.isRetriable);
|
|
197
214
|
const hasPermanent = result.failed.some((f)=>!f.isRetriable);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeExecutionAdapter.js","sources":["../../src/execution/TreeExecutionAdapter.ts"],"sourcesContent":["import { DynamicTaskPool, PoolConfig } from './DynamicTaskPool';\nimport { PackageInfo } from '../util/dependencyGraph';\nimport { Config } from '../types';\nimport { PackageResult } from '../types/parallelExecution';\nimport { getLogger } from '../logging';\n\n/**\n * ExecutePackageFunction type matches the signature of tree.ts executePackage\n */\nexport type ExecutePackageFunction = (\n packageName: string,\n packageInfo: PackageInfo,\n commandToRun: string,\n runConfig: Config,\n isDryRun: boolean,\n index: number,\n total: number,\n allPackageNames: Set<string>,\n isBuiltInCommand?: boolean\n) => Promise<{ success: boolean; error?: any; isTimeoutError?: boolean }>;\n\n/**\n * TreeExecutionAdapter bridges DynamicTaskPool with tree.ts executePackage\n */\nexport class TreeExecutionAdapter {\n private pool: DynamicTaskPool;\n private executePackageFn: ExecutePackageFunction;\n private config: PoolConfig;\n private startedCount: number = 0;\n private completedCount: number = 0;\n\n constructor(config: PoolConfig, executePackageFn: ExecutePackageFunction) {\n this.config = config;\n this.executePackageFn = executePackageFn;\n\n // Create custom pool that uses our execute function\n this.pool = new DynamicTaskPool(config);\n\n // Track completion count for progress display\n this.pool.on('package:completed', () => {\n this.completedCount++;\n });\n\n // Override the executePackage method to use tree.ts function\n (this.pool as any).executePackage = this.createExecutePackageWrapper();\n }\n\n /**\n * Create wrapper that adapts tree.ts executePackage to DynamicTaskPool format\n */\n private createExecutePackageWrapper() {\n return async (packageName: string, _signal: AbortSignal): Promise<PackageResult> => {\n const packageInfo = this.config.graph.packages.get(packageName);\n if (!packageInfo) {\n throw new Error(`Package not found: ${packageName}`);\n }\n\n const allPackageNames = new Set(this.config.graph.packages.keys());\n const isDryRun = this.config.config.dryRun || false;\n const isBuiltInCommand = !this.config.command.startsWith('npm') &&\n !this.config.command.includes('&&');\n\n // Increment started count and use it as index for progress display\n const currentIndex = this.startedCount++;\n\n // Call tree.ts executePackage\n const startTime = Date.now();\n const result = await this.executePackageFn(\n packageName,\n packageInfo,\n this.config.command,\n this.config.config,\n isDryRun,\n currentIndex, // Use incremented started count for proper [N/Total] display\n this.config.graph.packages.size,\n allPackageNames,\n isBuiltInCommand\n );\n\n const duration = Date.now() - startTime;\n\n if (!result.success) {\n throw result.error || new Error('Package execution failed');\n }\n\n // Check if this was a \"no changes\" skip (result will have skippedNoChanges flag)\n const skippedNoChanges = (result as any).skippedNoChanges || false;\n\n return {\n success: true,\n duration,\n // Extract published version if available (from output or state)\n publishedVersion: undefined,\n stdout: undefined,\n stderr: undefined,\n skippedNoChanges\n };\n };\n }\n\n /**\n * Execute parallel execution\n */\n async execute() {\n return await this.pool.execute();\n }\n\n /**\n * Get the underlying task pool for event listeners\n */\n getPool(): DynamicTaskPool {\n return this.pool;\n }\n}\n\n/**\n * Create progress logger that listens to pool events\n */\nexport function createParallelProgressLogger(pool: DynamicTaskPool, config: Config): void {\n const logger = getLogger();\n const startTime = Date.now();\n let completedCount = 0;\n let totalPackages = 0;\n\n pool.on('execution:started', ({ totalPackages: total }) => {\n totalPackages = total;\n logger.info(`\\n📦 Executing ${total} packages in parallel\\n`);\n });\n\n pool.on('package:started', ({ packageName }) => {\n if (config.verbose || config.debug) {\n logger.info(`▶️ Started: ${packageName}`);\n }\n });\n\n pool.on('package:completed', ({ packageName, result }) => {\n completedCount++;\n const percent = Math.round((completedCount / totalPackages) * 100);\n const elapsed = Math.round((Date.now() - startTime) / 1000);\n\n if (config.debug) {\n logger.info(`✅ Completed: ${packageName} (${result.duration}ms) [${completedCount}/${totalPackages} - ${percent}% - ${elapsed}s elapsed]`);\n } else if (config.verbose) {\n logger.info(`✅ Completed: ${packageName} [${completedCount}/${totalPackages}]`);\n } else {\n // Minimal output\n logger.info(`[${completedCount}/${totalPackages}] ✅ ${packageName}`);\n }\n });\n\n pool.on('package:failed', ({ packageName, error }) => {\n logger.error(`❌ Failed: ${packageName} - ${error.message}`);\n });\n\n pool.on('package:retrying', ({ packageName, attemptNumber }) => {\n logger.warn(`🔄 Retrying: ${packageName} (attempt ${attemptNumber})`);\n });\n\n pool.on('package:skipped', ({ packageName, reason }) => {\n logger.warn(`⊘ Skipped: ${packageName} (${reason})`);\n });\n\n pool.on('package:skipped-no-changes', ({ packageName }) => {\n if (config.verbose || config.debug) {\n logger.info(`⊘ Skipped: ${packageName} (no code changes)`);\n }\n });\n\n pool.on('checkpoint:saved', () => {\n if (config.debug) {\n logger.debug('💾 Checkpoint saved');\n }\n });\n\n pool.on('execution:completed', ({ result }) => {\n const totalTime = Math.round((Date.now() - startTime) / 1000);\n logger.info(`\\n✨ Parallel execution completed in ${totalTime}s`);\n\n if (config.verbose || config.debug) {\n logger.info(`\\nMetrics:`);\n logger.info(` Total packages: ${result.totalPackages}`);\n logger.info(` Completed: ${result.completed.length}`);\n logger.info(` Skipped (no changes): ${result.skippedNoChanges.length}`);\n logger.info(` Skipped (dependency failed): ${result.skipped.length}`);\n logger.info(` Failed: ${result.failed.length}`);\n logger.info(` Peak concurrency: ${result.metrics.peakConcurrency}`);\n logger.info(` Average concurrency: ${result.metrics.averageConcurrency.toFixed(1)}`);\n }\n });\n}\n\nimport { ProgressFormatter } from '../ui/ProgressFormatter';\n\n/**\n * Format parallel execution result for display\n */\nexport function formatParallelResult(result: any): string {\n const lines: string[] = [];\n\n // Summary header\n if (result.success && result.skipped.length === 0) {\n if (result.skippedNoChanges.length > 0) {\n lines.push(`\\n✨ Execution completed: ${result.completed.length} published, ${result.skippedNoChanges.length} skipped (no changes)\\n`);\n } else {\n lines.push(`\\n✨ All ${result.totalPackages} packages completed successfully! 🎉\\n`);\n }\n } else if (result.success && result.skipped.length > 0) {\n lines.push(`\\n⚠️ Execution completed with ${result.skipped.length} package(s) skipped due to failed dependencies\\n`);\n } else {\n lines.push(`\\n⚠️ Execution completed with ${result.failed.length} failure(s)\\n`);\n }\n\n // Detailed status breakdown\n lines.push('📊 Execution Summary:\\n');\n\n if (result.completed.length > 0) {\n lines.push(`✅ Published: ${result.completed.length} package(s)`);\n if (result.completed.length <= 10) {\n lines.push(` ${result.completed.join(', ')}`);\n }\n lines.push('');\n }\n\n if (result.skippedNoChanges.length > 0) {\n lines.push(`⊘ Skipped (no code changes): ${result.skippedNoChanges.length} package(s)`);\n if (result.skippedNoChanges.length <= 10) {\n lines.push(` ${result.skippedNoChanges.join(', ')}`);\n }\n lines.push('');\n }\n\n if (result.skipped.length > 0) {\n lines.push(`⊘ Skipped (dependency failed): ${result.skipped.length} package(s)`);\n if (result.skipped.length <= 10) {\n lines.push(` ${result.skipped.join(', ')}`);\n }\n lines.push('');\n }\n\n if (result.failed.length > 0) {\n lines.push(`❌ Failed: ${result.failed.length} package(s)`);\n lines.push('');\n }\n\n // Use ProgressFormatter for metrics\n const metricsLines = ProgressFormatter.createMetricsTable(result.metrics);\n lines.push(...metricsLines);\n\n // Failed packages with formatted error summary\n if (result.failed.length > 0) {\n const errorLines = ProgressFormatter.createErrorSummary(result.failed);\n lines.push(...errorLines);\n\n // Recovery guidance\n const hasRetriable = result.failed.some((f: any) => f.isRetriable);\n const hasPermanent = result.failed.some((f: any) => !f.isRetriable);\n const recoveryLines = ProgressFormatter.createRecoveryGuidance(hasRetriable, hasPermanent);\n lines.push(...recoveryLines);\n }\n\n return lines.join('\\n');\n}\n"],"names":["TreeExecutionAdapter","createExecutePackageWrapper","packageName","_signal","packageInfo","config","graph","packages","get","Error","allPackageNames","Set","keys","isDryRun","dryRun","isBuiltInCommand","command","startsWith","includes","currentIndex","startedCount","startTime","Date","now","result","executePackageFn","size","duration","success","error","skippedNoChanges","publishedVersion","undefined","stdout","stderr","execute","pool","getPool","completedCount","DynamicTaskPool","on","executePackage","createParallelProgressLogger","logger","getLogger","totalPackages","total","info","verbose","debug","percent","Math","round","elapsed","message","attemptNumber","warn","reason","totalTime","completed","length","skipped","failed","metrics","peakConcurrency","averageConcurrency","toFixed","formatParallelResult","lines","push","join","metricsLines","ProgressFormatter","createMetricsTable","errorLines","createErrorSummary","hasRetriable","some","f","isRetriable","hasPermanent","recoveryLines","createRecoveryGuidance"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeExecutionAdapter.js","sources":["../../src/execution/TreeExecutionAdapter.ts"],"sourcesContent":["import { DynamicTaskPool, PoolConfig } from './DynamicTaskPool';\nimport { PackageInfo } from '../util/dependencyGraph';\nimport { Config } from '../types';\nimport { PackageResult } from '../types/parallelExecution';\nimport { getLogger } from '../logging';\n\n/**\n * ExecutePackageFunction type matches the signature of tree.ts executePackage\n */\nexport type ExecutePackageFunction = (\n packageName: string,\n packageInfo: PackageInfo,\n commandToRun: string,\n runConfig: Config,\n isDryRun: boolean,\n index: number,\n total: number,\n allPackageNames: Set<string>,\n isBuiltInCommand?: boolean\n) => Promise<{ success: boolean; error?: any; isTimeoutError?: boolean }>;\n\n/**\n * TreeExecutionAdapter bridges DynamicTaskPool with tree.ts executePackage\n */\nexport class TreeExecutionAdapter {\n private pool: DynamicTaskPool;\n private executePackageFn: ExecutePackageFunction;\n private config: PoolConfig;\n private startedCount: number = 0;\n private completedCount: number = 0;\n\n constructor(config: PoolConfig, executePackageFn: ExecutePackageFunction) {\n this.config = config;\n this.executePackageFn = executePackageFn;\n\n // Create custom pool that uses our execute function\n this.pool = new DynamicTaskPool(config);\n\n // Track completion count for progress display\n this.pool.on('package:completed', () => {\n this.completedCount++;\n });\n\n // Override the executePackage method to use tree.ts function\n (this.pool as any).executePackage = this.createExecutePackageWrapper();\n }\n\n /**\n * Create wrapper that adapts tree.ts executePackage to DynamicTaskPool format\n */\n private createExecutePackageWrapper() {\n return async (packageName: string, _signal: AbortSignal): Promise<PackageResult> => {\n const packageInfo = this.config.graph.packages.get(packageName);\n if (!packageInfo) {\n throw new Error(`Package not found: ${packageName}`);\n }\n\n const allPackageNames = new Set(this.config.graph.packages.keys());\n const isDryRun = this.config.config.dryRun || false;\n const isBuiltInCommand = !this.config.command.startsWith('npm') &&\n !this.config.command.includes('&&');\n\n // Increment started count and use it as index for progress display\n const currentIndex = this.startedCount++;\n\n // Call tree.ts executePackage\n const startTime = Date.now();\n const result = await this.executePackageFn(\n packageName,\n packageInfo,\n this.config.command,\n this.config.config,\n isDryRun,\n currentIndex, // Use incremented started count for proper [N/Total] display\n this.config.graph.packages.size,\n allPackageNames,\n isBuiltInCommand\n );\n\n const duration = Date.now() - startTime;\n\n if (!result.success) {\n throw result.error || new Error('Package execution failed');\n }\n\n // Check if this was a \"no changes\" skip (result will have skippedNoChanges flag)\n const skippedNoChanges = (result as any).skippedNoChanges || false;\n\n return {\n success: true,\n duration,\n // Extract published version if available (from output or state)\n publishedVersion: undefined,\n stdout: undefined,\n stderr: undefined,\n skippedNoChanges\n };\n };\n }\n\n /**\n * Execute parallel execution\n */\n async execute() {\n return await this.pool.execute();\n }\n\n /**\n * Get the underlying task pool for event listeners\n */\n getPool(): DynamicTaskPool {\n return this.pool;\n }\n}\n\n/**\n * Create progress logger that listens to pool events\n */\nexport function createParallelProgressLogger(pool: DynamicTaskPool, config: Config): void {\n const logger = getLogger();\n const startTime = Date.now();\n let completedCount = 0;\n let totalPackages = 0;\n\n pool.on('execution:started', ({ totalPackages: total }) => {\n totalPackages = total;\n logger.info(`\\n📦 Executing ${total} packages in parallel\\n`);\n });\n\n pool.on('package:started', ({ packageName }) => {\n if (config.verbose || config.debug) {\n logger.info(`▶️ Started: ${packageName}`);\n }\n });\n\n pool.on('package:completed', ({ packageName, result }) => {\n completedCount++;\n const percent = Math.round((completedCount / totalPackages) * 100);\n const elapsed = Math.round((Date.now() - startTime) / 1000);\n\n if (config.debug) {\n logger.info(`✅ Completed: ${packageName} (${result.duration}ms) [${completedCount}/${totalPackages} - ${percent}% - ${elapsed}s elapsed]`);\n } else if (config.verbose) {\n logger.info(`✅ Completed: ${packageName} [${completedCount}/${totalPackages}]`);\n } else {\n // Minimal output\n logger.info(`[${completedCount}/${totalPackages}] ✅ ${packageName}`);\n }\n });\n\n pool.on('package:failed', ({ packageName, error }) => {\n logger.error(`❌ Failed: ${packageName} - ${error.message}`);\n });\n\n pool.on('package:retrying', ({ packageName, attemptNumber }) => {\n logger.warn(`🔄 Retrying: ${packageName} (attempt ${attemptNumber})`);\n });\n\n pool.on('package:skipped', ({ packageName, reason }) => {\n logger.warn(`⊘ Skipped: ${packageName} (${reason})`);\n });\n\n pool.on('package:skipped-no-changes', ({ packageName }) => {\n if (config.verbose || config.debug) {\n logger.info(`⊘ Skipped: ${packageName} (no code changes)`);\n }\n });\n\n pool.on('checkpoint:saved', () => {\n if (config.debug) {\n logger.debug('💾 Checkpoint saved');\n }\n });\n\n pool.on('execution:completed', ({ result }) => {\n const totalTime = Math.round((Date.now() - startTime) / 1000);\n logger.info(`\\n✨ Parallel execution completed in ${totalTime}s`);\n\n if (config.verbose || config.debug) {\n logger.info(`\\nMetrics:`);\n logger.info(` Total packages: ${result.totalPackages}`);\n logger.info(` Completed: ${result.completed.length}`);\n logger.info(` Skipped (no changes): ${result.skippedNoChanges.length}`);\n logger.info(` Skipped (dependency failed): ${result.skipped.length}`);\n logger.info(` Failed: ${result.failed.length}`);\n logger.info(` Peak concurrency: ${result.metrics.peakConcurrency}`);\n logger.info(` Average concurrency: ${result.metrics.averageConcurrency.toFixed(1)}`);\n }\n });\n}\n\nimport { ProgressFormatter } from '../ui/ProgressFormatter';\n\n/**\n * Format parallel execution result for display\n */\nexport function formatParallelResult(result: any): string {\n const lines: string[] = [];\n\n // Separator line\n lines.push('\\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📊 Publish Summary');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n');\n\n // Detailed status breakdown by category\n if (result.completed.length > 0) {\n lines.push(`✅ Published (${result.completed.length}):`);\n for (const pkg of result.completed) {\n lines.push(` - ${pkg}`);\n }\n lines.push('');\n }\n\n if (result.skippedNoChanges.length > 0) {\n lines.push(`⏭️ Skipped (${result.skippedNoChanges.length}) - no code changes:`);\n for (const pkg of result.skippedNoChanges) {\n lines.push(` - ${pkg}`);\n }\n lines.push('');\n }\n\n if (result.failed.length > 0) {\n lines.push(`❌ Failed (${result.failed.length}):`);\n for (const pkg of result.failed) {\n lines.push(` - ${pkg}`);\n }\n lines.push('');\n }\n\n if (result.skipped.length > 0) {\n lines.push(`⊘ Skipped due to dependencies (${result.skipped.length}):`);\n for (const pkg of result.skipped) {\n lines.push(` - ${pkg}`);\n }\n lines.push('');\n }\n\n // Summary line\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n');\n\n // Calculate success rate\n const totalProcessed = result.completed.length + result.failed.length + result.skippedNoChanges.length;\n const successRate = totalProcessed > 0 ? Math.round((result.completed.length / totalProcessed) * 100) : 0;\n\n // Format elapsed time\n const totalTimeMs = result.metrics?.totalTime || 0;\n const minutes = Math.floor(totalTimeMs / 60000);\n const seconds = Math.floor((totalTimeMs % 60000) / 1000);\n const timeStr = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;\n\n lines.push(`Total time: ${timeStr}`);\n lines.push(`Success rate: ${successRate}% (${result.completed.length}/${totalProcessed} packages processed)`);\n\n if (result.metrics?.peakConcurrency) {\n lines.push(`Peak concurrency: ${result.metrics.peakConcurrency} packages`);\n }\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n\n // Failed packages with formatted error summary\n if (result.failed.length > 0) {\n lines.push('');\n const errorLines = ProgressFormatter.createErrorSummary(result.failed);\n lines.push(...errorLines);\n\n // Next steps for failures\n lines.push('\\n📋 Next steps:');\n lines.push('1. Review the errors above for each failed package');\n lines.push('2. Fix the issues in the failed packages');\n lines.push('3. Retry the publish command');\n\n if (result.skipped.length > 0) {\n lines.push('\\nNote: Once failed packages are fixed, their dependent packages will also be published.');\n }\n\n // Recovery guidance\n const hasRetriable = result.failed.some((f: any) => f.isRetriable);\n const hasPermanent = result.failed.some((f: any) => !f.isRetriable);\n const recoveryLines = ProgressFormatter.createRecoveryGuidance(hasRetriable, hasPermanent);\n lines.push(...recoveryLines);\n }\n\n return lines.join('\\n');\n}\n"],"names":["TreeExecutionAdapter","createExecutePackageWrapper","packageName","_signal","packageInfo","config","graph","packages","get","Error","allPackageNames","Set","keys","isDryRun","dryRun","isBuiltInCommand","command","startsWith","includes","currentIndex","startedCount","startTime","Date","now","result","executePackageFn","size","duration","success","error","skippedNoChanges","publishedVersion","undefined","stdout","stderr","execute","pool","getPool","completedCount","DynamicTaskPool","on","executePackage","createParallelProgressLogger","logger","getLogger","totalPackages","total","info","verbose","debug","percent","Math","round","elapsed","message","attemptNumber","warn","reason","totalTime","completed","length","skipped","failed","metrics","peakConcurrency","averageConcurrency","toFixed","formatParallelResult","lines","push","pkg","totalProcessed","successRate","totalTimeMs","minutes","floor","seconds","timeStr","errorLines","ProgressFormatter","createErrorSummary","hasRetriable","some","f","isRetriable","hasPermanent","recoveryLines","createRecoveryGuidance","join"],"mappings":"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"}
|