import type { CreateWorktreeResult, WorktreeDefaultTabsLaunch, WorktreeSetupLaunch, WorktreeStartupLaunch } from './types' export type RuntimeClientEvent = | { type: 'reposChanged' } | { type: 'worktreesChanged'; repoId: string } | { type: 'activateWorktree' repoId: string worktreeId: string setup?: WorktreeSetupLaunch startup?: WorktreeStartupLaunch defaultTabs?: WorktreeDefaultTabsLaunch } export type RuntimeClientEventStreamMessage = | ({ type: 'ready'; subscriptionId: string } & { snapshot?: { // Reserved for future hydration. Current clients refresh through the // existing repo/worktree RPCs after receiving server events. repos?: unknown[] } }) | RuntimeClientEvent | { type: 'end' } export type RuntimeActivateWorktreeEvent = Extract export function toRuntimeActivateWorktreeEvent( repoId: string, worktreeId: string, setup?: CreateWorktreeResult['setup'], startup?: WorktreeStartupLaunch, defaultTabs?: CreateWorktreeResult['defaultTabs'] ): RuntimeActivateWorktreeEvent { return { type: 'activateWorktree', repoId, worktreeId, ...(setup ? { setup } : {}), ...(startup ? { startup } : {}), ...(defaultTabs ? { defaultTabs } : {}) } }