import type { ChatChunkType } from '../types'; /** stream-json の assistant/user メッセージ内のコンテンツブロック */ export interface StreamJsonContentBlock { type: 'text' | 'tool_use' | 'tool_result' | 'tool_reference'; text?: string; name?: string; id?: string; input?: Record; tool_use_id?: string; /** 組み込みツールでは string、MCP ツールでは {type, text}[] or {type, source}[] の配列 */ content?: string | Array<{ type: string; text?: string; data?: string; source?: { type: string; media_type?: string; data?: string; }; }>; } /** stream-json の MCP サーバー接続情報 */ export interface StreamJsonMcpServer { name: string; status: string; error?: string; } /** stream-json result イベントの usage 情報(CLI の生出力フィールド名を snake_case で保持) */ export interface StreamJsonUsage { input_tokens: number; output_tokens: number; cache_creation_input_tokens?: number; cache_read_input_tokens?: number; total_cost_usd?: number; } /** stream-json の1行(NDJSON)の型定義 */ export interface StreamJsonLine { type: string; subtype?: string; message?: { content?: StreamJsonContentBlock[]; }; result?: string; usage?: Omit; total_cost_usd?: number; is_error?: boolean; api_error_status?: number; terminal_reason?: string; error_status?: number; error?: string; attempt?: number; tools?: string[]; mcp_servers?: StreamJsonMcpServer[]; } /** * result イベントが API エラーだった場合の要約。 * runner が終了コード非0時にユーザー向けメッセージを分類・ログ出力するために使う。 */ export interface StreamJsonError { text: string; apiErrorStatus?: number; } /** * stream-json の NDJSON 1行をパースし、テキストやツール呼び出し情報を処理する * sendChunk は fire-and-forget で呼び出される(同期的に状態を返すため) * * @returns newSentTextLength: 送信済みテキスト長, text: resultイベントのテキスト(undefinedなら未取得), * toolExecutionChange: ツール実行状態の変化 ('started' | 'finished' | undefined), * usage: resultイベントのトークン使用量・コスト情報(undefinedなら未取得), * error: resultイベントが API エラー(is_error)だった場合の要約(undefinedなら成功) */ export declare function processStreamJsonLine(line: string, sendChunk: (type: ChatChunkType, content: string) => Promise, pid: number, state: { sentTextLength: number; pendingFileUploadIds?: Set; pendingToolNames?: Map; }): { newSentTextLength: number; text?: string; toolExecutionChange?: 'started' | 'finished'; usage?: StreamJsonUsage; error?: StreamJsonError; }; /** * file_upload ツールの結果をパースし、file_attachment チャンク用データを返す * * MCP ツールの tool_result.content は配列形式: [{type: "text", text: "..."}] * 組み込みツールの tool_result.content は文字列形式 */ export declare function parseFileUploadResult(content: string | Array<{ type: string; text?: string; }> | undefined): { fileId: string; s3Key: string; filename: string; contentType: string; fileSize: number; } | null; //# sourceMappingURL=claude-code-stream.d.ts.map