114 lines
4.2 KiB
TypeScript
114 lines
4.2 KiB
TypeScript
export * as EventManifest from "./event-manifest.js"
|
|
|
|
import { Schema } from "effect"
|
|
import { Agent } from "./agent.js"
|
|
import { Catalog } from "./catalog.js"
|
|
import { Command } from "./command.js"
|
|
import { Config } from "./config.js"
|
|
import { Durable } from "./durable-event-manifest.js"
|
|
import { Event } from "./event.js"
|
|
import { FileSystem } from "./filesystem.js"
|
|
import { FileSystemV1 } from "./filesystem-v1.js"
|
|
import { Form } from "./form.js"
|
|
import { InstallationEvent } from "./installation-event.js"
|
|
import { Integration } from "./integration.js"
|
|
import { LegacyEvent } from "./legacy-event.js"
|
|
import { LspEvent } from "./lsp-event.js"
|
|
import { McpEvent } from "./mcp-event.js"
|
|
import { ModelsDev } from "./models-dev.js"
|
|
import { Permission } from "./permission.js"
|
|
import { PermissionV1 } from "./permission-v1.js"
|
|
import { Plugin } from "./plugin.js"
|
|
import { Project } from "./project.js"
|
|
import { ProjectDirectories } from "./project-directories.js"
|
|
import { Pty } from "./pty.js"
|
|
import { Question } from "./question.js"
|
|
import { QuestionV1 } from "./question-v1.js"
|
|
import { Reference } from "./reference.js"
|
|
import { ServerEvent } from "./server-event.js"
|
|
import { Shell } from "./shell.js"
|
|
import { Skill } from "./skill.js"
|
|
import { SessionCompactionEvent } from "./session-compaction-event.js"
|
|
import { SessionEvent } from "./session-event.js"
|
|
import { SessionStatusEvent } from "./session-status-event.js"
|
|
import { SessionV1 } from "./session-v1.js"
|
|
import { TuiEvent } from "./tui-event.js"
|
|
import { VcsEvent } from "./vcs-event.js"
|
|
import { WorkspaceEvent } from "./workspace-event.js"
|
|
import { WorktreeEvent } from "./worktree-event.js"
|
|
|
|
const sessionV1DurableDefinitions = SessionV1.Event.Definitions.filter(
|
|
(definition) => definition.durability === "durable",
|
|
)
|
|
const sessionV1LiveDefinitions = SessionV1.Event.Definitions.filter(
|
|
(definition) => definition.durability === "ephemeral",
|
|
)
|
|
|
|
const coreDefinitions = Event.inventory(...sessionV1DurableDefinitions, ...SessionEvent.Definitions)
|
|
|
|
const foundationDefinitions = Event.inventory(
|
|
...ModelsDev.Event.Definitions,
|
|
...Integration.Event.Definitions,
|
|
...Catalog.Event.Definitions,
|
|
...Agent.Event.Definitions,
|
|
...coreDefinitions,
|
|
)
|
|
|
|
const featureDefinitions = Event.inventory(
|
|
...FileSystem.Event.Definitions,
|
|
...Reference.Event.Definitions,
|
|
...Permission.Event.Definitions,
|
|
...Plugin.Event.Definitions,
|
|
...ProjectDirectories.Event.Definitions,
|
|
...Command.Event.Definitions,
|
|
...Config.Event.Definitions,
|
|
...Skill.Event.Definitions,
|
|
...Pty.Event.Definitions,
|
|
...Shell.Event.Definitions,
|
|
...Question.Event.Definitions,
|
|
...Form.Event.Definitions,
|
|
)
|
|
|
|
export const ServerDefinitions = Event.inventory(
|
|
...foundationDefinitions,
|
|
...featureDefinitions,
|
|
// Current events the TUI consumes from the public stream.
|
|
...SessionStatusEvent.Definitions,
|
|
...TuiEvent.Definitions,
|
|
...InstallationEvent.Definitions,
|
|
...VcsEvent.Definitions,
|
|
McpEvent.StatusChanged,
|
|
McpEvent.ResourcesChanged,
|
|
// Shared transitional: V1 contracts the current TUI still consumes during
|
|
// the migration (permission.asked/replied, question.asked, session.error).
|
|
// Remove when the TUI moves to the current permission/question surfaces.
|
|
...PermissionV1.Event.Definitions,
|
|
...QuestionV1.Event.Definitions,
|
|
SessionV1.Error,
|
|
)
|
|
export const Server = Event.latest(ServerDefinitions)
|
|
export type ServerEvent = Schema.Schema.Type<(typeof ServerDefinitions)[number]>
|
|
export const isServer = (event: { readonly type: string }): event is ServerEvent => Server.has(event.type)
|
|
|
|
export const Definitions = Event.inventory(
|
|
...foundationDefinitions,
|
|
...sessionV1LiveDefinitions,
|
|
...InstallationEvent.Definitions,
|
|
...featureDefinitions,
|
|
...LspEvent.Definitions,
|
|
...PermissionV1.Event.Definitions,
|
|
...TuiEvent.Definitions,
|
|
...McpEvent.Definitions,
|
|
...LegacyEvent.Definitions,
|
|
...FileSystemV1.Event.Definitions,
|
|
...Project.Event.Definitions,
|
|
...SessionStatusEvent.Definitions,
|
|
...QuestionV1.Event.Definitions,
|
|
...SessionCompactionEvent.Definitions,
|
|
...VcsEvent.Definitions,
|
|
...WorkspaceEvent.Definitions,
|
|
...WorktreeEvent.Definitions,
|
|
...ServerEvent.Definitions,
|
|
)
|
|
export const Latest = Event.latest(Definitions)
|
|
export { Durable }
|