Merge pull request #1199 from academo/academo/implement-set-expand-tool-api

feat: add setToolsExpanded and getToolsExpanded to ExtensionsUIContext
This commit is contained in:
Mario Zechner 2026-02-03 01:16:04 +01:00 committed by GitHub
commit 6909f61884
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 25 additions and 2 deletions

View file

@ -146,6 +146,8 @@ const noOpUIContext: ExtensionUIContext = {
getAllThemes: () => [],
getTheme: () => undefined,
setTheme: (_theme: string | Theme) => ({ success: false, error: "UI not available" }),
getToolsExpanded: () => false,
setToolsExpanded: () => {},
};
export class ExtensionRunner {

View file

@ -218,6 +218,12 @@ export interface ExtensionUIContext {
/** Set the current theme by name or Theme object. */
setTheme(theme: string | Theme): { success: boolean; error?: string };
/** Get current tool output expansion state. */
getToolsExpanded(): boolean;
/** Set tool output expansion state. */
setToolsExpanded(expanded: boolean): void;
}
// ============================================================================

View file

@ -1396,6 +1396,8 @@ export class InteractiveMode {
}
return result;
},
getToolsExpanded: () => this.toolOutputExpanded,
setToolsExpanded: (expanded) => this.setToolsExpanded(expanded),
};
}
@ -2662,10 +2664,14 @@ export class InteractiveMode {
}
private toggleToolOutputExpansion(): void {
this.toolOutputExpanded = !this.toolOutputExpanded;
this.setToolsExpanded(!this.toolOutputExpanded);
}
private setToolsExpanded(expanded: boolean): void {
this.toolOutputExpanded = expanded;
for (const child of this.chatContainer.children) {
if (isExpandable(child)) {
child.setExpanded(this.toolOutputExpanded);
child.setExpanded(expanded);
}
}
this.ui.requestRender();

View file

@ -252,6 +252,15 @@ export async function runRpcMode(session: AgentSession): Promise<never> {
// Theme switching not supported in RPC mode
return { success: false, error: "Theme switching not supported in RPC mode" };
},
getToolsExpanded() {
// Tool expansion not supported in RPC mode - no TUI
return false;
},
setToolsExpanded(_expanded: boolean) {
// Tool expansion not supported in RPC mode - no TUI
},
});
// Set up extensions with RPC-based UI context