Download packages/protocol/src/groups/event.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 2.26 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/protocol/src/groups/event.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/protocol/src/groups/event.ts
-
curl -L -o event.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/protocol/src/groups/event.ts
2.26 kB
| import { Event } from "@opencode-ai/schema/event" | |
| import { EventManifest } from "@opencode-ai/schema/event-manifest" | |
| import { Location } from "@opencode-ai/schema/location" | |
| import type { Definition } from "@opencode-ai/schema/event" | |
| import { Schema } from "effect" | |
| import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi" | |
| const fields = { | |
| id: Event.ID, | |
| metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), | |
| durable: Schema.optional(Schema.Struct({ aggregateID: Schema.String, seq: Schema.Int, version: Schema.Int })), | |
| location: Schema.optional(Location.Ref), | |
| } | |
| const schema = <const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) => | |
| Schema.Union([ | |
| ...definitions, | |
| ...(definitions.some((definition) => definition.type === "server.connected") | |
| ? [] | |
| : [ | |
| Schema.Struct({ | |
| ...fields, | |
| type: Schema.Literal("server.connected"), | |
| data: Schema.Struct({}), | |
| }).annotate({ identifier: "V2Event.server.connected" }), | |
| ]), | |
| ]).annotate({ identifier: "V2Event" }) | |
| const make = <const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) => { | |
| const EventSchema = schema(definitions) | |
| return { | |
| schema: EventSchema, | |
| group: HttpApiGroup.make("server.event") | |
| .add( | |
| HttpApiEndpoint.get("event.subscribe", "/api/event", { | |
| success: HttpApiSchema.StreamSse({ data: EventSchema }), | |
| }).annotateMerge( | |
| OpenApi.annotations({ | |
| identifier: "v2.event.subscribe", | |
| summary: "Subscribe to events", | |
| description: "Subscribe to native event payloads for the server.", | |
| }), | |
| ), | |
| ) | |
| .annotateMerge(OpenApi.annotations({ title: "events", description: "Experimental event stream route." })), | |
| } | |
| } | |
| export const makeEventGroup = <const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) => | |
| make(definitions).group | |
| const event = make(EventManifest.ServerDefinitions) | |
| export const EventGroup = event.group | |
| export const OpenCodeEvent = event.schema | |
| export type OpenCodeEvent = typeof OpenCodeEvent.Type | |
| export type OpenCodeEventEncoded = typeof OpenCodeEvent.Encoded | |