{
  "name": "harnery",
  "version": "0.40.0",
  "description": "Multi-agent coordination for AI coding agents - Claude Code, Cursor, and Codex.",
  "license": "MIT",
  "author": "Ryan Kelly",
  "homepage": "https://harnery.com",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/ryanjkelly/harnery.git"
  },
  "bugs": {
    "url": "https://github.com/ryanjkelly/harnery/issues"
  },
  "keywords": [
    "cli",
    "multi-agent",
    "coordination",
    "claude-code",
    "cursor",
    "codex",
    "agent-hooks",
    "developer-tools"
  ],
  "type": "module",
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "//exports": "Each entry resolves to TS source under Bun (zero-build dev + an embedding host) and to the built dist/ on Node/npm. The `bun` condition must stay first.",
  "exports": {
    ".": {
      "bun": "./src/index.ts",
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    },
    "./commander": {
      "bun": "./src/commander.ts",
      "types": "./dist/commander.d.ts",
      "import": "./dist/commander.js"
    },
    "./core/agents": {
      "bun": "./src/core/agents/index.ts",
      "types": "./dist/core/agents/index.d.ts",
      "import": "./dist/core/agents/index.js"
    },
    "./core/agents/session-events": {
      "bun": "./src/core/agents/session-events.ts",
      "types": "./dist/core/agents/session-events.d.ts",
      "import": "./dist/core/agents/session-events.js"
    },
    "./core/artifacts": {
      "bun": "./src/core/artifacts/index.ts",
      "types": "./dist/core/artifacts/index.d.ts",
      "import": "./dist/core/artifacts/index.js"
    },
    "./core/hooks": {
      "bun": "./src/core/hooks/index.ts",
      "types": "./dist/core/hooks/index.d.ts",
      "import": "./dist/core/hooks/index.js"
    },
    "./core/adapters": {
      "bun": "./src/core/adapters/index.ts",
      "types": "./dist/core/adapters/index.d.ts",
      "import": "./dist/core/adapters/index.js"
    },
    "./core/context": {
      "bun": "./src/core/context/index.ts",
      "types": "./dist/core/context/index.d.ts",
      "import": "./dist/core/context/index.js"
    },
    "./core/workflow": {
      "bun": "./src/core/workflow/index.ts",
      "types": "./dist/core/workflow/index.d.ts",
      "import": "./dist/core/workflow/index.js"
    },
    "./core/work": {
      "bun": "./src/core/work/index.ts",
      "types": "./dist/core/work/index.d.ts",
      "import": "./dist/core/work/index.js"
    },
    "./core/work/state": {
      "bun": "./src/core/work/read.ts",
      "types": "./dist/core/work/read.d.ts",
      "import": "./dist/core/work/read.js"
    },
    "./core/governor": {
      "bun": "./src/core/governor/index.ts",
      "types": "./dist/core/governor/index.d.ts",
      "import": "./dist/core/governor/index.js"
    },
    "./core/governor/state": {
      "bun": "./src/core/governor/read.ts",
      "types": "./dist/core/governor/read.d.ts",
      "import": "./dist/core/governor/read.js"
    },
    "./core/guard": {
      "bun": "./src/core/guard/index.ts",
      "types": "./dist/core/guard/index.d.ts",
      "import": "./dist/core/guard/index.js"
    },
    "./core/events/v3": {
      "bun": "./src/core/events/v3/index.ts",
      "types": "./dist/core/events/v3/index.d.ts",
      "import": "./dist/core/events/v3/index.js"
    },
    "./core/events/v3/support-storage": {
      "bun": "./src/core/events/v3/support-storage/index.ts",
      "types": "./dist/core/events/v3/support-storage/index.d.ts",
      "import": "./dist/core/events/v3/support-storage/index.js"
    },
    "./core/events/legacy-storage": {
      "bun": "./src/core/events/legacy-storage/index.ts",
      "types": "./dist/core/events/legacy-storage/index.d.ts",
      "import": "./dist/core/events/legacy-storage/index.js"
    },
    "./core/storage": {
      "bun": "./src/core/storage/index.ts",
      "types": "./dist/core/storage/index.d.ts",
      "import": "./dist/core/storage/index.js"
    },
    "./core/inbox": {
      "bun": "./src/core/inbox/index.ts",
      "types": "./dist/core/inbox/index.d.ts",
      "import": "./dist/core/inbox/index.js"
    },
    "./core/conversations": {
      "bun": "./src/core/conversations/index.ts",
      "types": "./dist/core/conversations/index.d.ts",
      "import": "./dist/core/conversations/index.js"
    },
    "./core/semantic": {
      "bun": "./src/core/semantic/index.ts",
      "types": "./dist/core/semantic/index.d.ts",
      "import": "./dist/core/semantic/index.js"
    },
    "./core/supervisor": {
      "bun": "./src/core/supervisor/index.ts",
      "types": "./dist/core/supervisor/index.d.ts",
      "import": "./dist/core/supervisor/index.js"
    },
    "./core/diagnostics": {
      "bun": "./src/core/diagnostics/index.ts",
      "types": "./dist/core/diagnostics/index.d.ts",
      "import": "./dist/core/diagnostics/index.js"
    },
    "./core/governor/plans": {
      "bun": "./src/core/governor/plan-read.ts",
      "types": "./dist/core/governor/plan-read.d.ts",
      "import": "./dist/core/governor/plan-read.js"
    },
    "./core/policy": {
      "bun": "./src/core/policy/index.ts",
      "types": "./dist/core/policy/index.d.ts",
      "import": "./dist/core/policy/index.js"
    },
    "./lib/admission": {
      "bun": "./src/lib/admission.ts",
      "types": "./dist/lib/admission.d.ts",
      "import": "./dist/lib/admission.js"
    },
    "./lib/agent-browser": {
      "bun": "./src/lib/agent-browser/index.ts",
      "types": "./dist/lib/agent-browser/index.d.ts",
      "import": "./dist/lib/agent-browser/index.js"
    },
    "./lib/browser": {
      "bun": "./src/lib/browser/index.ts",
      "types": "./dist/lib/browser/index.d.ts",
      "import": "./dist/lib/browser/index.js"
    },
    "./lib/cookies": {
      "bun": "./src/lib/cookies/index.ts",
      "types": "./dist/lib/cookies/index.d.ts",
      "import": "./dist/lib/cookies/index.js"
    },
    "./lib/format": {
      "bun": "./src/lib/format.ts",
      "types": "./dist/lib/format.d.ts",
      "import": "./dist/lib/format.js"
    },
    "./lib/headless": {
      "bun": "./src/lib/headless/index.ts",
      "types": "./dist/lib/headless/index.d.ts",
      "import": "./dist/lib/headless/index.js"
    },
    "./lib/http": {
      "bun": "./src/lib/http/index.ts",
      "types": "./dist/lib/http/index.d.ts",
      "import": "./dist/lib/http/index.js"
    },
    "./lib/machine": {
      "bun": "./src/lib/machine.ts",
      "types": "./dist/lib/machine.d.ts",
      "import": "./dist/lib/machine.js"
    },
    "./lib/readability": {
      "bun": "./src/lib/readability/index.ts",
      "types": "./dist/lib/readability/index.d.ts",
      "import": "./dist/lib/readability/index.js"
    },
    "./core/journal": {
      "bun": "./src/core/journal/index.ts",
      "types": "./dist/core/journal/index.d.ts",
      "import": "./dist/core/journal/index.js"
    },
    "./lib/tunnel/state": {
      "bun": "./src/lib/tunnel/state.ts",
      "types": "./dist/lib/tunnel/state.d.ts",
      "import": "./dist/lib/tunnel/state.js"
    }
  },
  "bin": {
    "harn": "./bin/harn",
    "agent-coord": "./bin/agent-coord",
    "agent-hook": "./bin/agent-hook"
  },
  "//files": "src ships as TS so the `bun` export condition resolves to source; negate co-located tests, fixture directories, and shared test helpers so they don't ride into the tarball (a .npmignore is inert for paths already inside the files allowlist).",
  "files": [
    "bin",
    "src",
    "dist",
    "schemas",
    "README.md",
    "LICENSE",
    "!src/**/*.test.ts",
    "!src/**/*.test.tsx",
    "!src/**/__fixtures__/**",
    "!dist/**/__fixtures__/**",
    "!dist/**/test-helpers.*",
    "!src/**/test-helpers.ts"
  ],
  "engines": {
    "node": ">=20.19.0"
  },
  "publishConfig": {
    "access": "public",
    "provenance": true
  },
  "packageManager": "bun@1.4.0",
  "scripts": {
    "build": "npm run clean && tsc -p tsconfig.build.json && node scripts/rewrite-dts-extensions.mjs",
    "build:openclaw-plugin": "mkdir -p openclaw-plugin/dist && bun build openclaw-plugin/src/index.ts openclaw-plugin/src/record-worker.ts --target=node --format=esm --external openclaw --outdir openclaw-plugin/dist --entry-naming '[name].js' && cp openclaw-plugin/package.json openclaw-plugin/openclaw.plugin.json openclaw-plugin/dist/",
    "clean": "rm -rf dist",
    "prepublishOnly": "npm run build",
    "typecheck": "bun x tsc --noEmit",
    "lint": "bun x @biomejs/biome check src openclaw-plugin",
    "check:portability": "bun run scripts/check-portability.ts",
    "check:public-surface": "bun run scripts/check-public-surface.ts",
    "check:layering": "bun run scripts/check-layering.ts",
    "probe:supervisor-budget": "bun run scripts/probe-supervisor-budget.ts",
    "lint:fix": "bun x @biomejs/biome check --write src openclaw-plugin",
    "format": "bun x @biomejs/biome format --write src openclaw-plugin",
    "test": "bun run scripts/test.mjs",
    "test:list": "bun run scripts/test.mjs --list",
    "test:web": "cd web && bun install && bun test",
    "test:integration": "bash tests/integration/run.sh",
    "smoke": "node scripts/smoke-test.mjs",
    "docs:dev": "bun run --cwd docs dev",
    "docs:build": "bun run --cwd docs build",
    "brand:showcase": "node scripts/build-brand-showcase.mjs",
    "verify:contracts": "bun run scripts/sync-verified-contracts.ts",
    "verify:contracts:check": "bun run scripts/sync-verified-contracts.ts --check",
    "generate:event-v3": "bun run scripts/generate-event-v3-contract.ts",
    "fixtures:openclaw:intake": "bun run openclaw-plugin/scripts/intake-fixtures.ts",
    "test:openclaw-node24": "node openclaw-plugin/scripts/test-node24.mjs",
    "check:event-v3": "bun run scripts/generate-event-v3-contract.ts --check && bun run scripts/check-event-v3-reader-boundary.ts",
    "generate:docs-metadata-v2": "bun run scripts/generate-docs-metadata-v2-schema.ts",
    "check:docs-metadata-v2": "bun run scripts/generate-docs-metadata-v2-schema.ts --check"
  },
  "dependencies": {
    "@mozilla/readability": "^0.6.0",
    "@sinclair/typebox": "^0.34.52",
    "axe-core": "^4.12.1",
    "commander": "^14.0.3",
    "gpt-tokenizer": "^3.4.0",
    "js-yaml": "^4.3.0",
    "linkedom": "^0.18.0",
    "mailparser": "^3.9.14",
    "pixelmatch": "^7.2.0",
    "playwright": "^1.59.1",
    "pngjs": "^7.0.0",
    "turndown": "^7.2.4",
    "turndown-plugin-gfm": "^1.0.2",
    "uuid": "^14.0.1"
  },
  "devDependencies": {
    "@biomejs/biome": "^2.5.0",
    "@changesets/cli": "^2.27.0",
    "@types/bun": "^1.2.0",
    "@types/js-yaml": "^4.0.9",
    "@types/mailparser": "^3.4.6",
    "@types/node": "^26.0.0",
    "@types/pixelmatch": "^5.2.6",
    "@types/pngjs": "^6.0.5",
    "@types/turndown": "^5.0.6",
    "typescript": "^6.0.0"
  }
}
