{
  "name": "callspec",
  "version": "3.12.4",
  "description": "Stop duct-taping your API stack. One TypeScript route → typed SDK, docs, OpenAPI, and MCP.",
  "keywords": [
    "rpc",
    "openapi",
    "mcp",
    "express",
    "typescript",
    "api",
    "spec"
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/logfoxai/callspec.git"
  },
  "homepage": "https://callspec.logfox.ai",
  "directories": {
    "doc": "src/content/docs"
  },
  "license": "MIT",
  "author": "Marc H. Weiner <mhweiner234@gmail.com>",
  "publishConfig": {
    "access": "public"
  },
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "bin": {
    "callspec": "dist/cli/generate-client.js"
  },
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "default": "./dist/index.js"
    },
    "./client": {
      "types": "./dist/client.d.ts",
      "default": "./dist/client.js"
    },
    "./document": {
      "types": "./dist/document.d.ts",
      "default": "./dist/document.js"
    }
  },
  "sideEffects": false,
  "files": [
    "dist",
    "assets",
    "AGENTS.md",
    "skills",
    "!dist/**/*.spec.*",
    "!dist/demo/**"
  ],
  "scripts": {
    "prepare": "npm run build",
    "build": "npm run build:server && npm run build:ui",
    "build:server": "tsc",
    "build:ui": "node scripts/build-ui.mjs",
    "sync:fonts": "node scripts/sync-fonts.mjs",
    "lint": "eslint . --fix",
    "lint:check": "eslint .",
    "deadcode:check": "knip",
    "pretest": "npm run build:server",
    "test": "c8 kizu -f 'src/**/*.spec.ts' && c8 report -r text -r html",
    "typecheck:routes": "tsc --noEmit -p tsconfig.typecheck.json",
    "serve:chirp-demo": "node scripts/serve-chirp-demo.cjs",
    "astro:sync": "astro sync",
    "astro:dev": "node scripts/assert-astro-dev-free.mjs && node scripts/clean-astro-cache.mjs && astro sync && node scripts/build-chirp-static-demo.cjs && astro dev",
    "astro:build": "node scripts/assert-astro-dev-free.mjs && astro sync && node scripts/build-chirp-static-demo.cjs && astro build && node scripts/write-cs-pagefind-shim.mjs",
    "astro:build:pagefind": "astro sync && node scripts/build-chirp-static-demo.cjs && astro build && node scripts/write-cs-pagefind-shim.mjs",
    "validate": "npm run build && npm run lint && npm run deadcode:check && npm run typecheck:routes && npm test && npm run sync:fonts && npm run astro:build && node scripts/assert-chirp-static-demo.mjs && node scripts/assert-404-page.mjs && node scripts/assert-splash-page.mjs"
  },
  "dependencies": {
    "@fontsource-variable/inter": "^5.3.0",
    "busboy": "1.6.0",
    "highlight.js": "11.11.1",
    "jsout": "^5.0.0-next.3",
    "jsout-express": "^1.1.9",
    "runtyp": "2.5.0"
  },
  "engines": {
    "node": ">=18"
  },
  "peerDependencies": {
    "express": "^4.18.0",
    "runtyp": "2.5.0"
  },
  "peerDependenciesMeta": {
    "express": {
      "optional": false
    },
    "runtyp": {
      "optional": false
    }
  },
  "devDependencies": {
    "@astrojs/markdown-remark": "7.2.2",
    "@astrojs/starlight": "0.41.7",
    "@fontsource/caveat": "5.3.0",
    "@types/busboy": "1.5.4",
    "@types/express": "^4.17.17",
    "@types/node": "^25.5.0",
    "astro": "7.2.0",
    "c8": "12.0.0",
    "eslint": "^10.0.0",
    "express": "^4.18.2",
    "kizu": "^4.0.0",
    "knip": "^6.29.0",
    "phosphor-astro": "^2.1.0",
    "tsx": "^4.20.5",
    "typescript": "5.9.3",
    "typescript-eslint": "^8.0.0",
    "vite": "8.2.1"
  },
  "allowScripts": {
    "esbuild@0.28.1": true,
    "fsevents@2.3.3": true
  }
}