62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
import { Config } from "@/config/config"
|
|
import { Provider } from "@/provider/provider"
|
|
import { HttpApi, HttpApiEndpoint, HttpApiError, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
|
|
import { Authorization } from "../middleware/authorization"
|
|
import { InstanceContextMiddleware } from "../middleware/instance-context"
|
|
import { WorkspaceRoutingMiddleware } from "../middleware/workspace-routing"
|
|
import { described } from "./metadata"
|
|
|
|
const root = "/config"
|
|
|
|
export const ConfigApi = HttpApi.make("config")
|
|
.add(
|
|
HttpApiGroup.make("config")
|
|
.add(
|
|
HttpApiEndpoint.get("get", root, {
|
|
success: described(Config.Info, "Get config info"),
|
|
}).annotateMerge(
|
|
OpenApi.annotations({
|
|
identifier: "config.get",
|
|
summary: "Get configuration",
|
|
description: "Retrieve the current OpenCode configuration settings and preferences.",
|
|
}),
|
|
),
|
|
HttpApiEndpoint.patch("update", root, {
|
|
payload: Config.Info,
|
|
success: described(Config.Info, "Successfully updated config"),
|
|
error: HttpApiError.BadRequest,
|
|
}).annotateMerge(
|
|
OpenApi.annotations({
|
|
identifier: "config.update",
|
|
summary: "Update configuration",
|
|
description: "Update OpenCode configuration settings and preferences.",
|
|
}),
|
|
),
|
|
HttpApiEndpoint.get("providers", `${root}/providers`, {
|
|
success: described(Provider.ConfigProvidersResult, "List of providers"),
|
|
}).annotateMerge(
|
|
OpenApi.annotations({
|
|
identifier: "config.providers",
|
|
summary: "List config providers",
|
|
description: "Get a list of all configured AI providers and their default models.",
|
|
}),
|
|
),
|
|
)
|
|
.annotateMerge(
|
|
OpenApi.annotations({
|
|
title: "config",
|
|
description: "Experimental HttpApi config routes.",
|
|
}),
|
|
)
|
|
.middleware(InstanceContextMiddleware)
|
|
.middleware(WorkspaceRoutingMiddleware)
|
|
.middleware(Authorization),
|
|
)
|
|
.annotateMerge(
|
|
OpenApi.annotations({
|
|
title: "opencode experimental HttpApi",
|
|
version: "0.0.1",
|
|
description: "Experimental HttpApi surface for selected instance routes.",
|
|
}),
|
|
)
|