fix(coding-agent): add replacement-session callbacks closes #2860
This commit is contained in:
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user