11import { Schema } from "effect"
22import { HttpApi } from "effect/unstable/httpapi"
33import { EventV2 } from "@opencode-ai/core/event"
4+ import { InstanceDisposed } from "@/server/event"
5+ import { Question } from "@/question"
46import { ConfigApi } from "./groups/config"
57import { ControlApi } from "./groups/control"
68import { EventApi } from "./groups/event"
79import { ExperimentalApi } from "./groups/experimental"
810import { FileApi } from "./groups/file"
9- import { GlobalApi } from "./groups/global"
1011import { InstanceApi } from "./groups/instance"
1112import { McpApi } from "./groups/mcp"
1213import { PermissionApi } from "./groups/permission"
@@ -19,11 +20,13 @@ import { SyncApi } from "./groups/sync"
1920import { TuiApi } from "./groups/tui"
2021import { WorkspaceApi } from "./groups/workspace"
2122import { V2Api } from "./groups/v2"
23+ // GlobalEventSchema snapshots the registry after event-producing groups register their variants.
24+ import { GlobalApi } from "./groups/global"
2225import { Authorization } from "./middleware/authorization"
2326import { SchemaErrorMiddleware } from "./middleware/schema-error"
2427
25- const EventSchema = Schema . Union (
26- EventV2 . registry
28+ const EventSchema = Schema . Union ( [
29+ ... EventV2 . registry
2730 . values ( )
2831 . map ( ( definition ) =>
2932 Schema . Struct ( {
@@ -33,7 +36,8 @@ const EventSchema = Schema.Union(
3336 } ) . annotate ( { identifier : `Event.${ definition . type } ` } ) ,
3437 )
3538 . toArray ( ) ,
36- ) . annotate ( { identifier : "Event" } )
39+ InstanceDisposed ,
40+ ] ) . annotate ( { identifier : "Event" } )
3741
3842export const RootHttpApi = HttpApi . make ( "opencode-root" )
3943 . addHttpApi ( ControlApi )
@@ -64,7 +68,7 @@ export const OpenCodeHttpApi = HttpApi.make("opencode")
6468 . addHttpApi ( EventApi )
6569 . addHttpApi ( InstanceHttpApi )
6670 . addHttpApi ( PtyConnectApi )
67- . annotate ( HttpApi . AdditionalSchemas , [ EventSchema ] )
71+ . annotate ( HttpApi . AdditionalSchemas , [ EventSchema , Question . Replied , Question . Rejected ] )
6872
6973export type RootHttpApiType = typeof RootHttpApi
7074export type InstanceHttpApiType = typeof InstanceHttpApi
0 commit comments