/** * downloads domain contract: Host-only GET download surfaces with no wire * envelope. Carrier routes answer these directly, and the browser * `IApiClient` never exposes them. */ import type { SessionId } from '@deepseek-ai/dsh-session/types' /** Host-only download surfaces (no wire envelope; absent from IApiClient). */ export interface DownloadsApi { /** * Stream one session-log ZIP — the root artifact verbatim plus each subagent * descendant's — as an attachment response. The carrier's GET route answers * this directly; the browser never calls it. * @param request - the root session id and whether to include descendants. * @param signal - cancellation for the underlying reads. * @returns the ZIP attachment response; missing services answer 500 and a * missing root session 404 before any byte is produced. */ sessionLog( request: { sessionId: SessionId; includeDescendants?: boolean }, signal: AbortSignal, ): Promise }