{
  "name": "@sapiom/harness",
  "version": "0.22.0",
  "description": "Agent Studio — a CLI-launched local web app that runs your coding agent (Claude Code or Codex) in a Sapiom-configured environment: MCP pre-wired, agents tracked, one-click deploy/run, and a live canvas for previews.",
  "keywords": [
    "sapiom",
    "harness",
    "claude",
    "codex",
    "terminal",
    "agents"
  ],
  "homepage": "https://github.com/sapiom/sapiom-js/tree/main/packages/harness#readme",
  "bugs": {
    "url": "https://github.com/sapiom/sapiom-js/issues"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/sapiom/sapiom-js.git",
    "directory": "packages/harness"
  },
  "license": "MIT",
  "author": "Sapiom",
  "type": "module",
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    },
    "./package.json": "./package.json"
  },
  "bin": {
    "sapiom-harness": "./dist/cli/bin.js"
  },
  "files": [
    "dist",
    "LICENSE",
    "CHANGELOG.md",
    "README.md"
  ],
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.26.0",
    "ajv": "^8.12.0",
    "express": "^4.21.0",
    "express-rate-limit": "^7.4.0",
    "node-pty": "^1.1.0",
    "open": "^10.1.0",
    "typescript": "~5.9.3",
    "uuid": "^10.0.0",
    "ws": "^8.18.0",
    "zod": "^3.25.0",
    "@sapiom/agent": "^0.14.8",
    "@sapiom/agent-core": "^0.15.4",
    "@sapiom/analytics-core": "^0.2.1",
    "@sapiom/mcp": "^0.20.0",
    "@sapiom/opencode": "^0.1.1",
    "@sapiom/agent-map": "^0.4.0"
  },
  "devDependencies": {
    "@playwright/test": "^1.61.0",
    "@stryker-mutator/core": "^9.6.1",
    "@stryker-mutator/vitest-runner": "^9.6.1",
    "@types/express": "^4.17.21",
    "@types/node": "^20.11.30",
    "@types/react": "^19.0.0",
    "@types/react-dom": "^19.0.0",
    "@types/uuid": "^10.0.0",
    "@types/ws": "^8.5.10",
    "@vitejs/plugin-react": "^4.3.4",
    "@xterm/addon-fit": "^0.10.0",
    "@xterm/addon-web-links": "^0.11.0",
    "@xterm/xterm": "^5.5.0",
    "elkjs": "0.12.0",
    "lucide-react": "^1.23.0",
    "posthog-js": "^1.363.5",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "tsx": "^4.19.0",
    "vite": "^6.0.0",
    "vitest": "^3.0.0",
    "@assistant-ui/react": "0.15.18",
    "@assistant-ui/react-opencode": "0.2.22",
    "@opencode-ai/sdk": "1.18.29"
  },
  "engines": {
    "node": ">=20.0.0"
  },
  "publishConfig": {
    "access": "public"
  },
  "scripts": {
    "build": "tsc --project tsconfig.build.json && vite build --config web/vite.config.ts",
    "build:server": "tsc --project tsconfig.build.json",
    "build:web": "vite build --config web/vite.config.ts",
    "clean": "rm -rf dist *.tsbuildinfo",
    "dev": "tsx src/cli/bin.ts --dev",
    "dev:web": "vite --config web/vite.config.ts",
    "start": "node dist/cli/bin.js",
    "test": "vitest run && vitest run --config vitest.perf.config.ts",
    "test:perf": "vitest run --config vitest.perf.config.ts",
    "test:watch": "vitest",
    "test:mutation": "stryker run",
    "test:ui": "playwright test --config web/e2e/playwright.config.ts",
    "test:canvas": "playwright test --config e2e/playwright.config.ts",
    "typecheck": "tsc --noEmit && tsc --noEmit -p web/tsconfig.json",
    "lint": "eslint src --ext .ts",
    "mock-collector": "node scripts/mock-collector.mjs",
    "sim:e2e": "tsx scripts/e2e-sim.ts",
    "seed-example": "node scripts/seed-example.mjs",
    "e2e:live": "tsx scripts/e2e-live.ts"
  }
}