mirror of
https://github.com/anomalyco/opencode.git
synced 2026-08-11 00:33:41 +00:00
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { Location } from "@opencode-ai/schema/location"
|
|
import { Schema } from "effect"
|
|
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
|
|
|
|
export const LocationQuery = Schema.Struct({
|
|
location: Schema.optional(
|
|
Schema.Struct({
|
|
directory: Schema.optional(Schema.String),
|
|
workspace: Schema.optional(Schema.String),
|
|
}),
|
|
),
|
|
}).annotate({ identifier: "LocationQuery" })
|
|
|
|
export const locationQueryOpenApi = OpenApi.annotations({
|
|
transform: (operation) => {
|
|
const parameters = operation.parameters
|
|
if (!Array.isArray(parameters)) return operation
|
|
return {
|
|
...operation,
|
|
parameters: parameters.map((parameter) =>
|
|
parameter?.name === "location" && parameter?.in === "query"
|
|
? { ...parameter, style: "deepObject", explode: true }
|
|
: parameter,
|
|
),
|
|
}
|
|
},
|
|
})
|
|
|
|
export const LocationGroup = HttpApiGroup.make("server.location")
|
|
.add(
|
|
HttpApiEndpoint.get("location.get", "/api/location", {
|
|
query: LocationQuery,
|
|
success: Location.Info,
|
|
})
|
|
.annotateMerge(locationQueryOpenApi)
|
|
.annotateMerge(
|
|
OpenApi.annotations({
|
|
identifier: "v2.location.get",
|
|
summary: "Get location",
|
|
description: "Resolve the requested location or the server default location.",
|
|
}),
|
|
),
|
|
)
|
|
.annotateMerge(OpenApi.annotations({ title: "location" }))
|