feat(coding-agent): add InlineExtension type for named inline extension factories (#6267)
* feat(coding-agent): add InlineExtension type for named inline extension factories * test(coding-agent): update utilities and add regression test for InlineExtension
This commit is contained in:
@@ -11,7 +11,12 @@ import { getOAuthApiKey } from "@earendil-works/pi-ai/oauth";
|
||||
import { AgentSession } from "../src/core/agent-session.ts";
|
||||
import { AuthStorage } from "../src/core/auth-storage.ts";
|
||||
import { createEventBus } from "../src/core/event-bus.ts";
|
||||
import type { Extension, ExtensionFactory, LoadExtensionsResult } from "../src/core/extensions/index.ts";
|
||||
import type {
|
||||
Extension,
|
||||
ExtensionFactory,
|
||||
InlineExtension,
|
||||
LoadExtensionsResult,
|
||||
} from "../src/core/extensions/index.ts";
|
||||
import { createExtensionRuntime, loadExtensionFromFactory } from "../src/core/extensions/loader.ts";
|
||||
import { ModelRegistry } from "../src/core/model-registry.ts";
|
||||
import type { ResourceLoader } from "../src/core/resource-loader.ts";
|
||||
@@ -181,8 +186,10 @@ export interface CreateTestExtensionsResultInput {
|
||||
path?: string;
|
||||
}
|
||||
|
||||
type TestExtensionInput = InlineExtension | CreateTestExtensionsResultInput;
|
||||
|
||||
export async function createTestExtensionsResult(
|
||||
inputs: Array<ExtensionFactory | CreateTestExtensionsResultInput>,
|
||||
inputs: TestExtensionInput[],
|
||||
cwd = process.cwd(),
|
||||
): Promise<LoadExtensionsResult> {
|
||||
const runtime = createExtensionRuntime();
|
||||
@@ -190,9 +197,12 @@ export async function createTestExtensionsResult(
|
||||
const extensions: Extension[] = [];
|
||||
|
||||
for (const [index, input] of inputs.entries()) {
|
||||
const factory = typeof input === "function" ? input : input.factory;
|
||||
const extensionPath =
|
||||
typeof input === "function" ? `<inline:${index + 1}>` : (input.path ?? `<inline:${index + 1}>`);
|
||||
const isObject = typeof input !== "function";
|
||||
const hasName = isObject && "name" in input;
|
||||
const hasPath = isObject && "path" in input && typeof input.path === "string" && input.path !== "";
|
||||
const factory = isObject ? input.factory : input;
|
||||
const extensionPath = hasName ? `<inline:${input.name}>` : hasPath ? input.path : `<inline:${index + 1}>`;
|
||||
|
||||
extensions.push(await loadExtensionFromFactory(factory, cwd, eventBus, runtime, extensionPath));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user