@eldrforge/kodrdriv 1.2.27 → 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.
Files changed (78) hide show
  1. package/AI-FRIENDLY-LOGGING-GUIDE.md +237 -0
  2. package/AI-LOGGING-MIGRATION-COMPLETE.md +371 -0
  3. package/ALREADY-PUBLISHED-PACKAGES-FIX.md +264 -0
  4. package/AUDIT-BRANCHES-PROGRESS-FIX.md +90 -0
  5. package/AUDIT-EXAMPLE-OUTPUT.md +113 -0
  6. package/CHECKPOINT-RECOVERY-FIX.md +450 -0
  7. package/LOGGING-MIGRATION-STATUS.md +186 -0
  8. package/PARALLEL-PUBLISH-FIXES-IMPLEMENTED.md +405 -0
  9. package/PARALLEL-PUBLISH-QUICK-REFERENCE.md +375 -0
  10. package/PARALLEL_EXECUTION_FIX.md +2 -2
  11. package/PUBLISH_IMPROVEMENTS_IMPLEMENTED.md +4 -5
  12. package/VERSION-AUDIT-FIX.md +333 -0
  13. package/dist/application.js +6 -6
  14. package/dist/application.js.map +1 -1
  15. package/dist/arguments.js +43 -13
  16. package/dist/arguments.js.map +1 -1
  17. package/dist/commands/audio-commit.js +18 -18
  18. package/dist/commands/audio-commit.js.map +1 -1
  19. package/dist/commands/audio-review.js +32 -32
  20. package/dist/commands/audio-review.js.map +1 -1
  21. package/dist/commands/clean.js +9 -9
  22. package/dist/commands/clean.js.map +1 -1
  23. package/dist/commands/commit.js +20 -20
  24. package/dist/commands/commit.js.map +1 -1
  25. package/dist/commands/development.js +88 -89
  26. package/dist/commands/development.js.map +1 -1
  27. package/dist/commands/link.js +36 -36
  28. package/dist/commands/link.js.map +1 -1
  29. package/dist/commands/publish.js +318 -220
  30. package/dist/commands/publish.js.map +1 -1
  31. package/dist/commands/release.js +14 -14
  32. package/dist/commands/release.js.map +1 -1
  33. package/dist/commands/review.js +15 -17
  34. package/dist/commands/review.js.map +1 -1
  35. package/dist/commands/select-audio.js +5 -5
  36. package/dist/commands/select-audio.js.map +1 -1
  37. package/dist/commands/tree.js +75 -34
  38. package/dist/commands/tree.js.map +1 -1
  39. package/dist/commands/unlink.js +39 -39
  40. package/dist/commands/unlink.js.map +1 -1
  41. package/dist/commands/updates.js +150 -14
  42. package/dist/commands/updates.js.map +1 -1
  43. package/dist/commands/versions.js +14 -13
  44. package/dist/commands/versions.js.map +1 -1
  45. package/dist/constants.js +1 -1
  46. package/dist/content/diff.js +5 -5
  47. package/dist/content/diff.js.map +1 -1
  48. package/dist/content/files.js +2 -2
  49. package/dist/content/files.js.map +1 -1
  50. package/dist/content/log.js +3 -3
  51. package/dist/content/log.js.map +1 -1
  52. package/dist/execution/CommandValidator.js +6 -6
  53. package/dist/execution/CommandValidator.js.map +1 -1
  54. package/dist/execution/DynamicTaskPool.js +33 -10
  55. package/dist/execution/DynamicTaskPool.js.map +1 -1
  56. package/dist/execution/RecoveryManager.js +99 -21
  57. package/dist/execution/RecoveryManager.js.map +1 -1
  58. package/dist/execution/TreeExecutionAdapter.js +19 -19
  59. package/dist/execution/TreeExecutionAdapter.js.map +1 -1
  60. package/dist/main.js +2 -2
  61. package/dist/main.js.map +1 -1
  62. package/dist/util/checkpointManager.js +4 -4
  63. package/dist/util/checkpointManager.js.map +1 -1
  64. package/dist/util/dependencyGraph.js +2 -2
  65. package/dist/util/dependencyGraph.js.map +1 -1
  66. package/dist/util/fileLock.js +1 -1
  67. package/dist/util/fileLock.js.map +1 -1
  68. package/dist/util/general.js +148 -15
  69. package/dist/util/general.js.map +1 -1
  70. package/dist/util/interactive.js +2 -2
  71. package/dist/util/interactive.js.map +1 -1
  72. package/dist/util/performance.js.map +1 -1
  73. package/dist/util/safety.js +13 -13
  74. package/dist/util/safety.js.map +1 -1
  75. package/dist/utils/branchState.js +567 -0
  76. package/dist/utils/branchState.js.map +1 -0
  77. package/package.json +1 -1
  78. package/scripts/update-test-log-assertions.js +73 -0
@@ -109,12 +109,12 @@ async function handleInteractiveCommitFeedback(commitMessage, runConfig, promptC
109
109
  // Show configuration status
110
110
  if (senditEnabled) {
111
111
  if (willActuallyCommit) {
112
- logger.info('\n⚙️ SendIt mode is ACTIVE - choosing "Commit" will run git commit automatically');
112
+ logger.info('\nSENDIT_MODE_ACTIVE: SendIt mode enabled | Action: Commit choice will execute git commit automatically | Staged Changes: Available');
113
113
  } else {
114
- logger.info('\n⚙️ SendIt mode is configured but no staged changes available for commit');
114
+ logger.info('\nSENDIT_MODE_NO_CHANGES: SendIt mode configured but no staged changes | Action: Only message save available | Staged Changes: None');
115
115
  }
116
116
  } else {
117
- logger.info('\n⚙️ SendIt mode is NOT active - choosing "Accept" will only save the message');
117
+ logger.info('\nSENDIT_MODE_INACTIVE: SendIt mode not active | Action: Accept choice will only save message | Commit: Manual');
118
118
  }
119
119
  // Get user choice
120
120
  const userChoice = await getUserChoice('\nWhat would you like to do with this commit message?', [
@@ -239,7 +239,7 @@ const saveCommitMessage = async (outputDirectory, summary, storage, logger)=>{
239
239
  try {
240
240
  const outputRootPath = getOutputPath('output', timestampedFilename);
241
241
  await storage.writeFile(outputRootPath, summary, 'utf-8');
242
- logger.info('Saved commit message to output directory fallback: %s', outputRootPath);
242
+ logger.info('COMMIT_MESSAGE_SAVED_FALLBACK: Saved commit message to fallback location | Path: %s | Purpose: Preserve message for later use', outputRootPath);
243
243
  return;
244
244
  } catch (outputError) {
245
245
  logger.warn('Failed to save to output directory fallback: %s', outputError.message);
@@ -265,11 +265,11 @@ const executeInternal = async (runConfig)=>{
265
265
  let userSkippedCommit = false;
266
266
  if ((_runConfig_commit = runConfig.commit) === null || _runConfig_commit === void 0 ? void 0 : _runConfig_commit.add) {
267
267
  if (isDryRun) {
268
- logger.info('Would add all changes to the index with: git add -A');
268
+ logger.info('GIT_ADD_DRY_RUN: Would stage all changes | Mode: dry-run | Command: git add -A');
269
269
  } else {
270
- logger.info('📁 Adding all changes to the index (git add -A)...');
270
+ logger.info('GIT_ADD_STAGING: Adding all changes to index | Command: git add -A | Scope: all files | Purpose: Stage for commit');
271
271
  await run('git add -A');
272
- logger.info(' Successfully staged all changes');
272
+ logger.info('GIT_ADD_SUCCESS: Successfully staged all changes | Command: git add -A | Status: completed');
273
273
  }
274
274
  }
275
275
  // Determine cached state with single, clear logic
@@ -295,10 +295,10 @@ const executeInternal = async (runConfig)=>{
295
295
  const criticalChanges = await hasCriticalExcludedChanges();
296
296
  if (criticalChanges.hasChanges) {
297
297
  var _runConfig_commit10;
298
- logger.info('No changes found with current exclusion patterns, but detected changes to critical files: %s', criticalChanges.files.join(', '));
298
+ logger.info('CRITICAL_FILES_DETECTED: No changes with exclusion patterns, but critical files modified | Files: %s | Action: May need to include critical files', criticalChanges.files.join(', '));
299
299
  if (((_runConfig_commit10 = runConfig.commit) === null || _runConfig_commit10 === void 0 ? void 0 : _runConfig_commit10.sendit) && !isDryRun) {
300
300
  // In sendit mode, automatically include critical files
301
- logger.info('SendIt mode: Including critical files in diff...');
301
+ logger.info('SENDIT_INCLUDING_CRITICAL: SendIt mode including critical files in diff | Purpose: Ensure all important changes are captured');
302
302
  var _runConfig_excludedPatterns1;
303
303
  const minimalPatterns = getMinimalExcludedPatterns((_runConfig_excludedPatterns1 = runConfig.excludedPatterns) !== null && _runConfig_excludedPatterns1 !== void 0 ? _runConfig_excludedPatterns1 : DEFAULT_EXCLUDED_PATTERNS);
304
304
  const updatedOptions = {
@@ -308,7 +308,7 @@ const executeInternal = async (runConfig)=>{
308
308
  const updatedDiff = await create(updatedOptions);
309
309
  diffContent = await updatedDiff.get();
310
310
  if (diffContent.trim().length > 0) {
311
- logger.info('Successfully included critical files in diff.');
311
+ logger.info('CRITICAL_FILES_INCLUDED: Successfully added critical files to diff | Status: ready for commit message generation');
312
312
  // Update hasActualChanges since we now have content after including critical files
313
313
  hasActualChanges = true;
314
314
  } else {
@@ -330,12 +330,12 @@ const executeInternal = async (runConfig)=>{
330
330
  } else {
331
331
  var _runConfig_commit11;
332
332
  // No changes at all - try fallback to file content for new repositories
333
- logger.info('No changes detected in the working directory.');
333
+ logger.info('NO_CHANGES_DETECTED: No changes found in working directory | Status: clean | Action: Nothing to commit');
334
334
  if (((_runConfig_commit11 = runConfig.commit) === null || _runConfig_commit11 === void 0 ? void 0 : _runConfig_commit11.sendit) && !isDryRun) {
335
335
  logger.warn('No changes detected to commit. Skipping commit operation.');
336
336
  return 'No changes to commit.';
337
337
  } else {
338
- logger.info('No diff content available. Attempting to generate commit message from file content...');
338
+ logger.info('NO_DIFF_FALLBACK: No diff content available | Action: Attempting to generate commit message from file content | Strategy: fallback');
339
339
  var _runConfig_excludedPatterns3;
340
340
  // Create file content collector as fallback
341
341
  const fileOptions = {
@@ -346,17 +346,17 @@ const executeInternal = async (runConfig)=>{
346
346
  const files = await create$1(fileOptions);
347
347
  const fileContent = await files.get();
348
348
  if (fileContent && fileContent.trim().length > 0) {
349
- logger.info('Using file content for commit message generation (%d characters)', fileContent.length);
349
+ logger.info('FILE_CONTENT_USING: Using file content for commit message generation | Content Length: %d characters | Source: file content', fileContent.length);
350
350
  diffContent = fileContent;
351
351
  isUsingFileContent = true;
352
352
  hasActualChanges = true; // We have content to work with
353
353
  } else {
354
354
  var _runConfig_commit12;
355
355
  if ((_runConfig_commit12 = runConfig.commit) === null || _runConfig_commit12 === void 0 ? void 0 : _runConfig_commit12.sendit) {
356
- logger.info('Skipping commit operation due to no changes.');
356
+ logger.info('COMMIT_SKIPPED: Skipping commit operation | Reason: No changes detected | Action: None');
357
357
  return 'No changes to commit.';
358
358
  } else {
359
- logger.info('Generating commit message template for future use...');
359
+ logger.info('COMMIT_TEMPLATE_GENERATING: Creating commit message template for future use | Reason: No changes | Purpose: Provide template');
360
360
  }
361
361
  }
362
362
  }
@@ -435,7 +435,7 @@ const executeInternal = async (runConfig)=>{
435
435
  // Create retry callback that reduces diff size on token limit errors
436
436
  const createRetryCallback = (originalDiffContent)=>async (attempt)=>{
437
437
  var _runConfig_commit;
438
- logger.info('Retrying with reduced diff size (attempt %d)', attempt);
438
+ logger.info('COMMIT_RETRY: Retrying with reduced diff size | Attempt: %d | Strategy: Truncate diff | Reason: Previous attempt failed', attempt);
439
439
  // Progressively reduce the diff size on retries
440
440
  const reductionFactor = Math.pow(0.5, attempt - 1); // 50% reduction per retry
441
441
  const reducedMaxDiffBytes = Math.max(512, Math.floor(maxDiffBytes * reductionFactor));
@@ -506,8 +506,8 @@ const executeInternal = async (runConfig)=>{
506
506
  requireTTY('Interactive mode requires a terminal. Use --sendit or --dry-run instead.');
507
507
  const interactiveResult = await handleInteractiveCommitFeedback(summary, runConfig, promptConfig, promptContext, outputDirectory, storage, diffContent, hasActualChanges, cached);
508
508
  if (interactiveResult.action === 'skip') {
509
- logger.info(' Commit aborted by user');
510
- logger.info('💡 No commit will be performed');
509
+ logger.info('COMMIT_ABORTED: User aborted commit operation | Reason: User choice | Action: No commit performed');
510
+ logger.info('COMMIT_NO_ACTION: No commit will be performed | Status: aborted | Next: User can retry or modify changes');
511
511
  userSkippedCommit = true;
512
512
  return interactiveResult.finalMessage;
513
513
  }
@@ -517,7 +517,7 @@ const executeInternal = async (runConfig)=>{
517
517
  if (willActuallyCommit) {
518
518
  var _runConfig_commit15;
519
519
  const commitAction = ((_runConfig_commit15 = runConfig.commit) === null || _runConfig_commit15 === void 0 ? void 0 : _runConfig_commit15.amend) ? 'amending last commit' : 'committing';
520
- logger.info('🚀 SendIt enabled: %s with final message: \n\n%s\n\n', commitAction.charAt(0).toUpperCase() + commitAction.slice(1), interactiveResult.finalMessage);
520
+ logger.info('SENDIT_EXECUTING: SendIt enabled, executing commit action | Action: %s | Message Length: %d | Final Message: \n\n%s\n\n', commitAction.charAt(0).toUpperCase() + commitAction.slice(1), interactiveResult.finalMessage.length, interactiveResult.finalMessage);
521
521
  try {
522
522
  var _runConfig_commit16, _runConfig_commit17;
523
523
  const validatedSummary = validateString(interactiveResult.finalMessage, 'commit summary');
@@ -526,7 +526,7 @@ const executeInternal = async (runConfig)=>{
526
526
  ]);
527
527
  const commitCommand = ((_runConfig_commit16 = runConfig.commit) === null || _runConfig_commit16 === void 0 ? void 0 : _runConfig_commit16.amend) ? `git commit --amend -m ${escapedSummary}` : `git commit -m ${escapedSummary}`;
528
528
  await run(commitCommand);
529
- logger.info(' Commit successful!');
529
+ logger.info('COMMIT_SUCCESS: Commit operation completed successfully | Status: committed | Action: Changes saved to repository');
530
530
  // Push if requested
531
531
  await pushCommit((_runConfig_commit17 = runConfig.commit) === null || _runConfig_commit17 === void 0 ? void 0 : _runConfig_commit17.push, logger, isDryRun);
532
532
  } catch (error) {