@eldrforge/commands-tree 0.1.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/LICENSE +190 -0
- package/README.md +59 -0
- package/dist/branchState-CtywDSJf.js +699 -0
- package/dist/branchState-CtywDSJf.js.map +1 -0
- package/dist/index-DqPh_i40.js +3883 -0
- package/dist/index-DqPh_i40.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4243 -0
- package/dist/index.js.map +1 -0
- package/dist/src/commands/link.d.ts +3 -0
- package/dist/src/commands/link.d.ts.map +1 -0
- package/dist/src/commands/tree.d.ts +12 -0
- package/dist/src/commands/tree.d.ts.map +1 -0
- package/dist/src/commands/unlink.d.ts +16 -0
- package/dist/src/commands/unlink.d.ts.map +1 -0
- package/dist/src/commands/updates.d.ts +6 -0
- package/dist/src/commands/updates.d.ts.map +1 -0
- package/dist/src/commands/versions.d.ts +6 -0
- package/dist/src/commands/versions.d.ts.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/util/npmOptimizations.d.ts +27 -0
- package/dist/src/util/npmOptimizations.d.ts.map +1 -0
- package/dist/src/util/performanceTracker.d.ts +45 -0
- package/dist/src/util/performanceTracker.d.ts.map +1 -0
- package/dist/src/utils/branchState.d.ts +91 -0
- package/dist/src/utils/branchState.d.ts.map +1 -0
- package/guide/index.md +37 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/commands/link.ts","../src/commands/unlink.ts","../src/commands/updates.ts","../src/commands/tree.ts","../src/commands/versions.ts","../src/util/npmOptimizations.ts","../src/util/performanceTracker.ts"],"sourcesContent":["import { getLogger, getDryRunLogger, Config } from '@eldrforge/core';\nimport { run, runSecure, safeJsonParse, validatePackageJson } from '@eldrforge/git-tools';\nimport { findAllPackageJsonFiles } from '@eldrforge/commands-git';\nimport { createStorage } from '@eldrforge/shared';\nimport fs from 'fs/promises';\nimport path from 'path';\n\n// Helper function to check if a path is a symbolic link\nconst isSymbolicLink = async (filePath: string): Promise<boolean> => {\n try {\n const stats = await fs.lstat(filePath);\n return stats.isSymbolicLink();\n } catch {\n return false;\n }\n};\n\n// Helper function to get the target of a symbolic link\nconst getSymbolicLinkTarget = async (filePath: string): Promise<string | null> => {\n try {\n const target = await fs.readlink(filePath);\n return target;\n } catch {\n return null;\n }\n};\n\n// Helper function to find all linked dependencies in a package\nconst findLinkedDependencies = async (\n packagePath: string,\n packageName: string,\n storage: any,\n logger: any\n): Promise<Array<{ dependencyName: string; targetPath: string; isExternal: boolean }>> => {\n const linkedDependencies: Array<{ dependencyName: string; targetPath: string; isExternal: boolean }> = [];\n\n try {\n const packageJsonPath = path.join(packagePath, 'package.json');\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n const allDependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies\n };\n\n const nodeModulesPath = path.join(packagePath, 'node_modules');\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const [dependencyName, version] of Object.entries(allDependencies)) {\n let dependencyPath: string;\n\n if (dependencyName.startsWith('@')) {\n // Scoped package\n const [scope, name] = dependencyName.split('/');\n dependencyPath = path.join(nodeModulesPath, scope, name);\n } else {\n // Unscoped package\n dependencyPath = path.join(nodeModulesPath, dependencyName);\n }\n\n if (await isSymbolicLink(dependencyPath)) {\n const target = await getSymbolicLinkTarget(dependencyPath);\n if (target) {\n // Determine if this is an external dependency (not in the same workspace)\n const isExternal = !target.includes('node_modules') || target.startsWith('..');\n linkedDependencies.push({\n dependencyName,\n targetPath: target,\n isExternal\n });\n }\n }\n }\n } catch (error: any) {\n logger.warn(`LINKED_DEPS_CHECK_FAILED: Unable to check linked dependencies | Package: ${packageName} | Error: ${error.message}`);\n }\n\n return linkedDependencies;\n};\n\n// Helper function to check if a dependency matches any external link patterns\nconst matchesExternalLinkPattern = (dependencyName: string, externalLinkPatterns: string[]): boolean => {\n if (!externalLinkPatterns || externalLinkPatterns.length === 0) {\n return false;\n }\n\n return externalLinkPatterns.some(pattern => {\n // Simple string matching - could be enhanced with glob patterns later\n return dependencyName === pattern || dependencyName.startsWith(pattern);\n });\n};\n\n// Helper function to create symbolic links manually\nconst createSymbolicLink = async (\n packageName: string,\n sourcePath: string,\n targetDir: string,\n logger: any,\n isDryRun: boolean = false\n): Promise<boolean> => {\n try {\n // Parse package name to get scope and name parts\n const [scope, name] = packageName.startsWith('@')\n ? packageName.split('/')\n : [null, packageName];\n\n // Create the target path structure\n const nodeModulesPath = path.join(targetDir, 'node_modules');\n let targetPath: string;\n\n if (scope) {\n // Scoped package: node_modules/@scope/name\n const scopeDir = path.join(nodeModulesPath, scope);\n targetPath = path.join(scopeDir, name);\n\n if (!isDryRun) {\n // Ensure scope directory exists\n await fs.mkdir(scopeDir, { recursive: true });\n }\n } else {\n // Unscoped package: node_modules/name\n targetPath = path.join(nodeModulesPath, name);\n\n if (!isDryRun) {\n // Ensure node_modules directory exists\n await fs.mkdir(nodeModulesPath, { recursive: true });\n }\n }\n\n if (isDryRun) {\n logger.verbose(`DRY RUN: Would create symlink: ${targetPath} -> ${sourcePath}`);\n return true;\n }\n\n // Create the symbolic link using relative path for better portability\n const relativePath = path.relative(path.dirname(targetPath), sourcePath);\n\n // Check if something already exists at the target path\n try {\n const stats = await fs.lstat(targetPath); // Use lstat to not follow symlinks\n\n if (stats.isSymbolicLink()) {\n // It's a symlink, check if it points to the correct target\n const existingLink = await fs.readlink(targetPath);\n if (existingLink === relativePath) {\n logger.verbose(`Symlink already exists and points to correct target: ${targetPath} -> ${relativePath}`);\n return true;\n } else {\n logger.info(`SYMLINK_FIXING: Correcting symlink target | Path: ${targetPath} | Old Target: ${existingLink} | New Target: ${relativePath}`);\n await fs.unlink(targetPath);\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`SYMLINK_FIXED: Successfully updated symlink | Path: ${targetPath} | Target: ${relativePath} | Type: directory`);\n return true;\n }\n } else if (stats.isDirectory()) {\n // It's a directory, remove it\n logger.warn(`SYMLINK_DIRECTORY_CONFLICT: Removing existing directory to create symlink | Path: ${targetPath} | Type: directory | Action: Remove and replace with symlink`);\n await fs.rm(targetPath, { recursive: true, force: true });\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`SYMLINK_CREATED: Successfully created symlink after directory removal | Path: ${targetPath} | Target: ${relativePath} | Type: directory`);\n return true;\n } else {\n // It's a file, remove it\n logger.warn(`SYMLINK_FILE_CONFLICT: Removing existing file to create symlink | Path: ${targetPath} | Type: file | Action: Remove and replace with symlink`);\n await fs.unlink(targetPath);\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`SYMLINK_CREATED: Successfully created symlink after file removal | Path: ${targetPath} | Target: ${relativePath} | Type: directory`);\n return true;\n }\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n // Nothing exists at target path, create the symlink\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.verbose(`Created symlink: ${targetPath} -> ${relativePath}`);\n return true;\n } else {\n throw error; // Re-throw unexpected errors\n }\n }\n } catch (error: any) {\n logger.warn(`SYMLINK_CREATE_FAILED: Unable to create symlink | Package: ${packageName} | Error: ${error.message} | Status: failed`);\n return false;\n }\n};\n\n// Helper function to parse package names and scopes\nconst parsePackageArgument = (packageArg: string): { scope: string; packageName?: string } => {\n if (packageArg.startsWith('@')) {\n const parts = packageArg.split('/');\n if (parts.length === 1) {\n // Just a scope like \"@fjell\"\n return { scope: parts[0] };\n } else {\n // Full package name like \"@fjell/core\"\n return { scope: parts[0], packageName: packageArg };\n }\n } else {\n throw new Error(`Package argument must start with @ (scope): ${packageArg}`);\n }\n};\n\n// Find packages in the workspace that match the given scope or package name\nconst findMatchingPackages = async (\n targetDirectories: string[],\n scope: string,\n storage: any,\n logger: any,\n packageName?: string\n): Promise<Array<{ name: string; path: string; isSource: boolean }>> => {\n const matchingPackages: Array<{ name: string; path: string; isSource: boolean }> = [];\n\n // Find all package.json files in target directories\n let allPackageJsonFiles: any[] = [];\n for (const targetDirectory of targetDirectories) {\n const packageJsonFiles = await findAllPackageJsonFiles(targetDirectory, storage);\n allPackageJsonFiles = allPackageJsonFiles.concat(packageJsonFiles);\n }\n\n for (const packageJsonLocation of allPackageJsonFiles) {\n const packageDir = packageJsonLocation.path.replace('/package.json', '');\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonLocation.path, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonLocation.path);\n const packageJson = validatePackageJson(parsed, packageJsonLocation.path);\n\n if (!packageJson.name) continue;\n\n const isInScope = packageJson.name.startsWith(scope + '/');\n const isExactMatch = packageName && packageJson.name === packageName;\n\n if (isInScope || isExactMatch) {\n matchingPackages.push({\n name: packageJson.name,\n path: packageDir,\n isSource: packageName ? packageJson.name === packageName : isInScope\n });\n }\n } catch (error: any) {\n logger.warn(`PACKAGE_JSON_PARSE_FAILED: Unable to parse package.json | Path: ${packageJsonLocation.path} | Error: ${error.message}`);\n }\n }\n\n return matchingPackages;\n};\n\n// Find packages that depend on the target package\nconst findConsumingPackages = async (\n targetDirectories: string[],\n targetPackageName: string,\n storage: any,\n logger: any\n): Promise<Array<{ name: string; path: string }>> => {\n const consumingPackages: Array<{ name: string; path: string }> = [];\n\n // Find all package.json files in target directories\n let allPackageJsonFiles: any[] = [];\n for (const targetDirectory of targetDirectories) {\n const packageJsonFiles = await findAllPackageJsonFiles(targetDirectory, storage);\n allPackageJsonFiles = allPackageJsonFiles.concat(packageJsonFiles);\n }\n\n for (const packageJsonLocation of allPackageJsonFiles) {\n const packageDir = packageJsonLocation.path.replace('/package.json', '');\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonLocation.path, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonLocation.path);\n const packageJson = validatePackageJson(parsed, packageJsonLocation.path);\n\n if (!packageJson.name) continue;\n\n // Check if this package depends on the target package\n const dependencyTypes = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'];\n const hasDependency = dependencyTypes.some(depType =>\n packageJson[depType] && packageJson[depType][targetPackageName]\n );\n\n if (hasDependency && packageJson.name !== targetPackageName) {\n consumingPackages.push({\n name: packageJson.name,\n path: packageDir\n });\n }\n } catch (error: any) {\n logger.warn(`Failed to parse ${packageJsonLocation.path}: ${error.message}`);\n }\n }\n\n return consumingPackages;\n};\n\nconst executeInternal = async (runConfig: Config, packageArgument?: string): Promise<string> => {\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage();\n\n // Check if this is a status command\n if (packageArgument === 'status') {\n return await executeStatus(runConfig);\n }\n\n // Get target directories from config, default to current directory\n const targetDirectories = runConfig.tree?.directories || [process.cwd()];\n\n if (targetDirectories.length === 1) {\n logger.info(`WORKSPACE_ANALYSIS: Analyzing single workspace directory | Path: ${targetDirectories[0]} | Purpose: Find linkable packages`);\n } else {\n logger.info(`WORKSPACE_ANALYSIS: Analyzing multiple workspace directories | Paths: ${targetDirectories.join(', ')} | Count: ${targetDirectories.length} | Purpose: Find linkable packages across workspaces`);\n }\n\n // If no package argument provided, use new smart same-scope linking behavior\n if (!packageArgument) {\n logger.info('LINK_SMART_MODE: Smart linking mode activated for current project | Mode: smart | Target: current directory | Purpose: Auto-link dependencies based on scope');\n\n // Work in current directory only - read the package.json\n const currentDir = process.cwd();\n const packageJsonPath = `${currentDir}/package.json`;\n\n let currentPackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n currentPackageJson = validatePackageJson(parsed, packageJsonPath);\n } catch (error: any) {\n const message = `PACKAGE_JSON_NOT_FOUND: No valid package.json in current directory | Error: ${error.message} | Action: Cannot proceed with smart linking`;\n logger.error(message);\n return message;\n }\n\n if (!currentPackageJson.name) {\n const message = 'PACKAGE_NAME_MISSING: package.json must have a name field | Field: name | Requirement: Required for linking | Action: Add name field to package.json';\n logger.error(message);\n return message;\n }\n\n // Extract the scope from the current package name\n const currentScope = currentPackageJson.name.startsWith('@')\n ? currentPackageJson.name.split('/')[0]\n : null;\n\n if (!currentScope) {\n const message = 'PACKAGE_SCOPE_MISSING: Package must have scoped name for smart linking | Format Required: @scope/package | Current: ' + currentPackageJson.name + ' | Action: Use scoped package name';\n logger.warn(message);\n return message;\n }\n\n logger.info(`CURRENT_PACKAGE_IDENTIFIED: Current package identified for smart linking | Package: ${currentPackageJson.name} | Scope: ${currentScope} | Path: ${currentDir}`);\n\n // Step 1: Link the current package globally (optional - continue even if this fails)\n try {\n if (isDryRun) {\n logger.info(`SELF_LINK_DRY_RUN: Would link current package globally | Mode: dry-run | Package: ${currentPackageJson.name} | Command: npm link`);\n } else {\n logger.verbose(`SELF_LINK_STARTING: Registering package globally | Package: ${currentPackageJson.name} | Command: npm link | Purpose: Make available for dependency linking`);\n await run('npm link');\n logger.info(`SELF_LINK_SUCCESS: Current package linked globally | Package: ${currentPackageJson.name} | Location: Global npm | Purpose: Make available for linking`);\n }\n } catch (error: any) {\n logger.warn(`SELF_LINK_FAILED: Unable to self-link current package | Package: ${currentPackageJson.name} | Error: ${error.message} | Impact: Continuing with dependency linking`);\n logger.info(`LINK_CONTINUING: Proceeding with dependency linking despite self-link failure | Next: Link matching dependencies`);\n }\n\n // Step 2: Find same-scope dependencies in current package\n const allDependencies = {\n ...currentPackageJson.dependencies,\n ...currentPackageJson.devDependencies\n };\n\n const sameScopeDependencies = Object.keys(allDependencies).filter(depName =>\n depName.startsWith(currentScope + '/')\n );\n\n // Step 2.5: Find external dependencies that match external link patterns\n const externalLinkPatterns = runConfig.link?.externals || [];\n const externalDependencies = Object.keys(allDependencies).filter(depName =>\n matchesExternalLinkPattern(depName, externalLinkPatterns)\n );\n\n const allDependenciesToLink = [...sameScopeDependencies, ...externalDependencies];\n\n if (allDependenciesToLink.length === 0) {\n logger.info(`No same-scope or external dependencies found for ${currentScope}`);\n if (isDryRun) {\n return `DRY RUN: Would self-link, no dependencies found to link`;\n } else {\n return `Self-linked ${currentPackageJson.name}, no dependencies to link`;\n }\n }\n\n logger.info(`Found ${sameScopeDependencies.length} same-scope dependencies: ${sameScopeDependencies.join(', ')}`);\n if (externalDependencies.length > 0) {\n logger.info(`Found ${externalDependencies.length} external dependencies matching patterns: ${externalDependencies.join(', ')}`);\n }\n\n // Step 2.6: Handle external dependencies using scopeRoots configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const globallyLinkedViaScopeRoots: string[] = [];\n\n if (Object.keys(scopeRoots).length > 0 && externalDependencies.length > 0) {\n logger.info('Using scopeRoots configuration to discover and link external packages...');\n\n for (const depName of externalDependencies) {\n const depScope = depName.startsWith('@') ? depName.split('/')[0] : null;\n const scopeRoot = depScope ? scopeRoots[depScope] : null;\n\n if (scopeRoot) {\n logger.verbose(`Processing ${depName} with scope ${depScope} -> ${scopeRoot}`);\n\n // Convert relative path to absolute\n const absoluteScopeRoot = path.resolve(currentDir, scopeRoot);\n logger.verbose(`Scanning scope root directory: ${absoluteScopeRoot}`);\n\n try {\n // Look for package with matching name in the scope directory\n const expectedPackageName = depName.startsWith('@') ? depName.split('/')[1] : depName;\n const packageDir = path.join(absoluteScopeRoot, expectedPackageName);\n const packageJsonPath = path.join(packageDir, 'package.json');\n\n logger.verbose(`Checking for package at: ${packageDir}`);\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n if (packageJson.name === depName) {\n logger.info(`Found matching package: ${depName} at ${packageDir}`);\n\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm link' in: ${packageDir}`);\n globallyLinkedViaScopeRoots.push(depName);\n } else {\n // Step A: Run 'npm link' in the source package directory\n const originalCwd = process.cwd();\n try {\n process.chdir(packageDir);\n logger.verbose(`Running 'npm link' in source: ${packageDir}`);\n await run('npm link');\n logger.info(`LINK_SOURCE_SCOPE_ROOTS: Source linked via scopeRoots | Package: ${depName} | Method: scopeRoots | Status: linked`);\n globallyLinkedViaScopeRoots.push(depName);\n } catch (linkError: any) {\n logger.warn(`LINK_SOURCE_FAILED: Failed to link source package | Package: ${depName} | Error: ${linkError.message}`);\n } finally {\n process.chdir(originalCwd);\n }\n }\n } else {\n logger.verbose(`Package name mismatch: expected ${depName}, found ${packageJson.name}`);\n }\n } catch (packageError: any) {\n logger.verbose(`Package not found or invalid: ${packageJsonPath} - ${packageError.message}`);\n }\n } catch (error: any) {\n logger.verbose(`Error processing scope ${depScope}: ${error.message}`);\n }\n } else {\n logger.verbose(`No scope root configured for ${depScope}`);\n }\n }\n\n if (globallyLinkedViaScopeRoots.length > 0) {\n logger.info(`Successfully prepared ${globallyLinkedViaScopeRoots.length} packages via scopeRoots: ${globallyLinkedViaScopeRoots.join(', ')}`);\n }\n }\n\n // Step 3: Get globally linked packages directories (only if we have dependencies to link)\n let globallyLinkedPackages: { [key: string]: string } = {};\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm ls --link -g -p' to discover linked package directories`);\n logger.info(`DRY RUN: Would attempt to link dependencies: ${allDependenciesToLink.join(', ')}`);\n return `DRY RUN: Would self-link and attempt to link ${allDependenciesToLink.length} dependencies`;\n } else {\n logger.verbose(`Discovering globally linked package directories...`);\n const result = await run('npm ls --link -g -p');\n const resultStr = typeof result === 'string' ? result : result.stdout;\n\n // Parse the directory paths - each line is a directory path\n const directoryPaths = resultStr.trim().split('\\n').filter(line => line.trim() !== '');\n\n // Extract package names from directory paths and build a map\n for (const dirPath of directoryPaths) {\n try {\n // Read the package.json to get the actual package name\n const packageJsonPath = `${dirPath.trim()}/package.json`;\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n if (packageJson.name) {\n globallyLinkedPackages[packageJson.name] = dirPath.trim();\n }\n } catch (packageError: any) {\n logger.verbose(`Could not read package.json from ${dirPath}: ${packageError.message}`);\n }\n }\n\n const linkedCount = Object.keys(globallyLinkedPackages).length;\n logger.verbose(`Found ${linkedCount} globally linked package(s)`);\n }\n } catch (error: any) {\n logger.warn(`Failed to get globally linked packages (continuing anyway): ${error.message}`);\n globallyLinkedPackages = {};\n }\n\n // Step 4: Link same-scope dependencies that are available globally using manual symlinks\n const linkedDependencies: string[] = [];\n\n for (const depName of allDependenciesToLink) {\n const sourcePath = globallyLinkedPackages[depName];\n if (sourcePath) {\n try {\n logger.verbose(`Linking dependency: ${depName} from ${sourcePath}`);\n\n // Create the symbolic link manually using the directory path directly\n const success = await createSymbolicLink(depName, sourcePath, currentDir, logger, isDryRun);\n\n if (success) {\n logger.info(`LINK_DEPENDENCY_SUCCESS: Linked dependency successfully | Dependency: ${depName} | Status: symlink-created`);\n linkedDependencies.push(depName);\n } else {\n logger.warn(`LINK_DEPENDENCY_FAILED: Failed to link dependency | Dependency: ${depName} | Status: failed`);\n }\n } catch (error: any) {\n logger.warn(`⚠️ Failed to link ${depName}: ${error.message}`);\n }\n } else {\n logger.verbose(`Skipping ${depName} (not globally linked)`);\n }\n }\n\n const summary = linkedDependencies.length > 0\n ? `Self-linked ${currentPackageJson.name} and linked ${linkedDependencies.length} dependencies: ${linkedDependencies.join(', ')}`\n : `Self-linked ${currentPackageJson.name}, no dependencies were available to link`;\n\n // Step 5: Regenerate package-lock.json without modifying node_modules\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm install --package-lock-only --no-audit --no-fund' to regenerate package-lock.json`);\n } else {\n logger.verbose(`Running 'npm install --package-lock-only --no-audit --no-fund' to regenerate package-lock.json without touching node_modules...`);\n await run('npm install --package-lock-only --no-audit --no-fund');\n logger.info(`LINK_LOCK_REGENERATED: Regenerated package-lock.json successfully | File: package-lock.json | Status: updated`);\n }\n } catch (error: any) {\n logger.warn(`LINK_LOCK_REGEN_FAILED: Failed to regenerate package-lock.json | Error: ${error.message} | Impact: Lock file may be out of sync`);\n }\n\n logger.info(summary);\n return summary;\n }\n\n // New scope-based linking behavior\n logger.info(`LINK_SCOPE_MODE: Linking scope or specific package | Target: ${packageArgument} | Mode: scope-based | Purpose: Link packages by scope`);\n\n const { scope, packageName } = parsePackageArgument(packageArgument);\n logger.verbose(`Parsed scope: ${scope}, package: ${packageName || 'all packages in scope'}`);\n\n // Find matching packages in the workspace\n const matchingPackages = await findMatchingPackages(targetDirectories, scope, storage, logger, packageName);\n\n if (matchingPackages.length === 0) {\n const message = packageName\n ? `No package found matching: ${packageName}`\n : `No packages found in scope: ${scope}`;\n logger.warn(message);\n return message;\n }\n\n logger.info(`Found ${matchingPackages.length} matching package(s)`);\n\n const linkedPackages: string[] = [];\n\n // If specific package name provided, use that; otherwise link all packages in scope\n const packagesToLink = packageName\n ? matchingPackages.filter(pkg => pkg.name === packageName)\n : matchingPackages;\n\n for (const pkg of packagesToLink) {\n logger.info(`Processing package: ${pkg.name}`);\n\n // Step A: Run 'npm link' in the source package directory\n try {\n const originalCwd = process.cwd();\n process.chdir(pkg.path);\n\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm link' in: ${pkg.path}`);\n } else {\n logger.verbose(`Running 'npm link' in source: ${pkg.path}`);\n await run('npm link');\n logger.info(`LINK_SOURCE_SUCCESS: Source package linked globally | Package: ${pkg.name} | Status: linked`);\n }\n } finally {\n process.chdir(originalCwd);\n }\n\n // Step B: Find all packages that depend on this package and link them\n const consumingPackages = await findConsumingPackages(targetDirectories, pkg.name, storage, logger);\n\n if (consumingPackages.length === 0) {\n logger.info(`No consuming packages found for: ${pkg.name}`);\n } else {\n logger.info(`Found ${consumingPackages.length} consuming package(s) for: ${pkg.name}`);\n\n for (const consumer of consumingPackages) {\n try {\n const consumerOriginalCwd = process.cwd();\n process.chdir(consumer.path);\n\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm link ${pkg.name}' in: ${consumer.path}`);\n } else {\n logger.verbose(`Running 'npm link ${pkg.name}' in consumer: ${consumer.path}`);\n await runSecure('npm', ['link', pkg.name]);\n logger.info(`LINK_CONSUMER_SUCCESS: Consumer linked to package | Consumer: ${consumer.name} | Package: ${pkg.name} | Status: linked`);\n }\n } finally {\n process.chdir(consumerOriginalCwd);\n }\n } catch (error: any) {\n logger.error(`LINK_CONSUMER_FAILED: Failed to link package in consumer | Package: ${pkg.name} | Consumer: ${consumer.name} | Error: ${error.message}`);\n throw new Error(`Failed to link ${pkg.name} in consumer ${consumer.name}: ${error.message}`);\n }\n }\n }\n\n linkedPackages.push(pkg.name);\n } catch (error: any) {\n logger.error(`LINK_SOURCE_PACKAGE_FAILED: Failed to link source package | Package: ${pkg.name} | Error: ${error.message}`);\n throw new Error(`Failed to link source package ${pkg.name}: ${error.message}`);\n }\n }\n\n const summary = `Successfully linked ${linkedPackages.length} package(s): ${linkedPackages.join(', ')}`;\n\n // Final step: Regenerate package-lock.json files in all affected packages without modifying node_modules\n if (!isDryRun) {\n logger.info(`LINK_LOCK_REGENERATING_ALL: Regenerating package-lock.json files in all packages | Mode: lockfile-only | Purpose: Update lock files after linking`);\n\n // Get all unique consuming packages\n const allConsumingPackages = new Set<string>();\n for (const pkg of packagesToLink) {\n const consumingPackages = await findConsumingPackages(targetDirectories, pkg.name, storage, logger);\n consumingPackages.forEach(consumer => allConsumingPackages.add(consumer.path));\n }\n\n // Also include the source packages\n packagesToLink.forEach(pkg => allConsumingPackages.add(pkg.path));\n\n // Run lockfile-only install in each package\n for (const packagePath of allConsumingPackages) {\n try {\n const originalCwd = process.cwd();\n process.chdir(packagePath);\n\n try {\n logger.verbose(`Running 'npm install --package-lock-only --no-audit --no-fund' in: ${packagePath}`);\n await run('npm install --package-lock-only --no-audit --no-fund');\n logger.verbose(`LINK_LOCK_PACKAGE_REGENERATED: Regenerated package-lock.json | Path: ${packagePath} | Status: updated`);\n } finally {\n process.chdir(originalCwd);\n }\n } catch (error: any) {\n logger.warn(`LINK_LOCK_PACKAGE_REGEN_FAILED: Failed to regenerate package-lock.json | Path: ${packagePath} | Error: ${error.message}`);\n }\n }\n\n logger.info(`LINK_LOCK_ALL_REGENERATED: Regenerated package-lock.json files in all packages | Package Count: ${allConsumingPackages.size} | Status: completed`);\n } else {\n logger.info(`DRY RUN: Would run 'npm install --package-lock-only --no-audit --no-fund' to regenerate package-lock.json files in all packages`);\n }\n\n logger.info(summary);\n return summary;\n};\n\n// Status function to show what's currently linked\nconst executeStatus = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage();\n\n // Get target directories from config, default to current directory\n const targetDirectories = runConfig.tree?.directories || [process.cwd()];\n\n if (targetDirectories.length === 1) {\n logger.info(`🔍 Checking link status in: ${targetDirectories[0]}`);\n } else {\n logger.info(`🔍 Checking link status in: ${targetDirectories.join(', ')}`);\n }\n\n // Find all packages in the workspace\n let allPackageJsonFiles: any[] = [];\n for (const targetDirectory of targetDirectories) {\n const packageJsonFiles = await findAllPackageJsonFiles(targetDirectory, storage);\n allPackageJsonFiles = allPackageJsonFiles.concat(packageJsonFiles);\n }\n\n const packageStatuses: Array<{\n name: string;\n path: string;\n linkedDependencies: Array<{ dependencyName: string; targetPath: string; isExternal: boolean }>;\n }> = [];\n\n for (const packageJsonLocation of allPackageJsonFiles) {\n const packageDir = packageJsonLocation.path.replace('/package.json', '');\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonLocation.path, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonLocation.path);\n const packageJson = validatePackageJson(parsed, packageJsonLocation.path);\n\n if (!packageJson.name) continue;\n\n const linkedDependencies = await findLinkedDependencies(packageDir, packageJson.name, storage, logger);\n\n if (linkedDependencies.length > 0) {\n packageStatuses.push({\n name: packageJson.name,\n path: packageDir,\n linkedDependencies\n });\n }\n } catch (error: any) {\n logger.warn(`Failed to parse ${packageJsonLocation.path}: ${error.message}`);\n }\n }\n\n if (packageStatuses.length === 0) {\n return 'No linked dependencies found in workspace.';\n }\n\n // Format the output\n let output = `Found ${packageStatuses.length} package(s) with linked dependencies:\\n\\n`;\n\n for (const packageStatus of packageStatuses) {\n output += `📦 ${packageStatus.name}\\n`;\n output += ` Path: ${packageStatus.path}\\n`;\n\n if (packageStatus.linkedDependencies.length > 0) {\n output += ` Linked dependencies:\\n`;\n for (const dep of packageStatus.linkedDependencies) {\n const type = dep.isExternal ? '🔗 External' : '🔗 Internal';\n output += ` ${type} ${dep.dependencyName} -> ${dep.targetPath}\\n`;\n }\n }\n output += '\\n';\n }\n\n return output;\n};\n\nexport const execute = async (runConfig: Config, packageArgument?: string): Promise<string> => {\n try {\n // Use packageArgument from runConfig if not provided as parameter\n const finalPackageArgument = packageArgument || runConfig.link?.packageArgument;\n return await executeInternal(runConfig, finalPackageArgument);\n } catch (error: any) {\n const logger = getLogger();\n logger.error(`link failed: ${error.message}`);\n throw error;\n }\n};\n\n","import { getDryRunLogger, getLogger, Config } from '@eldrforge/core';\nimport { createStorage } from '@eldrforge/shared';\nimport { run, runSecure, safeJsonParse, validatePackageJson } from '@eldrforge/git-tools';\nimport { findAllPackageJsonFiles } from '@eldrforge/commands-git';\nimport fs from 'fs/promises';\nimport path from 'path';\n\n// Helper function to check if a dependency matches any external unlink patterns\nexport const matchesExternalUnlinkPattern = (dependencyName: string, externalUnlinkPatterns: string[]): boolean => {\n if (!externalUnlinkPatterns || externalUnlinkPatterns.length === 0) {\n return false;\n }\n\n return externalUnlinkPatterns.some(pattern => {\n // Simple string matching - could be enhanced with glob patterns later\n return dependencyName === pattern || dependencyName.startsWith(pattern);\n });\n};\n\n// Helper function to check if a path is a symbolic link\nexport const isSymbolicLink = async (filePath: string): Promise<boolean> => {\n try {\n const stats = await fs.lstat(filePath);\n return stats.isSymbolicLink();\n } catch {\n return false;\n }\n};\n\n// Helper function to get the target of a symbolic link\nexport const getSymbolicLinkTarget = async (filePath: string): Promise<string | null> => {\n try {\n const target = await fs.readlink(filePath);\n return target;\n } catch {\n return null;\n }\n};\n\n// Helper function to find all linked dependencies in a package\nexport const findLinkedDependencies = async (\n packagePath: string,\n packageName: string,\n storage: any,\n logger: any\n): Promise<Array<{ dependencyName: string; targetPath: string; isExternal: boolean }>> => {\n const linkedDependencies: Array<{ dependencyName: string; targetPath: string; isExternal: boolean }> = [];\n\n try {\n const packageJsonPath = path.join(packagePath, 'package.json');\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n const allDependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies\n };\n\n const nodeModulesPath = path.join(packagePath, 'node_modules');\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const [dependencyName, version] of Object.entries(allDependencies)) {\n let dependencyPath: string;\n\n if (dependencyName.startsWith('@')) {\n // Scoped package\n const [scope, name] = dependencyName.split('/');\n dependencyPath = path.join(nodeModulesPath, scope, name);\n } else {\n // Unscoped package\n dependencyPath = path.join(nodeModulesPath, dependencyName);\n }\n\n if (await isSymbolicLink(dependencyPath)) {\n const target = await getSymbolicLinkTarget(dependencyPath);\n if (target) {\n // Determine if this is an external dependency (not in the same workspace)\n const isExternal = !target.includes('node_modules') || target.startsWith('..');\n linkedDependencies.push({\n dependencyName,\n targetPath: target,\n isExternal\n });\n }\n }\n }\n } catch (error: any) {\n logger.warn(`UNLINK_CHECK_FAILED: Unable to check linked dependencies | Package: ${packageName} | Error: ${error.message}`);\n }\n\n return linkedDependencies;\n};\n\n// Helper function to remove symbolic links manually\nexport const removeSymbolicLink = async (\n packageName: string,\n targetDir: string,\n logger: any,\n isDryRun: boolean = false\n): Promise<boolean> => {\n try {\n // Parse package name to get scope and name parts\n const [scope, name] = packageName.startsWith('@')\n ? packageName.split('/')\n : [null, packageName];\n\n // Create the target path structure\n const nodeModulesPath = path.join(targetDir, 'node_modules');\n let targetPath: string;\n\n if (scope) {\n // Scoped package: node_modules/@scope/name\n targetPath = path.join(nodeModulesPath, scope, name);\n } else {\n // Unscoped package: node_modules/name\n targetPath = path.join(nodeModulesPath, name);\n }\n\n if (isDryRun) {\n logger.verbose(`DRY RUN: Would check and remove symlink: ${targetPath}`);\n return true;\n }\n\n // Check if something exists at the target path\n try {\n const stats = await fs.lstat(targetPath); // Use lstat to not follow symlinks\n\n if (stats.isSymbolicLink()) {\n // It's a symlink, remove it\n await fs.unlink(targetPath);\n logger.verbose(`Removed symlink: ${targetPath}`);\n return true;\n } else {\n logger.verbose(`Target exists but is not a symlink: ${targetPath}`);\n return false;\n }\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n // Nothing exists at target path, nothing to remove\n logger.verbose(`No symlink found at: ${targetPath}`);\n return true;\n } else {\n throw error; // Re-throw unexpected errors\n }\n }\n } catch (error: any) {\n logger.warn(`UNLINK_SYMLINK_REMOVE_FAILED: Unable to remove symlink | Package: ${packageName} | Error: ${error.message}`);\n return false;\n }\n};\n\n// Helper function to parse package names and scopes (same as link command)\nexport const parsePackageArgument = (packageArg: string): { scope: string; packageName?: string } => {\n if (packageArg.startsWith('@')) {\n const parts = packageArg.split('/');\n if (parts.length === 1) {\n // Just a scope like \"@fjell\"\n return { scope: parts[0] };\n } else {\n // Full package name like \"@fjell/core\"\n return { scope: parts[0], packageName: packageArg };\n }\n } else {\n throw new Error(`Package argument must start with @ (scope): ${packageArg}`);\n }\n};\n\n// Find packages in the workspace that match the given scope or package name\nconst findMatchingPackages = async (\n targetDirectories: string[],\n scope: string,\n storage: any,\n logger: any,\n packageName?: string\n): Promise<Array<{ name: string; path: string; isSource: boolean }>> => {\n const matchingPackages: Array<{ name: string; path: string; isSource: boolean }> = [];\n\n // Find all package.json files in target directories\n let allPackageJsonFiles: any[] = [];\n for (const targetDirectory of targetDirectories) {\n const packageJsonFiles = await findAllPackageJsonFiles(targetDirectory, storage);\n allPackageJsonFiles = allPackageJsonFiles.concat(packageJsonFiles);\n }\n\n for (const packageJsonLocation of allPackageJsonFiles) {\n const packageDir = packageJsonLocation.path.replace('/package.json', '');\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonLocation.path, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonLocation.path);\n const packageJson = validatePackageJson(parsed, packageJsonLocation.path);\n\n if (!packageJson.name) continue;\n\n const isInScope = packageJson.name.startsWith(scope + '/');\n const isExactMatch = packageName && packageJson.name === packageName;\n\n if (isInScope || isExactMatch) {\n matchingPackages.push({\n name: packageJson.name,\n path: packageDir,\n isSource: packageName ? packageJson.name === packageName : isInScope\n });\n }\n } catch (error: any) {\n logger.warn(`Failed to parse ${packageJsonLocation.path}: ${error.message}`);\n }\n }\n\n return matchingPackages;\n};\n\n// Find packages that depend on the target package\nconst findConsumingPackages = async (\n targetDirectories: string[],\n targetPackageName: string,\n storage: any,\n logger: any\n): Promise<Array<{ name: string; path: string }>> => {\n const consumingPackages: Array<{ name: string; path: string }> = [];\n\n // Find all package.json files in target directories\n let allPackageJsonFiles: any[] = [];\n for (const targetDirectory of targetDirectories) {\n const packageJsonFiles = await findAllPackageJsonFiles(targetDirectory, storage);\n allPackageJsonFiles = allPackageJsonFiles.concat(packageJsonFiles);\n }\n\n for (const packageJsonLocation of allPackageJsonFiles) {\n const packageDir = packageJsonLocation.path.replace('/package.json', '');\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonLocation.path, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonLocation.path);\n const packageJson = validatePackageJson(parsed, packageJsonLocation.path);\n\n if (!packageJson.name) continue;\n\n // Check if this package depends on the target package\n const dependencyTypes = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'];\n const hasDependency = dependencyTypes.some(depType =>\n packageJson[depType] && packageJson[depType][targetPackageName]\n );\n\n if (hasDependency && packageJson.name !== targetPackageName) {\n consumingPackages.push({\n name: packageJson.name,\n path: packageDir\n });\n }\n } catch (error: any) {\n logger.warn(`Failed to parse ${packageJsonLocation.path}: ${error.message}`);\n }\n }\n\n return consumingPackages;\n};\n\nconst executeInternal = async (runConfig: Config, packageArgument?: string): Promise<string> => {\n const isDryRun = runConfig.dryRun || runConfig.unlink?.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage();\n\n // Check if this is a status command\n if (packageArgument === 'status') {\n return await executeStatus(runConfig);\n }\n\n // Get target directories from config, default to current directory\n const targetDirectories = runConfig.tree?.directories || [process.cwd()];\n\n if (targetDirectories.length === 1) {\n logger.info(`UNLINK_WORKSPACE_ANALYSIS: Analyzing single workspace directory | Path: ${targetDirectories[0]} | Purpose: Find packages to unlink`);\n } else {\n logger.info(`UNLINK_WORKSPACE_ANALYSIS: Analyzing multiple workspace directories | Paths: ${targetDirectories.join(', ')} | Count: ${targetDirectories.length} | Purpose: Find packages to unlink`);\n }\n\n // If no package argument provided, implement new behavior for current project\n if (!packageArgument) {\n logger.info('UNLINK_SMART_MODE: Smart unlinking mode activated for current project | Mode: smart | Target: current directory | Purpose: Auto-unlink based on scope');\n\n const currentDir = process.cwd();\n const packageJsonPath = `${currentDir}/package.json`;\n\n // Check if we're in a directory with package.json\n if (!(await storage.exists(packageJsonPath))) {\n const message = `No package.json found in current directory: ${currentDir}`;\n logger.warn('UNLINK_NO_PACKAGE_JSON: No package.json found in current directory | Directory: ' + currentDir + ' | Action: Cannot unlink without package.json');\n return message;\n }\n\n // Parse package.json to get package name\n let packageName: string;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n if (!packageJson.name) {\n throw new Error('package.json has no name field');\n }\n packageName = packageJson.name;\n } catch (error: any) {\n const message = `Failed to parse package.json: ${error.message}`;\n logger.error('UNLINK_PACKAGE_NAME_MISSING: package.json must have a name field | Field: name | Requirement: Required for unlinking | Action: Add name field to package.json');\n return message;\n }\n\n logger.info(`UNLINK_PACKAGE_PROCESSING: Processing package for unlinking | Package: ${packageName} | Action: Remove symlinks and restore registry versions`);\n\n const cleanNodeModules = runConfig.unlink?.cleanNodeModules || false;\n const externalUnlinkPatterns = runConfig.unlink?.externals || [];\n\n // Step 0: Handle external dependencies if patterns are specified\n if (externalUnlinkPatterns.length > 0) {\n logger.info(`UNLINK_EXTERNAL_DEPS: Processing external dependencies | Patterns: ${externalUnlinkPatterns.join(', ')} | Purpose: Unlink external packages before main package`);\n\n // Read package.json to get dependencies\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n const allDependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies\n };\n\n const externalDependencies = Object.keys(allDependencies).filter(depName =>\n matchesExternalUnlinkPattern(depName, externalUnlinkPatterns)\n );\n\n if (externalDependencies.length > 0) {\n logger.info(`UNLINK_EXTERNAL_FOUND: Found external dependencies to unlink | Count: ${externalDependencies.length} | Dependencies: ${externalDependencies.join(', ')}`);\n\n for (const depName of externalDependencies) {\n try {\n const success = await removeSymbolicLink(depName, currentDir, logger, isDryRun);\n if (success) {\n logger.info(`UNLINK_EXTERNAL_SUCCESS: External dependency unlinked successfully | Dependency: ${depName} | Status: unlinked`);\n } else {\n logger.warn(`UNLINK_EXTERNAL_FAILED: Failed to unlink external dependency | Dependency: ${depName} | Status: failed`);\n }\n } catch (error: any) {\n logger.warn(`UNLINK_EXTERNAL_ERROR: Error during external dependency unlink | Dependency: ${depName} | Error: ${error.message}`);\n }\n }\n } else {\n logger.info('UNLINK_EXTERNAL_NONE: No external dependencies found matching patterns | Patterns: ' + externalUnlinkPatterns.join(', ') + ' | Action: Skipping external unlink');\n }\n }\n\n if (isDryRun) {\n let dryRunMessage = `DRY RUN: Would execute unlink steps for ${packageName}:\\n`;\n if (externalUnlinkPatterns.length > 0) {\n dryRunMessage += ` 0. Unlink external dependencies matching patterns: ${externalUnlinkPatterns.join(', ')}\\n`;\n }\n dryRunMessage += ` 1. npm unlink -g\\n`;\n if (cleanNodeModules) {\n dryRunMessage += ` 2. rm -rf node_modules package-lock.json\\n`;\n dryRunMessage += ` 3. npm install\\n`;\n dryRunMessage += ` 4. Check for remaining links with npm ls --link`;\n } else {\n dryRunMessage += ` 2. Check for remaining links with npm ls --link\\n`;\n dryRunMessage += ` Note: Use --clean-node-modules flag to also clean and reinstall dependencies`;\n }\n\n logger.info(dryRunMessage);\n return dryRunMessage;\n }\n\n // Step 1: Remove global link\n logger.info('UNLINK_GLOBAL_REMOVING: Removing global npm link | Step: 1 | Command: npm unlink -g | Purpose: Remove package from global npm');\n try {\n await run('npm unlink -g');\n logger.info('UNLINK_GLOBAL_SUCCESS: Global link removed successfully | Status: unlinked | Location: global npm');\n } catch (error: any) {\n // This might fail if the package wasn't globally linked, which is OK\n logger.warn(`UNLINK_GLOBAL_SKIP: Failed to remove global link | Error: ${error.message} | Impact: OK if package wasn't linked | Status: continuing`);\n }\n\n if (cleanNodeModules) {\n // Step 2: Clean node_modules and package-lock.json\n logger.info('UNLINK_CLEANING: Cleaning node_modules and package-lock.json | Command: rm -rf | Purpose: Remove symlinked dependencies');\n try {\n await run('rm -rf node_modules package-lock.json');\n logger.info('UNLINK_CLEAN_SUCCESS: Successfully cleaned node_modules and package-lock.json | Status: removed | Next: Fresh install');\n } catch (error: any) {\n logger.warn(`UNLINK_CLEAN_FAILED: Failed to clean directories | Error: ${error.message} | Impact: May need manual cleanup`);\n }\n\n // Step 3: Install dependencies\n logger.info('UNLINK_INSTALLING: Installing dependencies from registry | Command: npm install | Purpose: Restore registry versions');\n try {\n await run('npm install');\n logger.info('UNLINK_INSTALL_SUCCESS: Dependencies installed successfully | Source: npm registry | Status: completed');\n } catch (error: any) {\n logger.error(`UNLINK_INSTALL_FAILED: Failed to install dependencies | Error: ${error.message} | Impact: Package may be in inconsistent state`);\n throw error;\n }\n\n // Step 4: Check for remaining links (suppress output and errors)\n logger.info('UNLINK_CHECK_REMAINING: Checking for remaining symlinks | Purpose: Verify clean unlink | Action: Scan node_modules');\n } else {\n // Step 2: Check for remaining links (suppress output and errors)\n logger.info('UNLINK_CHECK_REMAINING: Checking for remaining symlinks | Mode: skip-reinstall | Purpose: Verify unlink | Action: Scan node_modules');\n logger.info('Note: Use --clean-node-modules flag to also clean and reinstall dependencies');\n }\n\n try {\n // Use child_process directly to suppress logging and get JSON output\n const util = await import('util');\n const child_process = await import('child_process');\n const execPromise = util.promisify(child_process.exec);\n\n const result = await execPromise('npm ls --link --json');\n\n // Parse JSON output to check for links to packages in the same scope\n const packageScope = packageName.includes('/') ? packageName.split('/')[0] : null;\n\n if (packageScope && result.stdout.trim()) {\n try {\n const linksData = safeJsonParse(result.stdout, 'npm ls output after unlink');\n const linkedPackages = Object.keys(linksData.dependencies || {});\n const scopeLinkedPackages = linkedPackages.filter(pkg => pkg.startsWith(packageScope + '/'));\n\n if (scopeLinkedPackages.length > 0) {\n logger.warn(`UNLINK_REMAINING_LINKS: Found remaining links to packages in scope | Scope: ${packageScope} | Packages: ${scopeLinkedPackages.join(', ')} | Note: May be expected if workspace packages linked`);\n logger.verbose('UNLINK_REMAINING_NOTE: Remaining links may be expected | Reason: Other workspace packages still linked | Status: normal');\n } else {\n logger.info('UNLINK_VERIFY_CLEAN: No problematic links found | Status: clean | Verification: passed');\n }\n } catch {\n // If JSON parsing fails, fall back to basic check\n logger.verbose('Failed to parse npm ls --link --json output, using basic check');\n if (result.stdout.includes(packageScope)) {\n logger.warn(`UNLINK_REMAINING_LINKS_BASIC: Found remaining links to scope | Scope: ${packageScope} | Check: basic | Note: May be expected`);\n logger.verbose('UNLINK_REMAINING_NOTE: Remaining links may be expected | Reason: Other workspace packages still linked | Status: normal');\n } else {\n logger.info('UNLINK_VERIFY_CLEAN: No problematic links found | Status: clean | Verification: passed');\n }\n }\n } else {\n logger.info('UNLINK_VERIFY_CLEAN: No problematic links found | Status: clean | Verification: passed');\n }\n } catch {\n // npm ls --link returns non-zero when there are no links, which is what we want\n // So we only log this at verbose level\n logger.verbose('npm ls --link check completed (non-zero exit is expected when no links exist)');\n }\n\n const summary = `Successfully unlinked ${packageName}`;\n logger.info(summary);\n return summary;\n }\n\n // New scope-based unlinking behavior\n logger.info(`UNLINK_EXPLICIT_MODE: Unlinking specific scope/package | Target: ${packageArgument} | Mode: explicit | Purpose: Remove symlinks for package`);\n\n const { scope, packageName } = parsePackageArgument(packageArgument);\n logger.verbose(`Parsed scope: ${scope}, package: ${packageName || 'all packages in scope'}`);\n\n // Find matching packages in the workspace\n const matchingPackages = await findMatchingPackages(targetDirectories, scope, storage, logger, packageName);\n\n if (matchingPackages.length === 0) {\n const message = packageName\n ? `No package found matching: ${packageName}`\n : `No packages found in scope: ${scope}`;\n logger.warn(message);\n return message;\n }\n\n logger.info(`Found ${matchingPackages.length} matching package(s)`);\n\n const unlinkedPackages: string[] = [];\n\n // If specific package name provided, use that; otherwise unlink all packages in scope\n const packagesToUnlink = packageName\n ? matchingPackages.filter(pkg => pkg.name === packageName)\n : matchingPackages;\n\n for (const pkg of packagesToUnlink) {\n logger.info(`Processing package: ${pkg.name}`);\n\n // Step A: Find all packages that depend on this package and unlink them first\n const consumingPackages = await findConsumingPackages(targetDirectories, pkg.name, storage, logger);\n\n if (consumingPackages.length === 0) {\n logger.info(`No consuming packages found for: ${pkg.name}`);\n } else {\n logger.info(`Found ${consumingPackages.length} consuming package(s) for: ${pkg.name}`);\n\n for (const consumer of consumingPackages) {\n try {\n const consumerOriginalCwd = process.cwd();\n process.chdir(consumer.path);\n\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm unlink ${pkg.name}' in: ${consumer.path}`);\n } else {\n logger.verbose(`Running 'npm unlink ${pkg.name}' in consumer: ${consumer.path}`);\n await runSecure('npm', ['unlink', pkg.name]);\n logger.info(`UNLINK_CONSUMER_SUCCESS: Consumer unlinked from package | Consumer: ${consumer.name} | Package: ${pkg.name} | Status: unlinked`);\n }\n } finally {\n process.chdir(consumerOriginalCwd);\n }\n } catch (error: any) {\n // npm unlink can fail if package wasn't linked, but that's OK\n logger.warn(`UNLINK_CONSUMER_FAILED: Failed to unlink consumer | Consumer: ${consumer.name} | Package: ${pkg.name} | Error: ${error.message}`);\n }\n }\n }\n\n // Step B: Run 'npm unlink' in the source package directory\n try {\n const originalCwd = process.cwd();\n process.chdir(pkg.path);\n\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm unlink' in: ${pkg.path}`);\n } else {\n logger.verbose(`Running 'npm unlink' in source: ${pkg.path}`);\n await run('npm unlink');\n logger.info(`UNLINK_SOURCE_SUCCESS: Source package unlinked | Package: ${pkg.name} | Status: unlinked`);\n }\n } finally {\n process.chdir(originalCwd);\n }\n\n unlinkedPackages.push(pkg.name);\n } catch (error: any) {\n // npm unlink can fail if package wasn't linked, but that's OK\n logger.warn(`UNLINK_SOURCE_FAILED: Failed to unlink source package | Package: ${pkg.name} | Error: ${error.message}`);\n unlinkedPackages.push(pkg.name); // Still count as success\n }\n }\n\n const summary = `Successfully unlinked ${unlinkedPackages.length} package(s): ${unlinkedPackages.join(', ')}`;\n logger.info(summary);\n return summary;\n};\n\n// Status function to show what's currently linked (same as link command)\nconst executeStatus = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage();\n\n // Get target directories from config, default to current directory\n const targetDirectories = runConfig.tree?.directories || [process.cwd()];\n\n if (targetDirectories.length === 1) {\n logger.info(`UNLINK_STATUS_CHECK: Checking link status in directory | Directory: ${targetDirectories[0]} | Purpose: Show current symlinks`);\n } else {\n logger.info(`UNLINK_STATUS_CHECK: Checking link status in directories | Directories: ${targetDirectories.join(', ')} | Count: ${targetDirectories.length} | Purpose: Show current symlinks`);\n }\n\n // Find all packages in the workspace\n let allPackageJsonFiles: any[] = [];\n for (const targetDirectory of targetDirectories) {\n const packageJsonFiles = await findAllPackageJsonFiles(targetDirectory, storage);\n allPackageJsonFiles = allPackageJsonFiles.concat(packageJsonFiles);\n }\n\n const packageStatuses: Array<{\n name: string;\n path: string;\n linkedDependencies: Array<{ dependencyName: string; targetPath: string; isExternal: boolean }>;\n }> = [];\n\n for (const packageJsonLocation of allPackageJsonFiles) {\n const packageDir = packageJsonLocation.path.replace('/package.json', '');\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonLocation.path, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonLocation.path);\n const packageJson = validatePackageJson(parsed, packageJsonLocation.path);\n\n if (!packageJson.name) continue;\n\n const linkedDependencies = await findLinkedDependencies(packageDir, packageJson.name, storage, logger);\n\n if (linkedDependencies.length > 0) {\n packageStatuses.push({\n name: packageJson.name,\n path: packageDir,\n linkedDependencies\n });\n }\n } catch (error: any) {\n logger.warn(`Failed to parse ${packageJsonLocation.path}: ${error.message}`);\n }\n }\n\n if (packageStatuses.length === 0) {\n return 'No linked dependencies found in workspace.';\n }\n\n // Format the output\n let output = `Found ${packageStatuses.length} package(s) with linked dependencies:\\n\\n`;\n\n for (const packageStatus of packageStatuses) {\n output += `📦 ${packageStatus.name}\\n`;\n output += ` Path: ${packageStatus.path}\\n`;\n\n if (packageStatus.linkedDependencies.length > 0) {\n output += ` Linked dependencies:\\n`;\n for (const dep of packageStatus.linkedDependencies) {\n const type = dep.isExternal ? '🔗 External' : '🔗 Internal';\n output += ` ${type} ${dep.dependencyName} -> ${dep.targetPath}\\n`;\n }\n }\n output += '\\n';\n }\n\n return output;\n};\n\nexport const execute = async (runConfig: Config, packageArgument?: string): Promise<string> => {\n try {\n // Check if this is a status command from direct parameter\n if (packageArgument === 'status') {\n return await executeStatus(runConfig);\n }\n\n // Use packageArgument from runConfig if not provided as parameter\n const finalPackageArgument = packageArgument || runConfig.unlink?.packageArgument;\n\n // Check if this is a status command from config\n if (finalPackageArgument === 'status') {\n return await executeStatus(runConfig);\n }\n\n return await executeInternal(runConfig, finalPackageArgument);\n } catch (error: any) {\n const logger = getLogger();\n logger.error(`unlink failed: ${error.message}`);\n throw error;\n }\n};\n","#!/usr/bin/env node\n/**\n * Updates command - Run npm-check-updates with scoped patterns or update inter-project dependencies\n *\n * This command provides a convenient way to update dependencies matching specific scopes:\n * - Can target specific scopes like \"@fjell\" or \"@getdidthey\"\n * - Works at both project level and tree level (across multiple packages)\n * - Uses npm-check-updates to update matching packages from npm registry\n * - Can update inter-project dependencies based on tree state (--inter-project mode)\n *\n * Examples:\n * kodrdriv updates @fjell # Update @fjell/* packages in current project\n * kodrdriv tree updates @fjell # Update @fjell/* packages across all projects in tree\n * kodrdriv updates @getdidthey # Update @getdidthey/* packages in current project\n * kodrdriv updates --inter-project # Update inter-project deps based on tree state\n * kodrdriv tree updates --inter-project # Update all inter-project deps in tree\n */\n\nimport { getDryRunLogger, Config } from '@eldrforge/core';\nimport { run, safeJsonParse } from '@eldrforge/git-tools';\nimport { createStorage } from '@eldrforge/shared';\nimport path from 'path';\n\n/**\n * Update inter-project dependencies in package.json based on current tree state\n */\nconst updateInterProjectDependencies = async (\n packageDir: string,\n scope: string,\n isDryRun: boolean,\n logger: any\n): Promise<{ hasChanges: boolean; updated: string[] }> => {\n const storage = createStorage();\n const packageJsonPath = path.join(packageDir, 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n logger.verbose('No package.json found, skipping dependency updates');\n return { hasChanges: false, updated: [] };\n }\n\n const updated: string[] = [];\n let hasChanges = false;\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = safeJsonParse(packageJsonContent, packageJsonPath);\n\n const sectionsToUpdate = ['dependencies', 'devDependencies', 'peerDependencies'];\n\n // Collect all dependencies matching the scope\n const depsToUpdate: Array<{ section: string; name: string; currentVersion: string }> = [];\n\n for (const section of sectionsToUpdate) {\n const deps = packageJson[section];\n if (deps) {\n for (const [depName, depVersion] of Object.entries(deps)) {\n if (depName.startsWith(scope)) {\n depsToUpdate.push({\n section,\n name: depName,\n currentVersion: depVersion as string\n });\n }\n }\n }\n }\n\n if (depsToUpdate.length === 0) {\n logger.info(`UPDATES_NO_DEPS_FOUND: No dependencies matching scope | Scope: ${scope} | Package Dir: ${packageDir} | Status: No updates needed`);\n return { hasChanges: false, updated: [] };\n }\n\n logger.info(`UPDATES_DEPS_FOUND: Found dependencies matching scope | Scope: ${scope} | Count: ${depsToUpdate.length} | Action: Will check and update versions`);\n\n // For each dependency, find its package.json and get the current version\n for (const dep of depsToUpdate) {\n try {\n // Look for package in parent directories or node_modules\n let depVersion: string | null = null;\n\n // First try to find in tree (sibling packages)\n const parentDir = path.dirname(packageDir);\n const siblingPackageJson = path.join(parentDir, dep.name.split('/').pop()!, 'package.json');\n\n if (await storage.exists(siblingPackageJson)) {\n const siblingContent = await storage.readFile(siblingPackageJson, 'utf-8');\n const siblingPackage = safeJsonParse(siblingContent, siblingPackageJson);\n if (siblingPackage.name === dep.name) {\n depVersion = siblingPackage.version;\n logger.verbose(`Found ${dep.name}@${depVersion} in tree`);\n }\n }\n\n // Fall back to npm to get latest published version\n if (!depVersion) {\n try {\n const { stdout } = await run(`npm view ${dep.name} version`);\n depVersion = stdout.trim();\n logger.verbose(`Found ${dep.name}@${depVersion} on npm`);\n } catch {\n logger.warn(`UPDATES_VERSION_NOT_FOUND: Could not find version for dependency | Dependency: ${dep.name} | Action: Skipping | Reason: Not found in tree or npm`);\n continue;\n }\n }\n\n const newVersion = `^${depVersion}`;\n if (dep.currentVersion !== newVersion) {\n if (isDryRun) {\n logger.info(`UPDATES_WOULD_UPDATE: Would update dependency | Mode: dry-run | Section: ${dep.section} | Dependency: ${dep.name} | Current: ${dep.currentVersion} | New: ${newVersion}`);\n } else {\n logger.info(`UPDATES_UPDATING: Updating dependency version | Section: ${dep.section} | Dependency: ${dep.name} | Current: ${dep.currentVersion} | New: ${newVersion}`);\n packageJson[dep.section][dep.name] = newVersion;\n }\n hasChanges = true;\n updated.push(`${dep.name}: ${dep.currentVersion} → ${newVersion}`);\n }\n } catch (error: any) {\n logger.warn(`UPDATES_DEP_UPDATE_FAILED: Failed to update dependency | Dependency: ${dep.name} | Error: ${error.message}`);\n }\n }\n\n if (hasChanges && !isDryRun) {\n await storage.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`UPDATES_PACKAGE_COMPLETE: Updated dependencies in package.json | Count: ${updated.length} | File: package.json | Status: saved`);\n }\n\n } catch (error: any) {\n logger.warn(`UPDATES_INTER_PROJECT_FAILED: Failed to update inter-project dependencies | Error: ${error.message} | Impact: Dependencies not updated`);\n }\n\n return { hasChanges, updated };\n};\n\n/**\n * Execute the updates command\n */\nexport const execute = async (runConfig: Config): Promise<string> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n // Check if this is inter-project mode\n const interProjectMode = runConfig.updates?.interProject || false;\n\n if (interProjectMode) {\n // Inter-project dependency update mode\n const scope = runConfig.updates?.scope;\n\n if (!scope) {\n throw new Error('Scope parameter is required for inter-project updates. Usage: kodrdriv updates --inter-project <scope>');\n }\n\n if (!scope.startsWith('@')) {\n throw new Error(`Invalid scope \"${scope}\". Scope must start with @ (e.g., \"@fjell\")`);\n }\n\n logger.info(`UPDATES_INTER_PROJECT_STARTING: Updating inter-project dependencies | Scope: ${scope} | Type: inter-project | Purpose: Sync dependency versions`);\n\n const result = await updateInterProjectDependencies(process.cwd(), scope, isDryRun, logger);\n\n if (result.hasChanges && !isDryRun) {\n logger.info('UPDATES_NPM_INSTALL: Running npm install to update lock file | Command: npm install | Purpose: Synchronize package-lock.json with changes');\n try {\n await run('npm install');\n logger.info('UPDATES_LOCK_FILE_UPDATED: Lock file updated successfully | File: package-lock.json | Status: synchronized');\n } catch (error: any) {\n logger.error(`UPDATES_NPM_INSTALL_FAILED: Failed to run npm install | Error: ${error.message} | Impact: Lock file not updated`);\n throw new Error(`Failed to update lock file: ${error.message}`);\n }\n }\n\n if (result.updated.length > 0) {\n logger.info(`UPDATES_INTER_PROJECT_COMPLETE: Updated inter-project dependencies | Count: ${result.updated.length} | Status: completed`);\n result.updated.forEach(update => logger.info(`UPDATES_DEP_UPDATED: ${update}`));\n } else {\n logger.info('UPDATES_INTER_PROJECT_NONE: No inter-project dependency updates needed | Status: All dependencies current');\n }\n\n return `Updated ${result.updated.length} inter-project dependencies`;\n }\n\n // Original scope-based npm-check-updates mode\n const scope = runConfig.updates?.scope || runConfig.tree?.packageArgument;\n\n if (!scope) {\n throw new Error('Scope parameter is required. Usage: kodrdriv updates <scope> or kodrdriv updates --inter-project <scope>');\n }\n\n // Validate that scope looks like a valid npm scope (starts with @)\n if (!scope.startsWith('@')) {\n throw new Error(`Invalid scope \"${scope}\". Scope must start with @ (e.g., \"@fjell\")`);\n }\n\n logger.info(`UPDATES_NCU_STARTING: Running npm-check-updates for scope | Scope: ${scope} | Tool: npm-check-updates | Purpose: Find outdated dependencies`);\n\n // Build the npm-check-updates command\n const ncuCommand = `npx npm-check-updates '/${scope.replace('@', '^@')}//' -u`;\n\n logger.info(`UPDATES_NCU_EXECUTING: Executing npm-check-updates command | Command: ${ncuCommand} | Scope: ${scope}`);\n\n try {\n if (isDryRun) {\n logger.info(`Would run: ${ncuCommand}`);\n logger.info('Would run: npm install');\n return `Would update dependencies matching ${scope} scope`;\n }\n\n // Execute npm-check-updates\n const result = await run(ncuCommand);\n\n if (result.stdout) {\n logger.info('UPDATES_NCU_OUTPUT: npm-check-updates output | Status: completed');\n result.stdout.split('\\n').forEach(line => {\n if (line.trim()) {\n logger.info(` ${line}`);\n }\n });\n }\n\n if (result.stderr) {\n logger.info('UPDATES_NCU_WARNINGS: npm-check-updates produced warnings | Type: warnings');\n result.stderr.split('\\n').forEach(line => {\n if (line.trim()) {\n logger.info(` ${line}`);\n }\n });\n }\n\n // Check if package.json was actually modified\n const hasUpdates = result.stdout && !result.stdout.includes('All dependencies match the latest package versions');\n\n if (hasUpdates) {\n logger.info('UPDATES_NCU_INSTALL: Running npm install after ncu updates | Command: npm install | Purpose: Update lock file with new versions');\n try {\n const installResult = await run('npm install');\n if (installResult.stdout) {\n logger.verbose('npm install output:');\n installResult.stdout.split('\\n').forEach(line => {\n if (line.trim()) {\n logger.verbose(` ${line}`);\n }\n });\n }\n logger.info('UPDATES_NCU_LOCK_UPDATED: Lock file updated successfully after ncu | File: package-lock.json | Status: synchronized');\n } catch (installError: any) {\n logger.error(`UPDATES_NCU_INSTALL_FAILED: Failed to run npm install after ncu | Error: ${installError.message} | Impact: Lock file not synchronized`);\n throw new Error(`Failed to update lock file after dependency updates: ${installError.message}`);\n }\n }\n\n logger.info(`UPDATES_NCU_SUCCESS: Successfully updated dependencies | Scope: ${scope} | Status: completed | Files: package.json, package-lock.json`);\n return `Updated dependencies matching ${scope} scope`;\n\n } catch (error: any) {\n logger.error(`UPDATES_NCU_FAILED: Failed to run npm-check-updates | Scope: ${scope} | Error: ${error.message} | Impact: Dependencies not updated`);\n throw new Error(`Failed to update dependencies: ${error.message}`);\n }\n};\n","#!/usr/bin/env node\n/**\n * Tree command - Central dependency analysis and tree traversal for kodrdriv\n *\n * This command supports two execution modes:\n * 1. Custom command mode: `kodrdriv tree --cmd \"npm install\"`\n * 2. Built-in command mode: `kodrdriv tree commit`, `kodrdriv tree publish`, etc.\n *\n * Built-in commands shell out to separate kodrdriv processes to preserve\n * individual project configurations while leveraging centralized dependency analysis.\n *\n * Supported built-in commands: commit, release, publish, link, unlink, development, branches, checkout, precommit\n *\n * Enhanced logging based on debug/verbose flags:\n *\n * --debug:\n * - Shows all command output (stdout/stderr)\n * - Shows detailed debug messages about dependency levels and execution flow\n * - Shows package-by-package dependency analysis\n * - Shows detailed level start/completion information\n *\n * --verbose:\n * - Shows exactly what's happening without full command output\n * - Shows level-by-level execution progress\n * - Shows package grouping information\n * - Shows basic execution flow\n *\n * No flags:\n * - For commit and publish commands: Shows full output from child processes by default\n * (including AI generation, self-reflection, and agentic interactions)\n * - For other commands: Shows basic progress with numeric representation ([1/5] Package: Running...)\n * - Shows level-by-level execution summaries\n * - Shows completion status for each package and level\n */\nimport path from 'path';\nimport fs from 'fs/promises';\nimport child_process, { exec } from 'child_process';\nimport { run, runSecure, safeJsonParse, validatePackageJson, getGitStatusSummary, getGloballyLinkedPackages, getLinkedDependencies, getLinkCompatibilityProblems } from '@eldrforge/git-tools';\nimport util from 'util';\nimport { getLogger, Config, getOutputPath, DEFAULT_OUTPUT_DIRECTORY, runGitWithLock, isInGitRepository } from '@eldrforge/core';\nimport { createStorage } from '@eldrforge/shared';\nimport * as Commit from '@eldrforge/commands-git';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport * as Updates from './updates';\nimport type {\n PackageInfo,\n DependencyGraph\n} from '@eldrforge/tree-core';\nimport {\n scanForPackageJsonFiles,\n parsePackageJson,\n buildDependencyGraph,\n topologicalSort,\n shouldExclude\n} from '@eldrforge/tree-core';\nimport { optimizePrecommitCommand, recordTestRun, PerformanceTimer } from '@eldrforge/commands-git';\n\n// Track published versions during tree publish\ninterface PublishedVersion {\n packageName: string;\n version: string;\n publishTime: Date;\n}\n\n// Tree execution context for persistence\ninterface TreeExecutionContext {\n command: string;\n originalConfig: Config;\n publishedVersions: PublishedVersion[];\n completedPackages: string[];\n buildOrder: string[];\n startTime: Date;\n lastUpdateTime: Date;\n}\n\n// Global state to track published versions during tree execution - protected by mutex\nlet publishedVersions: PublishedVersion[] = [];\nlet executionContext: TreeExecutionContext | null = null;\n\n// Function to reset global state (for testing)\nexport const __resetGlobalState = () => {\n publishedVersions = [];\n executionContext = null;\n};\n\n// Import shared mutex implementation from tree-execution\nimport { SimpleMutex } from '@eldrforge/tree-execution';\n\nconst globalStateMutex = new SimpleMutex();\n\n// Update inter-project dependencies in package.json based on published versions\nconst updateInterProjectDependencies = async (\n packageDir: string,\n publishedVersions: PublishedVersion[],\n allPackageNames: Set<string>,\n packageLogger: any,\n isDryRun: boolean\n): Promise<boolean> => {\n const storage = createStorage();\n const packageJsonPath = path.join(packageDir, 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n packageLogger.verbose('No package.json found, skipping dependency updates');\n return false;\n }\n\n let hasChanges = false;\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n const sectionsToUpdate = ['dependencies', 'devDependencies', 'peerDependencies'];\n\n for (const publishedVersion of publishedVersions) {\n const { packageName, version } = publishedVersion;\n\n // Only update if this is an inter-project dependency (exists in our build tree)\n if (!allPackageNames.has(packageName)) {\n continue;\n }\n\n // Skip prerelease versions (e.g., 1.0.0-beta.1, 2.0.0-alpha.3)\n // Prerelease versions should not be automatically propagated to consumers\n if (version.includes('-')) {\n packageLogger.verbose(`Skipping prerelease version ${packageName}@${version} - not updating dependencies`);\n continue;\n }\n\n // Update the dependency in all relevant sections\n for (const section of sectionsToUpdate) {\n const deps = packageJson[section];\n if (deps && deps[packageName]) {\n const oldVersion = deps[packageName];\n const newVersion = `^${version}`;\n\n if (oldVersion !== newVersion) {\n if (isDryRun) {\n packageLogger.info(`Would update ${section}.${packageName}: ${oldVersion} → ${newVersion}`);\n } else {\n packageLogger.info(`Updating ${section}.${packageName}: ${oldVersion} → ${newVersion}`);\n deps[packageName] = newVersion;\n }\n hasChanges = true;\n }\n }\n }\n }\n\n if (hasChanges && !isDryRun) {\n // Write updated package.json\n await storage.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n packageLogger.info('Inter-project dependencies updated successfully');\n }\n\n } catch (error: any) {\n packageLogger.warn(`Failed to update inter-project dependencies: ${error.message}`);\n return false;\n }\n\n return hasChanges;\n};\n\n// Detect scoped dependencies from package.json and run updates for them\nconst updateScopedDependencies = async (\n packageDir: string,\n packageLogger: any,\n isDryRun: boolean,\n runConfig: Config\n): Promise<boolean> => {\n const storage = createStorage();\n const packageJsonPath = path.join(packageDir, 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n packageLogger.verbose('No package.json found, skipping scoped dependency updates');\n return false;\n }\n\n try {\n // Read the package.json before updates\n const beforeContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(beforeContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n // Determine which scopes to update\n let scopesToUpdate: Set<string>;\n\n // Check if scopedDependencyUpdates is configured\n const configuredScopes = runConfig.publish?.scopedDependencyUpdates;\n\n if (configuredScopes !== undefined) {\n // scopedDependencyUpdates is explicitly configured\n if (configuredScopes.length > 0) {\n // Use configured scopes\n scopesToUpdate = new Set(configuredScopes);\n packageLogger.verbose(`Using configured scopes: ${Array.from(scopesToUpdate).join(', ')}`);\n } else {\n // Empty array means explicitly disabled\n packageLogger.verbose('Scoped dependency updates explicitly disabled');\n return false;\n }\n } else {\n // Not configured - use default behavior (package's own scope)\n scopesToUpdate = new Set<string>();\n\n if (packageJson.name && packageJson.name.startsWith('@')) {\n const packageScope = packageJson.name.split('/')[0]; // e.g., \"@fjell/core\" -> \"@fjell\"\n scopesToUpdate.add(packageScope);\n packageLogger.verbose(`No scopes configured, defaulting to package's own scope: ${packageScope}`);\n } else {\n packageLogger.verbose('Package is not scoped and no scopes configured, skipping scoped dependency updates');\n return false;\n }\n }\n\n if (scopesToUpdate.size === 0) {\n packageLogger.verbose('No scopes to update, skipping updates');\n return false;\n }\n\n // Run updates for each scope\n for (const scope of scopesToUpdate) {\n packageLogger.info(`🔄 Checking for ${scope} dependency updates before publish...`);\n\n try {\n // Create a config for the updates command with the scope\n const updatesConfig: Config = {\n ...runConfig,\n dryRun: isDryRun,\n updates: {\n scope: scope\n }\n };\n\n await Updates.execute(updatesConfig);\n } catch (error: any) {\n // Don't fail the publish if updates fails, just warn\n packageLogger.warn(`Failed to update ${scope} dependencies: ${error.message}`);\n }\n }\n\n // Check if package.json was modified\n const afterContent = await storage.readFile(packageJsonPath, 'utf-8');\n const hasChanges = beforeContent !== afterContent;\n\n if (hasChanges) {\n packageLogger.info('✅ Scoped dependencies updated successfully');\n } else {\n packageLogger.info('No scoped dependency updates needed');\n }\n\n return hasChanges;\n } catch (error: any) {\n packageLogger.warn(`Failed to detect scoped dependencies: ${error.message}`);\n return false;\n }\n};\n\n// Get the context file path\nconst getContextFilePath = (outputDirectory?: string): string => {\n const outputDir = outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n return getOutputPath(outputDir, '.kodrdriv-context');\n};\n\n// Save execution context to file\nconst saveExecutionContext = async (context: TreeExecutionContext, outputDirectory?: string): Promise<void> => {\n const storage = createStorage(); // Silent storage for context operations\n const contextFilePath = getContextFilePath(outputDirectory);\n\n try {\n // Ensure output directory exists\n await storage.ensureDirectory(path.dirname(contextFilePath));\n\n // Save context with JSON serialization that handles dates\n const contextData = {\n ...context,\n startTime: context.startTime.toISOString(),\n lastUpdateTime: context.lastUpdateTime.toISOString(),\n publishedVersions: context.publishedVersions.map(v => ({\n ...v,\n publishTime: v.publishTime.toISOString()\n }))\n };\n\n await storage.writeFile(contextFilePath, JSON.stringify(contextData, null, 2), 'utf-8');\n } catch (error: any) {\n // Don't fail the entire operation if context saving fails\n const logger = getLogger();\n logger.warn(`Warning: Failed to save execution context: ${error.message}`);\n }\n};\n\n// Load execution context from file\nconst loadExecutionContext = async (outputDirectory?: string): Promise<TreeExecutionContext | null> => {\n const storage = createStorage(); // Silent storage for context operations\n const contextFilePath = getContextFilePath(outputDirectory);\n\n try {\n if (!await storage.exists(contextFilePath)) {\n return null;\n }\n\n const contextContent = await storage.readFile(contextFilePath, 'utf-8');\n const contextData = safeJsonParse(contextContent, contextFilePath);\n\n // Restore dates from ISO strings\n return {\n ...contextData,\n startTime: new Date(contextData.startTime),\n lastUpdateTime: new Date(contextData.lastUpdateTime),\n publishedVersions: contextData.publishedVersions.map((v: any) => ({\n ...v,\n publishTime: new Date(v.publishTime)\n }))\n };\n } catch (error: any) {\n const logger = getLogger();\n logger.warn(`Warning: Failed to load execution context: ${error.message}`);\n return null;\n }\n};\n\n// Clean up context file\nconst cleanupContext = async (outputDirectory?: string): Promise<void> => {\n const storage = createStorage(); // Silent storage for context operations\n const contextFilePath = getContextFilePath(outputDirectory);\n\n try {\n if (await storage.exists(contextFilePath)) {\n await storage.deleteFile(contextFilePath);\n }\n } catch (error: any) {\n // Don't fail if cleanup fails\n const logger = getLogger();\n logger.warn(`Warning: Failed to cleanup execution context: ${error.message}`);\n }\n};\n\n// Helper function to promote a package to completed status in the context\nconst promotePackageToCompleted = async (\n packageName: string,\n outputDirectory?: string\n): Promise<void> => {\n const storage = createStorage();\n const contextFilePath = getContextFilePath(outputDirectory);\n\n try {\n if (!await storage.exists(contextFilePath)) {\n return;\n }\n\n const contextContent = await storage.readFile(contextFilePath, 'utf-8');\n const contextData = safeJsonParse(contextContent, contextFilePath);\n\n // Restore dates from ISO strings\n const context: TreeExecutionContext = {\n ...contextData,\n startTime: new Date(contextData.startTime),\n lastUpdateTime: new Date(contextData.lastUpdateTime),\n publishedVersions: contextData.publishedVersions.map((v: any) => ({\n ...v,\n publishTime: new Date(v.publishTime)\n }))\n };\n\n // Add package to completed list if not already there\n if (!context.completedPackages.includes(packageName)) {\n context.completedPackages.push(packageName);\n context.lastUpdateTime = new Date();\n await saveExecutionContext(context, outputDirectory);\n }\n } catch (error: any) {\n const logger = getLogger();\n logger.warn(`Warning: Failed to promote package to completed: ${error.message}`);\n }\n};\n\n// Helper function to validate that all packages have the required scripts\nconst validateScripts = async (\n packages: Map<string, PackageInfo>,\n scripts: string[]\n): Promise<{ valid: boolean; missingScripts: Map<string, string[]> }> => {\n const logger = getLogger();\n const missingScripts = new Map<string, string[]>();\n const storage = createStorage();\n\n logger.debug(`Validating scripts: ${scripts.join(', ')}`);\n\n for (const [packageName, packageInfo] of packages) {\n const packageJsonPath = path.join(packageInfo.path, 'package.json');\n const missingForPackage: string[] = [];\n\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = safeJsonParse(packageJsonContent, packageJsonPath);\n const validated = validatePackageJson(packageJson, packageJsonPath);\n\n // Check if each required script exists\n for (const script of scripts) {\n if (!validated.scripts || !validated.scripts[script]) {\n missingForPackage.push(script);\n }\n }\n\n if (missingForPackage.length > 0) {\n missingScripts.set(packageName, missingForPackage);\n logger.debug(`Package ${packageName} missing scripts: ${missingForPackage.join(', ')}`);\n }\n } catch (error: any) {\n logger.debug(`Error reading package.json for ${packageName}: ${error.message}`);\n // If we can't read the package.json, assume all scripts are missing\n missingScripts.set(packageName, scripts);\n }\n }\n\n const valid = missingScripts.size === 0;\n\n if (valid) {\n logger.info(`✅ All packages have the required scripts: ${scripts.join(', ')}`);\n } else {\n logger.error(`❌ Script validation failed. Missing scripts:`);\n for (const [packageName, missing] of missingScripts) {\n logger.error(` ${packageName}: ${missing.join(', ')}`);\n }\n }\n\n return { valid, missingScripts };\n};\n\n// Extract published version from git tags after successful publish\n// After kodrdriv publish, the release version is captured in the git tag,\n// while package.json contains the next dev version\nconst extractPublishedVersion = async (\n packageDir: string,\n packageLogger: any\n): Promise<PublishedVersion | null> => {\n const storage = createStorage();\n const packageJsonPath = path.join(packageDir, 'package.json');\n\n try {\n // Get package name from package.json\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n // Get the most recently created tag (by creation date, not version number)\n // This ensures we get the tag that was just created by the publish, not an older tag with a higher version\n const { stdout: tagOutput } = await run('git tag --sort=-creatordate', { cwd: packageDir });\n const tags = tagOutput.trim().split('\\n').filter(Boolean);\n\n if (tags.length === 0) {\n packageLogger.warn('No git tags found after publish');\n return null;\n }\n\n // Get the most recently created tag (first in the list)\n const latestTag = tags[0];\n\n // Extract version from tag, handling various formats:\n // - v1.2.3 -> 1.2.3\n // - working/v1.2.3 -> 1.2.3\n // - main/v1.2.3 -> 1.2.3\n let version = latestTag;\n\n // If tag contains a slash (branch prefix), extract everything after it\n if (version.includes('/')) {\n version = version.split('/').pop() || version;\n }\n\n // Remove 'v' prefix if present\n if (version.startsWith('v')) {\n version = version.substring(1);\n }\n\n packageLogger.verbose(`Extracted published version from tag: ${latestTag} -> ${version}`);\n\n return {\n packageName: packageJson.name,\n version: version,\n publishTime: new Date()\n };\n } catch (error: any) {\n packageLogger.warn(`Failed to extract published version: ${error.message}`);\n return null;\n }\n};\n\n// Enhanced run function that can show output based on log level\nconst runWithLogging = async (\n command: string,\n packageLogger: any,\n options: child_process.ExecOptions = {},\n showOutput: 'none' | 'minimal' | 'full' = 'none',\n logFilePath?: string\n): Promise<{ stdout: string; stderr: string }> => {\n const execPromise = util.promisify(exec);\n\n // Ensure encoding is set to 'utf8' to get string output instead of Buffer\n const execOptions = { encoding: 'utf8' as const, ...options };\n\n if (showOutput === 'full') {\n packageLogger.debug(`Executing command: ${command}`);\n // Use info level to show on console in debug mode\n packageLogger.info(`🔧 Running: ${command}`);\n } else if (showOutput === 'minimal') {\n packageLogger.verbose(`Running: ${command}`);\n }\n\n // Helper to write to log file\n const writeToLogFile = async (content: string) => {\n if (!logFilePath) return;\n try {\n const logDir = path.dirname(logFilePath);\n await fs.mkdir(logDir, { recursive: true });\n await fs.appendFile(logFilePath, content + '\\n', 'utf-8');\n } catch (err: any) {\n packageLogger.warn(`Failed to write to log file ${logFilePath}: ${err.message}`);\n }\n };\n\n // Write command to log file\n if (logFilePath) {\n const timestamp = new Date().toISOString();\n await writeToLogFile(`[${timestamp}] Executing: ${command}\\n`);\n }\n\n try {\n const result = await execPromise(command, execOptions);\n\n if (showOutput === 'full') {\n const stdout = String(result.stdout);\n const stderr = String(result.stderr);\n\n if (stdout.trim()) {\n packageLogger.debug('STDOUT:');\n packageLogger.debug(stdout);\n // Show on console using info level for immediate feedback\n packageLogger.info(`📤 STDOUT:`);\n stdout.split('\\n').forEach((line: string) => {\n if (line.trim()) packageLogger.info(`${line}`);\n });\n }\n if (stderr.trim()) {\n packageLogger.debug('STDERR:');\n packageLogger.debug(stderr);\n // Show on console using info level for immediate feedback\n packageLogger.info(`⚠️ STDERR:`);\n stderr.split('\\n').forEach((line: string) => {\n if (line.trim()) packageLogger.info(`${line}`);\n });\n }\n }\n\n // Write output to log file\n if (logFilePath) {\n const stdout = String(result.stdout);\n const stderr = String(result.stderr);\n if (stdout.trim()) {\n await writeToLogFile(`\\n=== STDOUT ===\\n${stdout}`);\n }\n if (stderr.trim()) {\n await writeToLogFile(`\\n=== STDERR ===\\n${stderr}`);\n }\n await writeToLogFile(`\\n[${new Date().toISOString()}] Command completed successfully\\n`);\n }\n\n // Ensure result is properly typed as strings\n return {\n stdout: String(result.stdout),\n stderr: String(result.stderr)\n };\n } catch (error: any) {\n // Always show error message\n packageLogger.error(`Command failed: ${command}`);\n\n // Always show stderr on failure (contains important error details like coverage failures)\n if (error.stderr && error.stderr.trim()) {\n packageLogger.error(`❌ STDERR:`);\n error.stderr.split('\\n').forEach((line: string) => {\n if (line.trim()) packageLogger.error(`${line}`);\n });\n }\n\n // Show stdout on failure if available (may contain error context)\n if (error.stdout && error.stdout.trim() && (showOutput === 'full' || showOutput === 'minimal')) {\n packageLogger.info(`📤 STDOUT:`);\n error.stdout.split('\\n').forEach((line: string) => {\n if (line.trim()) packageLogger.info(`${line}`);\n });\n }\n\n // Show full output in debug/verbose mode\n if (showOutput === 'full' || showOutput === 'minimal') {\n if (error.stdout && error.stdout.trim() && showOutput === 'full') {\n packageLogger.debug('STDOUT:');\n packageLogger.debug(error.stdout);\n }\n if (error.stderr && error.stderr.trim() && showOutput === 'full') {\n packageLogger.debug('STDERR:');\n packageLogger.debug(error.stderr);\n }\n }\n\n // Write error output to log file\n if (logFilePath) {\n await writeToLogFile(`\\n[${new Date().toISOString()}] Command failed: ${error.message}`);\n if (error.stdout) {\n await writeToLogFile(`\\n=== STDOUT ===\\n${error.stdout}`);\n }\n if (error.stderr) {\n await writeToLogFile(`\\n=== STDERR ===\\n${error.stderr}`);\n }\n if (error.stack) {\n await writeToLogFile(`\\n=== STACK TRACE ===\\n${error.stack}`);\n }\n }\n\n throw error;\n }\n};\n\n// Create a package-scoped logger that prefixes all messages\nconst createPackageLogger = (packageName: string, sequenceNumber: number, totalCount: number, isDryRun: boolean = false) => {\n const baseLogger = getLogger();\n const prefix = `[${sequenceNumber}/${totalCount}] ${packageName}:`;\n const dryRunPrefix = isDryRun ? 'DRY RUN: ' : '';\n\n return {\n info: (message: string, ...args: any[]) => baseLogger.info(`${dryRunPrefix}${prefix} ${message}`, ...args),\n warn: (message: string, ...args: any[]) => baseLogger.warn(`${dryRunPrefix}${prefix} ${message}`, ...args),\n error: (message: string, ...args: any[]) => baseLogger.error(`${dryRunPrefix}${prefix} ${message}`, ...args),\n debug: (message: string, ...args: any[]) => baseLogger.debug(`${dryRunPrefix}${prefix} ${message}`, ...args),\n verbose: (message: string, ...args: any[]) => baseLogger.verbose(`${dryRunPrefix}${prefix} ${message}`, ...args),\n silly: (message: string, ...args: any[]) => baseLogger.silly(`${dryRunPrefix}${prefix} ${message}`, ...args),\n };\n};\n\n// Helper function to format subproject error output\nconst formatSubprojectError = (packageName: string, error: any, _packageInfo?: PackageInfo, _position?: number, _total?: number): string => {\n const lines: string[] = [];\n\n lines.push(`❌ Command failed in package ${packageName}:`);\n\n // Format the main error message with indentation\n if (error.message) {\n const indentedMessage = error.message\n .split('\\n')\n .map((line: string) => ` ${line}`)\n .join('\\n');\n lines.push(indentedMessage);\n }\n\n // If there's stderr output, show it indented as well\n if (error.stderr && error.stderr.trim()) {\n lines.push(' STDERR:');\n const indentedStderr = error.stderr\n .split('\\n')\n .filter((line: string) => line.trim())\n .map((line: string) => ` ${line}`)\n .join('\\n');\n lines.push(indentedStderr);\n }\n\n // If there's stdout output, show it indented as well\n if (error.stdout && error.stdout.trim()) {\n lines.push(' STDOUT:');\n const indentedStdout = error.stdout\n .split('\\n')\n .filter((line: string) => line.trim())\n .map((line: string) => ` ${line}`)\n .join('\\n');\n lines.push(indentedStdout);\n }\n\n\n return lines.join('\\n');\n};\n\n\n// Note: PackageInfo, DependencyGraph, scanForPackageJsonFiles, parsePackageJson,\n// buildDependencyGraph, and topologicalSort are now imported from ../util/dependencyGraph\n\n\n\n// Execute a single package and return execution result\nexport const executePackage = async (\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 = false\n): Promise<{ success: boolean; error?: any; isTimeoutError?: boolean; skippedNoChanges?: boolean; logFile?: string }> => {\n const packageLogger = createPackageLogger(packageName, index + 1, total, isDryRun);\n const packageDir = packageInfo.path;\n const logger = getLogger();\n\n // Create log file path for publish commands\n let logFilePath: string | undefined;\n if (isBuiltInCommand && commandToRun.includes('publish')) {\n const outputDir = runConfig.outputDirectory || 'output/kodrdriv';\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').replace('T', '_').split('.')[0];\n const commandName = commandToRun.split(' ')[1]?.split(' ')[0] || 'command';\n logFilePath = path.join(packageDir, outputDir, `${commandName}_${timestamp}.log`);\n }\n\n // Determine output level based on flags\n // For publish and commit commands, default to full output to show AI progress and other details\n // For other commands, require --verbose or --debug for output\n const isPublishCommand = isBuiltInCommand && commandToRun.includes('publish');\n const isCommitCommand = isBuiltInCommand && commandToRun.includes('commit');\n let showOutput: 'none' | 'minimal' | 'full' = (isPublishCommand || isCommitCommand) ? 'full' : 'none';\n if (runConfig.debug) {\n showOutput = 'full';\n } else if (runConfig.verbose) {\n showOutput = 'minimal';\n }\n\n // Show package start info - always visible for progress tracking\n if (runConfig.debug) {\n packageLogger.debug('MULTI_PROJECT_START: Starting package execution | Package: %s | Index: %d/%d | Path: %s | Command: %s | Context: tree execution',\n packageName, index + 1, total, packageDir, commandToRun);\n packageLogger.debug('MULTI_PROJECT_CONTEXT: Execution details | Directory: %s | Built-in Command: %s | Dry Run: %s | Output Level: %s',\n packageDir, isBuiltInCommand, isDryRun, showOutput);\n\n // Show dependencies if available\n if (packageInfo.dependencies && Array.isArray(packageInfo.dependencies) && packageInfo.dependencies.length > 0) {\n packageLogger.debug('MULTI_PROJECT_DEPS: Package dependencies | Package: %s | Dependencies: [%s]',\n packageName, packageInfo.dependencies.join(', '));\n }\n } else if (runConfig.verbose) {\n packageLogger.verbose(`Starting execution in ${packageDir}`);\n } else {\n // Basic progress info even without flags\n logger.info(`[${index + 1}/${total}] ${packageName}: Running ${commandToRun}...`);\n }\n\n // Track if publish was skipped due to no changes\n let publishWasSkipped: boolean = false;\n\n // Track execution timing\n const executionTimer = PerformanceTimer.start(packageLogger, `Package ${packageName} execution`);\n let executionDuration: number | undefined;\n\n try {\n if (isDryRun && !isBuiltInCommand) {\n // Handle inter-project dependency updates for publish commands in dry run mode\n if (isBuiltInCommand && commandToRun.includes('publish') && publishedVersions.length > 0) {\n let mutexLocked = false;\n try {\n await globalStateMutex.lock();\n mutexLocked = true;\n packageLogger.info('Would check for inter-project dependency updates before publish...');\n const versionSnapshot = [...publishedVersions]; // Create safe copy\n globalStateMutex.unlock();\n mutexLocked = false;\n await updateInterProjectDependencies(packageDir, versionSnapshot, allPackageNames, packageLogger, isDryRun);\n } catch (error) {\n if (mutexLocked) {\n globalStateMutex.unlock();\n }\n throw error;\n }\n }\n\n // Use main logger for the specific message tests expect\n logger.info(`DRY RUN: Would execute: ${commandToRun}`);\n if (runConfig.debug || runConfig.verbose) {\n packageLogger.info(`In directory: ${packageDir}`);\n }\n } else {\n // Change to the package directory and run the command\n const originalCwd = process.cwd();\n try {\n // Validate package directory exists before changing to it\n try {\n await fs.access(packageDir);\n const stat = await fs.stat(packageDir);\n if (!stat.isDirectory()) {\n throw new Error(`Path is not a directory: ${packageDir}`);\n }\n } catch (accessError: any) {\n throw new Error(`Cannot access package directory: ${packageDir} - ${accessError.message}`);\n }\n\n process.chdir(packageDir);\n if (runConfig.debug) {\n packageLogger.debug(`Changed to directory: ${packageDir}`);\n }\n\n // Handle dependency updates for publish commands before executing (skip during dry run)\n // Wrap in git lock to prevent parallel packages from conflicting with npm install and git operations\n if (!isDryRun && isBuiltInCommand && commandToRun.includes('publish')) {\n await runGitWithLock(packageDir, async () => {\n let hasAnyUpdates = false;\n\n // First, update all scoped dependencies from npm registry\n const hasScopedUpdates = await updateScopedDependencies(packageDir, packageLogger, isDryRun, runConfig);\n hasAnyUpdates = hasAnyUpdates || hasScopedUpdates;\n\n // Then update inter-project dependencies based on previously published packages\n if (publishedVersions.length > 0) {\n packageLogger.info('Updating inter-project dependencies based on previously published packages...');\n const hasInterProjectUpdates = await updateInterProjectDependencies(packageDir, publishedVersions, allPackageNames, packageLogger, isDryRun);\n hasAnyUpdates = hasAnyUpdates || hasInterProjectUpdates;\n }\n\n // If either type of update occurred, commit the changes\n if (hasAnyUpdates) {\n // Commit the dependency updates using kodrdriv commit\n packageLogger.info('Committing dependency updates...');\n packageLogger.info('⏱️ This step may take a few minutes as it generates a commit message using AI...');\n\n // Add timeout wrapper around commit execution\n const commitTimeoutMs = 300000; // 5 minutes\n const commitPromise = Commit.commit({...runConfig, dryRun: false});\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error(`Commit operation timed out after ${commitTimeoutMs/1000} seconds`)), commitTimeoutMs);\n });\n\n // Add progress indicator\n let progressInterval: NodeJS.Timeout | null = null;\n try {\n // Start progress indicator\n progressInterval = setInterval(() => {\n packageLogger.info('⏳ Still generating commit message... (this can take 1-3 minutes)');\n }, 30000); // Every 30 seconds\n\n await Promise.race([commitPromise, timeoutPromise]);\n packageLogger.info('✅ Dependency updates committed successfully');\n } catch (commitError: any) {\n if (commitError.message.includes('timed out')) {\n packageLogger.error(`❌ Commit operation timed out after ${commitTimeoutMs/1000} seconds`);\n packageLogger.error('This usually indicates an issue with the AI service or very large changes');\n packageLogger.error('You may need to manually commit the dependency updates');\n } else {\n packageLogger.warn(`Failed to commit dependency updates: ${commitError.message}`);\n }\n // Continue with publish anyway - the updates are still in place\n } finally {\n if (progressInterval) {\n clearInterval(progressInterval);\n }\n }\n }\n }, `${packageName}: dependency updates`);\n }\n\n // Optimize precommit commands for custom commands (not built-in)\n let effectiveCommandToRun = commandToRun;\n let optimizationInfo: { skipped: { clean: boolean; test: boolean }; reasons: { clean?: string; test?: string } } | null = null;\n\n if (!isBuiltInCommand && !isDryRun) {\n const isPrecommitCommand = commandToRun.includes('precommit') || commandToRun.includes('pre-commit');\n if (isPrecommitCommand) {\n try {\n const optimization = await optimizePrecommitCommand(packageDir, commandToRun);\n effectiveCommandToRun = optimization.optimizedCommand;\n optimizationInfo = { skipped: optimization.skipped, reasons: optimization.reasons };\n\n if (optimization.skipped.clean || optimization.skipped.test) {\n const skippedParts: string[] = [];\n if (optimization.skipped.clean) {\n skippedParts.push(`clean (${optimization.reasons.clean})`);\n }\n if (optimization.skipped.test) {\n skippedParts.push(`test (${optimization.reasons.test})`);\n }\n packageLogger.info(`⚡ Optimized: Skipped ${skippedParts.join(', ')}`);\n if (runConfig.verbose || runConfig.debug) {\n packageLogger.info(` Original: ${commandToRun}`);\n packageLogger.info(` Optimized: ${effectiveCommandToRun}`);\n }\n }\n } catch (error: any) {\n // If optimization fails, fall back to original command\n logger.debug(`Precommit optimization failed for ${packageName}: ${error.message}`);\n }\n }\n }\n\n if (runConfig.debug || runConfig.verbose) {\n if (isBuiltInCommand) {\n packageLogger.info(`Executing built-in command: ${commandToRun}`);\n } else {\n packageLogger.info(`Executing command: ${effectiveCommandToRun}`);\n }\n }\n\n // For built-in commands, shell out to a separate kodrdriv process\n // This preserves individual project configurations\n if (isBuiltInCommand) {\n // Extract the command name from \"kodrdriv <command> [args...]\"\n // Split by space and take the second element (after \"kodrdriv\")\n const commandParts = commandToRun.replace(/^kodrdriv\\s+/, '').split(/\\s+/);\n const builtInCommandName = commandParts[0];\n if (runConfig.debug) {\n packageLogger.debug(`Shelling out to separate kodrdriv process for ${builtInCommandName} command`);\n }\n\n // Add progress indication for publish commands\n if (builtInCommandName === 'publish') {\n packageLogger.info('🚀 Starting publish process...');\n packageLogger.info('⏱️ This may take several minutes (AI processing, PR creation, etc.)');\n }\n\n // Ensure dry-run propagates to subprocess even during overall dry-run mode\n let effectiveCommand = runConfig.dryRun && !commandToRun.includes('--dry-run')\n ? `${commandToRun} --dry-run`\n : commandToRun;\n\n // For commit commands, ensure --sendit is used to avoid interactive prompts\n // This prevents hanging when running via tree command\n if (builtInCommandName === 'commit' && !effectiveCommand.includes('--sendit') && !runConfig.dryRun) {\n effectiveCommand = `${effectiveCommand} --sendit`;\n packageLogger.info('💡 Auto-adding --sendit flag to avoid interactive prompts in tree mode');\n }\n\n // Set timeout based on command type\n let commandTimeoutMs: number;\n if (builtInCommandName === 'publish') {\n commandTimeoutMs = 1800000; // 30 minutes for publish commands\n packageLogger.info(`⏰ Setting timeout of ${commandTimeoutMs/60000} minutes for publish command`);\n } else if (builtInCommandName === 'commit') {\n commandTimeoutMs = 600000; // 10 minutes for commit commands (AI processing can take time)\n packageLogger.info(`⏰ Setting timeout of ${commandTimeoutMs/60000} minutes for commit command`);\n } else {\n commandTimeoutMs = 300000; // 5 minutes default for other commands\n }\n\n const commandPromise = runWithLogging(effectiveCommand, packageLogger, {}, showOutput, logFilePath);\n const commandTimeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error(`Command timed out after ${commandTimeoutMs/60000} minutes`)), commandTimeoutMs);\n });\n\n try {\n const startTime = Date.now();\n const { stdout, stderr } = await Promise.race([commandPromise, commandTimeoutPromise]);\n executionDuration = Date.now() - startTime;\n // Detect explicit skip marker from publish to avoid propagating versions\n // Check both stdout (where we now write it) and stderr (winston logger output, for backward compat)\n if (builtInCommandName === 'publish' &&\n ((stdout && stdout.includes('KODRDRIV_PUBLISH_SKIPPED')) ||\n (stderr && stderr.includes('KODRDRIV_PUBLISH_SKIPPED')))) {\n packageLogger.info('Publish skipped for this package; will not record or propagate a version.');\n publishWasSkipped = true;\n }\n } catch (error: any) {\n if (error.message.includes('timed out')) {\n packageLogger.error(`❌ ${builtInCommandName} command timed out after ${commandTimeoutMs/60000} minutes`);\n packageLogger.error('This usually indicates the command is stuck waiting for user input or an external service');\n throw error;\n }\n throw error;\n }\n } else {\n // For custom commands, use the existing logic\n const startTime = Date.now();\n await runWithLogging(effectiveCommandToRun, packageLogger, {}, showOutput, logFilePath);\n executionDuration = Date.now() - startTime;\n }\n\n // Track published version after successful publish (skip during dry run)\n if (!isDryRun && isBuiltInCommand && commandToRun.includes('publish')) {\n // If publish was skipped, do not record a version\n if (publishWasSkipped) {\n packageLogger.verbose('Skipping version tracking due to earlier skip.');\n } else {\n // Only record a published version if a new tag exists (avoid recording for skipped publishes)\n const publishedVersion = await extractPublishedVersion(packageDir, packageLogger);\n if (publishedVersion) {\n let mutexLocked = false;\n try {\n await globalStateMutex.lock();\n mutexLocked = true;\n publishedVersions.push(publishedVersion);\n packageLogger.info(`Tracked published version: ${publishedVersion.packageName}@${publishedVersion.version}`);\n globalStateMutex.unlock();\n mutexLocked = false;\n } catch (error) {\n if (mutexLocked) {\n globalStateMutex.unlock();\n }\n throw error;\n }\n }\n }\n }\n\n // Record test run if tests were executed (not skipped)\n if (!isDryRun && !isBuiltInCommand && effectiveCommandToRun.includes('test') &&\n (!optimizationInfo || !optimizationInfo.skipped.test)) {\n try {\n await recordTestRun(packageDir);\n } catch (error: any) {\n logger.debug(`Failed to record test run for ${packageName}: ${error.message}`);\n }\n }\n\n // End timing and show duration\n if (executionDuration !== undefined) {\n executionTimer.end(`Package ${packageName} execution`);\n const seconds = (executionDuration / 1000).toFixed(1);\n if (runConfig.debug || runConfig.verbose) {\n packageLogger.info(`⏱️ Execution time: ${seconds}s`);\n } else if (!isPublishCommand && !isCommitCommand) {\n // Show timing in completion message (publish/commit commands have their own completion message)\n logger.info(`[${index + 1}/${total}] ${packageName}: ✅ Completed (${seconds}s)`);\n }\n } else {\n executionTimer.end(`Package ${packageName} execution`);\n if (runConfig.debug || runConfig.verbose) {\n packageLogger.info(`Command completed successfully`);\n } else if (!isPublishCommand && !isCommitCommand) {\n // Basic completion info (publish/commit commands have their own completion message)\n logger.info(`[${index + 1}/${total}] ${packageName}: ✅ Completed`);\n }\n }\n } finally {\n // Safely restore working directory\n try {\n // Validate original directory still exists before changing back\n const fs = await import('fs/promises');\n await fs.access(originalCwd);\n process.chdir(originalCwd);\n if (runConfig.debug) {\n packageLogger.debug(`Restored working directory to: ${originalCwd}`);\n }\n } catch (restoreError: any) {\n // If we can't restore to original directory, at least log the issue\n packageLogger.error(`Failed to restore working directory to ${originalCwd}: ${restoreError.message}`);\n packageLogger.error(`Current working directory is now: ${process.cwd()}`);\n // Don't throw here to avoid masking the original error\n }\n }\n }\n\n // Show completion status (for publish/commit commands, this supplements the timing message above)\n if (runConfig.debug || runConfig.verbose) {\n if (publishWasSkipped) {\n packageLogger.info(`⊘ Skipped (no code changes)`);\n } else {\n packageLogger.info(`✅ Completed successfully`);\n }\n } else if (isPublishCommand || isCommitCommand) {\n // For publish/commit commands, always show completion even without verbose\n // Include timing if available\n const timeStr = executionDuration !== undefined ? ` (${(executionDuration / 1000).toFixed(1)}s)` : '';\n if (publishWasSkipped) {\n logger.info(`[${index + 1}/${total}] ${packageName}: ⊘ Skipped (no code changes)`);\n } else {\n logger.info(`[${index + 1}/${total}] ${packageName}: ✅ Completed${timeStr}`);\n }\n }\n\n // Ensure timing is recorded even if there was an early return\n if (executionDuration === undefined) {\n executionDuration = executionTimer.end(`Package ${packageName} execution`);\n }\n\n return { success: true, skippedNoChanges: publishWasSkipped, logFile: logFilePath };\n } catch (error: any) {\n // Record timing even on error\n if (executionDuration === undefined) {\n executionDuration = executionTimer.end(`Package ${packageName} execution`);\n const seconds = (executionDuration / 1000).toFixed(1);\n if (runConfig.debug || runConfig.verbose) {\n packageLogger.error(`⏱️ Execution time before failure: ${seconds}s`);\n }\n }\n\n if (runConfig.debug || runConfig.verbose) {\n packageLogger.error(`❌ Execution failed: ${error.message}`);\n } else {\n logger.error(`[${index + 1}/${total}] ${packageName}: ❌ Failed - ${error.message}`);\n }\n\n // Always show stderr if available (contains important error details)\n // Note: runWithLogging already logs stderr, but we show it here too for visibility\n // when error is caught at this level (e.g., from timeout wrapper)\n if (error.stderr && error.stderr.trim() && !runConfig.debug && !runConfig.verbose) {\n // Extract key error lines from stderr (coverage failures, test failures, etc.)\n const stderrLines = error.stderr.split('\\n').filter((line: string) => {\n const trimmed = line.trim();\n return trimmed && (\n trimmed.includes('ERROR:') ||\n trimmed.includes('FAIL') ||\n trimmed.includes('coverage') ||\n trimmed.includes('threshold') ||\n trimmed.includes('fatal:') ||\n trimmed.startsWith('❌')\n );\n });\n if (stderrLines.length > 0) {\n logger.error(` Error details:`);\n stderrLines.slice(0, 10).forEach((line: string) => {\n logger.error(` ${line.trim()}`);\n });\n if (stderrLines.length > 10) {\n logger.error(` ... and ${stderrLines.length - 10} more error lines (use --verbose to see full output)`);\n }\n }\n }\n\n // Check if this is a timeout error\n const errorMessage = error.message?.toLowerCase() || '';\n const isTimeoutError = errorMessage && (\n errorMessage.includes('timeout waiting for pr') ||\n errorMessage.includes('timeout waiting for release workflows') ||\n errorMessage.includes('timeout reached') ||\n errorMessage.includes('timeout') ||\n errorMessage.includes('timed out') ||\n errorMessage.includes('timed_out')\n );\n\n return { success: false, error, isTimeoutError, logFile: logFilePath };\n }\n};\n\n/**\n * Generate a dry-run preview showing what would happen without executing\n */\nconst generateDryRunPreview = async (\n dependencyGraph: DependencyGraph,\n buildOrder: string[],\n command: string,\n runConfig: Config\n): Promise<string> => {\n const lines: string[] = [];\n\n lines.push('');\n lines.push('🔍 DRY RUN MODE - No changes will be made');\n lines.push('');\n lines.push('Build order determined:');\n lines.push('');\n\n // Group packages by dependency level\n const levels: string[][] = [];\n const packageLevels = new Map<string, number>();\n\n for (const pkg of buildOrder) {\n const deps = dependencyGraph.edges.get(pkg) || new Set();\n let maxDepLevel = -1;\n for (const dep of deps) {\n const depLevel = packageLevels.get(dep) ?? 0;\n maxDepLevel = Math.max(maxDepLevel, depLevel);\n }\n const pkgLevel = maxDepLevel + 1;\n packageLevels.set(pkg, pkgLevel);\n\n if (!levels[pkgLevel]) {\n levels[pkgLevel] = [];\n }\n levels[pkgLevel].push(pkg);\n }\n\n // Show packages grouped by level\n for (let i = 0; i < levels.length; i++) {\n const levelPackages = levels[i];\n lines.push(`Level ${i + 1}: (${levelPackages.length} package${levelPackages.length === 1 ? '' : 's'})`);\n\n for (const pkg of levelPackages) {\n const pkgInfo = dependencyGraph.packages.get(pkg);\n if (!pkgInfo) continue;\n\n // Check if package has changes (for publish command)\n const isPublish = command.includes('publish');\n let status = '📝 Has changes, will execute';\n\n if (isPublish) {\n try {\n // Check git diff to see if there are code changes\n const { stdout } = await runSecure('git', ['diff', '--name-only', 'origin/main...HEAD'], { cwd: pkgInfo.path });\n const changedFiles = stdout.split('\\n').filter(Boolean);\n const nonVersionFiles = changedFiles.filter(f => f !== 'package.json' && f !== 'package-lock.json');\n\n if (changedFiles.length === 0) {\n status = '⊘ No changes, will skip';\n } else if (nonVersionFiles.length === 0) {\n status = '⊘ Only version bump, will skip';\n } else {\n status = `📝 Has changes (${nonVersionFiles.length} files), will publish`;\n }\n } catch {\n // If we can't check git status, assume changes\n status = '📝 Will execute';\n }\n }\n\n lines.push(` ${pkg}`);\n lines.push(` Status: ${status}`);\n lines.push(` Path: ${pkgInfo.path}`);\n }\n lines.push('');\n }\n\n lines.push('Summary:');\n lines.push(` Total packages: ${buildOrder.length}`);\n lines.push(` Dependency levels: ${levels.length}`);\n lines.push(` Command: ${command}`);\n\n if (runConfig.tree?.maxConcurrency) {\n lines.push(` Max concurrency: ${runConfig.tree.maxConcurrency}`);\n }\n\n lines.push('');\n lines.push('To execute for real, run the same command without --dry-run');\n lines.push('');\n\n return lines.join('\\n');\n};\n\n// Add a simple status check function\nconst checkTreePublishStatus = async (): Promise<void> => {\n const logger = getLogger();\n try {\n // Check for running kodrdriv processes\n const { stdout } = await runSecure('ps', ['aux'], {});\n const kodrdrivProcesses = stdout.split('\\n').filter((line: string) =>\n line.includes('kodrdriv') &&\n !line.includes('grep') &&\n !line.includes('ps aux') &&\n !line.includes('tree --status') // Exclude the current status command\n );\n\n if (kodrdrivProcesses.length > 0) {\n logger.info('🔍 Found running kodrdriv processes:');\n kodrdrivProcesses.forEach((process: string) => {\n const parts = process.trim().split(/\\s+/);\n const pid = parts[1];\n const command = parts.slice(10).join(' ');\n logger.info(` PID ${pid}: ${command}`);\n });\n } else {\n logger.info('No kodrdriv processes currently running');\n }\n } catch (error) {\n logger.warn('Could not check process status:', error);\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const isDryRun = runConfig.dryRun || false;\n const isContinue = runConfig.tree?.continue || false;\n const promotePackage = runConfig.tree?.promote;\n\n // Debug logging\n logger.debug('Tree config:', JSON.stringify(runConfig.tree, null, 2));\n logger.debug('Status flag:', (runConfig.tree as any)?.status);\n logger.debug('Full runConfig:', JSON.stringify(runConfig, null, 2));\n\n // Handle status check\n if ((runConfig.tree as any)?.status) {\n logger.info('🔍 Checking for running kodrdriv processes...');\n await checkTreePublishStatus();\n return 'Status check completed';\n }\n\n // Handle promote mode\n if (promotePackage) {\n logger.info(`Promoting package '${promotePackage}' to completed status...`);\n await promotePackageToCompleted(promotePackage, runConfig.outputDirectory);\n logger.info(`✅ Package '${promotePackage}' has been marked as completed.`);\n logger.info('You can now run the tree command with --continue to resume from the next package.');\n return `Package '${promotePackage}' promoted to completed status.`;\n }\n\n // Handle audit-branches command\n if (runConfig.tree?.auditBranches) {\n logger.info('🔍 Auditing branch state across all packages...');\n\n const directories = runConfig.tree?.directories || [process.cwd()];\n const excludedPatterns = runConfig.tree?.exclude || [];\n\n let allPackageJsonPaths: string[] = [];\n for (const targetDirectory of directories) {\n const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);\n allPackageJsonPaths = allPackageJsonPaths.concat(packageJsonPaths);\n }\n\n if (allPackageJsonPaths.length === 0) {\n return 'No packages found';\n }\n\n const dependencyGraph = await buildDependencyGraph(allPackageJsonPaths);\n const packages = Array.from(dependencyGraph.packages.values()).map(pkg => ({\n name: pkg.name,\n path: pkg.path,\n }));\n\n const { auditBranchState, formatAuditResults } = await import('../utils/branchState');\n const { getRemoteDefaultBranch } = await import('@eldrforge/git-tools');\n\n // For publish workflows, check branch consistency, merge conflicts, and existing PRs\n // Don't pass an expected branch - let the audit find the most common branch\n let targetBranch = runConfig.publish?.targetBranch;\n\n if (!targetBranch) {\n // Try to detect default branch from the first package that is a git repo\n const firstGitPkg = packages.find(pkg => isInGitRepository(pkg.path));\n if (firstGitPkg) {\n try {\n // Cast to any to avoid type mismatch with node_modules version\n targetBranch = await (getRemoteDefaultBranch as any)(firstGitPkg.path) || 'main';\n } catch {\n targetBranch = 'main';\n }\n } else {\n targetBranch = 'main';\n }\n }\n\n logger.info(`Checking for merge conflicts with '${targetBranch}' and existing pull requests...`);\n\n const auditResult = await auditBranchState(packages, undefined, {\n targetBranch,\n checkPR: true,\n checkConflicts: true,\n concurrency: runConfig.tree?.maxConcurrency || 10,\n });\n const formatted = formatAuditResults(auditResult);\n\n logger.info('\\n' + formatted);\n\n if (auditResult.issuesFound > 0) {\n logger.warn(`\\n⚠️ Found issues in ${auditResult.issuesFound} package(s). Review the fixes above.`);\n return `Branch audit complete: ${auditResult.issuesFound} package(s) need attention`;\n }\n\n logger.info(`\\n✅ All ${auditResult.goodPackages} package(s) are in good state!`);\n return `Branch audit complete: All packages OK`;\n }\n\n // Handle parallel execution recovery commands\n const { loadRecoveryManager } = await import('@eldrforge/tree-execution');\n\n // Handle status-parallel command\n if (runConfig.tree?.statusParallel) {\n logger.info('📊 Checking parallel execution status...');\n\n // Need to build dependency graph first\n const directories = runConfig.tree?.directories || [process.cwd()];\n const excludedPatterns = runConfig.tree?.exclude || [];\n\n let allPackageJsonPaths: string[] = [];\n for (const targetDirectory of directories) {\n const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);\n allPackageJsonPaths = allPackageJsonPaths.concat(packageJsonPaths);\n }\n\n if (allPackageJsonPaths.length === 0) {\n return 'No packages found';\n }\n\n const dependencyGraph = await buildDependencyGraph(allPackageJsonPaths);\n const recoveryManager = await loadRecoveryManager(dependencyGraph, runConfig.outputDirectory);\n\n if (!recoveryManager) {\n logger.info('No parallel execution checkpoint found');\n return 'No active parallel execution found';\n }\n\n const status = await recoveryManager.showStatus();\n logger.info('\\n' + status);\n return status;\n }\n\n // Handle validate-state command\n if (runConfig.tree?.validateState) {\n logger.info('🔍 Validating checkpoint state...');\n\n const directories = runConfig.tree?.directories || [process.cwd()];\n const excludedPatterns = runConfig.tree?.exclude || [];\n\n let allPackageJsonPaths: string[] = [];\n for (const targetDirectory of directories) {\n const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);\n allPackageJsonPaths = allPackageJsonPaths.concat(packageJsonPaths);\n }\n\n if (allPackageJsonPaths.length === 0) {\n return 'No packages found';\n }\n\n const dependencyGraph = await buildDependencyGraph(allPackageJsonPaths);\n const recoveryManager = await loadRecoveryManager(dependencyGraph, runConfig.outputDirectory);\n\n if (!recoveryManager) {\n logger.info('No checkpoint found to validate');\n return 'No checkpoint found';\n }\n\n const validation = recoveryManager.validateState();\n\n if (validation.valid) {\n logger.info('✅ Checkpoint state is valid');\n } else {\n logger.error('❌ Checkpoint state has issues:');\n for (const issue of validation.issues) {\n logger.error(` • ${issue}`);\n }\n }\n\n if (validation.warnings.length > 0) {\n logger.warn('⚠️ Warnings:');\n for (const warning of validation.warnings) {\n logger.warn(` • ${warning}`);\n }\n }\n\n return validation.valid ? 'Checkpoint is valid' : 'Checkpoint has issues';\n }\n\n // Handle parallel execution recovery options (must happen before main execution)\n const hasRecoveryOptions = runConfig.tree?.markCompleted || runConfig.tree?.skipPackages ||\n runConfig.tree?.retryFailed || runConfig.tree?.skipFailed ||\n runConfig.tree?.resetPackage;\n\n if (hasRecoveryOptions && runConfig.tree) {\n logger.info('🔧 Applying recovery options...');\n\n // Build dependency graph\n const directories = runConfig.tree.directories || [process.cwd()];\n const excludedPatterns = runConfig.tree.exclude || [];\n\n let allPackageJsonPaths: string[] = [];\n for (const targetDirectory of directories) {\n const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);\n allPackageJsonPaths = allPackageJsonPaths.concat(packageJsonPaths);\n }\n\n const dependencyGraph = await buildDependencyGraph(allPackageJsonPaths);\n const recoveryManager = await loadRecoveryManager(dependencyGraph, runConfig.outputDirectory);\n\n if (!recoveryManager) {\n logger.error('No checkpoint found for recovery');\n throw new Error('No checkpoint found. Cannot apply recovery options without an existing checkpoint.');\n }\n\n await recoveryManager.applyRecoveryOptions({\n markCompleted: runConfig.tree.markCompleted,\n skipPackages: runConfig.tree.skipPackages,\n retryFailed: runConfig.tree.retryFailed,\n skipFailed: runConfig.tree.skipFailed,\n resetPackage: runConfig.tree.resetPackage,\n maxRetries: runConfig.tree.retry?.maxAttempts\n });\n\n logger.info('✅ Recovery options applied');\n\n // If not also continuing, just return\n if (!isContinue) {\n return 'Recovery options applied. Use --continue to resume execution.';\n }\n }\n\n // Handle continue mode\n if (isContinue) {\n // For parallel execution, the checkpoint is managed by DynamicTaskPool/CheckpointManager\n // For sequential execution, we use the legacy context file\n const isParallelMode = runConfig.tree?.parallel;\n\n if (!isParallelMode) {\n // Sequential execution: load legacy context\n const savedContext = await loadExecutionContext(runConfig.outputDirectory);\n if (savedContext) {\n logger.info('Continuing previous tree execution...');\n logger.info(`Original command: ${savedContext.command}`);\n logger.info(`Started: ${savedContext.startTime.toISOString()}`);\n logger.info(`Previously completed: ${savedContext.completedPackages.length}/${savedContext.buildOrder.length} packages`);\n\n // Restore state safely\n let mutexLocked = false;\n try {\n await globalStateMutex.lock();\n mutexLocked = true;\n publishedVersions = savedContext.publishedVersions;\n globalStateMutex.unlock();\n mutexLocked = false;\n } catch (error) {\n if (mutexLocked) {\n globalStateMutex.unlock();\n }\n throw error;\n }\n executionContext = savedContext;\n\n // Use original config but allow some overrides (like dry run)\n runConfig = {\n ...savedContext.originalConfig,\n dryRun: runConfig.dryRun, // Allow dry run override\n outputDirectory: runConfig.outputDirectory || savedContext.originalConfig.outputDirectory\n };\n } else {\n logger.warn('No previous execution context found. Starting new execution...');\n }\n } else {\n // Parallel execution: checkpoint is managed by DynamicTaskPool\n // Just log that we're continuing - the actual checkpoint loading happens in DynamicTaskPool\n logger.info('Continuing previous parallel execution...');\n }\n } else {\n // Reset published versions tracking for new tree execution\n publishedVersions = [];\n executionContext = null;\n }\n\n // Check if we're in built-in command mode (tree command with second argument)\n const builtInCommand = runConfig.tree?.builtInCommand;\n const supportedBuiltInCommands = ['commit', 'release', 'publish', 'link', 'unlink', 'development', 'branches', 'run', 'checkout', 'updates', 'precommit'];\n\n if (builtInCommand && !supportedBuiltInCommands.includes(builtInCommand)) {\n throw new Error(`Unsupported built-in command: ${builtInCommand}. Supported commands: ${supportedBuiltInCommands.join(', ')}`);\n }\n\n // Handle run subcommand - convert space-separated scripts to npm run commands\n if (builtInCommand === 'run') {\n const packageArgument = runConfig.tree?.packageArgument;\n if (!packageArgument) {\n throw new Error('run subcommand requires script names. Usage: kodrdriv tree run \"clean build test\"');\n }\n\n // Split the package argument by spaces to get individual script names\n const scripts = packageArgument.trim().split(/\\s+/).filter(script => script.length > 0);\n\n if (scripts.length === 0) {\n throw new Error('run subcommand requires at least one script name. Usage: kodrdriv tree run \"clean build test\"');\n }\n\n // Convert to npm run commands joined with &&\n const npmCommands = scripts.map(script => `npm run ${script}`).join(' && ');\n\n // Set this as the custom command to run\n runConfig.tree = {\n ...runConfig.tree,\n cmd: npmCommands\n };\n\n // Clear the built-in command since we're now using custom command mode\n runConfig.tree.builtInCommand = undefined;\n\n logger.info(`Converting run subcommand to: ${npmCommands}`);\n\n // Store scripts for later validation\n (runConfig as any).__scriptsToValidate = scripts;\n }\n\n // Determine the target directories - either specified or current working directory\n const directories = runConfig.tree?.directories || [process.cwd()];\n\n // Handle link status subcommand\n if (builtInCommand === 'link' && runConfig.tree?.packageArgument === 'status') {\n // For tree link status, we want to show status across all packages\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Running link status across workspace...`);\n\n // Create a config that will be passed to the link command\n const linkConfig: Config = {\n ...runConfig,\n tree: {\n ...runConfig.tree,\n directories: directories\n }\n };\n\n try {\n const result = await Link.execute(linkConfig, 'status');\n return result;\n } catch (error: any) {\n logger.error(`Link status failed: ${error.message}`);\n throw error;\n }\n }\n\n // Handle unlink status subcommand\n if (builtInCommand === 'unlink' && runConfig.tree?.packageArgument === 'status') {\n // For tree unlink status, we want to show status across all packages\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Running unlink status across workspace...`);\n\n // Create a config that will be passed to the unlink command\n const unlinkConfig: Config = {\n ...runConfig,\n tree: {\n ...runConfig.tree,\n directories: directories\n }\n };\n\n try {\n const result = await Unlink.execute(unlinkConfig, 'status');\n return result;\n } catch (error: any) {\n logger.error(`Unlink status failed: ${error.message}`);\n throw error;\n }\n }\n\n if (directories.length === 1) {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Analyzing workspace at: ${directories[0]}`);\n } else {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Analyzing workspaces at: ${directories.join(', ')}`);\n }\n\n try {\n // Get exclusion patterns from config, fallback to empty array\n const excludedPatterns = runConfig.tree?.exclude || [];\n\n if (excludedPatterns.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Using exclusion patterns: ${excludedPatterns.join(', ')}`);\n }\n\n // Scan for package.json files across all directories\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Scanning for package.json files...`);\n let allPackageJsonPaths: string[] = [];\n\n for (const targetDirectory of directories) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Scanning directory: ${targetDirectory}`);\n const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);\n allPackageJsonPaths = allPackageJsonPaths.concat(packageJsonPaths);\n }\n\n const packageJsonPaths = allPackageJsonPaths;\n\n if (packageJsonPaths.length === 0) {\n const directoriesStr = directories.join(', ');\n const message = `No package.json files found in subdirectories of: ${directoriesStr}`;\n logger.warn(message);\n return message;\n }\n\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Found ${packageJsonPaths.length} package.json files`);\n\n // Build dependency graph\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Building dependency graph...`);\n const dependencyGraph = await buildDependencyGraph(packageJsonPaths);\n\n // Perform topological sort to determine build order\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Determining build order...`);\n let buildOrder = topologicalSort(dependencyGraph);\n\n // Handle start-from functionality if specified\n const startFrom = runConfig.tree?.startFrom;\n if (startFrom) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Looking for start package: ${startFrom}`);\n\n // Resolve the actual package name (can be package name or directory name)\n let startPackageName: string | null = null;\n for (const [pkgName, pkgInfo] of dependencyGraph.packages) {\n const dirName = path.basename(pkgInfo.path);\n if (dirName === startFrom || pkgName === startFrom) {\n startPackageName = pkgName;\n break;\n }\n }\n\n if (!startPackageName) {\n // Check if the package exists but was excluded across all directories\n let allPackageJsonPathsForCheck: string[] = [];\n for (const targetDirectory of directories) {\n const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, []); // No exclusions\n allPackageJsonPathsForCheck = allPackageJsonPathsForCheck.concat(packageJsonPaths);\n }\n let wasExcluded = false;\n\n for (const packageJsonPath of allPackageJsonPathsForCheck) {\n try {\n const packageInfo = await parsePackageJson(packageJsonPath);\n const dirName = path.basename(packageInfo.path);\n\n if (dirName === startFrom || packageInfo.name === startFrom) {\n // Check if this package was excluded\n if (shouldExclude(packageJsonPath, excludedPatterns)) {\n wasExcluded = true;\n break;\n }\n }\n } catch {\n // Skip invalid package.json files\n continue;\n }\n }\n\n if (wasExcluded) {\n const excludedPatternsStr = excludedPatterns.join(', ');\n throw new Error(`Package directory '${startFrom}' was excluded by exclusion patterns: ${excludedPatternsStr}. Remove the exclusion pattern or choose a different starting package.`);\n } else {\n const availablePackages = buildOrder.map(name => {\n const packageInfo = dependencyGraph.packages.get(name)!;\n return `${path.basename(packageInfo.path)} (${name})`;\n }).join(', ');\n\n throw new Error(`Package directory '${startFrom}' not found. Available packages: ${availablePackages}`);\n }\n }\n\n // Find the start package in the build order and start execution from there\n const startIndex = buildOrder.findIndex(pkgName => pkgName === startPackageName);\n if (startIndex === -1) {\n throw new Error(`Package '${startFrom}' not found in build order. This should not happen.`);\n }\n\n // Filter build order to start from the specified package\n const originalLength = buildOrder.length;\n buildOrder = buildOrder.slice(startIndex);\n\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Starting execution from package '${startFrom}' (${buildOrder.length} of ${originalLength} packages remaining).`);\n }\n\n // Handle stop-at functionality if specified\n const stopAt = runConfig.tree?.stopAt;\n if (stopAt) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Looking for stop package: ${stopAt}`);\n\n // Find the package that matches the stopAt directory name\n const stopIndex = buildOrder.findIndex(packageName => {\n const packageInfo = dependencyGraph.packages.get(packageName)!;\n const dirName = path.basename(packageInfo.path);\n return dirName === stopAt || packageName === stopAt;\n });\n\n if (stopIndex === -1) {\n // Check if the package exists but was excluded across all directories\n let allPackageJsonPathsForCheck: string[] = [];\n for (const targetDirectory of directories) {\n const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, []); // No exclusions\n allPackageJsonPathsForCheck = allPackageJsonPathsForCheck.concat(packageJsonPaths);\n }\n let wasExcluded = false;\n\n for (const packageJsonPath of allPackageJsonPathsForCheck) {\n try {\n const packageInfo = await parsePackageJson(packageJsonPath);\n const dirName = path.basename(packageInfo.path);\n\n if (dirName === stopAt || packageInfo.name === stopAt) {\n // Check if this package was excluded\n if (shouldExclude(packageJsonPath, excludedPatterns)) {\n wasExcluded = true;\n break;\n }\n }\n } catch {\n // Skip invalid package.json files\n continue;\n }\n }\n\n if (wasExcluded) {\n const excludedPatternsStr = excludedPatterns.join(', ');\n throw new Error(`Package directory '${stopAt}' was excluded by exclusion patterns: ${excludedPatternsStr}. Remove the exclusion pattern or choose a different stop package.`);\n } else {\n const availablePackages = buildOrder.map(name => {\n const packageInfo = dependencyGraph.packages.get(name)!;\n return `${path.basename(packageInfo.path)} (${name})`;\n }).join(', ');\n\n throw new Error(`Package directory '${stopAt}' not found. Available packages: ${availablePackages}`);\n }\n }\n\n // Truncate the build order before the stop package (the stop package is not executed)\n const originalLength = buildOrder.length;\n buildOrder = buildOrder.slice(0, stopIndex);\n\n const stoppedCount = originalLength - stopIndex;\n if (stoppedCount > 0) {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Stopping before '${stopAt}' - excluding ${stoppedCount} package${stoppedCount === 1 ? '' : 's'}`);\n }\n }\n\n // Helper function to determine version scope indicator\n const getVersionScopeIndicator = (versionRange: string): string => {\n // Remove whitespace and check the pattern\n const cleanRange = versionRange.trim();\n\n // Preserve the original prefix (^, ~, >=, etc.)\n const prefixMatch = cleanRange.match(/^([^0-9]*)/);\n const prefix = prefixMatch ? prefixMatch[1] : '';\n\n // Extract the version part after the prefix\n const versionPart = cleanRange.substring(prefix.length);\n\n // Count the number of dots to determine scope\n const dotCount = (versionPart.match(/\\./g) || []).length;\n\n if (dotCount >= 2) {\n // Has patch version (e.g., \"^4.4.32\" -> \"^P\")\n return prefix + 'P';\n } else if (dotCount === 1) {\n // Has minor version only (e.g., \"^4.4\" -> \"^m\")\n return prefix + 'm';\n } else if (dotCount === 0 && versionPart.match(/^\\d+$/)) {\n // Has major version only (e.g., \"^4\" -> \"^M\")\n return prefix + 'M';\n }\n\n // For complex ranges or non-standard formats, return as-is\n return cleanRange;\n };\n\n // Helper function to find packages that consume a given package\n const findConsumingPackagesForBranches = async (\n targetPackageName: string,\n allPackages: Map<string, PackageInfo>,\n storage: any\n ): Promise<string[]> => {\n const consumers: string[] = [];\n\n // Extract scope from target package name (e.g., \"@fjell/eslint-config\" -> \"@fjell/\")\n const targetScope = targetPackageName.includes('/') ? targetPackageName.split('/')[0] + '/' : null;\n\n for (const [packageName, packageInfo] of allPackages) {\n if (packageName === targetPackageName) continue;\n\n try {\n const packageJsonPath = path.join(packageInfo.path, 'package.json');\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n // Check if this package depends on the target package and get the version range\n const dependencyTypes = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'];\n let versionRange: string | null = null;\n\n for (const depType of dependencyTypes) {\n if (packageJson[depType] && packageJson[depType][targetPackageName]) {\n versionRange = packageJson[depType][targetPackageName];\n break;\n }\n }\n\n if (versionRange) {\n // Apply scope substitution for consumers in the same scope\n let consumerDisplayName = packageName;\n if (targetScope && packageName.startsWith(targetScope)) {\n // Replace scope with \"./\" (e.g., \"@fjell/core\" -> \"./core\")\n consumerDisplayName = './' + packageName.substring(targetScope.length);\n }\n\n // Add version scope indicator\n const scopeIndicator = getVersionScopeIndicator(versionRange);\n consumerDisplayName += ` (${scopeIndicator})`;\n\n consumers.push(consumerDisplayName);\n }\n } catch {\n // Skip packages we can't parse\n continue;\n }\n }\n\n return consumers.sort();\n };\n\n // Handle special \"branches\" command that displays table\n if (builtInCommand === 'branches') {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Branch Status Summary:`);\n logger.info('');\n\n // Calculate column widths for nice formatting\n let maxNameLength = 'Package'.length;\n let maxBranchLength = 'Branch'.length;\n let maxVersionLength = 'Version'.length;\n let maxStatusLength = 'Status'.length;\n let maxLinkLength = 'Linked'.length;\n let maxConsumersLength = 'Consumers'.length;\n\n const branchInfos: Array<{\n name: string;\n branch: string;\n version: string;\n status: string;\n linked: string;\n consumers: string[];\n }> = [];\n\n // Create storage instance for consumer lookup\n const storage = createStorage();\n\n // Get globally linked packages once at the beginning\n const globallyLinkedPackages = await getGloballyLinkedPackages();\n\n // ANSI escape codes for progress display\n const ANSI = {\n CURSOR_UP: '\\x1b[1A',\n CURSOR_TO_START: '\\x1b[0G',\n CLEAR_LINE: '\\x1b[2K',\n GREEN: '\\x1b[32m',\n BLUE: '\\x1b[34m',\n YELLOW: '\\x1b[33m',\n RESET: '\\x1b[0m',\n BOLD: '\\x1b[1m'\n };\n\n // Check if terminal supports ANSI\n const supportsAnsi = process.stdout.isTTY &&\n process.env.TERM !== 'dumb' &&\n !process.env.NO_COLOR;\n\n const totalPackages = buildOrder.length;\n const concurrency = 5; // Process up to 5 packages at a time\n let completedCount = 0;\n let isFirstProgress = true;\n\n // Function to update progress display\n const updateProgress = (currentPackage: string, completed: number, total: number) => {\n if (!supportsAnsi) return;\n\n if (!isFirstProgress) {\n // Move cursor up and clear the line\n process.stdout.write(ANSI.CURSOR_UP + ANSI.CURSOR_TO_START + ANSI.CLEAR_LINE);\n }\n\n const percentage = Math.round((completed / total) * 100);\n const progressBar = '█'.repeat(Math.floor(percentage / 5)) + '░'.repeat(20 - Math.floor(percentage / 5));\n const progress = `${ANSI.BLUE}${ANSI.BOLD}Analyzing packages... ${ANSI.GREEN}[${progressBar}] ${percentage}%${ANSI.RESET} ${ANSI.YELLOW}(${completed}/${total})${ANSI.RESET}`;\n const current = currentPackage ? ` - Currently: ${currentPackage}` : '';\n\n process.stdout.write(progress + current + '\\n');\n isFirstProgress = false;\n };\n\n // Function to process a single package\n const processPackage = async (packageName: string): Promise<{\n name: string;\n branch: string;\n version: string;\n status: string;\n linked: string;\n consumers: string[];\n }> => {\n const packageInfo = dependencyGraph.packages.get(packageName)!;\n\n try {\n // Process git status and consumers in parallel\n const [gitStatus, consumers] = await Promise.all([\n getGitStatusSummary(packageInfo.path),\n findConsumingPackagesForBranches(packageName, dependencyGraph.packages, storage)\n ]);\n\n // Check if this package is globally linked (available to be linked to)\n const isGloballyLinked = globallyLinkedPackages.has(packageName);\n const linkedText = isGloballyLinked ? '✓' : '';\n\n // Add asterisk to consumers that are actively linking to globally linked packages\n // and check for link problems to highlight in red\n const consumersWithLinkStatus = await Promise.all(consumers.map(async (consumer) => {\n // Extract the base consumer name from the format \"package-name (^P)\" or \"./scoped-name (^m)\"\n const baseConsumerName = consumer.replace(/ \\([^)]+\\)$/, ''); // Remove version scope indicator\n\n // Get the original package name from display name (remove scope substitution)\n const originalConsumerName = baseConsumerName.startsWith('./')\n ? baseConsumerName.replace('./', packageName.split('/')[0] + '/')\n : baseConsumerName;\n\n // Find the consumer package info to get its path\n const consumerPackageInfo = Array.from(dependencyGraph.packages.values())\n .find(pkg => pkg.name === originalConsumerName);\n\n if (consumerPackageInfo) {\n const [consumerLinkedDeps, linkProblems] = await Promise.all([\n getLinkedDependencies(consumerPackageInfo.path),\n getLinkCompatibilityProblems(consumerPackageInfo.path, dependencyGraph.packages)\n ]);\n\n let consumerDisplay = consumer;\n\n // Add asterisk if this consumer is actively linking to this package\n if (consumerLinkedDeps.has(packageName)) {\n consumerDisplay += '*';\n }\n\n // Check if this consumer has link problems with the current package\n if (linkProblems.has(packageName)) {\n // Highlight in red using ANSI escape codes (only if terminal supports it)\n if (supportsAnsi) {\n consumerDisplay = `\\x1b[31m${consumerDisplay}\\x1b[0m`;\n } else {\n // Fallback for terminals that don't support ANSI colors\n consumerDisplay += ' [LINK PROBLEM]';\n }\n }\n\n return consumerDisplay;\n }\n\n return consumer;\n }));\n\n return {\n name: packageName,\n branch: gitStatus.branch,\n version: packageInfo.version,\n status: gitStatus.status,\n linked: linkedText,\n consumers: consumersWithLinkStatus\n };\n } catch (error: any) {\n logger.warn(`Failed to get git status for ${packageName}: ${error.message}`);\n return {\n name: packageName,\n branch: 'error',\n version: packageInfo.version,\n status: 'error',\n linked: '✗',\n consumers: ['error']\n };\n }\n };\n\n // Process packages in batches with progress updates\n updateProgress('Starting...', 0, totalPackages);\n\n for (let i = 0; i < buildOrder.length; i += concurrency) {\n const batch = buildOrder.slice(i, i + concurrency);\n\n // Update progress to show current batch\n const currentBatchStr = batch.length === 1 ? batch[0] : `${batch[0]} + ${batch.length - 1} others`;\n updateProgress(currentBatchStr, completedCount, totalPackages);\n\n // Process batch in parallel\n const batchResults = await Promise.all(\n batch.map(packageName => processPackage(packageName))\n );\n\n // Add results and update column widths\n for (const result of batchResults) {\n branchInfos.push(result);\n maxNameLength = Math.max(maxNameLength, result.name.length);\n maxBranchLength = Math.max(maxBranchLength, result.branch.length);\n maxVersionLength = Math.max(maxVersionLength, result.version.length);\n maxStatusLength = Math.max(maxStatusLength, result.status.length);\n maxLinkLength = Math.max(maxLinkLength, result.linked.length);\n\n // For consumers, calculate the width based on the longest consumer name\n const maxConsumerLength = result.consumers.length > 0\n ? Math.max(...result.consumers.map(c => c.length))\n : 0;\n maxConsumersLength = Math.max(maxConsumersLength, maxConsumerLength);\n }\n\n completedCount += batch.length;\n updateProgress('', completedCount, totalPackages);\n }\n\n // Clear progress line and add spacing\n if (supportsAnsi && !isFirstProgress) {\n process.stdout.write(ANSI.CURSOR_UP + ANSI.CURSOR_TO_START + ANSI.CLEAR_LINE);\n }\n logger.info(`${ANSI.GREEN}✅ Analysis complete!${ANSI.RESET} Processed ${totalPackages} packages in batches of ${concurrency}.`);\n logger.info('');\n\n // Print header (new order: Package | Branch | Version | Status | Linked | Consumers)\n const nameHeader = 'Package'.padEnd(maxNameLength);\n const branchHeader = 'Branch'.padEnd(maxBranchLength);\n const versionHeader = 'Version'.padEnd(maxVersionLength);\n const statusHeader = 'Status'.padEnd(maxStatusLength);\n const linkHeader = 'Linked'.padEnd(maxLinkLength);\n const consumersHeader = 'Consumers';\n\n logger.info(`${nameHeader} | ${branchHeader} | ${versionHeader} | ${statusHeader} | ${linkHeader} | ${consumersHeader}`);\n logger.info(`${'-'.repeat(maxNameLength)} | ${'-'.repeat(maxBranchLength)} | ${'-'.repeat(maxVersionLength)} | ${'-'.repeat(maxStatusLength)} | ${'-'.repeat(maxLinkLength)} | ${'-'.repeat(9)}`);\n\n // Print data rows with multi-line consumers\n for (const info of branchInfos) {\n const nameCol = info.name.padEnd(maxNameLength);\n const branchCol = info.branch.padEnd(maxBranchLength);\n const versionCol = info.version.padEnd(maxVersionLength);\n const statusCol = info.status.padEnd(maxStatusLength);\n const linkCol = info.linked.padEnd(maxLinkLength);\n\n if (info.consumers.length === 0) {\n // No consumers - single line\n logger.info(`${nameCol} | ${branchCol} | ${versionCol} | ${statusCol} | ${linkCol} | `);\n } else if (info.consumers.length === 1) {\n // Single consumer - single line\n logger.info(`${nameCol} | ${branchCol} | ${versionCol} | ${statusCol} | ${linkCol} | ${info.consumers[0]}`);\n } else {\n // Multiple consumers - first consumer on same line, rest on new lines with continuous column separators\n logger.info(`${nameCol} | ${branchCol} | ${versionCol} | ${statusCol} | ${linkCol} | ${info.consumers[0]}`);\n\n // Additional consumers on separate lines with proper column separators\n const emptyNameCol = ' '.repeat(maxNameLength);\n const emptyBranchCol = ' '.repeat(maxBranchLength);\n const emptyVersionCol = ' '.repeat(maxVersionLength);\n const emptyStatusCol = ' '.repeat(maxStatusLength);\n const emptyLinkCol = ' '.repeat(maxLinkLength);\n\n for (let i = 1; i < info.consumers.length; i++) {\n logger.info(`${emptyNameCol} | ${emptyBranchCol} | ${emptyVersionCol} | ${emptyStatusCol} | ${emptyLinkCol} | ${info.consumers[i]}`);\n }\n }\n }\n\n logger.info('');\n // Add legend explaining the symbols and colors\n logger.info('Legend:');\n logger.info(' * = Consumer is actively linking to this package');\n logger.info(' (^P) = Patch-level dependency (e.g., \"^4.4.32\")');\n logger.info(' (^m) = Minor-level dependency (e.g., \"^4.4\")');\n logger.info(' (^M) = Major-level dependency (e.g., \"^4\")');\n logger.info(' (~P), (>=M), etc. = Other version prefixes preserved');\n if (supportsAnsi) {\n logger.info(' \\x1b[31mRed text\\x1b[0m = Consumer has link problems (version mismatches) with this package');\n } else {\n logger.info(' [LINK PROBLEM] = Consumer has link problems (version mismatches) with this package');\n }\n logger.info('');\n return `Branch status summary for ${branchInfos.length} packages completed.`;\n }\n\n // Handle special \"checkout\" command that switches all packages to specified branch\n if (builtInCommand === 'checkout') {\n const targetBranch = runConfig.tree?.packageArgument;\n if (!targetBranch) {\n throw new Error('checkout subcommand requires a branch name. Usage: kodrdriv tree checkout <branch-name>');\n }\n\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Workspace Checkout to Branch: ${targetBranch}`);\n logger.info('');\n\n // Phase 1: Safety check - scan all packages for uncommitted changes\n logger.info('🔍 Phase 1: Checking for uncommitted changes across workspace...');\n const packagesWithChanges: Array<{\n name: string;\n path: string;\n status: string;\n hasUncommittedChanges: boolean;\n hasUnstagedFiles: boolean;\n }> = [];\n\n for (const packageName of buildOrder) {\n const packageInfo = dependencyGraph.packages.get(packageName)!;\n\n try {\n const gitStatus = await getGitStatusSummary(packageInfo.path);\n const hasProblems = gitStatus.hasUncommittedChanges || gitStatus.hasUnstagedFiles;\n\n packagesWithChanges.push({\n name: packageName,\n path: packageInfo.path,\n status: gitStatus.status,\n hasUncommittedChanges: gitStatus.hasUncommittedChanges,\n hasUnstagedFiles: gitStatus.hasUnstagedFiles\n });\n\n if (hasProblems) {\n logger.warn(`⚠️ ${packageName}: ${gitStatus.status}`);\n } else {\n logger.verbose(`✅ ${packageName}: clean`);\n }\n } catch (error: any) {\n logger.warn(`❌ ${packageName}: error checking status - ${error.message}`);\n packagesWithChanges.push({\n name: packageName,\n path: packageInfo.path,\n status: 'error',\n hasUncommittedChanges: false,\n hasUnstagedFiles: false\n });\n }\n }\n\n // Check if any packages have uncommitted changes\n const problemPackages = packagesWithChanges.filter(pkg =>\n pkg.hasUncommittedChanges || pkg.hasUnstagedFiles || pkg.status === 'error'\n );\n\n if (problemPackages.length > 0) {\n logger.error(`❌ Cannot proceed with checkout: ${problemPackages.length} packages have uncommitted changes or errors:`);\n logger.error('');\n\n for (const pkg of problemPackages) {\n logger.error(` 📦 ${pkg.name} (${pkg.path}):`);\n logger.error(` Status: ${pkg.status}`);\n }\n\n logger.error('');\n logger.error('🔧 To resolve this issue:');\n logger.error(' 1. Commit or stash changes in the packages listed above');\n logger.error(' 2. Or use \"kodrdriv tree commit\" to commit changes across all packages');\n logger.error(' 3. Then re-run the checkout command');\n logger.error('');\n\n throw new Error(`Workspace checkout blocked: ${problemPackages.length} packages have uncommitted changes`);\n }\n\n logger.info(`✅ Phase 1 complete: All ${packagesWithChanges.length} packages are clean`);\n logger.info('');\n\n // Phase 2: Perform the checkout\n logger.info(`🔄 Phase 2: Checking out all packages to branch '${targetBranch}'...`);\n\n let successCount = 0;\n const failedPackages: Array<{ name: string; error: string }> = [];\n\n for (let i = 0; i < buildOrder.length; i++) {\n const packageName = buildOrder[i];\n const packageInfo = dependencyGraph.packages.get(packageName)!;\n\n if (isDryRun) {\n logger.info(`[${i + 1}/${buildOrder.length}] ${packageName}: Would checkout ${targetBranch}`);\n successCount++;\n } else {\n try {\n const originalCwd = process.cwd();\n process.chdir(packageInfo.path);\n\n try {\n // Check if target branch exists locally\n let branchExists = false;\n try {\n await runSecure('git', ['rev-parse', '--verify', targetBranch]);\n branchExists = true;\n } catch {\n // Branch doesn't exist locally\n branchExists = false;\n }\n\n if (branchExists) {\n await runSecure('git', ['checkout', targetBranch]);\n logger.info(`[${i + 1}/${buildOrder.length}] ${packageName}: ✅ Checked out ${targetBranch}`);\n } else {\n // Try to check out branch from remote\n try {\n await runSecure('git', ['checkout', '-b', targetBranch, `origin/${targetBranch}`]);\n logger.info(`[${i + 1}/${buildOrder.length}] ${packageName}: ✅ Checked out ${targetBranch} from origin`);\n } catch {\n // If that fails, create a new branch\n await runSecure('git', ['checkout', '-b', targetBranch]);\n logger.info(`[${i + 1}/${buildOrder.length}] ${packageName}: ✅ Created new branch ${targetBranch}`);\n }\n }\n\n successCount++;\n } finally {\n process.chdir(originalCwd);\n }\n } catch (error: any) {\n logger.error(`[${i + 1}/${buildOrder.length}] ${packageName}: ❌ Failed - ${error.message}`);\n failedPackages.push({ name: packageName, error: error.message });\n }\n }\n }\n\n // Report results\n if (failedPackages.length > 0) {\n logger.error(`❌ Checkout completed with errors: ${successCount}/${buildOrder.length} packages successful`);\n logger.error('');\n logger.error('Failed packages:');\n for (const failed of failedPackages) {\n logger.error(` - ${failed.name}: ${failed.error}`);\n }\n throw new Error(`Checkout failed for ${failedPackages.length} packages`);\n } else {\n logger.info(`✅ Checkout complete: All ${buildOrder.length} packages successfully checked out to '${targetBranch}'`);\n return `Workspace checkout complete: ${successCount} packages checked out to '${targetBranch}'`;\n }\n }\n\n // Display results\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Build order determined:`);\n\n let returnOutput = '';\n\n if (runConfig.verbose || runConfig.debug) {\n // Verbose mode: Skip simple format, show detailed format before command execution\n logger.info(''); // Add spacing\n const rangeInfo = [];\n if (startFrom) rangeInfo.push(`starting from ${startFrom}`);\n if (stopAt) rangeInfo.push(`stopping before ${stopAt}`);\n const rangeStr = rangeInfo.length > 0 ? ` (${rangeInfo.join(', ')})` : '';\n logger.info(`Detailed Build Order for ${buildOrder.length} packages${rangeStr}:`);\n logger.info('==========================================');\n\n buildOrder.forEach((packageName, index) => {\n const packageInfo = dependencyGraph.packages.get(packageName)!;\n const localDeps = Array.from(packageInfo.localDependencies);\n\n logger.info(`${index + 1}. ${packageName} (${packageInfo.version})`);\n logger.info(` Path: ${packageInfo.path}`);\n\n if (localDeps.length > 0) {\n logger.info(` Local Dependencies: ${localDeps.join(', ')}`);\n } else {\n logger.info(` Local Dependencies: none`);\n }\n logger.info(''); // Add spacing between packages\n });\n\n // Simple return output for verbose mode (no need to repeat detailed info)\n returnOutput = `\\nBuild order: ${buildOrder.join(' → ')}\\n`;\n } else {\n // Non-verbose mode: Show simple build order\n buildOrder.forEach((packageName, index) => {\n const packageInfo = dependencyGraph.packages.get(packageName)!;\n const localDeps = Array.from(packageInfo.localDependencies);\n\n // Log each step\n if (localDeps.length > 0) {\n logger.info(`${index + 1}. ${packageName} (depends on: ${localDeps.join(', ')})`);\n } else {\n logger.info(`${index + 1}. ${packageName} (no local dependencies)`);\n }\n });\n\n // Simple return output for non-verbose mode\n returnOutput = `\\nBuild order: ${buildOrder.join(' → ')}\\n`;\n }\n\n // Execute command if provided (custom command or built-in command)\n const cmd = runConfig.tree?.cmd;\n\n // Determine command to execute\n let commandToRun: string | undefined;\n let isBuiltInCommand = false;\n\n if (builtInCommand) {\n // Built-in command mode: shell out to kodrdriv subprocess\n // Build command with propagated global options\n const globalOptions: string[] = [];\n\n // Propagate global flags that should be inherited by subprocesses\n if (runConfig.debug) globalOptions.push('--debug');\n if (runConfig.verbose) globalOptions.push('--verbose');\n if (runConfig.dryRun) globalOptions.push('--dry-run');\n if (runConfig.overrides) globalOptions.push('--overrides');\n\n // Propagate global options with values\n if (runConfig.model) globalOptions.push(`--model \"${runConfig.model}\"`);\n if (runConfig.configDirectory) globalOptions.push(`--config-dir \"${runConfig.configDirectory}\"`);\n if (runConfig.outputDirectory) globalOptions.push(`--output-dir \"${runConfig.outputDirectory}\"`);\n if (runConfig.preferencesDirectory) globalOptions.push(`--preferences-dir \"${runConfig.preferencesDirectory}\"`);\n\n // Build the command with global options\n const optionsString = globalOptions.length > 0 ? ` ${globalOptions.join(' ')}` : '';\n\n // Add package argument for link/unlink/updates commands\n const packageArg = runConfig.tree?.packageArgument;\n const packageArgString = (packageArg && (builtInCommand === 'link' || builtInCommand === 'unlink' || builtInCommand === 'updates'))\n ? ` \"${packageArg}\"`\n : '';\n\n // Add command-specific options\n let commandSpecificOptions = '';\n\n // Commit command options\n if (builtInCommand === 'commit') {\n if (runConfig.commit?.selfReflection) {\n commandSpecificOptions += ' --self-reflection';\n }\n if (runConfig.commit?.add) {\n commandSpecificOptions += ' --add';\n }\n if (runConfig.commit?.cached) {\n commandSpecificOptions += ' --cached';\n }\n if (runConfig.commit?.interactive) {\n commandSpecificOptions += ' --interactive';\n }\n if (runConfig.commit?.amend) {\n commandSpecificOptions += ' --amend';\n }\n if (runConfig.commit?.skipFileCheck) {\n commandSpecificOptions += ' --skip-file-check';\n }\n if (runConfig.commit?.maxAgenticIterations) {\n commandSpecificOptions += ` --max-agentic-iterations ${runConfig.commit.maxAgenticIterations}`;\n }\n if (runConfig.commit?.allowCommitSplitting) {\n commandSpecificOptions += ' --allow-commit-splitting';\n }\n if (runConfig.commit?.messageLimit) {\n commandSpecificOptions += ` --message-limit ${runConfig.commit.messageLimit}`;\n }\n if (runConfig.commit?.maxDiffBytes) {\n commandSpecificOptions += ` --max-diff-bytes ${runConfig.commit.maxDiffBytes}`;\n }\n if (runConfig.commit?.direction) {\n commandSpecificOptions += ` --direction \"${runConfig.commit.direction}\"`;\n }\n if (runConfig.commit?.context) {\n commandSpecificOptions += ` --context \"${runConfig.commit.context}\"`;\n }\n if (runConfig.commit?.contextFiles && runConfig.commit.contextFiles.length > 0) {\n commandSpecificOptions += ` --context-files ${runConfig.commit.contextFiles.join(' ')}`;\n }\n // Push option can be boolean or string (remote name)\n if (runConfig.commit?.push) {\n if (typeof runConfig.commit.push === 'string') {\n commandSpecificOptions += ` --push \"${runConfig.commit.push}\"`;\n } else {\n commandSpecificOptions += ' --push';\n }\n }\n // Model-specific options for commit\n if (runConfig.commit?.model) {\n commandSpecificOptions += ` --model \"${runConfig.commit.model}\"`;\n }\n if (runConfig.commit?.openaiReasoning) {\n commandSpecificOptions += ` --openai-reasoning ${runConfig.commit.openaiReasoning}`;\n }\n if (runConfig.commit?.openaiMaxOutputTokens) {\n commandSpecificOptions += ` --openai-max-output-tokens ${runConfig.commit.openaiMaxOutputTokens}`;\n }\n }\n\n // Release command options (only for direct 'release' command)\n if (builtInCommand === 'release') {\n if (runConfig.release?.selfReflection) {\n commandSpecificOptions += ' --self-reflection';\n }\n if (runConfig.release?.maxAgenticIterations) {\n commandSpecificOptions += ` --max-agentic-iterations ${runConfig.release.maxAgenticIterations}`;\n }\n if (runConfig.release?.interactive) {\n commandSpecificOptions += ' --interactive';\n }\n if (runConfig.release?.from) {\n commandSpecificOptions += ` --from \"${runConfig.release.from}\"`;\n }\n if (runConfig.release?.to) {\n commandSpecificOptions += ` --to \"${runConfig.release.to}\"`;\n }\n if (runConfig.release?.focus) {\n commandSpecificOptions += ` --focus \"${runConfig.release.focus}\"`;\n }\n if (runConfig.release?.context) {\n commandSpecificOptions += ` --context \"${runConfig.release.context}\"`;\n }\n if (runConfig.release?.contextFiles && runConfig.release.contextFiles.length > 0) {\n commandSpecificOptions += ` --context-files ${runConfig.release.contextFiles.join(' ')}`;\n }\n if (runConfig.release?.messageLimit) {\n commandSpecificOptions += ` --message-limit ${runConfig.release.messageLimit}`;\n }\n if (runConfig.release?.maxDiffBytes) {\n commandSpecificOptions += ` --max-diff-bytes ${runConfig.release.maxDiffBytes}`;\n }\n if (runConfig.release?.noMilestones) {\n commandSpecificOptions += ' --no-milestones';\n }\n if (runConfig.release?.fromMain) {\n commandSpecificOptions += ' --from-main';\n }\n // Model-specific options for release\n if (runConfig.release?.model) {\n commandSpecificOptions += ` --model \"${runConfig.release.model}\"`;\n }\n if (runConfig.release?.openaiReasoning) {\n commandSpecificOptions += ` --openai-reasoning ${runConfig.release.openaiReasoning}`;\n }\n if (runConfig.release?.openaiMaxOutputTokens) {\n commandSpecificOptions += ` --openai-max-output-tokens ${runConfig.release.openaiMaxOutputTokens}`;\n }\n }\n\n // Publish command options (pass self-reflection - publish reads other release config from config file)\n if (builtInCommand === 'publish') {\n if (runConfig.release?.selfReflection) {\n commandSpecificOptions += ' --self-reflection';\n }\n if (runConfig.release?.maxAgenticIterations) {\n commandSpecificOptions += ` --max-agentic-iterations ${runConfig.release.maxAgenticIterations}`;\n }\n // Publish has its own --from, --interactive, --from-main flags (not from release config)\n }\n\n // Unlink command options\n if (builtInCommand === 'unlink' && runConfig.tree?.cleanNodeModules) {\n commandSpecificOptions += ' --clean-node-modules';\n }\n\n // Link/Unlink externals\n if ((builtInCommand === 'link' || builtInCommand === 'unlink') && runConfig.tree?.externals && runConfig.tree.externals.length > 0) {\n commandSpecificOptions += ` --externals ${runConfig.tree.externals.join(' ')}`;\n }\n\n commandToRun = `kodrdriv ${builtInCommand}${optionsString}${packageArgString}${commandSpecificOptions}`;\n isBuiltInCommand = true;\n } else if (cmd) {\n // Custom command mode\n commandToRun = cmd;\n }\n\n if (commandToRun) {\n // Validate scripts for run command before execution\n const scriptsToValidate = (runConfig as any).__scriptsToValidate;\n if (scriptsToValidate && scriptsToValidate.length > 0) {\n logger.info(`🔍 Validating scripts before execution: ${scriptsToValidate.join(', ')}`);\n const validation = await validateScripts(dependencyGraph.packages, scriptsToValidate);\n\n if (!validation.valid) {\n logger.error('');\n logger.error('❌ Script validation failed. Cannot proceed with execution.');\n logger.error('');\n logger.error('💡 To fix this:');\n logger.error(' 1. Add the missing scripts to the package.json files');\n logger.error(' 2. Or exclude packages that don\\'t need these scripts using --exclude');\n logger.error(' 3. Or run individual packages that have the required scripts');\n logger.error('');\n throw new Error('Script validation failed. See details above.');\n }\n }\n\n // Validate command for parallel execution if parallel mode is enabled\n if (runConfig.tree?.parallel) {\n const { CommandValidator } = await import('@eldrforge/tree-execution');\n const validation = CommandValidator.validateForParallel(commandToRun, builtInCommand);\n\n CommandValidator.logValidation(validation);\n\n if (!validation.valid) {\n logger.error('');\n logger.error('Cannot proceed with parallel execution due to validation errors.');\n logger.error('Run without --parallel flag to execute sequentially.');\n throw new Error('Command validation failed for parallel execution');\n }\n\n // Apply recommended concurrency if not explicitly set\n if (!runConfig.tree.maxConcurrency) {\n const os = await import('os');\n const recommended = CommandValidator.getRecommendedConcurrency(\n builtInCommand,\n os.cpus().length,\n commandToRun\n );\n\n if (recommended !== os.cpus().length) {\n const reason = builtInCommand ? builtInCommand : `custom command \"${commandToRun}\"`;\n logger.info(`💡 Using recommended concurrency for ${reason}: ${recommended}`);\n runConfig.tree.maxConcurrency = recommended;\n }\n }\n }\n\n // Create set of all package names for inter-project dependency detection\n const allPackageNames = new Set(Array.from(dependencyGraph.packages.keys()));\n\n // Initialize execution context if not continuing\n if (!executionContext) {\n executionContext = {\n command: commandToRun,\n originalConfig: runConfig,\n publishedVersions: [],\n completedPackages: [],\n buildOrder: buildOrder,\n startTime: new Date(),\n lastUpdateTime: new Date()\n };\n\n // Save initial context for commands that support continuation\n if (isBuiltInCommand && (builtInCommand === 'publish' || builtInCommand === 'run') && !isDryRun) {\n await saveExecutionContext(executionContext, runConfig.outputDirectory);\n }\n }\n\n // Add spacing before command execution\n logger.info('');\n const executionDescription = isBuiltInCommand ? `built-in command \"${builtInCommand}\"` : `\"${commandToRun}\"`;\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Executing ${executionDescription} in ${buildOrder.length} packages...`);\n\n // Add detailed multi-project execution context for debug mode\n if (runConfig.debug) {\n logger.debug('MULTI_PROJECT_PLAN: Execution plan initialized | Total Packages: %d | Command: %s | Built-in: %s | Dry Run: %s | Parallel: %s',\n buildOrder.length, commandToRun, isBuiltInCommand, isDryRun, runConfig.tree?.parallel || false);\n\n // Log package execution order with dependencies\n logger.debug('MULTI_PROJECT_ORDER: Package execution sequence:');\n buildOrder.forEach((pkgName, idx) => {\n const pkgInfo = dependencyGraph.packages.get(pkgName);\n if (pkgInfo) {\n const deps = Array.isArray(pkgInfo.dependencies) ? pkgInfo.dependencies : [];\n const depStr = deps.length > 0\n ? ` | Dependencies: [${deps.join(', ')}]`\n : ' | Dependencies: none';\n logger.debug(' %d. %s%s', idx + 1, pkgName, depStr);\n }\n });\n\n // Log dependency levels for parallel execution understanding\n const levels = new Map<string, number>();\n const calculateLevels = (pkg: string, visited = new Set<string>()): number => {\n if (levels.has(pkg)) return levels.get(pkg)!;\n if (visited.has(pkg)) return 0; // Circular dependency\n\n visited.add(pkg);\n const pkgInfo = dependencyGraph.packages.get(pkg);\n const deps = Array.isArray(pkgInfo?.dependencies) ? pkgInfo.dependencies : [];\n if (!pkgInfo || deps.length === 0) {\n levels.set(pkg, 0);\n return 0;\n }\n\n const maxDepLevel = Math.max(...deps.map((dep: string) => calculateLevels(dep, new Set(visited))));\n const level = maxDepLevel + 1;\n levels.set(pkg, level);\n return level;\n };\n\n buildOrder.forEach(pkg => calculateLevels(pkg));\n const maxLevel = Math.max(...Array.from(levels.values()));\n\n logger.debug('MULTI_PROJECT_LEVELS: Dependency depth analysis | Max Depth: %d levels', maxLevel + 1);\n for (let level = 0; level <= maxLevel; level++) {\n const packagesAtLevel = buildOrder.filter(pkg => levels.get(pkg) === level);\n logger.debug(' Level %d (%d packages): %s', level, packagesAtLevel.length, packagesAtLevel.join(', '));\n }\n\n if (runConfig.tree?.parallel) {\n const os = await import('os');\n const concurrency = runConfig.tree.maxConcurrency || os.cpus().length;\n logger.debug('MULTI_PROJECT_PARALLEL: Parallel execution configuration | Max Concurrency: %d | Retry Attempts: %d',\n concurrency, runConfig.tree.retry?.maxAttempts || 3);\n }\n\n if (isContinue) {\n const completed = executionContext?.completedPackages.length || 0;\n logger.debug('MULTI_PROJECT_RESUME: Continuing previous execution | Completed: %d | Remaining: %d',\n completed, buildOrder.length - completed);\n }\n }\n\n // Show info for publish commands\n if (isBuiltInCommand && builtInCommand === 'publish') {\n logger.info('Inter-project dependencies will be automatically updated before each publish.');\n }\n\n let successCount = 0;\n let failedPackage: string | null = null;\n\n // If continuing, start from where we left off\n const startIndex = isContinue && executionContext ? executionContext.completedPackages.length : 0;\n\n // Check if parallel execution is enabled\n if (runConfig.tree?.parallel) {\n logger.info('🚀 Using parallel execution mode');\n\n // If dry run, show preview instead of executing\n if (isDryRun) {\n const preview = await generateDryRunPreview(\n dependencyGraph,\n buildOrder,\n commandToRun!,\n runConfig\n );\n return preview;\n }\n\n // Import parallel execution components\n const { TreeExecutionAdapter, createParallelProgressLogger, formatParallelResult } = await import('@eldrforge/tree-execution');\n const os = await import('os');\n\n // Create task pool\n const adapter = new TreeExecutionAdapter(\n {\n graph: dependencyGraph,\n maxConcurrency: runConfig.tree.maxConcurrency || os.cpus().length,\n command: commandToRun!,\n config: runConfig,\n checkpointPath: runConfig.outputDirectory,\n continue: isContinue,\n maxRetries: runConfig.tree.retry?.maxAttempts || 3,\n initialRetryDelay: runConfig.tree.retry?.initialDelayMs || 5000,\n maxRetryDelay: runConfig.tree.retry?.maxDelayMs || 60000,\n backoffMultiplier: runConfig.tree.retry?.backoffMultiplier || 2\n },\n executePackage as any\n );\n\n // Set up progress logging\n createParallelProgressLogger(adapter.getPool(), runConfig);\n\n // Execute\n const result = await adapter.execute();\n\n // Format and return result\n const formattedResult = formatParallelResult(result);\n return formattedResult;\n }\n\n // Sequential execution\n const executionStartTime = Date.now();\n for (let i = startIndex; i < buildOrder.length; i++) {\n const packageName = buildOrder[i];\n\n // Skip if already completed (in continue mode)\n if (executionContext && executionContext.completedPackages.includes(packageName)) {\n successCount++;\n continue;\n }\n\n const packageInfo = dependencyGraph.packages.get(packageName)!;\n const packageLogger = createPackageLogger(packageName, i + 1, buildOrder.length, isDryRun);\n\n const result = await executePackage(\n packageName,\n packageInfo,\n commandToRun!,\n runConfig,\n isDryRun,\n i,\n buildOrder.length,\n allPackageNames,\n isBuiltInCommand\n );\n\n if (result.success) {\n successCount++;\n\n // Update context\n if (executionContext && isBuiltInCommand && (builtInCommand === 'publish' || builtInCommand === 'run') && !isDryRun) {\n executionContext.completedPackages.push(packageName);\n executionContext.publishedVersions = publishedVersions;\n executionContext.lastUpdateTime = new Date();\n await saveExecutionContext(executionContext, runConfig.outputDirectory);\n }\n\n // Add spacing between packages (except after the last one)\n if (i < buildOrder.length - 1) {\n logger.info('');\n logger.info('');\n }\n } else {\n failedPackage = packageName;\n const formattedError = formatSubprojectError(packageName, result.error, packageInfo, i + 1, buildOrder.length);\n\n if (!isDryRun) {\n packageLogger.error(`Execution failed`);\n logger.error(formattedError);\n logger.error(`Failed after ${successCount} successful packages.`);\n\n // Special handling for timeout errors\n if (result.isTimeoutError) {\n logger.error('');\n logger.error('⏰ TIMEOUT DETECTED: This appears to be a timeout error.');\n logger.error(' This commonly happens when PR checks take longer than expected.');\n logger.error(' The execution context has been saved for recovery.');\n logger.error('');\n\n // Save context even on timeout for recovery\n if (executionContext && isBuiltInCommand && (builtInCommand === 'publish' || builtInCommand === 'run')) {\n executionContext.completedPackages.push(packageName);\n executionContext.publishedVersions = publishedVersions;\n executionContext.lastUpdateTime = new Date();\n await saveExecutionContext(executionContext, runConfig.outputDirectory);\n logger.info('💾 Execution context saved for recovery.');\n }\n\n // For publish commands, provide specific guidance about CI/CD setup\n if (builtInCommand === 'publish') {\n logger.error('');\n logger.error('💡 PUBLISH TIMEOUT TROUBLESHOOTING:');\n logger.error(' This project may not have CI/CD workflows configured.');\n logger.error(' Common solutions:');\n logger.error(' 1. Set up GitHub Actions workflows for this repository');\n logger.error(' 2. Use --sendit flag to skip user confirmation:');\n logger.error(` kodrdriv tree publish --sendit`);\n logger.error(' 3. Or manually promote this package:');\n logger.error(` kodrdriv tree publish --promote ${packageName}`);\n logger.error('');\n }\n }\n\n logger.error(`To resume from this point, run:`);\n if (isBuiltInCommand) {\n logger.error(` kodrdriv tree ${builtInCommand} --continue`);\n } else {\n logger.error(` kodrdriv tree --continue --cmd \"${commandToRun}\"`);\n }\n\n // For timeout errors, provide additional recovery instructions\n if (result.isTimeoutError) {\n logger.error('');\n logger.error('🔧 RECOVERY OPTIONS:');\n if (builtInCommand === 'publish') {\n logger.error(' 1. Wait for the PR checks to complete, then run:');\n logger.error(` cd ${packageInfo.path}`);\n logger.error(` kodrdriv publish`);\n logger.error(' 2. After the individual publish completes, run:');\n logger.error(` kodrdriv tree ${builtInCommand} --continue`);\n } else {\n logger.error(' 1. Fix any issues in the package, then run:');\n logger.error(` cd ${packageInfo.path}`);\n logger.error(` ${commandToRun}`);\n logger.error(' 2. After the command completes successfully, run:');\n logger.error(` kodrdriv tree ${builtInCommand} --continue`);\n }\n logger.error(' 3. Or promote this package to completed status:');\n logger.error(` kodrdriv tree ${builtInCommand} --promote ${packageName}`);\n logger.error(' 4. Or manually edit .kodrdriv-context to mark this package as completed');\n }\n\n // Add clear error summary at the very end\n logger.error('');\n logger.error('📋 ERROR SUMMARY:');\n logger.error(` Project that failed: ${packageName}`);\n logger.error(` Location: ${packageInfo.path}`);\n logger.error(` Position in tree: ${i + 1} of ${buildOrder.length} packages`);\n logger.error(` What failed: ${result.error?.message || 'Unknown error'}`);\n logger.error('');\n\n throw new Error(`Command failed in package ${packageName}`);\n }\n break;\n }\n }\n\n if (!failedPackage) {\n const totalExecutionTime = Date.now() - executionStartTime;\n const totalSeconds = (totalExecutionTime / 1000).toFixed(1);\n const totalMinutes = (totalExecutionTime / 60000).toFixed(1);\n const timeDisplay = totalExecutionTime < 60000\n ? `${totalSeconds}s`\n : `${totalMinutes}min (${totalSeconds}s)`;\n\n logger.info('');\n logger.info('═══════════════════════════════════════════════════════════');\n const summary = `${isDryRun ? 'DRY RUN: ' : ''}All ${buildOrder.length} packages completed successfully! 🎉`;\n logger.info(summary);\n logger.info(`⏱️ Total execution time: ${timeDisplay}`);\n logger.info(`📦 Packages processed: ${successCount}/${buildOrder.length}`);\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n\n // Clean up context on successful completion\n if (isBuiltInCommand && (builtInCommand === 'publish' || builtInCommand === 'run') && !isDryRun) {\n await cleanupContext(runConfig.outputDirectory);\n }\n\n return returnOutput; // Don't duplicate the summary in return string\n }\n }\n\n return returnOutput;\n\n } catch (error: any) {\n const errorMessage = `Failed to analyze workspace: ${error.message}`;\n logger.error(errorMessage);\n throw new Error(errorMessage);\n } finally {\n // Intentionally preserve the mutex across executions to support multiple runs in the same process (e.g., test suite)\n // Do not destroy here; the process lifecycle will clean up resources.\n }\n};\n","#!/usr/bin/env node\n/**\n * Versions command - Update dependency versions in package.json files\n *\n * This command helps manage dependency versions across packages in a workspace.\n * It can update dependencies to use semantic versioning patterns (^, ~, etc.)\n * for packages within the same scope.\n *\n * Supported subcommands:\n * - minor: Updates all same-scope dependencies to use ^ (caret) range for minor updates\n */\n\nimport path from 'path';\nimport fs from 'fs/promises';\nimport { getLogger, Config } from '@eldrforge/core';\nimport { createStorage } from '@eldrforge/shared';\nimport { safeJsonParse, validatePackageJson } from '@eldrforge/git-tools';\n\n\n// Simplified package info for version management (distinct from tree-core's PackageInfo)\ninterface VersionPackageInfo {\n name: string;\n version: string;\n packageJsonPath: string;\n}\n\n/**\n * Discover all package.json files in the workspace\n */\nconst discoverPackages = async (\n directories: string[],\n logger: any\n): Promise<VersionPackageInfo[]> => {\n const storage = createStorage();\n const packages: VersionPackageInfo[] = [];\n\n for (const directory of directories) {\n logger.verbose(`Scanning directory: ${directory}`);\n\n try {\n const packageJsonPath = path.join(directory, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n\n if (packageJson.name) {\n packages.push({\n name: packageJson.name,\n version: packageJson.version,\n packageJsonPath\n });\n logger.verbose(`Found package: ${packageJson.name}@${packageJson.version}`);\n }\n } else {\n // Look for nested package.json files in subdirectories\n try {\n const entries = await fs.readdir(directory, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {\n const subDir = path.join(directory, entry.name);\n const subPackages = await discoverPackages([subDir], logger);\n packages.push(...subPackages);\n }\n }\n } catch (error) {\n logger.debug(`Could not scan subdirectories in ${directory}: ${error}`);\n }\n }\n } catch (error: any) {\n logger.warn(`VERSIONS_DIR_PROCESS_FAILED: Failed to process directory | Directory: ${directory} | Error: ${error.message}`);\n }\n }\n\n return packages;\n};\n\n/**\n * Extract scope from package name (e.g., \"@eldrforge/package\" -> \"@eldrforge\")\n */\nconst getPackageScope = (packageName: string): string | null => {\n if (packageName.startsWith('@')) {\n const parts = packageName.split('/');\n if (parts.length >= 2) {\n return parts[0];\n }\n }\n return null;\n};\n\n\n\n/**\n * Normalize version string to major.minor format (remove patch version)\n */\nconst normalizeToMinorVersion = (versionString: string): string => {\n // Extract the version number, preserving any prefix (^, ~, >=, etc.)\n const match = versionString.match(/^([^0-9]*)([0-9]+\\.[0-9]+)(\\.[0-9]+)?(.*)$/);\n\n if (match) {\n const [, prefix, majorMinor, , suffix] = match;\n return `${prefix}${majorMinor}${suffix || ''}`;\n }\n\n // If it doesn't match the expected pattern, return as-is\n return versionString;\n};\n\n/**\n * Update dependencies in a package.json to normalize same-scope dependencies to major.minor format\n */\nconst updateDependenciesMinor = async (\n packageInfo: VersionPackageInfo,\n allPackages: VersionPackageInfo[],\n isDryRun: boolean,\n logger: any\n): Promise<boolean> => {\n const storage = createStorage();\n const currentScope = getPackageScope(packageInfo.name);\n\n if (!currentScope) {\n logger.verbose(`Skipping ${packageInfo.name} - not a scoped package`);\n return false;\n }\n\n logger.verbose(`Processing ${packageInfo.name} for scope ${currentScope}`);\n\n try {\n const packageJsonContent = await storage.readFile(packageInfo.packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageInfo.packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageInfo.packageJsonPath);\n\n const sectionsToUpdate = ['dependencies', 'devDependencies', 'peerDependencies'];\n let hasChanges = false;\n\n // Create a set of same-scope package names for quick lookup\n const sameScopePackageNames = new Set<string>();\n for (const pkg of allPackages) {\n const pkgScope = getPackageScope(pkg.name);\n if (pkgScope === currentScope) {\n sameScopePackageNames.add(pkg.name);\n }\n }\n\n for (const section of sectionsToUpdate) {\n const deps = packageJson[section];\n if (!deps) continue;\n\n for (const [depName, currentVersion] of Object.entries(deps)) {\n // Update if this is a same-scope dependency (check scope, not just discovered packages)\n const depScope = getPackageScope(depName);\n if (depScope === currentScope) {\n const normalizedVersion = normalizeToMinorVersion(currentVersion as string);\n\n if (currentVersion !== normalizedVersion) {\n if (isDryRun) {\n logger.info(`VERSIONS_WOULD_NORMALIZE: Would normalize dependency version | Mode: dry-run | Section: ${section} | Dependency: ${depName} | Current: ${currentVersion} | Normalized: ${normalizedVersion}`);\n } else {\n logger.info(`VERSIONS_NORMALIZING: Normalizing dependency version | Section: ${section} | Dependency: ${depName} | Current: ${currentVersion} | Normalized: ${normalizedVersion}`);\n deps[depName] = normalizedVersion;\n }\n hasChanges = true;\n }\n }\n }\n }\n\n if (hasChanges && !isDryRun) {\n // Write updated package.json\n await storage.writeFile(\n packageInfo.packageJsonPath,\n JSON.stringify(packageJson, null, 2) + '\\n',\n 'utf-8'\n );\n logger.info(`VERSIONS_PACKAGE_UPDATED: Updated dependencies in package | Package: ${packageInfo.name} | Status: saved`);\n }\n\n return hasChanges;\n\n } catch (error: any) {\n logger.warn(`VERSIONS_PACKAGE_UPDATE_FAILED: Failed to update dependencies | Package: ${packageInfo.name} | Error: ${error.message}`);\n return false;\n }\n};\n\n/**\n * Execute the versions minor command\n */\nconst executeMinor = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const isDryRun = runConfig.dryRun || false;\n\n logger.info('VERSIONS_NORMALIZE_STARTING: Normalizing same-scope dependencies | Format: major.minor | Purpose: Standardize version format across packages');\n\n // Determine directories to scan\n const directories = runConfig.versions?.directories ||\n runConfig.contextDirectories ||\n [process.cwd()];\n\n if (directories.length === 0) {\n directories.push(process.cwd());\n }\n\n logger.verbose(`Scanning directories: ${directories.join(', ')}`);\n\n // Discover all packages\n const allPackages = await discoverPackages(directories, logger);\n\n if (allPackages.length === 0) {\n logger.warn('VERSIONS_NO_PACKAGES: No packages found in specified directories | Directories: ' + (runConfig.tree?.directories || []).join(', ') + ' | Action: Nothing to normalize');\n return 'No packages found to process.';\n }\n\n logger.info(`VERSIONS_PACKAGES_FOUND: Found packages for normalization | Count: ${allPackages.length} | Status: Analyzing`);\n\n // Group packages by scope\n const packagesByScope = new Map<string, VersionPackageInfo[]>();\n const unscopedPackages: VersionPackageInfo[] = [];\n\n for (const pkg of allPackages) {\n const scope = getPackageScope(pkg.name);\n if (scope) {\n if (!packagesByScope.has(scope)) {\n packagesByScope.set(scope, []);\n }\n packagesByScope.get(scope)!.push(pkg);\n } else {\n unscopedPackages.push(pkg);\n }\n }\n\n logger.info(`VERSIONS_SCOPES_FOUND: Found package scopes | Count: ${packagesByScope.size} | Scopes: ${Array.from(packagesByScope.keys()).join(', ')}`);\n if (unscopedPackages.length > 0) {\n logger.info(`VERSIONS_UNSCOPED_PACKAGES: Found unscoped packages | Count: ${unscopedPackages.length} | Action: Will be skipped | Reason: Only scoped packages supported`);\n // Log each unscoped package being skipped\n for (const pkg of unscopedPackages) {\n logger.verbose(`Skipping ${pkg.name} - not a scoped package`);\n }\n }\n\n let totalUpdated = 0;\n let totalChanges = 0;\n\n // Process each scope\n for (const [scope, packages] of packagesByScope) {\n logger.info(`\\nVERSIONS_SCOPE_PROCESSING: Processing packages in scope | Scope: ${scope} | Package Count: ${packages.length} | Action: Normalize versions`);\n\n for (const pkg of packages) {\n const hasChanges = await updateDependenciesMinor(pkg, allPackages, isDryRun, logger);\n if (hasChanges) {\n totalChanges++;\n }\n }\n totalUpdated += packages.length;\n }\n\n const verb = isDryRun ? 'Would update' : 'Updated';\n const summary = `${verb} ${totalChanges} of ${totalUpdated} packages with dependency changes.`;\n\n if (isDryRun) {\n logger.info(`\\nVERSIONS_DRY_RUN_COMPLETE: Dry run completed | Mode: dry-run | Summary: ${summary}`);\n return `Dry run complete. ${summary}`;\n } else {\n logger.info(`\\nVERSIONS_UPDATE_COMPLETE: Dependencies updated successfully | Status: completed | Summary: ${summary}`);\n return `Dependencies updated successfully. ${summary}`;\n }\n};\n\n/**\n * Main execute function for the versions command\n */\nexport const execute = async (runConfig: Config): Promise<string> => {\n const subcommand = runConfig.versions?.subcommand;\n\n if (!subcommand) {\n throw new Error('Versions command requires a subcommand. Use: kodrdriv versions minor');\n }\n\n switch (subcommand) {\n case 'minor':\n return await executeMinor(runConfig);\n default:\n throw new Error(`Unknown versions subcommand: ${subcommand}. Supported: minor`);\n }\n};\n","import { getLogger } from '@eldrforge/core';\nimport { run } from '@eldrforge/git-tools';\nimport { PerformanceTimer } from '@eldrforge/commands-git';\n\n// Check if npm install is needed by examining lock file and node_modules\nexport const isNpmInstallNeeded = async (storage: any): Promise<{ needed: boolean; reason: string }> => {\n const logger = getLogger();\n const timer = PerformanceTimer.start(logger, 'Checking if npm install is needed');\n\n try {\n // Check if package-lock.json exists\n const hasLockFile = await storage.exists('package-lock.json');\n if (!hasLockFile) {\n timer.end('npm install needed - no lock file');\n return { needed: true, reason: 'No package-lock.json found' };\n }\n\n // Check if node_modules exists\n const hasNodeModules = await storage.exists('node_modules');\n if (!hasNodeModules) {\n timer.end('npm install needed - no node_modules');\n return { needed: true, reason: 'No node_modules directory found' };\n }\n\n // Check if node_modules is populated (has at least a few entries)\n const nodeModulesContents = await storage.listFiles('node_modules');\n if (nodeModulesContents.length < 3) { // Usually has .bin, .package-lock.json, and packages\n timer.end('npm install needed - empty node_modules');\n return { needed: true, reason: 'node_modules appears empty or incomplete' };\n }\n\n // Get timestamps to check if package.json is newer than node_modules\n const packageJsonStats = await storage.exists('package.json');\n if (!packageJsonStats) {\n timer.end('npm install not needed - no package.json');\n return { needed: false, reason: 'No package.json found' };\n }\n\n timer.end('npm install not needed - appears up to date');\n return { needed: false, reason: 'Dependencies appear to be up to date' };\n } catch (error: any) {\n timer.end(`npm install check failed: ${error.message}`);\n logger.debug(`Failed to check npm install status: ${error.message}`);\n return { needed: true, reason: 'Could not verify dependency status, installing to be safe' };\n }\n};\n\n// Run npm install with optimizations\nexport const optimizedNpmInstall = async (options: {\n skipIfNotNeeded?: boolean;\n useCache?: boolean;\n verbose?: boolean;\n} = {}): Promise<{ duration: number; skipped: boolean; reason: string }> => {\n const logger = getLogger();\n const { createStorage } = await import('@eldrforge/shared');\n const storage = createStorage();\n\n const {\n skipIfNotNeeded = true,\n useCache = true,\n verbose = false\n } = options;\n\n // Check if install is needed\n if (skipIfNotNeeded) {\n const installCheck = await isNpmInstallNeeded(storage);\n if (!installCheck.needed) {\n logger.info(`NPM_INSTALL_SKIPPED: Skipping npm install optimization | Reason: ${installCheck.reason} | Status: not-needed`);\n return { duration: 0, skipped: true, reason: installCheck.reason };\n } else {\n logger.verbose(`📦 npm install required: ${installCheck.reason}`);\n }\n }\n\n // Build optimized npm install command\n const npmArgs = ['install'];\n\n if (!verbose) {\n npmArgs.push('--silent');\n }\n\n if (useCache) {\n // npm uses cache by default, but we can ensure it's not bypassed\n npmArgs.push('--prefer-offline');\n }\n\n // Use --no-audit and --no-fund for faster installs in link/unlink scenarios\n npmArgs.push('--no-audit', '--no-fund');\n\n const command = `npm ${npmArgs.join(' ')}`;\n\n logger.info(`NPM_INSTALL_OPTIMIZED: Running optimized npm install | Mode: optimized | Command: npm install`);\n logger.verbose(`Command: ${command}`);\n\n const timer = PerformanceTimer.start(logger, 'Optimized npm install execution');\n\n try {\n await run(command);\n const duration = timer.end('Optimized npm install completed successfully');\n logger.info(`NPM_INSTALL_SUCCESS: Dependencies installed successfully | Duration: ${duration}ms | Status: completed`);\n return { duration, skipped: false, reason: 'Installation completed successfully' };\n } catch (error: any) {\n timer.end('Optimized npm install failed');\n throw new Error(`Failed to run optimized npm install: ${error.message}`);\n }\n};\n\n// Helper to run npm ci if package-lock.json is available (faster than npm install)\nexport const tryNpmCi = async (): Promise<{ success: boolean; duration?: number }> => {\n const logger = getLogger();\n const { createStorage } = await import('@eldrforge/shared');\n const storage = createStorage();\n\n try {\n // Check if package-lock.json exists\n const hasLockFile = await storage.exists('package-lock.json');\n if (!hasLockFile) {\n return { success: false };\n }\n\n logger.info('NPM_CI_USING: Using npm ci for faster installation | Command: npm ci | Advantage: Faster clean install');\n const timer = PerformanceTimer.start(logger, 'npm ci execution');\n\n await run('npm ci --silent --no-audit --no-fund');\n const duration = timer.end('npm ci completed successfully');\n\n logger.info(`NPM_CI_SUCCESS: Dependencies installed with npm ci | Duration: ${duration}ms | Status: completed`);\n return { success: true, duration };\n } catch (error: any) {\n logger.verbose(`npm ci failed, will fall back to npm install: ${error.message}`);\n return { success: false };\n }\n};\n\n// Main function that tries the fastest approach first\nexport const smartNpmInstall = async (options: {\n skipIfNotNeeded?: boolean;\n preferCi?: boolean;\n verbose?: boolean;\n} = {}): Promise<{ duration: number; method: string; skipped: boolean }> => {\n const logger = getLogger();\n const {\n skipIfNotNeeded = true,\n preferCi = true,\n verbose = false\n } = options;\n\n const overallTimer = PerformanceTimer.start(logger, 'Smart npm install');\n\n // Try npm ci first if preferred and available\n if (preferCi) {\n const ciResult = await tryNpmCi();\n if (ciResult.success) {\n overallTimer.end('Smart npm install completed with npm ci');\n return {\n duration: ciResult.duration || 0,\n method: 'npm ci',\n skipped: false\n };\n }\n }\n\n // Fall back to optimized npm install\n const installResult = await optimizedNpmInstall({\n skipIfNotNeeded,\n useCache: true,\n verbose\n });\n\n overallTimer.end(`Smart npm install completed with ${installResult.skipped ? 'skip' : 'npm install'}`);\n\n return {\n duration: installResult.duration,\n method: installResult.skipped ? 'skipped' : 'npm install',\n skipped: installResult.skipped\n };\n};\n","import type { ExecutionMetrics } from '@eldrforge/tree-execution';\n\n/**\n * PerformanceTracker collects and analyzes performance metrics\n */\nexport class PerformanceTracker {\n private startTime: number;\n private packageStartTimes = new Map<string, number>();\n private packageEndTimes = new Map<string, number>();\n private concurrencyHistory: number[] = [];\n\n constructor() {\n this.startTime = Date.now();\n }\n\n /**\n * Record package start\n */\n recordPackageStart(packageName: string): void {\n this.packageStartTimes.set(packageName, Date.now());\n }\n\n /**\n * Record package end\n */\n recordPackageEnd(packageName: string): void {\n this.packageEndTimes.set(packageName, Date.now());\n }\n\n /**\n * Record concurrency level\n */\n recordConcurrency(level: number): void {\n this.concurrencyHistory.push(level);\n }\n\n /**\n * Calculate comprehensive metrics\n */\n calculateMetrics(_maxConcurrency: number): ExecutionMetrics {\n const totalDuration = Date.now() - this.startTime;\n const durations = this.getPackageDurations();\n\n const averageDuration = durations.length > 0\n ? durations.reduce((a, b) => a + b, 0) / durations.length\n : 0;\n\n const peakConcurrency = this.concurrencyHistory.length > 0\n ? Math.max(...this.concurrencyHistory)\n : 0;\n\n const averageConcurrency = this.concurrencyHistory.length > 0\n ? this.concurrencyHistory.reduce((a, b) => a + b, 0) / this.concurrencyHistory.length\n : 0;\n\n // Calculate speedup vs sequential\n const totalCPUTime = durations.reduce((a, b) => a + b, 0);\n const speedupVsSequential = totalDuration > 0 ? totalCPUTime / totalDuration : 1;\n\n return {\n totalDuration,\n averagePackageDuration: averageDuration,\n peakConcurrency,\n averageConcurrency,\n speedupVsSequential\n };\n }\n\n /**\n * Get package durations\n */\n private getPackageDurations(): number[] {\n const durations: number[] = [];\n\n for (const [pkg, startTime] of this.packageStartTimes) {\n const endTime = this.packageEndTimes.get(pkg);\n if (endTime) {\n durations.push(endTime - startTime);\n }\n }\n\n return durations;\n }\n\n /**\n * Get efficiency metrics\n */\n getEfficiency(maxConcurrency: number): {\n utilization: number;\n efficiency: number;\n parallelEfficiency: number;\n } {\n const durations = this.getPackageDurations();\n const totalDuration = Date.now() - this.startTime;\n const totalCPUTime = durations.reduce((a, b) => a + b, 0);\n\n const utilization = this.concurrencyHistory.length > 0\n ? (this.concurrencyHistory.reduce((a, b) => a + b, 0) / this.concurrencyHistory.length) / maxConcurrency * 100\n : 0;\n\n const efficiency = totalDuration > 0\n ? (totalCPUTime / (totalDuration * maxConcurrency)) * 100\n : 0;\n\n const speedup = totalDuration > 0 ? totalCPUTime / totalDuration : 1;\n const idealSpeedup = maxConcurrency;\n const parallelEfficiency = (speedup / idealSpeedup) * 100;\n\n return {\n utilization,\n efficiency,\n parallelEfficiency\n };\n }\n\n /**\n * Generate performance report\n */\n generateReport(maxConcurrency: number): string {\n const metrics = this.calculateMetrics(maxConcurrency);\n const efficiency = this.getEfficiency(maxConcurrency);\n const durations = this.getPackageDurations();\n\n const lines: string[] = [];\n\n lines.push('');\n lines.push('═══════════════════════════════════════════');\n lines.push(' Performance Report');\n lines.push('═══════════════════════════════════════════');\n lines.push('');\n\n lines.push('⏱️ Timing:');\n lines.push(` Total Execution: ${this.formatDuration(metrics.totalDuration)}`);\n lines.push(` Avg Per Package: ${this.formatDuration(metrics.averagePackageDuration)}`);\n\n if (durations.length > 0) {\n lines.push(` Fastest Package: ${this.formatDuration(Math.min(...durations))}`);\n lines.push(` Slowest Package: ${this.formatDuration(Math.max(...durations))}`);\n }\n\n lines.push('');\n\n lines.push('🔥 Concurrency:');\n lines.push(` Max Allowed: ${maxConcurrency}`);\n lines.push(` Peak Reached: ${metrics.peakConcurrency}`);\n lines.push(` Average: ${metrics.averageConcurrency.toFixed(2)}`);\n lines.push(` Utilization: ${efficiency.utilization.toFixed(1)}%`);\n lines.push('');\n\n lines.push('🚀 Performance:');\n if (metrics.speedupVsSequential) {\n lines.push(` Speedup: ${metrics.speedupVsSequential.toFixed(2)}x`);\n }\n lines.push(` Efficiency: ${efficiency.efficiency.toFixed(1)}%`);\n lines.push(` Parallel Efficiency: ${efficiency.parallelEfficiency.toFixed(1)}%`);\n lines.push('');\n\n const totalCPUTime = durations.reduce((a, b) => a + b, 0);\n const timeSaved = totalCPUTime - metrics.totalDuration;\n if (timeSaved > 0) {\n lines.push(`⏰ Time Saved: ${this.formatDuration(timeSaved)} vs sequential execution`);\n lines.push('');\n }\n\n lines.push('═══════════════════════════════════════════');\n lines.push('');\n\n return lines.join('\\n');\n }\n\n private 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\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n\n return `${seconds}s`;\n }\n}\n"],"names":["isSymbolicLink","filePath","stats","fs","lstat","getSymbolicLinkTarget","target","readlink","findLinkedDependencies","packagePath","packageName","storage","logger","linkedDependencies","packageJsonPath","path","join","packageJsonContent","readFile","parsed","safeJsonParse","packageJson","validatePackageJson","allDependencies","dependencies","devDependencies","nodeModulesPath","dependencyName","version","Object","entries","dependencyPath","startsWith","scope","name","split","isExternal","includes","push","targetPath","error","warn","message","matchesExternalLinkPattern","externalLinkPatterns","length","some","pattern","createSymbolicLink","sourcePath","targetDir","isDryRun","scopeDir","mkdir","recursive","verbose","relativePath","relative","dirname","existingLink","info","unlink","symlink","isDirectory","rm","force","code","parsePackageArgument","packageArg","parts","Error","findMatchingPackages","targetDirectories","matchingPackages","allPackageJsonFiles","targetDirectory","packageJsonFiles","findAllPackageJsonFiles","concat","packageJsonLocation","packageDir","replace","isInScope","isExactMatch","isSource","findConsumingPackages","targetPackageName","consumingPackages","dependencyTypes","hasDependency","depType","executeInternal","runConfig","packageArgument","dryRun","link","getDryRunLogger","createStorage","executeStatus","tree","directories","process","cwd","currentDir","currentPackageJson","currentScope","run","sameScopeDependencies","keys","filter","depName","externals","externalDependencies","allDependenciesToLink","scopeRoots","globallyLinkedViaScopeRoots","depScope","scopeRoot","absoluteScopeRoot","resolve","expectedPackageName","originalCwd","chdir","linkError","packageError","globallyLinkedPackages","result","resultStr","stdout","directoryPaths","trim","line","dirPath","linkedCount","success","summary","linkedPackages","packagesToLink","pkg","consumer","consumerOriginalCwd","runSecure","allConsumingPackages","Set","forEach","add","size","getLogger","packageStatuses","output","packageStatus","dep","type","execute","finalPackageArgument","matchesExternalUnlinkPattern","externalUnlinkPatterns","removeSymbolicLink","exists","cleanNodeModules","dryRunMessage","util","child_process","execPromise","promisify","exec","packageScope","linksData","scopeLinkedPackages","unlinkedPackages","packagesToUnlink","updateInterProjectDependencies","hasChanges","updated","sectionsToUpdate","depsToUpdate","section","deps","depVersion","currentVersion","parentDir","siblingPackageJson","pop","siblingContent","siblingPackage","newVersion","writeFile","JSON","stringify","interProjectMode","updates","interProject","update","ncuCommand","stderr","hasUpdates","installResult","installError","publishedVersions","executionContext","globalStateMutex","SimpleMutex","allPackageNames","packageLogger","publishedVersion","has","oldVersion","updateScopedDependencies","beforeContent","scopesToUpdate","configuredScopes","publish","scopedDependencyUpdates","undefined","Array","from","updatesConfig","Updates","afterContent","getContextFilePath","outputDirectory","outputDir","DEFAULT_OUTPUT_DIRECTORY","getOutputPath","saveExecutionContext","context","contextFilePath","ensureDirectory","contextData","startTime","toISOString","lastUpdateTime","map","v","publishTime","loadExecutionContext","contextContent","Date","cleanupContext","deleteFile","promotePackageToCompleted","completedPackages","validateScripts","packages","scripts","missingScripts","Map","debug","packageInfo","missingForPackage","validated","script","set","valid","missing","extractPublishedVersion","tagOutput","tags","Boolean","latestTag","substring","runWithLogging","command","options","showOutput","logFilePath","execOptions","encoding","writeToLogFile","content","logDir","appendFile","err","timestamp","String","stack","createPackageLogger","sequenceNumber","totalCount","baseLogger","prefix","dryRunPrefix","args","silly","formatSubprojectError","_packageInfo","_position","_total","lines","indentedMessage","indentedStderr","indentedStdout","executePackage","commandToRun","index","total","isBuiltInCommand","commandName","isPublishCommand","isCommitCommand","isArray","publishWasSkipped","executionTimer","PerformanceTimer","start","executionDuration","mutexLocked","lock","versionSnapshot","unlock","access","stat","accessError","runGitWithLock","hasAnyUpdates","hasScopedUpdates","hasInterProjectUpdates","commitTimeoutMs","commitPromise","Commit","commit","timeoutPromise","Promise","_","reject","setTimeout","progressInterval","setInterval","race","commitError","clearInterval","effectiveCommandToRun","optimizationInfo","isPrecommitCommand","optimization","optimizePrecommitCommand","optimizedCommand","skipped","reasons","clean","test","skippedParts","commandParts","builtInCommandName","effectiveCommand","commandTimeoutMs","commandPromise","commandTimeoutPromise","now","recordTestRun","end","seconds","toFixed","restoreError","timeStr","skippedNoChanges","logFile","stderrLines","trimmed","slice","errorMessage","toLowerCase","isTimeoutError","generateDryRunPreview","dependencyGraph","buildOrder","levels","packageLevels","edges","get","maxDepLevel","depLevel","Math","max","pkgLevel","i","levelPackages","pkgInfo","isPublish","status","changedFiles","nonVersionFiles","f","maxConcurrency","checkTreePublishStatus","kodrdrivProcesses","pid","isContinue","continue","promotePackage","promote","auditBranches","excludedPatterns","exclude","allPackageJsonPaths","packageJsonPaths","scanForPackageJsonFiles","buildDependencyGraph","values","auditBranchState","formatAuditResults","getRemoteDefaultBranch","targetBranch","firstGitPkg","find","isInGitRepository","auditResult","checkPR","checkConflicts","concurrency","formatted","issuesFound","goodPackages","loadRecoveryManager","statusParallel","recoveryManager","showStatus","validateState","validation","issue","issues","warnings","warning","hasRecoveryOptions","markCompleted","skipPackages","retryFailed","skipFailed","resetPackage","applyRecoveryOptions","maxRetries","retry","maxAttempts","isParallelMode","parallel","savedContext","originalConfig","builtInCommand","supportedBuiltInCommands","npmCommands","cmd","__scriptsToValidate","linkConfig","Link","unlinkConfig","Unlink","directoriesStr","topologicalSort","startFrom","startPackageName","pkgName","dirName","basename","allPackageJsonPathsForCheck","wasExcluded","parsePackageJson","shouldExclude","excludedPatternsStr","availablePackages","startIndex","findIndex","originalLength","stopAt","stopIndex","stoppedCount","getVersionScopeIndicator","versionRange","cleanRange","prefixMatch","match","versionPart","dotCount","findConsumingPackagesForBranches","allPackages","consumers","targetScope","consumerDisplayName","scopeIndicator","sort","maxNameLength","maxBranchLength","maxVersionLength","maxStatusLength","maxLinkLength","maxConsumersLength","branchInfos","getGloballyLinkedPackages","ANSI","CURSOR_UP","CURSOR_TO_START","CLEAR_LINE","GREEN","BLUE","YELLOW","RESET","BOLD","supportsAnsi","isTTY","env","TERM","NO_COLOR","totalPackages","completedCount","isFirstProgress","updateProgress","currentPackage","completed","write","percentage","round","progressBar","repeat","floor","progress","current","processPackage","gitStatus","all","getGitStatusSummary","isGloballyLinked","linkedText","consumersWithLinkStatus","baseConsumerName","originalConsumerName","consumerPackageInfo","consumerLinkedDeps","linkProblems","getLinkedDependencies","getLinkCompatibilityProblems","consumerDisplay","branch","linked","batch","currentBatchStr","batchResults","maxConsumerLength","c","nameHeader","padEnd","branchHeader","versionHeader","statusHeader","linkHeader","consumersHeader","nameCol","branchCol","versionCol","statusCol","linkCol","emptyNameCol","emptyBranchCol","emptyVersionCol","emptyStatusCol","emptyLinkCol","packagesWithChanges","hasProblems","hasUncommittedChanges","hasUnstagedFiles","problemPackages","successCount","failedPackages","branchExists","failed","returnOutput","rangeInfo","rangeStr","localDeps","localDependencies","globalOptions","overrides","model","configDirectory","preferencesDirectory","optionsString","packageArgString","commandSpecificOptions","selfReflection","cached","interactive","amend","skipFileCheck","maxAgenticIterations","allowCommitSplitting","messageLimit","maxDiffBytes","direction","contextFiles","openaiReasoning","openaiMaxOutputTokens","release","to","focus","noMilestones","fromMain","scriptsToValidate","CommandValidator","validateForParallel","logValidation","os","recommended","getRecommendedConcurrency","cpus","reason","executionDescription","idx","depStr","calculateLevels","visited","level","maxLevel","packagesAtLevel","failedPackage","preview","TreeExecutionAdapter","createParallelProgressLogger","formatParallelResult","adapter","graph","config","checkpointPath","initialRetryDelay","initialDelayMs","maxRetryDelay","maxDelayMs","backoffMultiplier","getPool","formattedResult","executionStartTime","formattedError","totalExecutionTime","totalSeconds","totalMinutes","timeDisplay","discoverPackages","directory","readdir","withFileTypes","entry","subDir","subPackages","getPackageScope","normalizeToMinorVersion","versionString","majorMinor","suffix","updateDependenciesMinor","sameScopePackageNames","pkgScope","normalizedVersion","executeMinor","versions","contextDirectories","packagesByScope","unscopedPackages","totalUpdated","totalChanges","verb","subcommand","isNpmInstallNeeded","timer","hasLockFile","needed","hasNodeModules","nodeModulesContents","listFiles","packageJsonStats","optimizedNpmInstall","skipIfNotNeeded","useCache","installCheck","duration","npmArgs","tryNpmCi","smartNpmInstall","preferCi","overallTimer","ciResult","method","PerformanceTracker","recordPackageStart","packageStartTimes","recordPackageEnd","packageEndTimes","recordConcurrency","concurrencyHistory","calculateMetrics","_maxConcurrency","totalDuration","durations","getPackageDurations","averageDuration","reduce","a","b","peakConcurrency","averageConcurrency","totalCPUTime","speedupVsSequential","averagePackageDuration","endTime","getEfficiency","utilization","efficiency","speedup","idealSpeedup","parallelEfficiency","generateReport","metrics","formatDuration","min","timeSaved","ms","minutes"],"mappings":"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"}
|