@dreb/coding-agent 2.19.0 → 2.19.1

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 (56) hide show
  1. package/README.md +1 -0
  2. package/dist/cli/args.d.ts.map +1 -1
  3. package/dist/cli/args.js +3 -2
  4. package/dist/cli/args.js.map +1 -1
  5. package/dist/cli/file-processor.d.ts.map +1 -1
  6. package/dist/cli/file-processor.js +3 -2
  7. package/dist/cli/file-processor.js.map +1 -1
  8. package/dist/core/agent-session.d.ts.map +1 -1
  9. package/dist/core/agent-session.js +6 -5
  10. package/dist/core/agent-session.js.map +1 -1
  11. package/dist/core/buddy/buddy-controller.d.ts.map +1 -1
  12. package/dist/core/buddy/buddy-controller.js +3 -2
  13. package/dist/core/buddy/buddy-controller.js.map +1 -1
  14. package/dist/core/event-bus.d.ts.map +1 -1
  15. package/dist/core/event-bus.js +2 -1
  16. package/dist/core/event-bus.js.map +1 -1
  17. package/dist/core/logger.d.ts +29 -0
  18. package/dist/core/logger.d.ts.map +1 -0
  19. package/dist/core/logger.js +54 -0
  20. package/dist/core/logger.js.map +1 -0
  21. package/dist/core/model-resolver.d.ts.map +1 -1
  22. package/dist/core/model-resolver.js +3 -2
  23. package/dist/core/model-resolver.js.map +1 -1
  24. package/dist/core/package-manager.d.ts.map +1 -1
  25. package/dist/core/package-manager.js +25 -2
  26. package/dist/core/package-manager.js.map +1 -1
  27. package/dist/core/stderr-guard.d.ts +37 -0
  28. package/dist/core/stderr-guard.d.ts.map +1 -0
  29. package/dist/core/stderr-guard.js +90 -0
  30. package/dist/core/stderr-guard.js.map +1 -0
  31. package/dist/core/timings.d.ts.map +1 -1
  32. package/dist/core/timings.js +5 -4
  33. package/dist/core/timings.js.map +1 -1
  34. package/dist/core/tools/subagent.d.ts.map +1 -1
  35. package/dist/core/tools/subagent.js +18 -17
  36. package/dist/core/tools/subagent.js.map +1 -1
  37. package/dist/core/tools/terminal-render.d.ts.map +1 -1
  38. package/dist/core/tools/terminal-render.js +2 -1
  39. package/dist/core/tools/terminal-render.js.map +1 -1
  40. package/dist/core/tools/web-search-queue.d.ts.map +1 -1
  41. package/dist/core/tools/web-search-queue.js +2 -1
  42. package/dist/core/tools/web-search-queue.js.map +1 -1
  43. package/dist/core/tools/web.d.ts.map +1 -1
  44. package/dist/core/tools/web.js +6 -5
  45. package/dist/core/tools/web.js.map +1 -1
  46. package/dist/main.d.ts.map +1 -1
  47. package/dist/main.js +25 -24
  48. package/dist/main.js.map +1 -1
  49. package/dist/modes/interactive/interactive-mode.d.ts +5 -0
  50. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  51. package/dist/modes/interactive/interactive-mode.js +32 -2
  52. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  53. package/dist/modes/print-mode.d.ts.map +1 -1
  54. package/dist/modes/print-mode.js +3 -2
  55. package/dist/modes/print-mode.js.map +1 -1
  56. package/package.json +1 -1
@@ -21,6 +21,7 @@ import { findExactModelReferenceMatch, resolveModelScope } from "../../core/mode
21
21
  import { DefaultPackageManager } from "../../core/package-manager.js";
22
22
  import { SessionManager } from "../../core/session-manager.js";
23
23
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
24
+ import { restoreStderr, takeOverStderr } from "../../core/stderr-guard.js";
24
25
  import { resolveToCwd } from "../../core/tools/path-utils.js";
25
26
  import { abortBackgroundAgents, getRunningBackgroundAgents } from "../../core/tools/subagent.js";
26
27
  import { getChangelogPath, getNewEntries, parseChangelog } from "../../utils/changelog.js";
@@ -422,6 +423,9 @@ export class InteractiveMode {
422
423
  // Start the UI before initializing extensions so session_start handlers can use interactive dialogs
423
424
  this.ui.start();
424
425
  this.isInitialized = true;
426
+ // Intercept stderr to prevent raw writes from corrupting the TUI.
427
+ // Route intercepted messages to the chat feed as warnings/errors.
428
+ this.activateStderrGuard();
425
429
  // Initialize extensions first so resources are shown before messages
426
430
  await this.initExtensions();
427
431
  // Render initial messages AFTER showing loaded resources
@@ -2458,10 +2462,12 @@ export class InteractiveMode {
2458
2462
  clearInterval(suspendKeepAlive);
2459
2463
  process.removeListener("SIGINT", ignoreSigint);
2460
2464
  this.ui.start();
2465
+ this.activateStderrGuard();
2461
2466
  this.ui.requestRender(true);
2462
2467
  });
2463
2468
  try {
2464
2469
  // Stop the TUI (restore terminal to normal mode)
2470
+ restoreStderr();
2465
2471
  this.ui.stop();
2466
2472
  // Send SIGTSTP to process group (pid=0 means all processes in group)
2467
2473
  process.kill(0, "SIGTSTP");
@@ -2593,7 +2599,8 @@ export class InteractiveMode {
2593
2599
  try {
2594
2600
  // Write current content to temp file
2595
2601
  fs.writeFileSync(tmpFile, currentText, "utf-8");
2596
- // Stop TUI to release terminal
2602
+ // Stop TUI and restore stderr to release terminal for editor
2603
+ restoreStderr();
2597
2604
  this.ui.stop();
2598
2605
  // Split by space to support editor arguments (e.g., "code --wait")
2599
2606
  const [editor, ...editorArgs] = editorCmd.split(" ");
@@ -2617,13 +2624,35 @@ export class InteractiveMode {
2617
2624
  catch {
2618
2625
  // Ignore cleanup errors
2619
2626
  }
2620
- // Restart TUI
2627
+ // Restart TUI and re-intercept stderr
2621
2628
  this.ui.start();
2629
+ this.activateStderrGuard();
2622
2630
  // Force full re-render since external editor uses alternate screen
2623
2631
  this.ui.requestRender(true);
2624
2632
  }
2625
2633
  }
2626
2634
  // =========================================================================
2635
+ // Stderr guard
2636
+ // =========================================================================
2637
+ /**
2638
+ * Activate stderr interception, routing messages to the TUI chat feed.
2639
+ * Errors are shown with error styling; everything else as warnings.
2640
+ */
2641
+ activateStderrGuard() {
2642
+ const callback = (message, level) => {
2643
+ const trimmed = message.replace(/\n$/, "");
2644
+ if (trimmed.length === 0)
2645
+ return;
2646
+ if (level === "error") {
2647
+ this.showError(trimmed);
2648
+ }
2649
+ else {
2650
+ this.showWarning(trimmed);
2651
+ }
2652
+ };
2653
+ takeOverStderr(callback);
2654
+ }
2655
+ // =========================================================================
2627
2656
  // UI helpers
2628
2657
  // =========================================================================
2629
2658
  clearEditor() {
@@ -4298,6 +4327,7 @@ ${cycleModelForward || cycleModelBackward ? `| \`${cycleModelForward}\` / \`${cy
4298
4327
  this.unsubscribe();
4299
4328
  }
4300
4329
  if (this.isInitialized) {
4330
+ restoreStderr();
4301
4331
  this.ui.stop();
4302
4332
  this.isInitialized = false;
4303
4333
  }