fix: expose abort signal to extensions closes #2660
This commit is contained in:
@@ -71,6 +71,7 @@ describe("ExtensionRunner", () => {
|
||||
const extensionContextActions: ExtensionContextActions = {
|
||||
getModel: () => undefined,
|
||||
isIdle: () => true,
|
||||
getSignal: () => undefined,
|
||||
abort: () => {},
|
||||
hasPendingMessages: () => false,
|
||||
shutdown: () => {},
|
||||
@@ -399,6 +400,26 @@ describe("ExtensionRunner", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("context creation", () => {
|
||||
it("exposes the current abort signal on ExtensionContext", async () => {
|
||||
const result = await discoverAndLoadExtensions([], tempDir, tempDir);
|
||||
const runner = new ExtensionRunner(result.extensions, result.runtime, tempDir, sessionManager, modelRegistry);
|
||||
const controller = new AbortController();
|
||||
|
||||
runner.bindCore(extensionActions, {
|
||||
...extensionContextActions,
|
||||
getSignal: () => controller.signal,
|
||||
});
|
||||
|
||||
const ctx = runner.createContext();
|
||||
expect(ctx.signal).toBe(controller.signal);
|
||||
expect(ctx.signal?.aborted).toBe(false);
|
||||
|
||||
controller.abort();
|
||||
expect(ctx.signal?.aborted).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("error handling", () => {
|
||||
it("calls error listeners when handler throws", async () => {
|
||||
const extCode = `
|
||||
|
||||
@@ -11,6 +11,7 @@ function createContext(tokens: number | null, compact = vi.fn()): ExtensionConte
|
||||
modelRegistry: {} as ExtensionContext["modelRegistry"],
|
||||
model: undefined,
|
||||
isIdle: () => true,
|
||||
signal: undefined,
|
||||
abort: vi.fn(),
|
||||
hasPendingMessages: () => false,
|
||||
shutdown: vi.fn(),
|
||||
|
||||
Reference in New Issue
Block a user