{
  "name": "pi-better-edit",
  "version": "2.2.0",
  "description": "Hash-anchored read/edit/undo tools for pi-coding-agent. Every line gets a unique 3-char hash (A-Za-z0-9) that stays stable across edits; stale or ambiguous anchors are rejected, never fuzzy-matched. Undo persists across restarts.",
  "keywords": [
    "anchors",
    "coding-agent",
    "edit",
    "extension",
    "file-editing",
    "hash",
    "hash-anchored",
    "hashline",
    "oh-my-pi",
    "pi",
    "pi-package",
    "read",
    "undo"
  ],
  "homepage": "https://github.com/Rianico/pi-better-edit",
  "bugs": {
    "url": "https://github.com/Rianico/pi-better-edit/issues"
  },
  "license": "MIT",
  "author": "rianico",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Rianico/pi-better-edit.git"
  },
  "files": [
    "dist",
    "index.ts",
    "src",
    "prompts",
    "README.md",
    "LICENSE"
  ],
  "type": "module",
  "main": "dist/index.js",
  "scripts": {
    "build": "tsdown",
    "verify:dist": "node scripts/verify-dist.mjs",
    "prepack": "pnpm run build && pnpm run verify:dist",
    "test": "vitest run",
    "test:watch": "vitest",
    "test:coverage": "vitest run --coverage --coverage.thresholds.lines=85 --coverage.thresholds.statements=85 --coverage.thresholds.functions=85 --coverage.thresholds.branches=80",
    "lint": "oxlint .",
    "format": "oxfmt --check .",
    "format:fix": "oxfmt .",
    "typecheck": "tsc --noEmit",
    "prepublishOnly": "pnpm run typecheck && pnpm run lint && pnpm test",
    "eval": "RUN_EVAL=1 EVAL_TARGET=local vitest run test/eval/comparison-battery.test.ts",
    "eval:compare": "node scripts/eval-compare.mjs",
    "eval:hashline": "node benchmarks/hashline-compare.mjs",
    "benchmark:tokens": "node benchmarks/token-economics.mjs",
    "benchmark:practical": "node scripts/practical-token-benchmark.mjs",
    "test:runtime": "node scripts/runtime-edge-test.mjs",
    "prepare": "husky || true"
  },
  "dependencies": {
    "diff": "^8.0.2",
    "file-type": "^21.3.0",
    "typebox": "^1.3.7",
    "xxhash-wasm": "^1.1.0"
  },
  "devDependencies": {
    "@babel/parser": "7.29.8",
    "@commitlint/cli": "^21.2.2",
    "@commitlint/config-conventional": "^21.2.2",
    "@earendil-works/pi-coding-agent": "^0.84.0",
    "@semantic-release/changelog": "^7.0.0",
    "@semantic-release/git": "^11.0.1",
    "@semantic-release/github": "^12.0.9",
    "@semantic-release/npm": "^13.1.5",
    "@types/node": "^24.0.0",
    "@vitest/coverage-v8": "^4.1.10",
    "conventional-changelog-conventionalcommits": "^8.0.0",
    "conventional-commits-filter": "^6.0.1",
    "conventional-commits-parser": "^7.1.2",
    "gpt-tokenizer": "4.0.0",
    "husky": "^9.1.7",
    "oxfmt": "^0.66.0",
    "oxlint": "^1.81.0",
    "publint": "^0.3.24",
    "semantic-release": "^25.0.9",
    "tsdown": "~0.23.0",
    "typescript": "^7.0.0",
    "vite": "^8.2.2",
    "vitest": "^4.1.8"
  },
  "peerDependencies": {
    "@earendil-works/pi-coding-agent": ">=0.75.0",
    "@earendil-works/pi-tui": "*"
  },
  "engines": {
    "node": ">=22.19.0"
  },
  "packageManager": "pnpm@12.0.0",
  "knip": {
    "ignoreDependencies": [
      "pi-hashline-edit-pro",
      "@oh-my-pi/hashline"
    ]
  },
  "pi": {
    "extensions": [
      "./dist/index.js"
    ]
  }
}
