Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
1.5 kB · 57 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import type { ChildProcess } from 'child_process'import { z } from 'zod/v4'import { lazySchema } from '../utils/lazySchema.js'
export const connectResponseSchema = lazySchema(() => z.object({ session_id: z.string(), ws_url: z.string(), work_dir: z.string().optional(), }),)
export type ServerConfig = { port: number host: string authToken: string unix?: string /** Idle timeout for detached sessions (ms). 0 = never expire. */ idleTimeoutMs?: number /** Maximum number of concurrent sessions. */ maxSessions?: number /** Default workspace directory for sessions that don't specify cwd. */ workspace?: string}
export type SessionState = | 'starting' | 'running' | 'detached' | 'stopping' | 'stopped'
export type SessionInfo = { id: string status: SessionState createdAt: number workDir: string process: ChildProcess | null sessionKey?: string}
/** * Stable session key → session metadata. Persisted to ~/.claude/server-sessions.json * so sessions can be resumed across server restarts. */export type SessionIndexEntry = { /** Server-assigned session ID (matches the subprocess's claude session). */ sessionId: string /** The claude transcript session ID for --resume. Same as sessionId for direct sessions. */ transcriptSessionId: string cwd: string permissionMode?: string createdAt: number lastActiveAt: number}
export type SessionIndex = Record<string, SessionIndexEntry>