67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
import { spyOn } from "bun:test"
|
|
import type {
|
|
LocationRef,
|
|
ModelListOutput,
|
|
OpenCodeClient,
|
|
ProviderListOutput,
|
|
} from "@opencode-ai/client/promise"
|
|
|
|
export function catalogProvider(id: string, name: string): ProviderListOutput["data"][number] {
|
|
return {
|
|
id,
|
|
name,
|
|
package: "",
|
|
}
|
|
}
|
|
|
|
export function catalogModel(input: {
|
|
id: string
|
|
modelID?: string
|
|
providerID: string
|
|
name?: string
|
|
context?: number
|
|
variants?: string[]
|
|
}): ModelListOutput["data"][number] {
|
|
return {
|
|
id: input.id,
|
|
modelID: input.modelID ?? input.id,
|
|
providerID: input.providerID,
|
|
name: input.name ?? input.id,
|
|
capabilities: {
|
|
tools: true,
|
|
input: ["text"],
|
|
output: ["text"],
|
|
},
|
|
variants: (input.variants ?? []).map((id) => ({ id })),
|
|
time: { released: 1 },
|
|
cost: [{ input: 0, output: 0, cache: { read: 0, write: 0 } }],
|
|
status: "active",
|
|
enabled: true,
|
|
limit: { context: input.context ?? 128_000, output: 8_192 },
|
|
}
|
|
}
|
|
|
|
export function stubCatalogLists(
|
|
sdk: OpenCodeClient,
|
|
input: {
|
|
location?: LocationRef
|
|
providers?: ProviderListOutput["data"]
|
|
models?: ModelListOutput["data"]
|
|
} = {},
|
|
) {
|
|
const location = {
|
|
directory: input.location?.directory ?? "/tmp",
|
|
workspaceID: input.location?.workspaceID,
|
|
project: { id: "proj_1", directory: input.location?.directory ?? "/tmp" },
|
|
}
|
|
const empty = { location, data: [] }
|
|
|
|
return {
|
|
provider: spyOn(sdk.provider, "list").mockResolvedValue({ location, data: input.providers ?? [] } as never),
|
|
model: spyOn(sdk.model, "list").mockResolvedValue({ location, data: input.models ?? [] } as never),
|
|
agent: spyOn(sdk.agent, "list").mockResolvedValue(empty as never),
|
|
reference: spyOn(sdk.reference, "list").mockResolvedValue(empty as never),
|
|
command: spyOn(sdk.command, "list").mockResolvedValue(empty as never),
|
|
skill: spyOn(sdk.skill, "list").mockResolvedValue(empty as never),
|
|
}
|
|
}
|