fix(coding-agent): setWorkingMessage() now works in agent_start handlers

Extensions calling setWorkingMessage() in agent_start handlers previously
had no effect because the loading animation didn't exist yet. Now the
message is queued and applied once the loader is created.

Fixes #935
This commit is contained in:
Mario Zechner 2026-01-25 02:37:12 +01:00
parent 3e8eb956b3
commit 349c6420c7
2 changed files with 14 additions and 0 deletions

View file

@ -163,6 +163,7 @@ export class InteractiveMode {
private isInitialized = false;
private onInputCallback?: (text: string) => void;
private loadingAnimation: Loader | undefined = undefined;
private pendingWorkingMessage: string | undefined = undefined;
private readonly defaultWorkingMessage = "Working...";
private lastSigintTime = 0;
@ -1337,6 +1338,9 @@ export class InteractiveMode {
`${this.defaultWorkingMessage} (${appKey(this.keybindings, "interrupt")} to interrupt)`,
);
}
} else {
// Queue message for when loadingAnimation is created (handles agent_start race)
this.pendingWorkingMessage = message;
}
},
setWidget: (key, content, options) => this.setExtensionWidget(key, content, options),
@ -1990,6 +1994,13 @@ export class InteractiveMode {
this.defaultWorkingMessage,
);
this.statusContainer.addChild(this.loadingAnimation);
// Apply any pending working message queued before loader existed
if (this.pendingWorkingMessage !== undefined) {
if (this.pendingWorkingMessage) {
this.loadingAnimation.setMessage(this.pendingWorkingMessage);
}
this.pendingWorkingMessage = undefined;
}
this.ui.requestRender();
break;