{"content":"SDK 0.3 feature integration: subagent transcript viewer (Step 2 of subagent feature).\n\nBranch: feat/sdk-0.3-feature-integration. Commit fcdba93.\n\nStep 2: read and display each subagent's complete conversation from disk via SDK listSubagents + getSubagentMessages.\n\nMain: new coworkSubagentTranscript.ts with flattenSubagentTranscriptMessages() — defensively flattens the SDK's opaque SessionMessage[].message (CLI-internal JSONL: user lines carry string/tool_result content; assistant lines carry Anthropic thinking/text/tool_use blocks) into CoworkMessage[] without touching the store. Unknown block types (model-specific extras like deepseek reasoning_content) tolerated. New IPC: cowork:session:getSubagents + cowork:session:getSubagentMessages (with limit). Broken transcripts return empty arrays.\n\nRenderer: preload + electron.d.ts + cowork service methods. SubagentPanel takes sessionId; on open loads post-hoc subagent ids and merges with live task rows (task_id != agentId so post-hoc entries are additional rows with a document icon). Each row has +/− toggle lazily loading the flattened transcript (user/assistant/thinking/tool lines, 300-char truncation, 200-message cap). zh+en.\n\nNote: post-hoc transcripts are local-mode only — sandbox runs the SDK in the VM so its transcripts aren't on the host disk (panel shows a friendly error).\n\nSubagent feature complete: live panel (Step 1) + post-hoc transcript viewer (Step 2).","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}