feat: add v2 generate text endpoint (#34371)
This commit is contained in:
parent
7073e8797f
commit
595c6bd4a7
12 changed files with 462 additions and 233 deletions
|
|
@ -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,
|
||||
|
|
|
|||
26
packages/server/src/handlers/generate.ts
Normal file
26
packages/server/src/handlers/generate.ts
Normal 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 } }
|
||||
}),
|
||||
)
|
||||
}),
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue