Release v0.7.26

This commit is contained in:
Mario Zechner 2025-11-20 17:29:24 +01:00
parent 4afb3231e4
commit 11aa39c5e4
13 changed files with 72 additions and 31 deletions

View file

@ -8,8 +8,15 @@ export class CustomEditor extends Editor {
public onCtrlC?: () => void;
public onShiftTab?: () => void;
public onCtrlP?: () => void;
public onCtrlO?: () => void;
handleInput(data: string): void {
// Intercept Ctrl+O for tool output expansion
if (data === "\x0f" && this.onCtrlO) {
this.onCtrlO();
return;
}
// Intercept Ctrl+P for model cycling
if (data === "\x10" && this.onCtrlP) {
this.onCtrlP();

View file

@ -127,6 +127,7 @@ export class ToolExecutionComponent extends Container {
private contentText: Text;
private toolName: string;
private args: any;
private expanded = false;
private result?: {
content: Array<{ type: string; text?: string; data?: string; mimeType?: string }>;
isError: boolean;
@ -158,6 +159,11 @@ export class ToolExecutionComponent extends Container {
this.updateDisplay();
}
setExpanded(expanded: boolean): void {
this.expanded = expanded;
this.updateDisplay();
}
private updateDisplay(): void {
const bgColor = this.result
? this.result.isError
@ -201,7 +207,7 @@ export class ToolExecutionComponent extends Container {
const output = this.getTextOutput().trim();
if (output) {
const lines = output.split("\n");
const maxLines = 5;
const maxLines = this.expanded ? lines.length : 5;
const displayLines = lines.slice(0, maxLines);
const remaining = lines.length - maxLines;
@ -218,7 +224,7 @@ export class ToolExecutionComponent extends Container {
if (this.result) {
const output = this.getTextOutput();
const lines = output.split("\n");
const maxLines = 10;
const maxLines = this.expanded ? lines.length : 10;
const displayLines = lines.slice(0, maxLines);
const remaining = lines.length - maxLines;
@ -240,7 +246,7 @@ export class ToolExecutionComponent extends Container {
// Show first 10 lines of content if available
if (fileContent) {
const maxLines = 10;
const maxLines = this.expanded ? lines.length : 10;
const displayLines = lines.slice(0, maxLines);
const remaining = lines.length - maxLines;

View file

@ -77,6 +77,9 @@ export class TuiRenderer {
// Model scope for quick cycling
private scopedModels: Model<any>[] = [];
// Tool output expansion state
private toolOutputExpanded = false;
constructor(
agent: Agent,
sessionManager: SessionManager,
@ -183,6 +186,9 @@ export class TuiRenderer {
chalk.dim("ctrl+p") +
chalk.gray(" to cycle models") +
"\n" +
chalk.dim("ctrl+o") +
chalk.gray(" to expand tools") +
"\n" +
chalk.dim("/") +
chalk.gray(" for commands") +
"\n" +
@ -248,6 +254,10 @@ export class TuiRenderer {
this.cycleModel();
};
this.editor.onCtrlO = () => {
this.toggleToolOutputExpansion();
};
// Handle editor submission
this.editor.onSubmit = async (text: string) => {
text = text.trim();
@ -723,6 +733,19 @@ export class TuiRenderer {
this.ui.requestRender();
}
private toggleToolOutputExpansion(): void {
this.toolOutputExpanded = !this.toolOutputExpanded;
// Update all tool execution components
for (const child of this.chatContainer.children) {
if (child instanceof ToolExecutionComponent) {
child.setExpanded(this.toolOutputExpanded);
}
}
this.ui.requestRender();
}
clearEditor(): void {
this.editor.setText("");
this.ui.requestRender();