workspace-event.ts 884 B

1234567891011121314151617181920212223242526272829303132
  1. export * as WorkspaceEvent from "./workspace-event.js"
  2. import { Schema } from "effect"
  3. import { Event } from "./event.js"
  4. import { WorkspaceID } from "./workspace-id.js"
  5. export const ConnectionStatus = Schema.Struct({
  6. workspaceID: WorkspaceID,
  7. status: Schema.Literals(["connected", "connecting", "disconnected", "error"]),
  8. }).annotate({ identifier: "WorkspaceEvent.ConnectionStatus" })
  9. export interface ConnectionStatus extends Schema.Schema.Type<typeof ConnectionStatus> {}
  10. export const Ready = Event.ephemeral({
  11. type: "workspace.ready",
  12. schema: {
  13. name: Schema.String,
  14. },
  15. })
  16. export const Failed = Event.ephemeral({
  17. type: "workspace.failed",
  18. schema: {
  19. message: Schema.String,
  20. },
  21. })
  22. export const Status = Event.ephemeral({
  23. type: "workspace.status",
  24. schema: ConnectionStatus.fields,
  25. })
  26. export const Definitions = Event.inventory(Ready, Failed, Status)