@eldrforge/kodrdriv 0.0.39 → 0.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arguments.js +8 -5
- package/dist/arguments.js.map +1 -1
- package/dist/commands/publish-tree.js +223 -44
- package/dist/commands/publish-tree.js.map +1 -1
- package/dist/commands/unlink.js +27 -4
- package/dist/commands/unlink.js.map +1 -1
- package/dist/constants.js +3 -2
- package/dist/constants.js.map +1 -1
- package/dist/types.js +4 -2
- package/dist/types.js.map +1 -1
- package/dist/util/github.js +75 -46
- package/dist/util/github.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport path from 'path';\nimport { getLogger, getDryRunLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { safeJsonParse, validateLinkBackup, type LinkBackup } from '../util/validation';\nimport { run } from '../util/child';\nimport {\n PerformanceTimer,\n PackageJson,\n PackageJsonLocation,\n findAllPackageJsonFiles,\n scanDirectoryForPackages,\n checkForFileDependencies\n} from '../util/performance';\nimport { smartNpmInstall } from '../util/npmOptimizations';\n\ninterface ExtendedPackageJson extends PackageJson {\n workspaces?: string[] | { packages?: string[] };\n overrides?: Record<string, any>;\n resolutions?: Record<string, any>;\n}\n\n\n\ninterface ProblematicDependency {\n name: string;\n version: string;\n type: 'file:' | 'link:' | 'relative-path' | 'workspace' | 'override' | 'resolution';\n dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies' | 'workspaces' | 'overrides' | 'resolutions';\n packagePath: string;\n reason: string;\n}\n\nconst EXCLUDED_DIRECTORIES = [\n 'node_modules',\n 'dist',\n 'build',\n 'coverage',\n '.git',\n '.next',\n '.nuxt',\n 'out',\n 'public',\n 'static',\n 'assets'\n];\n\n\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const timer = PerformanceTimer.start(logger, 'Finding packages to unlink');\n const packagesToUnlink: string[] = [];\n\n logger.silly(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const scopeTimer = PerformanceTimer.start(logger, 'Scanning all scope roots for packages to unlink');\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n // Process all scopes in parallel for better performance\n const scopePromises = Object.entries(scopeRoots).map(async ([scope, rootDir]) => {\n logger.verbose(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n const scopeResults: Array<[string, string]> = [];\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n scopeResults.push([packageName, packagePath]);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n return scopeResults;\n });\n\n const allScopeResults = await Promise.all(scopePromises);\n\n // Flatten results and collect package names\n for (const scopeResults of allScopeResults) {\n for (const [packageName, packagePath] of scopeResults) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packageName);\n }\n }\n\n scopeTimer.end(`Scanned ${Object.keys(scopeRoots).length} scope roots, found ${packagesToUnlink.length} packages to unlink`);\n\n timer.end(`Found ${packagesToUnlink.length} packages to unlink`);\n return packagesToUnlink;\n};\n\nconst readLinkBackup = async (storage: any): Promise<LinkBackup> => {\n const backupPath = path.join(process.cwd(), '.kodrdriv-link-backup.json');\n if (await storage.exists(backupPath)) {\n try {\n const content = await storage.readFile(backupPath, 'utf-8');\n const parsed = safeJsonParse(content, 'link backup file');\n return validateLinkBackup(parsed);\n } catch (error) {\n throw new Error(`Failed to parse link backup file: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n return {};\n};\n\nconst writeLinkBackup = async (backup: LinkBackup, storage: any): Promise<void> => {\n const backupPath = path.join(process.cwd(), '.kodrdriv-link-backup.json');\n if (Object.keys(backup).length === 0) {\n // Remove backup file if empty\n if (await storage.exists(backupPath)) {\n await storage.deleteFile(backupPath);\n }\n } else {\n await storage.writeFile(backupPath, JSON.stringify(backup, null, 2), 'utf-8');\n }\n};\n\nconst restorePackageJson = async (\n packageJsonLocation: PackageJsonLocation,\n packagesToUnlink: string[],\n backup: LinkBackup,\n storage: any\n): Promise<number> => {\n const logger = getLogger();\n let restoredCount = 0;\n const { packageJson, path: packageJsonPath, relativePath } = packageJsonLocation;\n\n // Restore original versions from backup\n for (const packageName of packagesToUnlink) {\n const backupKey = `${relativePath}:${packageName}`;\n const backupEntry = backup[backupKey];\n\n if (!backupEntry) {\n logger.debug(`No backup found for ${backupKey}, skipping`);\n continue;\n }\n\n const currentDeps = (packageJson as any)[backupEntry.dependencyType];\n if (currentDeps && currentDeps[packageName]?.startsWith('file:')) {\n // Restore the original version\n currentDeps[packageName] = backupEntry.originalVersion;\n restoredCount++;\n logger.verbose(`Restored ${relativePath}/${backupEntry.dependencyType}.${packageName}: file:... -> ${backupEntry.originalVersion}`);\n\n // Remove from backup\n delete backup[backupKey];\n }\n }\n\n // NOTE: Don't write the file here - let the caller handle all modifications\n return restoredCount;\n};\n\n/**\n * Comprehensive scan for all types of problematic dependencies that could cause GitHub build failures\n */\nconst scanForProblematicDependencies = (packageJsonFiles: PackageJsonLocation[]): ProblematicDependency[] => {\n const logger = getLogger();\n const timer = PerformanceTimer.start(logger, 'Scanning for problematic dependencies');\n const problematicDeps: ProblematicDependency[] = [];\n\n for (const { path: packagePath, packageJson, relativePath } of packageJsonFiles) {\n const extendedPackageJson = packageJson as ExtendedPackageJson;\n\n // Check dependencies, devDependencies, peerDependencies\n const depTypes: Array<keyof Pick<ExtendedPackageJson, 'dependencies' | 'devDependencies' | 'peerDependencies'>> = [\n 'dependencies', 'devDependencies', 'peerDependencies'\n ];\n\n for (const depType of depTypes) {\n const deps = extendedPackageJson[depType];\n if (!deps) continue;\n\n for (const [name, version] of Object.entries(deps)) {\n let problemType: ProblematicDependency['type'] | null = null;\n let reason = '';\n\n // Check for file: dependencies\n if (version.startsWith('file:')) {\n problemType = 'file:';\n reason = 'File dependencies cause build failures in CI/CD environments';\n }\n // Check for link: dependencies\n else if (version.startsWith('link:')) {\n problemType = 'link:';\n reason = 'Link dependencies are not resolvable in remote environments';\n }\n // Check for relative path patterns that could be problematic\n else if (version.includes('../') || version.includes('./') || version.startsWith('/')) {\n problemType = 'relative-path';\n reason = 'Relative path dependencies are not resolvable in different environments';\n }\n // Check for workspace protocol (used by some package managers)\n else if (version.startsWith('workspace:')) {\n problemType = 'workspace';\n reason = 'Workspace protocol dependencies require workspace configuration';\n }\n\n if (problemType) {\n problematicDeps.push({\n name,\n version,\n type: problemType,\n dependencyType: depType,\n packagePath: relativePath,\n reason\n });\n }\n }\n }\n\n // Check workspace configurations\n if (extendedPackageJson.workspaces) {\n problematicDeps.push({\n name: 'workspaces',\n version: JSON.stringify(extendedPackageJson.workspaces),\n type: 'workspace',\n dependencyType: 'workspaces',\n packagePath: relativePath,\n reason: 'Workspace configurations can cause issues when published to npm'\n });\n }\n\n // Check overrides (npm 8.3+)\n if (extendedPackageJson.overrides) {\n for (const [name, override] of Object.entries(extendedPackageJson.overrides)) {\n if (typeof override === 'string' && (override.startsWith('file:') || override.startsWith('link:') || override.includes('../'))) {\n problematicDeps.push({\n name,\n version: override,\n type: 'override',\n dependencyType: 'overrides',\n packagePath: relativePath,\n reason: 'Override configurations with local paths cause build failures'\n });\n }\n }\n }\n\n // Check resolutions (Yarn)\n if (extendedPackageJson.resolutions) {\n for (const [name, resolution] of Object.entries(extendedPackageJson.resolutions)) {\n if (typeof resolution === 'string' && (resolution.startsWith('file:') || resolution.startsWith('link:') || resolution.includes('../'))) {\n problematicDeps.push({\n name,\n version: resolution,\n type: 'resolution',\n dependencyType: 'resolutions',\n packagePath: relativePath,\n reason: 'Resolution configurations with local paths cause build failures'\n });\n }\n }\n }\n }\n\n timer.end(`Found ${problematicDeps.length} problematic dependencies`);\n return problematicDeps;\n};\n\n/**\n * Enhanced function to display problematic dependencies with detailed information\n */\nconst displayProblematicDependencies = (problematicDeps: ProblematicDependency[]): void => {\n const logger = getLogger();\n\n if (problematicDeps.length === 0) {\n logger.info('✅ No problematic dependencies found');\n return;\n }\n\n logger.info('🔓 Found problematic dependencies that could cause GitHub build failures:');\n\n // Group by package path for better readability\n const grouped = problematicDeps.reduce((acc, dep) => {\n if (!acc[dep.packagePath]) {\n acc[dep.packagePath] = [];\n }\n acc[dep.packagePath].push(dep);\n return acc;\n }, {} as Record<string, ProblematicDependency[]>);\n\n for (const [packagePath, deps] of Object.entries(grouped)) {\n logger.info(` 📄 ${packagePath}:`);\n for (const dep of deps) {\n logger.info(` ❌ ${dep.dependencyType}.${dep.name}: ${dep.version} (${dep.type})`);\n logger.info(` 💡 ${dep.reason}`);\n }\n }\n};\n\n/**\n * Verification step to ensure no problematic dependencies remain after cleanup\n */\nconst verifyCleanup = async (packageJsonFiles: PackageJsonLocation[]): Promise<boolean> => {\n const logger = getLogger();\n const timer = PerformanceTimer.start(logger, 'Verifying cleanup completion');\n\n const remainingProblems = scanForProblematicDependencies(packageJsonFiles);\n\n if (remainingProblems.length === 0) {\n logger.info('✅ Verification passed: No problematic dependencies remain');\n timer.end('Verification successful');\n return true;\n } else {\n logger.warn('⚠️ Verification failed: Found remaining problematic dependencies');\n displayProblematicDependencies(remainingProblems);\n timer.end('Verification failed');\n return false;\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const isDryRun = runConfig.dryRun || runConfig.unlink?.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const overallTimer = PerformanceTimer.start(logger, 'Unlink command execution');\n const storage = createStorage({ log: logger.info });\n\n logger.info('🔓 Unlinking workspace packages and cleaning up problematic dependencies...');\n\n // Get configuration\n const configTimer = PerformanceTimer.start(logger, 'Reading configuration');\n const scopeRoots = runConfig.unlink?.scopeRoots || runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.unlink?.workspaceFile || 'pnpm-workspace.yaml';\n configTimer.end('Configuration loaded');\n\n if (Object.keys(scopeRoots).length === 0) {\n logger.info('No scope roots configured. Skipping link management.');\n overallTimer.end('Unlink command (no scope roots)');\n return 'No scope roots configured. Skipping link management.';\n }\n\n // Find all package.json files in current directory tree\n const packageJsonFiles = await findAllPackageJsonFiles(process.cwd(), storage);\n\n if (packageJsonFiles.length === 0) {\n throw new Error('No package.json files found in current directory or subdirectories.');\n }\n\n logger.info(`Found ${packageJsonFiles.length} package.json file(s) to process`);\n logger.info(`Scanning ${Object.keys(scopeRoots).length} scope root(s): ${Object.keys(scopeRoots).join(', ')}`);\n\n // Comprehensive scan for all problematic dependencies\n const problematicDeps = scanForProblematicDependencies(packageJsonFiles);\n displayProblematicDependencies(problematicDeps);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlinkNames = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlinkNames.length === 0 && problematicDeps.length === 0) {\n logger.info('✅ No packages found matching scope roots for unlinking and no problematic dependencies detected.');\n overallTimer.end('Unlink command (nothing to clean)');\n return 'No packages found matching scope roots for unlinking and no problematic dependencies detected.';\n }\n\n logger.verbose(`Found ${packagesToUnlinkNames.length} packages that could be unlinked: ${packagesToUnlinkNames.join(', ')}`);\n\n // Read existing backup\n const backupTimer = PerformanceTimer.start(logger, 'Reading link backup');\n const backup = await readLinkBackup(storage);\n backupTimer.end('Link backup loaded');\n\n if (isDryRun) {\n logger.info('Would clean up problematic dependencies and restore original package.json dependencies');\n\n // Show what would be cleaned up\n let dryRunCount = 0;\n for (const packageName of packagesToUnlinkNames) {\n for (const { relativePath } of packageJsonFiles) {\n const backupKey = `${relativePath}:${packageName}`;\n const backupEntry = backup[backupKey];\n if (backupEntry) {\n logger.verbose(`Would restore ${relativePath}/${packageName}: file:... -> ${backupEntry.originalVersion}`);\n dryRunCount++;\n }\n }\n }\n\n // Show what problematic dependencies would be cleaned\n if (problematicDeps.length > 0) {\n logger.verbose(`Would clean up ${problematicDeps.length} problematic dependencies`);\n }\n\n overallTimer.end('Unlink command (dry run)');\n return `DRY RUN: Would unlink ${dryRunCount} dependency reference(s) and clean up ${problematicDeps.length} problematic dependencies across ${packageJsonFiles.length} package.json files`;\n } else {\n // Restore package.json files with original versions and clean up problematic dependencies\n let totalRestoredCount = 0;\n let totalCleanedCount = 0;\n\n for (const packageJsonLocation of packageJsonFiles) {\n const { packageJson, path: packageJsonPath, relativePath } = packageJsonLocation;\n let modified = false;\n\n // Restore from backup\n const restoredCount = await restorePackageJson(packageJsonLocation, packagesToUnlinkNames, backup, storage);\n totalRestoredCount += restoredCount;\n if (restoredCount > 0) modified = true;\n\n // Clean up problematic dependencies for this specific package\n const extendedPackageJson = packageJson as ExtendedPackageJson;\n\n // Remove workspace configurations\n if (extendedPackageJson.workspaces) {\n delete extendedPackageJson.workspaces;\n logger.verbose(`Removed workspace configuration from ${relativePath}`);\n modified = true;\n totalCleanedCount++;\n }\n\n // Clean overrides with problematic paths\n if (extendedPackageJson.overrides) {\n const cleanOverrides: Record<string, any> = {};\n let overridesModified = false;\n\n for (const [name, override] of Object.entries(extendedPackageJson.overrides)) {\n if (typeof override === 'string' && (override.startsWith('file:') || override.startsWith('link:') || override.includes('../'))) {\n logger.verbose(`Removed problematic override ${relativePath}/overrides.${name}: ${override}`);\n overridesModified = true;\n totalCleanedCount++;\n } else {\n cleanOverrides[name] = override;\n }\n }\n\n if (overridesModified) {\n if (Object.keys(cleanOverrides).length === 0) {\n delete extendedPackageJson.overrides;\n } else {\n extendedPackageJson.overrides = cleanOverrides;\n }\n modified = true;\n }\n }\n\n // Clean resolutions with problematic paths\n if (extendedPackageJson.resolutions) {\n const cleanResolutions: Record<string, any> = {};\n let resolutionsModified = false;\n\n for (const [name, resolution] of Object.entries(extendedPackageJson.resolutions)) {\n if (typeof resolution === 'string' && (resolution.startsWith('file:') || resolution.startsWith('link:') || resolution.includes('../'))) {\n logger.verbose(`Removed problematic resolution ${relativePath}/resolutions.${name}: ${resolution}`);\n resolutionsModified = true;\n totalCleanedCount++;\n } else {\n cleanResolutions[name] = resolution;\n }\n }\n\n if (resolutionsModified) {\n if (Object.keys(cleanResolutions).length === 0) {\n delete extendedPackageJson.resolutions;\n } else {\n extendedPackageJson.resolutions = cleanResolutions;\n }\n modified = true;\n }\n }\n\n // Save the modified package.json if any changes were made\n if (modified) {\n await storage.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');\n }\n }\n\n // Save updated backup (with restored items removed)\n await writeLinkBackup(backup, storage);\n\n if (totalRestoredCount === 0 && totalCleanedCount === 0) {\n logger.info('✅ No problematic dependencies were found to clean up.');\n overallTimer.end('Unlink command (nothing to clean)');\n return 'No problematic dependencies were found to clean up.';\n }\n\n logger.info(`Cleaned up ${totalRestoredCount} linked dependencies and ${totalCleanedCount} other problematic dependencies across ${packageJsonFiles.length} package.json file(s)`);\n\n // Re-read package.json files for verification\n const updatedPackageJsonFiles = await findAllPackageJsonFiles(process.cwd(), storage);\n\n // Verification step\n const verificationPassed = await verifyCleanup(updatedPackageJsonFiles);\n\n if (!verificationPassed) {\n logger.warn('⚠️ Some problematic dependencies may still remain. Please review the output above.');\n }\n\n // Rebuild dependencies\n logger.info('⏳ Running npm install to apply changes (this may take a moment)...');\n try {\n const installResult = await smartNpmInstall({\n skipIfNotNeeded: false, // Always install after unlinking changes\n preferCi: true, // Can use npm ci since we restored original dependencies\n verbose: false\n });\n\n if (installResult.skipped) {\n logger.info(`⚡ Dependencies were up to date (${installResult.method})`);\n } else {\n logger.info(`✅ Dependencies rebuilt successfully using ${installResult.method} (${installResult.duration}ms)`);\n }\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'npm install' manually.`);\n }\n\n const summary = `Successfully cleaned up ${totalRestoredCount} linked dependencies and ${totalCleanedCount} other problematic dependencies across ${packageJsonFiles.length} package.json file(s)`;\n overallTimer.end('Unlink command completed');\n return summary;\n }\n};\n"],"names":["findPackagesToUnlink","scopeRoots","storage","logger","getLogger","timer","PerformanceTimer","start","packagesToUnlink","silly","JSON","stringify","scopeTimer","allScopePackages","Map","scopePromises","Object","entries","map","scope","rootDir","verbose","scopePackages","scanDirectoryForPackages","scopeResults","packageName","packagePath","startsWith","push","debug","allScopeResults","Promise","all","set","end","keys","length","readLinkBackup","backupPath","path","join","process","cwd","exists","content","readFile","parsed","safeJsonParse","validateLinkBackup","error","Error","message","writeLinkBackup","backup","deleteFile","writeFile","restorePackageJson","packageJsonLocation","restoredCount","packageJson","packageJsonPath","relativePath","currentDeps","backupKey","backupEntry","dependencyType","originalVersion","scanForProblematicDependencies","packageJsonFiles","problematicDeps","extendedPackageJson","depTypes","depType","deps","name","version","problemType","reason","includes","type","workspaces","overrides","override","resolutions","resolution","displayProblematicDependencies","info","grouped","reduce","acc","dep","verifyCleanup","remainingProblems","warn","execute","runConfig","isDryRun","dryRun","unlink","getDryRunLogger","overallTimer","createStorage","log","configTimer","link","workspaceFile","findAllPackageJsonFiles","packagesToUnlinkNames","backupTimer","dryRunCount","totalRestoredCount","totalCleanedCount","modified","cleanOverrides","overridesModified","cleanResolutions","resolutionsModified","updatedPackageJsonFiles","verificationPassed","installResult","smartNpmInstall","skipIfNotNeeded","preferCi","skipped","method","duration","summary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport path from 'path';\nimport { getLogger, getDryRunLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { safeJsonParse, validateLinkBackup, type LinkBackup } from '../util/validation';\nimport { run } from '../util/child';\nimport {\n PerformanceTimer,\n PackageJson,\n PackageJsonLocation,\n findAllPackageJsonFiles,\n scanDirectoryForPackages,\n checkForFileDependencies\n} from '../util/performance';\nimport { smartNpmInstall } from '../util/npmOptimizations';\n\ninterface ExtendedPackageJson extends PackageJson {\n workspaces?: string[] | { packages?: string[] };\n overrides?: Record<string, any>;\n resolutions?: Record<string, any>;\n}\n\n\n\ninterface ProblematicDependency {\n name: string;\n version: string;\n type: 'file:' | 'link:' | 'relative-path' | 'workspace' | 'override' | 'resolution';\n dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies' | 'workspaces' | 'overrides' | 'resolutions';\n packagePath: string;\n reason: string;\n}\n\nconst EXCLUDED_DIRECTORIES = [\n 'node_modules',\n 'dist',\n 'build',\n 'coverage',\n '.git',\n '.next',\n '.nuxt',\n 'out',\n 'public',\n 'static',\n 'assets'\n];\n\n\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const timer = PerformanceTimer.start(logger, 'Finding packages to unlink');\n const packagesToUnlink: string[] = [];\n\n logger.silly(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const scopeTimer = PerformanceTimer.start(logger, 'Scanning all scope roots for packages to unlink');\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n // Process all scopes in parallel for better performance\n const scopePromises = Object.entries(scopeRoots).map(async ([scope, rootDir]) => {\n logger.verbose(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n const scopeResults: Array<[string, string]> = [];\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n scopeResults.push([packageName, packagePath]);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n return scopeResults;\n });\n\n const allScopeResults = await Promise.all(scopePromises);\n\n // Flatten results and collect package names\n for (const scopeResults of allScopeResults) {\n for (const [packageName, packagePath] of scopeResults) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packageName);\n }\n }\n\n scopeTimer.end(`Scanned ${Object.keys(scopeRoots).length} scope roots, found ${packagesToUnlink.length} packages to unlink`);\n\n timer.end(`Found ${packagesToUnlink.length} packages to unlink`);\n return packagesToUnlink;\n};\n\nconst readLinkBackup = async (storage: any): Promise<LinkBackup> => {\n const backupPath = path.join(process.cwd(), '.kodrdriv-link-backup.json');\n if (await storage.exists(backupPath)) {\n try {\n const content = await storage.readFile(backupPath, 'utf-8');\n const parsed = safeJsonParse(content, 'link backup file');\n return validateLinkBackup(parsed);\n } catch (error) {\n throw new Error(`Failed to parse link backup file: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n return {};\n};\n\nconst writeLinkBackup = async (backup: LinkBackup, storage: any): Promise<void> => {\n const backupPath = path.join(process.cwd(), '.kodrdriv-link-backup.json');\n if (Object.keys(backup).length === 0) {\n // Remove backup file if empty\n if (await storage.exists(backupPath)) {\n await storage.deleteFile(backupPath);\n }\n } else {\n await storage.writeFile(backupPath, JSON.stringify(backup, null, 2), 'utf-8');\n }\n};\n\nconst restorePackageJson = async (\n packageJsonLocation: PackageJsonLocation,\n packagesToUnlink: string[],\n backup: LinkBackup,\n storage: any\n): Promise<number> => {\n const logger = getLogger();\n let restoredCount = 0;\n const { packageJson, path: packageJsonPath, relativePath } = packageJsonLocation;\n\n // Restore original versions from backup\n for (const packageName of packagesToUnlink) {\n const backupKey = `${relativePath}:${packageName}`;\n const backupEntry = backup[backupKey];\n\n if (!backupEntry) {\n logger.debug(`No backup found for ${backupKey}, skipping`);\n continue;\n }\n\n const currentDeps = (packageJson as any)[backupEntry.dependencyType];\n if (currentDeps && currentDeps[packageName]?.startsWith('file:')) {\n // Restore the original version\n currentDeps[packageName] = backupEntry.originalVersion;\n restoredCount++;\n logger.verbose(`Restored ${relativePath}/${backupEntry.dependencyType}.${packageName}: file:... -> ${backupEntry.originalVersion}`);\n\n // Remove from backup\n delete backup[backupKey];\n }\n }\n\n // NOTE: Don't write the file here - let the caller handle all modifications\n return restoredCount;\n};\n\n/**\n * Comprehensive scan for all types of problematic dependencies that could cause GitHub build failures\n */\nconst scanForProblematicDependencies = (packageJsonFiles: PackageJsonLocation[]): ProblematicDependency[] => {\n const logger = getLogger();\n const timer = PerformanceTimer.start(logger, 'Scanning for problematic dependencies');\n const problematicDeps: ProblematicDependency[] = [];\n\n for (const { path: packagePath, packageJson, relativePath } of packageJsonFiles) {\n const extendedPackageJson = packageJson as ExtendedPackageJson;\n\n // Check dependencies, devDependencies, peerDependencies\n const depTypes: Array<keyof Pick<ExtendedPackageJson, 'dependencies' | 'devDependencies' | 'peerDependencies'>> = [\n 'dependencies', 'devDependencies', 'peerDependencies'\n ];\n\n for (const depType of depTypes) {\n const deps = extendedPackageJson[depType];\n if (!deps) continue;\n\n for (const [name, version] of Object.entries(deps)) {\n let problemType: ProblematicDependency['type'] | null = null;\n let reason = '';\n\n // Check for file: dependencies\n if (version.startsWith('file:')) {\n problemType = 'file:';\n reason = 'File dependencies cause build failures in CI/CD environments';\n }\n // Check for link: dependencies\n else if (version.startsWith('link:')) {\n problemType = 'link:';\n reason = 'Link dependencies are not resolvable in remote environments';\n }\n // Check for relative path patterns that could be problematic\n else if (version.includes('../') || version.includes('./') || version.startsWith('/')) {\n problemType = 'relative-path';\n reason = 'Relative path dependencies are not resolvable in different environments';\n }\n // Check for workspace protocol (used by some package managers)\n else if (version.startsWith('workspace:')) {\n problemType = 'workspace';\n reason = 'Workspace protocol dependencies require workspace configuration';\n }\n\n if (problemType) {\n problematicDeps.push({\n name,\n version,\n type: problemType,\n dependencyType: depType,\n packagePath: relativePath,\n reason\n });\n }\n }\n }\n\n // Check workspace configurations\n if (extendedPackageJson.workspaces) {\n problematicDeps.push({\n name: 'workspaces',\n version: JSON.stringify(extendedPackageJson.workspaces),\n type: 'workspace',\n dependencyType: 'workspaces',\n packagePath: relativePath,\n reason: 'Workspace configurations can cause issues when published to npm'\n });\n }\n\n // Check overrides (npm 8.3+)\n if (extendedPackageJson.overrides) {\n for (const [name, override] of Object.entries(extendedPackageJson.overrides)) {\n if (typeof override === 'string' && (override.startsWith('file:') || override.startsWith('link:') || override.includes('../'))) {\n problematicDeps.push({\n name,\n version: override,\n type: 'override',\n dependencyType: 'overrides',\n packagePath: relativePath,\n reason: 'Override configurations with local paths cause build failures'\n });\n }\n }\n }\n\n // Check resolutions (Yarn)\n if (extendedPackageJson.resolutions) {\n for (const [name, resolution] of Object.entries(extendedPackageJson.resolutions)) {\n if (typeof resolution === 'string' && (resolution.startsWith('file:') || resolution.startsWith('link:') || resolution.includes('../'))) {\n problematicDeps.push({\n name,\n version: resolution,\n type: 'resolution',\n dependencyType: 'resolutions',\n packagePath: relativePath,\n reason: 'Resolution configurations with local paths cause build failures'\n });\n }\n }\n }\n }\n\n timer.end(`Found ${problematicDeps.length} problematic dependencies`);\n return problematicDeps;\n};\n\n/**\n * Enhanced function to display problematic dependencies with detailed information\n */\nconst displayProblematicDependencies = (problematicDeps: ProblematicDependency[]): void => {\n const logger = getLogger();\n\n if (problematicDeps.length === 0) {\n logger.info('✅ No problematic dependencies found');\n return;\n }\n\n logger.info('🔓 Found problematic dependencies that could cause GitHub build failures:');\n\n // Group by package path for better readability\n const grouped = problematicDeps.reduce((acc, dep) => {\n if (!acc[dep.packagePath]) {\n acc[dep.packagePath] = [];\n }\n acc[dep.packagePath].push(dep);\n return acc;\n }, {} as Record<string, ProblematicDependency[]>);\n\n for (const [packagePath, deps] of Object.entries(grouped)) {\n logger.info(` 📄 ${packagePath}:`);\n for (const dep of deps) {\n logger.info(` ❌ ${dep.dependencyType}.${dep.name}: ${dep.version} (${dep.type})`);\n logger.info(` 💡 ${dep.reason}`);\n }\n }\n};\n\n/**\n * Verification step to ensure no problematic dependencies remain after cleanup\n */\nconst verifyCleanup = async (packageJsonFiles: PackageJsonLocation[]): Promise<boolean> => {\n const logger = getLogger();\n const timer = PerformanceTimer.start(logger, 'Verifying cleanup completion');\n\n const remainingProblems = scanForProblematicDependencies(packageJsonFiles);\n\n if (remainingProblems.length === 0) {\n logger.info('✅ Verification passed: No problematic dependencies remain');\n timer.end('Verification successful');\n return true;\n } else {\n logger.warn('⚠️ Verification failed: Found remaining problematic dependencies');\n displayProblematicDependencies(remainingProblems);\n timer.end('Verification failed');\n return false;\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const isDryRun = runConfig.dryRun || runConfig.unlink?.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const overallTimer = PerformanceTimer.start(logger, 'Unlink command execution');\n const storage = createStorage({ log: logger.info });\n\n logger.info('🔓 Unlinking workspace packages and cleaning up problematic dependencies...');\n\n // Get configuration\n const configTimer = PerformanceTimer.start(logger, 'Reading configuration');\n const scopeRoots = runConfig.unlink?.scopeRoots || runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.unlink?.workspaceFile || 'pnpm-workspace.yaml';\n configTimer.end('Configuration loaded');\n\n if (Object.keys(scopeRoots).length === 0) {\n logger.info('No scope roots configured. Skipping link management.');\n overallTimer.end('Unlink command (no scope roots)');\n return 'No scope roots configured. Skipping link management.';\n }\n\n // Find all package.json files in current directory tree\n const packageJsonFiles = await findAllPackageJsonFiles(process.cwd(), storage);\n\n if (packageJsonFiles.length === 0) {\n throw new Error('No package.json files found in current directory or subdirectories.');\n }\n\n logger.info(`Found ${packageJsonFiles.length} package.json file(s) to process`);\n logger.info(`Scanning ${Object.keys(scopeRoots).length} scope root(s): ${Object.keys(scopeRoots).join(', ')}`);\n\n // Comprehensive scan for all problematic dependencies\n const problematicDeps = scanForProblematicDependencies(packageJsonFiles);\n displayProblematicDependencies(problematicDeps);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlinkNames = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlinkNames.length === 0 && problematicDeps.length === 0) {\n logger.info('✅ No packages found matching scope roots for unlinking and no problematic dependencies detected.');\n overallTimer.end('Unlink command (nothing to clean)');\n return 'No packages found matching scope roots for unlinking and no problematic dependencies detected.';\n }\n\n logger.verbose(`Found ${packagesToUnlinkNames.length} packages that could be unlinked: ${packagesToUnlinkNames.join(', ')}`);\n\n // Read existing backup\n const backupTimer = PerformanceTimer.start(logger, 'Reading link backup');\n const backup = await readLinkBackup(storage);\n backupTimer.end('Link backup loaded');\n\n if (isDryRun) {\n logger.info('Would clean up problematic dependencies and restore original package.json dependencies');\n\n // Show what would be cleaned up\n let dryRunCount = 0;\n for (const packageName of packagesToUnlinkNames) {\n for (const { relativePath } of packageJsonFiles) {\n const backupKey = `${relativePath}:${packageName}`;\n const backupEntry = backup[backupKey];\n if (backupEntry) {\n logger.verbose(`Would restore ${relativePath}/${packageName}: file:... -> ${backupEntry.originalVersion}`);\n dryRunCount++;\n }\n }\n }\n\n // Show what problematic dependencies would be cleaned\n if (problematicDeps.length > 0) {\n logger.verbose(`Would clean up ${problematicDeps.length} problematic dependencies`);\n }\n\n overallTimer.end('Unlink command (dry run)');\n return `DRY RUN: Would unlink ${dryRunCount} dependency reference(s) and clean up ${problematicDeps.length} problematic dependencies across ${packageJsonFiles.length} package.json files`;\n } else {\n // Restore package.json files with original versions and clean up problematic dependencies\n let totalRestoredCount = 0;\n let totalCleanedCount = 0;\n\n for (const packageJsonLocation of packageJsonFiles) {\n const { packageJson, path: packageJsonPath, relativePath } = packageJsonLocation;\n let modified = false;\n\n // Restore from backup\n const restoredCount = await restorePackageJson(packageJsonLocation, packagesToUnlinkNames, backup, storage);\n totalRestoredCount += restoredCount;\n if (restoredCount > 0) modified = true;\n\n // Clean up problematic dependencies for this specific package\n const extendedPackageJson = packageJson as ExtendedPackageJson;\n\n // Remove workspace configurations\n if (extendedPackageJson.workspaces) {\n delete extendedPackageJson.workspaces;\n logger.verbose(`Removed workspace configuration from ${relativePath}`);\n modified = true;\n totalCleanedCount++;\n }\n\n // Clean overrides with problematic paths\n if (extendedPackageJson.overrides) {\n const cleanOverrides: Record<string, any> = {};\n let overridesModified = false;\n\n for (const [name, override] of Object.entries(extendedPackageJson.overrides)) {\n if (typeof override === 'string' && (override.startsWith('file:') || override.startsWith('link:') || override.includes('../'))) {\n logger.verbose(`Removed problematic override ${relativePath}/overrides.${name}: ${override}`);\n overridesModified = true;\n totalCleanedCount++;\n } else {\n cleanOverrides[name] = override;\n }\n }\n\n if (overridesModified) {\n if (Object.keys(cleanOverrides).length === 0) {\n delete extendedPackageJson.overrides;\n } else {\n extendedPackageJson.overrides = cleanOverrides;\n }\n modified = true;\n }\n }\n\n // Clean resolutions with problematic paths\n if (extendedPackageJson.resolutions) {\n const cleanResolutions: Record<string, any> = {};\n let resolutionsModified = false;\n\n for (const [name, resolution] of Object.entries(extendedPackageJson.resolutions)) {\n if (typeof resolution === 'string' && (resolution.startsWith('file:') || resolution.startsWith('link:') || resolution.includes('../'))) {\n logger.verbose(`Removed problematic resolution ${relativePath}/resolutions.${name}: ${resolution}`);\n resolutionsModified = true;\n totalCleanedCount++;\n } else {\n cleanResolutions[name] = resolution;\n }\n }\n\n if (resolutionsModified) {\n if (Object.keys(cleanResolutions).length === 0) {\n delete extendedPackageJson.resolutions;\n } else {\n extendedPackageJson.resolutions = cleanResolutions;\n }\n modified = true;\n }\n }\n\n // Save the modified package.json if any changes were made\n if (modified) {\n await storage.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');\n }\n }\n\n // Save updated backup (with restored items removed)\n await writeLinkBackup(backup, storage);\n\n if (totalRestoredCount === 0 && totalCleanedCount === 0) {\n logger.info('✅ No problematic dependencies were found to clean up.');\n overallTimer.end('Unlink command (nothing to clean)');\n return 'No problematic dependencies were found to clean up.';\n }\n\n logger.info(`Cleaned up ${totalRestoredCount} linked dependencies and ${totalCleanedCount} other problematic dependencies across ${packageJsonFiles.length} package.json file(s)`);\n\n // CRITICAL: Clean up package-lock.json to prevent GitHub build failures\n // The lock file may still contain file: references even after restoring package.json\n logger.info('🧹 Cleaning up package-lock.json to remove any stale file references...');\n const packageLockPath = path.join(process.cwd(), 'package-lock.json');\n if (await storage.exists(packageLockPath)) {\n await storage.deleteFile(packageLockPath);\n logger.info('🗑️ Deleted package-lock.json to ensure clean state');\n }\n\n // Optionally clean up node_modules for thorough cleanup\n const cleanNodeModules = runConfig.unlink?.cleanNodeModules !== false; // default to true\n if (cleanNodeModules) {\n logger.info('🧹 Cleaning up node_modules for complete fresh start...');\n const nodeModulesPath = path.join(process.cwd(), 'node_modules');\n if (await storage.exists(nodeModulesPath)) {\n try {\n await storage.removeDirectory(nodeModulesPath);\n logger.info('🗑️ Deleted node_modules directory');\n } catch (error: any) {\n logger.warn(`Could not delete node_modules (${error.message}), continuing...`);\n }\n }\n }\n\n // Re-read package.json files for verification\n const updatedPackageJsonFiles = await findAllPackageJsonFiles(process.cwd(), storage);\n\n // Verification step\n const verificationPassed = await verifyCleanup(updatedPackageJsonFiles);\n\n if (!verificationPassed) {\n logger.warn('⚠️ Some problematic dependencies may still remain. Please review the output above.');\n }\n\n // Rebuild dependencies with fresh install (NOT npm ci to avoid using stale lock file)\n logger.info('⏳ Running fresh npm install to regenerate clean dependencies (this may take a moment)...');\n try {\n const installResult = await smartNpmInstall({\n skipIfNotNeeded: false, // Always install after unlinking changes\n preferCi: false, // NEVER use npm ci here - we need fresh npm install to regenerate lock file\n verbose: false\n });\n\n if (installResult.skipped) {\n logger.info(`⚡ Dependencies were up to date (${installResult.method})`);\n } else {\n logger.info(`✅ Dependencies rebuilt cleanly using ${installResult.method} (${installResult.duration}ms)`);\n }\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'npm install' manually.`);\n }\n\n const summary = `Successfully cleaned up ${totalRestoredCount} linked dependencies and ${totalCleanedCount} other problematic dependencies across ${packageJsonFiles.length} package.json file(s)`;\n overallTimer.end('Unlink command completed');\n return summary;\n }\n};\n"],"names":["findPackagesToUnlink","scopeRoots","storage","logger","getLogger","timer","PerformanceTimer","start","packagesToUnlink","silly","JSON","stringify","scopeTimer","allScopePackages","Map","scopePromises","Object","entries","map","scope","rootDir","verbose","scopePackages","scanDirectoryForPackages","scopeResults","packageName","packagePath","startsWith","push","debug","allScopeResults","Promise","all","set","end","keys","length","readLinkBackup","backupPath","path","join","process","cwd","exists","content","readFile","parsed","safeJsonParse","validateLinkBackup","error","Error","message","writeLinkBackup","backup","deleteFile","writeFile","restorePackageJson","packageJsonLocation","restoredCount","packageJson","packageJsonPath","relativePath","currentDeps","backupKey","backupEntry","dependencyType","originalVersion","scanForProblematicDependencies","packageJsonFiles","problematicDeps","extendedPackageJson","depTypes","depType","deps","name","version","problemType","reason","includes","type","workspaces","overrides","override","resolutions","resolution","displayProblematicDependencies","info","grouped","reduce","acc","dep","verifyCleanup","remainingProblems","warn","execute","runConfig","isDryRun","dryRun","unlink","getDryRunLogger","overallTimer","createStorage","log","configTimer","link","workspaceFile","findAllPackageJsonFiles","packagesToUnlinkNames","backupTimer","dryRunCount","totalRestoredCount","totalCleanedCount","modified","cleanOverrides","overridesModified","cleanResolutions","resolutionsModified","packageLockPath","cleanNodeModules","nodeModulesPath","removeDirectory","updatedPackageJsonFiles","verificationPassed","installResult","smartNpmInstall","skipIfNotNeeded","preferCi","skipped","method","duration","summary"],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
|
|
4
|
-
const VERSION = '0.0.
|
|
4
|
+
const VERSION = '0.0.41 (HEAD/0f85bf5 T:v0.0.41 2025-07-26 17:19:34 -0700) linux x64 v22.17.1';
|
|
5
5
|
const PROGRAM_NAME = 'kodrdriv';
|
|
6
6
|
const DEFAULT_OVERRIDES = false;
|
|
7
7
|
const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';
|
|
@@ -158,7 +158,8 @@ const KODRDRIV_DEFAULTS = {
|
|
|
158
158
|
startFrom: undefined,
|
|
159
159
|
script: undefined,
|
|
160
160
|
cmd: undefined,
|
|
161
|
-
publish: false
|
|
161
|
+
publish: false,
|
|
162
|
+
parallel: false
|
|
162
163
|
},
|
|
163
164
|
excludedPatterns: DEFAULT_EXCLUDED_PATTERNS
|
|
164
165
|
};
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\nimport os from 'os';\nimport path from 'path';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\n// Buffer size for git commands that may produce large output (like git log)\nexport const DEFAULT_GIT_COMMAND_MAX_BUFFER = 50 * 1024 * 1024; // 50MB\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\nexport const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_SELECT_AUDIO = 'select-audio';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_PUBLISH_TREE = 'publish-tree';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_SELECT_AUDIO,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_PUBLISH_TREE,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_YOU_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_YOU_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n skipFileCheck: false,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n directory: undefined, // No default directory\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n linkWorkspacePackages: true,\n unlinkWorkspacePackages: true,\n sendit: DEFAULT_SENDIT_MODE,\n },\n link: {\n scopeRoots: {},\n dryRun: false,\n },\n publishTree: {\n directory: undefined,\n excludedPatterns: undefined,\n startFrom: undefined,\n script: undefined,\n cmd: undefined,\n publish: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};\n"],"names":["VERSION","PROGRAM_NAME","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_GIT_COMMAND_MAX_BUFFER","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_PREFERENCES_DIRECTORY","path","join","os","homedir","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_SELECT_AUDIO","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_PUBLISH_TREE","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","contextDirectories","commandName","configDirectory","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","skipFileCheck","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","directory","publish","mergeMethod","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","publishTree","excludedPatterns","startFrom","script","cmd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\nimport os from 'os';\nimport path from 'path';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\n// Buffer size for git commands that may produce large output (like git log)\nexport const DEFAULT_GIT_COMMAND_MAX_BUFFER = 50 * 1024 * 1024; // 50MB\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\nexport const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_SELECT_AUDIO = 'select-audio';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_PUBLISH_TREE = 'publish-tree';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_SELECT_AUDIO,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_PUBLISH_TREE,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_YOU_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_YOU_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n skipFileCheck: false,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n directory: undefined, // No default directory\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n linkWorkspacePackages: true,\n unlinkWorkspacePackages: true,\n sendit: DEFAULT_SENDIT_MODE,\n },\n link: {\n scopeRoots: {},\n dryRun: false,\n },\n publishTree: {\n directory: undefined,\n excludedPatterns: undefined,\n startFrom: undefined,\n script: undefined,\n cmd: undefined,\n publish: false,\n parallel: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};\n"],"names":["VERSION","PROGRAM_NAME","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_GIT_COMMAND_MAX_BUFFER","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_PREFERENCES_DIRECTORY","path","join","os","homedir","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_SELECT_AUDIO","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_PUBLISH_TREE","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","contextDirectories","commandName","configDirectory","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","skipFileCheck","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","directory","publish","mergeMethod","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","publishTree","excludedPatterns","startFrom","script","cmd","parallel"],"mappings":";;;AAIO,MAAMA,UAAU;AAChB,MAAMC,eAAe;AAKrB,MAAMC,oBAAoB;AAQ1B,MAAMC,gEAAgE;AAQtE,MAAMC,kBAAkB;AACxB,MAAMC,kBAAkB;AACxB,MAAMC,gBAAgB;AACtB,MAAMC,gBAAgB;AAEtB,MAAMC,2BAA2B;AAExC;MACaC,8BAAAA,GAAiC,EAAA,GAAK,IAAA,GAAO,KAAK;AAExD,MAAMC,2BAAAA,GAAwC;AAE9C,MAAMC,qBAAqB;AAC3B,MAAMC,gCAAgCC,IAAAA,CAAKC,IAAI,CAACC,EAAAA,CAAGC,OAAO,IAAI,WAAA;AAE9D,MAAMC,4BAA4B;AAClC,MAAMC,0BAA0B;AAEhC,MAAMC,cAAc;AACpB,MAAMC,iBAAiB;AACvB,MAAMC,sBAAsB;AAC5B,MAAMC,wBAAwB;AAE9B,MAAMC,uBAAoC;MAEpCC,yBAAAA,GAA4B;AACrC,IAAA,cAAA;AAAgB,IAAA,mBAAA;AAAqB,IAAA,WAAA;AAAa,IAAA,WAAA;AAClD,IAAA,eAAA;AAAiB,IAAA,YAAA;AAAc,IAAA,cAAA;AAC/B,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,KAAA;AAAO,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA,UAAA;AAC1C,IAAA,SAAA;AAAW,IAAA,OAAA;AAAS,IAAA,WAAA;AAAa,IAAA,MAAA;AAAQ,IAAA,YAAA;AACzC,IAAA,MAAA;AAAQ,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,QAAA;AAC1C,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA,UAAA;AAAY,IAAA,MAAA;AACvC,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA;;AAGhC,MAAMC,iBAAiB;AACvB,MAAMC,uBAAuB;AAC7B,MAAMC,uBAAuB;AAC7B,MAAMC,kBAAkB;AACxB,MAAMC,iBAAiB;AACvB,MAAMC,uBAAuB;AAC7B,MAAMC,kBAAkB;AACxB,MAAMC,uBAAuB;AAC7B,MAAMC,eAAe;AACrB,MAAMC,iBAAiB;AACvB,MAAMC,gBAAgB;AACtB,MAAMC,uBAAuB;AAC7B,MAAMC,sBAAsB;MAEtBC,gBAAAA,GAAmB;AAC5Bb,IAAAA,cAAAA;AACAC,IAAAA,oBAAAA;AACAC,IAAAA,oBAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,oBAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,oBAAAA;AACAC,IAAAA,YAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA;;AAGG,MAAMI,kBAAkBd;AAuD/B;MACae,iBAAAA,GAAoB;IAC7BC,MAAAA,EAAQpC,eAAAA;IACRqC,OAAAA,EAAStC,eAAAA;IACTuC,KAAAA,EAAOrC,aAAAA;IACPsC,SAAAA,EAAW1C,iBAAAA;IACX2C,KAAAA,EAAOtC,aAAAA;IACPuC,kBAAAA,EAAoBpC,2BAAAA;IACpBqC,WAAAA,EAAaR,eAAAA;IACbS,eAAAA,EAAiBrC,kBAAAA;IACjBsC,eAAAA,EAAiBzC,wBAAAA;IACjB0C,oBAAAA,EAAsBtC,6BAAAA;IACtBuC,MAAAA,EAAQ;QACJC,GAAAA,EAAKjC,WAAAA;QACLkC,MAAAA,EAAQjC,cAAAA;QACRkC,MAAAA,EAAQjC,mBAAAA;QACRkC,YAAAA,EAAcjC,qBAAAA;QACdkC,aAAAA,EAAe;AACnB,KAAA;IACAC,OAAAA,EAAS;QACLC,IAAAA,EAAMzC,yBAAAA;QACN0C,EAAAA,EAAIzC,uBAAAA;QACJqC,YAAAA,EAAcjC;AAClB,KAAA;IACAsC,WAAAA,EAAa;QACTC,gBAAAA,EAAkB,GAAA;QAClBC,WAAAA,EAAaC;AACjB,KAAA;IACAC,MAAAA,EAAQ;QACJC,oBAAAA,EAAsB,IAAA;QACtBC,kBAAAA,EAAoB,IAAA;QACpBC,mBAAAA,EAAqB,KAAA;QACrBC,mBAAAA,EAAqB,IAAA;QACrBC,kBAAAA,EAAoB,EAAA;QACpBC,gBAAAA,EAAkB,CAAA;QAClBC,iBAAAA,EAAmB,CAAA;QACnBC,iBAAAA,EAAmB,EAAA;QACnBlB,MAAAA,EAAQjC;AACZ,KAAA;IACAoD,WAAAA,EAAa;QACTR,oBAAAA,EAAsB,IAAA;QACtBC,kBAAAA,EAAoB,IAAA;QACpBC,mBAAAA,EAAqB,KAAA;QACrBC,mBAAAA,EAAqB,IAAA;QACrBC,kBAAAA,EAAoB,EAAA;QACpBC,gBAAAA,EAAkB,CAAA;QAClBC,iBAAAA,EAAmB,CAAA;QACnBC,iBAAAA,EAAmB,EAAA;QACnBlB,MAAAA,EAAQjC,mBAAAA;QACRwC,gBAAAA,EAAkB,GAAA;QAClBC,WAAAA,EAAaC,SAAAA;QACbW,SAAAA,EAAWX;AACf,KAAA;IACAY,OAAAA,EAAS;QACLC,WAAAA,EAAarD,oBAAAA;QACbsD,eAAAA,EAAiB;AAAC,YAAA,cAAA;AAAgB,YAAA;AAAiB,SAAA;QACnDC,qBAAAA,EAAuB,IAAA;QACvBC,uBAAAA,EAAyB,IAAA;QACzBzB,MAAAA,EAAQjC;AACZ,KAAA;IACA2D,IAAAA,EAAM;AACFC,QAAAA,UAAAA,EAAY,EAAC;QACbxC,MAAAA,EAAQ;AACZ,KAAA;IACAyC,WAAAA,EAAa;QACTR,SAAAA,EAAWX,SAAAA;QACXoB,gBAAAA,EAAkBpB,SAAAA;QAClBqB,SAAAA,EAAWrB,SAAAA;QACXsB,MAAAA,EAAQtB,SAAAA;QACRuB,GAAAA,EAAKvB,SAAAA;QACLY,OAAAA,EAAS,KAAA;QACTY,QAAAA,EAAU;AACd,KAAA;IACAJ,gBAAAA,EAAkB3D;AACtB;;;;"}
|
package/dist/types.js
CHANGED
|
@@ -87,7 +87,8 @@ const ConfigSchema = z.object({
|
|
|
87
87
|
unlink: z.object({
|
|
88
88
|
scopeRoots: z.record(z.string(), z.string()).optional(),
|
|
89
89
|
workspaceFile: z.string().optional(),
|
|
90
|
-
dryRun: z.boolean().optional()
|
|
90
|
+
dryRun: z.boolean().optional(),
|
|
91
|
+
cleanNodeModules: z.boolean().optional()
|
|
91
92
|
}).optional(),
|
|
92
93
|
publishTree: z.object({
|
|
93
94
|
directory: z.string().optional(),
|
|
@@ -95,7 +96,8 @@ const ConfigSchema = z.object({
|
|
|
95
96
|
startFrom: z.string().optional(),
|
|
96
97
|
script: z.string().optional(),
|
|
97
98
|
cmd: z.string().optional(),
|
|
98
|
-
publish: z.boolean().optional()
|
|
99
|
+
publish: z.boolean().optional(),
|
|
100
|
+
parallel: z.boolean().optional()
|
|
99
101
|
}).optional(),
|
|
100
102
|
excludedPatterns: z.array(z.string()).optional()
|
|
101
103
|
});
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n publishTree: z.object({\n directory: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n script: z.string().optional(),\n cmd: z.string().optional(),\n publish: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n messageLimit?: number;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","skipFileCheck","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","link","scopeRoots","record","unlink","workspaceFile","publishTree","excludedPatterns","startFrom","script","cmd","openaiApiKey","commandName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n cleanNodeModules: z.boolean().optional(),\n }).optional(),\n publishTree: z.object({\n directory: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n script: z.string().optional(),\n cmd: z.string().optional(),\n publish: z.boolean().optional(),\n parallel: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n messageLimit?: number;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n cleanNodeModules?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","skipFileCheck","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","link","scopeRoots","record","unlink","workspaceFile","cleanNodeModules","publishTree","excludedPatterns","startFrom","script","cmd","parallel","openaiApiKey","commandName"],"mappings":"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"}
|
package/dist/util/github.js
CHANGED
|
@@ -360,15 +360,22 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
360
360
|
logger.debug(`Fetching workflow runs triggered by release ${tagName}...`);
|
|
361
361
|
// Get release information to filter by creation time and commit SHA
|
|
362
362
|
let releaseInfo;
|
|
363
|
+
let releaseCreatedAt;
|
|
364
|
+
let releaseCommitSha;
|
|
363
365
|
try {
|
|
364
366
|
releaseInfo = await getReleaseByTagName(tagName);
|
|
367
|
+
releaseCreatedAt = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.created_at;
|
|
368
|
+
releaseCommitSha = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.target_commitish;
|
|
365
369
|
} catch (error) {
|
|
366
|
-
logger.
|
|
370
|
+
logger.debug(`Could not get release info for ${tagName}: ${error.message}. Using more permissive filtering.`);
|
|
367
371
|
}
|
|
368
|
-
const releaseCreatedAt = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.created_at;
|
|
369
|
-
const releaseCommitSha = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.target_commitish;
|
|
370
372
|
if (releaseCreatedAt) {
|
|
371
373
|
logger.debug(`Release ${tagName} was created at ${releaseCreatedAt}, filtering workflows created after this time`);
|
|
374
|
+
} else {
|
|
375
|
+
logger.debug(`No release creation time available for ${tagName}, using more permissive time filtering`);
|
|
376
|
+
}
|
|
377
|
+
if (releaseCommitSha) {
|
|
378
|
+
logger.debug(`Release ${tagName} targets commit ${releaseCommitSha}`);
|
|
372
379
|
}
|
|
373
380
|
// Get all workflows
|
|
374
381
|
const workflowsResponse = await octokit.actions.listRepoWorkflows({
|
|
@@ -392,64 +399,84 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
392
399
|
owner,
|
|
393
400
|
repo,
|
|
394
401
|
workflow_id: workflow.id,
|
|
395
|
-
per_page:
|
|
402
|
+
per_page: 30
|
|
396
403
|
});
|
|
404
|
+
logger.debug(`Checking ${runsResponse.data.workflow_runs.length} recent runs for workflow "${workflow.name}"`);
|
|
397
405
|
// Filter runs that were triggered by our specific release
|
|
398
406
|
const releaseRuns = runsResponse.data.workflow_runs.filter((run)=>{
|
|
407
|
+
var _run_head_sha;
|
|
408
|
+
logger.debug(`Evaluating run ${run.id} for workflow "${workflow.name}": event=${run.event}, head_branch=${run.head_branch}, created_at=${run.created_at}, head_sha=${(_run_head_sha = run.head_sha) === null || _run_head_sha === void 0 ? void 0 : _run_head_sha.substring(0, 7)}`);
|
|
399
409
|
// Must be a release or push event (tag pushes trigger workflows with event=push)
|
|
400
410
|
if (run.event !== 'release' && run.event !== 'push') {
|
|
401
411
|
logger.debug(`Excluding workflow run ${run.id}: not a release or push event (${run.event})`);
|
|
402
412
|
return false;
|
|
403
413
|
}
|
|
404
|
-
// For push events, be more restrictive - only include if head_branch is null (indicating tag push)
|
|
405
|
-
if (run.event === 'push') {
|
|
406
|
-
// Tag pushes typically have head_branch as null, branch pushes have the branch name
|
|
407
|
-
if (run.head_branch !== null) {
|
|
408
|
-
logger.debug(`Excluding push event workflow run ${run.id}: appears to be branch push (head_branch: ${run.head_branch})`);
|
|
409
|
-
return false;
|
|
410
|
-
}
|
|
411
|
-
logger.debug(`Including push event workflow run ${run.id}: appears to be tag push (head_branch: null)`);
|
|
412
|
-
}
|
|
413
414
|
// Must have required data
|
|
414
415
|
if (!run.head_sha || !run.created_at) {
|
|
415
416
|
logger.debug(`Excluding workflow run ${run.id}: missing required data (head_sha: ${run.head_sha}, created_at: ${run.created_at})`);
|
|
416
417
|
return false;
|
|
417
418
|
}
|
|
418
|
-
// If we have release info, filter by creation time
|
|
419
|
+
// If we have release info, filter by creation time and commit SHA
|
|
419
420
|
if (releaseCreatedAt) {
|
|
420
421
|
const runCreatedAt = new Date(run.created_at).getTime();
|
|
421
422
|
const releaseCreatedAtTime = new Date(releaseCreatedAt).getTime();
|
|
422
|
-
//
|
|
423
|
-
// This
|
|
423
|
+
// Allow runs created up to 2 minutes before release (for races) and up to 20 minutes after
|
|
424
|
+
// This is more permissive than before to account for various timing scenarios
|
|
424
425
|
const timeDiff = runCreatedAt - releaseCreatedAtTime;
|
|
425
|
-
if (timeDiff < -
|
|
426
|
+
if (timeDiff < -120000 || timeDiff > 1200000) {
|
|
426
427
|
logger.debug(`Excluding workflow run ${run.id}: outside time window (run: ${run.created_at}, release: ${releaseCreatedAt}, diff: ${timeDiff}ms)`);
|
|
427
428
|
return false;
|
|
428
429
|
}
|
|
430
|
+
// For release events, require exact commit SHA match if available
|
|
431
|
+
if (run.event === 'release' && releaseCommitSha && run.head_sha !== releaseCommitSha) {
|
|
432
|
+
logger.debug(`Excluding release event workflow run ${run.id}: commit SHA mismatch (run: ${run.head_sha}, release: ${releaseCommitSha})`);
|
|
433
|
+
return false;
|
|
434
|
+
}
|
|
435
|
+
// For push events, be more permissive - don't require exact SHA match as the tag push might be slightly different
|
|
436
|
+
if (run.event === 'push') {
|
|
437
|
+
// Check if this looks like a tag push:
|
|
438
|
+
// 1. head_branch is null (most common for tag pushes)
|
|
439
|
+
// 2. OR head_branch matches the tag pattern
|
|
440
|
+
// 3. OR commit SHA matches (in case head_branch behavior is inconsistent)
|
|
441
|
+
const looksLikeTagPush = run.head_branch === null || run.head_branch && run.head_branch.includes(tagName.replace('v', '')) || releaseCommitSha && run.head_sha === releaseCommitSha;
|
|
442
|
+
if (!looksLikeTagPush) {
|
|
443
|
+
logger.debug(`Excluding push event workflow run ${run.id}: doesn't look like tag push (head_branch: ${run.head_branch})`);
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
} else {
|
|
448
|
+
// No release info available - use more permissive fallback filtering
|
|
449
|
+
logger.debug(`Using permissive filtering for run ${run.id} due to missing release info`);
|
|
450
|
+
// For release events without release info, look for recent runs only
|
|
451
|
+
if (run.event === 'release') {
|
|
452
|
+
const runAge = Date.now() - new Date(run.created_at).getTime();
|
|
453
|
+
if (runAge > 1800000) {
|
|
454
|
+
logger.debug(`Excluding old release event workflow run ${run.id}: created ${run.created_at}`);
|
|
455
|
+
return false;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
// For push events without release info, be more permissive but still look for tag-like patterns
|
|
459
|
+
if (run.event === 'push') {
|
|
460
|
+
const runAge = Date.now() - new Date(run.created_at).getTime();
|
|
461
|
+
if (runAge > 1800000) {
|
|
462
|
+
logger.debug(`Excluding old push event workflow run ${run.id}: created ${run.created_at}`);
|
|
463
|
+
return false;
|
|
464
|
+
}
|
|
465
|
+
// Accept if head_branch is null (likely tag push) or if it's a recent run
|
|
466
|
+
// This is more permissive than the original logic
|
|
467
|
+
if (run.head_branch !== null && !run.head_branch.includes(tagName.replace('v', ''))) {
|
|
468
|
+
logger.debug(`Push event run ${run.id} has head_branch '${run.head_branch}' which doesn't look like tag '${tagName}', but including due to permissive filtering`);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
429
471
|
}
|
|
430
|
-
|
|
431
|
-
if (releaseCommitSha && run.head_sha !== releaseCommitSha) {
|
|
432
|
-
logger.debug(`Excluding workflow run ${run.id}: commit SHA mismatch (run: ${run.head_sha}, release: ${releaseCommitSha})`);
|
|
433
|
-
return false; // Be strict about commit SHA matching
|
|
434
|
-
}
|
|
435
|
-
// If we don't have release info, use more permissive fallback filtering
|
|
436
|
-
// For tag pushes, head_branch is often null, so we can't rely on branch name matching
|
|
437
|
-
if (!releaseCreatedAt && run.event === 'release' && run.head_branch && !run.head_branch.includes(tagName.replace('v', ''))) {
|
|
438
|
-
logger.debug(`Excluding workflow run ${run.id}: branch doesn't match tag pattern for release event (branch: ${run.head_branch}, tag: ${tagName})`);
|
|
439
|
-
return false;
|
|
440
|
-
}
|
|
441
|
-
// For push events without release info, be conservative and exclude them
|
|
442
|
-
// unless we have other indicators that this is a tag push
|
|
443
|
-
if (!releaseCreatedAt && run.event === 'push') {
|
|
444
|
-
logger.debug(`Excluding push event workflow run ${run.id} due to lack of release info (cannot confirm this is a tag push)`);
|
|
445
|
-
return false;
|
|
446
|
-
}
|
|
447
|
-
logger.debug(`Including workflow run ${run.id}: ${run.name} (${run.status}/${run.conclusion}) created ${run.created_at}`);
|
|
472
|
+
logger.debug(`Including workflow run ${run.id}: ${workflow.name} (${run.status}/${run.conclusion || 'pending'}) created ${run.created_at}`);
|
|
448
473
|
return true;
|
|
449
474
|
});
|
|
450
475
|
allRuns.push(...releaseRuns);
|
|
451
476
|
if (releaseRuns.length > 0) {
|
|
452
477
|
logger.debug(`Found ${releaseRuns.length} relevant workflow runs for ${workflow.name}`);
|
|
478
|
+
} else {
|
|
479
|
+
logger.debug(`No relevant workflow runs found for ${workflow.name}`);
|
|
453
480
|
}
|
|
454
481
|
} catch (error) {
|
|
455
482
|
logger.warn(`Failed to get runs for workflow ${workflow.name}: ${error.message}`);
|
|
@@ -468,16 +495,9 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
468
495
|
return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
|
|
469
496
|
});
|
|
470
497
|
logger.debug(`Found ${allRuns.length} workflow runs triggered by release ${tagName}`);
|
|
471
|
-
if (allRuns.length > 0 && releaseCreatedAt) {
|
|
472
|
-
logger.debug(`Workflow runs created after release ${tagName}:`);
|
|
473
|
-
allRuns.forEach((run)=>{
|
|
474
|
-
var _run_head_sha;
|
|
475
|
-
logger.debug(`- ${run.name}: created ${run.created_at}, commit ${(_run_head_sha = run.head_sha) === null || _run_head_sha === void 0 ? void 0 : _run_head_sha.substring(0, 7)}`);
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
498
|
return allRuns;
|
|
479
499
|
} catch (error) {
|
|
480
|
-
logger.
|
|
500
|
+
logger.error(`Failed to get workflow runs for release ${tagName}: ${error.message}`);
|
|
481
501
|
return [];
|
|
482
502
|
}
|
|
483
503
|
};
|
|
@@ -486,9 +506,9 @@ const waitForReleaseWorkflows = async (tagName, options = {})=>{
|
|
|
486
506
|
const timeout = options.timeout || 600000; // 10 minutes default
|
|
487
507
|
const skipUserConfirmation = options.skipUserConfirmation || false;
|
|
488
508
|
logger.info(`Waiting for workflows triggered by release ${tagName}...`);
|
|
489
|
-
// Wait
|
|
490
|
-
logger.debug('Waiting
|
|
491
|
-
await delay(
|
|
509
|
+
// Wait longer for workflows to start (GitHub can take time to process the release and trigger workflows)
|
|
510
|
+
logger.debug('Waiting 60 seconds for workflows to start...');
|
|
511
|
+
await delay(60000);
|
|
492
512
|
const startTime = Date.now();
|
|
493
513
|
let workflowRuns = [];
|
|
494
514
|
let consecutiveNoWorkflowsCount = 0;
|
|
@@ -515,6 +535,15 @@ const waitForReleaseWorkflows = async (tagName, options = {})=>{
|
|
|
515
535
|
if (workflowRuns.length === 0) {
|
|
516
536
|
consecutiveNoWorkflowsCount++;
|
|
517
537
|
logger.info(`No release workflows found (${consecutiveNoWorkflowsCount}/${maxConsecutiveNoWorkflows}). Waiting...`);
|
|
538
|
+
// Add debug info about what we're looking for
|
|
539
|
+
if (consecutiveNoWorkflowsCount === 1) {
|
|
540
|
+
logger.debug(`Looking for workflows triggered by release ${tagName}`);
|
|
541
|
+
if (options.workflowNames && options.workflowNames.length > 0) {
|
|
542
|
+
logger.debug(`Specific workflows to monitor: ${options.workflowNames.join(', ')}`);
|
|
543
|
+
} else {
|
|
544
|
+
logger.debug('Monitoring all workflows that might be triggered by releases');
|
|
545
|
+
}
|
|
546
|
+
}
|
|
518
547
|
// After several attempts with no workflows, ask user if they want to continue
|
|
519
548
|
if (consecutiveNoWorkflowsCount >= maxConsecutiveNoWorkflows) {
|
|
520
549
|
logger.warn(`No workflows triggered by release ${tagName} after ${maxConsecutiveNoWorkflows} attempts.`);
|