tweak apply_patch tool description
This commit is contained in:
@@ -12,13 +12,14 @@ import { assertExternalDirectory } from "./external-directory"
|
|||||||
import { trimDiff } from "./edit"
|
import { trimDiff } from "./edit"
|
||||||
import { LSP } from "../lsp"
|
import { LSP } from "../lsp"
|
||||||
import { Filesystem } from "../util/filesystem"
|
import { Filesystem } from "../util/filesystem"
|
||||||
|
import DESCRIPTION from "./apply_patch.txt"
|
||||||
|
|
||||||
const PatchParams = z.object({
|
const PatchParams = z.object({
|
||||||
patchText: z.string().describe("The full patch text that describes all changes to be made"),
|
patchText: z.string().describe("The full patch text that describes all changes to be made"),
|
||||||
})
|
})
|
||||||
|
|
||||||
export const ApplyPatchTool = Tool.define("apply_patch", {
|
export const ApplyPatchTool = Tool.define("apply_patch", {
|
||||||
description: "Use the `apply_patch` tool to edit files. This is a FREEFORM tool, so do not wrap the patch in JSON.",
|
description: DESCRIPTION,
|
||||||
parameters: PatchParams,
|
parameters: PatchParams,
|
||||||
async execute(params, ctx) {
|
async execute(params, ctx) {
|
||||||
if (!params.patchText) {
|
if (!params.patchText) {
|
||||||
|
|||||||
@@ -1 +1,33 @@
|
|||||||
Use the `apply_patch` tool to edit files. This is a FREEFORM tool, so do not wrap the patch in JSON.
|
Use the `apply_patch` tool to edit files. This is a FREEFORM tool, so do not wrap the patch in JSON. Your patch language is a stripped‑down, file‑oriented diff format designed to be easy to parse and safe to apply. You can think of it as a high‑level envelope:
|
||||||
|
|
||||||
|
*** Begin Patch
|
||||||
|
[ one or more file sections ]
|
||||||
|
*** End Patch
|
||||||
|
|
||||||
|
Within that envelope, you get a sequence of file operations.
|
||||||
|
You MUST include a header to specify the action you are taking.
|
||||||
|
Each operation starts with one of three headers:
|
||||||
|
|
||||||
|
*** Add File: <path> - create a new file. Every following line is a + line (the initial contents).
|
||||||
|
*** Delete File: <path> - remove an existing file. Nothing follows.
|
||||||
|
*** Update File: <path> - patch an existing file in place (optionally with a rename).
|
||||||
|
|
||||||
|
Example patch:
|
||||||
|
|
||||||
|
```
|
||||||
|
*** Begin Patch
|
||||||
|
*** Add File: hello.txt
|
||||||
|
+Hello world
|
||||||
|
*** Update File: src/app.py
|
||||||
|
*** Move to: src/main.py
|
||||||
|
@@ def greet():
|
||||||
|
-print("Hi")
|
||||||
|
+print("Hello, world!")
|
||||||
|
*** Delete File: obsolete.txt
|
||||||
|
*** End Patch
|
||||||
|
```
|
||||||
|
|
||||||
|
It is important to remember:
|
||||||
|
|
||||||
|
- You must include a header with your intended action (Add/Delete/Update)
|
||||||
|
- You must prefix new lines with `+` even when creating a new file
|
||||||
|
|||||||
Reference in New Issue
Block a user