382 lines · 11.1 KB · TypeScript
RawDownload
import { Schema } from "effect";import * as Rpc from "effect/unstable/rpc/Rpc";import * as RpcGroup from "effect/unstable/rpc/RpcGroup"; import { OpenError, OpenInEditorInput } from "./editor";import { AuthAccessStreamEvent } from "./auth";import {  GitActionProgressEvent,  GitCheckoutInput,  GitCheckoutResult,  GitCommandError,  GitCreateBranchInput,  GitCreateBranchResult,  GitCreateWorktreeInput,  GitCreateWorktreeResult,  GitInitInput,  GitListBranchesInput,  GitListBranchesResult,  GitManagerServiceError,  GitPreparePullRequestThreadInput,  GitPreparePullRequestThreadResult,  GitPullInput,  GitPullRequestRefInput,  GitPullResult,  GitRemoveWorktreeInput,  GitResolvePullRequestResult,  GitRunStackedActionInput,  GitStatusInput,  GitStatusResult,  GitStatusStreamEvent,} from "./git";import { KeybindingsConfigError } from "./keybindings";import {  ClientOrchestrationCommand,  OrchestrationEvent,  ORCHESTRATION_WS_METHODS,  OrchestrationDispatchCommandError,  OrchestrationGetFullThreadDiffError,  OrchestrationGetFullThreadDiffInput,  OrchestrationGetSnapshotError,  OrchestrationGetSnapshotInput,  OrchestrationGetTurnDiffError,  OrchestrationGetTurnDiffInput,  OrchestrationReplayEventsError,  OrchestrationReplayEventsInput,  OrchestrationRpcSchemas,} from "./orchestration";import {  ProjectSearchEntriesError,  ProjectSearchEntriesInput,  ProjectSearchEntriesResult,  ProjectWriteFileError,  ProjectWriteFileInput,  ProjectWriteFileResult,} from "./project";import {  TerminalClearInput,  TerminalCloseInput,  TerminalError,  TerminalEvent,  TerminalOpenInput,  TerminalResizeInput,  TerminalRestartInput,  TerminalSessionSnapshot,  TerminalWriteInput,} from "./terminal";import {  ServerConfigStreamEvent,  ServerConfig,  ServerLifecycleStreamEvent,  ServerProviderUpdatedPayload,  ServerUpsertKeybindingInput,  ServerUpsertKeybindingResult,} from "./server";import { ServerSettings, ServerSettingsError, ServerSettingsPatch } from "./settings"; export const WS_METHODS = {  // Project registry methods  projectsList: "projects.list",  projectsAdd: "projects.add",  projectsRemove: "projects.remove",  projectsSearchEntries: "projects.searchEntries",  projectsWriteFile: "projects.writeFile",   // Shell methods  shellOpenInEditor: "shell.openInEditor",   // Git methods  gitPull: "git.pull",  gitRefreshStatus: "git.refreshStatus",  gitRunStackedAction: "git.runStackedAction",  gitListBranches: "git.listBranches",  gitCreateWorktree: "git.createWorktree",  gitRemoveWorktree: "git.removeWorktree",  gitCreateBranch: "git.createBranch",  gitCheckout: "git.checkout",  gitInit: "git.init",  gitResolvePullRequest: "git.resolvePullRequest",  gitPreparePullRequestThread: "git.preparePullRequestThread",   // Terminal methods  terminalOpen: "terminal.open",  terminalWrite: "terminal.write",  terminalResize: "terminal.resize",  terminalClear: "terminal.clear",  terminalRestart: "terminal.restart",  terminalClose: "terminal.close",   // Server meta  serverGetConfig: "server.getConfig",  serverRefreshProviders: "server.refreshProviders",  serverUpsertKeybinding: "server.upsertKeybinding",  serverGetSettings: "server.getSettings",  serverUpdateSettings: "server.updateSettings",   // Streaming subscriptions  subscribeGitStatus: "subscribeGitStatus",  subscribeOrchestrationDomainEvents: "subscribeOrchestrationDomainEvents",  subscribeTerminalEvents: "subscribeTerminalEvents",  subscribeServerConfig: "subscribeServerConfig",  subscribeServerLifecycle: "subscribeServerLifecycle",  subscribeAuthAccess: "subscribeAuthAccess",} as const; export const WsServerUpsertKeybindingRpc = Rpc.make(WS_METHODS.serverUpsertKeybinding, {  payload: ServerUpsertKeybindingInput,  success: ServerUpsertKeybindingResult,  error: KeybindingsConfigError,}); export const WsServerGetConfigRpc = Rpc.make(WS_METHODS.serverGetConfig, {  payload: Schema.Struct({}),  success: ServerConfig,  error: Schema.Union([KeybindingsConfigError, ServerSettingsError]),}); export const WsServerRefreshProvidersRpc = Rpc.make(WS_METHODS.serverRefreshProviders, {  payload: Schema.Struct({}),  success: ServerProviderUpdatedPayload,}); export const WsServerGetSettingsRpc = Rpc.make(WS_METHODS.serverGetSettings, {  payload: Schema.Struct({}),  success: ServerSettings,  error: ServerSettingsError,}); export const WsServerUpdateSettingsRpc = Rpc.make(WS_METHODS.serverUpdateSettings, {  payload: Schema.Struct({ patch: ServerSettingsPatch }),  success: ServerSettings,  error: ServerSettingsError,}); export const WsProjectsSearchEntriesRpc = Rpc.make(WS_METHODS.projectsSearchEntries, {  payload: ProjectSearchEntriesInput,  success: ProjectSearchEntriesResult,  error: ProjectSearchEntriesError,}); export const WsProjectsWriteFileRpc = Rpc.make(WS_METHODS.projectsWriteFile, {  payload: ProjectWriteFileInput,  success: ProjectWriteFileResult,  error: ProjectWriteFileError,}); export const WsShellOpenInEditorRpc = Rpc.make(WS_METHODS.shellOpenInEditor, {  payload: OpenInEditorInput,  error: OpenError,}); export const WsSubscribeGitStatusRpc = Rpc.make(WS_METHODS.subscribeGitStatus, {  payload: GitStatusInput,  success: GitStatusStreamEvent,  error: GitManagerServiceError,  stream: true,}); export const WsGitPullRpc = Rpc.make(WS_METHODS.gitPull, {  payload: GitPullInput,  success: GitPullResult,  error: GitCommandError,}); export const WsGitRefreshStatusRpc = Rpc.make(WS_METHODS.gitRefreshStatus, {  payload: GitStatusInput,  success: GitStatusResult,  error: GitManagerServiceError,}); export const WsGitRunStackedActionRpc = Rpc.make(WS_METHODS.gitRunStackedAction, {  payload: GitRunStackedActionInput,  success: GitActionProgressEvent,  error: GitManagerServiceError,  stream: true,}); export const WsGitResolvePullRequestRpc = Rpc.make(WS_METHODS.gitResolvePullRequest, {  payload: GitPullRequestRefInput,  success: GitResolvePullRequestResult,  error: GitManagerServiceError,}); export const WsGitPreparePullRequestThreadRpc = Rpc.make(WS_METHODS.gitPreparePullRequestThread, {  payload: GitPreparePullRequestThreadInput,  success: GitPreparePullRequestThreadResult,  error: GitManagerServiceError,}); export const WsGitListBranchesRpc = Rpc.make(WS_METHODS.gitListBranches, {  payload: GitListBranchesInput,  success: GitListBranchesResult,  error: GitCommandError,}); export const WsGitCreateWorktreeRpc = Rpc.make(WS_METHODS.gitCreateWorktree, {  payload: GitCreateWorktreeInput,  success: GitCreateWorktreeResult,  error: GitCommandError,}); export const WsGitRemoveWorktreeRpc = Rpc.make(WS_METHODS.gitRemoveWorktree, {  payload: GitRemoveWorktreeInput,  error: GitCommandError,}); export const WsGitCreateBranchRpc = Rpc.make(WS_METHODS.gitCreateBranch, {  payload: GitCreateBranchInput,  success: GitCreateBranchResult,  error: GitCommandError,}); export const WsGitCheckoutRpc = Rpc.make(WS_METHODS.gitCheckout, {  payload: GitCheckoutInput,  success: GitCheckoutResult,  error: GitCommandError,}); export const WsGitInitRpc = Rpc.make(WS_METHODS.gitInit, {  payload: GitInitInput,  error: GitCommandError,}); export const WsTerminalOpenRpc = Rpc.make(WS_METHODS.terminalOpen, {  payload: TerminalOpenInput,  success: TerminalSessionSnapshot,  error: TerminalError,}); export const WsTerminalWriteRpc = Rpc.make(WS_METHODS.terminalWrite, {  payload: TerminalWriteInput,  error: TerminalError,}); export const WsTerminalResizeRpc = Rpc.make(WS_METHODS.terminalResize, {  payload: TerminalResizeInput,  error: TerminalError,}); export const WsTerminalClearRpc = Rpc.make(WS_METHODS.terminalClear, {  payload: TerminalClearInput,  error: TerminalError,}); export const WsTerminalRestartRpc = Rpc.make(WS_METHODS.terminalRestart, {  payload: TerminalRestartInput,  success: TerminalSessionSnapshot,  error: TerminalError,}); export const WsTerminalCloseRpc = Rpc.make(WS_METHODS.terminalClose, {  payload: TerminalCloseInput,  error: TerminalError,}); export const WsOrchestrationGetSnapshotRpc = Rpc.make(ORCHESTRATION_WS_METHODS.getSnapshot, {  payload: OrchestrationGetSnapshotInput,  success: OrchestrationRpcSchemas.getSnapshot.output,  error: OrchestrationGetSnapshotError,}); export const WsOrchestrationDispatchCommandRpc = Rpc.make(  ORCHESTRATION_WS_METHODS.dispatchCommand,  {    payload: ClientOrchestrationCommand,    success: OrchestrationRpcSchemas.dispatchCommand.output,    error: OrchestrationDispatchCommandError,  },); export const WsOrchestrationGetTurnDiffRpc = Rpc.make(ORCHESTRATION_WS_METHODS.getTurnDiff, {  payload: OrchestrationGetTurnDiffInput,  success: OrchestrationRpcSchemas.getTurnDiff.output,  error: OrchestrationGetTurnDiffError,}); export const WsOrchestrationGetFullThreadDiffRpc = Rpc.make(  ORCHESTRATION_WS_METHODS.getFullThreadDiff,  {    payload: OrchestrationGetFullThreadDiffInput,    success: OrchestrationRpcSchemas.getFullThreadDiff.output,    error: OrchestrationGetFullThreadDiffError,  },); export const WsOrchestrationReplayEventsRpc = Rpc.make(ORCHESTRATION_WS_METHODS.replayEvents, {  payload: OrchestrationReplayEventsInput,  success: OrchestrationRpcSchemas.replayEvents.output,  error: OrchestrationReplayEventsError,}); export const WsSubscribeOrchestrationDomainEventsRpc = Rpc.make(  WS_METHODS.subscribeOrchestrationDomainEvents,  {    payload: Schema.Struct({}),    success: OrchestrationEvent,    stream: true,  },); export const WsSubscribeTerminalEventsRpc = Rpc.make(WS_METHODS.subscribeTerminalEvents, {  payload: Schema.Struct({}),  success: TerminalEvent,  stream: true,}); export const WsSubscribeServerConfigRpc = Rpc.make(WS_METHODS.subscribeServerConfig, {  payload: Schema.Struct({}),  success: ServerConfigStreamEvent,  error: Schema.Union([KeybindingsConfigError, ServerSettingsError]),  stream: true,}); export const WsSubscribeServerLifecycleRpc = Rpc.make(WS_METHODS.subscribeServerLifecycle, {  payload: Schema.Struct({}),  success: ServerLifecycleStreamEvent,  stream: true,}); export const WsSubscribeAuthAccessRpc = Rpc.make(WS_METHODS.subscribeAuthAccess, {  payload: Schema.Struct({}),  success: AuthAccessStreamEvent,  stream: true,}); export const WsRpcGroup = RpcGroup.make(  WsServerGetConfigRpc,  WsServerRefreshProvidersRpc,  WsServerUpsertKeybindingRpc,  WsServerGetSettingsRpc,  WsServerUpdateSettingsRpc,  WsProjectsSearchEntriesRpc,  WsProjectsWriteFileRpc,  WsShellOpenInEditorRpc,  WsSubscribeGitStatusRpc,  WsGitPullRpc,  WsGitRefreshStatusRpc,  WsGitRunStackedActionRpc,  WsGitResolvePullRequestRpc,  WsGitPreparePullRequestThreadRpc,  WsGitListBranchesRpc,  WsGitCreateWorktreeRpc,  WsGitRemoveWorktreeRpc,  WsGitCreateBranchRpc,  WsGitCheckoutRpc,  WsGitInitRpc,  WsTerminalOpenRpc,  WsTerminalWriteRpc,  WsTerminalResizeRpc,  WsTerminalClearRpc,  WsTerminalRestartRpc,  WsTerminalCloseRpc,  WsSubscribeOrchestrationDomainEventsRpc,  WsSubscribeTerminalEventsRpc,  WsSubscribeServerConfigRpc,  WsSubscribeServerLifecycleRpc,  WsSubscribeAuthAccessRpc,  WsOrchestrationGetSnapshotRpc,  WsOrchestrationDispatchCommandRpc,  WsOrchestrationGetTurnDiffRpc,  WsOrchestrationGetFullThreadDiffRpc,  WsOrchestrationReplayEventsRpc,);