diff options
| author | Adam <[email protected]> | 2025-11-27 05:05:55 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-11-27 05:05:55 -0600 |
| commit | 50fd416d49c86451462e8d49c9fea1b3f5584d93 (patch) | |
| tree | abf925b08540dd8545adfa98aca20ae7e4d7670a | |
| parent | aef69042479ba66446f0c8f5e60b5cb76d54bfc4 (diff) | |
| download | opencode-50fd416d49c86451462e8d49c9fea1b3f5584d93.tar.gz opencode-50fd416d49c86451462e8d49c9fea1b3f5584d93.zip | |
fix: simpler sanitize
| -rw-r--r-- | packages/ui/src/components/message-part.tsx | 36 | ||||
| -rw-r--r-- | packages/util/src/sanitize.ts | 2 |
2 files changed, 12 insertions, 26 deletions
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx index 40740fa1f..74aa3d98a 100644 --- a/packages/ui/src/components/message-part.tsx +++ b/packages/ui/src/components/message-part.tsx @@ -17,7 +17,7 @@ import { Diff } from "./diff" import { DiffChanges } from "./diff-changes" import { Markdown } from "./markdown" import { getDirectory, getFilename } from "@opencode-ai/util/path" -import { sanitize, sanitizePart } from "@opencode-ai/util/sanitize" +import { sanitizePart } from "@opencode-ai/util/sanitize" export interface MessageProps { message: MessageType @@ -83,15 +83,10 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp export function Part(props: MessagePartProps) { const component = createMemo(() => PART_MAPPING[props.part.type]) + const part = createMemo(() => sanitizePart(props.part, props.sanitize)) return ( <Show when={component()}> - <Dynamic - component={component()} - part={props.part} - message={props.message} - hideDetails={props.hideDetails} - sanitize={props.sanitize} - /> + <Dynamic component={component()} part={part()} message={props.message} hideDetails={props.hideDetails} /> </Show> ) } @@ -102,7 +97,6 @@ export interface ToolProps { tool: string output?: string hideDetails?: boolean - sanitize?: RegExp } export type ToolComponent = Component<ToolProps> @@ -170,7 +164,6 @@ PART_MAPPING["tool"] = function ToolPartDisplay(props) { metadata={metadata} output={part.state.status === "completed" ? part.state.output : undefined} hideDetails={props.hideDetails} - sanitize={props.sanitize} /> </Match> </Switch> @@ -211,7 +204,7 @@ ToolRegistry.register({ icon="glasses" trigger={{ title: "Read", - subtitle: props.input.filePath ? getFilename(sanitize(props.input.filePath, props.sanitize)) : "", + subtitle: props.input.filePath ? getFilename(props.input.filePath) : "", }} /> ) @@ -222,12 +215,9 @@ ToolRegistry.register({ name: "list", render(props) { return ( - <BasicTool - icon="bullet-list" - trigger={{ title: "List", subtitle: getDirectory(sanitize(props.input.path, props.sanitize) || "/") }} - > + <BasicTool icon="bullet-list" trigger={{ title: "List", subtitle: getDirectory(props.input.path || "/") }}> <Show when={false && props.output}> - <div data-component="tool-output">{sanitize(props.output, props.sanitize)}</div> + <div data-component="tool-output">{props.output}</div> </Show> </BasicTool> ) @@ -335,7 +325,7 @@ ToolRegistry.register({ > <div data-component="tool-output"> <Markdown - text={`\`\`\`command\n$ ${sanitize(props.input.command, props.sanitize)}${props.output ? "\n\n" + props.output : ""}\n\`\`\``} + text={`\`\`\`command\n$ ${props.input.command}${props.output ? "\n\n" + props.output : ""}\n\`\`\``} /> </div> </BasicTool> @@ -355,13 +345,9 @@ ToolRegistry.register({ <div data-slot="message-part-title">Edit</div> <div data-slot="message-part-path"> <Show when={props.input.filePath?.includes("/")}> - <span data-slot="message-part-directory"> - {getDirectory(sanitize(props.input.filePath!, props.sanitize))} - </span> + <span data-slot="message-part-directory">{getDirectory(props.input.filePath!)}</span> </Show> - <span data-slot="message-part-filename"> - {getFilename(sanitize(props.input.filePath ?? "", props.sanitize))} - </span> + <span data-slot="message-part-filename">{getFilename(props.input.filePath ?? "")}</span> </div> </div> <div data-slot="message-part-actions"> @@ -376,11 +362,11 @@ ToolRegistry.register({ <div data-component="edit-content"> <Diff before={{ - name: getFilename(sanitize(props.metadata.filediff.path, props.sanitize)), + name: getFilename(props.metadata.filediff.path), contents: props.metadata.filediff.before, }} after={{ - name: getFilename(sanitize(props.metadata.filediff.path, props.sanitize)), + name: getFilename(props.metadata.filediff.path), contents: props.metadata.filediff.after, }} /> diff --git a/packages/util/src/sanitize.ts b/packages/util/src/sanitize.ts index 270b618ae..38ad2b290 100644 --- a/packages/util/src/sanitize.ts +++ b/packages/util/src/sanitize.ts @@ -2,7 +2,7 @@ import type { Part } from "@opencode-ai/sdk/client" export const sanitize = (text: string | undefined, remove?: RegExp) => (remove ? text?.replace(remove, "") : text) ?? "" -export const sanitizePart = (part: Part, remove: RegExp) => { +export const sanitizePart = (part: Part, remove: RegExp | undefined) => { if (part.type === "text") { part.text = sanitize(part.text, remove) } else if (part.type === "reasoning") { |
