{
  "name": "takt",
  "version": "0.66.1",
  "description": "Workflow control for AI coding agents",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    },
    "./package.json": "./package.json"
  },
  "bin": {
    "takt": "./bin/takt",
    "takt-dev": "./bin/takt",
    "takt-cli": "./dist/app/cli/index.js",
    "takt-acp": "./dist/app/acp/index.js",
    "takt-mcp": "./dist/app/mcp/index.js"
  },
  "scripts": {
    "build": "node scripts/clean-build-output.mjs && tsc && tsc -p tsconfig.opencode-probe.json && node scripts/copy-build-assets.mjs",
    "watch": "tsc --watch",
    "analyze:usage": "node dist/commands/analyze-usage.js",
    "eval:prompts:prepare": "node eval/scripts/prepare.mjs",
    "eval:prompts:db-pagination:contracts": "node --test eval/asserts/db-pagination-fixture.test.mjs eval/asserts/db-pagination-implement.test.mjs eval/providers/pagination-skill-isolation.test.mjs eval/suite-registry.test.mjs",
    "eval:prompts:db-pagination": "npm run eval:prompts:db-pagination:contracts && node eval/scripts/run-evals.mjs --prepare db-pagination db-pagination-adjudication db-pagination-implement --no-cache",
    "eval:prompts": "node eval/scripts/run-evals.mjs --prepare",
    "eval:prompts:retained": "node eval/scripts/run-evals.mjs --prepare --tier retained",
    "eval:prompts:contracts": "node --test eval/providers/cli-plan-report.test.mjs eval/suite-registry.test.mjs eval/asserts/fix-loop-convergence.test.mjs eval/asserts/remediation-evidence.test.mjs eval/asserts/evidence-judgment.test.mjs eval/asserts/review-proof-boundary.test.mjs",
    "eval:prompts:coding": "node --test eval/asserts/coding-review-metrics.test.mjs && node eval/scripts/prepare.mjs coding-review && node eval/scripts/run-evals.mjs coding",
    "eval:prompts:fix-closure": "node eval/scripts/prepare.mjs fix-closure && node eval/scripts/run-evals.mjs fix-closure",
    "eval:prompts:fix-self-scan": "node eval/scripts/prepare.mjs fix-self-scan && node eval/scripts/run-evals.mjs fix-self-scan",
    "eval:prompts:fix-plan-fresh-findings": "node --test eval/providers/cli-review.test.mjs && node eval/scripts/prepare.mjs fix-plan-fresh-findings && node eval/scripts/run-evals.mjs fix-plan-fresh-findings --no-cache",
    "eval:prompts:fix-plan-boundary-preflight": "node eval/scripts/prepare.mjs fix-plan-boundary-preflight && node eval/scripts/run-evals.mjs fix-plan-boundary-preflight",
    "eval:prompts:fix-plan-cause-check": "node --test eval/providers/cli-review.test.mjs && node eval/scripts/prepare.mjs fix-plan-cause-check && node eval/scripts/run-evals.mjs fix-plan-cause-check --no-cache",
    "eval:prompts:fix-plan-blocker-absorption": "node --test eval/providers/cli-review.test.mjs && node eval/scripts/prepare.mjs fix-plan-blocker-absorption && node eval/scripts/run-evals.mjs fix-plan-blocker-absorption --no-cache",
    "eval:prompts:fix-plan-bounded-proof": "node --test eval/providers/cli-review.test.mjs && node eval/scripts/prepare.mjs fix-plan-bounded-proof && node eval/scripts/run-evals.mjs fix-plan-bounded-proof --no-cache",
    "eval:prompts:fix-plan-impact-closure:contracts": "node --test eval/asserts/fix-plan-impact-closure.test.mjs",
    "eval:prompts:fix-plan-impact-closure": "node --test eval/asserts/fix-plan-impact-closure.test.mjs eval/suite-registry.test.mjs eval/providers/cli-review.test.mjs && node eval/scripts/prepare.mjs fix-plan-impact-closure-primary fix-plan-impact-closure-heldout && node --test eval/asserts/fix-plan-impact-prompt.test.mjs && node eval/scripts/run-evals.mjs fix-plan-impact-closure-primary fix-plan-impact-closure-heldout --no-cache",
    "eval:prompts:fix-loop-convergence": "node eval/scripts/run-evals.mjs fix-loop-convergence",
    "eval:prompts:review-impact-path-coverage": "node --test eval/providers/cli-review.test.mjs eval/asserts/prepare-dynamic-facet-composition.test.mjs && node eval/scripts/prepare.mjs review-impact-path-coverage && node eval/scripts/run-evals.mjs review-impact-path-coverage --no-cache",
    "eval:prompts:initial-review-contract-discovery": "node eval/scripts/prepare.mjs initial-review-contract-discovery && node eval/scripts/run-evals.mjs initial-review-contract-discovery",
    "eval:prompts:testing-review-observable-evidence": "node eval/scripts/prepare.mjs testing-review-observable-evidence && node eval/scripts/run-evals.mjs testing-review-observable-evidence",
    "eval:prompts:state-after-event-plan": "node eval/scripts/prepare.mjs state-after-event-plan && node eval/scripts/run-evals.mjs state-after-event-plan",
    "eval:prompts:state-after-event-plan-config": "node eval/scripts/prepare.mjs state-after-event-plan-config && node eval/scripts/run-evals.mjs state-after-event-plan-config",
    "eval:prompts:state-after-event-write-tests": "node eval/scripts/prepare.mjs state-after-event-write-tests && node eval/scripts/run-evals.mjs state-after-event-write-tests",
    "eval:prompts:state-after-event-testing-review": "node eval/scripts/prepare.mjs state-after-event-testing-review && node eval/scripts/run-evals.mjs state-after-event-testing-review",
    "eval:prompts:initial-plan-contract-closure": "node eval/scripts/prepare.mjs initial-plan-contract-closure && node eval/scripts/run-evals.mjs initial-plan-contract-closure",
    "eval:prompts:replan-contract-closure": "node eval/scripts/prepare.mjs replan-contract-closure && node eval/scripts/run-evals.mjs replan-contract-closure",
    "eval:prompts:issue-plan-samples": "node eval/scripts/prepare.mjs issue-plan-samples && node eval/scripts/run-evals.mjs issue-plan-samples",
    "eval:prompts:plan-report-source-authority": "node eval/scripts/prepare.mjs plan-report-source-authority && node eval/scripts/run-evals.mjs plan-report-source-authority",
    "eval:prompts:write-tests-contract-traceability": "node eval/scripts/prepare.mjs write-tests-contract-traceability && node eval/scripts/run-evals.mjs write-tests-contract-traceability",
    "eval:prompts:default-priority": "node eval/scripts/prepare.mjs write-tests-default-priority && node eval/scripts/run-evals.mjs write-tests-default-priority",
    "eval:prompts:default-priority:codex": "node eval/scripts/prepare.mjs write-tests-default-priority-codex && node eval/scripts/run-evals.mjs write-tests-default-priority-codex",
    "eval:prompts:scope-discipline": "node --test eval/asserts/scope-architecture-search.test.mjs && node eval/scripts/prepare.mjs scope-default-write-tests scope-maintenance-write-tests scope-architecture-search scope-architecture-search-none scope-architecture-search-unrelated scope-architecture-boundary && node eval/scripts/run-evals.mjs scope-default-write-tests scope-maintenance-write-tests scope-architecture-search scope-architecture-search-none scope-architecture-search-unrelated scope-architecture-boundary",
    "eval:prompts:implement-contract-traceability": "node eval/scripts/prepare.mjs implement-contract-traceability implementation-report-contract-traceability && node eval/scripts/run-evals.mjs implement-contract-traceability implementation-report-contract-traceability",
    "eval:prompts:follow-up-review-repair-regression": "node --test eval/providers/cli-review.test.mjs eval/asserts/prepare-dynamic-facet-composition.test.mjs && node eval/scripts/prepare.mjs follow-up-review-repair-regression && node eval/scripts/run-evals.mjs follow-up-review-repair-regression --no-cache",
    "eval:prompts:follow-up-testing-review-repair-regression": "node --test eval/providers/cli-review.test.mjs eval/providers/cli-review-adjudication.test.mjs eval/asserts/prepare-dynamic-facet-composition.test.mjs && node eval/scripts/prepare.mjs follow-up-testing-review-repair-regression follow-up-testing-review-repair-regression-phase2 follow-up-review-adjudication-repair-regression follow-up-review-adjudication-repair-regression-phase2 && node eval/scripts/run-evals.mjs follow-up-testing-review-repair-regression --no-cache",
    "eval:prompts:review-adjudication": "node --test eval/providers/cli-review.test.mjs eval/asserts/prepare-dynamic-facet-composition.test.mjs && node eval/scripts/prepare.mjs review-adjudication review-adjudication-phase2 && node eval/scripts/run-evals.mjs review-adjudication review-adjudication-report --no-cache",
    "eval:prompts:fix-verifier-family-boundary": "node eval/scripts/prepare.mjs fix-verifier-family-boundary && node eval/scripts/run-evals.mjs fix-verifier-family-boundary",
    "eval:prompts:fix-verifier-state-closure": "node eval/scripts/prepare.mjs fix-verifier-state-closure && node eval/scripts/run-evals.mjs fix-verifier-state-closure",
    "eval:prompts:fix-verifier-state-routing": "node eval/scripts/prepare.mjs fix-verifier-state-routing && node eval/scripts/run-evals.mjs fix-verifier-state-routing",
    "eval:prompts:fix-verifier-model-matrix": "node eval/scripts/prepare.mjs fix-verifier-state-closure fix-verifier-state-routing && node eval/scripts/run-evals.mjs fix-verifier-model-matrix fix-verifier-routing-model-matrix --no-cache",
    "eval:prompts:review-adjudication-binding": "node eval/scripts/prepare.mjs review-adjudication-binding && node eval/scripts/run-evals.mjs review-adjudication-binding",
    "eval:prompts:security-review-method": "node eval/scripts/prepare.mjs security-review-method && node eval/scripts/run-evals.mjs security-review-method",
    "eval:prompts:task-instruction-gherkin": "node eval/scripts/run-evals.mjs task-instruction-gherkin",
    "eval:prompts:final-readiness-supervision": "node --test eval/providers/cli-review.test.mjs eval/asserts/prepare-dynamic-facet-composition.test.mjs && node eval/scripts/prepare.mjs final-readiness-supervision final-readiness-supervision-phase2 && node eval/scripts/run-evals.mjs final-readiness-supervision final-readiness-preservation --no-cache",
    "eval:prompts:initial-review-external-identity-wiring": "node eval/scripts/prepare.mjs initial-review-external-identity-wiring && node eval/scripts/run-evals.mjs initial-review-external-identity-wiring",
    "eval:prompts:final-readiness-precision": "node eval/scripts/prepare.mjs final-readiness-precision && node eval/scripts/run-evals.mjs final-readiness-precision",
    "eval:tell": "vitest run --config vitest.config.tell-eval.ts",
    "test": "npm run test:type-contracts && npm run test:types && node scripts/run-npm-test.mjs",
    "test:type-contracts": "tsc --noEmit -p tsconfig.type-contracts.json",
    "test:types": "tsc --noEmit -p tsconfig.tests.json",
    "test:pi-sdk-smoke": "node scripts/pi-sdk-cross-platform-smoke.mjs",
    "test:deepseek-harness:live": "npm test -- src/__tests__/deepseek-harness-live-smoke.test.ts",
    "test:unit": "vitest run --config vitest.config.unit.parallel.ts",
    "test:unit:parallel": "vitest run --config vitest.config.unit.parallel.ts",
    "test:it": "npm run test:it:light",
    "test:it:light": "vitest run --config vitest.config.it.parallel.ts",
    "test:it:heavy": "npm run test:it:heavy:parallel && npm run test:it:heavy:serial",
    "test:it:heavy:parallel": "vitest run --config vitest.config.it.heavy.parallel.ts",
    "test:it:heavy:serial": "node scripts/run-it-serial-groups.mjs",
    "test:it:heavy:serial:git": "vitest run --config vitest.config.it.serial.git.ts",
    "test:it:heavy:serial:workflow": "vitest run --config vitest.config.it.serial.workflow.ts",
    "test:it:all": "npm run test:it && npm run test:it:heavy",
    "test:it:parallel": "npm run test:it:light",
    "test:it:serial": "npm run test:it:heavy:serial",
    "test:it:serial:git": "npm run test:it:heavy:serial:git",
    "test:it:serial:workflow": "npm run test:it:heavy:serial:workflow",
    "test:opencode-probe": "node tools/opencode-probe/run-smoke.mjs",
    "test:prompt-evals": "npm run test:opencode-probe",
    "test:watch": "vitest --config vitest.config.unit.parallel.ts",
    "test:e2e": "tmp=\"$(mktemp -t takt-e2e.XXXXXX)\"; npm run test:e2e:mock >\"$tmp\" 2>&1; code=$?; cat \"$tmp\"; if grep -q \"error connecting to api.github.com\" \"$tmp\"; then echo \"[takt] GitHub connectivity error detected in E2E output\"; code=1; fi; rm -f \"$tmp\"; if [ \"$code\" -eq 0 ]; then msg='test:e2e passed'; else msg=\"test:e2e failed (exit=$code)\"; fi; if command -v osascript >/dev/null 2>&1; then osascript -e \"display notification \\\"$msg\\\" with title \\\"takt\\\" subtitle \\\"E2E\\\"\" >/dev/null 2>&1 || true; fi; echo \"[takt] $msg\"; exit $code",
    "test:e2e:smoke": "vitest run --config vitest.config.e2e.smoke.ts --outputFile.json=e2e/results/smoke.json",
    "test:e2e:mock": "node scripts/run-e2e-mock-shards.mjs",
    "test:e2e:mock:serial": "TAKT_E2E_PROVIDER=mock vitest run --config vitest.config.e2e.mock.ts --outputFile.json=e2e/results/mock.json",
    "test:e2e:all": "npm run test:e2e:mock && npm run test:e2e:provider",
    "test:e2e:provider": "npm run test:e2e:provider:claude && npm run test:e2e:provider:claude-sdk && npm run test:e2e:provider:codex && npm run test:e2e:provider:opencode",
    "test:e2e:provider:claude": "TAKT_E2E_PROVIDER=claude vitest run --config vitest.config.e2e.provider.ts --outputFile.json=e2e/results/claude.json",
    "test:e2e:provider:claude-sdk": "TAKT_E2E_PROVIDER=claude-sdk vitest run --config vitest.config.e2e.provider.ts --outputFile.json=e2e/results/claude-sdk.json",
    "test:e2e:provider:codex": "TAKT_E2E_PROVIDER=codex vitest run --config vitest.config.e2e.provider.ts --outputFile.json=e2e/results/codex.json",
    "test:e2e:provider:opencode": "TAKT_E2E_PROVIDER=opencode TAKT_E2E_MODEL=${TAKT_E2E_MODEL:-ollama-cloud/qwen3.5:397b} vitest run --config vitest.config.e2e.provider.ts --outputFile.json=e2e/results/opencode.json",
    "test:e2e:provider:cursor": "TAKT_AUTO_PR=false TAKT_E2E_PROVIDER=cursor vitest run --config vitest.config.e2e.cursor.ts --outputFile.json=e2e/results/cursor.json",
    "test:e2e:claude": "npm run test:e2e:provider:claude",
    "test:e2e:codex": "npm run test:e2e:provider:codex",
    "test:e2e:opencode": "npm run test:e2e:provider:opencode",
    "test:e2e:cursor": "npm run test:e2e:provider:cursor",
    "lint": "eslint src/",
    "check:release": "node scripts/run-release-check.mjs",
    "prepublishOnly": "npm run lint && npm run build",
    "canary:coder": "node scripts/canary-coder.mjs",
    "eval:prompts:resource-boundary:contracts": "node --test eval/asserts/resource-flow-fixture.test.mjs",
    "eval:prompts:resource-boundary": "npm run eval:prompts:resource-boundary:contracts && node eval/scripts/run-evals.mjs --prepare resource-flow-review resource-flow-adjudication --no-cache"
  },
  "keywords": [
    "ai",
    "ai-agents",
    "agent",
    "agent-orchestration",
    "anthropic",
    "automation",
    "claude",
    "claude-code",
    "cli",
    "code-review",
    "codex",
    "coding-agents",
    "deepseek",
    "cursor",
    "developer-tools",
    "github-copilot",
    "kiro",
    "llm",
    "mcp",
    "model-context-protocol",
    "openai",
    "opencode",
    "orchestration",
    "pi",
    "workflow",
    "workflow-automation"
  ],
  "author": "nrslib <38722970+nrslib@users.noreply.github.com>",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/nrslib/takt.git"
  },
  "bugs": {
    "url": "https://github.com/nrslib/takt/issues"
  },
  "homepage": "https://github.com/nrslib/takt#readme",
  "type": "module",
  "engines": {
    "node": ">=22.22.0"
  },
  "files": [
    "dist/",
    "bin/",
    "builtins/",
    "docs/assets/takt-logo-dark.svg",
    "web-ui/"
  ],
  "dependencies": {
    "@agentclientprotocol/sdk": "^1.3.0",
    "@anthropic-ai/claude-agent-sdk": "^0.3.261",
    "@earendil-works/pi-ai": "^0.85.1",
    "@earendil-works/pi-coding-agent": "^0.85.1",
    "@informalsystems/quint": "^0.32.0",
    "@modelcontextprotocol/sdk": "^1.29.0",
    "@openai/codex-sdk": "^0.156.1",
    "@opencode-ai/sdk": "1.18.28",
    "@opentelemetry/api": "^1.9.1",
    "@opentelemetry/exporter-metrics-otlp-http": "^0.219.0",
    "@opentelemetry/exporter-trace-otlp-http": "^0.219.0",
    "@opentelemetry/sdk-metrics": "^2.8.0",
    "@opentelemetry/sdk-node": "^0.219.0",
    "@opentelemetry/sdk-trace-base": "^2.8.0",
    "ajv": "^6.12.6",
    "chalk": "^5.3.0",
    "commander": "^12.1.0",
    "cross-spawn": "^7.0.6",
    "faceted-prompting": "^0.6.1",
    "ink": "^7.1.1",
    "react": "^19.2.8",
    "string-width": "^8.2.2",
    "traced-config": "^0.3.0",
    "update-notifier": "^7.3.1",
    "wanakana": "^5.3.1",
    "yaml": "^2.9.0",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@eslint/js": "^9.39.2",
    "@types/cross-spawn": "^6.0.6",
    "@types/node": "^22.0.0",
    "@types/react": "^19.2.18",
    "@types/wanakana": "^4.0.6",
    "@typescript-eslint/eslint-plugin": "^8.0.0",
    "@typescript-eslint/parser": "^8.0.0",
    "@xterm/headless": "^6.0.0",
    "eslint": "^9.0.0",
    "ink-testing-library": "^4.0.0",
    "node-pty": "^1.2.0-beta.15",
    "playwright": "1.61.1",
    "promptfoo": "^0.121.17",
    "tsx": "4.22.4",
    "typescript": "^5.5.0",
    "typescript-eslint": "^8.53.1",
    "vitest": "^3.2.6"
  },
  "overrides": {
    "hono": "^4.12.25",
    "vite": "6.4.3",
    "esbuild": "0.28.1"
  }
}
