{
  "name": "zob-harness",
  "version": "0.13.0",
  "type": "module",
  "description": "A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/cgarrot/zob-harness.git"
  },
  "bugs": {
    "url": "https://github.com/cgarrot/zob-harness/issues"
  },
  "homepage": "https://github.com/cgarrot/zob-harness#readme",
  "publishConfig": {
    "access": "public"
  },
  "release": {
    "branches": [
      "main"
    ],
    "tagFormat": "v${version}"
  },
  "keywords": [
    "pi-package",
    "agentic-engineering",
    "coding-agent",
    "pi-extension",
    "software-factory",
    "agent-factory",
    "safety-gates"
  ],
  "engines": {
    "node": ">=22.0.0"
  },
  "files": [
    "AGENTS.md",
    "README.md",
    "SOURCE_INDEX.md",
    "LICENSE",
    "SECURITY.md",
    "CONTRIBUTING.md",
    "tsconfig.json",
    ".pi/adapters/registry.json",
    ".pi/agents",
    ".pi/autonomy-policy.json",
    ".pi/budget-policy.json",
    ".pi/capabilities",
    ".pi/context-discovery.json",
    ".pi/chains",
    ".pi/compute-profiles",
    ".pi/daemon-policy.json",
    ".pi/damage-control-rules.json",
    ".pi/extensions",
    ".pi/factories/budget-preflight-dry-run",
    ".pi/factories/code-review-matrix",
    ".pi/factories/factory-forge",
    ".pi/factories/harness-intake-agent-team",
    ".pi/factories/opencode-pattern-canonizer",
    ".pi/factories/project-dna",
    ".pi/factories/agentic-spec-team",
    ".pi/factories/roadmap-smoke-lots",
    ".pi/git-policy.json",
    ".pi/mission-control/zob_coms_transport.json",
    ".pi/model-routing.json",
    ".pi/orchestrations",
    ".pi/output-contracts",
    ".pi/prompts",
    ".pi/routing",
    ".pi/rules",
    ".pi/settings.json",
    ".pi/skills",
    ".pi/teams",
    ".pi/zagents",
    ".pi/zteams",
    "scripts/README.md",
    "scripts/spec-run.mjs",
    "scripts/agentic-spec-team",
    "scripts/autonomy",
    "scripts/compute-profile",
    "scripts/context-discovery",
    "scripts/git-ops",
    "scripts/goal-todo",
    "scripts/intent-classifier",
    "scripts/harness-switch",
    "scripts/harness-intake",
    "scripts/model-catalog",
    "scripts/package-surface",
    "scripts/path-policy",
    "scripts/release",
    "scripts/project-dna",
    "scripts/worker-pool",
    "scripts/worklist",
    "scripts/zpeer-static-smoke.mjs",
    "scripts/zagent-static-smoke.mjs",
    "scripts/zteam-hot-add/smoke.mjs",
    "scripts/zteam-tools",
    "scripts/zpeer-local-e2e-smoke.mjs",
    "scripts/zteam-lifecycle-smoke.mjs",
    "scripts/start-pi.sh",
    "examples",
    ".pi/model-catalog.example.json",
    ".pi/model-economy.example.json"
  ],
  "scripts": {
    "pi": "pi",
    "pi:explore": "pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'",
    "pi:check": "pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'",
    "spec-run": "node scripts/spec-run.mjs",
    "spec-run:auto-pilot": "node scripts/spec-run.mjs auto-pilot",
    "validate:agentic-spec-team": "node scripts/agentic-spec-team/validate-run.mjs",
    "check": "tsc --noEmit --pretty false",
    "check:ci": "npm run check -- --pretty false",
    "check:all": "npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test",
    "lint": "biome lint .",
    "format": "biome format --write .",
    "test": "node --import tsx --test \"test/**/*.test.ts\"",
    "test:watch": "node --import tsx --watch --test \"test/**/*.test.ts\"",
    "smoke:path-policy": "node scripts/path-policy/validate-smoke.mjs",
    "smoke:child-goal-ref": "node scripts/goal-todo/child-goal-ref-smoke.mjs",
    "smoke:goal-todo-handoff": "node scripts/goal-todo/handoff-static-smoke.mjs",
    "smoke:git-ops": "node scripts/git-ops/commit-policy-smoke.mjs",
    "smoke:harness": "npm run smoke:path-policy && npm run smoke:child-goal-ref",
    "smoke:worker-pool": "node scripts/worker-pool/static-smoke.mjs",
    "smoke:worklist": "node scripts/worklist/static-smoke.mjs",
    "smoke:autonomy-readiness-secret": "node scripts/autonomy/mission-readiness-secret-smoke.mjs",
    "smoke:zpeer": "node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs",
    "smoke:zagent": "node scripts/zagent-static-smoke.mjs",
    "smoke:zteam-hot-add": "node scripts/zteam-hot-add/smoke.mjs",
    "smoke:zteam-tools": "node scripts/zteam-tools/smoke.mjs",
    "smoke:zteam-lifecycle": "node scripts/zteam-lifecycle-smoke.mjs",
    "zob:context:doctor": "node scripts/context-discovery/doctor.mjs",
    "zob:context:init": "node scripts/context-discovery/init-colgrep.mjs",
    "zob:context:query": "node scripts/context-discovery/query.mjs",
    "smoke:context-discovery": "node scripts/context-discovery/smoke.mjs",
    "validate:script-surface": "node scripts/package-surface/validate-script-refs.mjs",
    "pack:dry-run": "npm pack --dry-run --json",
    "release:preview": "node scripts/release/preview.mjs",
    "release:dry-run": "semantic-release --dry-run --no-ci",
    "validate:capability-refs": "node scripts/package-surface/validate-capability-refs.mjs",
    "audit:prompt-context": "node scripts/package-surface/validate-capability-refs.mjs",
    "validate:compute-profile-policy": "node scripts/compute-profile/validate-policy.mjs",
    "preview:compute-profile:project-dna-smoke": "node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json",
    "validate:compute-profile:project-dna-smoke": "node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json",
    "plan:compute-workflow:project-dna-smoke": "node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json",
    "validate:compute-workflow:project-dna-smoke": "node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json",
    "snapshot:compute-profile:project-dna-smoke": "node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json",
    "smoke:compute-profile-regression": "node scripts/compute-profile/regression-smoke.mjs",
    "validate:project-dna": "node scripts/project-dna/validate-scaffold.mjs",
    "smoke:project-dna-scan": "node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke",
    "validate:project-dna-scan:smoke": "node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke",
    "plan:project-dna-workflow:smoke": "node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json",
    "validate:project-dna-workflow:smoke": "node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json",
    "emit:project-dna-ontology:smoke": "node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}",
    "validate:project-dna-ontology:smoke": "node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}",
    "emit:project-dna-golden-cases:smoke": "node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}",
    "validate:project-dna-golden-cases:smoke": "node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}",
    "steward:project-dna-query:smoke": "node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json",
    "query:project-dna:smoke": "node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json",
    "build:project-dna-capsules:smoke": "node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}",
    "build:project-dna-sample-spec:smoke": "node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}",
    "generate:project-dna-sample:smoke": "node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project",
    "validate:project-dna-sample:smoke": "node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project",
    "validate:project-dna-5of5:smoke": "node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}",
    "bench:project-dna:smoke": "node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json",
    "oracle:project-dna:smoke": "node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json",
    "project-dna:smoke:all": "npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke",
    "validate:model-catalog": "node scripts/model-catalog/validate.mjs",
    "validate:model-economy": "node scripts/model-catalog/validate-economy.mjs",
    "smoke:harness-switch": "node scripts/harness-switch/static-smoke.mjs",
    "smoke:intent-classifier": "node scripts/intent-classifier/smoke.mjs",
    "harness:intake": "node scripts/harness-intake/launch.mjs",
    "harness:intake:smoke": "node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"",
    "harness:intake:session-smoke": "node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"",
    "harness:intake:infer": "node scripts/harness-intake/infer-run-spec.mjs",
    "harness:intake:scan": "node scripts/harness-intake/scan-sources.mjs",
    "harness:intake:validate": "node scripts/harness-intake/validate-run.mjs",
    "harness:intake:tmux": "node scripts/harness-intake/tmux-launch.mjs",
    "demo:pacman": "node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto",
    "demo:pacman:prepare": "node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare",
    "demo:pacman:status": "node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status",
    "demo:pacman:validate": "node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate"
  },
  "pi": {
    "extensions": [
      ".pi/extensions/zob-switch/index.ts",
      ".pi/extensions/zob-harness/index.ts"
    ],
    "prompts": [
      ".pi/prompts"
    ],
    "skills": [
      ".pi/skills"
    ]
  },
  "peerDependencies": {
    "@earendil-works/pi-ai": "^0.75.0",
    "@earendil-works/pi-coding-agent": "^0.75.0",
    "@earendil-works/pi-tui": "^0.75.0",
    "typebox": "^1.0.66"
  },
  "devDependencies": {
    "@biomejs/biome": "^2.4.16",
    "@earendil-works/pi-ai": "0.75.5",
    "@earendil-works/pi-coding-agent": "0.75.5",
    "@earendil-works/pi-tui": "0.75.5",
    "@types/node": "22.19.19",
    "semantic-release": "^24.2.9",
    "tsx": "^4.22.4",
    "typebox": "1.0.66",
    "typescript": "5.9.3"
  }
}
