|
|
@@ -54,6 +54,7 @@ import { Spinner } from "./spinner"
|
|
|
import { TextShimmer } from "./text-shimmer"
|
|
|
import { AnimatedCountList } from "./tool-count-summary"
|
|
|
import { ToolStatusTitle } from "./tool-status-title"
|
|
|
+import { patchFiles } from "./apply-patch-file"
|
|
|
import { animate } from "motion"
|
|
|
import { useLocation } from "@solidjs/router"
|
|
|
import { attached, inline, kind } from "./message-file"
|
|
|
@@ -2014,24 +2015,12 @@ ToolRegistry.register({
|
|
|
},
|
|
|
})
|
|
|
|
|
|
-interface ApplyPatchFile {
|
|
|
- filePath: string
|
|
|
- relativePath: string
|
|
|
- type: "add" | "update" | "delete" | "move"
|
|
|
- diff: string
|
|
|
- before: string
|
|
|
- after: string
|
|
|
- additions: number
|
|
|
- deletions: number
|
|
|
- movePath?: string
|
|
|
-}
|
|
|
-
|
|
|
ToolRegistry.register({
|
|
|
name: "apply_patch",
|
|
|
render(props) {
|
|
|
const i18n = useI18n()
|
|
|
const fileComponent = useFileComponent()
|
|
|
- const files = createMemo(() => (props.metadata.files ?? []) as ApplyPatchFile[])
|
|
|
+ const files = createMemo(() => patchFiles(props.metadata.files))
|
|
|
const pending = createMemo(() => props.status === "pending" || props.status === "running")
|
|
|
const single = createMemo(() => {
|
|
|
const list = files()
|
|
|
@@ -2137,12 +2126,7 @@ ToolRegistry.register({
|
|
|
<Accordion.Content>
|
|
|
<Show when={visible()}>
|
|
|
<div data-component="apply-patch-file-diff">
|
|
|
- <Dynamic
|
|
|
- component={fileComponent}
|
|
|
- mode="diff"
|
|
|
- before={{ name: file.filePath, contents: file.before }}
|
|
|
- after={{ name: file.movePath ?? file.filePath, contents: file.after }}
|
|
|
- />
|
|
|
+ <Dynamic component={fileComponent} mode="diff" fileDiff={file.view.fileDiff} />
|
|
|
</div>
|
|
|
</Show>
|
|
|
</Accordion.Content>
|
|
|
@@ -2212,12 +2196,7 @@ ToolRegistry.register({
|
|
|
}
|
|
|
>
|
|
|
<div data-component="apply-patch-file-diff">
|
|
|
- <Dynamic
|
|
|
- component={fileComponent}
|
|
|
- mode="diff"
|
|
|
- before={{ name: single()!.filePath, contents: single()!.before }}
|
|
|
- after={{ name: single()!.movePath ?? single()!.filePath, contents: single()!.after }}
|
|
|
- />
|
|
|
+ <Dynamic component={fileComponent} mode="diff" fileDiff={single()!.view.fileDiff} />
|
|
|
</div>
|
|
|
</ToolFileAccordion>
|
|
|
</BasicTool>
|