{
  "name": "catui-agent",
  "version": "1.2.5",
  "description": "CLI writing agent with read, bash, edit, write tools and session management. Supports DashScope and Ali Token Plan. Soul enabled by default for AI personality evolution.",
  "type": "module",
  "bin": {
    "catui": "dist/cli.js"
  },
  "exports": {
    ".": {
      "import": "./dist/index.js",
      "types": "./dist/index.d.ts"
    },
    "./tools": {
      "import": "./dist/tools.js",
      "types": "./dist/tools.d.ts"
    },
    "./runtime": {
      "import": "./dist/runtime.js",
      "types": "./dist/runtime.d.ts"
    },
    "./session": {
      "import": "./dist/session.js",
      "types": "./dist/session.d.ts"
    },
    "./session/compaction": {
      "import": "./dist/session-compaction.js",
      "types": "./dist/session-compaction.d.ts"
    },
    "./config": {
      "import": "./dist/public-config.js",
      "types": "./dist/public-config.d.ts"
    },
    "./models": {
      "import": "./dist/models.js",
      "types": "./dist/models.d.ts"
    },
    "./skills": {
      "import": "./dist/skills.js",
      "types": "./dist/skills.d.ts"
    }
  },
  "files": [
    "dist/**/*.js",
    "dist/**/*.d.ts",
    "dist/**/*.json",
    "dist/**/*.md",
    "dist/**/*.py",
    "dist/**/*.html",
    "dist/**/*.css",
    "assets",
    "docs",
    "LICENSE",
    "README.md"
  ],
  "scripts": {
    "dev": "tsx cli.ts",
    "test": "npm run test:dev-loop && npm run test:security && npm run test:commands && npm run test:tools && npm run test:mcp",
    "build": "npm run clean:dist && npm run build:deps && tsc -p tsconfig.build.json && npm run copy:internal-libs && npm run copy:theme:json && npm run copy:assets && npm run build:meta && npm run minify:dist",
    "build:meta": "node scripts/generate-build-meta.js",
    "minify:dist": "node scripts/minify-dist.js",
    "build:release": "npm run generate-models --prefix core/lib/ai && npm run build",
    "build:deps": "node scripts/build-deps.js",
    "clean:dist": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
    "copy:theme:json": "node -e \"const fs=require('fs');const p=require('path');const d='dist/modes/interactive/theme';if(!fs.existsSync(d))fs.mkdirSync(d,{recursive:true});fs.readdirSync('modes/interactive/theme').forEach(f=>{if(f.endsWith('.json'))fs.copyFileSync(p.join('modes/interactive/theme',f),p.join(d,f))})\"",
    "copy:internal-libs": "node scripts/copy-internal-libs.js",
    "copy:assets": "node scripts/copy-assets.js",
    "update-models": "npm run generate-models --prefix core/lib/ai",
    "benchmark": "node scripts/startup-benchmark.cjs",
    "benchmark:save": "node scripts/startup-benchmark.cjs --output .benchmarks/baseline.json",
    "benchmark:compare": "node scripts/startup-benchmark.cjs --baseline .benchmarks/baseline.json",
    "scaffold:docs": "node --import tsx scripts/scaffold-feature-docs.ts",
    "dev-loop:plan": "node --import tsx scripts/dev-loop/verification-plan.ts",
    "dev-loop:verify": "node --import tsx scripts/dev-loop/run-verification.ts",
    "dev-loop:parse": "node --import tsx scripts/dev-loop/failure-parser.ts",
    "dev-loop:pr": "node --import tsx scripts/dev-loop/github-provider.ts",
    "dev-loop:handoff": "node --import tsx scripts/dev-loop/handoff.ts",
    "dev-loop:watch": "node --import tsx scripts/dev-loop/watch.ts",
    "verify:dip": "node --import tsx scripts/verify-dip.ts",
    "verify:quality": "node --import tsx scripts/verify-quality.ts",
    "verify:package-boundary": "node --import tsx scripts/verify-package-boundary.ts",
    "verify:package-boundary:dist": "node --import tsx scripts/verify-package-boundary.ts --dist",
    "verify:all": "npm run build:deps && npm run verify:dip && npm run verify:quality && npm run verify:package-boundary && npx tsc --noEmit",
    "wiki:scan": "node --import tsx scripts/llm-wiki.ts scan",
    "wiki:update": "node --import tsx scripts/llm-wiki.ts update",
    "wiki:verify": "node --import tsx scripts/llm-wiki.ts verify",
    "wiki:build": "node --import tsx scripts/llm-wiki.ts build",
    "wiki:all": "node --import tsx scripts/llm-wiki.ts all",
    "watch": "tsc --watch",
    "test:mcp": "node --test --import tsx test/mcp-tool-description.test.ts test/mcp-hint-injection.test.ts test/system-prompt.test.ts test/token-save-routing.test.ts",
    "test:subagent": "node --test --import tsx test/subagent-parser.test.ts test/worktree-manager.test.ts test/bash-sandbox.test.ts",
    "test:dev-loop": "node --test --import tsx test/dev-loop.test.ts",
    "test:team": "node --test --import tsx test/team-parser.test.ts test/team-runtime.test.ts",
    "test:plan": "node --test --import tsx test/plan-mode.test.ts",
    "test:utils": "node --test --import tsx test/logger.test.ts",
    "test:commands": "node --test --import tsx test/slash-command-catalog.test.ts test/extension-command-completions.test.ts test/interactive-slash-command-arguments.test.ts test/rpc-command-catalog.test.ts",
    "test:security": "node --test --import tsx test/security-audit.test.ts",
    "test:tools": "node --test --import tsx test/workspace-write-guard.test.ts test/read-tool.test.ts test/tool-window-validation.test.ts test/bash-sandbox.test.ts test/task-status-panel.test.ts test/task-store-polling.test.ts test/stream-render-task-panel.test.ts",
    "test:presence": "node --test --import tsx test/presence-opening.test.ts",
    "test:interactive-memory-notify": "node --test --import tsx test/interactive-memory-notify.test.ts test/session-manager-header.test.ts",
    "start": "npx cross-env NODE_ENV=production node --no-deprecation dist/cli.js",
    "prepare": "git config core.hooksPath .githooks || true",
    "postinstall": "node -e \"import('fs').then(({chmodSync}) => { try { chmodSync('dist/cli.js', 0o755); } catch (e) { /* dev install before build: no dist yet, skip silently */ } })\"",
    "prepublishOnly": "npm run build:release",
    "changelog": "node scripts/generate-changelog.js",
    "version": "npm run changelog && git add CHANGELOG.md",
    "postversion": "git push",
    "release": "npm version patch && npm publish"
  },
  "keywords": [
    "catui",
    "writing-agent",
    "coding-agent",
    "ai",
    "llm",
    "cli",
    "tui",
    "agent",
    "apikey",
    "dashscope"
  ],
  "license": "GPL-3.0",
  "workspaces": [
    "core/lib/agent-core",
    "core/lib/ai",
    "core/lib/tui",
    "packages/mem-core",
    "packages/soul-core",
    "packages/protocol"
  ],
  "engines": {
    "node": ">=20"
  },
  "dependencies": {
    "@agentclientprotocol/sdk": "^0.16.1",
    "@anthropic-ai/sdk": "^0.73.0",
    "@aws-sdk/client-bedrock-runtime": "^3.983.0",
    "@google/genai": "^1.40.0",
    "@mariozechner/clipboard": "^0.3.2",
    "@mariozechner/jiti": "^2.6.2",
    "@mistralai/mistralai": "1.10.0",
    "catui-protocol": "^0.1.1",
    "catui-mem": "^1.1.2",
    "catui-soul": "^0.1.0",
    "@silvia-odwyer/photon-node": "^0.3.4",
    "@sinclair/typebox": "^0.34.41",
    "ajv": "^8.17.1",
    "ajv-formats": "^3.0.1",
    "chalk": "^5.5.0",
    "chokidar": "^5.0.0",
    "cli-highlight": "^2.1.11",
    "diff": "^8.0.2",
    "extract-zip": "^2.0.1",
    "file-type": "^21.1.1",
    "get-east-asian-width": "^1.3.0",
    "glob": "^13.0.1",
    "hosted-git-info": "^9.0.2",
    "ignore": "^7.0.5",
    "marked": "^15.0.12",
    "mime-types": "^3.0.1",
    "minimatch": "^10.1.1",
    "openai": "6.10.0",
    "partial-json": "^0.1.7",
    "pdf-lib": "^1.17.1",
    "pdfjs-dist": "^4.0.379",
    "proper-lockfile": "^4.1.2",
    "proxy-agent": "^6.5.0",
    "undici": "^7.19.1",
    "vscode-jsonrpc": "^8.2.1",
    "vscode-languageserver-protocol": "^3.18.0",
    "vscode-languageserver-types": "^3.18.0",
    "yaml": "^2.8.2",
    "zod": "^4.3.6",
    "zod-to-json-schema": "^3.24.6"
  },
  "optionalDependencies": {
    "koffi": "^2.9.0"
  },
  "devDependencies": {
    "@types/hosted-git-info": "^3.0.5",
    "@types/node": "^22.15.0",
    "@types/proper-lockfile": "^4.1.4",
    "cross-env": "^10.1.0",
    "esbuild": "^0.27.3",
    "tsx": "^4.7.0",
    "typescript": "^5.3.3"
  },
  "overrides": {
    "@types/node": "^22.15.0",
    "zod": "^4.3.6"
  },
  "catuiConfig": {
    "name": "catui",
    "configDir": ".catui"
  },
  "repository": {
    "type": "git",
    "url": "git+ssh://git@github.com/O-Catui/Catui.git"
  },
  "homepage": "https://github.com/O-Catui/Catui"
}
