From c50d2b3656f7e50730977752284a7bba8711c72e Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 13 May 2026 22:41:17 -0500 Subject: [PATCH] Refactor event HTTP API route modules (#27441) --- .../src/server/routes/instance/httpapi/api.ts | 2 +- .../routes/instance/httpapi/groups/event.ts | 24 +++++++++++++++++ .../instance/httpapi/{ => handlers}/event.ts | 27 +++---------------- .../server/routes/instance/httpapi/server.ts | 3 ++- .../test/server/httpapi-event.test.ts | 2 +- .../server/httpapi-raw-route-auth.test.ts | 2 +- 6 files changed, 32 insertions(+), 28 deletions(-) create mode 100644 packages/opencode/src/server/routes/instance/httpapi/groups/event.ts rename packages/opencode/src/server/routes/instance/httpapi/{ => handlers}/event.ts (68%) diff --git a/packages/opencode/src/server/routes/instance/httpapi/api.ts b/packages/opencode/src/server/routes/instance/httpapi/api.ts index 4c6e46a455..eff336b3c6 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/api.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/api.ts @@ -4,7 +4,7 @@ import { BusEvent } from "@/bus/bus-event" import { SyncEvent } from "@/sync" import { ConfigApi } from "./groups/config" import { ControlApi } from "./groups/control" -import { EventApi } from "./event" +import { EventApi } from "./groups/event" import { ExperimentalApi } from "./groups/experimental" import { FileApi } from "./groups/file" import { GlobalApi } from "./groups/global" diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/event.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/event.ts new file mode 100644 index 0000000000..7ebc229ee5 --- /dev/null +++ b/packages/opencode/src/server/routes/instance/httpapi/groups/event.ts @@ -0,0 +1,24 @@ +import { Schema } from "effect" +import { HttpApi, HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi" +import { WorkspaceRoutingQuery } from "../middleware/workspace-routing" + +export const EventPaths = { + event: "/event", +} as const + +export const EventApi = HttpApi.make("event").add( + HttpApiGroup.make("event") + .add( + HttpApiEndpoint.get("subscribe", EventPaths.event, { + query: WorkspaceRoutingQuery, + success: Schema.String.pipe(HttpApiSchema.asText({ contentType: "text/event-stream" })), + }).annotateMerge( + OpenApi.annotations({ + identifier: "event.subscribe", + summary: "Subscribe to events", + description: "Get events", + }), + ), + ) + .annotateMerge(OpenApi.annotations({ title: "event", description: "Instance event stream route." })), +) diff --git a/packages/opencode/src/server/routes/instance/httpapi/event.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/event.ts similarity index 68% rename from packages/opencode/src/server/routes/instance/httpapi/event.ts rename to packages/opencode/src/server/routes/instance/httpapi/handlers/event.ts index 05160f55aa..c0bcbc82c0 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/event.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/event.ts @@ -1,35 +1,14 @@ import { Bus } from "@/bus" import * as Log from "@opencode-ai/core/util/log" -import { Effect, Schema } from "effect" +import { Effect } from "effect" import * as Stream from "effect/Stream" import { HttpServerResponse } from "effect/unstable/http" -import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi" +import { HttpApiBuilder } from "effect/unstable/httpapi" import * as Sse from "effect/unstable/encoding/Sse" -import { WorkspaceRoutingQuery } from "./middleware/workspace-routing" +import { EventApi } from "../groups/event" const log = Log.create({ service: "server" }) -export const EventPaths = { - event: "/event", -} as const - -export const EventApi = HttpApi.make("event").add( - HttpApiGroup.make("event") - .add( - HttpApiEndpoint.get("subscribe", EventPaths.event, { - query: WorkspaceRoutingQuery, - success: Schema.String.pipe(HttpApiSchema.asText({ contentType: "text/event-stream" })), - }).annotateMerge( - OpenApi.annotations({ - identifier: "event.subscribe", - summary: "Subscribe to events", - description: "Get events", - }), - ), - ) - .annotateMerge(OpenApi.annotations({ title: "event", description: "Instance event stream route." })), -) - function eventData(data: unknown): Sse.Event { return { _tag: "Event", diff --git a/packages/opencode/src/server/routes/instance/httpapi/server.ts b/packages/opencode/src/server/routes/instance/httpapi/server.ts index 84feef6b0c..cac6351325 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/server.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/server.ts @@ -58,7 +58,8 @@ import { ServerAuth } from "@/server/auth" import { InstanceHttpApi, RootHttpApi } from "./api" import { PublicApi } from "./public" import { authorizationLayer, authorizationRouterMiddleware } from "./middleware/authorization" -import { EventApi, eventHandlers } from "./event" +import { EventApi } from "./groups/event" +import { eventHandlers } from "./handlers/event" import { configHandlers } from "./handlers/config" import { controlHandlers } from "./handlers/control" import { experimentalHandlers } from "./handlers/experimental" diff --git a/packages/opencode/test/server/httpapi-event.test.ts b/packages/opencode/test/server/httpapi-event.test.ts index 3e1547ebf8..3f1d1e1140 100644 --- a/packages/opencode/test/server/httpapi-event.test.ts +++ b/packages/opencode/test/server/httpapi-event.test.ts @@ -2,7 +2,7 @@ import { afterEach, describe, expect, test } from "bun:test" import { Bus } from "../../src/bus" import { Instance } from "../../src/project/instance" import { Server } from "../../src/server/server" -import { EventPaths } from "../../src/server/routes/instance/httpapi/event" +import { EventPaths } from "../../src/server/routes/instance/httpapi/groups/event" import { Event as ServerEvent } from "../../src/server/event" import * as Log from "@opencode-ai/core/util/log" import { Schema } from "effect" diff --git a/packages/opencode/test/server/httpapi-raw-route-auth.test.ts b/packages/opencode/test/server/httpapi-raw-route-auth.test.ts index b1d4af76b8..b75e114847 100644 --- a/packages/opencode/test/server/httpapi-raw-route-auth.test.ts +++ b/packages/opencode/test/server/httpapi-raw-route-auth.test.ts @@ -2,7 +2,7 @@ import { afterEach, describe, expect, test } from "bun:test" import { ConfigProvider, Layer } from "effect" import { HttpRouter } from "effect/unstable/http" import { Instance } from "../../src/project/instance" -import { EventPaths } from "../../src/server/routes/instance/httpapi/event" +import { EventPaths } from "../../src/server/routes/instance/httpapi/groups/event" import { PtyPaths } from "../../src/server/routes/instance/httpapi/groups/pty" import { ExperimentalHttpApiServer } from "../../src/server/routes/instance/httpapi/server" import { PtyID } from "../../src/pty/schema"