import * as Schema from "effect/Schema"; import { ProjectId, ThreadId, TrimmedNonEmptyString } from "./baseSchemas.ts"; export const DESKTOP_APP_ACTIVATION_PROTOCOL_VERSION = 1 as const; export const DesktopAppActivationPlatform = Schema.Literals(["darwin", "linux", "win32"]); export type DesktopAppActivationPlatform = typeof DesktopAppActivationPlatform.Type; export const DesktopAppActivationRequest = Schema.Struct({ version: Schema.Literal(DESKTOP_APP_ACTIVATION_PROTOCOL_VERSION), requestId: TrimmedNonEmptyString, type: Schema.Literal("open-workspace"), workspaceRoot: TrimmedNonEmptyString, platform: DesktopAppActivationPlatform, }); export type DesktopAppActivationRequest = typeof DesktopAppActivationRequest.Type; export const DesktopAppActivationErrorCode = Schema.Literals([ "invalid-request", "renderer-unavailable", "environment-unavailable", "platform-mismatch", "project-create-failed", "thread-open-failed", "request-timeout", "internal-error", ]); export type DesktopAppActivationErrorCode = typeof DesktopAppActivationErrorCode.Type; export const DesktopAppActivationSuccess = Schema.Struct({ version: Schema.Literal(DESKTOP_APP_ACTIVATION_PROTOCOL_VERSION), requestId: TrimmedNonEmptyString, ok: Schema.Literal(true), projectId: ProjectId, threadId: ThreadId, }); export type DesktopAppActivationSuccess = typeof DesktopAppActivationSuccess.Type; export const DesktopAppActivationFailure = Schema.Struct({ version: Schema.Literal(DESKTOP_APP_ACTIVATION_PROTOCOL_VERSION), requestId: TrimmedNonEmptyString, ok: Schema.Literal(false), code: DesktopAppActivationErrorCode, message: TrimmedNonEmptyString, }); export type DesktopAppActivationFailure = typeof DesktopAppActivationFailure.Type; export const DesktopAppActivationResponse = Schema.Union([ DesktopAppActivationSuccess, DesktopAppActivationFailure, ]); export type DesktopAppActivationResponse = typeof DesktopAppActivationResponse.Type;