core: expose v2 model listing API (#25821)

This commit is contained in:
Dax
2026-05-13 14:43:08 +00:00
committed by GitHub
parent bebe5442a5
commit 8345152319
138 changed files with 8191 additions and 305 deletions
@@ -1,6 +1,12 @@
import { Catalog } from "@opencode-ai/core/catalog"
import { SessionV2 } from "@/v2/session"
import { Layer } from "effect"
import { messageHandlers } from "./v2/message"
import { modelHandlers } from "./v2/model"
import { providerHandlers } from "./v2/provider"
import { sessionHandlers } from "./v2/session"
export const v2Handlers = Layer.mergeAll(sessionHandlers, messageHandlers).pipe(Layer.provide(SessionV2.defaultLayer))
export const v2Handlers = Layer.mergeAll(sessionHandlers, messageHandlers, modelHandlers, providerHandlers).pipe(
Layer.provide(Catalog.defaultLayer),
Layer.provide(SessionV2.defaultLayer),
)
@@ -0,0 +1,12 @@
import { Catalog } from "@opencode-ai/core/catalog"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { InstanceHttpApi } from "../../api"
export const modelHandlers = HttpApiBuilder.group(InstanceHttpApi, "v2.model", (handlers) =>
Effect.gen(function* () {
const catalog = yield* Catalog.Service
return handlers.handle("models", () => catalog.model.available())
}),
)
@@ -0,0 +1,22 @@
import { Catalog } from "@opencode-ai/core/catalog"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { InstanceHttpApi } from "../../api"
import { notFound } from "../../errors"
export const providerHandlers = HttpApiBuilder.group(InstanceHttpApi, "v2.provider", (handlers) =>
Effect.gen(function* () {
const catalog = yield* Catalog.Service
return handlers
.handle("providers", () => catalog.provider.available())
.handle(
"provider",
Effect.fn(function* (ctx) {
return yield* catalog.provider
.get(ctx.params.providerID)
.pipe(Effect.catchTag("CatalogV2.ProviderNotFound", () => Effect.fail(notFound("Provider not found"))))
}),
)
}),
)