Skip to content

Commit 35239bd

Browse files
committed
refactor(httpapi): split groups from handlers
1 parent 41367fa commit 35239bd

50 files changed

Lines changed: 2098 additions & 2003 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { HttpApi } from "effect/unstable/httpapi"
2+
import { ConfigApi } from "./groups/config"
3+
import { ControlApi } from "./groups/control"
4+
import { EventApi } from "./event"
5+
import { ExperimentalApi } from "./groups/experimental"
6+
import { FileApi } from "./groups/file"
7+
import { GlobalApi } from "./groups/global"
8+
import { InstanceApi } from "./groups/instance"
9+
import { McpApi } from "./groups/mcp"
10+
import { PermissionApi } from "./groups/permission"
11+
import { ProjectApi } from "./groups/project"
12+
import { ProviderApi } from "./groups/provider"
13+
import { PtyApi, PtyConnectApi } from "./groups/pty"
14+
import { QuestionApi } from "./groups/question"
15+
import { SessionApi } from "./groups/session"
16+
import { SyncApi } from "./groups/sync"
17+
import { TuiApi } from "./groups/tui"
18+
import { WorkspaceApi } from "./groups/workspace"
19+
20+
export const RootHttpApi = HttpApi.make("opencode-root").addHttpApi(ControlApi).addHttpApi(GlobalApi)
21+
22+
export const InstanceHttpApi = HttpApi.make("opencode-instance")
23+
.addHttpApi(ConfigApi)
24+
.addHttpApi(ExperimentalApi)
25+
.addHttpApi(FileApi)
26+
.addHttpApi(InstanceApi)
27+
.addHttpApi(McpApi)
28+
.addHttpApi(ProjectApi)
29+
.addHttpApi(PtyApi)
30+
.addHttpApi(QuestionApi)
31+
.addHttpApi(PermissionApi)
32+
.addHttpApi(ProviderApi)
33+
.addHttpApi(SessionApi)
34+
.addHttpApi(SyncApi)
35+
.addHttpApi(TuiApi)
36+
.addHttpApi(WorkspaceApi)
37+
38+
export const OpenCodeHttpApi = HttpApi.make("opencode")
39+
.addHttpApi(RootHttpApi)
40+
.addHttpApi(EventApi)
41+
.addHttpApi(InstanceHttpApi)
42+
.addHttpApi(PtyConnectApi)
43+
44+
export type RootHttpApiType = typeof RootHttpApi
45+
export type InstanceHttpApiType = typeof InstanceHttpApi

packages/opencode/src/server/routes/instance/httpapi/global.ts

Lines changed: 0 additions & 252 deletions
This file was deleted.

packages/opencode/src/server/routes/instance/httpapi/config.ts renamed to packages/opencode/src/server/routes/instance/httpapi/groups/config.ts

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import { Config } from "@/config/config"
22
import { Provider } from "@/provider/provider"
3-
import * as InstanceState from "@/effect/instance-state"
4-
import { Effect } from "effect"
5-
import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
6-
import { Authorization } from "./auth"
7-
import { markInstanceForDisposal } from "./lifecycle"
3+
import { HttpApi, HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
4+
import { Authorization } from "../auth"
5+
import { InstanceContextMiddleware } from "../instance-context"
86

97
const root = "/config"
108

@@ -47,6 +45,7 @@ export const ConfigApi = HttpApi.make("config")
4745
description: "Experimental HttpApi config routes.",
4846
}),
4947
)
48+
.middleware(InstanceContextMiddleware)
5049
.middleware(Authorization),
5150
)
5251
.annotateMerge(
@@ -56,30 +55,3 @@ export const ConfigApi = HttpApi.make("config")
5655
description: "Experimental HttpApi surface for selected instance routes.",
5756
}),
5857
)
59-
60-
export const configHandlers = HttpApiBuilder.group(ConfigApi, "config", (handlers) =>
61-
Effect.gen(function* () {
62-
const providerSvc = yield* Provider.Service
63-
const configSvc = yield* Config.Service
64-
65-
const get = Effect.fn("ConfigHttpApi.get")(function* () {
66-
return yield* configSvc.get()
67-
})
68-
69-
const update = Effect.fn("ConfigHttpApi.update")(function* (ctx) {
70-
yield* configSvc.update(ctx.payload, { dispose: false })
71-
yield* markInstanceForDisposal(yield* InstanceState.context)
72-
return ctx.payload
73-
})
74-
75-
const providers = Effect.fn("ConfigHttpApi.providers")(function* () {
76-
const providers = yield* providerSvc.list()
77-
return {
78-
providers: Object.values(providers),
79-
default: Provider.defaultModelIDs(providers),
80-
}
81-
})
82-
83-
return handlers.handle("get", get).handle("update", update).handle("providers", providers)
84-
}),
85-
)

0 commit comments

Comments
 (0)