| 59 | } |
| 60 | |
| 61 | function reasoningBody(raw: string): RunEntryBody { |
| 62 | const clean = raw.replace(/\[REDACTED\]/g, "") |
| 63 | if (!clean) { |
| 64 | return RUN_ENTRY_NONE |
| 65 | } |
| 66 | |
| 67 | const lead = clean.match(/^\n+/)?.[0] ?? "" |
| 68 | const body = lead ? clean.slice(lead.length) : clean |
| 69 | const mark = "Thinking:" |
| 70 | if (body.startsWith(mark)) { |
| 71 | return codeBody(`${lead}_Thinking:_ ${body.slice(mark.length).trimStart()}`, "markdown") |
| 72 | } |
| 73 | |
| 74 | return codeBody(clean, "markdown") |
| 75 | } |
| 76 | |
| 77 | function systemBody(raw: string, phase: StreamCommit["phase"]): RunEntryBody { |
| 78 | return textBody(phase === "progress" ? raw : raw.trim()) |