@dreb/coding-agent 2.19.0 → 2.19.2
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/README.md +2 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +3 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +3 -2
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -5
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/buddy/buddy-controller.d.ts.map +1 -1
- package/dist/core/buddy/buddy-controller.js +3 -2
- package/dist/core/buddy/buddy-controller.js.map +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +2 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/logger.d.ts +29 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +54 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +3 -2
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +25 -2
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +6 -2
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/stderr-guard.d.ts +37 -0
- package/dist/core/stderr-guard.d.ts.map +1 -0
- package/dist/core/stderr-guard.js +90 -0
- package/dist/core/stderr-guard.js.map +1 -0
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +5 -4
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/subagent.d.ts.map +1 -1
- package/dist/core/tools/subagent.js +24 -22
- package/dist/core/tools/subagent.js.map +1 -1
- package/dist/core/tools/suggest-next.d.ts +2 -0
- package/dist/core/tools/suggest-next.d.ts.map +1 -1
- package/dist/core/tools/suggest-next.js +32 -12
- package/dist/core/tools/suggest-next.js.map +1 -1
- package/dist/core/tools/terminal-render.d.ts.map +1 -1
- package/dist/core/tools/terminal-render.js +2 -1
- package/dist/core/tools/terminal-render.js.map +1 -1
- package/dist/core/tools/web-search-queue.d.ts.map +1 -1
- package/dist/core/tools/web-search-queue.js +2 -1
- package/dist/core/tools/web-search-queue.js.map +1 -1
- package/dist/core/tools/web.d.ts.map +1 -1
- package/dist/core/tools/web.js +6 -5
- package/dist/core/tools/web.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +25 -24
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +5 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +32 -2
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +3 -2
- package/dist/modes/print-mode.js.map +1 -1
- 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
|
}
|