summaryrefslogtreecommitdiffhomepage
path: root/packages/util/src/sanitize.ts
blob: 4bb76239332b97d0e9ee0e307292d0e2e1b5eecc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import type { Part } from "@opencode-ai/sdk/v2/client"

export const sanitize = (text: string | undefined, remove?: RegExp) => (remove ? text?.replace(remove, "") : text) ?? ""

export const sanitizePart = (part: Part, remove: RegExp | undefined) => {
  if (part.type === "text") {
    part.text = sanitize(part.text, remove)
  } else if (part.type === "reasoning") {
    part.text = sanitize(part.text, remove)
  } else if (part.type === "tool") {
    if (part.state.status === "completed" || part.state.status === "error") {
      for (const key in part.state.metadata) {
        if (typeof part.state.metadata[key] === "string") {
          part.state.metadata[key] = sanitize(part.state.metadata[key] as string, remove)
        }
      }
      for (const key in part.state.input) {
        if (typeof part.state.input[key] === "string") {
          part.state.input[key] = sanitize(part.state.input[key] as string, remove)
        }
      }
      if ("error" in part.state) {
        part.state.error = sanitize(part.state.error as string, remove)
      }
    }
  }
  return part
}