pi-hashline-edit-pro 0.9.1 → 0.9.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-hashline-edit-pro",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Strict hashline read/replace tool for pi-coding-agent with hash-anchored edits (3-char, 18-bit, perfect hashing)",
5
5
  "main": "index.ts",
6
6
  "repository": {
@@ -287,7 +287,7 @@ export function applyHashlineEdits(
287
287
  }
288
288
 
289
289
 
290
- const ANCHOR_CONTEXT_LINES = 2;
290
+ const ANCHOR_CONTEXT_LINES = 0;
291
291
  const ANCHOR_MAX_OUTPUT_LINES = 12;
292
292
 
293
293
  export function computeAffectedLineRange(params: {
@@ -309,6 +309,12 @@ export function computeAffectedLineRange(params: {
309
309
  return null;
310
310
  }
311
311
 
312
+ // When contextLines is 0, skip the anchor block entirely.
313
+ // The LLM already knows what it changed and can call read for fresh anchors.
314
+ if (contextLines === 0) {
315
+ return null;
316
+ }
317
+
312
318
  if (resultLineCount === 0) {
313
319
  return null;
314
320
  }
@@ -44,7 +44,7 @@ function formatDiffPreviewLine(
44
44
  export function generateDiffString(
45
45
  oldContent: string,
46
46
  newContent: string,
47
- contextLines = 4,
47
+ contextLines = 2,
48
48
  newContentHashes?: string[],
49
49
  ): { diff: string; firstChangedLine: number | undefined } {
50
50
  const parts = Diff.diffLines(oldContent, newContent);
@@ -190,18 +190,10 @@ export function buildChangedResponse(input: SuccessResponseInput): ToolResult {
190
190
  CHANGED_ANCHOR_TEXT_BUDGET_BYTES
191
191
  ? block
192
192
  : "Anchors omitted; use read for subsequent edits.";
193
- })()
193
+ })()
194
194
  : resultLines.length === 0
195
195
  ? "File is empty. Use edit to insert content."
196
- : (() => {
197
- const diffLines = diffResult.diff.split("\n");
198
- const MAX_DIFF_LINES = 30;
199
- if (diffLines.length <= MAX_DIFF_LINES) {
200
- return `Diff preview:\n${diffResult.diff}`;
201
- }
202
- const truncated = diffLines.slice(0, MAX_DIFF_LINES).join("\n");
203
- return `Diff preview (${diffLines.length} lines, showing first ${MAX_DIFF_LINES}):\n${truncated}\n...`;
204
- })();
196
+ : ""; // No anchor context → show nothing; LLM can call read for fresh anchors
205
197
  const text = [anchorsBlock, warningsBlock.trimStart()]
206
198
  .filter((section) => section.length > 0)
207
199
  .join("\n\n");