fix(coding-agent): add replacement-session callbacks closes #2860

This commit is contained in:
Mario Zechner
2026-04-22 12:13:54 +02:00
parent a900d25119
commit 1cc303d053
11 changed files with 579 additions and 67 deletions

View File

@@ -53,6 +53,7 @@ import {
type MessageEndEvent,
type MessageStartEvent,
type MessageUpdateEvent,
type ReplacedSessionContext,
type SessionBeforeCompactResult,
type SessionBeforeTreeResult,
type SessionStartEvent,
@@ -722,6 +723,9 @@ export class AgentSession {
* Call this when completely done with the session.
*/
dispose(): void {
this._extensionRunner.invalidate(
"This extension instance is stale after session replacement or reload. Use the provided replacement-session context instead.",
);
this._disconnectFromAgent();
this._eventListeners = [];
}
@@ -3066,6 +3070,16 @@ export class AgentSession {
// Extension System
// =========================================================================
createReplacedSessionContext(): ReplacedSessionContext {
const context = Object.defineProperties(
{},
Object.getOwnPropertyDescriptors(this._extensionRunner.createCommandContext()),
) as ReplacedSessionContext;
context.sendMessage = (message, options) => this.sendCustomMessage(message, options);
context.sendUserMessage = (content, options) => this.sendUserMessage(content, options);
return context;
}
/**
* Check if extensions have handlers for a specific event type.
*/