@heyhuynhgiabuu/pi-diff 0.7.5 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,7 +26,7 @@ A [pi](https://pi.dev) extension that replaces the default `write` and `edit` to
26
26
  - **LRU cache** — singleton Shiki highlighter with 192-entry cache for fast re-renders
27
27
  - **Large diff fallback** — gracefully degrades (skips highlighting, still shows diff structure) for files > 80k chars
28
28
  - **Fully customizable** — every color and threshold is overridable via environment variables
29
- - **Edit guard** — blocks `edit` tool calls whose `oldText` is no longer in the target file, forcing the model to re-read before retrying (prevents stale-`oldText` retry loops)
29
+ - **Strict edit safety** — delegates matching, uniqueness, overlap checks, mutation queues, aborts, BOM, and EOL preservation to Pi's SDK edit tool
30
30
 
31
31
  ## Install
32
32
 
@@ -51,7 +51,7 @@ pi-diff wraps the built-in `write` and `edit` tools from the pi SDK, including s
51
51
  3. **After the write** — computes a structured diff between old and new content
52
52
  4. **Renders** the diff with syntax highlighting and word-level emphasis
53
53
 
54
- For `edit` calls, a `tool_call` handler runs **before** the tool executes and verifies that every `oldText` in the request is still present in the target file. If any `oldText` is missing, the call is blocked with a clear `VERIFY before EDIT` error, preventing the model from re-trying with stale text from a prior read.
54
+ For `edit` calls, Pi's SDK performs matching, uniqueness and overlap validation, mutation queueing, and the file write. pi-diff adapts the SDK's returned unified patch into its syntax-highlighted renderer, so the preview reflects the actual matched source rather than the requested text.
55
55
 
56
56
  The rendering pipeline:
57
57
 
@@ -80,6 +80,18 @@ Both views show:
80
80
 
81
81
  ## Configuration
82
82
 
83
+ ### Disable pi-diff tools
84
+
85
+ Add `disabledTools` to `pi-diff.json` to omit pi-diff tools. Disabling `write` or `edit` leaves Pi's built-in tool available; disabling `apply_patch` removes that custom tool.
86
+
87
+ ```json
88
+ {
89
+ "disabledTools": ["apply_patch"]
90
+ }
91
+ ```
92
+
93
+ See [CONFIG.md](CONFIG.md) for the full `pi-diff.json` reference.
94
+
83
95
  ### Diff Theme Presets
84
96
 
85
97
  pi-diff ships with built-in theme presets optimized for different terminal backgrounds. Add to your `.pi/settings.json`:
@@ -199,13 +211,11 @@ export DIFF_SPLIT_MIN_WIDTH=120
199
211
  ```
200
212
  src/
201
213
  ├── index.ts # Extension entry point — wraps write/edit tools with diff rendering
202
- ├── edit-guard.ts # tool_call handler that blocks stale oldText in edit calls
203
- ├── edit-guard.test.ts # Unit tests for the edit guard
204
214
  ├── core/ # Pure data layer: diff parsing, conflict detection, line resolution
205
215
  │ ├── config.ts
206
216
  │ ├── conflicts.ts
207
217
  │ ├── diff.ts # parseDiff, parsePatchFiles, resolveSepStyle
208
- │ ├── replace.ts # safe in-place text replacement
218
+ │ ├── replace.ts # conservative apply_patch matcher and legacy helpers
209
219
  │ ├── resolve-lines.ts
210
220
  │ └── *.test.ts
211
221
  └── review/ # Shared diff-rendering primitives used by the main extension
@@ -275,8 +285,6 @@ pi install .
275
285
  pi-diff is a **pi extension** — a TypeScript file that exports a default function receiving the pi API:
276
286
 
277
287
  ```typescript
278
- import { registerEditGuard } from "./edit-guard.js";
279
-
280
288
  export default function piDiffExtension(pi: ExtensionAPI): void {
281
289
  // Wrap the built-in write/edit tools with diff rendering
282
290
  const origWrite = createWriteTool(cwd);
@@ -290,8 +298,6 @@ export default function piDiffExtension(pi: ExtensionAPI): void {
290
298
  renderResult: (...) => { /* render diff */ },
291
299
  });
292
300
 
293
- // Block stale-oldText edit calls before they run
294
- registerEditGuard(pi);
295
301
  }
296
302
  ```
297
303
 
@@ -2,7 +2,7 @@
2
2
  * apply_patch — Multi-file patch engine.
3
3
  *
4
4
  * One call can add, update, delete, or move multiple files.
5
- * Uses replace.ts cascading replacer for oldText → newText matching.
5
+ * Uses replace.ts's conservative matcher for oldText → newText matching.
6
6
  */
7
7
  export interface ApplyPatchChange {
8
8
  /** Absolute path to the file. */
@@ -1 +1 @@
1
- {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../src/core/apply-patch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,gBAAgB;IAChC,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACd;AAsJD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyC9F;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAgCvE"}
1
+ {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../src/core/apply-patch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,gBAAgB;IAChC,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACd;AA8KD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2D9F;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAgCvE"}
@@ -2,106 +2,133 @@
2
2
  * apply_patch — Multi-file patch engine.
3
3
  *
4
4
  * One call can add, update, delete, or move multiple files.
5
- * Uses replace.ts cascading replacer for oldText → newText matching.
5
+ * Uses replace.ts's conservative matcher for oldText → newText matching.
6
6
  */
7
7
  import * as fs from "node:fs";
8
8
  import * as path from "node:path";
9
- import { replace } from "./replace.js";
9
+ import { replaceForPatch } from "./replace.js";
10
10
  // ---------------------------------------------------------------------------
11
11
  // Atomic file write
12
12
  // ---------------------------------------------------------------------------
13
- async function atomicWriteFile(filePath, content) {
13
+ async function atomicWriteFile(filePath, content, mode) {
14
14
  const dir = path.dirname(filePath);
15
15
  const tmp = path.join(dir, `.${path.basename(filePath)}.pi-apply-patch.${process.pid}.tmp`);
16
- await fs.promises.writeFile(tmp, content, "utf8");
16
+ await fs.promises.writeFile(tmp, content, { encoding: "utf8", mode });
17
17
  await fs.promises.rename(tmp, filePath);
18
18
  }
19
- // ---------------------------------------------------------------------------
20
- // Individual change handlers
21
- // ---------------------------------------------------------------------------
22
- async function handleAdd(change) {
23
- const content = change.content ?? "";
24
- // Ensure trailing newline
25
- const final = content.endsWith("\n") ? content : `${content}\n`;
26
- // Create parent directories
27
- const dir = path.dirname(change.path);
28
- await fs.promises.mkdir(dir, { recursive: true });
29
- await atomicWriteFile(change.path, final);
30
- return {
31
- path: change.path,
32
- action: "add",
33
- bytes: Buffer.byteLength(final, "utf8"),
34
- newContent: final,
35
- };
36
- }
37
- async function handleUpdate(change) {
38
- if (!change.oldText) {
39
- throw new Error(`update requires oldText`);
19
+ async function readRegularFile(filePath, label) {
20
+ let stats;
21
+ try {
22
+ stats = await fs.promises.lstat(filePath);
40
23
  }
41
- if (change.oldText === change.newText) {
42
- throw new Error(`oldText and newText are identical — no change`);
24
+ catch {
25
+ throw new Error(`${label} not found: ${filePath}`);
43
26
  }
44
- // Read current content
45
- let content;
27
+ if (stats.isSymbolicLink())
28
+ throw new Error(`${label} must not be a symbolic link: ${filePath}`);
29
+ if (!stats.isFile())
30
+ throw new Error(`${label} must be a regular file: ${filePath}`);
31
+ return { content: await fs.promises.readFile(filePath, "utf8"), mode: stats.mode };
32
+ }
33
+ async function pathExists(filePath) {
46
34
  try {
47
- content = await fs.promises.readFile(change.path, "utf8");
35
+ await fs.promises.lstat(filePath);
36
+ return true;
48
37
  }
49
- catch (err) {
50
- const msg = err instanceof Error ? err.message : String(err);
51
- throw new Error(`cannot read ${change.path}: ${msg}`);
38
+ catch {
39
+ return false;
52
40
  }
53
- // Apply replacement using our cascading replacer
54
- const result = replace(content, change.oldText, change.newText ?? "");
55
- if (!result.changed) {
41
+ }
42
+ async function prepareAdd(change) {
43
+ if (await pathExists(change.path))
44
+ throw new Error(`add target already exists: ${change.path}`);
45
+ const content = change.content ?? "";
46
+ const final = content.endsWith("\n") ? content : `${content}\n`;
47
+ return {
48
+ change,
49
+ applied: { path: change.path, action: "add", bytes: Buffer.byteLength(final, "utf8"), newContent: final },
50
+ async commit() {
51
+ await fs.promises.mkdir(path.dirname(change.path), { recursive: true });
52
+ await atomicWriteFile(change.path, final);
53
+ },
54
+ async rollback() {
55
+ await fs.promises.unlink(change.path);
56
+ },
57
+ };
58
+ }
59
+ async function prepareUpdate(change) {
60
+ if (!change.oldText)
61
+ throw new Error("update requires oldText");
62
+ if (change.oldText === change.newText)
63
+ throw new Error("oldText and newText are identical — no change");
64
+ const original = await readRegularFile(change.path, "update target");
65
+ const result = replaceForPatch(original.content, change.oldText, change.newText ?? "");
66
+ if (!result.changed)
56
67
  throw new Error(`oldText not found in ${change.path}`);
57
- }
58
68
  const newContent = result.content;
59
- // Generate simple diff
60
- const diff = generateDiff(change.path, content, newContent);
61
- // Write atomically
62
- await atomicWriteFile(change.path, newContent);
63
69
  return {
64
- path: change.path,
65
- action: "update",
66
- diff,
67
- bytes: Buffer.byteLength(newContent, "utf8"),
68
- oldContent: content,
69
- newContent,
70
+ change,
71
+ applied: {
72
+ path: change.path,
73
+ action: "update",
74
+ diff: generateDiff(change.path, original.content, newContent),
75
+ bytes: Buffer.byteLength(newContent, "utf8"),
76
+ oldContent: original.content,
77
+ newContent,
78
+ },
79
+ async commit() {
80
+ await atomicWriteFile(change.path, newContent, original.mode);
81
+ },
82
+ async rollback() {
83
+ await atomicWriteFile(change.path, original.content, original.mode);
84
+ },
70
85
  };
71
86
  }
72
- async function handleDelete(change) {
73
- // Verify file exists
74
- try {
75
- await fs.promises.access(change.path);
76
- }
77
- catch {
78
- throw new Error(`file not found: ${change.path}`);
79
- }
80
- const oldContent = await fs.promises.readFile(change.path, "utf8");
81
- await fs.promises.unlink(change.path);
87
+ async function prepareDelete(change) {
88
+ const original = await readRegularFile(change.path, "delete target");
82
89
  return {
83
- path: change.path,
84
- action: "delete",
85
- oldContent,
90
+ change,
91
+ applied: { path: change.path, action: "delete", oldContent: original.content },
92
+ async commit() {
93
+ await fs.promises.unlink(change.path);
94
+ },
95
+ async rollback() {
96
+ await atomicWriteFile(change.path, original.content, original.mode);
97
+ },
86
98
  };
87
99
  }
88
- async function handleMove(change) {
89
- if (!change.movePath) {
90
- throw new Error(`move requires movePath`);
91
- }
92
- // Verify source exists
93
- try {
94
- await fs.promises.access(change.path);
95
- }
96
- catch {
97
- throw new Error(`source file not found: ${change.path}`);
100
+ async function prepareMove(change) {
101
+ const movePath = change.movePath;
102
+ if (!movePath)
103
+ throw new Error("move requires movePath");
104
+ await readRegularFile(change.path, "move source");
105
+ if (await pathExists(movePath))
106
+ throw new Error(`move destination already exists: ${movePath}`);
107
+ return {
108
+ change,
109
+ applied: { path: change.path, action: "move", movePath },
110
+ async commit() {
111
+ await fs.promises.mkdir(path.dirname(movePath), { recursive: true });
112
+ await fs.promises.rename(change.path, movePath);
113
+ },
114
+ async rollback() {
115
+ await fs.promises.rename(movePath, change.path);
116
+ },
117
+ };
118
+ }
119
+ async function prepareChange(change) {
120
+ switch (change.action) {
121
+ case "add":
122
+ return prepareAdd(change);
123
+ case "update":
124
+ return prepareUpdate(change);
125
+ case "delete":
126
+ return prepareDelete(change);
127
+ case "move":
128
+ return prepareMove(change);
129
+ default:
130
+ throw new Error(`unknown action: ${change.action}`);
98
131
  }
99
- // Create parent directories for destination
100
- const dir = path.dirname(change.movePath);
101
- await fs.promises.mkdir(dir, { recursive: true });
102
- // Move file
103
- await fs.promises.rename(change.path, change.movePath);
104
- return { path: change.path, action: "move", movePath: change.movePath };
105
132
  }
106
133
  // ---------------------------------------------------------------------------
107
134
  // Diff generation (simple, for UI feedback)
@@ -134,43 +161,62 @@ function generateDiff(_filePath, oldContent, newContent) {
134
161
  // Main executor
135
162
  // ---------------------------------------------------------------------------
136
163
  export async function executeApplyPatch(changes) {
137
- const applied = [];
164
+ const prepared = [];
138
165
  const errors = [];
166
+ const claimedPaths = new Set();
139
167
  for (const change of changes) {
168
+ const paths = [change.path, ...(change.action === "move" && change.movePath ? [change.movePath] : [])].map((filePath) => path.resolve(filePath));
169
+ if (paths.some((filePath) => claimedPaths.has(filePath))) {
170
+ errors.push({
171
+ path: change.path,
172
+ action: change.action,
173
+ error: "each source and destination path may appear only once per patch",
174
+ });
175
+ continue;
176
+ }
177
+ for (const filePath of paths)
178
+ claimedPaths.add(filePath);
140
179
  try {
141
- let result;
142
- switch (change.action) {
143
- case "add":
144
- result = await handleAdd(change);
145
- break;
146
- case "update":
147
- result = await handleUpdate(change);
148
- break;
149
- case "delete":
150
- result = await handleDelete(change);
151
- break;
152
- case "move":
153
- result = await handleMove(change);
154
- break;
155
- default:
156
- throw new Error(`unknown action: ${change.action}`);
157
- }
158
- applied.push(result);
180
+ prepared.push(await prepareChange(change));
159
181
  }
160
182
  catch (err) {
161
- const msg = err instanceof Error ? err.message : String(err);
162
183
  errors.push({
163
184
  path: change.path,
164
185
  action: change.action,
165
- error: msg,
186
+ error: err instanceof Error ? err.message : String(err),
166
187
  });
167
188
  }
168
189
  }
169
- return {
170
- ok: errors.length === 0,
171
- applied,
172
- errors,
173
- };
190
+ if (errors.length > 0)
191
+ return { ok: false, applied: [], errors };
192
+ const committed = [];
193
+ try {
194
+ for (const change of prepared) {
195
+ await change.commit();
196
+ committed.push(change);
197
+ }
198
+ }
199
+ catch (err) {
200
+ for (const change of committed.reverse()) {
201
+ try {
202
+ await change.rollback();
203
+ }
204
+ catch (rollbackError) {
205
+ errors.push({
206
+ path: change.change.path,
207
+ action: change.change.action,
208
+ error: `rollback failed: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`,
209
+ });
210
+ }
211
+ }
212
+ errors.unshift({
213
+ path: prepared[committed.length]?.change.path ?? "",
214
+ action: prepared[committed.length]?.change.action ?? "commit",
215
+ error: err instanceof Error ? err.message : String(err),
216
+ });
217
+ return { ok: false, applied: [], errors };
218
+ }
219
+ return { ok: true, applied: prepared.map((change) => change.applied), errors: [] };
174
220
  }
175
221
  // ---------------------------------------------------------------------------
176
222
  // Format result for tool output
@@ -1 +1 @@
1
- {"version":3,"file":"apply-patch.js","sourceRoot":"","sources":["../../src/core/apply-patch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-patch.js","sourceRoot":"","sources":["../../src/core/apply-patch.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
+ export declare const PI_DIFF_TOOL_NAMES: readonly ["write", "edit", "apply_patch"];
2
+ export type PiDiffToolName = (typeof PI_DIFF_TOOL_NAMES)[number];
1
3
  /**
2
4
  * Full pi-diff.json schema.
3
5
  * All fields are optional — missing fields fall through to env → defaults.
4
6
  */
5
7
  export interface PiDiffJson {
8
+ /** pi-diff tools to omit. Disabling write or edit restores Pi's built-in tool. */
9
+ disabledTools?: PiDiffToolName[];
6
10
  /** Hunk separator style. */
7
11
  sepStyle?: "auto" | "simple" | "gap" | "context" | "metadata";
8
12
  /** Show line numbers in gutter. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9D,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,cAAc,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IAC5C,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACH;AAQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAuCzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAuBD,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAEnE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAE/E;AAED,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAErE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAE/D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,kBAAkB,2CAA4C,CAAC;AAC5E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,kFAAkF;IAClF,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9D,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,cAAc,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IAC5C,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACH;AAQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CA+CzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAuBD,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAEnE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAE/E;AAED,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAErE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAE/D"}
@@ -16,6 +16,10 @@ import { existsSync, readFileSync } from "node:fs";
16
16
  import { homedir } from "node:os";
17
17
  import { join } from "node:path";
18
18
  // ---------------------------------------------------------------------------
19
+ // Types
20
+ // ---------------------------------------------------------------------------
21
+ export const PI_DIFF_TOOL_NAMES = ["write", "edit", "apply_patch"];
22
+ // ---------------------------------------------------------------------------
19
23
  // Module state — singleton cache
20
24
  // ---------------------------------------------------------------------------
21
25
  let _cachedConfig; // null = not loaded, undefined = attempted/no-file
@@ -29,12 +33,12 @@ export function loadPiDiffConfig(cwd) {
29
33
  // When a specific cwd is provided (e.g. for testing), only search that path.
30
34
  // When omitted, search project root then global.
31
35
  const searchPaths = cwd
32
- ? [join(cwd, "pi-diff.json"), join(cwd, ".pi", "pi-diff.json")]
36
+ ? [join(cwd, ".pi", "pi-diff.json"), join(cwd, "pi-diff.json")]
33
37
  : [
34
- join(process.cwd(), "pi-diff.json"),
35
- join(process.cwd(), ".pi", "pi-diff.json"),
36
- join(homedir(), ".pi", "agent", "pi-diff.json"),
37
38
  join(homedir(), ".pi", "pi-diff.json"),
39
+ join(homedir(), ".pi", "agent", "pi-diff.json"),
40
+ join(process.cwd(), ".pi", "pi-diff.json"),
41
+ join(process.cwd(), "pi-diff.json"),
38
42
  ];
39
43
  // Deduplicate by resolving to absolute paths
40
44
  const seen = new Set();
@@ -46,13 +50,19 @@ export function loadPiDiffConfig(cwd) {
46
50
  uniquePaths.push(abs);
47
51
  }
48
52
  }
49
- // Priority: project first, then global. Later files extend/override earlier ones.
53
+ // Paths are ordered lowest-to-highest priority; later files override earlier ones.
50
54
  let merged = {};
51
55
  for (const filePath of uniquePaths) {
52
56
  try {
53
57
  if (!existsSync(filePath))
54
58
  continue;
55
59
  const raw = JSON.parse(readFileSync(filePath, "utf-8"));
60
+ if (Array.isArray(raw.disabledTools)) {
61
+ raw.disabledTools = raw.disabledTools.filter((tool) => typeof tool === "string" && PI_DIFF_TOOL_NAMES.includes(tool));
62
+ }
63
+ else {
64
+ delete raw.disabledTools;
65
+ }
56
66
  merged = deepMerge(merged, raw);
57
67
  }
58
68
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -21,10 +21,6 @@ export interface ParsedDiff {
21
21
  removed: number;
22
22
  chars: number;
23
23
  }
24
- /**
25
- * Parse a unified diff/patch string into one or more ParsedDiff.
26
- * Each file in the patch gets its own entry.
27
- */
28
24
  export declare function parsePatchFiles(patch: string): ParsedDiff[];
29
25
  /** Style for rendering hunk separators between change blocks. */
30
26
  export type HunkSeparatorStyle = "auto" | "simple" | "gap" | "context" | "metadata";
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAMA,qDAAqD;AACrD,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd;AAeD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAyB3D;AA+FD,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAIpF;;;GAGG;AACH,wBAAgB,eAAe,IAAI,kBAAkB,CAQpD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,kBAAkB,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE,MAAM,GACd,MAAM,CAwBR;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE,MAAM,GACd,MAAM,CAyBR;AASD,+DAA+D;AAC/D,MAAM,WAAW,SAAS;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,CA8B/D;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,UAAU,CA2CrF"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAMA,qDAAqD;AACrD,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd;AAyBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAyC3D;AA2FD,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAIpF;;;GAGG;AACH,wBAAgB,eAAe,IAAI,kBAAkB,CAQpD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,kBAAkB,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE,MAAM,GACd,MAAM,CAwBR;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE,MAAM,GACd,MAAM,CAyBR;AASD,+DAA+D;AAC/D,MAAM,WAAW,SAAS;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,CA8B/D;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,UAAU,CA2CrF"}