@eldrforge/kodrdriv 1.2.3 → 1.2.4
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 +7 -3
- package/dist/arguments.js.map +1 -1
- package/dist/commands/link.js +10 -10
- package/dist/commands/link.js.map +1 -1
- package/dist/constants.js +1 -1
- package/package.json +1 -1
package/dist/arguments.js
CHANGED
|
@@ -460,7 +460,7 @@ async function getCliConfig(program, commands) {
|
|
|
460
460
|
// Add global options to the main program
|
|
461
461
|
// (cardigantime already adds most global options like --verbose, --debug, --config-dir)
|
|
462
462
|
// Add subcommands
|
|
463
|
-
const commitCommand = program.command('commit').argument('[direction]', 'direction or guidance for the commit message').description('Generate commit notes').option('--context <context>', 'context for the commit message').option('--cached', 'use cached diff').option('--add', 'add all changes before committing').option('--sendit', 'Commit with the message generated. No review.').option('--interactive', 'Present commit message for interactive review and editing').option('--amend', 'Amend the last commit with the generated message').option('--message-limit <messageLimit>', 'limit the number of messages to generate').option('--skip-file-check', 'skip check for file: dependencies before committing').option('--max-diff-bytes <maxDiffBytes>', 'maximum bytes per file in diff (default: 2048)');
|
|
463
|
+
const commitCommand = program.command('commit').argument('[direction]', 'direction or guidance for the commit message').description('Generate commit notes').option('--context <context>', 'context for the commit message').option('--cached', 'use cached diff').option('--add', 'add all changes before committing').option('--sendit', 'Commit with the message generated. No review.').option('--interactive', 'Present commit message for interactive review and editing').option('--amend', 'Amend the last commit with the generated message').option('--push [remote]', 'push to remote after committing (default: origin)').option('--message-limit <messageLimit>', 'limit the number of messages to generate').option('--skip-file-check', 'skip check for file: dependencies before committing').option('--max-diff-bytes <maxDiffBytes>', 'maximum bytes per file in diff (default: 2048)');
|
|
464
464
|
// Add shared options to commit command
|
|
465
465
|
addSharedOptions(commitCommand);
|
|
466
466
|
// Customize help output for commit command
|
|
@@ -494,6 +494,10 @@ async function getCliConfig(program, commands) {
|
|
|
494
494
|
'--amend',
|
|
495
495
|
'Amend the last commit with the generated message'
|
|
496
496
|
],
|
|
497
|
+
[
|
|
498
|
+
'--push [remote]',
|
|
499
|
+
'push to remote after committing (default: origin)'
|
|
500
|
+
],
|
|
497
501
|
[
|
|
498
502
|
'--message-limit <messageLimit>',
|
|
499
503
|
'limit the number of messages to generate'
|
|
@@ -560,9 +564,9 @@ async function getCliConfig(program, commands) {
|
|
|
560
564
|
addSharedOptions(publishCommand);
|
|
561
565
|
const treeCommand = program.command('tree [command] [packageArgument]').option('--directory <directory>', 'target directory containing multiple packages (defaults to current directory)').option('--directories [directories...]', 'target directories containing multiple packages (defaults to current directory)').option('--start-from <startFrom>', 'resume execution from this package directory name (useful for restarting failed builds)').option('--stop-at <stopAt>', 'stop execution at this package directory name (the specified package will not be executed)').option('--cmd <cmd>', 'shell command to execute in each package directory (e.g., "npm install", "git status")').option('--parallel', 'execute packages in parallel when dependencies allow (packages with no interdependencies run simultaneously)').option('--excluded-patterns [excludedPatterns...]', 'patterns to exclude packages from processing (e.g., "**/node_modules/**", "dist/*")').option('--continue', 'continue from previous tree publish execution').option('--clean-node-modules', 'for unlink command: remove node_modules and package-lock.json, then reinstall dependencies').description('Analyze package dependencies in workspace and execute commands in dependency order. Supports built-in commands: commit, publish, link, unlink, development, branches');
|
|
562
566
|
addSharedOptions(treeCommand);
|
|
563
|
-
const linkCommand = program.command('link').option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \'{"@company": "../"}\')').description('Create npm file: dependencies for local development');
|
|
567
|
+
const linkCommand = program.command('link [packageArgument]').option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \'{"@company": "../"}\')').description('Create npm file: dependencies for local development');
|
|
564
568
|
addSharedOptions(linkCommand);
|
|
565
|
-
const unlinkCommand = program.command('unlink').option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \'{"@company": "../"}\')').option('--clean-node-modules', 'remove node_modules and package-lock.json, then reinstall dependencies').description('Restore original dependencies and rebuild node_modules');
|
|
569
|
+
const unlinkCommand = program.command('unlink [packageArgument]').option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \'{"@company": "../"}\')').option('--clean-node-modules', 'remove node_modules and package-lock.json, then reinstall dependencies').description('Restore original dependencies and rebuild node_modules');
|
|
566
570
|
addSharedOptions(unlinkCommand);
|
|
567
571
|
const audioReviewCommand = program.command('audio-review').option('--include-commit-history', 'include recent commit log messages in context (default: true)').option('--no-include-commit-history', 'exclude commit log messages from context').option('--include-recent-diffs', 'include recent commit diffs in context (default: true)').option('--no-include-recent-diffs', 'exclude recent diffs from context').option('--include-release-notes', 'include recent release notes in context (default: false)').option('--no-include-release-notes', 'exclude release notes from context').option('--include-github-issues', 'include open GitHub issues in context (default: true)').option('--no-include-github-issues', 'exclude GitHub issues from context').option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt).option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt).option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt).option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt).option('--context <context>', 'additional context for the audio review').option('--file <file>', 'audio file path').option('--directory <directory>', 'directory containing audio files to process').option('--max-recording-time <time>', 'maximum recording time in seconds', parseInt).option('--sendit', 'Create GitHub issues automatically without confirmation').description('Record audio, transcribe with Whisper, and analyze for project issues using AI');
|
|
568
572
|
addSharedOptions(audioReviewCommand);
|
package/dist/arguments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.js","sources":["../src/arguments.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { ALLOWED_COMMANDS, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION } from \"./constants\";\nimport { getLogger } from \"./logging\";\nconst logger = getLogger();\nimport { CommandConfig, Config, SecureConfig } from './types'; // Import the Config type from main.ts\nimport * as Storage from \"./util/storage\";\nimport { safeJsonParse } from './util/validation';\nimport { readStdin } from \"./util/stdin\";\n\nexport const InputSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n checkConfig: z.boolean().optional(),\n initConfig: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n contextDirectories: z.array(z.string()).optional(),\n configDir: z.string().optional(),\n outputDir: z.string().optional(),\n preferencesDir: z.string().optional(),\n cached: z.boolean().optional(),\n add: z.boolean().optional(),\n sendit: z.boolean().optional(),\n interactive: z.boolean().optional(),\n amend: z.boolean().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n targetVersion: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n excludedPaths: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(), // Alias for excludedPatterns\n context: z.string().optional(),\n note: z.string().optional(), // For review command positional argument/STDIN\n direction: z.string().optional(),\n messageLimit: z.number().optional(),\n skipFileCheck: z.boolean().optional(),\n maxDiffBytes: z.number().optional(),\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n syncTarget: z.boolean().optional(),\n scopeRoots: z.string().optional(),\n workspaceFile: z.string().optional(),\n cleanNodeModules: z.boolean().optional(),\n\n startFrom: z.string().optional(),\n stopAt: z.string().optional(),\n script: z.string().optional(),\n cmd: z.string().optional(),\n publish: z.boolean().optional(),\n parallel: z.boolean().optional(),\n continue: z.boolean().optional(),\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n editorTimeout: z.number().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 file: z.string().optional(), // Audio file path for audio-commit and audio-review\n directory: z.string().optional(), // Add directory option at top level (for audio commands)\n directories: z.array(z.string()).optional(), // Add directories option at top level (for tree commands)\n externals: z.array(z.string()).optional(), // External packages to include/exclude\n keepTemp: z.boolean().optional(), // Keep temporary recording files\n noMilestones: z.boolean().optional(), // Disable GitHub milestone integration\n subcommand: z.string().optional(), // Subcommand for versions command\n});\n\nexport type Input = z.infer<typeof InputSchema>;\n\n// Function to transform flat CLI args into nested Config structure\nexport const transformCliArgs = (finalCliArgs: Input, commandName?: string): Partial<Config> => {\n const transformedCliArgs: Partial<Config> = {};\n\n // Root-level properties\n if (finalCliArgs.dryRun !== undefined) transformedCliArgs.dryRun = finalCliArgs.dryRun;\n if (finalCliArgs.verbose !== undefined) transformedCliArgs.verbose = finalCliArgs.verbose;\n if (finalCliArgs.debug !== undefined) transformedCliArgs.debug = finalCliArgs.debug;\n if (finalCliArgs.model !== undefined) transformedCliArgs.model = finalCliArgs.model;\n if (finalCliArgs.outputDir !== undefined) transformedCliArgs.outputDirectory = finalCliArgs.outputDir;\n if (finalCliArgs.preferencesDir !== undefined) transformedCliArgs.preferencesDirectory = finalCliArgs.preferencesDir;\n if (finalCliArgs.configDir !== undefined) transformedCliArgs.configDirectory = finalCliArgs.configDir;\n if (finalCliArgs.overrides !== undefined) transformedCliArgs.overrides = finalCliArgs.overrides;\n if (finalCliArgs.contextDirectories !== undefined) transformedCliArgs.contextDirectories = finalCliArgs.contextDirectories;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n\n // Nested mappings for 'commit' options\n if (finalCliArgs.add !== undefined || finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.skipFileCheck !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.messageLimit !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined || finalCliArgs.amend !== undefined || finalCliArgs.context !== undefined || finalCliArgs.direction !== undefined || (commandName === 'commit' && finalCliArgs.interactive !== undefined) || (finalCliArgs as any).push !== undefined) {\n transformedCliArgs.commit = {};\n if (finalCliArgs.add !== undefined) transformedCliArgs.commit.add = finalCliArgs.add;\n if (finalCliArgs.cached !== undefined) transformedCliArgs.commit.cached = finalCliArgs.cached;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.commit.sendit = finalCliArgs.sendit;\n if (finalCliArgs.skipFileCheck !== undefined) transformedCliArgs.commit.skipFileCheck = finalCliArgs.skipFileCheck;\n if (finalCliArgs.maxDiffBytes !== undefined) transformedCliArgs.commit.maxDiffBytes = finalCliArgs.maxDiffBytes;\n if (finalCliArgs.messageLimit !== undefined) transformedCliArgs.commit.messageLimit = finalCliArgs.messageLimit;\n if (finalCliArgs.amend !== undefined) transformedCliArgs.commit.amend = finalCliArgs.amend;\n if ((finalCliArgs as any).push !== undefined) (transformedCliArgs.commit as any).push = (finalCliArgs as any).push;\n if (finalCliArgs.context !== undefined) transformedCliArgs.commit.context = finalCliArgs.context;\n if (finalCliArgs.direction !== undefined) transformedCliArgs.commit.direction = finalCliArgs.direction;\n if (commandName === 'commit' && finalCliArgs.interactive !== undefined) transformedCliArgs.commit.interactive = finalCliArgs.interactive;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.commit.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.commit.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'audioCommit' options\n if (finalCliArgs.file !== undefined || finalCliArgs.keepTemp !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined) {\n transformedCliArgs.audioCommit = {};\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioCommit.file = finalCliArgs.file;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioCommit.keepTemp = finalCliArgs.keepTemp;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.audioCommit.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.audioCommit.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'release' options (only when it's NOT a publish command)\n if (commandName !== 'publish') {\n if (finalCliArgs.from !== undefined || finalCliArgs.to !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.interactive !== undefined || finalCliArgs.noMilestones !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined) {\n transformedCliArgs.release = {};\n if (finalCliArgs.from !== undefined) transformedCliArgs.release.from = finalCliArgs.from;\n if (finalCliArgs.to !== undefined) transformedCliArgs.release.to = finalCliArgs.to;\n if ((commandName === 'release' || finalCliArgs.from !== undefined || finalCliArgs.to !== undefined) && finalCliArgs.context !== undefined) transformedCliArgs.release.context = finalCliArgs.context;\n if (finalCliArgs.interactive !== undefined) transformedCliArgs.release.interactive = finalCliArgs.interactive;\n if ((commandName === 'release' || finalCliArgs.from !== undefined || finalCliArgs.to !== undefined) && finalCliArgs.messageLimit !== undefined) transformedCliArgs.release.messageLimit = finalCliArgs.messageLimit;\n if (finalCliArgs.maxDiffBytes !== undefined) transformedCliArgs.release.maxDiffBytes = finalCliArgs.maxDiffBytes;\n if (finalCliArgs.noMilestones !== undefined) transformedCliArgs.release.noMilestones = finalCliArgs.noMilestones;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.release.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.release.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n }\n\n // Nested mappings for 'publish' options – map whenever publish-specific options are provided\n if (\n finalCliArgs.mergeMethod !== undefined ||\n finalCliArgs.targetVersion !== undefined ||\n finalCliArgs.interactive !== undefined ||\n finalCliArgs.syncTarget !== undefined ||\n (commandName === 'publish' && (finalCliArgs.from !== undefined || finalCliArgs.noMilestones !== undefined))\n ) {\n transformedCliArgs.publish = {};\n if (finalCliArgs.mergeMethod !== undefined) transformedCliArgs.publish.mergeMethod = finalCliArgs.mergeMethod;\n if ((commandName === 'publish' || finalCliArgs.mergeMethod !== undefined || finalCliArgs.targetVersion !== undefined || finalCliArgs.syncTarget !== undefined || finalCliArgs.interactive !== undefined) && finalCliArgs.from !== undefined) transformedCliArgs.publish.from = finalCliArgs.from;\n if (finalCliArgs.targetVersion !== undefined) transformedCliArgs.publish.targetVersion = finalCliArgs.targetVersion;\n if (finalCliArgs.interactive !== undefined) transformedCliArgs.publish.interactive = finalCliArgs.interactive;\n if (finalCliArgs.syncTarget !== undefined) transformedCliArgs.publish.syncTarget = finalCliArgs.syncTarget;\n if ((commandName === 'publish' || finalCliArgs.mergeMethod !== undefined || finalCliArgs.targetVersion !== undefined || finalCliArgs.syncTarget !== undefined || finalCliArgs.interactive !== undefined) && finalCliArgs.noMilestones !== undefined) transformedCliArgs.publish.noMilestones = finalCliArgs.noMilestones;\n }\n\n // Nested mappings for 'development' options\n if (commandName === 'development' && (finalCliArgs.targetVersion !== undefined || finalCliArgs.noMilestones !== undefined)) {\n transformedCliArgs.development = {};\n if (finalCliArgs.targetVersion !== undefined) transformedCliArgs.development.targetVersion = finalCliArgs.targetVersion;\n if (finalCliArgs.noMilestones !== undefined) transformedCliArgs.development.noMilestones = finalCliArgs.noMilestones;\n // Mirror targetVersion into publish; mirror noMilestones into publish and release to match test expectations\n transformedCliArgs.publish = {\n ...(transformedCliArgs.publish || {}),\n ...(finalCliArgs.targetVersion !== undefined ? { targetVersion: finalCliArgs.targetVersion } : {}),\n ...(finalCliArgs.noMilestones !== undefined ? { noMilestones: finalCliArgs.noMilestones } : {}),\n };\n transformedCliArgs.release = {\n ...(transformedCliArgs.release || {}),\n ...(finalCliArgs.noMilestones !== undefined ? { noMilestones: finalCliArgs.noMilestones } : {}),\n };\n }\n\n // Nested mappings for 'link' and 'unlink' options\n const linkPackageArgument = (finalCliArgs as any).packageArgument;\n if ((commandName === 'link' || commandName === undefined) && (finalCliArgs.scopeRoots !== undefined || linkPackageArgument !== undefined)) {\n transformedCliArgs.link = {};\n if (finalCliArgs.scopeRoots !== undefined) {\n try {\n transformedCliArgs.link.scopeRoots = safeJsonParse(finalCliArgs.scopeRoots, 'scopeRoots CLI argument');\n\n } catch (error) {\n throw new Error(`Invalid JSON for scope-roots: ${finalCliArgs.scopeRoots}`);\n }\n }\n if (linkPackageArgument !== undefined) {\n transformedCliArgs.link.packageArgument = linkPackageArgument;\n }\n }\n\n // Nested mappings for 'unlink' options\n const unlinkPackageArgument = (finalCliArgs as any).packageArgument;\n\n if (commandName === 'unlink' && (finalCliArgs.scopeRoots !== undefined || unlinkPackageArgument !== undefined || finalCliArgs.workspaceFile !== undefined || finalCliArgs.cleanNodeModules !== undefined)) {\n transformedCliArgs.unlink = {};\n if (finalCliArgs.scopeRoots !== undefined) {\n try {\n transformedCliArgs.unlink.scopeRoots = safeJsonParse(finalCliArgs.scopeRoots, 'scopeRoots CLI argument');\n } catch (error) {\n throw new Error(`Invalid JSON for scope-roots: ${finalCliArgs.scopeRoots}`);\n }\n }\n if (finalCliArgs.workspaceFile !== undefined) transformedCliArgs.unlink.workspaceFile = finalCliArgs.workspaceFile;\n if (finalCliArgs.cleanNodeModules !== undefined) transformedCliArgs.unlink.cleanNodeModules = finalCliArgs.cleanNodeModules;\n if (unlinkPackageArgument !== undefined) {\n transformedCliArgs.unlink.packageArgument = unlinkPackageArgument;\n }\n }\n\n // Nested mappings for 'audio-review' options (only when it's not a tree command)\n if (commandName !== 'tree' && (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.file !== undefined ||\n finalCliArgs.directories !== undefined ||\n finalCliArgs.keepTemp !== undefined ||\n finalCliArgs.openaiReasoning !== undefined ||\n finalCliArgs.openaiMaxOutputTokens !== undefined)) {\n transformedCliArgs.audioReview = {};\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.audioReview.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.audioReview.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.audioReview.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.audioReview.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.audioReview.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.audioReview.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.audioReview.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.audioReview.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.audioReview.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.audioReview.sendit = finalCliArgs.sendit;\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioReview.file = finalCliArgs.file;\n if (finalCliArgs.directory !== undefined) transformedCliArgs.audioReview.directory = finalCliArgs.directory;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioReview.keepTemp = finalCliArgs.keepTemp;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.audioReview.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.audioReview.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'review' options\n if (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.context !== undefined ||\n finalCliArgs.sendit !== undefined ||\n finalCliArgs.note !== undefined ||\n finalCliArgs.openaiReasoning !== undefined ||\n finalCliArgs.openaiMaxOutputTokens !== undefined ||\n (commandName === 'review' && (finalCliArgs.file !== undefined || finalCliArgs.directory !== undefined))) {\n transformedCliArgs.review = {};\n if (finalCliArgs.note !== undefined) transformedCliArgs.review.note = finalCliArgs.note;\n if (commandName === 'review' && finalCliArgs.file !== undefined) transformedCliArgs.review.file = finalCliArgs.file;\n if (commandName === 'review' && finalCliArgs.directory !== undefined) transformedCliArgs.review.directory = finalCliArgs.directory;\n // Include optional review configuration options if specified\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.review.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.review.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.review.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.review.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.review.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.review.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.review.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.review.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.review.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.review.sendit = finalCliArgs.sendit;\n if (finalCliArgs.editorTimeout !== undefined) transformedCliArgs.review.editorTimeout = finalCliArgs.editorTimeout;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.review.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.review.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'tree' options (add when relevant args present)\n if (commandName === 'tree') {\n const builtInCommand = (finalCliArgs as any).builtInCommand;\n const packageArgument = (finalCliArgs as any).packageArgument;\n\n // Only create tree object if there are actual tree-specific options\n if (finalCliArgs.directories !== undefined || finalCliArgs.directory !== undefined ||\n finalCliArgs.startFrom !== undefined ||\n finalCliArgs.stopAt !== undefined || finalCliArgs.cmd !== undefined ||\n builtInCommand !== undefined || finalCliArgs.continue !== undefined ||\n packageArgument !== undefined || finalCliArgs.cleanNodeModules !== undefined ||\n finalCliArgs.externals !== undefined) {\n\n transformedCliArgs.tree = {};\n if (finalCliArgs.directories !== undefined) transformedCliArgs.tree.directories = finalCliArgs.directories;\n else if (finalCliArgs.directory !== undefined) transformedCliArgs.tree.directories = [finalCliArgs.directory];\n if (finalCliArgs.startFrom !== undefined) transformedCliArgs.tree.startFrom = finalCliArgs.startFrom;\n if (finalCliArgs.stopAt !== undefined) transformedCliArgs.tree.stopAt = finalCliArgs.stopAt;\n if (finalCliArgs.cmd !== undefined) transformedCliArgs.tree.cmd = finalCliArgs.cmd;\n // Note: parallel property is not part of the tree config type\n if (builtInCommand !== undefined) transformedCliArgs.tree.builtInCommand = builtInCommand;\n if (finalCliArgs.continue !== undefined) transformedCliArgs.tree.continue = finalCliArgs.continue;\n if (packageArgument !== undefined) transformedCliArgs.tree.packageArgument = packageArgument;\n if (finalCliArgs.cleanNodeModules !== undefined) transformedCliArgs.tree.cleanNodeModules = finalCliArgs.cleanNodeModules;\n if (finalCliArgs.externals !== undefined) transformedCliArgs.tree.externals = finalCliArgs.externals;\n }\n }\n\n // Nested mappings for 'development' options\n if (commandName === 'development' && (finalCliArgs.targetVersion !== undefined || finalCliArgs.noMilestones !== undefined)) {\n transformedCliArgs.development = {};\n if (finalCliArgs.targetVersion !== undefined) transformedCliArgs.development.targetVersion = finalCliArgs.targetVersion;\n if (finalCliArgs.noMilestones !== undefined) transformedCliArgs.development.noMilestones = finalCliArgs.noMilestones;\n }\n\n // Nested mappings for 'versions' options\n if (commandName === 'versions' && (finalCliArgs.subcommand !== undefined || finalCliArgs.directories !== undefined)) {\n transformedCliArgs.versions = {};\n if (finalCliArgs.subcommand !== undefined) transformedCliArgs.versions.subcommand = finalCliArgs.subcommand;\n if (finalCliArgs.directories !== undefined) transformedCliArgs.versions.directories = finalCliArgs.directories;\n }\n\n // Handle excluded patterns (Commander.js converts --excluded-paths to excludedPaths)\n // Also handle exclude as alias for excludedPatterns\n const excludedPatterns = finalCliArgs.excludedPatterns || finalCliArgs.exclude || finalCliArgs.excludedPaths;\n if (excludedPatterns !== undefined) {\n if (commandName === 'tree') {\n // For tree command, map to both root level excludedPatterns AND tree.exclude\n transformedCliArgs.excludedPatterns = excludedPatterns;\n if (!transformedCliArgs.tree) {\n transformedCliArgs.tree = {};\n }\n transformedCliArgs.tree.exclude = excludedPatterns;\n } else {\n // For non-tree commands, map to root level excludedPatterns\n transformedCliArgs.excludedPatterns = excludedPatterns;\n }\n }\n\n // Handle externals - map to appropriate command objects based on command type\n if (finalCliArgs.externals !== undefined) {\n if (commandName === 'link') {\n if (!transformedCliArgs.link) {\n transformedCliArgs.link = {};\n }\n transformedCliArgs.link.externals = finalCliArgs.externals;\n } else if (commandName === 'unlink') {\n if (!transformedCliArgs.unlink) {\n transformedCliArgs.unlink = {};\n }\n transformedCliArgs.unlink.externals = finalCliArgs.externals;\n } else if (commandName === 'tree') {\n if (!transformedCliArgs.tree) {\n transformedCliArgs.tree = {};\n }\n transformedCliArgs.tree.externals = finalCliArgs.externals;\n }\n }\n\n // Note: openaiApiKey is handled separately via environment variable only\n\n return transformedCliArgs;\n}\n\n\n\n// Update configure signature to accept cardigantime\nexport const configure = async (cardigantime: any): Promise<[Config, SecureConfig, CommandConfig]> => {\n const logger = getLogger();\n let program = new Command();\n\n // Configure program basics\n program\n .name(PROGRAM_NAME)\n .summary('Create Intelligent Release Notes or Change Logs from Git')\n .description('Create Intelligent Release Notes or Change Logs from Git')\n .version(VERSION);\n\n // Let cardigantime add its arguments first\n program = await cardigantime.configure(program);\n\n // Check if --check-config is in process.argv early\n if (process.argv.includes('--check-config')) {\n // For check-config, use CardiganTime's built-in checkConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n // Use CardiganTime's built-in checkConfig method which displays\n // hierarchical configuration information in a well-formatted way\n await cardigantime.checkConfig(transformedCliArgs);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'check-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Check if --init-config is in process.argv early\n if (process.argv.includes('--init-config')) {\n // For init-config, use CardiganTime's built-in generateConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n\n // Use CardiganTime's built-in generateConfig method\n const configDir = transformedCliArgs.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n const absoluteConfigDir = path.isAbsolute(configDir) ? configDir : path.resolve(process.cwd(), configDir);\n await cardigantime.generateConfig(absoluteConfigDir);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'init-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Get CLI arguments using the new function\n const [finalCliArgs, commandConfig]: [Input, CommandConfig] = await getCliConfig(program);\n logger.silly('Loaded Command Line Options: %s', JSON.stringify(finalCliArgs, null, 2));\n\n // Transform the flat CLI args using the new function\n const transformedCliArgs: Partial<Config> = transformCliArgs(finalCliArgs, commandConfig.commandName);\n logger.silly('Transformed CLI Args for merging: %s', JSON.stringify(transformedCliArgs, null, 2));\n\n // Get values from config file using Cardigantime's hierarchical configuration\n const fileValues: Partial<Config> = await cardigantime.read(transformedCliArgs) as Partial<Config>;\n\n // Merge configurations: Defaults -> File -> CLI\n // Properly merge nested sections to preserve config file values when CLI args are partial\n const mergedLink = {\n ...KODRDRIV_DEFAULTS.link,\n ...fileValues.link,\n ...transformedCliArgs.link,\n };\n\n const mergedCommit = {\n ...KODRDRIV_DEFAULTS.commit,\n ...fileValues.commit,\n ...transformedCliArgs.commit,\n };\n\n const mergedRelease = {\n ...KODRDRIV_DEFAULTS.release,\n ...fileValues.release,\n ...transformedCliArgs.release,\n };\n\n const mergedPublish = {\n ...KODRDRIV_DEFAULTS.publish,\n ...fileValues.publish,\n ...transformedCliArgs.publish,\n };\n\n const mergedAudioCommit = {\n ...KODRDRIV_DEFAULTS.audioCommit,\n ...fileValues.audioCommit,\n ...transformedCliArgs.audioCommit,\n };\n\n const mergedAudioReview = {\n ...KODRDRIV_DEFAULTS.audioReview,\n ...fileValues.audioReview,\n ...transformedCliArgs.audioReview,\n };\n\n const mergedReview = {\n ...KODRDRIV_DEFAULTS.review,\n ...fileValues.review,\n ...transformedCliArgs.review,\n };\n\n const mergedTree = {\n ...KODRDRIV_DEFAULTS.tree,\n ...fileValues.tree,\n ...transformedCliArgs.tree,\n };\n\n const partialConfig: Partial<Config> = {\n ...KODRDRIV_DEFAULTS, // Start with Kodrdriv defaults\n ...fileValues, // Apply file values (overwrites defaults)\n ...transformedCliArgs, // Apply CLI args last (highest precedence)\n // Override with properly merged nested sections\n link: mergedLink,\n commit: mergedCommit,\n release: mergedRelease,\n publish: mergedPublish,\n audioCommit: mergedAudioCommit,\n audioReview: mergedAudioReview,\n review: mergedReview,\n tree: mergedTree,\n } as Partial<Config>; // Cast to Partial<Config> initially\n\n // Specific validation and processing after merge\n const config: Config = await validateAndProcessOptions(partialConfig);\n\n // Log effective configuration summary at verbose level\n logger.verbose('Configuration complete. Effective settings:');\n logger.verbose(` Command: ${commandConfig.commandName}`);\n logger.verbose(` Model: ${config.model}`);\n logger.verbose(` Dry run: ${config.dryRun}`);\n logger.verbose(` Debug: ${config.debug}`);\n logger.verbose(` Verbose: ${config.verbose}`);\n logger.verbose(` Config directory: ${config.configDirectory}`);\n logger.verbose(` Output directory: ${config.outputDirectory}`);\n logger.verbose(` Context directories: ${config.contextDirectories?.join(', ') || 'none'}`);\n if (config.excludedPatterns && config.excludedPatterns.length > 0) {\n logger.verbose(` Excluded patterns: ${config.excludedPatterns.join(', ')}`);\n }\n if (Object.keys(config.link?.scopeRoots || {}).length > 0) {\n logger.verbose(` Link scope roots: ${Object.keys(config.link!.scopeRoots!).join(', ')}`);\n }\n\n logger.silly('Final configuration: %s', JSON.stringify(config, null, 2));\n\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n\n return [config, secureConfig, commandConfig];\n}\n\n// Function to handle CLI argument parsing and processing\nexport async function getCliConfig(\n program: Command,\n commands?: {\n commitCommand?: Command;\n audioCommitCommand?: Command;\n releaseCommand?: Command;\n publishCommand?: Command;\n treeCommand?: Command;\n linkCommand?: Command;\n unlinkCommand?: Command;\n audioReviewCommand?: Command;\n reviewCommand?: Command;\n cleanCommand?: Command;\n developmentCommand?: Command;\n versionsCommand?: Command;\n selectAudioCommand?: Command;\n }\n): Promise<[Input, CommandConfig]> {\n\n const addSharedOptions = (command: Command) => {\n command\n .option('--dry-run', 'perform a dry run without saving files') // Removed default, will be handled by merging\n .option('--verbose', 'enable verbose logging')\n .option('--debug', 'enable debug logging')\n .option('--overrides', 'enable overrides')\n .option('--model <model>', 'OpenAI model to use')\n .option('--openai-reasoning <level>', 'OpenAI reasoning level (low, medium, high)')\n .option('--openai-max-output-tokens <tokens>', 'OpenAI maximum output tokens', parseInt)\n .option('-d, --context-directories [contextDirectories...]', 'directories to scan for context')\n .option('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location\n .option('--output-dir <outputDir>', 'output directory for generated files')\n .option('--preferences-dir <preferencesDir>', 'preferences directory for personal settings')\n .option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff')\n .option('--keep-temp', 'keep temporary recording files');\n }\n\n // Add global options to the main program\n // (cardigantime already adds most global options like --verbose, --debug, --config-dir)\n\n // Add subcommands\n const commitCommand = program\n .command('commit')\n .argument('[direction]', 'direction or guidance for the commit message')\n .description('Generate commit notes')\n .option('--context <context>', 'context for the commit message')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--interactive', 'Present commit message for interactive review and editing')\n .option('--amend', 'Amend the last commit with the generated message')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate')\n .option('--skip-file-check', 'skip check for file: dependencies before committing')\n .option('--max-diff-bytes <maxDiffBytes>', 'maximum bytes per file in diff (default: 2048)');\n\n // Add shared options to commit command\n addSharedOptions(commitCommand);\n\n // Customize help output for commit command\n commitCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `${helper.commandUsage(cmd)}\\n\\n${helper.commandDescription(cmd)}\\n`;\n\n const commitOptions = [\n ['--context <context>', 'context for the commit message']\n ];\n\n const behavioralOptions = [\n ['--cached', 'use cached diff'],\n ['--add', 'add all changes before committing'],\n ['--sendit', 'Commit with the message generated. No review.'],\n ['--interactive', 'Present commit message for interactive review and editing'],\n ['--amend', 'Amend the last commit with the generated message'],\n ['--message-limit <messageLimit>', 'limit the number of messages to generate']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['--openai-reasoning <level>', 'OpenAI reasoning level (low, medium, high)'],\n ['--openai-max-output-tokens <tokens>', 'OpenAI maximum output tokens'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Commit Message Options', commitOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const audioCommitCommand = program\n .command('audio-commit')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--direction <direction>', 'direction or guidance for the commit message')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate')\n .option('--file <file>', 'audio file path')\n .description('Record audio to provide context, then generate and optionally commit with AI-generated message');\n addSharedOptions(audioCommitCommand);\n\n const releaseCommand = program\n .command('release')\n .option('--from <from>', 'branch to generate release notes from')\n .option('--to <to>', 'branch to generate release notes to')\n .option('--context <context>', 'context for the commit message')\n .option('--interactive', 'Present release notes for interactive review and editing')\n .option('--max-diff-bytes <maxDiffBytes>', 'maximum bytes per file in diff (default: 2048)')\n .option('--no-milestones', 'disable GitHub milestone integration')\n .description('Generate release notes');\n addSharedOptions(releaseCommand);\n\n const publishCommand = program\n .command('publish')\n .option('--merge-method <method>', 'method to merge PR (merge, squash, rebase)', 'squash')\n .option('--from <from>', 'branch/tag to generate release notes from (default: main)')\n .option('--target-version <targetVersion>', 'target version for release (explicit version like \"4.30.0\" or semantic bump: \"patch\", \"minor\", \"major\")')\n .option('--interactive', 'present release notes for interactive review and editing')\n .option('--sendit', 'skip all confirmation prompts and proceed automatically')\n .option('--sync-target', 'attempt to automatically sync target branch with remote before publishing')\n .option('--no-milestones', 'disable GitHub milestone integration')\n .description('Publish a release');\n addSharedOptions(publishCommand);\n\n const treeCommand = program\n .command('tree [command] [packageArgument]')\n .option('--directory <directory>', 'target directory containing multiple packages (defaults to current directory)')\n .option('--directories [directories...]', 'target directories containing multiple packages (defaults to current directory)')\n .option('--start-from <startFrom>', 'resume execution from this package directory name (useful for restarting failed builds)')\n .option('--stop-at <stopAt>', 'stop execution at this package directory name (the specified package will not be executed)')\n .option('--cmd <cmd>', 'shell command to execute in each package directory (e.g., \"npm install\", \"git status\")')\n .option('--parallel', 'execute packages in parallel when dependencies allow (packages with no interdependencies run simultaneously)')\n .option('--excluded-patterns [excludedPatterns...]', 'patterns to exclude packages from processing (e.g., \"**/node_modules/**\", \"dist/*\")')\n .option('--continue', 'continue from previous tree publish execution')\n .option('--clean-node-modules', 'for unlink command: remove node_modules and package-lock.json, then reinstall dependencies')\n .description('Analyze package dependencies in workspace and execute commands in dependency order. Supports built-in commands: commit, publish, link, unlink, development, branches');\n addSharedOptions(treeCommand);\n\n const linkCommand = program\n .command('link')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .description('Create npm file: dependencies for local development');\n addSharedOptions(linkCommand);\n\n const unlinkCommand = program\n .command('unlink')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .option('--clean-node-modules', 'remove node_modules and package-lock.json, then reinstall dependencies')\n .description('Restore original dependencies and rebuild node_modules');\n addSharedOptions(unlinkCommand);\n\n const audioReviewCommand = program\n .command('audio-review')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the audio review')\n .option('--file <file>', 'audio file path')\n .option('--directory <directory>', 'directory containing audio files to process')\n .option('--max-recording-time <time>', 'maximum recording time in seconds', parseInt)\n .option('--sendit', 'Create GitHub issues automatically without confirmation')\n .description('Record audio, transcribe with Whisper, and analyze for project issues using AI');\n addSharedOptions(audioReviewCommand);\n\n const reviewCommand = program\n .command('review')\n .argument('[note]', 'review note to analyze for project issues')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the review')\n .option('--file <file>', 'read review note from a file')\n .option('--directory <directory>', 'process all review files in a directory')\n .option('--sendit', 'Create GitHub issues automatically without confirmation')\n .option('--editor-timeout <timeout>', 'timeout for editor in milliseconds (default: no timeout)', parseInt)\n .description('Analyze review note for project issues using AI');\n addSharedOptions(reviewCommand);\n\n // Customize help output for review command\n reviewCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `kodrdriv review [note] [options]\\n\\nAnalyze review note for project issues using AI\\n`;\n\n const argumentsSection = [\n ['note', 'review note to analyze for project issues (can also be piped via STDIN)']\n ];\n\n const reviewOptions = [\n ['--context <context>', 'additional context for the review'],\n ['--file <file>', 'read review note from a file'],\n ['--directory <directory>', 'process all review files in a directory']\n ];\n\n const gitContextOptions = [\n ['--include-commit-history', 'include recent commit log messages in context (default: true)'],\n ['--no-include-commit-history', 'exclude commit log messages from context'],\n ['--include-recent-diffs', 'include recent commit diffs in context (default: true)'],\n ['--no-include-recent-diffs', 'exclude recent diffs from context'],\n ['--include-release-notes', 'include recent release notes in context (default: false)'],\n ['--no-include-release-notes', 'exclude release notes from context'],\n ['--include-github-issues', 'include open GitHub issues in context (default: true)'],\n ['--no-include-github-issues', 'exclude GitHub issues from context'],\n ['--commit-history-limit <limit>', 'number of recent commits to include'],\n ['--diff-history-limit <limit>', 'number of recent commit diffs to include'],\n ['--release-notes-limit <limit>', 'number of recent release notes to include'],\n ['--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)']\n ];\n\n const behavioralOptions = [\n ['--sendit', 'Create GitHub issues automatically without confirmation']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['--openai-reasoning <level>', 'OpenAI reasoning level (low, medium, high)'],\n ['--openai-max-output-tokens <tokens>', 'OpenAI maximum output tokens'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--output-dir <outputDir>', 'output directory for generated files'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Arguments', argumentsSection) + '\\n' +\n formatOptionsSection('Options', reviewOptions) + '\\n' +\n formatOptionsSection('Git Context Parameters', gitContextOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const cleanCommand = program\n .command('clean')\n .description('Remove the output directory and all generated files');\n addSharedOptions(cleanCommand);\n\n const developmentCommand = program\n .command('development')\n .option('--target-version <targetVersion>', 'target version bump type (patch, minor, major) or explicit version (e.g., \"2.1.0\")', 'patch')\n .option('--no-milestones', 'disable GitHub milestone integration')\n .description('Switch to working branch and set up development version');\n addSharedOptions(developmentCommand);\n\n const versionsCommand = program\n .command('versions <subcommand>')\n .option('--directories [directories...]', 'directories to scan for packages (defaults to current directory)')\n .description('Update dependency versions across packages. Subcommands: minor');\n addSharedOptions(versionsCommand);\n\n const selectAudioCommand = program\n .command('select-audio')\n .description('Interactively select and save audio device for recording');\n addSharedOptions(selectAudioCommand);\n\n program.parse();\n\n const cliArgs: Input = program.opts<Input>(); // Get all opts initially\n\n // Determine which command is being run\n let commandName = DEFAULT_COMMAND;\n let commandOptions: Partial<Input> = {}; // Store specific command options\n\n if (program.args.length > 0) {\n commandName = program.args[0];\n validateCommand(commandName);\n }\n\n // Only proceed with command-specific options if validation passed\n if (ALLOWED_COMMANDS.includes(commandName)) {\n const chosen = commands ?? {\n commitCommand,\n audioCommitCommand,\n releaseCommand,\n publishCommand,\n treeCommand,\n linkCommand,\n unlinkCommand,\n audioReviewCommand,\n reviewCommand,\n cleanCommand,\n developmentCommand,\n versionsCommand,\n selectAudioCommand,\n } as const;\n\n if (commandName === 'commit' && chosen?.commitCommand?.opts) {\n const commitCmd = chosen.commitCommand;\n commandOptions = commitCmd.opts<Partial<Input>>();\n // Handle positional argument for direction\n // Try to get direction from program.args (after the command name)\n if (program.args.length > 1) {\n commandOptions.direction = program.args[1];\n }\n\n // Also try commitCommand.args as fallback\n const args = (commitCmd as any).args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.direction = firstTruthyArg;\n }\n }\n\n // Final fallback: use locally constructed commit command's args\n if (!commandOptions.direction) {\n const localArgs = (commitCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n commandOptions.direction = firstLocalArg;\n }\n }\n }\n\n // Check for STDIN input for direction (takes precedence over positional argument)\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.direction = stdinInput;\n }\n } else if (commandName === 'commit' && (chosen as any)?.commit?.opts) {\n // Fallback when a test/mocked commands object provides 'commit' instead of 'commitCommand'\n const commitCmd = (chosen as any).commit as any;\n commandOptions = commitCmd.opts();\n if (program.args.length > 1) {\n commandOptions.direction = program.args[1];\n }\n const args = commitCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.direction = firstTruthyArg;\n }\n }\n if (!commandOptions.direction) {\n const localArgs = (commitCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n commandOptions.direction = firstLocalArg;\n }\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.direction = stdinInput;\n }\n } else if (commandName === 'audio-commit' && chosen?.audioCommitCommand?.opts) {\n const audioCommitCmd = chosen.audioCommitCommand;\n commandOptions = audioCommitCmd.opts();\n } else if (commandName === 'release' && chosen?.releaseCommand?.opts) {\n const releaseCmd = chosen.releaseCommand;\n commandOptions = releaseCmd.opts();\n } else if (commandName === 'publish' && chosen?.publishCommand?.opts) {\n const publishCmd = chosen.publishCommand;\n commandOptions = publishCmd.opts();\n } else if (commandName === 'tree' && chosen?.treeCommand?.opts) {\n const treeCmd = chosen.treeCommand as any;\n commandOptions = treeCmd.opts();\n // Handle positional arguments for built-in command and package argument\n const args = treeCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n (commandOptions as any).builtInCommand = firstTruthyArg;\n if ((firstTruthyArg === 'link' || firstTruthyArg === 'unlink') && args.length > 1) {\n const secondTruthyArg = args.slice(1).find((arg: any) => arg);\n if (secondTruthyArg) {\n (commandOptions as any).packageArgument = secondTruthyArg;\n }\n }\n }\n }\n\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n (commandOptions as any).builtInCommand = stdinInput.trim().split('\\n')[0] || (commandOptions as any).builtInCommand;\n const stdinLines = stdinInput.split('\\n');\n if (stdinLines[1]) {\n (commandOptions as any).packageArgument = stdinLines[1];\n }\n }\n } else if (commandName === 'link' && chosen?.linkCommand?.opts) {\n const linkCmd = chosen.linkCommand as any;\n commandOptions = linkCmd.opts();\n const args = linkCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n (commandOptions as any).packageArgument = firstTruthyArg === 'status' ? 'status' : firstTruthyArg;\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n (commandOptions as any).packageArgument = stdinInput;\n }\n } else if (commandName === 'unlink' && chosen?.unlinkCommand?.opts) {\n const unlinkCmd = chosen.unlinkCommand as any;\n commandOptions = unlinkCmd.opts();\n const args = unlinkCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n (commandOptions as any).packageArgument = firstTruthyArg === 'status' ? 'status' : firstTruthyArg;\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n (commandOptions as any).packageArgument = stdinInput;\n }\n } else if (commandName === 'audio-review' && chosen?.audioReviewCommand?.opts) {\n const audioReviewCmd = chosen.audioReviewCommand;\n commandOptions = audioReviewCmd.opts();\n } else if (commandName === 'review' && chosen?.reviewCommand?.opts) {\n const reviewCmd = chosen.reviewCommand as any;\n commandOptions = reviewCmd.opts();\n const args = reviewCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.note = firstTruthyArg;\n }\n }\n // Final fallback: use locally constructed review command's args\n if (!commandOptions.note) {\n const localArgs = (reviewCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n commandOptions.note = firstLocalArg;\n }\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.note = stdinInput;\n }\n } else if (commandName === 'review' && (chosen as any)?.review?.opts) {\n const reviewCmd = (chosen as any).review as any;\n commandOptions = reviewCmd.opts();\n const args = reviewCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.note = firstTruthyArg;\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.note = stdinInput;\n }\n } else if (commandName === 'clean' && chosen?.cleanCommand?.opts) {\n const cleanCmd = chosen.cleanCommand;\n commandOptions = cleanCmd.opts();\n } else if (commandName === 'development' && chosen?.developmentCommand?.opts) {\n const developmentCmd = chosen.developmentCommand;\n commandOptions = developmentCmd.opts();\n } else if (commandName === 'versions' && chosen?.versionsCommand?.opts) {\n const versionsCmd = chosen.versionsCommand as any;\n commandOptions = versionsCmd.opts();\n const args = versionsCmd.args;\n if (args && args.length > 0 && args[0]) {\n commandOptions.subcommand = args[0];\n }\n } else if (commandName === 'select-audio' && chosen?.selectAudioCommand?.opts) {\n const selectAudioCmd = chosen.selectAudioCommand;\n commandOptions = selectAudioCmd.opts();\n } else {\n // Final fallback\n commandOptions = program.opts<Partial<Input>>();\n }\n }\n\n // Include command name in CLI args for merging\n const finalCliArgs = { ...cliArgs, ...commandOptions } as any;\n // Final safety fallback for positional arguments when STDIN is null and mocks provide args on constructed commands\n if (commandName === 'commit' && !finalCliArgs.direction) {\n const localArgs = (commitCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n finalCliArgs.direction = firstLocalArg;\n }\n }\n }\n if (commandName === 'review' && !finalCliArgs.note) {\n const localArgs = (reviewCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n finalCliArgs.note = firstLocalArg;\n }\n }\n }\n const commandConfig = { commandName };\n return [finalCliArgs, commandConfig];\n}\n\nexport async function validateAndProcessSecureOptions(): Promise<SecureConfig> {\n // For check-config and init-config commands, we don't want to throw an error for missing API key\n const isCheckConfig = process.argv.includes('--check-config');\n const isInitConfig = process.argv.includes('--init-config');\n\n if (!process.env.OPENAI_API_KEY && !isCheckConfig && !isInitConfig) {\n throw new Error('OpenAI API key is required. Please set the OPENAI_API_KEY environment variable.');\n }\n\n // Prefer CLI key if provided, otherwise use env var (might be undefined for check-config/init-config)\n const openaiApiKey = process.env.OPENAI_API_KEY;\n\n const secureConfig: SecureConfig = {\n openaiApiKey: openaiApiKey,\n };\n\n return secureConfig;\n}\n\n// Renamed validation function to reflect its broader role\nexport async function validateAndProcessOptions(options: Partial<Config>): Promise<Config> {\n\n const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);\n const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n // Skip config directory validation since Cardigantime handles hierarchical lookup\n\n // Ensure all required fields are present and have correct types after merging\n const finalConfig: Config = {\n dryRun: options.dryRun ?? KODRDRIV_DEFAULTS.dryRun,\n verbose: options.verbose ?? KODRDRIV_DEFAULTS.verbose,\n debug: options.debug ?? KODRDRIV_DEFAULTS.debug,\n overrides: options.overrides ?? KODRDRIV_DEFAULTS.overrides,\n model: options.model ?? KODRDRIV_DEFAULTS.model,\n openaiReasoning: options.openaiReasoning ?? KODRDRIV_DEFAULTS.openaiReasoning,\n openaiMaxOutputTokens: options.openaiMaxOutputTokens ?? KODRDRIV_DEFAULTS.openaiMaxOutputTokens,\n contextDirectories: contextDirectories,\n configDirectory: configDir,\n outputDirectory: options.outputDirectory ?? KODRDRIV_DEFAULTS.outputDirectory,\n preferencesDirectory: options.preferencesDirectory ?? KODRDRIV_DEFAULTS.preferencesDirectory,\n // Cardigantime-specific properties (from fileValues or defaults)\n discoveredConfigDirs: (options as any).discoveredConfigDirs ?? [],\n resolvedConfigDirs: (options as any).resolvedConfigDirs ?? [],\n // Command-specific options - ensure all defaults are present even for partial configs\n commit: {\n ...KODRDRIV_DEFAULTS.commit,\n ...Object.fromEntries(Object.entries(options.commit || {}).filter(([_, v]) => v !== undefined && v !== null)),\n },\n audioCommit: {\n ...KODRDRIV_DEFAULTS.audioCommit,\n ...Object.fromEntries(Object.entries(options.audioCommit || {}).filter(([_, v]) => v !== undefined)),\n },\n release: {\n ...KODRDRIV_DEFAULTS.release,\n ...Object.fromEntries(Object.entries(options.release || {}).filter(([_, v]) => v !== undefined)),\n },\n audioReview: {\n ...KODRDRIV_DEFAULTS.audioReview,\n ...Object.fromEntries(Object.entries(options.audioReview || {}).filter(([_, v]) => v !== undefined)),\n },\n review: {\n ...KODRDRIV_DEFAULTS.review,\n ...Object.fromEntries(Object.entries(options.review || {}).filter(([_, v]) => v !== undefined)),\n },\n publish: {\n ...KODRDRIV_DEFAULTS.publish,\n ...Object.fromEntries(Object.entries(options.publish || {}).filter(([_, v]) => v !== undefined)),\n },\n link: {\n ...KODRDRIV_DEFAULTS.link,\n ...Object.fromEntries(Object.entries(options.link || {}).filter(([_, v]) => v !== undefined)),\n },\n unlink: {\n ...KODRDRIV_DEFAULTS.unlink,\n ...Object.fromEntries(Object.entries(options.unlink || {}).filter(([_, v]) => v !== undefined)),\n },\n tree: {\n ...KODRDRIV_DEFAULTS.tree,\n ...Object.fromEntries(Object.entries(options.tree || {}).filter(([_, v]) => v !== undefined)),\n },\n development: {\n ...KODRDRIV_DEFAULTS.development,\n ...Object.fromEntries(Object.entries(options.development || {}).filter(([_, v]) => v !== undefined)),\n },\n versions: {\n ...KODRDRIV_DEFAULTS.versions,\n ...Object.fromEntries(Object.entries(options.versions || {}).filter(([_, v]) => v !== undefined)),\n },\n excludedPatterns: options.excludedPatterns ?? KODRDRIV_DEFAULTS.excludedPatterns,\n };\n\n // Final validation against the MainConfig shape (optional, cardigantime might handle it)\n // You could potentially use ConfigShape.parse(finalConfig) here if needed\n\n return finalConfig;\n}\n\n// Export for testing\nexport function validateCommand(commandName: string): string {\n if (!ALLOWED_COMMANDS.includes(commandName)) {\n throw new Error(`Invalid command: ${commandName}, allowed commands: ${ALLOWED_COMMANDS.join(', ')}`);\n }\n return commandName;\n}\n\nexport async function validateConfigDir(configDir: string): Promise<string> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Make sure the config directory is absolute\n const absoluteConfigDir = path.isAbsolute(configDir) ?\n configDir :\n path.resolve(process.cwd(), configDir);\n\n try {\n // Check if the path exists\n if (!(await storage.exists(absoluteConfigDir))) {\n // Directory doesn't exist, warn and fall back to defaults\n logger.warn(`Config directory does not exist: ${absoluteConfigDir}. Using default configuration.`);\n return absoluteConfigDir; // Return the path anyway, app will use defaults\n }\n\n // Path exists, check if it's a directory\n if (!(await storage.isDirectory(absoluteConfigDir))) {\n throw new Error(`Config directory is not a directory: ${absoluteConfigDir}`);\n }\n\n // Check if it's writable\n if (!(await storage.isDirectoryWritable(absoluteConfigDir))) {\n throw new Error(`Config directory is not writable: ${absoluteConfigDir}`);\n }\n } catch (error: any) {\n logger.error(`Failed to validate config directory: ${absoluteConfigDir}`, error);\n throw new Error(`Failed to validate config directory: ${absoluteConfigDir}: ${error.message}`);\n }\n\n return absoluteConfigDir;\n}\n\n// Export for testing\nexport async function validateContextDirectories(contextDirectories: string[]): Promise<string[]> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Filter out directories that don't exist\n const validDirectories = [];\n\n for (const dir of contextDirectories) {\n try {\n if (await storage.isDirectoryReadable(dir)) {\n validDirectories.push(dir);\n } else {\n logger.warn(`Directory not readable: ${dir}`);\n }\n } catch (error: any) {\n logger.warn(`Error validating directory ${dir}: ${error.message}`);\n }\n }\n\n return validDirectories;\n}\n\n\n\n"],"names":["z","object","dryRun","boolean","optional","verbose","debug","overrides","checkConfig","initConfig","model","string","openaiReasoning","enum","openaiMaxOutputTokens","number","contextDirectories","array","configDir","outputDir","preferencesDir","cached","add","sendit","interactive","amend","from","to","targetVersion","excludedPatterns","excludedPaths","exclude","context","note","direction","messageLimit","skipFileCheck","maxDiffBytes","mergeMethod","syncTarget","scopeRoots","workspaceFile","cleanNodeModules","startFrom","stopAt","script","cmd","publish","parallel","continue","includeCommitHistory","includeRecentDiffs","editorTimeout","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","file","directory","directories","externals","keepTemp","noMilestones","subcommand","transformCliArgs","finalCliArgs","commandName","transformedCliArgs","undefined","outputDirectory","preferencesDirectory","configDirectory","push","commit","audioCommit","release","development","linkPackageArgument","packageArgument","link","safeJsonParse","error","Error","unlinkPackageArgument","unlink","audioReview","review","builtInCommand","tree","versions","configure","cardigantime","config","logger","getLogger","program","Command","name","PROGRAM_NAME","summary","description","version","VERSION","process","argv","includes","parse","cliArgs","opts","validateAndProcessOptions","secureConfig","validateAndProcessSecureOptions","commandConfig","KODRDRIV_DEFAULTS","absoluteConfigDir","path","isAbsolute","resolve","cwd","generateConfig","getCliConfig","silly","JSON","stringify","fileValues","read","mergedLink","mergedCommit","mergedRelease","mergedPublish","mergedAudioCommit","mergedAudioReview","mergedReview","mergedTree","partialConfig","join","length","Object","keys","commands","addSharedOptions","command","option","parseInt","commitCommand","argument","configureHelp","formatHelp","helper","nameAndVersion","commandUsage","commandDescription","commitOptions","behavioralOptions","globalOptions","formatOptionsSection","title","options","maxWidth","Math","max","map","flag","desc","padEnd","audioCommitCommand","releaseCommand","publishCommand","treeCommand","linkCommand","unlinkCommand","audioReviewCommand","reviewCommand","argumentsSection","reviewOptions","gitContextOptions","cleanCommand","developmentCommand","versionsCommand","selectAudioCommand","DEFAULT_COMMAND","commandOptions","args","validateCommand","ALLOWED_COMMANDS","chosen","commitCmd","Array","isArray","firstTruthyArg","find","arg","localArgs","firstLocalArg","stdinInput","readStdin","audioCommitCmd","releaseCmd","publishCmd","treeCmd","secondTruthyArg","slice","trim","split","stdinLines","linkCmd","unlinkCmd","audioReviewCmd","reviewCmd","cleanCmd","developmentCmd","versionsCmd","selectAudioCmd","isCheckConfig","isInitConfig","env","OPENAI_API_KEY","openaiApiKey","validateContextDirectories","finalConfig","discoveredConfigDirs","resolvedConfigDirs","fromEntries","entries","filter","_","v","storage","Storage","log","info","validDirectories","dir","isDirectoryReadable","warn","message"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"arguments.js","sources":["../src/arguments.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { ALLOWED_COMMANDS, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION } from \"./constants\";\nimport { getLogger } from \"./logging\";\nconst logger = getLogger();\nimport { CommandConfig, Config, SecureConfig } from './types'; // Import the Config type from main.ts\nimport * as Storage from \"./util/storage\";\nimport { safeJsonParse } from './util/validation';\nimport { readStdin } from \"./util/stdin\";\n\nexport const InputSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n checkConfig: z.boolean().optional(),\n initConfig: z.boolean().optional(),\n model: z.string().optional(),\n openaiReasoning: z.enum(['low', 'medium', 'high']).optional(),\n openaiMaxOutputTokens: z.number().optional(),\n contextDirectories: z.array(z.string()).optional(),\n configDir: z.string().optional(),\n outputDir: z.string().optional(),\n preferencesDir: z.string().optional(),\n cached: z.boolean().optional(),\n add: z.boolean().optional(),\n sendit: z.boolean().optional(),\n interactive: z.boolean().optional(),\n amend: z.boolean().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n targetVersion: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n excludedPaths: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(), // Alias for excludedPatterns\n context: z.string().optional(),\n note: z.string().optional(), // For review command positional argument/STDIN\n direction: z.string().optional(),\n messageLimit: z.number().optional(),\n skipFileCheck: z.boolean().optional(),\n maxDiffBytes: z.number().optional(),\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n syncTarget: z.boolean().optional(),\n scopeRoots: z.string().optional(),\n workspaceFile: z.string().optional(),\n cleanNodeModules: z.boolean().optional(),\n\n startFrom: z.string().optional(),\n stopAt: z.string().optional(),\n script: z.string().optional(),\n cmd: z.string().optional(),\n publish: z.boolean().optional(),\n parallel: z.boolean().optional(),\n continue: z.boolean().optional(),\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n editorTimeout: z.number().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 file: z.string().optional(), // Audio file path for audio-commit and audio-review\n directory: z.string().optional(), // Add directory option at top level (for audio commands)\n directories: z.array(z.string()).optional(), // Add directories option at top level (for tree commands)\n externals: z.array(z.string()).optional(), // External packages to include/exclude\n keepTemp: z.boolean().optional(), // Keep temporary recording files\n noMilestones: z.boolean().optional(), // Disable GitHub milestone integration\n subcommand: z.string().optional(), // Subcommand for versions command\n});\n\nexport type Input = z.infer<typeof InputSchema>;\n\n// Function to transform flat CLI args into nested Config structure\nexport const transformCliArgs = (finalCliArgs: Input, commandName?: string): Partial<Config> => {\n const transformedCliArgs: Partial<Config> = {};\n\n // Root-level properties\n if (finalCliArgs.dryRun !== undefined) transformedCliArgs.dryRun = finalCliArgs.dryRun;\n if (finalCliArgs.verbose !== undefined) transformedCliArgs.verbose = finalCliArgs.verbose;\n if (finalCliArgs.debug !== undefined) transformedCliArgs.debug = finalCliArgs.debug;\n if (finalCliArgs.model !== undefined) transformedCliArgs.model = finalCliArgs.model;\n if (finalCliArgs.outputDir !== undefined) transformedCliArgs.outputDirectory = finalCliArgs.outputDir;\n if (finalCliArgs.preferencesDir !== undefined) transformedCliArgs.preferencesDirectory = finalCliArgs.preferencesDir;\n if (finalCliArgs.configDir !== undefined) transformedCliArgs.configDirectory = finalCliArgs.configDir;\n if (finalCliArgs.overrides !== undefined) transformedCliArgs.overrides = finalCliArgs.overrides;\n if (finalCliArgs.contextDirectories !== undefined) transformedCliArgs.contextDirectories = finalCliArgs.contextDirectories;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n\n // Nested mappings for 'commit' options\n if (finalCliArgs.add !== undefined || finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.skipFileCheck !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.messageLimit !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined || finalCliArgs.amend !== undefined || finalCliArgs.context !== undefined || finalCliArgs.direction !== undefined || (commandName === 'commit' && finalCliArgs.interactive !== undefined) || (finalCliArgs as any).push !== undefined) {\n transformedCliArgs.commit = {};\n if (finalCliArgs.add !== undefined) transformedCliArgs.commit.add = finalCliArgs.add;\n if (finalCliArgs.cached !== undefined) transformedCliArgs.commit.cached = finalCliArgs.cached;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.commit.sendit = finalCliArgs.sendit;\n if (finalCliArgs.skipFileCheck !== undefined) transformedCliArgs.commit.skipFileCheck = finalCliArgs.skipFileCheck;\n if (finalCliArgs.maxDiffBytes !== undefined) transformedCliArgs.commit.maxDiffBytes = finalCliArgs.maxDiffBytes;\n if (finalCliArgs.messageLimit !== undefined) transformedCliArgs.commit.messageLimit = finalCliArgs.messageLimit;\n if (finalCliArgs.amend !== undefined) transformedCliArgs.commit.amend = finalCliArgs.amend;\n if ((finalCliArgs as any).push !== undefined) (transformedCliArgs.commit as any).push = (finalCliArgs as any).push;\n if (finalCliArgs.context !== undefined) transformedCliArgs.commit.context = finalCliArgs.context;\n if (finalCliArgs.direction !== undefined) transformedCliArgs.commit.direction = finalCliArgs.direction;\n if (commandName === 'commit' && finalCliArgs.interactive !== undefined) transformedCliArgs.commit.interactive = finalCliArgs.interactive;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.commit.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.commit.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'audioCommit' options\n if (finalCliArgs.file !== undefined || finalCliArgs.keepTemp !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined) {\n transformedCliArgs.audioCommit = {};\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioCommit.file = finalCliArgs.file;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioCommit.keepTemp = finalCliArgs.keepTemp;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.audioCommit.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.audioCommit.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'release' options (only when it's NOT a publish command)\n if (commandName !== 'publish') {\n if (finalCliArgs.from !== undefined || finalCliArgs.to !== undefined || finalCliArgs.maxDiffBytes !== undefined || finalCliArgs.interactive !== undefined || finalCliArgs.noMilestones !== undefined || finalCliArgs.openaiReasoning !== undefined || finalCliArgs.openaiMaxOutputTokens !== undefined) {\n transformedCliArgs.release = {};\n if (finalCliArgs.from !== undefined) transformedCliArgs.release.from = finalCliArgs.from;\n if (finalCliArgs.to !== undefined) transformedCliArgs.release.to = finalCliArgs.to;\n if ((commandName === 'release' || finalCliArgs.from !== undefined || finalCliArgs.to !== undefined) && finalCliArgs.context !== undefined) transformedCliArgs.release.context = finalCliArgs.context;\n if (finalCliArgs.interactive !== undefined) transformedCliArgs.release.interactive = finalCliArgs.interactive;\n if ((commandName === 'release' || finalCliArgs.from !== undefined || finalCliArgs.to !== undefined) && finalCliArgs.messageLimit !== undefined) transformedCliArgs.release.messageLimit = finalCliArgs.messageLimit;\n if (finalCliArgs.maxDiffBytes !== undefined) transformedCliArgs.release.maxDiffBytes = finalCliArgs.maxDiffBytes;\n if (finalCliArgs.noMilestones !== undefined) transformedCliArgs.release.noMilestones = finalCliArgs.noMilestones;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.release.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.release.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n }\n\n // Nested mappings for 'publish' options – map whenever publish-specific options are provided\n if (\n finalCliArgs.mergeMethod !== undefined ||\n finalCliArgs.targetVersion !== undefined ||\n finalCliArgs.interactive !== undefined ||\n finalCliArgs.syncTarget !== undefined ||\n (commandName === 'publish' && (finalCliArgs.from !== undefined || finalCliArgs.noMilestones !== undefined))\n ) {\n transformedCliArgs.publish = {};\n if (finalCliArgs.mergeMethod !== undefined) transformedCliArgs.publish.mergeMethod = finalCliArgs.mergeMethod;\n if ((commandName === 'publish' || finalCliArgs.mergeMethod !== undefined || finalCliArgs.targetVersion !== undefined || finalCliArgs.syncTarget !== undefined || finalCliArgs.interactive !== undefined) && finalCliArgs.from !== undefined) transformedCliArgs.publish.from = finalCliArgs.from;\n if (finalCliArgs.targetVersion !== undefined) transformedCliArgs.publish.targetVersion = finalCliArgs.targetVersion;\n if (finalCliArgs.interactive !== undefined) transformedCliArgs.publish.interactive = finalCliArgs.interactive;\n if (finalCliArgs.syncTarget !== undefined) transformedCliArgs.publish.syncTarget = finalCliArgs.syncTarget;\n if ((commandName === 'publish' || finalCliArgs.mergeMethod !== undefined || finalCliArgs.targetVersion !== undefined || finalCliArgs.syncTarget !== undefined || finalCliArgs.interactive !== undefined) && finalCliArgs.noMilestones !== undefined) transformedCliArgs.publish.noMilestones = finalCliArgs.noMilestones;\n }\n\n // Nested mappings for 'development' options\n if (commandName === 'development' && (finalCliArgs.targetVersion !== undefined || finalCliArgs.noMilestones !== undefined)) {\n transformedCliArgs.development = {};\n if (finalCliArgs.targetVersion !== undefined) transformedCliArgs.development.targetVersion = finalCliArgs.targetVersion;\n if (finalCliArgs.noMilestones !== undefined) transformedCliArgs.development.noMilestones = finalCliArgs.noMilestones;\n // Mirror targetVersion into publish; mirror noMilestones into publish and release to match test expectations\n transformedCliArgs.publish = {\n ...(transformedCliArgs.publish || {}),\n ...(finalCliArgs.targetVersion !== undefined ? { targetVersion: finalCliArgs.targetVersion } : {}),\n ...(finalCliArgs.noMilestones !== undefined ? { noMilestones: finalCliArgs.noMilestones } : {}),\n };\n transformedCliArgs.release = {\n ...(transformedCliArgs.release || {}),\n ...(finalCliArgs.noMilestones !== undefined ? { noMilestones: finalCliArgs.noMilestones } : {}),\n };\n }\n\n // Nested mappings for 'link' and 'unlink' options\n const linkPackageArgument = (finalCliArgs as any).packageArgument;\n if ((commandName === 'link' || commandName === undefined) && (finalCliArgs.scopeRoots !== undefined || linkPackageArgument !== undefined)) {\n transformedCliArgs.link = {};\n if (finalCliArgs.scopeRoots !== undefined) {\n try {\n transformedCliArgs.link.scopeRoots = safeJsonParse(finalCliArgs.scopeRoots, 'scopeRoots CLI argument');\n\n } catch (error) {\n throw new Error(`Invalid JSON for scope-roots: ${finalCliArgs.scopeRoots}`);\n }\n }\n if (linkPackageArgument !== undefined) {\n transformedCliArgs.link.packageArgument = linkPackageArgument;\n }\n }\n\n // Nested mappings for 'unlink' options\n const unlinkPackageArgument = (finalCliArgs as any).packageArgument;\n\n if (commandName === 'unlink' && (finalCliArgs.scopeRoots !== undefined || unlinkPackageArgument !== undefined || finalCliArgs.workspaceFile !== undefined || finalCliArgs.cleanNodeModules !== undefined)) {\n transformedCliArgs.unlink = {};\n if (finalCliArgs.scopeRoots !== undefined) {\n try {\n transformedCliArgs.unlink.scopeRoots = safeJsonParse(finalCliArgs.scopeRoots, 'scopeRoots CLI argument');\n } catch (error) {\n throw new Error(`Invalid JSON for scope-roots: ${finalCliArgs.scopeRoots}`);\n }\n }\n if (finalCliArgs.workspaceFile !== undefined) transformedCliArgs.unlink.workspaceFile = finalCliArgs.workspaceFile;\n if (finalCliArgs.cleanNodeModules !== undefined) transformedCliArgs.unlink.cleanNodeModules = finalCliArgs.cleanNodeModules;\n if (unlinkPackageArgument !== undefined) {\n transformedCliArgs.unlink.packageArgument = unlinkPackageArgument;\n }\n }\n\n // Nested mappings for 'audio-review' options (only when it's not a tree command)\n if (commandName !== 'tree' && (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.file !== undefined ||\n finalCliArgs.directories !== undefined ||\n finalCliArgs.keepTemp !== undefined ||\n finalCliArgs.openaiReasoning !== undefined ||\n finalCliArgs.openaiMaxOutputTokens !== undefined)) {\n transformedCliArgs.audioReview = {};\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.audioReview.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.audioReview.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.audioReview.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.audioReview.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.audioReview.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.audioReview.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.audioReview.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.audioReview.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.audioReview.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.audioReview.sendit = finalCliArgs.sendit;\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioReview.file = finalCliArgs.file;\n if (finalCliArgs.directory !== undefined) transformedCliArgs.audioReview.directory = finalCliArgs.directory;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioReview.keepTemp = finalCliArgs.keepTemp;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.audioReview.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.audioReview.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'review' options\n if (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.context !== undefined ||\n finalCliArgs.sendit !== undefined ||\n finalCliArgs.note !== undefined ||\n finalCliArgs.openaiReasoning !== undefined ||\n finalCliArgs.openaiMaxOutputTokens !== undefined ||\n (commandName === 'review' && (finalCliArgs.file !== undefined || finalCliArgs.directory !== undefined))) {\n transformedCliArgs.review = {};\n if (finalCliArgs.note !== undefined) transformedCliArgs.review.note = finalCliArgs.note;\n if (commandName === 'review' && finalCliArgs.file !== undefined) transformedCliArgs.review.file = finalCliArgs.file;\n if (commandName === 'review' && finalCliArgs.directory !== undefined) transformedCliArgs.review.directory = finalCliArgs.directory;\n // Include optional review configuration options if specified\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.review.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.review.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.review.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.review.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.review.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.review.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.review.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.review.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.review.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.review.sendit = finalCliArgs.sendit;\n if (finalCliArgs.editorTimeout !== undefined) transformedCliArgs.review.editorTimeout = finalCliArgs.editorTimeout;\n if (finalCliArgs.openaiReasoning !== undefined) transformedCliArgs.review.openaiReasoning = finalCliArgs.openaiReasoning;\n if (finalCliArgs.openaiMaxOutputTokens !== undefined) transformedCliArgs.review.openaiMaxOutputTokens = finalCliArgs.openaiMaxOutputTokens;\n }\n\n // Nested mappings for 'tree' options (add when relevant args present)\n if (commandName === 'tree') {\n const builtInCommand = (finalCliArgs as any).builtInCommand;\n const packageArgument = (finalCliArgs as any).packageArgument;\n\n // Only create tree object if there are actual tree-specific options\n if (finalCliArgs.directories !== undefined || finalCliArgs.directory !== undefined ||\n finalCliArgs.startFrom !== undefined ||\n finalCliArgs.stopAt !== undefined || finalCliArgs.cmd !== undefined ||\n builtInCommand !== undefined || finalCliArgs.continue !== undefined ||\n packageArgument !== undefined || finalCliArgs.cleanNodeModules !== undefined ||\n finalCliArgs.externals !== undefined) {\n\n transformedCliArgs.tree = {};\n if (finalCliArgs.directories !== undefined) transformedCliArgs.tree.directories = finalCliArgs.directories;\n else if (finalCliArgs.directory !== undefined) transformedCliArgs.tree.directories = [finalCliArgs.directory];\n if (finalCliArgs.startFrom !== undefined) transformedCliArgs.tree.startFrom = finalCliArgs.startFrom;\n if (finalCliArgs.stopAt !== undefined) transformedCliArgs.tree.stopAt = finalCliArgs.stopAt;\n if (finalCliArgs.cmd !== undefined) transformedCliArgs.tree.cmd = finalCliArgs.cmd;\n // Note: parallel property is not part of the tree config type\n if (builtInCommand !== undefined) transformedCliArgs.tree.builtInCommand = builtInCommand;\n if (finalCliArgs.continue !== undefined) transformedCliArgs.tree.continue = finalCliArgs.continue;\n if (packageArgument !== undefined) transformedCliArgs.tree.packageArgument = packageArgument;\n if (finalCliArgs.cleanNodeModules !== undefined) transformedCliArgs.tree.cleanNodeModules = finalCliArgs.cleanNodeModules;\n if (finalCliArgs.externals !== undefined) transformedCliArgs.tree.externals = finalCliArgs.externals;\n }\n }\n\n // Nested mappings for 'development' options\n if (commandName === 'development' && (finalCliArgs.targetVersion !== undefined || finalCliArgs.noMilestones !== undefined)) {\n transformedCliArgs.development = {};\n if (finalCliArgs.targetVersion !== undefined) transformedCliArgs.development.targetVersion = finalCliArgs.targetVersion;\n if (finalCliArgs.noMilestones !== undefined) transformedCliArgs.development.noMilestones = finalCliArgs.noMilestones;\n }\n\n // Nested mappings for 'versions' options\n if (commandName === 'versions' && (finalCliArgs.subcommand !== undefined || finalCliArgs.directories !== undefined)) {\n transformedCliArgs.versions = {};\n if (finalCliArgs.subcommand !== undefined) transformedCliArgs.versions.subcommand = finalCliArgs.subcommand;\n if (finalCliArgs.directories !== undefined) transformedCliArgs.versions.directories = finalCliArgs.directories;\n }\n\n // Handle excluded patterns (Commander.js converts --excluded-paths to excludedPaths)\n // Also handle exclude as alias for excludedPatterns\n const excludedPatterns = finalCliArgs.excludedPatterns || finalCliArgs.exclude || finalCliArgs.excludedPaths;\n if (excludedPatterns !== undefined) {\n if (commandName === 'tree') {\n // For tree command, map to both root level excludedPatterns AND tree.exclude\n transformedCliArgs.excludedPatterns = excludedPatterns;\n if (!transformedCliArgs.tree) {\n transformedCliArgs.tree = {};\n }\n transformedCliArgs.tree.exclude = excludedPatterns;\n } else {\n // For non-tree commands, map to root level excludedPatterns\n transformedCliArgs.excludedPatterns = excludedPatterns;\n }\n }\n\n // Handle externals - map to appropriate command objects based on command type\n if (finalCliArgs.externals !== undefined) {\n if (commandName === 'link') {\n if (!transformedCliArgs.link) {\n transformedCliArgs.link = {};\n }\n transformedCliArgs.link.externals = finalCliArgs.externals;\n } else if (commandName === 'unlink') {\n if (!transformedCliArgs.unlink) {\n transformedCliArgs.unlink = {};\n }\n transformedCliArgs.unlink.externals = finalCliArgs.externals;\n } else if (commandName === 'tree') {\n if (!transformedCliArgs.tree) {\n transformedCliArgs.tree = {};\n }\n transformedCliArgs.tree.externals = finalCliArgs.externals;\n }\n }\n\n // Note: openaiApiKey is handled separately via environment variable only\n\n return transformedCliArgs;\n}\n\n\n\n// Update configure signature to accept cardigantime\nexport const configure = async (cardigantime: any): Promise<[Config, SecureConfig, CommandConfig]> => {\n const logger = getLogger();\n let program = new Command();\n\n // Configure program basics\n program\n .name(PROGRAM_NAME)\n .summary('Create Intelligent Release Notes or Change Logs from Git')\n .description('Create Intelligent Release Notes or Change Logs from Git')\n .version(VERSION);\n\n // Let cardigantime add its arguments first\n program = await cardigantime.configure(program);\n\n // Check if --check-config is in process.argv early\n if (process.argv.includes('--check-config')) {\n // For check-config, use CardiganTime's built-in checkConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n // Use CardiganTime's built-in checkConfig method which displays\n // hierarchical configuration information in a well-formatted way\n await cardigantime.checkConfig(transformedCliArgs);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'check-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Check if --init-config is in process.argv early\n if (process.argv.includes('--init-config')) {\n // For init-config, use CardiganTime's built-in generateConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n\n // Use CardiganTime's built-in generateConfig method\n const configDir = transformedCliArgs.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n const absoluteConfigDir = path.isAbsolute(configDir) ? configDir : path.resolve(process.cwd(), configDir);\n await cardigantime.generateConfig(absoluteConfigDir);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'init-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Get CLI arguments using the new function\n const [finalCliArgs, commandConfig]: [Input, CommandConfig] = await getCliConfig(program);\n logger.silly('Loaded Command Line Options: %s', JSON.stringify(finalCliArgs, null, 2));\n\n // Transform the flat CLI args using the new function\n const transformedCliArgs: Partial<Config> = transformCliArgs(finalCliArgs, commandConfig.commandName);\n logger.silly('Transformed CLI Args for merging: %s', JSON.stringify(transformedCliArgs, null, 2));\n\n // Get values from config file using Cardigantime's hierarchical configuration\n const fileValues: Partial<Config> = await cardigantime.read(transformedCliArgs) as Partial<Config>;\n\n // Merge configurations: Defaults -> File -> CLI\n // Properly merge nested sections to preserve config file values when CLI args are partial\n const mergedLink = {\n ...KODRDRIV_DEFAULTS.link,\n ...fileValues.link,\n ...transformedCliArgs.link,\n };\n\n const mergedCommit = {\n ...KODRDRIV_DEFAULTS.commit,\n ...fileValues.commit,\n ...transformedCliArgs.commit,\n };\n\n const mergedRelease = {\n ...KODRDRIV_DEFAULTS.release,\n ...fileValues.release,\n ...transformedCliArgs.release,\n };\n\n const mergedPublish = {\n ...KODRDRIV_DEFAULTS.publish,\n ...fileValues.publish,\n ...transformedCliArgs.publish,\n };\n\n const mergedAudioCommit = {\n ...KODRDRIV_DEFAULTS.audioCommit,\n ...fileValues.audioCommit,\n ...transformedCliArgs.audioCommit,\n };\n\n const mergedAudioReview = {\n ...KODRDRIV_DEFAULTS.audioReview,\n ...fileValues.audioReview,\n ...transformedCliArgs.audioReview,\n };\n\n const mergedReview = {\n ...KODRDRIV_DEFAULTS.review,\n ...fileValues.review,\n ...transformedCliArgs.review,\n };\n\n const mergedTree = {\n ...KODRDRIV_DEFAULTS.tree,\n ...fileValues.tree,\n ...transformedCliArgs.tree,\n };\n\n const partialConfig: Partial<Config> = {\n ...KODRDRIV_DEFAULTS, // Start with Kodrdriv defaults\n ...fileValues, // Apply file values (overwrites defaults)\n ...transformedCliArgs, // Apply CLI args last (highest precedence)\n // Override with properly merged nested sections\n link: mergedLink,\n commit: mergedCommit,\n release: mergedRelease,\n publish: mergedPublish,\n audioCommit: mergedAudioCommit,\n audioReview: mergedAudioReview,\n review: mergedReview,\n tree: mergedTree,\n } as Partial<Config>; // Cast to Partial<Config> initially\n\n // Specific validation and processing after merge\n const config: Config = await validateAndProcessOptions(partialConfig);\n\n // Log effective configuration summary at verbose level\n logger.verbose('Configuration complete. Effective settings:');\n logger.verbose(` Command: ${commandConfig.commandName}`);\n logger.verbose(` Model: ${config.model}`);\n logger.verbose(` Dry run: ${config.dryRun}`);\n logger.verbose(` Debug: ${config.debug}`);\n logger.verbose(` Verbose: ${config.verbose}`);\n logger.verbose(` Config directory: ${config.configDirectory}`);\n logger.verbose(` Output directory: ${config.outputDirectory}`);\n logger.verbose(` Context directories: ${config.contextDirectories?.join(', ') || 'none'}`);\n if (config.excludedPatterns && config.excludedPatterns.length > 0) {\n logger.verbose(` Excluded patterns: ${config.excludedPatterns.join(', ')}`);\n }\n if (Object.keys(config.link?.scopeRoots || {}).length > 0) {\n logger.verbose(` Link scope roots: ${Object.keys(config.link!.scopeRoots!).join(', ')}`);\n }\n\n logger.silly('Final configuration: %s', JSON.stringify(config, null, 2));\n\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n\n return [config, secureConfig, commandConfig];\n}\n\n// Function to handle CLI argument parsing and processing\nexport async function getCliConfig(\n program: Command,\n commands?: {\n commitCommand?: Command;\n audioCommitCommand?: Command;\n releaseCommand?: Command;\n publishCommand?: Command;\n treeCommand?: Command;\n linkCommand?: Command;\n unlinkCommand?: Command;\n audioReviewCommand?: Command;\n reviewCommand?: Command;\n cleanCommand?: Command;\n developmentCommand?: Command;\n versionsCommand?: Command;\n selectAudioCommand?: Command;\n }\n): Promise<[Input, CommandConfig]> {\n\n const addSharedOptions = (command: Command) => {\n command\n .option('--dry-run', 'perform a dry run without saving files') // Removed default, will be handled by merging\n .option('--verbose', 'enable verbose logging')\n .option('--debug', 'enable debug logging')\n .option('--overrides', 'enable overrides')\n .option('--model <model>', 'OpenAI model to use')\n .option('--openai-reasoning <level>', 'OpenAI reasoning level (low, medium, high)')\n .option('--openai-max-output-tokens <tokens>', 'OpenAI maximum output tokens', parseInt)\n .option('-d, --context-directories [contextDirectories...]', 'directories to scan for context')\n .option('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location\n .option('--output-dir <outputDir>', 'output directory for generated files')\n .option('--preferences-dir <preferencesDir>', 'preferences directory for personal settings')\n .option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff')\n .option('--keep-temp', 'keep temporary recording files');\n }\n\n // Add global options to the main program\n // (cardigantime already adds most global options like --verbose, --debug, --config-dir)\n\n // Add subcommands\n const commitCommand = program\n .command('commit')\n .argument('[direction]', 'direction or guidance for the commit message')\n .description('Generate commit notes')\n .option('--context <context>', 'context for the commit message')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--interactive', 'Present commit message for interactive review and editing')\n .option('--amend', 'Amend the last commit with the generated message')\n .option('--push [remote]', 'push to remote after committing (default: origin)')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate')\n .option('--skip-file-check', 'skip check for file: dependencies before committing')\n .option('--max-diff-bytes <maxDiffBytes>', 'maximum bytes per file in diff (default: 2048)');\n\n // Add shared options to commit command\n addSharedOptions(commitCommand);\n\n // Customize help output for commit command\n commitCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `${helper.commandUsage(cmd)}\\n\\n${helper.commandDescription(cmd)}\\n`;\n\n const commitOptions = [\n ['--context <context>', 'context for the commit message']\n ];\n\n const behavioralOptions = [\n ['--cached', 'use cached diff'],\n ['--add', 'add all changes before committing'],\n ['--sendit', 'Commit with the message generated. No review.'],\n ['--interactive', 'Present commit message for interactive review and editing'],\n ['--amend', 'Amend the last commit with the generated message'],\n ['--push [remote]', 'push to remote after committing (default: origin)'],\n ['--message-limit <messageLimit>', 'limit the number of messages to generate']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['--openai-reasoning <level>', 'OpenAI reasoning level (low, medium, high)'],\n ['--openai-max-output-tokens <tokens>', 'OpenAI maximum output tokens'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Commit Message Options', commitOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const audioCommitCommand = program\n .command('audio-commit')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--direction <direction>', 'direction or guidance for the commit message')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate')\n .option('--file <file>', 'audio file path')\n .description('Record audio to provide context, then generate and optionally commit with AI-generated message');\n addSharedOptions(audioCommitCommand);\n\n const releaseCommand = program\n .command('release')\n .option('--from <from>', 'branch to generate release notes from')\n .option('--to <to>', 'branch to generate release notes to')\n .option('--context <context>', 'context for the commit message')\n .option('--interactive', 'Present release notes for interactive review and editing')\n .option('--max-diff-bytes <maxDiffBytes>', 'maximum bytes per file in diff (default: 2048)')\n .option('--no-milestones', 'disable GitHub milestone integration')\n .description('Generate release notes');\n addSharedOptions(releaseCommand);\n\n const publishCommand = program\n .command('publish')\n .option('--merge-method <method>', 'method to merge PR (merge, squash, rebase)', 'squash')\n .option('--from <from>', 'branch/tag to generate release notes from (default: main)')\n .option('--target-version <targetVersion>', 'target version for release (explicit version like \"4.30.0\" or semantic bump: \"patch\", \"minor\", \"major\")')\n .option('--interactive', 'present release notes for interactive review and editing')\n .option('--sendit', 'skip all confirmation prompts and proceed automatically')\n .option('--sync-target', 'attempt to automatically sync target branch with remote before publishing')\n .option('--no-milestones', 'disable GitHub milestone integration')\n .description('Publish a release');\n addSharedOptions(publishCommand);\n\n const treeCommand = program\n .command('tree [command] [packageArgument]')\n .option('--directory <directory>', 'target directory containing multiple packages (defaults to current directory)')\n .option('--directories [directories...]', 'target directories containing multiple packages (defaults to current directory)')\n .option('--start-from <startFrom>', 'resume execution from this package directory name (useful for restarting failed builds)')\n .option('--stop-at <stopAt>', 'stop execution at this package directory name (the specified package will not be executed)')\n .option('--cmd <cmd>', 'shell command to execute in each package directory (e.g., \"npm install\", \"git status\")')\n .option('--parallel', 'execute packages in parallel when dependencies allow (packages with no interdependencies run simultaneously)')\n .option('--excluded-patterns [excludedPatterns...]', 'patterns to exclude packages from processing (e.g., \"**/node_modules/**\", \"dist/*\")')\n .option('--continue', 'continue from previous tree publish execution')\n .option('--clean-node-modules', 'for unlink command: remove node_modules and package-lock.json, then reinstall dependencies')\n .description('Analyze package dependencies in workspace and execute commands in dependency order. Supports built-in commands: commit, publish, link, unlink, development, branches');\n addSharedOptions(treeCommand);\n\n const linkCommand = program\n .command('link [packageArgument]')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .description('Create npm file: dependencies for local development');\n addSharedOptions(linkCommand);\n\n const unlinkCommand = program\n .command('unlink [packageArgument]')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .option('--clean-node-modules', 'remove node_modules and package-lock.json, then reinstall dependencies')\n .description('Restore original dependencies and rebuild node_modules');\n addSharedOptions(unlinkCommand);\n\n const audioReviewCommand = program\n .command('audio-review')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the audio review')\n .option('--file <file>', 'audio file path')\n .option('--directory <directory>', 'directory containing audio files to process')\n .option('--max-recording-time <time>', 'maximum recording time in seconds', parseInt)\n .option('--sendit', 'Create GitHub issues automatically without confirmation')\n .description('Record audio, transcribe with Whisper, and analyze for project issues using AI');\n addSharedOptions(audioReviewCommand);\n\n const reviewCommand = program\n .command('review')\n .argument('[note]', 'review note to analyze for project issues')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the review')\n .option('--file <file>', 'read review note from a file')\n .option('--directory <directory>', 'process all review files in a directory')\n .option('--sendit', 'Create GitHub issues automatically without confirmation')\n .option('--editor-timeout <timeout>', 'timeout for editor in milliseconds (default: no timeout)', parseInt)\n .description('Analyze review note for project issues using AI');\n addSharedOptions(reviewCommand);\n\n // Customize help output for review command\n reviewCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `kodrdriv review [note] [options]\\n\\nAnalyze review note for project issues using AI\\n`;\n\n const argumentsSection = [\n ['note', 'review note to analyze for project issues (can also be piped via STDIN)']\n ];\n\n const reviewOptions = [\n ['--context <context>', 'additional context for the review'],\n ['--file <file>', 'read review note from a file'],\n ['--directory <directory>', 'process all review files in a directory']\n ];\n\n const gitContextOptions = [\n ['--include-commit-history', 'include recent commit log messages in context (default: true)'],\n ['--no-include-commit-history', 'exclude commit log messages from context'],\n ['--include-recent-diffs', 'include recent commit diffs in context (default: true)'],\n ['--no-include-recent-diffs', 'exclude recent diffs from context'],\n ['--include-release-notes', 'include recent release notes in context (default: false)'],\n ['--no-include-release-notes', 'exclude release notes from context'],\n ['--include-github-issues', 'include open GitHub issues in context (default: true)'],\n ['--no-include-github-issues', 'exclude GitHub issues from context'],\n ['--commit-history-limit <limit>', 'number of recent commits to include'],\n ['--diff-history-limit <limit>', 'number of recent commit diffs to include'],\n ['--release-notes-limit <limit>', 'number of recent release notes to include'],\n ['--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)']\n ];\n\n const behavioralOptions = [\n ['--sendit', 'Create GitHub issues automatically without confirmation']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['--openai-reasoning <level>', 'OpenAI reasoning level (low, medium, high)'],\n ['--openai-max-output-tokens <tokens>', 'OpenAI maximum output tokens'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--output-dir <outputDir>', 'output directory for generated files'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Arguments', argumentsSection) + '\\n' +\n formatOptionsSection('Options', reviewOptions) + '\\n' +\n formatOptionsSection('Git Context Parameters', gitContextOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const cleanCommand = program\n .command('clean')\n .description('Remove the output directory and all generated files');\n addSharedOptions(cleanCommand);\n\n const developmentCommand = program\n .command('development')\n .option('--target-version <targetVersion>', 'target version bump type (patch, minor, major) or explicit version (e.g., \"2.1.0\")', 'patch')\n .option('--no-milestones', 'disable GitHub milestone integration')\n .description('Switch to working branch and set up development version');\n addSharedOptions(developmentCommand);\n\n const versionsCommand = program\n .command('versions <subcommand>')\n .option('--directories [directories...]', 'directories to scan for packages (defaults to current directory)')\n .description('Update dependency versions across packages. Subcommands: minor');\n addSharedOptions(versionsCommand);\n\n const selectAudioCommand = program\n .command('select-audio')\n .description('Interactively select and save audio device for recording');\n addSharedOptions(selectAudioCommand);\n\n program.parse();\n\n const cliArgs: Input = program.opts<Input>(); // Get all opts initially\n\n // Determine which command is being run\n let commandName = DEFAULT_COMMAND;\n let commandOptions: Partial<Input> = {}; // Store specific command options\n\n if (program.args.length > 0) {\n commandName = program.args[0];\n validateCommand(commandName);\n }\n\n // Only proceed with command-specific options if validation passed\n if (ALLOWED_COMMANDS.includes(commandName)) {\n const chosen = commands ?? {\n commitCommand,\n audioCommitCommand,\n releaseCommand,\n publishCommand,\n treeCommand,\n linkCommand,\n unlinkCommand,\n audioReviewCommand,\n reviewCommand,\n cleanCommand,\n developmentCommand,\n versionsCommand,\n selectAudioCommand,\n } as const;\n\n if (commandName === 'commit' && chosen?.commitCommand?.opts) {\n const commitCmd = chosen.commitCommand;\n commandOptions = commitCmd.opts<Partial<Input>>();\n // Handle positional argument for direction\n // Try to get direction from program.args (after the command name)\n if (program.args.length > 1) {\n commandOptions.direction = program.args[1];\n }\n\n // Also try commitCommand.args as fallback\n const args = (commitCmd as any).args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.direction = firstTruthyArg;\n }\n }\n\n // Final fallback: use locally constructed commit command's args\n if (!commandOptions.direction) {\n const localArgs = (commitCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n commandOptions.direction = firstLocalArg;\n }\n }\n }\n\n // Check for STDIN input for direction (takes precedence over positional argument)\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.direction = stdinInput;\n }\n } else if (commandName === 'commit' && (chosen as any)?.commit?.opts) {\n // Fallback when a test/mocked commands object provides 'commit' instead of 'commitCommand'\n const commitCmd = (chosen as any).commit as any;\n commandOptions = commitCmd.opts();\n if (program.args.length > 1) {\n commandOptions.direction = program.args[1];\n }\n const args = commitCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.direction = firstTruthyArg;\n }\n }\n if (!commandOptions.direction) {\n const localArgs = (commitCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n commandOptions.direction = firstLocalArg;\n }\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.direction = stdinInput;\n }\n } else if (commandName === 'audio-commit' && chosen?.audioCommitCommand?.opts) {\n const audioCommitCmd = chosen.audioCommitCommand;\n commandOptions = audioCommitCmd.opts();\n } else if (commandName === 'release' && chosen?.releaseCommand?.opts) {\n const releaseCmd = chosen.releaseCommand;\n commandOptions = releaseCmd.opts();\n } else if (commandName === 'publish' && chosen?.publishCommand?.opts) {\n const publishCmd = chosen.publishCommand;\n commandOptions = publishCmd.opts();\n } else if (commandName === 'tree' && chosen?.treeCommand?.opts) {\n const treeCmd = chosen.treeCommand as any;\n commandOptions = treeCmd.opts();\n // Handle positional arguments for built-in command and package argument\n const args = treeCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n (commandOptions as any).builtInCommand = firstTruthyArg;\n if ((firstTruthyArg === 'link' || firstTruthyArg === 'unlink') && args.length > 1) {\n const secondTruthyArg = args.slice(1).find((arg: any) => arg);\n if (secondTruthyArg) {\n (commandOptions as any).packageArgument = secondTruthyArg;\n }\n }\n }\n }\n\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n (commandOptions as any).builtInCommand = stdinInput.trim().split('\\n')[0] || (commandOptions as any).builtInCommand;\n const stdinLines = stdinInput.split('\\n');\n if (stdinLines[1]) {\n (commandOptions as any).packageArgument = stdinLines[1];\n }\n }\n } else if (commandName === 'link' && chosen?.linkCommand?.opts) {\n const linkCmd = chosen.linkCommand as any;\n commandOptions = linkCmd.opts();\n const args = linkCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n (commandOptions as any).packageArgument = firstTruthyArg === 'status' ? 'status' : firstTruthyArg;\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n (commandOptions as any).packageArgument = stdinInput;\n }\n } else if (commandName === 'unlink' && chosen?.unlinkCommand?.opts) {\n const unlinkCmd = chosen.unlinkCommand as any;\n commandOptions = unlinkCmd.opts();\n const args = unlinkCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n (commandOptions as any).packageArgument = firstTruthyArg === 'status' ? 'status' : firstTruthyArg;\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n (commandOptions as any).packageArgument = stdinInput;\n }\n } else if (commandName === 'audio-review' && chosen?.audioReviewCommand?.opts) {\n const audioReviewCmd = chosen.audioReviewCommand;\n commandOptions = audioReviewCmd.opts();\n } else if (commandName === 'review' && chosen?.reviewCommand?.opts) {\n const reviewCmd = chosen.reviewCommand as any;\n commandOptions = reviewCmd.opts();\n const args = reviewCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.note = firstTruthyArg;\n }\n }\n // Final fallback: use locally constructed review command's args\n if (!commandOptions.note) {\n const localArgs = (reviewCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n commandOptions.note = firstLocalArg;\n }\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.note = stdinInput;\n }\n } else if (commandName === 'review' && (chosen as any)?.review?.opts) {\n const reviewCmd = (chosen as any).review as any;\n commandOptions = reviewCmd.opts();\n const args = reviewCmd.args;\n if (Array.isArray(args) && args.length > 0) {\n const firstTruthyArg = args.find((arg: any) => arg);\n if (firstTruthyArg) {\n commandOptions.note = firstTruthyArg;\n }\n }\n const stdinInput = await readStdin();\n if (typeof stdinInput === 'string') {\n commandOptions.note = stdinInput;\n }\n } else if (commandName === 'clean' && chosen?.cleanCommand?.opts) {\n const cleanCmd = chosen.cleanCommand;\n commandOptions = cleanCmd.opts();\n } else if (commandName === 'development' && chosen?.developmentCommand?.opts) {\n const developmentCmd = chosen.developmentCommand;\n commandOptions = developmentCmd.opts();\n } else if (commandName === 'versions' && chosen?.versionsCommand?.opts) {\n const versionsCmd = chosen.versionsCommand as any;\n commandOptions = versionsCmd.opts();\n const args = versionsCmd.args;\n if (args && args.length > 0 && args[0]) {\n commandOptions.subcommand = args[0];\n }\n } else if (commandName === 'select-audio' && chosen?.selectAudioCommand?.opts) {\n const selectAudioCmd = chosen.selectAudioCommand;\n commandOptions = selectAudioCmd.opts();\n } else {\n // Final fallback\n commandOptions = program.opts<Partial<Input>>();\n }\n }\n\n // Include command name in CLI args for merging\n const finalCliArgs = { ...cliArgs, ...commandOptions } as any;\n // Final safety fallback for positional arguments when STDIN is null and mocks provide args on constructed commands\n if (commandName === 'commit' && !finalCliArgs.direction) {\n const localArgs = (commitCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n finalCliArgs.direction = firstLocalArg;\n }\n }\n }\n if (commandName === 'review' && !finalCliArgs.note) {\n const localArgs = (reviewCommand as any)?.args;\n if (Array.isArray(localArgs) && localArgs.length > 0) {\n const firstLocalArg = localArgs.find((arg: any) => arg);\n if (firstLocalArg) {\n finalCliArgs.note = firstLocalArg;\n }\n }\n }\n const commandConfig = { commandName };\n return [finalCliArgs, commandConfig];\n}\n\nexport async function validateAndProcessSecureOptions(): Promise<SecureConfig> {\n // For check-config and init-config commands, we don't want to throw an error for missing API key\n const isCheckConfig = process.argv.includes('--check-config');\n const isInitConfig = process.argv.includes('--init-config');\n\n if (!process.env.OPENAI_API_KEY && !isCheckConfig && !isInitConfig) {\n throw new Error('OpenAI API key is required. Please set the OPENAI_API_KEY environment variable.');\n }\n\n // Prefer CLI key if provided, otherwise use env var (might be undefined for check-config/init-config)\n const openaiApiKey = process.env.OPENAI_API_KEY;\n\n const secureConfig: SecureConfig = {\n openaiApiKey: openaiApiKey,\n };\n\n return secureConfig;\n}\n\n// Renamed validation function to reflect its broader role\nexport async function validateAndProcessOptions(options: Partial<Config>): Promise<Config> {\n\n const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);\n const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n // Skip config directory validation since Cardigantime handles hierarchical lookup\n\n // Ensure all required fields are present and have correct types after merging\n const finalConfig: Config = {\n dryRun: options.dryRun ?? KODRDRIV_DEFAULTS.dryRun,\n verbose: options.verbose ?? KODRDRIV_DEFAULTS.verbose,\n debug: options.debug ?? KODRDRIV_DEFAULTS.debug,\n overrides: options.overrides ?? KODRDRIV_DEFAULTS.overrides,\n model: options.model ?? KODRDRIV_DEFAULTS.model,\n openaiReasoning: options.openaiReasoning ?? KODRDRIV_DEFAULTS.openaiReasoning,\n openaiMaxOutputTokens: options.openaiMaxOutputTokens ?? KODRDRIV_DEFAULTS.openaiMaxOutputTokens,\n contextDirectories: contextDirectories,\n configDirectory: configDir,\n outputDirectory: options.outputDirectory ?? KODRDRIV_DEFAULTS.outputDirectory,\n preferencesDirectory: options.preferencesDirectory ?? KODRDRIV_DEFAULTS.preferencesDirectory,\n // Cardigantime-specific properties (from fileValues or defaults)\n discoveredConfigDirs: (options as any).discoveredConfigDirs ?? [],\n resolvedConfigDirs: (options as any).resolvedConfigDirs ?? [],\n // Command-specific options - ensure all defaults are present even for partial configs\n commit: {\n ...KODRDRIV_DEFAULTS.commit,\n ...Object.fromEntries(Object.entries(options.commit || {}).filter(([_, v]) => v !== undefined && v !== null)),\n },\n audioCommit: {\n ...KODRDRIV_DEFAULTS.audioCommit,\n ...Object.fromEntries(Object.entries(options.audioCommit || {}).filter(([_, v]) => v !== undefined)),\n },\n release: {\n ...KODRDRIV_DEFAULTS.release,\n ...Object.fromEntries(Object.entries(options.release || {}).filter(([_, v]) => v !== undefined)),\n },\n audioReview: {\n ...KODRDRIV_DEFAULTS.audioReview,\n ...Object.fromEntries(Object.entries(options.audioReview || {}).filter(([_, v]) => v !== undefined)),\n },\n review: {\n ...KODRDRIV_DEFAULTS.review,\n ...Object.fromEntries(Object.entries(options.review || {}).filter(([_, v]) => v !== undefined)),\n },\n publish: {\n ...KODRDRIV_DEFAULTS.publish,\n ...Object.fromEntries(Object.entries(options.publish || {}).filter(([_, v]) => v !== undefined)),\n },\n link: {\n ...KODRDRIV_DEFAULTS.link,\n ...Object.fromEntries(Object.entries(options.link || {}).filter(([_, v]) => v !== undefined)),\n },\n unlink: {\n ...KODRDRIV_DEFAULTS.unlink,\n ...Object.fromEntries(Object.entries(options.unlink || {}).filter(([_, v]) => v !== undefined)),\n },\n tree: {\n ...KODRDRIV_DEFAULTS.tree,\n ...Object.fromEntries(Object.entries(options.tree || {}).filter(([_, v]) => v !== undefined)),\n },\n development: {\n ...KODRDRIV_DEFAULTS.development,\n ...Object.fromEntries(Object.entries(options.development || {}).filter(([_, v]) => v !== undefined)),\n },\n versions: {\n ...KODRDRIV_DEFAULTS.versions,\n ...Object.fromEntries(Object.entries(options.versions || {}).filter(([_, v]) => v !== undefined)),\n },\n excludedPatterns: options.excludedPatterns ?? KODRDRIV_DEFAULTS.excludedPatterns,\n };\n\n // Final validation against the MainConfig shape (optional, cardigantime might handle it)\n // You could potentially use ConfigShape.parse(finalConfig) here if needed\n\n return finalConfig;\n}\n\n// Export for testing\nexport function validateCommand(commandName: string): string {\n if (!ALLOWED_COMMANDS.includes(commandName)) {\n throw new Error(`Invalid command: ${commandName}, allowed commands: ${ALLOWED_COMMANDS.join(', ')}`);\n }\n return commandName;\n}\n\nexport async function validateConfigDir(configDir: string): Promise<string> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Make sure the config directory is absolute\n const absoluteConfigDir = path.isAbsolute(configDir) ?\n configDir :\n path.resolve(process.cwd(), configDir);\n\n try {\n // Check if the path exists\n if (!(await storage.exists(absoluteConfigDir))) {\n // Directory doesn't exist, warn and fall back to defaults\n logger.warn(`Config directory does not exist: ${absoluteConfigDir}. Using default configuration.`);\n return absoluteConfigDir; // Return the path anyway, app will use defaults\n }\n\n // Path exists, check if it's a directory\n if (!(await storage.isDirectory(absoluteConfigDir))) {\n throw new Error(`Config directory is not a directory: ${absoluteConfigDir}`);\n }\n\n // Check if it's writable\n if (!(await storage.isDirectoryWritable(absoluteConfigDir))) {\n throw new Error(`Config directory is not writable: ${absoluteConfigDir}`);\n }\n } catch (error: any) {\n logger.error(`Failed to validate config directory: ${absoluteConfigDir}`, error);\n throw new Error(`Failed to validate config directory: ${absoluteConfigDir}: ${error.message}`);\n }\n\n return absoluteConfigDir;\n}\n\n// Export for testing\nexport async function validateContextDirectories(contextDirectories: string[]): Promise<string[]> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Filter out directories that don't exist\n const validDirectories = [];\n\n for (const dir of contextDirectories) {\n try {\n if (await storage.isDirectoryReadable(dir)) {\n validDirectories.push(dir);\n } else {\n logger.warn(`Directory not readable: ${dir}`);\n }\n } catch (error: any) {\n logger.warn(`Error validating directory ${dir}: ${error.message}`);\n }\n }\n\n return validDirectories;\n}\n\n\n\n"],"names":["z","object","dryRun","boolean","optional","verbose","debug","overrides","checkConfig","initConfig","model","string","openaiReasoning","enum","openaiMaxOutputTokens","number","contextDirectories","array","configDir","outputDir","preferencesDir","cached","add","sendit","interactive","amend","from","to","targetVersion","excludedPatterns","excludedPaths","exclude","context","note","direction","messageLimit","skipFileCheck","maxDiffBytes","mergeMethod","syncTarget","scopeRoots","workspaceFile","cleanNodeModules","startFrom","stopAt","script","cmd","publish","parallel","continue","includeCommitHistory","includeRecentDiffs","editorTimeout","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","file","directory","directories","externals","keepTemp","noMilestones","subcommand","transformCliArgs","finalCliArgs","commandName","transformedCliArgs","undefined","outputDirectory","preferencesDirectory","configDirectory","push","commit","audioCommit","release","development","linkPackageArgument","packageArgument","link","safeJsonParse","error","Error","unlinkPackageArgument","unlink","audioReview","review","builtInCommand","tree","versions","configure","cardigantime","config","logger","getLogger","program","Command","name","PROGRAM_NAME","summary","description","version","VERSION","process","argv","includes","parse","cliArgs","opts","validateAndProcessOptions","secureConfig","validateAndProcessSecureOptions","commandConfig","KODRDRIV_DEFAULTS","absoluteConfigDir","path","isAbsolute","resolve","cwd","generateConfig","getCliConfig","silly","JSON","stringify","fileValues","read","mergedLink","mergedCommit","mergedRelease","mergedPublish","mergedAudioCommit","mergedAudioReview","mergedReview","mergedTree","partialConfig","join","length","Object","keys","commands","addSharedOptions","command","option","parseInt","commitCommand","argument","configureHelp","formatHelp","helper","nameAndVersion","commandUsage","commandDescription","commitOptions","behavioralOptions","globalOptions","formatOptionsSection","title","options","maxWidth","Math","max","map","flag","desc","padEnd","audioCommitCommand","releaseCommand","publishCommand","treeCommand","linkCommand","unlinkCommand","audioReviewCommand","reviewCommand","argumentsSection","reviewOptions","gitContextOptions","cleanCommand","developmentCommand","versionsCommand","selectAudioCommand","DEFAULT_COMMAND","commandOptions","args","validateCommand","ALLOWED_COMMANDS","chosen","commitCmd","Array","isArray","firstTruthyArg","find","arg","localArgs","firstLocalArg","stdinInput","readStdin","audioCommitCmd","releaseCmd","publishCmd","treeCmd","secondTruthyArg","slice","trim","split","stdinLines","linkCmd","unlinkCmd","audioReviewCmd","reviewCmd","cleanCmd","developmentCmd","versionsCmd","selectAudioCmd","isCheckConfig","isInitConfig","env","OPENAI_API_KEY","openaiApiKey","validateContextDirectories","finalConfig","discoveredConfigDirs","resolvedConfigDirs","fromEntries","entries","filter","_","v","storage","Storage","log","info","validDirectories","dir","isDirectoryReadable","warn","message"],"mappings":"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"}
|
package/dist/commands/link.js
CHANGED
|
@@ -395,13 +395,13 @@ const executeInternal = async (runConfig, packageArgument)=>{
|
|
|
395
395
|
}
|
|
396
396
|
}
|
|
397
397
|
const summary = linkedDependencies.length > 0 ? `Self-linked ${currentPackageJson.name} and linked ${linkedDependencies.length} dependencies: ${linkedDependencies.join(', ')}` : `Self-linked ${currentPackageJson.name}, no dependencies were available to link`;
|
|
398
|
-
// Step 5:
|
|
398
|
+
// Step 5: Regenerate package-lock.json without modifying node_modules
|
|
399
399
|
try {
|
|
400
400
|
if (isDryRun) {
|
|
401
|
-
logger.info(`DRY RUN: Would run 'npm install' to regenerate package-lock.json`);
|
|
401
|
+
logger.info(`DRY RUN: Would run 'npm install --package-lock-only --no-audit --no-fund' to regenerate package-lock.json`);
|
|
402
402
|
} else {
|
|
403
|
-
logger.verbose(`Running 'npm install' to regenerate package-lock.json...`);
|
|
404
|
-
await run('npm install');
|
|
403
|
+
logger.verbose(`Running 'npm install --package-lock-only --no-audit --no-fund' to regenerate package-lock.json without touching node_modules...`);
|
|
404
|
+
await run('npm install --package-lock-only --no-audit --no-fund');
|
|
405
405
|
logger.info(`✅ Regenerated package-lock.json`);
|
|
406
406
|
}
|
|
407
407
|
} catch (error) {
|
|
@@ -479,9 +479,9 @@ const executeInternal = async (runConfig, packageArgument)=>{
|
|
|
479
479
|
}
|
|
480
480
|
}
|
|
481
481
|
const summary = `Successfully linked ${linkedPackages.length} package(s): ${linkedPackages.join(', ')}`;
|
|
482
|
-
// Final step:
|
|
482
|
+
// Final step: Regenerate package-lock.json files in all affected packages without modifying node_modules
|
|
483
483
|
if (!isDryRun) {
|
|
484
|
-
logger.info(`🔄 Regenerating package-lock.json files in all packages...`);
|
|
484
|
+
logger.info(`🔄 Regenerating package-lock.json files in all packages (lockfile-only)...`);
|
|
485
485
|
// Get all unique consuming packages
|
|
486
486
|
const allConsumingPackages = new Set();
|
|
487
487
|
for (const pkg of packagesToLink){
|
|
@@ -490,14 +490,14 @@ const executeInternal = async (runConfig, packageArgument)=>{
|
|
|
490
490
|
}
|
|
491
491
|
// Also include the source packages
|
|
492
492
|
packagesToLink.forEach((pkg)=>allConsumingPackages.add(pkg.path));
|
|
493
|
-
// Run
|
|
493
|
+
// Run lockfile-only install in each package
|
|
494
494
|
for (const packagePath of allConsumingPackages){
|
|
495
495
|
try {
|
|
496
496
|
const originalCwd = process.cwd();
|
|
497
497
|
process.chdir(packagePath);
|
|
498
498
|
try {
|
|
499
|
-
logger.verbose(`Running 'npm install' in: ${packagePath}`);
|
|
500
|
-
await run('npm install');
|
|
499
|
+
logger.verbose(`Running 'npm install --package-lock-only --no-audit --no-fund' in: ${packagePath}`);
|
|
500
|
+
await run('npm install --package-lock-only --no-audit --no-fund');
|
|
501
501
|
logger.verbose(`✅ Regenerated package-lock.json in: ${packagePath}`);
|
|
502
502
|
} finally{
|
|
503
503
|
process.chdir(originalCwd);
|
|
@@ -508,7 +508,7 @@ const executeInternal = async (runConfig, packageArgument)=>{
|
|
|
508
508
|
}
|
|
509
509
|
logger.info(`✅ Regenerated package-lock.json files in ${allConsumingPackages.size} packages`);
|
|
510
510
|
} else {
|
|
511
|
-
logger.info(`DRY RUN: Would run 'npm install' to regenerate package-lock.json files in all packages`);
|
|
511
|
+
logger.info(`DRY RUN: Would run 'npm install --package-lock-only --no-audit --no-fund' to regenerate package-lock.json files in all packages`);
|
|
512
512
|
}
|
|
513
513
|
logger.info(summary);
|
|
514
514
|
return summary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../src/commands/link.ts"],"sourcesContent":["import { getLogger, getDryRunLogger } from '../logging';\nimport { Config } from '../types';\nimport { run, runSecure } from '../util/child';\nimport {\n findAllPackageJsonFiles\n} from '../util/performance';\nimport { create as createStorage } from '../util/storage';\nimport { safeJsonParse, validatePackageJson } from '../util/validation';\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(`Failed to check linked dependencies in ${packageName}: ${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(`🔧 Fixing symlink: ${targetPath} (was pointing to ${existingLink}, now pointing to ${relativePath})`);\n await fs.unlink(targetPath);\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`✅ Fixed symlink: ${targetPath} -> ${relativePath}`);\n return true;\n }\n } else if (stats.isDirectory()) {\n // It's a directory, remove it\n logger.warn(`⚠️ Removing existing directory to create symlink: ${targetPath}`);\n await fs.rm(targetPath, { recursive: true, force: true });\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`✅ Created symlink: ${targetPath} -> ${relativePath}`);\n return true;\n } else {\n // It's a file, remove it\n logger.warn(`⚠️ Removing existing file to create symlink: ${targetPath}`);\n await fs.unlink(targetPath);\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`✅ Created symlink: ${targetPath} -> ${relativePath}`);\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(`Failed to create symlink for ${packageName}: ${error.message}`);\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(`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.link?.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage({ log: logger.info });\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(`Analyzing workspace at: ${targetDirectories[0]}`);\n } else {\n logger.info(`Analyzing workspaces at: ${targetDirectories.join(', ')}`);\n }\n\n // If no package argument provided, use new smart same-scope linking behavior\n if (!packageArgument) {\n logger.info('🔗 Smart linking current project...');\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 = `No valid package.json found in current directory: ${error.message}`;\n logger.error(message);\n return message;\n }\n\n if (!currentPackageJson.name) {\n const message = 'package.json must have a name field';\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 = 'Current package must have a scoped name (e.g., @scope/package) for smart linking';\n logger.warn(message);\n return message;\n }\n\n logger.info(`Current package: ${currentPackageJson.name} (scope: ${currentScope})`);\n\n // Step 1: Link the current package globally\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm link' in current directory`);\n } else {\n logger.verbose(`Running 'npm link' to register ${currentPackageJson.name} globally...`);\n await run('npm link');\n logger.info(`✅ Self-linked: ${currentPackageJson.name}`);\n }\n } catch (error: any) {\n logger.error(`❌ Failed to self-link ${currentPackageJson.name}: ${error.message}`);\n throw new Error(`Failed to self-link ${currentPackageJson.name}: ${error.message}`);\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 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(`✅ Linked dependency: ${depName}`);\n linkedDependencies.push(depName);\n } else {\n logger.warn(`⚠️ Failed to link ${depName}`);\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: Run npm install to regenerate package-lock.json\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm install' to regenerate package-lock.json`);\n } else {\n logger.verbose(`Running 'npm install' to regenerate package-lock.json...`);\n await run('npm install');\n logger.info(`✅ Regenerated package-lock.json`);\n }\n } catch (error: any) {\n logger.warn(`⚠️ Failed to regenerate package-lock.json: ${error.message}`);\n }\n\n logger.info(summary);\n return summary;\n }\n\n // New scope-based linking behavior\n logger.info(`🔗 Linking scope/package: ${packageArgument}`);\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(`✅ Source linked: ${pkg.name}`);\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(`✅ Consumer linked: ${consumer.name} -> ${pkg.name}`);\n }\n } finally {\n process.chdir(consumerOriginalCwd);\n }\n } catch (error: any) {\n logger.error(`❌ Failed to link ${pkg.name} in ${consumer.name}: ${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(`❌ Failed to link source package ${pkg.name}: ${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: Run npm install in all consuming packages to regenerate package-lock.json files\n if (!isDryRun) {\n logger.info(`🔄 Regenerating package-lock.json files in all packages...`);\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 npm 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' in: ${packagePath}`);\n await run('npm install');\n logger.verbose(`✅ Regenerated package-lock.json in: ${packagePath}`);\n } finally {\n process.chdir(originalCwd);\n }\n } catch (error: any) {\n logger.warn(`⚠️ Failed to regenerate package-lock.json in ${packagePath}: ${error.message}`);\n }\n }\n\n logger.info(`✅ Regenerated package-lock.json files in ${allConsumingPackages.size} packages`);\n } else {\n logger.info(`DRY RUN: Would run 'npm install' 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({ log: logger.info });\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"],"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","log","executeStatus","tree","directories","process","cwd","currentDir","currentPackageJson","currentScope","run","sameScopeDependencies","keys","filter","depName","externals","externalDependencies","allDependenciesToLink","globallyLinkedPackages","result","resultStr","stdout","directoryPaths","trim","line","dirPath","packageError","linkedCount","success","summary","linkedPackages","packagesToLink","pkg","originalCwd","chdir","consumer","consumerOriginalCwd","runSecure","allConsumingPackages","Set","forEach","add","size","getLogger","packageStatuses","output","packageStatus","dep","type","execute","finalPackageArgument"],"mappings":";;;;;;;;AAWA;AACA,MAAMA,iBAAiB,OAAOC,QAAAA,GAAAA;IAC1B,IAAI;AACA,QAAA,MAAMC,KAAAA,GAAQ,MAAMC,WAAAA,CAAGC,KAAK,CAACH,QAAAA,CAAAA;AAC7B,QAAA,OAAOC,MAAMF,cAAc,EAAA;AAC/B,IAAA,CAAA,CAAE,OAAM;QACJ,OAAO,KAAA;AACX,IAAA;AACJ,CAAA;AAEA;AACA,MAAMK,wBAAwB,OAAOJ,QAAAA,GAAAA;IACjC,IAAI;AACA,QAAA,MAAMK,MAAAA,GAAS,MAAMH,WAAAA,CAAGI,QAAQ,CAACN,QAAAA,CAAAA;QACjC,OAAOK,MAAAA;AACX,IAAA,CAAA,CAAE,OAAM;QACJ,OAAO,IAAA;AACX,IAAA;AACJ,CAAA;AAEA;AACA,MAAME,sBAAAA,GAAyB,OAC3BC,WAAAA,EACAC,WAAAA,EACAC,OAAAA,EACAC,MAAAA,GAAAA;AAEA,IAAA,MAAMC,qBAAiG,EAAE;IAEzG,IAAI;AACA,QAAA,MAAMC,eAAAA,GAAkBC,aAAAA,CAAKC,IAAI,CAACP,WAAAA,EAAa,cAAA,CAAA;AAC/C,QAAA,MAAMQ,kBAAAA,GAAqB,MAAMN,OAAAA,CAAQO,QAAQ,CAACJ,eAAAA,EAAiB,OAAA,CAAA;QACnE,MAAMK,MAAAA,GAASC,cAAcH,kBAAAA,EAAoBH,eAAAA,CAAAA;QACjD,MAAMO,WAAAA,GAAcC,oBAAoBH,MAAAA,EAAQL,eAAAA,CAAAA;AAEhD,QAAA,MAAMS,eAAAA,GAAkB;AACpB,YAAA,GAAGF,YAAYG,YAAY;AAC3B,YAAA,GAAGH,YAAYI;AACnB,SAAA;AAEA,QAAA,MAAMC,eAAAA,GAAkBX,aAAAA,CAAKC,IAAI,CAACP,WAAAA,EAAa,cAAA,CAAA;;QAG/C,KAAK,MAAM,CAACkB,cAAAA,EAAgBC,OAAAA,CAAQ,IAAIC,MAAAA,CAAOC,OAAO,CAACP,eAAAA,CAAAA,CAAkB;YACrE,IAAIQ,cAAAA;YAEJ,IAAIJ,cAAAA,CAAeK,UAAU,CAAC,GAAA,CAAA,EAAM;;AAEhC,gBAAA,MAAM,CAACC,KAAAA,EAAOC,IAAAA,CAAK,GAAGP,cAAAA,CAAeQ,KAAK,CAAC,GAAA,CAAA;AAC3CJ,gBAAAA,cAAAA,GAAiBhB,aAAAA,CAAKC,IAAI,CAACU,eAAAA,EAAiBO,KAAAA,EAAOC,IAAAA,CAAAA;YACvD,CAAA,MAAO;;gBAEHH,cAAAA,GAAiBhB,aAAAA,CAAKC,IAAI,CAACU,eAAAA,EAAiBC,cAAAA,CAAAA;AAChD,YAAA;YAEA,IAAI,MAAM3B,eAAe+B,cAAAA,CAAAA,EAAiB;gBACtC,MAAMzB,MAAAA,GAAS,MAAMD,qBAAAA,CAAsB0B,cAAAA,CAAAA;AAC3C,gBAAA,IAAIzB,MAAAA,EAAQ;;oBAER,MAAM8B,UAAAA,GAAa,CAAC9B,MAAAA,CAAO+B,QAAQ,CAAC,cAAA,CAAA,IAAmB/B,MAAAA,CAAO0B,UAAU,CAAC,IAAA,CAAA;AACzEnB,oBAAAA,kBAAAA,CAAmByB,IAAI,CAAC;AACpBX,wBAAAA,cAAAA;wBACAY,UAAAA,EAAYjC,MAAAA;AACZ8B,wBAAAA;AACJ,qBAAA,CAAA;AACJ,gBAAA;AACJ,YAAA;AACJ,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOI,KAAAA,EAAY;QACjB5B,MAAAA,CAAO6B,IAAI,CAAC,CAAC,uCAAuC,EAAE/B,YAAY,EAAE,EAAE8B,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AACzF,IAAA;IAEA,OAAO7B,kBAAAA;AACX,CAAA;AAEA;AACA,MAAM8B,0BAAAA,GAA6B,CAAChB,cAAAA,EAAwBiB,oBAAAA,GAAAA;AACxD,IAAA,IAAI,CAACA,oBAAAA,IAAwBA,oBAAAA,CAAqBC,MAAM,KAAK,CAAA,EAAG;QAC5D,OAAO,KAAA;AACX,IAAA;IAEA,OAAOD,oBAAAA,CAAqBE,IAAI,CAACC,CAAAA,OAAAA,GAAAA;;AAE7B,QAAA,OAAOpB,cAAAA,KAAmBoB,OAAAA,IAAWpB,cAAAA,CAAeK,UAAU,CAACe,OAAAA,CAAAA;AACnE,IAAA,CAAA,CAAA;AACJ,CAAA;AAEA;AACA,MAAMC,qBAAqB,OACvBtC,WAAAA,EACAuC,YACAC,SAAAA,EACAtC,MAAAA,EACAuC,WAAoB,KAAK,GAAA;IAEzB,IAAI;;QAEA,MAAM,CAAClB,KAAAA,EAAOC,IAAAA,CAAK,GAAGxB,WAAAA,CAAYsB,UAAU,CAAC,GAAA,CAAA,GACvCtB,WAAAA,CAAYyB,KAAK,CAAC,GAAA,CAAA,GAClB;AAAC,YAAA,IAAA;AAAMzB,YAAAA;AAAY,SAAA;;AAGzB,QAAA,MAAMgB,eAAAA,GAAkBX,aAAAA,CAAKC,IAAI,CAACkC,SAAAA,EAAW,cAAA,CAAA;QAC7C,IAAIX,UAAAA;AAEJ,QAAA,IAAIN,KAAAA,EAAO;;AAEP,YAAA,MAAMmB,QAAAA,GAAWrC,aAAAA,CAAKC,IAAI,CAACU,eAAAA,EAAiBO,KAAAA,CAAAA;YAC5CM,UAAAA,GAAaxB,aAAAA,CAAKC,IAAI,CAACoC,QAAAA,EAAUlB,IAAAA,CAAAA;AAEjC,YAAA,IAAI,CAACiB,QAAAA,EAAU;;gBAEX,MAAMhD,WAAAA,CAAGkD,KAAK,CAACD,QAAAA,EAAU;oBAAEE,SAAAA,EAAW;AAAK,iBAAA,CAAA;AAC/C,YAAA;QACJ,CAAA,MAAO;;YAEHf,UAAAA,GAAaxB,aAAAA,CAAKC,IAAI,CAACU,eAAAA,EAAiBQ,IAAAA,CAAAA;AAExC,YAAA,IAAI,CAACiB,QAAAA,EAAU;;gBAEX,MAAMhD,WAAAA,CAAGkD,KAAK,CAAC3B,eAAAA,EAAiB;oBAAE4B,SAAAA,EAAW;AAAK,iBAAA,CAAA;AACtD,YAAA;AACJ,QAAA;AAEA,QAAA,IAAIH,QAAAA,EAAU;YACVvC,MAAAA,CAAO2C,OAAO,CAAC,CAAC,+BAA+B,EAAEhB,UAAAA,CAAW,IAAI,EAAEU,UAAAA,CAAAA,CAAY,CAAA;YAC9E,OAAO,IAAA;AACX,QAAA;;AAGA,QAAA,MAAMO,eAAezC,aAAAA,CAAK0C,QAAQ,CAAC1C,aAAAA,CAAK2C,OAAO,CAACnB,UAAAA,CAAAA,EAAaU,UAAAA,CAAAA;;QAG7D,IAAI;AACA,YAAA,MAAM/C,QAAQ,MAAMC,WAAAA,CAAGC,KAAK,CAACmC;YAE7B,IAAIrC,KAAAA,CAAMF,cAAc,EAAA,EAAI;;AAExB,gBAAA,MAAM2D,YAAAA,GAAe,MAAMxD,WAAAA,CAAGI,QAAQ,CAACgC,UAAAA,CAAAA;AACvC,gBAAA,IAAIoB,iBAAiBH,YAAAA,EAAc;oBAC/B5C,MAAAA,CAAO2C,OAAO,CAAC,CAAC,qDAAqD,EAAEhB,UAAAA,CAAW,IAAI,EAAEiB,YAAAA,CAAAA,CAAc,CAAA;oBACtG,OAAO,IAAA;gBACX,CAAA,MAAO;AACH5C,oBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,mBAAmB,EAAErB,UAAAA,CAAW,kBAAkB,EAAEoB,YAAAA,CAAa,kBAAkB,EAAEH,YAAAA,CAAa,CAAC,CAAC,CAAA;oBACjH,MAAMrD,WAAAA,CAAG0D,MAAM,CAACtB,UAAAA,CAAAA;AAChB,oBAAA,MAAMpC,WAAAA,CAAG2D,OAAO,CAACN,YAAAA,EAAcjB,UAAAA,EAAY,KAAA,CAAA;oBAC3C3B,MAAAA,CAAOgD,IAAI,CAAC,CAAC,iBAAiB,EAAErB,UAAAA,CAAW,IAAI,EAAEiB,YAAAA,CAAAA,CAAc,CAAA;oBAC/D,OAAO,IAAA;AACX,gBAAA;YACJ,CAAA,MAAO,IAAItD,KAAAA,CAAM6D,WAAW,EAAA,EAAI;;AAE5BnD,gBAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,kDAAkD,EAAEF,UAAAA,CAAAA,CAAY,CAAA;gBAC7E,MAAMpC,WAAAA,CAAG6D,EAAE,CAACzB,UAAAA,EAAY;oBAAEe,SAAAA,EAAW,IAAA;oBAAMW,KAAAA,EAAO;AAAK,iBAAA,CAAA;AACvD,gBAAA,MAAM9D,WAAAA,CAAG2D,OAAO,CAACN,YAAAA,EAAcjB,UAAAA,EAAY,KAAA,CAAA;gBAC3C3B,MAAAA,CAAOgD,IAAI,CAAC,CAAC,mBAAmB,EAAErB,UAAAA,CAAW,IAAI,EAAEiB,YAAAA,CAAAA,CAAc,CAAA;gBACjE,OAAO,IAAA;YACX,CAAA,MAAO;;AAEH5C,gBAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,6CAA6C,EAAEF,UAAAA,CAAAA,CAAY,CAAA;gBACxE,MAAMpC,WAAAA,CAAG0D,MAAM,CAACtB,UAAAA,CAAAA;AAChB,gBAAA,MAAMpC,WAAAA,CAAG2D,OAAO,CAACN,YAAAA,EAAcjB,UAAAA,EAAY,KAAA,CAAA;gBAC3C3B,MAAAA,CAAOgD,IAAI,CAAC,CAAC,mBAAmB,EAAErB,UAAAA,CAAW,IAAI,EAAEiB,YAAAA,CAAAA,CAAc,CAAA;gBACjE,OAAO,IAAA;AACX,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOhB,KAAAA,EAAY;YACjB,IAAIA,KAAAA,CAAM0B,IAAI,KAAK,QAAA,EAAU;;AAEzB,gBAAA,MAAM/D,WAAAA,CAAG2D,OAAO,CAACN,YAAAA,EAAcjB,UAAAA,EAAY,KAAA,CAAA;gBAC3C3B,MAAAA,CAAO2C,OAAO,CAAC,CAAC,iBAAiB,EAAEhB,UAAAA,CAAW,IAAI,EAAEiB,YAAAA,CAAAA,CAAc,CAAA;gBAClE,OAAO,IAAA;YACX,CAAA,MAAO;AACH,gBAAA,MAAMhB;AACV,YAAA;AACJ,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOA,KAAAA,EAAY;QACjB5B,MAAAA,CAAO6B,IAAI,CAAC,CAAC,6BAA6B,EAAE/B,YAAY,EAAE,EAAE8B,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;QAC3E,OAAO,KAAA;AACX,IAAA;AACJ,CAAA;AAEA;AACA,MAAMyB,uBAAuB,CAACC,UAAAA,GAAAA;IAC1B,IAAIA,UAAAA,CAAWpC,UAAU,CAAC,GAAA,CAAA,EAAM;QAC5B,MAAMqC,KAAAA,GAAQD,UAAAA,CAAWjC,KAAK,CAAC,GAAA,CAAA;QAC/B,IAAIkC,KAAAA,CAAMxB,MAAM,KAAK,CAAA,EAAG;;YAEpB,OAAO;gBAAEZ,KAAAA,EAAOoC,KAAK,CAAC,CAAA;AAAG,aAAA;QAC7B,CAAA,MAAO;;YAEH,OAAO;gBAAEpC,KAAAA,EAAOoC,KAAK,CAAC,CAAA,CAAE;gBAAE3D,WAAAA,EAAa0D;AAAW,aAAA;AACtD,QAAA;IACJ,CAAA,MAAO;AACH,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,4CAA4C,EAAEF,UAAAA,CAAAA,CAAY,CAAA;AAC/E,IAAA;AACJ,CAAA;AAEA;AACA,MAAMG,oBAAAA,GAAuB,OACzBC,iBAAAA,EACAvC,KAAAA,EACAtB,SACAC,MAAAA,EACAF,WAAAA,GAAAA;AAEA,IAAA,MAAM+D,mBAA6E,EAAE;;AAGrF,IAAA,IAAIC,sBAA6B,EAAE;IACnC,KAAK,MAAMC,mBAAmBH,iBAAAA,CAAmB;QAC7C,MAAMI,gBAAAA,GAAmB,MAAMC,uBAAAA,CAAwBF,eAAAA,EAAiBhE,OAAAA,CAAAA;QACxE+D,mBAAAA,GAAsBA,mBAAAA,CAAoBI,MAAM,CAACF,gBAAAA,CAAAA;AACrD,IAAA;IAEA,KAAK,MAAMG,uBAAuBL,mBAAAA,CAAqB;AACnD,QAAA,MAAMM,aAAaD,mBAAAA,CAAoBhE,IAAI,CAACkE,OAAO,CAAC,eAAA,EAAiB,EAAA,CAAA;QAErE,IAAI;AACA,YAAA,MAAMhE,qBAAqB,MAAMN,OAAAA,CAAQO,QAAQ,CAAC6D,mBAAAA,CAAoBhE,IAAI,EAAE,OAAA,CAAA;AAC5E,YAAA,MAAMI,MAAAA,GAASC,aAAAA,CAAcH,kBAAAA,EAAoB8D,mBAAAA,CAAoBhE,IAAI,CAAA;AACzE,YAAA,MAAMM,WAAAA,GAAcC,mBAAAA,CAAoBH,MAAAA,EAAQ4D,mBAAAA,CAAoBhE,IAAI,CAAA;YAExE,IAAI,CAACM,WAAAA,CAAYa,IAAI,EAAE;AAEvB,YAAA,MAAMgD,YAAY7D,WAAAA,CAAYa,IAAI,CAACF,UAAU,CAACC,KAAAA,GAAQ,GAAA,CAAA;AACtD,YAAA,MAAMkD,YAAAA,GAAezE,WAAAA,IAAeW,WAAAA,CAAYa,IAAI,KAAKxB,WAAAA;AAEzD,YAAA,IAAIwE,aAAaC,YAAAA,EAAc;AAC3BV,gBAAAA,gBAAAA,CAAiBnC,IAAI,CAAC;AAClBJ,oBAAAA,IAAAA,EAAMb,YAAYa,IAAI;oBACtBnB,IAAAA,EAAMiE,UAAAA;AACNI,oBAAAA,QAAAA,EAAU1E,WAAAA,GAAcW,WAAAA,CAAYa,IAAI,KAAKxB,WAAAA,GAAcwE;AAC/D,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAO1C,KAAAA,EAAY;AACjB5B,YAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,gBAAgB,EAAEsC,mBAAAA,CAAoBhE,IAAI,CAAC,EAAE,EAAEyB,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC/E,QAAA;AACJ,IAAA;IAEA,OAAO+B,gBAAAA;AACX,CAAA;AAEA;AACA,MAAMY,qBAAAA,GAAwB,OAC1Bb,iBAAAA,EACAc,iBAAAA,EACA3E,OAAAA,EACAC,MAAAA,GAAAA;AAEA,IAAA,MAAM2E,oBAA2D,EAAE;;AAGnE,IAAA,IAAIb,sBAA6B,EAAE;IACnC,KAAK,MAAMC,mBAAmBH,iBAAAA,CAAmB;QAC7C,MAAMI,gBAAAA,GAAmB,MAAMC,uBAAAA,CAAwBF,eAAAA,EAAiBhE,OAAAA,CAAAA;QACxE+D,mBAAAA,GAAsBA,mBAAAA,CAAoBI,MAAM,CAACF,gBAAAA,CAAAA;AACrD,IAAA;IAEA,KAAK,MAAMG,uBAAuBL,mBAAAA,CAAqB;AACnD,QAAA,MAAMM,aAAaD,mBAAAA,CAAoBhE,IAAI,CAACkE,OAAO,CAAC,eAAA,EAAiB,EAAA,CAAA;QAErE,IAAI;AACA,YAAA,MAAMhE,qBAAqB,MAAMN,OAAAA,CAAQO,QAAQ,CAAC6D,mBAAAA,CAAoBhE,IAAI,EAAE,OAAA,CAAA;AAC5E,YAAA,MAAMI,MAAAA,GAASC,aAAAA,CAAcH,kBAAAA,EAAoB8D,mBAAAA,CAAoBhE,IAAI,CAAA;AACzE,YAAA,MAAMM,WAAAA,GAAcC,mBAAAA,CAAoBH,MAAAA,EAAQ4D,mBAAAA,CAAoBhE,IAAI,CAAA;YAExE,IAAI,CAACM,WAAAA,CAAYa,IAAI,EAAE;;AAGvB,YAAA,MAAMsD,eAAAA,GAAkB;AAAC,gBAAA,cAAA;AAAgB,gBAAA,iBAAA;AAAmB,gBAAA,kBAAA;AAAoB,gBAAA;AAAuB,aAAA;AACvG,YAAA,MAAMC,aAAAA,GAAgBD,eAAAA,CAAgB1C,IAAI,CAAC4C,CAAAA,OAAAA,GACvCrE,WAAW,CAACqE,OAAAA,CAAQ,IAAIrE,WAAW,CAACqE,OAAAA,CAAQ,CAACJ,iBAAAA,CAAkB,CAAA;AAGnE,YAAA,IAAIG,aAAAA,IAAiBpE,WAAAA,CAAYa,IAAI,KAAKoD,iBAAAA,EAAmB;AACzDC,gBAAAA,iBAAAA,CAAkBjD,IAAI,CAAC;AACnBJ,oBAAAA,IAAAA,EAAMb,YAAYa,IAAI;oBACtBnB,IAAAA,EAAMiE;AACV,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOxC,KAAAA,EAAY;AACjB5B,YAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,gBAAgB,EAAEsC,mBAAAA,CAAoBhE,IAAI,CAAC,EAAE,EAAEyB,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC/E,QAAA;AACJ,IAAA;IAEA,OAAO6C,iBAAAA;AACX,CAAA;AAEA,MAAMI,eAAAA,GAAkB,OAAOC,SAAAA,EAAmBC,eAAAA,GAAAA;QACTD,eAAAA,EAUXA,eAAAA;IAV1B,MAAMzC,QAAAA,GAAWyC,SAAAA,CAAUE,MAAM,KAAA,CAAIF,eAAAA,GAAAA,SAAAA,CAAUG,IAAI,MAAA,IAAA,IAAdH,eAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAAA,CAAgBE,MAAM,CAAA,IAAI,KAAA;AAC/D,IAAA,MAAMlF,SAASoF,eAAAA,CAAgB7C,QAAAA,CAAAA;AAC/B,IAAA,MAAMxC,UAAUsF,MAAAA,CAAc;AAAEC,QAAAA,GAAAA,EAAKtF,OAAOgD;AAAK,KAAA,CAAA;;AAGjD,IAAA,IAAIiC,oBAAoB,QAAA,EAAU;AAC9B,QAAA,OAAO,MAAMM,aAAAA,CAAcP,SAAAA,CAAAA;AAC/B,IAAA;;IAGA,MAAMpB,iBAAAA,GAAoBoB,EAAAA,eAAAA,GAAAA,SAAAA,CAAUQ,IAAI,MAAA,IAAA,IAAdR,eAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAAA,CAAgBS,WAAW,KAAI;AAACC,QAAAA,OAAAA,CAAQC,GAAG;AAAG,KAAA;IAExE,IAAI/B,iBAAAA,CAAkB3B,MAAM,KAAK,CAAA,EAAG;QAChCjC,MAAAA,CAAOgD,IAAI,CAAC,CAAC,wBAAwB,EAAEY,iBAAiB,CAAC,EAAE,CAAA,CAAE,CAAA;IACjE,CAAA,MAAO;QACH5D,MAAAA,CAAOgD,IAAI,CAAC,CAAC,yBAAyB,EAAEY,iBAAAA,CAAkBxD,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC1E,IAAA;;AAGA,IAAA,IAAI,CAAC6E,eAAAA,EAAiB;AA8DWD,QAAAA,IAAAA,gBAAAA;AA7D7BhF,QAAAA,MAAAA,CAAOgD,IAAI,CAAC,qCAAA,CAAA;;QAGZ,MAAM4C,UAAAA,GAAaF,QAAQC,GAAG,EAAA;AAC9B,QAAA,MAAMzF,eAAAA,GAAkB,CAAA,EAAG0F,UAAAA,CAAW,aAAa,CAAC;QAEpD,IAAIC,kBAAAA;QACJ,IAAI;AACA,YAAA,MAAMxF,kBAAAA,GAAqB,MAAMN,OAAAA,CAAQO,QAAQ,CAACJ,eAAAA,EAAiB,OAAA,CAAA;YACnE,MAAMK,MAAAA,GAASC,cAAcH,kBAAAA,EAAoBH,eAAAA,CAAAA;AACjD2F,YAAAA,kBAAAA,GAAqBnF,oBAAoBH,MAAAA,EAAQL,eAAAA,CAAAA;AACrD,QAAA,CAAA,CAAE,OAAO0B,KAAAA,EAAY;AACjB,YAAA,MAAME,UAAU,CAAC,kDAAkD,EAAEF,KAAAA,CAAME,OAAO,CAAA,CAAE;AACpF9B,YAAAA,MAAAA,CAAO4B,KAAK,CAACE,OAAAA,CAAAA;YACb,OAAOA,OAAAA;AACX,QAAA;QAEA,IAAI,CAAC+D,kBAAAA,CAAmBvE,IAAI,EAAE;AAC1B,YAAA,MAAMQ,OAAAA,GAAU,qCAAA;AAChB9B,YAAAA,MAAAA,CAAO4B,KAAK,CAACE,OAAAA,CAAAA;YACb,OAAOA,OAAAA;AACX,QAAA;;AAGA,QAAA,MAAMgE,YAAAA,GAAeD,kBAAAA,CAAmBvE,IAAI,CAACF,UAAU,CAAC,GAAA,CAAA,GAClDyE,kBAAAA,CAAmBvE,IAAI,CAACC,KAAK,CAAC,GAAA,CAAI,CAAC,EAAE,GACrC,IAAA;AAEN,QAAA,IAAI,CAACuE,YAAAA,EAAc;AACf,YAAA,MAAMhE,OAAAA,GAAU,kFAAA;AAChB9B,YAAAA,MAAAA,CAAO6B,IAAI,CAACC,OAAAA,CAAAA;YACZ,OAAOA,OAAAA;AACX,QAAA;AAEA9B,QAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,iBAAiB,EAAE6C,kBAAAA,CAAmBvE,IAAI,CAAC,SAAS,EAAEwE,YAAAA,CAAa,CAAC,CAAC,CAAA;;QAGlF,IAAI;AACA,YAAA,IAAIvD,QAAAA,EAAU;AACVvC,gBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,kDAAkD,CAAC,CAAA;YACpE,CAAA,MAAO;gBACHhD,MAAAA,CAAO2C,OAAO,CAAC,CAAC,+BAA+B,EAAEkD,kBAAAA,CAAmBvE,IAAI,CAAC,YAAY,CAAC,CAAA;AACtF,gBAAA,MAAMyE,GAAAA,CAAI,UAAA,CAAA;AACV/F,gBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,eAAe,EAAE6C,kBAAAA,CAAmBvE,IAAI,CAAA,CAAE,CAAA;AAC3D,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOM,KAAAA,EAAY;AACjB5B,YAAAA,MAAAA,CAAO4B,KAAK,CAAC,CAAC,sBAAsB,EAAEiE,kBAAAA,CAAmBvE,IAAI,CAAC,EAAE,EAAEM,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AACjF,YAAA,MAAM,IAAI4B,KAAAA,CAAM,CAAC,oBAAoB,EAAEmC,kBAAAA,CAAmBvE,IAAI,CAAC,EAAE,EAAEM,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AACtF,QAAA;;AAGA,QAAA,MAAMnB,eAAAA,GAAkB;AACpB,YAAA,GAAGkF,mBAAmBjF,YAAY;AAClC,YAAA,GAAGiF,mBAAmBhF;AAC1B,SAAA;AAEA,QAAA,MAAMmF,qBAAAA,GAAwB/E,MAAAA,CAAOgF,IAAI,CAACtF,eAAAA,CAAAA,CAAiBuF,MAAM,CAACC,CAAAA,OAAAA,GAC9DA,OAAAA,CAAQ/E,UAAU,CAAC0E,YAAAA,GAAe,GAAA,CAAA,CAAA;;QAItC,MAAM9D,oBAAAA,GAAuBgD,CAAAA,CAAAA,gBAAAA,GAAAA,SAAAA,CAAUG,IAAI,cAAdH,gBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,gBAAAA,CAAgBoB,SAAS,KAAI,EAAE;QAC5D,MAAMC,oBAAAA,GAAuBpF,MAAAA,CAAOgF,IAAI,CAACtF,eAAAA,CAAAA,CAAiBuF,MAAM,CAACC,CAAAA,OAAAA,GAC7DpE,0BAAAA,CAA2BoE,OAAAA,EAASnE,oBAAAA,CAAAA,CAAAA;AAGxC,QAAA,MAAMsE,qBAAAA,GAAwB;AAAIN,YAAAA,GAAAA,qBAAAA;AAA0BK,YAAAA,GAAAA;AAAqB,SAAA;QAEjF,IAAIC,qBAAAA,CAAsBrE,MAAM,KAAK,CAAA,EAAG;AACpCjC,YAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,iDAAiD,EAAE8C,YAAAA,CAAAA,CAAc,CAAA;AAC9E,YAAA,IAAIvD,QAAAA,EAAU;gBACV,OAAO,CAAC,uDAAuD,CAAC;YACpE,CAAA,MAAO;AACH,gBAAA,OAAO,CAAC,YAAY,EAAEsD,mBAAmBvE,IAAI,CAAC,yBAAyB,CAAC;AAC5E,YAAA;AACJ,QAAA;AAEAtB,QAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,MAAM,EAAEgD,qBAAAA,CAAsB/D,MAAM,CAAC,0BAA0B,EAAE+D,qBAAAA,CAAsB5F,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;QAChH,IAAIiG,oBAAAA,CAAqBpE,MAAM,GAAG,CAAA,EAAG;AACjCjC,YAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,MAAM,EAAEqD,oBAAAA,CAAqBpE,MAAM,CAAC,0CAA0C,EAAEoE,oBAAAA,CAAqBjG,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAClI,QAAA;;AAGA,QAAA,IAAImG,yBAAoD,EAAC;QACzD,IAAI;AACA,YAAA,IAAIhE,QAAAA,EAAU;AACVvC,gBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,+EAA+E,CAAC,CAAA;gBAC7FhD,MAAAA,CAAOgD,IAAI,CAAC,CAAC,6CAA6C,EAAEsD,qBAAAA,CAAsBlG,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC9F,gBAAA,OAAO,CAAC,6CAA6C,EAAEkG,sBAAsBrE,MAAM,CAAC,aAAa,CAAC;YACtG,CAAA,MAAO;AACHjC,gBAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,kDAAkD,CAAC,CAAA;gBACnE,MAAM6D,MAAAA,GAAS,MAAMT,GAAAA,CAAI,qBAAA,CAAA;AACzB,gBAAA,MAAMU,YAAY,OAAOD,MAAAA,KAAW,QAAA,GAAWA,MAAAA,GAASA,OAAOE,MAAM;;AAGrE,gBAAA,MAAMC,cAAAA,GAAiBF,SAAAA,CAAUG,IAAI,EAAA,CAAGrF,KAAK,CAAC,IAAA,CAAA,CAAM2E,MAAM,CAACW,CAAAA,IAAAA,GAAQA,IAAAA,CAAKD,IAAI,EAAA,KAAO,EAAA,CAAA;;gBAGnF,KAAK,MAAME,WAAWH,cAAAA,CAAgB;oBAClC,IAAI;;AAEA,wBAAA,MAAMzG,kBAAkB,CAAA,EAAG4G,OAAAA,CAAQF,IAAI,EAAA,CAAG,aAAa,CAAC;AACxD,wBAAA,MAAMvG,kBAAAA,GAAqB,MAAMN,OAAAA,CAAQO,QAAQ,CAACJ,eAAAA,EAAiB,OAAA,CAAA;wBACnE,MAAMK,MAAAA,GAASC,cAAcH,kBAAAA,EAAoBH,eAAAA,CAAAA;wBACjD,MAAMO,WAAAA,GAAcC,oBAAoBH,MAAAA,EAAQL,eAAAA,CAAAA;wBAEhD,IAAIO,WAAAA,CAAYa,IAAI,EAAE;AAClBiF,4BAAAA,sBAAsB,CAAC9F,WAAAA,CAAYa,IAAI,CAAC,GAAGwF,QAAQF,IAAI,EAAA;AAC3D,wBAAA;AACJ,oBAAA,CAAA,CAAE,OAAOG,YAAAA,EAAmB;wBACxB/G,MAAAA,CAAO2C,OAAO,CAAC,CAAC,iCAAiC,EAAEmE,QAAQ,EAAE,EAAEC,YAAAA,CAAajF,OAAO,CAAA,CAAE,CAAA;AACzF,oBAAA;AACJ,gBAAA;AAEA,gBAAA,MAAMkF,WAAAA,GAAc/F,MAAAA,CAAOgF,IAAI,CAACM,wBAAwBtE,MAAM;AAC9DjC,gBAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,MAAM,EAAEqE,WAAAA,CAAY,2BAA2B,CAAC,CAAA;AACpE,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOpF,KAAAA,EAAY;AACjB5B,YAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,4DAA4D,EAAED,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC1FyE,YAAAA,sBAAAA,GAAyB,EAAC;AAC9B,QAAA;;AAGA,QAAA,MAAMtG,qBAA+B,EAAE;QAEvC,KAAK,MAAMkG,WAAWG,qBAAAA,CAAuB;YACzC,MAAMjE,UAAAA,GAAakE,sBAAsB,CAACJ,OAAAA,CAAQ;AAClD,YAAA,IAAI9D,UAAAA,EAAY;gBACZ,IAAI;oBACArC,MAAAA,CAAO2C,OAAO,CAAC,CAAC,oBAAoB,EAAEwD,OAAAA,CAAQ,MAAM,EAAE9D,UAAAA,CAAAA,CAAY,CAAA;;AAGlE,oBAAA,MAAM4E,UAAU,MAAM7E,kBAAAA,CAAmB+D,OAAAA,EAAS9D,UAAAA,EAAYuD,YAAY5F,MAAAA,EAAQuC,QAAAA,CAAAA;AAElF,oBAAA,IAAI0E,OAAAA,EAAS;AACTjH,wBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,qBAAqB,EAAEmD,OAAAA,CAAAA,CAAS,CAAA;AAC7ClG,wBAAAA,kBAAAA,CAAmByB,IAAI,CAACyE,OAAAA,CAAAA;oBAC5B,CAAA,MAAO;AACHnG,wBAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,kBAAkB,EAAEsE,OAAAA,CAAAA,CAAS,CAAA;AAC9C,oBAAA;AACJ,gBAAA,CAAA,CAAE,OAAOvE,KAAAA,EAAY;oBACjB5B,MAAAA,CAAO6B,IAAI,CAAC,CAAC,kBAAkB,EAAEsE,QAAQ,EAAE,EAAEvE,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAChE,gBAAA;YACJ,CAAA,MAAO;AACH9B,gBAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,SAAS,EAAEwD,OAAAA,CAAQ,sBAAsB,CAAC,CAAA;AAC9D,YAAA;AACJ,QAAA;AAEA,QAAA,MAAMe,OAAAA,GAAUjH,kBAAAA,CAAmBgC,MAAM,GAAG,CAAA,GACtC,CAAC,YAAY,EAAE4D,kBAAAA,CAAmBvE,IAAI,CAAC,YAAY,EAAErB,kBAAAA,CAAmBgC,MAAM,CAAC,eAAe,EAAEhC,kBAAAA,CAAmBG,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,GAC/H,CAAC,YAAY,EAAEyF,kBAAAA,CAAmBvE,IAAI,CAAC,wCAAwC,CAAC;;QAGtF,IAAI;AACA,YAAA,IAAIiB,QAAAA,EAAU;AACVvC,gBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,gEAAgE,CAAC,CAAA;YAClF,CAAA,MAAO;AACHhD,gBAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,wDAAwD,CAAC,CAAA;AACzE,gBAAA,MAAMoD,GAAAA,CAAI,aAAA,CAAA;AACV/F,gBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,+BAA+B,CAAC,CAAA;AACjD,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOpB,KAAAA,EAAY;AACjB5B,YAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,2CAA2C,EAAED,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC7E,QAAA;AAEA9B,QAAAA,MAAAA,CAAOgD,IAAI,CAACkE,OAAAA,CAAAA;QACZ,OAAOA,OAAAA;AACX,IAAA;;AAGAlH,IAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,0BAA0B,EAAEiC,eAAAA,CAAAA,CAAiB,CAAA;AAE1D,IAAA,MAAM,EAAE5D,KAAK,EAAEvB,WAAW,EAAE,GAAGyD,oBAAAA,CAAqB0B,eAAAA,CAAAA;IACpDjF,MAAAA,CAAO2C,OAAO,CAAC,CAAC,cAAc,EAAEtB,KAAAA,CAAM,WAAW,EAAEvB,WAAAA,IAAe,uBAAA,CAAA,CAAyB,CAAA;;AAG3F,IAAA,MAAM+D,mBAAmB,MAAMF,oBAAAA,CAAqBC,iBAAAA,EAAmBvC,KAAAA,EAAOtB,SAASC,MAAAA,EAAQF,WAAAA,CAAAA;IAE/F,IAAI+D,gBAAAA,CAAiB5B,MAAM,KAAK,CAAA,EAAG;QAC/B,MAAMH,OAAAA,GAAUhC,WAAAA,GACV,CAAC,2BAA2B,EAAEA,aAAa,GAC3C,CAAC,4BAA4B,EAAEuB,KAAAA,CAAAA,CAAO;AAC5CrB,QAAAA,MAAAA,CAAO6B,IAAI,CAACC,OAAAA,CAAAA;QACZ,OAAOA,OAAAA;AACX,IAAA;IAEA9B,MAAAA,CAAOgD,IAAI,CAAC,CAAC,MAAM,EAAEa,gBAAAA,CAAiB5B,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAElE,IAAA,MAAMkF,iBAA2B,EAAE;;IAGnC,MAAMC,cAAAA,GAAiBtH,WAAAA,GACjB+D,gBAAAA,CAAiBqC,MAAM,CAACmB,CAAAA,GAAAA,GAAOA,GAAAA,CAAI/F,IAAI,KAAKxB,WAAAA,CAAAA,GAC5C+D,gBAAAA;IAEN,KAAK,MAAMwD,OAAOD,cAAAA,CAAgB;AAC9BpH,QAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,oBAAoB,EAAEqE,GAAAA,CAAI/F,IAAI,CAAA,CAAE,CAAA;;QAG7C,IAAI;YACA,MAAMgG,WAAAA,GAAc5B,QAAQC,GAAG,EAAA;YAC/BD,OAAAA,CAAQ6B,KAAK,CAACF,GAAAA,CAAIlH,IAAI,CAAA;YAEtB,IAAI;AACA,gBAAA,IAAIoC,QAAAA,EAAU;AACVvC,oBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,kCAAkC,EAAEqE,GAAAA,CAAIlH,IAAI,CAAA,CAAE,CAAA;gBAC/D,CAAA,MAAO;AACHH,oBAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,8BAA8B,EAAE0E,GAAAA,CAAIlH,IAAI,CAAA,CAAE,CAAA;AAC1D,oBAAA,MAAM4F,GAAAA,CAAI,UAAA,CAAA;AACV/F,oBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,iBAAiB,EAAEqE,GAAAA,CAAI/F,IAAI,CAAA,CAAE,CAAA;AAC9C,gBAAA;YACJ,CAAA,QAAU;AACNoE,gBAAAA,OAAAA,CAAQ6B,KAAK,CAACD,WAAAA,CAAAA;AAClB,YAAA;;AAGA,YAAA,MAAM3C,oBAAoB,MAAMF,qBAAAA,CAAsBb,mBAAmByD,GAAAA,CAAI/F,IAAI,EAAEvB,OAAAA,EAASC,MAAAA,CAAAA;YAE5F,IAAI2E,iBAAAA,CAAkB1C,MAAM,KAAK,CAAA,EAAG;AAChCjC,gBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,iCAAiC,EAAEqE,GAAAA,CAAI/F,IAAI,CAAA,CAAE,CAAA;YAC9D,CAAA,MAAO;AACHtB,gBAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,MAAM,EAAE2B,iBAAAA,CAAkB1C,MAAM,CAAC,2BAA2B,EAAEoF,GAAAA,CAAI/F,IAAI,CAAA,CAAE,CAAA;gBAErF,KAAK,MAAMkG,YAAY7C,iBAAAA,CAAmB;oBACtC,IAAI;wBACA,MAAM8C,mBAAAA,GAAsB/B,QAAQC,GAAG,EAAA;wBACvCD,OAAAA,CAAQ6B,KAAK,CAACC,QAAAA,CAASrH,IAAI,CAAA;wBAE3B,IAAI;AACA,4BAAA,IAAIoC,QAAAA,EAAU;AACVvC,gCAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,6BAA6B,EAAEqE,GAAAA,CAAI/F,IAAI,CAAC,MAAM,EAAEkG,QAAAA,CAASrH,IAAI,CAAA,CAAE,CAAA;4BAChF,CAAA,MAAO;AACHH,gCAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,kBAAkB,EAAE0E,GAAAA,CAAI/F,IAAI,CAAC,eAAe,EAAEkG,QAAAA,CAASrH,IAAI,CAAA,CAAE,CAAA;AAC7E,gCAAA,MAAMuH,UAAU,KAAA,EAAO;AAAC,oCAAA,MAAA;AAAQL,oCAAAA,GAAAA,CAAI/F;AAAK,iCAAA,CAAA;AACzCtB,gCAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,mBAAmB,EAAEwE,QAAAA,CAASlG,IAAI,CAAC,IAAI,EAAE+F,GAAAA,CAAI/F,IAAI,CAAA,CAAE,CAAA;AACpE,4BAAA;wBACJ,CAAA,QAAU;AACNoE,4BAAAA,OAAAA,CAAQ6B,KAAK,CAACE,mBAAAA,CAAAA;AAClB,wBAAA;AACJ,oBAAA,CAAA,CAAE,OAAO7F,KAAAA,EAAY;AACjB5B,wBAAAA,MAAAA,CAAO4B,KAAK,CAAC,CAAC,iBAAiB,EAAEyF,IAAI/F,IAAI,CAAC,IAAI,EAAEkG,SAASlG,IAAI,CAAC,EAAE,EAAEM,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AACjF,wBAAA,MAAM,IAAI4B,KAAAA,CAAM,CAAC,eAAe,EAAE2D,IAAI/F,IAAI,CAAC,aAAa,EAAEkG,SAASlG,IAAI,CAAC,EAAE,EAAEM,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC/F,oBAAA;AACJ,gBAAA;AACJ,YAAA;YAEAqF,cAAAA,CAAezF,IAAI,CAAC2F,GAAAA,CAAI/F,IAAI,CAAA;AAChC,QAAA,CAAA,CAAE,OAAOM,KAAAA,EAAY;AACjB5B,YAAAA,MAAAA,CAAO4B,KAAK,CAAC,CAAC,gCAAgC,EAAEyF,GAAAA,CAAI/F,IAAI,CAAC,EAAE,EAAEM,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC5E,YAAA,MAAM,IAAI4B,KAAAA,CAAM,CAAC,8BAA8B,EAAE2D,GAAAA,CAAI/F,IAAI,CAAC,EAAE,EAAEM,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AACjF,QAAA;AACJ,IAAA;AAEA,IAAA,MAAMoF,OAAAA,GAAU,CAAC,oBAAoB,EAAEC,cAAAA,CAAelF,MAAM,CAAC,aAAa,EAAEkF,cAAAA,CAAe/G,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO;;AAGvG,IAAA,IAAI,CAACmC,QAAAA,EAAU;AACXvC,QAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,0DAA0D,CAAC,CAAA;;AAGxE,QAAA,MAAM2E,uBAAuB,IAAIC,GAAAA,EAAAA;QACjC,KAAK,MAAMP,OAAOD,cAAAA,CAAgB;AAC9B,YAAA,MAAMzC,oBAAoB,MAAMF,qBAAAA,CAAsBb,mBAAmByD,GAAAA,CAAI/F,IAAI,EAAEvB,OAAAA,EAASC,MAAAA,CAAAA;YAC5F2E,iBAAAA,CAAkBkD,OAAO,CAACL,CAAAA,QAAAA,GAAYG,qBAAqBG,GAAG,CAACN,SAASrH,IAAI,CAAA,CAAA;AAChF,QAAA;;QAGAiH,cAAAA,CAAeS,OAAO,CAACR,CAAAA,GAAAA,GAAOM,qBAAqBG,GAAG,CAACT,IAAIlH,IAAI,CAAA,CAAA;;QAG/D,KAAK,MAAMN,eAAe8H,oBAAAA,CAAsB;YAC5C,IAAI;gBACA,MAAML,WAAAA,GAAc5B,QAAQC,GAAG,EAAA;AAC/BD,gBAAAA,OAAAA,CAAQ6B,KAAK,CAAC1H,WAAAA,CAAAA;gBAEd,IAAI;AACAG,oBAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,0BAA0B,EAAE9C,WAAAA,CAAAA,CAAa,CAAA;AACzD,oBAAA,MAAMkG,GAAAA,CAAI,aAAA,CAAA;AACV/F,oBAAAA,MAAAA,CAAO2C,OAAO,CAAC,CAAC,oCAAoC,EAAE9C,WAAAA,CAAAA,CAAa,CAAA;gBACvE,CAAA,QAAU;AACN6F,oBAAAA,OAAAA,CAAQ6B,KAAK,CAACD,WAAAA,CAAAA;AAClB,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAO1F,KAAAA,EAAY;gBACjB5B,MAAAA,CAAO6B,IAAI,CAAC,CAAC,6CAA6C,EAAEhC,YAAY,EAAE,EAAE+B,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC/F,YAAA;AACJ,QAAA;QAEA9B,MAAAA,CAAOgD,IAAI,CAAC,CAAC,yCAAyC,EAAE2E,oBAAAA,CAAqBI,IAAI,CAAC,SAAS,CAAC,CAAA;IAChG,CAAA,MAAO;AACH/H,QAAAA,MAAAA,CAAOgD,IAAI,CAAC,CAAC,sFAAsF,CAAC,CAAA;AACxG,IAAA;AAEAhD,IAAAA,MAAAA,CAAOgD,IAAI,CAACkE,OAAAA,CAAAA;IACZ,OAAOA,OAAAA;AACX,CAAA;AAEA;AACA,MAAM3B,gBAAgB,OAAOP,SAAAA,GAAAA;AAKCA,IAAAA,IAAAA,eAAAA;AAJ1B,IAAA,MAAMhF,MAAAA,GAASgI,SAAAA,EAAAA;AACf,IAAA,MAAMjI,UAAUsF,MAAAA,CAAc;AAAEC,QAAAA,GAAAA,EAAKtF,OAAOgD;AAAK,KAAA,CAAA;;IAGjD,MAAMY,iBAAAA,GAAoBoB,EAAAA,eAAAA,GAAAA,SAAAA,CAAUQ,IAAI,MAAA,IAAA,IAAdR,eAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAAA,CAAgBS,WAAW,KAAI;AAACC,QAAAA,OAAAA,CAAQC,GAAG;AAAG,KAAA;IAExE,IAAI/B,iBAAAA,CAAkB3B,MAAM,KAAK,CAAA,EAAG;QAChCjC,MAAAA,CAAOgD,IAAI,CAAC,CAAC,4BAA4B,EAAEY,iBAAiB,CAAC,EAAE,CAAA,CAAE,CAAA;IACrE,CAAA,MAAO;QACH5D,MAAAA,CAAOgD,IAAI,CAAC,CAAC,4BAA4B,EAAEY,iBAAAA,CAAkBxD,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC7E,IAAA;;AAGA,IAAA,IAAI0D,sBAA6B,EAAE;IACnC,KAAK,MAAMC,mBAAmBH,iBAAAA,CAAmB;QAC7C,MAAMI,gBAAAA,GAAmB,MAAMC,uBAAAA,CAAwBF,eAAAA,EAAiBhE,OAAAA,CAAAA;QACxE+D,mBAAAA,GAAsBA,mBAAAA,CAAoBI,MAAM,CAACF,gBAAAA,CAAAA;AACrD,IAAA;AAEA,IAAA,MAAMiE,kBAID,EAAE;IAEP,KAAK,MAAM9D,uBAAuBL,mBAAAA,CAAqB;AACnD,QAAA,MAAMM,aAAaD,mBAAAA,CAAoBhE,IAAI,CAACkE,OAAO,CAAC,eAAA,EAAiB,EAAA,CAAA;QAErE,IAAI;AACA,YAAA,MAAMhE,qBAAqB,MAAMN,OAAAA,CAAQO,QAAQ,CAAC6D,mBAAAA,CAAoBhE,IAAI,EAAE,OAAA,CAAA;AAC5E,YAAA,MAAMI,MAAAA,GAASC,aAAAA,CAAcH,kBAAAA,EAAoB8D,mBAAAA,CAAoBhE,IAAI,CAAA;AACzE,YAAA,MAAMM,WAAAA,GAAcC,mBAAAA,CAAoBH,MAAAA,EAAQ4D,mBAAAA,CAAoBhE,IAAI,CAAA;YAExE,IAAI,CAACM,WAAAA,CAAYa,IAAI,EAAE;AAEvB,YAAA,MAAMrB,qBAAqB,MAAML,sBAAAA,CAAuBwE,YAAY3D,WAAAA,CAAYa,IAAI,EAAEvB,OAAAA,EAASC,MAAAA,CAAAA;YAE/F,IAAIC,kBAAAA,CAAmBgC,MAAM,GAAG,CAAA,EAAG;AAC/BgG,gBAAAA,eAAAA,CAAgBvG,IAAI,CAAC;AACjBJ,oBAAAA,IAAAA,EAAMb,YAAYa,IAAI;oBACtBnB,IAAAA,EAAMiE,UAAAA;AACNnE,oBAAAA;AACJ,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAO2B,KAAAA,EAAY;AACjB5B,YAAAA,MAAAA,CAAO6B,IAAI,CAAC,CAAC,gBAAgB,EAAEsC,mBAAAA,CAAoBhE,IAAI,CAAC,EAAE,EAAEyB,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;AAC/E,QAAA;AACJ,IAAA;IAEA,IAAImG,eAAAA,CAAgBhG,MAAM,KAAK,CAAA,EAAG;QAC9B,OAAO,4CAAA;AACX,IAAA;;IAGA,IAAIiG,MAAAA,GAAS,CAAC,MAAM,EAAED,gBAAgBhG,MAAM,CAAC,yCAAyC,CAAC;IAEvF,KAAK,MAAMkG,iBAAiBF,eAAAA,CAAiB;AACzCC,QAAAA,MAAAA,IAAU,CAAC,GAAG,EAAEC,cAAc7G,IAAI,CAAC,EAAE,CAAC;AACtC4G,QAAAA,MAAAA,IAAU,CAAC,SAAS,EAAEC,cAAchI,IAAI,CAAC,EAAE,CAAC;AAE5C,QAAA,IAAIgI,aAAAA,CAAclI,kBAAkB,CAACgC,MAAM,GAAG,CAAA,EAAG;YAC7CiG,MAAAA,IAAU,CAAC,yBAAyB,CAAC;AACrC,YAAA,KAAK,MAAME,GAAAA,IAAOD,aAAAA,CAAclI,kBAAkB,CAAE;AAChD,gBAAA,MAAMoI,IAAAA,GAAOD,GAAAA,CAAI5G,UAAU,GAAG,aAAA,GAAgB,aAAA;AAC9C0G,gBAAAA,MAAAA,IAAU,CAAC,KAAK,EAAEG,IAAAA,CAAK,CAAC,EAAED,GAAAA,CAAIrH,cAAc,CAAC,IAAI,EAAEqH,GAAAA,CAAIzG,UAAU,CAAC,EAAE,CAAC;AACzE,YAAA;AACJ,QAAA;QACAuG,MAAAA,IAAU,IAAA;AACd,IAAA;IAEA,OAAOA,MAAAA;AACX,CAAA;AAEO,MAAMI,OAAAA,GAAU,OAAOtD,SAAAA,EAAmBC,eAAAA,GAAAA;IAC7C,IAAI;AAEgDD,QAAAA,IAAAA,eAAAA;;QAAhD,MAAMuD,oBAAAA,GAAuBtD,qBAAmBD,eAAAA,GAAAA,SAAAA,CAAUG,IAAI,MAAA,IAAA,IAAdH,eAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAgBC,eAAe,CAAA;QAC/E,OAAO,MAAMF,gBAAgBC,SAAAA,EAAWuD,oBAAAA,CAAAA;AAC5C,IAAA,CAAA,CAAE,OAAO3G,KAAAA,EAAY;AACjB,QAAA,MAAM5B,MAAAA,GAASgI,SAAAA,EAAAA;AACfhI,QAAAA,MAAAA,CAAO4B,KAAK,CAAC,CAAC,aAAa,EAAEA,KAAAA,CAAME,OAAO,CAAA,CAAE,CAAA;QAC5C,MAAMF,KAAAA;AACV,IAAA;AACJ;;;;"}
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../src/commands/link.ts"],"sourcesContent":["import { getLogger, getDryRunLogger } from '../logging';\nimport { Config } from '../types';\nimport { run, runSecure } from '../util/child';\nimport {\n findAllPackageJsonFiles\n} from '../util/performance';\nimport { create as createStorage } from '../util/storage';\nimport { safeJsonParse, validatePackageJson } from '../util/validation';\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(`Failed to check linked dependencies in ${packageName}: ${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(`🔧 Fixing symlink: ${targetPath} (was pointing to ${existingLink}, now pointing to ${relativePath})`);\n await fs.unlink(targetPath);\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`✅ Fixed symlink: ${targetPath} -> ${relativePath}`);\n return true;\n }\n } else if (stats.isDirectory()) {\n // It's a directory, remove it\n logger.warn(`⚠️ Removing existing directory to create symlink: ${targetPath}`);\n await fs.rm(targetPath, { recursive: true, force: true });\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`✅ Created symlink: ${targetPath} -> ${relativePath}`);\n return true;\n } else {\n // It's a file, remove it\n logger.warn(`⚠️ Removing existing file to create symlink: ${targetPath}`);\n await fs.unlink(targetPath);\n await fs.symlink(relativePath, targetPath, 'dir');\n logger.info(`✅ Created symlink: ${targetPath} -> ${relativePath}`);\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(`Failed to create symlink for ${packageName}: ${error.message}`);\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(`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.link?.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage({ log: logger.info });\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(`Analyzing workspace at: ${targetDirectories[0]}`);\n } else {\n logger.info(`Analyzing workspaces at: ${targetDirectories.join(', ')}`);\n }\n\n // If no package argument provided, use new smart same-scope linking behavior\n if (!packageArgument) {\n logger.info('🔗 Smart linking current project...');\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 = `No valid package.json found in current directory: ${error.message}`;\n logger.error(message);\n return message;\n }\n\n if (!currentPackageJson.name) {\n const message = 'package.json must have a name field';\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 = 'Current package must have a scoped name (e.g., @scope/package) for smart linking';\n logger.warn(message);\n return message;\n }\n\n logger.info(`Current package: ${currentPackageJson.name} (scope: ${currentScope})`);\n\n // Step 1: Link the current package globally\n try {\n if (isDryRun) {\n logger.info(`DRY RUN: Would run 'npm link' in current directory`);\n } else {\n logger.verbose(`Running 'npm link' to register ${currentPackageJson.name} globally...`);\n await run('npm link');\n logger.info(`✅ Self-linked: ${currentPackageJson.name}`);\n }\n } catch (error: any) {\n logger.error(`❌ Failed to self-link ${currentPackageJson.name}: ${error.message}`);\n throw new Error(`Failed to self-link ${currentPackageJson.name}: ${error.message}`);\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 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(`✅ Linked dependency: ${depName}`);\n linkedDependencies.push(depName);\n } else {\n logger.warn(`⚠️ Failed to link ${depName}`);\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(`✅ Regenerated package-lock.json`);\n }\n } catch (error: any) {\n logger.warn(`⚠️ Failed to regenerate package-lock.json: ${error.message}`);\n }\n\n logger.info(summary);\n return summary;\n }\n\n // New scope-based linking behavior\n logger.info(`🔗 Linking scope/package: ${packageArgument}`);\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(`✅ Source linked: ${pkg.name}`);\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(`✅ Consumer linked: ${consumer.name} -> ${pkg.name}`);\n }\n } finally {\n process.chdir(consumerOriginalCwd);\n }\n } catch (error: any) {\n logger.error(`❌ Failed to link ${pkg.name} in ${consumer.name}: ${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(`❌ Failed to link source package ${pkg.name}: ${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(`🔄 Regenerating package-lock.json files in all packages (lockfile-only)...`);\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(`✅ Regenerated package-lock.json in: ${packagePath}`);\n } finally {\n process.chdir(originalCwd);\n }\n } catch (error: any) {\n logger.warn(`⚠️ Failed to regenerate package-lock.json in ${packagePath}: ${error.message}`);\n }\n }\n\n logger.info(`✅ Regenerated package-lock.json files in ${allConsumingPackages.size} packages`);\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({ log: logger.info });\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"],"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","log","executeStatus","tree","directories","process","cwd","currentDir","currentPackageJson","currentScope","run","sameScopeDependencies","keys","filter","depName","externals","externalDependencies","allDependenciesToLink","globallyLinkedPackages","result","resultStr","stdout","directoryPaths","trim","line","dirPath","packageError","linkedCount","success","summary","linkedPackages","packagesToLink","pkg","originalCwd","chdir","consumer","consumerOriginalCwd","runSecure","allConsumingPackages","Set","forEach","add","size","getLogger","packageStatuses","output","packageStatus","dep","type","execute","finalPackageArgument"],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os__default from 'os';
|
|
2
2
|
import path__default from 'path';
|
|
3
3
|
|
|
4
|
-
const VERSION = '1.2.
|
|
4
|
+
const VERSION = '1.2.4 (HEAD/076b466 T:v1.2.4 2025-08-20 13:25:50 -0700) linux x64 v22.18.0';
|
|
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';
|