9993c96907
Move provider auth and OAuth flows onto pi-ai Models, compose models.json and extension overlays through ModelRuntime, and retain ModelRegistry as an extension compatibility facade.
26 lines
1008 B
TypeScript
26 lines
1008 B
TypeScript
import type { CredentialStore } from "@earendil-works/pi-ai";
|
|
import { ModelRegistry } from "../src/core/model-registry.ts";
|
|
import { ModelRuntime } from "../src/core/model-runtime.ts";
|
|
|
|
const runtimes = new WeakMap<ModelRegistry, ModelRuntime>();
|
|
|
|
function wrap(runtime: ModelRuntime): ModelRegistry {
|
|
const registry = new ModelRegistry(runtime);
|
|
runtimes.set(registry, runtime);
|
|
return registry;
|
|
}
|
|
|
|
export async function createModelRegistry(credentials: CredentialStore, modelsPath?: string): Promise<ModelRegistry> {
|
|
return wrap(await ModelRuntime.create({ credentials, modelsPath }));
|
|
}
|
|
|
|
export async function createInMemoryModelRegistry(credentials: CredentialStore): Promise<ModelRegistry> {
|
|
return wrap(await ModelRuntime.create({ credentials, modelsPath: null }));
|
|
}
|
|
|
|
export function getModelRuntime(modelRegistry: ModelRegistry): ModelRuntime {
|
|
const runtime = runtimes.get(modelRegistry);
|
|
if (!runtime) throw new Error("ModelRegistry was not created by the test helper");
|
|
return runtime;
|
|
}
|