@eldrforge/kodrdriv 1.2.26 → 1.2.28
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/AI-FRIENDLY-LOGGING-GUIDE.md +237 -0
- package/AI-LOGGING-MIGRATION-COMPLETE.md +371 -0
- package/ALREADY-PUBLISHED-PACKAGES-FIX.md +264 -0
- package/AUDIT-BRANCHES-PROGRESS-FIX.md +90 -0
- package/AUDIT-EXAMPLE-OUTPUT.md +113 -0
- package/CHECKPOINT-RECOVERY-FIX.md +450 -0
- package/LOGGING-MIGRATION-STATUS.md +186 -0
- package/PARALLEL-PUBLISH-FIXES-IMPLEMENTED.md +405 -0
- package/PARALLEL-PUBLISH-IMPROVEMENTS-IMPLEMENTED.md +439 -0
- package/PARALLEL-PUBLISH-QUICK-REFERENCE.md +375 -0
- package/PARALLEL_EXECUTION_FIX.md +2 -2
- package/PUBLISH_IMPROVEMENTS_IMPLEMENTED.md +294 -0
- package/VERSION-AUDIT-FIX.md +333 -0
- package/dist/application.js +6 -6
- package/dist/application.js.map +1 -1
- package/dist/arguments.js +43 -13
- package/dist/arguments.js.map +1 -1
- package/dist/commands/audio-commit.js +18 -18
- package/dist/commands/audio-commit.js.map +1 -1
- package/dist/commands/audio-review.js +32 -32
- package/dist/commands/audio-review.js.map +1 -1
- package/dist/commands/clean.js +9 -9
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/commit.js +20 -20
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/development.js +91 -90
- package/dist/commands/development.js.map +1 -1
- package/dist/commands/link.js +36 -36
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/publish.js +345 -225
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/release.js +14 -14
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/review.js +15 -17
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/select-audio.js +5 -5
- package/dist/commands/select-audio.js.map +1 -1
- package/dist/commands/tree.js +75 -34
- package/dist/commands/tree.js.map +1 -1
- package/dist/commands/unlink.js +39 -39
- package/dist/commands/unlink.js.map +1 -1
- package/dist/commands/updates.js +150 -14
- package/dist/commands/updates.js.map +1 -1
- package/dist/commands/versions.js +14 -13
- package/dist/commands/versions.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/content/diff.js +5 -5
- package/dist/content/diff.js.map +1 -1
- package/dist/content/files.js +2 -2
- package/dist/content/files.js.map +1 -1
- package/dist/content/log.js +3 -3
- package/dist/content/log.js.map +1 -1
- package/dist/execution/CommandValidator.js +6 -6
- package/dist/execution/CommandValidator.js.map +1 -1
- package/dist/execution/DynamicTaskPool.js +33 -10
- package/dist/execution/DynamicTaskPool.js.map +1 -1
- package/dist/execution/RecoveryManager.js +99 -21
- package/dist/execution/RecoveryManager.js.map +1 -1
- package/dist/execution/TreeExecutionAdapter.js +65 -48
- package/dist/execution/TreeExecutionAdapter.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/util/checkpointManager.js +4 -4
- package/dist/util/checkpointManager.js.map +1 -1
- package/dist/util/dependencyGraph.js +2 -2
- package/dist/util/dependencyGraph.js.map +1 -1
- package/dist/util/fileLock.js +1 -1
- package/dist/util/fileLock.js.map +1 -1
- package/dist/util/general.js +148 -15
- package/dist/util/general.js.map +1 -1
- package/dist/util/interactive.js +2 -2
- package/dist/util/interactive.js.map +1 -1
- package/dist/util/performance.js.map +1 -1
- package/dist/util/safety.js +13 -13
- package/dist/util/safety.js.map +1 -1
- package/dist/utils/branchState.js +567 -0
- package/dist/utils/branchState.js.map +1 -0
- package/package.json +1 -1
- package/scripts/update-test-log-assertions.js +73 -0
|
@@ -17,11 +17,11 @@ const execute = async (runConfig)=>{
|
|
|
17
17
|
if (isDryRun) {
|
|
18
18
|
try {
|
|
19
19
|
const configPath = getUnplayableConfigPath();
|
|
20
|
-
logger.info('Would start audio device selection
|
|
21
|
-
logger.info('Would save
|
|
20
|
+
logger.info('AUDIO_SELECT_DRY_RUN: Would start audio device selection | Mode: dry-run | Purpose: Choose input device');
|
|
21
|
+
logger.info('AUDIO_SELECT_SAVE_DRY_RUN: Would save device to config | Mode: dry-run | Path: %s', configPath);
|
|
22
22
|
return 'Audio device selection completed (dry run)';
|
|
23
23
|
} catch (error) {
|
|
24
|
-
logger.warn('Error determining config path: %s', error.message);
|
|
24
|
+
logger.warn('AUDIO_SELECT_CONFIG_PATH_ERROR: Error determining config path | Error: %s | Impact: Cannot show save location', error.message);
|
|
25
25
|
return 'Audio device selection completed (dry run)';
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -32,11 +32,11 @@ const execute = async (runConfig)=>{
|
|
|
32
32
|
} catch (error) {
|
|
33
33
|
// Check if this is a home directory error
|
|
34
34
|
if (error.message && error.message.includes('Failed to determine home directory')) {
|
|
35
|
-
logger.error('
|
|
35
|
+
logger.error('AUDIO_SELECT_FAILED: Audio device selection failed | Error: %s', error.message);
|
|
36
36
|
throw new Error(`Failed to determine home directory: ${error.message}`);
|
|
37
37
|
} else {
|
|
38
38
|
const errorMessage = error.message || error.toString();
|
|
39
|
-
logger.error('
|
|
39
|
+
logger.error('AUDIO_SELECT_COMMAND_FAILED: Audio device selection command failed | Error: %s | Status: failed', errorMessage);
|
|
40
40
|
throw new Error(`Audio device selection failed: ${errorMessage}`);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-audio.js","sources":["../../src/commands/select-audio.ts"],"sourcesContent":["#!/usr/bin/env node\nimport path from 'path';\nimport os from 'os';\nimport { getDryRunLogger } from '../logging';\nimport { Config } from '../types';\nimport { selectAndConfigureAudioDevice } from '@theunwalked/unplayable';\n\nconst getUnplayableConfigPath = (): string => {\n try {\n return path.join(os.homedir(), '.unplayable', 'audio-device.json');\n } catch (error: any) {\n throw new Error(`Failed to determine home directory: ${error.message}`);\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n if (isDryRun) {\n try {\n const configPath = getUnplayableConfigPath();\n logger.info('Would start audio device selection process');\n logger.info('Would save selected device to %s', configPath);\n return 'Audio device selection completed (dry run)';\n } catch (error: any) {\n logger.warn('Error determining config path: %s', error.message);\n return 'Audio device selection completed (dry run)';\n }\n }\n\n try {\n const preferencesDir = path.join(os.homedir(), '.unplayable');\n const result = await selectAndConfigureAudioDevice(preferencesDir, logger, runConfig.debug);\n return result;\n } catch (error: any) {\n // Check if this is a home directory error\n if (error.message && error.message.includes('Failed to determine home directory')) {\n logger.error('❌ %s', error.message);\n throw new Error(`Failed to determine home directory: ${error.message}`);\n } else {\n const errorMessage = error.message || error.toString();\n logger.error('❌ Audio device selection failed: %s', errorMessage);\n throw new Error(`Audio device selection failed: ${errorMessage}`);\n }\n }\n};\n"],"names":["getUnplayableConfigPath","path","join","os","homedir","error","Error","message","execute","runConfig","isDryRun","dryRun","logger","getDryRunLogger","configPath","info","warn","preferencesDir","result","selectAndConfigureAudioDevice","debug","includes","errorMessage","toString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"select-audio.js","sources":["../../src/commands/select-audio.ts"],"sourcesContent":["#!/usr/bin/env node\nimport path from 'path';\nimport os from 'os';\nimport { getDryRunLogger } from '../logging';\nimport { Config } from '../types';\nimport { selectAndConfigureAudioDevice } from '@theunwalked/unplayable';\n\nconst getUnplayableConfigPath = (): string => {\n try {\n return path.join(os.homedir(), '.unplayable', 'audio-device.json');\n } catch (error: any) {\n throw new Error(`Failed to determine home directory: ${error.message}`);\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n if (isDryRun) {\n try {\n const configPath = getUnplayableConfigPath();\n logger.info('AUDIO_SELECT_DRY_RUN: Would start audio device selection | Mode: dry-run | Purpose: Choose input device');\n logger.info('AUDIO_SELECT_SAVE_DRY_RUN: Would save device to config | Mode: dry-run | Path: %s', configPath);\n return 'Audio device selection completed (dry run)';\n } catch (error: any) {\n logger.warn('AUDIO_SELECT_CONFIG_PATH_ERROR: Error determining config path | Error: %s | Impact: Cannot show save location', error.message);\n return 'Audio device selection completed (dry run)';\n }\n }\n\n try {\n const preferencesDir = path.join(os.homedir(), '.unplayable');\n const result = await selectAndConfigureAudioDevice(preferencesDir, logger, runConfig.debug);\n return result;\n } catch (error: any) {\n // Check if this is a home directory error\n if (error.message && error.message.includes('Failed to determine home directory')) {\n logger.error('AUDIO_SELECT_FAILED: Audio device selection failed | Error: %s', error.message);\n throw new Error(`Failed to determine home directory: ${error.message}`);\n } else {\n const errorMessage = error.message || error.toString();\n logger.error('AUDIO_SELECT_COMMAND_FAILED: Audio device selection command failed | Error: %s | Status: failed', errorMessage);\n throw new Error(`Audio device selection failed: ${errorMessage}`);\n }\n }\n};\n"],"names":["getUnplayableConfigPath","path","join","os","homedir","error","Error","message","execute","runConfig","isDryRun","dryRun","logger","getDryRunLogger","configPath","info","warn","preferencesDir","result","selectAndConfigureAudioDevice","debug","includes","errorMessage","toString"],"mappings":";;;;;;AAOA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA0B,CAAA,CAAA,CAAA,CAAA,CAAA;IAC5B,CAAA,CAAA,CAAA,CAAI,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAKC,CAAAA,CAAAA,CAAAA,CAAI,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,mBAAA,CAAA,CAAA;AAClD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,CAAA,CAAED,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAE,CAAA,CAAA;AAC1E,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IAC1B,MAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWD,SAAAA,CAAUE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACrC,CAAA,CAAA,CAAA,CAAA,MAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBH,QAAAA,CAAAA,CAAAA;AAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIA,QAAAA,CAAAA,CAAU,CAAA;QACV,CAAA,CAAA,CAAA,CAAI,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAad,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACnBY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOG,CAAAA,CAAAA,CAAAA,CAAI,CAAC,yGAAA,CAAA,CAAA;YACZH,MAAAA,CAAOG,CAAAA,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqFD,UAAAA,CAAAA,CAAAA;YACjG,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA;AACjBO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOI,CAAAA,CAAAA,CAAAA,CAAI,CAAC,+GAAA,CAAA,CAAiHX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA;YAC1I,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA;IAEA,CAAA,CAAA,CAAA,CAAI,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAiBhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKC,CAAAA,CAAAA,CAAAA,CAAI,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAI,aAAA,CAAA,CAAA;AAC/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA8BF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAUW,KAAK,CAAA,CAAA;QAC1F,OAAOF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA;;QAEjB,CAAA,CAAA,CAAA,CAAIA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAIF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAACc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuC,CAAA;AAC/ET,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOP,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAC,gEAAA,CAAA,CAAkEA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA;AAC5F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAID,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,CAAA,CAAED,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAME,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAE,CAAA,CAAA;QAC1E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA;AACH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMe,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAejB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAME,OAAO,CAAA,CAAA,CAAA,CAAIF,CAAAA,CAAAA,CAAAA,CAAAA,EAAMkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA;YACpDX,MAAAA,CAAOP,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmGiB,YAAAA,CAAAA,CAAAA;AAChH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAIhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAC,+BAA+B,CAAA,CAAEgB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA;AACpE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA;;"}
|
package/dist/commands/tree.js
CHANGED
|
@@ -629,12 +629,13 @@ const executePackage = async (packageName, packageInfo, commandToRun, runConfig,
|
|
|
629
629
|
setTimeout(()=>reject(new Error(`Command timed out after ${commandTimeoutMs / 60000} minutes`)), commandTimeoutMs);
|
|
630
630
|
});
|
|
631
631
|
try {
|
|
632
|
-
const { stdout } = await Promise.race([
|
|
632
|
+
const { stdout, stderr } = await Promise.race([
|
|
633
633
|
commandPromise,
|
|
634
634
|
commandTimeoutPromise
|
|
635
635
|
]);
|
|
636
636
|
// Detect explicit skip marker from publish to avoid propagating versions
|
|
637
|
-
|
|
637
|
+
// Check both stdout (where we now write it) and stderr (winston logger output, for backward compat)
|
|
638
|
+
if (builtInCommandName === 'publish' && (stdout && stdout.includes('KODRDRIV_PUBLISH_SKIPPED') || stderr && stderr.includes('KODRDRIV_PUBLISH_SKIPPED'))) {
|
|
638
639
|
packageLogger.info('Publish skipped for this package; will not record or propagate a version.');
|
|
639
640
|
publishWasSkipped = true;
|
|
640
641
|
}
|
|
@@ -842,7 +843,7 @@ const checkTreePublishStatus = async ()=>{
|
|
|
842
843
|
}
|
|
843
844
|
};
|
|
844
845
|
const execute = async (runConfig)=>{
|
|
845
|
-
var _runConfig_tree, _runConfig_tree1, _runConfig_tree2, _runConfig_tree3, _runConfig_tree4, _runConfig_tree5, _runConfig_tree6, _runConfig_tree7, _runConfig_tree8, _runConfig_tree9, _runConfig_tree10, _runConfig_tree11, _runConfig_tree12, _runConfig_tree13, _runConfig_tree14;
|
|
846
|
+
var _runConfig_tree, _runConfig_tree1, _runConfig_tree2, _runConfig_tree3, _runConfig_tree4, _runConfig_tree5, _runConfig_tree6, _runConfig_tree7, _runConfig_tree8, _runConfig_tree9, _runConfig_tree10, _runConfig_tree11, _runConfig_tree12, _runConfig_tree13, _runConfig_tree14, _runConfig_tree15;
|
|
846
847
|
const logger = getLogger();
|
|
847
848
|
const isDryRun = runConfig.dryRun || false;
|
|
848
849
|
const isContinue = ((_runConfig_tree = runConfig.tree) === null || _runConfig_tree === void 0 ? void 0 : _runConfig_tree.continue) || false;
|
|
@@ -865,17 +866,57 @@ const execute = async (runConfig)=>{
|
|
|
865
866
|
logger.info('You can now run the tree command with --continue to resume from the next package.');
|
|
866
867
|
return `Package '${promotePackage}' promoted to completed status.`;
|
|
867
868
|
}
|
|
869
|
+
// Handle audit-branches command
|
|
870
|
+
if ((_runConfig_tree4 = runConfig.tree) === null || _runConfig_tree4 === void 0 ? void 0 : _runConfig_tree4.auditBranches) {
|
|
871
|
+
var _runConfig_tree16, _runConfig_tree17, _runConfig_publish;
|
|
872
|
+
logger.info('🔍 Auditing branch state across all packages...');
|
|
873
|
+
const directories = ((_runConfig_tree16 = runConfig.tree) === null || _runConfig_tree16 === void 0 ? void 0 : _runConfig_tree16.directories) || [
|
|
874
|
+
process.cwd()
|
|
875
|
+
];
|
|
876
|
+
const excludedPatterns = ((_runConfig_tree17 = runConfig.tree) === null || _runConfig_tree17 === void 0 ? void 0 : _runConfig_tree17.exclude) || [];
|
|
877
|
+
let allPackageJsonPaths = [];
|
|
878
|
+
for (const targetDirectory of directories){
|
|
879
|
+
const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);
|
|
880
|
+
allPackageJsonPaths = allPackageJsonPaths.concat(packageJsonPaths);
|
|
881
|
+
}
|
|
882
|
+
if (allPackageJsonPaths.length === 0) {
|
|
883
|
+
return 'No packages found';
|
|
884
|
+
}
|
|
885
|
+
const dependencyGraph = await buildDependencyGraph(allPackageJsonPaths);
|
|
886
|
+
const packages = Array.from(dependencyGraph.packages.values()).map((pkg)=>({
|
|
887
|
+
name: pkg.name,
|
|
888
|
+
path: pkg.path
|
|
889
|
+
}));
|
|
890
|
+
const { auditBranchState, formatAuditResults } = await import('../utils/branchState.js');
|
|
891
|
+
// For publish workflows, check branch consistency, merge conflicts, and existing PRs
|
|
892
|
+
// Don't pass an expected branch - let the audit find the most common branch
|
|
893
|
+
const targetBranch = ((_runConfig_publish = runConfig.publish) === null || _runConfig_publish === void 0 ? void 0 : _runConfig_publish.targetBranch) || 'main';
|
|
894
|
+
logger.info(`Checking for merge conflicts with '${targetBranch}' and existing pull requests...`);
|
|
895
|
+
const auditResult = await auditBranchState(packages, undefined, {
|
|
896
|
+
targetBranch,
|
|
897
|
+
checkPR: true,
|
|
898
|
+
checkConflicts: true
|
|
899
|
+
});
|
|
900
|
+
const formatted = formatAuditResults(auditResult);
|
|
901
|
+
logger.info('\n' + formatted);
|
|
902
|
+
if (auditResult.issuesFound > 0) {
|
|
903
|
+
logger.warn(`\n⚠️ Found issues in ${auditResult.issuesFound} package(s). Review the fixes above.`);
|
|
904
|
+
return `Branch audit complete: ${auditResult.issuesFound} package(s) need attention`;
|
|
905
|
+
}
|
|
906
|
+
logger.info(`\n✅ All ${auditResult.goodPackages} package(s) are in good state!`);
|
|
907
|
+
return `Branch audit complete: All packages OK`;
|
|
908
|
+
}
|
|
868
909
|
// Handle parallel execution recovery commands
|
|
869
910
|
const { loadRecoveryManager } = await import('../execution/RecoveryManager.js');
|
|
870
911
|
// Handle status-parallel command
|
|
871
|
-
if ((
|
|
872
|
-
var
|
|
912
|
+
if ((_runConfig_tree5 = runConfig.tree) === null || _runConfig_tree5 === void 0 ? void 0 : _runConfig_tree5.statusParallel) {
|
|
913
|
+
var _runConfig_tree18, _runConfig_tree19;
|
|
873
914
|
logger.info('📊 Checking parallel execution status...');
|
|
874
915
|
// Need to build dependency graph first
|
|
875
|
-
const directories = ((
|
|
916
|
+
const directories = ((_runConfig_tree18 = runConfig.tree) === null || _runConfig_tree18 === void 0 ? void 0 : _runConfig_tree18.directories) || [
|
|
876
917
|
process.cwd()
|
|
877
918
|
];
|
|
878
|
-
const excludedPatterns = ((
|
|
919
|
+
const excludedPatterns = ((_runConfig_tree19 = runConfig.tree) === null || _runConfig_tree19 === void 0 ? void 0 : _runConfig_tree19.exclude) || [];
|
|
879
920
|
let allPackageJsonPaths = [];
|
|
880
921
|
for (const targetDirectory of directories){
|
|
881
922
|
const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);
|
|
@@ -895,13 +936,13 @@ const execute = async (runConfig)=>{
|
|
|
895
936
|
return status;
|
|
896
937
|
}
|
|
897
938
|
// Handle validate-state command
|
|
898
|
-
if ((
|
|
899
|
-
var
|
|
939
|
+
if ((_runConfig_tree6 = runConfig.tree) === null || _runConfig_tree6 === void 0 ? void 0 : _runConfig_tree6.validateState) {
|
|
940
|
+
var _runConfig_tree20, _runConfig_tree21;
|
|
900
941
|
logger.info('🔍 Validating checkpoint state...');
|
|
901
|
-
const directories = ((
|
|
942
|
+
const directories = ((_runConfig_tree20 = runConfig.tree) === null || _runConfig_tree20 === void 0 ? void 0 : _runConfig_tree20.directories) || [
|
|
902
943
|
process.cwd()
|
|
903
944
|
];
|
|
904
|
-
const excludedPatterns = ((
|
|
945
|
+
const excludedPatterns = ((_runConfig_tree21 = runConfig.tree) === null || _runConfig_tree21 === void 0 ? void 0 : _runConfig_tree21.exclude) || [];
|
|
905
946
|
let allPackageJsonPaths = [];
|
|
906
947
|
for (const targetDirectory of directories){
|
|
907
948
|
const packageJsonPaths = await scanForPackageJsonFiles(targetDirectory, excludedPatterns);
|
|
@@ -934,7 +975,7 @@ const execute = async (runConfig)=>{
|
|
|
934
975
|
return validation.valid ? 'Checkpoint is valid' : 'Checkpoint has issues';
|
|
935
976
|
}
|
|
936
977
|
// Handle parallel execution recovery options (must happen before main execution)
|
|
937
|
-
const hasRecoveryOptions = ((
|
|
978
|
+
const hasRecoveryOptions = ((_runConfig_tree7 = runConfig.tree) === null || _runConfig_tree7 === void 0 ? void 0 : _runConfig_tree7.markCompleted) || ((_runConfig_tree8 = runConfig.tree) === null || _runConfig_tree8 === void 0 ? void 0 : _runConfig_tree8.skipPackages) || ((_runConfig_tree9 = runConfig.tree) === null || _runConfig_tree9 === void 0 ? void 0 : _runConfig_tree9.retryFailed) || ((_runConfig_tree10 = runConfig.tree) === null || _runConfig_tree10 === void 0 ? void 0 : _runConfig_tree10.skipFailed) || ((_runConfig_tree11 = runConfig.tree) === null || _runConfig_tree11 === void 0 ? void 0 : _runConfig_tree11.resetPackage);
|
|
938
979
|
if (hasRecoveryOptions && runConfig.tree) {
|
|
939
980
|
var _runConfig_tree_retry;
|
|
940
981
|
logger.info('🔧 Applying recovery options...');
|
|
@@ -970,10 +1011,10 @@ const execute = async (runConfig)=>{
|
|
|
970
1011
|
}
|
|
971
1012
|
// Handle continue mode
|
|
972
1013
|
if (isContinue) {
|
|
973
|
-
var
|
|
1014
|
+
var _runConfig_tree22;
|
|
974
1015
|
// For parallel execution, the checkpoint is managed by DynamicTaskPool/CheckpointManager
|
|
975
1016
|
// For sequential execution, we use the legacy context file
|
|
976
|
-
const isParallelMode = (
|
|
1017
|
+
const isParallelMode = (_runConfig_tree22 = runConfig.tree) === null || _runConfig_tree22 === void 0 ? void 0 : _runConfig_tree22.parallel;
|
|
977
1018
|
if (!isParallelMode) {
|
|
978
1019
|
// Sequential execution: load legacy context
|
|
979
1020
|
const savedContext = await loadExecutionContext(runConfig.outputDirectory);
|
|
@@ -1017,7 +1058,7 @@ const execute = async (runConfig)=>{
|
|
|
1017
1058
|
executionContext = null;
|
|
1018
1059
|
}
|
|
1019
1060
|
// Check if we're in built-in command mode (tree command with second argument)
|
|
1020
|
-
const builtInCommand = (
|
|
1061
|
+
const builtInCommand = (_runConfig_tree12 = runConfig.tree) === null || _runConfig_tree12 === void 0 ? void 0 : _runConfig_tree12.builtInCommand;
|
|
1021
1062
|
const supportedBuiltInCommands = [
|
|
1022
1063
|
'commit',
|
|
1023
1064
|
'publish',
|
|
@@ -1034,8 +1075,8 @@ const execute = async (runConfig)=>{
|
|
|
1034
1075
|
}
|
|
1035
1076
|
// Handle run subcommand - convert space-separated scripts to npm run commands
|
|
1036
1077
|
if (builtInCommand === 'run') {
|
|
1037
|
-
var
|
|
1038
|
-
const packageArgument = (
|
|
1078
|
+
var _runConfig_tree23;
|
|
1079
|
+
const packageArgument = (_runConfig_tree23 = runConfig.tree) === null || _runConfig_tree23 === void 0 ? void 0 : _runConfig_tree23.packageArgument;
|
|
1039
1080
|
if (!packageArgument) {
|
|
1040
1081
|
throw new Error('run subcommand requires script names. Usage: kodrdriv tree run "clean build test"');
|
|
1041
1082
|
}
|
|
@@ -1058,11 +1099,11 @@ const execute = async (runConfig)=>{
|
|
|
1058
1099
|
runConfig.__scriptsToValidate = scripts;
|
|
1059
1100
|
}
|
|
1060
1101
|
// Determine the target directories - either specified or current working directory
|
|
1061
|
-
const directories = ((
|
|
1102
|
+
const directories = ((_runConfig_tree13 = runConfig.tree) === null || _runConfig_tree13 === void 0 ? void 0 : _runConfig_tree13.directories) || [
|
|
1062
1103
|
process.cwd()
|
|
1063
1104
|
];
|
|
1064
1105
|
// Handle link status subcommand
|
|
1065
|
-
if (builtInCommand === 'link' && ((
|
|
1106
|
+
if (builtInCommand === 'link' && ((_runConfig_tree14 = runConfig.tree) === null || _runConfig_tree14 === void 0 ? void 0 : _runConfig_tree14.packageArgument) === 'status') {
|
|
1066
1107
|
// For tree link status, we want to show status across all packages
|
|
1067
1108
|
logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Running link status across workspace...`);
|
|
1068
1109
|
// Create a config that will be passed to the link command
|
|
@@ -1082,7 +1123,7 @@ const execute = async (runConfig)=>{
|
|
|
1082
1123
|
}
|
|
1083
1124
|
}
|
|
1084
1125
|
// Handle unlink status subcommand
|
|
1085
|
-
if (builtInCommand === 'unlink' && ((
|
|
1126
|
+
if (builtInCommand === 'unlink' && ((_runConfig_tree15 = runConfig.tree) === null || _runConfig_tree15 === void 0 ? void 0 : _runConfig_tree15.packageArgument) === 'status') {
|
|
1086
1127
|
// For tree unlink status, we want to show status across all packages
|
|
1087
1128
|
logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Running unlink status across workspace...`);
|
|
1088
1129
|
// Create a config that will be passed to the unlink command
|
|
@@ -1107,9 +1148,9 @@ const execute = async (runConfig)=>{
|
|
|
1107
1148
|
logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Analyzing workspaces at: ${directories.join(', ')}`);
|
|
1108
1149
|
}
|
|
1109
1150
|
try {
|
|
1110
|
-
var
|
|
1151
|
+
var _runConfig_tree24, _runConfig_tree25, _runConfig_tree26, _runConfig_tree27;
|
|
1111
1152
|
// Get exclusion patterns from config, fallback to empty array
|
|
1112
|
-
const excludedPatterns = ((
|
|
1153
|
+
const excludedPatterns = ((_runConfig_tree24 = runConfig.tree) === null || _runConfig_tree24 === void 0 ? void 0 : _runConfig_tree24.exclude) || [];
|
|
1113
1154
|
if (excludedPatterns.length > 0) {
|
|
1114
1155
|
logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Using exclusion patterns: ${excludedPatterns.join(', ')}`);
|
|
1115
1156
|
}
|
|
@@ -1136,7 +1177,7 @@ const execute = async (runConfig)=>{
|
|
|
1136
1177
|
logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Determining build order...`);
|
|
1137
1178
|
let buildOrder = topologicalSort(dependencyGraph);
|
|
1138
1179
|
// Handle start-from functionality if specified
|
|
1139
|
-
const startFrom = (
|
|
1180
|
+
const startFrom = (_runConfig_tree25 = runConfig.tree) === null || _runConfig_tree25 === void 0 ? void 0 : _runConfig_tree25.startFrom;
|
|
1140
1181
|
if (startFrom) {
|
|
1141
1182
|
logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Looking for start package: ${startFrom}`);
|
|
1142
1183
|
// Resolve the actual package name (can be package name or directory name)
|
|
@@ -1193,7 +1234,7 @@ const execute = async (runConfig)=>{
|
|
|
1193
1234
|
logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Starting execution from package '${startFrom}' (${buildOrder.length} of ${originalLength} packages remaining).`);
|
|
1194
1235
|
}
|
|
1195
1236
|
// Handle stop-at functionality if specified
|
|
1196
|
-
const stopAt = (
|
|
1237
|
+
const stopAt = (_runConfig_tree26 = runConfig.tree) === null || _runConfig_tree26 === void 0 ? void 0 : _runConfig_tree26.stopAt;
|
|
1197
1238
|
if (stopAt) {
|
|
1198
1239
|
logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Looking for stop package: ${stopAt}`);
|
|
1199
1240
|
// Find the package that matches the stopAt directory name
|
|
@@ -1512,8 +1553,8 @@ const execute = async (runConfig)=>{
|
|
|
1512
1553
|
}
|
|
1513
1554
|
// Handle special "checkout" command that switches all packages to specified branch
|
|
1514
1555
|
if (builtInCommand === 'checkout') {
|
|
1515
|
-
var
|
|
1516
|
-
const targetBranch = (
|
|
1556
|
+
var _runConfig_tree28;
|
|
1557
|
+
const targetBranch = (_runConfig_tree28 = runConfig.tree) === null || _runConfig_tree28 === void 0 ? void 0 : _runConfig_tree28.packageArgument;
|
|
1517
1558
|
if (!targetBranch) {
|
|
1518
1559
|
throw new Error('checkout subcommand requires a branch name. Usage: kodrdriv tree checkout <branch-name>');
|
|
1519
1560
|
}
|
|
@@ -1692,12 +1733,12 @@ const execute = async (runConfig)=>{
|
|
|
1692
1733
|
returnOutput = `\nBuild order: ${buildOrder.join(' → ')}\n`;
|
|
1693
1734
|
}
|
|
1694
1735
|
// Execute command if provided (custom command or built-in command)
|
|
1695
|
-
const cmd = (
|
|
1736
|
+
const cmd = (_runConfig_tree27 = runConfig.tree) === null || _runConfig_tree27 === void 0 ? void 0 : _runConfig_tree27.cmd;
|
|
1696
1737
|
// Determine command to execute
|
|
1697
1738
|
let commandToRun;
|
|
1698
1739
|
let isBuiltInCommand = false;
|
|
1699
1740
|
if (builtInCommand) {
|
|
1700
|
-
var
|
|
1741
|
+
var _runConfig_tree29, _runConfig_tree30, _runConfig_tree31;
|
|
1701
1742
|
// Built-in command mode: shell out to kodrdriv subprocess
|
|
1702
1743
|
// Build command with propagated global options
|
|
1703
1744
|
const globalOptions = [];
|
|
@@ -1714,14 +1755,14 @@ const execute = async (runConfig)=>{
|
|
|
1714
1755
|
// Build the command with global options
|
|
1715
1756
|
const optionsString = globalOptions.length > 0 ? ` ${globalOptions.join(' ')}` : '';
|
|
1716
1757
|
// Add package argument for link/unlink/updates commands
|
|
1717
|
-
const packageArg = (
|
|
1758
|
+
const packageArg = (_runConfig_tree29 = runConfig.tree) === null || _runConfig_tree29 === void 0 ? void 0 : _runConfig_tree29.packageArgument;
|
|
1718
1759
|
const packageArgString = packageArg && (builtInCommand === 'link' || builtInCommand === 'unlink' || builtInCommand === 'updates') ? ` "${packageArg}"` : '';
|
|
1719
1760
|
// Add command-specific options
|
|
1720
1761
|
let commandSpecificOptions = '';
|
|
1721
|
-
if (builtInCommand === 'unlink' && ((
|
|
1762
|
+
if (builtInCommand === 'unlink' && ((_runConfig_tree30 = runConfig.tree) === null || _runConfig_tree30 === void 0 ? void 0 : _runConfig_tree30.cleanNodeModules)) {
|
|
1722
1763
|
commandSpecificOptions += ' --clean-node-modules';
|
|
1723
1764
|
}
|
|
1724
|
-
if ((builtInCommand === 'link' || builtInCommand === 'unlink') && ((
|
|
1765
|
+
if ((builtInCommand === 'link' || builtInCommand === 'unlink') && ((_runConfig_tree31 = runConfig.tree) === null || _runConfig_tree31 === void 0 ? void 0 : _runConfig_tree31.externals) && runConfig.tree.externals.length > 0) {
|
|
1725
1766
|
commandSpecificOptions += ` --externals ${runConfig.tree.externals.join(' ')}`;
|
|
1726
1767
|
}
|
|
1727
1768
|
commandToRun = `kodrdriv ${builtInCommand}${optionsString}${packageArgString}${commandSpecificOptions}`;
|
|
@@ -1731,7 +1772,7 @@ const execute = async (runConfig)=>{
|
|
|
1731
1772
|
commandToRun = cmd;
|
|
1732
1773
|
}
|
|
1733
1774
|
if (commandToRun) {
|
|
1734
|
-
var
|
|
1775
|
+
var _runConfig_tree32, _runConfig_tree33;
|
|
1735
1776
|
// Validate scripts for run command before execution
|
|
1736
1777
|
const scriptsToValidate = runConfig.__scriptsToValidate;
|
|
1737
1778
|
if (scriptsToValidate && scriptsToValidate.length > 0) {
|
|
@@ -1750,7 +1791,7 @@ const execute = async (runConfig)=>{
|
|
|
1750
1791
|
}
|
|
1751
1792
|
}
|
|
1752
1793
|
// Validate command for parallel execution if parallel mode is enabled
|
|
1753
|
-
if ((
|
|
1794
|
+
if ((_runConfig_tree32 = runConfig.tree) === null || _runConfig_tree32 === void 0 ? void 0 : _runConfig_tree32.parallel) {
|
|
1754
1795
|
const { CommandValidator } = await import('../execution/CommandValidator.js');
|
|
1755
1796
|
const validation = CommandValidator.validateForParallel(commandToRun, builtInCommand);
|
|
1756
1797
|
CommandValidator.logValidation(validation);
|
|
@@ -1801,7 +1842,7 @@ const execute = async (runConfig)=>{
|
|
|
1801
1842
|
// If continuing, start from where we left off
|
|
1802
1843
|
const startIndex = isContinue && executionContext ? executionContext.completedPackages.length : 0;
|
|
1803
1844
|
// Check if parallel execution is enabled
|
|
1804
|
-
if ((
|
|
1845
|
+
if ((_runConfig_tree33 = runConfig.tree) === null || _runConfig_tree33 === void 0 ? void 0 : _runConfig_tree33.parallel) {
|
|
1805
1846
|
var _runConfig_tree_retry1, _runConfig_tree_retry2, _runConfig_tree_retry3, _runConfig_tree_retry4;
|
|
1806
1847
|
logger.info('🚀 Using parallel execution mode');
|
|
1807
1848
|
// If dry run, show preview instead of executing
|