summaryrefslogtreecommitdiffhomepage
path: root/packages/util/src
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-11-25 16:02:27 -0600
committerAdam <[email protected]>2025-11-25 16:02:31 -0600
commit447713244820e875e192a5815c4d8bc76c03b40f (patch)
treea3df06b1df0585a8387c37826ea516ce08169289 /packages/util/src
parenteaeea45ace01e20405d49d1a659030a4d131dc83 (diff)
downloadopencode-447713244820e875e192a5815c4d8bc76c03b40f.tar.gz
opencode-447713244820e875e192a5815c4d8bc76c03b40f.zip
fix: sanitize absolute paths
Diffstat (limited to 'packages/util/src')
-rw-r--r--packages/util/src/sanitize.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/util/src/sanitize.ts b/packages/util/src/sanitize.ts
new file mode 100644
index 000000000..892fe87cf
--- /dev/null
+++ b/packages/util/src/sanitize.ts
@@ -0,0 +1,28 @@
+import { Part } from "@opencode-ai/sdk"
+
+export const sanitize = (text: string | undefined, remove?: RegExp) => (remove ? text?.replace(remove, "") : text) ?? ""
+
+export const sanitizePart = (part: Part, remove: RegExp) => {
+ 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
+}