feat: add v2 generate text endpoint (#34371)

This commit is contained in:
Kit Langton 2026-06-28 22:43:58 -04:00 committed by GitHub
commit 595c6bd4a7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 462 additions and 233 deletions

View file

@ -1,4 +1,5 @@
import { Layer } from "effect"
import { GenerateHandler } from "./handlers/generate"
import { MessageHandler } from "./handlers/message"
import { ModelHandler } from "./handlers/model"
import { ProviderHandler } from "./handlers/provider"
@ -25,6 +26,7 @@ export const handlers = Layer.mergeAll(
SessionHandler,
MessageHandler,
ModelHandler,
GenerateHandler,
ProviderHandler,
IntegrationHandler,
CredentialHandler,

View file

@ -0,0 +1,26 @@
import { Generate } from "@opencode-ai/core/generate"
import { InvalidRequestError, ServiceUnavailableError } from "@opencode-ai/protocol/errors"
import { Effect } from "effect"
import { HttpApiBuilder } from "effect/unstable/httpapi"
import { Api } from "../api"
export const GenerateHandler = HttpApiBuilder.group(Api, "server.generate", (handlers) =>
Effect.gen(function* () {
return handlers.handle(
"generate.text",
Effect.fn("server.generate.text")(function* (request) {
const generate = yield* Generate.Service
const text = yield* generate
.text(request.payload)
.pipe(
Effect.mapError((error) =>
error._tag === "Generate.ModelSelectionError"
? new InvalidRequestError({ message: error.message })
: new ServiceUnavailableError({ message: error.message, service: error.service }),
),
)
return { data: { text } }
}),
)
}),
)